Hallo zusammen, bei der Entwicklung eines Weihnachtsgeschenkes ist eine 12Bit HSV nach RGB Routine abgefallen, die ich hier gerne veröffentlichen möchte. Die Werte für H, S und V können zwischen 0 und 4095 liegen. Gruß Frank
Hallo zusammen, leider hat sich ein kleiner Fehler in die Routine eingeschlichen. In der Berechnung für die Variablen q fehlt ein Typecast. Die korrekte Zeile lautet:
1 | |
Im Anhang mal ein vollständiger Plot aller RGB-Werte für den kompletten
HSV-Farbraum berechnet über die Funktion.
Der Plot legt die Werte H = {0..4095}; S = 4095 und V = 4095 zu Grunde.
Gruß
Frank
Gast
#2528520
Anbei der Code etwas abgeändert damit er ohne den struct funktioniert.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
Gast
#2620759
@ Micha, vielleicht kannst du deine Änderung komplettieren? Zumindest die Var.deklaration red, green, blue, fehlt hier, nur damit für andere keine Verwirrung entsteht
Ich habe die halbe Nacht damit verbracht, den Code etwas anzupassen, vielleicht ist er für andere nützlich. Ursprünglich habe ich vorallem die Divisionen durch skalierte Multiplikationen ersetzt, nach debuggen habe ich die Formeln nochmal umgebaut, insbesondere die switch-case Fallunterscheidung stimmte nicht mit dem Artikel von Wikipedia überein. Nach weiterem Test tut diese Version das was sie soll. Im Prinzip ist alles auf 12bit skaliert, also alles was nach Wikipediaartikel auf [0..1) definiert ist, ist hier auf [0..4095] skaliert. Als verbliebene Ungenauigkeit kommen t und evtl. weitere teilweise nicht ganz an 4095 heran (z.B. Maxwert 4088, wenn Hue als Mischfarbe).
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
22 | |
23 | |
24 | |
25 | |
26 | |
27 | |
28 | |
29 | |
30 | |
31 | |
32 | |
33 | |
34 | |
35 | |
36 | |
37 | |
38 | |
39 | |
40 | |
41 | |
42 | |
43 | |
44 | |
45 | |
46 | |
47 | |
48 | |
49 | |
50 | |
51 | |
52 | |
53 | |
54 | |
55 | |
56 | |
57 | |
58 | |
59 | |
60 | |
61 | |
62 | |
63 | |
64 | |
65 | |
66 | |
67 | |
68 | |
69 | |
70 | |
71 | |
72 | |
73 | |
74 | |
75 | |
76 | |
77 | |
78 | |
79 | |
80 | |
81 | |
82 | |
83 | |
84 | |
85 | |
86 | |
87 | |
88 | |
89 | |
90 | |
91 | |
92 | |
93 | |
94 | |
95 | |
96 | |
97 | |
98 | |
99 | |
100 | |
101 | |
102 | |
103 | |
104 | |
105 | |
106 | |
107 | |
108 | |
109 | |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | |
116 | |
117 | |
118 | |
119 | |
120 | |
121 | |
122 | |
123 | |
124 | |
125 | |
126 | |
127 | |
128 | |
129 | |
130 | |
131 | |
132 | |
133 | |
134 | |
135 | |
136 | |
137 | |
138 | |
139 | |
140 | |
141 | |
142 | |
143 | |
144 | |
145 | |
146 | |
147 | |
148 | |
149 | |
150 | |
151 | |
152 | |
153 | |
154 | |
155 | |
156 | |
157 | |
158 | |
159 | |
160 | |
161 | |
162 | |
163 | |
164 | |
165 | |
166 | |
167 | |
168 | |
169 | |
170 | |
171 | |
172 | |
173 | |
174 | |
175 | |
176 | |
177 | |
178 | |
179 | |
180 | |
181 | |
182 | |
183 | |
184 | |
185 | |
186 | |
187 | |
188 | |
189 | |
190 | |
191 | |
192 | |
193 | |
194 | |
195 | |
196 | |
197 | |
198 | |
199 | |
200 | |
201 | |
202 | |
203 | |
204 | |
205 | |
206 | |
207 | |
208 | |
209 | |
210 | |
211 | |
212 | |
213 | |
214 | |
215 | |
216 | |
217 | |
218 | |
219 | |
220 | |
221 | |
222 | |
223 | |
224 | |
225 | |
226 | |
227 | |
228 | |
229 | |
230 | |
231 | |
232 | |
233 | |
234 | |
235 | |
236 | |
237 | |
238 | |
239 | |
240 | |
241 | |
242 | |
243 | |
244 | |
245 | |
246 | |
247 | |
248 | |
249 | |
250 | |
251 | |
252 | |
253 | |
254 | |
255 | |
256 | |
257 | |
258 | |
259 | |
260 | |
261 | |
262 | |
263 | |
264 | |
265 | |
266 | |
267 | |
268 | |
269 | |
Gast
#4129418
Woher kommt im Code die Zahl "2796885" ? Und wie sind die Formeln aus Franks Code mit der Grundlage des Wikipedia-Artikels zur Konvertierung HSV nach RGB vergleichbar? Ich sehe hier keinerlei Zusammenhang bezüglich der Berechnung der Variablen i, f, p, q, t. Vielen Dank für jeden Hinweis!
Hallo, die Berechnung erfolgt wie folgt für 12 Bit: 60° -> 683 -> (4096 / 360°) * 60° -> 683,5 1 -> 682 * 4095 Gruß Frank
Gast
#4130297
Hallo Frank, vielen Dank für Deine Antwort. Frank L. schrieb: > Hallo, > > die Berechnung erfolgt wie folgt für 12 Bit: > > 60° -> 683 -> (4096 / 360°) * 60° -> 683,5 > 1 -> 682 * 4095 Mit anderen Worten: 360° für den Hue-Wert entsprechen in 12 Bit dann der 2796885? Während dann für Hue = 1° gilt: 1° -> 2796885 / 360° = 62153/8 Danke! Gruß
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.