Skip to content

Commit

Permalink
new "fromPointsConvexPlaneℤ3(pts)" does not have precision problems
Browse files Browse the repository at this point in the history
  • Loading branch information
Hermann-SW committed Jun 9, 2024
1 parent 78225b5 commit 6461507
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 4 deletions.
4 changes: 2 additions & 2 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@
<title>redirect lattice_sphere_cmp JSCAD app link</title>
<meta http-equiv="refresh" content="0;URL=
https://jscad.app/#data:application/gzip;base64,
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
" />
</head>
<body>
<p>This page is shortcut for <a href="
https://jscad.app/#data:application/gzip;base64,
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
">lattice_sphere_cmp JSCAD app model</a>.
</body>
</html>
42 changes: 40 additions & 2 deletions lattice_sphere_cmp.js
Original file line number Diff line number Diff line change
Expand Up @@ -125,6 +125,44 @@ function fromPointsConvex(pts) {
return g
}

const assert = (b) => {if(!b){throw("assert")}}

function fromPointsConvexPlaneℤ3(pts) {
allℤ = pts.every((p) => p.every((e) => Number.isInteger(e)))
console.assert(allℤ); assert(allℤ)

s01 = vec3.subtract(vec3.create(), pts[1], pts[0])
s02 = pts.reduce((a,p) =>
(p!=undefined && (
s = vec3.subtract(vec3.create(), p, pts[0]),
!vec3.equals([0,0,0], vec3.cross(vec3.create(), s01, s)))
)
? a=s : a,
{}
)

nor = vec3.cross(vec3.create(), s01, s02)
console.assert(b = !vec3.equals([0,0,0], nor)); assert(b)

d = vec3.dot(pts[0], nor)
samePlane = pts.every((p) => (d == vec3.dot(p, nor)))
console.assert(samePlane); assert(samePlane)

np = vec3.subtract(vec3.create(), pts[0], nor)

g = geom3.fromPointsConvex([np, ...pts])

p3 = g.polygons.reduce((a,p) =>
(p !== undefined && !p.vertices.some((v) => vec3.equals(v, np)))
? a=p : a,
{}
)

g.polygons = [p3, poly3.invert(p3)]

return g
}

// https://en.wikipedia.org/wiki/Sum_of_squares_function#k_=_3
// computed with PARI/GP: 12*qfbclassno(-4*p*q)
const r3 = ((p,q) => R3[P1.indexOf(p)][P1.indexOf(q)])
Expand Down Expand Up @@ -218,8 +256,8 @@ function main(params) {
outside.push(line3(scale(vec3.create(),fplane,fplane[3]),cent))
if(params.text===true)
vs.forEach((v)=>outside.push(vtxt(v,JSON.stringify(v))))
// workaround for issue #1347, draws complete face
outside.push(fromPointsConvex(vs))

outside.push(fromPointsConvexPlaneℤ3(vs))
}
normals.push(colorize([1,1,1],line3(cent, add(aux2,cent,fplane))))
})
Expand Down

0 comments on commit 6461507

Please sign in to comment.