之前看过一个视频,有个人把纸面分割成一个一个三角后一直画直线,慢慢的图纸上的图案变得复杂了起来,大概是像下面这样:
上面这个图便是我用matlab模拟的效果,过程很简单,就是用了泊松云盘采点构建三角网格,之后一直在三角型内部画直线即可,
泊松云盘采点可以看一下图片三角化那篇: MATLAB 图片三角风格化(low poly)
三角型画线可以参照一下这一篇: matlab 旋转的三角形
参数说明- rows=560; 画布高度
- cols=750; 画布宽度
- r=min([rows,cols])./6; 两点之间距离
- LW=1.2; 线条初始粗细
- k1=1/8; 取三角型一顶点及另外两点连线1/8处两点做新的连线
- k2=0.8; 线条变细的速度
- t=20; 每个三角型内画3*t个线条
例如将参数r改为r=min([rows,cols])./3;则得到下图:
function tris
rows=560;
cols=750;
r=min([rows,cols])./6;
LW=1.2;
k1=1/8;
k2=0.8;
t=20;
fig=figure('units','pixels',...
'position',[20 60 (cols+1) (rows+1)],...
'Color',[1 1 1]);
ax=axes('Units','pixels',...
'parent',fig,...
'Color',[1 1 1],...
'Position',[0 0 (cols+1) (rows+1)],...
'XLim',[-1 cols+1],...
'YLim',[-1 rows+1],...
'XColor','none',...
'YColor','none');
hold(ax,'on')
bkgMat=ones([rows,cols]);
bkgMat(2:(rows-1),2:(cols-1))=0;
bkgMat(1,cols)=0;bkgMat(1,1)=0;bkgMat(rows,1)=0;bkgMat(rows,cols)=0;
[edgeX,edgeY]=find(bkgMat==1);
edgePntList=[edgeY,edgeX];
edgePntList=poissonEdge(rows,cols,edgePntList,r);
pntList=poissonDisk(rows,cols,r,30,edgePntList);
DT=delaunay(pntList(:,1),pntList(:,2));
triplot(DT,pntList(:,1),pntList(:,2),'Color',[0,0,0],'Linewidth',LW);
pause(0.1)
for k=1:size(DT,1)
A=pntList(DT(k,1),:);
B=pntList(DT(k,2),:);
C=pntList(DT(k,3),:);
drawABC(A,B,C,LW,k1,k2,t)
end
%==========================================================================
function resultSet=poissonEdge(m,n,edgeList,R)
preSet=edgeList;
resultSet=[1,1;n,m;1,m;n,1];
times=0;
while times=R&dis=R)
resultSet=[resultSet;pnt];
preSet=[preSet;pnt];
flag=1;
end
end
if flag==1
preSet(tempPos,:)=[];times=0;
else
times=times+1;
end
end
end
function resultSet=poissonDisk(m,n,r,K,edgePntList)
preSet=edgePntList;
resultSet=edgePntList;
times=0;
while times=1&&pnt(2)>=1&&pnt(1)
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?