MCPcopy Create free account
hub / github.com/arrayfire/forge / computeTransformMat

Method computeTransformMat

src/backend/opengl/surface_impl.cpp:94–117  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92}
93
94glm::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
119void surface_impl::renderGraph(const int pWindowId, const glm::mat4& transform)
120{

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected