/*distancia de avance decelerada*/ float [] avanza(float posX, float posY) { float[] avanza = new float [2]; float easing = 40; avanza[0] = (width/2 - posX)/easing; avanza[1] = (height/2 - posY)/easing; if (avanza[0]>10.0) { avanza[0]= 10.0; } if (avanza[1]>10.0) { avanza[1]= 10.0; } //println("vel: " + avanza[0] + ", "+ avanza[1]); return avanza; } /*distancia de avance girando*/ float [] gira(int direccionGiro) { float[] gira = new float [2]; float X1 = cos(angulo)*radio; float Y1 = sin(angulo)*radio; angulo += (0.03*direccionGiro); float X2 = cos(angulo)*radio; float Y2 = sin(angulo)*radio; gira[0] = X2 - X1; gira[1] = Y2 - Y1; //println("angulo: " + angulo + ", radio: " + radio + ", vel: " + gira[0] + ", "+ gira[1]); return gira; } /*Velocidad del movimiento de los objetos*/ void calculaVel() { int radioGiro = 40; float [] aceleracion = new float [2]; //isto controla que se cargaron os marcadores e se non foi asi evita que o mapa comece a moverse cara a ningunha parte if(marcadores.getCount()<=0){ fase=0; } if (fase==1) { aceleracion = avanza(centroX + marcadores.coordenadaX[marcadores.recorrido[marcadores.getPointer()]], centroY + marcadores.coordenadaY[marcadores.recorrido[marcadores.getPointer()]]); velX = aceleracion[0]; velY = aceleracion[1]; radio = dist(width/2, height/2, centroX + marcadores.coordenadaX[marcadores.recorrido[marcadores.getPointer()]], centroY + marcadores.coordenadaY[marcadores.recorrido[marcadores.getPointer()]]); if(radio<=radioGiro) { angulo = atan(velY/velX); if(velY/velX>0){ // -- o ++ if (velX>=0){ //++ angulo -= PI; } } else { // +- o -+ if (velY<=velX) { //+- angulo -= PI; } } fase++; } } else if (fase==2) { aceleracion = gira(direccion); velX = aceleracion[0]; velY = aceleracion[1]; //para que a peza funcione sola cando ninguén a utiliza o mapa se dirixe por orde a cada un dos lugares //almacenados en percorrido, o cabo dun rrato visitándoos pasa a dirixirse a o seguinte na lista. O que //facemos ao pulsar e cambiar os valores da lista e manter o puntero contador--; //println("contador: " + contador + " puntero: " +marcadores.getPointer()); if(contador<=0){ marcadores.setPointer(marcadores.getPointer()+1); contador = espera; fase=1; if(marcadores.getPointer()>=marcadores.getCount()) { marcadores.setPointer(0); } } } }