summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/dvips/euclide/pst-eucl.pro
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/dvips/euclide/pst-eucl.pro')
-rw-r--r--Master/texmf-dist/dvips/euclide/pst-eucl.pro112
1 files changed, 112 insertions, 0 deletions
diff --git a/Master/texmf-dist/dvips/euclide/pst-eucl.pro b/Master/texmf-dist/dvips/euclide/pst-eucl.pro
new file mode 100644
index 00000000000..f453f20437c
--- /dev/null
+++ b/Master/texmf-dist/dvips/euclide/pst-eucl.pro
@@ -0,0 +1,112 @@
+%!
+% PostScript prologue for pst-eucl.tex.
+% Version 2001, 2001/12/09
+% For distribution, see pstricks.tex.
+%
+/tx@EcldDict 400 dict def tx@EcldDict begin
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Pi
+/Pi 3.14159265359 def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% e
+/E 2.718281828459045 def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x -> true (if |x| < 1E-10)
+/ZeroEq { abs 1E-10 lt } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x1 y1 x2 y2 -> a b c (ax+by+c=0)
+/EqDr {
+ 4 copy 3 -1 roll sub 7 1 roll exch sub 5 1 roll 4 -1 roll
+ mul 3 1 roll mul exch sub } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% orthogonal projection of M1 onto (OM2)
+%% x1 y1 x2 y2 -> x3 y3
+/Project {
+ 2 copy dup mul exch dup mul add 5 1 roll 2 copy 5 -1 roll mul exch
+ 5 -1 roll mul add 4 -1 roll div dup 4 -1 roll mul exch 3 -1 roll mul
+} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% a b c (ax2+bx+c=0) -> x1 y1
+/SolvTrin {
+ /c exch def /b exch def /a exch def
+ b dup mul a c mul 4 mul sub dup 0 lt
+ { pop 0 0 } %% no solutions
+ {sqrt dup b neg add a 2 mul div exch b add neg 2 a mul div }
+ ifelse } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x1 y1 x2 y2 -> Dist
+/ABDist { 3 -1 roll sub dup mul 3 1 roll sub dup mul add sqrt } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x1 y1 x2 y2 -> x1-x2 y1-y2
+/ABVect { 3 -1 roll exch sub 3 1 roll sub exch } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x1 y1 x2 y2 x3 y3 x4 y4 -> x y
+/InterLines {
+ EqDr /D1c exch def /D1b exch def /D1a exch def
+ EqDr /D2c exch def /D2b exch def /D2a exch def
+ D1a D2b mul D1b D2a mul sub dup ZeroEq
+ { pop pop pop 0 0 }
+ {
+ /Det exch def
+ D1b D2c mul D1c D2b mul sub Det div
+ D1a D2c mul D2a D1c mul sub Det div
+ }
+ ifelse } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% a b c R -> x1 y1 x2 y2
+/InterLineCircle {
+ /CR exch def /Dc exch def /Db exch def /Da exch def
+ Db Da dup ZeroEq { pop Dc dup ZeroEq { pop 1 } if } if div abs
+ 0.0005 lt { InterLineCirclebnull } { InterLineCircleGal }
+ ifelse
+ %%dup 3 index lt { 4 2 roll } if
+ } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% case where the line is parallel to (oy)
+/InterLineCirclebnull {
+ Dc Da div neg dup dup mul CR dup mul exch sub dup
+ 0 lt
+ { pop pop 0 0 0 0 } { sqrt dup 3 1 roll exch dup 4 1 roll exch neg }
+ ifelse } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% general case
+/InterLineCircleGal {
+ Da dup mul Db dup mul add -2 Dc mul Da mul Dc dup mul CR dup mul Db dup
+ mul mul sub SolvTrin dup neg exch Da Db div mul Dc Db
+ div exch sub 3 -1 roll
+ dup neg exch Da Db div mul Dc Db div exch sub
+} bind def
+/Glbx 0 def /Glby 0 def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% R R' OO' -> x1 y1 x2 y2
+/InterCircles {
+ /OOP exch def /CRP exch def /CR exch def
+ OOP dup mul CRP dup mul sub CR dup mul add OOP div 2 div
+ dup dup mul CR dup mul exch sub dup
+ 0 lt { pop pop 0 0 0 0 } { sqrt 2 copy neg } ifelse
+} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x y theta -> x' y' (rotation of theta)
+/Rotate {
+ dup sin /sintheta exch def cos /costheta exch def /y exch def /x exch def
+ x costheta mul y sintheta mul sub
+ y costheta mul x sintheta mul add
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% N -> x y
+/GetNode {
+ tx@NodeDict begin
+ tx@NodeDict 1 index known { load GetCenter } { pop 0 0 } ifelse
+ end
+} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x -> ch(x)
+/ch { dup Ex exch neg Ex add 2 div } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x -> sh(x)
+/sh { dup Ex exch neg Ex sub 2 div } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% x -> e^(x)
+/Ex { E exch exp } bind def
+end
+% END ps-euclide.pro