This is a starter project for creating Computational Projects for learning geometry, kinematics and dynamics.
A student develops their own Vector3
class for describing the position and velocity of objects in 3D. This class then becomes the basis for future projects. Vector3
is a springboard to Geometric3
, a geometric object for Euclidean space using Geometric Algebra.
The Vector3
class in the file Vector3.ts
is initially nothing more than a triple of Cartesian coordinates. The goal is to develop the Vector3
class into a mathematical object supporting coordinate-free geometry. The student develops an appreciation of the power of geometric objects for representing physical laws.
- Productivity. The project has been designed so that the student need only work in the
index.ts
andVector3.ts
files without becoming bogged down in the details of Computer Graphics. - Transparency. The project does not hide details, so that the details may be explored. Explicit is better than implicit.
- Constructive Modeling. The important Physical, Mathematical, and Computation models are constructed by the student. We understand that which we construct.
- Ownership. The student takes ownership of that which they construct. Errors become challenges to mastery.
- Separation. Models should be distinct from graphical representations. Constructing algorithms and data structures is a part of developing Computational Thinking skills.
- basis as reference vectors e1 and e2.
-
decompose
$\vec{v} = a \mathbf{e}_1 + b \mathbf{e}_2$ . -
components of
$\vec{v}$ $a \mathbf{e}_1$ and$b \mathbf{e}_2$ . -
coordinates of
$\vec{v}$ :$a$ and$b$
Some ideas:
- Use the Vector3 to model position and velocity kinematic variables. Position and move an object in various ways.
- Develop methods for implementing scalar multiplication, addition and subtraction.
- Replace explicit method calls with operator overloading for a more natural representation of geometric ideas.
- Develop methods that provide magnitude and direction.
- Define basis vector constants.
- Develop methods that implement magnitude and direction.
- Develop methods for projection and a scalar product.
- Develop methods for reflection and rejection.
- Develop method for vector cross-product.
- Use the
EIGHT.Arrow
class for visualizing vectors. - Use the
EIGHT.Basis
class for visualizing a coordinate basis. - Use
EIGHT.Trail
for showing a graphical trail. - Use
EIGHT.Vector3
andEIGHT.Geometric3
as advanced examples of geometric quantities in 3D - Use the
UNITS
library for investigating Units of Measure. - Use
JSXGraph
library for graphing. - Introduce mass, momentum, force, and dynamics.
- Model single and multi-particle problems.
- Model two-particle problems with internal interactions.
- Model rigid-body problems.
- Write unit tests to verify
Vector3
class.