Advertisement
pablo7890

trojkaty final

Mar 25th, 2013
92
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.86 KB | None | 0 0
  1. #include <cstdlib>
  2. #include <iostream>
  3. #include <cmath>
  4.  
  5. using namespace std;
  6.  
  7. double Heron(double a, double b, double c){
  8.     double p=(a+b+c)/2;
  9.     return sqrt(p*(p-a)*(p-b)*(p-c));
  10. }
  11.  
  12. double distance(int x1, int x2, int y1, int y2)
  13. {
  14.     return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
  15. }
  16.  
  17. bool IsPointInsideTriangle(double px, double py, double Ax, double Ay, double Bx, double By, double Cx, double Cy)
  18. {
  19.     double d1, d2, d3;
  20.     d1 = px*(Ay-By) + py*(Bx-Ax) + (Ax*By-Ay*Bx);
  21.     d2 = px*(By-Cy) + py*(Cx-Bx) + (Bx*Cy-By*Cx);
  22.     d3 = px*(Cy-Ay) + py*(Ax-Cx) + (Cx*Ay-Cy*Ax);
  23.     return ((d1<=0)&&(d2<=0)&&(d3<=0)) || ((d1>=0)&&(d2>=0)&&(d3>=0));
  24. }
  25.  
  26. int main()
  27. {
  28.     cout << fixed;
  29.    
  30.         double Ax,Ay,Bx,By,Cx,Cy;
  31.         cin>>Ax>>Ay>>Bx>>By>>Cx>>Cy;
  32.        
  33.         double a = distance(Ax, Bx, Ay, By);
  34.         double b = distance(Ax, Cx, Ay, Cy);
  35.         double c = distance(Bx, Cx, By, Cy);
  36.         double FirstTriangleField = Heron(a, b, c);
  37.    
  38.     int n;
  39.     cin >> n;
  40.     for (int i = 0; i < n; i++)
  41.     {
  42.             double Ax2,Ay2,Bx2,By2,Cx2,Cy2;
  43.             cin>>Ax2>>Ay2>>Bx2>>By2>>Cx2>>Cy2;          
  44.            
  45.             double a2 = distance(Ax2, Bx2, Ay2, By2);
  46.             double b2 = distance(Ax2, Cx2, Ay2, Cy2);
  47.             double c2 = distance(Bx2, Cx2, By2, Cy2);
  48.             double TriangleField = Heron(a2, b2, c2);
  49.        
  50.         if (TriangleField <= FirstTriangleField)
  51.         {
  52.             if (IsPointInsideTriangle(Ax2, Ay2, Ax, Ay, Bx, By, Cx, Cy) == true && IsPointInsideTriangle(Bx2, By2, Ax, Ay, Bx, By, Cx, Cy) == true && IsPointInsideTriangle(Cx2, Cy2, Ax, Ay, Bx, By, Cx, Cy) == true)
  53.             {
  54.                 cout << "tak" << endl;
  55.             }
  56.             else
  57.             {
  58.                 cout << "nie" << endl;
  59.             }
  60.         }
  61.         else
  62.         {
  63.             cout << "nie" << endl;
  64.         }
  65.     }
  66.     return 0;
  67. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement