Updating documentation and examples with new core namespaces
[shapes.git] / resources / extensions / Shapes / Graphics3D / metapostarrow.shext
blob68ad00c9a515058c0c6f47e8d68468be0dc29a45
1 /** This file is part of Shapes.
2  **
3  ** Shapes is free software: you can redistribute it and/or modify
4  ** it under the terms of the GNU General Public License as published by
5  ** the Free Software Foundation, either version 3 of the License, or
6  ** any later version.
7  **
8  ** Shapes is distributed in the hope that it will be useful,
9  ** but WITHOUT ANY WARRANTY; without even the implied warranty of
10  ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11  ** GNU General Public License for more details.
12  **
13  ** You should have received a copy of the GNU General Public License
14  ** along with Shapes.  If not, see <http://www.gnu.org/licenses/>.
15  **
16  ** Copyright 2008, 2014, 2015 Henrik Tidefelt
17  **/
19 MetaPostArrow: \ normal p ahLength:void ahAngle:30° →
20   { z: [p 0].p
21     theLength: [if [typeof ahLength]=Data..Type..§Void @width*6 ahLength]
22     l: [Numeric..Math..min theLength 0.9*[Numeric..Math..abs p]]
23     e: [p 0]--[p l]
24     rev: [Geometry..reverse [[shift z]*[Geometry3D..rotate dir:normal angle: ~ahAngle*0.5]*[shift ~z] e]]
25     (>
26       picture: [Graphics..fill [[shift z]*[Geometry3D..rotate dir:normal angle:ahAngle*0.5]*[shift ~z] e]--rev--cycle]
27                &
28                [Graphics..fill [[shift z]*[Geometry3D..rotate dir:normal angle:ahAngle*0.5]*[shift ~z] e]--[Geometry..reverse [[shift z]*[Geometry3D..rotate dir:normal angle: ~ahAngle*0.5]*[shift ~z] e]]--cycle]
29       cut: 0.8*[Numeric..Math..cos ahAngle*0.5]*theLength
30     <)
31   }