Matlab文字球之长安十二时辰

1 篇文章 0 订阅
1 篇文章 0 订阅

使用MATLAB做一个滚动的文字球,文字内容来源于小说《长安十二时辰》片段,至于为什么节选《长安十二时辰》,当然是因为他最近火啊。有兴趣也可以做滚动文字球之百家姓、之千字文、之万物等。废话少说,代码如下:

function changan
%% 球的方程
t1 = linspace(0,2*pi,20);
t2 = linspace(-pi/2,pi/2,20);
[Theta, Pho] = meshgrid(t1,t2);
x = cos(Pho).*cos(Theta);
y = cos(Pho).*sin(Theta);
z = sin(Pho);
%% 读文本及处理
fid=fopen('长安十二时辰.txt','r');
data_changan=fscanf(fid,'%s');
fclose(fid);
expression={',','。',';','?','“','”','、'};
replace={''};
data_new=regexprep(data_changan,expression,replace);%正则表达式
str=data_new(1:400);
%%
ColorMat = jet(200);
id = randi(200,1,400);
surf([x,x(:,1)]/8,[y,y(:,1)]/8,[z,z(:,1)]/8,'FaceColor','r','EdgeColor','None');
camlight;
hold on;
arrayfun(@(i)text(x(i),y(i),z(i),str(i),'Color',ColorMat(id(i),:)),1:400);
axis([-1.1,1.1,-1.1,1.1,-1.1,1.1]);
axis vis3d off;
set(gcf,'WindowButtonMotionFcn',@MyWindowButtonMotionFcn);
hold off;

function MyWindowButtonMotionFcn(hobj, eve)
    cp = get(gca,'CurrentPoint');
    view(cp(1,:));
end
end

效果​如下:
在这里插入图片描述

文字球随着鼠标的滚动而滚动。

​简单说明:第一部分为球的方程;第二部分读取文本《长安十二时辰.txt​》,并使用正则表达式regexprep把其中的标点符号删掉只保留汉字;第三部分使用arrayfun把读取到的文字放到球上,并且设置文字为不同的颜色使文字球好看一点;第四部分设置figure的WindowButtonMotionFcn,当鼠标移动时,执行相应的CallBack函数,响应函数通过获取坐标轴的坐标点CurrentPoint,通过设置图形的当前视点来实现文字球的滚动。

微信公众号:三猫MATLAB

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值