Crates.io | vec3D |
lib.rs | vec3D |
version | 0.3.0 |
source | src |
created_at | 2019-01-25 14:54:43.632522 |
updated_at | 2019-02-02 17:43:10.007203 |
description | A minimal 3D Vector library in Rust. |
homepage | |
repository | https://github.com/jaredvann/vec3D-rs |
max_upload_size | |
id | 110628 |
size | 35,157 |
A minimal 3D Vector library in Rust. Designed with a preference towards conventions from physics. Inspired by the CLHEP Hep3Vector class.
This module uses the convention for describing spherical coordinates as used in the physics community as follows:
And cylindrical coordinates:
All angles are in radians.
use vec3D::Vec3D;
fn main() {
// Simple initialisation
let vec1 = Vec3D::new(1.0, 2.0, 3.0);
println!("{}", vec1); // Prints: "[1.0, 2.0, 3.0]"
// Operator overloads for clean code
let vec2 = Vec3D::new(3.0, 4.0, 5.0);
let vec3 = vec1 + vec2;
println!("{}", vec3); // Prints: "[4.0, 6.0, 8.0]"
let vec4 = vec3 * 2.0;
println!("{}", vec4); // Prints: "[8.0, 12.0, 16.0]"
// Common vector operations
let dot_product = vec3.dot(vec4);
println!("{}", dot_product); // Prints: "232"
let vec5 = Vec3D::new(1.0, 0.0, 0.0);
let vec6 = Vec3D::new(0.0, 1.0, 0.0);
let cross_product = vec5.cross(vec6);
println!("{}", cross_product); // Prints: "[0.0, 0.0, 1.0]"
// Plus initialisations from spherical/cylindrical coordinates, rotations and more
}
This project is licensed under the MIT license (LICENSE or http://opensource.org/licenses/MIT)