9 MATLAB研究は_高度なグラフィックス描画が_2高度制御_ _視点回転制御パターンとカラーチャートとカラー画像と有色光を命令ノート

MathWorks社のMATLAB - MATLABの研究ノートに一緒に9を学びます

高度なグラフィックス描画は_2高度制御_ _視点回転制御パターンとカラーチャートとカラー画像と有色光_を命令します

一緒に相互学習を議論することを歓迎し、便利な検索- フォローミー

参考図書
「MATLABプログラミングと統合されたアプリケーションは、」張Defengは張さんの本に感謝を待っているので、私は便利なMATLABを感謝し
、「MATLAB技術バイブル」のGe GeのChaodengは先生の本のおかげで編集したので、私は感謝し、効率的なMATLAB

高度な制御グラフィック

そして、回転制御パターンの視点

視点制御

  • 見異なるオブジェクトの観点から日常生活パターンが異なる、異なる角度からユーザによって描かれた3次元図形の同一の形状は同じではありません。視点位置はまた、正の値は反時計回りに、負の値は時計回り示す表す平面上に形成された軸の視点位置の投影の角度である方位回転角、として知られている方位角と仰角、で表すことができます。また斜視標高ヤンXY平面上昇以下としても知られ、正の値は、XY平面における側面図を示し、負の値は、XY平面の下視点を示します。
  • グラフィック効果をより現実的にするために、グラフィックスは、異なる角度から見る必要があるかもしれません。視点に対する方位角および仰角である原点座標、関数はビューで指定することができます。方位角と仰角の大きさを設定することにより指定することができる視点の位置によって指定することができます。次のようにビュー関数呼び出しの形式があります。
    • ビュー(AZ、EL)、ビュー([AZ、ELは):方位角と仰角の大きさを指定します。
    • ビュー([X、Y、Z]):指定された視点位置
    • 図(2):=次元、すなわちAZデフォルト0、EL = 90を選択します。
    • 図(3):立体選択デフォルト、すなわちAZ = -37.5、EL = 30。
    • ビュー(T):ビュー変換行列Tによって提供される、Tは、viewmtxなどによって生成された透視行列の4×4行列であります
    • [AZ、EL =ビュー:現在の方位角と仰角を返します。
    • T =ビュー:現在の変換行列を返します。
  • 注:命令、AZは、方位角(方位角)であり、ELは頂角(仰角)です。彼らの単位は「度」です。AZ = 37.5°、EL = 30°:Vxが、VYは、視点3次元グラフィックスレンダリングは、ビュー命令を使用せずに、MATLABは、デフォルトの視点の設定を使用する場合、長方形の座標です。AZ = 0°、EL = 90°のとき、グラフィックは、平面矩形座標の性能に慣れします
  • MATLABインタラクティブ・グラフィック・ウィンドウは、最良の視覚効果を得るために、ユーザは、マウスを介してビューを調整し、その後、視点を固定することに対応する命令を表示するために、視点を調整してもよいです。
  • 異なる視点からのマルチモーダル機能面を描きます
subplot(2,2,1);mesh(peaks);
view(-37.5,30);
subplot(2,2,2);mesh(peaks);
view(0,90);
title('azimuth=0,elevation=90')
subplot(2,2,3);mesh(peaks);
view(90,0);
title('azimuth=90,elevation=0')
subplot(2,2,4);mesh(peaks);
view(-7,-10);
title('azimuth=-7,elevation=-10')

ここに画像を挿入説明

グラフィック回転

  • パターン旋回即ちパターン、コマンド回転:回転(時間、方向、アルファ、orgin)を、hは回転する物体であり;軸の方向として方向、θ、φは、又はデカルト座標[X座標を見つけることができます。 、Y、Z]を表し;アルファは右手の法則に従って回転角度です。
  • グラフィックの例を回転させます
shg;clf;                       
[X,Y]=meshgrid([-3:.2:3]);     
Z=4*X.*exp(-X.^2-Y.^2);        
G=gradient(Z);                 
subplot(1,2,1),surf(X,Y,Z,G)   
subplot(1,2,2),h=surf(X,Y,Z,G)
rotate(h,[-2,-2,0],30,[2,2,0]),colormap(cool)
  • 元の図形の回転のために去った後、右のグラフィックを回転させます
    ここに画像を挿入説明

    色の使用

    カラーベクトル表現

  • MATLABは、視覚情報の数は、2次元と3次元空間ツールに表示されています。例えば、sin関数のグラフは、データのパイルよりも多くの情報を提供する参照。この使用チャートやデータMATLABのデータの可視化と呼ばれる技術を表すグラフだけでなく、強力なコンピューティング・ツールであり、かつ視覚的にも非常にユニークなデータを表現するために魅力的で直感的な方法するためです。
  • しかし、何度も、単純な二次元または3次元グラフィックスは、一度にあなたが提供するすべての情報を表示することができません。この場合、色は、グラフィックスの追加の次元を提供することができます。前のセクションで説明した多くのマッピング関数は、この付加的な次元を追加するために、利用可能な色の量を受け入れることができます
  • MATLABは、カラー値を表すために、カラー画像と呼ばれるデータ構造を有しています。これは、カラー画像と3列の複数として定義される
    マトリックス。0と1の間の数を使用して、マトリックスの各行は、一つの色を表します。数字の任意の行は、RGB値、割り当て
    すなわち、赤、黄、青の強度、特定の色を形成します。
    ここに画像を挿入説明

    カラーチャート

  • 色图(Colormap)是MATLAB系统引人的概念。在MATLAB中,每个图形窗口只能有一个色图。色图是m×3的数值矩阵,它的每一行是RGB三元组。色图矩阵可以人为地生成,也可以调用MATLAB提供的函数来定义色图矩阵。
  • 语句colormap(M):将矩阵M作为当前图形窗口所用的颜色映像。例如,colormap(cool)装入了一个有64个输入项的cool颜色映像。colormap default装入了默认的颜色映像(hsv)
  • 接受颜色参量的绘图函数中的颜色参量通常采用以下三种形式之一:(1)字符串。代表plot颜色或线型表中的一种颜色,例如,'r'代表红色;(2)三个输入的行向量,它代表一个单独的RGB值,如[.25,.50.75];(3)矩阵。如果颜色参量是一个矩阵,其元素作了调整,并把它们用作当前颜色映像的下标。
    ここに画像を挿入説明
  • 按默认,上面所列的各个颜色映像产生一个64×3的矩阵,指定了64种颜色RGB的描述。这些函数都接受一个参量来指定所产生矩阵的行数。例如,hot(m)产生一个m×3的矩阵,它包含的RGB颜色值的范围从黑经过红、橘红和黄,到白。
  • 大多数计算机在一个8位的硬件查色表中一次可以显示256种颜色,当然有些计算机的显示卡可以同时显示更多的颜色。这就意味着在不同的图中,一般一次可以用三或四个64×3的颜色映像。如果使用了更多的颜色映像输入项,计算机必须经常在它的硬件查色表中调出输入项。例如,当在画MATLAB图形时背景图案发生了变化,就是发生了这种情况。所以,除非计算机有一次显示更多种颜色的显示卡,最好任何一次所用的颜色映像输入项数都小于256。

    颜色的显示

  • 可以有多种途径来显示一个颜色映射,其中一个方法是观察颜色映像矩阵的元素。eg:
>> hot(8)

ans =

    0.3333         0         0
    0.6667         0         0
    1.0000         0         0
    1.0000    0.3333         0
    1.0000    0.6667         0
    1.0000    1.0000         0
    1.0000    1.0000    0.5000
    1.0000    1.0000    1.0000
  • 使用pcolor来显示一个颜色映像
n=20;
colormap(jet(n))% jet色图方式
pcolor([1:n+1;1:n+1]')
title(' Using Pcolor to Display a Color Map')

ここに画像を挿入説明

  • 在MATLAB中,colorbar命令的主要功能是显示指定颜色刻度的颜色标尺。colorbar更新最近生成的颜色标尺,如果当前坐标轴系统中没有任何颜色标尺,则在图形的右侧显示一个垂直的颜色标尺,其调用格式如下。
    • colorbar('horiz'):在当前的图形下面放一个水平的颜色条。
    • colorbar('vert'):在当前的图形右边放一个垂直的颜色条。
  • 对无参量的colorbar,如果当前没有颜色条就加一个垂直的颜色条,或者更新现有的颜色条。
colormap(cool);
z=peaks(40);
subplot(2,2,1);
surf(z);
caxis([-2 2]);
colorbar;
z=peaks(40);
subplot(2,2,2);
surf(z);
caxis([-2 2]);
colorbar('vert');
z=peaks(40);
subplot(2,2,3);
surf(z);
caxis([-2 2]);
colorbar horiz;
z=peaks(40);
subplot(2,2,4);
surf(z);
caxis([-2 2]);
colorbar horiz

ここに画像を挿入説明

颜色映像的调整

  • 颜色映像就是矩阵,意味着你可以像其他数组那样对它们进行操作。函数brighten就利用这一点通过调整一个给定的颜色映像来增加或减少暗色的强度。brighten(n)(0<n<=1)使当前颜色映像变亮;而bnghten(n)(-1<=n<=0)使它变暗;brighten(n)后加一个brighten(-n)使颜色映像恢复原来状态。newmap=brighten(cmap,n)命令创建一个比当前颜色映像更暗或者更亮的新的颜色映像,而并不改变当前的颜色映像。newmap=brighten(cmap,n)命令对指定的颜色映像创建一个已调整过的式样,而不影响当前的颜色映像或指定的颜色映像。
  • 可以通过生成m×3的矩阵mymap来建立用户自己的颜色映像,并用colormap(mymap)来安装它。颜色映像矩阵的每一个值都必须在0和1之间。如果企图用大于或小于3列的矩阵或者包含着比0小比1大的任意值,函数colormap会提示一个错误然后退出。
  • 通常,颜色映像进行过调节,把数据从最小扩展到最大,也就是说整个颜色映像都用于绘图。有时也许想改变颜色使用的方法。函数caxis代表颜色轴,因为颜色增加了另一个维数,它允许对数据范围的一个子集使用整个颜色映像或者对数据的整个集合只使用当前颜色映像的一部分。
  • [cmin,cmax]=caxis返回映射到颜色映像中第一和最后输入项的最小和最大的数据。它们通常被设成数据的最小值和最大值。例如,函数mesh(peaks)会画出函数peaks的网格图,并把颜色轴caxis设为[-6.5466,8.0752],即z的最小值和最大值。这些值之间的数据点使用从颜色映像中经插值得到的颜色
  • caxis([cmin,cmax])对cmin和cmax范围区内的数据使用整个颜色映像。比cmax大的数据点用与cmax值相关的颜色绘图,比cmin小的数据点的颜色用与cmin值相关的颜色绘图。如果小于min(data)和/或cmax大于max(data),那么与cmin和/或cmax点相关的颜色将永远用不到。也就是说,只用到和数据相关的那一部分颜色映像。caxis('auto')设置cmin和cmax的默认值。
% 人为增加一个颜色的维度
[X,Y,Z] = sphere;
C = Z;surf(X,Y,Z,C)
caxis([-1 3])

ここに画像を挿入説明

三维表面图形的着色

  • 三维表面图实际上就是在网格图的每一个网格片上涂上颜色。surf函数用默认的着色方式对网格片着色。除此之外,还可以用shading命令来改变着色方式。
  • shading faceted命令:将每个网格片用其高度对应的颜色进行着色,但网格线仍保留着,其颜色是黑色。这是系统的默认着色方式。
  • shading flat命令:将每个网格片用同一个颜色进行着色,且网格线也用相应的颜色,从而使得图形表面显得更加光滑。
  • shading interp命令:在网格片内采用颜色插值处理,得出的表面图显得最光滑。

三种着色方式的效果展示

[x,y,z]=sphere(30);
colormap(flag);
subplot(1,3,1);
surf(x,y,z);
axis equal
subplot(1,3,2);
surf(x,y,z);shading flat;
axis equal
subplot(1,3,3);
surf(x,y,z);shading interp;
axis equal

ここに画像を挿入説明

光照控制

ここに画像を挿入説明

  • light('color',optionl,'style',option2',position',option3):灯光设置。在该指令使用前,采用的是等强度各处相等的漫射光。一旦该指令被执行,虽然光源本身并不出现,但图形上“轴"、“面”等子对象所有与光有关的属性(如背景光、边缘光)都被激活。
  • option1:可采用RGB三元组或相应的色彩字符,如[1 0 0]或'r'都代表红光。
  • option2:有两个取值:'infimte'和'local'。前者表示无穷远光,后者为近光。
  • option3:总为直角坐标的三元组形式。对远光,它表示光线穿过该点射向原点;对近光,它表示光源所在位置
  • lightingoptions:点灯モード:このコマンドは、光だけ命令実行後に適用されます。オプションがあります
    値の4種類。
    • フラット:均一主ファセットを備え、各オブジェクトの画像の人物の顔に当たる光を発します。これはデフォルトのモードです。
    • gouraund:最初の頂点色の補間、その後、補間された頂点を探して線引き。パフォーマンスのためのサーフェス
    • フォン:各ピクセルに頂点法線を補間した後、反射計算します。最高のパフォーマンスを、より多くの時間がかかり
    • なし:すべてのライトがオフになっています。
  • 素材のオプション:事前に定義された反射モードを使用します。ユーザの利便性として、MATLABは、反射モード、すなわち値オプションの4つの事前定義された表面を提供します。
    • 光沢:オブジェクト明るいです。大型ミラーを共有し、光の反射光の色は、色に依存します。
    • 鈍い:目的は、比較的薄暗いです。大きなシェアを拡散なし、鏡面ハイライトのみ反射色光の色に依存します。
    • 金属:金属光沢を持つオブジェクトを作ります。反射鏡の大型株、背景光と迷光の小さいシェア。光源とパターン面の反射色の両方。これがデフォルトのモードです。

% 示例1:
figure(1);
[x,y,z]=peaks;
surf(x,y,z);
shading interp;
light('Color',[1 0 1],'Style','local','Position',[-4,-4,10])
% 示例2:
figure(2);
[X,Y,Z]=sphere(40);
colormap(jet)
subplot(1,2,1);surf(X,Y,Z);shading interp
light ('position',[0 -10 1.5],'style','infinite')
lighting  phong
material shiny
subplot(1,2,2);surf(X,Y,Z,-Z);shading flat
light;lighting flat
light('position',[-1,-1,-2],'color','y')
light('position',[-1,0.5,1],'style','local','color','w')
% 示例三
figure(3);
[x,y,z]=peaks(20);
subplot(1,2,1);
surf(x,y,z)
shading interp;
material([0.2,0.3,0.6,10,0.4]);
light('color','r','position',[0 1 0],'style','local')
lighting phong
subplot(1,2,2);
surf(x,y,z)
shading flat;
material shiny;
light('color','w','position',[-1 0.5 1],'style','local')
lighting flat

ここに画像を挿入説明

おすすめ

転載: www.cnblogs.com/cloud-ken/p/11708850.html