/* =============================================================================================
Wilfredo Cruz Yarlequé wcruzy@gmail.com
Piura, Perú, Enero 19 de 2025
=============================================================================================
Para dos lineas rectas:
- Lee coordenadas de dos puntos de cada línea recta
- Calcula la ecuación de cada línea recta
- Si pendientes son bastante parecidas no calcula intercepción de las líneas rectas
- Si pendientes son diferentes, se calcula las coordenadas donde se interceptan ambas líneas
============================================================================================= */
#include <iostream>
#include <cstring>
#include <cmath>
using namespace std;
class punto
{
public:
int x, y;
};
double pendiente(int, int, int, int);
double intercepto(int, int, double);
int main()
{
punto pa1, pa2, pb1, pb2;
double ma, ia;
double mb, ib;
double x, y;
// Leer Linea A
cout << "Linea A:\n";
// Leer coordenadas del primer punto:
cout << "Ingrese coordenadas del primer punto: ";
cin >> pa1.x >> pa1.y;
// Leer coordenadas del segundo punto:
cout << "Ingrese coordenadas del segundo punto: ";
cin >> pa2.x >> pa2.y;
// Leer Linea B
cout << "Linea B:\n";
// Leer coordenadas del primer punto:
cout << "Ingrese coordenadas del primer punto: ";
cin >> pb1.x >> pb1.y;
// Leer coordenadas del segundo punto:
cout << "Ingrese coordenadas del segundo punto: ";
cin >> pb2.x >> pb2.y;
// Calcula pendiente e intercepto de Linea A
ma = pendiente(pa1.x, pa1.y, pa2.x, pa2.y);
ia = intercepto(pa2.x, pa2.y, ma);
// Escribe ecuación de la linea A:
cout << "\nEcuación de la recta A" << "\nY = " << ma << "X + " << ia << "\n";
// Calcula pendiente e intercepto de Linea B
mb = pendiente(pb1.x, pb1.y, pb2.x, pb2.y);
ib = intercepto(pb2.x, pb2.y, mb);
// Escribe ecuación de la linea B:
cout << "\nEcuación de la recta B" << "\nY = " << mb << "X + " << ib << "\n";
// Calcula coordenadas de intercepción de las lineas A y B
if (abs(ma - mb) < 0.1)
cout << "\nLas rectas tienen la misma pendiente, por lo que no se interceptan\n";
else
{
x = (ib - ia) / (ma - mb);
y = ma * x + ia;
cout << "\nIntercepción de las dos líneas:\n" << x << ", " << y << "\n\n";
}
return 0;
}
/* ================================== Funciones ================================== */
double pendiente(int x1, int y1, int x2, int y2)
{
return (y2-y1)*1.0/(x2-x1);
}
double intercepto(int x, int y, double m)
{
return y-m*x;
}