极坐标和笛卡尔计算不完全有效?

发布于 2024-09-04 08:20:30 字数 329 浏览 10 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

離殇 2024-09-11 08:20:30

我在这里可以看到两个可能的问题:

  • atan2 在我所知道的每种语言中按顺序 (y,x) 获取参数。您传入了 (x,y)。
  • cossin 接受以弧度为单位的参数,但您以度为单位给出它们。删除 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 and sin take parameters in radians, but you're giving them in degrees. Remove the multiplication by 180/pi to keep the angle in radians.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文