GAMBCODES

Obtendo a distância entre dois pontos da tela

Olá a todos! Consegui um tempo para criar um post aqui. Apesar do tempo agora escasso devido ao meu TCC e outras tantas coisas, hora da minha faculdade, hora do meu trabalho. Embora com todas as dificuldades é um prazer espalhar o pouco o que eu sei a todos.

Vire e mexe preciso desenvolver algo que vejo ser interessante mostrar a todos. Precisei realizar o cálculo da distância entre dois pontos na tela do computador. Depois de muito tempo pesquisando obtive resultados interessante, que podem ser executando muito facilmente. Vejamos…

Demonstração do cálculo de distância

Obtendo as coordenadas x, y da tela e um pouco de matemática o resultado pode ser obtido.

Primeiramente para que possamos entender o funcionamento desta aplicação devemos entender um pouco sobre plano cartesiano.   Plano cartesiano consiste em um sistema de localização de pontos em um determinado espaço.

Untitled-3(25)

Basicamente a tela de nosso computador é uma grande matriz de pixels. Com cada pixel tendo uma determinada cor e coordenada.

imagem11

Desta forma, para obtermos a distância entre o ponto A e B na tela primeiramente devemos obter as coordenadas de ambos (A (x1, y1), B (x2, y2)).

Estou utilizando o Visual Studio 2008 e programando em Visual Basic para criação desta aplicação, no entanto, sinta-se à vontade para realizar em outra linguagem de programação.

Nos eventos do mouse podemos obter as coordenadas x e y muito facilmente. No evento MouseMove, por exemplo, é passado uma classe do tipo MouseEventArgs que fornece dados referente ao mouse, e dentre eles as coordenadas x e y do mouse. No trecho de código vermos como obter as coordenadas do mouse dentro de um PictureBox e assim as mostrando em uma caixa de diálogo a cada vez que o mouse se mover.

 

Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove
MsgBox(e.X & " " & e.Y)
End Sub

 

Após obter o par de coordenadas partimos para a matemática. Com os pontos obtidos podemos construir um triângulo retângulo utilizando os pontos A e B.

distanc1

Segundo o teorema de Pitágoras: a soma das áreas dos quadrados construídos sobre os catetos equivale à área do quadrado construído sobre a hipotenusa. Assim podemos aplicar o teorema para obtermos a distância dos dois pontos. Assim:

Vejamos o trecho de código com a execução do cálculo:

Dim diastancia As Double

distancia = Math.Sqrt(Math.Pow((x2 – x1), 2) + Math.Pow((y2 – y1), 2))

 

Por fim o código adaptado para calcular a distância dentro de um PictureBox:

Public Class CalculaReta

 

Private x1 As Decimal

Private x2 As Decimal

Private y1 As Decimal

Private y2 As Decimal

Private primeiro As Boolean = True

Private distancia As Double

 

Private Sub PictureBox1_MouseMove(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles PictureBox1.MouseMove

 

Dim Altura As Decimal

Dim Largura As Decimal

Dim Desenha As Graphics

Dim CorLinha As Pen

Dim CorPreenchimento As Brush

CorLinha = New Pen(Color.Black)

 

Desenha = PictureBox1.CreateGraphics()

 

Altura = 7

Largura = 7

width = 7

height = 7

 

If primeiro Then

x1 = e.X

y1 = e.Y

 

Else

x2 = LocalMousePosition.X

y2 = LocalMousePosition.Y

distancia = Math.Sqrt(Math.Pow((x2 – x1), 2) + Math.Pow((y2 – y1), 2))

 

Desenha.Clear(Color.White)

Desenha.DrawLine(CorLinha, x1, y1, x2, y2)

Desenha.DrawString(String.Format(“{0:N2}px” & vbCrLf & “{1:N2}cm”, distancia, distancia * 0.02645833333333), _

New System.Drawing.Font(“Arial”, 10, FontStyle.Bold), _

Brushes.Black, _

x2, _

y2)

 

End If

End Sub

 

Private Sub PictureBox1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Click

 

If primeiro Then

primeiro = False

Else

primeiro = True

End If

 

End Sub

End Class

 

Por fim, no caso de querer converter pixel para centimetros, 1 pixel equipave a 0.02645833333333 centimetros.

 

PROMOÇÃO PARA QUEM GOSTA DE BOA LEITURA!!!

Entre 20 e 30 de outubro a Amazon oferece 50% de desconto em mais de 200 grandes eBooks da Companhia das Letrasincluindo best-sellers!!!

Com a compra do primeiro eBook, ganhe mais 10 Reais para gastar em qualquer ebook da editora!

ACESSE O LINK PARA A PROMOÇÃO:

http://www.amazon.com.br/b/?ie=UTF8&node=13231611011&ref=br_kassociados_15w42_ciadasletras&tag=gambcodes-20

Comments

comments

Categories:   VB.NET

Comments