【求助】怎麼判斷一個點與三角形的內外



贊助商連結


TomX
2005-02-12, 05:59 PM
算是無聊想到的...

如果給你一個三角形的三頂點座標(平面座標..可以小數點)...

再給你一個點...怎樣最快查出這個點在三角形內外...

這是我的想法:
http://img212.exs.cx/img212/6086/math9fa.jpg
1.先抓出三角形的範圍...確定點不再三頂點上...

2.每一點x都有他對應的Y範圍(JK之間)..

3.由H的x去推算j.k(好像有"三點"的比例公式)..

4.檢查y再不再jk之間...

是的話就在三角形內..反之則否...

不過好像有點麻煩..

PS.這不是數學題@@...是寫程式用的...

贊助商連結


Schnaufer
2005-02-12, 09:20 PM
  不妨用向量的觀念吧!

disabledman
2005-02-12, 09:31 PM
計算其穿越線的次數!!

TomX
2005-02-12, 09:58 PM
向量??....

請教一下..

Schnaufer
2005-02-12, 10:01 PM
  A 到 BC 線段上的任何一點(不含 BC 兩點)可以寫成 x AB + (1-x) AC, 且 0 < x < 1

  AH 可以寫成 y AB + z AC

  H 點在 三角形 ABC 內且不在三邊以及三頂點上的條件為

1. y + z < 1, 且
2. y > 0, 且
3. z > 0

jessee780522
2005-02-12, 10:04 PM
  A 到 BC 線段上的任何一點(不含 BC 兩點)可以寫成 x AB + (1-x) AC, 且 0 < x < 1

  AH 可以寫成 y AB + z AC

  H 點在 三角形 ABC 內且不在三邊以及三頂點上的條件為

1. y + z < 1, 且
2. y > 0, 且
3. z > 0
''據說''這個好像是高二高三的東西.....

可是已經被我們老師超車講了不少了 = =...

alec5106
2005-02-12, 11:20 PM
用直線方程式的觀點來看
求直線AB ,看看 C 和 H 是否在直線AB同一側 若是 ==>續求 直線AC ,看看 B 和 H 是否在直線AC同一側 若是 ==>續求 直線BC ,看看 A 和 H 是否在直線BC同一側 若是 ==> 在三角形內部
任一不成立,則在三角形外部或線上

kcyang
2005-02-13, 10:01 AM
用面積如何?

若AHB+AHC+BHC=ABC,且AHB*AHC*BHC不為0,則點在三角形內。

山賊
2005-02-13, 07:57 PM
算是無聊想到的...
PS.這不是數學題@@...是寫程式用的...

既然是寫程式用的, 那麼不用數學的方法也可以:

繪三角形, 此處以單色來演示即可, 在此三角形內塗佈顏色, "黑" 的好了, 三角形外塗白的, 給定欲查該點座標後, 檢查該座標的顏色, 是黑的就是三角內, 是白的就是三角外, 簡單明瞭, 沒有運算........ :D

TomX
2005-02-13, 08:19 PM
to 山賊..

用c寫阿XD....Double型態..

不知道面積會不會有例外....