Qual è la migliore unità di misura per disegnare con script utente?

1

Voglio creare un'app per Android che ti permetta di scrivere script per disegnare cose. Come testo, pulsanti, immagini ... usando opengl.

Ora, se ho una funzione che disegna un'immagine come questa:

drawImage( imageSource, x, y, width, height );

Che tipo di unità di misura dovrei usare per x, y, larghezza e altezza? Potrei usare i pixel, ma hanno densità diverse su dispositivi diversi. Potrei anche usare mm o pollici. O potrei persino usare le unità opengl, da -1 a 1.

Qual è il metodo più facile da usare / migliore? Voglio rendere facile ed efficiente per le persone scrivere script che funzionano bene su diverse dimensioni dello schermo.

    
posta Alexanus 20.12.2018 - 11:29
fonte

1 risposta

1

Che comportamento vuoi? Dalla tua preoccupazione per i dispositivi, suppongo che tu voglia un certo livello di portabilità.

A cosa serve il caso? Potrebbe essere più sensato per casi d'uso diversi (ad es. Per manipolazione di foto, animazione procedurale, simulazioni scientifiche, sviluppo di giochi, ecc ...)

Direi che è meglio fornire la larghezza e l'altezza (in qualunque unità tu usi) dello spazio disponibile allo script, e lasciare che lo sviluppatore capisca se vuole ridimensionare l'immagine ...

A volte lo sviluppatore potrebbe desiderare che un'immagine abbia le stesse dimensioni fisiche. In tal caso è utile fornire la larghezza e l'altezza in unità fisiche (ad esempio mm). Tuttavia, a volte lo sviluppatore potrebbe desiderare la stessa dimensione in pixel o la stessa proporzione dello spazio disponibile.

Considera anche che per lo sviluppatore, a volte è utile sapere che qualcosa è più piccolo di un pixel, e talvolta i pattern devono essere pixel perfetti.

Considera i seguenti esempi:

  • Se scrivo uno script che genera un frattale, voglio avere la migliore risoluzione possibile per il dispositivo, così da mostrare quanti più dettagli. E voglio anche sapere quanti pixel sono grandi, in modo da non generare più dettagli del necessario.
  • Se sto usando il codice per generare il dithering, o se voglio applicare una convoluzione (intendo un kernel come inteso nell'elaborazione dell'immagine) su un'immagine, dovrò anche conoscere la dimensione in pixel.
  • D'altro canto, se voglio fornire un righello sullo schermo, che l'utente può effettivamente usare per misurare le cose, voglio assicurarmi che abbia le stesse unità fisiche.
  • Inoltre, se creo l'animazione per un film, desidero che tutto sia in scala con il dispositivo.
  • Ci saranno casi limite, ad esempio, se aggiungo un codice QR, potrei volerlo scalare ... ma non essere più piccolo di una data dimensione fisica per assicurarmi che le telecamere possano riprenderlo.
  • Infatti, qualcosa di simile accade quando aggiungi del testo al problema (non vuoi che il testo diventi troppo piccolo), il che ti farà considerare le unità relative ai font (almeno fornisci un modo per interrogare quanto grande sarebbe un testo essere su un determinato font).

Quindi, direi di fornire misure in entrambi: pixel e alcune unità fisiche (ad esempio mm). Se lo sviluppatore vuole lavorare in proporzione dello spazio disponibile, può calcolare le proporzioni. Se vogliono capire il rapporto tra pixel e unità fisiche, possono farlo, e se vogliono fare qualcos'altro, probabilmente lo possono fare anche loro.

Per la tua considerazione: potresti supportare unità annotate nel tuo script. Guarda l'esempio di CSS, in particolare con calc che ti permette di calcolare con diverse unità di misura (ad esempio cinque pixel dal centro dello schermo).

Detto questo, tra unità fisiche e pixel per la chiamata primitiva: preferisci i pixel. Sono più versatili (assumendo che lo sviluppatore possa conoscere la proporzione delle unità fisiche). Perché? Fai riferimento agli esempi sopra, le unità fisiche ti portano solo lontano. Inoltre, lavorerebbero in contesti non collegati alle unità fisiche, il che aiuterà anche a trasferire il codice da un'altra piattaforma.

    
risposta data 20.12.2018 - 13:28
fonte

Leggi altre domande sui tag