python scatter 三维曲面_python生成三维点云包围盒

matplotlib生成三维点云包围盒

运行环境:

win10、 python3.5.2、 matplotlib

评价:消耗时间较长

效果展示:

20190916153349318.png

运行上面包围盒消耗的时间:单位(秒/s)

20190916153433651.png

代码:

from mpl_toolkits.mplot3d import Axes3D

import matplotlib.pyplot as plt

import numpy as np

from itertools import product, combinations

import time

import math

fig = plt.figure()

ax = fig.gca(projection='3d')

ax.set_aspect("equal")

start = time.time()

# draw cube

r = [-1, 1]

for s, e in combinations(np.array(list(product(r, r, r))), 2):

if np.sum(np.abs(s-e)) == r[1]-r[0]:

ax.plot3D(*zip(s, e), color="b")

print('spend_time:', time.time() - start)

# draw sphere

#u, v = np.mgrid[0:2*np.pi:20j, 0:np.pi:10j]

#x = np.cos(u)*np.sin(v)

#y = np.sin(u)*np.sin(v)

#z = np.cos(v)

#ax.plot_wireframe(x, y, z, color="r")

# draw a point

#ax.scatter([0], [0], [0], color="g", s=100)

# draw a vector

#from matplotlib.patches import FancyArrowPatch

#from mpl_toolkits.mplot3d import proj3d

# class Arrow3D(FancyArrowPatch):

# def __init__(self, xs, ys, zs, *args, **kwargs):

# FancyArrowPatch.__init__(self, (0, 0), (0, 0), *args, **kwargs)

# self._verts3d = xs, ys, zs

# def draw(self, renderer):

# xs3d, ys3d, zs3d = self._verts3d

# xs, ys, zs = proj3d.proj_transform(xs3d, ys3d, zs3d, renderer.M)

# self.set_positions((xs[0], ys[0]), (xs[1], ys[1]))

# FancyArrowPatch.draw(self, renderer)

# a = Arrow3D([0, 1], [0, 1], [0, 1], mutation_scale=20,

# lw=1, arrowstyle="-|>", color="k")

# ax.add_artist(a)

plt.show()

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
©️2021 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值