CAD, 如何找到直线与不规则曲线的最短距离?如果划出与直线平行,并且相切于曲线的直线?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAD, 如何找到直线与不规则曲线的最短距离?如果划出与直线平行,并且相切于曲线的直线?相关的知识,希望对你有一定的参考价值。
我重新说一下,对象捕捉打开了..捕捉最近点是在直线上任意选一点的.在我选完直线上任一一点(A)以后,我再捕捉曲线时,可以捕捉曲线上的任意一点,和经过A点,与曲线相切点的距离,这个不是最近距离阿.
用三维软件好办,CAD好像不行!把CAD导入三维图,用三维软件的二维草图或工程图做好再你想要的直线,再转出来,导到CAD里!CAD里不能尺寸驱动图形,而三维软件里是可以的!这样可以通过测量,找出曲线到直线的最短距离,然后建一个跟直线平行的直线,约束到相应的距离就可以!
因此没有见到你的二维图,也没法保证这样一定行! 参考技术A 唉?那个对象捕捉什么的都打开了么?里面有最近点 切点啊。。。
你这问题补充没看太懂
从曲线离直线最近的弧上画个切线 跟那直线一量 行不? 参考技术B 方法一;选择是适当的对象捕捉 选择标注选择对齐标注
方法二;画一条差不多的直线,点直线选择移动(前提打开对象捕捉)移动到那里就OK~
点到线段的最短距离
点到线段最短距离的运算与点到直线的最短距离的运算二者之间存在一定的差别,即求点到线段最短距离时需要考虑参考点在沿线段方向的投影点是否在线段上,若在线段上才可采用点到直线距离公式,如图1所示。
图1 (a)最短距离为点P与其在线段AB上投影C之间的线段PC
(b)最短距离为点P与端点B(或A)所构成的线段PB(或PA)
具体算法主要有以下三种:
1、方法——经典算法
该算法直接用高中时所学习到的解析几何知识对点到线段的距离进行求解。其基本思想是先判断点在线段端点、点在线上等等的特殊情况,逐步的由特殊到一般,当忽略点在线段上的特殊情况时,判断点到线段方向的垂线是否落在线段上的方法是通过比较横纵坐标的方式来判断,最后把不同的判断情况用不同的几何方式来进行处理计算得出结果。
由上面叙述的基本思路可以知道这种算法虽然很容易理解和接受,但从算法的实用性的角度分析还是有很大的缺点的,首先是算法复杂,计算量巨大,大量的比较判断、距离计算、角度计算等等,实际应用中往往是需要求由大量线段组成的折线到某点的最短距离,如此用这样的算法计算量是不能想象的。其次经典算法中使用的一些简化运算的函数不利于语言的重新包装,如果想换编程语言的话,就比较麻烦了。
2、方法二——面积算法
该方法主要是先判断投影点是否在线段上,投影点在线段延长线上时,最短距离长度为点到端点的线段长度;当投影点在线段上时,先使用海伦公式计算三角形面积,再计算出三角形的高,即为最短距离。
运用面积算法求解点到线段最短距离思路很清晰,也很容易理解。从效率方面考虑,比如需要多次计算平方、根号,这对于大量数据进行运算是负担很重的。求面积就必须把三条边长全部求出,并且用到的海伦公式也需要进行开方运算,计算过程显得繁琐。
3、方法三——矢量算法
矢量算法过程清晰,如果具有一定的空间几何基础,则是解决此类问题时应优先考虑的方法。当需要计算的数据量很大时,这种方式优势明显。
由于矢量具有方向性,故一些方向的判断直接根据其正负号就可以得知,使得其中的一些问题得以很简单的解决。
用此方法考虑,我们只需要找到向量 在方向上的投影,具体如下:
上面的 是方向上的单位向量,其意义是给所求向量确定方向。是的两个向量的内积,且 ,其中θ为向量AP与AB之间的夹角。是向量长度。
那么即为上图中线段AC的长度值,不带有方向性。此数值与上述表征方向的 整体构成有大小、有方向的新向量,即为 在方向上的投影向量,C为投影点。
根据得到的,由向量的方向性可知:如果情况是上图(a)所示,那么0<r<1;如果是如图(b)所示的情况,那么r ≥1;如果是如图(c)所示的情况,那么得到r ≤0;
特殊情况如点在线段上、点在端点、点在线段延长线上等等的情况全部适用于此公式,只是作为特殊情况出现,无需另作讨论。这也是矢量算法思想的优势所在。
故根据r值的不同,最短距离
C++代码
struct point
int x, y;
node[N], p;
double len(point a, point b) //线段ab到原点的最短距离
double r = (a.x-b.x)*(a.x) + (a.y-b.y)*a.y;
double d = (a.x-b.x)*(a.x-b.x) + (a.y-b.y)*(a.y-b.y);
if (r <= 0) return a.x*a.x + a.y*a.y;
else if (r >= d) return b.x*b.x+b.y*b.y;
r /= d;
double x = a.x+(b.x-a.x)*r, y = a.y+(b.y-a.y)*r;
return x*x+y*y;
以上是关于CAD, 如何找到直线与不规则曲线的最短距离?如果划出与直线平行,并且相切于曲线的直线?的主要内容,如果未能解决你的问题,请参考以下文章
请问一下CAD中空间两条直线的最近距离如何求得,有没有直接的一个命令?谢谢!