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 + b*b );
方法一:求解兩個方程:(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;
此證明詳見資源:
解決方法:
方法一:把直線化兩點式為一般式,則一般式中的a = y2 -y1; b = x1 - x2; c = x2*y1 - x1*y2; 帶入上面的公式,即可求出相應的距離、垂足、對稱點。
方法二:
首先,求出垂足的座標;
則d = sqrt( (x - x0) * (x - x0) + (y - y0) * (y - y0));
首先,求一係數 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);
同問題描述1中的方法。
點關於直線的距離 垂足 對稱點公式
下面通過兩種直線方程的形式,求解點關於直線的距離 垂足 對稱點公式。問題描述1 已知點的座標 x0,y0 直線的方程為ax by c 0 求點到直線上的距離d 點在直線上的垂足 x,y 點關於直線的對稱點 x y 解決方法 1 距離 d ax0 by0 c sqrt a a b b 這個 距離 有符...
點到直線方程的距離 垂足 對稱點
已知點的座標 x0,y0 直線的方程為ax by c 0 求點到直線上的距離d 點在直線上的垂足 x,y 點關於直線的對稱點 x y 解決方法 1 距離 d ax0 by0 c sqrt a a b b 這個 距離 有符號,表示點在直線的上方或者下方,取絕對值表示歐式距離。2 垂足 求解兩個方程 a...
輸出一點的對稱點,兩點間的距離
程式頭部注釋開始 程式的版權和版本宣告部分 檔名稱 作 者 苗影 完成日期 2012 年 3 月 28 日 版 本 號 對任務及求解方法的描述部分 輸入描述 問題描述 程式輸出 程式頭部的注釋結束 include includeusing namespace std enum symmetricst...