예제 #1
0
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;
}
예제 #2
0
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;
}
예제 #3
0
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 );
    
}
예제 #4
0
void VizProjection::appendCoordinateSystem(int dimensionality) {
  VizCoordinateSystem *vcs = createCoordinateSystem(dimensionality);
  m_coordinateSystems.back().push_back(vcs);
}