[Code] Skew Transformation from axes
-
Dot product is 0 if the vectors are perpendicular.
It is 1 if they have the same direction (assuming they are normalized) and -1 for opposite direction.Fredo
-
@fredo6 said:
"assuming they are normalized"
Does normalizing first remove any variance that could throw off the comparison (with -1, 0 or 1) afterward ?
Or would it be safer to use:
vec1.perpendicular?(vec2)
vec1.parallel?(vec2) && vec1.samedirection?(vec2)
vec1.parallel?(vec2) && ! vec1.samedirection?(vec2)
I also wonder about ThomThom's magic comparison.
Is it the same on 64-bit SketchUp ?
I mean why 10 decimal places ? Is it SketchUp's internal tolerance ?
Ie, (0.001 x 0.001 x 0.001) ... which is 9 decimal places.
-
If you have a component instance that has been skewed, how do you determine which axis is skewed?
-
@fredo6 said:
...and there is the magic formula by thomthom to check if two faces are coplanar (actually have parallel planes)
face1.normal % face2.normal > 0.9999999991
Fredo
hm... this must be something from and old version of CleanUp? It was never reliable. What I do now is take all the vertices of the faces and generate a best-fit plane - then I check if each of the vertices is on the plane.
-
Well, I think I found it it an old post!. And it seems to work fine for the purpose.
Indeed there are alternate methods, the problem being to detect the false positive, that is faces that would be co-planar by the formula, but would not in the model drawn by Sketchup.
Fredo
-
@thomthom said:
@fredo6 said:
...and there is the magic formula by thomthom to check if two faces are coplanar (actually have parallel planes)
face1.normal % face2.normal > 0.9999999991
hm... It was never reliable.
I was hoping you'd answer the questions I posed (above) in this post:
http://sketchucation.com/forums/viewtopic.php?f=180%26amp;t=65068%26amp;view=unread#p597160 -
Face.normal returns a normalized vector.
-
@fredo6 said:
Well, I think I found it it an old post!. And it seems to work fine for the purpose.
Indeed there are alternate methods, the problem being to detect the false positive, that is faces that would be co-planar by the formula, but would not in the model drawn by Sketchup.
Fredo
Checking the plane might in some cases yield false for some cases where SU is able to merge. But this is rare. Comparing normal had the opposite of yielding true in cases where SU would not be able to merge.
-
@dan rathbun said:
@thomthom said:
@fredo6 said:
...and there is the magic formula by thomthom to check if two faces are coplanar (actually have parallel planes)
face1.normal % face2.normal > 0.9999999991
hm... It was never reliable.
I was hoping you'd answer the questions I posed (above) in this post:
http://sketchucation.com/forums/viewtopic.php?f=180%26amp;t=65068%26amp;view=unread#p597160As Fredo mentions, face.normal already return a unit vector. The issue is that comparing vectors is too unreliable in edge cases.
-
So what is the solution here?
Is it some extra text in the API docs explaining how best to test for face coplanarity ?
Or would it be a new API method for the
Sketchup::Face
class:
face.coplanar_with?(other_face)
or a module method?:
Geom::faces_coplanar?(face1,face2)
-
No sure where it would fit in the docs. Maybe we can add a Wiki section on the GitHub repo that host the new docs.
This scenario is so common though that a
face.coplanar_with?(other_face)
might be a nice addition.
Advertisement