當我試圖檢查特定點是否在多邊形內或使用多邊形的「包含」功能它給出了錯誤的輸出。多邊形「包含」功能在java不工作
爲什麼「包含」函數返回假值就算點(16,14)是多邊形....
import java.awt.Polygon;
import java.util.Scanner;
public class ACircleandaSquare
{
Scanner sc=new Scanner(System.in);
int xc,yc,r,w,h,x1,y1,x3,y3,x2,y2,x4,y4,m1,m2,vb1,vb2,vd1,vd2,cm1,cm2;
void getData()
{
w=sc.nextInt();
h=sc.nextInt();
xc=sc.nextInt();
yc=sc.nextInt();
r=sc.nextInt();
x1=sc.nextInt();
y1=sc.nextInt();
x3=sc.nextInt();
y3=sc.nextInt();
m1=((x3+x1)/2);
m2=((y3+y1)/2);
cm1=x3-m1;
cm2=y3-m2;
vb1=cm2;
vb2=-cm1;
vd1=-cm2;
vd2=cm1;
x2=(m1+vb1);
y2=(m2+vb2);
x4=(m1+vd1);
y4=(m2+vd2);
}
void perform()
{
int x[]={x1,x2,x3,x4};
int y[]={y1,y2,y3,y4};
Polygon P=new Polygon(x,y,4);
if(P.contains(16, 14))
{
System.out.println("yes");
}
else
{
System.out.println("no");
}
for(int i=0;i<h;i++)
{
for(int j=0;j<w;j++)
{
if(isInside(j,i) || P.contains(j, i))
{
System.out.print("#");
}
else
{
System.out.print(".");
}
}
System.out.println();
}
}
boolean isInside(int i,int j)
{
int z=((i-xc)*(i-xc))+(j-yc)*(j-yc);
if(z<=(r*r))
{
return true;
}
else
{
return false;
}
}
public static void main(String[] z)
{
ACircleandaSquare A1=new ACircleandaSquare();
A1.getData();
A1.perform();
}
}
爲什麼答案是打印爲「無」,而不是肯定的...?
請向我們展示你的完整的Polygon類? –
也許邊上的點被定義爲不在多邊形內? – IQV
那麼爲什麼點(8,14),(9,13)....給出的答案爲「真」.. –