godlike / arion Goto Github PK
View Code? Open in Web Editor NEWReal-time oriented 3d collision detection library
License: MIT License
Real-time oriented 3d collision detection library
License: MIT License
Make main CMake structure. Add libraries as submodules.
Only one person should be required in order to approve a pull request.
Create a scene with only two following bodies:
Position:
x 9.3000000000000007
y 6.7000000000000002
z 6
Size vectors:
x 0.40000000596046448
y 0.20000000298023224
z 0.69999998807907104
Sphere
Position:
x 8.9000000000000004
y 6.9000000000000004
z 6.7000000000000002
Radius 1
EPA will fall into the endless loop.
Implement all the back end and front end needed for the SimpleShapeIntersectionDetector
to have a CalculateContactPoints
method.
Related to Godlike/Pegasus#129
Move all the related functions and classes into separate API
Change SSI and SSID so that they are able to return complete contact manifold containing local and world contact points.
In the scene where there are two boxes, one of which is static and axis aligned, another is oriented by the {1, 1, 1} axis and moves towards the first one, the collision is not registered and not resolved.
Bounding volumes classes over at Arion/include/Arion/BoundingVolumes.hpp
and Arion/sources/BoundingVolumes.cpp
need some refactorings and optimizations:
indices
to faces
in Mesh
struct -- this just makes more sense for that field;Mesh mesh
and std::set<std::size_t> indices
fields -- they are very often passed around in tandem, so that would be convenient;OrientedBoundingBox::Box
), private and rename them to something more sensible (like OBBData
in the case of OrientedBoundingBox
) -- they are only used inside those classes;OrientedBoundingBox
except m_boxShape
are not used anywhere outside the constructor) -- right now this calculation data is still stored after constructor finishes execution.Note: this issue was carried over from here in Pegasus repo.
Related issue to Godlike/Pegasus#136
Move add_library
block to the beginning of the file, unify add_library
blocks by using ${PROJECT_NAME}
Add library aliases for configuration-level library checking
Use PUBLIC
, INTERFACE
and PRIVATE
sections of target_
directives to allow CMake inherit options from linked libraries
Overall using modern CMake features reduces amount of boilerplate user code required to use the library and makes it easier to read CMake files when looking for some specific library options.
Rewrite all floating point calculations with float instead of double in order to improve vectorization.
If two boxes are aligned with a vector, which normalized form is { 0, 1, 0 }, such that both centers of mass are lying on the vector EPA produces incorrect contact manifold, in which at least a contact normal is incorrect.
clang
fails when compiling Release
build
g++
fails to compile demo due to uninitialized property
With sphere-box collision with the precision of 1e-4 and box-box collision with the precision of 1e-10 GJK sometimes gets itself into the endless loop.
Currently, there is an endless loop detection workaround. However, an investigation is needed, in order to remove the source of the problem, or otherwise find and describe the precise reason for it.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.