python绘制一个圆_Python在网格上绘制一个填充的“圆”
你能提供一個在任意位置和半徑的網格中繪制圓(ish)形狀的有效算法嗎?在. . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . o O o . . . . . . . . . . . . . . . . . . . .
. . . . O O O O O . . . . . . . . . . . . . . . . . . .
. . . o O O O O O o . . . . . . . . . . . . . . . . . .
. . . O O O O O O O . . . . . . . . . . o O o . . . . .
. . . o O O O O O o . . . . . . . . . o O O O o . . . .
. . . . O O O O O . . . . . . . . . . O O O O O . . . .
. . . . . o O o . . . . . . . . . . . o O O O o . . . .
. . . . . . . . . . . . . . . . . . . . o O o . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
我用這個來找路。它是對更精細解析的圖形場的低分辨率抽象。這些形狀可以作為塊來避免。在
請記住,我希望能夠使用它來快速索引塊所在的2d數組。在
^{pr2}$
因此,“繪制”圓將類似于將值設置為塊:self.map[x][y] = PATH_COST_PROX1
繪制字段如下所示:def printme(self):
""" Print the map to stdout in ASCII."""
for y in reversed(range(self.ymax)):
for x in range(self.xmax):
if self.map[x][y] >= PATH_COST_PROX0:
print 'O',
elif self.map[x][y] >= PATH_COST_PROX1:
print 'o',
else:
print '.',
print ''
編輯:這是我最初的(可恥的)嘗試。我用手在方格上畫出圓圈,然后記下半徑每增加一點就加起來。這不是一個可怕的想法,但公認的答案要優雅得多。在COVER_MAP = [
[(0,0)],
[(0,1),(1,0),(0,-1),(-1,0)],
[(1,1),(1,-1),(-1,-1),(-1,1)],
[(0,2),(2,0),(0,-2),(-2,0)],
[(1,2),(2,1),(2,-1),(1,-2),(-1,-2),(-2,-1),(-2,1),(-1,2)],
[(0,3),(2,2),(3,0),(2,-2),(0,-3),(-2,-2),(-3,0),(-2,2)],
[(1,3),(3,1),(3,-1),(1,-3),(-1,-3),(-3,-1),(-3,1),(-1,3)]
]
def set_blocked(self, p, radius):
"""
Set the blocked state of a coordinate. Takes an integer value that
represents the cost of the block
"""
#radius = radius * 2
if radius > len(COVER_MAP)-1:
radius=len(COVER_MAP)-1
#print "point:",p," radius:",radius
(cx,cy) = p
for i in range(len(COVER_MAP)):
for j in range(len(COVER_MAP[i])):
(rx,ry) = COVER_MAP[i][j]
x = cx + rx
y = cy + ry
if x >= 0 and x < self.xmax and y >= 0 and y < self.ymax:
if i < radius:
self.map[x][y] = PATH_COST_PROX0
elif i == radius:
self.map[x][y] = PATH_COST_PROX1
elif i == radius + 1:
self.map[x][y] = PATH_COST_PROX2
elif i == radius + 2:
self.map[x][y] = PATH_COST_PROX3
elif i == radius + 3:
self.map[x][y] = PATH_COST_PROX4
我的確有一個優點,就是可以在原來的圓圈周圍形成一個成本較低的模糊環,這是下面的記憶算法沒有的,但可以加以調整來提供。在
總結
以上是生活随笔為你收集整理的python绘制一个圆_Python在网格上绘制一个填充的“圆”的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web前端学习文档 电子版_web前端工
- 下一篇: mac 端口占用_第二章 感受Mac 之