实现高效的Vector / Point类的最佳方法是什么(甚至更好:是否有一个),可以在

Python 2.7和3.x中使用?

我找到了the blender-mathutils,但它们似乎只支持Python 3.x.然后是this Vector class,使用numpy,但它只是一个3D矢量.使用具有静态属性(x和y)的像kivy’s vector class(sourcecode)的Vector的列表似乎也很奇怪. (有所有这些列表方法.)

目前我正在使用一个扩展了namedtuple的类(如下所示),但这样做的缺点是无法更改坐标.我认为当成千上万的对象移动并且每次都创建一个新的(矢量)元组时,这可能会成为一个性能问题. (对?)

class Vector2D(namedtuple('Vector2D', ('x', 'y'))):

__slots__ = ()

def __abs__(self):

return type(self)(abs(self.x), abs(self.y))

def __int__(self):

return type(self)(int(self.x), int(self.y))

def __add__(self, other):

return type(self)(self.x + other.x, self.y + other.y)

def __sub__(self, other):

return type(self)(self.x - other.x, self.y - other.y)

def __mul__(self, other):

return type(self)(self.x * other, self.y * other)

def __div__(self, other):

return type(self)(self.x / other, self.y / other)

def dot_product(self, other):

return self.x * other.x + self.y * other.y

def distance_to(self, other):

""" uses the Euclidean norm to calculate the distance """

return hypot((self.x - other.x), (self.y - other.y))

编辑:我做了一些测试,似乎使用numpy.array或numpy.ndarray作为矢量太慢了. (例如,获取一个项目需要几乎两倍的时间,更不用说创建一个数组.我认为它更适合于对大量项目进行计算.)

所以,我正在寻找一个轻量级的矢量类,它具有固定数量的字段(在我的例子中只有x和y),可以用于游戏. (如果已经有一个经过充分测试的车轮,我不想重新发明轮子.)

python画画bup_Python中的高效Vector / Point类相关推荐

  1. python画画bup_Python Tkinter.X属性代码示例

    本文整理汇总了Python中Tkinter.X属性的典型用法代码示例.如果您正苦于以下问题:Python Tkinter.X属性的具体用法?Python Tkinter.X怎么用?Python Tki ...

  2. python平方数迭代器_对python中的高效迭代器函数详解

    python中内置的库中有个itertools,可以满足我们在编程中绝大多数需要迭代的场合,当然也可以自己造轮子,但是有现成的好用的轮子不妨也学习一下,看哪个用的顺手~ 首先还是要先import一下: ...

  3. 教你用python在excel中“画画”

    有意思系列----教你用python在excel中画画 一.废话不多说,先看看成品 二.实现思路 1.图片相关知识说明 位图: 位图由一个个像素点组成,每个像素点都有自己的颜色.而我们可以操纵这些像素 ...

  4. 萧井陌 python培训千锋为中钞研究院提供Python培训,助力企业高效数据运营

    随着数字化时代到来,数字化应用所产生的各个维度的数据以几何速度不断递增,对企业来说掌握数据信息,得到有效数据结果,依据结果进行企业判断与决策是关乎企业发展的重中之重,所以,通过企业内训提升员工数据分析 ...

  5. python 物理学中的应用_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

  6. Python培训教程分享:“高效实用” 的Python工具库

    作为一名合格Python技术员,对于Python工具库的使用是少不了的,本期Python培训教程就为大家分享的是""高效实用" 的Python工具库",希望能够 ...

  7. 从15000个Python开源项目中精选的Top30,Github平均star为3707,赶紧收藏!

    翻译 | AI科技大本营(ID:rgznai100) 参与 | SuiSui 继推出2017年机器学习开源项目Top 30榜单后,Mybridge AI又推出了一个Python开源项目Top 30榜单 ...

  8. 收藏!15000个Python开源项目中精选Top30!

    来源:授权自AI科技大本营(ID:rgznai100) 本文长度为1700字,建议阅读6分钟 本文基于项目质量.用户参与度以及其他因素为你列出Python开源项目Top 30,建议收藏. 继推出201 ...

  9. python代码物理_利用python求解物理学中的双弹簧质能系统详解

    前言 本文主要给大家介绍了关于利用python求解物理学中双弹簧质能系统的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 物理的模型如下: 在这个系统里有两个物体,它们的质 ...

最新文章

  1. webpack笔记(6)调试模式
  2. 洛谷P2763 试题库问题
  3. 关于vue+element-ui项目的分页,返回默认显示第一页的问题解决
  4. 全网最细之抽象类讲解
  5. matlab窗函数 响应,matlab窗函数设计方案.doc
  6. 基于RDMA和NVM的大数据系统一致性协议研究
  7. 遍历mysql大表的小技巧
  8. python技术分享_分享几个python的使用技巧
  9. 有趣的算法(四)最通俗易懂的KMP算法解析
  10. VS如何定制自己的模板信息
  11. Latex排版论文——傻瓜式操作一晚排出毕业论文
  12. 微信网页授权,以及如何在本地调试
  13. 【HTML+CSS+JS】注册页面模板
  14. 【Android实习】20场面试斩获大厂offer,我学会了什么
  15. python语言基础(傻瓜式文档)
  16. Spring配置数据库密码加密
  17. 【蓝桥杯选拔赛真题15】Scratch碰苹果游戏 少儿编程scratch蓝桥杯选拔赛真题讲解
  18. 《HelloGitHub》第 81 期
  19. Linux命令篇:chmod 777 与 chmod +x
  20. shell——正则表达式

热门文章

  1. salt java 日志 乱码_Saltstack执行cmd.run重启tomcat后出现日志乱码(15)
  2. linux open函数_Linux驱动开发 / 字符设备驱动内幕 (1)
  3. 创建一个带参数的formgoup_gin框架如何获取带文件的formData请求?
  4. 前端工程师应该达到什么水平,找工作薪资才比较高?
  5. precede和previous_Previous Analyses of Hungarian Phrase Structure
  6. visa linux 串口 通信,使用visa进行串口通信
  7. 云桌面 瘦终端_小米盒子连接Citrix云桌面
  8. js sort方法根据数组中对象的某一个属性值进行排序(实用方法)
  9. css未知尺寸的图片的水平和垂直居中
  10. Inside Kolla - 04 Kolla 目录结构