欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Python繪制一個會動的3D立體粽子

 更新時間:2023年06月14日 09:29:30   作者:微小冷  
下周就要到端午節(jié)了,所以本文小編就來和大家分享一個有趣的Python項(xiàng)目——繪制會動的3D立體粽子,文中的示例代碼講解詳細(xì),感興趣的可以了解一下

粽子曲面

之前通過matplotlib繪制了圓錐曲面,但matplotlib繪制曲面圖有幾個問題,其中plot_surface需要有規(guī)范的xOy坐標(biāo),然后根據(jù)其坐標(biāo)繪制z軸參數(shù);plot_trisurf則必須有明確的三角面的頂點(diǎn)。這些限制提高了繪制三維曲面的技術(shù)要求,所以接下來用open3d來以點(diǎn)云的形式來繪制一些更復(fù)雜的曲面。

首先就是下面這個參數(shù)方程對應(yīng)的曲面

下面是繪圖代碼

import numpy as np
import open3d as o3d

def getSin(N):
    u = np.linspace(0, np.pi*2, N)
    v = np.linspace(0, np.pi*2, N)
    u,v = np.meshgrid(u,v)
    x = np.cos(u).reshape(-1)
    y = np.cos(v).reshape(-1)
    z = np.cos(u+v).reshape(-1)
    return np.array([x,y,z]).T

pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(getSin(500))
o3d.visualization.draw_geometries([pcd])

最后效果如下,非常像一個粽子

真·粽子曲面

上面的粽子圖,其實(shí)是散點(diǎn)圖,只不過點(diǎn)數(shù)太多,看上去就比較連續(xù),接下來通過open3d,將這個粽子的散點(diǎn)圖,轉(zhuǎn)換為粽子曲面。由于曲面生成的本質(zhì)是繪制三角面,而隨著點(diǎn)數(shù)的增多,所需繪制時間也就越長,故而少選一些點(diǎn)

tri = o3d.geometry.TriangleMesh

pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(getSin(20))
mesh = tri.create_from_point_cloud_alpha_shape(pcd, 2)
mesh.compute_vertex_normals()
o3d.visualization.draw_geometries([mesh], mesh_show_back_face=True)

其中,o3d.geometry.TriangleMesh是一個類,之所以將其重新賦值,皆因后面調(diào)用的生成曲面的方法名字太長,這樣可以縮減一下一行的長度。

compute_vertex_normals用于生成法線,如果沒有這個,最后得到的曲面是看不出三維效果的。

最終得到的效果如下,像是個金屬質(zhì)感的粽子,還挺好看的

點(diǎn)擊Ctrl+數(shù)字,可以更改曲面的配色,為了表現(xiàn)得更加細(xì)膩,下面用100×100的網(wǎng)格來生成粽子曲面,效果如下

正弦曲面

粽子曲面又叫余弦曲面,如果把cos換成sin,那么就得到了正弦曲面

其繪圖代碼如下

import numpy as np
import open3d as o3d

def getCos(N):
    u = np.linspace(0, np.pi*2, N)
    v = np.linspace(0, np.pi*2, N)
    u,v = np.meshgrid(u,v)
    x = np.sin(u).reshape(-1)
    y = np.sin(v).reshape(-1)
    z = np.sin(u+v).reshape(-1)
    return np.array([x,y,z]).T

pcd = o3d.geometry.PointCloud()
pcd.points = o3d.utility.Vector3dVector(getCos(500))
pcd.estimate_normals()
o3d.visualization.draw_geometries([pcd])

其中,estimate_normals用于估計點(diǎn)的法線,這樣在繪圖的時候會產(chǎn)生漂亮的光效,最終繪圖結(jié)果如下,可見正弦曲面和余弦曲面的確有著類似互補(bǔ)的性質(zhì)。

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

  • python字符串拼接.join()和拆分.split()詳解

    python字符串拼接.join()和拆分.split()詳解

    這篇文章主要為大家介紹了python字符串拼接.join()和拆分.split(),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • Numpy將二維數(shù)組添加到空數(shù)組的實(shí)現(xiàn)

    Numpy將二維數(shù)組添加到空數(shù)組的實(shí)現(xiàn)

    今天小編就為大家分享一篇Numpy將二維數(shù)組添加到空數(shù)組的實(shí)現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 使用Python實(shí)現(xiàn)火車票查詢系統(tǒng)(帶界面)

    使用Python實(shí)現(xiàn)火車票查詢系統(tǒng)(帶界面)

    周末、假期來了,七夕也快到了,又到一年中最一票難求的時候了!本文將用Python制作一個簡單的火車票查詢系統(tǒng),感興趣的可以了解一下
    2022-07-07
  • Python利用pdfplumber實(shí)現(xiàn)讀取PDF寫入Excel

    Python利用pdfplumber實(shí)現(xiàn)讀取PDF寫入Excel

    pdfplumber專注PDF內(nèi)容提取,例如文本(位置、字體及顏色等)和形狀(矩形、直線、曲線),還有解析表格的功能。本文主要為大家介紹如何利用pdfplumber實(shí)現(xiàn)讀取PDF寫入Excel,需要的可以參考一下
    2022-06-06
  • python3實(shí)現(xiàn)UDP協(xié)議的服務(wù)器和客戶端

    python3實(shí)現(xiàn)UDP協(xié)議的服務(wù)器和客戶端

    這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)UDP協(xié)議的服務(wù)器和客戶端,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-06-06
  • python全面解析接口返回數(shù)據(jù)

    python全面解析接口返回數(shù)據(jù)

    這篇文章主要介紹了python接口返回數(shù)據(jù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-02-02
  • 對python xlrd讀取datetime類型數(shù)據(jù)的方法詳解

    對python xlrd讀取datetime類型數(shù)據(jù)的方法詳解

    今天小編就為大家分享一篇對python xlrd讀取datetime類型數(shù)據(jù)的方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • python 接收處理外帶的參數(shù)方法

    python 接收處理外帶的參數(shù)方法

    今天小編就為大家分享一篇python 接收處理外帶的參數(shù)方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-12-12
  • 最新評論