# Thread: how u rotate the arrow mark as the line moves accordingly

1. Member Join Date
Jan 2008
Posts
7
Rep Power
0

## how u rotate the arrow mark as the line moves accordingly

can any one help me how the angles of the arrow mark should rotate as the line moves accordingly. here i am placing the code for arrow mark in the fixed angle.

AffineTransform at = AffineTransform.getTranslateInstance((point2.x + point4.x)/2, (point2.y + point4.y)/2);
int b = 8;
GeneralPath path = new GeneralPath();
path.moveTo(0,0); // distance between line and the arrow mark
int x =(int)(-b * Math.cos(theta));
int y =(int) (b * Math.sin(theta));
path.lineTo(x,y);
x = (int) (-b * Math.cos(-theta));
y = (int) (b * Math.sin(-theta));
path.moveTo(0,0); // distance between line and the arrow mark
path.lineTo(x,y);
Shape shape = at.createTransformedShape(path);
graphics2D.setPaint(Color.black);
graphics2D.draw(shape);
at.rotate(theta,x,y);
drawLine(graphics2D,point2.x,point2.y,point4.x,poi nt4.y);// line drawing 2 points.  Reply With Quote

2. ## Java Code:
```Point point2 = new Point(100,200);

protected void paintComponent(Graphics g) {
Graphics2D graphics2D = (Graphics2D)g;
AffineTransform at =
AffineTransform.getTranslateInstance(point2.x, point2.y);
int b = 8;
// The idea of using a GeneralPath is so we can
// create the (three lines that make up the) arrow
// (only) one time and then use AffineTransform to
// place it anywhere we want.
GeneralPath path = new GeneralPath();

path.moveTo(0,0);
path.lineTo(-100,0);

// distance between line and the arrow mark  <** not **
// Start a new line segment from the position of (0,0).
path.moveTo(0,0);
// Create one of the two arrow head lines.
int x =(int)(-b * Math.cos(theta));
int y =(int) (b * Math.sin(theta));
path.lineTo(x,y);

// distance between line and the arrow mark  <** not **
// Make the other arrow head line.
x = (int) (-b * Math.cos(-theta));
y = (int) (b * Math.sin(-theta));
path.moveTo(0,0);
path.lineTo(x,y);

// theta was used for the angle between the arrow
// shaft and each of its arrow head lines.
// If you wnat to also rotate the arrow (GeneralPath)
// by 45 degrees, okay.
// Set up the transform the way you want it, ie, do
// all the work before drawing the final result.
at.rotate(theta,x,y);
Shape shape = at.createTransformedShape(path);
graphics2D.setPaint(Color.black);
graphics2D.draw(shape);

// This is unnecessary since you are using the
// GeneralPath to store all three lines segments
// that make up the arrow, ie, the GeneralPath is
// the arrow. So you apply the AffineTransform to
// the GeneralPath and it does all the work.
// line drawing 2 points.
//    graphics2D.drawLine(point2.x,point2.y,point4.x,point4.y);
}```  Reply With Quote

#### Posting Permissions

• You may not post new threads
• You may not post replies
• You may not post attachments
• You may not edit your posts
•