File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Game Development and the fly likes custom shape rotation issue Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Android Security Essentials Live Lessons this week in the Android forum!
JavaRanch » Java Forums » Java » Game Development
Bookmark "custom shape rotation issue" Watch "custom shape rotation issue" New topic
Author

custom shape rotation issue

Mihir K Parekh
Greenhorn

Joined: Jul 20, 2012
Posts: 11
I am trying to rotate a custom shape around its center, but can not get the result as expected.

what i want is

*shape should be rotated around its center without moving itself.*

what my solution is currently doing is rotating
a whole shape around its center , by every rotation its changing its position.

I have multiple shapes so i have created a class to encapsulate a shape with its transform in following class




I am calculating angle of rotation using following method

public static double getAngle(Point2D origin, Point2D other) {

double dy = other.getY() - origin.getY();
double dx = other.getX() - origin.getX();
double angle;

if (dx == 0) {// special case
angle = dy >= 0 ? Math.PI / 2 : -Math.PI / 2;
} else {
angle = Math.atan(dy / dx);
if (dx < 0) // hemisphere correction
angle += Math.PI;
}
// all between 0 and 2PI
if (angle < 0) // between -PI/2 and 0
angle += 2 * Math.PI;
return angle;
}

in mouse press event of the canvas mouse listener

selectedShape.onMousePress(me, canvasBoundary, shoeViewer
.getShapeOperation());


i am just calling selected shape's onMousePress method

and in my mouse drag method of the canvas mouse listener , i am just calling the selected shape's onMouseDrag method which updates the rotation angle as you can see from the very first class

selectedShape.onMouseDrag(me, canvasBoundary, shoeViewer
.getShapeOperation());


and you can see the draw method of the individual shape , to draw the shape according to current transform , i am calling from paintComponent like

Iterator<Shoe> shoeIter = shoeShapeMap.values().iterator();

while (shoeIter.hasNext()) {

Shoe shoe = shoeIter.next();
shoe.draw(g2, firstTime);

}


where shoeShapeMap contains all of the custom shapes currently on the canvas.

is i am doing mistake in calculating angle or determining anchor point ? my current solution rotates shape 360 degree by checking all the conditions[90 degree etc.] as you can see in the above mentioned method.

i want the shape should be rotated around its center without resizing its positions ? in the word it is difficult to explain , so please suggest me any better way to show here what i want to accomplish ?

i think i have mentioned all the things related to this issue. if you have any doubts please feel free to ask me.

Thank You
Mihir Parekh
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: custom shape rotation issue
 
Similar Threads
Wanted: Java2D example of zooming and panning with scroll bars
AffineTransform Rectangle2D
Moving and resizing a rectangle around
Understanding how to build a hexagonal grid.
Drawing text along a line