/*
 * font.rh - 3D geometries of letters, numbers, and special characters.  
 *
 *   Based on upper case letters created by somebody.  (Sorry, but
 *	I can't remember who first posted this)  I hope that someone
 * 	will see this and add his/her name to this header.
 *
 *   Lower case letters, numbers, special characters, and small changes
 * 	to upper case letters by Dan Peisach and Eric Fontano,
 * 	Rosenstiel Medical Science Center, Brandeis University.
 */

/*
	Un-comment out the TEST line for a test image of the lower case 
	and numerical characters
 */

/*
#define TEST
*/
#ifndef THICK
#define THICK	0.1	/* Thickness of the letters */
#endif
#ifndef	RATIO		/* Ratio of height of lower and upper case letters */
#define RATIO	0.7	/* DO NOT SET BELOW 0.6 */
#endif
#define ARATIO	(1-RATIO)
#define GAP	(1-2*(1-RATIO))
#ifndef	HEIGHT	
#define HEIGHT 	2.0	/* Height (not including lower extensions) of chars */
#endif

/* 
	This endscale centers the letters at the origin and scales them.
	Get rid of the translate statement to place the origin of
	letters at the lower left corner.
 */

#define endscale   end translate -0.5 0 -1 \
	/* rotate 1 0 0 -90 */ scale (HEIGHT/2) (HEIGHT/2) (HEIGHT/2)


name toparc
intersect
	torus	0.5 THICK	0.5 0 1.5	0 1 0
	box	-1 -1 1.5	2 1 3
end

name botarc
intersect
	torus	0.5 THICK	0.5 0 0.5	0 1 0
	box	-1 -1 -1	2 1 0.5
end

name upperquarter
intersect
	torus	0.5 THICK	0.5 0 1.5	0 1 0
	box	0.5 -1 1.5	2 1 3
end

name upperleftquarter
intersect
	torus	0.5 THICK	0.5 0 1.5	0 1 0
	box	0.5 -1 1.5	-2 1 3
end

name upperarc
intersect
	torus	0.5 THICK	0.5 0 1.5	0 1 0
	box	0.5 -1 0	2 1 3
end

name lowerquarter
intersect
	torus	0.5 THICK	0.5 0 0.5	0 1 0
	box	0.5 -1 -1	2 1 0.5
end

name lowerleftquarter
intersect
	torus	0.5 THICK	0.5 0 0.5	0 1 0
	box	-1 -1 -1	0.5 1 0.5
end

name lowerarc
intersect
	torus	0.5 THICK	0.5 0 0.5	0 1 0
	box	0.5 -1 -1	2 1 2
end

name corner
intersect
	torus	THICK THICK	0 0 0	0 1 0
	box	0 -1 0		1 1 1
end
#define upperleft	object corner					   \
	rotate	0 1 0 -90	translate	THICK 0 (2-THICK)
#define lowerleft	object corner					   \
	rotate	0 1 0 180	translate	THICK 0 THICK

/*
 * A cylinder with a sphere on each end.
 */
#define cylsphere(len)							   \
	list								   \
		cylinder	THICK	0 0 0		0 0 (len)	   \
		sphere		THICK	0 0 0				   \
		sphere		THICK	0 0 (len)			   \
	end

/*
 * A cylinder with a sphere on one end and a disc on the other.
 */
#define cyldisc(len)							   \
	list								   \
		cylinder	THICK	0 0 0		0 0 (len)	   \
		sphere		THICK	0 0 0				   \
	end

name font_A
list
	cylinder	THICK	0 0 0		0.5 0 2
	cylinder	THICK	1 0 0		0.5 0 2
	cylinder	THICK	(0.5-0.5*0.5) 0 0.7	(0.5+0.5*0.5) 0 0.7
	sphere		THICK	0.5 0 2
	sphere		THICK	0 0 0
	sphere		THICK	1 0 0
endscale

name font_B
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 2		0.5 0 2
	cylinder	THICK	0 0 1		0.5 0 1
	cylinder	THICK	0 0 0		0.5 0 0
	object upperarc
	object lowerarc
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
endscale

name font_C
list
	object toparc
	cylinder	THICK	0 0 0.5		0 0 1.5
	object botarc
	sphere		THICK	1 0 1.5
	sphere		THICK	1 0 0.5
endscale

name font_D
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 2		0.5 0 2
	cylinder	THICK	1 0 0.5		1 0 1.5
	cylinder	THICK	0 0 0		0.5 0 0
	object upperquarter
	object lowerquarter
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
endscale

name font_E
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 0		1 0 0
	cylinder	THICK	0 0 2		1 0 2
	cylinder	THICK	0 0 1		0.75 0 1
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
	sphere		THICK	1 0 0
	sphere		THICK	1 0 2
	sphere		THICK	0.75 0 1
endscale

name font_F
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 2		1 0 2
	cylinder	THICK	0 0 1		0.75 0 1
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
	sphere		THICK	0.75 0 1
endscale

name font_G
list
	object toparc
	cylinder	THICK	0 0 0.5		0 0 1.5
	object botarc
	cylinder	THICK	1 0 0.8		1 0 0.5
	sphere		THICK	1 0 1.5
	cylinder	THICK	0.6 0 0.8	1 0 0.8
	sphere		THICK	1 0 0.8
	sphere		THICK	0.6 0 0.8
endscale

name font_H
list
	cylsphere(2)	translate		0 0 0
	cylsphere(2)	translate		1 0 0
	cylinder	THICK	0 0 1		1 0 1
endscale

name font_I
list
	cylinder	THICK	0.5 0 0 	0.5 0 2
	cylinder	THICK	0 0 0 		1 0 0 
	cylinder	THICK	0 0 2		1 0 2
	sphere		THICK 	0 0 0 
	sphere		THICK	1 0 0 
	sphere 		THICK	0 0 2
	sphere 		THICK	1 0 2
endscale

name font_J
list
	cyldisc(1.5)	rotate	0 1 0 180	translate	1 0 2
	object botarc
	sphere		THICK	0 0 0.5
endscale

name font_K
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	1 0 2		0 0 1
	cylinder	THICK	1 0 0		0.5 0 1.5
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
	sphere		THICK	1 0 0
endscale

name font_L
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 0		1 0 0
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
	sphere		THICK	1 0 0
endscale

name font_M
list
	cylsphere(2)	translate		0 0 0
	cylsphere(2)	translate		1 0 0
	cylinder	THICK	0 0 2		0.5 0 1
	cylinder	THICK	1 0 2		0.5 0 1
	sphere		THICK	0.5 0 1
endscale

name font_N
list
	cylsphere(2)	translate		0 0 0
	cylsphere(2)	translate		1 0 0
	cylinder	THICK	0 0 2		1 0 0
endscale

name font_O
list
	object toparc
	cylinder	THICK	0 0 0.5		0 0 1.5
	object botarc
	cylinder	THICK	1 0 0.5		1 0 1.5
endscale

name font_P
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 2		0.5 0 2
	cylinder	THICK	0 0 1		0.5 0 1
	object upperarc
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
endscale

name font_Q
list
	object toparc
	cylinder	THICK	0 0 0.5		0 0 1.5
	object botarc
	cylinder	THICK	1 0 0.5		1 0 1.5
	cylinder	THICK	1 0 0		0.6 0 0.8
	sphere		THICK	1 0 0
	sphere		THICK	0.6 0 0.8
endscale

name font_R
list
	cylinder	THICK	0 0 0		0 0 2
	cylinder	THICK	0 0 2		0.5 0 2
	cylinder	THICK	0 0 1		0.5 0 1
	object upperarc
	sphere		THICK	0 0 0
	sphere		THICK	0 0 2
	object upperarc
	object upperquarter	translate	0 0 -1
	cyldisc(0.5)		translate	1 0 0
endscale

name font_S
list
	sphere		THICK	1 0 1.5
	object toparc
	object lowerleftquarter	translate	0 0 1
	object upperquarter	translate	0 0 -1
	object botarc
	sphere		THICK	0 0 0.5
endscale

name font_T
list
	cyldisc(2)	translate		0.5 0 0
	cylsphere(1)
		rotate	0 1 0 90	translate	0 0 2
endscale

name font_U
list
	cylinder	THICK	0 0 0.5		0 0 2
	object botarc
	cylinder	THICK	1 0 0.5		1 0 2
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
endscale

name font_V
list
	cylinder	THICK	0.5 0 0		0 0 2
	cylinder	THICK	0.5 0 0		1 0 2
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
	sphere		THICK	0.5 0 0
endscale

name font_W
list
	sphere		THICK 	0 0 2
	cylinder	THICK	0 0 2		0.15 0 0 
	sphere		THICK	0.15 0 0
	cylinder	THICK	0.15 0 0		0.5 0 1
	sphere		THICK	0.5 0 1
	cylinder	THICK	.85 0 0		0.5 0 1
	sphere		THICK	.85 0 0 
	cylinder	THICK	.85 0 0 		1 0 2
	sphere 		THICK	1 0 2
endscale

name font_X
list
	cylinder	THICK	1 0 0		0 0 2
	cylinder	THICK	0 0 0		1 0 2
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
	sphere		THICK	1 0 0
	sphere		THICK	0 0 0
endscale

name font_Y
list
	cylinder	THICK	0 0 2		0.5 0 1
	cylinder	THICK	1 0 2		0.5 0 1
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
	cylsphere(1)	translate		0.5 0 0
endscale

name font_Z
list
	cylinder	THICK	0 0 2		1 0 2
	cylinder	THICK	0 0 0		1 0 2
	cylinder	THICK	0 0 0		1 0 0
	sphere		THICK	0 0 2
	sphere		THICK	1 0 2
	sphere		THICK	1 0 0
	sphere		THICK	0 0 0
endscale

name font_angstrom.dan
list
	cylinder	THICK	0 0 0		0.5 0 2
	cylinder	THICK	1 0 0		0.5 0 2
	cylinder	THICK	(0.5-0.5*0.5) 0 0.7	(0.5+0.5*0.5) 0 0.7
	sphere		THICK	0.5 0 2
	sphere		THICK	0 0 0
	sphere		THICK	1 0 0
	torus		0.25	(THICK / 2)	0.5 0 2.7 	0 1 0 
endscale

name font_a
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	0 0 0.5		0 0 (0.5+GAP)
	cylsphere(2*RATIO)	translate 1 0 0  
endscale

name font_b
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	1 0 0.5		1 0 (0.5+GAP)
	cylsphere(2)
endscale

name font_c
list
	object toparc 	translate	0 0 (-2*ARATIO)
	cylinder	THICK	0 0 0.5		0 0 (0.5+GAP)
	object botarc
	sphere		THICK	1 0 (0.5+GAP)
	sphere		THICK	1 0 0.5
endscale

name font_d
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	0 0 0.5		0 0 (0.5+GAP)
	cylsphere(2)	translate 	1 0 0 
endscale

name font_e
list
	object toparc 	translate	0 0 (-2*ARATIO)
	cylinder	THICK	0 0 0.5		0 0 (0.5+GAP)
	object botarc
	sphere		THICK	1 0 (0.5+GAP)
	cylinder	THICK	0 0 (0.5+GAP)	1 0 (0.5+GAP)
	sphere		THICK	1 0 0.5
endscale

name font_f
list
	sphere 		THICK	.5 0 0 
	cylinder	THICK	.5 0 0  .5 0 1.5
	object upperleftquarter	translate 0.5 0 0
	sphere		THICK	1 0 2
	cylinder	THICK	0.2 0 1			0.8 0 1
	sphere		THICK	0.2 0 1
	sphere		THICK	0.8 0 1
endscale

name font_g
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	0 0 0.5		0 0 (0.5+GAP)
	cylinder	THICK	1 0 (2*RATIO)	1 0 (0-GAP)
	object botarc	translate	0 0 (-0.5-GAP) 
	sphere		THICK	1 0 (2*RATIO)
	sphere		THICK	0 0 (0-GAP)
endscale

name font_h
list
	object toparc 	translate	0 0 (-2*ARATIO)
	cylsphere(2)	
	cylinder	THICK	1 0 0 	1 0 (0.5+GAP)
	sphere 		THICK	1 0 0 
endscale

name font_i
list
	cylsphere(2*RATIO) 	translate 0.5 0 0 
	sphere		THICK	0.5 0 (2*RATIO+GAP+THICK)
endscale

name font_j
list
	cylinder	THICK	1 0 (2*RATIO)	1 0 (0-GAP)
	object botarc	translate	0 0 (-0.5-GAP) 
	sphere		THICK	1 0 (2*RATIO)
	sphere		THICK	0 0 (0-GAP)
	sphere		THICK	1 0 (2*RATIO+GAP+THICK)
endscale

name font_k
list
	cylsphere(2)	
	cylinder	THICK	0 0 (0.6*RATIO) 	1 0 (2*RATIO)
	cylinder 	THICK	0.4 0 (0.6*RATIO+0.4*1.4*RATIO)	1 0 0
	sphere		THICK	1 0 0
	sphere		THICK	1 0 (2*RATIO)
endscale

name font_l
list
	cylsphere(2)	translate 0.5 0 0
endscale

name font_m
list
	intersect
		torus 0.25 THICK  0.25 0 (2*RATIO-0.25) 	0 1 0
		box -1 -1 (2*RATIO-0.25) 1 1 3
	end 
	intersect
		torus 0.25 THICK  0.25 0 (2*RATIO-0.25) 	0 1 0
		box -1 -1 (2*RATIO-0.25) 1 1 3
	end translate 0.5 0 0 
	cylsphere(2*RATIO)
	cylinder	THICK	0.5 0 0 	0.5 0 (2*RATIO-0.25)
	cylinder	THICK	1.0 0 0 	1.0 0 (2*RATIO-0.25)
	sphere		THICK	0.5 0 0
	sphere		THICK	1 0 0 
endscale


name font_n
list
	object toparc 	translate	0 0 (-2*ARATIO)
	cylsphere(2*RATIO)	
	cylinder	THICK	1 0 0 	1 0 (0.5+GAP)
	sphere 		THICK	1 0 0 
endscale

name font_o
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	0 0 0.5		0 0 (0.5+GAP)
	cylinder	THICK	1 0 0.5		1 0 (0.5+GAP)    
endscale

name font_p
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	1 0 0.5		1 0 (0.5+GAP)
	cylinder	THICK	0 0 (2*RATIO)	0 0 (0-2*GAP)
	sphere		THICK	0 0 (2*RATIO)
	sphere		THICK	0 0 (0-2*GAP)
endscale

name font_q
list
	object toparc 	translate	0 0 (-2*ARATIO)
	object botarc
	cylinder 	THICK	0 0 0.5		0 0 (0.5+GAP)
	cylinder	THICK	1 0 (2*RATIO)	1 0 (0-2*GAP)
	sphere		THICK	1 0 (2*RATIO)
	sphere		THICK	1 0 (0-2*GAP)
endscale

name font_r
list
	object toparc 	translate	0 0 (-2*ARATIO)
	cylsphere(2*RATIO)
	sphere		THICK	1 0 (0.5+GAP)
endscale

name font_s
list
  intersect
	torus (RATIO/2) THICK  (RATIO/2) 0 (1.5*RATIO) 	0 1 0
	box -1 -1 (RATIO-THICK) (RATIO/2) 1 3
  end 
  intersect
	torus (RATIO/2) THICK  (1-RATIO/2) 0 (1.5*RATIO) 	0 1 0
	box (1-RATIO/2) -1 (1.5*RATIO) 2 1 3
  end 
  intersect
	torus (RATIO/2) THICK  (RATIO/2) 0 (.5*RATIO) 	0 1 0
	box -1 -1 (.5*RATIO) (RATIO/2) 1 -1
  end 
  intersect
	torus (RATIO/2) THICK  (1-RATIO/2) 0 (.5*RATIO) 	0 1 0
	box (1-RATIO/2) -1 (RATIO+THICK) 2 1 -1
  end 
  cylinder	THICK	(RATIO/2) 0 0 		(1-RATIO/2) 0 0 
  cylinder	THICK	(RATIO/2) 0 (RATIO) 	(1-RATIO/2) 0 (RATIO) 
  cylinder	THICK	(RATIO/2) 0 (2*RATIO) 	(1-RATIO/2) 0 (2*RATIO) 
  sphere	THICK	0 0 (RATIO/2)
  sphere	THICK	1 0 (1.5*RATIO)
endscale

name font_t
list
	cylsphere(2)	translate 	0.5 0 0 
	cylinder	THICK	0.2 0 (2*RATIO)		0.8 0 (2*RATIO)
	sphere		THICK	0.2 0 (2*RATIO)
	sphere		THICK	0.8 0 (2*RATIO)
endscale

name font_u
list
	object 		botarc
	cylinder 	THICK	0 0 0.5		0 0 (2*RATIO)
	cylsphere(2*RATIO)	translate 1 0 0  
	sphere		THICK	0 0 (2*RATIO)
endscale

name font_u.new
list
	intersect
		torus (RATIO/2) THICK  (RATIO/2) 0 (.5*RATIO) 	0 1 0
		box -1 -1 (.5*RATIO) (RATIO/2) 1 -1
	end 
	intersect
		torus (RATIO/2) THICK  (1-RATIO/2) 0 (.5*RATIO) 	0 1 0
		box (1-RATIO/2) -1 (.5*RATIO) 2 1 -1
	end 
	cylinder	THICK	(RATIO/2) 0 0 		(1-RATIO/2) 0 0 
	cylinder 	THICK	0 0 (RATIO/2)		0 0 (2*RATIO)
	cylsphere(2*RATIO)	translate 1 0 0  
	sphere		THICK	0 0 (2*RATIO)
endscale

name font_v
list
	cylinder	THICK	0 0 (2*RATIO)	0.5 0 0 
	cylinder	THICK	1 0 (2*RATIO)	0.5 0 0 
	sphere		THICK	1 0 (2*RATIO)
	sphere 		THICK	0 0 (2*RATIO)
	sphere		THICK	0.5 0 0 
endscale

name font_w
list
	cylinder	THICK	0 0 (2*RATIO)	0.15 0 0 
	cylinder	THICK	1 0 (2*RATIO)	0.85 0 0
	sphere		THICK	0 0 (2*RATIO)
	sphere		THICK	1 0 (2*RATIO) 
	sphere 		THICK	0.15 0 0 
	sphere		THICK	0.85 0 0 
	cylinder	THICK	0.15 0 0		0.5 0 RATIO
	cylinder	THICK	0.85 0 0		0.5 0 RATIO
	sphere		THICK	0.5 0 RATIO
endscale

name font_w2
list
	sphere		THICK 0 0 (2*RATIO)
	cylinder	THICK 0 0 (2*RATIO)	0.25 0 0
	sphere		THICK 0.25 0 0
	cylinder	THICK 0.5 0 (2*RATIO)	0.25 0 0
	sphere		THICK 0.5 0 (2*RATIO)
	cylinder	THICK 0.5 0 (2*RATIO)	0.75 0 0
	sphere		THICK 0.75 0 0
	cylinder	THICK 1 0 (2*RATIO)	0.75 0 0
	sphere		THICK 1 0 (2*RATIO)
endscale

name font_x
list
	cylinder	THICK	0 0 (2*RATIO) 	1 0 0 
	cylinder	THICK	0 0 0 		1 0 (2*RATIO)
	sphere		THICK	0 0 0 
	sphere		THICK	0 0 (2*RATIO)
	sphere		THICK	1 0 0 
	sphere		THICK	1 0 (2*RATIO)
endscale

name font_y
list
	object botarc
	cylinder 	THICK	0 0 0.5		0 0 (2*RATIO)
	cylinder	THICK	1 0 (2*RATIO)	1 0 (0-GAP)
	object botarc	translate	0 0 (-0.5-GAP) 
	sphere		THICK	0 0 (2*RATIO)
	sphere		THICK	1 0 (2*RATIO)
	sphere		THICK	0 0 (0-GAP)
endscale

name font_z
list
	cylinder	THICK	0 0 (2*RATIO) 	1 0 (2*RATIO)
	cylinder	THICK	1 0 (2*RATIO)	0 0 0 
	cylinder	THICK	0 0 0 		1 0 0
	sphere		THICK	0 0 (2*RATIO)
	sphere		THICK	1 0 (2*RATIO)
	sphere		THICK	0 0 0 
	sphere		THICK	1 0 0 
endscale

name font_0
list
	object toparc
	cylinder	THICK	0 0 0.5		0 0 1.5
	object botarc
	cylinder	THICK	1 0 0.5		1 0 1.5
	cylinder	THICK	0 0 0 		1 0 2
	sphere		THICK	1 0 2
	sphere		THICK	0 0 0
endscale

name font_1
list
	cylsphere(2)	translate		0.5 0 0 
	cylinder	THICK	0.5 0 2		0.3 0 1.7
	sphere		THICK 	0.3 0 1.8
endscale

name font_2
list
	sphere		THICK	0 0 1.5
	object toparc
	cylsphere(0.125)	translate		1 0 1.375
	object lowerquarter	translate	0 0 0.875
	object upperleftquarter	translate	0 0 -1.125
	cylsphere(0.375)	translate 		0 0 0
	cylinder	THICK	0 0 0 		1 0 0 
	sphere		THICK	1 0 0 
endscale

name font_3
list
	object upperarc
	object lowerarc
	object toparc
	object botarc
	sphere		THICK	0 0 1.5
	sphere		THICK	0 0 0.5
	sphere		THICK	0.5 0 1
endscale

name font_4
list
	cylsphere(2)	translate	0.8 0 0 
	cylinder	THICK		0.8 0 2 	0 0 .7
	sphere 		THICK		0 0 0.7
	cylinder	THICK		0 0 0.7		1 0 0.7
	sphere		THICK		1 0 0.7
endscale

name font_5
list
	object botarc
	sphere		THICK		0 0 0.5
	cylinder	THICK		1 0 0.5	 	1 0 1
	object		toparc		scale 1 1 .75 translate 0 0 -0.125
	sphere		THICK		0 0 0 scale 1 1 0.75 translate 0 0 1
	cylinder 	THICK		0 0 1		0 0 2
	sphere		THICK		0 0 2
	sphere		THICK 		1 0 2
	cylinder	THICK		0 0 2		1 0 2
	
endscale	

name font_6
list
	object toparc
	object botarc
	object toparc translate 0 0 -0.875
	cylinder	THICK		1 0 0.5		1 0 0.625
	cylinder	THICK		0 0 0.5 	0 0 1.5
	sphere 		THICK		1 0 1.5
endscale

name font_7
list
	sphere 		THICK		0 0 2
	cylinder	THICK		0 0 2  		1 0 2
	sphere		THICK		1 0 2
	cylinder	THICK		1 0 2		0.25 0 0
	sphere		THICK		0.25 0 0 
endscale

name font_8
list
	object toparc
	object toparc translate 0 0 -1
	object botarc
	object botarc translate 0 0 1
endscale

name font_9
list
	object toparc
	object botarc
	object botarc translate 0 0 0.875
	cylinder	THICK		1 0 1.5		1 0 0.5
	cylinder	THICK		0 0 1.5 	0 0 1.375
	sphere 		THICK		0 0 0.5
endscale

name font_angstrom
list
	cylinder	THICK	0 0 0		0.5 0 2
	cylinder	THICK	1 0 0		0.5 0 2
	cylinder	THICK	(0.5-0.5*0.5) 0 0.7	(0.5+0.5*0.5) 0 0.7
	sphere		THICK	0 0 0
	sphere		THICK	1 0 0
	torus		0.25	(THICK / 2)	0.5 0 2.2 	0 1 0 
endscale

name font_exclamation
list
	sphere		THICK	0.5 0 0 
	cylsphere(1.5)	translate 0.5 0 0.5
endscale

name font_pound
list
	cylsphere(2)	translate 0.25 0 0
	cylsphere(2)	translate 0.75 0 0
	cylinder	THICK	0 0 0.667	1 0 0.667
	cylinder	THICK	0 0 1.333	1 0 1.333
	sphere		THICK	0 0 0.667
	sphere 		THICK	1 0 0.667
	sphere		THICK	0 0 1.333
	sphere		THICK	1 0 1.333
endscale

name font_dollar
list
  intersect
	torus (RATIO/2) THICK  (RATIO/2) 0 (1.5*RATIO) 	0 1 0
	box -1 -1 (RATIO-THICK) (RATIO/2) 1 3
  end translate 0 0 (ARATIO)
  intersect
	torus (RATIO/2) THICK  (1-RATIO/2) 0 (1.5*RATIO) 	0 1 0
	box (1-RATIO/2) -1 (1.5*RATIO) 2 1 3
  end translate 0 0 (ARATIO)
  intersect
	torus (RATIO/2) THICK  (RATIO/2) 0 (.5*RATIO) 	0 1 0
	box -1 -1 (.5*RATIO) (RATIO/2) 1 -1
  end translate 0 0 (ARATIO)
  intersect
	torus (RATIO/2) THICK  (1-RATIO/2) 0 (.5*RATIO) 	0 1 0
	box (1-RATIO/2) -1 (RATIO+THICK) 2 1 -1
  end translate 0 0 (ARATIO)
  cylinder	THICK	(RATIO/2) 0 (ARATIO)	(1-RATIO/2) 0 (ARATIO) 
  cylinder	THICK	(RATIO/2) 0 1	 	(1-RATIO/2) 0 1
  cylinder	THICK	(RATIO/2) 0 (1+RATIO) 	(1-RATIO/2) 0 (1+RATIO) 
  sphere	THICK	0 0 (RATIO/2+ARATIO)
  sphere	THICK	1 0 (1+0.5*RATIO)
  cylsphere(2) 	translate 0.333 0 0 
  cylsphere(2)	translate 0.667 0 0 
endscale

name font_up
list
	cylinder	THICK	.5 0 2	0 0 1
	cylinder	THICK	.5 0 2 	1 0 1
	sphere		THICK	.5 0 2
	sphere		THICK	0 0 1
	sphere		THICK	1 0 1
endscale

name font_slash
list
	cylinder	THICK	0 0 0 	1 0 2
	sphere		THICK	0 0 0
	sphere		THICK	1 0 2
endscale

name font_backslash
list
	cylinder	THICK	1 0 0 	0 0 2
	sphere		THICK	1 0 0 
	sphere		THICK	0 0 2
endscale

name font_percent
list
	torus		0.25	THICK	0.25 0 1.75 	0 1 0 
	torus		0.25	THICK	0.75 0 0.25	0 1 0
	cylinder	THICK	0 0 0 	1 0 2
	sphere		THICK	0 0 0
	sphere		THICK	1 0 2
endscale

name font_star
list
	cylinder	THICK	.2 0 .4		.8 0 1.6
	cylinder	THICK	.2 0 1.6	.8 0 .4
	cylinder	THICK	0 0 1		1 0 1
	sphere		THICK	.2 0 .4
	sphere		THICK	.8 0 .4
	sphere		THICK	1 0 1 
	sphere		THICK	.8 0 1.6 
	sphere		THICK	.2 0 1.6 
	sphere		THICK	0 0 1
endscale

name font_leftp
list
	intersect
		torus	.5	THICK	0.5 0 1.5 	0 1 0 
		box			 -1 -1 1.5 	.5 1 3
	end
	intersect
		torus	.5	THICK	.5 0 .5		0 1 0
		box			-1 -1 -1	.5 1 .5
	end
	cylinder	THICK	0 0 .5		0 0 1.5
	sphere		THICK	.5 0 0 
	sphere		THICK	.5 0 2
endscale

name font_rightp
list
	intersect
		torus	.5	THICK	0.5 0 1.5 	0 1 0 
		box			 .5 -1 1.5 	2 1 3
	end
	intersect
		torus	.5	THICK	.5 0 .5		0 1 0
		box			.5 -1 -1	2 1 .5
	end
	cylinder	THICK	1 0 .5		1 0 1.5
	sphere		THICK	.5 0 0 
	sphere		THICK	.5 0 2
endscale

name font_plus
list
	cylsphere(1) translate 0.5 0 0.5
	cylinder	THICK	0 0 1 	1 0 1
	sphere		THICK	0 0 1
	sphere		THICK	1 0 1
endscale

name font_minus
list
	cylinder	THICK	0 0 1 	1 0 1
	sphere		THICK	0 0 1
	sphere		THICK	1 0 1
endscale

#ifdef TEST
surface gray
	ambient 0.15 0.15 0.15
	diffuse 0.7 0.7 0.7
surface orange
	ambient 0.3 0.1 0
	diffuse 0.7 0.4 0.1
	reflect 0.15
surface green
	ambient 0.262745 0.262745 0.262745 
	diffuse 0.039216 0.639216 0.039216 
surface redshine
	ambient 0.3 0 0
	diffuse 0.9 0 0
	specular 0.4 0.4 0.4
	specpow 10 
surface blueshine
	ambient 0 0 0.02
	diffuse 0 0 0.5
	specular 0.4 0.4 0.6
	specpow 100
	reflect 1
surface lampshade
	ambient		0.4 0.4 0.4
	diffuse		0.4 0.4 0.4
	transp		0.05
	translu		0.95 1.0 1.0 1.0 100
surface glass
	diffuse .00 .00 .00 specular .5 .5 .5 specpow 2
	reflect .45 transp .9 body 1 .9 0 index 1.3



up		0 0 1 
fov		25
screen		640 400
maxdepth	4
background	0 0 0 
eyep		24 -40 9
lookp		5.75 0 (3.25+THICK*4)

/*
 * Uncomment these for slower tracing
sample		4
contrast	.1 .1 .1
*/
/*
 * Uncomment these for faster tracing
 */
sample		2 nojitter
contrast	.5 .5 .5

light		.8		point	20 30 66 
light		1.2		point	0 -20 10

/*
 * Floor
 */
plane blueshine		0 0 (-1.5-THICK)	0 0 1 
applysurf orange

object font_a		translate	0 0 (7.5+THICK*6)
object font_b		translate	1.5 0 (7.5+THICK*6)
object font_c		translate	3.0 0 (7.5+THICK*6)
object font_d		translate	4.5 0 (7.5+THICK*6)
object font_e		translate	6.0 0 (7.5+THICK*6)
object font_f		translate	7.5 0 (7.5+THICK*6)
object font_g		translate	9 0 (7.5+THICK*6)
object font_h		translate	10.5 0 (7.5+THICK*6)

object font_i		translate	-0.75 0 (5+THICK*4)
object font_j		translate	0.75 0 (5+THICK*4)
object font_k		translate	2.25 0 (5+THICK*4)
object font_l		translate	3.75 0 (5+THICK*4)
object font_m		translate	5.25 0 (5+THICK*4)
object font_n		translate	6.75 0 (5+THICK*4)
object font_o		translate	8.25 0 (5+THICK*4)
object font_p		translate	9.75 0 (5+THICK*4)
object font_q		translate	11.25 0 (5+THICK*4)

object font_r		translate	-0.75 0 (2.5+THICK*2)
object font_s		translate	0.75 0 (2.5+THICK*2)
object font_t		translate	2.25 0 (2.5+THICK*2)
object font_u		translate	3.75 0 (2.5+THICK*2)
object font_v		translate	5.25 0 (2.5+THICK*2)
object font_w		translate	6.75 0 (2.5+THICK*2)
object font_x		translate	8.25 0 (2.5+THICK*2)
object font_y		translate	9.75 0 (2.5+THICK*2)
object font_z		translate	11.25 0 (2.5+THICK*2)

object font_0		translate	-1.5 0 -.5
object font_1		translate	0 0 -.5
object font_2		translate	1.5 0 -.5
object font_3		translate	3.0 0 -.5
object font_4		translate	4.5 0 -.5
object font_5		translate	6.0 0 -.5
object font_6		translate	7.5 0 -.5
object font_7		translate	9 0 -.5
object font_8		translate	10.5 0 -.5
object font_9		translate	12.0 0 -.5
#endif
