Re: [問題] 請問三點共線

看板Prob_Solve作者 (-858993460)時間13年前 (2011/04/18 03:42), 編輯推噓2(200)
留言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
文章代碼(AID): #1DgqAh1N (Prob_Solve)
文章代碼(AID): #1DgqAh1N (Prob_Solve)