aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 16:56:00 -0500
committerDavid Doan <daviddoan@Davids-MacBook-Pro-193.local>2023-12-13 16:56:00 -0500
commit484cc11540ea00555fdbf88a2101a3b7ac0613ec (patch)
treea5d25238fa3d66ce68f9145d6b47aadb4c1c31fb /src
parent69df3f54ac5186540bacd812b095385c732ca68b (diff)
new slider;
Diffstat (limited to 'src')
-rw-r--r--src/camera/camera.cpp2
-rw-r--r--src/mainwindow.cpp93
-rw-r--r--src/mainwindow.h8
-rw-r--r--src/raytracer/raytracer.cpp10
-rw-r--r--src/raytracer/raytracer.h1
5 files changed, 94 insertions, 20 deletions
diff --git a/src/camera/camera.cpp b/src/camera/camera.cpp
index ae7fdd3..172c5de 100644
--- a/src/camera/camera.cpp
+++ b/src/camera/camera.cpp
@@ -14,7 +14,7 @@ void Camera::updateViewMatrix(SceneCameraData cameraData) {
// TODO: rename & link sliders here. also add one more for the fourth dimension.
// make them smaller intervals on the sliders since our objects are so small
- glm::vec4 uiTranslation = glm::vec4(settings.xw, settings.yw, 0.f, settings.zw);
+ glm::vec4 uiTranslation = glm::vec4(settings.xw, settings.yw, settings.z, settings.zw);
m_translationVector = -cameraData.pos + uiTranslation;
m_inverseViewMatrix = glm::inverse(m_viewMatrix);
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index ed5b32e..8895742 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -32,7 +32,7 @@ void MainWindow::initialize() {
xz_label->setText("Rotation XZ angle (I, M)");
xz_label->setFont(font);
QLabel *xw_label = new QLabel(); // XW label
- xw_label->setText("Translate X (W,D)");
+ xw_label->setText("Translate X (W,S)");
xw_label->setFont(font);
QLabel *yz_label = new QLabel(); // YZ label
yz_label->setText("Rotation YZ angle (O, N):");
@@ -43,6 +43,9 @@ void MainWindow::initialize() {
QLabel *zw_label = new QLabel(); // ZW label
zw_label->setText("Translate W (R, F):");
zw_label->setFont(font);
+ QLabel *z_label = new QLabel(); // W label
+ z_label->setText("Translate Z (T, G):");
+ z_label->setFont(font);
QLabel *w_label = new QLabel(); // W label
w_label->setText("Vorex Depth:");
w_label->setFont(font);
@@ -79,7 +82,7 @@ void MainWindow::initialize() {
xyBox = new QDoubleSpinBox();
xyBox->setMinimum(0.0f);
xyBox->setMaximum(360.f);
- xyBox->setSingleStep(1.f);
+ xyBox->setSingleStep(0.1f);
xyBox->setValue(0.f);
lxy->addWidget(xySlider);
@@ -99,7 +102,7 @@ void MainWindow::initialize() {
xzBox = new QDoubleSpinBox();
xzBox->setMinimum(0.0f);
xzBox->setMaximum(360.f);
- xzBox->setSingleStep(1.f);
+ xzBox->setSingleStep(0.1f);
xzBox->setValue(0.f);
lxz->addWidget(xzSlider);
@@ -112,14 +115,14 @@ void MainWindow::initialize() {
xwSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
xwSlider->setTickInterval(1);
- xwSlider->setMinimum(0);
- xwSlider->setMaximum(36000);
+ xwSlider->setMinimum(-10000);
+ xwSlider->setMaximum(10000);
xwSlider->setValue(0);
xwBox = new QDoubleSpinBox();
- xwBox->setMinimum(0.0f);
- xwBox->setMaximum(360.f);
- xwBox->setSingleStep(1.f);
+ xwBox->setMinimum(-100.0f);
+ xwBox->setMaximum(100.f);
+ xwBox->setSingleStep(0.1f);
xwBox->setValue(0.f);
lxw->addWidget(xwSlider);
@@ -139,7 +142,7 @@ void MainWindow::initialize() {
yzBox = new QDoubleSpinBox();
yzBox->setMinimum(0.0f);
yzBox->setMaximum(360.f);
- yzBox->setSingleStep(1.f);
+ yzBox->setSingleStep(0.1f);
yzBox->setValue(0.f);
lyz->addWidget(yzSlider);
@@ -152,14 +155,14 @@ void MainWindow::initialize() {
ywSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
ywSlider->setTickInterval(1);
- ywSlider->setMinimum(0);
- ywSlider->setMaximum(36000);
+ ywSlider->setMinimum(-10000);
+ ywSlider->setMaximum(10000);
ywSlider->setValue(0);
ywBox = new QDoubleSpinBox();
- ywBox->setMinimum(0.0f);
- ywBox->setMaximum(360.f);
- ywBox->setSingleStep(1.f);
+ ywBox->setMinimum(-100.0f);
+ ywBox->setMaximum(100.f);
+ ywBox->setSingleStep(0.1f);
ywBox->setValue(0.f);
lyw->addWidget(ywSlider);
@@ -172,20 +175,40 @@ void MainWindow::initialize() {
zwSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
zwSlider->setTickInterval(1);
- zwSlider->setMinimum(0);
- zwSlider->setMaximum(36000);
+ zwSlider->setMinimum(-10000);
+ zwSlider->setMaximum(10000);
zwSlider->setValue(0);
zwBox = new QDoubleSpinBox();
- zwBox->setMinimum(0.0f);
- zwBox->setMaximum(360.f);
- zwBox->setSingleStep(1.f);
+ zwBox->setMinimum(-100.0f);
+ zwBox->setMaximum(100.f);
+ zwBox->setSingleStep(0.1f);
zwBox->setValue(0.f);
lzw->addWidget(zwSlider);
lzw->addWidget(zwBox);
zwLayout->setLayout(lzw);
+ // translate z
+ QGroupBox *zLayout = new QGroupBox(); // horizontal w slider alignment
+ QHBoxLayout *lz = new QHBoxLayout();
+
+ zSlider = new QSlider(Qt::Orientation::Horizontal); // XY value slider
+ zSlider->setTickInterval(1);
+ zSlider->setMinimum(-10000);
+ zSlider->setMaximum(10000);
+ zSlider->setValue(0);
+
+ zBox = new QDoubleSpinBox();
+ zBox->setMinimum(-100.0f);
+ zBox->setMaximum(100.f);
+ zBox->setSingleStep(0.1f);
+ zBox->setValue(0.f);
+
+ lz->addWidget(zSlider);
+ lz->addWidget(zBox);
+ zLayout->setLayout(lz);
+
// Max Time Slider
QGroupBox *maxTimeGroupBox = new QGroupBox(); // horizontal
QHBoxLayout *maxTimeLayout = new QHBoxLayout();
@@ -248,6 +271,8 @@ void MainWindow::initialize() {
vLayout->addWidget(ywLayout);
vLayout->addWidget(zw_label);
vLayout->addWidget(zwLayout);
+ vLayout->addWidget(z_label);
+ vLayout->addWidget(zLayout);
vLayout->addWidget(w_label);
vLayout->addWidget(wLayout);
vLayout->addWidget(currTimeLabel);
@@ -277,6 +302,7 @@ void MainWindow::connectUIElements() {
connectyz();
connectyw();
connectzw();
+ connectz();
connectMaxTimeSlider();
connectNegativeRotation();
connect(rayTracer, &RayTracer::xyRotationChanged, this, &MainWindow::updateXySlider);
@@ -285,6 +311,8 @@ void MainWindow::connectUIElements() {
connect(rayTracer, &RayTracer::yzRotationChanged, this, &MainWindow::updateYzSlider);
connect(rayTracer, &RayTracer::ywRotationChanged, this, &MainWindow::updateYwSlider);
connect(rayTracer, &RayTracer::zwRotationChanged, this, &MainWindow::updateZwSlider);
+ connect(rayTracer, &RayTracer::zChanged, this, &MainWindow::updateZSlider);
+
connect(rayTracer, &RayTracer::rotationChanged, this, &MainWindow::updateRotationSlider);
// connect(rayTracer, &RayTracer::cameraPositionChanged, this, &MainWindow::updateCameraPosition);
connect(rayTracer, &RayTracer::timeValueChanged, this, &MainWindow::updateTimeValue);
@@ -339,6 +367,26 @@ void MainWindow::connectzw() {
this, &MainWindow::onValChangezwBox);
}
+void MainWindow::connectz() {
+ connect(zSlider, &QSlider::valueChanged, this, &MainWindow::onValChangezSlider);
+ connect(zBox, static_cast<void(QDoubleSpinBox::*)(double)>(&QDoubleSpinBox::valueChanged),
+ this, &MainWindow::onValChangezBox);
+}
+
+void MainWindow::onValChangezSlider(int newValue) {
+ //wSlider->setValue(newValue);
+ zBox->setValue(newValue/100.f);
+ settings.z = zBox->value();
+ rayTracer->settingsChanged(imageLabel);
+}
+
+void MainWindow::onValChangezBox(double newValue) {
+ zSlider->setValue(int(newValue*100.f));
+ //wBox->setValue(newValue);
+ settings.z = zBox->value();
+ rayTracer->settingsChanged(imageLabel);
+}
+
void MainWindow::connectMaxTimeSlider() {
connect(maxTimeSlider, &QSlider::valueChanged, this, &MainWindow::onValChangeMaxTimeSlider);
connect(maxTimeSpinBox, static_cast<void(QSpinBox::*)(int)>(&QSpinBox::valueChanged),
@@ -573,3 +621,10 @@ void MainWindow::updateRotationSlider(float value) {
void MainWindow::updateTimeValue() {
currTimeLabel->setText("Curr Time: " + QString::number(settings.currentTime));
}
+
+void MainWindow::updateZSlider(double value) {
+ // TODO IDK why the values are not changin
+ zSlider->setValue(int(settings.z*100.f));
+ zBox->setValue(settings.z);
+ rayTracer->settingsChanged(imageLabel);
+}
diff --git a/src/mainwindow.h b/src/mainwindow.h
index b608dd5..ff0d203 100644
--- a/src/mainwindow.h
+++ b/src/mainwindow.h
@@ -33,6 +33,7 @@ private:
void connectMaxTimeSlider();
void connectNegativeRotation();
void connectW();
+ void connectz();
RayTracer *rayTracer;
AspectRatioWidget *aspectRatioWidget;
@@ -57,6 +58,8 @@ private:
QSlider *wSlider;
QDoubleSpinBox *wBox;
QLabel *currTimeLabel;
+ QSlider *zSlider;
+ QDoubleSpinBox *zBox;
private slots:
@@ -89,4 +92,9 @@ private slots:
void onValChangeWBox(double newValue);
// void updateCameraPosition();
void updateTimeValue();
+
+ void onValChangezSlider(int newValue);
+ void onValChangezBox(double newValue);
+ void updateZSlider(double newValue);
+
};
diff --git a/src/raytracer/raytracer.cpp b/src/raytracer/raytracer.cpp
index 604d717..6c3c77a 100644
--- a/src/raytracer/raytracer.cpp
+++ b/src/raytracer/raytracer.cpp
@@ -323,6 +323,16 @@ void RayTracer::keyPressEvent(QKeyEvent *event) {
}
// TODO: add slider for z translation
+ // T and G for z translation
+ if (m_keyMap[Qt::Key_T]) {
+ settings.z += settings.translation;
+ emit zChanged(settings.zw);
+ }
+
+ if (m_keyMap[Qt::Key_G]) {
+ settings.z -= settings.translation;
+ emit zChanged(settings.zw);
+ }
// R & F for w translation using zw
if (m_keyMap[Qt::Key_R]) {
diff --git a/src/raytracer/raytracer.h b/src/raytracer/raytracer.h
index 1d88de9..d783289 100644
--- a/src/raytracer/raytracer.h
+++ b/src/raytracer/raytracer.h
@@ -194,5 +194,6 @@ signals:
void rotationChanged(float value);
void cameraPositionChanged(glm::vec3 value);
void timeValueChanged(int value);
+ void zChanged(int value);
};