之前想做一个三维曲线插值,没找到好的已有的实现,就自己写了一个
效果如图:
思路也很简单,分别对XYZ插值就行了
# -*- coding: utf-8 -*-
# 调用模块
# 调用数组模块
import numpy as np
# 实现插值的模块
from scipy import interpolate
# 画图的模块
# import matplotlib.pyplot as plt
# 生成随机数的模块
import random
import open3d as o3d
# random.randint(0, 10) 生成0-10范围内的一个整型数
# y是一个数组里面有10个随机数,表示y轴的值
distance = 30
y = np.array([random.randint(0, 5) for _ in range(distance)])
z = np.array([random.randint(0, 1) for _ in range(distance)])
# x是一个数组,表示x轴的值
x = np.array([num for num in range(distance)])
points_ori = np.vstack([x,y,z]).T
# 插值法之后的x轴值,表示从0到9间距为0.5的18个数
xnew = np.arange(0, distance - 1, 0.1)
point_cloud_ori = o3d.geometry.PointCloud()
point_cloud_ori.points = o3d.utility.Vector3dVe