描述: | 一个二维坐标系中(100*100,每一维0~99),已知三角形三个顶点的坐标A、B、C,判断坐标系中的任意点:P,是否在三角形内(在三角形边上也认为在三角形内)
请实现如下接口 /* 功能:点是否在三角形内 * 输入:三角形三顶点坐标:A、B、C,以及待确认的点:P * 输出:无 * 返回:在三角形内返回true,否则返回false */ public static boolean isInTriangle(POINTA, POINTB, POINTC, POINTP) { return true; }
约束:
|
package huawei;
import java.math.*;
public final class Demo {
@SuppressWarnings("null")
public static boolean isInTriangle(POINT A, POINT B, POINT C, POINT P)
{
/*利用叉乘法进行判断,假设P点就是M点*/
int a = 0, b = 0, c = 0;
/*向量减法*/
POINT MA = new POINT(P.x - A.x,P.y - A.y);
POINT MB = new POINT(P.x - B.x,P.y - B.y);
POINT MC = new POINT(P.x - C.x,P.y - C.y);
/*向量叉乘*/
a = MA.x * MB.y - MA.y * MB.x;
b = MB.x * MC.y - MB.y * MC.x;
c = MC.x * MA.y - MC.y * MA.x;
if((a <= 0 && b <= 0 && c <= 0)||
(a > 0 && b > 0 && c > 0))
{
return true;
}
return false;
}
}
package huawei;
public class POINT {
int x;
int y;
public POINT(int x,int y)
{
this.x=x;
this.y=y;
}
}