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


C# Matrix3.trace方法代码示例

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


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

示例1: getEigenvalues

    // Reference : Oliver K. Smith: Eigenvalues of a symmetric 3 × 3 matrix. Commun. ACM 4(4): 168 (1961) 
	// find the eigenvalues of a 3x3 symmetric matrix
    //NOTE: I'm doing some post-processing on them to turn them into singular values
	Vector3 getEigenvalues(Matrix3 mat) {
		var m = (mat.trace()) / 3;
		var K = mat - (Matrix3.I()*m); // K = mat - I*tr(mat)
		var q = K.determinant() / 2;
		var tempForm = K*K;
	 
		var p = tempForm.sumCells() / 6;
	 
		// NB in Smith's paper he uses phi = (1/3)*arctan(sqrt(p*p*p - q*q)/q), which is equivalent to below:
		var phi = (1/3)*Mathf.Acos(q/Mathf.Sqrt(p*p*p));
	 
		if (Mathf.Abs(q) >= Mathf.Abs(Mathf.Sqrt(p*p*p))) {
			phi = 0;
		}
	 
		if (phi < 0) {
			phi = phi + Mathf.PI/3;
		}
	 
		var eig1 = m + 2*Mathf.Sqrt(p)*Mathf.Cos(phi);
		var eig2 = m - Mathf.Sqrt(p)*(Mathf.Cos(phi) + Mathf.Sqrt(3)*Mathf.Sin(phi));
		var eig3 = m - Mathf.Sqrt(p)*(Mathf.Cos(phi) - Mathf.Sqrt(3)*Mathf.Sin(phi));
	    // return a singular values vector
		return new Vector3(Mathf.Sqrt(Mathf.Abs(eig1)),
                           Mathf.Sqrt(Mathf.Abs(eig2)),
                           Mathf.Sqrt(Mathf.Abs(eig3)));
	}
开发者ID:guozanhua,项目名称:kinect-oculus-demo,代码行数:30,代码来源:ZigSteadyDetector.cs


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