7 double width_bridge = 0.24;
11 int num_stones = bool_bridge.colwise().count()(0);
13 Eigen::Array<Eigen::Vector3d, Eigen::Dynamic, 1> centers(num_stones);
15 for (
int i = 0; i < bool_bridge.rows(); ++i)
24 Eigen::Array<double, Eigen::Dynamic, 1>::Constant(num_stones, 1, width_bridge*1.5),
25 Eigen::Array<double, Eigen::Dynamic, 1>::Constant(num_stones, 1, initial.
getHeight()),
34 double clearance = 0.1;
38 double width = initial.
getWidth() + c2g(0);
42 addStone(center, width, height,
"lateral");
49 for (
int i = 0; i < 2; ++i)
72 Eigen::Array<SteppingStone, Eigen::Dynamic, 1>
Terrain::addStones(Eigen::Array<Eigen::Vector3d, Eigen::Dynamic, 1> centers, Eigen::Array<double, Eigen::Dynamic, 1> widths, Eigen::Array<double, Eigen::Dynamic, 1> heights, std::string name)
74 int n = centers.rows();
76 if ((widths.rows() != n) || (heights.rows() != n))
78 throw "Arguments have incoherent size.";
81 Eigen::Array<SteppingStone, Eigen::Dynamic, 1> stones;
83 stones.conservativeResize(stones.rows() + n, Eigen::NoChange);
85 for (
int i = 0; i < n; ++i)
87 std::string stone_name = (name.empty()) ? name : name + std::to_string(i);
89 stones(stones.rows() - n + i) =
addStone(centers(i), widths(i), heights(i), stone_name);
105 throw "No stone in the terrain has the name " + name +
".";
const Eigen::Vector3d & getBottomRight() const
const double & getWidth()
const double & getHeight()
const Eigen::Vector3d & getCenter() const
SteppingStone addStone(Eigen::Vector3d center, double width, double height, std::string name=nullptr)
Eigen::Array< SteppingStone, Eigen::Dynamic, 1 > stepping_stones
Eigen::Array< SteppingStone, Eigen::Dynamic, 1 > addStones(Eigen::Array< Eigen::Vector3d, Eigen::Dynamic, 1 > centers, Eigen::Array< double, Eigen::Dynamic, 1 > widths, Eigen::Array< double, Eigen::Dynamic, 1 > heights, std::string name="")
const SteppingStone & getStoneByName(std::string name) const