# generative-toolbelt.point

```A set of function to create, manipulate, and draw Points and also Vector structures.
Points are structured as maps like this: {:x 100 :y 100}.
Vectors are strucutred as maps like this: {:len 100 :dir 60}```

### draw-line

`(draw-line l & [drawOptions])`
```Draws a Line into the current graphics canvas.
```

### draw-point

`(draw-point p)``(draw-point p size)`
```Draws a Point into the current graphics canvas.
```

### flip-dir

`(flip-dir vect)`
```Flip the direction of a by 180 degrees vector.
Returns a Vector structure.```

### make-line

`(make-line a b)`
```Creates a Line with absolutes coordinates.
Returns a Line.```

### make-point

`(make-point x y)`
```Creates a Point with absolutes coordinates.
Returns a Point.```

### make-vec

`(make-vec l d)`
```Creates a Vector structure with length `l` and direction `d` in radians.
```

### mkln

`(mkln ax ay bx by)`
```Creates a Line with canvas-relative coordinates.
Returns a Line.```

### mkpt

`(mkpt x y)`
```Creates a Point with canvas-relative coordinates.
Returns a Point.```

### point-angle

`(point-angle a b)`
```Calculate the angle between two Points.
Returns a number.```

### point-between

`(point-between a b pos)`
```Creates a new intermediate point between two Points
`pos` is a floating number between 0 and 1 that defines
the distance between the two points. 0 returns point `a`,
1 returns point `b`, 0.5 returns the middle point between
`a` and `b`, etc...
Returns a Point.```

### point-distance

`(point-distance a b)`
```Calculate the distance between two Points.
Returns a number.```

### point-mirror

`(point-mirror points mode)`

NEEDS UPDATE Mirror a sequence of points vertically, horizontally, or both. `mode` can be `:h` for horizontal only, `:v` for vertical only, or `:hv` for both horizontal and vertical. Returns a sequence of Points.

### point-move-by-vector

`(point-move-by-vector point vect)`
```Creates a new Point which is moved by a certain
ammount in a certain direction defined by a Vector
structure.
Returns a Point.```

### point-to-vector

`(point-to-vector p)`
```Converts a Point structure to a Vector structure.
Returns a Vector.```

### reverse-line

`(reverse-line {:keys [a b]})`
```Reverse a Line swapping its Points.
Returns a Line.```

### tweak-len

`(tweak-len vect value)`
```Changes the length of the vector multiplicating its length by `value`.
Returns a Vector structure.```

### vector-to-point

`(vector-to-point v)`
```Converts a Vector structure to a Point structure.
Returns a Point.```