I don't think 90 degrees bug in rotation has anything to do with this
problem. I think it is because you subtract the head from the hair leaving
a knife edge and then union it back with the head. That union has a lot of
exactly coincident faces in theory but in practice they are slightly off
due to number representation. The differences are too small to represent in
floats, so the topology gets corrupted by truncation.
I get around the rotation bug by using own version.
module rotate(angle) // built-in rotate is inaccurate for 90
degrees, etc
{
a = len(angle) == undef ? [0, 0, angle] : angle;
cx = cos(a[0]);
cy = cos(a[1]);
cz = cos(a[2]);
sx = sin(a[0]);
sy = sin(a[1]);
sz = sin(a[2]);
multmatrix([
[ cy * cz, cz * sx * sy - cx * sz, cx * cz * sy + sx * sz, 0],
[ cy * sz, cx * cz + sx * sy * sz,-cz * sx + cx * sy * sz, 0],
[-sy, cy * sx, cx * cy, 0],
[ 0, 0, 0, 1]
]) children();
}
The built in sin and cos functions are accurate in degrees but they are not
used in the rest of OpenSCAD. I can fix that if the PR is likely to be
accepted.
On 1 March 2017 at 03:59, adrian adrianh.bsc@gmail.com wrote:
Thanks Wolf,
I don't know the API yet, but that a 90 degree rotation causes degenerate
faces is definitely a bug. I'll try and take a look at this sometime in
the
next couple of weeks as this is completely unacceptable.
--
View this message in context: http://forum.openscad.org/STL-
is-unreadable-or-not-watertight-tp20642p20678.html
Sent from the OpenSCAD mailing list archive at Nabble.com.
OpenSCAD mailing list
Discuss@lists.openscad.org
http://lists.openscad.org/mailman/listinfo/discuss_lists.openscad.org