Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Inserimento in punto variabile di ciclo HSV
Forum - C/C++ - Inserimento in punto variabile di ciclo HSV - Pagina 2

Pagine: [ 1 2 ] Precedente | Prossimo
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 23:57
Domenica, 22/03/2015
ahahahah ma Piero, non si dovrebbe, poi ci faccio brutta figura se qualcuno legge il codice XD

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 23:59
Domenica, 22/03/2015
:nono:

Un buon programmatore sa riconoscere i rari casi dove il goto può rendere il codice migliore. Questo trovo sia uno di quei casi. Aggiungi un commento per i lettori, spiega il perchè il goto, e tutti contenti.

Il "mai usare goto" è una di quelle cose che si insegna a chi è agli inizi perchè viene abusato troppo facilmente. Quando raggiungi un certo livello, è OK usarlo, in alcune circostanze.


Il mio blog: https://piero.dev
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 0:13
Lunedì, 23/03/2015
Mi sembra sensato come ragionamento, potrebbe essere la prima volta che mi abbandono al GOTO XD mentre davo un occhiata su wikipedia per un veloce ripasso di storia sono incappato nel COMEFROM, gli ingegneri hanno un senso preoccupante dell'umorismo XD

In ogni caso mentre aspettavo una replica mi è venuta in mente una soluzione, si potrebbe fare una mappa dinamica, gestita da una funzione che ad ogni ciclo determina il colore a partire da un indice, un po come l'H nel modello HSV, può essere una soluzione? O andiamo a fare un uso criminoso delle risorse?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 0:24
Lunedì, 23/03/2015
E' un opzione.

Avresti solamente 6 casi:

Da i = 0..255: R = 255, B = 0, G = i
Da i = 256..512, c = 0 .. 255: R = c, B = 0, G = 255
Da i = 513..768: R = 0, B = (i - 513), G = 255

eccetera per gli ultimi 3 casi.



Ultima modifica effettuata da pierotofy il 23/03/2015 alle 0:31


Il mio blog: https://piero.dev
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 12:54
Lunedì, 23/03/2015
a mente lucida ci rifletto un po' su e c'è un problema anche con il codice postato in precedenza non ritorno sulla circonferenza piu esterna.
Es R 50 G 20 B 127
G -> 0
R 50 G 0 B 127 non appartiene alla circonferenza più esterna del modello HSV
Ora incomincio a pensare che forse adottare tale modello su cui lavorare possa semplificare il problema.
Identifico il punto appartenente al cilindro del modello HSV, risalgo in obliquo seguendo una retta che interseca la circonferenza superiore il punto dato e la retta che identifica l'asse del cilindro. A questo punto mi trovo sulla circonferenza, da qui posso decidere se muovermi in senso orario o antiorario. Un dubbio però rimane, una conversione del genere ad ogni iterazione non porta via un tempo enorme, mi sembrano operazioni piuttosto pesanti da far fare ad un ATmega. Cosa ne pensi?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 15:41
Lunedì, 23/03/2015
Trasforma da HSV a RGB i valori che ti servono (magari scrivi un programma che li stampi a monitor). Dopodichè cerca di identificare un pattern (e magari postalo qui).


Il mio blog: https://piero.dev
PM Quote
Pagine: [ 1 2 ] Precedente | Prossimo