ITPI20070093A1 - Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna - Google Patents

Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna Download PDF

Info

Publication number
ITPI20070093A1
ITPI20070093A1 IT000093A ITPI20070093A ITPI20070093A1 IT PI20070093 A1 ITPI20070093 A1 IT PI20070093A1 IT 000093 A IT000093 A IT 000093A IT PI20070093 A ITPI20070093 A IT PI20070093A IT PI20070093 A1 ITPI20070093 A1 IT PI20070093A1
Authority
IT
Italy
Prior art keywords
output
notable
point
generating
grapheme
Prior art date
Application number
IT000093A
Other languages
English (en)
Inventor
Mario Pirchio
Original Assignee
Mario Pirchio
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Mario Pirchio filed Critical Mario Pirchio
Priority to IT000093A priority Critical patent/ITPI20070093A1/it
Priority to PCT/EP2008/006394 priority patent/WO2009018983A1/en
Priority to US12/672,010 priority patent/US8766987B2/en
Priority to CN2008801023465A priority patent/CN101878488B/zh
Priority to EP08785324.8A priority patent/EP2179399B1/en
Publication of ITPI20070093A1 publication Critical patent/ITPI20070093A1/it

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/20Drawing from basic elements, e.g. lines or circles
    • G06T11/203Drawing of straight lines or curves
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/802D [Two Dimensional] animation, e.g. using sprites
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B11/00Teaching hand-writing, shorthand, drawing, or painting

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Educational Administration (AREA)
  • Educational Technology (AREA)
  • Processing Or Creating Images (AREA)
  • Controls And Circuits For Display Device (AREA)
  • Measurement Of The Respiration, Hearing Ability, Form, And Blood Characteristics Of Living Organisms (AREA)

Description

sullo schermo del computer una penna virtuale che scriva e disegni su una lavagna virtuale in modo da risultare per lo studente piacevole e realistica quanto la scrittura di un vero insegnante.
Nella scrittura ad esempio del grafema "a" (Fig. 1A-1E), indicato con 50, l'insegnante si posiziona generalmente sul punto 51, scrive il tratto che va da tale punto fino al punto 52, solleva la penna per andare a posizionarsi sul punto 53, scrive il tratto fino al punto 54, e termina sollevando di nuovo la penna. Nel sollevarsi e nello spostarsi dal punto 52 al punto 53 la penna segue una traiettoria 56 che non è rettilinea, ma che dipende dalla velocità di spostamento e dalla forma dell'ultimo tratto disegnato e del successivo tratto da disegnare. Inoltre, nella parte centrale del primo tratto, fra i punti 51 e 52, la velocità di scrittura sarà generalmente maggiore 57 che nel resto del grafema, in quanto tale parte centrale risulta più rettilinea. E se si sta scrivendo con una penna stilografica, in tale parte centrale lo spessore del tratto risulterà maggiore 58.
E se si disegna il rettangolo 60 (Fig. 1F-1G) senza mai sollevare la penna, partendo ad esempio dal punto 61 e disegnando poi fino ai punti 62, 63 e 64, quando la penna raggiunge il punto 62 deve fermarsi per qualche attimo prima di iniziare a disegnare il tratto verticale che va al punto 63, a causa del brusco cambiamento di direzione, altrimenti sarebbe impossibile disegnare l'angolo retto, e verrebbe disegnato un angolo arrotondato. Analogamente per i punti 63 e 64.
Perciò, affinché un software possa animare sullo schermo una penna virtuale che scriva il grafema 50 o disegni il rettangolo 60 in modo da risultare indistinguibile da una penna reale, devono essere superate varie difficoltà tecniche.
Primo. Le linee che compongono il grafema o il disegno non devono essere presentate tutte insieme come avviene per i font abituali o per le immagini, ma devono essere tracciate sullo schermo una dopo l'altra, seguendo un ordine prestabilito.
Secondo. La velocità di scrittura deve poter variare, e aumentare ad esempio quando vengono tracciate delle linee lunghe e diritte.
Terzo. Lo spessore del tratto deve poter variare, come avviene ad esempio con una vera penna stilografica.
Quarto. La penna, quando è previsto un brusco cambio di direzione, come ad esempio per i vertici del grafema "Z" o per gli angoli di un rettangolo, deve effettuare una breve pausa.
Quinto. Quando la penna deve sollevarsi e spostarsi da un punto ad un altro senza disegnare nulla, come ad esempio durante lo spostamento da un grafema all'altro di una stessa parola o dalla fine di una parola all'inizio della parola successiva, si deve calcolare la traiettoria che la penna deve seguire.
Sesto. L'immagine della penna deve spostarsi sullo schermo in modo che la sua punta si trovi sempre accanto all'ultimo pixel disegnato, come avviene per una vera penna, e deve essere possibile modificare tale immagine o presentarne altre durante ad esempio il sollevamento della penna virtuale dal piano di scrittura.
Settimo. Nel caso della scrittura "legata", si deve calcolare la traiettoria che la penna virtuale, rimanendo abbassata, deve seguire per "legare" i vari grafemi di una stessa parola.
Sintesi dell'invenzione
L'obiettivo di questa invenzione è la realizzazione di un metodo che permetta ad un utilizzatore non esperto di computer di animare sullo schermo una penna virtuale che scriva ad esempio le parole immesse con la tastiera dall'utilizzatore stesso o più in generale che disegni, e che lo faccia in modo che sembri la scrittura di una vera penna, risolvendo i suddetti problemi.
Questo obiettivo viene raggiunto dal metodo secondo l'invenzione, come definito dalla rivendicazione n° 1. Le rivendicazioni dipendenti definiscono aspetti vantaggiosi dell'invenzione.
Breve descrizione dei disegni
Le figure 1A-1E mostrano le fasi e le problematiche della scrittura manuale di un grafema "a" esemplificativo.
Le figure 1F-1G mostrano la problematica della pausa nella tracciatura di un rettangolo in corrispondenza degli angoli.
Le figure 2A-2C, 3A-3C e 4A-4B mostrano come si crea secondo l'invenzione ad esempio un grafema "a".
Le figure 5A-5B mostrano la fase di impostazione del testo da scrivere e dei relativi parametri da parte di un utente.
La figura 6 mostra la fase di recupero delle informazioni delle coordinate dei grafemi da scrivere e della loro conversione in coordinate da schermo.
La figura 7 mostra la fase di recupero delle informazioni delle pause, dello stato della penna (up/down), della velocità e dello spessore con cui scrivere il testo immesso dall'utente.
La figura 8 mostra la fase di creazione del vettore degli istanti temporali in cui deve essere iniziato il disegno di ogni pixel.
La figura 9 mostra la fase di tracciatura di un grafema "a" in base ai vettori coordinate, velocità e spessore precedentemente calcolati.
Le figure 10A-10D mostra la traiettoria che la penna virtuale deve seguire per coprire tratti in cui la penna si solleva nella tracciatura di un grafema.
Le figure 11A-11C mostrano la traiettoria che la penna virtuale deve seguire per legare grafemi successivi.
Descrizione di una realizzazione preferita
II metodo può essere scomposto in due fasi, indicate con 1 e 2.
La fase 1 permette la creazione di grafemi e disegni, e la loro memorizzazione in un file. I grafemi e i disegni vengono creati specificando un sottoinsieme di punti (che chiameremo punti notevoli) dell'insieme dei punti che formano le linee da disegnare. Per ogni punto notevole vengono impostati certi attributi, ovvero le informazioni necessarie per la scrittura del grafema o del disegno, e cioè coordinate, ordinamento dei tratti da scrivere, eventuali pause della penna, tratti in cui la penna si solleva e si sposta senza scrivere, velocità di scrittura, spessore del tratto, esclusione dalla legatura. Tutte queste informazioni vengono poi memorizzate in un file.
La fase 2 permette invece il recupero delle informazioni memorizzate nei file creati durante la fase 1 e il loro utilizzo per animare sullo schermo del computer una penna virtuale.
La fase 1 viene realizzata utilizzando una applicazione che chiameremo "Maker".
La fase 2 viene realizzata utilizzando una applicazione che chiameremo "Player".
Fase 1. Creazione di grafemi e disegni, e loro memorizzazione in un file.
La costruzione dei grafemi viene realizzata con il "Maker". L'utente può interagire con il Maker con il solo ausilio del mouse e della tastiera, senza cioè utilizzare tavolette grafiche o altri strumenti di questo tipo.
Fase 1. Step A. Creazione dei punti notevoli di un grafema o disegno, e impostazione dei loro attributi.
Viene ora descritto come si crea ad esempio un grafema "a" indicato con 50 (Fig. 2A-2C e 3A-3C).
Si osservi le figura 2A-2C. L'utente fa clic con il mouse 5 volte, e cioè sui punti notevoli 101, 102, 103, 104 e 105, in questo ordine. Dopo ogni clic il Maker memorizza nel buffer 200 la larghezza W e l'altezza H del rettangolo 111 che racchiude i punti notevoli immessi fino a quel momento, memorizza nel buffer 201 le coordinate di tali punti notevoli normalizzandole fra 0 e 1, interpola 202 tali coordinate (mediante algoritimi noti, come interpolazione spline, eco.) normalizzandole al rettangolo definito dal buffer 200, e mostra il tratto interpolato 203, cioè il tratto effettivo che verrà poi disegnato dalla penna virtuale.
II tipo di interpolazione da utilizzare e gli eventuali relativi parametri e pesi vengono scelti dall'utente, e vengono memorizzati dal Maker nel buffer 204.
Il Maker colora inoltre il punto notevole 101 di verde e il punto notevole 105 di rosso, per segnalare che il tratto 203 verrà disegnato (dal Player) nella direzione che va dal punto notevole 101 al punto notevole 105, cioè seguendo l'ordine con cui l'utente ha immesso i punti notevoli. L'utente può però richiedere al Maker di invertire l'ordine dei punti notevoli memorizzati nel buffer 201, per cui il Maker colorerà il punto notevole 101 di rosso e il punto notevole 105 di verde, per segnalare che il tratto 203 verrà disegnato (dal Player) nella direzione che va dal punto notevole 105 al punto notevole 101. L'utente può inoltre traslare ognuno dei punti notevoli immessi, può eliminare uno o più dei punti notevoli immessi, e può aggiungere altri punti notevoli, in modo tale che la forma del tratto 203 sia davvero rispondente alle sue esigenze.
Per ognuno dei punti notevoli immessi l'utente definisce la durata dell'eventuale pausa che la penna virtuale dovrà osservare quando, durante la scrittura, giungerà su tale punto notevole, e il Maker la memorizza nel buffer 205. Il tratto 203 non possiede angoli, e quindi la penna virtuale dovrà disegnarlo senza mai fermarsi. Di conseguenza la durata delle pause dei punti notevoli 101, 102, 103, 104 e 105 verrà impostata a 0.
Per ognuno dei punti notevoli immessi l'utente decide anche se la penna dovrà alzarsi oppure no. Per il tratto 203 la penna virtuale dovrà alzarsi solo quando sarà giunta alla fine del tratto, per cui l'utente imposterà "down" per i punti notevoli 101, 102, 103 e 104, e "up" per il punto notevole 105. Il Maker memorizzerà questi dati nel buffer 206.
È importante precisare che ogni grafema viene suddiviso in un certo numero di tratti, tanti quanti sono i movimenti che una vera penna, senza mai alzarsi e senza mai fermarsi, esegue nello scrivere il grafema o il disegno. Quindi i punti notevoli per i quali la durata della pausa è maggiore di 0 o lo stato della penna è "up" costituiscono la fine di un tratto. Nel caso appena descritto, perciò, il punto notevole 105 costituisce la fine del primo tratto.
Per ognuno dei punti notevoli immessi, inoltre, l'utente definisce la velocità di scrittura a valle di tale punto notevole. Da notare che la velocità con cui la penna virtuale scriverà verrà decisa con il Player. Con il Maker si dovrà solo stabilire se tutto il tratto verrà disegnato alla velocità che verrà decisa con il Player, oppure se qualche pezzo del tratto dovrà essere disegnato più velocemente o più lentamente. Se 1'utilizzatore desidera ad esempio che la parte centrale e rettilinea del tratto 203 venga disegnata un po' più velocemente della parte iniziale e della parte finale, allora dovrà impostare la velocità dei punti notevoli 101, 102, 103, 104 e 105 rispettivamente su ad esempio 80%, 100%, 150%, 100% e 80%. Il Maker memorizzerà questi dati nel buffer 207.
Per ognuno dei punti notevoli immessi, infine, l'utente definisce lo spessore con cui la penna dovrà disegnare a valle di tale punto notevole. Se 1'utilizzatore desidera ad esempio che la parte centrale e rettilinea del tratto 203 venga disegnata con un spessore maggiore rispetto alla parte iniziale e finale, allora dovrà impostare lo spessore dei punti notevoli 101, 102, 103, 104 e 105 rispettivamente su ad esempio 100%, 200%, 400%, 200% e 100%. Il Maker memorizzerà questi dati nel buffer 208.
Si osservi ora le figura 3A-3C. L'utente ripete la procedura per il tratto successivo. Fa clic con il mouse 4 volte sui punti notevoli 106, 107, 108 e 109.
Dopo ogni clic il Maker memorizza nel buffer 200 la larghezza W e l'altezza H del rettangolo 111 che racchiude i punti notevoli immessi fino a quel momento, memorizza nel buffer 201 le coordinate normalizzate dei punti notevoli immessi, interpola 202 tali coordinate, e mostra i due tratti interpolati 203. Da notare che il primo tratto risulta dall'interpolazione dei punti notevoli da 101 a 105, mentre il secondo tratto risulta dall'interpolazione dei punti notevoli da 106 a 109. Per ognuno dei punti notevoli immessi, inoltre, l'utente imposta gli eventuali parametri relativi all'interpolazione (buffer 204), la durata dell'eventuale pausa (buffer 205), lo stato della penna (buffer 206), la velocità di scrittura a valle di tale punto notevole (buffer 207) e lo spessore con cui la penna dovrà disegnare a valle di tale punto notevole (buffer 208).
Fase 1. Step B. Definizione del quadrato delimitante il grafema.
Questo step viene eseguito solo per i grafemi (e non viene invece eseguito per i disegni).
L'utente (Fig. 4A-4B) imposta la posizione e le dimensioni del quadrato 420 che il grafema "a" indicato con 50 deve occupare rispetto alle dimensioni della cella 410 (la quale delimita tutti i grafemi aventi uno stesso stile). Il Maker normalizza posizione (LT) e dimensione (WH) del rettangolo 420 rispetto al quadrato 410, e memorizza tali valori nel buffer 220.
Fase 1. Step C. Memorizzazione in un file di grafemi e disegni.
Per i grafemi aventi uno stesso stile vengono memorizzati in un file il buffer 220 (descrivente la cella utilizzata per un singolo grafema) e i buffer 201, 204, 205, 206, 207 e 208 (descriventi gli attributi dei punti notevoli dei singoli grafemi). Si supponga che l'utente abbia memorizzato il grafema "a" indicato con 50 e tutti gli altri grafemi dello stesso stile nel file "Fonti".
Per i disegni vengono memorizzati in un file i buffer 201, 204, 205, 206, 207 e 208, descriventi gli attributi dei punti notevoli del disegno stesso.
Fase 2. Scrittura da parte della penna virtuale (Fig. 5A-5B, 6 e 7).
La scrittura da parte della penna virtuale viene realizzata utilizzando l'applicazione Player. Viene ora descritto prima come si procede per i grafemi, e poi per i disegni.
Fase 2. Step A. Impostazione del testo da scrivere e dei relativi parametri (Fig. 5A-5B).
L'utente, utilizzando ad esempio la tastiera, digita il testo che vuole far scrivere dalla penna virtuale. Si supponga che la prima parola del testo sia "amico", indicata con 511.
L'utente poi specifica quale libreria di font dovrà essere utilizzata. Si supponga che abbia scelto la libreria "Fonti" indicata con 512.
L'utente infine specifica la dimensione (fontsize) dei singoli grafemi, le coordinate del pixel dello schermo a partire dal quale la parola dovrà essere scritta, la velocità con cui scrivere, lo spessore con cui scrivere, e il colore da utilizzare. Si supponga che l'utente abbia scelto il valore 200 pixel per il fontsize, le coordinate (10,10) per la posizione sullo schermo, il valore 500 pixel al secondo per la velocità, il valore 4 pixel per lo spessore, e il colore nero. Questi dati vengono memorizzati dal Player rispettivamente nei buffer 513, 514, 515, 516 e 517.
L'utente a questo punto può ordinare al Player di animare la penna virtuale per la scrittura.
Fase 2. Step B. Lettura dal file dei dati relativi al primo grafema da scrivere (Fig. 6 e 7).
II primo grafema da scrivere è il grafema "a", per cui il Player legge dal file specificato dal buffer 512, cioè dal file "Fonti", i dati necessari per la scrittura di tale grafema, e cioè il suo quadrato all'interno della cella (Fig. 6, buffer 220), le coordinate dei suoi punti notevoli (Fig. 6, buffer 201), i dati relativi al tipo di interpolazione da utilizzare (Fig. 6, buffer 204), la durata dell'eventuale pausa (Fig. 7, buffer 205), lo stato della penna (Fig. 7, buffer 206), la velocità di scrittura a valle di ogni punto notevole (Fig. 7, buffer 207) e lo spessore con cui la penna dovrà disegnare a valle di ogni punto notevole (Fig. 7, buffer 208).
Fase 2. Step C. Calcolo delle coordinate del primo grafema da scrivere (Fig. 6 e 7).
II Player legge i buffer 205 e 206 (Fig. 7) per identificare i tratti del grafema da scrivere. I punti notevoli per i quali la durata della pausa è maggiore di 0 o lo stato della penna è "up" costituiscono la fine di un tratto. Quindi il primo tratto del grafema "a" comprende i primi 5 punti notevoli, e il secondo tratto gli ultimi 4 punti notevoli.
Il Player utilizza il valore del fontsize 513 per trasformare in pixel 611 i dati 220 del quadrato della cella del grafema, e li memorizza nel buffer 612.
II Player utilizza poi i dati del buffer 612 per trasformare in pixel 613 le coordinate 201 dei punti notevoli, e memorizza le nuove coordinate nel buffer 614.
Il Player utilizza poi i dati del buffer 204 per interpolare 615 le coordinate 614 del primo tratto e del secondo tratto, separatamente, e memorizza i valori ottenuti nel buffer 616.
Il Player infine utilizza i dati del buffer 514 per traslare 617 le coordinate 616, ottenendo così le coordinate effettive dei pixel da disegnare, e le memorizza nel buffer 711.
Fase 2. Step D. Calcolo della velocità e dello spessore con cui scrivere il primo grafema (Fig. 7).
Il Player utilizza il valore della velocità 515 per trasformare in pixel al secondo 621 la velocità di scrittura 207 a valle di ogni punto notevole, memorizza i valori ottenuti nel buffer 622, li interpola 623 (mediante interpolazione spline), e memorizza il risultato nel buffer 712.
Il Player utilizza il valore dello spessore 516 per trasformare in pixel 624 lo spessore 208 con cui la penna dovrà disegnare a valle di ogni punto notevole, memorizza i valori ottenuti nel buffer 625, li interpola 626 (mediante interpolazione spline), e memorizza il risultato nel buffer 715.
Fase 2. Step E. Calcolo dei tempi di inizio scrittura di ogni pixel del primo grafema (Fig. 8).
Il Player utilizza i valori dei buffer 711 e 712 per calcolare il tempo (in millisecondi) di inizio scrittura di ogni pixel, e li memorizza nel buffer 713.
Fase 2. Step F. Scrittura del primo tratto del primo grafema (Fig. 9).
Il Player può iniziare l'animazione della penna virtuale.
Il Player presenta sullo schermo l'immagine della penna virtuale posizionandola in modo che la sua punta si trovi subito accanto alle coordinate (75,86) del primo pixel da disegnare, cioè del primo elemento del buffer 711.
Il Player può ora iniziare la scrittura del primo tratto del grafema. Le informazioni sulle coordinate dei pixel da disegnare, sulla velocità con cui disegnarli e sullo spessore con cui disegnarli sono contenute rispettivamente nei buffer 711, 713 e 715.
Il Player fa partire il timer 901, e subito dopo colora il primo pixel del buffer 711 utilizzando lo spessore del primo elemento del buffer 713 e il colore del buffer 517.
Il Player poi legge il tempo del timer 901, cerca nel buffer 713 il primo elemento il cui valore supera il valore letto, e disegna tutti i pixel che precedono tale elemento e che non sono stati ancora disegnati. Lo spessore utilizzato sarà definito dall'elemento (del buffer 715) corrispondente al primo di tali pixel da disegnare.
Il Player legge di nuovo il tempo del timer 901, e così via, disegnando perciò i pezzetti 1, 2, 3, 4 e 5, in questo ordine.
A questo punto la scrittura del primo tratto del primo grafema è completata.
Fase 2. Step G. Sollevamento della penna virtuale e suo spostamento all'inizio del tratto successivo. (Fig. 10A-10D).
Il Player deve ora sollevare la penna virtuale dal pixel 951 e spostarla fino al pixel 953 corrispondente all'inizio del tratto successivo, e per far questo deve calcolare la traiettoria tridimensionale che la punta della penna virtuale dovrà seguire per sollevarsi, spostarsi e abbassarsi.
Il Player calcola innanzitutto la proiezione di tale traiettoria sul piano di scrittura, e la calcola in una situazione di minima velocità (ad esempio 80 pixel al secondo) e in una situazione di massima velocità (ad esempio 2000 pixel al secondo).
Nel caso di minima velocità la proiezione della traiettoria sul piano di scrittura sarà il segmento 961 che unisce l'ultimo pixel disegnato al prossimo pixel da disegnare. In tal caso, infatti, l'ultimo tratto disegnato ha un effetto minimo o nullo sulla traiettoria dello spostamento.
Nel caso di massima velocità la proiezione della traiettoria sul piano di scrittura sarà data dalla curva 969 ottenuta eseguendo 1'interpolazione (spline cubico) dei punti notevoli dell'ultimo tratto disegnato e del primo punto notevole 953 del prossimo tratto da disegnare. Nel caso di un movimento molto veloce, infatti, la traiettoria dello spostamento è fortemente influenzata dall'ultima parte che è stata disegnata.
Poi il Player calcola la curva 965 intermedia fra il segmento 961 e la curva 969, tenendo conto del valore di velocità impostato 515, e memorizza i valori ottenuti nel buffer 921.
Poi il Player calcola la proiezione 975 della traiettoria sul piano z, approssimandola ad una parabola passante per l'ultimo pixel disegnato 951 e per il prossimo pixel da disegnare 953, e per il punto 952 di massimo sollevamento, il quale viene assunto come equidistante dai punti 951 e 953. Sull'asse z viene scelto un sollevamento massimo di 5 centimetri per 1000 pixel di distanza fra i punti 951 e 953. Il valore di 5 centimetri viene scelto assumendo che la distanza dell'osservatore dallo schermo sia 50 centimetri. Il Player memorizza i valori ottenuti nel buffer 922.
A questo punto il Player può iniziare l'animazione per il sollevamento, lo spostamento e l'abbassamento della penna virtuale. I valori del buffer 921 verranno utilizzati per posizionare l'immagine della penna virtuale sul piano di scrittura. I valori del buffer 922 verranno utilizzati per "deformare" l'immagine, ovvero per ruotarla, traslarla e scalarla durante il sollevamento, lo spostamento e l'abbassamento. Viene utilizzato anche un timer 901 per la temporizzazione, analogamente a quanto fatto nello step F della fase 2.
Fase 2. Step H. Scrittura dei tratti successivi del primo grafema (Fig. 9).
Verranno ripetuti gli step F e G fino a disegnare tutti i tratti del primo grafema, e cioè in questo caso i pezzetti 6, 7, 8 e.
Fase 2. Step I. Scrittura dei grafemi successivi di una stessa parola.
Verranno ripetuti gli step da B a H fino a disegnare tutti i grafemi della parola da scrivere.
L'ascissa del primo pixel del secondo grafema sarà uguale alla somma del valore del buffer 514 (Fig. 6), più la larghezza dell'ultimo grafema disegnato misurata in pixel (buffer 612, Fig. 6), più il risultato della moltiplicazione della costante Ci per il valore del fontsize (buffer 513, Fig. 6) per il valore dello spessore (buffer 516, Fig. 7). In questo modo si otterrà una scrittura a passo variabile. E così via per tutti i grafemi della prima parola. Per la costante Ci si è utilizzato generalmente il valore 0.12, ma tale valore può essere impostato dall'utente, memorizzato sul file contenente i grafemi, e letto durante lo step B della fase 2.
Fase 2. Step J. Scrittura delle parole successive. Verranno ripetuti gli step da B a H fino a disegnare tutte le parole del testo da scrivere.
La spaziatura fra due parole verrà calcolata analogamente a quanto fatto nello step I, utilizzando però la costante C2 al posto della costante CI. Per la costante C2 si è utilizzato generalmente il valore 0.30. Il salto di riga verrà calcolato aggiungendo all'ordinata l'altezza della cella, moltiplicata per il valore del fontsize (buffer 513, Fig. 6), e divisa per la costante C3. Per la costante C3 si è utilizzato generalmente il valore 0.55. I valori delle costanti C2 e C3 possono essere impostati dall'utente, memorizzati sul file contenente i grafemi, e letti durante lo step B della fase 2.
Procedura per i disegni.
La procedura per i disegni è analoga a quella descritta per i grafemi, ma molto più semplice, in quanto per i disegni non sono previsti gli step I e J, e lo step B consiste solo nella scelta del disegno da effettuare selezionandolo ad esempio da un elenco.
Scrittura legata (Fig. 11).
Molte persone utilizzano un tipo di scrittura in cui i vari grafemi risultano legati fra di loro. Affinché la penna virtuale possa "legare" automaticamente i grafemi durante la scrittura, si deve calcolare la traiettoria che la penna virtuale, rimanendo abbassata, deve seguire per "legare" tali grafemi.
Si supponga di dover scrivere la parola "libro" indicata con 991 (Fig. 11A-11C).
Per poter "legare" automaticamente i grafemi durante la scrittura di tale parola, durante la fase di creazione dei grafemi (fase 1, step A) si devono impostare anche altri attributi per i punti notevoli di ogni grafema, e cioè per ogni grafema si devono specificare i punti notevoli iniziali e finali che non (ripeto, non) devono essere presi in considerazione quando si deve legare tale grafema.
Ad esempio, per il grafema "1" indicato con 981, in caso di legatura con il grafema che lo precede, qualunque esso sia, si deve ignorare il punto notevole 71. In altre parole, tale punto notevole 71 deve essere utilizzato solo se il grafema "1" indicato con 981 è il primo grafema della parola. E l'ultimo punto notevole 72 non deve essere preso in considerazione in caso di legatura con il grafema seguente, qualunque esso sia. In altre parole, tale punto notevole 72 deve essere utilizzato solo se il grafema "1" indicato con 981 è l'ultimo grafema della parola.
Per il grafema "i" indicato con 982, in caso di legatura con il grafema che lo precede, qualunque esso sia, si deve ignorare il punto notevole 73. E in caso di legatura con il grafema che lo segue, qualunque esso sia, si deve ignorare il punto notevole 74.
Per il grafema "b" indicato con 983, in caso di legatura con il grafema che lo precede, qualunque esso sia, si deve ignorare il punto notevole 75. E in caso di legatura con il grafema che lo segue, qualunque esso sia, si deve ignorare il punto notevole 76.
E così via per tutti i grafemi.
Perciò, durante 1'interpolazione ad esempio del tratto di "legatura" fra il grafema "1" indicato con 981 e il grafema "i" indicato con 982, si dovranno prendere in considerazione i punti notevoli dell'ultimo tratto del primo grafema e i punti notevoli del primo tratto del secondo grafema, ignorando però i punti notevoli 72 e 73. Le ascisse dei punti notevoli del secondo grafema verranno inoltre corrette in modo che il primo punto notevole da interpolare del secondo grafema coincida con l'ascissa dell'ultimo punto notevole escluso del primo grafema. Nel caso ad esempio del grafemi "1" e "i" indicati con 981 e con 982 l'ascissa del punto notevole successivo al punto notevole 73 dovrà coincidere con l'ascissa del punto notevole 72.
Da notare infine che, durante la scrittura, il tratto che lega due grafemi può venir scritto in due tempi, come accade per il grafema "i" indicato con 982. Infatti, dopo aver disegnato l'ultimo pixel situato all'interno della cella di tale grafema, la penna virtuale dovrà alzarsi per andare a disegnare il punto notevole 77, e poi dovrà proseguire il disegno della legatura.
La parola "libro" indicata con 991, perciò, scritta in modo "legato", risulterà ad esempio come in 992.
Ovviamente, durante lo step C della fase 1, cioè quando si memorizzano i grafemi in un file, si dovrà impostare un buffer per specificare se i grafemi devono essere legati oppure no, e tale buffer dovrà essere poi letto dal Player.
APPLICAZIONE INDUSTRIALE
Il metodo qui presentato risolve tutte le difficoltà tecniche descritte all'inizio.
Questo metodo infatti permette di creare grafemi o disegni in cui l'utente decide l'ordine con cui i vari tratti devono essere interpolati e disegnati, la velocità e lo spessore con cui i vari tratti devono essere disegnati, e l'eventuale pausa che la penna virtuale deve osservare quando disegna i punti "spigolosi", risolvendo così le prime quattro difficoltà tecniche.
Questo metodo permette inoltre di calcolare la traiettoria di traslazione e di mostrare la penna virtuale che si alza, trasla e si abbassa come fa una vera penna quando si sposta ad esempio fra tratti discontinui di uno stesso grafema, o fra un grafema e l'altro, o fra la fine di una parola e l'inizio della successiva, risolvendo così la quinta e la sesta difficoltà tecnica.
Questo metodo permette infine di creare dei grafemi che possono poi essere disegnati "legandoli" insieme, risolvendo così la settima e ultima difficoltà tecnica.
Utilizzando questo metodo risulta perciò possibile animare una penna virtuale che scrive e disegna sullo schermo del computer in modo da risultare per lo studente piacevole e realistica quanto la scrittura di un vero insegnante.
La descrizione di cui sopra di una forma esecutiva specifica è in grado di mostrare l'invenzione dal punto di vista concettuale in modo che altri, utilizzando la tecnica nota, potranno modificare e/o adattare in varie applicazioni tale forma esecutiva specifica senza ulteriori ricerche e senza allontanarsi dal concetto inventivo, e, quindi, si intende che tali adattamenti e modifiche saranno considerabili come equivalenti della forma esecutiva esemplificata. I mezzi e i materiali per realizzare le varie funzioni descritte potranno essere di varia natura senza per questo uscire dall'ambito dell'invenzione. Si intende che le espressioni o la terminologia utilizzate hanno scopo puramente descrittivo e per questo non limitativo.

Claims (24)

  1. RIVENDICAZIONI 1. Metodo per generare un output su uno schermo costituente in un disegno o in un grafema per mezzo di linee, tracciate da una penna virtuale o similari, comprendente le fasi di: generazione dei disegni/grafemi da parte dell'utilizzatore secondo una serie di tratti di linea separati da punti notevoli, ciascun punto avendo almeno una coppia di coordinate; attribuzione ad ogni punto notevole di un parametro scelto tra: stato della penna up/down dal piano di scrittura, eventuale pausa nel punto e sua durata, velocità di tracciatura del tratto a valle del punto notevole, spessore di tracciatura del tratto a valle del punto notevole, esclusione dalla "legatura", o loro combinazione; - memorizzazione di detti punti e dei relativi parametri per ogni disegno/grafema da eseguire; creazione di un output a partire da detta memorizzazione costituente in una traiettoria di detta penna seguente detti punti, e in tratti di linee o assenza di tratti di linee tra detti punti; la traiettoria di detta penna tenendo conto dei valori di detto o ciascun parametro in detti punti e/o dei valori di detto o ciascun parametro interpolati tra detti punti.
  2. 2. Metodo per generare un output su uno schermo secondo la rivendicazione 1, in cui detta fase di generazione è raggiunta da un utente con l'ausilio di una applicazione di generazione (Maker) usando un mouse e/o una tastiera.
  3. 3. Metodo per generare un output su uno schermo secondo la rivendicazione 2, in cui in detta fase di generazione un utente crea un grafema/disegno mediante click del mouse, ad ogni click corrispondendo un punto notevole.
  4. 4. Metodo per generare un output su uno schermo secondo la rivendicazione 3, in cui dopo ogni clic detta applicazione memorizza in un buffer la larghezza (W) e l'altezza (H) di un rettangolo che racchiude i punti notevoli immessi fino a quel momento, memorizzando in detto buffer le coordinate di tali punti notevoli e normalizzandole fra 0 e 1
  5. 5. Metodo per generare un output su uno schermo secondo la rivendicazione 4, in cui dette coordinate di detti punti, dopo essere state memorizzate e normalizzate, vengono interpolate mediante algoritmi predeterminati e normalizzate a detto rettangolo, mostrando infine il tratto interpolato.
  6. 6. Metodo per generare un output su uno schermo secondo la rivendicazione 1, in cui detti punti notevoli immessi possono essere traslati per trascinamento col mouse, eliminati, nonché è possibile aggiungere punti notevoli.
  7. 7. Metodo per generare un output su uno schermo secondo la rivendicazione 1, in cui detta fase di creazione di un output viene eseguita da una applicazione di creazione di output (Player) che genera l'output di disegni/grafemi su uno schermo mediante detta penna virtuale.
  8. 8. Metodo per generare un output su uno schermo secondo la rivendicazione 7, in cui detta applicazione di generazione (Maker) associa a ciascun punto notevole un parametro che viene memorizzato, scelto tra un primo ed un secondo parametro, il tratto esistente tra i due punti notevoli essendo disegnato da detta penna virtuale attraverso detta applicazione di creazione di output (Player) nella direzione che va dal primo punto notevole al secondo punto notevole nel caso in cui al primo punto notevole è associato il primo parametro ed al secondo punto notevole il secondo parametro, mentre è disegnato in senso inverso se al primo punto notevole è associato il secondo parametro ed al secondo punto notevole il primo parametro.
  9. 9. Metodo per generare un output su uno schermo secondo la rivendicazione 7, in cui detta applicazione di generazione (Maker) associa a ciascun punto notevole una pausa che viene memorizzata, detta penna virtuale attraverso detta applicazione di creazione di output (Player) fermandosi in detto punto per un tempo corrispondente a detta pausa.
  10. 10. Metodo per generare un output su uno schermo secondo la rivendicazione 7, in cui detta applicazione di generazione (Maker) associa a ciascun punto notevole un parametro che viene memorizzato, scelto tra un parametro di "up" e di "down", detta applicazione di creazione di output (Player), a partire da un primo punto notevole e nel tratto che serve a raggiungere un secondo punto notevole, disegnando con detta penna virtuale abbassata oppure facendo procedere detta penna virtuale sollevata, a seconda nel caso in cui al primo punto notevole è associato parametro di "up" o di "down".
  11. 11. Metodo per generare un output su uno schermo secondo la rivendicazione 7, in cui detta applicazione di generazione (Maker) associa a ciascun punto notevole un parametro di velocità che viene memorizzato, detta applicazione di creazione di output (Player), a partire da un primo punto notevole e nel tratto che serve a raggiungere un secondo punto notevole, facendo procedere detta penna virtuale con una velocità scelta tra la velocità associata a detto primo punto notevole o una velocità che varia in modo proporzionale tra la velocità associata a detto primo e secondo punto notevole.
  12. 12. Metodo per generare un output su uno schermo secondo la rivendicazione 7, in cui detta applicazione di generazione (Maker) associa a ciascun punto notevole un parametro di spessore che viene memorizzato, detta applicazione di creazione di output (Player), a partire da un primo punto notevole e nel tratto che serve a raggiungere un secondo punto notevole, facendo disegnare a detta penna virtuale una linea con uno spessore corrispondente a detto parametro.
  13. 13. Metodo per generare un output su uno schermo secondo la rivendicazione 7, in cui detta applicazione di generazione (Maker), in caso di generazioni di un grafema, associa a detto grafema parametri di posizione e dimensioni di un quadrato che il grafema deve occupare e memorizza detti parametri, in modo da omogeneizzare le dimensioni di grafemi diversi da affiancare.
  14. 14. Metodo per generare un output su uno schermo secondo la rivendicazione 13, in cui detta applicazione di generazione (Maker), in caso di generazioni di una serie di grafemi, associa a detta serie di grafemi parametri di posizione e dimensioni di un rettangolo che detta serie di grafemi devono occupare e memorizza detti parametri, detto rettangolo contenendo i quadrati corrispondenti a ciascun grafema.
  15. 15. Metodo per generare un output su uno schermo secondo la rivendicazione 13, in cui detta applicazione di generazione (Maker), in caso di generazioni di una serie di grafemi simili, memorizza detti grafemi dello stesso stile in un file di stile (Font).
  16. 16. Metodo per generare un output su uno schermo secondo la rivendicazione 15, in cui detta applicazione di creazione di output (Player), in caso di creazione di una serie di grafemi simili, riceve un input da una tastiera corrispondente a detta serie di grafemi ed estrae detti grafemi dello stesso stile da detto file di stile (Font).
  17. 17. Metodo per generare un output su uno schermo secondo le rivendicazioni da 7 a 16, in cui detta applicazione di creazione di output (Player), in caso di creazione di un grafema, estrae da memoria i rispettivi dati di tutti i punti notevoli di detto grafema, e li fa tracciare da detta penna virtuale secondo le posizioni, velocità, spessore, direzione e "up" o "down".
  18. 18. Metodo per generare un output su uno schermo secondo le rivendicazione , in cui detta applicazione di creazione di output (Player), fa comparire inizialmente sullo schermo l'immagine della penna virtuale posizionandola in modo che la sua punta si trovi subito accanto alle coordinate del primo punto notevole .
  19. 19. Metodo per generare un output su uno schermo secondo le rivendicazione 10, in cui detta applicazione di creazione di output (Player), nel muovere la penna virtuale tra un primo punto notevole cui è associato parametro di "up" e un secondo punto notevole cui è associato parametro di "down" segue una traiettoria tridimensionale.
  20. 20. Metodo per generare un output su uno schermo secondo le rivendicazione 19, in cui detta applicazione di creazione di output (Player), nel muovere la penna virtuale tra un primo punto notevole cui è associato parametro di "up" e un secondo punto notevole cui è associato parametro di "down" procede con la determinazione della velocità nel primo punto notevole, e poi all'interpolazione della proiezione della traiettoria sul piano di scrittura tra detto primo punto notevole e detto secondo punto notevole in funzione di detta velocità, detta traiettoria tenendo conto di detta velocità per creare una continuità del movimento della penna virtuale dal momento in cui si stacca dal piano di scrittura.
  21. 21. Metodo per generare un output su uno schermo secondo le rivendicazione 19, in cui detta applicazione di creazione di output (Player), nel muovere la penna virtuale tra un primo punto notevole cui è associato parametro di "up" e un secondo punto notevole cui è associato parametro di "down" deforma l'immagine di detta penna ruotandola, traslandola e scalandola durante il sollevamento .
  22. 22. Metodo per generare un output su uno schermo secondo le rivendicazione 19, in cui detta applicazione di creazione di output (Player), nel muovere la penna virtuale segue una temporizzazione preimpostata .
  23. 23. Metodo per generare un output su uno schermo secondo la rivendicazione 16, in cui detta applicazione di creazione di output (Player), in caso di creazione di una serie di grafemi simili tracciati in modo continuo, raccorda l'ultimo punto notevole di un grafema precedente con il primo punto notevole di un grafema successivo.
  24. 24. Metodo per generare un output su uno schermo secondo la rivendicazione 16, in cui detta applicazione di creazione di output (Player), in caso di creazione di una serie di grafemi simili tracciati in modo discontinuo, unisce l'ultimo punto notevole di un grafema precedente con il primo punto notevole di un grafema successivo con un tratto di interspazio, l'ultimo punto notevole di un grafema precedente avendo un parametro "up" e il primo punto notevole di un grafema successivo avendo un parametro "down", in modo che detto tratto di interspazio è seguito da detta penna in modo sollevato,
IT000093A 2007-08-08 2007-08-08 Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna ITPI20070093A1 (it)

Priority Applications (5)

Application Number Priority Date Filing Date Title
IT000093A ITPI20070093A1 (it) 2007-08-08 2007-08-08 Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna
PCT/EP2008/006394 WO2009018983A1 (en) 2007-08-08 2008-08-04 Method to animate on a computer screen a virtual pen which writes and draws
US12/672,010 US8766987B2 (en) 2007-08-08 2008-08-04 Method to animate on a computer screen a virtual pen which writes and draws
CN2008801023465A CN101878488B (zh) 2007-08-08 2008-08-04 在计算机屏幕上驱动进行书写和绘图的虚拟笔的方法
EP08785324.8A EP2179399B1 (en) 2007-08-08 2008-08-04 Method to animate on a computer screen a virtual pen which writes and draws

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
IT000093A ITPI20070093A1 (it) 2007-08-08 2007-08-08 Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna

Publications (1)

Publication Number Publication Date
ITPI20070093A1 true ITPI20070093A1 (it) 2009-02-09

Family

ID=39864853

Family Applications (1)

Application Number Title Priority Date Filing Date
IT000093A ITPI20070093A1 (it) 2007-08-08 2007-08-08 Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna

Country Status (5)

Country Link
US (1) US8766987B2 (it)
EP (1) EP2179399B1 (it)
CN (1) CN101878488B (it)
IT (1) ITPI20070093A1 (it)
WO (1) WO2009018983A1 (it)

Families Citing this family (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9418569B2 (en) * 2010-12-22 2016-08-16 Creative Technology Ltd Methods and system for visually representing a rate of writing a plurality of identical chinese characters for at least one user on a display
EP2846274A3 (en) * 2011-12-29 2015-05-06 Huawei Technologies Co., Ltd. Contact searching method and apparatus, and applied mobile terminal
US9529486B2 (en) * 2012-03-29 2016-12-27 FiftyThree, Inc. Methods and apparatus for providing a digital illustration system
US9542093B2 (en) * 2013-05-07 2017-01-10 FiftyThree, Inc. Methods and apparatus for providing partial modification of a digital illustration
CN104504411B (zh) * 2014-12-24 2018-04-20 英华达(上海)科技有限公司 一种手写文字的三维打印建模装置及方法
US10168899B1 (en) * 2015-03-16 2019-01-01 FiftyThree, Inc. Computer-readable media and related methods for processing hand-drawn image elements
US10347016B2 (en) * 2016-01-12 2019-07-09 Monotype Imaging Inc. Converting font contour curves
ES2610794B2 (es) 2016-06-17 2017-09-19 Universidad De Las Palmas De Gran Canaria Método y sistema para generar texto manuscrito con diferentes grados de madurez del escritor
CN108459782A (zh) * 2017-02-17 2018-08-28 阿里巴巴集团控股有限公司 一种输入方法、装置、设备、系统和计算机存储介质
CN107391148B (zh) * 2017-07-28 2020-09-15 广州视源电子科技股份有限公司 视图元素保存方法、装置、电子设备及计算机存储介质
US10936792B2 (en) 2017-12-21 2021-03-02 Monotype Imaging Inc. Harmonizing font contours
IL264422B (en) * 2019-01-23 2021-05-31 Ego Moshe Drawing tools
LU101625B1 (en) * 2020-02-03 2021-08-03 Microsoft Technology Licensing Llc Systems and methods for grid-aligned inking
CN112884863B (zh) * 2021-01-21 2022-07-19 广州朗国电子科技股份有限公司 基于电子白板自动矫正三角形的绘图方法及其应用
NL2028052B1 (en) * 2021-04-23 2022-11-02 Helmling Akiem Apparatus and method to generate an animated graphical object

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5237647A (en) * 1989-09-15 1993-08-17 Massachusetts Institute Of Technology Computer aided drawing in three dimensions
US5590247A (en) * 1993-08-31 1996-12-31 Casio Computer Co., Ltd. Character string outputting method and apparatus capable of varying sizes of characters
US6556712B1 (en) * 1996-05-23 2003-04-29 Apple Computer, Inc. Methods and apparatus for handwriting recognition
US6289124B1 (en) * 1998-04-27 2001-09-11 Sanyo Electric Co., Ltd. Method and system of handwritten-character recognition
US7227993B2 (en) * 2003-01-27 2007-06-05 Microsoft Corporation Learning-based system and process for synthesizing cursive handwriting
US7174043B2 (en) * 2003-02-25 2007-02-06 Evernote Corp. On-line handwriting recognizer
US7310091B2 (en) * 2003-09-16 2007-12-18 Acer Incorporated Handwriting pen capable of simulating different strokes
KR100703331B1 (ko) * 2005-06-01 2007-04-03 삼성전자주식회사 문자 입력에 대해 비주얼 효과를 부여하는 문자 입력 방법및 이를 위한 이동 단말기
CN1896923A (zh) * 2005-06-13 2007-01-17 余可立 英语巴蜀杆栏式汉字化词型翻译中间文本计算机输入方法
CN1996347A (zh) * 2006-09-14 2007-07-11 浙江大学 一种基于书法图像的可视化重现方法
CN100444202C (zh) * 2007-01-24 2008-12-17 杭州电子科技大学 基于混沌理论的动画对象运动轨迹控制方法
US7974472B2 (en) * 2007-06-29 2011-07-05 Microsoft Corporation Feature design for HMM based Eastern Asian character recognition

Also Published As

Publication number Publication date
US20100182328A1 (en) 2010-07-22
EP2179399A1 (en) 2010-04-28
EP2179399B1 (en) 2017-10-04
WO2009018983A1 (en) 2009-02-12
CN101878488B (zh) 2013-03-06
US8766987B2 (en) 2014-07-01
CN101878488A (zh) 2010-11-03

Similar Documents

Publication Publication Date Title
ITPI20070093A1 (it) Metodo per animare sullo schermo di un computer una pennavirtuale che scrive e disegna
Harary et al. 3D Euler spirals for 3D curve completion
Turquin et al. A sketch-based interface for clothing virtual characters
Olsen et al. Sketch-based modeling: A survey
Schmid et al. Overcoat: an implicit canvas for 3d painting
JP2939147B2 (ja) 手書き文字入力表示装置および方法
CN102509357B (zh) 基于笔触的铅笔素描模拟和绘制系统
US20080036773A1 (en) Pen-based 3d drawing system with 3d orthographic plane or orthrographic ruled surface drawing
US8102403B1 (en) Techniques for interior coordinates
US20080204457A1 (en) Rig Baking
CN102687176A (zh) 用于展现动感对象的方法
TW439039B (en) Method and apparatus for forming a font and the font produced, method and apparatus for drawing a blurred figure
CN108228998A (zh) 基于web的电脑出格设计系统
CN104574467B (zh) 一种概念图自动生成方法及系统
Kim et al. An Example‐based Approach to Synthesize Artistic Strokes using Graphs
CN105893653B (zh) 一种折叠剪纸仿真制作方法
JP2011022685A (ja) 描画装置および描画プログラム
US20150363960A1 (en) Timeline tool for producing computer-generated animations
JP6969149B2 (ja) 三次元形状データの編集装置、及び三次元形状データの編集プログラム
Dhillon et al. Three dimensional flow visualization in virtual reality
TWI237800B (en) Automated character stroke demonstration
Eyiyurekli et al. Localized editing of Catmull-Rom splines
Schein et al. Placement of deformable objects
Alex Hybrid Sketching: a new middle ground between 2-and 3-D
Nealen Interfaces and algorithms for the creation, modification, and optimization of surface meshes