Страница: 1 | 2 |
Вопрос: Поворот картинки
Добавлено: 30.04.05 18:12
Автор вопроса: Yeputons | ICQ: 278444762
Ответы
Всего ответов: 25
Номер ответа: 16
Автор ответа:
Yeputons
ICQ: 278444762
Вопросов: 71
Ответов: 179
Профиль | | #16
Добавлено: 02.05.05 15:08
Заработало! Но не совсем. Каких-то дробей до истинного значения не хватает.
Номер ответа: 17
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #17
Добавлено: 02.05.05 16:32
Может некоторые переменные вместо Integer надо объявить как Double?
У меня тоже в этом баг был пару раз
Номер ответа: 18
Автор ответа:
Yeputons
ICQ: 278444762
Вопросов: 71
Ответов: 179
Профиль | | #18
Добавлено: 02.05.05 19:33
Я их как Double объявляю.
Номер ответа: 19
Автор ответа:
Yeputons
ICQ: 278444762
Вопросов: 71
Ответов: 179
Профиль | | #19
Добавлено: 02.05.05 19:33
Я их как Double объявляю.
Номер ответа: 20
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #20
Добавлено: 02.05.05 22:48
Может, нужно число пи точнее определить?
А я забацал супершустрый алгоритм, вращающий картинку. Мож кому-нибудь понадобится. Выдает на моем компе 154 кадра в секунду в окне 640x480. И это не потому, что у меня мощный камень. Выглядит он так:
Sub DrawFrameRotate()
Dim XVX&, XVY&, YVX&, YVY&, CX&, CY&, SX&, SY&, TX&, TY&, X&, Y&, A!, S!, C!
ZeroMemory pict(0, 0), 307200
A = F / 50
S = Sin
C = Cos
SX = Int((320 + (240 * C - 320 * S)) * 65536)
SY = Int((240 - (320 * C + 240 * S)) * 65536)
XVX = Int(65536 * S)
XVY = Int(-65536 * C)
YVX = Int(65536 * C)
YVY = Int(65536 * S)
For Y = 0 To 479
CX = SX
CY = SY
For X = 0 To 639
TX = CX \ 65536
TY = CY \ 65536
If TX >= 0 Then
If TX < 640 Then
If TY >= 0 Then
If TY < 480 Then
pict(X, Y) = fxb(TX, TY)
End If
End If
End If
End If
CX = CX + XVX
CY = CY + YVX
Next
SX = SX + XVY
SY = SY + YVY
Next
RenderString 5, 464, CStr(SP) & " fps", False, False, 0
RenderString 4, 465, CStr(SP) & " fps", False, False, 255
Me.Refresh
End Sub
fxb - байтовый массив, содержащий вращаемую картинку.
pict - байтовый массив, выводимый на экран.
Ессно, работает алгоритм с 256-цветным изображением. Но можно сделать и полноцветное. Если нужна прога целиком - могу отослать ее админу, чтобы он выложил в коллекцию примеров.
Номер ответа: 21
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #21
Добавлено: 02.05.05 23:51
2Страшный Сон
Это на VB6? Нифига! только я не понял, откуда берсётся картинка и куда выводится... не выложишь исходник?
Номер ответа: 22
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #22
Добавлено: 03.05.05 16:24
Ну... Пока исходник слишком сырой, но немного позже, наверное, выложу.
Номер ответа: 23
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #23
Добавлено: 03.05.05 16:25
Кстати, это еще не предел! Еще разика в два-три ускорить можно.
Номер ответа: 24
Автор ответа:
Morpheus
Вопросов: 224
Ответов: 3777
Web-сайт:
Профиль | | #24
Добавлено: 03.05.05 16:47
Просто я не доврубаюсь, какие-то функции странные типа RenderString, ZeroMemory - это стандартный бейсиковские? или это смесь АПИ с DX?
Номер ответа: 25
Автор ответа:
Страшный Сон
Вопросов: 46
Ответов: 848
Профиль | | #25
Добавлено: 04.05.05 15:00
Исходник доделаю, врубишься. Только боюсь, что из затеи с дополнительной оптимизацией алгоритма ничего хорошего не получится. В лучшем случае алгоритм раздуется в несколько раз, а скорость работы увеличится лишь ненамного.