From 1f1d6c700d546da39744bb95cbc07d580e12fa80 Mon Sep 17 00:00:00 2001 From: flt6 <1404262047@qq.com> Date: Thu, 10 Jul 2025 16:18:53 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BA=BF=E6=80=A7=E5=8F=98=E6=8D=A2=20-=20np?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- transform/rotate_single.py | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/transform/rotate_single.py b/transform/rotate_single.py index f236af5..914ebd6 100644 --- a/transform/rotate_single.py +++ b/transform/rotate_single.py @@ -1,7 +1,6 @@ import math 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] @@ -29,4 +28,17 @@ def rotate_line(line,p,dgr): return [rk,rp1[1]-rk*rp1[0]] -print(rotate_line((3,4),(2,1),math.pi/4)) \ No newline at end of file +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)) \ No newline at end of file