Indipendentemente dalla struttura dei dati che utilizzi, può essere utile rimuovere i punti di dati non necessari utilizzando un algoritmo come Algoritmo Ramer-Douglas-Peucker . Prenderà una curva a tratti lineare e rimuoverà punti che deviano meno di una piccola quantità dalla curva in generale. In questo modo, se il tuo utente disegna una linea più o meno dritta, non memorizzerai tutti i punti intermedi in cui il dito è stato.
Il problema è come semplificare e uniformare le curve lineari a tratti. C'è un documento gratuito qui Smoothing efficiente di tratti lineari a tratti con minima deviazione (c'è un collegamento PDF a destra).
Come menzionato dalla World Engineer nella sua risposta, la grafica vettoriale è un'opzione. SVG è un formato popolare ed è basato su XML, quindi è facile da manipolare con gli strumenti esistenti. Insieme ai semplici "punti", può gestire i percorsi (Bézier ed ellittico), il testo, le forme, le informazioni sullo stile (tratto, ecc.) E molto altro. SVG ti offre gli strumenti per rendere il disegno dell'utente esattamente come desideri. Le immagini SVG sono supportate anche nella maggior parte dei browser. Inoltre, poiché è un formato ben stabilito, sono sicuro che ci sono un sacco di librerie esistenti per manipolare le immagini, es. simple-svg . Oppure c'è sempre un buon vecchio bitmap.
Immagino che il processo sarebbe qualcosa di simile a:
- Attendi che l'utente disegna una curva
- Semplifica la curva (tanto o quanto vuoi)
- Rendi la curva, il percorso, la forma, ecc. semplificati sulla tela usando lo stile selezionato.