PolyFEM
Loading...
Searching...
No Matches
PolygonUtils.hpp
Go to the documentation of this file.
1#pragma once
2
3#include <Eigen/Dense>
4#include <vector>
5
6namespace polyfem
7{
8
9 namespace mesh
10 {
20 void clip_polygon_by_half_plane(const Eigen::MatrixXd &P, const Eigen::RowVector2d &q1,
21 const Eigen::RowVector2d &q2, Eigen::MatrixXd &result);
22
29 void compute_visibility_kernel(const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV);
30
39 bool is_star_shaped(const Eigen::MatrixXd &IV, Eigen::RowVector3d &bary);
40
48 void offset_polygon(const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV, double eps);
49
59 int is_inside(const Eigen::MatrixXd &IV, const Eigen::MatrixXd &Q, std::vector<bool> &inside);
60
68 void sample_polygon(const Eigen::MatrixXd &IV, int num_samples, Eigen::MatrixXd &S);
69 } // namespace mesh
70} // namespace polyfem
void clip_polygon_by_half_plane(const Eigen::MatrixXd &P, const Eigen::RowVector2d &q1, const Eigen::RowVector2d &q2, Eigen::MatrixXd &result)
Clip a polygon by a half-plane.
void sample_polygon(const Eigen::MatrixXd &IV, int num_samples, Eigen::MatrixXd &S)
Sample points on a polygon, evenly spaced from each other.
void offset_polygon(const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV, double eps)
Compute offset polygon.
void compute_visibility_kernel(const Eigen::MatrixXd &IV, Eigen::MatrixXd &OV)
Determine the kernel of the given polygon.
bool is_star_shaped(const Eigen::MatrixXd &IV, Eigen::RowVector3d &bary)
Determine whether a polygon is star-shaped or not.
int is_inside(const Eigen::MatrixXd &IV, const Eigen::MatrixXd &Q, std::vector< bool > &inside)
Compute whether points are inside a polygon.