<!-- This example constructs a line_segment which goes through infinity, by using a via point,
     and then uses it to construct an arch as a locus_defined_by_point_on_line_segment 

     The segment s = line_segment( (-4,4) , (4,4) , (8,4) )  is built
     For each point X in s, the line a passes through X and O = (0,0), and a intersects at I with the line m (y=2).
     The result should be the locus l made by points I, the "foreshadow" of the segment s. 
     If everything is done right, s goes through infinity too.
-->

<construction xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../xml/intergeo.xsd">
	<elements>
		<line_segment id="s">
			<homogeneous_coordinates>
				<double>-4</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
			<homogeneous_coordinates>
				<double>4</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
			<homogeneous_coordinates>
				<double>8</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
		</line_segment>
		<line id="m">
			<homogeneous_coordinates>
				<double>0</double>
				<double>1</double>
				<double>-2</double>
			</homogeneous_coordinates>
		</line>
		<point id="M1">
			<homogeneous_coordinates>
				<double>-4</double>
				<double>2</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<point id="M2">
			<homogeneous_coordinates>
				<double>4</double>
				<double>2</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<point id="P">
			<homogeneous_coordinates>
				<double>-4</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<point id="Q">
			<homogeneous_coordinates>
				<double>4</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<point id="R">
			<homogeneous_coordinates>
				<double>8</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<point id="X">
			<homogeneous_coordinates>
				<double>5</double>
				<double>4</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<point id="O">
			<homogeneous_coordinates>
				<double>0</double>
				<double>0</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<line id="a">
			<homogeneous_coordinates>
				<double>4</double>
				<double>-5</double>
				<double>0</double>
			</homogeneous_coordinates>
		</line>
		<point id="I">
			<homogeneous_coordinates>
				<double>2.5</double>
				<double>2</double>
				<double>1</double>
			</homogeneous_coordinates>
		</point>
		<locus id="l"/>
	</elements>
	<constraints>
		<free_point>
			<point out="true">P</point>
		</free_point>
		<free_point>
			<point out="true">Q</point>
		</free_point>
		<free_point>
			<point out="true">R</point>
		</free_point>
		<free_point>
			<point out="true">X</point>
		</free_point>
		<free_point>
			<point out="true">O</point>
		</free_point>
		<free_point>
			<point out="true">M1</point>
		</free_point>
		<free_point>
			<point out="true">M2</point>
		</free_point>
		<line_through_two_points>
			<line out="true">m</line>
			<point>M1</point>
			<point>M2</point>
		</line_through_two_points>
		<line_segment_by_points>
			<line_segment out="true">s</line_segment>
			<point>P</point>
			<point>Q</point>
			<point>R</point>
		</line_segment_by_points>
		<line_through_two_points>
			<line out="true">a</line>
			<point>X</point>
			<point>O</point>
		</line_through_two_points>
		<point_intersection_of_two_lines>
			<point out="true">I</point>
			<line>a</line>
			<line>m</line>
		</point_intersection_of_two_lines>
		<locus_defined_by_point_on_line_segment>
			<locus out="true">l</locus>
			<point>I</point>
			<point>X</point>
			<line_segment>s</line_segment>
		</locus_defined_by_point_on_line_segment>
	</constraints>
</construction>

