Smooth.h
上传用户:ynjin1970
上传日期:2014-10-13
资源大小:6438k
文件大小:2k
源码类别:

中间件编程

开发平台:

Visual C++

  1. // Smooth.h: interface for the CSmooth class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_SMOOTH_H__586F9434_010D_4FA7_AD99_0F33188A8BBD__INCLUDED_)
  5. #define AFX_SMOOTH_H__586F9434_010D_4FA7_AD99_0F33188A8BBD__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <afxtempl.h>
  10. #include "GlobalFUnctions.h"
  11. class CSmooth  
  12. {
  13. private://平滑用到的参数
  14. double si0, si1, si2, si3, ssum; //参数意义可以参考平滑原理部分
  15. double ax, bx, cx, ay, by, cy;
  16. double si00, si10, si20, si30; //余下参数为第一套参数的备份
  17. double ax0, bx0, cx0, ay0, by0, cy0;
  18. double dts; //平滑时采用的最短步长
  19. private://平滑之后形成的加密度点
  20. XYZ * points_; // 待平滑(加密前)的点
  21. int count_; // points的大小
  22. XYZ *ptArray; // 平滑(加密度)后的点, 在本类中分配内存
  23. int ptArrayCount;
  24. int zValue; // 标注平滑后的等值线时使用的数据
  25. public:
  26. CSmooth(XYZ* points, int count);
  27. virtual ~CSmooth();
  28. private:
  29. void CalcPara(const int i, bool bCalcS, const XYZ* Points);
  30. double x1(const double s);
  31. double y1(const double s);
  32. double x2(const double s);
  33. double y2(const double s);
  34. double a(const double s);
  35. private:
  36. void RemoveRepeatPoints(XYZ* points, int& count);
  37. public:
  38. void GetSmoothedPoints(XYZ **afterpoints, int& afterpointscount);
  39. void Smooth();
  40. protected: // no use!!!
  41. void DrawSmoothLines(CDC *dc); //画平滑线
  42. void DrawLable(CDC *dc, double zValue); //标注
  43. };
  44. #endif // !defined(AFX_SMOOTH_H__586F9434_010D_4FA7_AD99_0F33188A8BBD__INCLUDED_)