极坐标和笛卡尔计算不完全有效?
double testx, testy, testdeg, testrad, endx, endy;
testx = 1;
testy = 1;
testdeg = atan2( testx, testy) / Math::PI* 180;
testrad = sqrt(pow(testx,2) + pow(testy,2));
endx = testrad * cos(testdeg);
endy = testrad * sin(testdeg);
这一切的所有部分似乎都是正确的, 除了 endx 和 endy 应该 = testx 和 testy 他们在手工计算时会这样做。
double testx, testy, testdeg, testrad, endx, endy;
testx = 1;
testy = 1;
testdeg = atan2( testx, testy) / Math::PI* 180;
testrad = sqrt(pow(testx,2) + pow(testy,2));
endx = testrad * cos(testdeg);
endy = testrad * sin(testdeg);
All parts of this seem to equate properly,
except endx and endy should = testx and testy
they do when calculating by hand.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我在这里可以看到两个可能的问题:
atan2
在我所知道的每种语言中按顺序 (y,x) 获取参数。您传入了 (x,y)。cos
和sin
接受以弧度为单位的参数,但您以度为单位给出它们。删除 180/pi 的乘法以保持角度为弧度。I can see two possible problems here:
atan2
takes the parameters in order (y,x) in every language I'm aware of. You passed in (x,y).cos
andsin
take parameters in radians, but you're giving them in degrees. Remove the multiplication by 180/pi to keep the angle in radians.