Eu estou com um problema com a movimentação de objetos. Eu consigo movimentá-los para o lado (eixo X) e pra cima e pra baixo (eixo Y), talvez eu até conssiga fazer eles se moverem num ângulo de 45º mas o problema é que eu quero conseguir movimentar estes objetos em qualquer ângulo.
Eu fiz um código que na verdade até da certo, só que é um quebra-galho.
//Codigo para calcular o próximo pixel
//posx e posy são atributos do objeto
public Point Prox(){
Point nextPos = new Point();
double adx = Math.cos(Math.toRadians(graus));//coseno do grau
double ady = Math.sin(Math.toRadians(graus));//seno do grau
posx += adx; //adiciona resultado à coordenada x
posy += -ady;// adiciona resultado à coordenada y
nextPos.x = (int)posx; //arredonda e atribui
nextPos.y = (int)posy; //à variável de retorno
return nextPos;
}
Eu queria saber se tem um jeito melhor de fazer isso porque eu fiz mas não me parece certo, na verdade extremamente errado.
Ex:
Para um objeto se mover em um angulo de 45º é preciso que seja adicionado 1 pixel em cada eixo a cada ‘passo’ que ele dá. O seno de 45º é 0.7, quando arredondar vai para 1 mas da próxima vez o programa vai ter que arredondar 1.4 e vai arredondar para 1 ao invés de 2.
Se puderem me falar uma coisa ou duas sobre vetores em java eu seria muito grato, também. 