Sign in to follow this  

Vectors

This topic is 2341 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi,
I have a cube in 3d space with the following dimensions (2, 3, 0.75)
now i am going to rotate this cube on the Z axis by -90.

so now my cube is (3, -2, 0.75)

Now with this rotated cube i want to add a change delta of (0, 3, 0) however after the rotation above adding 3 to my Y axis is no longer correct.

How can i work this out?

Gary

Share this post


Link to post
Share on other sites
I'm afraid you need to be more precise with your language for me to understand what you are asking.
[list][*]Do you really mean dimensions of a cube and not coordinates of a point?[*]What is a "change delta"? Is it a translation?[*] What do you mean by "no longer correct"? Perhaps you wanted to apply the translation before the rotation, or do something after the rotation that would have the same effect?[/list]If you could post a diagram it would be good.

Share this post


Link to post
Share on other sites
Hi Alvaro,

Okay lets make P= (2, 3, 0.75) a point in space.
If i rotate P by a rotation matrix with Z=-90
P now equals (3,-2,0.75)
and delta is a translation d=(0,3,0)

Now i want to add the delta (0, 3, 0). which is an increase in the Y axis to P (3, -2, 0.75), however after rotation P.y is actually P.x

How do i work out which part of P the x, y or z to add the 3 in the y translation too.



Gary

Share this post


Link to post
Share on other sites
okay change of plan, sorry

I have a vector(1,2,3) defining how much to change width, height and depth dimensions of a cube.
lets define the cube as being 2 wide, 3 high and 1 deep.
I also know the amount of rotation applied to the cube. (0,0, 90)
so the cube after rotation is now 3 wide, -2 high and still 1 deep.

I then apply this rotation to the change vector(1, 2, 3)

before the cube had rotation adding this change (1,2,3) was easy. however after the rotation the X and Y axis have swapped.

so now after rotation of the change, change will = (-2, 1, 3)

which to me seems correct, this says to me, grow the cube -2 in the X direction, 1 in the Y direction, and 3 in the Z direction.

however if i change my rotation to (45, 0, 90)
apply rotation to change vector(1, 2, 3)
so now after rotation of the change, change will = (0.70, 1, 3.535)

which seems incorrect, this says grow the cube 0.7 in X direction, 1 in the Y direction and 3.535 in the Z direction.

because Z is now X dimension, X is now Y dimension and Y is now Z dimension



Gary

Share this post


Link to post
Share on other sites
I don't understand cubes with different dimensions, and I understand even less cubes with negative dimensions.

My guess is that you are trying to manipulate axis-aligned boxes, but after a rotation they are no longer axis aligned, which is making your computations break.

Perhaps you should take a step back and describe why you are interested in these modifications of dimensions of "cubes".

Share this post


Link to post
Share on other sites
I am using directx and defining cubes to represent blocks of wood. with these blocks of wood i am building a cabinet
so a standard sheet of plywood might be 4 foot X 4 foot X 3/4 inch, then this piece of plywood might be rotated to become the left side of the cabinet. rotated on the Y axis by -90 degrees
User might require the cabinet depth or height to change by a certain amount. so i need to know which dimension of the plywood sheet to add the change too. since after the -90 degree rotation the axis are swapped.

Share this post


Link to post
Share on other sites
I don't know if your familiar with vb.net but here is the code.

[code]

Dim v as new vector3(1,2,3)
Dim radian as single = 0.0174532925
Dim qx as Quaternion = Quaternion.RotationAxis(new Vector3(1,0,0), 45 * radian)
Dim qy as Quaternion = Quaternion.RotationAxis(new Vector3(0,1,0), 0 * radian)
Dim qz as Quaternion = Quaternion.RotationAxis(new Vector3(0,0,-1), -90 * radian)
Dim zz as matrix = Matrix.RotationQuaternion(qz * qx * qy)
Dim rb as vector3 = vector3.TransformCoordinate(v, zz)

[/code]


if i change qx to 0 degree and qz to 90 i get acceptable results i think

same with qx to 0 and qz to -90

and if i leave the code with 45,0,-90 it seems okay i think

Gary

Share this post


Link to post
Share on other sites
[quote name='alvaro' timestamp='1311014858' post='4836941']
I don't understand cubes with different dimensions, and I understand even less cubes with negative dimensions.

My guess is that you are trying to manipulate axis-aligned boxes, but after a rotation they are no longer axis aligned, which is making your computations break.

Perhaps you should take a step back and describe why you are interested in these modifications of dimensions of "cubes".
[/quote]

Yes, this may be the problems, axis-aligned boxes, making computations break

Gary

Share this post


Link to post
Share on other sites
[quote name='garusher' timestamp='1311016522' post='4836964']
I don't know if your familiar with vb.net but here is the code.

[code]

Dim v as new vector3(1,2,3)
Dim radian as single = 0.0174532925
Dim qx as Quaternion = Quaternion.RotationAxis(new Vector3(1,0,0), 45 * radian)
Dim qy as Quaternion = Quaternion.RotationAxis(new Vector3(0,1,0), 0 * radian)
Dim qz as Quaternion = Quaternion.RotationAxis(new Vector3(0,0,-1), -90 * radian)
Dim zz as matrix = Matrix.RotationQuaternion(qz * qx * qy)
Dim rb as vector3 = vector3.TransformCoordinate(v, zz)

[/code]


if i change qx to 0 degree and qz to 90 i get acceptable results i think

same with qx to 0 and qz to -90

and if i leave the code with 45,0,-90 it seems okay i think

Gary
[/quote]

Nope, thats not right

Share this post


Link to post
Share on other sites
A rotated box is, in general, no longer axis-aligned and it doesn't make sense to speak about "dimensions" in that way. A rotated box isn't a scaled cube! If you want to represent a scaled and rotated cube in space you have to use a different representation for your transformations (a matrix or a vector for the scale factors - what you call "dimensions" - and a quaternion or euler angles for the rotation). I do not understand what your image represents. :huh:

Share this post


Link to post
Share on other sites

This topic is 2341 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this