Triangle.cpp
上传用户:azhong891
上传日期:2013-06-04
资源大小:197k
文件大小:1k
源码类别:

GIS编程

开发平台:

Visual C++

  1. // Triangle.cpp: implementation of the CTriangle class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #include "stdafx.h"
  5. #include "Delaunay.h"
  6. #include "pointpos.h"
  7. #include "Triangle.h"
  8. #ifdef _DEBUG
  9. #undef THIS_FILE
  10. static char THIS_FILE[]=__FILE__;
  11. #define new DEBUG_NEW
  12. #endif
  13. //////////////////////////////////////////////////////////////////////
  14. // Construction/Destruction
  15. //////////////////////////////////////////////////////////////////////
  16. IMPLEMENT_SERIAL(CTriangle,CObject,1)  //
  17. CTriangle::CTriangle()
  18. {
  19. }
  20. CTriangle::~CTriangle()
  21. {
  22. }
  23. void CTriangle::Serialize(CArchive& ar) //////
  24. {
  25. if(ar.IsStoring())
  26. {
  27. ar<<m_p1<<m_p2<<m_p3;
  28. ar<<m_xc<<m_yc<<m_rad;
  29. ar<<m_x<<m_y;
  30. }
  31. else
  32. {
  33. ar>>m_p1>>m_p2>>m_p3;
  34. ar>>m_xc>>m_yc>>m_rad;
  35.         ar>>m_x>>m_y;
  36. }
  37. }
  38. POS CTriangle::Where(CPointPos *pos)
  39. {
  40. //点与外接圆
  41. //think of 点在边上,?????
  42.     double distance;
  43. distance=sqrt((pos->m_x-m_xc)*(pos->m_x-m_xc)+(pos->m_y-m_yc)*(pos->m_y-m_yc));
  44. if(fabs(distance-m_rad)<0.0000000001)
  45. {
  46. AfxMessageBox("Four points in a circle,need a new ponit");
  47.         return POS_ERROR;
  48. }
  49. if(distance<m_rad)
  50. {
  51. return POS_ON;//in circle =2;
  52. }
  53.     return POS_OUT;//0
  54. }
  55. CTriangle::CTriangle(int p1, int p2, int p3)
  56. {
  57. m_p1=p1;
  58. m_p2=p2;
  59. m_p3=p3;
  60. }