Exemplo n.º 1
0
//----------------------------------------------------------------------
int GeneralMatrix::matrixCopy(SPARSE_INTERVAL_MATRIX& dest, rSparseMatrix& source, bool inverse)
{
  switch(source.Sp_De_Di)
  {
  case rSparseMatrix::SPARSE:
    Resize(dest, source.nRow, source.nCol, source.NonZeroCount);
    for (int k=0; k<source.NonZeroCount; k++) 
    {
      if (inverse) 
      {
        SetElement(dest, source.row_index[k]+1, source.column_index[k]+1, -Hull(source.sp_ele[k]));
	SetElement(dest, source.column_index[k]+1, source.row_index[k]+1, -Hull(source.sp_ele[k]));
      }
      else 
      {
        SetElement(dest, source.row_index[k]+1, source.column_index[k]+1, Hull(source.sp_ele[k]));
	SetElement(dest, source.column_index[k]+1, source.row_index[k]+1, Hull(source.sp_ele[k]));
      }
    }
    break;
  case rSparseMatrix::DENSE:
    Resize(dest, source.nRow, source.nCol, source.nRow*source.nCol);
    for (int i=0; i<source.nRow; i++)
      for (int j=0; j<source.nCol; j++)
        if (inverse) 
	{
	  SetElement(dest, i+1, j+1, -Hull(source.de_ele[j+source.nCol*i]));
	  SetElement(dest, j+1, i+1, -Hull(source.de_ele[j+source.nCol*i]));
	}
        else 
	{
	  SetElement(dest, i+1, j+1, Hull(source.de_ele[j+source.nCol*i]));
	  SetElement(dest, j+1, i+1, Hull(source.de_ele[j+source.nCol*i]));
	}
    break;
  case rSparseMatrix::DIAGONAL:
    Resize(dest, source.nRow, source.nCol, source.nCol);
    for (int k=0; k<source.nCol; k++)
      if (inverse) SetElement(dest, k+1, k+1, -Hull(source.di_ele[k]));
        else SetElement(dest, k+1, k+1, Hull(source.di_ele[k]));
    break;
  }
  return 0;
}
Exemplo n.º 2
0
//----------------------------------------------------------------------
int GeneralMatrix::matrixCopy(INTERVAL_MATRIX& dest, rSparseMatrix& source, bool inverse)
{
  Resize(dest, source.nRow, source.nCol);
  Initialize(dest, 0);
  switch(source.Sp_De_Di)
  {
  case rSparseMatrix::SPARSE:
    for(int k=0; k<source.NonZeroCount; k++)
    {
      int i = source.row_index[k];
      int j = source.column_index[k];
      double val = source.sp_ele[k];
      if (inverse) dest(i+1,j+1) = dest(j+1,i+1) = -Hull(val);
        else dest(i+1,j+1) = dest(j+1,i+1) = Hull(val);
    }
    break;
  case rSparseMatrix::DENSE:
    for (int i=0; i<source.nRow; i++)
      for (int j=0; j<source.nCol; j++)  
	if (inverse) dest(i+1,j+1) = dest(j+1,i+1) = -Hull(source.de_ele[j+source.nCol*i]);
          else dest(i+1,j+1) = dest(j+1,i+1) = Hull(source.de_ele[j+source.nCol*i]);
    break;
  case rSparseMatrix::DIAGONAL:
    for (int k=0; k<source.nCol; k++) 
      if (inverse) dest(k+1,k+1) = -Hull(source.di_ele[k]);  
        else dest(k+1,k+1) = Hull(source.di_ele[k]);
    break;  	      
  }	  
  return 0;	
}
#include "CuboidCollisionShape.h"
#include "PhysicsObject.h"
#include <nclgl/Matrix3.h>
#include <nclgl/OGLRenderer.h>

Hull CuboidCollisionShape::m_CubeHull = Hull();

CuboidCollisionShape::CuboidCollisionShape()
{
	m_CuboidHalfDimensions = Vector3(0.5f, 0.5f, 0.5f);

	if (m_CubeHull.GetNumVertices() == 0)
	{
		ConstructCubeHull();
	}
}

CuboidCollisionShape::CuboidCollisionShape(const Vector3& halfdims)
{
	m_CuboidHalfDimensions = halfdims;

	if (m_CubeHull.GetNumVertices() == 0)
	{
		ConstructCubeHull();
	}
}

CuboidCollisionShape::~CuboidCollisionShape()
{

}
Exemplo n.º 4
0
 Hull BoundingHull(int n, Vector2 *p)
 {
     return Hull();
 }