comp-geometry

This documentation is automatically generated by online-judge-tools/verification-helper

View the Project on GitHub Luzhiled/comp-geometry

:warning: src/integer-geometry/unit-test/unit-test-point.cpp

Depends on

Code

#include <cassert>

#include "../point.hpp"

int main() {
  using intgeometry2d::lattice_point;
  using intgeometry2d::i32;

  using LP32 = lattice_point<i32>;
  assert(LP32(4, 8).x() == 4);
  assert(LP32(4, 8).y() == 8);

  assert(LP32(4, 8) == LP32(4, 8));
  assert(LP32(4, 8) != LP32(6, 8));
  assert(LP32(4, 8) != LP32(4, 12));
  assert(LP32(4, 8) != LP32(7, 12));

  assert((LP32(4, 8) + LP32(6, 6)) == LP32(10, 14));
  assert((LP32(4, 8) - LP32(6, 6)) == LP32(-2, 2));

  assert(LP32(4, 8).norm() == 80);
}
#line 1 "src/integer-geometry/unit-test/unit-test-point.cpp"
#include <cassert>

#line 2 "src/integer-geometry/point.hpp"

#line 2 "src/integer-geometry/alias.hpp"

#include <cstddef>
#include <cstdint>

namespace intgeometry2d {
  using isize = std::ptrdiff_t;
  using usize = std::size_t;

  using i32 = std::int_fast32_t;
  using i64 = std::int_fast64_t;
  using u32 = std::uint_fast32_t;
  using u64 = std::uint_fast64_t;
} // intgeometry2d
#line 4 "src/integer-geometry/point.hpp"

namespace intgeometry2d {

  template< typename Z >
  class lattice_point {
    Z x_, y_;

  public:
    lattice_point() {}
    lattice_point(Z x_, Z y_) : x_(x_), y_(y_) {}
    
    Z x() const { return x_; }
    Z y() const { return y_; }

    bool operator==(const lattice_point &p) const { return x_ == p.x_ and y_ == p.y_; }
    bool operator!=(const lattice_point &p) const { return x_ != p.x_ or  y_ != p.y_; }

    lattice_point operator+(lattice_point p) { return lattice_point(x_ + p.x_, y_ + p.y_); }
    lattice_point operator-(lattice_point p) { return lattice_point(x_ - p.x_, y_ - p.y_); }

    Z norm() const { return x_ * x_ + y_ * y_; }
  };

} // intgeometry2d
#line 4 "src/integer-geometry/unit-test/unit-test-point.cpp"

int main() {
  using intgeometry2d::lattice_point;
  using intgeometry2d::i32;

  using LP32 = lattice_point<i32>;
  assert(LP32(4, 8).x() == 4);
  assert(LP32(4, 8).y() == 8);

  assert(LP32(4, 8) == LP32(4, 8));
  assert(LP32(4, 8) != LP32(6, 8));
  assert(LP32(4, 8) != LP32(4, 12));
  assert(LP32(4, 8) != LP32(7, 12));

  assert((LP32(4, 8) + LP32(6, 6)) == LP32(10, 14));
  assert((LP32(4, 8) - LP32(6, 6)) == LP32(-2, 2));

  assert(LP32(4, 8).norm() == 80);
}
Back to top page