1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
|
#include "Object3D.h"
using namespace SyntopiaCore::Math;
namespace SyntopiaCore {
namespace GLEngine {
void Object3D::setColor(SyntopiaCore::Math::Vector3f rgb, float alpha) {
primaryColor[0] = rgb[0];
primaryColor[1] = rgb[1];
primaryColor[2] = rgb[2];
primaryColor[3] = alpha;
}
void Object3D::vertex4n(SyntopiaCore::Math::Vector3f v1,SyntopiaCore::Math::Vector3f v2,SyntopiaCore::Math::Vector3f v3,SyntopiaCore::Math::Vector3f v4) const {
Vector3f n = (v2-v1).cross(v4-v1);
n = n.normalize();
normal(n);
vertex(v1);
vertex(v2);
vertex(v3);
vertex(v4);
}
void Object3D::vertex3n(SyntopiaCore::Math::Vector3f v1,SyntopiaCore::Math::Vector3f v2,SyntopiaCore::Math::Vector3f v3) const {
Vector3f n = (v2-v1).cross(v3-v1);
n = n.normalize();
normal(n);
vertex(v1);
vertex(v2);
vertex(v3);
}
void Object3D::vertex4rn(SyntopiaCore::Math::Vector3f v1,SyntopiaCore::Math::Vector3f v2,SyntopiaCore::Math::Vector3f v3,SyntopiaCore::Math::Vector3f v4) const {
Vector3f n = (v1-v2).cross(v4-v1);
n = n.normalize();
normal(n);
vertex(v4);
vertex(v3);
vertex(v2);
vertex(v1);
}
void Object3D::vertex4nc(SyntopiaCore::Math::Vector3f v1,SyntopiaCore::Math::Vector3f v2,SyntopiaCore::Math::Vector3f v3,SyntopiaCore::Math::Vector3f v4,SyntopiaCore::Math::Vector3f center) const {
normal((v1-center).normalize());
vertex(v1);
normal((v2-center).normalize());
vertex(v2);
normal((v3-center).normalize());
vertex(v3);
normal((v4-center).normalize());
vertex(v4);
}
void Object3D::vertex4rnc(SyntopiaCore::Math::Vector3f v1,SyntopiaCore::Math::Vector3f v2,SyntopiaCore::Math::Vector3f v3,SyntopiaCore::Math::Vector3f v4,SyntopiaCore::Math::Vector3f center) const {
normal((v4-center).normalize());
vertex(v4);
normal((v3-center).normalize());
vertex(v3);
normal((v2-center).normalize());
vertex(v2);
normal((v1-center).normalize());
vertex(v1);
}
void Object3D::getBoundingBox(SyntopiaCore::Math::Vector3f& from, SyntopiaCore::Math::Vector3f& to) const {
from = this->from;
to = this->to;
};
void Object3D::expandBoundingBox(SyntopiaCore::Math::Vector3f& from, SyntopiaCore::Math::Vector3f& to) const {
for (unsigned int i = 0; i < 3; i++) if (this->from[i] < from[i]) from[i] = this->from[i];
for (unsigned int i = 0; i < 3; i++) if (this->to[i] > to[i]) to[i] = this->to[i];
};
}
}
|