Показать сообщение отдельно
Старый 08.03.2012, 13:42
PlutDem вне форума Посмотреть профиль Отправить личное сообщение для PlutDem Найти все сообщения от PlutDem
  № 33  
Ответить с цитированием
PlutDem
 
Аватар для PlutDem

Регистрация: Feb 2012
Сообщений: 212
После долгих раздумий решил вертеть так:
Код AS3:
public function objRotate(angle:Number) : void{
 
    var matrix:Matrix = bsMatrix.clone();
 
    matrix.translate( -objLocRotatingPoint.x, -objLocRotatingPoint.y );// смещаем начальную матрицу на локальные коордиаты
    matrix.rotate( (this.rotation+angle) * GL.RAD );// новое вращение = старое + доворот * Math.PI/180
    matrix.translate( objGlobRotatingPoint.x, objGlobRotatingPoint.y );//смещаем начальную матрицу на глобальные коордиаты
 
    this.transform.matrix = matrix;
}
Пусть и пришлось хранить в свойствах вращаемого объекта помимо глобальных координат точки вращения еще и его начальную матрицу и локальные координаты точки вращения, зато можно быть уверенным, что через несколько сотен тысяч вращений ничего и никуда не убежит и не сместиться.