math: rename Movement.{p1,p2} to {src,dest}
This commit is contained in:
parent
c87d044687
commit
40339947d1
2 changed files with 14 additions and 14 deletions
|
@ -51,33 +51,33 @@ export class Movement {
|
|||
public readonly v: vec2;
|
||||
|
||||
constructor(
|
||||
public readonly p1: vec2,
|
||||
public readonly p2: vec2,
|
||||
public readonly src: vec2,
|
||||
public readonly dest: vec2,
|
||||
) {
|
||||
this.v = vec2.sub(vec2.create(), p2, p1);
|
||||
this.v = vec2.sub(vec2.create(), dest, src);
|
||||
}
|
||||
|
||||
public intersectLine(out: vec2, l: Line): vec2 {
|
||||
const vp = vec2.sub(vec2.create(), l.p, this.p1);
|
||||
const vp = vec2.sub(vec2.create(), l.p, this.src);
|
||||
const d = crossz(vp, this.v);
|
||||
const d2 = d / crossz(this.v, l.v);
|
||||
return vec2.scaleAndAdd(out, l.p, l.v, d2);
|
||||
}
|
||||
|
||||
public passes(p: vec2): boolean {
|
||||
const vp = vec2.sub(vec2.create(), p, this.p1);
|
||||
const vp = vec2.sub(vec2.create(), p, this.src);
|
||||
const d = vec2.dot(this.v, vp);
|
||||
return d >= 0 && d <= vec2.sqrLen(this.v);
|
||||
}
|
||||
|
||||
public toLineSegment(): LineSegment {
|
||||
return LineSegment.fromPoints(this.p1, this.p2);
|
||||
return LineSegment.fromPoints(this.src, this.dest);
|
||||
}
|
||||
|
||||
public translate(t: vec2): Movement {
|
||||
const p1 = vec2.add(vec2.create(), this.p1, t);
|
||||
const p2 = vec2.add(vec2.create(), this.p2, t);
|
||||
return new Movement(p1, p2);
|
||||
const src = vec2.add(vec2.create(), this.src, t);
|
||||
const dest = vec2.add(vec2.create(), this.dest, t);
|
||||
return new Movement(src, dest);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -108,7 +108,7 @@ export class LineSegment extends Line implements Collidable {
|
|||
}
|
||||
|
||||
public collide(out: vec2, move: Movement, r: number): boolean {
|
||||
if (this.distancePoint(move.p1) < 0)
|
||||
if (this.distancePoint(move.src) < 0)
|
||||
return false;
|
||||
|
||||
if (crossz(move.v, this.v) < 0)
|
||||
|
@ -127,14 +127,14 @@ export class LineSegment extends Line implements Collidable {
|
|||
}
|
||||
|
||||
private collideRef(out: vec2, move: Movement): boolean {
|
||||
if (this.distancePoint(move.p2) >= 0)
|
||||
if (this.distancePoint(move.dest) >= 0)
|
||||
return false;
|
||||
|
||||
const x = move.intersectLine(vec2.create(), this);
|
||||
if (!this.containsPoint(x))
|
||||
return false;
|
||||
|
||||
this.projectPoint(out, move.p2);
|
||||
this.projectPoint(out, move.dest);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -26,13 +26,13 @@ export class Point implements Collidable {
|
|||
|
||||
const refMove = move.translate(tr);
|
||||
|
||||
if (vec2.sqrDist(this.p, move.p1) > r * r && !refMove.passes(this.p))
|
||||
if (vec2.sqrDist(this.p, move.src) > r * r && !refMove.passes(this.p))
|
||||
return false;
|
||||
|
||||
normal(t, t);
|
||||
|
||||
const tang = new Line(this.p, t);
|
||||
tang.projectPoint(out, refMove.p2);
|
||||
tang.projectPoint(out, refMove.dest);
|
||||
vec2.sub(out, out, tr);
|
||||
|
||||
return true;
|
||||
|
|
Reference in a new issue