python二维列表排序_使用Python按顺时针方向排序二维坐标列表?

这应该说明问题,给出一个可视化工具

但对于在同一距离上获得一组点的正确入口点来说,这并不总是有效的import random

import pylab

import cmath

from itertools import groupby

pts = [(random.randrange(-5,5), random.randrange(-5,5)) for _ in range(10)]

# for this problem complex numbers are just too good to pass up

z_pts = [ i[0] + 1j*i[1] for i in pts if i != (0, 0)]

z_pts.sort(key = lambda x: abs(x))

gpts = [[*g] for _, g in groupby(z_pts, key = lambda x: abs(x) ) ]

print(*gpts, sep='\n')

spts = [1j/2]

for e in gpts:

if len(e) > 1:

se = sorted(e, key = lambda x: cmath.phase(-x / spts[-1]))

spts += se

else:

spts += e

print(spts)

def XsYs(zs):

xs = [z.real for z in zs]

ys = [z.imag for z in zs]

return xs, ys

def SpiralSeg(a, b):

'''

construct a clockwise spiral segment connecting

ordered points a, b specified as complex numbers

Inputs

a, b complex numbers

Output

list of complex numbers

'''

seg = [a]

if a == 0 or a == b:

return seg

# rotation interpolation with complex numbers!

rot = ( b / a ) ** ( 1 / 30 )

# impose cw rotation direction constraint

if cmath.phase( b / a ) > 0: # add a halfway point to force long way around

plr = cmath.polar( b / a )

plr = (plr[0]**(1/2), plr[1] / 2 - 1 * cmath.pi ) # the rotor/2

a_b = cmath.rect(*plr) * a # rotate the start point halfway round

return SpiralSeg(a, a_b) + (SpiralSeg(a_b, b))

for _ in range(30):

a *= rot

seg.append(a)

return seg

segs = [SpiralSeg(a, b) for a, b in zip(spts, spts[1:])]

pylab.axes().set_aspect('equal', 'datalim')

pylab.scatter(*XsYs(z_pts))

for seg in segs:

pylab.plot(*XsYs(seg))

[(1-2j), (-2-1j)]

[(2-3j)]

[(1+4j)]

[(3+3j)]

[(-3-4j), (3-4j), (4-3j)]

[(1-5j)]

[(-4-4j)]

[0.5j, (-2-1j), (1-2j), (2-3j), (1+4j), (3+3j), (-3-4j), (3-4j), (4-3j), (1-5j), (-4-4j)]

01V9h.png[-1j]

[(-1-1j)]

[(-1-2j), (-1+2j), (2+1j)]

[(-4+0j)]

[(1-4j)]

[-5j, (-4-3j)]

[(1-5j)]

[0.5j, -1j, (-1-1j), (-1-2j), (2+1j), (-1+2j), (-4+0j), (1-4j), (-4-3j), -5j, (1-5j)]

EAlC6.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335226.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机生产工艺,bb肥生产设备制造工艺流程

原标题:bb肥生产设备制造工艺流程BB肥生产设备与有机肥设备相比较而言设备相对简单,因而BB肥便具有投资小的优点,而且因其配方灵活,非常适合我国正在推广的测土配方肥的需要,是一种非常适合我国国情的肥料。在发达国家…

devc++鼠标变成了光标_Excel填充别再用鼠标拖拉了!用这4个方法,效率至少高10倍!...

Hello,各位叨友们好呀!我是叨叨君~根据下表对照一下自己,在Excel中需要批量填充公式的时候,你是不是还在用鼠标拖拉的方法,将光标放在单元格的右下角,然后按鼠标左键,向下拖动,填充完…

运动基元_开发人员的新分布式基元

运动基元面向对象的基元(进程内基元) 作为Java开发人员,我非常熟悉面向对象的概念,例如类,对象,继承,封装,多态性等。除了面向对象的概念之外,我还非常熟悉Java运行时。它…

html5网站 500.19错误,WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?如何解决?...

WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?如何解决?作者:兴邦开发部人气:发表时间:2015年05月18日[文章内容简介]:WIN7操作系统创建IIS后浏览时提示HTTP500.19错误是怎么回事?…

网络位置可以看到另一个人的电脑_计算机组成原理(一)- 冯·诺依曼体系结构...

1 计算机的基本硬件组成早期,DIY一台计算机,要先有三大件CPU内存主板1.1 CPU计算机最重要的核心配件,中央处理器(Central Processing Unit)。计算机的所有“计算”都是由CPU来进行的。CPU是一个超级精细的印刷电路版1.2 内存(Memory)你撰写的程序、打开的…

vaadin_Vaadin提示:以声明方式构建UI

vaadin如果您使用过GWT,那么您可能会发现UiBinder对于设计复杂的UI很有用。 在有关Vaadin的系列文章中,我们希望在Vaadin和GWT之间得出相似之处。 Vaadin提供了多种开箱即用的工具和组件,用于构建复杂且美观的UI。 其中之一是可以像UiBinder那…

关东升python从小白到大牛_《Python从小白到大牛》第3章 第一个Python程序

本章以HelloWorld作为切入点,介绍如何编写和运行Python程序代码。 运行Python程序主要有两种方式: 1.交互式方式运行 2.文件方式运行 本章介绍这两种运行方式实现HelloWorld程序。 使用Python Shell 进入Python Shell可以通过交互…

neo4j 显示名字_Neo4j:绘制“我的名字是……我在工作”图

neo4j 显示名字在过去的几天里,我一直在关注DHH发起的有关“我的名字是……”的推文。 据我了解,其想法是表明在白板上编写采访谜语/艰巨任务是荒谬的。 您好,我叫大卫。 我不会在白板上写气泡排序。 我一直在互联网上查找代码。 我不做谜语…

Final Cut Pro x(FCPX)调色笔记

文章目录一、注意点二、调色流程1. 颜色校正(一级校色)1.1 颜色转换即色彩空间转换1.2 降噪(noise reduction 即NR)1.3 调整曝光和对比度1.4 调整白平衡1.5 饱和度1.6 肤色调整2.二级校色2.1 突出人物主体的方法一2.2 突出人物主体…

axure web组件下载_实践干货:Axure插入图标的4种办法

编辑导读:图标是我们在制作产品原型的时候使用的比较多的一类素材,在日常绘制原型的时候一般是以插入的形式添加到Axure中。本文作者结合自身经验,介绍了四种Axure中引入图标的方法,希望对大家能有所帮助。在日常绘制原型的时候&a…

上师大计算机学院分数线,分数低还想上师范大学?这4所师范院校,二本的分数就够了...

截至目前,全国各省市高考成绩全部公布了,接下来最主要的工作就是填报志愿,选择适合自己的大学和专业。每年到这个时候,就有不少家长和考生问我,自己的分数较低,不够一本线,有没有比较好的师范大…

上古卷轴3晨风职业_巫师3:上古卷轴5老玩家,入手巫师3,体验昆特牌版“实验室”...

今天小编入手了,期待已久的《巫师3》,而作为一个《上古卷轴5》的“老油条”,奇趣君下面说一下,一个老滚5的“老油条”玩《巫师3》是什么样的体验。首先我进入了开场动画,我没有跳过,而是看着他的剧情&#…

MacBook Mac OS 无法识别移动硬盘的解决办法

文章目录方法一、打开系统信息 System Information方法二、打开磁盘工具 Disk Utility方法一、打开系统信息 System Information 打开「系统信息」,点击左侧硬件列表的 USB,在右侧找到你的移动硬盘点击查看,如下图所示: 然后打开…

mysql没有开启binlog能恢复数据吗_一个妹纸rm -rf把公司整个数据库删没了...

经历了两天不懈努力,终于恢复了一次误操作删除的生产服务器数据。对本次事故过程和解决办法记录在此,警醒自己,也提示别人莫犯此错。也希望遇到问题的朋友能找到一丝灵感解决问题。事故背景安排一个妹子在一台生产服务器上安装 Oracle&#x…

头条号个人中心登录_头条号平台上线「插入小程序」功能

头条号平台上线「插入小程序」功能,创作者可在图文、小视频和自定义菜单中插入头条小程序,帐号服务能力和变现能力进一步提升。一、什么是「头条小程序」?「头条小程序」是为内容生产者提供的延伸变现工具,是对创作者内容服务的延…

stearm计算机验证码,steam账户名称怎么取,值得收藏

steam是计算机游戏界最大的数码发行平台,是一个游戏整合下载平台,很多喜欢玩游戏的朋友都会用这个软件,当然也不少刚开始使用这个软件的朋友,这些朋友因为才刚刚接触到这个软件所以不知道steam账户名称怎么取,不要担心…

造完家怎么拆东西_地弹簧玻璃门怎么拆?地弹簧玻璃门拆除注意事项有哪些?...

现如今,我们总可以看到玻璃门的身影,在我们的生活中,玻璃门可以说是随处可见。而对于安装玻璃门,大家了解多少呢?为了更好认识玻璃门,今天就带大家一起走进玻璃门的安装中,告诉大家怎么样拆卸和组装玻璃门…

dubbo provider异步_Dubbo学习(六) Dubbo面试问题

Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务&#xff0c…

测试网页兼容软件,WEB测试兼容性

软件兼容性测试在目前软件测试领域占有很只要的地位,无论B/S架构还是C/S架构的软件都需要进行兼容性测试,充分保证产品的平台无关性,使用户群充分的感受到软件的友好。139WDA属于WEB产品,以下就来总结下WEB测试之兼容性测试。WEB兼…

kafka数据到flume_大数据摄取:Flume,Kafka和NiFi

kafka数据到flume初赛 在构建大数据管道时,我们需要考虑如何吸收出现在通常是Hadoop生态系统大门口的数据量,多样性和速度。 在决定采用哪种工具来满足我们的要求时,诸如可伸缩性,可靠性,适应性,开发时间成…