Con trăn xoay vector

Trong bài học này, chúng ta sẽ sử dụng lập trình để cố gắng giải quyết Cách Xoay Vector 2D Theo Độ Bằng Python. câu đố. Mã hiển thị dưới đây chứng minh điều này

from math import cos, sin
import numpy as np
theta = np.deg2rad(30)
rot = np.array([[cos(theta), -sin(theta)], [sin(theta), cos(theta)]])
v = np.array([1, 0])
w = np.array([3, 4])
v2 = np.dot(rot, v)
w2 = np.dot(rot, w)
print(v2)  # [0.8660254 0.5      ]
print(w2)  # [0.59807621 4.96410162]

Sử dụng nhiều ví dụ khác nhau, chúng ta đã học được cách giải bài Cách xoay vectơ 2D theo độ trong Python

Làm cách nào để bạn xoay một vectơ 90 độ trong Python?

Làm thế nào để bạn xoay 90 độ trong Python? . 16-Jun-2022

Làm thế nào để bạn xoay một vectơ ở một góc nhất định?

Làm cách nào để bạn xoay một vectơ trong Python?

Xoay một vectơ v quanh trục bằng cách lấy thành phần của v vuông góc với trục, xoay theta trong mặt phẳng vuông góc với trục, sau đó thêm thành phần của v song song với trục. Đặt a là một vectơ đơn vị dọc theo một trục trục. Khi đó a = trục/chuẩn(trục)

Làm thế nào để bạn xoay một vector 2D 90 độ?

Thông thường, các vectơ xoay liên quan đến toán học ma trận, nhưng có một mẹo thực sự đơn giản để xoay một vectơ 2D 90° theo chiều kim đồng hồ. chỉ cần nhân phần X của vectơ với -1, sau đó hoán đổi giá trị X và Y. 12-Jun-2015

Làm thế nào để bạn xoay một vector 45 độ?

Nếu chúng ta biểu diễn điểm (x,y) bằng số phức x+iy, thì chúng ta có thể xoay nó 45 độ theo chiều kim đồng hồ chỉ bằng cách nhân với số phức (1−i)/√2 rồi đọc tọa độ x và y của chúng. (x+iy)(1−i)/√2=((x+y)+i(y−x))/√2=x+y√2+iy−x√2. Do đó, tọa độ quay của (x,y) là (x+y√2,y−x√2). 06-May-2013

Làm thế nào để bạn xoay một vector trong 2d?

Làm thế nào để bạn xoay một vectơ 2D theo góc?

“xoay véc tơ 2d theo góc” Đáp án mã

  • quay vectơ (x1, y1) ngược chiều kim đồng hồ một góc đã cho
  • newX = oldX * cos(góc) - oldY * sin(góc)
  • newY = oldX * sin(góc) + oldY * cos(góc)

Làm thế nào để bạn xoay một vector 180 độ?

Xoay 180 độ Khi xoay một điểm 180 độ ngược chiều kim đồng hồ quanh gốc tọa độ điểm A(x,y) của ta trở thành A'(-x,-y). Vì vậy, tất cả những gì chúng tôi làm là làm cho cả x và y âm. 21-Jan-2020

Làm thế nào để bạn xoay một vector 120 độ?

Nói chung, ma trận quay của góc θ là rθ=(cosθ−sinθsinθcosθ). Trong trường hợp của bạn, θ=±120°, nên cosθ=−1/2 và sinθ=±√32. Bạn chỉ cần áp dụng ma trận cho vectơ để có được hình ảnh của vectơ bằng phép quay. 04-Feb-2014

Đây là một phương pháp tao nhã sử dụng quaternion cực nhanh; . Nó dựa trên phần mở rộng quaternion thành numpy được tìm thấy tại đây

Lý thuyết Đệ tứ. Một bậc bốn là một số có một chiều thực và 3 chiều ảo thường được viết là

import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)
2 trong đó 'i', 'j', 'k' là các chiều ảo. Giống như một số phức đơn vị 'c' có thể biểu thị tất cả các phép quay 2d bằng
import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)
3, một bậc bốn đơn vị 'q' có thể biểu thị tất cả các phép quay 3d bằng
import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)
4, trong đó 'p' là một bậc bốn thuần ảo được đặt bởi trục và góc của bạn

Chúng tôi bắt đầu bằng cách chuyển đổi trục và góc của bạn thành một bậc bốn có kích thước tưởng tượng được cho bởi trục quay của bạn và độ lớn của nó được cho bởi một nửa góc quay tính bằng radian. 4 vectơ phần tử

import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)
5 được xây dựng như sau

import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)

Đầu tiên, một mảng numpy gồm 4 phần tử được xây dựng với thành phần thực w=0 cho cả vectơ được xoay

import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)
6 và trục quay
import numpy as np
import quaternion as quat

v = [3,5,0]
axis = [4,4,1]
theta = 1.2 #radian

vector = np.array([0.] + v)
rot_axis = np.array([0.] + axis)
axis_angle = (theta*0.5) * rot_axis/np.linalg.norm(rot_axis)
7. Biểu diễn góc trục sau đó được xây dựng bằng cách chuẩn hóa rồi nhân với một nửa góc mong muốn
vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
0. Xem tại đây để biết lý do tại sao cần có một nửa góc

Bây giờ hãy tạo quaternion

vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
1 và
vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
2 bằng cách sử dụng thư viện và lấy quaternion xoay đơn vị
vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
3 bằng cách lấy hàm mũ

vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)

Cuối cùng, phép quay của vectơ được tính theo thao tác sau

v_prime = q * vec * np.conjugate(q)

print(v_prime) # quaternion(0.0, 2.7491163, 4.7718093, 1.9162971)

Bây giờ, chỉ cần loại bỏ phần tử thực và bạn có vectơ được xoay

________số 8

Lưu ý rằng phương pháp này đặc biệt hiệu quả nếu bạn phải xoay một vectơ qua nhiều phép quay liên tiếp, vì tích bậc bốn chỉ có thể được tính là q = q1 * q2 * q3 * q4 *. * qn và sau đó vectơ chỉ được xoay bởi 'q' ở cuối sử dụng v' = q * v * conj(q)

Phương pháp này cung cấp cho bạn một phép chuyển đổi liền mạch giữa toán tử xoay 3d góc trục chỉ bằng các hàm

vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
4 và
vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
5 (vâng,
vec = quat.quaternion(*v)
qlog = quat.quaternion(*axis_angle)
q = np.exp(qlog)
6 chỉ trả về biểu diễn góc trục. ). Để làm rõ thêm về cách nhân bậc bốn, v.v. làm việc, xem tại đây