103 第五題 判斷兩直線關係

       請在表單上建立一個按鈕,以及八個 LABEL、八個 TEXTBOX,
分別為 x1、y1、x2、y2、x3、y3、x4、y4 ,用來表示四組整數座標的輸入:
(x1,y1), (x1,y2),(x3, y3),(x4,y4),其中,(x1, y1) 與 (x2, y2) 連線構成線段
L1,(x3,y3) 與 (x4,y4) 連線構成線段 L2。當按下按鈕時,以對話方塊
顯示 L1 和 L2 兩線段是否 "垂直"、"平行" 或 "兩者皆非"。
程式執行順序:輸入八個整數數值,按下按鈕,以對話方塊輸
出"垂直"、"平行" 或 "兩者皆非"。

輸入說明

輸入 8 個整數,分別代表 x1、y1、x2、y2、x3、y3、x4、y4
(-1000 ≤ x1, y1, x2, y2, x3, y3, x4, y4 ≤ 1000)

輸出說明

若 L1 與 L2 平行則輸出 "a",若 L1 與 L2 垂直則輸出 "e", 否則輸出 "n"。

範例
輸入 輸出
5 4 9 4 4 4 10 4 a
-1 -7 4 -4 -5 3 -2 -2 e
-2 3 -5 -1 1 7 5 -1 n


分析:
此題最容易犯錯的 bug 在於分母為零的情況,說明如下:
由題意可知


Youtube 此題常見 but 說明

另外,為了降低本題複雜度,下列定義平行與垂直:

平行:
斜率相同即為平行。因此,重合也算是平行。

垂直:
斜率相乘為 -1,即為垂直,因此兩線段不相交也可能垂直。
下圖兩線段不相交,但斜率垂直,因此判定垂直。