※当サイトはPRを含みます

【Python】Numpyでsinc関数の点群データを生成

PythonのNumpyで平面の点群データを生成します。

今回は、1辺の長さが5mでsinc関数の点群を生成してみます。

import numpy as np 
import random

# sinc関数の点群を作成
def get_sinc (num_points, x_min,x_max):
  x = np.linspace (x_min, x_max,num_points)
  mesh_x, mesh_y = np.meshgrid(x, x)
  z = np.sinc((np. power (mesh_x, 2) + np. power (mesh_y, 2)))
  z_norm = (z- z.min()) / (z.max() - z.min())
  point_cloud = np.zeros((np.size(mesh_x), 3))
  point_cloud[:, 0] = np.reshape(mesh_x, -1)
  point_cloud[:, 1] =np.reshape(mesh_y, -1)
  point_cloud[:, 2] =np.reshape(z_norm, -1)
  return point_cloud

# 点の数。総点数はnum_points*num_points
num_points=100

# 1辺の長さ
x_min, x_max = -5,5

data=get_sinc (num_points,x_min,x_max)