【问题标题】:Maths in programming. Get the angle at point on a parabola编程中的数学。获取抛物线上点的角度
【发布时间】:2013-10-22 17:17:41
【问题描述】:

我正在学习 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”常数使我的抛物线方程与那个不同。
有人可以编写一些确定角度的代码吗? (也可以解释一下)

更新。 这是使用方程的导数的固定版本。 (我也从盒子变成了四面体和其他一些肤浅的东西)

【问题讨论】:

  • 该链接指向一种无需使用微积分即可找到切线的方法。但是在这种情况下,为什么不直接使用抛物线函数的导数呢?导数y' = 2*x 给出了x 处的斜率。
  • Aaaahh 什么是衍生品!!?苏兹。你能解释一下吗? y 后面的撇号是什么?
  • 抱歉,我不确定您是否熟悉微积分。导数是函数在给定点的极小变化率。这与该点的函数斜率相同。 “撇号”是一种表示 y = f(x) 的导数的符号(写成 y'f'(x)dy/dx 等)。在给定的xf'(x)y' 的值是f(x) 在该点的斜率。
  • 所以在我的情况下.. 角度会是 Y 值的两倍(与我看到的示例相比,我的抛物线是侧向的)那个角度是弧度吗?我在缩放 z 轴时使用的那个常数也会有所作为,谢谢!
  • 在你的图片中,我假设 Y 是垂直的,X 是水平的,Z 是在屏幕之外。那么抛物线是x = 0.05*h^2 + Rh 是高度,R 是底半径)。如果你想象一个包含 Y 轴的平面,你可以将平面绕 Y 轴旋转任意角度,双抛物线看起来是一样的。对于给定值h,该平面中该抛物线的切线斜率为0.1*h。由于平面相对于 X 轴和 Z 轴有一个角度,因此该切线也将具有相同的角度分量。

标签: math geometry unity3d


【解决方案1】:

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

在你的图片中,我会假设 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 值,您可能需要调整它以获得正确的结果。

【讨论】:

  • 好的!我实际上被这个困惑了好久!我认为您的解决方案会给我切线的 角度(如弧度),但它实际上给了我 斜率(如比率)duh!
  • 其实这也行不通。我得到的 h*my constant*2 的值从抛物线中心的 1.2 开始,当你出去时增加到 12。
  • 好的!我现在似乎工作得很好。我使用的是传统高度(我的 Z 值)。当使用 Y 值时,它看起来很完美。所以 Y*常数*2
  • 那太好了@GuyeIncognito。根据您的使用情况,我的坐标名称可能不正确,所以听起来您已经对齐了。
  • @GuyeIncognito 如果你更新你的图形链接我想看看你的结果:)
猜你喜欢
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2019-02-28
  • 1970-01-01
相关资源
最近更新 更多