Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <string>
  3. #include <iostream>
  4. #include <cstdlib>
  5. #include <cmath>
  6. #include <stack>
  7.  
  8. using namespace std;
  9.  
  10. struct point {
  11. double x ;
  12. double y ;
  13.  
  14. };
  15. double det;
  16.  
  17. point dot ( point A , point B , point C , point D) {
  18. point M;
  19. M.x = ((A.x * (A.y - B.y) + A.y * (B.x - A.x)) * (D.x - C.x) - (C.x * (C.y - D.y) + C.y * (D.x - C.x)) * ( B.x - A.x)) / det ;
  20. M.y = ( - (A.x * (A.y - B.y) + A.y * (B.x - A.x)) * (C.y - D.y) + (C.x * (C.y - D.y) + C.y * (D.x - C.x)) * (A.y - B.y)) / det;
  21. return M;
  22.  
  23. }
  24. int main()
  25. {
  26. point A, B , C ,D;
  27. scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &A.x , &A.y , &B.x , &B.y , &C.x , &C.y , &D.x , &D.y);
  28. if ( (A.x - B.x) * (C.y - D.y) - (A.y - B.y) * (C.x - D.x) == 0 ) {
  29. printf ("no1");
  30. exit (0);
  31. }
  32. if ((C.x * (A.y - B.y) + C.y * (B.x - A.x) - A.x * (A.y - B.y) + A.y * (A.x - B.x) > 0
  33. && D.x * (A.y - B.y) + D.y * (B.x - A.x) - A.x * (A.y - B.y) + A.y * (A.x - B.x) > 0)
  34. || (C.x * (A.y - B.y) + C.y * (B.x - A.x) - A.x * (A.y - B.y) + A.y * (A.x - B.x) < 0
  35. && D.x * (A.y - B.y) + D.y * (B.x - A.x) - A.x * (A.y - B.y) + A.y * (A.x - B.x) < 0)) {
  36. printf ("no2");
  37. exit (0);
  38. }
  39. det = - ((A.x - B.x) * (C.y - D.y) - (A.y - B.y) * (C.x - D.x));
  40. point M = dot( A, B, C, D);
  41. if ( ( M.x < A.x && M.x < B.x) || (M.y > A.y && M.y > B.y)) {
  42. printf ("no3");
  43. }
  44. else printf ("yes");
  45. return (0);
  46.  
  47.  
  48.  
  49.  
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement