2020-06-10 08:57:17 +08:00
|
|
|
|
class Vector2Ext {
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 检查三角形是CCW还是CW
|
|
|
|
|
|
* @param a
|
|
|
|
|
|
* @param center
|
|
|
|
|
|
* @param c
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static isTriangleCCW(a: Vector2, center: Vector2, c: Vector2){
|
|
|
|
|
|
return this.cross(Vector2.subtract(center, a), Vector2.subtract(c, center)) < 0;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 计算二维伪叉乘点(Perp(u), v)
|
|
|
|
|
|
* @param u
|
|
|
|
|
|
* @param v
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static cross(u: Vector2, v: Vector2){
|
|
|
|
|
|
return u.y * v.x - u.x * v.y;
|
|
|
|
|
|
}
|
2020-06-15 08:46:38 +08:00
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
* 返回与传入向量垂直的向量
|
|
|
|
|
|
* @param first
|
|
|
|
|
|
* @param second
|
|
|
|
|
|
*/
|
|
|
|
|
|
public static perpendicular(first: Vector2, second: Vector2){
|
|
|
|
|
|
return new Vector2(-1 * (second.y - first.y), second.x - first.x);
|
|
|
|
|
|
}
|
2020-06-10 08:57:17 +08:00
|
|
|
|
}
|