summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@digia.com>2013-03-28 11:44:00 +0200
committerMika Salmela <mika.salmela@digia.com>2013-03-28 11:48:00 +0200
commit05268c7b11c132b6e4aa7e05c4c37bc06e8077cf (patch)
tree059e50cb34fdadcf2533010904f93b922dd17598 /src
parent1184fea963cf43cb6140758e4f13bb1a299cd30f (diff)
Move light with camera
Doesn't work perfectly yet Change-Id: Ieb70c82f00c9b16a9810b9b487daf2382b281d01 Reviewed-by: Mika Salmela <mika.salmela@digia.com>
Diffstat (limited to 'src')
-rw-r--r--src/datavis3d/utils/camerahelper.cpp14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/datavis3d/utils/camerahelper.cpp b/src/datavis3d/utils/camerahelper.cpp
index f29b295d..8e47f207 100644
--- a/src/datavis3d/utils/camerahelper.cpp
+++ b/src/datavis3d/utils/camerahelper.cpp
@@ -98,9 +98,17 @@ QMatrix4x4 CameraHelper::calculateViewMatrix(const QPoint &mousePos, int zoom
QVector3D CameraHelper::calculateLightPosition(const QVector3D &lightPosition)
{
- QVector3D newLightPosition = lightPosition;
- // TODO: Implement rotation based on m_xRotation and m_yRotation
-
+ // Move light with camera
+ QVector3D newLightPosition;
+ float radius = m_target.z() * 2.5f;
+ float angle = m_xRotation * m_pi / 180;
+ float zPos = radius * cos(angle);
+ float xPos = radius * sin(angle);
+ // TODO: Does not work perfectly yet
+ newLightPosition = QVector3D(-xPos /*+ lightPosition.x()*/
+ , lightPosition.y() // TODO: Lift light higher with m_yRotation?
+ , zPos + radius);//m_target.z()/*+ lightPosition.z()*/);
+ qDebug() << newLightPosition << angle;
return newLightPosition;
}