1 Востаннє редагувалося FakiNyan (14.01.2015 18:16:48)

Тема: Операції над векторами для школярів

Хайо. Тут така справа. Треба дізнатись координату кінця вектора, після того, як ми крутнемо його на 90 градусів.
http://не-дійсний-домен/evA6f/d08c2af82f.png
Я от сам пробував це все зробити, але щось не пішло. Думка була така...
По суті, у нас є коло. Довжина цього вектора - радіус. І от я думаю - давайте просто підставим кут, на котрий потрібно повернути вектор в sin та cos, потім помножимо те, що отримали, на довжину цього вектора, і додамо отримані значення до поточних координат точки.
Нехай, точка == (3;2)
sin(90)=1
cos(90)=0
R=sqrt(2^2+3^2)=3.6
x=1*3.6+3
y=0*3.6+2
І виходить, що нова точка == (6.6;2), але очевидно, щось не так.
http://не-дійсний-домен/evDZj/084750f004.png
Очевидно, що новий вектор перпендикулярний осі Y, тобто вся ця формула працює так, наче відлік градусів починається від осі Y.
Як  здвинути початок відліку градусів?
p.s. поки дописав, з'явилась думка, що спочатку потрібно дізнатись градус, на котрий відхилений перший вектор, ну ви зрозуміли, а потім вже до нього додати ще 90 градусів і обрахувати нову координату, і потім треба додавати не координату кінця вектору, а координату початку вектору

2 Востаннє редагувалося quez (14.01.2015 18:35:43)

Re: Операції над векторами для школярів

Ну по-перше добре б сумістити початок координат з початком вектора.

А далі x' = x*cosa - y*sina, y' = x*sina + y*cosa

3

Re: Операції над векторами для школярів

quez написав:

Ну по-перше добре б сумістити початок координат з початком вектора.

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

4 Востаннє редагувалося quez (14.01.2015 18:36:58)

Re: Операції над векторами для школярів

Ну а так то треба віднімати початок від кінця, щоб привести початок до нуля, ага?

АгаНавпаки

5

Re: Операції над векторами для школярів

quez написав:

Ну а так то треба віднімати початок від кінця, щоб привести початок до нуля, ага?

Ага

Що ще розповісте?

6

Re: Операції над векторами для школярів

Не обновляйте сторінку так часто, я ж дуже швидко виправився

7

Re: Операції над векторами для школярів

quez написав:

Не обновляйте сторінку так часто, я ж дуже швидко виправився

то виправляйтесь ще раз
http://не-дійсний-домен/evI11/208cf8a933.png

8

Re: Операції над векторами для школярів

Не так.
http://i.piccy.info/i9/0a3fa1f0a2494db9d0791a748ba700c0/1421254446/7862/843963/a.png

9

Re: Операції над векторами для школярів

quez написав:

Не так.
http://i.piccy.info/i9/0a3fa1f0a2494db9d0791a748ba700c0/1421254446/7862/843963/a.png

не пойняв, яка різниця

10

Re: Операції над векторами для школярів

Зелений вектор (3, 3) в зеленій системі координат тепер можна просто взяти і повернути. А в червоній це вектор, який починається в (2, 2) і закінчується в (5, 5).

11

Re: Операції над векторами для школярів

quez написав:

Зелений вектор (3, 3) в зеленій системі координат тепер можна просто взяти і повернути. А в червоній це вектор, який починається в (2, 2) і закінчується в (5, 5).

ой, викрутились типу, це вже кому як подобається, у вас один вимір і декілька систем, а в мене одна система в декількох вимірах, як слої в фотошопі

12

Re: Операції над векторами для школярів

Ну а де мені треба виправитись, не нагадаєте?

13

Re: Операції над векторами для школярів

quez написав:

Ну а так то треба віднімати початок від кінця, щоб привести початок до нуля, ага?

АгаНавпаки

тут

14

Re: Операції над векторами для школярів

Ліл, чогось подумав, що раз початок записаний першим словами, то він має бути записаний першим цифрами.

15

Re: Операції над векторами для школярів

quez написав:

Ліл, чогось подумав, що раз початок записаний першим словами, то він має бути записаний першим цифрами.

та, я там теж декілька разів путався

16

Re: Операції над векторами для школярів

FakiNyan написав:

Хайо. Тут така справа. Треба дізнатись координату кінця вектора, після того, як ми крутнемо його на 90 градусів.
http://не-дійсний-домен/evA6f/d08c2af82f.png
Я от сам пробував це все зробити, але щось не пішло. Думка була така...
По суті, у нас є коло. Довжина цього вектора - радіус. І от я думаю - давайте просто підставим кут, на котрий потрібно повернути вектор в sin та cos, потім помножимо те, що отримали, на довжину цього вектора, і додамо отримані значення до поточних координат точки.
Нехай, точка == (3;2)
sin(90)=1
cos(90)=0
R=sqrt(2^2+3^2)=3.6
x=1*3.6+3
y=0*3.6+2
І виходить, що нова точка == (6.6;2), але очевидно, щось не так.
http://не-дійсний-домен/evDZj/084750f004.png
Очевидно, що новий вектор перпендикулярний осі Y, тобто вся ця формула працює так, наче відлік градусів починається від осі Y.
Як  здвинути початок відліку градусів?
p.s. поки дописав, з'явилась думка, що спочатку потрібно дізнатись градус, на котрий відхилений перший вектор, ну ви зрозуміли, а потім вже до нього додати ще 90 градусів і обрахувати нову координату, і потім треба додавати не координату кінця вектору, а координату початку вектору

Тут є все що тобі потрібно.

Подякували: FakiNyan, 0xDADA11C72