Struct ScalarVisibleFaces
pub struct ScalarVisibleFaces;Expand description
Reference provider: visible face regions decided exactly in the view’s frame. Portable exact orthographic visible-face provider.
Visibility is decided exactly (module docs of faces): the image is
cut by an exact arrangement of the visible mesh edges, the clip segments,
the cross-sections of interpenetrating triangles and the crop box; each
side of each piece is labelled with the sources frontmost just beside it;
and the pieces between different labels bound the regions. Nothing is
rounded before a decision. The regions are then snap-rounded to the
binary64 grid (ADR 0100): each vertex is the exact point rounded once, so
it equals the hidden-line endpoint of the same point, unless an edge
passes through the rounding cell of another vertex, in which case the
edge is routed through it.
Where several sources are at equal depth over an area they all get it
and the evidence counts the tied sides. A triangle seen edge-on covers no
area and makes no region. A near plane that cuts a
MeshRole::Solid
leaves a FaceSource::Cap
region. A region that collapses under rounding is dropped and counted in
the evidence, never refused.
Implementations§
§impl ScalarVisibleFaces
impl ScalarVisibleFaces
pub const fn new() -> ScalarVisibleFaces
pub const fn new() -> ScalarVisibleFaces
Construct the provider.
Trait Implementations§
§impl Backend for ScalarVisibleFaces
impl Backend for ScalarVisibleFaces
§fn descriptor(&self) -> BackendDescriptor
fn descriptor(&self) -> BackendDescriptor
§impl Clone for ScalarVisibleFaces
impl Clone for ScalarVisibleFaces
§fn clone(&self) -> ScalarVisibleFaces
fn clone(&self) -> ScalarVisibleFaces
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for ScalarVisibleFaces
§impl Debug for ScalarVisibleFaces
impl Debug for ScalarVisibleFaces
§impl Default for ScalarVisibleFaces
impl Default for ScalarVisibleFaces
§fn default() -> ScalarVisibleFaces
fn default() -> ScalarVisibleFaces
§impl MeshVisibleFaces for ScalarVisibleFaces
impl MeshVisibleFaces for ScalarVisibleFaces
§fn scratch_requirement(&self) -> ScratchRequirement
fn scratch_requirement(&self) -> ScratchRequirement
§fn cancellation_granularity(&self) -> CancellationGranularity
fn cancellation_granularity(&self) -> CancellationGranularity
§fn visible_faces(
&self,
request: &VisibleFaceRequest<'_>,
options: &ExecutionOptions,
) -> Result<VisibleFaceOutcome, HiddenLineError>
fn visible_faces( &self, request: &VisibleFaceRequest<'_>, options: &ExecutionOptions, ) -> Result<VisibleFaceOutcome, HiddenLineError>
request.meshes in request.view.
Implementations must enforce request.limits before growing output.Source§fn supports_projection(&self, projection: ViewProjection) -> bool
fn supports_projection(&self, projection: ViewProjection) -> bool
true for ViewProjection::Orthographic only; see
MeshHiddenLines::supports_projection
(ADR 0107).Auto Trait Implementations§
impl Freeze for ScalarVisibleFaces
impl RefUnwindSafe for ScalarVisibleFaces
impl Send for ScalarVisibleFaces
impl Sync for ScalarVisibleFaces
impl Unpin for ScalarVisibleFaces
impl UnsafeUnpin for ScalarVisibleFaces
impl UnwindSafe for ScalarVisibleFaces
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more