[高中]凸四邊形

[高中]凸四邊形

訪客 於 星期三 一月 01, 2020 8:04 pm


請問各位高手,若隨機給4個座標
是否有公式可判定是否為凸四邊形
若是,求該面積的公式為何???

訪客

 

Re: [高中]凸四邊形

lskuo 於 星期四 一月 02, 2020 10:57 pm


Anonymous 寫到:請問各位高手,若隨機給4個座標
是否有公式可判定是否為凸四邊形

若是,求該面積的公式為何???

感覺不簡單,以下是我的想法,應該不是最簡潔,也不知有沒有漏洞,請大家看看吧。
------
假設已經先檢查過四點不共線等問題了。
先平移座標,使四個點都在第一象限,比較好討論。
找出最左(x座標最小)與最下(y座標最小)的點,平移座標,使四點都在第一象限(或在軸上)。
有兩種情況:
(a) x,y最小值發生在同點,假設是(x1,y1), 則平移座標後,得到A(0,0), B(x2-x1,y2-y1), C(x3-x1,y3-y1), D(x4-x1,y4-y1)
(b) x,y最小值發生在不同點,假設是x1,y2, 則平移座標後,得到A(0,y1-y2), B(x2-x1,0), C(x3-x1,y3-y2),D (x4-x1,y4-y2)

    a. 有一點在原點:
       計算其它三點與原點相連的直線斜率:m2=(x2-x1)/(y2-y1), m3=(x3-x1)/(y3-y1), m4=(x4-x1)/(y4-y1), 假設m2<m3<m4。要注意給定四點,要連成凸四邊形,則夾角要儘量大,所以原點(A點)要與m2(B點)和m4(D點)兩點相連。所以四邊形是ABCD。現在只要判斷A和C點是否在直線BD同一側即可,要不同側才是凸四邊形。至於如何判斷兩點是不是在直線同一側,應該不是問題,就當作練習吧!
       
    b. A,B兩點分別在y,x軸上:
       這可再細分兩種情形:
        1. CD兩點分別在AB直線兩側:那麼ACBD是凸四邊形。
        2. CD兩點在AB直線同側:如要凸四邊形,則AB必定是四邊形的一邊。找出距離直線AB最遠的一點,假設是C,如果D在三角形ABC內,則無法形成凸四邊形,必須D在三角形ABC外部,CD是四邊形的一邊才可能。至於如何判斷D是否在三角形ABC內:
            ヾ. 以BC直線為準,檢查A與D兩點是否在同一側
            ゝ. 以AC直線為準,檢查B與D兩點是否在同一側

           如果兩個檢查都在同一側,則D在三角形ABC內,其它情形則會在三角形ABC外部。
---------

以上的檢查理論上,輸入四點座標,可寫成程式判斷。
決定了四邊形四個點的連接順序後,分成兩個三角形,可以算面積。

lskuo
專 家
專 家
 
文章: 278
註冊時間: 2010-11-10




高中數學問題