} // End Function ToCounterClockWiseLatLngPoints public decimal GetMinimumDistance(DecimalVector2 point) { decimal?distance = null; for (int i = 0; i < this.Vectors.Count; ++i) { DecimalVector2?intersection = DecimalVector2.GetPointVerticalIntersection(this.Points[i], this.Vectors[i], point); if (intersection.HasValue) { if (!DecimalVector2.IsPointOnLine(this.Points[i], this.Points[i + 1], intersection.Value)) { continue; } //decimal dist = DecimalVector2.DistanceOfPointToLine(point, this.Points[i], this.Points[i + 1]); decimal dist = DecimalVector2.Subtract(point, intersection.Value).Length; if (distance.HasValue) { if (dist < distance.Value) { distance = dist; } } else { distance = dist; } } // End if (intersection.HasValue) } // Next i // if (distance.HasValue) return distance.Value; return 1000000000000000; // System.Console.WriteLine(IsClosed); for (int i = 0; i < this.Points.Count; ++i) { decimal dist = DecimalVector2.Subtract(point, this.Points[i]).Length; if (distance.HasValue) { if (dist < distance.Value) { distance = dist; } } else { distance = dist; } } // Next i return(distance.Value); } // End Function GetMinimumDistance
public void InitVectors() { for (int i = 0; i < this.Points.Count - 1; i++) { DecimalVector2 p1 = this.Points[i]; DecimalVector2 p2 = this.Points[i + 1]; this.Vectors.Add(DecimalVector2.Subtract(p2, p1)); } // Next i }