Simplify
This commit is contained in:
@@ -115,8 +115,11 @@
|
||||
<!-- <polygon class="wall" points="10,-50 3,-50 3,-60 10,-60" /> -->
|
||||
<!-- <polygon class="wall" points="-10,50 -3,50 -3,60 -10,60" /> -->
|
||||
|
||||
<polygon class="wall" points="20,-50 10,-50 10,-60 20,-60" />
|
||||
<polygon class="wall" points="-20,50 -10,50 -10,60 -20,60" />
|
||||
<!-- <polygon class="wall" points="20,-50 10,-50 10,-60 20,-60" /> -->
|
||||
<!-- <polygon class="wall" points="-20,50 -10,50 -10,60 -20,60" /> -->
|
||||
|
||||
<polygon class="wall" points="-20,-50 -10,-50 -10,-60 -20,-60" />
|
||||
<polygon class="wall" points="20,50 10,50 10,60 20,60" />
|
||||
|
||||
<!-- <polygon class="wall" points="-10,20 10,10 10,20" /> -->
|
||||
<!-- <polygon class="wall" points="20,20 40,20 40,40 20,40" /> -->
|
||||
@@ -194,7 +197,8 @@
|
||||
const s = {
|
||||
position: { x: 0, y: 0 },
|
||||
// velocity: { x: 5, y: -10 },
|
||||
velocity: { x: 5*mult, y: -10*mult },
|
||||
velocity: { x: -5*mult, y: -10*mult },
|
||||
// velocity: { x: 5*mult, y: -10*mult },
|
||||
// velocity: { x: -5*mult, y: 10*mult },
|
||||
// velocity: { x: 0, y: -10 },
|
||||
// velocity: { x: 10, y: 10 },
|
||||
@@ -872,11 +876,12 @@
|
||||
current = s.collision;
|
||||
// s.collision = detectCollisions(position, allWallCorners, collE);
|
||||
s.collision = cwcd.find(c => {
|
||||
const positionSegLength = distance(xc, yc, x, y);
|
||||
|
||||
if (!positionSegLength) return false;
|
||||
if (xc === x && yc === y) return;
|
||||
|
||||
const d = distance(c.corner.x, c.corner.y, xc, yc);
|
||||
|
||||
if (d <= shipRadius) return;
|
||||
|
||||
const positionSeg = { xa: xc, ya: yc, xb: x, yb: y };
|
||||
const slopeps = slope(positionSeg);
|
||||
const posNormIntxn = perpIntxn(slopeps, x, y, c.corner.x, c.corner.y);
|
||||
@@ -886,6 +891,8 @@
|
||||
const { xa: x1, ya: y1, xb: x2, yb: y2 } = positionSeg;
|
||||
const { xa: x3, ya: y3, xb: x4, yb: y4 } = cornerSeg;
|
||||
|
||||
// https://en.wikipedia.org/wiki/Intersection_(geometry)#Two_line_segments
|
||||
// https://en.wikipedia.org/wiki/Cramer%27s_rule#Explicit_formulas_for_small_systems
|
||||
const s = ((x3-x1)*(y4-y3)-(x4-x3)*(y3-y1))/((x2-x1)*(y4-y3)-(x4-x3)*(y2-y1));
|
||||
const t = -((x2-x1)*(y3-y1)-(x3-x1)*(y2-y1))/((x2-x1)*(y4-y3)-(x4-x3)*(y2-y1));
|
||||
const roundedT = +t.toFixed(2);
|
||||
@@ -896,7 +903,7 @@
|
||||
// console.log("s", s, "t", t);
|
||||
// console.log("d", d, "shipRadius", shipRadius);
|
||||
|
||||
return d <= shipRadius || (s >= 0 && roundedT <= 1);
|
||||
return s >= 0 && roundedT <= 1;
|
||||
});
|
||||
|
||||
// legs.style.display = !legs.style.display || legs.style.display === "none" ? "initial" : "none";
|
||||
|
||||
|
Before Width: | Height: | Size: 41 KiB After Width: | Height: | Size: 41 KiB |
Reference in New Issue
Block a user