Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Picture Rotater & scaler
- ; Author: Aleksey
- alias atr return $calc($1 * $pi / 180)
- alias rst {
- window -apd +e @px 100 100 518 540
- var %kart $mircdirMapper\texmap4.bmp
- ;директория вашей картинки
- var %h = $pic(%kart).height,%w = $pic(%kart).width
- window -apd +e @mpkt 100 100 $calc(%w + 18) $calc(%h + 40)
- drawpic @mpkt 0 0 %kart
- var %a = $atr(0),%ae = $atr(2),%ad = $atr(5)
- ;a - начальный угол, ae - конечный угол, ad - на сколько менять угол в цикле
- while (%a < %ae) {
- dll WhileFix.dll WhileFix .
- var %scale $calc(1 / (1 + 0.2 * $cos($calc(%a * 4))))
- ;тут можно побаловаться с масштабом( < 1 - увеличение, > 1 уменьшение)
- var %sinA = $sin(%a),%cosA = $cos(%a)
- var %x0 $calc((%w / 2 + %scale * ((0 - %w / 2) * %cosA + %h / 2 * 1.2 * %sinA)) * 65536)
- var %y0 $calc((%h / 2 + %scale * ((0 - %h / 2) * %cosA - %w / 2 * %sinA / 1.2)) * 65536)
- var %xdx $calc(%scale * %cosA * 65536)
- var %xdy $calc(%scale * %sinA * 65536 / 1.2)
- var %ydx $calc((0 - %scale) * %sinA * 65536 * 1.2)
- var %ydy $calc(%scale * %cosA * 65536)
- var %y 0
- while (%y < %h) {
- dll WhileFix.dll WhileFix .
- var %x1 = %x0,%y1 = %y0,%x = 0
- while (%x < %w) {
- dll WhileFix.dll WhileFix .
- var %xp = $>>(%x1,16),%yp = $>>(%y1,16)
- if (%xp < %w && %yp < %h) drawdot -r @px $getdot(@mpkt,%xp,%yp) 1 %x %y
- else drawdot @px 1 1 %x %y
- inc %x1 %xdx
- inc %y1 %xdy
- inc %x
- }
- inc %x0 %ydx
- inc %y0 %ydy
- inc %y
- }
- inc %a %ad
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement