我试图制作一个三角形(等腰三角形)在屏幕上移动,同时当用户按下方向键(如右或左)时稍微旋转它.
我希望三角形的鼻子(顶点)始终引导三角形.(就像那个古老的小行星游戏).
我的问题在于背后的数学问题.在每个X时间间隔,我希望三角形在"某个方向"移动,我需要帮助找到这个方向(x和y增量/减量).
我可以找到三角形的中心点(Centroid),我有最高x和y点,所以我有一个线矢量可以使用,但不知道"如何"使用它.
我认为它与旧的Sin和Cos方法以及三角形旋转的量(角度)有关,但我对这些东西有点生疏.
任何帮助是极大的赞赏.
vy/vx的反正切(反正切),其中vx和vy是(质心 - >尖端)向量的分量,为您提供向量所面对的角度.
经典的反正切法为您提供了归一化为-90° 幸运的是,您的标准库应该提供atan2()函数,该函数将vx和vy分别作为参数,并返回0°和360°之间的角度,或-180°和+ 180°.它还将处理vx = 0的特殊情况,如果你不小心,这将导致除以零. 请参阅http://www.arctangent.net/atan.html或只搜索"arctangent". 编辑:为了清晰起见,我在帖子中使用了学位,但Java和许多其他语言/库在弧度上工作,其中180°=π. 您也可以将vx和vy添加到三角形的点以使其沿"向前"方向移动,但要确保向量归一化(vx²+vy²= 1),否则速度将取决于三角形的大小.