Необходимо написать программу на С++ или на питоне.
Две пересекающиеся прямые заданы точками: A(x1,y1), B(x2,y2) и C(x3,y3), D(x4,y4). Выполните последовательно следующие действия:
• Определите коэффициенты уравнения прямой в общем виде, для прямых AB CD.
• Определите координаты их точки пересечения
#include <iostream>
using namespace std;
int getABC(double xA, double yA, double xB, double yB,
double &A, double &B, double &C)
{
A = yA - yB;
B = xB - xA;
C = xA * (yB - yA) + yA * (xA - xB);
return 0;
}
int getM(double a1, double b1, double c1, double a2, double b2, double c2,
double &xM, double &yM)
{
double d = a1 * b2 - a2 * b1;
if (d != 0)
{
double dx = c2 * b1 - c1 * b2;
double dy = a2 * c1 - a1 * c2;
xM = dx / d;
yM = dy / d;
return 0;
}
else
return -1;
}
int main()
{
double x1, x2, x3, x4, y1, y2, y3, y4;
cin >> x1 >> y1 >> x2 >> y2 >> x3 >> y3 >> x4 >> y4;
double a1, b1, c1, a2, b2, c2, xM, yM;
getABC(x1, y1, x2, y2, a1, b1, c1);
getABC(x3, y3, x4, y4, a2, b2, c2);
cout << a1 << " " << b1 << " " << c1 << endl;
cout << a2 << " " << b2 << " " << c2 << endl;
int r = getM(a1, b1, c1, a2, b2, c2, xM, yM);
if (r == 0)
cout << xM << " " << yM;
else
cout << "No cross";
return 0;
}