SaveText.Ru

Данил Жмышенко
  1. #include <iostream>
  2. #include <cmath>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {
  8.     // Вводим данные
  9.     double xD, yD, xC, yC, a, b, ACB, cosC;
  10.     cin >> xD >> yD >> xC >> yC >> a >> b >> ACB >> cosC;
  11.     // Находим координаты точки B
  12.     double xB = xC + a;
  13.     double yB = yC;
  14.     // Находим координаты точки А
  15.     double pi = 3.1415926535;
  16.     double xA = b * cosC;
  17.     double yA = b * sin(ACB*pi/180);
  18.     // Найдем длину стороны c;
  19.     double c = sqrt(a*a + b*b - 2*a*b*cosC);
  20.     // По этим координатам находим длины этих векторов
  21.     double DA = sqrt(((xD - xA)*(xD - xA)) + ((yD - yA)*(yD - yA)));
  22.     double DB = sqrt(((xD - xB)*(xD - xB)) + ((yD - yB)*(yD - yB)));
  23.     double DC = sqrt(((xD - xC)*(xD - xC)) + ((yD - yC)*(yD - yC)));
  24.     // Находим площади и полупериметры, которые образуют три вектора DA, DB, DC по формуле Герона
  25.     double P1 = (DA + DB + c) / 2;
  26.     double P2 = (DC + DB + a) / 2;
  27.     double P3 = (DA + DC + b) / 2;
  28.     double S1 = sqrt(abs(P1 * (P1 - DA) * (P1 - DB) * (P1 - c)));
  29.     double S2 = sqrt(abs(P2 * (P2 - DA) * (P2 - DB) * (P2 - a)));
  30.     double S3 = sqrt(abs(P3 * (P3 - DA) * (P3 - DC) * (P3 - b)));
  31.     // Находим площадь треугольника ABC
  32.     double S = abs(0.5 * a * b * sin(ACB*pi/180));
  33.     // Если сумма площадей, образованных от векторов равна общей площади, то точка лежит в треугольнике
  34.     if (S == (S1 + S2 + S3))
  35.         cout << "Lezhit" << endl;
  36.     if (S != (S1 + S2 + S3))
  37.         cout << "Ne lezhit" << endl;
  38.     //Трассировка...
  39.     cout << "a = " << a << endl << "b = " << b << endl << "с = " << c << endl << "ACB = " << ACB << endl << "xC = " << xC << endl << "yC = " << yC << endl << "xB = " << xB << endl << "yB = " << yB << endl << "xA = " << xA << endl << "yA = " << yA << endl << "xD = " << xD << endl << "yD = " << yD << endl << "S1 = " << S1 << endl << "S2 = " << S2 << endl << "S3 = " << S3 << endl << "S = " << S << endl << "DA = " << DA << endl << "DB = " << DB << endl << "DC = " << DC << endl << "P1 = " << P1 << endl << "P2 = " << P2 << endl << "P3 = " << P3 << endl ;
  40.     return 0;
  41. }
  42.  

Share with your friends:

Print