Program Listing for File rp_objective.h

Return to documentation for file (include/fields2cover/objectives/rp_obj/rp_objective.h)

//=============================================================================
//    Copyright (C) 2021-2024 Wageningen University - All Rights Reserved
//                     Author: Gonzalo Mier
//                        BSD-3 License
//=============================================================================

#pragma once
#ifndef FIELDS2COVER_OBJECTIVES_RP_OBJECTIVE_H_
#define FIELDS2COVER_OBJECTIVES_RP_OBJECTIVE_H_

#include <vector>
#include "fields2cover/types.h"
#include "fields2cover/objectives/base_objective.h"

namespace f2c::obj {

class RPObjective : public BaseObjective<RPObjective> {
 public:
  virtual double computeCost(const F2CPoint& p1, const F2CPoint& p2);

  virtual double computeCost(
      const F2CPoint& p1, double ang1, const F2CPoint& p2);

  virtual double computeCost(
      const F2CPoint& p1, double ang1, const F2CPoint& p2, double ang2);  // = 0

  virtual double computeCost(
      const F2CPoint& p1, const F2CPoint& p2, double ang2);

  virtual double computeCost(const F2CSwath& s, const F2CPoint& p);

  virtual double computeCost(const F2CSwath& s1, const F2CSwath& s2);

  virtual double computeCost(const F2CSwath& s, const F2CPoint& p, double ang);

  virtual double computeCost(const F2CPoint& p, const F2CSwath& s);

  virtual double computeCost(const F2CPoint& p, double ang, const F2CSwath& s);

  virtual double computeCost(const std::vector<F2CPoint>& ps);

  virtual double computeCost(const F2CMultiPoint& ps);

  virtual double computeCost(const F2CSwath& s, const F2CMultiPoint& ps);

  virtual double computeCost(const F2CSwaths& s, const F2CMultiPoint& ps);

  virtual double computeCost(const F2CMultiPoint& ps, const F2CSwath& s);

  virtual double computeCost(const F2CMultiPoint& ps, const F2CSwaths& s);

  virtual double computeCost(const F2CSwath& s);

  virtual double computeCost(const F2CSwaths& swaths);

  virtual double computeCost(const F2CRoute& r);
};


}  // namespace f2c::obj

#endif  // FIELDS2COVER_OBJECTIVES_RP_OBJECTIVE_H_