Java-Gaming.org    
Featured games (79)
games approved by the League of Dukes
Games in Showcase (477)
Games in Android Showcase (106)
games submitted by our members
Games in WIP (533)
games currently in development
News: Read the Java Gaming Resources, or peek at the official Java tutorials
 
    Home     Help   Search   Login   Register   
Pages: [1]
  ignore  |  Print  
  rotating a single object without rotating the entire screen with Graphics2D  (Read 873 times)
0 Members and 1 Guest are viewing this topic.
Offline Oxy

Junior Newbie





« Posted 2013-04-16 00:45:23 »

Hey I'm trying to program a 2d game, and in the game you can throw balls at other players. i want the ball to rotate though as it flys through the air, the problem is that when i do g2d.rotate(Math.toRadians(rotate)); the ball, the player, the background, the everything thats drawn is rotated. can anyone offer some suggestions on how to rotate one singular object? Thanks!
Offline sproingie

JGO Kernel


Medals: 201



« Reply #1 - Posted 2013-04-23 17:58:28 »

Going through my old threads ... surprised no one got back to you on this.  Use push/popTransform to save and reset the state of your modelview matrix (that is, the current rotation/translation/shearing/scaling states)

1  
2  
3  
g2d.pushTransform();
... do your rotates/scales/etc
g2d.popTransform();


You can stack transforms up to 16 deep, though I really don't recommend going that crazy with it.
Offline alaslipknot
« Reply #2 - Posted 2013-04-23 18:35:16 »

popTransform() ??
is it a class that he (i) should create or is it included in the Java2D ? cause i don't have it

"It's not at all important to get it right the first time. It's vitally important to get it right the last time."
Games published by our own members! Check 'em out!
Legends of Yore - The Casual Retro Roguelike
Offline ClickerMonkey

JGO Coder


Medals: 20


Game Engineer


« Reply #3 - Posted 2013-04-23 18:41:23 »

Make your own methods, something like so:

1  
2  
3  
4  
5  
6  
7  
8  
9  
10  
11  
12  
13  
14  
15  
16  
17  
18  
public class TransformStack {
  private AffineTransform[] transforms;
  private Graphics2D gr;
  private int depth;
  public TransformStack(int depthMax, Graphics2D graphics) {
    gr = graphics;
    transforms = new AffineTransform[depthMax];
    while (--depthMax >= 0) {
      transforms[depthMax] = new AffineTransform();
    }
  }
  public void push() {
    transforms[depth++].setTransform(gr.getTransform());
  }
  public void pop() {
    gr.setTransform(transforms[--depth]);
  }
}

Offline Kerai

Junior Member


Medals: 4



« Reply #4 - Posted 2013-04-23 18:45:58 »

I don't think matrix stack is neccessary for simple things...
He can do it like this.
1  
2  
3  
4  
5  
6  
7  
8  
AffineTransform t = g2.getTransform();

for(Something object : yourObjects) {
    g2.translate(object.x, object.y);
    g2.rotate(object.rotation);
    g2.drawWhatever(object.whatever);
    g2.setTransform(t);
}
Offline ClickerMonkey

JGO Coder


Medals: 20


Game Engineer


« Reply #5 - Posted 2013-04-23 18:48:53 »

That works nicely as well! (that's what I do myself with Java2D) He was asking about those push/pop methods so I thought I would implement them =P

Offline sproingie

JGO Kernel


Medals: 201



« Reply #6 - Posted 2013-04-24 01:50:26 »

For some bizarre reason I read Graphics2D as ... Slick2D.   Emo

I think I'll go back to lurking now.   Tongue
Offline ClickerMonkey

JGO Coder


Medals: 20


Game Engineer


« Reply #7 - Posted 2013-04-24 01:57:42 »

For some bizarre reason I read Graphics2D as ... Slick2D.   Emo

I think I'll go back to lurking now.   Tongue


Gosh you're always starting shit!

Offline StumpyStrust
« Reply #8 - Posted 2013-04-24 03:21:08 »

....for j2d I use this for its simplicity.

1  
2  
3  
4  
5  
6  
public void render(Graphics g)
{
    Graphics2D g2d = g.create(); //cast this to a g2d object
   //do all normal rotation/blending/drawing stuff here
   g2d.dispose();
}

May not be super fast but then neither is j2d.

Pages: [1]
  ignore  |  Print  
 
 
You cannot reply to this message, because it is very, very old.

 

Add your game by posting it in the WIP section,
or publish it in Showcase.

The first screenshot will be displayed as a thumbnail.

pw (24 views)
2014-07-24 01:59:36

Riven (24 views)
2014-07-23 21:16:32

Riven (18 views)
2014-07-23 21:07:15

Riven (21 views)
2014-07-23 20:56:16

ctomni231 (50 views)
2014-07-18 06:55:21

Zero Volt (45 views)
2014-07-17 23:47:54

danieldean (36 views)
2014-07-17 23:41:23

MustardPeter (39 views)
2014-07-16 23:30:00

Cero (55 views)
2014-07-16 00:42:17

Riven (55 views)
2014-07-14 18:02:53
HotSpot Options
by dleskov
2014-07-08 03:59:08

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:58:24

Java and Game Development Tutorials
by SwordsMiner
2014-06-14 00:47:22

How do I start Java Game Development?
by ra4king
2014-05-17 11:13:37

HotSpot Options
by Roquen
2014-05-15 09:59:54

HotSpot Options
by Roquen
2014-05-06 15:03:10

Escape Analysis
by Roquen
2014-04-29 22:16:43

Experimental Toys
by Roquen
2014-04-28 13:24:22
java-gaming.org is not responsible for the content posted by its members, including references to external websites, and other references that may or may not have a relation with our primarily gaming and game production oriented community. inquiries and complaints can be sent via email to the info‑account of the company managing the website of java‑gaming.org
Powered by MySQL Powered by PHP Powered by SMF 1.1.18 | SMF © 2013, Simple Machines | Managed by Enhanced Four Valid XHTML 1.0! Valid CSS!