Fórum ângulos no delphi #209182
24/01/2004
0
minha dúvida é relacionada a ângulos
se eu tenho o ponto A na posição X 100 Y 100 e o ponto B na posição
X 200 Y 50 e fizer uma linha lingando estes pontos qual é o angulo desta linha????
Outra dúvida é que se por acaso tiver um botão no ponto A e eu quiser move-lo em ângulo de 45 graus tipo grau por grau so dando o angulo como que faço isso? como vou saber as cordenadas x.y até ele chegar lá?
se alguém souber fico agradecido
Robotizar
Curtir tópico
+ 0Posts
24/01/2004
::d::a::m::m::i::t::
naum sei exataente como fazer isso.... mas tenta usar a trigonometria..
no delphi tem umas funções (sin(), cos().....)...
tenta isso.....
e se der cata um livro de matemática tb...hehe
falow....
Gostei + 0
24/01/2004
Beppe
Já fiz alguns códigos pra rotacionar, quando achar eu posto.
Gostei + 0
24/01/2004
Robotizar
Gostei + 0
25/01/2004
Beppe
function RotatePoint(const P: TFloatPoint; Angle: Float): TFloatPoint; begin Result.X := P.X * Cos(Angle) - P.Y * Sin(Angle); Result.Y := P.X * Sin(Angle) + P.Y * Cos(Angle); end;
Angle não é 0..360, na verdade eu nem sei qual o domínio disso aí, mas funcionou pro que eu queria. Rotaciona em torno da posição (0, 0). Você precisará fazer um translate nesse ângulo.
Gostei + 0
22/02/2004
Marcelo Saviski
então rsolvi colocar a solução aqui..., pelo menso comogo funcionou
Angulo := (ArcTan2((X - 100), (Y - 100))) - pi/2;
//Isso descobre um ângulo passando os valores dos catetos
Panel1.Left := Trunc(100 + Cos(Angulo)*100) - 4;
Panel1.Top := Trunc(100 - Sin(Angulo)*100) - 4;
isso calcula uma nova posição através do ângulo
coloque isso no onmousemove do form, e Math no uses
Gostei + 0
22/02/2004
Marco Salles
O Ponto A Possui as Cordenadas : (Xa,Ya)
O Ponto B Possui as Cordenadas : (Xb,Yb)
Para Obertmos o Vou Simplificar em Duas Etapas:
AnguloRd:=ArcTan((Yb-Ya)/(Xb-Xa))=== A Primeira Etapa Se Obtem o Valor Do Angulo Em Radianos, Para Trasformar Este Valor Em Graus, Efetuar a Segunda Etapa: AnguloGr:=(360*AnguloRd)/(2*3,14159265359)====> Resposta Em Graus Onde o AnguloRd:= Angulo Em Radianos AnguloGr:= Angulo Em Graus
Obs:É Claro Que Voces Craques Em Informática que São Podem e Devem Simplificar a Expressão anterior e Coloca-la Em Uma Função
Acredito Porém Que Transformando Radianos Para Graus Em Delphi Voce Deva Ter Um Pequeno Desvio De Arredondamento, Talves Se For o Caso é Mais Conveniente Trabalhar Com Radianos..[/code]
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)