佚名通过本文主要向大家介绍了已知ax1 y1 bx2 y2,ax1 bx2,已知ax1 y1,若点ax1 y1,东风风神ax1等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:两个物体Ax1, y1、Bx2, y2,将物体A旋转至面向目标,如何求该角度?
描述:
解决方案1:
描述:
已知物体A的原角度
开发游戏时遇到的一个问题,希望得到大家帮助
解决方案1:
将物体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}} $$
个人理解是这样,如有错误请指出,谢谢> <
解决方案2:这里有一个例子,子弹朝向鼠标:
http://gamemechanicexplorer.com/#bullets-3
如果子弹是A,鼠标是B,那么角度就是
javascript
angle = Math.atan2(B.y - A.y, B.x - A.x);
atan2 函数是 atan(n) 的一个复杂的封装,很常用。