aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Kummerlaender2016-05-08 21:05:42 +0200
committerAdrian Kummerlaender2016-05-08 21:05:42 +0200
commit9a4b7db288446c279e8920d8575d52f5b5be6e7f (patch)
treedfec0f94eae495a6da095ee48b9932549a70ad58
parent301c689285d49a969c335cd93132ee84ca064ddb (diff)
downloadvoronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.tar
voronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.tar.gz
voronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.tar.bz2
voronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.tar.lz
voronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.tar.xz
voronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.tar.zst
voronoi-9a4b7db288446c279e8920d8575d52f5b5be6e7f.zip
Implement _manhattan metric_
Changed metric parameter types to int as `std::size_t` behaved weirdly during math operations.
-rw-r--r--example.cc14
1 files changed, 9 insertions, 5 deletions
diff --git a/example.cc b/example.cc
index e4d7420..a62fc48 100644
--- a/example.cc
+++ b/example.cc
@@ -3,14 +3,18 @@
#include <cmath>
#include <algorithm>
-double metric(std::size_t refX, std::size_t refY, std::size_t x, std::size_t y) {
+double euclidean_metric(int refX, int refY, int x, int y) {
return std::sqrt(
- (refX - x)*(refX - x) + (refY - y)*(refY - y)
+ std::pow(refX - x, 2) + std::pow(refY - y, 2)
);
}
+int manhattan_metric(int refX, int refY, int x, int y) {
+ return std::abs(refX - x) + std::abs(refY - y);
+}
+
int main(int, char*[]) {
- using refpos = std::tuple<std::size_t, std::size_t, imgen::color>;
+ using refpos = std::tuple<int, int, imgen::color>;
std::array<refpos, 5> ref{
refpos(100, 50, imgen::color(255, 0, 0 )),
@@ -29,8 +33,8 @@ int main(int, char*[]) {
ref.begin(),
ref.end(),
[x, y](const refpos& a, const refpos& b) -> bool {
- return metric(std::get<0>(a), std::get<1>(a), x, y)
- < metric(std::get<0>(b), std::get<1>(b), x, y);
+ return manhattan_metric(std::get<0>(a), std::get<1>(a), x, y)
+ < manhattan_metric(std::get<0>(b), std::get<1>(b), x, y);
}
);