MapPoint.cpp
上传用户:bjslfz
上传日期:2022-07-25
资源大小:4430k
文件大小:2k
源码类别:

文件操作

开发平台:

C/C++

  1. #include "stdafx.h"
  2. #include "global.h"
  3. #include "MapPoint.h"
  4. IMPLEMENT_DYNAMIC(CMapPoint,CObject) 
  5. CMapPoint::CMapPoint()
  6. {
  7.     m_bStatus = 0;
  8. m_uiIndex = 0;
  9. m_dbX = 0.0;
  10. m_dbY = 0.0;
  11. }
  12. CMapPoint::CMapPoint(CMapPoint& pt)
  13. {
  14.     m_bStatus = pt.m_bStatus;
  15. m_uiIndex = pt.m_uiIndex;
  16. m_dbX = pt.m_dbX;
  17. m_dbY = pt.m_dbY ;
  18.  
  19. }
  20. CMapPoint::~CMapPoint()
  21. {
  22. }
  23. /*****************************************************************************
  24.   描述:   两点距离
  25.   参数:  点对象
  26.   返回值  距离
  27. ******************************************************************************/
  28. double CMapPoint::Distance(CMapPoint& pt )
  29. {
  30. return(sqrt((pt.GetX()-m_dbX)*(pt.GetX()-m_dbX)+(pt.GetY()-m_dbY)*(pt.GetY()-m_dbY)));
  31. }
  32. bool  CMapPoint::IsEqual(CMapPoint& pt )
  33. {
  34. if ( fabs(m_dbX-pt.GetX()) < EP && fabs(m_dbY-pt.GetY()) < EP )
  35. return TRUE;
  36. else
  37. return FALSE;
  38. }
  39. /*****************************************************************************
  40.   描述: 判断指定点是否在线段上
  41.   参数:  p1 --- 线段起点 p2 --- 线段终点
  42.   返回值  在线段上 返回TRUE 否则返回FALSE
  43. ******************************************************************************/
  44. bool   CMapPoint::IsPointInLine(CMapPoint& p1 , CMapPoint& p2 )
  45. {
  46.  double dblMulti;
  47.  // 判断点是否在外接矩形范围内 
  48.  if ( m_dbX < min(p1.GetX() ,p2.GetX()) || m_dbX > max(p1.GetX() ,p2.GetX())
  49.   || m_dbY <  min(p1.GetY() ,p2.GetY()) || m_dbY > max(p1.GetY() ,p2.GetY()))
  50. return FALSE;
  51.      //计算叉积  
  52.  dblMulti = (double)((m_dbX -p1.GetX())*(p2.GetY() -p1.GetY())-(p2.GetX()-p1.GetX())*(m_dbY -p1.GetY()));  
  53.      if ( dblMulti == 0 )
  54.  return TRUE;
  55.  else
  56.  return FALSE;
  57. }