原生PyGame方法,用于自动将输入缩放到表面分辨率?

时间:2011-07-24 14:41:30

标签: python drawing coordinates pygame coordinate-systems

此问题与this other one有关。

在我的程序中(使用pygame在视频上绘制对象)我有两个代表我的世界:

  • 物理,我用它来进行模拟中涉及的所有计算以及哪些对象位于1000x1000米的表面上。
  • 我用来在屏幕上绘制的 visual visual ,其中我的对象位于一个100x100像素的窗口中。

我想要实现的是能够传递给我的pygame绘图函数(通常接受以像素为单位的输入)我的物理/真实单词坐标。换句话说,我希望能够说:

Draw a 20m radius circle at coordinates (200m, 500m)

使用精确的pygame语法:

pygame.draw.circle(surface, (255,255,255), (200,500), 20)

并以像素(20,50)为中心获得2px半径的圆圈。

请注意,这个问题是关于本地pygame方法来执行此操作,而不是某种解决方法来实现该结果(如果你想回答这个问题,你应该看看这个问题我改为already mentioned)。

提前感谢您的时间和支持。

2 个答案:

答案 0 :(得分:1)

没有本地pygame方法可以做到这一点。

你可能误解了pygame的功能。它不适用于绘制矢量对象。它用于将像素写入视频表面。

由于您有矢量对象,因此必须定义它们将如何转换为像素。这样做不是一种解决方法 - 这就是你打算如何使用pygame。

答案 1 :(得分:1)

由于PyGame开发人员似乎并没有在这里闲逛过多,所以我把问题带到了Pygame邮件列表中,它发起了一个monster thread,这个问题一直存在争议。

摘要将是:

  • 目前没有这样的功能。
  • 有兴趣实施它,或者至少尝试实施它 ......
  • ......虽然不以任何方式优先考虑核心开发者
  • 皮肤猫的方法不止一种:
    • 应该是两种方式进行缩放(输入坐标和读取它们)?
    • 如何处理没有厚度但应该可见的线?
    • 如何处理图像边缘对象的可见性?他们应该把哪些点作为参考来知道像素是否应该点亮它们?
    • 等(见链接主题)。