コード例 #1
0
mat4 Camera::getTranslation()
{
#ifndef QUATERNIONS_ON
	updateLocs();
#endif // QUATERNIONS_ON
	return LookAt(m_eye, m_at, m_up);
}
コード例 #2
0
vec4 Camera::getPosition()
{
#ifndef QUATERNIONS_ON
	updateLocs();
#endif // QUATERNIONS_ON
	return m_eye;
}
void flowState::update() {
    getSharedData().updateCamera(dimFac);
    farneback.calcOpticalFlow(getSharedData().smallFrame);
    if(farneback.getFlow().rows > 1 && locs.size() == 0) {
        Mat flow = farneback.getFlow();
        for(int x=0; x < flow.cols; x++) {
            for(int y=0; y < flow.rows; y++) {
                Integrator<ofVec2f> *newInt = new Integrator<ofVec2f>();
                newInt->attraction = 0.3;
                newInt->damping = 0.5;
                locs.push_back(newInt);
                mesh.addVertex(ofVec2f(x, y));
                mesh.addVertex(ofVec2f(x, y));
            }
        }
    }
    updateLocs();
}
コード例 #4
0
ファイル: externfcts.cpp プロジェクト: toeb/adolc
int call_ext_fct(ext_diff_fct *edfct,
                 int n, double *xp, adouble *xa,
                 int m, double *yp, adouble *ya)
{
    int i = 0, ret;
    locint firstVal, numVals;
    double *vals;
    ADOLC_OPENMP_THREAD_NUMBER;
    ADOLC_OPENMP_GET_THREAD_NUMBER;

    if (edfct==NULL) fail(ADOLC_EXT_DIFF_NULLPOINTER_STRUCT);

    if (ADOLC_CURRENT_TAPE_INFOS.traceFlag) {
        put_op(ext_diff);
        ADOLC_PUT_LOCINT(edfct->index);
        ADOLC_PUT_LOCINT(n);
        ADOLC_PUT_LOCINT(m);
        ADOLC_PUT_LOCINT(xa[i].loc());
        ADOLC_PUT_LOCINT(ya[i].loc());
        ADOLC_PUT_LOCINT(0);               /* keep space for checkpointing index */

        oldTraceFlag=ADOLC_CURRENT_TAPE_INFOS.traceFlag;
        ADOLC_CURRENT_TAPE_INFOS.traceFlag=0;
    } else oldTraceFlag=0;

#if defined(ADOLC_SAFE_EXTERN)
    firstVal = 0;
#else
    updateLocs();
    firstVal = ADOLC_GLOBAL_TAPE_VARS.locMinUnused;
#endif
    numVals = ADOLC_GLOBAL_TAPE_VARS.numMaxAlive - firstVal;
    vals = new double[numVals];
    memcpy(vals, ADOLC_GLOBAL_TAPE_VARS.store + firstVal,
            numVals * sizeof(double));

    for (i=0; i<n; ++i) xp[i]=xa[i].getValue();
    for (i=0; i<m; ++i) yp[i]=ya[i].getValue();

    ret=edfct->function(n, xp, m, yp);

    memcpy(ADOLC_GLOBAL_TAPE_VARS.store + firstVal, vals,
            numVals * sizeof(double));
    delete[] vals;

    /* update taylor buffer if keep != 0 ; possible double counting as in
     * adouble.cpp => correction in taping.c */

    if (oldTraceFlag != 0) {
        ADOLC_CURRENT_TAPE_INFOS.numTays_Tape += n;
        ADOLC_CURRENT_TAPE_INFOS.numTays_Tape += m;
        if (ADOLC_CURRENT_TAPE_INFOS.keepTaylors) {
            for (i=0; i<n; ++i) ADOLC_WRITE_SCAYLOR(xa[i].getValue());
            for (i=0; i<m; ++i) ADOLC_WRITE_SCAYLOR(ya[i].getValue());
        }
    }
    /* write back */
    for (i=0; i<n; ++i) xa[i].setValue(xp[i]);
    for (i=0; i<m; ++i) ya[i].setValue(yp[i]);

    ADOLC_CURRENT_TAPE_INFOS.traceFlag=oldTraceFlag;

    return ret;
}