GMU:Tutorials/Performance Platform/Measuring Motion with Processing: Difference between revisions
QianqianLI (talk | contribs) No edit summary |
QianqianLI (talk | contribs) No edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 15: | Line 15: | ||
*Groups of persons mode: Measuring the pairwise distances between root nodes of three persons.<br> | *Groups of persons mode: Measuring the pairwise distances between root nodes of three persons.<br> | ||
== Process: == | == Process: == | ||
'''1. Collecting the correlative data for the speed:''' Through the connecting of OSC and Motion Tracking platform, the root position and the updated data of one person could be obtained. The shifting distance and the relevant time decides the speed of the root node. | |||
<br> | |||
<source lang="java"> | <source lang="java"> | ||
public void updateRoot(float x, float y, float z) { | public void updateRoot(float x, float y, float z) { | ||
Line 34: | Line 34: | ||
} | } | ||
</source> | </source> | ||
2. | '''2. The shifting distance and the relevant time decides the speed of the root node.''' <br> | ||
The shifting distance and the relevant time decides the speed of the root node. | |||
<source lang="java"> | <source lang="java"> | ||
float speed (Sphere sphere1) | float speed (Sphere sphere1) | ||
Line 43: | Line 42: | ||
return vel2; | return vel2; | ||
} | } | ||
<source> | </source> | ||
3.Calculating the distance between two root points. | '''3.Calculating the distance between two root points.''' | ||
<source lang="java"> | <source lang="java"> | ||
float distance (Sphere sphere1,Sphere sphere2) | float distance (Sphere sphere1,Sphere sphere2) | ||
Line 55: | Line 54: | ||
return distance; | return distance; | ||
} | } | ||
<source> | </source> | ||
4.Calculating the area of the triangle make up by three root points. | '''4.Calculating the area of the triangle make up by three root points.''' | ||
<source lang="java"> | <source lang="java"> | ||
float triangleSize(Sphere sphere1,Sphere sphere2,Sphere sphere3) | float triangleSize(Sphere sphere1,Sphere sphere2,Sphere sphere3) | ||
Line 71: | Line 70: | ||
return triangleSize; | return triangleSize; | ||
} | } | ||
<source> | </source> | ||
Three root positions could form a triangle in the space. With the help of Heron’s formula, the area of the triangle could be calculated. | Three root positions could form a triangle in the space. With the help of Heron’s formula, the area of the triangle could be calculated. | ||
5.According to the speed, distance, area giving different background color. | '''5.According to the speed, distance, area giving different background color.''' | ||
<source lang="java"> | <source lang="java"> | ||
//the maximum area is 6*6/2=18m^2,mapping the value of the area to the color of the background | //the maximum area is 6*6/2=18m^2,mapping the value of the area to the color of the background | ||
Line 93: | Line 92: | ||
speed = ceil(speed); | speed = ceil(speed); | ||
background(speed); | background(speed); | ||
<source> | </source> | ||
== Enjoy and keep on == |
Latest revision as of 21:06, 31 July 2016
Measuring Motion
Introduction:
Through the motion tracking system man could get basic information about one or more persons’ movements in the specific area. Normally these information describe the status of some important nodes of a person, such as head, arms, hip, feet and so on.
This article is mainly a step by step tutorial about different ways of accumulating motion data(such as the speed of a person or the expansion among three persons) into a single value. In the following examples, these simple values are visualised in a simple basic way in processing: changing the background color.
Preparations:
- Man has to calibrate the Tracking platform at first! Reference: Tracking Platform Calibration
- About how to use a single value getting from the Capture to control processing part, you could check the following tutorial by Yun Liu: Controlling Processing with the Captury
Challenges:
- One person mode: Calculating the root speed and visualizing this value by changing the background color.
- Groups of persons mode: Measuring the pairwise distances between root nodes of three persons.
Process:
1. Collecting the correlative data for the speed: Through the connecting of OSC and Motion Tracking platform, the root position and the updated data of one person could be obtained. The shifting distance and the relevant time decides the speed of the root node.
public void updateRoot(float x, float y, float z) {
x2 = abs(x - x1);
y2 = abs(y - y1);
z2 = abs(z - z1);
x1 = this.x;
y1 = this.y;
z1 = this.z;
float distance = sqrt(sq(x2)+sq(y2)+sq(z2));
//Record the duration time that this bone move from the first point to the second point
temptime = millis();
time2 = (temptime - time1)/1000;
//Calculate the velocity of this bone
vel = (distance/time2)*100;
}
2. The shifting distance and the relevant time decides the speed of the root node.
float speed (Sphere sphere1)
{
float vel2 = sphere1.vel-vel1;
vel1 = sphere1.vel;
return vel2;
}
3.Calculating the distance between two root points.
float distance (Sphere sphere1,Sphere sphere2)
{
float distance = sqrt(sq(sphere1.x-sphere2.x)+sq(sphere1.y-sphere2.y)+sq(sphere1.z-sphere2.z));
float dis2;
dis2 = distance;
distance = distance-dis1;
dis1 = dis2;
return distance;
}
4.Calculating the area of the triangle make up by three root points.
float triangleSize(Sphere sphere1,Sphere sphere2,Sphere sphere3)
{
float side_a = sqrt(sq(sphere1.x-sphere2.x)+sq(sphere1.y-sphere2.y)+sq(sphere1.z-sphere2.z));
float side_b = sqrt(sq(sphere1.x-sphere3.x)+sq(sphere1.y-sphere3.y)+sq(sphere1.z-sphere3.z));
float side_c = sqrt(sq(sphere2.x-sphere3.x)+sq(sphere2.y-sphere3.y)+sq(sphere2.z-sphere3.z));
float s = (side_a+side_b+side_c)/2;
float triangleSize = sqrt(s*(s-side_a)*(s-side_b)*(s-side_c));
float size2;
size2 = triangleSize;
triangleSize = triangleSize-size1;
size1 = size2;
return triangleSize;
}
Three root positions could form a triangle in the space. With the help of Heron’s formula, the area of the triangle could be calculated.
5.According to the speed, distance, area giving different background color.
//the maximum area is 6*6/2=18m^2,mapping the value of the area to the color of the background
float size = triangleSize(sphere1,sphere2,sphere3);
size = map(size,0,18,0,255);
size = ceil(size);
background(size);
//the maximum distance is 6m,mapping the value of the distance to the color of the background
float dis = ditance(sphere1,sphere2);
dis = map(dis,0,6,0,255);
dis = ceil(dis);
background(dis);
//the maximum speed of human is 10m/s,mapping the value of the speed to the color of the background
float speed = speed(sphere1);
speed = map(speed,0,10,0,255);
speed = ceil(speed);
background(speed);