Conversia hsv în rgb, viața embedderului

Totul a început cu acest amestec:

Ascultându-l, mi-am dat seama că am nevoie de un nou controler pentru banda RGB-LED. Lucruri similare, dacă cineva își amintește, am fost deja terminat, dar nu a existat o conversie onestă a HSV -> RGB acolo - în locul ei, a fost folosită o simplă sortare a culorilor pe Hue. Acum mi-am dat seama că am absolut nevoie de o transformare onestă a tuturor celor trei componente. 🙂







M-am dus la Google și nu am spus că căutarea mea a fost complet inutilă - am găsit atât formule cât și o serie de implementări. Problema a fost doar că atît formulele, cît și implementările au fost concepute pentru un punct plutitor, și eu, desigur, m-am interesat de aritmetica întregului. Realizări în număr întreg, pe care le-aș fi aranjat, nu am găsit niciodată.







În general, dacă doriți ceva să fie bine făcut - faceți-l singur. Mai întâi am vrut să convertesc formula. adăugând factorii de scalare corespunzători, totuși, după o perioadă de suferință, am scuipat această lecție și pur și simplu am redenumit formula originală pe un punct fix fix.

Mai jos sunt listele hsv2rgb.h și hsv2rgb.c - Sunt prea leneș să le descarc cu arhiva.

Modulul conține atât o implementare cu întreg (cu un punct fix), cât și o implementare în virgulă mobilă. Compilarea lor este inclusă independent prin delimitarea corespunzătoare. Bonusul este, de fapt, punerea în aplicare a operațiunilor cu un punct fix.

fp_HSV2RGB (...) este o implementare în virgulă mobilă.

fxp_HSV2RGB (...) este o implementare cu un punct fix.

hsv2rgb.h:







Articole similare

Trimiteți-le prietenilor: