最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

基于Python繪制3D立體愛心圖案的示例詳解

 更新時間:2022年11月11日 10:51:13   作者:弦masamasa  
這篇文章主要為大家詳細介紹了利用Python實現(xiàn)繪制3D立體愛心圖案的四種不同方法,文中的示例代碼講解詳細,感興趣的小伙伴可以動手嘗試一下

原理

1.使用python中的mtplotlib庫。

2.立體愛心面公式

點畫法(實心)

代碼

import matplotlib.pyplot as plt #導(dǎo)入繪圖模塊
from mpl_toolkits.mplot3d import Axes3D #3d繪圖模塊
import numpy as np #導(dǎo)入數(shù)值計算拓展模塊

#start generating points
x_lim=np.linspace(-10,10,150)
y_lim=np.linspace(-10,10,150)
z_lim=np.linspace(-10,10,150)
X_points=[] #用來存放繪圖點X坐標
Y_points=[] #用來存放繪圖點Y坐標
Z_points=[] #用來存放繪圖點Z坐標
for x in x_lim:
    for y in y_lim:
        for z in z_lim:
            if (x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3<=0:
                X_points.append(x)
                Y_points.append(y)
                Z_points.append(z)

plt.style.use('seaborn')
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d') 
ax.scatter(X_points,Y_points,Z_points,color="red") 
plt.show()

運行效果

這個畫法側(cè)面看起來很無語。

點畫法(空心)

代碼

import matplotlib.pyplot as plt #導(dǎo)入繪圖模塊
from mpl_toolkits.mplot3d import Axes3D #3d繪圖模塊
import numpy as np #導(dǎo)入數(shù)值計算拓展模塊

#start generating points
x_lim=np.linspace(-10,10,200)
y_lim=np.linspace(-10,10,200)
z_lim=np.linspace(-10,10,200)
X_points=[] #用來存放繪圖點X坐標
Y_points=[] #用來存放繪圖點Y坐標
Z_tmp=[]
Z_points=[] #用來存放繪圖點Z坐標
for y in y_lim:
    for x in x_lim:
        for z in z_lim:
            k=(x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3
            if k<=0 :
                Z_tmp.append(z)
                if y<=-0.55 or y>=0.55:
                    X_points.append(x)
                    Y_points.append(y)    
                    Z_points.append(z)
        if Z_tmp:
            X_points.append(x)
            Y_points.append(y)    
            Z_points.append(max(Z_tmp))
            X_points.append(x)
            Y_points.append(y)    
            Z_points.append(min(Z_tmp))
            Z_tmp.clear()

plt.style.use('seaborn')
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d') 
ax.set_zlim(-1, 1)
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.scatter(X_points,Y_points,Z_points)

plt.show()

運行效果

折線畫法 (線團)

代碼

import matplotlib.pyplot as plt #導(dǎo)入繪圖模塊
from mpl_toolkits.mplot3d import Axes3D #3d繪圖模塊
import numpy as np #導(dǎo)入數(shù)值計算拓展模塊

#start generating points
x_lim=np.linspace(-10,10,150)
y_lim=np.linspace(-10,10,150)
z_lim=np.linspace(-10,10,150)
X_points=[] #用來存放繪圖點X坐標
Y_points=[] #用來存放繪圖點Y坐標
Z_tmp=[]
Z_points=[] #用來存放繪圖點Z坐標
for y in y_lim:
    for x in x_lim:
        for z in z_lim:
            k=(x**2+(9/4)*y**2+z**2-1)**3-(9/80)*y**2*z**3-x**2*z**3
            if k<=0 :
                Z_tmp.append(z)
                if y<=-0.55 or y>=0.55:
                    X_points.append(x)
                    Y_points.append(y)    
                    Z_points.append(z)
        if Z_tmp:
            X_points.append(x)
            Y_points.append(y)    
            Z_points.append(max(Z_tmp))
            X_points.append(x)
            Y_points.append(y)    
            Z_points.append(min(Z_tmp))
            Z_tmp.clear()

plt.style.use('seaborn')
fig=plt.figure()
ax=fig.add_subplot(111,projection='3d') 
ax.set_zlim(-1, 1)
ax.set_xlim(-1, 1)
ax.set_ylim(-1, 1)
ax.plot(X_points,Y_points,Z_points)

plt.show()

運行效果

等高線畫法(線框)

代碼

from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import matplotlib.pyplot as plt
import numpy as np


def heart_3d(x, y, z):
    return (x**2+(9/4)*y**2+z**2-1)**3-x**2*z**3-(9/80)*y**2*z**3


def plot_implicit(fn, bbox=(-1.5, 1.5)):
    xmin, xmax, ymin, ymax, zmin, zmax = bbox*3
    fig = plt.figure()
    ax = fig.add_subplot(projection='3d')
    A = np.linspace(xmin, xmax, 100)  # resolution of the contour
    B = np.linspace(xmin, xmax, 10)  # number of slices
    A1, A2 = np.meshgrid(A, A)  # grid on which the contour is plotted

    for z in B:  # plot contours in the XY plane
        X, Y = A1, A2
        Z = fn(X, Y, z)
        cset = ax.contour(X, Y, Z+z, [z], zdir='z', colors=('r',))

    for y in B:  # plot contours in the XZ plane
        X, Z = A1, A2
        Y = fn(X, y, Z)
        cset = ax.contour(X, Y+y, Z, [y], zdir='y', colors=('red',))

    for x in B:  # plot contours in the YZ plane
        Y, Z = A1, A2
        X = fn(x, Y, Z)
        cset = ax.contour(X+x, Y, Z, [x], zdir='x', colors=('red',))

    # must set plot limits because the contour will likely extend
    # way beyond the displayed level. Otherwise matplotlib extends the plot limits
    # to encompass all values in the contour.
    ax.set_zlim3d(zmin, zmax)
    ax.set_xlim3d(xmin, xmax)
    ax.set_ylim3d(ymin, ymax)

    plt.show()


if __name__ == '__main__':
    plot_implicit(heart_3d)

運行效果

以上代碼整理于網(wǎng)絡(luò),需要的小伙伴可以參考一下

到此這篇關(guān)于基于Python繪制3D立體愛心圖案的示例詳解的文章就介紹到這了,更多相關(guān)Python繪制3D立體愛心內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python怎么去除字符串最后的換行符‘\n’

    python怎么去除字符串最后的換行符‘\n’

    這篇文章主要介紹了python去除字符串最后的換行符'\n',本文通過示例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 如何用用Python將地址標記在地圖上

    如何用用Python將地址標記在地圖上

    這篇文章主要介紹了如何用用Python將地址標記在地圖上,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2021-02-02
  • python機器學(xué)習(xí)高數(shù)篇之函數(shù)極限與導(dǎo)數(shù)

    python機器學(xué)習(xí)高數(shù)篇之函數(shù)極限與導(dǎo)數(shù)

    這篇文章主要介紹了python機器學(xué)習(xí)高數(shù)篇之函數(shù)極限和導(dǎo)數(shù),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python 中拼音庫 PyPinyin 用法詳解

    Python 中拼音庫 PyPinyin 用法詳解

    很多朋友問小編怎樣把一批中文文件轉(zhuǎn)拼音命名呢?下面就讓我們來了解 Python 的一個庫 PyPinyin 吧,感興趣的朋友跟隨小編一起看看吧
    2021-05-05
  • pytorch環(huán)境配置及安裝圖文詳解(包括anaconda的安裝)

    pytorch環(huán)境配置及安裝圖文詳解(包括anaconda的安裝)

    這篇文章主要介紹了pytorch環(huán)境配置及安裝圖文詳解(包括anaconda的安裝),本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • python實現(xiàn)ipsec開權(quán)限實例

    python實現(xiàn)ipsec開權(quán)限實例

    這篇文章主要介紹了python實現(xiàn)ipsec開權(quán)限的方法,彌補了windows自帶的命令行工具netsh ipsec static add filter不支持批量添加及添加重復(fù)規(guī)則的不足,非常具有實用價值,需要的朋友可以參考下
    2014-11-11
  • numpy基礎(chǔ)教程之np.linalg

    numpy基礎(chǔ)教程之np.linalg

    這篇文章主要給大家介紹了關(guān)于numpy基礎(chǔ)教程之np.linalg的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • Python 12306搶火車票腳本

    Python 12306搶火車票腳本

    這篇文章主要為大家詳細介紹了Python 12306搶火車票腳本,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-02-02
  • Python函數(shù)式編程之返回函數(shù)實例詳解

    Python函數(shù)式編程之返回函數(shù)實例詳解

    函數(shù)式編程的一個特點就是,允許把函數(shù)本身作為參數(shù)傳入另一個函數(shù),還允許返回一個函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)式編程之返回函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • Python中截取字符串幾種常用的方法

    Python中截取字符串幾種常用的方法

    在Python中截取字符串的方法非常簡單易懂,你只需要使用字符串的索引即可實現(xiàn),這篇文章主要給大家介紹了關(guān)于Python中截取字符串幾種常用的方法,文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-05-05

最新評論

宜章县| 宁安市| 嘉义市| 黔东| 兴隆县| 塔河县| 桐乡市| 大石桥市| 呼伦贝尔市| 延吉市| 南昌市| 长海县| 青龙| 宕昌县| 仁怀市| 宁德市| 永嘉县| 绵竹市| 河北区| 依安县| 聂荣县| 屏南县| 四会市| 加查县| 扎兰屯市| 鹤壁市| 舞阳县| 宜兰县| 阳曲县| 六枝特区| 鄂伦春自治旗| 临江市| 虹口区| 新巴尔虎右旗| 沙雅县| 碌曲县| 新乡市| 石家庄市| 阿尔山市| 惠来县| 五台县|