public Edge(Vector2d begin, Vector2d end) { Begin = begin; End = end; LineLinear2d = new LineLinear2d(begin, end); Norm = (end - begin).Normalized(); }
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); }
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); }