Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用JavaScript和此坐标格式生成多维数据集?_Javascript_Computational Geometry - Fatal编程技术网

如何使用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,因为它似乎是实现这一目标的最佳解决方案。我编辑了这篇文章。我已经更准确地描述了这个问题。谢谢,它看起来像是一个巨大的代码量,我将不得不研究输入更多的坐标到该函数。