//---------------------------------------------------------------------- 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; }
//---------------------------------------------------------------------- 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() { }
Hull BoundingHull(int n, Vector2 *p) { return Hull(); }