判斷點是否在三角形內 畫三角形的重要方法

2021-08-04 04:34:30 字數 1546 閱讀 3300

判斷點是否在三角形內。是畫三角形的重要方法,尤其是做遊戲的程式設計師,這種演算法值得收納。

實驗環境:win10

實驗工具:codeblocks

判斷點a是否在三角形bcd內部。只要滿足↑ab×↑ac,↑ac×↑ad和↑ad×↑ab同號即可,相當於沿順時針或者逆時針繞三角形一圈時,點a始終出現在同一側。

點積:↑a·↑b=a1b1+a2b2+a3b3=|↑a|·|↑b|cosx,x為兩向量夾角。

叉積:↑a×↑b=(a2b3-a3b2)↑i+(a3b1-a1b3)↑j+(a1b2-a2b1)↑k=|↑a|·|↑b|sinx↑n,↑n為↑a×↑b方向。

內容取自《acm國際大學生程式設計競賽·知識與入門》p143

幾何向量積法求面積:我們知道向量積的幾何意義就是求得到的平行四邊形的面積,而平行四邊形的一半就是三角形的面積,通過這個原理就知道求三角形面積的方法。

注:在求面積的過程中,要注意精度問題。

以下面積法實驗測試用的第二種算面積的公式

實驗效果圖

實驗**

通過這個我們就知道如何判斷是否同側了。

實驗效果圖

實驗**

注:d*q要注意精度問題。視情況定,如果最大可能情況d*q>int_max,那麼會判錯

#include 

#include

using

namespace

std;

bool isintri(int x1,int y1,int x2,int y2,int x3,int y3,int x,int y)

int main()else

printf(" ");

}printf("\n");

}return

0;}

三角形有向面積 判斷點是否在三角形內部

公式 以三角形兩邊的平行四邊形面積等於兩邊向量叉乘 三角形三個頂點如果順時針那麼面積為負,逆時針為正 判斷點o是否在三角形abc內部當且僅當 sabc soab sobc soac include include include include includeusing namespace std ...

判斷點是否在三角形內

概述 給定三角形abc和一點p x,y,z 判斷點p是否在abc內。這是遊戲設計中乙個常見的問題。需要注意的是,這裡假定點和三角形位於同乙個平面內。本文介紹三種不同的方法,由淺入深 一 內角和法 連線點p和三角形的三個頂點得到三條線段pa,pb和pc,求出這三條線段與三角形各邊的夾角,如果所有夾角之...

判斷點是否在三角形內

給定三角形abc和一點p x,y,z 判斷點p是否在abc內。這是遊戲設計中乙個常見的問題。需要注意的是,這裡假定點和三角形位於同乙個平面內。本文介紹三種不同的方法,由淺入深 連線點p和三角形的三個頂點得到三條線段pa,pb和pc,求出這三條線段與三角形各邊的夾角,如果所有夾角之和為180度,那麼點...