User:Thierry Dugnolle/Python/High definition triangle

High definition triangle

The above triangle has been drawn as a succession of three corners, like the following one:

Any line can be drawn as a broken line, therefore as a succession of corners, like the one above. To make rounded corners, it is better to divide a broken line at the middle of each of its segments.

main.py

edit
# # 2023, October 20. Version 231020

from Vector2D import The2Dvector, aNew2Dline
from Painter2D import a2Dpainter

print ("Mathematical painter")

# The drawer:
TheDrawer = a2Dpainter()
# The canvas:
TheCanvasStyle= "black on white" # "color", "black on white" or "white on black"
TheWidth = 600 # number of pixels
TheHeight = 300 # number of pixels
TheLengthUnit = 200 # number of pixels
TheCanvasColor = (255, 255, 255) # (red, green, blue) here white
TheDrawer.takesAnewCanvas(TheWidth, TheHeight, TheLengthUnit, TheCanvasStyle, TheCanvasColor)
TheDrawer.canvas.imageCenter = The2Dvector( 0.0, 0.5)

# The paintbrush:
TheDrawer.paintbrush.lineHalfWidth = 0.2 # (The line half width * the length unit) is the
# number of pixels in the half width of the line.

# A corner is defined by three points:
Acorner = aNew2Dline(3)
Acorner.point[0] = The2Dvector(-1, 0)
Acorner.point[1] = The2Dvector(0, 1)
Acorner.point[2] = The2Dvector(+1, 0)

# The triangle is defined by a five points line, because each corner must be
# surrounded by the two others to be drawn:
TheTriangle = aNew2Dline(5)
TheTriangle.point[0]= The2Dvector(-1, 0)
TheTriangle.point[1]= The2Dvector(0, 1)
TheTriangle.point[2]= The2Dvector(+1, 0)
TheTriangle.point[3]= The2Dvector(-1, 0)
TheTriangle.point[4]= The2Dvector(0, 1)

# The drawings:
TheDrawer.drawsA2Dline(Acorner)
TheDrawer.givesApainting("Corner.png")
TheDrawer.takesAnewCanvas(TheWidth, TheHeight, TheLengthUnit, TheCanvasStyle, TheCanvasColor)
TheDrawer.drawsA2Dline(TheTriangle)
TheDrawer.givesApainting("Triangle.png")

Other files

edit

This program requires the following additional files: Painter.py, Line2Ddrawer.py, Vector2D.py and Palette.py. They are all on this page: User:Thierry Dugnolle/Python/Mathematical painter.