Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从Matplotlib中的三维圆获取圆弧?_Python_Python 2.7_Matplotlib_Kinematics - Fatal编程技术网

Python 如何从Matplotlib中的三维圆获取圆弧?

Python 如何从Matplotlib中的三维圆获取圆弧?,python,python-2.7,matplotlib,kinematics,Python,Python 2.7,Matplotlib,Kinematics,我试图使用matplotlib从与Z轴相切的圆中获得一条圆弧,如下图所示 我只想要一个被黄色矩形覆盖的圆弧。下面是获得圆的代码 import matplotlib as mpl from mpl_toolkits.mplot3d import Axes3D import numpy as np import matplotlib.pyplot as plt fig = plt.figure() ax = fig.add_subplot(111, projection='3d') r = i

我试图使用matplotlib从与Z轴相切的圆中获得一条圆弧,如下图所示

我只想要一个被黄色矩形覆盖的圆弧。下面是获得圆的代码

import matplotlib as mpl
from mpl_toolkits.mplot3d import Axes3D
import numpy as np
import matplotlib.pyplot as plt

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
r = input('Enter the radius: ')
d = 2*r

theta = np.linspace(0, 2 * np.pi, 201)
y = d*np.cos(theta)
z = d*np.sin(theta)

for i in range(1):
    phi = i*np.pi    
    ax.plot(y*np.sin(phi)+d*np.sin(phi),
            y*np.cos(phi)+d*np.cos(phi), z)

ax.plot((0,0),(0,0), (-d,d), '-r', label='z-axis')
ax.set_xlabel('X-Axis')
ax.set_ylabel('Y-Axis')
ax.set_zlabel('Z-Axis')
ax.legend()

plt.show()
如果您能提供以下信息,我将不胜感激

  • 我怎样才能得到弧线
  • 如何更改X-Y平面上与Z轴相切的圆弧角度

  • 如图所示,要使圆弧/圆位于YZ平面内,方程式非常简单:

    式中,y0和z0为圆心,R为半径

    该方程的解为:

    其中跨距要有一个完整的圆

    然后,您可以简单地将的域限制为只有一个圆弧而不是一个圆:

    将numpy导入为np
    将matplotlib.pyplot作为plt导入
    图=plt.图()
    ax=图添加_子图(111,投影='3d')
    r=5。
    y0=r#使切线位于y=0
    z0=0。
    #θ仅在π/2和3pi/2之间变化。划半圆
    θ=np.linspace(np.pi/2,3*np.pi/2,201)
    x=np.类零(θ)#x=0
    y=r*np.cos(θ)+y0#y-y0=r*cos(θ)
    z=r*np.sin(θ)+z0#z-z0=r*sin(θ)
    轴图(x,y,z)
    轴图((0,0),(0,0),(-r,r),'-r',label='z轴')
    ax.set_xlabel('X轴')
    ax.set_ylabel('Y轴')
    ax.set_zlabel('Z轴')
    ax.图例()
    plt.show()
    

    要更改角度或圆弧,有几种方法。我认为更直接的方法是通过设置y和z的不同半径来绘制椭圆(而不是圆)的圆弧:

    x = np.zeros_like(theta) # x=0
    y = a*np.cos(theta) + y0 # y - y0 = a*cos(theta)
    z = b*np.sin(theta) + z0 # z - z0 = b*sin(theta)
    

    如图所示,要使圆弧/圆位于YZ平面内,方程式非常简单:

    式中,y0和z0为圆心,R为半径

    该方程的解为:

    其中跨距要有一个完整的圆

    然后,您可以简单地将的域限制为只有一个圆弧而不是一个圆:

    将numpy导入为np
    将matplotlib.pyplot作为plt导入
    图=plt.图()
    ax=图添加_子图(111,投影='3d')
    r=5。
    y0=r#使切线位于y=0
    z0=0。
    #θ仅在π/2和3pi/2之间变化。划半圆
    θ=np.linspace(np.pi/2,3*np.pi/2,201)
    x=np.类零(θ)#x=0
    y=r*np.cos(θ)+y0#y-y0=r*cos(θ)
    z=r*np.sin(θ)+z0#z-z0=r*sin(θ)
    轴图(x,y,z)
    轴图((0,0),(0,0),(-r,r),'-r',label='z轴')
    ax.set_xlabel('X轴')
    ax.set_ylabel('Y轴')
    ax.set_zlabel('Z轴')
    ax.图例()
    plt.show()
    

    要更改角度或圆弧,有几种方法。我认为更直接的方法是通过设置y和z的不同半径来绘制椭圆(而不是圆)的圆弧:

    x = np.zeros_like(theta) # x=0
    y = a*np.cos(theta) + y0 # y - y0 = a*cos(theta)
    z = b*np.sin(theta) + z0 # z - z0 = b*sin(theta)