fixed block
This commit is contained in:
parent
4ef94d4cb2
commit
66ae828379
@ -23,5 +23,9 @@ int main(int argc, char **argv) {
|
||||
std::cout<<vec<<std::endl;
|
||||
std::cout<<vec.len()<<std::endl;
|
||||
std::cout<<block<<std::endl;
|
||||
std::vector<LinAlg::Vector3> normals=block.getNormals();
|
||||
for(LinAlg::Vector3 vector:normals){
|
||||
std::cout<<vector<<std::endl;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -6,6 +6,8 @@
|
||||
#define BLOCK_BLOCK_H
|
||||
|
||||
#include <LinAlg/vector3.h>
|
||||
#include <LinAlg/plane.h>
|
||||
#include <vector>
|
||||
|
||||
namespace Volumes{
|
||||
class Block{
|
||||
@ -13,7 +15,8 @@ namespace Volumes{
|
||||
Block(const LinAlg::Vector3& v1, double x, double y, double z): corners{v1,
|
||||
v1 + LinAlg::Vector3(x, 0, 0),
|
||||
v1 + LinAlg::Vector3(x, y, 0),
|
||||
v1 + LinAlg::Vector3(0, y, z), v1,
|
||||
v1 + LinAlg::Vector3(0, y, 0),
|
||||
v1+ LinAlg::Vector3(0, y, z),
|
||||
v1 + LinAlg::Vector3(x, y, z),
|
||||
v1 + LinAlg::Vector3(x, 0, z),
|
||||
v1 + LinAlg::Vector3(0, 0, z)}{};
|
||||
@ -35,7 +38,12 @@ namespace Volumes{
|
||||
return os;
|
||||
}
|
||||
|
||||
std::vector<LinAlg::Vector3> getNormals();
|
||||
|
||||
LinAlg::Vector3 getNormal(u_int8_t index);
|
||||
|
||||
private:
|
||||
|
||||
LinAlg::Vector3 corners[8];
|
||||
};
|
||||
}
|
||||
|
@ -5,14 +5,13 @@
|
||||
#ifndef VOLSVECS_MATRIX3_H
|
||||
#define VOLSVECS_MATRIX3_H
|
||||
|
||||
#include "LinAlg/matrixmxn.h"
|
||||
|
||||
namespace LinAlg{
|
||||
class Matrix3{
|
||||
class Matrix3: public Matrix<3,3>{
|
||||
public:
|
||||
|
||||
private:
|
||||
short static getIndex(int x, int y);
|
||||
|
||||
double elements[9];
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -8,6 +8,9 @@
|
||||
namespace LinAlg{
|
||||
template<short m,short n>
|
||||
class Matrix{
|
||||
public:
|
||||
|
||||
virtual ~Matrix()=default;
|
||||
|
||||
protected:
|
||||
int static getIndex(short x, short y){
|
||||
@ -15,8 +18,8 @@ namespace LinAlg{
|
||||
if(y>=n) return -2;
|
||||
return x+y*n;
|
||||
}
|
||||
private:
|
||||
double _entris[m*n];
|
||||
|
||||
double _entries[m*n];
|
||||
};
|
||||
}
|
||||
|
||||
|
22
include/LinAlg/plane.h
Normal file
22
include/LinAlg/plane.h
Normal file
@ -0,0 +1,22 @@
|
||||
//
|
||||
// Created by nb on 21.07.24.
|
||||
//
|
||||
|
||||
#ifndef VOLSVECS_PLANE_H
|
||||
#define VOLSVECS_PLANE_H
|
||||
|
||||
#include "LinAlg/vector3.h"
|
||||
|
||||
namespace LinAlg{
|
||||
class Plane{
|
||||
public:
|
||||
Plane(const Vector3& a, const Vector3& b, const Vector3& c): _entries{a, b-a, c-a}{};
|
||||
|
||||
Vector3 getNormal();
|
||||
|
||||
virtual ~Plane()=default;
|
||||
private:
|
||||
Vector3 _entries[3];
|
||||
};
|
||||
}
|
||||
#endif //VOLSVECS_PLANE_H
|
@ -10,4 +10,42 @@ namespace Volumes{
|
||||
LinAlg::Vector3 z= corners[7] - corners[0];
|
||||
return x.len()*y.len()*z.len();
|
||||
}
|
||||
|
||||
std::vector<LinAlg::Vector3> Block::getNormals() {
|
||||
std::vector<LinAlg::Vector3> ret;
|
||||
for(int i=0;i<6;i++) {
|
||||
ret.push_back(getNormal(i));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
LinAlg::Vector3 Block::getNormal(u_int8_t index) {
|
||||
switch(index){
|
||||
case 0:{
|
||||
LinAlg::Plane tmp(corners[1],corners[0],corners[2]);
|
||||
return tmp.getNormal();
|
||||
};
|
||||
case 1:{
|
||||
LinAlg::Plane tmp(corners[3],corners[4],corners[2]);
|
||||
return tmp.getNormal();
|
||||
}
|
||||
case 2:{
|
||||
LinAlg::Plane tmp(corners[7],corners[4],corners[0]);
|
||||
return tmp.getNormal();
|
||||
}
|
||||
case 3:{
|
||||
LinAlg::Plane tmp(corners[5],corners[6],corners[2]);
|
||||
return tmp.getNormal();
|
||||
}
|
||||
case 4:{
|
||||
LinAlg::Plane tmp(corners[5],corners[4],corners[6]);
|
||||
return tmp.getNormal();
|
||||
}
|
||||
case 5:{
|
||||
LinAlg::Plane tmp(corners[6],corners[7],corners[1]);
|
||||
return tmp.getNormal();
|
||||
}
|
||||
default: return LinAlg::Vector3();
|
||||
}
|
||||
}
|
||||
}
|
@ -4,7 +4,4 @@
|
||||
#include "LinAlg/matrix3.h"
|
||||
|
||||
namespace LinAlg{
|
||||
short Matrix3::getIndex(int x, int y) {
|
||||
return x+y*3;
|
||||
}
|
||||
}
|
11
src/plane.cpp
Normal file
11
src/plane.cpp
Normal file
@ -0,0 +1,11 @@
|
||||
//
|
||||
// Created by nb on 21.07.24.
|
||||
//
|
||||
#include "LinAlg/plane.h"
|
||||
|
||||
namespace LinAlg{
|
||||
Vector3 Plane::getNormal() {
|
||||
Vector3 temp = (_entries[1].cross(_entries[2])).norm();
|
||||
return temp;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user