fall back to lines when radius is zero

This commit is contained in:
2024-12-25 01:35:12 +09:00
parent fb6e75e38c
commit 227cc1590a
+9 -1
View File
@@ -49,7 +49,11 @@ export default class SATX {
return 1 / Math.cos(Math.PI / numberOfVertices) return 1 / Math.cos(Math.PI / numberOfVertices)
} }
static entityTunnel(from, to, radius) { static entityTunnel(from, to, radius = 0) {
if (radius <= 0) {
return this.line(from, to)
}
const length = to.clone().sub(from) const length = to.clone().sub(from)
const halfWidth = length.clone().normalize().multiplyScalar(radius).rotateAround(new Vector2(), Math.PI / 2) const halfWidth = length.clone().normalize().multiplyScalar(radius).rotateAround(new Vector2(), Math.PI / 2)
const width = halfWidth.clone().multiplyScalar(2) const width = halfWidth.clone().multiplyScalar(2)
@@ -79,6 +83,10 @@ export default class SATX {
return position return position
} }
static line(from, to) {
return new SAT.Polygon(new SAT.Vector(...from.toArray()), [new SAT.Vector(), new SAT.Vector(...to.toArray())])
}
static polygonToThreeVector2(polygon) { static polygonToThreeVector2(polygon) {
const position = new Vector2(polygon.pos.x, polygon.pos.y) const position = new Vector2(polygon.pos.x, polygon.pos.y)
return polygon.points.map((p) => new Vector2(p.x, p.y).add(position)) return polygon.points.map((p) => new Vector2(p.x, p.y).add(position))