水晶藍蓮花(Matlab實現)
function crystall
hold on
for i=1:50
len=rand(1)*8+5;
tempV=rand(1,3)-0.5;
tempV(3)=abs(tempV(3));
tempV=tempV./norm(tempV).*len;
tempEpnt=tempV;
drawCrystal([0 0 0],tempEpnt,pi/6,0.8,0.1,rand(1).*0.2+0.2)
disp(i)
end
ax=gca;
ax.XLim=[-15,15];
ax.YLim=[-15,15];
ax.ZLim=[-2,15];
grid on
ax.GridLineStyle='--';
ax.LineWidth=1.2;
ax.XColor=[1,1,1].*0.4;
ax.YColor=[1,1,1].*0.4;
ax.ZColor=[1,1,1].*0.4;
ax.DataAspectRatio=[1,1,1];
ax.DataAspectRatioMode='manual';
ax.CameraPosition=[-67.6287 -204.5276 82.7879];
end
function drawCrystal(Spnt,Epnt,theta,cl,w,alpha)
%plot3([Spnt(1),Epnt(1)],[Spnt(2),Epnt(2)],[Spnt(3),Epnt(3)])
mainV=Epnt-Spnt;
cutPnt=cl.*(mainV)+Spnt;
cutV=[mainV(3),mainV(3),-mainV(1)-mainV(2)];
cutV=cutV./norm(cutV).*w.*norm(mainV);
cornerPnt=cutPnt+cutV;
cornerPnt=rotateAxis(Spnt,Epnt,cornerPnt,theta);
cornerPntSet(1,:)=cornerPnt';
for ii=1:3
cornerPnt=rotateAxis(Spnt,Epnt,cornerPnt,pi/2);
cornerPntSet(ii+1,:)=cornerPnt';
end
for ii=1:4
jj=mod(ii,4)+1;
fill33(Spnt,cornerPntSet(ii,:),cornerPntSet(jj,:),alpha)
fill33(Epnt,cornerPntSet(ii,:),cornerPntSet(jj,:),alpha)
end
end
function fill33(p1,p2,p3,alpha)
fill3([p1(1),p2(1),p3(1)],[p1(2),p2(2),p3(2)],[p1(3),p2(3),p3(3)],...
[0 71 177]./255,'FaceAlpha',alpha,'EdgeColor',[0 71 177]./255.*0.8,'EdgeAlpha',0.6,...
'EdgeLighting','gouraud','SpecularStrength',0.3)
end
function newPnt=rotateAxis(Spnt,Epnt,cornerPnt,theta)
V=Epnt-Spnt;V=V./norm(V);
u=V(1);v=V(2);w=V(3);
a=Spnt(1);b=Spnt(2);c=Spnt(3);
cornerPnt=[cornerPnt(:);1];
rotateMat=[u^2+(v^2+w^2)*cos(theta) , u*v*(1-cos(theta))-w*sin(theta), u*w*(1-cos(theta))+v*sin(theta), (a*(v^2+w^2)-u*(b*v+c*w))*(1-cos(theta))+(b*w-c*v)*sin(theta);
u*v*(1-cos(theta))+w*sin(theta), 外匯跟單gendan5.comv^2+(u^2+w^2)*cos(theta) , v*w*(1-cos(theta))-u*sin(theta), (b*(u^2+w^2)-v*(a*u+c*w))*(1-cos(theta))+(c*u-a*w)*sin(theta);
u*w*(1-cos(theta))-v*sin(theta), v*w*(1-cos(theta))+u*sin(theta), w^2+(u^2+v^2)*cos(theta) , (c*(u^2+v^2)-w*(a*u+b*v))*(1-cos(theta))+(a*v-b*u)*sin(theta);
0 , 0 , 0 , 1];
newPnt=rotateMat*cornerPnt;
newPnt(4)=[];
end
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69946337/viewspace-2857012/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 藍蓮花&多準:2018天貓雙11品牌力對決榜單
- sobel運算元,matlab實現Matlab
- 實現一個煙花效果
- 奇異值分解以及matlab實現Matlab
- 主成分分析及其matlab實現Matlab
- Matlab 實現介面相應滑鼠事件Matlab事件
- 一場櫻花雨(Python實現)Python
- FFT演算法實現與分析MATLABFFT演算法Matlab
- iOS藍芽開發 Bluetooth藍芽CoreBluetooth 藍芽中心裝置的實現 藍芽外設的實現 有DemoiOS藍芽
- threejs+vue3實現煙花效果JSVue
- 信創、密改雙領域的主力軍!海泰紅蓮花國密瀏覽器瀏覽器
- 蟻群演算法原理及Matlab實現演算法Matlab
- 排隊論演算法的matlab實現演算法Matlab
- 運籌學——matlab實現單純形法Matlab
- Matlab實現模擬調製與解調Matlab
- 春節將至,喜慶的煙花安排上(js實現煙花)JS
- 國家級黑客組織“海蓮花” 攻陷寶馬,汽車工業成APT新目標黑客APT
- “海蓮花”APT報告:攻擊中國政府海事機構的網路空間威脅APT
- 圖論最短路徑問題與matlab實現圖論Matlab
- matlab實現調整圖片的對比度Matlab
- 貝塞爾曲線原理、推導及Matlab實現Matlab
- Matlab與自己實現的平滑演算法對比Matlab演算法
- matlab實現人臉識別(數學基礎原理)Matlab
- 影像壓縮編碼碼matlab實現——DM編碼Matlab
- 影像壓縮編碼碼matlab實現——行程編碼Matlab行程
- Android:藍芽實現一對一聊天Android藍芽
- 使用Kubernetes和Istio實現藍綠部署
- 鮮花:真實
- 網線水晶頭怎麼接?詳細教您網線水晶頭的接法圖解圖解
- 量子圖形加密演算法的MATLAB程式碼實現加密演算法Matlab
- 差分進化演算法介紹及matlab實現演算法Matlab
- 影像壓縮編碼碼matlab實現——算術編碼Matlab
- 影像壓縮編碼碼matlab實現——變換編碼Matlab
- 附032.Kubernetes實現藍綠髮布
- 棒呆!如何用css3實現煙花綻放效果CSSS3
- MATLAB 檢驗資料正態分佈及程式碼實現Matlab
- 影像壓縮編碼碼matlab實現——常用引數計算Matlab
- MATLAB神經網路工具箱(程式碼簡單實現)Matlab神經網路