# Signed Distance Fields [github](https://github.com/MAA28/Signed-Distance-Fields) [crates.io](https://crates.io/crates/signed_distance_fields) [docs.rs](https://docs.rs/crate/signed_distance_fields/latest) You can combine, transform and even develop completly new SDFs that can be rendered with one of this libraries multiple renderes ## Examples ### Primitives ``` $ cargo run --example primitives Circle: ++++++++ ++++++++++++++++++++++++++ +++++++----------------------+++++++ +++++------- -------+++++ ++++----- -----++++ ++++---- ----++++ ++++---- ----++++ ++++--- ---++++ +++--- ---+++ +++--- ---+++ +++--- ---+++ +++--- ---+++ +++--- ---+++ ++--- ---++ +++-- --+++ +++--- ---+++ +++-- --+++ ++--- ---++ ++-- --++ +++-- --+++ +++-- --+++ ++-- --++ ++--- ---++ +++-- --+++ +++--- ---+++ +++-- --+++ ++--- ---++ +++--- ---+++ +++--- ---+++ +++--- ---+++ +++--- ---+++ +++--- ---+++ ++++--- ---++++ ++++---- ----++++ ++++---- ----++++ ++++----- -----++++ +++++------- -------+++++ +++++++----------------------+++++++ ++++++++++++++++++++++++++ ++++++++ Rectangle: ++++++++++++++++++++++++++++++++++++++++ +--------------------------------------+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--------------------------------------+ ++++++++++++++++++++++++++++++++++++++++ Line: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Straight: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Plane: **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** **************************************************************************************************** ``` ### Operators #### Transform ``` $ cargo run --example operators_transform None: ++++++++++++++++++++++++++++++++++++++++ +--------------------------------------+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--- ---+ +--------------------------------------+ ++++++++++++++++++++++++++++++++++++++++ Translate: +++++++++++++++++++++++++++++++++++++++ ++-------------------------------------+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ ++-- ---+ Rotate: ++ +++++----+ ++++-----------++ ++++--------- ---+ ++++--------- --++ ++++--------- ---+ +++++-------- ---+ +++++--------- --++ ++++--------- ---+ ++++--------- --++ ++++--------- ---+ +-------- ---+ +-- --++ +--- ---+ +--- --++ ++-- ---+ +--- ---+ ++-- --+ +--- --------+ +--- ---------++++ ++-- ---------++++ +--- ---------++++ ++-- ---------+++++ +--- --------+++++ +--- ---------++++ ++-- ---------++++ +--- ---------++++ ++-----------++++ +----+++++ ++ Scale: +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ +++----- -----+++ Matrix: ++-+++++ +-- --------++++ +--- --------++++ +--- --------+++ ++-- ---+ +-- ---+ +-- --+ +--- --++ +--- ---+ ++-- ---+ +-- --+ +--- --+ +--- --++ ++-- ---+ +-- ---+ +-- --+ +--- --++ +--- ---+ ++-- ---+ +-- --+ +--- --+ +--- --++ +++-------- ---+ ++++-------- ---+ ++++-------- --+ +++++-++ ``` #### Boolean ``` $ cargo run --example operators_boolean a: ++++++++++++++++++++ +++++------------------+++++ ++++------ ------++++ +++----- -----+++ +++---- ----+++ +++---- ----+++ +++--- ---+++ +++--- ---+++ +++--- ---+++ ++--- ---++ +++-- --+++ ++--- ---++ ++--- ---++ ++--- ---++ ++--- ---++ +++-- --+++ ++--- ---++ +++--- ---+++ +++--- ---+++ +++--- ---+++ +++---- ----+++ +++---- ----+++ +++----- -----+++ ++++------ ------++++ +++++------------------+++++ ++++++++++++++++++++ b: ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +--------------------------------------------------------------------------+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +--------------------------------------------------------------------------+ ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ a ∪ b: ++++++++++++++++++++ +++++------------------+++++ ++++------ ------++++ +++----- -----+++ +++---- ----+++ +++---- ----+++ +++++++++++++++++--- ---+++++++++++++++++ +------------------ ------------------+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +-- --+ +------------------ ------------------+ +++++++++++++++++--- ---+++++++++++++++++ +++---- ----+++ +++---- ----+++ +++----- -----+++ ++++------ ------++++ +++++------------------+++++ ++++++++++++++++++++ a ∩ b: ++++++++++++++++++++++++++++++++++++++++++++++++ +++--------------------------------------------+++ +++--- ---+++ ++--- ---++ +++-- --+++ ++--- ---++ ++--- ---++ ++--- ---++ ++--- ---++ +++-- --+++ ++--- ---++ +++--- ---+++ +++--------------------------------------------+++ ++++++++++++++++++++++++++++++++++++++++++++++++ a\b: -------------------- -------------------- -+++++++++++++++--- ---+++++++++++++++- -++ +++--- ---+++ ++- -++ ++--- ---++ ++- -++ +++-- --+++ ++- -++ ++--- ---++ ++- -++ ++--- ---++ ++- -++ ++--- ---++ ++- -++ ++--- ---++ ++- -++ +++-- --+++ ++- -++ ++--- ---++ ++- -++ +++--- ---+++ ++- -+++++++++++++++--- ---+++++++++++++++- -------------------- -------------------- ```