gpt4 book ai didi

python-3.x - 在 python 中逐像素绘制圆圈

转载 作者:行者123 更新时间:2023-12-04 13:23:26 25 4
gpt4 key购买 nike

大家好,我有一个问题。我想在 python 中逐个像素地绘制一个圆圈,但我似乎无法得到它。

这是我们今天在我的编程课上讨论的一个问题,我的老师说可以通过使用距离公式来计算窗口中心和圆外点之间的距离,然后告诉如果适合这种情况,程序将填写它。

所以这不是作业,纯粹是为了我自己的好奇心。我已经为此工作了几个小时,我觉得我已经很接近了,但肯定遗漏了一个关键要素。

我的目标是在窗口中间放一个红色圆圈,宽度和高度在300到400之间。

我说中心点是 = 到 (w/2, h/2) 并且我想填充距离它固定距离的每个点。

我选择 (100, 50) 作为圆上的随机点,然后使用前两个点将变量 distance = 设置为距离公式。

两个 for 循环用于遍历窗口中的每个像素。我能够在我想要我的圆圈的地方创建一个框......但我似乎无法让接近圆圈的任何东西出现

这是我的代码,我将我的函数命名为日本国旗,因为它看起来很合适:

import cImage
import math


def japanese_flag(w, h):
newimg = EmptyImage(w, h)
distance = int(math.sqrt((50 - h / 2) ** 2 + (100 - w / 2) ** 2))

for col in range(w):
for row in range(h):
if h/2 - distance < row < (h/2 + distance) and w / 2 - distance < col < (w / 2 + distance):
newpixel = Pixel(255, 0, 0) # this denotes the color red
newimg.setPixel(col, row, newpixel)
return newimg

def show_one_flag(func_name):
import random
width = random.randint(300, 400)
height = random.randint(200, 300)
win = ImageWin(str(func_name),width,height)
newimg = func_name(width, height)
newimg.draw(win)

show_one_flag(japanese_flag)

最佳答案

使用平方半径进行更简单的比较

SqDist = (50 - h / 2) ** 2 + (100 - w / 2) ** 2

只画圆周,比较一些公差水平

Eps = 1
...
if (Math.Abs((h/2 - row) ** 2 + (w/2 - col) ** 2 - SqDist) < Eps)
draw pixel

绘制实心圆:

if ((h/2 - row) ** 2 + (w/2 - col) ** 2 < SqDist)
draw pixel

关于python-3.x - 在 python 中逐像素绘制圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45089087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com