28 return m_Vector.GetNorm();
33 return m_Vector.GetElement(index);
38 m_Vector.SetElement(index, value);
43 double norm = m_Vector.GetNorm();
44 m_Vector.SetElement(0, m_Vector.GetElement(0) / norm);
45 m_Vector.SetElement(1, m_Vector.GetElement(1) / norm);
46 m_Vector.SetElement(2, m_Vector.GetElement(2) / norm);
51 m_Vector.SetElement(0, value->GetElement(0));
52 m_Vector.SetElement(1, value->GetElement(1));
53 m_Vector.SetElement(2, value->GetElement(2));
58 std::uniform_real_distribution<> range(-percentage, percentage);
59 m_Vector.SetElement(0, m_Vector.GetElement(0) + (bendingFactor * range(*rng)));
60 m_Vector.SetElement(1, m_Vector.GetElement(1) + (bendingFactor * range(*rng)));
61 m_Vector.SetElement(2, m_Vector.GetElement(2) + (bendingFactor * range(*rng)));
64 void mitk::pa::Vector::Randomize(
double xLowerLimit,
double xUpperLimit,
double yLowerLimit,
double yUpperLimit,
double zLowerLimit,
double zUpperLimit, std::mt19937* rng)
66 std::uniform_real_distribution<> rangeX(xLowerLimit, xUpperLimit);
67 std::uniform_real_distribution<> rangeY(yLowerLimit, yUpperLimit);
68 std::uniform_real_distribution<> rangeZ(zLowerLimit, zUpperLimit);
69 m_Vector.SetElement(0, rangeX(*rng));
70 m_Vector.SetElement(1, rangeY(*rng));
71 m_Vector.SetElement(2, rangeZ(*rng));
76 Randomize(0, xLimit, 0, yLimit, 0, zLimit, rng);
86 os <<
"X: " << m_Vector.GetElement(0) << std::endl;
87 os <<
"Y: " << m_Vector.GetElement(1) << std::endl;
88 os <<
"Z: " << m_Vector.GetElement(2) << std::endl;
89 os <<
"Length: " << m_Vector.GetNorm() << std::endl;
95 if (thetaChange == 0 && phiChange == 0)
102 double r = sqrt(x*x + y*y + z*z);
106 double theta = acos(z / r);
107 double phi = atan2(y, x);
109 theta += thetaChange;
121 m_Vector.SetElement(0, m_Vector.GetElement(0)*factor);
122 m_Vector.SetElement(1, m_Vector.GetElement(1)*factor);
123 m_Vector.SetElement(2, m_Vector.GetElement(2)*factor);
129 returnVector->SetElement(0, this->
GetElement(0));
130 returnVector->SetElement(1, this->
GetElement(1));
131 returnVector->SetElement(2, this->
GetElement(2));
137 m_Vector.SetElement(0, m_Vector.GetElement(0) - other->GetElement(0));
138 m_Vector.SetElement(1, m_Vector.GetElement(1) - other->GetElement(1));
139 m_Vector.SetElement(2, m_Vector.GetElement(2) - other->GetElement(2));
144 m_Vector.SetElement(0, m_Vector.GetElement(0) + other->GetElement(0));
145 m_Vector.SetElement(1, m_Vector.GetElement(1) + other->GetElement(1));
146 m_Vector.SetElement(2, m_Vector.GetElement(2) + other->GetElement(2));
151 MITK_INFO(verbose) <<
"=== mitk::pa::Vector Equal ===";
153 if (rightHandSide.IsNull() || leftHandSide.IsNull())
155 MITK_INFO(verbose) <<
"Cannot compare nullpointers";
159 if (leftHandSide->GetElement(0) - rightHandSide->GetElement(0) >
eps)
161 MITK_INFO(verbose) <<
"Element[0] not equal";
165 if (leftHandSide->GetElement(1) - rightHandSide->GetElement(1) >
eps)
167 MITK_INFO(verbose) <<
"Element[1] not equal";
171 if (leftHandSide->GetElement(2) - rightHandSide->GetElement(2) >
eps)
173 MITK_INFO(verbose) <<
"Element[2] not equal";
void Rotate(double xAngle, double yAngle)
Rotate rotates this Vector around the x, y and z axis with the given angles in radians.
void SetElement(unsigned short index, double value)
void PrintSelf(std::ostream &os, itk::Indent indent) const override
void Randomize(double xLowerLimit, double xUpperLimit, double yLowerLimit, double yUpperLimit, double zLowerLimit, double zUpperLimit, std::mt19937 *rng)
Randomize randomizes this vector to be [lowerLimit, upperLimit] in each element.
void Add(Vector::Pointer other)
double GetElement(unsigned short index)
void RandomizeByPercentage(double percentage, double bendingFactor, std::mt19937 *rng)
RandomizeByPercentage alters this vector randomly by [-percentage, percentage] of the bendingFactor...
Vector::Pointer Clone()
Clone create a deep copy of this vector.
MITKPHOTOACOUSTICSLIB_EXPORT bool Equal(const MonteCarloThreadHandler::Pointer leftHandSide, const MonteCarloThreadHandler::Pointer rightHandSide, double eps, bool verbose)
Equal A function comparing two thread handlers for beeing equal.
void Scale(double factor)
Scale scales this Vector with the given factor.
void SetValue(Vector::Pointer value)
void Normalize()
Normalize normalizes this vector. After calling this GetNorm() will return 1.
double GetNorm()
GetNorm calculates the length of this vector.
MITKCORE_EXPORT const ScalarType eps
void Subtract(Vector::Pointer other)