Skip to content

Commit eabf36c

Browse files
Create project-structure.md
1 parent a5b25eb commit eabf36c

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

documentation/project-structure.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# Project Structure
2+
3+
High-level overview of the project structure.
4+
5+
**Core Functionality:**
6+
7+
* **src.main.java.math:** This package contains fundamental math classes like `Vector3f`, `Matrix3f`, and `Matrix4f` used for 3D geometry calculations.
8+
* **src.main.java.mesh:** This package is the heart of the project and deals with meshes. It includes:
9+
* **animator:** Classes for animating meshes (e.g., `AbstractAnimator`, `MoveAlongNormalAnimator`).
10+
* **conway:** Classes specific to Conway polyhedra generation (e.g., `Conway`, various modifier classes).
11+
* **creator:** Classes for creating different types of meshes (e.g., Platonic solids, architectural elements).
12+
* **archimedian:** Creators for Archimedean solids.
13+
* **assets:** Creators for various assets used in meshes.
14+
* **beam:** Creators for different beam profiles.
15+
* **catalan:** Creators for Catalan solids.
16+
* **creative:** Creators for custom and creative mesh types.
17+
* **platonic:** Creators for Platonic solids.
18+
* **primitives:** Creators for basic geometric primitives.
19+
* **special:** Creators for specialized meshes (e.g., Accordion Torus, Mobius Strip).
20+
* **unsorted:** Creators for miscellaneous mesh types.
21+
* **Edge3D, Face3D, Mesh3D:** Classes representing the building blocks of a mesh (edges, faces, and the entire mesh).
22+
* **io:** Classes for reading and writing meshes from/to files (e.g., `SimpleObjectReader`, `SimpleObjectWriter`).
23+
* **modifier:** Classes for modifying existing meshes (e.g., `BendModifier`, `BevelFacesModifier`, subdivision modifiers).
24+
* **selection:** Classes for selecting faces or vertices within a mesh.
25+
* **util:** Utility classes for mesh-related operations (e.g., `Bounds3`, `Mesh3DUtil`).
26+
27+
**Workspace Integration (Optional):**
28+
29+
* **src.main.java.workspace:** This package seems to handle integrating meshes within a workspace environment (potentially a UI for visualization and editing). It includes classes for:
30+
* **command:** Commands for manipulating the workspace view (e.g., panning, showing/hiding elements).
31+
* **Editor:** Class for editing meshes within the workspace.
32+
* **examples:** Example implementations of using meshes in a workspace.
33+
* **FirstPersonView:** Class for a first-person view within the workspace (potentially for visualization).
34+
* **GraphicsPImpl:** Implementation details related to graphics rendering.
35+
* **laf:** Classes for the Look-and-Feel of the workspace UI.
36+
* **ModelListener:** Listener for changes in the mesh model.
37+
* **render:** Rendering-related classes for meshes and selections within the workspace.
38+
* **SceneObject:** Class representing an object within the workspace scene.
39+
* **ui:** Classes for various UI elements used in the workspace.
40+
* **border:** Classes for borders around UI elements.
41+
* **layout:** Classes for UI layout management.
42+
43+
**Testing:**
44+
45+
* **src.test.java:** This package contains unit tests for various functionalities in the project. It includes tests for:
46+
* **bugs:** Tests for identified bugs in specific mesh creators or modifiers.
47+
* **math:** Tests for math utility functions.
48+
* **mesh:** Tests for mesh creation, modification, and utility functions.
49+
* **util:** Tests for utility classes used throughout the project.
50+
51+
**Resources:**
52+
53+
* **src.main.resources:** This directory likely contains resource files used by the project (e.g., configuration files, icons).

0 commit comments

Comments
 (0)