怎樣判斷乙個座標是否在已知三角形內?

2021-04-07 06:35:02 字數 2139 閱讀 2782

根據直線ax+by+c=0和點p的關係知識可知,把點p代入式子ax+by+c的值的正負,來判斷點p在直線的位置。

又知三角形的內心必在三角形內部,所以我們可以把測試點和內心比較,即可得出該點是否在三角形內部。

源**:(在bcb6.0測試通過)

void __fastcall tform1::button1click(tobject *sender)

{float fpointx1,fpointy1;

float fpointx2,fpointy2;

float fpointx3,fpointy3;

float k1,b1,k2,b2,k3,b3;

char cflag1 = 0;

char cflag2 = 0;

float ftestpx =232,ftestpy = 192;

float finx,finy;

fpointx1 = 72;

fpointy1 = 56;

fpointx2 = 104;

fpointy2 = 208;

fpointx3 = 280;

fpointy3 = 136;

float temp1 =  sqrt( power(fpointx3-fpointx2,2)+power(fpointy3-fpointy2,2) );

float temp2 =  sqrt( power(fpointx3-fpointx1,2)+power(fpointy3-fpointy1,2) );

float te*** =  sqrt( power(fpointx2-fpointx1,2)+power(fpointy2-fpointy1,2) );

//得到該三角形的內心,內心必在三角形內部

finx = ((temp1*fpointx1)+(temp2*fpointx2)+(te****fpointx3))/(temp1+temp2+te***);

finy = ((temp1*fpointy1)+(temp2*fpointy2)+(te****fpointy3))/(temp1+temp2+te***);

//得到三角形 三個邊的直線方程係數

k1 = (fpointy2-fpointy1)/(fpointx2-fpointx1);

b1 = fpointy1-k1*fpointx1;

k2 = (fpointy3-fpointy2)/(fpointx3-fpointx2);

b2 = fpointy2-k2*fpointx2;

k3 = (fpointy3-fpointy1)/(fpointx3-fpointx1);

b3 = fpointy3-k3*fpointx3;

//得到內心的 對應數的值

if (k1*finx-finy+b1 > 1e-6)

cflag1 = cflag1 | 0200;

else

cflag1 = cflag1 | 0100;

if (k2*finx-finy+b2 > 1e-6)

cflag1 = cflag1 | 0020;

else

cflag1 = cflag1 | 0010;

if (k3*finx-finy+b3 > 1e-6)

cflag1 = cflag1 | 0002;

else

cflag1 = cflag1 | 0001;

//檢驗對應點

if (k1*ftestpx-ftestpy+b1 > 1e-6)

cflag2 = cflag2 | 0200;

else

cflag2 = cflag2 | 0100;

if (k2*ftestpx-ftestpy+b2 > 1e-6)

cflag2 = cflag2 | 0020;

else

cflag2 = cflag2 | 0010;

if (k3*ftestpx-ftestpy+b3 > 1e-6)

cflag2 = cflag2 | 0002;

else

cflag2 = cflag2 | 0001;

if (cflag1 == cflag2)

showmessage("inside");

else

showmessage("outside");

判斷乙個點是否在三角形內部

題目 在二維座標系中,所有的值都是double型,那麼乙個三角形可以由三個點來代表,給定三個點代表的三角形,再給定乙個點 x,y 判斷 x,y 是否在三角形中 基本思路 如果乙個點o在三角形的內部,那麼從三角形的乙個點出發,逆時針走過所有邊的過程中,點o始終在走過邊的左邊。如果點o在外側,則不滿足這...

判斷乙個點是否在三角形內部

判斷乙個點是否在三角形內部 在二維座標系中,所有的值都是double型別,那麼乙個三角形可以由3個點來代表,給定3個點代表的三角形,再給定乙個點 x,y 判斷 x,y 是否在三角形中 輸入描述 輸入有四行,每行兩個浮點數。前三行的6個數分別代表三角形的三個頂點的座標 最後兩個數分別表示 x,y 輸出...

判斷二維座標系中任意乙個點是否在三角形內

給定平面上一點p x0,y0 判斷該點是否在三角形abc中,三角形頂點座標分別為a xa,xb b xb,yb c xc,yc 可以使用面積法來判斷,方法如下 其中s a,b,c 表示三角形abc的面積。1 若abs s a,b,c abs s p,b,c abs s a,p,c abs s a,b...