社区
C++ Builder
帖子详情
CAD软件中,图形(直线,圆,多边形等)的拾取是怎么样实现的
leejd
2003-03-20 04:40:16
目前所有的CAD软件,都可以做到对图形的拾取,并对图形进行操作。其数据组织结构我大概明白,但是我对图形拾取部分不是很了解。怎么样判断出鼠标所选的区域含有图形,并在内存中检测出其属性,然后对完整的图形进行加亮显示?
还有,CAD软件一般都能做到无级缩放,这个原理是什么,怎么样在我的程序中显示放大后的图形的可视部分?
...全文
240
4
打赏
收藏
CAD软件中,图形(直线,圆,多边形等)的拾取是怎么样实现的
目前所有的CAD软件,都可以做到对图形的拾取,并对图形进行操作。其数据组织结构我大概明白,但是我对图形拾取部分不是很了解。怎么样判断出鼠标所选的区域含有图形,并在内存中检测出其属性,然后对完整的图形进行加亮显示? 还有,CAD软件一般都能做到无级缩放,这个原理是什么,怎么样在我的程序中显示放大后的图形的可视部分?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
meCAD
2003-03-23
打赏
举报
回复
这是选择直线图元的例子.抄书上来的.
bool PickLine(LINENODE *linenode)
{
bool returncode = false;
double x = PrePoint.x-linnode->Start.x;
double y = PrePoint.y-linnode->Start.y;
double a = linenode->End.x-linenode->Start.x;
double b = linenode->End.y-linenode->Start.y;
double c = sqrt(a*a+b*b);
double sin = b/c;
double cos = a/c;
double chg_x = x*cos+y*sin;
double chg_y = -x*sin+y*cos;
if(fabs(chg_y)<5.0 && (chg_x>=0 && chg_x<=c))
returncode = true;
return returncode;
}
直线:
struct LINNODE
{
BYTE bType; //绘图单元的类型
int bDo;
//该记录的状态:比如 bDo>0 不显示此单元 =1 显示. =2被选择. =3移动等..
int Index; //图元索引
POINT Start; //直线的起点.
POINT End; //直线的终点.
LINENODE() //直线图元的初始化函数
{
bType = LINE; //
bDo = 1;
};
};
如果该直线图元被选中的则函数返回true,否则返回false;,其中.参数linenode为检索出的直线图元数据指针, PrePoint 为上次老鼠单击的位置
woodgl
2003-03-23
打赏
举报
回复
直线的拾取:
1.给一直线p1p2,和一点p
2.设定一拾取半径d,一般小于3个像素。
3.构造一矩形r=(p.x-d, p.y-d, p.x+d, p.y+d)
4.如果p1p2和r相交,则可认为点p在p1p2上
基本原理就这样,其它的自己设计吧。。。。。。。
速度问题,要用双缓冲和剪裁。。。。。
Lewolf
2003-03-21
打赏
举报
回复
这就是人家的技术机密了,我也尝试过放缩等功能,可是速度要差的多。
yyqing
2003-03-21
打赏
举报
回复
1.采用数值逼近算法确定图形的选取
2.在程序中按指定比例放大图形,将屏幕显示部分映射到放大后的图形上,截取映射图形即可显示可视部分
计算机辅助设计Auto
CAD
-绘制封闭
图形
.pptx
课堂讲解 使用线条命令绘制封闭
图形
绘制矩形 绘制正
多边形
绘制
圆
绘制椭
圆
绘制
圆
环 绘制特殊
图形
——点 计算机辅助设计Auto
CAD
-绘制封闭
图形
全文共36页,当前为第2页。 使用线条命令绘制封闭
图形
封闭
图形
是指...
CAD
实验报告(1).doc
" " " "2、镜像等命令的使用 " "操作步骤: " "1绘制如下
图形
: " "(1)首先根据样图,利用
直线
命令绘制
图形
的外边框如下 " "图 " "(2)在另一基点,利用"绘
圆
","正
多边形
""
圆
弧"命令绘制如下
图形
" " " " " "图...
特效-
多边形
特效/PS高端辅助/动态人像速成特效 [精品推荐]
设计这种
多边形
效果时,如果纯粹的使用PS去
实现
的话,是一件很让人蛋疼的事情,那么采用本课的
多边形
特效生成器,带你装逼,带你飞,能很大程度的节省了你谈恋爱的时间,还在等神马,快动起来,打开你的电脑,马上开...
CAD
培训资料.docx
节点 使用快捷菜单:右键 第三节 一、
图形
绘制 、
直线
:() 正交():主要用来控制光标移动的方向,只有水平、垂直两个
CAD
培训资料全文共22页,当前为第4页。
CAD
培训资料全文共22页,当前为第4页。方向。
CAD
培训...
CAD
2012 入门讲解通用教程视频教学
第01章\1.1.2 Auto
CAD
经典界面.mp4 第01章\1.1.3标题栏.mp4 第01章\1.1.4 快速访问工具栏.mp4 第01章\1.1.5 菜单栏.mp4 第01章\1.1.6 工具栏.mp4 第01章\1.1.7 十字光标.mp4 第01章\1.1.8 绘图区.mp4 第01章\1.1.9 ...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章