Latest Uploads
IFS Viewer 3

Andy_A

Still Truckin'

rychan

Curlicue Fractals

Andy_A

heroextant ... -small.png

HoboBen

image-25-0 ... 26-04.jpeg

Jayenkai

Help_Fight ... rivacy.png

Jayenkai

Forum Home

Image rotation?

UserMessage
Posted : Tuesday, 30 November 2010, 10:57 | Permalink
spinal


I am trying to rotate an image (yes I know there is a rotate image function, I'm not going to use it). Anyway, the simple way is to do the following --

-->

However, it does leave gaps in the output image. I read somewhere that image rotation should be done backwards, as in, cycle through the output image and work out which pixel should be there, or something like that. But I have yet to find any info on how to do this.
Does anyone know how this is done?

-----
Download "Don't Flip Out!" Directly to your OUYA! (Click Here).
Homepage : http://spinalcode.co.uk
Posted : Wednesday, 01 December 2010, 02:46 | Permalink | Mark Here
Jayenkai


WW Entries : 103
It's quite awkward to think of this backwards, when you're working with pixels of a rotated rectangle.
Instead, simplify it.
You need to fill surrounding pixels of each pixel, so just do that.
Find each rx/ry, then go backwards for each pixel that's around it.

-->

-----
"Load, Next List!"
Homepage : http://AGameAWeek.com
Posted : Wednesday, 01 December 2010, 09:22 | Permalink | Mark Here
Andy_A


A quick and dirty way to fill in the gaps is to plot a 2x2 rect instead of a single pixel.

The drawback is that your image may be slightly distorted due to the way the rects overlap.

-->
Posted : Wednesday, 01 December 2010, 12:34 | Permalink | Mark Here
spinal


OK, I tweaked Jay's code a little, removed the initial rotation and instead worked completely backwards.

I assume though, that there is a simple way to find the min and max x and y values from checking the rotation of the image corners first though, I just guessed

-->

-----
Download "Don't Flip Out!" Directly to your OUYA! (Click Here).
Homepage : http://spinalcode.co.uk
Posted : Wednesday, 15 December 2010, 16:51 | Permalink | Mark Here
Teasy


That looks neat ^^

For finding the maximum image rotation corners,
I think you're looking for something like this, Spinal

-->

To see it in action,
in a slightly modified program:

-->

There is also room for more optimization ^^
Homepage : http://www.bettiesart.com/tc/contact
Posted : Saturday, 18 December 2010, 13:39 | Permalink | Mark Here
dna


Jay, In your code you use :

Graphics 1024,768,0,2
Graphics 320,240,0,3

What does that do? Why is that in there twice?

@Teasy: That's real smoothe. I can see where BB is slow when doing this.

Does BMax make a difference as far as the speed of the rot?


-----
DNA
Posted : Saturday, 18 December 2010, 15:06 | Permalink | Mark Here
Jayenkai


WW Entries : 103
,2 says "Make the window THIS big"
,3 says "Make this a scalable window."

With a scalable window, you can Maximise it if you wish, but everything ends up looking a bit blurry and stretchy.
It's a nice thing to have, but ,2 will always be clearer.

However..
,3 doesn't set the window's default size.
So, by setting a LARGE ,2 (and making the window be 1024x768) and THEN setting a smaller ,3, you end up with the 320x240 graphics being rescaled up to the 1024x768 size.

Basically, whereas we're drawing things to only a 320x240 area, they're actually being displayed 3 times bigger on the screen.

Otherwise, you'd be looking at a teensy tiny window!

-----
"Load, Next List!"
Homepage : http://AGameAWeek.com
Posted : Saturday, 18 December 2010, 16:03 | Permalink | Mark Here
CodersRule



I never knew you could do that.
I always wondered how to make a resizable window that big by default.
Homepage : http://tacosareawesome.com/
Posted : Saturday, 25 December 2010, 06:31 | Permalink | Mark Here
Teasy



dna:
if you optimize the code way more,
it should be smooth and superfast in blitz2d even

i still have some of blitzcoder's code laying around
from optimization/math wizards ^^
which does exactly that!

i am not familiar
with blitzmax' graphics interface/library
(opengl) benchmarks,
but i imagine that it usually depends
on (the wishes of) the coder
whether something is fast or not

taking into account that blitzmax
is more capable, flexible and faster in itself,
it may be fairly easy to get fast results in it

jayenkai:
that's a nice trick
i usually use some dll calls to pull that off ^^
( with userlibs it's a snap really )

codersrule:
particularly the functions from the user32.dll
can make the entire blitz window:
- stretch to overlap the entire screen,
- remove the caption and borders,
- and stay on top.
so basically a 'fake fullscreen'

here's the code i use to do that:
-->

and here's the "library" (interface) i'm using:
-->
WindowHandling.BB (25 Dec 2010)

Homepage : http://www.bettiesart.com/tc/contact
Posted : Monday, 17 January 2011, 09:36 | Permalink | Mark Here
Teasy


A few days ago I came across an old image rotation algorithm which is superfast by using 3 image skew operations.
I do not remember exactly who created the function, but I optimized it a little bit ^^

I do know that the creator was one of the brilliant minds over on BlitzCoder, which could be one of the following:
- Antony, Axeman1, BadJim, Bagels, BasicGamer2, Boomer, Chevron, CyberSeth, cR@wLy, DarkEagle, DJWoodgate, Eelco, Foppy, Gnasher, Gobble, LarsG, MutteringGoblin, ObviousDisaster, RepeatUntil, SirXriS, Skevo, World_Creator or someone else!

Anyway, here's the function with example program
I have inlined any required stuff from external files for your convenience ^^

-->
copyrectrotaskewopti 1e2.bb
Homepage : http://www.bettiesart.com/tc/contact
-=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- (c) WidthPadding Industries 1987 658|0 -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=- -=+=-
Latest Posts
PIP Crap
rockford Mon 07:54
VR is Incoming
Jayenkai Mon 02:25
OUYA vs Cortex
Jayenkai Sun 23:16
Independence Day 2 : Resurgence
rockford Sun 22:56
AGameAWeek : 2016 - Part Two
Jayenkai Sun 12:13
Number-Link
Jayenkai Sun 07:03
Z ordering
Dither Sat 13:30
AGameAWeek : 2016 - Part One
Jayenkai Sat 08:39
EU to UK Finances
rockford Sat 02:27
Sick Tax
rockford Sat 01:34
More

Latest Items
Showcase : Go!
rychan Sat 14:26
Showcase : IFS Viewer 3
Andy_A Mon 13:29
Showcase : Map Generator variation
Pakz Sat 00:08
Showcase : Popcorn Bucket
Jayenkai Mon 13:15
Showcase : Colour Guesser
Jayenkai Sun 06:31
Showcase : Unseen
rychan Mon 03:31
Snippet : Simple Dungeon level Generator
Andy_A Wed 07:44
Snippet : Simple Dungeon level Generator(mx)
Pakz Tue 06:23
Blog : BreadBox
spinal Sun 09:11
Snippet : Blurring and Dripping, rectangles
Pakz Thu 05:52
Showcase : Curlicue Fractals
Jayenkai Sun 08:41
Showcase : Grey backgrounds
Pakz Sun 07:43
News : Newsletter #265
steve_ancell Fri 02:58
Showcase : Jumble Blocks
steve_ancell Mon 09:44
Showcase : Harpoons and Balls
Ninjinister Mon 07:29
More

Who's Online
Andy_A
Mon, at 10:18
Jayenkai
Mon, at 10:04
rockford
Mon, at 08:28
GfK
Mon, at 05:41
HoboBen
Mon, at 04:34
steve_ancell
Mon, at 04:15
Pakz
Mon, at 03:42
rychan
Mon, at 03:38
shroom_monk
Mon, at 03:31
spinal
Mon, at 01:52
Link to this page
Site : Jayenkai 2006-Infinity | MudChat's origins, BBCode's former life, Image Scaler.