def calc_nr_by_aw_asl(xy, vxy, w, gxy, asxy): r = dc.calc_r(xy, asxy) - 2 * dc.STONE_RADIUS gr = dc.calc_r(xy, gxy) if gr < r: return 0 nr2 = (gr ** 2) + (r ** 2) - 2 * gr * r * math.cos(ALPHA) return math.sqrt(nr2)
def calc_vxy_by_xyw(oxy, xy, w): v = calc_v_by_r(dc.calc_r(oxy, xy)) #print("theta =", dc.calc_th(oxy, xy)) theta = dc.calc_th(oxy, xy) #print(theta) vtheta = calc_vtheta_by_theta(theta, w) vx = v * math.sin(vtheta) return (vx, v * math.cos(vtheta))
def calc_vxy_by_xylrw(oxy, xy, _R, w): l = dc.calc_r(oxy, xy) R = l + _R # not acculate v = calc_v_by_r(R) r = calc_r_by_lv(l, v) cos_alpha = ((l ** 2) + (R ** 2) - (r ** 2)) / (2 * l * R) alpha = math.acos(cos_alpha) if w < 0: alpha = -alpha vtheta = calc_vtheta_by_theta(dc.calc_th(oxy, xy) + alpha, w) return np.matmul(rotationMatrix(-vtheta), (0, v))
def calc_vxy_by_xylvw(oxy, xy, v, w): l = dc.calc_r(oxy, xy) R = calc_r_by_v(v) r = calc_r_by_lv(l, v) cos_alpha = ((l ** 2) + (R ** 2) - (r ** 2)) / (2 * l * R) alpha = math.acos(cos_alpha) #print("alpha = ", alpha) #print(oxy, xy) #print(dc.calc_th(oxy, xy)) if w < 0: alpha = -alpha vtheta = calc_vtheta_by_theta(dc.calc_th(oxy, xy) + alpha, w) #print("vtheta = ", vtheta) return np.matmul(rotationMatrix(-vtheta), (0, v))
def calc_dt_by_aw_aw(xy0, vxy0, w0, gxy0, xy1, vxy1, w1, gxy1): r = dc.calc_r(xy0, xy1) - 2 * dc.STONE_RADIUS return r / (dc.calc_v(vxy0) + dc.calc_v(vxy1))
# test print("DR_V_R =", DR_V_R) a = ALPHA print("ALPHA =", ALPHA) print("B =", math.cos(a) / math.sqrt(1 - (math.cos(a) ** 2))) b = B print(math.acos(b / math.sqrt(b * b + 1))) print(PHI) print(A) print(calc_r_by_theta(PHI)) print(calc_theta_by_r(dc.calc_r(dc.XY_TEE, dc.XY_THROW))) print(calc_v_by_theta(1.53)) print(calc_vtheta_by_v(31.0)) print("*** Draw Shot ***") draw_vxy = calc_vxy_by_xyw_from_throw(dc.XY_TEE, dc.W_SPIN) print("Draw Shot(R) = ", draw_vxy) print("Simulation Result of Draw Shot(R) =", calc_xy_by_vxyw_from_throw(draw_vxy, dc.W_SPIN)) draw_vxy = calc_vxy_by_xyw_from_throw(dc.XY_TEE, -dc.W_SPIN) print("Draw Shot(L) = ", draw_vxy) print("Simulation Result of Draw Shot(L) =", calc_xy_by_vxyw_from_throw(draw_vxy, -dc.W_SPIN))
for ph in range(N_PHASES): for i in range(phase_data_num[ph]): sl = shot_logs[phase_index_vector[ph][i]] board_vector[ph][i][0] = sl['end'] board_vector[ph][i][1] = sl['rscore'] for n in range(dc.N_STONES): st = sl['previous_stone'][n] bs = 2 + n * 4 #board_vector[ph][i][bs + 0] = st[0] #board_vector[ph][i][bs + 1] = st[1] board_vector[ph][i][bs + 0] = dc.calc_r(dc.XY_TEE, st) board_vector[ph][i][bs + 1] = dc.calc_th(dc.XY_TEE, st) board_vector[ph][i][bs + 2] = dc.calc_r(dc.XY_THROW, st) board_vector[ph][i][bs + 3] = dc.calc_th(dc.XY_THROW, st) #sc = dc.count_score_a(sl['previous_stone']) sc = sl['escore'] sc_index = dc.StoIDX(sc) score_vector[ph][i] = sc_index score_vector_sum[sc_index] += 1 # 事前解析 print("number of used shot-logs = %d" % data_num) test_rate = 0.2 test_num = []