diff --git a/src/extensions/anvil/algorithm.ts b/src/extensions/anvil/algorithm.ts index ef1fb48a3d098eed8c33e08d648a379e2661b4d3..597d8728cd16c611c622a8916b53b217d9554712 100644 --- a/src/extensions/anvil/algorithm.ts +++ b/src/extensions/anvil/algorithm.ts @@ -151,18 +151,11 @@ export async function calculate(runtime: RuntimeContext, structure: Structure, p const normalVector = Vec3.zero(); const center = Vec3.zero(); - const jitter = [0.001, 0.001, 0.001] as Vec3; Vec3.sub(normalVector, membrane.planePoint1, membrane.planePoint2); Vec3.normalize(normalVector, normalVector); - // prevent degenerate matrices (e.g., 5cbg - assembly 1 which is oriented along the y-axis) - if (Math.abs(normalVector[0]) === 1 || Math.abs(normalVector[1]) === 1 || Math.abs(normalVector[2]) === 1) { - Vec3.add(normalVector, normalVector, jitter); - } - Vec3.add(center, membrane.planePoint1, membrane.planePoint2); Vec3.scale(center, center, 0.5); - Vec3.add(center, center, jitter); const extent = adjustExtent(ctx, membrane, center); return { diff --git a/src/extensions/anvil/representation.ts b/src/extensions/anvil/representation.ts index 029e66d1e920ab2160038c57e1026f97fbb2f68f..f85d266bf77e74361b13bc05a9c305fb848684d3 100644 --- a/src/extensions/anvil/representation.ts +++ b/src/extensions/anvil/representation.ts @@ -119,8 +119,11 @@ function getLayerCircle(builder: LinesBuilder, p: Vec3, centroid: Vec3, normal: } const tmpMat = Mat4(); +const tmpV = Vec3(); +const jitter = Vec3.create(0.001, 0.001, 0.001); function getCircle(p: Vec3, centroid: Vec3, normal: Vec3, radius: number) { - Mat4.targetTo(tmpMat, p, centroid, normal); + Vec3.add(tmpV, centroid, jitter); + Mat4.targetTo(tmpMat, p, tmpV, normal); Mat4.setTranslation(tmpMat, p); Mat4.mul(tmpMat, tmpMat, Mat4.rotX90);