{"id":34301936,"url":"https://github.com/ef-gy/topologic","last_synced_at":"2025-12-17T06:59:17.472Z","repository":{"id":11493583,"uuid":"13968344","full_name":"ef-gy/topologic","owner":"ef-gy","description":"Visualiser for basic geometric primitives and fractals in arbitrary-dimensional spaces","archived":false,"fork":false,"pushed_at":"2017-03-12T20:31:42.000Z","size":8790,"stargazers_count":40,"open_issues_count":4,"forks_count":3,"subscribers_count":9,"default_branch":"master","last_synced_at":"2023-08-05T07:22:37.644Z","etag":null,"topics":["4d","4d-hypercube","cocoa","cocoa-touch","fractal-flame","fractal-images","fractals","hypercube","hypersphere","ifs","linear-algebra","math","opengl","opengl-es","webgl"],"latest_commit_sha":null,"homepage":"http://ef.gy/documentation/topologic","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ef-gy.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-10-29T20:49:43.000Z","updated_at":"2023-03-01T11:39:07.000Z","dependencies_parsed_at":"2022-09-22T23:23:21.629Z","dependency_job_id":null,"html_url":"https://github.com/ef-gy/topologic","commit_stats":null,"previous_names":[],"tags_count":6,"template":null,"template_full_name":null,"purl":"pkg:github/ef-gy/topologic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ef-gy%2Ftopologic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ef-gy%2Ftopologic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ef-gy%2Ftopologic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ef-gy%2Ftopologic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ef-gy","download_url":"https://codeload.github.com/ef-gy/topologic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ef-gy%2Ftopologic/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27779005,"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-12-17T02:00:08.291Z","response_time":55,"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":["4d","4d-hypercube","cocoa","cocoa-touch","fractal-flame","fractal-images","fractals","hypercube","hypersphere","ifs","linear-algebra","math","opengl","opengl-es","webgl"],"created_at":"2025-12-17T06:59:16.714Z","updated_at":"2025-12-17T06:59:17.466Z","avatar_url":"https://github.com/ef-gy.png","language":"C++","readme":"# Topologic-11 ###############################################################\n\nTopologic is a programme that visualises basic primitives and fractals in\narbitrary dimensional spaces. Primitives include simplices, cubes and spheres,\nand fractals include basic affine IFSs as well as fractal flames.\n\nSupported output methods include simple SVGs and OpenGL 3.2 and up. The actual\ncalculations as well as most of the render tasks are performed by libefgy, a\nheader-only C++ template library for maths.\n\n## WEBGL CLIENT ##############################################################\n\nSince compiling tends to be a pain in the neck, you might want to consider\nusing the WebGL client instead. A ready-to-run version that'll run straight\nin your browser without any need to install anything whatsoever - that is, if\nyou happen to have a WebGL-enabled browser - is available at:\n\nhttps://dee.pe/r\n\nJust type that in your browser's address bar and enjoy :3.\n\n## OBTAINING TOPOLOGIC #######################################################\n\nThe Free/Open Source Software version of this programme is available free of\ncharge via git at https://github.com/ef-gy/topologic.git - to check\nout a local copy of that repository, use the git command line tool like this:\n\n    $ git clone --recursive https://github.com/ef-gy/topologic.git\n\nAdditionally, there's a pre-compiled version available on the Mac App Store at\nhttps://itunes.apple.com/us/app/topologic/id558300160 - this version is\nfunctionally identical to the F/OSS version, except that you don't have to\ncompile it yourself.\n\nOh, and if you're not on a Mac but you happen to have an iPod/iPhone/iPad,\nthere's an app for those, too:\nhttps://itunes.apple.com/us/app/topologic/id737310913 - I've really tried to\nmake good use of the touch controls on those devices, promise :).\n\nTopologic is designed so that almost all of the code is template-y C++ in\nheader files, much like libefgy. The API documentation for this is available\nat: https://ef.gy/documentation/topologic - the documentation may not always\nbe quite up to date, so, if push comes to shove just read the sources.\n\n## INSTALLATION ##############################################################\n\nYou'll need to have libxml2 with development files and a recent version of\nclang++ available on your system.\n\nFurthermore, you'll need a recent version of libefgy - a header-only C++\ntemplate library for maths. If you don't want to install the library\nsystem-wide, you could instead just create a symlink at include/ef.gy that\nwould point to the directory of the same name in libefgy's sources.\n\nTo compile the binary, run:\n\n    $ make\n\nTo install the programme, run:\n\n    # make PREFIX=/usr install\n\nAdjust PREFIX as appropriate.\n\n### THE WEBGL FRONTEND #######################################################\n\nIf you'd like to compile the WebGL frontend yourself instead of using the\npublicly available one at https://dee.pe/r you'll need to install emscripten\nand run the following on a command line:\n\n    $ make topologic-web.html\n\nThe WebGL client is based on a simple SDL client. Once emscripten has finished\ncompiling you can run the client by opening the file topologic-web.html in your\nfavourite WebGL-enabled browser.\n\n### THE COCOA/OSX FRONTEND ###################################################\n\nSince version 9, Topologic's formerly closed-source Cocoa frontend is now\nincluded in the source bundle. I'm not entirely sure why I used to keep that\nclosed-source, but now that it's open you can just open up the\n\"Topologic.xcodeproj\" project in Xcode on your Mac and compile the frontend\nlike any other Xcode project.\n\n### THE COCOA TOUCH/iOS FRONTEND #############################################\n\nThe \"Topologic.xcodeproj\" also includes the Cocoa Touch client for iOS. To\ncompile this, use the same procedure as for the Cocoa frontend, but choose an\niOS target in Xcode.\n\nOn iOS, Topologic uses futuretap's InAppSettingsKit to provide a smooth\ninterface to choose model and rendering options. You will need to clone the\nInAppSettingsKit repository at https://github.com/futuretap/InAppSettingsKit\nand then copy or link the \"InAppSettingsKit\" directory from that repository\nto Topologic's root directory. The process is analogous to setting up the\nlibefgy header symlink described in the Cocoa section.\n\n## COMPILE-TIME OPTIONS ######################################################\n\nThe rather unusual design of this programme allows you to set an arbitrary\nlimit to the number of dimensions supported by the projection code. This is\nset at compile time with the MAXDEPTH constant. The default value of this\nconstant - if not set otherwise - is 7, meaning that the default topologic\nbinary will be able to generate, process and render primitives in up to 7\nspatial dimensions.\n\nThis limit applies to both the model depth as well as the render depth. I.e.\nwith MAXDEPTH set to 7, then the deepest cube you can render is a 7-cube, in\n7-space. But at the same time you couldn't render a 7-sphere, because that\nwould have to be rendered in 8-space - but a 6-sphere in 7-space will work.\n\nTo set a compile-time constant, use the -D flag in your CFLAGS, like so:\n\n    $ make \"CFLAGS=-g -D MAXDEPTH=8\"\n\nTo confirm the number of dimensions that a topologic binary supports, use the\n--version flag:\n\n    $ ./topologic --version\n    Topologic CLI; Version 5\n    Maximum render depth of this binary is 8 dimensions.\n\n## LICENCE ###################################################################\n\nTopologic is distributed under an MIT/X style licence. For all practical intents\nand purposes that means that you can do pretty much whatever you want with the\ncode, except claim that you wrote it yourself, as long as you point out\nsomewhere in your documentation that you used Topologic.\n\nSee the file COPYING in the repository for the exact licence terms.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fef-gy%2Ftopologic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fef-gy%2Ftopologic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fef-gy%2Ftopologic/lists"}