MATLAB画一把伞

Matlab 复制代码
% 伞的参数

num_ribs = 5; % 伞骨数量修改为5

R = 1; % 伞的半径

height = 0.5; % 伞的高度

handle_length = 2; % 伞柄长度

semicircle_radius = 0.26; % 伞柄末端半圆的半径

% 生成伞叶网格

theta = linspace(0, 2*pi, 100);

phi = linspace(0, pi/2, 50);

[Theta, Phi] = meshgrid(theta, phi);

% 计算伞叶的坐标

X = R * cos(Theta) .* sin(Phi);

Y = R * sin(Theta) .* sin(Phi);

Z = height * cos(Phi);

% 给伞叶添加一些随机波动,模拟褶皱

noise = 0.009 * randn(size(Z));

Z = Z + noise;

% 绘制伞叶

figure;

surf(X, Y, Z, 'FaceColor', 'interp', 'EdgeColor', 'none');

hold on

% 绘制伞骨

for i = 1:num_ribs

theta_rib = (i - 1) * 2*pi / num_ribs;

x_rib = R * cos(theta_rib) * sin(phi);

y_rib = R * sin(theta_rib) * sin(phi);

z_rib = height * cos(phi);

plot3(x_rib, y_rib, z_rib, 'k', 'LineWidth', 2);

hold on

end

% 绘制伞柄

x_handle = [0, 0];

y_handle = [0, 0];

z_handle = [0, -handle_length+0.5];

plot3(x_handle, y_handle, z_handle+[0.5,0.5], 'k', 'LineWidth', 3);

hold on

x_handle = [0, 0];

y_handle = [0, 0];

z_handle = [0, handle_length*0.1];

plot3(x_handle, y_handle, z_handle+[0.5,0.5], 'k', 'LineWidth', 3);

hold on

% 绘制伞柄末端的半圆

semicircle_theta = linspace(0, pi, 50);

x_semicircle = semicircle_radius * cos(semicircle_theta);

y_semicircle = -handle_length * ones(size(semicircle_theta));

z_semicircle = -semicircle_radius * sin(semicircle_theta);

plot3(x_semicircle+0.15+0.12, y_semicircle+2, z_semicircle-1, 'k', 'LineWidth', 3);

% 设置视角和坐标轴

axis equal;

view(3);

box on;

camlight;

lighting gouraud;
相关推荐
黄雪超1 小时前
JVM——Java的基本类型的实现
java·开发语言·jvm
VBA63371 小时前
VBA代码解决方案第二十四讲:EXCEL中,如何删除重复数据行
开发语言
程序猿大波2 小时前
基于Java,SpringBoot,HTML水文水质监测预警系统设计
java·开发语言·spring boot
minji...2 小时前
C语言 指针(2)
c语言·开发语言
Cuit小唐2 小时前
Qt二维码demo
开发语言·qt·命令模式
天堂的恶魔9462 小时前
QT —— 信号和槽(带参数的信号和槽函数)
开发语言·qt
enyp802 小时前
Qt connect第五个参数
开发语言·qt
开开心心就好2 小时前
无限制文本转语音解决方案
开发语言·人工智能·macos·微信·pdf·c#·语音识别
啊吧怪不啊吧3 小时前
C++类和对象(中)
开发语言·c++
鑫—萍3 小时前
C++——入门基础(2)
java·开发语言·jvm·数据结构·c++·算法