希伯特数值与二维坐标的相互转换(python)
希伯特曲线具体干什么的,就不多说了,直接上代码!
class Hilbert:# n 行列数def __init__(self, n ):self.n = ndef rot(self, xy, rx, ry):n = self.nif ry == 0:if rx == 1:xy[0] = n - 1 - xy[0]xy[1] = n - 1 - xy[1]temp = xy[0]xy[0] = xy[1]xy[1] = tempreturndef he_to_xy(self, d, xy): # 返回hilbert数值对应的二维坐标n = self.nt = dxy[0] = xy[1] = 0s = 1while s < n:rx = int(1 & int(t / 2))ry = int(1 & (int(t) ^ rx))self.rot(xy, rx, ry)xy[0] += s * rxxy[1] += s * ryt /= 4s *= 2return xy[1], xy[0]def xy_to_he(self, xy): # 返回二维坐标h对应的hilbert数值n = self.nd = 0s = n / 2while s > 0:if (int(xy[0]) & int(s)) > 0:rx = 1else:rx = 0if (int(xy[1]) & int(s)) > 0:ry = 1else:ry = 0d += s * s * ((3 * rx) ^ ry)self.rot(xy, rx, ry)s /= 2return d
#=========================== 测试 8x8 的 生成结果 ============================
n = 8
xy = [0, 0]
hi = Hilbert(n)
for i in range(0,n):for j in range(0,n):xy[0] = jxy[1] = iprint("%4d"% int(hi.xy2d(xy)), end='')print()
#=========================== 测试 相互转换 ============================
xy1 = [1, 2] # i j 相反
print(hi.xy_to_he(xy1))
print(hi. he_to_xy(4, xy))
结果
0 3 4 5 58 59 60 631 2 7 6 57 56 61 6214 13 8 9 54 55 50 4915 12 11 10 53 52 51 4816 17 30 31 32 33 46 4719 18 29 28 35 34 45 4420 23 24 27 36 39 40 4321 22 25 26 37 38 41 42
13.0
(0, 2)
希伯特数值与二维坐标的相互转换(python)相关推荐
- python 可视化 二维坐标标注等等
python 可视化 二维坐标标注等等 - 蔡军帅 - 博客园https://www.cnblogs.com/caiyishuai/p/9607250.html 大佬的分享,在这里方便自己总结学习,因 ...
- python函数图像平移_旋转、缩放和平移二维坐标?
下面是一个关于矩阵的解决方案(这对于这种计算是有意义的,最后,二维坐标是一列的矩阵!)我是说 缩放非常简单,只需将矩阵的每个元素乘以缩放因子即可:scaled = copy.deepcopy(orig ...
- python画二维散点图-基于python 二维数组及画图的实例详解
1.二维数组取值 注:不管是二维数组,还是一维数组,数组里的数据类型要一模一样,即若是数值型,全为数值型 #二维数组 import numpy as np list1=[[1.73,1.68,1.71 ...
- python键盘输入数组_python 二维数组切割Python读取键盘输入的2种方法
Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.如下: 1.raw_input 2.input raw_input函数raw_input() 函数从标准输入读取一个行,并返 ...
- java坐标移动题目case_用java怎样编写一个二维坐标平移程序
展开全部 java编写二维坐标平移程序,主要是e69da5e887aa62616964757a686964616f31333337626231通过类继承Point2D,使用里面的方法来平移,如下代码: ...
- java 课后习题 二维坐标距离 三角形判断等
知识点: 1.三角形的判断公式 两边之和大于第三边 2.二维坐标两点距离公式 根号[(x1-x2)平方+(y1-y2)平方] 3.JAVA Math.pow(变量,指数); 的运用 4.JAVA Ma ...
- 【JAVA 第四章 流程控制语句】课后习题 二维坐标距离 三角形判断等
知识点: 1.三角形的判断公式 两边之和大于第三边 2.二维坐标两点距离公式 根号[(x1-x2)平方+(y1-y2)平方] 3.JAVA Math.pow(变量,指数); 的运用 4.JAVA Ma ...
- 创建二维数组 以及 python中[0 ]* n与[0 for _ in range(n)]的区别与联系
一.浅拷贝于深拷贝 关于浅拷贝于深拷贝:Python 的深拷贝和浅拷贝 直接赋值:其实就是对象的引用(别名). 浅拷贝(copy):拷贝父对象,不会拷贝对象的内部的子对象. 深拷贝(deepcopy) ...
- C#版二维坐标点按行排序
版权声明:本文为博主原创文章,未经博主允许不得转载.https://blog.csdn.net/mr_frank_xie/article/details/84977398 二维坐标点按行排序的算法思路 ...
最新文章
- EXT调用ASP.NET AJAX WebService
- [Xcode 实际操作]六、媒体与动画-(3)使用CoreImage框架设置图片的单色效果
- 网络登录_发布猫系统登录免费网络推广-绥芬河推广资讯
- ----uni-app之解决HBuilderX安装less成功运行时提示未安装----
- Mac双系统中删除Windows系统教程
- 【cGAN】conditional生成对抗网络--有代码
- JavaScript之DOM对象(Event事件)
- 单链表的合并算法_图解算法:单链表两两反转 | 眼睛会了手就会系列
- 从语音识别到语义识别还有多少路要走?
- MySQL Merge存储引擎
- svn管理ad元件库_AD元器件库服务器管理指南
- win10浏览器闪退_Win10专业版下Edge浏览器闪退的多种解决技巧
- HCSE设计知识点50个
- 身份证号码校验(前端,java)
- 参数检验和非参数检验的区别
- 三国之空城计游戏攻略
- 『实用教程』VSPD虚拟串口工具——从此告别硬件串口调试
- 2.5 知识点 pri文件有啥用
- 【Mac 环境配置】-- 配置JAVA环境
- 如何在Java中将GIF图像转换为PNG等图像格式?试试Aspose