2013-06-18 19:42:13 -04:00
|
|
|
! Copyright (C) 2010 Slava Pestov.
|
|
|
|
USING: accessors euler.b-rep euler.operators
|
|
|
|
game.models.half-edge gml.macros gml.printer gml.runtime
|
|
|
|
gml.types io io.styles kernel namespaces ;
|
|
|
|
FROM: alien.c-types => >c-bool c-bool> ;
|
|
|
|
IN: gml.b-rep
|
|
|
|
|
|
|
|
LOG-GML: makeVEFS ( p1 p2 -- edge ) make-vefs ;
|
|
|
|
|
|
|
|
LOG-GML: makeEV ( e0 e1 p -- edge ) make-ev ;
|
|
|
|
|
|
|
|
LOG-GML: makeEVone ( e0 p -- edge ) dupd make-ev ;
|
|
|
|
|
|
|
|
LOG-GML: makeEF ( e1 e2 -- edge ) make-ef ;
|
|
|
|
|
|
|
|
LOG-GML: makeEkillR ( edge-ring edge-face -- edge ) make-e-kill-r ;
|
|
|
|
|
|
|
|
LOG-GML: makeFkillRH ( edge-ring -- ) make-f-kill-rh ;
|
|
|
|
|
|
|
|
LOG-GML: killVEFS ( edge -- ) kill-vefs ;
|
|
|
|
|
|
|
|
LOG-GML: killEV ( edge -- ) kill-ev ;
|
|
|
|
|
|
|
|
LOG-GML: killEF ( edge -- ) kill-ef ;
|
|
|
|
|
|
|
|
LOG-GML: killEmakeR ( edge -- edge-ring ) kill-e-make-r ;
|
|
|
|
|
|
|
|
LOG-GML: killFmakeRH ( face-edge base-face-edge -- ) kill-f-make-rh ;
|
|
|
|
|
|
|
|
GML: moveV ( edge point -- ) move-v ;
|
|
|
|
|
|
|
|
GML: moveE ( edge offset -- ) move-e ;
|
|
|
|
|
|
|
|
GML: moveF ( edge offset -- ) move-f ;
|
|
|
|
|
|
|
|
GML: vertexCW ( e0 -- e1 ) vertex-cw ;
|
|
|
|
|
|
|
|
GML: vertexCCW ( e0 -- e1 ) vertex-ccw ;
|
|
|
|
|
|
|
|
GML: faceCW ( e0 -- e1 ) face-cw ;
|
|
|
|
|
|
|
|
GML: faceCCW ( e0 -- e1 ) face-ccw ;
|
|
|
|
|
|
|
|
GML: baseface ( e0 -- e1 ) base-face>> ;
|
|
|
|
|
2016-07-11 22:50:37 -04:00
|
|
|
GML: nextring ( e0 -- e1 ) dup next-ring>> [ ] [ base-face>> ] ?if ;
|
2013-06-18 19:42:13 -04:00
|
|
|
|
|
|
|
GML: facenormal ( e0 -- n ) face-normal ;
|
|
|
|
GML: faceplanedist ( e0 -- d ) face-plane-dist ;
|
|
|
|
GML: faceplane ( e0 -- n d ) face-plane ;
|
|
|
|
|
|
|
|
GML: facemidpoint ( e0 -- v ) face-midpoint ;
|
|
|
|
|
|
|
|
GML: facedegree ( e0 -- n ) face-sides ;
|
|
|
|
|
|
|
|
GML: edgemate ( e0 -- e1 ) opposite-edge>> ;
|
|
|
|
GML: edgeflip ( e0 -- e1 ) opposite-edge>> ;
|
|
|
|
|
|
|
|
GML: edgedirection ( e0 -- v ) edge-direction ;
|
|
|
|
|
|
|
|
GML: vertexpos ( e0 -- p ) vertex-pos ;
|
|
|
|
|
|
|
|
GML: valence ( e0 -- n ) vertex-valence ;
|
|
|
|
|
|
|
|
GML: sameEdge ( e0 e1 -- ? ) same-edge? >true ;
|
|
|
|
|
|
|
|
GML: sameFace ( e0 e1 -- ? ) same-face? >true ;
|
|
|
|
|
|
|
|
GML: sameVertex ( e0 e1 -- ? ) incident? >true ;
|
|
|
|
|
|
|
|
GML: isBaseface ( e -- ? ) face>> base-face? ;
|
|
|
|
|
|
|
|
GML: sharpE ( e sharp -- ) c-bool> sharp-e ;
|
|
|
|
|
|
|
|
GML: sharpF ( e sharp -- ) c-bool> sharp-f ;
|
|
|
|
|
|
|
|
GML: sharpV ( e sharp -- ) c-bool> sharp-v ;
|
|
|
|
|
|
|
|
GML: issharp ( e -- sharp ) sharpness>> >c-bool ;
|
|
|
|
|
|
|
|
GML: isValidEdge ( e -- ? ) b-rep get is-valid-edge? ;
|
|
|
|
|
|
|
|
GML: materialF ( e material -- ) material-f ;
|
|
|
|
|
|
|
|
GML: setcurrentmaterial ( material -- ) drop ;
|
2017-06-01 16:19:11 -04:00
|
|
|
GML: getcurrentmaterial ( -- material ) "none" >gml-name ;
|
2013-06-18 19:42:13 -04:00
|
|
|
GML: pushcurrentmaterial ( material -- ) drop ;
|
2017-06-01 16:19:11 -04:00
|
|
|
GML: popcurrentmaterial ( -- material ) "none" >gml-name ;
|
2013-06-18 19:42:13 -04:00
|
|
|
GML: getmaterialnames ( -- [material] ) { } ;
|
|
|
|
GML: setfacematerial ( e material -- ) material-f ;
|
2017-06-01 16:19:11 -04:00
|
|
|
GML: getfacematerial ( e -- material ) drop "none" >gml-name ;
|
2013-06-18 19:42:13 -04:00
|
|
|
|
|
|
|
GML: setsharpness ( sharp -- ) c-bool> set-sharpness ;
|
|
|
|
GML: getsharpness ( -- sharp ) get-sharpness >c-bool ;
|
|
|
|
GML: pushsharpness ( sharp -- ) c-bool> push-sharpness ;
|
|
|
|
GML: popsharpness ( -- sharp ) pop-sharpness >c-bool ;
|
|
|
|
|
|
|
|
GML: connectedvertices ( e0 e1 -- connected )
|
|
|
|
! Stupid variable-arity word!
|
|
|
|
connecting-edge [ [ over push-operand ] when* ] [ >c-bool ] bi ;
|
|
|
|
|
|
|
|
M: b-edge write-gml
|
|
|
|
dup vertex>> position>> vertex-style [
|
|
|
|
"«Edge " write
|
|
|
|
[ vertex>> position>> write-gml "-" write ] [
|
|
|
|
opposite-edge>> vertex>> position>>
|
|
|
|
dup vertex-style [ write-gml ] with-style
|
|
|
|
] bi
|
|
|
|
"»" write
|
|
|
|
] with-style ;
|