public static RPoint GetMiddle(RPoint pt1, RPoint pt2) { return(new RPoint((pt1.X + pt2.X) / 2, (pt1.Y + pt2.Y) / 2)); }
/** * pt에서 index에 해당하는 waypoint 라인까지의 거리 * pt가 waypoint 진행방향의 왼쪽에 있으면 마이너스 값을 리턴한다. */ public static double GetDistanceToWaypoint(RPoint pt, List <RPoint> waypoints, (int prev, int next) index)
// 이 점과 pt가 이루는 각도를 리턴한다. public double GetAngle(RPoint pt) { double radian = Math.Atan2(pt.Y - this.Y, pt.X - this.X); return radian * 180 / Math.PI; }
/** * 현재 점이 lpt1, lpt2를 잇는 선의 왼쪽에 있는지 판단한다. */ public bool IsLeftOfLine(RPoint lpt1, RPoint lpt2) { var d = (X - lpt1.X) * (lpt2.Y - lpt1.Y) - (Y - lpt1.Y) * (lpt2.X - lpt1.X); return d < 0; }
public double DistanceTo(RPoint pt) { var vec = pt - this; return Math.Sqrt(vec.X * vec.X + vec.Y * vec.Y); }