利用Matlab實現繪制中秋山間秋月和皓月當空效果_第1頁
利用Matlab實現繪制中秋山間秋月和皓月當空效果_第2頁
利用Matlab實現繪制中秋山間秋月和皓月當空效果_第3頁
利用Matlab實現繪制中秋山間秋月和皓月當空效果_第4頁
利用Matlab實現繪制中秋山間秋月和皓月當空效果_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第利用Matlab實現繪制中秋山間秋月和皓月當空效果hold(ax,'on');

%=========================================================================

%顏色預定義,注意此處是hsv格式

cClouds=[330,25,100];%云的顏色

cSky=[220,50,50];%天空的顏色

cFurther=[230,25,90];%遠山的顏色

cCloser=[210,70,10];%近山的顏色

%=========================================================================

%繪圖函數調用

ax.Color=hsv2rgb(cFurther./[360,100,100]);%背景為遠山的顏色

drawSky(cSky,cFurther)%畫出天空顏色漸變效果

drawClouds(cClouds)%畫出彩色云朵效果

drawMountains(cFurther,cCloser)%畫出山脈效果

%=========================================================================

%功能函數:

%-------------------------------------------------------------------------

%漸變背景生成函數

functiondrawSky(colSky,colFurther)

%顏色由hsv轉rgb

colSky=hsv2rgb(colSky./[360,100,100]);

colFurther=hsv2rgb(colFurther./[360,100,100]);

%構建漸變色網格

[XMesh,YMesh]=meshgrid(1:800,301:600);

ZMesh=zeros(size(XMesh));

CMesh=vColorMat([800,300],[colFurther;colSky]);

surf(XMesh,YMesh,ZMesh,'CData',CMesh,'EdgeColor','none');

%-------------------------------------------------------------------------

%云繪制函數

functiondrawClouds(colClouds)

colClouds=hsv2rgb(colClouds./[360,100,100]);

%隨機噪聲生成

[X,Y]=meshgrid(linspace(0,1,500));

CLX=(-cos(X.*2.*pi)+1).^.2;

CLY=(-cos(Y.*2.*pi)+1).^.2;

r=(X-.5).^2+(Y-.5).^2;

alp=abs(ifftn(exp(3i*rand(500))./r.^.8)).*(CLX.*CLY);

alp=alp./max(alp,[],'all');

CMesh=zeros([size(alp),3]);

CMesh(:,:,1)=colClouds(1);

CMesh(:,:,2)=colClouds(2);

CMesh(:,:,3)=colClouds(3);

%越向下、云越透明

dy=(1:500)./500.*0.8+0.2;

image([0,800],[350,600],CMesh,'AlphaData',alp.*(dy'));

%-------------------------------------------------------------------------

%山峰繪制函數

functiondrawMountains(colFurther,colCloser)

[X,Y]=meshgrid(linspace(0,1,800));

CLX=(-cos(X.*2.*pi)+1).^.2;

CLY=(-cos(Y.*2.*pi)+1).^.2;

r=(X-.5).^2+(Y-.5).^2;

%8層山

fori=1:8

%每次都生成一次二維隨機噪聲,并取其中一行的數據

h=abs(ifftn(exp(5i*rand(800))./r.^1.05)).*(CLX.*CLY).*10;

nh=(8-i)*30+h(400,:);

ifi==1,nh=nh.*.8;end

hm=ceil(max(nh));

CMesh=zeros([hm,800,3]);

%顏色矩陣構造,

tcol=colFurther+(colCloser-colFurther)./8.*(i);

tcol=hsv2rgb(tcol./[360,100,100]);

CMesh(:,:,1)=tcol(1);

CMesh(:,:,2)=tcol(2);

CMesh(:,:,3)=tcol(3);

%用nan數值框出山的輪廓

alp=ones(hm,800);

alp((1:hm)'nh)=nan;

%繪制山峰

image([-50,850],[0,hm],CMesh,'AlphaData',alp.*0.98);

%=========================================================================

%一個線性插值的漸變圖生成函數

functioncolorMat=vColorMat(matSize,colorList)

yList=((0:(matSize(2)-1))./(matSize(2)-1))';

xList=ones(1,matSize(1));

%線性插值

colorMat(:,:,1)=(colorList(1,1)+yList.*(colorList(2,1)-colorList(1,1)))*xList;

colorMat(:,:,2)=(colorList(1,2)+yList.*(colorList(2,2)-colorList(1,2)))*xList;

colorMat(:,:,3)=(colorList(1,3)+yList.*(colorList(2,3)-colorList(1,3)))*xList;

本人將代碼再次略作改編,貼合中秋主題,又寫了山間秋月的代碼,能夠動態(tài)展示變換的云霧以及慢慢變圓的月亮:

functionautumoon_2

%@author:slandarer

%gzh:slandarer隨筆

%axes設置

ax=gca;

ax.XTick=[];

ax.YTick=[];

ax.XLim=[0,800];

ax.YLim=[0,600];

ax.DataAspectRatio=[111];

hold(ax,'on');

%=========================================================================

%顏色預定義,注意此處是hsv格式

cFurther=[225,35,70];%遠山的顏色

cCloser=[210,70,10];%近山的顏色

cClouds=[2502643];%云的顏色

cSky=[21510018];%天空的顏色

%月亮顏色格式為rgb

cMoon=[253,252,222]./255;

%=========================================================================

%繪圖函數調用

ax.Color=hsv2rgb(cFurther./[360,100,100]);%背景為遠山的顏色

drawSky(cSky,cFurther)%畫出天空顏色漸變效果

%基礎繪制月亮

t1=linspace(-pi/2,pi/2,100);

t2=linspace(pi/2,3*pi/2,100);

X1=cos(t1).*35;Y1=sin(t1).*35;

X2=cos(t2).*35;Y2=sin(t2).*35;

moonHdl=fill([X1,X2]+600,[Y1,Y2]+500,cMoon,'E

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論