0

関数をC++からPythonに変換しようとしばらく試みてきましたが、関数を自分で変換するのに十分なほど理解できていません。

//C++
float Cubic::easeInOut(float t,float b , float c, float d) {
    if ((t/=d/2) < 1) return c/2*t*t*t + b;
    return c/2*((t-=2)*t*t + 2) + b;    
}

//Python
def rotate(t, b, c, d):
    t = t/(d/2)
    if (t < 1):
        return c/2*t*t*t + b
    t = t-2
    return c/2*((t)*t*t + 2) + b

編集:これは私がこれまでに得たものですが、0.0から1.0に上昇するリストを返しません。誰かがこれまでにPythonでこれを行ったことがありますか?

4

3 に答える 3

1

すべての数値定数 (例: 2) を同等の浮動小数点定数 (例: 2.0) に置き換えると役に立ちますか?

def rotate(t, b, c, d):
    t = t/(d/2.0)
    if t < 1.0:
        return c/2.0*t*t*t + b
    t = t-2.0
    return c/2.0*((t)*t*t + 2.0) + b
于 2013-03-20T17:32:32.257 に答える
1

ヒント: まず、C++ を単純化します。

struct Cubic { 
    float easeInOut(float t,float b , float c, float d) {
        t = t / (d/2);
        if (t < 1) 
            return c/2*t*t*t + b;
        t = t - 2;
        return c/2*(t*t*t + 2) + b;   
    } 
}

それを pythonに変換する方法がわからない場合は、さらに python を学ぶ必要があります。これをpythonに翻訳できましたが、pythonも知りません。

実際、Python を投稿して、それが間違っていると主張したので、Python のすべての数値は (おそらく、ここで推測している) 2 倍であることに気付きました。 C++ よりも。Python のドキュメントを一目見ただけで " " と表示されているので、C++ のように動作させたい場合The / (division) and // (floor division) operators yield the quotient of their arguments.は、使用する必要があるようです。//

于 2013-03-20T17:15:17.787 に答える