# Lines and Points¶

## Drawing Points¶

You can use draw_point() to draw a point. The size of point is determined by line width (pen size); If you want to draw a pixel, use put_pixel() instead.

## Drawing Lines¶

You can use line() to draw a line.

## Draw with the Current Position¶

In easygraphics, each image (including the graphics window) stores “a current position”. Use this position, we can draw lines relatively.

The related functions are:

 `get_drawing_x`(image) Get the x coordinate value of the current drawing position (x,y). `get_drawing_y`(image) Get the y coordinate value of the current drawing position (x,y). `get_drawing_pos`(image) Get the current drawing position (x,y). `move_to`(x, y, image) Set the drawing position to (x,y). `move_rel`(dx, dy, image) Move the drawing position by (dx,dy). `line_to`(x, y, image) Draw a line from the current drawing position to (x,y), then set the drawing position is set to (x,y). `line_rel`(dx, dy, image) Draw a line from the current drawing position (x,y) to (x+dx,y+dy), then set the drawing position is set to (x+dx,y+dy).

The following program draws a dash line by using the current position.

```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)
```

## Approximate a function curve¶

Sometimes we need to draw line segments successively.

For example, to plot the function f(x)=sin(x)’s curve on [-3,3] ,we can use many successive line segements to approximate the curve:

1. divide [-3,3] into n equal intervals, to get n+1 values evenly distributed on [-3,3]: x0,x1,x2,x3,…,xn, and x0=-3, xn=3
2. cacluate function values f(x0),f(x1),f(x2),f(x3), …, f(xn).
3. draw n line segements: (x0,f(x0)) to (x1,f(x1)), (x1,f(x1)) to (x2,f(x2)) …, (xn-1,f(xn-1)) to (xn,f(xn))
4. the resulting line segments is the curve approximation we need.

Apparently, the more greater n is, the more precisely the appoximation is. To minimize the usage of memory, we should calculate and draw the line segments one by one.

The following program plot a sin(x) curve on [-3,3].

```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)
```