public function __construct(RayTracer_Vector $pos, RayTracer_Vector $lookAt, RayTracer_Vector $up) { $this->up = $up->normalize(); $this->position = $pos; $this->lookAt = $lookAt; $this->equator = $lookAt->normalize()->cross($this->up); $this->screen = RayTracer_Vector::add($this->position, $this->lookAt); }
function renderScene() { $scene = new RayTracer_Scene(); $scene->camera = new RayTracer_Camera(new RayTracer_Vector(0, 0, -15), new RayTracer_Vector(-0.2, 0, 5), new RayTracer_Vector(0, 1, 0)); $scene->background = new RayTracer_Background(new RayTracer_Color(0.5, 0.5, 0.5), 0.4); $sphere = new RayTracer_Shape_Sphere(new RayTracer_Vector(-1.5, 1.5, 2), 1.5, new RayTracer_Material_Solid(new RayTracer_Color(0, 0.5, 0.5), 0.3, 0.0, 0.0, 2.0)); $sphere1 = new RayTracer_Shape_Sphere(new RayTracer_Vector(1, 0.25, 1), 0.5, new RayTracer_Material_Solid(new RayTracer_Color(0.9, 0.9, 0.9), 0.1, 0.0, 0.0, 1.5)); $v = new RayTracer_Vector(0.1, 0.9, -0.5); $plane = new RayTracer_Shape_Plane($v->normalize(), 1.2, new RayTracer_Material_Chessboard(new RayTracer_Color(1.0, 1.0, 1.0), new RayTracer_Color(0.0, 0.0, 0.0), 0.2, 0.0, 1.0, 0.7)); $scene->shapes[] = $plane; $scene->shapes[] = $sphere; $scene->shapes[] = $sphere1; $light = new RayTracer_Light(new RayTracer_Vector(5, 10, -1), new RayTracer_Color(0.8, 0.8, 0.8)); $light1 = new RayTracer_Light(new RayTracer_Vector(-3, 5, -15), new RayTracer_Color(0.8, 0.8, 0.8), 100); $scene->lights[] = $light; $scene->lights[] = $light1; $imageWidth = 100; // $F('imageWidth'); $imageHeight = 100; // $F('imageHeight'); $pixelSize = split(',', "5,5"); // $F('pixelSize').split(','); $renderDiffuse = true; // $F('renderDiffuse'); $renderShadows = true; // $F('renderShadows'); $renderHighlights = true; // $F('renderHighlights'); $renderReflections = true; // $F('renderReflections'); $rayDepth = 2; //$F('rayDepth'); $raytracer = new RayTracer_Engine(array("canvasWidth" => $imageWidth, "canvasHeight" => $imageHeight, "pixelWidth" => $pixelSize[0], "pixelHeight" => $pixelSize[1], "renderDiffuse" => $renderDiffuse, "renderHighlights" => $renderHighlights, "renderShadows" => $renderShadows, "renderReflections" => $renderReflections, "rayDepth" => $rayDepth)); // Create a 55x30 image //$im = imagecreatetruecolor(500, 500); $im = null; $raytracer->renderScene($scene, $im, 0); /* // Save the image imagepng($im, './imagefilledrectangle.png'); imagedestroy($im); */ }