- Home /
How can I calculate the Vector3 b using Vector 3 a pos with an angle?
I am trying to calculate a point in space using some parameters and a starting point. The code to do this in 2D space is:
Vector3 startLimbA = new Vector3(0,1,0);
float length = 2;
float angle = 45;
private void CalculateB()
{
float newx = length * Mathf.Cos(radian(angle));
float newy = length * Mathf.Sin(radian(angle));
float NA = ??;
startLimbB = new Vector3(startLimbA.x + newx, startLimbA.y + newy, startLimbA.z + NA);
}
If anyone could give me a solution to his problem and/or point me in the direction of some resources that would be greatly appreciated. :)
Answer by JVene · Jul 14, 2018 at 06:38 PM
@JamesEvanNeal, a lot depends on the nature of 3D orientation, which is to say if you have a rotation to apply that isn't aligned on an axis.
In the example code you've given the angle assumes the rotation is on the Z axis (producing new x and y coordinates). In that case NA is 0, because when the rotation as aligned to the Z axis this way, z will not change.
Also, length is assumed to be on the X axis before the rotation. That's implied by your particular use of the rotation formula (the y portion of the classical rotation has been omitted because y is zero).
If the rotation isn't aligned on an axis, you'd probably express that as a Quaternion. The Quaternion could be created from Euler angles with
Quaternion q = Quaternion.Euler( x, y, z );
where each x, y and z parameter is an angle of rotation in degrees for each axis. This results in what is visually a rotation that may not be aligned to an axis.
To use q, a Quaternion, similarly to your 2D example, you could:
Vector3 va = new Vector3( 2, 0, 0 );
Vector3 vr = ( q * va ) + startLimbA;
The equivalent to your example, where NA is zero because this is a rotation on the Z axis is:
Vector3 va = new Vector3( 2, 0, 0 );
Quaternion q = Quaternion.Euler( 0, 0, 45 );
Vector3 startLimbA = new Vector3( 0, 1, 0 );
Vector3 vr = ( q * va ) + startLimbA;
Your answer
Follow this Question
Related Questions
Simple vector math help. 1 Answer
How to get a vector3 (postion) 1 unit away from another in the direction of a 3rd vector3? 2 Answers
how do i keep a gameobject in between the union of 2 or more than 2 circles 0 Answers
Given a vector, how do i generate a random perpendicular vector? 5 Answers
Result of subtracton vectors 1 Answer