Hi, Everybody!
I was asking already about rotations around an arbitrary axis and got clear answers posted in #1219 and #1220.
But it's still unclear how to rotate a cube around one of it's edges (could anyone to share such a code if it exists).
There were posted two functions in #1219:
function rotateAroundObjectAxis( object, axis, radians ) { .. }
and
function rotateAroundWorldAxis( object, axis, radians ) { .. }
They allow me to rotate a cube about an arbitrary axis that goes through the center of it's bounding box.
What I need is to rotate an object around an arbitrary axis which is not necessarily goes though the object's center.
How to do that correctly?
Sorry, if I'm a bit annoying about that but I want to implement such a functionality.
Thanks.
P.S. It seems that I need a function that looks like:
function rotateAroundArbitraryAxis( object, axisDirection, axisBasePoint, radians ) { .. }
by axisBasePoint I mean the point the specified axis goes through.
I read on the Internet that such a rotation should be done in several steps:
Do I understand it correctly?
How to perform such an operation with three.js?
I tried to multiply different (translation/rotation) matrices with each other in three.js but did not get the desired result :-(
Many thanks.
What about something like this?
var dummy = new THREE.Object3D();
dummy.position.x = 50;
dummy.position.z = 50;
scene.add( dummy );
var cube = new THREE.Mesh( new THREE.CubeGeometry( 100, 100, 100 ), new THREE.MeshBasicMaterial() );
cube.position.x = - 50;
cube.position.z = - 50;
dummy.add( cube );
Thanks for the reply.
Unfortunately, the cube in your example still rotates around it's local axis that goes through it's center no matter what I call:
function rotateAroundObjectAxis( object, axis, radians ) { .. }
or
function rotateAroundWorldAxis( object, axis, radians ) { .. }
What I really want to figure out is how to shift the axis of rotation of a particular object.
Many thanks.
Did you try rotating the dummy/container instead of the cube?
Good point. It works this way.
But why it's not so straitforward :-) ?
I thouht it should be some matrices arithmetic using the function I suggested in my initial post or something more convenient.
function rotateAroundArbitraryAxis( object, axisDirection, axisBasePoint, radians ) { .. }
by axisBasePoint I mean the point the specified axis goes through.
With kind regards.
@oosmoxiecode Uops! Yeah, forgot that on my snippet.
@Landlord Well, it's straightforward to me. It doesn't even require matrices knowledge ;) I guess is just a matter of thinking differently... Either way, internally, the same matrix calculations are happening.
Most helpful comment
What about something like this?