如何使用JavaScript和此坐标格式生成多维数据集?
鉴于此代码:如何使用JavaScript和此坐标格式生成多维数据集?,javascript,computational-geometry,Javascript,Computational Geometry,鉴于此代码: { ( 256 64 16 ) ( 256 64 0 ) ( 256 0 16 ) mmetal1_2 0 0 0 1 1 ( 0 0 0 ) ( 0 64 0 ) ( 0 0 16 ) mmetal1_2 0 0 0 1 1 ( 64 256 16 ) ( 0 256 16 ) ( 64 256 0 ) mmetal1_2 0 0 0 1 1 ( 0 0 0 ) ( 0 0 16 ) ( 64 0 0 ) mmetal1_2 0 0 0 1 1 ( 64 64 0 ) ( 64
{
( 256 64 16 ) ( 256 64 0 ) ( 256 0 16 ) mmetal1_2 0 0 0 1 1
( 0 0 0 ) ( 0 64 0 ) ( 0 0 16 ) mmetal1_2 0 0 0 1 1
( 64 256 16 ) ( 0 256 16 ) ( 64 256 0 ) mmetal1_2 0 0 0 1 1
( 0 0 0 ) ( 0 0 16 ) ( 64 0 0 ) mmetal1_2 0 0 0 1 1
( 64 64 0 ) ( 64 0 0 ) ( 0 64 0 ) mmetal1_2 0 0 0 1 1
( 0 0 -64 ) ( 64 0 -64 ) ( 0 64 -64 ) mmetal1_2 0 0 0 1 1
}
如何使用JavaScript(或任何附加库)和上述坐标生成多维数据集?上述代码应解释如下:
(A, B, C) = N = normalize(cross(p3-p1,p2-p1))
D = -dot(p1,N)
在这里显示的示例中,此笔刷是一个6边长方体。飞机
它的第一个面由3个点定义,(256 64 16)(256 64 0)(
256 0 16 ). 提供的其他信息是用户使用的纹理
面对“mmetal1_2”是纹理的名称,单个平面可能只有
有一个单一的纹理。“0 0 1 1”是纹理的显示方式,以及
分别为“X偏移”、“Y偏移”、“旋转”、“X比例”和“Y”
比例”
平面点(p1)(p2)(p3)解释如下。这个
平面点的布置必须确保
向量(p3-p1)和(p2-p1)不为空,即三个点
必须是线性独立的。然后,归一化叉积
表示平面的法向量。每一个点p(p
-p1)*法线点(p1)(p2)(p3)
根据平面上的三角形定义平面。这些点的排列使得平面的法线(向量(p3-p1)和(p2-p1)的归一化“叉积”指向外部。我们可以根据平面方程定义平面Ax+Bx+Cx+D=0
,如下所示:
(A, B, C) = N = normalize(cross(p3-p1,p2-p1))
D = -dot(p1,N)
这些平面的交点形成一个凸多面体。找到这个多面体需要找到平面交点的顶点作为步骤之一。您提到的wiki文章链接到一个解释生成这些顶点的一种方法的链接
您提到的格式描述了使用半空间表示(或h表示或h表示)的凸多面体(凸多面体)。由于给定的一组平面可以描述许多凸多面体,因此更可能需要将凸多面体的最小半空间表示转换为其最小顶点表示(或v表示或v表示)。这里,最小表示是顶点至少与三个平面相交,但描述与所有半空间相交的实体的表示。然后,需要生成最小顶点表示的凸包
由于问题要求更详细,我将补充: 生成多面体的网格涉及 请执行以下步骤
飞机。更具体地说,如果
D+dot(P,N),那么一个点在一个平面内。谢谢你的解释。你能给我一个JavaScript示例,或者甚至是伪代码来完成这个任务吗?我不知道有任何JavaScript代码可以完成步骤1。然而,相比之下,步骤2和步骤3很简单。一些可能有用的关键词包括“半空间”和“凸面”。我会继续搜索。我将尝试使用three.js,因为它似乎是实现这一目标的最佳解决方案。我编辑了这篇文章。我已经更准确地描述了这个问题。谢谢,它看起来像是一个巨大的代码量,我将不得不研究输入更多的坐标到该函数。