Здравствуйте, Karnak-Uzurpator, Вы писали:
KU>Вот проблема:начало координат — верхний левый угол экрана и есть "стрелка" с координатами KU>начала и конца.Нужно чтобы кончик стрелки поворачивался туда,где находится KU>мышка.Помогите,чем могите.
1. переводим координаты мыши из экранных в мировые
2. получаем вектор направления для стрелки путем: (координаты_конца_стрелки — мышиные_мировые_координаты)
3. получаем длину стрелки из ее координат
4. вычисляем координаты конца стрелки: вектор направления, приводим к единичной длине и умножаем на длину стрелки и прибавляем координаты начала стрелки.
Здравствуйте, _Maestro_, Вы писали:
_M_>Здравствуйте, Karnak-Uzurpator, Вы писали:
KU>>Вот проблема:начало координат — верхний левый угол экрана и есть "стрелка" с координатами KU>>начала и конца.Нужно чтобы кончик стрелки поворачивался туда,где находится KU>>мышка.Помогите,чем могите. _M_>1. переводим координаты мыши из экранных в мировые _M_>2. получаем вектор направления для стрелки путем: (координаты_конца_стрелки — мышиные_мировые_координаты) _M_>3. получаем длину стрелки из ее координат _M_>4. вычисляем координаты конца стрелки: вектор направления, приводим к единичной длине и умножаем на длину стрелки и прибавляем координаты начала стрелки.
А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?
Здравствуйте, 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))
KU>А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?
угол мужду двумя векторами можно найти исходя из формулы нахождения векторного произведения:
Cross(a,b)=длина_a*длина_b*cos(a,b), т.е. угол будет:
угол = arccos(Cross(a,b)/(длина_a*длина_b));
Здравствуйте, _Maestro_, Вы писали:
KU>>А можно найти угол между стрелкой и вектором начала её координат и мышой?Как это можно сделать?
_M_>угол мужду двумя векторами можно найти исходя из формулы нахождения векторного произведения: _M_>Cross(a,b)=длина_a*длина_b*cos(a,b), т.е. угол будет: _M_>угол = arccos(Cross(a,b)/(длина_a*длина_b));
Как вы посоветуете лучше делать.Если есть объект состоящий из множества точек и вектор
направления объекта.Надо чтобы объект поворачивался по направлению мышки.Как лучше,найти
угол между вектором направления и мышкой и поворачивать все точки на найденный угол или
привязать все точки к вектору направления и изменении его координат координаты точек
изменялись автоматически?Может даже есть другой способ?
Здравствуйте, Karnak-Uzurpator, Вы писали:
KU>Как вы посоветуете лучше делать.Если есть объект состоящий из множества точек и вектор KU>направления объекта.Надо чтобы объект поворачивался по направлению мышки.Как лучше,найти KU>угол между вектором направления и мышкой и поворачивать все точки на найденный угол или KU>привязать все точки к вектору направления и изменении его координат координаты точек KU>изменялись автоматически?Может даже есть другой способ?
если скорость поворота важна, то естественно каждую точку поварачивать не нужно, достаточно повернуть локальную матрицу группы точек...