# cart2pol angle sin 0 to 2pi range instead of -pi to pi range?

21 views (last 30 days)

Show older comments

##### 0 Comments

### Answers (2)

John D'Errico
on 24 Oct 2018

The most efficient solution is to use mod. Thus...

theta = mod(cart2pol(x,y),2*pi);

This works, because what you really want is to add 2*pi to the angle, whenever the angle is less than zero. mod does exactly that. And, yes, mod works for non-integer moduli, and of course mod is vectorized, so it does everything you need without even a need for a loop.

##### 0 Comments

theodore panagos
on 7 Nov 2018

You can use the formula:

atan(x,y)=pi()-pi()/2*(1+sign(x))*(1-sign(y^2))-pi()/4*(2+sign(x))*sign(y)

-sign(x*y)*atan((abs(x)-abs(y))/(abs(x)+abs(y)))

there is x=x2-x1 and y=y2-y1

The formula give the angle from 0 to2pi for all the values x and y

For x=y=0 the result is undefined.

##### 0 Comments

### See Also

### Categories

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!