| 92 | } |
| 93 | |
| 94 | glm::mat4 surface_impl::computeTransformMat(const glm::mat4& pView, const glm::mat4& pOrient) |
| 95 | { |
| 96 | static const glm::mat4 MODEL = glm::rotate(glm::mat4(1.0f), -glm::radians(90.f), glm::vec3(0,1,0)) * |
| 97 | glm::rotate(glm::mat4(1.0f), -glm::radians(90.f), glm::vec3(1,0,0)); |
| 98 | |
| 99 | float xRange = mRange[1] - mRange[0]; |
| 100 | float yRange = mRange[3] - mRange[2]; |
| 101 | float zRange = mRange[5] - mRange[4]; |
| 102 | // set scale to zero if input is constant array |
| 103 | // otherwise compute scale factor by standard equation |
| 104 | float xDataScale = std::abs(xRange) < 1.0e-3 ? 1.0f : 2/(xRange); |
| 105 | float yDataScale = std::abs(yRange) < 1.0e-3 ? 1.0f : 2/(yRange); |
| 106 | float zDataScale = std::abs(zRange) < 1.0e-3 ? 1.0f : 2/(zRange); |
| 107 | |
| 108 | float xDataOffset = (-mRange[0] * xDataScale); |
| 109 | float yDataOffset = (-mRange[2] * yDataScale); |
| 110 | float zDataOffset = (-mRange[4] * zDataScale); |
| 111 | |
| 112 | glm::vec3 scaleVector(xDataScale, yDataScale, zDataScale); |
| 113 | |
| 114 | glm::vec3 shiftVector = glm::vec3(-1 + xDataOffset, -1 + yDataOffset, -1 + zDataOffset); |
| 115 | |
| 116 | return pView * pOrient * MODEL * glm::scale(glm::translate(IDENTITY, shiftVector), scaleVector); |
| 117 | } |
| 118 | |
| 119 | void surface_impl::renderGraph(const int pWindowId, const glm::mat4& transform) |
| 120 | { |
nothing calls this directly
no outgoing calls
no test coverage detected