Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.02.2008, 09:31   #1
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию Поворот за мышью???

У меня возникла такая проблема:
Я научился поворачивать картинку(Поверхность DirectDraw) на заданный угол, а теперь мне нужно сделать так чтобы картинка поворачивалась за мышью. Помогите пажалуста.
Kostia вне форума Ответить с цитированием
Старый 01.02.2008, 11:02   #2
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

а арктангенс((мышь.x - центркартинки.x)/(мышь.y - центркартинки.y)) ?
B_N вне форума Ответить с цитированием
Старый 01.02.2008, 15:22   #3
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

B_N
Спасибо!

У меня есть еще одна проблема! Дело в том, что когда изображение поворачивается, то появляются пустоты, я вроде бы придумал как от них избавиться, но качество от этого сильно страдает.

Вот переделанный пример на обычную канву:
Вложения
Тип файла: rar r.rar (8.1 Кб, 78 просмотров)
Kostia вне форума Ответить с цитированием
Старый 01.02.2008, 15:47   #4
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Kostia Посмотреть сообщение
У меня есть еще одна проблема! Дело в том, что когда изображение поворачивается, то появляются пустоты, я вроде бы придумал как от них избавиться, но качество от этого сильно страдает.
По-моему там просто достаточно bm1 побольше размером сделать. Или, лучше, сделать еще один bitmap (больше размером), и в него переносить из bm1 повернутые точки, а bm1 вообще не трогать, использовать как оригинал.
-----------
Да, вот еще, прочитал первый пост еще раз, где там DirectDraw-то?
B_N вне форума Ответить с цитированием
Старый 01.02.2008, 16:02   #5
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Цитата:
Да, вот еще, прочитал первый пост еще раз, где там DirectDraw-то?
Я переделал под обычную канву(GDI).

А DirectDraw, я пишу модуль для работы с 2d графикой средствами DirectDraw.
Kostia вне форума Ответить с цитированием
Старый 01.02.2008, 16:41   #6
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

Вот я немного подправил, но появились новые глюки при быстром повороте!

Код:
procedure TForm1.Timer2Timer(Sender: TObject);
begin
  for y := 0 to bm.Height - 1 do
    begin
      for x := 0 to bm.Width - 1 do
      begin
        r := sqrt(sqr(x - xo) + sqr(y - yo));
        SinCos(a + arctan2((y - yo), (x - xo)), s, c);
        bm1.Canvas.Pixels[round(xo + r * c),
        round(yo + r * s)]:=m[x,y];
      end;
    end;
  a:=-(ArcTan2((xm-(bm1.Width/2+200)),(ym-(bm1.Height/2+200)))+pi);
  kadr.Canvas.Draw(200,200,bm1);
  form1.Canvas.Draw(0,0,kadr);
  kadr.Canvas.FillRect(rect(0,0,kadr.Width,kadr.Height));
  fps:=fps+1;
end;
Kostia вне форума Ответить с цитированием
Старый 01.02.2008, 16:49   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Какого рода глюки? Мне чтобы это выяснить, придется дельфт ставить
B_N вне форума Ответить с цитированием
Старый 01.02.2008, 16:57   #8
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

При быстром повороте, появляются шумы, а если крутить потихоньку, то все нормально.
Изображения
Тип файла: jpg 1.jpg (3.7 Кб, 160 просмотров)
Kostia вне форума Ответить с цитированием
Старый 04.02.2008, 13:44   #9
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

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

Единственное непонятно почему только при быстром, если это артефакты то должны быть всегда, алгоритм ведь один и тот же.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 04.02.2008 в 13:56.
mutabor вне форума Ответить с цитированием
Старый 04.02.2008, 17:18   #10
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

mutabor Спасибо! Я уже со всем справился, скоро на свет появится программа показывающая возможности моего модуля!(2-3 недели примерно)
Kostia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поворот картинки delphin100 Мультимедиа в Delphi 5 14.04.2008 10:43
Поворот матрицы Cartman18 Помощь студентам 2 07.02.2008 11:11
timage, поворот ERASERROR Мультимедиа в Delphi 1 05.02.2008 12:10
как организовать поворот еллипса в С++ ? Снайп Помощь студентам 1 01.12.2007 17:19
Поворот картинки PAVEL315 Общие вопросы Delphi 3 24.12.2006 12:47