当前位置: 首页>>代码示例>>C++>>正文


C++ SbMatrix::setValue方法代码示例

本文整理汇总了C++中SbMatrix::setValue方法的典型用法代码示例。如果您正苦于以下问题:C++ SbMatrix::setValue方法的具体用法?C++ SbMatrix::setValue怎么用?C++ SbMatrix::setValue使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在SbMatrix的用法示例。


在下文中一共展示了SbMatrix::setValue方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: identity

SbMatrix
SbMatrix::inverse() const
{
    // Trivial case
    if (IS_IDENTITY(matrix))
	return SbMatrix::identity();

    // Affine case...
    SbMatrix affineAnswer;
    if (  affine_inverse( SbMatrix(matrix), affineAnswer ) )
	return affineAnswer;

    int         index[4];
    float       d, invmat[4][4], temp;
    SbMatrix	inverse = *this;
#ifdef DEBUGGING
    int         i, j;
#endif /* DEBUGGING */

    if(inverse.LUDecomposition(index, d)) {

#ifdef DEBUGGING
	for(j = 0; j < 4; j++) {
	    for(i = 0; i < 4; i++)
		invmat[j][i] = 0.0;
	    invmat[j][j] = 1.0;
	    inverse.LUBackSubstitution(index, invmat[j]);
	}
#else
	invmat[0][0] = 1.0;
	invmat[0][1] = 0.0;
	invmat[0][2] = 0.0;
	invmat[0][3] = 0.0;
	inverse.LUBackSubstitution(index, invmat[0]);
	invmat[1][0] = 0.0;
	invmat[1][1] = 1.0;
	invmat[1][2] = 0.0;
	invmat[1][3] = 0.0;
	inverse.LUBackSubstitution(index, invmat[1]);
	invmat[2][0] = 0.0;
	invmat[2][1] = 0.0;
	invmat[2][2] = 1.0;
	invmat[2][3] = 0.0;
	inverse.LUBackSubstitution(index, invmat[2]);
	invmat[3][0] = 0.0;
	invmat[3][1] = 0.0;
	invmat[3][2] = 0.0;
	invmat[3][3] = 1.0;
	inverse.LUBackSubstitution(index, invmat[3]);
#endif /* DEBUGGING */

#ifdef DEBUGGING
	// transpose invmat
	for(j = 0; j < 4; j++) {
	    for(i = 0; i < j; i++) {
		temp = invmat[i][j];
		invmat[i][j] = invmat[j][i];
		invmat[j][i] = temp;
	    }
	}
#else
#define SWAP(i,j) \
	temp = invmat[i][j]; \
	invmat[i][j] = invmat[j][i]; \
	invmat[j][i] = temp;

	SWAP(1,0);
	
	SWAP(2,0);
	SWAP(2,1);
	
	SWAP(3,0);
	SWAP(3,1);
	SWAP(3,2);
#undef SWAP	
#endif /* DEBUGGING */
#ifdef _MSC_VER
        inverse.setValue((const SbMat &)invmat);
#else
	inverse.setValue(invmat);
#endif
    }

    return inverse;
}
开发者ID:OpenXIP,项目名称:xip-libraries,代码行数:85,代码来源:SbMatrix.cpp


注:本文中的SbMatrix::setValue方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。