【发布时间】:2020-01-10 18:49:55
【问题描述】:
我正在尝试为无人机实现 3D 环境,并且随机分布了具有随机高度的障碍物。每次跑步时障碍物的位置和高度都会不同。我的问题是当我给我的网格设置 10*10 大小时,它会很好地工作并且障碍物的大小是可以接受的,但是当我将我的网格设置为例如 50*50 时,障碍物会太小并且图像不清楚。我该如何解决障碍物的大小问题?如何放大它们,但在放大网格时不会使单元格干扰?
10*10网格尺寸以下
import matplotlib.pyplot as plt
import numpy as np
from mpl_toolkits.mplot3d import axes3d
import random
import matplotlib.colors as colors
import matplotlib.cm as cm
def display(elev_mp1, drone_height, risk_zone):
fig = plt.figure()
ax = fig.add_subplot(111,projection='3d')
ax.plot([0],[0],[0])
ax.plot([0],[0],[1000])
#x = np.linspace(0,len(elev_mp1),len(elev_mp1)+1)
#y = np.linspace(0,len(elev_mp1),len(elev_mp1)+1)
#X,Y = np.meshgrid(x,y)
#z = np.array([[0 for x in range(len(X[0]))] for y in range(len(X))])
num_bars = len(elev_mp1)*len(elev_mp1[0])
x_pos = []
y_pos = []
for x in range(len(elev_mp1[0])):
for y in range(len(elev_mp1)):
x_pos.append(x)
y_pos.append(y)
z_pos = [0] * num_bars
x_size = np.ones(num_bars)
y_size = np.ones(num_bars)
z_size = np.array(elev_mp1).flatten()
color_values = []
for x in z_size:
if x >= drone_height:
color_values.append([0,0,0,1])
elif x in risk_zone:
color_values.append([1,0,0,1])
else:
color_values.append([1,0,1,1])
ax.bar3d(x_pos, y_pos, z_pos, x_size, y_size, z_size, color=color_values)
#ax.plot_wireframe(X,Y,z)
plt.show()
x = [[random.uniform(0,1) for i in range(10)]for j in range(10)]
elev_mp1 = np.array([[0 for i in range(len(x[0]))]for j in range(len(x))])
for i in range(len(x)):
for j in range(len(x[0])):
if x[i][j] <= 0.96:
elev_mp1[i][j] = 0
else:
elev_mp1[i][j] = 1
drone_height = 60
risk_zone = [x for x in range(40,60)]
for x in range(len(elev_mp1)):
for y in range(len(elev_mp1[0])):
if elev_mp1[x][y] == 1:
elev_mp1[x][y] = random.randint(1,100)
else:
elev_mp1[x][y] = 0
display(elev_mp1, drone_height, risk_zone)
【问题讨论】:
标签: python python-3.x matplotlib 3d