QB64.org Forum

Active Forums => Programs => Topic started by: Dav on October 22, 2021, 09:58:47 am

Title: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: Dav on October 22, 2021, 09:58:47 am
I keep playing around with the fascinating rotozoom.  Here's an effect I thought may be worth sharing.  Tried _SETALPHA on the _DISPLAY which seems to add a blur effect on the swirl.  Let it run a bit for interesting colors.

- Dav

Code: QB64: [Select]
  1.  
  2. SCREEN _NEWIMAGE(800, 640, 32)
  3.  
  4.     _SETALPHA RND * 254, , -11: s = RND * 125
  5.     _PUTIMAGE (RND * _WIDTH, RND * _HEIGHT)-STEP(s, s), -11
  6.     _SETALPHA RND * 255, 1 TO -1, _DISPLAY
  7.     RotoZoom3 _WIDTH / 2 + RND * 3, _HEIGHT / 2 + RND * 3, _DISPLAY, .88, .98, _D2R(a): a = a + 1
  8.     _LIMIT 25
  9.  
  10.  
  11. SUB RotoZoom3 (X AS LONG, Y AS LONG, Image AS LONG, xScale AS SINGLE, yScale AS SINGLE, radianRotation AS SINGLE)
  12.     DIM px(3) AS SINGLE: DIM py(3) AS SINGLE ' simple arrays for x, y to hold the 4 corners of image
  13.     DIM W&, H&, sinr!, cosr!, i&, x2&, y2& '   variables for image manipulation
  14.     W& = _WIDTH(Image&): H& = _HEIGHT(Image&)
  15.     px(0) = -W& / 2: py(0) = -H& / 2 'left top corner
  16.     px(1) = -W& / 2: py(1) = H& / 2 ' left bottom corner
  17.     px(2) = W& / 2: py(2) = H& / 2 '  right bottom
  18.     px(3) = W& / 2: py(3) = -H& / 2 ' right top
  19.     sinr! = SIN(-radianRotation): cosr! = COS(-radianRotation) ' rotation helpers
  20.     FOR i& = 0 TO 3 ' calc new point locations with rotation and zoom
  21.         x2& = xScale * (px(i&) * cosr! + sinr! * py(i&)) + X: y2& = yScale * (py(i&) * cosr! - px(i&) * sinr!) + Y
  22.         px(i&) = x2&: py(i&) = y2&
  23.     NEXT
  24.     _MAPTRIANGLE _SEAMLESS(0, 0)-(0, H& - 1)-(W& - 1, H& - 1), Image TO(px(0), py(0))-(px(1), py(1))-(px(2), py(2))
  25.     _MAPTRIANGLE _SEAMLESS(0, 0)-(W& - 1, 0)-(W& - 1, H& - 1), Image TO(px(0), py(0))-(px(3), py(3))-(px(2), py(2))
  26.  
  27.  
Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: Pete on October 22, 2021, 12:22:12 pm
No! No! No! You need the FreeBASIC icon for that!

Well, help me out here. What part of the code picks up the QB64 icon from the title window?

Pete

Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: Dav on October 22, 2021, 12:48:07 pm
I should not make a habit of posting code that uses it, but -11 is the image handle currently for the builtin icon.. I use at home frequently when experimentig, but its not a good idea to share code using i guess. Sorry about that.

- Dav
Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: Pete on October 22, 2021, 02:51:30 pm
What's the number for the not-built in FB horse? That's what I want to see swirling around!

Thanks Dav, I had no idea about the -11 being reserved for the QB64 icon. That's useful!

Pete
Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: bplus on October 22, 2021, 03:15:48 pm
@Dav you should get even more effects by using the x and y scale independently.
Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: johnno56 on October 22, 2021, 07:24:36 pm
Just tried this demo... Cool... Not very accurate... but cool none the less.

Let me explain... For those of us that live "down under" the swirl (coriolis effect) is correct... Should this be moving in the opposite direction for those of us that live above the equator? Oh. I can be SO picky at times... (bplus... not a word... lol)
Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: Pete on October 22, 2021, 07:36:58 pm
🙃
Title: Re: Swirling QB64 drainpipe. Another rotozoom effect.
Post by: johnno56 on October 23, 2021, 03:05:28 am
Oh. Ha Ha... Good one, Pete.