Polygon Position
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 01:25, xxxxxxxx wrote:
Originally posted by xxxxxxxx
I am using a vector that represents the center of the polygon (polygonLocation) I am using another point in the polygon to determine the plane upon which the polygon rests. I am then using the cross product of those vectors to determine the up vector that is perpendicular to the plane.
This part is wrong.
Assume that A is the midpoint of your polygon and B is one of the polygon points.
N is the polygon normal.You have to build the cross product of (B-A) and N for one of the matrix axes, let's say for V1.
Then build the cross product of this new axis and the normal for the second matrix axis, V2.
The normal is the third axis of the matrix, V3.
The polygon midpoint is the matrix offset, V0 or off.cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 02:41, xxxxxxxx wrote:
Thanks Matthias,
I must not fully understand how to get the normal then. I thought that the normal was A - B. How to I get the value for N then?
THanks,
~Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 02:47, xxxxxxxx wrote:
Would I use
CalcFaceNormal()_<_h4_>_
~Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 02:49, xxxxxxxx wrote:
For triangles the normal is the cross product of two edges of the triangle. For quadrangles it's not exactly defined. The easiest way which gives a good result is too use the cross product of the diagonales.
PS. please read up on 3D geometry basics, it will help you in the long run. Most of it can be found through Google and Wikipedia.
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 03:06, xxxxxxxx wrote:
So to calculate the normal of a quad would I do something like this... Assuming that the points in a quad are A, B, C, and D
QUAD
N = (A-C)%(D-B)
TRIANGLE
N = (A-C)%(B-C)
SOmething like that?
Does CalcFaceNormal() do this for you? or is that something completely different?
Thanks a lot for your help,
~ Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 03:23, xxxxxxxx wrote:
yes and yes
source code of CalcFaceNormal()
inline Vector CalcFaceNormal(const Vector *padr, const CPolygon &v) { if (v.c==v.d) return !((padr[v.b]-padr[v.a])%(padr[v.c]-padr[v.a])); else return !((padr[v.b]-padr[v.d])%(padr[v.c]-padr[v.a])); }
cheers,
Matthias -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 12:00, xxxxxxxx wrote:
does CalcFaceNormal work for you?? when i use it i get only nonsense rotations.
cheers,
ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 12:32, xxxxxxxx wrote:
What are you trying to do?
~Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 12:41, xxxxxxxx wrote:
i am just trying to rotate some clones according to a surface normal. and using CalcFaceNormal results in this:
http://tempfiles.earthcontrol.de/nm01.jpg -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 12:56, xxxxxxxx wrote:
hmmmm... what are you using for the "padr" and for "v"... ?
in
CalcFaceNormal(padr, v)
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 13:05, xxxxxxxx wrote:
i am using this:
padr = ToPoint(baseMesh)->GetPointR(); v = ToPoly(baseMesh)->GetPolygonR();
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 13:12, xxxxxxxx wrote:
are you creating a rotation matrix based on a specific polygon. ? When I get home I'll show you how I am doing it. I'm driving home right now.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 13:17, xxxxxxxx wrote:
no, i am just using clone->SetRot(normal);
is this wrong?? -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 13:41, xxxxxxxx wrote:
I'm pretty sure that if you are trying to rotate objects based on a polygon then you will need to create a rotation matrix for that polygon and then make the matrix of the object you want to rotate equal to the rotation matrix. That's how I understand it.
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 13:51, xxxxxxxx wrote:
well, what is so strange is that it works for spheres, but not for terrain objects:
http://tempfiles.earthcontrol.de/nm02.jpg -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 14:20, xxxxxxxx wrote:
Here's how I am doing it.
//ROTATION MATRIX //GetPoints Vector c = polyLocation; //midpoint Vector p = points[lngA]; //polygon point Vector n = CalcFaceNormal(points, selectedPoly[lngI]); //normal Vector scale = Vector(Len(opMatrix.v1), Len(opMatrix.v2), Len(opMatrix.v3)); //Get Scale //Contruct Matrix Matrix rotMatrix; rotMatrix.off = p; //The base of the matrix rotMatrix.v1 = !((p - c)%n); //X axis points toward the second point rotMatrix.v2 = !(rotMatrix.v1 % n);//Y Axis is perpendicular to the X axis rotMatrix.v3 = !(n); //Z Axis is along the normal rotMatrix.v1 = !(rotMatrix.v1 * scale.x); rotMatrix.v2 = !(rotMatrix.v2 * scale.y); rotMatrix.v3 = !(rotMatrix.v3 * scale.z); //place the first object within the rotation matrix firstSelection->SetMg(rotMatrix); firstSelection->SetPos((opMatrix * polyLocation));// + firstSelection->GetRad().x);
This is working quite well now.. creating a rotation matrix gives me the exact rotation of that specific polygon.
Hope this helps you.
~Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 14:34, xxxxxxxx wrote:
thank you so much! now after incorporating the CalcFaceNormal like you did, everything works fine.
cheers,
Ello -
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 14:59, xxxxxxxx wrote:
Great. I'm glad it worked for you. I have got it now so everything is working 100% for me too.... Good day for us both!
~Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 15/03/2010 at 17:49, xxxxxxxx wrote:
okay .. 100% might have been a bit over zealous. I've got rotations working properly, but now I am having an issue with position.
I use
firstSelection->SetPos((opMatrix * polyLocation));
to set where the object will sit on the polygon (the center).
however, I get this...
I want for it to look like this...
You can see in the second image that the smaller cube is sitting so that the face is right against the polygon of the larger cube. THis is the result I am looking for.
I have tried adding the radius of the smaller cube to the position of the smaller cube but this only works correctly if the object is a cube, otherwise I get some funky results.
Is there a better way to get the postition of the cube to rest polygon to polygon. For example, could I temporarily change the axis of the smaller cube so that when I change the position of the smaller cube, the axis is at the outer edge, and then after I have changed the postiiton, change the axis back.. Is this possible?
How would I change the axis of a polygon object? I have looked at SetModelingAxis() but am not sure how I would use it...
Any help would be greatly appreciated.
Thanks a lot.
~Shawn
-
THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED
On 16/03/2010 at 01:01, xxxxxxxx wrote:
I don't know for sure how the tool is supposed to work. Can you post a screenshot of a different example with a more complex geometry?
cheers,
Matthias