我有一个盒子(长方体)躺在地板或桌子上。因此,盒子有6个表面,地板有1个表面。如果我将每一对曲面都做成彼此“相邻”的曲面,则会得到两种配对:

1)盒子的两个曲面:曲面的曲面法线与

2)1个盒子的表面+地板的表面:表面法线以90度角收敛和相交。 (如果要增加一些公差,则为8o到100度)。

我想通过函数表示来区分这两种情况?在这两种情况下,什么函数可以区分?

在这两种情况下,表面法线的归一化点积均为0,因为它们的角度b / w为90度。所以这不是正确的解决方案...

评论

你能澄清一下吗?您是要寻找可以为每个曲面生成曲面法线的函数,还是要确定两个曲面法线在给定角度范围内是否相交的函数?

1,我有表面法线。我的目的不是生成它们。第二件事,我提到的两种情况,两个表面是垂直的。因此,点积b / w是正确的。表面法线为0,因此可以发现该角度为90度。所以那不是问题。关心的是找到一个函数,其中表面法线确实以90度相交,而表面法线却不相交,尽管它们的角度b / w可能为90度...希望现在清楚...

#1 楼

实际上,两种情况下的点积都是相同的(零),因为两个向量的点积不考虑向量的起源。换句话说,点积的数学运算将两个向量置于相同的原点。从这个意义上讲,没有办法区分收敛或发散的向量。

我认为您需要做的是考虑曲面及其法线的中点,然后应该进行收敛或分歧。或者尝试获取一个表面的法线与另一表面的位置的点积,反之亦然。您可能会发现这方面的正数与负数将得到您想要的答案。

或者您可以相对于法线使用一个到另一个的增量位置。请参阅以下草图。



按增量位置,我的意思是P1-P2。我希望该图有助于阐明。我画了两种情况:左侧是案例1,右侧是案例2。计算两个蓝色矢量或两个红色矢量的点积。因此,例如:

answer = dot( N[blue], P[red]-P[blue] )


这些向量不会是垂直的,但是答案会告诉您一个表面在另一个表面的前面还是后面。对于案例1,点积将为正。对于情况2,点积将为负。实际上,此方法将告诉您在公共边缘相交的任意两个任意定位的曲面是凸面还是凹面(发散或会聚)。它们不必垂直。

评论


$ \ begingroup $
谢谢:)让我重新表述您在第二段中所说的内容:1)surface1具有:midpoint1和normal1。 surface2具有:midpoint2和normal2。 2)dotpdt(midpoint1,normal2)和dotpdt(midpoint2,normal1)。 3)我应该注意点符号。你是这个意思吗?我猜想,对于垂直表面,该点积将给出+/- 1的值。我无法弄清楚它的作用是什么...您能否再说明一下?另外,我听不懂第三段...
$ \ endgroup $
– swagatika
13年8月2日在9:21



$ \ begingroup $
@Swagatika,我添加了一个图表并希望进行一些说明。
$ \ endgroup $
–章鱼
13年8月2日在16:49

$ \ begingroup $
hmm ...再次感谢:)这看起来不错...我将实现它,并希望它能工作...
$ \ endgroup $
– swagatika
13年8月2日在19:29