3D绘制动态爱心Matlab

server/2024/11/19 4:55:34/

代码1:动态爱心

function particleHeart1% 调整背景及比例ax=gca;hold onax.DataAspectRatio=[1,1,1];ax.XLim=[-25,25];ax.YLim=[-25,20];ax.Color=[0,0,0];ax.XColor='none';ax.YColor='none';set(gcf,'Color',[0,0,0]);% 散点位置计算函数及扩散函数tFunc=@(n) rand([1,n]).*pi*(2-12e-2)+pi.*6e-2+pi;dFunc=@(t) t(t>2*pi+2e-1|t<2*pi-2e-1);xFunc=@(t) 16.*sin(t).^3;yFunc=@(t) 13.*cos(t)-5.*cos(2.*t)-2.*cos(3.*t)-cos(4.*t);sFunc=@(x,y,b) deal(b.*log(rand(size(x))).*x+x, b.*log(rand(size(y))).*y+y);rFunc1=@(x,y,r) deal(r./1.2./(sqrt(x.^2+y.^2)+1).^1.8.*x+x+rand(size(x))./10,...r./1.2./(sqrt(x.^2+y.^2)+1).^1.8.*y+y+rand(size(y))./10);rFunc2=@(x,y,r) deal(r./1.2./(sqrt(x.^2+y.^2)+1).^1.8.*x+x,r./1.2./(sqrt(x.^2+y.^2)+1).^1.8.*y+y);aFunc=@(n) eval(char([100,105,115,112,40,39,20316,32773,58,115,108,97,110,100,97,114,101,114,39,41]));cFunc=@(n) repmat([255,158,196]./255,[n,1])+repmat([-39,-81,-56]./255,[n,1]).*repmat(rand([n,1]),[1,3]);% 生成随机点t1=dFunc(tFunc(4e3));L1=length(t1);t2=dFunc(tFunc(2e3));L2=length([t1,t2]);t3=dFunc(tFunc(2e3));aFunc(1);[x1,y1]=sFunc(xFunc(t1),yFunc(t1),.05);[x2,y2]=sFunc(xFunc(t2),yFunc(t2),.15);[x3,y3]=sFunc(xFunc(t3).*1.4,yFunc(t3).*1.4,.18);x0=[x1,x2,x3];y0=[y1,y2,y3];% 循环绘图pHdl=scatter(x0,y0,'.','CData',cFunc(length(x0)),'SizeData',8);for i=1:1e10[x1,y1]=rFunc2(x0(1:L1),y0(1:L1),10*sin(i/10*pi));[x2,y2]=rFunc1(x0(L1+1:L2),y0(L1+1:L2),10*sin(i/10*pi));[x3,y3]=rFunc1(x0(L2+1:end),y0(L2+1:end),10*sin((i+10)/10*pi));x=[x1,x2,x3];y=[y1,y2,y3];pHdl.XData=x;pHdl.YData=y;drawnow;pause(.05)end
end

这段代码通过粒子动画的形式绘制了一个动态的爱心,其中包含了爱心的生成和动态变化的效果。

代码2:动态爱心

clear; clc;
n = 100;
t = linspace(0, 2*pi, n);
% 心形图极坐标表示法
x = 16*sin(t).^3;
y = 13*cos(t) - 5*cos(2*t) - 2*cos(3*t) - cos(4*t);
handle = scatter(x, y, '.m');
% 调整背景和范围
ax = gca;
ax.Color = [0, 0, 0];
ax.XColor = 'none';
ax.YColor = 'none';
hold on;
handle0 = scatter(x, y, '.m');
hold off;% 径向有规律缩放
len = 2000;
tt = linspace(0, 2*pi, len);
for i = 1:len% 背景随机一组大点的心形r0 = 10 - abs(normrnd(10, 2, [1, len]) - 10);x0 = r0 * 16.*sin(tt).^3;y0 = r0 .* (13*cos(tt) - 5*cos(2*tt) - 2*cos(3*tt) - cos(4*tt));handle0.XData = 1.2*x0;handle0.YData = 1.2*y0;% 根据距离缩放d = sqrt(x.^2 + y.^2);l = (d - min(d)) / (max(d) - min(d));c = 1 + (2 - 1.8*l)/8.*sin(80*tt(i));handle.XData = c.*x;handle.YData = c.*y;drawnow;pause(0.01);
end

这段代码创建了一个跳动的3D心形图,通过有规律的缩放和抖动来模拟心跳的效果。


http://www.ppmy.cn/server/143079.html

相关文章

【计算机网络】TCP网络特点2

断开连接 四次挥手 原因 TCP 四次挥手是为了满足 TCP 连接的全双工特性:两个方向都可以自由传输 保证数据传输的完整性&#xff1a;两方都完成了数据发送和接收并且都同意断开连接 可靠地终止连接以及避免数据混淆和错误等需求:每个方向都需要单独确认导致四次挥手过程 这些…

matlab 读取csv

需要跳过第一行表头等信息 1、读取整个文件 csvread(FILENAME)%文件路径 文件名2、指定起始位置 csvread(FILENAME, R, C)%从文件的第R行和第C列开始读取数据 逗号分开3、指定数据范围 csvread(FILENAME, R, C, [R1 C1 R2 C2])%读取从(R1, C1)到(R2, C2)范围内的数据注意&am…

SpringBoot - Async异步处理

目录 一、定义 1、同步调用 2、异步调用 二、示例 1、同步调用 执行类&#xff1a; 测试用例&#xff1a; 运行结果&#xff1a; 2、异步调用 &#xff08;1&#xff09;普通调用 执行类&#xff1a; 测试用例&#xff1a; 运行结果&#xff1a; &#xff08;2&…

4.2 Android NDK 基础概念

1 JavaVM和JNIEnv JNI 定义了两个关键数据结构&#xff0c;JavaVM和JNIEnv。这两者本质上都是指向函数表指针的指针。&#xff08;在 C 版本中&#xff0c;它们是具有指向函数表的指针的类&#xff0c;以及指向该表的每个 JNI 函数的成员函数。&#xff09;JavaVM提供了“调用接…

第九部分 :1.STM32之通信接口《精讲》(USART,I2C,SPI,CAN,USB)

本芯片使用的是STM32F103C8T6型号 STM32F103C8T6是STM32F1系列中的一种较常用的低成本ARM Cortex-M3内核MCU&#xff0c;具有丰富的通信接口&#xff0c;包括USART、SPI、I2C等。下面是该芯片上通信接口的管脚分布、每个接口的工作模式、常用应用场景和注意事项。 1. USART (通…

python贪心算法实现(纸币找零举例)

目录 问题描述 贪心策略 Python代码实现 代码解释 示例输出 注意事项 问题描述 给定一组纸币面值和一个目标金额&#xff0c;找出用最少数量的纸币来找零的方法。 贪心策略 每次选择面值最大的纸币&#xff0c;直到无法继续选择为止。 Python代码实现 def min_bills…

从“大吼”到“轻触”,防爆手机如何改变危险油气环境通信?

众所周知&#xff0c;在加油站用手机打电话是被明令禁止的&#xff0c;这是因为手机内部会产生静电或射频火花&#xff0c;可能点燃空气中的油气混合物&#xff0c;导致爆炸或火灾。那么加油站的工作人员如何交流呢&#xff1f;以前他们靠吼&#xff0c;现在有了防爆手机&#…

矩阵的对角化特征值分解

矩阵对角化和特征值分解实际上描述的是同一个过程的不同方面。矩阵对角化 强调的是通过相似变换将矩阵 A A A转化为对角矩阵 D D D。特征值分解 强调的是如何通过矩阵的特征值和特征向量来实现这种对角化。 矩阵对角化 矩阵对角化是指将一个方阵 A A A通过相似变换转化为一个…