栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

基于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的时候,画圆圈,,,

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

然后别的什么的潜在的

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

谢谢朋友们!

关于本人CSDN码龄的解释:

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

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498892.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号