Disegnare linee su Raspberry Pico Display in MicroPython
Il PicoDisplay per Raspberry PI Pico ha varie primitive per disegnare sul display, ma tra queste manca la possibilità di disegnare delle linee.
Le uniche linee che è possibile disegnare nativamente sono quelle orizzontali tramite l'istruzione display.pixel_span(x, y, length).
La seguente funzione MicroPython permette di disegnare una linea tra un punto A (x1, y1) e un punto B (x2, y2)
Python: line(x1, y1, x2, y2)
import picodisplay as display
import math
def line(x1, y1, x2, y2):
if x1 == x2 and y1 == y2:
# punto
display.pixel(x1, y1)
else:
# linea
ox = x1
oy = y1
w = x2 - x1
h = y2 - y1
greaterDx = math.copysign(w, 1) > math.copysign(h, 1)
# calcolo inclinazione linea
m = 1.0
if w != 0:
m = h / w
# disegno linea
if greaterDx:
if x1 > x2:
ox = x2
oy = y2
w = math.copysign(w, 1)
for x in range(w + 1):
nx = ox + x
ny = oy
if h != 0:
ny = oy + (m * x)
display.pixel(int(nx), int(ny))
else:
if y1 > y2:
ox = x2
oy = y2
h = math.copysign(h, 1)
for y in range(h + 1):
nx = ox
if w != 0:
nx = ox + (y / m)
ny = oy + y
display.pixel(int(nx), int(ny))
La linea viene disegnata implementando l'equazione della rettay = m * x, disegnando ogni singolo punto con la funzione nativa display.pixel(x, y).
Richiede la libreria math oltre, naturalmente, alla libreria picodisplay.
Questa è una demo che usa la funzione line per tracciare 3 linee colorate