✔ 最佳答案
先導出數學公式 :
令 P1 座標為 ( x1 , y1 ) , P2 座標為 ( x2 , y2 ) , P3 座標為 ( x3 , y3 )
設直線 L1 上的一點 P 座標為 ( x , y ) , 則 :
( x , y )
= P1 + t*(P1P2向量) , 其中 t 為實數
= ( x1 , y1 ) + t*( x2 - x1 , y2 - y1 )
= ( x1 + t*( x2 - x1 ) , y1 + t*( y2 - y1 ) )
即目標 P 點座標為 ( x1 + t*( x2 - x1 ) , y1 + t*( y2 - y1 ) ) , 其中 t 為待定係數
因為 P1P2向量 ⊥ P3P向量 , 所以 :
P1P2向量.P3P向量 = 0 , 其中.為內積
( x2 - x1 , y2 - y1 ).( x1 + t*( x2 - x1 ) - x3 , y1 + t*( y2 - y1 ) - y3 ) = 0
( x2 - x1 )[ x1 + t*( x2 - x1 ) - x3 ] + ( y2 - y1 )[ y1 + t*( y2 - y1 ) - y3 ] = 0
( x2 - x1 )( x1 - x3 ) + ( y2 - y1 )( y1 - y3 ) = - t * [ ( x2 - x1 )^2 + ( y2 - y1 )^2 ]
令 :
A = ( x2 - x1 )( x1 - x3 ) + ( y2 - y1 )( y1 - y3 )
B = (-1) * [ ( x2 - x1 )^2 + ( y2 - y1 )^2 ]
則 :
t = A / B
---------------------------------------------------------------------------------------
演算法 :
註解: P1 座標為 ( x1 , y1 ) , P2 座標為 ( x2 , y2 ) , P3 座標為 ( x3 , y3 )
註解: 垂直交點 P 座標為 ( x , y )
定義變數 x1 , y1 , x2 , y2 , x3 , y3 , x , y , A , B , t 實數
( 按需求定義為 單精度實數 或 倍精度實數 )
輸入 x1 , y1 , x2 , y2 , x3 , y3
A = ( x2 - x1 )( x1 - x3 ) + ( y2 - y1 )( y1 - y3 )
B = (-1) * [ ( x2 - x1 )^2 + ( y2 - y1 )^2 ]
If B = 0 Then
......輸出 "P1 與 P2 重合"
...Else
......t = A / B
......x = x1 + t * (x2 - x1)
......y = y1 + t * (y2 - y1)
......輸出 x , y
End If
---------------------------------------------------------------------------------------
以下用 Excel VBA 來示範, 程式碼為:
Sub Find_P()
x1 = [A1]
y1 = [B1]
x2 = [A2]
y2 = [B2]
x3 = [A3]
y3 = [B3]
[A4] = ""
[B4] = ""
A = (x2 - x1) * (x1 - x3) + (y2 - y1) * (y1 - y3)
B = (-1) * ((x2 - x1) ^ 2 + (y2 - y1) ^ 2)
If B = 0 Then
[A4] = "P1 與 P2 重合"
Else
t = A / B
x = x1 + t * (x2 - x1)
y = y1 + t * (y2 - y1)
[A4] = x
[B4] = y
End If
End Sub
例如 :
三點座標分別為 ( 1 , 1 ) , ( 2 , 3 ) , ( 4 , 5 ) , 求垂直交點.
A1 輸入 1 , B1 輸入 1
A2 輸入 2 , B2 輸入 3
A3 輸入 4 , B3 輸入 5
其次, 執行程式, 則 :
A4 計算結果為 3.2 , B4 計算結果為 5.4
驗算 :
( 1 , 1 ) + t ( 2 - 1 , 3 - 1 ) = ( 3.2 , 5.4 )
t ( 1 , 2 ) = ( 2.2 , 4.4 )
t = 2.2
因為 t 存在, 所以 P 點在 P1P2 的直線上
P1P2向量.P3P向量
= ( 2 - 1 , 3 - 1 ).( 3.2 - 4 , 5.4 - 5 )
= ( 1 , 2 ).( - 0.8 , 0.4 )
= 0
所以程式計算結果, 與數學理論符合