Vẽ ma trận 3d python

Đề xuất của Falko về việc sử dụng đường viền hoạt động với một chút tài chính. Nó có một chút hạn chế vì ít nhất phiên bản đường viền của tôi có một vài lỗi trong đó đôi khi nó hiển thị một trong các mặt phẳng phía trước các mặt phẳng khác mà lẽ ra nó phải ở phía sau, nhưng hiện tại chỉ vẽ ba mặt trước hoặc ba mặt sau của khối lập phương.

import numpy as np
import math
import matplotlib.pyplot as plot
import mpl_toolkits.mplot3d.axes3d as axes3d

def cube_marginals(cube, normalize=False):
    c_fcn = np.mean if normalize else np.sum
    xy = c_fcn(cube, axis=0)
    xz = c_fcn(cube, axis=1)
    yz = c_fcn(cube, axis=2)
    return(xy,xz,yz)

def plotcube(cube,x=None,y=None,z=None,normalize=False,plot_front=False):
    """Use contourf to plot cube marginals"""
    (Z,Y,X) = cube.shape
    (xy,xz,yz) = cube_marginals(cube,normalize=normalize)
    if x == None: x = np.arange(X)
    if y == None: y = np.arange(Y)
    if z == None: z = np.arange(Z)

    fig = plot.figure()
    ax = fig.gca(projection='3d')

    # draw edge marginal surfaces
    offsets = (Z-1,0,X-1) if plot_front else (0, Y-1, 0)
    cset = ax.contourf(x[None,:].repeat(Y,axis=0), y[:,None].repeat(X,axis=1), xy, zdir='z', offset=offsets[0], cmap=plot.cm.coolwarm, alpha=0.75)
    cset = ax.contourf(x[None,:].repeat(Z,axis=0), xz, z[:,None].repeat(X,axis=1), zdir='y', offset=offsets[1], cmap=plot.cm.coolwarm, alpha=0.75)
    cset = ax.contourf(yz, y[None,:].repeat(Z,axis=0), z[:,None].repeat(Y,axis=1), zdir='x', offset=offsets[2], cmap=plot.cm.coolwarm, alpha=0.75)

    # draw wire cube to aid visualization
    ax.plot([0,X-1,X-1,0,0],[0,0,Y-1,Y-1,0],[0,0,0,0,0],'k-')
    ax.plot([0,X-1,X-1,0,0],[0,0,Y-1,Y-1,0],[Z-1,Z-1,Z-1,Z-1,Z-1],'k-')
    ax.plot([0,0],[0,0],[0,Z-1],'k-')
    ax.plot([X-1,X-1],[0,0],[0,Z-1],'k-')
    ax.plot([X-1,X-1],[Y-1,Y-1],[0,Z-1],'k-')
    ax.plot([0,0],[Y-1,Y-1],[0,Z-1],'k-')

    ax.set_xlabel('X')
    ax.set_ylabel('Y')
    ax.set_zlabel('Z')
    plot.show()

plot_front=True

Vẽ ma trận 3d python
plot_front=False
Vẽ ma trận 3d python
Dữ liệu khác (không hiển thị)
Vẽ ma trận 3d python

Matplotlib ban đầu được thiết kế chỉ với ý tưởng vẽ hai chiều. Vào khoảng thời gian 1. 0, một số tiện ích vẽ sơ đồ ba chiều được xây dựng trên màn hình hai chiều của Matplotlib và kết quả là một bộ công cụ thuận tiện (nếu hơi hạn chế) để trực quan hóa dữ liệu ba chiều. các ô ba chiều được kích hoạt bằng cách nhập bộ công cụ

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
7, đi kèm với bản cài đặt Matplotlib chính

Trong 1]

from mpl_toolkits import mplot3d

Sau khi mô-đun con này được nhập, một trục ba chiều có thể được tạo bằng cách chuyển từ khóa

%matplotlib inline
import numpy as np
import matplotlib.pyplot as plt
8 tới bất kỳ quy trình tạo trục thông thường nào

Chào các bạn, mọi người có khỏe không, hôm nay mình muốn bàn một chút về việc xoay vector trong không gian 2 chiều và 3 chiều. Không phải dân chuyên Toán nên các thuật ngữ như Euler, Quaternions,. Mình cũng chả có cách nào giải thích cho các bạn, nhưng đưa ra vài ví dụ trong lập trình chắc vẫn được nên hôm nay mình viết bài này cũng muốn tham khảo ý kiến ​​một chút

Như các bạn đã biết, không gian 2D chỉ chứa trục x và trục y nên ta nhìn qua là một mặt phẳng không có chiều sâu. To Unknown, I will MINH MINH Một vector được tạo thành từ 2 điểm bất kỳ bằng thư viện matplotlib

def rotate_matrix( m ):
    return [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
5

Tôi đã có 1 véc tơ trong không gian 2 chiều, giờ tôi sẽ xoay véc tơ theo một góc xác định duy nhất, ở đây tôi lấy góc 90 độ. dựa trên công thức dưới đây sẽ sinh ra x y của vector mới

def rotate_matrix( m ):
    return [[m[j][i] for j in range(len(m))] for i in range(len(m[0])-1,-1,-1)]
6

Lời kết

Nếu bạn muốn làm điều này trong một hàm, thì

và một trong hai cách, kết quả cho

Ngoài ra, nếu bạn muốn chuyển đổi thông thường, thì phiên bản python thuần một dòng đơn giản là

https. //ý chính. github. com/LyleScott/e36e08bfb23b1f87af68c9051f985302

Chào các bạn, mọi người có khỏe không, hôm nay mình muốn bàn một chút về việc xoay vector trong không gian 2 chiều và 3 chiều. Không phải dân chuyên Toán nên các thuật ngữ như Euler, Quaternions,. Mình cũng chả có cách nào giải thích cho các bạn, nhưng đưa ra vài ví dụ trong lập trình chắc vẫn được nên hôm nay mình viết bài này cũng muốn tham khảo ý kiến ​​một chút

https. // stackoverflow. com/câu hỏi/17763655/xoay-of-a-point-in-3d-about-an-arbitrary-axis-using-python