pymunk初步:设置重力

文章目录

    • 官方示例
    • 可视化

官方示例

pymunk是一款2D物理引擎,在游戏开发中十分有用。安装过程无坑

pip install pymunk

下面举出官网的一个案例,来简述pymunk的使用流程

import pymunkspace = pymunk.Space()
space.gravity = 0,-981body = pymunk.Body()
body.position = 50,100poly = pymunk.Poly.create_box(body)
poly.mass = 10
space.add(body, poly)print_options = pymunk.SpaceDebugDrawOptions()
space.debug_draw(print_options) # 打印状态

其中,

  • space是一个可供拟合的空间,通过指定gravity设置竖直向下的重力。
  • body是一个刚体,通过position指定初始位置在 ( 50 , 100 ) (50,100) (50,100)
  • poly是刚体的形状,通过mass指定这个形状的质量
  • 最后,调用add将body和poly添加到仿真空间中。

其状态输出如下

draw_polygon ([Vec2d(55.0, 95.0), Vec2d(55.0, 105.0), Vec2d(45.0, 105.0), Vec2d(45.0, 95.0)], 0.0, SpaceDebugColor(r=44.0, g=62.0, b=80.0, a=255.0), SpaceDebugColor(r=52.0, g=152.0, b=219.0, a=255.0))

逐个拆解,draw_polygon表示后面的元组是一个多边形,Vec2d显然是二维平面中的点,4个点构成一个四边形,即poly所对应的形状。由于刚体位置设置在 ( 50 , 100 ) (50,100) (50,100)处,而create_box默认的边长为 ( 10 , 10 ) (10,10) (10,10),所以其四个角的值分别是 50 ± 5 , 100 ± 5 50\pm5, 100\pm5 50±5,100±5

接下来,对这个空间进行模拟,其方法非常简单,只需调用step命令即可。

ps = [(50,100)]                 # 记录刚体位置
for _ in range(100):    # 运行100次space.step(0.02)    # 步进ps.append(body.position)

可视化

接下来可以绘制一下多边形历经区域,考虑到pymunk主要应用在游戏设计中,故而通过pygame实现绘图

import pygame as pg
from pygame.draw import circlepg.init()
screen = pg.display.set_mode((320, 180))c = pg.time.Clock()i = 0
while True:if pg.QUIT in [e.type for e in pg.event.get()]:pg.quit()breakscreen.fill("purple")c.tick(60)    # 5i += 1circle(screen, "blue", ps[i%100], 10)print(ps[i%100])pygame.display.update()

由于pygame中,Y轴原点在左上角,所以下图中的重力方向与现实刚好相反。

在这里插入图片描述

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

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

相关文章

邮件群发系统怎么用呢?专业的邮件群发器?

邮件群发系统哪个比较好?邮件营销系统的效果怎么样? 在现代商业活动中,邮件群发系统已成为企业营销的重要工具。那么,邮件群发系统究竟如何使用呢?接下来,蜂邮EDM将为您详细解析邮件群发系统的使用方法。 …

股市反转数据分析

20240206是一个很好的股市反转数据分析的样本。因为之前的1月份2月前3个交易日也就是2月1日,2月2日和2月5日基本都是大跌。数据记录如下: 指数名称指数代码收盘价 [日期] 20231229 [单位] 元收盘价 [日期] 20240205 [单位] 元区间涨跌幅上证指数000001.…

深度学习图像分类相关概念简析+个人举例3(CNN相关补充,附详细举例代码1)

【1】激活函数(Activation Function):在深度学习(CNN)中,激活函数用于引入非线性性质,帮助模型学习复杂的关系。常见的激活函数有ReLU、Sigmoid和Tanh等。 (1)ReLU激活函…

Godot 游戏引擎个人评价和2024年规划(无代码)

文章目录 前言Godot C# .net core 开发简单评价Godot相关网址可行性 Godot(GDScirpt) Vs CocosGodot VS UnityUnity 的裁员Unity的股票Unity的历史遗留问题:Mono和.net core.net core的开发者,微软 个人的独立游戏Steam平台分成说明独立游戏的选题美术风…

C# CAD交互界面-自定义面板集-添加快捷命令(五)

运行环境 vs2022 c# cad2016 调试成功 一、引用 using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.Windows; using System; using System.Drawing; using System.Windows.Forms; 二、代码说明 [CommandMethod("Cre…

游戏开发-会飞的小鸟(已完结,附源码)

游戏开发-会飞的小鸟(已完结,附源码) 你将学到的课程链接详细介绍 你将学到的 掌握Java编程的基本技能开发出自己的“会飞的小鸟”游戏对面向对象编程有深刻的理解学会运用常见算法和数据结构解决问题能够独立调试和优化自己的代码 课程链接…

python二维数组初始化的一个极其隐蔽的bug(浅拷贝)

初始化一个三行三列的矩阵 m n 3初始化方式1 a [[0 for i in range(m)] for j in range(n)]初始化方式2 b [] row [0 for i in range(0,m)] for i in range(0,n):b.append(row)分别输出两个初始化的结果 for row in a:print(row) for row in b:print(row)当前的输出为…

标准库 STM32+EC11编码器+I2C ssd1306多级菜单例程

标准库 STM32EC11编码器I2C ssd1306多级菜单例程 📌原创项目来源于:https://github.com/AdamLoong/Embedded_Menu_Simple📍相关功能演示观看:https://space.bilibili.com/74495335 单片机多级菜单v1.2 👉本次采用的是原…

springboot162基于SpringBoot的体育馆管理系统的设计与实现

体育馆管理系统 摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本体育馆管理系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕…

算法练习-二叉树的节点个数【完全/普通二叉树】(思路+流程图+代码)

难度参考 难度:中等 分类:二叉树 难度与分类由我所参与的培训课程提供,但需要注意的是,难度与分类仅供参考。且所在课程未提供测试平台,故实现代码主要为自行测试的那种,以下内容均为个人笔记,旨…

Java on VS Code 2024年1月更新|JDK 21支持!测试覆盖率功能最新体验!

作者:Nick Zhu - Senior Program Manager, Developer Division At Microsoft 排版:Alan Wang 大家好,欢迎来到 Visual Studio Code for Java 2024年的第一期更新!提前祝愿大家春节快乐!在本博客中,我们将有…

开源软件:引领技术创新、商业模式与安全的融合

序 在信息技术日新月异的今天,开源软件以其独特的魅力和影响力,正逐渐成为软件产业的新常态。开源软件的低成本、高度可协作性和透明度等特点,不仅吸引了无数企业和个人用户的青睐,更为软件行业带来了前所未有的繁荣景象。 一、…

复旦微 zynq amp cpu0 唤醒启动cpu1

1 配置多核amp工程,参考上一篇文章 https://blog.csdn.net/yangchenglin927/article/details/136057534 2 在cpu0的main函数中增加唤醒代码 active_cpu1(); /** helloworld.c: simple test application** This application configures UART 16550 to baud rate 96…

Flink SQL Client 安装各类 Connector、Format 组件的方法汇总(持续更新中....)

博主历时三年精心创作的《大数据平台架构与原型实现:数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行,点击《重磅推荐:建大数据平台太难了!给我发个工程原型吧!》了解图书详情,…

数据结构——D/二叉树

🌈个人主页:慢了半拍 🔥 创作专栏:《史上最强算法分析》 | 《无味生》 |《史上最强C语言讲解》 | 《史上最强C练习解析》 🏆我的格言:一切只是时间问题。 ​ 1.树概念及结构 1.1树的概念 树是一种非线性的…

10.0 Zookeeper 权限控制 ACL

zookeeper 的 ACL(Access Control List,访问控制表)权限在生产环境是特别重要的,所以本章节特别介绍一下。 ACL 权限可以针对节点设置相关读写等权限,保障数据安全性。 permissions 可以指定不同的权限范围及角色。 …

Oracle 面试题 | 15.精选Oracle高频面试题

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

AR人脸106240点位检测解决方案

美摄科技针对企业需求推出了AR人脸106/240点位检测解决方案,为企业提供高效、精准的人脸识别服务,采用先进的人脸识别算法和机器学习技术,通过高精度、高速度的检测设备,对人脸进行快速、准确地定位和识别。该方案适用于各种应用场…

Backtrader 文档学习- Observers - Benchmarking

Backtrader 文档学习- Observers - Benchmarking 1.概述 backtrader包括两种不同类型的对象,可以帮助跟踪: Observers 观察者Analyzers 分析器 在分析器领域中,已有TimeReturn对象,用于跟踪整个组合价值(即包括现金…

黑马Java——集合进阶(List、Set、泛型、树)

一、集合的体系结构 1、单列集合(Collection) 二、Collection集合 1、Collection常见方法 1.1代码实现: import java.util.ArrayList; import java.util.Collection;public class A01_CollectionDemo1 {public static void main(String[] a…