コード例 #1
0
void Deformable::timeStep()
{
    externalForces();
    //projectPositions();
    if( params.isCluster)
    {
        for(int i=0; i<mNumClusters; i++)
        {
            std::vector<int> cluster= mClusters.at(i);
            projectPositionsCluster(cluster, i);
        }
        
        for (int i=0; i<mNumVertices; i++)
        {
            if (mFixed(i)) continue;
            //std::cout<<mGoalPos_sum.row(i)<<" "<<indxCount.at(i)<<std::endl;
            mNewPos.row(i) = mGoalPos_sum.row(i)/indxCount.at(i);
            //std::cout<<"after: "<<mNewPos.row(i)<<" "<<indxCount.at(i)<<std::endl;
            //std::cout<<mNewPos.row(i)<<std::endl;
        }
        
        mGoalPos_sum.setZero();
        std::fill(indxCount.begin(), indxCount.end(), 0);
    }
    else
    {
        projectPositions();
    }
    integrate();
}
コード例 #2
0
ファイル: main.cpp プロジェクト: springtangent/ld24
	void step()
	{
		projectPositions();
		for(int i=0; i<CONSTRAINT_ITERATIONS; ++i)
		{
			applyConstraints();
		}
		unprojectVelocities();
		removeFlagged();
	}