已知點的座標(x0,y0),直線的方程為ax+by+c = 0;求點到直線上的距離d、點在直線上的垂足(x, y)、點關於直線的對稱點(x』, y『)。
解決方法:
(1)距離:
d = ( ax0 + by0 + c ) / sqrt ( a*a + b*b );
這個「距離」有符號,表示點在直線的上方或者下方,取絕對值表示歐式距離。
(2)垂足:
求解兩個方程:(a)、ax + by + c = 0;(b)、(y - y0) / (x - x0) = b / a;
解得,x = ( b*b*x0 - a*b*y0 - a*c ) / ( a*a + b*b );
y = ( -a*b*x0 + a*a*y0 - b*c ) / ( a*a + b*b );
(3)對稱點:
方法一:求解兩個方程:(a)、a*( x』+x0 ) / 2 + b*( y『+y0 ) / 2 + c = 0; (b)、(y』 - y0) / (x『 - x0) = b / a;
方法二:把問題轉化為求解已知點關於垂足的對稱點:
首先,求出垂足;則x』 = 2*x - x0; y『 = 2*y - y0;
解得,x』 = ( (b*b - a*a)*x0 - 2*a*b*y0 - 2*a*c ) / ( a*a + b*b );
y『 = ( -2*a*b*x0 + (a*a - b*b) * y0 - 2*b*c ) / ( a*a+b*b );
方法三:首先,求一係數k,k = - 2 * (a*x0 + b*y0 + c) / (a*a+b*b);
則, x' = x0 + k * a;
y' = y0 + k * b;
/*** description 求點到直線的垂足
* *
@param
x1 * 點橫座標
* @param
y1 * 點縱座標
* @param
a * 直線方程一般式係數a
* @param
b * 直線方程一般式係數b
* @param
c * 直線方程一般式係數c
* @return
垂足點
*/private
static point getfootofperpendicular(double x1, double y1, double a, double b, double
c)
else
}/*** description 點到直線的距離
* *
@param
x1 * 點橫座標
* @param
y1 * 點縱座標
* @param
a * 直線方程一般式係數a
* @param
b * 直線方程一般式係數b
* @param
c * 直線方程一般式係數c
*/private
static
double getdistanceofperpendicular(double x1, double y1, double a, double b, double
c)
public
static
void
main(string args)
已知點的座標(x0,y0),直線上的兩點(x1,y1)、(x2,y2);求點到直線上的距離d、點在直線上的垂足(x, y)、點關於直線的對稱點(x』, y『)。
解決方法:
方法一:把直線化兩點式為一般式,則一般式中的a = y2 -y1; b = x1 - x2; c = x2*y1 - x1*y2;帶入上面的公式,即可求出相應的距離、垂足、對稱點。
方法二:
(a)距離:
首先,求出垂足的座標;
則d = sqrt( (x - x0) * (x - x0) + (y - y0) * (y - y0));
(b)垂足:
首先,求一係數 k: 設直線的起點和終點分別為a(x1, y1)、b(x2, y2),直線外一點為c(x0, y0),垂足為d;並設k = |ad| / |ab。
則,k * ab = ad = ac + cd,又 ab * cd= 0;所以,k * ab* ab = ac *ab,故 k =ac * ab / (ab * ab)。
帶入座標,即得, k = ( (x0- x1) * (x2 - x1) + (y0 - y1) * (y2 - y1) ) / ( (x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) ) ;
則 x = x1 + k*(x2 - x1); y = y1 + k*(y2 - y1);
(c)對稱點:
同問題描述1中的方法。
參考《點關於直線的距離、垂足、對稱點公式》
點關於直線的距離 垂足 對稱點公式
下面通過兩種直線方程的形式,求解點關於直線的距離 垂足 對稱點公式。問題描述1 已知點的座標 x0,y0 直線的方程為ax by c 0 求點到直線上的距離d 點在直線上的垂足 x,y 點關於直線的對稱點 x y 解決方法 1 距離 d ax0 by0 c sqrt a a b b 這個 距離 有符...
求解點關於直線的距離 垂足 對稱點公式
d ax0 by0 c sqrt a a b b 這個 距離 有符號,表示點在直線的上方或者下方,取絕對值表示歐式距離。求解兩個方程 a ax by c 0 b y y0 x x0 b a 解得,x b b x0 a b y0 a c a a b b y a b x0 a a y0 b c a a ...
直線外一點到直線的距離
已知直線上兩點求直線的一般式方程 已知直線上的兩點p1 x1,y1 p2 x2,y2 p1 p2兩點不重合。則直線的一般式方程ax by c 0中,a b c分別等於 a y2 y1 b x1 x2 c x2y1 x1y2 直線外一點到直線的距離 p 的座標為 xo,yo 則點 p 到直線 l 的距...