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

时间:2009-02-22 11:03:21

标签: graphics 3d points bezier geometry-surface

我需要找到曲面的视界的2个点。

我有:

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

我需要计算:

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

注意:我得到了last time我问过这个问题的解决方案,但它只找到了曲线的极值,而不是地平线点,它根据两条曲线相对于彼此的位置和旋转而变化。

3 个答案:

答案 0 :(得分:2)

首先旋转曲线是否有效,以便角点之间的连接是水平的,然后计算极值?

要进行视觉测试,您可以将示例图像旋转约150度:

Rotated image http://www.freeimagehosting.net/uploads/ad502509e9.png

请注意,此曲线的极值并不完全符合您的要求,但这可能是由多个因素引起的,例如标记水平点的方式似乎并不那么精确。

答案 1 :(得分:2)

您没有说明您的曲面是如何定义的,只是它是由两条二次Bézier曲线限定的。有很多方法可以构建这样一个表面,每种构建它的方式都有不同的视野。所以这个答案将是猜测。

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

Tangent to Bézier curve

二次Bézier曲线具有参数方程

  

B( t )=(1 - t 2 P 0 + 2(1 - < em> t ) t P 1 + t 2 P 2

区分t相对于t给出了曲线的切线:

  

B'( t )= 2( t - 1)P 0 + 2(1 - 2 )P 1 + 2 P 2

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

  

B( t )×B'( t )= 0

t 解决这个问题,你将在地平线上得到曲线上的点。如何将其扩展到整个表面的地平线取决于表面的构造方式。 (也许你可以找到曲面两端曲线的水平点,并用直线连接它们?)

答案 2 :(得分:1)

您正在寻找的内容实际上被称为剪影,而非地平线 最简单的方法是找到法线指向相机的表面部分(点积为负)与法线指向远离相机的表面部分之间的边界(点积为正) 。

使用三角形网格,您可以使用法线直接执行此操作。使用NURBS,你可以找到一个封闭的公式来做到这一点。