gonum / gonum/plot

vg,vg/draw: primitives for an Ellipse

Aperta
#641 1 commento 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Go
Stelle
3k
Fork
201
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

unless I am mistaken, gonum/plot doesn't expose primitives to draw ellipses nor arcs of ellipses.
`vg.Path` exposes a `vg.ArcComp` but that's only to draw a circular arc.

one can of course draw an ellipse with a combination of `vg.CurveComp` (quad or cubic ones), according to that paper:
`Drawing an elliptical arc using polylines, quadratic or cubic Bezier curves", L. Maisonobe`

An electronic version may be found at:
- http://spaceroots.org/documents/ellipse/elliptical-arc.pdf

I've already provided such an implementation for Gio.
I could probably provide one for gonum/plot as well.

I'd propose to put it into `vg/draw`:
```go
package draw

// EArc adds an elliptical arc to the path. The implied ellipse is defined
// by its focus points f1 and f2.
// The arc starts in the current point and ends angle radians along the ellipse boundary.
// The sign of angle determines the direction; positive being counter-clockwise,
// negative clockwise.
// If path is nil, a new path is created.
func EArc(path *vg.Path, f1, f2 vg.Point, angle float64) { ... }
```

WDYT?

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia in vg/draw ed esamina vg.Path e le primitive esistenti ArcComp e CurveComp. Usa il paper collegato di Maisonobe per comprendere la geometria EArc proposta; il lavoro è completato quando gli archi ellittici supportano il comportamento indicato per il punto focale, la direzione dell’angolo e il percorso nil.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
go
Ambito
computer-graphics
Tipo di issue
Funzionalità
Difficoltà
4/5
Tempo stimato
3-5 giorni
Stato di attività
Ferma
Chiarezza
Abbastanza chiara
Idoneità per principianti
38/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.