diff options
author | David Doan <daviddoan@Davids-MacBook-Pro-70.local> | 2023-12-08 13:25:50 -0500 |
---|---|---|
committer | David Doan <daviddoan@Davids-MacBook-Pro-70.local> | 2023-12-08 13:25:50 -0500 |
commit | 31d28f945856ff4b3f5d55e61a747afd08d6f0f9 (patch) | |
tree | 82916f5a11c14da7d91f8f8b0de1f977e6a3af08 /src/raytracer/raytracer.cpp | |
parent | 7445995cbedb5d77d5abea54df7c976ca6664d76 (diff) |
rotation
Diffstat (limited to 'src/raytracer/raytracer.cpp')
-rw-r--r-- | src/raytracer/raytracer.cpp | 174 |
1 files changed, 173 insertions, 1 deletions
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp index 93f5225..435af74 100644 --- a/src/raytracer/raytracer.cpp +++ b/src/raytracer/raytracer.cpp @@ -5,6 +5,8 @@ #include "raytracescene.h" #include "settings.h" #include "mainwindow.h" +#include <QKeyEvent> +#include <QTimerEvent> //struct Ray { // glm::vec3 p; @@ -12,7 +14,20 @@ //}; // RayTracer::RayTracer(const Config &config) : m_config(config) {} -RayTracer::RayTracer(QWidget *parent) : QWidget(parent) {} +RayTracer::RayTracer(QWidget *parent) : QWidget(parent) { + setFocusPolicy(Qt::StrongFocus); + + // map the 1 key + m_keyMap[Qt::Key_1] = false; + m_keyMap[Qt::Key_2] = false; + m_keyMap[Qt::Key_3] = false; + m_keyMap[Qt::Key_4] = false; + m_keyMap[Qt::Key_5] = false; + m_keyMap[Qt::Key_6] = false; + + // m_timer = startTimer(1000/60); + // m_elapsedTimer.start(); +} void RayTracer::render(RGBA *imageData, const RayTraceScene &scene) { if(m_enableParallelism) @@ -181,6 +196,8 @@ void RayTracer::sceneChanged(QLabel* imageLabel) { // make the image larger flippedImage = flippedImage.scaled(2*width, 2*height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); imageLabel->setPixmap(QPixmap::fromImage(flippedImage)); + + m_imageLabel = imageLabel; } void RayTracer::settingsChanged(QLabel* imageLabel) { @@ -199,4 +216,159 @@ void RayTracer::settingsChanged(QLabel* imageLabel) { imageLabel->setPixmap(QPixmap::fromImage(flippedImage)); } +void RayTracer::keyPressEvent(QKeyEvent *event) { + m_keyMap[Qt::Key(event->key())] = true; + std::cout << "key pressed" << std::endl; + if (m_keyMap[Qt::Key_1]) { + std::cout << "key 1" << std::endl; + if (settings.negative) { + settings.xy -= settings.rotation; + } else { + settings.xy += settings.rotation; + } + emit xyRotationChanged(settings.xy); + } + + if (m_keyMap[Qt::Key_2]) { + if (settings.negative) { + settings.xz -= settings.rotation; + } else { + settings.xz += settings.rotation; + } + emit xzRotationChanged(settings.xz); + } + + if (m_keyMap[Qt::Key_3]) { + if (settings.negative) { + settings.xw -= settings.rotation; + } else { + settings.xw += settings.rotation; + } + emit xwRotationChanged(settings.xw); + } + + if (m_keyMap[Qt::Key_4]) { + if (settings.negative) { + settings.yz -= settings.rotation; + } else { + settings.yz += settings.rotation; + } + emit yzRotationChanged(settings.yz); + } + + if (m_keyMap[Qt::Key_5]) { + if (settings.negative) { + settings.yw -= settings.rotation; + } else { + settings.yw += settings.rotation; + } + emit ywRotationChanged(settings.yw); + } + + if (m_keyMap[Qt::Key_6]) { + if (settings.negative) { + settings.zw -= settings.rotation; + } else { + settings.zw += settings.rotation; + } + emit zwRotationChanged(settings.zw); + } + + + // std::cout << "key done" << std::endl; + + // int width = 576; + // int height = 432; + + // QImage image = QImage(width, height, QImage::Format_RGBX8888); + // image.fill(Qt::black); + // RGBA *data = reinterpret_cast<RGBA *>(image.bits()); + + // RayTraceScene rtScene{ width, height, m_metaData }; + // this->render(data, rtScene); + + // std::cout << "done rendering" << std::endl; + + // QImage flippedImage = image.mirrored(false, false); + // flippedImage = flippedImage.scaled(2*width, 2*height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + // m_imageLabel->setPixmap(QPixmap::fromImage(flippedImage)); +} + +void RayTracer::keyReleaseEvent(QKeyEvent *event) { + m_keyMap[Qt::Key(event->key())] = false; +} + +// void RayTracer::timerEvent(QTimerEvent *event) { +// int elapsedms = m_elapsedTimer.elapsed(); +// float deltaTime = elapsedms * 0.001f; +// m_elapsedTimer.restart(); + +// if (m_keyMap[Qt::Key_1]) { +// if (settings.negative) { +// settings.xy -= settings.rotation; +// } else { +// settings.xy += settings.rotation; +// } +// emit xyRotationChanged(settings.xy); +// } + +// if (m_keyMap[Qt::Key_2]) { +// if (settings.negative) { +// settings.xz -= settings.rotation; +// } else { +// settings.xz += settings.rotation; +// } +// emit xzRotationChanged(settings.xz); +// } + +// if (m_keyMap[Qt::Key_3]) { +// if (settings.negative) { +// settings.xw -= settings.rotation; +// } else { +// settings.xw += settings.rotation; +// } +// emit xwRotationChanged(settings.xw); +// } + +// if (m_keyMap[Qt::Key_4]) { +// if (settings.negative) { +// settings.yz -= settings.rotation; +// } else { +// settings.yz += settings.rotation; +// } +// emit yzRotationChanged(settings.yz); +// } + +// if (m_keyMap[Qt::Key_5]) { +// if (settings.negative) { +// settings.yw -= settings.rotation; +// } else { +// settings.yw += settings.rotation; +// } +// emit ywRotationChanged(settings.yw); +// } + +// if (m_keyMap[Qt::Key_6]) { +// if (settings.negative) { +// settings.zw -= settings.rotation; +// } else { +// settings.zw += settings.rotation; +// } +// emit zwRotationChanged(settings.zw); +// } + +// int width = 576; +// int height = 432; + +// QImage image = QImage(width, height, QImage::Format_RGBX8888); +// image.fill(Qt::black); +// RGBA *data = reinterpret_cast<RGBA *>(image.bits()); + +// RayTraceScene rtScene{ width, height, m_metaData }; +// this->render(data, rtScene); + +// QImage flippedImage = image.mirrored(false, false); +// flippedImage = flippedImage.scaled(2*width, 2*height, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); +// m_imageLabel->setPixmap(QPixmap::fromImage(flippedImage)); +// } |