diff options
author | Tomi Korpipää <tomi.korpipaa@digia.com> | 2013-03-28 11:44:00 +0200 |
---|---|---|
committer | Mika Salmela <mika.salmela@digia.com> | 2013-03-28 11:48:00 +0200 |
commit | 05268c7b11c132b6e4aa7e05c4c37bc06e8077cf (patch) | |
tree | 059e50cb34fdadcf2533010904f93b922dd17598 /src | |
parent | 1184fea963cf43cb6140758e4f13bb1a299cd30f (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.cpp | 14 |
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; } |