Я работаю над изучением Python, так как считаю, что мне нужно расширять свои знания языков программирования.Прочитав и просмотрев несколько уроков, я разработал базовую программу, которая моделирует бейсбольный мяч, брошенный из кургана кувшинов в домашнюю тарелку с помощью numpy и maplotlib.Поскольку я только начал изучать Python, я не верю, что мой код настолько хорош.
Первое, что я спрашиваю, это предложения по улучшению.Я хотел бы оптимизировать это, прежде чем начать добавлять к нему.Любые предоставленные ссылки или просто общая справка были бы хороши.
Во-вторых, лучше ли использовать matplotlib для этого или есть что-то еще, что вы бы предложили?
В-третьих, я бы хотелчтобы добавить в программу качку, простую полусферу, кто-нибудь может указать мне правильное направление, чтобы продолжить это?
Спасибо, любая помощь / руководство / комментарии приветствуются!
Я включу в свой код функции, которые я хотел бы улучшить.
from mpl_toolkits.mplot3d import axes3d
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt
import numpy as np
fig = plt.figure()
ax1 = fig.add_subplot(111, projection = '3d')
#stike zone
def strike_zone():
x_zone = [0,0]
z_sides = [1.5, 3.5]
y_right = [-1, -1]
y_right_mid = [-.333,-.333]
y_left = [1,1]
y_left_mid = [.333,.333]
y_sides = [-1,1]
z_top = [3.5,3.5]
z_mid_top = [2.833,2.833]
z_mid_bottom = [2.167,2.167]
z_bottom = [1.5,1.5]
ax1.plot(x_zone,y_left, z_sides, color = 'r',linewidth = 2) #left side
ax1.plot(x_zone, y_right, z_sides, color = 'r',linewidth = 2) #right side
ax1.plot(x_zone, y_right_mid, z_sides, color = 'r',linewidth = 1) #right mid side
ax1.plot(x_zone, y_left_mid, z_sides, color = 'r',linewidth = 1) #left mid side
ax1.plot(x_zone, y_sides, z_top, color = 'r',linewidth = 2) #top side
ax1.plot(x_zone, y_sides, z_mid_top, color = 'r',linewidth = 1) #top middle
ax1.plot(x_zone, y_sides, z_mid_bottom, color = 'r',linewidth = 1) #bottom middle
ax1.plot(x_zone, y_sides, z_bottom, color = 'r',linewidth = 2) #bottom side
#Field
def field():
#FoulLines
x_Rline = [0,63.5]
x_Lline = [0,63.5]
y_Rline = [0,63.5]
y_Lline = [0, -63.5]
ax1.plot(x_Rline,y_Rline, color = '#696969')
ax1.plot(x_Lline,y_Lline, color = '#696969')
#home plate
front_line_x = [1.417,1.417]
front_line_y = [-.71,.71]
right_side_x = [1.417,.707]
right_side_y = [.71,.71]
left_side_x = [1.417,.707]
left_side_y = [-.71,-.71]
right_diag_x = [.707,0]
right_diag_y = [.71,0]
left_diag_x = [.707,0]
left_diag_y = [-.71,0]
ax1.plot(front_line_x,front_line_y, color = 'k', linewidth = 2)
ax1.plot(right_side_x,right_side_y,color = 'k', linewidth = 2)
ax1.plot(left_side_x,left_side_y,color = 'k', linewidth = 2)
ax1.plot(right_diag_x,right_diag_y,color = 'k', linewidth = 2)
ax1.plot(left_diag_x,left_diag_y,color = 'k', linewidth = 2)
#draw pitch
def draw_pitch():
x,y,z = np.loadtxt('test.txt', delimiter = ' ', unpack = True)
ax1.plot(x,y,z,
color = 'c',
linewidth = 5.5,
solid_capstyle = 'round')