Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdlib>
- #include <iostream>
- #include <cmath>
- using namespace std;
- double Heron(double a, double b, double c){
- double p=(a+b+c)/2;
- return sqrt(p*(p-a)*(p-b)*(p-c));
- }
- double distance(int x1, int x2, int y1, int y2)
- {
- return sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1));
- }
- bool IsPointInsideTriangle(double px, double py, double Ax, double Ay, double Bx, double By, double Cx, double Cy)
- {
- double d1, d2, d3;
- d1 = px*(Ay-By) + py*(Bx-Ax) + (Ax*By-Ay*Bx);
- d2 = px*(By-Cy) + py*(Cx-Bx) + (Bx*Cy-By*Cx);
- d3 = px*(Cy-Ay) + py*(Ax-Cx) + (Cx*Ay-Cy*Ax);
- return ((d1<=0)&&(d2<=0)&&(d3<=0)) || ((d1>=0)&&(d2>=0)&&(d3>=0));
- }
- int main()
- {
- cout << fixed;
- double Ax,Ay,Bx,By,Cx,Cy;
- cin>>Ax>>Ay>>Bx>>By>>Cx>>Cy;
- double a = distance(Ax, Bx, Ay, By);
- double b = distance(Ax, Cx, Ay, Cy);
- double c = distance(Bx, Cx, By, Cy);
- double FirstTriangleField = Heron(a, b, c);
- int n;
- cin >> n;
- for (int i = 0; i < n; i++)
- {
- double Ax2,Ay2,Bx2,By2,Cx2,Cy2;
- cin>>Ax2>>Ay2>>Bx2>>By2>>Cx2>>Cy2;
- double a2 = distance(Ax2, Bx2, Ay2, By2);
- double b2 = distance(Ax2, Cx2, Ay2, Cy2);
- double c2 = distance(Bx2, Cx2, By2, Cy2);
- double TriangleField = Heron(a2, b2, c2);
- if (TriangleField <= FirstTriangleField)
- {
- 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)
- {
- cout << "tak" << endl;
- }
- else
- {
- cout << "nie" << endl;
- }
- }
- else
- {
- cout << "nie" << endl;
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement