{"id":22117436,"url":"https://github.com/vitalibarozzi/opende","last_synced_at":"2025-08-16T11:33:30.581Z","repository":{"id":244997079,"uuid":"805653782","full_name":"vitalibarozzi/openDE","owner":"vitalibarozzi","description":"Bindings of the physics engine Open Dynamics Engine for Haskell.","archived":false,"fork":false,"pushed_at":"2024-10-29T19:29:47.000Z","size":132,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-08-12T16:59:23.759Z","etag":null,"topics":["ode","physics","physics-engine","physics-simulation"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/vitalibarozzi.png","metadata":{"files":{"readme":"README.txt","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2024-05-25T04:57:59.000Z","updated_at":"2024-10-29T19:29:51.000Z","dependencies_parsed_at":"2024-06-18T23:25:08.157Z","dependency_job_id":"4cce6bf7-a455-49e8-9dcc-ce55dc8c4139","html_url":"https://github.com/vitalibarozzi/openDE","commit_stats":null,"previous_names":["vitalibarozzi/opende"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/vitalibarozzi/openDE","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalibarozzi%2FopenDE","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalibarozzi%2FopenDE/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalibarozzi%2FopenDE/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalibarozzi%2FopenDE/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/vitalibarozzi","download_url":"https://codeload.github.com/vitalibarozzi/openDE/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/vitalibarozzi%2FopenDE/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270706196,"owners_count":24631630,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ode","physics","physics-engine","physics-simulation"],"created_at":"2024-12-01T13:33:28.858Z","updated_at":"2025-08-16T11:33:30.559Z","avatar_url":"https://github.com/vitalibarozzi.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"OpenDE\n------\nA physics engine package for Haskell. Forked from \nhttps://hackage.haskell.org/package/HODE, then started cleaning \nit and adding StateVar API to match both OpenGL and OpenAL, \nadding MonadIO instances, and whatever else was missing.\n\n\n\nAbout ODE\n---------\n\"ODE is an open source, high performance library for simulating \nrigid body dynamics. It has advanced joint types and integrated \ncollision detection with friction. ODE is useful for simulating \nvehicles, objects in virtual reality environments and virtual \ncreatures. It is currently used in many computer games, 3D \nauthoring tools and simulation tools. See http://www.ode.org/\"\n\n\n\nCompletion\n----------\n[100%] Objects\n[ 95%] Space\n[ 70%] Body\n[ 70%] Collision\n[ 70%] Rotation\n[ 70%] World\n[ 50%] Mass\n[ 10%] Tests\n[  1%] Error\n[ -- ] Geom\n[ -- ] Joint\n\n\n\nExample usage\n-------------\n```\nimport qualified Physics.ODE.World    as World\nimport qualified Physics.ODE          as ODE\nimport qualified Physics.ODE.Geom     as ODE\nimport qualified Physics.ODE.Body     as Body\nimport Data.StateVar (($=!), get)\nimport Linear (V3)\nimport Control.Monad\nimport Control.Concurrent\n\nmain :: IO ()\nmain = do\n    let delay {- in milliseconds -} = 100000                       :: Int\n    let dt    {- in seconds      -} = realToFrac delay / 10000000  :: Double\n    let g     {- in m/s^2        -} = -9.81                        :: Double\n    let h     {- in meters       -} = 20.0                         :: Double\n    putStrLn \"Starting ODE example usage.\"\n    () \u003c- ODE.initODE\n    wd \u003c- World.create\n    sp \u003c- Space.create wd\n    bg \u003c- Object.createSphere (Just sp) 1\n    mb \u003c- Geometry.getBody bg\n    case mb of\n        Nothing -\u003e error \"No body found.\"\n        Just bb -\u003e do\n            () \u003c- World.gravity wd $=! V3 0 g 0\n            () \u003c- Body.position bb $=! V3 0 h 0\n            Control.Monad.forM_ [1..10] $ \\n -\u003e do\n                ________ \u003c- Control.Concurrent.threadDelay delay\n                ________ \u003c- ODE.step dt wd\n                V3 _ y _ \u003c- get (Body.position bb) \n                Prelude.putStrLn (\"Ball position: \"\u003c\u003ePrelude.show y\u003c\u003e\"m\")\n    () \u003c- ODE.closeODE\n    putStrLn \"ODE example is done.\"\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitalibarozzi%2Fopende","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvitalibarozzi%2Fopende","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvitalibarozzi%2Fopende/lists"}