/** * Transform the coordinate system to match the surface of the wall */ void Dodecahedron::transformToWallCoordinateSystem( int wall ) { Vec3f vCenter = wallCenters[wall]; Vec3f coordinateSystem[3] = wallCoordinateSystems[wall]; //transform the model matrix to place (0,0,0) in the middle of the wall. this is awesome, took me a while to figure out //...probably done the wrong way :) gl::pushModelView(); Matrix44f transformation = gl::getModelView(); transformation = transformation.createTranslation(vCenter); transformation.rotate(Vec3f::zAxis(), coordinateSystem[2], coordinateSystem[1]); gl::multModelView(transformation); }