%%HP: T(3)A(D)F(.);
DIR
  KREIS
  \<< RECT
    IF DEPTH 3. \>=
    THEN 'P3' STO
'P2' STO 'P1' STO
    END
    IF 'P1' VTYPE 3.
== 'P1' VTYPE 29. ==
OR 'P2' VTYPE 3. ==
'P2' VTYPE 29. == OR
AND 'P3' VTYPE 3. ==
'P3' VTYPE 29. == OR
AND
    THEN P2 P1 - P3
P2 - CROSS ABS
      IF 0. \=/
      THEN P3 P2 -
'L2' STO P2 P1 - 'L1'
STO P3 P1 - P2 P1 -
DOT NEG L1 L2 CROSS
V\-> SWAP DROP SWAP
DROP / 2. / L2 V\->
SWAP NEG \->V2 * P3 P2
+ 2. / + 'M' STO M P1
- ABS 'R' STO M P2 -
L2 2. / - 'N2' STO M
P1 - L1 2. / - 'N1'
STO L1 L2 DOT L1 ABS
/ L2 ABS / ACOS '\Gg'
STO M P3 - M P2 - DOT
R / R / ACOS '\Ga2' STO
M P2 - M P1 - DOT R /
R / ACOS '\Ga1' STO
-17. FS? -18. FS? \->
f17 f18
        \<<
          CASE 'f17==0.
AND f18==0.'
            THEN \Ga1
D\->R \Ga2 D\->R
            END 'f17
==0. AND f18==1.'
            THEN \Ga1
.9 * D\->R \Ga2 .9 * D\->R
            END 'f17
==1.'
            THEN \Ga1
\Ga2
            END
          END
        \>> R * 'b2'
STO R * 'b1' STO
"Kreisberechnung
 aus 3 Punkten:
 P1 = "
P1 \->STR + "
 P2 = " +
P2 \->STR + "
 P3 = " +
P3 \->STR +
"

Ergebnisse siehe Men\252!"
+ CLLCD 1. DISP 0.
WAIT DROP
        \<< { LOE b1 b2
\Ga1 \Ga2 \Gg N1 N2 R M L1
L2 } PURGE
        \>> 'LOE' STO
      ELSE 4000. .1
BEEP
"P1 P2 P3
 liegen auf
 einer Geraden!
 Berechnung
  nicht m\246glich!"
MSGBOX
      END
    ELSE
"Kreisbogenberechnung
       aus 3 Punkten:
Koordinaten der Punkte
 P1 P2 P3 als [x y]
 in Stack eingeben
oder P1 P2 P3 im
 Men\252 berichtigen!"
4000. .1 BEEP 1.
CLLCD DISP 0. WAIT
DROP
    END
    IF 'P1' VTYPE -1.
\=/
    THEN
      \<< { P1 P2 P3
LOEP } PURGE
      \>> 'LOEP' STO
    END
  \>>
  KINFO
  \<<
"Info Kreisberechnung:
L1=P1\->P2  L2=P2\->P3
M=Mittelpunktskoord.
R = Radius
N1,N2 = Lote L1\->M,L2\->M
\Ga1=\<), b1=Bogen (P1,P2)
\Gg = \<)(N1,N2)=\<)(L1,L2)"
CLLCD 1. DISP 0. WAIT
DROP
  \>>
  SEGMENT
  \<< STD
    IF DEPTH 2. \>=
    THEN
      \<< { s h r \Ga F b
LOES } PURGE
      \>> 'LOES' STO
DEG 's' STO 'h' STO
      IF 'h\<=0.'
      THEN 1000. .1
BEEP 500. .2 BEEP
"h = 0
ist unzul\228ssig!"
MSGBOX
      ELSE h SQ s SQ
4. / + 2. / h / 'r'
STO 1. h r / - DUP
        IF -1. <
        THEN DROP -1.
        END DUP
        IF 1. >
        THEN DROP 1.
        END ACOS 2. *
'\Ga' STO \Ga \pi * 180. /
r SQ 2. / * r h - s *
2. / - 'F' STO \Ga \pi *
r * 180. / 'b' STO
CLLCD
"Kreis-Segment
h = "
h \->STR + " m
s = " +
s \->STR + " m
r = " +
r \->STR + " m
\Ga = " +
\Ga \->STR + "\^o
F = " + F
\->STR + " m\178
b = " + b
\->STR + " m" + 1. DISP
-1. WAIT DROP
      END
    ELSE 4000. .05
BEEP
"Kreis-Segment
 H\246he  h  [m]
 Sehne s  [m]
       in Stack
       eingeben"
MSGBOX
    END
  \>>
  SEGBILD
  \<<
GROB 131 64 00000000000000000000000000000000000000000000000000000000000004000000000000200000000000000000000400000000000020000000000000000000040000000000002000000000C30000000004000000000008FFFFFFFFFF28FFFFFFFFFF1000000000002000000000C1000000000400000000000020000000000200000000040000000800002000000000E100000000040000000800002000000000000000000004000000080000200000000080000000000400000008000020000000008000000000040000008FFFFFFFFF30000FFF700000000400000008000020000008F0808F000000040000000800002000000700800070000004000000080000200000E000800083000004000000080000200008100080000C00000400000008000020000700008000007000040000000800002000800000800000800004000000080000200060000080000003000400000000000020081000008000000C0004000000020000200400000080000000100400000002000020020000008000000020040000000E1000208100000080000000C0040000000220002040000000800000000104000000022000202000000080000000020400000002200020100000008000000004040000000220002800000000800000000804000000000000240000000080000000001400000008000022000000008000000000240000000800002100000000800000000044000000080000A000000000800000000084000000080000A000000000800000000084000000080000600000000080000000000500000008000020000000008000000000060000008FFFF1FFFFFFFFFFFFFFFFFFFFF7000000080000C0000000008000000000030000000800000100000000800000000080000000000000060000000080000000006000000000000008000000008000000000100000000000000030000000800000000C00000000000000004000000080000000020000000000000000810000008000000081000000000000000002000000800000006000000000000000000C00000080000000100000000000000000001000008000000C000000000000000000006000008000000200000000000000000000800000800000010000000000000000000003000080000000000000000000000000000400008000000000000000000000000000081000800000000000000000000000000000200080008E000000000000000000000000C000800081000000000000000000000000010080008000000000000000000000000006008000A000000000000000000000000008008008900000000000004A9BC0CEC5479E2080060000000000000049A820222C61B440800100000000000000C89B4E4EA557F48180C0000000