社区
C++ Builder
帖子详情
CAD软件中,图形(直线,圆,多边形等)的拾取是怎么样实现的
leejd
2003-03-20 04:40:16
目前所有的CAD软件,都可以做到对图形的拾取,并对图形进行操作。其数据组织结构我大概明白,但是我对图形拾取部分不是很了解。怎么样判断出鼠标所选的区域含有图形,并在内存中检测出其属性,然后对完整的图形进行加亮显示?
还有,CAD软件一般都能做到无级缩放,这个原理是什么,怎么样在我的程序中显示放大后的图形的可视部分?
...全文
246
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
在实际应用
中
,
拾取
技术的应用不仅仅局限于
直线
对象,还包括其他
图形
对象如
圆
形、
多边形
、曲线等。
拾取
过程通常涉及到
图形
对象的边界框(Bounding Box)计算,判断鼠标位置是否在
图形
的边界框内,以此来判断
图形
是否...
侯老师十天学会
CAD
配套学习笔记.doc
本资源主要介绍了
CAD
软件
的基本操作和绘图技巧,涵盖了工具栏、光标、选择方法、命令栏、
直线
、
圆
、
圆
弧、多段线、正
多边形
、矩形、椭
圆
、椭
圆
弧、图案填充和渐变色的相关知识点。 1. 工具栏:
CAD
软件
的工具栏是...
Auto
CAD
建筑制图教程-第5章-图块、
圆
点、编辑显示
图形
.pptx
Auto
CAD
是一款广泛应用于建筑设计、机械设计等领域的计算机辅助设计
软件
,其强大的
图形
绘制和编辑功能,使得设计师们可以在电脑上轻松地完成各种复杂的设计任务。第5章的内容主要涉及了图块的创建及插入、等分点及...
CAD
绘图练习试题完整版(1).doc
以上内容涉及了
CAD
绘图
中
的坐标值绘制、栅格和对象捕捉、正交与对象追踪、极轴追踪、
圆
和
圆
弧的绘制、
多边形
工具、复制编辑、偏移和阵列命令、剖面线绘制、文字和尺寸标注、图层管理等多方面的技能,是进行
CAD
绘图...
CAD
软件
技术分享.docx
CAD
软件
的基础操作和高级功能,涵盖了
软件
初始设置、绘制
直线
、任意缩放显示比例、选择
图形
、删除
图形
、绘制构造线、绘制多边线、将多个
图形
组成图块、修改图块、打散图块、矩形绘制、弧线、
圆
形、曲线、填充图案、...
C++ Builder
13,871
社区成员
102,693
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章