1 #include "VectorMath.h"
3 VectorMath::VectorMath()
8 VectorMath::~VectorMath()
13 void VectorMath::SetData(std::vector<int> pointsX1, std::vector<int> pointsX2, std::vector<int> pointsY1, std::vector<int> pointsY2, std::vector<int> pointsZ1, std::vector<int> pointsZ2)
15 _pointx1a = pointsX1[0];
16 _pointx1b = pointsX1[1];
18 _pointx2a = pointsX2[0];
19 _pointx2b = pointsX2[1];
21 _pointy1a = pointsY1[0];
22 _pointy1b = pointsY1[1];
24 _pointy2a = pointsY2[0];
25 _pointy2b = pointsY2[1];
27 _pointz1a = pointsZ1[0];
28 _pointz1b = pointsZ1[1];
30 _pointz2a = pointsZ2[0];
31 _pointz2b = pointsZ2[1];
34 void VectorMath::Run()
37 _origin.push_back(_pointx2a);
38 _origin.push_back(_pointy2a);
39 _origin.push_back(_pointz2a);
41 _originReslicer.clear();
42 _originReslicer.push_back(_pointx1a);
43 _originReslicer.push_back(_pointy1a);
44 _originReslicer.push_back(_pointz1a);
47 _vectorA[0] =(double)(_pointx1b - _pointx1a);
48 _vectorA[1] =(double)(_pointy1b - _pointy1a);
49 _vectorA[2] =(double)(_pointz1b - _pointz1a);
51 double normA = vtkMath::Norm(_vectorA);
53 _vectorA[0] = _vectorA[0]/normA;
54 _vectorA[1] = _vectorA[1]/normA;
55 _vectorA[2] = _vectorA[2]/normA;
58 _vectorB[0] =(double)(_pointx2b - _pointx2a - _pointx1a);
59 _vectorB[1] =(double)(_pointy2b - _pointy2a - _pointy1a);
60 _vectorB[2] =(double)(_pointz2b - _pointz2a - _pointz1a);
62 double normB = vtkMath::Norm(_vectorB);
64 _vectorB[0] = _vectorB[0]/normB;
65 _vectorB[1] = _vectorB[1]/normB;
66 _vectorB[2] = _vectorB[2]/normB;
68 vtkMath::Cross(_vectorA, _vectorB, _result);
70 std::cout << "Data from vector A: X: " << _vectorA[0] << " Y: " << _vectorA[1] << " Z: " << _vectorA[2] << std::endl;
71 std::cout << "Data from vector B: X: " << _vectorB[0] << " Y: " << _vectorB[1] << " Z: " << _vectorB[2] << std::endl;
72 std::cout << "Data from result: X: " << _result[0] << " Y: " << _result[1] << " Z: " << _result[2] << std::endl;
74 double _vectorOrigin[3] = {0,0,0};
76 double distanceA = vtkMath::Distance2BetweenPoints(_vectorOrigin, _vectorA);
77 double distanceB = vtkMath::Distance2BetweenPoints(_vectorOrigin, _vectorA);
79 double proportion = distanceA/distanceB;
85 _angle = acos(vtkMath::Dot(_vectorA, _vectorB));
87 _angle = vtkMath::DegreesFromRadians(_angle);
89 std::cout << "Dot " << vtkMath::Dot(_vectorA, _vectorB) << std::endl;
90 std::cout << "Angle " << (double)_angle << std::endl;
94 std::vector<int> VectorMath::GetOrigin()
99 std::vector<int> VectorMath::GetOriginReslicer()
101 return _originReslicer;
104 void VectorMath::GetResult(double result[3])
109 double VectorMath::GetScaleX()
114 double VectorMath::GetScaleY()
119 double VectorMath::GetScaleZ()
124 double VectorMath::GetAngle()