├── .bazelignore ├── .bazelrc ├── .bazelversion ├── .bazelversion.license ├── .buildifier.json ├── .buildifier.json.license ├── .devcontainer ├── devcontainer.json └── devcontainer.json.license ├── .dockerignore ├── .editorconfig ├── .reuse └── dep5 ├── .vscode ├── extensions.json ├── extensions.json.license ├── launch.json ├── launch.json.license ├── settings.json ├── settings.json.license ├── tasks.json └── tasks.json.license ├── .yamllint.yaml ├── .zenodo.json.license ├── BUILD.bazel ├── Blocks ├── BUILD.bazel ├── Blocks.cs ├── Blocks.csproj └── CMakeLists.txt ├── CITATION.cff ├── CMakeLists.txt ├── CTestConfig.cmake ├── Circle ├── BUILD.bazel ├── CMakeLists.txt ├── Circle.cs └── Circle.csproj ├── Dockerfile ├── LICENSE ├── LICENSES ├── Apache-2.0.txt ├── CC-BY-4.0.txt ├── CC-BY-SA-4.0.txt └── CC0-1.0.txt ├── README.md ├── RVOCS.sln ├── RVOCS.sln.license ├── RVOCS ├── Agent.cs ├── BUILD.bazel ├── CMakeLists.txt ├── KdTree.cs ├── Line.cs ├── Obstacle.cs ├── RVOCS.csproj ├── RVOMath.cs ├── Simulator.cs └── Vector2.cs ├── WORKSPACE.bazel ├── compose.yaml ├── doc ├── Doxyfile ├── footer.html ├── footer.html.license ├── header.html ├── header.html.license └── stylesheet.css ├── global.json ├── global.json.license └── requirements.txt /.bazelignore: -------------------------------------------------------------------------------- 1 | # -*- mode: gitignore; -*- 2 | # vi: set ft=gitignore: 3 | 4 | # 5 | # .bazelignore 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | _build/ 38 | .github/ 39 | .idea/ 40 | .reuse/ 41 | .vs/ 42 | bin/ 43 | cmake-build-*/ 44 | html/ 45 | obj/ 46 | -------------------------------------------------------------------------------- /.bazelrc: -------------------------------------------------------------------------------- 1 | # 2 | # .bazelrc 3 | # RVO2 Library C# 4 | # 5 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # https://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | # Please send all bug reports to . 21 | # 22 | # The authors may be contacted via: 23 | # 24 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | # Dept. of Computer Science 26 | # 201 S. Columbia St. 27 | # Frederick P. Brooks, Jr. Computer Science Bldg. 28 | # Chapel Hill, N.C. 27599-3175 29 | # United States of America 30 | # 31 | # 32 | # 33 | 34 | build --enable_runfiles=true 35 | build --incompatible_config_setting_private_default_visibility=true 36 | build --incompatible_disable_starlark_host_transitions=true 37 | build --incompatible_strict_action_env=true 38 | build --legacy_external_runfiles=false 39 | build --remote_upload_local_results=false 40 | build --sandbox_default_allow_network=false 41 | 42 | build:macos --apple_platform_type=macos 43 | 44 | common --enable_platform_specific_config=true 45 | common --heap_dump_on_oom=true 46 | 47 | startup --host_jvm_args=-DBAZEL_TRACK_SOURCE_DIRECTORIES=1 48 | startup --windows_enable_symlinks 49 | 50 | test --incompatible_exclusive_test_sandboxed=true 51 | test --test_verbose_timeout_warnings=true 52 | 53 | try-import %workspace%/.user.bazelrc 54 | -------------------------------------------------------------------------------- /.bazelversion: -------------------------------------------------------------------------------- 1 | latest 2 | -------------------------------------------------------------------------------- /.bazelversion.license: -------------------------------------------------------------------------------- 1 | .bazelversion 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.buildifier.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "auto", 3 | "mode": "fix", 4 | "lint": "fix", 5 | "warningsList": [ 6 | "all" 7 | ] 8 | } 9 | -------------------------------------------------------------------------------- /.buildifier.json.license: -------------------------------------------------------------------------------- 1 | .buildifier.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "RVO2-CS", 3 | "customizations": { 4 | "vscode": { 5 | "extensions": [ 6 | "bazelbuild.vscode-bazel", 7 | "editorconfig.editorconfig", 8 | "ms-dotnettools.csharp", 9 | "ms-vscode.vscode-markdown-notebook", 10 | "ms-vscode.mono-debug", 11 | "ms-vscode-remote.remote-containers", 12 | "redhat.vscode-yaml" 13 | ] 14 | } 15 | }, 16 | "dockerComposeFile": "../compose.yaml", 17 | "overrideCommand": true, 18 | "service": "dev", 19 | "workspaceFolder": "/workspace" 20 | } 21 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json.license: -------------------------------------------------------------------------------- 1 | devcontainer.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.dockerignore: -------------------------------------------------------------------------------- 1 | # -*- mode: gitignore; -*- 2 | # vi: set ft=gitignore: 3 | 4 | # 5 | # .dockerignore 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | _build/ 38 | .idea/ 39 | .user.bazelrc 40 | .vs/ 41 | **/bin/ 42 | **/html/ 43 | **/obj/ 44 | bazel-* 45 | cmake-build-*/ 46 | -------------------------------------------------------------------------------- /.editorconfig: -------------------------------------------------------------------------------- 1 | # -*- mode: editorconfig; -*- 2 | # vi: set ft=editorconfig: 3 | 4 | # 5 | # .editorconfig 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | root = true 38 | 39 | [*] 40 | charset = utf-8 41 | end_of_line = lf 42 | indent_size = 2 43 | indent_style = space 44 | insert_final_newline = true 45 | max_line_length = 80 46 | trim_trailing_whitespace = true 47 | 48 | [*.bazel] 49 | indent_size = 4 50 | 51 | [*.cs] 52 | end_of_line = crlf 53 | indent_size = 4 54 | 55 | [.bazelignore] 56 | indent_size = 4 57 | 58 | [.bazelrc] 59 | indent_size = 4 60 | 61 | [Brewfile] 62 | indent_size = 4 63 | 64 | [dep5] 65 | indent_size = 1 66 | 67 | csharp_indent_block_contents = true 68 | csharp_indent_braces = false 69 | csharp_indent_case_contents = true 70 | csharp_indent_case_contents_when_block = true 71 | csharp_indent_labels = one_less_than_current 72 | csharp_indent_switch_labels = true 73 | 74 | csharp_new_line_before_catch = true 75 | csharp_new_line_before_else = true 76 | csharp_new_line_before_finally = true 77 | csharp_new_line_before_members_in_anonymous_types = true 78 | csharp_new_line_before_members_in_object_initializers = true 79 | csharp_new_line_before_open_brace = all 80 | csharp_new_line_between_query_expression_clauses = true 81 | 82 | csharp_prefer_braces = true:silent 83 | csharp_prefer_simple_using_statement = true:suggestion 84 | 85 | csharp_prefer_simple_default_expression = true:suggestion 86 | csharp_style_deconstructed_variable_declaration = true:suggestion 87 | csharp_style_inlined_variable_declaration = true:suggestion 88 | csharp_style_pattern_local_over_anonymous_function = true:suggestion 89 | csharp_style_prefer_index_operator = true:suggestion 90 | csharp_style_prefer_range_operator = true:suggestion 91 | csharp_style_throw_expression = true:suggestion 92 | csharp_style_unused_value_assignment_preference = discard_variable:suggestion 93 | csharp_style_unused_value_expression_statement_preference = discard_variable:silent 94 | 95 | csharp_prefer_static_local_function = true:warning 96 | csharp_preferred_modifier_order = public,private,protected,internal,static,extern,new,virtual,abstract,sealed,override,readonly,unsafe,volatile,async:silent 97 | 98 | csharp_preserve_single_line_blocks = true 99 | csharp_preserve_single_line_statements = true 100 | 101 | csharp_space_after_cast = false 102 | csharp_space_after_colon_in_inheritance_clause = true 103 | csharp_space_after_comma = true 104 | csharp_space_after_dot = false 105 | csharp_space_after_keywords_in_control_flow_statements = true 106 | csharp_space_after_semicolon_in_for_statement = true 107 | csharp_space_around_binary_operators = before_and_after 108 | csharp_space_around_declaration_statements = false 109 | csharp_space_before_colon_in_inheritance_clause = true 110 | csharp_space_before_comma = false 111 | csharp_space_before_dot = false 112 | csharp_space_before_open_square_brackets = false 113 | csharp_space_before_semicolon_in_for_statement = false 114 | csharp_space_between_empty_square_brackets = false 115 | csharp_space_between_method_call_empty_parameter_list_parentheses = false 116 | csharp_space_between_method_call_name_and_opening_parenthesis = false 117 | csharp_space_between_method_call_parameter_list_parentheses = false 118 | csharp_space_between_method_declaration_empty_parameter_list_parentheses = false 119 | csharp_space_between_method_declaration_name_and_open_parenthesis = false 120 | csharp_space_between_method_declaration_parameter_list_parentheses = false 121 | csharp_space_between_parentheses = false 122 | csharp_space_between_square_brackets = false 123 | 124 | csharp_style_conditional_delegate_call = true:suggestion 125 | 126 | csharp_style_expression_bodied_accessors = true:silent 127 | csharp_style_expression_bodied_constructors = false:silent 128 | csharp_style_expression_bodied_indexers = true:silent 129 | csharp_style_expression_bodied_lambdas = true:suggestion 130 | csharp_style_expression_bodied_local_functions = false:silent 131 | csharp_style_expression_bodied_methods = false:silent 132 | csharp_style_expression_bodied_operators = false:silent 133 | csharp_style_expression_bodied_properties = true:silent 134 | 135 | csharp_style_pattern_matching_over_as_with_null_check = true:suggestion 136 | csharp_style_pattern_matching_over_is_with_cast_check = true:suggestion 137 | csharp_style_prefer_not_pattern = true:suggestion 138 | csharp_style_prefer_pattern_matching = true:silent 139 | csharp_style_prefer_switch_expression = true:suggestion 140 | 141 | csharp_style_var_elsewhere = false:silent 142 | csharp_style_var_for_built_in_types = false:silent 143 | csharp_style_var_when_type_is_apparent = false:silent 144 | 145 | csharp_using_directive_placement = outside_namespace:silent 146 | 147 | dotnet_code_quality_unused_parameters = all:suggestion 148 | 149 | dotnet_naming_rule.enums_should_be_pascalcase.severity = suggestion 150 | dotnet_naming_rule.enums_should_be_pascalcase.style = pascalcase 151 | dotnet_naming_rule.enums_should_be_pascalcase.symbols = enums 152 | 153 | dotnet_naming_rule.events_should_be_pascalcase.severity = suggestion 154 | dotnet_naming_rule.events_should_be_pascalcase.style = pascalcase 155 | dotnet_naming_rule.events_should_be_pascalcase.symbols = events 156 | 157 | dotnet_naming_rule.interfaces_should_be_ipascalcase.severity = suggestion 158 | dotnet_naming_rule.interfaces_should_be_ipascalcase.style = ipascalcase 159 | dotnet_naming_rule.interfaces_should_be_ipascalcase.symbols = interfaces 160 | 161 | dotnet_naming_rule.local_constants_should_be_camelcase.severity = suggestion 162 | dotnet_naming_rule.local_constants_should_be_camelcase.style = camelcase 163 | dotnet_naming_rule.local_constants_should_be_camelcase.symbols = local_constants 164 | 165 | dotnet_naming_rule.local_functions_should_be_pascalcase.severity = suggestion 166 | dotnet_naming_rule.local_functions_should_be_pascalcase.style = pascalcase 167 | dotnet_naming_rule.local_functions_should_be_pascalcase.symbols = local_functions 168 | 169 | dotnet_naming_rule.local_variables_should_be_camelcase.severity = suggestion 170 | dotnet_naming_rule.local_variables_should_be_camelcase.style = camelcase 171 | dotnet_naming_rule.local_variables_should_be_camelcase.symbols = local_variables 172 | 173 | dotnet_naming_rule.methods_should_be_pascalcase.severity = none 174 | dotnet_naming_rule.methods_should_be_pascalcase.style = pascalcase 175 | dotnet_naming_rule.methods_should_be_pascalcase.symbols = methods 176 | 177 | dotnet_naming_rule.non_field_members_should_be_pascalcase.severity = suggestion 178 | dotnet_naming_rule.non_field_members_should_be_pascalcase.style = pascalcase 179 | dotnet_naming_rule.non_field_members_should_be_pascalcase.symbols = non_field_members 180 | 181 | dotnet_naming_rule.parameters_should_be_camelcase.severity = suggestion 182 | dotnet_naming_rule.parameters_should_be_camelcase.style = camelcase 183 | dotnet_naming_rule.parameters_should_be_camelcase.symbols = parameters 184 | 185 | dotnet_naming_rule.private_constant_fields_should_be_pascalcase.severity = suggestion 186 | dotnet_naming_rule.private_constant_fields_should_be_pascalcase.style = pascalcase 187 | dotnet_naming_rule.private_constant_fields_should_be_pascalcase.symbols = private_constant_fields 188 | 189 | dotnet_naming_rule.private_fields_should_be__camelcase.severity = none 190 | dotnet_naming_rule.private_fields_should_be__camelcase.style = _camelcase 191 | dotnet_naming_rule.private_fields_should_be__camelcase.symbols = private_fields 192 | 193 | dotnet_naming_rule.private_static_fields_should_be_s_camelcase.severity = suggestion 194 | dotnet_naming_rule.private_static_fields_should_be_s_camelcase.style = s_camelcase 195 | dotnet_naming_rule.private_static_fields_should_be_s_camelcase.symbols = private_static_fields 196 | 197 | dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.severity = suggestion 198 | dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.style = pascalcase 199 | dotnet_naming_rule.private_static_readonly_fields_should_be_pascalcase.symbols = private_static_readonly_fields 200 | 201 | dotnet_naming_rule.properties_should_be_pascalcase.severity = suggestion 202 | dotnet_naming_rule.properties_should_be_pascalcase.style = pascalcase 203 | dotnet_naming_rule.properties_should_be_pascalcase.symbols = properties 204 | 205 | dotnet_naming_rule.public_constant_fields_should_be_pascalcase.severity = suggestion 206 | dotnet_naming_rule.public_constant_fields_should_be_pascalcase.style = pascalcase 207 | dotnet_naming_rule.public_constant_fields_should_be_pascalcase.symbols = public_constant_fields 208 | 209 | dotnet_naming_rule.public_fields_should_be_pascalcase.severity = none 210 | dotnet_naming_rule.public_fields_should_be_pascalcase.style = pascalcase 211 | dotnet_naming_rule.public_fields_should_be_pascalcase.symbols = public_fields 212 | 213 | dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.severity = suggestion 214 | dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.style = pascalcase 215 | dotnet_naming_rule.public_static_readonly_fields_should_be_pascalcase.symbols = public_static_readonly_fields 216 | 217 | dotnet_naming_rule.type_parameters_should_be_tpascalcase.severity = suggestion 218 | dotnet_naming_rule.type_parameters_should_be_tpascalcase.style = tpascalcase 219 | dotnet_naming_rule.type_parameters_should_be_tpascalcase.symbols = type_parameters 220 | 221 | dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.severity = suggestion 222 | dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.style = pascalcase 223 | dotnet_naming_rule.types_and_namespaces_should_be_pascalcase.symbols = types_and_namespaces 224 | 225 | dotnet_naming_style._camelcase.capitalization = camel_case 226 | dotnet_naming_style._camelcase.required_prefix = _ 227 | dotnet_naming_style._camelcase.required_suffix = 228 | dotnet_naming_style._camelcase.word_separator = 229 | 230 | dotnet_naming_style.camelcase.capitalization = camel_case 231 | dotnet_naming_style.camelcase.required_prefix = 232 | dotnet_naming_style.camelcase.required_suffix = 233 | dotnet_naming_style.camelcase.word_separator = 234 | 235 | dotnet_naming_style.ipascalcase.capitalization = pascal_case 236 | dotnet_naming_style.ipascalcase.required_prefix = I 237 | dotnet_naming_style.ipascalcase.required_suffix = 238 | dotnet_naming_style.ipascalcase.word_separator = 239 | 240 | dotnet_naming_style.pascalcase.capitalization = pascal_case 241 | dotnet_naming_style.pascalcase.required_prefix = 242 | dotnet_naming_style.pascalcase.required_suffix = 243 | dotnet_naming_style.pascalcase.word_separator = 244 | 245 | dotnet_naming_style.s_camelcase.capitalization = camel_case 246 | dotnet_naming_style.s_camelcase.required_prefix = s_ 247 | dotnet_naming_style.s_camelcase.required_suffix = 248 | dotnet_naming_style.s_camelcase.word_separator = 249 | 250 | dotnet_naming_style.tpascalcase.capitalization = pascal_case 251 | dotnet_naming_style.tpascalcase.required_prefix = T 252 | dotnet_naming_style.tpascalcase.required_suffix = 253 | dotnet_naming_style.tpascalcase.word_separator = 254 | 255 | dotnet_naming_symbols.enums.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 256 | dotnet_naming_symbols.enums.applicable_kinds = enum 257 | dotnet_naming_symbols.enums.required_modifiers = 258 | 259 | dotnet_naming_symbols.events.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 260 | dotnet_naming_symbols.events.applicable_kinds = event 261 | dotnet_naming_symbols.events.required_modifiers = 262 | 263 | dotnet_naming_symbols.interfaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 264 | dotnet_naming_symbols.interfaces.applicable_kinds = interface 265 | dotnet_naming_symbols.interfaces.required_modifiers = 266 | 267 | dotnet_naming_symbols.local_constants.applicable_accessibilities = local 268 | dotnet_naming_symbols.local_constants.applicable_kinds = local 269 | dotnet_naming_symbols.local_constants.required_modifiers = const 270 | 271 | dotnet_naming_symbols.local_functions.applicable_accessibilities = * 272 | dotnet_naming_symbols.local_functions.applicable_kinds = local_function 273 | dotnet_naming_symbols.local_functions.required_modifiers = 274 | 275 | dotnet_naming_symbols.local_variables.applicable_accessibilities = local 276 | dotnet_naming_symbols.local_variables.applicable_kinds = local 277 | dotnet_naming_symbols.local_variables.required_modifiers = 278 | 279 | dotnet_naming_symbols.methods.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 280 | dotnet_naming_symbols.methods.applicable_kinds = method 281 | dotnet_naming_symbols.methods.required_modifiers = 282 | 283 | dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 284 | dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method 285 | dotnet_naming_symbols.non_field_members.required_modifiers = 286 | 287 | dotnet_naming_symbols.parameters.applicable_accessibilities = * 288 | dotnet_naming_symbols.parameters.applicable_kinds = parameter 289 | dotnet_naming_symbols.parameters.required_modifiers = 290 | 291 | dotnet_naming_symbols.private_constant_fields.applicable_accessibilities = private, protected, protected_internal, private_protected 292 | dotnet_naming_symbols.private_constant_fields.applicable_kinds = field 293 | dotnet_naming_symbols.private_constant_fields.required_modifiers = const 294 | 295 | dotnet_naming_symbols.private_fields.applicable_accessibilities = private, protected, protected_internal, private_protected 296 | dotnet_naming_symbols.private_fields.applicable_kinds = field 297 | dotnet_naming_symbols.private_fields.required_modifiers = 298 | 299 | dotnet_naming_symbols.private_static_fields.applicable_accessibilities = private, protected, protected_internal, private_protected 300 | dotnet_naming_symbols.private_static_fields.applicable_kinds = field 301 | dotnet_naming_symbols.private_static_fields.required_modifiers = static 302 | 303 | dotnet_naming_symbols.private_static_readonly_fields.applicable_accessibilities = private, protected, protected_internal, private_protected 304 | dotnet_naming_symbols.private_static_readonly_fields.applicable_kinds = field 305 | dotnet_naming_symbols.private_static_readonly_fields.required_modifiers = readonly, static 306 | 307 | dotnet_naming_symbols.properties.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 308 | dotnet_naming_symbols.properties.applicable_kinds = property 309 | 310 | dotnet_naming_symbols.properties.required_modifiers = 311 | 312 | dotnet_naming_symbols.public_constant_fields.applicable_accessibilities = public, internal 313 | dotnet_naming_symbols.public_constant_fields.applicable_kinds = field 314 | dotnet_naming_symbols.public_constant_fields.required_modifiers = const 315 | 316 | dotnet_naming_symbols.public_fields.applicable_accessibilities = public, internal 317 | dotnet_naming_symbols.public_fields.applicable_kinds = field 318 | dotnet_naming_symbols.public_fields.required_modifiers = 319 | 320 | dotnet_naming_symbols.public_static_readonly_fields.applicable_accessibilities = public, internal 321 | dotnet_naming_symbols.public_static_readonly_fields.applicable_kinds = field 322 | dotnet_naming_symbols.public_static_readonly_fields.required_modifiers = readonly, static 323 | 324 | dotnet_naming_symbols.type_parameters.applicable_accessibilities = * 325 | dotnet_naming_symbols.type_parameters.applicable_kinds = namespace 326 | dotnet_naming_symbols.type_parameters.required_modifiers = 327 | 328 | dotnet_naming_symbols.types_and_namespaces.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected 329 | dotnet_naming_symbols.types_and_namespaces.applicable_kinds = namespace, class, struct, interface, enum 330 | dotnet_naming_symbols.types_and_namespaces.required_modifiers = 331 | 332 | dotnet_remove_unnecessary_suppression_exclusions = none 333 | 334 | dotnet_separate_import_directive_groups = true 335 | dotnet_sort_system_directives_first = true 336 | 337 | dotnet_style_coalesce_expression = true:suggestion 338 | dotnet_style_collection_initializer = true:suggestion 339 | dotnet_style_explicit_tuple_names = true:suggestion 340 | dotnet_style_null_propagation = true:suggestion 341 | dotnet_style_object_initializer = true:suggestion 342 | dotnet_style_operator_placement_when_wrapping = beginning_of_line 343 | dotnet_style_prefer_auto_properties = true:suggestion 344 | dotnet_style_prefer_compound_assignment = true:suggestion 345 | dotnet_style_prefer_conditional_expression_over_assignment = true:suggestion 346 | dotnet_style_prefer_conditional_expression_over_return = true:suggestion 347 | dotnet_style_prefer_inferred_anonymous_type_member_names = true:suggestion 348 | dotnet_style_prefer_inferred_tuple_names = true:suggestion 349 | dotnet_style_prefer_is_null_check_over_reference_equality_method = true:suggestion 350 | dotnet_style_prefer_simplified_boolean_expressions = true:suggestion 351 | dotnet_style_prefer_simplified_interpolation = true:suggestion 352 | 353 | dotnet_style_qualification_for_event = false:silent 354 | dotnet_style_qualification_for_field = false:silent 355 | dotnet_style_qualification_for_method = false:silent 356 | dotnet_style_qualification_for_property = false:silent 357 | 358 | dotnet_style_parentheses_in_arithmetic_binary_operators = always_for_clarity:silent 359 | dotnet_style_parentheses_in_other_binary_operators = always_for_clarity:silent 360 | dotnet_style_parentheses_in_other_operators = never_if_unnecessary:silent 361 | dotnet_style_parentheses_in_relational_binary_operators = always_for_clarity:silent 362 | 363 | dotnet_style_predefined_type_for_locals_parameters_members = true:silent 364 | dotnet_style_predefined_type_for_member_access = true:silent 365 | 366 | dotnet_style_readonly_field = true:warning 367 | 368 | dotnet_style_require_accessibility_modifiers = for_non_interface_members:silent 369 | 370 | file_header_template = unset 371 | 372 | [*.csproj] 373 | end_of_line = crlf 374 | 375 | [*.md] 376 | trim_trailing_whitespace = false 377 | 378 | [*.sln] 379 | end_of_line = crlf 380 | indent_style = tab 381 | 382 | [.bazelignore] 383 | indent_size = 4 384 | 385 | [.bazelrc] 386 | indent_size = 4 387 | 388 | [Brewfile] 389 | indent_size = 4 390 | -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": [ 3 | "bazelbuild.vscode-bazel", 4 | "editorconfig.editorconfig", 5 | "ms-dotnettools.csharp", 6 | "ms-vscode.vscode-markdown-notebook", 7 | "ms-vscode.mono-debug", 8 | "ms-vscode-remote.remote-containers", 9 | "redhat.vscode-yaml" 10 | ] 11 | } 12 | -------------------------------------------------------------------------------- /.vscode/extensions.json.license: -------------------------------------------------------------------------------- 1 | extensions.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "name": ".NET Core Launch Blocks", 6 | "type": "coreclr", 7 | "request": "launch", 8 | "preLaunchTask": "build", 9 | "program": "${workspaceFolder}/Blocks/bin/Debug/net6.0/Blocks.dll", 10 | "cwd": "${workspaceFolder}/Blocks", 11 | "console": "internalConsole", 12 | "stopAtEntry": false 13 | }, 14 | { 15 | "name": ".NET Core Launch Circle", 16 | "type": "coreclr", 17 | "request": "launch", 18 | "preLaunchTask": "build", 19 | "program": "${workspaceFolder}/Circle/bin/Debug/net6.0/Circle.dll", 20 | "cwd": "${workspaceFolder}/Circle", 21 | "console": "internalConsole", 22 | "stopAtEntry": false 23 | }, 24 | { 25 | "name": ".NET Core Attach", 26 | "type": "coreclr", 27 | "request": "attach" 28 | } 29 | ] 30 | } 31 | -------------------------------------------------------------------------------- /.vscode/launch.json.license: -------------------------------------------------------------------------------- 1 | launch.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "cmake.buildDirectory": "${workspaceFolder}/_build", 3 | "cmake.preferredGenerators": [ 4 | "Ninja Multi-Config", 5 | "Ninja" 6 | ], 7 | "omnisharp.useModernNet": true 8 | } 9 | -------------------------------------------------------------------------------- /.vscode/settings.json.license: -------------------------------------------------------------------------------- 1 | settings.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "build", 6 | "command": "dotnet", 7 | "type": "process", 8 | "args": [ 9 | "build", 10 | "${workspaceFolder}/RVOCS.sln", 11 | "/property:GenerateFullPaths=true", 12 | "/consoleloggerparameters:NoSummary" 13 | ], 14 | "problemMatcher": "$msCompile" 15 | }, 16 | { 17 | "label": "publish", 18 | "command": "dotnet", 19 | "type": "process", 20 | "args": [ 21 | "publish", 22 | "${workspaceFolder}/RVOCS.sln", 23 | "/property:GenerateFullPaths=true", 24 | "/consoleloggerparameters:NoSummary" 25 | ], 26 | "problemMatcher": "$msCompile" 27 | } 28 | ] 29 | } 30 | -------------------------------------------------------------------------------- /.vscode/tasks.json.license: -------------------------------------------------------------------------------- 1 | tasks.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /.yamllint.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # .yamllint.yaml 3 | # RVO2 Library C# 4 | # 5 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # https://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | # Please send all bug reports to . 21 | # 22 | # The authors may be contacted via: 23 | # 24 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | # Dept. of Computer Science 26 | # 201 S. Columbia St. 27 | # Frederick P. Brooks, Jr. Computer Science Bldg. 28 | # Chapel Hill, N.C. 27599-3175 29 | # United States of America 30 | # 31 | # 32 | # 33 | 34 | --- 35 | extends: default 36 | 37 | rules: 38 | line-length: 39 | max: 80 40 | level: warning 41 | -------------------------------------------------------------------------------- /.zenodo.json.license: -------------------------------------------------------------------------------- 1 | .zenodo.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: No Copyright 5 | SPDX-License-Identifier: CC0-1.0 6 | 7 | CC0 1.0 Universal Public Domain Dedication 8 | 9 | No Copyright 10 | 11 | The person who associated a work with this deed has dedicated the work to the 12 | public domain by waiving all of his or her rights to the work worldwide under 13 | copyright law, including all related and neighboring rights, to the extent 14 | allowed by law. 15 | 16 | You can copy, modify, distribute and perform the work, even for commercial 17 | purposes, all without asking permission. See Other Information below. 18 | 19 | Other Information: 20 | 21 | * In no way are the patent or trademark rights of any person affected by CC0, 22 | nor are the rights that other persons may have in the work or in how the work 23 | is used, such as publicity or privacy rights. 24 | 25 | * Unless expressly stated otherwise, the person who associated a work with this 26 | deed makes no warranties about the work, and disclaims liability for all uses 27 | of the work, to the fullest extent permitted by applicable law. 28 | 29 | * When using or citing the work, you should not imply endorsement by the author 30 | or the affirmer. 31 | 32 | Please send all bug reports to . 33 | 34 | The authors may be contacted via: 35 | 36 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 37 | Dept. of Computer Science 38 | 201 S. Columbia St. 39 | Frederick P. Brooks, Jr. Computer Science Bldg. 40 | Chapel Hill, N.C. 27599-3175 41 | United States of America 42 | 43 | 44 | -------------------------------------------------------------------------------- /BUILD.bazel: -------------------------------------------------------------------------------- 1 | # -*- mode: bazel; -*- 2 | # vi: set ft=bazel: 3 | 4 | # 5 | # BUILD.bazel 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | load("@rules_license//rules:license.bzl", "license") 38 | load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_files") 39 | load("@rules_pkg//pkg:pkg.bzl", "pkg_deb", "pkg_tar") 40 | 41 | package(default_applicable_licenses = [":license"]) 42 | 43 | licenses(["notice"]) # Apache-2.0 44 | 45 | license( 46 | name = "license", 47 | copyright_notice = "2008 University of North Carolina at Chapel Hill", 48 | license_kinds = ["@rules_license//licenses/spdx:Apache-2.0"], 49 | license_text = "LICENSE", 50 | visibility = ["//visibility:public"], 51 | ) 52 | 53 | exports_files( 54 | ["LICENSE"], 55 | visibility = ["//visibility:public"], 56 | ) 57 | 58 | pkg_files( 59 | name = "doc", 60 | srcs = ["LICENSE"], 61 | attributes = pkg_attributes(mode = "0644"), 62 | prefix = "usr/share/doc/RVOCS", 63 | visibility = ["//visibility:private"], 64 | ) 65 | 66 | pkg_tar( 67 | name = "RVOCS", 68 | srcs = [ 69 | ":doc", 70 | "//RVOCS:lib", 71 | ], 72 | extension = "tar.gz", 73 | visibility = ["//visibility:private"], 74 | ) 75 | 76 | pkg_deb( 77 | name = "deb", 78 | architecture = "amd64", 79 | data = ":RVOCS", 80 | description = "Optimal Reciprocal Collision Avoidance for C#", 81 | homepage = "https://gamma.cs.unc.edu/RVO2/", 82 | maintainer = "Jamie Snape", 83 | package = "rvocs", 84 | priority = "optional", 85 | section = "libdevel", 86 | version = "2.1.0", 87 | visibility = ["//visibility:private"], 88 | ) 89 | -------------------------------------------------------------------------------- /Blocks/BUILD.bazel: -------------------------------------------------------------------------------- 1 | # -*- mode: bazel; -*- 2 | # vi: set ft=bazel: 3 | 4 | # 5 | # Blocks/BUILD.bazel 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | load("@rules_dotnet//dotnet:defs.bzl", "csharp_binary") 38 | 39 | package(default_applicable_licenses = ["//:license"]) 40 | 41 | licenses(["notice"]) # Apache-2.0 42 | 43 | csharp_binary( 44 | name = "Blocks.exe", 45 | srcs = ["Blocks.cs"], 46 | target_frameworks = ["net6.0"], 47 | targeting_packs = ["@rules_dotnet_nuget_packages//microsoft.netcore.app.ref"], 48 | visibility = ["//visibility:private"], 49 | deps = ["//RVOCS:RVOCS.dll"], 50 | ) 51 | -------------------------------------------------------------------------------- /Blocks/Blocks.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Blocks.cs 3 | * RVO2 Library C# 4 | * 5 | * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | * SPDX-License-Identifier: Apache-2.0 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * 20 | * Please send all bug reports to . 21 | * 22 | * The authors may be contacted via: 23 | * 24 | * Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | * Dept. of Computer Science 26 | * 201 S. Columbia St. 27 | * Frederick P. Brooks, Jr. Computer Science Bldg. 28 | * Chapel Hill, N.C. 27599-3175 29 | * United States of America 30 | * 31 | * 32 | */ 33 | 34 | /* 35 | * Example file showing a demo with 100 agents split in four groups initially 36 | * positioned in four corners of the environment. Each agent attempts to move to 37 | * other side of the environment through a narrow passage generated by four 38 | * obstacles. There is no roadmap to guide the agents around the obstacles. 39 | */ 40 | 41 | #define RVOCS_OUTPUT_TIME_AND_POSITIONS 42 | #define RVOCS_SEED_RANDOM_NUMBER_GENERATOR 43 | 44 | using System; 45 | using System.Collections.Generic; 46 | 47 | namespace RVO 48 | { 49 | class Blocks 50 | { 51 | /* Store the goals of the agents. */ 52 | readonly IList goals; 53 | 54 | /** Random number generator. */ 55 | readonly Random random; 56 | 57 | Blocks() 58 | { 59 | goals = new List(); 60 | 61 | #if RVOCS_SEED_RANDOM_NUMBER_GENERATOR 62 | random = new Random(); 63 | #else 64 | random = new Random(0); 65 | #endif 66 | } 67 | 68 | void setupScenario() 69 | { 70 | /* Specify the global time step of the simulation. */ 71 | Simulator.Instance.setTimeStep(0.25f); 72 | 73 | /* 74 | * Specify the default parameters for agents that are subsequently 75 | * added. 76 | */ 77 | Simulator.Instance.setAgentDefaults(15.0f, 10, 5.0f, 5.0f, 2.0f, 2.0f, new Vector2(0.0f, 0.0f)); 78 | 79 | /* 80 | * Add agents, specifying their start position, and store their 81 | * goals on the opposite side of the environment. 82 | */ 83 | for (int i = 0; i < 5; ++i) 84 | { 85 | for (int j = 0; j < 5; ++j) 86 | { 87 | Simulator.Instance.addAgent(new Vector2(55.0f + i * 10.0f, 55.0f + j * 10.0f)); 88 | goals.Add(new Vector2(-75.0f, -75.0f)); 89 | 90 | Simulator.Instance.addAgent(new Vector2(-55.0f - i * 10.0f, 55.0f + j * 10.0f)); 91 | goals.Add(new Vector2(75.0f, -75.0f)); 92 | 93 | Simulator.Instance.addAgent(new Vector2(55.0f + i * 10.0f, -55.0f - j * 10.0f)); 94 | goals.Add(new Vector2(-75.0f, 75.0f)); 95 | 96 | Simulator.Instance.addAgent(new Vector2(-55.0f - i * 10.0f, -55.0f - j * 10.0f)); 97 | goals.Add(new Vector2(75.0f, 75.0f)); 98 | } 99 | } 100 | 101 | /* 102 | * Add (polygonal) obstacles, specifying their vertices in 103 | * counterclockwise order. 104 | */ 105 | IList obstacle1 = new List 106 | { 107 | new Vector2(-10.0f, 40.0f), 108 | new Vector2(-40.0f, 40.0f), 109 | new Vector2(-40.0f, 10.0f), 110 | new Vector2(-10.0f, 10.0f) 111 | }; 112 | Simulator.Instance.addObstacle(obstacle1); 113 | 114 | IList obstacle2 = new List 115 | { 116 | new Vector2(10.0f, 40.0f), 117 | new Vector2(10.0f, 10.0f), 118 | new Vector2(40.0f, 10.0f), 119 | new Vector2(40.0f, 40.0f) 120 | }; 121 | Simulator.Instance.addObstacle(obstacle2); 122 | 123 | IList obstacle3 = new List 124 | { 125 | new Vector2(10.0f, -40.0f), 126 | new Vector2(40.0f, -40.0f), 127 | new Vector2(40.0f, -10.0f), 128 | new Vector2(10.0f, -10.0f) 129 | }; 130 | Simulator.Instance.addObstacle(obstacle3); 131 | 132 | IList obstacle4 = new List 133 | { 134 | new Vector2(-10.0f, -40.0f), 135 | new Vector2(-10.0f, -10.0f), 136 | new Vector2(-40.0f, -10.0f), 137 | new Vector2(-40.0f, -40.0f) 138 | }; 139 | Simulator.Instance.addObstacle(obstacle4); 140 | 141 | /* 142 | * Process the obstacles so that they are accounted for in the 143 | * simulation. 144 | */ 145 | Simulator.Instance.processObstacles(); 146 | } 147 | 148 | #if RVOCS_OUTPUT_TIME_AND_POSITIONS 149 | void updateVisualization() 150 | { 151 | /* Output the current global time. */ 152 | Console.Write(Simulator.Instance.getGlobalTime()); 153 | 154 | /* Output the current position of all the agents. */ 155 | for (int i = 0; i < Simulator.Instance.getNumAgents(); ++i) 156 | { 157 | Console.Write(" {0}", Simulator.Instance.getAgentPosition(i)); 158 | } 159 | 160 | Console.WriteLine(); 161 | } 162 | #endif 163 | 164 | void setPreferredVelocities() 165 | { 166 | /* 167 | * Set the preferred velocity to be a vector of unit magnitude 168 | * (speed) in the direction of the goal. 169 | */ 170 | for (int i = 0; i < Simulator.Instance.getNumAgents(); ++i) 171 | { 172 | Vector2 goalVector = goals[i] - Simulator.Instance.getAgentPosition(i); 173 | 174 | if (RVOMath.absSq(goalVector) > 1.0f) 175 | { 176 | goalVector = RVOMath.normalize(goalVector); 177 | } 178 | 179 | Simulator.Instance.setAgentPrefVelocity(i, goalVector); 180 | 181 | /* Perturb a little to avoid deadlocks due to perfect symmetry. */ 182 | float angle = (float)random.NextDouble() * 2.0f * (float)Math.PI; 183 | float dist = (float)random.NextDouble() * 0.0001f; 184 | 185 | Simulator.Instance.setAgentPrefVelocity(i, Simulator.Instance.getAgentPrefVelocity(i) + 186 | dist * new Vector2((float)Math.Cos(angle), (float)Math.Sin(angle))); 187 | } 188 | } 189 | 190 | bool reachedGoal() 191 | { 192 | /* Check if all agents have reached their goals. */ 193 | for (int i = 0; i < Simulator.Instance.getNumAgents(); ++i) 194 | { 195 | if (RVOMath.absSq(Simulator.Instance.getAgentPosition(i) - goals[i]) > 400.0f) 196 | { 197 | return false; 198 | } 199 | } 200 | 201 | return true; 202 | } 203 | 204 | public static void Main(string[] args) 205 | { 206 | Blocks blocks = new(); 207 | 208 | /* Set up the scenario. */ 209 | blocks.setupScenario(); 210 | 211 | /* Perform (and manipulate) the simulation. */ 212 | do 213 | { 214 | #if RVOCS_OUTPUT_TIME_AND_POSITIONS 215 | blocks.updateVisualization(); 216 | #endif 217 | blocks.setPreferredVelocities(); 218 | Simulator.Instance.doStep(); 219 | } 220 | while (!blocks.reachedGoal()); 221 | } 222 | } 223 | } 224 | -------------------------------------------------------------------------------- /Blocks/Blocks.csproj: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 | Exe 37 | net6.0 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Blocks/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # -*- mode: cmake; -*- 2 | # vi: set ft=cmake: 3 | 4 | # 5 | # Blocks/CMakeLists.txt 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | if(BUILD_TESTING) 38 | # cmake-lint: disable=E1120 39 | include_external_msproject(Blocks Blocks.csproj 40 | GUID 10EAB31F-A2BC-4A12-9789-FD2646B1EB0A RVOCS) 41 | endif() 42 | -------------------------------------------------------------------------------- /CITATION.cff: -------------------------------------------------------------------------------- 1 | # -*- mode: yaml; -*- 2 | # vi: set ft=yaml: 3 | 4 | # 5 | # CITATION.cff 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: CC-BY-SA-4.0 10 | # 11 | # Creative Commons Attribution-ShareAlike 4.0 International Public License 12 | # 13 | # You are free to: 14 | # 15 | # * Share -- copy and redistribute the material in any medium or format 16 | # 17 | # * ShareAlike -- If you remix, transform, or build upon the material, you must 18 | # distribute your contributions under the same license as the original 19 | # 20 | # * Adapt -- remix, transform, and build upon the material for any purpose, even 21 | # commercially. 22 | # 23 | # The licensor cannot revoke these freedoms as long as you follow the license 24 | # terms. 25 | # 26 | # Under the following terms: 27 | # 28 | # * Attribution -- You must give appropriate credit, provide a link to the 29 | # license, and indicate if changes were made. You may do so in any reasonable 30 | # manner, but not in any way that suggests the licensor endorses you or your 31 | # use. 32 | # 33 | # * No additional restrictions -- You may not apply legal terms or technological 34 | # measures that legally restrict others from doing anything the license 35 | # permits. 36 | # 37 | # Notices: 38 | # 39 | # * You do not have to comply with the license for elements of the material in 40 | # the public domain or where your use is permitted by an applicable exception 41 | # or limitation. 42 | # 43 | # * No warranties are given. The license may not give you all of the permissions 44 | # necessary for your intended use. For example, other rights such as 45 | # publicity, privacy, or moral rights may limit how you use the material. 46 | # 47 | # Please send all bug reports to . 48 | # 49 | # The authors may be contacted via: 50 | # 51 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 52 | # Dept. of Computer Science 53 | # 201 S. Columbia St. 54 | # Frederick P. Brooks, Jr. Computer Science Bldg. 55 | # Chapel Hill, N.C. 27599-3175 56 | # United States of America 57 | # 58 | # 59 | # 60 | 61 | --- 62 | cff-version: 1.2.0 63 | abstract: >- 64 | We present a formal approach to reciprocal collision avoidance, where 65 | multiple independent mobile robots or agents need to avoid collisions with 66 | each other without communication among agents while moving in a common 67 | workspace. Our formulation, optimal reciprocal collision avoidance (ORCA), 68 | provides sufficient conditions for collision-free motion by letting each 69 | agent take half of the responsibility of avoiding pairwise collisions. 70 | Selecting the optimal action for each agent is reduced to solving a 71 | low-dimensional linear program, and we prove that the resulting motions are 72 | smooth. We test our optimal reciprocal collision avoidance approach on 73 | several dense and complex simulation scenarios workspaces involving thousands 74 | of agents, and compute collision-free actions for all of them in only a few 75 | milliseconds. 76 | 77 | RVO2 Library C# is an open-source C# .NET 6 implementation of our algorithm 78 | in two dimensions. It has a simple API for third-party applications. The user 79 | specifies static obstacles, agents, and the preferred velocities of the 80 | agents. The simulation is performed step-by-step via a simple call to the 81 | library. The simulation is fully accessible and manipulable during runtime. 82 | authors: 83 | - address: >- 84 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 85 | affiliation: 'University of North Carolina at Chapel Hill' 86 | city: 'Chapel Hill' 87 | country: US 88 | family-names: Berg 89 | given-names: Jur 90 | name-particle: 'van den' 91 | post-code: 27599 92 | region: NC 93 | - address: >- 94 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 95 | affiliation: 'University of North Carolina at Chapel Hill' 96 | city: 'Chapel Hill' 97 | country: US 98 | family-names: Guy 99 | given-names: 'Stephen J.' 100 | orcid: 'https://orcid.org/0000-0001-8986-5817' 101 | post-code: 27599 102 | region: NC 103 | website: 'https://www-users.cse.umn.edu/~sjguy/' 104 | - address: >- 105 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 106 | affiliation: 'University of North Carolina at Chapel Hill' 107 | city: 'Chapel Hill' 108 | country: US 109 | family-names: Snape 110 | given-names: Jamie 111 | orcid: 'https://orcid.org/0000-0002-3326-9765' 112 | post-code: 27599 113 | region: NC 114 | website: 'https://www.jamiesnape.io/' 115 | - address: >- 116 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 117 | affiliation: 'University of North Carolina at Chapel Hill' 118 | city: 'Chapel Hill' 119 | country: US 120 | family-names: Lin 121 | given-names: 'Ming C.' 122 | orcid: 'https://orcid.org/0000-0003-3736-6949' 123 | post-code: 27599 124 | region: NC 125 | website: 'https://www.cs.umd.edu/people/lin/' 126 | - address: >- 127 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 128 | affiliation: 'University of North Carolina at Chapel Hill' 129 | city: 'Chapel Hill' 130 | country: US 131 | family-names: Manocha 132 | given-names: Dinesh 133 | orcid: 'https://orcid.org/0000-0001-7047-9801' 134 | post-code: 27599 135 | region: NC 136 | website: 'https://www.cs.umd.edu/people/dmanocha/' 137 | identifiers: 138 | - type: doi 139 | value: '10.5281/zenodo.7039588' 140 | keywords: 141 | - 'collision avoidance' 142 | - 'mobile robots' 143 | - 'motion planning' 144 | - 'multi-robot systems' 145 | - navigation 146 | license: 'Apache-2.0' 147 | message: >- 148 | If you use this software, please cite it using the metadata from this file. 149 | references: 150 | - abstract: >- 151 | We present a formal approach to reciprocal collision avoidance, where 152 | multiple independent mobile robots or agents need to avoid collisions 153 | with each other without communication among agents while moving in a 154 | common workspace. Our formulation, optimal reciprocal collision avoidance 155 | (ORCA), provides sufficient conditions for collision-free motion by 156 | letting each agent take half of the responsibility of avoiding pairwise 157 | collisions. Selecting the optimal action for each agent is reduced to 158 | solving a low-dimensional linear program, and we prove that the resulting 159 | motions are smooth. We test our optimal reciprocal collision avoidance 160 | approach on several dense and complex simulation scenarios workspaces 161 | involving thousands of agents, and compute collision-free actions for all 162 | of them in only a few milliseconds. 163 | authors: 164 | - address: >- 165 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 166 | affiliation: 'University of North Carolina at Chapel Hill' 167 | city: 'Chapel Hill' 168 | country: US 169 | family-names: Berg 170 | given-names: Jur 171 | name-particle: 'van den' 172 | post-code: 27599 173 | region: NC 174 | - address: >- 175 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 176 | affiliation: 'University of North Carolina at Chapel Hill' 177 | city: 'Chapel Hill' 178 | country: US 179 | family-names: Guy 180 | given-names: 'Stephen J.' 181 | orcid: 'https://orcid.org/0000-0001-8986-5817' 182 | post-code: 27599 183 | region: NC 184 | website: 'https://www-users.cse.umn.edu/~sjguy/' 185 | - address: >- 186 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 187 | affiliation: 'University of North Carolina at Chapel Hill' 188 | city: 'Chapel Hill' 189 | country: US 190 | family-names: Lin 191 | given-names: 'Ming C.' 192 | orcid: 'https://orcid.org/0000-0003-3736-6949' 193 | post-code: 27599 194 | region: NC 195 | website: 'https://www.cs.umd.edu/people/lin/' 196 | - address: >- 197 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 198 | affiliation: 'University of North Carolina at Chapel Hill' 199 | city: 'Chapel Hill' 200 | country: US 201 | family-names: Manocha 202 | given-names: Dinesh 203 | orcid: 'https://orcid.org/0000-0001-7047-9801' 204 | post-code: 27599 205 | region: NC 206 | website: 'https://www.cs.umd.edu/people/dmanocha/' 207 | conference: 208 | address: 'Hotel Astoria, Pilatusstrasse 29' 209 | city: Lucerne 210 | country: CH 211 | date-end: '2009-09-03' 212 | date-start: '2009-08-31' 213 | name: '14th International Symposium of Robotics Research (ISRR)' 214 | post-code: 6002 215 | contact: 216 | - address: >- 217 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 218 | affiliation: 'University of North Carolina at Chapel Hill' 219 | city: 'Chapel Hill' 220 | country: US 221 | family-names: Guy 222 | given-names: 'Stephen J.' 223 | orcid: 'https://orcid.org/0000-0001-8986-5817' 224 | post-code: 27599 225 | region: NC 226 | website: 'https://www-users.cse.umn.edu/~sjguy/' 227 | collection-doi: '10.1007/978-3-642-19457-3' 228 | collection-title: >- 229 | Robotics Research: The 14th International Symposium ISRR 230 | collection-type: proceedings 231 | copyright: >- 232 | Copyright © 2011 Springer Verlag 233 | editors: 234 | - address: >- 235 | Institute of Robotics and Intelligent Systems (IRIS), Autonomous 236 | Systems Lab, Leonhardstrasse 21 237 | affiliation: ETH Zürich 238 | city: Zürich 239 | country: CH 240 | family-names: Pradalier 241 | given-names: Cédric 242 | orcid: 'https://orcid.org/0000-0002-1746-2733' 243 | post-code: 8092 244 | - address: >- 245 | Institute of Robotics and Intelligent Systems (IRIS), Autonomous 246 | Systems Lab, Leonhardstrasse 21 247 | affiliation: ETH Zürich 248 | city: Zürich 249 | country: CH 250 | family-names: Siegwart 251 | given-names: Roland 252 | orcid: 'https://orcid.org/0000-0002-2760-7983' 253 | post-code: 8092 254 | - address: >- 255 | Deutsches Zentrum für Luft und Raumfahrt (DLR), Institut für Robotik 256 | und Mechatronik, Münchener Straße 20 257 | affiliation: German Aerospace Center 258 | city: 'Oberpfaffenhofen-Weßling' 259 | country: DE 260 | family-names: Hirzinger 261 | given-names: Gerhard 262 | post-code: 82234 263 | end: 19 264 | identifiers: 265 | - type: doi 266 | value: '10.1007/978-3-642-19457-3_1' 267 | isbn: '978-3-642-19456-6' 268 | keywords: 269 | - 'collision avoidance' 270 | - 'mobile robots' 271 | - 'motion planning' 272 | - 'multi-robot systems' 273 | - navigation 274 | publisher: 275 | address: 'Tiergartenstraße 17' 276 | city: Heidelberg 277 | country: DE 278 | name: 'Springer Verlag' 279 | post-code: 69121 280 | languages: 281 | - en 282 | month: 5 283 | pages: 17 284 | start: 3 285 | title: 'Reciprocal n-body collision avoidance' 286 | type: 'conference-paper' 287 | url: 'https://gamma.cs.unc.edu/ORCA/' 288 | volume: 70 289 | year: 2011 290 | - abstract: >- 291 | We present a method for smooth and collision-free navigation for multiple 292 | independent robots under differential-drive constraints. Our algorithm is 293 | based on the optimal reciprocal collision avoidance (ORCA) formulation 294 | and guarantees both smoothness in the trajectories of the robots and 295 | locally collision-free paths. We provide proofs of these guarantees and 296 | demonstrate the effectiveness of our method in experimental scenarios 297 | using iRobot Create mobile robots navigating amongst each other. 298 | authors: 299 | - address: >- 300 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 301 | affiliation: 'University of North Carolina at Chapel Hill' 302 | city: 'Chapel Hill' 303 | country: US 304 | family-names: Snape 305 | given-names: Jamie 306 | orcid: 'https://orcid.org/0000-0002-3326-9765' 307 | post-code: 27599 308 | region: NC 309 | website: 'https://www.jamiesnape.io/' 310 | - address: >- 311 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 312 | affiliation: 'University of North Carolina at Chapel Hill' 313 | city: 'Chapel Hill' 314 | country: US 315 | family-names: Berg 316 | given-names: Jur 317 | name-particle: 'van den' 318 | post-code: 27599 319 | region: NC 320 | - address: >- 321 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 322 | affiliation: 'University of North Carolina at Chapel Hill' 323 | city: 'Chapel Hill' 324 | country: US 325 | family-names: Guy 326 | given-names: 'Stephen J.' 327 | orcid: 'https://orcid.org/0000-0001-8986-5817' 328 | post-code: 27599 329 | region: NC 330 | website: 'https://www-users.cse.umn.edu/~sjguy/' 331 | - address: >- 332 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 333 | affiliation: 'University of North Carolina at Chapel Hill' 334 | city: 'Chapel Hill' 335 | country: US 336 | family-names: Manocha 337 | given-names: Dinesh 338 | orcid: 'https://orcid.org/0000-0001-7047-9801' 339 | post-code: 27599 340 | region: NC 341 | website: 'https://www.cs.umd.edu/people/dmanocha/' 342 | conference: 343 | address: >- 344 | Taipei International Convention Center (TICC), 1 Hsin-Yi Rd, Sec 5 345 | city: 'Taipei City' 346 | country: TW 347 | date-end: '2010-10-22' 348 | date-start: '2010-10-18' 349 | name: >- 350 | 2010 IEEE/RSJ International Conference on Intelligent Robots and 351 | Systems (IROS) 352 | post-code: 11049 353 | contact: 354 | - address: >- 355 | 201 S Columbia St, Frederick P. Brooks, Jr. Computer Science Bldg 356 | affiliation: 'University of North Carolina at Chapel Hill' 357 | city: 'Chapel Hill' 358 | country: US 359 | family-names: Snape 360 | given-names: Jamie 361 | orcid: 'https://orcid.org/0000-0002-3326-9765' 362 | post-code: 27599 363 | region: NC 364 | website: 'https://www.jamiesnape.io/' 365 | collection-doi: '10.1109/IROS15713.2010' 366 | collection-title: >- 367 | Proceedings of the 2010 IEEE/RSJ International Conference on Intelligent 368 | Robots and Systems (IROS) 369 | collection-type: proceedings 370 | copyright: >- 371 | Copyright © 2010 Institute of Electrical and Electronics Engineers 372 | date-published: '2010-12-03' 373 | end: 4589 374 | identifiers: 375 | - type: doi 376 | value: '10.1109/IROS.2010.5652073' 377 | isbn: '978-1-4244-6674-0' 378 | issn: '2153-0858' 379 | keywords: 380 | - 'collision avoidance' 381 | - 'mobile robots' 382 | - 'motion planning' 383 | - 'multi-robot systems' 384 | - navigation 385 | publisher: 386 | address: '3 Park Ave 17th Fl' 387 | city: 'New York' 388 | country: US 389 | name: 'Institute of Electrical and Electronics Engineers' 390 | post-code: 10016 391 | region: NY 392 | languages: 393 | - en 394 | month: 10 395 | pages: 6 396 | start: 4584 397 | title: >- 398 | Smooth and collision-free navigation for multiple robots under 399 | differential-drive constraints 400 | type: 'conference-paper' 401 | url: 'https://gamma.cs.unc.edu/ORCA-DD/' 402 | year: 2010 403 | repository-code: 'https://github.com/snape/RVO2-CS' 404 | title: 'Optimal Reciprocal Collision Avoidance for C#' 405 | type: software 406 | url: 'https://gamma.cs.unc.edu/RVO2/' 407 | -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # -*- mode: cmake; -*- 2 | # vi: set ft=cmake: 3 | 4 | # 5 | # CMakeLists.txt 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | cmake_minimum_required(VERSION 3.16 FATAL_ERROR) 38 | project(RVOCS 39 | VERSION 2.1.0 40 | DESCRIPTION "Optimal Reciprocal Collision Avoidance for C#" 41 | HOMEPAGE_URL https://gamma.cs.unc.edu/RVO2/ 42 | LANGUAGES NONE) 43 | 44 | include(CTest) 45 | 46 | add_subdirectory(RVOCS) 47 | add_subdirectory(Blocks) 48 | add_subdirectory(Circle) 49 | -------------------------------------------------------------------------------- /CTestConfig.cmake: -------------------------------------------------------------------------------- 1 | # 2 | # CTestConfig.cmake 3 | # RVO2 Library C# 4 | # 5 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # https://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | # Please send all bug reports to . 21 | # 22 | # The authors may be contacted via: 23 | # 24 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | # Dept. of Computer Science 26 | # 201 S. Columbia St. 27 | # Frederick P. Brooks, Jr. Computer Science Bldg. 28 | # Chapel Hill, N.C. 27599-3175 29 | # United States of America 30 | # 31 | # 32 | # 33 | 34 | set(CTEST_PROJECT_NAME RVO2-CS) 35 | set(CTEST_NIGHTLY_START_TIME "01:00:00 UTC") 36 | 37 | set(CTEST_DROP_METHOD https) 38 | set(CTEST_DROP_SITE my.cdash.org) 39 | set(CTEST_DROP_LOCATION "/submit.php?project=${CTEST_PROJECT_NAME}") 40 | set(CTEST_DROP_SITE_CDASH ON) 41 | -------------------------------------------------------------------------------- /Circle/BUILD.bazel: -------------------------------------------------------------------------------- 1 | # -*- mode: bazel; -*- 2 | # vi: set ft=bazel: 3 | 4 | # 5 | # Circle/BUILD.bazel 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | load("@rules_dotnet//dotnet:defs.bzl", "csharp_binary") 38 | 39 | package(default_applicable_licenses = ["//:license"]) 40 | 41 | licenses(["notice"]) # Apache-2.0 42 | 43 | csharp_binary( 44 | name = "Circle.exe", 45 | srcs = ["Circle.cs"], 46 | target_frameworks = ["net6.0"], 47 | targeting_packs = ["@rules_dotnet_nuget_packages//microsoft.netcore.app.ref"], 48 | visibility = ["//visibility:private"], 49 | deps = ["//RVOCS:RVOCS.dll"], 50 | ) 51 | -------------------------------------------------------------------------------- /Circle/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # -*- mode: cmake; -*- 2 | # vi: set ft=cmake: 3 | 4 | # 5 | # Circle/CMakeLists.txt 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | if(BUILD_TESTING) 38 | # cmake-lint: disable=E1120 39 | include_external_msproject(Circle Circle.csproj 40 | GUID 3F41A6E2-0894-4A65-8026-3EF310187663 RVOCS) 41 | endif() 42 | -------------------------------------------------------------------------------- /Circle/Circle.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Circle.cs 3 | * RVO2 Library C# 4 | * 5 | * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | * SPDX-License-Identifier: Apache-2.0 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * 20 | * Please send all bug reports to . 21 | * 22 | * The authors may be contacted via: 23 | * 24 | * Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | * Dept. of Computer Science 26 | * 201 S. Columbia St. 27 | * Frederick P. Brooks, Jr. Computer Science Bldg. 28 | * Chapel Hill, N.C. 27599-3175 29 | * United States of America 30 | * 31 | * 32 | */ 33 | 34 | /* 35 | * Example file showing a demo with 250 agents initially positioned evenly 36 | * distributed on a circle attempting to move to the antipodal position on the 37 | * circle. 38 | */ 39 | 40 | #define RVOCS_OUTPUT_TIME_AND_POSITIONS 41 | 42 | using System; 43 | using System.Collections.Generic; 44 | 45 | namespace RVO 46 | { 47 | class Circle 48 | { 49 | /* Store the goals of the agents. */ 50 | readonly IList goals; 51 | 52 | Circle() 53 | { 54 | goals = new List(); 55 | } 56 | 57 | void setupScenario() 58 | { 59 | /* Specify the global time step of the simulation. */ 60 | Simulator.Instance.setTimeStep(0.25f); 61 | 62 | /* 63 | * Specify the default parameters for agents that are subsequently 64 | * added. 65 | */ 66 | Simulator.Instance.setAgentDefaults(15.0f, 10, 10.0f, 10.0f, 1.5f, 2.0f, new Vector2(0.0f, 0.0f)); 67 | 68 | /* 69 | * Add agents, specifying their start position, and store their 70 | * goals on the opposite side of the environment. 71 | */ 72 | for (int i = 0; i < 250; ++i) 73 | { 74 | Simulator.Instance.addAgent(200.0f * 75 | new Vector2((float)Math.Cos(i * 2.0f * Math.PI / 250.0f), 76 | (float)Math.Sin(i * 2.0f * Math.PI / 250.0f))); 77 | goals.Add(-Simulator.Instance.getAgentPosition(i)); 78 | } 79 | } 80 | 81 | #if RVOCS_OUTPUT_TIME_AND_POSITIONS 82 | void updateVisualization() 83 | { 84 | /* Output the current global time. */ 85 | Console.Write(Simulator.Instance.getGlobalTime()); 86 | 87 | /* Output the current position of all the agents. */ 88 | for (int i = 0; i < Simulator.Instance.getNumAgents(); ++i) 89 | { 90 | Console.Write(" {0}", Simulator.Instance.getAgentPosition(i)); 91 | } 92 | 93 | Console.WriteLine(); 94 | } 95 | #endif 96 | 97 | void setPreferredVelocities() 98 | { 99 | /* 100 | * Set the preferred velocity to be a vector of unit magnitude 101 | * (speed) in the direction of the goal. 102 | */ 103 | for (int i = 0; i < Simulator.Instance.getNumAgents(); ++i) 104 | { 105 | Vector2 goalVector = goals[i] - Simulator.Instance.getAgentPosition(i); 106 | 107 | if (RVOMath.absSq(goalVector) > 1.0f) 108 | { 109 | goalVector = RVOMath.normalize(goalVector); 110 | } 111 | 112 | Simulator.Instance.setAgentPrefVelocity(i, goalVector); 113 | } 114 | } 115 | 116 | bool reachedGoal() 117 | { 118 | /* Check if all agents have reached their goals. */ 119 | for (int i = 0; i < Simulator.Instance.getNumAgents(); ++i) 120 | { 121 | if (RVOMath.absSq(Simulator.Instance.getAgentPosition(i) - goals[i]) > Simulator.Instance.getAgentRadius(i) * Simulator.Instance.getAgentRadius(i)) 122 | { 123 | return false; 124 | } 125 | } 126 | 127 | return true; 128 | } 129 | 130 | public static void Main(string[] args) 131 | { 132 | Circle circle = new(); 133 | 134 | /* Set up the scenario. */ 135 | circle.setupScenario(); 136 | 137 | /* Perform (and manipulate) the simulation. */ 138 | do 139 | { 140 | #if RVOCS_OUTPUT_TIME_AND_POSITIONS 141 | circle.updateVisualization(); 142 | #endif 143 | circle.setPreferredVelocities(); 144 | Simulator.Instance.doStep(); 145 | } 146 | while (!circle.reachedGoal()); 147 | } 148 | } 149 | } 150 | -------------------------------------------------------------------------------- /Circle/Circle.csproj: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 | Exe 37 | net6.0 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | # syntax=docker.io/docker/dockerfile:1 2 | 3 | # 4 | # Dockerfile 5 | # RVO2 Library C# 6 | # 7 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 8 | # SPDX-License-Identifier: Apache-2.0 9 | # 10 | # Licensed under the Apache License, Version 2.0 (the "License"); 11 | # you may not use this file except in compliance with the License. 12 | # You may obtain a copy of the License at 13 | # 14 | # https://www.apache.org/licenses/LICENSE-2.0 15 | # 16 | # Unless required by applicable law or agreed to in writing, software 17 | # distributed under the License is distributed on an "AS IS" BASIS, 18 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 19 | # See the License for the specific language governing permissions and 20 | # limitations under the License. 21 | # 22 | # Please send all bug reports to . 23 | # 24 | # The authors may be contacted via: 25 | # 26 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 27 | # Dept. of Computer Science 28 | # 201 S. Columbia St. 29 | # Frederick P. Brooks, Jr. Computer Science Bldg. 30 | # Chapel Hill, N.C. 27599-3175 31 | # United States of America 32 | # 33 | # 34 | # 35 | 36 | FROM ubuntu:latest 37 | LABEL org.opencontainers.image.authors="Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha" 38 | LABEL org.opencontainers.image.base.name="docker.io/library/ubuntu:latest" 39 | LABEL org.opencontainers.image.description="Optimal Reciprocal Collision Avoidance for C#" 40 | LABEL org.opencontainers.image.licenses="Apache-2.0" 41 | LABEL org.opencontainers.image.source="https://github.com/snape/RVO2/" 42 | LABEL org.opencontainers.image.title="RVO2 Library C#" 43 | LABEL org.opencontainers.image.url="https://gamma.cs.unc.edu/RVO2/" 44 | LABEL org.opencontainers.image.vendor="University of North Carolina at Chapel Hill" 45 | ENV LANG C.UTF-8 46 | ENV LOGNAME root 47 | ENV SHELL /bin/bash 48 | ENV USER root 49 | RUN export DEBIAN_FRONTEND=noninteractive \ 50 | && apt-get update -qq \ 51 | && apt-get install --no-install-recommends -o Dpkg::Use-Pty=0 -qy \ 52 | ca-certificates \ 53 | cmake \ 54 | cmake-format \ 55 | dirmngr \ 56 | dotnet-sdk-8.0 \ 57 | dpkg-dev \ 58 | file \ 59 | git \ 60 | jsonlint \ 61 | libicu74 \ 62 | make \ 63 | markdownlint \ 64 | mono-complete \ 65 | nano \ 66 | netbase \ 67 | ninja-build \ 68 | npm \ 69 | python3 \ 70 | reuse \ 71 | yamllint \ 72 | zlib1g \ 73 | && rm -rf /var/lib/apt/lists/* \ 74 | && npm install -g \ 75 | @bazel/bazelisk \ 76 | @bazel/buildifier 77 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | 2 | Apache License 3 | Version 2.0, January 2004 4 | http://www.apache.org/licenses/ 5 | 6 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 7 | 8 | 1. Definitions. 9 | 10 | "License" shall mean the terms and conditions for use, reproduction, 11 | and distribution as defined by Sections 1 through 9 of this document. 12 | 13 | "Licensor" shall mean the copyright owner or entity authorized by 14 | the copyright owner that is granting the License. 15 | 16 | "Legal Entity" shall mean the union of the acting entity and all 17 | other entities that control, are controlled by, or are under common 18 | control with that entity. For the purposes of this definition, 19 | "control" means (i) the power, direct or indirect, to cause the 20 | direction or management of such entity, whether by contract or 21 | otherwise, or (ii) ownership of fifty percent (50%) or more of the 22 | outstanding shares, or (iii) beneficial ownership of such entity. 23 | 24 | "You" (or "Your") shall mean an individual or Legal Entity 25 | exercising permissions granted by this License. 26 | 27 | "Source" form shall mean the preferred form for making modifications, 28 | including but not limited to software source code, documentation 29 | source, and configuration files. 30 | 31 | "Object" form shall mean any form resulting from mechanical 32 | transformation or translation of a Source form, including but 33 | not limited to compiled object code, generated documentation, 34 | and conversions to other media types. 35 | 36 | "Work" shall mean the work of authorship, whether in Source or 37 | Object form, made available under the License, as indicated by a 38 | copyright notice that is included in or attached to the work 39 | (an example is provided in the Appendix below). 40 | 41 | "Derivative Works" shall mean any work, whether in Source or Object 42 | form, that is based on (or derived from) the Work and for which the 43 | editorial revisions, annotations, elaborations, or other modifications 44 | represent, as a whole, an original work of authorship. For the purposes 45 | of this License, Derivative Works shall not include works that remain 46 | separable from, or merely link (or bind by name) to the interfaces of, 47 | the Work and Derivative Works thereof. 48 | 49 | "Contribution" shall mean any work of authorship, including 50 | the original version of the Work and any modifications or additions 51 | to that Work or Derivative Works thereof, that is intentionally 52 | submitted to Licensor for inclusion in the Work by the copyright owner 53 | or by an individual or Legal Entity authorized to submit on behalf of 54 | the copyright owner. For the purposes of this definition, "submitted" 55 | means any form of electronic, verbal, or written communication sent 56 | to the Licensor or its representatives, including but not limited to 57 | communication on electronic mailing lists, source code control systems, 58 | and issue tracking systems that are managed by, or on behalf of, the 59 | Licensor for the purpose of discussing and improving the Work, but 60 | excluding communication that is conspicuously marked or otherwise 61 | designated in writing by the copyright owner as "Not a Contribution." 62 | 63 | "Contributor" shall mean Licensor and any individual or Legal Entity 64 | on behalf of whom a Contribution has been received by Licensor and 65 | subsequently incorporated within the Work. 66 | 67 | 2. Grant of Copyright License. Subject to the terms and conditions of 68 | this License, each Contributor hereby grants to You a perpetual, 69 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 70 | copyright license to reproduce, prepare Derivative Works of, 71 | publicly display, publicly perform, sublicense, and distribute the 72 | Work and such Derivative Works in Source or Object form. 73 | 74 | 3. Grant of Patent License. Subject to the terms and conditions of 75 | this License, each Contributor hereby grants to You a perpetual, 76 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable 77 | (except as stated in this section) patent license to make, have made, 78 | use, offer to sell, sell, import, and otherwise transfer the Work, 79 | where such license applies only to those patent claims licensable 80 | by such Contributor that are necessarily infringed by their 81 | Contribution(s) alone or by combination of their Contribution(s) 82 | with the Work to which such Contribution(s) was submitted. If You 83 | institute patent litigation against any entity (including a 84 | cross-claim or counterclaim in a lawsuit) alleging that the Work 85 | or a Contribution incorporated within the Work constitutes direct 86 | or contributory patent infringement, then any patent licenses 87 | granted to You under this License for that Work shall terminate 88 | as of the date such litigation is filed. 89 | 90 | 4. Redistribution. You may reproduce and distribute copies of the 91 | Work or Derivative Works thereof in any medium, with or without 92 | modifications, and in Source or Object form, provided that You 93 | meet the following conditions: 94 | 95 | (a) You must give any other recipients of the Work or 96 | Derivative Works a copy of this License; and 97 | 98 | (b) You must cause any modified files to carry prominent notices 99 | stating that You changed the files; and 100 | 101 | (c) You must retain, in the Source form of any Derivative Works 102 | that You distribute, all copyright, patent, trademark, and 103 | attribution notices from the Source form of the Work, 104 | excluding those notices that do not pertain to any part of 105 | the Derivative Works; and 106 | 107 | (d) If the Work includes a "NOTICE" text file as part of its 108 | distribution, then any Derivative Works that You distribute must 109 | include a readable copy of the attribution notices contained 110 | within such NOTICE file, excluding those notices that do not 111 | pertain to any part of the Derivative Works, in at least one 112 | of the following places: within a NOTICE text file distributed 113 | as part of the Derivative Works; within the Source form or 114 | documentation, if provided along with the Derivative Works; or, 115 | within a display generated by the Derivative Works, if and 116 | wherever such third-party notices normally appear. The contents 117 | of the NOTICE file are for informational purposes only and 118 | do not modify the License. You may add Your own attribution 119 | notices within Derivative Works that You distribute, alongside 120 | or as an addendum to the NOTICE text from the Work, provided 121 | that such additional attribution notices cannot be construed 122 | as modifying the License. 123 | 124 | You may add Your own copyright statement to Your modifications and 125 | may provide additional or different license terms and conditions 126 | for use, reproduction, or distribution of Your modifications, or 127 | for any such Derivative Works as a whole, provided Your use, 128 | reproduction, and distribution of the Work otherwise complies with 129 | the conditions stated in this License. 130 | 131 | 5. Submission of Contributions. Unless You explicitly state otherwise, 132 | any Contribution intentionally submitted for inclusion in the Work 133 | by You to the Licensor shall be under the terms and conditions of 134 | this License, without any additional terms or conditions. 135 | Notwithstanding the above, nothing herein shall supersede or modify 136 | the terms of any separate license agreement you may have executed 137 | with Licensor regarding such Contributions. 138 | 139 | 6. Trademarks. This License does not grant permission to use the trade 140 | names, trademarks, service marks, or product names of the Licensor, 141 | except as required for reasonable and customary use in describing the 142 | origin of the Work and reproducing the content of the NOTICE file. 143 | 144 | 7. Disclaimer of Warranty. Unless required by applicable law or 145 | agreed to in writing, Licensor provides the Work (and each 146 | Contributor provides its Contributions) on an "AS IS" BASIS, 147 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or 148 | implied, including, without limitation, any warranties or conditions 149 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A 150 | PARTICULAR PURPOSE. You are solely responsible for determining the 151 | appropriateness of using or redistributing the Work and assume any 152 | risks associated with Your exercise of permissions under this License. 153 | 154 | 8. Limitation of Liability. In no event and under no legal theory, 155 | whether in tort (including negligence), contract, or otherwise, 156 | unless required by applicable law (such as deliberate and grossly 157 | negligent acts) or agreed to in writing, shall any Contributor be 158 | liable to You for damages, including any direct, indirect, special, 159 | incidental, or consequential damages of any character arising as a 160 | result of this License or out of the use or inability to use the 161 | Work (including but not limited to damages for loss of goodwill, 162 | work stoppage, computer failure or malfunction, or any and all 163 | other commercial damages or losses), even if such Contributor 164 | has been advised of the possibility of such damages. 165 | 166 | 9. Accepting Warranty or Additional Liability. While redistributing 167 | the Work or Derivative Works thereof, You may choose to offer, 168 | and charge a fee for, acceptance of support, warranty, indemnity, 169 | or other liability obligations and/or rights consistent with this 170 | License. However, in accepting such obligations, You may act only 171 | on Your own behalf and on Your sole responsibility, not on behalf 172 | of any other Contributor, and only if You agree to indemnify, 173 | defend, and hold each Contributor harmless for any liability 174 | incurred by, or claims asserted against, such Contributor by reason 175 | of your accepting any such warranty or additional liability. 176 | 177 | END OF TERMS AND CONDITIONS 178 | 179 | APPENDIX: How to apply the Apache License to your work. 180 | 181 | To apply the Apache License to your work, attach the following 182 | boilerplate notice, with the fields enclosed by brackets "[]" 183 | replaced with your own identifying information. (Don't include 184 | the brackets!) The text should be enclosed in the appropriate 185 | comment syntax for the file format. We also recommend that a 186 | file or class name and description of purpose be included on the 187 | same "printed page" as the copyright notice for easier 188 | identification within third-party archives. 189 | 190 | Copyright [yyyy] [name of copyright owner] 191 | 192 | Licensed under the Apache License, Version 2.0 (the "License"); 193 | you may not use this file except in compliance with the License. 194 | You may obtain a copy of the License at 195 | 196 | http://www.apache.org/licenses/LICENSE-2.0 197 | 198 | Unless required by applicable law or agreed to in writing, software 199 | distributed under the License is distributed on an "AS IS" BASIS, 200 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 201 | See the License for the specific language governing permissions and 202 | limitations under the License. 203 | -------------------------------------------------------------------------------- /LICENSES/Apache-2.0.txt: -------------------------------------------------------------------------------- 1 | Apache License 2 | Version 2.0, January 2004 3 | http://www.apache.org/licenses/ 4 | 5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 6 | 7 | 1. Definitions. 8 | 9 | "License" shall mean the terms and conditions for use, reproduction, and 10 | distribution as defined by Sections 1 through 9 of this document. 11 | 12 | "Licensor" shall mean the copyright owner or entity authorized by the 13 | copyright owner that is granting the License. 14 | 15 | "Legal Entity" shall mean the union of the acting entity and all other 16 | entities that control, are controlled by, or are under common control with 17 | that entity. For the purposes of this definition, "control" means (i) the 18 | power, direct or indirect, to cause the direction or management of such 19 | entity, whether by contract or otherwise, or (ii) ownership of fifty percent 20 | (50%) or more of the outstanding shares, or (iii) beneficial ownership of 21 | such entity. 22 | 23 | "You" (or "Your") shall mean an individual or Legal Entity exercising 24 | permissions granted by this License. 25 | 26 | "Source" form shall mean the preferred form for making modifications, 27 | including but not limited to software source code, documentation source, and 28 | configuration files. 29 | 30 | "Object" form shall mean any form resulting from mechanical transformation 31 | or translation of a Source form, including but not limited to compiled 32 | object code, generated documentation, and conversions to other media types. 33 | 34 | "Work" shall mean the work of authorship, whether in Source or Object form, 35 | made available under the License, as indicated by a copyright notice that is 36 | included in or attached to the work (an example is provided in the Appendix 37 | below). 38 | 39 | "Derivative Works" shall mean any work, whether in Source or Object form, 40 | that is based on (or derived from) the Work and for which the editorial 41 | revisions, annotations, elaborations, or other modifications represent, as a 42 | whole, an original work of authorship. For the purposes of this License, 43 | Derivative Works shall not include works that remain separable from, or 44 | merely link (or bind by name) to the interfaces of, the Work and Derivative 45 | Works thereof. 46 | 47 | "Contribution" shall mean any work of authorship, including the original 48 | version of the Work and any modifications or additions to that Work or 49 | Derivative Works thereof, that is intentionally submitted to Licensor for 50 | inclusion in the Work by the copyright owner or by an individual or Legal 51 | Entity authorized to submit on behalf of the copyright owner. For the 52 | purposes of this definition, "submitted" means any form of electronic, 53 | verbal, or written communication sent to the Licensor or its 54 | representatives, including but not limited to communication on electronic 55 | mailing lists, source code control systems, and issue tracking systems that 56 | are managed by, or on behalf of, the Licensor for the purpose of discussing 57 | and improving the Work, but excluding communication that is conspicuously 58 | marked or otherwise designated in writing by the copyright owner as "Not a 59 | Contribution." 60 | 61 | "Contributor" shall mean Licensor and any individual or Legal Entity on 62 | behalf of whom a Contribution has been received by Licensor and subsequently 63 | incorporated within the Work. 64 | 65 | 2. Grant of Copyright License. Subject to the terms and conditions of this 66 | License, each Contributor hereby grants to You a perpetual, worldwide, 67 | non-exclusive, no-charge, royalty-free, irrevocable copyright license to 68 | reproduce, prepare Derivative Works of, publicly display, publicly perform, 69 | sublicense, and distribute the Work and such Derivative Works in Source or 70 | Object form. 71 | 72 | 3. Grant of Patent License. Subject to the terms and conditions of this 73 | License, each Contributor hereby grants to You a perpetual, worldwide, 74 | non-exclusive, no-charge, royalty-free, irrevocable (except as stated in 75 | this section) patent license to make, have made, use, offer to sell, sell, 76 | import, and otherwise transfer the Work, where such license applies only to 77 | those patent claims licensable by such Contributor that are necessarily 78 | infringed by their Contribution(s) alone or by combination of their 79 | Contribution(s) with the Work to which such Contribution(s) was submitted. 80 | If You institute patent litigation against any entity (including a 81 | cross-claim or counterclaim in a lawsuit) alleging that the Work or a 82 | Contribution incorporated within the Work constitutes direct or contributory 83 | patent infringement, then any patent licenses granted to You under this 84 | License for that Work shall terminate as of the date such litigation is 85 | filed. 86 | 87 | 4. Redistribution. You may reproduce and distribute copies of the Work or 88 | Derivative Works thereof in any medium, with or without modifications, and 89 | in Source or Object form, provided that You meet the following conditions: 90 | 91 | (a) You must give any other recipients of the Work or Derivative Works a 92 | copy of this License; and 93 | 94 | (b) You must cause any modified files to carry prominent notices stating 95 | that You changed the files; and 96 | 97 | (c) You must retain, in the Source form of any Derivative Works that You 98 | distribute, all copyright, patent, trademark, and attribution notices 99 | from the Source form of the Work, excluding those notices that do not 100 | pertain to any part of the Derivative Works; and 101 | 102 | (d) If the Work includes a "NOTICE" text file as part of its distribution, 103 | then any Derivative Works that You distribute must include a readable 104 | copy of the attribution notices contained within such NOTICE file, 105 | excluding those notices that do not pertain to any part of the 106 | Derivative Works, in at least one of the following places: within a 107 | NOTICE text file distributed as part of the Derivative Works; within the 108 | Source form or documentation, if provided along with the Derivative 109 | Works; or, within a display generated by the Derivative Works, if and 110 | wherever such third-party notices normally appear. The contents of the 111 | NOTICE file are for informational purposes only and do not modify the 112 | License. You may add Your own attribution notices within Derivative 113 | Works that You distribute, alongside or as an addendum to the NOTICE 114 | text from the Work, provided that such additional attribution notices 115 | cannot be construed as modifying the License. 116 | 117 | You may add Your own copyright statement to Your modifications and may 118 | provide additional or different license terms and conditions for use, 119 | reproduction, or distribution of Your modifications, or for any such 120 | Derivative Works as a whole, provided Your use, reproduction, and 121 | distribution of the Work otherwise complies with the conditions stated in 122 | this License. 123 | 124 | 5. Submission of Contributions. Unless You explicitly state otherwise, any 125 | Contribution intentionally submitted for inclusion in the Work by You to the 126 | Licensor shall be under the terms and conditions of this License, without 127 | any additional terms or conditions. Notwithstanding the above, nothing 128 | herein shall supersede or modify the terms of any separate license agreement 129 | you may have executed with Licensor regarding such Contributions. 130 | 131 | 6. Trademarks. This License does not grant permission to use the trade names, 132 | trademarks, service marks, or product names of the Licensor, except as 133 | required for reasonable and customary use in describing the origin of the 134 | Work and reproducing the content of the NOTICE file. 135 | 136 | 7. Disclaimer of Warranty. Unless required by applicable law or agreed to in 137 | writing, Licensor provides the Work (and each Contributor provides its 138 | Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 139 | KIND, either express or implied, including, without limitation, any 140 | warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or 141 | FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining 142 | the appropriateness of using or redistributing the Work and assume any risks 143 | associated with Your exercise of permissions under this License. 144 | 145 | 8. Limitation of Liability. In no event and under no legal theory, whether in 146 | tort (including negligence), contract, or otherwise, unless required by 147 | applicable law (such as deliberate and grossly negligent acts) or agreed to 148 | in writing, shall any Contributor be liable to You for damages, including 149 | any direct, indirect, special, incidental, or consequential damages of any 150 | character arising as a result of this License or out of the use or inability 151 | to use the Work (including but not limited to damages for loss of goodwill, 152 | work stoppage, computer failure or malfunction, or any and all other 153 | commercial damages or losses), even if such Contributor has been advised of 154 | the possibility of such damages. 155 | 156 | 9. Accepting Warranty or Additional Liability. While redistributing the Work or 157 | Derivative Works thereof, You may choose to offer, and charge a fee for, 158 | acceptance of support, warranty, indemnity, or other liability obligations 159 | and/or rights consistent with this License. However, in accepting such 160 | obligations, You may act only on Your own behalf and on Your sole 161 | responsibility, not on behalf of any other Contributor, and only if You 162 | agree to indemnify, defend, and hold each Contributor harmless for any 163 | liability incurred by, or claims asserted against, such Contributor by 164 | reason of your accepting any such warranty or additional liability. 165 | 166 | END OF TERMS AND CONDITIONS 167 | 168 | APPENDIX: How to apply the Apache License to your work. 169 | 170 | To apply the Apache License to your work, attach the following boilerplate 171 | notice, with the fields enclosed by brackets "[]" replaced with your own 172 | identifying information. (Don't include the brackets!) The text should be 173 | enclosed in the appropriate comment syntax for the file format. We also 174 | recommend that a file or class name and description of purpose be included 175 | on the same "printed page" as the copyright notice for easier identification 176 | within third-party archives. 177 | 178 | Copyright [yyyy] [name of copyright owner] 179 | 180 | Licensed under the Apache License, Version 2.0 (the "License"); 181 | you may not use this file except in compliance with the License. 182 | You may obtain a copy of the License at 183 | 184 | http://www.apache.org/licenses/LICENSE-2.0 185 | 186 | Unless required by applicable law or agreed to in writing, software 187 | distributed under the License is distributed on an "AS IS" BASIS, 188 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 189 | See the License for the specific language governing permissions and 190 | limitations under the License. 191 | -------------------------------------------------------------------------------- /LICENSES/CC-BY-4.0.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Attribution 4.0 International 2 | 3 | Creative Commons Corporation ("Creative Commons") is not a law firm and does 4 | not provide legal services or legal advice. Distribution of Creative Commons 5 | public licenses does not create a lawyer-client or other relationship. Creative 6 | Commons makes its licenses and related information available on an "as-is" 7 | basis. Creative Commons gives no warranties regarding its licenses, any 8 | material licensed under their terms and conditions, or any related information. 9 | Creative Commons disclaims all liability for damages resulting from their use 10 | to the fullest extent possible. 11 | 12 | Using Creative Commons Public Licenses 13 | 14 | Creative Commons public licenses provide a standard set of terms and conditions 15 | that creators and other rights holders may use to share original works of 16 | authorship and other material subject to copyright and certain other rights 17 | specified in the public license below. The following considerations are for 18 | informational purposes only, are not exhaustive, and do not form part of our 19 | licenses. 20 | 21 | Considerations for licensors: Our public licenses are intended for use by those 22 | authorized to give the public permission to use material in ways otherwise 23 | restricted by copyright and certain other rights. Our licenses are irrevocable. 24 | Licensors should read and understand the terms and conditions of the license 25 | they choose before applying it. Licensors should also secure all rights 26 | necessary before applying our licenses so that the public can reuse the 27 | material as expected. Licensors should clearly mark any material not subject to 28 | the license. This includes other CC-licensed material, or material used under 29 | an exception or limitation to copyright. More considerations for licensors. 30 | 31 | Considerations for the public: By using one of our public licenses, a licensor 32 | grants the public permission to use the licensed material under specified terms 33 | and conditions. If the licensor's permission is not necessary for any 34 | reason-for example, because of any applicable exception or limitation to 35 | copyright-then that use is not regulated by the license. Our licenses grant 36 | only permissions under copyright and certain other rights that a licensor has 37 | authority to grant. Use of the licensed material may still be restricted for 38 | other reasons, including because others have copyright or other rights in the 39 | material. A licensor may make special requests, such as asking that all changes 40 | be marked or described. Although not required by our licenses, you are 41 | encouraged to respect those requests where reasonable. More considerations for 42 | the public. 43 | 44 | Creative Commons Attribution 4.0 International Public License 45 | 46 | By exercising the Licensed Rights (defined below), You accept and agree to be 47 | bound by the terms and conditions of this Creative Commons Attribution 4.0 48 | International Public License ("Public License"). To the extent this Public 49 | License may be interpreted as a contract, You are granted the Licensed Rights 50 | in consideration of Your acceptance of these terms and conditions, and the 51 | Licensor grants You such rights in consideration of benefits the Licensor 52 | receives from making the Licensed Material available under these terms and 53 | conditions. 54 | 55 | Section 1 - Definitions. 56 | 57 | a. Adapted Material means material subject to Copyright and Similar Rights that 58 | is derived from or based upon the Licensed Material and in which the 59 | Licensed Material is translated, altered, arranged, transformed, or 60 | otherwise modified in a manner requiring permission under the Copyright and 61 | Similar Rights held by the Licensor. For purposes of this Public License, 62 | where the Licensed Material is a musical work, performance, or sound 63 | recording, Adapted Material is always produced where the Licensed Material 64 | is synched in timed relation with a moving image. 65 | 66 | b. Adapter's License means the license You apply to Your Copyright and Similar 67 | Rights in Your contributions to Adapted Material in accordance with the 68 | terms and conditions of this Public License. 69 | 70 | c. Copyright and Similar Rights means copyright and/or similar rights closely 71 | related to copyright including, without limitation, performance, broadcast, 72 | sound recording, and Sui Generis Database Rights, without regard to how the 73 | rights are labeled or categorized. For purposes of this Public License, the 74 | rights specified in Section 2(b)(1)-(2) are not Copyright and Similar 75 | Rights. 76 | 77 | d. Effective Technological Measures means those measures that, in the absence 78 | of proper authority, may not be circumvented under laws fulfilling 79 | obligations under Article 11 of the WIPO Copyright Treaty adopted on 80 | December 20, 1996, and/or similar international agreements. 81 | 82 | e. Exceptions and Limitations means fair use, fair dealing, and/or any other 83 | exception or limitation to Copyright and Similar Rights that applies to Your 84 | use of the Licensed Material. 85 | 86 | f. Licensed Material means the artistic or literary work, database, or other 87 | material to which the Licensor applied this Public License. 88 | 89 | g. Licensed Rights means the rights granted to You subject to the terms and 90 | conditions of this Public License, which are limited to all Copyright and 91 | Similar Rights that apply to Your use of the Licensed Material and that the 92 | Licensor has authority to license. 93 | 94 | h. Licensor means the individual(s) or entity(ies) granting rights under this 95 | Public License. 96 | 97 | i. Share means to provide material to the public by any means or process that 98 | requires permission under the Licensed Rights, such as reproduction, public 99 | display, public performance, distribution, dissemination, communication, or 100 | importation, and to make material available to the public including in ways 101 | that members of the public may access the material from a place and at a 102 | time individually chosen by them. 103 | 104 | j. Sui Generis Database Rights means rights other than copyright resulting from 105 | Directive 96/9/EC of the European Parliament and of the Council of 11 March 106 | 1996 on the legal protection of databases, as amended and/or succeeded, as 107 | well as other essentially equivalent rights anywhere in the world. 108 | 109 | k. You means the individual or entity exercising the Licensed Rights under this 110 | Public License. Your has a corresponding meaning. 111 | 112 | Section 2 - Scope. 113 | 114 | a. License grant. 115 | 116 | 1. Subject to the terms and conditions of this Public License, the Licensor 117 | hereby grants You a worldwide, royalty-free, non-sublicensable, 118 | non-exclusive, irrevocable license to exercise the Licensed Rights in the 119 | Licensed Material to: 120 | 121 | A. reproduce and Share the Licensed Material, in whole or in part; and 122 | 123 | B. produce, reproduce, and Share Adapted Material. 124 | 125 | 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions 126 | and Limitations apply to Your use, this Public License does not apply, 127 | and You do not need to comply with its terms and conditions. 128 | 129 | 3. Term. The term of this Public License is specified in Section 6(a). 130 | 131 | 4. Media and formats; technical modifications allowed. The Licensor 132 | authorizes You to exercise the Licensed Rights in all media and formats 133 | whether now known or hereafter created, and to make technical 134 | modifications necessary to do so. The Licensor waives and/or agrees not 135 | to assert any right or authority to forbid You from making technical 136 | modifications necessary to exercise the Licensed Rights, including 137 | technical modifications necessary to circumvent Effective Technological 138 | Measures. For purposes of this Public License, simply making 139 | modifications authorized by this Section 2(a)(4) never produces Adapted 140 | Material. 141 | 142 | 5. Downstream recipients. 143 | 144 | A. Offer from the Licensor - Licensed Material. Every recipient of the 145 | Licensed Material automatically receives an offer from the Licensor to 146 | exercise the Licensed Rights under the terms and conditions of this 147 | Public License. 148 | 149 | B. No downstream restrictions. You may not offer or impose any additional 150 | or different terms or conditions on, or apply any Effective 151 | Technological Measures to, the Licensed Material if doing so restricts 152 | exercise of the Licensed Rights by any recipient of the Licensed 153 | Material. 154 | 155 | 6. No endorsement. Nothing in this Public License constitutes or may be 156 | construed as permission to assert or imply that You are, or that Your use 157 | of the Licensed Material is, connected with, or sponsored, endorsed, or 158 | granted official status by, the Licensor or others designated to receive 159 | attribution as provided in Section 3(a)(1)(A)(i). 160 | 161 | b. Other rights. 162 | 163 | 1. Moral rights, such as the right of integrity, are not licensed under this 164 | Public License, nor are publicity, privacy, and/or other similar 165 | personality rights; however, to the extent possible, the Licensor waives 166 | and/or agrees not to assert any such rights held by the Licensor to the 167 | limited extent necessary to allow You to exercise the Licensed Rights, 168 | but not otherwise. 169 | 170 | 2. Patent and trademark rights are not licensed under this Public License. 171 | 172 | 3. To the extent possible, the Licensor waives any right to collect 173 | royalties from You for the exercise of the Licensed Rights, whether 174 | directly or through a collecting society under any voluntary or waivable 175 | statutory or compulsory licensing scheme. In all other cases the Licensor 176 | expressly reserves any right to collect such royalties. 177 | 178 | Section 3 - License Conditions. 179 | 180 | Your exercise of the Licensed Rights is expressly made subject to the following 181 | conditions. 182 | 183 | a. Attribution. 184 | 185 | 1. If You Share the Licensed Material (including in modified form), You 186 | must: 187 | 188 | A. retain the following if it is supplied by the Licensor with the 189 | Licensed Material: 190 | 191 | i. identification of the creator(s) of the Licensed Material and any 192 | others designated to receive attribution, in any reasonable 193 | manner requested by the Licensor (including by pseudonym if 194 | designated); 195 | 196 | ii. a copyright notice; 197 | 198 | iii. a notice that refers to this Public License; 199 | 200 | iv. a notice that refers to the disclaimer of warranties; 201 | 202 | v. a URI or hyperlink to the Licensed Material to the extent 203 | reasonably practicable; 204 | 205 | B. indicate if You modified the Licensed Material and retain an 206 | indication of any previous modifications; and 207 | 208 | C. indicate the Licensed Material is licensed under this Public License, 209 | and include the text of, or the URI or hyperlink to, this Public 210 | License. 211 | 212 | 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable 213 | manner based on the medium, means, and context in which You Share the 214 | Licensed Material. For example, it may be reasonable to satisfy the 215 | conditions by providing a URI or hyperlink to a resource that includes 216 | the required information. 217 | 218 | 3. If requested by the Licensor, You must remove any of the information 219 | required by Section 3(a)(1)(A) to the extent reasonably practicable. 220 | 221 | 4. If You Share Adapted Material You produce, the Adapter's License You 222 | apply must not prevent recipients of the Adapted Material from complying 223 | with this Public License. 224 | 225 | Section 4 - Sui Generis Database Rights. 226 | 227 | Where the Licensed Rights include Sui Generis Database Rights that apply to 228 | Your use of the Licensed Material: 229 | 230 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, 231 | reuse, reproduce, and Share all or a substantial portion of the contents of 232 | the database; 233 | 234 | b. if You include all or a substantial portion of the database contents in a 235 | database in which You have Sui Generis Database Rights, then the database in 236 | which You have Sui Generis Database Rights (but not its individual contents) 237 | is Adapted Material; and 238 | 239 | c. You must comply with the conditions in Section 3(a) if You Share all or a 240 | substantial portion of the contents of the database. 241 | 242 | For the avoidance of doubt, this Section 4 supplements and does not replace 243 | Your obligations under this Public License where the Licensed Rights include 244 | other Copyright and Similar Rights. 245 | 246 | Section 5 - Disclaimer of Warranties and Limitation of Liability. 247 | 248 | a. Unless otherwise separately undertaken by the Licensor, to the extent 249 | possible, the Licensor offers the Licensed Material as-is and as-available, 250 | and makes no representations or warranties of any kind concerning the 251 | Licensed Material, whether express, implied, statutory, or other. This 252 | includes, without limitation, warranties of title, merchantability, fitness 253 | for a particular purpose, non-infringement, absence of latent or other 254 | defects, accuracy, or the presence or absence of errors, whether or not 255 | known or discoverable. Where disclaimers of warranties are not allowed in 256 | full or in part, this disclaimer may not apply to You. 257 | 258 | b. To the extent possible, in no event will the Licensor be liable to You on 259 | any legal theory (including, without limitation, negligence) or otherwise 260 | for any direct, special, indirect, incidental, consequential, punitive, 261 | exemplary, or other losses, costs, expenses, or damages arising out of this 262 | Public License or use of the Licensed Material, even if the Licensor has 263 | been advised of the possibility of such losses, costs, expenses, or damages. 264 | Where a limitation of liability is not allowed in full or in part, this 265 | limitation may not apply to You. 266 | 267 | c. The disclaimer of warranties and limitation of liability provided above 268 | shall be interpreted in a manner that, to the extent possible, most closely 269 | approximates an absolute disclaimer and waiver of all liability. 270 | 271 | Section 6 - Term and Termination. 272 | 273 | a. This Public License applies for the term of the Copyright and Similar Rights 274 | licensed here. However, if You fail to comply with this Public License, then 275 | Your rights under this Public License terminate automatically. 276 | 277 | b. Where Your right to use the Licensed Material has terminated under Section 278 | 6(a), it reinstates: 279 | 280 | 1. automatically as of the date the violation is cured, provided it is cured 281 | within 30 days of Your discovery of the violation; or 282 | 283 | 2. upon express reinstatement by the Licensor. 284 | 285 | c. For the avoidance of doubt, this Section 6(b) does not affect any right the 286 | Licensor may have to seek remedies for Your violations of this Public 287 | License. 288 | 289 | d. For the avoidance of doubt, the Licensor may also offer the Licensed 290 | Material under separate terms or conditions or stop distributing the 291 | Licensed Material at any time; however, doing so will not terminate this 292 | Public License. 293 | 294 | e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. 295 | 296 | Section 7 - Other Terms and Conditions. 297 | 298 | a. The Licensor shall not be bound by any additional or different terms or 299 | conditions communicated by You unless expressly agreed. 300 | 301 | b. Any arrangements, understandings, or agreements regarding the Licensed 302 | Material not stated herein are separate from and independent of the terms 303 | and conditions of this Public License. 304 | 305 | Section 8 - Interpretation. 306 | 307 | a. For the avoidance of doubt, this Public License does not, and shall not be 308 | interpreted to, reduce, limit, restrict, or impose conditions on any use of 309 | the Licensed Material that could lawfully be made without permission under 310 | this Public License. 311 | 312 | b. To the extent possible, if any provision of this Public License is deemed 313 | unenforceable, it shall be automatically reformed to the minimum extent 314 | necessary to make it enforceable. If the provision cannot be reformed, it 315 | shall be severed from this Public License without affecting the 316 | enforceability of the remaining terms and conditions. 317 | 318 | c. No term or condition of this Public License will be waived and no failure to 319 | comply consented to unless expressly agreed to by the Licensor. 320 | 321 | d. Nothing in this Public License constitutes or may be interpreted as a 322 | limitation upon, or waiver of, any privileges and immunities that apply to 323 | the Licensor or You, including from the legal processes of any jurisdiction 324 | or authority. 325 | 326 | Creative Commons is not a party to its public licenses. Notwithstanding, 327 | Creative Commons may elect to apply one of its public licenses to material it 328 | publishes and in those instances will be considered the "Licensor." Except for 329 | the limited purpose of indicating that material is shared under a Creative 330 | Commons public license or as otherwise permitted by the Creative Commons 331 | policies published at creativecommons.org/policies, Creative Commons does not 332 | authorize the use of the trademark "Creative Commons" or any other trademark or 333 | logo of Creative Commons without its prior written consent including, without 334 | limitation, in connection with any unauthorized modifications to any of its 335 | public licenses or any other arrangements, understandings, or agreements 336 | concerning use of licensed material. For the avoidance of doubt, this paragraph 337 | does not form part of the public licenses. 338 | 339 | Creative Commons may be contacted at creativecommons.org. 340 | -------------------------------------------------------------------------------- /LICENSES/CC-BY-SA-4.0.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Attribution-ShareAlike 4.0 International 2 | 3 | Creative Commons Corporation ("Creative Commons") is not a law firm and does 4 | not provide legal services or legal advice. Distribution of Creative Commons 5 | public licenses does not create a lawyer-client or other relationship. Creative 6 | Commons makes its licenses and related information available on an "as-is" 7 | basis. Creative Commons gives no warranties regarding its licenses, any 8 | material licensed under their terms and conditions, or any related information. 9 | Creative Commons disclaims all liability for damages resulting from their use 10 | to the fullest extent possible. 11 | 12 | Using Creative Commons Public Licenses 13 | 14 | Creative Commons public licenses provide a standard set of terms and conditions 15 | that creators and other rights holders may use to share original works of 16 | authorship and other material subject to copyright and certain other rights 17 | specified in the public license below. The following considerations are for 18 | informational purposes only, are not exhaustive, and do not form part of our 19 | licenses. 20 | 21 | Considerations for licensors: Our public licenses are intended for use by those 22 | authorized to give the public permission to use material in ways otherwise 23 | restricted by copyright and certain other rights. Our licenses are irrevocable. 24 | Licensors should read and understand the terms and conditions of the license 25 | they choose before applying it. Licensors should also secure all rights 26 | necessary before applying our licenses so that the public can reuse the 27 | material as expected. Licensors should clearly mark any material not subject to 28 | the license. This includes other CC-licensed material, or material used under 29 | an exception or limitation to copyright. More considerations for licensors. 30 | 31 | Considerations for the public: By using one of our public licenses, a licensor 32 | grants the public permission to use the licensed material under specified terms 33 | and conditions. If the licensor's permission is not necessary for any 34 | reason-for example, because of any applicable exception or limitation to 35 | copyright-then that use is not regulated by the license. Our licenses grant 36 | only permissions under copyright and certain other rights that a licensor has 37 | authority to grant. Use of the licensed material may still be restricted for 38 | other reasons, including because others have copyright or other rights in the 39 | material. A licensor may make special requests, such as asking that all changes 40 | be marked or described. 41 | 42 | Although not required by our licenses, you are encouraged to respect those 43 | requests where reasonable. More considerations for the public. 44 | 45 | Creative Commons Attribution-ShareAlike 4.0 International Public License 46 | 47 | By exercising the Licensed Rights (defined below), You accept and agree to be 48 | bound by the terms and conditions of this Creative Commons 49 | Attribution-ShareAlike 4.0 International Public License ("Public License"). To 50 | the extent this Public License may be interpreted as a contract, You are 51 | granted the Licensed Rights in consideration of Your acceptance of these terms 52 | and conditions, and the Licensor grants You such rights in consideration of 53 | benefits the Licensor receives from making the Licensed Material available 54 | under these terms and conditions. 55 | 56 | Section 1 - Definitions. 57 | 58 | a. Adapted Material means material subject to Copyright and Similar Rights that 59 | is derived from or based upon the Licensed Material and in which the 60 | Licensed Material is translated, altered, arranged, transformed, or 61 | otherwise modified in a manner requiring permission under the Copyright and 62 | Similar Rights held by the Licensor. For purposes of this Public License, 63 | where the Licensed Material is a musical work, performance, or sound 64 | recording, Adapted Material is always produced where the Licensed Material 65 | is synched in timed relation with a moving image. 66 | 67 | b. Adapter's License means the license You apply to Your Copyright and Similar 68 | Rights in Your contributions to Adapted Material in accordance with the 69 | terms and conditions of this Public License. 70 | 71 | c. BY-SA Compatible License means a license listed at 72 | creativecommons.org/compatiblelicenses, approved by Creative Commons as 73 | essentially the equivalent of this Public License. 74 | 75 | d. Copyright and Similar Rights means copyright and/or similar rights closely 76 | related to copyright including, without limitation, performance, broadcast, 77 | sound recording, and Sui Generis Database Rights, without regard to how the 78 | rights are labeled or categorized. For purposes of this Public License, the 79 | rights specified in Section 2(b)(1)-(2) are not Copyright and Similar 80 | Rights. 81 | 82 | e. Effective Technological Measures means those measures that, in the absence 83 | of proper authority, may not be circumvented under laws fulfilling 84 | obligations under Article 11 of the WIPO Copyright Treaty adopted on 85 | December 20, 1996, and/or similar international agreements. 86 | 87 | f. Exceptions and Limitations means fair use, fair dealing, and/or any other 88 | exception or limitation to Copyright and Similar Rights that applies to Your 89 | use of the Licensed Material. 90 | 91 | g. License Elements means the license attributes listed in the name of a 92 | Creative Commons Public License. The License Elements of this Public License 93 | are Attribution and ShareAlike. 94 | 95 | h. Licensed Material means the artistic or literary work, database, or other 96 | material to which the Licensor applied this Public License. 97 | 98 | i. Licensed Rights means the rights granted to You subject to the terms and 99 | conditions of this Public License, which are limited to all Copyright and 100 | Similar Rights that apply to Your use of the Licensed Material and that the 101 | Licensor has authority to license. 102 | 103 | j. Licensor means the individual(s) or entity(ies) granting rights under this 104 | Public License. 105 | 106 | k. Share means to provide material to the public by any means or process that 107 | requires permission under the Licensed Rights, such as reproduction, public 108 | display, public performance, distribution, dissemination, communication, or 109 | importation, and to make material available to the public including in ways 110 | that members of the public may access the material from a place and at a 111 | time individually chosen by them. 112 | 113 | l. Sui Generis Database Rights means rights other than copyright resulting from 114 | Directive 96/9/EC of the European Parliament and of the Council of 11 March 115 | 1996 on the legal protection of databases, as amended and/or succeeded, as 116 | well as other essentially equivalent rights anywhere in the world. 117 | 118 | m. You means the individual or entity exercising the Licensed Rights under this 119 | Public License. Your has a corresponding meaning. 120 | 121 | Section 2 - Scope. 122 | 123 | a. License grant. 124 | 125 | 1. Subject to the terms and conditions of this Public License, the Licensor 126 | hereby grants You a worldwide, royalty-free, non-sublicensable, 127 | non-exclusive, irrevocable license to exercise the Licensed Rights in the 128 | Licensed Material to: 129 | 130 | A. reproduce and Share the Licensed Material, in whole or in part; and 131 | 132 | B. produce, reproduce, and Share Adapted Material. 133 | 134 | 2. Exceptions and Limitations. For the avoidance of doubt, where Exceptions 135 | and Limitations apply to Your use, this Public License does not apply, 136 | and You do not need to comply with its terms and conditions. 137 | 138 | 3. Term. The term of this Public License is specified in Section 6(a). 139 | 140 | 4. Media and formats; technical modifications allowed. The Licensor 141 | authorizes You to exercise the Licensed Rights in all media and formats 142 | whether now known or hereafter created, and to make technical 143 | modifications necessary to do so. The Licensor waives and/or agrees not 144 | to assert any right or authority to forbid You from making technical 145 | modifications necessary to exercise the Licensed Rights, including 146 | technical modifications necessary to circumvent Effective Technological 147 | Measures. For purposes of this Public License, simply making 148 | modifications authorized by this Section 2(a)(4) never produces Adapted 149 | Material. 150 | 151 | 5. Downstream recipients. 152 | 153 | A. Offer from the Licensor - Licensed Material. Every recipient of the 154 | Licensed Material automatically receives an offer from the Licensor to 155 | exercise the Licensed Rights under the terms and conditions of this 156 | Public License. 157 | 158 | B. Additional offer from the Licensor - Adapted Material. Every recipient 159 | of Adapted Material from You automatically receives an offer from the 160 | Licensor to exercise the Licensed Rights in the Adapted Material under 161 | the conditions of the Adapter's License You apply. 162 | 163 | C. No downstream restrictions. You may not offer or impose any additional 164 | or different terms or conditions on, or apply any Effective 165 | Technological Measures to, the Licensed Material if doing so restricts 166 | exercise of the Licensed Rights by any recipient of the Licensed 167 | Material. 168 | 169 | 6. No endorsement. Nothing in this Public License constitutes or may be 170 | construed as permission to assert or imply that You are, or that Your use 171 | of the Licensed Material is, connected with, or sponsored, endorsed, or 172 | granted official status by, the Licensor or others designated to receive 173 | attribution as provided in Section 3(a)(1)(A)(i). 174 | 175 | b. Other rights. 176 | 177 | 1. Moral rights, such as the right of integrity, are not licensed under this 178 | Public License, nor are publicity, privacy, and/or other similar 179 | personality rights; however, to the extent possible, the Licensor waives 180 | and/or agrees not to assert any such rights held by the Licensor to the 181 | limited extent necessary to allow You to exercise the Licensed Rights, 182 | but not otherwise. 183 | 184 | 2. Patent and trademark rights are not licensed under this Public License. 185 | 186 | 3. To the extent possible, the Licensor waives any right to collect 187 | royalties from You for the exercise of the Licensed Rights, whether 188 | directly or through a collecting society under any voluntary or waivable 189 | statutory or compulsory licensing scheme. In all other cases the Licensor 190 | expressly reserves any right to collect such royalties. 191 | 192 | Section 3 - License Conditions. 193 | 194 | Your exercise of the Licensed Rights is expressly made subject to the following 195 | conditions. 196 | 197 | a. Attribution. 198 | 199 | 1. If You Share the Licensed Material (including in modified form), You 200 | must: 201 | 202 | A. retain the following if it is supplied by the Licensor with the 203 | Licensed Material: 204 | 205 | i. identification of the creator(s) of the Licensed Material and any 206 | others designated to receive attribution, in any reasonable 207 | manner requested by the Licensor (including by pseudonym if 208 | designated); 209 | 210 | ii. a copyright notice; 211 | 212 | iii. a notice that refers to this Public License; 213 | 214 | iv. a notice that refers to the disclaimer of warranties; 215 | 216 | v. a URI or hyperlink to the Licensed Material to the extent 217 | reasonably practicable; 218 | 219 | B. indicate if You modified the Licensed Material and retain an 220 | indication of any previous modifications; and 221 | 222 | C. indicate the Licensed Material is licensed under this Public License, 223 | and include the text of, or the URI or hyperlink to, this Public 224 | License. 225 | 226 | 2. You may satisfy the conditions in Section 3(a)(1) in any reasonable 227 | manner based on the medium, means, and context in which You Share the 228 | Licensed Material. For example, it may be reasonable to satisfy the 229 | conditions by providing a URI or hyperlink to a resource that includes 230 | the required information. 231 | 232 | 3. If requested by the Licensor, You must remove any of the information 233 | required by Section 3(a)(1)(A) to the extent reasonably practicable. 234 | 235 | b. ShareAlike.In addition to the conditions in Section 3(a), if You Share 236 | Adapted Material You produce, the following conditions also apply. 237 | 238 | 1. The Adapter's License You apply must be a Creative Commons license with 239 | the same License Elements, this version or later, or a BY-SA Compatible 240 | License. 241 | 242 | 2. You must include the text of, or the URI or hyperlink to, the Adapter's 243 | License You apply. You may satisfy this condition in any reasonable 244 | manner based on the medium, means, and context in which You Share Adapted 245 | Material. 246 | 247 | 3. You may not offer or impose any additional or different terms or 248 | conditions on, or apply any Effective Technological Measures to, Adapted 249 | Material that restrict exercise of the rights granted under the Adapter's 250 | License You apply. 251 | 252 | Section 4 - Sui Generis Database Rights. 253 | 254 | Where the Licensed Rights include Sui Generis Database Rights that apply to 255 | Your use of the Licensed Material: 256 | 257 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right to extract, 258 | reuse, reproduce, and Share all or a substantial portion of the contents of 259 | the database; 260 | 261 | b. if You include all or a substantial portion of the database contents in a 262 | database in which You have Sui Generis Database Rights, then the database in 263 | which You have Sui Generis Database Rights (but not its individual contents) 264 | is Adapted Material, including for purposes of Section 3(b); and 265 | 266 | c. You must comply with the conditions in Section 3(a) if You Share all or a 267 | substantial portion of the contents of the database. 268 | 269 | For the avoidance of doubt, this Section 4 supplements and does not replace 270 | Your obligations under this Public License where the Licensed Rights include 271 | other Copyright and Similar Rights. 272 | 273 | Section 5 - Disclaimer of Warranties and Limitation of Liability. 274 | 275 | a. Unless otherwise separately undertaken by the Licensor, to the extent 276 | possible, the Licensor offers the Licensed Material as-is and as-available, 277 | and makes no representations or warranties of any kind concerning the 278 | Licensed Material, whether express, implied, statutory, or other. This 279 | includes, without limitation, warranties of title, merchantability, fitness 280 | for a particular purpose, non-infringement, absence of latent or other 281 | defects, accuracy, or the presence or absence of errors, whether or not 282 | known or discoverable. Where disclaimers of warranties are not allowed in 283 | full or in part, this disclaimer may not apply to You. 284 | 285 | b. To the extent possible, in no event will the Licensor be liable to You on 286 | any legal theory (including, without limitation, negligence) or otherwise 287 | for any direct, special, indirect, incidental, consequential, punitive, 288 | exemplary, or other losses, costs, expenses, or damages arising out of this 289 | Public License or use of the Licensed Material, even if the Licensor has 290 | been advised of the possibility of such losses, costs, expenses, or damages. 291 | Where a limitation of liability is not allowed in full or in part, this 292 | limitation may not apply to You. 293 | 294 | c. The disclaimer of warranties and limitation of liability provided above 295 | shall be interpreted in a manner that, to the extent possible, most closely 296 | approximates an absolute disclaimer and waiver of all liability. 297 | 298 | Section 6 - Term and Termination. 299 | 300 | a. This Public License applies for the term of the Copyright and Similar Rights 301 | licensed here. However, if You fail to comply with this Public License, then 302 | Your rights under this Public License terminate automatically. 303 | 304 | b. Where Your right to use the Licensed Material has terminated under Section 305 | 6(a), it reinstates: 306 | 307 | 1. automatically as of the date the violation is cured, provided it is cured 308 | within 30 days of Your discovery of the violation; or 309 | 310 | 2. upon express reinstatement by the Licensor. 311 | 312 | c. For the avoidance of doubt, this Section 6(b) does not affect any right the 313 | Licensor may have to seek remedies for Your violations of this Public 314 | License. 315 | 316 | d. For the avoidance of doubt, the Licensor may also offer the Licensed 317 | Material under separate terms or conditions or stop distributing the 318 | Licensed Material at any time; however, doing so will not terminate this 319 | Public License. 320 | 321 | e. Sections 1, 5, 6, 7, and 8 survive termination of this Public License. 322 | 323 | Section 7 - Other Terms and Conditions. 324 | 325 | a. The Licensor shall not be bound by any additional or different terms or 326 | conditions communicated by You unless expressly agreed. 327 | 328 | b. Any arrangements, understandings, or agreements regarding the Licensed 329 | Material not stated herein are separate from and independent of the terms 330 | and conditions of this Public License. 331 | 332 | Section 8 - Interpretation. 333 | 334 | a. For the avoidance of doubt, this Public License does not, and shall not be 335 | interpreted to, reduce, limit, restrict, or impose conditions on any use of 336 | the Licensed Material that could lawfully be made without permission under 337 | this Public License. 338 | 339 | b. To the extent possible, if any provision of this Public License is deemed 340 | unenforceable, it shall be automatically reformed to the minimum extent 341 | necessary to make it enforceable. If the provision cannot be reformed, it 342 | shall be severed from this Public License without affecting the 343 | enforceability of the remaining terms and conditions. 344 | 345 | c. No term or condition of this Public License will be waived and no failure to 346 | comply consented to unless expressly agreed to by the Licensor. 347 | 348 | d. Nothing in this Public License constitutes or may be interpreted as a 349 | limitation upon, or waiver of, any privileges and immunities that apply to 350 | the Licensor or You, including from the legal processes of any jurisdiction 351 | or authority. 352 | 353 | Creative Commons is not a party to its public licenses. Notwithstanding, 354 | Creative Commons may elect to apply one of its public licenses to material it 355 | publishes and in those instances will be considered the "Licensor." Except for 356 | the limited purpose of indicating that material is shared under a Creative 357 | Commons public license or as otherwise permitted by the Creative Commons 358 | policies published at creativecommons.org/policies, Creative Commons does not 359 | authorize the use of the trademark "Creative Commons" or any other trademark or 360 | logo of Creative Commons without its prior written consent including, without 361 | limitation, in connection with any unauthorized modifications to any of its 362 | public licenses or any other arrangements, understandings, or agreements 363 | concerning use of licensed material. For the avoidance of doubt, this paragraph 364 | does not form part of the public licenses. 365 | 366 | Creative Commons may be contacted at creativecommons.org. 367 | -------------------------------------------------------------------------------- /LICENSES/CC0-1.0.txt: -------------------------------------------------------------------------------- 1 | Creative Commons Legal Code 2 | 3 | CC0 1.0 Universal 4 | 5 | CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE 6 | LEGAL SERVICES. DISTRIBUTION OF THIS DOCUMENT DOES NOT CREATE AN 7 | ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS 8 | INFORMATION ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES 9 | REGARDING THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS 10 | PROVIDED HEREUNDER, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM 11 | THE USE OF THIS DOCUMENT OR THE INFORMATION OR WORKS PROVIDED 12 | HEREUNDER. 13 | 14 | Statement of Purpose 15 | 16 | The laws of most jurisdictions throughout the world automatically confer 17 | exclusive Copyright and Related Rights (defined below) upon the creator 18 | and subsequent owner(s) (each and all, an "owner") of an original work of 19 | authorship and/or a database (each, a "Work"). 20 | 21 | Certain owners wish to permanently relinquish those rights to a Work for 22 | the purpose of contributing to a commons of creative, cultural and 23 | scientific works ("Commons") that the public can reliably and without fear 24 | of later claims of infringement build upon, modify, incorporate in other 25 | works, reuse and redistribute as freely as possible in any form whatsoever 26 | and for any purposes, including without limitation commercial purposes. 27 | These owners may contribute to the Commons to promote the ideal of a free 28 | culture and the further production of creative, cultural and scientific 29 | works, or to gain reputation or greater distribution for their Work in 30 | part through the use and efforts of others. 31 | 32 | For these and/or other purposes and motivations, and without any 33 | expectation of additional consideration or compensation, the person 34 | associating CC0 with a Work (the "Affirmer"), to the extent that he or she 35 | is an owner of Copyright and Related Rights in the Work, voluntarily 36 | elects to apply CC0 to the Work and publicly distribute the Work under its 37 | terms, with knowledge of his or her Copyright and Related Rights in the 38 | Work and the meaning and intended legal effect of CC0 on those rights. 39 | 40 | 1. Copyright and Related Rights. A Work made available under CC0 may be 41 | protected by copyright and related or neighboring rights ("Copyright and 42 | Related Rights"). Copyright and Related Rights include, but are not 43 | limited to, the following: 44 | 45 | i. the right to reproduce, adapt, distribute, perform, display, 46 | communicate, and translate a Work; 47 | ii. moral rights retained by the original author(s) and/or performer(s); 48 | iii. publicity and privacy rights pertaining to a person's image or 49 | likeness depicted in a Work; 50 | iv. rights protecting against unfair competition in regards to a Work, 51 | subject to the limitations in paragraph 4(a), below; 52 | v. rights protecting the extraction, dissemination, use and reuse of data 53 | in a Work; 54 | vi. database rights (such as those arising under Directive 96/9/EC of the 55 | European Parliament and of the Council of 11 March 1996 on the legal 56 | protection of databases, and under any national implementation 57 | thereof, including any amended or successor version of such 58 | directive); and 59 | vii. other similar, equivalent or corresponding rights throughout the 60 | world based on applicable law or treaty, and any national 61 | implementations thereof. 62 | 63 | 2. Waiver. To the greatest extent permitted by, but not in contravention 64 | of, applicable law, Affirmer hereby overtly, fully, permanently, 65 | irrevocably and unconditionally waives, abandons, and surrenders all of 66 | Affirmer's Copyright and Related Rights and associated claims and causes 67 | of action, whether now known or unknown (including existing as well as 68 | future claims and causes of action), in the Work (i) in all territories 69 | worldwide, (ii) for the maximum duration provided by applicable law or 70 | treaty (including future time extensions), (iii) in any current or future 71 | medium and for any number of copies, and (iv) for any purpose whatsoever, 72 | including without limitation commercial, advertising or promotional 73 | purposes (the "Waiver"). Affirmer makes the Waiver for the benefit of each 74 | member of the public at large and to the detriment of Affirmer's heirs and 75 | successors, fully intending that such Waiver shall not be subject to 76 | revocation, rescission, cancellation, termination, or any other legal or 77 | equitable action to disrupt the quiet enjoyment of the Work by the public 78 | as contemplated by Affirmer's express Statement of Purpose. 79 | 80 | 3. Public License Fallback. Should any part of the Waiver for any reason 81 | be judged legally invalid or ineffective under applicable law, then the 82 | Waiver shall be preserved to the maximum extent permitted taking into 83 | account Affirmer's express Statement of Purpose. In addition, to the 84 | extent the Waiver is so judged Affirmer hereby grants to each affected 85 | person a royalty-free, non transferable, non sublicensable, non exclusive, 86 | irrevocable and unconditional license to exercise Affirmer's Copyright and 87 | Related Rights in the Work (i) in all territories worldwide, (ii) for the 88 | maximum duration provided by applicable law or treaty (including future 89 | time extensions), (iii) in any current or future medium and for any number 90 | of copies, and (iv) for any purpose whatsoever, including without 91 | limitation commercial, advertising or promotional purposes (the 92 | "License"). The License shall be deemed effective as of the date CC0 was 93 | applied by Affirmer to the Work. Should any part of the License for any 94 | reason be judged legally invalid or ineffective under applicable law, such 95 | partial invalidity or ineffectiveness shall not invalidate the remainder 96 | of the License, and in such case Affirmer hereby affirms that he or she 97 | will not (i) exercise any of his or her remaining Copyright and Related 98 | Rights in the Work or (ii) assert any associated claims and causes of 99 | action with respect to the Work, in either case contrary to Affirmer's 100 | express Statement of Purpose. 101 | 102 | 4. Limitations and Disclaimers. 103 | 104 | a. No trademark or patent rights held by Affirmer are waived, abandoned, 105 | surrendered, licensed or otherwise affected by this document. 106 | b. Affirmer offers the Work as-is and makes no representations or 107 | warranties of any kind concerning the Work, express, implied, 108 | statutory or otherwise, including without limitation warranties of 109 | title, merchantability, fitness for a particular purpose, non 110 | infringement, or the absence of latent or other defects, accuracy, or 111 | the present or absence of errors, whether or not discoverable, all to 112 | the greatest extent permissible under applicable law. 113 | c. Affirmer disclaims responsibility for clearing rights of other persons 114 | that may apply to the Work or any use thereof, including without 115 | limitation any person's Copyright and Related Rights in the Work. 116 | Further, Affirmer disclaims responsibility for obtaining any necessary 117 | consents, permissions or other rights required for any use of the 118 | Work. 119 | d. Affirmer understands and acknowledges that Creative Commons is not a 120 | party to this document and has no duty or obligation with respect to 121 | this CC0 or use of the Work. 122 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 57 | 58 | Optimal Reciprocal Collision Avoidance for C# 59 | ============================================= 60 | 61 | 62 | 63 | [![DOI](https://zenodo.org/badge/45011155.svg)](https://zenodo.org/badge/latestdoi/45011155) 64 | 65 | We present a formal approach to reciprocal collision avoidance, where multiple 66 | independent mobile robots or agents need to avoid collisions with each other 67 | without communication among agents while moving in a common workspace. Our 68 | formulation, optimal reciprocal collision avoidance (ORCA), provides sufficient 69 | conditions for collision-free motion by letting each agent take half of the 70 | responsibility of avoiding pairwise collisions. Selecting the optimal action for 71 | each agent is reduced to solving a low-dimensional linear program, and we prove 72 | that the resulting motions are smooth. We test our optimal reciprocal collision 73 | avoidance approach on several dense and complex simulation scenarios workspaces 74 | involving thousands of agents, and compute collision-free actions for all of 75 | them in only a few milliseconds. 76 | 77 | RVO2 Library C# is an open-source C# .NET 6 implementation of our algorithm in 78 | two dimensions. It has a simple API for third-party applications. The user 79 | specifies static obstacles, agents, and the preferred velocities of the agents. 80 | The simulation is performed step-by-step via a simple call to the library. The 81 | simulation is fully accessible and manipulable during runtime. 82 | 83 | ![Build Status](https://github.com/snape/RVO2-CS/workflows/ci/badge.svg?branch=main) 84 | 85 | 86 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 87 | SPDX-License-Identifier: Apache-2.0 88 | 89 | Licensed under the Apache License, Version 2.0 (the "License"); 90 | you may not use this file except in compliance with the License. 91 | You may obtain a copy of the License at 92 | 93 |    94 | 95 | Unless required by applicable law or agreed to in writing, software 96 | distributed under the License is distributed on an "AS IS" BASIS, 97 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 98 | See the License for the specific language governing permissions and 99 | limitations under the License. 100 | 101 | Please send all bug reports to [geom@cs.unc.edu](mailto:geom@cs.unc.edu). 102 | 103 | The authors may be contacted via: 104 | 105 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 106 | Dept. of Computer Science 107 | 201 S. Columbia St. 108 | Frederick P. Brooks, Jr. Computer Science Bldg. 109 | Chapel Hill, N.C. 27599-3175 110 | United States of America 111 | 112 | -------------------------------------------------------------------------------- /RVOCS.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.30114.105 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RVOCS", "RVOCS\RVOCS.csproj", "{16285A26-6292-406E-9426-65BB5A017CB3}" 7 | EndProject 8 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Blocks", "Blocks\Blocks.csproj", "{10EAB31F-A2BC-4A12-9789-FD2646B1EB0A}" 9 | EndProject 10 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Circle", "Circle\Circle.csproj", "{3F41A6E2-0894-4A65-8026-3EF310187663}" 11 | EndProject 12 | Global 13 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 14 | Debug|Any CPU = Debug|Any CPU 15 | Release|Any CPU = Release|Any CPU 16 | EndGlobalSection 17 | GlobalSection(SolutionProperties) = preSolution 18 | HideSolutionNode = FALSE 19 | EndGlobalSection 20 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 21 | {16285A26-6292-406E-9426-65BB5A017CB3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 22 | {16285A26-6292-406E-9426-65BB5A017CB3}.Debug|Any CPU.Build.0 = Debug|Any CPU 23 | {16285A26-6292-406E-9426-65BB5A017CB3}.Release|Any CPU.ActiveCfg = Release|Any CPU 24 | {16285A26-6292-406E-9426-65BB5A017CB3}.Release|Any CPU.Build.0 = Release|Any CPU 25 | {10EAB31F-A2BC-4A12-9789-FD2646B1EB0A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 26 | {10EAB31F-A2BC-4A12-9789-FD2646B1EB0A}.Debug|Any CPU.Build.0 = Debug|Any CPU 27 | {10EAB31F-A2BC-4A12-9789-FD2646B1EB0A}.Release|Any CPU.ActiveCfg = Release|Any CPU 28 | {10EAB31F-A2BC-4A12-9789-FD2646B1EB0A}.Release|Any CPU.Build.0 = Release|Any CPU 29 | {3F41A6E2-0894-4A65-8026-3EF310187663}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 30 | {3F41A6E2-0894-4A65-8026-3EF310187663}.Debug|Any CPU.Build.0 = Debug|Any CPU 31 | {3F41A6E2-0894-4A65-8026-3EF310187663}.Release|Any CPU.ActiveCfg = Release|Any CPU 32 | {3F41A6E2-0894-4A65-8026-3EF310187663}.Release|Any CPU.Build.0 = Release|Any CPU 33 | EndGlobalSection 34 | EndGlobal 35 | -------------------------------------------------------------------------------- /RVOCS.sln.license: -------------------------------------------------------------------------------- 1 | RVOCS.sln 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /RVOCS/BUILD.bazel: -------------------------------------------------------------------------------- 1 | # -*- mode: bazel; -*- 2 | # vi: set ft=bazel: 3 | 4 | # 5 | # RVOCS/BUILD.bazel 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | load("@rules_dotnet//dotnet:defs.bzl", "csharp_library") 38 | load("@rules_pkg//pkg:mappings.bzl", "pkg_attributes", "pkg_files") 39 | 40 | package(default_applicable_licenses = ["//:license"]) 41 | 42 | licenses(["notice"]) # Apache-2.0 43 | 44 | csharp_library( 45 | name = "RVOCS.dll", 46 | srcs = [ 47 | "Agent.cs", 48 | "KdTree.cs", 49 | "Line.cs", 50 | "Obstacle.cs", 51 | "RVOMath.cs", 52 | "Simulator.cs", 53 | "Vector2.cs", 54 | ], 55 | target_frameworks = ["net6.0"], 56 | targeting_packs = ["@rules_dotnet_nuget_packages//microsoft.netcore.app.ref"], 57 | visibility = ["//visibility:public"], 58 | ) 59 | 60 | pkg_files( 61 | name = "lib", 62 | srcs = [":RVOCS.dll"], 63 | attributes = pkg_attributes(mode = "0644"), 64 | prefix = "usr/lib", 65 | visibility = ["//:__pkg__"], 66 | ) 67 | -------------------------------------------------------------------------------- /RVOCS/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # -*- mode: cmake; -*- 2 | # vi: set ft=cmake: 3 | 4 | # 5 | # RVOCS/CMakeLists.txt 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | include_external_msproject(RVOCS RVOCS.csproj 38 | GUID 16285A26-6292-406E-9426-65BB5A017CB3) 39 | -------------------------------------------------------------------------------- /RVOCS/Line.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Line.cs 3 | * RVO2 Library C# 4 | * 5 | * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | * SPDX-License-Identifier: Apache-2.0 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * 20 | * Please send all bug reports to . 21 | * 22 | * The authors may be contacted via: 23 | * 24 | * Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | * Dept. of Computer Science 26 | * 201 S. Columbia St. 27 | * Frederick P. Brooks, Jr. Computer Science Bldg. 28 | * Chapel Hill, N.C. 27599-3175 29 | * United States of America 30 | * 31 | * 32 | */ 33 | 34 | namespace RVO 35 | { 36 | /** 37 | * Defines a directed line. 38 | */ 39 | public struct Line 40 | { 41 | public Vector2 direction; 42 | public Vector2 point; 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /RVOCS/Obstacle.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Obstacle.cs 3 | * RVO2 Library C# 4 | * 5 | * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | * SPDX-License-Identifier: Apache-2.0 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * 20 | * Please send all bug reports to . 21 | * 22 | * The authors may be contacted via: 23 | * 24 | * Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | * Dept. of Computer Science 26 | * 201 S. Columbia St. 27 | * Frederick P. Brooks, Jr. Computer Science Bldg. 28 | * Chapel Hill, N.C. 27599-3175 29 | * United States of America 30 | * 31 | * 32 | */ 33 | 34 | namespace RVO 35 | { 36 | /** 37 | * Defines static obstacles in the simulation. 38 | */ 39 | internal class Obstacle 40 | { 41 | 42 | internal Obstacle next_; 43 | internal Obstacle previous_; 44 | internal Vector2 direction_; 45 | internal Vector2 point_; 46 | internal int id_; 47 | internal bool convex_; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /RVOCS/RVOCS.csproj: -------------------------------------------------------------------------------- 1 | 2 | 34 | 35 | 36 | net6.0 37 | RVO 38 | RVOCS 39 | 2.2.0 40 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 41 | RVO2 Library C# 42 | Optimal Reciprocal Collision Avoidance for C# 43 | 2008 University of North Carolina at Chapel Hill 44 | Apache-2.0 45 | https://gamma.cs.unc.edu/RVO2/ 46 | https://github.com/snape/RVO2-CS 47 | git 48 | main 49 | 50 | 51 | 52 | 53 | 54 | 55 | -------------------------------------------------------------------------------- /RVOCS/RVOMath.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * RVOMath.cs 3 | * RVO2 Library C# 4 | * 5 | * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | * SPDX-License-Identifier: Apache-2.0 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * 20 | * Please send all bug reports to . 21 | * 22 | * The authors may be contacted via: 23 | * 24 | * Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | * Dept. of Computer Science 26 | * 201 S. Columbia St. 27 | * Frederick P. Brooks, Jr. Computer Science Bldg. 28 | * Chapel Hill, N.C. 27599-3175 29 | * United States of America 30 | * 31 | * 32 | */ 33 | 34 | using System; 35 | 36 | namespace RVO 37 | { 38 | /** 39 | * Contains functions and constants used in multiple classes. 40 | * 41 | */ 42 | public struct RVOMath 43 | { 44 | /** 45 | * A sufficiently small positive number. 46 | */ 47 | internal const float RVO_EPSILON = 0.00001f; 48 | 49 | /** 50 | * Computes the length of a specified two-dimensional vector. 51 | * 52 | * 53 | * The two-dimensional vector whose length is to be 54 | * computed. 55 | * The length of the two-dimensional vector. 56 | */ 57 | public static float abs(Vector2 vector) 58 | { 59 | return sqrt(absSq(vector)); 60 | } 61 | 62 | /** 63 | * Computes the squared length of a specified two-dimensional 64 | * vector. 65 | * 66 | * The squared length of the two-dimensional vector. 67 | * 68 | * The two-dimensional vector whose squared length 69 | * is to be computed. 70 | */ 71 | public static float absSq(Vector2 vector) 72 | { 73 | return vector * vector; 74 | } 75 | 76 | /** 77 | * Computes the normalization of the specified two-dimensional 78 | * vector. 79 | * 80 | * The normalization of the two-dimensional vector. 81 | * 82 | * The two-dimensional vector whose normalization 83 | * is to be computed. 84 | */ 85 | public static Vector2 normalize(Vector2 vector) 86 | { 87 | return vector / abs(vector); 88 | } 89 | 90 | /** 91 | * Computes the determinant of a two-dimensional square matrix 92 | * with rows consisting of the specified two-dimensional vectors. 93 | * 94 | * 95 | * The determinant of the two-dimensional square matrix. 96 | * 97 | * 98 | * The top row of the two-dimensional square 99 | * matrix. 100 | * The bottom row of the two-dimensional square 101 | * matrix. 102 | */ 103 | internal static float det(Vector2 vector1, Vector2 vector2) 104 | { 105 | return vector1.x_ * vector2.y_ - vector1.y_ * vector2.x_; 106 | } 107 | 108 | /** 109 | * Computes the squared distance from a line segment with the 110 | * specified endpoints to a specified point. 111 | * 112 | * The squared distance from the line segment to the point. 113 | * 114 | * 115 | * The first endpoint of the line segment. 116 | * The second endpoint of the line segment. 117 | * 118 | * The point to which the squared distance is to 119 | * be calculated. 120 | */ 121 | internal static float distSqPointLineSegment(Vector2 vector1, Vector2 vector2, Vector2 vector3) 122 | { 123 | float r = ((vector3 - vector1) * (vector2 - vector1)) / absSq(vector2 - vector1); 124 | 125 | if (r < 0.0f) 126 | { 127 | return absSq(vector3 - vector1); 128 | } 129 | 130 | if (r > 1.0f) 131 | { 132 | return absSq(vector3 - vector2); 133 | } 134 | 135 | return absSq(vector3 - (vector1 + r * (vector2 - vector1))); 136 | } 137 | 138 | /** 139 | * Computes the absolute value of a float. 140 | * 141 | * The absolute value of the float. 142 | * 143 | * The float of which to compute the absolute 144 | * value. 145 | */ 146 | internal static float fabs(float scalar) 147 | { 148 | return Math.Abs(scalar); 149 | } 150 | 151 | /** 152 | * Computes the signed distance from a line connecting the 153 | * specified points to a specified point. 154 | * 155 | * Positive when the point c lies to the left of the line ab. 156 | * 157 | * 158 | * The first point on the line. 159 | * The second point on the line. 160 | * The point to which the signed distance is to be 161 | * calculated. 162 | */ 163 | internal static float leftOf(Vector2 a, Vector2 b, Vector2 c) 164 | { 165 | return det(a - c, b - a); 166 | } 167 | 168 | /** 169 | * Computes the square of a float. 170 | * 171 | * The square of the float. 172 | * 173 | * The float to be squared. 174 | */ 175 | internal static float sqr(float scalar) 176 | { 177 | return scalar * scalar; 178 | } 179 | 180 | /** 181 | * Computes the square root of a float. 182 | * 183 | * The square root of the float. 184 | * 185 | * The float of which to compute the square root. 186 | * 187 | */ 188 | internal static float sqrt(float scalar) 189 | { 190 | return (float)Math.Sqrt(scalar); 191 | } 192 | } 193 | } 194 | -------------------------------------------------------------------------------- /RVOCS/Vector2.cs: -------------------------------------------------------------------------------- 1 | /* 2 | * Vector2.cs 3 | * RVO2 Library C# 4 | * 5 | * SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | * SPDX-License-Identifier: Apache-2.0 7 | * 8 | * Licensed under the Apache License, Version 2.0 (the "License"); 9 | * you may not use this file except in compliance with the License. 10 | * You may obtain a copy of the License at 11 | * 12 | * http://www.apache.org/licenses/LICENSE-2.0 13 | * 14 | * Unless required by applicable law or agreed to in writing, software 15 | * distributed under the License is distributed on an "AS IS" BASIS, 16 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | * See the License for the specific language governing permissions and 18 | * limitations under the License. 19 | * 20 | * Please send all bug reports to . 21 | * 22 | * The authors may be contacted via: 23 | * 24 | * Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | * Dept. of Computer Science 26 | * 201 S. Columbia St. 27 | * Frederick P. Brooks, Jr. Computer Science Bldg. 28 | * Chapel Hill, N.C. 27599-3175 29 | * United States of America 30 | * 31 | * 32 | */ 33 | 34 | using System; 35 | using System.Globalization; 36 | 37 | namespace RVO 38 | { 39 | /** 40 | * Defines a two-dimensional vector. 41 | */ 42 | public struct Vector2 43 | { 44 | internal float x_; 45 | internal float y_; 46 | 47 | /** 48 | * Constructs and initializes a two-dimensional vector from the 49 | * specified xy-coordinates. 50 | * 51 | * The x-coordinate of the two-dimensional vector. 52 | * 53 | * The y-coordinate of the two-dimensional vector. 54 | * 55 | */ 56 | public Vector2(float x, float y) 57 | { 58 | x_ = x; 59 | y_ = y; 60 | } 61 | 62 | /** 63 | * Returns the string representation of this vector. 64 | * 65 | * The string representation of this vector. 66 | */ 67 | public override string ToString() 68 | { 69 | return "(" + x_.ToString(new CultureInfo("").NumberFormat) + "," + y_.ToString(new CultureInfo("").NumberFormat) + ")"; 70 | } 71 | 72 | /** 73 | * Returns the x-coordinate of this two-dimensional vector. 74 | * 75 | * 76 | * The x-coordinate of the two-dimensional vector. 77 | */ 78 | public float x() 79 | { 80 | return x_; 81 | } 82 | 83 | /** 84 | * Returns the y-coordinate of this two-dimensional vector. 85 | * 86 | * 87 | * The y-coordinate of the two-dimensional vector. 88 | */ 89 | public float y() 90 | { 91 | return y_; 92 | } 93 | 94 | /** 95 | * Computes the dot product of the two specified 96 | * two-dimensional vectors. 97 | * 98 | * The dot product of the two specified two-dimensional 99 | * vectors. 100 | * 101 | * The first two-dimensional vector. 102 | * The second two-dimensional vector. 103 | */ 104 | public static float operator *(Vector2 vector1, Vector2 vector2) 105 | { 106 | return vector1.x_ * vector2.x_ + vector1.y_ * vector2.y_; 107 | } 108 | 109 | /** 110 | * Computes the scalar multiplication of the specified 111 | * two-dimensional vector with the specified scalar value. 112 | * 113 | * The scalar multiplication of the specified two-dimensional 114 | * vector with the specified scalar value. 115 | * 116 | * The scalar value. 117 | * The two-dimensional vector. 118 | */ 119 | public static Vector2 operator *(float scalar, Vector2 vector) 120 | { 121 | return vector * scalar; 122 | } 123 | 124 | /** 125 | * Computes the scalar multiplication of the specified 126 | * two-dimensional vector with the specified scalar value. 127 | * 128 | * The scalar multiplication of the specified two-dimensional 129 | * vector with the specified scalar value. 130 | * 131 | * The two-dimensional vector. 132 | * The scalar value. 133 | */ 134 | public static Vector2 operator *(Vector2 vector, float scalar) 135 | { 136 | return new Vector2(vector.x_ * scalar, vector.y_ * scalar); 137 | } 138 | 139 | /** 140 | * Computes the scalar division of the specified 141 | * two-dimensional vector with the specified scalar value. 142 | * 143 | * The scalar division of the specified two-dimensional vector 144 | * with the specified scalar value. 145 | * 146 | * The two-dimensional vector. 147 | * The scalar value. 148 | */ 149 | public static Vector2 operator /(Vector2 vector, float scalar) 150 | { 151 | return new Vector2(vector.x_ / scalar, vector.y_ / scalar); 152 | } 153 | 154 | /** 155 | * Computes the vector sum of the two specified two-dimensional 156 | * vectors. 157 | * 158 | * The vector sum of the two specified two-dimensional vectors. 159 | * 160 | * 161 | * The first two-dimensional vector. 162 | * The second two-dimensional vector. 163 | */ 164 | public static Vector2 operator +(Vector2 vector1, Vector2 vector2) 165 | { 166 | return new Vector2(vector1.x_ + vector2.x_, vector1.y_ + vector2.y_); 167 | } 168 | 169 | /** 170 | * Computes the vector difference of the two specified 171 | * two-dimensional vectors 172 | * 173 | * The vector difference of the two specified two-dimensional 174 | * vectors. 175 | * 176 | * The first two-dimensional vector. 177 | * The second two-dimensional vector. 178 | */ 179 | public static Vector2 operator -(Vector2 vector1, Vector2 vector2) 180 | { 181 | return new Vector2(vector1.x_ - vector2.x_, vector1.y_ - vector2.y_); 182 | } 183 | 184 | /** 185 | * Computes the negation of the specified two-dimensional 186 | * vector. 187 | * 188 | * The negation of the specified two-dimensional vector. 189 | * 190 | * 191 | * The two-dimensional vector. 192 | */ 193 | public static Vector2 operator -(Vector2 vector) 194 | { 195 | return new Vector2(-vector.x_, -vector.y_); 196 | } 197 | } 198 | } 199 | -------------------------------------------------------------------------------- /WORKSPACE.bazel: -------------------------------------------------------------------------------- 1 | # -*- mode: bazel; -*- 2 | # vi: set ft=bazel: 3 | 4 | # 5 | # WORKSPACE.bazel 6 | # RVO2 Library C# 7 | # 8 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 9 | # SPDX-License-Identifier: Apache-2.0 10 | # 11 | # Licensed under the Apache License, Version 2.0 (the "License"); 12 | # you may not use this file except in compliance with the License. 13 | # You may obtain a copy of the License at 14 | # 15 | # https://www.apache.org/licenses/LICENSE-2.0 16 | # 17 | # Unless required by applicable law or agreed to in writing, software 18 | # distributed under the License is distributed on an "AS IS" BASIS, 19 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 20 | # See the License for the specific language governing permissions and 21 | # limitations under the License. 22 | # 23 | # Please send all bug reports to . 24 | # 25 | # The authors may be contacted via: 26 | # 27 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 28 | # Dept. of Computer Science 29 | # 201 S. Columbia St. 30 | # Frederick P. Brooks, Jr. Computer Science Bldg. 31 | # Chapel Hill, N.C. 27599-3175 32 | # United States of America 33 | # 34 | # 35 | # 36 | 37 | workspace(name = "rvo_cs") 38 | 39 | load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive") 40 | 41 | http_archive( 42 | name = "rules_dotnet", 43 | sha256 = "718cb2c3431523aaf3df7feed0e997e4ded002abbf56ac37d9c0536a812d6276", 44 | strip_prefix = "rules_dotnet-0.12.0", 45 | urls = ["https://github.com/bazelbuild/rules_dotnet/releases/download/v0.12.0/rules_dotnet-v0.12.0.tar.gz"], 46 | ) 47 | 48 | load("@rules_dotnet//dotnet:repositories.bzl", "dotnet_register_toolchains", "rules_dotnet_dependencies") 49 | 50 | rules_dotnet_dependencies() 51 | 52 | dotnet_register_toolchains("dotnet", "6.0.121") 53 | 54 | load("@rules_dotnet//dotnet:rules_dotnet_nuget_packages.bzl", "rules_dotnet_nuget_packages") 55 | 56 | rules_dotnet_nuget_packages() 57 | 58 | http_archive( 59 | name = "rules_license", 60 | sha256 = "4531deccb913639c30e5c7512a054d5d875698daeb75d8cf90f284375fe7c360", 61 | urls = [ 62 | "https://mirror.bazel.build/github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", 63 | "https://github.com/bazelbuild/rules_license/releases/download/0.0.7/rules_license-0.0.7.tar.gz", 64 | ], 65 | ) 66 | 67 | http_archive( 68 | name = "rules_pkg", 69 | sha256 = "8f9ee2dc10c1ae514ee599a8b42ed99fa262b757058f65ad3c384289ff70c4b8", 70 | urls = [ 71 | "https://mirror.bazel.build/github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz", 72 | "https://github.com/bazelbuild/rules_pkg/releases/download/0.9.1/rules_pkg-0.9.1.tar.gz", 73 | ], 74 | ) 75 | 76 | load("@rules_pkg//pkg:deps.bzl", "rules_pkg_dependencies") 77 | 78 | rules_pkg_dependencies() 79 | -------------------------------------------------------------------------------- /compose.yaml: -------------------------------------------------------------------------------- 1 | # 2 | # Dockerfile 3 | # RVO2 Library C# 4 | # 5 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # https://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | # Please send all bug reports to . 21 | # 22 | # The authors may be contacted via: 23 | # 24 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | # Dept. of Computer Science 26 | # 201 S. Columbia St. 27 | # Frederick P. Brooks, Jr. Computer Science Bldg. 28 | # Chapel Hill, N.C. 27599-3175 29 | # United States of America 30 | # 31 | # 32 | # 33 | 34 | --- 35 | services: 36 | dev: 37 | build: 38 | context: . 39 | dockerfile: Dockerfile 40 | volumes: 41 | - .:/workspace:cached 42 | -------------------------------------------------------------------------------- /doc/Doxyfile: -------------------------------------------------------------------------------- 1 | # 2 | # Doxyfile 3 | # RVO2 Library C# 4 | # 5 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # https://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | # Please send all bug reports to . 21 | # 22 | # The authors may be contacted via: 23 | # 24 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | # Dept. of Computer Science 26 | # 201 S. Columbia St. 27 | # Frederick P. Brooks, Jr. Computer Science Bldg. 28 | # Chapel Hill, N.C. 27599-3175 29 | # United States of America 30 | # 31 | # 32 | # 33 | 34 | # Doxyfile 1.8.13 35 | 36 | #--------------------------------------------------------------------------- 37 | # Project related configuration options 38 | #--------------------------------------------------------------------------- 39 | DOXYFILE_ENCODING = UTF-8 40 | PROJECT_NAME = "RVO2 Library C#" 41 | PROJECT_NUMBER = 2.2.0 42 | PROJECT_BRIEF = "Optimal Reciprocal Collision Avoidance for C#" 43 | PROJECT_LOGO = 44 | OUTPUT_DIRECTORY = 45 | CREATE_SUBDIRS = NO 46 | ALLOW_UNICODE_NAMES = NO 47 | OUTPUT_LANGUAGE = English 48 | BRIEF_MEMBER_DESC = YES 49 | REPEAT_BRIEF = YES 50 | ABBREVIATE_BRIEF = 51 | ALWAYS_DETAILED_SEC = NO 52 | INLINE_INHERITED_MEMB = NO 53 | FULL_PATH_NAMES = YES 54 | STRIP_FROM_PATH = ../src 55 | STRIP_FROM_INC_PATH = 56 | SHORT_NAMES = NO 57 | JAVADOC_AUTOBRIEF = NO 58 | QT_AUTOBRIEF = NO 59 | MULTILINE_CPP_IS_BRIEF = NO 60 | INHERIT_DOCS = YES 61 | SEPARATE_MEMBER_PAGES = NO 62 | TAB_SIZE = 4 63 | ALIASES = 64 | TCL_SUBST = 65 | OPTIMIZE_OUTPUT_FOR_C = NO 66 | OPTIMIZE_OUTPUT_JAVA = NO 67 | OPTIMIZE_FOR_FORTRAN = NO 68 | OPTIMIZE_OUTPUT_VHDL = NO 69 | EXTENSION_MAPPING = 70 | MARKDOWN_SUPPORT = YES 71 | TOC_INCLUDE_HEADINGS = 0 72 | AUTOLINK_SUPPORT = YES 73 | BUILTIN_STL_SUPPORT = NO 74 | CPP_CLI_SUPPORT = NO 75 | SIP_SUPPORT = NO 76 | IDL_PROPERTY_SUPPORT = YES 77 | DISTRIBUTE_GROUP_DOC = NO 78 | GROUP_NESTED_COMPOUNDS = NO 79 | SUBGROUPING = YES 80 | INLINE_GROUPED_CLASSES = NO 81 | INLINE_SIMPLE_STRUCTS = NO 82 | TYPEDEF_HIDES_STRUCT = NO 83 | LOOKUP_CACHE_SIZE = 0 84 | #--------------------------------------------------------------------------- 85 | # Build related configuration options 86 | #--------------------------------------------------------------------------- 87 | EXTRACT_ALL = NO 88 | EXTRACT_PRIVATE = NO 89 | EXTRACT_PACKAGE = NO 90 | EXTRACT_STATIC = NO 91 | EXTRACT_LOCAL_CLASSES = YES 92 | EXTRACT_LOCAL_METHODS = NO 93 | EXTRACT_ANON_NSPACES = NO 94 | HIDE_UNDOC_MEMBERS = NO 95 | HIDE_UNDOC_CLASSES = NO 96 | HIDE_FRIEND_COMPOUNDS = NO 97 | HIDE_IN_BODY_DOCS = NO 98 | INTERNAL_DOCS = NO 99 | CASE_SENSE_NAMES = YES 100 | HIDE_SCOPE_NAMES = NO 101 | HIDE_COMPOUND_REFERENCE= NO 102 | SHOW_INCLUDE_FILES = YES 103 | SHOW_GROUPED_MEMB_INC = NO 104 | FORCE_LOCAL_INCLUDES = NO 105 | INLINE_INFO = YES 106 | SORT_MEMBER_DOCS = YES 107 | SORT_BRIEF_DOCS = NO 108 | SORT_MEMBERS_CTORS_1ST = NO 109 | SORT_GROUP_NAMES = NO 110 | SORT_BY_SCOPE_NAME = NO 111 | STRICT_PROTO_MATCHING = NO 112 | GENERATE_TODOLIST = YES 113 | GENERATE_TESTLIST = YES 114 | GENERATE_BUGLIST = YES 115 | GENERATE_DEPRECATEDLIST= YES 116 | ENABLED_SECTIONS = 117 | MAX_INITIALIZER_LINES = 30 118 | SHOW_USED_FILES = YES 119 | SHOW_FILES = YES 120 | SHOW_NAMESPACES = YES 121 | FILE_VERSION_FILTER = 122 | LAYOUT_FILE = 123 | CITE_BIB_FILES = 124 | #--------------------------------------------------------------------------- 125 | # Configuration options related to warning and progress messages 126 | #--------------------------------------------------------------------------- 127 | QUIET = NO 128 | WARNINGS = YES 129 | WARN_IF_UNDOCUMENTED = YES 130 | WARN_IF_DOC_ERROR = YES 131 | WARN_NO_PARAMDOC = NO 132 | WARN_AS_ERROR = NO 133 | WARN_FORMAT = "$file:$line: $text" 134 | WARN_LOGFILE = 135 | #--------------------------------------------------------------------------- 136 | # Configuration options related to the input files 137 | #--------------------------------------------------------------------------- 138 | INPUT = ../src/Line.cs \ 139 | ../src/RVOMath.cs \ 140 | ../src/Simulator.cs \ 141 | ../src/Vector2.cs 142 | INPUT_ENCODING = UTF-8 143 | FILE_PATTERNS = 144 | RECURSIVE = NO 145 | EXCLUDE = 146 | EXCLUDE_SYMLINKS = NO 147 | EXCLUDE_PATTERNS = 148 | EXCLUDE_SYMBOLS = 149 | EXAMPLE_PATH = ../examples/Blocks.cs \ 150 | ../examples/Circle.cs 151 | EXAMPLE_PATTERNS = 152 | EXAMPLE_RECURSIVE = NO 153 | IMAGE_PATH = 154 | INPUT_FILTER = 155 | FILTER_PATTERNS = 156 | FILTER_SOURCE_FILES = NO 157 | FILTER_SOURCE_PATTERNS = 158 | USE_MDFILE_AS_MAINPAGE = 159 | #--------------------------------------------------------------------------- 160 | # Configuration options related to source browsing 161 | #--------------------------------------------------------------------------- 162 | SOURCE_BROWSER = NO 163 | INLINE_SOURCES = NO 164 | STRIP_CODE_COMMENTS = YES 165 | REFERENCED_BY_RELATION = NO 166 | REFERENCES_RELATION = NO 167 | REFERENCES_LINK_SOURCE = YES 168 | SOURCE_TOOLTIPS = YES 169 | USE_HTAGS = NO 170 | VERBATIM_HEADERS = YES 171 | CLANG_ASSISTED_PARSING = NO 172 | CLANG_OPTIONS = 173 | #--------------------------------------------------------------------------- 174 | # Configuration options related to the alphabetical class index 175 | #--------------------------------------------------------------------------- 176 | ALPHABETICAL_INDEX = YES 177 | COLS_IN_ALPHA_INDEX = 5 178 | IGNORE_PREFIX = 179 | #--------------------------------------------------------------------------- 180 | # Configuration options related to the HTML output 181 | #--------------------------------------------------------------------------- 182 | GENERATE_HTML = YES 183 | HTML_OUTPUT = html 184 | HTML_FILE_EXTENSION = .html 185 | HTML_HEADER = header.html 186 | HTML_FOOTER = footer.html 187 | HTML_STYLESHEET = stylesheet.css 188 | HTML_EXTRA_STYLESHEET = 189 | HTML_EXTRA_FILES = 190 | HTML_COLORSTYLE_HUE = 220 191 | HTML_COLORSTYLE_SAT = 100 192 | HTML_COLORSTYLE_GAMMA = 80 193 | HTML_TIMESTAMP = NO 194 | HTML_DYNAMIC_SECTIONS = NO 195 | HTML_INDEX_NUM_ENTRIES = 100 196 | GENERATE_DOCSET = NO 197 | DOCSET_FEEDNAME = "Doxygen generated docs" 198 | DOCSET_BUNDLE_ID = org.doxygen.Project 199 | DOCSET_PUBLISHER_ID = org.doxygen.Publisher 200 | DOCSET_PUBLISHER_NAME = Publisher 201 | GENERATE_HTMLHELP = NO 202 | CHM_FILE = 203 | HHC_LOCATION = 204 | GENERATE_CHI = NO 205 | CHM_INDEX_ENCODING = 206 | BINARY_TOC = NO 207 | TOC_EXPAND = NO 208 | GENERATE_QHP = NO 209 | QCH_FILE = 210 | QHP_NAMESPACE = org.doxygen.Project 211 | QHP_VIRTUAL_FOLDER = doc 212 | QHP_CUST_FILTER_NAME = 213 | QHP_CUST_FILTER_ATTRS = 214 | QHP_SECT_FILTER_ATTRS = 215 | QHG_LOCATION = 216 | GENERATE_ECLIPSEHELP = NO 217 | ECLIPSE_DOC_ID = org.doxygen.Project 218 | DISABLE_INDEX = NO 219 | GENERATE_TREEVIEW = NO 220 | ENUM_VALUES_PER_LINE = 4 221 | TREEVIEW_WIDTH = 250 222 | EXT_LINKS_IN_WINDOW = NO 223 | FORMULA_FONTSIZE = 10 224 | FORMULA_TRANSPARENT = YES 225 | USE_MATHJAX = NO 226 | MATHJAX_FORMAT = HTML-CSS 227 | MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest 228 | MATHJAX_EXTENSIONS = 229 | MATHJAX_CODEFILE = 230 | SEARCHENGINE = NO 231 | SERVER_BASED_SEARCH = NO 232 | EXTERNAL_SEARCH = NO 233 | SEARCHENGINE_URL = 234 | SEARCHDATA_FILE = searchdata.xml 235 | EXTERNAL_SEARCH_ID = 236 | EXTRA_SEARCH_MAPPINGS = 237 | #--------------------------------------------------------------------------- 238 | # Configuration options related to the LaTeX output 239 | #--------------------------------------------------------------------------- 240 | GENERATE_LATEX = NO 241 | LATEX_OUTPUT = latex 242 | LATEX_CMD_NAME = latex 243 | MAKEINDEX_CMD_NAME = makeindex 244 | COMPACT_LATEX = NO 245 | PAPER_TYPE = letter 246 | EXTRA_PACKAGES = 247 | LATEX_HEADER = 248 | LATEX_FOOTER = 249 | LATEX_EXTRA_STYLESHEET = 250 | LATEX_EXTRA_FILES = 251 | PDF_HYPERLINKS = YES 252 | USE_PDFLATEX = YES 253 | LATEX_BATCHMODE = NO 254 | LATEX_HIDE_INDICES = NO 255 | LATEX_SOURCE_CODE = NO 256 | LATEX_BIB_STYLE = plain 257 | LATEX_TIMESTAMP = NO 258 | #--------------------------------------------------------------------------- 259 | # Configuration options related to the RTF output 260 | #--------------------------------------------------------------------------- 261 | GENERATE_RTF = NO 262 | RTF_OUTPUT = rtf 263 | COMPACT_RTF = NO 264 | RTF_HYPERLINKS = NO 265 | RTF_STYLESHEET_FILE = 266 | RTF_EXTENSIONS_FILE = 267 | RTF_SOURCE_CODE = NO 268 | #--------------------------------------------------------------------------- 269 | # Configuration options related to the man page output 270 | #--------------------------------------------------------------------------- 271 | GENERATE_MAN = NO 272 | MAN_OUTPUT = man 273 | MAN_EXTENSION = .3 274 | MAN_SUBDIR = 275 | MAN_LINKS = NO 276 | #--------------------------------------------------------------------------- 277 | # Configuration options related to the XML output 278 | #--------------------------------------------------------------------------- 279 | GENERATE_XML = NO 280 | XML_OUTPUT = xml 281 | XML_PROGRAMLISTING = YES 282 | #--------------------------------------------------------------------------- 283 | # Configuration options related to the DOCBOOK output 284 | #--------------------------------------------------------------------------- 285 | GENERATE_DOCBOOK = NO 286 | DOCBOOK_OUTPUT = docbook 287 | DOCBOOK_PROGRAMLISTING = NO 288 | #--------------------------------------------------------------------------- 289 | # Configuration options for the AutoGen Definitions output 290 | #--------------------------------------------------------------------------- 291 | GENERATE_AUTOGEN_DEF = NO 292 | #--------------------------------------------------------------------------- 293 | # Configuration options related to the Perl module output 294 | #--------------------------------------------------------------------------- 295 | GENERATE_PERLMOD = NO 296 | PERLMOD_LATEX = NO 297 | PERLMOD_PRETTY = YES 298 | PERLMOD_MAKEVAR_PREFIX = 299 | #--------------------------------------------------------------------------- 300 | # Configuration options related to the preprocessor 301 | #--------------------------------------------------------------------------- 302 | ENABLE_PREPROCESSING = YES 303 | MACRO_EXPANSION = NO 304 | EXPAND_ONLY_PREDEF = NO 305 | SEARCH_INCLUDES = YES 306 | INCLUDE_PATH = 307 | INCLUDE_FILE_PATTERNS = 308 | PREDEFINED = 309 | EXPAND_AS_DEFINED = 310 | SKIP_FUNCTION_MACROS = YES 311 | #--------------------------------------------------------------------------- 312 | # Configuration options related to external references 313 | #--------------------------------------------------------------------------- 314 | TAGFILES = 315 | GENERATE_TAGFILE = 316 | ALLEXTERNALS = NO 317 | EXTERNAL_GROUPS = YES 318 | EXTERNAL_PAGES = YES 319 | PERL_PATH = 320 | #--------------------------------------------------------------------------- 321 | # Configuration options related to the dot tool 322 | #--------------------------------------------------------------------------- 323 | CLASS_DIAGRAMS = YES 324 | MSCGEN_PATH = 325 | DIA_PATH = 326 | HIDE_UNDOC_RELATIONS = YES 327 | HAVE_DOT = YES 328 | DOT_NUM_THREADS = 0 329 | DOT_FONTNAME = Helvetica 330 | DOT_FONTSIZE = 10 331 | DOT_FONTPATH = 332 | CLASS_GRAPH = YES 333 | COLLABORATION_GRAPH = YES 334 | GROUP_GRAPHS = YES 335 | UML_LOOK = NO 336 | UML_LIMIT_NUM_FIELDS = 10 337 | TEMPLATE_RELATIONS = NO 338 | INCLUDE_GRAPH = YES 339 | INCLUDED_BY_GRAPH = YES 340 | CALL_GRAPH = NO 341 | CALLER_GRAPH = NO 342 | GRAPHICAL_HIERARCHY = YES 343 | DIRECTORY_GRAPH = YES 344 | DOT_IMAGE_FORMAT = png 345 | INTERACTIVE_SVG = NO 346 | DOT_PATH = 347 | DOTFILE_DIRS = 348 | MSCFILE_DIRS = 349 | DIAFILE_DIRS = 350 | PLANTUML_JAR_PATH = 351 | PLANTUML_CFG_FILE = 352 | PLANTUML_INCLUDE_PATH = 353 | DOT_GRAPH_MAX_NODES = 50 354 | MAX_DOT_GRAPH_DEPTH = 0 355 | DOT_TRANSPARENT = NO 356 | DOT_MULTI_TARGETS = NO 357 | GENERATE_LEGEND = YES 358 | DOT_CLEANUP = YES 359 | -------------------------------------------------------------------------------- /doc/footer.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /doc/footer.html.license: -------------------------------------------------------------------------------- 1 | footer.html 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: CC-BY-SA-4.0 6 | 7 | Creative Commons Attribution-ShareAlike 4.0 International Public License 8 | 9 | You are free to: 10 | 11 | * Share -- copy and redistribute the material in any medium or format 12 | 13 | * ShareAlike -- If you remix, transform, or build upon the material, you must 14 | distribute your contributions under the same license as the original 15 | 16 | * Adapt -- remix, transform, and build upon the material for any purpose, even 17 | commercially. 18 | 19 | The licensor cannot revoke these freedoms as long as you follow the license 20 | terms. 21 | 22 | Under the following terms: 23 | 24 | * Attribution -- You must give appropriate credit, provide a link to the 25 | license, and indicate if changes were made. You may do so in any reasonable 26 | manner, but not in any way that suggests the licensor endorses you or your 27 | use. 28 | 29 | * No additional restrictions -- You may not apply legal terms or technological 30 | measures that legally restrict others from doing anything the license 31 | permits. 32 | 33 | Notices: 34 | 35 | * You do not have to comply with the license for elements of the material in 36 | the public domain or where your use is permitted by an applicable exception 37 | or limitation. 38 | 39 | * No warranties are given. The license may not give you all of the permissions 40 | necessary for your intended use. For example, other rights such as publicity, 41 | privacy, or moral rights may limit how you use the material. 42 | 43 | Please send all bug reports to . 44 | 45 | The authors may be contacted via: 46 | 47 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 48 | Dept. of Computer Science 49 | 201 S. Columbia St. 50 | Frederick P. Brooks, Jr. Computer Science Bldg. 51 | Chapel Hill, N.C. 27599-3175 52 | United States of America 53 | 54 | 55 | -------------------------------------------------------------------------------- /doc/header.html: -------------------------------------------------------------------------------- 1 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | $projectname: $title 66 | 67 | 68 | 69 | 70 | $extrastylesheet 71 | 72 | 73 |
74 | 75 | 76 |
77 | 78 | 79 | 80 | 86 | 87 | 88 |
81 |
$projectname 82 |  $projectnumber 83 |
84 |
$projectbrief
85 |
89 |
90 | 91 | 92 | -------------------------------------------------------------------------------- /doc/header.html.license: -------------------------------------------------------------------------------- 1 | header.html 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: CC-BY-SA-4.0 6 | 7 | Creative Commons Attribution-ShareAlike 4.0 International Public License 8 | 9 | You are free to: 10 | 11 | * Share -- copy and redistribute the material in any medium or format 12 | 13 | * ShareAlike -- If you remix, transform, or build upon the material, you must 14 | distribute your contributions under the same license as the original 15 | 16 | * Adapt -- remix, transform, and build upon the material for any purpose, even 17 | commercially. 18 | 19 | The licensor cannot revoke these freedoms as long as you follow the license 20 | terms. 21 | 22 | Under the following terms: 23 | 24 | * Attribution -- You must give appropriate credit, provide a link to the 25 | license, and indicate if changes were made. You may do so in any reasonable 26 | manner, but not in any way that suggests the licensor endorses you or your 27 | use. 28 | 29 | * No additional restrictions -- You may not apply legal terms or technological 30 | measures that legally restrict others from doing anything the license 31 | permits. 32 | 33 | Notices: 34 | 35 | * You do not have to comply with the license for elements of the material in 36 | the public domain or where your use is permitted by an applicable exception 37 | or limitation. 38 | 39 | * No warranties are given. The license may not give you all of the permissions 40 | necessary for your intended use. For example, other rights such as publicity, 41 | privacy, or moral rights may limit how you use the material. 42 | 43 | Please send all bug reports to . 44 | 45 | The authors may be contacted via: 46 | 47 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 48 | Dept. of Computer Science 49 | 201 S. Columbia St. 50 | Frederick P. Brooks, Jr. Computer Science Bldg. 51 | Chapel Hill, N.C. 27599-3175 52 | United States of America 53 | 54 | 55 | -------------------------------------------------------------------------------- /global.json: -------------------------------------------------------------------------------- 1 | { 2 | "sdk": { 3 | "version": "6.0.121", 4 | "rollForward": "latestFeature" 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /global.json.license: -------------------------------------------------------------------------------- 1 | global.json 2 | RVO2 Library C# 3 | 4 | SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 5 | SPDX-License-Identifier: Apache-2.0 6 | 7 | Licensed under the Apache License, Version 2.0 (the "License"); 8 | you may not use this file except in compliance with the License. 9 | You may obtain a copy of the License at 10 | 11 | https://www.apache.org/licenses/LICENSE-2.0 12 | 13 | Unless required by applicable law or agreed to in writing, software 14 | distributed under the License is distributed on an "AS IS" BASIS, 15 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 16 | See the License for the specific language governing permissions and 17 | limitations under the License. 18 | 19 | Please send all bug reports to . 20 | 21 | The authors may be contacted via: 22 | 23 | Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 24 | Dept. of Computer Science 25 | 201 S. Columbia St. 26 | Frederick P. Brooks, Jr. Computer Science Bldg. 27 | Chapel Hill, N.C. 27599-3175 28 | United States of America 29 | 30 | 31 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | # 2 | # requirements.txt 3 | # RVO2 Library C# 4 | # 5 | # SPDX-FileCopyrightText: 2008 University of North Carolina at Chapel Hill 6 | # SPDX-License-Identifier: Apache-2.0 7 | # 8 | # Licensed under the Apache License, Version 2.0 (the "License"); 9 | # you may not use this file except in compliance with the License. 10 | # You may obtain a copy of the License at 11 | # 12 | # https://www.apache.org/licenses/LICENSE-2.0 13 | # 14 | # Unless required by applicable law or agreed to in writing, software 15 | # distributed under the License is distributed on an "AS IS" BASIS, 16 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 17 | # See the License for the specific language governing permissions and 18 | # limitations under the License. 19 | # 20 | # Please send all bug reports to . 21 | # 22 | # The authors may be contacted via: 23 | # 24 | # Jur van den Berg, Stephen J. Guy, Jamie Snape, Ming C. Lin, Dinesh Manocha 25 | # Dept. of Computer Science 26 | # 201 S. Columbia St. 27 | # Frederick P. Brooks, Jr. Computer Science Bldg. 28 | # Chapel Hill, N.C. 27599-3175 29 | # United States of America 30 | # 31 | # 32 | # 33 | 34 | cffconvert 35 | reuse 36 | --------------------------------------------------------------------------------