根據直線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...