- 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

### Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.