[quote=ViniGodoy]Primeiro de tudo. Pontos são a representação de locais no espaço. Portanto, não existe angulos entre pontos.
Você pode estar considerando o vetor formado pelo deslocamento do ponto em relação ao (0,0). Pelo seu desenho parece ser isso mesmo.
Nesse caso, o menor angulo entre dois vetores (pois existem 2 ângulos possíveis) é dado pelo arco-cosseno do produto escalar, dividido pelo produto do tamanho dos dois vetores.
angulo = arccos(a.b / ||a|||b||);
angulo = Math.acos(axbx+ayby / sqr(axax + ayay)sqrt(bxbx + by*by));
E para obter um ponto na mesma direção e sentido de um ponto qualquer, basta multiplicar x e y por um valor positivo qualquer. Se o valor for negativo, você obtém um ponto no sentido oposto.
Se você está tendo que fazer contas desse tipo, eu sugiro fortemente que você estude o conceito de vetores, e implemente uma classe que represente um vetor.
Para mais informações:
Ponto V! - O uso de vetores nos jogos[/quote]
Você disse aqui:
E para obter um ponto na mesma direção e sentido de um ponto qualquer, basta multiplicar x e y por um valor positivo qualquer. Se o valor for negativo, você obtém um ponto no sentido oposto.
Se eu tenho um ponto na posição x = 3000 e y = 3000. Se eu quiser adicionar um ponto a frente, é só eu multiplicar esses valores.
Se eu multiplicar isso ai por 1,1 eu recebo 3300 em x e 3300 em y.
Só que isso é um ponto muito longe do original.
Porem, se eu tivesse x,y = 10,10 e multiplicasse por 1,1 ia ter
x,y = 11,11
Esse ponto criado está de bom tamanho.
Vou ter que fazer uma funcao pra colocar um ponto numa distancia padrão então?
Quero que a distancia entre os pontos criados seja de 5.
Multiplicar por 1,1 nao ia funcionar se a coordenada fosse 3000 ou 10.
Alguma dica?
-------------- EDITADO --------------
Fiz algo assim
QTDAFRENTE = 5;
x = 3000
y = 286
x *= calculaPontoFixo(x) / 100;
y *= calculaPontoFixo(y) / 100;
calculaPontoFixo(ponto) {
resultado;
novoPonto = ponto + QTDAFRENTE;
resultado = novoPonto * 100 / ponto;
return resultado;
}
Consegui o que eu queria.
Eu queria colocar um ponto sempre a frente do outro de tantos em tantos pixels por exemplo, dai essa função funcionou no papel, agora vo pro java.
---------------- EDITADO EDITADO -------------------
¬¬
Na verdade eu to tentando descobrir pela porcentagem q eu tenho q multiplicar
Ou Seja essa função INUTIL QUE EU FIZ, no fim sempre me retorna o x + QTDAFRENTE
AIUAHIUAHIAUHAIU
