当前位置: 首页 > 知识库问答 >
问题:

如何有效地确定三维空间中多边形的法线?

骆昊阳
2023-03-14

我知道如果我首先对多边形进行三角剖分,那么我就可以轻松可靠地检查任何三角形的面······但问题是我的三角剖分库要求知道平面正常。所以,先有蛋后有鸡。

我如何在一个非凸多边形中选择两条边(或三个顶点)来可靠地定义多边形的朝向?

共有1个答案

吴举
2023-03-14

如果我是你,我会按以下方式做:

  1. 选择多边形附近的任意点C(任意顶点或质心)。
  2. 对所有i(包括最后和第一个点对)求和交叉积(P[i]-C)x(P[i+1]-C)。
  3. 将和向量归一化。

注意,在步骤2之后,你有一个矢量,它有法线方向和适当的方向,它的大小是2S,其中S是你的多边形的面积。这就是为什么它应该工作,除非你的多边形有零或几乎零的面积。

 类似资料:
  • 我们是否可以使用符合以下条件的mongodb地理空间查询来查询和获取位置数据? 获取两个框或一般两个多边形之间交集的所有位置。 例如,在下面,我们能在查询输出中只获得那些位于黄色区域内的位置吗?黄色区域实际上是紫色和红色几何对象[多边形]的公共区域?

  • 我有一个“SpatialPolygons”对象,我想在@hole==FALSE处对多边形进行子集,并创建一个新对象。 使用下面的代码,一次可以预测得到1个多边形(如果@hole==TRUE,则没有),但我无法从对象中分割多个多边形。 我认为我的问题在于我不知道如何“一般”引用第二个列表,即从列表(Polygon)中获取项目,其中@孔==FALSE。将第二个[[]]留空不起作用。 附言:抱歉,没有可

  • 我使用以下方法从拉多边形中获取多边形: 但是,我正在尝试从多边形获取坐标,但我不能: poligon@polygons[1]类“Polygons”Slot“Polygon”的对象:[1]类“多边形”Slot”labpt“的对象:[1]-46.37327-23.91955 提前致谢

  • 所以我对opengl和创建3d形状非常陌生。对于我的例子,我有两个正方形,一个是高度/宽度2,中心在原点坐标(0,0,-10),另一个在窗口的最左侧。我试图沿着x-z平面旋转位于原点的正方形,而不旋转位于屏幕最左侧的正方形。我的方法是将中心正方形的每个xyz坐标保存为一个变量,并创建一个使用cos(θ)行为沿着x-z平面旋转正方形的方法。我的代码工作,但我认为这是一个可怕的方法,因为一定有一些更有

  • 给定三个整数a、b和c,如果a、b和c可以是直角三角形边的长度,则返回true。否则返回false。回想一下,在直角三角形中,每条边都必须有一个正长度,腿长的平方和必须等于斜边长度的平方。 isRightTriangle(3、4、5)→ 真isRightTriangle(4、3、5)→ 真isRightTriangle(5、4、3)→ 真的

  • 我试图从顶点位置创建一组多边形,保存在X,Y格式。 下面是我的数据的一个例子——每行代表一个多边形的顶点。多边形是正方形 我正在使用,因此我的数据需要在列表中。所以我创建了一个循环来尝试从矩阵中将我的数据转换为列表格式。 我创建了一个循环,遵循我在这个网站上的其他一些问题中找到的代码。我突破了每一步,试图理解为什么我只有一个多边形作为输出,即使我有2组点。 你能帮我理解我如何调整代码写出两个多边形