Pontos dentro de uma circunferência - Java - Portugal-a-Programar
Pontos dentro de uma circunferência
By _Ana_, January 7, 2011 in Java
_Ana_ 0
Antes de mais , queria agradecer a vossa atenção e ajuda. É a minha primeira mensagem, mas já cá venho há algum tempo.
Eu precisava de saber, como é que sabendo o raio de uma circunferência se podem indicar quais os pontos - já lá "postos"- que estão dentro dela.
O trabalho que estou a fazer é um jogo- ultra básico (trabalho da faculdade)- baseado no filme Mars Attacks. Criam-se 2 exércitos, os humanos e os ETs. Colocam-se os soldados no campo de batalha (x,y). Os humanos ao fazerem um ataque matam os aliens que estão dentro de um círculo com um raio que é definido pelo utilizador no início do jogo.
Por isso precisava -e preciso - de saber como posso fazer o método do ataque dos humanos...
Eu tive uma ideia mas não bem como executá-la e penso que vai complicar: era fazer um iterador que vai "buscar" todos os aliens e que corre no método boolean ptInCircle(double x, double y) . Mas não parece ser boa ideia
Se é uma boa ideia ou não depende de muita coisa. Podes ter de percorrer todos os aliens, para cada humano. Podes ter de fazer o contrário. Podes simplesmente para cada humano, ver que outros objectos estão no mapa de jogo.
Se estas na faculdade devias saber a expressão do circulo de cor e salteado: r^2 > (x - x0) ^2 + (y + y0)^2.
Como é que estás a guardar a posição dos soldados e do centro dos círculos? Se usares Points, podes usar o método distance() que calcula a distância entre esse Point e outro que lhe passes.
Assim, basta ver se a distância do soldado ao centro do círculo é menor que o diâmetro deste último:
bool affected = (soldier.getPosition().distance(circle.center) < circle.diameter);
@ IceBrain
O que estou a fazer é no método de criação de soldado, pedem-se as coordenadas dos soldados (tanto humanos como aliens) e guardo-os num vector. Quanto à expressão, eu conheço-a mas não da faculdade lol- caloira lol
@ Diutsu
Estou a guardar num vector a posição de todos os soldados. O centro do circulo é a posição (x,y) do soldado humano que ataca.
Eu ainda não falei em points por isso acho que não posso usar... Mas tem realmente é uma boa forma calcular a distância entre o centro e os inimigos. Tenho de o tentar fazer com as posições dos soldados... Hum...
Point não é mais que uma classe do java que guarda dois valores X,Y e representa um ponto.
Se achas que não podes usar, cria a tua implementação, se achas que facilita a compreensão do código.
Se tens a posição de todos os soldados num Vector, é fácil arranjares um Iterator. vectorSoldados.iterator() devolve um.
PS: icebrain, é para ver se a distancia é menor que o raio, e não o diametro.
Pois eu estava exactamente a pensar fazer um iterador mas como consigo calcular a distancia entre o soldado que ataca e os outros? Era esse o meu problema. Desculpem sou n00b mesmo