Full Code of snape/RVO2-3D for AI

main 10eb1dae058e cached
77 files
327.3 KB
86.4k tokens
40 symbols
1 requests
Download .txt
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/>

[![DOI](https://zenodo.org/badge/10955299.svg)](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.

![Build Status](https://github.com/snape/RVO2-3D/actions/workflows/ci.yml/badge.svg?branch=main)

<!-- 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

&nbsp;&nbsp;<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
Download .txt
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
Download .txt
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.

Copied to clipboard!