Print de um instante de execução do código
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | int relogio = millis(); int intervalo = 1000; float dx; float dy = 600; float t; ArrayList pontos = new ArrayList(); void setup() { size(600,600); background(100); } void draw() { t = millis()/100; //contador de tempo disparoBalistico(70,100); desenhaTrajeto(pontos); } void disparoBalistico(int ang, int velLancamento) { /* Essa função funciona a partir da decomposição dos vetores de movimento o Vo da formula é o valor velLancamento, passado por parametro. O V utilizado no dx é o resultado da decomposição do eixo X do vetor de movimentação | / V do MRUV | / a linha de / = resultante do vetor, ou hipotenusa, responsável pela direção do projétil |/___ Velocidade do MRU eixo y = hipotenusa * seno(angulo) eixo x = hipotenusa * cos(angulo) */ background(100); float a = -9.8; //declaro a aceleração, uma CONSTANTE. float hipo = velLancamento/sin(radians(ang)); // descubro o valor da hipotenusa, necessária para descobrir o eixo X do vetor float velFixo = hipo * cos(radians(ang)); //Descubro o eixo X do vetor. //A partir daqui é apenas aplicação de formula. pontos.add(dx); //pontos utilizados para a função desenhaTrajeto. pontos.add(dy+600); dx = velFixo*t; dy = (velLancamento*t + (a*t*t/2))*-1; pontos.add(dx); pontos.add(dy+600); ellipse(dx,600 + dy, 30,30); } void desenhaTrajeto(ArrayList pontos) { for(int i = 3; i < pontos.size(); i+=2) { line((Float)pontos.get(i-3),(Float)pontos.get(i-2),(Float)pontos.get(i-1),(Float)pontos.get(i)); } } |

Nenhum comentário:
Postar um comentário