autocadARX程序设计几何算法配置环境常用函数命令添加等 .docx





《autocadARX程序设计几何算法配置环境常用函数命令添加等 .docx》由会员分享,可在线阅读,更多相关《autocadARX程序设计几何算法配置环境常用函数命令添加等 .docx(17页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习运算几何算法概览一、引言运算机的显现使得很多原本特殊繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很简洁的问题却需要拿出一套并不简洁的通用解决方案,比如几何问题。作为运算机科学的一个可编辑资料 - - - 欢迎下载精品名师归纳总结分支,运算几何主要争辩解决几何问题的算法。在现代工程和数学领域,运算几何在图形学、机器人技术、超大规模集成电路设计和统计等诸多领域有着特殊重要的应用。在本文中,我们将对运算几何常用的基本算法做一个全面的介绍,期望对您明白并应用运算几何的学问解决问题起到
2、帮忙。二、目录本文整理的运算几何基本概念和常用算法包括如下内容: 矢量的概念矢量加减法 AcGeVector2d/AcGeVector3d+-+=-=等运算符重载或者 setToSum矢量叉积 AcGeVetor3d crossProduct折线段的拐向判定 由矢量叉积的性质推出判定点是否在线段上isOn判定两线段是否相交AcgeLineSeg2d intersectWith判定线段和直线是否相交AcgeLine2d AcgeLineSeg2d intersectWith判定矩形是否包含点判定线段、折线、多边形是否在矩形中判定矩形是否在矩形中判定圆是否在矩形中判定点是否在多边形中 判定线段是否
3、在多边形内判定折线是否在多边形内判定多边形是否在多边形内判定矩形是否在多边形内 判定圆是否在多边形内判定点是否在圆内判定线段、折线、矩形、多边形是否在圆内可编辑资料 - - - 欢迎下载精品名师归纳总结判定圆是否在圆内运算点到线段的最近点line.closestPointTopoint运算点到折线、矩形、多边形的最近点运算点到圆的最近距离及交点坐标运算两条共线的线段的交点运算线段或直线与线段的交点求线段或直线与折线、矩形、多边形的交点求线段或直线与圆的交点凸包的概念凸包的求法。三、算法介绍矢量的概念:假如一条线段的端点是有次序之分的,我们把这种线段成为有向线段directed segment。
4、假如有向线段 p1p2 的起点 p1 在坐标原点,我们可以把它称为矢量vectorp2。矢量加减法:设二维矢量 P = x1, y1 , Q = x2 , y2 ,就矢量加法定义为:P + Q = x1 + x2 , y1+ y2 ,同样的,矢量减法定义为:P - Q = x1 - x2 , y1 - y2 。明显有性质 P + Q = Q +P, P - Q = - Q - P 。矢量叉积:运算矢量叉积是与直线和线段相关算法的核心部分。设矢量P = x1, y1 , Q = x2, y2 ,就矢量叉积定义为由0,0 、 p1 、p2 和 p1+p2所组成的平行四边形的带符号的面积,即: P
5、Q = x1*y2 - x2*y1,其结果是一个标量。明显有性质P Q = - QP 和 P -Q = - PQ 。一般在不加说明的情形下,本文下述算法中全部的点都看作矢量,两点的加减法就是矢量相加减,而点的乘法就看作矢量叉积。叉积的一个特殊重要性质是可以通过它的符号判定两矢量相互之间的顺逆时针关系: 如 P Q 0 ,就 P 在 Q 的顺时针方向。如 P Q 0,就p0p1 在 p1点拐向右侧后得到p1p2 。如 p2 - p0p1 - p0 0,就p0p1 在 p1点拐向左侧后得到p1p2 。如 p2 - p0p1 - p0 = 0,就 p0 、p1 、p2 三点共线。具体情形可参照下图:
6、判定点是否在线段上:设点为 Q,线段为 P1P2 ,判定点 Q 在该线段上的依据是: Q - P1 P2 - P1 = 0且Q 在以 P1, P2 为对角顶点的矩形内。前者保证Q 点在直线 P1P2 上,后者是保证Q 点不在线段 P1P2 的延长线或反向延长线上,对于这一步骤的判定可以用以下过程实现:ON-SEGMENTpi,pj,pkif minxi,xj = xk = maxxi,xj and minyi,yj = yk = maxyi,yj then return true 。else return false。特殊要留意的是,由于需要考虑水平线段和垂直线段两种特殊情形,minxi,xj
7、=xk=maxxi,xj和 minyi,yj=yk=maxyi,yj两个条件必需同时中意才能返回真值。判定两线段是否相交:我们分两步确定两条线段是否相交:(1) 快速排斥试验设以线段 P1P2 为对角线的矩形为R,设以线段 Q1Q2 为对角线的矩形为T,假如 R和 T 不相交,明显两线段不会相交。(2) 跨立试验假如两线段相交,就两线段必定相互跨立对方。如P1P2 跨立 Q1Q2 ,就矢量 P1 -Q1 和 P2 - Q1 位于矢量 Q2 - Q1 的两侧,即 P1 - Q1 Q2 - Q1 * P2 - Q1 可编辑资料 - - - 欢迎下载精品名师归纳总结 Q2 - Q1 0。当可编辑资料
8、 - - - 欢迎下载精品名师归纳总结 P1 - Q1 Q2 - Q1 = 0时,说明 P1 - Q1 和 Q2 - Q1 共线,但是由于已经通过快可编辑资料 - - - 欢迎下载精品名师归纳总结速排斥试验,所以P1 确定在线段 Q1Q2 上。同理, Q2 - Q1 P2 - Q1 = 0说明 P2 确定在线段 Q1Q2 上。所以判定 P1P2 跨立 Q1Q2 的依据是: P1 - Q1 Q2 - Q1 * Q2 - Q1 可编辑资料 - - - 欢迎下载精品名师归纳总结 P2 - Q1 = 0。同理判定 Q1Q2 跨立 P1P2 的依据是: Q1 - P1 P1 Q2 - P1 = 0。具体
9、情形如下图所示: P2- P1 * P2 -可编辑资料 - - - 欢迎下载精品名师归纳总结在相同的原理下,对此算法的具体的实现细节可能会与此有所不同,除了这种过程外,大家也可以参考算法导论上的实现。判定线段和直线是否相交:有了上面的基础,这个算法就很简洁了。假如线段P1P2 和直线 Q1Q2 相交,就 P1P2 跨立可编辑资料 - - - 欢迎下载精品名师归纳总结Q1Q2 ,即: P1 - Q1 Q2 - Q1 * Q2 - Q1 P2 - Q1 = 0。可编辑资料 - - - 欢迎下载精品名师归纳总结判定矩形是否包含点:只要判定该点的横坐标和纵坐标是否夹在矩形的左右边和上下边之间。判定线段
10、、折线、多边形是否在矩形中:由于矩形是个凸集,所以只要判定全部端点是否都在矩形中就可以了。判定矩形是否在矩形中:只要比较左右边界和上下边界就可以了。判定圆是否在矩形中:很简洁证明,圆在矩形中的充要条件是:圆心在矩形中且圆的半径小于等于圆心到矩形四边的距离的最小值。判定点是否在多边形中:判定点 P 是否在多边形中是运算几何中一个特殊基本但是特殊重要的算法。以点P 为端点,向左方作射线L,由于多边形是有界的,所以射线L 的左端确定在多边形外,考虑沿着L 从无穷远处开头自左向右移动,遇到和多边形的第一个交点的时候,进入到了多边形的内部,遇到其次个交点的时候,离开了多边形,所以很简洁看出当L 和多边形
11、的交点数目C 是奇数的时候, P 在多边形内,是偶数的话P 在多边形外。但是有些特殊情形要加以考虑。如图下图abcd所示。在图 a 中, L 和多边形的顶点相交,这时候交点只能运算一个。在图b 中, L 和多边形顶点的交点不应被运算。在图c 和d 中, L 和多边形的一条边重合,这条边应当被忽视不计。假如L 和多边形的一条边重合,这条边应当被忽视不计。可编辑资料 - - - 欢迎下载精品名师归纳总结为了统一起见,我们在运算射线L 和多边形的交点的时候,1。对于多边形的水平边不作考虑。 2。对于多边形的顶点和L 相交的情形,假如该顶点是其所属的边上纵坐标较大的顶点,就计数,否就忽视。3 。对于
12、P 在多边形边上的情形,直接可判定P属于多边行。由此得出算法的伪代码如下:count 0 。以 P为端点,作从右向左的射线L。for 多边形的每条边sdo if P 在边 s 上then return true 。if s 不是水平的then if s 的一个端点在 L 上if 该端点是 s 两端点中纵坐标较大的端点then count count+1else if s 和 L 相交then count count+1 。if count mod 2 = 1then return true 。else return false 。其中做射线L 的方法是:设 P的纵坐标和 P 相同,横坐标为正无
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- autocadARX程序设计几何算法配置环境常用函数命令添加等 autocadARX 程序设计 几何 算法 配置 环境 常用 函数 命令 添加

限制150内