<?xml version="1.0" ?>
<!--
	This is a sample file for creating a surface via xml.
	The necessary data are:
	* a collection of polygons in R^2;
	* a collection of "edge pairings", i.e., identifications among the edges of the polygons
	  to create a compact translation surface without boundary;
	* a polynomial to specify an algebraic field in which the coordinates of the polygons 
	  will lie, and a double value that approximates the desired root of the polynomial.
	The surface we will create here is a torus from a hexagonal lattice. It will be composed 
	of two equilateral triangles. This file should generate a tiling of the upper half-plane 
	by ideal triangles, with pi/3 rotational symmetry about i = (0,1).
-->

<surface>
<!-- 
	The first element to include in the file is the field data. "polynomial" is the 
	minimal polynomial of an algebraic number a. It must be monic, and if a linear 
	term is present, it must include an exponent (as in a^1). It is important to 
	specify the root to at least 16 or so decimal places, as this value is used in 
	several important computations.
	
	The "constant"s are any value in the field generated by a that the user may find 
	useful. (Currently division of non-integers is not implemented, however.)
	They are created in order, so each may used previously defined constants.
-->
	<groupExtension>
		<polynomial variable="a" root="1.4142135623720951">a^2 - 2</polynomial>
		<constant name="C">1/2</constant>
		<constant name="S">C*a</constant>
	</groupExtension>

<!--
	Next we specify the polygons to be used. The vertices should be given in 
	counterclockwise order, and separated with punctuation as illustrated below.
	(Spaces are ignored.)
-->
	<polygonList>
		<polygon name="A">
			<pointList>(1,0); (-C,S); (-C,-S)</pointList>
		</polygon>
		<polygon name="B">
			<pointList>(-1,0); (C,-S); (C,S)</pointList>
		</polygon>
	</polygonList>

<!--
	Finally, we specify the edge identifications. These are checked for compatibility: 
	the two sides included in a pair must, as vectors, add to zero. Side 1 of a polygon 
	is the side from the first point to the second point in that polygon's pointList, 
	and so forth, so that the last side is the side from the last point to the first 
	point in the pointList.
-->
	<edgeList>
		<pair>(A,1);(B,1)</pair>
		<pair>(A,2);(B,2)</pair>
		<pair>(A,3);(B,3)</pair>
	</edgeList>
</surface>
