Libs/Optimize/Constraints/PlaneConstraint.h
Namespaces
| Name | 
|---|
| shapeworks  User usage reporting (telemetry)  | 
Classes
| Name | |
|---|---|
| class | shapeworks::PlaneConstraint | 
Source code
#pragma once
#include <vtkSmartPointer.h>
#include <vector>
#include "Libs/Optimize/Constraints/Constraint.h"
class vtkPlane;
namespace shapeworks {
class PlaneConstraint : public Constraint {
 public:
  bool isViolated(const Eigen::Vector3d &pt) const override;
  void print() const override;
  Eigen::Vector3d getPlaneNormal() { return planeNormal_; }
  void setPlaneNormal(const Eigen::Vector3d &inPlane) { planeNormal_ = inPlane; }
  Eigen::Vector3d getPlanePoint() { return planePoint_; }
  void setPlanePoint(const vnl_vector<double> &point) { planePoint_ = Eigen::Vector3d(point[0], point[1], point[2]); }
  void setPlanePoint(const Eigen::Vector3d &p) { planePoint_ = p; }
  Eigen::Vector3d constraintGradient(const Eigen::Vector3d &pt) const override { return -planeNormal_; }
  std::vector<Eigen::Vector3d> &points() { return points_; };
  double getOffset();
  void setOffset(double offset);
  double constraintEval(const Eigen::Vector3d &pt) const override;
  void updatePlaneFromPoints();
  vtkSmartPointer<vtkPlane> getVTKPlane();
 private:
  Eigen::Vector3d planeNormal_;
  Eigen::Vector3d planePoint_;
  std::vector<Eigen::Vector3d> points_;
  double offset_ = 0;
};
}  // namespace shapeworks
Updated on 2024-03-17 at 12:58:44 -0600