{"id":31727241,"url":"https://github.com/neil-crago/tma_engine","last_synced_at":"2025-10-09T06:19:39.707Z","repository":{"id":315504484,"uuid":"1058155204","full_name":"Neil-Crago/tma_engine","owner":"Neil-Crago","description":"A lightweight and ergonomic Rust crate for defining, composing, and applying 2D affine transformations.","archived":false,"fork":false,"pushed_at":"2025-09-16T18:26:09.000Z","size":389,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-19T01:49:21.706Z","etag":null,"topics":["barnsley-fern","fractal-algorithms","julia","sierpinski-triangle"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Neil-Crago.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE-APACHE","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,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-09-16T17:39:08.000Z","updated_at":"2025-09-17T07:50:56.000Z","dependencies_parsed_at":"2025-09-19T21:00:31.274Z","dependency_job_id":null,"html_url":"https://github.com/Neil-Crago/tma_engine","commit_stats":null,"previous_names":["neil-crago/tma_engine"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/Neil-Crago/tma_engine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neil-Crago%2Ftma_engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neil-Crago%2Ftma_engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neil-Crago%2Ftma_engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neil-Crago%2Ftma_engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Neil-Crago","download_url":"https://codeload.github.com/Neil-Crago/tma_engine/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Neil-Crago%2Ftma_engine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279000852,"owners_count":26082950,"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-10-09T02:00:07.460Z","response_time":59,"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":["barnsley-fern","fractal-algorithms","julia","sierpinski-triangle"],"created_at":"2025-10-09T06:19:38.234Z","updated_at":"2025-10-09T06:19:39.701Z","avatar_url":"https://github.com/Neil-Crago.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Crates.io](https://img.shields.io/crates/v/tma_engine.svg?style=flat-square)](https://crates.io/crates/tma_engine)\n[![Docs.rs](https://img.shields.io/docsrs/tma_engine?style=flat-square)](https://docs.rs/tma_engine)\n[![License: MIT OR Apache-2.0](https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blue?style=flat-square)](https://opensource.org/licenses/MIT)\n[![Rust](https://github.com/Neil-Crago/tma_engine/actions/workflows/rust.yml/badge.svg)](https://github.com/Neil-Crago/tma_engine/actions/workflows/rust.yml)\n\n# TMA Engine: Affine Transformation Toolkit\n\nA lightweight and ergonomic Rust crate for defining, composing, and applying 2D affine transformations.\n\n**TMA** stands for **T**ransformation, **M**atrix, **A**ffine. This engine provides the core algebraic structures for working with Iterated Function Systems (IFS), which are the mathematical foundation for generating a wide variety of fractals, including the Sierpinski Gasket and Barnsley's Fern.\n\n## Features\n\n- **Clear Algebraic Structure:** The `TMA` struct cleanly represents the transformation `T(v) = A*v + c`.\n- **Operator Overloading:** Use the `*` operator to naturally compose transformations (`TMA * TMA`) or apply them to points (`TMA * Point`).\n- **Stochastic IFS Support:** Includes an optional `probability` field in the `TMA` struct, essential for algorithms like the Chaos Game.\n- **Helper Constructors:** Provides convenient methods for creating common transformations like scaling, rotation, and translation.\n\n## Usage\n\nAdd this crate to your `Cargo.toml`:\n```toml\n[dependencies]\ntma_engine = \"0.1.8\" # Or the latest version\n```\n\n## Example\n\n```Rust\nuse tma_engine::{TMA, Point};\n\nfn main() {\n    let scale_half = TMA::from_scale(0.5);\n    let rotate_90_deg = TMA::from_rotation(std::f64::consts::FRAC_PI_2);\n    let translate_up = TMA::from_translation(0.0, 1.0);\n\n    // Compose transformations using the multiplication operator.\n    // The right-most operation is applied first.\n    let composite_tma = translate_up * rotate_90_deg * scale_half;\n\n    let my_point: Point = [2.0, 0.0];\n    \n    // Apply the composed transformation to a point.\n    let new_point = composite_tma * my_point; \n\n    println!(\"Transformed point: {:?}\", new_point);\n    assert_eq!(new_point[0], 0.0);\n    assert_eq!(new_point[1], 2.0);\n}\n```\n\n## Purpose\nThis crate is a foundational component of the FractalAlgebra workspace. It provides the geometric building blocks for generating and exploring fractals and other systems based on affine transformations\n\n## Author\nNeil Crago — experimental mathematician\n\n## Related Crates\nThis crate is part of a collection of crates by the same author:\nThese include:-\n  * MOMA\n  * MOMA_simulation_engine\n  * fractal_algebra\n  * factorial_engine\n  * fa_slow_ai","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneil-crago%2Ftma_engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fneil-crago%2Ftma_engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fneil-crago%2Ftma_engine/lists"}