public static BoundarySegment GetBoundarySegment(Vector p1, Vector p2) { return(new BoundarySegment() { Line = LineEquation.GetLineEquation(p1, p2), Min = new Vector(Math.Min(p1.X, p2.X), Math.Min(p1.Y, p2.Y)), Max = new Vector(Math.Max(p1.X, p2.X), Math.Max(p1.Y, p2.Y)) }); }
private Vector Look(double eye) { var dir = direction.RotateDegrees(eye); var lookp = position + dir; var lookLine = LineEquation.GetLineEquation(position, lookp); var closest = new Vector(5.0, 5.0); foreach (var seg in raceTrack.BoundarySegments) { var res = seg.FindIntersect(lookLine); if (res.Intersects && res.Location.WithinBox(position, lookp) && position.DistanceSquare(res.Location) < position.DistanceSquare(closest)) { closest = res.Location; } } return(closest); }