程式設計之美4 4點是否在三角形內擴充套件問題

2021-06-12 01:51:33 字數 685 閱讀 2322

不包括點在邊線上的情況,判斷點是否在三角形內,仍然用面積法進行判斷

邊線上的情形用向量平行的判定條件設向量ab(x1,y1),向量ad(x2,y2)若x1y2-x2y1==0則這兩向量平行,表面d要麼在邊線上要麼在三角形外

均屬於不在三角形內的情形

其餘的判定為點d與三邊圍成的面積之和是否等於三角形abc的面積

三角形的面積用海**式計算

#include#includeusing namespace std;

struct point

double x,y;

};void computeedgelen(point a,point b,

point c,double& a,double &b,double &c)

double area(point a,point b,point c)

bool isparallel(point a,point b,point c)

bool is********(point a,point b,point c,point d)

int main(){

point a(0,2);

point b(0,0);

point c(1,0);

point d(0.1,0);

if(is********(a,b,c,d))

cout<<"true"<

程式設計之美4 4 點在三角形內

第一種方法 面積相等法 如果點在三角形內部,則如果將三角形的三個頂點與這個點相連所得的三個小三角形的面積之和與原三角形的面積相等 s a,b,d s a,c,d s b,c,d s a,b,c 第二種方法 向量叉積法 判斷點p3是否在向向p1p2的左邊,只需要通過兩個向量p1p2 p1p3做叉積就可...

驗證點是否在三角形內

1,原理 三角形有三個點p1,p2,p3。當p1,p2連成直線後,如果測試點和p3在直線的一側。這為true。用排列組合同時滿足p1,p2 p2,p3 p1,p2三條直線同側則必定在三角形內。事例 如下 test project main.go package main import fmt 座標 ...

求解點是否在三角形內

思路 三角形內任意一點與三角形三個頂點連線可構成最多三個三角形且和為總面積,因此若點在三角形內則符合要求,在求解的時候可以利用向量叉乘後的模的一半求解 class dot def init self,x,y self.x float x self.y float y def solve dot is...