|
|
|
|
|
/************************************************************
|
|
|
|
|
|
* @file dfDimension.h interface for the CDimensionBase class
|
|
|
|
|
|
* @
|
|
|
|
|
|
* @version 1.0
|
|
|
|
|
|
* @date 2011-2012
|
|
|
|
|
|
************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#if !defined(AFX_DFDIMENSION_H__D81A67B5_D88D_48E3_B66E_A78E2BB1E081__INCLUDED_)
|
|
|
|
|
|
#define AFX_DFDIMENSION_H__D81A67B5_D88D_48E3_B66E_A78E2BB1E081__INCLUDED_
|
|
|
|
|
|
|
|
|
|
|
|
#if _MSC_VER > 1000
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
#endif // _MSC_VER > 1000
|
|
|
|
|
|
|
|
|
|
|
|
#include <afxtempl.h>
|
|
|
|
|
|
#include <atlimage.h>
|
|
|
|
|
|
|
|
|
|
|
|
#include "colorBase.h"
|
|
|
|
|
|
#include "curve.h" // Added by ClassView
|
|
|
|
|
|
#include "plane.h" // Added by ClassView
|
|
|
|
|
|
#include ".\grid.h"
|
|
|
|
|
|
|
|
|
|
|
|
/************************************************************************
|
|
|
|
|
|
CDimensionBase <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ṹ<EFBFBD><EFBFBD>
|
|
|
|
|
|
|---|---|-
|
|
|
|
|
|
|---|---|-
|
|
|
|
|
|
|---|---|-
|
|
|
|
|
|
<EFBFBD><EFBFBD> ÿһ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD>϶<EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD>CLink<EFBFBD><EFBFBD><EFBFBD>Ӷ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>m_link[i]<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD>õ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ;
|
|
|
|
|
|
<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><EFBFBD><EFBFBD>洢<EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>*u<EFBFBD><EFBFBD>.
|
|
|
|
|
|
************************************************************************/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
namespace NContour
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief CLink<6E>࣬<EFBFBD><E0A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ij<C2BC><C4B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ*/
|
|
|
|
|
|
class CLink
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CLink();
|
|
|
|
|
|
virtual ~CLink();
|
|
|
|
|
|
|
|
|
|
|
|
int Create(int n);
|
|
|
|
|
|
|
|
|
|
|
|
void Reverse(int n);
|
|
|
|
|
|
void Read(char *&fr, int n);
|
|
|
|
|
|
|
|
|
|
|
|
void Read(int &fr, int n);
|
|
|
|
|
|
void Write(int &fw,int n);
|
|
|
|
|
|
|
|
|
|
|
|
void Read(CFile &fr, int n);
|
|
|
|
|
|
void Write(CFile &fw,int n);
|
|
|
|
|
|
|
|
|
|
|
|
void Serialize(CArchive& ar, int n);
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CLink& lk);
|
|
|
|
|
|
int n; ///< w<><77><EFBFBD><EFBFBD><EFBFBD>ij<EFBFBD><C4B3><EFBFBD>
|
|
|
|
|
|
double *w; ///< <20><><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
class AFX_EXT_CLASS CDimensionBase : public CGrid
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
CDimensionBase();
|
|
|
|
|
|
virtual ~CDimensionBase();
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>bBinary<72><79>ʾ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݽ<EFBFBD><DDBD><EFBFBD><EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ<EFBFBD><D9B1><EFBFBD><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE>*u */
|
|
|
|
|
|
int Read(char *pData, bool bMapping = false);
|
|
|
|
|
|
|
|
|
|
|
|
int ReadHead(CString m_input);
|
|
|
|
|
|
int WriteHead(int &fw);
|
|
|
|
|
|
|
|
|
|
|
|
void WriteText2D(CString m_output);
|
|
|
|
|
|
void WriteText(CString m_output);
|
|
|
|
|
|
|
|
|
|
|
|
virtual CGrid* CloneObject(void); //<2F><>¡<EFBFBD>Լ<EFBFBD>
|
|
|
|
|
|
virtual void Serialize(CArchive& ar, const short& ver); //F(x,y)
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD> */
|
|
|
|
|
|
int Read(CString m_input); //F(x,y)
|
|
|
|
|
|
int Write(CString m_output); //F(X,Y)
|
|
|
|
|
|
int Read(int& fr); //F(x,y)
|
|
|
|
|
|
int Write(int& fw); //F(X,Y)
|
|
|
|
|
|
|
|
|
|
|
|
virtual void Write(CFile& fw); //F(x,y)
|
|
|
|
|
|
virtual int Read(CFile& fr); //F(X,Y)
|
|
|
|
|
|
virtual int CreateDimension(int dn); //ָ<><D6B8>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>link_offset<65><74><EFBFBD><EFBFBD>(dn+dn)<29><>ip<69><70><EFBFBD><EFBFBD>(dn)
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20>Ӹ<EFBFBD><D3B8><EFBFBD><EFBFBD>̳еĺ<D0B5><C4BA><EFBFBD><EFBFBD><EFBFBD>ʵ<EFBFBD>ֶ<EFBFBD><D6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>,
|
|
|
|
|
|
ƽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵΪ(u[k]+valuelink[k] * smooth_coe)/(1+smooth_coe) smooth_coe Ϊ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȩ<EFBFBD><EFBFBD>*/
|
|
|
|
|
|
virtual void Smooth(double smooth_coef = 1.0);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20>õ<EFBFBD><C3B5><EFBFBD>ά<EFBFBD><CEAC>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
void GetLinkOffset();
|
|
|
|
|
|
/** @brief <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*ip(<28><>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊip[0],ip[1]...)<29><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
int GetLocation(int *ip);
|
|
|
|
|
|
/** @brief ip[m_dim] <20><><EFBFBD><EFBFBD>1*/
|
|
|
|
|
|
void AddLocation(int *&ip,int m_dim);
|
|
|
|
|
|
|
|
|
|
|
|
void Empty(); //<2F><><EFBFBD><EFBFBD>
|
|
|
|
|
|
/** @brief <20>ж<EFBFBD>uֵ<75>Ƿ<EFBFBD>Ϊ<EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD><D3B3>*/
|
|
|
|
|
|
bool IsDataMapping();
|
|
|
|
|
|
|
|
|
|
|
|
int CreateFromTransfer(CDimensionBase &m_dim);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ά<EFBFBD><CEAC>Ϊn<CEAA><6E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><F1A3ACB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>num[i],<2C><>ʼλ<CABC><CEBB>P0[i]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>delt[i] */
|
|
|
|
|
|
int Create(int n,CArray<int,int> &num,CArray<double,double> &P0,CArray<double,double> &delt);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD>úõIJ<C3B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>total, link_offset[i]<5D><>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>m_link */
|
|
|
|
|
|
int Create();
|
|
|
|
|
|
int Create1();
|
|
|
|
|
|
int Create(int n,int *num);
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD>m_link[k] m_link[k].w = new double[n+n] */
|
|
|
|
|
|
void CreateLink(int k);
|
|
|
|
|
|
/** @brief ɾ<><C9BE><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><D0BD><EFBFBD>CLink*/
|
|
|
|
|
|
void EmptyLink(void);
|
|
|
|
|
|
|
|
|
|
|
|
void operator=(CDimensionBase& db);
|
|
|
|
|
|
double operator =(double *m_dim);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><>ֵ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ */
|
|
|
|
|
|
double Value(double *m_dim, bool bIsXY = TRUE);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>k<EFBFBD><6B>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>Ϊ<EFBFBD><CEAA>Ч<EFBFBD>㣬<EFBFBD><E3A3AC>Ч<EFBFBD><D0A7>Ϊ<EFBFBD><CEAA>Ч<EFBFBD><D0A7>*/
|
|
|
|
|
|
double ValueReverse(int k);
|
|
|
|
|
|
/** @brief ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڰ˸<DAB0><CBB8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵļ<CFB5>Ȩƽ<C8A8><C6BD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǵڶ<C7B5><DAB6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD>Ӱ<EFBFBD><D3B0>*/
|
|
|
|
|
|
double ValueLink(int k);
|
|
|
|
|
|
/** @brief <20><>ͨ<EFBFBD><CDA8><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ<EFBFBD>õ<EFBFBD><C3B5><EFBFBD>k<EFBFBD><6B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD>Ȩƽ<C8A8><C6BD>*/
|
|
|
|
|
|
double ValueUnlink(int k );
|
|
|
|
|
|
/** @brief <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>jά<6A><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>IJ<EFBFBD>ֵ*/
|
|
|
|
|
|
double Value(double *m_dim,/*int *ip,*/int j);
|
|
|
|
|
|
double Differential(double* m_dim, int d);
|
|
|
|
|
|
void Extrenum(double &min,double &max);
|
|
|
|
|
|
/*
|
|
|
|
|
|
| w[1] T(i,j)
|
|
|
|
|
|
w[2] |
|
|
|
|
|
|
-------o------w[0]
|
|
|
|
|
|
K|
|
|
|
|
|
|
| w[3] */
|
|
|
|
|
|
/** @brief <20>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>ĵ<EFBFBD>K<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>i,j<><6A><EFBFBD>ͶԽǵ㣨i,j<><6A><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
|
|
|
|
|
|
int IsLink(int k, int i, int j);
|
|
|
|
|
|
|
|
|
|
|
|
/** @brief <20>õ<EFBFBD><C3B5><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5>Χ,<2C><><EFBFBD><EFBFBD>ֵΪ<D6B5><CEAA>Чֵ<D0A7>ĸ<EFBFBD><C4B8><EFBFBD> */
|
|
|
|
|
|
int GetRange(double minValidValue=-1e100, double maxValidValue=1e100);
|
|
|
|
|
|
|
|
|
|
|
|
void _Write(FILE *&fw, dfPoint &t);
|
|
|
|
|
|
|
|
|
|
|
|
double *u; ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>飬<EFBFBD><E9A3AC>total<61><6C>
|
|
|
|
|
|
CLink **m_link; ///< <20><>total<61><6C><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼ÿ<C2BC><C3BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD><CEA7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӹ<EFBFBD>ϵ<EFBFBD><CFB5>m_link[i]<5D><>*w<><77><EFBFBD><EFBFBD>n+n<><6E><EFBFBD><EFBFBD>i<EFBFBD>к<EFBFBD>j<EFBFBD><6A> <20><><EFBFBD><EFBFBD>CFunction2D<32>෴
|
|
|
|
|
|
int *link_offset; ///< Ϊ<><CEAA>ά<EFBFBD>ȵ<EFBFBD>ƫ<EFBFBD><C6AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڶ<EFBFBD>άƫ<CEAC><C6AB><EFBFBD><EFBFBD>Ϊlink_offset[0]*num[0]<5D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;<3B><>n+n<><6E><EFBFBD><EFBFBD>n+1<><31>2nΪǰn<C7B0><6E><EFBFBD>ĸ<EFBFBD>ֵ
|
|
|
|
|
|
int total; ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double m_mininum;
|
|
|
|
|
|
void InitMininum(bool bGetRange = true); ///< Ϊ<><CEAA><EFBFBD>ϸ<EFBFBD>ʽ<EFBFBD>е<EFBFBD>m_mininum<75><6D><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
double z;
|
|
|
|
|
|
int* ip; ///< <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ijһ<C4B3><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD>õĸ<C3B5>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
bool m_IsUMapping; ///< <20>ж<EFBFBD><D0B6><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD>Ƿ<EFBFBD>Ϊ<EFBFBD>ڴ<EFBFBD>ӳ<EFBFBD>䣬<EFBFBD><E4A3AC><EFBFBD>ǣ<EFBFBD><C7A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>empty()<29><>ɾ<EFBFBD><C9BE>
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
using namespace NContour;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endif // !defined(AFX_DFDIMENSION_H__D81A67B5_D88D_48E3_B66E_A78E2BB1E081__INCLUDED_)
|