Select Git revision
F_Raytracing.cpp
-
Christophe Geuzaine authoredChristophe Geuzaine authored
SOrientedBoundingBox.cpp 18.39 KiB
// Gmsh - Copyright (C) 1997-2012 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to <gmsh@geuz.org>.
//
// Contributor(s):
// Bastien Gorissen
//
#include <math.h>
#include <time.h>
#include <stdlib.h>
#include "SOrientedBoundingBox.h"
#include "fullMatrix.h"
#include "DivideAndConquer.h"
#include "SBoundingBox3d.h"
double SOrientedBoundingRectangle::area()
{
double b = size->at(0);
double B = size->at(1);
return (b*B);
}
SOrientedBoundingRectangle::SOrientedBoundingRectangle()
{
center = new std::vector<double>(2,0);
size = new std::vector<double>(2,0);
axisX = new std::vector<double>(2,0);
axisY = new std::vector<double>(2,0);
}
SOrientedBoundingRectangle::~SOrientedBoundingRectangle()
{
delete center;
delete size;
delete axisX;
delete axisY;
}
SOrientedBoundingBox::SOrientedBoundingBox()
{
center = SVector3();
size = SVector3();
axisX = SVector3();
axisY = SVector3();
axisZ = SVector3();
}
SOrientedBoundingBox::SOrientedBoundingBox(SVector3 ¢er_,
double sizeX,
double sizeY,
double sizeZ,
const SVector3 &axisX_,
const SVector3 &axisY_,
const SVector3 &axisZ_)
{
center = center_;
size = SVector3(sizeX, sizeY, sizeZ);
axisX = axisX_;
axisX.normalize();
axisY = axisY_;
axisY.normalize();
axisZ = axisZ_;
axisZ.normalize();
double dx = 0.5 * size[0];
double dy = 0.5 * size[1];
double dz = 0.5 * size[2];