/// <summary> /// Определение минимального расстояния по грани контура в заданной вершине. /// </summary> /// <param name="front">Проверяемый полигон.</param> /// <param name="v"> Выбранная вершина.</param> /// <returns></returns> static double MinLengthSeg(Polygon2d front, Vertex2d v) { List <ICurve2d> ds = front.GetAllSegments(); var sel = from i in ds orderby GetLengthToSeg(v, i) select i; Line2d line = (Line2d)sel.First(); return(Math.Abs(line.A * v.X + line.B * v.Y + line.C) / Math.Sqrt(line.A * line.A + line.B * line.B)); }
/// <summary> /// Проверка на пересечение полигона с треугольником. /// </summary> /// <param name="front">Проверяемый полигон.</param> /// <param name="t">Проверяемый треугольник.</param> /// <param name="e">Возвращаемый объект ребра с которым было найдено пересечение.</param> /// <returns></returns> static bool CheckIntersect(Polygon2d front, Triangle t, out ICurve2d e) { e = null; bool res = false; List <ICurve2d> ds = front.GetAllSegments(); if (ds.Count > 0) { for (int i = 0; i < ds.Count; i++) { if (t.Intersect(ds[i], out IXYZ[] pts))