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

Method draw

test/AABBtest/src/AABBtestApp.cpp:53–114  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

51}
52
53void AABBtestApp::draw()
54{
55 gl::clear();
56
57 // Animate box.
58 float t = (float) getElapsedSeconds() * 0.2f;
59 mat4 transform = glm::translate( vec3( 5.0f * glm::sin( t ), 0, 0 ) );
60 transform *= glm::rotate( t, glm::normalize( vec3( 1, 2, 3 ) ) );
61 transform *= glm::scale( vec3( 0.75f ) );
62
63 // Start drawing.
64 gl::pushMatrices();
65 gl::setMatrices( mCam );
66
67 gl::drawCoordinateFrame();
68
69 // Draw the animated box.
70 gl::color( 1, 1, 1 );
71 gl::setModelMatrix( transform );
72 gl::translate( mBox.getCenter() );
73 gl::scale( mBox.getSize() );
74
75 mCube->draw();
76
77 // Calculate and draw axis-aligned bounding box.
78 auto aabb = mBox.transformed( transform );
79
80 gl::color( 0, 1, 1 );
81 gl::setModelMatrix( mat4() );
82 gl::translate( aabb.getCenter() );
83 gl::scale( aabb.getSize() );
84
85 mCube->draw();
86
87 // Draw intersection with a red line.
88 gl::setModelMatrix( mat4() );
89
90 vec3 src = vec3( 5 );
91 vec3 dir = vec3( -1 );
92 Ray ray( src, dir );
93
94 gl::color( 1, 0, 0 );
95 gl::drawLine( src, src + 10.0f * dir );
96
97 float min, max;
98 if( aabb.intersect( ray, &min, &max ) > 0 ) {
99 gl::color( 0, 1, 1 );
100 gl::drawSphere( ray.calcPosition( min ), 0.1f );
101 gl::drawSphere( ray.calcPosition( max ), 0.1f );
102 gl::drawLine( ray.calcPosition( min ), ray.calcPosition( max ) );
103 }
104
105 if( mBox.intersect( ray.transformed( glm::inverse( transform ) ), &min, &max ) > 0 ) {
106 gl::color( 1, 1, 1 );
107 gl::drawSphere( ray.calcPosition( min ), 0.1f );
108 gl::drawSphere( ray.calcPosition( max ), 0.1f );
109 gl::drawLine( ray.calcPosition( min ), ray.calcPosition( max ) );
110 }

Callers

nothing calls this directly

Calls 15

sinFunction · 0.85
pushMatricesFunction · 0.85
setMatricesFunction · 0.85
drawCoordinateFrameFunction · 0.85
setModelMatrixFunction · 0.85
drawSphereFunction · 0.85
inverseFunction · 0.85
popMatricesFunction · 0.85
intersectMethod · 0.80
clearFunction · 0.50
getElapsedSecondsFunction · 0.50
translateFunction · 0.50

Tested by

no test coverage detected