/* Due to popular demand (9 requests in just a few minutes) I'm sending my rayshade A-Z tube font. At the tail end of this file is a section under "#ifdef TEST" for the purpose of an example. Also, at the top of the file is a definition of THICK which can be varied from small up to about 0.4. By running the following command, you should get a reasonable example: rayshade -P -DTEST font.ray > font.out BTW, on an IBM RS/6000 Model 530H this takes less than 3 minutes. Enjoy it -- Feedback is very welcome. -- Paul Chamberlain | | UNIX: tif@austin.ibm.com IBM AWS, I/O Dev | 512/838-3759, IBM T/L 678 | IBM-VNET: PAULCC AT AUSTIN */ #define THICK 0.25 #ifndef THICK #define THICK 0.1 #endif 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 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.4*0.5) 0 0.8 (0.5+0.4*0.5) 0 0.8 sphere THICK 0.5 0 2 sphere THICK 0 0 0 sphere THICK 1 0 0 end 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 end 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 end 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 end 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 end 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 end 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 end name font_h list cylsphere(2) translate 0 0 0 cylsphere(2) translate 1 0 0 cylinder THICK 0 0 1 1 0 1 end name font_i list cylsphere(2) translate 0.5 0 0 end name font_j list cyldisc(1.5) rotate 0 1 0 180 translate 1 0 2 object botarc sphere THICK 0 0 0.5 end 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 end 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 end 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 end name font_n list cylsphere(2) translate 0 0 0 cylsphere(2) translate 1 0 0 cylinder THICK 0 0 2 1 0 0 end 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 end 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 end 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 end 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 end 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 end name font_t list cyldisc(2) translate 0.5 0 0 cylsphere(1) rotate 0 1 0 90 translate 0 0 2 end 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 end 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 end name font_w list cylsphere(2) translate 0 0 0 cylsphere(2) translate 1 0 0 cylinder THICK 0 0 0 0.5 0 1 cylinder THICK 1 0 0 0.5 0 1 sphere THICK 0.5 0 1 end 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 end 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 end 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 end #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 320 200 maxdepth 4 background 0 0 0 eyep 18 -30 9 lookp 4.25 0 (4+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 (-THICK) 0 0 1 applysurf orange object font_a translate 0 0 (6+THICK*6) object font_b translate 1.5 0 (6+THICK*6) object font_c translate 3.0 0 (6+THICK*6) object font_d translate 4.5 0 (6+THICK*6) object font_e translate 6.0 0 (6+THICK*6) object font_f translate 7.5 0 (6+THICK*6) object font_g translate -0.75 0 (4+THICK*4) object font_h translate 0.75 0 (4+THICK*4) object font_i translate 2.25 0 (4+THICK*4) object font_j translate 3.75 0 (4+THICK*4) object font_k translate 5.25 0 (4+THICK*4) object font_l translate 6.75 0 (4+THICK*4) object font_m translate 8.25 0 (4+THICK*4) object font_n translate -0.75 0 (2+THICK*2) object font_o translate 0.75 0 (2+THICK*2) object font_p translate 2.25 0 (2+THICK*2) object font_q translate 3.75 0 (2+THICK*2) object font_r translate 5.25 0 (2+THICK*2) object font_s translate 6.75 0 (2+THICK*2) object font_t translate 8.25 0 (2+THICK*2) object font_u translate 0 0 0 object font_v translate 1.5 0 0 object font_w translate 3.0 0 0 object font_x translate 4.5 0 0 object font_y translate 6.0 0 0 object font_z translate 7.5 0 0 #endif