两个物体A(x1, y1)、B(x2, y2),将物体A旋转至面向目标,如何求该角度?

发布于 2022-08-31 20:15:23 字数 48 浏览 26 评论 0

已知物体A的原角度

开发游戏时遇到的一个问题,希望得到大家帮助

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

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

发布评论

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

评论(2

动听の歌 2022-09-07 20:15:23

这里有一个例子,子弹朝向鼠标:
http://gamemechanicexplorer.com/#bullets-3

如果子弹是A,鼠标是B,那么角度就是

javascriptangle = Math.atan2(B.y - A.y, B.x - A.x);

atan2 函数是 atan(n) 的一个复杂的封装,很常用。

多孤肩上扛 2022-09-07 20:15:23

将物体A旋转至面向目标

我理解的是,既然能“面向目标”,那么这里的物体 A 不仅有位置信息,也有朝向信息。当前的A的朝向这里没有给出,假设为

$$ \vec{a} = (x_a, y_a) $$

假设旋转后的方向为

$$ \vec{a'} $$

题图

则由图很容易得出,

$$ \vec{a'} = (x_2 - x_1, y_2 - y_1) $$

问题是求向量a和向量a'的夹角。点积就可以算出来了。

$$ cos<\vec{a}, \vec{a'}> = \frac{\vec{a} · \vec{a'} }{ |\vec{a}| · |\vec{a'}|} $$
$$ = \frac{x_a(x_2 - x_1) + y_a(y_2 - y_1)}{\sqrt{x_a^2+y_a^2}\times\sqrt{(x_2-x_1)^2 + (y_2-y_1)^2}} $$

个人理解是这样,如有错误请指出,谢谢> <

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文