Jump to content
_Ana_

Pontos dentro de uma circunferência

Recommended Posts

_Ana_

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

Obrigada a todos

Share this post


Link to post
Share on other sites
Diutsu

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.


XX SINFO - Semana Informática

Share this post


Link to post
Share on other sites
IceBrain

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);


❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites
_Ana_

@ 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...

Share this post


Link to post
Share on other sites
Diutsu

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.


XX SINFO - Semana Informática

Share this post


Link to post
Share on other sites
_Ana_

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

Obrigada! Já ajudaram

Share this post


Link to post
Share on other sites
IceBrain

PS: icebrain, é para ver se a distancia é menor que o raio, e não o diametro.

Oh, right. Distracção ;)

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.