我想做以下事情;
我自己可以做4个,但不知道怎么做1-3。
如果有帮助,我正试图翻译它;
http://kindohm.com/2011/03/01/KinectCursorControl.html(见可怕的摇动光标)。
答案 0 :(得分:0)
var nums = [[1,2],[1,3],[2,1]];
alert(nums[0][0]); //1
alert(nums[0][1]); //2
这是一个二维数组。加载数据与任何其他数组一样。
要按顺序更新它,您将在javascript中查看队列行为。使用unshift()和pop()。
Javascript Arrays:http://www.w3schools.com/jsref/jsref_obj_array.asp
最后,假设有10个位置,对列进行平均:
var num1 = 0;
var num2 = 0;
for(int i = 0;i<10;i++)
{
num1 +=array[i][0];
num2 +=array[i][1];
}
num1 = num1/10;
num2 = num2/10;
//num1 is now the average of the first column
//num2 is now the average of the second column
答案 1 :(得分:0)
这应该可行(顺便说一句好问题 - 有趣的小挑战,因为有很多方法可以做到)
var pointSmoother = (function(){
var pointCount = 10, // number of points to keep
componentCount = 2, // number of components per point (i.e. 2 for x and y)
points = [];
function clear() {
var i, l;
for( i = 0, l = componentCount ; i < l ; i++ ) {
if( typeof points[i] === 'undefined' ) {
points.push([]);
} else {
points[i].splice(0, pointCount);
}
}
}
clear();
function pushPoint( /* point components */ ) {
var i, l;
for( i = 0 ; i < componentCount ; i++ ) {
points[i].unshift(arguments[i]);
points[i] = points[i].slice(0, pointCount);
}
}
function average() {
var i, j, l, sum, averages = [];
l = points[0].length;
for( i = 0 ; i < componentCount ; i++ ) {
sum = 0;
for( j = 0 ; j < l ; j++ ) {
sum += points[i][j];
}
averages.push(sum/l);
}
return averages;
}
function getPoints() {
return points;
}
return {
getPoints: getPoints,
pushPoint: pushPoint,
clear: clear,
average: average
};
}());
它基本上做的是创建一个对象并将其分配给pointSmoother
。该对象有4种方法:pushPoint()
,clear()
,getPoints()
和average()
。在这个东西的顶部你可以设置一个点有多少个坐标,以及要保留多少个点(最大值)。我使用了每个点2个坐标的例子,一次10个点。
现在,我假设您一次以2组为单位获取您的值。我们称这两个值为x
和y
。当您收到它们时,请使用pointSmoother.pushPoint(x, y);
将它们添加到该项目中。然后,您可以通过调用pointSmoother.average()
来获得“平均点”,这将返回一个数组(在这种情况下)有2个值:平均x和平均y。
如果你想亲自查看数组,你可以调用pointSmoother.getPoints()
来返回点数组。最后,pointSmoother.clear()
将清空先前值的数组。
这是一个类似的演示:http://jsfiddle.net/tapqs/1/