Gef Connections getting the center of the of the rectangle edge [message #755635] |
Wed, 09 November 2011 07:47 |
karthick9686@gmail.com Missing name Messages: 41 Registered: July 2011 |
Member |
|
|
the getLocation method the chopbox anchor is given below . it Gets a Rectangle from getbox and returns the Point where a line from the center of the Rectangle to the Point intersects the Rectangle.
/**
* Gets a Rectangle from {@link #getBox()} and returns the Point where a
* line from the center of the Rectangle to the Point <i>reference</i>
* intersects the Rectangle.
*
* @param reference
* The reference point
* @return The anchor location
*/
public Point getLocation(Point reference) {
Rectangle r = Rectangle.SINGLETON;
r.setBounds(getBox());
r.translate(-1, -1);
r.resize(1, 1);
getOwner().translateToAbsolute(r);
float centerX = r.x + 0.5f * r.width;
float centerY = r.y + 0.5f * r.height;
if (r.isEmpty()
|| (reference.x == (int) centerX && reference.y == (int) centerY))
return new Point((int) centerX, (int) centerY); // This avoids
// divide-by-zero
float dx = reference.x - centerX;
float dy = reference.y - centerY;
// r.width, r.height, dx, and dy are guaranteed to be non-zero.
float scale = 0.5f / Math.max(Math.abs(dx) / r.width, Math.abs(dy)
/ r.height);
dx *= scale;
dy *= scale;
centerX += dx;
centerY += dy;
return new Point(Math.round(centerX), Math.round(centerY));
}
How to modify the getLocation method so that i get only the center of the edge where the line intersects the rectangle?
|
|
|
|
|
Powered by
FUDForum. Page generated in 0.02510 seconds