基于python创建圆形矩阵(大雾)_圆形矩阵 python_小瓜皮子的博客-程序员秘密

技术标签: 算法  python  github  矩阵  线性代数  

某天脑子突然抽筋了,想着既然有方形的矩阵,为什么不来一个圆形的圆阵来储存内容呢,于是就写了一个小python包,CirMatCoder。。。。。。

不过实施证明矩阵是有矩阵的道理,就像电脑内图片的储存一样,都是以矩形来存储像素点的,对于各种图形的存取,都是在矩形里进行填充形成的,不过如果把圆阵线性化,可能会有一些不同,至少让数据看起来很乱,无章,然后就还是决定写了下,可能也会有别的可能的用处(可能)

先放上GitHub的项目链接  (内含readme说明文档)

GitHub - WhatMelonGua/CirMatCoder: A python package for secret coding

然后,,,虽然很奇怪,我们还是来看下效果

from CirMatCoder import *

Cir = CirMapping(['a','b','c'],7,1,[4,4],['0'])
Cir.ShowCir()

执行输出:


001- .  .  . ['0', '0', '0']
002- .  . ['0', '0', '0', '0', '0']
003- . ['0', '0', '0', '0', '0', '0']
004- . ['0', '0', '0', 'a', 'b', 'c', '0']
005- . ['0', '0', '0', '0', '0', '0']
006- .  . ['0', '0', '0', '0', '0']
007- .  .  . ['0', '0', '0']

这样,我们的数据['a','b','c'],就存在了直径7的圆阵里的 第4行、第4位。元素两两间距为1单位长度

末尾['0']代表的是未输入数据的地方,我们以'0'填充<默认传入数组仅有一个元素时,全填充此元素;而为多个元素时,将按顺序填充元素,具体参考GitHub Readme文档>

然后执行

Cir.AngleSet(math.pi/4,['A','B','C'])
Cir.ShowCir()

获得输出:

001- .  .  . ['0', '0', '0']
002- .  . ['0', '0', '0', '0', '0']
003- . ['0', '0', '0', 'B', 'C', '0']
004- . ['0', '0', '0', 'A', 'b', 'c', '0']
005- . ['0', '0', '0', '0', '0', '0']
006- .  . ['0', '0', '0', '0', '0']
007- .  .  . ['0', '0', '0']

这样,我们在圆阵的45°方向,插入了'A','B','C'三个数据...

但是这有个错误,AngleSet是取角度sin,cos函数结果的最小整值,有时候两个相邻的数据计算得到的 行、列 数 是一样的,导致后边的数据把前边的覆盖,比如:

Cir = CirMapping([],11,1)
Cir.model='Debug'   #model 设置为 'Debug',一些函数会自动执行并输出结果,如下边的AngleSet
Cir.AngleSet(math.pi/3,[1,2,3,4,5,6])

输出

001- .  .  .  . [0, 0, 0, 0]
002- .  .  . [0, 0, 0, 0, 0, 0, 6]
003- .  . [0, 0, 0, 0, 0, 0, 5, 0, 0]
004- . [0, 0, 0, 0, 0, 0, 3, 0, 0, 0]
005- . [0, 0, 0, 0, 0, 2, 0, 0, 0, 0]
006- . [0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0]
007- . [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
008- . [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
009- .  . [0, 0, 0, 0, 0, 0, 0, 0, 0]
010- .  .  . [0, 0, 0, 0, 0, 0, 0]
011- .  .  .  . [0, 0, 0, 0]

可以看到,4没了,被5覆盖掉了,所以这种插入方式是存在一个插入长度的,过了就会造成丢失,不过丢失的位数是对应圆阵的 直径D、数据间隔d 可以确定的。

然后这个阵呢。。。还可以镜像<原理就是数组reverse逆排序>

还可以转90°<先转为矩阵再转90°,然后再转回圆阵,然后会造成圆阵最上端数据丢失>

为了防止数据丢失,就又写了一个函数

ProtectCir(cir),可以对存满数据的圆阵扩充,让他上下左右各多一行一列。。。保证内部数据不丢失,外圈的会丢失。

因此这个包也包含了矩阵的一些功能,大家可以去GitHub了解更多

至于应用这方面吗。。。

或许大家用PIL<python的图片处理库>的时候,画圆圈,,,

大家可以试着把PIL返回的rgb索引值以data存在圆阵里,然后操作吧。。。。

然后别的什么的潜在的

真的是兴趣乱做的,大家不要当真

谢谢朋友们!

关于本人CSDN码龄的解释:

首先。。。没有六年,好像是注册的比较早

其实才一年不到,还是半吊子吊过来的啊,不要被忽悠了

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_32100547/article/details/121316465

智能推荐

About email_shenjr12345的博客-程序员秘密

英文邮件礼仪:向教授请教学术问题邮件主题邮件主题(subject)不需要写自己的名字。名字是在邮件系统设置里设定好的,在发件时会替换显示实际地址,所以无需在主题里再写一遍。[关键内容是要在主题里就写明白是否有推荐人,以及主要是什么事。很多教授只看主题。]一个好的标题,要能简洁地概括邮件的目的或内容。如果你对教授的某个研究项目感兴趣,就可以用这个研究方向作标题,例如"Defo

数字ic设计——SPI_spi设计_桐桐花的博客-程序员秘密

SPI总线概念SPI ( Serial Peripheral Interface,串行外围设备接口)是一种同步、全双工、主从式,高速接口(UART是异步)。来自主机或 从机 的数据在时钟上升沿或下降沿同步。主机和从机可以同时传输数据。......

python-文件-基本使用方法_无敌防风镜的博客-程序员秘密

1. 打开文件open()打开文件并以流对象返回失败则提示IOError1.1 准备工作在任意磁盘下新建.txt文件,在文件里随便写点东西。例如:F:\OpenFileDemo.txt1.2 open()方法的基本语法及常用参数file--------------------文件路径mode----------------文件权限encoding-----------以何种编码格式打开(默认:cp936)(常用:utf-8、gbk)open(file, mode='r', buff

C++:C语言实现HTTP的GET和POST请求_c语言发送http请求_TYINY的博客-程序员秘密

转载自:C++:C语言实现HTTP的GET和POST请求 - 方方和圆圆 - 博客园C++:C语言实现HTTP的GET和POST请求阅读目录 HTTP请求和IP/TCP  实现GET请求  实现POST请求:  参考:回到顶部  HTTP请求和IP/TCP  所谓的HTTP协议是基于IP/TCP协议的, 所以要获取远端的html数据只要创建socket对象就足够了;  HTTP是基于IP/TCP加上了网络请求的固定格式, 比如:运行下面代码metho...

错误总结20210902_変态パンツの捆绑_[.]*?的博客-程序员秘密

3.com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $at com.google.gson.internal.bind.ReflectiveTypeAdapterFactoryAdapter.read(ReflectiveTypeAdapterFactory.java:226)atcom.goo

spring cloud Greenwich 学习笔记(四)springcloud config 分布式配置中心_快乐崇拜234的博客-程序员秘密

文章目录概述配置中心服务端配置中心客户端配置刷新-手动刷新配置刷新-全自动刷新概述Spring Cloud Config为分布式系统中的外部配置提供服务器和客户端支持,使用Config Server,您可以在所有环境中管理应用程序的外部属性。  目前也有一些开源的配置中心,比如百度的disconf,阿里的diamand。本文介绍springcloud官方的配置中心springcloud co...

随便推点

04-17.eri-test Wordpress主题还是Java程序员的Vala?_cunbang3337的博客-程序员秘密

哦,科技之神怎么这么逗我...我被困在学习如何创建Wordpress主题或学习Vala for Java Programmers创建ElementaryOS应用程序之间。我该选择哪一个? 哦,技术!可以创建并使用Wordpress主题和模板的人可能还有更多工作,但是使用Vala,您可以使用ElementaryOS应用! 我确实希望有一天成为一名Linux App开发人员,...

vue npm install安装出来的modules版本和package.json中定义的版本不一致_southArbor的博客-程序员秘密

开发时候,升级了引用module的版本,手动修改package.json文件中的版本号,然后删掉原来的module重新npm install,但是重新安装的版本号并不是我package.json中定义的版本,而依然是原来的版本。先说解决方法:删除vue项目根目录下的package-lock.json,重新npm install。问题解决。至于为什么要删除package-lock.jso...

Verilog | SPI通信_初雪白了头的博客-程序员秘密

SPI 串行同步时钟可以设置为不同的极性(Clock Polarity ,CPOL)与相位(Clock Phase ,CPHA)。时钟的极性(CPOL)用来决定在总线空闲时,同步时钟(SCK)信号线上的电位是高电平还是低电平。时钟由 Master 控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后 (SCLK串行时钟线空闲是为高电平,数据在SCLK时钟的。SCLK串行时钟线空闲是为高电平,数据在SCLK时钟的。当时钟相位为 0 时(CPHA=0),在 SCK 信号线的第一个跳变沿进行采样。

在新浪云上建立了一个wordpress独立博客_weixin_34254823的博客-程序员秘密

在很久以前(2年之前),我使用的是新浪博客和网易博客.那都是些垃圾博客,不支持数学公式,而且娱乐性太强.后来我翻.墙到国外的wordpress.com注册了一个博客写数学,但是wordpress自带的数学公式支持很naive,而且作为wordpress.com的普通用户,我没有安装插件的特权,而且wordpress.com长期处于被屏蔽状态,于是我就把那个博客放弃了.后来又使用blogger,bl...

【内网渗透】——内网信息收集之鹏哥教你骚操作_刘—手的博客-程序员秘密

2.1内网信息收集概述我是谁 ——对当前机器角色地判断这是哪——对当前机器所处地网络环境的拓扑结构进行分析和判断我在哪—— 对当前机器所处的区域的判断2.2 收集本机信息内网结构 是什么样的 角色是什么 使用这台机器的角色是什么 安装了什么杀毒软件 通过什么方式上网 是台式还是笔记本2.2.1 手动收集信息本机信息包括操作系统 权限,内网ip地址 ,杀毒软件 端口 服务 补丁 网络连接 共享 会话1,查询网络配置信息获取本机网络配置信息ipconfig / all2,查询操作系

推荐文章

热门文章

相关标签