2015-12-04 35 views
0

我通过使用atan2(-6/35)来计算角度(-6/35)。 结果是-9.7275785514016047如何从atan2角度回到坐标

我们回去我使用的公式从Wikipedia

enter image description here

distance = sqrt(6*6+35*35); 
angleRelativeToPatternOrigin = -9.7275785514016047; 

double x1 = distance * cos(angleRelativeToPatternOrigin); 
double y1 = distance * sin(angleRelativeToPatternOrigin); 

我exptected得到coordinares (-6/35) 但我得到了(-33.895012797701419/10.589056022311761

所以我觉得这是不对的因为atan2定义在象限和sincos仅限于。

这是正确的吗? 如何做到这一点?

编辑:

现在,首先我描述一个坏的方式我的问题很抱歉。 我居然做了以下

int main(int argc, char* argv[]) 
{ 
    int x = -6; 
    int y = 35; 
    double radian = atan2(x,y); // this was wrong. atan2(y,x) is correct. 
    double degree = radian * (360/(2 * 3.14159265358979323846)); 
    double distance = sqrt(6*6+35*35); 

    double x1 = distance * cos(degree); // Wrong because I used degree 
    double y1 = distance * sin(degree); // instead of radian 

    return 0; 
} 
+4

_“我通过使用'ATAN2(计算的(-6/35)的角度-6/35)''_不,你没有。该函数有两个参数,而不是一个。 –

+0

@Lightness轨道上的竞赛 我用-6作为参数1和35作为参数2 –

+0

这不是你的问题所说的。 –

回答

3

为了既使用ATAN2函数来获得一个角度,并再使用罪& COS要回笛卡尔坐标,你需要稍微不同地使用它们,正如你已经说过的那样。

由于LightnessRacesInOrbit和user38034都表示,atan2函数需要2个参数。第一个是y,第二个是x。

考虑以下JS片段:

var x = -6.0; 
var y = 35.0; 

var at = Math.atan2(y, x); 
console.log(at); 

var dist = (x*x) + (y*y); 
dist = Math.sqrt(dist); 
console.log(dist); 

var x1 = dist * Math.cos(at); 
var y1 = dist * Math.sin(at); 

console.log({x:x1, y:y1}); 

从此片段的输出是:

1.740574600763235 
35.510561809129406 
Object {x: -5.999999999999998, y: 35} 
1

你在错误的道路使用atan2。的atan2函数声明为:

double atan2 (double y, double x); 

所以角度:

double angle = atan2(35, -6); // 1.74057 radians or 99.72758 degree 
+0

谢谢。 我改变了它,现在我得到99.72758度,但坐标仍然是错误的(24.654041707636729 | 25.557351730531639) –

+0

@R_Valdez如何显示你在做什么,这样有人可以告诉你它有什么问题,而不是希望他们能猜到? –

+1

@R_Valdez C++(以及我知道的任何语言)中的所有三角函数都使用弧度,而不是度数。 '距离* cos(1.74057)'给出'-6','distance * sin(1.74057)'给出'35'。 – user38034