    //@̈ʒuɍ킹ăvYEܒe̊pxɕ␳B
    //gpO[oϐFListPrismLasers, NumberTopOfPolygon
    //o̓O[oϐFReviseShotAngle, RevisePrismAngle

    task TRefractionControl
    {
        let dAngP = 360 / (GetClipMaxY - GetClipMinY);	//vY␳[g
        let dAngS = - 90 / (GetClipMaxY - GetClipMinY);	//ܒe␳[g

        let X0 = [GetCenterX, GetCenterY];
        let n = length(ListPrismLasers) / NumberTopOfPolygon;

       //O[oϐ
        ReviseShotAngle = ZeroList(n);
        RevisePrismAngle = ZeroList(n);

        loop
        {
            let XPlayer = [GetPlayerX, GetPlayerY];

            ascent(i in 0..n)
            {
                ReviseShotAngle[i] = (XPlayer[0] - X0[0]) * dAngS;	//ܒe␳p
                RevisePrismAngle[i] = (XPlayer[1] - X0[1]) * dAngP;	//vY␳p
            }
        yield;			//[vh~
        }
    }


    //Svf0̃Xg쐬
    function ZeroList(n)
    {
        let List = [];
        loop(n)
        {
            List = List ~ [0];
        }
    return(List);
    }

        