天天看點

halcon學習 tuple之算術運算2

//計算數組的積累值,tuple數組中每個元素必須都是數字,輸入[1,2,3,4],則輸出[1,3,6,10],如果輸入的有浮點數,則輸出結果也會出現浮點數
void testTupleCumul()
{
    HTuple tuple;
    for (int i = 0; i < 10; i++)
    {
        tuple[i] = i;
    }

    for (int i = 0; i < 10; i++)
    {
        cout << (Hlong)tuple[i] << " ";
    }

    cout << endl;
    HTuple result = tuple.TupleCumul();
    for (int i = 0; i < 10; i++)
    {
        cout << (Hlong)result[i] << " ";
    }
}


//轉化數組中的值從弧度到角度.
void testTupleDeg()
{
    HTuple tuple;
    for (int i = 0; i < 10; i++)
    {
        tuple[i] = i;
    }

    for (int i = 0; i < 10; i++)
    {
        cout << (Hlong)tuple[i] << " ";
    }
    cout << endl;
    HTuple result = tuple.TupleDeg();
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}

//數組之間執行相除操作。
void testTupleDiv()
{
    HTuple tuple1;
    for (int i = 0; i < 10; i++)
    {
        tuple1[i] = i+5;
    }
    HTuple tuple2;
    for (int i = 0; i < 10; i++)
    {
        tuple2[i] = i+1;;
    }

    HTuple result = tuple1.TupleDiv(tuple2);
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}

//數組的指數運算,總是傳回浮點值,數組中元素必須是數值型,result=e^x
void testTupleExp()
{
    HTuple tuple1;
    for (int i = 0; i < 10; i++)
    {
        tuple1[i] = i + 5;
    }

    HTuple result = tuple1.TupleExp();
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}

//浮點型的數組求絕對值
void testTupleFabs()
{
    HTuple tuple1;
    for (int i = 0; i < 10; i++)
    {
        if (i != 0)
            tuple1[i] = (double)(tuple1[i - 1]) *(-2.5);
        else
            tuple1[i] = i + 1;
    }

    HTuple result = tuple1.TupleFabs();
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}


//通過下限函數計算tuple數組,比如[2.5]=2,[2.1]=2,[3.5]=3
//注意。(double)result[i] 轉化格式不能錯,一旦出錯,程式會中斷
void testTupleFloor()
{
    HTuple tuple;
    for (int i = 0; i < 10; i++)
    {
        tuple[i] = (double)(i + 5) / (2.0);
    }
    for (int i = 0; i < 10; i++)
    {
        cout << (double)tuple[i] << " ";
    }

    cout << endl;
    HTuple result = tuple.TupleFloor();
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}

//計算兩個浮點數的相除的餘數
void testTupleFmod()
{
    HTuple tuple1;
    for (int i = 0; i < 10; i++)
    {
        tuple1[i] = (i + 5)*5.3;
    }
    HTuple tuple2;
    for (int i = 0; i < 10; i++)
    {
        tuple2[i] = (i + 1)*1.5;;
    }

    HTuple result = tuple1.TupleFmod(tuple2);
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}

// 裝載浮點數,ldexp(double value, int exp); 功 能: 計算value乘以2的exp次幂 
void testTupleLdexp()
{
    HTuple tuple1;
    for (int i = 0; i < 10; i++)
    {
        tuple1[i] = i *1.2;
    }
    HTuple tuple2;
    for (int i = 0; i < 10; i++)
    {
        tuple2[i] = i;
    }
    HTuple result = tuple1.TupleLdexp(tuple2);
    for (int i = 0; i < 10; i++)
    {
        cout << (double)result[i] << " ";
    }
}