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: 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. |
![]() |
Desafios, Exercícios e Algoritmos Resolvidos de C |
Veja mais Dicas e truques de C |
Dicas e truques de outras linguagens |
JavaScript - Como retornar o índice da primeira ocorrência de um elemento em um array do JavaScript usando a função indexOf() |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |