Я работаю над скачком в обработке. Я делаю простое приложение, которое будет отслеживать движение index_finger и рисовать его... все в порядке... мой проект отслеживает мой указатель и рисует по мере необходимости, но проблема возникает, когда я прекращаю рисовать (я использовал круговое движение для включение эскиза и остановка движения касанием) нет ничего, что могло бы сказать мне, где находится мой курсор... Я должен угадать положение моего указателя index_finger. вот что я сделал до сих пор...
import java.util.Map;
import java.util.concurrent.ConcurrentMap;
import java.util.concurrent.ConcurrentHashMap;
import com.leapmotion.leap.Controller;
import com.leapmotion.leap.Finger;
import com.leapmotion.leap.Frame;
import com.leapmotion.leap.Pointable;
import com.leapmotion.leap.Hand;
import com.leapmotion.leap.Tool;
import com.leapmotion.leap.Vector;
import com.leapmotion.leap.Gesture;
import com.leapmotion.leap.processing.LeapMotion;
LeapMotion leapMotion;
ConcurrentMap<Integer, Integer> fingerColors;
ConcurrentMap<Integer, Integer> toolColors;
ConcurrentMap<Integer, Vector> fingerPositions;
ConcurrentMap<Integer, Vector> toolPositions;
float hey = 21;
float hi = 15;
float hoo = 0;
boolean circle_me = false;
boolean tap_me = false;
void setup()
{
size(16 * 50, 9 * 50);
background(250);
frameRate(60);
ellipseMode(CENTER);
leapMotion = new LeapMotion(this);
fingerColors = new ConcurrentHashMap<Integer, Integer>();
fingerPositions = new ConcurrentHashMap<Integer, Vector>();
}
void draw()
{
text("Sketch Pad", 250,80);
for (Map.Entry entry : fingerPositions.entrySet())
{
Integer fingerId = (Integer) entry.getKey();
// println ("finger_id: " + fingerId);
Vector position = (Vector) entry.getValue();
// fill(fingerColors.get(fingerId));
if (keyPressed && (key == 'd') || circle_me == true){
smooth();
fill(random(0,255),random(0,255),random(0,255),120);
// fill(255, 0, 0, 25);
//stroke(0);
noStroke();
ellipseMode(CENTER);
ellipse(leapMotion.leapToSketchX(position.getX()), leapMotion.leapToSketchY(position.getY()), 25.0, 25.0);
}
//else
//pencil(position);
if(tap_me){
circle_me = false;
tap_me = false;
}
/*
else{
//fill(100);
//rect(0,0,width,height);
ellipseMode(CENTER);
ellipse(leapMotion.leapToSketchX(position.getX()), leapMotion.leapToSketchY(position.getY()), 5.0, 5.0);
}
*/
if (keyPressed && (key == 'e'))
background(255);
}
}
boolean pencil(Vector position){
if(hoo == 0){
hi = leapMotion.leapToSketchX(position.getX());
hey = leapMotion.leapToSketchY(position.getY());
hoo++;
}
line(leapMotion.leapToSketchX(position.getX()), leapMotion.leapToSketchY(position.getY()), hi, hey);
hi = leapMotion.leapToSketchX(position.getX());
hey = leapMotion.leapToSketchY(position.getY());
strokeWeight(1);
// println("x: " + position.getX() + "\n y: " + position.getY());
return true;
}
void onInit(final Controller controller)
{
controller.enableGesture(Gesture.Type.TYPE_CIRCLE);
controller.enableGesture(Gesture.Type.TYPE_KEY_TAP);
// enable background policy
controller.setPolicyFlags(Controller.PolicyFlag.POLICY_BACKGROUND_FRAMES);
}
void onFrame(final Controller controller)
{
Frame frame = controller.frame();
for (Gesture gesture : frame.gestures())
{
if ("TYPE_CIRCLE".equals(gesture.type().toString()) && "STATE_START".equals(gesture.state().toString())) {
//circle_me = true;
println("circled " + gesture.duration());
}
else if ("TYPE_CIRCLE".equals(gesture.type().toString()) && "STATE_STOP".equals(gesture.state().toString())) {
circle_me = true;
println("circledS " + gesture.duration());
}
else if ("TYPE_KEY_TAP".equals(gesture.type().toString()) && "STATE_STOP".equals(gesture.state().toString())) {
if ("TYPE_KEY_TAP".equals(gesture.type().toString()) && "STATE_STOP".equals(gesture.state().toString())) {
tap_me = true;
println("tapped " + gesture.duration());
}
}
}
fingerPositions.clear();
for (Finger finger : frame.fingers())
{
int fingerId = finger.id();
color c = color(random(0, 255), random(0, 255), random(0, 255));
fingerColors.putIfAbsent(fingerId, c);
if("TYPE_INDEX".equals(finger.type().toString())){
fingerPositions.put(fingerId, finger.stabilizedTipPosition());
String finger1 = finger.type().toString();
// println ("index: " + finger.stabilizedTipPosition());
//println("x: " + finger.getX() + "\n y: " + finger.getY());
}
/*
if("TYPE_THUMB".equals(finger.type().toString())){
String finger2 = finger.type().toString();
// fingerPositions.put(fingerId, finger.stabilizedTipPosition());
// println ("thumb: " + finger.stabilizedTipPosition());
}
*/
}
}
Мне нужно что-то, что действует как курсор, когда режим эскиза неактивен.