Parameters
Name | Type | Description |
---|---|---|
position | vec3<f32> | 3D position to evaluate. |
majorRadius | f32 | Major radius of the torus. |
minorRadius | f32 | Minor radius of the torus. |
angle | f32 | Cap angle in radians. |
Returns
WGSL Code
fn sdfCappedTorus(position: vec3<f32>, majorRadius: f32, minorRadius: f32, angle: f32) -> f32 {let sc = vec2<f32>(sin(angle), cos(angle));let q = vec3<f32>(abs(position.x), position.y, position.z);let k = select(length(q.xy),dot(q.xy, sc),sc.y * q.x > sc.x * q.y);return sqrt(dot(q, q) +majorRadius * majorRadius -2.0 * majorRadius * k) -minorRadius;}