point_process 0.2.3

A crate for simulating random point processes.
Documentation
extern crate pointprocesses;
extern crate gnuplot;

#[macro_use]
extern crate ndarray;

use gnuplot::{Figure,Caption,Color,PointSymbol,PointSize};

use pointprocesses::generalized;

fn main() {
    
    square_example();

    circle_example();

}

fn square_example() {
    let lambda = 50.0;

    let close = array![0.0,0.0];
    let far = array![1.0,1.0];
    let domain = generalized::Rectangle::new(close, far);

    let events = generalized::poisson_process(lambda, &domain);

    println!("{:?}", events);

    let mut fg = Figure::new();

    fg.axes2d()
        .points(
            &events.slice(s![..,0]),
            &events.slice(s![..,1]),
            &[
                Caption("Events"),
                Color("red"),
                PointSymbol('O'),
                PointSize(0.8)
            ]
        );
    
    fg.echo_to_file("2d_poisson_square.gnuplot");
}

fn circle_example() {
    let lambda = 500.0;

    let center = array![1.0,1.0];
    let radius = 1.0;
    let domain = generalized::Sphere::new(center, radius);

    let events = generalized::poisson_process(lambda, &domain);

    println!("{:?}", events);

    let mut fg = Figure::new();

    fg.axes2d()
        .points(
            &events.slice(s![..,0]),
            &events.slice(s![..,1]),
            &[
                Caption("Events"),
                Color("red"),
                PointSymbol('O'),
                PointSize(0.8)
            ]
        );
    
    fg.echo_to_file("2d_poisson_circle.gnuplot");
    fg.show();
}