计算曲面的视界? - 不是极端

Rob*_*cks 5 3d graphics bezier points geometry-surface

我需要找到2点的视觉视野,曲面的.

我有:

  • XYZ的4个角点
  • XYZ的2个弯曲边缘贝塞尔点

我需要计算:

  • 2个地平线点的XY
  • 2个地平线点的XYZ

注意:上次我问这个问题时,我得到了一个解决方案,但它只发现了曲线的极值,而不是地平线点,它们根据两条曲线相对于彼此的位置和旋转而变化.

Gar*_*ees 2

您没有说明您的曲面是如何定义的,只是说它由两条二次 B\xc3\xa9zier 曲线界定。有很多方法可以构建这样的表面,并且每种构建方法都有不同的地平线。所以这个答案将是猜测。

\n\n

地平线由表面上的那些点组成,从相机到该点的矢量与表面相切,如下所示:

\n\n

与 B\xc3\xa9zier 曲线相切

\n\n

二次 B\xc3\xa9zier 曲线具有参数方程

\n\n
\n

B( t ) = (1\xc2\xa0\xe2\x88\x92\xc2\xa0 t ) 2 P 0 + 2(1\xc2\xa0\xe2\x88\x92\xc2\xa0 t ) t P 1 + t 2 \xc2\xa0P 2

\n
\n\n

对 t 求导即可得到曲线的正切:

\n\n
\n

B\xe2\x80\xb2( t ) = 2( t \xc2\xa0\xe2\x88\x92\xc2\xa01) P 0 + 2(1\xc2\xa0\xe2\x88\x92\xc2\xa02 t ) P 1 + 2 t \xc2\xa0P 2

\n
\n\n

这与从相机(在原点)到曲线的矢量平行,如果

\n\n
\n

B( t )\xc2\xa0\xc3\x97\xc2\xa0B\xe2\x80\xb2( t ) = 0

\n
\n\n

求解t,您将得到地平线上曲线上的点。如何将其扩展到整个表面的地平线取决于表面的构造方式。(也许您可以找到曲面两端曲线的水平点,然后用直线将它们连接起来?)

\n