用MATLAB一直画直线竟然得到了简单的禅绕画,论一直画直线的人有多无聊

article/2025/10/5 1:47:45

之前看过一个视频,有个人把纸面分割成一个一个三角后一直画直线,慢慢的图纸上的图案变得复杂了起来,大概是像下面这样:

在这里插入图片描述

在这里插入图片描述
上面这个图便是我用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<150tempPos=randi([1,size(preSet,1)],1);selectedPnt=preSet(tempPos,:);dis=sqrt(sum((edgeList-selectedPnt).^2,2));candidate=dis>=R&dis<=2*R;pntSet=edgeList(candidate,:);flag=0;for j=1:size(pntSet,1)pnt=pntSet(j,:);dis=sqrt(sum((resultSet-pnt).^2,2));if all(dis>=R)resultSet=[resultSet;pnt];preSet=[preSet;pnt];flag=1;endendif flag==1preSet(tempPos,:)=[];times=0;elsetimes=times+1;end endendfunction resultSet=poissonDisk(m,n,r,K,edgePntList)preSet=edgePntList;resultSet=edgePntList;times=0;while times<500tempPos=randi([1,size(preSet,1)],1);selectedPnt=preSet(tempPos,:);theta=rand(K,1).*2*pi;radius=rand(K,1).*r+r;x=radius.*cos(theta)+selectedPnt(1);y=radius.*sin(theta)+selectedPnt(2);flag=0;for j=1:Kpnt=[x(j),y(j)];if pnt(1)>=1&&pnt(2)>=1&&pnt(1)<=n&&pnt(2)<=mif size(resultSet,1)==0resultSet=[resultSet;pnt];preSet=[preSet;pnt];flag=1;elsedis=sqrt(sum((resultSet-pnt).^2,2));if all(dis>=r)resultSet=[resultSet;pnt];preSet=[preSet;pnt];flag=1;   endend endendif flag==1preSet(tempPos,:)=[];times=0;elsetimes=times+1;endend    endfunction drawABC(A,B,C,LW,k1,k2,times)for i=1:timesb=k1*(C-B)+B;plot([A(1);b(1)],[A(2);b(2)],'color',[0,0,0],'Linewidth',LW);B=b;pause(0.001)c=k1*(A-C)+C;plot([B(1);c(1)],[B(2);c(2)],'color',[0,0,0],'Linewidth',LW);C=c;pause(0.001)a=k1*(B-A)+A;plot([C(1);a(1)],[C(2);a(2)],'color',[0,0,0],'Linewidth',LW);A=a;pause(0.001)LW=LW*k2;endendend

http://chatgpt.dhexx.cn/article/q55BXh4B.shtml

相关文章

matlab画图线形

线型说明-实线–虚线:点线-.点划线 标记说明o圆圈加号*星号.点x叉号s方形d菱形^上三角v下三角>右三角<左三角p五角形h六角形 颜色说明y黄色m品红色c青蓝色r红色g绿色b蓝色w白色k黑色 plot(x,y1,‘g’,x,y2,‘b–o’,x,y3,‘c*’) 循环设置线形 linestyle{--,-,:,-o,…

matlab画平行坐标轴的直线

想要在普通图形的基础上添加平行于坐标轴的直线 clc clear xmin 2000 xmax 2120 ymin 0 ymax 16 x[2020 2040 2060 2080 2100 2110]; y[1.3 2 3.5 5.8 10 14.8]; xxlinspace(2012,2110); yyspline(x,y,xx); plot(xx,yy,-c,LineWidth,3) axis([xmin xmax ymin ymax]) grid o…

matlab中的画线函数line()

line()函数可以在画布中画一些辅助线。 line([起点横坐标&#xff0c;终点横坐标],[起点纵坐标&#xff0c;终点纵坐标])&#xff0c; line([1,2],[3,4])将画出&#xff08;1,3&#xff09;到(2,4)的一条直线&#xff0c;而不是(1,2)到(3,4)。 举个栗子&#xff1a; subplot…

Matlab如何画竖线图

目录 前言第一种[^1]第二种[^2]第三种总结 前言 主要介绍3种画竖线图的方法&#xff0c;使用工具为MATLAB 2020a。 第一种1 x 1:3; y [1,5,6]; %5为在2点的y值 n length(x); for i 1:nplot([x(i),x(i)],[0,y(i)],b);hold on end xlim([0 5])运行结果&#xff1a; 第二种2…

MATLAB同时画多条直线段/两点画线

使用函数&#xff1a; line&#xff1a;创建线条图形 语法格式&#xff1a; 二维线段&#xff1a;line(x,y) &#xff0c;三维线段&#xff1a;line(x,y,z) 使用方法&#xff08;以三维为例&#xff09;&#xff1a; 如果 x 、y 和z是具有相同长度的向量&#xff0c;则 li…

Matlab画x=a,y=b直线

画一般直线可直接使用line&#xff0c;line(x,y) x [3 2]; y [15 12]; line(x,y); 但画xa,yb这种特殊直线&#xff0c;可以用plot(x,y)&#xff0c;高级用法是xline(a);yline(b) xline(3.4); yline(4.5); 而plot(x,y)用法如下&#xff1a;对于xa&#xff1a; x[1,1];%表示…

matlab中绘制平行于坐标轴的直线

有时候需要绘制平行于坐标轴的一条直线&#xff0c;那有没有什么简便的方法呢&#xff1f;通过在plot&#xff08;&#xff09;函数加入参数就可以&#xff0c;代码如下&#xff1a; x0:0.1:2*pi; %x的取值生成 ysin(x); %ysin(x)函数 plot(x,y); %绘制图形 ylimget(gca,Y…

MySQL安装失败问题

MySQL的安装和配置是一件非常简单的事&#xff0c;但是在操作过程中也可能出现问题&#xff0c;特别是初学者。 问题1&#xff1a;无法打开MySQL8.0软件安装包或者安装过程中失败&#xff0c;如何解决&#xff1f; 在运行MySQL8.0软件安装包之前&#xff0c;用户需要确保系统…

Linux云服务器:MySQL安装失败、多种错误总结

文章目录 错误经历解决收获 错误经历 遇到的错误一览&#xff1a;以下错误和对应的方案可能不一样&#xff0c;但都尝试了。 Failed to start mysqld.service: Unit not found 解决方法&#xff1a;有拷贝路径的、到某个路径下自建一个Unit文件的&#xff0c;安装mariaDB的&am…

MySQL安装失败,如何完全卸载MySQL

MySQL安装失败&#xff0c;再安装时&#xff0c;必须将之前安装的全部卸载干净&#xff0c;在可以进行下次安装。 eg&#xff1a; 下面是具体步骤&#xff1a; 第一步&#xff1a;先去控制面板中&#xff0c;将MySQL卸载 第二步&#xff1a;到安装目录下&#xff0c;将MySQL文…

数据库安装mysql失败解决方案

Mysql数据库安装最后一步总是出错怎么办 之前为了完成大学毕业设计准备做一个JavaWeb的项目,但是在安装数据库的时候总是出错&#xff0c;网上的很多办法都试了&#xff0c;卸载重新安装&#xff0c;修改注册表等等&#xff0c;后来才发现是因为电脑里边一个隐藏的文件夹没有删…

mysqlclient安装失败解决方案

最近新建了几个虚拟环境安装mysqlclient都不成功 按提示安装了visual studio、升级pip后还是报错 解决方案&#xff1a; 1.https://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient 找到对应py版本和位数的安装包&#xff08;我的是py3.7&#xff0c;64位&#xff09; 下载…

MySQL8.0安装失败

总结一下问题&#xff1a;主要看是哪里失败了。 //如果是lnitializing database (may take a long time) 先看看安装目录有没有中文&#xff0c;如果没有中文那就看看你的计算机名称是不是中文&#xff08;一般点设置-系统就能看见&#xff09;这些地方都不可以有中文出现。…

MySQL安装失败的几个小问题

1.问题&#xff1a;在安装中&#xff0c;显示start service失败&#xff08;首次安装&#xff09; 解决方法&#xff1a;管理中打开服务&#xff0c;找到MySQL80服务&#xff0c;双击打开&#xff0c;点击登录界面&#xff0c;选中本地系统账户。如图 2.问题&#xff1a;在安装…

完全干净卸载mysql,解决mysql重新安装失败问题

因需升级mysql版本,因此需要删除之前安装的版本&#xff0c;若卸载不完全&#xff0c;则新版本的mysql就会安装失败&#xff0c;因此总结以下卸载步骤&#xff1a; 1、停止Mysql服务&#xff0c;以管理员打开命令窗口&#xff0c;输入 net stop mysql会看到服务停止提示&#…

使用mysql Installer安装失败处理办法

忠告&#xff1a;mysql下载还是不要安装最新版的&#xff0c;需要跟依赖环境匹配&#xff1b;安装前关掉防火墙。 mysql安装失败&#xff1a;注意这里的依赖环境要配置好。 vs2017下载地址 https://docs.microsoft.com/zh-cn/visualstudio/releasenotes/vs2017-relnotes 错误1…

Mysql安装步骤以及安装失败的解决方法

&#xff11;、打开下载的mysql安装文件mysql-5.5.27-win64.zip&#xff0c;双击解压缩&#xff0c;运行“setup.exe”。 2、选择安装类型&#xff0c;有“Typical&#xff08;默认&#xff09;”、“Complete&#xff08;完全&#xff09;”、“Custom&#xff08;用户自定义…

解决Mysql安装出错

最近想换一个高级一点版本的mysql玩玩&#xff0c;但是却安装失败了,话说卸载mysql是一件冒险的事情。相信很多小伙伴们也经历过mysql安装失败后尝试无果后&#xff0c;产生卸载mysql后重新安装mysql的念头&#xff0c;尝试卸载后发现无法卸载干净&#xff0c;然后呢卸载不干净…

《MySQL安装流程详解》及《MySQL安装一直失败,重新安装显示已安装》

《MySQL安装流程详解》及《MySQL安装一直失败&#xff0c;重新安装显示已安装》 本文由博主经过查阅网上资料整理总结后编写&#xff0c;如存在错误或不恰当之处请留言以便更正&#xff0c;内容仅供大家参考学习。 MySQL安装流程(两种方式) MySQL安装方式主要可以分为两种&…

MySQL 安装报错的解决方法

MySQL 安装报错的解决方法 前言 mysql 使用的是官网下载的安装包&#xff0c;mysql-installer-community-8.0.25.0.msi &#xff0c;第一次安装时很顺利&#xff0c;因为某些原因要卸载重新安装。在重新安装时出现错误。错误提示如下 Beginning configuration step: Writing …