点与线

画点

可以使用draw_point()来画一个点。点的大小由线宽(画笔尺寸)决定。如果你需要画一个像素,那么应该使用put_pixel()。

画线

你可以使用line()来画一个线段

相对于当前位置画线

在Easy Graphics中,每个绘图对象(包括绘图窗口)都保存着一个”当前绘图位置”。可以使用该位置来进行相对绘画。

相关的函数有:

get_drawing_x(image) 获取当前绘图位置(x,y)的x坐标值
get_drawing_y(image) 获取当前绘图位置(x,y)的y坐标值
get_drawing_pos(image) 获取当前绘图位置(x,y)的坐标值
move_to(x, y, image) 设置当前绘图位置到(x,y)。
move_rel(dx, dy, image) 将绘图位置在x轴方向移动dx,在y轴方向移动dy。
line_to(x, y, image) 从当前绘图位置到(x,y)画线,然后将当前绘图位置更新为(x,y)
line_rel(dx, dy, image) 从当前绘图位置(x,y)到(x+dx,y+dy)画线,然后将当前绘图位置更新为(x+dx,y+dy)。

下面的程序使用当前绘图位置画了一条虚线。

from easygraphics import *

def main():
    init_graph(400, 100)

    move_to(50, 50)
    for i in range(10):
        line_rel(10, 0)
        move_rel(20, 0)
    pause()
    close_graph()

easy_run(main)

近似绘制函数曲线

有时我们需要画多条依次首尾相连的线段。

例如,要绘制函数f(x)=sin(x)在区间[-3,3]上的函数曲线,我们可以通过多条连续线段来进行近似绘制。

  1. 在数轴上将[-3,3]n等分,获得n+1个在[-3,3]上等距分布的值:x0,x1,x2,x3,……,xn。其中x0=-3,xn=3。
  2. 计算函数值f(x0),f(x1),f(x2),f(x3), …, f(xn)。
  3. 绘制n条线段:(x0,f(x0))到(x1,f(x1))、(x1,f(x1))到(x2,f(x2))、……、(xn-1,f(xn-1))到(xn,f(xn))。
  4. 最终的结果就是我们需要的近似曲线。

显然,n越大,近似就约精确。当n很大时,为了减少不必要的内存开销,我们最好是逐一计算各线段的端点,边计算边绘制。

下面的程序使用上述方法绘制[-3,3]区间上的sin(x)曲线。

from easygraphics import *
import math as m

def main():
    init_graph(600, 400)
    translate(300, 200)  # move origin to the center
    scale(100, -100)  # zoom each axis 100 times, and make y-axis grow from bottom to top.

    x = -3
    delta = 0.01
    move_to(x, m.sin(x))
    while x <= 3:
        line_to(x, m.sin(x))
        x = x + delta
    pause()
    close_graph()

easy_run(main)