jPCT-AE - a 3d engine for Android > Support
Rotation issue in JPCT-AE
mr.jack:
Hi everyone. So I was playing around with JPCT for Android, and discovered a small issue while playing with the default HelloWordAE example. Basically, I wanted to rotate the cube around on one of its edges. Everything went well, set a rotation pivot cube.setRotationPivot(value), then made the call cube.rotateX(value).
The strange thing I have discovered, is that when I set the rotation pivot, it must be set with with a difference from the original value. For example, if the Scale of the cube is 1, the rotation pivot values are
x=-1;
y=-1;
z=-2.4f;
so we add 0.4 to the value we need
if the scale is 10, then are the following values
x=-10;
y=-10;
z=-24f;
we add 4 to the original value
if I don't add the 0.4 or 4, the cube is not rotating on the edge, but is slightly displaced ???
Can anyone explain why this is happening? Wanted to create some things, but this is holding me for a while :-[ Or maybe I am missing something?
I appreciate any hints or information about this.
EgonOlsen:
I don't get your values even with the additional 4. If the cube is axis aligned (which it isn't by default when created by the Primitives class), then the bounding box of the cube is [-1.0, 1.0, -1.0, 1.0, -1.0, 1.0]. If it's not, the edges are rotated 45° around in the y axis. I don't know how you come to this 2 (+x) in your pivot!?
mr.jack:
I have read about the 45 degree thing, so I rotate the cube back by 45 (in radians) before the build process. I'll see tomorrow what is in my code, maybe I'm doing something wrong, still studying JPCT.
Here is the eclipse project with my experiments over the objects, maybe this can clear what magic I have done https://www.dropbox.com/s/z3mjq8eyqm25b24/cube.zip (I just edited the Helloworld plus added 2 new objects).
mr.jack:
I'm trying to figure out this code. By the way, I scale the cube to 10, so this is why I'm using bigger values (10, 20..).
Ok, have drawn a polyline on the base of the cube, just to have a reference.
And made a rotation without setting a pivot (so it should be around it's center point, which should be 0,0,0 have made even a translate, and tried setOrigin()). Strangely when making .log calls and inspecting using cube.getRotationPivot() it shows these coordinates
(-7.947286E-8,0.0,0.0)
Not sure why x is -7.947286E-8 ...
EgonOlsen:
That's caused by inaccuracies when dealing with floats. You can ignore them. -7.947286E-8 is actually 0.
Navigation
[0] Message Index
[#] Next page
Go to full version