// Last edited on 2010-05-16 02:41:04 by stolfilocal // Test scenes // Clips scene to [-1,+1] x [-1,+1] x [0,+1]: #declare test_scene_clipper = box{ < -1-eps, -1-eps, 0+eps >, < +1+eps, +1+eps, +1+eps > } #declare test_scene_cone = cone{ < 0, 0, 0+eps >, 0.9-eps, < 0, 0, 0.9*sqrt(3)/2-eps >, 0 } #declare test_scene_dome = intersection{ sphere{ < 0, 0, 0+eps >, 0.90 } object{ test_scene_clipper } } #declare test_scene_donut = intersection{ #local R = 0.60; #local r = 0.30; #local ang = 90 - degrees(asin(r/R/2)); #debug concat("torus dunk angle = ", str(ang,6,1), "\n") torus{ R, r-eps rotate ang*x translate -r/2*z } object{ test_scene_clipper } } #declare fragm_coin = seed(4615); #declare test_scene_fragm = union{ #local i = 0; #local R = 0.8; #local r = 0.1; #while (i < 5000) #local pt = < 2*rand(fragm_coin)-1, 2*rand(fragm_coin)-1, 0 >; #if (vlength(pt) <= 1) #local ht = 0.25*(1 - vlength(pt)*vlength(pt)) - r + r*rand(fragm_coin); #local rd = r*(0.4 + 0.6*rand(fragm_coin)); #local cr = < rand(fragm_coin), rand(fragm_coin), rand(fragm_coin) >; sphere{ R*pt+ht*z, rd texture{ pigment{ color rgb 0.3*<1,1,1> + 0.7*cr } finish{ ambient 0 diffuse 1.0 } } } #end #local i = i + 1; #end } #macro test_blocks(dimpled) union{ object{ test_scene_cone scale 0.5 texture{ tx_matte_spots } translate < -0.50, -0.50, 0 > } object{ test_scene_dome scale 0.5 texture{ tx_gauge } translate < +0.50, +0.50, 0 > } object{ test_scene_donut scale 0.5 texture{ tx_matte_bozo } translate < +0.50, -0.50, 0 > } object{ test_scene_fragm scale 0.5 translate < -0.50, +0.50, 0 > } } #end