Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > Полезные функции

Полезные функции Выкладываем полезные функции, чтоб не изобретать велосипед заново...

Ответ
 
Опции темы
Старый 12.10.2015, 21:49   #1
polopok
ПроЭктировщик
 
Регистрация: 17.07.2009
Сообщений: 182
Написано 51 полезных сообщений
(для 71 пользователей)
Сообщение Вращение изображение со смещением

Код под спойлером :
Dim cosA#(3600000)
Dim sinA#(3600000)
; предварительное вычисление синуса и косинуса
For i# = 0 To 360 Step 0.0001
cosA(i#)= Cos(i#)
sinA(i#)= Sin(i#)
Next 
;
Global grx,gry
Global mx#,my#

Graphics 800,600,32,2

;img = LoadImage ("ваше изображение.bmp") ; *jpg ...
img = CreateImage(21, 21)
SetBuffer ImageBuffer(img)
Rect 0, 0, 20, 20, 1
SetBuffer BackBuffer()
ClsColor 128,128,128
While Not KeyHit(1)
Cls 
mx = MouseX() : my = MouseY() 

mz# = mz# + 55.5
If mz > 359.9999 mz = 0

ImageRotate(mx, my, img, mz, 20)

DrawImage img,100,100
Flip 
Wend
FreeImage img
End 


;( offsetX ,offsetY  - центр вращения )
Function ImageRotate#(Point_x#, Point_y#, imageSource, angle# = 0.0, offsetX# = 0, offsetY# = 0)
If imageSource = 0 Return 
Local width = ImageWidth(imageSource ) , height = ImageHeight(imageSource )
Local bufferImage = ImageBuffer(imageSource )  ,background = BackBuffer()

angle# = Abs(angle)

LockBuffer bufferImage 
LockBuffer background 

For local_x# = 0 To width Step 0.4
    For local_y# = 0 To height Step 0.4
    pix = ReadPixelFast (local_x, local_y, bufferImage )
        hwidth = width Shr 1
        hheight = height Shr 1
        
        xt# = local_x - hwidth + offsetX
        yt# = local_y - hheight + offsetY
        
        sinma# = SinA(angle) 
        cosma# = CosA(angle) 
        
        xs# = Point_x  + ((cosma * xt - sinma * yt) ) 
        ys# = Point_y  + ((sinma * xt + cosma * yt) ) 
        
        If xs >= 0 And xs < 800 And ys >= 0 And ys < 600 And pix <> $ff000000
            WritePixelFast xs, ys, pix, background 
        EndIf
    Next
Next

UnlockBuffer background 
UnlockBuffer bufferImage 
End Function
__________________
Мой проект здесь
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 22:55.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com