圆形在 Arcade python 库中显示为三角形

Circle appears as a Triangle in Arcade python library

我一直在尝试使用拱廊 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()

Screenshot of the problem

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

我的机器规格:

i) AMD 锐龙 5 2500U,Vega 8 显卡

ii) 8 GB 内存

iii) OS: Ubuntu 21.10

iv) Python 版本:3.10

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

可能是什么问题?

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

num_segments (int) – Number of triangle segments that make up this circle. Higher is better quality, but slower render time. The default value of -1 means arcade will try to calculate a reasonable amount of segments based on the size of the circle.

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

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

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))