Skip to main content

oxiphysics_geometry/csg/
sdfcylinder_traits.rs

1//! # SdfCylinder - Trait Implementations
2//!
3//! This module contains trait implementations for `SdfCylinder`.
4//!
5//! ## Implemented Traits
6//!
7//! - `ImplicitSurface`
8//!
9//! 🤖 Generated with [SplitRS](https://github.com/cool-japan/splitrs)
10
11use super::functions::ImplicitSurface;
12use super::functions::normalize;
13use super::types::SdfCylinder;
14
15impl ImplicitSurface for SdfCylinder {
16    fn sdf(&self, p: [f64; 3]) -> f64 {
17        let dx = p[0] - self.center[0];
18        let dz = p[2] - self.center[2];
19        (dx * dx + dz * dz).sqrt() - self.radius
20    }
21    fn gradient(&self, p: [f64; 3]) -> [f64; 3] {
22        let dx = p[0] - self.center[0];
23        let dz = p[2] - self.center[2];
24        normalize([dx, 0.0, dz])
25    }
26}