コード例 #1
0
void ShadedModel::setWorldMatrix(mat4 mat) {
  prog->setUniform(mat,"WorldMatrix");
  //update normal matrix
  mat3 normMat(
      mat[0][0], mat[1][0], mat[2][0],
      mat[0][1], mat[1][1], mat[2][1],
      mat[0][2], mat[1][2], mat[2][2]);
  //glUniformMatrix3fv(normalMatrix, 1, GL_TRUE, normMat);
  prog->setUniform(normMat, "NormalMatrix");

  // update lights
  updateLightPositions();
  
  //TODO: need to save?
}
コード例 #2
0
void VfunctionsTest::testNormJ() 
{
    mslam::RealType data[4] =
    {
         1.000000000000000000e+00,
         4.125607846284472073e-03,
         3.812299856873190788e-03,
        -1.630117227660913225e-04
    };
    
    mslam::RealType targetData[4 * 4] =
    {
         3.157934715637507523e-05,
        -4.125412418737937729e-03,
        -3.812119270536476565e-03,
         1.630040009994514845e-04,
        -4.125412418737937729e-03,
         9.999671901185915868e-01,
        -1.572730917349752375e-05,
         6.724905854990989835e-07,
        -3.812119270536476565e-03,
        -1.572730917349752375e-05,
         9.999696770106860644e-01,
         6.214201296799663458e-07,
         1.630040009994514845e-04,
         6.724905854990989835e-07,
         6.214201296799663458e-07,
         9.999841833808724711e-01
    };
    
    mslam::RealMatrix normMat(4, 4, targetData);

    mslam::RealMatrix r;
    CPPUNIT_ASSERT_NO_THROW(r = mslam::normJac(mslam::RealVector(data, 
            4)));
    CPPUNIT_ASSERT_EQUAL(0, cv::countNonZero(cv::abs(r - normMat) > 1e-10));
}