{"id":23155902,"url":"https://github.com/mhhollomon/mandel","last_synced_at":"2025-04-04T17:25:59.637Z","repository":{"id":119266308,"uuid":"260332993","full_name":"mhhollomon/mandel","owner":"mhhollomon","description":"My take on the fractal coloring genre","archived":false,"fork":false,"pushed_at":"2020-05-11T12:48:41.000Z","size":1054,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-02-10T02:49:29.924Z","etag":null,"topics":["angelscript","c-plus-plus-17","cereal","fractals"],"latest_commit_sha":null,"homepage":null,"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/mhhollomon.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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}},"created_at":"2020-04-30T22:38:00.000Z","updated_at":"2020-05-11T12:48:43.000Z","dependencies_parsed_at":null,"dependency_job_id":"5d44cc76-2476-4cb9-9c1b-ff9469838167","html_url":"https://github.com/mhhollomon/mandel","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhhollomon%2Fmandel","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhhollomon%2Fmandel/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhhollomon%2Fmandel/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mhhollomon%2Fmandel/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mhhollomon","download_url":"https://codeload.github.com/mhhollomon/mandel/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247219078,"owners_count":20903365,"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","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":["angelscript","c-plus-plus-17","cereal","fractals"],"created_at":"2024-12-17T21:11:53.967Z","updated_at":"2025-04-04T17:25:59.612Z","avatar_url":"https://github.com/mhhollomon.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mandel\nMy take on the fractal coloring genre\n\nA set of tools to evaluate and color fractal sets.\n\n# Building\n\n~~~\ncmake -S . -B build\ncmake --build build\n~~~\n\nThe executables will be in the new build directory.\n\n# Programs\n\n## fractalator\nA CLI for evaulating point on the complex number plane for fractal set\ninclusion. Currently, the only fractal supported is the Mandelbrot set.\n\nfractalator writes an output file with the results of the evaulation. This file\ncan then be used with the `colorator` utiltiy (see below).\n\n### command line\n\n`fractalator \u003cgeneral arguments\u003e \u003cbounding box arguments\u003e \u003csampling arguments\u003e`\n\n#### general arguments\n\n\u003cdl\u003e\n\u003cdt\u003e-h, --help\u003c/dt\u003e\n\u003cdd\u003ePrint out short command line help text\u003cdd\u003e\n\u003cdt\u003e-o, --output-file \u0026lt;filename\u0026gt;\u003c/dt\u003e\n\u003cdd\u003epath to file into which the output will be written. If the file exists, it\nwill be truncated.\u003c/dd\u003e\n\u003cdt\u003e-j, --jobs \u0026lt;jobcount\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eNumber of parallel threads use for computing. If \u003ccode\u003e0\u003c/code\u003e is given or\nif the the options is not on the command line, the engine will use a strict\nsequential code path. If \u003cb\u003e\u0026lt;jobcount\u0026gt;\u003c/b\u003e is \u003ccode\u003e1\u003c/code\u003e, the parallel\npath will be used, but only one calculating thread will be used. This can\nactually be slower than \u003ccode\u003e0\u003c/code\u003e. If \u003cb\u003e\u0026lt;jobcount\u0026gt;\u003c/b\u003e is greater\nthan \u003ccode\u003e1\u003c/code\u003e, then that many threads will be used.\u003c/dd\u003e \n\u003cdt\u003e-l --limit \u0026lt;limit\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eInteger number of iterations of the fractal formula to use to decide if the\nresults will diverge or not.\u003c/dd\u003e\n\u003cdt\u003e-e, --escape \u0026lt;radius\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eValue to use to test if the point has diverged. Default is 256.0\u003c/dd\u003e\n\u003c/dl\u003e\n\n#### bounding box arguments\nThere are multiple ways to define the part of the complex plane that will be\nused.\n\n- Direct - specify the bounding box's top left and bottom right points using\n    `--ltr,--lti,--rbr,--rbi`. This is the base case. Internally, all other ways\n    to define the bounding box are reduced to this.\n\n- Center - use `--cr,--ci` to specify the center of the box and `--box` to\n    specify the length of the sides. Note that the box specified this way will\n    necessarily be a square.\n\n- Aspect - Use `--ltr,--lti` to specify the top right of the box, `--box` to\n    specify the length of the real axis and `--aspect` to give sampling. In\n    this case, the real axis will be the length given by `--box`. The imaginary\n    axis will be a scaled length of the ratio of given by aspect.\n    `--ltr 1.0 --lti 1.0 --box 0.5 --aspect 1920x1080` is equivalent to `--ltr\n    1.0 --lti 1.0 --rbr 1.5 --rbi 0.71875 --width 1920 --height 1080`\n\n\u003cdl\u003e\n\u003cdt\u003e--ltr \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003ereal coordinate for the left top point of the\nbounding box\u003c/dd\u003e\n\u003cdt\u003e--lti \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003eimaginary coordinate for the left top point of\nthe bounding box\u003c/dd\u003e\n\u003cdt\u003e--rbr \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003ereal coordinate for the right bottom point of\nthe bounding box\u003c/dd\u003e\n\u003cdt\u003e--lti \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003eimaginary coordinate for the right bottom point\nof the bounding box\u003c/dd\u003e\n\u003cdt\u003e--cr \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003ereal coordinate for the center of the bounding box\u003c/dd\u003e\n\u003cdt\u003e--ci \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003eimaginary coordinate for the center of the\nbounding box\u003c/dd\u003e\n\u003cdt\u003e--box \u0026lt;number\u0026gt;\u003c/dt\u003e\u003cdd\u003eWhen used with \u003ccode\u003e--cr,--ci\u003c/code\u003e, this is the length of\nthe side for bounding box. When used with \u003ccode\u003e--aspect\u003c/code\u003e, this is the length of the\nreal axis for the bounding box. \u003c/dd\u003e\n\u003c/dl\u003e\n\n#### sampling arguments\n\nThese arguments control the number of points along each axis that will be\nsampled by the algorithm.\n\n\u003cdl\u003e\n\u003cdt\u003e-s, --samples \u0026lt;n\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eNumber of samples to use on both axis, equivalent to \u003ccode\u003e--width n --height n\u003c/code\u003e\u003c/dd\u003e\n\u003cdt\u003e--width \u0026lt;n\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eNumber of samples to use on the real axis\u003c/dd\u003e\n\u003cdt\u003e--height \u0026lt;n\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eNumber of samples to use on the imaginary axis\u003c/dd\u003e\n\u003cdt\u003e--aspect \u0026lt;WxH\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eNumber of samples to use. Equivalent to \u003ccode\u003e--width W --height H\u003c/code\u003e but also\ncontrols the actual height of the bounding box (See above).\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n## colorator\n\nApplies a user supplied coloring algorithm to the input fractal data to create a\n.bmp image file.\n\nThe coloring algorithm is written in\n[angelscript](http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html).\n\nSee the [scripting documentation](docs/scripting.md) for further details on the interface. See the \n[samples directory](samples/) for examples.\n\n### command line\n\n`colorator [-h] -o \u003coutput\u003e -i \u003cinput\u003e -s \u003cscript\u003e -a \u003cargstring\u003e`\n\n\u003cdl\u003e\n\u003cdt\u003e-h, --help \u003c/dt\u003e\n\u003cdd\u003ePrint out short command line help text\u003cdd\u003e\n\u003cdt\u003e-o, --output-file \u0026lt;filename\u0026gt;\u003c/dt\u003e\n\u003cdd\u003epath to file into which the output will be written. If the file exists, it\nwill be truncated.\u003c/dd\u003e\n\u003cdt\u003e-i, --input-file \u0026lt;filename\u0026gt;\u003c/dt\u003e\n\u003cdd\u003ePath to .fract file on to which to apply coloring. It assumes the file\nformat is that put out by fractalator.\u003c/dd\u003e\n\u003cdt\u003e-s, --script-file \u0026lt;filename\u0026gt;\u003c/dt\u003e\n\u003cdd\u003ePath to the angelscript file containing coloring algorithm.\u003c/dd\u003e\n\u003cdt\u003e-a, --args \u0026lt;argstring\u0026gt;\u003c/dt\u003e\n\u003cdd\u003esemi-colon separated list of key/value pairs that will be passed to the\nscript. see [scripting documentation](docs/scripting.md) of further\ndetails\u003c/dd\u003e\n\u003c/dl\u003e\n\n## mandel\n\n`mandel` combines `fractalator` and `colorator`, but with a small bit of\nsmarts. `mandel` checks the parameters encoded in the `fractalator` output. If\nthey are the same, then only the coloring pass is run. If they are different,\nthen both will be run. This allows you to fine tune the coloring while still\nhaving the felixbility to slightly tweak the fractal while only doing what is\nrequired.\n\n### command line\n\nThe options to `mandel` are mostly a straight combination of the `fractalator`\nand `colorator` parameters. Differences are noted below.\n\n\u003cdl\u003e\n\u003cdt\u003e-o, --output-file \u0026lt;filename\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eThis is the path prefix for both the .fract file and the image file. If\n\u0026lt;filename\u0026gt; is `/somedir/foo` ,then the .fract file will be\n`/somedir/foo.fract` and the image file will be `/somedir/foo.bmp`\u003c/dd\u003e\n\u003cdt\u003e-s, --samples\u003c/dt\u003e\n\u003cdd\u003eLike the fractalator option\u003c/dt\u003e\n\u003cdt\u003e--script \u0026lt;filename\u0026gt;\u003c/dt\u003e\n\u003cdd\u003eSame as the (-s, -script-file) options to colorator\u003c/dd\u003e\n\u003c/dl\u003e\n\n\n## gmandel\n\nHypothetical future version of mandel but with a gui interface.\n\n## Technologies\n\n- [Cmake](https://cmake.org/) for build configuration.\n- [cxxopts](https://github.com/jarro2783/cxxopts) for command line handling.\n- [cereal](https://uscilab.github.io/cereal/index.html) for serialization.\n- [angelscript](http://www.angelcode.com/angelscript/sdk/docs/manual/doc_script.html) for the user scripting support.\n\n## License\n\nMIT \u0026copy; 2020 Mark Hollomon\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhhollomon%2Fmandel","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmhhollomon%2Fmandel","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmhhollomon%2Fmandel/lists"}