点与线¶
画点¶
可以使用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]上的函数曲线,我们可以通过多条连续线段来进行近似绘制。
- 在数轴上将[-3,3]n等分,获得n+1个在[-3,3]上等距分布的值:x0,x1,x2,x3,……,xn。其中x0=-3,xn=3。
- 计算函数值f(x0),f(x1),f(x2),f(x3), …, f(xn)。
- 绘制n条线段:(x0,f(x0))到(x1,f(x1))、(x1,f(x1))到(x2,f(x2))、……、(xn-1,f(xn-1))到(xn,f(xn))。
- 最终的结果就是我们需要的近似曲线。
显然,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)