How zzzymfr/team-project works
Math Lab is a desktop math workspace: users enter or capture handwritten/photo formulas, evaluate them or graph functions, and organize calculations and notes for PDF export. The graph separates UI/adapters, calculation and recognition, and PDF editing/export. README statements establish the advertised capabilities; source-index references and excerpts support only selected internal links, so unsampled subsystem connections are omitted rather than inferred.
Main entry points: PdfEditorController.java PDF Editor Controller · VitalMiniFormulaRecognizer.java Formula Recognizer · Node.java Expression Nodes · DrawingCanvas.java Drawing Canvas
Components 27
Desktop UI
- Drawing Canvas
src/main/java/view/DrawingCanvas.java - App Launcher
src/main/java/app.java - Evaluate Controller
src/main/java/interface_adapter/evaluate/EvaluateController.java - Graph Controller
src/main/java/interface_adapter/graph/GraphController.java
Math Engine
- Evaluation Use Case
src/main/java/use_case/evaluate/EvaluateInteractor.java - LaTeX Parser
src/main/java/entity/MathParser.java - Expression Nodes
src/main/java/entity/node/Node.java - Evaluation Context
src/main/java/entity/Context.java - Derivative Calculator
src/main/java/entity/calculus/DerivativeCalculator.java - Symbolic Derivatives
src/main/java/entity/symbolic/SymbolicDerivative.java
Formula Recognition
- Recognition Adapter
src/main/java/interface_adapter/recognize/FormulaRecognizer.java - Image Preprocessor
src/main/java/data_access/FormulaImagePreprocessor.java - Formula Recognizer
src/main/java/data_access/VitalMiniFormulaRecognizer.java - Inference Device
src/main/java/model/InferenceDevice.java - Vision Model
src/main/java/model/vital_mini.java - Recognition Model
src/neutral network/model.py
Graphing
- Graph Use Case
src/main/java/use_case/graph_function/GraphFunctionInteractor.java - Graph Renderer
src/main/java/data_access/QuickChartGraphRenderer.java
PDF Studio
- PDF Editor View
src/main/java/pdf_editor/view/PdfEditorFrame.java - PDF Editor Controller
src/main/java/pdf_editor/adapter/PdfEditorController.java - PDF Document
src/main/java/pdf_editor/domain/PdfDocument.java - Document Editor
src/main/java/pdf_editor/use_case/DocumentEditor.java - Auto Layout
src/main/java/pdf_editor/use_case/AutoLayoutInteractor.java - PDF Export
src/main/java/pdf_editor/use_case/PdfExportInteractor.java - PDF Output Adapter
src/main/java/pdf_editor/data_access/PdfBoxOutputAdapter.java
Other components
- Student
- Desmos API
Connections 26
- Student → Drawing Canvas: writes formulas
- Student → Recognition Adapter: submits image
- Drawing Canvas → Evaluate Controller: requests calculation
- App Launcher → Formula Recognizer: configures
src/main/java/app.java - Recognition Adapter → Formula Recognizer: recognizes formula
- Formula Recognizer → Image Preprocessor: prepares image
- Formula Recognizer → Inference Device: runs inference
- Inference Device → Vision Model: loads model
- Recognition Model → Vision Model: exports weights
- Evaluate Controller → Evaluation Use Case: executes
src/main/java/interface_adapter/evaluate/EvaluateController.java - Evaluation Use Case → LaTeX Parser: parses expression
- LaTeX Parser → Expression Nodes: builds nodes
src/main/java/entity/MathParser.java - Expression Nodes → Evaluation Context: evaluates in
src/main/java/entity/node/Node.java - Expression Nodes → Derivative Calculator: calculates derivative
src/main/java/entity/node/DerivativeNode.java - Symbolic Derivatives → Derivative Calculator: uses calculator
src/main/java/entity/symbolic/SymbolicDerivative.java - Student → Graph Controller: enters function
- Graph Controller → Graph Use Case: submits graph request
src/main/java/interface_adapter/graph/GraphController.java - Graph Use Case → Graph Renderer: renders graph
- Graph Renderer → Desmos API: requests rendering
- Student → PDF Editor View: edits notes
- PDF Editor View → PDF Editor Controller: sends editor actions
src/main/java/pdf_editor/view/PdfEditorFrame.java - PDF Editor Controller → Document Editor: edits document
src/main/java/pdf_editor/adapter/PdfEditorController.java - PDF Editor Controller → Auto Layout: requests layout
src/main/java/pdf_editor/adapter/PdfEditorController.java - PDF Editor Controller → PDF Export: exports snapshot
src/main/java/pdf_editor/adapter/PdfEditorController.java - Document Editor → PDF Document: updates model
- PDF Export → PDF Output Adapter: writes PDF