Mathematics Stack Exchange is a question and answer site for people studying math at any level and professionals in related fields. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I'm not very mathematical but I'm working on a 3d program and for this part I simply want to draw a line.

I know the starting vector $(x,y,z)$, the length r of the line and the bearing/angle. I want to calculate the endpoint so I can draw the line.

I had a look around and I'm using the following. Let $\theta$ be the angle in radians, and let $d$ be the distance. Then the other endpoint is $(x', y', z')$, where:

$$x' = r\cos(\theta) + x$$ $$y' = y$$ (the endpoint 'height' should be the same as the start point)

$$z' = r\sin(-\theta) + z$$

is this correct?


share|cite|improve this question

Your formulation will work for a line drawn in a plane parallel to the x-z plane, but I'm not clear why the angle in radians for $z$ is negative, where it is positive in the formulation for $x$. With $y$ measuring height ("is held constant"), then you need to be clear about what the reference axis for your angle $\theta$.

I'd suggest the following:

Given starting point $(x, y, z)$, with $r = $ length, $\theta$ = the measure of the angle (counter-clockwise rotation) with respect to the positive $x$-axis, in radians, then your endpoint $(x', y', z')$ is given by:

$$x' = r\cos\theta + x$$ $$y' = y$$ $$z' = r\sin\theta + z\;\;$$

Using graphic below, this will:

$\theta=0$: East being aligned with positive x-axis

$\theta=\frac\pi2 = 90^\circ$: South being aligned with positive z-axis

$\theta=\pi = 180^\circ$: West being aligned with negative x-axis

$\theta=\frac{3\pi}2 = 270^\circ$: North being aligned with negative z-axis

EDIT: enter image description here

Using this coordinate system, with y-height, using x' and y' as formulated above, then the line with ending point $(x', y', z')$ will lie on the plane y' = y, parallel to the x-z plane (where y = 0), and if $z' = r\sin(-\theta) + z$, as you propose, it will point in the direction of the north-east quadrant (towards the quadrant with $x > 0,\; z< 0$), with $\theta$ measured with respect to the positive x-axis. On the other hand, given $x', y'$ and using $z' = r\sin\theta + z$, as I suggest, then the line directed from $(x, y, z)$ towards $(x', y', z')$ will point to the south-east quadrant, with $\theta$ measured with respect to the positive x-axis.

share|cite|improve this answer
I'm not sure if I understand, would the vector always be directed south-east irrespective of r? – drunkmonkey Jan 12 '13 at 22:22
Yes, r has nothing to do with direction, only with length. The $-\theta$ in the formulation for $z$ makes line directed south east. If positive, $z = r \sin\theta + z_0$ would direct it toward the northeast, toward (positive quadrant.) – amWhy Jan 12 '13 at 22:25
Sorry, I meant theta (which should affect the direction). The angle I have is supposed to represent a bearing so for example if theta was 350 degrees, I should have a vector with direction just west of North? Thanks for your help – drunkmonkey Jan 12 '13 at 22:38
Does the graphic help at all? I'll work with you, on this. It's just a matter of being clear about the angle theta is measuring, with respect to which axis? for x′=rcosθ+x, it would seem to need to be measured with respect to the positive x-axis. A 350 degree angle, with respect to the positive x-axis, would put you just south of the positive x-axis: 350 degrees = -10 degrees. (positive x, negative z direction) – amWhy Jan 12 '13 at 23:15

If you treat $\theta$ as a bearing then your formultaion of $x′=rcos(θ)+x$, $y′=y$, $z′=rsin(−θ)+z$ will lead to:-

$\theta=0$: North being aligned with positive x-axis

$\theta=\frac\pi2$: East being aligned with negative z-axis

$\theta=\pi$: South being aligned with negative x-axis

$\theta=\frac{3\pi}2$: West being aligned with positive z-axis

Is this what you want?

share|cite|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.