亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何繪制一個類似于衛生紙的圓柱體。旋轉阿基米德螺旋形成圓柱體

我如何繪制一個類似于衛生紙的圓柱體。旋轉阿基米德螺旋形成圓柱體

哈士奇WWW 2021-12-09 15:48:48
我知道如何得到一個圓柱體,但我想描繪一些東西,比如衛生紙卷,用圓柱體在表面繪制阿基米德螺線。但我需要的是像情節一樣的衛生紙卷。我想出了這背后的數學問題有人可以幫助我使用 python 我需要在 3D 中繪制它以獲得以下等式 在實踐中公式 我想用 L 作為參數,我的方程變成這里 h 是金屬厚度,r 是軋輥的內半徑。該公式使用螺旋輥的圓形近似值。我也知道長度 L =50 有人可以幫我寫 matplotlib 代碼嗎這正是我需要的 http://pgfplots.net/tikz/examples/ cylinder-spiral/ 有人可以幫我把它放在 Matplotlib 中嗎
查看完整描述

1 回答

?
慕虎7371278

TA貢獻1802條經驗 獲得超4個贊

以原點和半徑r為圓心的圓的參數方程為, x = r \times sin(\theta) y = r \times cos(\theta) 其中\theta \in [0,2\pi]。


對于螺旋,半徑隨著 \$\theta\$ 增加。假設 \$r\$ 依賴,\theta因為r = (a+b\theta)它可以, x = (a+b\theta) sin(\theta) y = (a+b\theta) cos(\theta)


要使其成為具有垂直軸的 3D 圖形,您可以添加圓柱體的長度z在linspace(0, L)哪里L。


import matplotlib.pyplot as plt

from mpl_toolkits.mplot3d import Axes3D

import math

import numpy as np


L = 50

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

xpoints=[]

ypoints=[]

a = 0.1

b = 0.1


for theta in np.linspace(0, 2*math.pi, 20):

    xpoints.append((a+b*theta)*math.cos(theta))

    ypoints.append((a+b*theta)*theta*math.sin(theta))

    z = np.linspace(0,L)

    theta, z = np.meshgrid(theta, z)

ax.plot_surface(xpoints,ypoints,z)

plt.show()

既然你有一個工作代碼,你可以把它發布在代碼審查堆棧交換中,我可以在那里用排版數學來解釋。

http://img1.sycdn.imooc.com//61b1b5190001b69705900357.jpg

以下是我以某種方式想出的解決方案,如果有人幫助我改進我的解決方案,我會很高興


L = 50

h= 0.5

r= 5.0[![plot][1]][1]

R = np.sqrt((L*h)/(np.pi)+r**r)

fig = plt.figure()

ax = fig.add_subplot(111, projection='3d')

xpoints=[]

ypoints=[]


for theta in np.linspace(0,20,R):

        xpoints.append(1.1*theta*cos(theta))

        ypoints.append(1.1*theta*sin(theta))

        z = np.linspace(0,R)

        theta, z = np.meshgrid(t, z)

ax.plot_surface(xpoints,ypoints,z)

plt.show()


查看完整回答
反對 回復 2021-12-09
  • 1 回答
  • 0 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號