gpt4 book ai didi

math - 用于游戏开发的三角数学

转载 作者:行者123 更新时间:2023-12-03 18:21:35 27 4
gpt4 key购买 nike

我正在尝试制作一个三角形(等腰三角形)在屏幕上移动,同时在用户按下方向键(如向右或向左)时稍微旋转它。

我希望三角形的 Nose (顶点)始终引导三角形。 (就像那个古老的小行星游戏)。

我的问题是这背后的数学问题。在每个 X 时间间隔,我希望三角形向“某个方向”移动,我需要帮助找到这个方向(x 和 y 增量/减量)。

我可以找到三角形的中心点(质心),并且我有最顶部的 x 和 y 点,所以我有一个线向量可以使用,但没有关于“如何”使用它的线索。

我认为这与旧的 Sin 和 Cos 方法以及三角形旋转的数量(角度)有关,但我对这些东西有点生疏。

任何帮助是极大的赞赏。

最佳答案

vy/vx 的反正切(反正切),其中 vx 和 vy 是您的 (centroid->tip) 向量的分量,为您提供向量所面对的角度。

经典反正切为您提供标准化为 -90° < r < +90° 度的角度,但是,因此您必须根据结果的符号和 vx 的符号从结果中添加或减去 90 度。

幸运的是,您的标准库应该提供一个 atan2() 函数,该函数将 vx 和 vy 分别作为参数,并返回一个介于 0° 和 360° 或 -180° 和 +180° 之间的角度。它还将处理 vx=0 的特殊情况,如果您不小心,这将导致被零除。

http://www.arctangent.net/atan.html或者只是搜索“反正切”。

编辑:为了清楚起见,我在帖子中使用了度数,但 Java 和许多其他语言/库以 180° = π 的弧度工作。

您也可以在三角形的点上添加 vx 和 vy 以使其沿“向前”方向移动,但请确保向量已归一化 (vx² + vy² = 1),否则速度将取决于三角形的大小。

关于math - 用于游戏开发的三角数学,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/220439/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com