Showing preview only (347K chars total). Download the full file or copy to clipboard to get everything.
Repository: snape/RVO2-3D
Branch: main
Commit: 10eb1dae058e
Files: 77
Total size: 327.3 KB
Directory structure:
gitextract_3w42ou2q/
├── .bazelignore
├── .bazelrc
├── .bazelversion
├── .bazelversion.license
├── .buildifier.json
├── .buildifier.json.license
├── .clang-format
├── .clang-tidy
├── .devcontainer/
│ ├── devcontainer.json
│ └── devcontainer.json.license
├── .dockerignore
├── .editorconfig
├── .gitattributes
├── .github/
│ ├── CODEOWNERS
│ ├── CODE_OF_CONDUCT.md
│ ├── SECURITY.md
│ ├── SUPPORT.md
│ └── workflows/
│ ├── ci.yml
│ └── codeql.yml
├── .gitignore
├── .pre-commit-config.yaml
├── .vscode/
│ ├── extensions.json
│ ├── extensions.json.license
│ ├── settings.json
│ └── settings.json.license
├── .yamllint.yaml
├── .zenodo.json
├── .zenodo.json.license
├── BUILD.bazel
├── Brewfile
├── CITATION.cff
├── CMakeLists.txt
├── CMakePresets.json
├── CMakePresets.json.license
├── CPPLINT.cfg
├── CTestConfig.cmake
├── Dockerfile
├── LICENSE
├── LICENSES/
│ ├── Apache-2.0.txt
│ ├── CC-BY-4.0.txt
│ ├── CC-BY-SA-4.0.txt
│ └── CC0-1.0.txt
├── MODULE.bazel
├── QUALITY_DECLARATION.md
├── README.md
├── RVO3D.pc.in
├── RVO3DConfig.cmake.in
├── compose.yaml
├── doc/
│ ├── CMakeLists.txt
│ ├── footer.html
│ ├── footer.html.license
│ ├── header.html
│ ├── header.html.license
│ └── stylesheet.css
├── examples/
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ └── Sphere.cc
├── include-what-you-use.imp
├── include-what-you-use.imp.license
├── package.xml
├── renovate.json
├── renovate.json.license
├── requirements.txt
├── src/
│ ├── Agent.cc
│ ├── Agent.h
│ ├── BUILD.bazel
│ ├── CMakeLists.txt
│ ├── KdTree.cc
│ ├── KdTree.h
│ ├── Plane.cc
│ ├── Plane.h
│ ├── RVO.h
│ ├── RVOSimulator.cc
│ ├── RVOSimulator.h
│ ├── Vector3.cc
│ └── Vector3.h
└── triggers
================================================
FILE CONTENTS
================================================
================================================
FILE: .bazelignore
================================================
# -*- mode: gitignore; -*-
# vi: set ft=gitignore:
#
# .bazelignore
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
_build/
.github/
.idea/
.reuse/
cmake-build-*/
================================================
FILE: .bazelrc
================================================
#
# .bazelrc
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
build --force_pic=true
build --remote_upload_local_results=false
build --sandbox_default_allow_network=false
build:macos --apple_generate_dsym=true
build:macos --apple_crosstool_top=@local_config_apple_cc//:toolchain
build:macos --apple_platform_type=macos
common --enable_platform_specific_config=true
common --heap_dump_on_oom=true
test --test_verbose_timeout_warnings=true
try-import %workspace%/.user.bazelrc
================================================
FILE: .bazelversion
================================================
9.x
================================================
FILE: .bazelversion.license
================================================
.bazelversion
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .buildifier.json
================================================
{
"type": "auto",
"mode": "fix",
"lint": "fix",
"warningsList": [
"all"
]
}
================================================
FILE: .buildifier.json.license
================================================
.buildifier.json
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .clang-format
================================================
# -*- mode: yaml; -*-
# vi: set ft=yaml:
#
# .clang-format
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
BasedOnStyle: Google
PointerAlignment: Right
================================================
FILE: .clang-tidy
================================================
# -*- mode: yaml; -*-
# vi: set ft=yaml:
#
# .clang-tidy
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
Checks: >
bugprone-*,
cert-*,
clang-analyzer-*,
clang-diagnostic-*,
cppcoreguidelines-*,
google-*,
misc-*,
openmp-*,
performance-*,
portability-*,
readability-*,
-bugprone-easily-swappable-parameters,
-bugprone-exception-escape,
-bugprone-narrowing-conversions,
-cppcoreguidelines-avoid-magic-numbers,
-cppcoreguidelines-narrowing-conversions,
-cppcoreguidelines-pro-bounds-constant-array-index,
-cppcoreguidelines-pro-bounds-pointer-arithmetic,
-misc-no-recursion,
-readability-identifier-length,
-readability-magic-numbers
CheckOptions:
- key: misc-non-private-member-variables-in-classes.IgnoreClassesWithAllMemberVariablesBeingPublic
value: 1
FormatStyle: file
HeaderFilterRegex: '.*'
WarningsAsErrors: '*'
================================================
FILE: .devcontainer/devcontainer.json
================================================
{
"name": "RVO2-3D",
"customizations": {
"vscode": {
"extensions": [
"bazelbuild.vscode-bazel",
"editorconfig.editorconfig",
"ms-vscode.cmake-tools",
"ms-vscode.cpptools",
"ms-vscode.vscode-markdown-notebook",
"ms-vscode-remote.remote-containers",
"redhat.vscode-yaml"
],
"settings": {
"cmake.buildDirectory": "${workspaceFolder}/_build",
"cmake.preferredGenerators": [
"Ninja Multi-Config",
"Ninja"
]
}
}
},
"containerUser": "ubuntu",
"dockerComposeFile": "../compose.yaml",
"overrideCommand": true,
"service": "dev",
"workspaceFolder": "/workspace"
}
================================================
FILE: .devcontainer/devcontainer.json.license
================================================
devcontainer.json
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .dockerignore
================================================
# -*- mode: gitignore; -*-
# vi: set ft=gitignore:
#
# .dockerignore
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
_build/
.idea/
.user.bazelrc
bazel-*
cmake-build-*/
CMakeUserPresets.json
================================================
FILE: .editorconfig
================================================
# -*- mode: editorconfig; -*-
# vi: set ft=editorconfig:
#
# .editorconfig
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
root = true
[*]
charset = utf-8
end_of_line = lf
indent_size = 2
indent_style = space
insert_final_newline = true
max_line_length = 80
trim_trailing_whitespace = true
[*.bazel]
indent_size = 4
[*.md]
trim_trailing_whitespace = false
[.bazelignore]
indent_size = 4
[.bazelrc]
indent_size = 4
[Brewfile]
indent_size = 4
[dep5]
indent_size = 1
================================================
FILE: .gitattributes
================================================
# -*- mode: gitattributes; -*-
# vi: set ft=gitattributes:
#
# .gitattributes
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
[attr]whitespace-0 whitespace=tab-in-indent,trailing-space
[attr]whitespace-1 whitespace=tab-in-indent,tabwidth=1,trailing-space
[attr]whitespace-2 whitespace=tab-in-indent,tabwidth=2,trailing-space
[attr]whitespace-4 whitespace=tab-in-indent,tabwidth=4,trailing-space
[attr]whitespace-md whitespace=-blank-at-eol,blank-at-eof,tab-in-indent
* text=auto
*.bazel text diff=python linguist-language=starlark whitespace-4
*.cc text diff=cpp linguist-language=c++ whitespace-2
*.cff text linguist-documentation whitespace-2
*.cfg text whitespace-2
*.cmake text whitespace-2
*.cmake.in text whitespace-2
*.css text diff=css linguist-documentation whitespace=trailing-space
*.h text diff=cpp linguist-language=c++ whitespace-2
*.html text diff=html linguist-documentation whitespace=trailing-space
*.imp text linguist-language=json whitespace-2
*.json text whitespace-2
*.license text linguist-documentation whitespace-0
*.md text diff=markdown whitespace-md
*.pc.in text whitespace-2
*.txt text
*.xml text
*.yaml text whitespace-2
*.yml text whitespace-2
.bazelignore text whitespace-4
.bazelrc text whitespace-4
.bazelversion text whitespace-4
.clang-format text whitespace-2
.clang-tidy text whitespace-2
.dockerignore text whitespace-2
.editorconfig text whitespace-2
.gitattributes text export-ignore whitespace-2
.gitignore text export-ignore whitespace-2
.zenodo.json export-ignore linguist-documentation
Brewfile text diff=ruby export-ignore whitespace-4
CMakeLists.txt whitespace-2
CODEOWNERS text whitespace-2
dep5 text linguist-documentation whitespace-1
Dockerfile text whitespace-2
LICENSE text linguist-documentation linguist-vendored whitespace-0
README.md linguist-documentation
requirements.txt whitespace-2
triggers whitespace-0
.github/** export-ignore
.github/**/*.md linguist-documentation
LICENSES/**/*.txt linguist-documentation linguist-vendored whitespace-0
================================================
FILE: .github/CODEOWNERS
================================================
# -*- mode: gitignore; -*-
# vi: set ft=gitignore:
#
# CODEOWNERS
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
* @snape
================================================
FILE: .github/CODE_OF_CONDUCT.md
================================================
<!--
CODE_OF_CONDUCT.md
RVO2-3D Library
SPDX-FileCopyrightText: 2014 Coraline Ada Ehmke
SPDX-License-Identifier: CC-BY-4.0
Creative Commons Attribution 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
-->
# Contributor Covenant Code of Conduct
## Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
## Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances
of any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or email address,
without their explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
## Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for
moderation decisions when appropriate.
## Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail
address, posting via an official social media account, or acting as an
appointed representative at an online or offline event.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement. All complaints
will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
## Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
### 1. Correction
**Community Impact**: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
**Consequence**: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
### 2. Warning
**Community Impact**: A violation through a single incident or series of
actions.
**Consequence**: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
### 3. Temporary Ban
**Community Impact**: A serious violation of community standards, including
sustained inappropriate behavior.
**Consequence**: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
### 4. Permanent Ban
**Community Impact**: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
**Consequence**: A permanent ban from any sort of public interaction within the
community.
## Attribution
This Code of Conduct is adapted from the
[Contributor Covenant](https://www.contributor-covenant.org), version 2.1,
available at
<https://www.contributor-covenant.org/version/2/1/code_of_conduct.html>.
Community Impact Guidelines were inspired by
[Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).
For answers to common questions about this code of conduct, see the FAQ at
<https://www.contributor-covenant.org/faq>. Translations are available at
<https://www.contributor-covenant.org/translations>.
================================================
FILE: .github/SECURITY.md
================================================
<!--
SECURITY.md
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: CC-BY-SA-4.0
Creative Commons Attribution-ShareAlike 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* ShareAlike -- If you remix, transform, or build upon the material, you must
distribute your contributions under the same license as the original
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
-->
# Security Policy
## Supported Versions
The current release will be supported with security updates when practical.
## Reporting a Vulnerability
Please send all vulnerability reports to
[geom@cs.unc.edu](mailto:geom@cs.unc.edu).
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .github/SUPPORT.md
================================================
<!--
SUPPORT.md
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: CC-BY-SA-4.0
Creative Commons Attribution-ShareAlike 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* ShareAlike -- If you remix, transform, or build upon the material, you must
distribute your contributions under the same license as the original
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
-->
# Support Resources
Please send all bug reports to [geom@cs.unc.edu](mailto:geom@cs.unc.edu).
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .github/workflows/ci.yml
================================================
#
# ci.yml
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
name: ci
on: # yamllint disable-line rule:truthy
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: '0 5 * * *'
jobs:
bazel-almalinux:
name: bazel almalinux amd64
runs-on: ubuntu-latest
container: almalinux:10
steps:
- name: setup
run: |
dnf makecache -q --refresh || (sleep 15; dnf makecache -q --refresh)
dnf upgrade -q -y
dnf install -q -y \
ca-certificates \
gcc-c++ \
git \
python3 \
wget \
which
dnf clean all
rm -rf /var/cache/yum
wget -qO /usr/local/bin/bazelisk \
https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
chmod +x /usr/local/bin/bazelisk
ln -s /usr/local/bin/bazelisk /usr/local/bin/bazel
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: bash
bazel-alpine:
name: bazel alpine linux amd64
runs-on: ubuntu-latest
container: alpine:3
steps:
- name: setup
run: |
apk upgrade -q --no-cache
apk add -q --no-cache \
ca-certificates \
g++ \
git \
libc6-compat \
python3 \
wget \
which
wget -qO /usr/local/bin/bazelisk \
https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
chmod +x /usr/local/bin/bazelisk
ln -s /usr/local/bin/bazelisk /usr/local/bin/bazel
shell: sh
- name: checkout
uses: actions/checkout@v6
# - name: build test package
# run: bazel test --flaky_test_attempts=3 ...
# shell: sh
bazel-arch:
name: bazel arch linux amd64
runs-on: ubuntu-latest
container: archlinux:latest
steps:
- name: setup
run: |
pacman --needed --noconfirm --noprogressbar -S -u -y \
ca-certificates \
gcc \
git \
python \
wget \
which
rm -rf \
/var/cache/pacman/pkg/* \
/var/lib/pacman/sync/*
wget -qO /usr/local/bin/bazelisk \
https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
chmod +x /usr/local/bin/bazelisk
ln -s /usr/local/bin/bazelisk /usr/local/bin/bazel
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: bash
bazel-fedora:
name: bazel fedora linux amd64
runs-on: ubuntu-latest
container: fedora:44
steps:
- name: setup
run: |
dnf makecache -q --refresh || (sleep 15; dnf makecache -q --refresh)
dnf upgrade -q -y
dnf install -q -y \
ca-certificates \
gcc-c++ \
git \
python3 \
wget \
which
dnf clean all
rm -rf /var/cache/yum
wget -qO /usr/local/bin/bazelisk \
https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
chmod +x /usr/local/bin/bazelisk
ln -s /usr/local/bin/bazelisk /usr/local/bin/bazel
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: bash
bazel-macos:
name: bazel macos arm64
runs-on: macos-15
steps:
- name: checkout
uses: actions/checkout@v6
- name: setup
run: |
brew update -q
brew bundle install -q
brew cleanup -q -s
rm -rf $(brew --cache)
env:
HOMEBREW_NO_ANALYTICS: 1
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
shell: zsh -efuo pipefail {0}
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: zsh -efuo pipefail {0}
bazel-opensuse:
name: bazel opensuse leap amd64
runs-on: ubuntu-latest
container: opensuse/leap:16.0
steps:
- name: setup
run: |
zypper -n -q ref || (sleep 15; zypper -n -q ref)
zypper -n -q up
zypper -n -q in --no-recommends \
ca-certificates \
gcc-c++ \
git \
python3 \
wget \
which
zypper -n -q cc -a
wget -qO /usr/local/bin/bazelisk \
https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-linux-amd64
chmod +x /usr/local/bin/bazelisk
ln -s /usr/local/bin/bazelisk /usr/local/bin/bazel
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: bash
bazel-ubuntu:
name: bazel ubuntu amd64
runs-on: ubuntu-latest
container: ubuntu:24.04
steps:
- name: setup
run: |
apt-get -qq -o APT::Acquire::Retries=4 update \
|| (sleep 15; apt-get -qq -o APT::Acquire::Retries=4 update)
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
upgrade
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
--no-install-recommends install \
ca-certificates \
g++ \
git \
python-is-python3 \
wget
apt-get -qq -o Dpkg::Use-Pty=0 autoremove
rm -rf /var/lib/apt/lists/*
wget -q https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-amd64.deb
dpkg -i bazelisk-amd64.deb
rm -rf bazelisk-amd64.deb
env:
DEBIAN_FRONTEND: noninteractive
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: bash
bazel-ubuntu-arm64:
name: bazel ubuntu arm64
runs-on: ubuntu-24.04-arm
container: ubuntu:24.04
steps:
- name: setup
run: |
apt-get -qq -o APT::Acquire::Retries=4 update \
|| (sleep 15; apt-get -qq -o APT::Acquire::Retries=4 update)
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
upgrade
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
--no-install-recommends install \
ca-certificates \
g++ \
git \
python-is-python3 \
wget
apt-get -qq -o Dpkg::Use-Pty=0 autoremove
rm -rf /var/lib/apt/lists/*
wget -q https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-arm64.deb
dpkg -i bazelisk-arm64.deb
rm -rf bazelisk-arm64.deb
env:
DEBIAN_FRONTEND: noninteractive
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: bazel test --flaky_test_attempts=3 ...
shell: bash
cmake-almalinux:
name: cmake almalinux amd64
runs-on: ubuntu-latest
container: almalinux:10
steps:
- name: setup
run: |
dnf makecache -q --refresh || (sleep 15; dnf makecache -q --refresh)
dnf upgrade -q -y
dnf install -q -y \
ca-certificates \
cmake \
dnf-plugins-core \
gcc-c++ \
git \
glibc-langpack-en \
graphviz \
make \
pkgconf-pkg-config \
rpm-build
dnf config-manager --set-enabled crb
dnf install -q -y doxygen
dnf clean all
rm -rf /var/cache/yum
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G RPM
cpack -G RPM --config CPackSourceConfig.cmake
shell: bash
cmake-alpine:
name: cmake alpine linux amd64
runs-on: ubuntu-latest
container: alpine:3
steps:
- name: setup
run: |
apk upgrade -q --no-cache
apk add -q --no-cache \
ca-certificates \
cmake \
doxygen \
g++ \
git \
graphviz \
make \
pkgconf
shell: sh
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G TGZ
cpack -G TGZ --config CPackSourceConfig.cmake
shell: sh
cmake-arch:
name: cmake arch linux amd64
runs-on: ubuntu-latest
container: archlinux:latest
steps:
- name: setup
run: |
pacman --needed --noconfirm --noprogressbar -S -u -y \
ca-certificates \
cmake \
doxygen \
gcc \
git \
graphviz \
make \
pkgconf
rm -rf \
/var/cache/pacman/pkg/* \
/var/lib/pacman/sync/*
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G TGZ
cpack -G TGZ --config CPackSourceConfig.cmake
shell: bash
cmake-fedora:
name: cmake fedora linux amd64
runs-on: ubuntu-latest
container: fedora:44
steps:
- name: setup
run: |
dnf makecache -q --refresh || (sleep 15; dnf makecache -q --refresh)
dnf upgrade -q -y
dnf install -q -y \
ca-certificates \
cmake \
doxygen \
gcc-c++ \
git \
glibc-langpack-en \
graphviz \
make \
pkgconf-pkg-config \
rpm-build
dnf clean all
rm -rf /var/cache/yum
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G RPM
cpack -G RPM --config CPackSourceConfig.cmake
shell: bash
cmake-macos:
name: cmake macos arm64
runs-on: macos-15
steps:
- name: checkout
uses: actions/checkout@v6
- name: setup
run: |
brew update -q
brew bundle install -q
brew cleanup -q -s
rm -rf $(brew --cache)
env:
HOMEBREW_NO_ANALYTICS: 1
HOMEBREW_NO_AUTO_UPDATE: 1
HOMEBREW_NO_INSTALL_CLEANUP: 1
shell: zsh -efuo pipefail {0}
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=OFF \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G TGZ
cpack -G TGZ --config CPackSourceConfig.cmake
shell: zsh -efuo pipefail {0}
cmake-opensuse:
name: cmake opensuse leap amd64
runs-on: ubuntu-latest
container: opensuse/leap:16.0
steps:
- name: setup
run: |
zypper -n -q ref || (sleep 15; zypper -n -q ref)
zypper -n -q up
zypper -n -q in --no-recommends \
ca-certificates \
cmake \
doxygen \
gcc-c++ \
git \
graphviz \
make \
pkgconf \
rpm-build
zypper -n -q cc -a
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G RPM
cpack -G RPM --config CPackSourceConfig.cmake
shell: bash
cmake-ubuntu:
name: cmake ubuntu amd64
runs-on: ubuntu-latest
container: ubuntu:24.04
steps:
- name: setup
run: |
apt-get -qq -o APT::Acquire::Retries=4 update \
|| (sleep 15; apt-get -qq -o APT::Acquire::Retries=4 update)
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
upgrade
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
--no-install-recommends install \
ca-certificates \
cmake \
doxygen \
dpkg-dev \
file \
g++ \
git \
graphviz \
make \
pkgconf
apt-get -qq -o Dpkg::Use-Pty=0 autoremove
rm -rf /var/lib/apt/lists/*
env:
DEBIAN_FRONTEND: noninteractive
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G DEB
cpack -G DEB --config CPackSourceConfig.cmake
shell: bash
cmake-ubuntu-arm64:
name: cmake ubuntu arm64
runs-on: ubuntu-24.04-arm
container: ubuntu:24.04
steps:
- name: setup
run: |
apt-get -qq -o APT::Acquire::Retries=4 update \
|| (sleep 15; apt-get -qq -o APT::Acquire::Retries=4 update)
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
upgrade
apt-get -qq -o APT::Acquire::Retries=4 -o Dpkg::Use-Pty=0 \
--no-install-recommends install \
ca-certificates \
cmake \
doxygen \
dpkg-dev \
file \
g++ \
git \
graphviz \
make \
pkgconf
apt-get -qq -o Dpkg::Use-Pty=0 autoremove
rm -rf /var/lib/apt/lists/*
env:
DEBIAN_FRONTEND: noninteractive
shell: bash
- name: checkout
uses: actions/checkout@v6
- name: build test package
run: |
mkdir _build
cd _build
cmake \
-DBUILD_DOCUMENTATION:BOOL=ON \
-DBUILD_TESTING:BOOL=ON \
-DCMAKE_INSTALL_PREFIX:PATH=install \
-DENABLE_HARDENING:BOOL=ON \
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON \
-DENABLE_OPENMP:BOOL=ON \
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF \
-DWARNINGS_AS_ERRORS:BOOL=ON \
--warn-uninitialized \
..
cmake --build .
ctest . --repeat after-timeout:3
cmake --install .
cpack -G DEB
cpack -G DEB --config CPackSourceConfig.cmake
shell: bash
cmake-windows:
name: cmake windows amd64
runs-on: windows-latest
steps:
- name: checkout
uses: actions/checkout@v6
- name: setup
run: |
choco upgrade cmake.install -r -y --install-arguments=ADD_CMAKE_TO_PATH=System `
--no-progress
shell: pwsh
- name: build test package
run: |
mkdir _build
cd _build
cmake `
-DBUILD_DOCUMENTATION:BOOL=ON `
-DBUILD_TESTING:BOOL=ON `
-DCMAKE_INSTALL_PREFIX:PATH=install `
-DENABLE_HARDENING:BOOL=ON `
-DENABLE_INTERPROCEDURAL_OPTIMIZATION:BOOL=ON `
-DENABLE_OPENMP:BOOL=OFF `
-DOUTPUT_TIME_AND_POSITIONS:BOOL=OFF `
-DWARNINGS_AS_ERRORS:BOOL=ON `
--warn-uninitialized `
..
cmake --build . --config Release
ctest . --build-config Release --repeat after-timeout:3
cmake --install .
cpack -C Release -G ZIP
cpack -C Release -G ZIP --config CPackSourceConfig.cmake
shell: pwsh
================================================
FILE: .github/workflows/codeql.yml
================================================
#
# codeql.yml
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
name: codeql
on: # yamllint disable-line rule:truthy
push:
branches:
- main
pull_request:
branches:
- main
schedule:
- cron: '0 6 * * 3'
jobs:
analyze:
name: analyze
runs-on: ubuntu-latest
steps:
- name: checkout
uses: actions/checkout@v6
- name: initialize codeql
uses: github/codeql-action/init@v4
with:
languages: cpp
- name: autobuild
uses: github/codeql-action/autobuild@v4
- name: perform codeql analysis
uses: github/codeql-action/analyze@v4
================================================
FILE: .gitignore
================================================
# -*- mode: gitignore; -*-
# vi: set ft=gitignore:
#
# .gitignore
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
/_build/
/.idea/
/.user.bazelrc
/.venv/
/bazel-*
/cmake-build-*/
/CMakeUserPresets.json
/MODULE.bazel.lock
================================================
FILE: .pre-commit-config.yaml
================================================
---
repos:
- repo: https://codeberg.org/fsfe/reuse-tool
rev: v6.2.0
hooks:
- id: reuse-lint-file
- repo: https://github.com/adrienverge/yamllint
rev: v1.38.0
hooks:
- id: yamllint
args:
- --format
- parsable
- repo: https://github.com/codespell-project/codespell
rev: v2.4.2
hooks:
- id: codespell
- repo: https://github.com/pocc/pre-commit-hooks
rev: master
hooks:
- id: clang-format
entry: >-
sh -c 'set -eu;
if [ "$(uname -s)" = Darwin ]; then
PATH="/opt/homebrew/opt/llvm/bin:${PATH}";
fi;
exec clang-format-hook "$@"' --
- id: cpplint
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v6.0.0
hooks:
- id: check-case-conflict
- id: check-json
- id: check-merge-conflict
- id: check-yaml
- id: end-of-file-fixer
- id: trailing-whitespace
exclude: (?i)\.(markdown|md)$
- repo: https://github.com/rhysd/actionlint
rev: v1.7.12
hooks:
- id: actionlint
args:
- -oneline
================================================
FILE: .vscode/extensions.json
================================================
{
"recommendations": [
"bazelbuild.vscode-bazel",
"editorconfig.editorconfig",
"ms-vscode.cmake-tools",
"ms-vscode.cpptools",
"ms-vscode.vscode-markdown-notebook",
"ms-vscode-remote.remote-containers",
"redhat.vscode-yaml"
]
}
================================================
FILE: .vscode/extensions.json.license
================================================
extensions.json
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .vscode/settings.json
================================================
{
"cmake.buildDirectory": "${workspaceFolder}/_build",
"cmake.preferredGenerators": [
"Ninja Multi-Config",
"Ninja"
]
}
================================================
FILE: .vscode/settings.json.license
================================================
settings.json
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: .yamllint.yaml
================================================
#
# .yamllint.yaml
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
extends: default
rules:
line-length:
max: 80
level: warning
================================================
FILE: .zenodo.json
================================================
{
"upload_type": "software",
"title": "Optimal Reciprocal Collision Avoidance in Three Dimensions",
"creators": [
{
"name": "Van den Berg, Jur",
"affiliation": "University of North Carolina at Chapel Hill"
},
{
"name": "Guy, Stephen J.",
"affiliation": "University of North Carolina at Chapel Hill",
"orcid": "0000-0001-8986-5817"
},
{
"name": "Snape, Jamie",
"affiliation": "University of North Carolina at Chapel Hill",
"orcid": "0000-0002-3326-9765"
},
{
"name": "Lin, Ming C.",
"affiliation": "University of North Carolina at Chapel Hill",
"orcid": "0000-0003-3736-6949"
},
{
"name": "Manocha, Dinesh",
"affiliation": "University of North Carolina at Chapel Hill",
"orcid": "0000-0001-7047-9801"
}
],
"description": "We present a formal approach to reciprocal collision avoidance, where multiple independent mobile robots or agents need to avoid collisions with each other without communication among agents while moving in a common workspace. Our formulation, optimal reciprocal collision avoidance (ORCA), provides sufficient conditions for collision-free motion by letting each agent take half of the responsibility of avoiding pairwise collisions. Selecting the optimal action for each agent is reduced to solving a low-dimensional linear program, and we prove that the resulting motions are smooth. We test our optimal reciprocal collision avoidance approach on several dense and complex simulation scenarios workspaces involving thousands of agents, and compute collision-free actions for all of them in only a few milliseconds. RVO2-3D Library is an open-source C++98 implementation of our algorithm in three dimensions. It has a simple API for third-party applications. The user specifies agents and their preferred velocities. The simulation is performed step-by-step via a simple call to the library. The simulation is fully accessible and manipulable during runtime. The library exploits multiple processors if they are available using OpenMP for efficient parallelization of the simulation.",
"access_right": "open",
"license": {
"id": "Apache-2.0",
"title": "Apache License 2.0",
"url": "https://www.apache.org/licenses/LICENSE-2.0"
},
"keywords": [
"collision avoidance",
"mobile robots",
"motion planning",
"multi-robot systems",
"navigation"
],
"grants": [
{
"id": "10.13039/100000001::0636208"
},
{
"id": "10.13039/100000001::0917040"
},
{
"id": "10.13039/100000001::0904990"
}
]
}
================================================
FILE: .zenodo.json.license
================================================
.zenodo.json
RVO2-3D Library
SPDX-FileCopyrightText: No Copyright
SPDX-License-Identifier: CC0-1.0
CC0 1.0 Universal Public Domain Dedication
No Copyright
The person who associated a work with this deed has dedicated the work to the
public domain by waiving all of his or her rights to the work worldwide under
copyright law, including all related and neighboring rights, to the extent
allowed by law.
You can copy, modify, distribute and perform the work, even for commercial
purposes, all without asking permission. See Other Information below.
Other Information:
* In no way are the patent or trademark rights of any person affected by CC0,
nor are the rights that other persons may have in the work or in how the work
is used, such as publicity or privacy rights.
* Unless expressly stated otherwise, the person who associated a work with this
deed makes no warranties about the work, and disclaims liability for all uses
of the work, to the fullest extent permitted by applicable law.
* When using or citing the work, you should not imply endorsement by the author
or the affirmer.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: BUILD.bazel
================================================
# -*- mode: bazel; -*-
# vi: set ft=bazel:
#
# BUILD.bazel
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
load("@rules_cc//cc:defs.bzl", "cc_shared_library")
load("@rules_license//rules:license.bzl", "license")
load("@rules_license//rules:package_info.bzl", "package_info")
load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_files")
load("@rules_pkg//pkg:pkg.bzl", "pkg_deb", "pkg_tar")
package(default_package_metadata = [
":license",
":package_info",
])
license(
name = "license",
copyright_notice = "2008 University of North Carolina at Chapel Hill",
license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"],
license_text = "LICENSE",
visibility = ["//:__subpackages__"],
)
package_info(
name = "package_info",
package_name = "RVO2-3D Library",
package_url = "https://gamma.cs.unc.edu/RVO2/",
package_version = "1.1.0",
visibility = ["//:__subpackages__"],
)
exports_files(
["LICENSE"],
visibility = ["//visibility:public"],
)
pkg_files(
name = "doc",
srcs = ["LICENSE"],
attributes = pkg_attributes(mode = "0644"),
prefix = "usr/share/doc/RVO3D",
)
cc_shared_library(
name = "RVO3D",
visibility = ["//visibility:public"],
deps = ["//src:RVO3D"],
)
pkg_files(
name = "lib",
srcs = [":RVO3D"],
attributes = pkg_attributes(mode = "0644"),
prefix = "usr/lib",
)
genrule(
name = "rvo3d_cps",
outs = ["RVO3D.cps"],
cmd = """
cat << 'EOF' > $@
{
"compat_version": "1",
"components":
{
"RVO3D":
{
"includes": ["@prefix@/include/RVO3D"],
"type": "dylib"
}
},
"cps_path": "@prefix@/lib/cps/RVO3D",
"cps_version": "0.14.1",
"default_components": ["RVO3D"],
"description": "Optimal Reciprocal Collision Avoidance in Three Dimensions",
"license": "Apache-2.0",
"name": "RVO3D",
"version": "1.1.0",
"version_schema": "simple",
"website": "https://gamma.cs.unc.edu/RVO2/"
}
EOF
""",
)
genrule(
name = "rvo3d_release_cps",
outs = ["RVO3D@release.cps"],
cmd = select({
"@platforms//os:macos": """
cat << 'EOF' > $@
{
"components":
{
"RVO3D":
{
"location": "@prefix@/lib/libRVO3D.dylib"
}
},
"configuration": "Release",
"name": "RVO3D"
}
EOF
""",
"@platforms//os:windows": """
cat << 'EOF' > $@
{
"components":
{
"RVO3D":
{
"location": "@prefix@/lib/RVO3D.dll"
}
},
"configuration": "Release",
"name": "RVO3D"
}
EOF
""",
"//conditions:default": """
cat << 'EOF' > $@
{
"components":
{
"RVO3D":
{
"location": "@prefix@/lib/libRVO3D.so"
}
},
"configuration": "Release",
"name": "RVO3D"
}
EOF
""",
}),
)
pkg_files(
name = "cps",
srcs = [
"RVO3D.cps",
"RVO3D@release.cps",
],
attributes = pkg_attributes(mode = "0644"),
prefix = "usr/lib/cps/RVO3D",
)
# REUSE-IgnoreStart
genrule(
name = "rvo3d_pc",
outs = ["RVO3D.pc"],
cmd = """
cat << 'EOF' > $@
#
# RVO3D.pc
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
prefix=/usr
exec_prefix=$${prefix}
libdir=$${exec_prefix}/lib
includedir=$${prefix}/include/RVO3D
Name: RVO2-3D Library
Description: Optimal Reciprocal Collision Avoidance in Three Dimensions
URL: https://gamma.cs.unc.edu/RVO2/
Version: 1.1.0
Libs: -L$${libdir} -lRVO3D
Cflags: -I$${includedir}
EOF
""",
)
# REUSE-IgnoreEnd
pkg_files(
name = "pkgconfig",
srcs = ["RVO3D.pc"],
attributes = pkg_attributes(mode = "0644"),
prefix = "usr/lib/pkgconfig",
)
pkg_tar(
name = "tar",
srcs = [
":cps",
":doc",
":lib",
":pkgconfig",
"//src:include",
],
extension = "tar.gz",
)
pkg_deb(
name = "deb",
architecture = select(
{
"@platforms//cpu:aarch64": "arm64",
"@platforms//cpu:x86_64": "amd64",
},
no_match_error = "Unsupported CPU for //:deb. Supported CPUs: aarch64, x86_64.",
),
data = ":tar",
depends = [
"libc6",
"libgcc-s1",
"libstdc++6",
],
description = "Optimal Reciprocal Collision Avoidance in Three Dimensions",
homepage = "https://gamma.cs.unc.edu/RVO2/",
license = "Apache-2",
maintainer = "Jamie Snape",
package = "rvo3d",
priority = "optional",
section = "contrib/libdevel",
target_compatible_with = ["@platforms//os:linux"],
triggers = "triggers",
version = "1.1.0",
)
================================================
FILE: Brewfile
================================================
# -*- mode: ruby; -*-
# vi: set ft=ruby:
#
# Brewfile
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
brew 'bazelisk', conflicts_with: ['bazel']
brew 'buildifier'
brew 'buildozer'
brew 'cmake'
brew 'cppcheck'
brew 'cpplint'
brew 'doxygen'
brew 'gcc'
brew 'git'
brew 'graphviz'
brew 'include-what-you-use'
brew 'jsonlint'
brew 'lcov'
brew 'llvm'
brew 'markdownlint-cli'
brew 'ninja'
brew 'pkgconf', conflicts_with: ['pkg-config']
brew 'python'
brew 'yamllint'
================================================
FILE: CITATION.cff
================================================
# -*- mode: yaml; -*-
# vi: set ft=yaml:
#
# CITATION.cff
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: CC-BY-SA-4.0
#
# Creative Commons Attribution-ShareAlike 4.0 International Public License
#
# You are free to:
#
# * Share -- copy and redistribute the material in any medium or format
#
# * ShareAlike -- If you remix, transform, or build upon the material, you must
# distribute your contributions under the same license as the original
#
# * Adapt -- remix, transform, and build upon the material for any purpose, even
# commercially.
#
# The licensor cannot revoke these freedoms as long as you follow the license
# terms.
#
# Under the following terms:
#
# * Attribution -- You must give appropriate credit, provide a link to the
# license, and indicate if changes were made. You may do so in any reasonable
# manner, but not in any way that suggests the licensor endorses you or your
# use.
#
# * No additional restrictions -- You may not apply legal terms or technological
# measures that legally restrict others from doing anything the license
# permits.
#
# Notices:
#
# * You do not have to comply with the license for elements of the material in
# the public domain or where your use is permitted by an applicable exception
# or limitation.
#
# * No warranties are given. The license may not give you all of the permissions
# necessary for your intended use. For example, other rights such as
# publicity, privacy, or moral rights may limit how you use the material.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
cff-version: 1.2.0
abstract: >-
We present a formal approach to reciprocal collision avoidance, where
multiple independent mobile robots or agents need to avoid collisions with
each other without communication among agents while moving in a common
workspace. Our formulation, optimal reciprocal collision avoidance (ORCA),
provides sufficient conditions for collision-free motion by letting each
agent take half of the responsibility of avoiding pairwise collisions.
Selecting the optimal action for each agent is reduced to solving a
low-dimensional linear program, and we prove that the resulting motions are
smooth. We test our optimal reciprocal collision avoidance approach on
several dense and complex simulation scenarios workspaces involving thousands
of agents, and compute collision-free actions for all of them in only a few
milliseconds.
RVO2-3D Library is an open-source C++98 implementation of our algorithm in
three dimensions. It has a simple API for third-party applications. The user
specifies agents and their preferred velocities. The simulation is performed
step-by-step via a simple call to the library. The simulation is fully
accessible and manipulable during runtime. The library exploits multiple
processors if they are available using OpenMP for efficient parallelization
of the simulation.
authors:
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Berg
given-names: Jur
name-particle: 'van den'
post-code: 27599
region: NC
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Guy
given-names: 'Stephen J.'
orcid: 'https://orcid.org/0000-0001-8986-5817'
post-code: 27599
region: NC
website: 'https://www-users.cse.umn.edu/~sjguy/'
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Snape
given-names: Jamie
orcid: 'https://orcid.org/0000-0002-3326-9765'
post-code: 27599
region: NC
website: 'https://www.jamiesnape.io/'
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Lin
given-names: 'Ming C.'
orcid: 'https://orcid.org/0000-0003-3736-6949'
post-code: 27599
region: NC
website: 'https://www.cs.umd.edu/people/lin/'
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Manocha
given-names: Dinesh
orcid: 'https://orcid.org/0000-0001-7047-9801'
post-code: 27599
region: NC
website: 'https://www.cs.umd.edu/people/dmanocha/'
identifiers:
- type: doi
value: '10.5281/zenodo.7039619'
keywords:
- 'collision avoidance'
- 'mobile robots'
- 'motion planning'
- 'multi-robot systems'
- navigation
license: 'Apache-2.0'
message: >-
If you use this software, please cite it using the metadata from this file
and the metadata from 'preferred-citation'.
references:
- abstract: >-
We present a formal approach to reciprocal collision avoidance, where
multiple independent mobile robots or agents need to avoid collisions
with each other without communication among agents while moving in a
common workspace. Our formulation, optimal reciprocal collision avoidance
(ORCA), provides sufficient conditions for collision-free motion by
letting each agent take half of the responsibility of avoiding pairwise
collisions. Selecting the optimal action for each agent is reduced to
solving a low-dimensional linear program, and we prove that the resulting
motions are smooth. We test our optimal reciprocal collision avoidance
approach on several dense and complex simulation scenarios workspaces
involving thousands of agents, and compute collision-free actions for all
of them in only a few milliseconds.
authors:
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Berg
given-names: Jur
name-particle: 'van den'
post-code: 27599
region: NC
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Guy
given-names: 'Stephen J.'
orcid: 'https://orcid.org/0000-0001-8986-5817'
post-code: 27599
region: NC
website: 'https://www-users.cse.umn.edu/~sjguy/'
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Lin
given-names: 'Ming C.'
orcid: 'https://orcid.org/0000-0003-3736-6949'
post-code: 27599
region: NC
website: 'https://www.cs.umd.edu/people/lin/'
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Manocha
given-names: Dinesh
orcid: 'https://orcid.org/0000-0001-7047-9801'
post-code: 27599
region: NC
website: 'https://www.cs.umd.edu/people/dmanocha/'
conference:
address: 'Hotel Astoria, Pilatusstrasse 29'
city: Lucerne
country: CH
date-end: '2009-09-03'
date-start: '2009-08-31'
name: '14th International Symposium of Robotics Research (ISRR)'
post-code: 6002
contact:
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Guy
given-names: 'Stephen J.'
orcid: 'https://orcid.org/0000-0001-8986-5817'
post-code: 27599
region: NC
website: 'https://www-users.cse.umn.edu/~sjguy/'
collection-doi: '10.1007/978-3-642-19457-3'
collection-title: >-
Robotics Research: The 14th International Symposium ISRR
collection-type: proceedings
copyright: >-
Copyright © 2011 Springer Verlag
editors:
- address: >-
Institute of Robotics and Intelligent Systems (IRIS), Autonomous
Systems Lab, Leonhardstrasse 21
affiliation: ETH Zürich
city: Zürich
country: CH
family-names: Pradalier
given-names: Cédric
orcid: 'https://orcid.org/0000-0002-1746-2733'
post-code: 8092
- address: >-
Institute of Robotics and Intelligent Systems (IRIS), Autonomous
Systems Lab, Leonhardstrasse 21
affiliation: ETH Zürich
city: Zürich
country: CH
family-names: Siegwart
given-names: Roland
orcid: 'https://orcid.org/0000-0002-2760-7983'
post-code: 8092
- address: >-
Deutsches Zentrum für Luft und Raumfahrt (DLR), Institut für Robotik
und Mechatronik, Münchener Straße 20
affiliation: German Aerospace Center
city: 'Oberpfaffenhofen-Weßling'
country: DE
family-names: Hirzinger
given-names: Gerhard
post-code: 82234
end: 19
identifiers:
- type: doi
value: '10.1007/978-3-642-19457-3_1'
isbn: '978-3-642-19456-6'
keywords:
- 'collision avoidance'
- 'mobile robots'
- 'motion planning'
- 'multi-robot systems'
- navigation
publisher:
address: 'Tiergartenstraße 17'
city: Heidelberg
country: DE
name: 'Springer Verlag'
post-code: 69121
languages:
- en
month: 5
pages: 17
start: 3
title: 'Reciprocal n-body collision avoidance'
type: 'conference-paper'
url: 'https://gamma.cs.unc.edu/ORCA/'
volume: 70
year: 2011
- abstract: >-
We present an algorithm for collision-free navigation of multiple flying
robots in three-dimensional workspace. Our approach extends the model of a
simple car to a simple-airplane, which has constraints on speed and
steering angle and includes a configuration variable for the altitude. We
use a locally optimal reciprocal collision avoidance scheme that computes
the trajectory without any collisions or oscillations for each airplane
independently. In addition, our algorithm explicitly considers the
kinematic and dynamic constraints of a simple-airplane and uses the notion
of variable reciprocity when choosing velocities to ensure that
simple-airplanes that are less constrained take more responsibility for
avoiding collisions. We test our approach in two simulations and compute
collision-free and oscillation-free trajectories that satisfy the kinematic
and dynamic constraints of each simple-airplane.
authors:
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Snape
given-names: Jamie
orcid: 'https://orcid.org/0000-0002-3326-9765'
post-code: 27599
region: NC
website: 'https://www.jamiesnape.io/'
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Manocha
given-names: Dinesh
orcid: 'https://orcid.org/0000-0001-7047-9801'
post-code: 27599
region: NC
website: 'https://www.cs.umd.edu/people/dmanocha/'
conference:
address: '555 W Fifth Ave, William A. Egan Civic and Convention Center'
city: Anchorage
country: CH
date-end: '2010-05-03'
date-start: '2010-05-08'
name: >-
2010 IEEE International Conference on Robotics and Automation (ICRA)
post-code: 99501
region: AK
contact:
- address: >-
201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg
affiliation: 'University of North Carolina at Chapel Hill'
city: 'Chapel Hill'
country: US
family-names: Snape
given-names: Jamie
orcid: 'https://orcid.org/0000-0002-3326-9765'
post-code: 27599
region: NC
website: 'https://www.jamiesnape.io/'
collection-doi: '10.1109/ICRA11042.2010'
collection-title: >-
Proceedings of the 2010 IEEE International Conference on Robotics and
Automation (ICRA)
collection-type: proceedings
copyright: >-
Copyright © 2010 Institute of Electrical and Electronics Engineers
date-published: '2010-07-15'
end: 3980
identifiers:
- type: doi
value: '10.1109/ROBOT.2010.5509580'
isbn: '978-1-4244-5038-1'
issn: '1050-4729'
keywords:
- 'collision avoidance'
- 'mobile robots'
- 'motion planning'
- 'multi-robot systems'
- navigation
publisher:
address: '3 Park Ave 17th Fl'
city: 'New York'
country: US
name: 'Institute of Electrical and Electronics Engineers'
post-code: 10016
region: NY
languages:
- en
month: 5
pages: 6
start: 3974
title: 'Navigating Multiple Simple-Airplanes in 3D Workspace'
type: 'conference-paper'
url: 'https://gamma.cs.unc.edu/S-AIRPLANE/'
year: 2010
repository-code: 'https://github.com/snape/RVO2-3D'
title: 'Optimal Reciprocal Collision Avoidance in Three Dimensions'
type: software
url: 'https://gamma.cs.unc.edu/RVO2/'
================================================
FILE: CMakeLists.txt
================================================
# -*- mode: cmake; -*-
# vi: set ft=cmake:
#
# CMakeLists.txt
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
cmake_minimum_required(VERSION 3.26)
project(RVO3D
VERSION 1.1.0
DESCRIPTION "Optimal Reciprocal Collision Avoidance in Three Dimensions"
HOMEPAGE_URL https://gamma.cs.unc.edu/RVO2/
LANGUAGES CXX)
if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
# cmake-lint: disable=C0301
set(CMAKE_BUILD_TYPE Release CACHE STRING
"Choose the type of build; options are Debug Release RelWithDebInfo MinSizeRel"
FORCE)
set_property(CACHE CMAKE_BUILD_TYPE PROPERTY
STRINGS Debug Release RelWithDebInfo MinSizeRel)
endif()
option(ENABLE_CMAKE_EXPERIMENTAL_FEATURES
"Enable CMake experimental features" OFF)
include(CTest)
if(WIN32)
set(BUILD_SHARED_LIBS OFF)
else()
option(BUILD_SHARED_LIBS "Build all libraries as shared"
${PROJECT_IS_TOP_LEVEL})
endif()
include(GNUInstallDirs)
set(RVO3D_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
set(RVO3D_INCLUDE_DIR ${CMAKE_INSTALL_INCLUDEDIR}/${PROJECT_NAME})
set(RVO3D_LIBRARY_DIR ${CMAKE_INSTALL_LIBDIR})
set(RVO3D_LIBRARY RVO3D)
set(RVO3D_NAME "RVO2-3D Library")
set(CMAKE_CXX_STANDARD 98)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
option(BUILD_DOCUMENTATION "Build documentation" OFF)
if(BUILD_DOCUMENTATION)
find_package(Doxygen 1.9.1 MODULE OPTIONAL_COMPONENTS dot)
endif()
option(ENABLE_OPENMP "Enable OpenMP if available" OFF)
if(ENABLE_OPENMP)
find_package(OpenMP MODULE)
endif()
option(ENABLE_INTERPROCEDURAL_OPTIMIZATION
"Enable interprocedural optimization if supported" OFF)
if(ENABLE_INTERPROCEDURAL_OPTIMIZATION)
include(CheckIPOSupported)
check_ipo_supported(RESULT RVO3D_INTERPROCEDURAL_OPTIMIZATION_SUPPORTED
LANGUAGES CXX)
if(RVO3D_INTERPROCEDURAL_OPTIMIZATION_SUPPORTED)
message(STATUS "Interprocedural optimization is supported")
else()
message(STATUS "Interprocedural optimization is NOT supported")
endif()
else()
set(RVO3D_INTERPROCEDURAL_OPTIMIZATION_SUPPORTED)
endif()
include(CheckCXXCompilerFlag)
include(CheckLinkerFlag)
option(ENABLE_HARDENING
"Enable hardening compiler and linker flags if supported" ON)
if(ENABLE_HARDENING)
if(MSVC)
check_cxx_compiler_flag(/GS RVO3D_COMPILER_SUPPORTS_GS)
check_cxx_compiler_flag(/guard:cf RVO3D_COMPILER_SUPPORTS_GUARD_CF)
if(RVO3D_COMPILER_SUPPORTS_GS)
add_compile_options(/GS)
endif()
check_linker_flag(CXX /DYNAMICBASE RVO3D_LINKER_SUPPORTS_DYNAMICBASE)
check_linker_flag(CXX /GUARD:CF RVO3D_LINKER_SUPPORTS_GUARD_CF)
check_linker_flag(CXX /NXCOMPAT RVO3D_LINKER_SUPPORTS_NXCOMPAT)
if(RVO3D_COMPILER_SUPPORTS_GUARD_CF
AND RVO3D_LINKER_SUPPORTS_DYNAMICBASE
AND RVO3D_LINKER_SUPPORTS_GUARD_CF)
add_compile_options(/guard:cf)
add_link_options(/DYNAMICBASE /GUARD:CF)
endif()
if(RVO3D_LINKER_SUPPORTS_NXCOMPAT)
add_link_options(/NXCOMPAT)
endif()
else()
if(APPLE)
set(RVO3D_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS}")
check_cxx_compiler_flag(-Werror=unused-command-line-argument
RVO3D_COMPILER_SUPPORTS_WERROR_UNUSED_COMMAND_LINE_ARGUMENT)
if(RVO3D_COMPILER_SUPPORTS_WERROR_UNUSED_COMMAND_LINE_ARGUMENT)
set(CMAKE_REQUIRED_FLAGS
"${CMAKE_REQUIRED_FLAGS} -Werror=unused-command-line-argument")
endif()
endif()
check_cxx_compiler_flag(-D_FORTIFY_SOURCE=2
RVO3D_COMPILER_SUPPORTS_D_FORTIFY_SOURCE_2)
check_cxx_compiler_flag(-fcf-protection
RVO3D_COMPILER_SUPPORTS_FCF_PROTECTION)
check_cxx_compiler_flag(-fno-common RVO3D_COMPILER_SUPPORTS_FNO_COMMON)
check_cxx_compiler_flag(-fsanitize=safe-stack
RVO3D_COMPILER_SUPPORTS_FSANITIZE_SAFE_STACK)
check_cxx_compiler_flag(-fstack-clash-protection
RVO3D_COMPILER_SUPPORTS_FSTACK_CLASH_PROTECTION)
check_cxx_compiler_flag(-fstack-protector-strong
RVO3D_COMPILER_SUPPORTS_FSTACK_PROTECTOR_STRONG)
if(RVO3D_COMPILER_SUPPORTS_FSTACK_PROTECTOR_STRONG)
set(RVO3D_COMPILER_SUPPORTS_FSTACK_PROTECTOR)
else()
check_cxx_compiler_flag(-fstack-protector
RVO3D_COMPILER_SUPPORTS_FSTACK_PROTECTOR)
endif()
if(RVO3D_COMPILER_SUPPORTS_D_FORTIFY_SOURCE_2)
add_compile_options($<$<NOT:$<CONFIG:Debug>>:-D_FORTIFY_SOURCE=2>)
endif()
if(RVO3D_COMPILER_SUPPORTS_FCF_PROTECTION)
add_compile_options(-fcf-protection)
endif()
if(RVO3D_COMPILER_SUPPORTS_FNO_COMMON)
add_compile_options(-fno-common)
endif()
if(RVO3D_COMPILER_SUPPORTS_FSTACK_CLASH_PROTECTION)
add_compile_options(-fstack-clash-protection)
endif()
if(RVO3D_COMPILER_SUPPORTS_FSTACK_PROTECTOR_STRONG)
add_compile_options(-fstack-protector-strong)
elseif(RVO3D_COMPILER_SUPPORTS_FSTACK_PROTECTOR)
add_compile_options(-fstack-protector)
endif()
check_linker_flag(CXX -Wl,-Bsymbolic-functions
RVO3D_LINKER_SUPPORTS_BSYMBOLIC_FUNCTIONS)
check_linker_flag(CXX -fsanitize=safe-stack
RVO3D_LINKER_SUPPORTS_FSANITIZE_SAFE_STACK)
check_linker_flag(CXX -Wl,-z,defs RVO3D_LINKER_SUPPORTS_Z_DEFS)
check_linker_flag(CXX -Wl,-z,noexecheap RVO3D_LINKER_SUPPORTS_Z_NOEXECHEAP)
check_linker_flag(CXX -Wl,-z,noexecstack
RVO3D_LINKER_SUPPORTS_Z_NOEXECSTACK)
check_linker_flag(CXX -Wl,-z,now RVO3D_LINKER_SUPPORTS_Z_NOW)
check_linker_flag(CXX -Wl,-z,relro RVO3D_LINKER_SUPPORTS_Z_RELRO)
check_linker_flag(CXX -Wl,-z,separate-code RVO3D_LINKER_SUPPORTS_Z_SEPARATE_CODE)
if(RVO3D_LINKER_SUPPORTS_BSYMBOLIC_FUNCTIONS)
add_link_options($<$<NOT:$<CONFIG:Debug>>:-Wl,-Bsymbolic-functions>)
endif()
if(RVO3D_COMPILER_SUPPORTS_FSANITIZE_SAFE_STACK
AND RVO3D_LINKER_SUPPORTS_FSANITIZE_SAFE_STACK)
add_compile_options($<$<NOT:$<CONFIG:Debug>>:-fsanitize=safe-stack>)
add_link_options($<$<NOT:$<CONFIG:Debug>>:-fsanitize=safe-stack>)
endif()
if(RVO3D_LINKER_SUPPORTS_Z_DEFS)
add_link_options(-Wl,-z,defs)
endif()
if(RVO3D_LINKER_SUPPORTS_Z_NOEXECHEAP)
add_link_options(-Wl,-z,noexecheap)
endif()
if(RVO3D_LINKER_SUPPORTS_Z_NOEXECSTACK)
add_link_options(-Wl,-z,noexecstack)
endif()
if(RVO3D_LINKER_SUPPORTS_Z_NOW)
add_link_options(-Wl,-z,now)
endif()
if(RVO3D_LINKER_SUPPORTS_Z_RELRO)
add_link_options(-Wl,-z,relro)
endif()
if(RVO3D_LINKER_SUPPORTS_Z_SEPARATE_CODE)
add_link_options(-Wl,-z,separate-code)
endif()
if(APPLE)
set(CMAKE_REQUIRED_FLAGS "${RVO3D_REQUIRED_FLAGS}")
unset(RVO3D_REQUIRED_FLAGS)
endif()
endif()
endif()
if(MSVC)
check_cxx_compiler_flag(/W4 RVO3D_COMPILER_SUPPORTS_W4)
if(RVO3D_COMPILER_SUPPORTS_W4)
add_compile_options(/W4)
endif()
else()
check_cxx_compiler_flag(-Wall RVO3D_COMPILER_SUPPORTS_WALL)
check_cxx_compiler_flag(-Wformat-security
RVO3D_COMPILER_SUPPORTS_WFORMAT_SECURITY)
check_cxx_compiler_flag(-Werror=format-security
RVO3D_COMPILER_SUPPORTS_WERROR_FORMAT_SECURITY)
if(RVO3D_COMPILER_SUPPORTS_WALL)
add_compile_options(-Wall)
endif()
if(RVO3D_COMPILER_SUPPORTS_WFORMAT_SECURITY)
add_compile_options(-Wformat-security)
endif()
if(RVO3D_COMPILER_SUPPORTS_WERROR_FORMAT_SECURITY)
add_compile_options(-Werror=format-security)
endif()
endif()
if(NOT MSVC)
check_linker_flag(CXX -Wl,--as-needed RVO3D_LINKER_SUPPORTS__AS_NEEDED)
if(RVO3D_LINKER_SUPPORTS__AS_NEEDED)
add_link_options(-Wl,--as-needed)
endif()
endif()
option(WARNINGS_AS_ERRORS "Turn compiler warnings into errors" OFF)
if(WARNINGS_AS_ERRORS)
if(MSVC)
check_cxx_compiler_flag(/WX RVO3D_COMPILER_SUPPORTS_WX)
if(RVO3D_COMPILER_SUPPORTS_WX)
add_compile_options(/WX)
endif()
else()
check_cxx_compiler_flag(-Werror RVO3D_COMPILER_SUPPORTS_WERROR)
if(RVO3D_COMPILER_SUPPORTS_WERROR)
add_compile_options(-Werror)
endif()
endif()
endif()
option(ENABLE_INSTALLATION "Enable installation" ${PROJECT_IS_TOP_LEVEL})
add_subdirectory(src)
add_subdirectory(examples)
add_subdirectory(doc)
if(ENABLE_INSTALLATION)
install(FILES LICENSE
COMPONENT runtime
TYPE DOC)
include(CMakePackageConfigHelpers)
configure_package_config_file(
${PROJECT_NAME}Config.cmake.in ${PROJECT_NAME}Config.cmake
INSTALL_DESTINATION ${RVO3D_DIR}
PATH_VARS RVO3D_INCLUDE_DIR RVO3D_LIBRARY_DIR)
write_basic_package_version_file(${PROJECT_NAME}ConfigVersion.cmake
COMPATIBILITY SameMajorVersion)
install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}Config.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}ConfigVersion.cmake"
COMPONENT development
DESTINATION ${RVO3D_DIR})
find_package(PkgConfig MODULE)
if(PkgConfig_FOUND)
configure_file(${PROJECT_NAME}.pc.in ${PROJECT_NAME}.pc @ONLY)
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}.pc"
COMPONENT development
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
endif()
endif()
option(ENABLE_PACKAGING "Enable packaging" ${PROJECT_IS_TOP_LEVEL})
if(ENABLE_PACKAGING)
include(InstallRequiredSystemLibraries)
set(CPACK_PACKAGE_NAME ${PROJECT_NAME})
set(CPACK_PACKAGE_CONTACT "Jamie Snape")
set(CPACK_PACKAGE_VENDOR "University of North Carolina at Chapel Hill")
set(CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR})
set(CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR})
set(CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH})
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "${PROJECT_DESCRIPTION}")
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
set(CPACK_STRIP_FILES ON)
set(CPACK_SOURCE_IGNORE_FILES
_build/ \\\\.git/ \\\\.gitattributes \\\\.github/ \\\\.gitignore bazel-
Brewfile)
set(CPACK_SOURCE_STRIP_FILES ON)
set(CPACK_DEBIAN_COMPRESSION_TYPE zstd)
set(CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA "${CMAKE_CURRENT_SOURCE_DIR}/triggers")
set(CPACK_DEBIAN_PACKAGE_DEPENDS)
set(CPACK_DEBIAN_PACKAGE_HOMEPAGE ${PROJECT_HOMEPAGE_URL})
set(CPACK_DEBIAN_PACKAGE_SECTION contrib/libdevel)
set(CPACK_DEBIAN_PACKAGE_SHLIBDEPS ON)
set(CPACK_FREEBSD_PACKAGE_DEPS)
set(CPACK_FREEBSD_PACKAGE_LICENSE APACHE20)
set(CPACK_FREEBSD_PACKAGE_WWW ${PROJECT_HOMEPAGE_URL})
set(CPACK_RPM_FILE_NAME RPM-DEFAULT)
set(CPACK_RPM_PACKAGE_AUTOREQPROV ON)
set(CPACK_RPM_PACKAGE_LICENSE "ASL 2.0")
set(CPACK_RPM_PACKAGE_REQUIRES)
set(CPACK_RPM_PACKAGE_URL ${PROJECT_HOMEPAGE_URL})
include(CPack)
endif()
================================================
FILE: CMakePresets.json
================================================
{
"version": 6,
"cmakeMinimumRequired": {
"major": 3,
"minor": 26,
"patch": 0
}
}
================================================
FILE: CMakePresets.json.license
================================================
CMakePresets.json
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: CPPLINT.cfg
================================================
# -*- mode: ini; -*-
# vi: set ft=ini:
#
# CPPLINT.cfg
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
set noparent
filter=-build/header_guard
filter=-build/include_what_you_use
filter=-whitespace/indent_namespace
linelength=80
================================================
FILE: CTestConfig.cmake
================================================
#
# CTestConfig.cmake
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
set(CTEST_PROJECT_NAME RVO2-3D)
set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC")
set(CTEST_DROP_METHOD https)
set(CTEST_DROP_SITE my.cdash.org)
set(CTEST_DROP_LOCATION "/submit.php?project=${CTEST_PROJECT_NAME}")
set(CTEST_DROP_SITE_CDASH ON)
================================================
FILE: Dockerfile
================================================
# syntax=docker.io/docker/dockerfile:1
#
# Dockerfile
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
FROM ubuntu:24.04
ARG TARGETARCH
LABEL org.opencontainers.image.authors="Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha"
LABEL org.opencontainers.image.base.name="docker.io/library/ubuntu:latest"
LABEL org.opencontainers.image.description="Optimal Reciprocal Collision Avoidance in Three Dimensions"
LABEL org.opencontainers.image.licenses="Apache-2.0"
LABEL org.opencontainers.image.source="https://github.com/snape/RVO2-3D/"
LABEL org.opencontainers.image.title="RVO2-3D Library"
LABEL org.opencontainers.image.url="https://gamma.cs.unc.edu/RVO2/"
LABEL org.opencontainers.image.vendor="University of North Carolina at Chapel Hill"
LABEL org.opencontainers.image.version="1.1.0"
ENV LANG=C.UTF-8
ENV LOGNAME=root
ENV USER=root
RUN export DEBIAN_FRONTEND=noninteractive \
&& apt-get update -qq \
&& apt-get install --no-install-recommends -o Dpkg::Use-Pty=0 -qy \
ca-certificates \
clang \
clang-tidy \
cmake \
cmake-format \
cppcheck \
cpplint \
dirmngr \
doxygen \
dpkg-dev \
file \
g++ \
gdb \
git \
gnupg \
graphviz \
iwyu \
jsonlint \
lcov \
lldb \
make \
markdownlint \
nano \
netbase \
ninja-build \
openssh-client \
pkgconf \
python3 \
python3-click \
python3-dateutil \
python3-docopt \
python3-jsonschema \
python3-pip \
python3-pykwalify \
python3-requests \
python3-ruamel.yaml \
python3-venv \
reuse \
strace \
sudo \
valgrind \
yamllint \
&& rm -rf /var/lib/apt/lists/* \
&& wget -q https://github.com/bazelbuild/bazelisk/releases/latest/download/bazelisk-${TARGETARCH:-amd64}.deb \
&& dpkg -i bazelisk-${TARGETARCH:-amd64}.deb \
&& rm -rf bazelisk-${TARGETARCH:-amd64}.deb \
&& wget -qO /usr/local/bin/buildifier \
https://github.com/bazelbuild/buildtools/releases/latest/download/buildifier-linux-${TARGETARCH:-amd64} \
&& wget -qO /usr/local/bin/buildozer \
https://github.com/bazelbuild/buildtools/releases/latest/download/buildozer-linux-${TARGETARCH:-amd64} \
&& chmod +x \
/usr/local/bin/buildifier \
/usr/local/bin/buildozer \
&& python3 -m venv --system-site-packages /home/ubuntu/.venv \
&& . /home/ubuntu/.venv/bin/activate \
&& pip install --no-cache-dir -qq \
cffconvert \
&& echo "ubuntu ALL=(root) NOPASSWD:ALL" > /etc/sudoers.d/ubuntu \
&& chmod 0440 /etc/sudoers.d/ubuntu
ENV LOGNAME=ubuntu
ENV PATH="/home/ubuntu/.venv/bin:${PATH}"
ENV SHELL=/bin/bash
ENV USER=ubuntu
ENV VIRTUAL_ENV=/home/ubuntu/.venv
USER ubuntu
WORKDIR /workspace
================================================
FILE: LICENSE
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.
"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.
"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).
"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.
"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.
3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.
4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:
(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and
(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.
You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.
5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: LICENSES/Apache-2.0.txt
================================================
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
1. Definitions.
"License" shall mean the terms and conditions for use, reproduction, and
distribution as defined by Sections 1 through 9 of this document.
"Licensor" shall mean the copyright owner or entity authorized by the
copyright owner that is granting the License.
"Legal Entity" shall mean the union of the acting entity and all other
entities that control, are controlled by, or are under common control with
that entity. For the purposes of this definition, "control" means (i) the
power, direct or indirect, to cause the direction or management of such
entity, whether by contract or otherwise, or (ii) ownership of fifty percent
(50%) or more of the outstanding shares, or (iii) beneficial ownership of
such entity.
"You" (or "Your") shall mean an individual or Legal Entity exercising
permissions granted by this License.
"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation source, and
configuration files.
"Object" form shall mean any form resulting from mechanical transformation
or translation of a Source form, including but not limited to compiled
object code, generated documentation, and conversions to other media types.
"Work" shall mean the work of authorship, whether in Source or Object form,
made available under the License, as indicated by a copyright notice that is
included in or attached to the work (an example is provided in the Appendix
below).
"Derivative Works" shall mean any work, whether in Source or Object form,
that is based on (or derived from) the Work and for which the editorial
revisions, annotations, elaborations, or other modifications represent, as a
whole, an original work of authorship. For the purposes of this License,
Derivative Works shall not include works that remain separable from, or
merely link (or bind by name) to the interfaces of, the Work and Derivative
Works thereof.
"Contribution" shall mean any work of authorship, including the original
version of the Work and any modifications or additions to that Work or
Derivative Works thereof, that is intentionally submitted to Licensor for
inclusion in the Work by the copyright owner or by an individual or Legal
Entity authorized to submit on behalf of the copyright owner. For the
purposes of this definition, "submitted" means any form of electronic,
verbal, or written communication sent to the Licensor or its
representatives, including but not limited to communication on electronic
mailing lists, source code control systems, and issue tracking systems that
are managed by, or on behalf of, the Licensor for the purpose of discussing
and improving the Work, but excluding communication that is conspicuously
marked or otherwise designated in writing by the copyright owner as "Not a
Contribution."
"Contributor" shall mean Licensor and any individual or Legal Entity on
behalf of whom a Contribution has been received by Licensor and subsequently
incorporated within the Work.
2. Grant of Copyright License. Subject to the terms and conditions of this
License, each Contributor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable copyright license to
reproduce, prepare Derivative Works of, publicly display, publicly perform,
sublicense, and distribute the Work and such Derivative Works in Source or
Object form.
3. Grant of Patent License. Subject to the terms and conditions of this
License, each Contributor hereby grants to You a perpetual, worldwide,
non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
this section) patent license to make, have made, use, offer to sell, sell,
import, and otherwise transfer the Work, where such license applies only to
those patent claims licensable by such Contributor that are necessarily
infringed by their Contribution(s) alone or by combination of their
Contribution(s) with the Work to which such Contribution(s) was submitted.
If You institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work or a
Contribution incorporated within the Work constitutes direct or contributory
patent infringement, then any patent licenses granted to You under this
License for that Work shall terminate as of the date such litigation is
filed.
4. Redistribution. You may reproduce and distribute copies of the Work or
Derivative Works thereof in any medium, with or without modifications, and
in Source or Object form, provided that You meet the following conditions:
(a) You must give any other recipients of the Work or Derivative Works a
copy of this License; and
(b) You must cause any modified files to carry prominent notices stating
that You changed the files; and
(c) You must retain, in the Source form of any Derivative Works that You
distribute, all copyright, patent, trademark, and attribution notices
from the Source form of the Work, excluding those notices that do not
pertain to any part of the Derivative Works; and
(d) If the Work includes a "NOTICE" text file as part of its distribution,
then any Derivative Works that You distribute must include a readable
copy of the attribution notices contained within such NOTICE file,
excluding those notices that do not pertain to any part of the
Derivative Works, in at least one of the following places: within a
NOTICE text file distributed as part of the Derivative Works; within the
Source form or documentation, if provided along with the Derivative
Works; or, within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents of the
NOTICE file are for informational purposes only and do not modify the
License. You may add Your own attribution notices within Derivative
Works that You distribute, alongside or as an addendum to the NOTICE
text from the Work, provided that such additional attribution notices
cannot be construed as modifying the License.
You may add Your own copyright statement to Your modifications and may
provide additional or different license terms and conditions for use,
reproduction, or distribution of Your modifications, or for any such
Derivative Works as a whole, provided Your use, reproduction, and
distribution of the Work otherwise complies with the conditions stated in
this License.
5. Submission of Contributions. Unless You explicitly state otherwise, any
Contribution intentionally submitted for inclusion in the Work by You to the
Licensor shall be under the terms and conditions of this License, without
any additional terms or conditions. Notwithstanding the above, nothing
herein shall supersede or modify the terms of any separate license agreement
you may have executed with Licensor regarding such Contributions.
6. Trademarks. This License does not grant permission to use the trade names,
trademarks, service marks, or product names of the Licensor, except as
required for reasonable and customary use in describing the origin of the
Work and reproducing the content of the NOTICE file.
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in
writing, Licensor provides the Work (and each Contributor provides its
Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied, including, without limitation, any
warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining
the appropriateness of using or redistributing the Work and assume any risks
associated with Your exercise of permissions under this License.
8. Limitation of Liability. In no event and under no legal theory, whether in
tort (including negligence), contract, or otherwise, unless required by
applicable law (such as deliberate and grossly negligent acts) or agreed to
in writing, shall any Contributor be liable to You for damages, including
any direct, indirect, special, incidental, or consequential damages of any
character arising as a result of this License or out of the use or inability
to use the Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all other
commercial damages or losses), even if such Contributor has been advised of
the possibility of such damages.
9. Accepting Warranty or Additional Liability. While redistributing the Work or
Derivative Works thereof, You may choose to offer, and charge a fee for,
acceptance of support, warranty, indemnity, or other liability obligations
and/or rights consistent with this License. However, in accepting such
obligations, You may act only on Your own behalf and on Your sole
responsibility, not on behalf of any other Contributor, and only if You
agree to indemnify, defend, and hold each Contributor harmless for any
liability incurred by, or claims asserted against, such Contributor by
reason of your accepting any such warranty or additional liability.
END OF TERMS AND CONDITIONS
APPENDIX: How to apply the Apache License to your work.
To apply the Apache License to your work, attach the following boilerplate
notice, with the fields enclosed by brackets "[]" replaced with your own
identifying information. (Don't include the brackets!) The text should be
enclosed in the appropriate comment syntax for the file format. We also
recommend that a file or class name and description of purpose be included
on the same "printed page" as the copyright notice for easier identification
within third-party archives.
Copyright [yyyy] [name of copyright owner]
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
================================================
FILE: LICENSES/CC-BY-4.0.txt
================================================
Creative Commons Attribution 4.0 International
Creative Commons Corporation ("Creative Commons") is not a law firm and does
not provide legal services or legal advice. Distribution of Creative Commons
public licenses does not create a lawyer-client or other relationship. Creative
Commons makes its licenses and related information available on an "as-is"
basis. Creative Commons gives no warranties regarding its licenses, any
material licensed under their terms and conditions, or any related information.
Creative Commons disclaims all liability for damages resulting from their use
to the fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and conditions
that creators and other rights holders may use to share original works of
authorship and other material subject to copyright and certain other rights
specified in the public license below. The following considerations are for
informational purposes only, are not exhaustive, and do not form part of our
licenses.
Considerations for licensors: Our public licenses are intended for use by those
authorized to give the public permission to use material in ways otherwise
restricted by copyright and certain other rights. Our licenses are irrevocable.
Licensors should read and understand the terms and conditions of the license
they choose before applying it. Licensors should also secure all rights
necessary before applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any material not subject to
the license. This includes other CC-licensed material, or material used under
an exception or limitation to copyright. More considerations for licensors.
Considerations for the public: By using one of our public licenses, a licensor
grants the public permission to use the licensed material under specified terms
and conditions. If the licensor's permission is not necessary for any
reason-for example, because of any applicable exception or limitation to
copyright-then that use is not regulated by the license. Our licenses grant
only permissions under copyright and certain other rights that a licensor has
authority to grant. Use of the licensed material may still be restricted for
other reasons, including because others have copyright or other rights in the
material. A licensor may make special requests, such as asking that all changes
be marked or described. Although not required by our licenses, you are
encouraged to respect those requests where reasonable. More considerations for
the public.
Creative Commons Attribution 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be
bound by the terms and conditions of this Creative Commons Attribution 4.0
International Public License ("Public License"). To the extent this Public
License may be interpreted as a contract, You are granted the Licensed Rights
in consideration of Your acceptance of these terms and conditions, and the
Licensor grants You such rights in consideration of benefits the Licensor
receives from making the Licensed Material available under these terms and
conditions.
Section 1 - Definitions.
a. Adapted Material means material subject to Copyright and Similar Rights that
is derived from or based upon the Licensed Material and in which the
Licensed Material is translated, altered, arranged, transformed, or
otherwise modified in a manner requiring permission under the Copyright and
Similar Rights held by the Licensor. For purposes of this Public License,
where the Licensed Material is a musical work, performance, or sound
recording, Adapted Material is always produced where the Licensed Material
is synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright and Similar
Rights in Your contributions to Adapted Material in accordance with the
terms and conditions of this Public License.
c. Copyright and Similar Rights means copyright and/or similar rights closely
related to copyright including, without limitation, performance, broadcast,
sound recording, and Sui Generis Database Rights, without regard to how the
rights are labeled or categorized. For purposes of this Public License, the
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
d. Effective Technological Measures means those measures that, in the absence
of proper authority, may not be circumvented under laws fulfilling
obligations under Article 11 of the WIPO Copyright Treaty adopted on
December 20, 1996, and/or similar international agreements.
e. Exceptions and Limitations means fair use, fair dealing, and/or any other
exception or limitation to Copyright and Similar Rights that applies to Your
use of the Licensed Material.
f. Licensed Material means the artistic or literary work, database, or other
material to which the Licensor applied this Public License.
g. Licensed Rights means the rights granted to You subject to the terms and
conditions of this Public License, which are limited to all Copyright and
Similar Rights that apply to Your use of the Licensed Material and that the
Licensor has authority to license.
h. Licensor means the individual(s) or entity(ies) granting rights under this
Public License.
i. Share means to provide material to the public by any means or process that
requires permission under the Licensed Rights, such as reproduction, public
display, public performance, distribution, dissemination, communication, or
importation, and to make material available to the public including in ways
that members of the public may access the material from a place and at a
time individually chosen by them.
j. Sui Generis Database Rights means rights other than copyright resulting from
Directive 96/9/EC of the European Parliament and of the Council of 11 March
1996 on the legal protection of databases, as amended and/or succeeded, as
well as other essentially equivalent rights anywhere in the world.
k. You means the individual or entity exercising the Licensed Rights under this
Public License. Your has a corresponding meaning.
Section 2 - Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License, the Licensor
hereby grants You a worldwide, royalty-free, non-sublicensable,
non-exclusive, irrevocable license to exercise the Licensed Rights in the
Licensed Material to:
A. reproduce and Share the Licensed Material, in whole or in part; and
B. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
and Limitations apply to Your use, this Public License does not apply,
and You do not need to comply with its terms and conditions.
3. Term. The term of this Public License is specified in Section 6(a).
4. Media and formats; technical modifications allowed. The Licensor
authorizes You to exercise the Licensed Rights in all media and formats
whether now known or hereafter created, and to make technical
modifications necessary to do so. The Licensor waives and/or agrees not
to assert any right or authority to forbid You from making technical
modifications necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective Technological
Measures. For purposes of this Public License, simply making
modifications authorized by this Section 2(a)(4) never produces Adapted
Material.
5. Downstream recipients.
A. Offer from the Licensor - Licensed Material. Every recipient of the
Licensed Material automatically receives an offer from the Licensor to
exercise the Licensed Rights under the terms and conditions of this
Public License.
B. No downstream restrictions. You may not offer or impose any additional
or different terms or conditions on, or apply any Effective
Technological Measures to, the Licensed Material if doing so restricts
exercise of the Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or may be
construed as permission to assert or imply that You are, or that Your use
of the Licensed Material is, connected with, or sponsored, endorsed, or
granted official status by, the Licensor or others designated to receive
attribution as provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not licensed under this
Public License, nor are publicity, privacy, and/or other similar
personality rights; however, to the extent possible, the Licensor waives
and/or agrees not to assert any such rights held by the Licensor to the
limited extent necessary to allow You to exercise the Licensed Rights,
but not otherwise.
2. Patent and trademark rights are not licensed under this Public License.
3. To the extent possible, the Licensor waives any right to collect
royalties from You for the exercise of the Licensed Rights, whether
directly or through a collecting society under any voluntary or waivable
statutory or compulsory licensing scheme. In all other cases the Licensor
expressly reserves any right to collect such royalties.
Section 3 - License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following
conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified form), You
must:
A. retain the following if it is supplied by the Licensor with the
Licensed Material:
i. identification of the creator(s) of the Licensed Material and any
others designated to receive attribution, in any reasonable
manner requested by the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of warranties;
v. a URI or hyperlink to the Licensed Material to the extent
reasonably practicable;
B. indicate if You modified the Licensed Material and retain an
indication of any previous modifications; and
C. indicate the Licensed Material is licensed under this Public License,
and include the text of, or the URI or hyperlink to, this Public
License.
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable
manner based on the medium, means, and context in which You Share the
Licensed Material. For example, it may be reasonable to satisfy the
conditions by providing a URI or hyperlink to a resource that includes
the required information.
3. If requested by the Licensor, You must remove any of the information
required by Section 3(a)(1)(A) to the extent reasonably practicable.
4. If You Share Adapted Material You produce, the Adapter's License You
apply must not prevent recipients of the Adapted Material from complying
with this Public License.
Section 4 - Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to
Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
reuse, reproduce, and Share all or a substantial portion of the contents of
the database;
b. if You include all or a substantial portion of the database contents in a
database in which You have Sui Generis Database Rights, then the database in
which You have Sui Generis Database Rights (but not its individual contents)
is Adapted Material; and
c. You must comply with the conditions in Section 3(a) if You Share all or a
substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace
Your obligations under this Public License where the Licensed Rights include
other Copyright and Similar Rights.
Section 5 - Disclaimer of Warranties and Limitation of Liability.
a. Unless otherwise separately undertaken by the Licensor, to the extent
possible, the Licensor offers the Licensed Material as-is and as-available,
and makes no representations or warranties of any kind concerning the
Licensed Material, whether express, implied, statutory, or other. This
includes, without limitation, warranties of title, merchantability, fitness
for a particular purpose, non-infringement, absence of latent or other
defects, accuracy, or the presence or absence of errors, whether or not
known or discoverable. Where disclaimers of warranties are not allowed in
full or in part, this disclaimer may not apply to You.
b. To the extent possible, in no event will the Licensor be liable to You on
any legal theory (including, without limitation, negligence) or otherwise
for any direct, special, indirect, incidental, consequential, punitive,
exemplary, or other losses, costs, expenses, or damages arising out of this
Public License or use of the Licensed Material, even if the Licensor has
been advised of the possibility of such losses, costs, expenses, or damages.
Where a limitation of liability is not allowed in full or in part, this
limitation may not apply to You.
c. The disclaimer of warranties and limitation of liability provided above
shall be interpreted in a manner that, to the extent possible, most closely
approximates an absolute disclaimer and waiver of all liability.
Section 6 - Term and Termination.
a. This Public License applies for the term of the Copyright and Similar Rights
licensed here. However, if You fail to comply with this Public License, then
Your rights under this Public License terminate automatically.
b. Where Your right to use the Licensed Material has terminated under Section
6(a), it reinstates:
1. automatically as of the date the violation is cured, provided it is cured
within 30 days of Your discovery of the violation; or
2. upon express reinstatement by the Licensor.
c. For the avoidance of doubt, this Section 6(b) does not affect any right the
Licensor may have to seek remedies for Your violations of this Public
License.
d. For the avoidance of doubt, the Licensor may also offer the Licensed
Material under separate terms or conditions or stop distributing the
Licensed Material at any time; however, doing so will not terminate this
Public License.
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
Section 7 - Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different terms or
conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the Licensed
Material not stated herein are separate from and independent of the terms
and conditions of this Public License.
Section 8 - Interpretation.
a. For the avoidance of doubt, this Public License does not, and shall not be
interpreted to, reduce, limit, restrict, or impose conditions on any use of
the Licensed Material that could lawfully be made without permission under
this Public License.
b. To the extent possible, if any provision of this Public License is deemed
unenforceable, it shall be automatically reformed to the minimum extent
necessary to make it enforceable. If the provision cannot be reformed, it
shall be severed from this Public License without affecting the
enforceability of the remaining terms and conditions.
c. No term or condition of this Public License will be waived and no failure to
comply consented to unless expressly agreed to by the Licensor.
d. Nothing in this Public License constitutes or may be interpreted as a
limitation upon, or waiver of, any privileges and immunities that apply to
the Licensor or You, including from the legal processes of any jurisdiction
or authority.
Creative Commons is not a party to its public licenses. Notwithstanding,
Creative Commons may elect to apply one of its public licenses to material it
publishes and in those instances will be considered the "Licensor." Except for
the limited purpose of indicating that material is shared under a Creative
Commons public license or as otherwise permitted by the Creative Commons
policies published at creativecommons.org/policies, Creative Commons does not
authorize the use of the trademark "Creative Commons" or any other trademark or
logo of Creative Commons without its prior written consent including, without
limitation, in connection with any unauthorized modifications to any of its
public licenses or any other arrangements, understandings, or agreements
concerning use of licensed material. For the avoidance of doubt, this paragraph
does not form part of the public licenses.
Creative Commons may be contacted at creativecommons.org.
================================================
FILE: LICENSES/CC-BY-SA-4.0.txt
================================================
Creative Commons Attribution-ShareAlike 4.0 International
Creative Commons Corporation ("Creative Commons") is not a law firm and does
not provide legal services or legal advice. Distribution of Creative Commons
public licenses does not create a lawyer-client or other relationship. Creative
Commons makes its licenses and related information available on an "as-is"
basis. Creative Commons gives no warranties regarding its licenses, any
material licensed under their terms and conditions, or any related information.
Creative Commons disclaims all liability for damages resulting from their use
to the fullest extent possible.
Using Creative Commons Public Licenses
Creative Commons public licenses provide a standard set of terms and conditions
that creators and other rights holders may use to share original works of
authorship and other material subject to copyright and certain other rights
specified in the public license below. The following considerations are for
informational purposes only, are not exhaustive, and do not form part of our
licenses.
Considerations for licensors: Our public licenses are intended for use by those
authorized to give the public permission to use material in ways otherwise
restricted by copyright and certain other rights. Our licenses are irrevocable.
Licensors should read and understand the terms and conditions of the license
they choose before applying it. Licensors should also secure all rights
necessary before applying our licenses so that the public can reuse the
material as expected. Licensors should clearly mark any material not subject to
the license. This includes other CC-licensed material, or material used under
an exception or limitation to copyright. More considerations for licensors.
Considerations for the public: By using one of our public licenses, a licensor
grants the public permission to use the licensed material under specified terms
and conditions. If the licensor's permission is not necessary for any
reason-for example, because of any applicable exception or limitation to
copyright-then that use is not regulated by the license. Our licenses grant
only permissions under copyright and certain other rights that a licensor has
authority to grant. Use of the licensed material may still be restricted for
other reasons, including because others have copyright or other rights in the
material. A licensor may make special requests, such as asking that all changes
be marked or described.
Although not required by our licenses, you are encouraged to respect those
requests where reasonable. More considerations for the public.
Creative Commons Attribution-ShareAlike 4.0 International Public License
By exercising the Licensed Rights (defined below), You accept and agree to be
bound by the terms and conditions of this Creative Commons
Attribution-ShareAlike 4.0 International Public License ("Public License"). To
the extent this Public License may be interpreted as a contract, You are
granted the Licensed Rights in consideration of Your acceptance of these terms
and conditions, and the Licensor grants You such rights in consideration of
benefits the Licensor receives from making the Licensed Material available
under these terms and conditions.
Section 1 - Definitions.
a. Adapted Material means material subject to Copyright and Similar Rights that
is derived from or based upon the Licensed Material and in which the
Licensed Material is translated, altered, arranged, transformed, or
otherwise modified in a manner requiring permission under the Copyright and
Similar Rights held by the Licensor. For purposes of this Public License,
where the Licensed Material is a musical work, performance, or sound
recording, Adapted Material is always produced where the Licensed Material
is synched in timed relation with a moving image.
b. Adapter's License means the license You apply to Your Copyright and Similar
Rights in Your contributions to Adapted Material in accordance with the
terms and conditions of this Public License.
c. BY-SA Compatible License means a license listed at
creativecommons.org/compatiblelicenses, approved by Creative Commons as
essentially the equivalent of this Public License.
d. Copyright and Similar Rights means copyright and/or similar rights closely
related to copyright including, without limitation, performance, broadcast,
sound recording, and Sui Generis Database Rights, without regard to how the
rights are labeled or categorized. For purposes of this Public License, the
rights specified in Section 2(b)(1)-(2) are not Copyright and Similar
Rights.
e. Effective Technological Measures means those measures that, in the absence
of proper authority, may not be circumvented under laws fulfilling
obligations under Article 11 of the WIPO Copyright Treaty adopted on
December 20, 1996, and/or similar international agreements.
f. Exceptions and Limitations means fair use, fair dealing, and/or any other
exception or limitation to Copyright and Similar Rights that applies to Your
use of the Licensed Material.
g. License Elements means the license attributes listed in the name of a
Creative Commons Public License. The License Elements of this Public License
are Attribution and ShareAlike.
h. Licensed Material means the artistic or literary work, database, or other
material to which the Licensor applied this Public License.
i. Licensed Rights means the rights granted to You subject to the terms and
conditions of this Public License, which are limited to all Copyright and
Similar Rights that apply to Your use of the Licensed Material and that the
Licensor has authority to license.
j. Licensor means the individual(s) or entity(ies) granting rights under this
Public License.
k. Share means to provide material to the public by any means or process that
requires permission under the Licensed Rights, such as reproduction, public
display, public performance, distribution, dissemination, communication, or
importation, and to make material available to the public including in ways
that members of the public may access the material from a place and at a
time individually chosen by them.
l. Sui Generis Database Rights means rights other than copyright resulting from
Directive 96/9/EC of the European Parliament and of the Council of 11 March
1996 on the legal protection of databases, as amended and/or succeeded, as
well as other essentially equivalent rights anywhere in the world.
m. You means the individual or entity exercising the Licensed Rights under this
Public License. Your has a corresponding meaning.
Section 2 - Scope.
a. License grant.
1. Subject to the terms and conditions of this Public License, the Licensor
hereby grants You a worldwide, royalty-free, non-sublicensable,
non-exclusive, irrevocable license to exercise the Licensed Rights in the
Licensed Material to:
A. reproduce and Share the Licensed Material, in whole or in part; and
B. produce, reproduce, and Share Adapted Material.
2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions
and Limitations apply to Your use, this Public License does not apply,
and You do not need to comply with its terms and conditions.
3. Term. The term of this Public License is specified in Section 6(a).
4. Media and formats; technical modifications allowed. The Licensor
authorizes You to exercise the Licensed Rights in all media and formats
whether now known or hereafter created, and to make technical
modifications necessary to do so. The Licensor waives and/or agrees not
to assert any right or authority to forbid You from making technical
modifications necessary to exercise the Licensed Rights, including
technical modifications necessary to circumvent Effective Technological
Measures. For purposes of this Public License, simply making
modifications authorized by this Section 2(a)(4) never produces Adapted
Material.
5. Downstream recipients.
A. Offer from the Licensor - Licensed Material. Every recipient of the
Licensed Material automatically receives an offer from the Licensor to
exercise the Licensed Rights under the terms and conditions of this
Public License.
B. Additional offer from the Licensor - Adapted Material. Every recipient
of Adapted Material from You automatically receives an offer from the
Licensor to exercise the Licensed Rights in the Adapted Material under
the conditions of the Adapter's License You apply.
C. No downstream restrictions. You may not offer or impose any additional
or different terms or conditions on, or apply any Effective
Technological Measures to, the Licensed Material if doing so restricts
exercise of the Licensed Rights by any recipient of the Licensed
Material.
6. No endorsement. Nothing in this Public License constitutes or may be
construed as permission to assert or imply that You are, or that Your use
of the Licensed Material is, connected with, or sponsored, endorsed, or
granted official status by, the Licensor or others designated to receive
attribution as provided in Section 3(a)(1)(A)(i).
b. Other rights.
1. Moral rights, such as the right of integrity, are not licensed under this
Public License, nor are publicity, privacy, and/or other similar
personality rights; however, to the extent possible, the Licensor waives
and/or agrees not to assert any such rights held by the Licensor to the
limited extent necessary to allow You to exercise the Licensed Rights,
but not otherwise.
2. Patent and trademark rights are not licensed under this Public License.
3. To the extent possible, the Licensor waives any right to collect
royalties from You for the exercise of the Licensed Rights, whether
directly or through a collecting society under any voluntary or waivable
statutory or compulsory licensing scheme. In all other cases the Licensor
expressly reserves any right to collect such royalties.
Section 3 - License Conditions.
Your exercise of the Licensed Rights is expressly made subject to the following
conditions.
a. Attribution.
1. If You Share the Licensed Material (including in modified form), You
must:
A. retain the following if it is supplied by the Licensor with the
Licensed Material:
i. identification of the creator(s) of the Licensed Material and any
others designated to receive attribution, in any reasonable
manner requested by the Licensor (including by pseudonym if
designated);
ii. a copyright notice;
iii. a notice that refers to this Public License;
iv. a notice that refers to the disclaimer of warranties;
v. a URI or hyperlink to the Licensed Material to the extent
reasonably practicable;
B. indicate if You modified the Licensed Material and retain an
indication of any previous modifications; and
C. indicate the Licensed Material is licensed under this Public License,
and include the text of, or the URI or hyperlink to, this Public
License.
2. You may satisfy the conditions in Section 3(a)(1) in any reasonable
manner based on the medium, means, and context in which You Share the
Licensed Material. For example, it may be reasonable to satisfy the
conditions by providing a URI or hyperlink to a resource that includes
the required information.
3. If requested by the Licensor, You must remove any of the information
required by Section 3(a)(1)(A) to the extent reasonably practicable.
b. ShareAlike.In addition to the conditions in Section 3(a), if You Share
Adapted Material You produce, the following conditions also apply.
1. The Adapter's License You apply must be a Creative Commons license with
the same License Elements, this version or later, or a BY-SA Compatible
License.
2. You must include the text of, or the URI or hyperlink to, the Adapter's
License You apply. You may satisfy this condition in any reasonable
manner based on the medium, means, and context in which You Share Adapted
Material.
3. You may not offer or impose any additional or different terms or
conditions on, or apply any Effective Technological Measures to, Adapted
Material that restrict exercise of the rights granted under the Adapter's
License You apply.
Section 4 - Sui Generis Database Rights.
Where the Licensed Rights include Sui Generis Database Rights that apply to
Your use of the Licensed Material:
a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract,
reuse, reproduce, and Share all or a substantial portion of the contents of
the database;
b. if You include all or a substantial portion of the database contents in a
database in which You have Sui Generis Database Rights, then the database in
which You have Sui Generis Database Rights (but not its individual contents)
is Adapted Material, including for purposes of Section 3(b); and
c. You must comply with the conditions in Section 3(a) if You Share all or a
substantial portion of the contents of the database.
For the avoidance of doubt, this Section 4 supplements and does not replace
Your obligations under this Public License where the Licensed Rights include
other Copyright and Similar Rights.
Section 5 - Disclaimer of Warranties and Limitation of Liability.
a. Unless otherwise separately undertaken by the Licensor, to the extent
possible, the Licensor offers the Licensed Material as-is and as-available,
and makes no representations or warranties of any kind concerning the
Licensed Material, whether express, implied, statutory, or other. This
includes, without limitation, warranties of title, merchantability, fitness
for a particular purpose, non-infringement, absence of latent or other
defects, accuracy, or the presence or absence of errors, whether or not
known or discoverable. Where disclaimers of warranties are not allowed in
full or in part, this disclaimer may not apply to You.
b. To the extent possible, in no event will the Licensor be liable to You on
any legal theory (including, without limitation, negligence) or otherwise
for any direct, special, indirect, incidental, consequential, punitive,
exemplary, or other losses, costs, expenses, or damages arising out of this
Public License or use of the Licensed Material, even if the Licensor has
been advised of the possibility of such losses, costs, expenses, or damages.
Where a limitation of liability is not allowed in full or in part, this
limitation may not apply to You.
c. The disclaimer of warranties and limitation of liability provided above
shall be interpreted in a manner that, to the extent possible, most closely
approximates an absolute disclaimer and waiver of all liability.
Section 6 - Term and Termination.
a. This Public License applies for the term of the Copyright and Similar Rights
licensed here. However, if You fail to comply with this Public License, then
Your rights under this Public License terminate automatically.
b. Where Your right to use the Licensed Material has terminated under Section
6(a), it reinstates:
1. automatically as of the date the violation is cured, provided it is cured
within 30 days of Your discovery of the violation; or
2. upon express reinstatement by the Licensor.
c. For the avoidance of doubt, this Section 6(b) does not affect any right the
Licensor may have to seek remedies for Your violations of this Public
License.
d. For the avoidance of doubt, the Licensor may also offer the Licensed
Material under separate terms or conditions or stop distributing the
Licensed Material at any time; however, doing so will not terminate this
Public License.
e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License.
Section 7 - Other Terms and Conditions.
a. The Licensor shall not be bound by any additional or different terms or
conditions communicated by You unless expressly agreed.
b. Any arrangements, understandings, or agreements regarding the Licensed
Material not stated herein are separate from and independent of the terms
and conditions of this Public License.
Section 8 - Interpretation.
a. For the avoidance of doubt, this Public License does not, and shall not be
interpreted to, reduce, limit, restrict, or impose conditions on any use of
the Licensed Material that could lawfully be made without permission under
this Public License.
b. To the extent possible, if any provision of this Public License is deemed
unenforceable, it shall be automatically reformed to the minimum extent
necessary to make it enforceable. If the provision cannot be reformed, it
shall be severed from this Public License without affecting the
enforceability of the remaining terms and conditions.
c. No term or condition of this Public License will be waived and no failure to
comply consented to unless expressly agreed to by the Licensor.
d. Nothing in this Public License constitutes or may be interpreted as a
limitation upon, or waiver of, any privileges and immunities that apply to
the Licensor or You, including from the legal processes of any jurisdiction
or authority.
Creative Commons is not a party to its public licenses. Notwithstanding,
Creative Commons may elect to apply one of its public licenses to material it
publishes and in those instances will be considered the "Licensor." Except for
the limited purpose of indicating that material is shared under a Creative
Commons public license or as otherwise permitted by the Creative Commons
policies published at creativecommons.org/policies, Creative Commons does not
authorize the use of the trademark "Creative Commons" or any other trademark or
logo of Creative Commons without its prior written consent including, without
limitation, in connection with any unauthorized modifications to any of its
public licenses or any other arrangements, understandings, or agreements
concerning use of licensed material. For the avoidance of doubt, this paragraph
does not form part of the public licenses.
Creative Commons may be contacted at creativecommons.org.
================================================
FILE: LICENSES/CC0-1.0.txt
================================================
Creative Commons Legal Code
CC0 1.0 Universal
CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE
LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN
ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS
INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES
REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS
PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM
THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED
HEREUNDER.
Statement of Purpose
The laws of most jurisdictions throughout the world automatically confer
exclusive Copyright and Related Rights (defined below) upon the creator
and subsequent owner(s) (each and all, an "owner") of an original work of
authorship and/or a database (each, a "Work").
Certain owners wish to permanently relinquish those rights to a Work for
the purpose of contributing to a commons of creative, cultural and
scientific works ("Commons") that the public can reliably and without fear
of later claims of infringement build upon, modify, incorporate in other
works, reuse and redistribute as freely as possible in any form whatsoever
and for any purposes, including without limitation commercial purposes.
These owners may contribute to the Commons to promote the ideal of a free
culture and the further production of creative, cultural and scientific
works, or to gain reputation or greater distribution for their Work in
part through the use and efforts of others.
For these and/or other purposes and motivations, and without any
expectation of additional consideration or compensation, the person
associating CC0 with a Work (the "Affirmer"), to the extent that he or she
is an owner of Copyright and Related Rights in the Work, voluntarily
elects to apply CC0 to the Work and publicly distribute the Work under its
terms, with knowledge of his or her Copyright and Related Rights in the
Work and the meaning and intended legal effect of CC0 on those rights.
1. Copyright and Related Rights. A Work made available under CC0 may be
protected by copyright and related or neighboring rights ("Copyright and
Related Rights"). Copyright and Related Rights include, but are not
limited to, the following:
i. the right to reproduce, adapt, distribute, perform, display,
communicate, and translate a Work;
ii. moral rights retained by the original author(s) and/or performer(s);
iii. publicity and privacy rights pertaining to a person's image or
likeness depicted in a Work;
iv. rights protecting against unfair competition in regards to a Work,
subject to the limitations in paragraph 4(a), below;
v. rights protecting the extraction, dissemination, use and reuse of data
in a Work;
vi. database rights (such as those arising under Directive 96/9/EC of the
European Parliament and of the Council of 11 March 1996 on the legal
protection of databases, and under any national implementation
thereof, including any amended or successor version of such
directive); and
vii. other similar, equivalent or corresponding rights throughout the
world based on applicable law or treaty, and any national
implementations thereof.
2. Waiver. To the greatest extent permitted by, but not in contravention
of, applicable law, Affirmer hereby overtly, fully, permanently,
irrevocably and unconditionally waives, abandons, and surrenders all of
Affirmer's Copyright and Related Rights and associated claims and causes
of action, whether now known or unknown (including existing as well as
future claims and causes of action), in the Work (i) in all territories
worldwide, (ii) for the maximum duration provided by applicable law or
treaty (including future time extensions), (iii) in any current or future
medium and for any number of copies, and (iv) for any purpose whatsoever,
including without limitation commercial, advertising or promotional
purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each
member of the public at large and to the detriment of Affirmer's heirs and
successors, fully intending that such Waiver shall not be subject to
revocation, rescission, cancellation, termination, or any other legal or
equitable action to disrupt the quiet enjoyment of the Work by the public
as contemplated by Affirmer's express Statement of Purpose.
3. Public License Fallback. Should any part of the Waiver for any reason
be judged legally invalid or ineffective under applicable law, then the
Waiver shall be preserved to the maximum extent permitted taking into
account Affirmer's express Statement of Purpose. In addition, to the
extent the Waiver is so judged Affirmer hereby grants to each affected
person a royalty-free, non transferable, non sublicensable, non exclusive,
irrevocable and unconditional license to exercise Affirmer's Copyright and
Related Rights in the Work (i) in all territories worldwide, (ii) for the
maximum duration provided by applicable law or treaty (including future
time extensions), (iii) in any current or future medium and for any number
of copies, and (iv) for any purpose whatsoever, including without
limitation commercial, advertising or promotional purposes (the
"License"). The License shall be deemed effective as of the date CC0 was
applied by Affirmer to the Work. Should any part of the License for any
reason be judged legally invalid or ineffective under applicable law, such
partial invalidity or ineffectiveness shall not invalidate the remainder
of the License, and in such case Affirmer hereby affirms that he or she
will not (i) exercise any of his or her remaining Copyright and Related
Rights in the Work or (ii) assert any associated claims and causes of
action with respect to the Work, in either case contrary to Affirmer's
express Statement of Purpose.
4. Limitations and Disclaimers.
a. No trademark or patent rights held by Affirmer are waived, abandoned,
surrendered, licensed or otherwise affected by this document.
b. Affirmer offers the Work as-is and makes no representations or
warranties of any kind concerning the Work, express, implied,
statutory or otherwise, including without limitation warranties of
title, merchantability, fitness for a particular purpose, non
infringement, or the absence of latent or other defects, accuracy, or
the present or absence of errors, whether or not discoverable, all to
the greatest extent permissible under applicable law.
c. Affirmer disclaims responsibility for clearing rights of other persons
that may apply to the Work or any use thereof, including without
limitation any person's Copyright and Related Rights in the Work.
Further, Affirmer disclaims responsibility for obtaining any necessary
consents, permissions or other rights required for any use of the
Work.
d. Affirmer understands and acknowledges that Creative Commons is not a
party to this document and has no duty or obligation with respect to
this CC0 or use of the Work.
================================================
FILE: MODULE.bazel
================================================
# -*- mode: bazel; -*-
# vi: set ft=bazel:
#
# MODULE.bazel
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
module(
name = "rvo_3d",
version = "1.1.0",
)
bazel_dep(
name = "apple_support",
version = "2.5.3",
dev_dependency = True,
repo_name = "build_bazel_apple_support",
)
apple_cc_configure = use_extension(
"@build_bazel_apple_support//crosstool:setup.bzl",
"apple_cc_configure_extension",
)
use_repo(apple_cc_configure, "local_config_apple_cc")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_license", version = "1.0.0")
bazel_dep(name = "rules_python", version = "1.9.0", dev_dependency = True)
python = use_extension(
"@rules_python//python/extensions:python.bzl",
"python",
)
python.toolchain(
ignore_root_user_error = True,
is_default = True,
python_version = "3.14",
)
bazel_dep(name = "platforms", version = "1.0.0", dev_dependency = True)
bazel_dep(name = "rules_pkg", version = "1.2.0", dev_dependency = True)
================================================
FILE: QUALITY_DECLARATION.md
================================================
<!--
QUALITY_DECLARATION.md
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: CC-BY-SA-4.0
Creative Commons Attribution-ShareAlike 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* ShareAlike -- If you remix, transform, or build upon the material, you must
distribute your contributions under the same license as the original
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
-->
# `RVO2-3D Library` Quality Declaration
The package `RVO2-3D Library` claims to be in the **Quality Level 2** category.
Below are the rationales, notes, and caveats for this claim, organized by each
requirement listed in the Package Requirements for Quality Level 2 in
[REP-2004](https://www.ros.org/reps/rep-2004.html).
## Version Policy [1]
### Version Scheme [1.i]
`RVO2-3D Library` uses [Semantic Versioning 2.0.0](https://semver.org/), and is
at version `1.1.0`. The version is declared in `CMakeLists.txt` and
`MODULE.bazel`.
### Version Stability [1.ii]
`RVO2-3D Library` is at a stable version (`1.1.0`), which is greater than
`1.0.0`.
### Public API Declaration [1.iii]
The public API of `RVO2-3D Library` is the set of symbols declared in
[`src/RVO.h`](src/RVO.h). This header aggregates the public interfaces of
`RVOSimulator`, `Vector3`, and `Plane`. Internal implementation details in
`Agent` and `KdTree` are not part of the public API.
### API Stability Within a Released Version [1.iv]
The public API is stable across patch and minor versions. Breaking API changes
are only introduced in new major versions.
### ABI Stability Within a Released Version [1.v]
ABI compatibility is maintained across patch versions within the same
`major.minor` release series. New major or minor versions may introduce
ABI-breaking changes.
## Change Control Process [2]
### Change Requests [2.i]
All changes to `RVO2-3D Library` are submitted through pull requests on
[GitHub](https://github.com/snape/RVO2-3D). Direct commits to the `main` branch
are not permitted outside of automated tooling.
### Contributor Origin [2.ii]
All contributors must sign off on their commits using the
[Developer Certificate of Origin (DCO)](https://developercertificate.org/),
enforced via the DCO GitHub App on every pull request.
### Peer Review Policy [2.iii]
As a single-maintainer project, all changes are reviewed by the primary
maintainer [@snape](https://github.com/snape) before merging.
### Continuous Integration [2.iv]
CI is performed via GitHub Actions on every push and pull request to `main`,
and on a daily schedule:
- [`.github/workflows/ci.yml`](.github/workflows/ci.yml): builds and tests
with both CMake and Bazel on AlmaLinux, Alpine, Arch Linux, Fedora,
openSUSE, and Ubuntu (amd64 and arm64), and macOS (arm64). CMake builds
enable `BUILD_TESTING`, `ENABLE_HARDENING`, `ENABLE_OPENMP`, and
`WARNINGS_AS_ERRORS`.
- [`.github/workflows/codeql.yml`](.github/workflows/codeql.yml): runs GitHub
CodeQL semantic code analysis for C++ on a weekly schedule.
### Documentation Policy [2.v]
Changes are documented through commit messages and pull request descriptions
on GitHub.
## Documentation [3]
### Feature Documentation [3.i]
All features of `RVO2-3D Library` are documented in the Doxygen markup within
[`src/RVO.h`](src/RVO.h) and related headers, including a usage guide,
parameter overview, and example code. One annotated example program
([`examples/Sphere.cc`](examples/Sphere.cc)) demonstrates typical usage
patterns covering agents and step-wise simulation.
### Public API Documentation [3.ii]
All public API elements are documented with Doxygen markup. HTML documentation
is generated from the source headers using `cmake -DBUILD_DOCUMENTATION=ON`
and installed with the library.
### License [3.iii]
Source code is licensed under the
[Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
Documentation is licensed under the
[Creative Commons Attribution-ShareAlike 4.0 International (CC-BY-SA-4.0)](https://creativecommons.org/licenses/by-sa/4.0/)
Public License.
The project uses the [REUSE Specification](https://reuse.software/) for license
compliance. Every source file contains machine-readable SPDX license and
copyright headers, and license texts are provided in the [`LICENSES/`](LICENSES/)
directory. License compliance is verified by the `reuse` pre-commit hook.
### Copyright Statement [3.iv]
Copyright is held by the University of North Carolina at Chapel Hill. All
source files include the SPDX copyright notice:
```
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
```
### Quality Declaration [3.v]
This document is the quality declaration for `RVO2-3D Library` and is linked from
the project README.
## Testing [4]
### Feature Testing [4.i]
One system-level simulation scenario forms the test suite, run via `ctest`
(CMake) and `bazel test` (Bazel):
- **Sphere**: 812 agents initially distributed evenly on a sphere moving to
their antipodal positions.
This scenario exercises all documented features of the library, including
agent management, the k-D tree spatial index, and step-wise simulation.
### Public API Testing [4.ii]
The simulation scenario exercises all major public API functions of
`RVOSimulator`, `Vector3`, and `Plane`. Dedicated unit tests for individual
API functions are not currently present.
### Coverage [4.iii]
Code coverage is not currently tracked. The simulation scenario provides
broad functional coverage of the library, but no formal coverage measurement
or policy is in place. This is a known gap relative to Quality Level 2
requirements.
### Performance [4.iv]
No formal performance regression tests are in place. The simulation scenario
implicitly exercises performance characteristics of the library (e.g., the
Sphere scenario with 812 agents), but no automated performance benchmarks are
run in CI.
### Linters and Static Analysis [4.v]
The following linters and static analysis tools are enforced, with all warnings
treated as errors in CI:
- **clang-format**: code formatting enforced via [`.clang-format`](.clang-format)
(Google style with `PointerAlignment: Right`)
- **clang-tidy**: static analysis via [`.clang-tidy`](.clang-tidy), enabling
`bugprone-*`, `cert-*`, `clang-analyzer-*`, `cppcoreguidelines-*`,
`google-*`, `performance-*`, `portability-*`, `readability-*`, and
`openmp-*` checks, with `WarningsAsErrors: '*'`
- **cpplint**: Google C++ style enforcement via [`CPPLINT.cfg`](CPPLINT.cfg)
- **buildifier**: Bazel file formatting via [`.buildifier.json`](.buildifier.json)
- **CodeQL**: GitHub's semantic code analysis for C++ via
[`.github/workflows/codeql.yml`](.github/workflows/codeql.yml)
- **pre-commit hooks**: `codespell` (spell checking), `yamllint`, `actionlint`
(workflow validation), REUSE compliance, case-conflict detection, and
trailing-whitespace removal via [`.pre-commit-config.yaml`](.pre-commit-config.yaml)
## Dependencies [5]
### Direct Runtime ROS Dependencies [5.i]
None.
### Optional Direct Runtime ROS Dependencies [5.ii]
None.
### Direct Runtime non-ROS Dependencies [5.iii]
- **C++ Standard Library**: provided by the compiler toolchain (GCC, Clang, or
MSVC). This is a de facto standard with no quality level concerns.
- **OpenMP** (optional): a widely-adopted, ISO-standardized API for shared-memory
parallel computing, available in all major compiler toolchains. Enabling
OpenMP parallelizes simulation steps across available processors.
## Platform Support [6]
`RVO2-3D Library` is built and tested continuously via GitHub Actions on the
following platforms:
| Platform | Architecture | Build System |
|----------------|--------------|--------------|
| AlmaLinux 10 | amd64 | CMake, Bazel |
| Alpine Linux | amd64 | CMake, Bazel |
| Arch Linux | amd64 | CMake, Bazel |
| Fedora | amd64 | CMake, Bazel |
| openSUSE Leap | amd64 | CMake, Bazel |
| Ubuntu | amd64, arm64 | CMake, Bazel |
| macOS | arm64 | CMake, Bazel |
## Security [7]
### Vulnerability Disclosure Policy [7.i]
The security policy is documented in
[`.github/SECURITY.md`](.github/SECURITY.md). Vulnerability reports should be
sent to [geom@cs.unc.edu](mailto:geom@cs.unc.edu). The current release is
supported with security updates when practical.
================================================
FILE: README.md
================================================
<!--
README.md
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: CC-BY-SA-4.0
Creative Commons Attribution-ShareAlike 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* ShareAlike -- If you remix, transform, or build upon the material, you must
distribute your contributions under the same license as the original
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
-->
Optimal Reciprocal Collision Avoidance in Three Dimensions
==========================================================
<https://gamma.cs.unc.edu/RVO2/>
[](https://zenodo.org/badge/latestdoi/10955299)
We present a formal approach to reciprocal collision avoidance, where multiple
independent mobile robots or agents need to avoid collisions with each other
without communication among agents while moving in a common workspace. Our
formulation, optimal reciprocal collision avoidance (ORCA), provides sufficient
conditions for collision-free motion by letting each agent take half of the
responsibility of avoiding pairwise collisions. Selecting the optimal action for
each agent is reduced to solving a low-dimensional linear program, and we prove
that the resulting motions are smooth. We test our optimal reciprocal collision
avoidance approach on several dense and complex simulation scenarios workspaces
involving thousands of agents, and compute collision-free actions for all of
them in only a few milliseconds.
RVO2-3D Library is an open-source C++98 implementation of our algorithm in three
dimensions. It has a simple API for third-party applications. The user specifies
agents and their preferred velocities. The simulation is performed step-by-step
via a simple call to the library. The simulation is fully accessible and
manipulable during runtime. The library exploits multiple processors if they are
available using OpenMP for efficient parallelization of the simulation.

<!-- REUSE-IgnoreStart -->
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: Apache-2.0
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
<https://www.apache.org/licenses/LICENSE-2.0>
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Please send all bug reports to [geom@cs.unc.edu](mailto:geom@cs.unc.edu).
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<!-- REUSE-IgnoreEnd -->
================================================
FILE: RVO3D.pc.in
================================================
#
# RVO3D.pc
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
libdir=${exec_prefix}/@RVO3D_LIBRARY_DIR@
includedir=${prefix}/@RVO3D_INCLUDE_DIR@
Name: @RVO3D_NAME@
Description: @PROJECT_DESCRIPTION@
URL: @PROJECT_HOMEPAGE_URL@
Version: @PROJECT_VERSION@
Libs: -L${libdir} -l@RVO3D_LIBRARY@
Cflags: -I${includedir}
================================================
FILE: RVO3DConfig.cmake.in
================================================
# -*- mode: cmake; -*-
# vi: set ft=cmake:
#
# RVO3DConfig.cmake
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
@PACKAGE_INIT@
set(RVO3D_VERSION_MAJOR @PROJECT_VERSION_MAJOR@)
set(RVO3D_VERSION_MINOR @PROJECT_VERSION_MINOR@)
set(RVO3D_VERSION_PATCH @PROJECT_VERSION_PATCH@)
set(RVO3D_VERSION @PROJECT_VERSION@)
set_and_check(RVO3D_INCLUDE_DIRS "@PACKAGE_RVO3D_INCLUDE_DIR@")
set_and_check(RVO3D_LIBRARY_DIRS "@PACKAGE_RVO3D_LIBRARY_DIR@")
set(RVO3D_LIBRARIES @PROJECT_NAME@::@RVO3D_LIBRARY@)
check_required_components(@PROJECT_NAME@)
include("${CMAKE_CURRENT_LIST_DIR}/@PROJECT_NAME@Targets.cmake")
================================================
FILE: compose.yaml
================================================
#
# compose.yaml
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
---
services:
dev:
build:
context: .
dockerfile: Dockerfile
volumes:
- .:/workspace:cached
================================================
FILE: doc/CMakeLists.txt
================================================
# -*- mode: cmake; -*-
# vi: set ft=cmake:
#
# doc/CMakeLists.txt
# RVO2-3D Library
#
# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
# SPDX-License-Identifier: Apache-2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# Please send all bug reports to <geom@cs.unc.edu>.
#
# The authors may be contacted via:
#
# Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
# Dept. of Computer Science
# 201 S. Columbia St.
# Frederick P. Brooks, Jr. Computer Science Bldg.
# Chapel Hill, N.C. 27599-3175
# United States of America
#
# <https://gamma.cs.unc.edu/RVO2/>
#
if(BUILD_DOCUMENTATION AND Doxygen_FOUND)
set(DOXYGEN_PROJECT_NAME "${RVO3D_NAME}")
set(DOXYGEN_PROJECT_NUMBER ${PROJECT_VERSION})
set(DOXYGEN_PROJECT_BRIEF "${PROJECT_DESCRIPTION}")
set(DOXYGEN_STRIP_FROM_PATH
"${PROJECT_BINARY_DIR}/src" "${PROJECT_SOURCE_DIR}/src")
set(DOXYGEN_BUILTIN_STL_SUPPORT YES)
set(DOXYGEN_EXTRACT_ALL YES)
set(DOXYGEN_FILE_PATTERNS "*.h")
set(DOXYGEN_EXAMPLE_PATH "${PROJECT_SOURCE_DIR}/examples")
set(DOXYGEN_EXAMPLE_PATTERNS "*.cc")
set(DOXYGEN_HTML_HEADER "${CMAKE_CURRENT_SOURCE_DIR}/header.html")
set(DOXYGEN_HTML_FOOTER "${CMAKE_CURRENT_SOURCE_DIR}/footer.html")
set(DOXYGEN_HTML_EXTRA_STYLESHEET
"${CMAKE_CURRENT_SOURCE_DIR}/stylesheet.css")
set(DOXYGEN_SEARCHENGINE NO)
set(DOXYGEN_DOT_IMAGE_FORMAT svg)
set(DOXYGEN_INTERACTIVE_SVG YES)
doxygen_add_docs(documentation
"${PROJECT_BINARY_DIR}/src/Export.h"
"${PROJECT_SOURCE_DIR}/src/Plane.h"
"${PROJECT_SOURCE_DIR}/src/RVO.h"
"${PROJECT_SOURCE_DIR}/src/RVOSimulator.h"
"${PROJECT_SOURCE_DIR}/src/Vector3.h"
ALL
USE_STAMP_FILE)
if(ENABLE_INSTALLATION)
install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/html"
COMPONENT documentation
TYPE DOC)
endif()
endif()
================================================
FILE: doc/footer.html
================================================
<!-- HTML footer for doxygen 1.8.13 -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
$projectname. Copyright 2008 University of North Carolina at Chapel Hill.
</small></address>
</body>
</html>
================================================
FILE: doc/footer.html.license
================================================
footer.html
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: CC-BY-SA-4.0
Creative Commons Attribution-ShareAlike 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* ShareAlike -- If you remix, transform, or build upon the material, you must
distribute your contributions under the same license as the original
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
================================================
FILE: doc/header.html
================================================
<!--
RVO2-3D Library
SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill
SPDX-License-Identifier: CC-BY-SA-4.0
Creative Commons Attribution-ShareAlike 4.0 International Public License
You are free to:
* Share -- copy and redistribute the material in any medium or format
* ShareAlike -- If you remix, transform, or build upon the material, you must
distribute your contributions under the same license as the original
* Adapt -- remix, transform, and build upon the material for any purpose, even
commercially.
The licensor cannot revoke these freedoms as long as you follow the license
terms.
Under the following terms:
* Attribution -- You must give appropriate credit, provide a link to the
license, and indicate if changes were made. You may do so in any reasonable
manner, but not in any way that suggests the licensor endorses you or your
use.
* No additional restrictions -- You may not apply legal terms or technological
measures that legally restrict others from doing anything the license
permits.
Notices:
* You do not have to comply with the license for elements of the material in
the public domain or where your use is permitted by an applicable exception
or limitation.
* No warranties are given. The license may not give you all of the permissions
necessary for your intended use. For example, other rights such as publicity,
privacy, or moral rights may limit how you use the material.
Please send all bug reports to <geom@cs.unc.edu>.
The authors may be contacted via:
Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha
Dept. of Computer Science
201 S. Columbia St.
Frederick P. Brooks, Jr. Computer Science Bldg.
Chapel Hill, N.C. 27599-3175
United States of America
<https://gamma.cs.unc.edu/RVO2/>
-->
<!-- HTML header for doxygen 1.8.13 -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen $doxygenversion"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>$projectname: $tit
gitextract_3w42ou2q/ ├── .bazelignore ├── .bazelrc ├── .bazelversion ├── .bazelversion.license ├── .buildifier.json ├── .buildifier.json.license ├── .clang-format ├── .clang-tidy ├── .devcontainer/ │ ├── devcontainer.json │ └── devcontainer.json.license ├── .dockerignore ├── .editorconfig ├── .gitattributes ├── .github/ │ ├── CODEOWNERS │ ├── CODE_OF_CONDUCT.md │ ├── SECURITY.md │ ├── SUPPORT.md │ └── workflows/ │ ├── ci.yml │ └── codeql.yml ├── .gitignore ├── .pre-commit-config.yaml ├── .vscode/ │ ├── extensions.json │ ├── extensions.json.license │ ├── settings.json │ └── settings.json.license ├── .yamllint.yaml ├── .zenodo.json ├── .zenodo.json.license ├── BUILD.bazel ├── Brewfile ├── CITATION.cff ├── CMakeLists.txt ├── CMakePresets.json ├── CMakePresets.json.license ├── CPPLINT.cfg ├── CTestConfig.cmake ├── Dockerfile ├── LICENSE ├── LICENSES/ │ ├── Apache-2.0.txt │ ├── CC-BY-4.0.txt │ ├── CC-BY-SA-4.0.txt │ └── CC0-1.0.txt ├── MODULE.bazel ├── QUALITY_DECLARATION.md ├── README.md ├── RVO3D.pc.in ├── RVO3DConfig.cmake.in ├── compose.yaml ├── doc/ │ ├── CMakeLists.txt │ ├── footer.html │ ├── footer.html.license │ ├── header.html │ ├── header.html.license │ └── stylesheet.css ├── examples/ │ ├── BUILD.bazel │ ├── CMakeLists.txt │ └── Sphere.cc ├── include-what-you-use.imp ├── include-what-you-use.imp.license ├── package.xml ├── renovate.json ├── renovate.json.license ├── requirements.txt ├── src/ │ ├── Agent.cc │ ├── Agent.h │ ├── BUILD.bazel │ ├── CMakeLists.txt │ ├── KdTree.cc │ ├── KdTree.h │ ├── Plane.cc │ ├── Plane.h │ ├── RVO.h │ ├── RVOSimulator.cc │ ├── RVOSimulator.h │ ├── Vector3.cc │ └── Vector3.h └── triggers
SYMBOL INDEX (40 symbols across 11 files)
FILE: examples/Sphere.cc
function setupScenario (line 58) | void setupScenario(
function updateVisualization (line 85) | void updateVisualization(RVO::RVOSimulator *sim) {
function setPreferredVelocities (line 99) | void setPreferredVelocities(RVO::RVOSimulator *sim,
function reachedGoal (line 115) | bool reachedGoal(RVO::RVOSimulator *sim,
function main (line 128) | int main() {
FILE: src/Agent.cc
type RVO (line 42) | namespace RVO {
class Line (line 52) | class Line {
function linearProgram1 (line 86) | bool linearProgram1(const std::vector<Plane> &planes, std::size_t plan...
function linearProgram2 (line 169) | bool linearProgram2(const std::vector<Plane> &planes, std::size_t plan...
function linearProgram3 (line 258) | std::size_t linearProgram3(const std::vector<Plane> &planes, float rad...
function linearProgram4 (line 299) | void linearProgram4(const std::vector<Plane> &planes, std::size_t begi...
FILE: src/Agent.h
function namespace (line 49) | namespace RVO {
FILE: src/KdTree.cc
type RVO (line 43) | namespace RVO {
class KdTree::AgentTreeNode (line 54) | class KdTree::AgentTreeNode {
FILE: src/KdTree.h
function namespace (line 45) | namespace RVO {
FILE: src/Plane.cc
type RVO (line 36) | namespace RVO {
FILE: src/Plane.h
function namespace (line 45) | namespace RVO {
FILE: src/RVOSimulator.cc
type RVO (line 46) | namespace RVO {
function Plane (line 91) | const Plane &RVOSimulator::getAgentORCAPlane(std::size_t agentNo,
function Vector3 (line 178) | const Vector3 &RVOSimulator::getAgentPosition(std::size_t agentNo) con...
function Vector3 (line 182) | const Vector3 &RVOSimulator::getAgentPrefVelocity(std::size_t agentNo)...
function Vector3 (line 194) | const Vector3 &RVOSimulator::getAgentVelocity(std::size_t agentNo) con...
FILE: src/RVOSimulator.h
function namespace (line 49) | namespace RVO {
FILE: src/Vector3.cc
type RVO (line 39) | namespace RVO {
function Vector3 (line 66) | Vector3 &Vector3::operator=(const Vector3 &vector) {
function Vector3 (line 80) | Vector3 Vector3::operator-() const {
function Vector3 (line 88) | Vector3 Vector3::operator*(float scalar) const {
function Vector3 (line 92) | Vector3 Vector3::operator/(float scalar) const {
function Vector3 (line 98) | Vector3 Vector3::operator+(const Vector3 &vector) const {
function Vector3 (line 102) | Vector3 Vector3::operator-(const Vector3 &vector) const {
function Vector3 (line 114) | Vector3 &Vector3::operator*=(float scalar) {
function Vector3 (line 122) | Vector3 &Vector3::operator/=(float scalar) {
function Vector3 (line 132) | Vector3 &Vector3::operator+=(const Vector3 &vector) {
function Vector3 (line 140) | Vector3 &Vector3::operator-=(const Vector3 &vector) {
function Vector3 (line 148) | Vector3 operator*(float scalar, const Vector3 &vector) {
function abs (line 158) | float abs(const Vector3 &vector) { return std::sqrt(vector * vector); }
function absSq (line 160) | float absSq(const Vector3 &vector) { return vector * vector; }
function Vector3 (line 162) | Vector3 cross(const Vector3 &vector1, const Vector3 &vector2) {
function Vector3 (line 168) | Vector3 normalize(const Vector3 &vector) { return vector / abs(vector); }
FILE: src/Vector3.h
function namespace (line 47) | namespace RVO {
Condensed preview — 77 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (351K chars).
[
{
"path": ".bazelignore",
"chars": 1165,
"preview": "# -*- mode: gitignore; -*-\n# vi: set ft=gitignore:\n\n#\n# .bazelignore\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 "
},
{
"path": ".bazelrc",
"chars": 1479,
"preview": "#\n# .bazelrc\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX-Licen"
},
{
"path": ".bazelversion",
"chars": 4,
"preview": "9.x\n"
},
{
"path": ".bazelversion.license",
"chars": 1010,
"preview": ".bazelversion\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Ide"
},
{
"path": ".buildifier.json",
"chars": 90,
"preview": "{\n \"type\": \"auto\",\n \"mode\": \"fix\",\n \"lint\": \"fix\",\n \"warningsList\": [\n \"all\"\n ]\n}\n"
},
{
"path": ".buildifier.json.license",
"chars": 1013,
"preview": ".buildifier.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-"
},
{
"path": ".clang-format",
"chars": 1158,
"preview": "# -*- mode: yaml; -*-\n# vi: set ft=yaml:\n\n#\n# .clang-format\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Universit"
},
{
"path": ".clang-tidy",
"chars": 1874,
"preview": "# -*- mode: yaml; -*-\n# vi: set ft=yaml:\n\n#\n# .clang-tidy\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University "
},
{
"path": ".devcontainer/devcontainer.json",
"chars": 701,
"preview": "{\n \"name\": \"RVO2-3D\",\n \"customizations\": {\n \"vscode\": {\n \"extensions\": [\n \"bazelbuild.vscode-bazel\",\n "
},
{
"path": ".devcontainer/devcontainer.json.license",
"chars": 1014,
"preview": "devcontainer.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License"
},
{
"path": ".dockerignore",
"chars": 1193,
"preview": "# -*- mode: gitignore; -*-\n# vi: set ft=gitignore:\n\n#\n# .dockerignore\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008"
},
{
"path": ".editorconfig",
"chars": 1473,
"preview": "# -*- mode: editorconfig; -*-\n# vi: set ft=editorconfig:\n\n#\n# .editorconfig\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText"
},
{
"path": ".gitattributes",
"chars": 3485,
"preview": "# -*- mode: gitattributes; -*-\n# vi: set ft=gitattributes:\n\n#\n# .gitattributes\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightT"
},
{
"path": ".github/CODEOWNERS",
"chars": 1126,
"preview": "# -*- mode: gitignore; -*-\n# vi: set ft=gitignore:\n\n#\n# CODEOWNERS\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Un"
},
{
"path": ".github/CODE_OF_CONDUCT.md",
"chars": 6488,
"preview": "<!--\nCODE_OF_CONDUCT.md\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2014 Coraline Ada Ehmke\nSPDX-License-Identifier: CC-BY-"
},
{
"path": ".github/SECURITY.md",
"chars": 2356,
"preview": "<!--\nSECURITY.md\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-"
},
{
"path": ".github/SUPPORT.md",
"chars": 2217,
"preview": "<!--\nSUPPORT.md\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-I"
},
{
"path": ".github/workflows/ci.yml",
"chars": 20578,
"preview": "#\n# ci.yml\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX-License"
},
{
"path": ".github/workflows/codeql.yml",
"chars": 1638,
"preview": "#\n# codeql.yml\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX-Lic"
},
{
"path": ".gitignore",
"chars": 1223,
"preview": "# -*- mode: gitignore; -*-\n# vi: set ft=gitignore:\n\n#\n# .gitignore\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Un"
},
{
"path": ".pre-commit-config.yaml",
"chars": 1136,
"preview": "---\nrepos:\n - repo: https://codeberg.org/fsfe/reuse-tool\n rev: v6.2.0\n hooks:\n - id: reuse-lint-file\n\n - re"
},
{
"path": ".vscode/extensions.json",
"chars": 259,
"preview": "{\n \"recommendations\": [\n \"bazelbuild.vscode-bazel\",\n \"editorconfig.editorconfig\",\n \"ms-vscode.cmake-tools\",\n "
},
{
"path": ".vscode/extensions.json.license",
"chars": 1012,
"preview": "extensions.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-I"
},
{
"path": ".vscode/settings.json",
"chars": 134,
"preview": "{\n \"cmake.buildDirectory\": \"${workspaceFolder}/_build\",\n \"cmake.preferredGenerators\": [\n \"Ninja Multi-Config\",\n "
},
{
"path": ".vscode/settings.json.license",
"chars": 1010,
"preview": "settings.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Ide"
},
{
"path": ".yamllint.yaml",
"chars": 1143,
"preview": "#\n# .yamllint.yaml\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX"
},
{
"path": ".zenodo.json",
"chars": 2625,
"preview": "{\n \"upload_type\": \"software\",\n \"title\": \"Optimal Reciprocal Collision Avoidance in Three Dimensions\",\n \"creators\": [\n"
},
{
"path": ".zenodo.json.license",
"chars": 1450,
"preview": ".zenodo.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: No Copyright\nSPDX-License-Identifier: CC0-1.0\n\nCC0 1.0 Universal P"
},
{
"path": "BUILD.bazel",
"chars": 6442,
"preview": "# -*- mode: bazel; -*-\n# vi: set ft=bazel:\n\n#\n# BUILD.bazel\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Universit"
},
{
"path": "Brewfile",
"chars": 1461,
"preview": "# -*- mode: ruby; -*-\n# vi: set ft=ruby:\n\n#\n# Brewfile\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of "
},
{
"path": "CITATION.cff",
"chars": 14433,
"preview": "# -*- mode: yaml; -*-\n# vi: set ft=yaml:\n\n#\n# CITATION.cff\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University"
},
{
"path": "CMakeLists.txt",
"chars": 11560,
"preview": "# -*- mode: cmake; -*-\n# vi: set ft=cmake:\n\n#\n# CMakeLists.txt\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Univer"
},
{
"path": "CMakePresets.json",
"chars": 100,
"preview": "{\n \"version\": 6,\n \"cmakeMinimumRequired\": {\n \"major\": 3,\n \"minor\": 26,\n \"patch\": 0\n }\n}\n"
},
{
"path": "CMakePresets.json.license",
"chars": 1014,
"preview": "CMakePresets.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License"
},
{
"path": "CPPLINT.cfg",
"chars": 1233,
"preview": "# -*- mode: ini; -*-\n# vi: set ft=ini:\n\n#\n# CPPLINT.cfg\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of"
},
{
"path": "CTestConfig.cmake",
"chars": 1311,
"preview": "#\n# CTestConfig.cmake\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# S"
},
{
"path": "Dockerfile",
"chars": 3715,
"preview": "# syntax=docker.io/docker/dockerfile:1\n\n#\n# Dockerfile\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of "
},
{
"path": "LICENSE",
"chars": 11358,
"preview": "\n Apache License\n Version 2.0, January 2004\n "
},
{
"path": "LICENSES/Apache-2.0.txt",
"chars": 10843,
"preview": " Apache License\n Version 2.0, January 2004\n "
},
{
"path": "LICENSES/CC-BY-4.0.txt",
"chars": 17220,
"preview": "Creative Commons Attribution 4.0 International\n\nCreative Commons Corporation (\"Creative Commons\") is not a law firm and "
},
{
"path": "LICENSES/CC-BY-SA-4.0.txt",
"chars": 18602,
"preview": "Creative Commons Attribution-ShareAlike 4.0 International\n\nCreative Commons Corporation (\"Creative Commons\") is not a la"
},
{
"path": "LICENSES/CC0-1.0.txt",
"chars": 7048,
"preview": "Creative Commons Legal Code\n\nCC0 1.0 Universal\n\n CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE\n"
},
{
"path": "MODULE.bazel",
"chars": 2008,
"preview": "# -*- mode: bazel; -*-\n# vi: set ft=bazel:\n\n#\n# MODULE.bazel\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Universi"
},
{
"path": "QUALITY_DECLARATION.md",
"chars": 9776,
"preview": "<!--\nQUALITY_DECLARATION.md\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSP"
},
{
"path": "README.md",
"chars": 4494,
"preview": "<!--\nREADME.md\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Id"
},
{
"path": "RVO3D.pc.in",
"chars": 1367,
"preview": "#\n# RVO3D.pc\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX-Licen"
},
{
"path": "RVO3DConfig.cmake.in",
"chars": 1607,
"preview": "# -*- mode: cmake; -*-\n# vi: set ft=cmake:\n\n#\n# RVO3DConfig.cmake\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Uni"
},
{
"path": "compose.yaml",
"chars": 1185,
"preview": "#\n# compose.yaml\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX-L"
},
{
"path": "doc/CMakeLists.txt",
"chars": 2350,
"preview": "# -*- mode: cmake; -*-\n# vi: set ft=cmake:\n\n#\n# doc/CMakeLists.txt\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Un"
},
{
"path": "doc/footer.html",
"chars": 228,
"preview": "<!-- HTML footer for doxygen 1.8.13 -->\n<!-- start footer part -->\n<hr class=\"footer\"/><address class=\"footer\"><small>\n$"
},
{
"path": "doc/footer.html.license",
"chars": 1810,
"preview": "footer.html\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Ident"
},
{
"path": "doc/header.html",
"chars": 3097,
"preview": "<!--\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Identifier: "
},
{
"path": "doc/header.html.license",
"chars": 1810,
"preview": "header.html\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Ident"
},
{
"path": "doc/stylesheet.css",
"chars": 27030,
"preview": "/*\n * stylesheet.css\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n "
},
{
"path": "examples/BUILD.bazel",
"chars": 1633,
"preview": "# -*- mode: bazel; -*-\n# vi: set ft=bazel:\n\n#\n# examples/BUILD.bazel\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 "
},
{
"path": "examples/CMakeLists.txt",
"chars": 2440,
"preview": "# -*- mode: cmake; -*-\n# vi: set ft=cmake:\n\n#\n# examples/CMakeLists.txt\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 20"
},
{
"path": "examples/Sphere.cc",
"chars": 4433,
"preview": "/*\n * Sphere.cc\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPD"
},
{
"path": "include-what-you-use.imp",
"chars": 163,
"preview": "[\n {\n \"include\": [\"@<__algorithm/.*>\", \"private\", \"<algorithm>\", \"public\"]\n },\n {\n \"include\": [\"@<__utility/.*>"
},
{
"path": "include-what-you-use.imp.license",
"chars": 1021,
"preview": "include-what-you-use.imp\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-"
},
{
"path": "package.xml",
"chars": 1832,
"preview": "<?xml version=\"1.0\"?>\n<?xml-model href=\"http://download.ros.org/schema/package_format3.xsd\"\n schematypens=\"http://www.w"
},
{
"path": "renovate.json",
"chars": 114,
"preview": "{\n \"$schema\": \"https://docs.renovatebot.com/renovate-schema.json\",\n \"extends\": [\n \"config:recommended\"\n ]\n}\n"
},
{
"path": "renovate.json.license",
"chars": 1010,
"preview": "renovate.json\nRVO2-3D Library\n\nSPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\nSPDX-License-Ide"
},
{
"path": "requirements.txt",
"chars": 1105,
"preview": "#\n# requirements.txt\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SP"
},
{
"path": "src/Agent.cc",
"chars": 15773,
"preview": "/*\n * Agent.cc\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPDX"
},
{
"path": "src/Agent.h",
"chars": 2877,
"preview": "/*\n * Agent.h\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPDX-"
},
{
"path": "src/BUILD.bazel",
"chars": 3898,
"preview": "# -*- mode: bazel; -*-\n# vi: set ft=bazel:\n\n#\n# src/BUILD.bazel\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Unive"
},
{
"path": "src/CMakeLists.txt",
"chars": 4014,
"preview": "# -*- mode: cmake; -*-\n# vi: set ft=cmake:\n\n#\n# src/CMakeLists.txt\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 Un"
},
{
"path": "src/KdTree.cc",
"chars": 8316,
"preview": "/*\n * KdTree.cc\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPD"
},
{
"path": "src/KdTree.h",
"chars": 3232,
"preview": "/*\n * KdTree.h\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPDX"
},
{
"path": "src/Plane.cc",
"chars": 1171,
"preview": "/*\n * Plane.cc\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPDX"
},
{
"path": "src/Plane.h",
"chars": 1574,
"preview": "/*\n * Plane.h\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPDX-"
},
{
"path": "src/RVO.h",
"chars": 14939,
"preview": "/*\n * RVO.h\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPDX-Li"
},
{
"path": "src/RVOSimulator.cc",
"chars": 7468,
"preview": "/*\n * RVOSimulator.cc\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n"
},
{
"path": "src/RVOSimulator.h",
"chars": 17937,
"preview": "/*\n * RVOSimulator.h\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n "
},
{
"path": "src/Vector3.cc",
"chars": 4421,
"preview": "/*\n * Vector3.cc\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SP"
},
{
"path": "src/Vector3.h",
"chars": 11525,
"preview": "/*\n * Vector3.h\n * RVO2-3D Library\n *\n * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n * SPD"
},
{
"path": "triggers",
"chars": 1086,
"preview": "#\n# triggers\n# RVO2-3D Library\n#\n# SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill\n# SPDX-Licen"
}
]
About this extraction
This page contains the full source code of the snape/RVO2-3D GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 77 files (327.3 KB), approximately 86.4k tokens, and a symbol index with 40 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.