#include "colors.inc" #include "shapes.inc" #include "textures.inc" #include "stones.inc" declare camera1 = camera { location < 14.0, 9.0, -7.0> look_at < 8.0, 4.0, 2.0> } declare camera2 = camera { location <0, 0, -4 > look_at <0, 0, 0 > } declare camera3 = camera { // From right side towards left location <14.0, -10, 2.0> look_at <-1, -10, 2.0> } declare camera4 = camera { // From above location <0.0, 2.0, -2.0> look_at <0.0, 0.0, 0.01> } declare hemisphere = difference { sphere { < 0, 0, 0>, 1 } box { < -1, 0, -1>, < 1, 1, 1> } } declare flat_hemisphere = difference { object { hemisphere } box { < -1, -2, -1>, < 1, -0.60, 1 > } } declare bowl = difference { object { flat_hemisphere } object { flat_hemisphere scale 0.97 translate < 0, 0.01, 0 > } bounded_by { box { < -1, -1, -1>, < 1, 0, 1 > } } translate < 0, 0.6, 0 > scale 2.0 } declare orange = sphere { < 0, 0, 0>, .5 texture { pigment { Orange } normal { bumps 0.3 scale 0.02} finish { phong 0.1 } } } declare fruit_bowl = union { object { bowl texture { DMFWood1 rotate < 0, 45, 0 > finish { phong 0.6 } } } object { orange translate < -1.2, 0.6, 0 > } object { orange scale 1.2 translate < -0.2, 0.6, 0 > } object { orange scale 0.9 translate < 0.8, 0.6, 0 > } object { orange scale 1.1 translate < -0.7, 0.6, 1.0 > } object { orange scale 0.8 translate < 0.3, 0.6, 1.0 > } object { orange translate < -0.7, 0.6, -1.0 > } object { orange translate < 0.3, 0.6, -1.0 > } bounded_by { box { < -2, 0, -2>, < 2, 3, 2 > } } } declare qtr_cylinder = difference { cylinder { < 0, 0, 0>, < 0, 1, 0>, 1 } box { < -1.5, -0.5, -1.5>, < 1.5, 1.5, 0 > } box { < 0, -0.5, -1.5>, < 1.5, 1.5, 1.5 > } bounded_by { box { < -1, 0, 0>, < 0, 1, 1> } } } declare work_top = union { box { <-8, 0, 0>, < 0.1, 1, 1 > } object { qtr_cylinder rotate < 0, 180, 0 > rotate < 90, 0, 0 > } bounded_by { box { < -8, 0, 0 >, < 1, 1, 1 > }} } declare tile = union { box { < -0.1, 1, 0>, < -0.02, 4, 3 > pigment { White } } box { < -0.1, 1.05, 0.05>, < 0, 3.95, 2.95 > texture { Stone1 scale 0.7 finish { phong 0.2 } } } } declare tile_row = union { object { tile } object { tile translate < 0, 0, 3 > } object { tile translate < 0, 0, 6 > } object { tile translate < 0, 0, 9 > } object { tile translate < 0, 0, 12 > } object { tile translate < 0, 0, 15 > } object { tile translate < 0, 0, 18 > } object { tile translate < 0, 0, 21 > } object { tile translate < 0, 0, 24 > } object { tile translate < 0, 0, 27 > } } declare tile_column = union { object { tile } object { tile translate < 0, 3, 0 > } object { tile translate < 0, 6, 0 > } object { tile translate < 0, 9, 0 > } object { tile translate < 0, 12, 0 > } object { tile translate < 0, 15, 0 > } object { tile translate < 0, 18, 0 > } } declare bulb = light_source { < 1.4, 0.75, 0 > color White } declare bracket = difference { union { box { < -1, -1, -1 >, < 1, 1, 1 > } cylinder { < 0, 1, -1 >, < 0, 1, 1 >, 1 } } box { < -1, -0.9, -0.9>, < 2, 2, 0.9 > } scale < 0.5, 0.75, 1> } declare lampcase = union { object { bowl scale 0.75 rotate < 0, 0, 270 > translate <1.25, 0, 0> } cylinder { <-0.75, 0, 0>, < 1.0, 0, 0>, 0.89 } texture { Brass_Texture } } declare lamp = union { object { lampcase translate < 0, 0.5, 0 > rotate < 0, 0, 20 > } object { bracket texture { Silver_Texture } } object { bulb } translate < 0.25, 0.375, 0 > } declare glass = difference { cylinder { < 0, 0, 0>, < 0, 1, 0>, 1.0 } cylinder { < 0, 0.2, 0>, < 0, 1.5, 0>, 0.97 } texture { Glass3 } } declare full_juice = cylinder { < 0, 0.2, 0>, < 0, 0.9, 0>, 0.965 pigment { color red 1.0 green 0.7 } finish { phong 0.2 } } declare half_juice = cylinder { < 0, 0.2, 0>, < 0, 0.6, 0>, 0.965 pigment { color red 1.0 green 0.7 } finish { phong 0.2 } } declare full_juice_glass = union { object { glass } object { full_juice } scale < 0.50, 2.5, 0.50 > translate < 0, 1, 0 > } declare half_juice_glass = union { object { glass } object { half_juice } scale < 0.50, 2.5, 0.50 > translate < 0, 1, 0 > } declare drawer_handle = union { intersection { cylinder { < 0, 0, 0>, < 0, 1.0, 0>, 1 } difference { cylinder { < 0, 0, 0>, < 0, 2, 0 >, 1 } torus { 1.2, 0.8 translate < 0, 1.0, 0 > } } } sphere { < 0, 2.2, 0>, 1 scale < 1, 0.25, 1 > translate < 0, 0.85, 0 >} } declare plank = box { < 0, 0, 0 >, < 3, 1, 8.0 > } declare drawer = difference { union { object { plank } object { drawer_handle scale 0.3 translate < 1.5, 1, 4 > texture { Brass_Texture } } } object { qtr_cylinder rotate < 0, 0, 90 > scale < 3, 0.4, 0.4 > translate < 3, 1.01, -0.01 > } object { qtr_cylinder rotate < 90, 0, 0 > rotate < 0, 0, 90 > scale < 0.4, 0.4, 8.0 > translate < -0.01, 1.01, 0 > } object { qtr_cylinder rotate < 0, 0, 90 > rotate < 0, 180, 0 > scale < 3, 0.4, 0.4 > translate < 0, 1.01, 8.01 > } object { qtr_cylinder rotate < 90, 0, 0 > rotate < 0, 0, 90 > rotate < 0, 180, 0> scale < 0.4, 0.4, 8.0 > translate < 3.01, 1.01, 8.0 > } } declare door = difference { union { object { plank scale < 4, 1, 1 >} object { drawer_handle scale 0.3 translate < 6, 1, 7 > texture { Brass_Texture } } } object { qtr_cylinder rotate < 0, 0, 90 > scale < 12, 0.4, 0.4 > translate < 12, 1.01, -0.01 > } object { qtr_cylinder rotate < 90, 0, 0 > rotate < 0, 0, 90 > scale < 0.4, 0.4, 8.0 > translate < -0.01, 1.01, 0 > } object { qtr_cylinder rotate < 0, 0, 90 > rotate < 0, 180, 0 > scale < 12, 0.4, 0.4 > translate < 0, 1.01, 8.01 > } object { qtr_cylinder rotate < 90, 0, 0 > rotate < 0, 0, 90 > rotate < 0, 180, 0> scale < 0.4, 0.4, 8.0 > translate < 12.01, 1.01, 8.0 > } } declare doors = union { object { drawer rotate < 0, 0, 270 > translate < 0, -0.5, 0 > } object { door rotate < 0, 0, 270 > translate < 0, -4.0, 0 > } bounded_by { box { < 0, 0, 0 >, < 3, -16, 8 > }} texture { DMFWood3 } finish { Shiny } } declare dovetail1 = difference { object { qtr_cylinder rotate < 270, 0, 0 > translate < 1, 0, 1 > rotate < 0, 45, 0 > } box { < 0, -0.2, -3.0>, < 3, 2.0, 0 > } rotate < 0, 315, 0 > translate < -1, 0, -1 > } declare dovetail2 = difference { object { qtr_cylinder rotate < 270, 0, 0 > rotate < 0, 270 , 0 > translate < -1, 0, 0 > rotate < 0, 315, 0 > } box { <-2, -0.2, -2 >, < 0, 2, 0 > } rotate < 0, 45, 0 > } declare cylinder_dovetail = union { object { dovetail1 translate < 0, 0, -0.01 > } object { dovetail2 translate < -0.00, 0, 0 > } } declare half_edge = union { object { qtr_cylinder rotate < 270, 0, 0 > translate < 0, 0, 0.99 > scale < 1, 1, 18 > } object { qtr_cylinder rotate < 270, 0, 0 > rotate < 0, 270, 0 > scale < 8, 1, 1 > } object { cylinder_dovetail } object { cylinder_dovetail rotate < 0, 270, 0 > translate < 8, 0, 0 > } } declare curved_tray = union { object { half_edge } object { half_edge rotate < 0, 180, 0 > translate < 8, 0, 18 > } box { < 0, 0, 0 >, < 8, 1.0, 18 > } translate < 1, 0, 1 > } declare toaster_base = union { box { < 0, 0, 0>, < 5, 0.5, 10 > } object { curved_tray scale 0.5 translate < 0, 0.5, 0 > } } declare toaster_body = difference { union { box { < 0, 0, 0>, < 5, 5, 10 > } object { curved_tray scale 0.5 translate < 0, 5, 0 > } } box { < 1, 2, 1>, < 2, 10, 9 > } box { < 3, 2, 1>, < 4, 10, 9 > } } declare toaster = union { object { toaster_base pigment { color red 0.85 green 0.8 blue 0.85 } finish { Shiny } } object { toaster_body scale 0.8 translate < 0.5, 0.75, 0.5 > texture { Polished_Chrome } } bounded_by { box { < 0, 0, 0 >, < 5, 7, 10 > } } } camera { camera1 } light_source { < 22, 12, 6 > color White } box { < 0, 14, 0>, < 40, 15, 40 > pigment { LightGrey } } object { toaster scale 0.75 rotate < 0, 20, 0 > translate < 1.5, 1, 20.5 > } plane { < 0, 1, 0 >, -16.5 pigment { checker color White color Black scale 4.0 } } box { < 0, 0, 0 >, < 7.96, -17, 32 > texture { DMFWood1 } finish { Shiny } } box { < 0, 0, 22.2>, < 30, -17, 25.2 > texture { DMFWood1 } finish { Shiny } } object { work_top scale < 1, 1, 37.8 > translate < 8, 0, 0 > texture { Stone16 scale 0.5} } object { work_top scale < 1, 1, 30 > rotate < 0, 90, 0 > translate < 8, 0, 22 > texture { Stone16 scale 0.5} } object { doors translate < 7.8, 0, 1.0 > } object { doors translate < 7.8, 0, 11.0 > } object { doors rotate < 0, 90, 0 > translate < 10.0, 0, 22.2 > } object { full_juice_glass translate < 4, 0, 1 > } object { half_juice_glass translate < 6, 0, 3 > } object { fruit_bowl scale 1.5 translate < 3, 1, 8 > } object { tile_row rotate < 0, 90, 0 > translate < 0, 0, 30 > } object { tile_row rotate < 0, 90, 0 > translate < 0, 3, 30 > } object { tile_row rotate < 0, 90, 0 > translate < 0, 6, 30 > } object { tile_row } object { tile_row translate < 0, 3, 0 > } object { tile_row translate < 0, 6, 0 > } object { tile_column translate < 0, -9, -3 > } object { tile_column translate < 0, -9, -6 > } object { lamp scale 0.5 rotate < 0, 0, 270 > rotate < 340, 0, 0 > translate < 0, 9, 0 > } object { lamp scale 0.5 rotate < 0, 0, 270 > rotate < 20, 0, 0 > translate < 0, 9, 25 > }