Предполагается, что точка регистрации центрирована, что, похоже, имеет место, поскольку вы делаете:
(_colorSelector.x + _colorSelector.width/2)
Я думаю, что ваша формула должна выглядеть примерно так:
(_colorSelector.x + _colorSelector.width/2) / _colorSelector.width
Если ваша точка регистрации на (0,0), она должна быть просто:
(_colorSelector.x / _colorSelector.width);
Выше должно быть число в диапазоне 0...1
Кроме того, вы должны инвертировать это значение для яркости (потому что низкое значение y представляет высокую яркость, а высокое значение y - низкую яркость; поэтому яркость уменьшается вдоль оси y, а насыщенность увеличивается вдоль оси x). Так что для вашей оси у вы должны сделать:
1 - ((_colorSelector.y + _colorSelector.height/2) / _colorSelector.height)
(Опять же, при условии, что точка регистрации центрирована).
Если ваша функция преобразования рассчитывает проценты, то вы должны умножить на 100
(_colorSelector.x + _colorSelector.width/2) / _colorSelector.width * 100
(1 - ((_colorSelector.y + _colorSelector.height/2) / _colorSelector.height)) * 100
Может быть, я что-то упустил, хотя. Я не уверен, откуда взялись _largeur
и _hauteur
, но похоже, что это ширина и высота. Я думаю, что вы должны использовать высоту и ширину _colorSelector, но я могу ошибаться.
PS : Я надеюсь, что вы поняли идею, потому что я не скомпилировал приведенный выше код и, возможно, я испортил некоторые скобки или сделал какую-то другую глупую ошибку.