【发布时间】:2019-06-28 19:38:36
【问题描述】:
我一直在制作高尔夫游戏。我可以很容易地使用运动学方程绘制球的预测运动抛物线。也就是说,我已经隔离了其运动的 x、y 和 z 分量(它是一个 3D 抛物线)。现在我正在尝试在旋转抛物线时如何绘制这条预测线。当 z 分量等于 0 并且抛物线实际上是一条直线时,我已经成功地做到了这一点。当运动中有 z 分量时,我遇到了困难。
我一直在使用这段代码找到z分量抛物线的方程,知道抛物线上的三个点(其中一个总是(0,0)一个是顶点,最后一个(最大距离,0) ):
public void CalcParabolaVertex(float x1, float y1, float x2, float y2, float x3, float y3, out double xv, out double yv)
{
double denom = (x1 - x2) * (x1 - x3) * (x2 - x3);
double A = (x3 * (y2 - y1) + x2 * (y1 - y3) + x1 * (y3 - y2)) / denom;
double B = (x3 * x3 * (y1 - y2) + x2 * x2 * (y3 - y1) + x1 * x1 * (y2 - y3)) / denom;
double C = (x2 * x3 * (x2 - x3) * y1 + x3 * x1 * (x3 - x1) * y2 + x1 * x2 * (x1 - x2) * y3) / denom;
xv = -B / (2 * A);
yv = C - B * B / (4 * A);
}
知道抛物线 y = ax2 + bx + c 如何编码这条抛物线的旋转?
任何帮助将不胜感激!
【问题讨论】:
-
问题很不清楚。什么是轴方向? (如果你使用重力)。抛物线是如何定义的?它应该围绕什么旋转?代码片段旨在找到二维抛物线的“顶点” - 它是如何相关的?
-
我很抱歉不够清楚。球在 3D 空间中移动,但它的侧向速度与 2D 抛物线速度的水平分量相当,因为它具有初始速度,然后随着时间的推移作用力,它在射弹的最大范围内拦截 x。在上面的脚本中,双精度数 A、B 和 C 是 a y = ax2 + bx + c 二次方程中的 a、b 和 c 部分。抛物线始终起源于(0,0),我想围绕原点旋转它。
-
绕原点旋转 - 在 OXY 平面内?
-
是的,在 OXY 平面上。
标签: math