MCPcopy Create free account
hub / github.com/cinder/Cinder / calcScreenProjection

Method calcScreenProjection

src/cinder/Camera.cpp:165–184  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

163}
164
165void Camera::calcScreenProjection( const Sphere &sphere, const vec2 &screenSizePixels, vec2 *outCenter, vec2 *outAxisA, vec2 *outAxisB ) const
166{
167 auto toScreenPixels = [=] ( vec2 v, const vec2 &windowSize ) {
168 vec2 result = v;
169 result.x *= 1 / ( windowSize.x / windowSize.y );
170 result += vec2( 0.5f );
171 result *= windowSize;
172 return result;
173 };
174
175 Sphere camSpaceSphere( vec3( getViewMatrix()*vec4(sphere.getCenter(), 1.0f) ), sphere.getRadius() );
176 vec2 center, axisA, axisB;
177 camSpaceSphere.calcProjection( getFocalLength(), &center, &axisA, &axisB );
178 if( outCenter )
179 *outCenter = toScreenPixels( center, screenSizePixels );//( center * vec2( invAspectRatio, 1 ) + vec2( 0.5f ) ) * screenSizePixels;
180 if( outAxisA )
181 *outAxisA = toScreenPixels( center + axisA * 0.5f, screenSizePixels ) - toScreenPixels( center - axisA * 0.5f, screenSizePixels );
182 if( outAxisB )
183 *outAxisB = toScreenPixels( center + axisB * 0.5f, screenSizePixels ) - toScreenPixels( center - axisB * 0.5f, screenSizePixels );
184}
185
186void Camera::calcMatrices() const
187{

Callers 2

drawMethod · 0.80
drawMethod · 0.80

Calls 3

getViewMatrixFunction · 0.85
getRadiusMethod · 0.45
calcProjectionMethod · 0.45

Tested by 1

drawMethod · 0.64