基于python创建圆形矩阵(大雾)

某天脑子突然抽筋了,想着既然有方形的矩阵,为什么不来一个圆形的圆阵来储存内容呢,于是就写了一个小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码龄的解释:

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

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

  • 15
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值