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

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

?? fgrass.cpp

?? VC小波應用 分形和混沌 FRACTAL AND GRASS DEMO
?? CPP
字號:
// FGrass.cpp: implementation of the CFGrass class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "Grass.h"
#include "FGrass.h"
#include "Rand.h"

#include <math.h>
#include <time.h>

#define pi 3.1415926
#define xs(x)  ((int)(m_fFact*((x)-m_fXmin)))
#define ys(y)  ((int)(m_fFact*((y)-m_fYmin)))

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

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

CFGrass::CFGrass()
{
	m_nTurDir=m_nTsSize=0;
	m_fTurx=m_fTury=0;
	m_fD=1;
	m_bFf=false;
	m_nJ=0;
	m_nF=0;
	m_fYmax=m_fYmin=m_fXmax=m_fXmin=0;

	m_pTsDir=m_pSize=NULL;
	m_pTsx=m_pTsy=m_pAngle=NULL;
	m_pKar=NULL;
	m_pAxiom=NULL;
	m_pRule=NULL;
	m_pRand=NULL;
}

CFGrass::~CFGrass()
{
	delete m_pTsDir;
	delete m_pSize;
	delete m_pTsx;
	delete m_pTsy;
	delete m_pAngle;
	delete m_pRule;
	delete m_pRand;
}

void CFGrass::TurState(CDC *pDC,char com)
{ 
	if(m_bFf){
		m_fD=float(m_pRand->next())+1;
	}
	if(com=='F'||com=='f'){ 
		m_fTurx+=float(m_fD*cos(m_nTurDir*m_pAngle[m_nF]*pi/180.0));
		m_fTury+=float(m_fD*sin(m_nTurDir*m_pAngle[m_nF]*pi/180.0));
		if(com=='F') pDC->LineTo(xs(m_fTurx),ys(m_fTury));
		else pDC->MoveTo(xs(m_fTurx),ys(m_fTury));
	}
	else if(com=='+') m_nTurDir--;
	else if(com=='-') m_nTurDir++;
	else if(com=='['){
		m_pTsx[m_nTsSize]=m_fTurx;
		m_pTsy[m_nTsSize]=m_fTury;
		m_pTsDir[m_nTsSize]=m_nTurDir;
		m_nTsSize++;
	}
	else if(com==']'){
		m_nTsSize--;
		m_fTurx=m_pTsx[m_nTsSize];
		m_fTury=m_pTsy[m_nTsSize];
		m_nTurDir=m_pTsDir[m_nTsSize];
		pDC->MoveTo(xs(m_fTurx),ys(m_fTury));
	}
}

int CFGrass::Turs(char com)
{  
	if(m_bFf){
		m_fD=float(m_pRand->next())+1;
	}
	if(com=='F'||com=='f')
	{ 
		m_fTurx+=float(m_fD*cos(m_nTurDir*m_pAngle[m_nF]*pi/180.0));
		m_fTury+=float(m_fD*sin(m_nTurDir*m_pAngle[m_nF]*pi/180.0));
		m_fXmax=max(m_fTurx,m_fXmax);
		m_fYmax=max(m_fTury,m_fYmax);
		m_fXmin=min(m_fTurx,m_fXmin);
		m_fYmin=min(m_fTury,m_fYmin);
	}
	else if(com=='+') m_nTurDir--;
	else if(com=='-') m_nTurDir++;
	else if(com=='['){ 
		if(m_nTsSize>=m_nMaxTs)
		{
			return -1;
		}
		m_pTsx[m_nTsSize]=m_fTurx;
		m_pTsy[m_nTsSize]=m_fTury;
		m_pTsDir[m_nTsSize]=m_nTurDir;
		m_nTsSize++;
	}
	else if(com==']'){ 
		if(m_nTsSize==0){
			return 1;
		}
		m_nTsSize--;
		m_fTurx=m_pTsx[m_nTsSize];
		m_fTury=m_pTsy[m_nTsSize];
		m_nTurDir=m_pTsDir[m_nTsSize];
	}
	return 0;
}

void CFGrass::Draw(char *str,int level)
{ 
	int i,j,k,m;
	k=0;
	m_nF=UINT(m_pRand->next())%14;
	while(str[k]!='\0')
	{ 
		i=0;
		while(i<m_nKLen && str[k]!=m_pKar[i]) i++;
		if(str[k]==m_pKar[i]){ 
			level++;
			if(level>m_nMaxLevel){ 
				level--;
				m=m_pSize[m_nF];
				for(j=0;j<m;j++)
					TurState(pDC,m_pRule[m_nF][j]);
				goto loop;
			}
			Draw(m_pRule[m_nF],level);
		}else{ 
			TurState(pDC,str[k]);
			goto loop;
		}
		level--;
loop:	k++;
	}
}

int CFGrass::Play(char *str,int level)
{ 
	int i,j,k,m;
	k=0;
	m_nF=UINT(m_pRand->next())%14;
	while(str[k]!='\0')
	{ 
		i=0;
		while(i<m_nKLen && str[k]!=m_pKar[i]) i++;
		if(str[k]==m_pKar[i]){ 
			level++;
			if(level>m_nMaxLevel){ 
				level--;
				m=m_pSize[m_nF];
				for(j=0;j<m;j++){
					if(Turs(m_pRule[m_nF][j])!=0)
						return 0;
				}
				goto loop;
			}
			if(Play(m_pRule[m_nF],level)==0)
				return 0;
		}else{ 
			if(Turs(str[k])!=0)
				return 0;
			goto loop;
		}
		level--;
loop:	k++;
	}
	return 1;
}

int CFGrass::Create(int maxts,int maxlevel,int mx,int my)
{
	m_nMaxTs=maxts;
	m_nMaxLevel=maxlevel;
	m_nMaxx=mx;
	m_nMaxy=my;
	m_pTsDir=new int[m_nMaxTs];
	m_pTsx=new float[m_nMaxTs];
	m_pTsy=new float[m_nMaxTs];
	
	m_nKLen=1;
	m_pKar="F";
	m_pAxiom="+++++F";

	m_nRLen=14;
	m_pSize=new int[m_nRLen];
	m_pAngle=new float[m_nRLen];
	m_pRule=new char*[m_nRLen];

	m_pAngle[0]=22.5;
	m_pRule[0]="FF-[-F+F+F]+[+F-F-F]";
	m_pSize[0]=strlen(m_pRule[0]);
	m_pAngle[1]=11.25;
	m_pRule[1]="FF-[F-[F-[F]+]+]+";
	m_pSize[1]=strlen(m_pRule[1]);
	m_pAngle[2]=22.5;
	m_pRule[2]="FF[+F][-F]FFF[-FF]";
	m_pSize[2]=strlen(m_pRule[2]);
	m_pAngle[3]=22.5;
	m_pRule[3]="F[+F][--FF]FF[+FF][-F]FF[+FF][-F]";
	m_pSize[3]=strlen(m_pRule[3]);
	m_pAngle[4]=30;
	m_pRule[4]="F[+F]F[-F]F";
	m_pSize[4]=strlen(m_pRule[4]);
	m_pAngle[5]=20;
	m_pRule[5]="F[+F]F[-F][F]";
	m_pSize[5]=strlen(m_pRule[5]);
	m_pAngle[6]=180.0/12.0;
	m_pRule[6]="FF-[FF-[-[F]+]+]+";
	m_pSize[6]=strlen(m_pRule[0]);
	m_pAngle[7]=180.0/16.0;
	m_pRule[7]="F-[F]+F-[-[F-[-[F]+]+F-[-[F]+]+]+]+";
	m_pSize[7]=strlen(m_pRule[7]);
	m_pAngle[8]=180.0/16.0;
	m_pRule[8]="FF-[F-[-[F-[F-[-[F]+]+]+]+]+]+";
	m_pSize[8]=strlen(m_pRule[8]);
	m_pAngle[9]=180.0/8.0;
	m_pRule[9]="FF[+F[+F-]-[F]]-[F-[F[+F-]]+]+";
	m_pSize[9]=strlen(m_pRule[9]);
	m_pAngle[10]=180.0/16.0;
	m_pRule[10]="FF-[F-[-[F-[F-[-[F]+]+]+]+]+]+[+[+[+F[+F[+[+F-]-]-]-]-]-]";
	m_pSize[10]=strlen(m_pRule[10]);
	m_pAngle[11]=18;
	m_pRule[11]="F[+[+FF-]-]-[-[FF]+]+F-[[+[+FF-]-]-[-[F]+]+F-[[+[+F-]-]-[-[F]+]+F]+]+";
	m_pSize[11]=strlen(m_pRule[11]);
	m_pAngle[12]=180.0/8.0;
	m_pRule[12]="FF-[F[+F-]F]+[+FF-[F]+F+]";
	m_pSize[12]=strlen(m_pRule[12]);
	m_pAngle[13]=180.0f/7.0f;
	m_pRule[13]="F[+F]F[-F]F";
	m_pSize[13]=strlen(m_pRule[13]);
	m_pRand=new CRandGauss(1,5); 
//	m_pRand=new CRandUniform(0,100);
	return 1;
}

int CFGrass::ClacFact(int l)
{
	m_nTurDir=m_nTsSize=0;
	m_fTurx=m_fTury=0;
	m_fYmax=m_fYmin=m_fXmax=m_fXmin=0;

	if(Play(m_pAxiom,l)==0) return 0;
	m_fFact=float(min((m_nMaxx/(m_nJ+1.0)-1.0)/(m_fXmax-m_fXmin),(m_nMaxy-1.0)/(m_fYmax-m_fYmin)));
	m_nTurDir=m_nTsSize=0;
	m_fTurx=m_fTury=0;
	return 1;
}  

int CFGrass::Draw(CDC *ipDC,char c)
{
	int k;
	switch(c){ 
	case '1': 
		m_nJ=1;
		m_bFf=true;
	      break;
    case '2': 
		m_nJ=0;
		m_bFf=true;
		break;
    case '3': 
		m_nJ=1;
		m_bFf=false;
		break;
    case '4': 
		m_nJ=1;
		m_bFf=false;
		break;
    default:  
		m_nJ=0;
		m_bFf=false;
	}
	pDC=ipDC;
	m_pRand->setCurSeed((unsigned)time( NULL ));
//	srand( (unsigned)time( NULL ) );
	k=int(m_pRand->next());//rand();
	m_pRand->setCurSeed(k);
//	srand(k);
	if(ClacFact(1)==0) return 0;
	pDC->MoveTo(xs(m_fTurx),ys(m_fTury));
	m_pRand->setCurSeed(k);
//	srand(k);
	Draw(m_pAxiom,1);
	if(m_nJ){
		if(c!='4')
			k=int(m_pRand->next());//k=rand();
		else m_bFf=true;
		if(ClacFact(1)==0) return 0;
		m_fXmin=m_fXmin-m_nMaxx*1.0f/2.0f/m_fFact;
		pDC->MoveTo(xs(m_fTurx),ys(m_fTury));
		m_pRand->setCurSeed(k);
	//	srand(k);
		Draw(m_pAxiom,1);
	}
	return 1;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区三区最好精华液| 国产suv精品一区二区三区| 激情六月婷婷久久| aaa国产一区| 日韩欧美高清dvd碟片| 成人欧美一区二区三区小说| 日韩精品久久久久久| fc2成人免费人成在线观看播放 | 欧美日韩精品一区二区在线播放| 精品不卡在线视频| 亚洲高清不卡在线| 91麻豆免费看| 国产亚洲欧美一级| 奇米精品一区二区三区在线观看一| 成人精品国产福利| 久久免费电影网| 麻豆成人av在线| 欧美在线观看一二区| 中文字幕一区二区三区乱码在线| 韩国av一区二区三区在线观看| 欧美精品一二三四| 亚洲一区二区av在线| a级高清视频欧美日韩| 国产偷国产偷亚洲高清人白洁| 日本一区中文字幕| 欧美男人的天堂一二区| 亚洲精选视频在线| 99精品视频中文字幕| 国产精品每日更新| 成人黄色片在线观看| 国产午夜精品久久| 高清不卡一区二区在线| 国产欧美日韩激情| 国产酒店精品激情| 欧美国产一区二区| 波多野结衣欧美| 国产精品久久久久久久岛一牛影视| 国产精品综合av一区二区国产馆| 精品久久久影院| 韩国av一区二区三区四区| 精品va天堂亚洲国产| 精品在线免费观看| 久久欧美一区二区| 成人短视频下载| 亚洲欧美综合网| 欧美亚洲国产一区二区三区va| 亚洲精品免费一二三区| 欧美视频在线一区二区三区 | 久久综合999| 国产麻豆成人精品| 1000部国产精品成人观看| 91国内精品野花午夜精品 | 日欧美一区二区| 911国产精品| 国产在线日韩欧美| 中文字幕精品—区二区四季| 99re热视频这里只精品| 亚洲国产精品自拍| 日韩免费看的电影| 国产69精品久久久久毛片| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 波多野洁衣一区| 亚洲一区二区三区中文字幕| 日韩一区二区中文字幕| 国产黄人亚洲片| 一区二区三区四区乱视频| 91精品欧美综合在线观看最新| 经典三级视频一区| 亚洲黄色av一区| 日韩欧美一区二区视频| 成人综合激情网| 午夜免费久久看| 国产日产欧美一区| 欧美在线高清视频| 国产一区二区在线视频| 一区二区三区波多野结衣在线观看| 91精品国产综合久久久久久久久久| 国产资源精品在线观看| 一区二区三区毛片| 久久久久久久久久久黄色| 色成人在线视频| 国产精华液一区二区三区| 亚洲影视资源网| 国产欧美日韩在线看| 69久久夜色精品国产69蝌蚪网| 国产福利一区二区三区视频在线| 一区二区三区四区五区视频在线观看 | 国产精品久久免费看| 日韩女优电影在线观看| 91麻豆精品在线观看| 精品一区二区三区免费观看| 一区二区三区在线视频观看58| 久久九九影视网| 日韩午夜精品视频| 欧美日韩国产精选| 91亚洲精品一区二区乱码| 麻豆成人综合网| 天天操天天干天天综合网| 成人免费在线视频| 亚洲国产精品成人久久综合一区| 欧美一区日韩一区| 在线日韩av片| 色欧美88888久久久久久影院| 国产乱码一区二区三区| 麻豆成人在线观看| 七七婷婷婷婷精品国产| 亚洲一区二区美女| 亚洲综合精品自拍| 亚洲女人小视频在线观看| 中文字幕精品—区二区四季| 久久人人超碰精品| 精品国产髙清在线看国产毛片 | 亚洲成av人影院在线观看网| 国产精品久久久久久久久久久免费看 | 婷婷国产v国产偷v亚洲高清| 一区二区三区在线看| 国产精品超碰97尤物18| 国产精品网曝门| 国产欧美日韩在线观看| 久久久99精品久久| 日本一区二区三区久久久久久久久不| 日韩精品中文字幕在线不卡尤物 | 亚洲成人动漫精品| 五月婷婷激情综合网| 三级一区在线视频先锋| 天天av天天翘天天综合网| 视频一区免费在线观看| 日本不卡123| 精品一区二区三区在线视频| 精品一区二区三区日韩| 日韩av电影天堂| 日韩专区一卡二卡| 午夜精品久久久久久久99樱桃| 午夜日韩在线电影| 奇米影视7777精品一区二区| 丝袜美腿亚洲一区二区图片| 一区二区三区欧美在线观看| 欧美韩国日本不卡| 国产精品美女久久久久久久久| 久久精品这里都是精品| 国产日韩欧美激情| 国产精品白丝在线| 一区二区三区在线观看国产| 洋洋成人永久网站入口| 26uuu国产在线精品一区二区| 国产亚洲精品精华液| 中文字幕va一区二区三区| 国产精品免费av| 亚洲欧洲99久久| 五月综合激情日本mⅴ| 日韩成人免费电影| 国模大尺度一区二区三区| 国产精品1区2区3区在线观看| 春色校园综合激情亚洲| 欧美日韩成人一区| 日韩欧美123| 国产精品天美传媒沈樵| 亚洲图片另类小说| 爽爽淫人综合网网站| 精品一区二区三区在线观看 | 91丝袜高跟美女视频| 日本精品视频一区二区| 91精品免费观看| 久久久99免费| 日本不卡视频在线| 丰满亚洲少妇av| 欧美视频在线一区| 日本高清免费不卡视频| 久久久久久电影| 亚洲欧美激情视频在线观看一区二区三区 | 91精品国产综合久久福利软件| 欧美一区中文字幕| 日韩精品一区二区三区蜜臀 | 亚洲色图.com| 亚洲一区二区精品久久av| 成人夜色视频网站在线观看| 欧美午夜影院一区| 久久影院午夜片一区| 亚洲综合无码一区二区| 国产成人免费在线观看不卡| 欧美一区二区视频在线观看 | 欧美色男人天堂| 欧美高清在线一区二区| 天堂蜜桃一区二区三区| av一二三不卡影片| 日韩精品一区二区三区在线 | 久久久99久久| 亚洲成年人影院| 99久久久久久| 亚洲精品一线二线三线无人区| 丝袜国产日韩另类美女| 99精品久久只有精品| 91精品国产91热久久久做人人 | 日本高清无吗v一区| 久久久三级国产网站| 日韩精品成人一区二区三区| 91麻豆福利精品推荐| 国产色综合一区| 久久精品国产**网站演员| 日韩视频永久免费|