Поворот по мышке
От: Karnak-Uzurpator  
Дата: 29.04.04 19:32
Оценка:
Вот проблема:начало координат — верхний левый угол экрана и есть "стрелка" с координатами

начала и конца.Нужно чтобы кончик стрелки поворачивался туда,где находится

мышка.Помогите,чем могите.
Re: Поворот по мышке
От: _Maestro_ Украина  
Дата: 30.04.04 06:22
Оценка:
Здравствуйте, Karnak-Uzurpator, Вы писали:

KU>Вот проблема:начало координат — верхний левый угол экрана и есть "стрелка" с координатами

KU>начала и конца.Нужно чтобы кончик стрелки поворачивался туда,где находится
KU>мышка.Помогите,чем могите.
1. переводим координаты мыши из экранных в мировые
2. получаем вектор направления для стрелки путем: (координаты_конца_стрелки — мышиные_мировые_координаты)
3. получаем длину стрелки из ее координат
4. вычисляем координаты конца стрелки: вектор направления, приводим к единичной длине и умножаем на длину стрелки и прибавляем координаты начала стрелки.
Осуществимо все, что представимо!
Re[2]: Поворот по мышке
От: Karnak-Uzurpator  
Дата: 30.04.04 10:13
Оценка:
Здравствуйте, _Maestro_, Вы писали:

_M_>Здравствуйте, Karnak-Uzurpator, Вы писали:


KU>>Вот проблема:начало координат — верхний левый угол экрана и есть "стрелка" с координатами

KU>>начала и конца.Нужно чтобы кончик стрелки поворачивался туда,где находится
KU>>мышка.Помогите,чем могите.
_M_>1. переводим координаты мыши из экранных в мировые
_M_>2. получаем вектор направления для стрелки путем: (координаты_конца_стрелки — мышиные_мировые_координаты)
_M_>3. получаем длину стрелки из ее координат
_M_>4. вычисляем координаты конца стрелки: вектор направления, приводим к единичной длине и умножаем на длину стрелки и прибавляем координаты начала стрелки.


А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?
Re[3]: Поворот по мышке
От: Zlobnyi Serg  
Дата: 30.04.04 10:31
Оценка:
Здравствуйте, Karnak-Uzurpator, Вы писали:

_M_>>1. переводим координаты мыши из экранных в мировые

_M_>>2. получаем вектор направления для стрелки путем: (координаты_конца_стрелки — мышиные_мировые_координаты)
_M_>>3. получаем длину стрелки из ее координат
_M_>>4. вычисляем координаты конца стрелки: вектор направления, приводим к единичной длине и умножаем на длину стрелки и прибавляем координаты начала стрелки.

KU>А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?

Можно...
cos(Alpha) = V1 o V2 / (|V1|*|V2|) или
cos(Alpha) = (x1*x2 + y1*y2)/(sqrt(x1*x1 + y1*y1)*sqrt(x2*x2 + y2*y2))
... << RSDN@Home 1.1.3 stable >>
Re[3]: Поворот по мышке
От: _Maestro_ Украина  
Дата: 30.04.04 10:53
Оценка:
KU>А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?

угол мужду двумя векторами можно найти исходя из формулы нахождения векторного произведения:
Cross(a,b)=длина_a*длина_b*cos(a,b), т.е. угол будет:
угол = arccos(Cross(a,b)/(длина_a*длина_b));
Осуществимо все, что представимо!
Re[4]: Поворот по мышке
От: Karnak-Uzurpator  
Дата: 04.05.04 13:17
Оценка:
Здравствуйте, _Maestro_, Вы писали:

KU>>А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?


_M_>угол мужду двумя векторами можно найти исходя из формулы нахождения векторного произведения:

_M_>Cross(a,b)=длина_a*длина_b*cos(a,b), т.е. угол будет:
_M_>угол = arccos(Cross(a,b)/(длина_a*длина_b));


Как вы посоветуете лучше делать.Если есть объект состоящий из множества точек и вектор

направления объекта.Надо чтобы объект поворачивался по направлению мышки.Как лучше,найти

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

привязать все точки к вектору направления и изменении его координат координаты точек

изменялись автоматически?Может даже есть другой способ?
Re[5]: Поворот по мышке
От: _Maestro_ Украина  
Дата: 07.05.04 12:13
Оценка:
Здравствуйте, Karnak-Uzurpator, Вы писали:

KU>Как вы посоветуете лучше делать.Если есть объект состоящий из множества точек и вектор

KU>направления объекта.Надо чтобы объект поворачивался по направлению мышки.Как лучше,найти
KU>угол между вектором направления и мышкой и поворачивать все точки на найденный угол или
KU>привязать все точки к вектору направления и изменении его координат координаты точек
KU>изменялись автоматически?Может даже есть другой способ?

если скорость поворота важна, то естественно каждую точку поварачивать не нужно, достаточно повернуть локальную матрицу группы точек...
Осуществимо все, что представимо!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.