Pergunta

Estou desenvolvendo aplicação no XNA, que desenha caminhos aleatórios. Infelizmente, estou fora de contato com o gráfico, então estou um pouco preso. Meu aplicativo precisa fazer o seguinte:

  1. Escolha um ângulo aleatório da minha origem (0,0), o que é simples.
  2. Desenhe um círculo em relação a essa origem, a 16px de distância (ou qualquer distância que eu especificar), no ângulo encontrado acima.

(Desculpe meu horrível photoshoping)

Alt Text http://www.refutored.com/coor.png

O segundo círculo em (16,16) representaria um ângulo de 45 graus a 16 pixels da minha origem.

Gostaria de ter um método no qual passei à minha distância e ângulo que retorna um ponto para representar graficamente. ou seja

private Point GetCoordinate(float angle, int distance)
{
   // Do something.
   return new Point(x,y);
}

Eu sei que isso é simples, mas Aian, estou muito fora de contato com o gráfico. Qualquer ajuda?

Obrigado, George

Foi útil?

Solução

Se o ângulo estiver em graus, primeiro faça:

angle *= Math.PI / 180;

Então:

return new Point(distance * Math.Cos(angle), distance * Math.Sin(angle));

A propósito, o ponto em (16, 16) não está a 16 pixels da origem, mas sqrt (16^2 + 16^2) = sqrt (512) = ~ 22,63 pixels.

Outras dicas

private Point GetCoordinate(float angle, int distance)
{
  float x = cos(angle) * distance;
  float y = sin(angle) * distance;
  return new Point(x, y);
}

Observe que as funções trigonométricas provavelmente tomam radianos. Se o seu ângulo estiver em graus, divida -se em 180/pi.

no geral:

x = d * cos(theta)
y = d * sin(theta)

Onde d é a distância da origem e teta é o ângulo.

Aprenda o Teorema de Pitágoras. Então este tópico Deve ter detalhes mais específicos para você.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top