亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? coordinate.cpp

?? 自定義一些x,y坐標,可以模擬出一些光滑的曲線
?? CPP
字號:
// Coordinate.cpp: implementation of the CCoordinate class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "BiJin.h"
#include "Coordinate.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CCoordinate::CCoordinate()
{
	m_pPtrList = new CPtrList;
}

CCoordinate::~CCoordinate()
{
	for(int i=0;i<m_pPtrList->GetCount();i++)
	{
		POSITION pos;
		pos = m_pPtrList->FindIndex(i);
		CFoldPoint *pFoldPoint = (CFoldPoint *)m_pPtrList->GetAt(pos);
		m_pPtrList->RemoveAt(pos);
	}
	m_pPtrList->RemoveAll();
	delete m_pPtrList;
}
void CCoordinate::Getcoordinate(CStdioFile *pFile)
{
	int m_Length = pFile->GetLength();
	CFoldPoint *m_pFoldPoint = new CFoldPoint;
	CString pBuf;
	pFile->ReadString(pBuf);
	m_Length -= pBuf.GetLength();
	split(pBuf,m_dest,',');
	m_pFoldPoint->x = atof(m_dest.GetAt(0));
	m_pFoldPoint->y = atof(m_dest.GetAt(1));
	m_pPtrList->AddTail((CObject *)m_pFoldPoint);
	while(m_Length)
	{
		m_pFoldPoint = new CFoldPoint;
		pFile->ReadString(pBuf);
		m_Length -= (pBuf.GetLength()+2);
		split(pBuf,m_dest,',');
		m_pFoldPoint->x = atof(m_dest.GetAt(0));
		m_pFoldPoint->y = atof(m_dest.GetAt(1));
		m_pPtrList->AddTail((CObject *)m_pFoldPoint);
	}
	/*int m_nLength = pFile->GetLength();
	char *m_pBuf = new char[m_nLength];
	pFile->Read(m_pBuf,m_nLength);
	CFoldPoint *m_pFoldPoint;
	int m_nCount = 1;
	for(int i=0;i<m_nLength;i++)
	{
		if(m_pBuf[i] == 13)
			m_nCount++;
	}
	char *p1 = m_pBuf;
	char *p2 = m_pBuf;
	for(int j=0;j<m_nCount-1;j++)
	{
		m_pFoldPoint = new CFoldPoint;
		while((*p2) != ',')
			p2++;
		m_pFoldPoint->x = 0;
		while(p1 < p2)
		{
			m_pFoldPoint->x += (int)((*p1 - 48)*pow(10,p2-p1));
			p1++;
		}
		p1++;
		p2++;
		while((*p2) != 13)
			p2++;
		m_pFoldPoint->y  = 0;
		while(p1 < p2)
		{ 
			m_pFoldPoint->y  += (int)((*p1 - 48)*pow(10,p2-p1-1));
			p1++;
		}
		p1 +=2;
		p2 +=2;
		m_pPtrList->AddTail((CObject *)m_pFoldPoint);
	}
	m_pFoldPoint = new CFoldPoint;
	while((*p2) != ',')
		p2++;
	m_pFoldPoint->x = 0;
	while(p1 < p2)
	{
		m_pFoldPoint->x += (int)((*p1 - 48)*pow(10,p2-p1));
		p1++;
	}
	p1++;
	p2++;
	while((*p2) != '.')
		p2++;
	m_pFoldPoint->y = 0;
	while(p1 < p2)
	{
		m_pFoldPoint->y += (int)((*p1 - 48)*pow(10,p2-p1-1));
		p1++;
	}
	m_pPtrList->AddTail((CObject *)m_pFoldPoint);
	delete []m_pBuf;
	p1 = NULL;
	p2 = NULL;*/
}
void CCoordinate::split(CString source,CStringArray &dest ,char a)
{
	dest.RemoveAll();
	for(int i=0;i<source.GetLength();i++)
	{
		if(source.GetAt(i) == a)
		{
			dest.Add(source.Left(i));//去掉右邊
			for(int j=0;j<dest.GetSize()-1;j++)
			{
				dest[dest.GetSize()-1] = dest[dest.GetSize()-1].Right(dest[dest.GetSize()-1].GetLength() 
					- dest[j].GetLength() - 1);//去掉左邊
			}
		}
	}
	dest.Add(source);
	for(int j=0;j<dest.GetSize()-1;j++)
	{
		dest[dest.GetSize()-1] = dest[dest.GetSize()-1].Right(dest[dest.GetSize()-1].GetLength() 
					- dest[j].GetLength() - 1);
	}
}
bool CCoordinate::GetLowest()
{
	if(!m_pPtrList)return false;
	int size = m_pPtrList->GetCount();
	POSITION lowPos,tmpPos,lowPos1;
	double lowY;
	lowPos1 = lowPos = m_pPtrList->FindIndex(0);
	((CFoldPoint *)m_pPtrList->GetAt(lowPos))->m_bLow = true;
	for(int i=1;i<size-5;i++)
	{
		lowPos = m_pPtrList->FindIndex(i);
		CFoldPoint *pFoldPoint = (CFoldPoint *)m_pPtrList->GetAt(lowPos);
		lowY = pFoldPoint->y;
		for(int j=i;j<i+5;j++)
		{
			tmpPos = m_pPtrList->FindIndex(j);
			pFoldPoint = (CFoldPoint *)m_pPtrList->GetAt(tmpPos);
			if(pFoldPoint->y < lowY)
			{
				lowY = pFoldPoint->y;
				lowPos = tmpPos;
			}			
		}
		if(lowPos != lowPos1)
		{
			((CFoldPoint *)m_pPtrList->GetAt(lowPos))->m_bLow = true;
		}
		lowPos1 = lowPos;
	}
	lowPos = m_pPtrList->FindIndex(size-1);
	((CFoldPoint *)m_pPtrList->GetAt(lowPos))->m_bLow = true;
	return true;
}
CPtrList* CCoordinate::SPLine(CPtrList *pList,int SM)//計算pDestList的每個點的橫,縱坐標
//三次樣條插值算法
{
	CPtrList *pDestList = new CPtrList;
	CFoldPoint *pFoldHead,*pFoldTail;
	POSITION pos;
	CDoubleArray X,Y;
	double XI,YI,XX,YY;
	register long i;
	long RealSM;
	long Bei,Yu;
	CFoldPoint *pFold;
//file://賦初值
	long n=pList->GetCount();
	pos=pList->GetHeadPosition();
	for(i=0;i<n;i++)
	{
		pFold=(CFoldPoint *)pList->GetNext(pos);
		if(pFold->m_bLow == true)
		{
			X.Add(pFold->x);
			Y.Add(pFold->y);
		}
	}
	pFoldHead=(CFoldPoint *)pList->GetHead();
	pFoldTail=(CFoldPoint *)pList->GetTail();
//file://x連續
	YI=0;
	N = X.GetSize();
	RealSM = (N-1)*SM+N;
	for(i=0;i<RealSM;i++)
	{
		Bei=i/(SM+1);
		Yu=i%(SM+1);
		if(Yu!=0)
		{
			XI=X.GetAt(Bei)+(X.GetAt(Bei+1)-X.GetAt(Bei))/(SM+1)*Yu;
			SPLine4(&X,&Y,XI,YI);
			//SPLine1(&X,&Y,XI,YI);
			XX=XI;
			YY=YI;
		}
		else
		{
			XX=X.GetAt(Bei);
			YY=Y.GetAt(Bei);
		}
		pFold=new CFoldPoint;
		pFold->x=XX;
		pFold->y=YY;
		pDestList->AddTail(pFold);
	}
	return pDestList;
}
void CCoordinate::SPLine1(CDoubleArray *X,CDoubleArray *Y,double &XI,double &YI)//用直線擬合曲線,
//不保證光滑
{
	for(int i=1;i<N;i++)
	{
		if(XI>=X->GetAt(i-1) && XI<=X->GetAt(i))
		{
			double A = (X->GetAt(i) - XI)/(X->GetAt(i) - X->GetAt(i-1));
			double B = 1 - A;
			YI = A*Y->GetAt(i-1)+B*Y->GetAt(i); 
		}
	}
}
void CCoordinate::SPLine4(CDoubleArray *X,CDoubleArray *Y,double &XI,double &YI)//算法為三次樣條插值
{
	//給定數組X和Y其中y(i)=x(i),0<x1<x2....<x(n)給指定的數據Xi
	double *A,*B,*C,*G;
	//MX = G中,A為M上副對角線元素,B為M主對角線元素,C為M下副對角線元素,G為方程的常量元素
	register long I;
	double W1,W2,H; 
	A = new double[N];
	B = new double[N];
	C = new double[N];
	G = new double[N];
	for(I=1;I<N;I++)
	{
		B[I]=X->GetAt(I) - X->GetAt(I-1);//B(I)為X(I) - X(I-1)
		C[I]=(Y->GetAt(I) - Y->GetAt(I-1))/B[I];//C(I)為(Y(I)-Y(I-1))/(X(I)-X(I-1))
	}
	for(I=0;I<N;I++)
	{
		A[I]=B[I]+B[I+1];
		G[I]=6*(C[I+1] - C[I])/A[I];
		A[I]=B[I]/A[I];
	}
	for(I=1;I<N;I++)
	{
		C[I]=1-A[I];
		B[I]=2;
	}
	//上述兩個算法為三對角的分解循環,MX = G中,
	//A為M上副對角線元素,B為M主對角線元素,C為M下副對角線元素,G為方程的常量元素
	B[N-1]=X->GetAt(N-1);
	C[0]=1;
	A[N-1]=-1;
	A[0]=0;
	C[N-1]=0;
	ZG(A,B,C,&G);
	//所得到的矩陣方程(x(j)-x(j-1))*y''(j-1)/6+(x(j+1)-x(j-1))*y''(j)/3+(x(j+1)-x(j))*y''(j+1)/6
	//=(y(j+1)-y(j))/(x(j+1)-x(j)) - (y(j)-y(j-1))/(x(j)-x(j-1))
	for(I=1;I<N;I++)
	{
		if(XI>=X->GetAt(I-1) && XI<=X->GetAt(I))//GE LE
		{
			H=X->GetAt(I) - X->GetAt(I-1);
			W1=X->GetAt(I) - XI;
			W2=XI - X->GetAt(I-1);
			YI=W1*W1*W1*G[I-1]/6/H;
			YI=YI+W2*W2*W2*G[I]/6/H;
			YI=YI+W1*(Y->GetAt(I-1)-G[I-1]*H*H/6)/H;
			YI=YI+W2*(Y->GetAt(I)-G[I]*H*H/6)/H;
		}
	}
	delete []A;
	delete []B;
	delete []C;
	delete []G;
}
void CCoordinate::ZG(double *A,double *B,double *C,double **G) //MX = G,其中M
//含有上副對角元素A,主對角元素B,以及下副對角元素C,最終所得的解坐標保存到G中
{
	//追趕法
	register long I;
	C[0]=C[0]/B[0];
	for(I=1;I<N;I++)
	{
		B[I]=B[I]-A[I]*C[I-1];
		C[I]=C[I]/B[I];//分解
	}
	A[0]=0;
	C[N-1]=0;
	(*G)[0]=(*G)[0]/B[0];
	for(I=1;I<N;I++)
	{
		(*G)[I]=((*G)[I]-A[I]*(*G)[I-1])/B[I];//前代
	}
	for(I=N-2;I>-1;I--)//DO 30 I=N-1,1,-1
	{
		(*G)[I]=(*G)[I]-C[I]*(*G)[I+1];//回代
	}
}
double CCoordinate::NewY(CPtrList *pList,double XI)
{
	POSITION pos;
	CDoubleArray X,Y;
	double YI;
	register long i;
	CFoldPoint *pFold;
//file://賦初值
	long n=pList->GetCount();
	pos=pList->GetHeadPosition();
	for(i=0;i<n;i++)
	{
		pFold=(CFoldPoint *)pList->GetNext(pos);
		if(pFold->m_bLow == true)
		{
			X.Add(pFold->x);
			Y.Add(pFold->y);
		}
	}
//file://x連續
	YI=0;
	N = X.GetSize();
	SPLine4(&X,&Y,XI,YI);
	return YI;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久免费桃花 | 成人一区在线观看| 亚洲日本电影在线| 欧美精品一区二区三区蜜桃 | 日韩毛片精品高清免费| 久久一区二区三区四区| 欧美人狂配大交3d怪物一区| 北条麻妃国产九九精品视频| 国产成人av福利| 久久电影网站中文字幕| 五月婷婷综合激情| 亚洲国产精品一区二区尤物区| 国产精品国产精品国产专区不蜜| 国产亚洲成av人在线观看导航| 欧美日韩精品免费| 久久婷婷色综合| 日本欧美一区二区在线观看| 国产欧美日韩综合| 亚洲精品一区二区三区蜜桃下载| av毛片久久久久**hd| 一区二区三区产品免费精品久久75| 国产调教视频一区| 91精品国产91久久久久久最新毛片| 91网站在线播放| 欧美亚洲综合另类| 91精品一区二区三区久久久久久| 欧美日韩一区二区三区不卡| 日韩欧美国产综合一区| 成人h动漫精品| 欧美a一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 色综合久久中文综合久久牛| 不卡一二三区首页| 色综合色狠狠综合色| 欧美久久久久中文字幕| 欧美福利一区二区| 精品福利视频一区二区三区| 国产午夜精品久久久久久免费视 | 国产偷国产偷精品高清尤物 | 不卡一区中文字幕| 欧美精品xxxxbbbb| 精品国产免费久久| 国产精品嫩草影院av蜜臀| 亚洲一级二级三级在线免费观看| 男女性色大片免费观看一区二区| 韩日av一区二区| 色婷婷精品久久二区二区蜜臀av| 日韩欧美一区二区在线视频| 国产精品久久久久aaaa| 日韩高清在线不卡| 丁香一区二区三区| 日韩一区二区免费高清| 一个色妞综合视频在线观看| 国产一区二区三区在线观看免费 | 夜色激情一区二区| 国产乱码精品一品二品| 92国产精品观看| 久久奇米777| 久久福利视频一区二区| 欧美日韩国产乱码电影| 亚洲精品一二三区| 国产成人av影院| 久久这里都是精品| 一区二区三区免费看视频| 欧美性欧美巨大黑白大战| 久久美女艺术照精彩视频福利播放 | 亚洲综合色噜噜狠狠| 成人黄色777网| 国产精品视频观看| 黄页视频在线91| 97久久精品人人澡人人爽| 日韩欧美国产电影| 秋霞av亚洲一区二区三| 欧美三片在线视频观看| 午夜精品久久久久久久| 欧美人妇做爰xxxⅹ性高电影| 亚洲成人免费观看| 91精品国产色综合久久不卡电影| 日本中文字幕一区二区视频 | 亚洲女子a中天字幕| 一道本成人在线| 丝袜国产日韩另类美女| 日韩视频一区二区在线观看| 精品亚洲成av人在线观看| 久久久国产午夜精品 | k8久久久一区二区三区| 亚洲人成7777| 欧美顶级少妇做爰| 国产激情一区二区三区| 国产欧美日韩一区二区三区在线观看| 国产精品1区2区3区在线观看| 国产欧美精品一区二区色综合 | 精品国精品国产| 国产99久久久国产精品潘金| 亚洲一本大道在线| 日韩视频免费观看高清在线视频| 国产一区二区三区香蕉 | 精品一区二区三区在线观看| 中文字幕国产一区| 日韩一级在线观看| 色综合中文字幕国产 | 亚洲亚洲人成综合网络| 2023国产精华国产精品| 欧美日韩亚洲不卡| av毛片久久久久**hd| 国产乱子伦视频一区二区三区| 亚洲另类中文字| 国产欧美日韩亚州综合| 日韩一区二区三区四区| 欧美亚洲国产一区在线观看网站| 91麻豆福利精品推荐| 理论片日本一区| 天堂va蜜桃一区二区三区漫画版| 亚洲丝袜精品丝袜在线| 国产日韩在线不卡| 久久午夜老司机| 久久综合99re88久久爱| 日韩欧美国产电影| 欧美一级黄色片| 日韩视频国产视频| 日韩一区和二区| 精品88久久久久88久久久| 欧美一区二区成人6969| 欧美日韩日本视频| 欧美日韩成人高清| 欧美日韩精品久久久| 欧洲av在线精品| 欧美男人的天堂一二区| 欧美日韩高清一区二区不卡| 欧美性感一区二区三区| 欧美日韩和欧美的一区二区| 欧美精品日日鲁夜夜添| 欧美一级高清片| 久久色中文字幕| 亚洲三级免费观看| 日本中文在线一区| 国产成人在线色| 欧美伊人精品成人久久综合97| 欧美日韩国产一区二区三区地区| 欧美另类z0zxhd电影| 久久精品视频网| 亚洲不卡在线观看| 国产一区 二区 三区一级| 91亚洲午夜精品久久久久久| 欧美久久久久久蜜桃| 国产精品毛片高清在线完整版| 亚洲天堂av老司机| 久色婷婷小香蕉久久| av在线综合网| 精品乱码亚洲一区二区不卡| 国产精品久久久久久久蜜臀| 亚洲成av人影院| 成人伦理片在线| xnxx国产精品| 日韩中文欧美在线| 99久久伊人网影院| 久久久三级国产网站| 亚洲午夜免费福利视频| 国产ts人妖一区二区| 日韩欧美国产一二三区| 亚洲综合免费观看高清完整版| 国产黄人亚洲片| 久久久久久日产精品| 免费人成黄页网站在线一区二区| 色综合久久久久久久久久久| 国产欧美va欧美不卡在线| 欧美bbbbb| 日韩女同互慰一区二区| 亚洲国产美女搞黄色| 色欲综合视频天天天| 中文字幕乱码一区二区免费| 国产精品99久久久久久久vr| 日韩一二三四区| 开心九九激情九九欧美日韩精美视频电影| 欧美午夜免费电影| 亚洲一区二区三区视频在线 | 亚洲丰满少妇videoshd| 91久久线看在观草草青青 | 亚洲午夜激情av| 4hu四虎永久在线影院成人| 日本不卡一区二区三区| 欧美一区日韩一区| 美女爽到高潮91| 国产亚洲制服色| 成人av网址在线观看| 亚洲男人的天堂一区二区 | 欧美日韩国产小视频在线观看| 亚洲成人精品一区二区| 欧美一区二区精品久久911| 美女看a上一区| 国产欧美中文在线| 在线观看不卡一区| 紧缚捆绑精品一区二区| 1000精品久久久久久久久| 色网站国产精品| 久久国内精品视频| 亚洲伦理在线免费看| 久久综合狠狠综合久久综合88 | 成人av免费网站| 夜色激情一区二区|