1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
//! # Summary
//! Oxygen Quark is a maths library primarily aimed for the Oxygen game engine.
//! Use for it in any other project is allowed and encouraged.
//!
//! - It holds parts of linear algebra: [square matrices](./matrix/index.html) along [two-dimensional](./vector/vector2d/struct.Vector2D.html) and [three-dimensional vectors](./vector/vector3d/struct.Vector3D.html).
//! - It is also containing a [`Fraction`](./fraction/struct.Fraction.html) data-type to allow for more precise calculations when floating-point is proven inaccurate.
//! - The last part is the imaginary part, holding [`Quaternion`](./imaginary/quaternion/struct.Quaternion.html) as well as [`Complex`](./imaginary/complex/struct.Complex.html) data-types, one for three-dimensional rotations
//! and the other for mathematical completeness.

//! ## Vector
//! The module containing the implementation details for [`Vector2d`](./vector/vector2d/struct.Vector2D.html) and [`Vector3d`](./vector/vector3d/struct.Vector3D.html).

//! ## Matrix
//! This module holds the implementations of [`Matrix2x2`](./matrix/matrix2x2/struct.Matrix2x2.html), [`Matrix3x3`](./matrix/matrix3x3/struct.Matrix3x3.html) and [`Matrix4x4`](./matrix/matrix4x4/struct.Matrix4x4.html).

//! ## Imaginary
//! This module contains [`Complex`](./imaginary/complex/struct.Complex.html) and [`Quaternion`](./imaginary/quaternion/struct.Quaternion.html) implementations.

//! ## Fraction
//! This module yields the implementation for [`Fraction`](./fraction/struct.Fraction.html).

extern crate oxygen_quark_derive;

pub mod prelude;

// Linear algebra
/// Holds the implementations for `Matrix2x2`, `Matrix3x3` and `Matrix4x4`.
pub mod matrix;
/// Holds the implementations for `Vector2d` and `Vector3d`.
pub mod vector;

// Complex numbers
/// Holds the implementations for `Complex` and `Quaternion`.
pub mod imaginary;

// Fractions
/// Holds the implementation for the `Fraction` data-type.
pub mod fraction;

// Colours
// Holds the implementation for the `Colour` data-type.
pub mod colour;

pub fn info() {
    println!(
        "You are running {} v.{}",
        env!("CARGO_PKG_NAME"),
        env!("CARGO_PKG_VERSION")
    );
    println!("Find more on {}", env!("CARGO_PKG_HOMEPAGE"));
}