Tanggal :September 27, 2020

py41. Linear Rotation

Spread the love

We can use the Rotation matrix to rotate any line.

Here a line (y=2x+1) is rotated by 30 deg counter clockwise.

Since we don’t specify the number of points in linspace, it uses the default num of 50.

# ex41.py
from __future__ import division, print_function
import numpy as np
from numpy import sin, cos, pi
import matplotlib.pyplot as plt
print('Original line: y=5x+1')
print('Rotation matrix: 30 deg ccw (+pi/6)')
ang = pi/6
R = np.array([[cos(ang),-sin(ang)],[sin(ang),cos(ang)]])
print('R (pi/6) =n',R)
x = np.linspace(-2,2)
xyR = [R.dot([xv,5*xv+1]) for xv in x]
xR = [xv[0] for xv in xyR]
yR = [xv[1] for xv in xyR]
plt.plot(x,5*x+1,'r')
plt.plot(xR,yR,'b')
plt.title("x,y - Red, x',y' - Blue for R(pi/6)")
plt.xlabel("x,x'")
plt.ylabel("y,y'")
plt.xlim((-2,2))
plt.ylim((-2,2))
plt.show()

# Original line: y=5x+1
# Rotation matrix: 30 deg ccw (+pi/6)
# R (pi/6) =
# [[ 0.8660254 -0.5 ]
# [ 0.5 0.8660254]]

Output:

Share

Leave a Reply

Your email address will not be published. Required fields are marked *