VB .NET -  Verificando a condição de alinhamento de 3 Pontos - I


 
Neste artigo vamos ver um pouco de matemática usando a linguagem VB .NET.
 
Vamos criar um pequeno programa para verificar a condição de alinhamento de 3 pontos.
 
Nosso objetivo será :
Dados 3 pontos  A, B e C com suas respectivas coordenadas, devemos verificar se os 3 pontos estão alinhados ou seja se pertencem à mesma reta.
 
Um trabalho bem simples para a linguagem VB .NET como você mesmo verá.
 
Recursos usados:
 
Teoria
 
Considere os pontos A(x1,xy1, B(x2,y2), C(x3,y3). Colocando-os em um plano cartesiano percebemos que a união irá formar uma reta, ou seja, eles estão alinhados.
 
Três pontos estão alinhados se, e somente se, pertencerem à mesma reta.
 
 
Se os pontos A,B e C pertencem à mesma reta os pontos A, B e C pertencem à reta formada acima e o ponto B é comum aos segmentos AB e BC.
 
Dado três pontos distintos A (x1, y1), B (x2,y2) e C (x3, y3), eles serão alinhados se, somente se, os coeficientes mAB e mBC forem iguais.
 
Uma outra forma de verificar o alinhamento é calcular o determinante (usando a regra de Sarrus) envolvendo a matriz das coordenadas dos pontos.
 

Criando o Projeto

Abra o Visual Studio Express 2012 for Windows Desktop e crie um novo projeto clicando em New Project;

A seguir selecione o template : Windows Forms Appliacation e informe o nome VerificaCondicaoAlinhamento e clique no botão OK;

 

No formulário form1.vb vamos incluir os seguintes controles:

Disponha os controles no formulário conforme o leiaute abaixo:

 


Agora podemos definir o código do formulário.
 
O usuário deverá informar os valores das coordenadas nas caixas de texto : txtx1, txty1, txtx2, txty2, txtx3 e txty3.
 
Ao fazer isso os valores informados deverão ser colocados nas caixas de texto do cálculo do coeficiente angular do segmento AB e BC. Para que isso ocorra vamos usar o evento TextChanged das caixas de texto e atribuir o valor informado na fórmula de cálculo.
 
Assim temos que primeiro definir as variáveis que vamos usar no programa:

 

Dim vx1 As Integer = 0

Dim vy1 As Integer = 0

Dim vx2 As Integer = 0

Dim vy2 As Integer = 0

Dim vx3 As Integer = 0

Dim vy3 As Integer = 0

Dim vmab As Double = 0.0

Dim vmbc As Double = 0.0

E a seguir definir o código para o evento TextChanged e cada uma das caixas de texto onde o usuário informará os valores:

 Private Sub txtx1_TextChanged(sender As Object, e As EventArgs) Handles txtx1.TextChanged
        Try
            x1.Text = txtx1.Text
            vx1 = Convert.ToInt32(txtx1.Text)
        Catch ex As Exception

        End Try
    End Sub

    Private Sub txty1_TextChanged(sender As Object, e As EventArgs) Handles txty1.TextChanged
        Try
            y1.Text = txty1.Text
            vy1 = Convert.ToInt32(txty1.Text)
        Catch ex As Exception

        End Try
    End Sub

    Private Sub txtx2_TextChanged(sender As Object, e As EventArgs) Handles txtx2.TextChanged
        Try
            x2.Text = txtx2.Text
            x_2.Text = txtx2.Text
            vx2 = Convert.ToInt32(txtx2.Text)
        Catch ex As Exception

        End Try
    End Sub

    Private Sub txty2_TextChanged(sender As Object, e As EventArgs) Handles txty2.TextChanged
        Try
            y2.Text = txty2.Text
            y_2.Text = txty2.Text
            vy2 = Convert.ToInt32(txty2.Text)
        Catch ex As Exception

        End Try
    End Sub

    Private Sub txtx3_TextChanged(sender As Object, e As EventArgs) Handles txtx3.TextChanged
        Try
            x3.Text = txtx3.Text
            vx3 = Convert.ToInt32(txtx3.Text)
        Catch ex As Exception

        End Try
    End Sub

    Private Sub txty3_TextChanged(sender As Object, e As EventArgs) Handles txty3.TextChanged
        Try
            y3.Text = txty3.Text
            vy3 = Convert.ToInt32(txty3.Text)
        Catch ex As Exception

        End Try
    End Sub

 
Após informar os valores o usuário deverá clicar no botão de comando - Verificar se os pontos estão Alinhados - para verificar se os pontos estão alinhados.
 
No evento Click deste botão temos o código que realiza os cálculos:
 
Private Sub btnVerificar_Click(sender As Object, e As EventArgs) Handles btnVerificar.Click
        If validaDados Then
            calculaCoeficienteAngular()
        Else
            MessageBox.Show("Dados inválidos !", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End If
    End Sub
 

Neste código temos a rotina validaDados() que faz uma validação básica dos dados verificando se o valor dos denominador da fórmula de cálculo é igual a zero. Isso não pode ocorrer pois não existe divisão por zero.

 

 Private Function validaDados() As Boolean
        Dim retorno As Boolean
        If vx1 = 0 And vx2 = 0 And vx3 = 0 Then
            retorno = False
        ElseIf (vx2 - vx1) = 0 Then
            retorno = False
        ElseIf (vx3 - vx2) = 0 Then
            retorno = False
        Else
            retorno = True
        End If
        Return retorno
    End Function

 

Se esta condição for atendida (o valor for diferente de zero) então chamamos a rotina calculaCoeficienteAngular() que realiza os cálculos:

 

  Private Sub calculaCoeficienteAngular()
        Try
            vmab = (vy2 - vy1) / (vx2 - vx1)
            mAB.Text = vmab.ToString
            '
            vmbc = (vy3 - vy2) / (vx3 - vx2)
            mBC.Text = vmbc.ToString
            If vmab = vmbc Then
                lblResultado.Text = "Os pontos estão na mesma reta."
            Else
                lblResultado.Text = "Os pontos Não estão na mesma reta."
            End If
        Catch ex As Exception
            MessageBox.Show(" Erro :" & ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Information)
        End Try
    End Sub

 

Abaixo vemos dois resultados possíveis :

 

 

Você pode melhorar o projeto em muitos aspectos como tratamento de erros, aceitar valores não inteiros, implementar o cálculo do determinante, etc.

 

Fique a vontade, use o seu talento e aprenda VB .NET.

 

Na segunda parte do artigo mostrarei como verificar a condição de alinhamento calculando o determinante de 3a. ordem pela regra de Sarrus.

 

Pegue o projeto completo aqui :  VerificaCondicaoAlinhamento.zip

João 3:26 E foram ter com João e disseram-lhe: Rabi, aquele que estava contigo além do Jordão, do qual tens dado testemunho, eis que está batizando, e todos vão ter com ele.

João 3:27 Respondeu João: O homem não pode receber coisa alguma, se não lhe for dada do céu.

João 3:28 Vós mesmos me sois testemunhas de que eu disse: Não sou o Cristo, mas sou enviado adiante dele.

  Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

 

Referências:


José Carlos Macoratti