1

我一直在尝试使用街机 python 库绘制一个简单的圆圈,但我所看到的只是一个完美定位的三角形

这是我使用的示例代码:

import arcade

# Set constants for the screen size
SCREEN_WIDTH = 400
SCREEN_HEIGHT = 400
SCREEN_TITLE = "Happy Face Example"

# Open the window. Set the window title and dimensions
arcade.open_window(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_TITLE)

# Set the background color
arcade.set_background_color(arcade.color.WHITE)

arcade.start_render()

# Draw the face
x = SCREEN_WIDTH // 2
y = SCREEN_HEIGHT // 2
radius = 100
arcade.draw_circle_filled(x, y, radius, arcade.color.YELLOW)

arcade.finish_render()

# Keep the window open until the user hits the 'close' button
arcade.run()

问题截图

在网上搜索了几个小时的解决方案后,我在另一台电脑上尝试了它,我得到了一个正确的圆圈!

我的机器规格:

i) AMD Ryzen 5 2500U,Vega 8 显卡

ii) 8 GB 内存

iii) 操作系统:Ubuntu 21.10

iv) Python 版本:3.10

它工作的机器还运行 Ubuntu 21.10,带有 AMD CPU + GTX 1060 6 GB 视频卡,并安装了 Python 3.10。

可能是什么问题呢?

4

1 回答 1

0

这是因为一个圆实际上被渲染为一个多边形。球体的质量取决于该多边形的顶点数。根据文档,您可以设置这是num_segments参数:

num_segments (int) -- 组成这个圆的三角形段数。越高质量越好,但渲染时间越慢。默认值 -1 表示街机将尝试根据圆的大小计算合理数量的段。

但是,在某些版本的库和某些硬件上,默认计算会出错,因此您必须手动设置。

所以,你的代码应该是这样的:

arcade.draw_circle_filled(x, y, radius, arcade.color.YELLOW, 0, 100)

但是,由于您很可能希望分辨率取决于球体的大小,因此我建议您使用以下公式:

arcade.draw_circle_filled(x, y, radius, arcade.color.YELLOW, 0, int(2.0 * math.pi * radius / 3.0))
于 2022-01-14T10:09:35.563 回答