美文网首页
Gym 简单画图

Gym 简单画图

作者: winddy_akoky | 来源:发表于2018-09-06 21:03 被阅读0次
  1. 首先,导入库文件(包括gym模块和gym中的渲染模块)
import gym
from gym.envs.classic_control import rendering
  1. 我们生成一个类,该类继承 gym.Env. 同时,可以添加元数据,改变渲染环境时的参数
class Test(gym.Env):
    # 如果你不想改参数,下面可以不用写
    metadata = {
        'render.modes': ['human', 'rgb_array'],
        'video.frames_per_second': 2
    }
  1. 我们在初始函数中定义一个 viewer ,即画板
    def __init__(self):
        self.viewer = rendering.Viewer(600, 400)   # 600x400 是画板的长和框
  1. 继承 render函数
    def render(self, mode='human', close=False):
        # 下面就可以定义你要绘画的元素了
        line1 = rendering.Line((100, 300), (500, 300))
        line2 = rendering.Line((100, 200), (500, 200))
        # 给元素添加颜色
        line1.set_color(0, 0, 0)
        line2.set_color(0, 0, 0)
        # 把图形元素添加到画板中
        self.viewer.add_geom(line1)
        self.viewer.add_geom(line2)

        return self.viewer.render(return_rgb_array=mode == 'rgb_array')
  1. 最后运行
if __name__ == '__main__':
    t = Test()
    while True:
        t.render()
Selection_046.png

值得注意的是,画板的水平方向是 x 轴, 垂直方向是 y 轴, 且原点在左下角

  1. 在画个图形试试:
    画个圆:
    def render(self, mode='human', close=False):

        # 画一个直径为 30 的园
        circle = rendering.make_circle(30)

        self.viewer.add_geom(circle)

        return self.viewer.render(return_rgb_array=mode == 'rgb_array')
image.png

注意到,默认情况下圆心在坐标原点,那要怎么把它挪到其他地方呢?

 def render(self, mode='human', close=False):

        # 画一个直径为 30 的园
        circle = rendering.make_circle(30)
        # 添加一个平移操作
        circle_transform = rendering.Transform(translation=(100, 200))
        # 让圆添加平移这个属性
        circle.add_attr(circle_transform)
        self.viewer.add_geom(circle)

        return self.viewer.render(return_rgb_array=mode == 'rgb_array')
image.png
注意:是圆心在平移
  1. 例子:
    def render(self, mode='human', close=False):

        # 画一个直径为 30 的园
        circle = rendering.make_polyline([(50, 200-50*math.sqrt(3)),
                                          (100, 200), (200, 200),
                                          (250, 200 - 50 * math.sqrt(3)),
                                          (200, 200 - 100*math.sqrt(3)),
                                          (100, 200 - 100*math.sqrt(3)),
                                          (50, 200 - 50 * math.sqrt(3))])
        # 添加一个平移操作
        circle_transform = rendering.Transform(translation=(100, 200))
        # 让圆添加平移这个属性
        circle.add_attr(circle_transform)
        self.viewer.add_geom(circle)

        return self.viewer.render(return_rgb_array=mode == 'rgb_array')
image.png

相关文章

  • Gym 简单画图

    首先,导入库文件(包括gym模块和gym中的渲染模块) 我们生成一个类,该类继承 gym.Env. 同时,可以添加...

  • OpenAI Gym使用、rendering画图

    gym开源库:包含一个测试问题集,每个问题成为环境(environment),可以用于自己的RL算法开发。这些环境...

  • 强化学习基础篇(十)OpenAI Gym环境汇总

    强化学习基础篇(十)OpenAI Gym环境汇总 Gym中从简单到复杂,包含了许多经典的仿真环境,主要包含了经典控...

  • Gym gym

    自从加入新的健身房之后,坚持一周三次上不同的力量训练和举铁高强度课,还尝试了拳击课和打击棍子的pound;四个星期...

  • Fastlane - gym

    认识Xcodebuild命令 gym概述: 使用方法: fastlane gym fastlane gym --w...

  • OpenAI Gym介绍及安装

    OpenAI Gym学习求助,安装openai gym all老是出错?

  • 15/70 豆苗写作:My gym class

    Every Monday evening I have a gym class at the Little Gym...

  • python简单画图

    一提到python绘图,matplotlib是不得不提的python最著名的绘图库,它里面包含了类似matlab的...

  • 强化学习基础篇(九)OpenAI Gym基础介绍

    强化学习基础篇(九)OpenAI Gym基础介绍 1. Gym介绍 Gym是一个研究和开发强化学习相关算法的仿真平...

  • Flag

    English,Gym,Piano

网友评论

      本文标题:Gym 简单画图

      本文链接:https://www.haomeiwen.com/subject/pclfgftx.html