Размещение кнопок на круге - PullRequest
1 голос
/ 22 мая 2011

У меня чертовски много времени вычисляет точки на окружности в Objective-C.Даже после прочтения множества других примеров кода мой круг все еще находится далеко от центра.(И это с учетом «центра» и «происхождения» и корректировки размера UIView, в данном случае UIButton.)

Вот код, который я использую.Круг сформирован правильно, он просто не в центре.Я не уверен, что это радианы или градусы или что-то еще.Это вспомогательная функция в ViewController, которая программно создает кнопки UIB и добавляет их в представление:

- (CGPoint)pointOnCircle:(int)thisPoint withTotalPointCount:(int)totalPoints {
    CGPoint centerPoint = CGPointMake(self.view.frame.size.width / 2, self.view.frame.size.height / 2);
    float radius = 100.0;
    float angle = ( 2 * M_PI / (float)totalPoints ) * (float)thisPoint;
    CGPoint newPoint;
    newPoint.x = (centerPoint.x / 2) + (radius * cosf(angle));
    newPoint.y = (centerPoint.y / 2) + (radius * sinf(angle));
    return newPoint;   
}

Спасибо за помощь!

Ответы [ 2 ]

5 голосов
/ 22 мая 2011

Центр ваших кнопок (то есть точек на окружности):

newPoint.x = (centerPoint.x) + (radius * cosf(angle));  // <= removed / 2
newPoint.y = (centerPoint.y) + (radius * sinf(angle));  // <= removed / 2

Обратите внимание, что если вы помещаете кнопки (то есть прямоугольники) в эти точки, вы должны убедиться, что их центр находится на этомточка (т.е. вычтите buttonWidth/2 из newPoint.x и buttonHeight/2 из newPoint.y, чтобы получить верхний левый угол).

0 голосов
/ 22 мая 2011

Не уверен, почему вы делите на 2 во второй раз координаты newPoint ...

Как насчет этого:

newPoint.x = centerPoint.x + (radius * cosf(angle));
newPoint.y = centerPoint.y + (radius * sinf(angle));
return newPoint;   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...