Ejemplo n.º 1
0
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)
Ejemplo n.º 2
0
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))
Ejemplo n.º 3
0
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))
Ejemplo n.º 4
0
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))
Ejemplo n.º 5
0
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))
Ejemplo n.º 6
0
    # 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))
Ejemplo n.º 7
0
    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 = []