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

Python實現(xiàn)繪制3D地球旋轉(zhuǎn)效果

 更新時間:2023年02月28日 08:43:40   作者:微小冷  
這篇文章主要為大家詳細(xì)介紹了如何利用Python實現(xiàn)繪制出3D地球旋轉(zhuǎn)的效果,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,需要的可以參考一下

畫一個地球

想畫一個轉(zhuǎn)動的地球,那么首先要有一個球,或者說要有一個球面,用參數(shù)方程可以表示為

x?=rcos?cosθ

y=rcos?sinθ

z=rsin??

然后要有一個地球,或者說要有一個地圖,用來作為貼圖,映射到球面上。

import numpy as np
import matplotlib.pyplot as plt
path = "earth1.jpg"
img = plt.imread(path)
h, w, c = img.shape
ys, xs = np.indices([h, w])
th = xs/w*np.pi*2
phi = np.pi/2 - ys/h*np.pi

x = np.cos(phi)*np.cos(th)
y = np.cos(phi)*np.sin(th)
z = np.sin(phi)

cs = [tuple(c/255) for c in img.reshape(-1,3)]
ax = plt.subplot(projection='3d')
ax.scatter(x, y, z, marker='.', c=cs)
plt.axis('off')
plt.show()

其中scatter畫的是散點圖,c=cs為顏色映射參數(shù),所以溫馨提示,選取的地球圖片不宜過大,否則點太多會讓電腦爆掉。

最后得到的效果如下

讓地球轉(zhuǎn)起來

三維空間中的旋轉(zhuǎn)矩陣如下表所示,具體講解可參考這兩篇博客:旋轉(zhuǎn)坐標(biāo)軸??旋轉(zhuǎn)正方體

有了旋轉(zhuǎn)矩陣,接下來就是讓地球轉(zhuǎn)起來。

import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation

cos = lambda th : np.cos(np.deg2rad(th))
sin = lambda th : np.sin(np.deg2rad(th))

Rz = lambda th : np.array([
    [cos(th) , -sin(th), 0],
    [sin(th), cos(th), 0],
    [0       , 0,       1]])

xyz = np.array([x,y,z]).reshape(3,-1)

fig = plt.figure(figsize=(5,5))
ax = fig.add_subplot(projection='3d')
ax.grid()

lines = ax.scatter(x, y, z, marker='.', c=cs)

def animate(n):
    # 按照xyz順序旋轉(zhuǎn)
    axis = [2,1,0]
    shape = xyz.shape
    lines._offsets3d = Rz(n)@xyz
    return lines,

ani = animation.FuncAnimation(fig, animate, 
    range(0, 360, 2), interval=25, blit=True)

#plt.show()
ani.save("zyx.gif")

效果如下

以上就是Python實現(xiàn)繪制3D地球旋轉(zhuǎn)效果的詳細(xì)內(nèi)容,更多關(guān)于Python3D地球旋轉(zhuǎn)的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實現(xiàn)web應(yīng)用框架之增加響應(yīng)對象

    python實現(xiàn)web應(yīng)用框架之增加響應(yīng)對象

    這篇文章主要介紹了python利用web應(yīng)用框架如何增加響應(yīng)對象的,文中有相應(yīng)的代碼示例,對大家的學(xué)習(xí)或工作有一定的參考價值,需要的同學(xué)可以參考下
    2023-05-05
  • 利用Python第三方庫實現(xiàn)預(yù)測NBA比賽結(jié)果

    利用Python第三方庫實現(xiàn)預(yù)測NBA比賽結(jié)果

    今天給大家?guī)淼氖顷P(guān)于Python的相關(guān)知識,文章圍繞著利用Python實現(xiàn)預(yù)測NBA比賽結(jié)果展開,文中有非常詳細(xì)的介紹,需要的朋友可以參考下
    2021-06-06
  • python調(diào)用dll出現(xiàn)精度問題解決

    python調(diào)用dll出現(xiàn)精度問題解決

    本文主要介紹了python調(diào)用dll出現(xiàn)精度問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Python實現(xiàn)簡單字典樹的方法

    Python實現(xiàn)簡單字典樹的方法

    這篇文章主要介紹了Python實現(xiàn)簡單字典樹的方法,實例分析了Python字典樹的定義、實現(xiàn)與使用技巧,需要的朋友可以參考下
    2016-04-04
  • 如何利用Python+Vue實現(xiàn)簡單的前后端分離

    如何利用Python+Vue實現(xiàn)簡單的前后端分離

    因為python開發(fā)的高效性,python web開發(fā)也受到越來越多人的關(guān)注,下面這篇文章主要給大家介紹了關(guān)于如何利用Python+Vue實現(xiàn)簡單的前后端分離的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 打包Python代碼的常用方法實現(xiàn)程序exe應(yīng)用

    打包Python代碼的常用方法實現(xiàn)程序exe應(yīng)用

    Python是一門強大的編程語言,但在將Python代碼分享給其他人時,讓他們安裝Python解釋器并運行腳本可能有點繁瑣,這時,將Python代碼打包成可執(zhí)行的應(yīng)用程序(.exe)可以大大簡化這個過程,本文將介紹幾種常用的方法,輕松地將Python代碼變成獨立的可執(zhí)行文件
    2023-12-12
  • Python Flask 搭建微信小程序后臺詳解

    Python Flask 搭建微信小程序后臺詳解

    這篇文章主要介紹了Python Flask 搭建微信小程序后臺,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python上傳package到Pypi(代碼簡單)

    Python上傳package到Pypi(代碼簡單)

    這篇文章主要介紹了Python上傳package到Pypi(代碼簡單)的相關(guān)資料,需要的朋友可以參考下
    2016-02-02
  • window環(huán)境pip切換國內(nèi)源(pip安裝異常緩慢的問題)

    window環(huán)境pip切換國內(nèi)源(pip安裝異常緩慢的問題)

    這篇文章主要介紹了window環(huán)境pip切換國內(nèi)源(pip安裝異常緩慢的問題),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • PyQt5+QtChart實現(xiàn)繪制極坐標(biāo)圖

    PyQt5+QtChart實現(xiàn)繪制極坐標(biāo)圖

    QChart是一個QGraphicScene中可以顯示的QGraphicsWidget。本文將利用QtChart實現(xiàn)極坐標(biāo)圖的繪制,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-12-12

最新評論