gpt4 book ai didi

geometry - 通过横截面上的点找到椭圆上的法线 "N"

转载 作者:行者123 更新时间:2023-12-02 09:12:09 25 4
gpt4 key购买 nike

我正在尝试在我制作的小型物理引擎中制作出漂亮的偏转效果。现在它很好地偏离了多边形边缘的法线。但我想我可以使用椭圆来计算偏转法线,而不是制作一个具有 100 条边的多边形来获得“圆角偏转”的平滑效果。

所以,我真正想要的是一个函数,它采用线段上的点P并返回假想圆周上的正常N>椭圆(w,h)。有关详细信息,请参阅附图。

A picture of the problem

要获得椭圆圆周上的一点,我很确定它是:

x=P.x+Math.sin()*w
y=P.y+Math.cos()*h

但是我怎样才能从中得到正常的结果呢?

<小时/>

Here's a fiddle并试图实现 BDO Adams 博士的答案。

最佳答案

椭圆点的方程为

x=x_centre+a*cos(t)
y=y_centre+b*sin(t)

对于椭圆的每个点,您可以找到 t 作为 atan2( (y-y_centre)/b , (x-x_centre)/a )

当您知道t切线方向时,可以确定:dx/dt,dy/dt:

dx=-a*sin(t)
dy=b*cos(t)

当你知道切线方向时,只需将其旋转 90 度即可得到法线:

nx=b*cos(t)
ny=a*sin(t)

为了避免计算 t,我们可以将其与前两个公式结合起来:

nx=(x-x_centre)*b/a
ny=(y-y_centre)*a/b

关于geometry - 通过横截面上的点找到椭圆上的法线 "N",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13528154/

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