7 stable releases
1.0.6 | Oct 10, 2022 |
---|---|
1.0.5 | Oct 8, 2022 |
#2408 in Rust patterns
250KB
299 lines
Signed Distance Fields
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:
-------------------- --------------------
-+++++++++++++++--- ---+++++++++++++++-
-++ +++--- ---+++ ++-
-++ ++--- ---++ ++-
-++ +++-- --+++ ++-
-++ ++--- ---++ ++-
-++ ++--- ---++ ++-
-++ ++--- ---++ ++-
-++ ++--- ---++ ++-
-++ +++-- --+++ ++-
-++ ++--- ---++ ++-
-++ +++--- ---+++ ++-
-+++++++++++++++--- ---+++++++++++++++-
-------------------- --------------------
Dependencies
~8.5MB
~137K SLoC