VizCoordinateSystem *VizProjection::insertPile(IsCsResult csAt, int dimensionality) { VizCoordinateSystem *vcs = createCoordinateSystem(dimensionality); m_coordinateSystems.insert(std::next(std::begin(m_coordinateSystems), csAt.pileIdx()), std::vector<VizCoordinateSystem *> {vcs}); updateProjection(); return vcs; }
VizCoordinateSystem *VizProjection::insertCs(IsCsResult csAt, int dimensionality) { CLINT_ASSERT(csAt.pileIdx() < m_coordinateSystems.size(), "Inserting CS in a non-existent pile"); VizCoordinateSystem *vcs = createCoordinateSystem(dimensionality); std::vector<VizCoordinateSystem *> &pile = m_coordinateSystems.at(csAt.pileIdx()); pile.insert(std::next(std::begin(pile), csAt.coordinateSystemIdx()), vcs); updateProjection(); return vcs; }
void RayIntersection::setSurfacePoint( const SurfacePoint &i_surfacePoint ) { m_surfacePoint = i_surfacePoint; // Recomupte to surface transform vec3f normal = i_surfacePoint.normal; vec3f nT; vec3f nB; createCoordinateSystem( normal, nT, nB ); m_toWorld = mat3f( nB.x, normal.x, nT.x, nB.y, normal.y, nT.y, nB.z, normal.z, nT.z ); m_toLocal = glm::inverse( m_toWorld ); }
void VizProjection::appendCoordinateSystem(int dimensionality) { VizCoordinateSystem *vcs = createCoordinateSystem(dimensionality); m_coordinateSystems.back().push_back(vcs); }