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 LinearQuantidade de visualizações: 1330 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: ----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------
#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. |
|
|
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 |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |







