# Triangle

Martin McBride, 2020-08-26
Tags geometry triangle
Categories generativepy generative art

The Triangle class draws a triangle.

There is also a triangle function that just creates a triangle as a new path.

## Triangle class methods

The Triangle class inherits add, fill, stroke, fill_stroke, path, clip and other methods from Shape.

It has additional methods:

• of_corners

### of_corners

Creates a triangle based on a set of 3 points.

of_corners(a, b, c)

Parameter Type Description
a (number, number) (x, y) tuple, giving the position of corner a of the triangle.
b (number, number) (x, y) tuple, giving the position of corner b of the triangle.
c (number, number) (x, y) tuple, giving the position of corner c of the triangle.

## triangle function

Adds a triangle as a new path, without the need to create a Triangle object in code.

triangle(ctx, points)

Parameter Type Description
ctx Context The Pycairo Context to draw to
a (number, number) (x, y) tuple, giving the position of corner a of the triangle.
b (number, number) (x, y) tuple, giving the position of corner b of the triangle.
c (number, number) (x, y) tuple, giving the position of corner c of the triangle.

## Example

Here is some example code that draws triangles using the class and the utility function. The full code can be found on github.

from generativepy.drawing import make_image, setup
from generativepy.color import Color
from generativepy.geometry import triangle, Triangle

'''
Create triangles using the geometry module.
'''

def draw(ctx, width, height, frame_no, frame_count):
setup(ctx, width, height, width=500, background=Color(0.8))

# The triangle function is a convenience function that adds a triangle as a new path.
# You can fill or stroke it as you wish.
triangle(ctx, (100, 100), (150, 50), (200, 150))
ctx.set_source_rgba(*Color(1, 0, 0))
ctx.fill()

Triangle(ctx).of_corners((300, 100), (300, 150), (400, 200)).stroke(Color('orange'), 10)

make_image("/tmp/geometry-triangle.png", draw, 500, 500)


Copyright (c) Axlesoft Ltd 2020