Skip to content

Commit

Permalink
rename matrix functions
Browse files Browse the repository at this point in the history
  • Loading branch information
shakiba committed Dec 26, 2023
1 parent eade193 commit ba52e0c
Show file tree
Hide file tree
Showing 15 changed files with 196 additions and 196 deletions.
38 changes: 19 additions & 19 deletions src/collision/Distance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -171,13 +171,13 @@ export const Distance = function (output: DistanceOutput, cache: SimplexCache, i
// Compute a tentative new simplex vertex using support points.
const vertex = vertices[simplex.m_count]; // SimplexVertex

vertex.indexA = proxyA.getSupport(matrix.invRotVec2(temp, xfA.q, matrix.setMulVec2(temp, -1, d)));
vertex.indexA = proxyA.getSupport(matrix.derotVec2(temp, xfA.q, matrix.scaleVec2(temp, -1, d)));
matrix.transformVec2(vertex.wA, xfA, proxyA.getVertex(vertex.indexA));

vertex.indexB = proxyB.getSupport(matrix.invRotVec2(temp, xfB.q, d));
vertex.indexB = proxyB.getSupport(matrix.derotVec2(temp, xfB.q, d));
matrix.transformVec2(vertex.wB, xfB, proxyB.getVertex(vertex.indexB));

matrix.diffVec2(vertex.w, vertex.wB, vertex.wA);
matrix.subVec2(vertex.w, vertex.wB, vertex.wA);

// Iteration count is equated to the number of support point calls.
++iter;
Expand Down Expand Up @@ -221,14 +221,14 @@ export const Distance = function (output: DistanceOutput, cache: SimplexCache, i
// Shapes are still no overlapped.
// Move the witness points to the outer surface.
output.distance -= rA + rB;
matrix.diffVec2(normal, output.pointB, output.pointA);
matrix.subVec2(normal, output.pointB, output.pointA);
matrix.normalizeVec2(normal);
matrix.addMulVec2(output.pointA, rA, normal);
matrix.subMulVec2(output.pointB, rB, normal);
matrix.plusScaleVec2(output.pointA, rA, normal);
matrix.minusScaleVec2(output.pointB, rB, normal);
} else {
// Shapes are overlapped when radii are considered.
// Move the witness points to the middle.
const p = matrix.diffVec2(temp, output.pointA, output.pointB);
const p = matrix.subVec2(temp, output.pointA, output.pointB);
matrix.copyVec2(output.pointA, p);
matrix.copyVec2(output.pointB, p);
output.distance = 0.0;
Expand Down Expand Up @@ -397,7 +397,7 @@ class Simplex {
const wBLocal = proxyB.getVertex(v.indexB);
matrix.transformVec2(v.wA, transformA, wALocal);
matrix.transformVec2(v.wB, transformB, wBLocal);
matrix.diffVec2(v.w,v.wB, v.wA);
matrix.subVec2(v.w,v.wB, v.wA);
v.a = 0.0;
}

Expand All @@ -421,7 +421,7 @@ class Simplex {
const wBLocal = proxyB.getVertex(0);
matrix.transformVec2(v.wA, transformA, wALocal);
matrix.transformVec2(v.wB, transformB, wBLocal);
matrix.diffVec2(v.w,v.wB, v.wA);
matrix.subVec2(v.w,v.wB, v.wA);
v.a = 1.0;
this.m_count = 1;
}
Expand All @@ -445,7 +445,7 @@ class Simplex {
return matrix.setVec2(searchDirection_reuse, -v1.w.x, -v1.w.y);

case 2: {
matrix.diffVec2(e12, v2.w, v1.w);
matrix.subVec2(e12, v2.w, v1.w);
const sgn = -matrix.crossVec2Vec2(e12, v1.w);
if (sgn > 0.0) {
// Origin is left of e12.
Expand Down Expand Up @@ -475,7 +475,7 @@ class Simplex {
return matrix.copyVec2(closestPoint_reuse, v1.w);

case 2:
return matrix.combineVec2(closestPoint_reuse, v1.a, v1.w, v2.a, v2.w);
return matrix.combine2Vec2(closestPoint_reuse, v1.a, v1.w, v2.a, v2.w);

case 3:
return matrix.zeroVec2(closestPoint_reuse);
Expand All @@ -501,8 +501,8 @@ class Simplex {
break;

case 2:
matrix.combineVec2(pA, v1.a, v1.wA, v2.a, v2.wA);
matrix.combineVec2(pB, v1.a, v1.wB, v2.a, v2.wB);
matrix.combine2Vec2(pA, v1.a, v1.wA, v2.a, v2.wA);
matrix.combine2Vec2(pB, v1.a, v1.wB, v2.a, v2.wB);
break;

case 3:
Expand Down Expand Up @@ -530,8 +530,8 @@ class Simplex {

case 3:
return matrix.crossVec2Vec2(
matrix.diffVec2(temp1, this.m_v2.w, this.m_v1.w),
matrix.diffVec2(temp2, this.m_v3.w, this.m_v1.w),
matrix.subVec2(temp1, this.m_v2.w, this.m_v1.w),
matrix.subVec2(temp2, this.m_v3.w, this.m_v1.w),
);

default:
Expand Down Expand Up @@ -584,7 +584,7 @@ class Simplex {
solve2(): void {
const w1 = this.m_v1.w;
const w2 = this.m_v2.w;
matrix.diffVec2(e12, w2, w1);
matrix.subVec2(e12, w2, w1);

// w1 region
const d12_2 = -matrix.dotVec2(w1, e12);
Expand Down Expand Up @@ -626,7 +626,7 @@ class Simplex {
// [1 1 ][a1] = [1]
// [w1.e12 w2.e12][a2] = [0]
// a3 = 0
matrix.diffVec2(e12, w2, w1);
matrix.subVec2(e12, w2, w1);
const w1e12 = matrix.dotVec2(w1, e12);
const w2e12 = matrix.dotVec2(w2, e12);
const d12_1 = w2e12;
Expand All @@ -636,7 +636,7 @@ class Simplex {
// [1 1 ][a1] = [1]
// [w1.e13 w3.e13][a3] = [0]
// a2 = 0
matrix.diffVec2(e13, w3, w1);
matrix.subVec2(e13, w3, w1);
const w1e13 = matrix.dotVec2(w1, e13);
const w3e13 = matrix.dotVec2(w3, e13);
const d13_1 = w3e13;
Expand All @@ -646,7 +646,7 @@ class Simplex {
// [1 1 ][a2] = [1]
// [w2.e23 w3.e23][a3] = [0]
// a1 = 0
matrix.diffVec2(e23, w3, w2);
matrix.subVec2(e23, w3, w2);
const w2e23 = matrix.dotVec2(w2, e23);
const w3e23 = matrix.dotVec2(w3, e23);
const d23_1 = w3e23;
Expand Down
30 changes: 15 additions & 15 deletions src/collision/Manifold.ts
Original file line number Diff line number Diff line change
Expand Up @@ -162,16 +162,16 @@ export class Manifold {
const manifoldPoint = this.points[0];
matrix.transformVec2(pointA, xfA, this.localPoint);
matrix.transformVec2(pointB, xfB, manifoldPoint.localPoint);
matrix.diffVec2(dist, pointB, pointA);
matrix.subVec2(dist, pointB, pointA);
const lengthSqr = matrix.lengthSqrVec2(dist);
if (lengthSqr > EPSILON * EPSILON) {
const length = math_sqrt(lengthSqr);
matrix.setMulVec2(normal, 1 / length, dist);
matrix.scaleVec2(normal, 1 / length, dist);
}
matrix.combineVec2(cA, 1, pointA, radiusA, normal);
matrix.combineVec2(cB, 1, pointB, -radiusB, normal);
matrix.combineVec2(points[0], 0.5, cA, 0.5, cB);
separations[0] = matrix.dotVec2(matrix.diffVec2(temp, cB, cA), normal);
matrix.combine2Vec2(cA, 1, pointA, radiusA, normal);
matrix.combine2Vec2(cB, 1, pointB, -radiusB, normal);
matrix.combine2Vec2(points[0], 0.5, cA, 0.5, cB);
separations[0] = matrix.dotVec2(matrix.subVec2(temp, cB, cA), normal);
break;
}

Expand All @@ -182,10 +182,10 @@ export class Manifold {
for (let i = 0; i < this.pointCount; ++i) {
const manifoldPoint = this.points[i];
matrix.transformVec2(clipPoint, xfB, manifoldPoint.localPoint);
matrix.combineVec2(cA, 1, clipPoint, radiusA - matrix.dotVec2(matrix.diffVec2(temp, clipPoint, planePoint), normal), normal);
matrix.combineVec2(cB, 1, clipPoint, -radiusB, normal);
matrix.combineVec2(points[i], 0.5, cA, 0.5, cB);
separations[i] = matrix.dotVec2(matrix.diffVec2(temp, cB, cA), normal);
matrix.combine2Vec2(cA, 1, clipPoint, radiusA - matrix.dotVec2(matrix.subVec2(temp, clipPoint, planePoint), normal), normal);
matrix.combine2Vec2(cB, 1, clipPoint, -radiusB, normal);
matrix.combine2Vec2(points[i], 0.5, cA, 0.5, cB);
separations[i] = matrix.dotVec2(matrix.subVec2(temp, cB, cA), normal);
}
break;
}
Expand All @@ -197,10 +197,10 @@ export class Manifold {
for (let i = 0; i < this.pointCount; ++i) {
const manifoldPoint = this.points[i];
matrix.transformVec2(clipPoint, xfA, manifoldPoint.localPoint);
matrix.combineVec2(cB, 1, clipPoint, radiusB - matrix.dotVec2(matrix.diffVec2(temp, clipPoint, planePoint), normal), normal);
matrix.combineVec2(cA, 1, clipPoint, -radiusA, normal);
matrix.combineVec2(points[i], 0.5, cA, 0.5, cB);
separations[i] = matrix.dotVec2(matrix.diffVec2(temp, cA, cB), normal);
matrix.combine2Vec2(cB, 1, clipPoint, radiusB - matrix.dotVec2(matrix.subVec2(temp, clipPoint, planePoint), normal), normal);
matrix.combine2Vec2(cA, 1, clipPoint, -radiusA, normal);
matrix.combine2Vec2(points[i], 0.5, cA, 0.5, cB);
separations[i] = matrix.dotVec2(matrix.subVec2(temp, cA, cB), normal);
}
// Ensure normal points from A to B.
matrix.negVec2(normal);
Expand Down Expand Up @@ -423,7 +423,7 @@ export function clipSegmentToLine(
if (distance0 * distance1 < 0.0) {
// Find intersection point of edge and plane
const interp = distance0 / (distance0 - distance1);
matrix.combineVec2(vOut[numOut].v, 1 - interp, vIn[0].v, interp, vIn[1].v);
matrix.combine2Vec2(vOut[numOut].v, 1 - interp, vIn[0].v, interp, vIn[1].v);

// VertexA is hitting edgeB.
vOut[numOut].id.setFeatures(vertexIndexA, ContactFeatureType.e_vertex, vIn[0].id.indexB, ContactFeatureType.e_face);
Expand Down
18 changes: 9 additions & 9 deletions src/collision/TimeOfImpact.ts
Original file line number Diff line number Diff line change
Expand Up @@ -377,7 +377,7 @@ class SeparationFunction {
const localPointB = this.m_proxyB.getVertex(cache.indexB[0]);
matrix.transformVec2(pointA, xfA, localPointA);
matrix.transformVec2(pointB, xfB, localPointB);
matrix.diffVec2(this.m_axis, pointB, pointA);
matrix.subVec2(this.m_axis, pointB, pointA);
const s = matrix.normalizeVec2Length(this.m_axis);
return s;

Expand All @@ -387,11 +387,11 @@ class SeparationFunction {
const localPointB1 = proxyB.getVertex(cache.indexB[0]);
const localPointB2 = proxyB.getVertex(cache.indexB[1]);

matrix.crossVec2Num(this.m_axis, matrix.diffVec2(temp, localPointB2, localPointB1), 1.0);
matrix.crossVec2Num(this.m_axis, matrix.subVec2(temp, localPointB2, localPointB1), 1.0);
matrix.normalizeVec2(this.m_axis);
matrix.rotVec2(normal, xfB.q, this.m_axis);

matrix.combineVec2(this.m_localPoint, 0.5, localPointB1, 0.5, localPointB2);
matrix.combine2Vec2(this.m_localPoint, 0.5, localPointB1, 0.5, localPointB2);
matrix.transformVec2(pointB, xfB, this.m_localPoint);

const localPointA = proxyA.getVertex(cache.indexA[0]);
Expand All @@ -410,11 +410,11 @@ class SeparationFunction {
const localPointA1 = this.m_proxyA.getVertex(cache.indexA[0]);
const localPointA2 = this.m_proxyA.getVertex(cache.indexA[1]);

matrix.crossVec2Num(this.m_axis, matrix.diffVec2(temp, localPointA2, localPointA1), 1.0);
matrix.crossVec2Num(this.m_axis, matrix.subVec2(temp, localPointA2, localPointA1), 1.0);
matrix.normalizeVec2(this.m_axis);
matrix.rotVec2(normal, xfA.q, this.m_axis);

matrix.combineVec2(this.m_localPoint, 0.5, localPointA1, 0.5, localPointA2);
matrix.combine2Vec2(this.m_localPoint, 0.5, localPointA1, 0.5, localPointA2);
matrix.transformVec2(pointA, xfA, this.m_localPoint);

const localPointB = this.m_proxyB.getVertex(cache.indexB[0]);
Expand All @@ -437,8 +437,8 @@ class SeparationFunction {
switch (this.m_type) {
case SeparationFunctionType.e_points: {
if (find) {
matrix.invRotVec2(axisA, xfA.q, this.m_axis);
matrix.invRotVec2(axisB, xfB.q, matrix.setMulVec2(temp, -1, this.m_axis));
matrix.derotVec2(axisA, xfA.q, this.m_axis);
matrix.derotVec2(axisB, xfB.q, matrix.scaleVec2(temp, -1, this.m_axis));

this.indexA = this.m_proxyA.getSupport(axisA);
this.indexB = this.m_proxyB.getSupport(axisB);
Expand All @@ -459,7 +459,7 @@ class SeparationFunction {
matrix.transformVec2(pointA, xfA, this.m_localPoint);

if (find) {
matrix.invRotVec2(axisB, xfB.q, matrix.setMulVec2(temp, -1, normal));
matrix.derotVec2(axisB, xfB.q, matrix.scaleVec2(temp, -1, normal));

this.indexA = -1;
this.indexB = this.m_proxyB.getSupport(axisB);
Expand All @@ -477,7 +477,7 @@ class SeparationFunction {
matrix.transformVec2(pointB, xfB, this.m_localPoint);

if (find) {
matrix.invRotVec2(axisA, xfA.q, matrix.setMulVec2(temp, -1, normal));
matrix.derotVec2(axisA, xfA.q, matrix.scaleVec2(temp, -1, normal));

this.indexB = -1;
this.indexA = this.m_proxyA.getSupport(axisA);
Expand Down
8 changes: 4 additions & 4 deletions src/collision/shape/CollideCirclePolygon.ts
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ export const CollidePolygonCircle = function (manifold: Manifold, polygonA: Poly
manifold.pointCount = 1;
manifold.type = ManifoldType.e_faceA;
matrix.copyVec2(manifold.localNormal, normals[normalIndex]);
matrix.combineVec2(manifold.localPoint, 0.5, v1, 0.5, v2);
matrix.combine2Vec2(manifold.localPoint, 0.5, v1, 0.5, v2);
matrix.copyVec2(manifold.points[0].localPoint, circleB.m_p);

// manifold.points[0].id.key = 0;
Expand All @@ -105,7 +105,7 @@ export const CollidePolygonCircle = function (manifold: Manifold, polygonA: Poly

manifold.pointCount = 1;
manifold.type = ManifoldType.e_faceA;
matrix.diffVec2(manifold.localNormal, cLocal, v1);
matrix.subVec2(manifold.localNormal, cLocal, v1);
matrix.normalizeVec2(manifold.localNormal);
matrix.copyVec2(manifold.localPoint, v1);
matrix.copyVec2(manifold.points[0].localPoint, circleB.m_p);
Expand All @@ -119,15 +119,15 @@ export const CollidePolygonCircle = function (manifold: Manifold, polygonA: Poly

manifold.pointCount = 1;
manifold.type = ManifoldType.e_faceA;
matrix.diffVec2(manifold.localNormal, cLocal, v2);
matrix.subVec2(manifold.localNormal, cLocal, v2);
matrix.normalizeVec2(manifold.localNormal);
matrix.copyVec2(manifold.localPoint, v2);
matrix.copyVec2(manifold.points[0].localPoint, circleB.m_p);

// manifold.points[0].id.key = 0;
manifold.points[0].id.setFeatures(0, ContactFeatureType.e_vertex, 0, ContactFeatureType.e_vertex);
} else {
matrix.combineVec2(faceCenter, 0.5, v1, 0.5, v2);
matrix.combine2Vec2(faceCenter, 0.5, v1, 0.5, v2);
const separation = matrix.dotVec2(cLocal, normals[vertIndex1]) - matrix.dotVec2(faceCenter, normals[vertIndex1]);
if (separation > radius) {
return;
Expand Down
8 changes: 4 additions & 4 deletions src/collision/shape/CollideEdgeCircle.ts
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ export const CollideEdgeCircle = function (manifold: Manifold, edgeA: EdgeShape,

const A = edgeA.m_vertex1;
const B = edgeA.m_vertex2;
matrix.diffVec2(e, B, A);
matrix.subVec2(e, B, A);

// Barycentric coordinates
const u = matrix.dotVec2(e, B) - matrix.dotVec2(e, Q);
Expand All @@ -100,7 +100,7 @@ export const CollideEdgeCircle = function (manifold: Manifold, edgeA: EdgeShape,
if (edgeA.m_hasVertex0) {
const A1 = edgeA.m_vertex0;
const B1 = A;
matrix.diffVec2(e1, B1, A1);
matrix.subVec2(e1, B1, A1);
const u1 = matrix.dotVec2(e1, B1) - matrix.dotVec2(e1, Q);

// Is the circle in Region AB of the previous edge?
Expand Down Expand Up @@ -132,7 +132,7 @@ export const CollideEdgeCircle = function (manifold: Manifold, edgeA: EdgeShape,
if (edgeA.m_hasVertex3) {
const B2 = edgeA.m_vertex3;
const A2 = B;
matrix.diffVec2(e2, B2, A2);
matrix.subVec2(e2, B2, A2);
const v2 = matrix.dotVec2(e2, Q) - matrix.dotVec2(e2, A2);

// Is the circle in Region AB of the next edge?
Expand All @@ -156,7 +156,7 @@ export const CollideEdgeCircle = function (manifold: Manifold, edgeA: EdgeShape,
// Region AB
const den = matrix.lengthSqrVec2(e);
_ASSERT && console.assert(den > 0.0);
matrix.combineVec2(P, u / den, A, v / den, B);
matrix.combine2Vec2(P, u / den, A, v / den, B);
const dd = matrix.distSqrVec2(Q, P);
if (dd > radius * radius) {
return;
Expand Down
Loading

0 comments on commit ba52e0c

Please sign in to comment.