CGI/exercise3/include/Point.h
2018-09-06 14:35:43 +02:00

52 lines
1.4 KiB
C++

// This source code is property of the Computer Graphics and Visualization
// chair of the TU Dresden. Do not distribute!
// Copyright (C) CGV TU Dresden - All Rights Reserved
#pragma once
#include <util/OpenMeshUtils.h>
#include "Box.h"
class Point
{
//internal storage of point position
Eigen::Vector3f v0;
//internal storage for a vertex handle
//this vertex handle can be used to optionally identify the vertex in a halfedge mesh data structure instance
OpenMesh::VertexHandle h;
public:
//default constructor
Point();
//construct a point with given point position v0
Point(const Eigen::Vector3f& v0);
//construct a point from vertex v of giben halfedge mesh m
Point(const HEMesh &m, const OpenMesh::VertexHandle& v);
//returns axis aligned bounding box of point
Box ComputeBounds() const;
//returns true if point overlap with box b
bool Overlaps(const Box& b) const;
//returns the point position
Eigen::Vector3f ClosestPoint(const Eigen::Vector3f& p) const;
//returns the squared distance between the query point p and the current point
float SqrDistance(const Eigen::Vector3f& p) const;
//returns the euclidean distance between the query point p and the current point
float Distance(const Eigen::Vector3f& p) const;
//returns a the position of the point as a reference point which is used to sort the primitive in the AABB tree construction
Eigen::Vector3f ReferencePoint() const;
};