geo-visibility 0.5.0

Compute visibility polygon
Documentation
use approx::abs_diff_eq;
use geo::algorithm::euclidean_distance::EuclideanDistance;

pub fn cross(a: geo::Point<f64>, b: geo::Point<f64>) -> f64 {
    a.x() * b.y() - a.y() * b.x()
}

pub fn approx_equal(a: &geo::Point<f64>, b: &geo::Point<f64>) -> bool {
    abs_diff_eq!(a.euclidean_distance(b), 0.0)
}

#[cfg(test)]
#[allow(clippy::float_cmp)]
mod tests {
    use super::*;
    use geo::point;

    #[test]
    fn test_dot() {
        assert_eq!(point!(x: 1.0, y: 2.0).dot(point!(x: 3.0, y: 4.0)), 11.0);
        assert_eq!(point!(x: 1.0, y: 2.0).dot(point!(x: 0.0, y: 0.0)), 0.0);
    }

    #[test]
    fn test_det() {
        assert_eq!(cross(point!(x: 3.0, y: 4.0), point!(x: 1.0, y: 2.0)), 2.0);
    }
}