2013-10-27 8 views
0

Я рисую квадраты по круговой траектории для приложения iOS. Однако в определенных точках вдоль круга квадраты начинают выходить из окружности круга. Как я могу убедиться, что квадраты остаются внутри?Поддержание квадратов вдоль окружности круга

enter image description here

Вот пример я сделал. . Зеленые квадраты представляют позиции мне нужно квадратики на самом деле быть в красные квадраты, где они на самом деле появляются даны следующие значения для левого верхнего угла каждого квадрата в:

x = origin.x + radius * cos(DEGREES_TO_RADIANS(angle)); 
y = origin.y + radius * sin(DEGREES_TO_RADIANS(angle)); 

Происхождение относится к центру круга , У меня есть цикл, который повторяет это для каждого угла от 1 до 360 градусов.

EDIT: Я изменил свою конструкцию, чтобы расположить центры квадратов по круговой траектории, а не их верхние левые углы.

+0

@qegal Это не всегда так. Если бы угол был около 190, только небольшая часть его дна была бы выключена, поэтому перемещение его на одну полную квадратную высоту сильно компенсировало бы квадрат. – Mahouk

ответ

0

Ответ ryan cumley заставил меня понять, как я был немым. Мне просто нужно было заменить опорную точку каждого квадрата на ее центр &, который решил это. Теперь каждое вычисленное значение для x & y будет располагать каждый квадратный центр точно по круговой траектории.

+1

Никогда не чувствуйте себя «глупым» в отношении решения, которое вы придумали, всегда есть много приемлемых способов решения большинства задач, и много раз функциональность лучше умных. Рад, что это сработало для вас –

1

Почему бы не просто нарисовать центры квадратов вдоль меньшего круга внутри большего?

Вы можете сделать математику, чтобы точно определить, какой радиус должен был бы обеспечить точное соответствие, но вы, вероятно, могли бы пробовать и ошибаться так быстро.

Выполнение этого способа гарантирует, что ваши объекты тоже будут выложены в реальном круге, что не так, если бы вы просто следили за тем, чтобы один и только один угол каждого квадрата касался большего ограничивающего круга (что создаст слегка восьмиугольную форму вместо круга)

+0

Я написал решение в качестве ответа. Благодаря! Этот ответ был моим прозрением. – Mahouk

+2

Отлично! Не стесняйтесь отмечать это как ответ, который вы выбрали, чтобы люди, которые посещают этот вопрос, позже знают, что вы выбрали! –

+0

Я буду, как только это позволит мне (через 22 часа). – Mahouk

0

Вариант 1) Вы всегда можете найти диаметр круга, а затем используя теорему Пифагора, вы можете создать квадрат, который идеально вписывался бы в круг. Затем вы могли бы пройти через квадрат, который был только что сделан в круге, чтобы создать меньшие квадраты, но я сомневаюсь, что это то, к чему вы стремитесь.

Option2) Узнайте, какая половина длины одной из диагоналей квадратов должна быть и создать кольцо в пределах первого кольца. Затем сложите квадраты в ключевых точках (например, 30 градусов или 15 градусов и т. Д.) Вдоль внутреннего пути. Пример: http://i.imgur.com/1XYhoQ0.png Как вы можете видеть, меньший (внутренний) круг находится в центре каждого зеленого квадрата, и это гарантирует, что углы каждого квадрата просто касаются большего (внешнего) круга. Очевидно, моя дешевая фотография в краске не идеальна, но математически она будет работать.

Смежные вопросы