如果point属于Equilateral Triangle,我创建了返回true的方法。当我想绘制它时(协调系统在屏幕的左上方有点(0,0))我得到了精细的等边三角形,但它被拒绝了。你能告诉我为什么吗?
*
* calculates m from: y = mx + n
*/
private int calculateM(int x1, int y1, int x2, int y2){
return (int)((y2 - y1)/(x2 - x1));
}
/*
* calculates n from: y = mx + n
*/
private int calculateN(int x1,int y1,int x2,int y2){
return (int)(-1*(((y2 - y1)/(x2 - x1)))*x1+y1);
}
public boolean containsPoint(int x,int y){
int bx = ax + length;
int by = ay;
int cx = ax + (int)(length/2);
int cy = ay + (int)(length*Math.sqrt(3)/2);
if( y >= calculateM(ax, ay, bx, by)*x + calculateN(ax, ay, bx, by) &&
( y <= calculateM(ax, ay, cx, cy)*x + calculateN(ax, ay, cx, cy)) &&
( y <= calculateM(bx, by, cx, cy)*x + calculateN(bx, by, cx, cy))) return true;
return false;
}
我的主要想法是在两点之间创建方向,测试区域属于它们。 (Ax,Ay)是三角形的左点A的坐标。三角形的AB侧与x axyis平行