斜视角视图(Isometric Views)(中文版)
吉姆·亚当斯
残雪 译
----------------------------------------------------------------------------
如果你对平铺(tiled)图形还一无所知,那么在这儿它就放在一个“坚果壳”(nutshell)里。一组象素,通常是矩形的形状,构成一个平铺图形块,如同地板上的一块瓷砖。当你把这些图形块放在一起的时候,他们就形成了一个图案。你还可以把砖块图案的图形块堆放起来以构建更大的平铺图案。 所以说,你不需要存储原始的位图,而是用一个地图数组来存储图形块的号码,从而可以绘制出更大的图片。一个典型的绘图函数从屏幕的左上角开始,向右移动直至右边界,然后再向下移动一行,重新开始。 下面看一下斜视角视图型。与矩形图形块不同的是,它们是斜视角的。你绘制它们的时候,并非是x轴从左向右,y轴从上向下,现在的x走向右下方,而y则走向左下方。而地图则依旧是从左向右的为x轴,从上向下的为y轴。 我们看下图:(x 和 y 为地图坐标)
直角视图: 斜视角视图: - X - 0 0 0123456789 / 1 * 1 \ 0 ********** Y 2 * * 2 X | 1 * ** * / 3 * * 3 \ Y 2 * **** * 4 * * 4 | 3 * ** * 5 * * 5 4 * * * * 6 5 ********** * * * * 7 * * * * * 8 * * * * 9 * * * * * * * * * * *
现在别忘了我们的显示(视频屏幕)还是直角的,所以一个典型的场景如下所示:
------------------------ | \ 草 / | | \ / | | \ / | (斜杠表示图形块的角度) | \/ 水 | | 沙 \ | | \ | ------------------------
我们通过使用斜视角的图形块来获取视图。这些图形块有宽度、高度和深度。既然观察视角依赖于图形块的宽度和高度(这给了我们深度),我们需要用一定的角度把他们绘制出来。深度在绘制中没被包含在里面,因为我们只要考虑宽度和高度就够了。 一个不错的观察角度是2:1的比例。这意味着水平方向每画两个象素,在垂直方向就有一个。我们实际上使用的是2.1:1,我们的图形块的宽度为32,所以我们很快就得到了我们的高度是32/2.1=15.23。所以我们最后的图形块的尺寸为32x15。这是高度为1的“基本”图形块的大小。记住,我们的图形块可以有不同的高度。所以一个墙可以是32x90。高度并不改变什么,但宽度必须保持为32。
让我们看一下图形块的形状(按象素):
1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 ---------------------------------------------------------------- 1| O O O O 2| O O O O O O O O 3| O O O O O O O O O O O O 4| O O O O O O O O O O O O O O O O 5| O O O O O O O O O O O O O O O O O O O O 6| O O O O O O O O O O O O O O O O O O O O O O O O 7| O O O O O O O O O O O O O O O O O O O O O O O O O O O O 8| O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O 9| O O O O O O O O O O O O O O O O O O O O O O O O O O O O 10| O O O O O O O O O O O O O O O O O O O O O O O O 11| O O O O O O O O O O O O O O O O O O O O 12| O O O O O O O O O O O O O O O O 13| O O O O O O O O O O O O 14| O O O O O O O O 15| O O O O
(未完)
|