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