体素立方体看起来像魔方,体素结构是块的 3D 矩阵,因此要从一侧到另一侧绘制一条线,我们需要在每个相关块内绘制连接到下一个块的线,将这些线连在一起形成一条穿过立方体的连续线。
如果实施得当,以下算法可以正常工作,因为您将在立方体内的局部坐标上工作,所以当 3D 引擎将其转换为世界坐标时,立方体本身的任何变换都将由 3D 引擎自动应用。
时间复杂度
MATRIX.MAX_Z * (
Time(MATRIX.GET_VOXEL(x,y,z))
+ Time(VOXEL.DRAW-LINE(0,0,0, 0,0,VOXEL_DEPTH))
)
Run Code Online (Sandbox Code Playgroud)
算法
FUNCTION DRAW (INTEGER X, INTEGER Y)
INTEGER VOXEL_X = X / MATRIX.VOXEL_WIDTH
INTEGER VOXEL_Y = Y / MATRIX.VOXEL_HEIGHT
FOR i = 0 .. (MATRIX.MAX_Z-1)
VOXEL V = MATRIX.GET_VOXEL(VOXEL_X, VOXEL_Y, i)
INTEGER X_0 = X % MATRIX.VOXEL_WIDTH
INTEGER Y_0 = Y % MATRIX.VOXEL_HEIGHT
INTEGER Z_0 = 0
INTEGER X_1 = X_0
INTEGER Y_1 = Y_0
INTEGER Z_1 = (MATRIX.VOXEL_DEPTH-1)
V.DRAW-LINE(X_0,Y_0,Z_0, X_1,Y_1,Z_1)
END-FOR
END-FUNCTION
Run Code Online (Sandbox Code Playgroud)