本文整理汇总了C#中HierarchyNode.GetEnumerator方法的典型用法代码示例。如果您正苦于以下问题:C# HierarchyNode.GetEnumerator方法的具体用法?C# HierarchyNode.GetEnumerator怎么用?C# HierarchyNode.GetEnumerator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HierarchyNode
的用法示例。
在下文中一共展示了HierarchyNode.GetEnumerator方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GetHierachyOffset
/// <summary>
/// 1. Вычисляет смещения каждой следующей точки относительно предыдущей
/// 2. Вызываем FillCoordinateForCurrentJoint
/// </summary>
/// <param name="root"></param>
private static void GetHierachyOffset(HierarchyNode root)
{
var hierarchyEnumerator = root.GetEnumerator() as HierarchyEnumerator;
HierarchyNode currentPoint = null;
HierarchyNode parentForCurrentPoint = null;
if (hierarchyEnumerator != null)
{
//сам энумератор дает корректных родителей ()
hierarchyEnumerator.MoveNext();
hierarchyEnumerator.MoveNext();
do
{
currentPoint = hierarchyEnumerator.Current;
parentForCurrentPoint = hierarchyEnumerator.ParentForCurrentNode;
SkeletonPoint point;
if (parentForCurrentPoint.GetJointType == JointType.HipCenter)
point = hierarchyEnumerator.ParentForCurrentNode.Point;
else
point = hierarchyEnumerator.ParentForCurrentNode.LastPointValue;
//Делаем пересчет
//currentPoint.Point = new SkeletonPoint()
//{
// X = currentPoint.Point.X - point.X,
// Y = currentPoint.Point.Y - point.Y,
// Z = currentPoint.Point.Z - point.Z
//};
currentPoint.Point = FillCoordinateForCurrentJoint(point, currentPoint.Point);
} while (hierarchyEnumerator.MoveNext());
}
}
示例2: GetHierachyOffset
/// <summary>
/// 1. Вычисляет смещения каждой следующей точки относительно предыдущей
/// 2. Вызываем FillCoordinateForCurrentJoint
/// </summary>
/// <param name="root"></param>
private static void GetHierachyOffset(HierarchyNode root)
{
var hierarchyEnumerator = root.GetEnumerator() as HierarchyEnumerator;
if (hierarchyEnumerator != null)
{
//сам энумератор дает корректных родителей ()
hierarchyEnumerator.MoveNext();
hierarchyEnumerator.MoveNext();
do
{
HierarchyNode currentPoint = hierarchyEnumerator.Current;
//Пропускаем Корневой крест, иначе его сложит в линию по Y. Т.к. матриц поворота для него нет, то крест не развернется
if (currentPoint.GetTypeNode() == ConstBodyPoints.LeftHip || currentPoint.GetTypeNode() == ConstBodyPoints.RightHip)
continue;
currentPoint.Point = FillCoordinateForCurrentJoint(hierarchyEnumerator.Current.Point);
} while (hierarchyEnumerator.MoveNext());
}
}
示例3: GetCoordinateFrame
/// <summary>
/// Печать одной строки координат - фрейма
/// </summary>
/// <param name="skelet"></param>
/// <param name="root"></param>
/// <param name="skelet2"></param>
/// <returns></returns>
private static string GetCoordinateFrame(Skeleton skelet, HierarchyNode root, Skeleton skelet2 = null)
{
string str = "";
var enumerator = root.GetEnumerator();
enumerator.Reset();
//Для рутовой точки получим позицию
str += root.Point.PrintCoordinate();
do
{
if (enumerator.Current.GetTypeNode() == ConstBodyPoints.Site)
continue;
if (skelet2 != null)
str +=MathHelper.GetElersAnglesZXY(
BoneMapperBvhToKinect.GetBoneMatrixByBvhName(skelet, enumerator.Current),
BoneMapperBvhToKinect.GetBoneMatrixByBvhName(skelet2, enumerator.Current));
else
str +=MathHelper.GetElersAnglesZXY(BoneMapperBvhToKinect.GetBoneMatrixByBvhName(skelet,
enumerator.Current));
} while (enumerator.MoveNext());
return (str += Environment.NewLine);
}