Exemple #1
0
        /// <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));
        }
Exemple #2
0
        /// <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))