ângulos no delphi
oi
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
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
Curtidas 0
Respostas
::d::a::m::m::i::t::
24/01/2004
cara...
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....
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
Beppe
24/01/2004
Uma linha por si só não faz angulo, você precisa de uma segunda linha, que se encontre com a primeira.
Já fiz alguns códigos pra rotacionar, quando achar eu posto.
Já fiz alguns códigos pra rotacionar, quando achar eu posto.
GOSTEI 0
Robotizar
24/01/2004
essa paradinha da matematica eu sei ...faço mecanica geral no senai e geometria é tudo por lá.... tipo tem q transformar em um triangulo e fazer o teorema de pitagoras pra achar o angulo mais eu queria saber como passar isso pro delphi
GOSTEI 0
Beppe
24/01/2004
Tenta isso:
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.
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
Marcelo Saviski
24/01/2004
Tava pesquisando sobre isso aqui no fórum, achei a resposta para o que queria fazer,
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
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
Marco Salles
24/01/2004
Vou Sugerir Uma Formula Matematica Simples Para Equacionar a Questão
O Ponto A Possui as Cordenadas : (Xa,Ya)
O Ponto B Possui as Cordenadas : (Xb,Yb)
Para Obertmos o Vou Simplificar em Duas Etapas:
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]
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