<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE page SYSTEM "gen/gandraxa.dtd">
<?xml-stylesheet type="text/xsl" href="gen/gandraxa.xsl"?>
<!--
	To see this page properly, install a browser capable of
	interpreting XML/XSL, for example a recent version of:
	- Mozilla Firefox, see http://www.mozilla.com/
	- Google Chrome, see www.google.com/
	- Internet Explorer, see http://www.microsoft.com/
-->
<page>
	<head>
		<title>Introduction to Isometric Avatars</title>
		<url>http://www.gandraxa.com/introduction_to_isometric_avatars.xml</url>
		<context>
			<path>
				<home>
					<link loc="int">
						<url>home.xml</url>
						<text>Home</text>
					</link>
				</home>
				<dir>
					<link loc="int">
						<url>articles.xml</url>
						<text>Articles</text>
					</link>
				</dir>
				<dir>
					<link loc="int">
						<url>designing_isometric_avatars.xml</url>
						<text>Designing Isometric Avatars</text>
					</link>
				</dir>
				<doc>Introduction to Isometric Avatars</doc>
			</path>

			<chain>
				<next>
					<link loc="right">
						<url>components_of_isometric_avatars.xml</url>
						<text>Components of Isometric Avatars</text>
					</link>
				</next>
			</chain>
		</context>
		
		<author>
			<mail>
				<recipient>hg</recipient>
				<server>gandraxa.com</server>
				<name>Herbert Glarner</name>
			</mail>
		</author>
		
		<publ>
			<event>
				<eventdate><y>2007</y><m>Mar</m><d>30</d></eventdate>
				<eventtext>
Original HTML version</eventtext>
			</event>
			<event>
				<eventdate><y>2011</y><m>Feb</m><d>04</d></eventdate>
				<eventtext>
					Recoded in XLM
				</eventtext>
			</event>
		</publ>
		
		<furtherreading>
			<readitem>
				<link loc="wiki">
					<url>http://en.wikipedia.org/wiki/Avatar_%28icon%29</url>
					<text>Avatar</text>
				</link> on Wikipedia
			</readitem>
		</furtherreading>
	</head>

	<toc>
		<toc1 ref="A">Introduction</toc1>
			<toc2 ref="A1">2D, 3D, Isometry</toc2>
			<toc2 ref="A2">Static Design</toc2>
			<toc2 ref="A3">Frames</toc2>
			<toc2 ref="A4">Conclusion</toc2>
		<toc1 ref="B">A Framework</toc1>
			<toc2 ref="B1">Tile Design Considerations</toc2>
			<toc2 ref="B2">Dimensions and Measurements</toc2>
			<toc2 ref="B3">The Complete Framework</toc2>
	</toc>

	<abstract>
	    <p><ptitle>Abstract</ptitle>
	    	This article discusses the principles in the design of avatars in isometric worlds 
	    	(as opposed to the design of avatars in 3D worlds). 
	    	The fundamental differences between the two techniques are outlined, and a guide to set up a framework 
	    	for your experiments is presented.</p>
	</abstract>



	<part>
		<heading id="prerequisites">Prerequisite</heading>
		<body>
		    <p>Many references are made to the article 
			    <link loc="int">
			    	<url>isometric_projection.xml</url>
			    	<text>Isometric Projection</text>
			    </link>: its understanding facilitates understanding of this text.</p>
		</body>
	</part>

	<part>
		<heading id="A">Introduction</heading>
		<chapter>
			<heading id="A1">2D, 3D, Isometry</heading>
			<body>
				<p>The terms 2D and 3D have come to signify a very distinct meaning, 
					particularly when used in computer games. Since avatars are mainly 
					used in such environments, it seems sensible to adapt their common usage 
					when discussing the design of avatars, even if they technically 
					are used in an incorrect way.</p>
				<p>2D translates to <em>two-dimensional</em>. Of course, all drawings 
					on a flat plane necessarily need to be two-dimensional,
					 because flat surfaces lack a third dimension. 
					 No matter what canvas you use for your drawing, 
					 be it a sheet of paper or your monitor's screen: 
					 the outcome will be two-dimensional. 
					 Indeed, technically all current "3D games" which do not make use 
					 of a real 3rd dimension (like e.g. in holograms) in reality 
					 are two-dimensional.</p>
				<p>So, where does the notion of "3D" come from? 
					It is the perceived quality of the <em>perspective</em> which led 
					to the wide-spread usage of this term.</p>
				<p>To qualify as a <em>three-dimensional</em> environment in terms of 
					"game language", the rendering of the objects within the game's world 
					must be such, that the third dimension can be "felt". 
					Conceptionally, this can be achieved quite easily: 
					the further away an object is located in relation to the observer 
					(or implied camera), the smaller it must be.</p>
				<p>In a so-called 2D environment, however, such is <em>not</em> the case: 
					all objects still will have the same size, no matter how far away they are 
					from a hypothetical (or real) observer. This does, however, not imply, 
					that 2D environments can not provide a feeling of depth at all. 
					In fact, each 
					<link loc="wiki">
						<url>http://en.wikipedia.org/wiki/Axonometric_projection</url>
						<text>axonometric projection</text>
					</link> (of which the isometric projection is a kind) 
					<em>does</em> aim at providing the illusion of depth.</p>
				<p>Although conceptionally easy, the realization of a proper 3D perspective 
					requires a whole set of sophisticated techniques, 
					both mathematically and technically. 
					Involving these techniques is a heavy burden for the responsible processor 
					on your graphics card. Fortunately, actual graphic cards have so-called 
					<em>hardware accelerators</em>, 
					which are able to perform incredibly many complex operations 
					in a very short time. However, the data still needs to be passed 
					to those accelerators, as well as the instructions what to do with that data.
					No matter how clever a 3D design is, a PC's CPU still will be pretty busy 
					with moving large quantities of data forth and back.</p>
				<p>Compared with such a 3D environment, 
					rendering a 2D environment is by far less CPU intense. 
					This is not due to different techniques per se, 
					as the mathematical concepts behind the scenes are the same, 
					but it is because they can be simplified to a very large extent. 
					An example: instead of calculating trigonometrical functions 
					over and over again, they oftentimes can be precalculated 
					(if that's needed at all) and kept handy for continuous usage 
					during the whole lifetime of the application in question. 
					In many cases, such precalculated values even can be coded as constants.</p>
				<p>It is worth noting, that most ("all") of the 3D rendering is done 
					by the <em>graphic card's</em> processor, and this needs not necessarily 
					be the case for 2D renderings. This remark is not made to relativate 
					the speed advantage: what can be done in 3D can also be done in 2D, 
					and it can be done in a simpler (i.e. faster) way. 
					The remark was made to point out, that it is very well possible 
					to render a 2D environment also <em>without</em> the use 
					of accelerating hardware by just using a PC's CPU. 
					Due to the number of involved operations, 
					this is a thing which barely is feasible for 3D environments.</p>
				<p>To avoid the confusing term "2D" (which also can signify the 
					2D representation of a 3D environment) we henceforth will use 
					"isometric" when referring to objects in an isometric environment, 
					but we will stick to the term "3D" when referring to environments 
					in which object sizes decrease with distance. 
					For the theoretical concept and our usage of the term <em>isometric</em> 
					(also slightly misleading, by the way, as we properly should speak 
					about <em>dimetric</em> projections) please refer 
					to the article pointed in the 
					<link loc="up">
						<url>#prerequisites</url>
						<text>prerequisites</text>
					</link>.</p>
			</body>
		</chapter>
		<chapter>
			<heading id="A2">Static Design</heading>
			<body>
				<p>Despite having said, that all what can be done in 3D could also be done 
					(more efficiently) in 2D environments, in practice, there is 
					a big difference in designing avatars for isometric environments 
					and 3D environments.</p>
				<p>In isometric worlds all objects (including avatars) do not change 
					in size no matter how far away they might be from the observer. 
					Therefore, there is no real need to deal with coordinates defining 
					the possibly many subshapes (such as arms and legs) of those objects. 
					Although the coordinates still may be of use even in isometric environments, 
					all that overhead can be omitted, when the objects are designed 
					<em>statically</em>.</p>
				<p>"Statical" means, that an object's appearance is predetermined, 
					i.e. "what you see (while designing) is what you get". 
					This comes as a big advantage, because static objects can be rendered 
					with ease: in the easiest case, the appropriate pixels just need 
					to be copied from a "ready-to-use"-template to the output device, 
					directly served from the PC's CPU. 
					This usually saves massively on computations (if done cleverly, 
					that is, since it is very well possible that good acceleration hardware 
					can outperform a PC's CPU when implemented badly).</p>
				<p>However, there's also a drawback. Several drawbacks, actually.</p>
				<p>Firstly, rather then defining an object just once and then being able 
					to render the once finished product from whatever point of view  
					the user (or operator) desires (as is possible in 3D thanks 
					to massive computations), static objects need to be designed multiple times, 
					i.e. once for each direction from where we wish the observer to look at it. 
					This explains, why we usually have a very limited choice 
					of viewing directions (oftentimes just 1, but usually 4 of them, 
					by allowing the user to rotate the viewing direction in angles of 90°).</p>
				<p>And secondly, if the object shall be able to move (which usually 
					is the case for avatars), then there is the need for different "frames".</p>

			</body>
		</chapter>
		<chapter>
			<heading id="A3">Frames</heading>
			<body>
				<p>An avatar shall be able to move in an isometric world consisting of tiles. 
					Depending on the size of a tile and the desired speed of our moving object, 
					we need to calculate how many times per second the object needs 
					to be rendered in order to achieve a more or less fluent motion 
					from one tile to the next one.</p>
				<p>For each such rendering a "still picture" needs to be designed, 
					showing a gradually completion of the desired motion. 
					A single "still picture" is called a <em>frame</em>. 
					If carefully designed frames are rendered fast enough, 
					the motion appears to be fluent: such is the case also 
					with 3D renderings (and TVs for that matter). 
					The frequency at which the frames follow each other is called the 
					<em>frame rate</em>. It is measured in 
					<link loc="wiki">
						<url>http://en.wikipedia.org/wiki/Hertz</url>
						<text>Hertz</text>
					</link> (occurrences per second; here: pictures per second). 
					Note, however, that we in no way are bound to use the "second" 
					as the time measure (nor any other fixed time period). 
					Although measured in Hertz (which by definition <em>does</em> 
					use the second as the time component), a complete series of frames 
					needs the time <em>we</em> define it to need: expressed in seconds, 
					this can be anything, 
					ranging from a few milliseconds only up to minutes or even hours.</p>
				<p>For obvious reasons we don't want to design individual pictures 
					for a movement between every imaginable point: 
					once we have a particular "frames set" 
					(determined by the start and the end of a distinct motion, 
					say an avatar's step in a walking sequence), we naturally aim 
					to apply it multiple times. And there another challenge becomes apparent: 
					we must design the start and end of a set such, that it can be repeated 
					in an apparently seamless manner. 
					We will see, that this requires cautious planning (and some math) 
					even before thinking about designing the first frame.</p>
				<p>We will also see, that sometimes it is unavoidable to have frame sets 
					depending on other frame sets: for instance, it is obvious 
					that we are not done with designing an avatar's step with its left leg 
					and repeat that set repeatedly, as there must be a step with its 
					right leg in between (unless we designed the set to include both steps, 
					with the drawback, that we can not bring the avatar to an instant halt,
					but need to complete a possibly just begun double-step first).</p>
				<p>Transitions are something we need to care for as well. 
					It would be wrong to assume in general, that we simply can start 
					a frame set intended for repetition, 
					for example "walking" as outlined above. 
					Here, we will need a distinct (comparably short) frame set 
					for the actual start of the walking process as well as 
					for the actual end of it.</p>
			</body>
		</chapter>
		<chapter>
			<heading id="A4">Conclusion</heading>
			<body>
				<p>To summarize: designing aesthetically appealing objects 
					in a 2D environment is a <em>very</em> time-consuming task, 
					far more than for 3D objects.</p>
				<p>What one gets for these efforts is a massively reduced running time, 
					if not making bad mistakes with the implementation.</p>
				<p>And of course, we need a carefully set up framework, 
					with precisely defined measures, in order to be able to calculate distances, 
					needed times, number of frames and more, 
					such that our design results in credible avatars. 
					This is defined in the next section of this article.</p>
			</body>
		</chapter>
	</part>

	<part>
		<heading id="B">A Framework</heading>
		<chapter>
			<heading id="B1">Tile Design Considerations</heading>
			<body>
				<p>Before going into details, it might be worthwhile to recap some 
					<em>tile</em> properties as outlined in article 
					<link loc="int">						
						<url>isometric_projection.xml#B3</url>
						<text>Isometric Projection</text>
					</link>, section "Irregular Tile Properties", fig. 12 and 13:</p>
				<list>
					<li>A tile's two topmost edges (i.e., the NW and NE edges) 
						are the physical start of an edge</li>
					<li>The physical end of a tile is identical with the physical start 
						of the topmost edges of the tile's <em>adjacent</em> tiles 
						(i.e., a tile alone is never drawn in its entirety, 
						as the effective bottom edges are missing)</li>
					<li>The middle of any edge is found by considering both the tile's 
						start edge and its adjacent tile's start edge 
						(which latter <em>is</em> the tile's effective bottom edge)</li>
					<li>The center of a tile is the intersection of the two lines 
						which connect the middle points of two opposite edges each 
						(i.e. the center point optically appears <em>below</em> 
						the point one might expect when looking at an isolated tile)</li>
				</list>
				<p>How is this all important and how does it affect us? 
					Well, a tile is made up of pixels at discrete intervals, 
					i.e. these pixels are countable and not continuous. 
					If we want to be able to locate and address a tile's center 
					(which is crucial for many reasons, as we will see), 
					then we must make sure that we can <em>identify</em> such a center. 
					Now, addressing the center is only possible, when the center 
					is indeed addressable, i.e., the center may not lay <em>between</em> 
					two addressable elements, but must fall <em>onto</em> a such.</p>
				<p>Let's visualize this and look at the edges of two tiles, seen from the side. 
					To save space, let's assume the edge has a length of 8 "addressable elements" 
					(which you can think of to be pixels for now; 
					the details are discussed further below):</p>
				<img float="left" width="227">
					<url>img/iia_fig1.jpg</url>
					<alt>An addressable tile edge's middle point</alt>
					<caption>Fig. 1: An addressable tile edge's middle point</caption>
				</img>
				<p>Fig. 1 makes clear, that an edge's middle point is addressable only then, 
					when the perceived edge length (i.e. including <em>both</em> end points) 
					has a number of elements which is odd, so that the same number of elements 
					can be distributed equally to both sides of the middle point. 
					And because only one of these edges can be actually defined 
					in any single tile (the opposite edge only being implied),
					the actual design of a tile must exclude that opposite edge, 
					forcing us to design tiles having an <em>even number</em> 
					of addressable edge elements.</p>
				<p>Now, why did we begin to talk about "addressable elements" 
					and not just about pixels? The short answer is: because these elements 
					<em>are not</em> pixels. Recall how we defined the isometric flat surface: 
					to obtain an optically appealing line we effectively introduced a 
					dimetric (although nearly isometric) projection with the consequence, 
					that the designed width of a tile is double the designed height of that tile. 
					Because of this, an "addressable element" consists of a rectangle 
					of two horizontal pixels (the other dimension measuring 1 pixel).</p>
				<p>Yet another property is of importance: the two topmost edges of a tile 
					meet in the tile's topmost corner. This means, that the addressable element 
					in that corner is <em>shared</em> by both topmost edges 
					<note ref="1">
						<p>Because the two topmost edges are themselves shared 
							by the bottommost edges of their adjacent tiles, 
							all corners (with the exception of the ones being located 
							along the whole landscape's lower edges) in fact are shared 
							by a total of 4 tiles each.</p>
					</note>.
					When we speak of "edge lengths", we should keep that in mind 
					(or we could end up with doubling the addressable element at the top, 
					thus generating two corners, which of course would be wrong). 
					This implies, that the <em>designed</em> tile's overall width needs 
					to consist of an odd number of addressable elements 
					<note ref="2">
						<p>Since an addressable element is 2 pixels wide, 
							this equals an even number of pixels, but it would be wrong 
							to define it this way, because also an even number 
							of addressable elements results in an even number of pixels.</p>
					</note>.</p>
				<p>So much for a tile's width. As for its height, I'd like to refer you 
					to aforementioned document, section "Spotlight on Tiles", fig. 8-10: 
					it visualizes the aspect of seamlessly tiling our tiles 
					in order to form a (flat) landscape without "holes". 
					In essence, we need to make sure, that the leftmost and rightmost corners 
					of the tile are doubled in height, by stacking two addressable elements 
					over each other.</p>
				<p>Put all together, we arrive to the following constraints with respect 
					of a flat tile's design:</p>
				<list>
					<li>The tile is defined in terms of addressable elements. 
						An addressable element measures 2 pixels in the horizontal and 1 pixel 
						in the vertical.</li>
					<li>The overall width of a tile must consist of an odd number 
						of addressable elements. The middle element defines the tile's 
						topmost corner, which is shared by the two topmost edges of the tile.</li>
					<li>Beginning at the topmost corner, the remaining elements 
						are distributed equally to both sides such, that each element 
						is one pixel below its predecessor.</li>
					<li>The above forms the upper part of the tile design. 
						The lower part consists of a vertical mirror image of it, 
						attached to the lower end of the upper part, such doubling 
						the leftmost and rightmost corner elements' heights. 
						Therefore, the overall height of the tile in pixels is 1 more 
						than the number of elements (at 2 pixels each) defining 
						the tile's overall width.</li>
				</list>
				<p>When following above rules, we end up with tiles with which 
					we can comfortably work.</p>
			</body>
		</chapter>
		<chapter>
			<heading id="B2">Dimensions and Measurements</heading>
			<body>
				<p>We start out with a vague idea about the size of our future avatars. 
					From this, we will work out all measures by deduction. 
					It always is a good idea, to not to begin with an actual drawing: 
					just use a very primitive draft, or, like I do here, just a box 
					as a placeholder for the future design.</p>
				<img float="left" width="123">
					<url>img/iia_fig2.jpg</url>
					<alt>Defining the effective height</alt>
					<caption>Fig. 2: Defining the effective height</caption>
				</img>
				
<p>The only important properties of this sketch are 
				
	the true "real-life" height of your avatars, 
				
	and the number of pixels used to display the avatar. 
				
	Actually, it might even be a good idea to choose two different heights, 
				
	within which your avatars heights can be varied. 
				
	For example could the lower bound be used for females, 
				
	the upper bound for males, etc. If you do use multiple heights, 
				
	then the relations should be observed already in this stage. 
				
	In our example, these relations could be 
				
	<formula>180cm : 160cm = 72 : 64</formula> to represent typical
				
	heights for the males and females to be represented in a particular
				
	application.</p>
				<p>Note, that an empty box easily can give the impression that 
					the available space is "too small", but you might be surprised about 
					the quantity of pixels which can be stuffed into comparably small boxes. 
					If you lack a pretty good imagination, it might be an advantage 
					to indeed use a draft rather than a box to define the heights. 
					And of course, ultimately the height depends on your application: 
					feel free to half or triple the size as per the needs and requirements 
					of your environment.</p>
				<p>If you were defining multiple heights as in our example, 
					then you needed to observe the relations and know already, 
					that 1 height pixel corresponds to 2.5 cm. 
					Otherwise it must be calculated now. 
					Unsurprisingly, both 
					<formula>180&#160;cm/72&#160;px</formula> and 
					<formula>160&#160;cm/64&#160;px</formula> yield 
					<formula>2.5&#160;cm/px</formula>.</p>
				<p>So much for the trivial part of defining the measurements. 
					But no worries, it doesn't get really complicated. 
					The next step is to define, how many centimeters a pixel represents 
					along a tile's edge.</p>
				<p>"Huh? 2.5 cm as well, no?" - Well, yes and no. 
					Recall how the edge lengths were defined: we said, that all 3 axes 
					(the two defining the tile's surface in the <code>x</code> and 
					<code>z</code> dimension, plus the upward <code>y</code> dimension 
					representing the height) have the property, 
					that equal segment lengths represent equal effective lengths. 
					Unfortunately, the <code>x</code> and <code>z</code> dimensions are 
					not orthogonal to the <code>y</code> axis: 
					with an assumed horizontal line running through a tile's bottommost corner 
					these axes form an angle <formula>a</formula> of 
					<formula>a=arctan(1/2)=26.565°</formula> (see fig. 3).</p>
				<img float="left" width="80">
					<url>img/iia_fig3.jpg</url>
					<alt>The edge e is foreshortened</alt>
					<caption>Fig. 3: The edge e is foreshortened</caption>
				</img>
				<p>We can measure along the edge <formula>e</formula>, 
					but it isn't before the rotation of the edge downward onto 
					<formula>s</formula> then we "see" the real length. 
					Now, whatever the length is that we measured along the edge 
					<formula>e</formula>, it is represented by a line made up of pixels, 
					which can be thought of as the diagonal of a surrounding box with the 
					width <formula>e<sub>w</sub></formula> and the height 
					<formula>e<sub>h</sub></formula>. 
					Would we rotate <formula>e</formula> onto <formula>s</formula>, 
					then its width would become 
					<formula>s<sub>w</sub> = e<sub>w</sub>/cos(a) = e<sub>w</sub>/0.8944</formula> 
					pixels wide (with a height of 0 px). 
					But when we want to transfer a length we already know, 
					then we actually know <formula>s<sub>w</sub></formula> 
					(and not <formula>e<sub>w</sub></formula>) 
					and need to rotate <formula>s</formula> up to <formula>e</formula>, 
					which makes <formula>e<sub>w</sub></formula> shorter than 
					<formula>s<sub>w</sub></formula>: 
					<formula>e<sub>w</sub> = s<sub>w</sub>×cos(a) 
					= s<sub>w</sub>×0.8944</formula>. 
					At the same time the value represented by a pixel 
					is increased by a factor of 
					<formula>1/0.8944 = 1.118</formula>.</p>
				<p>We already found above, that a height pixel in our case represents 2.5 cm. 
					The same must be true on its orthogonal 
					<formula>s<sub>w</sub></formula>. 
					Therefore, even without knowing anything about the tile's edge length yet, 
					we know that a pixel on the <code>x</code> and <code>z</code> axes 
					represents <formula>2.5 cm/0.8944 = 2.8 cm</formula>. 
					All in all, not that much of a difference, but it still needs 
					to be taken into account if we want to work with a certain level 
					of accuracy.</p>
				<p>Now we have all data to find a meaningful edge length.</p>
				<p>"Find one? Let's just define one." - 
					This would work well in quite many instances. For example, 
					when we would go for a representation of data obtained via a DEM 
					(as described in the article 
					<link loc="int">
						<url>digital_elevation_models.aspx</url>
						<text>Digital Elevation Models</text>
					</link>) then we presumably already know the grid distance 
					(in the example followed in aforementioned article this would be 10 meters). 
					It all depends on how you plan to render the environment 
					and mix in your avatars. 
					However, if your avatars play a crucial role in your landscape 
					(as is most likely the case in games), then we can do better 
					than just use a predefined measure.</p>
				<p>For example would it be a great advantage to have a walking avatar 
					start and stop in the center of a tile. Doing so would enable us 
					to have fixed positions: we know, that a standing avatar would be located 
					on the center of a tile, which same point most likely also happens 
					to be the world's focus (i.e. the middle point of the screen 
					displaying the rendered landscape, such placing the avatar 
					in the middle as well, attracting the observer's attention; 
					hence the term "focus"), at least if the avatar is to represent a real user 
					(like a player in a game). This would facilitate many computations. 
					In our examples we want to use such facilitation, 
					therefore we attempt to find a meaningful edge size.</p>
				<p>Having that said, the question unavoidably arises: 
					what exactly is meaningful? - Well, we said it would be nice 
					if a walking avatar started and stopped in the center of a tile. 
					Walking is a series of steps, so it would be most natural 
					for an avatar-centered environment to take into account the avatar's 
					step length.</p>
				<p>It does not need a lot of online research to find an average (real-life) 
					measure for a human's average step length. 
					Depending on gender, weight and height, the step length 
					for slow to medium walking speeds is in the range of 
					typically 50 to 70 cm (Source: 
					<link loc="ext">
						<url>http://www.rehab.research.va.gov/jour/03/40/4/pdf/Al-Obaidi.pdf</url>
						<text>Basic gait parameters</text>
					</link> [PDF]).</p>
				<p>So our edge length ideally should be around 60±10 cm. 
					Expressed in pixels, this is 
					<formula>60±10 cm / (2.8 cm/px) = 21.43±3.57 px = 17.86..25 px</formula>. 
					So we are given the choice between (rounded) 18 and 25 pixels.</p>
				<p>At first, one might be disappointed: software developers tend 
					to favour powers of 2, because many calculations (especially divisions) 
					could be performed much faster. As such, 16 or 32 px would have been nice, 
					because they are powers of 2. However, they are out of range. 
					That's not much of a deal, though, as there is a more important consideration 
					to make: it is about the subdivision of tiles.</p>
				<p>Doubtlessly, 16 or 32 is a nice number when it comes to split down a tile 
					into ever smaller halves until 1 is reached, but it has 
					a really nasty property as well: powers of 2 are the only numbers 
					which divide a power of 2. Would we want to split the tile 
					into 3 parts, for example, then we would not be able to achieve that cleanly. 
					In that respect, a multiple of the small numbers 
					<formula>1&#215;2&#215;3 = 6</formula> would be desirable 
					(12 would even be better), and there we have luck: 
					24 pixels is such a multiple, and it is within the allowed range. 
					Furthermore, 24 also fulfills all the constraints which we outlined above.</p>
				<p>For these reasons, 24 pixels (along the edges corresponding 
					to <formula>24&#215;2.8 cm=67.2 cm</formula>) shall be the edge length 
					of our tile.</p>
				<multiimg orientation="vertical" float="right" width="215">
					<img>
						<url>img/iia_fig4.jpg</url>
						<alt>Zoomed-in tile with dimensions in pixels</alt>
						<caption>Fig. 4: Zoomed-in tile with dimensions in pixels</caption>
					</img>
					<img>
						<url>img/iia_fig5.jpg</url>
						<alt>Tiling the defined tiles and outline of an avatar on a tile</alt>
						<caption>Fig. 5: Tiling the defined tiles and outline of an avatar on a tile</caption>
					</img>
				</multiimg>
				<p>Above we mentioned (see fig. 1), that a tile does include both opposite edges. 
					Does this mean now, that these 24 pixels do include both edges, 
					i.e. do we need to subtract one of these edges when designing our tile? - 
					The answer is: "No". From the center of a tile to the center 
					of its orthogonally adjacent tile the distance shall be 24 pixels. 
					While "walking" from center to center on a tiled landscape, 
					we cross just one edge (which happens to be both the end of one tile 
					and the start of the other one). 
					But when the distance from center to center is 24 pixels, 
					then the same must be true along a tile's edge. 
					And since we start out at a corner, one (and only one) 
					such edge is included.</p>
				<p>With this we covered it all and are ready to start with the design of 
					our tile. To sum up our definitions:</p>
				<list>
					<li>An object's height along the <code>y</code> axis is represented 
						with 2.5 cm/pixel.</li>
					<li>An object's width and length along the <code>x</code> and 
						<code>z</code> axes are represented with 2.8 cm/pixel.</li>
					<li>A tile's edge is represented by 24 horizontal pixels and 
						12 vertical pixels, including one of the two corners on that edge. 
						The length of such an edge is 67.2 cm.</li>
				</list>
			</body>
		</chapter>
		<chapter>
			<heading id="B3">The Complete Framework</heading>
			<body>
				<p>According to our definitions, we would design a tile as shown in fig. 4 
					(magnified 4 times).</p>
				<p>Tiling then follows the rules outlined in article 
					<link loc="int">
						<url>isometric_projection.xml#B2</url>
						<text>Isometric Projection</text>
					</link>, section "Spotlight on Tiles", fig. 8-10.</p>
			</body>
		</chapter>
	</part>

</page>

