#apply
#include "../_include.txt"
#include "../../define/_vector2.txt"

/*
@param
速度x
y
法線x
y
壁の速度x
y
転がり係数
反射係数

@return
反射ベクトルx
y
元の速度と法線の内積
*/
cev[CEV_GET_REFLECTION] .name(">>>>反射ベクトルを取得する") {
    defv {
        r_vx = TV_RETURN
        r_vy
        r_dot

        a_vx = TV_GET_REFLECTION
        a_vy
        a_nx
        a_ny
        a_wx
        a_wy
        a_fri
        a_ref

        rx
        ry
        vx
        vy
        dot
        
    }

    //相対速度
    V2_sub(vx, a_vx, a_wx)

    //内積
    V2_dot(r_dot, vx, a_nx, UNIT_NORMAL)

    //反射ベクトル
    V2_muldiv(rx, a_nx, r_dot, UNIT_NORMAL)

    //壁ずりベクトル + 反射ベクトル
    V2_math(bl {
            v[$a] = v[$w] + ((v[$v] - v[$r]) * a_fri - v[$r] * a_ref) / UNIT_REFLECTION
        },
        bl {
            $a = $i + __id(r_vx)
            $w = $i + __id(a_wx)
            $v = $i + __id(vx)
            $r = $i + __id(rx)
        }
    )

}