线性变换 - np实现
This commit is contained in:
@ -1,7 +1,6 @@
|
|||||||
import math
|
import math
|
||||||
|
|
||||||
def linear_trans(arr,x):
|
def linear_trans(arr,x):
|
||||||
return [x[0]*arr[0][0]+x[1]*arr[0][1], x[0]*arr[1][0]+x[1]*arr[1][1]]
|
|
||||||
return [sum(map(lambda x: x[0]*x[1],zip(line,x))) for line in arr]
|
return [sum(map(lambda x: x[0]*x[1],zip(line,x))) for line in arr]
|
||||||
|
|
||||||
|
|
||||||
@ -29,4 +28,17 @@ def rotate_line(line,p,dgr):
|
|||||||
|
|
||||||
return [rk,rp1[1]-rk*rp1[0]]
|
return [rk,rp1[1]-rk*rp1[0]]
|
||||||
|
|
||||||
print(rotate_line((3,4),(2,1),math.pi/4))
|
import numpy as np
|
||||||
|
def rotate_line_np(line,p:np.ndarray,dgr) -> np.ndarray:
|
||||||
|
k,b = line
|
||||||
|
arr = np.array([[np.cos(dgr),-np.sin(dgr)],[np.sin(dgr),np.cos(dgr)]])
|
||||||
|
vec = np.dot(arr,[1,k])
|
||||||
|
rk = vec[1]/vec[0]
|
||||||
|
|
||||||
|
p1 = np.array([0,b])
|
||||||
|
rp = np.dot(arr, p1-p) + p
|
||||||
|
|
||||||
|
return np.array([rk,rp[1]-rk*rp[0]])
|
||||||
|
|
||||||
|
print(rotate_line((3,4),(2,1),math.pi/4))
|
||||||
|
print(rotate_line_np((3,4),np.array([2,1]),math.pi/4))
|
Reference in New Issue
Block a user