bool FileDataCacheItem::GetVector( DVector& v, StringList::const_iterator& i, const StringList& s ) { if ( i == s.End() ) return false; int n = i->ToInt(); if ( n < 0 || s.End() - i <= n ) return false; ++i; v = DVector( n ); for ( int j = 0; j < n; ++j, ++i ) v[j] = i->ToDouble(); return true; }
returnValue QPsolver_qpOASES::getDualSolution( DVector& yOpt ) const { if ( qp == 0 ) return ACADOERROR( RET_INITIALIZE_FIRST ); uint dim = qp->getNV( ) + qp->getNC( ); double* yOptTmp = new double[dim]; if ( qp->getDualSolution( yOptTmp ) == qpOASES::SUCCESSFUL_RETURN ) { yOpt = DVector(dim, yOptTmp); delete[] yOptTmp; return SUCCESSFUL_RETURN; } else { delete[] yOptTmp; return ACADOERROR( RET_QP_NOT_SOLVED ); } }
void CStarCamera::fn3(CViewport *viewport, const FVector &v) { if (_matrixRow != 0) return; DMatrix m1; DVector tempV1 = _matrix._row1; DMatrix m2(0, tempV1); tempV1 = v - _matrix._row1; m1 = tempV1.fn5(); m1 = m1.fn4(m2); m2 = m1.fn1(); DVector tempV2 = _viewport._position; DMatrix m4; m4._row1 = viewport->_position; m4._row2 = DVector(0.0, 0.0, 0.0); m4._row3 = DVector(0.0, 0.0, 0.0); m4._row4 = DVector(0.0, 0.0, 0.0); FMatrix m5 = viewport->getOrientation(); DVector tempV3, tempV4; tempV4._x = m5._row1._x * 1000000.0 + m4._row1._x; tempV4._y = m5._row1._y * 1000000.0 + m4._row1._y; tempV4._z = m5._row1._z * 1000000.0 + m4._row1._z; tempV3._x = m5._row2._x * 1000000.0 + m4._row1._x; tempV3._y = m5._row2._y * 1000000.0 + m4._row1._y; tempV3._z = m5._row2._z * 1000000.0 + m4._row1._z; m4._row3 = tempV4; m4._row2 = tempV3; tempV4._x = m5._row3._x * 1000000.0; tempV4._y = m5._row3._y * 1000000.0; tempV3._x = tempV4._x + m4._row1._x; tempV3._y = tempV4._y + m4._row1._y; tempV3._z = m5._row3._z * 1000000.0 + m4._row1._z; m4._row4 = tempV3; DVector *dv = tempV2.fn1(tempV3, m2); tempV3 = *dv; dv = m4._row1.fn1(tempV3, m2); m4._row1 = *dv; dv = m4._row3.fn1(tempV3, m2); m4._row3 = *dv; dv = m4._row2.fn1(tempV3, m2); m4._row2 = *dv; dv = m4._row4.fn1(tempV3, m2); m4._row4 = *dv; // Find the angle that gives the minimum distance DVector tempV5; double minDistance = 1.0e20; int minDegree = 0; for (int degree = 0; degree < 360; ++degree) { tempV5 = m4._row1; tempV5.fn2((double)degree); double distance = tempV2.getDistance(tempV5); if (distance < minDistance) { minDistance = distance; minDegree = degree; } } m4._row1.fn2((double)minDegree); m4._row2.fn2((double)minDegree); m4._row3.fn2((double)minDegree); m4._row4.fn2((double)minDegree); dv = m4._row1.fn1(tempV3, m1); m4._row1 = *dv; dv = m4._row3.fn1(tempV3, m1); m4._row3 = *dv; dv = m4._row2.fn1(tempV3, m1); m4._row2 = *dv; dv = m4._row4.fn1(tempV3, m1); m4._row4 = *dv; m4._row3._x -= m4._row1._x; m4._row3._y -= m4._row1._y; m4._row3._z -= m4._row1._z; m4._row2._x -= m4._row1._x; m4._row2._y -= m4._row1._y; m4._row2._z = m4._row2._z - m4._row1._z; m4._row4._x = m4._row4._x - m4._row1._x; m4._row4._y = m4._row4._y - m4._row1._y; m4._row4._z = m4._row4._z - m4._row1._z; m4._row3.normalize(); m4._row2.normalize(); m4._row4.normalize(); m5.set(m4._row3, m4._row2, m4._row4); FVector tempV6 = m4._row1; FMatrix m6 = _viewport.getOrientation(); _mover->proc8(_viewport._position, tempV6, m6, m5); CStarVector *sv = new CStarVector(this, v); _mover->setVector(sv); }
TestCase(const SLESystem& task, const DVector answer) : task(task) , solution(SLESolution(answer, DVector())) {}