Re: [問題] 請問三點共線
看板Prob_Solve (計算數學 Problem Solving)作者LPH66 (-858993460)時間13年前 (2011/04/18 03:42)推噓2(2推 0噓 0→)留言2則, 2人參與討論串4/4 (看更多)
※ 引述《chchwy (mat)》之銘言:
: Point a,b,c;
: int pos = a.x*b.y + b.x*c.y + c.x*a.y;
: int neg = a.x*c.y + b.x*a.y + c.x*b.y;
: if(pos==neg) {
: // They're on the same line
: }
: 請問,我在網路上看到這種做法,可以判斷三點共線。
: 但是我不太明白為什麼可以這樣做?
: 我個人猜測應該是跟外積有關係
: 但是式子又推不出來 冏
我覺得他用的是簡單多邊形的有號面積公式:
1 | p1.x p2.x pn.x p1.x |
--- | ... |
2 | p1.y p2.y pn.y p1.y |
pos - neg 正好是這個式子的兩倍 (就是那個很行列式的那一塊)
那麼三點共線 <==> 面積為 0 <==> pos == neg
應該是這麼想來的....
(這樣也比較能理解為什麼這兩個暫時變數要取名叫 pos 和 neg
因為根本就是這個式子的正項和負項)
不然如果真的是用前面的計算的話 正如 tkcn 說的不如直接寫 cross(...)
--
"LPH" is for "Let Program Heal us"....
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.30.131
※ 編輯: LPH66 來自: 140.112.30.131 (04/18 03:43)
推
04/18 09:43, , 1F
04/18 09:43, 1F
推
04/18 18:54, , 2F
04/18 18:54, 2F
討論串 (同標題文章)
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章