# Get a point's position from an angle and the length of the line

## Question:

I’m programming a game in Python, with pygame, and I’d like to make a function that draws a line in a specific direction from a point, with a specific length, for example, the definition of the funcion would be: `def draw_line(position1: (int, int), angle: int, line_length: int, line_width: float, color: Color):`

What can I do for calculating the second point to draw the line?

I have a little schematic of the problem, I want to get position2, to draw the line with pygame.

## Answers:

This is a math problem, but ok, the x and y coordinate of point 2 are:

```
(x2,y2) = (x1 + line_length*cos(angle),y1 + line_length*sin(angle))
```

You can just use a vector. The `pygame.math.Vector2`

class has a `from_polar`

method to which you can pass the length and angle of the desired vector. Then add this vector to the first point and you have the second point.

```
import pygame as pg
from pygame.math import Vector2
def draw_line(position, angle, line_length, line_width, color, screen):
vector = Vector2() # A zero vector.
vector.from_polar((line_length, angle)) # Set the desired length and angle of the vector.
# Add the vector to the `position` to get the second point.
pg.draw.line(screen, color, position, position+vector, line_width)
pg.init()
screen = pg.display.set_mode((640, 480))
clock = pg.time.Clock()
BG_COLOR = pg.Color('gray13')
BLUE = pg.Color('dodgerblue1')
done = False
while not done:
for event in pg.event.get():
if event.type == pg.QUIT:
done = True
screen.fill(BG_COLOR)
draw_line((100, 200), 30, 120, 2, BLUE, screen)
pg.display.flip()
clock.tick(30)
pg.quit()
```

Keep in mind that ViG’s answer works the same in 3D; you just have to do the same equation, with the z axis resulting in the same formula as the x axis:

```
from math import cos, sin
def getPointInDir(x0, y0, z0, angX, angY, angZ, distance):
"""
x0 / y0 / z0 - The original point from which you are
interpolating from.
angX / angY / angZ - The angles (in degrees) of the three axes.
distance - The distance (length) from p0 to p1.
"""
x1 = x0 + distance*cos(angX)
y1 = y0 + distance*sin(angY)
z1 = z0 + distance*cos(angZ)
result = [x1, y1, z1]
return result
```

You don’t even have to use vectors!