diff options
author | Adrian Kummerlaender | 2016-05-08 21:05:42 +0200 |
---|---|---|
committer | Adrian Kummerlaender | 2016-05-08 21:05:42 +0200 |
commit | 9a4b7db288446c279e8920d8575d52f5b5be6e7f (patch) | |
tree | dfec0f94eae495a6da095ee48b9932549a70ad58 | |
parent | 301c689285d49a969c335cd93132ee84ca064ddb (diff) | |
download | voronoi-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.cc | 14 |
1 files changed, 9 insertions, 5 deletions
@@ -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); } ); |