Esempio n. 1
0
 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))
     });
 }
Esempio n. 2
0
        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);
        }