Q_label[i],
                color='black',
                fontsize=m_fontsize)
    R_label = [r'$r_{i-1}$', r'$r_{i}$', r'$r_{i+1}$']
    for i in [0, 1, 2]:
        ax.text(R[i, 0] + 0.,
                R[i, 1] + 0.,
                R[i, 2] - 0.7,
                R_label[i],
                color='0.1',
                fontsize=m_fontsize)

    d0_util_3d.find_pair_point_in_Traj_and_draw(R[0],
                                                Q,
                                                m_text='',
                                                ax=ax,
                                                fontsize=14,
                                                color='0.1',
                                                linestyle='--')
    d0_util_3d.find_pair_point_in_Traj_and_draw(R[1],
                                                Q,
                                                m_text=r'$ BDS(r_{i})$',
                                                ax=ax,
                                                fontsize=14,
                                                color='0.1',
                                                linestyle='--')

    ax.legend()  # 显示图例
    ax.set_xlabel('x/m', fontsize=m_fontsize)
    ax.set_ylabel('y/m', fontsize=m_fontsize)
    ax.set_zlabel('z/m', fontsize=m_fontsize)
def draw_a():
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    m_fontsize = 14
    small_fontsize = 11

    Q, R = get_data()

    ax.plot(Q[:, 0],
            Q[:, 1],
            Q[:, 2],
            label='Q',
            linestyle='-',
            linewidth=2,
            color='black',
            marker='H')
    ax.plot(R[:, 0],
            R[:, 1],
            R[:, 2],
            label='R',
            linestyle='-',
            linewidth=2,
            color='0',
            marker='H')

    draw_line(ax, Q[0], R[0], color='0', linewidth=1.5)
    draw_line(ax, Q[1], R[1], color='0', linewidth=1.5)
    draw_line(ax, Q[1], R[2])
    draw_line(ax, Q[2], R[3])

    # m_label = [r'$q_{0}=DTW(r_0)$',r'$q_{1}=DTW(r_1)$', r'$q_{2}$']
    m_label = [r'$q_{0}$', r'$q_{1}$', r'$q_{2}$']
    for i in range(0, len(Q)):
        ax.text(Q[i, 0] - 0.5,
                Q[i, 1] + 1,
                Q[i, 2],
                m_label[i],
                color='black',
                fontsize=m_fontsize)
    # ax.text(Q[2, 0]+1.5, Q[2, 1], Q[2, 2], m_label[2], color='black', fontsize=m_fontsize)
    for i in range(len(R)):
        ax.text(R[i, 0] - 0.5,
                R[i, 1],
                R[i, 2],
                r'$r_{' + str(i) + '}$',
                color='0.3',
                fontsize=m_fontsize)

    ax.text(Q[0, 0] + 5,
            Q[0, 1],
            Q[0, 2],
            r'$DTW-DBS(r_0)$',
            color='0.1',
            fontsize=small_fontsize)
    ax.text(Q[1, 0] + 5,
            Q[1, 1],
            Q[1, 2],
            r'$DTW-DBS(r_1)$',
            color='0.1',
            fontsize=small_fontsize)

    ###################################################################################################################
    # 寻找r2的对应点
    ###################################################################################################################
    min_point = find_pair_point_in_Traj_and_draw(R[2], [Q[1], Q[2]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + 5,
            min_point[1],
            min_point[2],
            r'$DTW-DBS(r_2)$',
            color='0.1',
            fontsize=small_fontsize)

    ax.legend()  # 显示图例
    ax.set_xlabel('x/m', fontsize=m_fontsize)
    ax.set_ylabel('y/m', fontsize=m_fontsize)
    ax.set_zlabel('z/m', fontsize=m_fontsize)

    # 设置坐标轴刻度
    ax.set_xticks([])
    ax.set_yticks([])
    ax.set_zticks(np.arange(0, 7, 2))
    plt.xlim(-1, 10)
    # plt.ylim(0, 2)
    ax.set_zlim(0, 7)
    ax.view_init(elev=20, azim=100)  # 调整视角
    plt.show()
def draw_2(fig, ax):
    Q, R = get_data()
    ax.plot(Q[:, 0],
            Q[:, 1],
            Q[:, 2],
            label='Q',
            linestyle='-',
            linewidth=2,
            color='black',
            marker='H')
    ax.plot(R[:, 0],
            R[:, 1],
            R[:, 2],
            label='R',
            linestyle='-',
            linewidth=2,
            color='0.4',
            marker='*')

    # 获取DTW对应点
    DTW_pair = get_pair_index_in_DTW(Q=R, R=Q)
    print(DTW_pair)
    for i in range(1, len(DTW_pair)):
        pair = DTW_pair[i]
        draw_line(ax, Q[pair[1]], R[pair[0]])

    for i in range(0, len(Q) - 1):
        ax.text(Q[i, 0] - 0.7,
                Q[i, 1] + 1,
                Q[i, 2] - 0.8,
                r'$q_{' + str(i) + '}$',
                color='black',
                fontsize=m_fontsize)
    ax.text(Q[-1, 0] + 0.2,
            Q[-1, 1],
            Q[-1, 2] + 0.2,
            r'$q_{' + str(3) + '}$',
            color='black',
            fontsize=m_fontsize)
    for i in range(len(R) - 1):
        ax.text(R[i, 0] + 0.2,
                R[i, 1],
                R[i, 2] + 0.,
                r'$r_{' + str(i) + '}$',
                color='0.4',
                fontsize=m_fontsize)
    ax.text(R[-1, 0] + 0.2,
            R[-1, 1],
            R[-1, 2] + 0.,
            r'$r_{' + str(5) + '}$',
            color='0.4',
            fontsize=m_fontsize)

    ###################################################################################################################
    # 寻找r0的对应点
    ###################################################################################################################
    min_point = find_pair_point_in_Traj_and_draw(R[0], [Q[0], Q[1]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] - 2.6,
            min_point[1] - 0.5,
            min_point[2],
            r'$DTW-BDS(r_0)$',
            color='0.1',
            fontsize=small_fontsize)
    return "F:\\毕业设计大文件夹\\picture\\chapter\\Fig3-10\\2.jpg"
def draw_5(fig, ax):
    Q, R = get_data()
    ax.plot(Q[:, 0],
            Q[:, 1],
            Q[:, 2],
            label='Q',
            linestyle='-',
            linewidth=2,
            color='black',
            marker='H')
    ax.plot(R[:, 0],
            R[:, 1],
            R[:, 2],
            label='R',
            linestyle='-',
            linewidth=2,
            color='0.4',
            marker='*')

    # 获取DTW对应点
    # DTW_pair = get_pair_index_in_DTW(Q=R, R=Q)
    # print(DTW_pair)
    # for i in range(1, len(DTW_pair)):
    #     pair = DTW_pair[i]
    #     draw_line(ax, Q[pair[1]], R[pair[0]])

    for i in range(0, len(Q) - 1):
        ax.text(Q[i, 0] - 0.7,
                Q[i, 1] + 1,
                Q[i, 2] - 0.8,
                r'$q_{' + str(i) + '}$',
                color='black',
                fontsize=m_fontsize)
    ax.text(Q[-1, 0] + 0.2,
            Q[-1, 1],
            Q[-1, 2] + 0.2,
            r'$q_{' + str(3) + '}$',
            color='black',
            fontsize=m_fontsize)
    for i in range(len(R) - 1):
        ax.text(R[i, 0] + 0.2,
                R[i, 1],
                R[i, 2] + 0.,
                r'$r_{' + str(i) + '}$',
                color='0.4',
                fontsize=m_fontsize)
    ax.text(R[-1, 0] + 0.2,
            R[-1, 1],
            R[-1, 2] + 0.,
            r'$r_{' + str(5) + '}$',
            color='0.4',
            fontsize=m_fontsize)

    ###################################################################################################################
    # 优化r2的对应点
    ###################################################################################################################
    b_x, b_y, b_z = -2.6, -0.5, 0
    min_point = find_pair_point_in_Traj_and_draw(R[0], [Q[0], Q[1]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + b_x,
            min_point[1] + b_y,
            min_point[2],
            r'',
            color='0.1',
            fontsize=small_fontsize)

    min_point = find_pair_point_in_Traj_and_draw(R[1], [Q[0], Q[1]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + b_x,
            min_point[1] + b_y,
            min_point[2],
            r'',
            color='0.1',
            fontsize=small_fontsize)

    min_point = find_pair_point_in_Traj_and_draw(R[2], [Q[1], Q[2]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + b_x,
            min_point[1] + b_y,
            min_point[2],
            r'',
            color='0.1',
            fontsize=small_fontsize)

    min_point = find_pair_point_in_Traj_and_draw(R[3], [Q[1], Q[2]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + b_x,
            min_point[1] + b_y,
            min_point[2],
            r'',
            color='0.1',
            fontsize=small_fontsize)

    min_point = find_pair_point_in_Traj_and_draw(R[4], [Q[1], Q[2]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + b_x + 0.1,
            min_point[1] + b_y - 0.3,
            min_point[2] - 0.7,
            r'',
            color='0.1',
            fontsize=small_fontsize)

    min_point = find_pair_point_in_Traj_and_draw(R[5], [Q[2], Q[3]],
                                                 color='0.1',
                                                 ax=ax)
    ax.text(min_point[0] + b_x - 0.6,
            min_point[1] + b_y,
            min_point[2],
            r'',
            color='0.1',
            fontsize=small_fontsize)
    return "F:\\毕业设计大文件夹\\picture\\chapter\\Fig3-10\\5.jpg"
    ax.plot([Q[1, 0], R[1, 0]], [Q[1, 1], R[1, 1]], [Q[1, 2], R[1, 2]], linestyle='--', linewidth=1, color='0.5')
    # ax.plot([Q[0, 0], R[1, 0]], [Q[0, 1], R[1, 1]], [Q[0, 2], R[1, 2]], linestyle='--', linewidth=1, color='0.5')
    ax.plot([Q[2, 0], R[2, 0]], [Q[2, 1], R[2, 1]], [Q[2, 2], R[2, 2]], linestyle='--', linewidth=1, color='0.5')

    m_label = [r'$q_{0}=DTW(r_0)$',r'$q_{1}=DTW(r_1)$', r'$q_{2}$']
    for i in range(0, len(Q)-1):
        ax.text(Q[i, 0] + 6, Q[i, 1], Q[i, 2] , m_label[i], color='black', fontsize=m_fontsize)
    ax.text(Q[2, 0]+1.5, Q[2, 1], Q[2, 2], m_label[2], color='black', fontsize=m_fontsize)
    for i in range(len(R)):
        ax.text(R[i, 0] + 0.2, R[i, 1], R[i, 2] + 1, r'$r_{'+str(i)+'}$', color='0.3', fontsize=m_fontsize)


    ###################################################################################################################
    # 寻找r0的对应点
    ###################################################################################################################
    min_point = find_pair_point_in_Traj_and_draw(R[0], [Q[0], Q[1]], color='0.1', ax=ax)
    ax.text(min_point[0]+6, min_point[1]-1, min_point[2], r'$DTW-DBS(r_0)$', color='0.1', fontsize=m_fontsize)

    ###################################################################################################################
    # 寻找r1的对应点
    ###################################################################################################################
    min_point = find_pair_point_in_Traj_and_draw(R[1], [Q[0], Q[1]], color='0.1', ax=ax)
    ax.text(min_point[0] + 6, min_point[1] + 1, min_point[2], r'$DTW-DBS(r_1)$', color='0.1', fontsize=m_fontsize)



    ax.legend()  # 显示图例
    ax.set_xlabel('x/m', fontsize=m_fontsize)
    ax.set_ylabel('y/m', fontsize=m_fontsize)
    ax.set_zlabel('z/m', fontsize=m_fontsize)