У меня есть круговая диаграмма, состоящая из 12 срезов, которые находятся в массиве. Идея состоит в том, чтобы иметь возможность касаться любого конкретного среза, получать его правильную позицию индекса в массиве и масштабировать этот срез вверх и вниз. Я сделал создание срезов, а также масштабирование, но математика выбора правильного индекса поставила меня в тупик.
Текущий код (slicesArray = 12), который у меня возвращает неправильный номер индекса:
UITouch *touch = [touches anyObject];
CGPoint point = [touch locationInView:self.view];
int index = atan2f(point.x-self.view.center.x, point.y-self.view.center.y) * self.slicesArray.count / (2*M_PI);
На этом изображении показаны фрагменты: черный текст представляет собой правильные номера индексов, а белый текст - то, что возвращает приведенный выше код.
Спасибо за любую помощь.