diff options
author | xukai <xukai@multicorewareinc.com> | 2014-09-22 19:50:26 +0800 |
---|---|---|
committer | Kohei Yoshida <libreoffice@kohei.us> | 2014-09-23 15:03:25 +0000 |
commit | 080bab41b64d9531c9d2ae9e5125fd4876bca0bb (patch) | |
tree | d798ec3d5b6a13f7ab49814d2d158ef2e09ce684 /chart2 | |
parent | e975f78a306df35663319d03c882cb679c12e20c (diff) |
Add function:GetDiffOfTwoCameras
Change-Id: I3b3f4e8e18d5970d408adcf0457bfdd4e064e37c
Reviewed-on: https://gerrit.libreoffice.org/11588
Reviewed-by: Kohei Yoshida <libreoffice@kohei.us>
Tested-by: Kohei Yoshida <libreoffice@kohei.us>
Diffstat (limited to 'chart2')
-rw-r--r-- | chart2/source/view/inc/GL3DRenderer.hxx | 4 | ||||
-rw-r--r-- | chart2/source/view/main/GL3DRenderer.cxx | 23 |
2 files changed, 27 insertions, 0 deletions
diff --git a/chart2/source/view/inc/GL3DRenderer.hxx b/chart2/source/view/inc/GL3DRenderer.hxx index fe3e96d7836b..655120c5259e 100644 --- a/chart2/source/view/inc/GL3DRenderer.hxx +++ b/chart2/source/view/inc/GL3DRenderer.hxx @@ -282,6 +282,9 @@ private: void SetHighLightBar(BatchBarInfo &barInfo); void DisableHighLightBar(BatchBarInfo &barInfo); void CalcScrollMoveMatrix(bool bNewScene); + glm::mat4 GetDiffOfTwoCameras(const glm::vec3& rBeginPos, const glm::vec3& rEndPos, const glm::vec3& rBeginDirection, const glm::vec3& rEndDirection); + void AddMatrixDiff(const glm::mat4& aMat); + void ResetMatrixDiff(); private: struct ShaderResources @@ -478,6 +481,7 @@ private: float m_fCurDistance; glm::mat4 m_ScrollMoveMatrix; bool m_bUndrawFlag; + glm::mat4 m_matDiff; }; } diff --git a/chart2/source/view/main/GL3DRenderer.cxx b/chart2/source/view/main/GL3DRenderer.cxx index 5991a3f7071f..c3397a43e30c 100644 --- a/chart2/source/view/main/GL3DRenderer.cxx +++ b/chart2/source/view/main/GL3DRenderer.cxx @@ -96,6 +96,7 @@ OpenGL3DRenderer::OpenGL3DRenderer(): , m_fCurDistance(0.0f) , m_ScrollMoveMatrix(glm::mat4(1.0)) , m_bUndrawFlag(false) + , m_matDiff(glm::mat4(0.0)) { m_Polygon3DInfo.lineOnly = false; m_Polygon3DInfo.twoSidesLighting = false; @@ -2138,6 +2139,17 @@ void OpenGL3DRenderer::CreateSceneBoxView() m_3DView = glm::lookAt(m_CameraInfo.cameraPos, m_CameraInfo.cameraOrg, m_CameraInfo.cameraUp); + m_3DView = m_3DView + m_matDiff; +} + +void OpenGL3DRenderer::AddMatrixDiff(const glm::mat4& aMat) +{ + m_matDiff = m_matDiff + aMat; +} + +void OpenGL3DRenderer::ResetMatrixDiff() +{ + m_matDiff = glm::mat4(0.0); } void OpenGL3DRenderer::ClearBuffer() @@ -2440,6 +2452,17 @@ void OpenGL3DRenderer::CalcScrollMoveMatrix(bool bNewScene) m_bUndrawFlag = m_fCurDistance >= m_fScrollDistance ? true : false; } +glm::mat4 OpenGL3DRenderer::GetDiffOfTwoCameras(const glm::vec3& rBeginPos, const glm::vec3& rEndPos, const glm::vec3& rBeginDirection, const glm::vec3& rEndDirection) +{ + glm::mat4 aBegin = glm::lookAt(glm::vec3(m_GlobalScaleMatrix * glm::vec4(rBeginPos, 1.0)), + glm::vec3(m_GlobalScaleMatrix * glm::vec4(rBeginDirection, 1.0)), + glm::vec3(0, 0, 1)); + glm::mat4 aEnd = glm::lookAt(glm::vec3(m_GlobalScaleMatrix * glm::vec4(rEndPos, 1.0)), + glm::vec3(m_GlobalScaleMatrix * glm::vec4(rEndDirection, 1.0)), + glm::vec3(0, 0, 1)); + return aEnd - aBegin; +} + glm::mat4 OpenGL3DRenderer::GetProjectionMatrix() { return m_3DProjection; |