package Ġpoly hed ra . js . poly Ċ Ċ import Ġpoly hed ra . common . poly .* Ċ import Ġpoly hed ra . common . util .* Ċ import Ġkotlin . math .* Ċ Ċ fun ĠFace Context . export Solid To St l ( name : ĠString , Ġdescription : ĠString , Ġexport Params : ĠFace Export Params ): ĠString Ġ{ ĊĠĠĠ Ġval Ġq Ġ= Ġpoly . rotation With L argest Face Down () ĊĠĠĠ Ġval Ġofs Ġ= ĠMutable Vec 3 ( 0 . 0 , Ġ 0 . 0 , ĠDouble . POSITIVE _ INFINITY ) ĊĠĠĠ Ġexport Vertices ( export Params ) Ġ{ Ġav Ġ-> ĊĠĠĠĠĠĠĠ Ġval Ġv Ġ= Ġav . rot ated ( q ) ĊĠĠĠĠĠĠĠ Ġofs . z Ġ= Ġmin ( ofs . z , Ġv . z ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġbuild String Ġ{ ĊĠĠĠĠĠĠĠ Ġappend Line (" solid Ġ$ name Ġ; Ġ$ description ") ĊĠĠĠĠĠĠĠ Ġval Ġnormal Ġ= ĠMutable Vec 3 () ĊĠĠĠĠĠĠĠ Ġexport Triangles ( export Params ) Ġ{ Ġav 1 , Ġav 2 , Ġav 3 Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 1 Ġ= Ġav 1 . rot ated ( q ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 2 Ġ= Ġav 2 . rot ated ( q ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġv 3 Ġ= Ġav 3 . rot ated ( q ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal . set To Zero () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcross Center ed AddTo ( normal , Ġv 1 , Ġv 2 , Ġv 3 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnormal Ġ/= Ġnormal . norm ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line ( normal . to St l (" facet Ġnormal ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (" outer Ġloop ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (( v 1 Ġ- Ġofs ). to St l (" vertex ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (( v 2 Ġ- Ġofs ). to St l (" vertex ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (( v 3 Ġ- Ġofs ). to St l (" vertex ")) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (" end loop ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġappend Line (" end facet ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġappend Line (" ends olid Ġ$ name ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ private Ġfun ĠVec 3 . to St l ( lbl : ĠString ) Ġ= Ġ"$ lbl Ġ${ x . fmt } Ġ${ y . fmt } Ġ${ z . fmt }" Ċ Ċ private Ġfun ĠPoly hedron . rotation With L argest Face Down (): ĠQu at Ġ{ ĊĠĠĠ Ġval Ġf Ġ= Ġface Kinds . values . max By OrNull Ġ{ Ġit . ess ence (). area () Ġ} !! ĊĠĠĠ Ġreturn Ġrotation Between Qu at ( f , ĠVec 3 ( 0 . 0 , Ġ 0 . 0 , Ġ- 1 . 0 )) Ċ }