当前位置: 首页 > news >正文

python蜂窝状六边形_画多层六边形(小区),蜂窝状,matlab

作者:zfy,转载请注明

画多层六边形,蜂窝状,第一个和第二个参数为最中心小区的横纵坐标,第三个参数为小区半径,第四个为所需画的层数(如果只画第一个六边形拿出程序中底下部分cirliu即可,只一个六边形视为第0层,该参数>=1)。我们通常需要它在一个矩形界面中显示,那么将蜂窝中心放在矩形中心,然后试着运行一个程序,看在半径为r的情况下几层能布满即可。

%%%%%%%%%%%%%%%%%%%%%by

zfy%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function qunliu( xx,yy,r,ceng )

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

hang=linspace(0,2*pi,7);

for

i=1:1:ceng

for j=1:1:length(hang) theta(i,i*j-i+1) = hang(j);

cx(i,i*j-i+1)=sqrt(3)*i*r*cos(theta(i,i*j-i+1)); %这是每层上角度为pi/3,2*pi/3...小区中心

cy(i,i*j-i+1)=sqrt(3)*i*r*sin(theta(i,i*j-i+1));

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if(ceng>=2)

for i=2:1:ceng

for

j=1:1:length(hang)-1 for

k=1:1:i-1 %求那些非pi/3整数倍角度上的中心,依据第n层的是n分点

cx(i,i*j-i+1+k)=((i-k)*cx(i,i*j-i+1)+k*cx(i,i*j+1))/i;

cy(i,i*j-i+1+k)=((i-k)*cy(i,i*j-i+1)+k*cy(i,i*j+1))/i;

end

end

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

zx=cx+xx;

zy=cy+yy;

for i=1:1:ceng

for

j=1:1:6*i

cirliu(zx(i,j),zy(i,j),r);

hold

on;

end

end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

function cirliu(xx,yy,r);

theta = linspace(pi/6,13*pi/6,7);

plot(r*cos(theta)+xx,r*sin(theta)+yy,'g-');

hold on;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

效果展示:比如qunliu(40,50,10,10)

再例如:qunliu(50,50,10,4)

写作过程:

在网上查到了theta = linspace(pi/6,13*pi/6,7);

plot(r*cos(theta)+xx,r*sin(theta)+yy,'g-');

两句画单个六边形的方法,非常巧妙,但却不能画多层,所以我就开始思考怎么画多层。

我想如果知道了一个六边形,那么围绕着它就可以画很多层,所以我需要一个中心(就是中心六边形的中心),还有六边形半径。

之前因为考虑是显示在矩形中,如下:

开始想的时候想按从上到下得到第一排中心,然后第二排,依次下去,但这样如果各个中心的联系性不强,r不同时排数也会不同,从第一排左数第一个不完整的六边形显然不符合要求,它有多少在里面都是不确定的,因为它实在是不够特殊。

我更希望能知道一个中心就知道其他中心,所以我采用了中心小区,然后我就开始找规律。马上我发现围绕着中心小区的第一层:1*6个;第二层:2*6个;第三层:3*6个。

我以中心小区中心为圆心,sqrt(3)*r为半径画圆,

然后很显然第一层小区中心:sqrt(3)*r*cos(pi/3),sqrt(3)*r*cos(2*pi/3),sqrt(3)*r*cos(3*pi/3),...

很容易,但从第二层开始就有新麻烦了。

我再以中心小区中心为圆心,2*sqrt(3)*r为半径画圆,第二层小区只有一部分在此圆上,也就是说我可以得到第1,3,5...11,(13与11的角度相当于2*pi和0,用在算法中可求第12个中心)

第二层小区第1,3,5...个中心:2*sqrt(3)*r*cos(pi/3),2*sqrt(3)*r*cos(2*pi/3),2*sqrt(3)*r*cos(3*pi/3),...

再之后第三层小区只能知道第1,4,7...16个中心,于是我又找规律,

很容易发现,第2层夹的一个中心为夹住它的两个六边形中心连线的2等分点,第3层夹的一个中心为夹住它的两个六边形中心连线的3等分点,第4层夹的一个中心为夹住它的两个六边形中心连线的4等分点...而夹着它们的两个六边形中心就是处在pi/3整数倍的中心,这个之前已经算出来了。

以第三层举例:x1,x2,x3,x4中x1,x4已知,x2=2/3*x1+1/3*x4;x3=1/3*x1+2/3*x4

好啦,这样算法就有啦,然后将它写成程序就好啦,当然细节上还是需要费些功夫的,最后弄完啦,很开心~

相关文章:

  • SharePoint Web Service系列: Add或Update类型为User的项
  • 哲学家就餐问题python_Python实现哲学家就餐问题实例代码
  • SharePoint Web Service系列:获取文档的属性信息
  • 如何设置两个textview 的内容在listview同一行里_西门子触摸屏如何与S7-1200/1500的PLC-SIM离线仿真
  • SharePoint Web Service系列:编写自定义SharePoint Web Services之一
  • 无线鼠标可以强制配对_一款简单的小设备,吉选gesobyte无线鼠标
  • oracle sql查询时间_「Burpsuite练兵场」SQL注入及相关实验(二)
  • SharePoint Web Service系列:编写自定义SharePoint Web Services之二
  • python2clock_Python3 time clock()方法
  • SharePoint Web Service系列: Add或Update其他各种类型的项
  • mysql 视图_mysql中常见的视图操作,你理解了吗?
  • Windows文件操作的直接函数调用
  • python同名包_python去除rpm仓库中同名低版本的包
  • MOSS2007基础:Windows SharePoint Services 3.0中的Web Part
  • 输入代码自动生成流程图_输入示例,自动生成代码:TensorFlow官方工具TF-Coder已开源...
  • [译]前端离线指南(上)
  • __proto__ 和 prototype的关系
  • 【刷算法】从上往下打印二叉树
  • 【知识碎片】第三方登录弹窗效果
  • Js基础——数据类型之Null和Undefined
  • mongo索引构建
  • Rancher如何对接Ceph-RBD块存储
  • Selenium实战教程系列(二)---元素定位
  • Tornado学习笔记(1)
  • 工作中总结前端开发流程--vue项目
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 如何实现 font-size 的响应式
  • 一些css基础学习笔记
  • 字符串匹配基础上
  • TPG领衔财团投资轻奢珠宝品牌APM Monaco
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​软考-高级-系统架构设计师教程(清华第2版)【第20章 系统架构设计师论文写作要点(P717~728)-思维导图】​
  • #pragma once与条件编译
  • #微信小程序(布局、渲染层基础知识)
  • (1)常见O(n^2)排序算法解析
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (第9篇)大数据的的超级应用——数据挖掘-推荐系统
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (一)Linux+Windows下安装ffmpeg
  • (原創) 未来三学期想要修的课 (日記)
  • .gitignore文件_Git:.gitignore
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET/C# 的字符串暂存池
  • .NET/C# 中设置当发生某个特定异常时进入断点(不借助 Visual Studio 的纯代码实现)
  • .NET6 开发一个检查某些状态持续多长时间的类
  • .NET和.COM和.CN域名区别
  • .Net开发笔记(二十)创建一个需要授权的第三方组件
  • @kafkalistener消费不到消息_消息队列对战之RabbitMq 大战 kafka
  • []我的函数库
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [3300万人的聊天室] 作为产品的上游公司该如何?
  • [ASP.NET MVC]如何定制Numeric属性/字段验证消息
  • [ASP]青辰网络考试管理系统NES X3.5
  • [C#][DevPress]事件委托的使用