Sign in to follow this  
genux

moving a 3d object vector from one place to another by a angle and speed

Recommended Posts

Hi all, I am trying to understand how to move a object from one place in 3D space to another 3D point in 3D space by only supplying the angle and speed to move at. The basics I have is to have a vector3D which has x,y,z cords (floats). and from this website, I think that to find out one 3D angle from another would float angleDifference(vector3D other) { double dot1Horizontal = other.x * this->x + other.z * this->z; double dot2Horizontal = other.x * other.x + other.z * other.z; double dot3Horizontal = this->x * this->x + this->z * this->z; double angleCosHorizontal = dot1Horizontal / (sqrt(dot2Horizontal) * sqrt(dot3Horizontal)); return acos(angleCosHorizontal) * (180 / PI); } Vector3D pointA {-1,-1,0}; Vector3D pointB {-1, 1,2} ; printf("angel %f\n", pointB.angleDifference(pointA)); = 63.43... but now how do you convert that angle to move a object in 3D space ?

Share this post


Link to post
Share on other sites
Is this a 'true' 3-d problem, or is it really a 2-d problem that happens to take place in 3-d space? (Specifically in the xz plane...) I ask because the code sample you posted appears to compute the angle between two vectors as projected onto the xz plane; in other words, there's really no '3-d' involved there.

Also, a direction in 3-d space cannot be fully specified with only a single angle (additional information is needed).

If you're just trying to get from point A to point B though, no angles are necessary - you can simply compute the direction vector from A to B as:
(B-A) / |B-A|

Share this post


Link to post
Share on other sites
Thanks jyk

I suppose your questions are helping my understand what it is I am trying to do as such.

What the main thing that I am trying to create is a laptop base with a laptop lid opening up, and thus the laptop lid needs to move from the closed position and then to the open position (90 degrees) which is where I thought that I needed the angle to move to. (pivoting on the laptop base back as such)

what does

(B-A) / |B-A|

mean ?

(B-A) /

I get B-A do first, but not sure what |B-A| means ? the | part that is.

so when I want to move from one point to another. I was thinking that if I calculate the arc from the start position and then end position and then move along that arc accordingly to a speed reference. Would that be the way of doing it ?

Share this post


Link to post
Share on other sites
Hey Genux,

What you are trying to do is rotate an object (your laptop lid) not move it.

Just wanted to clarify that so that you could get better help / find info better for yourself (:

Basically you need to rotate the lid over time along the x axis from 0 to 90 degrees, using the back of the lid (the part that you want to remain still as the lid opens) as the origin for the rotation.

Share this post


Link to post
Share on other sites

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