diff --git a/html/images/space.svg b/html/images/space.svg
index bcd1c47..c0e1b93 100644
--- a/html/images/space.svg
+++ b/html/images/space.svg
@@ -244,17 +244,17 @@ const Move = (() => {
// https://en.wikipedia.org/wiki/Curve_orientation#Practical_considerations
// Determinant for a convex polygon
- // const det = (xb - xa) * (yc - ya) - (xc - xa) * (yb - ya);
+ const det = (xb - xa) * (yc - ya) - (xc - xa) * (yb - ya);
- const subR = (a, b) => Math.round(a * 100 - b * 100) / 100;
-
- const xba = subR(xb, xa);
- const yca = subR(yc, ya);
- const xca = subR(xc, xa);
- const yba = subR(yb, ya);
-
- const det = subR(xba * yca, xca * yba);
- console.log("dett", det, "edge", xa, ya, xb, yb, "position", xc, yc);
+ // const subR = (a, b) => Math.round(a * 100 - b * 100) / 100;
+ //
+ // const xba = subR(xb, xa);
+ // const yca = subR(yc, ya);
+ // const xca = subR(xc, xa);
+ // const yba = subR(yb, ya);
+ //
+ // const det = subR(xba * yca, xca * yba);
+ console.log("dett", det, "edge", xa, ya, xb, yb, "position", xc, yc, "aaa");
// console.log("xa, ya, xb, yb, xc, yc", xa, ya, xb, yb, xc, yc);
// const detEx = (xb*expo - xa*expo) * (yc*expo - ya*expo) - (xc*expo - xa*expo) * (yb*expo - ya*expo);
@@ -289,7 +289,7 @@ const Move = (() => {
// console.log(xb, xa, yc, ya, xc, xa, yb, ya);
// console.log("dettttttttttttttttttttt", det);
// if det == 0, that means we are in contact with that edge
- return det <= 0;
+ return det < 0;
}
function isAcute([xa, ya], [xb, yb], [xc, yc]) {
@@ -508,9 +508,20 @@ const Move = (() => {
// console.log("s", s, "roundedS", roundedS, "t", t, "roundedT", roundedT);
console.log("s", s, "t", t);
console.log("sr", sr, "tr", tr);
+ const x1r = Math.round(x1 * 100);
+ const x2r = Math.round(x2 * 100);
+ const y1r = Math.round(y1 * 100);
+ const y2r = Math.round(y2 * 100);
+ const x3r = Math.round(x3 * 100);
+ const x4r = Math.round(x4 * 100);
+ const y3r = Math.round(y3 * 100);
+ const y4r = Math.round(y4 * 100);
+
// 2.03 * 10
// 20.299999999999997
+ const xsrOff = Math.round(x1r + (sr + 1) * (x2r - x1r)) / 100;
+ const ysrOff = Math.round(y1r + (sr + 1) * (y2r - y1r)) / 100;
// if (roundedS >= 0 && roundedS <= 1 && roundedT >= 0 && roundedT <= 1) {
// if (s >= 0 && s < 1 && t >= 0 && t <= 1) { // this falls through
@@ -528,17 +539,10 @@ const Move = (() => {
console.log("x1", x1, "x2", x2);
console.log("y1", y1, "y2", y2);
- const x1r = Math.round(x1 * 100);
- const x2r = Math.round(x2 * 100);
- const y1r = Math.round(y1 * 100);
- const y2r = Math.round(y2 * 100);
- const x3r = Math.round(x3 * 100);
- const x4r = Math.round(x4 * 100);
- const y3r = Math.round(y3 * 100);
- const y4r = Math.round(y4 * 100);
-
const xsr = Math.round(x1r + sr * (x2r - x1r)) / 100;
const ysr = Math.round(y1r + sr * (y2r - y1r)) / 100;
+
+
const xtr = Math.round(x3r + tr * (x4r - x3r)) / 100;
const ytr = Math.round(y3r + tr * (y4r - y3r)) / 100;
@@ -555,7 +559,8 @@ const Move = (() => {
const lnP = ln.getPointAtLength(lnD);
// collision.position = { x: xs, y: ys };
- collision.position = { x: xsr, y: ysr };
+ // collision.position = { x: xsr, y: ysr };
+ collision.position = { x: xsrOff, y: ysrOff };
// collision.position = { x: xtr, y: ytr };
// collision.position = lnP;
@@ -912,8 +917,8 @@ const Move = (() => {
};
console.log("reflection before rounding", refP, "aaa");
- refP.x = Math.round(refP.x * 100) / 100;
- refP.y = Math.round(refP.y * 100) / 100;
+ // refP.x = Math.round(refP.x * 100) / 100;
+ // refP.y = Math.round(refP.y * 100) / 100;
// shouldnt change isClockwise if isAcute isn't also changing
// if we go from clockwise to not clockwise without changing acuteness,
@@ -926,6 +931,7 @@ const Move = (() => {
isA = isAcute([contact.edge.xa, contact.edge.ya], [contact.edge.xb, contact.edge.yb], [refP.x, refP.y]);
console.log("is reflected position acute with current contact", isA, "aaa");
+ // how close can you come to an edge without being on it?
const inWall = contact.wall.node.isPointInFill(newP);
console.log("is our calculated next position inside current edge's wall?", inWall, "dett");
@@ -1072,8 +1078,8 @@ function init() {
// drawCircle(0, 0);
// s.acceleration = { x: -1, y: 2 };
- s.acceleration = { x: -2, y: 2 };
- // s.acceleration = { x: 0, y: 0 };
+ // s.acceleration = { x: -2, y: 2 };
+ s.acceleration = { x: 0, y: 0 };
Ships.forEach(({ entity_id }) => {
// Acceleration[entity_id] = s.acceleration;