Add first fundamental form calculator to maths#14554
Add first fundamental form calculator to maths#14554singhc7 wants to merge 1 commit intoTheAlgorithms:masterfrom
Conversation
This adds a script to calculate the coefficients (e, f, g) of the first fundamental form for parametric surfaces. This mathematical framework is a core concept in differential geometry, used to measure lengths, angles, and areas on a surface. The implementation uses sympy for symbolic differentiation and simplification. While standard mathematical notation dictates capital E, F, and G for these coefficients, they are implemented as lowercase to strictly adhere to PEP 8 N806 and pass the repository's required Ruff linter pre-commit hooks. Reference: https://en.wikipedia.org/wiki/First_fundamental_form Author: singhc7
| GitHub: https://github.com/singhc7 | ||
| """ | ||
|
|
||
| import sympy as sp |
There was a problem hiding this comment.
sympy is a heavy dependency. Consider mentioning this in the module docstring or adding a note about installation requirements (e.g., pip install sympy) for better usability.
| # Parse the string expressions into sympy objects | ||
| x = sp.sympify(x_expr) | ||
| y = sp.sympify(y_expr) | ||
| z = sp.sympify(z_expr) |
There was a problem hiding this comment.
sympify can raise exceptions for invalid input strings. Consider wrapping this in a try/except block and raising a more user-friendly error message.
|
|
||
| # Calculate partial derivatives (tangent vectors) | ||
| r_u = sp.diff(r, u) | ||
| r_v = sp.diff(r, v) |
There was a problem hiding this comment.
Since r is a Matrix, it may be clearer to explicitly compute derivatives element-wise or mention in the docstring that vector differentiation is handled via SymPy's Matrix support.
| # We use simplify to combine trigonometric terms where possible | ||
| e = sp.simplify(r_u.dot(r_u)) | ||
| f = sp.simplify(r_u.dot(r_v)) | ||
| g = sp.simplify(r_v.dot(r_v)) |
There was a problem hiding this comment.
simplify() can be computationally expensive. Consider making simplification optional or documenting the potential performance impact for complex expressions.
This adds a script to calculate the coefficients (e, f, g) of the first fundamental form for parametric surfaces. This mathematical framework is a core concept in differential geometry, used to measure lengths, angles, and areas on a surface.
The implementation uses sympy for symbolic differentiation and simplification. While standard mathematical notation dictates capital E, F, and G for these coefficients, they are implemented as lowercase to strictly adhere to PEP 8 N806 and pass the repository's required Ruff linter pre-commit hooks.
Reference: https://en.wikipedia.org/wiki/First_fundamental_form
Author: singhc7
Describe your change:
Checklist: