{"id":25398055,"url":"https://github.com/aryansk/geometric-transformation-visualizer","last_synced_at":"2026-05-05T13:35:38.555Z","repository":{"id":191332114,"uuid":"684427902","full_name":"aryansk/Geometric-Transformation-Visualizer","owner":"aryansk","description":"A comprehensive toolkit for visualizing various geometric transformations on both 2D shapes and images using Python. This project demonstrates fundamental geometric operations through interactive visualizations.","archived":false,"fork":false,"pushed_at":"2025-01-31T19:14:46.000Z","size":1831,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-11T05:57:46.350Z","etag":null,"topics":["computer-vision","matplotlib","numpy","opencv","python"],"latest_commit_sha":null,"homepage":"","language":"Jupyter Notebook","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/aryansk.png","metadata":{"files":{"readme":"README.md","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}},"created_at":"2023-08-29T05:25:13.000Z","updated_at":"2025-01-31T19:14:49.000Z","dependencies_parsed_at":null,"dependency_job_id":"cb9dda57-26c6-4aca-8a3f-0ccd22e1108d","html_url":"https://github.com/aryansk/Geometric-Transformation-Visualizer","commit_stats":null,"previous_names":["aryansk/lecture01","aryansk/computer-vision","aryansk/geometric-transformation-visualizer"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryansk%2FGeometric-Transformation-Visualizer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryansk%2FGeometric-Transformation-Visualizer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryansk%2FGeometric-Transformation-Visualizer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aryansk%2FGeometric-Transformation-Visualizer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aryansk","download_url":"https://codeload.github.com/aryansk/Geometric-Transformation-Visualizer/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248351402,"owners_count":21089271,"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":["computer-vision","matplotlib","numpy","opencv","python"],"created_at":"2025-02-15T22:33:33.852Z","updated_at":"2026-05-05T13:35:33.518Z","avatar_url":"https://github.com/aryansk.png","language":"Jupyter Notebook","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Geometric Transformation Visualizer 🔷\n\n![Python](https://img.shields.io/badge/Python-3.7+-blue.svg)\n![NumPy](https://img.shields.io/badge/NumPy-1.20+-green.svg)\n![OpenCV](https://img.shields.io/badge/OpenCV-4.5+-red.svg)\n![Matplotlib](https://img.shields.io/badge/Matplotlib-3.4+-orange.svg)\n![License](https://img.shields.io/badge/License-MIT-yellow.svg)\n![Maintenance](https://img.shields.io/badge/Maintenance-Active-brightgreen.svg)\n\nA comprehensive toolkit for visualizing geometric transformations on 2D shapes and images, implementing fundamental geometric operations through interactive visualizations.\n\n## 📖 Table of Contents\n- [Core Features](#-core-features)\n- [Technical Architecture](#-technical-architecture)\n- [Installation \u0026 Setup](#-installation--setup)\n- [Implementation Guide](#-implementation-guide)\n- [Transformation Examples](#-transformation-examples)\n- [Development](#-development)\n- [Contributing](#-contributing)\n- [License](#-license)\n\n## 🌟 Core Features\n\n### 📐 Triangle Transformations\n- **Basic Operations**\n  - Translation (position shifting)\n  - Scaling (size adjustment)\n  - Rotation (angle modification)\n  - Reflection (axis mirroring)\n  - Shearing (shape deformation)\n- **Visualization Tools**\n  - Interactive plotting\n  - Grid overlay\n  - Transformation animation\n  - Comparison views\n\n### 🖼️ Image Transformations\n- **Advanced Operations**\n  - Multi-axis translation\n  - Configurable rotation\n  - Custom scale factors\n  - Precision cropping\n  - Controlled shearing\n- **Image Processing**\n  - Color space handling\n  - Border management\n  - Interpolation options\n  - Resolution preservation\n\n## 🛠 Technical Architecture\n\n### System Components\n```mermaid\ngraph TD\n    A[Input] --\u003e B[Transformation Engine]\n    B --\u003e C1[Triangle Operations]\n    B --\u003e C2[Image Operations]\n    C1 --\u003e D1[Matrix Operations]\n    C2 --\u003e D2[Pixel Operations]\n    D1 --\u003e E1[Triangle Visualization]\n    D2 --\u003e E2[Image Visualization]\n    E1 --\u003e F[Output Display]\n    E2 --\u003e F\n```\n\n### Dependencies\n```python\n# requirements.txt\nnumpy\u003e=1.20.0\nmatplotlib\u003e=3.4.0\nopencv-python\u003e=4.5.0\npytest\u003e=6.2.0\n```\n\n## 💻 Installation \u0026 Setup\n\n### System Requirements\n- **Minimum Specifications**\n  - Python 3.7+\n  - 4GB RAM\n  - 2GB storage\n- **Recommended Specifications**\n  - Python 3.9+\n  - 8GB RAM\n  - 5GB storage\n  - GPU for image processing\n\n### Quick Start\n```bash\n# Clone repository\ngit clone https://github.com/yourusername/geometric-transformation-visualizer.git\n\n# Navigate to project\ncd geometric-transformation-visualizer\n\n# Create virtual environment\npython -m venv venv\nsource venv/bin/activate  # Linux/Mac\n.\\venv\\Scripts\\activate   # Windows\n\n# Install dependencies\npip install -r requirements.txt\n```\n\n## 🚀 Implementation Guide\n\n### Triangle Transformations\n```python\nimport numpy as np\nimport matplotlib.pyplot as plt\n\nclass TriangleTransformer:\n    def __init__(self, vertices):\n        \"\"\"\n        Initialize triangle transformer.\n        \n        Args:\n            vertices (np.array): 3x2 array of triangle vertices\n        \"\"\"\n        self.vertices = np.array(vertices)\n        self.original = vertices.copy()\n    \n    def translate(self, tx, ty):\n        \"\"\"\n        Translate triangle by tx and ty.\n        \n        Args:\n            tx (float): Translation in x direction\n            ty (float): Translation in y direction\n        \"\"\"\n        translation_matrix = np.array([\n            [1, 0, tx],\n            [0, 1, ty],\n            [0, 0, 1]\n        ])\n        \n        # Apply transformation\n        homogeneous_coords = np.hstack((self.vertices, np.ones((3, 1))))\n        transformed_coords = np.dot(homogeneous_coords, translation_matrix.T)\n        self.vertices = transformed_coords[:, :2]\n        \n        return self.vertices\n    \n    def plot(self, show_grid=True):\n        \"\"\"Plot the triangle with optional grid.\"\"\"\n        plt.figure(figsize=(10, 10))\n        plt.plot(self.vertices[[0, 1, 2, 0], 0], \n                self.vertices[[0, 1, 2, 0], 1], 'b-')\n        if show_grid:\n            plt.grid(True)\n        plt.axis('equal')\n        plt.show()\n```\n\n### Image Transformations\n```python\nimport cv2\nimport numpy as np\n\nclass ImageTransformer:\n    def __init__(self, image_path):\n        \"\"\"\n        Initialize image transformer.\n        \n        Args:\n            image_path (str): Path to input image\n        \"\"\"\n        self.image = cv2.imread(image_path)\n        self.image = cv2.cvtColor(self.image, cv2.COLOR_BGR2RGB)\n        self.height, self.width = self.image.shape[:2]\n    \n    def rotate(self, angle, scale=1.0):\n        \"\"\"\n        Rotate image by specified angle.\n        \n        Args:\n            angle (float): Rotation angle in degrees\n            scale (float): Scale factor\n        \"\"\"\n        center = (self.width // 2, self.height // 2)\n        rotation_matrix = cv2.getRotationMatrix2D(center, angle, scale)\n        rotated = cv2.warpAffine(self.image, rotation_matrix, \n                                (self.width, self.height))\n        return rotated\n    \n    def display(self, images, titles=None):\n        \"\"\"Display multiple images with titles.\"\"\"\n        n = len(images)\n        plt.figure(figsize=(5*n, 5))\n        for i, image in enumerate(images):\n            plt.subplot(1, n, i+1)\n            plt.imshow(image)\n            if titles:\n                plt.title(titles[i])\n            plt.axis('off')\n        plt.show()\n```\n\n## 📊 Transformation Examples\n\n### Triangle Transformations\n```python\n# Example usage\ntriangle = TriangleTransformer([[0, 0], [1, 0], [0.5, 1]])\n\n# Demonstrate transformations\noriginal = triangle.vertices.copy()\ntranslated = triangle.translate(2, 3)\nrotated = triangle.rotate(45)\n\n# Plot results\ntriangle.plot(show_grid=True)\n```\n\n### Image Transformations\n```python\n# Example usage\ntransformer = ImageTransformer('example.jpg')\n\n# Apply transformations\nrotated = transformer.rotate(45)\nscaled = transformer.scale(0.5)\n\n# Display results\ntransformer.display([transformer.image, rotated, scaled],\n                   ['Original', 'Rotated', 'Scaled'])\n```\n\n## ⚡ Performance Metrics\n\n### Processing Times\n| Operation | Triangle (ms) | Image (ms) |\n|-----------|--------------|------------|\n| Translation | 0.5 | 15 |\n| Rotation | 0.8 | 25 |\n| Scaling | 0.6 | 20 |\n| Reflection | 0.5 | 18 |\n| Shearing | 0.7 | 22 |\n\n## 👨‍💻 Development\n\n### Project Structure\n```\ngeometric-transformation-visualizer/\n├── src/\n│   ├── triangle/\n│   │   ├── transformer.py\n│   │   └── visualization.py\n│   ├── image/\n│   │   ├── transformer.py\n│   │   └── visualization.py\n│   └── utils/\n│       └── matrix_operations.py\n├── tests/\n│   ├── test_triangle.py\n│   └── test_image.py\n├── examples/\n│   ├── triangle_examples.py\n│   └── image_examples.py\n├── docs/\n│   └── api_reference.md\n├── requirements.txt\n└── README.md\n```\n\n### Testing\n```bash\n# Run all tests\npython -m pytest\n\n# Run specific test category\npython -m pytest tests/test_triangle.py\npython -m pytest tests/test_image.py\n\n# Run with coverage\npython -m pytest --cov=src\n```\n\n## 🤝 Contributing\n\n### Workflow\n1. Fork repository\n2. Create feature branch\n3. Implement changes\n4. Add tests\n5. Submit pull request\n\n### Code Style Guidelines\n- Follow PEP 8\n- Document all functions\n- Write comprehensive tests\n- Include visualization examples\n\n## 📄 License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n\n## 🙏 Acknowledgments\n\n- OpenCV community\n- NumPy development team\n- Matplotlib contributors\n- Computer graphics community\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryansk%2Fgeometric-transformation-visualizer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faryansk%2Fgeometric-transformation-visualizer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faryansk%2Fgeometric-transformation-visualizer/lists"}