最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

matlab實現(xiàn)繪制玫瑰花球的示例代碼

 更新時間:2023年08月21日 10:25:42   作者:slandarer  
這篇文章主要介紹了如何利用matlab實現(xiàn)繪制玫瑰花球,文中的示例代碼講解詳細,對我們學習Matlab有一定的幫助,需要的可以參考一下

效果如下:

在這里插入圖片描述

在這里插入圖片描述

原理

玫瑰繪制

要畫花球我們要先會繪制一朵花:

在這里插入圖片描述

如何畫一朵花可以看看這篇:MATLAB 3D玫瑰花繪制

三維坐標變化

主要用下面的坐標變化方法:

正十二面體球

想像這里有一個正十二面體球,我們把每一面放上一朵花,也就是說每兩朵花之間夾角是pi-acos(-1/sqrt(5)),我們可以通過多次x軸旋轉(zhuǎn)和多次z軸旋轉(zhuǎn)將每朵花放到合適的角度

在這里插入圖片描述

完整代碼

function roseBall
clear;clc
%曲面數(shù)據(jù)計算
%==========================================================================
[x,t]=meshgrid((0:24)./24,(0:0.5:575)./575.*20.*pi+4*pi);
p=(pi/2)*exp(-t./(8*pi));
change=sin(15*t)/150;
u=1-(1-mod(3.6*t,2*pi)./pi).^4./2+change;
y=2*(x.^2-x).^2.*sin(p);
r=u.*(x.*sin(p)+y.*cos(p));
h=u.*(x.*cos(p)-y.*sin(p));
%顏色映射表
%==========================================================================
hMap=(h-min(min(h)))./(max(max(h))-min(min(h)));
col=size(hMap,2);
colorList=[0.0200    0.0400    0.3900
         0    0.0900    0.5800
         0    0.1300    0.6400
    0.0200    0.0600    0.6900
         0    0.0800    0.7900
    0.0100    0.1800    0.8500
         0    0.1300    0.9600
    0.0100    0.2600    0.9900
         0    0.3500    0.9900
    0.0700    0.6200    1.0000
    0.1700    0.6900    1.0000];
% colorList=[0.2100    0.0900    0.3800
%     0.2900    0.0700    0.4700
%     0.4000    0.1100    0.4900
%     0.5500    0.1600    0.5100
%     0.7500    0.2400    0.4700
%     0.8900    0.3200    0.4100
%     0.9700    0.4900    0.3700
%     1.0000    0.5600    0.4100
%     1.0000    0.6900    0.4900
%     1.0000    0.8200    0.5900
%     0.9900    0.9200    0.6700
%     0.9800    0.9500    0.7100];
colorFunc=colorFuncFactory(colorList);
dataMap=colorFunc(hMap');
colorMap(:,:,1)=dataMap(:,1:col);
colorMap(:,:,2)=dataMap(:,col+1:2*col);
colorMap(:,:,3)=dataMap(:,2*col+1:3*col);
    function colorFunc=colorFuncFactory(colorList)
        xx=(0:size(colorList,1)-1)./(size(colorList,1)-1);
        y1=colorList(:,1);y2=colorList(:,2);y3=colorList(:,3);
        colorFunc=@(X)[interp1(xx,y1,X,'linear')',interp1(xx,y2,X,'linear')',interp1(xx,y3,X,'linear')'];
    end
%曲面旋轉(zhuǎn)及繪制
%==========================================================================
surface(r.*cos(t),r.*sin(t),h+0.35,'EdgeAlpha',0.05,...
    'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
hold on
surface(r.*cos(t),r.*sin(t),-h-0.35,'EdgeAlpha',0.05,...
    'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
Xset=r.*cos(t);
Yset=r.*sin(t);
Zset=h+0.35;
yaw_z=pi*72/180;
roll_x=pi-acos(-1/sqrt(5));
R_z_2=[cos(yaw_z),-sin(yaw_z),0;
    sin(yaw_z),cos(yaw_z),0;
    0,0,1];
R_z_1=[cos(yaw_z/2),-sin(yaw_z/2),0;
    sin(yaw_z/2),cos(yaw_z/2),0;
    0,0,1];
R_x_2=[1,0,0;
     0,cos(roll_x),-sin(roll_x);
     0,sin(roll_x),cos(roll_x)];
[nX,nY,nZ]=rotateXYZ(Xset,Yset,Zset,R_x_2);
surface(nX,nY,nZ,'EdgeAlpha',0.05,...
'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
for k=1:4
    [nX,nY,nZ]=rotateXYZ(nX,nY,nZ,R_z_2);
    surface(nX,nY,nZ,'EdgeAlpha',0.05,...
    'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
end   
[nX,nY,nZ]=rotateXYZ(nX,nY,nZ,R_z_1);
for k=1:5
    [nX,nY,nZ]=rotateXYZ(nX,nY,nZ,R_z_2);
    surface(nX,nY,-nZ,'EdgeAlpha',0.05,...
    'EdgeColor',[0 0 0],'FaceColor','interp','CData',colorMap)
end   
%--------------------------------------------------------------------------
    function [nX,nY,nZ]=rotateXYZ(X,Y,Z,R)
        nX=zeros(size(X));
        nY=zeros(size(Y));
        nZ=zeros(size(Z));
        for i=1:size(X,1)
            for j=1:size(X,2)
                v=[X(i,j);Y(i,j);Z(i,j)];
                nv=R*v;
                nX(i,j)=nv(1);
                nY(i,j)=nv(2);
                nZ(i,j)=nv(3);
            end
        end
    end
%axes屬性調(diào)整
%==========================================================================
ax=gca;
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=[-6.5914  -24.1625   -0.0384];
end

另:補兩張古早之前做的折紙花球:

在這里插入圖片描述

在這里插入圖片描述

我好像在詭異配色的道路上越走越遠了。。。其實后面第二種配色還可以不是嘛 。。。

配色1:

在這里插入圖片描述

配色2:

在這里插入圖片描述

配色3:

在這里插入圖片描述

配色4:

在這里插入圖片描述

配色4的數(shù)據(jù)上下顛倒是這樣的:

在這里插入圖片描述

這幾種顏色大家可以試試看,我真的盡力了。。。。

顏色數(shù)據(jù):

colorList1=[0.2000    0.0800    0.4300
    0.2000    0.1300    0.4600
    0.2000    0.2100    0.5000
    0.2000    0.2800    0.5300
    0.2000    0.3700    0.5800
    0.1900    0.4500    0.6200
    0.2000    0.4800    0.6400
    0.1900    0.5400    0.6700
    0.1900    0.5700    0.6900
    0.1900    0.7500    0.7800
    0.1900    0.8000    0.8100
];
colorList2=[0.1300    0.1000    0.1600
    0.2000    0.0900    0.2000
    0.2800    0.0800    0.2300
    0.4200    0.0800    0.3000
    0.5100    0.0700    0.3400
    0.6600    0.1200    0.3500
    0.7900    0.2200    0.4000
    0.8800    0.3500    0.4700
    0.9000    0.4500    0.5400
    0.8900    0.7800    0.7900
];
colorList3=[0.3200    0.3100    0.7600
    0.3800    0.3400    0.7600
    0.5300    0.4200    0.7500
    0.6400    0.4900    0.7300
    0.7200    0.5500    0.7200
    0.7900    0.6100    0.7100
    0.9100    0.7100    0.6800
    0.9800    0.7600    0.6700
];
colorList4=[0.9500    0.2300    0.6600
    0.7500    0.2100    0.6000
    0.6200    0.2000    0.5700
    0.4500    0.1800    0.5200
    0.3200    0.2100    0.5200
    0.2700    0.3100    0.6000
    0.2500    0.3600    0.6400
    0.1900    0.4800    0.7400
];

后注:兩個面夾角為pi-acos(-1/sqrt(5)),同平面旋轉(zhuǎn)為了五等分要轉(zhuǎn)72度,因而yaw_z,和roll_x取值并不相同,代碼和原文描述已經(jīng)做出相應更改。

到此這篇關于matlab實現(xiàn)繪制玫瑰花球的示例代碼的文章就介紹到這了,更多相關matlab繪制玫瑰花球內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 詳解Qt如何實現(xiàn)一鍵加載qm文件

    詳解Qt如何實現(xiàn)一鍵加載qm文件

    這篇文章主要為大家詳細介紹了Qt實現(xiàn)一鍵加載qm文件的相關方法,文中的示例代碼講解詳細,具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-04-04
  • C語言中查找字符在字符串中第n次出現(xiàn)位置的幾種方法

    C語言中查找字符在字符串中第n次出現(xiàn)位置的幾種方法

    在C語言中,查找一個字符在字符串中第i次出現(xiàn)的位置是一個常見的需求,可以通過多種方法實現(xiàn),下面我將結(jié)合搜索結(jié)果,為你詳細介紹幾種主流方法,并提供一個可直接使用的函數(shù),需要的朋友可以參考下
    2026-01-01
  • C++使用GDAL庫實現(xiàn)Tiff文件的讀取

    C++使用GDAL庫實現(xiàn)Tiff文件的讀取

    這篇文章主要為大家詳細介紹了C++使用GDAL庫實現(xiàn)Tiff文件的讀取的相關知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-03-03
  • 淺談C++不同繼承之間的關系

    淺談C++不同繼承之間的關系

    本文主要介紹了淺談C++不同繼承之間的關系,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • C++ cin.getline及getline()用法詳解

    C++ cin.getline及getline()用法詳解

    這篇文章主要介紹了C++ cin.getline用法及C++ getline()的兩種用法,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 一篇文章帶你了解C語言內(nèi)存對齊

    一篇文章帶你了解C語言內(nèi)存對齊

    在單片機下使用C語言編程時,內(nèi)存對齊的知識點必須掌握。掌握內(nèi)存對齊后,可以防止內(nèi)存碎片化,并且證明你有能力優(yōu)化內(nèi)存。嵌入式單片機開發(fā)的后階段,無非就是優(yōu)化內(nèi)存與優(yōu)化代碼執(zhí)行效率。
    2021-08-08
  • 利用Matlab繪制優(yōu)美的k線圖

    利用Matlab繪制優(yōu)美的k線圖

    本期又是一個花里胡哨的數(shù)據(jù)可視化,前兩天刷到了耐克的視覺設計師Gladys Orteza繪制的k線圖作品,把沉悶的股票圖變成了精彩的風景,但是那些大部分是真的完全看不清,我這里挑選了幾個能看清的k線圖風格將其用MATLAB進行了實現(xiàn)
    2022-10-10
  • 基于VS2019配置opencv4.0的方法步驟

    基于VS2019配置opencv4.0的方法步驟

    這篇文章主要介紹了基于VS2019配置opencv4.0的方法步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-08-08
  • 淺析C++中模板的那點事

    淺析C++中模板的那點事

    C++中的模板可分為函數(shù)模板和類模板,而把函數(shù)模板的具體化稱為模板函數(shù),把類模板的具體化成為模板類。下面讓我們分別看看什么是函數(shù)模板和類模板吧
    2013-09-09
  • c++中的繼承關系

    c++中的繼承關系

    繼承呈現(xiàn)了面向?qū)ο蟪绦蛟O計的層次結(jié)構(gòu),體現(xiàn)了由簡單到復雜的認知過程,本文給大家介紹c++中的繼承關系,感興趣的朋友跟隨小編一起看看吧
    2021-07-07

最新評論

威宁| 苗栗县| 铁力市| 昆山市| 泸水县| 西乌| 沙雅县| 读书| 临城县| 白河县| 台北市| 和田县| 梁河县| 确山县| 宜黄县| 视频| 榆中县| 吉安市| 徐汇区| 河东区| 家居| 通山县| 肥西县| 河津市| 花莲县| 固镇县| 仁怀市| 桐柏县| 新民市| 乡城县| 德州市| 绥中县| 老河口市| 四平市| 桐柏县| 华蓥市| 阿巴嘎旗| 巫溪县| 德惠市| 嘉兴市| 五指山市|