값이 계속 증가하는 삼각 함수

2839 단어 Unity3DUnity


갑자기입니다만, 위의 그림과 같이 값이 매끄럽게 늘어나는 Sin 함수 갖고 싶다고 생각한 적 없습니까.
나는 있다.
의외로 없는 것이므로 자작했습니다. 이미 있으면 미안해.
함수명이 다사인 것과 Mathf의 확장 메소드가 되어 있지 않기 때문에 그 근처는 적당히 부탁합니다.

esin.cs
    float ESin(float rad){
        float HALF_PI = 0.5f*Mathf.PI;
        int num = Mathf.FloorToInt( rad / HALF_PI );
        if ( (num & 1) == 0 ){
            return num + Mathf.Sin( Mathf.Repeat(rad, HALF_PI) );
        }
        else{
            return num + (1.0f+Mathf.Sin( Mathf.Repeat(rad,HALF_PI)+1.5f*Mathf.PI ));
        }
    }

하는 것은 0.5PI에서 1.5PI로 라디안을 날려 Sin 함수를 부드럽게 연결하면서 0.5PI마다 값이 증가하도록 하고 있습니다.

Unity 등에서 걷는 것처럼 진동하면서 늘어나는 물건에 사용하면 그것처럼 움직입니다.
삼각함수의 주기를 사용하고 있기 때문에, 상하동에 삼각함수를 사용해 동기시키거나 임의의 시간에 특정의 위치까지 선형 보간하는 것 같은 용도에도 사용할 수 있으므로 비교적 편리하다고 생각합니다.

좋은 웹페이지 즐겨찾기