How to scale rotated matrix in a new coordinate?

1 view (last 30 days)
Hello All: I have rotated foil data (each point has x,y coordinate) and I want to scale the foil after the rotation. In other words, I want to apply the scaling factor in different coordinate ( say the new coordinate is rotated 15 deg).
Appreciate your suggestions
  2 Comments
Abdulaziz Abutunis
Abdulaziz Abutunis on 18 Dec 2017
Jan Thank you for your response. Yes, my question may be better addressed to algebra or other groups but I thought there may be some commands in Matlab ready to do that. What I meant was that I have an airfoil that I have rotated and then I did some other steps then I need to scale down the airfoil in the newly rotated x-direction only. It seems that even if I want to scale in newly rotated x-direction only but I also should consider the movement of data in y-coordinate to get what I want. I have simplified the what I need in the attached file. Thanks

Sign in to comment.

Accepted Answer

Jan
Jan on 18 Dec 2017
Your question is still vague, so I can post a vague answer only:
If you have a set of points, and want to scale the values "along a direction", rotate the points such, that the direction vector point to the x axis. Then divide the x component of the coordinates and rotate the point back. You can express this as 3 matrices:
T = Rot(alpha) * Scale * Rot(-alpha) =
= [cos(alpha) -sin(alpha); sin(alpha) cos(alpha)] * ...
[0.5, 0; 0, 1] * ...
[cos(alpha) sin(alpha); -sin(alpha) cos(alpha)]
You can multiply this to get the matrix, which scales the points in the direction vector, which includes the signed angle alpha with the x axis.

More Answers (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!