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


C++ Matrix3x3::setIdentity方法代码示例

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


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

示例1: Rx

void Rx(Matrix3x3 &out, double theta)
{
  out.setIdentity();

  double s = sin(theta);
  double c = cos(theta);

  out(1,1) = c; out(1,2) = -s;
  out(2,1) = s; out(2,2) = c;
}
开发者ID:ekpneo,项目名称:soraCore,代码行数:10,代码来源:RotMat3d.cpp

示例2: eig3_noniter

/**
 * \brief Fast non-iterative 3x3 eigenvalue decomposition
 *
 * Based on "Geometric Tools" by David Eberly.
 */
void eig3_noniter(Matrix3x3 &A, Float lambda[3]) {
	// Compute the eigenvalues using double-precision arithmetic.
	double root[3];
	eig3_evals(A, root);
	lambda[0] = (Float) root[0];
	lambda[1] = (Float) root[1];
	lambda[2] = (Float) root[2];
	Matrix3x3 eigs;

	Float maxEntry[3];
	Vector maxRow[3];
	for (int i = 0; i < 3; ++i) {
		Matrix3x3 M(A);
		M(0, 0) -= lambda[i];
		M(1, 1) -= lambda[i];
		M(2, 2) -= lambda[i];
		if (!eig3_rank(M, maxEntry[i], maxRow[i])) {
			A.setIdentity();
			return;
		}
	}

	Float totalMax = maxEntry[0];
	int i = 0;
	if (maxEntry[1] > totalMax) {
		totalMax = maxEntry[1];
		i = 1;
	} if (maxEntry[2] > totalMax) {
		i = 2;
	}

	if (i == 0) {
		maxRow[0] = normalize(maxRow[0]);
		eig3_evecs(A, lambda, maxRow[0], 1, 2, 0);
	} else if (i == 1) {
		maxRow[1] = normalize(maxRow[1]);
		eig3_evecs(A, lambda, maxRow[1], 2, 0, 1);
	} else {
		maxRow[2] = normalize(maxRow[2]);
		eig3_evecs(A, lambda, maxRow[2], 0, 1, 2);
	}
}
开发者ID:AdrianJohnston,项目名称:ShapeNetRender,代码行数:47,代码来源:transform.cpp


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