Ho sviluppato una .gex contenente alcune funzioni aggiuntive di disegno da aggiungere a quelle già integrate. Non ne sono molte e ho intenzione di farne delle altre in futuro.
Download gex
Download esempio .gm8
Ecco una lista delle funzioni presenti nella gex:
DrawEllipseExt(xc, yc, r_max, r_min, rot, n_seg, line_type);
- Disegna un'ellisse formato da n_seg segmenti con centro (xc,yc) ruotata di rot gradi di raggio maggiore r_max e raggio minore r_min;
-line_type è lo stile di disegno della figura e può essere 0, 1 o 2.- 0: solo contorno
1: effetto "wireframe"
2: riempito
- 0: solo contorno
DrawArchimedeanSpiral(xc, yc, r, n_spire, forma);
- Disegna una spirale di Archimede formata da n_spire spire, ognuna delle quali è formata da un numero di
segmenti pari al parametro "forma". La spirale avrà come centro il punto (xc,yc) e raggio r.
-forma rappresenta la precisione con la quale viene disegnata la figura e deve essere compresa tra 3 e 64.
In pratica indica di quanti "lati" si compone la figura ogni 360 gradi (ogni spira). Se ad esempio la spirale deve essere
a forma di triangolo il valore di forma sarà 3, se deve essere a forma di esagono deve essere 6, ecc.
DrawArchimedeanSpiralExt(xc, yc, r, n_spire, forma, rot, larghezza_linea);
- Disegna una spirale di Archimede formata da n_spire spire, ognuna delle quali è formata da un numero di
segmenti pari al parametro "forma". La spirale avrà come centro il punto (xc,yc), raggio r e sarà ruotata di
rot gradi.
larghezza_linea specifica inoltre lo spessore della linea di disegno
-forma rappresenta la precisione con la quale viene disegnata la figura e deve essere compresa tra 3 e 64.
In pratica indica di quanti "lati" si compone la figura ogni 360 gradi (ogni spira). Se ad esempio la spirale deve essere
a forma di triangolo il valore di forma sarà 3, se deve essere a forma di esagono deve essere 6, ecc.
- Disegna una spirale di Fermat formata da n_spire spire, ognuna delle quali è formata da un numero di
segmenti pari al parametro "forma". La spirale avrà come centro il punto (xc,yc) e raggio r.
-forma rappresenta la precisione con la quale viene disegnata la figura e deve essere compresa tra 3 e 64.
In pratica indica di quanti "lati" si compone la figura ogni 360 gradi (ogni spira). Se ad esempio la spirale deve essere
a forma di triangolo il valore di forma sarà 3, se deve essere a forma di esagono deve essere 6, ecc.
DrawFermatSpiralExt(xc, yc, r, n_spire, forma, rot, larghezza_linea);
- Disegna una spirale di Fermat formata da n_spire spire, ognuna delle quali è formata da un numero di
segmenti pari al parametro "forma". La spirale avrà come centro il punto (xc,yc), raggio r e sarà ruotata di
rot gradi.
-larghezza_linea specifica inoltre lo spessore del disegno
-forma rappresenta la precisione con la quale viene disegnata la figura e deve essere compresa tra 3 e 64.
In pratica indica di quanti "lati" si compone la figura ogni 360 gradi (ogni spira). Se ad esempio la spirale deve essere
a forma di triangolo il valore di forma sarà 3, se deve essere a forma di esagono deve essere 6, ecc.
- Disegna una stella di n_punte punte, centrata in (xc,yc).
dimensioni rappresenta la distanza in pixel tra il centro e le punte.
Il numero di punte deve essere >=3. Nel caso venga passato minore di 3 verrà automaticamente portato a 3.
- Disegna una stella di n_punte punte, centrata in (xc,yc) e ruotata di rot gradi.
-r_centro rappresenta la distanza in pixel tra il centro e il poligono interno alla stella.
-lunghezza_punte è invece la distanza tra il centro e le punte.
Giocando con questi due valori la stella assumerà dimensioni e proporzioni diverse.
-rot_punte indica invece l'angolazione dele punte
-line_type è lo stile di disegno della figura e può essere 0, 1 o 2.
0: solo contorno
1: effetto "wireframe"
2: riempito
-line_width è lo spessore della linea del disegno nel caso in cui line_type sia uguale a 0.
Il numero di punte deve essere >=3. Nel caso venga passato minore di 3 verrà automaticamente portato a 3.
Mi sono basato quasi interamente su formule matematiche relative a crechi ed ellissi. In particolare con la funzione DrawEllipseExt è possibile non solo disegnare un'ellisse ruotata (cosa che con la funzione di GM draw_ellipse non è possibile fare) ma anche creare molte altre forme geometriche poligonali come ad esempio triangoli, rettangoli, quadrati, esagoni, cerchi (se per cerchio intendiamo un insieme di segmenti), ecc..