pub trait Surface {
// Required method
fn evaluate(&self, u: f32, v: f32) -> Vec3;
// Provided methods
fn normal(&self, u: f32, v: f32) -> Vec3 { ... }
fn tangent_u(&self, u: f32, v: f32) -> Vec3 { ... }
fn tangent_v(&self, u: f32, v: f32) -> Vec3 { ... }
fn u_range(&self) -> (f32, f32) { ... }
fn v_range(&self) -> (f32, f32) { ... }
fn wraps_u(&self) -> bool { ... }
fn wraps_v(&self) -> bool { ... }
fn name(&self) -> &str { ... }
}Expand description
A parametric surface defined over (u, v) in [0, 1] x [0, 1].
Required Methods§
Provided Methods§
Sourcefn normal(&self, u: f32, v: f32) -> Vec3
fn normal(&self, u: f32, v: f32) -> Vec3
Compute the surface normal at parameter (u, v). Default implementation uses central differences.
Sourcefn tangent_u(&self, u: f32, v: f32) -> Vec3
fn tangent_u(&self, u: f32, v: f32) -> Vec3
Compute the partial derivative with respect to u at (u, v).