コード例 #1
0
Pos3D randDir(Pos3D dir,float angle)
{
  return getRandDirOrtho(dir);
  cdebug("dir:"<<dir);
  dir=dir.normalized();
  cdebug("dir:"<<dir);
  Pos3D normal=getRandDirOrtho(dir).normalized();
  cdebug("normal:"<<normal);

  cdebug("*:"<<normal*dir);

  Pos3D res=rotVector(dir,normal,angle);

  cdebug("res:"<<res);

  return res;
}
コード例 #2
0
std::list<Pos3D> splitDir(Pos3D dir,int count,float angle,float sp_noise,float tu_noise)
{
  std::list<Pos3D> l;

  Pos3D myNorm=getRandDirOrtho(dir).normalized();
  Pos3D myBinorm=(dir%myNorm).normalized();
  
  for(int i=0;i<count;i++)
    {
      float ma=i*2*M_PI/count + getRandEq()*sp_noise;
      Pos3D norm=myNorm*sin(ma)+myBinorm*cos(ma);

      Pos3D r=rotVector(dir,norm,angle+getRandEq()*tu_noise).normalized();
      l.push_back(r);
    }
  return l;
}
コード例 #3
0
Foam::vector Foam::finiteRotation::rotVectorAverage() const
{
    return rotVector(rotTensorAverage());
}
コード例 #4
0
Foam::vector Foam::finiteRotation::rotIncrementVector() const
{
    return rotVector(rotIncrementTensor_);
}
コード例 #5
0
Foam::HamiltonRodriguezRot Foam::finiteRotation::eCurrent() const
{
    return HamiltonRodriguezRot(rotVector(), rotAngle());
}