编程中的数学。获得抛物线上的角度

时间:2013-10-15 01:57:40

标签: math geometry unity3d

我正在学习Unity3d +一些我已经忘记的基本数学 继承人我现在在做什么..

你可以告诉这个形状的两侧形成一个抛物线。 它们离中心的距离是基本半径+高度平方*乘以常数(此图中为0.05)

生成此代码的代码非常简单..

for (int changer = 1; changer > -2; changer-=2) {

        Vector3 newPos = new Vector3(
             transform.position.x
            ,transform.position.y + currentheight*changer
            ,transform.position.z - RadiusAtZero -(Mathf.Pow(currentheight,2)*CurveMultiplier)
            );

        var newFleck = Instantiate(Fleck, newPos, Quaternion.identity)as GameObject;
        newFleck.transform.RotateAround(transform.position,Vector3.up,angle*changer);

        FleckList.Add(newFleck );

        }

通过for循环和'changer'反映所有内容所以'currentheight'实际上只是与抛物线中心线的距离。

无论如何,我想让立方体(或我称之为斑点)成角度,以便它们与我制作的抛物线相切。
我需要确定特定点处抛物线的切线角度 我找到了this

  

在(1,-2)处找到y = x ^ 2 -3的切线,我们可以同时求解   y = x ^ 2 -3且y + 2 = m(x-1)并将判别式设为等于零

但我不知道如何实现这一点。另外我认为我的'CurveMultiplier'常数使我的抛物线方程与那个不同。
有人可以编写一些确定角度的代码吗? (也可以解释一下)

更新。 这是使用等式的导数的固定版本。 (我也从盒子改为四面体和其他一些肤浅的东西) enter image description here

1 个答案:

答案 0 :(得分:2)

最简单的解决方案是使用抛物线方程的导数。

在你的图片中我会假设Y是垂直的,X是水平的,Z是屏幕内外的。然后根据您的描述旋转抛物线:

f(h) = 0.05*h^2 + R

h是高度,R是基础半径)。如果您想象一个包含Y轴的平面,您可以以任意角度围绕Y轴旋转平面,并且双抛物线看起来相同。

f(x) = C*h^2 + R形式的抛物线方程的导数是f'(x) = 2*C*h,它是h处切线的斜率。在这种特定情况下,那将是:

f'(h) = 0.1*h

由于横截面相对于X和Z轴具有一个角度,因此该切线也将具有相同的角度分量(您有一个旋转的抛物线)。

根据f(h)中常量的单位,尤其是0.05值,您可能需要调整此值以获得正确的结果。