Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Mafezinha

[Resolvido] Desenhar reta perpendicular por um ponto fora da reta

Recommended Posts

Olá gente,

Preciso da ajuda de vocês: estou tentando fazer alguns comandos básicos do autocad no delphi (eu que esse é um fórum de C, mas como vcs programam jogos, imagino que consigam tirar minha dúvida), e o usuário desenha uma reta e clica em um ponto fora dela, aí preciso traçar a reta perpendicular a essa q ele desenhou, passando por esse ponto.

Pelos conceitos de produto escalar e geometria consigo calcular a distância desse ponto à reta, mas não consigo achar o ponto na reta para poder traçar a perpendicular.

Vcs podem me ajudar??

 

Obrigada!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Calcule o coeficiente angular M com os dois pontos que você ja tem da reta desenhada.

O coeficiente angular da reta perpendicular é -1/M. você vai ter uma reta s como y = -x/M + b. Substitua o ponto clicado p/ calcular o coeficiente linear da reta s. Depois iguale as duas pra achar x e y.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Q bom!!!

posta ae como conseguiw c possivel!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pI:= TPonto(ListaRetas.Items[indice]); //Ponto inicial da reta desenhada

pF:= TPonto(ListaRetas.Items[indice+1]); //Ponto final da reta desenha

 

m:= (pF.Y - pI.Y) / (pF.X - pI.X); //Coef angular da reta desenhada

b1:= pI.Y - ((pI.X)* m); //Coef linear da reta desenhada

b2:= pAtual.Y + ((pAtual.X)/m); //Coef linear da reta perpendicular

prX:= Round( (b2 - b1) / (m + 1/m) );

prY:= Round( -prX / m + b2 );

 

Nessas duas ultimas linhas, eu tenho que arredondar o valor encontrado (q nem sempre eh inteiro), pq os pixesl no delphi são inteiros. Ainda não sei como trabalhar com pixels naum inteiros, se alguém souber pra me falar!!

 

Aí é só desenhar uma linha do (pAtual.X, pAtual.Y) até o (prX, prY) encontrado.

(pAtual é o ponto externo à reta, por onde eu quero passar a perpendicular)

 

Gente...qq dúvida eh soh me falar, ok??

 

Vlwssss

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então esse código acima não é perfeito pq ele ainda não trata qdo m é igual a zero!

 

Ele dah uns paus, mas no geral ele funciona viu!!!

 

Se alguém tiver alguma sugestão para melhorar, posta aki, beleza??

 

Vlwss gente!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fia,se m é igual a zero, você tem uma reta horizontal...A perpendicular vai ser x = x1 sendo x1 a abscissa do ponto que foi clicado. Geometria basica...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Calma meninas.

 

Está ficando legal seu código, apesar de não ser feito em C ou C++.

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

Querido, eu não coloquei aki pq eu AINDA não tinha desenvolvido essa parte, mas não significa que eu não saiba fazer!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.