00001 /*************************************************************************** 00002 * This file is part of OpenCAL: Open Computer Animation Library * 00003 * I created OpenCAL as my master's thesis Computer Science (multimedia) * 00004 * at the tUL university in Diepenbeek, Belgium * 00005 * * 00006 * Copyright (C) 2003-2004 by Jeroen Dierckx * 00007 * jeroen.dierckx@student.luc.ac.be * 00008 * * 00009 ***************************************************************************/ 00010 00011 // Includes 00012 #include "EulerSolver.h" 00013 //#include <OpenCAL/PhaseSpace.h> 00014 #include <OpenCAL/ODESource.h> 00015 using namespace OpenCAL; 00016 00017 using namespace std; 00018 00019 00020 /****************************** 00021 * Constructors and destructor * 00022 ******************************/ 00023 00024 EulerSolver::EulerSolver() 00025 { 00026 } 00027 00028 EulerSolver::~EulerSolver() 00029 { 00030 } 00031 00032 00033 /************************ 00034 * Get and set functions * 00035 ************************/ 00036 00037 00038 /****************** 00039 * Other functions * 00040 ******************/ 00041 00047 /* 00048 void EulerSolver::solve(float stepSize, const PhaseSpace &state, const PhaseSpace &deriv, PhaseSpace *result) 00049 { 00051 00052 for(unsigned int i = 0; i < state.getSize(); ++i) 00053 { 00054 //result->setValue(i, state[i] + stepSize * deriv[i]); 00055 result->add(state[i] + stepSize * deriv[i]); 00056 } 00057 } 00058 */ 00059 00060 void EulerSolver::solve(float stepSize, ODESource *source) 00061 { 00062 source->fillState(); 00063 source->fillDerivative(); 00064 00065 PhaseSpace &state = *(source->getState()); 00066 PhaseSpace &deriv = *(source->getDerivative()); 00067 00068 state.add(deriv, stepSize); 00069 00070 source->fromState(); 00071 } 00072 00073 00074 /********************** 00075 * Protected functions * 00076 **********************/