diff options
author | sotech117 <michael_foiani@brown.edu> | 2023-12-12 22:57:38 -0500 |
---|---|---|
committer | sotech117 <michael_foiani@brown.edu> | 2023-12-12 22:57:38 -0500 |
commit | b4f50256edcbb66e831ee910c8f3af331457ceda (patch) | |
tree | 2ecb9f495ad31089ca76d7923f17dc7ff7130e8a | |
parent | 29785b8a928d464b46cb5c977adf100ee966be6b (diff) |
update aspect ratio to be 3 dimensional
-rw-r--r-- | src/accelerate/myqtconcurrent.cpp | 1 | ||||
-rw-r--r-- | src/raytracer/raytracer.cpp | 3 | ||||
-rw-r--r-- | src/raytracer/raytracescene.cpp | 9 | ||||
-rw-r--r-- | src/raytracer/raytracescene.h | 7 |
4 files changed, 16 insertions, 4 deletions
diff --git a/src/accelerate/myqtconcurrent.cpp b/src/accelerate/myqtconcurrent.cpp index 211317b..686d28f 100644 --- a/src/accelerate/myqtconcurrent.cpp +++ b/src/accelerate/myqtconcurrent.cpp @@ -18,6 +18,7 @@ void RayTracer::renderParallel(RGBA *imageData, const RayTraceScene &scene) float cameraDepth = 1.f; float viewplaneHeight = 2.f*cameraDepth*std::tan(camera.getHeightAngle() / 2.f); float viewplaneWidth = cameraDepth*viewplaneHeight*((float)scene.width()/(float)scene.height()); + float viewplaneDepth = cameraDepth*viewplaneHeight * ((float)scene.depth() / (float)scene.height()); QList<pixelRoutineArgs> l{}; // for (int imageRow = 0; imageRow < scene.height(); imageRow++) { diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp index 0746225..11876ab 100644 --- a/src/raytracer/raytracer.cpp +++ b/src/raytracer/raytracer.cpp @@ -171,6 +171,7 @@ void RayTracer::sceneChanged(QLabel* imageLabel) { int width = 576; int height = 432; + int depth = 500; // render the scene QImage image = QImage(width, height, QImage::Format_RGBX8888); @@ -178,7 +179,7 @@ void RayTracer::sceneChanged(QLabel* imageLabel) { RGBA *data = reinterpret_cast<RGBA *>(image.bits()); - RayTraceScene rtScene{ width, height, m_metaData }; + RayTraceScene rtScene{ width, height,m_metaData, depth }; this->render(data, rtScene); QImage flippedImage = image.mirrored(false, false); diff --git a/src/raytracer/raytracescene.cpp b/src/raytracer/raytracescene.cpp index f70aa83..77541e3 100644 --- a/src/raytracer/raytracescene.cpp +++ b/src/raytracer/raytracescene.cpp @@ -4,12 +4,13 @@ #include "raytracer.h" #include <iostream> -RayTraceScene::RayTraceScene(int width, int height, const RenderData &metaData) : +RayTraceScene::RayTraceScene(int width, int height, const RenderData &metaData, int depth) : m_camera(* new Camera(metaData.cameraData)) { // Optional TODO: implement this. Store whatever you feel is necessary. m_width = width; m_height = height; + m_depth = depth; m_sceneGlobalData = metaData.globalData; m_shapes = metaData.shapes; m_lights = metaData.lights; @@ -37,6 +38,12 @@ const int& RayTraceScene::height() const { return m_height; } + +const int& RayTraceScene::depth() const { + // Optional TODO: implement the getter or make your own design + return m_depth; +} + const SceneGlobalData& RayTraceScene::getGlobalData() const { // Optional TODO: implement the getter or make your own design return m_sceneGlobalData; diff --git a/src/raytracer/raytracescene.h b/src/raytracer/raytracescene.h index b61bd2f..a380adc 100644 --- a/src/raytracer/raytracescene.h +++ b/src/raytracer/raytracescene.h @@ -14,9 +14,9 @@ class RayTraceScene { public: - RayTraceScene(int width, int height, const RenderData &metaData); + RayTraceScene(int width, int height, const RenderData &metaData, int depth=500); - // The getter of the width of the scene +// The getter of the width of the scene const int& width() const; // The getter of the height of the scene @@ -39,4 +39,7 @@ private: Camera& m_camera; std::vector<RenderShapeData>m_shapes; std::vector<SceneLightData>m_lights; + int m_depth; + + const int &depth() const; }; |