社区
C++ Builder
帖子详情
CAD软件中,图形(直线,圆,多边形等)的拾取是怎么样实现的
leejd
2003-03-20 04:40:16
目前所有的CAD软件,都可以做到对图形的拾取,并对图形进行操作。其数据组织结构我大概明白,但是我对图形拾取部分不是很了解。怎么样判断出鼠标所选的区域含有图形,并在内存中检测出其属性,然后对完整的图形进行加亮显示?
还有,CAD软件一般都能做到无级缩放,这个原理是什么,怎么样在我的程序中显示放大后的图形的可视部分?
...全文
251
4
打赏
收藏
CAD软件中,图形(直线,圆,多边形等)的拾取是怎么样实现的
目前所有的CAD软件,都可以做到对图形的拾取,并对图形进行操作。其数据组织结构我大概明白,但是我对图形拾取部分不是很了解。怎么样判断出鼠标所选的区域含有图形,并在内存中检测出其属性,然后对完整的图形进行加亮显示? 还有,CAD软件一般都能做到无级缩放,这个原理是什么,怎么样在我的程序中显示放大后的图形的可视部分?
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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.在程序中按指定比例放大图形,将屏幕显示部分映射到放大后的图形上,截取映射图形即可显示可视部分
图形
对象
拾取
技术在开发
CAD
系统
中
的应用.pdf
图形
对象
拾取
技术在开发
CAD
系统
中
的应用.pdf
侯老师十天学会
CAD
配套学习笔记.doc
侯老师十天学会
CAD
配套学习笔记.doc
Auto
CAD
建筑制图教程-第5章-图块、
圆
点、编辑显示
图形
.pptx
Auto
CAD
建筑制图教程-第5章-图块、
圆
点、编辑显示
图形
.pptx
CAD
绘图练习试题完整版(1).doc
CAD
绘图练习试题完整版(1).doc
CAD
软件
技术分享.docx
CAD
软件
技术分享.docx
C++ Builder
13,873
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章