Я новичок в JavaScript и пытаюсь установить сглаживающий фильтр для выходных данных из моего Leap Motion. Я получаю данные, используя Cylon.js, и он в основном выводит 3 значения (x, y и z). Однако я не могу заставить сглаживающий код работать, я думаю, это потому, что я привык к синтаксису C / C ++ и, вероятно, делаю что-то не так.
Код такой:
"use strict";
var Cylon = require("cylon");
var numReadings = 20;
var readings[numReadings];
var readIndex = 0;
var total = 0;
var average = 0;
for (var thisReading = 0; thisReading < numReadings; thisReading++) {
readings[thisReading] = 0;
}
Cylon.robot({
connections: {
leapmotion: {
adaptor: "leapmotion"}
},
devices: {
leapmotion: {
driver: "leapmotion"}
},
work: function(my) {
my.leapmotion.on("hand", function(hand) {
console.log(hand.palmPosition.join(","));
// subtract the last reading:
total = total - readings[readIndex];
// read from the sensor:
readings[readIndex] = hand.palmPosition;
// add the reading to the total:
total = total + readings[readIndex];
// advance to the next position in the array:
readIndex = readIndex + 1;
// if we're at the end of the array...
if (readIndex >= numReadings) {
// ...wrap around to the beginning:
readIndex = 0;
}
// calculate the average:
average = total / numReadings;
console.log(average);
});
}
}).start();
Таким образом, данные, которые я пытаюсь отфильтровать, являются «hand.palmPosition». Но это дает мне следующую ошибку на консоли:
Любая помощь приветствуется!
Спасибо
Это неверный JS:
var readings[numReadings];
Похоже, вы хотите readings
быть массивом. Вам не нужно инициализировать массив JS с размером. Чтобы создать массив:
var readings = [];
Чтобы заполнить его нулями:
for (var thisReading = 0; thisReading < numReadings; thisReading++) {
readings.push[0];
}
Других решений пока нет …