#pragma once #include using namespace std; class IDWCalculation { public: ~IDWCalculation(); void SetData(vector& vecX, vector& vecY, vector& vecZ); void SetData(vector> data); double GetValue(double x, double y); public: /************************************************************************/ /* 默认值为2。(一般0.5到3的值可获得最合理的结果)。 /* 通过定义更高的幂值,可进一步强调最近点。因此,邻近数据将受到更大影响, 表面会变得更加详细(更不平滑)。随着幂数的增大,内插值将逐渐接近最近采样点的值。 指定较小的幂值将对距离较远的周围点产生更大的影响,从而导致平面更加平滑。 由于反距离权重公式与任何实际的物理过程都不关联,因此无法确定特定幂值是否过大。 作为常规准则,认为值为30的幂是超大幂,因此不建议使用。此外还要牢记一点,如果距离或幂值较大,则可能生成错误结果。*/ /************************************************************************/ double m_factor = 2.5; private: vector* m_pX; vector* m_pY; vector* m_pZ; BOOL m_bCreated = FALSE; };