8.2 matlab曲线对象和曲面对象(曲线对象、曲面对象、光照处理、图形对象的反射特性)
1、曲線對象
(1)建立曲線對象
line數(shù)的調(diào)用格式為:
句柄變量=line(x, y,z,屬性1,屬性值1,屬性2,屬性值2…) 其中,參數(shù)x、y、z是同型的向量或知陣,x、y、z存儲數(shù)據(jù)點的坐標(biāo),與plot、plot3函數(shù)含義相同。
與plot函數(shù)不同的是,plot函數(shù)每調(diào)用一次就會刷新坐標(biāo)軸,清空原有圖形再繪制新的曲線。而line函數(shù)生成的曲線則在已有圖形上疊加顯示。
(2)曲線對象常用屬性
①Color屬性:定義曲線的顏色,默認(rèn)值為[0 0 0]。
②LineStyle屬性:定義線型,默認(rèn)值為’-’。
③LineWidth屬性:定義線寬,默認(rèn)值為0.5磅。
④Marker屬性:定義數(shù)據(jù)點標(biāo)記符號,默認(rèn)值為’none’。
⑤MarkerSize屬性:定義數(shù)據(jù)點標(biāo)記符號的大小,默認(rèn)值為6磅。
⑥XData、YData、ZData屬性:設(shè)置3個坐標(biāo)軸的數(shù)據(jù)源。
例1:利用曲線對象繪制五環(huán)圖案。
t = -0.1:0.1:2*pi; %圓環(huán)為封閉圖形,將t的初值設(shè)為-0.1,使得曲線首尾頂點坐標(biāo)重合 x = cos(t); y = sin(t); %計算圓環(huán)上數(shù)據(jù)點的坐標(biāo) subplot(2,1,1) line(x,y,'color','b') line(x+1.2,y-1,'color','y') line(x+2.4,y,'color','k') line(x+3.6,y-1,'color','g') %line函數(shù)的前兩個參數(shù)確定圓環(huán)的位置,參數(shù)Color指定曲線的顏色 line(x+4.8,y,'color','r') %依次繪制從左到右5個圓環(huán) axis equal %使圓呈現(xiàn)正圓 h1 = gca; %獲取當(dāng)前坐標(biāo)軸句柄 h1.XLim = [-2 7]; h1.YLim = [-3 2]; %設(shè)置坐標(biāo)軸范圍 hold onsubplot(2,1,2) line(x,y,'color','b') line(x+1.2,y-1,'color','y') line(x+2.4,y,'color','k') line(x+3.6,y-1,'color','g') line(x+4.8,y,'color','r') axis equal h2 = gca; h2.XLim = [-2 7]; h2.YLim = [-3 2]; for n=1:size(h2.Children)h2.Children(n).LineWidth = 3; %將坐標(biāo)軸的所有子對象的線寬改為5 end axis equal
2、曲面對象
(1)建立曲面對象
surface函數(shù)的調(diào)用格式為:
句柄變量=surface(x, y,z,c,屬性1,屬性值1,屬性2,屬性值2,…) —般情況下參數(shù)yz是同型矩陣,其中,其中xy是網(wǎng)格坐標(biāo)矩陣,z是網(wǎng)格點上的高度矩陣。x、y、z存儲數(shù)據(jù)點的坐標(biāo),與surf函數(shù)含義相同;c用于指定在不同高度下的曲面顏色。
利用surface函數(shù)建立的曲面對象,默認(rèn)視點的方位角為0°,仰角為90°。
與surf函數(shù)不同的是,surf函數(shù)每調(diào)用一次就會刷新坐標(biāo)軸,清空原有圖形再繪制新的曲線。而surface函數(shù)生成的曲面則在已有圖形上疊加顯示。
(2)與曲面形態(tài)有關(guān)的屬性
①FaceColor屬性:定義曲面網(wǎng)格片的顏色,可取值為:
‘flat’:每一個網(wǎng)格片用單一顏色填充;‘interp’:用漸變方式填充網(wǎng)格片;‘none’:網(wǎng)格片無顏色;‘texturemap’:用Cdata屬性定義的顏色填充網(wǎng)格片;RGB向量或代表顏色的字符。
②EdgeColor屬性:定義曲面網(wǎng)格線的顏色。
例2:利用曲面對象繪制立體圓環(huán),圓環(huán)方程為
3、光照處理
曲面的呈現(xiàn)效果除了與自身屬性有關(guān),還與光照和材質(zhì)有關(guān)。不同光原從不同位置,以不同角度投射光到物體的表面,使圖形表面微妙的差異體現(xiàn)得更清楚。
(1)創(chuàng)建光源對象
light函數(shù)的調(diào)用格式為:
對象句柄=light(屬性1,屬性值1,屬性2,屬性值2,…) 其中,屬性指定光源的特性。
(2)光源對象的屬性
①Color屬性: 設(shè)置光的顏色。默認(rèn)為白色。
②Style屬性: 設(shè)置光源類型,其取值為’infinite’(無窮遠(yuǎn)光)(默認(rèn)值)或’local’(近光) 。
③Position屬性: 指定光源位置。是一個三元向量
( 3)設(shè)置光照模式
lighting命令格式為:
lighting 選項 ,其中,選項可取值為:
①flat:使得入射光均勻灑落在圖形對象的每個面上。默認(rèn)選項
②gouraud:先對頂點顏色插補,再對頂點勾畫的面上顏色進行插補,用于表現(xiàn)曲面。
③phong:對頂點處的法線插值,再計算各個像素的反光。它生成的光照效果好但更費時。
④none:關(guān)閉所有光源。
例3:繪制光照處理后的圓環(huán)面并觀察不同光照模式下的效果。
t = linspace(0,2*pi,60); [u,v] = meshgrid(t); x = (8+3*cos(v)).*cos(u); y = (8+3*cos(v)).*sin(u); z = 3*sin(v); %根據(jù)方程計算圓環(huán)上數(shù)據(jù)點的坐標(biāo)axes('Position',[0.05,0.675,1.0,0.3],'View',[-37.5 30]); %建立子圖1的坐標(biāo)軸 hs1 = surface(x,y,z); %繪制曲面,沒有加入近光源進行照射 axis equal hs1.EdgeColor = 'none'; %設(shè)置曲面無網(wǎng)格線 hs1.FaceColor = 'interp'; %網(wǎng)格用插值模式填充axes('Position',[0.05,0.35,1.0,0.3],'View',[-37.5 30]); %建立子圖2的坐標(biāo)軸 hs2 = surface(x,y,z); axis equal hs2.EdgeColor = 'none'; hs2.FaceColor = 'interp'; light('Position',[0 0 8]); % %加入近光源進行照射,光源設(shè)置在圖形正上方,使得圖形表面有金屬質(zhì)感 lighting flat %圖光源采用flat模式,表面呈現(xiàn)網(wǎng)格塊axes('Position',[0.05,0.025,1.0,0.3],'View',[-37.5 30]); %建立子圖3的坐標(biāo)軸 hs3 = surface(x,y,z); axis equal hs3.EdgeColor = 'none'; hs3.FaceColor = 'interp'; light('Position',[0 0 8]); lighting phong %圖光源采用phong模式,表面非常光滑4、圖形對象的反射特性
①SpecularStrength屬性: 控制對象表面鏡面反射的強度。取值范圍為[0,1]之間。
②DiffuseStrength 屬性: 控制對象表面漫反射的強度。
③AmbientStrength屬性: 確定環(huán)境光的強度。
④SpecularExponent屬性: 控制鏡面反射指數(shù)。
⑤BackFaceLighting屬性: 控制對象內(nèi)表面和外表面的差別。
‘unlit’、‘lit’、 ‘reverselit’(默認(rèn)值)
例4:繪制具有不同反射特性的圓環(huán)面并觀察反射特性對圖形效果的影響。
t = linspace(0,2*pi,60); [u,v] = meshgrid(t); x = (8+3*cos(v)).*cos(u); y = (8+3*cos(v)).*sin(u); z = 3*sin(v); %根據(jù)方程計算圓環(huán)上數(shù)據(jù)點的坐標(biāo)axes('Position',[0.05,0.675,1.0,0.3],'View',[-37.5 30]); %建立子圖1的坐標(biāo)軸 hs1 = surface(x,y,z); %繪制曲面,沒有加入近光源進行照射 axis equal hs1.EdgeColor = 'none'; %設(shè)置曲面無網(wǎng)格線 hs1.FaceColor = 'interp'; %網(wǎng)格用插值模式填充 light('Position',[0 0 8]); lighting phong %圖光源采用phong模式,表面非常光滑 hs1.SpecularStrength = 0.1; %表面暗,無光澤axes('Position',[0.05,0.35,1.0,0.3],'View',[-37.5 30]); %建立子圖2的坐標(biāo)軸 hs2 = surface(x,y,z); axis equal hs2.EdgeColor = 'none'; hs2.FaceColor = 'interp'; light('Position',[0 0 8]); % %加入近光源進行照射,光源設(shè)置在圖形正上方,使得圖形表面有金屬質(zhì)感 lighting phong %圖光源采用phong模式,表面呈現(xiàn)網(wǎng)格塊 hs2.SpecularStrength = 0.5; %表面有一些光澤axes('Position',[0.05,0.025,1.0,0.3],'View',[-37.5 30]); %建立子圖3的坐標(biāo)軸 hs3 = surface(x,y,z); axis equal hs3.EdgeColor = 'none'; hs3.FaceColor = 'interp'; light('Position',[0 0 8]); lighting phong %圖光源采用phong模式,表面非常光滑 hs1.SpecularStrength = 1.0; %表面最亮總結(jié)
以上是生活随笔為你收集整理的8.2 matlab曲线对象和曲面对象(曲线对象、曲面对象、光照处理、图形对象的反射特性)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 8.1 matlab图形窗口与坐标轴(图
- 下一篇: 8.3 matlab图形用户界面设计方法