posts | comments
28Mar

Поворот площини за допомогою миші

No comments

2D теорія - Поворот площини за допомогою миші

Як це зробити. Можна спробувати експериментувати з формулами, але незабаром стане зрозуміло, що треба враховувати не тільки відносні зміни координат Дx, Дy, але і їх абсолютні значення.
Так, наприклад, на приведеному нижче зображенні зміни по x для пересувань миші M0M і M0’M’ співпадають, але інтуїтивно зрозуміло, що одне з цих пересувань обертає трикутник за годинниковою стрілкою, а інше - проти.

из дерева барная стойка там

Суть прийому полягає в тому, що будується уявне одиничне коло з центром на початку координат і на ній відмірюються початковий і кінцевий кути. Потім проводиться поворот на різницю направлених кутів .

В даному випадку, щоб отримати точки M0’ і M’ треба просто нормалізувати вектори OM0 і OM. Тепер повернемо площину, щоб вектор OM0’ перейшов в OM’. Виявляється це не так просто, як може показатися на перший погляд.

Кут між векторами


Поворот площини за допомогою миші →

Categories: 2D теорія
27Mar

Математичне завдання прямій на площині

No comments

2D теорія - Математичне завдання прямій на площині

Поки розглядаються ідеальні геометричні об’єкти, точки яких можуть мати довільні дійсні координати.

Розглянемо як задається пряма лінія.

Рівняння прямої на площині в декартових координатах Ax + By + C = 0

Це рівняння дозволяє задати абсолютно будь-яку пряму на площині. При цьому коефіцієнти A і B можуть звертатися в нуль, але не одночасно:

A2 + B2 > 0

Трійка чисел (A, B, C) є однорідними координатами будь-якої прямої площини в двовимірному просторі всіх прямих площини . Однорідні координати в даному випадку надмірні, оскільки пряму можна задати двома числами. Прийняти один з коефіцієнтів A, B або C за одиницю не можна, оскільки можливий варіант рівності вибраного коефіцієнта нулю.
Пропонується вибрати набір, в якому

A2 + B2 = 1, A = B > 0 або A > B

Це …

Математичне завдання прямій на площині →

Categories: 2D теорія
26Mar

Аффінноє перетворення і його матричне уявлення

No comments


Прим. Дані координати не дозволяють однозначно задати точку площини. Наприклад, (1, 1, 1) і (2, 2, 2) задають одну і ту ж крапку (1, 1). Пропонується узяти набір (x, у, 1), який описуватиме всі точки площини.
Матриця перетворення для однорідних координат має розмір 3х3. Розглянемо деякі перетворення в однорідних координатах.
Стиснення/розтягування

Це перетворення умножає відповідні координати точок на коефіцієнти масштабування по осях: (x, у) -> (ах * x, ау * у). Матриця перетворення запишеться таким чином:
[ ах 0 0 ]
[ 0 ау 0 ]
[ 0 0 1 ]
Де ах - розтягування по осі x,
ау - розтягування по осі у.
Прим. Можна відмітити, що при негативних значеннях коефіцієнтів стиснення/розтягування відбувається …

Аффінноє перетворення і його матричне уявлення →

Categories: 2D теорія
25Mar

Логічна система координат

No comments

Також з’являється така річ, як відступ (margin), або, якщо хочете, поля.
Це зроблено для того, щоб зображення не ’упиралось” в край форми і ми можемо сміливо використовувати весь діапазон координат від -1 до +1 .
Перетворення координат
X_Window = MARGIN + (1.0 / 2) * (X_Log + 1) * (Width - 2 * MARGIN);
Y_Window = MARGIN + (-1.0 / 2) * (Y_Log - 1) * (Height - 2 * MARGIN);
Прослідкуємо ланцюжок перетворень:

X_Log відповідає [-1; 1]
X_Log + 1 відповідає [0; 2]
(1.0 / 2) * (X_Log + 1) відповідає [0; 1]
(1.0 / 2) * (X_Log + 1) * (Width - 2 * Margin) відповідає [0; Width - 2 * Margin]
X = Margin + (1.0 / 2) * (X_Log + 1) …

Логічна система координат →

Categories: 2D теорія
24Mar

Введення Звязність Відсікання Перехід до віконних координат

No comments

З’являється законне питання: як визначити зв′язність лінії на екрані?
Традиційно вводяться два поняття зв′язності.
4-связность: піксели p1(x1, y1) і p2(x2, y2) називаються сусідніми, якщо або різниця їх координат по осі x, або різниця їх координат по осі у рівна 1 (або що виключає):
|x2 - x1| + |y2 - y1|

Введення Звязність Відсікання Перехід до віконних координат →

Categories: 2D теорія