2015-10-19 7 views
0

Скажем, у меня есть квадрат с поворотом на 90 градусов (я нашел это для Up для моего компьютера) и второй квадрат с вращением 75 градусов. Верхний левый угол первого квадрата и нижний левый угол второго, соединены.Как процесс Swift и сон в любой ситуации?

[enter image description here]

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

На листе бумаги, который не слишком сложно. Я бы использовал sin и cos, чтобы найти смещения x и y. В этом случае код будет выглядеть так:

let xOffset = 15 - (cos(15) * 15) 
let yOffset = sin(15) * 15 
secondSquare.position = point(secondSquare.position.x + xOffset, secondSquare.position.y - yOffset) 

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

Теперь эта математика была выполнена путем рисования правого треугольника, перпендикулярного оси х. Но как бы решить ту же проблему, если первый квадрат не был на идеальном повороте на 90 градусов и параллелен оси х?

[enter image description here]

Мой общий вопрос, я сделал все это математику с помощью оси х в качестве основы. Но что использует Свифт, чтобы найти грех, сон и загар? И как я могу использовать его для решения всех вариантов этой же проблемы?

+2

Swift, как и большинство языков, использует * радианы *, а не градусы для углов. Таким образом, вам понадобится угол π/12, а не 15. –

+0

Вы абсолютно правы, спасибо. – IkeyB

ответ

0

Способ сделать то, что вы делаете, в коде с прямоугольными видами или с рисунками прямоугольников - применить преобразование . Легко вращать вид или прямоугольник под заданным углом.

+0

Посмотрите мою книгу. Поворот точки зрения: http://www.apeth.com/iOSBook/ch14.html#_transform Вращение чертежа: http://www.apeth.com/iOSBook/ch15.html#_graphics_context_transforms – matt

+0

Спасибо за ваше ответ! Я проверил вашу книгу очень проницательно. Тем не менее, я фактически не хочу вращать второй квадрат, я пытаюсь переместить его так, чтобы его нижний правый угол касался верхнего правого угла первого. Я думал, что смогу сделать это с Син и Кос. – IkeyB