Форум программистов, компьютерный форум, киберфорум
ActionScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
2 / 2 / 1
Регистрация: 30.05.2013
Сообщений: 339
1

Спрайт неправильно вращается при малой угловой скорости

10.08.2015, 17:06. Показов 901. Ответов 2
Метки нет (Все метки)

Добрый день, проблема такая.

Есть квадрат, мы вращаем его с малой скоростью, и спрайт съезжает с центра. Прилагаю swf там наглядно видно.
Проблемы когда скорость средняя или большая нет, но мне нужно чтобы он мог вращаться медленно и при это центр масс этого спрайта четко лежал там где нужно. Заранее спасибо!

П.С. Когда запустите, дайте ему покрутится минуту и увидите, что он уехал от координаты своего центра, опять же при больших скоростях такого нет. Не знаю что делать
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вложения
Тип файла: swf rectangle.swf (15.4 Кб, 5 просмотров)
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.08.2015, 17:06
Ответы с готовыми решениями:

Твердое тело вращается с угловой скоростью. Найти модуль угловой скорости и угол поворота
Доброго времени суток. Помогите с задачей. Твердое тело вращается с угловой скоростью \omega...

Расчет изменения угловой скорости\линейной скорости центра масс полигона
Подскажите как и какие требуется применить физические законы для решения этой задачи. Необходимо...

Построить график зависимости угловой скорости от времени при падении спиленного столБа
Доброго времени суток! Помогите, пожалуйста, решить данную задачку: Построить график...

Круглое кольцо вращается с постоянной угловой скоростью вокруг своего диаметра, расположенного параллельно оси
помогите пожалуйста...у меня не получается задать вращение(((саму окружность я нарисовала, а...

2
Модератор
2856 / 1708 / 173
Регистрация: 19.02.2011
Сообщений: 6,335
10.08.2015, 17:43 2
Цитата Сообщение от bazelbodayFaron Посмотреть сообщение
Прилагаю swf там наглядно видно
А толку? Все равно никому ничего не понятно.
0
2 / 2 / 1
Регистрация: 30.05.2013
Сообщений: 339
11.08.2015, 16:08  [ТС] 3
Лучший ответ Сообщение было отмечено TanaTiX как решение

Решение

я хочу чтобы квадрат вращался четко вокруг своего центра, при малых скоростях происходит что он начинает ползти вверх, хотя мы только вращаем его.

Добавлено через 23 секунды
ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public function rotateAroundCenter(object:DisplayObject, t:Number):void // вращаем спрайт но не апдейтим вершины
{ 
 
 
    var matrix:Matrix = object.transform.matrix;
    //trace(matrix.tx, matrix.ty) ;
    var rect:Rectangle = object.getBounds(object.parent);
 
 
    var Znak : Number = 1 ;
    (t == 0 ) ? Znak=1 : Znak = Math.abs(t) / t ;
 
    W_t = Math.abs(t) * AngVel + ((Ftorq/Mass)/2) * t * t * Znak ; 
    trace("W_t=",W_t) ;
 
 
    matrix.translate(-XX, -YY);
    matrix.rotate((W_t * Znak / 180.0) * Math.PI);  
 
    trace("XX,YY",(rect.left + (rect.width / 2)), (rect.top + (rect.height / 2)));
    trace("true XX, YY=",XX,YY) ;
 
    matrix.translate(XX, YY);
 
 
 
    object.transform.matrix = matrix;
 
 
}
вот как вращаю

Добавлено через 22 часа 20 минут
проблема решена, код следующий

ActionScript 3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public function pointRotate(object:DisplayObject, center:Point, angle:Number) : void
    {
        /* * * * * * * * * *
*                  *
*  @author wolsh   *
*                  *
\* * * * * * * * * */ 
 
        // return to zero
        angle += object.rotation;
        var a0:Number = - object.rotation * Math.PI / 180;
        var s0:Number = Math.sin(a0);
        var c0:Number = Math.cos(a0);
        var dX0:Number = object.x - center.x;
        var dY0:Number = object.y - center.y;
 
        object.rotation = 0;
        object.x = Math.round(center.x + dX0 * c0 - dY0 * s0);
        object.y = Math.round(center.y + dX0 * s0 + dY0 * c0);
 
        // new rotation
        var r:Number = angle * Math.PI / 180;
        var s:Number = Math.sin(r);
        var c:Number = Math.cos(r);
        var dX:Number = object.x - center.x;
        var dY:Number = object.y - center.y;
 
        object.rotation += angle;
        object.x = center.x + dX * c - dY * s;
        object.y = center.y + dX * s + dY * c;
    }
суть в том что мы из начальной позиции каждый раз поворачиваем тело, работает при любой угловой даже очень маленькой скорости.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.08.2015, 16:08

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Определение угловой скорости диска
Привет всем!! Для меня следующая задача оказалась суперсложной- Во вращающийся с угловой скоростью...

СЛОЖНО! Горизонтально расположенный стержень длиной 1 м. вращается вокруг вертикальной оси, проходящей через один из его концов, с постоянной угловой
Горизонтально расположенный стержень длиной 1 м. вращается вокруг вертикальной оси, проходящей...

Датчик угловой скорости на вращающемся диске
Круглый диск диаметром D=1м вращается равномерно вокруг своей оси с постоянной угловой скоростью...

Момент инерции и изменение угловой скорости
На краю свободно вращающегося диска, имеющего радиус 1 м и момент инерции 70 кг*м2, стоит человек...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.