// A C++ program to check if two given line segments intersect
#include <iostream>
using namespace std;
struct Point
{
int x;
int y;
};
// To find orientation of ordered triplet (p, q, r).
// The function returns following values
// 0 --> p, q and r are colinear
// 1 --> Clockwise
// 2 --> Counterclockwise
int orientation(Point p, Point q, Point r)
{
// See 10th slides from following link for derivation of the formula
// http://w...content-available-to-author-only...c.uk/~pat/52233/slides/Geometry1x1.pdf
int val = (q.y - p.y) * (r.x - q.x) -
(q.x - p.x) * (r.y - q.y);
if (val == 0) return 0; // colinear
return (val > 0)? 1: 2; // clock or counterclock wise
}
// Driver program to test above functions
int main()
{
struct Point P1 = {-5,-5}, P2 = {0,0}, P3 = {-4,-3};
cout << orientation(P1, P2, P3);
return 0;
}
Ly8gQSBDKysgcHJvZ3JhbSB0byBjaGVjayBpZiB0d28gZ2l2ZW4gbGluZSBzZWdtZW50cyBpbnRlcnNlY3QKI2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKc3RydWN0IFBvaW50CnsKICAgIGludCB4OwogICAgaW50IHk7Cn07CgoKLy8gVG8gZmluZCBvcmllbnRhdGlvbiBvZiBvcmRlcmVkIHRyaXBsZXQgKHAsIHEsIHIpLgovLyBUaGUgZnVuY3Rpb24gcmV0dXJucyBmb2xsb3dpbmcgdmFsdWVzCi8vIDAgLS0+IHAsIHEgYW5kIHIgYXJlIGNvbGluZWFyCi8vIDEgLS0+IENsb2Nrd2lzZQovLyAyIC0tPiBDb3VudGVyY2xvY2t3aXNlCmludCBvcmllbnRhdGlvbihQb2ludCBwLCBQb2ludCBxLCBQb2ludCByKQp7CiAgICAvLyBTZWUgMTB0aCBzbGlkZXMgZnJvbSBmb2xsb3dpbmcgbGluayBmb3IgZGVyaXZhdGlvbiBvZiB0aGUgZm9ybXVsYQogICAgLy8gaHR0cDovL3cuLi5jb250ZW50LWF2YWlsYWJsZS10by1hdXRob3Itb25seS4uLmMudWsvfnBhdC81MjIzMy9zbGlkZXMvR2VvbWV0cnkxeDEucGRmCiAgICBpbnQgdmFsID0gKHEueSAtIHAueSkgKiAoci54IC0gcS54KSAtCiAgICAgICAgICAgICAgKHEueCAtIHAueCkgKiAoci55IC0gcS55KTsKCiAgICBpZiAodmFsID09IDApIHJldHVybiAwOyAgLy8gY29saW5lYXIKCiAgICByZXR1cm4gKHZhbCA+IDApPyAxOiAyOyAvLyBjbG9jayBvciBjb3VudGVyY2xvY2sgd2lzZQp9CgovLyBEcml2ZXIgcHJvZ3JhbSB0byB0ZXN0IGFib3ZlIGZ1bmN0aW9ucwppbnQgbWFpbigpCnsKICAgIHN0cnVjdCBQb2ludCBQMSA9IHstNSwtNX0sICBQMiA9IHswLDB9LCAgUDMgPSB7LTQsLTN9OwogICAgY291dCA8PCBvcmllbnRhdGlvbihQMSwgUDIsIFAzKTsKICAgIHJldHVybiAwOwp9Cg==