资源简介
仿真3D版本.py
代码片段和文件信息
import time
import copy
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import animation
from mpl_toolkits.mplot3d import Axes3D
NUM = 10
n = np.random.randint(310) # 3、4、5边形
R = 30 # 多边形半径
Point_List = []
‘‘‘高度错开所需参数‘‘‘
low SPEED0 Hight = 0 2 200
distance = 380 / NUM
‘‘‘抵达边界所需参数 # 根据无人机数量NUM得出边界最大容量数量MAXNUM‘‘‘
MOVE_DISTANCE = 0.3
JianCeError = 0.1
if ((NUM - n) / n) % 1 == 0:
MAXNUM = (NUM - n) / n
else:
MAXNUM = int((NUM - n) / n) + 1
JIANJU = 2 * R * np.sin(np.pi / n) / (MAXNUM + 1)
# 2 * R * np.sin(np.pi/n)是边界长度, JIANJU是调整单位距离
‘‘‘均匀化参数‘‘‘
Ting_Distance = 3
Move_Distance = 20 # 20 * 0.01 =0.2
‘‘‘随机生成初始分布位置 设定多边形位置 ‘‘‘
x = np.random.randint(1 100 NUM)
y = np.random.randint(1 100 NUM)
z = [0 for i in range(NUM)]
for i in range(NUM):
Point_List.append([x[i] y[i] z[i]])
# 多边形数量设定
DING_LIST = []
DingX DingY DingZ = [] [] []
def PolygonInit():
global DING_LIST
global n
global DingX DingY DingZ
for i in range(1 n + 1):
x = 50 + R * np.sin(i * 2 * np.pi / n)
y = 50 + R * np.cos(i * 2 * np.pi / n)
DING_LIST.append([x y Hight])
DingX DingY DingZ = [] [] []
for each in DING_LIST:
DingX.append(each[0])
DingY.append(each[1])
DingZ.append(each[2])
DingX.append(DING_LIST[0][0])
DingY.append(DING_LIST[0][1])
DingZ.append(DING_LIST[0][2])
PolygonInit() # 初始化多边形顶点位置
‘‘‘初始化图像‘‘‘
fig = plt.figure()
ax = plt.gca(projection=‘3d‘)
ax.set_xlim(0 100)
ax.set_xlabel(‘X‘)
ax.set_ylim(0 100)
ax.set_ylabel(‘Y‘)
ax.set_zlim(0 400)
ax.set_zlabel(‘Z‘)
sc = ax.scatter3D(x y z color=‘r‘ alpha=0.7)
# ax.plot(DingX DingY DingZ ‘b:‘)
#sc = ax.scatter3D(x yz color=‘r‘ alpha=0.7marker=‘1‘linewidth = 8)
ax.plot(DingX DingYDingZ color = ‘black‘linestyle = ‘:‘)
D = 2 * R * np.sin(np.pi / n)
num = int(D / 0.01)
tooth_distance = D / num
Tooth_Chain = []
def Chain_make():
global Tooth_Chain
for i in range(0 n):
Tooth_Chain.append(DING_LIST[i])
base_pos = copy.deepcopy(DING_LIST[i])
if i == len(DING_LIST) - 1:
next = DING_LIST[0]
else:
next = DING_LIST[i + 1]
x = np.array([next[0] - DING_LIST[i][0] next[1] - DING_LIST[i][1]]) # 方向向量
y = np.array([1 0]) # x轴方向
Lx = np.sqrt(x.dot(x)) # x.dot(x) 点乘自己,相当于向量模平方
Ly = np.sqrt(y.dot(y))
cos_angle = x.dot(y) / (Lx * Ly)
angle = np.arccos(cos_angle)
if x[0] >= 0 and x[1] >= 0:
for j in range(1 num):
a = base_pos[0] + j * tooth_distance * abs(np.cos(angle))
b = base_pos[1] + j * tooth_distance * abs(np.sin(angle))
Tooth_Chain.append([a b Hight])
# print(‘1‘ len(Tooth_Chain))
elif x[0] <= 0 and x[1] >= 0:
for j in range(1 num):
a = base_pos[
相关资源
- python+ selenium教程
- 英文原版-Scientific Computing with Python
- CpuMemSets在Linux操作系统中的实现
- Python学习全系列教程永久可用
- 蓝奏云批量上传工具.zip
- python书籍 PDF
- 老男孩python项目实战
- Python.rar99111
- decision_tree_v2.py
- Python绝技运用Python成为顶级黑客.pdf
- python小波包文档及论文.zip
- Python黑帽子(黑客与渗透测试编程之
- FlaskWeb开发:基于Python的Web应用开发实
- Python基础教程第3版中英文源码.rar
- python数据结构与算法中文版.zip
- Python-冲顶大会芝士超人西瓜视频头脑
- time_series_forecasting_with_python.zip
- Python基础教程第三版PDF高清可复制.
- python编程从入门到实践.zip237878
- FlaskWeb开发:Python基于Web应用开发实战
- pythonBCRMDSJ.mobi
- 量化交易之路用Python做股票量化分析
- PYTHON自然语言处理中文版.pdf
- Python基础教程(第3版).rar
- GRAYHATPYTHON高清.英文.书签版.pdf
- Python简明教程第四版.rar
- Python编程:从入门到实践带书签完整
- Python基础教程(第3版).pdf109608
- vamei-从Python开始学编程.pdf
- 利用Python进行数据分析.pdf
评论
共有 条评论