Geometric Combinators
Posted: Mon Jul 15, 2024 3:37 pm
TL;DR
Add trigonometric functions (sin, cos, tan, asin, acos, atan) and hyperbolic functions (sinh, cosh, tanh, asinh, acosh, atanh) to arithmetic combinators, or add a new geometric combinator to support them.What ?
Arithmetic combinators OR the new geometric combinator can now process trigonometric and hyperbolic calculations for 12 total functions.The following 6 trigonometric functions are supported:
- sin: f(θ, M, A) = A * sin(θ * 2π / M)
- cos: f(θ, M, A) = A * cos(θ * 2π / M)
- tan: f(θ, M, A) = A * tan(θ * 2π / M)
- asin: f(y, A, M) = M * asin(y / A) / 2π
- acos: f(x, A, M) = M * acos(x / A) / 2π
- atan: f(y, x, M) = M * atan2(y, x) / 2π
- sinh: f(θ, M, A) = A * sinh(θ * 2π / M)
- cosh: f(θ, M, A) = A * cosh(θ * 2π / M)
- tanh: f(θ, M, A) = A * tanh(θ * 2π / M)
- asinh: f(y, A, M) = M * asinh(y / A) / 2π
- acosh: f(x, A, M) = M * acosh(x / A) / 2π
- atanh: f(y, x, M) = M * atanh(y, x) / 2π
- θ: Angle
- M: Modulus (Defaults to 360)
- A: Amplitude (Defaults to 1000)
- x: Run distance
- y: Rise distance
It should be noted that the "atan" function is actually an "atan2" function, taking both rise and run as inputs rather than a slope. This ensures that angles greater than or equal to 90° and less than or equal to -90° are handled correctly. However, it is functionally identical to the other inverse trigonometric functions, as the "y" and "x" inputs may also instead be treated as a slope and an amplitude respectively.
There are 3 ways these functions could be implemented with the existing arithmetic combinator OR in the new geometric combinator:
- All 12 functions are added separately.
- Only 3 functions are added (sin, cos, tan) where each function also has 2 other options: One for normal/inverse, and the other for trigonometric/hyperbolic (both either as checkboxes, dropdowns, or sliders).
- Only 4 functions are added (sin, asin, sinh, asinh) since each of the remaining functions can be easily derived using other combinators.