http://stackoverflow.com/questions/12608734/body-joints-angle-using-kinect-checking-time-interval?rq=1http://stackoverflow.com/questions/15989322/calculate-kinect-skeleton-knee-and-elbow-angles-using-existing-joint-angleshttp://channel9.msdn.com/coding4fun/kinect/Kinect-Earth-Movehttp://social.msdn.microsoft.com/Forums/en-US/8516bab7-c28b-4834-82c9-b3ef911cd1f7/using-kinect-to-calculate-angles-between-human-body-joints
public static double myMethodZY(Joint j1, Joint j2, Joint j3)
{
Vector3 a = new Vector3(0, j1.Position.Y- j2.Position.Y, j1.Position.Z- j2.Position.Z);
Vector3 b = new Vector3(0, j3.Position.Y - j2.Position.Y, j3.Position.Z - j2.Position.Z);
a.Normalize();
b.Normalize();
double dotProduct = Vector3.Dot(a,b);
double angle= Math.Acos(dotProduct);
angle = angle * 180 / Math.PI;
//angle = 180 - angle;
return angle;
}

f you are using Kinect SDK to get the skeletal tracking, the you can use this:

/// <summary>/// Return the angle between 3 Joints/// Regresa el ángulo interno dadas 3 Joints/// </summary>/// <param name="j1"></param>/// <param name="j2"></param>/// <param name="j3"></param>/// <returns></returns>publicstaticdoubleAngleBetweenJoints(Joint j1,Joint j2,Joint j3){doubleAngulo=0;double shrhX = j1.Position.X - j2.Position.X;double shrhY = j1.Position.Y - j2.Position.Y;double shrhZ = j1.Position.Z - j2.Position.Z;double hsl = vectorNorm(shrhX, shrhY, shrhZ);double unrhX = j3.Position.X - j2.Position.X;double unrhY = j3.Position.Y - j2.Position.Y;double unrhZ =j3.Position.Z - j2.Position.Z;double hul = vectorNorm(unrhX, unrhY, unrhZ);double mhshu = shrhX * unrhX + shrhY * unrhY + shrhZ * unrhZ;double x = mhshu /(hul * hsl);if(x !=Double.NaN){if(-1<= x && x <=1){double angleRad =Math.Acos(x);Angulo= angleRad *(180.0/Math.PI);}elseAngulo=0;}elseAngulo=0;returnAngulo;}/// <summary>/// Euclidean norm of 3-component Vector/// </summary>/// <param name="x"></param>/// <param name="y"></param>/// <param name="z"></param>/// <returns></returns>privatestaticdouble vectorNorm(double x,double y,double z){returnMath.Sqrt(Math.Pow(x,2)+Math.Pow(y,2)+Math.Pow(z,2));}

This method use 3 joints to get an angle.

Body joints angle using Kinect的更多相关文章

  1. Kinect开发资源汇总

    Kinect开发资源汇总   转自: http://www.sigvc.org/bbs/forum.php?mod=viewthread&tid=254&highlight=kinec ...

  2. 孙陪你,了解它的权力--Kinect结合的发展Unity3D游戏应用开发

    unity3d正在使用kinect三维模型数据控制(它切成脚本) 博主在做项目时须要利用kinect数据控制三维模型中人物的动作.但不是实时控制,而是利用之前获得的骨骼数据,直接控制.无需再利用脚本打 ...

  3. Kinect 开发 —— 语音识别(下)

    使用定向麦克风进行波束追踪 (Beam Tracking for a Directional Microphone) 可以使用这4个麦克风来模拟定向麦克风产生的效果,这个过程称之为波束追踪(beam ...

  4. Kinect 开发 —— 姿势识别

    姿势和手势通常会混淆,但是他们是两个不同的概念.当一个人摆一个姿势时,他会保持身体的位置和样子一段时间.但是手势包含有动作,例如用户通过手势在触摸屏上,放大图片等操作. 通常,游戏者很容易模仿指定姿势 ...

  5. 使用HTML5开发Kinect体感游戏

    一.简介 我们要做的是怎样一款游戏? 在前不久成都TGC2016展会上,我们开发了一款<火影忍者手游>的体感游戏,主要模拟手游章节<九尾袭来 >,用户化身四代,与九尾进行对决, ...

  6. Kinect开发随笔①——红外扫描仪(Kinect 数据源)

    来源于 MVA 的 快速入门:Kinect for Windows v2 开发 的学习随笔 具体内容为上图所示章节内容 章节内全部代码:GitHub地址点我(链接失效,待补档) <Page &l ...

  7. 新春测 kinect motor

    大年30,祝所有开发伙伴新春快乐. 天天FQ, 叹国内学习成本太高 看到一篇台湾 kinect 电机控制, 赞 using Microsoft.Kinect; using System; using ...

  8. OpenNI结合Unity3D Kinect进行体感游戏开发(转)

    OpenNI结合Unity3D Kinect进行体感游戏开发(转) 楼主# 更多 发布于:2012-07-17 16:42     1. 下载安装Unity3D(目前版本为3.4)2. 下载OpenN ...

  9. kinect学习笔记(四)——各种数据流

    一.kinect开发的一个流程图 1.我们可以知道一个简单的框架就是几部分 (1)选择使用的kinect传感器 KinectSensor.KinectSensors[] (2)打开需要的数据流 _ki ...

随机推荐

  1. eclipse启动tomcat 访问http://localhost:8080 报404错误

    eclipse启动tomcat 访问http://localhost:8080 报404错误 Server Locations修改后会变灰,如果需要更改设置,则需要移除与Tomcat服务器关联的项目, ...

  2. atomic_compare_exchange

    atomic_compare_exchange 分为两个版本 atomic_compare_exchange_strong 和 atomic_compare_exchange_weak,语义如下 bo ...

  3. linux之SQL语句简明教程---CONCATENATE

    有的时候,我们有需要将由不同栏位获得的资料串连在一起.每一种资料库都有提供方法来达到这个目的: MySQL: CONCAT( ) Oracle: CONCAT( ), || SQL Server: + ...

  4. linux之grep实例讲解

    文件testgrep内容: 1.显示所有包含San的行   2.显示所有以J开始的人名所在的行 3.显示所有以700结尾的行 4.显示所有不包括834的行    5.显示所有生日在December的行 ...

  5. word2vec 入门基础(一)

    一.基本概念 word2vec是Google在2013年开源的一个工具,核心思想是将词表征映 射为对应的实数向量. 目前采用的模型有一下两种 CBOW(Continuous Bag-Of-Words, ...

  6. sharepoint 2010 使用自定义列表模版创建列表(1)

    我们在使用sharepoint的过程中,发现一个比较好用的功能,就是“将此列表另存为模版”(save list as template),这个功能的作用是,创建一个和当前列表或者文档库一模一样的配置, ...

  7. E6全部刷机包

    此版本号基于R533_G_11.11.10P_GSZMCAUT679DA01B_LP064DA_T679DA_S005_E001_P002_R001_G004_1FF.sbf制作耳机接听或挂机正常内置 ...

  8. Swift类与结构、存储属性、计算属性、函数与方法、附属脚本等

    写了12个Person来复习,不过完成同样的代码需要敲键盘的次数相比OC确实少了很多,这很多应该归功于Swift中不写分号,以及少了OC中的中括号. 一.类与结构体 两者在Swift中差不了多少了 类 ...

  9. 【c语言】调整数组使奇数所有都位于偶数前面

    // 调整数组使奇数全部都位于偶数前面 // 输入一个整数数组,实现一个函数,来调整该数组中数字的顺序使得数组中全部的奇数位于数组的前半部分, // 全部偶数位于数组的后半部分. #include & ...

  10. 搭建PhoneCat项目的开发与测试环境

    AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 获取源代码 PhoneCa ...