Может ли кто-нибудь помочь мне с этой функцией? Эта функция находится внутри приложения для камеры, которое использует алгоритм фильтрации для обнаружения различий в цветовых вариантах и т. Д. Синтаксис для меня очень сложный. Я не знаю, как обращаться с указателями в аргументах, синтаксисом min и max variable, что такое delta и т. Д.? Может ли кто-нибудь перевести меня? Очень признателен.Перевод функции Obj-C RGBtoHSV() в Swift. min = MIN (r, MIN (g, b)); etc
Также должен ли я что-то делать с UIColor? Кто-то упомянул это ниже. Я даже не знаю, как конвертировать.
// r,g,b values are from 0 to 1 // h = [0,360], s = [0,1], v = [0,1]
// if s == 0, then h = -1 (undefined)
void RGBtoHSV(float r, float g, float b, float *h, float *s, float *v) {
float min, max, delta;
min = MIN(r, MIN(g, b));
max = MAX(r, MAX(g, b));
*v = max;
delta = max - min;
if(max != 0)
*s = delta/max;
else {
// r = g = b = 0
*s = 0;
*h = -1;
return;
}
if(r == max)
*h = (g - b)/delta;
else if(g == max)
*h=2+(b-r)/delta;
else
*h=4+(r-g)/delta;
*h *= 60;
if(*h < 0)
*h += 360;
}
Swift перевод попытка
// r,g,b values are from 0 to 1 // h = [0,360], s = [0,1], v = [0,1]
// if s == 0, then h = -1 (undefined)
func RGBtoHSV(r:Float, g:Float, b:Float, h:Float, s:Float, v:Float) {
var min:Float = 0.0
var max:Float = 0.0
var delta:Float = 0.0
min = MIN(r, MIN(g, b))
max = MAX(r, MAX(g, b))
var v = max
delta = max - min
if max != 0 {
var s = delta/max
}
else{
// r = g = b = 0
var s = 0
var h = -1
return
}
if r == max {
var h = (g - b)/delta
}
else if (g == max) {
var h = 2 + (b - r)/delta
}
else{
var h = 4 + (r - g)/delta
var h = 60
}
if (h < 0) {
var h += 360 // how to deal with all of these pointers here in the original Obj-C function above?
}
}
дельта является значением с плавающей точкой, который принимает значение мин-макс –
Это больше, чем вопрос С это Objective-C один ... –
Вы спрашиваете, как назвать этот метод? –