demoII5_1.cpp
上传用户:husern
上传日期:2018-01-20
资源大小:42486k
文件大小:3k
源码类别:

游戏

开发平台:

Visual C++

  1. // DEMOII5_1.CPP - 2D parametric line intersector
  2. // INCLUDES ///////////////////////////////////////////////////
  3. #define WIN32_LEAN_AND_MEAN  
  4. #ifndef INITGUID
  5. #define INITGUID       // you need this or DXGUID.LIB
  6. #endif
  7. #include <windows.h>   // include important windows stuff
  8. #include <windowsx.h> 
  9. #include <mmsystem.h>
  10. #include <objbase.h>
  11. #include <iostream.h> // include important C/C++ stuff
  12. #include <conio.h>
  13. #include <stdlib.h>
  14. #include <malloc.h>
  15. #include <memory.h>
  16. #include <string.h>
  17. #include <stdarg.h>
  18. #include <stdio.h>
  19. #include <math.h>
  20. #include <io.h>
  21. #include <fcntl.h>
  22. #include <direct.h>
  23. #include <wchar.h>
  24. #include <ddraw.h>      // needed for defs in T3DLIB1.H 
  25. #include "T3DLIB1.H"    // T3DLIB4 is based on some defs in this 
  26. #include "T3DLIB4.H"
  27. // DEFINES ////////////////////////////////////////////////////
  28. // TYPES //////////////////////////////////////////////////////
  29. // CLASSES ////////////////////////////////////////////////////
  30. // GLOBALS ////////////////////////////////////////////////////
  31. // define vars expected by graphics engine to compile
  32. HWND main_window_handle;
  33. // FUNCTIONS //////////////////////////////////////////////////
  34. void main()
  35. {
  36. printf("n2D Parametric Line Intersectorn");
  37. POINT2D p1, p2, p3, p4;  // our endpoints
  38. PARMLINE2D pl1, pl2; // our line
  39. while(1) {
  40. printf("nEnter coords parametric line from p1 to p2 in form: x1,y1, x2,y2?");
  41. scanf("%f, %f, %f, %f",&p1.x, &p1.y, &p2.x, &p2.y);
  42. printf("nEnter coords parametric line from p3 to p4 in form: x3,y3, x4,y4?");
  43. scanf("%f, %f, %f, %f",&p3.x, &p3.y, &p4.x, &p4.y);
  44. // create a parametric line from p1 to p2
  45. Init_Parm_Line2D(&p1, &p2, &pl1);
  46. // create a parametric line from p3 to p4
  47. Init_Parm_Line2D(&p3, &p4, &pl2);
  48. float t1=0, t2=0; // storage for parameters
  49. // compute intersection
  50. int intersection_type = Intersect_Parm_Lines2D(&pl1, &pl2, &t1, &t2);
  51. // based on type of intersection display results
  52. switch(intersection_type)
  53.       {
  54.       case PARM_LINE_NO_INTERSECT:
  55.            {
  56.            printf("nThe lines do not intersect!");
  57.            } break;
  58.       case PARM_LINE_INTERSECT_IN_SEGMENT:
  59.            {
  60.            POINT2D pt;
  61.            Compute_Parm_Line2D(&pl1, t1, &pt);
  62.            printf("nThe lines intersect when t1=%f, t2=%f at (%f, %f)",t1, t2, pt.x, pt.y);
  63.            } break;
  64.       case PARM_LINE_INTERSECT_OUT_SEGMENT:
  65.            {
  66.            POINT2D pt;
  67.            Compute_Parm_Line2D(&pl1, t1, &pt);
  68.            printf("nThe lines intersect when t1=%f, t2=%f at (%f, %f)",t1, t2, pt.x, pt.y);
  69.            printf("nNote that the intersection occurs out of range of the line segment(s)");
  70.            } break;
  71.       default: break;
  72.  
  73.       } // end switch
  74. } // end while
  75. } // end main