Java中求點(diǎn)到線(xiàn)的距離和垂點(diǎn),可以使用數(shù)學(xué)上的幾何公式來(lái)實(shí)現(xiàn)。
/** * 計(jì)算點(diǎn) p 到線(xiàn)段 ab 的距離 * @param a 線(xiàn)段起點(diǎn) * @param b 線(xiàn)段終點(diǎn) * @param p 要計(jì)算距離的點(diǎn) * @return 點(diǎn)到線(xiàn)段的距離 */ public static double distancePointToLine(Point a, Point b, Point p) { double distance = 0; double k = (b.y - a.y) / (b.x - a.x); double b1 = a.y - k * a.x; distance = Math.abs(k * p.x - p.y + b1) / Math.sqrt(k * k + 1); return distance; } /** * 計(jì)算點(diǎn) p 到線(xiàn)段 ab 的垂點(diǎn)坐標(biāo) * @param a 線(xiàn)段起點(diǎn) * @param b 線(xiàn)段終點(diǎn) * @param p 要計(jì)算垂點(diǎn)的點(diǎn) * @return 垂點(diǎn)坐標(biāo) */ public static Point perpendicularPoint(Point a, Point b, Point p) { double k = (b.y - a.y) / (b.x - a.x); double b1 = a.y - k * a.x; double x = (k * p.y + p.x - k * b1) / (k * k + 1); double y = k * x + b1; return new Point(x, y); }
其中,distancePointToLine方法可以計(jì)算一個(gè)點(diǎn)p到線(xiàn)段ab的距離,需要傳入線(xiàn)段的起點(diǎn)和終點(diǎn),以及要計(jì)算距離的點(diǎn)。
perpendicularPoint方法可以計(jì)算一個(gè)點(diǎn)p到線(xiàn)段ab的垂點(diǎn)坐標(biāo),也需要傳入線(xiàn)段的起點(diǎn)和終點(diǎn),以及要計(jì)算垂點(diǎn)的點(diǎn)。