你能提供一个在任意位置和半径的网格中绘制圆(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在网格上绘制一个填充的“圆”相关推荐

  1. python使用np.logspace函数在对数刻度上创建一个对数等距数组实战:在对数刻度上创建一个数组(指定数值个数以及是否包含末尾界值)、使用不同的基数(底数)在对数刻度上构建等距数组、可视化

    python使用np.logspace函数在对数刻度上创建一个对数等距数组实战:在对数刻度上创建一个数组(指定数值个数以及是否包含末尾界值).使用不同的基数(底数)在对数刻度上构建等距数组.可视化 目 ...

  2. 微机原理:编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出。

    微机原理:编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出. DATAS SEGMENT msg db 'Input ',0dh,0ah,'$' te ...

  3. 用python画多个圆_Python用图例在网格上绘制多个圆

    我想在一个N乘M的网格上画出不同颜色和相同大小的圆.在x,y位置,可以是一个圆或什么都不是.在 我希望每个专栏都有一个x标签(这将是一个星期),和一个ylabel(这将是一个主题).在 现在,我找到了 ...

  4. 用python绘制叠加等边三角形_python 叠加等边三角形的绘制的实现

    题目:使用turtle库绘制叠加等边三角形. 要分享: 屏幕应该是个叠加三角,一岗是一个分角.不是樽前爱惜身,佯狂难免假成真.曾因酒醉鞭名马,生怕情多累美人. 如何使用python turtle 画一 ...

  5. python画五角星代码_Python第八课 绘制五角星1.0

    第八课 绘制五角星1.0 学习目标: 1. 了解并学会使用turtle库. 2. 复习while循环. 教学重难点: turtle库的使用. 学习内容: 案例2: 使用turtle 库在Python中 ...

  6. python画棒棒糖程序_python之turtle简单绘制学习

    一.方法 1.forward() | fd():向前移动指定的距离.参数:一个数字(integer or float)). turtle.forward(25) 2.backward() | bk() ...

  7. 如何用python做一个时钟_Python使用turtle库制作一个时钟

    前言 Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x.纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在 ...

  8. 如何用python画七彩蟒蛇_Python实现七彩蟒蛇绘制实例代码

    本文主要研究的是Python编程turtle的实例,绘制一个七彩蟒蛇..具体如下. 第2周的课后练习里,有一道题目,要求修改"蟒蛇绘制"程序,对Python 蟒蛇的每个部分采用不同 ...

  9. python画正切函数_python的pygal模块绘制反正切函数图像方法

    python的pygal模块绘制反正切函数图像方法 python是一个很有趣的语言,可以在命令行窗口运行.python中有很多功能强大的模块,这篇经验告诉你,如何使用python的pygal模块绘制反 ...

最新文章

  1. 图标化java_java最小化到托盘显示图标实现
  2. Filter及FilterChain的使用具体解释
  3. 找出网络停机的四大原因—Vecloud微云
  4. Exception in thread main java.lang.NoSuchMethodError
  5. C# 与java区别总结 收集
  6. linux java maven_Linux安装java环境和maven
  7. Python pip freeze获取安装的Python包并使用pip install -r还原到这些包环境(转载)
  8. Java Swing线程之SwingUtilities.invokeLater解释
  9. php 接口类,抽象类 的实际作用
  10. 毕业设计——英文文献下载
  11. esxi 创建虚拟交换机_对vSphere虚拟交换机的理解
  12. linux 网卡 mac 配置文件,Linux脚本程序自动修改网卡配置文件中的MAC地址
  13. 论文阅读|用于不同问题的MADDPG算法框架系列论文汇总
  14. 2022谈谈手机充电头/快充头/电源适配器
  15. 三菱PLC伺服XZ轴定位程序 程序都有注释、注释全面,用的三菱FX3U系列plc
  16. 达奇机器人编程学院_Wonder Workshop Dash Robot 达奇STEM编程机器人 中英文双语版
  17. Toggle Buttons(一)
  18. leetcode844 比较含退格的字符串(python)
  19. 一本超越期待的 C++ 书——简评 Boost程序库完全开发指南 深入C++ 准 标准库
  20. CheriABI简介

热门文章

  1. html 屏蔽蓝色电话,html – 在Chrome扩展程序中停用文字字段蓝色突出显示?
  2. 一起学nRF51xx 20 -  移植SDK蓝牙例程
  3. 图像配准代码(包含matlab/opencv C++)
  4. Android 4.0 Notification
  5. android4.0 系统广播集
  6. proc文件的简单读写
  7. 在隧道内放置多个地感线圈,车辆通过时、对通过的相邻两个线圈的脉冲信号数据进行实时采集,首先利用云模型算法,计算得到车速的估计值
  8. 基于SNN脉冲神经网络的FPGA实现介绍
  9. maven deploy jar包到远程仓库400
  10. Struts2配置文件【代码库】