Polygon的edge
是表示多边形边缘的类,可用于计算多边形的周长、交点等操作。
new Polygon.Edge(v1, v2);
v1
:起始点v2
:结束点length()
计算边缘长度。
let edge = new Polygon.Edge({ x: 0, y: 0 }, { x: 3, y: 4 });
let length = edge.length(); // 返回5
intersectsWithRay(ray)
计算边缘是否与射线相交。
let edge = new Polygon.Edge({ x: 0, y: 0 }, { x: 5, y: 0 });
let ray = new Polygon.Ray({ x: 2, y: 2 }, { x: 1, y: 0 });
let intersects = edge.intersectsWithRay(ray); // 返回true
ray
:射线对象,包含origin
(起点)和direction
(方向)属性getIntersectionWithEdge(edge)
计算当前边缘与另一个边缘的交点。
let edge1 = new Polygon.Edge({ x: 0, y: 0 }, { x: 5, y: 0 });
let edge2 = new Polygon.Edge({ x: 2, y: 2 }, { x: 2, y: -2 });
let intersection = edge1.getIntersectionWithEdge(edge2); // 返回{ x: 2, y: 0 }
edge
:另一个边缘对象// 计算三角形周长
let p1 = { x: 0, y: 0 };
let p2 = { x: 3, y: 0 };
let p3 = { x: 0, y: 4 };
let edge1 = new Polygon.Edge(p1, p2);
let edge2 = new Polygon.Edge(p2, p3);
let edge3 = new Polygon.Edge(p3, p1);
let perimeter = edge1.length() + edge2.length() + edge3.length(); // 返回12
// 计算多边形交点
let polygon1 = new Polygon([{ x: 0, y: 0 }, { x: 5, y: 0 }, { x: 2, y: 3 }]);
let polygon2 = new Polygon([{ x: 1, y: 2 }, { x: 4, y: 2 }, { x: 2, y: -1 }]);
let intersections = [];
for (let edge1 of polygon1.edges) {
for (let edge2 of polygon2.edges) {
let intersection = edge1.getIntersectionWithEdge(edge2);
if (intersection) {
intersections.push(intersection);
}
}
}
console.log(intersections); // 打印出[{ x: 2, y: 1 }]