1. 程式人生 > >matlab練習程序(渲染三原色)

matlab練習程序(渲染三原色)

ear image for clear mgr 點光源 div nor 三個點

這裏我用的空間是x向右為正,y向下為正,z向屏幕裏面為正。相當於標準右手系繞x軸旋轉了180度。

將三個點光源放在

r = [0.3,0,0.5];
g = [0.3,-0.5*cos(pi/6),-0.5*sin(pi/6)];
b = [0.3,0.5*cos(pi/6),-0.5*sin(pi/6)];

這三個位置上,向四周發射光線,取光線到y-z平面的模的倒數作為光的強度。

圖像如下:

技術分享圖片

程序如下:

clear all;
close all;
clc;

r = [0.3,0,0.5];
g = [0.3,-0.5*cos(pi/6),-0.5*sin(pi/6)];
b = [0.3,0.5*cos(pi/6
),-0.5*sin(pi/6)]; imgr1=[];imgr2=[]; imgg1=[];imgg2=[]; imgb1=[];imgb2=[]; for y=-1:0.004:1 imgr1=[];imgg1=[];imgb1=[]; for z=-1:0.004:1 pm=[0,y,z]; lightr=pm-r; lightg=pm-g; lightb=pm-b; imgr=1/norm(lightr); imgg=1/norm(lightg); imgb
=1/norm(lightb); imgr1=[imgr1 imgr]; imgg1=[imgg1 imgg]; imgb1=[imgb1 imgb]; end imgr2=[imgr2;imgr1]; imgg2=[imgg2;imgg1]; imgb2=[imgb2;imgb1]; end [h w]=size(imgr2); img=zeros(h,w,3); img(:,:,1) = mat2gray(imgr2); img(:,:,
2) = mat2gray(imgg2); img(:,:,3) = mat2gray(imgb2); imshow(img) imwrite(img,img.png)

matlab練習程序(渲染三原色)