FOUND
Loading...
Searching...
No Matches
distance.hpp
Go to the documentation of this file.
1#ifndef DISTANCE_H
2#define DISTANCE_H
3
4#include <utility>
5#include <memory>
6
7#include "common/style.hpp"
8#include "common/pipeline.hpp"
11
12namespace found {
13
23class DistanceDeterminationAlgorithm : public Stage<Points, PositionVector> {
24 public:
25 // Constructs this
27 // Destroys this
29};
30
106
139 public:
163 Camera &&cam,
164 size_t minimumIterations,
165 decimal distanceRatio,
166 decimal discriminatorRatio,
167 int pdfOrder,
168 int radiusLossOrder);
170
192 PositionVector Run(const Points &p) override;
193
194 private:
212 decimal targetDistanceSq,
213 decimal targetRadiusSq,
214 std::unique_ptr<Vec3[]> &projectedPoints,
215 size_t size);
216
248 void Shuffle(size_t size, size_t n, std::unique_ptr<size_t[]> &indicies);
249
258 inline uint64_t Pow(uint64_t base, uint64_t power) {
259 uint64_t result = 1;
260 while (power > 0) {
261 if (power % 2 == 1)
262 result *= base;
263 base *= base;
264 power /= 2;
265 }
266 return result;
267 }
268
276 uint64_t pdfOrder_;
279};
280
288 public:
296
300 PositionVector Run(const Points &p) override;
301 private:
302 // Fields specific to this algorithm, and helper methods
303};
304
305} // namespace found
306
307#endif // DISTANCE_H
A Camera is a mutable object that represents a Camera.
Definition camera.hpp:17
The DistanceDeterminationAlgorithm class houses the Distance Determination Algorithm.
Definition distance.hpp:23
virtual ~DistanceDeterminationAlgorithm()
Definition distance.hpp:28
The DistanceDeterminationAlgorithm class houses the Distance Determination Algorithm.
Definition distance.hpp:287
PositionVector Run(const Points &p) override
Place documentation here.
EllipticDistanceDeterminationAlgorithm(PositionVector radius)
Initializes an EllipticDistanceDeterminationAlgorithm.
The IterativeSphericalDistanceDeterminationAlgorithm is a variation of the SphericalDistanceDetermina...
Definition distance.hpp:138
decimal GenerateLoss(PositionVector &position, decimal targetDistanceSq, decimal targetRadiusSq, std::unique_ptr< Vec3[]> &projectedPoints, size_t size)
Generates a loss on a position vector.
Definition distance.cpp:184
size_t minimumIterations_
The minimum number of iterations to use.
Definition distance.hpp:270
PositionVector Run(const Points &p) override
Obtains the position of the planet relative to the camera.
Definition distance.cpp:114
uint64_t pdfOrder_
The Shuffle randomization order.
Definition distance.hpp:276
decimal distanceRatioSq_
The maximum distance ratio to accept.
Definition distance.hpp:272
decimal discriminatorRatio_
The maximum loss ratio to accept.
Definition distance.hpp:274
uint64_t radiusLossOrder_
The Loss Radius error order.
Definition distance.hpp:278
uint64_t Pow(uint64_t base, uint64_t power)
Performs exponentiation for uint64_t.
Definition distance.hpp:258
void Shuffle(size_t size, size_t n, std::unique_ptr< size_t[]> &indicies)
Shuffles the indexes into triplets, attempting to create triplets whose indicies are far from each ot...
Definition distance.cpp:207
The DistanceDeterminationAlgorithm class houses the Distance Determination Algorithm.
Definition distance.hpp:37
PreciseDecimal getDistance(PreciseDecimal r, PreciseDecimal c)
Returns the scaled distance from earth.
Definition distance.cpp:86
decimal radius_
radius_ field instance describes the defined radius of earth.
Definition distance.hpp:104
Camera cam_
cam_ field instance describes the camera settings used for the photo taken
Definition distance.hpp:99
~SphericalDistanceDeterminationAlgorithm()
Definition distance.hpp:48
Vec3 getCenter(Vec3 *spats)
Returns the center of earth as a 3d Vector.
Definition distance.cpp:39
PreciseDecimal getRadius(Vec3 *spats, Vec3 center)
Returns the radius of the calculated "earth" (normalized)
Definition distance.cpp:81
SphericalDistanceDeterminationAlgorithm(decimal radius, Camera &&cam)
Creates a SphericalDeterminationAlgorithm, which deduces the Position vector of a sattelite from Eart...
Definition distance.hpp:47
PositionVector Run(const Points &p) override
Obtains the position of the planet relative to the camera.
Definition distance.cpp:19
A Stage is a data structure that wraps a function, and taking in parameter Input and returning Output...
Definition pipeline.hpp:32
A Vec3 is a mutable object that represents a 3D Vector.
Definition attitude-utils.hpp:47
double decimal
Definition decimal.hpp:15
Definition calibrate.cpp:7
std::vector< Vec2 > Points
The output for Edge Detection Algorithms (edge.hpp/cpp).
Definition style.hpp:21
__float128 PreciseDecimal
Alias for very precise floating point numbers.
Definition style.hpp:17