本文整理汇总了C#中Controller.frame方法的典型用法代码示例。如果您正苦于以下问题:C# Controller.frame方法的具体用法?C# Controller.frame怎么用?C# Controller.frame使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Controller
的用法示例。
在下文中一共展示了Controller.frame方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: onFrame
public override void onFrame(Controller controller)
{
// Get the most recent frame and report some basic information
Frame frame = controller.frame();
HandArray hands = frame.hands();
int numHands = hands.Count;
SafeWriteLine("Frame id: " + frame.id()
+ ", timestamp: " + frame.timestamp()
+ ", hands: " + numHands);
if (numHands >= 1) {
// Get the first hand
Hand hand = hands[0];
// Check if the hand has any fingers
FingerArray fingers = hand.fingers();
int numFingers = fingers.Count;
if (numFingers >= 1) {
// Calculate the hand's average finger tip position
Vector pos = new Vector(0, 0, 0);
foreach (Finger finger in fingers) {
Ray tip = finger.tip();
pos.x += tip.position.x;
pos.y += tip.position.y;
pos.z += tip.position.z;
}
pos = new Vector(pos.x/numFingers, pos.y/numFingers, pos.z/numFingers);
SafeWriteLine("Hand has " + numFingers + " fingers with average tip position"
+ " (" + pos.x.ToString("n2") + ", " + pos.y.ToString("n2")
+ ", " + pos.z.ToString("n2") + ")");
}
// Check if the hand has a palm
Ray palmRay = hand.palm();
if (palmRay != null) {
// Get the palm position and wrist direction
Vector palm = palmRay.position;
Vector wrist = palmRay.direction;
SafeWriteLine("Palm position: (" + palm.x.ToString("n2") + ", "
+ palm.y.ToString("n2") + ", "
+ palm.z.ToString("n2") + ")");
// Check if the hand has a normal vector
Vector normal = hand.normal();
if (normal != null) {
// Calculate the hand's pitch, roll, and yaw angles
double pitchAngle = Math.Atan2(normal.z, normal.y) * 180/Math.PI + 180;
double rollAngle = Math.Atan2(normal.x, normal.y) * 180/Math.PI + 180;
double yawAngle = Math.Atan2(wrist.z, wrist.x) * 180/Math.PI - 90;
// Ensure the angles are between -180 and +180 degrees
if (pitchAngle > 180) pitchAngle -= 360;
if (rollAngle > 180) rollAngle -= 360;
if (yawAngle > 180) yawAngle -= 360;
SafeWriteLine("Pitch: " + pitchAngle.ToString("n0") + " degrees, "
+ "roll: " + rollAngle.ToString("n0") + " degrees, "
+ "yaw: " + yawAngle.ToString("n0") + " degrees");
}
}
// Check if the hand has a ball
Ball ball = hand.ball();
if (ball != null) {
SafeWriteLine("Hand curvature radius: " + ball.radius.ToString("n2") + " mm");
}
}
}