oxiphysics_geometry/csg/
sdfcylinder_traits.rs1use 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}