Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Getting new position of a line after rotation

I need to find out new coordinates of line after rotation using RotateTransform method on a line.
For example, after this line:

line.RenderTransform = new RotateTransform(25, 0, 0);

line.X1 and the three other properties don't change. I have found some solution for shapes like rectangular, but it doesn't work for line. Line has different way how to treat with it.

EDIT: Thanks for your help H.B. The second way is exactly what I've been looking for.

SOLUTION:

Line line = new Line();
line.X1 = 10;
line.Y1 = 10;
line.X2 = 20;
line.Y2 = 30;

RotateTransform rotation = new RotateTransform();
Point p1 = rotation.Transform(new Point(line.X1, line.Y1));
Point p2 = rotation.Transform(new Point(line.X2, line.Y2));

line.X1 = p1.X;
line.Y1 = p1.Y;
line.X2 = p2.X;
line.Y2 = p2.Y;

This code rotates the line and sets a new values of coordinates to attached properties of this line.

like image 811
Jake Avatar asked Jun 05 '11 08:06

Jake


1 Answers

You can transform points on their own:

var transform = new RotateTransform(25, 0, 0);
var newP1 = transform.Transform(new Point(line.X1,line.Y1));
//...

If you want a permanent transformation you can transform the start and end points and assign the new values to the respective properties.

like image 70
H.B. Avatar answered Sep 21 '22 16:09

H.B.