JSim 2026.06.01-p(1)
Loading...
Searching...
No Matches
obstacle.hpp
Go to the documentation of this file.
1// Copyright (c) JSim contributors.
2// Open Source Software; you can modify and/or share it under the terms of
3// the LGPLv3 license file in the root directory of this project.
4
5#pragma once
6
7#include <vector>
8
10
11namespace frcsim {
12
20
40 static FieldObstacle makePlane(const Vector3& point_m,
41 const Quaternion& orientation,
42 double restitution = 0.3,
43 double friction = 0.6, int user_id = 0) {
44 FieldObstacle obstacle{};
46 obstacle.boundary.position_m = point_m;
47 obstacle.boundary.orientation = orientation;
48 obstacle.boundary.restitution = restitution;
49 obstacle.boundary.friction_coefficient = friction;
50 obstacle.boundary.user_id = user_id;
51 return obstacle;
52 }
53
73 static FieldObstacle makeBox(const Vector3& center_m,
74 const Vector3& half_extents_m,
75 const Quaternion& orientation = Quaternion(),
76 double restitution = 0.3, double friction = 0.6,
77 int user_id = 0) {
78 FieldObstacle obstacle{};
80 obstacle.boundary.position_m = center_m;
81 obstacle.boundary.half_extents_m = half_extents_m;
82 obstacle.boundary.orientation = orientation;
83 obstacle.boundary.restitution = restitution;
84 obstacle.boundary.friction_coefficient = friction;
85 obstacle.boundary.user_id = user_id;
86 return obstacle;
87 }
88
113 const Vector3& center_m, double radius_m, double half_height_m,
114 const Quaternion& orientation = Quaternion(), double restitution = 0.3,
115 double friction = 0.6, int user_id = 0) {
116 FieldObstacle obstacle{};
118 obstacle.boundary.position_m = center_m;
119 obstacle.boundary.radius_m = radius_m;
120 obstacle.boundary.half_extents_m = Vector3(0.0, 0.0, half_height_m);
121 obstacle.boundary.orientation = orientation;
122 obstacle.boundary.restitution = restitution;
123 obstacle.boundary.friction_coefficient = friction;
124 obstacle.boundary.user_id = user_id;
125 return obstacle;
126 }
127};
128
132 std::vector<FieldObstacle> obstacles{};
133
135 void add(const FieldObstacle& obstacle) { obstacles.push_back(obstacle); }
136};
137
138} // namespace frcsim
Definition vector.hpp:13
@ kBox
Box primitive (axis-aligned or oriented via quaternion).
Definition boundary.hpp:26
@ kPlane
Infinite plane constraint primitive.
Definition boundary.hpp:24
@ kCylinder
Cylindrical primitive (for posts, exclusion zones, etc.).
Definition boundary.hpp:28
Collision or constraint boundary definition used by PhysicsWorld.
Definition boundary.hpp:51
int user_id
Application-defined identifier for scenario-specific routing.
Definition boundary.hpp:107
double friction_coefficient
Tangential friction coefficient for contact response.
Definition boundary.hpp:100
Vector3 position_m
World-space boundary origin/center in meters.
Definition boundary.hpp:64
BoundaryType type
Geometry primitive type that determines shape semantics.
Definition boundary.hpp:53
double restitution
Coefficient of restitution (bounce response).
Definition boundary.hpp:93
double radius_m
Radius in meters for cylindrical or radial primitives.
Definition boundary.hpp:85
Vector3 half_extents_m
Half extents in meters for box-like boundaries.
Definition boundary.hpp:78
Quaternion orientation
World-space boundary orientation.
Definition boundary.hpp:71
Mutable collection helper for assembling obstacle sets.
Definition obstacle.hpp:130
void add(const FieldObstacle &obstacle)
Appends a single obstacle.
Definition obstacle.hpp:135
std::vector< FieldObstacle > obstacles
Definition obstacle.hpp:132
Convenience wrapper for constructing EnvironmentalBoundary-based obstacles.
Definition obstacle.hpp:17
static FieldObstacle makePlane(const Vector3 &point_m, const Quaternion &orientation, double restitution=0.3, double friction=0.6, int user_id=0)
Creates an infinite plane obstacle.
Definition obstacle.hpp:40
EnvironmentalBoundary boundary
Definition obstacle.hpp:19
static FieldObstacle makeCylinder(const Vector3 &center_m, double radius_m, double half_height_m, const Quaternion &orientation=Quaternion(), double restitution=0.3, double friction=0.6, int user_id=0)
Creates an oriented cylinder obstacle aligned to local Z.
Definition obstacle.hpp:112
static FieldObstacle makeBox(const Vector3 &center_m, const Vector3 &half_extents_m, const Quaternion &orientation=Quaternion(), double restitution=0.3, double friction=0.6, int user_id=0)
Creates an oriented box obstacle.
Definition obstacle.hpp:73
Unit-quaternion rotation representation and rotation algebra helpers.
Definition quaternion.hpp:25
3D vector utility used throughout JSim physics.
Definition vector.hpp:22