亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何確定點是否在二維三角形中?

如何確定點是否在二維三角形中?

白板的微信 2019-06-15 11:34:15
如何確定點是否在二維三角形中?是否有一個簡單的方法來確定一個點是否在一個三角形內?它是二維的,不是3D的。
查看完整描述

3 回答

?
一只斗牛犬

TA貢獻1784條經驗 獲得超2個贊

解下列方程組:

p = p0 + (p1 - p0) * s + (p2 - p0) * t

重點p在三角形內,如果0 <= s <= 10 <= t <= 1s + t <= 1.

s,t1 - s - t被稱為重心坐標重點p.


查看完整回答
反對 回復 2019-06-15
?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

我同意安德烈亞斯·布林克,以重心為中心的坐標對此任務非常方便。請注意,不需要每次求解方程系統:只需計算解析解即可。使用安德烈亞斯“表示法,解決辦法是:

s = 1/(2*Area)*(p0y*p2x - p0x*p2y + (p2y - p0y)*px + (p0x - p2x)*py);
t = 1/(2*Area)*(p0x*p1y - p0y*p1x + (p0y - p1y)*px + (p1x - p0x)*py);

哪里Area是三角形的(簽名)區域:

Area = 0.5 *(-p1y*p2x + p0y*(-p1x + p2x) + p0x*(p1y - p2y) + p1x*p2y);

只是評估一下st1-s-t..重點p是三角形的當且僅當它們都是正的。

編輯:請注意,該區域的上述表達式假定三角形節點編號是逆時針方向的。如果編號是順時針方向的,則此表達式將返回一個負區域(但大小正確)。測試本身(s>0 && t>0 && 1-s-t>0)并不取決于編號的方向,因為上面的表達式乘以1/(2*Area)如果三角形節點方向發生變化,也要更改符號。

編輯2:要獲得更高的計算效率,請參見COPROC下面的注釋(它指出,如果預先知道三角形節點(順時針或逆時針)的方向,則按2*Area在表達式中st可以避免)。另見阿祖爾注釋中的jspldle-代碼安德烈亞斯·布林克答案。


查看完整回答
反對 回復 2019-06-15
  • 3 回答
  • 0 關注
  • 755 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號