コード例 #1
0
        public Edge(Vector2d begin, Vector2d end)
        {
            Begin = begin;
            End   = end;

            LineLinear2d = new LineLinear2d(begin, end);
            Norm         = (end - begin).Normalized();
        }
コード例 #2
0
            public SkeletonEdge(Vector2d start, Vector2d end, bool isSkeleton, double distance,
                                double outerLimit)
            {
                Start      = start;
                End        = end;
                Line       = new LineLinear2d(start, end);
                IsSkeleton = isSkeleton;
                Distance   = distance;
                IsOuter    = distance < outerLimit;

                Size = Start.DistanceTo(End);
            }
コード例 #3
0
        public static Vector2d Collide(LineParametric2d ray, LineLinear2d line, double epsilon)
        {
            var collide = LineLinear2d.Collide(ray.CreateLinearForm(), line);

            if (collide.Equals(Vector2d.Empty))
            {
                return(Vector2d.Empty);
            }

            var collideVector = collide - ray.A;

            return(ray.U.Dot(collideVector) < epsilon ? Vector2d.Empty : collide);
        }