Curve操作详解:
1.求取点到线的投影最近点
IntersectionResult Project(XYZ point);
该函数是求取曲线上距离该点最近的点,分两种情况:
①如果曲线是直线,那么求取的点,肯定是通过做垂足获取的,即距离最近点
②如果是一般的曲线(有界),那么如果通过垂足取得的点,在曲线上,那么就返回该店,如果通过垂足求取得点,不在曲线上,那么就会返回曲线的端点
2.判断点是否在曲线内部
public bool IsInside(double parameter);
public bool IsInside(double parameter, out int end);
第一个函数直接判断,第二个函数,会给出一个返回值,表示点的位置是在哪里
根据Parameter值,判断点是否在曲线内部,至于该值得含义,目前不知道具体是什么,需要继续研究。不过该参数也可以通过IntersectionResult中的属性取得
3.两条曲线相交
public SetComparisonResult Intersect(Curve curve);
public SetComparisonResult Intersect(Curve curve, out IntersectionResultArray resultArray);
第一个函数直接给出两条曲线的相交情况;
第二个函数不仅判断其相交情况,还会给出交点的信息等,需要说明的是IntersectionResultArray是输出值,如果没有交点,会输出为NULL;
public enum SetComparisonResult
{
RightEmpty = 2,
BothEmpty = 3,
Disjoint = 4, // 没有交点
Overlap = 8, // 重叠
Subset = 16, // 两条线共线,且有共点,部分重叠(线段)
Superset = 32, // 一个线段,是否在一个直线中
Equal = 64, // 相等
}