2015-10-30 59 views
0

我需要使用使用这些属性的网格创建一个立方体: “包含网格顶点的二维数组。每个数组条目指定顶点所有行的数组必须具有相同的长度,必须至少有两行,并且每行必须至少有两个顶点“使用二维数组创建一个具有三维网格的立方体

如果您认为要表示一个立方体纸:

Cube sample

,你可以把它看成2项目,3 orizo​​ntal广场和3 VERTI CAL。但在这种情况下,我将不得不使用两个网格,而我需要一个网格。 我想不会有重叠,我无法找到解决方案。我找到的最佳选择包括用9行填充数组。

每行包含两个条目,并以这种方式创建多维数据集的表面。我附加了一些图片来解释它与第一行创建,直到当我到达重叠点:

Image representation

我想这个问题无解,但在任何情况下,你有什么想法我会接受任何提议。

(我关于可能不准确的顺序抱歉)

var row0 = []; 
x, y, l 
x+t, y, l 

var row1=[]   
x, y, l+400 
x+t, y, l+400 

var row2=[]   
x, y+t, l+400 
x+t, y+t, l+400 

var row3=[]  
x, y+t, l 
x+t, y+t, l 

var row4=[]   
x, y, l 
x+t, y, l 

var row5=[]  
x+t, y, l 
x+t, y+t, l 

var row6=[]   
x+t, y, l+400 
x+t, y+t, l+400 

var row7=[]  
x, y+t, l 
x, y, l 

var row8=[] 
x, y+t, l+400 
x, y, l+400 

以“X,Y”两个随机那些具有400的“T”的距离为变量的坐标。 “l + 40”0表示与“l”的高度距离。

Source here

回答

1

你得太多完全的问题。让我们暂时退一步:在3D空间中,每个位置由3个值指定;在笛卡尔坐标系中的那些通常被称为X,Y和Z.

我们通常写那些下来作为行标量值:

x, y, z 

立方体由6个面中的,每一个由的4点,每个点的位置由3个面共享。假设其在原点中心和2的宽度尺寸的立方体,然后在XY平面的两个面将

-1, -1, -1 
1, -1, -1 
1, 1, -1 
-1, 1, -1 
1, -1, 1 
-1, -1, 1 
-1, 1, 1 
1, 1, 1 
… 

有4个面(两个XZ,两个在YZ)进行完整的立方体。什么是非常重要的(针对你的问题),这些值如何写下来。看看我写的数字。你看到了什么?一个2D数组(连续3个数字),立方体的网格由每个点组成的一行。这就是全部。

网格就是这样一个顶点列表。不要把它想象成一个“由纸制成的可折叠网”。只是一个职位列表,你也可以重复职位。你也可以只写一次8个位置,然后使用第二个1D数组,这是一个如何从这些位置创建网格的列表。

+0

感谢您的回答,我理解您的解释,但我没有得到关于如何连接网格的部分。假装我有8个点,立方体的顶点。目前我需要连接它们,理论上,一切正常,如果我有能力做到这一点。我的问题现在仍然存在于数学理论到JavaScript API的通道中,因为我必须使用原始文章中提到的API,因此我无法使用一维数组来连接这些点,至少我认为它就像这个,我不管理如何去做。 –

+0

@GabrielePrestifilippo:为每个点指定一个从0开始到8的索引。然后构建这些索引的1D数组,总共有6 * 4 = 24个元素,如下所示:{0,1,2,3,2 ,5,6,3,...}等等。该数组通过将其加载到GL_ELEMENT_ARRAY_BUFFER缓冲区对象中传递给glDrawElements的索引参数。 – datenwolf