|
|
|
@ -21,6 +21,8 @@ |
|
|
|
use std::convert::{TryFrom, TryInto, Into};
|
|
|
|
use std::num::TryFromIntError;
|
|
|
|
use std::f64::consts::PI as FPI;
|
|
|
|
use std::fmt::Display;
|
|
|
|
use std::ops::{Add,Sub,Neg,Mul,Div};
|
|
|
|
|
|
|
|
use fractional::continuous::Continuous;
|
|
|
|
use fractional::fractional::{Fractional, from_vector};
|
|
|
|
@ -96,7 +98,7 @@ fn pi() { |
|
|
|
}
|
|
|
|
|
|
|
|
fn _sin() {
|
|
|
|
for d in [ 0, 45, 90, 135, 180, 225, 270, 315
|
|
|
|
for d in [ 0, 30, 45, 90, 135, 180, 225, 270, 315
|
|
|
|
, 9, 17, 31, 73, 89, 123, 213, 312, 876 ].iter() {
|
|
|
|
let s = Fractional::sin(*d as i32);
|
|
|
|
let sr :f64 = s.try_into().unwrap();
|
|
|
|
@ -107,7 +109,7 @@ fn _sin() { |
|
|
|
}
|
|
|
|
|
|
|
|
fn _tan() {
|
|
|
|
for d in [ 0, 45, 90, 135, 180, 225, 270, 315
|
|
|
|
for d in [ 0, 30, 45, 90, 135, 180, 225, 270, 315
|
|
|
|
, 9, 17, 31, 73, 89, 123, 213, 312, 876 ].iter() {
|
|
|
|
let t = Fractional::tan(*d as i32);
|
|
|
|
let tr :f64 = t.try_into().unwrap();
|
|
|
|
@ -118,7 +120,7 @@ fn _tan() { |
|
|
|
}
|
|
|
|
|
|
|
|
fn _cos() {
|
|
|
|
for d in [ 0, 45, 90, 135, 180, 225, 270, 315
|
|
|
|
for d in [ 0, 30, 45, 90, 135, 180, 225, 270, 315
|
|
|
|
, 9, 17, 31, 73, 89, 123, 213, 312, 876 ].iter() {
|
|
|
|
let c = Fractional::cos(*d as i32);
|
|
|
|
let cr :f64 = c.try_into().unwrap();
|
|
|
|
@ -128,11 +130,25 @@ fn _cos() { |
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
fn _vector() {
|
|
|
|
fn _vector1() {
|
|
|
|
let v1 = Vector(1.into(), 2.into(), 3.into());
|
|
|
|
let v2 = Vector(2.into(), 2.into(), 3.into());
|
|
|
|
let s :Fractional = 3.into();
|
|
|
|
|
|
|
|
_vector(v1, v2, s);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn _vector2() {
|
|
|
|
let v1 = Vector(1.0, 2.0, 3.0);
|
|
|
|
let v2 = Vector(2.0, 2.0, 3.0);
|
|
|
|
let s = 3.0;
|
|
|
|
|
|
|
|
_vector(v1, v2, s);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn _vector<T>(v1 :Vector<T>, v2 :Vector<T>, s :T)
|
|
|
|
where T: Add<Output = T> + Sub<Output = T> + Neg<Output = T>
|
|
|
|
+ Mul<Output = T> + Div<Output = T> + Trig + Copy + Display {
|
|
|
|
println!("{:>14} : {}", "Vector v1", v1);
|
|
|
|
println!("{:>14} : {}", "Vector v2", v2);
|
|
|
|
println!("{:>14} : {}", "abs v1", v1.abs());
|
|
|
|
@ -153,16 +169,34 @@ fn _vector() { |
|
|
|
println!("{:>14} : {}", "v2 * v1", v2 * v1);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn _transform() {
|
|
|
|
fn _transform1() {
|
|
|
|
let v = Vector(Fractional(1,1), Fractional(1,1), Fractional(1,1));
|
|
|
|
let v1 = Vector(Fractional(1,1), Fractional(2,1), Fractional(3,1));
|
|
|
|
let v2 = Vector(Fractional(1,1), Fractional(1,1), Fractional(0,1));
|
|
|
|
let v3 = Vector(Fractional(1,1), Fractional(0,1), Fractional(1,1));
|
|
|
|
|
|
|
|
_transform(v, v1, v2, v3);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn _transform2() {
|
|
|
|
let v = Vector(1.0, 1.0, 1.0);
|
|
|
|
let v1 = Vector(1.0, 2.0, 3.0);
|
|
|
|
let v2 = Vector(1.0, 1.0, 0.0);
|
|
|
|
let v3 = Vector(1.0, 0.0, 1.0);
|
|
|
|
|
|
|
|
_transform(v, v1, v2, v3);
|
|
|
|
}
|
|
|
|
|
|
|
|
fn _transform<T>(v :Vector<T>, v1 :Vector<T>, v2 :Vector<T>, v3 :Vector<T>)
|
|
|
|
where T: Add<Output = T> + Sub<Output = T> + Neg<Output = T>
|
|
|
|
+ Mul<Output = T> + Div<Output = T> + Trig
|
|
|
|
+ From<i32> + Copy + Display {
|
|
|
|
let mt = translate(v);
|
|
|
|
|
|
|
|
println!("{:>14} : {}", "Vector v1", v1);
|
|
|
|
println!("{:>14} : {}", "translate v1", mt.apply(&v1));
|
|
|
|
println!();
|
|
|
|
|
|
|
|
let v2 = Vector(1.into(), 1.into(), 0.into());
|
|
|
|
println!("{:>14} : {}", "Vector v2", v2);
|
|
|
|
for d in [ 30, 45, 60, 90, 120, 135, 150, 180
|
|
|
|
, 210, 225, 240, 270, 300, 315, 330 ].iter() {
|
|
|
|
@ -186,7 +220,6 @@ fn _transform() { |
|
|
|
}
|
|
|
|
println!();
|
|
|
|
|
|
|
|
let v3 = Vector(Fractional(1,1), Fractional(0,1), Fractional(1,1));
|
|
|
|
println!("{:>14} : {}", "Vector v3", v3);
|
|
|
|
for d in [ 30, 45, 60, 90, 120, 135, 150, 180
|
|
|
|
, 210, 225, 240, 270, 300, 315, 330 ].iter() {
|
|
|
|
@ -217,7 +250,11 @@ fn main() { |
|
|
|
println!();
|
|
|
|
_tan();
|
|
|
|
println!();
|
|
|
|
_vector();
|
|
|
|
_vector1();
|
|
|
|
println!();
|
|
|
|
_vector2();
|
|
|
|
println!();
|
|
|
|
_transform1();
|
|
|
|
println!();
|
|
|
|
_transform();
|
|
|
|
_transform2();
|
|
|
|
}
|