Você está aqui: C ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular o ponto de interseção de duas retas em C - C para Geometria Analítica e Álgebra Linear

Quantidade de visualizações: 1193 vezes
Duas retas podem encontrar-se em 0, 1 ou 2 pontos. No primeiro caso, elas são chamadas paralelas; no segundo, elas são chamadas concorrentes e o ponto de encontro entre elas é chamado ponto de interseção; no terceiro caso, se duas retas possuem dois pontos em comum, então elas obrigatoriamente apresentam todos os pontos em comum e são chamadas coincidentes.

Nesta dica mostrarei como podemos encontrar o ponto de interseção (ou intersecção) de duas retas usando C. Mas, antes de vermos o código, dê uma olhada na seguinte imagem:



Note que temos os pontos A e B correspondentes ao segmento de reta AB e os pontos C e D correspondentes ao segmento de reta CD. Nossa tarefa é encontrar o ponto exato de intersecção entre esses dois segmentos de reta.

Veja o código C completo que nos auxilia na resolução deste problema:

#include <stdio.h>
#include <stdlib.h>
#include <locale.h>

// Struct usada para representar um ponto no
// plano 2d (Plano Cartesiano)
struct Ponto{
  float x;
  float y;
};

// função principal do programa
int main(int argc, char *argv[]){
  setlocale(LC_ALL,""); // para acentos do português

  // vamos construir os quatro pontos
  struct Ponto A;
  A.x = 5;
  A.y = 7;
	
  struct Ponto B;
  B.x = 9;
  B.y = -4;
	
  struct Ponto C;
  C.x = -8;
  C.y = 2;
	
  struct Ponto D;
  D.x = 11;
  D.y = 6;
	
  // vamos obter a representação do segmento AB    
  float a1 = B.y - A.y;
  float b1 = A.x - B.x;
  float c1 = (a1 * A.x) + (b1 * A.y);
       
  // vamos obter a representação do segmento CD
  float a2 = D.y - C.y;
  float b2 = C.x - D.x;
  float c2 = (a2 * C.x) + (b2 * C.y);
    
  // obtém o determinante
  float determinante = (a1 * b2) - (a2 * b1);
    
  // as duas retas são paralelas?
  if(determinante == 0){
    printf("\nAs duas retas são paralelas.\n");
  }
  else{
    // e construímos o ponto de intersecção
    float x = ((b2 * c1) - (b1 * c2)) / determinante;
    float y = ((a1 * c2) - (a2 * c1)) / determinante;
    struct Ponto inters;
    inters.x = x;
    inters.y = y;
    
    printf("O ponto de interseção é: x = %.2f; y = %.2f",
      inters.x, inters.y);
  }
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

O ponto de interseção é: x = 5,76; y = 4,90

De fato, se você olhar a imagem novamente e desenhar este ponto, verá que ele se situa exatamente na intersecção das retas indicadas.

Link para compartilhar na Internet ou com seus amigos:

Desafios, Exercícios e Algoritmos Resolvidos de C

Veja mais Dicas e truques de C

Dicas e truques de outras linguagens

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 30 usuários muito felizes estudando em nosso site.