Python numpy使用记录5.生成球面斐波那契网格

前言

本篇学习使用numpy生成球面斐波那契网格。

斐波那契网格公式

对于一个球体,要在球体表面上均匀选取N个点,就可以使用斐波那契网格公式:
Python numpy使用记录5.生成球面斐波那契网格
其中,Python numpy使用记录5.生成球面斐波那契网格表示球半径,Python numpy使用记录5.生成球面斐波那契网格即黄金分割比例。

代码

通过numpy形成斐波那契网格点云,然后通过open3d来可视化点云图:

import open3d as o3d
import cv2
import numpy as np


if __name__ == '__main__':
    vis = o3d.visualization.Visualizer()
    N = 1000
    r = 1
    phi = (np.sqrt(5) - 1) / 2
    n = np.arange(0, N)
    z = ((2*n + 1) / N - 1)
    x = (np.sqrt(1 - z**2)) * np.cos(2 * np.pi * (n + 1) * phi)
    y = (np.sqrt(1 - z**2)) * np.sin(2 * np.pi * (n + 1) * phi)
    print(z.shape, x.shape, y.shape)
    pcd = r * np.stack([x, y, z], axis=-1)
    print(pcd.shape)
    point_cloud = o3d.geometry.PointCloud()
    point_cloud.points = o3d.utility.Vector3dVector(pcd)
    vis.add_geometry(point_cloud)
    o3d.visualization.draw_geometries([point_cloud])

取100个点的效果:

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2022年5月11日
下一篇 2022年5月11日

相关推荐