summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2017-09-04 09:45:51 +0900
committerNorbert Preining <norbert@preining.info>2017-09-04 09:45:51 +0900
commit138f77fe71e43adc24ecb030d73df81cc5c4eb7e (patch)
treecd2d906c634149bbecd2f4bad3d540c16b23befa
parent37bfdbee2c91bab6f0abd54503a0b9c669c9109e (diff)
add ketpic
-rw-r--r--texmf-dist/doc/support/ketpic/CindyJS/Cindy.js781
-rw-r--r--texmf-dist/doc/support/ketpic/CindyJS/CindyJS.css121
-rw-r--r--texmf-dist/doc/support/ketpic/LICENSE14
-rw-r--r--texmf-dist/doc/support/ketpic/TODO5
-rw-r--r--texmf-dist/doc/support/ketpic/ketjava/KetCindyPlugin.jarbin0 -> 156071 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/KeTCindyReferenceJ.pdfbin0 -> 2126809 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/helpbuttonJ.pdfbin0 -> 216362 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/helpbuttonsE.pdfbin0 -> 95209 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/helplist3dJ.pdfbin0 -> 46132 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/helplistJ.pdfbin0 -> 92358 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/referencesci5_1_1J.pdfbin0 -> 237055 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/refketlayer20161211J.pdfbin0 -> 35211 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/refketpic161211J.pdfbin0 -> 12499 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketmanual/refketslide161211J.pdfbin0 -> 10095 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figure.cdybin0 -> 5421 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figurepdf.cdybin0 -> 5406 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0102figure2.cdybin0 -> 5359 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0103polygon.cdybin0 -> 4843 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0104shade.cdybin0 -> 5632 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0105vector.cdybin0 -> 4997 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0106bowhatch.cdybin0 -> 5675 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0107hyperbolahatch.cdybin0 -> 4292 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0108cycloid.cdybin0 -> 4273 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0109epitrochoid.cdybin0 -> 4410 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0110hypotrochoid.cdybin0 -> 4405 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201basic.cdybin0 -> 4175 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201graph.cdybin0 -> 4132 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph1.cdybin0 -> 4529 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph2.cdybin0 -> 4415 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203ellipse.cdybin0 -> 4224 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203graph2.cdybin0 -> 4501 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204graph3.cdybin0 -> 4550 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204parabola.cdybin0 -> 4207 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205coniccurve.cdybin0 -> 4304 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205hyperbola.cdybin0 -> 4295 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0206defexp.cdybin0 -> 5220 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0207envelope.cdybin0 -> 4511 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0208intersecthatch.cdybin0 -> 3988 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0209diffeq.cdybin0 -> 3944 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0210diffeq2.cdybin0 -> 5778 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0211plotdataS.cdybin0 -> 3943 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0212implicit.cdybin0 -> 4056 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0213implicithatch.cdybin0 -> 3916 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0301table.cdybin0 -> 5274 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2.cdybin0 -> 4095 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2line.cdybin0 -> 4052 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0303papersquared.cdybin0 -> 4165 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0304graphforincanddec.cdybin0 -> 3958 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0305incanddec.cdybin0 -> 5635 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/dogwalk.pngbin0 -> 118714 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/heart.pngbin0 -> 66003 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/mtfuji.pngbin0 -> 9171 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0401bezierbasic.cdybin0 -> 6480 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0402bezier2.cdybin0 -> 6076 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0403bezierspline.cdybin0 -> 7620 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0404mtfuji.cdybin0 -> 6300 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0405dogwalk.cdybin0 -> 72424 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0406heart.cdybin0 -> 82065 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/CindyScriptset.txt17
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501basic.cdybin0 -> 5911 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501plane.cdybin0 -> 8208 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0502spacecurve.cdybin0 -> 5238 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0503perp.cdybin0 -> 6073 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0504embed.cdybin0 -> 6125 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0505bezier3d.cdybin0 -> 9631 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0506embedhatch.cdybin0 -> 6174 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0507polyhedron.cdybin0 -> 6650 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0508concatobj.cdybin0 -> 8327 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05091tetra.cdybin0 -> 6792 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05092cubiccut.cdybin0 -> 11178 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05093cubiccut2.cdybin0 -> 8509 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/CindyScriptset.txt17
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0601cycloid.cdybin0 -> 4324 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0602diffeq.cdybin0 -> 4820 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0603envelope.cdybin0 -> 4223 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0604diffeq2.cdybin0 -> 4474 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0605cycloid2.cdybin0 -> 4702 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0606epitrochoid.cdybin0 -> 4853 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0607hypotrochoid.cdybin0 -> 4862 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0608cycloid3.cdybin0 -> 4759 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/animpointoncircle.tex54
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.pdfbin0 -> 28774 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.txt8
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paraall.sce13
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paracrdr.sce8
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paramain.tex18
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animateall.sce13
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatecrdr.sce9
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatemain.tex19
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationall.sce13
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationcrdr.sce9
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationmain.tex18
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.sce42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.tex105
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.aux1
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.log195
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.pdfbin0 -> 6180 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.tex16
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/kc.sh4
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/all.sce1130
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.tex89
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.tex90
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.tex89
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.tex90
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.tex89
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.tex90
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.tex90
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.tex91
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.sce56
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.tex88
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/resultS.txt1
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve.tex41
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/all.sce942
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.tex41
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.tex41
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.tex41
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.tex41
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.sce43
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.tex42
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0.tex11
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.aux1
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.log234
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.pdfbin0 -> 5287 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.tex17
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide2.tex11
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide3.tex11
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseJ.txt1
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseslideJ.txt1
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/kc.sh7
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.aux1
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.cdybin0 -> 5172 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.log240
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.pdfbin0 -> 14672 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.tex83
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.txt23
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.cdybin0 -> 4735 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.txt20
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.cdybin0 -> 5242 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.txt32
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.aux74
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.cdybin0 -> 5547 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.log704
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.out0
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.pdfbin0 -> 163384 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.tex1114
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.txt13
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.aux55
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.cdybin0 -> 4631 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.log628
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.out0
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.pdfbin0 -> 125701 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.tex871
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.txt71
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.aux23
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.cdybin0 -> 5501 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.log819
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.out0
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.pdfbin0 -> 57442 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.tex72
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.txt12
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0801plotR.cdybin0 -> 4000 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0802plotR2.cdybin0 -> 5309 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0803boxplot.cdybin0 -> 4192 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0804histplot.cdybin0 -> 4274 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0805random.cdybin0 -> 3865 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0806dataframe.cdybin0 -> 3991 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0807timecount.cdybin0 -> 3982 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0808ttest.cdybin0 -> 3971 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0901parabolic.cdybin0 -> 5299 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0902cone.cdybin0 -> 5325 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0903saddle.cdybin0 -> 5254 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0904sphere.cdybin0 -> 5286 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0905wireframe.cdybin0 -> 5310 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0906intersectcrvsf.cdybin0 -> 5370 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0907multisurfaces.cdybin0 -> 5369 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0908conecut.cdybin0 -> 7602 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0909totaldiff.cdybin0 -> 6178 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1000list.cdybin0 -> 3871 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1001basic.cdybin0 -> 4095 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1002equation.cdybin0 -> 3928 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1003trig.cdybin0 -> 3964 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1004calcby.cdybin0 -> 4147 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1005diffint.cdybin0 -> 3905 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1006calculus.cdybin0 -> 3989 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1007linalg.cdybin0 -> 4202 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1008idtable.cdybin0 -> 4280 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1009diffeq.cdybin0 -> 4156 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier.cdybin0 -> 4889 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier2.cdybin0 -> 5240 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier3.cdybin0 -> 5028 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop.cdybin0 -> 3925 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop2.cdybin0 -> 5161 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1012fourierpw.cdybin0 -> 5130 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1013for.cdybin0 -> 3962 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1014incdec2.cdybin0 -> 4466 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1015primenumber.cdybin0 -> 4047 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1100list.cdybin0 -> 3861 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1101calculator1.cdybin0 -> 3940 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1102calculator2.cdybin0 -> 3931 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1103calcby.cdybin0 -> 3949 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1104diff.cdybin0 -> 3957 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fint101.cdybin0 -> 3992 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fzero109.cdybin0 -> 3937 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1106fmmx110.cdybin0 -> 3926 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1110integrate.cdybin0 -> 4067 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1111grobner1.cdybin0 -> 3992 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1112residue.cdybin0 -> 4249 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate.cdybin0 -> 4144 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate2.cdybin0 -> 3880 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202calcby.cdybin0 -> 3143 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202equations.cdybin0 -> 3215 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1301basic.cdybin0 -> 5498 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1303objparts.cdybin0 -> 5688 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1304symbol.cdybin0 -> 5497 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1305hyperpara.cdybin0 -> 5592 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1306poly.cdybin0 -> 7077 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1307poly2.cdybin0 -> 8332 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1308discont.cdybin0 -> 5909 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1309discont2.cdybin0 -> 6077 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1310totaldiff.cdybin0 -> 4709 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1311plate.cdybin0 -> 6804 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1312plane.cdybin0 -> 7447 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1313changescale.cdybin0 -> 8310 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1314knot.cdybin0 -> 28435 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/errormessageR.txt0
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/kc.sh4
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/resultR.txt1
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1401csvprocessing.cdybin0 -> 4026 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1402copypaste.cdybin0 -> 4492 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1403maketableJ.cdybin0 -> 7626 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample1.csv10
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample2.csv10
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1501mant.cdybin0 -> 5311 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1502torus.cdybin0 -> 5309 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1503parabola.cdybin0 -> 5465 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1504conecut.cdybin0 -> 5430 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1505skeleton.cdybin0 -> 5403 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1506skeleton2.cdybin0 -> 5515 bytes
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basic.cdybin0 -> 4642 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basicketcindy.html6491
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2.cdybin0 -> 5956 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2ketcindy.html6502
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamow.cdybin0 -> 4499 bytes
-rw-r--r--texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamowketcindy.html6494
-rwxr-xr-xtexmf-dist/doc/support/ketpic/ketsample/samplesJS/kc.sh0
-rw-r--r--texmf-dist/doc/support/ketpic/source/ScriptDraw.txt19
-rw-r--r--texmf-dist/doc/support/ketpic/source/ScriptInitialization.txt15
-rw-r--r--texmf-dist/doc/support/ketpic/source/ScriptInitializationdirect.txt10
-rw-r--r--texmf-dist/doc/support/ketpic/source/ScriptKeytyped.txt134
-rwxr-xr-xtexmf-dist/scripts/ketpic/allbuttons.cdybin0 -> 4706 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/Rtutorial/t4sample1.csv1
-rw-r--r--texmf-dist/scripts/ketpic/data/Rtutorial/t4sample2.csv74
-rw-r--r--texmf-dist/scripts/ketpic/data/Rtutorial/t6sample.csv21
-rw-r--r--texmf-dist/scripts/ketpic/data/Rtutorial/t7sample.csv21
-rw-r--r--texmf-dist/scripts/ketpic/data/Rtutorial/t8sampledistrtest.csv201
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/0Small.pngbin0 -> 44733 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/0Smalla-h.pngbin0 -> 53016 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/0Smalli-o.pngbin0 -> 50904 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/0Smallp-w.pngbin0 -> 50873 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/0Smallxyz.pngbin0 -> 25488 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/nsi.cdybin0 -> 150809 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/nsi.txt29
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/pcr.cdybin0 -> 17929 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/pcr.txt26
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/qcr.cdybin0 -> 17298 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/qcr.txt23
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/rcr.cdybin0 -> 18491 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/rcr.txt34
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/tsi.cdybin0 -> 149969 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/tsi.txt23
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/xsi.cdybin0 -> 150258 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/xsi.txt26
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/ysi.cdybin0 -> 150465 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/ysi.txt26
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/zsi.cdybin0 -> 150287 bytes
-rw-r--r--texmf-dist/scripts/ketpic/data/fontF/zsi.txt28
-rw-r--r--texmf-dist/scripts/ketpic/data/js/Cindy.js757
-rw-r--r--texmf-dist/scripts/ketpic/data/js/CindyJS.css121
-rw-r--r--texmf-dist/scripts/ketpic/data/js/ketcindylib.txt6389
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(kobayashi-suzuki).txt116
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(mitani).txt7
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a03.obj14
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a04.obj18
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a05.obj22
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a06.obj26
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a07.obj30
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a08.obj34
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a09.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/a10.obj42
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n01.obj10
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n02.obj12
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n03.obj17
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n04.obj22
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n05.obj27
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n06.obj37
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n07.obj14
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n08.obj18
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n09.obj22
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n10.obj22
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n11.obj27
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n12.obj11
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n13.obj17
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n14.obj17
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n15.obj22
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n16.obj27
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n17.obj26
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n18.obj29
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n19.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n20.obj47
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n21.obj57
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n22.obj35
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n23.obj46
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n24.obj57
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n25.obj67
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n26.obj16
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n27.obj26
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n28.obj34
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n29.obj34
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n30.obj42
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n31.obj42
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n32.obj52
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n33.obj52
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n34.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n35.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n36.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n37.obj50
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n38.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n39.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n40.obj72
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n41.obj72
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n42.obj82
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n43.obj82
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44L.obj44
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44R.obj44
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45L.obj58
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45R.obj58
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46L.obj72
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46R.obj72
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47L.obj82
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47R.obj82
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48L.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48R.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n49.obj15
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n50.obj19
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n51.obj23
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n52.obj21
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n53.obj25
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n54.obj24
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n55.obj28
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n56.obj28
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n57.obj32
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n58.obj37
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n59.obj42
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n60.obj42
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n61.obj47
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n62.obj22
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n63.obj17
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n64.obj20
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n65.obj29
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n66.obj50
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n67.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n68.obj107
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n69.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n70.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n71.obj137
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n72.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n73.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n74.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n75.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n76.obj107
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n77.obj107
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n78.obj107
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n79.obj107
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n80.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n81.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n82.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n83.obj77
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n84.obj20
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n85.obj42
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n86.obj24
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n87.obj28
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n88.obj30
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n89.obj35
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n90.obj40
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n91.obj28
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/n92.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p03.obj11
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p04.obj14
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p05.obj17
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p06.obj20
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p07.obj23
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p08.obj26
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p09.obj29
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/p10.obj32
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/r01.obj8
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/r02.obj14
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/r03.obj14
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/r04.obj32
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/r05.obj32
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s01.obj26
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s02.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s03.obj20
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s04.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s05.obj38
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s06.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s07.obj92
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s08.obj50
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s09.obj122
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s10.obj74
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s11.obj182
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12L.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12R.obj62
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13L.obj152
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13R.obj152
-rw-r--r--texmf-dist/scripts/ketpic/data/polyhedrons_obj/æ•´é¢å‡¸å¤šé¢ä½“データ.pdfbin0 -> 77577 bytes
-rw-r--r--texmf-dist/scripts/ketpic/dirhead.txt1
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylib3d.cs4517
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpE.txt29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpJ.txt45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylib3dlog.txt295
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1.cs4874
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1log.txt647
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2.cs5135
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2log.txt293
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpE.txt116
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpJ.txt140
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibmv.cs812
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpE.txt4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpJ.txt4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibmvlog.txt66
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindylibout.cs5359
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketcindyliboutlog.txt325
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Addcounter.binbin0 -> 648 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Anglemark.binbin0 -> 4128 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowdata.binbin0 -> 5420 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowhead.binbin0 -> 13408 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowheaddata.binbin0 -> 10624 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowline.binbin0 -> 6168 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assign.binbin0 -> 20540 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignadd.binbin0 -> 1104 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignrep.binbin0 -> 1808 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignset.binbin0 -> 436 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Beginpicture.binbin0 -> 216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezier.binbin0 -> 3792 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezierpt.binbin0 -> 4152 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderHiddenData.binbin0 -> 328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderPt.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderparadata.binbin0 -> 16600 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderpersdata.binbin0 -> 16648 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderrawdata.binbin0 -> 10016 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowdata.binbin0 -> 6416 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowmiddle.binbin0 -> 7776 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowname.binbin0 -> 3972 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bownamerot.binbin0 -> 7136 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcHeight.binbin0 -> 3852 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcWidth.binbin0 -> 2652 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Calcfun.binbin0 -> 820 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameraCurve.binbin0 -> 2320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameracoordCurve.binbin0 -> 5852 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpara.binbin0 -> 2572 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpers.binbin0 -> 5688 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Circledata.binbin0 -> 4012 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Clipindomain.binbin0 -> 6992 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closefile.binbin0 -> 1692 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closeobj.binbin0 -> 612 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepar.binbin0 -> 1212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closephr.binbin0 -> 980 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepicture.binbin0 -> 1776 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Connectseg.binbin0 -> 10104 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crossprod.binbin0 -> 1956 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfHiddenData.binbin0 -> 336 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfparadata.binbin0 -> 5856 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfpersdata.binbin0 -> 5860 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvonsfHiddenData.binbin0 -> 332 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfparadata.binbin0 -> 12948 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfpersdata.binbin0 -> 12716 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvsfHiddenData.binbin0 -> 324 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfparadata.binbin0 -> 9760 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfpersdata.binbin0 -> 9760 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspData.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspPt.binbin0 -> 288 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspSplitPt.binbin0 -> 308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpara.binbin0 -> 23320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpers.binbin0 -> 23352 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cutsf2d.binbin0 -> 1420 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dashline.binbin0 -> 3500 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dataindex.binbin0 -> 1844 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Definecolor.binbin0 -> 2124 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Deqplot.binbin0 -> 27240 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Derivative.binbin0 -> 6444 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Diagcelldata.binbin0 -> 2012 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividegraphics.binbin0 -> 1728 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividetable.binbin0 -> 944 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Doscaling.binbin0 -> 1564 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotfilldata.binbin0 -> 26872 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotprod.binbin0 -> 276 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dottedline.binbin0 -> 14728 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dropnumlistcrv.binbin0 -> 3216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Droppoint.binbin0 -> 2820 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwline.binbin0 -> 6912 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwpt.binbin0 -> 13948 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwxy.binbin0 -> 3316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Embed.binbin0 -> 4060 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Enclosing.binbin0 -> 2516 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/EnclosingS.binbin0 -> 14244 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Endpicture.binbin0 -> 572 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepara.binbin0 -> 11336 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepers.binbin0 -> 11312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Execmd.binbin0 -> 480 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Expr.binbin0 -> 10616 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Exprrot.binbin0 -> 4380 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Faceremovaldata.binbin0 -> 8964 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Facesdata.binbin0 -> 16256 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Findcell.binbin0 -> 15652 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Flattenlist.binbin0 -> 1464 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fontsize.binbin0 -> 4028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriercoeff.binbin0 -> 2080 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/FouriercoeffL.binbin0 -> 1952 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriersum.binbin0 -> 2180 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fracform.binbin0 -> 1720 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Framedata.binbin0 -> 5292 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fullformfunc.binbin0 -> 12768 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gaiseki.binbin0 -> 1804 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Getcounter.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gettrace.binbin0 -> 300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hatchdata.binbin0 -> 19876 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hexahedrondata.binbin0 -> 2972 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/HiddenWireData.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Htickmark.binbin0 -> 16940 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ImplicitData.binbin0 -> 312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Implicitplot.binbin0 -> 9664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/InWindow.binbin0 -> 1440 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Initangle.binbin0 -> 472 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Integrate.binbin0 -> 2248 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvs.binbin0 -> 3080 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectcrvsPp.binbin0 -> 12372 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvsf.binbin0 -> 5064 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectlines.binbin0 -> 3840 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectselfPp.binbin0 -> 12584 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invdashline.binbin0 -> 3604 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invert.binbin0 -> 384 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invparapt.binbin0 -> 5932 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invperspt.binbin0 -> 8520 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joincrvs.binbin0 -> 5604 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joingraphics.binbin0 -> 2476 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ketinit.binbin0 -> 5160 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kouten.binbin0 -> 4212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/KoutenList.binbin0 -> 6844 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Koutenseg.binbin0 -> 16424 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukannozoku.binbin0 -> 4228 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukeiwake.binbin0 -> 9200 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyorihensuu.binbin0 -> 2648 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyoukai.binbin0 -> 18292 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letter.binbin0 -> 10560 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letterrot.binbin0 -> 4324 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Lineplot.binbin0 -> 4028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Listplot.binbin0 -> 1884 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeBowdata.binbin0 -> 8068 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeCurves.binbin0 -> 6312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakecutbycrvL.binbin0 -> 4576 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makehasen.binbin0 -> 17088 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeliststr.binbin0 -> 3736 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makesfcutoffdata.binbin0 -> 53024 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeshasen.binbin0 -> 4688 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletondata.binbin0 -> 21092 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletonpersdata.binbin0 -> 23944 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makevaltable.binbin0 -> 7988 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeveLfaceL.binbin0 -> 7812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makexybdy.binbin0 -> 16852 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mawarikomi.binbin0 -> 3220 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MeetWindow.binbin0 -> 12032 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Meetpoints.binbin0 -> 29828 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Member.binbin0 -> 1192 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi.binbin0 -> 27248 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi2.binbin0 -> 22316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mix.binbin0 -> 712 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixL.binbin0 -> 712 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixS.binbin0 -> 712 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixadd.binbin0 -> 1348 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixdisp.binbin0 -> 676 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixjoin.binbin0 -> 1764 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixlength.binbin0 -> 756 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixmake.binbin0 -> 684 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixop.binbin0 -> 1088 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixsub.binbin0 -> 812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixtype.binbin0 -> 876 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naigai.binbin0 -> 1828 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naiseki.binbin0 -> 276 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nearestpt.binbin0 -> 7004 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Newlength.binbin0 -> 616 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara.binbin0 -> 32960 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara2.binbin0 -> 19056 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers.binbin0 -> 32456 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers2.binbin0 -> 18916 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Numptcrv.binbin0 -> 252 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objcurve.binbin0 -> 14664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objjoin.binbin0 -> 720 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objname.binbin0 -> 980 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolygon.binbin0 -> 7580 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolyhedron.binbin0 -> 2684 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objrecs.binbin0 -> 12672 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsurf.binbin0 -> 17328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsymb.binbin0 -> 624 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objthicksurf.binbin0 -> 17228 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Op.binbin0 -> 2636 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openfile.binbin0 -> 9316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openobj.binbin0 -> 2696 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpar.binbin0 -> 2612 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openphr.binbin0 -> 888 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpicture.binbin0 -> 11128 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovalbox.binbin0 -> 5300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovaldata.binbin0 -> 4812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramark.binbin0 -> 2400 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ParamonCurve.binbin0 -> 2128 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramoncrv.binbin0 -> 3512 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramplot.binbin0 -> 14900 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Parapt.binbin0 -> 1820 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv.binbin0 -> 5492 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv3.binbin0 -> 4300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partframe.binbin0 -> 4232 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PartitionPt.binbin0 -> 308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partitionseg.binbin0 -> 12336 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Perspt.binbin0 -> 5236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhFaceL.binbin0 -> 388 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhHiddenData.binbin0 -> 312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhVertexL.binbin0 -> 388 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutdata.binbin0 -> 22004 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutoffdata.binbin0 -> 23048 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phidegree.binbin0 -> 356 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phparadata.binbin0 -> 380 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phpersdata.binbin0 -> 380 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawparadata.binbin0 -> 392 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawpersdata.binbin0 -> 368 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsparadata.binbin0 -> 264 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phspersdata.binbin0 -> 264 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawparadata.binbin0 -> 276 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawpersdata.binbin0 -> 252 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Plotdata.binbin0 -> 14492 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointdata.binbin0 -> 1996 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PointonCurve.binbin0 -> 1652 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointoncrv.binbin0 -> 2304 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Powersum.binbin0 -> 1924 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Prime.binbin0 -> 600 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Printobjstr.binbin0 -> 736 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjCurve.binbin0 -> 3788 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjcoordCurve.binbin0 -> 2892 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpara.binbin0 -> 3628 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpers.binbin0 -> 3628 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptcrv.binbin0 -> 284 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptend.binbin0 -> 328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PthiddenQ.binbin0 -> 38656 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptne.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptnw.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptse.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptstart.binbin0 -> 236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptsw.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcell.binbin0 -> 6936 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcirmark.binbin0 -> 1776 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoL.binbin0 -> 6668 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLexpr.binbin0 -> 6860 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLstr.binbin0 -> 3204 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putdashmark.binbin0 -> 1740 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrecmark.binbin0 -> 1640 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrow.binbin0 -> 3988 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowexpr.binbin0 -> 4180 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowstr.binbin0 -> 3204 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Puttrace.binbin0 -> 300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ratiocmyk.binbin0 -> 14664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadOutData.binbin0 -> 8392 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadfromCindy.binbin0 -> 2660 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Readtextdata.binbin0 -> 15532 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Reflectdata.binbin0 -> 7140 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rmmember.binbin0 -> 1732 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3data.binbin0 -> 3696 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3pt.binbin0 -> 18700 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotatedata.binbin0 -> 4212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Roundstr.binbin0 -> 812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Scaledata.binbin0 -> 3696 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sectionview.binbin0 -> 1708 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setangle.binbin0 -> 1484 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setarrow.binbin0 -> 3424 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setax.binbin0 -> 9496 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcolor.binbin0 -> 3212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcounter.binbin0 -> 732 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmark.binbin0 -> 5372 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmarklen.binbin0 -> 1364 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjdecimals.binbin0 -> 724 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjscale.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setorigin.binbin0 -> 804 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpen.binbin0 -> 1308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpers.binbin0 -> 1248 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpt.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setscaling.binbin0 -> 2196 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoL.binbin0 -> 2304 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoR.binbin0 -> 2304 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setunitlen.binbin0 -> 7572 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setversion.binbin0 -> 284 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setwindow.binbin0 -> 5828 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sf3data.binbin0 -> 9872 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdparadata.binbin0 -> 4736 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdpersdata.binbin0 -> 4772 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawparadata.binbin0 -> 3556 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawpersdata.binbin0 -> 3556 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutdata.binbin0 -> 16388 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffparadata.binbin0 -> 932 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffpersdata.binbin0 -> 932 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawparadata.binbin0 -> 920 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawpersdata.binbin0 -> 920 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfparadata.binbin0 -> 1504 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfpersdata.binbin0 -> 1504 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Shade.binbin0 -> 7784 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeleton2data.binbin0 -> 6808 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpara3data.binbin0 -> 5092 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonparadata.binbin0 -> 2896 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpers3data.binbin0 -> 4348 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpersdata.binbin0 -> 2896 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spacecurve.binbin0 -> 9444 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spaceline.binbin0 -> 2412 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Splinedata.binbin0 -> 12656 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Strop.binbin0 -> 1028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Subs.binbin0 -> 2108 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sumfun.binbin0 -> 7688 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symb3data.binbin0 -> 4260 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symbdata.binbin0 -> 7908 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tabledata.binbin0 -> 18164 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texcom.binbin0 -> 2664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texctr.binbin0 -> 1216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texelse.binbin0 -> 292 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texend.binbin0 -> 156 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendfor.binbin0 -> 1480 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendif.binbin0 -> 404 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texfor.binbin0 -> 1544 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texforinit.binbin0 -> 408 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texif.binbin0 -> 1328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texletter.binbin0 -> 4548 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewcmd.binbin0 -> 1972 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewctr.binbin0 -> 1044 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texrenewcmd.binbin0 -> 1980 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texsetctr.binbin0 -> 6440 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texthectr.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvalctr.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvctr.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Thetadegree.binbin0 -> 364 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ThisVersion.binbin0 -> 308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tolist.binbin0 -> 580 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translate3data.binbin0 -> 3620 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translatedata.binbin0 -> 3856 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Trunc.binbin0 -> 508 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Unscaling.binbin0 -> 1508 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa.binbin0 -> 1056 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa2.binbin0 -> 880 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Viewfrom.binbin0 -> 2024 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vtickmark.binbin0 -> 16976 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Windisp.binbin0 -> 13224 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WireHiddenData.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WirePt.binbin0 -> 288 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wireparadata.binbin0 -> 16456 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirepersdata.binbin0 -> 16448 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawparadata.binbin0 -> 11664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawpersdata.binbin0 -> 11664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WriteOutData.binbin0 -> 6748 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writeobjpoint.binbin0 -> 1668 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writetextdata.binbin0 -> 4484 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WritetoCindy.binbin0 -> 5196 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmax.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmin.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzax3data.binbin0 -> 3216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxparaname.binbin0 -> 11368 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxpersname.binbin0 -> 11368 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymax.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymin.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zparapt.binbin0 -> 1300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zperspt.binbin0 -> 3756 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ketcindylibhelpE.txt116
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/names341
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.binbin0 -> 922 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.binbin0 -> 5238 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.sci33
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.binbin0 -> 6737 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.sci58
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.binbin0 -> 16618 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.sci107
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.binbin0 -> 13269 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.sci89
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.binbin0 -> 7643 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.sci57
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.binbin0 -> 27459 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.sci202
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.binbin0 -> 1449 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.binbin0 -> 2609 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.binbin0 -> 703 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.binbin0 -> 324 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.binbin0 -> 5272 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.binbin0 -> 6060 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.binbin0 -> 443 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.binbin0 -> 419 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.binbin0 -> 22449 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.sci121
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.binbin0 -> 22411 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.sci120
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.binbin0 -> 13046 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.sci64
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.binbin0 -> 8338 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.sci45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.binbin0 -> 10457 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.sci53
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.binbin0 -> 5225 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.sci40
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.binbin0 -> 7824 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.sci77
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.binbin0 -> 4360 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.binbin0 -> 3001 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.sci26
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.binbin0 -> 1090 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.binbin0 -> 3257 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.binbin0 -> 7543 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.sci28
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.binbin0 -> 3159 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.binbin0 -> 7165 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.binbin0 -> 5752 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.sci32
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.binbin0 -> 9264 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.sci58
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.binbin0 -> 2182 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.binbin0 -> 767 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.binbin0 -> 1266 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.binbin0 -> 1103 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.binbin0 -> 1991 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.binbin0 -> 14179 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.sci76
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.binbin0 -> 2819 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.binbin0 -> 449 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.binbin0 -> 7742 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.sci49
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.binbin0 -> 7742 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.sci50
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.binbin0 -> 446 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.binbin0 -> 17490 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.sci90
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.binbin0 -> 16797 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.sci86
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.binbin0 -> 440 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.binbin0 -> 12964 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.sci81
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.binbin0 -> 12924 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.sci80
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.binbin0 -> 419 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.binbin0 -> 413 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.binbin0 -> 426 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.binbin0 -> 31919 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.sci179
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.binbin0 -> 31845 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.sci176
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.binbin0 -> 1833 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.binbin0 -> 4784 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.binbin0 -> 2593 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.binbin0 -> 2668 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.sci23
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.binbin0 -> 37476 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci195
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.binbin0 -> 9089 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.sci64
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.binbin0 -> 2752 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.binbin0 -> 2511 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.binbin0 -> 1280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.binbin0 -> 2167 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.binbin0 -> 33511 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.sci186
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.binbin0 -> 454 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.binbin0 -> 19335 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.sci124
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.binbin0 -> 17289 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.sci115
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.binbin0 -> 4450 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.binbin0 -> 4030 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.sci28
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.binbin0 -> 8499 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.sci66
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.binbin0 -> 17128 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.sci142
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.binbin0 -> 4108 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.binbin0 -> 5585 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.binbin0 -> 3330 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.sci23
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.binbin0 -> 17806 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.sci126
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.binbin0 -> 836 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.binbin0 -> 15211 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.sci79
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.binbin0 -> 15184 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.sci77
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.binbin0 -> 721 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.binbin0 -> 12554 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.sci100
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.binbin0 -> 5757 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.binbin0 -> 12460 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.sci78
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.binbin0 -> 12215 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.sci81
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.binbin0 -> 19645 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.sci154
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.binbin0 -> 13219 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.sci88
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.binbin0 -> 20630 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.sci127
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.binbin0 -> 2035 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.binbin0 -> 4895 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.sci54
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.binbin0 -> 2555 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.binbin0 -> 2655 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.binbin0 -> 2809 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.binbin0 -> 2385 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.binbin0 -> 6802 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.binbin0 -> 17186 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.sci79
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.binbin0 -> 2585 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.binbin0 -> 421 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.binbin0 -> 421 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.binbin0 -> 25781 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.sci141
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.binbin0 -> 3973 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.binbin0 -> 437 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.binbin0 -> 21909 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.sci144
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.binbin0 -> 516 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.binbin0 -> 13253 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.sci61
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.binbin0 -> 1826 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.binbin0 -> 750 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.binbin0 -> 3053 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.sci25
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.binbin0 -> 4302 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.binbin0 -> 15887 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.sci101
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.binbin0 -> 6854 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.sci47
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.binbin0 -> 4990 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.binbin0 -> 15552 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.sci95
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.binbin0 -> 4788 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.binbin0 -> 621 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.binbin0 -> 7426 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci50
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.binbin0 -> 10756 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.binbin0 -> 7402 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.sci51
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.binbin0 -> 3408 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.sci26
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.binbin0 -> 8060 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.sci57
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.binbin0 -> 5636 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.binbin0 -> 9114 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.sci51
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.binbin0 -> 20514 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.sci105
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.binbin0 -> 5978 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.sci45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.binbin0 -> 11635 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.sci62
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.binbin0 -> 2900 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.sci30
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.binbin0 -> 24740 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.sci144
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.binbin0 -> 12440 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.sci100
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.binbin0 -> 5653 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.binbin0 -> 5483 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.sci44
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.binbin0 -> 2824 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.binbin0 -> 10906 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.sci49
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.binbin0 -> 8640 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.sci62
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.binbin0 -> 6014 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.sci45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.binbin0 -> 21601 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.sci123
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.binbin0 -> 4911 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.binbin0 -> 68349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.sci345
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.binbin0 -> 6211 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.binbin0 -> 27821 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.sci171
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.binbin0 -> 31439 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.sci188
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.binbin0 -> 10699 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.sci79
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.binbin0 -> 10368 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.sci68
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.binbin0 -> 21856 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.sci111
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.binbin0 -> 3637 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.binbin0 -> 15057 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.sci91
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.binbin0 -> 40156 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.sci169
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.binbin0 -> 1651 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.binbin0 -> 34512 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.sci206
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.binbin0 -> 28313 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.sci186
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.binbin0 -> 1174 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.binbin0 -> 1136 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.binbin0 -> 1135 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.binbin0 -> 2264 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.sci23
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.binbin0 -> 937 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.binbin0 -> 2517 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.binbin0 -> 1260 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.binbin0 -> 1085 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.binbin0 -> 1799 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.binbin0 -> 1280 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.binbin0 -> 1415 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.sci19
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.binbin0 -> 2552 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.binbin0 -> 411 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.binbin0 -> 9290 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.sci53
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.binbin0 -> 771 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.binbin0 -> 42226 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.sci254
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.binbin0 -> 23811 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.sci131
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.binbin0 -> 41591 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.sci253
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.binbin0 -> 23608 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.sci134
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.binbin0 -> 398 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.binbin0 -> 17718 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.sci115
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.binbin0 -> 973 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.binbin0 -> 1206 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.binbin0 -> 10238 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.binbin0 -> 3588 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.sci25
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.binbin0 -> 16478 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.sci87
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.binbin0 -> 22731 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.sci114
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.binbin0 -> 862 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.binbin0 -> 22172 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.sci123
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.binbin0 -> 3732 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.binbin0 -> 13035 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.sci106
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.binbin0 -> 2939 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.sci33
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.binbin0 -> 3258 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.binbin0 -> 1045 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.binbin0 -> 13672 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.sci92
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.binbin0 -> 6676 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.binbin0 -> 6365 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.binbin0 -> 3079 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.binbin0 -> 2839 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.binbin0 -> 4477 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.binbin0 -> 20071 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.sci140
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.binbin0 -> 2390 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.binbin0 -> 6865 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.binbin0 -> 5346 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.binbin0 -> 5465 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.sci27
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.binbin0 -> 428 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.binbin0 -> 15744 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.sci100
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.binbin0 -> 6665 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.binbin0 -> 496 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.binbin0 -> 431 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.binbin0 -> 500 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.binbin0 -> 29830 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.sci173
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.binbin0 -> 30095 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.sci184
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.binbin0 -> 531 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.binbin0 -> 619 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.binbin0 -> 619 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.binbin0 -> 625 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.binbin0 -> 592 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.binbin0 -> 492 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.binbin0 -> 492 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.binbin0 -> 498 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.binbin0 -> 465 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.binbin0 -> 19408 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.sci138
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.binbin0 -> 2896 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.sci25
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.binbin0 -> 2135 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.binbin0 -> 3006 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.binbin0 -> 2642 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.binbin0 -> 948 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.binbin0 -> 849 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.binbin0 -> 5078 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.sci32
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.binbin0 -> 3725 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.binbin0 -> 4932 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.binbin0 -> 4858 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.binbin0 -> 415 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.binbin0 -> 484 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.binbin0 -> 51975 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.sci250
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.binbin0 -> 1729 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.binbin0 -> 1729 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.binbin0 -> 1730 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.binbin0 -> 389 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.binbin0 -> 1699 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.binbin0 -> 9367 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.sci72
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.binbin0 -> 2231 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.binbin0 -> 8400 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.binbin0 -> 8687 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.binbin0 -> 4017 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.binbin0 -> 2122 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.binbin0 -> 2078 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.binbin0 -> 5045 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.binbin0 -> 5332 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.binbin0 -> 4017 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.binbin0 -> 419 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.binbin0 -> 23174 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.sci87
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.binbin0 -> 11262 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.sci92
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.binbin0 -> 3831 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.sci38
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.binbin0 -> 21821 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.sci160
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.binbin0 -> 9990 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.sci51
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.binbin0 -> 2316 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.binbin0 -> 4411 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.sci40
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.binbin0 -> 25211 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.sci75
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.binbin0 -> 5669 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.binbin0 -> 1170 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.binbin0 -> 5149 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.binbin0 -> 2344 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.binbin0 -> 2016 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.binbin0 -> 4137 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.binbin0 -> 13034 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.sci102
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.binbin0 -> 4119 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.binbin0 -> 1023 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.binbin0 -> 4968 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.sci43
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.binbin0 -> 1802 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.binbin0 -> 1028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.binbin0 -> 432 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.binbin0 -> 1056 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.binbin0 -> 1471 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.binbin0 -> 1533 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.sci16
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.binbin0 -> 1607 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.sci16
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.binbin0 -> 3006 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.sci28
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.binbin0 -> 3147 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.binbin0 -> 3069 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.binbin0 -> 10271 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.sci78
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.binbin0 -> 11998 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.sci182
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.binbin0 -> 7533 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.sci44
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.binbin0 -> 13224 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.sci62
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.binbin0 -> 5885 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.binbin0 -> 5938 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.binbin0 -> 4537 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.sci33
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.binbin0 -> 4498 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.binbin0 -> 22872 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.sci105
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.binbin0 -> 1348 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.binbin0 -> 1349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.binbin0 -> 1349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.binbin0 -> 1349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.binbin0 -> 2149 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.binbin0 -> 2149 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.binbin0 -> 9556 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.sci84
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.binbin0 -> 9324 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.sci71
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.binbin0 -> 6935 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.sci48
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.binbin0 -> 4084 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.binbin0 -> 5901 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.binbin0 -> 4038 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.binbin0 -> 12729 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.sci83
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.binbin0 -> 3439 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.sci27
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.binbin0 -> 16665 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.sci108
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.binbin0 -> 1354 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.binbin0 -> 2852 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.binbin0 -> 9947 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.binbin0 -> 5491 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.sci30
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.binbin0 -> 10750 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.sci67
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.binbin0 -> 25828 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.sci130
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.binbin0 -> 3162 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.binbin0 -> 1603 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.binbin0 -> 420 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.binbin0 -> 251 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.binbin0 -> 1781 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.binbin0 -> 546 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.binbin0 -> 1806 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.binbin0 -> 565 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.binbin0 -> 1677 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.sci19
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.binbin0 -> 5621 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.sci44
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.binbin0 -> 2605 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.binbin0 -> 1266 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.binbin0 -> 2609 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.binbin0 -> 8313 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.sci70
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.binbin0 -> 469 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.binbin0 -> 531 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.binbin0 -> 526 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.binbin0 -> 537 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.binbin0 -> 385 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.binbin0 -> 909 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.binbin0 -> 4301 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.binbin0 -> 5248 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.binbin0 -> 728 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.binbin0 -> 2122 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.binbin0 -> 1434 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.binbin0 -> 1292 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.binbin0 -> 2667 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.binbin0 -> 21938 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.sci144
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.binbin0 -> 17429 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.sci110
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.binbin0 -> 437 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.binbin0 -> 463 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.binbin0 -> 21470 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.sci120
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.binbin0 -> 21438 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.sci120
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.binbin0 -> 15066 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.sci86
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.binbin0 -> 15066 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.sci86
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.binbin0 -> 8150 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.sci55
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.binbin0 -> 2135 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.binbin0 -> 5610 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.sci47
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.binbin0 -> 6440 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.binbin0 -> 4660 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.binbin0 -> 14997 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.sci71
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.binbin0 -> 15036 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.sci72
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.binbin0 -> 1665 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.binbin0 -> 4894 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/lib344
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/names335
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpic_ltd.Rdatabin0 -> 1322605 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Addcounter.binbin0 -> 648 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Anglemark.binbin0 -> 4128 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowdata.binbin0 -> 5420 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowhead.binbin0 -> 13408 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowheaddata.binbin0 -> 10624 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowline.binbin0 -> 6168 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assign.binbin0 -> 20540 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignadd.binbin0 -> 1104 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignrep.binbin0 -> 1808 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignset.binbin0 -> 436 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Beginpicture.binbin0 -> 216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezier.binbin0 -> 3792 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezierpt.binbin0 -> 4152 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderHiddenData.binbin0 -> 328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderPt.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderparadata.binbin0 -> 16600 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderpersdata.binbin0 -> 16648 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderrawdata.binbin0 -> 10016 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowdata.binbin0 -> 6416 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowmiddle.binbin0 -> 7776 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowname.binbin0 -> 3972 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bownamerot.binbin0 -> 7136 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcHeight.binbin0 -> 3852 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcWidth.binbin0 -> 2652 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Calcfun.binbin0 -> 820 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameraCurve.binbin0 -> 2320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameracoordCurve.binbin0 -> 5852 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpara.binbin0 -> 2572 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpers.binbin0 -> 5688 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Circledata.binbin0 -> 4012 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Clipindomain.binbin0 -> 6992 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closefile.binbin0 -> 1692 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closeobj.binbin0 -> 612 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepar.binbin0 -> 1212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closephr.binbin0 -> 980 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepicture.binbin0 -> 1776 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Connectseg.binbin0 -> 10104 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crossprod.binbin0 -> 1956 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfHiddenData.binbin0 -> 336 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfparadata.binbin0 -> 5856 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfpersdata.binbin0 -> 5860 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvonsfHiddenData.binbin0 -> 332 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfparadata.binbin0 -> 12948 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfpersdata.binbin0 -> 12716 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvsfHiddenData.binbin0 -> 324 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfparadata.binbin0 -> 9760 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfpersdata.binbin0 -> 9760 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspData.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspPt.binbin0 -> 288 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspSplitPt.binbin0 -> 308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpara.binbin0 -> 23320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpers.binbin0 -> 23352 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cutsf2d.binbin0 -> 1420 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dashline.binbin0 -> 3500 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dataindex.binbin0 -> 1844 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Definecolor.binbin0 -> 2124 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Deqplot.binbin0 -> 27240 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Derivative.binbin0 -> 6444 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Diagcelldata.binbin0 -> 2012 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividegraphics.binbin0 -> 1728 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividetable.binbin0 -> 944 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Doscaling.binbin0 -> 1564 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotfilldata.binbin0 -> 26872 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotprod.binbin0 -> 276 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dottedline.binbin0 -> 17676 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dropnumlistcrv.binbin0 -> 3216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Droppoint.binbin0 -> 2820 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwline.binbin0 -> 8004 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwpt.binbin0 -> 8588 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwxy.binbin0 -> 3316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Embed.binbin0 -> 4060 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Enclosing.binbin0 -> 2516 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/EnclosingS.binbin0 -> 14244 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Endpicture.binbin0 -> 572 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepara.binbin0 -> 11336 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepers.binbin0 -> 11312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Execmd.binbin0 -> 480 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Expr.binbin0 -> 10616 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Exprrot.binbin0 -> 4380 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Faceremovaldata.binbin0 -> 8964 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Facesdata.binbin0 -> 16256 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Findcell.binbin0 -> 15652 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Flattenlist.binbin0 -> 1464 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fontsize.binbin0 -> 4028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriercoeff.binbin0 -> 2080 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/FouriercoeffL.binbin0 -> 1952 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriersum.binbin0 -> 2180 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fracform.binbin0 -> 1720 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Framedata.binbin0 -> 5292 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fullformfunc.binbin0 -> 12768 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gaiseki.binbin0 -> 1804 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Getcounter.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gettrace.binbin0 -> 300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hatchdata.binbin0 -> 19876 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hexahedrondata.binbin0 -> 2972 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/HiddenWireData.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Htickmark.binbin0 -> 16940 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ImplicitData.binbin0 -> 312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Implicitplot.binbin0 -> 9664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/InWindow.binbin0 -> 1440 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Initangle.binbin0 -> 472 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Integrate.binbin0 -> 2248 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvs.binbin0 -> 3080 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectcrvsPp.binbin0 -> 12372 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvsf.binbin0 -> 5064 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectlines.binbin0 -> 3840 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectselfPp.binbin0 -> 12584 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invdashline.binbin0 -> 3604 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invert.binbin0 -> 384 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invparapt.binbin0 -> 5932 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invperspt.binbin0 -> 8520 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joincrvs.binbin0 -> 5604 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joingraphics.binbin0 -> 2476 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ketinit.binbin0 -> 5160 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kouten.binbin0 -> 4212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/KoutenList.binbin0 -> 6844 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Koutenseg.binbin0 -> 16424 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukannozoku.binbin0 -> 4228 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukeiwake.binbin0 -> 9200 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyorihensuu.binbin0 -> 2648 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyoukai.binbin0 -> 18292 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letter.binbin0 -> 10560 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letterrot.binbin0 -> 4324 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Lineplot.binbin0 -> 4028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Listplot.binbin0 -> 1884 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeBowdata.binbin0 -> 8068 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeCurves.binbin0 -> 6312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakecutbycrvL.binbin0 -> 4576 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makehasen.binbin0 -> 17804 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeliststr.binbin0 -> 3736 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makesfcutoffdata.binbin0 -> 53024 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeshasen.binbin0 -> 4688 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletondata.binbin0 -> 21092 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletonpersdata.binbin0 -> 23944 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makevaltable.binbin0 -> 7988 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeveLfaceL.binbin0 -> 7812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makexybdy.binbin0 -> 16852 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mawarikomi.binbin0 -> 3220 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MeetWindow.binbin0 -> 12032 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Meetpoints.binbin0 -> 29828 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Member.binbin0 -> 1192 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi.binbin0 -> 27248 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi2.binbin0 -> 22316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mix.binbin0 -> 712 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixL.binbin0 -> 712 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixS.binbin0 -> 712 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixadd.binbin0 -> 1348 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixdisp.binbin0 -> 676 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixjoin.binbin0 -> 1764 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixlength.binbin0 -> 756 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixmake.binbin0 -> 684 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixop.binbin0 -> 1088 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixsub.binbin0 -> 812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixtype.binbin0 -> 876 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naigai.binbin0 -> 1828 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naiseki.binbin0 -> 276 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nearestpt.binbin0 -> 7004 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Newlength.binbin0 -> 616 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara.binbin0 -> 32960 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara2.binbin0 -> 19056 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers.binbin0 -> 32456 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers2.binbin0 -> 18916 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Numptcrv.binbin0 -> 252 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objcurve.binbin0 -> 14664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objjoin.binbin0 -> 720 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objname.binbin0 -> 980 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolygon.binbin0 -> 7580 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolyhedron.binbin0 -> 2684 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objrecs.binbin0 -> 12672 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsurf.binbin0 -> 17328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsymb.binbin0 -> 624 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objthicksurf.binbin0 -> 17228 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Op.binbin0 -> 2636 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openfile.binbin0 -> 9316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openobj.binbin0 -> 2696 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpar.binbin0 -> 2612 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openphr.binbin0 -> 888 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpicture.binbin0 -> 11080 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovalbox.binbin0 -> 5300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovaldata.binbin0 -> 4812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramark.binbin0 -> 2400 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ParamonCurve.binbin0 -> 2128 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramoncrv.binbin0 -> 3512 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramplot.binbin0 -> 14900 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Parapt.binbin0 -> 1820 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv.binbin0 -> 5492 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv3.binbin0 -> 4300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partframe.binbin0 -> 4232 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PartitionPt.binbin0 -> 308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partitionseg.binbin0 -> 12336 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Perspt.binbin0 -> 5236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhFaceL.binbin0 -> 388 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhHiddenData.binbin0 -> 312 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhVertexL.binbin0 -> 388 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutdata.binbin0 -> 22004 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutoffdata.binbin0 -> 23048 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phidegree.binbin0 -> 356 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phparadata.binbin0 -> 380 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phpersdata.binbin0 -> 380 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawparadata.binbin0 -> 392 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawpersdata.binbin0 -> 368 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsparadata.binbin0 -> 264 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phspersdata.binbin0 -> 264 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawparadata.binbin0 -> 276 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawpersdata.binbin0 -> 252 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Plotdata.binbin0 -> 14492 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointdata.binbin0 -> 1996 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PointonCurve.binbin0 -> 1652 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointoncrv.binbin0 -> 2304 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Powersum.binbin0 -> 1924 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Prime.binbin0 -> 600 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Printobjstr.binbin0 -> 736 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjCurve.binbin0 -> 3788 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjcoordCurve.binbin0 -> 2892 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpara.binbin0 -> 3628 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpers.binbin0 -> 3628 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptcrv.binbin0 -> 284 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptend.binbin0 -> 328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PthiddenQ.binbin0 -> 38656 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptne.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptnw.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptse.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptstart.binbin0 -> 236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptsw.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcell.binbin0 -> 6936 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcirmark.binbin0 -> 1776 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoL.binbin0 -> 6668 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLexpr.binbin0 -> 6860 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLstr.binbin0 -> 3204 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putdashmark.binbin0 -> 1740 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrecmark.binbin0 -> 1640 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrow.binbin0 -> 3988 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowexpr.binbin0 -> 4180 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowstr.binbin0 -> 3204 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Puttrace.binbin0 -> 300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ratiocmyk.binbin0 -> 14664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadOutData.binbin0 -> 8392 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadfromCindy.binbin0 -> 2660 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Readtextdata.binbin0 -> 15532 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Reflectdata.binbin0 -> 7140 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rmmember.binbin0 -> 1732 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3data.binbin0 -> 3696 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3pt.binbin0 -> 18700 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotatedata.binbin0 -> 4212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Roundstr.binbin0 -> 812 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Scaledata.binbin0 -> 3696 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sectionview.binbin0 -> 1708 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setangle.binbin0 -> 1484 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setarrow.binbin0 -> 3424 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setax.binbin0 -> 9496 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcolor.binbin0 -> 3212 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcounter.binbin0 -> 732 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmark.binbin0 -> 5372 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmarklen.binbin0 -> 1364 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjdecimals.binbin0 -> 724 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjscale.binbin0 -> 296 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setorigin.binbin0 -> 804 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpen.binbin0 -> 1260 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpers.binbin0 -> 1248 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpt.binbin0 -> 1236 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setscaling.binbin0 -> 2196 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoL.binbin0 -> 2304 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoR.binbin0 -> 2304 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setunitlen.binbin0 -> 7620 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setversion.binbin0 -> 284 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setwindow.binbin0 -> 5828 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sf3data.binbin0 -> 9872 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdparadata.binbin0 -> 4736 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdpersdata.binbin0 -> 4772 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawparadata.binbin0 -> 3556 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawpersdata.binbin0 -> 3556 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutdata.binbin0 -> 16388 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffparadata.binbin0 -> 932 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffpersdata.binbin0 -> 932 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawparadata.binbin0 -> 920 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawpersdata.binbin0 -> 920 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfparadata.binbin0 -> 1504 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfpersdata.binbin0 -> 1504 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Shade.binbin0 -> 9176 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeleton2data.binbin0 -> 6808 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpara3data.binbin0 -> 5092 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonparadata.binbin0 -> 2896 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpers3data.binbin0 -> 4348 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpersdata.binbin0 -> 2896 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spacecurve.binbin0 -> 9444 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spaceline.binbin0 -> 2412 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Splinedata.binbin0 -> 12656 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Strop.binbin0 -> 1028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Subs.binbin0 -> 2108 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sumfun.binbin0 -> 7688 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symb3data.binbin0 -> 4260 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symbdata.binbin0 -> 7908 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tabledata.binbin0 -> 18164 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texcom.binbin0 -> 2664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texctr.binbin0 -> 1216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texelse.binbin0 -> 292 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texend.binbin0 -> 156 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendfor.binbin0 -> 1480 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendif.binbin0 -> 404 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texfor.binbin0 -> 1544 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texforinit.binbin0 -> 408 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texif.binbin0 -> 1328 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texletter.binbin0 -> 4548 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewcmd.binbin0 -> 1972 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewctr.binbin0 -> 1044 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texrenewcmd.binbin0 -> 1980 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texsetctr.binbin0 -> 6440 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texthectr.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvalctr.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvctr.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Thetadegree.binbin0 -> 364 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ThisVersion.binbin0 -> 308 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tolist.binbin0 -> 580 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translate3data.binbin0 -> 3620 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translatedata.binbin0 -> 3856 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Trunc.binbin0 -> 508 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Unscaling.binbin0 -> 1508 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa.binbin0 -> 1056 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa2.binbin0 -> 880 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Viewfrom.binbin0 -> 2024 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vtickmark.binbin0 -> 16976 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Windisp.binbin0 -> 13224 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WireHiddenData.binbin0 -> 320 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WirePt.binbin0 -> 288 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wireparadata.binbin0 -> 16456 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirepersdata.binbin0 -> 16448 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawparadata.binbin0 -> 11664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawpersdata.binbin0 -> 11664 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WriteOutData.binbin0 -> 6748 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writeobjpoint.binbin0 -> 1668 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writetextdata.binbin0 -> 4484 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WritetoCindy.binbin0 -> 5196 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmax.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmin.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzax3data.binbin0 -> 3216 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxparaname.binbin0 -> 11368 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxpersname.binbin0 -> 11368 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymax.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymin.binbin0 -> 280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zparapt.binbin0 -> 1300 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zperspt.binbin0 -> 3756 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicsciL5/names341
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/.Rhistory1
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.binbin0 -> 922 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.binbin0 -> 5238 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.sci33
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.binbin0 -> 6737 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.sci58
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.binbin0 -> 16618 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.sci107
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.binbin0 -> 13269 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.sci89
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.binbin0 -> 7643 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.sci57
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.binbin0 -> 27459 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.sci202
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.binbin0 -> 1449 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.binbin0 -> 2609 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.binbin0 -> 703 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.binbin0 -> 324 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.binbin0 -> 5272 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.binbin0 -> 6060 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.binbin0 -> 443 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.binbin0 -> 419 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.binbin0 -> 22449 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.sci121
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.binbin0 -> 22411 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.sci120
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.binbin0 -> 13046 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.sci64
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.binbin0 -> 8338 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.sci45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.binbin0 -> 10457 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.sci53
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.binbin0 -> 5225 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.sci40
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.binbin0 -> 7824 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.sci77
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.binbin0 -> 4360 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.binbin0 -> 3001 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.sci26
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.binbin0 -> 1090 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.binbin0 -> 3257 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.binbin0 -> 7543 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.sci28
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.binbin0 -> 3159 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.binbin0 -> 7165 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.binbin0 -> 5752 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.sci32
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.binbin0 -> 9264 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci58
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.binbin0 -> 2182 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.binbin0 -> 767 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.binbin0 -> 1266 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.binbin0 -> 1103 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.binbin0 -> 1991 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.binbin0 -> 14179 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.sci76
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.binbin0 -> 2819 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.binbin0 -> 449 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.binbin0 -> 7742 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.sci49
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.binbin0 -> 7742 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.sci50
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.binbin0 -> 446 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.binbin0 -> 17490 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.sci90
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.binbin0 -> 16797 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.sci86
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.binbin0 -> 440 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.binbin0 -> 12964 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.sci81
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.binbin0 -> 12924 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.sci80
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.binbin0 -> 419 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.binbin0 -> 413 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.binbin0 -> 426 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.binbin0 -> 31919 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.sci179
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.binbin0 -> 31845 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.sci176
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.binbin0 -> 1833 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.binbin0 -> 4784 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.binbin0 -> 2593 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.binbin0 -> 2668 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.sci23
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.binbin0 -> 37476 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.sci195
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.binbin0 -> 9089 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.sci64
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.binbin0 -> 2752 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.binbin0 -> 2511 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.binbin0 -> 1280 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.binbin0 -> 2167 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.binbin0 -> 33511 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.sci186
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.binbin0 -> 454 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.binbin0 -> 22860 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.sci133
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.binbin0 -> 17289 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.sci115
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.binbin0 -> 4450 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.binbin0 -> 4030 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.sci28
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.binbin0 -> 9618 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.sci71
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.binbin0 -> 11037 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.sci75
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.binbin0 -> 4108 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.binbin0 -> 5585 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.binbin0 -> 3330 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.sci23
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.binbin0 -> 17806 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.sci126
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.binbin0 -> 836 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.binbin0 -> 15211 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.sci79
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.binbin0 -> 15184 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.sci77
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.binbin0 -> 721 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.binbin0 -> 12554 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.sci100
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.binbin0 -> 5757 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.binbin0 -> 12460 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.sci78
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.binbin0 -> 12215 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.sci81
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.binbin0 -> 19645 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.sci154
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.binbin0 -> 13219 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.sci88
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.binbin0 -> 20630 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.sci127
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.binbin0 -> 2035 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.binbin0 -> 4895 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.sci54
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.binbin0 -> 2555 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.binbin0 -> 2655 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.binbin0 -> 2809 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.binbin0 -> 2385 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.binbin0 -> 6802 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.binbin0 -> 17186 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.sci79
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.binbin0 -> 2585 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.binbin0 -> 421 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.binbin0 -> 421 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.binbin0 -> 25781 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci141
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.binbin0 -> 3973 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.binbin0 -> 437 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.binbin0 -> 21909 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.sci144
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.binbin0 -> 516 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.binbin0 -> 13253 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.sci61
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.binbin0 -> 1826 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.binbin0 -> 750 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.binbin0 -> 3053 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.sci25
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.binbin0 -> 4302 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.binbin0 -> 15887 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.sci101
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.binbin0 -> 6854 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.sci47
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.binbin0 -> 4990 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.binbin0 -> 15552 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.sci95
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.binbin0 -> 4788 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.binbin0 -> 621 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.binbin0 -> 7426 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci50
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.binbin0 -> 10756 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.binbin0 -> 7402 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.sci51
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.binbin0 -> 3408 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.sci26
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.binbin0 -> 8060 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.sci57
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.binbin0 -> 5636 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.binbin0 -> 9114 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.sci51
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.binbin0 -> 20514 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.sci105
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.binbin0 -> 5978 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.sci45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.binbin0 -> 11635 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.sci62
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.binbin0 -> 2900 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.sci30
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.binbin0 -> 24740 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.sci144
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.binbin0 -> 12440 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.sci100
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.binbin0 -> 5653 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.binbin0 -> 5483 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.sci44
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.binbin0 -> 2824 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.sci24
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.binbin0 -> 10906 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci49
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.binbin0 -> 8640 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.sci62
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.binbin0 -> 6014 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.sci45
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.binbin0 -> 22258 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.sci119
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.binbin0 -> 4911 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.binbin0 -> 68349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.sci345
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.binbin0 -> 6211 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.binbin0 -> 27821 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.sci171
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.binbin0 -> 31439 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.sci188
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.binbin0 -> 10699 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.sci79
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.binbin0 -> 10368 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.sci68
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.binbin0 -> 21856 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.sci111
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.binbin0 -> 3637 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.binbin0 -> 15057 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.sci91
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.binbin0 -> 40156 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.sci169
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.binbin0 -> 1651 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.binbin0 -> 34512 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.sci206
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.binbin0 -> 28313 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.sci186
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.binbin0 -> 1174 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.binbin0 -> 1136 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.binbin0 -> 1135 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.binbin0 -> 2264 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.sci23
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.binbin0 -> 937 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.binbin0 -> 2517 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.binbin0 -> 1260 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.binbin0 -> 1085 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.binbin0 -> 1799 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.sci22
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.binbin0 -> 1280 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.binbin0 -> 1415 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.sci19
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.binbin0 -> 2552 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.binbin0 -> 411 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.binbin0 -> 9290 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.sci53
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.binbin0 -> 771 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.binbin0 -> 42226 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci254
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.binbin0 -> 23811 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.sci131
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.binbin0 -> 41591 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.sci253
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.binbin0 -> 23608 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.sci134
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.binbin0 -> 398 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.binbin0 -> 17718 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.sci115
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.binbin0 -> 973 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.sci9
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.binbin0 -> 1206 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.binbin0 -> 10238 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.binbin0 -> 3588 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.sci25
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.binbin0 -> 16478 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.sci87
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.binbin0 -> 22731 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.sci114
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.binbin0 -> 862 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.binbin0 -> 22172 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.sci123
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.binbin0 -> 3732 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.binbin0 -> 13035 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.sci106
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.binbin0 -> 2939 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.sci33
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.binbin0 -> 3258 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.binbin0 -> 1045 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.binbin0 -> 13672 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.sci92
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.binbin0 -> 6676 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.binbin0 -> 6365 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.binbin0 -> 3079 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.binbin0 -> 2839 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.binbin0 -> 4477 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.binbin0 -> 20071 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.sci140
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.binbin0 -> 2390 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.binbin0 -> 6865 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.binbin0 -> 5346 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.binbin0 -> 5465 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.sci27
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.binbin0 -> 428 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.binbin0 -> 15744 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.sci100
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.binbin0 -> 6665 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.binbin0 -> 496 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.binbin0 -> 431 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.binbin0 -> 500 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.binbin0 -> 29830 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.sci173
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.binbin0 -> 30095 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.sci184
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.binbin0 -> 531 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.binbin0 -> 619 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.binbin0 -> 619 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.binbin0 -> 625 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.binbin0 -> 592 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.binbin0 -> 492 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.binbin0 -> 492 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.binbin0 -> 498 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.binbin0 -> 465 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.binbin0 -> 19408 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.sci138
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.binbin0 -> 2896 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.sci25
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.binbin0 -> 2135 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.binbin0 -> 3006 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.binbin0 -> 2642 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.binbin0 -> 948 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.binbin0 -> 849 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.binbin0 -> 5078 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.sci32
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.binbin0 -> 3725 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.binbin0 -> 4932 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.binbin0 -> 4858 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.binbin0 -> 415 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.binbin0 -> 484 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.binbin0 -> 51975 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.sci250
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.binbin0 -> 1729 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.binbin0 -> 1729 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.binbin0 -> 1730 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.binbin0 -> 389 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.sci4
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.binbin0 -> 1699 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.binbin0 -> 9367 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.sci72
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.binbin0 -> 2231 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.binbin0 -> 8400 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.binbin0 -> 8687 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.binbin0 -> 4017 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.binbin0 -> 2122 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.sci18
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.binbin0 -> 2078 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.binbin0 -> 5045 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.binbin0 -> 5332 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.binbin0 -> 4017 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.sci34
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.binbin0 -> 419 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.binbin0 -> 23174 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.sci87
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.binbin0 -> 11262 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.sci92
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.binbin0 -> 3831 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.sci38
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.binbin0 -> 21821 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.sci160
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.binbin0 -> 9990 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci51
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.binbin0 -> 2316 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.binbin0 -> 4411 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.sci40
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.binbin0 -> 25211 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.sci75
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.binbin0 -> 5669 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.binbin0 -> 1170 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.binbin0 -> 5149 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.binbin0 -> 2344 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.binbin0 -> 2016 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.binbin0 -> 4137 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.sci35
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.binbin0 -> 13034 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.sci102
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.binbin0 -> 4119 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.binbin0 -> 1023 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.binbin0 -> 4968 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.sci43
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.binbin0 -> 1802 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.binbin0 -> 1028 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.binbin0 -> 432 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.binbin0 -> 1056 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.binbin0 -> 1405 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.binbin0 -> 1533 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.sci16
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.binbin0 -> 1607 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.sci16
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.binbin0 -> 3006 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.sci28
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.binbin0 -> 3147 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.binbin0 -> 3069 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.binbin0 -> 10271 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.sci78
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.binbin0 -> 11998 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.sci182
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.binbin0 -> 7533 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.sci44
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.binbin0 -> 13224 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.sci62
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.binbin0 -> 5885 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.sci39
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.binbin0 -> 5938 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.binbin0 -> 4537 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.sci33
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.binbin0 -> 4498 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.sci31
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.binbin0 -> 22872 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.sci105
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.binbin0 -> 1348 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.binbin0 -> 1349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.binbin0 -> 1349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.binbin0 -> 1349 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.binbin0 -> 2149 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.binbin0 -> 2149 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.sci17
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.binbin0 -> 11150 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.sci93
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.binbin0 -> 9324 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.sci71
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.binbin0 -> 6935 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.sci48
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.binbin0 -> 4084 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.binbin0 -> 5901 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.binbin0 -> 4038 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.sci29
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.binbin0 -> 12729 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.sci83
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.binbin0 -> 3439 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.sci27
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.binbin0 -> 16665 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.sci108
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.binbin0 -> 1354 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.binbin0 -> 2852 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.binbin0 -> 9947 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.sci65
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.binbin0 -> 5491 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.sci30
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.binbin0 -> 10750 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.sci67
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.binbin0 -> 25828 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.sci130
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.binbin0 -> 3162 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.sci41
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.binbin0 -> 1603 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.binbin0 -> 420 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.binbin0 -> 251 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.binbin0 -> 1781 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.binbin0 -> 546 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.binbin0 -> 1806 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.sci15
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.binbin0 -> 565 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.binbin0 -> 1677 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.sci19
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.binbin0 -> 5621 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.sci44
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.binbin0 -> 2605 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.binbin0 -> 1266 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.sci13
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.binbin0 -> 2609 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.binbin0 -> 8313 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.sci70
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.binbin0 -> 469 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.binbin0 -> 531 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.binbin0 -> 526 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.sci6
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.binbin0 -> 537 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.binbin0 -> 385 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.binbin0 -> 909 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.binbin0 -> 4301 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.sci36
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.binbin0 -> 5248 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.binbin0 -> 728 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.sci10
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.binbin0 -> 2122 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.binbin0 -> 1434 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.binbin0 -> 1292 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.sci11
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.binbin0 -> 2667 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.sci21
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.binbin0 -> 21938 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.sci144
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.binbin0 -> 17429 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.sci110
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.binbin0 -> 437 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.sci7
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.binbin0 -> 463 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.binbin0 -> 21470 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.sci120
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.binbin0 -> 21438 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.sci120
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.binbin0 -> 15066 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.sci86
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.binbin0 -> 15066 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.sci86
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.binbin0 -> 8150 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.sci55
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.binbin0 -> 2135 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.sci12
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.binbin0 -> 5610 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.sci47
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.binbin0 -> 6440 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.sci42
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.binbin0 -> 4660 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.sci14
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.binbin0 -> 14997 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.sci71
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.binbin0 -> 15036 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.sci72
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.binbin0 -> 364 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.sci5
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.binbin0 -> 1665 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.sci8
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.binbin0 -> 4894 bytes
-rwxr-xr-xtexmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.sci20
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/lib344
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/maximaL/fourier_sec.max260
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/maximaL/matoperation.max47
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/maximaL/poincare.mac71
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/maximaL/rkfun.lisp99
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.pdfbin0 -> 2214196 bytes
-rw-r--r--texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.rr18855
-rw-r--r--texmf-dist/scripts/ketpic/ketlibC/ketcommon.h1559
-rw-r--r--texmf-dist/scripts/ketpic/ketlibC/surflib.h1888
-rw-r--r--texmf-dist/scripts/ketpic/ketlibC/surflibhead.h49
-rw-r--r--texmf-dist/scripts/ketpic/ketoutset.txt54
-rw-r--r--texmf-dist/scripts/ketpic/setketcindy.txt74
-rwxr-xr-xtexmf-dist/scripts/ketpic/template.cdybin0 -> 4261 bytes
-rwxr-xr-xtexmf-dist/tex/latex/ketpic/ketlayer.sty2836
-rw-r--r--texmf-dist/tex/latex/ketpic/ketlayer2e.sty3155
-rw-r--r--texmf-dist/tex/latex/ketpic/ketmedia.sty69
-rw-r--r--texmf-dist/tex/latex/ketpic/ketpic.sty825
-rw-r--r--texmf-dist/tex/latex/ketpic/ketpic2e.sty680
-rw-r--r--texmf-dist/tex/latex/ketpic/ketslide.sty151
-rw-r--r--texmf-dist/tex/latex/ketpic/ketslide2.sty151
-rw-r--r--tlpkg/tlpsrc/collection-contrib.tlpsrc1
-rw-r--r--tlpkg/tlpsrc/ketpic.tlpsrc0
2617 files changed, 138150 insertions, 0 deletions
diff --git a/texmf-dist/doc/support/ketpic/CindyJS/Cindy.js b/texmf-dist/doc/support/ketpic/CindyJS/Cindy.js
new file mode 100644
index 00000000..04aa2fd9
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/CindyJS/Cindy.js
@@ -0,0 +1,781 @@
+/* CindyJS - (C) 2014-2016 The CindyJS Project
+ * Mostly licensed under the Apache License 2.0, but subprojects may use different licensing.
+ * See https://github.com/CindyJS/CindyJS/tree/bb244cab7fdc8d4ea030751ec40c6d384c09f464
+ * for corresponding sources and their respective licensing conditions.
+ */
+var enableInlineVideo=function(){function p(f,k,p,F){function E(p){ea=k(E,F);f(p-(K||p));K=p}var ea,K;return{start:function(){ea||E(0)},stop:function(){p(ea);ea=null;K=0}}}function E(f,k,p,F){function E(k){!!f[p]===!!F&&k.stopImmediatePropagation();delete f[p]}return f.addEventListener(k,E,!1),E}function ja(f,k,p,F){function E(f){p[k]=f}F&&E(f[k]);Object.defineProperty(f,k,{get:function(){return p[k]},set:E})}function Ca(f,k,p){p.addEventListener(k,function(){return f.dispatchEvent(new Event(k))})}
+function pa(f,k){Promise.resolve().then(function(){f.dispatchEvent(new Event(k))})}function Da(f){var k=new Audio;return Ca(f,"play",k),Ca(f,"playing",k),Ca(f,"pause",k),k.crossOrigin=f.crossOrigin,k.src=f.src||f.currentSrc||"data:",k}function aa(k,p,F){(K||0)+200<Date.now()&&(k[Ea]=!0,K=Date.now());F||(k.currentTime=p);f[++nb%3]=100*p|0}function k(f){this.video.readyState>=this.video.HAVE_FUTURE_DATA?(this.hasAudio||(this.driver.currentTime=this.video.currentTime+f*this.video.playbackRate/1E3,this.video.loop&&
+this.driver.currentTime>=this.video.duration&&(this.driver.currentTime=0)),aa(this.video,this.driver.currentTime)):this.video.networkState===this.video.NETWORK_IDLE&&0===this.video.buffered.length&&this.video.load();this.video.ended&&(delete this.video[Ea],this.video.pause(!0))}function Oa(){var f=this[W];return this.webkitDisplayingFullscreen?void this[ob]():("data:"!==f.driver.src&&f.driver.src!==this.src&&(aa(this,0,!0),f.driver.src=this.src),void(this.paused&&(f.paused=!1,0===this.buffered.length&&
+this.load(),f.driver.play(),f.updater.start(),f.hasAudio||(pa(this,"play"),f.video.readyState>=f.video.HAVE_ENOUGH_DATA&&pa(this,"playing")))))}function F(f){var k=this[W];k.driver.pause();k.updater.stop();this.webkitDisplayingFullscreen&&this[sa]();k.paused&&!f||(k.paused=!0,k.hasAudio||pa(this,"pause"),this.ended&&(this[Ea]=!0,pa(this,"ended")))}function ea(F,E){var I=F[W]={};I.paused=!0;I.hasAudio=E;I.video=F;I.updater=p(k.bind(I),requestAnimationFrame,cancelAnimationFrame);E?I.driver=Da(F):(F.addEventListener("canplay",
+function(){F.paused||pa(F,"playing")}),I.driver={src:F.src||F.currentSrc||"data:",muted:!0,paused:!0,pause:function(){I.driver.paused=!0},play:function(){I.driver.paused=!1;I.driver.currentTime>=I.video.duration&&aa(F,0)},get ended(){return I.driver.currentTime>=I.video.duration}});F.addEventListener("emptied",function(){var f=!I.driver.src||"data:"===I.driver.src;I.driver.src&&I.driver.src!==F.src&&(aa(F,0,!0),I.driver.src=F.src,f?I.driver.play():I.updater.stop())},!1);F.addEventListener("webkitbeginfullscreen",
+function(){F.paused?E&&0===I.driver.buffered.length&&I.driver.load():(F.pause(),F[ob]())});E&&(F.addEventListener("webkitendfullscreen",function(){I.driver.currentTime=F.currentTime}),F.addEventListener("seeking",function(){0>f.indexOf(100*F.currentTime|0)&&(I.driver.currentTime=F.currentTime)}))}var K,U="object"==typeof document&&"object-fit"in document.head.style&&!matchMedia("(-webkit-video-playable-inline)").matches,W="bfred-it:iphone-inline-video",Ea="bfred-it:iphone-inline-video:event",ob="bfred-it:iphone-inline-video:nativeplay",
+sa="bfred-it:iphone-inline-video:nativepause",f=[],nb=0;return function(f,k){if(void 0===k&&(k={}),!f[W])if(k.everywhere||U&&(k.iPad||k.ipad?/iPhone|iPod|iPad/:/iPhone|iPod/).test(navigator.userAgent)){!f.paused&&f.webkitDisplayingFullscreen&&f.pause();ea(f,!f.muted);var p=f[W];f[ob]=f.play;f[sa]=f.pause;f.play=Oa;f.pause=F;ja(f,"paused",p.driver);ja(f,"muted",p.driver,!0);ja(f,"playbackRate",p.driver,!0);ja(f,"ended",p.driver);ja(f,"loop",p.driver,!0);E(f,"seeking");E(f,"seeked");E(f,"timeupdate",
+Ea,!1);E(f,"ended",Ea,!1);f.classList.add("IIV");f.muted&&f.autoplay&&f.play();/iPhone|iPod|iPad/.test(navigator.platform)||console.warn("iphone-inline-video is not guaranteed to work in emulated environments")}}}();
+(function(){function p(b,d,e){f.biginteger_used=1;null!=b&&("number"==typeof b&&"undefined"==typeof d?this.fromInt(b):"number"==typeof b?this.fromNumber(b,d,e):null==d&&"string"!=typeof b?this.fromString(b,256):this.fromString(b,d))}function E(){return new p(null,void 0,void 0)}function ja(b,d,e,q,f,k){for(;0<=--k;){var v=d*this[b++]+e[q]+f;f=Math.floor(v/67108864);e[q++]=v&67108863}return f}function Ca(b,d,e,q,f,k){var v=d&32767;for(d>>=15;0<=--k;){var C=this[b]&32767,p=this[b++]>>15,F=d*C+p*v,C=
+v*C+((F&32767)<<15)+e[q]+(f&1073741823);f=(C>>>30)+(F>>>15)+d*p+(f>>>30);e[q++]=C&1073741823}return f}function pa(b,d,e,q,f,k){var v=d&16383;for(d>>=14;0<=--k;){var C=this[b]&16383,p=this[b++]>>14,F=d*C+p*v,C=v*C+((F&16383)<<14)+e[q]+f;f=(C>>28)+(F>>14)+d*p;e[q++]=C&268435455}return f}function Da(b,d){var e=cb[b.charCodeAt(d)];return null==e?-1:e}function aa(b){var d=E();d.fromInt(b);return d}function k(b){var d=1,e;0!=(e=b>>>16)&&(b=e,d+=16);0!=(e=b>>8)&&(b=e,d+=8);0!=(e=b>>4)&&(b=e,d+=4);0!=(e=
+b>>2)&&(b=e,d+=2);0!=b>>1&&(d+=1);return d}function Oa(b){this.m=b}function F(b){this.m=b;this.mp=b.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<b.DB-15)-1;this.mt2=2*b.t}function ea(b,d){return b&d}function K(b,d){return b|d}function U(b,d){return b^d}function W(b,d){return b&~d}function Ea(){}function ob(b){return b}function sa(b){this.r2=E();this.q3=E();p.ONE.dlShiftTo(2*b.t,this.r2);this.mu=this.r2.divide(b);this.m=b}var f={use_lines:!0,use_xyz:!1},nb=!1;"undefined"!==typeof module&&
+module.exports?(module.exports=f,nb=!0):"undefined"!==typeof document?window.ClipperLib=f:self.ClipperLib=f;var V;if(nb)Y="chrome",V="Netscape";else{var Y=navigator.userAgent.toString().toLowerCase();V=navigator.appName}var I,Xb,Jb,Qa,ab,xb;I=-1!=Y.indexOf("chrome")&&-1==Y.indexOf("chromium")?1:0;nb=-1!=Y.indexOf("chromium")?1:0;Xb=-1!=Y.indexOf("safari")&&-1==Y.indexOf("chrome")&&-1==Y.indexOf("chromium")?1:0;Jb=-1!=Y.indexOf("firefox")?1:0;Y.indexOf("firefox/17");Y.indexOf("firefox/15");Y.indexOf("firefox/3");
+Qa=-1!=Y.indexOf("opera")?1:0;Y.indexOf("msie 10");Y.indexOf("msie 9");ab=-1!=Y.indexOf("msie 8")?1:0;xb=-1!=Y.indexOf("msie 7")?1:0;Y=-1!=Y.indexOf("msie ")?1:0;f.biginteger_used=null;"Microsoft Internet Explorer"==V?(p.prototype.am=Ca,V=30):"Netscape"!=V?(p.prototype.am=ja,V=26):(p.prototype.am=pa,V=28);p.prototype.DB=V;p.prototype.DM=(1<<V)-1;p.prototype.DV=1<<V;p.prototype.FV=Math.pow(2,52);p.prototype.F1=52-V;p.prototype.F2=2*V-52;var cb=[],qa;V=48;for(qa=0;9>=qa;++qa)cb[V++]=qa;V=97;for(qa=
+10;36>qa;++qa)cb[V++]=qa;V=65;for(qa=10;36>qa;++qa)cb[V++]=qa;Oa.prototype.convert=function(b){return 0>b.s||0<=b.compareTo(this.m)?b.mod(this.m):b};Oa.prototype.revert=function(b){return b};Oa.prototype.reduce=function(b){b.divRemTo(this.m,null,b)};Oa.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};Oa.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};F.prototype.convert=function(b){var d=E();b.abs().dlShiftTo(this.m.t,d);d.divRemTo(this.m,null,d);0>b.s&&0<d.compareTo(p.ZERO)&&
+this.m.subTo(d,d);return d};F.prototype.revert=function(b){var d=E();b.copyTo(d);this.reduce(d);return d};F.prototype.reduce=function(b){for(;b.t<=this.mt2;)b[b.t++]=0;for(var d=0;d<this.m.t;++d){var e=b[d]&32767,q=e*this.mpl+((e*this.mph+(b[d]>>15)*this.mpl&this.um)<<15)&b.DM,e=d+this.m.t;for(b[e]+=this.m.am(0,q,b,d,0,this.m.t);b[e]>=b.DV;)b[e]-=b.DV,b[++e]++}b.clamp();b.drShiftTo(this.m.t,b);0<=b.compareTo(this.m)&&b.subTo(this.m,b)};F.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};
+F.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};p.prototype.copyTo=function(b){for(var d=this.t-1;0<=d;--d)b[d]=this[d];b.t=this.t;b.s=this.s};p.prototype.fromInt=function(b){this.t=1;this.s=0>b?-1:0;0<b?this[0]=b:-1>b?this[0]=b+this.DV:this.t=0};p.prototype.fromString=function(b,d){var e;if(16==d)e=4;else if(8==d)e=3;else if(256==d)e=8;else if(2==d)e=1;else if(32==d)e=5;else if(4==d)e=2;else{this.fromRadix(b,d);return}this.s=this.t=0;for(var q=b.length,f=!1,k=0;0<=--q;){var v=8==e?
+b[q]&255:Da(b,q);0>v?"-"==b.charAt(q)&&(f=!0):(f=!1,0==k?this[this.t++]=v:k+e>this.DB?(this[this.t-1]|=(v&(1<<this.DB-k)-1)<<k,this[this.t++]=v>>this.DB-k):this[this.t-1]|=v<<k,k+=e,k>=this.DB&&(k-=this.DB))}8==e&&0!=(b[0]&128)&&(this.s=-1,0<k&&(this[this.t-1]|=(1<<this.DB-k)-1<<k));this.clamp();f&&p.ZERO.subTo(this,this)};p.prototype.clamp=function(){for(var b=this.s&this.DM;0<this.t&&this[this.t-1]==b;)--this.t};p.prototype.dlShiftTo=function(b,d){var e;for(e=this.t-1;0<=e;--e)d[e+b]=this[e];for(e=
+b-1;0<=e;--e)d[e]=0;d.t=this.t+b;d.s=this.s};p.prototype.drShiftTo=function(b,d){for(var e=b;e<this.t;++e)d[e-b]=this[e];d.t=Math.max(this.t-b,0);d.s=this.s};p.prototype.lShiftTo=function(b,d){var e=b%this.DB,q=this.DB-e,f=(1<<q)-1,k=Math.floor(b/this.DB),v=this.s<<e&this.DM,C;for(C=this.t-1;0<=C;--C)d[C+k+1]=this[C]>>q|v,v=(this[C]&f)<<e;for(C=k-1;0<=C;--C)d[C]=0;d[k]=v;d.t=this.t+k+1;d.s=this.s;d.clamp()};p.prototype.rShiftTo=function(b,d){d.s=this.s;var e=Math.floor(b/this.DB);if(e>=this.t)d.t=
+0;else{var q=b%this.DB,f=this.DB-q,k=(1<<q)-1;d[0]=this[e]>>q;for(var v=e+1;v<this.t;++v)d[v-e-1]|=(this[v]&k)<<f,d[v-e]=this[v]>>q;0<q&&(d[this.t-e-1]|=(this.s&k)<<f);d.t=this.t-e;d.clamp()}};p.prototype.subTo=function(b,d){for(var e=0,f=0,n=Math.min(b.t,this.t);e<n;)f+=this[e]-b[e],d[e++]=f&this.DM,f>>=this.DB;if(b.t<this.t){for(f-=b.s;e<this.t;)f+=this[e],d[e++]=f&this.DM,f>>=this.DB;f+=this.s}else{for(f+=this.s;e<b.t;)f-=b[e],d[e++]=f&this.DM,f>>=this.DB;f-=b.s}d.s=0>f?-1:0;-1>f?d[e++]=this.DV+
+f:0<f&&(d[e++]=f);d.t=e;d.clamp()};p.prototype.multiplyTo=function(b,d){var e=this.abs(),f=b.abs(),n=e.t;for(d.t=n+f.t;0<=--n;)d[n]=0;for(n=0;n<f.t;++n)d[n+e.t]=e.am(0,f[n],d,n,0,e.t);d.s=0;d.clamp();this.s!=b.s&&p.ZERO.subTo(d,d)};p.prototype.squareTo=function(b){for(var d=this.abs(),e=b.t=2*d.t;0<=--e;)b[e]=0;for(e=0;e<d.t-1;++e){var f=d.am(e,d[e],b,2*e,0,1);(b[e+d.t]+=d.am(e+1,2*d[e],b,2*e+1,f,d.t-e-1))>=d.DV&&(b[e+d.t]-=d.DV,b[e+d.t+1]=1)}0<b.t&&(b[b.t-1]+=d.am(e,d[e],b,2*e,0,1));b.s=0;b.clamp()};
+p.prototype.divRemTo=function(b,d,e){var f=b.abs();if(!(0>=f.t)){var n=this.abs();if(n.t<f.t)null!=d&&d.fromInt(0),null!=e&&this.copyTo(e);else{null==e&&(e=E());var N=E(),v=this.s;b=b.s;var C=this.DB-k(f[f.t-1]);0<C?(f.lShiftTo(C,N),n.lShiftTo(C,e)):(f.copyTo(N),n.copyTo(e));f=N.t;n=N[f-1];if(0!=n){var F=n*(1<<this.F1)+(1<f?N[f-2]>>this.F2:0),bb=this.FV/F,F=(1<<this.F1)/F,pb=1<<this.F2,H=e.t,ea=H-f,K=null==d?E():d;N.dlShiftTo(ea,K);0<=e.compareTo(K)&&(e[e.t++]=1,e.subTo(K,e));p.ONE.dlShiftTo(f,K);
+for(K.subTo(N,N);N.t<f;)N[N.t++]=0;for(;0<=--ea;){var I=e[--H]==n?this.DM:Math.floor(e[H]*bb+(e[H-1]+pb)*F);if((e[H]+=N.am(0,I,e,ea,0,f))<I)for(N.dlShiftTo(ea,K),e.subTo(K,e);e[H]<--I;)e.subTo(K,e)}null!=d&&(e.drShiftTo(f,d),v!=b&&p.ZERO.subTo(d,d));e.t=f;e.clamp();0<C&&e.rShiftTo(C,e);0>v&&p.ZERO.subTo(e,e)}}}};p.prototype.invDigit=function(){if(1>this.t)return 0;var b=this[0];if(0==(b&1))return 0;var d=b&3,d=d*(2-(b&15)*d)&15,d=d*(2-(b&255)*d)&255,d=d*(2-((b&65535)*d&65535))&65535,d=d*(2-b*d%this.DV)%
+this.DV;return 0<d?this.DV-d:-d};p.prototype.isEven=function(){return 0==(0<this.t?this[0]&1:this.s)};p.prototype.exp=function(b,d){if(4294967295<b||1>b)return p.ONE;var e=E(),f=E(),n=d.convert(this),N=k(b)-1;for(n.copyTo(e);0<=--N;)if(d.sqrTo(e,f),0<(b&1<<N))d.mulTo(f,n,e);else var v=e,e=f,f=v;return d.revert(e)};p.prototype.toString=function(b){if(0>this.s)return"-"+this.negate().toString(b);if(16==b)b=4;else if(8==b)b=3;else if(2==b)b=1;else if(32==b)b=5;else if(4==b)b=2;else return this.toRadix(b);
+var d=(1<<b)-1,e,f=!1,n="",k=this.t,v=this.DB-k*this.DB%b;if(0<k--)for(v<this.DB&&0<(e=this[k]>>v)&&(f=!0,n="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));0<=k;)v<b?(e=(this[k]&(1<<v)-1)<<b-v,e|=this[--k]>>(v+=this.DB-b)):(e=this[k]>>(v-=b)&d,0>=v&&(v+=this.DB,--k)),0<e&&(f=!0),f&&(n+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));return f?n:"0"};p.prototype.negate=function(){var b=E();p.ZERO.subTo(this,b);return b};p.prototype.abs=function(){return 0>this.s?this.negate():this};p.prototype.compareTo=
+function(b){var d=this.s-b.s;if(0!=d)return d;var e=this.t,d=e-b.t;if(0!=d)return 0>this.s?-d:d;for(;0<=--e;)if(0!=(d=this[e]-b[e]))return d;return 0};p.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+k(this[this.t-1]^this.s&this.DM)};p.prototype.mod=function(b){var d=E();this.abs().divRemTo(b,null,d);0>this.s&&0<d.compareTo(p.ZERO)&&b.subTo(d,d);return d};p.prototype.modPowInt=function(b,d){var e;e=256>b||d.isEven()?new Oa(d):new F(d);return this.exp(b,e)};p.ZERO=aa(0);p.ONE=
+aa(1);Ea.prototype.convert=ob;Ea.prototype.revert=ob;Ea.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e)};Ea.prototype.sqrTo=function(b,d){b.squareTo(d)};sa.prototype.convert=function(b){if(0>b.s||b.t>2*this.m.t)return b.mod(this.m);if(0>b.compareTo(this.m))return b;var d=E();b.copyTo(d);this.reduce(d);return d};sa.prototype.revert=function(b){return b};sa.prototype.reduce=function(b){b.drShiftTo(this.m.t-1,this.r2);b.t>this.m.t+1&&(b.t=this.m.t+1,b.clamp());this.mu.multiplyUpperTo(this.r2,this.m.t+
+1,this.q3);for(this.m.multiplyLowerTo(this.q3,this.m.t+1,this.r2);0>b.compareTo(this.r2);)b.dAddOffset(1,this.m.t+1);for(b.subTo(this.r2,b);0<=b.compareTo(this.m);)b.subTo(this.m,b)};sa.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};sa.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};var H=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,
+241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],Zb=67108864/H[H.length-1];p.prototype.chunkSize=
+function(b){return Math.floor(Math.LN2*this.DB/Math.log(b))};p.prototype.toRadix=function(b){null==b&&(b=10);if(0==this.signum()||2>b||36<b)return"0";var d=this.chunkSize(b),d=Math.pow(b,d),e=aa(d),f=E(),n=E(),k="";for(this.divRemTo(e,f,n);0<f.signum();)k=(d+n.intValue()).toString(b).substr(1)+k,f.divRemTo(e,f,n);return n.intValue().toString(b)+k};p.prototype.fromRadix=function(b,d){this.fromInt(0);null==d&&(d=10);for(var e=this.chunkSize(d),f=Math.pow(d,e),n=!1,k=0,v=0,C=0;C<b.length;++C){var F=
+Da(b,C);0>F?"-"==b.charAt(C)&&0==this.signum()&&(n=!0):(v=d*v+F,++k>=e&&(this.dMultiply(f),this.dAddOffset(v,0),v=k=0))}0<k&&(this.dMultiply(Math.pow(d,k)),this.dAddOffset(v,0));n&&p.ZERO.subTo(this,this)};p.prototype.fromNumber=function(b,d,e){if("number"==typeof d)if(2>b)this.fromInt(1);else for(this.fromNumber(b,e),this.testBit(b-1)||this.bitwiseTo(p.ONE.shiftLeft(b-1),K,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(d);)this.dAddOffset(2,0),this.bitLength()>b&&this.subTo(p.ONE.shiftLeft(b-
+1),this);else{e=[];var f=b&7;e.length=(b>>3)+1;d.nextBytes(e);e[0]=0<f?e[0]&(1<<f)-1:0;this.fromString(e,256)}};p.prototype.bitwiseTo=function(b,d,e){var f,n,k=Math.min(b.t,this.t);for(f=0;f<k;++f)e[f]=d(this[f],b[f]);if(b.t<this.t){n=b.s&this.DM;for(f=k;f<this.t;++f)e[f]=d(this[f],n);e.t=this.t}else{n=this.s&this.DM;for(f=k;f<b.t;++f)e[f]=d(n,b[f]);e.t=b.t}e.s=d(this.s,b.s);e.clamp()};p.prototype.changeBit=function(b,d){var e=p.ONE.shiftLeft(b);this.bitwiseTo(e,d,e);return e};p.prototype.addTo=function(b,
+d){for(var e=0,f=0,n=Math.min(b.t,this.t);e<n;)f+=this[e]+b[e],d[e++]=f&this.DM,f>>=this.DB;if(b.t<this.t){for(f+=b.s;e<this.t;)f+=this[e],d[e++]=f&this.DM,f>>=this.DB;f+=this.s}else{for(f+=this.s;e<b.t;)f+=b[e],d[e++]=f&this.DM,f>>=this.DB;f+=b.s}d.s=0>f?-1:0;0<f?d[e++]=f:-1>f&&(d[e++]=this.DV+f);d.t=e;d.clamp()};p.prototype.dMultiply=function(b){this[this.t]=this.am(0,b-1,this,0,0,this.t);++this.t;this.clamp()};p.prototype.dAddOffset=function(b,d){if(0!=b){for(;this.t<=d;)this[this.t++]=0;for(this[d]+=
+b;this[d]>=this.DV;)this[d]-=this.DV,++d>=this.t&&(this[this.t++]=0),++this[d]}};p.prototype.multiplyLowerTo=function(b,d,e){var f=Math.min(this.t+b.t,d);e.s=0;for(e.t=f;0<f;)e[--f]=0;var n;for(n=e.t-this.t;f<n;++f)e[f+this.t]=this.am(0,b[f],e,f,0,this.t);for(n=Math.min(b.t,d);f<n;++f)this.am(0,b[f],e,f,0,d-f);e.clamp()};p.prototype.multiplyUpperTo=function(b,d,e){--d;var f=e.t=this.t+b.t-d;for(e.s=0;0<=--f;)e[f]=0;for(f=Math.max(d-this.t,0);f<b.t;++f)e[this.t+f-d]=this.am(d-f,b[f],e,0,0,this.t+f-
+d);e.clamp();e.drShiftTo(1,e)};p.prototype.modInt=function(b){if(0>=b)return 0;var d=this.DV%b,e=0>this.s?b-1:0;if(0<this.t)if(0==d)e=this[0]%b;else for(var f=this.t-1;0<=f;--f)e=(d*e+this[f])%b;return e};p.prototype.millerRabin=function(b){var d=this.subtract(p.ONE),e=d.getLowestSetBit();if(0>=e)return!1;var f=d.shiftRight(e);b=b+1>>1;b>H.length&&(b=H.length);for(var n=E(),k=0;k<b;++k){n.fromInt(H[Math.floor(Math.random()*H.length)]);var v=n.modPow(f,this);if(0!=v.compareTo(p.ONE)&&0!=v.compareTo(d)){for(var C=
+1;C++<e&&0!=v.compareTo(d);)if(v=v.modPowInt(2,this),0==v.compareTo(p.ONE))return!1;if(0!=v.compareTo(d))return!1}}return!0};p.prototype.clone=function(){var b=E();this.copyTo(b);return b};p.prototype.intValue=function(){if(0>this.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]};p.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24};p.prototype.shortValue=function(){return 0==
+this.t?this.s:this[0]<<16>>16};p.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1};p.prototype.toByteArray=function(){var b=this.t,d=[];d[0]=this.s;var e=this.DB-b*this.DB%8,f,n=0;if(0<b--)for(e<this.DB&&(f=this[b]>>e)!=(this.s&this.DM)>>e&&(d[n++]=f|this.s<<this.DB-e);0<=b;)if(8>e?(f=(this[b]&(1<<e)-1)<<8-e,f|=this[--b]>>(e+=this.DB-8)):(f=this[b]>>(e-=8)&255,0>=e&&(e+=this.DB,--b)),0!=(f&128)&&(f|=-256),0==n&&(this.s&128)!=(f&128)&&++n,0<n||f!=this.s)d[n++]=f;
+return d};p.prototype.equals=function(b){return 0==this.compareTo(b)};p.prototype.min=function(b){return 0>this.compareTo(b)?this:b};p.prototype.max=function(b){return 0<this.compareTo(b)?this:b};p.prototype.and=function(b){var d=E();this.bitwiseTo(b,ea,d);return d};p.prototype.or=function(b){var d=E();this.bitwiseTo(b,K,d);return d};p.prototype.xor=function(b){var d=E();this.bitwiseTo(b,U,d);return d};p.prototype.andNot=function(b){var d=E();this.bitwiseTo(b,W,d);return d};p.prototype.not=function(){for(var b=
+E(),d=0;d<this.t;++d)b[d]=this.DM&~this[d];b.t=this.t;b.s=~this.s;return b};p.prototype.shiftLeft=function(b){var d=E();0>b?this.rShiftTo(-b,d):this.lShiftTo(b,d);return d};p.prototype.shiftRight=function(b){var d=E();0>b?this.lShiftTo(-b,d):this.rShiftTo(b,d);return d};p.prototype.getLowestSetBit=function(){for(var b=0;b<this.t;++b)if(0!=this[b]){var d=b*this.DB,b=this[b];if(0==b)b=-1;else{var e=0;0==(b&65535)&&(b>>=16,e+=16);0==(b&255)&&(b>>=8,e+=8);0==(b&15)&&(b>>=4,e+=4);0==(b&3)&&(b>>=2,e+=2);
+0==(b&1)&&++e;b=e}return d+b}return 0>this.s?this.t*this.DB:-1};p.prototype.bitCount=function(){for(var b=0,d=this.s&this.DM,e=0;e<this.t;++e){for(var f=this[e]^d,n=0;0!=f;)f&=f-1,++n;b+=n}return b};p.prototype.testBit=function(b){var d=Math.floor(b/this.DB);return d>=this.t?0!=this.s:0!=(this[d]&1<<b%this.DB)};p.prototype.setBit=function(b){return this.changeBit(b,K)};p.prototype.clearBit=function(b){return this.changeBit(b,W)};p.prototype.flipBit=function(b){return this.changeBit(b,U)};p.prototype.add=
+function(b){var d=E();this.addTo(b,d);return d};p.prototype.subtract=function(b){var d=E();this.subTo(b,d);return d};p.prototype.multiply=function(b){var d=E();this.multiplyTo(b,d);return d};p.prototype.divide=function(b){var d=E();this.divRemTo(b,d,null);return d};p.prototype.remainder=function(b){var d=E();this.divRemTo(b,null,d);return d};p.prototype.divideAndRemainder=function(b){var d=E(),e=E();this.divRemTo(b,d,e);return[d,e]};p.prototype.modPow=function(b,d){var e=b.bitLength(),f,n=aa(1),N;
+if(0>=e)return n;f=18>e?1:48>e?3:144>e?4:768>e?5:6;N=8>e?new Oa(d):d.isEven()?new sa(d):new F(d);var v=[],C=3,p=f-1,bb=(1<<f)-1;v[1]=N.convert(this);if(1<f)for(e=E(),N.sqrTo(v[1],e);C<=bb;)v[C]=E(),N.mulTo(e,v[C-2],v[C]),C+=2;for(var H=b.t-1,K,ea=!0,I=E(),e=k(b[H])-1;0<=H;){e>=p?K=b[H]>>e-p&bb:(K=(b[H]&(1<<e+1)-1)<<p-e,0<H&&(K|=b[H-1]>>this.DB+e-p));for(C=f;0==(K&1);)K>>=1,--C;0>(e-=C)&&(e+=this.DB,--H);if(ea)v[K].copyTo(n),ea=!1;else{for(;1<C;)N.sqrTo(n,I),N.sqrTo(I,n),C-=2;0<C?N.sqrTo(n,I):(C=n,
+n=I,I=C);N.mulTo(I,v[K],n)}for(;0<=H&&0==(b[H]&1<<e);)N.sqrTo(n,I),C=n,n=I,I=C,0>--e&&(e=this.DB-1,--H)}return N.revert(n)};p.prototype.modInverse=function(b){var d=b.isEven();if(this.isEven()&&d||0==b.signum())return p.ZERO;for(var e=b.clone(),f=this.clone(),n=aa(1),k=aa(0),v=aa(0),C=aa(1);0!=e.signum();){for(;e.isEven();)e.rShiftTo(1,e),d?(n.isEven()&&k.isEven()||(n.addTo(this,n),k.subTo(b,k)),n.rShiftTo(1,n)):k.isEven()||k.subTo(b,k),k.rShiftTo(1,k);for(;f.isEven();)f.rShiftTo(1,f),d?(v.isEven()&&
+C.isEven()||(v.addTo(this,v),C.subTo(b,C)),v.rShiftTo(1,v)):C.isEven()||C.subTo(b,C),C.rShiftTo(1,C);0<=e.compareTo(f)?(e.subTo(f,e),d&&n.subTo(v,n),k.subTo(C,k)):(f.subTo(e,f),d&&v.subTo(n,v),C.subTo(k,C))}if(0!=f.compareTo(p.ONE))return p.ZERO;if(0<=C.compareTo(b))return C.subtract(b);if(0>C.signum())C.addTo(b,C);else return C;return 0>C.signum()?C.add(b):C};p.prototype.pow=function(b){return this.exp(b,new Ea)};p.prototype.gcd=function(b){var d=0>this.s?this.negate():this.clone();b=0>b.s?b.negate():
+b.clone();if(0>d.compareTo(b)){var e=d,d=b;b=e}var e=d.getLowestSetBit(),f=b.getLowestSetBit();if(0>f)return d;e<f&&(f=e);for(0<f&&(d.rShiftTo(f,d),b.rShiftTo(f,b));0<d.signum();)0<(e=d.getLowestSetBit())&&d.rShiftTo(e,d),0<(e=b.getLowestSetBit())&&b.rShiftTo(e,b),0<=d.compareTo(b)?(d.subTo(b,d),d.rShiftTo(1,d)):(b.subTo(d,b),b.rShiftTo(1,b));0<f&&b.lShiftTo(f,b);return b};p.prototype.isProbablePrime=function(b){var d,e=this.abs();if(1==e.t&&e[0]<=H[H.length-1]){for(d=0;d<H.length;++d)if(e[0]==H[d])return!0;
+return!1}if(e.isEven())return!1;for(d=1;d<H.length;){for(var f=H[d],n=d+1;n<H.length&&f<Zb;)f*=H[n++];for(f=e.modInt(f);d<n;)if(0==f%H[d++])return!1}return e.millerRabin(b)};p.prototype.square=function(){var b=E();this.squareTo(b);return b};p.prototype.IsNegative=function(){return-1==this.compareTo(p.ZERO)?!0:!1};p.op_Equality=function(b,d){return 0==b.compareTo(d)?!0:!1};p.op_Inequality=function(b,d){return 0!=b.compareTo(d)?!0:!1};p.op_GreaterThan=function(b,d){return 0<b.compareTo(d)?!0:!1};p.op_LessThan=
+function(b,d){return 0>b.compareTo(d)?!0:!1};p.op_Addition=function(b,d){return(new p(b)).add(new p(d))};p.op_Subtraction=function(b,d){return(new p(b)).subtract(new p(d))};p.Int128Mul=function(b,d){return(new p(b)).multiply(new p(d))};p.op_Division=function(b,d){return b.divide(d)};p.prototype.ToDouble=function(){return parseFloat(this.toString())};V=function(b,d){var e;if("undefined"==typeof Object.getOwnPropertyNames)for(e in d.prototype){if("undefined"==typeof b.prototype[e]||b.prototype[e]==
+Object.prototype[e])b.prototype[e]=d.prototype[e]}else for(var f=Object.getOwnPropertyNames(d.prototype),n=0;n<f.length;n++)"undefined"==typeof Object.getOwnPropertyDescriptor(b.prototype,f[n])&&Object.defineProperty(b.prototype,f[n],Object.getOwnPropertyDescriptor(d.prototype,f[n]));for(e in d)"undefined"==typeof b[e]&&(b[e]=d[e]);b.$baseCtor=d};f.Path=function(){return[]};f.Paths=function(){return[]};f.DoublePoint=function(){var b=arguments;this.Y=this.X=0;1==b.length?(this.X=b[0].X,this.Y=b[0].Y):
+2==b.length&&(this.X=b[0],this.Y=b[1])};f.DoublePoint0=function(){this.Y=this.X=0};f.DoublePoint1=function(b){this.X=b.X;this.Y=b.Y};f.DoublePoint2=function(b,d){this.X=b;this.Y=d};f.PolyNode=function(){this.m_Parent=null;this.m_polygon=new f.Path;this.m_endtype=this.m_jointype=this.m_Index=0;this.m_Childs=[];this.IsOpen=!1};f.PolyNode.prototype.IsHoleNode=function(){for(var b=!0,d=this.m_Parent;null!==d;)b=!b,d=d.m_Parent;return b};f.PolyNode.prototype.ChildCount=function(){return this.m_Childs.length};
+f.PolyNode.prototype.Contour=function(){return this.m_polygon};f.PolyNode.prototype.AddChild=function(b){var d=this.m_Childs.length;this.m_Childs.push(b);b.m_Parent=this;b.m_Index=d};f.PolyNode.prototype.GetNext=function(){return 0<this.m_Childs.length?this.m_Childs[0]:this.GetNextSiblingUp()};f.PolyNode.prototype.GetNextSiblingUp=function(){return null===this.m_Parent?null:this.m_Index==this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+1]};f.PolyNode.prototype.Childs=
+function(){return this.m_Childs};f.PolyNode.prototype.Parent=function(){return this.m_Parent};f.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()};f.PolyTree=function(){this.m_AllPolys=[];f.PolyNode.call(this)};f.PolyTree.prototype.Clear=function(){for(var b=0,d=this.m_AllPolys.length;b<d;b++)this.m_AllPolys[b]=null;this.m_AllPolys.length=0;this.m_Childs.length=0};f.PolyTree.prototype.GetFirst=function(){return 0<this.m_Childs.length?this.m_Childs[0]:null};f.PolyTree.prototype.Total=function(){var b=
+this.m_AllPolys.length;0<b&&this.m_Childs[0]!=this.m_AllPolys[0]&&b--;return b};V(f.PolyTree,f.PolyNode);f.Math_Abs_Int64=f.Math_Abs_Int32=f.Math_Abs_Double=function(b){return Math.abs(b)};f.Math_Max_Int32_Int32=function(b,d){return Math.max(b,d)};f.Cast_Int32=Y||Qa||Xb?function(b){return b|0}:function(b){return~~b};f.Cast_Int64=I?function(b){return-2147483648>b||2147483647<b?0>b?Math.ceil(b):Math.floor(b):~~b}:Jb&&"function"==typeof Number.toInteger?function(b){return Number.toInteger(b)}:xb||ab?
+function(b){return parseInt(b,10)}:Y?function(b){return-2147483648>b||2147483647<b?0>b?Math.ceil(b):Math.floor(b):b|0}:function(b){return 0>b?Math.ceil(b):Math.floor(b)};f.Clear=function(b){b.length=0};f.PI=3.141592653589793;f.PI2=6.283185307179586;f.IntPoint=function(){var b=arguments,d=b.length;this.Y=this.X=0;f.use_xyz?(this.Z=0,3==d?(this.X=b[0],this.Y=b[1],this.Z=b[2]):2==d?(this.X=b[0],this.Y=b[1],this.Z=0):1==d?b[0]instanceof f.DoublePoint?(b=b[0],this.X=f.Clipper.Round(b.X),this.Y=f.Clipper.Round(b.Y),
+this.Z=0):(b=b[0],"undefined"==typeof b.Z&&(b.Z=0),this.X=b.X,this.Y=b.Y,this.Z=b.Z):this.Z=this.Y=this.X=0):2==d?(this.X=b[0],this.Y=b[1]):1==d?b[0]instanceof f.DoublePoint?(b=b[0],this.X=f.Clipper.Round(b.X),this.Y=f.Clipper.Round(b.Y)):(b=b[0],this.X=b.X,this.Y=b.Y):this.Y=this.X=0};f.IntPoint.op_Equality=function(b,d){return b.X==d.X&&b.Y==d.Y};f.IntPoint.op_Inequality=function(b,d){return b.X!=d.X||b.Y!=d.Y};f.use_xyz?(f.IntPoint0=function(){this.Z=this.Y=this.X=0},f.IntPoint1=function(b){this.X=
+b.X;this.Y=b.Y;this.Z=b.Z},f.IntPoint1dp=function(b){this.X=f.Clipper.Round(b.X);this.Y=f.Clipper.Round(b.Y);this.Z=0},f.IntPoint2=function(b,d){this.X=b;this.Y=d;this.Z=0},f.IntPoint3=function(b,d,e){this.X=b;this.Y=d;this.Z=e}):(f.IntPoint0=function(){this.Y=this.X=0},f.IntPoint1=function(b){this.X=b.X;this.Y=b.Y},f.IntPoint1dp=function(b){this.X=f.Clipper.Round(b.X);this.Y=f.Clipper.Round(b.Y)},f.IntPoint2=function(b,d){this.X=b;this.Y=d});f.IntRect=function(){var b=arguments,d=b.length;4==d?(this.left=
+b[0],this.top=b[1],this.right=b[2],this.bottom=b[3]):1==d?(this.left=b[0].left,this.top=b[0].top,this.right=b[0].right,this.bottom=b[0].bottom):this.bottom=this.right=this.top=this.left=0};f.IntRect0=function(){this.bottom=this.right=this.top=this.left=0};f.IntRect1=function(b){this.left=b.left;this.top=b.top;this.right=b.right;this.bottom=b.bottom};f.IntRect4=function(b,d,e,f){this.left=b;this.top=d;this.right=e;this.bottom=f};f.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3};f.PolyType=
+{ptSubject:0,ptClip:1};f.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3};f.JoinType={jtSquare:0,jtRound:1,jtMiter:2};f.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4};f.EdgeSide={esLeft:0,esRight:1};f.Direction={dRightToLeft:0,dLeftToRight:1};f.TEdge=function(){this.Bot=new f.IntPoint;this.Curr=new f.IntPoint;this.Top=new f.IntPoint;this.Delta=new f.IntPoint;this.Dx=0;this.PolyTyp=f.PolyType.ptSubject;this.Side=f.EdgeSide.esLeft;this.OutIdx=
+this.WindCnt2=this.WindCnt=this.WindDelta=0;this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=this.Next=null};f.IntersectNode=function(){this.Edge2=this.Edge1=null;this.Pt=new f.IntPoint};f.MyIntersectNodeSort=function(){};f.MyIntersectNodeSort.Compare=function(b,d){var e=d.Pt.Y-b.Pt.Y;return 0<e?1:0>e?-1:0};f.LocalMinima=function(){this.Y=0;this.Next=this.RightBound=this.LeftBound=null};f.Scanbeam=function(){this.Y=0;this.Next=null};f.OutRec=function(){this.Idx=
+0;this.IsOpen=this.IsHole=!1;this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null};f.OutPt=function(){this.Idx=0;this.Pt=new f.IntPoint;this.Prev=this.Next=null};f.Join=function(){this.OutPt2=this.OutPt1=null;this.OffPt=new f.IntPoint};f.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null;this.m_edges=[];this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1;this.m_CurrentLM=this.m_MinimaList=null;this.m_HasOpenPaths=this.m_UseFullRange=!1};f.ClipperBase.horizontal=-9007199254740992;
+f.ClipperBase.Skip=-2;f.ClipperBase.Unassigned=-1;f.ClipperBase.tolerance=1E-20;f.ClipperBase.loRange=47453132;f.ClipperBase.hiRange=0xfffffffffffff;f.ClipperBase.near_zero=function(b){return b>-f.ClipperBase.tolerance&&b<f.ClipperBase.tolerance};f.ClipperBase.IsHorizontal=function(b){return 0===b.Delta.Y};f.ClipperBase.prototype.PointIsVertex=function(b,d){var e=d;do{if(f.IntPoint.op_Equality(e.Pt,b))return!0;e=e.Next}while(e!=d);return!1};f.ClipperBase.prototype.PointOnLineSegment=function(b,d,
+e,f){return f?b.X==d.X&&b.Y==d.Y||b.X==e.X&&b.Y==e.Y||b.X>d.X==b.X<e.X&&b.Y>d.Y==b.Y<e.Y&&p.op_Equality(p.Int128Mul(b.X-d.X,e.Y-d.Y),p.Int128Mul(e.X-d.X,b.Y-d.Y)):b.X==d.X&&b.Y==d.Y||b.X==e.X&&b.Y==e.Y||b.X>d.X==b.X<e.X&&b.Y>d.Y==b.Y<e.Y&&(b.X-d.X)*(e.Y-d.Y)==(e.X-d.X)*(b.Y-d.Y)};f.ClipperBase.prototype.PointOnPolygon=function(b,d,e){for(var f=d;;){if(this.PointOnLineSegment(b,f.Pt,f.Next.Pt,e))return!0;f=f.Next;if(f==d)break}return!1};f.ClipperBase.prototype.SlopesEqual=f.ClipperBase.SlopesEqual=
+function(){var b=arguments,d=b.length,e,q,n;if(3==d)return d=b[0],e=b[1],b[2]?p.op_Equality(p.Int128Mul(d.Delta.Y,e.Delta.X),p.Int128Mul(d.Delta.X,e.Delta.Y)):f.Cast_Int64(d.Delta.Y*e.Delta.X)==f.Cast_Int64(d.Delta.X*e.Delta.Y);if(4==d)return d=b[0],e=b[1],q=b[2],b[3]?p.op_Equality(p.Int128Mul(d.Y-e.Y,e.X-q.X),p.Int128Mul(d.X-e.X,e.Y-q.Y)):0===f.Cast_Int64((d.Y-e.Y)*(e.X-q.X))-f.Cast_Int64((d.X-e.X)*(e.Y-q.Y));d=b[0];e=b[1];q=b[2];n=b[3];return b[4]?p.op_Equality(p.Int128Mul(d.Y-e.Y,q.X-n.X),p.Int128Mul(d.X-
+e.X,q.Y-n.Y)):0===f.Cast_Int64((d.Y-e.Y)*(q.X-n.X))-f.Cast_Int64((d.X-e.X)*(q.Y-n.Y))};f.ClipperBase.SlopesEqual3=function(b,d,e){return e?p.op_Equality(p.Int128Mul(b.Delta.Y,d.Delta.X),p.Int128Mul(b.Delta.X,d.Delta.Y)):f.Cast_Int64(b.Delta.Y*d.Delta.X)==f.Cast_Int64(b.Delta.X*d.Delta.Y)};f.ClipperBase.SlopesEqual4=function(b,d,e,q){return q?p.op_Equality(p.Int128Mul(b.Y-d.Y,d.X-e.X),p.Int128Mul(b.X-d.X,d.Y-e.Y)):0===f.Cast_Int64((b.Y-d.Y)*(d.X-e.X))-f.Cast_Int64((b.X-d.X)*(d.Y-e.Y))};f.ClipperBase.SlopesEqual5=
+function(b,d,e,q,n){return n?p.op_Equality(p.Int128Mul(b.Y-d.Y,e.X-q.X),p.Int128Mul(b.X-d.X,e.Y-q.Y)):0===f.Cast_Int64((b.Y-d.Y)*(e.X-q.X))-f.Cast_Int64((b.X-d.X)*(e.Y-q.Y))};f.ClipperBase.prototype.Clear=function(){this.DisposeLocalMinimaList();for(var b=0,d=this.m_edges.length;b<d;++b){for(var e=0,q=this.m_edges[b].length;e<q;++e)this.m_edges[b][e]=null;f.Clear(this.m_edges[b])}f.Clear(this.m_edges);this.m_HasOpenPaths=this.m_UseFullRange=!1};f.ClipperBase.prototype.DisposeLocalMinimaList=function(){for(;null!==
+this.m_MinimaList;){var b=this.m_MinimaList.Next;this.m_MinimaList=null;this.m_MinimaList=b}this.m_CurrentLM=null};f.ClipperBase.prototype.RangeTest=function(b,d){if(d.Value)(b.X>f.ClipperBase.hiRange||b.Y>f.ClipperBase.hiRange||-b.X>f.ClipperBase.hiRange||-b.Y>f.ClipperBase.hiRange)&&f.Error("Coordinate outside allowed range in RangeTest().");else if(b.X>f.ClipperBase.loRange||b.Y>f.ClipperBase.loRange||-b.X>f.ClipperBase.loRange||-b.Y>f.ClipperBase.loRange)d.Value=!0,this.RangeTest(b,d)};f.ClipperBase.prototype.InitEdge=
+function(b,d,e,q){b.Next=d;b.Prev=e;b.Curr.X=q.X;b.Curr.Y=q.Y;f.use_xyz&&(b.Curr.Z=q.Z);b.OutIdx=-1};f.ClipperBase.prototype.InitEdge2=function(b,d){b.Curr.Y>=b.Next.Curr.Y?(b.Bot.X=b.Curr.X,b.Bot.Y=b.Curr.Y,f.use_xyz&&(b.Bot.Z=b.Curr.Z),b.Top.X=b.Next.Curr.X,b.Top.Y=b.Next.Curr.Y,f.use_xyz&&(b.Top.Z=b.Next.Curr.Z)):(b.Top.X=b.Curr.X,b.Top.Y=b.Curr.Y,f.use_xyz&&(b.Top.Z=b.Curr.Z),b.Bot.X=b.Next.Curr.X,b.Bot.Y=b.Next.Curr.Y,f.use_xyz&&(b.Bot.Z=b.Next.Curr.Z));this.SetDx(b);b.PolyTyp=d};f.ClipperBase.prototype.FindNextLocMin=
+function(b){for(var d;;){for(;f.IntPoint.op_Inequality(b.Bot,b.Prev.Bot)||f.IntPoint.op_Equality(b.Curr,b.Top);)b=b.Next;if(b.Dx!=f.ClipperBase.horizontal&&b.Prev.Dx!=f.ClipperBase.horizontal)break;for(;b.Prev.Dx==f.ClipperBase.horizontal;)b=b.Prev;for(d=b;b.Dx==f.ClipperBase.horizontal;)b=b.Next;if(b.Top.Y!=b.Prev.Bot.Y){d.Prev.Bot.X<b.Bot.X&&(b=d);break}}return b};f.ClipperBase.prototype.ProcessBound=function(b,d){var e,q=b,n;if(q.OutIdx==f.ClipperBase.Skip){b=q;if(d){for(;b.Top.Y==b.Next.Bot.Y;)b=
+b.Next;for(;b!=q&&b.Dx==f.ClipperBase.horizontal;)b=b.Prev}else{for(;b.Top.Y==b.Prev.Bot.Y;)b=b.Prev;for(;b!=q&&b.Dx==f.ClipperBase.horizontal;)b=b.Next}b==q?q=d?b.Next:b.Prev:(b=d?q.Next:q.Prev,e=new f.LocalMinima,e.Next=null,e.Y=b.Bot.Y,e.LeftBound=null,e.RightBound=b,b.WindDelta=0,q=this.ProcessBound(b,d),this.InsertLocalMinima(e));return q}b.Dx==f.ClipperBase.horizontal&&(e=d?b.Prev:b.Next,e.OutIdx!=f.ClipperBase.Skip&&(e.Dx==f.ClipperBase.horizontal?e.Bot.X!=b.Bot.X&&e.Top.X!=b.Bot.X&&this.ReverseHorizontal(b):
+e.Bot.X!=b.Bot.X&&this.ReverseHorizontal(b)));e=b;if(d){for(;q.Top.Y==q.Next.Bot.Y&&q.Next.OutIdx!=f.ClipperBase.Skip;)q=q.Next;if(q.Dx==f.ClipperBase.horizontal&&q.Next.OutIdx!=f.ClipperBase.Skip){for(n=q;n.Prev.Dx==f.ClipperBase.horizontal;)n=n.Prev;n.Prev.Top.X==q.Next.Top.X?d||(q=n.Prev):n.Prev.Top.X>q.Next.Top.X&&(q=n.Prev)}for(;b!=q;)b.NextInLML=b.Next,b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Prev.Top.X&&this.ReverseHorizontal(b),b=b.Next;b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!=
+b.Prev.Top.X&&this.ReverseHorizontal(b);q=q.Next}else{for(;q.Top.Y==q.Prev.Bot.Y&&q.Prev.OutIdx!=f.ClipperBase.Skip;)q=q.Prev;if(q.Dx==f.ClipperBase.horizontal&&q.Prev.OutIdx!=f.ClipperBase.Skip){for(n=q;n.Next.Dx==f.ClipperBase.horizontal;)n=n.Next;n.Next.Top.X==q.Prev.Top.X?d||(q=n.Next):n.Next.Top.X>q.Prev.Top.X&&(q=n.Next)}for(;b!=q;)b.NextInLML=b.Prev,b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Next.Top.X&&this.ReverseHorizontal(b),b=b.Prev;b.Dx==f.ClipperBase.horizontal&&b!=e&&b.Bot.X!=
+b.Next.Top.X&&this.ReverseHorizontal(b);q=q.Prev}return q};f.ClipperBase.prototype.AddPath=function(b,d,e){f.use_lines?e||d!=f.PolyType.ptClip||f.Error("AddPath: Open paths must be subject."):e||f.Error("AddPath: Open paths have been disabled.");var q=b.length-1;if(e)for(;0<q&&f.IntPoint.op_Equality(b[q],b[0]);)--q;for(;0<q&&f.IntPoint.op_Equality(b[q],b[q-1]);)--q;if(e&&2>q||!e&&1>q)return!1;for(var n=[],k=0;k<=q;k++)n.push(new f.TEdge);var v=!0;n[1].Curr.X=b[1].X;n[1].Curr.Y=b[1].Y;f.use_xyz&&(n[1].Curr.Z=
+b[1].Z);var C={Value:this.m_UseFullRange};this.RangeTest(b[0],C);this.m_UseFullRange=C.Value;C.Value=this.m_UseFullRange;this.RangeTest(b[q],C);this.m_UseFullRange=C.Value;this.InitEdge(n[0],n[1],n[q],b[0]);this.InitEdge(n[q],n[0],n[q-1],b[q]);for(k=q-1;1<=k;--k)C.Value=this.m_UseFullRange,this.RangeTest(b[k],C),this.m_UseFullRange=C.Value,this.InitEdge(n[k],n[k+1],n[k-1],b[k]);for(k=b=q=n[0];;)if(b.Curr!=b.Next.Curr||!e&&b.Next==q){if(b.Prev==b.Next)break;else if(e&&f.ClipperBase.SlopesEqual(b.Prev.Curr,
+b.Curr,b.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(b.Prev.Curr,b.Curr,b.Next.Curr))){b==q&&(q=b.Next);b=this.RemoveEdge(b);k=b=b.Prev;continue}b=b.Next;if(b==k||!e&&b.Next==q)break}else{if(b==b.Next)break;b==q&&(q=b.Next);k=b=this.RemoveEdge(b)}if(!e&&b==b.Next||e&&b.Prev==b.Next)return!1;e||(this.m_HasOpenPaths=!0,q.Prev.OutIdx=f.ClipperBase.Skip);b=q;do this.InitEdge2(b,d),b=b.Next,v&&b.Curr.Y!=q.Curr.Y&&(v=!1);while(b!=q);if(v){if(e)return!1;b.Prev.OutIdx=
+f.ClipperBase.Skip;b.Prev.Bot.X<b.Prev.Top.X&&this.ReverseHorizontal(b.Prev);d=new f.LocalMinima;d.Next=null;d.Y=b.Bot.Y;d.LeftBound=null;d.RightBound=b;d.RightBound.Side=f.EdgeSide.esRight;for(d.RightBound.WindDelta=0;b.Next.OutIdx!=f.ClipperBase.Skip;)b.NextInLML=b.Next,b.Bot.X!=b.Prev.Top.X&&this.ReverseHorizontal(b),b=b.Next;this.InsertLocalMinima(d);this.m_edges.push(n);return!0}this.m_edges.push(n);v=null;for(f.IntPoint.op_Equality(b.Prev.Bot,b.Prev.Top)&&(b=b.Next);;){b=this.FindNextLocMin(b);
+if(b==v)break;else null==v&&(v=b);d=new f.LocalMinima;d.Next=null;d.Y=b.Bot.Y;b.Dx<b.Prev.Dx?(d.LeftBound=b.Prev,d.RightBound=b,n=!1):(d.LeftBound=b,d.RightBound=b.Prev,n=!0);d.LeftBound.Side=f.EdgeSide.esLeft;d.RightBound.Side=f.EdgeSide.esRight;d.LeftBound.WindDelta=e?d.LeftBound.Next==d.RightBound?-1:1:0;d.RightBound.WindDelta=-d.LeftBound.WindDelta;b=this.ProcessBound(d.LeftBound,n);b.OutIdx==f.ClipperBase.Skip&&(b=this.ProcessBound(b,n));q=this.ProcessBound(d.RightBound,!n);q.OutIdx==f.ClipperBase.Skip&&
+(q=this.ProcessBound(q,!n));d.LeftBound.OutIdx==f.ClipperBase.Skip?d.LeftBound=null:d.RightBound.OutIdx==f.ClipperBase.Skip&&(d.RightBound=null);this.InsertLocalMinima(d);n||(b=q)}return!0};f.ClipperBase.prototype.AddPaths=function(b,d,e){for(var f=!1,n=0,k=b.length;n<k;++n)this.AddPath(b[n],d,e)&&(f=!0);return f};f.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3=function(b,d,e){return f.IntPoint.op_Equality(b,e)||f.IntPoint.op_Equality(b,d)||f.IntPoint.op_Equality(e,d)?!1:b.X!=e.X?d.X>b.X==d.X<e.X:d.Y>
+b.Y==d.Y<e.Y};f.ClipperBase.prototype.RemoveEdge=function(b){b.Prev.Next=b.Next;b.Next.Prev=b.Prev;var d=b.Next;b.Prev=null;return d};f.ClipperBase.prototype.SetDx=function(b){b.Delta.X=b.Top.X-b.Bot.X;b.Delta.Y=b.Top.Y-b.Bot.Y;b.Dx=0===b.Delta.Y?f.ClipperBase.horizontal:b.Delta.X/b.Delta.Y};f.ClipperBase.prototype.InsertLocalMinima=function(b){if(null===this.m_MinimaList)this.m_MinimaList=b;else if(b.Y>=this.m_MinimaList.Y)b.Next=this.m_MinimaList,this.m_MinimaList=b;else{for(var d=this.m_MinimaList;null!==
+d.Next&&b.Y<d.Next.Y;)d=d.Next;b.Next=d.Next;d.Next=b}};f.ClipperBase.prototype.PopLocalMinima=function(){null!==this.m_CurrentLM&&(this.m_CurrentLM=this.m_CurrentLM.Next)};f.ClipperBase.prototype.ReverseHorizontal=function(b){var d=b.Top.X;b.Top.X=b.Bot.X;b.Bot.X=d;f.use_xyz&&(d=b.Top.Z,b.Top.Z=b.Bot.Z,b.Bot.Z=d)};f.ClipperBase.prototype.Reset=function(){this.m_CurrentLM=this.m_MinimaList;if(null!=this.m_CurrentLM)for(var b=this.m_MinimaList;null!=b;){var d=b.LeftBound;null!=d&&(d.Curr.X=d.Bot.X,
+d.Curr.Y=d.Bot.Y,f.use_xyz&&(d.Curr.Z=d.Bot.Z),d.Side=f.EdgeSide.esLeft,d.OutIdx=f.ClipperBase.Unassigned);d=b.RightBound;null!=d&&(d.Curr.X=d.Bot.X,d.Curr.Y=d.Bot.Y,f.use_xyz&&(d.Curr.Z=d.Bot.Z),d.Side=f.EdgeSide.esRight,d.OutIdx=f.ClipperBase.Unassigned);b=b.Next}};f.Clipper=function(b){"undefined"==typeof b&&(b=0);this.m_PolyOuts=null;this.m_ClipType=f.ClipType.ctIntersection;this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m_ExecuteLocked=
+!1;this.m_SubjFillType=this.m_ClipFillType=f.PolyFillType.pftEvenOdd;this.m_GhostJoins=this.m_Joins=null;this.StrictlySimple=this.ReverseSolution=this.m_UsingPolyTree=!1;f.ClipperBase.call(this);this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m_IntersectList=[];this.m_IntersectNodeComparer=f.MyIntersectNodeSort.Compare;this.m_UsingPolyTree=this.m_ExecuteLocked=!1;this.m_PolyOuts=[];this.m_Joins=[];this.m_GhostJoins=[];this.ReverseSolution=0!==(1&b);this.StrictlySimple=0!==(2&b);this.PreserveCollinear=
+0!==(4&b);f.use_xyz&&(this.ZFillFunction=null)};f.Clipper.ioReverseSolution=1;f.Clipper.ioStrictlySimple=2;f.Clipper.ioPreserveCollinear=4;f.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),f.ClipperBase.prototype.Clear.call(this))};f.Clipper.prototype.DisposeScanbeamList=function(){for(;null!==this.m_Scanbeam;){var b=this.m_Scanbeam.Next;this.m_Scanbeam=null;this.m_Scanbeam=b}};f.Clipper.prototype.Reset=function(){f.ClipperBase.prototype.Reset.call(this);this.m_SortedEdges=
+this.m_ActiveEdges=this.m_Scanbeam=null;for(var b=this.m_MinimaList;null!==b;)this.InsertScanbeam(b.Y),b=b.Next};f.Clipper.prototype.InsertScanbeam=function(b){if(null===this.m_Scanbeam)this.m_Scanbeam=new f.Scanbeam,this.m_Scanbeam.Next=null,this.m_Scanbeam.Y=b;else if(b>this.m_Scanbeam.Y){var d=new f.Scanbeam;d.Y=b;d.Next=this.m_Scanbeam;this.m_Scanbeam=d}else{for(var e=this.m_Scanbeam;null!==e.Next&&b<=e.Next.Y;)e=e.Next;b!=e.Y&&(d=new f.Scanbeam,d.Y=b,d.Next=e.Next,e.Next=d)}};f.Clipper.prototype.Execute=
+function(){var b=arguments,d=b.length,e=b[1]instanceof f.PolyTree;if(4!=d||e){if(4==d&&e){var d=b[0],q=b[1],e=b[2],b=b[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0;this.m_SubjFillType=e;this.m_ClipFillType=b;this.m_ClipType=d;this.m_UsingPolyTree=!0;try{(n=this.ExecuteInternal())&&this.BuildResult2(q)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return n}if(2==d&&!e||2==d&&e)return d=b[0],q=b[1],this.Execute(d,q,f.PolyFillType.pftEvenOdd,f.PolyFillType.pftEvenOdd)}else{d=
+b[0];q=b[1];e=b[2];b=b[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&f.Error("Error: PolyTree struct is need for open path clipping.");this.m_ExecuteLocked=!0;f.Clear(q);this.m_SubjFillType=e;this.m_ClipFillType=b;this.m_ClipType=d;this.m_UsingPolyTree=!1;try{var n=this.ExecuteInternal();n&&this.BuildResult(q)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return n}};f.Clipper.prototype.FixHoleLinkage=function(b){if(null!==b.FirstLeft&&(b.IsHole==b.FirstLeft.IsHole||null===b.FirstLeft.Pts)){for(var d=
+b.FirstLeft;null!==d&&(d.IsHole==b.IsHole||null===d.Pts);)d=d.FirstLeft;b.FirstLeft=d}};f.Clipper.prototype.ExecuteInternal=function(){try{this.Reset();if(null===this.m_CurrentLM)return!1;var b=this.PopScanbeam();do{this.InsertLocalMinimaIntoAEL(b);f.Clear(this.m_GhostJoins);this.ProcessHorizontals(!1);if(null===this.m_Scanbeam)break;var d=this.PopScanbeam();if(!this.ProcessIntersections(d))return!1;this.ProcessEdgesAtTopOfScanbeam(d);b=d}while(null!==this.m_Scanbeam||null!==this.m_CurrentLM);for(var b=
+0,e=this.m_PolyOuts.length;b<e;b++){var q=this.m_PolyOuts[b];null===q.Pts||q.IsOpen||(q.IsHole^this.ReverseSolution)==0<this.Area(q)&&this.ReversePolyPtLinks(q.Pts)}this.JoinCommonEdges();b=0;for(e=this.m_PolyOuts.length;b<e;b++)q=this.m_PolyOuts[b],null===q.Pts||q.IsOpen||this.FixupOutPolygon(q);this.StrictlySimple&&this.DoSimplePolygons();return!0}finally{f.Clear(this.m_Joins),f.Clear(this.m_GhostJoins)}};f.Clipper.prototype.PopScanbeam=function(){var b=this.m_Scanbeam.Y;this.m_Scanbeam=this.m_Scanbeam.Next;
+return b};f.Clipper.prototype.DisposeAllPolyPts=function(){for(var b=0,d=this.m_PolyOuts.length;b<d;++b)this.DisposeOutRec(b);f.Clear(this.m_PolyOuts)};f.Clipper.prototype.DisposeOutRec=function(b){this.m_PolyOuts[b].Pts=null;this.m_PolyOuts[b]=null};f.Clipper.prototype.AddJoin=function(b,d,e){var q=new f.Join;q.OutPt1=b;q.OutPt2=d;q.OffPt.X=e.X;q.OffPt.Y=e.Y;f.use_xyz&&(q.OffPt.Z=e.Z);this.m_Joins.push(q)};f.Clipper.prototype.AddGhostJoin=function(b,d){var e=new f.Join;e.OutPt1=b;e.OffPt.X=d.X;e.OffPt.Y=
+d.Y;f.use_xyz&&(e.OffPt.Z=d.Z);this.m_GhostJoins.push(e)};f.Clipper.prototype.SetZ=function(b,d,e){null!==this.ZFillFunction&&0==b.Z&&null!==this.ZFillFunction&&(f.IntPoint.op_Equality(b,d.Bot)?b.Z=d.Bot.Z:f.IntPoint.op_Equality(b,d.Top)?b.Z=d.Top.Z:f.IntPoint.op_Equality(b,e.Bot)?b.Z=e.Bot.Z:f.IntPoint.op_Equality(b,e.Top)?b.Z=e.Top.Z:this.ZFillFunction(d.Bot,d.Top,e.Bot,e.Top,b))};f.Clipper.prototype.InsertLocalMinimaIntoAEL=function(b){for(;null!==this.m_CurrentLM&&this.m_CurrentLM.Y==b;){var d=
+this.m_CurrentLM.LeftBound,e=this.m_CurrentLM.RightBound;this.PopLocalMinima();var q=null;null===d?(this.InsertEdgeIntoAEL(e,null),this.SetWindingCount(e),this.IsContributing(e)&&(q=this.AddOutPt(e,e.Bot))):(null==e?(this.InsertEdgeIntoAEL(d,null),this.SetWindingCount(d),this.IsContributing(d)&&(q=this.AddOutPt(d,d.Bot))):(this.InsertEdgeIntoAEL(d,null),this.InsertEdgeIntoAEL(e,d),this.SetWindingCount(d),e.WindCnt=d.WindCnt,e.WindCnt2=d.WindCnt2,this.IsContributing(d)&&(q=this.AddLocalMinPoly(d,e,
+d.Bot))),this.InsertScanbeam(d.Top.Y));null!=e&&(f.ClipperBase.IsHorizontal(e)?this.AddEdgeToSEL(e):this.InsertScanbeam(e.Top.Y));if(null!=d&&null!=e){if(null!==q&&f.ClipperBase.IsHorizontal(e)&&0<this.m_GhostJoins.length&&0!==e.WindDelta)for(var n=0,k=this.m_GhostJoins.length;n<k;n++){var v=this.m_GhostJoins[n];this.HorzSegmentsOverlap(v.OutPt1.Pt.X,v.OffPt.X,e.Bot.X,e.Top.X)&&this.AddJoin(v.OutPt1,q,v.OffPt)}0<=d.OutIdx&&null!==d.PrevInAEL&&d.PrevInAEL.Curr.X==d.Bot.X&&0<=d.PrevInAEL.OutIdx&&f.ClipperBase.SlopesEqual(d.PrevInAEL,
+d,this.m_UseFullRange)&&0!==d.WindDelta&&0!==d.PrevInAEL.WindDelta&&(n=this.AddOutPt(d.PrevInAEL,d.Bot),this.AddJoin(q,n,d.Top));if(d.NextInAEL!=e&&(0<=e.OutIdx&&0<=e.PrevInAEL.OutIdx&&f.ClipperBase.SlopesEqual(e.PrevInAEL,e,this.m_UseFullRange)&&0!==e.WindDelta&&0!==e.PrevInAEL.WindDelta&&(n=this.AddOutPt(e.PrevInAEL,e.Bot),this.AddJoin(q,n,e.Top)),q=d.NextInAEL,null!==q))for(;q!=e;)this.IntersectEdges(e,q,d.Curr,!1),q=q.NextInAEL}}};f.Clipper.prototype.InsertEdgeIntoAEL=function(b,d){if(null===
+this.m_ActiveEdges)b.PrevInAEL=null,b.NextInAEL=null,this.m_ActiveEdges=b;else if(null===d&&this.E2InsertsBeforeE1(this.m_ActiveEdges,b))b.PrevInAEL=null,b.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges=this.m_ActiveEdges.PrevInAEL=b;else{for(null===d&&(d=this.m_ActiveEdges);null!==d.NextInAEL&&!this.E2InsertsBeforeE1(d.NextInAEL,b);)d=d.NextInAEL;b.NextInAEL=d.NextInAEL;null!==d.NextInAEL&&(d.NextInAEL.PrevInAEL=b);b.PrevInAEL=d;d.NextInAEL=b}};f.Clipper.prototype.E2InsertsBeforeE1=function(b,d){return d.Curr.X==
+b.Curr.X?d.Top.Y>b.Top.Y?d.Top.X<f.Clipper.TopX(b,d.Top.Y):b.Top.X>f.Clipper.TopX(d,b.Top.Y):d.Curr.X<b.Curr.X};f.Clipper.prototype.IsEvenOddFillType=function(b){return b.PolyTyp==f.PolyType.ptSubject?this.m_SubjFillType==f.PolyFillType.pftEvenOdd:this.m_ClipFillType==f.PolyFillType.pftEvenOdd};f.Clipper.prototype.IsEvenOddAltFillType=function(b){return b.PolyTyp==f.PolyType.ptSubject?this.m_ClipFillType==f.PolyFillType.pftEvenOdd:this.m_SubjFillType==f.PolyFillType.pftEvenOdd};f.Clipper.prototype.IsContributing=
+function(b){var d,e;b.PolyTyp==f.PolyType.ptSubject?(d=this.m_SubjFillType,e=this.m_ClipFillType):(d=this.m_ClipFillType,e=this.m_SubjFillType);switch(d){case f.PolyFillType.pftEvenOdd:if(0===b.WindDelta&&1!=b.WindCnt)return!1;break;case f.PolyFillType.pftNonZero:if(1!=Math.abs(b.WindCnt))return!1;break;case f.PolyFillType.pftPositive:if(1!=b.WindCnt)return!1;break;default:if(-1!=b.WindCnt)return!1}switch(this.m_ClipType){case f.ClipType.ctIntersection:switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0!==
+b.WindCnt2;case f.PolyFillType.pftPositive:return 0<b.WindCnt2;default:return 0>b.WindCnt2}case f.ClipType.ctUnion:switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0===b.WindCnt2;case f.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}case f.ClipType.ctDifference:if(b.PolyTyp==f.PolyType.ptSubject)switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0===b.WindCnt2;case f.PolyFillType.pftPositive:return 0>=b.WindCnt2;
+default:return 0<=b.WindCnt2}else switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0!==b.WindCnt2;case f.PolyFillType.pftPositive:return 0<b.WindCnt2;default:return 0>b.WindCnt2}case f.ClipType.ctXor:if(0===b.WindDelta)switch(e){case f.PolyFillType.pftEvenOdd:case f.PolyFillType.pftNonZero:return 0===b.WindCnt2;case f.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}}return!0};f.Clipper.prototype.SetWindingCount=function(b){for(var d=b.PrevInAEL;null!==
+d&&(d.PolyTyp!=b.PolyTyp||0===d.WindDelta);)d=d.PrevInAEL;if(null===d)b.WindCnt=0===b.WindDelta?1:b.WindDelta,b.WindCnt2=0,d=this.m_ActiveEdges;else{if(0===b.WindDelta&&this.m_ClipType!=f.ClipType.ctUnion)b.WindCnt=1;else if(this.IsEvenOddFillType(b))if(0===b.WindDelta){for(var e=!0,q=d.PrevInAEL;null!==q;)q.PolyTyp==d.PolyTyp&&0!==q.WindDelta&&(e=!e),q=q.PrevInAEL;b.WindCnt=e?0:1}else b.WindCnt=b.WindDelta;else b.WindCnt=0>d.WindCnt*d.WindDelta?1<Math.abs(d.WindCnt)?0>d.WindDelta*b.WindDelta?d.WindCnt:
+d.WindCnt+b.WindDelta:0===b.WindDelta?1:b.WindDelta:0===b.WindDelta?0>d.WindCnt?d.WindCnt-1:d.WindCnt+1:0>d.WindDelta*b.WindDelta?d.WindCnt:d.WindCnt+b.WindDelta;b.WindCnt2=d.WindCnt2;d=d.NextInAEL}if(this.IsEvenOddAltFillType(b))for(;d!=b;)0!==d.WindDelta&&(b.WindCnt2=0===b.WindCnt2?1:0),d=d.NextInAEL;else for(;d!=b;)b.WindCnt2+=d.WindDelta,d=d.NextInAEL};f.Clipper.prototype.AddEdgeToSEL=function(b){null===this.m_SortedEdges?(this.m_SortedEdges=b,b.PrevInSEL=null,b.NextInSEL=null):(b.NextInSEL=this.m_SortedEdges,
+b.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=b)};f.Clipper.prototype.CopyAELToSEL=function(){var b=this.m_ActiveEdges;for(this.m_SortedEdges=b;null!==b;)b.PrevInSEL=b.PrevInAEL,b=b.NextInSEL=b.NextInAEL};f.Clipper.prototype.SwapPositionsInAEL=function(b,d){if(b.NextInAEL!=b.PrevInAEL&&d.NextInAEL!=d.PrevInAEL){if(b.NextInAEL==d){var e=d.NextInAEL;null!==e&&(e.PrevInAEL=b);var f=b.PrevInAEL;null!==f&&(f.NextInAEL=d);d.PrevInAEL=f;d.NextInAEL=b;b.PrevInAEL=d;b.NextInAEL=e}else d.NextInAEL==
+b?(e=b.NextInAEL,null!==e&&(e.PrevInAEL=d),f=d.PrevInAEL,null!==f&&(f.NextInAEL=b),b.PrevInAEL=f,b.NextInAEL=d,d.PrevInAEL=b,d.NextInAEL=e):(e=b.NextInAEL,f=b.PrevInAEL,b.NextInAEL=d.NextInAEL,null!==b.NextInAEL&&(b.NextInAEL.PrevInAEL=b),b.PrevInAEL=d.PrevInAEL,null!==b.PrevInAEL&&(b.PrevInAEL.NextInAEL=b),d.NextInAEL=e,null!==d.NextInAEL&&(d.NextInAEL.PrevInAEL=d),d.PrevInAEL=f,null!==d.PrevInAEL&&(d.PrevInAEL.NextInAEL=d));null===b.PrevInAEL?this.m_ActiveEdges=b:null===d.PrevInAEL&&(this.m_ActiveEdges=
+d)}};f.Clipper.prototype.SwapPositionsInSEL=function(b,d){if(null!==b.NextInSEL||null!==b.PrevInSEL)if(null!==d.NextInSEL||null!==d.PrevInSEL){if(b.NextInSEL==d){var e=d.NextInSEL;null!==e&&(e.PrevInSEL=b);var f=b.PrevInSEL;null!==f&&(f.NextInSEL=d);d.PrevInSEL=f;d.NextInSEL=b;b.PrevInSEL=d;b.NextInSEL=e}else d.NextInSEL==b?(e=b.NextInSEL,null!==e&&(e.PrevInSEL=d),f=d.PrevInSEL,null!==f&&(f.NextInSEL=b),b.PrevInSEL=f,b.NextInSEL=d,d.PrevInSEL=b,d.NextInSEL=e):(e=b.NextInSEL,f=b.PrevInSEL,b.NextInSEL=
+d.NextInSEL,null!==b.NextInSEL&&(b.NextInSEL.PrevInSEL=b),b.PrevInSEL=d.PrevInSEL,null!==b.PrevInSEL&&(b.PrevInSEL.NextInSEL=b),d.NextInSEL=e,null!==d.NextInSEL&&(d.NextInSEL.PrevInSEL=d),d.PrevInSEL=f,null!==d.PrevInSEL&&(d.PrevInSEL.NextInSEL=d));null===b.PrevInSEL?this.m_SortedEdges=b:null===d.PrevInSEL&&(this.m_SortedEdges=d)}};f.Clipper.prototype.AddLocalMaxPoly=function(b,d,e){this.AddOutPt(b,e);0==d.WindDelta&&this.AddOutPt(d,e);b.OutIdx==d.OutIdx?(b.OutIdx=-1,d.OutIdx=-1):b.OutIdx<d.OutIdx?
+this.AppendPolygon(b,d):this.AppendPolygon(d,b)};f.Clipper.prototype.AddLocalMinPoly=function(b,d,e){var q,n;f.ClipperBase.IsHorizontal(d)||b.Dx>d.Dx?(q=this.AddOutPt(b,e),d.OutIdx=b.OutIdx,b.Side=f.EdgeSide.esLeft,d.Side=f.EdgeSide.esRight,n=b,b=n.PrevInAEL==d?d.PrevInAEL:n.PrevInAEL):(q=this.AddOutPt(d,e),b.OutIdx=d.OutIdx,b.Side=f.EdgeSide.esRight,d.Side=f.EdgeSide.esLeft,n=d,b=n.PrevInAEL==b?b.PrevInAEL:n.PrevInAEL);null!==b&&0<=b.OutIdx&&f.Clipper.TopX(b,e.Y)==f.Clipper.TopX(n,e.Y)&&f.ClipperBase.SlopesEqual(n,
+b,this.m_UseFullRange)&&0!==n.WindDelta&&0!==b.WindDelta&&(e=this.AddOutPt(b,e),this.AddJoin(q,e,n.Top));return q};f.Clipper.prototype.CreateOutRec=function(){var b=new f.OutRec;b.Idx=-1;b.IsHole=!1;b.IsOpen=!1;b.FirstLeft=null;b.Pts=null;b.BottomPt=null;b.PolyNode=null;this.m_PolyOuts.push(b);b.Idx=this.m_PolyOuts.length-1;return b};f.Clipper.prototype.AddOutPt=function(b,d){var e=b.Side==f.EdgeSide.esLeft;if(0>b.OutIdx){var q=this.CreateOutRec();q.IsOpen=0===b.WindDelta;var n=new f.OutPt;q.Pts=
+n;n.Idx=q.Idx;n.Pt.X=d.X;n.Pt.Y=d.Y;f.use_xyz&&(n.Pt.Z=d.Z);n.Next=n;n.Prev=n;q.IsOpen||this.SetHoleState(b,q);b.OutIdx=q.Idx}else{var q=this.m_PolyOuts[b.OutIdx],k=q.Pts;if(e&&f.IntPoint.op_Equality(d,k.Pt))return k;if(!e&&f.IntPoint.op_Equality(d,k.Prev.Pt))return k.Prev;n=new f.OutPt;n.Idx=q.Idx;n.Pt.X=d.X;n.Pt.Y=d.Y;f.use_xyz&&(n.Pt.Z=d.Z);n.Next=k;n.Prev=k.Prev;n.Prev.Next=n;k.Prev=n;e&&(q.Pts=n)}return n};f.Clipper.prototype.SwapPoints=function(b,d){var e=new f.IntPoint(b.Value);b.Value.X=d.Value.X;
+b.Value.Y=d.Value.Y;f.use_xyz&&(b.Value.Z=d.Value.Z);d.Value.X=e.X;d.Value.Y=e.Y;f.use_xyz&&(d.Value.Z=e.Z)};f.Clipper.prototype.HorzSegmentsOverlap=function(b,d,e,f){var n;b>d&&(n=b,b=d,d=n);e>f&&(n=e,e=f,f=n);return b<f&&e<d};f.Clipper.prototype.SetHoleState=function(b,d){for(var e=!1,f=b.PrevInAEL;null!==f;)0<=f.OutIdx&&0!=f.WindDelta&&(e=!e,null===d.FirstLeft&&(d.FirstLeft=this.m_PolyOuts[f.OutIdx])),f=f.PrevInAEL;e&&(d.IsHole=!0)};f.Clipper.prototype.GetDx=function(b,d){return b.Y==d.Y?f.ClipperBase.horizontal:
+(d.X-b.X)/(d.Y-b.Y)};f.Clipper.prototype.FirstIsBottomPt=function(b,d){for(var e=b.Prev;f.IntPoint.op_Equality(e.Pt,b.Pt)&&e!=b;)e=e.Prev;for(var q=Math.abs(this.GetDx(b.Pt,e.Pt)),e=b.Next;f.IntPoint.op_Equality(e.Pt,b.Pt)&&e!=b;)e=e.Next;for(var n=Math.abs(this.GetDx(b.Pt,e.Pt)),e=d.Prev;f.IntPoint.op_Equality(e.Pt,d.Pt)&&e!=d;)e=e.Prev;for(var k=Math.abs(this.GetDx(d.Pt,e.Pt)),e=d.Next;f.IntPoint.op_Equality(e.Pt,d.Pt)&&e!=d;)e=e.Next;e=Math.abs(this.GetDx(d.Pt,e.Pt));return q>=k&&q>=e||n>=k&&n>=
+e};f.Clipper.prototype.GetBottomPt=function(b){for(var d=null,e=b.Next;e!=b;)e.Pt.Y>b.Pt.Y?(b=e,d=null):e.Pt.Y==b.Pt.Y&&e.Pt.X<=b.Pt.X&&(e.Pt.X<b.Pt.X?(d=null,b=e):e.Next!=b&&e.Prev!=b&&(d=e)),e=e.Next;if(null!==d)for(;d!=e;)for(this.FirstIsBottomPt(e,d)||(b=d),d=d.Next;f.IntPoint.op_Inequality(d.Pt,b.Pt);)d=d.Next;return b};f.Clipper.prototype.GetLowermostRec=function(b,d){null===b.BottomPt&&(b.BottomPt=this.GetBottomPt(b.Pts));null===d.BottomPt&&(d.BottomPt=this.GetBottomPt(d.Pts));var e=b.BottomPt,
+f=d.BottomPt;return e.Pt.Y>f.Pt.Y?b:e.Pt.Y<f.Pt.Y?d:e.Pt.X<f.Pt.X?b:e.Pt.X>f.Pt.X?d:e.Next==e?d:f.Next==f?b:this.FirstIsBottomPt(e,f)?b:d};f.Clipper.prototype.Param1RightOfParam2=function(b,d){do if(b=b.FirstLeft,b==d)return!0;while(null!==b);return!1};f.Clipper.prototype.GetOutRec=function(b){for(b=this.m_PolyOuts[b];b!=this.m_PolyOuts[b.Idx];)b=this.m_PolyOuts[b.Idx];return b};f.Clipper.prototype.AppendPolygon=function(b,d){var e=this.m_PolyOuts[b.OutIdx],q=this.m_PolyOuts[d.OutIdx],n;n=this.Param1RightOfParam2(e,
+q)?q:this.Param1RightOfParam2(q,e)?e:this.GetLowermostRec(e,q);var k=e.Pts,v=k.Prev,C=q.Pts,p=C.Prev;b.Side==f.EdgeSide.esLeft?(d.Side==f.EdgeSide.esLeft?(this.ReversePolyPtLinks(C),C.Next=k,k.Prev=C,v.Next=p,p.Prev=v,e.Pts=p):(p.Next=k,k.Prev=p,C.Prev=v,v.Next=C,e.Pts=C),k=f.EdgeSide.esLeft):(d.Side==f.EdgeSide.esRight?(this.ReversePolyPtLinks(C),v.Next=p,p.Prev=v,C.Next=k,k.Prev=C):(v.Next=C,C.Prev=v,k.Prev=p,p.Next=k),k=f.EdgeSide.esRight);e.BottomPt=null;n==q&&(q.FirstLeft!=e&&(e.FirstLeft=q.FirstLeft),
+e.IsHole=q.IsHole);q.Pts=null;q.BottomPt=null;q.FirstLeft=e;n=b.OutIdx;v=d.OutIdx;b.OutIdx=-1;d.OutIdx=-1;for(C=this.m_ActiveEdges;null!==C;){if(C.OutIdx==v){C.OutIdx=n;C.Side=k;break}C=C.NextInAEL}q.Idx=e.Idx};f.Clipper.prototype.ReversePolyPtLinks=function(b){if(null!==b){var d,e;d=b;do e=d.Next,d.Next=d.Prev,d=d.Prev=e;while(d!=b)}};f.Clipper.SwapSides=function(b,d){var e=b.Side;b.Side=d.Side;d.Side=e};f.Clipper.SwapPolyIndexes=function(b,d){var e=b.OutIdx;b.OutIdx=d.OutIdx;d.OutIdx=e};f.Clipper.prototype.IntersectEdges=
+function(b,d,e){var q=0<=b.OutIdx,n=0<=d.OutIdx;f.use_xyz&&this.SetZ(e,b,d);if(!f.use_lines||0!==b.WindDelta&&0!==d.WindDelta){if(b.PolyTyp==d.PolyTyp)if(this.IsEvenOddFillType(b)){var k=b.WindCnt;b.WindCnt=d.WindCnt;d.WindCnt=k}else b.WindCnt=0===b.WindCnt+d.WindDelta?-b.WindCnt:b.WindCnt+d.WindDelta,d.WindCnt=0===d.WindCnt-b.WindDelta?-d.WindCnt:d.WindCnt-b.WindDelta;else this.IsEvenOddFillType(d)?b.WindCnt2=0===b.WindCnt2?1:0:b.WindCnt2+=d.WindDelta,this.IsEvenOddFillType(b)?d.WindCnt2=0===d.WindCnt2?
+1:0:d.WindCnt2-=b.WindDelta;var v,C,p;b.PolyTyp==f.PolyType.ptSubject?(v=this.m_SubjFillType,p=this.m_ClipFillType):(v=this.m_ClipFillType,p=this.m_SubjFillType);d.PolyTyp==f.PolyType.ptSubject?(C=this.m_SubjFillType,k=this.m_ClipFillType):(C=this.m_ClipFillType,k=this.m_SubjFillType);switch(v){case f.PolyFillType.pftPositive:v=b.WindCnt;break;case f.PolyFillType.pftNegative:v=-b.WindCnt;break;default:v=Math.abs(b.WindCnt)}switch(C){case f.PolyFillType.pftPositive:C=d.WindCnt;break;case f.PolyFillType.pftNegative:C=
+-d.WindCnt;break;default:C=Math.abs(d.WindCnt)}if(q&&n)0!=v&&1!=v||0!=C&&1!=C||b.PolyTyp!=d.PolyTyp&&this.m_ClipType!=f.ClipType.ctXor?this.AddLocalMaxPoly(b,d,e):(this.AddOutPt(b,e),this.AddOutPt(d,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d));else if(q){if(0===C||1==C)this.AddOutPt(b,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d)}else if(n){if(0===v||1==v)this.AddOutPt(d,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d)}else if(!(0!=v&&1!=v||0!=C&&1!=C)){switch(p){case f.PolyFillType.pftPositive:q=
+b.WindCnt2;break;case f.PolyFillType.pftNegative:q=-b.WindCnt2;break;default:q=Math.abs(b.WindCnt2)}switch(k){case f.PolyFillType.pftPositive:n=d.WindCnt2;break;case f.PolyFillType.pftNegative:n=-d.WindCnt2;break;default:n=Math.abs(d.WindCnt2)}if(b.PolyTyp!=d.PolyTyp)this.AddLocalMinPoly(b,d,e);else if(1==v&&1==C)switch(this.m_ClipType){case f.ClipType.ctIntersection:0<q&&0<n&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctUnion:0>=q&&0>=n&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctDifference:(b.PolyTyp==
+f.PolyType.ptClip&&0<q&&0<n||b.PolyTyp==f.PolyType.ptSubject&&0>=q&&0>=n)&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctXor:this.AddLocalMinPoly(b,d,e)}else f.Clipper.SwapSides(b,d)}}else if(0!=b.WindDelta||0!=d.WindDelta)b.PolyTyp==d.PolyTyp&&b.WindDelta!=d.WindDelta&&this.m_ClipType==f.ClipType.ctUnion?0===b.WindDelta?n&&(this.AddOutPt(b,e),q&&(b.OutIdx=-1)):q&&(this.AddOutPt(d,e),n&&(d.OutIdx=-1)):b.PolyTyp!=d.PolyTyp&&(0!==b.WindDelta||1!=Math.abs(d.WindCnt)||this.m_ClipType==f.ClipType.ctUnion&&
+0!==d.WindCnt2?0!==d.WindDelta||1!=Math.abs(b.WindCnt)||this.m_ClipType==f.ClipType.ctUnion&&0!==b.WindCnt2||(this.AddOutPt(d,e),n&&(d.OutIdx=-1)):(this.AddOutPt(b,e),q&&(b.OutIdx=-1)))};f.Clipper.prototype.DeleteFromAEL=function(b){var d=b.PrevInAEL,e=b.NextInAEL;if(null!==d||null!==e||b==this.m_ActiveEdges)null!==d?d.NextInAEL=e:this.m_ActiveEdges=e,null!==e&&(e.PrevInAEL=d),b.NextInAEL=null,b.PrevInAEL=null};f.Clipper.prototype.DeleteFromSEL=function(b){var d=b.PrevInSEL,e=b.NextInSEL;if(null!==
+d||null!==e||b==this.m_SortedEdges)null!==d?d.NextInSEL=e:this.m_SortedEdges=e,null!==e&&(e.PrevInSEL=d),b.NextInSEL=null,b.PrevInSEL=null};f.Clipper.prototype.UpdateEdgeIntoAEL=function(b){null===b.NextInLML&&f.Error("UpdateEdgeIntoAEL: invalid call");var d=b.PrevInAEL,e=b.NextInAEL;b.NextInLML.OutIdx=b.OutIdx;null!==d?d.NextInAEL=b.NextInLML:this.m_ActiveEdges=b.NextInLML;null!==e&&(e.PrevInAEL=b.NextInLML);b.NextInLML.Side=b.Side;b.NextInLML.WindDelta=b.WindDelta;b.NextInLML.WindCnt=b.WindCnt;
+b.NextInLML.WindCnt2=b.WindCnt2;b=b.NextInLML;b.Curr.X=b.Bot.X;b.Curr.Y=b.Bot.Y;f.use_xyz&&(b.Curr.Z=b.Bot.Z);b.PrevInAEL=d;b.NextInAEL=e;f.ClipperBase.IsHorizontal(b)||this.InsertScanbeam(b.Top.Y);return b};f.Clipper.prototype.ProcessHorizontals=function(b){for(var d=this.m_SortedEdges;null!==d;)this.DeleteFromSEL(d),this.ProcessHorizontal(d,b),d=this.m_SortedEdges};f.Clipper.prototype.GetHorzDirection=function(b,d){b.Bot.X<b.Top.X?(d.Left=b.Bot.X,d.Right=b.Top.X,d.Dir=f.Direction.dLeftToRight):
+(d.Left=b.Top.X,d.Right=b.Bot.X,d.Dir=f.Direction.dRightToLeft)};f.Clipper.prototype.ProcessHorizontal=function(b,d){var e={Dir:null,Left:null,Right:null};this.GetHorzDirection(b,e);for(var q=e.Dir,n=e.Left,k=e.Right,v=b,C=null;null!==v.NextInLML&&f.ClipperBase.IsHorizontal(v.NextInLML);)v=v.NextInLML;for(null===v.NextInLML&&(C=this.GetMaximaPair(v));;){for(var p=b==v,F=this.GetNextInAEL(b,q);null!==F&&!(F.Curr.X==b.Top.X&&null!==b.NextInLML&&F.Dx<b.NextInLML.Dx);){e=this.GetNextInAEL(F,q);if(q==
+f.Direction.dLeftToRight&&F.Curr.X<=k||q==f.Direction.dRightToLeft&&F.Curr.X>=n){if(F==C&&p){if(0<=b.OutIdx){q=this.AddOutPt(b,b.Top);for(e=this.m_SortedEdges;null!==e;)0<=e.OutIdx&&this.HorzSegmentsOverlap(b.Bot.X,b.Top.X,e.Bot.X,e.Top.X)&&(n=this.AddOutPt(e,e.Bot),this.AddJoin(n,q,e.Top)),e=e.NextInSEL;this.AddGhostJoin(q,b.Bot);this.AddLocalMaxPoly(b,C,b.Top)}this.DeleteFromAEL(b);this.DeleteFromAEL(C);return}if(q==f.Direction.dLeftToRight){var E=new f.IntPoint(F.Curr.X,b.Curr.Y);this.IntersectEdges(b,
+F,E)}else E=new f.IntPoint(F.Curr.X,b.Curr.Y),this.IntersectEdges(F,b,E);this.SwapPositionsInAEL(b,F)}else if(q==f.Direction.dLeftToRight&&F.Curr.X>=k||q==f.Direction.dRightToLeft&&F.Curr.X<=n)break;F=e}if(null!==b.NextInLML&&f.ClipperBase.IsHorizontal(b.NextInLML))b=this.UpdateEdgeIntoAEL(b),0<=b.OutIdx&&this.AddOutPt(b,b.Bot),e={Dir:q,Left:n,Right:k},this.GetHorzDirection(b,e),q=e.Dir,n=e.Left,k=e.Right;else break}null!==b.NextInLML?0<=b.OutIdx?(q=this.AddOutPt(b,b.Top),d&&this.AddGhostJoin(q,b.Bot),
+b=this.UpdateEdgeIntoAEL(b),0!==b.WindDelta&&(C=b.PrevInAEL,e=b.NextInAEL,null!==C&&C.Curr.X==b.Bot.X&&C.Curr.Y==b.Bot.Y&&0!==C.WindDelta&&0<=C.OutIdx&&C.Curr.Y>C.Top.Y&&f.ClipperBase.SlopesEqual(b,C,this.m_UseFullRange)?(n=this.AddOutPt(C,b.Bot),this.AddJoin(q,n,b.Top)):null!==e&&e.Curr.X==b.Bot.X&&e.Curr.Y==b.Bot.Y&&0!==e.WindDelta&&0<=e.OutIdx&&e.Curr.Y>e.Top.Y&&f.ClipperBase.SlopesEqual(b,e,this.m_UseFullRange)&&(n=this.AddOutPt(e,b.Bot),this.AddJoin(q,n,b.Top)))):this.UpdateEdgeIntoAEL(b):(0<=
+b.OutIdx&&this.AddOutPt(b,b.Top),this.DeleteFromAEL(b))};f.Clipper.prototype.GetNextInAEL=function(b,d){return d==f.Direction.dLeftToRight?b.NextInAEL:b.PrevInAEL};f.Clipper.prototype.IsMinima=function(b){return null!==b&&b.Prev.NextInLML!=b&&b.Next.NextInLML!=b};f.Clipper.prototype.IsMaxima=function(b,d){return null!==b&&b.Top.Y==d&&null===b.NextInLML};f.Clipper.prototype.IsIntermediate=function(b,d){return b.Top.Y==d&&null!==b.NextInLML};f.Clipper.prototype.GetMaximaPair=function(b){var d=null;
+f.IntPoint.op_Equality(b.Next.Top,b.Top)&&null===b.Next.NextInLML?d=b.Next:f.IntPoint.op_Equality(b.Prev.Top,b.Top)&&null===b.Prev.NextInLML&&(d=b.Prev);return null===d||-2!=d.OutIdx&&(d.NextInAEL!=d.PrevInAEL||f.ClipperBase.IsHorizontal(d))?d:null};f.Clipper.prototype.ProcessIntersections=function(b){if(null==this.m_ActiveEdges)return!0;try{this.BuildIntersectList(b);if(0==this.m_IntersectList.length)return!0;if(1==this.m_IntersectList.length||this.FixupIntersectionOrder())this.ProcessIntersectList();
+else return!1}catch(d){this.m_SortedEdges=null,this.m_IntersectList.length=0,f.Error("ProcessIntersections error")}this.m_SortedEdges=null;return!0};f.Clipper.prototype.BuildIntersectList=function(b){if(null!==this.m_ActiveEdges){var d=this.m_ActiveEdges;for(this.m_SortedEdges=d;null!==d;)d.PrevInSEL=d.PrevInAEL,d.NextInSEL=d.NextInAEL,d.Curr.X=f.Clipper.TopX(d,b),d=d.NextInAEL;for(var e=!0;e&&null!==this.m_SortedEdges;){e=!1;for(d=this.m_SortedEdges;null!==d.NextInSEL;){b=d.NextInSEL;var q=new f.IntPoint;
+d.Curr.X>b.Curr.X?(this.IntersectPoint(d,b,q),e=new f.IntersectNode,e.Edge1=d,e.Edge2=b,e.Pt.X=q.X,e.Pt.Y=q.Y,f.use_xyz&&(e.Pt.Z=q.Z),this.m_IntersectList.push(e),this.SwapPositionsInSEL(d,b),e=!0):d=b}if(null!==d.PrevInSEL)d.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}};f.Clipper.prototype.EdgesAdjacent=function(b){return b.Edge1.NextInSEL==b.Edge2||b.Edge1.PrevInSEL==b.Edge2};f.Clipper.IntersectNodeSort=function(b,d){return d.Pt.Y-b.Pt.Y};f.Clipper.prototype.FixupIntersectionOrder=
+function(){this.m_IntersectList.sort(this.m_IntersectNodeComparer);this.CopyAELToSEL();for(var b=this.m_IntersectList.length,d=0;d<b;d++){if(!this.EdgesAdjacent(this.m_IntersectList[d])){for(var e=d+1;e<b&&!this.EdgesAdjacent(this.m_IntersectList[e]);)e++;if(e==b)return!1;var f=this.m_IntersectList[d];this.m_IntersectList[d]=this.m_IntersectList[e];this.m_IntersectList[e]=f}this.SwapPositionsInSEL(this.m_IntersectList[d].Edge1,this.m_IntersectList[d].Edge2)}return!0};f.Clipper.prototype.ProcessIntersectList=
+function(){for(var b=0,d=this.m_IntersectList.length;b<d;b++){var e=this.m_IntersectList[b];this.IntersectEdges(e.Edge1,e.Edge2,e.Pt);this.SwapPositionsInAEL(e.Edge1,e.Edge2)}this.m_IntersectList.length=0};I=function(b){return 0>b?Math.ceil(b-.5):Math.round(b)};Jb=function(b){return 0>b?Math.ceil(b-.5):Math.floor(b+.5)};Qa=function(b){return 0>b?-Math.round(Math.abs(b)):Math.round(b)};ab=function(b){if(0>b)return b-=.5,-2147483648>b?Math.ceil(b):b|0;b+=.5;return 2147483647<b?Math.floor(b):b|0};f.Clipper.Round=
+Y?I:nb?Qa:Xb?ab:Jb;f.Clipper.TopX=function(b,d){return d==b.Top.Y?b.Top.X:b.Bot.X+f.Clipper.Round(b.Dx*(d-b.Bot.Y))};f.Clipper.prototype.IntersectPoint=function(b,d,e){e.X=0;e.Y=0;var q,n;if(b.Dx==d.Dx)e.Y=b.Curr.Y,e.X=f.Clipper.TopX(b,e.Y);else{if(0===b.Delta.X)e.X=b.Bot.X,f.ClipperBase.IsHorizontal(d)?e.Y=d.Bot.Y:(n=d.Bot.Y-d.Bot.X/d.Dx,e.Y=f.Clipper.Round(e.X/d.Dx+n));else if(0===d.Delta.X)e.X=d.Bot.X,f.ClipperBase.IsHorizontal(b)?e.Y=b.Bot.Y:(q=b.Bot.Y-b.Bot.X/b.Dx,e.Y=f.Clipper.Round(e.X/b.Dx+
+q));else{q=b.Bot.X-b.Bot.Y*b.Dx;n=d.Bot.X-d.Bot.Y*d.Dx;var k=(n-q)/(b.Dx-d.Dx);e.Y=f.Clipper.Round(k);e.X=Math.abs(b.Dx)<Math.abs(d.Dx)?f.Clipper.Round(b.Dx*k+q):f.Clipper.Round(d.Dx*k+n)}if(e.Y<b.Top.Y||e.Y<d.Top.Y){if(b.Top.Y>d.Top.Y)return e.Y=b.Top.Y,e.X=f.Clipper.TopX(d,b.Top.Y),e.X<b.Top.X;e.Y=d.Top.Y;e.X=Math.abs(b.Dx)<Math.abs(d.Dx)?f.Clipper.TopX(b,e.Y):f.Clipper.TopX(d,e.Y)}e.Y>b.Curr.Y&&(e.Y=b.Curr.Y,e.X=Math.abs(b.Dx)>Math.abs(d.Dx)?f.Clipper.TopX(d,e.Y):f.Clipper.TopX(b,e.Y))}};f.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=
+function(b){for(var d=this.m_ActiveEdges;null!==d;){var e=this.IsMaxima(d,b);e&&(e=this.GetMaximaPair(d),e=null===e||!f.ClipperBase.IsHorizontal(e));if(e){var q=d.PrevInAEL;this.DoMaxima(d);d=null===q?this.m_ActiveEdges:q.NextInAEL}else{this.IsIntermediate(d,b)&&f.ClipperBase.IsHorizontal(d.NextInLML)?(d=this.UpdateEdgeIntoAEL(d),0<=d.OutIdx&&this.AddOutPt(d,d.Bot),this.AddEdgeToSEL(d)):(d.Curr.X=f.Clipper.TopX(d,b),d.Curr.Y=b);if(this.StrictlySimple&&(q=d.PrevInAEL,0<=d.OutIdx&&0!==d.WindDelta&&
+null!==q&&0<=q.OutIdx&&q.Curr.X==d.Curr.X&&0!==q.WindDelta)){var n=new f.IntPoint(d.Curr);f.use_xyz&&this.SetZ(n,q,d);e=this.AddOutPt(q,n);q=this.AddOutPt(d,n);this.AddJoin(e,q,n)}d=d.NextInAEL}}this.ProcessHorizontals(!0);for(d=this.m_ActiveEdges;null!==d;)this.IsIntermediate(d,b)&&(e=null,0<=d.OutIdx&&(e=this.AddOutPt(d,d.Top)),d=this.UpdateEdgeIntoAEL(d),q=d.PrevInAEL,n=d.NextInAEL,null!==q&&q.Curr.X==d.Bot.X&&q.Curr.Y==d.Bot.Y&&null!==e&&0<=q.OutIdx&&q.Curr.Y>q.Top.Y&&f.ClipperBase.SlopesEqual(d,
+q,this.m_UseFullRange)&&0!==d.WindDelta&&0!==q.WindDelta?(q=this.AddOutPt(q,d.Bot),this.AddJoin(e,q,d.Top)):null!==n&&n.Curr.X==d.Bot.X&&n.Curr.Y==d.Bot.Y&&null!==e&&0<=n.OutIdx&&n.Curr.Y>n.Top.Y&&f.ClipperBase.SlopesEqual(d,n,this.m_UseFullRange)&&0!==d.WindDelta&&0!==n.WindDelta&&(q=this.AddOutPt(n,d.Bot),this.AddJoin(e,q,d.Top))),d=d.NextInAEL};f.Clipper.prototype.DoMaxima=function(b){var d=this.GetMaximaPair(b);if(null===d)0<=b.OutIdx&&this.AddOutPt(b,b.Top),this.DeleteFromAEL(b);else{for(var e=
+b.NextInAEL;null!==e&&e!=d;)this.IntersectEdges(b,e,b.Top),this.SwapPositionsInAEL(b,e),e=b.NextInAEL;-1==b.OutIdx&&-1==d.OutIdx?(this.DeleteFromAEL(b),this.DeleteFromAEL(d)):0<=b.OutIdx&&0<=d.OutIdx?(0<=b.OutIdx&&this.AddLocalMaxPoly(b,d,b.Top),this.DeleteFromAEL(b),this.DeleteFromAEL(d)):f.use_lines&&0===b.WindDelta?(0<=b.OutIdx&&(this.AddOutPt(b,b.Top),b.OutIdx=-1),this.DeleteFromAEL(b),0<=d.OutIdx&&(this.AddOutPt(d,b.Top),d.OutIdx=-1),this.DeleteFromAEL(d)):f.Error("DoMaxima error")}};f.Clipper.ReversePaths=
+function(b){for(var d=0,e=b.length;d<e;d++)b[d].reverse()};f.Clipper.Orientation=function(b){return 0<=f.Clipper.Area(b)};f.Clipper.prototype.PointCount=function(b){if(null===b)return 0;var d=0,e=b;do d++,e=e.Next;while(e!=b);return d};f.Clipper.prototype.BuildResult=function(b){f.Clear(b);for(var d=0,e=this.m_PolyOuts.length;d<e;d++){var q=this.m_PolyOuts[d];if(null!==q.Pts){var q=q.Pts.Prev,n=this.PointCount(q);if(!(2>n)){for(var k=Array(n),v=0;v<n;v++)k[v]=q.Pt,q=q.Prev;b.push(k)}}}};f.Clipper.prototype.BuildResult2=
+function(b){b.Clear();for(var d=0,e=this.m_PolyOuts.length;d<e;d++){var q=this.m_PolyOuts[d],n=this.PointCount(q.Pts);if(!(q.IsOpen&&2>n||!q.IsOpen&&3>n)){this.FixHoleLinkage(q);var k=new f.PolyNode;b.m_AllPolys.push(k);q.PolyNode=k;k.m_polygon.length=n;for(var q=q.Pts.Prev,v=0;v<n;v++)k.m_polygon[v]=q.Pt,q=q.Prev}}d=0;for(e=this.m_PolyOuts.length;d<e;d++)q=this.m_PolyOuts[d],null!==q.PolyNode&&(q.IsOpen?(q.PolyNode.IsOpen=!0,b.AddChild(q.PolyNode)):null!==q.FirstLeft&&null!=q.FirstLeft.PolyNode?
+q.FirstLeft.PolyNode.AddChild(q.PolyNode):b.AddChild(q.PolyNode))};f.Clipper.prototype.FixupOutPolygon=function(b){var d=null;b.BottomPt=null;for(var e=b.Pts;;){if(e.Prev==e||e.Prev==e.Next){b.Pts=null;return}if(f.IntPoint.op_Equality(e.Pt,e.Next.Pt)||f.IntPoint.op_Equality(e.Pt,e.Prev.Pt)||f.ClipperBase.SlopesEqual(e.Prev.Pt,e.Pt,e.Next.Pt,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(e.Prev.Pt,e.Pt,e.Next.Pt)))d=null,e.Prev.Next=e.Next,e=e.Next.Prev=e.Prev;else if(e==
+d)break;else null===d&&(d=e),e=e.Next}b.Pts=e};f.Clipper.prototype.DupOutPt=function(b,d){var e=new f.OutPt;e.Pt.X=b.Pt.X;e.Pt.Y=b.Pt.Y;f.use_xyz&&(e.Pt.Z=b.Pt.Z);e.Idx=b.Idx;d?(e.Next=b.Next,e.Prev=b,b.Next.Prev=e,b.Next=e):(e.Prev=b.Prev,e.Next=b,b.Prev.Next=e,b.Prev=e);return e};f.Clipper.prototype.GetOverlap=function(b,d,e,f,n){b<d?e<f?(n.Left=Math.max(b,e),n.Right=Math.min(d,f)):(n.Left=Math.max(b,f),n.Right=Math.min(d,e)):e<f?(n.Left=Math.max(d,e),n.Right=Math.min(b,f)):(n.Left=Math.max(d,f),
+n.Right=Math.min(b,e));return n.Left<n.Right};f.Clipper.prototype.JoinHorz=function(b,d,e,q,n,k){var v=b.Pt.X>d.Pt.X?f.Direction.dRightToLeft:f.Direction.dLeftToRight;q=e.Pt.X>q.Pt.X?f.Direction.dRightToLeft:f.Direction.dLeftToRight;if(v==q)return!1;if(v==f.Direction.dLeftToRight){for(;b.Next.Pt.X<=n.X&&b.Next.Pt.X>=b.Pt.X&&b.Next.Pt.Y==n.Y;)b=b.Next;k&&b.Pt.X!=n.X&&(b=b.Next);d=this.DupOutPt(b,!k);f.IntPoint.op_Inequality(d.Pt,n)&&(b=d,b.Pt.X=n.X,b.Pt.Y=n.Y,f.use_xyz&&(b.Pt.Z=n.Z),d=this.DupOutPt(b,
+!k))}else{for(;b.Next.Pt.X>=n.X&&b.Next.Pt.X<=b.Pt.X&&b.Next.Pt.Y==n.Y;)b=b.Next;k||b.Pt.X==n.X||(b=b.Next);d=this.DupOutPt(b,k);f.IntPoint.op_Inequality(d.Pt,n)&&(b=d,b.Pt.X=n.X,b.Pt.Y=n.Y,f.use_xyz&&(b.Pt.Z=n.Z),d=this.DupOutPt(b,k))}if(q==f.Direction.dLeftToRight){for(;e.Next.Pt.X<=n.X&&e.Next.Pt.X>=e.Pt.X&&e.Next.Pt.Y==n.Y;)e=e.Next;k&&e.Pt.X!=n.X&&(e=e.Next);q=this.DupOutPt(e,!k);f.IntPoint.op_Inequality(q.Pt,n)&&(e=q,e.Pt.X=n.X,e.Pt.Y=n.Y,f.use_xyz&&(e.Pt.Z=n.Z),q=this.DupOutPt(e,!k))}else{for(;e.Next.Pt.X>=
+n.X&&e.Next.Pt.X<=e.Pt.X&&e.Next.Pt.Y==n.Y;)e=e.Next;k||e.Pt.X==n.X||(e=e.Next);q=this.DupOutPt(e,k);f.IntPoint.op_Inequality(q.Pt,n)&&(e=q,e.Pt.X=n.X,e.Pt.Y=n.Y,f.use_xyz&&(e.Pt.Z=n.Z),q=this.DupOutPt(e,k))}v==f.Direction.dLeftToRight==k?(b.Prev=e,e.Next=b,d.Next=q,q.Prev=d):(b.Next=e,e.Prev=b,d.Prev=q,q.Next=d);return!0};f.Clipper.prototype.JoinPoints=function(b,d,e){var q=b.OutPt1,n;new f.OutPt;var k=b.OutPt2,v;new f.OutPt;if((v=b.OutPt1.Pt.Y==b.OffPt.Y)&&f.IntPoint.op_Equality(b.OffPt,b.OutPt1.Pt)&&
+f.IntPoint.op_Equality(b.OffPt,b.OutPt2.Pt)){if(d!=e)return!1;for(n=b.OutPt1.Next;n!=q&&f.IntPoint.op_Equality(n.Pt,b.OffPt);)n=n.Next;n=n.Pt.Y>b.OffPt.Y;for(v=b.OutPt2.Next;v!=k&&f.IntPoint.op_Equality(v.Pt,b.OffPt);)v=v.Next;if(n==v.Pt.Y>b.OffPt.Y)return!1;n?(n=this.DupOutPt(q,!1),v=this.DupOutPt(k,!0),q.Prev=k,k.Next=q,n.Next=v,v.Prev=n):(n=this.DupOutPt(q,!0),v=this.DupOutPt(k,!1),q.Next=k,k.Prev=q,n.Prev=v,v.Next=n);b.OutPt1=q;b.OutPt2=n;return!0}if(v){for(n=q;q.Prev.Pt.Y==q.Pt.Y&&q.Prev!=n&&
+q.Prev!=k;)q=q.Prev;for(;n.Next.Pt.Y==n.Pt.Y&&n.Next!=q&&n.Next!=k;)n=n.Next;if(n.Next==q||n.Next==k)return!1;for(v=k;k.Prev.Pt.Y==k.Pt.Y&&k.Prev!=v&&k.Prev!=n;)k=k.Prev;for(;v.Next.Pt.Y==v.Pt.Y&&v.Next!=k&&v.Next!=q;)v=v.Next;if(v.Next==k||v.Next==q)return!1;e={Left:null,Right:null};if(!this.GetOverlap(q.Pt.X,n.Pt.X,k.Pt.X,v.Pt.X,e))return!1;d=e.Left;var C=e.Right;e=new f.IntPoint;q.Pt.X>=d&&q.Pt.X<=C?(e.X=q.Pt.X,e.Y=q.Pt.Y,f.use_xyz&&(e.Z=q.Pt.Z),d=q.Pt.X>n.Pt.X):k.Pt.X>=d&&k.Pt.X<=C?(e.X=k.Pt.X,
+e.Y=k.Pt.Y,f.use_xyz&&(e.Z=k.Pt.Z),d=k.Pt.X>v.Pt.X):n.Pt.X>=d&&n.Pt.X<=C?(e.X=n.Pt.X,e.Y=n.Pt.Y,f.use_xyz&&(e.Z=n.Pt.Z),d=n.Pt.X>q.Pt.X):(e.X=v.Pt.X,e.Y=v.Pt.Y,f.use_xyz&&(e.Z=v.Pt.Z),d=v.Pt.X>k.Pt.X);b.OutPt1=q;b.OutPt2=k;return this.JoinHorz(q,n,k,v,e,d)}for(n=q.Next;f.IntPoint.op_Equality(n.Pt,q.Pt)&&n!=q;)n=n.Next;if(C=n.Pt.Y>q.Pt.Y||!f.ClipperBase.SlopesEqual(q.Pt,n.Pt,b.OffPt,this.m_UseFullRange)){for(n=q.Prev;f.IntPoint.op_Equality(n.Pt,q.Pt)&&n!=q;)n=n.Prev;if(n.Pt.Y>q.Pt.Y||!f.ClipperBase.SlopesEqual(q.Pt,
+n.Pt,b.OffPt,this.m_UseFullRange))return!1}for(v=k.Next;f.IntPoint.op_Equality(v.Pt,k.Pt)&&v!=k;)v=v.Next;var p=v.Pt.Y>k.Pt.Y||!f.ClipperBase.SlopesEqual(k.Pt,v.Pt,b.OffPt,this.m_UseFullRange);if(p){for(v=k.Prev;f.IntPoint.op_Equality(v.Pt,k.Pt)&&v!=k;)v=v.Prev;if(v.Pt.Y>k.Pt.Y||!f.ClipperBase.SlopesEqual(k.Pt,v.Pt,b.OffPt,this.m_UseFullRange))return!1}if(n==q||v==k||n==v||d==e&&C==p)return!1;C?(n=this.DupOutPt(q,!1),v=this.DupOutPt(k,!0),q.Prev=k,k.Next=q,n.Next=v,v.Prev=n):(n=this.DupOutPt(q,!0),
+v=this.DupOutPt(k,!1),q.Next=k,k.Prev=q,n.Prev=v,v.Next=n);b.OutPt1=q;b.OutPt2=n;return!0};f.Clipper.GetBounds=function(b){for(var d=0,e=b.length;d<e&&0==b[d].length;)d++;if(d==e)return new f.IntRect(0,0,0,0);var q=new f.IntRect;q.left=b[d][0].X;q.right=q.left;q.top=b[d][0].Y;for(q.bottom=q.top;d<e;d++)for(var k=0,N=b[d].length;k<N;k++)b[d][k].X<q.left?q.left=b[d][k].X:b[d][k].X>q.right&&(q.right=b[d][k].X),b[d][k].Y<q.top?q.top=b[d][k].Y:b[d][k].Y>q.bottom&&(q.bottom=b[d][k].Y);return q};f.Clipper.prototype.GetBounds2=
+function(b){var d=b,e=new f.IntRect;e.left=b.Pt.X;e.right=b.Pt.X;e.top=b.Pt.Y;e.bottom=b.Pt.Y;for(b=b.Next;b!=d;)b.Pt.X<e.left&&(e.left=b.Pt.X),b.Pt.X>e.right&&(e.right=b.Pt.X),b.Pt.Y<e.top&&(e.top=b.Pt.Y),b.Pt.Y>e.bottom&&(e.bottom=b.Pt.Y),b=b.Next;return e};f.Clipper.PointInPolygon=function(b,d){var e=0,f=d.length;if(3>f)return 0;for(var k=d[0],N=1;N<=f;++N){var v=N==f?d[0]:d[N];if(v.Y==b.Y&&(v.X==b.X||k.Y==b.Y&&v.X>b.X==k.X<b.X))return-1;if(k.Y<b.Y!=v.Y<b.Y)if(k.X>=b.X)if(v.X>b.X)e=1-e;else{var C=
+(k.X-b.X)*(v.Y-b.Y)-(v.X-b.X)*(k.Y-b.Y);if(0==C)return-1;0<C==v.Y>k.Y&&(e=1-e)}else if(v.X>b.X){C=(k.X-b.X)*(v.Y-b.Y)-(v.X-b.X)*(k.Y-b.Y);if(0==C)return-1;0<C==v.Y>k.Y&&(e=1-e)}k=v}return e};f.Clipper.prototype.PointInPolygon=function(b,d){var e=0,f=d,k=b.X,N=b.Y,v=d.Pt.X,C=d.Pt.Y;do{d=d.Next;var p=d.Pt.X,F=d.Pt.Y;if(F==N&&(p==k||C==N&&p>k==v<k))return-1;if(C<N!=F<N)if(v>=k)if(p>k)e=1-e;else{v=(v-k)*(F-N)-(p-k)*(C-N);if(0==v)return-1;0<v==F>C&&(e=1-e)}else if(p>k){v=(v-k)*(F-N)-(p-k)*(C-N);if(0==
+v)return-1;0<v==F>C&&(e=1-e)}v=p;C=F}while(f!=d);return e};f.Clipper.prototype.Poly2ContainsPoly1=function(b,d){var e=b;do{var f=this.PointInPolygon(e.Pt,d);if(0<=f)return 0<f;e=e.Next}while(e!=b);return!0};f.Clipper.prototype.FixupFirstLefts1=function(b,d){for(var e=0,f=this.m_PolyOuts.length;e<f;e++){var k=this.m_PolyOuts[e];null!=k.Pts&&null!=k.FirstLeft&&this.ParseFirstLeft(k.FirstLeft)==b&&this.Poly2ContainsPoly1(k.Pts,d.Pts)&&(k.FirstLeft=d)}};f.Clipper.prototype.FixupFirstLefts2=function(b,
+d){for(var e=0,f=this.m_PolyOuts,k=f.length,p=f[e];e<k;e++,p=f[e])p.FirstLeft==b&&(p.FirstLeft=d)};f.Clipper.ParseFirstLeft=function(b){for(;null!=b&&null==b.Pts;)b=b.FirstLeft;return b};f.Clipper.prototype.JoinCommonEdges=function(){for(var b=0,d=this.m_Joins.length;b<d;b++){var e=this.m_Joins[b],k=this.GetOutRec(e.OutPt1.Idx),n=this.GetOutRec(e.OutPt2.Idx);if(null!=k.Pts&&null!=n.Pts){var p;p=k==n?k:this.Param1RightOfParam2(k,n)?n:this.Param1RightOfParam2(n,k)?k:this.GetLowermostRec(k,n);if(this.JoinPoints(e,
+k,n))if(k==n){k.Pts=e.OutPt1;k.BottomPt=null;n=this.CreateOutRec();n.Pts=e.OutPt2;this.UpdateOutPtIdxs(n);if(this.m_UsingPolyTree){p=0;for(var v=this.m_PolyOuts.length;p<v-1;p++){var C=this.m_PolyOuts[p];null!=C.Pts&&f.Clipper.ParseFirstLeft(C.FirstLeft)==k&&C.IsHole!=k.IsHole&&this.Poly2ContainsPoly1(C.Pts,e.OutPt2)&&(C.FirstLeft=n)}}this.Poly2ContainsPoly1(n.Pts,k.Pts)?(n.IsHole=!k.IsHole,n.FirstLeft=k,this.m_UsingPolyTree&&this.FixupFirstLefts2(n,k),(n.IsHole^this.ReverseSolution)==0<this.Area(n)&&
+this.ReversePolyPtLinks(n.Pts)):this.Poly2ContainsPoly1(k.Pts,n.Pts)?(n.IsHole=k.IsHole,k.IsHole=!n.IsHole,n.FirstLeft=k.FirstLeft,k.FirstLeft=n,this.m_UsingPolyTree&&this.FixupFirstLefts2(k,n),(k.IsHole^this.ReverseSolution)==0<this.Area(k)&&this.ReversePolyPtLinks(k.Pts)):(n.IsHole=k.IsHole,n.FirstLeft=k.FirstLeft,this.m_UsingPolyTree&&this.FixupFirstLefts1(k,n))}else n.Pts=null,n.BottomPt=null,n.Idx=k.Idx,k.IsHole=p.IsHole,p==n&&(k.FirstLeft=n.FirstLeft),n.FirstLeft=k,this.m_UsingPolyTree&&this.FixupFirstLefts2(n,
+k)}}};f.Clipper.prototype.UpdateOutPtIdxs=function(b){var d=b.Pts;do d.Idx=b.Idx,d=d.Prev;while(d!=b.Pts)};f.Clipper.prototype.DoSimplePolygons=function(){for(var b=0;b<this.m_PolyOuts.length;){var d=this.m_PolyOuts[b++],e=d.Pts;if(null!=e&&!d.IsOpen){do{for(var k=e.Next;k!=d.Pts;){if(f.IntPoint.op_Equality(e.Pt,k.Pt)&&k.Next!=e&&k.Prev!=e){var n=e.Prev,p=k.Prev;e.Prev=p;p.Next=e;k.Prev=n;n.Next=k;d.Pts=e;n=this.CreateOutRec();n.Pts=k;this.UpdateOutPtIdxs(n);this.Poly2ContainsPoly1(n.Pts,d.Pts)?(n.IsHole=
+!d.IsHole,n.FirstLeft=d,this.m_UsingPolyTree&&this.FixupFirstLefts2(n,d)):this.Poly2ContainsPoly1(d.Pts,n.Pts)?(n.IsHole=d.IsHole,d.IsHole=!n.IsHole,n.FirstLeft=d.FirstLeft,d.FirstLeft=n,this.m_UsingPolyTree&&this.FixupFirstLefts2(d,n)):(n.IsHole=d.IsHole,n.FirstLeft=d.FirstLeft,this.m_UsingPolyTree&&this.FixupFirstLefts1(d,n));k=e}k=k.Next}e=e.Next}while(e!=d.Pts)}}};f.Clipper.Area=function(b){var d=b.length;if(3>d)return 0;for(var e=0,f=0,k=d-1;f<d;++f)e+=(b[k].X+b[f].X)*(b[k].Y-b[f].Y),k=f;return.5*
+-e};f.Clipper.prototype.Area=function(b){var d=b.Pts;if(null==d)return 0;var e=0;do e+=(d.Prev.Pt.X+d.Pt.X)*(d.Prev.Pt.Y-d.Pt.Y),d=d.Next;while(d!=b.Pts);return.5*e};f.Clipper.SimplifyPolygon=function(b,d){var e=[],k=new f.Clipper(0);k.StrictlySimple=!0;k.AddPath(b,f.PolyType.ptSubject,!0);k.Execute(f.ClipType.ctUnion,e,d,d);return e};f.Clipper.SimplifyPolygons=function(b,d){"undefined"==typeof d&&(d=f.PolyFillType.pftEvenOdd);var e=[],k=new f.Clipper(0);k.StrictlySimple=!0;k.AddPaths(b,f.PolyType.ptSubject,
+!0);k.Execute(f.ClipType.ctUnion,e,d,d);return e};f.Clipper.DistanceSqrd=function(b,d){var e=b.X-d.X,f=b.Y-d.Y;return e*e+f*f};f.Clipper.DistanceFromLineSqrd=function(b,d,e){var f=d.Y-e.Y;e=e.X-d.X;d=f*d.X+e*d.Y;d=f*b.X+e*b.Y-d;return d*d/(f*f+e*e)};f.Clipper.SlopesNearCollinear=function(b,d,e,k){return Math.abs(b.X-d.X)>Math.abs(b.Y-d.Y)?b.X>d.X==b.X<e.X?f.Clipper.DistanceFromLineSqrd(b,d,e)<k:d.X>b.X==d.X<e.X?f.Clipper.DistanceFromLineSqrd(d,b,e)<k:f.Clipper.DistanceFromLineSqrd(e,b,d)<k:b.Y>d.Y==
+b.Y<e.Y?f.Clipper.DistanceFromLineSqrd(b,d,e)<k:d.Y>b.Y==d.Y<e.Y?f.Clipper.DistanceFromLineSqrd(d,b,e)<k:f.Clipper.DistanceFromLineSqrd(e,b,d)<k};f.Clipper.PointsAreClose=function(b,d,e){var f=b.X-d.X;b=b.Y-d.Y;return f*f+b*b<=e};f.Clipper.ExcludeOp=function(b){var d=b.Prev;d.Next=b.Next;b.Next.Prev=d;d.Idx=0;return d};f.Clipper.CleanPolygon=function(b,d){"undefined"==typeof d&&(d=1.415);var e=b.length;if(0==e)return[];for(var k=Array(e),n=0;n<e;++n)k[n]=new f.OutPt;for(n=0;n<e;++n)k[n].Pt=b[n],k[n].Next=
+k[(n+1)%e],k[n].Next.Prev=k[n],k[n].Idx=0;n=d*d;for(k=k[0];0==k.Idx&&k.Next!=k.Prev;)f.Clipper.PointsAreClose(k.Pt,k.Prev.Pt,n)?(k=f.Clipper.ExcludeOp(k),e--):f.Clipper.PointsAreClose(k.Prev.Pt,k.Next.Pt,n)?(f.Clipper.ExcludeOp(k.Next),k=f.Clipper.ExcludeOp(k),e-=2):f.Clipper.SlopesNearCollinear(k.Prev.Pt,k.Pt,k.Next.Pt,n)?(k=f.Clipper.ExcludeOp(k),e--):(k.Idx=1,k=k.Next);3>e&&(e=0);for(var p=Array(e),n=0;n<e;++n)p[n]=new f.IntPoint(k.Pt),k=k.Next;return p};f.Clipper.CleanPolygons=function(b,d){for(var e=
+Array(b.length),k=0,n=b.length;k<n;k++)e[k]=f.Clipper.CleanPolygon(b[k],d);return e};f.Clipper.Minkowski=function(b,d,e,k){k=k?1:0;var n=b.length,p=d.length,v=[];if(e)for(e=0;e<p;e++){for(var C=Array(n),F=0,E=b.length,H=b[F];F<E;F++,H=b[F])C[F]=new f.IntPoint(d[e].X+H.X,d[e].Y+H.Y);v.push(C)}else for(e=0;e<p;e++){C=Array(n);F=0;E=b.length;for(H=b[F];F<E;F++,H=b[F])C[F]=new f.IntPoint(d[e].X-H.X,d[e].Y-H.Y);v.push(C)}b=[];for(e=0;e<p-1+k;e++)for(F=0;F<n;F++)d=[],d.push(v[e%p][F%n]),d.push(v[(e+1)%
+p][F%n]),d.push(v[(e+1)%p][(F+1)%n]),d.push(v[e%p][(F+1)%n]),f.Clipper.Orientation(d)||d.reverse(),b.push(d);return b};f.Clipper.MinkowskiSum=function(b,d,e){if(d[0]instanceof Array){v=d;d=new f.Paths;for(var k=new f.Clipper,n=0;n<v.length;++n){var p=f.Clipper.Minkowski(b,v[n],!0,e);k.AddPaths(p,f.PolyType.ptSubject,!0);e&&(p=f.Clipper.TranslatePath(v[n],b[0]),k.AddPath(p,f.PolyType.ptClip,!0))}k.Execute(f.ClipType.ctUnion,d,f.PolyFillType.pftNonZero,f.PolyFillType.pftNonZero);return d}var v=f.Clipper.Minkowski(b,
+d,!0,e),k=new f.Clipper;k.AddPaths(v,f.PolyType.ptSubject,!0);k.Execute(f.ClipType.ctUnion,v,f.PolyFillType.pftNonZero,f.PolyFillType.pftNonZero);return v};f.Clipper.TranslatePath=function(b,d){for(var e=new f.Path,k=0;k<b.length;k++)e.push(new f.IntPoint(b[k].X+d.X,b[k].Y+d.Y));return e};f.Clipper.MinkowskiDiff=function(b,d){var e=f.Clipper.Minkowski(b,d,!1,!0),k=new f.Clipper;k.AddPaths(e,f.PolyType.ptSubject,!0);k.Execute(f.ClipType.ctUnion,e,f.PolyFillType.pftNonZero,f.PolyFillType.pftNonZero);
+return e};f.Clipper.PolyTreeToPaths=function(b){var d=[];f.Clipper.AddPolyNodeToPaths(b,f.Clipper.NodeType.ntAny,d);return d};f.Clipper.AddPolyNodeToPaths=function(b,d,e){var k=!0;switch(d){case f.Clipper.NodeType.ntOpen:return;case f.Clipper.NodeType.ntClosed:k=!b.IsOpen}0<b.m_polygon.length&&k&&e.push(b.m_polygon);k=0;b=b.Childs();for(var n=b.length,p=b[k];k<n;k++,p=b[k])f.Clipper.AddPolyNodeToPaths(p,d,e)};f.Clipper.OpenPathsFromPolyTree=function(b){for(var d=new f.Paths,e=0,k=b.ChildCount();e<
+k;e++)b.Childs()[e].IsOpen&&d.push(b.Childs()[e].m_polygon);return d};f.Clipper.ClosedPathsFromPolyTree=function(b){var d=new f.Paths;f.Clipper.AddPolyNodeToPaths(b,f.Clipper.NodeType.ntClosed,d);return d};V(f.Clipper,f.ClipperBase);f.Clipper.NodeType={ntAny:0,ntOpen:1,ntClosed:2};f.ClipperOffset=function(b,d){"undefined"==typeof b&&(b=2);"undefined"==typeof d&&(d=f.ClipperOffset.def_arc_tolerance);this.m_destPolys=new f.Paths;this.m_srcPoly=new f.Path;this.m_destPoly=new f.Path;this.m_normals=[];
+this.m_StepsPerRad=this.m_miterLim=this.m_cos=this.m_sin=this.m_sinA=this.m_delta=0;this.m_lowest=new f.IntPoint;this.m_polyNodes=new f.PolyNode;this.MiterLimit=b;this.ArcTolerance=d;this.m_lowest.X=-1};f.ClipperOffset.two_pi=6.28318530717959;f.ClipperOffset.def_arc_tolerance=.25;f.ClipperOffset.prototype.Clear=function(){f.Clear(this.m_polyNodes.Childs());this.m_lowest.X=-1};f.ClipperOffset.Round=f.Clipper.Round;f.ClipperOffset.prototype.AddPath=function(b,d,e){var k=b.length-1;if(!(0>k)){var n=
+new f.PolyNode;n.m_jointype=d;n.m_endtype=e;if(e==f.EndType.etClosedLine||e==f.EndType.etClosedPolygon)for(;0<k&&f.IntPoint.op_Equality(b[0],b[k]);)k--;n.m_polygon.push(b[0]);var p=0;d=0;for(var v=1;v<=k;v++)f.IntPoint.op_Inequality(n.m_polygon[p],b[v])&&(p++,n.m_polygon.push(b[v]),b[v].Y>n.m_polygon[d].Y||b[v].Y==n.m_polygon[d].Y&&b[v].X<n.m_polygon[d].X)&&(d=p);if(!(e==f.EndType.etClosedPolygon&&2>p)&&(this.m_polyNodes.AddChild(n),e==f.EndType.etClosedPolygon))if(0>this.m_lowest.X)this.m_lowest=
+new f.IntPoint(this.m_polyNodes.ChildCount()-1,d);else if(b=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],n.m_polygon[d].Y>b.Y||n.m_polygon[d].Y==b.Y&&n.m_polygon[d].X<b.X)this.m_lowest=new f.IntPoint(this.m_polyNodes.ChildCount()-1,d)}};f.ClipperOffset.prototype.AddPaths=function(b,d,e){for(var f=0,k=b.length;f<k;f++)this.AddPath(b[f],d,e)};f.ClipperOffset.prototype.FixOrientations=function(){if(0<=this.m_lowest.X&&!f.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var b=
+0;b<this.m_polyNodes.ChildCount();b++){var d=this.m_polyNodes.Childs()[b];(d.m_endtype==f.EndType.etClosedPolygon||d.m_endtype==f.EndType.etClosedLine&&f.Clipper.Orientation(d.m_polygon))&&d.m_polygon.reverse()}else for(b=0;b<this.m_polyNodes.ChildCount();b++)d=this.m_polyNodes.Childs()[b],d.m_endtype!=f.EndType.etClosedLine||f.Clipper.Orientation(d.m_polygon)||d.m_polygon.reverse()};f.ClipperOffset.GetUnitNormal=function(b,d){var e=d.X-b.X,k=d.Y-b.Y;if(0==e&&0==k)return new f.DoublePoint(0,0);var n=
+1/Math.sqrt(e*e+k*k);return new f.DoublePoint(k*n,-(e*n))};f.ClipperOffset.prototype.DoOffset=function(b){this.m_destPolys=[];this.m_delta=b;if(f.ClipperBase.near_zero(b))for(var d=0;d<this.m_polyNodes.ChildCount();d++){var e=this.m_polyNodes.Childs()[d];e.m_endtype==f.EndType.etClosedPolygon&&this.m_destPolys.push(e.m_polygon)}else{this.m_miterLim=2<this.MiterLimit?2/(this.MiterLimit*this.MiterLimit):.5;var k=3.14159265358979/Math.acos(1-(0>=this.ArcTolerance?f.ClipperOffset.def_arc_tolerance:this.ArcTolerance>
+Math.abs(b)*f.ClipperOffset.def_arc_tolerance?Math.abs(b)*f.ClipperOffset.def_arc_tolerance:this.ArcTolerance)/Math.abs(b));this.m_sin=Math.sin(f.ClipperOffset.two_pi/k);this.m_cos=Math.cos(f.ClipperOffset.two_pi/k);this.m_StepsPerRad=k/f.ClipperOffset.two_pi;0>b&&(this.m_sin=-this.m_sin);for(d=0;d<this.m_polyNodes.ChildCount();d++){e=this.m_polyNodes.Childs()[d];this.m_srcPoly=e.m_polygon;var n=this.m_srcPoly.length;if(!(0==n||0>=b&&(3>n||e.m_endtype!=f.EndType.etClosedPolygon))){this.m_destPoly=
+[];if(1==n)if(e.m_jointype==f.JoinType.jtRound)for(var e=1,n=0,p=1;p<=k;p++){this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[0].X+e*b),f.ClipperOffset.Round(this.m_srcPoly[0].Y+n*b)));var v=e,e=e*this.m_cos-this.m_sin*n,n=v*this.m_sin+n*this.m_cos}else for(n=e=-1,p=0;4>p;++p)this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[0].X+e*b),f.ClipperOffset.Round(this.m_srcPoly[0].Y+n*b))),0>e?e=1:0>n?n=1:e=-1;else{for(p=this.m_normals.length=0;p<n-1;p++)this.m_normals.push(f.ClipperOffset.GetUnitNormal(this.m_srcPoly[p],
+this.m_srcPoly[p+1]));e.m_endtype==f.EndType.etClosedLine||e.m_endtype==f.EndType.etClosedPolygon?this.m_normals.push(f.ClipperOffset.GetUnitNormal(this.m_srcPoly[n-1],this.m_srcPoly[0])):this.m_normals.push(new f.DoublePoint(this.m_normals[n-2]));if(e.m_endtype==f.EndType.etClosedPolygon)for(v=n-1,p=0;p<n;p++)v=this.OffsetPoint(p,v,e.m_jointype);else if(e.m_endtype==f.EndType.etClosedLine){v=n-1;for(p=0;p<n;p++)v=this.OffsetPoint(p,v,e.m_jointype);this.m_destPolys.push(this.m_destPoly);this.m_destPoly=
+[];v=this.m_normals[n-1];for(p=n-1;0<p;p--)this.m_normals[p]=new f.DoublePoint(-this.m_normals[p-1].X,-this.m_normals[p-1].Y);this.m_normals[0]=new f.DoublePoint(-v.X,-v.Y);v=0;for(p=n-1;0<=p;p--)v=this.OffsetPoint(p,v,e.m_jointype)}else{v=0;for(p=1;p<n-1;++p)v=this.OffsetPoint(p,v,e.m_jointype);e.m_endtype==f.EndType.etOpenButt?(p=n-1,v=new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[p].X+this.m_normals[p].X*b),f.ClipperOffset.Round(this.m_srcPoly[p].Y+this.m_normals[p].Y*b)),this.m_destPoly.push(v),
+v=new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[p].X-this.m_normals[p].X*b),f.ClipperOffset.Round(this.m_srcPoly[p].Y-this.m_normals[p].Y*b)),this.m_destPoly.push(v)):(p=n-1,v=n-2,this.m_sinA=0,this.m_normals[p]=new f.DoublePoint(-this.m_normals[p].X,-this.m_normals[p].Y),e.m_endtype==f.EndType.etOpenSquare?this.DoSquare(p,v):this.DoRound(p,v));for(p=n-1;0<p;p--)this.m_normals[p]=new f.DoublePoint(-this.m_normals[p-1].X,-this.m_normals[p-1].Y);this.m_normals[0]=new f.DoublePoint(-this.m_normals[1].X,
+-this.m_normals[1].Y);v=n-1;for(p=v-1;0<p;--p)v=this.OffsetPoint(p,v,e.m_jointype);e.m_endtype==f.EndType.etOpenButt?(v=new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[0].X-this.m_normals[0].X*b),f.ClipperOffset.Round(this.m_srcPoly[0].Y-this.m_normals[0].Y*b)),this.m_destPoly.push(v),v=new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[0].X+this.m_normals[0].X*b),f.ClipperOffset.Round(this.m_srcPoly[0].Y+this.m_normals[0].Y*b)),this.m_destPoly.push(v)):(this.m_sinA=0,e.m_endtype==f.EndType.etOpenSquare?
+this.DoSquare(0,1):this.DoRound(0,1))}}this.m_destPolys.push(this.m_destPoly)}}}};f.ClipperOffset.prototype.Execute=function(){var b=arguments;if(b[0]instanceof f.PolyTree)if(d=b[0],e=b[1],d.Clear(),this.FixOrientations(),this.DoOffset(e),b=new f.Clipper(0),b.AddPaths(this.m_destPolys,f.PolyType.ptSubject,!0),0<e)b.Execute(f.ClipType.ctUnion,d,f.PolyFillType.pftPositive,f.PolyFillType.pftPositive);else if(e=f.Clipper.GetBounds(this.m_destPolys),k=new f.Path,k.push(new f.IntPoint(e.left-10,e.bottom+
+10)),k.push(new f.IntPoint(e.right+10,e.bottom+10)),k.push(new f.IntPoint(e.right+10,e.top-10)),k.push(new f.IntPoint(e.left-10,e.top-10)),b.AddPath(k,f.PolyType.ptSubject,!0),b.ReverseSolution=!0,b.Execute(f.ClipType.ctUnion,d,f.PolyFillType.pftNegative,f.PolyFillType.pftNegative),1==d.ChildCount()&&0<d.Childs()[0].ChildCount())for(b=d.Childs()[0],d.Childs()[0]=b.Childs()[0],d.Childs()[0].m_Parent=d,e=1;e<b.ChildCount();e++)d.AddChild(b.Childs()[e]);else d.Clear();else{var d=b[0],e=b[1];f.Clear(d);
+this.FixOrientations();this.DoOffset(e);b=new f.Clipper(0);b.AddPaths(this.m_destPolys,f.PolyType.ptSubject,!0);if(0<e)b.Execute(f.ClipType.ctUnion,d,f.PolyFillType.pftPositive,f.PolyFillType.pftPositive);else{var e=f.Clipper.GetBounds(this.m_destPolys),k=new f.Path;k.push(new f.IntPoint(e.left-10,e.bottom+10));k.push(new f.IntPoint(e.right+10,e.bottom+10));k.push(new f.IntPoint(e.right+10,e.top-10));k.push(new f.IntPoint(e.left-10,e.top-10));b.AddPath(k,f.PolyType.ptSubject,!0);b.ReverseSolution=
+!0;b.Execute(f.ClipType.ctUnion,d,f.PolyFillType.pftNegative,f.PolyFillType.pftNegative);0<d.length&&d.splice(0,1)}}};f.ClipperOffset.prototype.OffsetPoint=function(b,d,e){this.m_sinA=this.m_normals[d].X*this.m_normals[b].Y-this.m_normals[b].X*this.m_normals[d].Y;if(1>Math.abs(this.m_sinA*this.m_delta)){if(0<this.m_normals[d].X*this.m_normals[b].X+this.m_normals[b].Y*this.m_normals[d].Y)return this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[d].X*this.m_delta),
+f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[d].Y*this.m_delta))),d}else 1<this.m_sinA?this.m_sinA=1:-1>this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[d].X*this.m_delta),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[d].Y*this.m_delta))),this.m_destPoly.push(new f.IntPoint(this.m_srcPoly[b])),this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[b].X*
+this.m_delta),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[b].Y*this.m_delta)));else switch(e){case f.JoinType.jtMiter:e=1+(this.m_normals[b].X*this.m_normals[d].X+this.m_normals[b].Y*this.m_normals[d].Y);e>=this.m_miterLim?this.DoMiter(b,d,e):this.DoSquare(b,d);break;case f.JoinType.jtSquare:this.DoSquare(b,d);break;case f.JoinType.jtRound:this.DoRound(b,d)}return b};f.ClipperOffset.prototype.DoSquare=function(b,d){var e=Math.tan(Math.atan2(this.m_sinA,this.m_normals[d].X*this.m_normals[b].X+
+this.m_normals[d].Y*this.m_normals[b].Y)/4);this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_delta*(this.m_normals[d].X-this.m_normals[d].Y*e)),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_delta*(this.m_normals[d].Y+this.m_normals[d].X*e))));this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_delta*(this.m_normals[b].X+this.m_normals[b].Y*e)),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_delta*(this.m_normals[b].Y-this.m_normals[b].X*
+e))))};f.ClipperOffset.prototype.DoMiter=function(b,d,e){e=this.m_delta/e;this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+(this.m_normals[d].X+this.m_normals[b].X)*e),f.ClipperOffset.Round(this.m_srcPoly[b].Y+(this.m_normals[d].Y+this.m_normals[b].Y)*e)))};f.ClipperOffset.prototype.DoRound=function(b,d){for(var e=Math.max(f.Cast_Int32(f.ClipperOffset.Round(this.m_StepsPerRad*Math.abs(Math.atan2(this.m_sinA,this.m_normals[d].X*this.m_normals[b].X+this.m_normals[d].Y*this.m_normals[b].Y)))),
+1),k=this.m_normals[d].X,n=this.m_normals[d].Y,p,v=0;v<e;++v)this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+k*this.m_delta),f.ClipperOffset.Round(this.m_srcPoly[b].Y+n*this.m_delta))),p=k,k=k*this.m_cos-this.m_sin*n,n=p*this.m_sin+n*this.m_cos;this.m_destPoly.push(new f.IntPoint(f.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[b].X*this.m_delta),f.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[b].Y*this.m_delta)))};f.Error=function(b){try{throw Error(b);
+}catch(d){alert(d.message)}};f.JS={};f.JS.AreaOfPolygon=function(b,d){d||(d=1);return f.Clipper.Area(b)/(d*d)};f.JS.AreaOfPolygons=function(b,d){d||(d=1);for(var e=0,k=0;k<b.length;k++)e+=f.Clipper.Area(b[k]);return e/(d*d)};f.JS.BoundsOfPath=function(b,d){return f.JS.BoundsOfPaths([b],d)};f.JS.BoundsOfPaths=function(b,d){d||(d=1);var e=f.Clipper.GetBounds(b);e.left/=d;e.bottom/=d;e.right/=d;e.top/=d;return e};f.JS.Clean=function(b,d){if(!(b instanceof Array))return[];var e=b[0]instanceof Array;b=
+f.JS.Clone(b);if("number"!=typeof d||null===d)return f.Error("Delta is not a number in Clean()."),b;if(0===b.length||1==b.length&&0===b[0].length||0>d)return b;e||(b=[b]);for(var k=b.length,n,p,v,F,E,H,K,I=[],ea=0;ea<k;ea++)if(p=b[ea],n=p.length,0!==n)if(3>n)v=p,I.push(v);else{v=p;F=d*d;E=p[0];for(K=H=1;K<n;K++)(p[K].X-E.X)*(p[K].X-E.X)+(p[K].Y-E.Y)*(p[K].Y-E.Y)<=F||(v[H]=p[K],E=p[K],H++);E=p[H-1];(p[0].X-E.X)*(p[0].X-E.X)+(p[0].Y-E.Y)*(p[0].Y-E.Y)<=F&&H--;H<n&&v.splice(H,n-H);v.length&&I.push(v)}!e&&
+I.length?I=I[0]:e||0!==I.length?e&&0===I.length&&(I=[[]]):I=[];return I};f.JS.Clone=function(b){if(!(b instanceof Array)||0===b.length)return[];if(1==b.length&&0===b[0].length)return[[]];var d=b[0]instanceof Array;d||(b=[b]);var e=b.length,f,k,p,v,F=Array(e);for(k=0;k<e;k++){f=b[k].length;v=Array(f);for(p=0;p<f;p++)v[p]={X:b[k][p].X,Y:b[k][p].Y};F[k]=v}d||(F=F[0]);return F};f.JS.Lighten=function(b,d){if(!(b instanceof Array))return[];if("number"!=typeof d||null===d)return f.Error("Tolerance is not a number in Lighten()."),
+f.JS.Clone(b);if(0===b.length||1==b.length&&0===b[0].length||0>d)return f.JS.Clone(b);b[0]instanceof Array||(b=[b]);var e,k,n,p,v,F,E,H,K,I,ea,U,W,V,Y,Ea=b.length,ja=d*d,aa=[];for(e=0;e<Ea;e++)if(n=b[e],F=n.length,0!=F){for(p=0;1E6>p;p++){v=[];F=n.length;n[F-1].X!=n[0].X||n[F-1].Y!=n[0].Y?(ea=1,n.push({X:n[0].X,Y:n[0].Y}),F=n.length):ea=0;I=[];for(k=0;k<F-2;k++){E=n[k];K=n[k+1];H=n[k+2];V=E.X;Y=E.Y;E=H.X-V;U=H.Y-Y;if(0!==E||0!==U)W=((K.X-V)*E+(K.Y-Y)*U)/(E*E+U*U),1<W?(V=H.X,Y=H.Y):0<W&&(V+=E*W,Y+=
+U*W);E=K.X-V;U=K.Y-Y;H=E*E+U*U;H<=ja&&(I[k+1]=1,k++)}v.push({X:n[0].X,Y:n[0].Y});for(k=1;k<F-1;k++)I[k]||v.push({X:n[k].X,Y:n[k].Y});v.push({X:n[F-1].X,Y:n[F-1].Y});ea&&n.pop();if(I.length)n=v;else break}F=v.length;v[F-1].X==v[0].X&&v[F-1].Y==v[0].Y&&v.pop();2<v.length&&aa.push(v)}b[0]instanceof Array||(aa=aa[0]);"undefined"==typeof aa&&(aa=[[]]);return aa};f.JS.PerimeterOfPath=function(b,d,e){if("undefined"==typeof b)return 0;var f=Math.sqrt,k=0,p,v,F,E,H=b.length;if(2>H)return 0;for(d&&(b[H]=b[0],
+H++);--H;)p=b[H],F=p.X,p=p.Y,v=b[H-1],E=v.X,v=v.Y,k+=f((F-E)*(F-E)+(p-v)*(p-v));d&&b.pop();return k/e};f.JS.PerimeterOfPaths=function(b,d,e){e||(e=1);for(var k=0,n=0;n<b.length;n++)k+=f.JS.PerimeterOfPath(b[n],d,e);return k};f.JS.ScaleDownPath=function(b,d){var e,f;d||(d=1);for(e=b.length;e--;)f=b[e],f.X/=d,f.Y/=d};f.JS.ScaleDownPaths=function(b,d){var e,f,k;d||(d=1);for(e=b.length;e--;)for(f=b[e].length;f--;)k=b[e][f],k.X/=d,k.Y/=d};f.JS.ScaleUpPath=function(b,d){var e,f,k=Math.round;d||(d=1);for(e=
+b.length;e--;)f=b[e],f.X=k(f.X*d),f.Y=k(f.Y*d)};f.JS.ScaleUpPaths=function(b,d){var e,f,k,p=Math.round;d||(d=1);for(e=b.length;e--;)for(f=b[e].length;f--;)k=b[e][f],k.X=p(k.X*d),k.Y=p(k.Y*d)};f.ExPolygons=function(){return[]};f.ExPolygon=function(){this.holes=this.outer=null};f.JS.AddOuterPolyNodeToExPolygons=function(b,d){var e=new f.ExPolygon;e.outer=b.Contour();var k=b.Childs(),n=k.length;e.holes=Array(n);var p,v,F,E,H;for(v=0;v<n;v++)for(p=k[v],e.holes[v]=p.Contour(),F=0,E=p.Childs(),H=E.length;F<
+H;F++)p=E[F],f.JS.AddOuterPolyNodeToExPolygons(p,d);d.push(e)};f.JS.ExPolygonsToPaths=function(b){var d,e,k,n,p=new f.Paths;d=0;for(k=b.length;d<k;d++)for(p.push(b[d].outer),e=0,n=b[d].holes.length;e<n;e++)p.push(b[d].holes[e]);return p};f.JS.PolyTreeToExPolygons=function(b){var d=new f.ExPolygons,e,k,n;e=0;k=b.Childs();for(n=k.length;e<n;e++)b=k[e],f.JS.AddOuterPolyNodeToExPolygons(b,d);return d}})();
+var CindyJS=function(){function p(k){if(0===ja)return console.error("Waiting for "+k+" after we finished waiting."),function(){};0>ja&&(ja=0);++ja;return function(){--ja;0>ja&&console.error("Wait count mismatch: "+k);if(0===ja)for(var p=0,E=Ca.length;p<E;)Ca[p++].startup()}}function E(k){var p=E.newInstance(k);0>=ja?p.startup():!1!==k.autostart&&Ca.push(p);return p}var ja=-1,Ca=[];"undefined"===typeof document||"undefined"===typeof window||"undefined"===typeof document.addEventListener||"undefined"!==
+typeof window.cindyDontWait&&!0===window.cindyDontWait||document.addEventListener("DOMContentLoaded",p("DOMContentLoaded"));var pa=null,Da=null,aa={};E.getBaseDir=function(){if(null!==pa)return pa;for(var k=document.getElementsByTagName("script"),p=0;p<k.length;++p){var E=k[p],U=E.src;if(U){var W=/Cindy\.js$/.exec(U);if(W)return pa=U.substr(0,W.index),console.log("Will load extensions from "+pa),Da=E,pa}}console.error("Could not find <script> tag for Cindy.js");return pa=Da=!1};E.addNewScript=function(k,
+p){p||console.error.bind(console);var K=E.getBaseDir();if(!1===K)return!1;var U=document.createElement("script");U.src=K+k;var K=Da.nextSibling,W=Da.parentElement;K?W.insertBefore(U,K):W.appendChild(U);return U};E.loadScript=function(k,p,K,U){if(window[k])return K(),!0;U||(U=console.error.bind(console));var W=aa[k];if(!W){W=E.addNewScript(p,U);if(!1===W)return U("Can't load additional components."),!1;aa[k]=W}W.addEventListener("load",K);W.addEventListener("error",U);return null};E._autoLoadingPlugin=
+{};E.autoLoadPlugin=function(k,p,K){if(E._pluginRegistry[k])return K(),!0;var U=E._autoLoadingPlugin[k];if(!U){p||(p=k+"-plugin.js");U=E._autoLoadingPlugin[k]=[];k=E.addNewScript(p);if(!1===k)return!1;k.addEventListener("error",console.error.bind(console))}U.push(K);return null};var k={ctype:"undefined"};E.waitFor=p;E._pluginRegistry={};E.instances=[];E.registerPlugin=function(k,p,K){if(1!==k)return console.error("Plugin API version "+k+" not supported"),!1;E._pluginRegistry[p]=K;(E._autoLoadingPlugin[p]||
+[]).forEach(function(k){k()})};var Oa=0;E.dumpState=function(k){k=E.instances[k||0].saveState();console.log(JSON.stringify(k))};E.debugState=function(k){E.instances.map(function(k){var p=k.config,p=JSON.parse(JSON.stringify(p)),F=k.saveState();console.log(JSON.stringify(F));for(var E in F)p[E]=F[E];k.shutdown();return p}).forEach(function(k){E(k)})};E.newInstance=function(p){function E(){ka.width=da=ka.clientWidth;ka.height=ca=ka.clientHeight;y.setTransform(1,0,0,1,0,0);z.setMat(25,0,0,25,250.5,250.5);
+if(yb)for(var a=0;a<yb.length;a++){var h=yb[a],c=Object.keys(h)[0];"scale"===c&&(Kb=h.scale,z[c](h.scale));if("translate"===c)z[c](h.translate[0],h.translate[1]);"scaleAndOrigin"===c&&(Kb=h[c][0]/25,z[c].apply(null,h[c]));"visibleRect"===c&&(z[c].apply(null,h[c]),Kb=z.drawingstate.initialmatrix.a/25)}z.createnewbackup();z.greset();a=1;"undefined"!==typeof window&&window.devicePixelRatio&&(a=window.devicePixelRatio);h=y.webkitBackingStorePixelRatio||y.mozBackingStorePixelRatio||y.msBackingStorePixelRatio||
+y.oBackingStorePixelRatio||y.backingStorePixelRatio||1;a!==h&&(a/=h,ka.width=da*a,ka.height=ca*a,y.scale(a,a))}function K(a){var h;if("canvas"!==a.tagName.toLowerCase())for(h=a,ka=document.createElement("canvas");h.firstChild;)h.removeChild(h.firstChild);else{ka=a;h=document.createElement("div");var c=null,r=null;Array.prototype.slice.call(ka.attributes).forEach(function(a){"width"===a.name?c=a.value:"height"===a.name?r=a.value:h.setAttributeNodeNS(ka.removeAttributeNode(a))});null===c||h.style.width||
+(h.style.width=c+"px");null===r||h.style.height||(h.style.height=r+"px");ka.parentNode.replaceChild(h,ka)}h.classList.add("CindyJS-widget");a=ka.style;a.position="absolute";a.border="none";a.margin=a.padding=a.left=a.top="0px";a.width=a.height="100%";a="static";window.getComputedStyle&&(a=window.getComputedStyle(h).getPropertyValue("position"),a=String(a||"static"));"static"===a&&(h.style.position="relative");h.appendChild(ka);return ka}function U(){var a=p.cinderella;if(!a||!a.version)return!1;for(var h=
+0;h<arguments.length;++h){var c=a.version[h],r=arguments[h];if(c!==r)return typeof c===typeof r&&c<r}return!1}function W(){ac=!0;if(0===Lb){if(p.exclusive)for(b=wa.instances.length;0<b;)wa.instances[--b].shutdown();void 0!==p.csconsole&&(ia=p.csconsole);ia=null===ia?new qa:!0===ia?new xb:"string"===typeof ia?new cb(ia):"object"===typeof ia&&"function"===typeof ia.appendChild?new cb(ia):new qa;ta=[100,100];var a=null;yb=p.transform;if(p.ports&&0<p.ports.length){b=p.ports[0];(a=b.element)||(a=document.getElementById(b.id));
+var a=K(a),h=a.parentNode.style;"window"===b.fill?(h.width="100vw",h.height="100vh"):"parent"===b.fill?(h.width="100%",h.height="100%"):b.width&&b.height&&(h.width=b.width+"px",h.height=b.height+"px");b.background&&(a.style.backgroundColor=b.background);void 0!==b.transform&&(yb=b.transform);Fa(b.grid)&&0<b.grid&&(Wa=b.grid);Fa(b.tgrid)&&0<b.tgrid&&(bc=b.tgrid);b.snap&&(cc=!0);b.axes&&(zb=!0)}a||(a=p.canvas,a||"undefined"===typeof document||(a=document.getElementById(p.canvasname))&&(a=K(a)));a&&
+(ka=a,y=a.getContext("2d"),E(),y.setLineDash||(y.setLineDash=function(){}),(p.animation?p.animation.controls:p.animcontrols)&&ja(p),p.animation&&Fa(p.animation.speed)&&(void 0===p.animation.accuracy&&U(2,9,1875)?sa(.5*p.animation.speed):sa(p.animation.speed)),p.animation&&Fa(p.animation.accuracy)&&(Mb=p.animation.accuracy));p.statusbar&&(dc="string"===typeof p.statusbar?document.getElementById(p.statusbar):p.statusbar);var c=p.scripts,r=null;"string"===typeof c&&c.search(/\*/)&&(r=c);"object"!==typeof c&&
+(c=null);"move keydown keyup keytyped keytype mousedown mouseup mousedrag mousemove mouseclick init tick draw simulationstep simulationstart simulationstop ondrop".split(" ").forEach(function(a){var h;if(null!==c&&c[a])h=c[a];else{h=a+"script";if(p[h])h=document.getElementById(p[h]);else if(r){if(h=document.getElementById(r.replace(/\*/,a)),!h)return}else return;h=h.text}h=Ra(h,!1);"error"===h.ctype?console.error("Error compiling "+a+" script: "+h.message):S[a]=h});U(2,9,1888)&&!S.keydown&&(S.keydown=
+S.keytyped,S.keytyped=S.keytype,S.keytype=void 0);Fa(p.grid)&&0<p.grid&&(Wa=p.grid);p.snap&&(cc=!0);u={};var b=0;Xa={};p.geometry||(p.geometry=[]);Md(p.geometry);p.behavior||(p.behavior=[]);"function"===typeof ec&&ec(p.behavior);for(var d in p.images)b=aa(p.images[d],!1),b!==k&&(Xa[d]=b);for(var g in p.videos)d=aa(p.videos[g],!0),d!==k&&(Xa[g]=d);oa.canvas=a;if(p.oninit)p.oninit(oa);wa.instances.push(oa);p.use&&p.use.forEach(function(a){t.use$1([w.wrap(a)],{})});Nc.convexhull3d$1&&pa("QuickHull3D",
+"QuickHull3D.js");V()}}function aa(a,h){var c;"string"===typeof a?(h?(c=document.createElement("video"),c.preload="auto",c.loop=!0,c.setAttribute("playsinline",""),enableInlineVideo(c)):c=new Image,c.src=a):c=a;if(!c.tagName)return console.error("Not a valid image element",c),k;var r={img:c,width:NaN,height:NaN,ready:!0,live:!1,generation:0,whenReady:f},b=c.tagName.toLowerCase(),d=[];if("img"===b)c.complete?(r.width=c.width,r.height=c.height):(r.ready=!1,c.addEventListener("load",function(){r.width=
+c.width;r.height=c.height;r.ready=!0;r.whenReady=f;d.forEach(f);e()}),r.whenReady=d.push.bind(d));else if("video"===b)r.live=!0,c.readyState>=c.HAVE_METADATA?(r.width=c.videoWidth,r.height=c.videoHeight):(r.ready=!1,c.addEventListener("loadedmetadata",function(){r.width=c.videoWidth;r.height=c.videoHeight;r.ready=!0;r.whenReady=f;d.forEach(f);e()}),r.whenReady=d.push.bind(d));else if("canvas"===b)r.width=c.width,r.height=c.height;else return console.error("Not a valid image element",b,c),k;return{ctype:"image",
+value:r}}function ja(a){function h(a,c){var h=document.createElement("button"),r=document.createElement("img");h.appendChild(r);l.appendChild(h);Ab(r,a);h.addEventListener("click",c);Sa[a]=function(a){a?h.classList.add("CindyJS-active"):h.classList.remove("CindyJS-active")}}function c(a){if(k){var c=e.getBoundingClientRect();sa(g*(a.clientX-c.left-e.clientLeft+.5)/c.width+b)}}var r=document.createElement("div");r.className="CindyJS-animcontrols";ka.parentNode.appendChild(r);var b=0,d=1,g=1;a.animation&&
+a.animation.speedRange&&Fa(a.animation.speedRange[0])&&Fa(a.animation.speedRange[1])&&(b=a.animation.speedRange[0],d=a.animation.speedRange[1],g=d-b);var e=document.createElement("div");e.className="CindyJS-animspeed";r.appendChild(e);var f=document.createElement("div");e.appendChild(f);H(e,"mousedown",function(a){k=!0;c(a)});H(e,"mousemove",c);H(ka.parentNode,"mouseup",function(a){k=!1},!0);var l=document.createElement("div");l.className="CindyJS-animbuttons";r.appendChild(l);h("play",I);h("pause",
+Ca);h("stop",Da);Sa.stop(!0);gc=function(a){a=(a-b)/g;a=Math.max(0,Math.min(1,a));a=.1*Math.round(1E3*a);f.style.width=a+"%"};var k=!1}function sa(a){Oc=a;gc&&gc(a)}function f(a){return a()}function pa(a,h){var c=null;p.plugins&&(c=p.plugins[a]);c||(c=wa._pluginRegistry[a]);c?t.use$1([w.wrap(a)],{}):(++Pc,wa.autoLoadPlugin(a,h,function(){t.use$1([w.wrap(a)],{});V()}))}function V(){0===--Pc&&(A(S.init),(p.animation||p).autoplay&&I(),oa.canvas&&Zb(oa.canvas,p))}function Y(){null!==Bb&&(ma.set(Bb.state),
+Object.keys(Bb.speeds).forEach(function(a){var h=u.csnames[a];"undefined"!==typeof h.behavior&&(a=Bb.speeds[a],h.behavior.vx=a[0],h.behavior.vy=a[1],h.behavior.vz=a[2],h.behavior.fx=0,h.behavior.fy=0,h.behavior.fz=0)}),Nd())}function I(){if(!Ya){if(Ob){var a=db.backup;a.set(ma);for(var h={},c=0;c<u.points.length;c++){var r=u.points[c];"undefined"!==typeof r.behavior&&(h[r.name]=[r.behavior.vx,r.behavior.vy,r.behavior.vz])}Bb={state:a,speeds:h};Cb=0;Ob=!1;Sa.stop(!1)}else Sa.pause(!1);hc=Date.now();
+Sa.play(!0);"function"===typeof ec&&ic&&Od();Ya=!0;A(S.simulationstart);e()}}function Ca(){Ya&&(Sa.play(!1),Sa.pause(!0),Ya=!1)}function Da(){Ob||(Ya?(A(S.simulationstop),Ya=!1,Sa.play(!1)):Sa.pause(!1),Sa.stop(!0),Ob=!0,Y())}function Qa(){if(!jc){jc=!0;for(var a=wa.instances.length;0<a;)if(wa.instances[--a]===oa){wa.instances.splice(a,1);break}for(a=jb.length;0<a;)try{jb[--a]()}catch(h){console.error(h)}}}function ab(a){this["in"]=function(a,c){console.log(a);c?this.append(this.createTextNode("span",
+"blue",a)):this.append(this.createTextNode("p","blue",a))};this.out=function(a,c){console.log(a);c?this.append(this.createTextNode("span","red",a)):this.append(this.createTextNode("p","red",a))};this.err=function(a,c){console.log(a);c?this.append(this.createTextNode("span","red",a)):this.append(this.createTextNode("p","red",a))};this.createTextNode=function(a,c,r){return"undefined"!==typeof document?(a=document.createElement(a),a.appendChild(document.createTextNode(r)),a.style.color=c,a):r+"\n"}}
+function xb(){var a=this,h,c=document.createElement("div"),r;c.innerHTML='<div id="console" style="border-top: 1px solid #333333; bottom: 0px; position: absolute; width: 100%;"><div id="log" style="height: 150px; overflow-y: auto;"></div><input id="cmd" type="text" style="box-sizing: border-box; height: 30px; width: 100%;"></div>';document.body.appendChild(c);h=document.getElementById("cmd");r=document.getElementById("log");h.onkeydown=function(c){13===c.keyCode&&""!==h.value&&(a["in"](h.value),c=
+t.parse$1([w.wrap(h.value)],[]),c=A(c),console.log(ba(c)),"undefined"!==c.ctype&&ia.out(ba(c)),h.value="",r.scrollTop=r.scrollHeight)};this.append=function(a){r.appendChild(a)};this.clear=function(){r.innerHTML=""}}function cb(a){var h=a;"string"===typeof a&&(h=document.getElementById(a));this.append=function(a){h.appendChild(a)};this.clear=function(){h.innerHTML=""}}function qa(){this.append=function(a){};this.clear=function(){}}function H(a,h,c,r){void 0===r&&(r=!1);jb.push(function(){a.removeEventListener(h,
+c,r)});a.addEventListener(h,c,r)}function Zb(a,h){function c(c){var h=a.getBoundingClientRect();c=z.to(c.clientX-h.left-a.clientLeft+.5,c.clientY-h.top-a.clientTop+.5);X.prevx=X.x;X.prevy=X.y;X.x=c[0];X.y=c[1];ta[0]=X.x;ta[1]=X.y;e()}function r(a){for(var c=a.changedTouches,h=!1,r=0;r<c.length;r++)c[r].identifier===Q&&(h=!0);h&&(Q=-1,X.down=!1,fa=void 0,A(S.mouseup),qb("mouseup"),e(),a.preventDefault())}var b=null;"undefined"!==typeof MutationObserver&&(b=MutationObserver);b||"undefined"===typeof WebKitMutationObserver||
+(b=WebKitMutationObserver);b?(b=new b(function(c){document.body.contains(a)||Qa()}),b.observe(document.documentElement,{childList:!0,subtree:!0}),jb.push(function(){b.disconnect()})):(H(a,"DOMNodeRemovedFromDocument",Qa),H(a,"DOMNodeRemoved",Qa));if(!0===h.keylistener)H(document,"keydown",function(a){N(a,S.keydown);return!1}),H(document,"keyup",function(a){N(a,S.keyup);return!1}),H(document,"keypress",function(a){N(a,S.keytyped);return!1});else if(S.keydown||S.keyup||S.keytyped)a.setAttribute("tabindex",
+"0"),H(a,"mousedown",function(){a.focus()}),H(a,"keydown",function(a){9!==a.keyCode&&(N(a,S.keydown),S.keytyped||a.preventDefault())}),H(a,"keyup",function(a){N(a,S.keyup);a.preventDefault()}),H(a,"keypress",function(a){9!==a.keyCode&&(N(a,S.keytyped),a.preventDefault())});H(a,"mousedown",function(a){X.button=a.which;c(a);A(S.mousedown);qb("mousedown");X.down=!0;a.preventDefault()});H(a,"mouseup",function(a){X.down=!1;fa=void 0;A(S.mouseup);qb("mouseup");e();a.preventDefault()});H(a,"mousemove",function(a){c(a);
+X.down?A(S.mousedrag):A(S.mousemove);qb("mousemove");a.preventDefault()});H(a,"click",function(a){c(a);A(S.mouseclick);a.preventDefault()});H(a,"dragenter",function(a){a.preventDefault()});H(a,"dragover",function(a){a.preventDefault()});H(a,"drop",function(c){function h(a,c){function g(){e.readyState===XMLHttpRequest.DONE&&(200!==e.status?(console.error("GET request for "+a+" failed: "+(e.responseText||"(no error message)")),d(c,k)):b(c,e.responseText))}var Q=a.replace(/[?#][^]*/,""),Q=Q.replace(/[^]*\/([^\/])/,
+"$1");f[c]={type:"",name:Q};var e=new XMLHttpRequest;e.onreadystatechange=function(){if(e.readyState===XMLHttpRequest.DONE)if(200!==e.status)console.error("HEAD request for "+a+" failed: "+(e.responseText||"(no error message)")),d(c,k);else{var h=e.getResponseHeader("Content-Type");f[c].type=h;/^image\//.test(h)?na(c,a):r(h)?(e=new XMLHttpRequest,e.onreadystatechange=g,e.open("GET",a),e.send()):d(c,k)}};e.open("HEAD",a);e.send()}function r(a){a=a.replace(/;[^]*/,"");return/^text\//.test(a)?1:"application/json"===
+a?2:0}function b(a,c){switch(r(f[a].type)){case 1:d(a,w.string(c));break;case 2:var h,na;try{h=JSON.parse(c),na=w.wrapJSON(h)}catch(g){console.error(g),na=k}d(a,na);break;default:d(a,k)}}function na(a,c){var h=new Image,r=!1;h.onload=function(){r||(r=!0,d(a,aa(h,!1)))};h.onerror=function(c){r||(r=!0,console.error(c),d(a,k))};h.src=c}function d(a,c,h){l[a]=g.turnIntoCSList([c,w.string(h||c.ctype),w.string(f[a].type),w.string(f[a].name)]);0===--m&&(a=p,kc=g.turnIntoCSList(l),lc=a,A(S.ondrop),lc=kc=
+k,e())}c.preventDefault();var Q=c.dataTransfer,f=Q.files,l=Array(f.length),m=f.length,n=c.currentTarget.getBoundingClientRect(),p=g.realVector(z.to(c.clientX-n.left-a.clientLeft+.5,c.clientY-n.top-a.clientTop+.5));if(0<f.length)Array.prototype.forEach.call(f,function(a,c){var h=new FileReader;r(a.type)?(h.onload=function(){b(c,h.result)},h.readAsText(a)):/^image\//.test(a.type)?(h.onload=function(){na(c,h.result)},h.readAsDataURL(a)):(console.log("Unknown MIME type: "+a.type),d(c,k))});else if(c=
+Q.getData("text/uri-list"))c=c.split("\n").filter(function(a){return!/^\s*(#|$)/.test(a)}),m=c.length,l=Array(m),f=Array(m),c.forEach(h)});var Q=-1;H(a,"touchstart",function(a){if(-1===Q){var h=a.changedTouches;0!==h.length&&(Q=h[0].identifier,c(a.targetTouches[0]),A(S.mousedown),X.down=!0,qb("mousedown"),a.preventDefault())}},!1);H(a,"touchmove",function(a){for(var h=a.changedTouches,r=!1,b=0;b<h.length;b++)h[b].identifier===Q&&(r=!0);r&&(c(a.targetTouches[0]),X.down?A(S.mousedrag):A(S.mousemove),
+qb("mousemove"),a.preventDefault())},!0);H(a,"touchend",r,!1);"undefined"!==typeof document&&document.body&&H(document.body,"touchcancel",r,!1);"undefined"!==typeof window&&H(window,"resize",function(){Pb(function(){E();e()})},!1);d(a.parentNode);e()}function b(a,h){var c=document.createElement("div");c.setAttribute("style",h);a.appendChild(c);return c}function d(a){function h(){r.scrollLeft=r.scrollTop=na.scrollLeft=na.scrollTop=1E5}function c(){if(d!==a.clientWidth||g!==a.clientHeight)d=a.clientWidth,
+g=a.clientHeight,f||(f=!0,Pb(function(){f=!1;E();e()}));h()}if("undefined"!==typeof document){var r=b(a,"position: absolute; transition: 0s; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;");b(r,"position: absolute; transition: 0s; left: 0; top: 0; width: 100000px; height: 100000px");var na=b(a,"position: absolute; transition: 0s; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;");b(na,"position: absolute; transition: 0s; left: 0; top: 0; width: 200%; height: 200%");
+h();var d=a.clientWidth,g=a.clientHeight,f=!1;r.addEventListener("scroll",c);na.addEventListener("scroll",c)}}function e(){mc||(mc=Pb(q))}function q(){mc=null;if(!jc){if(Ya){var a=Date.now(),h=Math.min(50,a-hc)*Oc*Pd;hc=a;a=Cb+h;ic&&"undefined"!==typeof ra&&ra.tick(h);Cb=a;Ya&&A(S.tick)}n();Ya&&e()}}function n(){z.reset();y.save();y.clearRect(0,0,da,ca);var a=z.drawingstate.matrix,h,c,r,b,d;if(0!==Wa){y.beginPath();y.strokeStyle="rgba(0,0,0,0.1)";y.lineWidth=1;y.lineCap="butt";h=Wa*a.a;for(b=Math.ceil(-a.tx/
+h);(d=b*h+a.tx)<da;){if(b||!zb)y.moveTo(d,0),y.lineTo(d,ca);b++}for(b=Math.floor(a.ty/h);(d=b*h-a.ty)<ca;){if(b||!zb)y.moveTo(0,d),y.lineTo(da,d);b++}y.stroke()}if(0!==bc){y.beginPath();y.strokeStyle="rgba(0,0,0,0.1)";y.lineWidth=1;y.lineCap="butt";h=bc*a.a;var e=Math.sqrt(3);c=a.ty/e;r=(ca+a.ty)/e;for(b=Math.ceil(-(a.tx+r)/h);(d=b*h+a.tx)+c<da;)y.moveTo(d+c,0),y.lineTo(d+r,ca),b++;for(b=Math.ceil(-(a.tx-c)/h);(d=b*h+a.tx)-r<da;)y.moveTo(d-c,0),y.lineTo(d-r,ca),b++;h*=.5*e;for(b=Math.floor(a.ty/h);(d=
+b*h-a.ty)<ca;){if(b||!zb)y.moveTo(0,d),y.lineTo(da,d);b++}y.stroke()}zb&&(y.beginPath(),y.strokeStyle="rgba(0,0,0,0.2)",y.lineWidth=3,y.lineCap="butt",y.lineJoin="miter",y.miterLimit=10,y.beginPath(),y.moveTo(0,-a.ty),y.lineTo(da-6,-a.ty),y.moveTo(da-13,-5-a.ty),y.lineTo(da-3,-a.ty),y.lineTo(da-13,5-a.ty),y.moveTo(a.tx,ca),y.lineTo(a.tx,6),y.moveTo(a.tx-5,13),y.lineTo(a.tx,3),y.lineTo(a.tx+5,13),y.stroke());Qd();z.greset();Rd();for(a=0;a<u.polygons.length;a++)h=u.polygons[a],h.isshowing&&!1!==h.visible&&
+(c={color:h.color,alpha:h.alpha,fillcolor:h.fillcolor,fillalpha:h.fillalpha,size:h.size,lineJoin:w.string("miter"),fillrule:w.string(h.fillrule)},D.drawpolygon([h.vertices],c,"D",!0));for(a=0;a<u.conics.length;a++)u.conics[a].isArc?(h=u.conics[a],h.isshowing&&!1!==h.visible&&(c={},c.color=h.color,c.alpha=h.alpha,c.size=h.size,D.drawarc(h,c,h.filled?"F":"D"))):(h=u.conics[a],h.isshowing&&!1!==h.visible&&(c={},c.color=h.color,c.alpha=h.alpha,c.size=h.size,D.drawconic(h.matrix,c)));for(a=0;a<u.lines.length;a++)a:if(h=
+u.lines[a],h.isshowing&&!1!==h.visible&&g._helper.isAlmostReal(h.homog))if("S"===h.kind)c={overhang:h.overhang,dashtype:h.dashtype,size:h.size,color:h.color,alpha:h.alpha,arrow:h.arrow,arrowsize:h.arrowsize,arrowposition:h.arrowposition,arrowshape:h.arrowshape,arrowsides:h.arrowsides},0<=l.mult(h.startpos.value[2],l.conjugate(h.endpos.value[2])).value.real?t.draw$2([h.startpos,h.endpos],c):(x.handleModifs(c,x.lineModifs),x.drawRaySegment(h.startpos,h.endpos));else if("end"===h.clip.value&&"Join"===
+h.type)b=u.csnames[h.args[0]],c=u.csnames[h.args[1]],t.draw$2([b.homog,c.homog],{overhang:h.overhang,dashtype:h.dashtype,size:h.size,color:h.color,alpha:h.alpha});else{if("inci"===h.clip.value){b=[1E6,0];c=[-1E6,0];d=[1E6,0];r=[-1E6,0];for(e=0;e<h.incidences.length;e++){var f=u.csnames[h.incidences[e]].homog,k=f.value[0],m=f.value[1],n=f.value[2];l._helper.isAlmostZero(n)||(k=l.div(k,n),m=l.div(m,n),l._helper.isAlmostReal(k)&&l._helper.isAlmostReal(m)&&(k.value.real<b[0]&&(b=[k.value.real,f]),k.value.real>
+c[0]&&(c=[k.value.real,f]),m.value.real<d[0]&&(d=[m.value.real,f]),m.value.real>r[0]&&(r=[m.value.real,f])))}c[0]-b[0]>r[0]-d[0]?(b=b[1],c=c[1]):(b=d[1],c=r[1]);if(b!==c){t.draw$2([b,c],{dashtype:h.dashtype,size:h.size,color:h.color,alpha:h.alpha,overhang:h.overhang});break a}}t.draw$1([h.homog],{dashtype:h.dashtype,size:h.size,color:h.color,alpha:h.alpha})}for(a=0;a<u.points.length;a++)h=u.points[a],h.isshowing&&!1!==h.visible&&g._helper.isAlmostReal(h.homog)&&(c=h.color,h.behavior&&(c=h.color),
+t.draw$1([h.homog],{size:h.size,color:c,alpha:h.alpha}),h.labeled&&!h.tmp&&(c=h.printname||h.name||"P",r=h.labelpos||{x:3,y:3},b=h.textsize||la.textsize,d=!0===h.textbold,e=!0===h.textitalics,f=h.text_fontfamily||la.fontFamily,k=r.x*r.x+r.y*r.y,m=1,0<k&&(m=1+h.size.value.real/Math.sqrt(k)),D.drawtext([h.homog,w.wrap(c)],{x_offset:w.wrap(m*r.x),y_offset:w.wrap(m*r.y),size:w.wrap(b),bold:w.wrap(d),italics:w.wrap(e),family:w.wrap(f)})));for(a=0;a<u.texts.length;a++)Sd(u.texts[a]);y.restore()}function N(a,
+h){var c=window.event?event:a,c=c.charCode?c.charCode:c.keyCode;Qc=String.fromCharCode(c);Rc=c;A(h);e()}function v(a){var h=a.value;a=h[0].value;var c=h[1].value,h=h[2].value;return g.turnIntoCSList([a[0],l.add(a[1],c[0]),l.add(a[2],h[0]),c[1],l.add(c[2],h[1]),h[2]])}function C(a){var h=!0;return function(c,r){h&&(console.error("Operator "+a+" is not supported yet."),h=!1);return k}}function ba(a){if("undefined"===typeof a)return"_??_";if(null===a)return"_???_";if("undefined"===a.ctype)return"___";
+if("number"===a.ctype)return l.niceprint(a);if("string"===a.ctype||"boolean"===a.ctype)return a.value;if("list"===a.ctype){for(var h="[",c=0;c<a.value.length;c++)h+=ba(A(a.value[c])),c!==a.value.length-1&&(h+=", ");return h+"]"}return"dict"===a.ctype?Ka.niceprint(a):"function"===a.ctype?"FUNCTION":"infix"===a.ctype?"INFIX":"modifier"===a.ctype?a.key+"->"+ba(a.value):"shape"===a.ctype?a.type:"error"===a.ctype?"Error: "+a.message:"variable"===a.ctype?ba(J.getvar(a.name)):"geo"===a.ctype?a.value.name:
+"image"===a.ctype?"IMAGE":"_?_"}function bb(a,h){var c="undefined"===a[0].ctype,r="undefined"===a[1].ctype,b=A(a[1]);if(c||r)return k;"variable"===a[0].ctype?J.setvar(a[0].name,b):"infix"===a[0].ctype?"_"===a[0].oper?D.assigntake(a[0],b):console.error("Can't use infix expression as lvalue"):"field"===a[0].ctype?D.assigndot(a[0],b):"function"===a[0].ctype&&"genList"===a[0].oper?"list"===b.ctype?D.assignlist(a[0].args,b.value):console.error("Expected list in rhs of assignment"):console.error("Left hand side of assignment is not a recognized lvalue");
+return b}function pb(a,h){var c=A(a[0]),r=A(a[1]);if(c.ctype===r.ctype){if("number"===c.ctype)return w.bool(c.value.real===r.value.real&&c.value.imag===r.value.imag);if("string"===c.ctype||"boolean"===c.ctype)return w.bool(c.value===r.value);if("list"===c.ctype)return g.equals(c,r);if("geo"===c.ctype)return w.bool(c.value===r.value)}return{ctype:"boolean",value:!1}}function Gc(a,h){return w.not(pb(a,h))}function Yb(a,h){var c=B(a[0]),r=B(a[1]);return"number"===c.ctype&&"number"===r.ctype?{ctype:"boolean",
+value:l._helper.isAlmostEqual(c,r)}:"string"===c.ctype&&"string"===r.ctype||"boolean"===c.ctype&&"boolean"===r.ctype?{ctype:"boolean",value:c.value===r.value}:"list"===c.ctype&&"list"===r.ctype?g.almostequals(c,r):{ctype:"boolean",value:!1}}function Hc(a,h){var c=B(a[0]),r=B(a[1]);return"boolean"===c.ctype&&"boolean"===r.ctype?{ctype:"boolean",value:c.value&&r.value}:k}function Ic(a,h){var c=B(a[0]),r=B(a[1]);return"boolean"===c.ctype&&"boolean"===r.ctype?{ctype:"boolean",value:c.value||r.value}:
+k}function Jc(a,h){var c=a[0];"void"!==c.ctype&&(c=B(c));var r=B(a[1]),b=w.add(c,r);"Angle"===c.usage&&"Angle"===r.usage&&(b=w.withUsage(b,"Angle"));return b}function $b(a,h){var c=a[0];"void"!==c.ctype&&(c=B(c));var r=B(a[1]),b=w.sub(c,r);"Angle"===c.usage&&"Angle"===r.usage&&(b=w.withUsage(b,"Angle"));return b}function Kc(a,h){var c=B(a[0]),r=B(a[1]),b=w.mult(c,r);"Angle"!==c.usage||r.usage?"Angle"!==r.usage||c.usage||(b=w.withUsage(b,"Angle")):b=w.withUsage(b,"Angle");return b}function Lc(a,h){var c=
+B(a[0]),r=B(a[1]);"number"===r.ctype&&l._helper.isZero(r)&&ia.err("WARNING: Division by zero!");var b=w.div(c,r);"Angle"!==c.usage||r.usage?"Angle"!==r.usage||c.usage||(b=w.withUsage(b,"Angle")):b=w.withUsage(b,"Angle");return b}function Mc(a,h){var c=B(a[0]),r=B(a[1]);return"number"===c.ctype&&"number"===r.ctype?l.pow(c,r):k}function Sc(a,h){var c=M(a[0]),r=M(a[1]);if(c!==k&&r!==k){var b=g.cross(c,r);"Point"===c.usage&&"Point"===r.usage&&(b=w.withUsage(b,"Line"));"Line"===c.usage&&"Line"===r.usage&&
+(b=w.withUsage(b,"Point"));return b}return k}function nc(a){var h=a.length;if(0===h)return[];if(1===h)return[0];if(2===h)return a[0][0]+a[1][1]<=a[0][1]+a[1][0]?[0,1]:[1,0];if(4<h)return Td(a);for(var c=Ud[h],r=Number.POSITIVE_INFINITY,b=c[0],d=0;d<c.length;++d){for(var g=c[d],e=0,f=0;f<h;++f)e+=a[f][g[f]];e<r&&(r=e,b=g)}return b}function Td(a){function h(){return{matched:-1,prev:-1,start:-1,cost:0,used:!1,leaf:!1}}function c(a){for(var h=0;h<d;++h)0<k[a][h]||l[h].used||(l[h].used=!0,c(l[h].matched))}
+function r(a){for(var c=0;c<d;++c)0<k[c][a]||f[c].used||(f[c].used=!0,r(f[c].matched))}var b=Math.abs,d=a.length,g,e,f=Array(d),l=Array(d),k=Array(d);for(g=0;g<d;++g)k[g]=Array(d);for(g=0;g<d;++g)for(f[g]=h(),l[g]=h(),f[g].cost=a[g][0],e=1;e<d;++e)f[g].cost>a[g][e]&&(f[g].cost=a[g][e]);for(;;){for(g=0;g<d;++g)for(e=0;e<d;++e)k[g][e]=a[g][e]-f[g].cost-l[e].cost,k[g][e]<1E-14*(b(a[g][e])+b(f[g].cost)+b(l[e].cost))&&(k[g][e]=0);for(g=0;g<d;++g)f[g].matched=l[g].matched=-1;for(var m=0;;){for(g=0;g<d;++g)f[g].used=
+f[g].leaf=l[g].used=l[g].leaf=!1,-1===f[g].matched&&(f[g].start=g,f[g].used=f[g].leaf=!0,f[g].prev=-1);for(var n=!1,p=!1;!p;){for(g=0;g<d;++g)if(f[g].leaf)for(f[g].leaf=!1,e=0;e<d;++e)if(!(l[e].used||0<k[g][e])&&f[g].matched!==e&&(l[e].prev=g,l[e].start=f[g].start,l[e].used=l[e].leaf=!0,-1===l[e].matched)){f[l[e].start].prev=e;n=!0;break}if(n)break;p=!0;for(e=0;e<d;++e)l[e].leaf&&(l[e].leaf=!1,g=l[e].matched,f[g].used||(f[g].prev=e,f[g].start=l[e].start,f[g].used=f[g].leaf=!0,p=!1))}if(!n)break;for(n=
+0;n<d;++n)if(-1===f[n].matched&&-1!==f[n].prev){e=f[n].prev;do g=l[e].prev,l[e].matched=g,f[g].matched=e,e=f[g].prev;while(g!==n);++m}}if(m===d)break;for(g=0;g<d;++g)f[g].used=f[g].leaf=l[g].used=l[g].leaf=!1;for(g=0;g<d;++g)-1===f[g].matched&&c(g);for(e=0;e<d;++e)-1===l[e].matched&&r(e);for(g=0;g<d;++g)-1===f[g].matched||f[g].used||l[f[g].matched].used||(f[g].used=!0);m=Number.POSITIVE_INFINITY;for(g=0;g<d;++g)if(!f[g].used)for(e=0;e<d;++e)l[e].used||m>k[g][e]&&(m=k[g][e]);for(g=0;g<d;++g)f[g].used||
+(f[g].cost+=m),l[g].used&&(l[g].cost-=m)}a=Array(d);for(g=0;g<d;++g)e=f[g].matched,a[g]=e;return a}function oc(a,h){var c=A(a[0]),r=B(a[1]);"string"!==c.ctype&&(c=g.asList(c));if("number"===r.ctype){r=Math.floor(r.value.real);0>r&&(r=c.value.length+r+1);if(0<r&&r<c.value.length+1)return"list"===c.ctype?c.value[r-1]:{ctype:"string",value:c.value.charAt(r-1)};ia.err("WARNING: Index out of range!");return k}if("list"===r.ctype){for(var b=[],d=0;d<r.value.length;d++){var e=B(r.value[d]);b[d]=oc([c,e],
+[])}return g.turnIntoCSList(b)}return k}function Tc(a,h){var c=A(a[0]),r=A(a[1]);if("shape"===c.ctype&&"shape"===r.ctype)return D.shapeconcat(c,r);c=g.asList(c);r=g.asList(r);return"list"===c.ctype&&"list"===r.ctype?g.concat(c,r):k}function Uc(a,h){var c=A(a[0]),r=A(a[1]);return"list"===c.ctype&&"list"===r.ctype?g.set(g.common(c,r)):"shape"===c.ctype&&"shape"===r.ctype?D.shapecommon(c,r):k}function Vc(a,h){var c=A(a[0]),r=A(a[1]);return"list"===c.ctype&&"list"===r.ctype?g.remove(c,r):"shape"===c.ctype&&
+"shape"===r.ctype?D.shaperemove(c,r):k}function Wc(a,h){var c=A(a[0]),r=A(a[1]);return"list"===c.ctype?g.append(c,r):k}function Xc(a,h){var c=A(a[0]),r=A(a[1]);return"list"===r.ctype?g.prepend(c,r):k}function pc(a,h){a|=0;h|=0;if(0===a&&0===h)return 0;for(;0!==h;){var c=a;a=h;h=c%h|0}return a}function Vd(a){return 1===a?0:1}function Yc(a,h,c,r,b,d,g){if(-1!==h.indexOf("\n")){var e=Infinity,f=-Infinity,l=Infinity,k=-Infinity;h.split("\n").forEach(function(h){h=Yc(a,h,c,r,b,d);e>h.left&&(e=h.left);
+f<h.right&&(f=h.right);l>h.top&&(l=h.top);k<h.bottom&&(k=h.bottom);r+=g});return{left:e,right:f,top:l,bottom:k}}var m=a.measureText(h);a.fillText(h,c-m.width*b,r);return{left:c-m.width*b,right:c+m.width*(1-b),top:r-.84*d,bottom:r+.36*d}}function La(a){return"image"===a.ctype?a.value:"string"===a.ctype&&Xa.hasOwnProperty(a.value)?Xa[a.value].value:null}function rb(a,h,c,r,b){var d=[];if(a.readPixels)d=a.readPixels(h,c,r,b);else{var g,e;if(a.img.getContext)e=a.img.getContext("2d"),g=e.getImageData(h,
+c,r,b).data;else try{Db||(Db=document.createElement("canvas")),Db.width=r,Db.height=b,e=Db.getContext("2d"),e.drawImage(a.img,h,c,r,b,0,0,r,b),g=e.getImageData(0,0,r,b).data}catch(f){console.log(f)}for(var l in g)d.push(g[l]/255)}return d}function Zc(a){return a.replace(/[^A-Za-z0-9 \u0080-\uffff]/ig,"\\$&")}function ha(a,h,c){var r=a;h&&(r=r+" at "+h.row+":"+h.col);c&&(r=r+": \u2018"+c+"\u2019");r=Error(r);r.name="CindyScriptParseError";r.description=a;r.location=h;r.text=c;return r}function kb(a){this.input=
+a;this.re=new RegExp($c,"g");for(var h=[],c=a.indexOf("\n")+1;c;)h.push(c),c=a.indexOf("\n",c)+1;h.push(a.length);this.bols=h;this.bol=this.pos=0;this.line=1}function Qb(a){var h=a[a.length-2],c=a[a.length-3],r=a[a.length-1];if(c){if(c.isSuperscript&&h.precedence<=c.precedence)throw ha("Operator not allowed after superscript",h.start,h.text);if(r){if(!h.op.infix)throw ha("Operator may not be used infix",h.start,h.text);}else if(!h.op.postfix)throw ha("Operator may not be used postfix",h.start,h.text);
+}else if(r){if(!h.op.prefix)throw ha("Operator may not be used prefix",h.start,h.text);}else if(!h.op.bare)throw ha("Operator without operands",h.start,h.text);h.ctype="infix";h.oper=h.op.sym;h.args=[c,r];a.splice(a.length-3,3,h)}function ad(a,h,c,r){a.length&1||a.push(null);for(c=xa[c];3<=a.length&&a[a.length-2].precedence<=c.precedence;)Qb(a);a.push({op:c,precedence:c.precedence+(c.rassoc?1:0),start:h.start,end:h.end,text:h.text,rawtext:h.rawtext});c="";for(var b=h.text,d=0;d<b.length;++d)c+="0123456789+-".charAt(r.indexOf(b.charAt(d)));
+h.ctype="number";h.value={real:+c,imag:0};a.push(h);Qb(a)}function bd(a,h){var c=[],r;a:for(;;)switch(r=a.next(),r.toktype){case "OP":var b=xa[r.text];"_"!==b.sym||!c.length||c.length&1||"OP"!==c[c.length-1].toktype||":="!==c[c.length-1].op.sym||(c.pop(),b=xa[":=_"],r.text=b.sym);r.op=b;r.precedence=b.precedence;for(c.length&1||c.push(null);3<=c.length&&c[c.length-2].precedence<=r.precedence;)Qb(c);b.rassoc&&r.precedence++;c.push(r);break;case "ID":r.ctype="variable";r.name=r.text;if(c.length&1)throw ha("Missing operator",
+r.start,r.text);c.push(r);break;case "NUM":r.ctype="number";r.value={real:+r.text,imag:0};if(c.length&1)throw ha("Missing operator",r.start,r.text);c.push(r);break;case "STR":r.ctype="string";r.value=r.raw.substring(1,r.raw.length-1);if(c.length&1)throw ha("Missing operator",r.start,r.text);c.push(r);break;case "SUB":ad(c,r,"_","\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u208a\u208b");break;case "SUP":ad(c,r,"^","\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079\u207a\u207b");
+c[c.length-1].isSuperscript=!0;break;case "BRA":b="[](){}||".indexOf(r.text);if(r.text===h||b&1)break a;var b="[](){}||".charAt(b+1),d=bd(a,b),g=d.closedBy;if(g.text!==b)throw ha("Opening "+r.text+" at "+r.start.row+":"+r.start.col+" closed by "+(g.text||"EOF")+" at "+g.start.row+":"+g.start.col);g=r.text+g.text;b=[];if(d=d.expr){for(;d&&"infix"===d.ctype&&","===d.oper;)b.push(d.args[0]),d=d.args[1];b.push(d)}if(c.length&1){if("{}"===g)throw ha("{\u2026} reserved for future use",r.start);d=c[c.length-
+1];if("variable"!==d.ctype)throw ha("Function name must be an identifier",d.start);if(2<c.length&&c[c.length-2].precedence<cd)throw ha("Function call in indexing construct must be enclosed in parentheses",r.start);d.ctype="function";r=d.args=[];for(var g=d.modifs={},e=0;e<b.length;++e){var f=b[e];if(f&&"infix"===f.ctype&&"->"===f.oper){var l=f.args[0];if("variable"!==l.ctype)throw ha("Modifier name must be an identifier",f.start);g[l.name]=f.args[1]}else r.push(f)}d.oper=d.name.toLowerCase()+"$"+
+d.args.length}else if("||"===g)if(1===b.length)c.push({ctype:"function",oper:"abs_infix",args:b,modifs:{}});else if(2===b.length)c.push({ctype:"function",oper:"dist_infix",args:b,modifs:{}});else throw ha("Don't support |\u2026| with "+b.length+" arguments",r.start);else{if("{}"===g)throw ha("{\u2026} reserved for future use",r.start);"[]"!==g&&1===b.length?c.push({ctype:"paren",args:b}):0===b.length?c.push({ctype:"list",value:[]}):c.push({ctype:"function",oper:"genList",args:b,modifs:{}})}break;
+case "EOF":break a}for(c.length&1||c.push(null);3<=c.length;)Qb(c);return{expr:c[0],closedBy:r}}function Eb(a){this.usedFunctions={};this.usedVariables={}}function A(a){if(void 0===a)return k;if("infix"===a.ctype)return a.impl(a.args,{},a);if("variable"===a.ctype)return A(J.getvar(a.name));if("function"===a.ctype)return D.evaluate(a.oper,a.args,a.modifs);if("void"===a.ctype)return k;if("field"===a.ctype){var h=A(a.obj);return"geo"===h.ctype?ya.getField(h.value,a.key):"list"===h.ctype?g.getField(h,
+a.key):k}return a}function B(a){a=A(a);if("geo"===a.ctype){var h=a.value;if("P"===h.kind)return ya.getField(h,"xy");if("V"===h.kind)return h.value}return a}function M(a){a=A(a);if("geo"===a.ctype){var h=a.value;if("P"===h.kind||"L"===h.kind)return ya.getField(h,"homog")}return g._helper.isNumberVecN(a,3)?a:g._helper.isNumberVecN(a,2)?(h=g.turnIntoCSList([a.value[0],a.value[1],l.real(1)]),a.usage&&(h=w.withUsage(h,a.usage)),h):k}function Ra(a){var h=new Eb;h.usedFunctions=Nc;h.infixmap=R;a=h.parse(a);
+for(var c in h.usedVariables)J.create(c);return a}function dd(){this._path=[];this._defs=["<defs>"];this._imgcache=[];this._body=[];this._saveStack=[""];this._clipIndex=0;this._stroke=this._fill="#000";this._strokeOpacity=this._fillOpacity=null;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10;this.globalAlpha=1}function ed(){this._body=[];this._yPos=this._xPos=NaN;this._extGState={Af255:"<< /ca 1 >>",As255:"<< /CA 1 >>"};this._objects=[["%PDF-1.4\n"]];
+this._offset=this._objects[0][0].length;this._nextIndex=5;this._imgcache=[];this._xobjects={};this._pathUsed=-1;this._fillAlpha=this._strokeAlpha=this._globalAlpha=1;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10}function fd(a,h){var c=a.width,r=a.height,b=document.createElement("canvas");b.setAttribute("width",c);b.setAttribute("height",r);b.setAttribute("style","display:none;");var d=oa.canvas;d.parentNode.insertBefore(b,d.nextSibling);try{return b.getContext("2d").drawImage(a,
+0,0,c,r),b.toDataURL(h||"image/png")}finally{b.parentNode.removeChild(b)}}function Wd(a){a=a.replace(RegExp("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/]+","g"),"");var h=new Uint8Array(3*a.length>>2),c,r,b,d,g,e;for(r=c=0;c+3<a.length;c+=4)b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c)),d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1)),g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+
+2)),e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+3)),h[r++]=b<<2|d>>4,h[r++]=d<<4|g>>2,h[r++]=g<<6|e;switch(a.length-c){case 0:break;case 2:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));h[r++]=b<<2|d>>4;break;case 3:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+
+1));g="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+2));h[r++]=b<<2|d>>4;h[r++]=d<<4|g>>2;break;default:throw Error("Malformed Base64 input: "+(a.length-c)+" chars left: "+a.substr(c));}if(r!==h.length)throw Error("Failed assertion: "+r+" should be "+h.length);return h}function Xd(a){function h(c){return(a[c]<<24|a[c+1]<<16|a[c+2]<<8|a[c+3])>>>0}if(57>a.length)throw Error("Too short to be a PNG file");if(2303741511!==h(0)||218765834!==h(4))throw Error("PNG signature missing");
+for(var c=[],r=8;r<a.length;){if(r+12>a.length)throw Error("Incomplete chunk at offset 0x"+r.toString(16));var b=h(r);if(2147483648<=b)throw Error("Chunk too long");var d=r+12+b;if(d>a.length)throw Error("Incomplete chunk at offset 0x"+r.toString(16));var g=a.subarray(r+4,r+8),g=String.fromCharCode.apply(String,g);c.push({len:b,type:g,data:a.subarray(r+8,r+8+b),crc:h(r+8+b)});r=d}return c}function Rb(a,h){var c;if(c=/^rgba\(([0-9]+), *([0-9]+), *([0-9]+), *([0-9]+)\)$/.exec(a))h(+c[1],+c[2],+c[3],
++c[4]);else if(c=/^rgb\(([0-9]+), *([0-9]+), *([0-9]+)\)$/.exec(a))h(+c[1],+c[2],+c[3],1);else throw Error("Can't handle color style "+a);}function Yd(a){var h=1;Object.keys(Xa).forEach(function(c){var r=Xa[c].value.img;if(void 0===r.cachedDataURL&&r.src)if("data:"===r.src.substr(0,5))r.cachedDataURL=r.src;else{++h;r.cachedDataURL=null;var b=new XMLHttpRequest;b.responseType="blob";b.onreadystatechange=function(){if(b.readyState===XMLHttpRequest.DONE)if(200===b.status){var c=new FileReader;c.onloadend=
+function(){r.cachedDataURL=c.result;console.log("Cached data for image "+r.src);0===--h&&a()};c.readAsDataURL(b.response)}else console.error("Failed to load "+r.src+": "+b.statusText),0===--h&&a()};b.open("GET",r.src,!0);b.send()}});0===--h&&a()}function lb(a,h,c){for(c||(c="0");a.length<h;)a=c+a;return a}function gd(){null!==Fb&&(window.URL.revokeObjectURL(Fb),Fb=null)}function hd(a){Yd(function(){var h=y;try{y=new a;y.width=da;y.height=ca;n();var c=y.toBlob();Fb=window.URL.createObjectURL(c);id(Fb)}finally{y=
+h}})}function Gb(a){var h=null,c=1E6,r;console.log("getElementAtMouse");for(var b=0;b<u.gslp.length;b++){var d=u.gslp[b];if(!d.pinned&&!1!==d.visible&&!0!==d.tmp){var e,f,k,m=z.drawingstate.matrix.sdet;if("P"===d.kind){var n=g.normalizeZ(d.homog);if(!g._helper.isAlmostReal(n))continue;e=n.value[0].value.real-a.x;f=n.value[1].value.real-a.y;k=Math.sqrt(e*e+f*f);d.narrow&k>20/m&&(k=1E4)}else if("C"===d.kind)f=u.csnames[d.args[0]],k=0,"undefined"!==typeof d.radius&&(k=d.radius.value.real),e=l.div(f.homog.value[0],
+f.homog.value[2]).value.real,f=l.div(f.homog.value[1],f.homog.value[2]).value.real,e-=a.x,f-=a.y,k=Math.sqrt(e*e+f*f)-k,f=e=0,0>k&&(k=-k),k+=30/m;else if("L"===d.kind||"S"===d.kind)e=d.homog,k=l,f=k.add(k.mult(e.value[0],k.conjugate(e.value[0])),k.mult(e.value[1],k.conjugate(e.value[1]))),f=g.scaldiv(k.sqrt(f),e),k=f.value[0].value.real*a.x+f.value[1].value.real*a.y+f.value[2].value.real,e=f.value[0].value.real*k,f=f.value[1].value.real*k,0>k&&(k=-k),k+=1;k<c+.2/m&&(c=k,h=d,r={x:e,y:f})}}return null===
+h?null:{mover:h,offset:r,prev:{x:a.x,y:a.y}}}function Ta(){return"P"+Zd++}function qb(a){var h=G[qc].actions;h[sb].event===a&&h[sb]["do"]()&&(e(),sb===h.length-1?(ua=[],sb=Ua=0):sb++)}function rc(a){return a&&.5>Math.abs(a.offset.x)&&.5>Math.abs(a.offset.y)&&!a.mover.tmp}function jd(a){return rc(a)&&"P"===a.mover.kind}function kd(a){return rc(a)&&("L"===a.mover.kind||"S"===a.mover.kind)}function sc(a){fa={mover:a,offset:{x:0,y:0},prev:{x:X.x,y:X.y}}}function mb(){var a=Gb(X);jd(a)?ua[Ua]=a.mover:
+(ua[Ua]={type:"Free",name:Ta(),labeled:!0,pos:[ta[0],ta[1],1]},Ha(ua[Ua]));Ua++}function ld(){var a=Gb(X);return kd(a)?(ua[Ua]=a.mover,Ua++,!0):!1}function md(){var a=Gb(X),h;(h=kd(a))||(h=rc(a)&&"C"===a.mover.kind);return h?(ua[Ua]=a.mover,Ua++,!0):!1}function tb(){var a=Gb(X);if(jd(a))for(Hb.args[1]=a.mover.name,a=0;a<u.gslp.length;a++){var h=u.gslp[a];!0===h.tmp&&nd(h.name)}else for(a=0;a<u.gslp.length;a++)h=u.gslp[a],!0===h.tmp&&(h.tmp=!1)}function Sb(a){var h={type:"Free",name:Ta(),labeled:!0,
+pos:[ta[0],ta[1],1],tmp:!0},h=Ha(h);Hb=Ha({type:a,name:Ta(),labeled:!0,args:[ua[0].name,h.name]});sc(h)}function $d(a){for(var h in a)null!==a[h]&&(la[h]=a[h])}function Md(a){Object.keys(m).forEach(function(a){var c=m[a];eb(c.signature||"_helper"===a,a+" has no signature");void 0!==c.updatePosition&&void 0===c.stateSize&&(c.stateSize=0)});u.gslp=[];u.csnames={};u.points=[];u.lines=[];u.conics=[];u.texts=[];u.free=[];u.polygons=[];a.forEach(od);pd()}function qd(a){"undefined"===typeof a.tracedim&&
+(a.tracedim=1);"undefined"===typeof a.tracelength&&(a.tracelength=100);"undefined"===typeof a.traceskip&&(a.traceskip=1);a._traces=Array(a.tracelength);a._traces_index=0;a._traces_tick=0}function ae(a){void 0===a.size&&(a.size=la.pointSize);a.size=l.real(a.size);!a.movable||a.pinned?(a.color=g.realVector(a.color||la.pointColor),a.color=g.scalmult(l.real(la.dimDependent),a.color)):a.color=g.realVector(a.color||la.pointColor);void 0===a.alpha&&(a.alpha=la.alpha);a.alpha=l.real(a.alpha);a.drawtrace&&
+qd(a)}function Tb(a){void 0===a.size&&(a.size=la.lineSize);a.size=l.real(a.size);a.color=g.realVector(a.color||la.lineColor);void 0===a.alpha&&(a.alpha=la.alpha);a.alpha=l.real(a.alpha);a.clip=w.string(a.clip||la.clip);void 0===a.overhang&&(a.overhang=la.overhangLine);a.overhang=l.real(a.overhang);a.dashtype&&(a.dashtype=w.wrap(a.dashtype))}function be(a){void 0===a.overhang&&(a.overhang=la.overhangSeg);a.arrow&&(a.arrow=w.bool(a.arrow));a.arrowsize&&(a.arrowsize=l.real(a.arrowsize));a.arrowposition&&
+(a.arrowposition=l.real(a.arrowposition));a.arrowshape&&(a.arrowshape=w.string(a.arrowshape));a.arrowsides&&(a.arrowsides=w.string(a.arrowsides));Tb(a);a.clip=w.string("end")}function ce(a){a.size=void 0!==a.textsize?a.textsize:void 0!==a.size?a.size:la.textsize;a.size=l.real(+a.size)}function de(a){a.filled=void 0!==a.filled?w.bool(a.filled):w.bool(!0);a.fillcolor=void 0===a.fillcolor?k:g.realVector(a.fillcolor);void 0===a.fillalpha&&(a.fillalpha=0);a.fillalpha=l.real(a.fillalpha);Tb(a)}function Ha(a){a=
+od(a);pd();return a}function od(a){var h;if(void 0!==u.csnames[a.name])return console.log("Element name '"+a.name+"' already exists"),h=u.csnames[a.name],m[h.type].isMovable&&"P"===m[h.type].kind&&Ia(h,a.pos,"homog"),{ctype:"geo",value:h};for(;tc.hasOwnProperty(a.type);)a.type=tc[a.type];if(h=rd[a.type]){var c=h(a),r=null;for(h=0;h<c.length;++h)r=Ha(c[h]);return r}var b=m[a.type],c=!1;if(!b)return console.error(a),console.error("Operation "+a.type+" not implemented yet"),null;if("**"!==b.signature)if(!Array.isArray(b.signature)&&
+"*"===b.signature.charAt(1))c=!0,a.args.forEach(function(c){if(u.csnames[c].kind!==b.signature.charAt(0))return console.error("Not all elements in set are of same type: "+a.name+" expects "+b.signature+" but "+c+" is of kind "+u.csnames[c].kind),"undefined"!==typeof window&&window.alert("Not all elements in set are of same type: "+a.name),null});else if(b.signature.length!==(a.args?a.args.length:0))return console.error("Wrong number of arguments for "+a.name+" of type "+a.type),"undefined"!==typeof window&&
+window.alert("Wrong number of arguments for "+a.name),null;if(a.args)for(h=0;h<a.args.length;++h){if(!u.csnames.hasOwnProperty(a.args[h]))return console.log("Dropping "+a.name+" due to missing argument "+a.args[h]),null;if("**"!==b.signature&&!c&&(r=u.csnames[a.args[h]].kind,b.signature[h]!==r&&("S"!==r||"L"!==b.signature[h])))return window.alert("Wrong argument kind "+r+" as argument "+h+" to element "+a.name+" of type "+a.type),null}b.signatureConstraints&&!b.signatureConstraints(a)&&window.alert("signature constraints violated for element "+
+a.name);u.gslp.push(a);u.csnames[a.name]=a;h=za.length;a.kind=b.kind;a.stateIdx=h;h+=b.stateSize;a.incidences=[];a.isshowing=!0;a.movable=!1;b.isMovable&&(a.movable=!0,u.free.push(a));"P"===a.kind&&(u.points.push(a),ae(a));"L"===a.kind&&(u.lines.push(a),Tb(a));"C"===a.kind&&(u.conics.push(a),Tb(a));"S"===a.kind&&(u.lines.push(a),be(a));"Text"===a.kind&&(u.texts.push(a),ce(a));"Poly"===a.kind&&(u.polygons.push(a),de(a));ee(h);ma=Ma=za;fb=!0;b.initialize&&(va=Aa=a.stateIdx,a.param=b.initialize(a),eb(Aa===
+a.stateIdx+b.stateSize,"State fully initialized"));va=Aa=a.stateIdx;b.updatePosition(a,!1);eb(va===a.stateIdx+b.stateSize,"State fully consumed");eb(Aa===a.stateIdx+b.stateSize,"State fully updated");fb=!1;ma=db["in"];ma.set(za);Ma=db.out;uc(a,b);Ub={};gb(a);return u.csnames[a.name]}function nd(a){var h,c;console.log("Remove element "+a);delete u.csnames[a];for(h=0;h<u.gslp.length;h++)c=u.gslp[h],c.name===a&&(console.log("Removed element from gslp "+a),u.gslp.splice(h,1));for(h=0;h<u.free.length;h++)c=
+u.free[h],c.name===a&&(console.log("Removed element from free "+a),u.free.splice(h,1));for(h=0;h<u.points.length;h++)c=u.points[h],c.name===a&&(console.log("Removed element from points "+a),u.points.splice(h,1));for(h=0;h<u.lines.length;h++)c=u.lines[h],c.name===a&&(console.log("Removed element from lines "+a),u.lines.splice(h,1));for(h=0;h<u.conics.length;h++)c=u.conics[h],c.name===a&&(console.log("Removed element from conics "+a),u.conics.splice(h,1));Ub={}}function sd(a,h){var c=u.csnames[h.args[0]].homog,
+r=u.csnames[h.args[1]].homog,b=a.homog,d=l.div(c.value[0],c.value[2]),c=l.div(c.value[1],c.value[2]),g=l.div(r.value[0],r.value[2]),r=l.div(r.value[1],r.value[2]),e=l.div(b.value[0],b.value[2]),b=l.div(b.value[1],b.value[2]);return l._helper.isAlmostReal(d)&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(g)&&l._helper.isAlmostReal(r)&&l._helper.isAlmostReal(e)&&l._helper.isAlmostReal(b)?(d=d.value.real,c=c.value.real,g=g.value.real,r=r.value.real,e=e.value.real,b=b.value.real,d=Math.sqrt((d-g)*
+(d-g)+(c-r)*(c-r))-Math.sqrt((d-e)*(d-e)+(c-b)*(c-b))-Math.sqrt((g-e)*(g-e)+(r-b)*(r-b)),1E-15>d*d):!1}function uc(a,h){a.isshowing=!0;if(a.args)for(var c=0;c<a.args.length;c++)if(!u.csnames[a.args[c]].isshowing){a.isshowing=!1;return}h.visiblecheck&&h.visiblecheck(a)}function Sd(a){a._bbox=null;if(a.isshowing&&!1!==a.visible){var h={size:a.size},c=a.homog,r=a.text,b=m[a.type].getText,r=b?b(a):r.replace(/@[$#]"([^"\\]|\\.)*"/g,function(a){var c,h;try{if(c=JSON.parse(a.substring(2)),h=u.csnames[c],
+!h)return"?"}catch(r){return"?"}switch(a.charAt(1)){case "$":return h.printname||c;case "#":return"V"!==h.kind?"?":ba(h.value)}}),b=null;if(a.html)var d=a._textCache||{text:!1},g=a.html,e=g.parentNode,f=e.parentNode,b=function(c,h,r,b,na){d.invisible&&f.style.removeProperty("display");if(c!==d.text||h!==d.font||r!==d.x||b!==d.y||na!==d.align){h!==d.font&&(g.style.font=h,g.style.lineHeight=la.lineHeight);c!==d.text&&!1!==c&&!1===td(g,c,h)&&(c=!1);f.style.left=r+"px";f.style.top=b+"px";if(na||e.style.transform)e.style.transform=
+"translateX("+-100*na+"%)";a._textCache={text:c,font:h,x:r,y:b,align:na}}};r=w.string(r);a.dock&&(a.dock.to?c=u.csnames[a.dock.to].homog:ud.hasOwnProperty(a.dock.corner)&&(c=t.screenbounds$0([],{}),c=c.value[ud[a.dock.corner]]),h.offset=a.dock.offset);a.align&&(h.align=w.string(a.align));c&&(a._bbox=D.drawtext([c,r],h,b))}else a.html&&(a.html.parentNode.parentNode.style.display="none",a._textCache={invisible:!0})}function Rd(){function a(){var a=e++/c._traces.length,h=c._traces[g];h&&(a*=r*a*a,t.draw$1([h],
+{size:l.real(b),color:c.color,alpha:l.real(a)}));b*=d}for(var h=0;h<u.points.length;h++){var c=u.points[h];if(c.drawtrace){c._traces_tick===c.traceskip?(c._traces[c._traces_index]=c.homog,c._traces_index=(c._traces_index+1)%c._traces.length,c._traces_tick=0):c._traces_tick++;var r=c.alpha.value.real,b=c.size.value.real,d=1;1!==c.tracedim&&(b*=c.tracedim,d=Math.pow(c.tracedim,-1/c._traces.length));var g,e=0;for(g=c._traces_index;g<c._traces.length;++g)a();for(g=0;g<c._traces_index;++g)a()}}}function eb(a,
+h){var c="Assertion failed: "+h;if(!a)throw console.log(c),Qa(),"undefined"!==typeof alert&&alert(c),Error(c);}function ee(a){if(a!==za.length){var h,c,r=vc.length;hb.length<a*r?(h=2*a,hb=new Float64Array(r*h)):h=hb.length/r|0;for(c=0;c<r;++c)db[vc[c]]=hb.subarray(c*h,c*h+a);a=za;ma=db["in"];Ma=db.out;za=db.good;za.set(a)}}function ub(){za.set(ma);Ja=!1;vd(!1);for(var a=za.length,h=Math.abs,c=0;c<a;c+=2)h(za[c])>1E12*h(za[c+1])&&(za[c+1]=0)}function Vb(){if(vb)Ja=!0;else throw wd;}function xd(a,h,
+c,r,b){return w.add(r,w.mult(c,w.sub(b,r)))}function Qd(){L&&(L.currentMouseAndScripts=[]);wc=!0;if(fa){var a=fa.mover,h=g.realVector([X.x+fa.offset.x,X.y+fa.offset.y,1]);yd(a,h,"mouse");fa.prev.x=X.x;fa.prev.y=X.y}A(S.move);A(S.draw);Ja||ub();wc=!1;L&&(L.fullLog.push(g.turnIntoCSList([g.turnIntoCSList(L.currentMouseAndScripts)])),L.length>L.logLength&&L.splice(0,L.length-L.logLength),L.currentMouseAndScripts=null,L.postMouseHooks.forEach(function(a){a()}))}function Ia(a,h,c){yd(a,h,c);wc||Ja||ub()}
+function yd(a,h,c){L&&L.currentMouseAndScripts&&(L.currentMover=[]);a===zd?(ma.set(za),Ja=!1):(zd=a,ub());Ma.set(ma);var r=1E4,b;b=Ub[a.name];if(!b){var d={},e=0;b=[];d[a.name]=a;for(var f=u.gslp,k=0;k<f.length;++k){var n=f[k],p=n.args;if(p)for(var q=0;q<p.length;++q)d.hasOwnProperty(p[q])&&(d[n.name]=n,b[e++]=n)}Ub[a.name]=b}var d=-1,e=.9,t,v,x,f=m[a.type],k=f.parameterPath||xd;va=a.stateIdx;n=f.getParamFromState(a);va=Aa=a.stateIdx;p=f.getParamForInput(a,h,c);for(q=d+e;d!==q;){var y=q*q,z=.5/(1+
+y),z=l.complex(2*q*z+.5,(1-y)*z);vb=d+.5*e<=d||0===r;0===r&&console.log("tracing limit Reached");y=!1;L&&L.currentMouseAndScripts&&(L.currentStep=[]);try{va=Aa=a.stateIdx;var A=k(a,q,z,n,p);L&&(L.currentParam=A);z=Ma;Ma=ma;f.putParamToState(a,A);Ma=z;Aa=a.stateIdx;L&&(L.currentElement=a);f.updatePosition(a,!0);eb(va===a.stateIdx+f.stateSize,"State fully consumed");eb(Aa===a.stateIdx+f.stateSize,"State fully updated");for(t=0;t<b.length;++t)v=b[t],x=m[v.type],va=Aa=v.stateIdx,L&&(L.currentElement=
+v),x.updatePosition(v,!1),eb(va===v.stateIdx+x.stateSize,"State fully consumed"),eb(Aa===v.stateIdx+x.stateSize,"State fully updated");L&&(L.currentElement=null);d=q;e*=1.25;q+=e;1<=q&&(q=1);Ma=ma;ma=z}catch(B){if(B!==wd)throw B;e*=.5;q=d+e;--r;y=!0}L&&L.currentMouseAndScripts&&(L.currentMover.push(g.turnIntoCSList([g.turnIntoCSList(L.currentStep),w.wrap(y),w.wrap(d),w.wrap(q),w.wrap(L.currentParam)])),L.currentStep=null,L.currentParam=null)}vd(Ja);for(t=0;t<b.length;++t)v=b[t],x=m[v.type],uc(v,x);
+L&&L.currentMouseAndScripts&&(L.currentMouseAndScripts.push(g.turnIntoCSList([g.turnIntoCSList(L.currentMover),w.wrap(Ja),w.wrap(a.name),h,w.wrap(c),n,p])),L.currentMover=null)}function Nd(){ub();vb=!0;for(var a=u.gslp,h=0;h<a.length;h++){var c=a[h],r=m[c.type];va=Aa=c.stateIdx;r.updatePosition(c,!1);uc(c,r)}a=Ma;Ma=ma;ma=a;ub()}function vd(a){var h=p.tracingStateReport;"string"===typeof h&&(document.getElementById(h).textContent=a?"BAD":"GOOD")}function fe(){return g.turnIntoCSList(L.fullLog.slice())}
+function ge(a){var h=JSON.stringify(L.fullLog);a=new Blob([h],{type:a?"application/octet-stream":"application/json"});return window.URL.createObjectURL(a)}function wb(){var a=va;va+=2;return l.complex(ma[a],ma[a+1])}function Z(a){for(var h=Array(a),c=0;c<a;++c)h[c]=wb();return g.turnIntoCSList(h)}function Va(a){Ma[Aa]=a.value.real;Ma[Aa+1]=a.value.imag;Aa+=2}function T(a){for(var h=0,c=a.value.length;h<c;++h)Va(a.value[h])}function Na(a,h){var c=Z(3),r=Z(3),c=Ad(a,h,c,r);T(c[0]);T(c[1]);return g.turnIntoCSList(c)}
+function Ad(a,h,c,r){if(fb)return[a,h];var b=g.projectiveDistMinScal(c,a),d=g.projectiveDistMinScal(c,h),e=g.projectiveDistMinScal(r,a),f=g.projectiveDistMinScal(r,h),l=g.projectiveDistMinScal(c,r),m=g.projectiveDistMinScal(a,h),n=b+f,p=d+e,q;n>p?(q=[h,a],n=p):q=[a,h];p=function(){};if(L&&L.currentStep){var t=[L.labelTracing2,w.wrap(L.currentElement.name),g.turnIntoCSList(q),g.turnIntoCSList([c,r]),g.realMatrix([[b,d],[e,f]]),w.wrap(n),w.wrap(l),w.wrap(m),k];L.currentStep.push(g.turnIntoCSList(t));
+p=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));t[t.length-1]=L[a]}}g._helper.isNaN(a)||g._helper.isNaN(h)?(p("Tracing failed due to NaNs."),Ja=!0):l>3*n&&m>3*n?p("Normal case, everything all right."):1E-5>m?1E-5>l?p("Staying inside singularity."):(p("Moved into singularity."),Ja=!0):1E-5>l?p("Moved out of singularity."):(vb?p("Reached refinement limit, giving up."):p("Need to refine."),Vb());return q}function xc(a,h,c,r){var b=Z(3),d=Z(3),e=Z(3),f=Z(3);a=he(a,h,c,r,b,d,e,f);T(a[0]);T(a[1]);T(a[2]);
+T(a[3]);return g.turnIntoCSList(a)}function he(a,h,c,r,b,d,e,f){var l=function(){};b=[b,d,e,f];a=[a,h,c,r];if(fb)return a;d=0;r=Array(4);for(c=0;4>c;c++)for(r[c]=Array(4),f=0;4>f;f++)e=g.projectiveDistMinScal(b[c],a[f]),r[c][f]=e;e=nc(r);h=Array(4);for(c=0;4>c;++c)h[c]=a[e[c]],d+=r[c][e[c]];var m=1*d,n=Infinity,p=Infinity;for(c=0;4>c;c++){if(g._helper.isNaN(a[c]))return l("Tracing failed due to NaNs."),Ja=!0,h;for(f=c+1;4>f;f++)e=g.projectiveDistMinScal(b[c],b[f]),n>e&&(n=e),e=g.projectiveDistMinScal(h[c],
+h[f]),p>e&&(p=e)}if(L&&L.currentStep){var q=[L.labelTracing4,w.wrap(L.currentElement.name),g.turnIntoCSList(h),g.turnIntoCSList(b),g.realMatrix(r),w.wrap(d),w.wrap(n),w.wrap(p),k];L.currentStep.push(g.turnIntoCSList(q));l=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));q[q.length-1]=L[a]}}n>m&&p>m||(1E-5>p?1E-5>n?l("Staying inside singularity."):(l("Moved into singularity."),Ja=!0):1E-5>n?l("Moved out of singularity."):(vb?l("Reached refinement limit, giving up."):l("Need to refine."),Vb()));return h}
+function Bd(a){var h=a.length,c,r;if(fb){for(c=0;c<h;++c)va+=2*a[c].value.length,T(a[c]);return a}var b=Array(h),d=Array(h),e=Array(h),f=99,l=99,m=Array(h);for(c=0;c<h;++c)b[c]=Z(a[c].value.length),d[c]=g.normSquared(b[c]).value.real,e[c]=g.normSquared(a[c]).value.real,m[c]=Array(h);var n;for(c=0;c<h;++c){for(r=0;r<h;++r)n=g.sesquilinearproduct(b[c],a[r]).value,n=(n.real*n.real+n.imag*n.imag)/(d[c]*e[r]),m[c][r]=1-n;for(r=c+1;r<h;++r)n=g.sesquilinearproduct(b[c],b[r]).value,n=(n.real*n.real+n.imag*
+n.imag)/(d[c]*d[r]),f>1-n&&(f=1-n),n=g.sesquilinearproduct(a[c],a[r]).value,n=(n.real*n.real+n.imag*n.imag)/(e[c]*e[r]),l>1-n&&(l=1-n)}n=nc(m);r=Array(h);d=0;e=!1;for(c=0;c<h;++c){var d=d+m[c][n[c]],p=r[c]=a[n[c]];T(p);e|=g._helper.isNaN(p)}e|=isNaN(d);a=function(){};if(L&&L.currentStep){var q=[L.labelTracingSesq,w.wrap(L.currentElement.name),g.turnIntoCSList(r),g.turnIntoCSList(b),g.realMatrix(m),w.wrap(d),w.wrap(f),w.wrap(l),k];L.currentStep.push(g.turnIntoCSList(q));a=function(a){L.hasOwnProperty(a)||
+(L[a]=w.wrap(a));q[q.length-1]=L[a]}}e?(a("Tracing failed due to NaNs."),Ja=!0):f>3*d&&l>3*d?a("Normal case, everything all right."):1E-5>l?1E-5>f?a("Staying inside singularity."):(a("Moved into singularity."),Ja=!0):1E-5>f?a("Moved out of singularity."):(vb?a("Reached refinement limit, giving up."):a("Need to refine."),Vb());return r}function gb(a){if(gb.hasOwnProperty(a.kind))gb[a.kind](a)}function Cd(a,h){return function(){a.incidences.push(h.name);h.incidences.push(a.name)}}function Dd(a,h){return{toString:function(){return"point "+
+a.name+" incident line "+h.name},apply:Cd(a,h),holds:function(){var c=g.scaldiv(g.abs(a.homog),a.homog),r=g.scaldiv(g.abs(h.homog),h.homog);return 1E-13>l.abs(g.scalproduct(c,r)).value.real}}}function Ed(a,h){return{toString:function(){return"point "+a.name+" incident conic "+h.name},apply:Cd(a,h),holds:function(){var c=w.mult(h.matrix,a.homog),c=w.mult(a.homog,c),c=l.abs(c);1E-13>c.value.real&&(a.incidences.push(h.name),h.incidences.push(a.name))}}}function pd(){if(0!==ib.length){for(var a=0;a<ib.length;++a)ib[a].apply();
+ib=[]}}function yc(a,h,c){var r=document.createElement("div"),b=document.createElement("img");b.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAPoCAQAAAC1v1zVAAAAGklEQVR42u3BMQEAAADCoPVPbQ0PoAAAgHcDC7gAAVI8ZnwAAAAASUVORK5CYII=";r.className="CindyJS-baseline";r.appendChild(b);b=document.createElement("div");b.className="CindyJS-button";r.appendChild(b);for(var d=2;d<arguments.length;++d)b.appendChild(arguments[d]);ka.parentNode.appendChild(r);a.html=arguments[arguments.length-1];Fa(a.fillalpha)||
+(a.fillalpha=1);a.fillcolor&&(a.html.style.backgroundColor=x.makeColor(a.fillcolor,a.fillalpha));r=e;if(a.script)var g=Ra(a.script),r=function(){A(g);e()};c.addEventListener(h,r);!p.keylistener&&(S.keydown||S.keyup||S.keytyped)&&(c.addEventListener("keydown",function(a){9!==a.keyCode&&N(a,S.keydown)}),c.addEventListener("keyup",function(a){N(a,S.keyup)}),c.addEventListener("keypress",function(a){9!==a.keyCode&&N(a,S.keytyped)}));m.Text.initialize(a)}function Pa(){}function ie(a){if(!/^Select/.test(a.type)&&
+!m[a.type].isMovable)return null;var h=w.unwrap,c=l.add;switch(a.kind){case "P":case "L":case "Text":return h(a.homog);case "C":return a=a.matrix.value,{xx:h(a[0].value[0]),yy:h(a[1].value[1]),zz:h(a[2].value[2]),xy:h(c(a[0].value[1],a[1].value[0])),xz:h(c(a[0].value[2],a[2].value[0])),yz:h(c(a[1].value[2],a[2].value[1]))};default:return null}}function je(a){var h={};h.offset=w.unwrap(a.offset);a.to&&(h.to=a.to);a.corner&&(h.corner=a.corner);return h}function ke(a){var h={};le.forEach(function(c){if(a.hasOwnProperty(c)){var b=
+w.unwrap(a[c]);null!==b&&void 0!==b&&(h[c]=b)}});if("P"===a.kind&&(!a.movable||a.pinned)&&h.color){var c=l.real(1/la.dimDependent);h.color=w.unwrap(g.scalmult(c,a.color))}if(c=ie(a))h.pos=c;a.dock&&(h.dock=je(a.dock));return h}function me(){var a=[];u.gslp.forEach(function(h){h.tmp||a.push(ke(h))});return a}function Od(){Ba.forEach(function(a){var h=(a.geo||[]).map(function(a){return u.csnames[a]});O[a.type].reset(a,h[0],h)})}function ec(a){ic=0!==a.length;Ba=[];ga=[];zc=[];O.Environment.init({});
+a.forEach(function(a){a.behavior?(a.name&&(a.behavior.geo=[a.name]),a=a.behavior,a.gravity&&(a.gravity=-a.gravity)):c=a.geo;var c=(a.geo||[]).map(function(a){return u.csnames[a]}),r=c[0],b=O[a.type];b?(b.init&&b.init(a,r,c),r&&(r.behavior=a,"Mass"===a.type?ga.push(r):"Spring"===a.type&&zc.push(r)),Ba.push(a)):(console.error(a),console.error("Behavior "+a.type+" not implemented yet"))})}var wa=this,ia,S={},Ya=!1,Ob=!0,Cb=0,Oc=.5,hc=0,Mb=10,Fd=5/360,Pd=.32/Fd/1E3*2,Kb=1,Wa=0,bc=0,cc=!1,zb=!1,ka,yb,
+Fa=Number.isFinite||function(a){return"number"===typeof a&&isFinite(a)},ta,y,da,ca,u,Xa,kc=k,lc=k,Sa={play:Pa,pause:Pa,stop:Pa},gc=null,Ab=function(a,h){var c=[];Ab=function(a,h){c.push({img:a,id:h})};Ab(a,h);var r=wa.getBaseDir()+"images/Icons.svg",b=new XMLHttpRequest;b.onreadystatechange=function(){if(b.readyState===XMLHttpRequest.DONE)if(200!==b.status)console.error("Failed to load CindyJS Icons.svg from "+r+": "+b.statusText);else{var a=b.responseXML,h=a.documentElement,d={},g,e;for(g=h.firstChild;g;g=
+e)e=g.nextSibling,g.nodeType===Node.ELEMENT_NODE&&"http://www.w3.org/2000/svg"===g.namespaceURI&&"g"===g.localName.toLowerCase()&&(h.removeChild(g),g.setAttribute("style","display:inline"),d[g.getAttribute("id")]=g);var f=new XMLSerializer;Ab=function(c,r){if(d.hasOwnProperty(r)){var b=d[r];h.appendChild(b);var g;try{g=f.serializeToString(a)}finally{h.removeChild(b)}c.src="data:image/svg+xml;charset=utf-8,"+encodeURIComponent(g)}};c.forEach(function(a){Ab(a.img,a.id)});c=null}};b.responseType="document";
+b.open("GET",r);b.send()},Pc=1,Bb=null,jb=[],jc=!1,oa={config:p,startup:W,shutdown:Qa,evokeCS:function(a){a=Ra(a,!1);console.log(a);A(a);e()},play:I,pause:Ca,stop:Da,evalcs:function(a){return A(Ra(a,!1))},parse:function(a){return Ra(a)},niceprint:ba,canvas:null},ac=!1,Lb=0;p.use&&p.use.forEach(function(a){var h=null;p.plugins&&(h=p.plugins[a]);h||(h=wa._pluginRegistry[a]);h||(++Lb,console.log("Loading script for plugin "+a),wa.loadScript(a+"-plugin",a+"-plugin.js",function(){console.log("Successfully loaded plugin "+
+a);0===--Lb&&ac&&W()},function(){console.error("Failed to auto-load plugin "+a);0===--Lb&&ac&&W()}))});xb.prototype=new ab;cb.prototype=new ab;qa.prototype=new ab;var X={},fa,Qc="",Rc=0,Pb;Pb=p.isNode?process.nextTick:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,0)};var mc=null,ne=[0,8,4,0,"gbb244ca"],l={_helper:{}};l._helper.roundingfactor=1E4;l._helper.angleroundingfactor=
+10;l._helper.niceround=function(a,h){return Math.round(a*h)/h};l.niceprint=function(a,h){h=h||l._helper.roundingfactor;if("Angle"===a.usage)return l._helper.niceangle(a);var c=l._helper.niceround(a.value.real,h),r=l._helper.niceround(a.value.imag,h);return 0===r?""+c:0<r?""+c+" + i*"+r:""+c+" - i*"+-r};var Ac=p.angleUnit||"\u00b0",oe=Ac.replace(/\s+/g,""),Gd=2*Math.PI,pe=1/Gd,qe={rad:Gd,"\u00b0":360,deg:360,degree:360,gra:400,grad:400,turn:1,cyc:1,rev:1,rot:1,"\u03c0":2,pi:2,quad:4};l._helper.niceangle=
+function(a){var h=qe[oe];if(!h)return l.niceprint(w.withUsage(a,null));if("function"===typeof h)return h(a);a=l.niceprint(l.realmult(h*pe,a),200<h?l._helper.angleroundingfactor:null);return-1===a.indexOf("i*")?a+Ac:"("+a+")"+Ac};l.complex=function(a,h){return{ctype:"number",value:{real:a,imag:h}}};l.real=function(a){return{ctype:"number",value:{real:a,imag:0}}};l.zero=l.real(0);l.one=l.real(1);l.infinity=l.complex(Infinity,Infinity);l.nan=l.complex(NaN,NaN);l._helper.input=function(a){return"object"===
+typeof a?l.complex(+a.r,+a.i):l.real(+a)};l.argmax=function(a,h){return a.value.real*a.value.real+a.value.imag*a.value.imag<h.value.real*h.value.real+h.value.imag*h.value.imag?h:a};l.max=function(a,h){return{ctype:"number",value:{real:Math.max(a.value.real,h.value.real),imag:Math.max(a.value.imag,h.value.imag)}}};l.min=function(a,h){return{ctype:"number",value:{real:Math.min(a.value.real,h.value.real),imag:Math.min(a.value.imag,h.value.imag)}}};l.add=function(a,h){return{ctype:"number",value:{real:a.value.real+
+h.value.real,imag:a.value.imag+h.value.imag}}};l.sub=function(a,h){return{ctype:"number",value:{real:a.value.real-h.value.real,imag:a.value.imag-h.value.imag}}};l.neg=function(a){return{ctype:"number",value:{real:-a.value.real,imag:-a.value.imag}}};l.re=function(a){return{ctype:"number",value:{real:a.value.real,imag:0}}};l.im=function(a){return{ctype:"number",value:{real:a.value.imag,imag:0}}};l.conjugate=function(a){return{ctype:"number",value:{real:a.value.real,imag:-a.value.imag}}};l.round=function(a){return{ctype:"number",
+value:{real:Math.round(a.value.real),imag:Math.round(a.value.imag)}}};l.ceil=function(a){return{ctype:"number",value:{real:Math.ceil(a.value.real),imag:Math.ceil(a.value.imag)}}};l.floor=function(a){return{ctype:"number",value:{real:Math.floor(a.value.real),imag:Math.floor(a.value.imag)}}};l.mult=function(a,h){return{ctype:"number",value:{real:a.value.real*h.value.real-a.value.imag*h.value.imag,imag:a.value.real*h.value.imag+a.value.imag*h.value.real}}};l.realmult=function(a,h){return{ctype:"number",
+value:{real:a*h.value.real,imag:a*h.value.imag}}};l.multiMult=function(a){var h=a[0];if("number"!==h.ctype)return k;for(var c=1;c<a.length;c++){if("number"!==a[c].ctype)return k;h=l.mult(h,a[c])}return h};l.abs2=function(a,h){return{ctype:"number",value:{real:a.value.real*a.value.real+a.value.imag*a.value.imag,imag:0}}};l.abs=function(a){return l.sqrt(l.abs2(a))};l.inv=function(a){var h=a.value.real*a.value.real+a.value.imag*a.value.imag;return{ctype:"number",value:{real:a.value.real/h,imag:-a.value.imag/
+h}}};l.div=function(a,h){var c=a.value.real,r=a.value.imag,b=h.value.real,d=h.value.imag,g=b*b+d*d;return{ctype:"number",value:{real:(c*b+r*d)/g,imag:(r*b-c*d)/g}}};l.eps=1E-10;l.epsbig=1E-6;l.snap=function(a){var h=a.value.real;a=a.value.imag;Math.floor(h+l.eps)!==Math.floor(h-l.eps)&&(h=Math.round(h));Math.floor(a+l.eps)!==Math.floor(a-l.eps)&&(a=Math.round(a));return{ctype:"number",value:{real:h,imag:a}}};l.exp=function(a){var h=Math.exp(a.value.real);return{ctype:"number",value:{real:h*Math.cos(a.value.imag),
+imag:h*Math.sin(a.value.imag)}}};l.cos=function(a){var h=a.value.real;a=a.value.imag;var c=Math.exp(a),r=c*Math.sin(-h),b=c*Math.cos(-h),c=Math.exp(-a);return{ctype:"number",value:{real:(b+c*Math.cos(h))/2,imag:(r+c*Math.sin(h))/2}}};l.sin=function(a){var h=a.value.real;a=a.value.imag;var c=Math.exp(a),r=c*Math.sin(-h),b=c*Math.cos(-h),c=Math.exp(-a);return{ctype:"number",value:{real:-(r-c*Math.sin(h))/2,imag:(b-c*Math.cos(h))/2}}};l.tan=function(a){var h=l.sin(a);a=l.cos(a);return l.div(h,a)};l.arccos=
+function(a){var h=l.mult(a,l.neg(a)),h=l.sqrt(l.add(l.real(1),h));a=l.add(l.mult(a,l.complex(0,1)),h);a=l.add(l.mult(l.log(a),l.complex(0,1)),l.real(.5*Math.PI));return w.withUsage(a,"Angle")};l.arcsin=function(a){var h=l.mult(a,l.neg(a)),h=l.sqrt(l.add(l.real(1),h));a=l.add(l.mult(a,l.complex(0,1)),h);a=l.mult(l.log(a),l.complex(0,-1));return w.withUsage(a,"Angle")};l.arctan=function(a){var h=l.log(l.add(l.mult(a,l.complex(0,-1)),l.real(1)));a=l.log(l.add(l.mult(a,l.complex(0,1)),l.real(1)));h=l.mult(l.sub(h,
+a),l.complex(0,.5));return w.withUsage(h,"Angle")};l.arctan2=function(a,h){var c;if(void 0===h)c=l.real(Math.atan2(a.value.imag,a.value.real));else if(l._helper.isReal(a)&&l._helper.isReal(h))c=l.real(Math.atan2(h.value.real,a.value.real));else{c=l.add(a,l.mult(l.complex(0,1),h));var r=l.sqrt(l.add(l.mult(a,a),l.mult(h,h)));c=l.mult(l.complex(0,-1),l.log(l.div(c,r)))}return w.withUsage(c,"Angle")};l.sqrt=function(a){var h=a.value.real,c=a.value.imag;a=Math.sqrt(Math.sqrt(h*h+c*c));h=Math.atan2(c,
+h);return{ctype:"number",value:{real:a*Math.cos(h/2),imag:a*Math.sin(h/2)}}};l.powRealExponent=function(a,h){var c=a.value.real,r=a.value.imag,b=Math.pow(Math.sqrt(c*c+r*r),h),c=Math.atan2(r,c);return{ctype:"number",value:{real:b*Math.cos(c*h),imag:b*Math.sin(c*h)}}};l.log=function(a){var h=a.value.real;a=a.value.imag;var c=Math.sqrt(h*h+a*a),r=Math.atan2(a,h);0>a&&(r+=2*Math.PI);0===a&&0>h&&(r=Math.PI);r>Math.PI&&(r-=2*Math.PI);return l.snap({ctype:"number",value:{real:Math.log(c),imag:r}})};l.pow=
+function(a,h){return l._helper.isZero(h)?l.one:l._helper.isZero(a)?l.zero:l._helper.isReal(h)?l.powRealExponent(a,h.value.real):l.exp(l.mult(l.log(a),h))};l.mod=function(a,h){var c=a.value.real,r=h.value.real,b=a.value.imag,d=h.value.imag,c=c-Math.floor(c/r)*r,b=b-Math.floor(b/d)*d;0===r&&(c=0);0===d&&(b=0);return l.snap({ctype:"number",value:{real:c,imag:b}})};l._helper.seed="NO";l._helper.seedrandom=function(a){a-=Math.floor(a);l._helper.seed=.8*a+.1};l._helper.rand=function(){if("NO"===l._helper.seed)return Math.random();
+var a=l._helper.seed,a=1E3*Math.sin(1E3*a),a=a-Math.floor(a);return l._helper.seed=a};l._helper.randnormal=function(){var a=l._helper.rand(),h=l._helper.rand();return Math.sqrt(-2*Math.log(a))*Math.cos(2*Math.PI*h)};l._helper.isEqual=function(a,h){return a.value.real===h.value.real&&a.value.imag===h.value.imag};l._helper.isLessThan=function(a,h){return a.value.real<h.value.real||a.value.real===h.value.real&&a.value.imag<h.value.imag};l._helper.compare=function(a,h){return l._helper.isLessThan(a,h)?
+-1:l._helper.isEqual(a,h)?0:1};l._helper.isAlmostEqual=function(a,h,c){var r=l.eps;"undefined"!==typeof c&&(r=c);c=a.value.real-h.value.real;a=a.value.imag-h.value.imag;return c<r&&c>-r&&a<r&&a>-r};l._helper.isZero=function(a){return 0===a.value.real&&0===a.value.imag};l._helper.isAlmostZero=function(a){var h=a.value.real;a=a.value.imag;return h<l.eps&&h>-l.eps&&a<l.eps&&a>-l.eps};l._helper.isReal=function(a){return 0===a.value.imag};l._helper.isAlmostReal=function(a){a=a.value.imag;return a<l.epsbig&&
+a>-l.epsbig};l._helper.isNaN=function(a){return isNaN(a.value.real)||isNaN(a.value.imag)};l._helper.isFinite=function(a){return isFinite(a.value.real)&&isFinite(a.value.imag)};l._helper.isAlmostImag=function(a){a=a.value.real;return a<l.epsbig&&a>-l.epsbig};l._helper.z3a=l.complex(-.5,.5*Math.sqrt(3));l._helper.z3b=l.complex(-.5,-.5*Math.sqrt(3));l._helper.cub1={ctype:"list",value:[l.one,l.one,l.one]};l._helper.cub2={ctype:"list",value:[l._helper.z3a,l.one,l._helper.z3b]};l._helper.cub3={ctype:"list",
+value:[l._helper.z3b,l.one,l._helper.z3a]};l.solveCubic=function(a,h,c,r){a=l._helper.solveCubicHelper(a,h,c,r);return[g.scalproduct(l._helper.cub1,a),g.scalproduct(l._helper.cub2,a),g.scalproduct(l._helper.cub3,a)]};l._helper.solveCubicHelper=function(a,h,c,r){var b=a.value.real;a=a.value.imag;var d=h.value.real;h=h.value.imag;var e=c.value.real,f=c.value.imag,k=r.value.real,m=r.value.imag,n=b*e-a*f;c=b*f+a*e;r=4*n-(d*d-h*h);var p=4*c-2*d*h,q=b*d-a*h,t=b*h+a*d,v=r*e-p*f-18*(q*k-t*m),p=r*f+p*e-18*
+(q*m+t*k);r=27*(b*b-a*a);var u=54*a*b,w=r*k-u*m,x=r*m+u*k,z=d*d-h*h,y=2*d*h,A=z*d-y*h,B=z*h+y*d,C=w+4*A,u=x+4*B;r=27*(v*e-p*f+C*k-u*m);p=27*(v*f+p*e+C*m+u*k);C=Math.sqrt(Math.sqrt(r*r+p*p));u=Math.atan2(p,r);p=C*Math.sin(u/2);r=C*Math.cos(u/2);A=-2*A+9*(q*e-t*f)-w+(r*b-p*a);B=-2*B+9*(q*f+t*e)-x+(r*a+p*b);r=Math.exp(Math.log(Math.sqrt(A*A+B*B))/3);e=Math.atan2(B,A);u=r*Math.sin(e/3);p=r*Math.cos(e/3);r*=r;e*=2;n=2*z-6*n;c=2*y-6*c;y=-1.5874010519681996*(d*p-h*u);d=-1.5874010519681996*(d*u+h*p);h=1.2599210498948732*
+r*Math.cos(e/3);e=1.2599210498948732*r*Math.sin(e/3);r=4.762203155904599*(p*b-u*a);p=4.762203155904599*(p*a+u*b);b=r*r+p*p;u=(-n*p+c*r)/b;n=(n*r+c*p)/b;c=u;u=(-y*p+d*r)/b;y=(y*r+d*p)/b;d=u;u=(-h*p+e*r)/b;h=(h*r+e*p)/b;e=u;return g.turnIntoCSList([l.complex(n,c),l.complex(y,d),l.complex(h,e)])};var g={_helper:{},turnIntoCSList:function(a){return{ctype:"list",value:a}}};g.EMPTY=g.turnIntoCSList([]);g.asList=function(a){return"list"===a.ctype?a:"number"===a.ctype||"boolean"===a.ctype||"geo"===a.ctype?
+g.turnIntoCSList([a]):g.EMPTY};g.realVector=function(a){for(var h=[],c=0;c<a.length;c++)h[c]={ctype:"number",value:{real:a[c],imag:0}};return{ctype:"list",value:h}};g._helper.unitvector=function(a,h){var c=g.zerovector(a);c.value[Math.floor(h.value.real-1)]=l.real(1);return c};g.idMatrix=function(a){for(var h=g.zeromatrix(a,a),c=l.real(1),r=0;r<a.value.real;r++)h.value[r].value[r]=c;return h};g._helper.flippedidMatrix=function(a){for(var h=g.zeromatrix(a,a),c=l.real(1),r=0;r<a.value.real;r++)h.value[r].value[a.value.real-
+r-1]=c;return h};g.println=function(a){for(var h=[],c=0;c<a.value.length;c++)if("number"===a.value[c].ctype)h[c]=l.niceprint(a.value[c]);else if("list"===a.value[c].ctype)g.println(a.value[c]);else return k;"number"===a.value[0].ctype&&console.log(h)};g.matrix=function(a){return g.turnIntoCSList(a.map(g.turnIntoCSList))};g.realMatrix=function(a){for(var h=a.length,c=Array(h),r=0;r<h;r++)c[r]=g.realVector(a[r]);return g.turnIntoCSList(c)};g.ex=g.realVector([1,0,0]);g.ey=g.realVector([0,1,0]);g.ez=
+g.realVector([0,0,1]);g.linfty=g.realVector([0,0,1]);g.ii=g.turnIntoCSList([l.complex(1,0),l.complex(0,1),l.complex(0,0)]);g.jj=g.turnIntoCSList([l.complex(1,0),l.complex(0,-1),l.complex(0,0)]);g.fundDual=g.realMatrix([[1,0,0],[0,1,0],[0,0,0]]);g.fund=g.realMatrix([[0,0,0],[0,0,0],[0,0,1]]);g.sequence=function(a,h){for(var c=[],r=0,b=Math.round(a.value.real);b<Math.round(h.value.real)+1;b++)c[r]={ctype:"number",value:{real:b,imag:0}},r++;return{ctype:"list",value:c}};g.pairs=function(a){for(var h=
+[],c=0;c<a.value.length-1;c++)for(var r=c+1;r<a.value.length;r++)h.push({ctype:"list",value:[a.value[c],a.value[r]]});return{ctype:"list",value:h}};g.triples=function(a){for(var h=[],c=0;c<a.value.length-2;c++)for(var r=c+1;r<a.value.length-1;r++)for(var b=r+1;b<a.value.length;b++)h.push({ctype:"list",value:[a.value[c],a.value[r],a.value[b]]});return{ctype:"list",value:h}};g.cycle=function(a){for(var h=[],c=0;c<a.value.length-1;c++)h[c]={ctype:"list",value:[a.value[c],a.value[c+1]]};h.push({ctype:"list",
+value:[a.value[a.value.length-1],a.value[0]]});return{ctype:"list",value:h}};g.consecutive=function(a){for(var h=[],c=0;c<a.value.length-1;c++)h[c]={ctype:"list",value:[a.value[c],a.value[c+1]]};return{ctype:"list",value:h}};g.reverse=function(a){for(var h=Array(a.value.length),c=a.value.length-1,r=0;0<=c;c--,r++)h[r]=a.value[c];return{ctype:"list",value:h}};g.directproduct=function(a,h){for(var c=[],r=0;r<a.value.length;r++)for(var b=0;b<h.value.length;b++)c.push({ctype:"list",value:[a.value[r],
+h.value[b]]});return{ctype:"list",value:c}};g.concat=function(a,h){for(var c=[],r=0;r<a.value.length;r++)c.push(a.value[r]);for(r=0;r<h.value.length;r++)c.push(h.value[r]);return{ctype:"list",value:c}};g.prepend=function(a,h){var c=[];c[0]=a;for(var r=0;r<h.value.length;r++)c[r+1]=h.value[r];return{ctype:"list",value:c}};g.append=function(a,h){for(var c=[],r=0;r<a.value.length;r++)c[r]=a.value[r];c.push(h);return{ctype:"list",value:c}};g.contains=function(a,h){for(var c=0;c<a.value.length;c++)if(D.equals(a.value[c],
+h).value)return{ctype:"boolean",value:!0};return{ctype:"boolean",value:!1}};g.common=function(a,h){for(var c=[],r=0,b=0;b<a.value.length;b++){for(var d=!1,g=a.value[b],e=0;e<h.value.length;e++)d=d||D.equals(g,h.value[e]).value;d&&(c[r]=a.value[b],r++)}return{ctype:"list",value:c}};g.remove=function(a,h){for(var c=[],r=0,b=0;b<a.value.length;b++){for(var d=!1,g=a.value[b],e=0;e<h.value.length;e++)d=d||D.equals(g,h.value[e]).value;d||(c[r]=a.value[b],r++)}return{ctype:"list",value:c}};g.sort1=function(a){a=
+a.value.slice();a.sort(w.compare);return g.turnIntoCSList(a)};g._helper.isEqual=function(a,h){return g.equals(a,h).value};g._helper.isLessThan=function(a,h){for(var c=a.value.length,r=h.value.length,b=0;!(b>=c||b>=r)&&w.isEqual(a.value[b],h.value[b]);)b++;return b===c&&b<r?!0:b===r&&b<c||b===c&&b===r?!1:w.isLessThan(a.value[b],h.value[b])};g._helper.compare=function(a,h){return g._helper.isLessThan(a,h)?-1:g._helper.isEqual(a,h)?0:1};g.equals=function(a,h){if(a.value.length!==h.value.length)return{ctype:"boolean",
+value:!1};for(var c=!0,r=0;r<a.value.length;r++)var b=a.value[r],d=h.value[r],c="list"===b.ctype&&"list"===d.ctype?c&&g.equals(b,d).value:c&&pb([b,d],[]).value;return{ctype:"boolean",value:c}};g.almostequals=function(a,h){if(a.value.length!==h.value.length)return{ctype:"boolean",value:!1};for(var c=!0,r=0;r<a.value.length;r++)var b=a.value[r],d=h.value[r],c="list"===b.ctype&&"list"===d.ctype?c&&g.almostequals(b,d).value:c&&Yb([b,d],[]).value;return{ctype:"boolean",value:c}};g._helper.isAlmostReal=
+function(a){for(var h=!0,c=0;c<a.value.length;c++)var r=a.value[c],h="list"===r.ctype?h&&g._helper.isAlmostReal(r):h&&l._helper.isAlmostReal(r);return h};g._helper.isAlmostZero=function(a){for(var h=0;h<a.value.length;h++){var c=a.value[h];if("list"===c.ctype){if(!g._helper.isAlmostZero(c))return!1}else if(!l._helper.isAlmostZero(c))return!1}return!0};g._helper.isNaN=function(a){for(var h=!1,c=0;c<a.value.length;c++)var r=a.value[c],h="list"===r.ctype?h||g._helper.isNaN(r):h||l._helper.isNaN(r);return h};
+g.set=function(a){var h=[],c=0;a=a.value.slice();a.sort(w.compare);for(var r=0;r<a.length;r++)0!==r&&pb([h[h.length-1],a[r]],[]).value||(h[c]=a[r],c++);return{ctype:"list",value:h}};g.maxval=function(a){for(var h=l.zero,c=0;c<a.value.length;c++){var r=a.value[c];"number"===r.ctype&&(h=l.argmax(h,r));"list"===r.ctype&&(h=l.argmax(h,g.maxval(r)))}return h};g.maxIndex=function(a,h,c){var r=0;void 0!==c&&(r=c);c=r;for(var b=h(a.value[r]).value.real;r<a.value.length;++r){var d=h(a.value[r]).value.real;
+d>b&&(c=r,b=d)}return c};g.normalizeMax=function(a){var h=l.inv(g.maxval(a));return l._helper.isFinite(h)?g.scalmult(h,a):a};g.normalizeZ=function(a){var h=l.inv(a.value[2]);return g.scalmult(h,a)};g.dehom=function(a){a=a.value.slice();var h=a.length-1,c=l.inv(a[h]);a.length=h;for(var r=0;r<h;++r)a[r]=l.mult(c,a[r]);return g.turnIntoCSList(a)};g.normalizeAbs=function(a){var h=l.inv(g.abs(a));return g.scalmult(h,a)};g.max=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=[],r=0;r<
+a.value.length;r++)c[r]=w.max(a.value[r],h.value[r]);return{ctype:"list",value:c}};g.min=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=[],r=0;r<a.value.length;r++)c[r]=w.min(a.value[r],h.value[r]);return{ctype:"list",value:c}};g.scaldiv=function(a,h){if("number"!==a.ctype)return k;for(var c=[],r=0;r<h.value.length;r++){var b=h.value[r];c[r]="number"===b.ctype?w.div(b,a):"list"===b.ctype?g.scaldiv(a,b):k}return{ctype:"list",value:c}};g.scalmult=function(a,h){if("number"!==a.ctype)return k;
+for(var c=[],r=0;r<h.value.length;r++){var b=h.value[r];c[r]="number"===b.ctype?w.mult(b,a):"list"===b.ctype?g.scalmult(a,b):k}return{ctype:"list",value:c}};g.add=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=[],r=0;r<a.value.length;r++){var b=a.value[r],d=h.value[r];c[r]="number"===b.ctype&&"number"===d.ctype?w.add(b,d):"list"===b.ctype&&"list"===d.ctype?g.add(b,d):k}return{ctype:"list",value:c}};g.sub=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=[],r=
+0;r<a.value.length;r++){var b=a.value[r],d=h.value[r];c[r]="number"===b.ctype&&"number"===d.ctype?l.sub(b,d):"list"===b.ctype&&"list"===d.ctype?g.sub(b,d):k}return{ctype:"list",value:c}};g.abs2=function(a){for(var h=0,c=0;c<a.value.length;c++){var r=a.value[c];if("number"===r.ctype)h+=l.abs2(r).value.real;else if("list"===r.ctype)h+=g.abs2(r).value.real;else return k}return{ctype:"number",value:{real:h,imag:0}}};g.abs=function(a){return l.sqrt(g.abs2(a))};g.normalizeMaxXX=function(a){for(var h=-1E4,
+c=l.real(1),r=0;r<a.value.length;r++){var b=l.abs(a.value[r]);b.value.real>h&&(c=a.value[r],h=b.value.real)}return g.scaldiv(c,a)};g.recursive=function(a,h){for(var c=[],r=0;r<a.value.length;r++){var b=B(a.value[r]);c[r]="number"===b.ctype?l[h](b):"list"===b.ctype?g[h](b):k}return{ctype:"list",value:c}};g.re=function(a){return g.recursive(a,"re")};g.neg=function(a){return g.recursive(a,"neg")};g.im=function(a){return g.recursive(a,"im")};g.conjugate=function(a){return g.recursive(a,"conjugate")};
+g.transjugate=function(a){return g.transpose(g.conjugate(a))};g.round=function(a){return g.recursive(a,"round")};g.ceil=function(a){return g.recursive(a,"ceil")};g.floor=function(a){return g.recursive(a,"floor")};g._helper.colNumb=function(a){if("list"!==a.ctype)return-1;for(var h=-1,c=0;c<a.value.length;c++){if("list"!==a.value[c].ctype)return-1;if(0===c)h=a.value[c].value.length;else if(h!==a.value[c].value.length)return-1}return h};g._helper.isNumberVecN=function(a,h){if("list"!==a.ctype||a.value.length!==
+h)return!1;for(var c=0;c<a.value.length;c++)if("number"!==a.value[c].ctype)return!1;return!0};g.isNumberVector=function(a){if("list"!==a.ctype)return{ctype:"boolean",value:!1};for(var h=0;h<a.value.length;h++)if("number"!==a.value[h].ctype)return{ctype:"boolean",value:!1};return{ctype:"boolean",value:!0}};g.isNumberVectorN=function(a,h){if("list"!==a.ctype)return{ctype:"boolean",value:!1};if(a.value)for(var c=0;c<a.value.length;c++)if("number"!==a.value[c].ctype)return{ctype:"boolean",value:!1};return{ctype:"boolean",
+value:!0}};g.isNumberMatrix=function(a){if(-1===g._helper.colNumb(a))return{ctype:"boolean",value:!1};for(var h=0;h<a.value.length;h++)if(!g.isNumberVector(a.value[h]).value)return{ctype:"boolean",value:!1};return{ctype:"boolean",value:!0}};g._helper.isNumberMatrixMN=function(a,h,c){return g.isNumberMatrix(a).value&&a.value.length===h&&a.value[0].value.length===c};g.scalproduct=function(a,h){if(a.value.length!==h.value.length)return k;for(var c={ctype:"number",value:{real:0,imag:0}},r=0;r<h.value.length;r++){var b=
+a.value[r],d=h.value[r];if("number"===b.ctype&&"number"===d.ctype)c=l.add(l.mult(b,d),c);else return k}return c};g.sesquilinearproduct=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=0,r=0,b=0;b<h.value.length;b++)var d=a.value[b].value,g=h.value[b].value,c=c+(d.real*g.real+d.imag*g.imag),r=r+(d.real*g.imag-d.imag*g.real);return l.complex(c,r)};g.normSquared=function(a){for(var h=0,c=0;c<a.value.length;c++)var r=a.value[c].value,h=h+(r.real*r.real+r.imag*r.imag);return l.real(h)};
+g.productMV=function(a,h){if(a.value[0].value.length!==h.value.length)return k;for(var c=[],r=0;r<a.value.length;r++){for(var b={ctype:"number",value:{real:0,imag:0}},d=a.value[r],e=0;e<h.value.length;e++){var f=d.value[e],m=h.value[e];if("number"===f.ctype&&"number"===m.ctype)b=l.add(l.mult(f,m),b);else return k}c[r]=b}return g.turnIntoCSList(c)};g.productVM=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=[],b=0;b<h.value[0].value.length;b++){for(var d={ctype:"number",value:{real:0,
+imag:0}},e=0;e<a.value.length;e++){var f=a.value[e],m=h.value[e].value[b];if("number"===f.ctype&&"number"===m.ctype)d=l.add(l.mult(f,m),d);else return k}c[b]=d}return g.turnIntoCSList(c)};g.productMM=function(a,h){if(a.value[0].value.length!==h.value.length)return k;for(var c=[],b=0;b<a.value.length;b++){var d=g.productVM(a.value[b],h);c[b]=d}return g.turnIntoCSList(c)};g.mult=function(a,h){return a.value.length===h.value.length&&g.isNumberVector(a).value&&g.isNumberVector(h).value?g.scalproduct(a,
+h):g.isNumberMatrix(a).value&&h.value.length===a.value[0].value.length&&g.isNumberVector(h).value?g.productMV(a,h):g.isNumberMatrix(h).value&&a.value.length===h.value.length&&g.isNumberVector(a).value?g.productVM(a,h):g.isNumberMatrix(a).value&&g.isNumberMatrix(h).value&&h.value.length===a.value[0].value.length?g.productMM(a,h):k};g.projectiveDistMinScal=function(a,h){var c=g.abs(a),b=g.abs(h);if(0===c.value.real||0===b.value.real)return 0;var d=g.conjugate(h),d=g.scalproduct(a,d),d=l._helper.isAlmostZero(d)?
+l.real(1):l.div(d,l.abs(d)),c=g.scaldiv(c,a),b=g.scaldiv(b,h),b=g.scalmult(d,b),d=g.abs(g.add(c,b)),b=g.abs(g.sub(c,b));return Math.min(d.value.real,b.value.real)};g.conicDist=function(a,h){var c=v(a),b=v(h);console.log(ba(c),ba(b));return g.projectiveDistMinScal(c,b)};g.crossOperator=function(a){var h=a.value[0],c=a.value[1];a=a.value[2];return g.turnIntoCSList([g.turnIntoCSList([l.zero,l.neg(a),c]),g.turnIntoCSList([a,l.zero,l.neg(h)]),g.turnIntoCSList([l.neg(c),h,l.zero])])};g.cross=function(a,
+h){var c=l.sub(l.mult(a.value[1],h.value[2]),l.mult(a.value[2],h.value[1])),b=l.sub(l.mult(a.value[2],h.value[0]),l.mult(a.value[0],h.value[2])),d=l.sub(l.mult(a.value[0],h.value[1]),l.mult(a.value[1],h.value[0]));return g.turnIntoCSList([c,b,d])};g.crossratio3harm=function(a,h,c,b,d){var e=g.det3(a,c,d),f=g.det3(h,b,d);a=g.det3(a,b,d);h=g.det3(h,c,d);e=l.mult(e,f);f=l.mult(a,h);return g.turnIntoCSList([e,f])};g.crossratio3=function(a,h,c,b,d){a=g.crossratio3harm(a,h,c,b,d);return l.div(a.value[0],
+a.value[1])};g.veronese=function(a){var h=l.mult(a.value[0],a.value[0]),c=l.mult(a.value[1],a.value[1]),b=l.mult(a.value[2],a.value[2]),d=l.mult(a.value[0],a.value[1]),e=l.mult(a.value[0],a.value[2]);a=l.mult(a.value[1],a.value[2]);return g.turnIntoSCList([h,c,b,d,e,a])};g.matrixFromVeronese=function(a){var h=a.value[0],c=a.value[1],b=a.value[2],d=l.realmult(.5,a.value[3]),e=l.realmult(.5,a.value[4]);a=l.realmult(.5,a.value[5]);return g.turnIntoCSList([g.turnIntoCSList([h,d,e]),g.turnIntoCSList([d,
+c,a]),g.turnIntoCSList([e,a,b])])};g.det2=function(a,h){var c=l.mult(a.value[0],h.value[1]);return c=l.sub(c,l.mult(a.value[1],h.value[0]))};g.det3=function(a,h,c){return l.complex(a.value[0].value.real*h.value[1].value.real*c.value[2].value.real-a.value[0].value.imag*h.value[1].value.imag*c.value[2].value.real-a.value[0].value.imag*h.value[1].value.real*c.value[2].value.imag-a.value[0].value.real*h.value[1].value.imag*c.value[2].value.imag+a.value[2].value.real*h.value[0].value.real*c.value[1].value.real-
+a.value[2].value.imag*h.value[0].value.imag*c.value[1].value.real-a.value[2].value.imag*h.value[0].value.real*c.value[1].value.imag-a.value[2].value.real*h.value[0].value.imag*c.value[1].value.imag+a.value[1].value.real*h.value[2].value.real*c.value[0].value.real-a.value[1].value.imag*h.value[2].value.imag*c.value[0].value.real-a.value[1].value.imag*h.value[2].value.real*c.value[0].value.imag-a.value[1].value.real*h.value[2].value.imag*c.value[0].value.imag-a.value[0].value.real*h.value[2].value.real*
+c.value[1].value.real+a.value[0].value.imag*h.value[2].value.imag*c.value[1].value.real+a.value[0].value.imag*h.value[2].value.real*c.value[1].value.imag+a.value[0].value.real*h.value[2].value.imag*c.value[1].value.imag-a.value[2].value.real*h.value[1].value.real*c.value[0].value.real+a.value[2].value.imag*h.value[1].value.imag*c.value[0].value.real+a.value[2].value.imag*h.value[1].value.real*c.value[0].value.imag+a.value[2].value.real*h.value[1].value.imag*c.value[0].value.imag-a.value[1].value.real*
+h.value[0].value.real*c.value[2].value.real+a.value[1].value.imag*h.value[0].value.imag*c.value[2].value.real+a.value[1].value.imag*h.value[0].value.real*c.value[2].value.imag+a.value[1].value.real*h.value[0].value.imag*c.value[2].value.imag,-a.value[0].value.imag*h.value[1].value.imag*c.value[2].value.imag+a.value[0].value.imag*h.value[1].value.real*c.value[2].value.real+a.value[0].value.real*h.value[1].value.real*c.value[2].value.imag+a.value[0].value.real*h.value[1].value.imag*c.value[2].value.real-
+a.value[2].value.imag*h.value[0].value.imag*c.value[1].value.imag+a.value[2].value.imag*h.value[0].value.real*c.value[1].value.real+a.value[2].value.real*h.value[0].value.real*c.value[1].value.imag+a.value[2].value.real*h.value[0].value.imag*c.value[1].value.real-a.value[1].value.imag*h.value[2].value.imag*c.value[0].value.imag+a.value[1].value.imag*h.value[2].value.real*c.value[0].value.real+a.value[1].value.real*h.value[2].value.real*c.value[0].value.imag+a.value[1].value.real*h.value[2].value.imag*
+c.value[0].value.real+a.value[0].value.imag*h.value[2].value.imag*c.value[1].value.imag-a.value[0].value.imag*h.value[2].value.real*c.value[1].value.real-a.value[0].value.real*h.value[2].value.real*c.value[1].value.imag-a.value[0].value.real*h.value[2].value.imag*c.value[1].value.real+a.value[2].value.imag*h.value[1].value.imag*c.value[0].value.imag-a.value[2].value.imag*h.value[1].value.real*c.value[0].value.real-a.value[2].value.real*h.value[1].value.real*c.value[0].value.imag-a.value[2].value.real*
+h.value[1].value.imag*c.value[0].value.real+a.value[1].value.imag*h.value[0].value.imag*c.value[2].value.imag-a.value[1].value.imag*h.value[0].value.real*c.value[2].value.real-a.value[1].value.real*h.value[0].value.real*c.value[2].value.imag-a.value[1].value.real*h.value[0].value.imag*c.value[2].value.real)};g.det4m=function(a){var h=a.value,c=h[0].value,b=c[0].value,d=+b.real,g=+b.imag,b=c[1].value,e=+b.real,f=+b.imag,b=c[2].value,k=+b.real,m=+b.imag,b=c[3].value,n=+b.real,p=+b.imag,c=h[1].value,
+b=c[0].value,q=+b.real,t=+b.imag,b=c[1].value,u=+b.real,v=+b.imag,b=c[2].value,w=+b.real,x=+b.imag,b=c[3].value,c=+b.real,b=+b.imag;a=d*u-g*v-e*q+f*t;var y=d*v+g*u-e*t-f*q,z=d*w-g*x-k*q+m*t,A=d*x+g*w-k*t-m*q,B=d*c-g*b-n*q+p*t,C=d*b+g*c-n*t-p*q,D=e*w-f*x-k*u+m*v,E=e*x+f*w-k*v-m*u,F=e*c-f*b-n*u+p*v,G=e*b+f*c-n*v-p*u,H=k*c-m*b-n*w+p*x,L=k*b+m*c-n*x-p*w,c=h[2].value,b=c[0].value,d=+b.real,g=+b.imag,b=c[1].value,e=+b.real,f=+b.imag,b=c[2].value,k=+b.real,m=+b.imag,b=c[3].value,n=+b.real,p=+b.imag,c=h[3].value,
+b=c[0].value,q=+b.real,t=+b.imag,b=c[1].value,u=+b.real,v=+b.imag,b=c[2].value,w=+b.real,x=+b.imag,b=c[3].value,c=+b.real,b=+b.imag,h=d*u-g*v-e*q+f*t,J=d*v+g*u-e*t-f*q,I=d*w-g*x-k*q+m*t,K=d*x+g*w-k*t-m*q,M=d*c-g*b-n*q+p*t,d=d*b+g*c-n*t-p*q,g=e*w-f*x-k*u+m*v,q=e*x+f*w-k*v-m*u,t=e*c-f*b-n*u+p*v,e=e*b+f*c-n*v-p*u,f=k*c-m*b-n*w+p*x,k=k*b+m*c-n*x-p*w;return l.complex(a*f-y*k-z*t+A*e+B*g-C*q+D*M-E*d-F*I+G*K+H*h-L*J,a*k+y*f-z*e-A*t+B*q+C*g+D*d+E*M-F*K-G*I+H*J+L*h)};g.eucangle=function(a,h){var c=g.cross(a,
+g.linfty),b=g.cross(h,g.linfty),d=g.det3(g.ez,c,g.ii),c=g.det3(g.ez,c,g.jj),e=g.det3(g.ez,b,g.ii),b=g.det3(g.ez,b,g.jj),d=l.div(l.mult(d,b),l.mult(e,c)),d=l.log(d);return d=l.mult(d,l.complex(0,.5))};g.zerovector=function(a){a=Math.floor(a.value.real);for(var h=Array(a),c=0;c<a;c++)h[c]=0;return g.realVector(h)};g.zeromatrix=function(a,h){for(var c=Math.floor(a.value.real),b=Array(c),d=0;d<c;d++)b[d]=g.zerovector(h);return g.turnIntoCSList(b)};g.vandermonde=function(a){for(var h=a.value.length,c=
+g.zeromatrix(h,h),b=0;b<h;b++)for(var d=0;d<h;d++)c.value[b].value[d]=l.pow(a.value[b],l.real(d-1));return c};g.transpose=function(a){for(var h=[],c=a.value[0].value.length,b=a.value.length,d=0;d<c;d++){for(var e=[],f=0;f<b;f++)e[f]=a.value[f].value[d];h[d]=g.turnIntoCSList(e)}return g.turnIntoCSList(h)};g.column=function(a,h){for(var c=[],b=a.value.length,d=Math.floor(h.value.real-1),e=0;e<b;e++)c[e]=a.value[e].value[d];return g.turnIntoCSList(c)};g.row=function(a,h){for(var c=[],b=a.value[0].value.length,
+d=Math.floor(h.value.real-1),e=0;e<b;e++)c[e]=a.value[d].value[e];return g.turnIntoCSList(c)};g.adjoint2=function(a){var h=a.value[0].value[0],c=a.value[1].value[0],b=Array(2);b[0]=g.turnIntoCSList([a.value[1].value[1],l.neg(a.value[0].value[1])]);b[1]=g.turnIntoCSList([l.neg(c),h]);return b=g.turnIntoCSList(b)};g.adjoint3=function(a){var h,c,b,d,g,e,f,k,l,m,n,p,q,t,u,v,w;h=a.value[0].value;c=h[0].value;b=c.real;d=c.imag;c=h[1].value;g=c.real;e=c.imag;c=h[2].value;f=c.real;k=c.imag;h=a.value[1].value;
+c=h[0].value;l=c.real;m=c.imag;c=h[1].value;n=c.real;p=c.imag;c=h[2].value;q=c.real;t=c.imag;h=a.value[2].value;c=h[0].value;a=c.real;u=c.imag;c=h[1].value;v=c.real;w=c.imag;c=h[2].value;h=c.real;c=c.imag;return{ctype:"list",value:[{ctype:"list",value:[{ctype:"number",value:{real:n*h-q*v-p*c+t*w,imag:n*c-q*w-v*t+h*p}},{ctype:"number",value:{real:-g*h+f*v+e*c-k*w,imag:-g*c+f*w+v*k-h*e}},{ctype:"number",value:{real:g*q-f*n-e*t+k*p,imag:g*t-f*p-n*k+q*e}}]},{ctype:"list",value:[{ctype:"number",value:{real:-l*
+h+q*a+m*c-t*u,imag:-l*c+q*u+a*t-h*m}},{ctype:"number",value:{real:b*h-f*a-d*c+k*u,imag:b*c-f*u-a*k+h*d}},{ctype:"number",value:{real:-b*q+f*l+d*t-k*m,imag:-b*t+f*m+l*k-q*d}}]},{ctype:"list",value:[{ctype:"number",value:{real:l*v-n*a-m*w+p*u,imag:l*w-n*u-a*p+v*m}},{ctype:"number",value:{real:-b*v+g*a+d*w-e*u,imag:-b*w+g*u+a*e-v*d}},{ctype:"number",value:{real:b*n-g*l-d*p+e*m,imag:b*p-g*m-l*e+n*d}}]}]}};g.inverse=function(a){var h=a.value.length;if(h!==a.value[0].value.length)return console.log("Inverse works only for square matrices"),
+k;if(2===h)return g.scaldiv(g.det(a),g.adjoint2(a));if(3===h)return g.scaldiv(g.det(a),g.adjoint3(a));h=g.LUdecomp(a);a=a.value.length;var c=l.real(0),b=l.real(1),d=g.zerovector(l.real(a));d.value[0]=b;for(var e=Array(a),f=0;f<a;f++)e[f]=g._helper.LUsolve(h,d),d.value[f]=c,d.value[f+1]=b;e=g.turnIntoCSList(e);return e=g.transpose(e)};g.linearsolve=function(a,h){return 2===a.value.length?g.linearsolveCramer2(a,h):3===a.value.length?g.linearsolveCramer3(a,h):g.LUsolve(a,h)};g.getDiag=function(a){if(a.value.length!==
+a.value[0].value.length)return k;for(var h=Array(a.value.length),c=0;c<a.value.length;c++)h[c]=a.value[c].value[c];return g.turnIntoCSList(h)};g.getSubDiag=function(a){if(a.value.length!==a.value[0].value.length)return k;for(var h=Array(a.value.length-1),c=0;c<a.value.length-1;c++)h[c]=a.value[c+1].value[c];return g.turnIntoCSList(h)};g.eig2=function(a){var h=l.add(a.value[0].value[0],a.value[1].value[1]);a=g.det2(a.value[0],a.value[1]);var c=l.mult(h,h),b=h=l.mult(h,l.real(.5));a=l.sqrt(l.sub(l.div(c,
+l.real(4)),a));h=l.add(h,a);b=l.sub(b,a);return g.turnIntoCSList([h,b])};g.eig=function(a,h){var c=h||!0,b=a,d=l.real(b.value.length),e=d.value.real;l.real(0);var b=g._helper.QRIteration(b)[0],b=g.getDiag(b),b=g.sort1(b),d=g.idMatrix(d,d),f=Array(e),f=g.turnIntoCSList(f);if(c){for(var k,m,n,p=0,q=!1,c=0;c<e;c++)q?m=k.value[p]:(k=b.value[c],k=g.sub(a,g.scalmult(k,d)),k=g.nullSpace(k),m=k.value[0],void 0!==m&&(n=m)),void 0===m&&(m=n),1E-8>g.abs(m).value.real&&0===p&&(m=g._helper.inverseIteration(a,
+b.value[c])),f.value[c]=g._helper.isAlmostZeroVec(m)?m:g.scaldiv(g.abs(m),m),c<e-1&&((q=1E-6>l.abs(l.sub(b.value[c],b.value[c+1])).value.real)?p++:p=0);f=g.transpose(f)}return g.turnIntoCSList([b,f])};g._helper.isNormalMatrix=function(a){return 1E-10>g.abs(g.sub(a,g.transjugate(a))).value.real};g._helper.QRIteration=function(a,h){var c,b=a;c=l.real(b.value.length);var d=c.value.real,e=c.value.real;l.real(0);var f;g.idMatrix(c,c);var k=g.zeromatrix(c,c),m=g.idMatrix(c,c),n=h?h:2500,p,q,t,u=0,v=Array(e);
+for(c=0;c<n;c++){f=g._helper.getBlock(b,[e-2,e-1],[e-2,e-1]);p=g.eig2(f);f=p.value[0];p=p.value[1];g.abs(f);g.abs(p);q=b.value[e-1].value[e-1];t=l.abs(l.sub(q,f)).value.real;q=l.abs(l.sub(q,p)).value.real;p=t<q?f:p;f=g.idMatrix(l.real(e),l.real(e));p=g.scalmult(p,f);f=g.QRdecomp(g.sub(b,p));b=w.mult(f.R,f.Q);b=g.add(b,p);f.Q=g._helper.buildBlockMatrix(f.Q,g.idMatrix(l.real(u),l.real(u)));m=w.mult(m,f.Q);if(1E-48>l.abs2(b.value[b.value.length-1].value[b.value[0].value.length-2]).value.real&&1<e){v[d-
+u-1]=b.value[e-1].value[e-1];for(c=0;c<e;c++)k.value[e-1].value[c]=b.value[e-1].value[c],k.value[c].value[e-1]=b.value[c].value[e-1];b=g._helper.getBlock(b,[0,e-2],[0,e-2]);u++;e--}if(1===e){k.value[0].value[0]=b.value[0].value[0];break}if(g._helper.isUpperTriangular(b)){for(c=0;c<e;c++)k.value[c].value[c]=b.value[c].value[c];break}}return[k,m]};g.rank=function(a,h){return g.RRQRdecomp(a,h).rank};g._helper.isAlmostZeroVec=function(a){for(var h=a.value.length,c=0;c<h;c++)if(!l._helper.isAlmostZero(a.value[c]))return!1;
+return!0};g._helper.isLowerTriangular=function(a){for(var h=a.value.length,c=a.value[0].value.length,b=0;b<h;b++)for(var d=b+1;d<c;d++)if(!l._helper.isAlmostZero(a.value[b].value[d]))return!1;return!0};g._helper.isUpperTriangular=function(a){return g._helper.isLowerTriangular(g.transpose(a))};g._helper.isAlmostId=function(a){var h=a.value.length,c=l.real(h);if(h!==a.value[0].value.length)return!1;a=g.sub(a,g.idMatrix(c),c);for(c=0;c<h;c++)for(var b=0;b<h;b++)if(1E-16<l.abs(a.value[c].value[b]).value.real)return!1;
+return!0};g.nullSpace=function(a,h){var c=a.value.length,b=g.RRQRdecomp(g.transjugate(a),h),d=g.transpose(b.Q),b=c-b.rank.value.real,e=Array(b);d.value.reverse();for(var f,k=0;k<b;k++)f=d.value[k],e[k]=g.scaldiv(g.abs(f),f);e=g.turnIntoCSList(e);return 0<e.value.length?e:g.turnIntoCSList([g.zerovector(l.real(c))])};g._helper.isAlmostDiagonal=function(a){var h=a.value.length;l.real(h);l.real(0);if(h!==a.value[0].value.length)return!1;for(var c=0;c<h;c++)for(var b=0;b<h;b++)if(c!==b&&1E-16<l.abs(a.value[c].value[b]).value.real)return!1;
+return!0};g._helper.inverseIteration=function(a,h){console.log("warning: code untested");for(var c=a.value.length,b=Array(c),d=0;d<c;d++)b[d]=2*Math.random()-.5;for(var b=g.realVector(b),c=g.idMatrix(l.real(c),l.real(c)),d=l.add(h,l.real(.1*Math.random()-.5)),e=0;100>e;e++)b=g.scaldiv(g.abs(b),b),b=g.LUsolve(g.sub(a,g.scalmult(d,c)),JSON.parse(JSON.stringify(b)));return g.scaldiv(g.abs(b),b)};g._helper.toHessenberg=function(a){var h=JSON.parse(JSON.stringify(a)),c=h.value.length,b=l.real(c-1),d=l.real(c);
+l.real(1);if(g._helper.isUpperTriangular(h))return[g.idMatrix(b,b),a];var e;a=g.idMatrix(d,d);for(var f,d=1;d<c-1;d++)e=g.column(h,l.real(d)),e.value=e.value.splice(d),f=g.abs2(e).value.real,1E-16<f&&(e=g._helper.getHouseHolder(e),a=w.mult(a,e),h=w.mult(w.mult(e,h),e)),b.value.real--;return[a,h]};g._helper.swapEl=function(a,h,c){var b;"[object Array]"===Object.prototype.toString.call(a)?(b=a[h],a[h]=a[c],a[c]=b):"list"===a.ctype&&(b=a.value[h],a.value[h]=a.value[c],a.value[c]=b)};g.RRQRdecomp=function(a,
+h){var c=Math.sqrt(l.eps);void 0!==h&&(c=.1*h.value.real);var c=c*c,b,d=a.value.length,e=l.real(d),f=l.real(1),k=g._helper.unitvector(l.real(a.value.length),f),m=g.idMatrix(e,e),n=JSON.parse(JSON.stringify(a)),p=g.transpose(a),q=Array(d);for(b=0;b<d;b++)q[b]=g.abs2(p.value[b]);q=g.turnIntoCSList(q);p=Array(d);for(b=0;b<d;b++)p[b]=b;b=g.maxIndex(q,l.abs);for(var t=q.value[b],u=0,v=0;1E-16<l.abs2(t).value.real;v++){u++;g._helper.swapColumn(n,v,b);g._helper.swapEl(q,v,b);g._helper.swapEl(p,v,b);b=g._helper.getBlock(n,
+[v],[v]);b=g.column(b,f);t=g.abs2(b).value.real;1E-8<t&&(b=g._helper.getHouseHolder(b),b=g._helper.buildBlockMatrix(g.idMatrix(l.real(v),l.real(v)),b),m=w.mult(m,g.transjugate(b)),n=w.mult(b,n));for(b=v+1;b<d;b++)q.value[b]=l.sub(q.value[b],l.mult(n.value[v].value[b],l.conjugate(n.value[v].value[b])));b=g.maxIndex(q,l.abs2,v+1);t=q.value[b];if(v+2===d){l.abs(t).value.real>c&&u++;break}e=l.sub(e,f);k.value=k.value.splice(0,k.value.length-1)}return{Q:m,R:n,P:g.turnIntoCSList(p),rank:l.real(u)}};g._helper.getHouseHolder=
+function(a){var h=l.real(a.value.length);if(1E-16>g.abs2(a))return g.idMatrix(h,h);var c,b=l.real(1),d=g._helper.unitvector(l.real(a.value.length),b);c=g._helper.QRgetAlpha(a,0);c=g.sub(a,g.scalmult(c,d));c=g.scaldiv(g.abs(c),c);a=l.div(g.sesquilinearproduct(a,c),g.sesquilinearproduct(c,a));h=g.idMatrix(h,h);return h=g.sub(h,g.scalmult(l.add(b,a),g._helper.transposeMult(c,g.conjugate(c))))};g._helper.reOrderbyPivots=function(a,h){for(var c=a.value.length.length,b=g.transpose(a),c=Array(c),d=0;d<h.length;d++)c[h[d]]=
+b.value[d];c=g.turnIntoCSList(c);return g.transpose(c)};g.QRdecomp=function(a){var h,c=a.value.length,b=l.real(c);if(g._helper.isUpperTriangular(a))return{Q:g.idMatrix(b,b),R:a};var d=l.real(1),e=g._helper.unitvector(l.real(a.value.length),d),f,k=g.idMatrix(b,b);a=JSON.parse(JSON.stringify(a));for(var m=0;;m++){h=g._helper.getBlock(a,[m],[m]);h=g.column(h,d);f=g.abs2(h).value.real;1E-8<f&&(h=g._helper.getHouseHolder(h),h=g._helper.buildBlockMatrix(g.idMatrix(l.real(m),l.real(m)),h),k=w.mult(k,g.transjugate(h)),
+a=w.mult(h,a));if(m+2===c)break;b=l.sub(b,d);e.value=e.value.splice(0,e.value.length-1)}return{Q:k,R:a}};g._helper.swapColumn=function(a,h,c){for(var b,d=0;d<a.value.length;d++)b=a.value[d].value[h],a.value[d].value[h]=a.value[d].value[c],a.value[d].value[c]=b};g._helper.buildBlockMatrix=function(a,h){if(0===a.value.length)return h;if(0===h.value.length)return a;for(var c=a.value.length,b=a.value[0].value.length,d=b+h.value[0].value.length,d=g.zeromatrix(l.real(c+h.value.length),l.real(d)),e=0;e<
+a.value.length;e++)for(var f=0;f<a.value[0].value.length;f++)d.value[e].value[f]=a.value[e].value[f];for(e=0;e<h.value.length;e++)for(f=0;f<h.value[0].value.length;f++)d.value[c+e].value[b+f]=h.value[e].value[f];return d};g._helper.getBlock=function(a,h,c){a=JSON.parse(JSON.stringify(a));var b=h[0],d=c[0];h=void 0===h[1]?a.value.length:h[1];c=void 0===c[1]?a.value[0].value.length:c[1];h++;c++;a.value=a.value.slice(b,h);for(b=0;b<a.value.length;b++)a.value[b].value=a.value[b].value.slice(d,c);return a};
+g._helper.setBlock=function(a,h,c){a=JSON.parse(JSON.stringify(a));var b=c[0];c=c[1];for(var d=h.value.length,g=h.value[0].value.length,e=0;e<d;e++)for(var f=0;f<g;f++)a.value[b+e].value[c+f]=h.value[e].value[f];return a};g._helper.transposeMult=function(a,h){if(a.value.length!==h.value.length)return k;for(var c=a.value.length,b=Array(c),d=0;d<c;d++)b[d]=g.scalmult(a.value[d],h);return g.turnIntoCSList(b)};g._helper.QRgetAlpha=function(a,h){return 0>a.value[h].value.real?g.abs(a):l.neg(g.abs(a))};
+g.LUdecomp=function(a){a=JSON.parse(JSON.stringify(a));var h,c,b,d,g,e=0,f,k=a.value.length,m=k-1,n=Array(k);for(b=0;b<k;++b){g=b;d=a.value[b];f=l.abs(d.value[b]).value.real;for(c=b+1;c<k;++c)h=l.abs(a.value[c].value[b]),f<h.value.real&&(f=h.value.real,g=c);f<l.eps&&console.log("Warning: singular matrix!");n[b]=g;g!==b&&(a.value[b]=a.value[g],a.value[g]=d,d=a.value[b],e++);c=d.value[b];for(h=b+1;h<k;++h)a.value[h].value[b]=l.div(a.value[h].value[b],c);for(h=b+1;h<k;++h){g=a.value[h];for(c=b+1;c<m;++c)g.value[c]=
+l.sub(g.value[c],l.mult(g.value[b],d.value[c])),++c,g.value[c]=l.sub(g.value[c],l.mult(g.value[b],d.value[c]));c===m&&(g.value[c]=l.sub(g.value[c],l.mult(g.value[b],d.value[c])))}}return{LU:a,P:n,TransPos:e}};g.LUsolve=function(a,h){var c=g.LUdecomp(a);return g._helper.LUsolve(c,h)};g._helper.LUsolve=function(a,h){var c=JSON.parse(JSON.stringify(h)),b,d=a.LU,g=d.value.length,e=JSON.parse(JSON.stringify(c)),f=a.P,k;for(b=g-1;-1!==b;--b)e.value[b]=c.value[b];for(b=0;b<g;++b)for(c=f[b],f[b]!==b&&(k=
+e.value[b],e.value[b]=e.value[c],e.value[c]=k),k=d.value[b],c=0;c<b;++c)e.value[b]=l.sub(e.value[b],l.mult(e.value[c],k.value[c]));for(b=g-1;0<=b;--b){k=d.value[b];for(c=b+1;c<g;++c)e.value[b]=l.sub(e.value[b],l.mult(e.value[c],k.value[c]));e.value[b]=l.div(e.value[b],k.value[b])}return e};g.linearsolveCramer2=function(a,h){var c=g.column(a,l.real(1)),b=g.column(a,l.real(2)),d=g.det2(c,b);l._helper.isZero(d)&&console.log("A is not regular!");b=g.det2(h,b);b=l.div(b,d);c=g.det2(c,h);c=l.div(c,d);return g.turnIntoCSList([b,
+c])};g.linearsolveCramer3=function(a,h){var c=g.column(a,l.real(1)),b=g.column(a,l.real(2)),d=g.column(a,l.real(3)),e=g.det3(c,b,d);l._helper.isZero(e)&&console.log("A is not regular!");var f=g.det3(h,b,d),d=g.det3(c,h,d),c=g.det3(c,b,h),f=g.turnIntoCSList([f,d,c]);return f=g.scaldiv(e,f)};g.linearsolveCGNR=function(a,h){var c=g.transpose(a),b=w.mult(c,a),c=w.mult(c,h);return g.linearsolveCG(b,c)};g.linearsolveCG=function(a,h){var c,b,d,e,f,k;e=h;b=c=g.sub(h,w.mult(a,h));for(var m=Math.ceil(1.2*a.value.length),
+n=0;n<m;){n++;f=w.mult(a,b);k=d=g.scalproduct(c,c);d=l.div(d,g.scalproduct(b,f));e=g.add(e,w.mult(d,b));c=g.sub(c,w.mult(d,f));if(g.abs(c).value.real<l.eps)break;d=g.scalproduct(c,c);d=l.div(d,k);b=g.add(c,w.mult(d,b))}n>=m&&console.log("CG did not converge");return e};g.det=function(a){if(1===a.value.length)return a.value[0].value[0];if(2===a.value.length)return g.det2(a.value[0],a.value[1]);if(3===a.value.length)return g.det3(a.value[0],a.value[1],a.value[2]);if(4===a.value.length)return g.det4m(a);
+var h=a.value.length,c=l.real(1),b,d,e=JSON.parse(JSON.stringify(a)),f,k,m,n;for(a=0;a<h-1;a++){d=a;for(b=a+1;b<h;b++)l.abs(e.value[b].value[a]).value.real>l.abs(e.value[d].value[a]).value.real&&(d=b);d!==a&&(b=e.value[d],e.value[d]=e.value[a],e.value[a]=b,c=l.neg(c));f=e.value[a];for(b=a+1;b<h;b++){k=e.value[b];m=l.div(k.value[a],f.value[a]);for(d=a+1;d<h-1;d+=2)n=d+1,k.value[d]=l.sub(k.value[d],l.mult(f.value[d],m)),k.value[n]=l.sub(k.value[n],l.mult(f.value[n],m));d!==h&&(k.value[d]=l.sub(k.value[d],
+l.mult(f.value[d],m)))}if(l._helper.isZero(f.value[a]))return l.real(0);c=l.mult(c,f.value[a])}return l.mult(c,e.value[a].value[a])};g.LUdet=function(a){a=g.LUdecomp(a);for(var h=a.LU,c=h.value.length,b=h.value[0].value[0],d=1;d<c;d++)b=l.mult(b,h.value[d].value[d]);1===a.TransPos%2&&(b=l.neg(b));return b};g.getField=function(a,h){var c;if("homog"===h){if(g._helper.isNumberVecN(a,3))return a;if(g._helper.isNumberVecN(a,2))return g.turnIntoCSList([a.value[0],a.value[1],l.real(1)])}if("xy"===h){if(g._helper.isNumberVecN(a,
+2))return a;if(g._helper.isNumberVecN(a,3))return g.turnIntoCSList([l.div(a.value[0],a.value[2]),l.div(a.value[1],a.value[2])])}if("x"===h&&g.isNumberVector(a)){c=a.value.length;if(0<c&&3!==c)return a.value[0];if(3===c)return"Point"===a.usage?l.div(a.value[0],a.value[2]):a.value[0]}if("y"===h&&g.isNumberVector(a)){c=a.value.length;if(1<c&&3!==c)return a.value[1];if(3===c)return"Point"===a.usage?l.div(a.value[1],a.value[2]):a.value[1]}return"z"===h&&g.isNumberVector(a)&&(c=a.value.length,2<c)?a.value[2]:
+k};g.nil=g.turnIntoCSList([]);g.ofGeos=function(a){return g.turnIntoCSList(a.map(function(a){return{ctype:"geo",value:a}}))};var Ka={key:function(a){if("string"===a.ctype)return"s"+a.value.length+":"+a.value+";";if("number"===a.ctype)return"n"+a.value.real+","+a.value.imag+";";if("list"===a.ctype)return"l"+a.value.length+":"+a.value.map(Ka.key).join(",")+";";if("boolean"===a.ctype)return"b"+a.value+";";if("dict"===a.ctype)return a=Object.keys(a.value).sort(),"d"+a.length+":"+a.join(",")+";";"undefined"!==
+a.ctype&&ia.err("Bad dictionary key: "+ba(a));return"undef"},create:function(){return{ctype:"dict",value:{}}},clone:function(a){var h=Ka.create(),c;for(c in a.value)a.value.hasOwnProperty(c)&&(h.value[c]=a.value[c]);return h},put:function(a,h,c){a.value[Ka.key(h)]={key:h,value:c}},get:function(a,h,c){return(a=a.value[Ka.key(h)])?a.value:c},niceprint:function(a){return"{"+Object.keys(a.value).sort().map(function(h){h=a.value[h];return ba(h.key)+":"+ba(h.value)}).join(", ")+"}"}},w={_helper:{},order:{undefined:0,
+"boolean":1,number:2,term:3,atomic:4,variable:5,geo:6,string:7,list:8},string:function(a){return{ctype:"string",value:a}},bool:function(a){return{ctype:"boolean",value:a}},not:function(a){return w.bool(!a.value)},isLessThan:function(a,h){return-1===w.compare(a,h)},isEqual:function(a,h){return 0===w.compare(a,h)},compareResults:function(a,h){return w.compare(a.result,h.result)},compare:function(a,h){if(a.ctype!==h.ctype)return w.order[a.ctype]-w.order[h.ctype];if("number"===a.ctype)return l._helper.compare(a,
+h);if("list"===a.ctype)return g._helper.compare(a,h);if("geo"===a.ctype)return a.value.name===h.value.name?0:a.value.name<h.value.name?-1:1;if("string"===a.ctype)return a.value===h.value?0:a.value<h.value?-1:1;if("boolean"===a.ctype)return a.value===h.value?0:!1===a.value?-1:1},add:function(a,h){return"void"===a.ctype&&"number"===h.ctype||"void"===a.ctype&&"list"===h.ctype?h:"number"===a.ctype&&"number"===h.ctype?l.add(a,h):"string"===a.ctype||"string"===h.ctype?{ctype:"string",value:ba(a)+ba(h)}:
+"list"===a.ctype&&"list"===h.ctype?g.add(a,h):k},sub:function(a,h){return"void"===a.ctype&&"number"===h.ctype?l.neg(h):"void"===a.ctype&&"list"===h.ctype?g.neg(h):"number"===a.ctype&&"number"===h.ctype?l.sub(a,h):"list"===a.ctype&&"list"===h.ctype?g.sub(a,h):k},mult:function(a,h){return"number"===a.ctype&&"number"===h.ctype?l.mult(a,h):"number"===a.ctype&&"list"===h.ctype?g.scalmult(a,h):"list"===a.ctype&&"number"===h.ctype?g.scalmult(h,a):"list"===a.ctype&&"list"===h.ctype?g.mult(a,h):k},div:function(a,
+h){return"number"===a.ctype&&"number"===h.ctype?l.div(a,h):"list"===a.ctype&&"number"===h.ctype?g.scaldiv(h,a):k},max:function(a,h){return"number"===a.ctype&&"number"===h.ctype?l.max(a,h):"list"===a.ctype&&"list"===h.ctype?g.max(a,h):k},min:function(a,h){return"number"===a.ctype&&"number"===h.ctype?l.min(a,h):"list"===a.ctype&&"list"===h.ctype?g.min(a,h):k},wrap:function(a){if("number"===typeof a)return l.real(a);if("object"===typeof a&&void 0!==a.length){for(var h=[],c=0;c<a.length;c++)h[c]=w.wrap(a[c]);
+return g.turnIntoCSList(h)}return"string"===typeof a?{ctype:"string",value:a}:"boolean"===typeof a?{ctype:"boolean",value:a}:k},unwrap:function(a){if("object"!==typeof a||null===a)return a;if(Array.isArray(a))return a.map(w.unwrap);switch(a.ctype){case "string":case "boolean":return a.value;case "number":return 0===a.value.imag?a.value.real:{r:a.value.real,i:a.value.imag};case "list":return a.value.map(w.unwrap);default:return null}},withUsage:function(a,h){return{ctype:a.ctype,value:a.value,usage:h}},
+wrapJSON:function(a){switch(typeof a){case "number":return l.real(a);case "string":return w.string(a);case "boolean":return w.bool(a);case "object":if(null===a)return k;if(Array.isArray(a))return g.turnIntoCSList(a.map(w.wrapJSON));var h=Ka.create(),c;for(c in a)Ka.put(h,w.string(c),w.wrapJSON(a[c]));return h;default:return console.log("Failed to convert "+typeof a+" to CindyJS data type"),k}},identity:function(a){return a}},Za={},R={};R[":"]=C(":");R["\u00b0"]=function(a,h){var c=B(a[0]);return"number"===
+c.ctype&&"void"===a[1].ctype?w.withUsage(l.realmult(Math.PI/180,c),"Angle"):k};R._=oc;R["^"]=Mc;R["\u221a"]=function(a,h){return"void"===a[0].ctype?t.sqrt$1([a[1]],h):k};R["*"]=Kc;R["\u00d7"]=Sc;R["/"]=Lc;R["+"]=Jc;R["-"]=$b;R["!"]=function(a,h){var c=B(a[1]);return"void"===a[0].ctype&&"boolean"===c.ctype?{ctype:"boolean",value:!c.value}:k};R["=="]=pb;R["~="]=Yb;R["~<"]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?
+{ctype:"boolean",value:c.value.real-b.value.real<=-l.eps}:k};R["~>"]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real>=l.eps}:k};R["=:="]=C("=:=");R[">="]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real>=b.value.real}:"string"===c.ctype&&"string"===
+b.ctype?{ctype:"boolean",value:c.value>=b.value}:k};R["<="]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real<=b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value<=b.value}:k};R["~>="]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-
+b.value.real>-l.eps}:k};R["~<="]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real<l.eps}:k};R[">"]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real>b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value>b.value}:
+k};R["<"]=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype&&l._helper.isAlmostReal(c)&&l._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real<b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value<b.value}:k};R["<>"]=Gc;R["\u2208"]=function(a,h){var c=A(a[0]),b=A(a[1]);return"list"===b.ctype?g.contains(b,c):k};R["\u2209"]=function(a,h){var c=A(a[0]),b=A(a[1]);return"list"===b.ctype?w.not(g.contains(b,c)):k};R["&"]=Hc;R["%"]=Ic;
+R["!="]=Gc;R["~!="]=function(a,h){return w.not(Yb(a,h))};R[".."]=function(a,h){var c=A(a[0]),b=A(a[1]);return"number"===c.ctype&&"number"===b.ctype?g.sequence(c,b):k};R["++"]=Tc;R["--"]=Vc;R["~~"]=Uc;R[":>"]=Wc;R["<:"]=Xc;R["="]=bb;R[":="]=function(a,h,c){h="undefined"===a[1].ctype;if("undefined"===a[0].ctype||h)return k;if("function"===a[0].ctype){h=a[0].oper;var b=a[0].args,d=a[1],g=1;if(Za.hasOwnProperty(h)){g=Za[h];if(g.definer===c)return k;g=g.generation+1}Za[h]={oper:h,body:d,arglist:b,definer:c,
+generation:g}}"variable"===a[0].ctype&&J.setvar(a[0].name,a[1]);return k};R[":=_"]=function(a,h){if("void"!==a[1].ctype)return k;"function"===a[0].ctype&&delete Za[a[0].oper];return k};R["::="]=C("::=");R[";"]=function(a,h){var c="void"===a[0].ctype,b="void"===a[1].ctype;if(c&&b)return k;if(!c&&b)return A(a[0]);c||b||A(a[0]);return b?k:A(a[1])};var t={},D={evaluate:function(a,h,c){if(Za.hasOwnProperty(a)){a=Za[a];if(void 0===a)h=k;else{var b=[];for(c=0;c<a.arglist.length;c++)b[c]=A(h[c]);for(c=0;c<
+a.arglist.length;c++)J.newvar(a.arglist[c].name),J.setvar(a.arglist[c].name,b[c]);J.pushVstack("*");h=A(a.body);J.cleanVstack();for(c=0;c<a.arglist.length;c++)J.removevar(a.arglist[c].name)}return h}if(b=t[a])return b(h,c);var d=a.lastIndexOf("$");if(-1!==d&&(d=a.substr(0,d),b=t[d]))return b(h,c);ia.err("Called undefined function "+d+" (as "+a+")");return k},equals:function(a,h){return"number"===a.ctype&&"number"===h.ctype?{ctype:"boolean",value:a.value.real===h.value.real&&a.value.imag===h.value.imag}:
+"string"===a.ctype&&"string"===h.ctype||"boolean"===a.ctype&&"boolean"===h.ctype?{ctype:"boolean",value:a.value===h.value}:"list"===a.ctype&&"list"===h.ctype?g.equals(a,h):"geo"===a.ctype&&"geo"===h.ctype?{ctype:"boolean",value:a.value===h.value}:{ctype:"boolean",value:!1}}},J={};J.vars=function(){var a={pi:l.real(Math.PI),"\u03c0":l.real(Math.PI),i:l.complex(0,1),"true":w.bool(!0),"false":w.bool(!1),"#":k,nil:g.turnIntoCSList([]),newline:w.string("\n"),tab:w.string("\t")},h=[],c;for(c in a)h[c]=
+[a[c]];return h}();J.isVariable=function(a){return this.vars.hasOwnProperty(a)};J.create=function(a){if(this.vars.hasOwnProperty(a))return this.vars[a];var h=[null];return this.vars[a]=h};J.newvar=function(a){a=this.vars[a];a.push(k);return a};J.removevar=function(a){var h=this.vars[a];0===h.length&&console.error("Removing non-existing "+a);h.pop();0===h.length&&console.warn("Removing last "+a)};J.setvar=function(a,h){var c=this.vars[a];0===c.length&&console.error("Setting non-existing variable "+
+a);void 0===h&&(console.error("Setting variable "+a+" to undefined value"),h=k);if("undefined"===h.ctype)c[c.length-1]=h;else{var b=h;null===b&&(b=k);c[c.length-1]=b}};J.undefinedWarning={};J.getvar=function(a){var h=this.vars[a];0===h.length&&console.error("Getting non-existing variable "+a);h=h[h.length-1];if(null===h){if(u.csnames.hasOwnProperty(a))return{ctype:"geo",value:u.csnames[a]};console&&console.log&&void 0===this.undefinedWarning[a]&&(this.undefinedWarning[a]=!0,console.log("Warning: Accessing undefined variable: "+
+a));return k}return h};J.dump=function(a){var h=this.vars[a];console.log("*** Dump "+a);for(a=0;a<h.length;a++)console.log(a+":> "+ba(h[a]))};J.vstack=[];J.pushVstack=function(a){this.vstack.push(a)};J.popVstack=function(){this.vstack.pop()};J.cleanVstack=function(){for(var a=this.vstack;0<a.length&&"*"!==a[a.length-1];)this.removevar(a[a.length-1]),a.pop();0<a.length&&a.pop()};var ya={generalFields:{color:"color",colorhsb:"",size:"size",alpha:"alpha",fillcolor:"fillcolor",fillalpha:"fillalpha",isshowing:"isshowing",
+visible:"visible",name:"name",caption:"caption",trace:"",tracelength:"",selected:"",labeled:"labeled",labelled:"labeled"},getGeoField:function(a,h){return"undefined"!==typeof u.csnames[a]?ya.getField(u.csnames[a],h):k},setGeoField:function(a,h,c){return"undefined"!==typeof u.csnames[a]?ya.setField(u.csnames[a],h,c):k},getField:function(a,h){var c;if("P"===a.kind){if("xy"===h)return c=g.dehom(a.homog),w.withUsage(c,"Point");if("homog"===h)return w.withUsage(a.homog,"Point");if("x"===h)return l.div(a.homog.value[0],
+a.homog.value[2]);if("y"===h)return l.div(a.homog.value[1],a.homog.value[2])}if("L"===a.kind||"S"===a.kind){if("homog"===h)return w.withUsage(a.homog,"Line");if("angle"===h)return c=g.eucangle(g.ey,a.homog),w.withUsage(c,"Angle");if("slope"===h)return l.neg(l.div(a.homog.value[0],a.homog.value[1]))}if("Tr"===a.kind&&"matrix"===h)return a.matrix;if("C"===a.kind){if("radius"===h){var b=a.matrix;c=b.value[0].value[0];var d=b.value[0].value[2],e=b.value[1].value[2],b=b.value[2].value[2];l.mult(c,c);d=
+l.div(d,c);e=l.div(e,c);c=l.div(b,c);return c=l.sqrt(l.sub(l.add(l.mult(d,d),l.mult(e,e)),c))}if("size"===h)return a.size;if("matrix"===h)return a.matrix;if("center"===h)return c=m._helper.CenterOfConic(a.matrix),c=g.dehom(c),w.withUsage(c,"Point");if("dualMatrix"===h)return g.normalizeMax(g.adjoint3(a.matrix))}if("Text"===a.kind){if("pressed"===h)return a.checkbox?w.bool(a.checkbox.checked):w.bool(!1);if("xy"===h)return c=g.dehom(a.homog),w.withUsage(c,"Point");if("homog"===h)return w.withUsage(a.homog,
+"Point");if("x"===h)return l.div(a.homog.value[0],a.homog.value[2]);if("y"===h)return l.div(a.homog.value[1],a.homog.value[2])}if("trace"===h)return w.bool(!!a.drawtrace);if(ya.generalFields[h])return(c=a[ya.generalFields[h]])&&c.ctype?c:"object"!==typeof c?w.wrap(c):k;if(a.behavior){if("mass"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.mass);if("radius"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.radius);if("charge"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.charge);
+if("friction"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.friction);if("vx"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.vx);if("vy"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.vy);if("v"===h&&"Mass"===a.behavior.type)return g.realVector([a.behavior.vx,a.behavior.vy]);if("fx"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.fx);if("fy"===h&&"Mass"===a.behavior.type)return l.real(a.behavior.fy);if("f"===h&&"Mass"===a.behavior.type)return g.realVector([a.behavior.fx,
+a.behavior.fy])}c=m[a.type]["get_"+h];return"function"===typeof c?c(a):k},setField:function(a,h,c){"color"===h&&g._helper.isNumberVecN(c,3)&&(a.color=c);"size"===h&&"number"===c.ctype&&(a.size=c);"alpha"===h&&"number"===c.ctype&&(a.alpha=c);"fillcolor"===h&&g._helper.isNumberVecN(c,3)&&(a.fillcolor=c);"fillalpha"===h&&"number"===c.ctype&&(a.fillalpha=c);"visible"===h&&"boolean"===c.ctype&&(a.visible=c.value);"pinned"===h&&"boolean"===c.ctype&&(a.pinned=c.value);"labeled"!==h&&"labelled"!==h||"boolean"!==
+c.ctype||(a.labeled=c.value);"printlabel"===h&&(a.printname=ba(c));"trace"===h&&"boolean"===c.ctype&&(c.value&&!a.drawtrace?(a.drawtrace=!0,qd(a)):a.drawtrace=c.value);"P"===a.kind&&a.movable&&("xy"===h&&g._helper.isNumberVecN(c,2)&&Ia(a,g.turnIntoCSList([c.value[0],c.value[1],l.real(1)]),"homog"),"xy"===h&&g._helper.isNumberVecN(c,3)&&Ia(a,c,"homog"),"x"===h&&"number"===c.ctype&&Ia(a,g.turnIntoCSList([l.mult(c,a.homog.value[2]),a.homog.value[1],a.homog.value[2]]),"homog"),"y"===h&&"number"===c.ctype&&
+Ia(a,g.turnIntoCSList([a.homog.value[0],l.mult(c,a.homog.value[2]),a.homog.value[2]]),"homog"),"homog"===h&&g._helper.isNumberVecN(c,3)&&Ia(a,c,"homog"));"homog"===h&&"L"===a.kind&&a.movable&&g._helper.isNumberVecN(c,3)&&Ia(a,c,"homog");"Text"===a.kind&&("pressed"===h&&"boolean"===c.ctype&&a.checkbox&&(a.checkbox.checked=c.value),a.movable&&("xy"===h?g._helper.isNumberVecN(c,2)?a.homog=g.turnIntoCSList([c.value[0],c.value[1],l.real(1)]):g._helper.isNumberVecN(c,3)&&(a.homog=c):"homog"===h&&g._helper.isNumberVecN(c,
+3)?a.homog=c:"x"===h&&"number"===c.ctype?a.homog=g.turnIntoCSList([l.mult(c,a.homog.value[2]),a.homog.value[1],a.homog.value[2]]):"y"===h&&"number"===c.ctype&&(a.homog=g.turnIntoCSList([a.homog.value[0],l.mult(c,a.homog.value[2]),a.homog.value[2]]))));a.behavior&&("mass"===h&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.mass=c.value.real),"mass"===h&&"Sun"===a.behavior.type&&"number"===c.ctype&&(a.behavior.mass=c.value.real),"friction"===h&&"Mass"===a.behavior.type&&"number"===c.ctype&&
+(a.behavior.friction=c.value.real),"charge"===h&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.charge=c.value.real),"radius"===h&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.radius=c.value.real),"vx"===h&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.vx=c.value.real),"vy"===h&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.vy=c.value.real),"v"===h&&"Mass"===a.behavior.type&&g._helper.isNumberVecN(c,2)&&(a.behavior.vx=c.value[0].value.real,a.behavior.vy=
+c.value[1].value.real));h=m[a.type]["set_"+h];if("function"===typeof h)return h(a,c)}};t.version$0=function(a,h){var c=["CindyJS"].concat(ne);return g.turnIntoCSList(c.map(w.wrap))};t.clearconsole$0=function(a,h){ia.clear()};t.err$1=function(a,h){var c="",b;"variable"===a[0].ctype?(c=a[0].name,b=J.getvar(a[0].name)):b=a[0];b=c+" ===> "+ba(A(b));ia.err(b);return k};t.errc$1=function(a,h){var c;"variable"===a[0].ctype?(c=A(J.getvar(a[0].name)),console.log(a[0].name+" ===> "+ba(c))):(c=A(a[0]),console.log(" ===> "+
+ba(c)));return k};t.print$1=function(a,h){ia.out(ba(A(a[0])),!0);return k};t.println$1=function(a,h){ia.out(ba(A(a[0])));return k};t.assert$2=function(a,h){var c=A(a[0]);if("boolean"===c.ctype){if(!1===c.value)return t.println$1([a[1]],h)}else ia.err("Condition for assert is not boolean");return k};t.dump$1=function(a,h){console.log(JSON.stringify(a[0]));return k};t.repeat$2=function(a,h){return t.repeat$3([a[0],null,a[1]],h)};t.repeat$3=function(a,h){var c=B(a[0]),b="#";null!==a[1]&&"variable"===
+a[1].ctype&&(b=a[1].name);if("number"!==c.ctype)return k;var c=Math.round(c.value.real),d=1,g=1,e=c+1,f=!1,l=!1,m=!1,n;void 0!==h.start&&(n=A(h.start),"number"===n.ctype&&(f=!0,g=n.value.real));void 0!==h.step&&(n=A(h.step),"number"===n.ctype&&(m=!0,d=n.value.real));void 0!==h.stop&&(n=A(h.stop),"number"===n.ctype&&(l=!0,e=n.value.real));!f||l||m||(e=d*c+g);f||!l||m||(g=-d*(c-1)+e,e+=d);f||l||!m||(e=d*c+g);f&&l&&!m&&(d=(e-g)/(c-1),e+=d);f&&!l&&m&&(e=d*c+g);!f&&l&&m&&(g=-d*(c-1)+e,e+=d);f&&l&&m&&(e+=
+d);(g<=e&&0<d||g>=e&&0>d)&&f&&l&&m&&(c=Math.floor((e-g)/d));J.newvar(b);e=k;for(f=0;f<c;f++)J.setvar(b,{ctype:"number",value:{real:f*d+g,imag:0}}),e=A(a[2]);J.removevar(b);return e};t.while$2=function(a,h){for(var c=a[1],b=a[0],d=A(b),e=k;"list"!==d.ctype&&d.value;)e=A(c),d=A(b);return e};t.apply$2=function(a,h){return t.apply$3([a[0],null,a[1]],h)};t.apply$3=function(a,h){var c=B(a[0]);if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);
+for(var e=0;e<c.length;e++)J.setvar(b,c[e]),d[e]=A(a[2]);J.removevar(b);return{ctype:"list",value:d}};t.forall$2=function(a,h){return t.forall$3([a[0],null,a[1]],h)};t.forall$3=function(a,h){var c=B(a[0]);if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);c=c.value;J.newvar(b);for(var d,e=0;e<c.length;e++)J.setvar(b,c[e]),d=A(a[2]);J.removevar(b);return d};t.select$2=function(a,h){return t.select$3([a[0],null,a[1]],h)};t.select$3=function(a,h){var c=B(a[0]);
+if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);for(var e=0,g=0;g<c.length;g++){J.setvar(b,c[g]);var f=A(a[2]);"boolean"===f.ctype&&!0===f.value&&(d[e]=c[g],e++)}J.removevar(b);return{ctype:"list",value:d}};t.flatten$1=function(a,h){function c(a,h){return-1===h||"list"!==a.ctype?a:[].concat.apply([],a.value.map(function(a){return c(a,h-1)}))}var b=B(a[0]);if("list"!==b.ctype)return b;var d=h.levels;void 0===d?d=1:(d=A(d),d=
+"number"===d.ctype?d.value.real:"string"===d.ctype&&"all"===d.value?-2:1);return{ctype:"list",value:c(b,d)}};t.createvar$1=function(a,h){"variable"===a[0].ctype&&J.newvar(a[0].name);return k};t.local=function(a,h){for(var c=0;c<a.length;c++)"variable"===a[c].ctype&&J.newvar(a[c].name);return k};t.removevar$1=function(a,h){var c=A(a[0]);"variable"===a[0].ctype&&J.removevar(a[0].name);return c};t.release=function(a,h){if(0===a.length)return k;for(var c=A(a[a.length-1]),b=0;b<a.length;b++)"variable"===
+a[b].ctype&&J.removevar(a[b].name);return c};t.regional=function(a,h){for(var c=0;c<a.length;c++)if("variable"===a[c].ctype){var b=a[c].name;J.newvar(b);J.pushVstack(b)}return k};t.genList=function(a,h){return g.turnIntoCSList(a.map(A))};D.assigntake=function(a,h){var c=a.args[0],b=A(c),d=B(a.args[1]),e=k;if("list"===b.ctype||"string"===b.ctype)d=Math.floor(d.value.real),0>d&&(d=b.value.length+d+1),0<d&&d<=b.value.length&&("list"===b.ctype?(b=b.value.slice(),b[d-1]=A(h),e=g.turnIntoCSList(b)):(b=
+b.value,b=b.substring(0,d-1)+ba(A(h))+b.substring(d,b.length),e=w.string(b)));bb([c,e])};D.assigndot=function(a,h){var c=A(a.obj),b=a.key;"geo"===c.ctype&&b&&ya.setField(c.value,b,B(h));return k};D.assignlist=function(a,h){var c=a.length,b=h.length;b<c&&(c=b);for(b=0;b<c;b++)bb([a[b],h[b]],[])};t.if$2=function(a,h){return t.if$3(a,h)};t.if$3=function(a,h){var c=B(a[0]);if("boolean"===c.ctype){if(!0===c.value)return A(a[1]);if(3===a.length)return A(a[2])}else ia.err("Condition for if is not boolean");
+return k};t.and$2=Hc;t.or$2=Ic;t.xor$2=function(a,h){var c=B(a[0]),b=B(a[1]);return"boolean"===c.ctype&&"boolean"===b.ctype?{ctype:"boolean",value:c.value!==b.value}:k};t.not$1=function(a,h){var c=B(a[0]);return"boolean"===c.ctype?{ctype:"boolean",value:!c.value}:k};D.genericListMathGen=function(a,h,c){t[a+"$1"]=function(a,b){var d=A(a[0]);if("list"!==d.ctype)return k;d=d.value;if(0===d.length)return c;for(var r=d[0],e=1;e<d.length;e++)r=h(r,d[e]);return r};var b=a+"$3";t[a+"$2"]=function(a,c){return t[b]([a[0],
+null,a[1]])};t[b]=function(a,b){var d=B(a[0]);if("list"!==d.ctype)return k;d=d.value;if(0===d.length)return c;var r="#";null!==a[1]&&"variable"===a[1].ctype&&(r=a[1].name);J.newvar(r);J.setvar(r,d[0]);for(var e=A(a[2]),g=1;g<d.length;g++){J.setvar(r,d[g]);var f=A(a[2]),e=h(e,f)}J.removevar(r);return e}};D.genericListMathGen("product",w.mult,l.real(1));D.genericListMathGen("sum",w.add,l.real(0));D.genericListMathGen("max",w.max,k);D.genericListMathGen("min",w.min,k);t.max$2=function(a,h){var c=B(a[0]);
+if("list"===c.ctype)return t.max$3([c,null,a[1]]);var b=B(a[1]);return t.max$1([g.turnIntoCSList([c,b])])};t.min$2=function(a,h){var c=B(a[0]);if("list"===c.ctype)return t.min$3([c,null,a[1]]);var b=B(a[1]);return t.min$1([g.turnIntoCSList([c,b])])};t.add$2=Jc;t.sub$2=$b;t.mult$2=Kc;t.div$2=Lc;t.mod$2=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype?l.mod(c,b):k};t.pow$2=Mc;t.exp$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.exp(c):k};t.sin$1=function(a,
+h){var c=B(a[0]);return"number"===c.ctype?l.sin(c):k};t.sqrt$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.sqrt(c):k};D.laguerre=function(a,h,c){if("list"!==a.ctype)return k;var b=a.value.length-1,d;for(d=0;d<=b;d++)if("number"!==a.value[d].ctype)return k;if("number"!==h.ctype)return k;for(var e=[1,.3141,.5926,.5358,.9793,.2385,.6264,.3383,.2795,.0288],g,f,m,n=1;n<=c;n++){f=m=l.zero;g=a.value[b];for(d=b-1;0<=d;d--)m=l.add(f,l.mult(m,h)),f=l.add(g,l.mult(f,h)),g=l.add(a.value[d],l.mult(g,
+h));if(l._helper.isLessThan(l.abs(g),l.real(1E-14)))break;d=l.div(f,g);f=l.mult(d,d);g=l.sub(f,l.div(l.mult(l.real(2),m),g));m=l.sqrt(l.mult(l.real(b-1),l.sub(l.mult(l.real(b),g),f)));g=l.add(d,m);d=l.sub(d,m);l._helper.isLessThan(l.abs(g),l.abs(d))&&(g=d);d=l._helper.isLessThan(l.real(1E-14),l.abs(g))?l.div(l.real(b),g):l.mult(l.add(l.abs(h),l.one),l.complex(Math.cos(n),Math.sin(n)));if(l._helper.isLessThan(l.abs(d),l.real(1E-14)))break;0===n%20&&n<c-19&&(d=l.mult(d,l.real(e[Math.floor(n/20)])));
+h=l.sub(h,d)}return h};D.quadratic_roots=function(a){if("list"!==a.ctype)return k;var h=a.value[2],c=a.value[1];a=a.value[0];if(l._helper.isZero(a))return[l.zero,l.neg(l.div(c,h))];var b=l.sqrt(l.sub(l.mult(c,c),l.mult(l.real(4),l.mult(h,a))));0<=l.re(c)&&(b=l.neg(b));return[l.div(l.sub(b,c),l.mult(l.real(2),h)),l.div(l.mult(l.real(2),a),l.sub(b,c))]};D.roots=function(a){var h=[],c=a,b=a.value.length-1;if(0>=b)return g.turnIntoCSList([]);if(l._helper.isZero(a.value[b]))return h=D.roots(g.turnIntoCSList(a.value.slice(0,
+b))),g.append(h,l.infinity);if(1===b)h[0]=l.neg(l.div(a.value[0],a.value[1]));else if(2===b)h=D.quadratic_roots(a);else{for(var d=0;d<b-2;d++){h[d]=D.laguerre(a,l.zero,200);h[d]=D.laguerre(c,h[d],1);var e=[];e[b-d]=a.value[b-d];for(var f=b-d;0<f;f--)e[f-1]=l.add(a.value[f-1],l.mult(e[f],h[d]));e.shift();a=g.turnIntoCSList(e)}a=D.quadratic_roots(a);h[b-2]=a[0];h[b-1]=a[1]}return g.turnIntoCSList(h)};t.roots$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){for(var b=0;b<c.value.length;b++)if("number"!==
+c.value[b].ctype)return k;c=D.roots(c);return g.sort1(c)}return k};t.autodiff$3=function(a,h){var c="x",b;if("function"===a[0].ctype)b=Za[a[0].oper].body,c=a[0].args[0].name;else if("function"===typeof a[0].impl)b=a[0];else return console.log("could not parse function"),k;var d=B(a[1]),e=B(a[2]);if(1>e.value.real)return console.log("grade cant be < 1"),k;e=l.add(e,l.real(1));return P.autodiff(b,c,d,e)};t.cos$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.cos(c):k};t.tan$1=function(a,h){var c=
+B(a[0]);return"number"===c.ctype?l.tan(c):k};t.arccos$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.arccos(c):k};t.arcsin$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.arcsin(c):k};t.arctan$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.arctan(c):k};t.arctan2$2=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype?l.arctan2(c,b):k};t.arctan2$1=function(a,h){var c=B(a[0]);if("list"===c.ctype&&2===c.value.length){if(c=c.value,"number"===c[0].ctype&&
+"number"===c[1].ctype)return t.arctan2$2(c,h)}else if("number"===c.ctype)return l.arctan2(c);return k};t.log$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.log(c):k};D.recursiveGen=function(a){var h=l[a],c=g[a];t[a+"$1"]=function(a,b){var d=B(a[0]);return"number"===d.ctype?h(d):"list"===d.ctype?c(d):k}};D.recursiveGen("im");D.recursiveGen("re");D.recursiveGen("conjugate");D.recursiveGen("round");D.recursiveGen("ceil");D.recursiveGen("floor");D.recursiveGen("abs");t.abs_infix=t.abs$1;t.random$0=
+function(a,h){return l.real(l._helper.rand())};t.random$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?l.complex(c.value.real*l._helper.rand(),c.value.imag*l._helper.rand()):k};t.seedrandom$1=function(a,h){var c=B(a[0]);"number"===c.ctype&&l._helper.seedrandom(c.value.real);return k};t.randomnormal$0=function(a,h){return l.real(l._helper.randnormal())};t.randominteger$1=function(a,h){var c=B(a[0]);if("number"===c.ctype){var b=c.value.real|0,c=c.value.imag|0,b=b*l._helper.rand()|0,c=c*l._helper.rand()|
+0;return l.complex(b,c)}return k};t.randomint$1=t.randominteger$1;t.randombool$0=function(a,h){return.5<l._helper.rand()?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isreal$1=function(a,h){var c=A(a[0]);return"number"===c.ctype&&l._helper.isAlmostReal(c)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isinteger$1=function(a,h){var c=A(a[0]);return"number"===c.ctype&&l._helper.isAlmostReal(c)&&c.value.real===Math.floor(c.value.real)?{ctype:"boolean",value:!0}:{ctype:"boolean",
+value:!1}};t.iseven$1=function(a,h){var c=A(a[0]);return"number"===c.ctype&&l._helper.isAlmostReal(c)&&c.value.real/2===Math.floor(c.value.real/2)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isodd$1=function(a,h){var c=A(a[0]);return"number"===c.ctype&&l._helper.isAlmostReal(c)&&(c.value.real-1)/2===Math.floor((c.value.real-1)/2)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.iscomplex$1=function(a,h){return"number"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",
+value:!1}};t.isstring$1=function(a,h){return"string"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.islist$1=function(a,h){return"list"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.ismatrix$1=function(a,h){var c=A(a[0]);return-1!==g._helper.colNumb(c)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.iscircle$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&"C"===c.value.kind&&"Circle"===c.value.matrix.usage?{ctype:"boolean",value:!0}:
+{ctype:"boolean",value:!1}};t.isconic$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&"C"===c.value.kind?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isline$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&"L"===c.value.kind?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.ispoint$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&"P"===c.value.kind?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isgeometric$1=function(a,h){return"geo"===A(a[0]).ctype?{ctype:"boolean",
+value:!0}:{ctype:"boolean",value:!1}};t.isnumbermatrix$1=function(a,h){var c=A(a[0]);return g.isNumberMatrix(c)};t.isnumbervector$1=function(a,h){var c=A(a[0]);return g.isNumberVector(c)};t.issun$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Sun"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.ismass$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Mass"===c.value.behavior.type?{ctype:"boolean",value:!0}:
+{ctype:"boolean",value:!1}};t.isspring$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Spring"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isbouncer$1=function(a,h){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Bouncer"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isundefined$1=function(a,h){return"undefined"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};
+var Hd={ArcBy3:"Arc",CenterOfConic:"Center",ConicBy1p4l:"Conic1P4L",ConicBy4p1l:"Conic4P1L",ConicBy5lines:"Conic5L",ConicBy2Foci1P:"ConicFoci",ConicFromPrincipalDirections:"ConicPrincipleDirs",Free:"FreePoint",PolarOfLine:"PolarLine",PolarOfPoint:"PolarPoint",PointOnSegment:"PointOnLine",Button:"Text",ToggleButton:"Text",TrReflectionL:"TrReflection",TrReflectionP:"TrReflection",TrReflectionC:"TrReflection",TrTranslation:"TrProjection",TrSimilarity:"TrProjection",TrAffine:"TrProjection",TransformP:"Transform",
+TransformL:"Transform",TransformSegment:"Transform",TransformS:"Transform",TransformPolygon:"Transform",TransformArc:"Transform",TransformConic:"Transform",TransformC:"Transform",TrMoebiusP:"Transform",TrMoebiusL:"Transform",TrMoebiusSegment:"Transform",TrMoebiusS:"Transform",TrMoebiusPolygon:"Transform",TrMoebiusArc:"Transform",TrMoebiusCircle:"Transform",TrMoebiusC:"Transform",TrInverseMoebius:"TrInverse",Perp:"Orthogonal",Para:"Parallel",AngleBisector:"AngularBisector",IntersectLC:"IntersectionConicLine",
+IntersectCirCir:"IntersectionCircleCircle",OtherPointOnCircle:"PointOnCircle"};t.algorithm$1=function(a,h){var c=A(a[0]);if("geo"===c.ctype){var c=c.value,b=c.type,d=B(h.compatibility);"string"===d.ctype&&/^cinderella$/i.test(d.value)&&(/^Select/.test(b)&&(c=u.csnames[c.args[0]],b=c.type),Hd.hasOwnProperty(b)?b=Hd[b]:"CircleMr"===b&&(b=c.pinned?"CircleByFixedRadius":"CircleByRadius"));return w.string(b)}return k};t.inputs$1=function(a,h){var c=A(a[0]);if("geo"===c.ctype){var c=c.value,b=c.type,d=
+[];c.args&&(d=c.args.map(function(a){return{ctype:"geo",value:u.csnames[a]}}));if(/^Select/.test(b)||m[b].isMovable)switch(c.kind){case "P":case "L":d.push(c.homog);break;case "C":d.push(c.matrix)}return g.turnIntoCSList(d)}return k};t.moveto$2=function(a,h){var c=A(a[0]),b=B(a[1]);"geo"===c.ctype&&(c=c.value,g._helper.isNumberVecN(b,2)?ya.setField(c,"xy",b):g._helper.isNumberVecN(b,3)&&ya.setField(c,"homog",b));return k};t.continuefromhere$0=function(a,h){ub();return k};t.matrixrowcolumn$1=function(a,
+h){var c=A(a[0]);return-1!==g._helper.colNumb(c)?g.realVector([c.value.length,c.value[0].value.length]):k};t.rowmatrix$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.turnIntoCSList([c]):k};t.columnmatrix$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.turnIntoCSList(c.value.map(function(a){return g.turnIntoCSList([a])})):k};t.submatrix$3=function(a,h){var c=A(a[0]),b=A(a[1]),d=A(a[2]);if("list"===c.ctype&&"number"===b.ctype&&"number"===d.ctype){var e=Math.round(b.value.real),b=Math.round(d.value.real),
+c=c.value.slice();0<b&&b<=c.length&&c.splice(b-1,1);var f=!0,c=c.map(function(a){if("list"!==a.ctype)f=!1;else return a=a.value.slice(),0<e&&e<=a.length&&a.splice(e-1,1),g.turnIntoCSList(a)});return f?g.turnIntoCSList(c):k}return k};t.complex$1=function(a,h){var c,b,d;d=B(a[0]);if("list"===d.ctype&&g.isNumberVector(d)){if(2===d.value.length)return c=d.value[0],b=d.value[1],l.complex(c.value.real-b.value.imag,b.value.real+c.value.imag);if(3===d.value.length)return c=d.value[0],b=d.value[1],d=d.value[2],
+c=l.div(c,d),b=l.div(b,d),l.complex(c.value.real-b.value.imag,b.value.real+c.value.imag)}return k};t.gauss$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?g.realVector([c.value.real,c.value.imag]):k};t.cross$2=Sc;t.crossratio$4=function(a,h){var c=A(a[0]),b=A(a[1]),d=A(a[2]),e=A(a[3]),f=M(c),m=M(b),n=M(d),p=M(e);return f!==k&&m!==k&&n!==k&&p!==k?g.crossratio3(f,m,n,p,g.ii):"number"===c.ctype&&"number"===b.ctype&&"number"===d.ctype&&"number"===e.ctype?l.div(l.mult(l.sub(c,d),l.sub(b,e)),l.mult(l.sub(c,
+e),l.sub(b,d))):k};t.para$2=function(a,h){var c=B(a[0]),b=B(a[1]),d=M(c),e=M(b);if(c!==k&&b!==k){var b=b.usage,f=d,l=e;if("Line"===c.usage||"Point"===b)f=e,l=d;c=g.cross(g.cross(g.linfty,l),f);return w.withUsage(c,"Line")}return k};t.perp$2=function(a,h){var c=B(a[0]),b=B(a[1]),d=M(c),e=M(b);if(c!==k&&b!==k){var f=b.usage||e.usage,b=d,m=e;if("Line"===(c.usage||d.usage)||"Point"===f)b=e,m=d;c=g.turnIntoCSList([m.value[0],m.value[1],l.zero]);c=g.cross(c,b);return w.withUsage(c,"Line")}return k};t.perp$1=
+function(a,h){var c=B(a[0]);return g._helper.isNumberVecN(c,2)?g.turnIntoCSList([l.neg(c.value[1]),c.value[0]]):k};t.parallel$2=t.para$2;t.perpendicular$2=t.perp$2;t.perpendicular$1=t.perp$1;t.meet$2=function(a,h){var c=M(a[0]),b=M(a[1]);return c!==k&&b!==k?(c=g.cross(c,b),w.withUsage(c,"Point")):k};t.join$2=function(a,h){var c=M(a[0]),b=M(a[1]);return c!==k&&b!==k?(c=g.cross(c,b),w.withUsage(c,"Line")):k};t.dist$2=function(a,h){var c=B(a[0]),b=B(a[1]),c=$b([c,b],[]);return t.abs$1([c],[])};t.dist_infix=
+t.dist$2;t.point$1=function(a,h){var c=A(a[0]);return g._helper.isNumberVecN(c,3)||g._helper.isNumberVecN(c,2)?w.withUsage(c,"Point"):c};t.line$1=function(a,h){var c=A(a[0]);return g._helper.isNumberVecN(c,3)?w.withUsage(c,"Line"):c};t.det$3=function(a,h){var c=M(a[0]),b=M(a[1]),d=M(a[2]);if(c!==k&&b!==k&&d!==k)return g.det3(c,b,d)};t.det$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);if(-1!==b&&b===c.value.length)return g.det(c)}return k};t.eig$1=function(a,h){var c=
+B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);if(-1!==b&&b===c.value.length)return g.eig(c)}return k};t.eigenvalues$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);if(-1!==b&&b===c.value.length)return g.eig(c,!1).value[0]}return k};t.rank$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);if(-1!==b&&b===c.value.length)return g.rank(c,h.precision)}return k};t.kernel$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);
+if(-1!==b&&b===c.value.length)return c=g.nullSpace(c,h.precision),g.transpose(c)}return k};t.eigenvectors$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);if(-1!==b&&b===c.value.length)return g.eig(c).value[1]}return k};t.area$3=function(a,h){var c=M(a[0]),b=M(a[1]),d=M(a[2]);if(c!==k&&b!==k&&d!==k){var e=c.value[2],f=b.value[2],m=d.value[2];if(!l._helper.isAlmostZero(e)&&!l._helper.isAlmostZero(f)&&!l._helper.isAlmostZero(m))return c=g.scaldiv(e,c),b=g.scaldiv(f,b),d=
+g.scaldiv(m,d),c=g.det3(c,b,d),l.realmult(.5,c)}return k};t.inverse$1=function(a,h){var c=B(a[0]);if("list"===c.ctype){var b=g._helper.colNumb(c);if(-1!==b&&b===c.value.length)return g.inverse(c)}return k};t.linearsolve$2=function(a,h){var c=B(a[0]),b=B(a[1]);if("list"===c.ctype){var d=g._helper.colNumb(c);if(-1!==d&&d===c.value.length&&g._helper.isNumberVecN(b,d))return g.linearsolve(c,b)}return k};var Ud=[[[]],[[0]],[[0,1],[1,0]],[[0,1,2],[0,2,1],[1,0,2],[1,2,0],[2,0,1],[2,1,0]],[[0,1,2,3],[0,1,
+3,2],[0,2,1,3],[0,2,3,1],[0,3,1,2],[0,3,2,1],[1,0,2,3],[1,0,3,2],[1,2,0,3],[1,2,3,0],[1,3,0,2],[1,3,2,0],[2,0,1,3],[2,0,3,1],[2,1,0,3],[2,1,3,0],[2,3,0,1],[2,3,1,0],[3,0,1,2],[3,0,2,1],[3,1,0,2],[3,1,2,0],[3,2,0,1],[3,2,1,0]]];t.mincostmatching$1=function(a,h){var c=A(a[0]);if(g.isNumberMatrix(c).value){var b=c.value.length,d=g._helper.colNumb(c),e=b<d?d:b,f,m,n=Array(e);for(f=0;f<e;++f)for(n[f]=Array(e),m=0;m<e;++m)n[f][m]=f<b&&m<d?c.value[f].value[m].value.real:0;c=nc(n);e=Array(b);for(f=0;f<b;++f)m=
+c[f],e[f]=m<d?l.real(m+1):l.real(0);return g.turnIntoCSList(e)}return k};t.take$2=oc;t.length$1=function(a,h){var c=A(a[0]);return"list"===c.ctype||"string"===c.ctype?l.real(c.value.length):k};t.pairs$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.pairs(c):k};t.triples$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.triples(c):k};t.cycle$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.cycle(c):k};t.consecutive$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.consecutive(c):
+k};t.reverse$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.reverse(c):k};t.directproduct$2=function(a,h){var c=A(a[0]),b=A(a[1]);return"list"===c.ctype&&"list"===b.ctype?g.directproduct(c,b):k};t.concat$2=Tc;t.common$2=Uc;t.remove$2=Vc;t.append$2=Wc;t.prepend$2=Xc;t.contains$2=function(a,h){var c=A(a[0]),b=A(a[1]);return"list"===c.ctype?g.contains(c,b):k};t.sort$2=function(a,h){return t.sort$3([a[0],null,a[1]],h)};t.sort$3=function(a,h){var c=B(a[0]);if("list"!==c.ctype)return k;var b="#";
+null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);var e;for(e=0;e<c.length;e++)J.setvar(b,c[e]),d[e]={val:c[e],result:A(a[2])};J.removevar(b);d.sort(w.compareResults);b=[];for(e=0;e<c.length;e++)b[e]=d[e].val;return{ctype:"list",value:b}};t.sort$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.sort1(c):k};t.set$1=function(a,h){var c=A(a[0]);return"list"===c.ctype?g.set(c):k};t.combinations$2=function(a,h){function c(a,h){a===f?n.push(g.turnIntoCSList(m.slice())):
+h<e&&(m[a]=b.value[h],c(a+1,h+1),c(a,h+1))}var b=A(a[0]),d=A(a[1]),e,f,m,n;if("number"===d.ctype){f=d.value.real|0;if("number"===b.ctype){e=b.value.real|0;e-f<f&&(f=e-f);if(0>f)return l.real(0);if(0===f)return l.real(1);if(1===f)return b;for(var p=d=1,q=1;q<=f;++q)var t=e-f+q|0,v=q|0,u=pc(t,v)|0,t=t/u|0,v=v/u|0,u=pc(d,v)|0,d=d/u|0,v=v/u|0,u=pc(t,p)|0,t=t/u|0,p=p/u|0,d=d*t|0,p=p*v|0;return l.real(d/p)}if("list"===b.ctype){e=b.value.length;if(0>f||f>e)return g.turnIntoCSList([]);if(0===f)return g.turnIntoCSList([g.turnIntoCSList([])]);
+if(f===e)return g.turnIntoCSList([b]);n=[];m=Array(f);c(0,0);return g.turnIntoCSList(n)}}return k};t.zeromatrix$2=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype?g.zeromatrix(c,b):k};t.zerovector$1=function(a,h){var c=B(a[0]);return"number"===c.ctype?g.zerovector(c):k};t.transpose$1=function(a,h){var c=B(a[0]);return"list"===c.ctype&&-1!==g._helper.colNumb(c)?g.transpose(c):k};t.row$2=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===b.ctype&&"list"===c.ctype&&
+-1!==g._helper.colNumb(c)?g.row(c,b):k};t.column$2=function(a,h){var c=B(a[0]),b=B(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==g._helper.colNumb(c)?g.column(c,b):k};t.dict$0=function(a,h){var c=Ka.create(),b;for(b in h)h.hasOwnProperty(b)&&Ka.put(c,w.string(b),A(h[b]));return c};t.put$3=function(a,h){var c=A(a[0]),b=A(a[1]),d=A(a[2]);return"dict"===c.ctype?(c=Ka.clone(c),Ka.put(c,b,d),c):k};t.get$2=function(a,h){var c=A(a[0]),b=A(a[1]);return"dict"===c.ctype?Ka.get(c,b,k):k};t.red$1=function(a,
+h){var c=A(a[0]);return"number"===c.ctype?g.realVector([Math.min(1,Math.max(0,c.value.real)),0,0]):k};t.green$1=function(a,h){var c=A(a[0]);return"number"===c.ctype?g.realVector([0,Math.min(1,Math.max(0,c.value.real)),0]):k};t.blue$1=function(a,h){var c=A(a[0]);return"number"===c.ctype?g.realVector([0,0,Math.min(1,Math.max(0,c.value.real))]):k};t.gray$1=function(a,h){var c=A(a[0]);return"number"===c.ctype?(c=Math.min(1,Math.max(0,c.value.real)),g.realVector([c,c,c])):k};t.grey$1=t.gray$1;D.HSVtoRGB=
+function(a,h,c){var b,d,e,f,k,l;a&&void 0===h&&void 0===c&&(h=a.s,c=a.v,a=a.h);f=Math.floor(6*a);k=6*a-f;a=c*(1-h);l=c*(1-k*h);h=c*(1-(1-k)*h);switch(f%6){case 0:b=c;d=h;e=a;break;case 1:b=l;d=c;e=a;break;case 2:b=a;d=c;e=h;break;case 3:b=a;d=l;e=c;break;case 4:b=h;d=a;e=c;break;case 5:b=c,d=a,e=l}return g.realVector([b,d,e])};t.hue$1=function(a,h){var c=A(a[0]);return"number"===c.ctype?(c=c.value.real,c-=Math.floor(c),D.HSVtoRGB(c,1,1)):k};D.shapeconvert=function(a){var h,c;if("circle"===a.type){h=
+a.value.value[0];h=w.div(h,h.value[2]);var b=h.value[0].value.real,d=h.value[1].value.real;a=a.value.value[1].value.real;c=Array(125);var e=2*Math.PI/125;for(h=0;125>h;h++)c[h]={X:b+Math.cos(h*e)*a,Y:d+Math.sin(h*e)*a};return[c]}if("polygon"===a.type){b=[];for(h=0;h<a.value.length;h++){d=a.value[h];c=[];for(e=0;e<d.length;e++)c[e]={X:d[e].X,Y:d[e].Y};b[h]=c}return b}};D.shapeop=function(a,h,c){a=D.shapeconvert(a);var b=D.shapeconvert(h);ClipperLib.JS.ScaleUpPaths(a,1E3);ClipperLib.JS.ScaleUpPaths(b,
+1E3);h=new ClipperLib.Clipper;h.AddPaths(a,ClipperLib.PolyType.ptSubject,!0);h.AddPaths(b,ClipperLib.PolyType.ptClip,!0);var b=a=ClipperLib.PolyFillType.pftNonZero,d=new ClipperLib.Paths;h.Execute(c,d,a,b);ClipperLib.JS.ScaleDownPaths(d,1E3);return{ctype:"shape",type:"polygon",value:d}};D.shapecommon=function(a,h){return D.shapeop(a,h,ClipperLib.ClipType.ctIntersection)};D.shaperemove=function(a,h){return D.shapeop(a,h,ClipperLib.ClipType.ctDifference)};D.shapeconcat=function(a,h){return D.shapeop(a,
+h,ClipperLib.ClipType.ctUnion)};t.key$0=function(a,h){return{ctype:"string",value:Qc}};t.keycode$0=function(a,h){return l.real(Rc)};t.mouse$0=function(a,h){return g.realVector([ta[0],ta[1]])};t.mover$0=function(a,h){if(fa&&fa.mover)return{ctype:"geo",value:fa.mover};console.log("Not moving anything at the moment");return k};t.translate$1=function(a,h){var c=B(a[0]);"list"===c.ctype&&g.isNumberVector(c)&&2===c.value.length&&z.translate(c.value[0].value.real,c.value[1].value.real);return k};t.rotate$1=
+function(a,h){var c=B(a[0]);"number"===c.ctype&&z.rotate(c.value.real);return k};t.scale$1=function(a,h){var c=B(a[0]);"number"===c.ctype&&z.scale(c.value.real);return k};t.greset$0=function(a,h){var c=$a.stack.length;z.greset();for(var b=0;b<c;b++)y.restore();return k};t.gsave$0=function(a,h){z.gsave();y.save();return k};t.grestore$0=function(a,h){z.grestore();y.restore();return k};t.color$1=function(a,h){var c=B(a[0]);"list"===c.ctype&&g.isNumberVector(c).value&&z.setcolor(c);return k};t.linecolor$1=
+function(a,h){var c=B(a[0]);"list"===c.ctype&&g.isNumberVector(c).value&&z.setlinecolor(c);return k};t.pointcolor$1=function(a,h){var c=B(a[0]);"list"===c.ctype&&g.isNumberVector(c).value&&z.setpointcolor(c);return k};t.alpha$1=function(a,h){var c=B(a[0]);"number"===c.ctype&&z.setalpha(c);return k};t.pointsize$1=function(a,h){var c=B(a[0]);"number"===c.ctype&&z.setpointsize(c);return k};t.linesize$1=function(a,h){var c=B(a[0]);"number"===c.ctype&&z.setlinesize(c);return k};t.textsize$1=function(a,
+h){var c=B(a[0]);"number"===c.ctype&&z.settextsize(c);return k};t.playanimation$0=function(a,h){I();return k};t.pauseanimation$0=function(a,h){Ca();return k};t.stopanimation$0=function(a,h){Da();return k};t.text$1=function(a,h){var c=B(a[0]);return w.string(ba(c))};t.replace$3=function(a,h){var c=A(a[0]),b=A(a[1]),d=A(a[2]);if("string"===c.ctype&&"string"===b.ctype&&"string"===d.ctype)return c=c.value,b=b.value.replace(/[^A-Za-z0-9]/g,"\\$&"),d=d.value.replace(/\$/g,"$$$$"),c=c.replace(new RegExp(b,
+"g"),d),{ctype:"string",value:c}};t.replace$2=function(a,h){function c(a,c,h){var e="";d=b=-1;for(var g=0;g<c.length;g++){var f=c[g][0],k=a.indexOf(f,h);-1!==k&&(-1===b?(e=f,b=k,d=g):k<b&&(e=f,b=k,d=g))}return e}var b,d,e,g=A(a[0]);e=A(a[1]);if("string"===g.ctype&&"list"===e.ctype){for(var g=g.value,f=[],l=0;l<e.value.length;l++){var m=e.value[l];"list"===m.ctype&&2===m.value.length&&"string"===m.value[0].ctype&&"string"===m.value[1].ctype&&(f[f.length]=[m.value[0].value,m.value[1].value])}b=-1;for(e=
+c(g,f,0);-1!==b;)g=g.substring(0,b)+f[d][1]+g.substring(b+e.length,g.length),e=b+f[d][1].length,e=c(g,f,e);return{ctype:"string",value:g}}return k};t.substring$3=function(a,h){var c=A(a[0]),b=B(a[1]),d=B(a[2]);return"string"===c.ctype&&"number"===b.ctype&&"number"===d.ctype?{ctype:"string",value:c.value.substring(Math.floor(b.value.real),Math.floor(d.value.real))}:k};t.tokenize$2=function(a,h){var c=A(a[0]),b=A(a[1]);if("string"===c.ctype&&"string"===b.ctype)return t.tokenize$2([c,g.turnIntoCSList([b])],
+h);if("string"===c.ctype&&"list"===b.ctype){c=c.value;if(0===b.value.length){b=!0;if(void 0!==h.autoconvert){var d=A(h.autoconvert);"boolean"===d.ctype&&(b=d.value)}return b&&""!==c&&(b=Number(c),!isNaN(b))?l.real(b):w.string(c)}var d=b.value[0],e=g.turnIntoCSList(b.value.slice(1)),c=c.split(d.value);return g.turnIntoCSList(c.map(function(a){return t.tokenize$2([w.string(a),e],h)}))}return k};t.indexof$2=function(a,h){var c=A(a[0]),b=A(a[1]);return"string"===c.ctype&&"string"===b.ctype?(c=c.value.indexOf(b.value),
+l.real(c+1)):k};t.indexof$3=function(a,h){var c=A(a[0]),b=A(a[1]),d=A(a[2]);return"string"===c.ctype&&"string"===b.ctype&&"number"===d.ctype?(c=c.value.indexOf(b.value,Math.round(d.value.real)-1),l.real(c+1)):k};t.parse$1=function(a,h){var c=A(a[0]);return"string"===c.ctype?(c=Ra(c.value),A(c)):k};t.unicode$1=function(a,h){var c;c=A(a[0]);var b=16;if(h.base){var d=A(h.base);"number"===d.ctype&&(b=d.value.real)}if("string"===c.ctype)c=parseInt(c.value,b);else if("number"===c.ctype)c=c.value.real;else return k;
+"undefined"!==typeof String.fromCodePoint?c=String.fromCodePoint(c):65535>=c?c=String.fromCharCode(c):(c-=65536,c=String.fromCharCode((c>>10)+55296,(c&1023)+56320));return w.string(c)};t.international$1=function(a,h){return t.international$2([a[0],null],h)};t.international$2=function(a,h){var c=A(a[0]);if("string"!==c.ctype)return k;var b=(p.translations||{})[p.language||"en"]||{};if(!b.hasOwnProperty(c.value))return c;var d=b[c.value];if("string"===typeof d)return w.string(d);if(null===a[1])return c;
+var e=A(a[1]),e="number"===e.ctype?e.value.real:0,b=(b._pluralFormFunction||Vd)(e);return b<d.length?w.string(d[b]):c};t.currentlanguage$0=function(a,h){return w.string(p.language||"en")};D.basismap=function(a,h,c,b){var d=g.turnIntoCSList([a,h,c]),d=g.adjoint3(g.transpose(d));b=w.mult(d,b);d=g.turnIntoCSList([w.mult(b.value[0],a),w.mult(b.value[1],h),w.mult(b.value[2],c)]);return g.transpose(d)};t.map$8=function(a,h){var c=M(a[0]),b=M(a[1]),d=M(a[2]),e=M(a[3]),f=M(a[4]),l=M(a[5]),m=M(a[6]),n=M(a[7]);
+return f!==k&&l!==k&&m!==k&&n!==k&&c!==k&&b!==k&&d!==k&&e!==k?(f=D.basismap(f,l,m,n),c=D.basismap(c,b,d,e),c=w.mult(f,g.adjoint3(c)),g.normalizeMax(c)):k};t.map$6=function(a,h){var c=M(a[0]),b=M(a[1]),d=M(a[2]),e=g.realVector([0,0,1]),f=g.cross,l=f(f(d,f(e,f(c,b))),f(b,f(e,f(c,d)))),m=M(a[3]),n=M(a[4]),p=M(a[5]),e=f(f(p,f(e,f(m,n))),f(n,f(e,f(m,p))));return m!==k&&n!==k&&p!==k&&e!==k&&c!==k&&b!==k&&d!==k&&l!==k?(m=D.basismap(m,n,p,e),c=D.basismap(c,b,d,l),c=w.mult(m,g.adjoint3(c)),g.normalizeMax(c)):
+k};t.map$4=function(a,h){var c=g.ii,b=g.jj,d=M(a[0]),e=M(a[1]),f=M(a[2]),l=M(a[3]);return f!==k&&l!==k&&d!==k&&e!==k?(f=D.basismap(f,l,c,b),c=D.basismap(d,e,c,b),c=w.mult(f,g.adjoint3(c)),g.normalizeMax(c)):k};t.map$2=function(a,h){var c=g.ii,b=g.jj,d=M(a[0]),e=w.add(g.realVector([1,0,0]),d),f=M(a[1]),l=w.add(g.realVector([1,0,0]),f);return f!==k&&l!==k&&d!==k&&e!==k?(f=D.basismap(f,l,c,b),c=D.basismap(d,e,c,b),c=w.mult(f,g.adjoint3(c)),g.normalizeMax(c)):k};t.pointreflect$1=function(a,h){var c=g.ii,
+b=g.jj,d=M(a[0]),e=w.add(g.realVector([1,0,0]),d),f=w.add(g.realVector([-1,0,0]),d);return f!==k&&d!==k&&e!==k?(f=D.basismap(d,f,c,b),c=D.basismap(d,e,c,b),c=w.mult(f,g.adjoint3(c)),g.normalizeMax(c)):k};t.linereflect$1=function(a,h){var c=g.ii,b=g.jj,d=M(a[0]),e=g.realVector([Math.random(),Math.random(),Math.random()]),f=g.realVector([Math.random(),Math.random(),Math.random()]),e=g.cross(e,d),f=g.cross(f,d);return d!==k&&e!==k?(d=D.basismap(e,f,c,b),c=D.basismap(e,f,b,c),c=w.mult(d,g.adjoint3(c)),
+g.normalizeMax(c)):k};D.extractPointVec=function(a){var h={ok:!1};if("geo"===a.ctype){var c=a.value;if("P"===c.kind)return h.x=ya.getField(c,"x"),h.y=ya.getField(c,"y"),h.z=l.real(1),h.ok=!0,h}if("list"!==a.ctype)return h;var b=a.value;if(2===b.length&&(a=b[0],c=b[1],"number"===a.ctype&&"number"===c.ctype))return h.x=a,h.y=c,h.z=l.real(1),h.ok=!0,h;3===b.length&&(a=b[0],c=b[1],b=b[2],"number"===a.ctype&&"number"===c.ctype&&"number"===b.ctype&&(h.x=l.div(a,b),h.y=l.div(c,b),h.z=l.real(1),h.ok=!0));
+return h};t.polygon$1=function(a,h){var c=A(a[0]);if("list"===c.ctype){for(var b=[],d=0;d<c.value.length;d++){var e=D.extractPoint(c.value[d]);if(!e.ok)return k;b[d]={X:e.x,Y:e.y}}return{ctype:"shape",type:"polygon",value:[b]}}return k};t.circle$2=function(a,h){var c=B(a[0]),b=B(a[1]),c=D.extractPointVec(c);if(!c.ok||"number"!==b.ctype)return k;c=g.turnIntoCSList([c.x,c.y,c.z]);return{ctype:"shape",type:"circle",value:g.turnIntoCSList([c,b])}};t.screen$0=function(a,h){var c=z.drawingstate.initialmatrix,
+b=function(a,b){var h=a-c.tx,d=b+c.ty;return{X:(h*c.d-d*c.b)/c.det,Y:-(-h*c.c+d*c.a)/c.det}};return{ctype:"shape",type:"polygon",value:[[b(0,0),b(da,0),b(da,ca),b(0,ca)]]}};t.halfplane$2=function(a,b){var c=B(a[0]),d=B(a[1]),e=M(c),f=M(d);if(c!==k&&d!==k){var m=d.usage,d=e,n=f;if("Line"===c.usage||"Point"===m)d=f,n=e;c=g.turnIntoCSList([n.value[0],n.value[1],l.zero]);c=g.cross(c,d);c=g.cross(n,c);c=w.div(c,c.value[2]);d=w.div(d,d.value[2]);d=g.sub(d,c);n=g.abs(d);d=w.div(d,n);n=c.value[0].value.real;
+c=c.value[1].value.real;e=1E3*d.value[0].value.real;d=1E3*d.value[1].value.real;return{ctype:"shape",type:"polygon",value:[[{X:n+d/2,Y:c-e/2},{X:n+d/2+e,Y:c-e/2+d},{X:n-d/2+e,Y:c+e/2+d},{X:n-d/2,Y:c+e/2}]]}}return k};t.element$1=function(a,b){var c=A(a[0]);return"string"===c.ctype&&u.csnames.hasOwnProperty(c.value)?{ctype:"geo",value:u.csnames[c.value]}:k};D.all$1=function(a,b){var c=A(a[0]);return"geo"===c.ctype&&c.value.incidences?g.ofGeos(c.value.incidences.map(function(a){return u.csnames[a]}).filter(b)):
+g.nil};t.allpoints$0=function(a,b){return g.ofGeos(u.points)};t.allpoints$1=function(a,b){return D.all$1(a,function(a){return"P"===a.kind})};t.allmasses$0=function(a,b){return g.ofGeos(ga)};t.allmasses$1=function(a,b){return D.all$1(a,function(a){return"P"===a.kind&&a.behavior&&"Mass"===a.behavior.type})};t.allsprings$0=function(a,b){return g.ofGeos(zc)};t.allsprings$1=function(a,b){return D.all$1(a,function(a){return"S"===a.kind&&a.behavior&&"Spring"===a.behavior.type})};t.alllines$0=function(a,
+b){return g.ofGeos(u.lines)};t.alllines$1=function(a,b){return D.all$1(a,function(a){return"L"===a.kind||"S"===a.kind})};t.allsegments$0=function(a,b){return g.ofGeos(u.lines.filter(function(a){return"S"===a.kind}))};t.allsegments$1=function(a,b){return D.all$1(a,function(a){return"S"===a.kind})};t.allconics$0=function(a,b){return g.ofGeos(u.conics)};t.allconics$1=function(a,b){return D.all$1(a,function(a){return"C"===a.kind})};t.allcircles$0=function(a,b){return g.ofGeos(u.conics.filter(function(a){return"Circle"===
+a.matrix.usage}))};t.allcircles$1=function(a,b){return D.all$1(a,function(a){return"C"===a.kind&&"Circle"===a.matrix.usage})};t.allelements$0=function(a,b){return g.ofGeos(u.gslp)};t.allelements$1=function(a,b){return D.all$1(a,function(a){return!0})};t.incidences$1=t.allelements$1;t.createpoint$2=function(a,b){var c=A(a[0]),d=M(a[1]);return"string"!==c.ctype?(console.log("Name must be a string"),k):"list"!==d.ctype&&g.isNumberVector(d)?(console.log("Position must be a number vector"),k):Ha({name:c.value,
+type:"Free",labeled:!0,pos:d})};t.create$3=function(a,b){var c=A(a[0]),d=A(a[1]),e=A(a[2]),f,n;if("string"===c.ctype)f=c.value;else{if("list"!==c.ctype)return console.log("Names must be a string or a list of strings"),k;if(1!==c.value.length){f=w.string(c.value.map(function(a){return a.value}).join("__"));f=t.create$3([f,d,e],b);if(f!==k)for(d=w.string(f.kind.replace(/^(.*)s$/,"Select$1")),e=g.turnIntoCSList([w.string(f.name)]),n=0;n<c.value.length;++n)t.create$3([c.value[n],d,e],{index:l.real(n+
+1)});return f}if("string"!==c.value[0].ctype)return console.log("Element of names list must be a string"),k;f=c.value[0].value}if("string"!==d.ctype)return console.log("Type must be a string"),k;if("list"!==e.ctype)return console.log("Arguments must be a list"),k;if(!m.hasOwnProperty(d.value)&&!tc.hasOwnProperty(d.value)&&!rd.hasOwnProperty(d.value))return console.log("Invalid geometric operation: '"+d.value+"'"),k;var c=[],p=null;for(n=0;n<e.value.length;n++){var q=e.value[n];if("string"===q.ctype)c.push(q.value);
+else if("geo"===q.ctype)c.push(q.value.name);else if(p=M(q),p===k)return console.log("Unknown argument type"),k}f={name:f,type:d.value,labeled:!0};p&&(f.pos=p);0<c.length&&(f.args=c);d=B(b.index);"number"===d.ctype&&(f.index=d.value.real|0);return Ha(f)};t.javascript$1=function(a,b){var c=A(a[0]);"string"===c.ctype&&(new Function(c.value)).call(oa);return k};t.use$1=function(a,b){function c(a,c,b){t[a.toLowerCase()+"$"+c]=b}var d=A(a[0]);if("string"===d.ctype){var d=d.value,e;p.plugins&&(e=p.plugins[d]);
+e||(e=wa._pluginRegistry[d]);if(e)return e({instance:oa,config:p,nada:k,evaluate:A,extractPoint:D.extractPoint,evaluateAndVal:B,defineFunction:c,addShutdownHook:jb.push.bind(jb),addAutoCleaningEventListener:H,getVariable:J.getvar.bind(J),getInitialMatrix:function(){return z.drawingstate.initialmatrix},setTextRenderer:function(a,c){Bc=a;c&&(td=c)},getImage:function(a,c){"string"===typeof a&&(a=w.string(a));var b=La(a);if(!b)return null;!c&&b.cdyUpdate&&b.cdyUpdate();return b},getMyfunction:function(a){return Za.hasOwnProperty(a)?
+Za[a]:null}}),{ctype:"boolean",value:!0};console.log("Plugin "+d+" not found");return{ctype:"boolean",value:!1}}return k};t.format$2=function(a,b){function c(a){a=a.toFixed(f);var c;do c=a,a=a.substring(0,a.length-1);while(""!==a&&"-"!==a&&+a===+c);return""+c}function d(a){var b;return"number"===a.ctype?(b=c(a.value.real),a=c(a.value.imag),b="0"===a?b:"-"===a.substring(0,1)?b+" - i*"+a.substring(1):b+" + i*"+a,{ctype:"string",value:b}):"list"===a.ctype?{ctype:"list",value:a.value.map(d)}:{ctype:"string",
+value:ba(a).toString()}}var e=B(a[0]),g=B(a[1]),f;return"number"!==e.ctype&&"list"!==e.ctype||"number"!==g.ctype?k:(f=Math.max(0,Math.min(20,Math.round(g.value.real))),d(e))};Date.now||(Date.now=function(){return(new Date).getTime()});var Id=0;t.timestamp$0=function(a,b){return l.real(Date.now())};t.seconds$0=function(a,b){return l.real((Date.now()-Id)/1E3)};t.resetclock$0=function(a,b){Id=Date.now();return k};t.time$0=function(a,b){var c=new Date;return g.realVector([c.getHours(),c.getMinutes(),
+c.getSeconds(),c.getMilliseconds()])};t.date$0=function(a,b){var c=new Date;return g.realVector([c.getFullYear(),c.getMonth()+1,c.getDate()])};t.simulationtime$0=function(a,b){return l.real(Cb*Fd)};t.settimeout$2=function(a,b){function c(){A(g);e()}var d=A(a[0]),g=a[1];"number"===d.ctype&&"undefined"!==typeof window&&window.setTimeout(c,1E3*d.value.real);return k};D.formatForWebGL=function(a){return a.toFixed(10)};t.generateWebGL$2=function(a,b){var c=D.formatForWebGL,d=a[0],e=A(a[1]);console.log(e);
+if("list"!==e.ctype)return k;for(var g=[],f=0;f<e.value.length;f++)"string"===e.value[f].ctype&&g.push(e.value[f].value);console.log("***********");console.log(g);e=D.plotvars(d);console.log(e);-1===e.indexOf("a")&&-1===e.indexOf("b")&&-1===e.indexOf("c")&&-1===e.indexOf("d")&&-1===e.indexOf("e")&&-1===e.indexOf("f")&&(d=B(d));if("number"===d.ctype)return{ctype:"string",value:"vec2("+c(d.value.real)+","+c(d.value.imag)+")"};if("variable"===d.ctype)return{ctype:"string",value:d.name};if("string"===
+d.ctype||"void"===d.ctype)return d;if(2===d.args.length&&("infix"===d.ctype||"function"===d.ctype)){c=t.compileToWebGL$1([d.args[0]],{});e=t.compileToWebGL$1([d.args[1]],{});if("+"===d.oper||"add"===d.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:e.value}:{ctype:"string",value:"addc("+c.value+","+e.value+")"};if("*"===d.oper||"mult"===d.oper)return{ctype:"string",value:"multc("+c.value+","+e.value+")"};if("/"===d.oper||"div"===d.oper)return{ctype:"string",value:"divc("+c.value+
+","+e.value+")"};if("-"===d.oper||"sub"===d.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:"negc("+e.value+")"}:{ctype:"string",value:"subc("+c.value+","+e.value+")"};if("^"===d.oper||"pow"===d.oper)return{ctype:"string",value:"powc("+c.value+","+e.value+")"}}if("function"===d.ctype&&1===d.args.length){c=t.compileToWebGL$1([d.args[0]],{});if("sin$1"===d.oper)return{ctype:"string",value:"sinc("+c.value+")"};if("cos$1"===d.oper)return{ctype:"string",value:"cosc("+c.value+")"};
+if("tan$1"===d.oper)return{ctype:"string",value:"tanc("+c.value+")"};if("exp$1"===d.oper)return{ctype:"string",value:"expc("+c.value+")"};if("log$1"===d.oper)return{ctype:"string",value:"logc("+c.value+")"};if("arctan$1"===d.oper)return{ctype:"string",value:"arctanc("+c.value+")"};if("arcsin$1"===d.oper)return{ctype:"string",value:"arcsinc("+c.value+")"};if("arccos$1"===d.oper)return{ctype:"string",value:"arccosc("+c.value+")"};if("sqrt$1"===d.oper)return{ctype:"string",value:"sqrtc("+c.value+")"}}return k};
+t.compileToWebGL$1=function(a,b){var c,d;c=D.formatForWebGL;var e=a[0];d=D.plotvars(e);-1===d.indexOf("a")&&-1===d.indexOf("b")&&-1===d.indexOf("c")&&-1===d.indexOf("d")&&-1===d.indexOf("e")&&-1===d.indexOf("f")&&(e=B(e));if("number"===e.ctype)return{ctype:"string",value:"vec2("+c(e.value.real)+","+c(e.value.imag)+")"};if("variable"===e.ctype)return{ctype:"string",value:e.name};if("string"===e.ctype||"void"===e.ctype)return e;if(2===e.args.length&&("infix"===e.ctype||"function"===e.ctype)){c=t.compileToWebGL$1([e.args[0]],
+{});d=t.compileToWebGL$1([e.args[1]],{});if("+"===e.oper||"add"===e.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:d.value}:{ctype:"string",value:"addc("+c.value+","+d.value+")"};if("*"===e.oper||"mult"===e.oper)return{ctype:"string",value:"multc("+c.value+","+d.value+")"};if("/"===e.oper||"div"===e.oper)return{ctype:"string",value:"divc("+c.value+","+d.value+")"};if("-"===e.oper||"sub"===e.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:"negc("+d.value+
+")"}:{ctype:"string",value:"subc("+c.value+","+d.value+")"};if("^"===e.oper||"pow"===e.oper)return{ctype:"string",value:"powc("+c.value+","+d.value+")"}}if("function"===e.ctype&&1===e.args.length){c=t.compileToWebGL$1([e.args[0]],{});if("sin$1"===e.oper)return{ctype:"string",value:"sinc("+c.value+")"};if("cos$1"===e.oper)return{ctype:"string",value:"cosc("+c.value+")"};if("tan$1"===e.oper)return{ctype:"string",value:"tanc("+c.value+")"};if("exp$1"===e.oper)return{ctype:"string",value:"expc("+c.value+
+")"};if("log$1"===e.oper)return{ctype:"string",value:"logc("+c.value+")"};if("arctan$1"===e.oper)return{ctype:"string",value:"arctanc("+c.value+")"};if("arcsin$1"===e.oper)return{ctype:"string",value:"arcsinc("+c.value+")"};if("arccos$1"===e.oper)return{ctype:"string$1",value:"arccosc("+c.value+")"};if("sqrt$1"===e.oper)return{ctype:"string",value:"sqrtc("+c.value+")"}}return k};t.setsimulationspeed$1=function(a,b){var c=B(a[0]);"number"===c.ctype&&sa(c.value.real);return k};t.setsimulationaccuracy$1=
+function(a,b){var c=B(a[0]);"number"===c.ctype&&"undefined"!==typeof O&&"undefined"!==typeof O.env&&(O.env.accuracy=Math.max(1,c.value.real|0));return k};t.setsimulationquality$1=function(a,b){var c=B(a[0]);"number"===c.ctype&&"undefined"!==typeof O&&"undefined"!==typeof O.env&&(c=c.value.real,0===c&&(O.env.errorbound=.01,O.env.lowestdeltat=1E-5,O.env.slowdownfactor=2),1===c&&(O.env.errorbound=.001,O.env.lowestdeltat=1E-7,O.env.slowdownfactor=2),2===c&&(O.env.errorbound=1E-5,O.env.lowestdeltat=1E-10,
+O.env.slowdownfactor=4),3===c&&(O.env.errorbound=1E-6,O.env.lowestdeltat=1E-12,O.env.slowdownfactor=4));return k};var Wb=null,dc=null;t.createtool$3=function(a,b){var c,d="left",e="top",g=null;b.space&&(c=A(b.space),"number"===c.ctype&&(g=c.value.real/2));var f=null;b.toolbar&&(c=A(b.toolbar),"string"===c.ctype&&((f=document.getElementById(c.value))||console.warn("Element #"+c.value+" not found")));if(!f){if(b.reference){var l=A(b.reference);if("string"===l.ctype)switch(l.value){case "UR":d="right";
+break;case "LL":e="bottom";break;case "LR":d="right",e="bottom"}}f=document.createElement("div");f.className="CindyJS-toolbar";ka.parentNode.appendChild(f);l=A(a[1]);c=A(a[2]);"number"===l.ctype&&(f.style[d]=l.value.real+"px");"number"===c.ctype&&(f.style[e]=c.value.real+"px");null!==g&&(f.style.margin=-g+"px")}l=A(a[0]);if("string"===l.ctype)l=[[l.value]];else if("list"===l.ctype)l=l.value.map(function(a){return"string"===a.ctype?[a.value]:"list"===a.ctype?a.value.map(function(a){return"string"===
+a.ctype?a.value:null}):[null]});else return console.log("Name must be a string or a list of strings"),k;if(b.flipped&&(c=A(b.flipped),"boolean"===c.ctype&&c.value)){console.log("Flipping");var m=0;c=l.length;l.forEach(function(a){a.length>m&&(m=a.length)});for(var n=[],p=0;p<m;++p){n[p]=[];for(var q=0;q<c;++q)n[p][q]=l[q][p]||null}l=n}"bottom"===e&&l.reverse();l.forEach(function(a){"right"===d&&a.reverse();var c=document.createElement("div");f.appendChild(c);a.forEach(function(a){function b(){Wb&&
+Wb.classList.remove("CindyJS-active");Wb=d;d.classList.add("CindyJS-active");qc=a;var c=G[qc].actions;dc&&(dc.textContent=c[0].tooltip||"");ua=[];sb=Ua=0}G.hasOwnProperty(a)||(console.log("Tool '"+a+"' not implemented yet."),a=null);if(null===a){var h=document.createElement("span");h.className="CindyJS-spacer";c.appendChild(h)}else{var d=document.createElement("button"),h=document.createElement("img");h.src=wa.getBaseDir()+"images/"+a+".png";d.appendChild(h);d.addEventListener("click",b);Wb||b();
+null!==g&&(d.style.margin=g+"px");c.appendChild(d)}})});return k};t.dropped$0=function(){return kc};t.droppoint$0=function(){return lc};t.parsecsv$1=function(a,b){var c=!0,d=B(b.autoconvert);"boolean"===d.ctype&&(c=d.value);var e=null,d=B(b.delimiter);"string"===d.ctype&&/^[^\"\r\n]$/.test(d.value)&&(e=d.value);d=B(a[0]);if("string"!==d.ctype)return console.log("CSV data is not a string"),k;var d=d.value,f='(?:"((?:[^"]+|"")*)"|([^]*?))(\r\n|(,)|[\r\n]|$)';e&&(e=e.replace(/[^A-Za-z0-9]/g,"\\$&").replace(/\$/g,
+"$$$$"),f=f.replace(/,/g,e));for(var f=new RegExp(f,"g"),e=[],m=[],n=null;f.lastIndex<d.length;){var p=f.exec(d),q=p[2];"string"===typeof p[1]&&(q=p[1].replace(/""/g,'"'));q=c?/^[Tt]rue$/.test(q)?w.bool(!0):/^[Ff]alse$/.test(q)?w.bool(!1):/^[\-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+|Infinity)$/.test(q)?l.real(Number(q)):w.string(q):w.string(q);e.push(q);p[4]&&f.lastIndex===d.length&&(e.push(w.string("")),p={});if(!p[4]){null===n&&(n=e.length);if(n<e.length)for(n=e.length,p=0;p<m.length;++p)for(q=m[p].length;q<
+n;++q)m[p][q]=k;else if(n>e.length)for(p=e.length;p<n;++p)e[p]=k;m.push(e);e=[]}}return g.turnIntoCSList(m.map(g.turnIntoCSList))};t.load$2=function(a,b){return t.load$3([a[0],null,a[1]],b)};t.load$3=function(a,b){function c(){if(l.readyState===XMLHttpRequest.DONE){var c;200===l.status?c=w.string(String(l.responseText)):(ia.err("Failed to load "+f+": "+l.statusText),c=k);J.newvar(d);J.setvar(d,c);A(a[2]);J.removevar(d);e()}}var d="#";null!==a[1]&&"variable"===a[1].ctype&&(d=a[1].name);var g=B(a[0]),
+f=null,l=null;"string"===g.ctype&&/^https?:\/\//.test(g.value)&&(f=g.value);return null!==f?(l=new XMLHttpRequest,l.onreadystatechange=c,l.open("GET",f),l.send(),w.bool(!0)):k};D.extractPoint=function(a){var b={ok:!1};if("geo"===a.ctype){var c=a.value;if("P"===c.kind)return b.x=ya.getField(c,"x").value.real,b.y=ya.getField(c,"y").value.real,b.ok=!0,b}if("list"!==a.ctype)return b;var d=a.value;if(2===d.length&&(a=d[0],c=d[1],"number"===a.ctype&&"number"===c.ctype))return b.x=a.value.real,b.y=c.value.real,
+b.ok=!0,b;3===d.length&&(a=d[0],c=d[1],d=d[2],"number"===a.ctype&&"number"===c.ctype&&"number"===d.ctype&&(a=l.div(a,d),c=l.div(c,d),b.x=a.value.real,b.y=c.value.real,b.ok=!0));return b};t.draw$1=function(a,b){var c=B(a[0]);if("shape"===c.ctype)D.drawshape(c,b);else if("Line"===c.usage)x.handleModifs(b,x.lineModifs),x.drawline(c);else{var d=D.extractPoint(c);if(!d.ok){if("undefined"!==typeof c.value&&2===c.value.length)return t.draw$2(c.value,b);return}null!==b&&x.handleModifs(b,x.pointModifs);x.drawpoint(d)}return k};
+t.draw$2=function(a,b){var c=B(a[0]),d=B(a[1]),c=D.extractPoint(c),d=D.extractPoint(d);if(!c.ok||!d.ok)return k;null!==b&&x.handleModifs(b,x.lineModifs);x.drawsegcore(c,d);return k};t.drawcircle$2=function(a,b){return D.drawcircle(a,b,"D")};D.arcHelper=function(a){var b={};b.startPoint=M(a[0]);b.viaPoint=M(a[1]);b.endPoint=M(a[2]);return b};t.fillcircle$2=function(a,b){return D.drawcircle(a,b,"F")};t.drawarc$3=function(a,b){var c=D.arcHelper(a);return D.drawarc(c,b,"D")};t.fillarc$3=function(a,b){var c=
+D.arcHelper(a);return D.drawarc(c,b,"F")};D.drawarc=function(a,b,c){var d=a.startPoint,e=a.viaPoint;a=a.endPoint;if(!g._helper.isAlmostReal(g.turnIntoCSList([d,e,a])))return k;x.handleModifs(b,x.conicModifs);x.preDrawCurve();b=g.det3(d,e,a);if(1E-12<Math.abs(b.value.real)){b=m._helper.ConicBy5(null,d,e,a,g.ii,g.jj);var f=m._helper.CenterOfConic(b),f=g.normalizeMax(f);b=l.real(0);var n=g.turnIntoCSList([g.turnIntoCSList([f.value[2],b,l.neg(f.value[0])]),g.turnIntoCSList([b,f.value[2],l.neg(f.value[1])]),
+g.turnIntoCSList([b,b,f.value[2]])]);b=g.normalizeZ(w.mult(n,d));g.normalizeZ(w.mult(n,e));n=g.normalizeZ(w.mult(n,a));b=-Math.atan2(b.value[1].value.real,b.value[0].value.real);n=-Math.atan2(n.value[1].value.real,n.value[0].value.real);f=g.normalizeZ(f);d=g.normalizeZ(d);e=g.normalizeZ(e);a=g.normalizeZ(a);var p=g.abs(g.sub(d,f)),q=[f.value[0].value.real,f.value[1].value.real],f=z.drawingstate.matrix,t=q[0]*f.a-q[1]*f.b+f.tx,q=q[0]*f.c-q[1]*f.d-f.ty,d=0<g.det3(d,e,a).value.real;y.save();y.beginPath();
+y.translate(t,q);y.arc(0,0,p.value.real*f.sdet,b,n,d);"F"===c&&(y.fillStyle=x.lineColor,y.closePath(),y.fill());"D"===c&&y.stroke();y.restore()}else{if("D"!==c)return k;c=D.extractPoint(d);b=D.extractPoint(e);n=D.extractPoint(a);if(!c.ok||!b.ok||!n.ok)return k;p=(c.x-n.x)*(c.x-n.x)+(c.y-n.y)*(c.y-n.y);f=(n.x-b.x)*(n.x-b.x)+(n.y-b.y)*(n.y-b.y);if(1E-12>(c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y)||1E-12>p||1E-12>f)return k;0>g.crossratio3(d,a,e,g.cross(g.cross(d,e),g.linfty),g.ii).value.real?x.drawsegcore(c,
+n):x.drawRaySegment(d,a)}return k};D.drawcircle=function(a,b,c){var d=B(a[0]);a=B(a[1]);var e=D.extractPoint(d);if(!e.ok||"number"!==a.ctype||!l._helper.isAlmostReal(a))return k;var d=z.drawingstate.matrix,g=e.x*d.a-e.y*d.b+d.tx,e=e.x*d.c-e.y*d.d-d.ty;x.handleModifs(b,x.conicModifs);x.preDrawCurve();y.lineJoin="miter";y.beginPath();y.arc(g,e,Math.abs(a.value.real)*d.sdet,0,2*Math.PI);y.closePath();"D"===c&&y.stroke();"F"===c&&(y.fillStyle=x.lineColor,y.fill());"C"===c&&y.clip();return k};t.drawconic$1=
+function(a,b){var c;c=B(a[0]);if("list"!==c.ctype||3!==c.value.length&&6!==c.value.length)return console.error("could not parse conic"),k;if(6===c.value.length){for(var d=0;6>d;d++)if("number"!==c.value[d].ctype)return console.error("could not parse conic"),k;var e=l.real(.5),d=c.value[0],f=c.value[2],f=l.mult(f,e),m=c.value[1],n=c.value[3],n=l.mult(n,e),p=c.value[4],p=l.mult(p,e);c=c.value[5];c=g.turnIntoCSList([g.turnIntoCSList([d,f,n]),g.turnIntoCSList([f,m,p]),g.turnIntoCSList([n,p,c])])}else{for(d=
+0;3>d;d++)for(f=0;3>f;f++)if("number"!==c.value[d].value[f].ctype)return console.error("could not parse conic"),k;g.equals(c,g.transpose(c)).value||(d=w.mult(c,l.real(.5)),c=w.mult(g.transpose(c),l.real(.5)),c=g.add(d,c))}c=g.normalizeMax(c);return D.drawconic(c,b)};D.drawconic=function(a,b){x.handleModifs(b,x.conicModifs);if(0!==x.lsize){x.preDrawCurve();for(var c=g.normalizeMax(a),d=c,e=0;2>e;e++)for(var f=0;2>f;f++)if(Math.abs(c.value[e].value[f].value.imag)>l.eps)return;e=g.turnIntoCSList([g.realVector([-1,
+-1,1]),g.realVector([1,0,0]),g.realVector([0,1,0])]);f=z.from(0,0,1);f[2]=1;var n=z.from(1,0,1);n[2]=1;var p=z.from(0,1,1);p[2]=1;var f=g.turnIntoCSList([g.realVector(f),g.realVector(n),g.realVector(p)]),f=g.transpose(f),e=w.mult(f,e),e=g.inverse(e),c=w.mult(g.transpose(e),c),c=w.mult(c,e),e=c.value[0].value[0].value.real,f=c.value[1].value[0].value.real,n=c.value[1].value[1].value.real,p=c.value[2].value[0].value.real,q=c.value[2].value[1].value.real,v=c.value[2].value[2].value.real,c=[[e,f,p],[f,
+n,q],[p,q,v]],u=1E-14>Math.abs(e*n*v-e*q*q-f*f*v+2*f*p*q-n*p*p);if(u&&"Circle"===a.usage){var A=w.mult(g.adjoint3(d),g.linfty);l.abs(A.value[2]).value.real>l.eps&&(u=!1)}var A=da>ca?da:ca,B=-1.5*A,C=1.5*A,D=-1.5*A,E=1.5*A,F=1;u&&(F=0);if(F)var p=0,p=1E-14<Math.abs(e-f)?Math.atan(f/e-n)/2:Math.PI/4,G=function(a){var c=Math.cos(a);a=Math.sin(a);return[[c,-a,0],[a,c,0],[0,0,1]]}(p),G=g.realMatrix(G),e=g.transpose(G),c=w.mult(g.realMatrix(c),G),c=w.mult(e,c),e=c.value[0].value[0].value.real,f=c.value[1].value[0].value.real,
+n=c.value[1].value[1].value.real,p=c.value[2].value[0].value.real,q=c.value[2].value[1].value.real,v=c.value[2].value[2].value.real;var c=[e,f,n,p,q,v],e=function(){var a=m._helper.splitDegenConic(d);if(a!==k){var c=a[1],a=[a[0]];t.draw$1(a,b);a[0]=c;t.draw$1(a,b)}},H=function(a){"undefined"!==a&&6===a.length||console.error("this does not define a Conic");if(u)return"degenerate";a=a[0]*a[2]-a[1]*a[1];return 1E-14>Math.abs(a)?"parabola":1E-14<a?"ellipsoid":"hyperbola"};H(c);var L=function(a,c){return 0<
+a&&a<da&&0<c&&c<ca},J=[],I=[],K=[],M=[],N=[],O=[],P=function(){J=[];I=[];K=[];M=[];N=[];O=[]},R=function(a,c){y.beginPath();y.moveTo(a[0],c[0]);for(var b=1;b<a.length;b++)y.lineTo(a[b],c[b]);y.stroke()},S=function(a,c,b){var h,d,e=H(a);if(6!==a.length)console.error("Conic needs 6 Parameters");else{var f=a[0],r=a[1],k=a[2],l=a[3],m=a[4];a=a[5];var n;h=b-c;for(var p=.1*h+c,na=b-.1*h,Q=c;Q<=b;Q+=n){n=Q<p||Q>na||100>Math.abs(b-c)?.5:0>Q||Q>ca?10:3;d=-f*k*Q*Q-2*f*m*Q-f*a+r*r*Q*Q+2*r*l*Q+l*l;d=Math.sqrt(d);
+h=1/f*(-r*Q-l+d);d=-1/f*(r*Q+l+d);var q,Ga;F?(q=[h,Q,1],Ga=[d,Q,1],q=w.mult(G,g.realVector(q)),Ga=w.mult(G,g.realVector(Ga)),h=q.value[0].value.real,d=Ga.value[0].value.real,q=q.value[1].value.real,Ga=Ga.value[1].value.real):Ga=q=Q;isNaN(h)||"ellipsoid"!==e?!isNaN(h)&&h>=B&&h<=C&&(J.push(h),K.push(q)):(J.push(h),K.push(q));isNaN(d)||"ellipsoid"!==e?!isNaN(d)&&d>=B&&d<=C&&(I.push(d),M.push(Ga)):(I.push(d),M.push(Ga))}}},f=function(a){var c,b,h;H(a);if(6!==a.length)console.error("Conic needs 6 Parameters");
+else{h=a[0];var d=a[1],e=a[2],f=a[3],g=a[4],r=a[5];c=-h*g+d*f;b=Math.sqrt(h*(-h*e*r+h*Math.pow(g,2)+Math.pow(d,2)*r-2*d*f*g+e*Math.pow(f,2)));e=h*e-Math.pow(d,2);1E-14<Math.abs(e)?(h=(c-b)/e,b=(c+b)/e):b=h=(-h*r+f*f)/(2*h*g-2*d*f);!isNaN(h)&&h>D&&h<E||(h=D);!isNaN(b)&&b>D&&b<E||(b=D);c=h<b?h:b;b=h>b?h:b;S(a,D,c);N=J.concat(I.reverse());O=K.concat(M.reverse());R(N,O);P();S(a,b,E);R(J,K);if(L(J[0],K[1])||L(I[0],M[0]))y.beginPath(),y.moveTo(J[0],K[0]),y.lineTo(I[0],M[0]),y.stroke();R(I,M);P();S(a,c,
+b);R(J,K);y.beginPath();y.moveTo(J[0],K[0]);y.lineTo(I[0],M[0]);y.stroke();y.beginPath();y.moveTo(J[J.length-1],K[K.length-1]);y.lineTo(I[I.length-1],M[M.length-1]);y.stroke();R(I,M);P()}};u?e():f(c)}};t.drawall$1=function(a,b){var c=A(a[0]);if("list"===c.ctype){x.handleModifs(b,x.pointAndLineModifs);for(var d=0;d<c.value.length;d++)t.draw$1([c.value[d]],null)}return k};t.connect$1=function(a,b){return D.drawpolygon(a,b,"D",!1)};t.drawpoly$1=function(a,b){return D.drawpolygon(a,b,"D",!0)};t.fillpoly$1=
+function(a,b){return D.drawpolygon(a,b,"F",!0)};t.drawpolygon$1=function(a,b){return D.drawpolygon(a,b,"D",!0)};t.fillpolygon$1=function(a,b){return D.drawpolygon(a,b,"F",!0)};D.drawpolygon=function(a,b,c,d){function e(){for(var a=l.value,c=0;c<a.length;c++){var b=a[c],h;for(h=0;h<b.length;h++){var d=b[h],f=d.X*g.a-d.Y*g.b+g.tx,d=d.X*g.c-d.Y*g.d-g.ty;0===h?y.moveTo(f,d):y.lineTo(f,d)}y.closePath()}}function f(){var a;for(a=0;a<l.value.length;a++){var c=D.extractPoint(l.value[a]);if(!c.ok)return;var b=
+c.x*g.a-c.y*g.b+g.tx,c=c.x*g.c-c.y*g.d-g.ty;0===a?y.moveTo(b,c):y.lineTo(b,c)}d&&y.closePath()}x.handleModifs(b,x.conicModifs);x.preDrawCurve();var g=z.drawingstate.matrix,l=A(a[0]);y.beginPath();"list"===l.ctype&&f();"shape"===l.ctype&&e();"D"===c&&(x.fillColor&&(y.fillStyle=x.fillColor,y.fill(x.fillrule)),y.stroke());"F"===c&&(y.fillStyle=x.lineColor,y.fill(x.fillrule));"C"===c&&y.clip();return k};var Bc=Yc,td=function(a,b,c){if(-1!==b.indexOf("\n"))for(b=b.split("\n"),a.textContent=b[0],c=1;c<
+b.length;++c)a.appendChild(document.createElement("br")),a.appendChild(document.createTextNode(b[c]));else a.textContent=b};D.drawtext=function(a,b,c){var d=B(a[0]);a=A(a[1]);var e=D.extractPoint(d);if(!e.ok)return null;x.handleModifs(b,x.textModifs);b=z.drawingstate.textsize;null===b&&(b=la.textsize);null!==x.size&&(b=x.size);y.fillStyle=x.textColor;var f=z.drawingstate.matrix,d=e.x*f.a-e.y*f.b+f.tx+x.xOffset,e=e.x*f.c-e.y*f.d-f.ty-x.yOffset;a=ba(a);f=x.bold+x.italics+Math.round(10*b)/10+"px "+x.family;
+y.font=f;return c?c(a,f,d,e,x.align,b):Bc(y,a,d,e,x.align,b,b*la.lineHeight)};t.drawtext$2=function(a,b){D.drawtext(a,b,null);return k};t.drawtable$2=function(a,b){var c=B(a[0]),d=B(a[1]),e=D.extractPoint(c);if(!e.ok||"list"!==d.ctype)return k;var d=d.value,c=d.length,f=-1,l;for(l=0;l<c;++l)"list"===d[l].ctype&&d[l].value.length>f&&(f=d[l].value.length);-1===f?(d=d.map(function(a){return[a]}),f=1):d=d.map(function(a){return g.asList(a).value});var m=100,n=null,p=!0,q=z.drawingstate.textcolor;x.handleModifs(b,
+{size:!0,color:function(a){g._helper.isNumberVecN(a,3)&&(q=x.makeColor([a.value[0].value.real,a.value[1].value.real,a.value[2].value.real]))},alpha:!0,bold:!0,italics:!0,family:!0,align:!0,x_offset:!0,y_offset:!0,offset:!0,width:function(a){"number"===a.ctype&&(m=a.value.real)},height:function(a){"number"===a.ctype&&(n=a.value.real)},border:function(a){"boolean"===a.ctype&&(p=a.value)}});var t=z.drawingstate.textsize;null===t&&(t=la.textsize);null!==x.size&&(t=x.size);null===n&&(n=1.6*t);y.font=x.bold+
+x.italics+Math.round(10*t)/10+"px "+x.family;l=z.drawingstate.matrix;var v=f*m,u=c*n,t=e.x*l.a-e.y*l.b+l.tx+x.xOffset,w=e.x*l.c-e.y*l.d-l.ty-x.yOffset-u;if(p){x.preDrawCurve();y.strokeStyle=x.lineColor;y.beginPath();for(l=1;l<c;++l)y.moveTo(t,w+l*n),y.lineTo(t+v,w+l*n);for(e=1;e<f;++e)y.moveTo(t+e*m,w),y.lineTo(t+e*m,w+u);y.stroke();y.lineWidth=x.lsize+1;y.beginPath();y.rect(t,w,v,u);y.stroke()}t+=x.align*m+(1-2*x.align)*n*.3;w+=.7*n;y.fillStyle=q;for(l=0;l<c;++l)for(e=0;e<f;++e)v=ba(d[l][e]),Bc(y,
+v,t+e*m,w+l*n,x.align);return k};D.drawshape=function(a,b){return"polygon"===a.type?D.drawpolygon([a],b,"D",1):"circle"===a.type?D.drawcircle([a.value.value[0],a.value.value[1]],b,"D"):k};D.fillshape=function(a,b){return"polygon"===a.type?D.drawpolygon([a],b,"F",1):"circle"===a.type?D.drawcircle([a.value.value[0],a.value.value[1]],b,"F"):k};D.clipshape=function(a,b){return"polygon"===a.type?D.drawpolygon([a],b,"C",1):"circle"===a.type?D.drawcircle([a.value.value[0],a.value.value[1]],b,"C"):k};t.fill$1=
+function(a,b){var c=A(a[0]);return"shape"===c.ctype?D.fillshape(c,b):k};t.clip$1=function(a,b){var c=A(a[0]);return"shape"===c.ctype?D.clipshape(c,b):"list"===c.ctype?(c=t.polygon$1(a,[]),t.clip$1([c],[])):k};t.plot$1=function(a,b){return t.plot$2([a[0],null],b)};t.plot$2=function(a,b){function c(a){return"number"===a.ctype&&l._helper.isAlmostReal(a)}function d(a,c,b,h,e){n++;c=+c.value.real;e=+h.value.real;h=c*E.a-e*E.b+E.tx;c=c*E.c-e*E.d-E.ty;a=+a.value.real;e=+b.value.real;b=a*E.a-e*E.b+E.tx;a=
+a*E.c-e*E.d-E.ty;p?(y.lineTo(b,a),y.lineTo(h,c)):(y.beginPath(),y.moveTo(b,a),y.lineTo(h,c),p=!0)}function e(a,b,h,g,k){var n=c(h),q=c(g);if(.001>k)!f&&p&&(y.stroke(),p=!1);else if(n||q){var t=l.real((a.value.real+b.value.real)/2);J.setvar(B,t);var v=A(w),u=c(v);if(n&&q&&u){var Nb=h.value.real,q=v.value.real,u=g.value.real;if(n=1>Math.abs(Nb+u-2*q)/m){var x=l.real((a.value.real+t.value.real)/2);J.setvar(B,x);var x=A(w),fc=l.real((t.value.real+b.value.real)/2);J.setvar(B,fc);fc=A(w);Nb=Math.abs(Nb+
+q-2*x.value.real)/m;q=Math.abs(q+u-2*fc.value.real)/m;n=n&&1>Nb&&1>q}n?(d(a,t,h,v,k/2),d(t,b,v,g,k/2)):(e(a,t,h,v,k/2),e(t,b,v,g,k/2))}else e(a,t,h,v,k/2),e(t,b,v,g,k/2)}}var f=!1,m=.2/Kb,n=0,p=!1,q=-10,t=10,v=.1,u=1E3,w=a[0],B;if(null!==a[1]&&"variable"===a[1].ctype)B=a[1].name;else{var C=D.plotvars(w);B="#";-1!==C.indexOf("t")&&(B="t");-1!==C.indexOf("z")&&(B="z");-1!==C.indexOf("y")&&(B="y");-1!==C.indexOf("x")&&(B="x")}J.newvar(B);var E=z.drawingstate.matrix;x.handleModifs(b,{color:!0,alpha:!0,
+size:!0,dashpattern:!0,dashtype:!0,dashing:!0,lineCap:!0,lineJoin:!0,miterLimit:!0,connect:function(a){"boolean"===a.ctype&&(f=a.value)},start:function(a){"number"===a.ctype&&(q=a.value.real)},stop:function(a){"number"===a.ctype&&(t=a.value.real)},steps:function(a){"number"===a.ctype&&(u=a.value.real)}});y.strokeStyle=x.lineColor;y.lineWidth=x.lsize;var F,G,H,I,p=!1,C=l.real(14.32);J.setvar(B,C);H=A(w);if("number"!==H.ctype){if(g.isNumberVector(H).value&&2===H.value.length){p=!1;v=(t-q)/u;for(C=q;C<
+t;C+=v)J.setvar(B,l.real(C)),I=A(w),g.isNumberVector(I).value&&2===I.value.length&&(F=+I.value[0].value.real,G=+I.value[1].value.real,I=F*E.a-G*E.b+E.tx,F=F*E.c-G*E.d-E.ty,p?y.lineTo(I,F):(y.beginPath(),y.moveTo(I,F),p=!0));y.stroke();J.removevar(B)}return k}for(I=q;I<t+v;I+=v)C=l.real(I),J.setvar(B,C),H=A(w),C.value.real>q&&e(F,C,G,H,v),F=C,G=H;J.removevar(B);p&&y.stroke();return k};t.plotX$1=function(a,b){var c=a[0],d=D.plotvars(c),e="#";-1!==d.indexOf("t")&&(e="t");-1!==d.indexOf("z")&&(e="z");
+-1!==d.indexOf("y")&&(e="y");-1!==d.indexOf("x")&&(e="x");J.newvar(e);d=z.drawingstate.matrix;y.fillStyle=z.drawingstate.linecolor;y.lineWidth=1;y.lineCap=x.lineCap;y.lineJoin=x.lineJoin;y.miterLimit=x.miterLimit;for(var f=!1,g=-10;10>g;g+=.01){J.setvar(e,l.real(g));var m=A(c);if("number"===m.ctype){var n=+m.value.real,m=g*d.a-n*d.b+d.tx,n=g*d.c-n*d.d-d.ty;f?y.lineTo(m,n):(y.beginPath(),y.moveTo(m,n),f=!0)}}y.stroke();J.removevar(e);return k};D.plotvars=function(a){function b(a,c){var h={},d;for(d=
+a.length-1;0<=d;--d)h[a[d]]=a[d];for(d=c.length-1;0<=d;--d)h[c[d]]=c[d];d=[];for(var e in h)h.hasOwnProperty(e)&&d.push(h[e]);return d}function c(a,c){for(var b=0;b<a.length;b++)a[b]===c&&(a.splice(b,1),b--);return a}var d,e,f,g;if("variable"===a.ctype)return[a.name];if("infix"===a.ctype)return d=D.plotvars(a.args[0]),a=D.plotvars(a.args[1]),b(d,a);if("list"===a.ctype){f=a.value;e=[];for(g=0;g<f.length;g++)d=D.plotvars(f[g]),e=b(e,d);return e}if("function"===a.ctype){f=a.args;e=[];for(g=0;g<f.length;g++)d=
+D.plotvars(f[g]),e=b(e,d);"apply"!==a.oper&&"select"!==a.oper&&"forall"!==a.oper&&"sum"!==a.oper&&"product"!==a.oper&&"repeat"!==a.oper&&"min"!==a.oper&&"max"!==a.oper&&"sort"!==a.oper||"variable"!==a.args[1].ctype||(e=c(e,a.args[1].name));return e}return[]};t.clrscr$0=function(a,b){"undefined"!==typeof da&&"undefined"!==typeof ca&&y.clearRect(0,0,da,ca);return k};t.repaint$0=function(a,b){e();return k};t.screenbounds$0=function(a,b){var c=w.withUsage(g.realVector(z.to(0,0)),"Point"),d=w.withUsage(g.realVector(z.to(da,
+0)),"Point"),e=w.withUsage(g.realVector(z.to(da,ca)),"Point"),f=w.withUsage(g.realVector(z.to(0,ca)),"Point");return g.turnIntoCSList([c,d,e,f])};t.createimage$3=function(a,b){var c=A(a[0]),d=B(a[1]),e=B(a[2]);if("number"!==d.ctype||"number"!==e.ctype||"string"!==c.ctype)return k;var f=document.createElement("canvas");f.id=c.value;f.width=d.value.real;f.height=e.value.real;f.style.display="none";document.body.appendChild(f);Xa[c.value]=aa(f,!1);return k};t.clearimage$1=function(a,b){var c=A(a[0]);
+if("string"!==c.ctype&&"image"!==c.ctype)return k;var c=La(c),d=c.img;if("undefined"===typeof d||null===d)return k;var e=c.width,f=c.height;d.getContext("2d").clearRect(0,0,e,f);c.generation++;return k};t.canvas$4=function(a,b){var c=B(a[0]),d=B(a[1]),e=A(a[2]),f=a[3],g=D.extractPoint(c),l=D.extractPoint(d);if(!g.ok||!l.ok||"string"!==e.ctype&&"image"!==e.ctype)return k;e=La(e);if(!e||!e.img.getContext)return k;var d=e.img,m=e.width,c=e.height,n=l.x-g.x,p=l.y-g.y,q=g.x-p*c/m,t=g.y+n*c/m,p=l.x-p*c/
+m,n=l.y+n*c/m,l=z.from(g.x,g.y,1),q=z.from(q,t,1),p=z.from(p,n,1),g=l[0],t=l[1],n=q[0],v=q[1],u=p[0],w=p[1],q=m*(t-v)/((g-n)*(t-w)-(g-u)*(t-v)),m=m*(g-n)/((t-v)*(g-u)-(t-w)*(g-n)),p=-q*g-m*t,l=(c*(t-w)-c*(t-v))/((g-n)*(t-w)-(g-u)*(t-v)),n=(c*(g-u)-c*(g-n))/((t-v)*(g-u)-(t-w)*(g-n)),c=c-l*g-n*t,d=d.getContext("2d"),g=y;y=d;y.save();y.transform(q,l,m,n,p,c);e.generation++;A(f);y.restore();y=g};t.canvas$5=function(a,b){var c=B(a[0]),d=B(a[1]),e=B(a[2]),f=A(a[3]),g=a[4],c=D.extractPoint(c),l=D.extractPoint(d),
+m=D.extractPoint(e);if(!c.ok||!l.ok||!m.ok||"string"!==f.ctype&&"image"!==f.ctype)return k;f=La(f);if(!f||!f.img.getContext)return k;var e=f.img,n=f.width,d=f.height,p=z.from(c.x,c.y,1),q=z.from(l.x,l.y,1),l=z.from(m.x,m.y,1),c=p[0],m=p[1],t=q[0],v=q[1],u=l[0],w=l[1],l=((0-n)*(m-w)-0*(m-v))/((c-t)*(m-w)-(c-u)*(m-v)),n=((0-n)*(c-u)-0*(c-t))/((m-v)*(c-u)-(m-w)*(c-t)),q=0-l*c-n*m,p=((d-d)*(m-w)-(d-0)*(m-v))/((c-t)*(m-w)-(c-u)*(m-v)),t=((d-d)*(c-u)-(d-0)*(c-t))/((m-v)*(c-u)-(m-w)*(c-t)),d=d-p*c-t*m,e=
+e.getContext("2d"),c=y;y=e;y.save();y.transform(l,p,n,t,q,d);f.generation++;A(g);y.restore();y=c};t.screenresolution$0=function(a,b){return l.real(z.drawingstate.matrix.a)};t.layer$1=function(a,b){};t.imagesize$1=function(a,b){var c=La(B(a[0]));return c?g.realVector([+c.width,+c.height]):k};t.imageready$1=function(a,b){var c=La(B(a[0]));return w.bool(!(!c||!c.ready))};t.drawimage$2=function(a,b){function c(){var a=1,c=1,d=1,f=1,r=0,l=1,n=D.extractPoint(e);if(!n.ok)return k;m=La(m);if(!m)return k;
+y.save();var p;void 0!==b.angle&&(p=A(b.angle),"number"===p.ctype&&(r=p.value.real));void 0!==b.rotation&&(p=A(b.rotation),"number"===p.ctype&&(r=p.value.real));void 0!==b.scale&&(p=B(b.scale),"number"===p.ctype&&(c=a=p.value.real),g.isNumberVector(p).value&&2===p.value.length&&(a=p.value[0].value.real,c=p.value[1].value.real));void 0!==b.scalex&&(p=A(b.scalex),"number"===p.ctype&&(a=p.value.real));void 0!==b.scaley&&(p=A(b.scaley),"number"===p.ctype&&(c=p.value.real));void 0!==b.flipx&&(p=A(b.flipx),
+"boolean"===p.ctype&&p.value&&(d=-1));void 0!==b.flipy&&(p=A(b.flipy),"boolean"===p.ctype&&p.value&&(f=-1));void 0!==b.alpha&&(p=A(b.alpha),"number"===p.ctype&&(l=p.value.real));var q=z.drawingstate.matrix,Q=z.drawingstate.initialmatrix,t=m.width,v=m.height;p=n.x*q.a-n.y*q.b+q.tx;var u=n.x*q.c-n.y*q.d-q.ty,w=(n.x+1)*q.a-n.y*q.b+q.tx-p,q=(n.x+1)*q.c-n.y*q.d-q.ty-u,Ga=(n.x+1)*Q.a-n.y*Q.b+Q.tx-(n.x*Q.a-n.y*Q.b+Q.tx),Q=(n.x+1)*Q.c-n.y*Q.d-Q.ty-(n.x*Q.c-n.y*Q.d-Q.ty),n=Math.sqrt(w*w+q*q)/Math.sqrt(Ga*
+Ga+Q*Q),w=-Math.atan2(w,q)+Math.atan2(Ga,Q),q=z.drawingstate.matrix.sdet/72,a=a*q,c=c*q;1!==l&&(y.globalAlpha=l);y.translate(p,u);y.scale(a*d*n,c*f*n);y.rotate(r+w);y.translate(-p,-u);y.translate(-t/2,-v/2);a=m;a.drawTo?a.drawTo(y,p,u):y.drawImage(a.img,p,u);y.globalAlpha=1;y.restore()}function d(){var a=1,c=1,g=1,r=1,n=D.extractPoint(e),p=D.extractPoint(f),q;if(!n.ok||!p.ok)return k;m=La(m);if(!m)return k;var t=m.width,v=m.height;if(0===l)q={},q.x=n.x-(p.y-n.y),q.y=n.y+(p.x-n.x),r=v/t;else if(q=
+D.extractPoint(l),!n.ok)return k;y.save();var u;void 0!==b.alpha&&(u=A(b.alpha),"number"===u.ctype&&(a=u.value.real));void 0!==b.aspect&&(u=A(b.aspect),"number"===u.ctype&&(r=u.value.real));void 0!==b.flipx&&(u=A(b.flipx),"boolean"===u.ctype&&u.value&&(c=-1));void 0!==b.flipy&&(u=A(b.flipy),"boolean"===u.ctype&&u.value&&(g=-1));u=z.drawingstate.matrix;1!==a&&(y.globalAlpha=a);a=n.x*u.a-n.y*u.b+u.tx;n=n.x*u.c-n.y*u.d-u.ty;y.transform(p.x*u.a-p.y*u.b+u.tx-a,p.x*u.c-p.y*u.d-u.ty-n,q.x*u.a-q.y*u.b+u.tx-
+a,q.x*u.c-q.y*u.d-u.ty-n,a,n);y.scale(1/t,-1/v*r);y.translate(t/2,-v/2);y.scale(c,g);y.translate(-t/2,v/2);y.translate(0,-v);c=m;c.drawTo?c.drawTo(y,0,0):y.drawImage(c.img,0,0);y.globalAlpha=1;y.restore()}var e,f,l,m;return 2===a.length?(e=B(a[0]),m=B(a[1]),c()):3===a.length?(e=B(a[0]),f=B(a[1]),l=0,m=B(a[2]),d()):4===a.length?(e=B(a[0]),f=B(a[1]),l=B(a[2]),m=B(a[3]),d()):k};t.drawimage$3=t.drawimage$2;t.drawimage$4=t.drawimage$2;t.allimages$0=function(){var a=[];Object.keys(Xa).forEach(function(b){a.push({ctype:"string",
+value:b})});return g.turnIntoCSList(a)};t.cameravideo$0=function(a,b){function c(a){return{video:{width:a,advanced:[{width:{max:a,min:a}},{width:{ideal:a}}]},audio:!1}}var d=!0,e={};if(void 0!==b.resolution){var f=A(b.resolution);"string"===f.ctype&&"maximal"===f.value?d=!0:"number"===f.ctype?(d=!1,e=c(f.value.real)):g._helper.isNumberVecN(f,2)&&(d=!1,e=c(f.value[0].value.real),f=f.value[1].value.real,10>f||!Number.isInteger(f)?(e.video.aspectRatio=f,e.video.advanced[0].aspectRatio={min:f,max:f},
+e.video.advanced[1].aspectRatio={ideal:f}):(e.video.height=f,e.video.advanced[0].height={min:f,max:f},e.video.advanced[1].height={ideal:f}))}d&&(e=[320,640,1024,1280,1920,2560],e=e.map(function(a){return{width:{min:a}}}),e={video:{width:16E3,height:9E3,advanced:e},audio:!1});var d=null,l=navigator.mediaDevices&&navigator.mediaDevices.getUserMedia;l?d=function(a,c){navigator.mediaDevices.getUserMedia(e).then(a,c)}:(l=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||
+navigator.msGetUserMedia)&&(d=function(a,c){l.call(navigator,e,a,c)});if(!d)return console.warn("getUserMedia call not supported"),k;var m=document.createElement("video");m.autoplay=!0;f=aa(m,!0);console.log("Opening stream.");d(function(a){a=window.URL.createObjectURL(a);m.src=a;m.addEventListener("loadeddata",I)},function(a){console.error("Could not get user video:",String(a),a)});return f};t.playvideo$1=function(a,b){var c=La(B(a[0]));c.live&&c.img.play&&c.img.play();return k};t.pausevideo$1=function(a,
+b){var c=La(B(a[0]));c.live&&c.img.pause&&c.img.pause();return k};var Db;t.imagergba$3=function(a,b){var c=La(B(a[0])),d=B(a[1]),e=B(a[2]);if(!c||"number"!==d.ctype||"number"!==e.ctype||!c.ready)return k;d=Math.round(d.value.real);e=Math.round(e.value.real);if(!Fa(d)||!Fa(e))return k;c=rb(c,d,e,1,1);return g.realVector([255*c[0],255*c[1],255*c[2],c[3]])};t.imagergb$3=t.imagergba$3;t.imagergba$4=function(a,b){var c=La(B(a[2]));if(!c||!c.ready)return k;var d=c.width,e=c.height,f=M(a[0]),l=M(a[1]),m=
+M(g.realVector([0,e,1])),d=M(g.realVector([d,e,1]));if(f===k||l===k||n===k)return k;var n=g.ii,e=g.jj,m=D.basismap(m,d,n,e),f=D.basismap(f,l,e,n),n=M(a[3]);var p=D.extractPoint(w.mult(m,w.mult(g.adjoint3(f),n)));if(p.ok){var l=c.width,m=c.height,n=!0,q=!1;void 0!==b.interpolate&&(f=A(b.interpolate),"boolean"===f.ctype&&(n=f.value));void 0!==b.repeat&&(f=A(b.repeat),"boolean"===f.ctype&&(q=f.value));n&&(p.x-=.5,p.y-=.5);q&&(p.x=(p.x%l+l)%l,p.y=(p.y%m+m)%m);d=Math.floor(p.x);e=Math.floor(p.y);if(Fa(d)&&
+Fa(e)){f=[0,0,0,0];if(n){var n=p.x-d,p=p.y-e,t=rb(c,d,e,2,2);if(q){if(d===l-1||e===m-1)var q=rb(c,(d+1)%l,e,1,1),u=rb(c,d,(e+1)%m,1,1),c=rb(c,(d+1)%l,(e+1)%m,1,1),t=t.slice(0,4).concat(q,u,c)}else{if(-1===d||d===l-1)n=Math.round(n);if(-1===e||e===m-1)p=Math.round(p)}for(c=0;4>c;c++)f[c]=(1-p)*((1-n)*t[c]+n*t[c+4])+p*((1-n)*t[c+8]+n*t[c+12])}else f=rb(c,d,e,1,1);c=g.realVector(f)}else c=k}else c=k;return c};t.imagergb$4=function(a,b){var c=t.imagergba$4(a,b);return c===k?k:g.turnIntoCSList(c.value.slice(0,
+3))};"use strict";var re=[{key:[":"],field:["."],deg:["\u00b0"],take:["_"]},{functionCall:!0},{rassoc:!0,pow:["^"],sqrt:["\u221a"]},{mul:["*","\u2062","\u22c5","\u00b7"],cross:["\u00d7"],div:["/","\u00f7","\u2215","\u2236"]},{add:["+"],sub:["-","\u2212"],neg:["!","\u00ac"]},{seq:[".."]},{eq:["==","\u225f"],ne:["!=","<>","\u2260"],lt:["<"],gt:[">"],le:["<=","\u2264","\u2266"],ge:[">=","\u2265","\u2267"],aeq:["~=","\u2248"],ane:["~!=","\u2249"],alt:["~<","\u2a89"],agt:["~>","\u2a8a"],ale:["~<=","\u2a85"],
+age:["~>=","\u2a86"],"in":["\u2208"],nin:["\u2209"]},{and:["&","\u2227"],or:["%","\u2228"]},{rassoc:!0,prepend:["<:"]},{concat:["++","\u222a"],remove:["--","\u2216"],common:["~~","\u2229"],append:[":>"]},{rassoc:!0,assign:["="],define:[":="],undefine:[":=_"],bdefine:["::="]},{seq:[";"]},{modif:["->","\u2192"]},{rassoc:!0,list:[","]}],se=["+","-"],te=["!","\u221a"],ue=["\u00b0",":=_"],ve=[";",","],Cc=[],xa={},cd;(function(){var a=0;re.forEach(function(b){a+=2;var c=!!b.rassoc;b.functionCall&&(cd=a);
+for(var d in b){var e=b[d];if("boolean"!==typeof e)for(var f={name:d,sym:e[0],symbols:e,rassoc:c,precedence:a,prefix:!1,postfix:!1,infix:!0,bare:!1},g=0;g<e.length;++g){var l=e[g];if(xa.hasOwnProperty(l))throw Error("Duplicate operator: "+l);xa[l]=f;Cc.push(l)}}});se.forEach(function(a){xa[a].prefix=!0});te.forEach(function(a){xa[a].prefix=!0;xa[a].infix=!1});ue.forEach(function(a){xa[a].postfix=!0;xa[a].infix=!1});ve.forEach(function(a){xa[a].prefix=!0;xa[a].postfix=!0;xa[a].infix=!0;xa[a].bare=
+!0})})();Cc.sort(function(a,b){return b.length-a.length});var we="(?:[0-9](?: [0-9])*(?: \\.(?! \\.)(?: [0-9])*)?|\\.(?: [0-9])+)(?: [Ee](?: [+-])?(?: [0-9])+)?".replace(/ /g,"[ \t]*"),xe="(?:[\u207a\u207b] )?[\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079](?: [\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079])*".replace(/ /g,"[ \t]*"),ye="(?:[\u208a\u208b] )?[\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089](?: [\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089])*".replace(/ /g,
+"[ \t]*"),Dc=function(a,b,c){var d,e,f=0,g="(?:[",l=b.length;for(d=0;d<l;++d)e=b.charCodeAt(d),55296<=e?(g+="]|"+b.charAt(d)+"[",f=56320):(g+=String.fromCharCode(e=f=a[e-32]+f),f+=a[b.charCodeAt(++d)-32],f!==e&&(f!==e+1&&(g+="-"),g+=String.fromCharCode(f)));return g+"]|["+c+"][\udc00-\udfff])"}([2,0,106,3,4,1,6,5,7,11,17,8,12,21,9,22,30,10,15,24,25,16,13,42,46,14,18,19,29,37,27,28,35,26,32,36,40,43,47,53,20,48,50,56,33,34,39,51,52,55,63,64,65,68,85,23,31,38,45,49,105,59,66,69,72,88,102,114,117,128,
+157,191,41,44,54,60,67,70,71,73,74,75,76,80,81,82,83,84,86,87,89,93,94,98,99,107,108,116,122,130,132,134,138,160,165,185,195,196,255,268,277,310,332,339,362,365,390,449,457,470,512,513,541,568,582,619,673,726,768,820,921,991,1164,2684,6581,8453,11171,20949],"T4(4I!)!'!&/ 0 \u0096')2$+! !\u0083$ %## !(! ! ; u \u0086.\u0088 =#!+YoA& 87C% } !5%+%) #!*! <0a,!4B1%'!&-'!1!$!33`HsG$!;!+.52'(#%#- & !$#$!*!9% 2%H''%#- & % % %B# !H *+ - & % $$!;!5%3!,(#%#- & % $$!X% 5!:! '$ #$% ! %$%$ $)W!G( / 2$!> &%C( / . $$!L! %5%;( D#!*!* 4'&*$W + !#&]F %6&]% !#% !#!(# & ! !#% # %1!#$ !/#L!S( @?$\u00817-!*''#$!$%+ ',6!:= !&!#7 \u0090 ##& ! ##D ##B ##& ! ##9 K ##^Y2*V#'$\u009d#5 4&p((+, #2*2*2, 5OC!'!Uy.D !&_)0J<#$,E'4Q/1Pv!|8:&K<9%)E>@7 )@\u0080# #$%1gT\u008e#'#=#'#( ! ! ! 0#P & !$ &$##'',& &d!9!*,b!'!#. !$$(! ! ! # 1##&$'!G%\u00a58 8 \u0084(#$%6= !&!#Q+!*/1& & & & & & & &t!\u0097%E$&%'V( z #&D${:Aj2\u0099\u00a6q\u00a9E\u00a4UZ#\u008d$2)%-8*0#_J+#b#M#(S1 # /0O2[R'$! !6>)/A?+8<!*$ .)$ D3 (-/$!$[ !$%#$#! !4 #1+ 6'#'#'1& & 7 .)c0\u00a86/'I\u00a7\u0093#\\N&6$&! . , $ ! % % \u007fM\u0092;R#Gh)d$ \u0085=4(4,a$'#'#'# \ud800!) 4 : % 9#6@\u0082\u0094?$IIX*5 ((=)<#@'(\ud801!f~N.Of\u008f1-)(\ud802!'#! E %$!#/)/10^: %)-)4nQ(%T!5# AZ?$?C( >?G)-):9*\ud803!`KJ9J\ud804#PriL3>@7M$!6F2#/! !C* 3V& ! # 9 .+8N(#%#- & % $$!;!6$\ud805eF-% !\u008987#=F-!k7x4\ud806\u0087RB!\u0095K\ud808!\u00a2\ud809e\u008a\ud80d!8\ud811!\u009c\ud81a!\u009b+0c<;F*#BH&:\ud81b\u00a0U,!l,\ud82c!%\ud82f!\"&,$++.\ud835!w m %#!#%## ) ! & S ##( & > # $ !$& \u0091#3 3 0 3 0 3 0 3 0 3 (\ud83a!\u008b\ud83b\u0098# A % !#! . # ! !(!'! ! ! % !#! ! ! ! ! % !## & # # ! . 5& $ 5\ud869!\u009f7\u008c\ud86d!\u00a1,g\ud86e!<#\u00a3\ud873!\u009e\ud87e!\u009a",
+"\ud80c\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872"),ze=("#(?: [1-9])?|(?:'|"+Dc+")(?: (?:[0-9']|"+Dc+"))*").replace(/ /g,"[ \t]*"),$c=["([ \t\n]+)|(//.*)|(/\\*)","("+we+")","("+Cc.map(Zc).join("|")+")","("+"[](){}||".split("").map(Zc).join("|")+")","("+ye+")","("+xe+")","("+ze+")",'("[^"]*")|($)'].join("|"),Ae=new RegExp("[ \t]*".replace(/\*$/,"+"),"g"),Ec="ANY WS COMMENT START_COMMENT NUM OP BRA SUB SUP ID STR EOF".split(" ");(function(){var a=(new RegExp($c,"g")).exec("");if(a.hasOwnProperty(Ec.length))throw Error("RE has more groups than expected");
+if(!a.hasOwnProperty(Ec.length-1))throw Error("RE has fewer groups than expected");})();kb.prototype.advanceBy=function(a){this.advanceTo(this.pos+a)};kb.prototype.advanceTo=function(a){for(this.pos=a;this.bols[0]<=a;)this.bol=this.bols.shift(),this.line++};kb.prototype.curPos=function(){return{row:this.line,col:this.pos-this.bol,pos:this.pos}};kb.prototype.nextInternal=function(){var a=this.re.exec(this.input);if(a.index!==this.pos)throw ha("Invalid token",this.curPos(),this.input.substring(this.pos,
+a.index));var b=this.curPos();this.advanceBy(a[0].length);var c=this.curPos(),d;for(d=1;null==a[d];++d);return{start:b,end:c,raw:a[0],text:a[0].replace(Ae,""),toktype:Ec[d]}};kb.prototype.next=function(){var a;do if(a=this.nextInternal(),"START_COMMENT"===a.toktype){var b=/\*\/|\/\*/g;b.lastIndex=a.start.pos+2;for(var c=1,d;0<c;)if(d=b.exec(this.input))"/*"===d[0]?++c:--c;else throw ha("Unterminated comment",a.start,a.text);this.re.lastIndex=b.lastIndex;this.advanceTo(b.lastIndex);a.end=this.curPos();
+a.raw=this.input.substring(a.start.pos,a.end.pos);a.text=a.raw;a.toktype="COMMENT"}while("WS"===a.toktype||"COMMENT"===a.toktype);return a};var Be={ctype:"void"};Eb.prototype.postprocess=function(a){if(null===a)return Be;if(a){if("infix"===a.ctype)if(":="===a.oper){var b=a.args[0];if("function"===b.ctype)b.args.forEach(function(c){if(null===c||"variable"!==c.ctype)throw ha("Function argument must be an identifier",c.start||a.start);});else if("variable"!==b.ctype)throw ha(a.oper+" can only be used to define functions or variables",
+a.start);}else if(","===a.oper)throw ha("comma may only be used to delimit list elements",a.start);a.args&&(a.args=a.args.map(this.postprocess,this));if(a.modifs)for(var c in a.modifs)a.modifs[c]=this.postprocess(a.modifs[c]);if("paren"===a.ctype)return a.args[0];if("infix"===a.ctype){if("."===a.oper){if(!a.args[1]||"variable"!==a.args[1].ctype)throw ha("Field name must be identifier",a.start,a.text);a.ctype="field";a.obj=a.args[0];a.key=a.args[1].name;delete a.args}this.infixmap&&(a.impl=this.infixmap[a.oper])}else"variable"===
+a.ctype?this.usedVariables[a.name]=!0:"function"===a.ctype&&(this.usedFunctions[a.oper]=!0)}if("infix"===a.ctype)return{ctype:"infix",oper:String(a.oper),args:[a.args[0],a.args[1]],impl:a.impl};if("variable"===a.ctype)return{ctype:"variable",name:String(a.name)};if("number"===a.ctype)return{ctype:"number",value:{real:+a.value.real,imag:+a.value.imag}};if("string"===a.ctype)return{ctype:"string",value:String(a.value)};if("list"===a.ctype)return{ctype:"list",value:a.value};if("function"===a.ctype)return{ctype:"function",
+oper:String(a.oper),args:a.args,modifs:a.modifs};if("field"===a.ctype)return{ctype:"field",obj:a.obj,key:String(a.key)};throw Error("Unsupported AST node of type "+a.ctype);};Eb.prototype.parse=function(a){try{var b=bd(new kb(a));if("EOF"!==b.closedBy.toktype)throw ha("Closing bracket never opened.",b.closedBy.start,b.closedBy.text);return this.postprocess(b.expr)}catch(c){return c.ctype="error",c}};"undefined"!==typeof process&&"undefined"!==typeof module&&"undefined"!==typeof module.exports&&"undefined"===
+typeof window&&(module.exports.Parser=Eb,module.exports.Tokenizer=kb,module.exports.unicodeLetters=Dc,module.exports.parse=function(a){return(new Eb).parse(a)});var Nc={},Fc;Fc=[0,0,0,0,0,0,0,0,0,0,0,0];t.playsin$1=function(a,b){var c=B(a[0]),d=0;if("number"===c.ctype){var e;void 0!==b.line&&(e=A(b.line),"number"===e.ctype&&(d=Math.floor(e.value.real),0>d&&(d=0),10<d&&(d=10)));c=c.value.real;0!==Fc[d]&&Fc[d].set({freq:c})}return k};var P={printArr:function(a){for(var b=a.value.length,c=[],d=[],e=
+!1,f=0;f<b;f++)c[f]=a.value[f].value.real,d[f]=a.value[f].value.imag,0!==d[f]&&(e=!0);console.log(c);e&&console.log(d)},zero:function(a){for(var b=[],c=l.real(0),d=0;d<a.value.real;d++)b[d]=c;return g.turnIntoCSList(b)},number:function(a,b){var c=P.zero(b);c.value[0]=a;return c},variable:function(a,b){var c=P.zero(b);c.value[0]=a;c.value[1]=l.real(1);return c},add:function(a,b){return g.add(a,b)},sub:function(a,b){return g.sub(a,b)},mult:function(a,b){if(a.value.length!==b.value.length)return console.error("dims don't fit return nada"),
+k;for(var c=a.value.length,d=P.zero(l.real(c)),e=l.real(0),f=0;f<c;f++){for(var g=0;g<=f;g++)e=l.add(e,l.mult(a.value[g],b.value[f-g]));d.value[f]=e;e=l.real(0)}return d},pow:function(a,b){if(0>b.value.real||b.value.real!==Math.floor(b.value.real))return P.root(a,b);for(var c=a,d=1;d<b.value.real;d++)c=P.mult(c,a);return c},root:function(a,b){var c=l.real(0),d=l.real(1),e=l.add(d,b),f=a.value.length,g=P.zero(l.real(f));g.value[0]=l.pow(a.value[0],b);for(var k=c,m,n,p=1;p<f;p++){n=l.real(p);for(var q=
+1;q<=p;q++)m=l.mult(e,l.real(q)),m=l.div(m,n),m=l.sub(m,d),m=l.mult(m,a.value[q]),m=l.mult(m,g.value[p-q]),k=l.add(k,m);k=l.div(k,a.value[0]);g.value[p]=k;k=c}return g},findFirstNoneZero:function(a,b,c){for(var d=Infinity,e=Infinity,f=c;f<a.value.length;f++)if(1E-12<l.abs2(a.value[f]).value.real){d=f;break}for(a=c;a<b.value.length;a++)if(1E-12<l.abs2(b.value[a]).value.real){e=a;break}return[d,e]},div:function(a,b){if(a.value.length!==b.value.length)return console.log("dims don't fit - return nada"),
+k;for(var c=a.value.length,d=l.real(0),e=P.zero(l.real(c)),f=d,g,m=0;m<c;m++){g=P.findFirstNoneZero(a,b,m);m<g[0]&&g[0]===g[1]&&Infinity!==g[0]&&(a.value.splice(m,g[0]),b.value.splice(m,g[0]),e.value.splice(m,g[0]),c-=g[0]);g=a.value[m];for(var n=0;n<m;n++)f=l.add(f,l.mult(e.value[n],b.value[m-n]));g=l.sub(g,f);g=l.div(g,b.value[0]);e.value[m]=g;f=d}return e},exp:function(a){var b=l.real(0),c=a.value.length,d=P.zero(l.real(c)),e=b,f;d.value[0]=l.exp(a.value[0]);for(var g=1;g<c;g++){for(var k=1;k<=
+g;k++)f=l.mult(l.real(k),a.value[k]),f=l.mult(f,d.value[g-k]),e=l.add(e,f);d.value[g]=l.div(e,l.real(g));e=b}return d},log:function(a){var b=l.real(0),c=a.value.length,d=P.zero(l.real(c));d.value[0]=l.log(a.value[0]);for(var e=b,f,g,k=1;k<c;k++){f=a.value[k];for(var m=1;m<k;m++)g=l.mult(l.real(m),d.value[m]),g=l.mult(g,a.value[k-m]),e=l.add(e,g);e=l.div(e,l.real(k));f=l.sub(f,e);f=l.div(f,a.value[0]);d.value[k]=f;e=b}return d},sincos:function(a){var b=l.real(0),c=a.value.length,d=P.zero(l.real(c)),
+e=P.zero(l.real(c));d.value[0]=l.sin(a.value[0]);e.value[0]=l.cos(a.value[0]);for(var f=b,g=b,k,m,n,p=1;p<c;p++){n=l.real(p);for(var q=1;q<=p;q++)m=l.mult(l.real(q),a.value[q]),k=l.mult(m,e.value[p-q]),m=l.mult(m,d.value[p-q]),g=l.add(g,k),f=l.add(f,m);g=l.div(g,n);f=l.div(f,l.neg(n));d.value[p]=g;e.value[p]=f;f=g=b}P.sinsave=d;P.cossave=e;return[d,e]},sin:function(a){return P.sincos(a)[0]},cos:function(a){return P.sincos(a)[1]},faculty:function(a){var b=[];b[0]=l.real(1);for(var c=1,d=1;d<=a.value.real;d++)c*=
+d,b[d]=l.real(c);return b=g.turnIntoCSList(b)},diff:function(a,b,c,d){var e;if("variable"===a.ctype)e=a.name!==b?P.number(A(a),d):P.variable(c,d);else if("number"===a.ctype)e=P.number(a,d);else{if("infix"===a.ctype){if("*"===a.oper)return P.mult(P.diff(a.args[0],b,c,d),P.diff(a.args[1],b,c,d));if("^"===a.oper)return P.pow(P.diff(a.args[0],b,c,d),P.diff(a.args[1],b,c,d).value[0]);if("/"===a.oper)return P.div(P.diff(a.args[0],b,c,d),P.diff(a.args[1],b,c,d));if("+"===a.oper)return P.add(P.diff(a.args[0],
+b,c,d),P.diff(a.args[1],b,c,d));if("-"===a.oper)return P.sub(P.diff(a.args[0],b,c,d),P.diff(a.args[1],b,c,d));console.log("infix not found",a.oper);return k}if("function"===a.ctype){if("exp$1"===a.oper)return P.exp(P.diff(a.args[0],b,c,d));if("log$1"===a.oper)return P.log(P.diff(a.args[0],b,c,d));if("sin$1"===a.oper)return P.sin(P.diff(a.args[0],b,c,d));if("cos$1"===a.oper)return P.cos(P.diff(a.args[0],b,c,d))}else return console.log("ctype not found",a.ctype),k}return e},adevaluate:function(a,b,
+c,d){a=P.diff(a,b,c,d);d=P.faculty(d);for(b=2;b<a.value.length;b++)a.value[b]=l.mult(a.value[b],d.value[b]);return a},autodiff:function(a,b,c,d){for(var e=[],f=c.value.length,l,k=0;k<f;k++)l=P.adevaluate(a,b,c.value[k],d),e[k]=l;return e=g.turnIntoCSList(e)}},x={handleModifs:function(a,b){x.dashing&&x.unSetDash();x.colorraw=null;x.fillcolorraw=null;x.fillrule="nonzero";x.size=null;0>=x.psize&&(x.psize=0);0>=x.lsize&&(x.lsize=0);x.overhang=1;x.dashing=!1;x.isArrow=!1;x.arrowSides="==>";x.arrowposition=
+1;x.headlen=10;x.arrowShape=x.arrowShapes.line;x.alpha=z.drawingstate.alpha;x.fillalpha=0;x.bold="";x.italics="";x.family="sans-serif";x.align=0;x.xOffset=0;x.yOffset=0;x.lineCap="round";x.lineJoin="round";x.miterLimit=10;var c,d;for(c in a){var e=a[c];e&&((d=b[c])?(!0===d&&(d=x.modifHandlers[c]),d(A(e))):console.log("Modifier not supported: "+c))}null!==x.size?x.psize=x.lsize=x.size:(x.psize=z.drawingstate.pointsize,x.lsize=z.drawingstate.linesize);x.dashing&&x.dashing(x.lsize);null!==x.colorraw?
+x.pointColor=x.lineColor=x.textColor=x.makeColor(x.colorraw):1===x.alpha?(x.pointColor=z.drawingstate.pointcolor,x.lineColor=z.drawingstate.linecolor,x.textColor=z.drawingstate.textcolor):(x.pointColor=x.makeColor(z.drawingstate.pointcolorraw),x.lineColor=x.makeColor(z.drawingstate.linecolorraw),x.textColor=x.makeColor(z.drawingstate.textcolorraw));x.black=1===x.alpha?"rgb(0,0,0)":"rgba(0,0,0,"+x.alpha+")";x.fillColor=x.fillcolorraw&&0<x.fillalpha?x.makeColor(x.fillcolorraw,x.fillalpha):null},modifHandlers:{size:function(a){"number"===
+a.ctype&&(x.size=a.value.real,0>x.size&&(x.size=0),1E3<x.size&&(x.size=1E3))},color:function(a){g.isNumberVector(a).value&&3===a.value.length&&(x.colorraw=[a.value[0].value.real,a.value[1].value.real,a.value[2].value.real])},fillcolor:function(a){g.isNumberVector(a).value&&3===a.value.length&&(x.fillcolorraw=[a.value[0].value.real,a.value[1].value.real,a.value[2].value.real])},alpha:function(a){"number"===a.ctype&&(x.alpha=a.value.real)},fillalpha:function(a){"number"===a.ctype&&(x.fillalpha=a.value.real)},
+dashpattern:function(a){if("list"===a.ctype){for(var b=[],c=0,d=0;c<a.value.length;c++)"number"===a.value[c].ctype&&(b[d++]=a.value[c].value.real);x.dashing=x.setDash.bind(null,b)}},dashtype:function(a){if("number"===a.ctype)a=Math.floor(a.value.real);else if("string"===a.ctype)a=a.value;else return;if(a=x.dashTypes[a])x.dashing=x.setDash.bind(null,a)},dashing:function(a){"number"===a.ctype&&(a=Math.floor(a.value.real),x.dashing=x.setDash.bind(null,[2*a,a]))},overhang:function(a){"number"===a.ctype&&
+(x.overhang=x.overhang*a.value.real+(1-x.overhang)*(1-a.value.real))},arrow:function(a){"boolean"===a.ctype?x.isArrow=a.value:console.error("arrow needs to be of type boolean")},arrowshape:function(a){"string"!==a.ctype?console.error("arrowshape needs to be of type string"):x.arrowShapes.hasOwnProperty(a.value)?(x.arrowShape=x.arrowShapes[a.value],x.isArrow=!0,x.arrowShape.deprecated&&(console.log("arrowshape "+a.value+" is deprecated, use "+x.arrowShape.deprecated+" instead."),x.arrowShape.deprecated=
+null)):(a=Object.keys(x.arrowShapes),a.sort(),a=a.join(", "),console.error("arrowshape needs to be one of "+a))},arrowsides:function(a){"string"!==a.ctype?console.error("arrowsides is not of type string"):"==>"!==a.value&&"<==>"!==a.value&&"<=="!==a.value?console.error("arrowsides is unknows"):(x.arrowSides=a.value,x.isArrow=!0)},arrowposition:function(a){"number"!==a.ctype?console.error("arrowposition is not of type number"):0>a.value.real?console.error("arrowposition has to be positive"):1<a.value.real?
+x.overhang=x.overhang*a.value.real+(1-x.overhang)*(1-a.value.real):(x.arrowposition=a.value.real,x.isArrow=!0)},arrowsize:function(a){"number"!==a.ctype?console.error("arrowsize is not of type number"):0>a.value.real?console.error("arrowsize has to be positive"):x.headlen*=a.value.real},bold:function(a){"boolean"===a.ctype&&a.value&&(x.bold="bold ")},italics:function(a){"boolean"===a.ctype&&a.value&&(x.italics="italic ")},family:function(a){"string"===a.ctype&&(x.family=a.value)},align:function(a){"string"===
+a.ctype&&(a=a.value,"left"===a&&(x.align=0),"right"===a&&(x.align=1),"mid"===a&&(x.align=.5))},x_offset:function(a){"number"===a.ctype&&(x.xOffset=a.value.real)},y_offset:function(a){"number"===a.ctype&&(x.yOffset=a.value.real)},offset:function(a){"list"===a.ctype&&2===a.value.length&&"number"===a.value[0].ctype&&"number"===a.value[1].ctype&&(x.xOffset=a.value[0].value.real,x.yOffset=a.value[1].value.real)},lineCap:function(a){"string"!==a.ctype||"round"!==a.value&&"square"!==a.value&&"butt"!==a.value||
+(x.lineCap=a.value)},lineJoin:function(a){"string"!==a.ctype||"round"!==a.value&&"bevel"!==a.value&&"miter"!==a.value||(x.lineJoin=a.value)},fillrule:function(a){"string"!==a.ctype||"nonzero"!==a.value&&"evenodd"!==a.value||(x.fillrule=a.value)},miterLimit:function(a){"number"===a.ctype&&0<a.value.real&&(x.miterLimit=Math.round(a.value.real))}},lineModifs:{size:!0,color:!0,alpha:!0,dashpattern:!0,dashtype:!0,dashing:!0,overhang:!0,arrow:!0,arrowshape:!0,arrowsides:!0,arrowposition:!0,arrowsize:!0,
+lineCap:!0,lineJoin:!0,miterLimit:!0},pointModifs:{size:!0,color:!0,alpha:!0}};x.pointAndLineModifs=x.lineModifs;x.conicModifs={size:!0,color:!0,alpha:!0,fillcolor:!0,fillrule:!0,fillalpha:!0,lineCap:!0,lineJoin:!0,miterLimit:!0};x.textModifs={size:!0,color:!0,alpha:!0,bold:!0,italics:!0,family:!0,align:!0,x_offset:!0,y_offset:!0,offset:!0};x.makeColor=function(a,b){void 0===b&&(b=x.alpha);return"rgba("+Math.floor(255*a[0])+","+Math.floor(255*a[1])+","+Math.floor(255*a[2])+","+b+")"};x.preDrawCurve=
+function(){y.lineWidth=x.lsize;y.lineCap=x.lineCap;y.lineJoin=x.lineJoin;y.mozFillRule=x.fillrule;y.fillrule=x.fillrule;y.miterLimit=x.miterLimit;y.strokeStyle=x.lineColor};x.arrowShapes={"default":{close:!1,fill:!1,ratio:1,deprecated:"line"},line:{close:!1,fill:!1,ratio:1},empty:{close:!0,fill:!1,ratio:1},hollow:{close:!0,fill:!1,ratio:1,deprecated:"empty"},full:{close:!0,fill:!0,ratio:1},jet:{close:!0,fill:!0,ratio:1.5},delta:{close:!0,fill:!0,ratio:1.5,deprecated:"jet"}};x.clipSegment=function(a,
+b){var c=b.x-a.x,d=b.y-a.y,e=x.clipLineCore(-d,c,a.x*b.y-b.x*a.y);if(2!==e.length)return[];var f=e[0],e=e[1],g=1/(c*c+d*d),l=((f.x-a.x)*c+(f.y-a.y)*d)*g,c=((e.x-a.x)*c+(e.y-a.y)*d)*g;0>l&&(f=a);1<l&&(f=b);0>c&&(e=a);1<c&&(e=b);return f===e?[]:[f,e]};x.drawsegcore=function(a,b){function c(a,b,c,h){var d=a-h*q+.5*t,e=b-h*t-.5*q,f=a-h*q-.5*t;h=b-h*t+.5*q;y.beginPath();x.arrowShape.fill&&(y.lineWidth=x.lsize/2);y.moveTo(d,e);y.lineTo(a,b);y.lineTo(f,h);x.arrowShape.close&&(y.fillStyle=x.lineColor,y.lineTo(a-
+c*q,b-c*t),y.closePath(),x.arrowShape.fill&&y.fill());y.stroke()}var d=z.drawingstate.matrix,e=a.x*d.a-a.y*d.b+d.tx,f=a.x*d.c-a.y*d.d-d.ty,g=b.x*d.a-b.y*d.b+d.tx,l=b.x*d.c-b.y*d.d-d.ty,k=x.overhang,m=1-k,d=k*e+m*g,n=k*f+m*l,p=k*g+m*e,k=k*l+m*f;if(0>d||d>da||0>n||n>ca||0>p||p>da||0>k||k>ca){k=x.clipSegment({x:d,y:n},{x:p,y:k});if(2!==k.length||.01>x.lsize)return;d=k[0].x;n=k[0].y;p=k[1].x;k=k[1].y}x.preDrawCurve();if(!x.isArrow||e===f&&g===l).01>x.lsize||(y.beginPath(),y.moveTo(d,n),y.lineTo(p,k),
+y.stroke());else{var e=g-e,f=l-f,g=x.headlen/Math.sqrt(e*e+f*f),q=e*g,t=f*g,l=x.arrowposition,m=1-l,f=l*d+m*p,e=l*n+m*k,g=l*p+m*d,l=l*k+m*n,m=x.arrowSides;y.beginPath();x.arrowShape.close?("<==>"===m||"<=="===m?(1>x.arrowposition&&(y.moveTo(d,n),y.lineTo(f,e)),y.moveTo(f+q,e+t)):y.moveTo(d,n),"==>"===m||"<==>"===m?(y.lineTo(g-q,l-t),1>x.arrowposition&&(y.moveTo(g,l),y.lineTo(p,k))):y.lineTo(p,k)):(y.moveTo(d,n),y.lineTo(p,k));y.stroke();"==>"!==m&&"<==>"!==m||c(g,l,1,x.arrowShape.ratio);"<=="!==m&&
+"<==>"!==m||c(f,e,-1,-x.arrowShape.ratio)}};x.drawpoint=function(a){var b=z.drawingstate.matrix,c=a.x*b.a-a.y*b.b+b.tx;a=a.x*b.c-a.y*b.d-b.ty;y.lineWidth=.3*x.psize;y.beginPath();y.arc(c,a,x.psize,0,2*Math.PI);y.fillStyle=x.pointColor;y.fill();y.beginPath();y.arc(c,a,1.15*x.psize,0,2*Math.PI);y.fillStyle=x.black;y.strokeStyle=x.black;y.stroke()};x.clipLineCore=function(a,b,c){var d=Math.SQRT1_2*x.lsize,e=0-d,f=da+d,g=0-d,d=ca+d,l=0>e*a+g*b+c,k=0>f*a+g*b+c,m=0>e*a+d*b+c,n=0>f*a+d*b+c,p=[];l!==k&&p.push({x:(-c-
+b*g)/a,y:g});k!==n&&p.push({x:f,y:(-c-a*f)/b});m!==n&&p.push({x:(-c-b*d)/a,y:d});l!==m&&p.push({x:e,y:(-c-a*e)/b});return p};x.clipLine=function(a){a=g.normalizeMax(g.productVM(a,z.toMat()));return x.clipLineCore(a.value[0].value.real,a.value[1].value.real,a.value[2].value.real)};x.drawline=function(a){g._helper.isAlmostReal(a)&&(a=x.clipLine(a),2===a.length&&.01<=x.lsize&&(x.preDrawCurve(),y.beginPath(),y.moveTo(a[0].x,a[0].y),y.lineTo(a[1].x,a[1].y),y.stroke()))};x.drawRaySegment=function(a,b){var c=
+D.extractPoint(a),d=D.extractPoint(b);if(c.ok&&d.ok){var e=c.x-d.x,f=c.y-d.y,g=25E3/z.drawingstate.matrix.sdet/Math.sqrt(e*e+f*f),e=e*g,f=f*g;x.drawsegcore(c,{x:c.x+e,y:c.y+f});x.drawsegcore(d,{x:d.x-e,y:d.y-f})}};x.dashTypes={solid:[],dashed:[10,10],tightdash:[10,4],dotted:[1,3],dashdot:[10,5,1,5],"dashvalue.solid":[],"dashvalue.dashed":[10,10],"dashvalue.tightdash":[10,4],"dashvalue.dotted":[1,3],"dashvalue.dashdot":[10,5,1,5],0:[],1:[10,10],2:[10,4],3:[1,3],4:[10,5,1,5]};x.setDash=function(a,b){var c=
+Math.sqrt(b);a=a.slice();for(var d=0;d<a.length;d++)a[d]*=c;y.webkitLineDash=a;y.setLineDash(a);y.mozDash=a};x.unSetDash=function(){y.webkitLineDash=[];y.setLineDash([]);y.mozDash=[]};dd.prototype={set fillStyle(a){var b=this;Rb(a,function(a,d,e,f){b._fill="#"+lb(a.toString(16),2)+lb(d.toString(16),2)+lb(e.toString(16),2);b._fillOpacity=255===f?null:f})},set strokeStyle(a){var b=this;Rb(a,function(a,d,e,f){b._stroke="#"+lb(a.toString(16),2)+lb(d.toString(16),2)+lb(e.toString(16),2);b._strokeOpacity=
+255===f?null:f})},clearRect:function(){},beginPath:function(){this._path=[]},_pathcmd:function(){this._path.push.apply(this._path,arguments)},closePath:function(){this._pathcmd("Z")},moveTo:function(a,b){this._pathcmd("M",a,b)},lineTo:function(a,b){this._pathcmd("L",a,b)},bezierCurveTo:function(a,b,c,d,e,f){this._pathcmd("C",a,b,c,d,e,f)},quadraticCurveTo:function(a,b,c,d){this._pathcmd("Q",a,b,c,d)},arc:function(a,b,c,d,e,f){var g=c*Math.cos(d)+a,l=c*Math.sin(d)+b,k=c*Math.cos(e)+a,m=c*Math.sin(e)+
+b;e=f?d-e:e-d;e>=2*Math.PI?this._pathcmd(this._path.length?"L":"M",g,l,"A",c,c,0,0,f?1:0,a-c*Math.cos(d),b-c*Math.sin(d),"A",c,c,0,0,f?1:0,g,l):this._pathcmd(this._path.length?"L":"M",g,l,"A",c,c,0,e>Math.PI?1:0,f?1:0,k,m)},rect:function(a,b,c,d){this._pathcmd("M",a,b,"h",c,"v",d,"h",-c,"z")},_cmd:function(a){1!==this.globalAlpha?(this._body.push('<g opacity="'+this.globalAlpha+'">'),this._body.push(a),this._body.push("</g>")):this._body.push(a)},_attrs:function(a){var b="",c;for(c in a)null!==a[c]&&
+(b+=" "+c+'="'+a[c]+'"');return b},fill:function(){this._cmd("<path"+this._attrs({d:this._path.join(" "),fill:this._fill,"fill-opacity":this._fillOpacity})+"/>")},stroke:function(){this._cmd("<path"+this._attrs({d:this._path.join(" "),stroke:this._stroke,"stroke-opacity":this._strokeOpacity,"stroke-width":this.lineWidth,"stroke-linecap":this.lineCap,"stroke-linejoin":this.lineJoin,"stroke-miterlimit":"miter"===this.lineJoin?this.miterLimit:null})+"/>")},clip:function(){++this._clipIndex;this._body.push('<clipPath id="clip'+
+this._clipIndex+'"><path d="'+this._path.join(" ")+'"/></clipPath>','<g clip-path="url(#clip'+this._clipIndex+')">');this._saveStack[this._saveStack.length-1]+="</g>"},save:function(){this._saveStack.push("")},restore:function(){this._body.push(this._saveStack.pop());0===this._saveStack.length&&this._saveStack.push("")},_transform:function(a){this._body.push('<g transform="'+a+'">');this._saveStack[this._saveStack.length-1]+="</g>"},translate:function(a,b){this._transform("translate("+a+" "+b+")")},
+rotate:function(a){this._transform("rotate("+Math.PI/180*a+")")},scale:function(a,b){this._transform("scale("+a+" "+b+")")},transform:function(a,b,c,d,e,f){this._transform("matrix("+[a,b,c,d,e,f].join(" ")+")")},drawImage:function(a,b,c){if(3!==arguments.length)throw Error("SvgWriterContext only supports 3-argument version of drawImage");var d=this._imgcache.indexOf(a);if(-1===d){var d=this._imgcache.length,e;e=a.cachedDataURL?a.cachedDataURL:fd(a);this._defs.push('<image id="img'+d+'" x="0" y="0" width="'+
+a.width+'" height="'+a.height+'" xlink:href="'+e+'"/>');this._imgcache.push(a)}this._cmd('<use x="'+b+'" y="'+c+'" xlink:href="#img'+d+'"/>')},toBlob:function(){for(;1<this._saveStack.length||""!==this._saveStack[0];)this.restore();var a='<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="'+this.width+'px" height="'+this.height+'px">\n'+this._defs.join("\n")+'\n</defs>\n<g stroke="none" fill="none">\n'+
+this._body.join("\n")+"\n</g>\n</svg>\n";return new Blob([a],{type:"image/svg+xml"})}};ed.prototype={_cmd:function(){this._body.push(Array.prototype.join.call(arguments," "))},_setAlpha:function(a,b,c){var d=Math.round(255*a*this._globalAlpha);b+=d;this._extGState[b]="<< /"+c+" "+d/255+" >>";this._cmd("/"+b,"gs");return a},set globalAlpha(a){this._globalAlpha=a;this._setAlpha(this._strokeAlpha,"As","CA");this._setAlpha(this._fillAlpha,"Af","ca")},set fillStyle(a){var b=this;Rb(a,function(a,d,e,f){b._cmd(a/
+255,d/255,e/255,"rg");b._setAlpha(b._fillAlpha=f,"Af","ca")})},set strokeStyle(a){var b=this;Rb(a,function(a,d,e,f){b._cmd(a/255,d/255,e/255,"RG");b._setAlpha(b._strokeAlpha=f,"As","CA")})},set lineWidth(a){this._cmd(a,"w")},set lineCap(a){this._cmd({butt:0,round:1,square:2}[a],"J")},set lineJoin(a){this._cmd({miter:0,round:1,bevel:2}[a],"j")},set miterLimit(a){this._cmd(a,"M")},clearRect:function(){},beginPath:function(){this._pathUsed=!1},closePath:function(){this._cmd("h")},moveTo:function(a,b){this._cmd(this._xPos=
+a,this._yPos=-b,"m")},lineTo:function(a,b){this._cmd(this._xPos=a,this._yPos=-b,"l")},bezierCurveTo:function(a,b,c,d,e,f){this._cmd(a,-b,c,-d,this._xPos=e,this._yPos=-f,"c")},quadraticCurveTo:function(a,b,c,d){this.bezierCurveTo((2*a+this._xPos)/3,(2*b-this._yPos)/3,(c+2*a)/3,(d+2*b)/3,c,d)},_kappa:.5522847498307935,arc:function(a,b,c,d,e,f){if(0===d&&e===2*Math.PI)d=this._kappa*c,this.moveTo(a+c,b),this.bezierCurveTo(a+c,b+d,a+d,b+c,a,b+c),this.bezierCurveTo(a-d,b+c,a-c,b+d,a-c,b),this.bezierCurveTo(a-
+c,b-d,a-d,b-c,a,b-c),this.bezierCurveTo(a+d,b-c,a+c,b-d,a+c,b);else throw Error("PdfWriterContext.arc only supports full circles");},rect:function(a,b,c,d){this._cmd(a,-b,c,-d,"re")},_usePath:function(a){if(this._pathUsed){var b=this._body[this._pathUsed],c={"S + f":"B","f + S":"B","W n + S":"W S","W n + f":"W f","S + W n":"W S","f + W n":"W f","B + W n":"W B","W S + f":"W B","W f + S":"W B"}[b+" + "+a];if(!c)throw Error("Don't know how to combine '"+b+"' and '"+a+"'");this._body.splice(this._pathUsed,
+1);a=c}this._pathUsed=this._body.length;this._cmd(a)},fill:function(){this._usePath("f")},stroke:function(){this._usePath("S")},clip:function(){this._usePath("W n")},save:function(){this._cmd("q")},restore:function(){this._cmd("Q")},translate:function(a,b){this.transform(1,0,0,1,a,b)},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);this.transform(b,a,-a,b,0,0)},scale:function(a,b){this.transform(a,0,0,b,0,0)},transform:function(a,b,c,d,e,f){this._cmd(a,-b,-c,d,e,-f,"cm")},_png:function(a){if("data:image/png;base64,"!==
+a.substr(0,22))return{error:"Not a base64-encoded PNG file"};a=Wd(a.substr(22));var b=Xd(a);console.log("PNG chunks:",b.map(function(a){return a.type}));if("IHDR"!==b[0].type)throw Error("Image does not start with an IHDR");var c=b[0].data;a=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0;var d=(c[4]<<24|c[5]<<16|c[6]<<8|c[7])>>>0,e=c[8],f=c[9],g=0===(f&2),l=0!==(f&4),k=c[10],m=c[11],c=c[12];if(0!==k)throw Error("Unsupported PNG compression method: "+k);if(0!==m)throw Error("Unsupported PNG filter method: "+
+m);if(0!==c)return{error:"Interlaced image not supported"};if(0!==(f&1))return{error:"Indexed PNG image not supported"};m=null;f=g?1:3;k=b.filter(function(a){return"IDAT"===a.type}).map(function(a){return a.data});if(l){l=window.pako;m=new l.Inflate;for(b=0;b<k.length;++b)m.push(k[b],b+1===k.length);if(m.err)throw Error(m.err);m=m.result;c=e>>>3;if(m.length!==d*(a*(f+1)*c+1))throw Error("Data length mismatch");for(var n=f*c,k=new Uint8Array(d*(a*n+1)),p=new Uint8Array(d*(a*c+1)),q=0,t=0,u=0,v=0;v<
+d;++v){k[t++]=p[u++]=m[q++];for(var w=0;w<a;++w){for(b=0;b<n;++b)k[t++]=m[q++];for(b=0;b<c;++b)p[u++]=m[q++]}}if(q!==m.length||t!==k.length||u!==p.length)throw Error("Seems we garbled our index computation somehow");p=l.deflate(p);m=this._strm({Type:"/XObject",Subtype:"/Image",Width:a,Height:d,ColorSpace:"/DeviceGray",BitsPerComponent:e,Filter:"/FlateDecode",DecodeParms:this._dict({Predictor:15,Colors:1,BitsPerComponent:e,Columns:a})},p).ref;k=[l.deflate(k)]}var x=0;k.forEach(function(a){x+=a.length});
+return this._obj([this._dict({Type:"/XObject",Subtype:"/Image",Name:"/img"+this._imgcache.length,Width:a,Height:d,ColorSpace:g?"/DeviceGray":"/DeviceRGB",SMask:m,BitsPerComponent:e,Length:x,Filter:"/FlateDecode",DecodeParms:this._dict({Predictor:15,Colors:f,BitsPerComponent:e,Columns:a})}),"\nstream\n"].concat(k,["\nendstream"]))},drawImage:function(a,b,c){if(3!==arguments.length)throw Error("PdfWriterContext only supports 3-argument version of drawImage");var d=this._imgcache.indexOf(a);if(-1===
+d){d=this._imgcache.length;this._imgcache.push(a);var e=this._png(a.cachedDataURL||"");e.hasOwnProperty("error")&&(e=this._png(fd(a)));if(e.hasOwnProperty("error"))throw Error(e.error);this._xobjects["img"+d]=e.ref}this._cmd("q");this._setAlpha(1,"Af","ca");this._cmd(a.width,0,0,a.height,b,-c-a.height,"cm");this._cmd("/img"+d,"Do");this._cmd("Q")},_dict:function(a){var b="<<",c;for(c in a)b+=" /"+c+" "+a[c];return b+" >>"},_obj:function(a,b){b||(b=this._nextIndex++);Array.isArray(a)||(a=[this._dict(a)]);
+a.index=b;a.ref=b+" 0 R";a.offset=this._offset;var c=0;a.unshift(b+" 0 obj\n");a.push("\nendobj\n");for(var d=0;d<a.length;++d)c+=a[d].length;this._offset+=c;this._objects.push(a);return a},_strm:function(a,b,c){a.Length=b.length;return this._obj([this._dict(a),"\nstream\n",b,"\nendstream"],c)},toBlob:function(){var a;a="["+[0,-this.height,this.width,0].join(" ")+"]";this._obj({Type:"/Catalog",Pages:"2 0 R"},1);this._obj({Type:"/Pages",Kids:"[3 0 R]",Count:1},2);this._obj({Type:"/Page",Parent:"2 0 R",
+MediaBox:a,Contents:"4 0 R",Resources:this._dict({ProcSet:"[/PDF /Text /ImageB /ImageC /ImageI]",XObject:this._dict(this._xobjects),ExtGState:this._dict(this._extGState)})},3);var b=this._body.join("\n"),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=b.charCodeAt(a)&255;b=window.pako.deflate(c);this._strm({Filter:"/FlateDecode"},b,4);var b=this._objects,d=[];for(a=1;a<b.length;++a)d[b[a].index]=b[a];c="xref\n0 "+d.length+"\n";for(a=0;a<d.length;++a)c=d[a]?c+(lb(String(d[a].offset),10)+" 00000 n \n"):
+c+"0000000000 65535 f \n";a="trailer\n"+this._dict({Size:d.length,Root:"1 0 R"})+"\nstartxref\n"+this._offset+"\n%%EOF\n";b=Array.prototype.concat.apply([],b);b.push(c,a);return new Blob(b,{type:"application/pdf"})}};var Fb=null;jb.push(gd);oa.exportSVG=function(){hd(dd)};oa.exportPDF=function(){wa.loadScript("pako","pako.min.js",function(){hd(ed)})};oa.exportPNG=function(){id(y.canvas.toDataURL())};var id=function(a){var b=document.createElement("a");document.body.appendChild(b);b.style="display: none";
+b.href=a;b.download="CindyJSExport";b.click();setTimeout(function(){document.body.removeChild(b);gd()},100)},qc="Move",Hb,ua=[],Ua=0,Zd=0,sb=0,G={Delete:{}};G.Delete.actions=[];G.Delete.actions[0]={};G.Delete.actions[0].event="mousedown";G.Delete.actions[0].tooltip="...";G.Delete.actions[0]["do"]=function(){fa=Gb(X);null!==fa&&nd(fa.mover.name);return!0};G.Move={};G.Move.actions=[];G.Move.actions[0]={};G.Move.actions[0].event="mousedown";G.Move.actions[0].tooltip="Move free elements by dragging the mouse";
+G.Move.actions[0]["do"]=function(){for(var a=X,b=null,c=1E6,d,e=0;e<u.free.length;e++){var f=u.free[e];if(!f.pinned&&!1!==f.visible&&!0!==f.tmp){var k,m,n,p=z.drawingstate.matrix.sdet;if("P"===f.kind){m=g.normalizeZ(f.homog);if(!g._helper.isAlmostReal(m))continue;k=m.value[0].value.real-a.x;m=m.value[1].value.real-a.y;n=Math.sqrt(k*k+m*m);if(f.narrow&&n>("number"===typeof f.narrow?f.narrow:20)/p)continue}else if("C"===f.kind)m=u.csnames[f.args[0]],n=f.radius,k=l.div(m.homog.value[0],m.homog.value[2]).value.real,
+m=l.div(m.homog.value[1],m.homog.value[2]).value.real,k-=a.x,m-=a.y,n=Math.sqrt(k*k+m*m)-n.value.real,m=k=0,0>n&&(n=-n),n+=30/p;else if("L"===f.kind)k=f.homog,n=l,m=n.add(n.mult(k.value[0],n.conjugate(k.value[0])),n.mult(k.value[1],n.conjugate(k.value[1]))),m=g.scaldiv(n.sqrt(m),k),n=m.value[0].value.real*a.x+m.value[1].value.real*a.y+m.value[2].value.real,k=-m.value[0].value.real*n,m=-m.value[1].value.real*n,0>n&&(n=-n),n+=25/p;else if("Text"===f.kind){if(!f.homog||f.dock||!f._bbox)continue;m=z.from(a.x,
+a.y,1);k=Math.max(0,m[0]-f._bbox.right,f._bbox.left-m[0]);m=Math.max(0,m[1]-f._bbox.bottom,f._bbox.top-m[1]);n=Math.sqrt(k*k+m*m);if(20<n)continue;n/=p;m=g.normalizeZ(f.homog);if(!g._helper.isAlmostReal(m))continue;k=m.value[0].value.real-a.x;m=m.value[1].value.real-a.y}else continue;n<c+.2/p&&(c=n,b=f,d={x:k,y:m})}}console.log("Moving "+(b?b.name:"nothing"));fa=null===b?null:{mover:b,offset:d,prev:{x:a.x,y:a.y}};return!0};G.Point={};G.Point.actions=[];G.Point.actions[0]={};G.Point.actions[0].event=
+"mousedown";G.Point.actions[0].tooltip="Add a single point with the mouse";G.Point.actions[0]["do"]=function(){Ha({type:"Free",name:Ta(),labeled:!0,pos:[ta[0],ta[1],1]});return!0};G.Mid={};G.Mid.actions=[];G.Mid.actions[0]={};G.Mid.actions[0].event="mousedown";G.Mid.actions[0].tooltip="Construct two points and their midpoint by dragging";G.Mid.actions[0]["do"]=function(){mb();return!0};G.Mid.actions[1]={};G.Mid.actions[1].event="mousemove";G.Mid.actions[1]["do"]=function(){Sb("Mid");return!0};G.Mid.actions[2]=
+{};G.Mid.actions[2].event="mouseup";G.Mid.actions[2]["do"]=function(){tb();return!0};G.Circle={};G.Circle.actions=[];G.Circle.actions[0]={};G.Circle.actions[0].event="mousedown";G.Circle.actions[0].tooltip="Construct two points and a circle by dragging the mouse";G.Circle.actions[0]["do"]=function(){mb();return!0};G.Circle.actions[1]={};G.Circle.actions[1].event="mousemove";G.Circle.actions[1]["do"]=function(){Sb("CircleMP");return!0};G.Circle.actions[2]={};G.Circle.actions[2].event="mouseup";G.Circle.actions[2]["do"]=
+function(){tb();return!0};G.Compass={};G.Compass.actions=[];G.Compass.actions[0]={};G.Compass.actions[0].event="mousedown";G.Compass.actions[0].tooltip="...";G.Compass.actions[0]["do"]=function(){mb();return!0};G.Compass.actions[1]={};G.Compass.actions[1].event="mousedown";G.Compass.actions[1].tooltip="...";G.Compass.actions[1]["do"]=function(){mb();return!0};G.Compass.actions[2]={};G.Compass.actions[2].event="mousedown";G.Compass.actions[2].tooltip="...";G.Compass.actions[2]["do"]=function(){mb();
+Ha({type:"Compass",name:Ta(),labeled:!0,args:[ua[0].name,ua[1].name,ua[2].name]});return!0};G.Line={};G.Line.actions=[];G.Line.actions[0]={};G.Line.actions[0].event="mousedown";G.Line.actions[0].tooltip="Construct two points and their connecting line by dragging the mouse";G.Line.actions[0]["do"]=function(){mb();return!0};G.Line.actions[1]={};G.Line.actions[1].event="mousemove";G.Line.actions[1]["do"]=function(){Sb("Join");return!0};G.Line.actions[2]={};G.Line.actions[2].event="mouseup";G.Line.actions[2]["do"]=
+function(){tb();return!0};G.Segment={};G.Segment.actions=[];G.Segment.actions[0]={};G.Segment.actions[0].event="mousedown";G.Segment.actions[0].tooltip="Draw a segment by dragging the mouse";G.Segment.actions[0]["do"]=function(){mb();return!0};G.Segment.actions[1]={};G.Segment.actions[1].event="mousemove";G.Segment.actions[1]["do"]=function(){Sb("Segment");return!0};G.Segment.actions[2]={};G.Segment.actions[2].event="mouseup";G.Segment.actions[2]["do"]=function(){tb();return!0};G.Parallel={};G.Parallel.actions=
+[];G.Parallel.actions[0]={};G.Parallel.actions[0].event="mousedown";G.Parallel.actions[0].tooltip="Construct a parallel line by dragging a line";G.Parallel.actions[0]["do"]=function(){return ld()};G.Parallel.actions[1]={};G.Parallel.actions[1].event="mousemove";G.Parallel.actions[1]["do"]=function(){var a={type:"Free",name:Ta(),labeled:!0,pos:[ta[0],ta[1],1],tmp:!0},a=Ha(a);Hb=Ha({type:"Para",name:Ta(),labeled:!0,args:[ua[0].name,a.name]});sc(a);return!0};G.Parallel.actions[2]={};G.Parallel.actions[2].event=
+"mouseup";G.Parallel.actions[2]["do"]=function(){tb();return!0};G.Orthogonal={};G.Orthogonal.actions=[];G.Orthogonal.actions[0]={};G.Orthogonal.actions[0].event="mousedown";G.Orthogonal.actions[0].tooltip="Construct a orthogonal line by dragging a line";G.Orthogonal.actions[0]["do"]=function(){if(ld()){var a={type:"Free",name:Ta(),labeled:!0,pos:[ta[0],ta[1],1],tmp:!0},a=Ha(a);Hb=Ha({type:"Perp",name:Ta(),labeled:!0,args:[ua[0].name,a.name]});sc(a);return!0}return!1};G.Orthogonal.actions[1]={};G.Orthogonal.actions[1].event=
+"mouseup";G.Orthogonal.actions[1]["do"]=function(){tb();return!0};G.Intersection={};G.Intersection.actions=[];G.Intersection.actions[0]={};G.Intersection.actions[0].event="mousedown";G.Intersection.actions[0].tooltip="Select two elements to define their intersection";G.Intersection.actions[0]["do"]=function(){return md()};G.Intersection.actions[1]={};G.Intersection.actions[1].event="mousedown";G.Intersection.actions[1]["do"]=function(){return md()?(Hb=Ha({type:"Meet",name:Ta(),labeled:!0,args:[ua[0].name,
+ua[1].name]}),!0):!1};var $a={},z={drawingstate:{}};z.drawingstate.linecolor="rgb(0,0,255)";z.drawingstate.linecolorraw=[0,0,1];z.drawingstate.pointcolor="rgb(0,255,0)";z.drawingstate.pointcolorraw=[0,1,0];z.drawingstate.textcolor="rgb(0,0,0)";z.drawingstate.textcolorraw=[0,0,0];z.drawingstate.alpha=1;z.drawingstate.pointsize=4;z.drawingstate.linesize=1;z.drawingstate.textsize=null;z.drawingstate.matrix={};z.drawingstate.matrix.a=25;z.drawingstate.matrix.b=0;z.drawingstate.matrix.c=0;z.drawingstate.matrix.d=
+25;z.drawingstate.matrix.tx=250.5;z.drawingstate.matrix.ty=250.5;z.drawingstate.matrix.det=z.drawingstate.matrix.a*z.drawingstate.matrix.d-z.drawingstate.matrix.b*z.drawingstate.matrix.c;z.drawingstate.matrix.sdet=Math.sqrt(z.drawingstate.matrix.det);z.drawingstate.initialmatrix={};z.drawingstate.initialmatrix.a=z.drawingstate.matrix.a;z.drawingstate.initialmatrix.b=z.drawingstate.matrix.b;z.drawingstate.initialmatrix.c=z.drawingstate.matrix.c;z.drawingstate.initialmatrix.d=z.drawingstate.matrix.d;
+z.drawingstate.initialmatrix.tx=z.drawingstate.matrix.tx;z.drawingstate.initialmatrix.ty=z.drawingstate.matrix.ty;z.drawingstate.initialmatrix.det=z.drawingstate.matrix.det;z.drawingstate.initialmatrix.sdet=z.drawingstate.matrix.sdet;z.clone=function(a){if(null===a||"object"!==typeof a)return a;var b=a.constructor(),c;for(c in a)b[c]=z.clone(a[c]);return b};$a.backup=z.clone(z.drawingstate);$a.stack=[];z.clone(z.drawingstate);z.reset=function(){z.drawingstate.matrix.a=z.drawingstate.initialmatrix.a;
+z.drawingstate.matrix.b=z.drawingstate.initialmatrix.b;z.drawingstate.matrix.c=z.drawingstate.initialmatrix.c;z.drawingstate.matrix.d=z.drawingstate.initialmatrix.d;z.drawingstate.matrix.tx=z.drawingstate.initialmatrix.tx;z.drawingstate.matrix.ty=z.drawingstate.initialmatrix.ty;z.drawingstate.matrix.det=z.drawingstate.initialmatrix.det;z.drawingstate.matrix.sdet=z.drawingstate.initialmatrix.sdet};z.from=function(a,b,c){a/=c;b/=c;c=z.drawingstate.matrix;return[a*c.a-b*c.b+c.tx,a*c.c-b*c.d-c.ty]};z.to=
+function(a,b){var c=z.drawingstate.matrix,d=a-c.tx,e=b+c.ty;return[(d*c.d-e*c.b)/c.det,-(-d*c.c+e*c.a)/c.det,1]};z.toMat=function(){var a=z.drawingstate.matrix;return g.realMatrix([[a.d,-a.b,-a.tx*a.d-a.ty*a.b],[a.c,-a.a,-a.tx*a.c-a.ty*a.a],[0,0,a.det]])};z.dumpTrafo=function(){function a(a){return Math.round(1E3*a)/1E3}var b=z.drawingstate.matrix;console.log("a:"+a(b.a)+" b:"+a(b.b)+" c:"+a(b.c)+" d:"+a(b.d)+" tx:"+a(b.ty)+" ty:"+a(b.tx))};z.setMat=function(a,b,c,d,e,f){var g=z.drawingstate.matrix;
+g.a=a;g.b=b;g.c=c;g.d=d;g.tx=e;g.ty=f;g.det=a*d-b*c;g.sdet=Math.sqrt(g.det)};z.scaleAndOrigin=function(a,b,c){z.setMat(a,0,0,a,b,c)};z.visibleRect=function(a,b,c,d){var e=c-a,f=b-d,e=da*f<ca*e?da/e:ca/f;z.setMat(e,0,0,e,(da-e*(a+c))/2,(ca-e*(b+d))/2)};z.applyMat=function(a,b,c,d,e,f){var g=z.drawingstate.matrix;z.setMat(g.a*a+g.c*b,g.b*a+g.d*b,g.a*c+g.c*d,g.b*c+g.d*d,g.a*e+g.c*f+g.tx,g.b*e+g.d*f+g.ty)};z.translate=function(a,b){z.applyMat(1,0,0,1,a,b)};z.rotate=function(a){var b=Math.cos(a);a=Math.sin(a);
+z.applyMat(b,a,-a,b,0,0)};z.scale=function(a){z.applyMat(a,0,0,a,0,0)};z.gsave=function(){$a.stack.push(z.clone(z.drawingstate))};z.grestore=function(){0!==$a.stack.length&&(z.drawingstate=$a.stack.pop())};z.greset=function(){z.drawingstate=z.clone($a.backup);z.drawingstate.matrix.ty-=ca;z.drawingstate.initialmatrix.ty-=ca;$a.stack=[]};z.createnewbackup=function(){z.drawingstate.initialmatrix.a=z.drawingstate.matrix.a;z.drawingstate.initialmatrix.b=z.drawingstate.matrix.b;z.drawingstate.initialmatrix.c=
+z.drawingstate.matrix.c;z.drawingstate.initialmatrix.d=z.drawingstate.matrix.d;z.drawingstate.initialmatrix.tx=z.drawingstate.matrix.tx;z.drawingstate.initialmatrix.ty=z.drawingstate.matrix.ty;z.drawingstate.initialmatrix.det=z.drawingstate.matrix.det;z.drawingstate.initialmatrix.sdet=z.drawingstate.matrix.sdet;$a.backup=z.clone(z.drawingstate)};z.makecolor=function(a,b,c){a=Math.floor(255*a);b=Math.floor(255*b);c=Math.floor(255*c);return 1===z.drawingstate.alpha?"rgb("+a+","+b+","+c+")":"rgba("+
+a+","+b+","+c+","+z.drawingstate.alpha+")"};z.setcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;z.drawingstate.linecolor=z.drawingstate.pointcolor=z.makecolor(b,c,a);z.drawingstate.linecolorraw=z.drawingstate.pointcolorraw=[b,c,a]};z.setlinecolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;z.drawingstate.linecolor=z.makecolor(b,c,a);z.drawingstate.linecolorraw=[b,c,a]};z.settextcolor=function(a){var b=a.value[0].value.real,
+c=a.value[1].value.real;a=a.value[2].value.real;z.drawingstate.textcolor=z.makecolor(b,c,a);z.drawingstate.textcolorraw=[b,c,a]};z.setpointcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;z.drawingstate.pointcolor=z.makecolor(b,c,a);z.drawingstate.pointcolorraw=[b,c,a]};z.setalpha=function(a){z.drawingstate.alpha=a.value.real;z.drawingstate.linecolor=z.makecolor(z.drawingstate.linecolorraw[0],z.drawingstate.linecolorraw[1],z.drawingstate.linecolorraw[2]);
+z.drawingstate.pointcolor=z.makecolor(z.drawingstate.pointcolorraw[0],z.drawingstate.pointcolorraw[1],z.drawingstate.pointcolorraw[2]);z.drawingstate.textcolor=z.makecolor(z.drawingstate.textcolorraw[0],z.drawingstate.textcolorraw[1],z.drawingstate.textcolorraw[2])};z.setpointsize=function(a){z.drawingstate.pointsize=a.value.real};z.setlinesize=function(a){z.drawingstate.linesize=a.value.real};z.settextsize=function(a){z.drawingstate.textsize=a.value.real};var la={clip:"none",pointColor:[1,0,0],lineColor:[0,
+0,1],pointSize:5,lineSize:1,alpha:1,overhangLine:1,overhangSeg:1,dimDependent:.7,fontFamily:"sans-serif",textsize:20,lineHeight:1.45};p.defaultAppearance&&$d(p.defaultAppearance);var Ub={},ud={UL:0,UR:1,LR:2,LL:3},vc=["in","out","good","backup"],hb=new Float64Array(0),db={};vc.forEach(function(a){db[a]=hb});var ma=hb,Ma=hb,za=hb,va,Aa,fb,Ja,vb,wc=!1,wd={toString:function(){return"RefineException"}},zd=null,L=null;p.enableTraceLog&&(L={logLength:Infinity,fullLog:[],currentMouseAndScripts:null,currentMover:null,
+currentStep:null,currentElement:null,currentParam:null,labelTracing2:w.wrap("tracing2"),labelTracing4:w.wrap("tracing4"),labelTracingSesq:w.wrap("tracingSesq"),postMouseHooks:[]},"number"===typeof p.enableTraceLog&&(L.logLength=p.enableTraceLog),oa.getTraceLog=fe,oa.formatTraceLog=ge,oa.addTraceHook=L.postMouseHooks.push.bind(L.postMouseHooks));Na.stateSize=12;xc.stateSize=24;var ib=[];gb.P=function(a){u.lines.forEach(function(b){b=Dd(a,b);b.holds()&&ib.push(b)});u.conics.forEach(function(b){b=Ed(a,
+b);b.holds()&&ib.push(b)})};gb.L=function(a){u.points.forEach(function(b){b=Dd(b,a);b.holds()&&ib.push(b)})};gb.S=gb.L;gb.C=function(a){u.points.forEach(function(b){b=Ed(b,a);b.holds()&&ib.push(b)})};var m={_helper:{},RandomLine:{}};m.RandomLine.kind="L";m.RandomLine.signature=[];m.RandomLine.updatePosition=function(a){a.homog=g.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};m.FreeLine={};m.FreeLine.kind="L";m.FreeLine.signature=
+[];m.FreeLine.isMovable=!0;m.FreeLine.initialize=function(a){a=m._helper.initializeLine(a);T(a)};m.FreeLine.getParamForInput=function(a,b,c){"mouse"===c?(a=g.cross(b,g.ez),a=g.cross(a,b)):a="homog"===c?b:g.turnIntoCSList([l.zero,l.zero,l.zero]);return g.normalizeMax(a)};m.FreeLine.getParamFromState=function(a){return Z(3)};m.FreeLine.putParamToState=function(a,b){T(b)};m.FreeLine.updatePosition=function(a){var b=Z(3);T(b);a.homog=w.withUsage(b,"Line")};m.FreeLine.stateSize=6;m.RandomPoint={};m.RandomPoint.kind=
+"P";m.RandomPoint.signature=[];m.RandomPoint.updatePosition=function(a){a.homog=g.realVector([100*Math.random(),100*Math.random(),100*Math.random()]);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};m.Join={};m.Join.kind="L";m.Join.signature=["P","P"];m.Join.updatePosition=function(a){a.homog=g.cross(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};m.Segment={};m.Segment.kind="S";m.Segment.signature=["P",
+"P"];m.Segment.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]];m.Segment.setSegmentPos(a,g.cross(b.homog,c.homog),g.scalmult(c.homog.value[2],b.homog),g.scalmult(b.homog.value[2],c.homog))};m.Segment.setSegmentPos=function(a,b,c,d){b=g.normalizeMax(b);a.homog=w.withUsage(b,"Line");b=g.turnIntoCSList([c,d]);b=g.normalizeMax(b);a.startpos=b.value[0];a.endpos=b.value[1]};m.Meet={};m.Meet.kind="P";m.Meet.signature=["L","L"];m.Meet.updatePosition=function(a){a.homog=g.cross(u.csnames[a.args[0]].homog,
+u.csnames[a.args[1]].homog);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};m.Meet.visiblecheck=function(a){var b=!0,c=u.csnames[a.args[0]],d=u.csnames[a.args[1]];"S"===c.kind&&(b=sd(a,c));b&&"S"===d.kind&&(b=sd(a,d));a.isshowing=b};m._helper.midpoint=function(a,b){return g.normalizeMax(g.add(g.scalmult(b.value[2],a),g.scalmult(a.value[2],b)))};m.Mid={};m.Mid.kind="P";m.Mid.signature=["P","P"];m.Mid.updatePosition=function(a){var b=m._helper.midpoint(u.csnames[a.args[0]].homog,
+u.csnames[a.args[1]].homog);a.homog=w.withUsage(b,"Point")};m.Perp={};m.Perp.kind="L";m.Perp.signature=["L","P"];m.Perp.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,b=g.turnIntoCSList([b.value[0],b.value[1],l.zero]);a.homog=g.cross(b,c);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};m.Para={};m.Para.kind="L";m.Para.signature=["L","P"];m.Para.updatePosition=function(a){var b=u.csnames[a.args[1]].homog;a.homog=g.cross(g.cross(g.linfty,
+u.csnames[a.args[0]].homog),b);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};m.Horizontal={};m.Horizontal.kind="L";m.Horizontal.signature=["P"];m.Horizontal.updatePosition=function(a){a.homog=g.cross(g.ex,u.csnames[a.args[0]].homog);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};m.HorizontalLine={};m.HorizontalLine.kind="L";m.HorizontalLine.signature=[];m.HorizontalLine.isMovable=!0;m.HorizontalLine.initialize=function(a){a=m._helper.initializeLine(a);
+a=g.turnIntoCSList([l.zero,a.value[1],a.value[2]]);a=g.normalizeMax(a);T(a)};m.HorizontalLine.getParamForInput=function(a,b,c){if("mouse"===c)b=g.cross(b,g.ex);else if("homog"===c){if(0!==b.value[0].real||0!==b.value[0].imag)b=g.turnIntoCSList([l.zero,b.value[1],b.value[2]])}else b=g.turnIntoCSList([l.zero,l.zero,l.zero]);return g.normalizeMax(b)};m.HorizontalLine.getParamFromState=function(a){return Z(3)};m.HorizontalLine.putParamToState=function(a,b){T(b)};m.HorizontalLine.updatePosition=function(a){var b=
+Z(3);T(b);a.homog=w.withUsage(b,"Line")};m.HorizontalLine.stateSize=6;m.Vertical={};m.Vertical.kind="L";m.Vertical.signature=["P"];m.Vertical.updatePosition=function(a){a.homog=g.cross(g.ey,u.csnames[a.args[0]].homog);a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};m.VerticalLine={};m.VerticalLine.kind="L";m.VerticalLine.signature=[];m.VerticalLine.isMovable=!0;m.VerticalLine.initialize=function(a){a=m._helper.initializeLine(a);a=g.turnIntoCSList([a.value[0],l.zero,a.value[2]]);
+a=g.normalizeMax(a);T(a)};m.VerticalLine.getParamForInput=function(a,b,c){if("mouse"===c)b=g.cross(b,g.ey);else if("homog"===c){if(0!==b.value[1].real||0!==b.value[1].imag)b=g.turnIntoCSList([b.value[0],l.zero,b.value[2]])}else b=g.turnIntoCSList([l.zero,l.zero,l.zero]);return g.normalizeMax(b)};m.VerticalLine.getParamFromState=function(a){return Z(3)};m.VerticalLine.putParamToState=function(a,b){T(b)};m.VerticalLine.updatePosition=function(a){var b=Z(3);T(b);a.homog=w.withUsage(b,"Line")};m.VerticalLine.stateSize=
+6;m.LineByFixedAngle={};m.LineByFixedAngle.kind="L";m.LineByFixedAngle.signature=["L","P"];m.LineByFixedAngle.initialize=function(a){var b=l._helper.input(a.angle),c=l.cos(b),b=l.sin(b);a.rot=g.turnIntoCSList([g.turnIntoCSList([b,c,l.zero]),g.turnIntoCSList([l.neg(c),b,l.zero]),g.turnIntoCSList([l.zero,l.zero,l.zero])])};m.LineByFixedAngle.updatePosition=function(a){var b=u.csnames[a.args[1]],c=g.productMV(a.rot,u.csnames[a.args[0]].homog);a.homog=g.cross(b.homog,c);a.homog=g.normalizeMax(a.homog);
+a.homog=w.withUsage(a.homog,"Line")};m.Through={};m.Through.kind="L";m.Through.signature=["P"];m.Through.isMovable=!0;m.Through.initialize=function(a){a=a.dir?w.wrap(a.dir):g.realVector([a.pos[1],-a.pos[0],0]);T(a)};m.Through.getParamForInput=function(a,b,c){a="dir"===c||"mouse"===c?g.cross(u.csnames[a.args[0]].homog,b):"homog"===c?b:g.turnIntoCSList([l.zero,l.zero,l.zero]);a=g.cross(g.linfty,a);return g.normalizeMax(a)};m.Through.getParamFromState=function(a){return Z(3)};m.Through.putParamToState=
+function(a,b){T(b)};m.Through.updatePosition=function(a){var b=Z(3);T(b);b=g.cross(u.csnames[a.args[0]].homog,b);b=g.normalizeMax(b);a.homog=w.withUsage(b,"Line")};m.Through.stateSize=6;m.Through.set_angle=function(a,b){if("number"===b.ctype){var c=l.cos(b),d=l.sin(b),c=g.turnIntoCSList([c,d,l.real(0)]);Ia(a,c,"dir")}};m.Through.set_slope=function(a,b){if("number"===b.ctype){var c=g.turnIntoCSList([l.real(1),b,l.real(0)]);Ia(a,c,"dir")}};m.Free={};m.Free.kind="P";m.Free.signature=[];m.Free.isMovable=
+!0;m.Free.initialize=function(a){a=m._helper.initializePoint(a);T(a)};m.Free.getParamForInput=function(a,b,c){if("mouse"===c&&cc&&0!==Wa){b=g.normalizeZ(b);a=b.value[0].value.real;c=b.value[1].value.real;var d=Math.round(a/Wa)*Wa,e=Math.round(c/Wa)*Wa;.2>Math.abs(d-a)&&.2>Math.abs(e-c)&&(b=g.realVector([d,e,1]))}return g.normalizeMax(b)};m.Free.getParamFromState=function(a){return Z(3)};m.Free.putParamToState=function(a,b){T(b)};m.Free.updatePosition=function(a){var b=Z(3);T(b);a.homog=w.withUsage(b,
+"Point")};m.Free.stateSize=6;m._helper.projectPointToLine=function(a,b){var c=g.turnIntoCSList([b.value[0],b.value[1],l.zero]),c=g.cross(c,a);return g.normalizeMax(g.cross(c,b))};m.PointOnLine={};m.PointOnLine.kind="P";m.PointOnLine.signature=["L"];m.PointOnLine.isMovable=!0;m.PointOnLine.initialize=function(a){var b=m._helper.initializePoint(a);a=u.csnames[a.args[0]].homog;var b=m._helper.projectPointToLine(b,a),b=g.normalizeMax(b),c=g.cross(g.linfty,b);g.normalizeMax(c);T(b);T(a);fb=!1};m.PointOnLine.updatePosition=
+function(a,b){var c,d=u.csnames[a.args[0]].homog;c=Z(3);Z(3);if(!b){va=a.stateIdx;var e=ma;ma=za;var f=Z(3),l=Z(3);ma=e;e=g.cross(l,d);g._helper.isAlmostZero(e)&&(e=g.cross(g.linfty,d));f=m._helper.CircleMP(e,f);f=m._helper.IntersectLC(d,f);e=m._helper.pointReflection(e,c);c=Ad(f[0],f[1],c,e)[0]}c=g.normalizeMax(c);T(c);T(d);a.homog=w.withUsage(c,"Point")};m.PointOnLine.getParamForInput=function(a,b,c){return b=m._helper.projectPointToLine(b,u.csnames[a.args[0]].homog)};m.PointOnLine.getParamFromState=
+function(a){return Z(3)};m.PointOnLine.putParamToState=function(a,b){return T(b)};m.PointOnLine.stateSize=12;m.PointOnCircle={};m.PointOnCircle.kind="P";m.PointOnCircle.signature=["C"];m.PointOnCircle.isMovable=!0;m.PointOnCircle.initialize=function(a){var b=u.csnames[a.args[0]];a=g.normalizeZ(m._helper.initializePoint(a));var c=g.normalizeZ(m._helper.CenterOfCircle(b.matrix)),d=g.sub(a,c),d=g.turnIntoCSList([d.value[1],l.neg(d.value[0]),l.zero]),c=g.cross(a,c),b=m._helper.IntersectLC(c,b.matrix),
+c=g.projectiveDistMinScal(a,b[0]);g.projectiveDistMinScal(a,b[1])<c?(a=b[1],b=b[0]):(a=b[0],b=b[1]);T(d);T(a);T(b);fb=!1};m.PointOnCircle.putParamToState=function(a,b){T(b)};m.PointOnCircle.getParamFromState=function(a){return Z(3)};m.PointOnCircle.getParamForInput=function(a,b,c){c=g.normalizeZ(m._helper.CenterOfCircle(u.csnames[a.args[0]].matrix));b=g.sub(b,c);va=a.stateIdx;a=Z(3);var d=g.normalizeZ(Z(3));c=g.sub(d,c);0>l.sub(l.mult(a.value[0],c.value[1]),l.mult(a.value[1],c.value[0])).value.real&&
+(b=g.neg(b));return g.turnIntoCSList([b.value[1],l.neg(b.value[0]),l.zero])};m.PointOnCircle.parameterPath=function(a,b,c,d,e){d=g.normalizeAbs(d);e=g.normalizeAbs(e);var f=g.scalproduct(d,e);if(0<=f.value.real)return xd(a,b,c,d,e);a=g.turnIntoCSList([l.sub(d.value[1],e.value[1]),l.sub(e.value[0],d.value[0]),l.zero]);f=g.scalproduct(d,a);0>f.value.real&&(a=g.neg(a));0>b?(b=2*b+1,c=b*b,f=.25/(1+c),c=l.complex(2*b*f+.25,(1-c)*f)):(b=2*b-1,c=b*b,f=.25/(1+c),c=l.complex(2*b*f+.75,(1-c)*f));var k=l.sub(l.real(1),
+c);b=l.mult(c,c);f=l.mult(k,k);c=l.mult(c,k);d=g.scalmult(f,d);d=g.add(d,g.scalmult(c,a));return d=g.add(d,g.scalmult(b,e))};m.PointOnCircle.updatePosition=function(a){var b=Z(3);T(b);var c=u.csnames[a.args[0]],b=g.productMV(c.matrix,b),c=m._helper.IntersectLC(b,c.matrix),c=Na(c[0],c[1]),b=g.normalizeMax(c.value[0]);a.homog=w.withUsage(b,"Point");a.antipodalPoint=c.value[1]};m.PointOnCircle.stateSize=6+Na.stateSize;m.OtherPointOnCircle={};m.OtherPointOnCircle.kind="P";m.OtherPointOnCircle.signature=
+["P"];m.OtherPointOnCircle.signatureConstraints=function(a){return"PointOnCircle"===u.csnames[a.args[0]].type};m.OtherPointOnCircle.updatePosition=function(a){var b=u.csnames[a.args[0]].antipodalPoint,b=g.normalizeMax(b);a.homog=w.withUsage(b,"Point")};m.PointOnSegment={};m.PointOnSegment.kind="P";m.PointOnSegment.signature=["S"];m.PointOnSegment.isMovable=!0;m.PointOnSegment.initialize=function(a){var b=m._helper.initializePoint(a);a=m.PointOnSegment.getParamForInput(a,b);Va(a)};m.PointOnSegment.getParamForInput=
+function(a,b){var c=u.csnames[a.args[0]],d=c.homog,d=g.turnIntoCSList([d.value[0],d.value[1],l.zero]),e=g.sub(c.startpos,c.endpos),c=g.crossratio3(e,c.startpos,c.endpos,b,d);0>c.value.real&&(c=l.complex(0,c.value.imag));1<c.value.real&&(c=l.complex(1,c.value.imag));return c};m.PointOnSegment.getParamFromState=function(a){return wb()};m.PointOnSegment.putParamToState=function(a,b){Va(b)};m.PointOnSegment.updatePosition=function(a){var b=wb();Va(b);var c=u.csnames[a.args[0]],d=c.startpos,c=g.sub(c.endpos,
+d),b=g.add(d,g.scalmult(b,c)),b=g.normalizeMax(b);a.homog=w.withUsage(b,"Point")};m.PointOnSegment.stateSize=2;m._helper.projectPointToCircle=function(a,b){var c=m._helper.CenterOfCircle(a.matrix),c=g.normalizeMax(c),c=g.normalizeMax(g.cross(b,c)),c=m._helper.IntersectLC(c,a.matrix),d=g.projectiveDistMinScal(b,c[0]),e=g.projectiveDistMinScal(b,c[1]);return d<e?c[0]:c[1]};m.PointOnArc={};m.PointOnArc.kind="P";m.PointOnArc.signature=["C"];m.PointOnArc.signatureConstraints=function(a){return u.csnames[a.args[0]].isArc};
+m.PointOnArc.isMovable=!0;m.PointOnArc.initialize=function(a){var b=m._helper.initializePoint(a);a=m.PointOnArc.getParamForInput(a,b);T(a)};m.PointOnArc.getParamForInput=function(a,b){var c=u.csnames[a.args[0]],d=m._helper.projectPointToCircle(c,b),c=g.normalizeMax(g.crossratio3harm(c.startPoint,c.endPoint,c.viaPoint,d,g.ii)),d=l.div(c.value[0],c.value[1]);0>d.value.real&&(c=-1>d.value.real?g.realVector([1,0]):g.realVector([0,1]));return c};m.PointOnArc.getParamFromState=function(a){return Z(2)};
+m.PointOnArc.putParamToState=function(a,b){T(b)};m.PointOnArc.updatePosition=function(a){var b=u.csnames[a.args[0]],c=b.startPoint,d=b.viaPoint,e=b.endPoint,f=g.ii,k=g.cross(c,f),d=g.cross(d,f),n=g.cross(e,f),n=g.turnIntoCSList([k,n]),k=g.transpose(n),n=g.conjugate(n),k=g.productMM(n,k),d=g.productMV(n,d),k=g.productMV(g.adjoint2(k),d),d=k.value[0],k=k.value[1],n=Z(2);T(n);c=g.normalizeMax(g.add(g.scalmult(l.mult(d,n.value[0]),c),g.scalmult(l.mult(k,n.value[1]),e)));b=m._helper.conicOtherIntersection(b.matrix,
+f,c);a.homog=w.withUsage(b,"Point")};m.PointOnArc.stateSize=4;m._helper.CenterOfCircle=function(a){return g.turnIntoCSList([a.value[2].value[0],a.value[2].value[1],l.neg(a.value[0].value[0])])};m._helper.CenterOfConic=function(a){a=g.adjoint3(a);return{ctype:"list",value:[a.value[2].value[0],a.value[2].value[1],a.value[2].value[2]]}};m.CenterOfConic={};m.CenterOfConic.kind="P";m.CenterOfConic.signature=["C"];m.CenterOfConic.updatePosition=function(a){var b=m._helper.CenterOfConic(u.csnames[a.args[0]].matrix);
+a.homog=b;a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};m._helper.CircleMP=function(a,b){var c=a.value[0],d=a.value[1],e=l.neg(a.value[2]),f=l.zero,c=g.turnIntoCSList([g.turnIntoCSList([e,f,c]),g.turnIntoCSList([f,e,d]),g.turnIntoCSList([c,d,f])]),e=w.mult(w.mult(b,c),b),d=w.mult(w.mult(b,g.fund),b),e=w.mult(e,g.fund),c=w.mult(d,c);return g.sub(e,c)};m.CircleMP={};m.CircleMP.kind="C";m.CircleMP.signature=["P","P"];m.CircleMP.updatePosition=function(a){a.matrix=m._helper.CircleMP(u.csnames[a.args[0]].homog,
+u.csnames[a.args[1]].homog);a.matrix=g.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Circle")};m.CircleMr={};m.CircleMr.kind="C";m.CircleMr.signature=["P"];m.CircleMr.isMovable=!0;m.CircleMr.initialize=function(a){Va(l.real(a.radius))};m.CircleMr.getParamForInput=function(a,b,c){if("radius"===c)return b;a=u.csnames[a.args[0]].homog;a=g.normalizeZ(a);b=g.normalizeZ(b);b=g.sub(a,b);return b=g.abs(b)};m.CircleMr.getParamFromState=function(a){return wb()};m.CircleMr.putParamToState=function(a,
+b){Va(b)};m.CircleMr.updatePosition=function(a){var b=wb();Va(b);var c=u.csnames[a.args[0]].homog,d=l.mult(c.value[2],b),d=l.mult(d,d);if(!l._helper.isFinite(d)&&!l._helper.isNaN(d))return g.fund;c=m._helper.ScaledCircleMrr(c,d);a.matrix=w.withUsage(c,"Circle");a.radius=b};m.CircleMr.stateSize=2;m.CircleMr.set_radius=function(a,b){"number"===b.ctype&&Ia(a,b,"radius")};m._helper.ScaledCircleMrr=function(a,b){var c=a.value[0],d=a.value[1],e=l.neg(a.value[2]),e=g.scalmult(e,g.turnIntoCSList([c,d,e])).value,
+c=g.turnIntoCSList([c,d]),c=l.sub(g.scalproduct(c,c),b),e=m._helper.buildConicMatrix([e[2],l.zero,e[2],e[0],e[1],c]);return g.normalizeMax(e)};m.Compass={};m.Compass.kind="C";m.Compass.signature=["P","P","P"];m.Compass.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=b.value[2],f=c.value[2],k=d.value[2],b=g.scalmult(l.mult(f,k),b),c=g.scalmult(l.mult(e,k),c),d=g.scalmult(l.mult(e,f),d),b=g.sub(c,b),d=m._helper.ScaledCircleMrr(d,
+g.scalproduct(b,b));a.matrix=w.withUsage(d,"Circle")};m._helper.getConicType=function(a){if(1E-16>l.abs(g.det(a)).value.real)return"degenerate";var b=l.mult(a.value[0].value[0],a.value[1].value[1]),b=l.sub(b,l.pow(a.value[0].value[1],l.real(2))),b=b.value.real;return 1E-16>Math.abs(b)?"parabola":1E-16<b?"ellipsoid":"hyperbola"};m._helper.ConicBy5=function(a,b,c,d,e,f){a=g.turnIntoCSList([g.cross(c,d)]);var k=g.turnIntoCSList([g.cross(b,e)]);b=g.turnIntoCSList([g.cross(b,c)]);d=g.turnIntoCSList([g.cross(d,
+e)]);return m._helper.conicFromTwoDegenerates(a,k,b,d,f)};m._helper.conicFromTwoDegenerates=function(a,b,c,d,e){a=w.mult(g.transpose(b),a);c=w.mult(g.transpose(d),c);a=g.add(a,g.transpose(a));c=g.add(c,g.transpose(c));d=w.mult(w.mult(e,a),e);e=w.mult(w.mult(e,c),e);c=w.mult(d,c);e=w.mult(e,a);return g.sub(c,e)};m.ConicBy5={};m.ConicBy5.kind="C";m.ConicBy5.signature=["P","P","P","P","P"];m.ConicBy5.updatePosition=function(a){var b=m._helper.ConicBy5(a,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,
+u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog);a.matrix=b;a.matrix=g.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};m.FreeConic={};m.FreeConic.kind="C";m.FreeConic.signature=[];m.FreeConic.initialize=function(a){var b;b=a.pos?m._helper.inputConic(a.pos):g.zeromatrix(l.real(3),l.real(3));m.FreeConic.putParamToState(a,b)};m.FreeConic.getParamForInput=function(a,b,c){return g.normalizeMax(b)};m.FreeConic.getParamFromState=function(a){return m._helper.buildConicMatrix(Z(6).value)};
+m.FreeConic.putParamToState=function(a,b){for(var c=0;3>c;++c)for(var d=0;d<=c;++d)Va(b.value[c].value[d])};m.FreeConic.updatePosition=function(a){var b=Z(6);T(b);a.matrix=m._helper.buildConicMatrix(b.value);a.matrix=g.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};m.FreeConic.set_matrix=function(a,b){g._helper.isNumberMatrixMN(b,3,3)&&Ia(a,g.add(b,g.transpose(b)),"matrix")};m.FreeConic.stateSize=12;m._helper.buildConicMatrix=function(a){var b=a[1],c=a[2],d=a[3],e=a[4],f=a[5];return g.turnIntoCSList([g.turnIntoCSList([a[0],
+b,d]),g.turnIntoCSList([b,c,e]),g.turnIntoCSList([d,e,f])])};m._helper.splitDegenConic=function(a){var b=g.adjoint3(a),c=0,d,e,f=l.abs2(b.value[0].value[0]).value.real;for(d=1;3>d;d++)e=l.abs2(b.value[d].value[d]).value.real,e>f&&(c=d,f=e);d=l.sqrt(l.mult(l.real(-1),b.value[c].value[c]));if(1E-16>l.abs2(d).value.real)return a=g.turnIntoCSList([l.zero,l.zero,l.zero]),[a,a];c=l.real(c+1);e=g.column(b,c);e=g.scaldiv(d,e);d=e.value[0];f=e.value[1];e=e.value[2];d=g.turnIntoCSList([g.turnIntoCSList([l.real(0),
+e,l.mult(l.real(-1),f)]),g.turnIntoCSList([l.mult(l.real(-1),e),l.real(0),d]),g.turnIntoCSList([f,l.mult(l.real(-1),d),l.real(0)])]);a=g.add(a,d);var k=0;for(d=f=b=0;3>d;d++)for(c=0;3>c;c++)e=l.abs2(a.value[d].value[c]).value.real,e>f&&(k=d,b=c,f=e);d=a.value[k];a=g.transpose(a);a=a.value[b];d=g.normalizeMax(d);a=g.normalizeMax(a);d=w.withUsage(d,"Line");a=w.withUsage(a,"Line");return[d,a]};m._helper.inputConic=function(a){var b="xx xy yy xz yz zz".split(" ").map(function(b){var d=l._helper.input(a[b]);
+b[0]!==b[1]&&(d=l.realmult(.5,d));return d});return m._helper.buildConicMatrix(b)};m.SelectConic={};m.SelectConic.kind="C";m.SelectConic.signature=["Cs"];m.SelectConic.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=m._helper.inputConic(a.pos);a=u.csnames[a.args[0]].results;for(var c=g.conicDist(b,a[0]),d=0,e=1;e<a.length;++e){var f=g.conicDist(b,a[e]);f<c&&(c=f,d=e)}return d};m.SelectConic.updatePosition=function(a){a.matrix=u.csnames[a.args[0]].results[a.param];a.matrix=g.normalizeMax(a.matrix);
+a.matrix=w.withUsage(a.matrix,"Conic")};m._helper.ConicBy4p1l=function(a,b,c,d,e,f){var k=g.scalproduct(b,f),n=g.scalproduct(c,f),p=g.scalproduct(d,f),q=g.scalproduct(e,f),t=g.det3(c,d,e),u=g.det3(b,c,e),v=g.det3(b,d,e),w=g.det3(b,c,d),x=l.mult,n=l.sqrt(x(x(n,q),x(t,u))),k=l.sqrt(x(x(k,p),x(v,w))),p=g.cross(g.cross(b,d),f);f=g.cross(g.cross(c,e),f);p=g.scalmult(n,p);k=g.scalmult(k,f);f=g.normalizeMax(g.add(p,k));k=g.normalizeMax(g.sub(p,k));k=Na(f,k);f=m._helper.ConicBy5(a,b,c,d,e,k.value[0]);a=m._helper.ConicBy5(a,
+b,c,d,e,k.value[1]);return[g.normalizeMax(f),g.normalizeMax(a)]};m.ConicBy4p1l={};m.ConicBy4p1l.kind="Cs";m.ConicBy4p1l.signature=["P","P","P","P","L"];m.ConicBy4p1l.updatePosition=function(a){var b=m._helper.ConicBy4p1l(a,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog);a.results=b};m.ConicBy4p1l.stateSize=Na.stateSize;m._helper.ConicBy3p2l=function(a,b,c,d,e){function f(a,b,c,d){return l.sub(l.mult(a,d),l.mult(b,
+c))}var k=g.cross(a,b),m=g.cross(d,e);d=g.cross(d,k);e=g.cross(e,k);k=g.turnIntoCSList([d,e,m]);c=g.productVM(c,g.adjoint3(k));m=g.adjoint3(g.turnIntoCSList([g.scalmult(c.value[0],d),g.scalmult(c.value[1],e),g.scalmult(c.value[2],m)]));c=g.transpose(m);d=l.mult;e=g.productMV(c,a);a=e.value[0];e=e.value[1];k=g.productMV(c,b);b=k.value[0];var k=k.value[1],n=l.sqrt(d(a,e)),p=l.sqrt(d(b,k)),q,t=Array(4);for(q=0;4>q;++q){var u=(q&2)-1,v=d(l.real(((q&1)<<1)-1),n),w=d(l.real(u),p),x=f(e,v,k,w),y=f(b,w,a,
+v),u=f(a,e,b,k),z=l.add(l.add(f(b,k,a,e),f(k,w,e,v)),f(w,b,v,a)),v=d(x,x),w=d(y,y),A=d(z,z),B=d(x,y),x=d(x,z),y=d(y,z),B=l.sub(B,d(l.real(.5),d(u,u))),u=g.turnIntoCSList([g.turnIntoCSList([v,B,x]),g.turnIntoCSList([B,w,y]),g.turnIntoCSList([x,y,A])]),u=g.productMM(m,g.productMM(u,c)),u=g.turnIntoCSList([u.value[0].value[0],u.value[0].value[1],u.value[0].value[2],u.value[1].value[1],u.value[1].value[2],u.value[2].value[2]]);t[q]=u}return t};m.ConicBy3p2l={};m.ConicBy3p2l.kind="Cs";m.ConicBy3p2l.signature=
+["P","P","P","L","L"];m.ConicBy3p2l.updatePosition=function(a){for(var b=m._helper.ConicBy3p2l(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=Bd(b),c=Array(4),d=0;4>d;++d){var e=b[d].value;c[d]=g.turnIntoCSList([g.turnIntoCSList([e[0],e[1],e[2]]),g.turnIntoCSList([e[1],e[3],e[4]]),g.turnIntoCSList([e[2],e[4],e[5]])])}a.results=c};m.ConicBy3p2l.stateSize=48;m.ConicBy2p3l={};m.ConicBy2p3l.kind="Cs";m.ConicBy2p3l.signature=
+["P","P","L","L","L"];m.ConicBy2p3l.updatePosition=function(a){for(var b=m._helper.ConicBy3p2l(u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog),b=Bd(b),c=Array(4),d=0;4>d;++d){var e=b[d].value,e=g.turnIntoCSList([g.turnIntoCSList([e[0],e[1],e[2]]),g.turnIntoCSList([e[1],e[3],e[4]]),g.turnIntoCSList([e[2],e[4],e[5]])]);c[d]=g.normalizeMax(g.adjoint3(e))}a.results=c};m.ConicBy2p3l.stateSize=48;m.ConicBy1p4l={};m.ConicBy1p4l.kind=
+"Cs";m.ConicBy1p4l.signature=["P","L","L","L","L"];m.ConicBy1p4l.updatePosition=function(a){var b=m._helper.ConicBy4p1l(a,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog,u.csnames[a.args[0]].homog),c=b[0],b=b[1],c=g.adjoint3(c),b=g.adjoint3(b),b=[c,b];a.results=b};m.ConicBy1p4l.stateSize=Na.stateSize;m.ConicParabolaPL={};m.ConicParabolaPL.kind="C";m.ConicParabolaPL.signature=["P","L"];m.ConicParabolaPL.updatePosition=function(a){var b=u.csnames[a.args[0]].homog.value,
+c=u.csnames[a.args[1]].homog.value,d=l.mult,e=l.neg,f=l.add,k=l.sub,n=b[0],p=b[1],q=b[2],t=c[0],b=c[1],c=c[2],v=d(q,q),x=d(t,t),y=d(b,b),z=d(q,c),A=e(q),q=f(x,y),y=d(v,y),x=d(v,x),e=d(e(v),d(t,b)),t=d(A,f(d(n,q),d(z,t))),b=d(A,f(d(p,q),d(z,b))),d=k(d(f(d(n,n),d(p,p)),q),d(v,d(c,c))),d=m._helper.buildConicMatrix([y,e,x,t,b,d]),d=g.normalizeMax(d);a.matrix=w.withUsage(d,"Conic")};m.ConicBy2Foci1P={};m.ConicBy2Foci1P.kind="Cs";m.ConicBy2Foci1P.signature=["P","P","P"];m.ConicBy2Foci1P.updatePosition=
+function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=g.ii,f=g.jj,k=g.normalizeMax(g.cross(b,d)),n=g.normalizeMax(g.cross(c,d)),p=g.normalizeMax(g.cross(d,e)),d=g.normalizeMax(g.cross(d,f)),n=m._helper.coHarmonic(p,d,k,n),k=g.normalizeMax(n[0]),n=g.normalizeMax(n[1]),e=g.turnIntoCSList([e]),p=g.turnIntoCSList([f]),d=g.turnIntoCSList([b]),q=g.turnIntoCSList([c]),f=m._helper.conicFromTwoDegenerates(e,p,d,q,k),f=g.normalizeMax(f),e=m._helper.conicFromTwoDegenerates(e,
+p,d,q,n),e=g.normalizeMax(e),f=g.normalizeMax(g.adjoint3(f)),e=g.normalizeMax(g.adjoint3(e));"ellipsoid"!==m._helper.getConicType(f)&&(k=f,f=e,e=k);g.almostequals(b,c).value&&(b=l.real(3),e=g.zeromatrix(b,b));a.results=[f,e]};m.ConicBy2Pol1P={};m.ConicBy2Pol1P.kind="C";m.ConicBy2Pol1P.signature=["P","L","P","L","P"];m.ConicBy2Pol1P.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=u.csnames[a.args[3]].homog,f=u.csnames[a.args[4]].homog,
+k=g.scalproduct,m=g.scalmult,n=g.sub,p=g.productMM,q=l.realmult,t=g.transpose,v=g.turnIntoCSList,x=n(m(k(c,b),f),m(q(2,k(c,f)),b)),y=n(m(k(e,d),f),m(q(2,k(e,f)),d)),z=v([g.cross(b,f)]),f=v([g.cross(d,f)]),y=p(t(z),v([g.cross(b,y)])),v=p(t(f),v([g.cross(d,x)])),p=p(t(z),f),b=k(b,e),c=k(d,c),d=g.add(m(c,y),m(b,v)),d=n(d,m(q(2,l.mult(b,c)),p)),d=g.add(d,t(d)),d=g.normalizeMax(d),d=w.withUsage(d,"Conic");a.matrix=d};m.ConicBy2Pol1L={};m.ConicBy2Pol1L.kind="C";m.ConicBy2Pol1L.signature=["P","L","P","L",
+"L"];m.ConicBy2Pol1L.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=u.csnames[a.args[3]].homog,f=u.csnames[a.args[4]].homog,k=g.scalproduct,m=g.scalmult,n=g.productMM,p=l.mult,q=g.transpose,t=g.turnIntoCSList,v=k(c,b),x=k(c,d),y=k(e,b),z=k(e,d),A=k(f,b),k=k(f,d),B=t([g.sub(m(p(y,k),c),m(p(x,A),e))]),b=g.add(n(q(t([m(p(y,x),f)])),t([g.sub(g.add(m(l.sub(p(v,k),p(x,A)),e),m(l.sub(p(z,A),p(y,k)),c)),m(g.det3(c,e,f),g.cross(b,d)))])),
+n(q(B),B)),b=g.add(b,q(b)),b=g.normalizeMax(b),b=w.withUsage(b,"Conic");a.matrix=b};m._helper.conic1Pol3Inc=function(a,b,c,d,e){var f=g.scalproduct,k=g.scalmult,m=g.productMM,n=g.cross,p=l.realmult,q=l.mult,t=g.transpose,u=g.turnIntoCSList,v=g.det3,w=v(a,c,d),x=u([n(c,e)]),y=u([n(a,e)]),z=u([n(c,d)]),A=f(b,a),B=f(b,c);b=f(b,e);n=u([n(d,g.sub(k(A,e),k(p(2,b),a)))]);x=k(w,m(t(x),n));a=p(2,l.add(q(v(a,d,e),B),q(w,b)));a=l.sub(q(v(c,d,e),A),a);x=g.add(x,k(a,m(t(y),z)));x=g.add(x,t(x));return x=g.normalizeMax(x)};
+m.ConicBy1Pol3P={};m.ConicBy1Pol3P.kind="C";m.ConicBy1Pol3P.signature=["P","L","P","P","P"];m.ConicBy1Pol3P.updatePosition=function(a){var b=m._helper.conic1Pol3Inc(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=w.withUsage(b,"Conic");a.matrix=b};m.ConicBy1Pol3L={};m.ConicBy1Pol3L.kind="C";m.ConicBy1Pol3L.signature=["P","L","L","L","L"];m.ConicBy1Pol3L.updatePosition=function(a){var b=m._helper.conic1Pol3Inc(u.csnames[a.args[1]].homog,
+u.csnames[a.args[0]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=g.normalizeMax(g.adjoint3(b)),b=w.withUsage(b,"Conic");a.matrix=b};m._helper.coHarmonic=function(a,b,c,d){var e=g.realVector([100*Math.random(),100*Math.random(),1]),f=g.det3(e,c,a),k=g.det3(e,c,b);c=g.det3(e,d,a);d=g.det3(e,d,b);d=l.sqrt(l.mult(d,k));f=l.sqrt(l.mult(c,f));a=w.mult(a,d);f=w.mult(b,f);b=g.add(a,f);a=g.sub(a,f);return[b,a]};m.ConicInSquare={};m.ConicInSquare.kind="C";m.ConicInSquare.signature=
+["P","P","P","P"];m.ConicInSquare.updatePosition=function(a){var b=D.basismap(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog),c=l.one,c=m._helper.buildConicMatrix([c,c,c,l.real(-3),c,c]),b=g.adjoint3(b),b=g.productMM(g.productMM(g.transpose(b),c),b),b=g.normalizeMax(b);a.matrix=w.withUsage(b,"Conic")};m.ConicBy5lines={};m.ConicBy5lines.kind="C";m.ConicBy5lines.signature=["L","L","L","L","L"];m.ConicBy5lines.updatePosition=function(a){var b=
+m._helper.ConicBy5(a,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=g.adjoint3(b);a.matrix=b;a.matrix=g.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};m.ConicFromPrincipalDirections={};m.ConicFromPrincipalDirections.kind="C";m.ConicFromPrincipalDirections.signature=["P","P","P"];m.ConicFromPrincipalDirections.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,
+d=u.csnames[a.args[2]].homog,e=m._helper.pointReflection(b,c),f=g.cross(c,b),b=g.turnIntoCSList([f.value[0],f.value[1],l.zero]),f=g.turnIntoCSList([f]),c=g.turnIntoCSList([g.cross(c,b)]),e=g.turnIntoCSList([g.cross(e,b)]);a.matrix=m._helper.conicFromTwoDegenerates(f,f,c,e,d);a.matrix=g.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};m.CircleBy3={};m.CircleBy3.kind="C";m.CircleBy3.signature=["P","P","P"];m.CircleBy3.updatePosition=function(a){var b=m._helper.ConicBy5(a,u.csnames[a.args[0]].homog,
+u.csnames[a.args[1]].homog,g.ii,g.jj,u.csnames[a.args[2]].homog);a.matrix=g.normalizeMax(b);a.matrix=w.withUsage(a.matrix,"Circle")};m.ArcBy3={};m.ArcBy3.kind="C";m.ArcBy3.signature=["P","P","P"];m.ArcBy3.updatePosition=function(a){m.CircleBy3.updatePosition(a);a.startPoint=u.csnames[a.args[0]].homog;a.viaPoint=u.csnames[a.args[1]].homog;a.endPoint=u.csnames[a.args[2]].homog};m.ArcBy3.initialize=function(a){a.startPoint=u.csnames[a.args[0]].homog;a.viaPoint=u.csnames[a.args[1]].homog;a.endPoint=u.csnames[a.args[2]].homog;
+a.isArc=!0};m.PolarOfPoint={};m.PolarOfPoint.kind="L";m.PolarOfPoint.signature=["P","C"];m.PolarOfPoint.updatePosition=function(a){var b=w.mult(u.csnames[a.args[1]].matrix,u.csnames[a.args[0]].homog),b=g.normalizeMax(b);a.homog=w.withUsage(b,"Line")};m.PolarOfLine={};m.PolarOfLine.kind="P";m.PolarOfLine.signature=["L","C"];m.PolarOfLine.updatePosition=function(a){var b=u.csnames[a.args[0]],c=g.adjoint3(u.csnames[a.args[1]].matrix),b=w.mult(c,b.homog),b=g.normalizeMax(b);a.homog=w.withUsage(b,"Point")};
+m.AngleBisector={};m.AngleBisector.kind="Ls";m.AngleBisector.signature=["L","L","P"];m.AngleBisector.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=g.add,f=g.sub,k=g.abs,l=g.cross,m=g.scalmult,n=g.normalizeMax,p=g._helper.isAlmostZero,q=g.linfty,t=m(k(l(l(q,c),q)),b),b=m(k(l(l(q,b),q)),c),f=f(t,b),e=e(t,b);p(f)&&(f=l(l(l(q,e),q),d));p(e)&&(e=l(l(l(q,f),q),d));a.results=Na(n(f),n(e))};m.AngleBisector.stateSize=Na.stateSize;m._helper.IntersectLC=
+function(a,b){var c=l,d=g.crossOperator(a),e=g.transpose(d),e=w.mult(e,w.mult(b,d)),f=g.maxIndex(a,l.abs2),k,m,n,p;0===f?(f=e.value[1].value[1],k=e.value[1].value[2],m=e.value[2].value[1],n=e.value[2].value[2],p=a.value[0]):1===f?(f=e.value[0].value[0],k=e.value[0].value[2],m=e.value[2].value[0],n=e.value[2].value[2],p=a.value[1]):(f=e.value[0].value[0],k=e.value[0].value[1],m=e.value[1].value[0],n=e.value[1].value[1],p=a.value[2]);c=c.div(c.sqrt(c.sub(c.mult(k,m),c.mult(f,n))),p);c=g.add(e,g.scalmult(c,
+d));f=g.maxIndex(c,g.abs2);d=c.value[f];d=g.normalizeMax(d);d=w.withUsage(d,"Point");c=g.transpose(c);f=g.maxIndex(c,g.abs2);c=c.value[f];c=g.normalizeMax(c);c=w.withUsage(c,"Point");return[d,c]};m.IntersectLC={};m.IntersectLC.kind="Ps";m.IntersectLC.signature=["L","C"];m.IntersectLC.updatePosition=function(a){var b=m._helper.IntersectLC(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].matrix);a.results=Na(b[0],b[1])};m.IntersectLC.stateSize=Na.stateSize;m.OtherIntersectionCL={};m.OtherIntersectionCL.kind=
+"P";m.OtherIntersectionCL.signature=["C","L","P"];m.OtherIntersectionCL.updatePosition=function(a){var b=u.csnames[a.args[2]].homog,c=m._helper.IntersectLC(u.csnames[a.args[1]].homog,u.csnames[a.args[0]].matrix),d=c[0],c=c[1],e=g.projectiveDistMinScal(d,b),b=g.projectiveDistMinScal(c,b);a.homog=e<b?c:d;a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};m.IntersectCirCir={};m.IntersectCirCir.kind="Ps";m.IntersectCirCir.signature=["C","C"];m.IntersectCirCir.updatePosition=function(a){var b=
+u.csnames[a.args[0]].matrix,c=u.csnames[a.args[1]].matrix,d=g.scalmult(c.value[0].value[0],b.value[2]),c=g.scalmult(b.value[0].value[0],c.value[2]),d=g.sub(d,c),d=g.turnIntoCSList([d.value[0],d.value[1],l.realmult(.5,d.value[2])]),d=g.normalizeMax(d),b=m._helper.IntersectLC(d,b);a.results=Na(b[0],b[1])};m.IntersectCirCir.stateSize=Na.stateSize;m.OtherIntersectionCC={};m.OtherIntersectionCC.kind="P";m.OtherIntersectionCC.signature=["C","C","P"];m.OtherIntersectionCC.updatePosition=function(a){var b=
+u.csnames[a.args[0]].matrix,c=u.csnames[a.args[1]].matrix,d=u.csnames[a.args[2]].homog,e=g.scalmult(c.value[0].value[0],b.value[2]),c=g.scalmult(b.value[0].value[0],c.value[2]),e=g.sub(e,c),e=g.turnIntoCSList([e.value[0],e.value[1],l.realmult(.5,e.value[2])]),e=g.normalizeMax(e),e=m._helper.IntersectLC(e,b),b=e[0],e=e[1],c=g.projectiveDistMinScal(b,d),d=g.projectiveDistMinScal(e,d);a.homog=c<d?e:b;a.homog=g.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};m._helper.IntersectConicConic=
+function(a,b){var c=a.value[0],d=a.value[1],e=a.value[2],f=b.value[0],k=b.value[1],n=b.value[2],p=g.det3(c,d,e),q=l.add(l.add(g.det3(c,d,n),g.det3(c,k,e)),g.det3(f,d,e)),c=l.add(l.add(g.det3(c,k,n),g.det3(f,d,n)),g.det3(f,k,e)),f=g.det3(f,k,n),n=l.abs2(p).value.real,k=l.abs2(f).value.real;n<k&&(n=a,a=b,b=n,n=f,f=p,p=n,n=c,c=q,q=n,n=k);1E-24>n?(p=a,c=b):(q=l.solveCubic(p,q,c,f),c=l.abs2(l.sub(q[0],q[1])).value.real,f=l.abs2(l.sub(q[0],q[2])).value.real,k=l.abs2(l.sub(q[1],q[2])).value.real,c>f?(p=
+q[1],q=c>k?q[0]:q[2]):(p=q[2],q=f>k?q[0]:q[1]),p=g.add(g.scalmult(p,a),b),c=g.add(g.scalmult(q,a),b));q=m._helper.splitDegenConic(p);p=q[0];q=q[1];c=m._helper.splitDegenConic(c);k=c[0];f=c[1];c=g.cross(p,k);k=g.cross(q,k);p=g.cross(p,f);q=g.cross(q,f);c=g.normalizeMax(c);k=g.normalizeMax(k);p=g.normalizeMax(p);q=g.normalizeMax(q);c=w.withUsage(c,"Point");k=w.withUsage(k,"Point");p=w.withUsage(p,"Point");q=w.withUsage(q,"Point");return[c,k,p,q]};m.IntersectConicConic={};m.IntersectConicConic.kind=
+"Ps";m.IntersectConicConic.signature=["C","C"];m.IntersectConicConic.updatePosition=function(a){var b=m._helper.IntersectConicConic(u.csnames[a.args[0]].matrix,u.csnames[a.args[1]].matrix),b=xc(b[0],b[1],b[2],b[3]);a.results=b};m.IntersectConicConic.stateSize=xc.stateSize;m.SelectP={};m.SelectP.kind="P";m.SelectP.signature=["Ps"];m.SelectP.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=u.csnames[a.args[0]].results.value;a=m._helper.initializePoint(a);for(var c=g.projectiveDistMinScal(a,
+b[0]),d=0,e=1;e<b.length;++e){var f=g.projectiveDistMinScal(a,b[e]);f<c&&(c=f,d=e)}return d};m.SelectP.updatePosition=function(a){a.homog=u.csnames[a.args[0]].results.value[a.param]};m.SelectL={};m.SelectL.kind="L";m.SelectL.signature=["Ls"];m.SelectL.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=u.csnames[a.args[0]].results.value;a=m._helper.initializeLine(a);for(var c=g.projectiveDistMinScal(a,b[0]),d=0,e=1;e<b.length;++e){var f=g.projectiveDistMinScal(a,b[e]);f<c&&(c=f,d=e)}return d};
+m.SelectL.updatePosition=function(a){a.homog=u.csnames[a.args[0]].results.value[a.param];a.homog=w.withUsage(a.homog,"Line")};m._helper.moebiusStep=function(a,b,c){var d=l.add,e=l.sub,f=l.mult,g=a.value[0],k=a.value[1];a=a.value[2];var m=b.value[0],n=b.value[1];b=b.value[2];var p=c.value[0],q=c.value[1],t=c.value[2];c=e(f(b,p),f(m,t));var u=e(f(b,q),f(n,t)),p=e(f(g,t),f(a,p)),q=e(f(k,t),f(a,q));return[e(f(g,c),f(k,u)),d(f(k,c),f(g,u)),f(a,c),f(a,u),e(f(m,p),f(n,q)),d(f(n,p),f(m,q)),f(b,p),f(b,q)]};
+m.TrMoebius={};m.TrMoebius.kind="Mt";m.TrMoebius.signature="PPPPPP".split("");m.TrMoebius.updatePosition=function(a){var b=l.neg,c=m._helper.moebiusStep(u.csnames[a.args[0]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[4]].homog),d=m._helper.moebiusStep(u.csnames[a.args[1]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[5]].homog),d=g.normalizeMax(g.matrix([[d[0],b(d[1]),d[4],b(d[5])],[d[1],d[0],d[5],d[4]],[d[2],b(d[3]),d[6],b(d[7])],[d[3],d[2],d[7],d[6]]])),b=g.normalizeMax(g.matrix([[c[6],
+b(c[4])],[c[7],b(c[5])],[b(c[2]),c[0]],[b(c[3]),c[1]]])),b=g.normalizeMax(g.productMM(d,b));a.moebius={anti:!1,ar:b.value[0].value[0],ai:b.value[1].value[0],br:b.value[0].value[1],bi:b.value[1].value[1],cr:b.value[2].value[0],ci:b.value[3].value[0],dr:b.value[2].value[1],di:b.value[3].value[1]};m._helper.moebiusPair(a)};m._helper.moebiusPair=function(a){var b=a.moebius,c=l.neg,d=b.anti?c:w.identity;a.mat1=g.normalizeMax(g.matrix([[c(b.cr),d(b.ci),c(b.dr)],[b.ci,d(b.cr),b.di],[b.ar,c(d(b.ai)),b.br]]));
+a.mat2=g.normalizeMax(g.matrix([[c(b.ci),c(d(b.cr)),c(b.di)],[c(b.cr),d(b.ci),c(b.dr)],[b.ai,d(b.ar),b.bi]]))};m.TrInverseMoebius={};m.TrInverseMoebius.kind="Mt";m.TrInverseMoebius.signature=["Mt"];m.TrInverseMoebius.updatePosition=function(a){var b=u.csnames[a.args[0]].moebius,c=l.neg,d=b.anti?c:w.identity;a.moebius={anti:b.anti,ar:b.dr,ai:d(b.di),br:c(b.br),bi:c(d(b.bi)),cr:c(b.cr),ci:c(d(b.ci)),dr:b.ar,di:d(b.ai)};m._helper.moebiusPair(a)};m.TrMoebiusP={};m.TrMoebiusP.kind="P";m.TrMoebiusP.signature=
+["Mt","P"];m.TrMoebiusP.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]].homog,d=g.productMV(b.mat1,c),b=g.productMV(b.mat2,c);a.homog=g.normalizeMax(g.cross(d,b));a.homog=w.withUsage(a.homog,"Point")};m._helper.TrMoebiusP=function(a,b){var c=g.productMV(b.mat1,a),d=g.productMV(b.mat2,a);return g.normalizeMax(g.cross(c,d))};m.TrMoebiusL={};m.TrMoebiusL.kind="C";m.TrMoebiusL.signature=["Mt","L"];m.TrMoebiusL.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]].homog,
+d=function(){var a=g.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);return g.normalizeMax(a)},e=g.cross(d(),c),f=g.cross(d(),c),c=g.cross(d(),c),e=m._helper.TrMoebiusP(e,b),f=m._helper.TrMoebiusP(f,b),b=m._helper.TrMoebiusP(c,b);a.matrix=g.normalizeMax(m._helper.ConicBy5(null,e,f,b,g.ii,g.jj));a.matrix=w.withUsage(a.matrix,"Circle")};m.TrMoebiusS={};m.TrMoebiusS.kind="C";m.TrMoebiusS.signature=["Mt","S"];m.TrMoebiusS.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]],
+d=c.startpos,c=c.endpos,e=g.add(d,c),d=m._helper.TrMoebiusP(d,b),e=m._helper.TrMoebiusP(e,b),b=m._helper.TrMoebiusP(c,b);a.startPoint=d;a.viaPoint=e;a.endPoint=b;a.isArc=!0;a.matrix=g.normalizeMax(m._helper.ConicBy5(null,d,e,b,g.ii,g.jj));a.matrix=w.withUsage(a.matrix,"Circle")};m.TrMoebiusC={};m.TrMoebiusC.kind="C";m.TrMoebiusC.signature=["Mt","C"];m.TrMoebiusC.signatureConstraints=function(a){return"Circle"===u.csnames[a.args[1]].matrix.usage};m.TrMoebiusC.updatePosition=function(a){var b=u.csnames[a.args[0]],
+c=u.csnames[a.args[1]].matrix,d=function(){var a=g.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);return g.normalizeMax(a)},e=m._helper.IntersectLC(d(),c),d=m._helper.IntersectLC(d(),c),c=e[1],d=d[1],e=m._helper.TrMoebiusP(e[0],b),c=m._helper.TrMoebiusP(c,b),b=m._helper.TrMoebiusP(d,b);a.matrix=g.normalizeMax(m._helper.ConicBy5(null,e,c,b,g.ii,g.jj));a.matrix=w.withUsage(a.matrix,"Circle")};m.TrMoebiusArc={};m.TrMoebiusArc.kind="C";m.TrMoebiusArc.signature=["Mt","C"];m.TrMoebiusArc.signatureConstraints=
+function(a){return u.csnames[a.args[1]].isArc};m.TrMoebiusArc.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,c=m._helper.TrMoebiusP(c.startPoint,b),d=m._helper.TrMoebiusP(d,b),b=m._helper.TrMoebiusP(e,b);a.startPoint=c;a.viaPoint=d;a.endPoint=b;a.isArc=!0;a.matrix=g.normalizeMax(m._helper.ConicBy5(null,c,d,b,g.ii,g.jj));a.matrix=w.withUsage(a.matrix,"Circle")};m._helper.trBuildMatrix=function(a,b){var c=b(0),d=b(1),e=g.productMM(d,g.adjoint3(c));
+a.matrix=g.normalizeMax(e);e=g.transpose(g.productMM(c,g.adjoint3(d)));a.dualMatrix=g.normalizeMax(e)};m.TrProjection={};m.TrProjection.kind="Tr";m.TrProjection.signature="PPPPPPPP".split("");m.TrProjection.updatePosition=function(a){m._helper.trBuildMatrix(a,function(b){return D.basismap(u.csnames[a.args[0+b]].homog,u.csnames[a.args[2+b]].homog,u.csnames[a.args[4+b]].homog,u.csnames[a.args[6+b]].homog)})};m.TrAffine={};m.TrAffine.kind="Tr";m.TrAffine.signature="PPPPPP".split("");m.TrAffine.updatePosition=
+function(a){var b=l.mult,c=g.scalmult,d=g.turnIntoCSList,e=g.transpose,f=g.normalizeMax,k=g.productMM,m=g.adjoint3,n=d([u.csnames[a.args[0]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[4]].homog]),p=d([u.csnames[a.args[1]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[5]].homog]),q=e(n),e=e(p),t=q.value[2].value,v=e.value[2].value,w=[b(t[0],v[2]),b(t[1],v[0]),b(t[2],v[1])],q=m(q).value;a.matrix=f(k(e,d([c(b(w[0],v[1]),q[0]),c(b(w[1],v[2]),q[1]),c(b(w[2],v[0]),q[2])])));q=n.value;a.dualMatrix=
+f(k(m(p),d([c(b(t[2],w[1]),q[0]),c(b(t[0],w[2]),q[1]),c(b(t[1],w[0]),q[2])])))};m.TrSimilarity={};m.TrSimilarity.kind="Tr";m.TrSimilarity.signature=["P","P","P","P"];m.TrSimilarity.updatePosition=function(a){m._helper.trBuildMatrix(a,function(b){return D.basismap(u.csnames[a.args[0+b]].homog,u.csnames[a.args[2+b]].homog,g.ii,g.jj)})};m.TrTranslation={};m.TrTranslation.kind="Tr";m.TrTranslation.signature=["P","P"];m.TrTranslation.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,
+d=g.cross(b,c).value,b=l.mult(b.value[2],c.value[2]),c=g.turnIntoCSList,e=l.neg,f=l.zero,d=c([c([b,f,d[1]]),c([f,b,e(d[0])]),c([f,f,b])]),d=g.normalizeMax(d);a.matrix=d;b=e(d.value[0].value[0]);d=c([c([b,f,f]),c([f,b,f]),c([d.value[0].value[2],d.value[1].value[2],b])]);a.dualMatrix=d};m.TrReflectionP={};m.TrReflectionP.kind="Tr";m.TrReflectionP.signature=["P"];m.TrReflectionP.updatePosition=function(a){var b=u.csnames[a.args[0]].homog.value,c=l.realmult(-.5,b[2]),d=l.zero,b=g.turnIntoCSList([g.turnIntoCSList([c,
+d,b[0]]),g.turnIntoCSList([d,c,b[1]]),g.turnIntoCSList([d,d,l.neg(c)])]),b=g.normalizeMax(b);a.matrix=b;a.dualMatrix=g.transpose(b)};m.TrReflectionL={};m.TrReflectionL.kind="Tr";m.TrReflectionL.signature=["L"];m.TrReflectionL.updatePosition=function(a){var b=l.mult,c=l.realmult,d=l.zero,e=u.csnames[a.args[0]].homog.value,f=e[0],k=e[1],e=e[2],m=b(f,f),n=b(k,k),p=c(-.5,l.sub(m,n)),q=b(f,k),b=g.turnIntoCSList([g.turnIntoCSList([l.neg(p),q,b(f,e)]),g.turnIntoCSList([q,p,b(k,e)]),g.turnIntoCSList([d,d,
+c(-.5,l.add(m,n))])]),b=g.normalizeMax(b);a.matrix=b;a.dualMatrix=g.transpose(b)};m.TrReflectionS={};m.TrReflectionS.kind="Tr";m.TrReflectionS.signature=["S"];m.TrReflectionS.updatePosition=m.TrReflectionL.updatePosition;m.TrReflectionC={};m.TrReflectionC.kind="Mt";m.TrReflectionC.signature=["C"];m.TrReflectionC.signatureConstraints=function(a){return"Circle"===u.csnames[a.args[0]].matrix.usage};m.TrReflectionC.updatePosition=function(a){var b=u.csnames[a.args[0]].matrix,c=b.value[0].value[2],d=b.value[1].value[2],
+e=l.neg;a.moebius={anti:!0,ar:c,ai:d,br:b.value[2].value[2],bi:l.zero,cr:e(b.value[0].value[0]),ci:l.zero,dr:e(c),di:d};m._helper.moebiusPair(a)};m.TrInverse={};m.TrInverse.kind="Tr";m.TrInverse.signature=["Tr"];m.TrInverse.updatePosition=function(a){var b=u.csnames[a.args[0]];a.dualMatrix=g.transpose(b.matrix);a.matrix=g.transpose(b.dualMatrix)};m.TransformC={};m.TransformC.kind="C";m.TransformC.signature=["Tr","C"];m.TransformC.updatePosition=function(a){var b=u.csnames[a.args[0]].dualMatrix,b=
+g.productMM(g.productMM(b,u.csnames[a.args[1]].matrix),g.transpose(b)),b=g.normalizeMax(b);a.matrix=w.withUsage(b,"Conic")};m.TransformArc={};m.TransformArc.kind="C";m.TransformArc.signature=["Tr","C"];m.TransformArc.signatureConstraints=function(a){return u.csnames[a.args[0]].isArc};m.TransformArc.updatePosition=function(a){var b=u.csnames[a.args[0]].matrix,c=u.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,c=g.normalizeMax(g.productMV(b,c.startPoint)),d=g.normalizeMax(g.productMV(b,d)),b=g.normalizeMax(g.productMV(b,
+e));a.startPoint=c;a.viaPoint=d;a.endPoint=b;a.isArc=!0;a.matrix=g.normalizeMax(m._helper.ConicBy5(null,c,d,b,g.ii,g.jj));a.matrix=w.withUsage(a.matrix,"Circle")};m.TransformP={};m.TransformP.kind="P";m.TransformP.signature=["Tr","P"];m.TransformP.updatePosition=function(a){a.homog=g.normalizeMax(g.productMV(u.csnames[a.args[0]].matrix,u.csnames[a.args[1]].homog));a.homog=w.withUsage(a.homog,"Point")};m.TransformL={};m.TransformL.kind="L";m.TransformL.signature=["Tr","L"];m.TransformL.updatePosition=
+function(a){a.homog=g.normalizeMax(g.productMV(u.csnames[a.args[0]].dualMatrix,u.csnames[a.args[1]].homog));a.homog=w.withUsage(a.homog,"Line")};m.TransformS={};m.TransformS.kind="S";m.TransformS.signature=["Tr","S"];m.TransformS.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]];m.Segment.setSegmentPos(a,g.productMV(b.dualMatrix,c.homog),g.productMV(b.matrix,c.startpos),g.productMV(b.matrix,c.endpos))};m.TransformPolygon={};m.TransformPolygon.kind="Poly";m.TransformPolygon.signature=
+["Tr","Poly"];m.TransformPolygon.updatePosition=function(a){var b=u.csnames[a.args[0]].matrix;a.vertices=g.turnIntoCSList(u.csnames[a.args[1]].vertices.value.map(function(a){a=g.normalizeMax(g.productMV(b,a));return a=w.withUsage(a,"Point")}))};m._helper.pointReflection=function(a,b){return g.normalizeMax(g.sub(g.scalmult(l.realmult(2,b.value[2]),a),g.scalmult(a.value[2],b)))};m._helper.conicOtherIntersection=function(a,b,c){var d=g.productMV(a,c);a=g.scalproduct(c,d);d=g.scalproduct(b,d);d=l.realmult(-2,
+d);b=g.scalmult(a,b);c=g.scalmult(d,c);c=g.add(b,c);return c=g.normalizeMax(c)};m.Dist={};m.Dist.kind="V";m.Dist.signature=["P","P"];m.Dist.updatePosition=function(a){var b=u.csnames[a.args[1]].homog;a.value=g.abs(g.sub(g.normalizeZ(u.csnames[a.args[0]].homog),g.normalizeZ(b)))};m.Angle={};m.Angle.kind="V";m.Angle.signature=["L","L","P"];m.Angle.initialize=function(a){void 0===a.angle&&(a.angle=.5*Math.PI);Va(l._helper.input(a.angle))};m.Angle.updatePosition=function(a){var b=u.csnames[a.args[1]].homog,
+c=u.csnames[a.args[2]].homog,d=g.cross(u.csnames[a.args[0]].homog,g.linfty),b=g.cross(b,g.linfty),c=g.crossratio3(d,b,g.ii,g.jj,c),c=l.mult(l.complex(0,.5),l.log(c)),d=(wb().value.real-c.value.real)/Math.PI,b=Math.round(d);!fb&&.01<Math.abs(b-d)&&Vb();c=l.complex(b*Math.PI+c.value.real,c.value.imag);Va(c);a.value=w.withUsage(c,"Angle")};m.Angle.stateSize=2;m.Text={};m.Text.kind="Text";m.Text.signature="**";m.Text.isMovable=!0;m.Text.updatePosition=Pa;m.Text.initialize=function(a){a.text=String(a.text);
+a.pos&&(a.homog=m._helper.initializePoint(a));a.dock&&(a.dock.offset=a.dock.offset&&2===a.dock.offset.length?g.realVector([+a.dock.offset[0],+a.dock.offset[1]]):g.realVector([0,0]))};m.Text.getParamForInput=function(a,b,c){return m.Free.getParamForInput(a,b,c)};m.Text.getParamFromState=function(a){return a.homog};m.Text.putParamToState=function(a,b){a.homog=b};m.Calculation={};m.Calculation.kind="Text";m.Calculation.signature="**";m.Calculation.isMovable=!0;m.Calculation.updatePosition=Pa;m.Calculation.initialize=
+function(a){m.Text.initialize(a);a.calculation=Ra(a.text)};m.Calculation.getText=function(a){return ba(A(a.calculation))};m.Calculation.getParamForInput=m.Text.getParamForInput;m.Calculation.getParamFromState=m.Text.getParamFromState;m.Calculation.putParamToState=m.Text.putParamToState;m.Equation={};m.Equation.kind="Text";m.Equation.isMovable=!0;m.Equation.signature="**";m.Equation.updatePosition=Pa;m.Equation.initialize=function(a){m.Text.initialize(a);a.calculation=Ra(a.text)};m.Equation.getText=
+function(a){return a.text+" = "+ba(A(a.calculation))};m.Equation.getParamForInput=m.Text.getParamForInput;m.Equation.getParamFromState=m.Text.getParamFromState;m.Equation.putParamToState=m.Text.putParamToState;m.Evaluate={};m.Evaluate.kind="Text";m.Evaluate.isMovable=!0;m.Evaluate.signature="**";m.Evaluate.updatePosition=Pa;m.Evaluate.initialize=function(a){m.Text.initialize(a);a.calculation=Ra(a.text)};m.Evaluate.getText=function(a){A(a.calculation);return a.text};m.Evaluate.getParamForInput=m.Text.getParamForInput;
+m.Evaluate.getParamFromState=m.Text.getParamFromState;m.Evaluate.putParamToState=m.Text.putParamToState;m.Plot={};m.Plot.kind="Text";m.Plot.isMovable=!0;m.Plot.signature="**";m.Plot.updatePosition=Pa;m.Plot.initialize=function(a){m.Text.initialize(a);a.calculation=Ra("plot(("+a.text+"))")};m.Plot.getText=function(a){A(a.calculation);return a.text};m.Plot.getParamForInput=m.Text.getParamForInput;m.Plot.getParamFromState=m.Text.getParamFromState;m.Plot.putParamToState=m.Text.putParamToState;m.Button=
+{};m.Button.kind="Text";m.Button.signature="**";m.Button.isMovable=!0;m.Button.updatePosition=Pa;m.Button.initialize=function(a){var b=document.createElement("button");yc(a,"click",b)};m.Button.getParamForInput=m.Text.getParamForInput;m.Button.getParamFromState=m.Text.getParamFromState;m.Button.putParamToState=m.Text.putParamToState;m.Button.set_fillcolor=function(a,b){g._helper.isNumberVecN(b,3)&&(a.fillcolor=b.value.map(function(a){return a.value.real}),a.html.style.backgroundColor=x.makeColor(a.fillcolor,
+a.fillalpha))};m.ToggleButton={};m.ToggleButton.kind="Text";m.ToggleButton.signature="**";m.ToggleButton.isMovable=!0;m.ToggleButton.updatePosition=Pa;m.ToggleButton.initialize=function(a){var b;b=void 0;void 0===b&&(b="CindyJSid");b+=++Oa;var c=document.createElement("input"),d=document.createElement("label");c.setAttribute("id",b);d.setAttribute("for",b);c.setAttribute("type","checkbox");a.pressed&&(c.checked=!0);a.checkbox=c;yc(a,"change",c,d)};m.ToggleButton.getParamForInput=m.Text.getParamForInput;
+m.ToggleButton.getParamFromState=m.Text.getParamFromState;m.ToggleButton.putParamToState=m.Text.putParamToState;m.ToggleButton.set_fillcolor=m.Button.set_fillcolor;m.EditableText={};m.EditableText.kind="Text";m.EditableText.isMovable=!0;m.EditableText.signature=[];m.EditableText.updatePosition=Pa;m.EditableText.initialize=function(a){var b=document.createElement("input");b.setAttribute("type","text");b.className="CindyJS-editabletext";Fa(a.minwidth)&&(b.style.width=a.minwidth-3+"px");"string"===typeof a.text&&
+(b.value=a.text);b.addEventListener("keydown",function(a){13===a.keyCode&&b.blur()});yc(a,"change",b)};m.EditableText.getText=function(a){return!1};m.EditableText.getParamForInput=m.Text.getParamForInput;m.EditableText.getParamFromState=m.Text.getParamFromState;m.EditableText.putParamToState=m.Text.putParamToState;m.EditableText.set_fillcolor=m.Button.set_fillcolor;m.EditableText.get_currenttext=function(a){return w.string(String(a.html.value))};m.EditableText.set_currenttext=function(a,b){a.html.value=
+ba(b)};m.EditableText.get_text=m.EditableText.get_currenttext;m.EditableText.set_text=m.EditableText.set_currenttext;m._helper.initializePoint=function(a){var b=0,c=0,d=0;if(a.pos){if("list"===a.pos.ctype&&g.isNumberVector(a.pos))return a.pos;2===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=1);3===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=a.pos[2])}a=g.turnIntoCSList([l._helper.input(b),l._helper.input(c),l._helper.input(d)]);return a=g.normalizeMax(a)};m._helper.initializeLine=function(a){var b=0,c=0,d=0;
+if(a.pos){if("list"===a.pos.ctype&&g.isNumberVector(a.pos))return a.pos;3===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=a.pos[2])}a=g.turnIntoCSList([l._helper.input(b),l._helper.input(c),l._helper.input(d)]);return a=g.normalizeMax(a)};m.Poly={};m.Poly.kind="Poly";m.Poly.signature="P*";m.Poly.updatePosition=function(a){a.vertices=g.turnIntoCSList(a.args.map(function(a){return u.csnames[a].homog}))};var tc={CircleByRadius:"CircleMr",IntersectionCircleCircle:"IntersectCirCir",IntersectionConicConic:"IntersectConicConic",
+FreePoint:"Free",Orthogonal:"Perp",Parallel:"Para",Pole:"PolarOfLine",Polar:"PolarOfPoint",Arc:"ArcBy3",EuclideanMid:"Mid",AngularBisector:"AngleBisector",TransformConic:"TransformC",TransformSegment:"TransformS",TrMoebiusSegment:"TrMoebiusS",ReflectCC:"TrMoebiusC",ReflectCL:"TrMoebiusL",ReflectCP:"TrMoebiusP",ReflectCArc:"TrMoebiusArc",ReflectCS:"TrMoebiusS",TrMoebiusCircle:"TrMoebiusC"},rd={CircleMFixedr:function(a){a.pinned=!0;a.type="CircleMr";return[a]},CircleByFixedRadius:function(a){a.pinned=
+!0;a.type="CircleMr";return[a]},IntersectionConicLine:function(a){a.args=[a.args[1],a.args[0]];a.type="IntersectLC";return[a]},angleBisector:function(a){var b={name:a.name+"_Intersection",type:"Meet",args:a.args,visible:!1};a.type="AngleBisector";a.args=[a.args[0],a.args[1],b.name];return[b,a]},Transform:function(a){var b=u.csnames[a.args[1]],b={Tr:"Transform",Mt:"TrMoebius"}[u.csnames[a.args[0]].kind]+(b.isArc?"Arc":b.kind);if(m.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");
+return[]},TrReflection:function(a){var b="TrReflection"+u.csnames[a.args[0]].kind;if(m.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]}},le="align alpha angle args arrow arrowposition arrowshape arrowsides arrowsize clip color dashtype drawtrace fillalpha fillcolor filled labeled labelpos name overhang pinned printname radius size text text_fontfamily textbold textitalics textsize tracedim tracelength traceskip tracing type visible".split(" ");oa.saveState=function(){return{geometry:me()}};
+var ra={},Jd,Ib,Kd,Ld;Jd=[[],[.2],[.075,.225],[44/45,-56/15,32/9],[19372/6561,-25360/2187,64448/6561,-212/729],[9017/3168,-355/33,46732/5247,49/176,-5103/18656],[35/384,0,500/1113,125/192,-2187/6784,11/84]];Ib=[0,.2,.3,.8,8/9,1,1];Kd=[35/384,0,500/1113,125/192,-2187/6784,11/84,0];Ld=[5179/57600,0,7571/16695,.6140625,-92097/339200,187/2100,.025];var Ba,ga=[],zc=[],ic=!1;ra.tick=function(a){a/=Mb;for(var b=0;b<Mb;b++)ra.tick1(a),Cb+=a,A(S.simulationstep)};ra.tick1=function(a){for(var b=a,c=0;0<a&&c<
+.999*a||0>a&&c>.999*a;)b=ra.oneRKStep(b),c+=b,b=Math.min(2*b,a-c),b=Math.max(b,1E-16),ra.restorePosition(),ra.doCollisions(),ra.calculateForces(),ra.moveToFinalPos();return!0};ra.restorePosition=function(){Ba.forEach(function(a){O[a.type].restorePos(a,9)})};ra.doCollisions=function(){Ba.forEach(function(a){O[a.type].doCollisions(a)})};ra.calculateForces=function(){Ba.forEach(function(a){O[a.type].calculateForces(a)})};ra.moveToFinalPos=function(){Ba.forEach(function(a){O[a.type].move(a)})};ra.oneRKStep=
+function(a){for(var b=function(a){Ba.forEach(function(b){O[b.type].initRK(b,a);O[b.type].storePosition(b)})},c=function(a){Ba.forEach(function(b){O[b.type].setToTimestep(b,Ib[a])})},d=function(a){Ba.forEach(function(b){O[b.type].proceedMotion(b,Ib[a],a,Jd[a])})},e=function(){Ba.forEach(function(a){O[a.type].resetForces(a)})},f=function(a){Ba.forEach(function(b){O[b.type].calculateDelta(b,a)})},g=function(b){var c=0;Ba.forEach(function(a){O[a.type].proceedMotion(a,Ib[6],7,Kd);O[a.type].savePos(a,8);
+O[a.type].proceedMotion(a,Ib[6],7,Ld);O[a.type].savePos(a,9);c+=O[a.type].sqDist(a,8,9)});return c=Math.sqrt(c)/a},k=function(a){Ba.forEach(function(a){O[a.type].recallPosition(a)})},l=!1;!l;){b(a);for(var m=0;7>m;m++)c(m),d(m),e(),ra.calculateForces(),f(m);g(a)>O.env.errorbound&&a>O.env.lowestdeltat?(a/=O.env.slowdownfactor,k()):l=!0}return a};var O={Mass:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.mass&&(a.mass=1);"undefined"===typeof a.charge&&(a.charge=0);
+"undefined"===typeof a.friction&&(a.friction=0);a.lnfrict=0;"undefined"===typeof a.limitspeed&&(a.limitspeed=!1);"undefined"===typeof a.fixed&&(a.fixed=!1);"undefined"===typeof a.radius&&(a.radius=1);a.internalmove=!1;a.fx=0;a.fy=0;a.fz=0;a.vx=a.vx||0;a.vy=a.vy||0;a.vz=a.vz||0;a.mtype=0;a.env=O.env;a.deltat=0;a.mx=0;a.my=0;a.mz=0;a.mvx=0;a.mvy=0;a.mvz=0;a.dx=[0,0,0,0,0,0,0,0,0,0];a.dy=[0,0,0,0,0,0,0,0,0,0];a.dz=[0,0,0,0,0,0,0,0,0,0];a.dvx=[0,0,0,0,0,0,0,0,0,0];a.dvy=[0,0,0,0,0,0,0,0,0,0];a.dvz=[0,
+0,0,0,0,0,0,0,0,0];a.midx=0;a.midy=0;a.midz=0;a.lx=0;a.ly=0;a.lz=0},resetForces:function(a){a.fx=0;a.fy=0;a.fz=0},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){var c=D.extractPoint(a.el.homog);a.x=c.x;a.y=c.y;a.z=0;a.xo=a.x;a.yo=a.y;a.zo=a.z;a.vxo=a.vx;a.vyo=a.vy;a.vzo=a.vz;a.deltat=b;a.fx=0;a.fy=0;a.fz=0},setVelocity:function(a,b,c,d){d||(d=0);a.vx=b;a.vy=c;a.vz=d},move:function(a){a.pos=[a.x,a.y,1];a.internalmove=!0;fa&&X.down&&a.el===fa.mover||Ia(a.el,g.realVector(a.pos),"homog");
+a.el.sx=a.x;a.el.sy=a.y;a.internalmove=!1},proceedMotion:function(a,b,c,d){if(!a.fixed)for(a.x=a.mx,a.y=a.my,a.z=a.mz,a.vx=a.mvx,a.vy=a.mvy,a.vz=a.mvz,b=0;b<c;b++)a.x+=d[b]*a.dx[b]*a.deltat,a.y+=d[b]*a.dy[b]*a.deltat,a.z+=d[b]*a.dz[b]*a.deltat,a.vx+=d[b]*a.dvx[b]*a.deltat,a.vy+=d[b]*a.dvy[b]*a.deltat,a.vz+=d[b]*a.dvz[b]*a.deltat},calculateForces:function(a){var b=Math.sqrt(a.vx*a.vx+a.vy*a.vy+a.vz*a.vz);a.lnfrict=-Math.log((1-a.friction)*(1-a.env.friction)*(.1<b&&a.limitSpeed?.1/b:1));a.fx+=-a.vx*
+a.lnfrict*a.mass;a.fy+=-a.vy*a.lnfrict*a.mass;a.fz+=-a.vz*a.lnfrict*a.mass},calculateDelta:function(a,b){a.dx[b]=a.vx;a.dy[b]=a.vy;a.dz[b]=a.vz;a.dvx[b]=a.fx/a.mass;a.dvy[b]=a.fy/a.mass;a.dvz[b]=a.fz/a.mass},savePos:function(a,b){a.dx[b]=a.x;a.dy[b]=a.y;a.dz[b]=a.z;a.dvx[b]=a.vx;a.dvy[b]=a.vy;a.dvz[b]=a.vz},restorePos:function(a,b){a.fixed||(a.x=a.dx[b],a.y=a.dy[b],a.z=a.dz[b],a.vx=a.dvx[b],a.vy=a.dvy[b],a.vz=a.dvz[b])},sqDist:function(a,b,c){var d=(a.dx[b]-a.dx[c])*(a.dx[b]-a.dx[c]),d=d+(a.dy[b]-
+a.dy[c])*(a.dy[b]-a.dy[c]),d=d+(a.dz[b]-a.dz[c])*(a.dz[b]-a.dz[c]),d=d+(a.dvx[b]-a.dvx[c])*(a.dvx[b]-a.dvx[c]),d=d+(a.dvy[b]-a.dvy[c])*(a.dvy[b]-a.dvy[c]);return d+=(a.dvz[b]-a.dvz[c])*(a.dvz[b]-a.dvz[c])},kineticEnergy:function(a){return.5*a.mass*(a.vx*a.vx+a.vy*a.vy+a.vz*a.vz)},storePosition:function(a){a.mx=a.x;a.my=a.y;a.mz=a.z;a.mvx=a.vx;a.mvy=a.vy;a.mvz=a.vz},recallPosition:function(a){a.fixed||(a.x=a.mx,a.y=a.my,a.z=a.mz,a.vx=a.mvx,a.vy=a.mvy,a.vz=a.mvz)},doCollisions:function(a){}},Sun:{reset:function(a,
+b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.mass&&(a.mass=10);"undefined"===typeof a.friction&&(a.friction=0);a.charge=0;a.x=0;a.y=0;a.z=0},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){var c=D.extractPoint(a.el.homog);a.x=c.x;a.y=c.y;a.z=0},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateDelta:function(a,b){},calculateForces:function(a){for(var b=a.x,c=a.y,d=a.z,e=0;e<ga.length;e++){var f=
+ga[e],g=f.behavior.x,k=f.behavior.y,l=f.behavior.z,m=Math.sqrt((b-g)*(b-g)+(c-k)*(c-k)+(d-l)*(d-l)),k=(c-k)*a.mass*f.behavior.mass/(m*m*m),l=(d-l)*a.mass*f.behavior.mass/(m*m*m);f.behavior.fx+=(b-g)*a.mass*f.behavior.mass/(m*m*m)*f.behavior.mass;f.behavior.fy+=k*f.behavior.mass;f.behavior.fz+=l*f.behavior.mass}},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},
+Velocity:{reset:function(a){var b=u.csnames[a.geo[1]];console.log(b);var c=D.extractPoint(b.homog);a=D.extractPoint(u.csnames[a.geo[2]].homog);b=b.behavior;O[b.type].setVelocity(b,a.x-c.x,a.y-c.y,0)},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){var b=u.csnames[a.geo[2]];if(!fa||!X.down||b!==fa.mover){var c=u.csnames[a.geo[1]];a=D.extractPoint(c.homog);c=c.behavior;a=g.realVector([a.x+c.vx,a.y+c.vy,1]);
+Ia(b,a,"homog")}},proceedMotion:function(a,b,c,d){},calculateForces:function(a){},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},Gravity:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.strength&&(a.strength=1);a.namea=b.args[0];a.nameb=b.args[1];a.ma=u.csnames[a.namea];a.mb=u.csnames[a.nameb]},
+resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateDelta:function(a,b){},calculateForces:function(a){var b=D.extractPoint(a.ma.homog),c=D.extractPoint(a.mb.homog),d=(c.x-b.x)*a.strength;a=(c.y-b.y)*a.strength;for(b=0;b<ga.length;b++)c=ga[b],c.behavior.fx+=d*c.behavior.mass,c.behavior.fy+=a*c.behavior.mass,c.behavior.fz+=0*c.behavior.mass},savePos:function(a,b){},
+restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},Spring:{reset:function(a,b){a.el=b;"undefined"===typeof a.strength&&(a.strength=1);"undefined"===typeof a.amplitude&&(a.amplitude=0);"undefined"===typeof a.phase&&(a.phase=0);"undefined"===typeof a.speed&&(a.speed=1);"undefined"===typeof a.l0&&(a.l0=0);"undefined"===typeof a.stype&&(a.stype=1);"undefined"===typeof a.readOnInit&&
+(a.readOnInit=!1);a.namea=b.args[0];a.nameb=b.args[1];a.ma=u.csnames[a.namea];a.mb=u.csnames[a.nameb];var c=D.extractPoint(a.ma.homog),d=D.extractPoint(a.mb.homog);a.l0=Math.sqrt((c.x-d.x)*(c.x-d.x)+(c.y-d.y)*(c.y-d.y));a.env=O.env},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateForces:function(a){var b,c,d,e;!a.ma.behavior||fa&&X.down&&a.ma===fa.mover?(c=D.extractPoint(a.ma.homog),
+b=c.x,d=c.y):(b=a.ma.behavior.x,d=a.ma.behavior.y);!a.mb.behavior||fa&&X.down&&a.mb===fa.mover?(e=D.extractPoint(a.mb.homog),c=e.x,e=e.y):(c=a.mb.behavior.x,e=a.mb.behavior.y);var f=Math.sqrt((b-c)*(b-c)+(d-e)*(d-e)),g=a.l0,k=a.stype;1===k&&(g=0);var l=0;if(2===k||3===k)l=a.ma.behavior.mass*a.mb.behavior.mass*a.strength;2===k&&(l=-l);var m,n;if(0===f||0!==k&&1!==k)if(a.ma.behavior&&a.mb.behavior&&0!==f){if(f*=f*f,2===k||3===k)m=(b-c)*l/f,n=(d-e)*l/f}else m=n=0;else m=-(b-c)*a.strength*(f-g)/f*a.env.springstrength,
+n=-(d-e)*a.strength*(f-g)/f*a.env.springstrength;a.ma.behavior&&(a.ma.behavior.fx+=m,a.ma.behavior.fy+=n);a.mb.behavior&&(a.mb.behavior.fx-=m,a.mb.behavior.fy-=n)},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},det:function(a,b,c,d,e,f){return c*f-e*d+e*b-a*f+a*d-c*b},Bouncer:{reset:function(a,b){a.el=b;"undefined"===typeof a.xdamp&&
+(a.xdamp=0);"undefined"===typeof a.ydamp&&(a.ydamp=0);"undefined"===typeof a.motorchanger&&(a.motorchanger=!0);a.namea=b.args[0];a.nameb=b.args[1];a.ma=u.csnames[a.namea];a.mb=u.csnames[a.nameb];var c=D.extractPoint(a.ma.homog),d=D.extractPoint(a.mb.homog);a.x1o=1.01*c.x-.01*d.x;a.y1o=1.01*c.y-.01*d.y;a.x2o=1.01*d.x-.01*c.x;a.y2o=1.01*d.y-.01*c.y;a.env=O.env},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){a.deltat=b},setVelocity:function(a,b,c,d){},move:function(a){},
+proceedMotion:function(a,b,c,d){},calculateForces:function(a){},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){for(var b=D.extractPoint(a.ma.homog),c=D.extractPoint(a.mb.homog),d=b.x,b=b.y,e=c.x,c=c.y,f=a.x1o,g=a.y1o,k=a.x2o,m=a.y2o,n=Math.sqrt((d-e)*(d-e)+(b-c)*(b-c)),p=(d-e)/n,n=(b-c)/n,q=0;q<ga.length;q++){var t=ga[q],
+u=t.behavior.xo,v=t.behavior.yo,w=t.behavior.x,x=t.behavior.y,y=l.mult(l.complex(f,g),l.complex(e,c)),z=l.mult(l.complex(k,m),l.complex(d,b)),y=l.sub(y,z),z=l.mult(l.complex(u,v),l.complex(d,b)),y=l.add(y,z),z=l.mult(l.complex(u,v),l.complex(e,c)),y=l.sub(y,z),z=l.sub(l.complex(f,g),l.complex(k,m)),y=l.div(y,z);0>O.det(d,b,e,c,w,x)*O.det(d,b,e,c,y.value.real,y.value.imag)&&0>O.det(d,b,w,x,y.value.real,y.value.imag)*O.det(e,c,w,x,y.value.real,y.value.imag)&&(v=t.behavior.mvx+a.deltat*(-y.value.real+
+t.behavior.xo),w=t.behavior.mvy+a.deltat*(-y.value.imag+t.behavior.yo),u=p*v+n*w,v=n*v-p*w,t.behavior.x=y.value.real,t.behavior.y=y.value.imag,t.behavior.vx=p*u*(1-a.xdamp),t.behavior.vy=n*u*(1-a.xdamp),t.behavior.vx+=-n*v*(1-a.ydamp),t.behavior.vy+=p*v*(1-a.ydamp))}a.x1o=d;a.y1o=b;a.x2o=e;a.y2o=c}},Environment:{init:function(a){"undefined"===typeof a.gravity&&(a.gravity=0);"undefined"===typeof a.friction&&(a.friction=0);"undefined"===typeof a.springstrength&&(a.springstrength=1);"undefined"!==typeof a.accuracy&&
+(Mb=a.accuracy);"undefined"!==typeof a.deltat&&sa(a.deltat/.6);"undefined"===typeof a.charges&&(a.charges=!1);"undefined"===typeof a.balls&&(a.balls=!1);"undefined"===typeof a.newton&&(a.newton=!1);"undefined"===typeof a.ballInteractionBoosting&&(a.ballInteractionBoosting=1);O.env=a;a.errorbound=.001;a.lowestdeltat=1E-7;a.slowdownfactor=2},reset:function(a){},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},
+proceedMotion:function(a,b,c,d){},calculateForces:function(a){var b,c,d,e,f,g,k,l,m,n;if(a.newton)for(b=0;b<ga.length-1;b++)for(c=ga[b],d=c.behavior.x,e=c.behavior.y,f=b+1;f<ga.length;f++)g=ga[f],k=g.behavior.x,l=g.behavior.y,n=Math.sqrt((d-k)*(d-k)+(e-l)*(e-l)),k=(d-k)*c.behavior.mass*g.behavior.mass/(n*n*n),l=(e-l)*c.behavior.mass*g.behavior.mass/(n*n*n),c.behavior.fx-=k,c.behavior.fy-=l,g.behavior.fx+=k,g.behavior.fy+=l;if(a.charges)for(b=0;b<ga.length-1;b++)for(c=ga[b],d=c.behavior.x,e=c.behavior.y,
+f=b+1;f<ga.length;f++)g=ga[f],k=g.behavior.x,l=g.behavior.y,n=Math.sqrt((d-k)*(d-k)+(e-l)*(e-l)),k=(d-k)*c.behavior.charge*g.behavior.charge/(n*n*n),l=(e-l)*c.behavior.charge*g.behavior.charge/(n*n*n),c.behavior.fx+=k,c.behavior.fy+=l,g.behavior.fx-=k,g.behavior.fy-=l;if(a.balls)for(b=0;b<ga.length-1;b++)if(c=ga[b],0!==c.behavior.radius)for(d=c.behavior.x,e=c.behavior.y,f=b+1;f<ga.length;f++)g=ga[f],0!==g.behavior.radius&&(k=g.behavior.x,l=g.behavior.y,m=c.behavior.radius+g.behavior.radius,n=Math.sqrt((d-
+k)*(d-k)+(e-l)*(e-l)),0===a.ballInteractionBoosting?(k=(d-k)/(n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n)*(n>m?0:(n-m)*(n-m))):1===a.ballInteractionBoosting?(k=(d-k)/(n*n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n*n)*(n>m?0:(n-m)*(n-m))):(k=(d-k)/(n*n*n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n*n*n)*(n>m?0:(n-m)*(n-m))),c.behavior.fx+=k,c.behavior.fy+=l,g.behavior.fx-=k,g.behavior.fy-=l);for(b=0;b<ga.length;b++)c=ga[b],c.behavior.fx+=0,c.behavior.fy+=-a.gravity*c.behavior.mass,c.behavior.fz+=0},calculateDelta:function(a,
+b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}}};return oa};return E}(),createCindy=CindyJS;"undefined"!==typeof process&&"undefined"!==typeof module&&"undefined"!==typeof module.exports&&"undefined"===typeof window&&(module.exports=CindyJS);
+//# sourceMappingURL=Cindy.js.map
diff --git a/texmf-dist/doc/support/ketpic/CindyJS/CindyJS.css b/texmf-dist/doc/support/ketpic/CindyJS/CindyJS.css
new file mode 100644
index 00000000..2fdefb34
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/CindyJS/CindyJS.css
@@ -0,0 +1,121 @@
+.CindyJS-toolbar button, .CindyJS-animbuttons button, .CindyJS-button button, .CindyJS-button label {
+ background-color: #bfc4d0;
+ border: 1px solid #d0d0d0;
+ box-shadow: inset 1px 1px 2px #fff, inset -1px -1px 2px #aaa;
+ outline: none; }
+
+.CindyJS-toolbar button:active, .CindyJS-animbuttons button:active, .CindyJS-toolbar button.CindyJS-active, .CindyJS-animbuttons button.CindyJS-active, .CindyJS-button button:active, .CindyJS-button label:active, .CindyJS-button input[type=checkbox]:checked + label {
+ background-color: #aaafbb;
+ box-shadow: inset 1px 1px 2px #999, inset -1px -1px 2px #ccc; }
+
+.CindyJS-toolbar, .CindyJS-animbuttons {
+ line-height: 0px; }
+ .CindyJS-toolbar button, .CindyJS-animbuttons button {
+ display: inline-block;
+ margin: 0px;
+ padding: 0px; }
+ .CindyJS-toolbar button:focus, .CindyJS-animbuttons button:focus {
+ border-color: #06f; }
+ .CindyJS-toolbar img, .CindyJS-animbuttons img {
+ margin: 0px;
+ border: none;
+ display: block; }
+
+.CindyJS-widget {
+ overflow: hidden;
+ z-index: 0; }
+ .CindyJS-widget canvas {
+ z-index: 1; }
+ .CindyJS-widget .CindyJS-baseline {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+ position: absolute;
+ white-space: nowrap;
+ margin-top: -1000px; }
+ .CindyJS-widget .CindyJS-baseline > img {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+ display: inline;
+ position: static;
+ vertical-align: baseline;
+ visibility: hidden;
+ margin-right: -1px; }
+ .CindyJS-widget .CindyJS-baseline .CindyJS-button {
+ display: inline-block; }
+ .CindyJS-widget .CindyJS-button {
+ position: relative;
+ z-index: 2; }
+ .CindyJS-widget .CindyJS-toolbar, .CindyJS-widget .CindyJS-animbuttons {
+ position: absolute; }
+ .CindyJS-widget .CindyJS-toolbar button, .CindyJS-widget .CindyJS-animbuttons button {
+ position: relative;
+ z-index: 3; }
+ .CindyJS-widget .CindyJS-animspeed {
+ position: relative;
+ z-index: 3; }
+ .CindyJS-widget .CindyJS-animcontrols {
+ bottom: 5px;
+ left: 5px; }
+
+.CindyJS-button input[type=checkbox] {
+ position: absolute;
+ left: -10000px; }
+
+.CindyJS-button button, .CindyJS-button label {
+ margin: -6px -7px;
+ padding: 5px 6px;
+ border-radius: 4px; }
+
+.CindyJS-button button:focus, .CindyJS-button input[type=checkbox]:focus + label {
+ box-shadow: 0px 0px 3px #06f, inset 1px 1px 2px #fff, inset -1px -1px 2px #aaa; }
+
+.CindyJS-button button:focus:active, .CindyJS-button input[type=checkbox]:focus:checked + label {
+ background-color: #aaafbb;
+ box-shadow: 0px 0px 3px #06f, inset 1px 1px 2px #999, inset -1px -1px 2px #ccc; }
+
+.CindyJS-editabletext {
+ border: 1px solid #000;
+ margin: -4px -4px -1px;
+ padding: 4px 4px 1px; }
+ .CindyJS-editabletext:focus {
+ box-shadow: 0px 0px 3px #06f; }
+
+.CindyJS-toolbar div {
+ line-height: 0px; }
+
+.CindyJS-toolbar span.CindyJS-spacer {
+ display: inline-block;
+ margin: 0px;
+ padding: 1px;
+ width: 32px;
+ height: 24px; }
+
+.CindyJS-animcontrols {
+ position: absolute;
+ background-color: #00f;
+ height: 36px;
+ width: 102px; }
+ .CindyJS-animcontrols .CindyJS-animspeed {
+ height: 10px;
+ width: 100%;
+ border-radius: 4px;
+ background-color: #ff7f7f;
+ box-shadow: inset 1px 1px 2px #999, inset -1px -1px 2px #ccc; }
+ .CindyJS-animcontrols .CindyJS-animspeed div {
+ width: 50%;
+ height: 100%;
+ border-radius: 4px;
+ background-color: #cc0000;
+ box-shadow: inset 1px 1px 2px #fff, inset -1px -1px 2px #aaa; }
+ .CindyJS-animcontrols .CindyJS-animbuttons {
+ white-space: nowrap; }
+
+.CindyJS-animbuttons button {
+ border-radius: 4px;
+ width: 34px;
+ height: 26px;
+ box-sizing: border-box; }
+
+/*# sourceMappingURL=CindyJS.css.map */ \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/LICENSE b/texmf-dist/doc/support/ketpic/LICENSE
new file mode 100644
index 00000000..6bdf8962
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/LICENSE
@@ -0,0 +1,14 @@
+// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team
+//
+//This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>
diff --git a/texmf-dist/doc/support/ketpic/TODO b/texmf-dist/doc/support/ketpic/TODO
new file mode 100644
index 00000000..165a8447
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/TODO
@@ -0,0 +1,5 @@
+Installation routine
+
+manual source files from Takato-sensei
+
+
diff --git a/texmf-dist/doc/support/ketpic/ketjava/KetCindyPlugin.jar b/texmf-dist/doc/support/ketpic/ketjava/KetCindyPlugin.jar
new file mode 100644
index 00000000..36c8bdcc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketjava/KetCindyPlugin.jar
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/KeTCindyReferenceJ.pdf b/texmf-dist/doc/support/ketpic/ketmanual/KeTCindyReferenceJ.pdf
new file mode 100644
index 00000000..0edfbc97
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/KeTCindyReferenceJ.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/helpbuttonJ.pdf b/texmf-dist/doc/support/ketpic/ketmanual/helpbuttonJ.pdf
new file mode 100644
index 00000000..a05f7ab6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/helpbuttonJ.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/helpbuttonsE.pdf b/texmf-dist/doc/support/ketpic/ketmanual/helpbuttonsE.pdf
new file mode 100644
index 00000000..c2f6c833
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/helpbuttonsE.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/helplist3dJ.pdf b/texmf-dist/doc/support/ketpic/ketmanual/helplist3dJ.pdf
new file mode 100644
index 00000000..44323de1
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/helplist3dJ.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/helplistJ.pdf b/texmf-dist/doc/support/ketpic/ketmanual/helplistJ.pdf
new file mode 100644
index 00000000..1023e956
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/helplistJ.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/referencesci5_1_1J.pdf b/texmf-dist/doc/support/ketpic/ketmanual/referencesci5_1_1J.pdf
new file mode 100644
index 00000000..c606ebcc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/referencesci5_1_1J.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/refketlayer20161211J.pdf b/texmf-dist/doc/support/ketpic/ketmanual/refketlayer20161211J.pdf
new file mode 100644
index 00000000..ca3740c8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/refketlayer20161211J.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/refketpic161211J.pdf b/texmf-dist/doc/support/ketpic/ketmanual/refketpic161211J.pdf
new file mode 100644
index 00000000..f108f7e7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/refketpic161211J.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketmanual/refketslide161211J.pdf b/texmf-dist/doc/support/ketpic/ketmanual/refketslide161211J.pdf
new file mode 100644
index 00000000..50cc2f36
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketmanual/refketslide161211J.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figure.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figure.cdy
new file mode 100644
index 00000000..39743713
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figure.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figurepdf.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figurepdf.cdy
new file mode 100644
index 00000000..a7ec7bc8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0101figurepdf.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0102figure2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0102figure2.cdy
new file mode 100644
index 00000000..2c47d865
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0102figure2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0103polygon.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0103polygon.cdy
new file mode 100644
index 00000000..4cd7f45d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0103polygon.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0104shade.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0104shade.cdy
new file mode 100644
index 00000000..1c15aad4
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0104shade.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0105vector.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0105vector.cdy
new file mode 100644
index 00000000..8141e170
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0105vector.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0106bowhatch.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0106bowhatch.cdy
new file mode 100644
index 00000000..66665e7b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0106bowhatch.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0107hyperbolahatch.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0107hyperbolahatch.cdy
new file mode 100644
index 00000000..52472b6b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0107hyperbolahatch.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0108cycloid.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0108cycloid.cdy
new file mode 100644
index 00000000..55dc91da
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0108cycloid.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0109epitrochoid.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0109epitrochoid.cdy
new file mode 100644
index 00000000..fb3d1edd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0109epitrochoid.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0110hypotrochoid.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0110hypotrochoid.cdy
new file mode 100644
index 00000000..20bdb0b6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s01figure/s0110hypotrochoid.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201basic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201basic.cdy
new file mode 100644
index 00000000..554dce95
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201basic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201graph.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201graph.cdy
new file mode 100644
index 00000000..a77e70e6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0201graph.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph1.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph1.cdy
new file mode 100644
index 00000000..1fc67dfe
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph1.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph2.cdy
new file mode 100644
index 00000000..9230fd0d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0202graph2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203ellipse.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203ellipse.cdy
new file mode 100644
index 00000000..be4aa3b0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203ellipse.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203graph2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203graph2.cdy
new file mode 100644
index 00000000..4923347d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0203graph2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204graph3.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204graph3.cdy
new file mode 100644
index 00000000..bac0217a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204graph3.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204parabola.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204parabola.cdy
new file mode 100644
index 00000000..14ba552f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0204parabola.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205coniccurve.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205coniccurve.cdy
new file mode 100644
index 00000000..1989b525
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205coniccurve.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205hyperbola.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205hyperbola.cdy
new file mode 100644
index 00000000..4e499a8c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0205hyperbola.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0206defexp.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0206defexp.cdy
new file mode 100644
index 00000000..e3cfb996
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0206defexp.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0207envelope.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0207envelope.cdy
new file mode 100644
index 00000000..e4845b6e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0207envelope.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0208intersecthatch.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0208intersecthatch.cdy
new file mode 100644
index 00000000..51f9e599
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0208intersecthatch.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0209diffeq.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0209diffeq.cdy
new file mode 100644
index 00000000..b26105c3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0209diffeq.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0210diffeq2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0210diffeq2.cdy
new file mode 100644
index 00000000..60643944
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0210diffeq2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0211plotdataS.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0211plotdataS.cdy
new file mode 100644
index 00000000..a17108af
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0211plotdataS.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0212implicit.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0212implicit.cdy
new file mode 100644
index 00000000..1f17df2a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0212implicit.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0213implicithatch.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0213implicithatch.cdy
new file mode 100644
index 00000000..14e28924
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s02graph/s0213implicithatch.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0301table.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0301table.cdy
new file mode 100644
index 00000000..f69402ce
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0301table.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2.cdy
new file mode 100644
index 00000000..53a21e88
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2line.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2line.cdy
new file mode 100644
index 00000000..4d598e7a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0302table2line.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0303papersquared.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0303papersquared.cdy
new file mode 100644
index 00000000..68595c9e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0303papersquared.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0304graphforincanddec.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0304graphforincanddec.cdy
new file mode 100644
index 00000000..b80556ef
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0304graphforincanddec.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0305incanddec.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0305incanddec.cdy
new file mode 100644
index 00000000..8749d495
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s03table/s0305incanddec.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/dogwalk.png b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/dogwalk.png
new file mode 100644
index 00000000..4cb91fa0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/dogwalk.png
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/heart.png b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/heart.png
new file mode 100644
index 00000000..1aa2d7fd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/heart.png
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/mtfuji.png b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/mtfuji.png
new file mode 100644
index 00000000..4a060da9
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/mtfuji.png
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0401bezierbasic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0401bezierbasic.cdy
new file mode 100644
index 00000000..280d0afd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0401bezierbasic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0402bezier2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0402bezier2.cdy
new file mode 100644
index 00000000..cb1a9dc4
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0402bezier2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0403bezierspline.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0403bezierspline.cdy
new file mode 100644
index 00000000..aedd63c6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0403bezierspline.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0404mtfuji.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0404mtfuji.cdy
new file mode 100644
index 00000000..d0df99e0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0404mtfuji.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0405dogwalk.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0405dogwalk.cdy
new file mode 100644
index 00000000..a0c6df7a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0405dogwalk.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0406heart.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0406heart.cdy
new file mode 100644
index 00000000..870a1362
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s04bezier/s0406heart.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/CindyScriptset.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/CindyScriptset.txt
new file mode 100644
index 00000000..045bf884
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/CindyScriptset.txt
@@ -0,0 +1,17 @@
+use("KetCindyPlugin");
+if(isexists(plugindirectory,"dirhead.txt"),
+ setdirectory(plugindirectory);
+ import("dirhead.txt");
+,
+ Dirhead=getdirhead();
+);
+Shellfile="";
+setdirectory(Dirhead);
+import("setketcindy.txt");
+import("ketoutset.txt");
+
+setdirectory(Dirwork);
+
+Helplist(["+","+3d","+mv"],"helpJ");
+Ketinit();
+Ketinit3d();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501basic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501basic.cdy
new file mode 100644
index 00000000..96ffa3d3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501basic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501plane.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501plane.cdy
new file mode 100644
index 00000000..e5ee1455
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0501plane.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0502spacecurve.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0502spacecurve.cdy
new file mode 100644
index 00000000..64d9c939
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0502spacecurve.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0503perp.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0503perp.cdy
new file mode 100644
index 00000000..272029ac
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0503perp.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0504embed.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0504embed.cdy
new file mode 100644
index 00000000..65becd6d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0504embed.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0505bezier3d.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0505bezier3d.cdy
new file mode 100644
index 00000000..32bf0a6f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0505bezier3d.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0506embedhatch.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0506embedhatch.cdy
new file mode 100644
index 00000000..a6b7a3fe
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0506embedhatch.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0507polyhedron.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0507polyhedron.cdy
new file mode 100644
index 00000000..a86fae8f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0507polyhedron.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0508concatobj.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0508concatobj.cdy
new file mode 100644
index 00000000..8605f532
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s0508concatobj.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05091tetra.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05091tetra.cdy
new file mode 100644
index 00000000..3fcd5e91
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05091tetra.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05092cubiccut.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05092cubiccut.cdy
new file mode 100644
index 00000000..41ac02bc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05092cubiccut.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05093cubiccut2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05093cubiccut2.cdy
new file mode 100644
index 00000000..0e434b16
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s05spacefigure/s05093cubiccut2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/CindyScriptset.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/CindyScriptset.txt
new file mode 100755
index 00000000..3d0e239a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/CindyScriptset.txt
@@ -0,0 +1,17 @@
+use("KetCindyPlugin");
+if(isexists(plugindirectory,"dirhead.txt"),
+ setdirectory(plugindirectory);
+ import("dirhead.txt");
+,
+ Dirhead=getdirhead();
+);
+Shellfile="";
+setdirectory(Dirhead);
+import("setketcindy.txt");
+import("ketoutset.txt");
+
+setdirectory(Dirwork);
+
+Helplist(["+","+3d","+mv"],"helpJ");
+
+Shellfile="mv"; \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0601cycloid.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0601cycloid.cdy
new file mode 100755
index 00000000..50896c81
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0601cycloid.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0602diffeq.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0602diffeq.cdy
new file mode 100755
index 00000000..c07f11d3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0602diffeq.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0603envelope.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0603envelope.cdy
new file mode 100755
index 00000000..6c57146d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0603envelope.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0604diffeq2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0604diffeq2.cdy
new file mode 100755
index 00000000..f46a4bf9
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0604diffeq2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0605cycloid2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0605cycloid2.cdy
new file mode 100755
index 00000000..bcd417d7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0605cycloid2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0606epitrochoid.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0606epitrochoid.cdy
new file mode 100755
index 00000000..1f4de6f1
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0606epitrochoid.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0607hypotrochoid.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0607hypotrochoid.cdy
new file mode 100755
index 00000000..5739299d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0607hypotrochoid.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0608cycloid3.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0608cycloid3.cdy
new file mode 100755
index 00000000..f1d8418a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s06animation/s0608cycloid3.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/animpointoncircle.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/animpointoncircle.tex
new file mode 100644
index 00000000..32e577d2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/animpointoncircle.tex
@@ -0,0 +1,54 @@
+\def\parapath{/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig}%
+\begin{animateinline}[loop]{10}%
+\scalebox{1}{\input{\parapath/pointoncircle/p001.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p002.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p003.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p004.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p005.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p006.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p007.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p008.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p009.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p010.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p011.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p012.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p013.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p014.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p015.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p016.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p017.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p018.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p019.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p020.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p021.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p022.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p023.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p024.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p025.tex}}%
+\newframe%
+\scalebox{1}{\input{\parapath/pointoncircle/p026.tex}}%
+\end{animateinline}%
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.pdf
new file mode 100644
index 00000000..54b9d79e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.txt
new file mode 100644
index 00000000..bb7171eb
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/cindyscreen.txt
@@ -0,0 +1,8 @@
+%%Title: cindyscreen.pdf
+%%Creator: extractbb 20160307
+%%BoundingBox: 0 0 803 285
+%%HiResBoundingBox: 0.000000 0.000000 803.000000 285.000000
+%%PDFVersion: 1.4
+%%Pages: 1
+%%CreationDate: Sun Jun 25 09:11:39 2017
+
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paraall.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paraall.sce
new file mode 100644
index 00000000..2da97ad6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paraall.sce
@@ -0,0 +1,13 @@
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');//
+Ketlib=lib("/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6");//
+Ketinit();//
+Setwindow([(-3),(8)],[(-1.5),(1.5)]);
+pi=%pi;////
+fL=["sinecurve/p001.sce","sinecurve/p002.sce","sinecurve/p003.sce","sinecurve/p004.sce","sinecurve/p005.sce","sinecurve/p006.sce","sinecurve/p007.sce","sinecurve/p008.sce","sinecurve/p009.sce","sinecurve/p010.sce","sinecurve/p011.sce","sinecurve/p012.sce","sinecurve/p013.sce","sinecurve/p014.sce","sinecurve/p015.sce","sinecurve/p016.sce","sinecurve/p017.sce","sinecurve/p018.sce","sinecurve/p019.sce","sinecurve/p020.sce","sinecurve/p021.sce","sinecurve/p022.sce","sinecurve/p023.sce","sinecurve/p024.sce","sinecurve/p025.sce","sinecurve/p026.sce","sinecurve/p027.sce","sinecurve/p028.sce","sinecurve/p029.sce","sinecurve/p030.sce","sinecurve/p031.sce"]//
+Dt=mgetl(fL(1));//
+Dt=Dt(1:(size(Dt,1)-1),:)//
+for I=2:size(fL,2),Tmp=mgetl(fL(I));N=size(Tmp,1)-1;Tmp1=Tmp(13:N,:);Dt=[Dt;Tmp1],end//
+mputl(Dt,'sinecurve/all.sce')//
+exec('sinecurve/all.sce',-1)//
+mputl('||||','resultS.txt')//
+quit()//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paracrdr.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paracrdr.sce
new file mode 100644
index 00000000..1f300602
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paracrdr.sce
@@ -0,0 +1,8 @@
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');//
+Ketlib=lib("/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6");//
+Ketinit();//
+Setwindow([(-3),(8)],[(-1.5),(1.5)]);
+pi=%pi;////
+createdir("sinecurve");//
+mputl('||||','resultS.txt')//
+quit()//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paramain.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paramain.tex
new file mode 100644
index 00000000..39603a5c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0704paramain.tex
@@ -0,0 +1,18 @@
+\documentclass{ujarticle}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{amsmath,amssymb}
+\usepackage{graphicx}
+\usepackage{color}
+\usepackage[dvipdfmx,colorlinks=true,linkcolor=blue,filecolor=blue]{hyperref}
+
+\setmargin{20}{20}{20}{20}
+
+\begin{document}
+
+\verb|figs0704para| by \ketcindy
+\vspace{5mm}
+
+\input{figs0704para.tex}
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animateall.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animateall.sce
new file mode 100644
index 00000000..686cd696
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animateall.sce
@@ -0,0 +1,13 @@
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');//
+Ketlib=lib("/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6");//
+Ketinit();//
+Setwindow([(-2.5),(2.5)],[(-2.5),(2.5)]);
+pi=%pi;////
+fL=["pointoncircle/p001.sce","pointoncircle/p002.sce","pointoncircle/p003.sce","pointoncircle/p004.sce","pointoncircle/p005.sce","pointoncircle/p006.sce","pointoncircle/p007.sce","pointoncircle/p008.sce","pointoncircle/p009.sce","pointoncircle/p010.sce","pointoncircle/p011.sce","pointoncircle/p012.sce","pointoncircle/p013.sce","pointoncircle/p014.sce","pointoncircle/p015.sce","pointoncircle/p016.sce","pointoncircle/p017.sce","pointoncircle/p018.sce","pointoncircle/p019.sce","pointoncircle/p020.sce","pointoncircle/p021.sce","pointoncircle/p022.sce","pointoncircle/p023.sce","pointoncircle/p024.sce","pointoncircle/p025.sce","pointoncircle/p026.sce"]//
+Dt=mgetl(fL(1));//
+Dt=Dt(1:(size(Dt,1)-1),:)//
+for I=2:size(fL,2),Tmp=mgetl(fL(I));N=size(Tmp,1)-1;Tmp1=Tmp(13:N,:);Dt=[Dt;Tmp1],end//
+mputl(Dt,'pointoncircle/all.sce')//
+exec('pointoncircle/all.sce',-1)//
+mputl('||||','resultS.txt')//
+quit()//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatecrdr.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatecrdr.sce
new file mode 100644
index 00000000..ffe85fb3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatecrdr.sce
@@ -0,0 +1,9 @@
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');//
+Ketlib=lib("/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6");//
+Ketinit();//
+Setwindow([(-2.5),(2.5)],[(-2.5),(2.5)]);
+pi=%pi;////
+rmdir("pointoncircle","s");//
+createdir("pointoncircle");//
+mputl('||||','resultS.txt')//
+quit()//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatemain.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatemain.tex
new file mode 100644
index 00000000..74a8cc9e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animatemain.tex
@@ -0,0 +1,19 @@
+\documentclass{ujarticle}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{amsmath,amssymb}
+\usepackage{graphicx}
+\usepackage{color}
+\usepackage[dvipdfmx]{animate}
+\usepackage[dvipdfmx,colorlinks=true,linkcolor=blue,filecolor=blue]{hyperref}
+
+\setmargin{20}{20}{20}{20}
+
+\begin{document}
+
+\verb|figs0706animate| by \ketcindy
+\vspace{5mm}
+
+\input{figs0706animate.tex}
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationall.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationall.sce
new file mode 100644
index 00000000..312c3be2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationall.sce
@@ -0,0 +1,13 @@
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');//
+Ketlib=lib("/Users/takatoosetsuo/ketcindy/ketlib/ketpicsciL5");//
+Ketinit();//
+Setwindow([(-2.5),(2.5)],[(-2.5),(2.5)]);
+pi=%pi;////
+fL=["pointoncircle/p001.sce","pointoncircle/p002.sce","pointoncircle/p003.sce","pointoncircle/p004.sce","pointoncircle/p005.sce","pointoncircle/p006.sce","pointoncircle/p007.sce","pointoncircle/p008.sce","pointoncircle/p009.sce","pointoncircle/p010.sce","pointoncircle/p011.sce","pointoncircle/p012.sce","pointoncircle/p013.sce","pointoncircle/p014.sce","pointoncircle/p015.sce","pointoncircle/p016.sce","pointoncircle/p017.sce","pointoncircle/p018.sce","pointoncircle/p019.sce","pointoncircle/p020.sce","pointoncircle/p021.sce","pointoncircle/p022.sce","pointoncircle/p023.sce","pointoncircle/p024.sce","pointoncircle/p025.sce","pointoncircle/p026.sce"]//
+Dt=mgetl(fL(1));//
+Dt=Dt(1:(size(Dt,1)-1),:)//
+for I=2:size(fL,2),Tmp=mgetl(fL(I));N=size(Tmp,1)-1;Tmp1=Tmp(13:N,:);Dt=[Dt;Tmp1],end//
+mputl(Dt,'pointoncircle/all.sce')//
+exec('pointoncircle/all.sce',-1)//
+mputl('||||','resultS.txt')//
+quit()//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationcrdr.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationcrdr.sce
new file mode 100644
index 00000000..523924e4
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationcrdr.sce
@@ -0,0 +1,9 @@
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');//
+Ketlib=lib("/Users/takatoosetsuo/ketcindy/ketlib/ketpicsciL5");//
+Ketinit();//
+Setwindow([(-2.5),(2.5)],[(-2.5),(2.5)]);
+pi=%pi;////
+rmdir("pointoncircle","s");//
+createdir("pointoncircle");//
+mputl('||||','resultS.txt')//
+quit()//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationmain.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationmain.tex
new file mode 100644
index 00000000..815560ef
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figs0706animationmain.tex
@@ -0,0 +1,18 @@
+\documentclass{jarticle}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{amsmath,amssymb}
+\usepackage{graphicx,color}
+\usepackage[dvipdfmx]{animate}
+\usepackage[dvipdfmx,colorlinks=true,linkcolor=blue,filecolor=blue]{hyperref}
+
+\setmargin{20}{20}{20}{20}
+
+\begin{document}
+
+\verb|figs0706animation| by \ketcindy
+\vspace{5mm}
+
+\input{figs0706animation.tex}
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.sce
new file mode 100644
index 00000000..e80242c4
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.sce
@@ -0,0 +1,42 @@
+//date time=2017/6/25 09:09:01
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicsciL5');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='figsin.tex';
+Fnamesci='figsin.sce';
+Fnamescibody='figsinbody.sce';
+Fnameout='figsin.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-6,6], [-2,2]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+gr1=Plotdata(Assign('sin(x)'),Assign('x'));
+sg1=Listplot([[-6,1],[6,1]]);
+sg2=Listplot([[-6,-1],[6,-1]]);
+PtL=list();
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/figsin.tex','1cm');
+ Drwline(gr1);
+ Dashline(sg1);
+ Dashline(sg2);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.tex
new file mode 100644
index 00000000..adb98207
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsin.tex
@@ -0,0 +1,105 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/figsin.tex 2017-6-25 9:9
+%%% figsin.sce 2017-6-25 9:9
+{\unitlength=1cm%
+\begin{picture}%
+( 12.00000, 4.00000)( -6.00000, -2.00000)%
+\special{pn 8}%
+%
+\special{pa -2362 -110}\special{pa -2268 -197}\special{pa -2173 -272}\special{pa -2079 -332}%
+\special{pa -1984 -373}\special{pa -1890 -392}\special{pa -1795 -389}\special{pa -1701 -364}%
+\special{pa -1606 -318}\special{pa -1512 -253}\special{pa -1417 -174}\special{pa -1323 -85}%
+\special{pa -1228 9}\special{pa -1134 102}\special{pa -1039 189}\special{pa -945 266}%
+\special{pa -850 327}\special{pa -756 370}\special{pa -661 391}\special{pa -567 390}%
+\special{pa -472 367}\special{pa -378 323}\special{pa -283 260}\special{pa -189 182}%
+\special{pa -94 94}\special{pa 0 0}\special{pa 94 -94}\special{pa 189 -182}\special{pa 283 -260}%
+\special{pa 378 -323}\special{pa 472 -367}\special{pa 567 -390}\special{pa 661 -391}%
+\special{pa 756 -370}\special{pa 850 -327}\special{pa 945 -266}\special{pa 1039 -189}%
+\special{pa 1134 -102}\special{pa 1228 -9}\special{pa 1323 85}\special{pa 1417 174}%
+\special{pa 1512 253}\special{pa 1606 318}\special{pa 1701 364}\special{pa 1795 389}%
+\special{pa 1890 392}\special{pa 1984 373}\special{pa 2079 332}\special{pa 2173 272}%
+\special{pa 2268 197}\special{pa 2362 110}%
+\special{fp}%
+\special{pa -2362 -394}\special{pa -2323 -394}\special{fp}\special{pa -2284 -394}\special{pa -2245 -394}\special{fp}%
+\special{pa -2206 -394}\special{pa -2167 -394}\special{fp}\special{pa -2128 -394}\special{pa -2089 -394}\special{fp}%
+\special{pa -2050 -394}\special{pa -2011 -394}\special{fp}\special{pa -1972 -394}\special{pa -1933 -394}\special{fp}%
+\special{pa -1894 -394}\special{pa -1855 -394}\special{fp}\special{pa -1816 -394}\special{pa -1777 -394}\special{fp}%
+\special{pa -1737 -394}\special{pa -1698 -394}\special{fp}\special{pa -1659 -394}\special{pa -1620 -394}\special{fp}%
+\special{pa -1581 -394}\special{pa -1542 -394}\special{fp}\special{pa -1503 -394}\special{pa -1464 -394}\special{fp}%
+\special{pa -1425 -394}\special{pa -1386 -394}\special{fp}\special{pa -1347 -394}\special{pa -1308 -394}\special{fp}%
+\special{pa -1269 -394}\special{pa -1230 -394}\special{fp}\special{pa -1191 -394}\special{pa -1152 -394}\special{fp}%
+\special{pa -1113 -394}\special{pa -1074 -394}\special{fp}\special{pa -1035 -394}\special{pa -996 -394}\special{fp}%
+\special{pa -957 -394}\special{pa -918 -394}\special{fp}\special{pa -879 -394}\special{pa -839 -394}\special{fp}%
+\special{pa -800 -394}\special{pa -761 -394}\special{fp}\special{pa -722 -394}\special{pa -683 -394}\special{fp}%
+\special{pa -644 -394}\special{pa -605 -394}\special{fp}\special{pa -566 -394}\special{pa -527 -394}\special{fp}%
+\special{pa -488 -394}\special{pa -449 -394}\special{fp}\special{pa -410 -394}\special{pa -371 -394}\special{fp}%
+\special{pa -332 -394}\special{pa -293 -394}\special{fp}\special{pa -254 -394}\special{pa -215 -394}\special{fp}%
+\special{pa -176 -394}\special{pa -137 -394}\special{fp}\special{pa -98 -394}\special{pa -59 -394}\special{fp}%
+\special{pa -20 -394}\special{pa 20 -394}\special{fp}\special{pa 59 -394}\special{pa 98 -394}\special{fp}%
+\special{pa 137 -394}\special{pa 176 -394}\special{fp}\special{pa 215 -394}\special{pa 254 -394}\special{fp}%
+\special{pa 293 -394}\special{pa 332 -394}\special{fp}\special{pa 371 -394}\special{pa 410 -394}\special{fp}%
+\special{pa 449 -394}\special{pa 488 -394}\special{fp}\special{pa 527 -394}\special{pa 566 -394}\special{fp}%
+\special{pa 605 -394}\special{pa 644 -394}\special{fp}\special{pa 683 -394}\special{pa 722 -394}\special{fp}%
+\special{pa 761 -394}\special{pa 800 -394}\special{fp}\special{pa 839 -394}\special{pa 879 -394}\special{fp}%
+\special{pa 918 -394}\special{pa 957 -394}\special{fp}\special{pa 996 -394}\special{pa 1035 -394}\special{fp}%
+\special{pa 1074 -394}\special{pa 1113 -394}\special{fp}\special{pa 1152 -394}\special{pa 1191 -394}\special{fp}%
+\special{pa 1230 -394}\special{pa 1269 -394}\special{fp}\special{pa 1308 -394}\special{pa 1347 -394}\special{fp}%
+\special{pa 1386 -394}\special{pa 1425 -394}\special{fp}\special{pa 1464 -394}\special{pa 1503 -394}\special{fp}%
+\special{pa 1542 -394}\special{pa 1581 -394}\special{fp}\special{pa 1620 -394}\special{pa 1659 -394}\special{fp}%
+\special{pa 1698 -394}\special{pa 1737 -394}\special{fp}\special{pa 1777 -394}\special{pa 1816 -394}\special{fp}%
+\special{pa 1855 -394}\special{pa 1894 -394}\special{fp}\special{pa 1933 -394}\special{pa 1972 -394}\special{fp}%
+\special{pa 2011 -394}\special{pa 2050 -394}\special{fp}\special{pa 2089 -394}\special{pa 2128 -394}\special{fp}%
+\special{pa 2167 -394}\special{pa 2206 -394}\special{fp}\special{pa 2245 -394}\special{pa 2284 -394}\special{fp}%
+\special{pa 2323 -394}\special{pa 2362 -394}\special{fp}%
+%
+\special{pa -2362 394}\special{pa -2323 394}\special{fp}\special{pa -2284 394}\special{pa -2245 394}\special{fp}%
+\special{pa -2206 394}\special{pa -2167 394}\special{fp}\special{pa -2128 394}\special{pa -2089 394}\special{fp}%
+\special{pa -2050 394}\special{pa -2011 394}\special{fp}\special{pa -1972 394}\special{pa -1933 394}\special{fp}%
+\special{pa -1894 394}\special{pa -1855 394}\special{fp}\special{pa -1816 394}\special{pa -1777 394}\special{fp}%
+\special{pa -1737 394}\special{pa -1698 394}\special{fp}\special{pa -1659 394}\special{pa -1620 394}\special{fp}%
+\special{pa -1581 394}\special{pa -1542 394}\special{fp}\special{pa -1503 394}\special{pa -1464 394}\special{fp}%
+\special{pa -1425 394}\special{pa -1386 394}\special{fp}\special{pa -1347 394}\special{pa -1308 394}\special{fp}%
+\special{pa -1269 394}\special{pa -1230 394}\special{fp}\special{pa -1191 394}\special{pa -1152 394}\special{fp}%
+\special{pa -1113 394}\special{pa -1074 394}\special{fp}\special{pa -1035 394}\special{pa -996 394}\special{fp}%
+\special{pa -957 394}\special{pa -918 394}\special{fp}\special{pa -879 394}\special{pa -839 394}\special{fp}%
+\special{pa -800 394}\special{pa -761 394}\special{fp}\special{pa -722 394}\special{pa -683 394}\special{fp}%
+\special{pa -644 394}\special{pa -605 394}\special{fp}\special{pa -566 394}\special{pa -527 394}\special{fp}%
+\special{pa -488 394}\special{pa -449 394}\special{fp}\special{pa -410 394}\special{pa -371 394}\special{fp}%
+\special{pa -332 394}\special{pa -293 394}\special{fp}\special{pa -254 394}\special{pa -215 394}\special{fp}%
+\special{pa -176 394}\special{pa -137 394}\special{fp}\special{pa -98 394}\special{pa -59 394}\special{fp}%
+\special{pa -20 394}\special{pa 20 394}\special{fp}\special{pa 59 394}\special{pa 98 394}\special{fp}%
+\special{pa 137 394}\special{pa 176 394}\special{fp}\special{pa 215 394}\special{pa 254 394}\special{fp}%
+\special{pa 293 394}\special{pa 332 394}\special{fp}\special{pa 371 394}\special{pa 410 394}\special{fp}%
+\special{pa 449 394}\special{pa 488 394}\special{fp}\special{pa 527 394}\special{pa 566 394}\special{fp}%
+\special{pa 605 394}\special{pa 644 394}\special{fp}\special{pa 683 394}\special{pa 722 394}\special{fp}%
+\special{pa 761 394}\special{pa 800 394}\special{fp}\special{pa 839 394}\special{pa 879 394}\special{fp}%
+\special{pa 918 394}\special{pa 957 394}\special{fp}\special{pa 996 394}\special{pa 1035 394}\special{fp}%
+\special{pa 1074 394}\special{pa 1113 394}\special{fp}\special{pa 1152 394}\special{pa 1191 394}\special{fp}%
+\special{pa 1230 394}\special{pa 1269 394}\special{fp}\special{pa 1308 394}\special{pa 1347 394}\special{fp}%
+\special{pa 1386 394}\special{pa 1425 394}\special{fp}\special{pa 1464 394}\special{pa 1503 394}\special{fp}%
+\special{pa 1542 394}\special{pa 1581 394}\special{fp}\special{pa 1620 394}\special{pa 1659 394}\special{fp}%
+\special{pa 1698 394}\special{pa 1737 394}\special{fp}\special{pa 1777 394}\special{pa 1816 394}\special{fp}%
+\special{pa 1855 394}\special{pa 1894 394}\special{fp}\special{pa 1933 394}\special{pa 1972 394}\special{fp}%
+\special{pa 2011 394}\special{pa 2050 394}\special{fp}\special{pa 2089 394}\special{pa 2128 394}\special{fp}%
+\special{pa 2167 394}\special{pa 2206 394}\special{fp}\special{pa 2245 394}\special{pa 2284 394}\special{fp}%
+\special{pa 2323 394}\special{pa 2362 394}\special{fp}%
+%
+\special{pa -2362 0}\special{pa 2362 0}%
+\special{fp}%
+\special{pa 0 787}\special{pa 0 -787}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(6.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.0500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.aux b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.aux
new file mode 100644
index 00000000..f23e5468
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.aux
@@ -0,0 +1 @@
+\relax
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.log b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.log
new file mode 100644
index 00000000..c919c409
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.log
@@ -0,0 +1,195 @@
+This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2016.12.16) 25 JUN 2017 09:09
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**figsinmain.tex
+(./figsinmain.tex
+pLaTeX2e <2016/05/07> (based on LaTeX2e <2016/03/31>)
+Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
+(/usr/local/texlive/2016/texmf-dist/tex/platex/base/jarticle.cls
+Document Class: jarticle 2006/06/27 v1.6 Standard pLaTeX class
+\c@@paper=\count81
+(/usr/local/texlive/2016/texmf-dist/tex/platex/base/jsize10.clo
+File: jsize10.clo 2006/06/27 v1.6 Standard pLaTeX file (size option)
+)
+\c@part=\count82
+\c@section=\count83
+\c@subsection=\count84
+\c@subsubsection=\count85
+\c@paragraph=\count86
+\c@subparagraph=\count87
+\c@figure=\count88
+\c@table=\count89
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\symmincho=\mathgroup4
+LaTeX Font Info: Overwriting symbol font `mincho' in version `bold'
+(Font) JY1/mc/m/n --> JY1/gt/m/n on input line 593.
+\toclineskip=\dimen118
+\@lnumwidth=\dimen119
+\bibindent=\dimen120
+\heisei=\count90
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic.sty
+\c@ketpicctra=\count91
+\c@ketpicctrb=\count92
+\c@ketpicctrc=\count93
+\c@ketpicctrd=\count94
+\c@ketpicctre=\count95
+\c@ketpicctrf=\count96
+\c@ketpicctrg=\count97
+\c@ketpicctrh=\count98
+\c@ketpicctri=\count99
+\c@ketpicctrj=\count100
+\Width=\skip43
+\Height=\skip44
+\Depth=\skip45
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer.sty
+\layercurrentunit=\skip46
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2016/03/10 v2.15b AMS math features
+\@mathmargin=\skip47
+
+For additional information on amsmath, use the `?' option.
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01 AMS text
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0 generic functions
+\@emptytoks=\toks15
+\ex@=\dimen121
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d Bold Symbols
+\pmbraise@=\dimen122
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 2016/03/08 v2.02 operator names
+)
+\inf@bad=\count101
+LaTeX Info: Redefining \frac on input line 199.
+\uproot@=\count102
+\leftroot@=\count103
+LaTeX Info: Redefining \overline on input line 297.
+\classnum@=\count104
+\DOTSCASE@=\count105
+LaTeX Info: Redefining \ldots on input line 394.
+LaTeX Info: Redefining \dots on input line 397.
+LaTeX Info: Redefining \cdots on input line 518.
+\Mathstrutbox@=\box41
+\strutbox@=\box42
+\big@size=\dimen123
+LaTeX Font Info: Redeclaring font encoding OML on input line 634.
+LaTeX Font Info: Redeclaring font encoding OMS on input line 635.
+\macc@depth=\count106
+\c@MaxMatrixCols=\count107
+\dotsspace@=\muskip10
+\c@parentequation=\count108
+\dspbrk@lvl=\count109
+\tag@help=\toks16
+\row@=\count110
+\column@=\count111
+\maxfields@=\count112
+\andhelp@=\toks17
+\eqnshift@=\dimen124
+\alignsep@=\dimen125
+\tagshift@=\dimen126
+\tagwidth@=\dimen127
+\totwidth@=\dimen128
+\lineht@=\dimen129
+\@envbody=\toks18
+\multlinegap=\skip48
+\multlinetaggap=\skip49
+\mathdisplay@stack=\toks19
+LaTeX Info: Redefining \[ on input line 2739.
+LaTeX Info: Redefining \] on input line 2740.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\symAMSa=\mathgroup5
+\symAMSb=\mathgroup6
+LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
+(Font) U/euf/m/n --> U/euf/b/n on input line 106.
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks20
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2016/05/09 v1.0r Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/01/02 v1.10 sample graphics configuration
+)
+Package graphics Info: Driver file: dvips.def on input line 96.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/dvips.def
+File: dvips.def 2015/12/30 v3.0k Driver-dependent file (DPC,SPQR)
+))
+\Gin@req@height=\dimen130
+\Gin@req@width=\dimen131
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/color.sty
+Package: color 2016/05/09 v1.1c Standard LaTeX Color (DPC)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package color Info: Driver file: dvips.def on input line 144.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/dvipsnam.def
+File: dvipsnam.def 2015/12/30 v3.0k Driver-dependent file (DPC,SPQR)
+))
+No file figsinmain.aux.
+\openout1 = `figsinmain.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 9.
+LaTeX Font Info: ... okay on input line 9.
+(./figsin.tex
+LaTeX Font Info: Try loading font information for U+msa on input line 90.
+ (/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info: Try loading font information for U+msb on input line 90.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+)) [1
+
+]
+(./figsinmain.aux) )
+Here is how much of TeX's memory you used:
+ 1992 strings out of 493693
+ 24043 string characters out of 6149786
+ 145855 words of memory out of 5000000
+ 5564 multiletter control sequences out of 15000+600000
+ 9378 words of font info for 40 fonts, out of 8000000 for 9000
+ 929 hyphenation exceptions out of 8191
+ 27i,5n,26p,287b,169s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on figsinmain.dvi (1 page, 5024 bytes).
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.pdf
new file mode 100644
index 00000000..dec12d09
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.tex
new file mode 100644
index 00000000..91d48c8a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/figsinmain.tex
@@ -0,0 +1,16 @@
+\documentclass{jarticle}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{amsmath,amssymb}
+\usepackage{graphicx,color}
+
+\setmargin{20}{20}{20}{20}
+
+\begin{document}
+
+\verb|figsin| by \ketcindy
+\vspace{5mm}
+
+\input{figsin.tex}
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/kc.sh b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/kc.sh
new file mode 100755
index 00000000..06bc6be0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/kc.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+cd "/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig"
+"/Applications/scilab-6.0.0.app/Contents/MacOS/bin/scilab" -nwni -f figs0704paraall.sce
+exit 0
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/all.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/all.sce
new file mode 100644
index 00000000..dd783a0f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/all.sce
@@ -0,0 +1,1130 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p001.tex';
+Fnamesci='pointoncircle/p001.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[1,-0.2]'); Assignrep('mdbw1',[1,-0.2]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[2,0]]);
+pt1=Pointdata([2,0]);
+bw1=Bowdata([0,0],[2,0],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p001.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([1,-0.2],"c","$2$");
+ Drwline(bw1);
+ Letter([2.2,0],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[1.01832,0.05497]'); Assignrep('mdbw1',[1.01832,0.05497]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.93717,0.49738]]);
+pt1=Pointdata([1.93717,0.49738]);
+bw1=Bowdata([0,0],[1.93717,0.49738],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p002.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([1.02,0.05],"c","$2$");
+ Drwline(bw1);
+ Letter([2.13,0.55],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.97266,0.30649]'); Assignrep('mdbw1',[0.97266,0.30649]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.75261,0.96351]]);
+pt1=Pointdata([1.75261,0.96351]);
+bw1=Bowdata([0,0],[1.75261,0.96351],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p003.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.97,0.31],"c","$2$");
+ Drwline(bw1);
+ Letter([1.93,1.06],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.86588,0.53875]'); Assignrep('mdbw1',[0.86588,0.53875]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.45794,1.36909]]);
+pt1=Pointdata([1.45794,1.36909]);
+bw1=Bowdata([0,0],[1.45794,1.36909],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p004.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.87,0.54],"c","$2$");
+ Drwline(bw1);
+ Letter([1.6,1.51],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.70469,0.73716]'); Assignrep('mdbw1',[0.70469,0.73716]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.07165,1.68866]]);
+pt1=Pointdata([1.07165,1.68866]);
+bw1=Bowdata([0,0],[1.07165,1.68866],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p005.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.7,0.74],"c","$2$");
+ Drwline(bw1);
+ Letter([1.18,1.86],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.49923,0.88925]'); Assignrep('mdbw1',[0.49923,0.88925]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.61803,1.90211]]);
+pt1=Pointdata([0.61803,1.90211]);
+bw1=Bowdata([0,0],[0.61803,1.90211],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p006.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.5,0.89],"c","$2$");
+ Drwline(bw1);
+ Letter([0.68,2.09],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.2624,0.98547]'); Assignrep('mdbw1',[0.2624,0.98547]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.12558,1.99605]]);
+pt1=Pointdata([0.12558,1.99605]);
+bw1=Bowdata([0,0],[0.12558,1.99605],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p007.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.26,0.99],"c","$2$");
+ Drwline(bw1);
+ Letter([0.14,2.2],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.00908,1.01976]'); Assignrep('mdbw1',[0.00908,1.01976]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.37476,1.96457]]);
+pt1=Pointdata([-0.37476,1.96457]);
+bw1=Bowdata([0,0],[-0.37476,1.96457],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p008.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.01,1.02],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.41,2.16],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.24481,0.98998]'); Assignrep('mdbw1',[-0.24481,0.98998]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.85156,1.80965]]);
+pt1=Pointdata([-0.85156,1.80965]);
+bw1=Bowdata([0,0],[-0.85156,1.80965],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p009.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.24,0.99],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.94,1.99],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.48332,0.898]'); Assignrep('mdbw1',[-0.48332,0.898]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.27485,1.54103]]);
+pt1=Pointdata([-1.27485,1.54103]);
+bw1=Bowdata([0,0],[-1.27485,1.54103],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p010.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.48,0.9],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.4,1.7],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.69146,0.74959]'); Assignrep('mdbw1',[-0.69146,0.74959]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.61803,1.17557]]);
+pt1=Pointdata([-1.61803,1.17557]);
+bw1=Bowdata([0,0],[-1.61803,1.17557],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p011.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.69,0.75],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.78,1.29],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.85615,0.55408]'); Assignrep('mdbw1',[-0.85615,0.55408]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.85955,0.73625]]);
+pt1=Pointdata([-1.85955,0.73625]);
+bw1=Bowdata([0,0],[-1.85955,0.73625],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p012.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.86,0.55],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.05,0.81],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.96705,0.32376]'); Assignrep('mdbw1',[-0.96705,0.32376]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.98423,0.25067]]);
+pt1=Pointdata([-1.98423,0.25067]);
+bw1=Bowdata([0,0],[-1.98423,0.25067],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p013.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.97,0.32],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.18,0.28],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-1.01718,0.07309]'); Assignrep('mdbw1',[-1.01718,0.07309]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.98423,-0.25067]]);
+pt1=Pointdata([-1.98423,-0.25067]);
+bw1=Bowdata([0,0],[-1.98423,-0.25067],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p014.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-1.02,0.07],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.18,-0.28],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-1.0034,-0.18217]'); Assignrep('mdbw1',[-1.0034,-0.18217]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.85955,-0.73625]]);
+pt1=Pointdata([-1.85955,-0.73625]);
+bw1=Bowdata([0,0],[-1.85955,-0.73625],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p015.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-1,-0.18],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.05,-0.81],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.92657,-0.42598]'); Assignrep('mdbw1',[-0.92657,-0.42598]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.61803,-1.17557]]);
+pt1=Pointdata([-1.61803,-1.17557]);
+bw1=Bowdata([0,0],[-1.61803,-1.17557],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p016.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.93,-0.43],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.78,-1.29],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.79153,-0.64303]'); Assignrep('mdbw1',[-0.79153,-0.64303]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.27485,-1.54103]]);
+pt1=Pointdata([-1.27485,-1.54103]);
+bw1=Bowdata([0,0],[-1.27485,-1.54103],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p017.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.79,-0.64],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.4,-1.7],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.60674,-0.81967]'); Assignrep('mdbw1',[-0.60674,-0.81967]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.85156,-1.80965]]);
+pt1=Pointdata([-0.85156,-1.80965]);
+bw1=Bowdata([0,0],[-0.85156,-1.80965],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p018.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.61,-0.82],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.94,-1.99],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.38384,-0.94481]'); Assignrep('mdbw1',[-0.38384,-0.94481]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.37476,-1.96457]]);
+pt1=Pointdata([-0.37476,-1.96457]);
+bw1=Bowdata([0,0],[-0.37476,-1.96457],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p019.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.38,-0.94],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.41,-2.16],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.13681,-1.01058]'); Assignrep('mdbw1',[-0.13681,-1.01058]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.12558,-1.99605]]);
+pt1=Pointdata([0.12558,-1.99605]);
+bw1=Bowdata([0,0],[0.12558,-1.99605],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p020.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.14,-1.01],"c","$2$");
+ Drwline(bw1);
+ Letter([0.14,-2.2],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.11881,-1.01286]'); Assignrep('mdbw1',[0.11881,-1.01286]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.61803,-1.90211]]);
+pt1=Pointdata([0.61803,-1.90211]);
+bw1=Bowdata([0,0],[0.61803,-1.90211],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p021.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.12,-1.01],"c","$2$");
+ Drwline(bw1);
+ Letter([0.68,-2.09],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.36696,-0.95149]'); Assignrep('mdbw1',[0.36696,-0.95149]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.07165,-1.68866]]);
+pt1=Pointdata([1.07165,-1.68866]);
+bw1=Bowdata([0,0],[1.07165,-1.68866],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p022.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.37,-0.95],"c","$2$");
+ Drwline(bw1);
+ Letter([1.18,-1.86],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.59206,-0.83034]'); Assignrep('mdbw1',[0.59206,-0.83034]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.45794,-1.36909]]);
+pt1=Pointdata([1.45794,-1.36909]);
+bw1=Bowdata([0,0],[1.45794,-1.36909],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p023.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.59,-0.83],"c","$2$");
+ Drwline(bw1);
+ Letter([1.6,-1.51],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.77996,-0.65702]'); Assignrep('mdbw1',[0.77996,-0.65702]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.75261,-0.96351]]);
+pt1=Pointdata([1.75261,-0.96351]);
+bw1=Bowdata([0,0],[1.75261,-0.96351],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p024.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.78,-0.66],"c","$2$");
+ Drwline(bw1);
+ Letter([1.93,-1.06],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.91885,-0.44241]'); Assignrep('mdbw1',[0.91885,-0.44241]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.93717,-0.49738]]);
+pt1=Pointdata([1.93717,-0.49738]);
+bw1=Bowdata([0,0],[1.93717,-0.49738],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p025.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.92,-0.44],"c","$2$");
+ Drwline(bw1);
+ Letter([2.13,-0.55],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[1,-0.2]'); Assignrep('mdbw1',[1,-0.2]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[2,0]]);
+pt1=Pointdata([2,0]);
+bw1=Bowdata([0,0],[2,0],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p026.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([1,-0.2],"c","$2$");
+ Drwline(bw1);
+ Letter([2.2,0],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.sce
new file mode 100644
index 00000000..28ce91c0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p001.tex';
+Fnamesci='pointoncircle/p001.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[1,-0.2]'); Assignrep('mdbw1',[1,-0.2]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[2,0]]);
+pt1=Pointdata([2,0]);
+bw1=Bowdata([0,0],[2,0],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p001.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([1,-0.2],"c","$2$");
+ Drwline(bw1);
+ Letter([2.2,0],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.tex
new file mode 100644
index 00000000..58a1a722
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p001.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p001.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 787 0}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 790 -3}\special{pa 785 -3}\special{pa 785 3}\special{pa 790 3}\special{pa 790 -3}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.0000,-0.2000){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 6 3}\special{pa 13 5}\special{pa 19 8}\special{pa 26 10}%
+\special{pa 32 13}\special{pa 39 15}\special{pa 45 18}\special{pa 52 20}\special{pa 58 22}%
+\special{pa 65 24}\special{pa 71 27}\special{pa 78 29}\special{pa 84 31}\special{pa 91 33}%
+\special{pa 97 35}\special{pa 104 37}\special{pa 111 39}\special{pa 117 41}\special{pa 124 43}%
+\special{pa 131 44}\special{pa 137 46}\special{pa 144 48}\special{pa 151 49}\special{pa 157 51}%
+\special{pa 164 53}\special{pa 171 54}\special{pa 178 56}\special{pa 184 57}\special{pa 191 58}%
+\special{pa 198 60}\special{pa 205 61}\special{pa 211 62}\special{pa 218 64}\special{pa 225 65}%
+\special{pa 232 66}\special{pa 239 67}\special{pa 245 68}\special{pa 252 69}\special{pa 259 70}%
+\special{pa 266 71}\special{pa 273 72}\special{pa 280 72}\special{pa 287 73}\special{pa 293 74}%
+\special{pa 300 74}\special{pa 307 75}\special{pa 314 76}\special{pa 321 76}\special{pa 328 77}%
+\special{pa 335 77}%
+\special{fp}%
+\special{pa 453 77}\special{pa 460 77}\special{pa 466 76}\special{pa 473 76}\special{pa 480 75}%
+\special{pa 487 74}\special{pa 494 74}\special{pa 501 73}\special{pa 508 72}\special{pa 515 72}%
+\special{pa 521 71}\special{pa 528 70}\special{pa 535 69}\special{pa 542 68}\special{pa 549 67}%
+\special{pa 556 66}\special{pa 562 65}\special{pa 569 64}\special{pa 576 62}\special{pa 583 61}%
+\special{pa 590 60}\special{pa 596 58}\special{pa 603 57}\special{pa 610 56}\special{pa 617 54}%
+\special{pa 623 53}\special{pa 630 51}\special{pa 637 49}\special{pa 643 48}\special{pa 650 46}%
+\special{pa 657 44}\special{pa 663 43}\special{pa 670 41}\special{pa 677 39}\special{pa 683 37}%
+\special{pa 690 35}\special{pa 697 33}\special{pa 703 31}\special{pa 710 29}\special{pa 716 27}%
+\special{pa 723 24}\special{pa 729 22}\special{pa 736 20}\special{pa 742 18}\special{pa 749 15}%
+\special{pa 755 13}\special{pa 762 10}\special{pa 768 8}\special{pa 775 5}\special{pa 781 3}%
+\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.2000,0.0000){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.sce
new file mode 100644
index 00000000..981a02f0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p002.tex';
+Fnamesci='pointoncircle/p002.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[1.01832,0.05497]'); Assignrep('mdbw1',[1.01832,0.05497]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.93717,0.49738]]);
+pt1=Pointdata([1.93717,0.49738]);
+bw1=Bowdata([0,0],[1.93717,0.49738],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p002.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([1.02,0.05],"c","$2$");
+ Drwline(bw1);
+ Letter([2.13,0.55],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.tex
new file mode 100644
index 00000000..8e23f56e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p002.tex
@@ -0,0 +1,89 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p002.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 763 -196}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 765 -199}\special{pa 760 -199}\special{pa 760 -193}\special{pa 765 -193}%
+\special{pa 765 -199}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.0200,0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 7 1}\special{pa 14 2}\special{pa 21 3}\special{pa 27 4}%
+\special{pa 34 4}\special{pa 41 5}\special{pa 48 6}\special{pa 55 6}\special{pa 62 7}%
+\special{pa 69 8}\special{pa 75 8}\special{pa 82 9}\special{pa 89 9}\special{pa 96 9}%
+\special{pa 103 10}\special{pa 110 10}\special{pa 117 10}\special{pa 124 10}\special{pa 131 10}%
+\special{pa 138 10}\special{pa 144 11}\special{pa 151 11}\special{pa 158 10}\special{pa 165 10}%
+\special{pa 172 10}\special{pa 179 10}\special{pa 186 10}\special{pa 193 9}\special{pa 200 9}%
+\special{pa 206 9}\special{pa 213 8}\special{pa 220 8}\special{pa 227 7}\special{pa 234 7}%
+\special{pa 241 6}\special{pa 248 5}\special{pa 255 5}\special{pa 261 4}\special{pa 268 3}%
+\special{pa 275 2}\special{pa 282 1}\special{pa 289 1}\special{pa 296 0}\special{pa 303 -1}%
+\special{pa 309 -3}\special{pa 316 -4}\special{pa 323 -5}\special{pa 330 -6}\special{pa 337 -7}%
+\special{pa 343 -9}%
+\special{fp}%
+\special{pa 458 -38}\special{pa 464 -40}\special{pa 471 -42}\special{pa 477 -44}\special{pa 484 -47}%
+\special{pa 490 -49}\special{pa 497 -51}\special{pa 503 -54}\special{pa 510 -56}\special{pa 516 -59}%
+\special{pa 523 -61}\special{pa 529 -64}\special{pa 535 -66}\special{pa 542 -69}\special{pa 548 -72}%
+\special{pa 555 -74}\special{pa 561 -77}\special{pa 567 -80}\special{pa 573 -83}\special{pa 580 -86}%
+\special{pa 586 -89}\special{pa 592 -92}\special{pa 598 -95}\special{pa 605 -98}\special{pa 611 -101}%
+\special{pa 617 -104}\special{pa 623 -107}\special{pa 629 -110}\special{pa 635 -114}%
+\special{pa 641 -117}\special{pa 647 -120}\special{pa 653 -124}\special{pa 659 -127}%
+\special{pa 665 -131}\special{pa 671 -134}\special{pa 677 -138}\special{pa 683 -141}%
+\special{pa 689 -145}\special{pa 695 -149}\special{pa 700 -152}\special{pa 706 -156}%
+\special{pa 712 -160}\special{pa 718 -164}\special{pa 723 -168}\special{pa 729 -172}%
+\special{pa 735 -176}\special{pa 740 -179}\special{pa 746 -184}\special{pa 752 -188}%
+\special{pa 757 -192}\special{pa 763 -196}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.1300,0.5500){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.sce
new file mode 100644
index 00000000..099456ca
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p003.tex';
+Fnamesci='pointoncircle/p003.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.97266,0.30649]'); Assignrep('mdbw1',[0.97266,0.30649]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.75261,0.96351]]);
+pt1=Pointdata([1.75261,0.96351]);
+bw1=Bowdata([0,0],[1.75261,0.96351],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p003.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.97,0.31],"c","$2$");
+ Drwline(bw1);
+ Letter([1.93,1.06],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.tex
new file mode 100644
index 00000000..1cbf43cf
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p003.tex
@@ -0,0 +1,90 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p003.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 690 -379}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 693 -382}\special{pa 687 -382}\special{pa 687 -377}\special{pa 693 -377}%
+\special{pa 693 -382}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.9700,0.3100){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 7 -1}\special{pa 14 -2}\special{pa 21 -2}\special{pa 27 -3}%
+\special{pa 34 -4}\special{pa 41 -5}\special{pa 48 -6}\special{pa 55 -7}\special{pa 62 -9}%
+\special{pa 68 -10}\special{pa 75 -11}\special{pa 82 -12}\special{pa 89 -14}\special{pa 95 -15}%
+\special{pa 102 -16}\special{pa 109 -18}\special{pa 116 -19}\special{pa 122 -21}\special{pa 129 -22}%
+\special{pa 136 -24}\special{pa 142 -26}\special{pa 149 -27}\special{pa 156 -29}\special{pa 163 -31}%
+\special{pa 169 -33}\special{pa 176 -35}\special{pa 182 -37}\special{pa 189 -39}\special{pa 196 -41}%
+\special{pa 202 -43}\special{pa 209 -45}\special{pa 215 -47}\special{pa 222 -49}\special{pa 228 -52}%
+\special{pa 235 -54}\special{pa 241 -56}\special{pa 248 -59}\special{pa 254 -61}\special{pa 261 -64}%
+\special{pa 267 -66}\special{pa 274 -69}\special{pa 280 -71}\special{pa 286 -74}\special{pa 293 -77}%
+\special{pa 299 -79}\special{pa 305 -82}\special{pa 312 -85}\special{pa 318 -88}\special{pa 324 -91}%
+\special{pa 330 -94}%
+\special{fp}%
+\special{pa 434 -151}\special{pa 440 -154}\special{pa 445 -158}\special{pa 451 -162}%
+\special{pa 457 -166}\special{pa 463 -169}\special{pa 468 -173}\special{pa 474 -177}%
+\special{pa 480 -181}\special{pa 485 -185}\special{pa 491 -189}\special{pa 497 -193}%
+\special{pa 502 -197}\special{pa 508 -202}\special{pa 513 -206}\special{pa 519 -210}%
+\special{pa 524 -214}\special{pa 529 -219}\special{pa 535 -223}\special{pa 540 -227}%
+\special{pa 545 -232}\special{pa 551 -236}\special{pa 556 -241}\special{pa 561 -245}%
+\special{pa 566 -250}\special{pa 572 -254}\special{pa 577 -259}\special{pa 582 -263}%
+\special{pa 587 -268}\special{pa 592 -273}\special{pa 597 -278}\special{pa 602 -282}%
+\special{pa 607 -287}\special{pa 612 -292}\special{pa 617 -297}\special{pa 621 -302}%
+\special{pa 626 -307}\special{pa 631 -312}\special{pa 636 -317}\special{pa 641 -322}%
+\special{pa 645 -327}\special{pa 650 -332}\special{pa 654 -337}\special{pa 659 -342}%
+\special{pa 664 -347}\special{pa 668 -353}\special{pa 673 -358}\special{pa 677 -363}%
+\special{pa 681 -369}\special{pa 686 -374}\special{pa 690 -379}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.9300,1.0600){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.sce
new file mode 100644
index 00000000..dbf4867a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p004.tex';
+Fnamesci='pointoncircle/p004.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.86588,0.53875]'); Assignrep('mdbw1',[0.86588,0.53875]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.45794,1.36909]]);
+pt1=Pointdata([1.45794,1.36909]);
+bw1=Bowdata([0,0],[1.45794,1.36909],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p004.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.87,0.54],"c","$2$");
+ Drwline(bw1);
+ Letter([1.6,1.51],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.tex
new file mode 100644
index 00000000..74156d65
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p004.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p004.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 574 -539}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 577 -542}\special{pa 571 -542}\special{pa 571 -536}\special{pa 577 -536}%
+\special{pa 577 -542}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.8700,0.5400){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 6 -2}\special{pa 13 -5}\special{pa 19 -7}\special{pa 26 -10}%
+\special{pa 32 -13}\special{pa 38 -15}\special{pa 45 -18}\special{pa 51 -21}\special{pa 57 -24}%
+\special{pa 64 -26}\special{pa 70 -29}\special{pa 76 -32}\special{pa 83 -35}\special{pa 89 -38}%
+\special{pa 95 -41}\special{pa 101 -44}\special{pa 107 -47}\special{pa 113 -51}\special{pa 119 -54}%
+\special{pa 126 -57}\special{pa 132 -60}\special{pa 138 -64}\special{pa 144 -67}\special{pa 150 -70}%
+\special{pa 156 -74}\special{pa 162 -77}\special{pa 168 -81}\special{pa 173 -85}\special{pa 179 -88}%
+\special{pa 185 -92}\special{pa 191 -96}\special{pa 197 -99}\special{pa 203 -103}%
+\special{pa 208 -107}\special{pa 214 -111}\special{pa 220 -115}\special{pa 225 -118}%
+\special{pa 231 -122}\special{pa 237 -126}\special{pa 242 -130}\special{pa 248 -135}%
+\special{pa 253 -139}\special{pa 259 -143}\special{pa 264 -147}\special{pa 270 -151}%
+\special{pa 275 -156}\special{pa 281 -160}\special{pa 286 -164}\special{pa 291 -169}%
+\special{pa 297 -173}%
+\special{fp}%
+\special{pa 383 -254}\special{pa 387 -259}\special{pa 392 -264}\special{pa 397 -269}%
+\special{pa 401 -274}\special{pa 406 -279}\special{pa 411 -284}\special{pa 415 -290}%
+\special{pa 420 -295}\special{pa 424 -300}\special{pa 429 -305}\special{pa 433 -311}%
+\special{pa 437 -316}\special{pa 442 -321}\special{pa 446 -327}\special{pa 450 -332}%
+\special{pa 454 -338}\special{pa 458 -343}\special{pa 463 -349}\special{pa 467 -354}%
+\special{pa 471 -360}\special{pa 475 -366}\special{pa 479 -371}\special{pa 483 -377}%
+\special{pa 487 -383}\special{pa 490 -388}\special{pa 494 -394}\special{pa 498 -400}%
+\special{pa 502 -406}\special{pa 505 -411}\special{pa 509 -417}\special{pa 513 -423}%
+\special{pa 516 -429}\special{pa 520 -435}\special{pa 523 -441}\special{pa 527 -447}%
+\special{pa 530 -453}\special{pa 534 -459}\special{pa 537 -465}\special{pa 540 -471}%
+\special{pa 544 -477}\special{pa 547 -483}\special{pa 550 -489}\special{pa 553 -495}%
+\special{pa 556 -502}\special{pa 559 -508}\special{pa 562 -514}\special{pa 565 -520}%
+\special{pa 568 -526}\special{pa 571 -533}\special{pa 574 -539}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.6000,1.5100){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.sce
new file mode 100644
index 00000000..b131fbbe
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p005.tex';
+Fnamesci='pointoncircle/p005.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.70469,0.73716]'); Assignrep('mdbw1',[0.70469,0.73716]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.07165,1.68866]]);
+pt1=Pointdata([1.07165,1.68866]);
+bw1=Bowdata([0,0],[1.07165,1.68866],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p005.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.7,0.74],"c","$2$");
+ Drwline(bw1);
+ Letter([1.18,1.86],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.tex
new file mode 100644
index 00000000..336daec2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p005.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p005.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 422 -665}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 425 -668}\special{pa 419 -668}\special{pa 419 -662}\special{pa 425 -662}%
+\special{pa 425 -668}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.7000,0.7400){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 6 -4}\special{pa 11 -8}\special{pa 17 -12}\special{pa 22 -16}%
+\special{pa 28 -20}\special{pa 33 -24}\special{pa 39 -29}\special{pa 44 -33}\special{pa 50 -37}%
+\special{pa 55 -41}\special{pa 61 -46}\special{pa 66 -50}\special{pa 71 -55}\special{pa 76 -59}%
+\special{pa 82 -64}\special{pa 87 -68}\special{pa 92 -73}\special{pa 97 -77}\special{pa 102 -82}%
+\special{pa 107 -87}\special{pa 112 -91}\special{pa 118 -96}\special{pa 122 -101}%
+\special{pa 127 -105}\special{pa 132 -110}\special{pa 137 -115}\special{pa 142 -120}%
+\special{pa 147 -125}\special{pa 152 -130}\special{pa 157 -135}\special{pa 161 -140}%
+\special{pa 166 -145}\special{pa 171 -150}\special{pa 175 -155}\special{pa 180 -160}%
+\special{pa 184 -166}\special{pa 189 -171}\special{pa 193 -176}\special{pa 198 -181}%
+\special{pa 202 -187}\special{pa 207 -192}\special{pa 211 -197}\special{pa 215 -203}%
+\special{pa 220 -208}\special{pa 224 -214}\special{pa 228 -219}\special{pa 232 -225}%
+\special{pa 236 -230}\special{pa 240 -236}\special{pa 244 -241}%
+\special{fp}%
+\special{pa 308 -341}\special{pa 311 -347}\special{pa 314 -353}\special{pa 318 -359}%
+\special{pa 321 -365}\special{pa 324 -371}\special{pa 327 -378}\special{pa 330 -384}%
+\special{pa 333 -390}\special{pa 336 -396}\special{pa 339 -402}\special{pa 342 -409}%
+\special{pa 345 -415}\special{pa 348 -421}\special{pa 351 -427}\special{pa 353 -434}%
+\special{pa 356 -440}\special{pa 359 -447}\special{pa 361 -453}\special{pa 364 -459}%
+\special{pa 366 -466}\special{pa 369 -472}\special{pa 371 -479}\special{pa 374 -485}%
+\special{pa 376 -492}\special{pa 378 -498}\special{pa 381 -505}\special{pa 383 -511}%
+\special{pa 385 -518}\special{pa 387 -524}\special{pa 389 -531}\special{pa 391 -537}%
+\special{pa 393 -544}\special{pa 395 -551}\special{pa 397 -557}\special{pa 399 -564}%
+\special{pa 401 -571}\special{pa 403 -577}\special{pa 405 -584}\special{pa 406 -591}%
+\special{pa 408 -597}\special{pa 410 -604}\special{pa 411 -611}\special{pa 413 -617}%
+\special{pa 414 -624}\special{pa 415 -631}\special{pa 417 -638}\special{pa 418 -644}%
+\special{pa 419 -651}\special{pa 421 -658}\special{pa 422 -665}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.1800,1.8600){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.sce
new file mode 100644
index 00000000..d6bd547a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p006.tex';
+Fnamesci='pointoncircle/p006.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.49923,0.88925]'); Assignrep('mdbw1',[0.49923,0.88925]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.61803,1.90211]]);
+pt1=Pointdata([0.61803,1.90211]);
+bw1=Bowdata([0,0],[0.61803,1.90211],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p006.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.5,0.89],"c","$2$");
+ Drwline(bw1);
+ Letter([0.68,2.09],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.tex
new file mode 100644
index 00000000..1bfb62cf
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p006.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p006.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 243 -749}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 246 -752}\special{pa 241 -752}\special{pa 241 -746}\special{pa 246 -746}%
+\special{pa 246 -752}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.5000,0.8900){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 4 -5}\special{pa 9 -11}\special{pa 13 -16}\special{pa 18 -21}%
+\special{pa 22 -27}\special{pa 26 -32}\special{pa 31 -37}\special{pa 35 -43}\special{pa 39 -48}%
+\special{pa 43 -54}\special{pa 47 -59}\special{pa 51 -65}\special{pa 55 -71}\special{pa 59 -76}%
+\special{pa 63 -82}\special{pa 67 -88}\special{pa 71 -93}\special{pa 75 -99}\special{pa 79 -105}%
+\special{pa 83 -110}\special{pa 86 -116}\special{pa 90 -122}\special{pa 94 -128}\special{pa 97 -134}%
+\special{pa 101 -140}\special{pa 104 -146}\special{pa 108 -152}\special{pa 111 -158}%
+\special{pa 115 -164}\special{pa 118 -170}\special{pa 121 -176}\special{pa 125 -182}%
+\special{pa 128 -188}\special{pa 131 -194}\special{pa 134 -200}\special{pa 137 -206}%
+\special{pa 140 -212}\special{pa 144 -219}\special{pa 147 -225}\special{pa 149 -231}%
+\special{pa 152 -237}\special{pa 155 -244}\special{pa 158 -250}\special{pa 161 -256}%
+\special{pa 164 -263}\special{pa 166 -269}\special{pa 169 -275}\special{pa 172 -282}%
+\special{pa 174 -288}\special{pa 177 -294}%
+\special{fp}%
+\special{pa 213 -407}\special{pa 215 -413}\special{pa 217 -420}\special{pa 218 -427}%
+\special{pa 220 -434}\special{pa 221 -440}\special{pa 223 -447}\special{pa 224 -454}%
+\special{pa 226 -461}\special{pa 227 -467}\special{pa 228 -474}\special{pa 230 -481}%
+\special{pa 231 -488}\special{pa 232 -494}\special{pa 233 -501}\special{pa 234 -508}%
+\special{pa 235 -515}\special{pa 236 -522}\special{pa 237 -529}\special{pa 238 -535}%
+\special{pa 239 -542}\special{pa 240 -549}\special{pa 241 -556}\special{pa 241 -563}%
+\special{pa 242 -570}\special{pa 243 -577}\special{pa 243 -583}\special{pa 244 -590}%
+\special{pa 244 -597}\special{pa 245 -604}\special{pa 245 -611}\special{pa 245 -618}%
+\special{pa 246 -625}\special{pa 246 -632}\special{pa 246 -639}\special{pa 246 -645}%
+\special{pa 247 -652}\special{pa 247 -659}\special{pa 247 -666}\special{pa 247 -673}%
+\special{pa 247 -680}\special{pa 246 -687}\special{pa 246 -694}\special{pa 246 -701}%
+\special{pa 246 -708}\special{pa 246 -714}\special{pa 245 -721}\special{pa 245 -728}%
+\special{pa 244 -735}\special{pa 244 -742}\special{pa 243 -749}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.6800,2.0900){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.sce
new file mode 100644
index 00000000..e489aaf1
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p007.tex';
+Fnamesci='pointoncircle/p007.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.2624,0.98547]'); Assignrep('mdbw1',[0.2624,0.98547]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.12558,1.99605]]);
+pt1=Pointdata([0.12558,1.99605]);
+bw1=Bowdata([0,0],[0.12558,1.99605],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p007.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.26,0.99],"c","$2$");
+ Drwline(bw1);
+ Letter([0.14,2.2],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.tex
new file mode 100644
index 00000000..74f5a1a9
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p007.tex
@@ -0,0 +1,89 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p007.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 49 -786}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 52 -789}\special{pa 47 -789}\special{pa 47 -783}\special{pa 52 -783}\special{pa 52 -789}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.2600,0.9900){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 3 -6}\special{pa 6 -12}\special{pa 9 -19}\special{pa 12 -25}%
+\special{pa 15 -31}\special{pa 18 -38}\special{pa 20 -44}\special{pa 23 -50}\special{pa 26 -57}%
+\special{pa 28 -63}\special{pa 31 -69}\special{pa 34 -76}\special{pa 36 -82}\special{pa 39 -89}%
+\special{pa 41 -95}\special{pa 43 -101}\special{pa 46 -108}\special{pa 48 -114}\special{pa 50 -121}%
+\special{pa 52 -128}\special{pa 55 -134}\special{pa 57 -141}\special{pa 59 -147}\special{pa 61 -154}%
+\special{pa 63 -160}\special{pa 65 -167}\special{pa 67 -174}\special{pa 69 -180}\special{pa 70 -187}%
+\special{pa 72 -194}\special{pa 74 -200}\special{pa 76 -207}\special{pa 77 -214}\special{pa 79 -220}%
+\special{pa 80 -227}\special{pa 82 -234}\special{pa 83 -241}\special{pa 85 -247}\special{pa 86 -254}%
+\special{pa 87 -261}\special{pa 89 -268}\special{pa 90 -275}\special{pa 91 -281}\special{pa 92 -288}%
+\special{pa 93 -295}\special{pa 94 -302}\special{pa 95 -309}\special{pa 96 -315}\special{pa 97 -322}%
+\special{pa 98 -329}%
+\special{fp}%
+\special{pa 105 -447}\special{pa 105 -454}\special{pa 105 -461}\special{pa 105 -468}%
+\special{pa 105 -475}\special{pa 105 -481}\special{pa 105 -488}\special{pa 104 -495}%
+\special{pa 104 -502}\special{pa 104 -509}\special{pa 103 -516}\special{pa 103 -523}%
+\special{pa 102 -530}\special{pa 102 -537}\special{pa 101 -543}\special{pa 101 -550}%
+\special{pa 100 -557}\special{pa 99 -564}\special{pa 98 -571}\special{pa 98 -578}%
+\special{pa 97 -585}\special{pa 96 -591}\special{pa 95 -598}\special{pa 94 -605}\special{pa 93 -612}%
+\special{pa 92 -619}\special{pa 91 -626}\special{pa 89 -632}\special{pa 88 -639}\special{pa 87 -646}%
+\special{pa 86 -653}\special{pa 84 -659}\special{pa 83 -666}\special{pa 81 -673}\special{pa 80 -680}%
+\special{pa 78 -686}\special{pa 77 -693}\special{pa 75 -700}\special{pa 73 -707}\special{pa 71 -713}%
+\special{pa 70 -720}\special{pa 68 -727}\special{pa 66 -733}\special{pa 64 -740}\special{pa 62 -746}%
+\special{pa 60 -753}\special{pa 58 -760}\special{pa 56 -766}\special{pa 54 -773}\special{pa 52 -779}%
+\special{pa 49 -786}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.1400,2.2000){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.sce
new file mode 100644
index 00000000..c11d1d5c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p008.tex';
+Fnamesci='pointoncircle/p008.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.00908,1.01976]'); Assignrep('mdbw1',[0.00908,1.01976]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.37476,1.96457]]);
+pt1=Pointdata([-0.37476,1.96457]);
+bw1=Bowdata([0,0],[-0.37476,1.96457],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p008.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.01,1.02],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.41,2.16],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.tex
new file mode 100644
index 00000000..8038ab13
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p008.tex
@@ -0,0 +1,90 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p008.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -148 -773}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -145 -776}\special{pa -150 -776}\special{pa -150 -771}\special{pa -145 -771}%
+\special{pa -145 -776}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.0100,1.0200){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 1 -7}\special{pa 3 -14}\special{pa 4 -20}\special{pa 5 -27}%
+\special{pa 6 -34}\special{pa 8 -41}\special{pa 9 -48}\special{pa 10 -54}\special{pa 11 -61}%
+\special{pa 12 -68}\special{pa 13 -75}\special{pa 14 -82}\special{pa 15 -89}\special{pa 15 -95}%
+\special{pa 16 -102}\special{pa 17 -109}\special{pa 17 -116}\special{pa 18 -123}\special{pa 19 -130}%
+\special{pa 19 -137}\special{pa 20 -143}\special{pa 20 -150}\special{pa 20 -157}\special{pa 21 -164}%
+\special{pa 21 -171}\special{pa 21 -178}\special{pa 21 -185}\special{pa 22 -192}\special{pa 22 -199}%
+\special{pa 22 -206}\special{pa 22 -212}\special{pa 22 -219}\special{pa 22 -226}\special{pa 21 -233}%
+\special{pa 21 -240}\special{pa 21 -247}\special{pa 21 -254}\special{pa 20 -261}\special{pa 20 -268}%
+\special{pa 20 -275}\special{pa 19 -281}\special{pa 19 -288}\special{pa 18 -295}\special{pa 18 -302}%
+\special{pa 17 -309}\special{pa 16 -316}\special{pa 15 -323}\special{pa 15 -329}\special{pa 14 -336}%
+\special{pa 13 -343}%
+\special{fp}%
+\special{pa -9 -459}\special{pa -11 -466}\special{pa -13 -473}\special{pa -14 -479}%
+\special{pa -16 -486}\special{pa -18 -492}\special{pa -20 -499}\special{pa -22 -506}%
+\special{pa -24 -512}\special{pa -26 -519}\special{pa -28 -525}\special{pa -30 -532}%
+\special{pa -33 -539}\special{pa -35 -545}\special{pa -37 -552}\special{pa -39 -558}%
+\special{pa -42 -565}\special{pa -44 -571}\special{pa -47 -577}\special{pa -49 -584}%
+\special{pa -52 -590}\special{pa -54 -597}\special{pa -57 -603}\special{pa -60 -609}%
+\special{pa -62 -616}\special{pa -65 -622}\special{pa -68 -628}\special{pa -71 -635}%
+\special{pa -74 -641}\special{pa -77 -647}\special{pa -80 -653}\special{pa -83 -660}%
+\special{pa -86 -666}\special{pa -89 -672}\special{pa -92 -678}\special{pa -95 -684}%
+\special{pa -98 -690}\special{pa -101 -697}\special{pa -105 -703}\special{pa -108 -709}%
+\special{pa -112 -715}\special{pa -115 -721}\special{pa -118 -727}\special{pa -122 -733}%
+\special{pa -125 -738}\special{pa -129 -744}\special{pa -133 -750}\special{pa -136 -756}%
+\special{pa -140 -762}\special{pa -144 -768}\special{pa -148 -773}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.4100,2.1600){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.sce
new file mode 100644
index 00000000..fa9396ef
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p009.tex';
+Fnamesci='pointoncircle/p009.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.24481,0.98998]'); Assignrep('mdbw1',[-0.24481,0.98998]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.85156,1.80965]]);
+pt1=Pointdata([-0.85156,1.80965]);
+bw1=Bowdata([0,0],[-0.85156,1.80965],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p009.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.24,0.99],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.94,1.99],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.tex
new file mode 100644
index 00000000..c98778a4
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p009.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p009.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -335 -712}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -332 -715}\special{pa -338 -715}\special{pa -338 -710}\special{pa -332 -710}%
+\special{pa -332 -715}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.2400,0.9900){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 0 -7}\special{pa -1 -14}\special{pa -1 -21}\special{pa -2 -28}%
+\special{pa -2 -34}\special{pa -3 -41}\special{pa -3 -48}\special{pa -4 -55}\special{pa -5 -62}%
+\special{pa -5 -69}\special{pa -6 -76}\special{pa -7 -82}\special{pa -8 -89}\special{pa -9 -96}%
+\special{pa -10 -103}\special{pa -11 -110}\special{pa -12 -117}\special{pa -13 -123}%
+\special{pa -14 -130}\special{pa -15 -137}\special{pa -17 -144}\special{pa -18 -151}%
+\special{pa -19 -157}\special{pa -21 -164}\special{pa -22 -171}\special{pa -24 -178}%
+\special{pa -25 -184}\special{pa -27 -191}\special{pa -28 -198}\special{pa -30 -204}%
+\special{pa -32 -211}\special{pa -34 -218}\special{pa -35 -225}\special{pa -37 -231}%
+\special{pa -39 -238}\special{pa -41 -244}\special{pa -43 -251}\special{pa -45 -258}%
+\special{pa -47 -264}\special{pa -49 -271}\special{pa -51 -277}\special{pa -54 -284}%
+\special{pa -56 -290}\special{pa -58 -297}\special{pa -60 -303}\special{pa -63 -310}%
+\special{pa -65 -316}\special{pa -68 -323}\special{pa -70 -329}\special{pa -73 -336}%
+\special{fp}%
+\special{pa -123 -442}\special{pa -126 -448}\special{pa -130 -455}\special{pa -133 -461}%
+\special{pa -137 -467}\special{pa -140 -472}\special{pa -144 -478}\special{pa -147 -484}%
+\special{pa -151 -490}\special{pa -154 -496}\special{pa -158 -502}\special{pa -162 -508}%
+\special{pa -165 -514}\special{pa -169 -519}\special{pa -173 -525}\special{pa -177 -531}%
+\special{pa -181 -536}\special{pa -185 -542}\special{pa -189 -548}\special{pa -193 -553}%
+\special{pa -197 -559}\special{pa -201 -564}\special{pa -205 -570}\special{pa -209 -576}%
+\special{pa -214 -581}\special{pa -218 -586}\special{pa -222 -592}\special{pa -226 -597}%
+\special{pa -231 -603}\special{pa -235 -608}\special{pa -240 -613}\special{pa -244 -618}%
+\special{pa -248 -624}\special{pa -253 -629}\special{pa -258 -634}\special{pa -262 -639}%
+\special{pa -267 -644}\special{pa -272 -649}\special{pa -276 -654}\special{pa -281 -659}%
+\special{pa -286 -664}\special{pa -291 -669}\special{pa -295 -674}\special{pa -300 -679}%
+\special{pa -305 -684}\special{pa -310 -689}\special{pa -315 -694}\special{pa -320 -698}%
+\special{pa -325 -703}\special{pa -330 -708}\special{pa -335 -712}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.9400,1.9900){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.sce
new file mode 100644
index 00000000..94eff4f8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p010.tex';
+Fnamesci='pointoncircle/p010.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.48332,0.898]'); Assignrep('mdbw1',[-0.48332,0.898]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.27485,1.54103]]);
+pt1=Pointdata([-1.27485,1.54103]);
+bw1=Bowdata([0,0],[-1.27485,1.54103],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p010.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.48,0.9],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.4,1.7],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.tex
new file mode 100644
index 00000000..447d7d5e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p010.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p010.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -502 -607}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -499 -609}\special{pa -505 -609}\special{pa -505 -604}\special{pa -499 -604}%
+\special{pa -499 -609}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.4800,0.9000){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -2 -7}\special{pa -4 -13}\special{pa -6 -20}\special{pa -8 -26}%
+\special{pa -11 -33}\special{pa -13 -39}\special{pa -15 -46}\special{pa -18 -52}\special{pa -20 -59}%
+\special{pa -22 -65}\special{pa -25 -72}\special{pa -27 -78}\special{pa -30 -85}\special{pa -33 -91}%
+\special{pa -35 -97}\special{pa -38 -104}\special{pa -41 -110}\special{pa -43 -116}%
+\special{pa -46 -123}\special{pa -49 -129}\special{pa -52 -135}\special{pa -55 -141}%
+\special{pa -58 -148}\special{pa -61 -154}\special{pa -64 -160}\special{pa -67 -166}%
+\special{pa -70 -172}\special{pa -73 -178}\special{pa -77 -184}\special{pa -80 -191}%
+\special{pa -83 -197}\special{pa -87 -203}\special{pa -90 -209}\special{pa -94 -215}%
+\special{pa -97 -221}\special{pa -101 -227}\special{pa -104 -232}\special{pa -108 -238}%
+\special{pa -111 -244}\special{pa -115 -250}\special{pa -119 -256}\special{pa -123 -262}%
+\special{pa -126 -267}\special{pa -130 -273}\special{pa -134 -279}\special{pa -138 -285}%
+\special{pa -142 -290}\special{pa -146 -296}\special{pa -150 -301}\special{pa -154 -307}%
+\special{fp}%
+\special{pa -229 -398}\special{pa -234 -403}\special{pa -239 -408}\special{pa -243 -413}%
+\special{pa -248 -418}\special{pa -253 -423}\special{pa -258 -428}\special{pa -263 -433}%
+\special{pa -268 -437}\special{pa -273 -442}\special{pa -278 -447}\special{pa -283 -452}%
+\special{pa -288 -456}\special{pa -293 -461}\special{pa -298 -465}\special{pa -303 -470}%
+\special{pa -309 -475}\special{pa -314 -479}\special{pa -319 -484}\special{pa -324 -488}%
+\special{pa -330 -492}\special{pa -335 -497}\special{pa -340 -501}\special{pa -346 -505}%
+\special{pa -351 -510}\special{pa -357 -514}\special{pa -362 -518}\special{pa -368 -522}%
+\special{pa -373 -526}\special{pa -379 -530}\special{pa -384 -534}\special{pa -390 -538}%
+\special{pa -396 -542}\special{pa -401 -546}\special{pa -407 -550}\special{pa -413 -554}%
+\special{pa -419 -558}\special{pa -424 -561}\special{pa -430 -565}\special{pa -436 -569}%
+\special{pa -442 -573}\special{pa -448 -576}\special{pa -454 -580}\special{pa -460 -583}%
+\special{pa -466 -587}\special{pa -472 -590}\special{pa -478 -594}\special{pa -484 -597}%
+\special{pa -490 -600}\special{pa -496 -603}\special{pa -502 -607}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1.4000,1.7000){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.sce
new file mode 100644
index 00000000..e8ea5786
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p011.tex';
+Fnamesci='pointoncircle/p011.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.69146,0.74959]'); Assignrep('mdbw1',[-0.69146,0.74959]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.61803,1.17557]]);
+pt1=Pointdata([-1.61803,1.17557]);
+bw1=Bowdata([0,0],[-1.61803,1.17557],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p011.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.69,0.75],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.78,1.29],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.tex
new file mode 100644
index 00000000..497fdfed
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p011.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p011.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -637 -463}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -634 -466}\special{pa -640 -466}\special{pa -640 -460}\special{pa -634 -460}%
+\special{pa -634 -466}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.6900,0.7500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -4 -6}\special{pa -7 -12}\special{pa -11 -18}\special{pa -15 -23}%
+\special{pa -18 -29}\special{pa -22 -35}\special{pa -26 -41}\special{pa -30 -46}\special{pa -34 -52}%
+\special{pa -38 -58}\special{pa -42 -63}\special{pa -46 -69}\special{pa -50 -74}\special{pa -54 -80}%
+\special{pa -58 -86}\special{pa -62 -91}\special{pa -67 -96}\special{pa -71 -102}%
+\special{pa -75 -107}\special{pa -80 -113}\special{pa -84 -118}\special{pa -88 -123}%
+\special{pa -93 -129}\special{pa -97 -134}\special{pa -102 -139}\special{pa -106 -144}%
+\special{pa -111 -149}\special{pa -116 -155}\special{pa -120 -160}\special{pa -125 -165}%
+\special{pa -130 -170}\special{pa -134 -175}\special{pa -139 -180}\special{pa -144 -185}%
+\special{pa -149 -190}\special{pa -154 -194}\special{pa -159 -199}\special{pa -164 -204}%
+\special{pa -169 -209}\special{pa -174 -214}\special{pa -179 -218}\special{pa -184 -223}%
+\special{pa -189 -228}\special{pa -194 -232}\special{pa -199 -237}\special{pa -204 -241}%
+\special{pa -210 -246}\special{pa -215 -250}\special{pa -220 -255}\special{pa -225 -259}%
+\special{fp}%
+\special{pa -321 -328}\special{pa -327 -332}\special{pa -333 -336}\special{pa -339 -339}%
+\special{pa -344 -343}\special{pa -350 -347}\special{pa -356 -350}\special{pa -362 -354}%
+\special{pa -368 -357}\special{pa -374 -360}\special{pa -380 -364}\special{pa -386 -367}%
+\special{pa -392 -370}\special{pa -399 -374}\special{pa -405 -377}\special{pa -411 -380}%
+\special{pa -417 -383}\special{pa -423 -386}\special{pa -429 -389}\special{pa -436 -392}%
+\special{pa -442 -395}\special{pa -448 -398}\special{pa -454 -401}\special{pa -461 -403}%
+\special{pa -467 -406}\special{pa -473 -409}\special{pa -480 -412}\special{pa -486 -414}%
+\special{pa -492 -417}\special{pa -499 -419}\special{pa -505 -422}\special{pa -512 -424}%
+\special{pa -518 -427}\special{pa -525 -429}\special{pa -531 -432}\special{pa -538 -434}%
+\special{pa -544 -436}\special{pa -551 -438}\special{pa -557 -440}\special{pa -564 -443}%
+\special{pa -570 -445}\special{pa -577 -447}\special{pa -584 -449}\special{pa -590 -451}%
+\special{pa -597 -452}\special{pa -604 -454}\special{pa -610 -456}\special{pa -617 -458}%
+\special{pa -624 -460}\special{pa -630 -461}\special{pa -637 -463}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1.7800,1.2900){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.sce
new file mode 100644
index 00000000..3f517e50
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p012.tex';
+Fnamesci='pointoncircle/p012.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.85615,0.55408]'); Assignrep('mdbw1',[-0.85615,0.55408]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.85955,0.73625]]);
+pt1=Pointdata([-1.85955,0.73625]);
+bw1=Bowdata([0,0],[-1.85955,0.73625],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p012.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.86,0.55],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.05,0.81],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.tex
new file mode 100644
index 00000000..3cc1f81a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p012.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p012.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -732 -290}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -729 -293}\special{pa -735 -293}\special{pa -735 -287}\special{pa -729 -287}%
+\special{pa -729 -293}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.8600,0.5500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -5 -5}\special{pa -10 -10}\special{pa -15 -14}\special{pa -20 -19}%
+\special{pa -25 -24}\special{pa -30 -28}\special{pa -35 -33}\special{pa -41 -37}\special{pa -46 -42}%
+\special{pa -51 -46}\special{pa -56 -51}\special{pa -62 -55}\special{pa -67 -60}\special{pa -72 -64}%
+\special{pa -78 -68}\special{pa -83 -73}\special{pa -89 -77}\special{pa -94 -81}\special{pa -100 -85}%
+\special{pa -105 -89}\special{pa -111 -93}\special{pa -116 -97}\special{pa -122 -101}%
+\special{pa -128 -105}\special{pa -133 -109}\special{pa -139 -113}\special{pa -145 -117}%
+\special{pa -150 -121}\special{pa -156 -125}\special{pa -162 -128}\special{pa -168 -132}%
+\special{pa -174 -136}\special{pa -179 -139}\special{pa -185 -143}\special{pa -191 -147}%
+\special{pa -197 -150}\special{pa -203 -154}\special{pa -209 -157}\special{pa -215 -160}%
+\special{pa -221 -164}\special{pa -227 -167}\special{pa -233 -170}\special{pa -239 -173}%
+\special{pa -246 -177}\special{pa -252 -180}\special{pa -258 -183}\special{pa -264 -186}%
+\special{pa -270 -189}\special{pa -277 -192}\special{pa -283 -195}%
+\special{fp}%
+\special{pa -393 -238}\special{pa -399 -240}\special{pa -406 -243}\special{pa -412 -245}%
+\special{pa -419 -247}\special{pa -426 -249}\special{pa -432 -250}\special{pa -439 -252}%
+\special{pa -445 -254}\special{pa -452 -256}\special{pa -459 -258}\special{pa -465 -259}%
+\special{pa -472 -261}\special{pa -479 -263}\special{pa -486 -264}\special{pa -492 -266}%
+\special{pa -499 -267}\special{pa -506 -269}\special{pa -513 -270}\special{pa -519 -271}%
+\special{pa -526 -273}\special{pa -533 -274}\special{pa -540 -275}\special{pa -547 -276}%
+\special{pa -553 -277}\special{pa -560 -278}\special{pa -567 -279}\special{pa -574 -280}%
+\special{pa -581 -281}\special{pa -588 -282}\special{pa -594 -283}\special{pa -601 -284}%
+\special{pa -608 -285}\special{pa -615 -285}\special{pa -622 -286}\special{pa -629 -286}%
+\special{pa -636 -287}\special{pa -642 -288}\special{pa -649 -288}\special{pa -656 -288}%
+\special{pa -663 -289}\special{pa -670 -289}\special{pa -677 -289}\special{pa -684 -290}%
+\special{pa -691 -290}\special{pa -698 -290}\special{pa -705 -290}\special{pa -711 -290}%
+\special{pa -718 -290}\special{pa -725 -290}\special{pa -732 -290}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-2.0500,0.8100){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.sce
new file mode 100644
index 00000000..d7d7779d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p013.tex';
+Fnamesci='pointoncircle/p013.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.96705,0.32376]'); Assignrep('mdbw1',[-0.96705,0.32376]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.98423,0.25067]]);
+pt1=Pointdata([-1.98423,0.25067]);
+bw1=Bowdata([0,0],[-1.98423,0.25067],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p013.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.97,0.32],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.18,0.28],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.tex
new file mode 100644
index 00000000..a43d07b6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p013.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p013.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -781 -99}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -778 -101}\special{pa -784 -101}\special{pa -784 -96}\special{pa -778 -96}%
+\special{pa -778 -101}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.9700,0.3200){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -6 -3}\special{pa -12 -7}\special{pa -18 -10}\special{pa -24 -13}%
+\special{pa -30 -17}\special{pa -36 -20}\special{pa -42 -23}\special{pa -49 -26}\special{pa -55 -29}%
+\special{pa -61 -32}\special{pa -67 -35}\special{pa -73 -38}\special{pa -80 -41}\special{pa -86 -44}%
+\special{pa -92 -47}\special{pa -99 -50}\special{pa -105 -52}\special{pa -111 -55}%
+\special{pa -118 -58}\special{pa -124 -60}\special{pa -130 -63}\special{pa -137 -65}%
+\special{pa -143 -68}\special{pa -150 -70}\special{pa -156 -73}\special{pa -163 -75}%
+\special{pa -169 -77}\special{pa -176 -80}\special{pa -182 -82}\special{pa -189 -84}%
+\special{pa -195 -86}\special{pa -202 -88}\special{pa -209 -90}\special{pa -215 -92}%
+\special{pa -222 -94}\special{pa -228 -96}\special{pa -235 -98}\special{pa -242 -100}%
+\special{pa -248 -102}\special{pa -255 -104}\special{pa -262 -105}\special{pa -268 -107}%
+\special{pa -275 -108}\special{pa -282 -110}\special{pa -289 -112}\special{pa -295 -113}%
+\special{pa -302 -114}\special{pa -309 -116}\special{pa -316 -117}\special{pa -322 -118}%
+\special{fp}%
+\special{pa -439 -133}\special{pa -446 -134}\special{pa -453 -134}\special{pa -460 -134}%
+\special{pa -467 -135}\special{pa -474 -135}\special{pa -481 -135}\special{pa -488 -135}%
+\special{pa -495 -135}\special{pa -502 -136}\special{pa -508 -136}\special{pa -515 -136}%
+\special{pa -522 -135}\special{pa -529 -135}\special{pa -536 -135}\special{pa -543 -135}%
+\special{pa -550 -135}\special{pa -557 -134}\special{pa -564 -134}\special{pa -571 -134}%
+\special{pa -577 -133}\special{pa -584 -133}\special{pa -591 -132}\special{pa -598 -132}%
+\special{pa -605 -131}\special{pa -612 -130}\special{pa -619 -130}\special{pa -626 -129}%
+\special{pa -632 -128}\special{pa -639 -127}\special{pa -646 -126}\special{pa -653 -125}%
+\special{pa -660 -124}\special{pa -667 -123}\special{pa -673 -122}\special{pa -680 -121}%
+\special{pa -687 -120}\special{pa -694 -119}\special{pa -701 -117}\special{pa -707 -116}%
+\special{pa -714 -115}\special{pa -721 -113}\special{pa -728 -112}\special{pa -734 -110}%
+\special{pa -741 -109}\special{pa -748 -107}\special{pa -754 -106}\special{pa -761 -104}%
+\special{pa -768 -102}\special{pa -775 -101}\special{pa -781 -99}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-2.1800,0.2800){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.sce
new file mode 100644
index 00000000..43771b65
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p014.tex';
+Fnamesci='pointoncircle/p014.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-1.01718,0.07309]'); Assignrep('mdbw1',[-1.01718,0.07309]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.98423,-0.25067]]);
+pt1=Pointdata([-1.98423,-0.25067]);
+bw1=Bowdata([0,0],[-1.98423,-0.25067],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p014.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-1.02,0.07],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.18,-0.28],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.tex
new file mode 100644
index 00000000..0015f410
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p014.tex
@@ -0,0 +1,89 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p014.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -781 99}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -778 96}\special{pa -784 96}\special{pa -784 101}\special{pa -778 101}%
+\special{pa -778 96}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1.0200,0.0700){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -7 -2}\special{pa -13 -4}\special{pa -20 -5}\special{pa -27 -7}%
+\special{pa -33 -9}\special{pa -40 -10}\special{pa -47 -12}\special{pa -54 -13}\special{pa -60 -15}%
+\special{pa -67 -16}\special{pa -74 -17}\special{pa -81 -19}\special{pa -87 -20}\special{pa -94 -21}%
+\special{pa -101 -22}\special{pa -108 -24}\special{pa -115 -25}\special{pa -121 -26}%
+\special{pa -128 -27}\special{pa -135 -28}\special{pa -142 -29}\special{pa -149 -29}%
+\special{pa -156 -30}\special{pa -163 -31}\special{pa -169 -32}\special{pa -176 -32}%
+\special{pa -183 -33}\special{pa -190 -34}\special{pa -197 -34}\special{pa -204 -35}%
+\special{pa -211 -35}\special{pa -218 -35}\special{pa -224 -36}\special{pa -231 -36}%
+\special{pa -238 -36}\special{pa -245 -36}\special{pa -252 -37}\special{pa -259 -37}%
+\special{pa -266 -37}\special{pa -273 -37}\special{pa -280 -37}\special{pa -287 -37}%
+\special{pa -293 -37}\special{pa -300 -36}\special{pa -307 -36}\special{pa -314 -36}%
+\special{pa -321 -36}\special{pa -328 -35}\special{pa -335 -35}\special{pa -342 -34}%
+\special{fp}%
+\special{pa -459 -20}\special{pa -466 -18}\special{pa -472 -17}\special{pa -479 -16}%
+\special{pa -486 -14}\special{pa -493 -13}\special{pa -499 -11}\special{pa -506 -10}%
+\special{pa -513 -8}\special{pa -519 -7}\special{pa -526 -5}\special{pa -533 -3}\special{pa -540 -1}%
+\special{pa -546 1}\special{pa -553 2}\special{pa -559 4}\special{pa -566 6}\special{pa -573 8}%
+\special{pa -579 10}\special{pa -586 12}\special{pa -592 15}\special{pa -599 17}\special{pa -605 19}%
+\special{pa -612 21}\special{pa -619 24}\special{pa -625 26}\special{pa -631 28}\special{pa -638 31}%
+\special{pa -644 33}\special{pa -651 36}\special{pa -657 38}\special{pa -664 41}\special{pa -670 44}%
+\special{pa -676 46}\special{pa -683 49}\special{pa -689 52}\special{pa -695 55}\special{pa -702 58}%
+\special{pa -708 60}\special{pa -714 63}\special{pa -720 66}\special{pa -726 69}\special{pa -733 73}%
+\special{pa -739 76}\special{pa -745 79}\special{pa -751 82}\special{pa -757 85}\special{pa -763 89}%
+\special{pa -769 92}\special{pa -775 95}\special{pa -781 99}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-2.1800,-0.2800){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.sce
new file mode 100644
index 00000000..e321cba7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p015.tex';
+Fnamesci='pointoncircle/p015.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-1.0034,-0.18217]'); Assignrep('mdbw1',[-1.0034,-0.18217]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.85955,-0.73625]]);
+pt1=Pointdata([-1.85955,-0.73625]);
+bw1=Bowdata([0,0],[-1.85955,-0.73625],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p015.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-1,-0.18],"c","$2$");
+ Drwline(bw1);
+ Letter([-2.05,-0.81],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.tex
new file mode 100644
index 00000000..23ae7668
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p015.tex
@@ -0,0 +1,90 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p015.tex 2017-8-19 10:55
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -732 290}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -729 287}\special{pa -735 287}\special{pa -735 293}\special{pa -729 293}%
+\special{pa -729 287}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1.0000,-0.1800){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -7 0}\special{pa -14 0}\special{pa -21 0}\special{pa -28 0}%
+\special{pa -35 0}\special{pa -41 0}\special{pa -48 0}\special{pa -55 1}\special{pa -62 1}%
+\special{pa -69 1}\special{pa -76 1}\special{pa -83 2}\special{pa -90 2}\special{pa -97 3}%
+\special{pa -103 3}\special{pa -110 4}\special{pa -117 5}\special{pa -124 5}\special{pa -131 6}%
+\special{pa -138 7}\special{pa -145 8}\special{pa -151 9}\special{pa -158 9}\special{pa -165 10}%
+\special{pa -172 11}\special{pa -179 13}\special{pa -186 14}\special{pa -192 15}\special{pa -199 16}%
+\special{pa -206 17}\special{pa -213 18}\special{pa -220 20}\special{pa -226 21}\special{pa -233 23}%
+\special{pa -240 24}\special{pa -247 26}\special{pa -253 27}\special{pa -260 29}\special{pa -267 30}%
+\special{pa -273 32}\special{pa -280 34}\special{pa -287 36}\special{pa -293 37}\special{pa -300 39}%
+\special{pa -307 41}\special{pa -313 43}\special{pa -320 45}\special{pa -326 47}\special{pa -333 49}%
+\special{pa -340 52}%
+\special{fp}%
+\special{pa -449 95}\special{pa -456 98}\special{pa -462 101}\special{pa -468 104}%
+\special{pa -474 107}\special{pa -480 110}\special{pa -486 113}\special{pa -493 116}%
+\special{pa -499 120}\special{pa -505 123}\special{pa -511 126}\special{pa -517 130}%
+\special{pa -523 133}\special{pa -529 136}\special{pa -535 140}\special{pa -541 143}%
+\special{pa -547 147}\special{pa -553 150}\special{pa -559 154}\special{pa -564 158}%
+\special{pa -570 161}\special{pa -576 165}\special{pa -582 169}\special{pa -588 173}%
+\special{pa -593 177}\special{pa -599 181}\special{pa -605 184}\special{pa -610 188}%
+\special{pa -616 192}\special{pa -621 196}\special{pa -627 201}\special{pa -633 205}%
+\special{pa -638 209}\special{pa -644 213}\special{pa -649 217}\special{pa -654 222}%
+\special{pa -660 226}\special{pa -665 230}\special{pa -670 235}\special{pa -676 239}%
+\special{pa -681 243}\special{pa -686 248}\special{pa -692 252}\special{pa -697 257}%
+\special{pa -702 262}\special{pa -707 266}\special{pa -712 271}\special{pa -717 276}%
+\special{pa -722 280}\special{pa -727 285}\special{pa -732 290}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-2.0500,-0.8100){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.sce
new file mode 100644
index 00000000..8a783682
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p016.tex';
+Fnamesci='pointoncircle/p016.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.92657,-0.42598]'); Assignrep('mdbw1',[-0.92657,-0.42598]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.61803,-1.17557]]);
+pt1=Pointdata([-1.61803,-1.17557]);
+bw1=Bowdata([0,0],[-1.61803,-1.17557],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p016.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.93,-0.43],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.78,-1.29],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.tex
new file mode 100644
index 00000000..32430ddc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p016.tex
@@ -0,0 +1,90 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p016.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -637 463}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -634 460}\special{pa -640 460}\special{pa -640 466}\special{pa -634 466}%
+\special{pa -634 460}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.9300,-0.4300){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -7 2}\special{pa -13 3}\special{pa -20 5}\special{pa -27 7}%
+\special{pa -33 9}\special{pa -40 10}\special{pa -47 12}\special{pa -53 14}\special{pa -60 16}%
+\special{pa -67 18}\special{pa -73 20}\special{pa -80 22}\special{pa -86 25}\special{pa -93 27}%
+\special{pa -99 29}\special{pa -106 31}\special{pa -112 34}\special{pa -119 36}\special{pa -125 38}%
+\special{pa -132 41}\special{pa -138 43}\special{pa -145 46}\special{pa -151 49}\special{pa -157 51}%
+\special{pa -164 54}\special{pa -170 57}\special{pa -176 59}\special{pa -183 62}\special{pa -189 65}%
+\special{pa -195 68}\special{pa -201 71}\special{pa -208 74}\special{pa -214 77}\special{pa -220 80}%
+\special{pa -226 83}\special{pa -232 86}\special{pa -239 89}\special{pa -245 93}\special{pa -251 96}%
+\special{pa -257 99}\special{pa -263 102}\special{pa -269 106}\special{pa -275 109}%
+\special{pa -281 113}\special{pa -287 116}\special{pa -293 120}\special{pa -299 123}%
+\special{pa -304 127}\special{pa -310 131}\special{pa -316 134}%
+\special{fp}%
+\special{pa -412 204}\special{pa -417 208}\special{pa -422 213}\special{pa -427 217}%
+\special{pa -433 222}\special{pa -438 226}\special{pa -443 231}\special{pa -448 235}%
+\special{pa -453 240}\special{pa -458 245}\special{pa -463 249}\special{pa -468 254}%
+\special{pa -473 259}\special{pa -478 264}\special{pa -483 268}\special{pa -488 273}%
+\special{pa -493 278}\special{pa -498 283}\special{pa -503 288}\special{pa -507 293}%
+\special{pa -512 298}\special{pa -517 303}\special{pa -521 308}\special{pa -526 313}%
+\special{pa -531 319}\special{pa -535 324}\special{pa -540 329}\special{pa -544 334}%
+\special{pa -549 340}\special{pa -553 345}\special{pa -557 350}\special{pa -562 356}%
+\special{pa -566 361}\special{pa -570 366}\special{pa -575 372}\special{pa -579 377}%
+\special{pa -583 383}\special{pa -587 388}\special{pa -591 394}\special{pa -595 400}%
+\special{pa -599 405}\special{pa -603 411}\special{pa -607 416}\special{pa -611 422}%
+\special{pa -615 428}\special{pa -619 434}\special{pa -622 439}\special{pa -626 445}%
+\special{pa -630 451}\special{pa -633 457}\special{pa -637 463}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1.7800,-1.2900){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.sce
new file mode 100644
index 00000000..a68d6565
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p017.tex';
+Fnamesci='pointoncircle/p017.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.79153,-0.64303]'); Assignrep('mdbw1',[-0.79153,-0.64303]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-1.27485,-1.54103]]);
+pt1=Pointdata([-1.27485,-1.54103]);
+bw1=Bowdata([0,0],[-1.27485,-1.54103],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p017.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.79,-0.64],"c","$2$");
+ Drwline(bw1);
+ Letter([-1.4,-1.7],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.tex
new file mode 100644
index 00000000..c53d6f4a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p017.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p017.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -502 607}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -499 604}\special{pa -505 604}\special{pa -505 609}\special{pa -499 609}%
+\special{pa -499 604}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.7900,-0.6400){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -6 3}\special{pa -12 7}\special{pa -18 10}\special{pa -24 13}%
+\special{pa -30 17}\special{pa -36 20}\special{pa -42 24}\special{pa -48 27}\special{pa -54 31}%
+\special{pa -60 34}\special{pa -66 38}\special{pa -72 42}\special{pa -77 45}\special{pa -83 49}%
+\special{pa -89 53}\special{pa -95 57}\special{pa -100 61}\special{pa -106 64}\special{pa -112 68}%
+\special{pa -117 72}\special{pa -123 76}\special{pa -129 80}\special{pa -134 85}\special{pa -140 89}%
+\special{pa -145 93}\special{pa -151 97}\special{pa -156 101}\special{pa -161 106}%
+\special{pa -167 110}\special{pa -172 114}\special{pa -178 119}\special{pa -183 123}%
+\special{pa -188 128}\special{pa -193 132}\special{pa -199 137}\special{pa -204 141}%
+\special{pa -209 146}\special{pa -214 150}\special{pa -219 155}\special{pa -224 160}%
+\special{pa -229 165}\special{pa -234 169}\special{pa -239 174}\special{pa -244 179}%
+\special{pa -249 184}\special{pa -254 189}\special{pa -258 194}\special{pa -263 199}%
+\special{pa -268 204}\special{pa -273 209}%
+\special{fp}%
+\special{pa -348 300}\special{pa -352 305}\special{pa -356 311}\special{pa -360 317}%
+\special{pa -364 322}\special{pa -368 328}\special{pa -372 334}\special{pa -376 339}%
+\special{pa -379 345}\special{pa -383 351}\special{pa -387 357}\special{pa -391 363}%
+\special{pa -394 368}\special{pa -398 374}\special{pa -401 380}\special{pa -405 386}%
+\special{pa -408 392}\special{pa -412 398}\special{pa -415 404}\special{pa -419 410}%
+\special{pa -422 416}\special{pa -425 422}\special{pa -428 428}\special{pa -432 434}%
+\special{pa -435 441}\special{pa -438 447}\special{pa -441 453}\special{pa -444 459}%
+\special{pa -447 465}\special{pa -450 472}\special{pa -453 478}\special{pa -456 484}%
+\special{pa -459 490}\special{pa -461 497}\special{pa -464 503}\special{pa -467 509}%
+\special{pa -469 516}\special{pa -472 522}\special{pa -475 529}\special{pa -477 535}%
+\special{pa -480 541}\special{pa -482 548}\special{pa -484 554}\special{pa -487 561}%
+\special{pa -489 567}\special{pa -491 574}\special{pa -493 580}\special{pa -496 587}%
+\special{pa -498 594}\special{pa -500 600}\special{pa -502 607}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1.4000,-1.7000){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.sce
new file mode 100644
index 00000000..e176e434
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p018.tex';
+Fnamesci='pointoncircle/p018.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.60674,-0.81967]'); Assignrep('mdbw1',[-0.60674,-0.81967]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.85156,-1.80965]]);
+pt1=Pointdata([-0.85156,-1.80965]);
+bw1=Bowdata([0,0],[-0.85156,-1.80965],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p018.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.61,-0.82],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.94,-1.99],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.tex
new file mode 100644
index 00000000..7fcf5a47
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p018.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p018.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -335 712}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -332 710}\special{pa -338 710}\special{pa -338 715}\special{pa -332 715}%
+\special{pa -332 710}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.6100,-0.8200){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -5 5}\special{pa -10 9}\special{pa -15 14}\special{pa -20 19}%
+\special{pa -25 24}\special{pa -30 28}\special{pa -35 33}\special{pa -40 38}\special{pa -45 43}%
+\special{pa -50 48}\special{pa -54 53}\special{pa -59 58}\special{pa -64 63}\special{pa -68 68}%
+\special{pa -73 73}\special{pa -78 78}\special{pa -82 84}\special{pa -87 89}\special{pa -91 94}%
+\special{pa -96 99}\special{pa -100 105}\special{pa -105 110}\special{pa -109 115}%
+\special{pa -113 121}\special{pa -118 126}\special{pa -122 131}\special{pa -126 137}%
+\special{pa -130 142}\special{pa -134 148}\special{pa -138 154}\special{pa -142 159}%
+\special{pa -146 165}\special{pa -150 170}\special{pa -154 176}\special{pa -158 182}%
+\special{pa -162 187}\special{pa -166 193}\special{pa -170 199}\special{pa -174 205}%
+\special{pa -177 211}\special{pa -181 216}\special{pa -185 222}\special{pa -188 228}%
+\special{pa -192 234}\special{pa -195 240}\special{pa -199 246}\special{pa -202 252}%
+\special{pa -206 258}\special{pa -209 264}\special{pa -212 270}%
+\special{fp}%
+\special{pa -262 377}\special{pa -265 383}\special{pa -268 390}\special{pa -270 396}%
+\special{pa -272 403}\special{pa -275 409}\special{pa -277 416}\special{pa -279 422}%
+\special{pa -282 429}\special{pa -284 435}\special{pa -286 442}\special{pa -288 448}%
+\special{pa -290 455}\special{pa -292 461}\special{pa -294 468}\special{pa -296 475}%
+\special{pa -298 481}\special{pa -300 488}\special{pa -302 495}\special{pa -303 501}%
+\special{pa -305 508}\special{pa -307 515}\special{pa -308 521}\special{pa -310 528}%
+\special{pa -312 535}\special{pa -313 542}\special{pa -314 548}\special{pa -316 555}%
+\special{pa -317 562}\special{pa -319 569}\special{pa -320 575}\special{pa -321 582}%
+\special{pa -322 589}\special{pa -323 596}\special{pa -324 603}\special{pa -325 609}%
+\special{pa -326 616}\special{pa -327 623}\special{pa -328 630}\special{pa -329 637}%
+\special{pa -330 644}\special{pa -331 651}\special{pa -331 657}\special{pa -332 664}%
+\special{pa -333 671}\special{pa -333 678}\special{pa -334 685}\special{pa -334 692}%
+\special{pa -335 699}\special{pa -335 706}\special{pa -335 712}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.9400,-1.9900){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.sce
new file mode 100644
index 00000000..5b4af69a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p019.tex';
+Fnamesci='pointoncircle/p019.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.38384,-0.94481]'); Assignrep('mdbw1',[-0.38384,-0.94481]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[-0.37476,-1.96457]]);
+pt1=Pointdata([-0.37476,-1.96457]);
+bw1=Bowdata([0,0],[-0.37476,-1.96457],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p019.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.38,-0.94],"c","$2$");
+ Drwline(bw1);
+ Letter([-0.41,-2.16],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.tex
new file mode 100644
index 00000000..e417ebd0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p019.tex
@@ -0,0 +1,91 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p019.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa -148 773}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa -145 771}\special{pa -150 771}\special{pa -150 776}\special{pa -145 776}%
+\special{pa -145 771}\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.3800,-0.9400){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -4 6}\special{pa -8 12}\special{pa -11 17}\special{pa -15 23}%
+\special{pa -19 29}\special{pa -22 35}\special{pa -26 41}\special{pa -29 47}\special{pa -33 53}%
+\special{pa -36 59}\special{pa -39 65}\special{pa -43 71}\special{pa -46 77}\special{pa -49 83}%
+\special{pa -53 89}\special{pa -56 95}\special{pa -59 101}\special{pa -62 108}\special{pa -65 114}%
+\special{pa -68 120}\special{pa -71 126}\special{pa -74 132}\special{pa -77 139}\special{pa -80 145}%
+\special{pa -82 151}\special{pa -85 158}\special{pa -88 164}\special{pa -91 170}\special{pa -93 177}%
+\special{pa -96 183}\special{pa -98 190}\special{pa -101 196}\special{pa -103 202}%
+\special{pa -106 209}\special{pa -108 215}\special{pa -110 222}\special{pa -113 228}%
+\special{pa -115 235}\special{pa -117 241}\special{pa -119 248}\special{pa -121 255}%
+\special{pa -123 261}\special{pa -126 268}\special{pa -127 274}\special{pa -129 281}%
+\special{pa -131 288}\special{pa -133 294}\special{pa -135 301}\special{pa -137 308}%
+\special{pa -138 314}%
+\special{fp}%
+\special{pa -161 430}\special{pa -161 437}\special{pa -162 444}\special{pa -163 451}%
+\special{pa -164 458}\special{pa -164 465}\special{pa -165 471}\special{pa -166 478}%
+\special{pa -166 485}\special{pa -167 492}\special{pa -167 499}\special{pa -168 506}%
+\special{pa -168 513}\special{pa -168 520}\special{pa -169 527}\special{pa -169 533}%
+\special{pa -169 540}\special{pa -169 547}\special{pa -169 554}\special{pa -169 561}%
+\special{pa -169 568}\special{pa -169 575}\special{pa -169 582}\special{pa -169 589}%
+\special{pa -169 596}\special{pa -169 602}\special{pa -168 609}\special{pa -168 616}%
+\special{pa -168 623}\special{pa -167 630}\special{pa -167 637}\special{pa -166 644}%
+\special{pa -166 651}\special{pa -165 657}\special{pa -164 664}\special{pa -164 671}%
+\special{pa -163 678}\special{pa -162 685}\special{pa -161 692}\special{pa -160 699}%
+\special{pa -159 705}\special{pa -158 712}\special{pa -157 719}\special{pa -156 726}%
+\special{pa -155 733}\special{pa -154 740}\special{pa -153 746}\special{pa -152 753}%
+\special{pa -150 760}\special{pa -149 767}\special{pa -148 773}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.4100,-2.1600){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.sce
new file mode 100644
index 00000000..aa167646
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p020.tex';
+Fnamesci='pointoncircle/p020.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[-0.13681,-1.01058]'); Assignrep('mdbw1',[-0.13681,-1.01058]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.12558,-1.99605]]);
+pt1=Pointdata([0.12558,-1.99605]);
+bw1=Bowdata([0,0],[0.12558,-1.99605],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p020.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([-0.14,-1.01],"c","$2$");
+ Drwline(bw1);
+ Letter([0.14,-2.2],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.tex
new file mode 100644
index 00000000..1ba69921
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p020.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p020.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 49 786}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 52 783}\special{pa 47 783}\special{pa 47 789}\special{pa 52 789}\special{pa 52 783}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.1400,-1.0100){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -2 7}\special{pa -4 13}\special{pa -7 20}\special{pa -9 26}%
+\special{pa -11 33}\special{pa -13 39}\special{pa -15 46}\special{pa -17 53}\special{pa -18 59}%
+\special{pa -20 66}\special{pa -22 73}\special{pa -24 79}\special{pa -25 86}\special{pa -27 93}%
+\special{pa -29 99}\special{pa -30 106}\special{pa -32 113}\special{pa -33 120}\special{pa -35 126}%
+\special{pa -36 133}\special{pa -37 140}\special{pa -39 147}\special{pa -40 153}\special{pa -41 160}%
+\special{pa -42 167}\special{pa -43 174}\special{pa -44 181}\special{pa -45 188}\special{pa -46 194}%
+\special{pa -47 201}\special{pa -48 208}\special{pa -49 215}\special{pa -50 222}\special{pa -50 229}%
+\special{pa -51 235}\special{pa -52 242}\special{pa -52 249}\special{pa -53 256}\special{pa -53 263}%
+\special{pa -54 270}\special{pa -54 277}\special{pa -55 284}\special{pa -55 291}\special{pa -55 297}%
+\special{pa -55 304}\special{pa -56 311}\special{pa -56 318}\special{pa -56 325}\special{pa -56 332}%
+\special{pa -56 339}%
+\special{fp}%
+\special{pa -48 457}\special{pa -48 464}\special{pa -47 470}\special{pa -46 477}\special{pa -45 484}%
+\special{pa -44 491}\special{pa -43 498}\special{pa -42 504}\special{pa -40 511}\special{pa -39 518}%
+\special{pa -38 525}\special{pa -37 532}\special{pa -35 538}\special{pa -34 545}\special{pa -32 552}%
+\special{pa -31 559}\special{pa -29 565}\special{pa -28 572}\special{pa -26 579}\special{pa -24 585}%
+\special{pa -23 592}\special{pa -21 599}\special{pa -19 605}\special{pa -17 612}\special{pa -15 619}%
+\special{pa -13 625}\special{pa -11 632}\special{pa -9 639}\special{pa -7 645}\special{pa -5 652}%
+\special{pa -3 658}\special{pa -1 665}\special{pa 1 671}\special{pa 4 678}\special{pa 6 684}%
+\special{pa 8 691}\special{pa 11 697}\special{pa 13 704}\special{pa 16 710}\special{pa 18 717}%
+\special{pa 21 723}\special{pa 24 729}\special{pa 26 736}\special{pa 29 742}\special{pa 32 748}%
+\special{pa 35 755}\special{pa 38 761}\special{pa 40 767}\special{pa 43 773}\special{pa 46 780}%
+\special{pa 49 786}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.1400,-2.2000){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.sce
new file mode 100644
index 00000000..0a58ae6e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p021.tex';
+Fnamesci='pointoncircle/p021.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.11881,-1.01286]'); Assignrep('mdbw1',[0.11881,-1.01286]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[0.61803,-1.90211]]);
+pt1=Pointdata([0.61803,-1.90211]);
+bw1=Bowdata([0,0],[0.61803,-1.90211],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p021.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.12,-1.01],"c","$2$");
+ Drwline(bw1);
+ Letter([0.68,-2.09],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.tex
new file mode 100644
index 00000000..80554147
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p021.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p021.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 243 749}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 246 746}\special{pa 241 746}\special{pa 241 752}\special{pa 246 752}\special{pa 246 746}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.1200,-1.0100){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa -1 7}\special{pa -1 14}\special{pa -1 21}\special{pa -2 28}%
+\special{pa -2 34}\special{pa -2 41}\special{pa -3 48}\special{pa -3 55}\special{pa -3 62}%
+\special{pa -3 69}\special{pa -3 76}\special{pa -3 83}\special{pa -3 90}\special{pa -3 97}%
+\special{pa -3 103}\special{pa -3 110}\special{pa -3 117}\special{pa -2 124}\special{pa -2 131}%
+\special{pa -2 138}\special{pa -1 145}\special{pa -1 152}\special{pa 0 159}\special{pa 0 165}%
+\special{pa 1 172}\special{pa 1 179}\special{pa 2 186}\special{pa 3 193}\special{pa 3 200}%
+\special{pa 4 207}\special{pa 5 213}\special{pa 6 220}\special{pa 7 227}\special{pa 8 234}%
+\special{pa 9 241}\special{pa 10 248}\special{pa 11 254}\special{pa 12 261}\special{pa 14 268}%
+\special{pa 15 275}\special{pa 16 282}\special{pa 18 288}\special{pa 19 295}\special{pa 20 302}%
+\special{pa 22 309}\special{pa 24 315}\special{pa 25 322}\special{pa 27 329}\special{pa 28 335}%
+\special{pa 30 342}%
+\special{fp}%
+\special{pa 67 454}\special{pa 69 461}\special{pa 72 467}\special{pa 74 474}\special{pa 77 480}%
+\special{pa 80 486}\special{pa 82 493}\special{pa 85 499}\special{pa 88 505}\special{pa 91 512}%
+\special{pa 94 518}\special{pa 97 524}\special{pa 100 530}\special{pa 103 536}\special{pa 106 543}%
+\special{pa 109 549}\special{pa 112 555}\special{pa 115 561}\special{pa 119 567}\special{pa 122 573}%
+\special{pa 125 579}\special{pa 129 585}\special{pa 132 591}\special{pa 136 597}\special{pa 139 603}%
+\special{pa 143 609}\special{pa 146 615}\special{pa 150 621}\special{pa 153 627}\special{pa 157 633}%
+\special{pa 161 638}\special{pa 165 644}\special{pa 168 650}\special{pa 172 656}\special{pa 176 661}%
+\special{pa 180 667}\special{pa 184 673}\special{pa 188 678}\special{pa 192 684}\special{pa 196 689}%
+\special{pa 200 695}\special{pa 204 701}\special{pa 209 706}\special{pa 213 711}\special{pa 217 717}%
+\special{pa 221 722}\special{pa 226 728}\special{pa 230 733}\special{pa 234 738}\special{pa 239 744}%
+\special{pa 243 749}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.6800,-2.0900){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.sce
new file mode 100644
index 00000000..d0bd9703
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p022.tex';
+Fnamesci='pointoncircle/p022.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.36696,-0.95149]'); Assignrep('mdbw1',[0.36696,-0.95149]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.07165,-1.68866]]);
+pt1=Pointdata([1.07165,-1.68866]);
+bw1=Bowdata([0,0],[1.07165,-1.68866],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p022.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.37,-0.95],"c","$2$");
+ Drwline(bw1);
+ Letter([1.18,-1.86],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.tex
new file mode 100644
index 00000000..bd69e6b8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p022.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p022.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 422 665}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 425 662}\special{pa 419 662}\special{pa 419 668}\special{pa 425 668}\special{pa 425 662}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.3700,-0.9500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 1 7}\special{pa 2 14}\special{pa 4 20}\special{pa 5 27}%
+\special{pa 6 34}\special{pa 8 41}\special{pa 9 47}\special{pa 11 54}\special{pa 12 61}%
+\special{pa 14 68}\special{pa 16 74}\special{pa 17 81}\special{pa 19 88}\special{pa 21 94}%
+\special{pa 23 101}\special{pa 25 108}\special{pa 27 114}\special{pa 28 121}\special{pa 30 127}%
+\special{pa 33 134}\special{pa 35 141}\special{pa 37 147}\special{pa 39 154}\special{pa 41 160}%
+\special{pa 43 167}\special{pa 46 173}\special{pa 48 180}\special{pa 51 186}\special{pa 53 193}%
+\special{pa 55 199}\special{pa 58 206}\special{pa 61 212}\special{pa 63 218}\special{pa 66 225}%
+\special{pa 69 231}\special{pa 71 237}\special{pa 74 244}\special{pa 77 250}\special{pa 80 256}%
+\special{pa 83 262}\special{pa 86 269}\special{pa 89 275}\special{pa 92 281}\special{pa 95 287}%
+\special{pa 98 293}\special{pa 101 300}\special{pa 104 306}\special{pa 108 312}\special{pa 111 318}%
+\special{pa 114 324}%
+\special{fp}%
+\special{pa 178 424}\special{pa 182 429}\special{pa 186 435}\special{pa 190 440}\special{pa 194 446}%
+\special{pa 198 451}\special{pa 202 457}\special{pa 207 462}\special{pa 211 467}\special{pa 215 473}%
+\special{pa 220 478}\special{pa 224 483}\special{pa 229 489}\special{pa 233 494}\special{pa 238 499}%
+\special{pa 242 504}\special{pa 247 510}\special{pa 251 515}\special{pa 256 520}\special{pa 261 525}%
+\special{pa 265 530}\special{pa 270 535}\special{pa 275 540}\special{pa 280 545}\special{pa 285 550}%
+\special{pa 290 554}\special{pa 294 559}\special{pa 299 564}\special{pa 304 569}\special{pa 309 574}%
+\special{pa 314 578}\special{pa 320 583}\special{pa 325 588}\special{pa 330 592}\special{pa 335 597}%
+\special{pa 340 601}\special{pa 345 606}\special{pa 351 610}\special{pa 356 615}\special{pa 361 619}%
+\special{pa 367 623}\special{pa 372 628}\special{pa 378 632}\special{pa 383 636}\special{pa 388 640}%
+\special{pa 394 645}\special{pa 400 649}\special{pa 405 653}\special{pa 411 657}\special{pa 416 661}%
+\special{pa 422 665}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.1800,-1.8600){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.sce
new file mode 100644
index 00000000..6084fa23
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p023.tex';
+Fnamesci='pointoncircle/p023.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.59206,-0.83034]'); Assignrep('mdbw1',[0.59206,-0.83034]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.45794,-1.36909]]);
+pt1=Pointdata([1.45794,-1.36909]);
+bw1=Bowdata([0,0],[1.45794,-1.36909],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p023.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.59,-0.83],"c","$2$");
+ Drwline(bw1);
+ Letter([1.6,-1.51],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.tex
new file mode 100644
index 00000000..8aa2ac69
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p023.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p023.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 574 539}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 577 536}\special{pa 571 536}\special{pa 571 542}\special{pa 577 542}\special{pa 577 536}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.5900,-0.8300){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 3 6}\special{pa 6 13}\special{pa 9 19}\special{pa 12 25}%
+\special{pa 15 31}\special{pa 18 37}\special{pa 21 44}\special{pa 24 50}\special{pa 27 56}%
+\special{pa 30 62}\special{pa 34 68}\special{pa 37 74}\special{pa 40 80}\special{pa 44 86}%
+\special{pa 47 92}\special{pa 51 98}\special{pa 54 104}\special{pa 58 110}\special{pa 61 116}%
+\special{pa 65 122}\special{pa 69 128}\special{pa 72 133}\special{pa 76 139}\special{pa 80 145}%
+\special{pa 84 151}\special{pa 87 156}\special{pa 91 162}\special{pa 95 168}\special{pa 99 173}%
+\special{pa 103 179}\special{pa 107 185}\special{pa 111 190}\special{pa 116 196}\special{pa 120 201}%
+\special{pa 124 207}\special{pa 128 212}\special{pa 132 218}\special{pa 137 223}\special{pa 141 228}%
+\special{pa 145 234}\special{pa 150 239}\special{pa 154 244}\special{pa 159 249}\special{pa 163 255}%
+\special{pa 168 260}\special{pa 173 265}\special{pa 177 270}\special{pa 182 275}\special{pa 187 280}%
+\special{pa 191 285}%
+\special{fp}%
+\special{pa 277 366}\special{pa 283 370}\special{pa 288 375}\special{pa 293 379}\special{pa 299 383}%
+\special{pa 304 388}\special{pa 310 392}\special{pa 315 396}\special{pa 321 400}\special{pa 326 404}%
+\special{pa 332 409}\special{pa 337 413}\special{pa 343 417}\special{pa 349 421}\special{pa 354 424}%
+\special{pa 360 428}\special{pa 366 432}\special{pa 371 436}\special{pa 377 440}\special{pa 383 444}%
+\special{pa 389 447}\special{pa 395 451}\special{pa 401 454}\special{pa 406 458}\special{pa 412 462}%
+\special{pa 418 465}\special{pa 424 469}\special{pa 430 472}\special{pa 436 475}\special{pa 442 479}%
+\special{pa 448 482}\special{pa 455 485}\special{pa 461 488}\special{pa 467 492}\special{pa 473 495}%
+\special{pa 479 498}\special{pa 485 501}\special{pa 491 504}\special{pa 498 507}\special{pa 504 510}%
+\special{pa 510 513}\special{pa 517 515}\special{pa 523 518}\special{pa 529 521}\special{pa 536 524}%
+\special{pa 542 526}\special{pa 548 529}\special{pa 555 532}\special{pa 561 534}\special{pa 568 537}%
+\special{pa 574 539}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.6000,-1.5100){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.sce
new file mode 100644
index 00000000..13cccf91
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p024.tex';
+Fnamesci='pointoncircle/p024.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.77996,-0.65702]'); Assignrep('mdbw1',[0.77996,-0.65702]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.75261,-0.96351]]);
+pt1=Pointdata([1.75261,-0.96351]);
+bw1=Bowdata([0,0],[1.75261,-0.96351],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p024.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.78,-0.66],"c","$2$");
+ Drwline(bw1);
+ Letter([1.93,-1.06],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.tex
new file mode 100644
index 00000000..d99ee59f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p024.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p024.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 690 379}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 693 377}\special{pa 687 377}\special{pa 687 382}\special{pa 693 382}\special{pa 693 377}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.7800,-0.6600){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 4 5}\special{pa 9 11}\special{pa 13 16}\special{pa 18 21}%
+\special{pa 22 27}\special{pa 26 32}\special{pa 31 37}\special{pa 36 42}\special{pa 40 47}%
+\special{pa 45 52}\special{pa 49 58}\special{pa 54 63}\special{pa 59 68}\special{pa 64 73}%
+\special{pa 69 78}\special{pa 73 82}\special{pa 78 87}\special{pa 83 92}\special{pa 88 97}%
+\special{pa 93 102}\special{pa 98 107}\special{pa 103 111}\special{pa 108 116}\special{pa 113 121}%
+\special{pa 118 125}\special{pa 124 130}\special{pa 129 134}\special{pa 134 139}\special{pa 139 143}%
+\special{pa 145 148}\special{pa 150 152}\special{pa 155 157}\special{pa 161 161}\special{pa 166 165}%
+\special{pa 171 169}\special{pa 177 174}\special{pa 182 178}\special{pa 188 182}\special{pa 193 186}%
+\special{pa 199 190}\special{pa 205 194}\special{pa 210 198}\special{pa 216 202}\special{pa 222 206}%
+\special{pa 227 210}\special{pa 233 214}\special{pa 239 218}\special{pa 245 221}\special{pa 250 225}%
+\special{pa 256 229}%
+\special{fp}%
+\special{pa 360 286}\special{pa 366 289}\special{pa 372 291}\special{pa 378 294}\special{pa 385 297}%
+\special{pa 391 300}\special{pa 397 303}\special{pa 404 305}\special{pa 410 308}\special{pa 416 311}%
+\special{pa 423 313}\special{pa 429 316}\special{pa 436 318}\special{pa 442 321}\special{pa 449 323}%
+\special{pa 455 325}\special{pa 462 328}\special{pa 468 330}\special{pa 475 332}\special{pa 481 334}%
+\special{pa 488 336}\special{pa 494 339}\special{pa 501 341}\special{pa 508 343}\special{pa 514 345}%
+\special{pa 521 346}\special{pa 527 348}\special{pa 534 350}\special{pa 541 352}\special{pa 548 354}%
+\special{pa 554 355}\special{pa 561 357}\special{pa 568 359}\special{pa 574 360}\special{pa 581 362}%
+\special{pa 588 363}\special{pa 595 364}\special{pa 601 366}\special{pa 608 367}\special{pa 615 368}%
+\special{pa 622 370}\special{pa 628 371}\special{pa 635 372}\special{pa 642 373}\special{pa 649 374}%
+\special{pa 656 375}\special{pa 663 376}\special{pa 669 377}\special{pa 676 378}\special{pa 683 379}%
+\special{pa 690 379}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.9300,-1.0600){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.sce
new file mode 100644
index 00000000..99337104
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p025.tex';
+Fnamesci='pointoncircle/p025.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[0.91885,-0.44241]'); Assignrep('mdbw1',[0.91885,-0.44241]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[1.93717,-0.49738]]);
+pt1=Pointdata([1.93717,-0.49738]);
+bw1=Bowdata([0,0],[1.93717,-0.49738],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p025.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([0.92,-0.44],"c","$2$");
+ Drwline(bw1);
+ Letter([2.13,-0.55],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.tex
new file mode 100644
index 00000000..fb5c827f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p025.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p025.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 763 196}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 765 193}\special{pa 760 193}\special{pa 760 199}\special{pa 765 199}\special{pa 765 193}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.9200,-0.4400){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 6 4}\special{pa 11 8}\special{pa 17 12}\special{pa 22 16}%
+\special{pa 28 20}\special{pa 34 24}\special{pa 39 28}\special{pa 45 32}\special{pa 51 36}%
+\special{pa 56 40}\special{pa 62 43}\special{pa 68 47}\special{pa 74 51}\special{pa 80 54}%
+\special{pa 86 58}\special{pa 92 62}\special{pa 98 65}\special{pa 103 69}\special{pa 109 72}%
+\special{pa 115 75}\special{pa 121 79}\special{pa 128 82}\special{pa 134 85}\special{pa 140 89}%
+\special{pa 146 92}\special{pa 152 95}\special{pa 158 98}\special{pa 164 101}\special{pa 171 104}%
+\special{pa 177 107}\special{pa 183 110}\special{pa 189 113}\special{pa 196 116}\special{pa 202 119}%
+\special{pa 208 121}\special{pa 214 124}\special{pa 221 127}\special{pa 227 130}\special{pa 234 132}%
+\special{pa 240 135}\special{pa 246 137}\special{pa 253 140}\special{pa 259 142}\special{pa 266 144}%
+\special{pa 272 147}\special{pa 279 149}\special{pa 285 151}\special{pa 292 154}\special{pa 298 156}%
+\special{pa 305 158}%
+\special{fp}%
+\special{pa 419 187}\special{pa 426 189}\special{pa 433 190}\special{pa 440 191}\special{pa 446 192}%
+\special{pa 453 193}\special{pa 460 194}\special{pa 467 195}\special{pa 474 196}\special{pa 481 197}%
+\special{pa 487 198}\special{pa 494 199}\special{pa 501 200}\special{pa 508 201}\special{pa 515 201}%
+\special{pa 522 202}\special{pa 529 203}\special{pa 536 203}\special{pa 542 204}\special{pa 549 204}%
+\special{pa 556 205}\special{pa 563 205}\special{pa 570 205}\special{pa 577 206}\special{pa 584 206}%
+\special{pa 591 206}\special{pa 598 206}\special{pa 604 206}\special{pa 611 206}\special{pa 618 206}%
+\special{pa 625 206}\special{pa 632 206}\special{pa 639 206}\special{pa 646 206}\special{pa 653 206}%
+\special{pa 660 205}\special{pa 667 205}\special{pa 673 205}\special{pa 680 204}\special{pa 687 204}%
+\special{pa 694 203}\special{pa 701 203}\special{pa 708 202}\special{pa 715 202}\special{pa 722 201}%
+\special{pa 728 200}\special{pa 735 199}\special{pa 742 199}\special{pa 749 198}\special{pa 756 197}%
+\special{pa 763 196}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.1300,-0.5500){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.sce
new file mode 100644
index 00000000..50200087
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.sce
@@ -0,0 +1,56 @@
+//date time=2017/8/19 10:55:49
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='pointoncircle/p026.tex';
+Fnamesci='pointoncircle/p026.sce';
+Fnamescibody='figs0706animatebody.sce';
+Fnameout='figs0706animate.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-2.5,2.5], [-2.5,2.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[0,-4]; Assignrep('A',[0,-4]);
+B=[6.28319,-3.96979]; Assignrep('B',[6.28319,-3.96979]);
+C=[0.83543,-3.99598]; Assignrep('C',[0.83543,-3.99598]);
+mdbw1=evstr('[1,-0.2]'); Assignrep('mdbw1',[1,-0.2]);
+cr1=Circledata([[0,0],[2,0]]);
+sg1=Listplot([[0,0],[2,0]]);
+pt1=Pointdata([2,0]);
+bw1=Bowdata([0,0],[2,0],1,0.3);
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p026.tex','1cm');
+ Fontsize('s');
+ Drwline(cr1);
+ Letter([2,0],"se","$2$");
+ Setcolor("red");
+ Drwline(sg1);
+ Setcolor("black");
+ Setpen(0.12);
+ Drwpt(list(pt1));
+ Setpen(1);
+ Letter([1,-0.2],"c","$2$");
+ Drwline(bw1);
+ Letter([2.2,0],"c","$\mathrm{P}$");
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.tex
new file mode 100644
index 00000000..89c96f2c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/pointoncircle/p026.tex
@@ -0,0 +1,88 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p026.tex 2017-8-19 10:56
+%%% figs0706animateall.sce 2017-8-19 10:55
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 5.00000)( -2.50000, -2.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa 787 0}\special{pa 781 -99}\special{pa 763 -196}\special{pa 732 -290}\special{pa 690 -379}%
+\special{pa 637 -463}\special{pa 574 -539}\special{pa 502 -607}\special{pa 422 -665}%
+\special{pa 335 -712}\special{pa 243 -749}\special{pa 148 -773}\special{pa 49 -786}%
+\special{pa -49 -786}\special{pa -148 -773}\special{pa -243 -749}\special{pa -335 -712}%
+\special{pa -422 -665}\special{pa -502 -607}\special{pa -574 -539}\special{pa -637 -463}%
+\special{pa -690 -379}\special{pa -732 -290}\special{pa -763 -196}\special{pa -781 -99}%
+\special{pa -787 0}\special{pa -781 99}\special{pa -763 196}\special{pa -732 290}%
+\special{pa -690 379}\special{pa -637 463}\special{pa -574 539}\special{pa -502 607}%
+\special{pa -422 665}\special{pa -335 712}\special{pa -243 749}\special{pa -148 773}%
+\special{pa -49 786}\special{pa 49 786}\special{pa 148 773}\special{pa 243 749}\special{pa 335 712}%
+\special{pa 422 665}\special{pa 502 607}\special{pa 574 539}\special{pa 637 463}\special{pa 690 379}%
+\special{pa 732 290}\special{pa 763 196}\special{pa 781 99}\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$2$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-\Height}%
+\put(2.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\color[cmyk]{0,1,1,0}%
+\special{pa 0 0}\special{pa 787 0}%
+\special{fp}%
+\color[cmyk]{0,0,0,1}%
+\special{pn 1}%
+\special{pa 790 -3}\special{pa 785 -3}\special{pa 785 3}\special{pa 790 3}\special{pa 790 -3}%
+\special{sh 1}\special{fp}%
+\special{pn 8}%
+\settowidth{\Width}{$2$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$2$}\settodepth{\Depth}{$2$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(1.0000,-0.2000){\hspace*{\Width}\raisebox{\Height}{$2$}}%
+%
+%
+\special{pa 0 0}\special{pa 6 3}\special{pa 13 5}\special{pa 19 8}\special{pa 26 10}%
+\special{pa 32 13}\special{pa 39 15}\special{pa 45 18}\special{pa 52 20}\special{pa 58 22}%
+\special{pa 65 24}\special{pa 71 27}\special{pa 78 29}\special{pa 84 31}\special{pa 91 33}%
+\special{pa 97 35}\special{pa 104 37}\special{pa 111 39}\special{pa 117 41}\special{pa 124 43}%
+\special{pa 131 44}\special{pa 137 46}\special{pa 144 48}\special{pa 151 49}\special{pa 157 51}%
+\special{pa 164 53}\special{pa 171 54}\special{pa 178 56}\special{pa 184 57}\special{pa 191 58}%
+\special{pa 198 60}\special{pa 205 61}\special{pa 211 62}\special{pa 218 64}\special{pa 225 65}%
+\special{pa 232 66}\special{pa 239 67}\special{pa 245 68}\special{pa 252 69}\special{pa 259 70}%
+\special{pa 266 71}\special{pa 273 72}\special{pa 280 72}\special{pa 287 73}\special{pa 293 74}%
+\special{pa 300 74}\special{pa 307 75}\special{pa 314 76}\special{pa 321 76}\special{pa 328 77}%
+\special{pa 335 77}%
+\special{fp}%
+\special{pa 453 77}\special{pa 460 77}\special{pa 466 76}\special{pa 473 76}\special{pa 480 75}%
+\special{pa 487 74}\special{pa 494 74}\special{pa 501 73}\special{pa 508 72}\special{pa 515 72}%
+\special{pa 521 71}\special{pa 528 70}\special{pa 535 69}\special{pa 542 68}\special{pa 549 67}%
+\special{pa 556 66}\special{pa 562 65}\special{pa 569 64}\special{pa 576 62}\special{pa 583 61}%
+\special{pa 590 60}\special{pa 596 58}\special{pa 603 57}\special{pa 610 56}\special{pa 617 54}%
+\special{pa 623 53}\special{pa 630 51}\special{pa 637 49}\special{pa 643 48}\special{pa 650 46}%
+\special{pa 657 44}\special{pa 663 43}\special{pa 670 41}\special{pa 677 39}\special{pa 683 37}%
+\special{pa 690 35}\special{pa 697 33}\special{pa 703 31}\special{pa 710 29}\special{pa 716 27}%
+\special{pa 723 24}\special{pa 729 22}\special{pa 736 20}\special{pa 742 18}\special{pa 749 15}%
+\special{pa 755 13}\special{pa 762 10}\special{pa 768 8}\special{pa 775 5}\special{pa 781 3}%
+\special{pa 787 0}%
+\special{fp}%
+\settowidth{\Width}{$\mathrm{P}$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$\mathrm{P}$}\settodepth{\Depth}{$\mathrm{P}$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.2000,0.0000){\hspace*{\Width}\raisebox{\Height}{$\mathrm{P}$}}%
+%
+%
+\special{pa -984 0}\special{pa 984 0}%
+\special{fp}%
+\special{pa 0 984}\special{pa 0 -984}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(2.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,2.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/resultS.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/resultS.txt
new file mode 100644
index 00000000..c0e52bd3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/resultS.txt
@@ -0,0 +1 @@
+||||
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve.tex
new file mode 100644
index 00000000..26255ecf
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve.tex
@@ -0,0 +1,41 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve.tex 2016-12-27 16:35
+%%% sinecurve.sce 2016-12-27 16:35
+{\unitlength=1cm%
+\begin{picture}%
+( 7.00000, 3.00000)( -3.50000, -1.50000)%
+\special{pn 8}%
+%
+\special{pa -1378 191}\special{pa -1323 237}\special{pa -1268 279}\special{pa -1213 315}%
+\special{pa -1157 345}\special{pa -1102 368}\special{pa -1047 384}\special{pa -992 392}%
+\special{pa -937 393}\special{pa -882 386}\special{pa -827 372}\special{pa -772 350}%
+\special{pa -717 321}\special{pa -661 287}\special{pa -606 246}\special{pa -551 201}%
+\special{pa -496 152}\special{pa -441 99}\special{pa -386 45}\special{pa -331 -10}%
+\special{pa -276 -65}\special{pa -220 -118}\special{pa -165 -169}\special{pa -110 -217}%
+\special{pa -55 -261}\special{pa 0 -300}\special{pa 55 -332}\special{pa 110 -359}%
+\special{pa 165 -378}\special{pa 220 -390}\special{pa 276 -394}\special{pa 331 -390}%
+\special{pa 386 -379}\special{pa 441 -360}\special{pa 496 -335}\special{pa 551 -303}%
+\special{pa 606 -264}\special{pa 661 -221}\special{pa 717 -174}\special{pa 772 -123}%
+\special{pa 827 -69}\special{pa 882 -14}\special{pa 937 41}\special{pa 992 95}\special{pa 1047 147}%
+\special{pa 1102 197}\special{pa 1157 242}\special{pa 1213 283}\special{pa 1268 319}%
+\special{pa 1323 348}\special{pa 1378 370}%
+\special{fp}%
+\special{pa -1378 0}\special{pa 1378 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(3.5500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/all.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/all.sce
new file mode 100644
index 00000000..1888e4b6
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/all.sce
@@ -0,0 +1,942 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p001.tex';
+Fnamesci='sinecurve/p001.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-3))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p001.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-2.63333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p002.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-2.26667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p003.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-1.9))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p004.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-1.53333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p005.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-1.16667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p006.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-0.8))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p007.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-0.43333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p008.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-0.06667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p009.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(0.3))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p010.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(0.66667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p011.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(1.03333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p012.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(1.4))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p013.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(1.76667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p014.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(2.13333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p015.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(2.5))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p016.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(2.86667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p017.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(3.23333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p018.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(3.6))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p019.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(3.96667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p020.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(4.33333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p021.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(4.7))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p022.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(5.06667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p023.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(5.43333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p024.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(5.8))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p025.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(6.16667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p026.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(6.53333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p027.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(6.9))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p028.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(7.26667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p029.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(7.63333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p030.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(8))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p031.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.sce
new file mode 100644
index 00000000..cb1fe21b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p001.tex';
+Fnamesci='sinecurve/p001.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-3))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p001.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.tex
new file mode 100644
index 00000000..43593231
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p001.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p001.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 0}\special{pa -1094 -86}\special{pa -1008 -168}\special{pa -921 -241}%
+\special{pa -835 -303}\special{pa -748 -351}\special{pa -661 -381}\special{pa -575 -394}%
+\special{pa -488 -387}\special{pa -402 -361}\special{pa -315 -318}\special{pa -228 -260}%
+\special{pa -142 -189}\special{pa -55 -109}\special{pa 31 -24}\special{pa 118 62}%
+\special{pa 205 145}\special{pa 291 222}\special{pa 378 287}\special{pa 465 339}\special{pa 551 375}%
+\special{pa 638 392}\special{pa 724 390}\special{pa 811 370}\special{pa 898 332}\special{pa 984 278}%
+\special{pa 1071 210}\special{pa 1157 132}\special{pa 1244 48}\special{pa 1331 -38}%
+\special{pa 1417 -123}\special{pa 1504 -201}\special{pa 1591 -270}\special{pa 1677 -326}%
+\special{pa 1764 -366}\special{pa 1850 -389}\special{pa 1937 -393}\special{pa 2024 -378}%
+\special{pa 2110 -344}\special{pa 2197 -294}\special{pa 2283 -230}\special{pa 2370 -155}%
+\special{pa 2457 -72}\special{pa 2543 14}\special{pa 2630 99}\special{pa 2717 180}%
+\special{pa 2803 252}\special{pa 2890 312}\special{pa 2976 357}\special{pa 3063 385}%
+\special{pa 3150 394}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.sce
new file mode 100644
index 00000000..d0aa72ce
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p002.tex';
+Fnamesci='sinecurve/p002.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-2.63333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p002.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.tex
new file mode 100644
index 00000000..9f89b2fd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p002.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p002.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 141}\special{pa -1094 58}\special{pa -1008 -29}\special{pa -921 -114}%
+\special{pa -835 -193}\special{pa -748 -264}\special{pa -661 -321}\special{pa -575 -363}%
+\special{pa -488 -388}\special{pa -402 -393}\special{pa -315 -380}\special{pa -228 -349}%
+\special{pa -142 -300}\special{pa -55 -238}\special{pa 31 -164}\special{pa 118 -81}%
+\special{pa 205 5}\special{pa 291 90}\special{pa 378 172}\special{pa 465 245}\special{pa 551 306}%
+\special{pa 638 353}\special{pa 724 383}\special{pa 811 394}\special{pa 898 386}\special{pa 984 359}%
+\special{pa 1071 316}\special{pa 1157 257}\special{pa 1244 185}\special{pa 1331 105}%
+\special{pa 1417 20}\special{pa 1504 -67}\special{pa 1591 -150}\special{pa 1677 -226}%
+\special{pa 1764 -291}\special{pa 1850 -342}\special{pa 1937 -376}\special{pa 2024 -392}%
+\special{pa 2110 -390}\special{pa 2197 -369}\special{pa 2283 -329}\special{pa 2370 -274}%
+\special{pa 2457 -206}\special{pa 2543 -128}\special{pa 2630 -44}\special{pa 2717 43}%
+\special{pa 2803 127}\special{pa 2890 205}\special{pa 2976 274}\special{pa 3063 329}%
+\special{pa 3150 368}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.sce
new file mode 100644
index 00000000..12547148
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p003.tex';
+Fnamesci='sinecurve/p003.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-2.26667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p003.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.tex
new file mode 100644
index 00000000..9eefac61
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p003.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p003.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 264}\special{pa -1094 193}\special{pa -1008 114}\special{pa -921 29}%
+\special{pa -835 -58}\special{pa -748 -141}\special{pa -661 -218}\special{pa -575 -284}%
+\special{pa -488 -337}\special{pa -402 -373}\special{pa -315 -392}\special{pa -228 -391}%
+\special{pa -142 -372}\special{pa -55 -334}\special{pa 31 -281}\special{pa 118 -214}%
+\special{pa 205 -137}\special{pa 291 -53}\special{pa 378 33}\special{pa 465 118}\special{pa 551 197}%
+\special{pa 638 267}\special{pa 724 324}\special{pa 811 365}\special{pa 898 388}\special{pa 984 393}%
+\special{pa 1071 379}\special{pa 1157 347}\special{pa 1244 297}\special{pa 1331 234}%
+\special{pa 1417 159}\special{pa 1504 77}\special{pa 1591 -9}\special{pa 1677 -95}%
+\special{pa 1764 -176}\special{pa 1850 -249}\special{pa 1937 -309}\special{pa 2024 -355}%
+\special{pa 2110 -384}\special{pa 2197 -394}\special{pa 2283 -385}\special{pa 2370 -357}%
+\special{pa 2457 -313}\special{pa 2543 -253}\special{pa 2630 -181}\special{pa 2717 -100}%
+\special{pa 2803 -15}\special{pa 2890 71}\special{pa 2976 154}\special{pa 3063 229}%
+\special{pa 3150 294}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.sce
new file mode 100644
index 00000000..60554cf1
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p004.tex';
+Fnamesci='sinecurve/p004.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-1.9))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p004.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.tex
new file mode 100644
index 00000000..4c10d81f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p004.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p004.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 351}\special{pa -1094 303}\special{pa -1008 241}\special{pa -921 168}%
+\special{pa -835 86}\special{pa -748 0}\special{pa -661 -86}\special{pa -575 -168}%
+\special{pa -488 -241}\special{pa -402 -303}\special{pa -315 -351}\special{pa -228 -381}%
+\special{pa -142 -394}\special{pa -55 -387}\special{pa 31 -361}\special{pa 118 -318}%
+\special{pa 205 -260}\special{pa 291 -189}\special{pa 378 -109}\special{pa 465 -24}%
+\special{pa 551 62}\special{pa 638 145}\special{pa 724 222}\special{pa 811 287}\special{pa 898 339}%
+\special{pa 984 375}\special{pa 1071 392}\special{pa 1157 390}\special{pa 1244 370}%
+\special{pa 1331 332}\special{pa 1417 278}\special{pa 1504 210}\special{pa 1591 132}%
+\special{pa 1677 48}\special{pa 1764 -38}\special{pa 1850 -123}\special{pa 1937 -201}%
+\special{pa 2024 -270}\special{pa 2110 -326}\special{pa 2197 -366}\special{pa 2283 -389}%
+\special{pa 2370 -393}\special{pa 2457 -378}\special{pa 2543 -344}\special{pa 2630 -294}%
+\special{pa 2717 -230}\special{pa 2803 -155}\special{pa 2890 -72}\special{pa 2976 14}%
+\special{pa 3063 99}\special{pa 3150 180}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.sce
new file mode 100644
index 00000000..a342e35e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p005.tex';
+Fnamesci='sinecurve/p005.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-1.53333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p005.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.tex
new file mode 100644
index 00000000..619a2505
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p005.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p005.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 392}\special{pa -1094 373}\special{pa -1008 337}\special{pa -921 284}%
+\special{pa -835 218}\special{pa -748 141}\special{pa -661 58}\special{pa -575 -29}%
+\special{pa -488 -114}\special{pa -402 -193}\special{pa -315 -264}\special{pa -228 -321}%
+\special{pa -142 -363}\special{pa -55 -388}\special{pa 31 -393}\special{pa 118 -380}%
+\special{pa 205 -349}\special{pa 291 -300}\special{pa 378 -238}\special{pa 465 -164}%
+\special{pa 551 -81}\special{pa 638 5}\special{pa 724 90}\special{pa 811 172}\special{pa 898 245}%
+\special{pa 984 306}\special{pa 1071 353}\special{pa 1157 383}\special{pa 1244 394}%
+\special{pa 1331 386}\special{pa 1417 359}\special{pa 1504 316}\special{pa 1591 257}%
+\special{pa 1677 185}\special{pa 1764 105}\special{pa 1850 20}\special{pa 1937 -67}%
+\special{pa 2024 -150}\special{pa 2110 -226}\special{pa 2197 -291}\special{pa 2283 -342}%
+\special{pa 2370 -376}\special{pa 2457 -392}\special{pa 2543 -390}\special{pa 2630 -369}%
+\special{pa 2717 -329}\special{pa 2803 -274}\special{pa 2890 -206}\special{pa 2976 -128}%
+\special{pa 3063 -44}\special{pa 3150 43}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.sce
new file mode 100644
index 00000000..5dbaa7e3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p006.tex';
+Fnamesci='sinecurve/p006.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-1.16667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p006.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.tex
new file mode 100644
index 00000000..b9027832
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p006.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p006.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 380}\special{pa -1094 393}\special{pa -1008 388}\special{pa -921 363}%
+\special{pa -835 321}\special{pa -748 264}\special{pa -661 193}\special{pa -575 114}%
+\special{pa -488 29}\special{pa -402 -58}\special{pa -315 -141}\special{pa -228 -218}%
+\special{pa -142 -284}\special{pa -55 -337}\special{pa 31 -373}\special{pa 118 -392}%
+\special{pa 205 -391}\special{pa 291 -372}\special{pa 378 -334}\special{pa 465 -281}%
+\special{pa 551 -214}\special{pa 638 -137}\special{pa 724 -53}\special{pa 811 33}%
+\special{pa 898 118}\special{pa 984 197}\special{pa 1071 267}\special{pa 1157 324}%
+\special{pa 1244 365}\special{pa 1331 388}\special{pa 1417 393}\special{pa 1504 379}%
+\special{pa 1591 347}\special{pa 1677 297}\special{pa 1764 234}\special{pa 1850 159}%
+\special{pa 1937 77}\special{pa 2024 -9}\special{pa 2110 -95}\special{pa 2197 -176}%
+\special{pa 2283 -249}\special{pa 2370 -309}\special{pa 2457 -355}\special{pa 2543 -384}%
+\special{pa 2630 -394}\special{pa 2717 -385}\special{pa 2803 -357}\special{pa 2890 -313}%
+\special{pa 2976 -253}\special{pa 3063 -181}\special{pa 3150 -100}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.sce
new file mode 100644
index 00000000..457ea9d8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p007.tex';
+Fnamesci='sinecurve/p007.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-0.8))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p007.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.tex
new file mode 100644
index 00000000..a9fafae8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p007.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p007.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 318}\special{pa -1094 361}\special{pa -1008 387}\special{pa -921 394}%
+\special{pa -835 381}\special{pa -748 351}\special{pa -661 303}\special{pa -575 241}%
+\special{pa -488 168}\special{pa -402 86}\special{pa -315 0}\special{pa -228 -86}%
+\special{pa -142 -168}\special{pa -55 -241}\special{pa 31 -303}\special{pa 118 -351}%
+\special{pa 205 -381}\special{pa 291 -394}\special{pa 378 -387}\special{pa 465 -361}%
+\special{pa 551 -318}\special{pa 638 -260}\special{pa 724 -189}\special{pa 811 -109}%
+\special{pa 898 -24}\special{pa 984 62}\special{pa 1071 145}\special{pa 1157 222}%
+\special{pa 1244 287}\special{pa 1331 339}\special{pa 1417 375}\special{pa 1504 392}%
+\special{pa 1591 390}\special{pa 1677 370}\special{pa 1764 332}\special{pa 1850 278}%
+\special{pa 1937 210}\special{pa 2024 132}\special{pa 2110 48}\special{pa 2197 -38}%
+\special{pa 2283 -123}\special{pa 2370 -201}\special{pa 2457 -270}\special{pa 2543 -326}%
+\special{pa 2630 -366}\special{pa 2717 -389}\special{pa 2803 -393}\special{pa 2890 -378}%
+\special{pa 2976 -344}\special{pa 3063 -294}\special{pa 3150 -230}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.sce
new file mode 100644
index 00000000..945804fb
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p008.tex';
+Fnamesci='sinecurve/p008.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-0.43333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p008.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.tex
new file mode 100644
index 00000000..ebd7f7f8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p008.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p008.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 214}\special{pa -1094 281}\special{pa -1008 334}\special{pa -921 372}%
+\special{pa -835 391}\special{pa -748 392}\special{pa -661 373}\special{pa -575 337}%
+\special{pa -488 284}\special{pa -402 218}\special{pa -315 141}\special{pa -228 58}%
+\special{pa -142 -29}\special{pa -55 -114}\special{pa 31 -193}\special{pa 118 -264}%
+\special{pa 205 -321}\special{pa 291 -363}\special{pa 378 -388}\special{pa 465 -393}%
+\special{pa 551 -380}\special{pa 638 -349}\special{pa 724 -300}\special{pa 811 -238}%
+\special{pa 898 -164}\special{pa 984 -81}\special{pa 1071 5}\special{pa 1157 90}\special{pa 1244 172}%
+\special{pa 1331 245}\special{pa 1417 306}\special{pa 1504 353}\special{pa 1591 383}%
+\special{pa 1677 394}\special{pa 1764 386}\special{pa 1850 359}\special{pa 1937 316}%
+\special{pa 2024 257}\special{pa 2110 185}\special{pa 2197 105}\special{pa 2283 20}%
+\special{pa 2370 -67}\special{pa 2457 -150}\special{pa 2543 -226}\special{pa 2630 -291}%
+\special{pa 2717 -342}\special{pa 2803 -376}\special{pa 2890 -392}\special{pa 2976 -390}%
+\special{pa 3063 -369}\special{pa 3150 -329}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.sce
new file mode 100644
index 00000000..5d235d9d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p009.tex';
+Fnamesci='sinecurve/p009.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(-0.06667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p009.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.tex
new file mode 100644
index 00000000..b4a56425
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p009.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p009.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 81}\special{pa -1094 164}\special{pa -1008 238}\special{pa -921 300}%
+\special{pa -835 349}\special{pa -748 380}\special{pa -661 393}\special{pa -575 388}%
+\special{pa -488 363}\special{pa -402 321}\special{pa -315 264}\special{pa -228 193}%
+\special{pa -142 114}\special{pa -55 29}\special{pa 31 -58}\special{pa 118 -141}\special{pa 205 -218}%
+\special{pa 291 -284}\special{pa 378 -337}\special{pa 465 -373}\special{pa 551 -392}%
+\special{pa 638 -391}\special{pa 724 -372}\special{pa 811 -334}\special{pa 898 -281}%
+\special{pa 984 -214}\special{pa 1071 -137}\special{pa 1157 -53}\special{pa 1244 33}%
+\special{pa 1331 118}\special{pa 1417 197}\special{pa 1504 267}\special{pa 1591 324}%
+\special{pa 1677 365}\special{pa 1764 388}\special{pa 1850 393}\special{pa 1937 379}%
+\special{pa 2024 347}\special{pa 2110 297}\special{pa 2197 234}\special{pa 2283 159}%
+\special{pa 2370 77}\special{pa 2457 -9}\special{pa 2543 -95}\special{pa 2630 -176}%
+\special{pa 2717 -249}\special{pa 2803 -309}\special{pa 2890 -355}\special{pa 2976 -384}%
+\special{pa 3063 -394}\special{pa 3150 -385}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.sce
new file mode 100644
index 00000000..3724a1e7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p010.tex';
+Fnamesci='sinecurve/p010.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(0.3))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p010.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.tex
new file mode 100644
index 00000000..66122274
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p010.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p010.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -62}\special{pa -1094 24}\special{pa -1008 109}\special{pa -921 189}%
+\special{pa -835 260}\special{pa -748 318}\special{pa -661 361}\special{pa -575 387}%
+\special{pa -488 394}\special{pa -402 381}\special{pa -315 351}\special{pa -228 303}%
+\special{pa -142 241}\special{pa -55 168}\special{pa 31 86}\special{pa 118 0}\special{pa 205 -86}%
+\special{pa 291 -168}\special{pa 378 -241}\special{pa 465 -303}\special{pa 551 -351}%
+\special{pa 638 -381}\special{pa 724 -394}\special{pa 811 -387}\special{pa 898 -361}%
+\special{pa 984 -318}\special{pa 1071 -260}\special{pa 1157 -189}\special{pa 1244 -109}%
+\special{pa 1331 -24}\special{pa 1417 62}\special{pa 1504 145}\special{pa 1591 222}%
+\special{pa 1677 287}\special{pa 1764 339}\special{pa 1850 375}\special{pa 1937 392}%
+\special{pa 2024 390}\special{pa 2110 370}\special{pa 2197 332}\special{pa 2283 278}%
+\special{pa 2370 210}\special{pa 2457 132}\special{pa 2543 48}\special{pa 2630 -38}%
+\special{pa 2717 -123}\special{pa 2803 -201}\special{pa 2890 -270}\special{pa 2976 -326}%
+\special{pa 3063 -366}\special{pa 3150 -389}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.sce
new file mode 100644
index 00000000..b5bc6e0b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p011.tex';
+Fnamesci='sinecurve/p011.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(0.66667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p011.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.tex
new file mode 100644
index 00000000..9b45f720
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p011.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p011.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -197}\special{pa -1094 -118}\special{pa -1008 -33}\special{pa -921 53}%
+\special{pa -835 137}\special{pa -748 214}\special{pa -661 281}\special{pa -575 334}%
+\special{pa -488 372}\special{pa -402 391}\special{pa -315 392}\special{pa -228 373}%
+\special{pa -142 337}\special{pa -55 284}\special{pa 31 218}\special{pa 118 141}\special{pa 205 58}%
+\special{pa 291 -29}\special{pa 378 -114}\special{pa 465 -193}\special{pa 551 -264}%
+\special{pa 638 -321}\special{pa 724 -363}\special{pa 811 -388}\special{pa 898 -393}%
+\special{pa 984 -380}\special{pa 1071 -349}\special{pa 1157 -300}\special{pa 1244 -238}%
+\special{pa 1331 -164}\special{pa 1417 -81}\special{pa 1504 5}\special{pa 1591 90}%
+\special{pa 1677 172}\special{pa 1764 245}\special{pa 1850 306}\special{pa 1937 353}%
+\special{pa 2024 383}\special{pa 2110 394}\special{pa 2197 386}\special{pa 2283 359}%
+\special{pa 2370 316}\special{pa 2457 257}\special{pa 2543 185}\special{pa 2630 105}%
+\special{pa 2717 20}\special{pa 2803 -67}\special{pa 2890 -150}\special{pa 2976 -226}%
+\special{pa 3063 -291}\special{pa 3150 -342}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.sce
new file mode 100644
index 00000000..9d1522a0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p012.tex';
+Fnamesci='sinecurve/p012.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(1.03333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p012.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.tex
new file mode 100644
index 00000000..9b71c7ca
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p012.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p012.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -306}\special{pa -1094 -245}\special{pa -1008 -172}\special{pa -921 -90}%
+\special{pa -835 -5}\special{pa -748 81}\special{pa -661 164}\special{pa -575 238}%
+\special{pa -488 300}\special{pa -402 349}\special{pa -315 380}\special{pa -228 393}%
+\special{pa -142 388}\special{pa -55 363}\special{pa 31 321}\special{pa 118 264}\special{pa 205 193}%
+\special{pa 291 114}\special{pa 378 29}\special{pa 465 -58}\special{pa 551 -141}\special{pa 638 -218}%
+\special{pa 724 -284}\special{pa 811 -337}\special{pa 898 -373}\special{pa 984 -392}%
+\special{pa 1071 -391}\special{pa 1157 -372}\special{pa 1244 -334}\special{pa 1331 -281}%
+\special{pa 1417 -214}\special{pa 1504 -137}\special{pa 1591 -53}\special{pa 1677 33}%
+\special{pa 1764 118}\special{pa 1850 197}\special{pa 1937 267}\special{pa 2024 324}%
+\special{pa 2110 365}\special{pa 2197 388}\special{pa 2283 393}\special{pa 2370 379}%
+\special{pa 2457 347}\special{pa 2543 297}\special{pa 2630 234}\special{pa 2717 159}%
+\special{pa 2803 77}\special{pa 2890 -9}\special{pa 2976 -95}\special{pa 3063 -176}%
+\special{pa 3150 -249}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.sce
new file mode 100644
index 00000000..19eff7cd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p013.tex';
+Fnamesci='sinecurve/p013.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(1.4))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p013.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.tex
new file mode 100644
index 00000000..7d78b659
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p013.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p013.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -375}\special{pa -1094 -339}\special{pa -1008 -287}\special{pa -921 -222}%
+\special{pa -835 -145}\special{pa -748 -62}\special{pa -661 24}\special{pa -575 109}%
+\special{pa -488 189}\special{pa -402 260}\special{pa -315 318}\special{pa -228 361}%
+\special{pa -142 387}\special{pa -55 394}\special{pa 31 381}\special{pa 118 351}\special{pa 205 303}%
+\special{pa 291 241}\special{pa 378 168}\special{pa 465 86}\special{pa 551 0}\special{pa 638 -86}%
+\special{pa 724 -168}\special{pa 811 -241}\special{pa 898 -303}\special{pa 984 -351}%
+\special{pa 1071 -381}\special{pa 1157 -394}\special{pa 1244 -387}\special{pa 1331 -361}%
+\special{pa 1417 -318}\special{pa 1504 -260}\special{pa 1591 -189}\special{pa 1677 -109}%
+\special{pa 1764 -24}\special{pa 1850 62}\special{pa 1937 145}\special{pa 2024 222}%
+\special{pa 2110 287}\special{pa 2197 339}\special{pa 2283 375}\special{pa 2370 392}%
+\special{pa 2457 390}\special{pa 2543 370}\special{pa 2630 332}\special{pa 2717 278}%
+\special{pa 2803 210}\special{pa 2890 132}\special{pa 2976 48}\special{pa 3063 -38}%
+\special{pa 3150 -123}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.sce
new file mode 100644
index 00000000..fe8ca80c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p014.tex';
+Fnamesci='sinecurve/p014.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(1.76667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p014.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.tex
new file mode 100644
index 00000000..d40cb332
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p014.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p014.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -393}\special{pa -1094 -388}\special{pa -1008 -365}\special{pa -921 -324}%
+\special{pa -835 -267}\special{pa -748 -197}\special{pa -661 -118}\special{pa -575 -33}%
+\special{pa -488 53}\special{pa -402 137}\special{pa -315 214}\special{pa -228 281}%
+\special{pa -142 334}\special{pa -55 372}\special{pa 31 391}\special{pa 118 392}\special{pa 205 373}%
+\special{pa 291 337}\special{pa 378 284}\special{pa 465 218}\special{pa 551 141}\special{pa 638 58}%
+\special{pa 724 -29}\special{pa 811 -114}\special{pa 898 -193}\special{pa 984 -264}%
+\special{pa 1071 -321}\special{pa 1157 -363}\special{pa 1244 -388}\special{pa 1331 -393}%
+\special{pa 1417 -380}\special{pa 1504 -349}\special{pa 1591 -300}\special{pa 1677 -238}%
+\special{pa 1764 -164}\special{pa 1850 -81}\special{pa 1937 5}\special{pa 2024 90}%
+\special{pa 2110 172}\special{pa 2197 245}\special{pa 2283 306}\special{pa 2370 353}%
+\special{pa 2457 383}\special{pa 2543 394}\special{pa 2630 386}\special{pa 2717 359}%
+\special{pa 2803 316}\special{pa 2890 257}\special{pa 2976 185}\special{pa 3063 105}%
+\special{pa 3150 20}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.sce
new file mode 100644
index 00000000..9e7e73ed
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p015.tex';
+Fnamesci='sinecurve/p015.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(2.13333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p015.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.tex
new file mode 100644
index 00000000..81a046dd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p015.tex
@@ -0,0 +1,41 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p015.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -359}\special{pa -1094 -386}\special{pa -1008 -394}\special{pa -921 -383}%
+\special{pa -835 -353}\special{pa -748 -306}\special{pa -661 -245}\special{pa -575 -172}%
+\special{pa -488 -90}\special{pa -402 -5}\special{pa -315 81}\special{pa -228 164}%
+\special{pa -142 238}\special{pa -55 300}\special{pa 31 349}\special{pa 118 380}\special{pa 205 393}%
+\special{pa 291 388}\special{pa 378 363}\special{pa 465 321}\special{pa 551 264}\special{pa 638 193}%
+\special{pa 724 114}\special{pa 811 29}\special{pa 898 -58}\special{pa 984 -141}\special{pa 1071 -218}%
+\special{pa 1157 -284}\special{pa 1244 -337}\special{pa 1331 -373}\special{pa 1417 -392}%
+\special{pa 1504 -391}\special{pa 1591 -372}\special{pa 1677 -334}\special{pa 1764 -281}%
+\special{pa 1850 -214}\special{pa 1937 -137}\special{pa 2024 -53}\special{pa 2110 33}%
+\special{pa 2197 118}\special{pa 2283 197}\special{pa 2370 267}\special{pa 2457 324}%
+\special{pa 2543 365}\special{pa 2630 388}\special{pa 2717 393}\special{pa 2803 379}%
+\special{pa 2890 347}\special{pa 2976 297}\special{pa 3063 234}\special{pa 3150 159}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.sce
new file mode 100644
index 00000000..abce0882
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p016.tex';
+Fnamesci='sinecurve/p016.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(2.5))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p016.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.tex
new file mode 100644
index 00000000..f0b3d7cf
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p016.tex
@@ -0,0 +1,41 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p016.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -278}\special{pa -1094 -332}\special{pa -1008 -370}\special{pa -921 -390}%
+\special{pa -835 -392}\special{pa -748 -375}\special{pa -661 -339}\special{pa -575 -287}%
+\special{pa -488 -222}\special{pa -402 -145}\special{pa -315 -62}\special{pa -228 24}%
+\special{pa -142 109}\special{pa -55 189}\special{pa 31 260}\special{pa 118 318}\special{pa 205 361}%
+\special{pa 291 387}\special{pa 378 394}\special{pa 465 381}\special{pa 551 351}\special{pa 638 303}%
+\special{pa 724 241}\special{pa 811 168}\special{pa 898 86}\special{pa 984 0}\special{pa 1071 -86}%
+\special{pa 1157 -168}\special{pa 1244 -241}\special{pa 1331 -303}\special{pa 1417 -351}%
+\special{pa 1504 -381}\special{pa 1591 -394}\special{pa 1677 -387}\special{pa 1764 -361}%
+\special{pa 1850 -318}\special{pa 1937 -260}\special{pa 2024 -189}\special{pa 2110 -109}%
+\special{pa 2197 -24}\special{pa 2283 62}\special{pa 2370 145}\special{pa 2457 222}%
+\special{pa 2543 287}\special{pa 2630 339}\special{pa 2717 375}\special{pa 2803 392}%
+\special{pa 2890 390}\special{pa 2976 370}\special{pa 3063 332}\special{pa 3150 278}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.sce
new file mode 100644
index 00000000..246aae30
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p017.tex';
+Fnamesci='sinecurve/p017.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(2.86667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p017.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.tex
new file mode 100644
index 00000000..628b7398
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p017.tex
@@ -0,0 +1,41 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p017.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -159}\special{pa -1094 -234}\special{pa -1008 -297}\special{pa -921 -347}%
+\special{pa -835 -379}\special{pa -748 -393}\special{pa -661 -388}\special{pa -575 -365}%
+\special{pa -488 -324}\special{pa -402 -267}\special{pa -315 -197}\special{pa -228 -118}%
+\special{pa -142 -33}\special{pa -55 53}\special{pa 31 137}\special{pa 118 214}\special{pa 205 281}%
+\special{pa 291 334}\special{pa 378 372}\special{pa 465 391}\special{pa 551 392}\special{pa 638 373}%
+\special{pa 724 337}\special{pa 811 284}\special{pa 898 218}\special{pa 984 141}\special{pa 1071 58}%
+\special{pa 1157 -29}\special{pa 1244 -114}\special{pa 1331 -193}\special{pa 1417 -264}%
+\special{pa 1504 -321}\special{pa 1591 -363}\special{pa 1677 -388}\special{pa 1764 -393}%
+\special{pa 1850 -380}\special{pa 1937 -349}\special{pa 2024 -300}\special{pa 2110 -238}%
+\special{pa 2197 -164}\special{pa 2283 -81}\special{pa 2370 5}\special{pa 2457 90}%
+\special{pa 2543 172}\special{pa 2630 245}\special{pa 2717 306}\special{pa 2803 353}%
+\special{pa 2890 383}\special{pa 2976 394}\special{pa 3063 386}\special{pa 3150 359}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.sce
new file mode 100644
index 00000000..f32e4164
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p018.tex';
+Fnamesci='sinecurve/p018.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(3.23333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p018.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.tex
new file mode 100644
index 00000000..a5c5ca1e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p018.tex
@@ -0,0 +1,41 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p018.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -20}\special{pa -1094 -105}\special{pa -1008 -185}\special{pa -921 -257}%
+\special{pa -835 -316}\special{pa -748 -359}\special{pa -661 -386}\special{pa -575 -394}%
+\special{pa -488 -383}\special{pa -402 -353}\special{pa -315 -306}\special{pa -228 -245}%
+\special{pa -142 -172}\special{pa -55 -90}\special{pa 31 -5}\special{pa 118 81}\special{pa 205 164}%
+\special{pa 291 238}\special{pa 378 300}\special{pa 465 349}\special{pa 551 380}\special{pa 638 393}%
+\special{pa 724 388}\special{pa 811 363}\special{pa 898 321}\special{pa 984 264}\special{pa 1071 193}%
+\special{pa 1157 114}\special{pa 1244 29}\special{pa 1331 -58}\special{pa 1417 -141}%
+\special{pa 1504 -218}\special{pa 1591 -284}\special{pa 1677 -337}\special{pa 1764 -373}%
+\special{pa 1850 -392}\special{pa 1937 -391}\special{pa 2024 -372}\special{pa 2110 -334}%
+\special{pa 2197 -281}\special{pa 2283 -214}\special{pa 2370 -137}\special{pa 2457 -53}%
+\special{pa 2543 33}\special{pa 2630 118}\special{pa 2717 197}\special{pa 2803 267}%
+\special{pa 2890 324}\special{pa 2976 365}\special{pa 3063 388}\special{pa 3150 393}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.sce
new file mode 100644
index 00000000..fd289527
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p019.tex';
+Fnamesci='sinecurve/p019.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(3.6))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p019.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.tex
new file mode 100644
index 00000000..9d45b48b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p019.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p019.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 123}\special{pa -1094 38}\special{pa -1008 -48}\special{pa -921 -132}%
+\special{pa -835 -210}\special{pa -748 -278}\special{pa -661 -332}\special{pa -575 -370}%
+\special{pa -488 -390}\special{pa -402 -392}\special{pa -315 -375}\special{pa -228 -339}%
+\special{pa -142 -287}\special{pa -55 -222}\special{pa 31 -145}\special{pa 118 -62}%
+\special{pa 205 24}\special{pa 291 109}\special{pa 378 189}\special{pa 465 260}\special{pa 551 318}%
+\special{pa 638 361}\special{pa 724 387}\special{pa 811 394}\special{pa 898 381}\special{pa 984 351}%
+\special{pa 1071 303}\special{pa 1157 241}\special{pa 1244 168}\special{pa 1331 86}%
+\special{pa 1417 0}\special{pa 1504 -86}\special{pa 1591 -168}\special{pa 1677 -241}%
+\special{pa 1764 -303}\special{pa 1850 -351}\special{pa 1937 -381}\special{pa 2024 -394}%
+\special{pa 2110 -387}\special{pa 2197 -361}\special{pa 2283 -318}\special{pa 2370 -260}%
+\special{pa 2457 -189}\special{pa 2543 -109}\special{pa 2630 -24}\special{pa 2717 62}%
+\special{pa 2803 145}\special{pa 2890 222}\special{pa 2976 287}\special{pa 3063 339}%
+\special{pa 3150 375}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.sce
new file mode 100644
index 00000000..2521e2ec
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p020.tex';
+Fnamesci='sinecurve/p020.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(3.96667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p020.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.tex
new file mode 100644
index 00000000..fcaf67fc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p020.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p020.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 249}\special{pa -1094 176}\special{pa -1008 95}\special{pa -921 9}%
+\special{pa -835 -77}\special{pa -748 -159}\special{pa -661 -234}\special{pa -575 -297}%
+\special{pa -488 -347}\special{pa -402 -379}\special{pa -315 -393}\special{pa -228 -388}%
+\special{pa -142 -365}\special{pa -55 -324}\special{pa 31 -267}\special{pa 118 -197}%
+\special{pa 205 -118}\special{pa 291 -33}\special{pa 378 53}\special{pa 465 137}\special{pa 551 214}%
+\special{pa 638 281}\special{pa 724 334}\special{pa 811 372}\special{pa 898 391}\special{pa 984 392}%
+\special{pa 1071 373}\special{pa 1157 337}\special{pa 1244 284}\special{pa 1331 218}%
+\special{pa 1417 141}\special{pa 1504 58}\special{pa 1591 -29}\special{pa 1677 -114}%
+\special{pa 1764 -193}\special{pa 1850 -264}\special{pa 1937 -321}\special{pa 2024 -363}%
+\special{pa 2110 -388}\special{pa 2197 -393}\special{pa 2283 -380}\special{pa 2370 -349}%
+\special{pa 2457 -300}\special{pa 2543 -238}\special{pa 2630 -164}\special{pa 2717 -81}%
+\special{pa 2803 5}\special{pa 2890 90}\special{pa 2976 172}\special{pa 3063 245}%
+\special{pa 3150 306}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.sce
new file mode 100644
index 00000000..57104e74
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p021.tex';
+Fnamesci='sinecurve/p021.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(4.33333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p021.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.tex
new file mode 100644
index 00000000..c80f4fab
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p021.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p021.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 342}\special{pa -1094 291}\special{pa -1008 226}\special{pa -921 150}%
+\special{pa -835 67}\special{pa -748 -20}\special{pa -661 -105}\special{pa -575 -185}%
+\special{pa -488 -257}\special{pa -402 -316}\special{pa -315 -359}\special{pa -228 -386}%
+\special{pa -142 -394}\special{pa -55 -383}\special{pa 31 -353}\special{pa 118 -306}%
+\special{pa 205 -245}\special{pa 291 -172}\special{pa 378 -90}\special{pa 465 -5}%
+\special{pa 551 81}\special{pa 638 164}\special{pa 724 238}\special{pa 811 300}\special{pa 898 349}%
+\special{pa 984 380}\special{pa 1071 393}\special{pa 1157 388}\special{pa 1244 363}%
+\special{pa 1331 321}\special{pa 1417 264}\special{pa 1504 193}\special{pa 1591 114}%
+\special{pa 1677 29}\special{pa 1764 -58}\special{pa 1850 -141}\special{pa 1937 -218}%
+\special{pa 2024 -284}\special{pa 2110 -337}\special{pa 2197 -373}\special{pa 2283 -392}%
+\special{pa 2370 -391}\special{pa 2457 -372}\special{pa 2543 -334}\special{pa 2630 -281}%
+\special{pa 2717 -214}\special{pa 2803 -137}\special{pa 2890 -53}\special{pa 2976 33}%
+\special{pa 3063 118}\special{pa 3150 197}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.sce
new file mode 100644
index 00000000..4098414b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p022.tex';
+Fnamesci='sinecurve/p022.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(4.7))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p022.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.tex
new file mode 100644
index 00000000..0ae71a1f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p022.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p022.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 389}\special{pa -1094 366}\special{pa -1008 326}\special{pa -921 270}%
+\special{pa -835 201}\special{pa -748 123}\special{pa -661 38}\special{pa -575 -48}%
+\special{pa -488 -132}\special{pa -402 -210}\special{pa -315 -278}\special{pa -228 -332}%
+\special{pa -142 -370}\special{pa -55 -390}\special{pa 31 -392}\special{pa 118 -375}%
+\special{pa 205 -339}\special{pa 291 -287}\special{pa 378 -222}\special{pa 465 -145}%
+\special{pa 551 -62}\special{pa 638 24}\special{pa 724 109}\special{pa 811 189}\special{pa 898 260}%
+\special{pa 984 318}\special{pa 1071 361}\special{pa 1157 387}\special{pa 1244 394}%
+\special{pa 1331 381}\special{pa 1417 351}\special{pa 1504 303}\special{pa 1591 241}%
+\special{pa 1677 168}\special{pa 1764 86}\special{pa 1850 0}\special{pa 1937 -86}%
+\special{pa 2024 -168}\special{pa 2110 -241}\special{pa 2197 -303}\special{pa 2283 -351}%
+\special{pa 2370 -381}\special{pa 2457 -394}\special{pa 2543 -387}\special{pa 2630 -361}%
+\special{pa 2717 -318}\special{pa 2803 -260}\special{pa 2890 -189}\special{pa 2976 -109}%
+\special{pa 3063 -24}\special{pa 3150 62}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.sce
new file mode 100644
index 00000000..e1b9ba89
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p023.tex';
+Fnamesci='sinecurve/p023.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(5.06667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p023.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.tex
new file mode 100644
index 00000000..e1d4825c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p023.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p023.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 385}\special{pa -1094 394}\special{pa -1008 384}\special{pa -921 355}%
+\special{pa -835 309}\special{pa -748 249}\special{pa -661 176}\special{pa -575 95}%
+\special{pa -488 9}\special{pa -402 -77}\special{pa -315 -159}\special{pa -228 -234}%
+\special{pa -142 -297}\special{pa -55 -347}\special{pa 31 -379}\special{pa 118 -393}%
+\special{pa 205 -388}\special{pa 291 -365}\special{pa 378 -324}\special{pa 465 -267}%
+\special{pa 551 -197}\special{pa 638 -118}\special{pa 724 -33}\special{pa 811 53}%
+\special{pa 898 137}\special{pa 984 214}\special{pa 1071 281}\special{pa 1157 334}%
+\special{pa 1244 372}\special{pa 1331 391}\special{pa 1417 392}\special{pa 1504 373}%
+\special{pa 1591 337}\special{pa 1677 284}\special{pa 1764 218}\special{pa 1850 141}%
+\special{pa 1937 58}\special{pa 2024 -29}\special{pa 2110 -114}\special{pa 2197 -193}%
+\special{pa 2283 -264}\special{pa 2370 -321}\special{pa 2457 -363}\special{pa 2543 -388}%
+\special{pa 2630 -393}\special{pa 2717 -380}\special{pa 2803 -349}\special{pa 2890 -300}%
+\special{pa 2976 -238}\special{pa 3063 -164}\special{pa 3150 -81}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.sce
new file mode 100644
index 00000000..80b67fb5
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p024.tex';
+Fnamesci='sinecurve/p024.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(5.43333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p024.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.tex
new file mode 100644
index 00000000..c314a918
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p024.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p024.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 329}\special{pa -1094 369}\special{pa -1008 390}\special{pa -921 392}%
+\special{pa -835 376}\special{pa -748 342}\special{pa -661 291}\special{pa -575 226}%
+\special{pa -488 150}\special{pa -402 67}\special{pa -315 -20}\special{pa -228 -105}%
+\special{pa -142 -185}\special{pa -55 -257}\special{pa 31 -316}\special{pa 118 -359}%
+\special{pa 205 -386}\special{pa 291 -394}\special{pa 378 -383}\special{pa 465 -353}%
+\special{pa 551 -306}\special{pa 638 -245}\special{pa 724 -172}\special{pa 811 -90}%
+\special{pa 898 -5}\special{pa 984 81}\special{pa 1071 164}\special{pa 1157 238}\special{pa 1244 300}%
+\special{pa 1331 349}\special{pa 1417 380}\special{pa 1504 393}\special{pa 1591 388}%
+\special{pa 1677 363}\special{pa 1764 321}\special{pa 1850 264}\special{pa 1937 193}%
+\special{pa 2024 114}\special{pa 2110 29}\special{pa 2197 -58}\special{pa 2283 -141}%
+\special{pa 2370 -218}\special{pa 2457 -284}\special{pa 2543 -337}\special{pa 2630 -373}%
+\special{pa 2717 -392}\special{pa 2803 -391}\special{pa 2890 -372}\special{pa 2976 -334}%
+\special{pa 3063 -281}\special{pa 3150 -214}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.sce
new file mode 100644
index 00000000..594d15e8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p025.tex';
+Fnamesci='sinecurve/p025.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(5.8))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p025.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.tex
new file mode 100644
index 00000000..a614daaf
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p025.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p025.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 230}\special{pa -1094 294}\special{pa -1008 344}\special{pa -921 378}%
+\special{pa -835 393}\special{pa -748 389}\special{pa -661 366}\special{pa -575 326}%
+\special{pa -488 270}\special{pa -402 201}\special{pa -315 123}\special{pa -228 38}%
+\special{pa -142 -48}\special{pa -55 -132}\special{pa 31 -210}\special{pa 118 -278}%
+\special{pa 205 -332}\special{pa 291 -370}\special{pa 378 -390}\special{pa 465 -392}%
+\special{pa 551 -375}\special{pa 638 -339}\special{pa 724 -287}\special{pa 811 -222}%
+\special{pa 898 -145}\special{pa 984 -62}\special{pa 1071 24}\special{pa 1157 109}%
+\special{pa 1244 189}\special{pa 1331 260}\special{pa 1417 318}\special{pa 1504 361}%
+\special{pa 1591 387}\special{pa 1677 394}\special{pa 1764 381}\special{pa 1850 351}%
+\special{pa 1937 303}\special{pa 2024 241}\special{pa 2110 168}\special{pa 2197 86}%
+\special{pa 2283 0}\special{pa 2370 -86}\special{pa 2457 -168}\special{pa 2543 -241}%
+\special{pa 2630 -303}\special{pa 2717 -351}\special{pa 2803 -381}\special{pa 2890 -394}%
+\special{pa 2976 -387}\special{pa 3063 -361}\special{pa 3150 -318}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.sce
new file mode 100644
index 00000000..cfc3e3b3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p026.tex';
+Fnamesci='sinecurve/p026.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(6.16667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p026.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.tex
new file mode 100644
index 00000000..6c9ec3c0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p026.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p026.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 100}\special{pa -1094 181}\special{pa -1008 253}\special{pa -921 313}%
+\special{pa -835 357}\special{pa -748 385}\special{pa -661 394}\special{pa -575 384}%
+\special{pa -488 355}\special{pa -402 309}\special{pa -315 249}\special{pa -228 176}%
+\special{pa -142 95}\special{pa -55 9}\special{pa 31 -77}\special{pa 118 -159}\special{pa 205 -234}%
+\special{pa 291 -297}\special{pa 378 -347}\special{pa 465 -379}\special{pa 551 -393}%
+\special{pa 638 -388}\special{pa 724 -365}\special{pa 811 -324}\special{pa 898 -267}%
+\special{pa 984 -197}\special{pa 1071 -118}\special{pa 1157 -33}\special{pa 1244 53}%
+\special{pa 1331 137}\special{pa 1417 214}\special{pa 1504 281}\special{pa 1591 334}%
+\special{pa 1677 372}\special{pa 1764 391}\special{pa 1850 392}\special{pa 1937 373}%
+\special{pa 2024 337}\special{pa 2110 284}\special{pa 2197 218}\special{pa 2283 141}%
+\special{pa 2370 58}\special{pa 2457 -29}\special{pa 2543 -114}\special{pa 2630 -193}%
+\special{pa 2717 -264}\special{pa 2803 -321}\special{pa 2890 -363}\special{pa 2976 -388}%
+\special{pa 3063 -393}\special{pa 3150 -380}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.sce
new file mode 100644
index 00000000..eb50e908
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p027.tex';
+Fnamesci='sinecurve/p027.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(6.53333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p027.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.tex
new file mode 100644
index 00000000..bb60c80e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p027.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p027.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -43}\special{pa -1094 44}\special{pa -1008 128}\special{pa -921 206}%
+\special{pa -835 274}\special{pa -748 329}\special{pa -661 369}\special{pa -575 390}%
+\special{pa -488 392}\special{pa -402 376}\special{pa -315 342}\special{pa -228 291}%
+\special{pa -142 226}\special{pa -55 150}\special{pa 31 67}\special{pa 118 -20}\special{pa 205 -105}%
+\special{pa 291 -185}\special{pa 378 -257}\special{pa 465 -316}\special{pa 551 -359}%
+\special{pa 638 -386}\special{pa 724 -394}\special{pa 811 -383}\special{pa 898 -353}%
+\special{pa 984 -306}\special{pa 1071 -245}\special{pa 1157 -172}\special{pa 1244 -90}%
+\special{pa 1331 -5}\special{pa 1417 81}\special{pa 1504 164}\special{pa 1591 238}%
+\special{pa 1677 300}\special{pa 1764 349}\special{pa 1850 380}\special{pa 1937 393}%
+\special{pa 2024 388}\special{pa 2110 363}\special{pa 2197 321}\special{pa 2283 264}%
+\special{pa 2370 193}\special{pa 2457 114}\special{pa 2543 29}\special{pa 2630 -58}%
+\special{pa 2717 -141}\special{pa 2803 -218}\special{pa 2890 -284}\special{pa 2976 -337}%
+\special{pa 3063 -373}\special{pa 3150 -392}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.sce
new file mode 100644
index 00000000..852dc363
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p028.tex';
+Fnamesci='sinecurve/p028.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(6.9))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p028.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.tex
new file mode 100644
index 00000000..c2ea3ad3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p028.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p028.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -180}\special{pa -1094 -99}\special{pa -1008 -14}\special{pa -921 72}%
+\special{pa -835 155}\special{pa -748 230}\special{pa -661 294}\special{pa -575 344}%
+\special{pa -488 378}\special{pa -402 393}\special{pa -315 389}\special{pa -228 366}%
+\special{pa -142 326}\special{pa -55 270}\special{pa 31 201}\special{pa 118 123}\special{pa 205 38}%
+\special{pa 291 -48}\special{pa 378 -132}\special{pa 465 -210}\special{pa 551 -278}%
+\special{pa 638 -332}\special{pa 724 -370}\special{pa 811 -390}\special{pa 898 -392}%
+\special{pa 984 -375}\special{pa 1071 -339}\special{pa 1157 -287}\special{pa 1244 -222}%
+\special{pa 1331 -145}\special{pa 1417 -62}\special{pa 1504 24}\special{pa 1591 109}%
+\special{pa 1677 189}\special{pa 1764 260}\special{pa 1850 318}\special{pa 1937 361}%
+\special{pa 2024 387}\special{pa 2110 394}\special{pa 2197 381}\special{pa 2283 351}%
+\special{pa 2370 303}\special{pa 2457 241}\special{pa 2543 168}\special{pa 2630 86}%
+\special{pa 2717 0}\special{pa 2803 -86}\special{pa 2890 -168}\special{pa 2976 -241}%
+\special{pa 3063 -303}\special{pa 3150 -351}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.sce
new file mode 100644
index 00000000..3d8c60e0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p029.tex';
+Fnamesci='sinecurve/p029.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(7.26667))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p029.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.tex
new file mode 100644
index 00000000..e5da848b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p029.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p029.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -294}\special{pa -1094 -229}\special{pa -1008 -154}\special{pa -921 -71}%
+\special{pa -835 15}\special{pa -748 100}\special{pa -661 181}\special{pa -575 253}%
+\special{pa -488 313}\special{pa -402 357}\special{pa -315 385}\special{pa -228 394}%
+\special{pa -142 384}\special{pa -55 355}\special{pa 31 309}\special{pa 118 249}\special{pa 205 176}%
+\special{pa 291 95}\special{pa 378 9}\special{pa 465 -77}\special{pa 551 -159}\special{pa 638 -234}%
+\special{pa 724 -297}\special{pa 811 -347}\special{pa 898 -379}\special{pa 984 -393}%
+\special{pa 1071 -388}\special{pa 1157 -365}\special{pa 1244 -324}\special{pa 1331 -267}%
+\special{pa 1417 -197}\special{pa 1504 -118}\special{pa 1591 -33}\special{pa 1677 53}%
+\special{pa 1764 137}\special{pa 1850 214}\special{pa 1937 281}\special{pa 2024 334}%
+\special{pa 2110 372}\special{pa 2197 391}\special{pa 2283 392}\special{pa 2370 373}%
+\special{pa 2457 337}\special{pa 2543 284}\special{pa 2630 218}\special{pa 2717 141}%
+\special{pa 2803 58}\special{pa 2890 -29}\special{pa 2976 -114}\special{pa 3063 -193}%
+\special{pa 3150 -264}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.sce
new file mode 100644
index 00000000..8e9095ae
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p030.tex';
+Fnamesci='sinecurve/p030.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(7.63333))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p030.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.tex
new file mode 100644
index 00000000..de40f068
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p030.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p030.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -368}\special{pa -1094 -329}\special{pa -1008 -274}\special{pa -921 -205}%
+\special{pa -835 -127}\special{pa -748 -43}\special{pa -661 44}\special{pa -575 128}%
+\special{pa -488 206}\special{pa -402 274}\special{pa -315 329}\special{pa -228 369}%
+\special{pa -142 390}\special{pa -55 392}\special{pa 31 376}\special{pa 118 342}\special{pa 205 291}%
+\special{pa 291 226}\special{pa 378 150}\special{pa 465 67}\special{pa 551 -20}\special{pa 638 -105}%
+\special{pa 724 -185}\special{pa 811 -257}\special{pa 898 -316}\special{pa 984 -359}%
+\special{pa 1071 -386}\special{pa 1157 -394}\special{pa 1244 -383}\special{pa 1331 -353}%
+\special{pa 1417 -306}\special{pa 1504 -245}\special{pa 1591 -172}\special{pa 1677 -90}%
+\special{pa 1764 -5}\special{pa 1850 81}\special{pa 1937 164}\special{pa 2024 238}%
+\special{pa 2110 300}\special{pa 2197 349}\special{pa 2283 380}\special{pa 2370 393}%
+\special{pa 2457 388}\special{pa 2543 363}\special{pa 2630 321}\special{pa 2717 264}%
+\special{pa 2803 193}\special{pa 2890 114}\special{pa 2976 29}\special{pa 3063 -58}%
+\special{pa 3150 -141}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.sce b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.sce
new file mode 100644
index 00000000..12cd3fcd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.sce
@@ -0,0 +1,43 @@
+//date time=2017/8/24 14:44:24
+
+cd('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig');
+Ketlib=lib('/Users/takatoosetsuo/ketcindy/ketlib/ketpicscifiles6');
+Ketinit();
+disp('KETpic '+ThisVersion())
+Fnametex='sinecurve/p031.tex';
+Fnamesci='sinecurve/p031.sce';
+Fnamescibody='figs0704parabody.sce';
+Fnameout='figs0704para.txt';
+pi=%pi; i=%i;
+arccos=acos; arcsin=asin; arctan=atan;
+
+Setwindow([-3,8], [-1.5,1.5]);
+Assignadd('pi',%pi);
+Assignadd('XMIN',Xmin());
+Assignadd('XMAX',Xmax());
+Assignadd('YMIN',Ymin());
+Assignadd('YMAX',Ymax());
+A=[-3,-3]; Assignrep('A',[-3,-3]);
+B=[8,-3]; Assignrep('B',[8,-3]);
+C=[-2.5,-3]; Assignrep('C',[-2.5,-3]);
+sgAB=Listplot([A,B]);
+gr1=Plotdata(Assign('sin(x-(8))'),Assign('x'));
+PtL=list(A,B,C);
+GrL=list();
+//if length(fileinfo(Fnamescibody))>0
+// Gbdy=ReadfromCindy(Fnamescibody);
+// execstr(Gbdy)
+//end;
+
+//Windisp(GrL,'c');
+
+if 1==1 then
+
+Openfile('/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p031.tex','1cm');
+ Fontsize('s');
+ Drwline(gr1);
+Closefile('1');
+
+end;
+
+quit();
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.tex
new file mode 100644
index 00000000..e9041ca9
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/sinecurve/p031.tex
@@ -0,0 +1,42 @@
+%%% /Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/sinecurve/p031.tex 2017-8-24 14:44
+%%% figs0704paraall.sce 2017-8-24 14:44
+{\unitlength=1cm%
+\begin{picture}%
+( 11.00000, 3.00000)( -3.00000, -1.50000)%
+\special{pn 8}%
+%
+\small%
+\special{pa -1181 -394}\special{pa -1094 -385}\special{pa -1008 -357}\special{pa -921 -312}%
+\special{pa -835 -252}\special{pa -748 -180}\special{pa -661 -99}\special{pa -575 -14}%
+\special{pa -488 72}\special{pa -402 155}\special{pa -315 230}\special{pa -228 294}%
+\special{pa -142 344}\special{pa -55 378}\special{pa 31 393}\special{pa 118 389}\special{pa 205 366}%
+\special{pa 291 326}\special{pa 378 270}\special{pa 465 201}\special{pa 551 123}\special{pa 638 38}%
+\special{pa 724 -48}\special{pa 811 -132}\special{pa 898 -210}\special{pa 984 -278}%
+\special{pa 1071 -332}\special{pa 1157 -370}\special{pa 1244 -390}\special{pa 1331 -392}%
+\special{pa 1417 -375}\special{pa 1504 -339}\special{pa 1591 -287}\special{pa 1677 -222}%
+\special{pa 1764 -145}\special{pa 1850 -62}\special{pa 1937 24}\special{pa 2024 109}%
+\special{pa 2110 189}\special{pa 2197 260}\special{pa 2283 318}\special{pa 2370 361}%
+\special{pa 2457 387}\special{pa 2543 394}\special{pa 2630 381}\special{pa 2717 351}%
+\special{pa 2803 303}\special{pa 2890 241}\special{pa 2976 168}\special{pa 3063 86}%
+\special{pa 3150 0}%
+\special{fp}%
+\special{pa -1181 0}\special{pa 3150 0}%
+\special{fp}%
+\special{pa 0 591}\special{pa 0 -591}%
+\special{fp}%
+\settowidth{\Width}{$x$}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{$x$}\settodepth{\Depth}{$x$}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(8.0500,0.0000){\hspace*{\Width}\raisebox{\Height}{$x$}}%
+%
+%
+\settowidth{\Width}{$y$}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{$y$}\settodepth{\Depth}{$y$}\setlength{\Height}{\Depth}%
+\put(0.0000,1.5500){\hspace*{\Width}\raisebox{\Height}{$y$}}%
+%
+%
+\settowidth{\Width}{O}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{O}\settodepth{\Depth}{O}\setlength{\Height}{-\Height}%
+\put(-0.0500,-0.0500){\hspace*{\Width}\raisebox{\Height}{O}}%
+%
+%
+\end{picture}}% \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0.tex
new file mode 100644
index 00000000..3ff43765
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0.tex
@@ -0,0 +1,11 @@
+{\Large\bf
+\color[cmyk]{1,1,0,0}
+
+\begin{layer}{120}{0}
+{\Huge \putnotes{60}{20}{メインタイトル}}
+\putnotes{60}{50}{åå‰}
+\putnotes{60}{60}{所属}
+\putnotes{60}{70}{情報}
+\end{layer}
+
+}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.aux b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.aux
new file mode 100644
index 00000000..f23e5468
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.aux
@@ -0,0 +1 @@
+\relax
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.log b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.log
new file mode 100644
index 00000000..5ce8fe94
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.log
@@ -0,0 +1,234 @@
+This is e-upTeX, Version 3.14159265-p3.7-u1.21-160201-2.6 (utf8.uptex) (TeX Live 2016) (preloaded format=uplatex 2017.8.18) 20 AUG 2017 16:52
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**slide0main.tex
+(./slide0main.tex
+pLaTeX2e <2016/11/29u01> (based on LaTeX2e <2017/01/01> patch level 3)
+Babel <3.9r> and hyphenation patterns for 3 language(s) loaded.
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujarticle.cls
+Document Class: ujarticle 2016/11/22 v1.7b-u00 Standard upLaTeX class
+\c@@paper=\count82
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujsize10.clo
+File: ujsize10.clo 2016/11/22 v1.7b-u00 Standard upLaTeX file (size option)
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+)
+\c@part=\count83
+\c@section=\count84
+\c@subsection=\count85
+\c@subsubsection=\count86
+\c@paragraph=\count87
+\c@subparagraph=\count88
+\c@figure=\count89
+\c@table=\count90
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\symmincho=\mathgroup4
+LaTeX Font Info: Overwriting symbol font `mincho' in version `bold'
+(Font) JY2/mc/m/n --> JY2/gt/m/n on input line 580.
+\toclineskip=\dimen118
+\@lnumwidth=\dimen119
+\bibindent=\dimen120
+\heisei=\count91
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic.sty
+\c@ketpicctra=\count92
+\c@ketpicctrb=\count93
+\c@ketpicctrc=\count94
+\c@ketpicctrd=\count95
+\c@ketpicctre=\count96
+\c@ketpicctrf=\count97
+\c@ketpicctrg=\count98
+\c@ketpicctrh=\count99
+\c@ketpicctri=\count100
+\c@ketpicctrj=\count101
+\Width=\skip43
+\Height=\skip44
+\Depth=\skip45
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer.sty
+\layercurrentunit=\skip46
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide.sty)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2016/11/05 v2.16a AMS math features
+\@mathmargin=\skip47
+
+For additional information on amsmath, use the `?' option.
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01 AMS text
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0 generic functions
+\@emptytoks=\toks15
+\ex@=\dimen121
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d Bold Symbols
+\pmbraise@=\dimen122
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 2016/03/08 v2.02 operator names
+)
+\inf@bad=\count102
+LaTeX Info: Redefining \frac on input line 213.
+\uproot@=\count103
+\leftroot@=\count104
+LaTeX Info: Redefining \overline on input line 375.
+\classnum@=\count105
+\DOTSCASE@=\count106
+LaTeX Info: Redefining \ldots on input line 472.
+LaTeX Info: Redefining \dots on input line 475.
+LaTeX Info: Redefining \cdots on input line 596.
+\Mathstrutbox@=\box41
+\strutbox@=\box42
+\big@size=\dimen123
+LaTeX Font Info: Redeclaring font encoding OML on input line 712.
+LaTeX Font Info: Redeclaring font encoding OMS on input line 713.
+\macc@depth=\count107
+\c@MaxMatrixCols=\count108
+\dotsspace@=\muskip10
+\c@parentequation=\count109
+\dspbrk@lvl=\count110
+\tag@help=\toks16
+\row@=\count111
+\column@=\count112
+\maxfields@=\count113
+\andhelp@=\toks17
+\eqnshift@=\dimen124
+\alignsep@=\dimen125
+\tagshift@=\dimen126
+\tagwidth@=\dimen127
+\totwidth@=\dimen128
+\lineht@=\dimen129
+\@envbody=\toks18
+\multlinegap=\skip48
+\multlinetaggap=\skip49
+\mathdisplay@stack=\toks19
+LaTeX Info: Redefining \[ on input line 2817.
+LaTeX Info: Redefining \] on input line 2818.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\symAMSa=\mathgroup5
+\symAMSb=\mathgroup6
+LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
+(Font) U/euf/m/n --> U/euf/b/n on input line 106.
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/bm.sty
+Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi)
+\symboldoperators=\mathgroup7
+\symboldletters=\mathgroup8
+\symboldsymbols=\mathgroup9
+\symboldmincho=\mathgroup10
+LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141.
+LaTeX Info: Redefining \bm on input line 207.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/enumerate.sty
+Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC)
+\@enLab=\toks20
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks21
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: dvipdfmx.def on input line 99.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvipdfmx.def
+File: dvipdfmx.def 2016/07/11 v4.12 LaTeX color/graphics driver for dvipdfmx (L
+3/ChoF)
+))
+\Gin@req@height=\dimen130
+\Gin@req@width=\dimen131
+) (/Applications/kettex/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package xcolor Info: Package option `usenames' ignored on input line 216.
+Package xcolor Info: Driver file: dvips.def on input line 225.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvips.def
+File: dvips.def 2016/07/10 v3.1a Driver-dependent file (DPC,SPQR)
+)
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
+Package xcolor Info: Model `RGB' extended on input line 1364.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
+)
+No file slide0main.aux.
+\openout1 = `slide0main.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for JY2/mc/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+LaTeX Font Info: Checking defaults for JT2/mc/m/n on input line 13.
+LaTeX Font Info: ... okay on input line 13.
+(./slide0.tex
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 23.94002pt on input line 5.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 23.94002pt on input line 5.
+) [1
+
+] (./slide0main.aux) )
+Here is how much of TeX's memory you used:
+ 2446 strings out of 495145
+ 29062 string characters out of 6183910
+ 154371 words of memory out of 5000000
+ 5909 multiletter control sequences out of 15000+600000
+ 7700 words of font info for 40 fonts, out of 8000000 for 9000
+ 14 hyphenation exceptions out of 8191
+ 27i,5n,35p,322b,256s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on slide0main.dvi (1 page, 596 bytes).
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.pdf
new file mode 100644
index 00000000..b07f6c6a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.tex
new file mode 100644
index 00000000..f5136844
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide0main.tex
@@ -0,0 +1,17 @@
+\documentclass[landscape,10pt]{ujarticle}
+\special{papersize=\the\paperwidth,\the\paperheight}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide}
+\usepackage{amsmath,amssymb}
+\usepackage{bm,enumerate}
+\usepackage[dvipdfmx]{graphicx}
+\usepackage[usenames]{xcolor}
+\ketmarginJ
+\ketslideinit
+
+\begin{document}
+
+\input{slide0.tex}
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide2.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide2.tex
new file mode 100644
index 00000000..3ff43765
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide2.tex
@@ -0,0 +1,11 @@
+{\Large\bf
+\color[cmyk]{1,1,0,0}
+
+\begin{layer}{120}{0}
+{\Huge \putnotes{60}{20}{メインタイトル}}
+\putnotes{60}{50}{åå‰}
+\putnotes{60}{60}{所属}
+\putnotes{60}{70}{情報}
+\end{layer}
+
+}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide3.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide3.tex
new file mode 100644
index 00000000..6a43f030
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/fig/slide3.tex
@@ -0,0 +1,11 @@
+{\Large\bf
+\color[cmyk]{1,1,0,0}
+
+\begin{layer}{120}{0}
+{\Huge \putnotes{60}{20}{メインタイトル}}
+\putnotes{60}{60}{åå‰}
+\putnotes{60}{70}{所属}
+\putnotes{60}{80}{情報}
+\end{layer}
+
+}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseJ.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseJ.txt
new file mode 100644
index 00000000..9b6cdf43
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseJ.txt
@@ -0,0 +1 @@
+ketslideã«ã‚ˆã‚‹ãƒ—レゼンテーション  2017.01.08 templateslideã®ä¾‹ã§èª¬æ˜Žã™ã‚‹ï¼Ž 1.templateslide.txtã«ãªã‚‰ã£ã¦ãƒ‡ãƒ¼ã‚¿ã‚’作æˆï¼ä¿®æ­£   (他ã®åå‰ã§ã‚‚よã„)  1)行ã®æœ€å¾Œã¯å¿…ãš // ã‚’ã¤ã‘る.     注)urlã®æŒ‡å®šã§//を用ã„ã‚‹ã¨ã,||||ã¨ã™ã‚‹ã¨//ã«å¤‰æ›ã•ã‚Œã‚‹ï¼Ž  2)å„ブロックã®å¼•æ•°ã®åŒºåˆ‡ã‚Šã¯ ::  3)コマンド     ・タイトル::読込ファイルå(::å£ç´™ãƒ•ã‚¡ã‚¤ãƒ«)//       最åˆã®ã‚¿ã‚¤ãƒˆãƒ«ãƒšãƒ¼ã‚¸        注)スライドã«ç½®ã文字ã¯slide0.cdyã§ä½œæˆ        注)å£ç´™ã‚’ã¤ã‘ã‚‹ã¨ãã¯ï¼Œã‚‚ã†ï¼‘㤠:: ã§åŒºåˆ‡ã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«åを書ã        注)preambleã«è¿½åŠ ã™ã‚‹ã¨ã,::区切りã§æ›¸ã加ãˆï¼Œæœ€å¾Œã«//ã‚’ãŠã.     ・new(::行下ã’)::タイトル((::ä½ç½®)::読ã¿è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«)//       mainslide       例)new::[10]::最åˆã«::{50}{20}::figure//       注)読ã¿è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚µã‚¤ã‚ºå¤‰æ›´ã™ã‚‹ã¨ã          new::[10]::最åˆã«::{50}{20}::figure,0.8//         他もåŒæ§˜     ・same(::行下ã’)((::ä½ç½®)::読込ファイル)//       sameslide     ・enumerate(::書å¼)//       enumerate環境ã®å§‹ã¾ã‚Š     ・itemize//       itemize環境ã®å§‹ã¾ã‚Š     ・layer(::範囲)//       layer環境ã®å§‹ã¾ã‚Š     ・item::æ–‡//       itemを追加     ・putnote::æ–¹å‘ã¨ä½ç½®::読ã¿è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«//       layer環境ã®ä¸­ã«å›³ã‚’入れる       例)putonote::se{30}{10}::figure//(inputã®ã¨ã)       例)putonote::se{30}{10}::include[width=5cm]::figure.pdf//            (includegraphicsã®ã¨ã)     ・end//       enumerate,itemize,layer環境ã®çµ‚ã‚ã‚Š     ・上記以外//       ãã®ã¾ã¾TeXã«æ›¸ã出ã™ï¼Ž  4)空白行を入れãŸã„ã¨ãã¯ï¼Œ...// ã¨ã™ã‚‹ï¼Ž  5)必è¦ãªå›³ã¯ã™ã¹ã¦figã«å…¥ã‚Œã‚‹ï¼Ž  6)newã®å¾Œï¼Œè¤‡æ•°ã®ã‚¹ãƒ©ã‚¤ãƒ‰ã‚’åŒæ™‚ã«ä½œã‚Šé †ã«è¡¨ç¤ºã™ã‚‹ã¨ã,    ・newã®æ¬¡ã®è¡Œã«      %repeat=(newã‚’å«ã‚€ã‚¹ãƒ©ã‚¤ãƒ‰ã®æžšæ•°ï¼‰,para//    ・表示ã—ãŸã„ページ㯠      %[2,-]::本文//     ã®ã‚ˆã†ã«æ›¸ã.      注)[2,- ]ã¯2ページ以é™å…¨éƒ¨        [-, 2,- ]ã¯2ページã¾ã§è¡¨ç¤º        [1..3,5 ]ã¯1ページã‹ã‚‰3ページã¨5ページ    ・repeat=...ã®å¾Œã«ã€Œ,paraã€ã‚’追加ã™ã‚‹ã¨ãƒªãƒ³ã‚¯ã‚’ä½œæˆ ã€€ã€€ã€€ãƒ»ä»–ã®ãƒšãƒ¼ã‚¸ã§è–„文字ã«ã—ãŸã„ã¨ãã¯ã€€%thin[2]::本文  7)figã®ä¸­ã«ã‚るサブフォルダ(例ãˆã°subfig)ã®å›³ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã™ã¹ã¦è¡¨ç¤ºã™ã‚‹ã¨ã    ・newã®æ¬¡ã®è¡Œã«      %repeat=//      %para=subfig:{0}:s{60}{10}:input(:å€çŽ‡)//        ï¼ï¼ž layer{120}{0}, \putnotes{60}{10}{\input...}     注)%repeat=,para=...ã¨ç¶šã‘ã¦æ›¸ã„ã¦ã‚‚よã„. 2.スライドã®ä½œæˆ  1)tmplateslide.cdyã‚’ç«‹ã¡ä¸Šã’る.     スクリーンã«ï¼ŒTitle, Para, Slide ã®ãƒœã‚¿ãƒ³ãŒã‚る.  2)Fheadã¯ï¼Œå›³ã‚’作æˆã™ã‚‹ã¨ãã®ãƒ•ã‚¡ã‚¤ãƒ«å  3)Texparentã¯ï¼Œã‚¹ãƒ©ã‚¤ãƒ‰ã®ãƒ•ã‚¡ã‚¤ãƒ«å      .txt(内容),.tex , .pdf  4)Slideworkã§ï¼Œä½œæ¥­ãƒ•ã‚©ãƒ«ãƒ€ã‚’指定     注)作業フォルダã®ä¸­ã«è‡ªå‹•çš„ã«figã¨ã„ã†ã‚µãƒ–フォルダを作る.(新è¦ã®å ´åˆï¼‰  5)タイトルã®ç·¨é›†     Settitle(name,cmdL,options);       options=["Layery=0","Color=blue"]       nameã¯çœç•¥å¯ï¼ˆãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã€€"slide0")    ・maintitleã¯cmdLã®æœ€åˆã«æ›¸ã(文字サイズ\Huge,他ã¯\large)    ・Titleボタンを押ã™ã¨ã‚¿ã‚¤ãƒˆãƒ«ç”»é¢ã‚’作æˆã—ã¦è¡¨ç¤ºã™ã‚‹ï¼Ž  6)å„種設定     Setslidemain([letterc,boxc,boxd,framec,xpos,size]);       メイン(章ã«è©²å½“)ã®è¨­å®š      注)一部をデフォルト値ã¨ã™ã‚‹å ´åˆã¯ [,,]ãªã©ã¨ã™ã‚‹ï¼Žä»¥ä¸‹åŒæ§˜     Setslidepage([letterc,boxc,boxd,framec,shadowc,shadowd,xpos,size]);       ページã®è¨­å®š     Setslidebody(bodycolor,bodystyle,density);       全体ã®æ–‡å­—色ã¨è–„文字ã®æ¿ƒã•(0-1)ã®è¨­å®š       bodystyleã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã€€"\Large\bf\boldmath"     Setslidehyper("dvipdfmx",["cl=true,lc=blue,fc=blue",90,70,1]);       hyperrefを利用ã™ã‚‹ï¼Œ      注)Setslidehyper();ã¨ã™ã‚‹ã¨ï¼Œhyperref.styを読ã¿è¾¼ã¿ï¼Œ       ã‹ã¤ï¼Œä¸Šã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž      注)数字ã¯ï¼Œãƒšãƒ¼ã‚¸ç§»å‹•ãƒœã‚¿ãƒ³åˆ—ã«ã¤ã„ã¦ï¼Œå³ç«¯ã®æ°´å¹³ä½ç½®ï¼Œåž‚直サイズ,å€çŽ‡  7)パラパラ動画ã®ä½œæˆ    ・mf(s)ã«ãƒ‘ラメータ値sã®ã¨ãã®å›³ã‚’記述ã™ã‚‹ï¼Ž    ・パラパラã®è¨­å®š      Setpara(foldername,funcitonstr,range,options);         options=["m/r", "Div=25"];      注)rangeã®è¨˜è¿°       i) "s=[0,1]" 区間をDivã§åˆ†å‰²       ii) [0.2, 0.6] リストã®è¦ç´ ã‚’sã«ä»£å…¥    ・ParaFボタンを押ã™ã¨ï¼Œãƒ•ã‚©ãƒ«ãƒ€åŠã³ãƒ‘ラパラã®å›³ï¼ˆè¤‡æ•°ï¼‰ãŒç”Ÿæˆã•ã‚Œã‚‹ï¼Ž    ・templateslide.txtã«ï¼Œï¼‘(7)ã®ã‚ˆã†ã«è¨˜è¿°ã™ã‚‹ï¼Ž    ・Slideボタンを押ã™ï¼Ž  8)animateを使ã†ã¨ã     (1)ParaFを作ã£ãŸå¾Œï¼ŒShift+"A"を押ã™ã¨figã«anim+フォルダåã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã§ãる.     (2)Apppackage(["[dvipdfmx]{animete}を追加ã™ã‚‹ï¼Ž     (3)読ã¿è¾¼ã¿å ´æ‰€ã«ï¼Œ\inputを使ã£ã¦å…¥ã‚Œã‚‹ï¼Ž     (4)Setparaã®ã‚ªãƒ—ション         "Frame="(1秒間ã®ãƒ•ãƒ¬ãƒ¼ãƒ æ•°ï¼‰ï¼Œ"Scale="(スケールå€çŽ‡ï¼‰  9)Slideボタンを押ã™ã¨ï¼Œã‚¹ãƒ©ã‚¤ãƒ‰ï¼ˆPDF)ãŒä½œæˆã•ã‚Œã‚‹ï¼Ž  1ï¼ï¼‰Sum ボタンを押ã™ã¨ï¼Œæ¦‚ç•¥PDF(å„ページã®æœ€çµ‚ページã®ã¿ï¼‰ãŒä½œæˆã•ã‚Œã‚‹ï¼Ž \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseslideJ.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseslideJ.txt
new file mode 100644
index 00000000..c9acd281
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/howtouseslideJ.txt
@@ -0,0 +1 @@
+ketslideã«ã‚ˆã‚‹ãƒ—レゼンテーション  2017.08.24 1.スライドファイルã®æŒ‡å®š  1)ketsample/s07slideã®s0701basic.cdyを作業ディレクトリã«ã‚³ãƒ”ーã—ã¦åå‰ã‚’変更ã™ã‚‹ï¼Ž     ã“ã“ã§ã¯ï¼Œä½œæ¥­ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªï¼ãƒ•ã‚¡ã‚¤ãƒ«ã‚’,ユーザホーム/Desktop/workã«sample.cdyã¨ã™ã‚‹ï¼Ž  2)s0701basic.txtã‚‚åŒæ§˜ã«ã‚³ãƒ”ã—ã¦åŒåã«å¤‰æ›´ã™ã‚‹ï¼ˆsample.txt)  3)sample.cdyをダブルクリックã§ç«‹ã¡ä¸Šã’,Cindyscript/figuresを以下ã®ã‚ˆã†ã«ä¿®æ­£ã™ã‚‹ï¼Ž     2行目 Slidename="sample";     5行目 Slidework(gethome()+"/Desktop/work");    11行目 タイトルã«è¡¨ç¤ºã•ã‚Œã‚‹ãƒ†ã‚­ã‚¹ãƒˆï¼ˆè‡ªç”±ã«ç›´ã—ã¦ã‚ˆã„)  4)å³ä¸Šã®æ­¯è»Šãƒžãƒ¼ã‚¯ã‚’押ã™ï¼Ž 1.sample.txtをテキストエディタã§é–‹ã,修正ã™ã‚‹ï¼Ž  ï¼ï¼‰ï¼‘行目(%ã®ãªã„最åˆã®è¡Œï¼‰ã®åŸºæœ¬å½¢ã¯       タイトル(ã¾ãŸã¯title)::slide0//     注1)ãƒãƒƒã‚¯ã‚°ãƒ©ã‚¦ãƒ³ãƒ‰(例ãˆã°kabegamiã¨ã™ã‚‹ï¼‰ã‚’入れるã¨ã         ・kabegami.texを作æˆã—ã¦figフォルダã«å…¥ã‚Œã‚‹ï¼Ž         ・sample.txtã®æŒ‡å®šã¯            タイトル::slide0::kabegami//     注2)タイトル画é¢ãŒä¸è¦ã®å ´åˆã¯ï¼Œ         タイトル(ã¾ãŸã¯title):://  1)ã™ã¹ã¦ã®è¡Œã®æœ€å¾Œã¯å¿…ãš // ã‚’ã¤ã‘る.     注)urlã®æŒ‡å®šã§//を用ã„ã‚‹ã¨ã,||||ã¨ã™ã‚‹ã¨//ã«å¤‰æ›ã•ã‚Œã‚‹ï¼Ž  2)å„ブロックã®å¼•æ•°ã®åŒºåˆ‡ã‚Šã¯ ::  3)コマンド     ・タイトル::読込ファイルå(::å£ç´™ãƒ•ã‚¡ã‚¤ãƒ«)//       最åˆã®ã‚¿ã‚¤ãƒˆãƒ«ãƒšãƒ¼ã‚¸        注)スライドã«ç½®ã文字ã¯slide0.cdyã§ä½œæˆ        注)å£ç´™ã‚’ã¤ã‘ã‚‹ã¨ãã¯ï¼Œã‚‚ã†ï¼‘㤠:: ã§åŒºåˆ‡ã£ã¦ãƒ•ã‚¡ã‚¤ãƒ«åを書ã        注)preambleã«è¿½åŠ ã™ã‚‹ã¨ã,::区切りã§æ›¸ã加ãˆï¼Œæœ€å¾Œã«//ã‚’ãŠã.     ・new(::行下ã’)::タイトル((::ä½ç½®)::読ã¿è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«)//       mainslide       例)new::[10]::最åˆã«::{50}{20}::figure//       注)読ã¿è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚µã‚¤ã‚ºå¤‰æ›´ã™ã‚‹ã¨ã          new::[10]::最åˆã«::{50}{20}::figure,0.8//         他もåŒæ§˜     ・same(::行下ã’)((::ä½ç½®)::読込ファイル)//       sameslide     ・enumerate(::書å¼)//       enumerate環境ã®å§‹ã¾ã‚Š     ・itemize//       itemize環境ã®å§‹ã¾ã‚Š     ・layer(::範囲)//       layer環境ã®å§‹ã¾ã‚Š     ・item::æ–‡//       itemを追加     ・putnote::æ–¹å‘ã¨ä½ç½®::読ã¿è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«//       layer環境ã®ä¸­ã«å›³ã‚’入れる       例)putonote::se{30}{10}::figure( , å€çŽ‡)//(inputã®ã¨ã)       例)putonote::se{30}{10}::include[width=5cm]::figure.pdf//            (includegraphicsã®ã¨ã)     ・end//       enumerate,itemize,layer環境ã®çµ‚ã‚ã‚Š     ・上記以外//       ãã®ã¾ã¾TeXã«æ›¸ã出ã™ï¼Ž  4)空白行を入れãŸã„ã¨ãã¯ï¼Œ...// ã¨ã™ã‚‹ï¼Ž  5)必è¦ãªå›³ã¯ã™ã¹ã¦figã«å…¥ã‚Œã‚‹ï¼Ž  6)newã®å¾Œï¼Œè¤‡æ•°ã®ã‚¹ãƒ©ã‚¤ãƒ‰ã‚’åŒæ™‚ã«ä½œã‚Šé †ã«è¡¨ç¤ºã™ã‚‹ã¨ã,    ・newã®æ¬¡ã®è¡Œã«      %repeat=(newã‚’å«ã‚€ã‚¹ãƒ©ã‚¤ãƒ‰ã®æžšæ•°ï¼‰,para//    ・表示ã—ãŸã„ページ㯠      %[2,-]::本文//     ã®ã‚ˆã†ã«æ›¸ã.      注)[2,- ]ã¯2ページ以é™å…¨éƒ¨        [-, 2,- ]ã¯2ページã¾ã§è¡¨ç¤º        [1..3,5 ]ã¯1ページã‹ã‚‰3ページã¨5ページ    ・repeat=...ã®å¾Œã«ã€Œ,paraã€ã‚’追加ã™ã‚‹ã¨ãƒªãƒ³ã‚¯ã‚’ä½œæˆ ã€€ã€€ã€€ãƒ»ä»–ã®ãƒšãƒ¼ã‚¸ã§è–„文字ã«ã—ãŸã„ã¨ãã¯ã€€%thin[2]::本文      注1)薄文字ã®æ¿ƒã•ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯0.1ã ãŒï¼ŒSetslidebodyã§å¤‰æ›´å¯èƒ½      注2)ã¾ãŸï¼Œsample.txtã«ä»¥ä¸‹ã‚’記述ã™ã‚Œã°ï¼Œãã®å¾ŒãŒå¤‰ã‚る.          \setthin{濃ã•}//  7)figã®ä¸­ã«ã‚るサブフォルダ(例ãˆã°subfig)ã®å›³ãƒ•ã‚¡ã‚¤ãƒ«ã™ã¹ã¦ã‚’é †ã«è¡¨ç¤ºã™ã‚‹ã¨ã    ・newã®æ¬¡ã®è¡Œã«      %repeat=//      %para=subfig:{0}:s{60}{10}:input(:å€çŽ‡)//        ï¼ï¼ž layer{120}{0}, \putnotes{60}{10}{\input...}     注)%repeat=,para=...ã¨ç¶šã‘ã¦æ›¸ã„ã¦ã‚‚よã„. 2.スライドã®ä½œæˆ  1)sample.cdyã®ã‚¹ã‚¯ãƒªãƒ¼ãƒ³ã«Title, Para, Slide ã®ãƒœã‚¿ãƒ³ãŒã‚る.  2)Fheadã¯ï¼Œå›³ã‚’作æˆã™ã‚‹ã¨ãã®ãƒ•ã‚¡ã‚¤ãƒ«å  3)Slidenameã¯ï¼Œã‚¹ãƒ©ã‚¤ãƒ‰ã®ãƒ•ã‚¡ã‚¤ãƒ«å      .txt(内容),.tex , .pdf  4)Slideworkã§ï¼Œä½œæ¥­ãƒ•ã‚©ãƒ«ãƒ€ã‚’指定     注1)作業フォルダã®ä¸­ã«è‡ªå‹•çš„ã«figã¨ã„ã†ã‚µãƒ–フォルダを作る.(新è¦ã®å ´åˆï¼‰     注2)Dirworkã¯figã«è¨­å®šã•ã‚Œã‚‹ã®ã§ï¼Œå›³ã¯figã®ä¸­ã«ä½œã‚‰ã‚Œã‚‹ï¼Ž     注3)slideボタンを押ã™ã¨ï¼ŒDirworkã¯ä¸€æ™‚çš„ã«workã«ãªã‚‹ï¼Ž  5)タイトルã®ç·¨é›†     Settitle(name,cmdL,options);       options=["Layery=0","Color=blue"]       nameã¯çœç•¥å¯ï¼ˆãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã€€"slide0")    ・maintitleã¯cmdLã®æœ€åˆã«æ›¸ã(文字サイズ\Huge,他ã¯\large)    ・Titleボタンを押ã™ã¨ã‚¿ã‚¤ãƒˆãƒ«ç”»é¢ã‚’作æˆã—ã¦è¡¨ç¤ºã™ã‚‹ï¼Ž  6)å„種設定     Setslidemain([letterc,boxc,boxd,framec,xpos,size]);       メイン(章ã«è©²å½“)ã®è¨­å®š      注)一部をデフォルト値ã¨ã™ã‚‹å ´åˆã¯ [,,]ãªã©ã¨ã™ã‚‹ï¼Žä»¥ä¸‹åŒæ§˜     Setslidepage([letterc,boxc,boxd,framec,shadowc,shadowd,xpos,size]);       ページã®è¨­å®š     Setslidebody(bodycolor,bodystyle,density);       全体ã®æ–‡å­—色ã¨è–„文字ã®æ¿ƒã•(0-1)ã®è¨­å®š       bodystyleã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆã¯ã€€"\Large\bf\boldmath"     Setslidehyper("dvipdfmx",["cl=true,lc=blue,fc=blue",90,70,1]);       hyperrefを利用ã™ã‚‹ï¼Œ      注)Setslidehyper();ã¨ã™ã‚‹ã¨ï¼Œhyperref.styを読ã¿è¾¼ã¿ï¼Œ       ã‹ã¤ï¼Œä¸Šã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå€¤ãŒä¸Žãˆã‚‰ã‚Œã‚‹ï¼Ž      注)数字ã¯ï¼Œãƒšãƒ¼ã‚¸ç§»å‹•ãƒœã‚¿ãƒ³åˆ—ã«ã¤ã„ã¦ï¼Œå³ç«¯ã®æ°´å¹³ä½ç½®ï¼Œåž‚直サイズ,å€çŽ‡  7)パラパラ動画ã®ä½œæˆ    ・mf(s)ã«ãƒ‘ラメータ値sã®ã¨ãã®å›³ã‚’記述ã™ã‚‹ï¼Ž    ・パラパラã®è¨­å®š      Setpara(foldername,funcitonstr,range,options);         options=["m/r", "Div=25"];      注)rangeã®è¨˜è¿°       i) "s=[0,1]" 区間をDivã§åˆ†å‰²       ii) [0.2, 0.6] リストã®è¦ç´ ã‚’sã«ä»£å…¥    ・ParaFボタンを押ã™ã¨ï¼Œãƒ•ã‚©ãƒ«ãƒ€åŠã³ãƒ‘ラパラã®å›³ï¼ˆè¤‡æ•°ï¼‰ãŒç”Ÿæˆã•ã‚Œã‚‹ï¼Ž    ・templateslide.txtã«ï¼Œï¼‘(7)ã®ã‚ˆã†ã«è¨˜è¿°ã™ã‚‹ï¼Ž    ・Slideボタンを押ã™ï¼Ž  8)animateを使ã†ã¨ã     (1)ParaFを作ã£ãŸå¾Œï¼ŒShift+"A"を押ã™ã¨figã«anim+フォルダåã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã§ãる.     (2)Apppackage(["[dvipdfmx]{animate}"]を追加ã™ã‚‹ï¼Ž     (3)読ã¿è¾¼ã¿å ´æ‰€ã«ï¼Œ\inputを使ã£ã¦å…¥ã‚Œã‚‹ï¼Ž(layerã¯ä½¿ãˆãªã„)     (4)Setparaã®ã‚ªãƒ—ション         "Frate="(1秒間ã®ãƒ•ãƒ¬ãƒ¼ãƒ æ•°), "Scale="(スケールå€çŽ‡), "OpA=[loop]"  9)Slideボタンを押ã™ã¨ï¼Œã‚¹ãƒ©ã‚¤ãƒ‰ï¼ˆPDF)ãŒä½œæˆã•ã‚Œã‚‹ï¼Ž  1ï¼ï¼‰Sum ボタンを押ã™ã¨ï¼Œæ¦‚è¦PDF(å„ページã®æœ€çµ‚ページã®ã¿ï¼‰ãŒä½œæˆã•ã‚Œã‚‹ï¼Ž \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/kc.sh b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/kc.sh
new file mode 100755
index 00000000..c80504df
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/kc.sh
@@ -0,0 +1,7 @@
+#!/bin/sh
+cd "/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides"
+"/Applications/kettex/texlive/bin/x86_64-darwin/uplatex" s0704para.tex
+"/Applications/kettex/texlive/bin/x86_64-darwin/dvipdfmx" s0704para.dvi
+rm s0704para.dvi
+open -a "skim" s0704para.pdf
+exit 0
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.aux b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.aux
new file mode 100644
index 00000000..f23e5468
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.aux
@@ -0,0 +1 @@
+\relax
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.cdy
new file mode 100755
index 00000000..0e6ec24f
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.log b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.log
new file mode 100644
index 00000000..0427477a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.log
@@ -0,0 +1,240 @@
+This is e-upTeX, Version 3.14159265-p3.7-u1.21-160201-2.6 (utf8.uptex) (TeX Live 2016) (preloaded format=uplatex 2017.8.18) 24 AUG 2017 12:29
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**s0701basic.tex
+(./s0701basic.tex
+pLaTeX2e <2016/11/29u01> (based on LaTeX2e <2017/01/01> patch level 3)
+Babel <3.9r> and hyphenation patterns for 3 language(s) loaded.
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujarticle.cls
+Document Class: ujarticle 2016/11/22 v1.7b-u00 Standard upLaTeX class
+\c@@paper=\count82
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujsize10.clo
+File: ujsize10.clo 2016/11/22 v1.7b-u00 Standard upLaTeX file (size option)
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+)
+\c@part=\count83
+\c@section=\count84
+\c@subsection=\count85
+\c@subsubsection=\count86
+\c@paragraph=\count87
+\c@subparagraph=\count88
+\c@figure=\count89
+\c@table=\count90
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\symmincho=\mathgroup4
+LaTeX Font Info: Overwriting symbol font `mincho' in version `bold'
+(Font) JY2/mc/m/n --> JY2/gt/m/n on input line 580.
+\toclineskip=\dimen118
+\@lnumwidth=\dimen119
+\bibindent=\dimen120
+\heisei=\count91
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic.sty
+\c@ketpicctra=\count92
+\c@ketpicctrb=\count93
+\c@ketpicctrc=\count94
+\c@ketpicctrd=\count95
+\c@ketpicctre=\count96
+\c@ketpicctrf=\count97
+\c@ketpicctrg=\count98
+\c@ketpicctrh=\count99
+\c@ketpicctri=\count100
+\c@ketpicctrj=\count101
+\Width=\skip43
+\Height=\skip44
+\Depth=\skip45
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer.sty
+\layercurrentunit=\skip46
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide.sty)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2016/11/05 v2.16a AMS math features
+\@mathmargin=\skip47
+
+For additional information on amsmath, use the `?' option.
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01 AMS text
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0 generic functions
+\@emptytoks=\toks15
+\ex@=\dimen121
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d Bold Symbols
+\pmbraise@=\dimen122
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 2016/03/08 v2.02 operator names
+)
+\inf@bad=\count102
+LaTeX Info: Redefining \frac on input line 213.
+\uproot@=\count103
+\leftroot@=\count104
+LaTeX Info: Redefining \overline on input line 375.
+\classnum@=\count105
+\DOTSCASE@=\count106
+LaTeX Info: Redefining \ldots on input line 472.
+LaTeX Info: Redefining \dots on input line 475.
+LaTeX Info: Redefining \cdots on input line 596.
+\Mathstrutbox@=\box41
+\strutbox@=\box42
+\big@size=\dimen123
+LaTeX Font Info: Redeclaring font encoding OML on input line 712.
+LaTeX Font Info: Redeclaring font encoding OMS on input line 713.
+\macc@depth=\count107
+\c@MaxMatrixCols=\count108
+\dotsspace@=\muskip10
+\c@parentequation=\count109
+\dspbrk@lvl=\count110
+\tag@help=\toks16
+\row@=\count111
+\column@=\count112
+\maxfields@=\count113
+\andhelp@=\toks17
+\eqnshift@=\dimen124
+\alignsep@=\dimen125
+\tagshift@=\dimen126
+\tagwidth@=\dimen127
+\totwidth@=\dimen128
+\lineht@=\dimen129
+\@envbody=\toks18
+\multlinegap=\skip48
+\multlinetaggap=\skip49
+\mathdisplay@stack=\toks19
+LaTeX Info: Redefining \[ on input line 2817.
+LaTeX Info: Redefining \] on input line 2818.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\symAMSa=\mathgroup5
+\symAMSb=\mathgroup6
+LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
+(Font) U/euf/m/n --> U/euf/b/n on input line 106.
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/bm.sty
+Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi)
+\symboldoperators=\mathgroup7
+\symboldletters=\mathgroup8
+\symboldsymbols=\mathgroup9
+\symboldmincho=\mathgroup10
+LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141.
+LaTeX Info: Redefining \bm on input line 207.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/enumerate.sty
+Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC)
+\@enLab=\toks20
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks21
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: dvipdfmx.def on input line 99.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvipdfmx.def
+File: dvipdfmx.def 2016/07/11 v4.12 LaTeX color/graphics driver for dvipdfmx (L
+3/ChoF)
+))
+\Gin@req@height=\dimen130
+\Gin@req@width=\dimen131
+) (/Applications/kettex/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package xcolor Info: Driver file: dvips.def on input line 225.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvips.def
+File: dvips.def 2016/07/10 v3.1a Driver-dependent file (DPC,SPQR)
+)
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
+Package xcolor Info: Model `RGB' extended on input line 1364.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
+)
+(./s0701basic.aux)
+\openout1 = `s0701basic.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for JY2/mc/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for JT2/mc/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 44.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 44.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 44.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 44.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 44.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 44.
+ [0
+
+]
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 64.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/base/omscmr.fd
+File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OMS/cmr/bx/n' in size <14.4> not available
+(Font) Font shape `OMS/cmsy/b/n' tried instead on input line 64.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./s0701basic.aux) )
+Here is how much of TeX's memory you used:
+ 2469 strings out of 495145
+ 29515 string characters out of 6183910
+ 180772 words of memory out of 5000000
+ 5928 multiletter control sequences out of 15000+600000
+ 7377 words of font info for 38 fonts, out of 8000000 for 9000
+ 14 hyphenation exceptions out of 8191
+ 27i,7n,35p,322b,209s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on s0701basic.dvi (3 pages, 58248 bytes).
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.pdf
new file mode 100644
index 00000000..9bf18044
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.tex
new file mode 100644
index 00000000..eace4285
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.tex
@@ -0,0 +1,83 @@
+%%% title s0701basic
+\documentclass[landscape,10pt]{ujarticle}
+\special{papersize=\the\paperwidth,\the\paperheight}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide}
+\usepackage{amsmath,amssymb}
+\usepackage{bm,enumerate}
+\usepackage[dvipdfmx]{graphicx}
+\usepackage{xcolor}
+\definecolor{slidecolora}{cmyk}{0.98,0.13,0,0.43}
+\definecolor{slidecolorb}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolorc}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolord}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolore}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolorf}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolori}{cmyk}{0.98,0.13,0,0.43}
+\def\setthin#1{\def\thin{#1}}
+\setthin{0.1}
+\ketmarginJ
+\ketslideinit
+
+\pagestyle{headings}
+
+\begin{document}
+
+\def\mainslidetitley{22}
+\def\ketcletter{slidecolora}
+\def\ketcbox{slidecolorb}
+\def\ketdbox{slidecolorc}
+\def\ketcframe{slidecolord}
+\def\ketcshadow{slidecolore}
+\def\ketdshadow{slidecolorf}
+\def\slidetitlex{6}
+\def\slidetitlesize{1.3}
+\def\mketcletter{slidecolori}
+\def\mketcbox{yellow}
+\def\mketdbox{yellow}
+\def\mketcframe{yellow}
+\def\mslidetitlex{62}
+\def\mslidetitlesize{2}
+
+\color{black}
+\Large\bf\boldmath
+\thispagestyle{empty}
+\addtocounter{page}{-1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\mainslide{メインスライド1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{itemize環境ã®ä½¿ã„æ–¹}
+
+\vspace*{18mm}
+
+\begin{itemize}
+\item
+内容
+\item
+çµè«–
+\end{itemize}
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{enumerate環境ã®ä½¿ã„æ–¹}
+
+\vspace*{18mm}
+
+\begin{enumerate}[(1)]
+\item
+番å·ã‚’変ãˆã‚‹ã«ã¯ï¼Œä¾‹ãˆã° [(1)]
+\item
+後ã¯åŒã˜
+\end{enumerate}
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.txt
new file mode 100644
index 00000000..85d19361
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0701basic.txt
@@ -0,0 +1,23 @@
+タイトル::slide0//
+%タイトル::slide0::kabegami//
+%title:://
+
+%%%%%%%%%%%%%%%%//
+main::メインスライド1//
+
+%%%%%%%%%%%%%%%%//
+new::itemize環境ã®ä½¿ã„æ–¹//
+
+itemize//
+item::内容//
+item::çµè«–//
+end//
+
+%%%%%%%%%%%%%%%%//
+new::enumerate環境ã®ä½¿ã„æ–¹//
+
+enumerate::[(1)]//
+item::番å·ã‚’変ãˆã‚‹ã«ã¯ï¼Œä¾‹ãˆã° [(1)]//
+item::後ã¯åŒã˜//
+end//
+
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.cdy
new file mode 100755
index 00000000..10268595
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.txt
new file mode 100644
index 00000000..e37f444d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0702graph.txt
@@ -0,0 +1,20 @@
+%タイトル::slide0::kabegami//
+タイトル::slide2//
+
+%%%%%%%%%%%%%%%%//
+main::メインスライド1//
+
+%%%%%%%%%%%%%%%%//
+new::inputã¨layer//
+
+layer::{100}{0}//
+putnote::se{10}{15}::figsin,0.8//
+end//
+
+%%%%%%%%%%%%%%%%//
+new::includegrpahicsã¨layer//
+
+layer::{100}{0}//
+putnote::s{60}{5}
+::include[bb=0.00 0.00 803.00 285.00,width=100mm]::cindyscreen.pdf//
+end//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.cdy
new file mode 100755
index 00000000..04346986
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.txt
new file mode 100644
index 00000000..5c66e54a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0703repeat.txt
@@ -0,0 +1,32 @@
+%タイトル::slide0::kabegami//
+タイトル::slide0//
+%%%%%%%%%%%%%%%%//
+main::メインスライド1//
+
+%%%%%%%%%%%%%%%%//
+new::itemize環境ã®ä½¿ã„æ–¹//
+%repeat=2//
+
+itemize//
+item::内容//
+%[2,-]::item::çµè«–//
+end//
+
+%%%%%%%%%%%%%%%%//
+new::enumerate環境ã®ä½¿ã„æ–¹//
+%repeat=3//
+
+%[2,-]::enumerate::[(1)]//
+%[2,-]::item::番å·ã‚’変ãˆã‚‹ã«ã¯ï¼Œä¾‹ãˆã° [(1)]//
+%[3,-]::item::後ã¯åŒã˜//
+%[2,- ]::end//
+
+%%%%%%%%%%%%%%%%//
+new::グラフã¨reapeat//
+%repeat=2//
+
+layer::{100}{0}//
+%[1]::putnote::se{10}{15}::figsin,0.8//
+%[2]::putnote::se{30}{40}::figsin,0.8//
+end//
+
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.aux b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.aux
new file mode 100644
index 00000000..a590e61d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.aux
@@ -0,0 +1,74 @@
+\relax
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand*\HyPL@Entry[1]{}
+\HyPL@Entry{0<</P(0)>>}
+\HyPL@Entry{1<</S/D>>}
+\HyPL@Entry{2<</S/D>>}
+\HyPL@Entry{3<</S/D>>}
+\HyPL@Entry{4<</S/D>>}
+\HyPL@Entry{5<</S/D>>}
+\HyPL@Entry{6<</S/D>>}
+\HyPL@Entry{7<</S/D>>}
+\HyPL@Entry{8<</S/D>>}
+\HyPL@Entry{9<</S/D>>}
+\HyPL@Entry{10<</S/D>>}
+\HyPL@Entry{11<</S/D>>}
+\HyPL@Entry{12<</S/D>>}
+\HyPL@Entry{13<</S/D>>}
+\HyPL@Entry{14<</S/D>>}
+\HyPL@Entry{15<</S/D>>}
+\HyPL@Entry{16<</S/D>>}
+\HyPL@Entry{17<</S/D>>}
+\HyPL@Entry{18<</S/D>>}
+\HyPL@Entry{19<</S/D>>}
+\HyPL@Entry{20<</S/D>>}
+\HyPL@Entry{21<</S/D>>}
+\HyPL@Entry{22<</S/D>>}
+\HyPL@Entry{23<</S/D>>}
+\HyPL@Entry{24<</S/D>>}
+\HyPL@Entry{25<</S/D>>}
+\HyPL@Entry{26<</S/D>>}
+\HyPL@Entry{28<</S/D /St 2>>}
+\HyPL@Entry{29<</S/D /St 2>>}
+\HyPL@Entry{30<</S/D /St 2>>}
+\HyPL@Entry{31<</S/D /St 2>>}
+\HyPL@Entry{32<</S/D /St 2>>}
+\HyPL@Entry{33<</S/D /St 2>>}
+\HyPL@Entry{34<</S/D /St 2>>}
+\HyPL@Entry{35<</S/D /St 2>>}
+\HyPL@Entry{36<</S/D /St 2>>}
+\HyPL@Entry{37<</S/D /St 2>>}
+\HyPL@Entry{38<</S/D /St 2>>}
+\HyPL@Entry{39<</S/D /St 2>>}
+\HyPL@Entry{40<</S/D /St 2>>}
+\HyPL@Entry{41<</S/D /St 2>>}
+\HyPL@Entry{42<</S/D /St 2>>}
+\HyPL@Entry{43<</S/D /St 2>>}
+\HyPL@Entry{44<</S/D /St 2>>}
+\HyPL@Entry{45<</S/D /St 2>>}
+\HyPL@Entry{46<</S/D /St 2>>}
+\HyPL@Entry{47<</S/D /St 2>>}
+\HyPL@Entry{48<</S/D /St 2>>}
+\HyPL@Entry{49<</S/D /St 2>>}
+\HyPL@Entry{50<</S/D /St 2>>}
+\HyPL@Entry{51<</S/D /St 2>>}
+\HyPL@Entry{52<</S/D /St 2>>}
+\HyPL@Entry{53<</S/D /St 2>>}
+\HyPL@Entry{54<</S/D /St 2>>}
+\HyPL@Entry{55<</S/D /St 2>>}
+\HyPL@Entry{56<</S/D /St 2>>}
+\HyPL@Entry{57<</S/D /St 2>>}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.cdy
new file mode 100755
index 00000000..b139c579
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.log b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.log
new file mode 100644
index 00000000..930c2076
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.log
@@ -0,0 +1,704 @@
+This is e-upTeX, Version 3.14159265-p3.7-u1.21-160201-2.6 (utf8.uptex) (TeX Live 2016) (preloaded format=uplatex 2017.8.18) 24 AUG 2017 14:47
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**s0704para.tex
+(./s0704para.tex
+pLaTeX2e <2016/11/29u01> (based on LaTeX2e <2017/01/01> patch level 3)
+Babel <3.9r> and hyphenation patterns for 3 language(s) loaded.
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujarticle.cls
+Document Class: ujarticle 2016/11/22 v1.7b-u00 Standard upLaTeX class
+\c@@paper=\count82
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujsize10.clo
+File: ujsize10.clo 2016/11/22 v1.7b-u00 Standard upLaTeX file (size option)
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+)
+\c@part=\count83
+\c@section=\count84
+\c@subsection=\count85
+\c@subsubsection=\count86
+\c@paragraph=\count87
+\c@subparagraph=\count88
+\c@figure=\count89
+\c@table=\count90
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\symmincho=\mathgroup4
+LaTeX Font Info: Overwriting symbol font `mincho' in version `bold'
+(Font) JY2/mc/m/n --> JY2/gt/m/n on input line 580.
+\toclineskip=\dimen118
+\@lnumwidth=\dimen119
+\bibindent=\dimen120
+\heisei=\count91
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic.sty
+\c@ketpicctra=\count92
+\c@ketpicctrb=\count93
+\c@ketpicctrc=\count94
+\c@ketpicctrd=\count95
+\c@ketpicctre=\count96
+\c@ketpicctrf=\count97
+\c@ketpicctrg=\count98
+\c@ketpicctrh=\count99
+\c@ketpicctri=\count100
+\c@ketpicctrj=\count101
+\Width=\skip43
+\Height=\skip44
+\Depth=\skip45
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer.sty
+\layercurrentunit=\skip46
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide.sty)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2016/11/05 v2.16a AMS math features
+\@mathmargin=\skip47
+
+For additional information on amsmath, use the `?' option.
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01 AMS text
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0 generic functions
+\@emptytoks=\toks15
+\ex@=\dimen121
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d Bold Symbols
+\pmbraise@=\dimen122
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 2016/03/08 v2.02 operator names
+)
+\inf@bad=\count102
+LaTeX Info: Redefining \frac on input line 213.
+\uproot@=\count103
+\leftroot@=\count104
+LaTeX Info: Redefining \overline on input line 375.
+\classnum@=\count105
+\DOTSCASE@=\count106
+LaTeX Info: Redefining \ldots on input line 472.
+LaTeX Info: Redefining \dots on input line 475.
+LaTeX Info: Redefining \cdots on input line 596.
+\Mathstrutbox@=\box41
+\strutbox@=\box42
+\big@size=\dimen123
+LaTeX Font Info: Redeclaring font encoding OML on input line 712.
+LaTeX Font Info: Redeclaring font encoding OMS on input line 713.
+\macc@depth=\count107
+\c@MaxMatrixCols=\count108
+\dotsspace@=\muskip10
+\c@parentequation=\count109
+\dspbrk@lvl=\count110
+\tag@help=\toks16
+\row@=\count111
+\column@=\count112
+\maxfields@=\count113
+\andhelp@=\toks17
+\eqnshift@=\dimen124
+\alignsep@=\dimen125
+\tagshift@=\dimen126
+\tagwidth@=\dimen127
+\totwidth@=\dimen128
+\lineht@=\dimen129
+\@envbody=\toks18
+\multlinegap=\skip48
+\multlinetaggap=\skip49
+\mathdisplay@stack=\toks19
+LaTeX Info: Redefining \[ on input line 2817.
+LaTeX Info: Redefining \] on input line 2818.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\symAMSa=\mathgroup5
+\symAMSb=\mathgroup6
+LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
+(Font) U/euf/m/n --> U/euf/b/n on input line 106.
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/bm.sty
+Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi)
+\symboldoperators=\mathgroup7
+\symboldletters=\mathgroup8
+\symboldsymbols=\mathgroup9
+\symboldmincho=\mathgroup10
+LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141.
+LaTeX Info: Redefining \bm on input line 207.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/enumerate.sty
+Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC)
+\@enLab=\toks20
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks21
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: dvipdfmx.def on input line 99.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvipdfmx.def
+File: dvipdfmx.def 2016/07/11 v4.12 LaTeX color/graphics driver for dvipdfmx (L
+3/ChoF)
+))
+\Gin@req@height=\dimen130
+\Gin@req@width=\dimen131
+) (/Applications/kettex/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package xcolor Info: Driver file: dvips.def on input line 225.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvips.def
+File: dvips.def 2016/07/10 v3.1a Driver-dependent file (DPC,SPQR)
+)
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
+Package xcolor Info: Model `RGB' extended on input line 1364.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2017/03/14 v6.85a Hypertext links for LaTeX
+
+(/Applications/kettex/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.s
+ty
+Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
+
+
+(/Applications/kettex/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.st
+y
+Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
+Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
+Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
+Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
+Package ifvtex Info: VTeX not detected.
+Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
+Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
+Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
+Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
+Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: pdfTeX >= 1.30 not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode not found.
+Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
+Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
+)
+Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
+Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
+)
+Package hobsub Info: Skipping package `hobsub' (already loaded).
+Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
+Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
+Package: xcolor-patch 2016/05/16 xcolor patch
+Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
+Package atveryend Info: \enddocument detected (standard20110627).
+Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
+Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
+Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
+) (/Applications/kettex/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty
+Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
+)
+\@linkdim=\dimen132
+\Hy@linkcounter=\count114
+\Hy@pagecounter=\count115
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2017/03/14 v6.85a Hyperref: PDFDocEncoding definition (HO)
+)
+\Hy@SavedSpaceFactor=\count116
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 4374.
+Package hyperref Info: Hyper figures OFF on input line 4498.
+Package hyperref Info: Link nesting OFF on input line 4503.
+Package hyperref Info: Hyper index ON on input line 4506.
+Package hyperref Info: Plain pages OFF on input line 4513.
+Package hyperref Info: Backreferencing OFF on input line 4518.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4751.
+\c@Hy@tempcnt=\count117
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip11
+Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 5104.
+\XeTeXLinkMargin=\dimen133
+\Fld@menulength=\count118
+\Field@Width=\dimen134
+\Fld@charsize=\dimen135
+Package hyperref Info: Hyper figures OFF on input line 6358.
+Package hyperref Info: Link nesting OFF on input line 6363.
+Package hyperref Info: Hyper index ON on input line 6366.
+Package hyperref Info: backreferencing OFF on input line 6373.
+Package hyperref Info: Link coloring ON on input line 6376.
+Package hyperref Info: Link coloring with OCG OFF on input line 6383.
+Package hyperref Info: PDF/A mode OFF on input line 6388.
+LaTeX Info: Redefining \ref on input line 6428.
+LaTeX Info: Redefining \pageref on input line 6432.
+\Hy@abspage=\count119
+\c@Item=\count120
+\c@Hfootnote=\count121
+)
+
+Package hyperref Message: Driver: hdvipdfm.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/hdvipdfm.def
+File: hdvipdfm.def 2017/03/14 v6.85a Hyperref driver for dvipdfm
+\pdfm@box=\box43
+\c@Hy@AnnotLevel=\count122
+\HyField@AnnotCount=\count123
+\Fld@listcount=\count124
+\c@bookmark@seq@number=\count125
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
+Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+82.
+)
+\Hy@SectionHShift=\skip50
+) (./s0704para.aux)
+\openout1 = `s0704para.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for JY2/mc/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for JT2/mc/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 26.
+LaTeX Font Info: ... okay on input line 26.
+\AtBeginShipoutBox=\box44
+Package hyperref Info: Link coloring ON on input line 26.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
+
+(/Applications/kettex/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.st
+y
+Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
+)
+\c@section@level=\count126
+)
+LaTeX Info: Redefining \ref on input line 26.
+LaTeX Info: Redefining \pageref on input line 26.
+LaTeX Info: Redefining \nameref on input line 26.
+ (./s0704para.out) (./s0704para.out)
+\@outlinefile=\write3
+\openout3 = `s0704para.out'.
+
+ (./fig/slide0.tex
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 23.94002pt on input line 5.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 23.94002pt on input line 5.
+) (./fig/slide0.tex)
+(./fig/slide0.tex) (./fig/slide0.tex) [0
+
+] (./fig/pointoncircle/p001.tex
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <9> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 8.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 8.65997pt on input line 8.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <9> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 8.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 8.65997pt on input line 8.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 5.77332pt on input line 22.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 4.8111pt on input line 22.
+LaTeX Font Info: Try loading font information for U+msa on input line 22.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info: Try loading font information for U+msb on input line 22.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+))
+(./fig/pointoncircle/p001.tex) (./fig/pointoncircle/p001.tex)
+(./fig/pointoncircle/p001.tex)
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <7> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 65.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 6.73553pt on input line 65.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <7> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 65.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 6.73553pt on input line 65.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 9.6222pt on input line 74.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p002.tex) (./fig/pointoncircle/p002.tex)
+(./fig/pointoncircle/p002.tex) (./fig/pointoncircle/p002.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p003.tex) (./fig/pointoncircle/p003.tex)
+(./fig/pointoncircle/p003.tex) (./fig/pointoncircle/p003.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p004.tex) (./fig/pointoncircle/p004.tex)
+(./fig/pointoncircle/p004.tex) (./fig/pointoncircle/p004.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p005.tex) (./fig/pointoncircle/p005.tex)
+(./fig/pointoncircle/p005.tex) (./fig/pointoncircle/p005.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p006.tex) (./fig/pointoncircle/p006.tex)
+(./fig/pointoncircle/p006.tex) (./fig/pointoncircle/p006.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p007.tex) (./fig/pointoncircle/p007.tex)
+(./fig/pointoncircle/p007.tex) (./fig/pointoncircle/p007.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p008.tex) (./fig/pointoncircle/p008.tex)
+(./fig/pointoncircle/p008.tex) (./fig/pointoncircle/p008.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p009.tex) (./fig/pointoncircle/p009.tex)
+(./fig/pointoncircle/p009.tex) (./fig/pointoncircle/p009.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p010.tex) (./fig/pointoncircle/p010.tex)
+(./fig/pointoncircle/p010.tex) (./fig/pointoncircle/p010.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p011.tex) (./fig/pointoncircle/p011.tex)
+(./fig/pointoncircle/p011.tex) (./fig/pointoncircle/p011.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p012.tex) (./fig/pointoncircle/p012.tex)
+(./fig/pointoncircle/p012.tex) (./fig/pointoncircle/p012.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p013.tex) (./fig/pointoncircle/p013.tex)
+(./fig/pointoncircle/p013.tex) (./fig/pointoncircle/p013.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p014.tex) (./fig/pointoncircle/p014.tex)
+(./fig/pointoncircle/p014.tex) (./fig/pointoncircle/p014.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p015.tex) (./fig/pointoncircle/p015.tex)
+(./fig/pointoncircle/p015.tex) (./fig/pointoncircle/p015.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p016.tex) (./fig/pointoncircle/p016.tex)
+(./fig/pointoncircle/p016.tex) (./fig/pointoncircle/p016.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p017.tex) (./fig/pointoncircle/p017.tex)
+(./fig/pointoncircle/p017.tex) (./fig/pointoncircle/p017.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p018.tex) (./fig/pointoncircle/p018.tex)
+(./fig/pointoncircle/p018.tex) (./fig/pointoncircle/p018.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p019.tex) (./fig/pointoncircle/p019.tex)
+(./fig/pointoncircle/p019.tex) (./fig/pointoncircle/p019.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p020.tex) (./fig/pointoncircle/p020.tex)
+(./fig/pointoncircle/p020.tex) (./fig/pointoncircle/p020.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p021.tex) (./fig/pointoncircle/p021.tex)
+(./fig/pointoncircle/p021.tex) (./fig/pointoncircle/p021.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p022.tex) (./fig/pointoncircle/p022.tex)
+(./fig/pointoncircle/p022.tex) (./fig/pointoncircle/p022.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p023.tex) (./fig/pointoncircle/p023.tex)
+(./fig/pointoncircle/p023.tex) (./fig/pointoncircle/p023.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p024.tex) (./fig/pointoncircle/p024.tex)
+(./fig/pointoncircle/p024.tex) (./fig/pointoncircle/p024.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p025.tex) (./fig/pointoncircle/p025.tex)
+(./fig/pointoncircle/p025.tex) (./fig/pointoncircle/p025.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/pointoncircle/p026.tex) (./fig/pointoncircle/p026.tex)
+(./fig/pointoncircle/p026.tex) (./fig/pointoncircle/p026.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/sinecurve/p001.tex) (./fig/sinecurve/p001.tex)
+(./fig/sinecurve/p001.tex) (./fig/sinecurve/p001.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p002.tex) (./fig/sinecurve/p002.tex)
+(./fig/sinecurve/p002.tex) (./fig/sinecurve/p002.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p003.tex) (./fig/sinecurve/p003.tex)
+(./fig/sinecurve/p003.tex) (./fig/sinecurve/p003.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p004.tex) (./fig/sinecurve/p004.tex)
+(./fig/sinecurve/p004.tex) (./fig/sinecurve/p004.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p005.tex) (./fig/sinecurve/p005.tex)
+(./fig/sinecurve/p005.tex) (./fig/sinecurve/p005.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p006.tex) (./fig/sinecurve/p006.tex)
+(./fig/sinecurve/p006.tex) (./fig/sinecurve/p006.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p007.tex) (./fig/sinecurve/p007.tex)
+(./fig/sinecurve/p007.tex) (./fig/sinecurve/p007.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p008.tex) (./fig/sinecurve/p008.tex)
+(./fig/sinecurve/p008.tex) (./fig/sinecurve/p008.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p009.tex) (./fig/sinecurve/p009.tex)
+(./fig/sinecurve/p009.tex) (./fig/sinecurve/p009.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p010.tex) (./fig/sinecurve/p010.tex)
+(./fig/sinecurve/p010.tex) (./fig/sinecurve/p010.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p011.tex) (./fig/sinecurve/p011.tex)
+(./fig/sinecurve/p011.tex) (./fig/sinecurve/p011.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p012.tex) (./fig/sinecurve/p012.tex)
+(./fig/sinecurve/p012.tex) (./fig/sinecurve/p012.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p013.tex) (./fig/sinecurve/p013.tex)
+(./fig/sinecurve/p013.tex) (./fig/sinecurve/p013.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p014.tex) (./fig/sinecurve/p014.tex)
+(./fig/sinecurve/p014.tex) (./fig/sinecurve/p014.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p015.tex) (./fig/sinecurve/p015.tex)
+(./fig/sinecurve/p015.tex) (./fig/sinecurve/p015.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p016.tex) (./fig/sinecurve/p016.tex)
+(./fig/sinecurve/p016.tex) (./fig/sinecurve/p016.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p017.tex) (./fig/sinecurve/p017.tex)
+(./fig/sinecurve/p017.tex) (./fig/sinecurve/p017.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p018.tex) (./fig/sinecurve/p018.tex)
+(./fig/sinecurve/p018.tex) (./fig/sinecurve/p018.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p019.tex) (./fig/sinecurve/p019.tex)
+(./fig/sinecurve/p019.tex) (./fig/sinecurve/p019.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p020.tex) (./fig/sinecurve/p020.tex)
+(./fig/sinecurve/p020.tex) (./fig/sinecurve/p020.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p021.tex) (./fig/sinecurve/p021.tex)
+(./fig/sinecurve/p021.tex) (./fig/sinecurve/p021.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p022.tex) (./fig/sinecurve/p022.tex)
+(./fig/sinecurve/p022.tex) (./fig/sinecurve/p022.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p023.tex) (./fig/sinecurve/p023.tex)
+(./fig/sinecurve/p023.tex) (./fig/sinecurve/p023.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p024.tex) (./fig/sinecurve/p024.tex)
+(./fig/sinecurve/p024.tex) (./fig/sinecurve/p024.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p025.tex) (./fig/sinecurve/p025.tex)
+(./fig/sinecurve/p025.tex) (./fig/sinecurve/p025.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p026.tex) (./fig/sinecurve/p026.tex)
+(./fig/sinecurve/p026.tex) (./fig/sinecurve/p026.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p027.tex) (./fig/sinecurve/p027.tex)
+(./fig/sinecurve/p027.tex) (./fig/sinecurve/p027.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p028.tex) (./fig/sinecurve/p028.tex)
+(./fig/sinecurve/p028.tex) (./fig/sinecurve/p028.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p029.tex) (./fig/sinecurve/p029.tex)
+(./fig/sinecurve/p029.tex) (./fig/sinecurve/p029.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p030.tex) (./fig/sinecurve/p030.tex)
+(./fig/sinecurve/p030.tex) (./fig/sinecurve/p030.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2] (./fig/sinecurve/p031.tex) (./fig/sinecurve/p031.tex)
+(./fig/sinecurve/p031.tex) (./fig/sinecurve/p031.tex)
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 1114.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2]
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 1114.
+ (./s0704para.aux)
+Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 1114.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 1114.
+
+Package rerunfilecheck Info: File `s0704para.out' has not changed.
+(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 1114.
+ )
+Here is how much of TeX's memory you used:
+ 6969 strings out of 495145
+ 102648 string characters out of 6183910
+ 267756 words of memory out of 5000000
+ 9857 multiletter control sequences out of 15000+600000
+ 16967 words of font info for 77 fonts, out of 8000000 for 9000
+ 14 hyphenation exceptions out of 8191
+ 28i,12n,35p,321b,331s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on s0704para.dvi (58 pages, 1204728 bytes).
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.out b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.out
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.out
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.pdf
new file mode 100644
index 00000000..6ce0ffaf
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.tex
new file mode 100644
index 00000000..2821ce57
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.tex
@@ -0,0 +1,1114 @@
+%%% タイトル s0704para
+\documentclass[landscape,10pt]{ujarticle}
+\special{papersize=\the\paperwidth,\the\paperheight}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide}
+\usepackage{amsmath,amssymb}
+\usepackage{bm,enumerate}
+\usepackage[dvipdfmx]{graphicx}
+\usepackage{xcolor}
+\definecolor{slidecolora}{cmyk}{0.98,0.13,0,0.43}
+\definecolor{slidecolorb}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolorc}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolord}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolore}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolorf}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolori}{cmyk}{0.98,0.13,0,0.43}
+\def\setthin#1{\def\thin{#1}}
+\setthin{0.1}
+\usepackage[dvipdfmx,colorlinks=true,linkcolor=blue,filecolor=blue]{hyperref}
+\ketmarginJ
+\ketslideinit
+
+\pagestyle{headings}
+
+\begin{document}
+
+\begin{layer}{120}{0}
+\putnotese{0}{0}{\input{fig/slide0.tex}}
+\end{layer}
+
+\def\mainslidetitley{22}
+\def\ketcletter{slidecolora}
+\def\ketcbox{slidecolorb}
+\def\ketdbox{slidecolorc}
+\def\ketcframe{slidecolord}
+\def\ketcshadow{slidecolore}
+\def\ketdshadow{slidecolorf}
+\def\slidetitlex{6}
+\def\slidetitlesize{1.3}
+\def\mketcletter{slidecolori}
+\def\mketcbox{yellow}
+\def\mketdbox{yellow}
+\def\mketcframe{yellow}
+\def\mslidetitlex{62}
+\def\mslidetitlesize{2}
+
+\color{black}
+\Large\bf\boldmath
+\thispagestyle{empty}
+\addtocounter{page}{-1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{極座標ã¨æ›²ç·š(Flip)}
+
+\vspace*{18mm}
+
+\hypertarget{para1pg1}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p001.tex}}}
+\putnotew{96}{70}{\hyperlink{para0pg0}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para0pg0}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para0pg0}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg4}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 1/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg2}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p002.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 2/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg3}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p003.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg4}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg6}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 3/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg4}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p004.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg7}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 4/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg5}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p005.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg2}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg4}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg6}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg8}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 5/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg6}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p006.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg7}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg9}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 6/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg7}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p007.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg4}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg6}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg8}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg10}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 7/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg8}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p008.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg7}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg9}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg11}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 8/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg9}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p009.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg6}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg8}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg10}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg12}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 9/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg10}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p010.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg7}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg9}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg11}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg13}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 10/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg11}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p011.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg8}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg10}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg12}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg14}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 11/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg12}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p012.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg9}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg11}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg13}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg15}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 12/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg13}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p013.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg10}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg12}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg14}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg16}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 13/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg14}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p014.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg11}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg13}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg15}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg17}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 14/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg15}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p015.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg12}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg14}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg16}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg18}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 15/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg16}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p016.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg13}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg15}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg17}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg19}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 16/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg17}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p017.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg14}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg16}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg18}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg20}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 17/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg18}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p018.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg15}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg17}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg19}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg21}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 18/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg19}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p019.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg16}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg18}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg20}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg22}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 19/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg20}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p020.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg17}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg19}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg21}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg23}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 20/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg21}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p021.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg18}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg20}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg22}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg24}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 21/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg22}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p022.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg19}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg21}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg23}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg25}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 22/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg23}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p023.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg20}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg22}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg24}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 23/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg24}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p024.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg21}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg23}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg25}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 24/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg25}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p025.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg22}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg24}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 25/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg26}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\scalebox{1.2}{\input{fig/pointoncircle/p026.tex}}}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg23}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg25}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 26/26}
+\end{layer}
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\
+
+\newslide{グラフã®å¹³è¡Œç§»å‹•}
+
+\vspace*{18mm}
+
+\hypertarget{para2pg1}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p001.tex}}
+\putnotew{96}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg26}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 1/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg2}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p002.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 2/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg3}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p003.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 3/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg4}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p004.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 4/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg5}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p005.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg2}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 5/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg6}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p006.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 6/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg7}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p007.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 7/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg8}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p008.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 8/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg9}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p009.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 9/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg10}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p010.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 10/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg11}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p011.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 11/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg12}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p012.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 12/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg13}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p013.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 13/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg14}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p014.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 14/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg15}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p015.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 15/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg16}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p016.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 16/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg17}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p017.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 17/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg18}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p018.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 18/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg19}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p019.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 19/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg20}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p020.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 20/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg21}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p021.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 21/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg22}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p022.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 22/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg23}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p023.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 23/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg24}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p024.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg27}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 24/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg25}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p025.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg28}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 25/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg26}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p026.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg27}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg29}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 26/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg27}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p027.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg28}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg30}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 27/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg28}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p028.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg27}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg29}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 28/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg29}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p029.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg28}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg30}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 29/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg30}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p030.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg27}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg29}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg31}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 30/31}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg31}{}
+
+\begin{layer}{120}{0}
+\putnotes{63}{10}{\input{fig/sinecurve/p031.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg28}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg30}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para3pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para3pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para3pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 31/31}
+\end{layer}
+
+
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.txt
new file mode 100644
index 00000000..d35f6613
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0704para.txt
@@ -0,0 +1,13 @@
+%タイトル::slide0::kabegami//
+タイトル::slide0//
+
+%%%%%%%%%%%%%%%%//
+new::極座標ã¨æ›²ç·š(Flip)//
+%repeat=,para=pointoncircle:{0}:s{85}{10}:input:1.2//
+
+$r=2$を満ãŸã™ç‚¹ã®è»Œè·¡ã¯ï¼Ÿ\\//
+%[31]::\hspace{20mm}円ã«ãªã‚‹//
+
+%%%%%%%%%%%%%%%%//
+new::グラフã®å¹³è¡Œç§»å‹•//
+%repeat=,para=sinecurve:{0}:s{63}{10}:input//
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.aux b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.aux
new file mode 100644
index 00000000..051947ba
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.aux
@@ -0,0 +1,55 @@
+\relax
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand*\HyPL@Entry[1]{}
+\HyPL@Entry{0<</P(0)>>}
+\HyPL@Entry{1<</S/D>>}
+\HyPL@Entry{4<</S/D /St 3>>}
+\HyPL@Entry{5<</S/D /St 3>>}
+\HyPL@Entry{7<</S/D /St 4>>}
+\HyPL@Entry{8<</S/D /St 4>>}
+\HyPL@Entry{9<</S/D /St 4>>}
+\HyPL@Entry{11<</S/D /St 5>>}
+\HyPL@Entry{12<</S/D /St 5>>}
+\HyPL@Entry{13<</S/D /St 5>>}
+\HyPL@Entry{14<</S/D /St 5>>}
+\HyPL@Entry{17<</S/D /St 7>>}
+\HyPL@Entry{18<</S/D /St 7>>}
+\HyPL@Entry{20<</S/D /St 8>>}
+\HyPL@Entry{21<</S/D /St 8>>}
+\HyPL@Entry{22<</S/D /St 8>>}
+\HyPL@Entry{23<</S/D /St 8>>}
+\HyPL@Entry{24<</S/D /St 8>>}
+\HyPL@Entry{25<</S/D /St 8>>}
+\HyPL@Entry{26<</S/D /St 8>>}
+\HyPL@Entry{27<</S/D /St 8>>}
+\HyPL@Entry{28<</S/D /St 8>>}
+\HyPL@Entry{29<</S/D /St 8>>}
+\HyPL@Entry{30<</S/D /St 8>>}
+\HyPL@Entry{31<</S/D /St 8>>}
+\HyPL@Entry{32<</S/D /St 8>>}
+\HyPL@Entry{33<</S/D /St 8>>}
+\HyPL@Entry{34<</S/D /St 8>>}
+\HyPL@Entry{35<</S/D /St 8>>}
+\HyPL@Entry{36<</S/D /St 8>>}
+\HyPL@Entry{37<</S/D /St 8>>}
+\HyPL@Entry{38<</S/D /St 8>>}
+\HyPL@Entry{39<</S/D /St 8>>}
+\HyPL@Entry{40<</S/D /St 8>>}
+\HyPL@Entry{41<</S/D /St 8>>}
+\HyPL@Entry{42<</S/D /St 8>>}
+\HyPL@Entry{43<</S/D /St 8>>}
+\HyPL@Entry{44<</S/D /St 8>>}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.cdy
new file mode 100755
index 00000000..1377b5fd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.log b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.log
new file mode 100644
index 00000000..c929dc47
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.log
@@ -0,0 +1,628 @@
+This is e-upTeX, Version 3.14159265-p3.7-u1.21-160201-2.6 (utf8.uptex) (TeX Live 2016) (preloaded format=uplatex 2017.8.18) 24 AUG 2017 14:36
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**s0705thin.tex
+(./s0705thin.tex
+pLaTeX2e <2016/11/29u01> (based on LaTeX2e <2017/01/01> patch level 3)
+Babel <3.9r> and hyphenation patterns for 3 language(s) loaded.
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujarticle.cls
+Document Class: ujarticle 2016/11/22 v1.7b-u00 Standard upLaTeX class
+\c@@paper=\count82
+(/Applications/kettex/texlive/texmf-dist/tex/uplatex/base/ujsize10.clo
+File: ujsize10.clo 2016/11/22 v1.7b-u00 Standard upLaTeX file (size option)
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 9.6222pt on input line 28.
+)
+\c@part=\count83
+\c@section=\count84
+\c@subsection=\count85
+\c@subsubsection=\count86
+\c@paragraph=\count87
+\c@subparagraph=\count88
+\c@figure=\count89
+\c@table=\count90
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\symmincho=\mathgroup4
+LaTeX Font Info: Overwriting symbol font `mincho' in version `bold'
+(Font) JY2/mc/m/n --> JY2/gt/m/n on input line 580.
+\toclineskip=\dimen118
+\@lnumwidth=\dimen119
+\bibindent=\dimen120
+\heisei=\count91
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic.sty
+\c@ketpicctra=\count92
+\c@ketpicctrb=\count93
+\c@ketpicctrc=\count94
+\c@ketpicctrd=\count95
+\c@ketpicctre=\count96
+\c@ketpicctrf=\count97
+\c@ketpicctrg=\count98
+\c@ketpicctrh=\count99
+\c@ketpicctri=\count100
+\c@ketpicctrj=\count101
+\Width=\skip43
+\Height=\skip44
+\Depth=\skip45
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer.sty
+\layercurrentunit=\skip46
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide.sty)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2016/11/05 v2.16a AMS math features
+\@mathmargin=\skip47
+
+For additional information on amsmath, use the `?' option.
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01 AMS text
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0 generic functions
+\@emptytoks=\toks15
+\ex@=\dimen121
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d Bold Symbols
+\pmbraise@=\dimen122
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 2016/03/08 v2.02 operator names
+)
+\inf@bad=\count102
+LaTeX Info: Redefining \frac on input line 213.
+\uproot@=\count103
+\leftroot@=\count104
+LaTeX Info: Redefining \overline on input line 375.
+\classnum@=\count105
+\DOTSCASE@=\count106
+LaTeX Info: Redefining \ldots on input line 472.
+LaTeX Info: Redefining \dots on input line 475.
+LaTeX Info: Redefining \cdots on input line 596.
+\Mathstrutbox@=\box41
+\strutbox@=\box42
+\big@size=\dimen123
+LaTeX Font Info: Redeclaring font encoding OML on input line 712.
+LaTeX Font Info: Redeclaring font encoding OMS on input line 713.
+\macc@depth=\count107
+\c@MaxMatrixCols=\count108
+\dotsspace@=\muskip10
+\c@parentequation=\count109
+\dspbrk@lvl=\count110
+\tag@help=\toks16
+\row@=\count111
+\column@=\count112
+\maxfields@=\count113
+\andhelp@=\toks17
+\eqnshift@=\dimen124
+\alignsep@=\dimen125
+\tagshift@=\dimen126
+\tagwidth@=\dimen127
+\totwidth@=\dimen128
+\lineht@=\dimen129
+\@envbody=\toks18
+\multlinegap=\skip48
+\multlinetaggap=\skip49
+\mathdisplay@stack=\toks19
+LaTeX Info: Redefining \[ on input line 2817.
+LaTeX Info: Redefining \] on input line 2818.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\symAMSa=\mathgroup5
+\symAMSb=\mathgroup6
+LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
+(Font) U/euf/m/n --> U/euf/b/n on input line 106.
+))
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/bm.sty
+Package: bm 2017/01/16 v1.2c Bold Symbol Support (DPC/FMi)
+\symboldoperators=\mathgroup7
+\symboldletters=\mathgroup8
+\symboldsymbols=\mathgroup9
+\symboldmincho=\mathgroup10
+LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 141.
+LaTeX Info: Redefining \bm on input line 207.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/tools/enumerate.sty
+Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC)
+\@enLab=\toks20
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks21
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2016/10/09 v1.0u Standard LaTeX Graphics (DPC,SPQR)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration
+)
+Package graphics Info: Driver file: dvipdfmx.def on input line 99.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvipdfmx.def
+File: dvipdfmx.def 2016/07/11 v4.12 LaTeX color/graphics driver for dvipdfmx (L
+3/ChoF)
+))
+\Gin@req@height=\dimen130
+\Gin@req@width=\dimen131
+) (/Applications/kettex/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty
+Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK)
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package xcolor Info: Driver file: dvips.def on input line 225.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/graphics-def/dvips.def
+File: dvips.def 2016/07/10 v3.1a Driver-dependent file (DPC,SPQR)
+)
+Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348.
+Package xcolor Info: Model `RGB' extended on input line 1364.
+Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366.
+Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367.
+Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368.
+Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369.
+Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370.
+Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371.
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2017/03/14 v6.85a Hypertext links for LaTeX
+
+(/Applications/kettex/texlive/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.s
+ty
+Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
+
+
+(/Applications/kettex/texlive/texmf-dist/tex/generic/oberdiek/hobsub-generic.st
+y
+Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
+Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
+Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
+Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
+Package ifvtex Info: VTeX not detected.
+Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
+Package: ifpdf 2017/03/15 v3.2 Provides the ifpdf switch
+Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
+Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
+Package: pdftexcmds 2017/03/19 v0.25 Utility functions of pdfTeX for LuaTeX (HO
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: pdfTeX >= 1.30 not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode not found.
+Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
+Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
+)
+Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
+Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
+)
+Package hobsub Info: Skipping package `hobsub' (already loaded).
+Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
+Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
+Package: xcolor-patch 2016/05/16 xcolor patch
+Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
+Package atveryend Info: \enddocument detected (standard20110627).
+Package: atbegshi 2016/06/09 v1.18 At begin shipout hook (HO)
+Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
+Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
+) (/Applications/kettex/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/oberdiek/auxhook.sty
+Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
+)
+(/Applications/kettex/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
+)
+\@linkdim=\dimen132
+\Hy@linkcounter=\count114
+\Hy@pagecounter=\count115
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2017/03/14 v6.85a Hyperref: PDFDocEncoding definition (HO)
+)
+\Hy@SavedSpaceFactor=\count116
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 4374.
+Package hyperref Info: Hyper figures OFF on input line 4498.
+Package hyperref Info: Link nesting OFF on input line 4503.
+Package hyperref Info: Hyper index ON on input line 4506.
+Package hyperref Info: Plain pages OFF on input line 4513.
+Package hyperref Info: Backreferencing OFF on input line 4518.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4751.
+\c@Hy@tempcnt=\count117
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip11
+Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 5104.
+\XeTeXLinkMargin=\dimen133
+\Fld@menulength=\count118
+\Field@Width=\dimen134
+\Fld@charsize=\dimen135
+Package hyperref Info: Hyper figures OFF on input line 6358.
+Package hyperref Info: Link nesting OFF on input line 6363.
+Package hyperref Info: Hyper index ON on input line 6366.
+Package hyperref Info: backreferencing OFF on input line 6373.
+Package hyperref Info: Link coloring ON on input line 6376.
+Package hyperref Info: Link coloring with OCG OFF on input line 6383.
+Package hyperref Info: PDF/A mode OFF on input line 6388.
+LaTeX Info: Redefining \ref on input line 6428.
+LaTeX Info: Redefining \pageref on input line 6432.
+\Hy@abspage=\count119
+\c@Item=\count120
+\c@Hfootnote=\count121
+)
+
+Package hyperref Message: Driver: hdvipdfm.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/hdvipdfm.def
+File: hdvipdfm.def 2017/03/14 v6.85a Hyperref driver for dvipdfm
+\pdfm@box=\box43
+\c@Hy@AnnotLevel=\count122
+\HyField@AnnotCount=\count123
+\Fld@listcount=\count124
+\c@bookmark@seq@number=\count125
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
+Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+82.
+)
+\Hy@SectionHShift=\skip50
+) (./s0705thin.aux)
+\openout1 = `s0705thin.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for JY2/mc/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for JT2/mc/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 24.
+LaTeX Font Info: ... okay on input line 24.
+\AtBeginShipoutBox=\box44
+Package hyperref Info: Link coloring ON on input line 24.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2016/05/21 v2.44 Cross-referencing by name of section
+
+(/Applications/kettex/texlive/texmf-dist/tex/generic/oberdiek/gettitlestring.st
+y
+Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
+)
+\c@section@level=\count126
+)
+LaTeX Info: Redefining \ref on input line 24.
+LaTeX Info: Redefining \pageref on input line 24.
+LaTeX Info: Redefining \nameref on input line 24.
+ (./s0705thin.out) (./s0705thin.out)
+\@outlinefile=\write3
+\openout3 = `s0705thin.out'.
+
+ (./fig/slide0.tex
+LaTeX Font Info: Font shape `JT2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JY2/mc/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 13.85594pt on input line 1.
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 23.94002pt on input line 5.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 23.94002pt on input line 5.
+) (./fig/slide0.tex)
+(./fig/slide0.tex) (./fig/slide0.tex) [0
+
+]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1]
+LaTeX Font Info: Try loading font information for OMS+cmr on input line 67.
+ (/Applications/kettex/texlive/texmf-dist/tex/latex/base/omscmr.fd
+File: omscmr.fd 2014/09/29 v2.5h Standard LaTeX font definitions
+)
+LaTeX Font Info: Font shape `OMS/cmr/bx/n' in size <14.4> not available
+(Font) Font shape `OMS/cmsy/b/n' tried instead on input line 67.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[2]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[3]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[3]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[3]
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 9.6222pt on input line 126.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 6.73553pt on input line 126.
+LaTeX Font Info: Try loading font information for U+msa on input line 126.
+ (/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info: Try loading font information for U+msb on input line 126.
+
+(/Applications/kettex/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[4]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[4]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[4]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[4]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[5]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[5]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[5]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[5]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[5]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[6]
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <7> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 324.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 6.73553pt on input line 324.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <7> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 324.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 6.73553pt on input line 324.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 4.8111pt on input line 324.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[7]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[7]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[7] (./fig/pointoncircle/p001.tex
+LaTeX Font Info: Font shape `JT2/mc/bx/n' in size <9> not available
+(Font) Font shape `JT2/gt/m/n' tried instead on input line 8.
+LaTeX Font Info: Font shape `JT2/gt/m/n' will be
+(Font) scaled to size 8.65997pt on input line 8.
+LaTeX Font Info: Font shape `JY2/mc/bx/n' in size <9> not available
+(Font) Font shape `JY2/gt/m/n' tried instead on input line 8.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 8.65997pt on input line 8.
+LaTeX Font Info: Font shape `JY2/gt/m/n' will be
+(Font) scaled to size 5.77332pt on input line 22.
+) (./fig/pointoncircle/p001.tex)
+(./fig/pointoncircle/p001.tex) (./fig/pointoncircle/p001.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p002.tex) (./fig/pointoncircle/p002.tex)
+(./fig/pointoncircle/p002.tex) (./fig/pointoncircle/p002.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p003.tex) (./fig/pointoncircle/p003.tex)
+(./fig/pointoncircle/p003.tex) (./fig/pointoncircle/p003.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p004.tex) (./fig/pointoncircle/p004.tex)
+(./fig/pointoncircle/p004.tex) (./fig/pointoncircle/p004.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p005.tex) (./fig/pointoncircle/p005.tex)
+(./fig/pointoncircle/p005.tex) (./fig/pointoncircle/p005.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p006.tex) (./fig/pointoncircle/p006.tex)
+(./fig/pointoncircle/p006.tex) (./fig/pointoncircle/p006.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p007.tex) (./fig/pointoncircle/p007.tex)
+(./fig/pointoncircle/p007.tex) (./fig/pointoncircle/p007.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p008.tex) (./fig/pointoncircle/p008.tex)
+(./fig/pointoncircle/p008.tex) (./fig/pointoncircle/p008.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p009.tex) (./fig/pointoncircle/p009.tex)
+(./fig/pointoncircle/p009.tex) (./fig/pointoncircle/p009.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p010.tex) (./fig/pointoncircle/p010.tex)
+(./fig/pointoncircle/p010.tex) (./fig/pointoncircle/p010.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p011.tex) (./fig/pointoncircle/p011.tex)
+(./fig/pointoncircle/p011.tex) (./fig/pointoncircle/p011.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p012.tex) (./fig/pointoncircle/p012.tex)
+(./fig/pointoncircle/p012.tex) (./fig/pointoncircle/p012.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p013.tex) (./fig/pointoncircle/p013.tex)
+(./fig/pointoncircle/p013.tex) (./fig/pointoncircle/p013.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p014.tex) (./fig/pointoncircle/p014.tex)
+(./fig/pointoncircle/p014.tex) (./fig/pointoncircle/p014.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p015.tex) (./fig/pointoncircle/p015.tex)
+(./fig/pointoncircle/p015.tex) (./fig/pointoncircle/p015.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p016.tex) (./fig/pointoncircle/p016.tex)
+(./fig/pointoncircle/p016.tex) (./fig/pointoncircle/p016.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p017.tex) (./fig/pointoncircle/p017.tex)
+(./fig/pointoncircle/p017.tex) (./fig/pointoncircle/p017.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p018.tex) (./fig/pointoncircle/p018.tex)
+(./fig/pointoncircle/p018.tex) (./fig/pointoncircle/p018.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p019.tex) (./fig/pointoncircle/p019.tex)
+(./fig/pointoncircle/p019.tex) (./fig/pointoncircle/p019.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p020.tex) (./fig/pointoncircle/p020.tex)
+(./fig/pointoncircle/p020.tex) (./fig/pointoncircle/p020.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p021.tex) (./fig/pointoncircle/p021.tex)
+(./fig/pointoncircle/p021.tex) (./fig/pointoncircle/p021.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p022.tex) (./fig/pointoncircle/p022.tex)
+(./fig/pointoncircle/p022.tex) (./fig/pointoncircle/p022.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p023.tex) (./fig/pointoncircle/p023.tex)
+(./fig/pointoncircle/p023.tex) (./fig/pointoncircle/p023.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p024.tex) (./fig/pointoncircle/p024.tex)
+(./fig/pointoncircle/p024.tex) (./fig/pointoncircle/p024.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p025.tex) (./fig/pointoncircle/p025.tex)
+(./fig/pointoncircle/p025.tex) (./fig/pointoncircle/p025.tex)
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8] (./fig/pointoncircle/p026.tex) (./fig/pointoncircle/p026.tex)
+(./fig/pointoncircle/p026.tex) (./fig/pointoncircle/p026.tex)
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 871.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[8]
+Package atveryend Info: Empty hook `AfterLastShipout' on input line 871.
+ (./s0705thin.aux)
+Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 871.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 871.
+Package rerunfilecheck Info: File `s0705thin.out' has not changed.
+(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 871.
+ )
+Here is how much of TeX's memory you used:
+ 6733 strings out of 495145
+ 97267 string characters out of 6183910
+ 268652 words of memory out of 5000000
+ 9870 multiletter control sequences out of 15000+600000
+ 17136 words of font info for 78 fonts, out of 8000000 for 9000
+ 14 hyphenation exceptions out of 8191
+ 28i,12n,35p,321b,331s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on s0705thin.dvi (45 pages, 752432 bytes).
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.out b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.out
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.out
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.pdf
new file mode 100644
index 00000000..09274a33
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.tex
new file mode 100644
index 00000000..3abf9c70
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.tex
@@ -0,0 +1,871 @@
+%%% タイトル s0705thin
+\documentclass[landscape,10pt]{ujarticle}
+\special{papersize=\the\paperwidth,\the\paperheight}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide}
+\usepackage{amsmath,amssymb}
+\usepackage{bm,enumerate}
+\usepackage[dvipdfmx]{graphicx}
+\usepackage{xcolor}
+\definecolor{slidecolorb}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolorc}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolord}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolore}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolorf}{cmyk}{0,0,0,0.5}
+\def\setthin#1{\def\thin{#1}}
+\setthin{0.1}
+\usepackage[dvipdfmx,colorlinks=true,linkcolor=blue,filecolor=blue]{hyperref}
+\ketmarginJ
+\ketslideinit
+
+\pagestyle{headings}
+
+\begin{document}
+
+\begin{layer}{120}{0}
+\putnotese{0}{0}{\input{fig/slide0.tex}}
+\end{layer}
+
+\def\mainslidetitley{22}
+\def\ketcletter{black}
+\def\ketcbox{slidecolorb}
+\def\ketdbox{slidecolorc}
+\def\ketcframe{slidecolord}
+\def\ketcshadow{slidecolore}
+\def\ketdshadow{slidecolorf}
+\def\slidetitlex{6}
+\def\slidetitlesize{1.3}
+\def\mketcletter{black}
+\def\mketcbox{yellow}
+\def\mketdbox{yellow}
+\def\mketcframe{yellow}
+\def\mslidetitlex{62}
+\def\mslidetitlesize{2}
+
+\color{black}
+\Large\bf\boldmath
+\thispagestyle{empty}
+\addtocounter{page}{-1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\mainslide{メインスライド1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{ç”»é¢ä¸Šã®ãƒœã‚¿ãƒ³}
+
+\vspace*{18mm}
+
+\begin{itemize}
+\item
+\Ltab{20mm}{Figure}é™æ­¢ç”»ï¼ˆFhead+".tex")をfigã«ä½œæˆ
+\item
+\Ltab{20mm}{Title}タイトル(デフォルトã¯slide0)ã‚’figã«ä½œæˆ
+\item
+\Ltab{20mm}{ParaF}パラパラ動画フォルダを作æˆ\\
+\Ltab{25mm}{}Setparaã§å¼•æ•°ã‚’書ã„ã¦ãŠã
+\item
+\Ltab{20mm}{Slide}Texparent+".txt"ã‹ã‚‰ã‚¹ãƒ©ã‚¤ãƒ‰ã‚’作æˆ
+\item
+\Ltab{20mm}{Sum}Summaryã®PDFを作æˆ
+\end{itemize}
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{enumerate環境ã®ä½¿ã„æ–¹}
+
+\vspace*{18mm}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\begin{enumerate}[(1)]
+\item
+番å·ã‚’変ãˆã‚‹ã«ã¯ï¼Œä¾‹ãˆã° [(1)]
+\end{enumerate}
+
+\sameslide
+
+\vspace*{18mm}
+
+\begin{enumerate}[(1)]
+\item
+番å·ã‚’変ãˆã‚‹ã«ã¯ï¼Œä¾‹ãˆã° [(1)]
+\item
+表示ページã¯ãƒªã‚¹ãƒˆã§ä¸Žãˆã‚‹\\
+\hspace*{10mm}[1],\ [1,-],\ [1..3],\ [1..3,6]ãªã©
+\end{enumerate}
+
+\newslide{薄文字ã®ä½¿ã„æ–¹}
+
+\vspace*{18mm}
+
+\begin{itemize}
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+Setslidebodyã®3番目ã®å¼•æ•°ã§æ¿ƒã•ã‚’変更\\
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\hspace*{10mm}\verb|Setslidebody(["","",0.2]);|
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+デフォルトã¯$0.1$
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+リストã®ãƒšãƒ¼ã‚¸ä»¥å¤–ãŒè–„文字ã«ãªã‚‹
+}%
+\end{itemize}
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\begin{itemize}
+\item
+Setslidebodyã®3番目ã®å¼•æ•°ã§æ¿ƒã•ã‚’変更\\
+\hspace*{10mm}\verb|Setslidebody(["","",0.2]);|
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+デフォルトã¯$0.1$
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+リストã®ãƒšãƒ¼ã‚¸ä»¥å¤–ãŒè–„文字ã«ãªã‚‹
+}%
+\end{itemize}
+
+\sameslide
+
+\vspace*{18mm}
+
+\begin{itemize}
+\item
+Setslidebodyã®3番目ã®å¼•æ•°ã§æ¿ƒã•ã‚’変更\\
+\hspace*{10mm}\verb|Setslidebody(["","",0.2]);|
+\item
+デフォルトã¯$0.1$
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+リストã®ãƒšãƒ¼ã‚¸ä»¥å¤–ãŒè–„文字ã«ãªã‚‹
+}%
+\end{itemize}
+
+\sameslide
+
+\vspace*{18mm}
+
+\begin{itemize}
+\item
+Setslidebodyã®3番目ã®å¼•æ•°ã§æ¿ƒã•ã‚’変更\\
+\hspace*{10mm}\verb|Setslidebody(["","",0.2]);|
+\item
+デフォルトã¯$0.1$
+\item
+リストã®ãƒšãƒ¼ã‚¸ä»¥å¤–ãŒè–„文字ã«ãªã‚‹
+\end{itemize}
+
+\newslide{layerã®ä½¿ã„æ–¹}
+
+\vspace*{18mm}
+
+\setthin{0}
+\begin{itemize}
+\item
+layerã®å§‹ã¾ã‚Šã¯\verb+layer+{:}{:}\verb+{120}{0}+
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+layerã®çµ‚ã‚ã‚Šã¯\verb|end|
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+図ã¯\verb+putnote+{:}{:}\verb+se{80}{5}+{:}{:}\verb+grf+
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+図ã®ã‚µã‚¤ã‚ºã‚’変ãˆã‚‹ã¨ãã¯\\
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\hspace*{10mm}{:}{:}\verb+grf,0.8+
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+通常ã®\verb|\putnote|文も使ãˆã‚‹
+}%
+\end{itemize}
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\setthin{0}
+\begin{itemize}
+\item
+layerã®å§‹ã¾ã‚Šã¯\verb+layer+{:}{:}\verb+{120}{0}+
+\item
+layerã®çµ‚ã‚ã‚Šã¯\verb|end|
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+図ã¯\verb+putnote+{:}{:}\verb+se{80}{5}+{:}{:}\verb+grf+
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+図ã®ã‚µã‚¤ã‚ºã‚’変ãˆã‚‹ã¨ãã¯\\
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\hspace*{10mm}{:}{:}\verb+grf,0.8+
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+通常ã®\verb|\putnote|文も使ãˆã‚‹
+}%
+\end{itemize}
+
+\sameslide
+
+\vspace*{18mm}
+
+\setthin{0}
+\begin{itemize}
+\item
+layerã®å§‹ã¾ã‚Šã¯\verb+layer+{:}{:}\verb+{120}{0}+
+\item
+layerã®çµ‚ã‚ã‚Šã¯\verb|end|
+\item
+図ã¯\verb+putnote+{:}{:}\verb+se{80}{5}+{:}{:}\verb+grf+
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+図ã®ã‚µã‚¤ã‚ºã‚’変ãˆã‚‹ã¨ãã¯\\
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\hspace*{10mm}{:}{:}\verb+grf,0.8+
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+通常ã®\verb|\putnote|文も使ãˆã‚‹
+}%
+\end{itemize}
+
+\sameslide
+
+\vspace*{18mm}
+
+\setthin{0}
+\begin{itemize}
+\item
+layerã®å§‹ã¾ã‚Šã¯\verb+layer+{:}{:}\verb+{120}{0}+
+\item
+layerã®çµ‚ã‚ã‚Šã¯\verb|end|
+\item
+図ã¯\verb+putnote+{:}{:}\verb+se{80}{5}+{:}{:}\verb+grf+
+\item
+図ã®ã‚µã‚¤ã‚ºã‚’変ãˆã‚‹ã¨ãã¯\\
+\hspace*{10mm}{:}{:}\verb+grf,0.8+
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+通常ã®\verb|\putnote|文も使ãˆã‚‹
+}%
+\end{itemize}
+
+\sameslide
+
+\vspace*{18mm}
+
+\setthin{0}
+\begin{itemize}
+\item
+layerã®å§‹ã¾ã‚Šã¯\verb+layer+{:}{:}\verb+{120}{0}+
+\item
+layerã®çµ‚ã‚ã‚Šã¯\verb|end|
+\item
+図ã¯\verb+putnote+{:}{:}\verb+se{80}{5}+{:}{:}\verb+grf+
+\item
+図ã®ã‚µã‚¤ã‚ºã‚’変ãˆã‚‹ã¨ãã¯\\
+\hspace*{10mm}{:}{:}\verb+grf,0.8+
+\item
+通常ã®\verb|\putnote|文も使ãˆã‚‹
+\end{itemize}
+
+\mainslide{メインスライド2}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{コントローラã®è¡¨ç¤º}
+
+\vspace*{18mm}
+
+\hypertarget{para1pg1}{}
+
+\begin{layer}{120}{0}
+\putnotew{96}{70}{\hyperlink{para0pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para0pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para0pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 1/3}
+\end{layer}
+
+\begin{itemize}
+\item
+スクリプトã«\verb|Setlidehyper();|を入れる
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+\verb|%repeat=n,para|ã¨ã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã‚‹
+}%
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+パラパラ動画ã®ã¨ãã¯è‡ªå‹•çš„ã«è¡¨ç¤º
+}%
+\end{itemize}
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg2}{}
+
+\begin{layer}{120}{0}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 2/3}
+\end{layer}
+
+\begin{itemize}
+\item
+スクリプトã«\verb|Setlidehyper();|を入れる
+\item
+\verb|%repeat=n,para|ã¨ã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã‚‹
+{\color[cmyk]{\thin,\thin,\thin,\thin}
+\item
+パラパラ動画ã®ã¨ãã¯è‡ªå‹•çš„ã«è¡¨ç¤º
+}%
+\end{itemize}
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para1pg3}{}
+
+\begin{layer}{120}{0}
+\putnotew{96}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 3/3}
+\end{layer}
+
+\begin{itemize}
+\item
+スクリプトã«\verb|Setlidehyper();|を入れる
+\item
+\verb|%repeat=n,para|ã¨ã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã‚‹
+\item
+パラパラ動画ã®ã¨ãã¯è‡ªå‹•çš„ã«è¡¨ç¤º
+\end{itemize}
+
+\newslide{パラパラ動画}
+
+\vspace*{18mm}
+
+\hypertarget{para2pg1}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p001.tex}}
+\putnotew{96}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para1pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 1/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg2}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p002.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 2/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg3}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p003.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg2}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 3/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg4}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p004.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg3}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 4/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg5}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p005.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg2}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 5/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg6}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p006.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg3}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 6/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg7}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p007.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg4}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 7/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg8}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p008.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg5}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 8/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg9}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p009.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg6}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 9/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg10}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p010.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg7}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 10/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg11}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p011.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg8}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 11/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg12}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p012.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg9}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 12/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg13}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p013.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg10}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 13/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg14}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p014.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg11}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 14/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg15}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p015.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg12}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 15/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg16}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p016.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg13}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 16/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg17}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p017.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg14}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 17/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg18}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p018.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg15}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 18/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg19}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p019.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg16}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 19/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg20}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p020.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg17}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 20/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg21}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p021.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg18}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 21/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg22}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p022.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg19}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 22/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg23}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p023.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg20}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 23/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg24}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p024.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg21}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 24/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg25}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p025.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg22}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg24}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para2pg26}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 25/26}
+\end{layer}
+
+
+\sameslide
+
+\vspace*{18mm}
+
+\hypertarget{para2pg26}{}
+
+\begin{layer}{120}{0}
+\putnotes{85}{10}{\input{fig/pointoncircle/p026.tex}}
+\putnotew{96}{70}{\hyperlink{para2pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut|\!\lhd$}}}}}
+\putnotew{101}{70}{\hyperlink{para2pg23}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}
+\putnotew{108}{70}{\hyperlink{para2pg25}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}
+\putnotew{115}{70}{\hyperlink{para3pg1}{\fbox{\Ctab{4.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\rhd\!$}}}}}
+\putnotew{120}{70}{\hyperlink{para3pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}
+\putnotew{125}{70}{\hyperlink{para3pg1}{\fbox{\Ctab{2.5mm}{\scalebox{1}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}
+\putnotew{125}{76}{\scriptsize\color{black} 26/26}
+\end{layer}
+
+
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.txt
new file mode 100644
index 00000000..5ae018b0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0705thin.txt
@@ -0,0 +1,71 @@
+%タイトル::slide0::kabegami//
+タイトル::slide0//
+
+%%%%%%%%%%%%%%%%//
+main::メインスライド1//
+
+%%%%%%%%%%%%%%%%//
+new::ç”»é¢ä¸Šã®ãƒœã‚¿ãƒ³//
+
+itemize//
+item::\Ltab{20mm}{Figure}é™æ­¢ç”»ï¼ˆFhead+".tex")をfigã«ä½œæˆ//
+item::\Ltab{20mm}{Title}タイトル(デフォルトã¯slide0)ã‚’figã«ä½œæˆ//
+item::\Ltab{20mm}{ParaF}パラパラ動画フォルダを作æˆ\\//
+\Ltab{25mm}{}Setparaã§å¼•æ•°ã‚’書ã„ã¦ãŠã//
+item::\Ltab{20mm}{Slide}Texparent+".txt"ã‹ã‚‰ã‚¹ãƒ©ã‚¤ãƒ‰ã‚’作æˆ//
+item::\Ltab{20mm}{Sum}Summaryã®PDFを作æˆ//
+end//
+
+%%%%%%%%%%%%%%%%//
+new::enumerate環境ã®ä½¿ã„æ–¹//
+%repeat=3//
+
+%[2,-]::enumerate::[(1)]//
+%[2,-]::item::番å·ã‚’変ãˆã‚‹ã«ã¯ï¼Œä¾‹ãˆã° [(1)]//
+%[3,-]::item::表示ページã¯ãƒªã‚¹ãƒˆã§ä¸Žãˆã‚‹\\//
+%[3,-]::\hspace*{10mm}[1],\ [1,-],\ [1..3],\ [1..3,6]ãªã©//
+%[2,- ]::end//
+
+%%%%%%%%%%%%%%%%//
+new::薄文字ã®ä½¿ã„æ–¹//
+%repeat=4//
+
+itemize//
+%thin[2,-]::item::Setslidebodyã®3番目ã®å¼•æ•°ã§æ¿ƒã•ã‚’変更\\//
+%thin[2,-]::\hspace*{10mm}\verb|Setslidebody(["","",0.2]);|//
+%thin[3,-]::item::デフォルトã¯$0.1$//
+%thin[4]::item::リストã®ãƒšãƒ¼ã‚¸ä»¥å¤–ãŒè–„文字ã«ãªã‚‹//
+end//
+
+%%%%%%%%%%%%%%%%//
+new::layerã®ä½¿ã„æ–¹//
+%repeat=5//
+
+\setthin{0}//
+
+itemize//
+%thin[1,-]::item::layerã®å§‹ã¾ã‚Šã¯\verb+layer+{:}{:}\verb+{120}{0}+//
+%thin[2,-]::item::layerã®çµ‚ã‚ã‚Šã¯\verb|end|//
+%thin[3,-]::item::図ã¯\verb+putnote+{:}{:}\verb+se{80}{5}+{:}{:}\verb+grf+//
+%thin[4,-]::item::図ã®ã‚µã‚¤ã‚ºã‚’変ãˆã‚‹ã¨ãã¯\\//
+%thin[4,-]::\hspace*{10mm}{:}{:}\verb+grf,0.8+//
+%thin[5]::item::通常ã®\verb|\putnote|文も使ãˆã‚‹//
+end//
+
+%%%%%%%%%%%%%%%%//
+main::メインスライド2//
+
+%%%%%%%%%%%%%%%%//
+new::コントローラã®è¡¨ç¤º//
+%repeat=3,para//
+
+itemize//
+%thin[1,-]::item::スクリプトã«\verb|Setlidehyper();|を入れる//
+%thin[2,-]::item::\verb|%repeat=n,para|ã¨ã™ã‚‹ã¨è¡¨ç¤ºã•ã‚Œã‚‹//
+%thin[3,-]::item::パラパラ動画ã®ã¨ãã¯è‡ªå‹•çš„ã«è¡¨ç¤º//
+end//
+
+%%%%%%%%%%%%%%%%//
+new::パラパラ動画//
+%repeat=,para=pointoncircle:{0}:s{85}{10}:input//
+
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.aux b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.aux
new file mode 100644
index 00000000..4cbff8ae
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.aux
@@ -0,0 +1,23 @@
+\relax
+\providecommand\zref@newlabel[2]{}
+\providecommand\hyper@newdestlabel[2]{}
+\providecommand\AtEndDvi@Check{}
+\AtEndDvi@Check
+\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
+\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
+\global\let\oldcontentsline\contentsline
+\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
+\global\let\oldnewlabel\newlabel
+\gdef\newlabel#1#2{\newlabelxx{#1}#2}
+\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
+\AtEndDocument{\ifx\hyper@anchor\@undefined
+\let\contentsline\oldcontentsline
+\let\newlabel\oldnewlabel
+\fi}
+\fi}
+\global\let\hyper@last\relax
+\gdef\HyperFirstAtBeginDocument#1{#1}
+\providecommand*\HyPL@Entry[1]{}
+\HyPL@Entry{0<</P(0)>>}
+\HyPL@Entry{1<</S/D>>}
+\zref@newlabel{LastPage}{\default{}\page{2}\abspage{3}}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.cdy
new file mode 100755
index 00000000..55742178
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.log b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.log
new file mode 100644
index 00000000..be064a95
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.log
@@ -0,0 +1,819 @@
+This is e-pTeX, Version 3.14159265-p3.7-160201-2.6 (utf8.euc) (TeX Live 2016) (preloaded format=platex 2016.12.16) 25 JUN 2017 09:47
+entering extended mode
+ restricted \write18 enabled.
+ %&-line parsing enabled.
+**s0706animate.tex
+(./s0706animate.tex
+pLaTeX2e <2016/05/07> (based on LaTeX2e <2016/03/31>)
+Babel <3.9r> and hyphenation patterns for 83 language(s) loaded.
+(/usr/local/texlive/2016/texmf-dist/tex/platex/base/jarticle.cls
+Document Class: jarticle 2006/06/27 v1.6 Standard pLaTeX class
+\c@@paper=\count81
+(/usr/local/texlive/2016/texmf-dist/tex/platex/base/jsize10.clo
+File: jsize10.clo 2006/06/27 v1.6 Standard pLaTeX file (size option)
+)
+\c@part=\count82
+\c@section=\count83
+\c@subsection=\count84
+\c@subsubsection=\count85
+\c@paragraph=\count86
+\c@subparagraph=\count87
+\c@figure=\count88
+\c@table=\count89
+\abovecaptionskip=\skip41
+\belowcaptionskip=\skip42
+\symmincho=\mathgroup4
+LaTeX Font Info: Overwriting symbol font `mincho' in version `bold'
+(Font) JY1/mc/m/n --> JY1/gt/m/n on input line 593.
+\toclineskip=\dimen118
+\@lnumwidth=\dimen119
+\bibindent=\dimen120
+\heisei=\count90
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic.sty
+\c@ketpicctra=\count91
+\c@ketpicctrb=\count92
+\c@ketpicctrc=\count93
+\c@ketpicctrd=\count94
+\c@ketpicctre=\count95
+\c@ketpicctrf=\count96
+\c@ketpicctrg=\count97
+\c@ketpicctrh=\count98
+\c@ketpicctri=\count99
+\c@ketpicctrj=\count100
+\Width=\skip43
+\Height=\skip44
+\Depth=\skip45
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer.sty
+\layercurrentunit=\skip46
+)
+(/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide.sty)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsmath.sty
+Package: amsmath 2016/03/10 v2.15b AMS math features
+\@mathmargin=\skip47
+
+For additional information on amsmath, use the `?' option.
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amstext.sty
+Package: amstext 2000/06/29 v2.01 AMS text
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsgen.sty
+File: amsgen.sty 1999/11/30 v2.0 generic functions
+\@emptytoks=\toks15
+\ex@=\dimen121
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsbsy.sty
+Package: amsbsy 1999/11/29 v1.2d Bold Symbols
+\pmbraise@=\dimen122
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsmath/amsopn.sty
+Package: amsopn 2016/03/08 v2.02 operator names
+)
+\inf@bad=\count101
+LaTeX Info: Redefining \frac on input line 199.
+\uproot@=\count102
+\leftroot@=\count103
+LaTeX Info: Redefining \overline on input line 297.
+\classnum@=\count104
+\DOTSCASE@=\count105
+LaTeX Info: Redefining \ldots on input line 394.
+LaTeX Info: Redefining \dots on input line 397.
+LaTeX Info: Redefining \cdots on input line 518.
+\Mathstrutbox@=\box41
+\strutbox@=\box42
+\big@size=\dimen123
+LaTeX Font Info: Redeclaring font encoding OML on input line 634.
+LaTeX Font Info: Redeclaring font encoding OMS on input line 635.
+\macc@depth=\count106
+\c@MaxMatrixCols=\count107
+\dotsspace@=\muskip10
+\c@parentequation=\count108
+\dspbrk@lvl=\count109
+\tag@help=\toks16
+\row@=\count110
+\column@=\count111
+\maxfields@=\count112
+\andhelp@=\toks17
+\eqnshift@=\dimen124
+\alignsep@=\dimen125
+\tagshift@=\dimen126
+\tagwidth@=\dimen127
+\totwidth@=\dimen128
+\lineht@=\dimen129
+\@envbody=\toks18
+\multlinegap=\skip48
+\multlinetaggap=\skip49
+\mathdisplay@stack=\toks19
+LaTeX Info: Redefining \[ on input line 2739.
+LaTeX Info: Redefining \] on input line 2740.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/amssymb.sty
+Package: amssymb 2013/01/14 v3.01 AMS font symbols
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/amsfonts.sty
+Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support
+\symAMSa=\mathgroup5
+\symAMSb=\mathgroup6
+LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold'
+(Font) U/euf/m/n --> U/euf/b/n on input line 106.
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/tools/bm.sty
+Package: bm 2016/02/27 v1.2a Bold Symbol Support (DPC/FMi)
+\symboldoperators=\mathgroup7
+\symboldletters=\mathgroup8
+\symboldsymbols=\mathgroup9
+\symboldmincho=\mathgroup10
+LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 142.
+LaTeX Info: Redefining \bm on input line 208.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/tools/enumerate.sty
+Package: enumerate 2015/07/23 v3.00 enumerate extensions (DPC)
+\@enLab=\toks20
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphicx.sty
+Package: graphicx 2014/10/28 v1.0g Enhanced LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/keyval.sty
+Package: keyval 2014/10/28 v1.15 key=value parser (DPC)
+\KV@toks@=\toks21
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/graphics.sty
+Package: graphics 2016/05/09 v1.0r Standard LaTeX Graphics (DPC,SPQR)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/trig.sty
+Package: trig 2016/01/03 v1.10 sin cos tan (DPC)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/graphics.cfg
+File: graphics.cfg 2016/01/02 v1.10 sample graphics configuration
+)
+Package graphics Info: Driver file: dvipdfmx.def on input line 96.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/dvipdfmx-def/dvipdfmx.def
+File: dvipdfmx.def 2016/04/06 v4.08 LaTeX color/graphics driver for dvipdfmx (T
+eX Live/ChoF)
+
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/infwarerr.sty
+Package: infwarerr 2016/05/16 v1.4 Providing info/warning/error messages (HO)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ltxcmds.sty
+Package: ltxcmds 2016/05/16 v1.23 LaTeX kernel commands for general use (HO)
+)))
+\Gin@req@height=\dimen130
+\Gin@req@width=\dimen131
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/color.sty
+Package: color 2016/05/09 v1.1c Standard LaTeX Color (DPC)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics-cfg/color.cfg
+File: color.cfg 2016/01/02 v1.6 sample color configuration
+)
+Package color Info: Driver file: dvips.def on input line 144.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/dvips.def
+File: dvips.def 2015/12/30 v3.0k Driver-dependent file (DPC,SPQR)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/graphics/dvipsnam.def
+File: dvipsnam.def 2015/12/30 v3.0k Driver-dependent file (DPC,SPQR)
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/animate/animate.sty
+Package: animate 2016/04/15 PDF animations from files and inline graphics
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/base/ifthen.sty
+Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ifpdf.sty
+Package: ifpdf 2016/05/14 v3.1 Provides the ifpdf switch
+)
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/ifluatex.sty
+Package: ifluatex 2016/05/16 v1.4 Provides the ifluatex switch (HO)
+Package ifluatex Info: LuaTeX not detected.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/ifdraft.sty
+Package: ifdraft 2016/05/16 v1.4 Detect class options draft and final (HO)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/tools/calc.sty
+Package: calc 2014/10/28 v4.3 Infix arithmetic (KKT,FJ)
+\calc@Acount=\count113
+\calc@Bcount=\count114
+\calc@Adimen=\dimen132
+\calc@Bdimen=\dimen133
+\calc@Askip=\skip50
+\calc@Bskip=\skip51
+LaTeX Info: Redefining \setlength on input line 80.
+LaTeX Info: Redefining \addtolength on input line 81.
+\calc@Ccount=\count115
+\calc@Cskip=\skip52
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/atenddvi.sty
+Package: atenddvi 2016/05/16 v1.2 At end DVI hook (HO)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/zref-abspage.sty
+Package: zref-abspage 2016/05/16 v2.25 Module abspage for zref (HO)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/zref-base.sty
+Package: zref-base 2016/05/16 v2.25 Module base for zref (HO)
+
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty
+Package: kvsetkeys 2016/05/16 v1.17 Key value parser (HO)
+
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/etexcmds.sty
+Package: etexcmds 2016/05/16 v1.6 Avoid name clashes with e-TeX commands (HO)
+Package etexcmds Info: Could not find \expanded.
+(etexcmds) That can mean that you are not using pdfTeX 1.50 or
+(etexcmds) that some package has redefined \expanded.
+(etexcmds) In the latter case, load this package earlier.
+))
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty
+Package: kvdefinekeys 2016/05/16 v1.4 Define keys (HO)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty
+Package: pdftexcmds 2016/05/10 v0.21 Utility functions of pdfTeX for LuaTeX (HO
+)
+Package pdftexcmds Info: LuaTeX not detected.
+Package pdftexcmds Info: pdfTeX >= 1.30 not detected.
+Package pdftexcmds Info: \pdf@primitive is available.
+Package pdftexcmds Info: \pdf@ifprimitive is available.
+Package pdftexcmds Info: \pdfdraftmode not found.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/auxhook.sty
+Package: auxhook 2016/05/16 v1.4 Hooks for auxiliary files (HO)
+)
+Package zref Info: New property list: main on input line 759.
+Package zref Info: New property: default on input line 760.
+Package zref Info: New property: page on input line 761.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/atbegshi.sty
+Package: atbegshi 2016/05/16 v1.17 At begin shipout hook (HO)
+)
+\c@abspage=\count116
+Package zref Info: New property: abspage on input line 62.
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/zref-lastpage.sty
+Package: zref-lastpage 2016/05/16 v2.25 Module lastpage for zref (HO)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/atveryend.sty
+Package: atveryend 2016/05/16 v1.9 Hooks at the very end of document (HO)
+Package atveryend Info: \enddocument detected (standard20110627).
+)
+Package zref Info: New property list: LastPage on input line 55.
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/animate/animfp.sty
+Package: animfp 2009/07/23 fixed point addition for animate.sty
+\afp@xs=\count117
+\afp@xia=\count118
+\afp@xib=\count119
+\afp@xfa=\count120
+\afp@xfb=\count121
+\afp@rega=\count122
+\afp@regb=\count123
+\afp@regs=\count124
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/media9/pdfbase.sty
+(/usr/local/texlive/2016/texmf-dist/tex/latex/l3kernel/expl3.sty
+Package: expl3 2016/05/18 v6512 L3 programming layer (loader)
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/l3kernel/expl3-code.tex
+Package: expl3 2016/05/18 v6512 L3 programming layer (code)
+L3 Module: l3bootstrap 2016/02/12 v6412 L3 Bootstrap code
+L3 Module: l3names 2016/03/11 v6433 L3 Namespace for primitives
+L3 Module: l3basics 2015/11/22 v6315 L3 Basic definitions
+L3 Module: l3expan 2015/09/10 v5983 L3 Argument expansion
+L3 Module: l3tl 2016/03/26 v6465 L3 Token lists
+L3 Module: l3str 2016/03/24 v6441 L3 Strings
+L3 Module: l3seq 2015/08/05 v5777 L3 Sequences and stacks
+L3 Module: l3int 2016/03/24 v6441 L3 Integers
+\c_max_int=\count125
+\l_tmpa_int=\count126
+\l_tmpb_int=\count127
+\g_tmpa_int=\count128
+\g_tmpb_int=\count129
+L3 Module: l3quark 2015/08/17 v5855 L3 Quarks
+L3 Module: l3prg 2015/11/01 v6216 L3 Control structures
+\g__prg_map_int=\count130
+L3 Module: l3clist 2015/09/02 v5901 L3 Comma separated lists
+L3 Module: l3token 2016/04/03 v6470 L3 Experimental token manipulation
+L3 Module: l3prop 2016/01/05 v6366 L3 Property lists
+L3 Module: l3msg 2016/03/26 v6464 L3 Messages
+L3 Module: l3file 2016/03/25 v6458 L3 File and I/O operations
+\l_iow_line_count_int=\count131
+\l__iow_target_count_int=\count132
+\l__iow_current_line_int=\count133
+\l__iow_current_word_int=\count134
+\l__iow_current_indentation_int=\count135
+L3 Module: l3skip 2016/01/05 v6366 L3 Dimensions and skips
+\c_zero_dim=\dimen134
+\c_max_dim=\dimen135
+\l_tmpa_dim=\dimen136
+\l_tmpb_dim=\dimen137
+\g_tmpa_dim=\dimen138
+\g_tmpb_dim=\dimen139
+\c_zero_skip=\skip53
+\c_max_skip=\skip54
+\l_tmpa_skip=\skip55
+\l_tmpb_skip=\skip56
+\g_tmpa_skip=\skip57
+\g_tmpb_skip=\skip58
+\c_zero_muskip=\muskip11
+\c_max_muskip=\muskip12
+\l_tmpa_muskip=\muskip13
+\l_tmpb_muskip=\muskip14
+\g_tmpa_muskip=\muskip15
+\g_tmpb_muskip=\muskip16
+L3 Module: l3keys 2015/11/17 v6284 L3 Key-value interfaces
+\g__keyval_level_int=\count136
+\l_keys_choice_int=\count137
+L3 Module: l3fp 2016/03/26 v6465 L3 Floating points
+\c__fp_leading_shift_int=\count138
+\c__fp_middle_shift_int=\count139
+\c__fp_trailing_shift_int=\count140
+\c__fp_big_leading_shift_int=\count141
+\c__fp_big_middle_shift_int=\count142
+\c__fp_big_trailing_shift_int=\count143
+\c__fp_Bigg_leading_shift_int=\count144
+\c__fp_Bigg_middle_shift_int=\count145
+\c__fp_Bigg_trailing_shift_int=\count146
+L3 Module: l3box 2015/08/09 v5822 L3 Experimental boxes
+\c_empty_box=\box43
+\l_tmpa_box=\box44
+\l_tmpb_box=\box45
+\g_tmpa_box=\box46
+\g_tmpb_box=\box47
+L3 Module: l3coffins 2016/05/17 v6508 L3 Coffin code layer
+\l__coffin_internal_box=\box48
+\l__coffin_internal_dim=\dimen140
+\l__coffin_offset_x_dim=\dimen141
+\l__coffin_offset_y_dim=\dimen142
+\l__coffin_x_dim=\dimen143
+\l__coffin_y_dim=\dimen144
+\l__coffin_x_prime_dim=\dimen145
+\l__coffin_y_prime_dim=\dimen146
+\c_empty_coffin=\box49
+\l__coffin_aligned_coffin=\box50
+\l__coffin_aligned_internal_coffin=\box51
+\l_tmpa_coffin=\box52
+\l_tmpb_coffin=\box53
+\l__coffin_display_coffin=\box54
+\l__coffin_display_coord_coffin=\box55
+\l__coffin_display_pole_coffin=\box56
+\l__coffin_display_offset_dim=\dimen147
+\l__coffin_display_x_dim=\dimen148
+\l__coffin_display_y_dim=\dimen149
+L3 Module: l3color 2014/08/23 v5354 L3 Experimental color support
+L3 Module: l3sys 2015/09/25 v6087 L3 Experimental system/runtime functions
+L3 Module: l3candidates 2016/05/13 v6484 L3 Experimental additions to l3kernel
+\l__box_top_dim=\dimen150
+\l__box_bottom_dim=\dimen151
+\l__box_left_dim=\dimen152
+\l__box_right_dim=\dimen153
+\l__box_top_new_dim=\dimen154
+\l__box_bottom_new_dim=\dimen155
+\l__box_left_new_dim=\dimen156
+\l__box_right_new_dim=\dimen157
+\l__box_internal_box=\box57
+\l__coffin_bounding_shift_dim=\dimen158
+\l__coffin_left_corner_dim=\dimen159
+\l__coffin_right_corner_dim=\dimen160
+\l__coffin_bottom_corner_dim=\dimen161
+\l__coffin_top_corner_dim=\dimen162
+\l__coffin_scaled_total_height_dim=\dimen163
+\l__coffin_scaled_width_dim=\dimen164
+L3 Module: l3luatex 2016/03/26 v6465 L3 Experimental LuaTeX-specific functions
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/l3kernel/l3dvipdfmx.def
+File: l3dvidpfmx.def 2016/03/26 v6465 L3 Experimental driver: dvipdfmx
+\l__driver_tmp_box=\box58
+))
+(/usr/local/texlive/2016/texmf-dist/tex/latex/l3packages/l3keys2e/l3keys2e.sty
+Package: l3keys2e 2016/05/18 v6512 LaTeX2e option processing using LaTeX3 keys
+)
+Package: pdfbase 2016/03/22 v0.8 driver independent access to low-level PDF fea
+tures
+\g_pbs_obj_int=\count147
+\g_pbs_oc_int=\count148
+) (/usr/local/texlive/2016/texmf-dist/tex/latex/ocgx2/ocgbase.sty
+Package: ocgbase 2016/03/11 v0.6 support package for ocgx2.sty
+)
+\@anim@box=\box59
+\@anim@measbox=\box60
+\@anim@tmpdima=\dimen165
+\@anim@tmpdimb=\dimen166
+\@anim@num=\count149
+\@anim@curframe=\count150
+\@anim@curframe@zb=\count151
+\@anim@resizeflags=\count152
+\@anim@skipfram=\count153
+\@anim@mulframecnt=\count154
+\@anim@@tmlnfile=\read1
+\@anim@tmpcnt=\count155
+\c@@anim@ltxcnt=\count156
+\@anim@curlayer=\count157
+\@anim@lineno=\count158
+\@anim@curfield=\count159
+\@anim@@resizeflags=\count160
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/hyperref/hyperref.sty
+Package: hyperref 2016/05/05 v6.83n Hypertext links for LaTeX
+
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
+Package: hobsub-hyperref 2016/05/16 v1.14 Bundle oberdiek, subset hyperref (HO)
+
+
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty
+Package: hobsub-generic 2016/05/16 v1.14 Bundle oberdiek, subset generic (HO)
+Package: hobsub 2016/05/16 v1.14 Construct package bundles (HO)
+Package hobsub Info: Skipping package `infwarerr' (already loaded).
+Package hobsub Info: Skipping package `ltxcmds' (already loaded).
+Package hobsub Info: Skipping package `ifluatex' (already loaded).
+Package: ifvtex 2016/05/16 v1.6 Detect VTeX and its facilities (HO)
+Package ifvtex Info: VTeX not detected.
+Package: intcalc 2016/05/16 v1.2 Expandable calculations with integers (HO)
+Package hobsub Info: Skipping package `ifpdf' (already loaded).
+Package hobsub Info: Skipping package `etexcmds' (already loaded).
+Package hobsub Info: Skipping package `kvsetkeys' (already loaded).
+Package hobsub Info: Skipping package `kvdefinekeys' (already loaded).
+Package hobsub Info: Skipping package `pdftexcmds' (already loaded).
+Package: pdfescape 2016/05/16 v1.14 Implements pdfTeX's escape features (HO)
+Package: bigintcalc 2016/05/16 v1.4 Expandable calculations on big integers (HO
+)
+Package: bitset 2016/05/16 v1.2 Handle bit-vector datatype (HO)
+Package: uniquecounter 2016/05/16 v1.3 Provide unlimited unique counter (HO)
+)
+Package hobsub Info: Skipping package `hobsub' (already loaded).
+Package: letltxmacro 2016/05/16 v1.5 Let assignment for LaTeX macros (HO)
+Package: hopatch 2016/05/16 v1.3 Wrapper for package hooks (HO)
+Package: xcolor-patch 2016/05/16 xcolor patch
+Package hobsub Info: Skipping package `atveryend' (already loaded).
+Package hobsub Info: Skipping package `atbegshi' (already loaded).
+Package: refcount 2016/05/16 v3.5 Data extraction from label references (HO)
+Package: hycolor 2016/05/16 v1.8 Color options for hyperref/bookmark (HO)
+)
+(/usr/local/texlive/2016/texmf-dist/tex/generic/ifxetex/ifxetex.sty
+Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional
+)
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/kvoptions.sty
+Package: kvoptions 2016/05/16 v3.12 Key value format for package options (HO)
+)
+\@linkdim=\dimen167
+\Hy@linkcounter=\count161
+\Hy@pagecounter=\count162
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/hyperref/pd1enc.def
+File: pd1enc.def 2016/05/05 v6.83n Hyperref: PDFDocEncoding definition (HO)
+)
+\Hy@SavedSpaceFactor=\count163
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/latexconfig/hyperref.cfg
+File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive
+)
+Package hyperref Info: Option `colorlinks' set `true' on input line 4322.
+Package hyperref Info: Hyper figures OFF on input line 4446.
+Package hyperref Info: Link nesting OFF on input line 4451.
+Package hyperref Info: Hyper index ON on input line 4454.
+Package hyperref Info: Plain pages OFF on input line 4461.
+Package hyperref Info: Backreferencing OFF on input line 4466.
+Package hyperref Info: Implicit mode ON; LaTeX internals redefined.
+Package hyperref Info: Bookmarks ON on input line 4691.
+\c@Hy@tempcnt=\count164
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/url/url.sty
+\Urlmuskip=\muskip17
+Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc.
+)
+LaTeX Info: Redefining \url on input line 5044.
+\XeTeXLinkMargin=\dimen168
+\Fld@menulength=\count165
+\Field@Width=\dimen169
+\Fld@charsize=\dimen170
+Package hyperref Info: Hyper figures OFF on input line 6298.
+Package hyperref Info: Link nesting OFF on input line 6303.
+Package hyperref Info: Hyper index ON on input line 6306.
+Package hyperref Info: backreferencing OFF on input line 6313.
+Package hyperref Info: Link coloring ON on input line 6316.
+Package hyperref Info: Link coloring with OCG OFF on input line 6323.
+Package hyperref Info: PDF/A mode OFF on input line 6328.
+LaTeX Info: Redefining \ref on input line 6368.
+LaTeX Info: Redefining \pageref on input line 6372.
+\Hy@abspage=\count166
+\c@Item=\count167
+\c@Hfootnote=\count168
+)
+
+Package hyperref Message: Driver: hdvipdfm.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/hyperref/hdvipdfm.def
+File: hdvipdfm.def 2016/05/05 v6.83n Hyperref driver for dvipdfm
+\pdfm@box=\box61
+\c@Hy@AnnotLevel=\count169
+\HyField@AnnotCount=\count170
+\Fld@listcount=\count171
+\c@bookmark@seq@number=\count172
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty
+Package: rerunfilecheck 2016/05/16 v1.8 Rerun checks for auxiliary files (HO)
+Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2
+82.
+)
+\Hy@SectionHShift=\skip59
+)
+(./s0706animate.aux)
+\openout1 = `s0706animate.aux'.
+
+LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for JY1/mc/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for JT1/mc/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 25.
+LaTeX Font Info: ... okay on input line 25.
+\AtBeginShipoutBox=\box62
+Package hyperref Info: Link coloring ON on input line 25.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/hyperref/nameref.sty
+Package: nameref 2012/10/27 v2.43 Cross-referencing by name of section
+
+(/usr/local/texlive/2016/texmf-dist/tex/generic/oberdiek/gettitlestring.sty
+Package: gettitlestring 2016/05/16 v1.5 Cleanup title references (HO)
+)
+\c@section@level=\count173
+)
+LaTeX Info: Redefining \ref on input line 25.
+LaTeX Info: Redefining \pageref on input line 25.
+LaTeX Info: Redefining \nameref on input line 25.
+
+(./s0706animate.out) (./s0706animate.out)
+\@outlinefile=\write3
+\openout3 = `s0706animate.out'.
+
+ (./fig/slide0.tex
+LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JT1/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <14.4> not available
+(Font) Font shape `JY1/gt/m/n' tried instead on input line 1.
+LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JT1/gt/m/n' tried instead on input line 5.
+LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <24.88> not available
+(Font) Font shape `JY1/gt/m/n' tried instead on input line 5.
+) (./fig/slide0.tex) (./fig/slide0.tex) (./fig/slide0.tex) [0
+
+]
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+
+[1] (./fig/animpointoncircle.tex
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+01.tex
+LaTeX Font Info: Font shape `JT1/mc/bx/n' in size <9> not available
+(Font) Font shape `JT1/gt/m/n' tried instead on input line 8.
+LaTeX Font Info: Font shape `JY1/mc/bx/n' in size <9> not available
+(Font) Font shape `JY1/gt/m/n' tried instead on input line 8.
+LaTeX Font Info: Try loading font information for U+msa on input line 22.
+ (/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/umsa.fd
+File: umsa.fd 2013/01/14 v3.01 AMS symbols A
+)
+LaTeX Font Info: Try loading font information for U+msb on input line 22.
+
+(/usr/local/texlive/2016/texmf-dist/tex/latex/amsfonts/umsb.fd
+File: umsb.fd 2013/01/14 v3.01 AMS symbols B
+)) <a0,fr0>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+02.tex) <a0,fr1>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+03.tex) <a0,fr2>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+04.tex) <a0,fr3>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+05.tex) <a0,fr4>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+06.tex) <a0,fr5>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+07.tex) <a0,fr6>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+08.tex) <a0,fr7>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+09.tex) <a0,fr8>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+10.tex) <a0,fr9>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+11.tex) <a0,fr10>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+12.tex) <a0,fr11>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+13.tex) <a0,fr12>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+14.tex) <a0,fr13>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+15.tex) <a0,fr14>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+16.tex) <a0,fr15>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+17.tex) <a0,fr16>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+18.tex) <a0,fr17>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+19.tex) <a0,fr18>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+20.tex) <a0,fr19>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+21.tex) <a0,fr20>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+22.tex) <a0,fr21>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+23.tex) <a0,fr22>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+24.tex) <a0,fr23>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+25.tex) <a0,fr24>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+26.tex) <a0,fr25>) (./fig/animpointoncircle.tex
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+01.tex) <a1,fr0>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+02.tex) <a1,fr1>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+03.tex) <a1,fr2>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+04.tex) <a1,fr3>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+05.tex) <a1,fr4>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+06.tex) <a1,fr5>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+07.tex) <a1,fr6>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+08.tex) <a1,fr7>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+09.tex) <a1,fr8>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+10.tex) <a1,fr9>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+11.tex) <a1,fr10>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+12.tex) <a1,fr11>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+13.tex) <a1,fr12>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+14.tex) <a1,fr13>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+15.tex) <a1,fr14>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+16.tex) <a1,fr15>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+17.tex) <a1,fr16>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+18.tex) <a1,fr17>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+19.tex) <a1,fr18>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+20.tex) <a1,fr19>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+21.tex) <a1,fr20>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+22.tex) <a1,fr21>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+23.tex) <a1,fr22>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+24.tex) <a1,fr23>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+25.tex) <a1,fr24>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+26.tex) <a1,fr25>) (./fig/animpointoncircle.tex
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+01.tex) <a2,fr0>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+02.tex) <a2,fr1>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+03.tex) <a2,fr2>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+04.tex) <a2,fr3>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+05.tex) <a2,fr4>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+06.tex) <a2,fr5>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+07.tex) <a2,fr6>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+08.tex) <a2,fr7>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+09.tex) <a2,fr8>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+10.tex) <a2,fr9>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+11.tex) <a2,fr10>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+12.tex) <a2,fr11>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+13.tex) <a2,fr12>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+14.tex) <a2,fr13>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+15.tex) <a2,fr14>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+16.tex) <a2,fr15>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+17.tex) <a2,fr16>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+18.tex) <a2,fr17>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+19.tex) <a2,fr18>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+20.tex) <a2,fr19>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+21.tex) <a2,fr20>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+22.tex) <a2,fr21>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+23.tex) <a2,fr22>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+24.tex) <a2,fr23>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+25.tex) <a2,fr24>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+26.tex) <a2,fr25>) (./fig/animpointoncircle.tex
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+01.tex) <a3,fr0>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+02.tex) <a3,fr1>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+03.tex) <a3,fr2>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+04.tex) <a3,fr3>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+05.tex) <a3,fr4>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+06.tex) <a3,fr5>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+07.tex) <a3,fr6>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+08.tex) <a3,fr7>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+09.tex) <a3,fr8>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+10.tex) <a3,fr9>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+11.tex) <a3,fr10>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+12.tex) <a3,fr11>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+13.tex) <a3,fr12>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+14.tex) <a3,fr13>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+15.tex) <a3,fr14>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+16.tex) <a3,fr15>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+17.tex) <a3,fr16>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+18.tex) <a3,fr17>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+19.tex) <a3,fr18>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+20.tex) <a3,fr19>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+21.tex) <a3,fr20>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+22.tex) <a3,fr21>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+23.tex) <a3,fr22>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+24.tex) <a3,fr23>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+25.tex) <a3,fr24>
+(/Users/takatoosetsuo/ketcindy/ketsample/samples/s07slides/fig/pointoncircle/p0
+26.tex) <a3,fr25>)
+Package atveryend Info: Empty hook `BeforeClearDocument' on input line 72.
+
+Overfull \vbox (6.44444pt too high) has occurred while \output is active []
+
+Package atenddvi Info: Last page = 3.
+
+[2]
+Package atveryend Info: Executing hook `AfterLastShipout' on input line 72.
+ (./s0706animate.aux)
+Package atveryend Info: Empty hook `AtVeryEndDocument' on input line 72.
+Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 72.
+Package rerunfilecheck Info: File `s0706animate.out' has not changed.
+(rerunfilecheck) Checksum: D41D8CD98F00B204E9800998ECF8427E;0.
+Package atveryend Info: Empty hook `AtVeryVeryEnd' on input line 72.
+ )
+Here is how much of TeX's memory you used:
+ 14240 strings out of 493693
+ 260237 string characters out of 6149786
+ 494692 words of memory out of 5000000
+ 17400 multiletter control sequences out of 15000+600000
+ 15235 words of font info for 61 fonts, out of 8000000 for 9000
+ 929 hyphenation exceptions out of 8191
+ 48i,12n,65p,10472b,432s stack positions out of 5000i,500n,10000p,200000b,80000s
+
+Output written on s0706animate.dvi (3 pages, 117852 bytes).
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.out b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.out
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.out
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.pdf b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.pdf
new file mode 100644
index 00000000..b63a5929
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.pdf
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.tex b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.tex
new file mode 100644
index 00000000..8a215859
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.tex
@@ -0,0 +1,72 @@
+%%% タイトル s0706animate
+\documentclass[landscape,10pt]{jarticle}
+\special{papersize=\the\paperwidth,\the\paperheight}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketpic}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketlayer}
+\usepackage{/Users/takatoosetsuo/ketcindy/ketpicstyle/ketslide}
+\usepackage{amsmath,amssymb}
+\usepackage{bm,enumerate}
+\usepackage[dvipdfmx]{graphicx}
+\usepackage{color}
+\definecolor{slidecolora}{cmyk}{0.98,0.13,0,0.43}
+\definecolor{slidecolorb}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolorc}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolord}{cmyk}{0,0.32,0.52,0}
+\definecolor{slidecolore}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolorf}{cmyk}{0,0,0,0.5}
+\definecolor{slidecolori}{cmyk}{0.98,0.13,0,0.43}
+\usepackage[dvipdfmx]{animate}
+\usepackage[dvipdfmx,colorlinks=true,linkcolor=blue,filecolor=blue]{hyperref}
+\ketmarginJ
+\ketslideinit
+
+\pagestyle{headings}
+
+\begin{document}
+
+\begin{layer}{120}{0}
+\putnotese{0}{0}{\input{fig/slide0.tex}}
+\end{layer}
+
+\def\mainslidetitley{22}
+\def\ketcletter{slidecolora}
+\def\ketcbox{slidecolorb}
+\def\ketdbox{slidecolorc}
+\def\ketcframe{slidecolord}
+\def\ketcshadow{slidecolore}
+\def\ketdshadow{slidecolorf}
+\def\slidetitlex{6}
+\def\slidetitlesize{1.3}
+\def\mketcletter{slidecolori}
+\def\mketcbox{yellow}
+\def\mketdbox{yellow}
+\def\mketcframe{yellow}
+\def\mslidetitlex{62}
+\def\mslidetitlesize{2}
+
+\color{black}
+\Large\bf\boldmath
+\thispagestyle{empty}
+\addtocounter{page}{-1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\mainslide{メインスライド1}
+
+%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%
+
+\newslide{極座標ã¨æ›²ç·š(Animation)}
+
+\vspace*{18mm}
+
+
+\begin{layer}{120}{0}
+\putnotes{65}{5}{\input{fig/animpointoncircle.tex}}
+\end{layer}
+
+
+\end{document}
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.txt
new file mode 100644
index 00000000..9222ae6e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s07slides/s0706animate.txt
@@ -0,0 +1,12 @@
+%タイトル::slide0::kabegami//
+タイトル::slide0//
+
+%%%%%%%%%%%%%%%%//
+main::メインスライド1//
+
+%%%%%%%%%%%%%%%%//
+new::極座標ã¨æ›²ç·š(Animation)//
+
+\begin{center}//
+\input{fig/animpointoncircle}//
+\end{center}// \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0801plotR.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0801plotR.cdy
new file mode 100644
index 00000000..54c66e5a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0801plotR.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0802plotR2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0802plotR2.cdy
new file mode 100644
index 00000000..c782ff96
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0802plotR2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0803boxplot.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0803boxplot.cdy
new file mode 100644
index 00000000..1522f3d0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0803boxplot.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0804histplot.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0804histplot.cdy
new file mode 100644
index 00000000..dadd4f79
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0804histplot.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0805random.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0805random.cdy
new file mode 100644
index 00000000..5dc6c002
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0805random.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0806dataframe.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0806dataframe.cdy
new file mode 100644
index 00000000..037b205c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0806dataframe.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0807timecount.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0807timecount.cdy
new file mode 100644
index 00000000..ab06c7a0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0807timecount.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0808ttest.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0808ttest.cdy
new file mode 100644
index 00000000..a5a47941
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s08R/s0808ttest.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0901parabolic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0901parabolic.cdy
new file mode 100644
index 00000000..a24c0394
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0901parabolic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0902cone.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0902cone.cdy
new file mode 100644
index 00000000..e997e2df
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0902cone.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0903saddle.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0903saddle.cdy
new file mode 100644
index 00000000..6ffda131
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0903saddle.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0904sphere.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0904sphere.cdy
new file mode 100644
index 00000000..33a7830a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0904sphere.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0905wireframe.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0905wireframe.cdy
new file mode 100644
index 00000000..c8047082
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0905wireframe.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0906intersectcrvsf.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0906intersectcrvsf.cdy
new file mode 100644
index 00000000..f6b84503
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0906intersectcrvsf.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0907multisurfaces.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0907multisurfaces.cdy
new file mode 100644
index 00000000..aa4ee7e1
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0907multisurfaces.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0908conecut.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0908conecut.cdy
new file mode 100644
index 00000000..8a636e54
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0908conecut.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0909totaldiff.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0909totaldiff.cdy
new file mode 100644
index 00000000..e07e02fc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s09surface/s0909totaldiff.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1000list.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1000list.cdy
new file mode 100644
index 00000000..daa92575
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1000list.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1001basic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1001basic.cdy
new file mode 100644
index 00000000..bd14ba85
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1001basic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1002equation.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1002equation.cdy
new file mode 100644
index 00000000..299dbb25
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1002equation.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1003trig.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1003trig.cdy
new file mode 100644
index 00000000..047a0e77
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1003trig.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1004calcby.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1004calcby.cdy
new file mode 100644
index 00000000..f4babdb7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1004calcby.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1005diffint.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1005diffint.cdy
new file mode 100644
index 00000000..7221c5c0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1005diffint.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1006calculus.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1006calculus.cdy
new file mode 100644
index 00000000..89d08f6d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1006calculus.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1007linalg.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1007linalg.cdy
new file mode 100644
index 00000000..647b466b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1007linalg.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1008idtable.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1008idtable.cdy
new file mode 100644
index 00000000..79b0dbdd
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1008idtable.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1009diffeq.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1009diffeq.cdy
new file mode 100644
index 00000000..4d31709a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1009diffeq.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier.cdy
new file mode 100644
index 00000000..b648d937
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier2.cdy
new file mode 100644
index 00000000..02a0b920
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier3.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier3.cdy
new file mode 100644
index 00000000..66cb8830
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1010fourier3.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop.cdy
new file mode 100644
index 00000000..1178361b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop2.cdy
new file mode 100644
index 00000000..82944bc0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1011matrixop2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1012fourierpw.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1012fourierpw.cdy
new file mode 100644
index 00000000..4d75c163
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1012fourierpw.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1013for.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1013for.cdy
new file mode 100644
index 00000000..0a2b0367
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1013for.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1014incdec2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1014incdec2.cdy
new file mode 100644
index 00000000..5201f949
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1014incdec2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1015primenumber.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1015primenumber.cdy
new file mode 100644
index 00000000..9e7b1f9e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s10maxima/s1015primenumber.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1100list.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1100list.cdy
new file mode 100644
index 00000000..83c54a24
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1100list.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1101calculator1.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1101calculator1.cdy
new file mode 100644
index 00000000..d321b85c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1101calculator1.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1102calculator2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1102calculator2.cdy
new file mode 100644
index 00000000..6b57d7e0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1102calculator2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1103calcby.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1103calcby.cdy
new file mode 100644
index 00000000..44e7def2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1103calcby.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1104diff.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1104diff.cdy
new file mode 100644
index 00000000..fbe92c41
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1104diff.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fint101.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fint101.cdy
new file mode 100644
index 00000000..3871bf27
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fint101.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fzero109.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fzero109.cdy
new file mode 100644
index 00000000..a6dcfe79
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1105fzero109.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1106fmmx110.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1106fmmx110.cdy
new file mode 100644
index 00000000..699963b8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1106fmmx110.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1110integrate.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1110integrate.cdy
new file mode 100644
index 00000000..9346f12e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1110integrate.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1111grobner1.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1111grobner1.cdy
new file mode 100644
index 00000000..50ad1503
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1111grobner1.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1112residue.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1112residue.cdy
new file mode 100644
index 00000000..f4e70933
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s11asir/s1112residue.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate.cdy
new file mode 100644
index 00000000..9e45e8df
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate2.cdy
new file mode 100644
index 00000000..a1e279e9
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1201integrate2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202calcby.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202calcby.cdy
new file mode 100644
index 00000000..2387ed40
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202calcby.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202equations.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202equations.cdy
new file mode 100644
index 00000000..2441a5d8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s12fricas/s1202equations.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1301basic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1301basic.cdy
new file mode 100644
index 00000000..38300c52
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1301basic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1303objparts.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1303objparts.cdy
new file mode 100644
index 00000000..a4740a24
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1303objparts.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1304symbol.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1304symbol.cdy
new file mode 100644
index 00000000..87ef5c1c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1304symbol.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1305hyperpara.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1305hyperpara.cdy
new file mode 100644
index 00000000..80ce5bd7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1305hyperpara.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1306poly.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1306poly.cdy
new file mode 100644
index 00000000..0a37dd8a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1306poly.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1307poly2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1307poly2.cdy
new file mode 100644
index 00000000..96e2d15a
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1307poly2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1308discont.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1308discont.cdy
new file mode 100644
index 00000000..1dac04a2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1308discont.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1309discont2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1309discont2.cdy
new file mode 100644
index 00000000..6f7ccd19
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1309discont2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1310totaldiff.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1310totaldiff.cdy
new file mode 100644
index 00000000..631105fc
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1310totaldiff.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1311plate.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1311plate.cdy
new file mode 100644
index 00000000..c9693b26
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1311plate.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1312plane.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1312plane.cdy
new file mode 100644
index 00000000..ff5faa44
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1312plane.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1313changescale.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1313changescale.cdy
new file mode 100644
index 00000000..cdff2f09
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1313changescale.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1314knot.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1314knot.cdy
new file mode 100644
index 00000000..c52cd3ed
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s13meshlab/s1314knot.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/errormessageR.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/errormessageR.txt
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/errormessageR.txt
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/kc.sh b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/kc.sh
new file mode 100755
index 00000000..fdc5e838
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/kc.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+cd "/Users/takatoosetsuo/ketcindy/ketsample/samples/s14dataprocessing"
+R --vanilla --slave < s1401csvprocessingsep.r >& errormessageR.txt
+exit 0
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/resultR.txt b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/resultR.txt
new file mode 100644
index 00000000..1259c849
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/resultR.txt
@@ -0,0 +1 @@
+//// \ No newline at end of file
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1401csvprocessing.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1401csvprocessing.cdy
new file mode 100755
index 00000000..1e441c04
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1401csvprocessing.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1402copypaste.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1402copypaste.cdy
new file mode 100755
index 00000000..7a2a062b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1402copypaste.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1403maketableJ.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1403maketableJ.cdy
new file mode 100644
index 00000000..1ac0b8a1
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/s1403maketableJ.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample1.csv b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample1.csv
new file mode 100644
index 00000000..38d5fa8c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample1.csv
@@ -0,0 +1,10 @@
+63,33,59,64,52
+61,26,47,27,59
+40,52,24,48,26
+63,56,44,40,34
+75,34,64,76,61
+58,63,53,50,68
+65,38,81,59,23
+54,65,41,76,53
+75,61,42,58,40
+44,42,58,41,56
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample2.csv b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample2.csv
new file mode 100644
index 00000000..f6273be2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s14dataprocessing/sample2.csv
@@ -0,0 +1,10 @@
+50,68,57,65,60
+64,48,65,61,72
+41,45,31,51,47
+54,55,39,47,39
+34,52,43,50,47
+54,31,58,38,79
+14,36,56,46,63
+78,54,40,64,42
+40,44,68,59,46
+41,65,40,44,37
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1501mant.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1501mant.cdy
new file mode 100644
index 00000000..5c5e4681
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1501mant.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1502torus.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1502torus.cdy
new file mode 100644
index 00000000..73b7c10c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1502torus.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1503parabola.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1503parabola.cdy
new file mode 100644
index 00000000..c68725b7
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1503parabola.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1504conecut.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1504conecut.cdy
new file mode 100644
index 00000000..a0ac796b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1504conecut.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1505skeleton.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1505skeleton.cdy
new file mode 100644
index 00000000..6a354f01
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1505skeleton.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1506skeleton2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1506skeleton2.cdy
new file mode 100644
index 00000000..dcf2f93d
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samples/s15C/s1506skeleton2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basic.cdy b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basic.cdy
new file mode 100755
index 00000000..e78fe2b3
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basic.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basicketcindy.html b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basicketcindy.html
new file mode 100644
index 00000000..6ae9f06e
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js01basicketcindy.html
@@ -0,0 +1,6491 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+
+ <title>js01basic.cdy</title>
+ <style type="text/css">
+ * {
+ margin: 0px;
+ padding: 0px;
+ }
+
+ #CSConsole {
+ background-color: #FAFAFA;
+ border-top: 1px solid #333333;
+ bottom: 0px;
+ height: 200px;
+ overflow-y: scroll;
+ position: fixed;
+ width: 100%;
+ }
+ </style>
+ <link rel="stylesheet" href="http://cindyjs.org/dist/v0.8/CindyJS.css">
+ <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/Cindy.js"></script>
+ <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/KetCindyPlugin.js"></script>
+<script id="csdraw" type="text/x-cindyscript">
+Fhead="js01basic"; // write a head name
+Texparent="";
+Ketinit();
+Changework(Dirhead+"/ketsample/samplesJS");
+
+Addax(1);
+
+Listplot([A,B,C,A],["do"]);
+Plotdata("1","sin(x)","x");
+Expr([D,"e","y=\sin x"]);
+Letter([A,"w","A",B,"n","B",C,"e","C"]);
+Windispg();
+//Help("List");
+
+;
+</script>
+<script id="csinit" type="text/x-cindyscript">
+Ketinit():=Ketinit(1);
+Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]);
+Ketinit(sy,rangex,rangey):=(
+ regional(pt,tmp,tmp1,tmp2);
+ PenThickInit=8;
+ ULEN="1cm";
+ KETPICLAYER=20;
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ KETPICCOUNT=1;
+ KCOLOR=[0,0,0];
+ GLIST=[];
+ GCLIST=[];
+// GDATALIST=[];
+ GOUTLIST=[];
+ POUTLIST=[];
+ VLIST=[];
+ FUNLIST=[];
+ LETTERlist=[];
+ COM0thlist=[];
+ COM1stlist=[];
+ COM2ndlist=[];
+ SCIWRLIST=[];
+ SCIRELIST=[];
+ ADDAXES="1";
+ LFmark=unicode("000a");
+ Dq=unicode("0022");
+ WaitUnit=10;
+ CONTINUED=0;
+ OutComList=[];
+ OutFileLIst=[]; // 15.10.22
+ FigPdfList=[]; // 16.04.08
+ ADDPACK=[]; // 16.05.16
+ ErrFlag=0;
+ setdirectory(Dirwork);
+ if(isstring(Fhead), // 15.04.06
+ Fnametex=Fhead+".tex";
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+ );
+ if(!isstring(Mackc),// 16.06.07
+ Mackc="sh";
+ );
+ ArrowlineNumber=1; // 15.01.05
+ ArrowheadNumber=1;
+ BezierNumber=1; //15.01.03
+ SCALEX=1;
+ SCALEY=sy;
+// Setscaling(sy);
+ XMIN=rangex_1/SCALEX;
+ XMAX=rangex_2/SCALEX;
+ YMIN=rangey_1/SCALEY;
+ YMAX=rangey_2/SCALEY;
+ Setwindow("Msg=n"); // 16.05.31
+);
+
+DqDq(str):=unicode("0022")+str+unicode("0022");
+
+Tab2list(dtstr):=Tab2list(dtstr,[]);
+Tab2list(dtstr,options):=(
+//help:Tab2list(datastr);
+//help:Tab2list(options=[0]);
+ regional(dtall,dt,rep,out,crm,lfm,htm,first,tmp,tmp1,tmp2);
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ htm=unicode("0009");
+ rep=0;
+ if(length(options)>0,rep=options_1);
+ first=lfm; // 16.09.05from
+ if(indexof(dtstr,crm)>0,
+ first=crm;
+ if(indexof(dtstr,crm+lfm)>0,
+ first=first+lfm;
+ ); // 16.09.05upto
+ );
+ tmp1=Indexall(dtstr,first);
+ tmp1=prepend(0,tmp1);
+ tmp1=append(tmp1,length(dtstr));
+ dtall=[];
+ forall(1..(length(tmp1)-1),
+ tmp=substring(dtstr,tmp1_#,tmp1_(#+1)-1);
+ if(length(tmp)>0,
+ dtall=append(dtall,tmp);
+ );
+ );
+ out=[];
+ forall(dtall,dt,
+ tmp1=tokenize(dt,unicode("0009"));
+ tmp2=[];
+ forall(tmp1,
+ if(isstring(#),tmp=parse(#),tmp=#);
+ if(!isreal(tmp),
+ if(length(#)>0,tmp=#,tmp=rep);
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ out=append(out,tmp2);
+ );
+ out;
+);
+
+Columnlist(dt,list):=( // 16.09.04
+//help:Columnlist(dt,1..3);
+ apply(dt,#_list);
+);
+
+Dispmat(dt):=( // 16.09.16
+//help:Dispmat(dt);
+ regional(htm,crm,lfm,row,tmp,tmp1,tmp2);
+ htm=unicode("0009");
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ tmp2="";
+ forall(dt,row,
+ tmp1="";
+ forall(row,
+ if(isstring(#),
+ tmp1=tmp1+#+htm;
+ ,
+ tmp1=tmp1+text(#)+htm;
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp1=tmp1+lfm;
+ tmp2=tmp2+tmp1;
+ );
+ print(tmp2);
+ println();
+);
+
+norm(v1):=( // 16.09.01
+//help:norm([2,1,3]);
+ regional(out,tmp,tmp1,tmp2);
+ out=0;
+ forall(1..length(v1),
+ out=out+(v1_#)^2;
+ );
+ out=sqrt(out);
+ out;
+);
+norm(v1,v2):=(
+ norm(v2-v1);
+);
+
+// 16.03.28
+Removespace(str):=(
+//help:Removespace(" a b c ");
+ regional(tmp,flg,out);
+ tmp=length(str)+1;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ if((str_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(str,tmp-1,length(str));
+ flg=0;
+ tmp=0;
+ forall(reverse(1..length(out)),
+ if(flg==0,
+ if((out_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(out,0,tmp);
+);
+
+Indexall(str,key):=(
+ regional(rest,out,flg,tmp,tmp1,);
+ out=[];
+ rest=str;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ tmp=indexof(rest,key);
+ if(tmp>0,
+ tmp1=tmp+length(str)-length(rest);
+ out=append(out,tmp1);
+ rest=substring(rest,tmp,length(rest));
+ ,
+ flg=1;
+ );
+ );
+ );
+ out;
+);
+
+Changework(path):=(
+//help:Changework(directory);
+ regional(tmp); // 16.04.23from
+ Dirwork=path;
+ setdirectory(Dirwork); // 16.04.23
+ if(ismacosx(),
+ if(!iskcexists(Dirwork), // 16.06.07from
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+// if(!isstring(Dq),Dq=unicode("0022")); // 18.07.30
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ println(SCEOUTPUT,"chmod +x kc.sh");
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+"/kc.sh",Dirlib,Fnametex)); // 16.07.23
+ ); // 16.06.07upto
+ );
+);
+
+Changestyle(nameL,style):=(
+//help:Changestyle(["sgAB"],["da"]);
+ regional(nmL,name,Ltype,Ltypeorg,Noflg,opcindy,tmp);
+ tmp=Divoptions(style);
+ Ltypeorg=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ forall(nmL,name,
+ Ltype=Ltypeorg;
+ GCLIST=select(GCLIST,#_1!=name);
+ COM2ndlist=select(COM2ndlist,indexof(#,"("+name)==0); // 15.05.23
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+);
+
+Op(n,object):=( // 16.05.25
+//help:Op(4,[1,2,3,4]);
+//help:Op(3,"abcd");
+ regional(out);
+ if(islist(object),
+ out=object_n;
+ ,
+ if(isstring(object),
+ out=substring(object,n-1,n);
+ );
+ );
+ out;
+);
+
+Toupper(str):=(
+ regional(alphabet,out,tmp,tmp1);
+ alphabet="abcdefghijklmnopqrstuvwxyz";
+ out="";
+ forall(1..length(str),
+ tmp=substring(str,#-1,#);
+ tmp1=indexof(alphabet,tmp);
+ if(tmp1>0,
+ out=out+unicode(text(tmp1+64),base->10);
+ ,
+ out=out+tmp;
+ );
+ );
+ out;
+);
+
+Textformat(value,dig):=(
+//help:Textformat(2/3,4);
+//help:Textformat([gr1,gr2],5);
+ regional(vv,tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+Textformat(#,dig)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ if(ispoint(value) % isstring(value),
+// vv=Lcrd(value);
+// tmp1=Textformat(vv,dig);
+// tmp1=text(value); // 15.04.07
+ if(isstring(value),tmp1=Dq+value+Dq,tmp1=text(value)); // 15.10.02
+ ,
+ tmp1=format(value,dig);
+ );
+ );
+ tmp1;
+);
+
+Sprintf(value,dig):=(
+//help:Sprintf(5.1,4);
+ regional(vv,tmp,tmp1);
+ if(!islist(value),
+ vv=Textformat(value,dig);
+ if(indexof(vv,".")==0,vv=vv+".");
+ vv=vv+"0000000000000000";
+ tmp=indexof(vv,".")+dig;
+ vv=substring(vv,0,tmp);
+ ,
+ vv=apply(value,Sprintf(#,dig));
+ );
+ vv;
+);
+
+Assign(funstr,vrL):=(
+ regional(nn,out,tmp,tmp1);
+ nn=length(vrL)/2;
+ out=funstr;
+ forall(1..nn,
+ out=Assign(out,vrL_(2*#-1),vrL_(2*#));
+ );
+ out;
+);
+
+Assign(funstr,varname,rep):=(
+//help:Assign("x^2+a*x","a",1.3);
+//help:Assign("a*x^2+b*x",["a",1,"b",2]);
+ regional(repstr,ii,jj,tmp,tmp1,tmp2,Notvar,Flg);
+ if(isstring(rep),repstr=rep,repstr="("+Textformat(rep,5)+")"); // 15.02.09, 07.06
+ tmp=[46]; // 12.20
+ tmp=concat(tmp,48..57);
+ tmp=concat(tmp,65..90);
+ tmp=concat(tmp,97..122);
+ Notvar=apply(tmp,unicode(text(#),base->10));
+ tmp2="";
+ forall(1..100,
+ ii=indexof(funstr,varname);
+ if(ii>0,
+ Flg=0;
+ if(ii>1,
+ tmp=substring(funstr,ii-2,ii-1);
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,ii);
+ funstr=substring(funstr,ii,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ jj=ii-1+length(varname);
+ if(jj<length(funstr),
+ tmp=substring(funstr,jj,jj+1));
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,jj);
+ funstr=substring(funstr,jj,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp2=tmp2+substring(funstr,0,ii-1)+repstr;
+ funstr=substring(funstr,jj,length(funstr));
+ );
+ );
+ );
+ funstr=tmp2+funstr;
+ funstr;
+);
+
+MeasureDepth(list):=(
+ regional(tmp,Depth,Flg);
+ Flg=0;
+ Depth=0;
+ if(ispoint(list), // 15.01.22
+ Depth=0;
+ Flg=1;
+ ,
+ tmp=list_1;
+ );
+ repeat(4,
+ if(Flg==0,
+ if(islist(tmp),
+ tmp=tmp_1;
+ Depth=Depth+1;
+ ,
+ if(ispoint(tmp),Depth=Depth+1);
+ Flg=1;
+ );
+ );
+ );
+ Depth;
+);
+
+Flattenlist(pltlist):=(
+//help:Flattenlist([[2,3],[[1,2],[5,6]]]);
+ regional(Out,nn,Dt,ii,tmp,flg);
+ Out=[];
+ if(MeasureDepth(pltlist)==1,
+ Out=[pltlist];
+ ,
+ forall(1..length(pltlist),nn,
+ Dt=pltlist_nn;
+ if(MeasureDepth(Dt)<2,
+ Out=append(Out,Dt);
+ ,
+ forall(1..length(Dt),ii,
+ tmp=Flattenlist(Dt_ii);
+ Out=concat(Out,tmp);
+ );
+ );
+ );
+ );
+ Out;
+);
+
+Divoptions(options):=(
+//help:Divoptions(options);
+ regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy,flg,tmp,tmp1);
+ Ltype="dr"; // 2015.01.13
+ Noflg=0;
+ Inflg=0;
+ Outflg=0;
+ eqL=[];
+ realL=[];
+ strL=[];
+ opstr="";
+ opcindy="";
+ forall(options,
+ flg=0;
+ if(flg==0,
+ if(isreal(#) % ispoint(#) % islist(#),
+ realL=append(realL,#);
+ opstr=opstr+","+text(#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"=")>0,
+ eqL=append(eqL,#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"no")+indexof(#,"No")>0,
+ if(indexof(#,"tex")>0,Noflg=1);
+ if(indexof(#,"disp")>0,Noflg=2);
+ if(indexof(#,"data")>0,Noflg=3);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"out")+indexof(#,"Out")>0,
+ if(indexof(#,"-")==0,
+ Outflg=1;
+ ,
+ Outflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"in")+indexof(#,"In")>0,
+ if(indexof(#,"-")==0,
+ Inflg=1;
+ ,
+ Inflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp=substring(#,0,2);
+ tmp1=indexof(tmp,"dr")+indexof(tmp,"Dr");
+ tmp1=tmp1+indexof(tmp,"da")+indexof(tmp,"Da");
+ tmp1=tmp1+indexof(tmp,"id")+indexof(tmp,"Id");
+ tmp1=tmp1+indexof(tmp,"do")+indexof(tmp,"Do");
+ tmp1=tmp1+indexof(tmp,"dp")+indexof(tmp,"Dp");
+ if(tmp1>0,
+ Ltype=#;
+ flg=1;
+ );
+ if(flg==0,
+ strL=append(strL,#);
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ );
+ if(indexof(opcindy,"color->")==0,// 16.10.07from
+ opcindy=opcindy+",color->[0,0,0]";
+ );
+ [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy];
+);
+
+Dotprod(vec1,vec2):=(
+//help:Dotprod(vec1,vec2);
+ regional(v1,v2,tmp);
+ if(ispoint(vec1),v1=vec1.xy,v1=vec1);
+ if(ispoint(vec2),v2=vec2.xy,v2=vec2);
+ v1*v2;
+);
+
+Crossprod(a,b):=(
+//help:Crossprod(vec1,vec2);
+ regional(tmp1,tmp2,tmp3,Out);
+ if(length(a)==3,
+ tmp1=a_2*b_3-a_3*b_2;
+ tmp2=a_3*b_1-a_1*b_3;
+ tmp3=a_1*b_2-a_2*b_1;
+ Out=[tmp1,tmp2,tmp3];
+ ,
+ Out=a_1*b_2-a_2*b_1;
+ );
+ Out;
+);
+
+Ptstart(Fig):=(
+//help:Ptstart("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21
+ tmp_1;
+);
+
+Ptend(Fig):=(
+//help:Ptend("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_(length(tmp)); // 15.04.12
+);
+
+Numptcrv(Fig):=(
+//help:Numptcrv("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23
+ length(tmp);
+);
+
+Ptcrv(Num,Fig):=(
+//help:Ptcrv(10,"gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_Num;
+);
+
+Invert(Fig):=(
+//help:Invert("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27
+ reverse(tmp);
+);
+Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 16.01.27
+Invert(nm,Fig,options):=(
+//help:Invert("1","gr1");
+ regional(name,tmp);
+ name="-inv"+nm;
+ tmp=Invert(Fig);
+ Listplot(name,tmp,options);
+);// upto 16.01.27
+
+Paramoncrv(pP,Gdata):=(
+ regional(Tmp,PtL);
+// Eps=10^(-8);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ Tmp=Nearestpt(pP,PtL);
+ Tmp_2;
+);
+
+ParamonCurve(pP,nN,plist):=(
+//help:ParamonCurve(A,10,"gr1");
+ regional(PtL,Out,Pa,Pb,vV,vW,sS);
+ if(isstring(plist),PtL=parse(plist),PtL=plist);
+ if(nN==length(PtL),
+ Out=nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ vV=Pb-Pa;
+ vW=pP-Pa;
+ sS=vV*vW/|vV|^2;
+ sS=min([max([sS,0]),1]);
+ Out=nN+sS;
+ );
+ Out;
+);
+
+Pointoncrv(tT,PtL):=PointonCurve(tT,PtL);
+PointonCurve(tT,Gdata):=(
+//help:PointonCurve(20.5,"gr1");
+ regional(Out,Eps,nN,sS,Pa,Pb,PtL);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ if(length(PtL)==1,PtL=PtL_1);
+ Eps=10^(-4);
+ nN=floor(tT+Eps);
+ sS=max([tT-nN,0]);
+ if(nN==length(PtL),
+ Out=PtL_nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ Out=(1-sS)*Pa+sS*Pb;
+ );
+ Out;
+);
+
+Koutenseg(pA,pB,pC,pD):=Koutenseg(pA,pB,pC,pD,[]);
+Koutenseg(pA,pB,pC,pD,options):=(
+ regional(Eps0,Eps,Eps2,pV,Sv2,Out,pP,pQ,Flg,p1,p2,q1,q2,
+ em1,eM1,em2,eM2,rT,Tmp1,Tmp2);
+ Eps0=10^(-4);
+ pV=pB-pA;
+ Sv2=|pV|;
+ pP=pC-pA; pQ=pD-pA;
+ Eps=10^(-3);
+ Eps2=0.2;
+ Tmp1=0;
+ forall(options,
+ if(Tmp1==0,
+ Eps=#;
+ Tmp1=1;
+ ,
+ Eps2=#;
+ );
+ );
+ Flg=0;
+ if(Sv2<10^(-3),
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ Eps=min([Eps2,Eps/Sv2]);
+ p1=pP*pV/Sv2^2;
+ p2=[pP_2,-pP_1]*pV/Sv2^2;
+ q1=pQ*pV/Sv2^2;
+ q2=[pQ_2,-pQ_1]*pV/Sv2^2;
+ em1=-Eps; eM1=1+Eps;
+ em2=-Eps; eM2=Eps;
+ if(max([p1,q1])<em1 % min([p1,q1])>eM1,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(max([p2,q2])<em2 % min([p2,q2])>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & p2*q2<0,
+ rT=p1-(q1-p1)/(q2-p2)*p2;
+ if(rT>em1 & rT<eM1,
+ if(rT>-Eps0 & rT<1+Eps0,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,0];
+ ,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,1];
+ );
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ );
+ if(Flg==0 & (p1 > -Eps0 & p1 < 1 + Eps0 & p2 > -Eps0 & p2 < Eps0),
+ rT= p1;
+ Tmp1=pA+rT*pV;
+ Out= [Tmp1, rT, 0];
+ Flg=1;
+ );
+ if(Flg==0 & (q1 > -Eps0 & q1 < 1 + Eps0 & q2 > -Eps0 & q2 < Eps0),
+ rT= q1;
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,0];
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([q1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & (q1<em1 % q1>eM1% q2<em2 % q2>eM2),
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ if(Flg==0,
+ if(abs(p2)<abs(q2),
+ rT=min([max([p1,0]),1]);
+ ,
+ rT=min([max([q1,0]),1]);
+ );
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ );
+ Out;
+);
+
+IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]);
+IntersectcrvsPp(Gr1,Gr2,options):=(
+//help:IntersectcrvsPp("gr1","pa1");
+ regional(Out,Eps,Eps2,Eps0,Flg,Data1,Data2,
+ Tmp1,Tmp2,Tmp3,Tmp,KL1,KL2,pA,pB,Ni,Nj,
+ pP,pQ,rT,Flg,eqL,realL,opstr,Dif);
+ Eps=10^(-4);
+ Eps2=0.1;
+ Dif=0.05; // 2015.05.31
+ Flg=0;
+ Tmp1=Divoptions(options); //
+ eqL=Tmp1_5;
+ realL=Tmp1_6;
+ opstr=Tmp1_(length(Tmp1));
+ forall(eqL,
+ if(substring(#,0,1)=="D",
+ Tmp1=indexof(#,"=");
+ Dif=parse(substring(#,Tmp1,length(#)));
+ );
+ );
+ Tmp1=length(realL);
+ if(Tmp1>0,
+ Eps=realL_1;
+ if(Tmp1>1,
+ Eps2=realL_2;
+ );
+ );
+ Flg=0;
+ if(isstring(Gr1),Data1=parse(Gr1),Data1=Gr1);
+ if(isstring(Gr2),Data2=parse(Gr2),Data2=Gr2);
+ if(MeasureDepth(Data1)==2,Data1=Data1_1);
+ if(MeasureDepth(Data2)==2,Data2=Data2_1);
+ Data1=apply(Data1,LLcrd(#));
+ Data2=apply(Data2,LLcrd(#));
+ if(length(Data1)==length(Data2),
+ Tmp1=Reverse(Data2);
+ Eps0=10^(-6);
+ Tmp2=0;
+ forall(1..length(Data1),
+ Tmp2=Tmp2+abs(Data1_#-Data2_#);
+ );
+ Tmp3=0;
+ forall(1..length(Data1),
+ Tmp3=Tmp3+abs(Data1_#-Tmp1_#);
+ );
+ if(Tmp2<Eps0 % Tmp3<Eps0,
+ Out=[];
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ KL1=[];
+ KL2=[];
+ forall(1..(length(Data1)-1),Ni,
+ pA=Data1_Ni;
+ pB=Data1_(Ni+1);
+ forall(1..(length(Data2)-1),
+ pP=Data2_#; pQ=Data2_(#+1);
+ Tmp=Koutenseg(pA,pB,pP,pQ,[Eps,Eps2]);
+ if(Tmp!=["inf","inf"],
+ if(Tmp_3==0,
+ Tmp1=[Tmp_1,Tmp_2,Ni,#];
+ KL1=concat(KL1,[Tmp1]);
+ ,
+ Tmp2=[Tmp_1,Tmp_2,Ni,#];
+ KL2=concat(KL2,[Tmp2]);
+ );
+ );
+ );
+ );
+ Out=[];
+ if(length(KL1)>0,
+ Tmp=KL1_1;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Ni=Tmp_3;
+ Nj=Tmp_4;
+ Tmp=[pP,Ni+rT,Nj];
+ Out=[Tmp];
+ );
+ forall(2..length(KL1),Ni,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Tmp1=Tmp_3;
+ Tmp2=Tmp_4;
+ Tmp=[pP,Tmp1+rT,Tmp2];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ forall(1..length(KL2),Ni,
+ Tmp=KL2_Ni; // 15.11.21 Usui
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL2_Ni;
+ rT=Tmp_2;
+ rT=min([max([rT,0]),1]); // 15.11.21 Usui
+ Tmp=[pP,Tmp_3+rT,Tmp_4];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ );
+ Tmp1=Out; // 15.04.06 from
+ Out=[];
+ forall(Tmp1,Tmp2,
+ Tmp3=select(Out,|#_1-Tmp2_1|<Dif);
+ if(length(Tmp3)==0,
+ Out=append(Out,Tmp2);
+ );
+ ); // 15.04.06 upto
+ Out;
+);
+
+Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]);
+//help:Intersectcrvs("gr1","pa1");
+Intersectcrvs(Gr1,Gr2,options):=(
+ regional(tmp,tmp1,tmp2);
+ tmp1=IntersectcrvsPp(Gr1,Gr2,options);
+ apply(tmp1,#_1);
+);
+
+NearestptcrvPhy(point,PL):=(
+ regional(tmp,pP,plist);
+ pP=Pcrd(point);
+ if(isstring(PL),plist=parse(PL),plist=PL);
+ if(MeasureDepth(plist)==2,plist=plist_1);
+ plist=apply(plist,#); // 14.12.18
+ tmp=Nearestpt(pP,plist);
+ tmp=tmp_1;
+ [tmp_1/SCALEX,tmp_2/SCALEY];
+);
+
+Nearestptcrv(point,plist):=(
+//help:Nearestptcrv(A,"gr1");
+ regional(tmp);
+ tmp=Nearestpt(point,plist);
+ tmp_1;
+);
+
+Nearestpt(point,PL2):=(
+ regional(PL1,PL,Ans,Flg,Eps,pA,Pm,Im,Sm,Nn,Ni,
+ a1,b1,a2,b2,v1,v2,x1,x2,Tmp,rT,pP,sS,Lm,Pm,Sm,Flg);
+//help:Nearestpt("gr1","gr2");
+ if(isstring(point),PL1=parse(point),PL1=point);
+ if(MeasureDepth(PL1)==2,PL1=PL1_1);
+ if(!islist(PL1_1),
+ PL1=[PL1];
+ Flg=0;
+ ,
+ Flg=1;
+ );
+ if(isstring(PL2),PL=parse(PL2),PL=PL2);
+ if(MeasureDepth(PL)==2,PL=PL_1);
+ Eps=10^(-6);
+ Ans=[PL1_1,1,PL_1,1,|PL1_1-PL_1|];
+ forall(1..length(PL1),Nn, // 16.05.04
+ pA=PL1_Nn;
+ Pm=PL_1;
+ Im=1;
+ Sm=|Pm-pA|;
+ forall(1..(length(PL)-1),Ni,
+ a1=PL_Ni_1; a2=PL_Ni_2;
+ b1=PL_(Ni+1)_1; b2=PL_(Ni+1)_2;
+ v1=b1-a1; v2=b2-a2;
+ x1=pA_1; x2=pA_2;
+ Tmp=v2^2+v1^2;
+ if(abs(Tmp)>Eps,
+ rT=(-a2*v2-v1*a1+v1*x1+x2*v2)/Tmp;
+ if(rT<-Eps,
+ pP=[a1,a2];
+ ,
+ if(rT>1+Eps,
+ pP=[b1,b2];
+ ,
+ pP=[a1+rT*v1,a2+rT*v2];
+ );
+ );
+ sS=|pP-pA|;
+ if(sS<Sm-Eps,
+ Tmp=ParamonCurve(pP,Ni,PL);
+ Pm=pP; Lm=Tmp; Sm=sS;
+ );
+ );
+ if(Sm<Ans_5, // 16.05.03from
+ Ans=[pA,Nn,Pm,Lm,Sm];
+ );
+ ); // 16.05.03upto
+ );
+ if(Flg==0,
+ Ans=Ans_(3..5);
+ );
+ Ans;
+);
+
+Derivative(fun,var,value):=(
+//help:Derivative("x^3","x",2);
+ regional(str,tmp);
+ str="d(";
+ str=str+replace(fun,var,"#")+",";
+ str=str+value+")";
+ tmp=Pcrd([1,parse(str)]); // 14.11.08
+ tmp_2;
+);
+
+Integrate(pltdata,range):=Integrate(pltdata,range,[]);
+Intergrate(Arg1,Arg2,Arg3):=(
+ regional(pltdata,range,options,fnstr,vartr);
+ if(islist(Arg2),
+ pltdata=Arg1;
+ range=Arg2;
+ options=Arg3;
+ Integrate(pltdata,range,options);
+ ,
+ fnstr=Arg1;
+ vastr=Arg2;
+ range=Arg3;
+ Integrate(fnstr,vastr,range,[]);
+ );
+);
+
+Integrate(pltdata,range,options):=(
+//help:Integrate("gr1",[1,3]);
+//help:Integrate("gr1",[1,3],["Rule=t"]);
+ regional(tmp,tmp1,eqL,Rule,pdata,Sm,ptP,ptQ,list,va1,va2);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ Rule="o";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Rule=substring(#,tmp,tmp+1);
+ );
+ );
+ if(Rule=="o",
+ Sm= IntegrateO(pltdata,range);
+ ,
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ list=apply(list,LLcrd(#)); // 15.09.14
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ ptP=list_#; // 15.09.14
+ ptQ=list_(#+1);
+ Sm=Sm+(ptP_2+ptQ_2)*(ptQ_1-ptP_1)/2;
+ );
+ Sm;
+ );
+);
+
+Integrate(fnstr,vastr,range,options):=(
+//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]);
+ regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2);
+ Num=100;
+ Way="t";
+ forall(options,
+ if(indexof(#,"=")>0,
+ if(indexof(#,"N=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(indexof(#,"Num=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Way=substring(#,tmp,tmp+1);
+ );
+ );
+ );
+ Sm=0;
+ if(Way=="t",
+ forall(1..Num,
+ Lx=range_1+(range_2-range_1)*(#-1)/Num;
+ Rx=range_1+(range_2-range_1)*#/Num;
+ va1=parse(replace(fnstr,vastr,textformat(Lx,5)));
+ va2=parse(replace(fnstr,vastr,textformat(Rx,5)));
+ Sm=Sm+(va1+va2)*(Rx-Lx)/2;
+ );
+ ,
+ sx=range_1;
+ ex=range_2;
+ dx=(ex-sx)/Num;
+ xn=apply(0..Num,sx+#*dx);
+ yn=apply(xn,parse(replace(fnstr,vastr,textformat(#,5))));
+ dx=dx/2;
+ repeat(Num,s,
+ x0=xn_s;
+ x1=(xn_s+xn_(s+1))/2;
+ x2=xn_(s+1);
+ y0=yn_s;
+ y1=parse(replace(fnstr,vastr,textformat(x1,5)));
+ y2=yn_(s+1);
+ Sm=Sm+dx*(y0+4*y1+y2)/3;
+ );
+ );
+ Sm;
+);
+
+IntegrateO(p0org,p1org,p2org,p3org):=(
+ regional(p0,p1,p2,p3,pQ,pR,cc,p01,p02,
+ p11,p12,p21,p22,p31,p32, tmp);
+ if(ispoint(p0org),p0=p0org.xy,p0=p0org); // 16.03.10
+ if(ispoint(p1org),p1=p1org.xy,p1=p1org); // 16.03.16
+ if(ispoint(p2org),p2=p2org.xy,p2=p2org);
+ if(ispoint(p3org),p3=p3org.xy,p3=p3org);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp=tmp/20;
+);
+IntegrateO(pltdata,rangeorg):=(
+//help:IntegrateO("gr1",[0,2]);
+ regional(tmp,tmp1,tmp2,pdata,va1,va2,list,Bzk,Bzc,range,pmflg,
+ Sm,p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ range=rangeorg;
+ pmflg=1;
+ if(range_2<range_1,
+ range=reverse(range);
+ pmflg=-1;
+ );
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ if((length(list)>0) & (list_1_1>list_(length(list))_2),
+ list=reverse(list);
+// pmflg=pmflg*(-1);
+ );
+ list=apply(list,LLcrd(#));
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ p1=list_#;
+ p2=list_(#+1);
+ if(#==1 % #==length(list)-1,
+ tmp1=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ Sm=Sm+tmp1;
+ ,
+ p0=list_(#-1);
+ p3=list_(#+2);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp1=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp1=tmp1/20;
+ Sm=Sm+tmp1;
+ );
+ );
+ if(pmflg==-1,
+ Sm=-Sm;
+ );
+ Sm;
+);
+
+Findarea(pdstr):=(
+//help:Findarea("sgABCA");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findarea(pdstr):=( // 15.11.27
+//help:Findarea("cr1");
+ regional(pd,p0,p1,p2,p3,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=pd_#;
+ p2=pd_(#+1);
+ if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1));
+ if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2));
+ tmp=IntegrateO(p0,p1,p2,p3);
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findlength(pdstr):=(
+//help:Findlength("gr1");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=|p2-p1|;
+ s=s+tmp;
+ );
+ s;
+);
+
+Inversefun(fnstr,rngstr,value):=(
+ regional(tmp,varstr,range,x1,x2,x3,va1,va2);
+ tmp=indexof(rngstr,"=");
+ varstr=substring(rngstr,0,tmp-1);
+ range=parse(substring(rngstr,tmp,length(rngstr)));
+ x1=range_1; x2=range_2;
+ repeat(15,
+ x3=(x1+x2)/2;
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)));
+ va2=parse(replace(fnstr,varstr,textformat(x3,5)));
+ if((va1>value & va2>value) % (va1<value & va2<value),
+ x1=x3;
+ ,
+ x2=x3;
+ );
+ );
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)))-value;
+ va2=parse(replace(fnstr,varstr,textformat(x2,5)))-value;
+ if(x1==range_1 % x2==range_2,
+ println("not found in ("+textformat(range_1,5)
+ +","+textformat(range_2,5)+")");
+ );
+ if(abs(va1)<=abs(va2),x1,x2);
+);
+
+Lcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=[pt.x/SCALEX,pt.y/SCALEY];
+ ,
+ tmp=pt;
+ );
+ tmp;
+);
+
+Pcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=re(pt.xy); // 15.07.24
+ ,
+ tmp=[pt_1*SCALEX,pt_2*SCALEY];
+ );
+ tmp;
+);
+
+LLcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=pt.xy
+ ,
+ tmp=pt;
+ );
+ tmp=[tmp_1/SCALEX,tmp_2/SCALEY];
+ tmp;
+);
+
+Doscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Unscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Definecolor(name,data):=(
+//help:Definecolor("mycolor",[1,1,1,0]);
+ regional(type,tmp);
+ if(length(data)>3,type="cmyk",type="rgb");
+ tmp=text(data);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="\definecolor{"+name+"}{"+type+"}{"+tmp+"}";
+ Texcom(tmp);
+);
+
+Setcolor(Par):=(
+//help:Setcolor([1,0,0,1]);
+//help:Setcolor([1,1,0]);
+ if(islist(Par),
+ if(length(Par)==3,
+ Setcolorrgb(Par); // 2015.04.28
+// KCOLOR=Par;
+ );
+ if(length(Par)==4,
+ Setcolor(Par,[]);
+ );
+ ,
+ Setcolor(Par,[]);
+ );
+);
+
+Setcolor(colorname,options):=(
+//help:Setcolor("greenyellow",0.3);
+ regional(tmp);
+ if(isstring(colorname),
+ tmp="Setcolor("+Dq+colorname+Dq;
+ if(length(options)>0,
+ tmp=tmp+","+text(options_1);
+ );
+ Com2nd(tmp+")");
+ );
+ if(islist(colorname),
+ tmp=text(colorname);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[cmyk]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+ );
+);
+
+Setcolorrgb(colorlist):=(
+// help:Setcolorrgb([0.5,0.3,0.4]);
+ regional(tmp);
+ tmp=text(colorlist);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[rgb]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+);
+
+ColorRgb2Cmyk(clr):=(
+// help:ColorRgb([0.2,0.5,0.1]);
+ regional(clrnew,tmp,black);
+ tmp=apply(clr,1-#);
+ black=min(tmp);
+ tmp=apply(clr,(1-#-black)/(1-black));
+ clrnew=append(tmp,black);
+ clrnew;
+);
+
+ColorCmyk2Rgb(clr):=(
+// help:ColorRgb([0.2,0.5,0.1,0.2]);
+ regional(clrnew,tmp,black);
+ black=clr_4;
+ tmp=apply(clr,1-min(1,#*(1-black)+black));
+ clrnew=tmp_(1..3);
+ clrnew;
+);
+
+Colorrgbhsv(rgb):=(
+ regional(varR,varG,varB,varMin,varMax,delMax,hh,ss,vv,delR,delG,delB);
+ varR = rgb_1;
+ varG = rgb_2;
+ varB = rgb_3;
+ varMin = min( [varR, varG, varB] );
+ varMax = max( [varR, varG, varB] );
+ delMax = varMax - varMin ;
+ vv = varMax;
+ if ( delMax == 0 ,
+ hh = 0 ;
+ ss = 0 ;
+ ,
+ ss = delMax / varMax;
+ delR = ( ( ( varMax - varR ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delG = ( ( ( varMax - varG ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delB = ( ( ( varMax - varB ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ if( varR == varMax ,
+ hh = delB - delG;
+ ,
+ if ( varG == varMax,
+ hh = ( 1 / 3 ) + delR - delB;
+ ,
+ if ( varB == varMax ,
+ hh = ( 2 / 3 ) + delG - delR;
+ );
+ );
+ );
+ if ( hh < 0 ,hh = hh+1);
+ if ( hh > 1 ,hh = hh-1);
+ );
+ [hh*360,ss,vv];
+);
+
+Colorhsvrgb(sL):=(
+ regional(tmp,tmp1,tmp2,tmp3,hi,ff,dL);
+ tmp=[sL_1/60,sL_2,sL_3];
+ hi=mod(floor(tmp_1),6);
+ ff=tmp_1-floor(tmp_1);
+ tmp2=tmp_3*[1-tmp_2,1-tmp_2*ff,1-tmp_2*(1-ff)];
+ tmp2=append(tmp2,tmp_3);
+ if(hi==0,dL=tmp2_[4,3,1]);
+ if(hi==1,dL=tmp2_[2,4,1]);
+ if(hi==2,dL=tmp2_[1,4,3]);
+ if(hi==3,dL=tmp2_[1,2,4]);
+ if(hi==4,dL=tmp2_[3,1,4]);
+ if(hi==5,dL=tmp2_[4,1,2]);
+ dL;
+);
+
+Colorrgbhsl(rgb):=(
+ regional(rr,gg,bb,mn,mx,delta,deltaR,deltaG,deltaB,hh,ss,ll);
+ rr = rgb_1 ;
+ gg = rgb_2 ;
+ bb = rgb_3 ;
+ mn = min([rr, gg, bb]);
+ mx = max([rr, gg, bb]);
+ delta = mx - mn;
+ ll = (mx + mn) / 2;
+ if (delta == 0,
+ hh=0;
+ ss=0;
+ ,
+ if (ll < 0.5,
+ ss = delta/ (mx + mn);
+ ,
+ ss = delta / (2 - mx - mn);
+ );
+ deltaR = (((mx - rr) / 6) + (delta / 2)) / delta;
+ deltaG = (((mx - gg) / 6) + (delta / 2)) / delta;
+ deltaB = (((mx - bb) / 6) + (delta / 2)) / delta;
+ if (rr == mx,
+ hh = deltaB - deltaG;
+ ,
+ if (gg == mx,
+ hh = (1 / 3) + deltaR - deltaB;
+ ,
+ if (bb == mx,
+ hh = (2 / 3) + deltaG - deltaR;
+ );
+ );
+ );
+ if ( hh < 0, hh = hh+1);
+ if ( hh > 1, hh = hh-1);
+ );
+ [hh*360,ss,ll];
+);
+
+Colorhslrgb(hsl):=(
+ regional(hh,ss,ll,rr,gg,bb,var1,var2);
+ hh=hsl_1/360;
+ ss=hsl_2;
+ ll=hsl_3;
+ if ( ss == 0.0,
+ rr = ll ;
+ gg = ll ;
+ bb = ll ;
+ ,
+ if ( ll < 0.5 ,
+ var2 = ll * ( 1.0 + ss );
+ ,
+ var2 = ( ll + ss ) - ( ss * ll );
+ );
+ var1 = 2.0 * ll - var2;
+ rr = hue2rgb( var1, var2, hh + ( 1.0 / 3.0 ) );
+ gg = hue2rgb( var1, var2, hh );
+ bb = hue2rgb( var1, var2, hh - ( 1.0 / 3.0 ) );
+ );
+ [rr,gg,bb];
+);
+
+hue2rgb(vv1,vv2,vh):=(
+ regional(out);
+ if ( vh < 0.0 ,vh =vh+1);
+ if ( vh > 1.0 ,vh =vh-1);
+ if ( 6.0*vh < 1.0 ,
+ out = vv1 + ( vv2 - vv1 ) * 6.0 * vh ;
+ ,
+ if( 2.0*vh < 1.0 ,
+ out = vv2;
+ ,
+ if ( 3.0*vh < 2.0 ,
+ out = vv1 + ( vv2 - vv1 ) * ( ( 2.0 / 3.0 ) - vh ) * 6.0 ;
+ ,
+ out= vv1 ;
+ );
+ );
+ );
+ out;
+);
+
+Colorrgbhwb(sL):=(
+ regional(dl1,dl2,dl3);
+ dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1;
+ dl2 = min(sL);
+ dl3 = 1 - max(sL);
+ dL= [dl1, dl2 , dl3 ];
+);
+
+Colorhwbrgb(sLorg):=(
+ regional(sL,tmp,tmp1,tmp2,tmp3,ratio,ff,ii,vv,nn,dL,flg);
+ sL=sLorg;
+ sL=[sL_1/360,sL_2,sL_3];
+ ratio = sL_2 + sL_3;
+ // sL_2 + sL_3 cant be > 1
+ if (ratio > 1.,
+ sL_2 =sL_2 / ratio;
+ sL_3 = sL_3 / ratio;
+ );
+ ii = floor(6 * sL_1);
+ vv = 1 - sL_3;
+ ff = 6 * sL_1 - ii;
+ if(mod(ii,2)==1,ff = 1 - ff);
+ nn = sL_2 + ff * (vv - sL_2); // linear interpolation
+ tmp=[[vv,nn,sL_2],[nn,vv,sL_2],[sL_2,vv,nn],
+ [sL_2,nn,vv],[nn,sL_2,vv],[vv,sL_2,nn],[vv,nn,sL_2]];
+ flg=0;
+ forall(0..6,
+ if(flg==0 & ii == # ,
+ dL=tmp_(#+1);
+ flg=1;
+ );
+ );
+ dL;
+);
+
+Colorhslhsv(sL):=(
+ regional(dl1,dl2,dl3,dL);
+ dl1=sL_1;
+ if(sL_3 == 0,
+ // no need to do calc on black
+ // also avoids divide by 0 error
+ dL= [0, 0, 0];
+ ,
+ sL_3 = sL_3 * 2;
+ if(sL_3 <= 1,sL_2 = sL_2 * sL_3,sL_2 = sL_2 * (2 - sL_3));
+ dl3 = (sL_3 + sL_2) / 2;
+ dl2 = (2 * sL_2) / (sL_3 + sL_2);
+ dL = [dl1, dl2, dl3];
+ );
+ dL;
+);
+
+Colorcode(src,dest,sL):=(
+//help:Colorcode("rgb","cmyk",[1,0.5,0]);
+ regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg);
+ regional(dl1,dl2,dl3);
+ if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL));
+ if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL));
+ if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL));
+ if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL));
+ if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL));
+ if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL));
+ if(src=="hsl" & dest=="hsv", dL=Colorhslhsv(sL));
+ if(src=="hsv" & dest=="hsl",
+ dl1 = sL_1;
+ dl3 = (2 - sL_2) * sL_3;
+ dl2 = sL_2 * sL_3;
+ if(dl3 <= 1,dl2 = dl2/dl3,dl2=dl2/(2 - dl3));
+ dl3 =d l3/ 2;
+ dL = [dl1, dl2 , dl3 ];
+ );
+
+ if(src=="rgb" & dest=="cmyk",
+ tmp=apply(sL,1-#);
+ black=min(tmp);
+ tmp=apply(sL,(1-#-black)/(1-black));
+ dL=append(tmp,black);
+ );
+ if(src=="cmyk" & dest=="rgb",
+ black=sL_4;
+ tmp=apply(sL,1-min(1,#*(1-black)+black));
+ dL=tmp_(1..3);
+ );
+ if(src=="hsv" & dest=="cmyk",
+ tmp=Colorcode("hsv","rgb",sL);
+ dL=Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsv",
+ tmp=Colorcode("cmyk","rgb",sL);
+ dL=Colorcode("rgb","hsv",tmp);
+ );
+
+ if(src=="hsv" & dest=="hwb",
+ tmp = Colorcode("hsv","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsv",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsv",tmp);
+ );
+ if(src=="hsl" & dest=="hwb",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsl",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="hsl" & dest=="cmyk",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="hwb" & dest=="cmyk",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsl",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="cmyk" & dest=="hwb",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hsb" & dest=="rgb",dL=Colorcode("hsv","rgb",sL));
+ if(src=="rgb" & dest=="hsb",dL=Colorcode("rgb","hsv",sL));
+
+ if(src=="hsb" & dest=="hsl",dL=Colorcode("hsv","hsl",sL));
+ if(src=="hsl" & dest=="hsb",dL=Colorcode("hsl","hsv",sL));
+
+ if(src=="hsb" & dest=="hwb",dL=Colorcode("hsv","hwb",sL));
+ if(src=="hwb" & dest=="hsb",dL=Colorcode("hwb","hsv",sL));
+
+ if(src=="hsb" & dest=="cmyk",dL=Colorcode("hsv","cmyk",sL));
+ if(src=="cmyk" & dest=="hsb",dL=Colorcode("cmyk","hsv",sL));
+
+ dL;
+);
+
+Addcolor(cmdorg,list):=(
+//help:Addcolor("Plotdata('1','x^2','x',[])",[1,1,0]);
+ regional(rgb,cmyk,cmd,tmp,tmp1,tmp2,tmp3,tmp4);
+ cmd=replace(cmdorg,"'",Dq);
+ if(length(list)==3,
+ rgb=list;
+ cmyk=Colorcode("rgb","cmyk",list);
+ ,
+ cmyk=list;
+ rgb=Colorcode("cmyk","rgb",list);
+ );
+ tmp1="color->"+text(rgb);
+ tmp2="Setcolor("+text(cmyk)+");";
+ tmp3=substring(cmd,0,length(cmd)-2);
+ tmp=substring(tmp3,length(tmp3)-1,length(tmp3));
+ if(tmp!="[",
+ tmp3=tmp3+",";
+ );
+ tmp3=tmp3+Dq+tmp1+Dq+"])";
+ parse(tmp2);
+ parse(tmp3);
+ Setcolor("black");
+);
+
+Colorinfile(filename,clrf,clrt):=(
+ regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body);
+ if(length(clrf_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrf,text(#));
+ cstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ if(length(clrt_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrt,text(#));
+ chstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ tmp1=load(filename);
+ tmp=tokenize(tmp1,"{\unitlength");
+ head=tokenize(tmp_1,"%%%");
+ head=head_(2..length(head));
+ head=apply(head,"%%%"+#);
+ tmp2=tmp_2;
+ forall(1..5,
+ tmp2=replace(tmp2,cstrL_#,chstrL_#);
+ );
+ body=tokenize(tmp2,"%");
+ body_1="{\unitlength"+body_1;
+ body=apply(body,#+"%");
+ body=body_(1..(length(body)-1));
+ tmp=replace(filename,".tex","new.tex");
+ SCEOUT=openfile(tmp);
+ forall(head,
+ println(SCEOUT,#);
+ );
+ forall(1..length(body),
+ tmp=body_#;
+ if(#<length(body),
+ println(SCEOUT,tmp);
+ ,
+ print(SCEOUT,tmp)
+ );
+ );
+ closefile(SCEOUT);
+);
+
+GetLinestyle(str,name):=(
+ regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg);
+ Ltype=-1;
+ Dop="";
+ tmp1=indexof(str,",");
+ if(tmp1>0,
+ Dop=","+substring(str,tmp1,length(str));
+ );
+ noflg=parse(substring(str,0,1));
+ if(substring(name,0,3)=="sub",subflg=1,subflg=0); // 16.02.29
+ tmp1=substring(str,1,3);
+ if(tmp1=="dr" % tmp1=="Dr",
+ Ltype=0;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Drwline(name+Dop);
+ );
+ );
+ if(tmp1=="da" % tmp1=="Da",
+ Ltype=1;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dashline(name+Dop);
+ );
+ );
+ if(tmp1=="id" % tmp1=="Id",
+ Ltype=2; // 15.11.09
+ if(noflg==0 & subflg==0, // 16.02.29
+ Invdashline(name+Dop);
+ );
+ );
+ if(tmp1=="do" % tmp1=="Do",
+ Ltype=3;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dottedline(name+Dop);
+ );
+ );
+ if(tmp1=="dp" % tmp1=="Dp",
+ Ltype=0;
+ tmp1=parse(name);
+ tmp2="";
+ forall(tmp1,
+ tmp2=tmp2+textformat(#_1,5)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ if(noflg==0,
+ Drwpt(tmp2+Dop);
+ );
+ );
+ if(tmp1=="no" % tmp1=="No",
+ Ltype=10;
+ );
+ Ltype;
+);
+
+Chunderscore(str):=(
+ regional(flg,tmp,tmp1,tmp2,tmp3);
+ if(indexof(str,"]")>0,
+ tmp1=replace(str,"]",",]");
+ ,
+ tmp1=str+",";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ if(indexof(str,"]")>0,
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,"[","list(");
+ ,
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ );
+ tmp1;
+);
+
+//AddGraph(pltdata):=AddGraph("-"+pltdata,pltdata,[]);
+AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]);
+// if(isstring(Arg2),
+// AddGraph(Arg1,Arg2,[]);
+// ,
+// if(MeasureDepth(Arg2)>0,
+// Addgraph(Arg1,Arg2,[]);
+// ,
+// Addgraph("-"+Arg1,Arg1,Arg2);
+// );
+// );
+//);
+AddGraph(nm,pltdata,options):=(
+//help:AddGraph("1","imp1"); // 16.04.04
+//help:Addgraph("1",["[pt1]","gr1"],["nodisp"]);
+ regional(name,Ltype,Noflg,opcindy,pdata,fname,flg,
+ tmp,tmp1,tmp2,tmp3);
+ if(substring(nm,0,1)=="-",
+ name=substring(nm,1,length(nm));
+ ,
+ name="ad"+nm;
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_9;
+ if(isstring(pltdata),
+ pdata=parse(pltdata)
+ ,
+ if(!islist(pltdata),pdata=[pltdata],pdata=pltdata);
+ pdata=apply(pdata,parse(#));
+ ); // 15.01.22
+ pdata=Flattenlist(pdata);
+ tmp1=[];
+ forall(pdata,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ pdata=tmp1;
+ if(Noflg<3,
+ println("generate addgraph "+name);
+ tmp=name+"="+textformat(pdata,5);
+ parse(tmp);
+ if(isstring(pltdata), // 16.04.04 from
+ if(indexof(pltdata,"]")>0,
+ tmp1="list(Listplot("+substring(pltdata,1,length(pltdata));
+ tmp1=replace(tmp1,"]",",]");
+ ,
+ tmp1="Listplot("+substring(pltdata,0,length(pltdata))+",]";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,",","),Listplot(");
+ if(indexof(pltdata,"[")>0,
+ tmp1=tmp1+")";
+ );
+ GLIST=append(GLIST,name+"="+tmp1);
+ ,
+ if(MeasureDepth(pdata)==1,
+ tmp1=name+"=Listplot("+textformat(pdata,5)+")";
+ ,
+ tmp1="list(";
+ forall(1..length(pdata),
+ tmp=name+"p"+textformat(#,5)+"=";
+ if(length(pdata_#)>1, // 15.01.22
+ tmp=tmp+"Listplot("+textformat(pdata_#,5)+")";
+ ,
+ tmp=tmp+"Pointdata("+textformat(pdata_#_1,5)+")";
+ );
+ GLIST=append(GLIST,tmp);
+ tmp1=tmp1+name+"p"+textformat(#,5)+",";
+ );
+ tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ GLIST=append(GLIST,tmp1);
+ );
+ ); // 16.04.04 upto
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Joincrvs(nm,plotstrL):=Joincrvs(nm,plotstrL,[]);
+Joincrvs(nm,plotstrL,options):=(
+//help:Joincrvs("1",["sgAB","sgDCB"]);
+ regional(plotlist,PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
+ opcindy,tmp,tmp1,tmp2,str,name,Ltype,Noflg);
+ name="join"+nm;
+ plotlist=[];
+ forall(plotstrL,str,
+ if(isstring(str),
+ tmp=parse(str);
+ tmp=apply(tmp,LLcrd(#));
+ ,
+ tmp=str;
+ );
+ plotlist=append(plotlist,tmp);
+ );
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Eps=tmp1_1);
+ QdL=[];
+ forall(plotlist,Qd,
+ if(ispoint(Qd_1) % !islist(Qd_1_1),
+ QdL=concat(QdL,[Qd]);
+ ,
+ forall(Qd,
+ QdL=concat(QdL,[#]);
+ );
+ );
+ );
+ Flg=0;
+ if(length(QdL)==0,
+ PtL=[];
+ Flg=1;
+ );
+ if(Flg==0,
+ PtL=QdL_1;
+ forall(2..length(QdL),Ni,
+ Qd=QdL_Ni;
+ if(Numptcrv(Qd)>1,
+ pP=Ptend(PtL);
+ pS=Ptstart(PtL);
+ pQ=Ptstart(Qd);
+ pR=Ptend(Qd);
+ rMN=min([|pP-pQ|,|pP-pR|,|pS-pQ|,|pS-pR|]);
+ if(rMN==|pP-pR|,
+ Qd=reverse(Qd);
+ ,
+ if(rMN==|pS-pQ|,
+ PtL=reverse(PtL);
+ ,
+ if(rMN==|pS-pR|,
+ PtL=reverse(PtL);
+ Qd=reverse(Qd);
+ );
+ );
+ );
+ );
+ if(rMN>Eps,
+ PtL=concat(PtL,Qd);
+ ,
+ PtL=concat(PtL,Qd_(2..length(Qd)));
+ );
+ );
+ );
+ if(Noflg<3,
+ println("generate joincurve "+name);
+ tmp1=apply(PtL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1="";
+ forall(plotstrL,
+ tmp1=tmp1+#+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ GLIST=append(GLIST,name+"=Joincrvs("+tmp1+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PtL;
+);
+
+Partcrv(nm,pA,pB,PkLstr):=Partcrv(nm,pA,pB,PkLstr,[]);
+Partcrv(nm,pA,pB,PkLstr,options):=(
+//help:Partcrv("1",A,B,"sgABC");
+//help:Partcrv("1",1.3,2.5,"sgABC");
+ regional(PkL,Ans,Eps,Npt,Out1,Out2,tmp,tmp1,Flg,nS,nE,PPL,pP,
+ opcindy,Ta,Tb,name,Ltype,Noflg,DepthFlg);
+ name="part"+nm;
+ if(isstring(PkLstr),PkL=parse(PkLstr),PkL=PkLstr);
+ DepthFlg=0;
+ if(MeasureDepth(PkL)==2,
+ PkL=PkL_1;
+ DepthFlg=1;
+ );
+ PkL=apply(PkL,LLcrd(#));
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ Flg=0;
+ if(isreal(pA),
+ if(pA>pB+Eps,
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv("",pA,Npt,PkLstr,["nodata"]);
+ Out2=Partcrv("",1,pB,PkLstr,["nodata"]);
+ tmp=Ptstart(PkL)-Ptend(PkL);
+ if(|tmp|<Eps,
+ Ans=Joincrvs("",[Out1,Out2],["nodata"]);
+ ,
+ Ans=[apply(Out1,Pcrd(#)),apply(Out2,Pcrd(#))];
+ );
+ Flg=1;
+ );
+ if(Flg==0,
+ nS=ceil(pA);
+ nE=floor(pB);
+ PPL=[];
+ if(pA<nS-Eps,
+ pP=(nS-pA)*PkL_(nS-1)+(1-nS+pA)*PkL_nS;
+ PPL=[pP];
+ );
+ PPL=concat(PPL,PkL_(nS..nE));
+ if(pB>nE+Eps,
+ pP=(1-pB+nE)*PkL_nE+(pB-nE)*PkL_(nE+1);
+ PPL=concat(PPL,[pP]);
+ );
+ Ans=PPL;
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp=Nearestpt(LLcrd(Pcrd(pA)),PkL);
+ Ta=tmp_2;
+ tmp=Nearestpt(LLcrd(Pcrd(pB)),PkL); // 15.09.12
+ Tb=tmp_2;
+ Ans=Partcrv("",Ta,Tb,PkL,["nodata"] );
+ Ans=apply(Ans,Pcrd(#));
+ );
+ if(Noflg<3,
+ println("generate partcrv "+name);
+ tmp1=apply(Ans,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST, // 16.04.03
+ if(DepthFlg==0,
+ tmp=PkLstr;
+ ,
+ tmp=PkLstr+"(1)";
+ );
+ tmp1=name+"=Partcrv("+textformat(Lcrd(pA),5)
+ +","+textformat(Lcrd(pB),5)+","+tmp+")"; // 16.04.03
+ GLIST=append(GLIST,tmp1);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Ans;
+);
+
+Opcrvs(num,Fig):=Opcrvs(num,Fig,["nodisp"]);
+Opcrvs(num,Fig,options):=(
+ //help:Subgraph(2,"grfs");
+ regional(name,tmp,tmp1);
+ name="-"+Fig+text(num);
+ tmp=Fig+"_"+text(num);
+ tmp1=parse(tmp);
+ Listplot(name,tmp1,options);
+);
+
+
+Pointdata(nm,list):=Pointdata(nm,list,[]);
+Pointdata(nm,list,options):=(
+//help:Pointdata("1",[2,4],["Size=5"]);
+//help:Pointdata("2",[[2,3],[4,1]]);
+ regional(name,nameL,ptlist,opstr,opcindy,
+ eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="pt"+nm;
+ nameL=name+"L";
+ println("generate pointdata "+name);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ size="";
+ eqL=tmp_5;
+ if(length(eqL)>0,
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="s" % tmp=="S",
+ tmp=indexof(#,"=");
+ size=substring(#,tmp,length(#));
+ );
+ );
+ );
+ tmp=MeasureDepth(list);
+ if(tmp>0, // 2015.02.21
+ if(tmp==1,ptlist=list,ptlist=list_1);
+ tmp=apply(ptlist,[textformat(Pcrd(#),5)]);
+ tmp1=text(tmp);
+ tmp2=substring(tmp1,1,length(tmp1)-1);
+ tmp3=tmp1;
+ ,
+ ptlist=list;
+ tmp1=textformat(Pcrd(ptlist),5);
+ tmp2=tmp1;
+ tmp3="["+tmp1+"]";
+ );
+ tmp=name+"="+tmp1;
+ parse(tmp);
+ tmp=nameL+"="+tmp3;
+ parse(tmp);
+ if(Noflg<3,
+ GLIST=append(GLIST,name+"=Pointdata("+tmp2+")");
+ );
+ if(Noflg<2,
+ tmp=[nameL,0,opcindy];
+ GCLIST=append(GCLIST,tmp);
+ if(Noflg==0,
+ if(length(size)>0,
+ Com2nd("Setpt("+size+")");
+ );
+ thick=PenThick/PenThickInit; // 16.04.09 from
+ if(length(size)>0,tmp1=parse(size),tmp1=1);
+ tmp1=max(tmp1,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ Com2nd("Drwpt(list("+name+")"+opstr+")");
+ Setpen(thick); // 16.04.09
+ if(length(size)>0,
+ Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")");
+ );
+ );
+ );
+ ptlist;
+);
+
+Listplot(nm,list,options):=(
+//help:Listplot([A,B]);
+// help:Listplot(["A","B"]);
+//help:Listplot("1",[[2,1],[3,3]]);
+//help:Listplot(options2=["Msg=yes"]);
+ regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg);
+ if(substring(nm,0,1)=="-", // 16.01.27 from
+ name=substring(nm,1,length(nm));
+ ,
+ name="sg"+nm;
+ ); // upto
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ Msg=1; // 15.09.17
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+1); // 16.06.28
+ if(Toupper(tmp1)=="N", // 16.06.28
+ Msg=0;
+ );
+ );
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Listplot "+name);
+ );
+ if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24
+ ptlist=apply(tmp,Pcrd(#));
+ tmp=name+"="+textformat(ptlist,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp1=apply(list,Lcrd(#));
+ tmp1;
+);
+Listplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Listplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Listplot(name,list,options);
+ );
+);
+Listplot(list):=Listplot(list,[]);
+
+Lineplot(nm,list,options):=(
+//help:Lineplot([A,B]);
+//help:Lineplot("1",[[2,1],[3,3]]);
+ regional(name,Out,tmp,tmp1,opstr,opcindy,Mag,Semi,
+ Vec,pA,pB,Ltype,Noflg);
+ name="ln"+nm;
+ Mag=100;
+ Semi="";
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Mag=tmp1_1);
+ tmp1=tmp_7;
+ if(length(tmp1)>0,Semi=tmp1_1);
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ Vec= Mag/dist(pA,pB)*(pB-pA);
+ if(length(Semi)==0,
+ Out=[pA-Vec,pA+Vec];
+ ,
+ if(Semi=="+",
+ Out=[pA,pA+Vec];
+ ,
+ Out=[pA-Vec,pA];
+ );
+ );
+ if(Noflg<3,
+ println("generate Lineplot "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Lineplot("+textformat(list,5)+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Lineplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Lineplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Lineplot(name,list,options);
+ );
+);
+Lineplot(list):=Lineplot(list,[]);
+
+Plotdata(name1,func,variable):=Plotdata(name1,func,variable,[]);
+Plotdata(name1,func,variable,options):=(
+//help:Plotdata("1","sin(x)","x",["Num=100"]);
+//help:Plotdata("2","x^2","x=[-1,1]");
+//help:Plotdata("3","Fout(x)","x",["out"]);
+ regional(Fn,Va,tmp,tmp1,tmp2,eqL,name,Vname,x1,x2,dx,
+ PdL,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gr"+name1;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ Eps=10^(-3);
+ tmp=replace(func,LFmark,"");
+ tmp=tokenize(variable,"=");
+ Vname=tmp_1;
+ if(length(tmp)>1,
+ tmp=tmp_2;
+ tmp=parse(tmp);
+ x1=tmp_1;
+ x2=tmp_2;
+ ,
+ x1=XMIN;
+ x2=XMAX;
+ );
+ // dx=(x2-x2)/Num;
+ Ec=append(sort(Ec),10000);
+ Fun=Assign(func,Vname, "xx");
+ Exfun=Assign(Exfun,Vname, "xx");
+ PdL=[];
+ Ke=1;
+ forall(0..Num,
+ xx=x1+#*(x2-x1)/Num; // differs from Scilab ( / Num-1)
+ if(length(Exfun)>0,
+ tmp=parse(Exfun);
+ if(abs(tmp)<Eps,
+ if(length(Pdt)>0,
+ PdL=concat(PdL,["inf"]);
+ );
+ );
+ ,
+ Pa=[];
+ if(xx-Ec_Ke<-Eps,
+ Pa=[xx,parse(Fun)];
+ );
+ if(abs(xx-Ec_Ke)<=Eps,
+ if(length(PdL)>0,
+ if(PdL_(length(PdL))_1!="inf",
+ Pa=["inf"];
+ );
+ );
+ );
+ if(xx-Ec_Ke>Eps,
+ Pa=[xx,parse(Fun)];
+ Ke=Ke+1;
+ );
+ if(length(Pa)>0,
+ if(Pa_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(length(PdL)==0,
+ PdL=[Pa];
+ ,
+ tmp=PdL_(length(PdL));
+ if(tmp_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(dist(tmp,Pa)<Dc,
+ PdL=concat(PdL,[Pa]);
+ ,
+ PdL=concat(PdL,[["inf"],Pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(PdL),PdL_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[PdL_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(PdL),
+ tmp1=concat(tmp1,[PdL_(tmp..length(PdL))]);
+ );
+ PdL=tmp1;
+ if(length(PdL)==1,
+ PdL=PdL_1;
+ );
+ if(Noflg<3,
+ println("generate Plotdata "+name);
+ if(MeasureDepth(PdL)==1,
+ tmp1=apply(PdL,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(func,LFmark,"");
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Plotdata "+name);
+ tmp=name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Plotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Paramplot(name1,funstr,variable):=Paramplot(name1,funstr,variable,[]);
+Paramplot(name1,funstr,variable,options):=(
+//help:Paramplot("1","[2*cos(t),sin(t)]","t=[0,2*pi]");
+ regional(name,Out,tmp,tmp1,tmp2,vname,func,str,Rng,Num,
+ Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gp"+name1;
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ tmp=indexof(variable,"=");
+ vname=substring(variable,0,tmp-1);
+ str=substring(variable,tmp,length(variable));
+ Rng=parse(str);
+ t1=Rng_1; t2=Rng_2;
+ dt=(t2-t1)/Num;// differs from Scilab ( / Num-1)
+ func=Assign(funstr,vname,"tt");
+ Out=[];
+ Ec=append(sort(Ec),10000);
+ ke=1;
+ forall(0..Num,
+ pt=[];
+ tt=Rng_1+#*dt;
+ if(tt-Ec_ke<-Eps,
+ pa=parse(func);
+ );
+ if(abs(tt-Ec_ke)<=Eps,
+ if(length(Out)>0,
+ if(Out_(length(Out))_1!="inf",
+ pa=["inf"];
+ );
+ );
+ );
+ if(tt-Ec_ke>Eps,
+ pa=parse(func);
+ ke=ke+1;
+ );
+ if(length(pa)>0,
+ if(pa_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(length(Out)==0,
+ Out=[pa];
+ ,
+ tmp=Out_(length(Out));
+ if(tmp_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(|tmp-pa|<Dc,
+ Out=append(Out,pa);
+ ,
+ Out=concat(Out,[["inf"],pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(Out),Out_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[Out_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(Out),
+ tmp1=concat(tmp1,[Out_(tmp..length(Out))]);
+ );
+ Out=tmp1;
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ println("generate Paramplot "+name);
+ if(MeasureDepth(Out)==1,
+ tmp1=apply(Out,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(funstr,LFmark,""); // 15.11.13
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Paramplot "+name);
+ tmp=name+"=Paramplot('"+funstr+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Paramplotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Paramplot('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Circledata(cenrad):=Circledata(cenrad,[]);
+Circledata(para1,para2):=(
+//help:Circledata([A,B],["Rng=[0,pi/2]"]);
+//help:Circledata([A,B,C]);
+ regional(name,cenrad,options,str,n);
+ if(isstring(para1),
+ name=para1;
+ cenrad=para2;
+ options=[];
+ ,
+ cenrad=para1;
+ options=para2;
+ name="";// 16.10.07from
+ forall(cenrad,
+ name=name+#.name;
+ );// 16.10.07upto
+ );
+ Circledata(name,cenrad,options);
+);
+Circledata(nm,cenrad,options):=(
+ regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,
+ tmp,tmp1,tmp1,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps);
+ name="cr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Rg=[0,2*pi];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="R",
+ Rg=parse(tmp1);
+ );
+ );
+ if(length(cenrad)==2,
+ Ctr=Lcrd(cenrad_1);
+ Ptcir=Lcrd(cenrad_2);
+ ra=dist(Ctr,Ptcir);
+ ,
+ Eps=10^(-1);
+ pA=Lcrd(cenrad_1);
+ pB=Lcrd(cenrad_2);
+ pC=Lcrd(cenrad_3);
+ tmp=pB-pA;
+ tmp1=(tmp_2,-tmp_1);
+ tmp=pC-pB;
+ tmp2=(tmp_2,-tmp_1);
+ d1=det([tmp1,tmp2]);
+ d2=det([pC-pA,tmp2]);
+ if(abs(d1)<Eps & abs(d2)>10*Eps,
+ println("points are in a line");
+ ra=0;
+ ,
+ Ctr=1/2*(pA+pB)+1/2*d2/d1*tmp1;
+ ra=|pA-Ctr|;
+ tmp=name+"center="+Ctr;
+ parse(tmp);
+ Defvar(name+"center",Ctr);
+ );
+ );
+ if(ra>0,
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ ,
+ Out=Lineplot("1",[pA,pB],["nodata"]);
+ );
+ if(Noflg<3,
+ println("generate Circledata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ if(length(cenrad)==2,
+ tmp=name+"=Circledata("+cenrad+opstr+")";
+ ,
+ if(ra>0,
+ tmp=name+"=Circledata(["+Ctr+","+cenrad_1+"]"+opstr+")";
+ ,
+ tmp=name+"=Lineplot("+cenrad_1+","+cenrad_2+")";
+ );
+ );
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata():=(
+ regional(pA,pB);
+ pA=LLcrd((SW+NE)/2); // 15.09.17
+ pB=LLcrd(NE);
+ Framedata("win",[pA,pB]);
+);
+Framedata(list):=Framedata(list,[]);
+Framedata(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Framedata(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";// 16.10.07from
+ forall(list,
+ name=name+#.name;
+ );// 16.10.07upto
+ Framedata(name,list,options);
+ );
+);
+
+Framedata(nm,list,options):=(
+//help:Framedata();
+//help:Framedata([A,B]);
+//help:Framedata("1",[A,B]);
+//help:Framedata("1",[C,dx,dy]);
+ regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy,
+ opcindy,Ltype,Noflg,cent,dx,dy);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(length(list)==2, // 15.05.12
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2);
+ ,
+ pA=Lcrd(list_1);
+ dx=list_2; dy=list_3;
+ );
+ x1=pA_1-dx; x2=pA_1+dx;
+ y1=pA_2-dy; y2=pA_2+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Framedata(nm,cent,dx,dy):=Framedata(nm,cent,dx,dy,[]);
+Framedata(nm,cent,dx,dy,options):=(
+ regional(name,Out,tmp,tmp1,x1,y1,x2,y2,Ltype,opcindy,Noflg);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ x1=cent.x-dx; x2=cent.x+dx;
+ y1=cent.y-dy; y2=cent.y+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+cent.xy+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata2(nm,list):=Framedata2(nm,list,[]);
+Framedata2(nm,list,options):=(
+//help:Framedata2("1",[A,B]);
+ regional(tmp,tmp1,pC,pB);
+ pC=(Lcrd(list_1)+Lcrd(list_2))/2;
+ pB=Lcrd(list_2);
+ Framedata(nm,[pC,pB],options);
+);
+
+Ovaldata(nm,Pdata):=Ovaldata(nm,Pdata,[]);
+Ovaldata(nm,Pdata,options):=(
+//help:Ovaldata("1",[A,B]);
+//help:Ovaldata(optios=[size]);
+ regional(name,Graph,Ctr,Dx,Dy,Rc,Out,Point,Graph,
+ opstr,opcindy,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="ov"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ Rc=0.2;
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Rc=tmp1_1*Rc);
+// if(length(tmp1)>0,Rc=tmp1_1); //15.11.15
+ Ctr=Lcrd(Pdata_1);
+ if(ispoint(Pdata_2) % islist(Pdata_2),
+ tmp1=Lcrd(Pdata_2);
+ Dx=abs(tmp1_1-Ctr_1);
+ Dy=abs(tmp1_2-Ctr_2);
+ ,
+ Dx=Pdata_2;
+ Dy=Pdata_3;
+ );
+ Point=Ctr+[Dx-Rc,Dy-Rc];
+ tmp1=Circledata("1",[Point,Point+[Rc,0]],
+ ["Rng=[0,pi/2]","Num=10","nodata"]);
+ tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]],
+ ["nodata"]);
+ tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]],
+ ["nodata"]);
+ Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]);
+ tmp1=Reflectdata("1",[Graph],[Ctr,Ctr+[0,1]],["nodata"]);
+ Graph=Joincrvs("1",[Graph,tmp1],["nodata"]);
+ tmp2=Reflectdata("2",[Graph],[Ctr,Ctr+[1,0]],
+ ["nodata"]);
+ Graph=Joincrvs("2",[Graph,tmp2],["nodata"]);
+ if(Noflg<3,
+ println("generate Ovaldata "+name);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(Ctr,5)+","+textformat(Dx,5)+","+textformat(Dy,5);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+tmp+opstr+")");
+ );
+ Graph;
+);
+
+Segmark(nm,ptlist):=Segmark(nm,ptlist,[]);
+Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);
+Drawsegmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]);
+Drawsegmark(nm,ptlist,options):=(
+//help:Segmark("1",[A,B]);
+//help:Segmark(options=["Type=1","Width=1","Size=1"]);
+ regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,
+ tmp,tmp1,tmp2);
+ name="mrk"+nm;
+ pA=ptlist_1;
+ pB=ptlist_2;
+ size=0.15;
+ wid=0.05;
+ tp=1;
+ tmp1=Divoptions(options);
+ eqL=tmp1_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ tmp1=parse(tmp1);
+ tmp=substring(#,0,1);
+ if(tmp=="S" % tmp=="s",
+ size=size*tmp1;
+ );
+ if(tmp=="W" % tmp=="w",
+ wid=wid*tmp1;
+ );
+ if(tmp=="T" % tmp=="t",
+ tp=tmp1;
+ );
+ );
+ mid=(pA+pB)/2;
+ dir=(pB-pA)/|pB-pA|;
+ nor=[-dir_2,dir_1];
+// nor=nor/|nor|;
+ if(tp==1,
+ tmp1=mid+size*nor;
+ tmp2=mid-size*nor;
+ Listplot(name,[tmp1,tmp2]);
+ );
+ if(tp==2,
+ tmp1=mid+wid*dir+size*nor;
+ tmp2=mid+wid*dir-size*nor;
+ Listplot(name+"r",[tmp1,tmp2]);
+ tmp1=mid-wid*dir+size*nor;
+ tmp2=mid-wid*dir-size*nor;
+ Listplot(name+"l",[tmp1,tmp2]);
+ );
+ if(tp==3,
+ tmp1=mid;
+ tmp2=mid+size*dir;
+ Circledata(name,[tmp1,tmp2]);
+ );
+ if(tp==4,
+ tmp=mid+size*2/sqrt(3)*nor;
+ tmp1=mid+size*dir-size/sqrt(3)*nor;
+ tmp2=mid-size*dir-size/sqrt(3)*nor;
+ Listplot(name,[tmp,tmp1,tmp2,tmp]);
+ );
+);
+
+Parabolaplot(nm,ptlist):=Parabolaplot(nm,ptlist,"[-5,5]",[]);
+Parabolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5,5]";
+ options=Arg;
+ );
+ Parabolaplot(nm,ptlist,rng,options);
+);
+Parabolaplot(nm,ptlist,rng,options):=(
+//help:Parabolaplot("1",[A,B,C]):
+//help:Parabolaplot("1",[A,B,C],"[-5,5]");
+ regional(pA,pB,pC,angle,tmp,tmp1,tmp2);
+ tmp1=Lcrd(ptlist_1);
+ tmp2=Lcrd(ptlist_3);
+ pB=Lcrd(ptlist_2);
+ tmp=(tmp2-pB)/|tmp2-pB|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pA=Rotatepoint(tmp1,-angle,pB);
+ pC=Rotatepoint(tmp2,-angle,pB);
+ tmp1=1/(2*(pA_2-pB_2));
+ tmp2=1/2*(pA_2+pB_2);
+ tmp="("+format(tmp1,5)+")*(x-("+format(pA_1,5)+"))^2";
+ tmp=tmp+"+("+format(tmp2,5)+")";
+ tmp1=parse(rng);
+ tmp1=[pA_1-(tmp1_2-tmp1_1)/2,pA_1+(tmp1_2-tmp1_1)/2];
+ tmp2="x="+textformat(tmp1,5);
+ Plotdata(nm+"para",tmp,tmp2,append(options,"nodisp"));
+ Rotatedata(nm+"para","gr"+nm+"para",angle,append(options,pB));
+);
+
+Ellipseplot(nm,ptlist):=Ellipseplot(nm,ptlist,"[0,2*pi]",[]);
+Ellipseplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[0,2*pi]";
+ options=Arg;
+ );
+ Ellipseplot(nm,ptlist,rng,options);
+);
+Ellipseplot(nm,ptlist,rng,options):=(
+//help:Ellipseplot("1",[A,B,3]);
+//help:Ellipseplot("1",[A,B,C],"[0,pi]",[options]);
+ regional(pA,pB,d,angle,f,a,b,pM,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=|tmp2-pA|+|tmp2-tmp1|;
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(d^2/4-f^2);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+","+format(pM_2,5)+"]";
+ tmp=tmp+"+["+format(a,5)+"*cos(t),"+format(b,5)+"*sin(t)]";
+ Paramplot(nm+"elp",tmp,"t="+rng,append(options,"nodisp"));
+ Rotatedata(nm+"elp","gp"+nm+"elp",angle,append(options,pA));
+);
+
+Hyperbolaplot(nm,ptlist):=Hyperbolaplot(nm,ptlist,"[-5/2,5/2]",[]);
+Hyperbolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5/2,5/2]";
+ options=Arg;
+ );
+ Hyperbolaplot(nm,ptlist,rng,options);
+);
+Hyperbolaplot(nm,ptlist,rng,optionsorg):=(
+//help:Hyperbolaplot("1",[A,B,C],["Num=200"]):
+//help:Hyperbolaplot("1",[A,B,C],"[-5,5]",["Asy=do"]);
+ regional(pA,pB,d,angle,f,a,b,pM,eqL,options,opasy,tmp,tmp1,tmp2);
+ tmp=Divoptions(optionsorg);
+ eqL=tmp_5;
+ options=optionsorg;
+ opasy=[];
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="A",
+ tmp=indexof(#,"=");
+ opasy=[substring(#,tmp,length(#))];
+ options=remove(options,[#]);
+ );
+ );
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=abs(|tmp2-pA|-|tmp2-tmp1|);
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(f^2-d^2/4);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+"+"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp1",tmp,"t="+rng,append(options,"nodisp"));
+ tmp="["+format(pM_1,5)+"-"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp2",tmp,"t="+rng,append(options,"nodisp"));
+ tmp=["gp"+nm+"hyp1","gp"+nm+"hyp2"];
+ Rotatedata(nm+"hyp",tmp,angle,append(options,pA));
+ if(length(opasy)>0,
+ Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]);
+ Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]);
+ tmp=["ln"+nm+"asy1","ln"+nm+"asy2"];
+ Rotatedata(nm+"asy",tmp,angle,append(opasy,pA));
+ );
+);
+
+Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]);
+Polygonplot(nm,ptlist,number,options):=(
+//help:Polygonplot("1",[A,B],12);
+ regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ pB=Lcrd(ptlist_2);
+ rr=|pB-pA|;
+ tmp=(pB-pA)/rr;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ ptL=[];
+ forall(0..number,
+ tmp=angle+#*2*pi/number;
+ tmp1=pA+rr*[cos(tmp),sin(tmp)];
+ if(#>0 & #<number,
+ Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07
+ //Pointdata(nm,ptL);
+ );
+ tmp2=tmp1;
+ ptL=append(ptL,tmp1);
+ );
+ Listplot(nm+"ply",ptL,options);
+);
+
+Putintersect(nm,pdata1,pdata2):=(
+//help:Putintersect("Q","gr1","gr2");
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)==1,
+ Putpoint(nm,tmp_1);
+ ,
+ if(length(tmp)==0,
+ err("No intersect point");
+ ,
+ err("Multiple intersect points");
+ println(tmp);
+ err("Choose point number");
+ );
+ );
+);
+Putintersect(nm,pdata1,pdata2,ptno):=(
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)>0,
+ Putpoint(nm,tmp_ptno);
+ ,
+ err("No intersect point");
+ );
+);
+
+Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]);
+Arrowheaddata(point,direction,options):=(
+//help:Arrowheaddata(A,B);
+ regional(list,Ookisa,Hiraki,Futosa,Houkou,Str,Flg,tmp,Ev,Nv,pA,pB,
+ pP,rF,gG,Flg,Nj,Eps,tmp1,scx,scy);
+ Eps=10^(-3);
+ pP=point;
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Str=YaStyle;
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Ookisa=Ookisa*tmp1_1);
+ if(length(tmp1)>1,
+ tmp=tmp1_2;
+ if(tmp<5,
+ Hiraki=Hiraki*tmp;
+ ,
+ Hiraki=tmp;
+ );
+ );
+ Flg=0;
+ Hiraki=Hiraki*pi/180;
+ if(isstring(direction),Houkou=parse(direction),Houkou=direction);
+ if(MeasureDepth(Houkou)==2,Houkou=Houkou_1);
+ if(islist(Houkou_1),
+// pP=Lcrd(pP);
+// pP=Doscaling(pP);
+// Houkou=Dosscaling(Houkou);
+ pP=Pcrd(pP);
+ scy=SCALEY;
+ SCALEY=1;
+ tmp=Nearestpt(pP,Houkou);
+ pA=tmp_1;
+ rF=floor(tmp_2);
+ if(rF==1,
+ if(|Ptend(Houkou)-Ptstart(Houkou)|<Eps,
+ rF=Numptcrv(Houkou);
+ );
+ );
+ gG=apply(0..10,pP+Ookisa*cos(Hiraki)*[cos(2*pi/10*#),sin(2*pi/10*#)]);
+ Flg=0;
+ forall(1..rF,Nj,
+ if(Flg==0,
+ pB=Ptcrv(rF+1-Nj,Houkou);
+ tmp=IntersectcrvsPp([pA,pB],gG);
+ if(length(tmp)>0,
+ Houkou=pP-tmp_1_1;
+ Flg=1;
+ );
+ pA=pB;
+ );
+ );
+ SCALEY=scy;
+ if(Flg==0,
+ println("Arrowhead may be too large (no intersect)");
+ Flg=2;
+ );
+ if(Flg==1,
+ Houkou=Unscaling(Houkou);
+ pP=Unscaling(pP);
+ );
+ );
+ if(Flg<2,
+// pP=Doscaling(pP);
+// Houkou=Doscaling(Houkou);
+ pP=Pcrd(pP);
+ if(!ispoint(point),
+ Houkou=Pcrd(Houkou);
+ );
+// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou));
+ Ev=-1/|Houkou|*Houkou;
+ Ev=Lcrd(Ev);
+ Nv=[-Ev_2, Ev_1];
+ if(indexof(Str,"c")>0,
+ pP=pP-0.5*Ookisa*cos(Hiraki)*Ev;
+ );
+ if(indexof(Str,"b")>0,
+ pP=pP-Ookisa*cos(Hiraki)*Ev;
+ );
+ pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv;
+ pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv;
+ list=[pA,pP,pB];
+ list=apply(list,LLcrd(#));
+// Out=Unscaling(Out);
+ list;
+ );
+);
+
+Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]);
+Arrowhead(point,Houkou,options):=(
+//help:Arrowhead(B,B-A,[1.5,30]);
+//help:Arrowhead(A,"gr1");
+ // global ArrowheadNumber
+ regional(name,Ltype,Noflg,reL,opstr,opcindy,ptstr,hostr,tmp,tmp1,list);
+ name="arh"+text(ArrowheadNumber);
+ ArrowheadNumber=ArrowheadNumber+1;
+ ptstr=textformat(point,5);
+ if(isstring(Houkou), // 15.01.11
+ tmp=parse(Houkou);
+ if(MeasureDepth(tmp)<2,
+ hostr=Houkou;
+ ,
+ hostr=Houkou+"(1)";
+ );
+ ,
+ if(ispoint(point),
+ hostr=textformat(LLcrd(Houkou),5);
+ ,
+ hostr=textformat(Houkou,5);
+ );
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ list=Arrowheaddata(point,Houkou,options);
+ if(Noflg<3,
+// println("generate Arrowhead "+name);
+ tmp1=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST,name+"=Listplot("+list+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(1)+Ltype,name);
+ ,
+// if(Noflg==1,Ltype=0);
+ Ltype=0;
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ if(Noflg==0,
+ if(length(reL)<3, // 16.04.09 from
+ forall(1..(2-length(reL)),
+ opstr=opstr+",1";
+ );
+ tmp=PenThick/PenThickInit;
+ opstr=opstr+","+text(tmp);
+ ); // 16.04.09 upto
+ Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")");
+ );
+);
+
+Arrowdata(ptlist):=Arrowdata(ptlist,[]);
+Arrowdata(Arg1,Arg2):=(
+ regional(tmp,nm,ptlist,flg,pA,pB,options);
+ flg=0;
+ if(isstring(Arg1),
+ nm=Arg1;
+ ptlist=Arg2;
+ Arrowdata(nm,ptlist,[]);
+ flg=1;
+ );
+ if(flg==0,
+ tmp=MeasureDepth(Arg1);
+ if(tmp==0,
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,[]);
+ ,
+ ptlist=Arg1;
+ options=Arg2;
+ nm=text(ArrowlineNumber);
+ ArrowlineNumber=ArrowlineNumber+1;
+ Arrowdata(nm,ptlist,options);
+ );
+ );
+);
+Arrowdata(Arg1,Arg2,options):=(
+//help:Arrowdata([A,B],[2,10]);
+ regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size,
+ flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos);
+ Retflg=0;
+ Noflg=0;
+ Ltype=0;
+ if(!isstring(Arg1),
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,options,"old");
+ Retflg=1;
+ ptlist=[pA,pB];
+ );
+ if(Retflg==0,
+ nm=Arg1;
+ ptlist=Arg2;
+ name="ar"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ realL=tmp_6;
+ strL=tmp_7;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ size=1; // 15.06.11
+ if(length(realL)>0,
+ size=realL_1;
+ );
+ tmp2=select(strL,indexof(#,"l")>0); // 16.04.09
+ if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09
+ segpos=1;
+ tmp1=tmp_5;
+ if(length(tmp1)>2,
+ segpos=tmp1_3;
+ );
+ if(Noflg<3,
+// println("generate Arrowdata "+name);
+ tmp1=apply(ptlist,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=Lcrd(ptlist_1);//16.10.10
+ tmp2=Lcrd(ptlist_2);//16.10.10
+ if(lineflg==0, // 16.04.09 from
+ tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11
+ ,
+ tmp=tmp2;
+ ); // 16.04.09 upto
+ tmp=[tmp1,tmp];
+ GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ tmp=textformat(ptlist,5);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp1=indexof(tmp,"],[");
+ if(tmp1>0,
+ pA=substring(tmp,0,tmp1);
+ pB=substring(tmp,tmp1+1,length(tmp));
+ ,
+ tmp1=indexof(tmp,",");
+ pA=substring(tmp,0,tmp1-1);
+ pB=substring(tmp,tmp1,length(tmp));
+ );
+ tmp1="Lcrd("+pA+")+"
+ +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))";
+ tmp1=parse(tmp1);
+ tmp2="Lcrd("+pB+")-Lcrd("+pA+")";
+ tmp2=parse(tmp2);
+ Arrowhead(tmp1,tmp2,options);
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ ptlist;
+);
+Arrowdata(pA,pB,options,str):=(
+ regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy);
+ Astr=textformat(pA,5);
+ Bstr=textformat(pB,5);
+ name="ar"+pA.name+pB.name;
+ println("generate Arrow "+name);
+ opstr="";
+ opcindy="";
+ forall(options,
+ if(isstring(#),
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ ,
+ tmp="'"+#+"'";
+ );
+ ,
+ tmp=text(#);
+ );
+ opstr=opstr+","+tmp;
+ );
+ ptA=Lcrd(pA);
+ ptB=Lcrd(pB);
+ Arrowheaddata(ptB,ptB-ptA,options);
+ tmp="connect("+textformat([ptA,ptB],5)
+ +",linecolor->"+text(KCOLOR)+opcindy+");";
+ parse(tmp); // 14.11.17
+ Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04
+);
+
+Anglemark(plist):=Anglemark(plist,[]);
+Anglemark(Arg1,Arg2):=( // 2015.04.28 from
+ regional(nm,plist,options,tmp);
+ if(isstring(Arg1),
+ nm=Arg1;
+ plist=Arg2;
+ Anglemark(nm,plist,[]);
+ ,
+ plist=Arg1;
+ options=Arg2;
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Anglemark(nm,plist,options);
+ );
+); // upto
+Anglemark(nm,plist,options):=(
+//help:Anglemark([A,B,C],["E=\theta",2]);
+//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]);
+ regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg);
+ name="ag"+nm;
+ ra=0.5;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ Bname="";
+ Brat=1.5;
+ Num=20;
+ if(length(realL)>0,
+ ra=realL_1*ra;
+ opstr=opstr+","+text(realL_1);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ sab=pB-pA;
+ sac=pC-pA;
+ Rg=[arctan2(sab)+0,arctan2(sac)+0];
+ if(Rg_2<Rg_1,Rg_2=Rg_2+2*pi);
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ if(length(Bname)>0,
+ Th=(Rg_1+Rg_2)/2;
+ tmp1=Ctr+Brat*ra*[cos(Th),sin(Th)];
+ tmp="Defvar("+Dq+Bpos+"=";
+ tmp=tmp+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate anglemark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(plist,5);
+ tmp1=substring(tmp,1,length(tmp)-1);
+ tmp=name+"=Anglemark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Paramark(plist):=Paramark(plist,[]);
+Paramark(plist,options):=(
+//help:Paramark([A,B,C],["E=\theta"]);
+ regional(name,Out,pB,pA,pC,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Ltype,Noflg,eqL,realL,opcindy);
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ tmp=substring(tmp,1,length(tmp)-1);
+ name="pm"+tmp;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ ra=0.5;
+ Bname="";
+ Brat=1.2;
+ if(length(realL)>0,
+ tmp=realL_1;
+ ra=tmp*ra;
+ opstr=opstr+","+text(tmp);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ Out=[];
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|);
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|+ra*(pC-pA)/|pC-pA|);
+ Out=append(Out,pA+ra*(pC-pA)/|pC-pA|);
+ if(length(Bname)>0,
+ tmp1=pA+Brat*ra*(pB-pA)/|pB-pA|+Brat*ra*(pC-pA)/|pC-pA|;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate paramark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Paramark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+MakeBowdata(pA,pB,Hgt):=(
+ regional(angle,pB2,pH2,pC2,pC,tmp,Th1,Th2,ra,dMA);
+ angle=arctan2(pB-pA)+0;
+ pB2=Rotatepoint(pB,-angle,pA);
+ tmp=Lcrd(pA);
+ pH2=[(tmp_1+pB2_1)/2,tmp_2-Hgt];
+ dMA=|tmp-pB2|/2;
+ ra=(dMA^2+Hgt^2)/(2*Hgt);
+ pC2=[pH2_1,pB2_2+(ra-Hgt)];
+ pC=Rotatepoint(pC2,angle,pA);
+ Th1=arctan2(pA-pC2)+angle;
+ Th2=arctan2(pB2-pC2)+angle;
+ [pC,ra,Th1,Th2];
+);
+
+Bowdata(plist):=Bowdata(plist,[]);
+Bowdata(plist,options):=(
+ regional(nm,tmp);
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Bowdata(nm,plist,options);
+);
+Bowdata(nm,plist,options):=(
+//help:Bowdata([C,A],[2,1.2,"Expr=10","da"]);
+ regional(name,Out,pB,pA,pC,ra,tmp,tmp1,tmp2,Ltype,eqL,realL,
+ Bname,Bpos,Th,Cut,Num,Hgt,opstr,opcindy,Ydata,pC,
+ Th1,Th2,Noflg,Bops);
+ name="bw"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ pA=Lcrd(plist_1); pB=Lcrd(plist_2);
+ Hgt=1/2*|pB-pA|*0.2;
+ Cut=0;
+ Num=24;
+ Bname="";
+ if(length(realL)>0,
+ Hgt=realL_1*Hgt; // 15.04.12
+ if(length(realL)>1,Cut=realL_2);
+ );
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="L" % tmp=="l",
+ if(indexof(#,"rot")>0,
+ Bname="Letterrot(";
+ ,
+ Bname="Letter(";
+ );
+ );
+ if(tmp=="E" % tmp=="e",
+ if(indexof(#,"rot")>0,
+ Bname="Exprrot(";
+ ,
+ Bname="Expr(";
+ );
+ );
+ Bops=#;
+ );
+ Ydata=MakeBowdata(pA,pB,Hgt);
+ pC=Ydata_1;
+ ra=Ydata_2;
+ Th=(Ydata_3+Ydata_4)*0.5;
+ BOWMIDDLE=[pC_1+ra*cos(Th),pC_2+ra*sin(Th)];
+ if(length(Bname)>0,
+ Bpos="md"+name;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(BOWMIDDLE,5)+Dq+");";
+ parse(tmp);
+ Bname=Bname+Dq+Bpos+Dq+",";
+ if(indexof(Bname,"rot")>0,
+ tmp1=pB-pA;
+ if(tmp1_1<0, tmp1=-tmp1);
+ tmp2=indexof(Bops,",");
+ if(tmp2>0,
+ tmp=substring(Bops,0,tmp2-1);
+ if(indexof(tmp,"u")>0,
+ tmp1=-tmp1;
+ Bops=replace(tmp,"u","")+substring(Bops,tmp2-1,length(Bops));
+ Bops=replace(Bops,"=,","=");
+ );
+ );
+ Bname=Bname+text(tmp1)+",";
+ );
+ tmp=substring(Bops,indexof(Bops,"="),length(Bops));
+ tmp1=indexof(tmp,",");
+ if(tmp1==0,
+ if(indexof(Bname,"rot")==0,
+ Bname=Bname+Dq+"c"+Dq+","+Dq+tmp;
+ ,
+ Bname=Bname+Dq+tmp;
+ );
+ ,
+ Bname=Bname+Dq+substring(tmp,0,tmp1-1)+Dq+","
+ +Dq+substring(tmp,tmp1,length(tmp));
+ );
+ Bname=Bname+Dq+")";
+ parse(Bname);
+ );
+ if(Cut==0,
+ Th1=Ydata_3;
+ Th2=Ydata_4;
+ Out=[];
+ forall(0..Num,
+ tmp=Th1+#*(Th2-Th1)/Num;
+ Out=append(Out,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ ,
+ Th1=Ydata_3;
+ Th2=Th-Cut/(2*ra);
+ tmp1=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp1=append(tmp1,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Th1=Th+Cut/(2*ra);
+ Th2=Ydata_4;
+ tmp2=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp2=append(tmp2,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Out=[tmp1,tmp2];
+ );
+ if(Noflg<3,
+ println("generate bowdata "+name);
+ if(MeasureDepth(Out)==1,Out=[Out]);
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Bowdata("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Bowname(str):=Bowname("c",str);
+Bowname(dir,str):=(
+ Expr([BOWMIDDLE,dir,str]);
+);
+
+Bownamerot(bwdata,str):=Bownamerot(bwdata,0,0,str,1);
+Bownamerot(bwdata,str,updown):=Bownamerot(bwdata,0,0,str,updown);
+Bownamerot(bwdata,tmov,nmov,str):=Bownamerot(bwdata,tmov,nmov,str,1);
+Bownamerot(bwdata,tmov,nmov,str,updown):=(
+ regional(bdata,tmp);
+ tmp=MeasureDepth(bwdata);
+ if(tmp==1,bdata=[bwdata],bdata=bwdata);
+ if(length(bdata)>1,
+ tmp=Ptend(bdata_2)-Ptstart(bdata_1);
+ ,
+ tmp=Ptend(bdata_1)-Ptstart(bdata_1);
+ );
+ if(updown<0,tmp=-tmp);
+ Exprrot(BOWMIDDLE,tmp,tmov,nmov,str);
+);
+
+Deqplot(nm,deq,rng,initf):=Deqplot(nm,deq,rng,Lcrd(initf)_1,initf,[]);
+Deqplot(nm,deq,rng,Arg1,Arg2):=(
+ regional(initt,initf,options);
+ if(isreal(Arg1) & length(Arg1)==1,
+ initt=Arg1;
+ initf=Arg2;
+ options=[];
+ ,
+ initf=Lcrd(Arg1);
+ initt=initf_1;
+ options=Arg2;
+ );
+ Deqplot(nm,deq,rng,initt,initf,options);
+);
+Deqplot(nm,deq,rng,initt,initf,options):=(
+ regional(name,Noflg,Ltype,eqL,opstr,opcindy,pdL,var2,deq2,rng2,initt2,initf2,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ tmp2=tmp_2;
+ tmp3=tokenize(tmp1,"`");
+ if(length(tmp3)==2,
+ if(indexof(tmp1,"[")>0,
+ Deqplot(nm,deq,rng,initt,initf,options,[2,3]);
+ ,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ tmp=tokenize(rng2,"=");
+ deq2="["+tmp_1+","+replace(tmp1,"`","]")+"`=[1,"+tmp2+"]";
+ rng2="t="+tmp_2;
+ if(isreal(initf) & length(initf)==1,
+ initf2=[initt,initf];
+ initt2=initt;
+ ,
+ initf2=Lcrd(initf));
+ initt2=initf2_1;
+ Deqplot(nm,deq2,rng2,initt2,initf2,options,[2,3]);
+ );
+ ,
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_9;
+ opstr="";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="N",
+ tmp=indexof(#,"=");
+ tmp1="N="+substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp1+"'";
+ );
+ );
+ if(Noflg<1,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ var2="d"+tmp3_1;
+ deq2="["+tmp3_1+","+var2+"]`=[";
+ tmp=replace(tmp2,tmp3_1+"`",var2);
+ deq2=deq2+var2+","+tmp+"]";
+ Deqplot(nm,deq2,rng2,initt,initf,append(options,"nodisp"),[1,2]);
+ parse(tmp);
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ parse("de"+nm);
+ );
+ );
+);
+Deqplot(nm,deq,rng,initt,initf,options,Sel):=(
+//help:Deqplot("2","y`=y*(1-y)","x",0, 0.5,["Num=100"]);
+//help:Deqplot("1","y``=-y","x",0, [1,0]);
+//help:Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",[1,0.5]);
+ regional(Ltype,Noflg,Inflg,Outflg,strL,opstr,opcindy,Num,
+ outstr,name,func,xf,yf,pdL,Eps,Inf,t1,t2,tt,Vname,dt,funP,funN,flg,
+ kl1,kl2,kl3,kl4,x0,y0,x1,y1,tmp,tmp1,tmp2);
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ eqL=tmp_5;
+ strL=tmp_7;
+// opstr=tmp_(length(tmp)-1);
+ opstr="";
+ opcindy=tmp_(length(tmp));
+ outstr="";
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="S",
+ outstr="Sci";
+ );
+ );
+ Num=50;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp2=substring(#,0,1);
+ tmp2=Toupper(tmp2);
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp2+"="+tmp1+"'";
+ if(Toupper(substring(#,0,1))=="N",
+ Num=parse(tmp1);
+ );
+ );
+ if(outstr=="Sci",
+ if(Inflg==0 & Outflg==0,Outflg=1;Inflg=1);
+ );
+ if(Noflg<3,
+ if(outstr=="Sci",
+ if(Outflg==1,
+ println("Output Deqplot "+name);
+ SCIWRLIST=append(SCIWRLIST,name);
+ );
+ if(Inflg==1,
+ println("Input Deqplot "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ ,
+ Eps=10^(-3);
+ Inf=10^3;
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ func=tmp_2;
+ tmp=indexof(tmp1,",");
+ xf=substring(tmp1,1,tmp-1);
+ yf=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(yf,"]");
+ yf=substring(yf,0,tmp-1);
+ tmp=tokenize(rng,"=");
+ Vname=tmp_1;
+ tmp=parse(tmp_2);
+ t1=tmp_1;
+ t2=tmp_2;
+ tmp="funP("+Vname+","+xf+","+yf+"):="+func+";";
+ parse(tmp);
+ tmp=tokenize(func,",");
+ tmp1="-("+substring(tmp_1,1,length(tmp_1))+")";
+ tmp2="-("+substring(tmp_2,0,length(tmp_2)-1)+")";
+ tmp="funN("+Vname+","+xf+","+yf+"):=["+tmp1+","+tmp2+"];";
+ parse(tmp);
+ dt=(t2-t1)/Num;
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ pdL=[[tt,x0,y0]];
+ flg=0;
+ forall(1..floor((t2-initt)/dt),
+ if(flg==0,
+ kl1=dt*funP(tt,x0,y0);
+ kl2=dt*funP(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funP(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funP(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt+#*dt;
+ pdL=append(pdL,[tt,x0,y0]);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ flg=0;
+ forall(1..floor((initt-t1)/dt),
+ if(flg==0,
+ kl1=dt*funN(tt,x0,y0);
+ kl2=dt*funN(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funN(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funN(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt-#*dt;
+ pdL=prepend([tt,x0,y0],pdL);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ println("Generate Deqplot "+name);
+ pdL=apply(pdL,#_Sel);
+ tmp1=apply(pdL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ );
+ if(Noflg<1,
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(outstr=="Sci",
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ ,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ pdL;
+ );
+ );
+);
+
+Enclosing(nm,plist):=EnclosingS(nm,plist);
+Enclosing(nm,plist,options):=EnclosingS(nm,plist,options);
+EnclosingS(nm,plist):=EnclosingS(nm,plist,[]);
+EnclosingS(nm,plist,options):=(
+//help:Enclosing("1",["sc2","crAB","sc2","Invert(sc1)"],[pt,"dr"]);
+ regional(name,AnsL,Start,Eps,EEps,S,Flg,Fdata,Gdata,KL,pt,qt,
+ t1,t2,t3,ii,nn,tmp,tmp1,tmp2,Ltype,Noflg,realL,eqL,opstr,opcindy);
+ name="en"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ realL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ EEps=0.1;
+ Start=[];
+ Flg=0;
+ forall(realL,
+ if(isList(#) % ispoint(#),
+ Start=Lcrd(#); // 15.09.12
+ ,
+ Flg=Flg+1;
+ if(Flg==1,Eps=#);
+ if(Flg==2,EEps=#);
+ );
+ );
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ Fdata=plist_1;
+ Gdata=plist_(length(plist));
+ KL=IntersectcrvsPp(Fdata,Gdata);
+ if(length(KL)==1,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ );
+ if(length(KL)==0,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ pt=tmp_1;
+ t1=tmp_2;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ pt=tmp_3;
+ t1=tmp_4;
+ );
+ );
+ if(length(KL)>1,
+ if(Start==[],
+ err("No Start Point");
+ ,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ tmp=|pt-Start|;
+ forall(2..length(KL),ii, // 15.04.20
+ tmp1=KL_ii_1;
+ tmp2=|tmp1-Start|; // 15.04.20
+ if(tmp2<tmp,
+ pt=tmp1;
+ t1=KL_ii_2;
+ tmp=tmp2;
+ );
+ );
+ );
+ );
+// pt=Pcrd(pt); // 15.09.12
+ Start=pt;
+ AnsL=[];
+ forall(1..length(plist),nn,
+ Fdata=plist_nn;
+ if(nn>1, pt=qt);
+ if(nn==length(plist),
+ qt=Start;
+ ,
+ Flg=0;
+ Gdata=plist_(nn+1);
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ KL=IntersectcrvsPp(Gdata,Fdata);
+ if(length(KL)==1,
+ tmp=KL_1;
+ qt=KL_1_1;
+ t3=KL_1_2;
+ Flg=10;
+ );
+ if(length(KL)==0,Flg=1);
+ if(length(KL)>1,
+ tmp1=KL_1_1;
+ tmp2=KL_2_1;
+ tmp=|tmp1-tmp2|;
+ if(tmp<Eps*10, Flg=1);
+ );
+ if(Flg==1,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ qt=tmp_1;
+ t3=tmp_4;
+ Flg=10;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ qt=tmp_3;
+ t3=tmp_2;
+ Flg=10;
+ );
+ );
+ if(Flg<10,
+ t2=10^6; //%inf;
+ forall(1..length(KL),ii,
+ tmp1=KL_ii_1;
+ tmp=KL_ii_3;
+ tmp2=ParamonCurve(tmp1,tmp,Fdata);
+ tmp3=KL_ii_2;
+ if(tmp2>t1+Eps & tmp2<t2+Eps,
+ qt=tmp1;
+ t2=tmp2;
+ t3=tmp3;
+ );
+ );
+ );
+ );
+ tmp=Partcrv("",pt,qt,Fdata,["nodata"]);
+ t1=t3;
+ if(nn==1,
+ AnsL=tmp;
+ ,
+ AnsL=concat(AnsL,tmp_(2..length(tmp)));
+ );
+ );
+ AnsL=apply(AnsL,Pcrd(#)); // 15.09.12
+ if(Noflg<3,
+ println("generate Enclosing "+name);
+ tmp=name+"="+textformat(AnsL,5);
+ parse(tmp);
+ tmp=name+"=Enclosing(";
+ tmp1="list(";
+ forall(plist,
+ tmp1=tmp1+#+",";
+ );
+ tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp=apply(AnsL,Lcrd(#));
+ tmp;
+);
+
+Shade(plist):=Shade(plist,[]);
+Shade(plist,options):=(
+//help:Shade(["gr2","sg1"],[0.5]);
+//help:Shade([pointlist],[0.5]);
+ regional(tmp,tmp1,tmp2,opstr,opcindy,Str,G2,flg);
+ if(isstring(plist_1), // 16.01.24
+ println("output Shade of "+plist);
+ ,
+ println("output Shade of lists");
+ );
+ tmp=Divoptions(options);
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ flg=0;
+ forall(plist,
+ if(flg==0,
+ if(isstring(#),tmp=parse(#),tmp=#); // from 16.01.24
+ if(!islist(tmp),flg=1); upto
+ );
+ );
+ if(flg==1,
+// err("some data not defined yet");
+ ,
+ G2=Joincrvs("1",plist,["nodata"]);
+ G2=apply(G2,Pcrd(#));
+ tmp1="fillpoly("+textformat(G2,5)+opcindy+");";
+ parse(tmp1);
+ );
+ Str="Shade(";
+ tmp1="list(";
+ forall(plist,
+ if(isstring(#), // from 16.01.24
+ if(length(#)>1,
+ tmp1=tmp1+#+",";
+ ,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ ,
+ tmp1=tmp1+"Listplot("+textformat(#,5)+"),";
+ ); // upto 16.01.24
+ );
+ Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ Com2nd(Str);
+);
+
+
+//help:start();
+
+Rotatepoint(point,Theta,ctr):=(
+//help:Rotatepoint(A,2*pi/3,B);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(ctr);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ [X2,Y2];
+);
+
+Translatepoint(point,mov):=(
+//help:Translatepoint(A,[2,3]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=X1+Cx;
+ Y2=Y1+Cy;
+ [X2,Y2];
+);
+
+Scalepoint(point,ratio,center):=(
+//help:Scalepoint(A,[3,2],[0,0]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(center);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+ratio_1*(X1-Cx);
+ Y2=Cy+ratio_2*(Y1-Cy);
+ [X2,Y2];
+);
+
+Reflectpoint(point,symL):=(
+//help:Reflectpoint(A,B);
+//help:Reflectpoint(A,[[2,3]]);
+//help:Reflectpoint(A,[C,E]);\\
+ regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ [X2,Y2];
+);
+
+Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]);
+Rotatedata(nm,plist,angle,options):=(
+//help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]);
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,
+ opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="rt"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Pt=Lcrd(tmp1_1));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ if(isstring(angle),Theta=parse(angle),Theta=angle);
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Rotatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Rotatedata("+tmp1+","
+ +textformat(angle,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+translatedata(nm,plist,mov):=translatedata(nm,plist,mov,[]);
+translatedata(nm,plist,mov,options):=(
+//help:translatedata("1",["gr1"],[1,2]);
+ regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,
+ opcindy,X2,Y2,Ltype,Noflg,name);
+ name="tr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=tmp_1+Cx;
+ Y2=tmp_2+Cy;
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate translatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=translatedata("+tmp1+","+textformat(mov,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Scaledata(nm,plist,ratioV):=(
+ regional(tmp);
+ tmp=Lcrd(ratioV);
+ Scaledata(nm,plist,tmp_1,tmp_2,[]);
+);
+Scaledata(nm,plist,Arg1,Arg2):=(
+//help:Scaledata("1","crAB",3,2,[[0,0]]);
+ regional(tmp,options);
+ if(islist(Arg2),
+ tmp=Lcrd(Arg1);
+ options=Arg2;
+ Scaledata(nm,plist,tmp_1,tmp_2,options);
+ ,
+ Scaledata(nm,plist,Arg1,Arg2,[]);
+ );
+);
+Scaledata(nm,plist,rx,ry,options):=(
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name);
+ name="sc"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,
+ Pt=Lcrd(tmp1_1);
+ );
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=Cx+rx*(tmp_1-Cx);
+ Y2=Cy+ry*(tmp_2-Cy);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Scaledata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Scaledata("+tmp1+","
+ +textformat(rx,5)+","+textformat(ry,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]);
+Reflectdata(nm,plist,symL,options):=(
+//help:Reflectdata("1","crAB",[C]);
+ regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="re"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Reflectdata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Reflectdata("+tmp1+","+textformat(symL,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Mksegments():=Mksegments([]);
+Mksegments(options):=(
+//help:Mksegments();
+ regional(segstr,p,q,r,tmp1,tmp2,tmp3);
+ forall(allsegments(),seg,
+ str=text(inspect(seg,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Listplot([parse(p),parse(q)]);
+ );
+);
+
+Mkcircles():=Mkcircles([]);
+Mkcircles(options):=(
+//help:Mkcircles():
+ regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4);
+ forall(allcircles(),cir,
+ str=text(inspect(cir,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ tmp4=indexof(str,";",tmp2+1);
+ if(tmp4==0,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Circledata([parse(p),parse(q)]);
+ ,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp4-1);
+ r=substring(str,tmp4,tmp3-1);
+ Circledata([parse(p),parse(q),parse(r)]);
+ );
+ );
+);
+
+Makesciarg(arglist):=(
+ regional(str,tmpstr);
+ str="";
+ forall(arglist,
+ if(isstring(#),
+ tmpstr=Dq+#+Dq;
+ ,
+ tmpstr=textformat(#,5);
+ );
+ str=str+tmpstr+",";
+ );
+ str=substring(str,0,length(str)-1);
+ str;
+);
+
+Setax(arglist):=(
+//help:Setax(["l","x","e","y","n","O","sw"]);
+//help:Setax([7,"nw"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com1st("Setax("+tmp+")");
+);
+
+Htickmark(arglist):=(
+//help:Htickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp="";
+ tmp=Makesciarg(arglist);
+ Com2nd("Htickmark("+tmp+")");
+);
+
+Vtickmark(arglist):=(
+//help:Vtickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com2nd("Vtickmark("+tmp+")");
+);
+
+Drwxy():=(
+//help:Drwxy();
+ Com2nd("Drwxy()");
+ Addax(0); // 16.01.21
+);
+
+Drwpt(pstr):=Drawpoint(pstr);
+Drwpt(ptlist,nn):=( // 16.03.05 from
+//help:Drwpt(A);
+//help:Drwpt("[1,1],0");
+//help:Drwpt(A,0);
+//help:Drwpt([1,2],0);
+ Drawpoint(ptlist,nn);
+);
+Drawpoint(pstr):=(
+ if(isstring(pstr),
+ println("Drwpt : "+pstr);
+ Com2nd("Drwpt("+pstr+")");
+ ,
+ Drawpoint(pstr,1);
+ );
+);
+Drawpoint(ptlistorg,nn):=(
+ regional(ptlist,thick,tmp,tmp1);
+ println("Drwpt : "+text(ptlistorg));
+ if(islist(ptlistorg),
+ if(MeasureDepth(ptlistorg)==1,
+ ptlist=ptlistorg
+ ,
+ ptlist=[ptlistorg]
+ );
+ ,
+ ptlist=[ptlistorg]
+ );
+ thick=PenThick/PenThickInit;// 16.04.09 from
+ tmp1=max(TenSize/TenSizeInit,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ forall(ptlist,
+ tmp=textformat(#,5)+","+text(nn);
+ Com2nd("Drwpt("+tmp+")"); // 16.04.09
+ );
+ Setpen(thick); // 16.04.09
+);// 16.03.05 upto
+
+Addax(param):=(
+//help:Addax(0);
+ ADDAXES=text(param);
+);
+
+Expr(Pt,Dr,St):=Expr([Pt,Dr,St]);
+Expr(list):=Expr(list,[]);
+Expr(listorg,options):=( //16.10.09
+//help:Expr([A,"e","f(x)=x^2"]);
+ regional(list,str,tmp,tmp1,tmp2);
+ list=listorg;
+ forall(1..round(length(list)/3),
+ str=list_(3*#);
+ if(!isstring(str),str=format(str,5));
+ str="$"+str+"$";
+ list_(3*#)=str;
+ );
+ Letter(list,options);
+);
+
+Letter(Pt,Dr,St):=Letter([Pt,Dr,St]);
+Letter(list):=Letter(list,[]);
+Letter(list,options):=(
+//help:Letter([C,"c","Graph of f(x)"]);
+ regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy,
+ opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2);
+ tmp=Divoptions(options);
+ Noflg=tmp_2;
+ opL=select(options,indexof(#,"->")>0); //16.10.09from
+ tmp=select(opL,indexof(#,"color"));
+ size=12;
+ clr=[0,0,0];
+ bld=false;
+ ita=false;
+ aln="left";
+ forall(opL,
+ tmp=indexof(#,"->");
+ tmp1=removespace(substring(#,0,tmp-1));
+ tmp2=substring(#,tmp+1,length(#));
+ if(tmp1=="size",sz=parse(tmp2));
+ if(tmp1=="color",clr=parse(tmp2));
+ if(tmp1=="bold",bld=parse(tmp2));
+ if(tmp1=="ita",ita=parse(tmp2));
+ );//16.10.09upto
+ Off=-4;
+ Dmv=8;
+ Nj=1;
+ while(Nj+2<=length(list),
+// Pos=textformat(list_Nj,5);
+ Pos=list_Nj;
+ Dir=list_(Nj+1);
+ if(Dir=="s" % Dir=="n", Dir=Dir+"c");//16.10.08
+ Str=list_(Nj+2);
+ if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09
+ tmp=replace(Str,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ Str=replace(tmp,".y","(2)");
+ if(indexof(Str,"`")>0,
+// tmp=Dq+",Assign('"+Str+"','`',Prime()))";
+ tmp=Dq+",Assign('"+Str+"'))"; // 15.02.22
+ ,
+ tmp=Dq+","+Dq+Str+Dq+")";
+ );
+ if(Noflg==0,
+ Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10
+ );
+ if(Noflg<2,
+ Xmv=0;//16.10.13
+ Ymv=-4;
+ if(indexof(Dir,"n")>0,
+ Ymv=Dmv/2;
+ );
+ if(indexof(Dir,"s")>0,
+ Ymv=-Dmv*3/2;//16.10.13
+ );
+ if(indexof(Dir,"e")>0,
+ Xmv=Dmv/2;
+ Off=0;
+ aln="left";
+ );
+ if(indexof(Dir,"w")>0,
+ Xmv=-Dmv/2;
+ Off=0; // 16.09.30from
+ aln="right";
+ );
+ if(indexof(Dir,"c")>0,
+ Xmv=0;//16.10.13
+ Off=0;
+ if(Ymv==0,Ymv=-4);//16.10.08
+ aln="mid"; // 16.09.30upto
+ );
+ drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv],
+ size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09
+ );
+ Nj=Nj+3;
+ );
+);
+
+Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str);
+Letterrot(pt,dir,movstr,str):=(
+//help:Letterrot(C,B-A,"AB"):
+//help:Letterrot(C,B-A,0,5,"AB"):
+//help:Letterrot(C,B-A,"t0n5","AB"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Letterrot(pt,dir,tmov,nmov,str);
+);
+Letterrot(pt,dir,tmov,nmov,str):=(
+ Letter([pt,"c",str],["notex"]);
+ Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str);
+Exprrot(pt,dir,movstr,str):=(
+//help:Exprrot(C,B-A,"d"):
+//help:Exprrot(C,B-A,0,5,"d"):
+//help:Exprrot(C,B-A,"t0n5","d"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Exprrot(pt,dir,tmov,nmov,str);
+);
+Exprrot(pt,dir,tmov,nmov,str):=(
+ Expr([pt,"c",str],["notex"]);
+ Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Putpoint(name,Pt):=Putpoint(name,Pt,Pt);
+Putpoint(name,Ptinit,Pt):=(
+//help:Putpoint("A",[1,2],[1,A.y]);
+ regional(ptstr);
+ ptstr=apply(allpoints(),#.name);
+ if(!contains(ptstr,name),
+ createpoint(name,Pcrd([Ptinit_1,Ptinit_2]));
+ ,
+ ptstr=name+".xy="+textformat(Pcrd(Pt),5);
+ parse(ptstr);
+ );
+);
+
+Bezierpt(t,ptlist,ctrlist):=(
+ regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9);
+ p0=ptlist_1;
+ p3=ptlist_2;
+ p1=ctrlist_1;
+ if(length(ctrlist)==1,
+ p2=p3;
+ flg3=0;
+ ,
+ p2=ctrlist_2;
+ flg3=1;
+ );
+ if(length(p0)<3, // 15.02.08
+ p0=Lcrd(p0);
+ p3=Lcrd(p3);
+ p1=Lcrd(p1);
+ p2=Lcrd(p2);
+ );
+ p4=(1-t)*p0+t*p1;
+ p5=(1-t)*p1+t*p2;
+ p6=(1-t)*p2+t*p3;
+ p7=(1-t)*p4+t*p5;
+ p8=(1-t)*p5+t*p6;
+ p9=(1-t)*p7+t*p8;
+ if(flg3==0,p7,p9);
+);
+
+Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]);
+Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options);
+Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options);
+BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+BezierCurve(nm,ptlistorg,ctrlistorg,options):=(
+//help:Bezier("1",[A,D],[B,C]);
+//help:Bezier(options=["Num=10"]);
+ regional(name,Ltype,Noflg,opstr,opcindy,Num,
+ ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list);
+ name="bz"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Num=10;
+ tmp1=tmp_5;
+ forall(tmp1, // 14.12.31
+ if(substring(#,0,1)=="N",
+ tmp2=indexof(#,"=");
+ Num=parse(substring(#,tmp2,length(#)));
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16
+ ctrlist=[]; // 14.12.31
+ if(length(ctrlistorg)==length(ptlist)-1,
+ forall(ctrlistorg,tmp1,
+ if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1);
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ ,
+ forall(1..(length(ptlist)-1),ii,
+ tmp=ctrlistorg_((2*ii-1)..(2*ii));
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ );
+ if(!islist(Num),
+ Num=apply(ctrlist,Num);
+ );
+ list=[];
+ forall(1..(length(ptlist)-1),ii,
+ tmp1=ptlist_(ii..(ii+1));
+ tmp2=ctrlist_ii;
+ if(ii==1,st=0,st=1);
+ forall(st..Num_ii,
+ tmp=Bezierpt(#/Num_ii,tmp1,tmp2);
+ list=append(list,tmp);
+ );
+ );
+ if(Noflg<3,
+ println("generate Bezier "+name);
+ out=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(out,5);
+ parse(tmp);
+ tmp1=textformat(ptlist,5);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=textformat(ctrlist,5);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ list;
+);
+
+Readcsvsla(fname):=Readplotdigdata(fname,[]);
+Readcsvsla(fname,options):=Readplotdigdata(fname,options);
+Readplotdigdata(fname):=Readplotdigdata(fname,[]);
+Readplotdigdata(fname,options):=(
+ regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3);
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ sc=1;//10;
+ mv=[0,0];//[5,5];
+ forall(tmp1,
+ if(!islist(#),sc=#,mv=#);
+ );
+ if(indexof(fname,".")>0,
+ tmp=load(fname);
+ ,
+ tmp=load(fname+".txt");
+ );
+ cmdall=tokenize(tmp,"//");
+ dataL=[];
+ forall(2..length(cmdall),ii,
+ tmp1=parse("["+cmdall_ii+"]");
+ dataL=append(dataL,tmp1);
+ );
+ if(length(dataL_(length(dataL)))<2,
+ dataL=dataL_(1..(length(dataL)-1));
+ );
+ nd=length(dataL_1)/2;
+ npt=length(dataL);
+ ptdata=[];
+ forall(1..nd,ii,
+ tmp3=[];
+ forall(1..npt,
+ tmp1=dataL_#_(2*ii-1);
+ tmp2=dataL_#_(2*ii);
+ if(isreal(tmp1),
+ tmp3=append(tmp3,[tmp1,tmp2]);
+ );
+ );
+ ptdata=append(ptdata,tmp3);
+ );
+ tmp1=[];
+ forall(ptdata,
+ tmp=#/sc;
+ tmp=translatedata("1",[tmp],-mv,["nodata"]);
+ tmp1=append(tmp1,tmp);
+ );
+ ptdata=tmp1;
+ ptdata;
+);
+
+Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]);
+Putbezierdata(name,ptL,options):=(
+ regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs);
+ tmp=Divoptions(options);
+ psize=3;
+ Deg=3;
+ tmp1=tmp_5;
+ forall(tmp1,
+ if(substring(#,0,1)=="D",
+ tmp=indexof(#,"=");
+ Deg=parse(substring(#,tmp,length(#)));
+ );
+ if(substring(#,0,1)=="S",
+ tmp=indexof(#,"=");
+ psize=parse(substring(#,tmp,length(#)));
+ );
+ );
+ pts=[];
+ ctrs=[];
+ forall(1..length(ptL),
+ p2=ptL_#; // 16.08.16
+ if(ispoint(p2),
+ tmp1=text(p2);
+ ,
+ tmp1=name+text(#);
+ Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ inspect(parse(tmp1),"ptsize",psize);
+ pts=append(pts,parse(tmp1));
+ inspect(parse(tmp1),"color",4);
+ if(#>1,
+ p1=Lcrd(ptL_(#-1)); // 16.08.16
+ p2=Lcrd(ptL_#); // 16.08.16
+ if(Deg==3,
+ tmp=(2*p1+p2)/3;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ tmp=(p1+2*p2)/3;
+ tmp2=name+"q"+text(#-1);
+ Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16
+ inspect(parse(tmp2),"labeled",false); //15.01.22
+ Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22
+ inspect(parse(tmp2),"ptsize",psize);
+ inspect(parse(tmp2),"color",3);
+ ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]);
+ ,
+ tmp=(p1+p2)/2;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ ctrs=append(ctrs,[parse(tmp1)]);
+ );
+ );
+ );
+ [pts,ctrs,name];
+);
+
+Bezierstart(n):=( // 2016.02.26
+ BezierNumber=n;
+);
+
+Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]);
+Mkbezierptcrv(ptdata,options):=(
+ //help:Mkbezierptcrv([A,B,C,D]);
+ //help:Mkbezierptcrv([[A,B],[C,D]]);
+ //help:Mkbezierptcrv(options=["Num=10"]);
+ // global BezierNumber
+ regional(ptlist,Out,tmp,tmp1,tmp2);
+ if(isstring(ptdata),
+ ptlist=Readcsvsla(ptdata,options);
+ ,
+ ptlist=ptdata;
+ );
+ if(MeasureDepth(ptlist)==1,ptlist=[ptlist]);
+ Out=[];
+ forall(1..length(ptlist),
+ tmp=floor((BezierNumber-1)/26);// 15.02.23
+ if(tmp==0,tmp="",tmp=text(tmp));
+ tmp2=mod(BezierNumber,26);
+ if(tmp2==0,tmp2=26);
+ tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11
+ tmp2=Putbezierdata(tmp1,ptlist_#,options);
+ Bezier(tmp2,options);
+ BezierNumber=BezierNumber+1;
+ Out=append(Out,tmp2_(1..2));
+ );
+ Out;
+);
+
+Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]);
+Mkbeziercrv(nm,ptctrL,options):=(
+ //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]);
+ regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2);
+ if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL);
+ forall(1..length(ptctrLL),
+ name=nm+text(#);
+ ptlist=ptctrLL_#_1;
+ ctrlist=ptctrLL_#_2;
+ Bezier(name,ptlist,ctrlist,options);
+ );
+);
+
+Writebezier():=Writebezier(Fhead,"all");
+Writebezier(head):=Writebezier(head,"all");
+Writebezier(head,seL):=(
+//help:Writebezier(file);
+//help:Writebezier(file,"acd");
+ regional(bz,dt,name,tmp,tmp1,tmp2);
+ bz=select(GLIST,indexof(#,"=Bezier")>0);
+ tmp1=[]; // 16.04.22from
+ if(seL!="all",
+ forall(1..length(seL),
+ tmp=substring(seL,#-1,#);
+ tmp=select(bz,indexof(#,"bz"+tmp)>0);
+ tmp1=concat(tmp1,tmp);
+ );
+ bz=tmp1;// 16.04.22upto
+ );
+ dt=[head+"n",[[length(bz),0]]];
+ forall(1..length(bz),
+ tmp=indexof(bz_#,"=");
+ name=substring(bz_#,0,tmp-1);
+ tmp=indexof(bz_#,","+Dq);
+ if(tmp>0,
+ tmp1=substring(bz_#,0,tmp-1)+")";
+ ,
+ tmp1=bz_#;
+ );
+ tmp1=replace(tmp1,"Bezier(","[");
+ tmp1=replace(tmp1,"list(","[");
+ tmp1=replace(tmp1,")","]");
+ tmp1=replace(tmp1,",",".xy,");
+ tmp1=replace(tmp1,"]",".xy]");
+ tmp1=replace(tmp1,".xy,[",",[");
+ tmp1=replace(tmp1,"].xy","]");
+ tmp1=replace(tmp1,name,head+text(#));
+ parse(tmp1);
+ tmp=parse(head+text(#)+"_1");
+ dt=concat(dt,[head+text(#)+"k",tmp]);
+ tmp=parse(head+text(#)+"_2");
+ dt=concat(dt,[head+text(#)+"c",tmp]);
+ );
+ WriteOutData(head+".txt",dt);
+ dt;
+);
+
+Readbezier(file):=Readbezier(file,[]);
+Readbezier(file,optionorg):=(
+//help:Readbezier("xsr");
+//help:Readbezier(options=["Num=10","nogeo"]);
+ regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3);
+ options=optionorg;
+ tmp=Divoptions(options);
+ stL=tmp_7;
+ geo=0;
+ forall(stL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="G",geo=1);
+ options=remove(options,[#]);
+ );
+ ReadOutData(file);
+ tmp=file+"n_1_1";
+ nn=parse(tmp);
+ out=[];
+ forall(1..nn,nc,
+ tmp=file+text(nc);
+ tmp1=parse(tmp+"k");
+ tmp2=parse(tmp+"c");
+ if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from
+ if(geo==1,
+ alpha="abcdefghijklmnopqrstuvwxyz";
+ forall(1..length(tmp1),
+ tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#);
+ Putpoint(tmp,tmp1_#,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"ptsize",3);
+ tmp1_#=parse(tmp+".xy");
+ );
+ forall(1..length(tmp2),
+ tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1";
+ Putpoint(tmp,tmp2_#_1,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_1=parse(tmp+".xy");
+ tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2";
+ Putpoint(tmp,tmp2_#_2,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_2=parse(tmp+".xy");
+ );
+ BezierNumber=BezierNumber+1;
+ );
+ Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22upto
+ out=append(out,"bz"+tmp);
+ );
+ out;
+);
+
+Ospline(nm,ptlist):=Ospline(nm,ptlist,[]);
+Ospline(nm,ptlist,options):=(
+//help:Ospline("1",ptlist,[options]);
+ regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg,
+ p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ name="o"+nm;
+ if(isstring(ptlist),list=parse(ptlist),list=ptlist);
+ if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0);
+// list=apply(list,LLcrd(#));
+ ctrL=[];
+ forall(1..(length(list)-1),
+ flg=0;
+ p1=Lcrd(list_#); // 16.08.16
+ p2=Lcrd(list_(#+1)); // 16.08.16
+ if(#==1 % #==length(list)-1,
+ flg=1;
+ if(closed==0,
+ pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16
+ pR=(2*p1+p2)/3; // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ flg=2;
+ ,
+ if(#==1,
+ p0=Lcrd(list_(length(list)-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ ,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_2); // 16.08.16
+ );
+ );
+ );
+ if(flg<=1,
+ if(flg==0,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ );
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16
+ pR=p2+cc*(p1-p3); // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ );
+ );
+// list=apply(list,LLcrd(#)); // 16.08.16
+// ctrL=apply(ctrL,LLcrd(#));
+ if(closed==0, // 15.09.21
+ p1=ctrL_2_1;
+ p2=Lcrd(list_2); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_1=[pQ];
+ tmp=length(ctrL);
+ tmp1=ctrL_(tmp-1);
+ p1=ctrL_(tmp-1)_2;
+ p2=Lcrd(list_(tmp)); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_tmp=[pQ];
+ );
+ Bezier("o"+nm,list,ctrL,options);
+);
+
+CRspline(nm,ptL):=CRspline(nm,ptL,[]);
+CRspline(nm,ptL,options):=(
+ // Catmull-Rom spline
+//help:CRspline("1",[A,B,C,A]);
+ regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg);
+ name="crsp"+nm;
+ if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL);
+ ptlist=tmp_1;
+ if(length(tmp)==1,
+ cflg=1;
+ ,
+ cflg=0;
+ ctrpts=tmp_2;
+ );
+ c=1/6;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp)); // 15.03.05
+ forall(eqL,
+ if(substring(#,0,1)=="R",
+ tmp2=indexof(#,"=");
+ c=parse(substring(#,tmp2,length(#)));
+ );
+ );
+ ptlist=apply(ptlist,Lcrd(#)); // 16.08.16
+ ctrlist=[];
+ forall(1..(length(ptlist)-1),
+ if(#==1,
+ if(cflg==0,
+ tmp1=ctrpts_1;
+ ,
+ v=ptlist_2-ptlist_(length(ptlist)-1);
+ tmp1=ptlist_#+c*v;
+ );
+ ,
+ v=ptlist_(#+1)-ptlist_(#-1);
+ tmp1=ptlist_#+c*v;
+ );
+ if(#==length(ptlist)-1,
+ if(cflg==0,
+ tmp2=ctrpts_2;
+ ,
+ v=ptlist_2-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ ,
+ v=ptlist_(#+2)-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ tmp=select(options,indexof(text(#),"->")>0);
+ tmp=append(tmp,"notex"); //15.03.05
+ Pointdata(name+text(#),[tmp1,tmp2],tmp);
+ ctrlist=append(ctrlist,[tmp1,tmp2]);
+ );
+ Bezier(nm,ptlist,ctrlist,options);
+);
+
+Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]);
+//help:Beziersmooth("1",[A,B,C,A]);
+Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options);
+Bzspline(nm,ptL):=Bzspline(nm,ptL,[]);
+Bzspline(nm,ptLorg,options):=(
+ // smooth bezier
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzsp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ lstr="c"+text(#);
+ pt=ptLorg_#; // 16.08.16
+ pt1=parse("C"+text(#-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp2="C"+text(#)+"p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp2],"PointOnLine",[parse(lstr),tmp]);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ tmp1="C1p";
+ Putpoint(tmp1,(4*pt+pt1)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ if(cflg==1,
+ lstr="c1";
+ pt=ptLorg_1; // 16.08.16
+ pt1=parse("C"+text(length(ptL)-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp1="C1p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp1],"PointOnLine",[parse(lstr),tmp]);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ if(#>1 % cflg==1,
+ tmp1="c"+text(#);
+ inspect(parse(tmp1),"alpha",0.3);
+ );
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp1),"ptsize",3);
+ inspect(parse(tmp1),"color",3);
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]);
+Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options);
+Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]);
+Bzsspline(nm,ptLorg,options):=(
+ // smooth bezier with symmetric control points
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzssp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1)));
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ pt=ptL_#;
+ pt1=parse("C"+text(#-1)+"q");
+ tmp2="C"+text(#)+"p=2*pt-pt1";
+ parse(tmp2);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ Putpoint("C1p",(4*pt+pt1)/5,Lcrd(C1p)); // 16.08.16
+ inspect(C1p,"ptsize",3);
+ inspect(C1p,"color",3);
+ );
+ if(cflg==1,
+ pt=ptL_1;
+ pt1=Lcrd(parse("C"+text(length(ptL)-1)+"q")); // 16.08.16
+ tmp1="Putpoint("+Dq+"C1p"+Dq+",2*pt-pt1)"; // 16.08.16
+ parse(tmp1);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Listbspline2bz(listorg):=(
+ regional(Eps,list,pcl,ptl,ctrl,k);
+ Eps=10^(-3);
+ list=apply(listorg,Lcrd(#)); // 16.08.16
+ k=length(list);
+ if(|list_1-list_k|>Eps,
+ pcl=list;
+ pcl_1=2*list_1-list_2;
+ pcl_k=2*list_k-list_(k-1);
+ ,
+ pcl=concat(list,[list_2]);
+ );
+ ctrl=apply(2..(length(pcl)-1),[pcl_#]);
+ ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2);
+ [ptl,ctrl];
+);
+
+Bspline(nm,ctrL):=Bspline(nm,ctrL,[]);
+Bspline(nm,ctrL,options):=(
+//help:Bspline("",[A,B,C]);
+ regional(list,tmp);
+ list=Listbspline2bz(ctrL);
+ tmp=BezierCurve("b"+nm,list_1,list_2,options);
+ tmp;
+);
+
+MeetCurve(Crv,Xorg,Yorg):=(
+ regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate);
+ if(isstring(Crv),Cv=parse(Crv),Cv=Crv);
+ if(MeasureDepth(Cv)==2,Cv=Cv_1);
+ Cv=apply(Cv,LLcrd(#)); // 14.12.18
+ while(length(Cv)==1,
+ Cv=Cv_1;
+ );
+ Cv=apply(Cv,Lcrd(#));
+ tmp1=min(apply(Cv,#_1));
+ tmp2=max(apply(Cv,#_1));
+ if(isstring(Xorg),X0=parse(Xorg),X0=Xorg);
+ if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg);
+ if(X0<tmp1,
+ X0=tmp1;
+ ,
+ if(X0>tmp2,
+ X0=tmp2;
+ );
+ );
+ tmp1=select(
+ 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1);
+ tmp2=select(
+ 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1);
+ tmp2=remove(tmp2,common(tmp2,tmp1));
+ Ban=concat(tmp1,tmp2);
+ Tate=select(Ban,
+ abs(Cv_#_1-Cv_(#+1)_1)<=
+ 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2)
+ );
+ Ban=remove(Ban,Tate);
+ Ylist=[];
+ forall(Ban,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1);
+ Ylist=append(Ylist,tmp);
+ );
+ forall(Tate,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp1=min([y1,y2]);
+ tmp2=max([y1,y2]);
+ if(Y0<tmp1,
+ tmp=tmp1;
+ ,
+ if(Y0>tmp2,
+ tmp=tmp2;
+ ,
+ tmp=Y0;
+ );
+ );
+ Ylist=append(Ylist,tmp);
+ );
+ tmp=sort(Ylist,abs(#_1-Y0));
+ [X0,tmp_1];
+);
+
+PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]);
+PutonLine(name,p1org,p2org,options):=(
+//help:PutonLine("C","sgAB");
+//help:PutonLine("C",pA,pB);
+ regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ tmp1=(1-par)*p1+par*p2;
+ if(abs(dx)>abs(dy),
+ tmp=name+".x";
+ tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11upto
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ if(abs(dy)>0,
+ tmp=name+".y";
+ tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]";
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ tmp2=p1;//16.10.11
+ Putpoint(name,tmp1,tmp2);
+ );
+ );
+);
+
+PutonSeg(name,sgstr):=(
+ regional(seg,p1,p2);
+ if(isstring(sgstr),seg=parse(sgstr),seg=sgstr);
+ PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2));
+);
+PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]);
+PutonSeg(name,p1org,p2org,options):=(
+//help:PutonSeg("C","sgAB");
+//help:PutonSeg("C",pA,pB);
+ regional(par,dx,dy,p,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ PutonLine(name,p1,p2,[par]);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ p=parse(name+".xy");
+ p=LLcrd(p);
+ if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");
+ );
+ );
+ if(abs(dx)<abs(dy) & (p_2-p1_2)*(p_2-p2_2)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");//16.10.11upto
+ );
+ );
+);
+
+PutonCurve(pn,crv):=PutonCurve(pn,crv,[]);
+PutonCurve(pn,crv,options):=(
+//help:PutonCurve("A","gr1");
+ regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg);
+ if(!islist(options),optionL=[options],optionL=options);
+ leftlim=XMIN;
+ rightlim=XMAX;
+ Flg=0;
+ Msg="y";
+ forall(optionL,
+ if(isstring(#), // 16.02.10 from
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="N", Msg="n"); // 16.02.10 upto
+ ,
+ if(Flg==0,
+ leftlim=#;
+ Flg=Flg+1;
+ ,
+ rightlim=#;
+ );
+ );
+ );
+ Pmt=MeetCurve(crv,leftlim,0);
+ pstr=apply(allpoints(),textformat(#,5)); // 15.04.07
+ if(!contains(pstr,pn),
+ createpoint(pn,Pcrd(Pmt));
+ ,
+ tmp1=parse(pn+".x");
+ if(tmp1< leftlim % tmp1>rightlim,
+ if(tmp1< leftlim,tmp= leftlim, tmp=rightlim);
+ Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y");
+ ,
+ Pmt=MeetCurve(crv,pn+".x",pn+".y");
+ );
+ ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";";
+ parse(ptstr);
+ );
+ if(Msg=="y",
+ println("Put "+pn+" on Curve "+text(crv));
+ );
+);
+
+CrossPoint(name,Crv1,Crv2,range):=(
+ regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2);
+ Mx1=range_1; Mx2=range_2;
+ repeat(15,
+ Mx3=(Mx1+Mx2)/2;
+ Crs1=MeetCurve(Crv1,Mx1,0);
+ Crs2=MeetCurve(Crv2,Mx1,0);
+ Crs3=MeetCurve(Crv1,Mx3,0);
+ Crs4=MeetCurve(Crv2,Mx3,0);
+ df1=Crs1_2-Crs2_2;
+ df2=Crs3_2-Crs4_2;
+ if((df1>0 & df2>0) % (df1<0 & df2<0),
+ Mx1=Mx3;
+ ,
+ Mx2=Mx3;
+ );
+ );
+ Putpoint(name,Crs1);
+);
+
+Setscaling(sc):=(
+//help:Setscaling(3);
+ SCALEX=1;
+ SCALEY=sc;
+ Com0th("Setscaling("+sc+")");
+ Setwindow("Msg=no");
+);
+
+Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]);
+Tabledatalight(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledatalight("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledatalight "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist));
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tabledata(nm,n,m,xsize,ysize,rmvL):=
+ Tabledata(nm,n,m,xsize,ysize,rmvL,[]);
+Tabledata(nm,n,m,xsize,ysize,rmvL,options):=(
+ regional(Tb,name,tmp,xLst,yLst);
+ name="tb"+nm;
+ xLst=apply(1..n,xsize/n);
+ yLst=apply(1..m,ysize/m);
+ Tabledata(nm,xLst,yLst,rmvL,options)
+);
+Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]);
+Tabledata(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledata("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledata "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp="C"+text(#);
+ tmp1="c"+text(#)+"r0";
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]);
+ clist_(#+1)=parse(tmp+".xy");
+ );
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp="R"+text(#);
+ tmp1="c0r"+text(#);
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ rlist_(#+1)=parse(tmp+".xy");
+ );
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(#<m,
+ tmp1=parse("C"+text(#));
+ tmp2=parse("C"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp+[-0.2,0.5],text((tmp2.x-tmp1.x)*10));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(#<n,
+ tmp1=parse("R"+text(#));
+ tmp2=parse("R"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp-[1.2,0.1],text(abs(tmp1.y-tmp2.y)*10));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist)); // 15.06.11
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tseginfo(seg):=(
+ regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2);
+ if(substring(seg,0,2)=="sg",
+ cr=substring(seg,2,length(seg));
+ ,
+ cr=seg;
+ );
+ tp=substring(cr,0,1);
+ if(tp=="c",
+ tpc="r";
+ ,
+ tpc="c";
+ );
+ tmp1=indexof(cr,tpc);
+ tmp=substring(cr,tmp1,length(cr));
+ tmp2=tmp1+indexof(tmp,tpc);
+ n1=substring(cr,1,tmp1-1);
+ n2=substring(cr,tmp1,tmp2-1);
+ n3=substring(cr,tmp2,length(cr));
+ [tp+n1,tpc,parse(n2),parse(n3)];
+);
+
+Tsegrmv(rmvL):=Tsegrmv(rmvL,[]);
+Tsegrmv(rmvL,options):=(
+ regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2);
+ forall(rmvL,cr,
+ tmp1=Tseginfo(cr);
+ hd=tmp1_1;
+ tpc=tmp1_2;
+ m1=tmp1_3;
+ m2=tmp1_4;
+ gcL=select(GCLIST,Tseginfo(#_1)_1==tmp1_1);
+ flg=0;
+ forall(gcL,
+ if(flg==0,
+ tmp=Tseginfo(#_1);
+ n1=tmp_3;
+ n2=tmp_4;
+ if(m1>=n1 & m2<=n2,
+ gc=#;
+ flg=1;
+ );
+ );
+ );
+ if(flg==1,
+ Changestyle([gc_1],["nodisp"]);
+ tail="";
+ if(indexof(hd,"r")>0,
+ tail=hd; hd="";
+ );
+ if(n1<m1,
+ tmp1=tpc+text(n1);
+ tmp2=tpc+text(m1);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ if(m2<n2,
+ tmp1=tpc+text(m2);
+ tmp2=tpc+text(n2);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ );
+ );
+);
+
+Tgrid(ptstr):=(
+//help:Tgrid("c2r5");
+ regional(tmp,tmp1,tmp2);
+ tmp=parse(ptstr);
+ if(islist(tmp),
+ tmp;
+ ,
+ tmp=indexof(ptstr,"r");
+ tmp1=substring(ptstr,1,tmp-1);
+ tmp1=parse(tmp1);
+ tmp2=substring(ptstr,tmp,length(ptstr));
+ tmp2=parse(tmp2);
+ [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2];
+ );
+);
+
+Tlistplot(ptL):=Tlistplot(ptL,[]);
+Tlistplot(Ag1,Ag2):=(
+ regional(nm,ptL,options);
+ if(isstring(Ag1),
+ nm=Ag1;
+ ptL=Ag2;
+ options=[];
+ ,
+ ptL=Ag1;
+ options=Ag2;
+ nm=ptL_1+ptL_2;
+ );
+ Tlistplot(nm,ptL,options);
+);
+Tlistplot(nm,ptL,options):=(
+//help:Tlistplot(["c0r0","c0r4"]);
+//help:Tlistplot("1",["c0r0","c0r4"]);
+ regional(tmp);
+ tmp=apply(ptL,Tgrid(#)); // 15.06.03
+ Listplot(nm,tmp,append(options,"Msg=no"));
+);
+
+ChangeTablestyle(nameL,style):=(
+////help:ChangeTablestyle(["r0c0c3"],["da"]);
+ regional(nmL,tmp,tmp1,tmp2);
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ nmL=apply(nmL,"sg"+#);
+ nmL=select(nmL,islist(parse(#)));
+ Changestyle(nmL,style);
+);
+
+Findcell(pos1,pos2):=Findcell("",pos1,pos2);
+Findcell(Tbdata,pos1,pos2):=(
+//help:Findcell("c0r0","c2r1");
+ regional(tmp1,tmp2,posnw,posse,ctr,dx,dy);
+ if(isstring(pos1),
+ posnw=Tgrid(pos1); // 15.05.20
+ posse=Tgrid(pos2);
+ //posnw=parse(pos1);
+ //posse=parse(pos2);
+ ,
+ if(islist(pos1),
+ posnw=pos1;
+ posse=pos2;
+ ,
+ tmp1="c"+text(pos1-1)+"r"+text(pos2-1);
+ tmp2="c"+text(pos1)+"r"+text(pos2);
+ posnw=Tgrid(tmp1);
+ posse=Tgrid(tmp2);
+// posnw=parse(tmp1);
+// posse=parse(tmp2);
+ );
+ );
+ ctr=(posnw+posse)/2;
+ dx=abs(posse_1-ctr_1);
+ dy=abs(posnw_2-ctr_2);
+ [ctr,dx,dy];
+);
+
+Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr);
+Putcell(Tbdata,pos1,pos2,dir,lttr):=(
+//help:Putcell("c0r0","c2r1","lt","abc");
+//help:Putcell(2,3,"c","xyz");
+ regional(tmp,tmp1,tmp2,posnw,posse,
+ posdir,posstr,ctr,dx,dy);
+ tmp=Findcell(Tbdata,pos1,pos2);
+ ctr=tmp_1; dx=tmp_2; dy=tmp_3;
+ posdir=ctr;
+ posstr=dir;
+ if(indexof(dir,"b")>0,
+ posdir_2=posdir_2-dy;
+ posstr=replace(posstr,"b","n");
+ );
+ if(indexof(dir,"t")>0,
+ posdir_2=posdir_2+dy;
+ posstr=replace(posstr,"t","s");
+ );
+ if(indexof(dir,"l")>0,
+ posdir_1=posdir_1-dx;
+ posstr=replace(posstr,"l","e");
+ );
+ if(indexof(dir,"r")>0,
+ posdir_1=posdir_1+dx;
+ posstr=replace(posstr,"r","w");
+ );
+ Letter(posdir,posstr,text(lttr));
+);
+
+Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex);
+Putcellexpr(Tbdata,pos1,pos2,dir,ex):=(
+//help:Putcellexpr("c0r0","c2r1","lt","abc");
+//help:Putcellexpr(2,3,"c","\sin x");
+ Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$");
+);
+
+Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL);
+Putrow(Tbdata,nrow,dir,lttrL):=(
+//help:Putrow(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,mcol);
+ mcol=length(lttrL);
+ forall(1..mcol,
+ Putcell(Tbdata,#,nrow,dir,lttrL_#);
+ );
+);
+
+Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL);
+Putrowexpr(Tbdata,nrow,dir,exL):=(
+//help:Putrowexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ Putrow(Tbdata,nrow,dir,lttrL);
+);
+
+PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL);
+PutcoL(Tbdata,mcol,dir,lttrL):=(
+//help:PutcoL(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,nrow);
+ nrow=length(lttrL);
+ forall(1..nrow,
+ Putcell(Tbdata,mcol,#,dir,lttrL_#);
+ );
+);
+PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL);
+PutcoLexpr(Tbdata,mcol,dir,exL):=(
+//help:PutcoLexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ PutcoL(Tbdata,mcol,dir,lttrL);
+);
+
+Setwindow():=Setwindow("Msg=yes");
+Setwindow(str):=(
+ regional(tmp,tmp1,tmp2,msg);
+ msg="y";
+ tmp=indexof(str,"="); // 16.02.10
+ tmp1=Toupper(substring(str,tmp,tmp+1));
+ if(tmp1=="N",msg="n");
+ if((ispoint(SW) & ispoint(NE)),
+ tmp1=Lcrd(SW);
+ tmp2=Lcrd(NE);
+ XMIN=tmp1_1; XMAX=tmp2_1;
+ YMIN=tmp1_2; YMAX=tmp2_2;
+ ,
+// XMIN=-5; XMAX=5;
+// YMIN=Lcrdy(-5); YMAX=Lcrdy(5);
+ createpoint("SW",Pcrd([XMIN,YMIN]));
+ createpoint("NE", Pcrd([XMAX,YMAX]));
+ );
+ if(msg=="y",
+ println("Setwindow(["+XMIN+","+XMAX+"],["+YMIN+","+YMAX+"])");
+ );
+ layer(KETPICLAYER);
+ autoclearlayer(KETPICLAYER,true);
+ drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
+ Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
+);
+Setwindow(xrange,yrange):=(
+//help:Setwindow([2,3],[-1,1]);
+ XMIN=xrange_1;
+ XMAX=xrange_2;
+ YMIN=yrange_1;
+ YMAX=yrange_2;
+// Setwindow();
+);
+
+Sciform(list):=(
+ regional(plotlist,comp,pos,out,out2,nn,strL,flg,
+ tmp,tmp1,tmp2,tmp3,Nj);
+ plotlist=Flatten([list]);
+ out=replace(plotlist_1,".xy","");
+ out=replace(out,".x","(1)");
+ out=replace(out,".y","(2)");
+ if(length(plotlist)==1,
+ comp=[];
+ forall(1..length(out),
+ comp=append(comp,substring(out,#-1,#));
+ );
+ out="";
+ pos=0;
+ forall(comp,
+ if(#!="'",
+ out=out+#;
+ ,
+ if(pos==0,
+ tmp=indexof(out,"Assign(");
+ if(substring(out,length(out)-7,length(out))=="Assign(",
+ out=out+"'";
+ pos=1;
+ ,
+ out=out+"Assign('";
+ pos=2;
+ );
+ ,
+ if(pos==2,
+ out=out+"')";
+ ,
+ out=out+"'";
+ );
+ pos=0;
+ );
+ );
+ );
+ ,
+ forall(2..length(plotlist),
+ comp=plotlist_#;
+ if(isstring(comp),
+ pos=indexof(comp,"Assign(");
+ if(pos>0,
+ comp=substring(comp,6,length(comp));
+ );
+ out=out+"Assign(";
+ comp=replace(comp,".xy","");
+ comp=replace(comp,".x","(1)");
+ comp=replace(comp,".y","(2)");
+ out=out+"'"+comp+"'";
+ out=out+"),";
+ );
+ if(islist(comp),
+ forall(comp,
+ out=out+"'"+#+"',";
+ );
+ );
+ );
+ if(length(plotlist)>1,
+ out=substring(out,0,length(out)-1);
+ out=out+");";
+ );
+ );
+ pos=[];
+ forall(1..length(out),
+ tmp=indexof(substring(out,#-1,length(out)),"Assign");
+ if(tmp>0,
+ tmp1=#-1+tmp;
+ if(length(pos)==0,
+ pos=[tmp1];
+ ,
+ if(pos_(length(pos))<tmp1,
+ pos=append(pos,tmp1);
+ );
+ );
+ );
+ );
+ if(length(pos)>0,
+ strL=[];
+ Nj=0;
+ forall(pos,
+ tmp=substring(out,Nj,#-1);
+ strL=append(strL,tmp);
+ Nj=#-1;
+ );
+ strL=append(strL,substring(out,Nj,length(out)));
+ out="";
+ forall(strL,
+ if(indexof(#,"Assign")==0,
+ out=out+#;
+ ,
+ tmp=indexof(#,"('");
+ tmp1=indexof(#,"')");
+ tmp2=substring(#,tmp+1,tmp1-2);
+ tmp3=substring(#,tmp1-2,length(#));
+ if(indexof(tmp2,"=")==0,
+ out=out+#;
+ ,
+ tmp=substring(tmp2,0,indexof(tmp2,"="));
+ out=out+"'"+tmp+"'+"+"Assign('";
+ tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2));
+ out=out+tmp+tmp3;
+ );
+ );
+ );
+ );
+ out2=""; // patched 16.01.21 from
+ nn=length(out);
+ flg=0;
+ forall(1..nn,
+ if(flg==0,
+ tmp=indexof(out,"='+Assign('");
+ if(tmp==0,
+ out2=out2+out;
+ flg=1;
+ ,
+ out2=out2+substring(out,0,tmp);
+ out=substring(out,tmp+10,length(out));
+ tmp=indexof(out,"'"); // 16.04.19 from
+ tmp1=substring(out,0,tmp-1);
+ tmp2="1234567890";
+ tmp=apply(1..length(tmp1),
+ indexof(tmp2,substring(tmp1,#-1,#)));
+ tmp=min(tmp);
+ if(tmp==0, // 16.04.19 upto
+ out2=out2+"'+Assign('";
+ ,
+ tmp=indexof(out,"'");
+ out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 upto
+ );
+ );
+ );
+ );
+ out2=replace(out2,"Dist=","D=");
+ out2=replace(out2,"Dis=","D=");
+ out2;
+);
+
+
+Rform(list):=(
+ regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj);
+ out=list;
+ out=replace(out,"[[[","list([[");
+ out=replace(out,"[","c(");
+ out=replace(out,"]",")");
+ out=replace(out,".xy","");
+ out=replace(out,".x","[1]");
+ out=replace(out,".y","[2]");
+ out;
+);
+
+Defvar(varstr):=(
+ regional(name,value,tmp,tmp1);
+ parse(varstr);
+ tmp=indexof(varstr,"=");
+ name=substring(varstr,0,tmp-1);
+ value=substring(varstr,tmp,length(varstr));
+ value=parse(value);
+ tmp1=select(1..length(VLIST),VLIST_#_1==name+"=");
+ if(length(tmp1)>0,
+ tmp=tmp1_1;
+ VLIST_tmp=[name+"=",value];
+ ,
+ VLIST=prepend([name+"=",value],VLIST);
+ );
+);
+
+Defvar(name,value):=(
+//help:Defvar("a",0.3);
+ regional(tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+format(#,5)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ tmp1=format(value,5);
+ );
+ tmp=name+"="+tmp1; // 15.02.06
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=name+"="); // 15.02.08
+ VLIST=prepend([name+"=",value],VLIST);
+);
+
+Iftosci(strorg):=( // 16.06.10
+ regional(str,ifL,ppL,cpL,kk,sL,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ str=replace(strorg,LFmark,"");
+ ifL=Indexall(str,"if(");
+ ppL=Bracket(str,"()");
+ cpL=Indexall(str,",");
+ tmp1=Bracket(str,"[]");
+ forall(1..(length(tmp1)/2),kk,
+ cpL=select(cpL,#<tmp1_(2*kk-1)_1%#_1>tmp1_(2*kk)_1);
+ );
+ forall(1..length(ifL),kk,
+ tmp=select(ppL,#_1>ifL_kk);
+ tmp1=tmp_1;
+ tmp2=select(tmp,#_2==-tmp1_2);
+ tmp2=tmp2_1;
+ tmp3=select(cpL,#>tmp1_1 & #<tmp2_1);
+ ifL_kk=[tmp1_1,tmp2_1,tmp1_2,tmp3];
+ );
+ forall(1..length(cpL),kk,
+ tmp=select(1..length(ifL),contains(ifL_#_4,cpL_kk));
+ tmp1=tmp_(length(tmp));
+ cpL_kk=[cpL_kk,tmp1];
+ );
+ sL=apply(1..length(str),substring(str,#-1,#));
+ forall(1..length(ifL),kk,
+ tmp1=ifL_kk_1;
+ tmp2=ifL_kk_2;
+ tmp=select(cpL,#_2==kk);
+ tmp3=apply(tmp,#_1);
+ sL_tmp1=" ";
+ sL_tmp2=";end;";
+ sL_(tmp3_1)=" then,";
+ if(length(tmp3)>1,
+ sL_(tmp3_2)=";else,";
+ );
+ );
+ tmp=sum(sL);
+);
+
+Fortosci(strorg):=(
+ regional(str,jj,var,tmp,tmp1,tmp2,tmp3,tmp4,
+ Out,repL,Pflg,Iflg,Cflg);
+ str=strorg;
+ repL=[];
+ tmp1=Indexall(str,"forall");
+ tmp2=Indexall(str,",");
+ forall(1..length(tmp1),jj,
+ tmp=select(tmp2,#>tmp1_jj);
+ var=substring(str,tmp_1,tmp_2-1);
+ tmp3=substring(str,tmp1_jj-1,tmp_2-1);
+ tmp=indexof(tmp3,"(");
+ tmp4=substring(tmp3,tmp,length(tmp3));
+ tmp=indexof(tmp4,",");
+ tmp4=substring(tmp4,0,tmp-1);
+ tmp4="for "+var+"="+tmp4;
+ tmp4=replace(tmp4,"..",":");
+ repL=concat(repL,[tmp3,tmp4]);
+ );
+ forall(1..length(repL)/2,
+ str=replace(str,repL_(2*#-1),repL_(2*#));
+ );
+ tmp=Bracket(str);
+ tmp=select(tmp,#_2==0);
+ tmp=tmp_1_1;
+ tmp1=substring(str,tmp-1,length(str));
+ tmp1=replace(tmp1,")",";end");
+ str=substring(str,0,tmp-1)+tmp1;
+ str=replace(str,";;",";");
+ str;
+);
+
+Deffun(name,bodylist):=(
+//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); // 16.02.18
+ regional(funstr,tmp,tmp1,str,Pos);
+ funstr=name+":=(";
+ forall(bodylist,
+ funstr=funstr+#+";";
+ );
+ funstr=funstr+");";
+ parse(funstr);
+ tmp=bodylist_(length(bodylist));
+ str="function "+tmp+"="+name+",";
+ forall(1..(length(bodylist)-1),
+ tmp1=bodylist_#;
+ tmp1=replace(tmp1,LFmark,"");// 16.05.26
+ tmp1=replace(tmp1," ","");// 16.05.26
+ Pos=indexof(tmp1,"regional")+indexof(tmp1,"local");
+ if(Pos==0,
+ tmp=replace(tmp1,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ tmp=replace(tmp,".y","(2)");
+ if(indexof(tmp,"if(")>0,
+ tmp=iftosci(tmp);
+ );
+ if(indexof(tmp,"forall(")>0, // 16.05.26from
+ tmp=Fortosci(tmp);
+ ); // 16.05.26upto
+ str=str+tmp+",";
+ );
+ );
+ str=str+"endfunction;";
+ FUNLIST=append(FUNLIST,str);
+);
+
+Windispg():=(
+ regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,tmp3,opcindy);
+ gsave();
+ layer(KETPIClayer);
+ forall(GCLIST,Nj,
+ if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
+ if(islist(Dt) & length(Dt)>0, // 12.19,12.22
+ tmp=MeasureDepth(Dt);
+ if(tmp==1,Dt=[Dt]);
+ opcindy=Nj_3;
+ if(Nj_2<0,tmp1=0,tmp1=Nj_2);
+ if(tmp1<10,
+ forall(Dt,Nk,
+// tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#));
+// tmp2=apply(tmp2,Pcrd(#));
+ tmp2=Nk; // 14.12.04
+ if(length(Nk)>1,
+ forall(2..length(Nk),
+ tmp3=textformat(Nk_[#-1,#],5);
+ tmp3=substring(tmp3,1,length(tmp3)-1);
+ if(tmp1==1,opcindy=opcindy+",dashpattern->[2,2]");
+ tmp="draw("+tmp3+
+ ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")";
+ parse(tmp);
+ );
+ ,
+ if(length(Nk)==1,
+ tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
+ parse(tmp);
+ );
+ );
+ );
+ );
+ );
+ );
+// if(ADDAXES=="1", // 16.10.08from
+// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]);
+// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]);
+// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]);
+// Letter([[0,0],"sw","O"]);
+// ); // 16.10.08upto
+ grestore();
+ layer(0);
+);
+</script>
+ <script type="text/javascript">
+var cdy = CindyJS({
+ scripts: "cs*",
+ use: ["katex"],
+ defaultAppearance: {
+ dimDependent: 0.7,
+ fontFamily: "sans-serif",
+ lineSize: 1,
+ pointSize: 5.0,
+ textsize: 12.0
+ },
+ angleUnit: "°",
+ geometry: [
+ {name: "SW", type: "Free", pos: [4.0, 3.2, -0.8], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "NE", type: "Free", pos: [4.0, 1.7506361323155215, 0.372929562139521], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "A", type: "Free", pos: [4.0, 3.0, -1.0], color: [1.0, 0.0, 0.0], size: 2.0},
+ {name: "B", type: "Free", pos: [-2.1481481481481484, -4.0, -1.3570492400077014], color: [1.0, 0.0, 0.0], size: 2.0},
+ {name: "C", type: "Free", pos: [4.0, -3.0, 1.0], color: [1.0, 0.0, 0.0], size: 2.0},
+ {name: "D", type: "Free", pos: [4.0, 0.3393939393939394, 0.4441252058207023], color: [1.0, 0.0, 0.0], size: 1.0},
+ {name: "Text1", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 1.0, 0.0], fillalpha: 0.27272728085517883, script: "if(length(Shellparent)>0,\n Makeshell(),Makebat();\n);\nWritetoSci(2);", text: "Parent", textsize: 18.0, dock: {corner: "UL", offset: [10.0, -20.0]}},
+ {name: "Text3", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 0.29, 0.29], fillalpha: 0.27272728085517883, script: "Viewtex();", text: "Texview", textsize: 18.0, dock: {corner: "UL", offset: [79.0, -20.0]}},
+ {name: "Text0", type: "ToggleButton", color: [0.0, 0.0, 0.0], fillcolor: [0.0, 1.0, 1.0], fillalpha: 0.27272728085517883, script: "Mkketcindyjs();", text: "KeTJS", textsize: 18.0, dock: {corner: "UL", offset: [243.0, -20.0]}},
+ {name: "Text4'", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 0.498, 0.0], fillalpha: 0.27272728085517883, script: "kc();", text: "Exekc", textsize: 18.0, dock: {corner: "UL", offset: [164.0, -20.0]}}
+ ],
+ ports: [{
+ id: "CSCanvas",
+ width: 766,
+ height: 453,
+ transform: [{visibleRect: [-7.764668168545777, 5.826912667783914, 13.141257374885031, -6.536513273696708]}],
+ axes: true,
+ grid: 1.0,
+ snap: true,
+ background: "rgb(168,176,192)"
+ }],
+ csconsole: false,
+ cinderella: {build: 1894, version: [2, 9, 1894]}
+});
+ </script>
+</head>
+<body>
+ <div id="CSCanvas"></div>
+</body>
+</html>
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2.cdy b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2.cdy
new file mode 100644
index 00000000..4f3445d2
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2ketcindy.html b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2ketcindy.html
new file mode 100644
index 00000000..53b5c9a0
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js02diffeq2ketcindy.html
@@ -0,0 +1,6502 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+
+ <title>js02diffeq2.cdy</title>
+ <style type="text/css">
+ * {
+ margin: 0px;
+ padding: 0px;
+ }
+
+ #CSConsole {
+ background-color: #FAFAFA;
+ border-top: 1px solid #333333;
+ bottom: 0px;
+ height: 200px;
+ overflow-y: scroll;
+ position: fixed;
+ width: 100%;
+ }
+ </style>
+ <link rel="stylesheet" href="http://cindyjs.org/dist/v0.8/CindyJS.css">
+ <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/Cindy.js"></script>
+ <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/KetCindyPlugin.js"></script>
+<script id="csdraw" type="text/x-cindyscript">
+Fhead="s210diffeq2";
+Texparent="";
+
+Ketinit();
+Changework(Dirhead+"/ketsample/samplesJS");
+
+//Deqplot("1","y`=y","x",0,1);
+Deqplot("2","y``=-L.x*y`-G.x*y","t=[0,XMAX]",0,[C.y,0],["Num=200"]);
+//Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",0,A,["Num=200"]);
+
+Expr([M,"e","\displaystyle\frac{d^2 x}{dt^2}+"+L.x+"\frac{dx}{dt}+"+G.x+"x=0"]);
+
+Windispg();
+
+//Help("De");
+
+;
+</script>
+<script id="csinit" type="text/x-cindyscript">
+Ketinit():=Ketinit(1);
+Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]);
+Ketinit(sy,rangex,rangey):=(
+ regional(pt,tmp,tmp1,tmp2);
+ PenThickInit=8;
+ ULEN="1cm";
+ KETPICLAYER=20;
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ KETPICCOUNT=1;
+ KCOLOR=[0,0,0];
+ GLIST=[];
+ GCLIST=[];
+// GDATALIST=[];
+ GOUTLIST=[];
+ POUTLIST=[];
+ VLIST=[];
+ FUNLIST=[];
+ LETTERlist=[];
+ COM0thlist=[];
+ COM1stlist=[];
+ COM2ndlist=[];
+ SCIWRLIST=[];
+ SCIRELIST=[];
+ ADDAXES="1";
+ LFmark=unicode("000a");
+ Dq=unicode("0022");
+ WaitUnit=10;
+ CONTINUED=0;
+ OutComList=[];
+ OutFileLIst=[]; // 15.10.22
+ FigPdfList=[]; // 16.04.08
+ ADDPACK=[]; // 16.05.16
+ ErrFlag=0;
+ setdirectory(Dirwork);
+ if(isstring(Fhead), // 15.04.06
+ Fnametex=Fhead+".tex";
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+ );
+ if(!isstring(Mackc),// 16.06.07
+ Mackc="sh";
+ );
+ ArrowlineNumber=1; // 15.01.05
+ ArrowheadNumber=1;
+ BezierNumber=1; //15.01.03
+ SCALEX=1;
+ SCALEY=sy;
+// Setscaling(sy);
+ XMIN=rangex_1/SCALEX;
+ XMAX=rangex_2/SCALEX;
+ YMIN=rangey_1/SCALEY;
+ YMAX=rangey_2/SCALEY;
+ Setwindow("Msg=n"); // 16.05.31
+);
+
+DqDq(str):=unicode("0022")+str+unicode("0022");
+
+Tab2list(dtstr):=Tab2list(dtstr,[]);
+Tab2list(dtstr,options):=(
+//help:Tab2list(datastr);
+//help:Tab2list(options=[0]);
+ regional(dtall,dt,rep,out,crm,lfm,htm,first,tmp,tmp1,tmp2);
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ htm=unicode("0009");
+ rep=0;
+ if(length(options)>0,rep=options_1);
+ first=lfm; // 16.09.05from
+ if(indexof(dtstr,crm)>0,
+ first=crm;
+ if(indexof(dtstr,crm+lfm)>0,
+ first=first+lfm;
+ ); // 16.09.05upto
+ );
+ tmp1=Indexall(dtstr,first);
+ tmp1=prepend(0,tmp1);
+ tmp1=append(tmp1,length(dtstr));
+ dtall=[];
+ forall(1..(length(tmp1)-1),
+ tmp=substring(dtstr,tmp1_#,tmp1_(#+1)-1);
+ if(length(tmp)>0,
+ dtall=append(dtall,tmp);
+ );
+ );
+ out=[];
+ forall(dtall,dt,
+ tmp1=tokenize(dt,unicode("0009"));
+ tmp2=[];
+ forall(tmp1,
+ if(isstring(#),tmp=parse(#),tmp=#);
+ if(!isreal(tmp),
+ if(length(#)>0,tmp=#,tmp=rep);
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ out=append(out,tmp2);
+ );
+ out;
+);
+
+Columnlist(dt,list):=( // 16.09.04
+//help:Columnlist(dt,1..3);
+ apply(dt,#_list);
+);
+
+Dispmat(dt):=( // 16.09.16
+//help:Dispmat(dt);
+ regional(htm,crm,lfm,row,tmp,tmp1,tmp2);
+ htm=unicode("0009");
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ tmp2="";
+ forall(dt,row,
+ tmp1="";
+ forall(row,
+ if(isstring(#),
+ tmp1=tmp1+#+htm;
+ ,
+ tmp1=tmp1+text(#)+htm;
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp1=tmp1+lfm;
+ tmp2=tmp2+tmp1;
+ );
+ print(tmp2);
+ println();
+);
+
+norm(v1):=( // 16.09.01
+//help:norm([2,1,3]);
+ regional(out,tmp,tmp1,tmp2);
+ out=0;
+ forall(1..length(v1),
+ out=out+(v1_#)^2;
+ );
+ out=sqrt(out);
+ out;
+);
+norm(v1,v2):=(
+ norm(v2-v1);
+);
+
+// 16.03.28
+Removespace(str):=(
+//help:Removespace(" a b c ");
+ regional(tmp,flg,out);
+ tmp=length(str)+1;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ if((str_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(str,tmp-1,length(str));
+ flg=0;
+ tmp=0;
+ forall(reverse(1..length(out)),
+ if(flg==0,
+ if((out_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(out,0,tmp);
+);
+
+Indexall(str,key):=(
+ regional(rest,out,flg,tmp,tmp1,);
+ out=[];
+ rest=str;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ tmp=indexof(rest,key);
+ if(tmp>0,
+ tmp1=tmp+length(str)-length(rest);
+ out=append(out,tmp1);
+ rest=substring(rest,tmp,length(rest));
+ ,
+ flg=1;
+ );
+ );
+ );
+ out;
+);
+
+Changework(path):=(
+//help:Changework(directory);
+ regional(tmp); // 16.04.23from
+ Dirwork=path;
+ setdirectory(Dirwork); // 16.04.23
+ if(ismacosx(),
+ if(!iskcexists(Dirwork), // 16.06.07from
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+// if(!isstring(Dq),Dq=unicode("0022")); // 18.07.30
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ println(SCEOUTPUT,"chmod +x kc.sh");
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+"/kc.sh",Dirlib,Fnametex)); // 16.07.23
+ ); // 16.06.07upto
+ );
+);
+
+Changestyle(nameL,style):=(
+//help:Changestyle(["sgAB"],["da"]);
+ regional(nmL,name,Ltype,Ltypeorg,Noflg,opcindy,tmp);
+ tmp=Divoptions(style);
+ Ltypeorg=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ forall(nmL,name,
+ Ltype=Ltypeorg;
+ GCLIST=select(GCLIST,#_1!=name);
+ COM2ndlist=select(COM2ndlist,indexof(#,"("+name)==0); // 15.05.23
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+);
+
+Op(n,object):=( // 16.05.25
+//help:Op(4,[1,2,3,4]);
+//help:Op(3,"abcd");
+ regional(out);
+ if(islist(object),
+ out=object_n;
+ ,
+ if(isstring(object),
+ out=substring(object,n-1,n);
+ );
+ );
+ out;
+);
+
+Toupper(str):=(
+ regional(alphabet,out,tmp,tmp1);
+ alphabet="abcdefghijklmnopqrstuvwxyz";
+ out="";
+ forall(1..length(str),
+ tmp=substring(str,#-1,#);
+ tmp1=indexof(alphabet,tmp);
+ if(tmp1>0,
+ out=out+unicode(text(tmp1+64),base->10);
+ ,
+ out=out+tmp;
+ );
+ );
+ out;
+);
+
+Textformat(value,dig):=(
+//help:Textformat(2/3,4);
+//help:Textformat([gr1,gr2],5);
+ regional(vv,tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+Textformat(#,dig)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ if(ispoint(value) % isstring(value),
+// vv=Lcrd(value);
+// tmp1=Textformat(vv,dig);
+// tmp1=text(value); // 15.04.07
+ if(isstring(value),tmp1=Dq+value+Dq,tmp1=text(value)); // 15.10.02
+ ,
+ tmp1=format(value,dig);
+ );
+ );
+ tmp1;
+);
+
+Sprintf(value,dig):=(
+//help:Sprintf(5.1,4);
+ regional(vv,tmp,tmp1);
+ if(!islist(value),
+ vv=Textformat(value,dig);
+ if(indexof(vv,".")==0,vv=vv+".");
+ vv=vv+"0000000000000000";
+ tmp=indexof(vv,".")+dig;
+ vv=substring(vv,0,tmp);
+ ,
+ vv=apply(value,Sprintf(#,dig));
+ );
+ vv;
+);
+
+Assign(funstr,vrL):=(
+ regional(nn,out,tmp,tmp1);
+ nn=length(vrL)/2;
+ out=funstr;
+ forall(1..nn,
+ out=Assign(out,vrL_(2*#-1),vrL_(2*#));
+ );
+ out;
+);
+
+Assign(funstr,varname,rep):=(
+//help:Assign("x^2+a*x","a",1.3);
+//help:Assign("a*x^2+b*x",["a",1,"b",2]);
+ regional(repstr,ii,jj,tmp,tmp1,tmp2,Notvar,Flg);
+ if(isstring(rep),repstr=rep,repstr="("+Textformat(rep,5)+")"); // 15.02.09, 07.06
+ tmp=[46]; // 12.20
+ tmp=concat(tmp,48..57);
+ tmp=concat(tmp,65..90);
+ tmp=concat(tmp,97..122);
+ Notvar=apply(tmp,unicode(text(#),base->10));
+ tmp2="";
+ forall(1..100,
+ ii=indexof(funstr,varname);
+ if(ii>0,
+ Flg=0;
+ if(ii>1,
+ tmp=substring(funstr,ii-2,ii-1);
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,ii);
+ funstr=substring(funstr,ii,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ jj=ii-1+length(varname);
+ if(jj<length(funstr),
+ tmp=substring(funstr,jj,jj+1));
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,jj);
+ funstr=substring(funstr,jj,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp2=tmp2+substring(funstr,0,ii-1)+repstr;
+ funstr=substring(funstr,jj,length(funstr));
+ );
+ );
+ );
+ funstr=tmp2+funstr;
+ funstr;
+);
+
+MeasureDepth(list):=(
+ regional(tmp,Depth,Flg);
+ Flg=0;
+ Depth=0;
+ if(ispoint(list), // 15.01.22
+ Depth=0;
+ Flg=1;
+ ,
+ tmp=list_1;
+ );
+ repeat(4,
+ if(Flg==0,
+ if(islist(tmp),
+ tmp=tmp_1;
+ Depth=Depth+1;
+ ,
+ if(ispoint(tmp),Depth=Depth+1);
+ Flg=1;
+ );
+ );
+ );
+ Depth;
+);
+
+Flattenlist(pltlist):=(
+//help:Flattenlist([[2,3],[[1,2],[5,6]]]);
+ regional(Out,nn,Dt,ii,tmp,flg);
+ Out=[];
+ if(MeasureDepth(pltlist)==1,
+ Out=[pltlist];
+ ,
+ forall(1..length(pltlist),nn,
+ Dt=pltlist_nn;
+ if(MeasureDepth(Dt)<2,
+ Out=append(Out,Dt);
+ ,
+ forall(1..length(Dt),ii,
+ tmp=Flattenlist(Dt_ii);
+ Out=concat(Out,tmp);
+ );
+ );
+ );
+ );
+ Out;
+);
+
+Divoptions(options):=(
+//help:Divoptions(options);
+ regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy,flg,tmp,tmp1);
+ Ltype="dr"; // 2015.01.13
+ Noflg=0;
+ Inflg=0;
+ Outflg=0;
+ eqL=[];
+ realL=[];
+ strL=[];
+ opstr="";
+ opcindy="";
+ forall(options,
+ flg=0;
+ if(flg==0,
+ if(isreal(#) % ispoint(#) % islist(#),
+ realL=append(realL,#);
+ opstr=opstr+","+text(#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"=")>0,
+ eqL=append(eqL,#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"no")+indexof(#,"No")>0,
+ if(indexof(#,"tex")>0,Noflg=1);
+ if(indexof(#,"disp")>0,Noflg=2);
+ if(indexof(#,"data")>0,Noflg=3);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"out")+indexof(#,"Out")>0,
+ if(indexof(#,"-")==0,
+ Outflg=1;
+ ,
+ Outflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"in")+indexof(#,"In")>0,
+ if(indexof(#,"-")==0,
+ Inflg=1;
+ ,
+ Inflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp=substring(#,0,2);
+ tmp1=indexof(tmp,"dr")+indexof(tmp,"Dr");
+ tmp1=tmp1+indexof(tmp,"da")+indexof(tmp,"Da");
+ tmp1=tmp1+indexof(tmp,"id")+indexof(tmp,"Id");
+ tmp1=tmp1+indexof(tmp,"do")+indexof(tmp,"Do");
+ tmp1=tmp1+indexof(tmp,"dp")+indexof(tmp,"Dp");
+ if(tmp1>0,
+ Ltype=#;
+ flg=1;
+ );
+ if(flg==0,
+ strL=append(strL,#);
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ );
+ if(indexof(opcindy,"color->")==0,// 16.10.07from
+ opcindy=opcindy+",color->[0,0,0]";
+ );
+ [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy];
+);
+
+Dotprod(vec1,vec2):=(
+//help:Dotprod(vec1,vec2);
+ regional(v1,v2,tmp);
+ if(ispoint(vec1),v1=vec1.xy,v1=vec1);
+ if(ispoint(vec2),v2=vec2.xy,v2=vec2);
+ v1*v2;
+);
+
+Crossprod(a,b):=(
+//help:Crossprod(vec1,vec2);
+ regional(tmp1,tmp2,tmp3,Out);
+ if(length(a)==3,
+ tmp1=a_2*b_3-a_3*b_2;
+ tmp2=a_3*b_1-a_1*b_3;
+ tmp3=a_1*b_2-a_2*b_1;
+ Out=[tmp1,tmp2,tmp3];
+ ,
+ Out=a_1*b_2-a_2*b_1;
+ );
+ Out;
+);
+
+Ptstart(Fig):=(
+//help:Ptstart("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21
+ tmp_1;
+);
+
+Ptend(Fig):=(
+//help:Ptend("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_(length(tmp)); // 15.04.12
+);
+
+Numptcrv(Fig):=(
+//help:Numptcrv("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23
+ length(tmp);
+);
+
+Ptcrv(Num,Fig):=(
+//help:Ptcrv(10,"gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_Num;
+);
+
+Invert(Fig):=(
+//help:Invert("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27
+ reverse(tmp);
+);
+Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 16.01.27
+Invert(nm,Fig,options):=(
+//help:Invert("1","gr1");
+ regional(name,tmp);
+ name="-inv"+nm;
+ tmp=Invert(Fig);
+ Listplot(name,tmp,options);
+);// upto 16.01.27
+
+Paramoncrv(pP,Gdata):=(
+ regional(Tmp,PtL);
+// Eps=10^(-8);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ Tmp=Nearestpt(pP,PtL);
+ Tmp_2;
+);
+
+ParamonCurve(pP,nN,plist):=(
+//help:ParamonCurve(A,10,"gr1");
+ regional(PtL,Out,Pa,Pb,vV,vW,sS);
+ if(isstring(plist),PtL=parse(plist),PtL=plist);
+ if(nN==length(PtL),
+ Out=nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ vV=Pb-Pa;
+ vW=pP-Pa;
+ sS=vV*vW/|vV|^2;
+ sS=min([max([sS,0]),1]);
+ Out=nN+sS;
+ );
+ Out;
+);
+
+Pointoncrv(tT,PtL):=PointonCurve(tT,PtL);
+PointonCurve(tT,Gdata):=(
+//help:PointonCurve(20.5,"gr1");
+ regional(Out,Eps,nN,sS,Pa,Pb,PtL);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ if(length(PtL)==1,PtL=PtL_1);
+ Eps=10^(-4);
+ nN=floor(tT+Eps);
+ sS=max([tT-nN,0]);
+ if(nN==length(PtL),
+ Out=PtL_nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ Out=(1-sS)*Pa+sS*Pb;
+ );
+ Out;
+);
+
+Koutenseg(pA,pB,pC,pD):=Koutenseg(pA,pB,pC,pD,[]);
+Koutenseg(pA,pB,pC,pD,options):=(
+ regional(Eps0,Eps,Eps2,pV,Sv2,Out,pP,pQ,Flg,p1,p2,q1,q2,
+ em1,eM1,em2,eM2,rT,Tmp1,Tmp2);
+ Eps0=10^(-4);
+ pV=pB-pA;
+ Sv2=|pV|;
+ pP=pC-pA; pQ=pD-pA;
+ Eps=10^(-3);
+ Eps2=0.2;
+ Tmp1=0;
+ forall(options,
+ if(Tmp1==0,
+ Eps=#;
+ Tmp1=1;
+ ,
+ Eps2=#;
+ );
+ );
+ Flg=0;
+ if(Sv2<10^(-3),
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ Eps=min([Eps2,Eps/Sv2]);
+ p1=pP*pV/Sv2^2;
+ p2=[pP_2,-pP_1]*pV/Sv2^2;
+ q1=pQ*pV/Sv2^2;
+ q2=[pQ_2,-pQ_1]*pV/Sv2^2;
+ em1=-Eps; eM1=1+Eps;
+ em2=-Eps; eM2=Eps;
+ if(max([p1,q1])<em1 % min([p1,q1])>eM1,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(max([p2,q2])<em2 % min([p2,q2])>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & p2*q2<0,
+ rT=p1-(q1-p1)/(q2-p2)*p2;
+ if(rT>em1 & rT<eM1,
+ if(rT>-Eps0 & rT<1+Eps0,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,0];
+ ,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,1];
+ );
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ );
+ if(Flg==0 & (p1 > -Eps0 & p1 < 1 + Eps0 & p2 > -Eps0 & p2 < Eps0),
+ rT= p1;
+ Tmp1=pA+rT*pV;
+ Out= [Tmp1, rT, 0];
+ Flg=1;
+ );
+ if(Flg==0 & (q1 > -Eps0 & q1 < 1 + Eps0 & q2 > -Eps0 & q2 < Eps0),
+ rT= q1;
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,0];
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([q1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & (q1<em1 % q1>eM1% q2<em2 % q2>eM2),
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ if(Flg==0,
+ if(abs(p2)<abs(q2),
+ rT=min([max([p1,0]),1]);
+ ,
+ rT=min([max([q1,0]),1]);
+ );
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ );
+ Out;
+);
+
+IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]);
+IntersectcrvsPp(Gr1,Gr2,options):=(
+//help:IntersectcrvsPp("gr1","pa1");
+ regional(Out,Eps,Eps2,Eps0,Flg,Data1,Data2,
+ Tmp1,Tmp2,Tmp3,Tmp,KL1,KL2,pA,pB,Ni,Nj,
+ pP,pQ,rT,Flg,eqL,realL,opstr,Dif);
+ Eps=10^(-4);
+ Eps2=0.1;
+ Dif=0.05; // 2015.05.31
+ Flg=0;
+ Tmp1=Divoptions(options); //
+ eqL=Tmp1_5;
+ realL=Tmp1_6;
+ opstr=Tmp1_(length(Tmp1));
+ forall(eqL,
+ if(substring(#,0,1)=="D",
+ Tmp1=indexof(#,"=");
+ Dif=parse(substring(#,Tmp1,length(#)));
+ );
+ );
+ Tmp1=length(realL);
+ if(Tmp1>0,
+ Eps=realL_1;
+ if(Tmp1>1,
+ Eps2=realL_2;
+ );
+ );
+ Flg=0;
+ if(isstring(Gr1),Data1=parse(Gr1),Data1=Gr1);
+ if(isstring(Gr2),Data2=parse(Gr2),Data2=Gr2);
+ if(MeasureDepth(Data1)==2,Data1=Data1_1);
+ if(MeasureDepth(Data2)==2,Data2=Data2_1);
+ Data1=apply(Data1,LLcrd(#));
+ Data2=apply(Data2,LLcrd(#));
+ if(length(Data1)==length(Data2),
+ Tmp1=Reverse(Data2);
+ Eps0=10^(-6);
+ Tmp2=0;
+ forall(1..length(Data1),
+ Tmp2=Tmp2+abs(Data1_#-Data2_#);
+ );
+ Tmp3=0;
+ forall(1..length(Data1),
+ Tmp3=Tmp3+abs(Data1_#-Tmp1_#);
+ );
+ if(Tmp2<Eps0 % Tmp3<Eps0,
+ Out=[];
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ KL1=[];
+ KL2=[];
+ forall(1..(length(Data1)-1),Ni,
+ pA=Data1_Ni;
+ pB=Data1_(Ni+1);
+ forall(1..(length(Data2)-1),
+ pP=Data2_#; pQ=Data2_(#+1);
+ Tmp=Koutenseg(pA,pB,pP,pQ,[Eps,Eps2]);
+ if(Tmp!=["inf","inf"],
+ if(Tmp_3==0,
+ Tmp1=[Tmp_1,Tmp_2,Ni,#];
+ KL1=concat(KL1,[Tmp1]);
+ ,
+ Tmp2=[Tmp_1,Tmp_2,Ni,#];
+ KL2=concat(KL2,[Tmp2]);
+ );
+ );
+ );
+ );
+ Out=[];
+ if(length(KL1)>0,
+ Tmp=KL1_1;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Ni=Tmp_3;
+ Nj=Tmp_4;
+ Tmp=[pP,Ni+rT,Nj];
+ Out=[Tmp];
+ );
+ forall(2..length(KL1),Ni,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Tmp1=Tmp_3;
+ Tmp2=Tmp_4;
+ Tmp=[pP,Tmp1+rT,Tmp2];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ forall(1..length(KL2),Ni,
+ Tmp=KL2_Ni; // 15.11.21 Usui
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL2_Ni;
+ rT=Tmp_2;
+ rT=min([max([rT,0]),1]); // 15.11.21 Usui
+ Tmp=[pP,Tmp_3+rT,Tmp_4];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ );
+ Tmp1=Out; // 15.04.06 from
+ Out=[];
+ forall(Tmp1,Tmp2,
+ Tmp3=select(Out,|#_1-Tmp2_1|<Dif);
+ if(length(Tmp3)==0,
+ Out=append(Out,Tmp2);
+ );
+ ); // 15.04.06 upto
+ Out;
+);
+
+Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]);
+//help:Intersectcrvs("gr1","pa1");
+Intersectcrvs(Gr1,Gr2,options):=(
+ regional(tmp,tmp1,tmp2);
+ tmp1=IntersectcrvsPp(Gr1,Gr2,options);
+ apply(tmp1,#_1);
+);
+
+NearestptcrvPhy(point,PL):=(
+ regional(tmp,pP,plist);
+ pP=Pcrd(point);
+ if(isstring(PL),plist=parse(PL),plist=PL);
+ if(MeasureDepth(plist)==2,plist=plist_1);
+ plist=apply(plist,#); // 14.12.18
+ tmp=Nearestpt(pP,plist);
+ tmp=tmp_1;
+ [tmp_1/SCALEX,tmp_2/SCALEY];
+);
+
+Nearestptcrv(point,plist):=(
+//help:Nearestptcrv(A,"gr1");
+ regional(tmp);
+ tmp=Nearestpt(point,plist);
+ tmp_1;
+);
+
+Nearestpt(point,PL2):=(
+ regional(PL1,PL,Ans,Flg,Eps,pA,Pm,Im,Sm,Nn,Ni,
+ a1,b1,a2,b2,v1,v2,x1,x2,Tmp,rT,pP,sS,Lm,Pm,Sm,Flg);
+//help:Nearestpt("gr1","gr2");
+ if(isstring(point),PL1=parse(point),PL1=point);
+ if(MeasureDepth(PL1)==2,PL1=PL1_1);
+ if(!islist(PL1_1),
+ PL1=[PL1];
+ Flg=0;
+ ,
+ Flg=1;
+ );
+ if(isstring(PL2),PL=parse(PL2),PL=PL2);
+ if(MeasureDepth(PL)==2,PL=PL_1);
+ Eps=10^(-6);
+ Ans=[PL1_1,1,PL_1,1,|PL1_1-PL_1|];
+ forall(1..length(PL1),Nn, // 16.05.04
+ pA=PL1_Nn;
+ Pm=PL_1;
+ Im=1;
+ Sm=|Pm-pA|;
+ forall(1..(length(PL)-1),Ni,
+ a1=PL_Ni_1; a2=PL_Ni_2;
+ b1=PL_(Ni+1)_1; b2=PL_(Ni+1)_2;
+ v1=b1-a1; v2=b2-a2;
+ x1=pA_1; x2=pA_2;
+ Tmp=v2^2+v1^2;
+ if(abs(Tmp)>Eps,
+ rT=(-a2*v2-v1*a1+v1*x1+x2*v2)/Tmp;
+ if(rT<-Eps,
+ pP=[a1,a2];
+ ,
+ if(rT>1+Eps,
+ pP=[b1,b2];
+ ,
+ pP=[a1+rT*v1,a2+rT*v2];
+ );
+ );
+ sS=|pP-pA|;
+ if(sS<Sm-Eps,
+ Tmp=ParamonCurve(pP,Ni,PL);
+ Pm=pP; Lm=Tmp; Sm=sS;
+ );
+ );
+ if(Sm<Ans_5, // 16.05.03from
+ Ans=[pA,Nn,Pm,Lm,Sm];
+ );
+ ); // 16.05.03upto
+ );
+ if(Flg==0,
+ Ans=Ans_(3..5);
+ );
+ Ans;
+);
+
+Derivative(fun,var,value):=(
+//help:Derivative("x^3","x",2);
+ regional(str,tmp);
+ str="d(";
+ str=str+replace(fun,var,"#")+",";
+ str=str+value+")";
+ tmp=Pcrd([1,parse(str)]); // 14.11.08
+ tmp_2;
+);
+
+Integrate(pltdata,range):=Integrate(pltdata,range,[]);
+Intergrate(Arg1,Arg2,Arg3):=(
+ regional(pltdata,range,options,fnstr,vartr);
+ if(islist(Arg2),
+ pltdata=Arg1;
+ range=Arg2;
+ options=Arg3;
+ Integrate(pltdata,range,options);
+ ,
+ fnstr=Arg1;
+ vastr=Arg2;
+ range=Arg3;
+ Integrate(fnstr,vastr,range,[]);
+ );
+);
+
+Integrate(pltdata,range,options):=(
+//help:Integrate("gr1",[1,3]);
+//help:Integrate("gr1",[1,3],["Rule=t"]);
+ regional(tmp,tmp1,eqL,Rule,pdata,Sm,ptP,ptQ,list,va1,va2);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ Rule="o";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Rule=substring(#,tmp,tmp+1);
+ );
+ );
+ if(Rule=="o",
+ Sm= IntegrateO(pltdata,range);
+ ,
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ list=apply(list,LLcrd(#)); // 15.09.14
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ ptP=list_#; // 15.09.14
+ ptQ=list_(#+1);
+ Sm=Sm+(ptP_2+ptQ_2)*(ptQ_1-ptP_1)/2;
+ );
+ Sm;
+ );
+);
+
+Integrate(fnstr,vastr,range,options):=(
+//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]);
+ regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2);
+ Num=100;
+ Way="t";
+ forall(options,
+ if(indexof(#,"=")>0,
+ if(indexof(#,"N=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(indexof(#,"Num=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Way=substring(#,tmp,tmp+1);
+ );
+ );
+ );
+ Sm=0;
+ if(Way=="t",
+ forall(1..Num,
+ Lx=range_1+(range_2-range_1)*(#-1)/Num;
+ Rx=range_1+(range_2-range_1)*#/Num;
+ va1=parse(replace(fnstr,vastr,textformat(Lx,5)));
+ va2=parse(replace(fnstr,vastr,textformat(Rx,5)));
+ Sm=Sm+(va1+va2)*(Rx-Lx)/2;
+ );
+ ,
+ sx=range_1;
+ ex=range_2;
+ dx=(ex-sx)/Num;
+ xn=apply(0..Num,sx+#*dx);
+ yn=apply(xn,parse(replace(fnstr,vastr,textformat(#,5))));
+ dx=dx/2;
+ repeat(Num,s,
+ x0=xn_s;
+ x1=(xn_s+xn_(s+1))/2;
+ x2=xn_(s+1);
+ y0=yn_s;
+ y1=parse(replace(fnstr,vastr,textformat(x1,5)));
+ y2=yn_(s+1);
+ Sm=Sm+dx*(y0+4*y1+y2)/3;
+ );
+ );
+ Sm;
+);
+
+IntegrateO(p0org,p1org,p2org,p3org):=(
+ regional(p0,p1,p2,p3,pQ,pR,cc,p01,p02,
+ p11,p12,p21,p22,p31,p32, tmp);
+ if(ispoint(p0org),p0=p0org.xy,p0=p0org); // 16.03.10
+ if(ispoint(p1org),p1=p1org.xy,p1=p1org); // 16.03.16
+ if(ispoint(p2org),p2=p2org.xy,p2=p2org);
+ if(ispoint(p3org),p3=p3org.xy,p3=p3org);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp=tmp/20;
+);
+IntegrateO(pltdata,rangeorg):=(
+//help:IntegrateO("gr1",[0,2]);
+ regional(tmp,tmp1,tmp2,pdata,va1,va2,list,Bzk,Bzc,range,pmflg,
+ Sm,p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ range=rangeorg;
+ pmflg=1;
+ if(range_2<range_1,
+ range=reverse(range);
+ pmflg=-1;
+ );
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ if((length(list)>0) & (list_1_1>list_(length(list))_2),
+ list=reverse(list);
+// pmflg=pmflg*(-1);
+ );
+ list=apply(list,LLcrd(#));
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ p1=list_#;
+ p2=list_(#+1);
+ if(#==1 % #==length(list)-1,
+ tmp1=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ Sm=Sm+tmp1;
+ ,
+ p0=list_(#-1);
+ p3=list_(#+2);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp1=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp1=tmp1/20;
+ Sm=Sm+tmp1;
+ );
+ );
+ if(pmflg==-1,
+ Sm=-Sm;
+ );
+ Sm;
+);
+
+Findarea(pdstr):=(
+//help:Findarea("sgABCA");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findarea(pdstr):=( // 15.11.27
+//help:Findarea("cr1");
+ regional(pd,p0,p1,p2,p3,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=pd_#;
+ p2=pd_(#+1);
+ if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1));
+ if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2));
+ tmp=IntegrateO(p0,p1,p2,p3);
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findlength(pdstr):=(
+//help:Findlength("gr1");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=|p2-p1|;
+ s=s+tmp;
+ );
+ s;
+);
+
+Inversefun(fnstr,rngstr,value):=(
+ regional(tmp,varstr,range,x1,x2,x3,va1,va2);
+ tmp=indexof(rngstr,"=");
+ varstr=substring(rngstr,0,tmp-1);
+ range=parse(substring(rngstr,tmp,length(rngstr)));
+ x1=range_1; x2=range_2;
+ repeat(15,
+ x3=(x1+x2)/2;
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)));
+ va2=parse(replace(fnstr,varstr,textformat(x3,5)));
+ if((va1>value & va2>value) % (va1<value & va2<value),
+ x1=x3;
+ ,
+ x2=x3;
+ );
+ );
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)))-value;
+ va2=parse(replace(fnstr,varstr,textformat(x2,5)))-value;
+ if(x1==range_1 % x2==range_2,
+ println("not found in ("+textformat(range_1,5)
+ +","+textformat(range_2,5)+")");
+ );
+ if(abs(va1)<=abs(va2),x1,x2);
+);
+
+Lcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=[pt.x/SCALEX,pt.y/SCALEY];
+ ,
+ tmp=pt;
+ );
+ tmp;
+);
+
+Pcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=re(pt.xy); // 15.07.24
+ ,
+ tmp=[pt_1*SCALEX,pt_2*SCALEY];
+ );
+ tmp;
+);
+
+LLcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=pt.xy
+ ,
+ tmp=pt;
+ );
+ tmp=[tmp_1/SCALEX,tmp_2/SCALEY];
+ tmp;
+);
+
+Doscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Unscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Definecolor(name,data):=(
+//help:Definecolor("mycolor",[1,1,1,0]);
+ regional(type,tmp);
+ if(length(data)>3,type="cmyk",type="rgb");
+ tmp=text(data);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="\definecolor{"+name+"}{"+type+"}{"+tmp+"}";
+ Texcom(tmp);
+);
+
+Setcolor(Par):=(
+//help:Setcolor([1,0,0,1]);
+//help:Setcolor([1,1,0]);
+ if(islist(Par),
+ if(length(Par)==3,
+ Setcolorrgb(Par); // 2015.04.28
+// KCOLOR=Par;
+ );
+ if(length(Par)==4,
+ Setcolor(Par,[]);
+ );
+ ,
+ Setcolor(Par,[]);
+ );
+);
+
+Setcolor(colorname,options):=(
+//help:Setcolor("greenyellow",0.3);
+ regional(tmp);
+ if(isstring(colorname),
+ tmp="Setcolor("+Dq+colorname+Dq;
+ if(length(options)>0,
+ tmp=tmp+","+text(options_1);
+ );
+ Com2nd(tmp+")");
+ );
+ if(islist(colorname),
+ tmp=text(colorname);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[cmyk]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+ );
+);
+
+Setcolorrgb(colorlist):=(
+// help:Setcolorrgb([0.5,0.3,0.4]);
+ regional(tmp);
+ tmp=text(colorlist);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[rgb]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+);
+
+ColorRgb2Cmyk(clr):=(
+// help:ColorRgb([0.2,0.5,0.1]);
+ regional(clrnew,tmp,black);
+ tmp=apply(clr,1-#);
+ black=min(tmp);
+ tmp=apply(clr,(1-#-black)/(1-black));
+ clrnew=append(tmp,black);
+ clrnew;
+);
+
+ColorCmyk2Rgb(clr):=(
+// help:ColorRgb([0.2,0.5,0.1,0.2]);
+ regional(clrnew,tmp,black);
+ black=clr_4;
+ tmp=apply(clr,1-min(1,#*(1-black)+black));
+ clrnew=tmp_(1..3);
+ clrnew;
+);
+
+Colorrgbhsv(rgb):=(
+ regional(varR,varG,varB,varMin,varMax,delMax,hh,ss,vv,delR,delG,delB);
+ varR = rgb_1;
+ varG = rgb_2;
+ varB = rgb_3;
+ varMin = min( [varR, varG, varB] );
+ varMax = max( [varR, varG, varB] );
+ delMax = varMax - varMin ;
+ vv = varMax;
+ if ( delMax == 0 ,
+ hh = 0 ;
+ ss = 0 ;
+ ,
+ ss = delMax / varMax;
+ delR = ( ( ( varMax - varR ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delG = ( ( ( varMax - varG ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delB = ( ( ( varMax - varB ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ if( varR == varMax ,
+ hh = delB - delG;
+ ,
+ if ( varG == varMax,
+ hh = ( 1 / 3 ) + delR - delB;
+ ,
+ if ( varB == varMax ,
+ hh = ( 2 / 3 ) + delG - delR;
+ );
+ );
+ );
+ if ( hh < 0 ,hh = hh+1);
+ if ( hh > 1 ,hh = hh-1);
+ );
+ [hh*360,ss,vv];
+);
+
+Colorhsvrgb(sL):=(
+ regional(tmp,tmp1,tmp2,tmp3,hi,ff,dL);
+ tmp=[sL_1/60,sL_2,sL_3];
+ hi=mod(floor(tmp_1),6);
+ ff=tmp_1-floor(tmp_1);
+ tmp2=tmp_3*[1-tmp_2,1-tmp_2*ff,1-tmp_2*(1-ff)];
+ tmp2=append(tmp2,tmp_3);
+ if(hi==0,dL=tmp2_[4,3,1]);
+ if(hi==1,dL=tmp2_[2,4,1]);
+ if(hi==2,dL=tmp2_[1,4,3]);
+ if(hi==3,dL=tmp2_[1,2,4]);
+ if(hi==4,dL=tmp2_[3,1,4]);
+ if(hi==5,dL=tmp2_[4,1,2]);
+ dL;
+);
+
+Colorrgbhsl(rgb):=(
+ regional(rr,gg,bb,mn,mx,delta,deltaR,deltaG,deltaB,hh,ss,ll);
+ rr = rgb_1 ;
+ gg = rgb_2 ;
+ bb = rgb_3 ;
+ mn = min([rr, gg, bb]);
+ mx = max([rr, gg, bb]);
+ delta = mx - mn;
+ ll = (mx + mn) / 2;
+ if (delta == 0,
+ hh=0;
+ ss=0;
+ ,
+ if (ll < 0.5,
+ ss = delta/ (mx + mn);
+ ,
+ ss = delta / (2 - mx - mn);
+ );
+ deltaR = (((mx - rr) / 6) + (delta / 2)) / delta;
+ deltaG = (((mx - gg) / 6) + (delta / 2)) / delta;
+ deltaB = (((mx - bb) / 6) + (delta / 2)) / delta;
+ if (rr == mx,
+ hh = deltaB - deltaG;
+ ,
+ if (gg == mx,
+ hh = (1 / 3) + deltaR - deltaB;
+ ,
+ if (bb == mx,
+ hh = (2 / 3) + deltaG - deltaR;
+ );
+ );
+ );
+ if ( hh < 0, hh = hh+1);
+ if ( hh > 1, hh = hh-1);
+ );
+ [hh*360,ss,ll];
+);
+
+Colorhslrgb(hsl):=(
+ regional(hh,ss,ll,rr,gg,bb,var1,var2);
+ hh=hsl_1/360;
+ ss=hsl_2;
+ ll=hsl_3;
+ if ( ss == 0.0,
+ rr = ll ;
+ gg = ll ;
+ bb = ll ;
+ ,
+ if ( ll < 0.5 ,
+ var2 = ll * ( 1.0 + ss );
+ ,
+ var2 = ( ll + ss ) - ( ss * ll );
+ );
+ var1 = 2.0 * ll - var2;
+ rr = hue2rgb( var1, var2, hh + ( 1.0 / 3.0 ) );
+ gg = hue2rgb( var1, var2, hh );
+ bb = hue2rgb( var1, var2, hh - ( 1.0 / 3.0 ) );
+ );
+ [rr,gg,bb];
+);
+
+hue2rgb(vv1,vv2,vh):=(
+ regional(out);
+ if ( vh < 0.0 ,vh =vh+1);
+ if ( vh > 1.0 ,vh =vh-1);
+ if ( 6.0*vh < 1.0 ,
+ out = vv1 + ( vv2 - vv1 ) * 6.0 * vh ;
+ ,
+ if( 2.0*vh < 1.0 ,
+ out = vv2;
+ ,
+ if ( 3.0*vh < 2.0 ,
+ out = vv1 + ( vv2 - vv1 ) * ( ( 2.0 / 3.0 ) - vh ) * 6.0 ;
+ ,
+ out= vv1 ;
+ );
+ );
+ );
+ out;
+);
+
+Colorrgbhwb(sL):=(
+ regional(dl1,dl2,dl3);
+ dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1;
+ dl2 = min(sL);
+ dl3 = 1 - max(sL);
+ dL= [dl1, dl2 , dl3 ];
+);
+
+Colorhwbrgb(sLorg):=(
+ regional(sL,tmp,tmp1,tmp2,tmp3,ratio,ff,ii,vv,nn,dL,flg);
+ sL=sLorg;
+ sL=[sL_1/360,sL_2,sL_3];
+ ratio = sL_2 + sL_3;
+ // sL_2 + sL_3 cant be > 1
+ if (ratio > 1.,
+ sL_2 =sL_2 / ratio;
+ sL_3 = sL_3 / ratio;
+ );
+ ii = floor(6 * sL_1);
+ vv = 1 - sL_3;
+ ff = 6 * sL_1 - ii;
+ if(mod(ii,2)==1,ff = 1 - ff);
+ nn = sL_2 + ff * (vv - sL_2); // linear interpolation
+ tmp=[[vv,nn,sL_2],[nn,vv,sL_2],[sL_2,vv,nn],
+ [sL_2,nn,vv],[nn,sL_2,vv],[vv,sL_2,nn],[vv,nn,sL_2]];
+ flg=0;
+ forall(0..6,
+ if(flg==0 & ii == # ,
+ dL=tmp_(#+1);
+ flg=1;
+ );
+ );
+ dL;
+);
+
+Colorhslhsv(sL):=(
+ regional(dl1,dl2,dl3,dL);
+ dl1=sL_1;
+ if(sL_3 == 0,
+ // no need to do calc on black
+ // also avoids divide by 0 error
+ dL= [0, 0, 0];
+ ,
+ sL_3 = sL_3 * 2;
+ if(sL_3 <= 1,sL_2 = sL_2 * sL_3,sL_2 = sL_2 * (2 - sL_3));
+ dl3 = (sL_3 + sL_2) / 2;
+ dl2 = (2 * sL_2) / (sL_3 + sL_2);
+ dL = [dl1, dl2, dl3];
+ );
+ dL;
+);
+
+Colorcode(src,dest,sL):=(
+//help:Colorcode("rgb","cmyk",[1,0.5,0]);
+ regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg);
+ regional(dl1,dl2,dl3);
+ if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL));
+ if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL));
+ if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL));
+ if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL));
+ if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL));
+ if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL));
+ if(src=="hsl" & dest=="hsv", dL=Colorhslhsv(sL));
+ if(src=="hsv" & dest=="hsl",
+ dl1 = sL_1;
+ dl3 = (2 - sL_2) * sL_3;
+ dl2 = sL_2 * sL_3;
+ if(dl3 <= 1,dl2 = dl2/dl3,dl2=dl2/(2 - dl3));
+ dl3 =d l3/ 2;
+ dL = [dl1, dl2 , dl3 ];
+ );
+
+ if(src=="rgb" & dest=="cmyk",
+ tmp=apply(sL,1-#);
+ black=min(tmp);
+ tmp=apply(sL,(1-#-black)/(1-black));
+ dL=append(tmp,black);
+ );
+ if(src=="cmyk" & dest=="rgb",
+ black=sL_4;
+ tmp=apply(sL,1-min(1,#*(1-black)+black));
+ dL=tmp_(1..3);
+ );
+ if(src=="hsv" & dest=="cmyk",
+ tmp=Colorcode("hsv","rgb",sL);
+ dL=Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsv",
+ tmp=Colorcode("cmyk","rgb",sL);
+ dL=Colorcode("rgb","hsv",tmp);
+ );
+
+ if(src=="hsv" & dest=="hwb",
+ tmp = Colorcode("hsv","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsv",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsv",tmp);
+ );
+ if(src=="hsl" & dest=="hwb",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsl",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="hsl" & dest=="cmyk",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="hwb" & dest=="cmyk",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsl",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="cmyk" & dest=="hwb",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hsb" & dest=="rgb",dL=Colorcode("hsv","rgb",sL));
+ if(src=="rgb" & dest=="hsb",dL=Colorcode("rgb","hsv",sL));
+
+ if(src=="hsb" & dest=="hsl",dL=Colorcode("hsv","hsl",sL));
+ if(src=="hsl" & dest=="hsb",dL=Colorcode("hsl","hsv",sL));
+
+ if(src=="hsb" & dest=="hwb",dL=Colorcode("hsv","hwb",sL));
+ if(src=="hwb" & dest=="hsb",dL=Colorcode("hwb","hsv",sL));
+
+ if(src=="hsb" & dest=="cmyk",dL=Colorcode("hsv","cmyk",sL));
+ if(src=="cmyk" & dest=="hsb",dL=Colorcode("cmyk","hsv",sL));
+
+ dL;
+);
+
+Addcolor(cmdorg,list):=(
+//help:Addcolor("Plotdata('1','x^2','x',[])",[1,1,0]);
+ regional(rgb,cmyk,cmd,tmp,tmp1,tmp2,tmp3,tmp4);
+ cmd=replace(cmdorg,"'",Dq);
+ if(length(list)==3,
+ rgb=list;
+ cmyk=Colorcode("rgb","cmyk",list);
+ ,
+ cmyk=list;
+ rgb=Colorcode("cmyk","rgb",list);
+ );
+ tmp1="color->"+text(rgb);
+ tmp2="Setcolor("+text(cmyk)+");";
+ tmp3=substring(cmd,0,length(cmd)-2);
+ tmp=substring(tmp3,length(tmp3)-1,length(tmp3));
+ if(tmp!="[",
+ tmp3=tmp3+",";
+ );
+ tmp3=tmp3+Dq+tmp1+Dq+"])";
+ parse(tmp2);
+ parse(tmp3);
+ Setcolor("black");
+);
+
+Colorinfile(filename,clrf,clrt):=(
+ regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body);
+ if(length(clrf_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrf,text(#));
+ cstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ if(length(clrt_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrt,text(#));
+ chstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ tmp1=load(filename);
+ tmp=tokenize(tmp1,"{\unitlength");
+ head=tokenize(tmp_1,"%%%");
+ head=head_(2..length(head));
+ head=apply(head,"%%%"+#);
+ tmp2=tmp_2;
+ forall(1..5,
+ tmp2=replace(tmp2,cstrL_#,chstrL_#);
+ );
+ body=tokenize(tmp2,"%");
+ body_1="{\unitlength"+body_1;
+ body=apply(body,#+"%");
+ body=body_(1..(length(body)-1));
+ tmp=replace(filename,".tex","new.tex");
+ SCEOUT=openfile(tmp);
+ forall(head,
+ println(SCEOUT,#);
+ );
+ forall(1..length(body),
+ tmp=body_#;
+ if(#<length(body),
+ println(SCEOUT,tmp);
+ ,
+ print(SCEOUT,tmp)
+ );
+ );
+ closefile(SCEOUT);
+);
+
+GetLinestyle(str,name):=(
+ regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg);
+ Ltype=-1;
+ Dop="";
+ tmp1=indexof(str,",");
+ if(tmp1>0,
+ Dop=","+substring(str,tmp1,length(str));
+ );
+ noflg=parse(substring(str,0,1));
+ if(substring(name,0,3)=="sub",subflg=1,subflg=0); // 16.02.29
+ tmp1=substring(str,1,3);
+ if(tmp1=="dr" % tmp1=="Dr",
+ Ltype=0;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Drwline(name+Dop);
+ );
+ );
+ if(tmp1=="da" % tmp1=="Da",
+ Ltype=1;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dashline(name+Dop);
+ );
+ );
+ if(tmp1=="id" % tmp1=="Id",
+ Ltype=2; // 15.11.09
+ if(noflg==0 & subflg==0, // 16.02.29
+ Invdashline(name+Dop);
+ );
+ );
+ if(tmp1=="do" % tmp1=="Do",
+ Ltype=3;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dottedline(name+Dop);
+ );
+ );
+ if(tmp1=="dp" % tmp1=="Dp",
+ Ltype=0;
+ tmp1=parse(name);
+ tmp2="";
+ forall(tmp1,
+ tmp2=tmp2+textformat(#_1,5)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ if(noflg==0,
+ Drwpt(tmp2+Dop);
+ );
+ );
+ if(tmp1=="no" % tmp1=="No",
+ Ltype=10;
+ );
+ Ltype;
+);
+
+Chunderscore(str):=(
+ regional(flg,tmp,tmp1,tmp2,tmp3);
+ if(indexof(str,"]")>0,
+ tmp1=replace(str,"]",",]");
+ ,
+ tmp1=str+",";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ if(indexof(str,"]")>0,
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,"[","list(");
+ ,
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ );
+ tmp1;
+);
+
+//AddGraph(pltdata):=AddGraph("-"+pltdata,pltdata,[]);
+AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]);
+// if(isstring(Arg2),
+// AddGraph(Arg1,Arg2,[]);
+// ,
+// if(MeasureDepth(Arg2)>0,
+// Addgraph(Arg1,Arg2,[]);
+// ,
+// Addgraph("-"+Arg1,Arg1,Arg2);
+// );
+// );
+//);
+AddGraph(nm,pltdata,options):=(
+//help:AddGraph("1","imp1"); // 16.04.04
+//help:Addgraph("1",["[pt1]","gr1"],["nodisp"]);
+ regional(name,Ltype,Noflg,opcindy,pdata,fname,flg,
+ tmp,tmp1,tmp2,tmp3);
+ if(substring(nm,0,1)=="-",
+ name=substring(nm,1,length(nm));
+ ,
+ name="ad"+nm;
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_9;
+ if(isstring(pltdata),
+ pdata=parse(pltdata)
+ ,
+ if(!islist(pltdata),pdata=[pltdata],pdata=pltdata);
+ pdata=apply(pdata,parse(#));
+ ); // 15.01.22
+ pdata=Flattenlist(pdata);
+ tmp1=[];
+ forall(pdata,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ pdata=tmp1;
+ if(Noflg<3,
+ println("generate addgraph "+name);
+ tmp=name+"="+textformat(pdata,5);
+ parse(tmp);
+ if(isstring(pltdata), // 16.04.04 from
+ if(indexof(pltdata,"]")>0,
+ tmp1="list(Listplot("+substring(pltdata,1,length(pltdata));
+ tmp1=replace(tmp1,"]",",]");
+ ,
+ tmp1="Listplot("+substring(pltdata,0,length(pltdata))+",]";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,",","),Listplot(");
+ if(indexof(pltdata,"[")>0,
+ tmp1=tmp1+")";
+ );
+ GLIST=append(GLIST,name+"="+tmp1);
+ ,
+ if(MeasureDepth(pdata)==1,
+ tmp1=name+"=Listplot("+textformat(pdata,5)+")";
+ ,
+ tmp1="list(";
+ forall(1..length(pdata),
+ tmp=name+"p"+textformat(#,5)+"=";
+ if(length(pdata_#)>1, // 15.01.22
+ tmp=tmp+"Listplot("+textformat(pdata_#,5)+")";
+ ,
+ tmp=tmp+"Pointdata("+textformat(pdata_#_1,5)+")";
+ );
+ GLIST=append(GLIST,tmp);
+ tmp1=tmp1+name+"p"+textformat(#,5)+",";
+ );
+ tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ GLIST=append(GLIST,tmp1);
+ );
+ ); // 16.04.04 upto
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Joincrvs(nm,plotstrL):=Joincrvs(nm,plotstrL,[]);
+Joincrvs(nm,plotstrL,options):=(
+//help:Joincrvs("1",["sgAB","sgDCB"]);
+ regional(plotlist,PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
+ opcindy,tmp,tmp1,tmp2,str,name,Ltype,Noflg);
+ name="join"+nm;
+ plotlist=[];
+ forall(plotstrL,str,
+ if(isstring(str),
+ tmp=parse(str);
+ tmp=apply(tmp,LLcrd(#));
+ ,
+ tmp=str;
+ );
+ plotlist=append(plotlist,tmp);
+ );
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Eps=tmp1_1);
+ QdL=[];
+ forall(plotlist,Qd,
+ if(ispoint(Qd_1) % !islist(Qd_1_1),
+ QdL=concat(QdL,[Qd]);
+ ,
+ forall(Qd,
+ QdL=concat(QdL,[#]);
+ );
+ );
+ );
+ Flg=0;
+ if(length(QdL)==0,
+ PtL=[];
+ Flg=1;
+ );
+ if(Flg==0,
+ PtL=QdL_1;
+ forall(2..length(QdL),Ni,
+ Qd=QdL_Ni;
+ if(Numptcrv(Qd)>1,
+ pP=Ptend(PtL);
+ pS=Ptstart(PtL);
+ pQ=Ptstart(Qd);
+ pR=Ptend(Qd);
+ rMN=min([|pP-pQ|,|pP-pR|,|pS-pQ|,|pS-pR|]);
+ if(rMN==|pP-pR|,
+ Qd=reverse(Qd);
+ ,
+ if(rMN==|pS-pQ|,
+ PtL=reverse(PtL);
+ ,
+ if(rMN==|pS-pR|,
+ PtL=reverse(PtL);
+ Qd=reverse(Qd);
+ );
+ );
+ );
+ );
+ if(rMN>Eps,
+ PtL=concat(PtL,Qd);
+ ,
+ PtL=concat(PtL,Qd_(2..length(Qd)));
+ );
+ );
+ );
+ if(Noflg<3,
+ println("generate joincurve "+name);
+ tmp1=apply(PtL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1="";
+ forall(plotstrL,
+ tmp1=tmp1+#+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ GLIST=append(GLIST,name+"=Joincrvs("+tmp1+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PtL;
+);
+
+Partcrv(nm,pA,pB,PkLstr):=Partcrv(nm,pA,pB,PkLstr,[]);
+Partcrv(nm,pA,pB,PkLstr,options):=(
+//help:Partcrv("1",A,B,"sgABC");
+//help:Partcrv("1",1.3,2.5,"sgABC");
+ regional(PkL,Ans,Eps,Npt,Out1,Out2,tmp,tmp1,Flg,nS,nE,PPL,pP,
+ opcindy,Ta,Tb,name,Ltype,Noflg,DepthFlg);
+ name="part"+nm;
+ if(isstring(PkLstr),PkL=parse(PkLstr),PkL=PkLstr);
+ DepthFlg=0;
+ if(MeasureDepth(PkL)==2,
+ PkL=PkL_1;
+ DepthFlg=1;
+ );
+ PkL=apply(PkL,LLcrd(#));
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ Flg=0;
+ if(isreal(pA),
+ if(pA>pB+Eps,
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv("",pA,Npt,PkLstr,["nodata"]);
+ Out2=Partcrv("",1,pB,PkLstr,["nodata"]);
+ tmp=Ptstart(PkL)-Ptend(PkL);
+ if(|tmp|<Eps,
+ Ans=Joincrvs("",[Out1,Out2],["nodata"]);
+ ,
+ Ans=[apply(Out1,Pcrd(#)),apply(Out2,Pcrd(#))];
+ );
+ Flg=1;
+ );
+ if(Flg==0,
+ nS=ceil(pA);
+ nE=floor(pB);
+ PPL=[];
+ if(pA<nS-Eps,
+ pP=(nS-pA)*PkL_(nS-1)+(1-nS+pA)*PkL_nS;
+ PPL=[pP];
+ );
+ PPL=concat(PPL,PkL_(nS..nE));
+ if(pB>nE+Eps,
+ pP=(1-pB+nE)*PkL_nE+(pB-nE)*PkL_(nE+1);
+ PPL=concat(PPL,[pP]);
+ );
+ Ans=PPL;
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp=Nearestpt(LLcrd(Pcrd(pA)),PkL);
+ Ta=tmp_2;
+ tmp=Nearestpt(LLcrd(Pcrd(pB)),PkL); // 15.09.12
+ Tb=tmp_2;
+ Ans=Partcrv("",Ta,Tb,PkL,["nodata"] );
+ Ans=apply(Ans,Pcrd(#));
+ );
+ if(Noflg<3,
+ println("generate partcrv "+name);
+ tmp1=apply(Ans,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST, // 16.04.03
+ if(DepthFlg==0,
+ tmp=PkLstr;
+ ,
+ tmp=PkLstr+"(1)";
+ );
+ tmp1=name+"=Partcrv("+textformat(Lcrd(pA),5)
+ +","+textformat(Lcrd(pB),5)+","+tmp+")"; // 16.04.03
+ GLIST=append(GLIST,tmp1);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Ans;
+);
+
+Opcrvs(num,Fig):=Opcrvs(num,Fig,["nodisp"]);
+Opcrvs(num,Fig,options):=(
+ //help:Subgraph(2,"grfs");
+ regional(name,tmp,tmp1);
+ name="-"+Fig+text(num);
+ tmp=Fig+"_"+text(num);
+ tmp1=parse(tmp);
+ Listplot(name,tmp1,options);
+);
+
+
+Pointdata(nm,list):=Pointdata(nm,list,[]);
+Pointdata(nm,list,options):=(
+//help:Pointdata("1",[2,4],["Size=5"]);
+//help:Pointdata("2",[[2,3],[4,1]]);
+ regional(name,nameL,ptlist,opstr,opcindy,
+ eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="pt"+nm;
+ nameL=name+"L";
+ println("generate pointdata "+name);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ size="";
+ eqL=tmp_5;
+ if(length(eqL)>0,
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="s" % tmp=="S",
+ tmp=indexof(#,"=");
+ size=substring(#,tmp,length(#));
+ );
+ );
+ );
+ tmp=MeasureDepth(list);
+ if(tmp>0, // 2015.02.21
+ if(tmp==1,ptlist=list,ptlist=list_1);
+ tmp=apply(ptlist,[textformat(Pcrd(#),5)]);
+ tmp1=text(tmp);
+ tmp2=substring(tmp1,1,length(tmp1)-1);
+ tmp3=tmp1;
+ ,
+ ptlist=list;
+ tmp1=textformat(Pcrd(ptlist),5);
+ tmp2=tmp1;
+ tmp3="["+tmp1+"]";
+ );
+ tmp=name+"="+tmp1;
+ parse(tmp);
+ tmp=nameL+"="+tmp3;
+ parse(tmp);
+ if(Noflg<3,
+ GLIST=append(GLIST,name+"=Pointdata("+tmp2+")");
+ );
+ if(Noflg<2,
+ tmp=[nameL,0,opcindy];
+ GCLIST=append(GCLIST,tmp);
+ if(Noflg==0,
+ if(length(size)>0,
+ Com2nd("Setpt("+size+")");
+ );
+ thick=PenThick/PenThickInit; // 16.04.09 from
+ if(length(size)>0,tmp1=parse(size),tmp1=1);
+ tmp1=max(tmp1,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ Com2nd("Drwpt(list("+name+")"+opstr+")");
+ Setpen(thick); // 16.04.09
+ if(length(size)>0,
+ Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")");
+ );
+ );
+ );
+ ptlist;
+);
+
+Listplot(nm,list,options):=(
+//help:Listplot([A,B]);
+// help:Listplot(["A","B"]);
+//help:Listplot("1",[[2,1],[3,3]]);
+//help:Listplot(options2=["Msg=yes"]);
+ regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg);
+ if(substring(nm,0,1)=="-", // 16.01.27 from
+ name=substring(nm,1,length(nm));
+ ,
+ name="sg"+nm;
+ ); // upto
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ Msg=1; // 15.09.17
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+1); // 16.06.28
+ if(Toupper(tmp1)=="N", // 16.06.28
+ Msg=0;
+ );
+ );
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Listplot "+name);
+ );
+ if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24
+ ptlist=apply(tmp,Pcrd(#));
+ tmp=name+"="+textformat(ptlist,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp1=apply(list,Lcrd(#));
+ tmp1;
+);
+Listplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Listplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Listplot(name,list,options);
+ );
+);
+Listplot(list):=Listplot(list,[]);
+
+Lineplot(nm,list,options):=(
+//help:Lineplot([A,B]);
+//help:Lineplot("1",[[2,1],[3,3]]);
+ regional(name,Out,tmp,tmp1,opstr,opcindy,Mag,Semi,
+ Vec,pA,pB,Ltype,Noflg);
+ name="ln"+nm;
+ Mag=100;
+ Semi="";
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Mag=tmp1_1);
+ tmp1=tmp_7;
+ if(length(tmp1)>0,Semi=tmp1_1);
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ Vec= Mag/dist(pA,pB)*(pB-pA);
+ if(length(Semi)==0,
+ Out=[pA-Vec,pA+Vec];
+ ,
+ if(Semi=="+",
+ Out=[pA,pA+Vec];
+ ,
+ Out=[pA-Vec,pA];
+ );
+ );
+ if(Noflg<3,
+ println("generate Lineplot "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Lineplot("+textformat(list,5)+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Lineplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Lineplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Lineplot(name,list,options);
+ );
+);
+Lineplot(list):=Lineplot(list,[]);
+
+Plotdata(name1,func,variable):=Plotdata(name1,func,variable,[]);
+Plotdata(name1,func,variable,options):=(
+//help:Plotdata("1","sin(x)","x",["Num=100"]);
+//help:Plotdata("2","x^2","x=[-1,1]");
+//help:Plotdata("3","Fout(x)","x",["out"]);
+ regional(Fn,Va,tmp,tmp1,tmp2,eqL,name,Vname,x1,x2,dx,
+ PdL,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gr"+name1;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ Eps=10^(-3);
+ tmp=replace(func,LFmark,"");
+ tmp=tokenize(variable,"=");
+ Vname=tmp_1;
+ if(length(tmp)>1,
+ tmp=tmp_2;
+ tmp=parse(tmp);
+ x1=tmp_1;
+ x2=tmp_2;
+ ,
+ x1=XMIN;
+ x2=XMAX;
+ );
+ // dx=(x2-x2)/Num;
+ Ec=append(sort(Ec),10000);
+ Fun=Assign(func,Vname, "xx");
+ Exfun=Assign(Exfun,Vname, "xx");
+ PdL=[];
+ Ke=1;
+ forall(0..Num,
+ xx=x1+#*(x2-x1)/Num; // differs from Scilab ( / Num-1)
+ if(length(Exfun)>0,
+ tmp=parse(Exfun);
+ if(abs(tmp)<Eps,
+ if(length(Pdt)>0,
+ PdL=concat(PdL,["inf"]);
+ );
+ );
+ ,
+ Pa=[];
+ if(xx-Ec_Ke<-Eps,
+ Pa=[xx,parse(Fun)];
+ );
+ if(abs(xx-Ec_Ke)<=Eps,
+ if(length(PdL)>0,
+ if(PdL_(length(PdL))_1!="inf",
+ Pa=["inf"];
+ );
+ );
+ );
+ if(xx-Ec_Ke>Eps,
+ Pa=[xx,parse(Fun)];
+ Ke=Ke+1;
+ );
+ if(length(Pa)>0,
+ if(Pa_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(length(PdL)==0,
+ PdL=[Pa];
+ ,
+ tmp=PdL_(length(PdL));
+ if(tmp_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(dist(tmp,Pa)<Dc,
+ PdL=concat(PdL,[Pa]);
+ ,
+ PdL=concat(PdL,[["inf"],Pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(PdL),PdL_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[PdL_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(PdL),
+ tmp1=concat(tmp1,[PdL_(tmp..length(PdL))]);
+ );
+ PdL=tmp1;
+ if(length(PdL)==1,
+ PdL=PdL_1;
+ );
+ if(Noflg<3,
+ println("generate Plotdata "+name);
+ if(MeasureDepth(PdL)==1,
+ tmp1=apply(PdL,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(func,LFmark,"");
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Plotdata "+name);
+ tmp=name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Plotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Paramplot(name1,funstr,variable):=Paramplot(name1,funstr,variable,[]);
+Paramplot(name1,funstr,variable,options):=(
+//help:Paramplot("1","[2*cos(t),sin(t)]","t=[0,2*pi]");
+ regional(name,Out,tmp,tmp1,tmp2,vname,func,str,Rng,Num,
+ Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gp"+name1;
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ tmp=indexof(variable,"=");
+ vname=substring(variable,0,tmp-1);
+ str=substring(variable,tmp,length(variable));
+ Rng=parse(str);
+ t1=Rng_1; t2=Rng_2;
+ dt=(t2-t1)/Num;// differs from Scilab ( / Num-1)
+ func=Assign(funstr,vname,"tt");
+ Out=[];
+ Ec=append(sort(Ec),10000);
+ ke=1;
+ forall(0..Num,
+ pt=[];
+ tt=Rng_1+#*dt;
+ if(tt-Ec_ke<-Eps,
+ pa=parse(func);
+ );
+ if(abs(tt-Ec_ke)<=Eps,
+ if(length(Out)>0,
+ if(Out_(length(Out))_1!="inf",
+ pa=["inf"];
+ );
+ );
+ );
+ if(tt-Ec_ke>Eps,
+ pa=parse(func);
+ ke=ke+1;
+ );
+ if(length(pa)>0,
+ if(pa_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(length(Out)==0,
+ Out=[pa];
+ ,
+ tmp=Out_(length(Out));
+ if(tmp_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(|tmp-pa|<Dc,
+ Out=append(Out,pa);
+ ,
+ Out=concat(Out,[["inf"],pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(Out),Out_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[Out_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(Out),
+ tmp1=concat(tmp1,[Out_(tmp..length(Out))]);
+ );
+ Out=tmp1;
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ println("generate Paramplot "+name);
+ if(MeasureDepth(Out)==1,
+ tmp1=apply(Out,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(funstr,LFmark,""); // 15.11.13
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Paramplot "+name);
+ tmp=name+"=Paramplot('"+funstr+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Paramplotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Paramplot('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Circledata(cenrad):=Circledata(cenrad,[]);
+Circledata(para1,para2):=(
+//help:Circledata([A,B],["Rng=[0,pi/2]"]);
+//help:Circledata([A,B,C]);
+ regional(name,cenrad,options,str,n);
+ if(isstring(para1),
+ name=para1;
+ cenrad=para2;
+ options=[];
+ ,
+ cenrad=para1;
+ options=para2;
+ name="";// 16.10.07from
+ forall(cenrad,
+ name=name+#.name;
+ );// 16.10.07upto
+ );
+ Circledata(name,cenrad,options);
+);
+Circledata(nm,cenrad,options):=(
+ regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,
+ tmp,tmp1,tmp1,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps);
+ name="cr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Rg=[0,2*pi];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="R",
+ Rg=parse(tmp1);
+ );
+ );
+ if(length(cenrad)==2,
+ Ctr=Lcrd(cenrad_1);
+ Ptcir=Lcrd(cenrad_2);
+ ra=dist(Ctr,Ptcir);
+ ,
+ Eps=10^(-1);
+ pA=Lcrd(cenrad_1);
+ pB=Lcrd(cenrad_2);
+ pC=Lcrd(cenrad_3);
+ tmp=pB-pA;
+ tmp1=(tmp_2,-tmp_1);
+ tmp=pC-pB;
+ tmp2=(tmp_2,-tmp_1);
+ d1=det([tmp1,tmp2]);
+ d2=det([pC-pA,tmp2]);
+ if(abs(d1)<Eps & abs(d2)>10*Eps,
+ println("points are in a line");
+ ra=0;
+ ,
+ Ctr=1/2*(pA+pB)+1/2*d2/d1*tmp1;
+ ra=|pA-Ctr|;
+ tmp=name+"center="+Ctr;
+ parse(tmp);
+ Defvar(name+"center",Ctr);
+ );
+ );
+ if(ra>0,
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ ,
+ Out=Lineplot("1",[pA,pB],["nodata"]);
+ );
+ if(Noflg<3,
+ println("generate Circledata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ if(length(cenrad)==2,
+ tmp=name+"=Circledata("+cenrad+opstr+")";
+ ,
+ if(ra>0,
+ tmp=name+"=Circledata(["+Ctr+","+cenrad_1+"]"+opstr+")";
+ ,
+ tmp=name+"=Lineplot("+cenrad_1+","+cenrad_2+")";
+ );
+ );
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata():=(
+ regional(pA,pB);
+ pA=LLcrd((SW+NE)/2); // 15.09.17
+ pB=LLcrd(NE);
+ Framedata("win",[pA,pB]);
+);
+Framedata(list):=Framedata(list,[]);
+Framedata(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Framedata(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";// 16.10.07from
+ forall(list,
+ name=name+#.name;
+ );// 16.10.07upto
+ Framedata(name,list,options);
+ );
+);
+
+Framedata(nm,list,options):=(
+//help:Framedata();
+//help:Framedata([A,B]);
+//help:Framedata("1",[A,B]);
+//help:Framedata("1",[C,dx,dy]);
+ regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy,
+ opcindy,Ltype,Noflg,cent,dx,dy);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(length(list)==2, // 15.05.12
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2);
+ ,
+ pA=Lcrd(list_1);
+ dx=list_2; dy=list_3;
+ );
+ x1=pA_1-dx; x2=pA_1+dx;
+ y1=pA_2-dy; y2=pA_2+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Framedata(nm,cent,dx,dy):=Framedata(nm,cent,dx,dy,[]);
+Framedata(nm,cent,dx,dy,options):=(
+ regional(name,Out,tmp,tmp1,x1,y1,x2,y2,Ltype,opcindy,Noflg);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ x1=cent.x-dx; x2=cent.x+dx;
+ y1=cent.y-dy; y2=cent.y+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+cent.xy+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata2(nm,list):=Framedata2(nm,list,[]);
+Framedata2(nm,list,options):=(
+//help:Framedata2("1",[A,B]);
+ regional(tmp,tmp1,pC,pB);
+ pC=(Lcrd(list_1)+Lcrd(list_2))/2;
+ pB=Lcrd(list_2);
+ Framedata(nm,[pC,pB],options);
+);
+
+Ovaldata(nm,Pdata):=Ovaldata(nm,Pdata,[]);
+Ovaldata(nm,Pdata,options):=(
+//help:Ovaldata("1",[A,B]);
+//help:Ovaldata(optios=[size]);
+ regional(name,Graph,Ctr,Dx,Dy,Rc,Out,Point,Graph,
+ opstr,opcindy,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="ov"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ Rc=0.2;
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Rc=tmp1_1*Rc);
+// if(length(tmp1)>0,Rc=tmp1_1); //15.11.15
+ Ctr=Lcrd(Pdata_1);
+ if(ispoint(Pdata_2) % islist(Pdata_2),
+ tmp1=Lcrd(Pdata_2);
+ Dx=abs(tmp1_1-Ctr_1);
+ Dy=abs(tmp1_2-Ctr_2);
+ ,
+ Dx=Pdata_2;
+ Dy=Pdata_3;
+ );
+ Point=Ctr+[Dx-Rc,Dy-Rc];
+ tmp1=Circledata("1",[Point,Point+[Rc,0]],
+ ["Rng=[0,pi/2]","Num=10","nodata"]);
+ tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]],
+ ["nodata"]);
+ tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]],
+ ["nodata"]);
+ Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]);
+ tmp1=Reflectdata("1",[Graph],[Ctr,Ctr+[0,1]],["nodata"]);
+ Graph=Joincrvs("1",[Graph,tmp1],["nodata"]);
+ tmp2=Reflectdata("2",[Graph],[Ctr,Ctr+[1,0]],
+ ["nodata"]);
+ Graph=Joincrvs("2",[Graph,tmp2],["nodata"]);
+ if(Noflg<3,
+ println("generate Ovaldata "+name);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(Ctr,5)+","+textformat(Dx,5)+","+textformat(Dy,5);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+tmp+opstr+")");
+ );
+ Graph;
+);
+
+Segmark(nm,ptlist):=Segmark(nm,ptlist,[]);
+Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);
+Drawsegmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]);
+Drawsegmark(nm,ptlist,options):=(
+//help:Segmark("1",[A,B]);
+//help:Segmark(options=["Type=1","Width=1","Size=1"]);
+ regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,
+ tmp,tmp1,tmp2);
+ name="mrk"+nm;
+ pA=ptlist_1;
+ pB=ptlist_2;
+ size=0.15;
+ wid=0.05;
+ tp=1;
+ tmp1=Divoptions(options);
+ eqL=tmp1_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ tmp1=parse(tmp1);
+ tmp=substring(#,0,1);
+ if(tmp=="S" % tmp=="s",
+ size=size*tmp1;
+ );
+ if(tmp=="W" % tmp=="w",
+ wid=wid*tmp1;
+ );
+ if(tmp=="T" % tmp=="t",
+ tp=tmp1;
+ );
+ );
+ mid=(pA+pB)/2;
+ dir=(pB-pA)/|pB-pA|;
+ nor=[-dir_2,dir_1];
+// nor=nor/|nor|;
+ if(tp==1,
+ tmp1=mid+size*nor;
+ tmp2=mid-size*nor;
+ Listplot(name,[tmp1,tmp2]);
+ );
+ if(tp==2,
+ tmp1=mid+wid*dir+size*nor;
+ tmp2=mid+wid*dir-size*nor;
+ Listplot(name+"r",[tmp1,tmp2]);
+ tmp1=mid-wid*dir+size*nor;
+ tmp2=mid-wid*dir-size*nor;
+ Listplot(name+"l",[tmp1,tmp2]);
+ );
+ if(tp==3,
+ tmp1=mid;
+ tmp2=mid+size*dir;
+ Circledata(name,[tmp1,tmp2]);
+ );
+ if(tp==4,
+ tmp=mid+size*2/sqrt(3)*nor;
+ tmp1=mid+size*dir-size/sqrt(3)*nor;
+ tmp2=mid-size*dir-size/sqrt(3)*nor;
+ Listplot(name,[tmp,tmp1,tmp2,tmp]);
+ );
+);
+
+Parabolaplot(nm,ptlist):=Parabolaplot(nm,ptlist,"[-5,5]",[]);
+Parabolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5,5]";
+ options=Arg;
+ );
+ Parabolaplot(nm,ptlist,rng,options);
+);
+Parabolaplot(nm,ptlist,rng,options):=(
+//help:Parabolaplot("1",[A,B,C]):
+//help:Parabolaplot("1",[A,B,C],"[-5,5]");
+ regional(pA,pB,pC,angle,tmp,tmp1,tmp2);
+ tmp1=Lcrd(ptlist_1);
+ tmp2=Lcrd(ptlist_3);
+ pB=Lcrd(ptlist_2);
+ tmp=(tmp2-pB)/|tmp2-pB|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pA=Rotatepoint(tmp1,-angle,pB);
+ pC=Rotatepoint(tmp2,-angle,pB);
+ tmp1=1/(2*(pA_2-pB_2));
+ tmp2=1/2*(pA_2+pB_2);
+ tmp="("+format(tmp1,5)+")*(x-("+format(pA_1,5)+"))^2";
+ tmp=tmp+"+("+format(tmp2,5)+")";
+ tmp1=parse(rng);
+ tmp1=[pA_1-(tmp1_2-tmp1_1)/2,pA_1+(tmp1_2-tmp1_1)/2];
+ tmp2="x="+textformat(tmp1,5);
+ Plotdata(nm+"para",tmp,tmp2,append(options,"nodisp"));
+ Rotatedata(nm+"para","gr"+nm+"para",angle,append(options,pB));
+);
+
+Ellipseplot(nm,ptlist):=Ellipseplot(nm,ptlist,"[0,2*pi]",[]);
+Ellipseplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[0,2*pi]";
+ options=Arg;
+ );
+ Ellipseplot(nm,ptlist,rng,options);
+);
+Ellipseplot(nm,ptlist,rng,options):=(
+//help:Ellipseplot("1",[A,B,3]);
+//help:Ellipseplot("1",[A,B,C],"[0,pi]",[options]);
+ regional(pA,pB,d,angle,f,a,b,pM,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=|tmp2-pA|+|tmp2-tmp1|;
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(d^2/4-f^2);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+","+format(pM_2,5)+"]";
+ tmp=tmp+"+["+format(a,5)+"*cos(t),"+format(b,5)+"*sin(t)]";
+ Paramplot(nm+"elp",tmp,"t="+rng,append(options,"nodisp"));
+ Rotatedata(nm+"elp","gp"+nm+"elp",angle,append(options,pA));
+);
+
+Hyperbolaplot(nm,ptlist):=Hyperbolaplot(nm,ptlist,"[-5/2,5/2]",[]);
+Hyperbolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5/2,5/2]";
+ options=Arg;
+ );
+ Hyperbolaplot(nm,ptlist,rng,options);
+);
+Hyperbolaplot(nm,ptlist,rng,optionsorg):=(
+//help:Hyperbolaplot("1",[A,B,C],["Num=200"]):
+//help:Hyperbolaplot("1",[A,B,C],"[-5,5]",["Asy=do"]);
+ regional(pA,pB,d,angle,f,a,b,pM,eqL,options,opasy,tmp,tmp1,tmp2);
+ tmp=Divoptions(optionsorg);
+ eqL=tmp_5;
+ options=optionsorg;
+ opasy=[];
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="A",
+ tmp=indexof(#,"=");
+ opasy=[substring(#,tmp,length(#))];
+ options=remove(options,[#]);
+ );
+ );
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=abs(|tmp2-pA|-|tmp2-tmp1|);
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(f^2-d^2/4);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+"+"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp1",tmp,"t="+rng,append(options,"nodisp"));
+ tmp="["+format(pM_1,5)+"-"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp2",tmp,"t="+rng,append(options,"nodisp"));
+ tmp=["gp"+nm+"hyp1","gp"+nm+"hyp2"];
+ Rotatedata(nm+"hyp",tmp,angle,append(options,pA));
+ if(length(opasy)>0,
+ Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]);
+ Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]);
+ tmp=["ln"+nm+"asy1","ln"+nm+"asy2"];
+ Rotatedata(nm+"asy",tmp,angle,append(opasy,pA));
+ );
+);
+
+Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]);
+Polygonplot(nm,ptlist,number,options):=(
+//help:Polygonplot("1",[A,B],12);
+ regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ pB=Lcrd(ptlist_2);
+ rr=|pB-pA|;
+ tmp=(pB-pA)/rr;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ ptL=[];
+ forall(0..number,
+ tmp=angle+#*2*pi/number;
+ tmp1=pA+rr*[cos(tmp),sin(tmp)];
+ if(#>0 & #<number,
+ Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07
+ //Pointdata(nm,ptL);
+ );
+ tmp2=tmp1;
+ ptL=append(ptL,tmp1);
+ );
+ Listplot(nm+"ply",ptL,options);
+);
+
+Putintersect(nm,pdata1,pdata2):=(
+//help:Putintersect("Q","gr1","gr2");
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)==1,
+ Putpoint(nm,tmp_1);
+ ,
+ if(length(tmp)==0,
+ err("No intersect point");
+ ,
+ err("Multiple intersect points");
+ println(tmp);
+ err("Choose point number");
+ );
+ );
+);
+Putintersect(nm,pdata1,pdata2,ptno):=(
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)>0,
+ Putpoint(nm,tmp_ptno);
+ ,
+ err("No intersect point");
+ );
+);
+
+Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]);
+Arrowheaddata(point,direction,options):=(
+//help:Arrowheaddata(A,B);
+ regional(list,Ookisa,Hiraki,Futosa,Houkou,Str,Flg,tmp,Ev,Nv,pA,pB,
+ pP,rF,gG,Flg,Nj,Eps,tmp1,scx,scy);
+ Eps=10^(-3);
+ pP=point;
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Str=YaStyle;
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Ookisa=Ookisa*tmp1_1);
+ if(length(tmp1)>1,
+ tmp=tmp1_2;
+ if(tmp<5,
+ Hiraki=Hiraki*tmp;
+ ,
+ Hiraki=tmp;
+ );
+ );
+ Flg=0;
+ Hiraki=Hiraki*pi/180;
+ if(isstring(direction),Houkou=parse(direction),Houkou=direction);
+ if(MeasureDepth(Houkou)==2,Houkou=Houkou_1);
+ if(islist(Houkou_1),
+// pP=Lcrd(pP);
+// pP=Doscaling(pP);
+// Houkou=Dosscaling(Houkou);
+ pP=Pcrd(pP);
+ scy=SCALEY;
+ SCALEY=1;
+ tmp=Nearestpt(pP,Houkou);
+ pA=tmp_1;
+ rF=floor(tmp_2);
+ if(rF==1,
+ if(|Ptend(Houkou)-Ptstart(Houkou)|<Eps,
+ rF=Numptcrv(Houkou);
+ );
+ );
+ gG=apply(0..10,pP+Ookisa*cos(Hiraki)*[cos(2*pi/10*#),sin(2*pi/10*#)]);
+ Flg=0;
+ forall(1..rF,Nj,
+ if(Flg==0,
+ pB=Ptcrv(rF+1-Nj,Houkou);
+ tmp=IntersectcrvsPp([pA,pB],gG);
+ if(length(tmp)>0,
+ Houkou=pP-tmp_1_1;
+ Flg=1;
+ );
+ pA=pB;
+ );
+ );
+ SCALEY=scy;
+ if(Flg==0,
+ println("Arrowhead may be too large (no intersect)");
+ Flg=2;
+ );
+ if(Flg==1,
+ Houkou=Unscaling(Houkou);
+ pP=Unscaling(pP);
+ );
+ );
+ if(Flg<2,
+// pP=Doscaling(pP);
+// Houkou=Doscaling(Houkou);
+ pP=Pcrd(pP);
+ if(!ispoint(point),
+ Houkou=Pcrd(Houkou);
+ );
+// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou));
+ Ev=-1/|Houkou|*Houkou;
+ Ev=Lcrd(Ev);
+ Nv=[-Ev_2, Ev_1];
+ if(indexof(Str,"c")>0,
+ pP=pP-0.5*Ookisa*cos(Hiraki)*Ev;
+ );
+ if(indexof(Str,"b")>0,
+ pP=pP-Ookisa*cos(Hiraki)*Ev;
+ );
+ pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv;
+ pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv;
+ list=[pA,pP,pB];
+ list=apply(list,LLcrd(#));
+// Out=Unscaling(Out);
+ list;
+ );
+);
+
+Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]);
+Arrowhead(point,Houkou,options):=(
+//help:Arrowhead(B,B-A,[1.5,30]);
+//help:Arrowhead(A,"gr1");
+ // global ArrowheadNumber
+ regional(name,Ltype,Noflg,reL,opstr,opcindy,ptstr,hostr,tmp,tmp1,list);
+ name="arh"+text(ArrowheadNumber);
+ ArrowheadNumber=ArrowheadNumber+1;
+ ptstr=textformat(point,5);
+ if(isstring(Houkou), // 15.01.11
+ tmp=parse(Houkou);
+ if(MeasureDepth(tmp)<2,
+ hostr=Houkou;
+ ,
+ hostr=Houkou+"(1)";
+ );
+ ,
+ if(ispoint(point),
+ hostr=textformat(LLcrd(Houkou),5);
+ ,
+ hostr=textformat(Houkou,5);
+ );
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ list=Arrowheaddata(point,Houkou,options);
+ if(Noflg<3,
+// println("generate Arrowhead "+name);
+ tmp1=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST,name+"=Listplot("+list+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(1)+Ltype,name);
+ ,
+// if(Noflg==1,Ltype=0);
+ Ltype=0;
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ if(Noflg==0,
+ if(length(reL)<3, // 16.04.09 from
+ forall(1..(2-length(reL)),
+ opstr=opstr+",1";
+ );
+ tmp=PenThick/PenThickInit;
+ opstr=opstr+","+text(tmp);
+ ); // 16.04.09 upto
+ Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")");
+ );
+);
+
+Arrowdata(ptlist):=Arrowdata(ptlist,[]);
+Arrowdata(Arg1,Arg2):=(
+ regional(tmp,nm,ptlist,flg,pA,pB,options);
+ flg=0;
+ if(isstring(Arg1),
+ nm=Arg1;
+ ptlist=Arg2;
+ Arrowdata(nm,ptlist,[]);
+ flg=1;
+ );
+ if(flg==0,
+ tmp=MeasureDepth(Arg1);
+ if(tmp==0,
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,[]);
+ ,
+ ptlist=Arg1;
+ options=Arg2;
+ nm=text(ArrowlineNumber);
+ ArrowlineNumber=ArrowlineNumber+1;
+ Arrowdata(nm,ptlist,options);
+ );
+ );
+);
+Arrowdata(Arg1,Arg2,options):=(
+//help:Arrowdata([A,B],[2,10]);
+ regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size,
+ flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos);
+ Retflg=0;
+ Noflg=0;
+ Ltype=0;
+ if(!isstring(Arg1),
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,options,"old");
+ Retflg=1;
+ ptlist=[pA,pB];
+ );
+ if(Retflg==0,
+ nm=Arg1;
+ ptlist=Arg2;
+ name="ar"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ realL=tmp_6;
+ strL=tmp_7;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ size=1; // 15.06.11
+ if(length(realL)>0,
+ size=realL_1;
+ );
+ tmp2=select(strL,indexof(#,"l")>0); // 16.04.09
+ if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09
+ segpos=1;
+ tmp1=tmp_5;
+ if(length(tmp1)>2,
+ segpos=tmp1_3;
+ );
+ if(Noflg<3,
+// println("generate Arrowdata "+name);
+ tmp1=apply(ptlist,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=Lcrd(ptlist_1);//16.10.10
+ tmp2=Lcrd(ptlist_2);//16.10.10
+ if(lineflg==0, // 16.04.09 from
+ tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11
+ ,
+ tmp=tmp2;
+ ); // 16.04.09 upto
+ tmp=[tmp1,tmp];
+ GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ tmp=textformat(ptlist,5);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp1=indexof(tmp,"],[");
+ if(tmp1>0,
+ pA=substring(tmp,0,tmp1);
+ pB=substring(tmp,tmp1+1,length(tmp));
+ ,
+ tmp1=indexof(tmp,",");
+ pA=substring(tmp,0,tmp1-1);
+ pB=substring(tmp,tmp1,length(tmp));
+ );
+ tmp1="Lcrd("+pA+")+"
+ +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))";
+ tmp1=parse(tmp1);
+ tmp2="Lcrd("+pB+")-Lcrd("+pA+")";
+ tmp2=parse(tmp2);
+ Arrowhead(tmp1,tmp2,options);
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ ptlist;
+);
+Arrowdata(pA,pB,options,str):=(
+ regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy);
+ Astr=textformat(pA,5);
+ Bstr=textformat(pB,5);
+ name="ar"+pA.name+pB.name;
+ println("generate Arrow "+name);
+ opstr="";
+ opcindy="";
+ forall(options,
+ if(isstring(#),
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ ,
+ tmp="'"+#+"'";
+ );
+ ,
+ tmp=text(#);
+ );
+ opstr=opstr+","+tmp;
+ );
+ ptA=Lcrd(pA);
+ ptB=Lcrd(pB);
+ Arrowheaddata(ptB,ptB-ptA,options);
+ tmp="connect("+textformat([ptA,ptB],5)
+ +",linecolor->"+text(KCOLOR)+opcindy+");";
+ parse(tmp); // 14.11.17
+ Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04
+);
+
+Anglemark(plist):=Anglemark(plist,[]);
+Anglemark(Arg1,Arg2):=( // 2015.04.28 from
+ regional(nm,plist,options,tmp);
+ if(isstring(Arg1),
+ nm=Arg1;
+ plist=Arg2;
+ Anglemark(nm,plist,[]);
+ ,
+ plist=Arg1;
+ options=Arg2;
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Anglemark(nm,plist,options);
+ );
+); // upto
+Anglemark(nm,plist,options):=(
+//help:Anglemark([A,B,C],["E=\theta",2]);
+//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]);
+ regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg);
+ name="ag"+nm;
+ ra=0.5;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ Bname="";
+ Brat=1.5;
+ Num=20;
+ if(length(realL)>0,
+ ra=realL_1*ra;
+ opstr=opstr+","+text(realL_1);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ sab=pB-pA;
+ sac=pC-pA;
+ Rg=[arctan2(sab)+0,arctan2(sac)+0];
+ if(Rg_2<Rg_1,Rg_2=Rg_2+2*pi);
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ if(length(Bname)>0,
+ Th=(Rg_1+Rg_2)/2;
+ tmp1=Ctr+Brat*ra*[cos(Th),sin(Th)];
+ tmp="Defvar("+Dq+Bpos+"=";
+ tmp=tmp+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate anglemark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(plist,5);
+ tmp1=substring(tmp,1,length(tmp)-1);
+ tmp=name+"=Anglemark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Paramark(plist):=Paramark(plist,[]);
+Paramark(plist,options):=(
+//help:Paramark([A,B,C],["E=\theta"]);
+ regional(name,Out,pB,pA,pC,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Ltype,Noflg,eqL,realL,opcindy);
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ tmp=substring(tmp,1,length(tmp)-1);
+ name="pm"+tmp;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ ra=0.5;
+ Bname="";
+ Brat=1.2;
+ if(length(realL)>0,
+ tmp=realL_1;
+ ra=tmp*ra;
+ opstr=opstr+","+text(tmp);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ Out=[];
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|);
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|+ra*(pC-pA)/|pC-pA|);
+ Out=append(Out,pA+ra*(pC-pA)/|pC-pA|);
+ if(length(Bname)>0,
+ tmp1=pA+Brat*ra*(pB-pA)/|pB-pA|+Brat*ra*(pC-pA)/|pC-pA|;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate paramark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Paramark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+MakeBowdata(pA,pB,Hgt):=(
+ regional(angle,pB2,pH2,pC2,pC,tmp,Th1,Th2,ra,dMA);
+ angle=arctan2(pB-pA)+0;
+ pB2=Rotatepoint(pB,-angle,pA);
+ tmp=Lcrd(pA);
+ pH2=[(tmp_1+pB2_1)/2,tmp_2-Hgt];
+ dMA=|tmp-pB2|/2;
+ ra=(dMA^2+Hgt^2)/(2*Hgt);
+ pC2=[pH2_1,pB2_2+(ra-Hgt)];
+ pC=Rotatepoint(pC2,angle,pA);
+ Th1=arctan2(pA-pC2)+angle;
+ Th2=arctan2(pB2-pC2)+angle;
+ [pC,ra,Th1,Th2];
+);
+
+Bowdata(plist):=Bowdata(plist,[]);
+Bowdata(plist,options):=(
+ regional(nm,tmp);
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Bowdata(nm,plist,options);
+);
+Bowdata(nm,plist,options):=(
+//help:Bowdata([C,A],[2,1.2,"Expr=10","da"]);
+ regional(name,Out,pB,pA,pC,ra,tmp,tmp1,tmp2,Ltype,eqL,realL,
+ Bname,Bpos,Th,Cut,Num,Hgt,opstr,opcindy,Ydata,pC,
+ Th1,Th2,Noflg,Bops);
+ name="bw"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ pA=Lcrd(plist_1); pB=Lcrd(plist_2);
+ Hgt=1/2*|pB-pA|*0.2;
+ Cut=0;
+ Num=24;
+ Bname="";
+ if(length(realL)>0,
+ Hgt=realL_1*Hgt; // 15.04.12
+ if(length(realL)>1,Cut=realL_2);
+ );
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="L" % tmp=="l",
+ if(indexof(#,"rot")>0,
+ Bname="Letterrot(";
+ ,
+ Bname="Letter(";
+ );
+ );
+ if(tmp=="E" % tmp=="e",
+ if(indexof(#,"rot")>0,
+ Bname="Exprrot(";
+ ,
+ Bname="Expr(";
+ );
+ );
+ Bops=#;
+ );
+ Ydata=MakeBowdata(pA,pB,Hgt);
+ pC=Ydata_1;
+ ra=Ydata_2;
+ Th=(Ydata_3+Ydata_4)*0.5;
+ BOWMIDDLE=[pC_1+ra*cos(Th),pC_2+ra*sin(Th)];
+ if(length(Bname)>0,
+ Bpos="md"+name;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(BOWMIDDLE,5)+Dq+");";
+ parse(tmp);
+ Bname=Bname+Dq+Bpos+Dq+",";
+ if(indexof(Bname,"rot")>0,
+ tmp1=pB-pA;
+ if(tmp1_1<0, tmp1=-tmp1);
+ tmp2=indexof(Bops,",");
+ if(tmp2>0,
+ tmp=substring(Bops,0,tmp2-1);
+ if(indexof(tmp,"u")>0,
+ tmp1=-tmp1;
+ Bops=replace(tmp,"u","")+substring(Bops,tmp2-1,length(Bops));
+ Bops=replace(Bops,"=,","=");
+ );
+ );
+ Bname=Bname+text(tmp1)+",";
+ );
+ tmp=substring(Bops,indexof(Bops,"="),length(Bops));
+ tmp1=indexof(tmp,",");
+ if(tmp1==0,
+ if(indexof(Bname,"rot")==0,
+ Bname=Bname+Dq+"c"+Dq+","+Dq+tmp;
+ ,
+ Bname=Bname+Dq+tmp;
+ );
+ ,
+ Bname=Bname+Dq+substring(tmp,0,tmp1-1)+Dq+","
+ +Dq+substring(tmp,tmp1,length(tmp));
+ );
+ Bname=Bname+Dq+")";
+ parse(Bname);
+ );
+ if(Cut==0,
+ Th1=Ydata_3;
+ Th2=Ydata_4;
+ Out=[];
+ forall(0..Num,
+ tmp=Th1+#*(Th2-Th1)/Num;
+ Out=append(Out,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ ,
+ Th1=Ydata_3;
+ Th2=Th-Cut/(2*ra);
+ tmp1=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp1=append(tmp1,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Th1=Th+Cut/(2*ra);
+ Th2=Ydata_4;
+ tmp2=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp2=append(tmp2,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Out=[tmp1,tmp2];
+ );
+ if(Noflg<3,
+ println("generate bowdata "+name);
+ if(MeasureDepth(Out)==1,Out=[Out]);
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Bowdata("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Bowname(str):=Bowname("c",str);
+Bowname(dir,str):=(
+ Expr([BOWMIDDLE,dir,str]);
+);
+
+Bownamerot(bwdata,str):=Bownamerot(bwdata,0,0,str,1);
+Bownamerot(bwdata,str,updown):=Bownamerot(bwdata,0,0,str,updown);
+Bownamerot(bwdata,tmov,nmov,str):=Bownamerot(bwdata,tmov,nmov,str,1);
+Bownamerot(bwdata,tmov,nmov,str,updown):=(
+ regional(bdata,tmp);
+ tmp=MeasureDepth(bwdata);
+ if(tmp==1,bdata=[bwdata],bdata=bwdata);
+ if(length(bdata)>1,
+ tmp=Ptend(bdata_2)-Ptstart(bdata_1);
+ ,
+ tmp=Ptend(bdata_1)-Ptstart(bdata_1);
+ );
+ if(updown<0,tmp=-tmp);
+ Exprrot(BOWMIDDLE,tmp,tmov,nmov,str);
+);
+
+Deqplot(nm,deq,rng,initf):=Deqplot(nm,deq,rng,Lcrd(initf)_1,initf,[]);
+Deqplot(nm,deq,rng,Arg1,Arg2):=(
+ regional(initt,initf,options);
+ if(isreal(Arg1) & length(Arg1)==1,
+ initt=Arg1;
+ initf=Arg2;
+ options=[];
+ ,
+ initf=Lcrd(Arg1);
+ initt=initf_1;
+ options=Arg2;
+ );
+ Deqplot(nm,deq,rng,initt,initf,options);
+);
+Deqplot(nm,deq,rng,initt,initf,options):=(
+ regional(name,Noflg,Ltype,eqL,opstr,opcindy,pdL,var2,deq2,rng2,initt2,initf2,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ tmp2=tmp_2;
+ tmp3=tokenize(tmp1,"`");
+ if(length(tmp3)==2,
+ if(indexof(tmp1,"[")>0,
+ Deqplot(nm,deq,rng,initt,initf,options,[2,3]);
+ ,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ tmp=tokenize(rng2,"=");
+ deq2="["+tmp_1+","+replace(tmp1,"`","]")+"`=[1,"+tmp2+"]";
+ rng2="t="+tmp_2;
+ if(isreal(initf) & length(initf)==1,
+ initf2=[initt,initf];
+ initt2=initt;
+ ,
+ initf2=Lcrd(initf));
+ initt2=initf2_1;
+ Deqplot(nm,deq2,rng2,initt2,initf2,options,[2,3]);
+ );
+ ,
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_9;
+ opstr="";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="N",
+ tmp=indexof(#,"=");
+ tmp1="N="+substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp1+"'";
+ );
+ );
+ if(Noflg<1,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ var2="d"+tmp3_1;
+ deq2="["+tmp3_1+","+var2+"]`=[";
+ tmp=replace(tmp2,tmp3_1+"`",var2);
+ deq2=deq2+var2+","+tmp+"]";
+ Deqplot(nm,deq2,rng2,initt,initf,append(options,"nodisp"),[1,2]);
+ parse(tmp);
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ parse("de"+nm);
+ );
+ );
+);
+Deqplot(nm,deq,rng,initt,initf,options,Sel):=(
+//help:Deqplot("2","y`=y*(1-y)","x",0, 0.5,["Num=100"]);
+//help:Deqplot("1","y``=-y","x",0, [1,0]);
+//help:Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",[1,0.5]);
+ regional(Ltype,Noflg,Inflg,Outflg,strL,opstr,opcindy,Num,
+ outstr,name,func,xf,yf,pdL,Eps,Inf,t1,t2,tt,Vname,dt,funP,funN,flg,
+ kl1,kl2,kl3,kl4,x0,y0,x1,y1,tmp,tmp1,tmp2);
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ eqL=tmp_5;
+ strL=tmp_7;
+// opstr=tmp_(length(tmp)-1);
+ opstr="";
+ opcindy=tmp_(length(tmp));
+ outstr="";
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="S",
+ outstr="Sci";
+ );
+ );
+ Num=50;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp2=substring(#,0,1);
+ tmp2=Toupper(tmp2);
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp2+"="+tmp1+"'";
+ if(Toupper(substring(#,0,1))=="N",
+ Num=parse(tmp1);
+ );
+ );
+ if(outstr=="Sci",
+ if(Inflg==0 & Outflg==0,Outflg=1;Inflg=1);
+ );
+ if(Noflg<3,
+ if(outstr=="Sci",
+ if(Outflg==1,
+ println("Output Deqplot "+name);
+ SCIWRLIST=append(SCIWRLIST,name);
+ );
+ if(Inflg==1,
+ println("Input Deqplot "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ ,
+ Eps=10^(-3);
+ Inf=10^3;
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ func=tmp_2;
+ tmp=indexof(tmp1,",");
+ xf=substring(tmp1,1,tmp-1);
+ yf=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(yf,"]");
+ yf=substring(yf,0,tmp-1);
+ tmp=tokenize(rng,"=");
+ Vname=tmp_1;
+ tmp=parse(tmp_2);
+ t1=tmp_1;
+ t2=tmp_2;
+ tmp="funP("+Vname+","+xf+","+yf+"):="+func+";";
+ parse(tmp);
+ tmp=tokenize(func,",");
+ tmp1="-("+substring(tmp_1,1,length(tmp_1))+")";
+ tmp2="-("+substring(tmp_2,0,length(tmp_2)-1)+")";
+ tmp="funN("+Vname+","+xf+","+yf+"):=["+tmp1+","+tmp2+"];";
+ parse(tmp);
+ dt=(t2-t1)/Num;
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ pdL=[[tt,x0,y0]];
+ flg=0;
+ forall(1..floor((t2-initt)/dt),
+ if(flg==0,
+ kl1=dt*funP(tt,x0,y0);
+ kl2=dt*funP(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funP(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funP(tt+dt,x0+kl3_1,y0+kl3_2);//16.10.14
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt+#*dt;
+ pdL=append(pdL,[tt,x0,y0]);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ flg=0;
+ forall(1..floor((initt-t1)/dt),
+ if(flg==0,
+ kl1=dt*funN(tt,x0,y0);
+ kl2=dt*funN(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funN(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funN(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt-#*dt;
+ pdL=prepend([tt,x0,y0],pdL);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ println("Generate Deqplot "+name);
+ pdL=apply(pdL,#_Sel);
+ tmp1=apply(pdL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ );
+ if(Noflg<1,
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(outstr=="Sci",
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ ,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ pdL;
+ );
+ );
+);
+
+Enclosing(nm,plist):=EnclosingS(nm,plist);
+Enclosing(nm,plist,options):=EnclosingS(nm,plist,options);
+EnclosingS(nm,plist):=EnclosingS(nm,plist,[]);
+EnclosingS(nm,plist,options):=(
+//help:Enclosing("1",["sc2","crAB","sc2","Invert(sc1)"],[pt,"dr"]);
+ regional(name,AnsL,Start,Eps,EEps,S,Flg,Fdata,Gdata,KL,pt,qt,
+ t1,t2,t3,ii,nn,tmp,tmp1,tmp2,Ltype,Noflg,realL,eqL,opstr,opcindy);
+ name="en"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ realL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ EEps=0.1;
+ Start=[];
+ Flg=0;
+ forall(realL,
+ if(isList(#) % ispoint(#),
+ Start=Lcrd(#); // 15.09.12
+ ,
+ Flg=Flg+1;
+ if(Flg==1,Eps=#);
+ if(Flg==2,EEps=#);
+ );
+ );
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ Fdata=plist_1;
+ Gdata=plist_(length(plist));
+ KL=IntersectcrvsPp(Fdata,Gdata);
+ if(length(KL)==1,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ );
+ if(length(KL)==0,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ pt=tmp_1;
+ t1=tmp_2;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ pt=tmp_3;
+ t1=tmp_4;
+ );
+ );
+ if(length(KL)>1,
+ if(Start==[],
+ err("No Start Point");
+ ,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ tmp=|pt-Start|;
+ forall(2..length(KL),ii, // 15.04.20
+ tmp1=KL_ii_1;
+ tmp2=|tmp1-Start|; // 15.04.20
+ if(tmp2<tmp,
+ pt=tmp1;
+ t1=KL_ii_2;
+ tmp=tmp2;
+ );
+ );
+ );
+ );
+// pt=Pcrd(pt); // 15.09.12
+ Start=pt;
+ AnsL=[];
+ forall(1..length(plist),nn,
+ Fdata=plist_nn;
+ if(nn>1, pt=qt);
+ if(nn==length(plist),
+ qt=Start;
+ ,
+ Flg=0;
+ Gdata=plist_(nn+1);
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ KL=IntersectcrvsPp(Gdata,Fdata);
+ if(length(KL)==1,
+ tmp=KL_1;
+ qt=KL_1_1;
+ t3=KL_1_2;
+ Flg=10;
+ );
+ if(length(KL)==0,Flg=1);
+ if(length(KL)>1,
+ tmp1=KL_1_1;
+ tmp2=KL_2_1;
+ tmp=|tmp1-tmp2|;
+ if(tmp<Eps*10, Flg=1);
+ );
+ if(Flg==1,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ qt=tmp_1;
+ t3=tmp_4;
+ Flg=10;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ qt=tmp_3;
+ t3=tmp_2;
+ Flg=10;
+ );
+ );
+ if(Flg<10,
+ t2=10^6; //%inf;
+ forall(1..length(KL),ii,
+ tmp1=KL_ii_1;
+ tmp=KL_ii_3;
+ tmp2=ParamonCurve(tmp1,tmp,Fdata);
+ tmp3=KL_ii_2;
+ if(tmp2>t1+Eps & tmp2<t2+Eps,
+ qt=tmp1;
+ t2=tmp2;
+ t3=tmp3;
+ );
+ );
+ );
+ );
+ tmp=Partcrv("",pt,qt,Fdata,["nodata"]);
+ t1=t3;
+ if(nn==1,
+ AnsL=tmp;
+ ,
+ AnsL=concat(AnsL,tmp_(2..length(tmp)));
+ );
+ );
+ AnsL=apply(AnsL,Pcrd(#)); // 15.09.12
+ if(Noflg<3,
+ println("generate Enclosing "+name);
+ tmp=name+"="+textformat(AnsL,5);
+ parse(tmp);
+ tmp=name+"=Enclosing(";
+ tmp1="list(";
+ forall(plist,
+ tmp1=tmp1+#+",";
+ );
+ tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp=apply(AnsL,Lcrd(#));
+ tmp;
+);
+
+Shade(plist):=Shade(plist,[]);
+Shade(plist,options):=(
+//help:Shade(["gr2","sg1"],[0.5]);
+//help:Shade([pointlist],[0.5]);
+ regional(tmp,tmp1,tmp2,opstr,opcindy,Str,G2,flg);
+ if(isstring(plist_1), // 16.01.24
+ println("output Shade of "+plist);
+ ,
+ println("output Shade of lists");
+ );
+ tmp=Divoptions(options);
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ flg=0;
+ forall(plist,
+ if(flg==0,
+ if(isstring(#),tmp=parse(#),tmp=#); // from 16.01.24
+ if(!islist(tmp),flg=1); upto
+ );
+ );
+ if(flg==1,
+// err("some data not defined yet");
+ ,
+ G2=Joincrvs("1",plist,["nodata"]);
+ G2=apply(G2,Pcrd(#));
+ tmp1="fillpoly("+textformat(G2,5)+opcindy+");";
+ parse(tmp1);
+ );
+ Str="Shade(";
+ tmp1="list(";
+ forall(plist,
+ if(isstring(#), // from 16.01.24
+ if(length(#)>1,
+ tmp1=tmp1+#+",";
+ ,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ ,
+ tmp1=tmp1+"Listplot("+textformat(#,5)+"),";
+ ); // upto 16.01.24
+ );
+ Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ Com2nd(Str);
+);
+
+
+//help:start();
+
+Rotatepoint(point,Theta,ctr):=(
+//help:Rotatepoint(A,2*pi/3,B);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(ctr);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ [X2,Y2];
+);
+
+Translatepoint(point,mov):=(
+//help:Translatepoint(A,[2,3]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=X1+Cx;
+ Y2=Y1+Cy;
+ [X2,Y2];
+);
+
+Scalepoint(point,ratio,center):=(
+//help:Scalepoint(A,[3,2],[0,0]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(center);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+ratio_1*(X1-Cx);
+ Y2=Cy+ratio_2*(Y1-Cy);
+ [X2,Y2];
+);
+
+Reflectpoint(point,symL):=(
+//help:Reflectpoint(A,B);
+//help:Reflectpoint(A,[[2,3]]);
+//help:Reflectpoint(A,[C,E]);\\
+ regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ [X2,Y2];
+);
+
+Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]);
+Rotatedata(nm,plist,angle,options):=(
+//help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]);
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,
+ opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="rt"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Pt=Lcrd(tmp1_1));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ if(isstring(angle),Theta=parse(angle),Theta=angle);
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Rotatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Rotatedata("+tmp1+","
+ +textformat(angle,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+translatedata(nm,plist,mov):=translatedata(nm,plist,mov,[]);
+translatedata(nm,plist,mov,options):=(
+//help:translatedata("1",["gr1"],[1,2]);
+ regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,
+ opcindy,X2,Y2,Ltype,Noflg,name);
+ name="tr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=tmp_1+Cx;
+ Y2=tmp_2+Cy;
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate translatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=translatedata("+tmp1+","+textformat(mov,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Scaledata(nm,plist,ratioV):=(
+ regional(tmp);
+ tmp=Lcrd(ratioV);
+ Scaledata(nm,plist,tmp_1,tmp_2,[]);
+);
+Scaledata(nm,plist,Arg1,Arg2):=(
+//help:Scaledata("1","crAB",3,2,[[0,0]]);
+ regional(tmp,options);
+ if(islist(Arg2),
+ tmp=Lcrd(Arg1);
+ options=Arg2;
+ Scaledata(nm,plist,tmp_1,tmp_2,options);
+ ,
+ Scaledata(nm,plist,Arg1,Arg2,[]);
+ );
+);
+Scaledata(nm,plist,rx,ry,options):=(
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name);
+ name="sc"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,
+ Pt=Lcrd(tmp1_1);
+ );
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=Cx+rx*(tmp_1-Cx);
+ Y2=Cy+ry*(tmp_2-Cy);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Scaledata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Scaledata("+tmp1+","
+ +textformat(rx,5)+","+textformat(ry,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]);
+Reflectdata(nm,plist,symL,options):=(
+//help:Reflectdata("1","crAB",[C]);
+ regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="re"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Reflectdata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Reflectdata("+tmp1+","+textformat(symL,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Mksegments():=Mksegments([]);
+Mksegments(options):=(
+//help:Mksegments();
+ regional(segstr,p,q,r,tmp1,tmp2,tmp3);
+ forall(allsegments(),seg,
+ str=text(inspect(seg,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Listplot([parse(p),parse(q)]);
+ );
+);
+
+Mkcircles():=Mkcircles([]);
+Mkcircles(options):=(
+//help:Mkcircles():
+ regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4);
+ forall(allcircles(),cir,
+ str=text(inspect(cir,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ tmp4=indexof(str,";",tmp2+1);
+ if(tmp4==0,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Circledata([parse(p),parse(q)]);
+ ,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp4-1);
+ r=substring(str,tmp4,tmp3-1);
+ Circledata([parse(p),parse(q),parse(r)]);
+ );
+ );
+);
+
+Makesciarg(arglist):=(
+ regional(str,tmpstr);
+ str="";
+ forall(arglist,
+ if(isstring(#),
+ tmpstr=Dq+#+Dq;
+ ,
+ tmpstr=textformat(#,5);
+ );
+ str=str+tmpstr+",";
+ );
+ str=substring(str,0,length(str)-1);
+ str;
+);
+
+Setax(arglist):=(
+//help:Setax(["l","x","e","y","n","O","sw"]);
+//help:Setax([7,"nw"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com1st("Setax("+tmp+")");
+);
+
+Htickmark(arglist):=(
+//help:Htickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp="";
+ tmp=Makesciarg(arglist);
+ Com2nd("Htickmark("+tmp+")");
+);
+
+Vtickmark(arglist):=(
+//help:Vtickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com2nd("Vtickmark("+tmp+")");
+);
+
+Drwxy():=(
+//help:Drwxy();
+ Com2nd("Drwxy()");
+ Addax(0); // 16.01.21
+);
+
+Drwpt(pstr):=Drawpoint(pstr);
+Drwpt(ptlist,nn):=( // 16.03.05 from
+//help:Drwpt(A);
+//help:Drwpt("[1,1],0");
+//help:Drwpt(A,0);
+//help:Drwpt([1,2],0);
+ Drawpoint(ptlist,nn);
+);
+Drawpoint(pstr):=(
+ if(isstring(pstr),
+ println("Drwpt : "+pstr);
+ Com2nd("Drwpt("+pstr+")");
+ ,
+ Drawpoint(pstr,1);
+ );
+);
+Drawpoint(ptlistorg,nn):=(
+ regional(ptlist,thick,tmp,tmp1);
+ println("Drwpt : "+text(ptlistorg));
+ if(islist(ptlistorg),
+ if(MeasureDepth(ptlistorg)==1,
+ ptlist=ptlistorg
+ ,
+ ptlist=[ptlistorg]
+ );
+ ,
+ ptlist=[ptlistorg]
+ );
+ thick=PenThick/PenThickInit;// 16.04.09 from
+ tmp1=max(TenSize/TenSizeInit,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ forall(ptlist,
+ tmp=textformat(#,5)+","+text(nn);
+ Com2nd("Drwpt("+tmp+")"); // 16.04.09
+ );
+ Setpen(thick); // 16.04.09
+);// 16.03.05 upto
+
+Addax(param):=(
+//help:Addax(0);
+ ADDAXES=text(param);
+);
+
+Expr(Pt,Dr,St):=Expr([Pt,Dr,St]);
+Expr(list):=Expr(list,[]);
+Expr(listorg,options):=( //16.10.09
+//help:Expr([A,"e","f(x)=x^2"]);
+ regional(list,str,tmp,tmp1,tmp2);
+ list=listorg;
+ forall(1..round(length(list)/3),
+ str=list_(3*#);
+ if(!isstring(str),str=format(str,5));
+ str="$"+str+"$";
+ list_(3*#)=str;
+ );
+ Letter(list,options);
+);
+
+Letter(Pt,Dr,St):=Letter([Pt,Dr,St]);
+Letter(list):=Letter(list,[]);
+Letter(list,options):=(
+//help:Letter([C,"c","Graph of f(x)"]);
+ regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy,
+ opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2);
+ tmp=Divoptions(options);
+ Noflg=tmp_2;
+ opL=select(options,indexof(#,"->")>0); //16.10.09from
+ tmp=select(opL,indexof(#,"color"));
+ size=12;
+ clr=[0,0,0];
+ bld=false;
+ ita=false;
+ aln="left";
+ forall(opL,
+ tmp=indexof(#,"->");
+ tmp1=removespace(substring(#,0,tmp-1));
+ tmp2=substring(#,tmp+1,length(#));
+ if(tmp1=="size",sz=parse(tmp2));
+ if(tmp1=="color",clr=parse(tmp2));
+ if(tmp1=="bold",bld=parse(tmp2));
+ if(tmp1=="ita",ita=parse(tmp2));
+ );//16.10.09upto
+ Off=-4;
+ Dmv=8;
+ Nj=1;
+ while(Nj+2<=length(list),
+// Pos=textformat(list_Nj,5);
+ Pos=list_Nj;
+ Dir=list_(Nj+1);
+ if(Dir=="s" % Dir=="n", Dir=Dir+"c");//16.10.08
+ Str=list_(Nj+2);
+ if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09
+ tmp=replace(Str,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ Str=replace(tmp,".y","(2)");
+ if(indexof(Str,"`")>0,
+// tmp=Dq+",Assign('"+Str+"','`',Prime()))";
+ tmp=Dq+",Assign('"+Str+"'))"; // 15.02.22
+ ,
+ tmp=Dq+","+Dq+Str+Dq+")";
+ );
+ if(Noflg==0,
+ Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10
+ );
+ if(Noflg<2,
+ Xmv=0;//16.10.13
+ Ymv=-4;
+ if(indexof(Dir,"n")>0,
+ Ymv=Dmv/2;
+ );
+ if(indexof(Dir,"s")>0,
+ Ymv=-Dmv*3/2;//16.10.13
+ );
+ if(indexof(Dir,"e")>0,
+ Xmv=Dmv/2;
+ Off=0;
+ aln="left";
+ );
+ if(indexof(Dir,"w")>0,
+ Xmv=-Dmv/2;
+ Off=0; // 16.09.30from
+ aln="right";
+ );
+ if(indexof(Dir,"c")>0,
+ Xmv=0;//16.10.13
+ Off=0;
+ if(Ymv==0,Ymv=-4);//16.10.08
+ aln="mid"; // 16.09.30upto
+ );
+ drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv],
+ size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09
+ );
+ Nj=Nj+3;
+ );
+);
+
+Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str);
+Letterrot(pt,dir,movstr,str):=(
+//help:Letterrot(C,B-A,"AB"):
+//help:Letterrot(C,B-A,0,5,"AB"):
+//help:Letterrot(C,B-A,"t0n5","AB"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Letterrot(pt,dir,tmov,nmov,str);
+);
+Letterrot(pt,dir,tmov,nmov,str):=(
+ Letter([pt,"c",str],["notex"]);
+ Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str);
+Exprrot(pt,dir,movstr,str):=(
+//help:Exprrot(C,B-A,"d"):
+//help:Exprrot(C,B-A,0,5,"d"):
+//help:Exprrot(C,B-A,"t0n5","d"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Exprrot(pt,dir,tmov,nmov,str);
+);
+Exprrot(pt,dir,tmov,nmov,str):=(
+ Expr([pt,"c",str],["notex"]);
+ Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Putpoint(name,Pt):=Putpoint(name,Pt,Pt);
+Putpoint(name,Ptinit,Pt):=(
+//help:Putpoint("A",[1,2],[1,A.y]);
+ regional(ptstr);
+ ptstr=apply(allpoints(),#.name);
+ if(!contains(ptstr,name),
+ createpoint(name,Pcrd([Ptinit_1,Ptinit_2]));
+ ,
+ ptstr=name+".xy="+textformat(Pcrd(Pt),5);
+ parse(ptstr);
+ );
+);
+
+Bezierpt(t,ptlist,ctrlist):=(
+ regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9);
+ p0=ptlist_1;
+ p3=ptlist_2;
+ p1=ctrlist_1;
+ if(length(ctrlist)==1,
+ p2=p3;
+ flg3=0;
+ ,
+ p2=ctrlist_2;
+ flg3=1;
+ );
+ if(length(p0)<3, // 15.02.08
+ p0=Lcrd(p0);
+ p3=Lcrd(p3);
+ p1=Lcrd(p1);
+ p2=Lcrd(p2);
+ );
+ p4=(1-t)*p0+t*p1;
+ p5=(1-t)*p1+t*p2;
+ p6=(1-t)*p2+t*p3;
+ p7=(1-t)*p4+t*p5;
+ p8=(1-t)*p5+t*p6;
+ p9=(1-t)*p7+t*p8;
+ if(flg3==0,p7,p9);
+);
+
+Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]);
+Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options);
+Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options);
+BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+BezierCurve(nm,ptlistorg,ctrlistorg,options):=(
+//help:Bezier("1",[A,D],[B,C]);
+//help:Bezier(options=["Num=10"]);
+ regional(name,Ltype,Noflg,opstr,opcindy,Num,
+ ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list);
+ name="bz"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Num=10;
+ tmp1=tmp_5;
+ forall(tmp1, // 14.12.31
+ if(substring(#,0,1)=="N",
+ tmp2=indexof(#,"=");
+ Num=parse(substring(#,tmp2,length(#)));
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16
+ ctrlist=[]; // 14.12.31
+ if(length(ctrlistorg)==length(ptlist)-1,
+ forall(ctrlistorg,tmp1,
+ if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1);
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ ,
+ forall(1..(length(ptlist)-1),ii,
+ tmp=ctrlistorg_((2*ii-1)..(2*ii));
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ );
+ if(!islist(Num),
+ Num=apply(ctrlist,Num);
+ );
+ list=[];
+ forall(1..(length(ptlist)-1),ii,
+ tmp1=ptlist_(ii..(ii+1));
+ tmp2=ctrlist_ii;
+ if(ii==1,st=0,st=1);
+ forall(st..Num_ii,
+ tmp=Bezierpt(#/Num_ii,tmp1,tmp2);
+ list=append(list,tmp);
+ );
+ );
+ if(Noflg<3,
+ println("generate Bezier "+name);
+ out=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(out,5);
+ parse(tmp);
+ tmp1=textformat(ptlist,5);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=textformat(ctrlist,5);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ list;
+);
+
+Readcsvsla(fname):=Readplotdigdata(fname,[]);
+Readcsvsla(fname,options):=Readplotdigdata(fname,options);
+Readplotdigdata(fname):=Readplotdigdata(fname,[]);
+Readplotdigdata(fname,options):=(
+ regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3);
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ sc=1;//10;
+ mv=[0,0];//[5,5];
+ forall(tmp1,
+ if(!islist(#),sc=#,mv=#);
+ );
+ if(indexof(fname,".")>0,
+ tmp=load(fname);
+ ,
+ tmp=load(fname+".txt");
+ );
+ cmdall=tokenize(tmp,"//");
+ dataL=[];
+ forall(2..length(cmdall),ii,
+ tmp1=parse("["+cmdall_ii+"]");
+ dataL=append(dataL,tmp1);
+ );
+ if(length(dataL_(length(dataL)))<2,
+ dataL=dataL_(1..(length(dataL)-1));
+ );
+ nd=length(dataL_1)/2;
+ npt=length(dataL);
+ ptdata=[];
+ forall(1..nd,ii,
+ tmp3=[];
+ forall(1..npt,
+ tmp1=dataL_#_(2*ii-1);
+ tmp2=dataL_#_(2*ii);
+ if(isreal(tmp1),
+ tmp3=append(tmp3,[tmp1,tmp2]);
+ );
+ );
+ ptdata=append(ptdata,tmp3);
+ );
+ tmp1=[];
+ forall(ptdata,
+ tmp=#/sc;
+ tmp=translatedata("1",[tmp],-mv,["nodata"]);
+ tmp1=append(tmp1,tmp);
+ );
+ ptdata=tmp1;
+ ptdata;
+);
+
+Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]);
+Putbezierdata(name,ptL,options):=(
+ regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs);
+ tmp=Divoptions(options);
+ psize=3;
+ Deg=3;
+ tmp1=tmp_5;
+ forall(tmp1,
+ if(substring(#,0,1)=="D",
+ tmp=indexof(#,"=");
+ Deg=parse(substring(#,tmp,length(#)));
+ );
+ if(substring(#,0,1)=="S",
+ tmp=indexof(#,"=");
+ psize=parse(substring(#,tmp,length(#)));
+ );
+ );
+ pts=[];
+ ctrs=[];
+ forall(1..length(ptL),
+ p2=ptL_#; // 16.08.16
+ if(ispoint(p2),
+ tmp1=text(p2);
+ ,
+ tmp1=name+text(#);
+ Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ inspect(parse(tmp1),"ptsize",psize);
+ pts=append(pts,parse(tmp1));
+ inspect(parse(tmp1),"color",4);
+ if(#>1,
+ p1=Lcrd(ptL_(#-1)); // 16.08.16
+ p2=Lcrd(ptL_#); // 16.08.16
+ if(Deg==3,
+ tmp=(2*p1+p2)/3;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ tmp=(p1+2*p2)/3;
+ tmp2=name+"q"+text(#-1);
+ Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16
+ inspect(parse(tmp2),"labeled",false); //15.01.22
+ Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22
+ inspect(parse(tmp2),"ptsize",psize);
+ inspect(parse(tmp2),"color",3);
+ ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]);
+ ,
+ tmp=(p1+p2)/2;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ ctrs=append(ctrs,[parse(tmp1)]);
+ );
+ );
+ );
+ [pts,ctrs,name];
+);
+
+Bezierstart(n):=( // 2016.02.26
+ BezierNumber=n;
+);
+
+Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]);
+Mkbezierptcrv(ptdata,options):=(
+ //help:Mkbezierptcrv([A,B,C,D]);
+ //help:Mkbezierptcrv([[A,B],[C,D]]);
+ //help:Mkbezierptcrv(options=["Num=10"]);
+ // global BezierNumber
+ regional(ptlist,Out,tmp,tmp1,tmp2);
+ if(isstring(ptdata),
+ ptlist=Readcsvsla(ptdata,options);
+ ,
+ ptlist=ptdata;
+ );
+ if(MeasureDepth(ptlist)==1,ptlist=[ptlist]);
+ Out=[];
+ forall(1..length(ptlist),
+ tmp=floor((BezierNumber-1)/26);// 15.02.23
+ if(tmp==0,tmp="",tmp=text(tmp));
+ tmp2=mod(BezierNumber,26);
+ if(tmp2==0,tmp2=26);
+ tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11
+ tmp2=Putbezierdata(tmp1,ptlist_#,options);
+ Bezier(tmp2,options);
+ BezierNumber=BezierNumber+1;
+ Out=append(Out,tmp2_(1..2));
+ );
+ Out;
+);
+
+Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]);
+Mkbeziercrv(nm,ptctrL,options):=(
+ //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]);
+ regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2);
+ if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL);
+ forall(1..length(ptctrLL),
+ name=nm+text(#);
+ ptlist=ptctrLL_#_1;
+ ctrlist=ptctrLL_#_2;
+ Bezier(name,ptlist,ctrlist,options);
+ );
+);
+
+Writebezier():=Writebezier(Fhead,"all");
+Writebezier(head):=Writebezier(head,"all");
+Writebezier(head,seL):=(
+//help:Writebezier(file);
+//help:Writebezier(file,"acd");
+ regional(bz,dt,name,tmp,tmp1,tmp2);
+ bz=select(GLIST,indexof(#,"=Bezier")>0);
+ tmp1=[]; // 16.04.22from
+ if(seL!="all",
+ forall(1..length(seL),
+ tmp=substring(seL,#-1,#);
+ tmp=select(bz,indexof(#,"bz"+tmp)>0);
+ tmp1=concat(tmp1,tmp);
+ );
+ bz=tmp1;// 16.04.22upto
+ );
+ dt=[head+"n",[[length(bz),0]]];
+ forall(1..length(bz),
+ tmp=indexof(bz_#,"=");
+ name=substring(bz_#,0,tmp-1);
+ tmp=indexof(bz_#,","+Dq);
+ if(tmp>0,
+ tmp1=substring(bz_#,0,tmp-1)+")";
+ ,
+ tmp1=bz_#;
+ );
+ tmp1=replace(tmp1,"Bezier(","[");
+ tmp1=replace(tmp1,"list(","[");
+ tmp1=replace(tmp1,")","]");
+ tmp1=replace(tmp1,",",".xy,");
+ tmp1=replace(tmp1,"]",".xy]");
+ tmp1=replace(tmp1,".xy,[",",[");
+ tmp1=replace(tmp1,"].xy","]");
+ tmp1=replace(tmp1,name,head+text(#));
+ parse(tmp1);
+ tmp=parse(head+text(#)+"_1");
+ dt=concat(dt,[head+text(#)+"k",tmp]);
+ tmp=parse(head+text(#)+"_2");
+ dt=concat(dt,[head+text(#)+"c",tmp]);
+ );
+ WriteOutData(head+".txt",dt);
+ dt;
+);
+
+Readbezier(file):=Readbezier(file,[]);
+Readbezier(file,optionorg):=(
+//help:Readbezier("xsr");
+//help:Readbezier(options=["Num=10","nogeo"]);
+ regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3);
+ options=optionorg;
+ tmp=Divoptions(options);
+ stL=tmp_7;
+ geo=0;
+ forall(stL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="G",geo=1);
+ options=remove(options,[#]);
+ );
+ ReadOutData(file);
+ tmp=file+"n_1_1";
+ nn=parse(tmp);
+ out=[];
+ forall(1..nn,nc,
+ tmp=file+text(nc);
+ tmp1=parse(tmp+"k");
+ tmp2=parse(tmp+"c");
+ if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from
+ if(geo==1,
+ alpha="abcdefghijklmnopqrstuvwxyz";
+ forall(1..length(tmp1),
+ tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#);
+ Putpoint(tmp,tmp1_#,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"ptsize",3);
+ tmp1_#=parse(tmp+".xy");
+ );
+ forall(1..length(tmp2),
+ tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1";
+ Putpoint(tmp,tmp2_#_1,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_1=parse(tmp+".xy");
+ tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2";
+ Putpoint(tmp,tmp2_#_2,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_2=parse(tmp+".xy");
+ );
+ BezierNumber=BezierNumber+1;
+ );
+ Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22upto
+ out=append(out,"bz"+tmp);
+ );
+ out;
+);
+
+Ospline(nm,ptlist):=Ospline(nm,ptlist,[]);
+Ospline(nm,ptlist,options):=(
+//help:Ospline("1",ptlist,[options]);
+ regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg,
+ p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ name="o"+nm;
+ if(isstring(ptlist),list=parse(ptlist),list=ptlist);
+ if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0);
+// list=apply(list,LLcrd(#));
+ ctrL=[];
+ forall(1..(length(list)-1),
+ flg=0;
+ p1=Lcrd(list_#); // 16.08.16
+ p2=Lcrd(list_(#+1)); // 16.08.16
+ if(#==1 % #==length(list)-1,
+ flg=1;
+ if(closed==0,
+ pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16
+ pR=(2*p1+p2)/3; // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ flg=2;
+ ,
+ if(#==1,
+ p0=Lcrd(list_(length(list)-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ ,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_2); // 16.08.16
+ );
+ );
+ );
+ if(flg<=1,
+ if(flg==0,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ );
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16
+ pR=p2+cc*(p1-p3); // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ );
+ );
+// list=apply(list,LLcrd(#)); // 16.08.16
+// ctrL=apply(ctrL,LLcrd(#));
+ if(closed==0, // 15.09.21
+ p1=ctrL_2_1;
+ p2=Lcrd(list_2); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_1=[pQ];
+ tmp=length(ctrL);
+ tmp1=ctrL_(tmp-1);
+ p1=ctrL_(tmp-1)_2;
+ p2=Lcrd(list_(tmp)); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_tmp=[pQ];
+ );
+ Bezier("o"+nm,list,ctrL,options);
+);
+
+CRspline(nm,ptL):=CRspline(nm,ptL,[]);
+CRspline(nm,ptL,options):=(
+ // Catmull-Rom spline
+//help:CRspline("1",[A,B,C,A]);
+ regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg);
+ name="crsp"+nm;
+ if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL);
+ ptlist=tmp_1;
+ if(length(tmp)==1,
+ cflg=1;
+ ,
+ cflg=0;
+ ctrpts=tmp_2;
+ );
+ c=1/6;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp)); // 15.03.05
+ forall(eqL,
+ if(substring(#,0,1)=="R",
+ tmp2=indexof(#,"=");
+ c=parse(substring(#,tmp2,length(#)));
+ );
+ );
+ ptlist=apply(ptlist,Lcrd(#)); // 16.08.16
+ ctrlist=[];
+ forall(1..(length(ptlist)-1),
+ if(#==1,
+ if(cflg==0,
+ tmp1=ctrpts_1;
+ ,
+ v=ptlist_2-ptlist_(length(ptlist)-1);
+ tmp1=ptlist_#+c*v;
+ );
+ ,
+ v=ptlist_(#+1)-ptlist_(#-1);
+ tmp1=ptlist_#+c*v;
+ );
+ if(#==length(ptlist)-1,
+ if(cflg==0,
+ tmp2=ctrpts_2;
+ ,
+ v=ptlist_2-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ ,
+ v=ptlist_(#+2)-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ tmp=select(options,indexof(text(#),"->")>0);
+ tmp=append(tmp,"notex"); //15.03.05
+ Pointdata(name+text(#),[tmp1,tmp2],tmp);
+ ctrlist=append(ctrlist,[tmp1,tmp2]);
+ );
+ Bezier(nm,ptlist,ctrlist,options);
+);
+
+Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]);
+//help:Beziersmooth("1",[A,B,C,A]);
+Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options);
+Bzspline(nm,ptL):=Bzspline(nm,ptL,[]);
+Bzspline(nm,ptLorg,options):=(
+ // smooth bezier
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzsp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ lstr="c"+text(#);
+ pt=ptLorg_#; // 16.08.16
+ pt1=parse("C"+text(#-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp2="C"+text(#)+"p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp2],"PointOnLine",[parse(lstr),tmp]);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ tmp1="C1p";
+ Putpoint(tmp1,(4*pt+pt1)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ if(cflg==1,
+ lstr="c1";
+ pt=ptLorg_1; // 16.08.16
+ pt1=parse("C"+text(length(ptL)-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp1="C1p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp1],"PointOnLine",[parse(lstr),tmp]);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ if(#>1 % cflg==1,
+ tmp1="c"+text(#);
+ inspect(parse(tmp1),"alpha",0.3);
+ );
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp1),"ptsize",3);
+ inspect(parse(tmp1),"color",3);
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]);
+Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options);
+Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]);
+Bzsspline(nm,ptLorg,options):=(
+ // smooth bezier with symmetric control points
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzssp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1)));
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ pt=ptL_#;
+ pt1=parse("C"+text(#-1)+"q");
+ tmp2="C"+text(#)+"p=2*pt-pt1";
+ parse(tmp2);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ Putpoint("C1p",(4*pt+pt1)/5,Lcrd(C1p)); // 16.08.16
+ inspect(C1p,"ptsize",3);
+ inspect(C1p,"color",3);
+ );
+ if(cflg==1,
+ pt=ptL_1;
+ pt1=Lcrd(parse("C"+text(length(ptL)-1)+"q")); // 16.08.16
+ tmp1="Putpoint("+Dq+"C1p"+Dq+",2*pt-pt1)"; // 16.08.16
+ parse(tmp1);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Listbspline2bz(listorg):=(
+ regional(Eps,list,pcl,ptl,ctrl,k);
+ Eps=10^(-3);
+ list=apply(listorg,Lcrd(#)); // 16.08.16
+ k=length(list);
+ if(|list_1-list_k|>Eps,
+ pcl=list;
+ pcl_1=2*list_1-list_2;
+ pcl_k=2*list_k-list_(k-1);
+ ,
+ pcl=concat(list,[list_2]);
+ );
+ ctrl=apply(2..(length(pcl)-1),[pcl_#]);
+ ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2);
+ [ptl,ctrl];
+);
+
+Bspline(nm,ctrL):=Bspline(nm,ctrL,[]);
+Bspline(nm,ctrL,options):=(
+//help:Bspline("",[A,B,C]);
+ regional(list,tmp);
+ list=Listbspline2bz(ctrL);
+ tmp=BezierCurve("b"+nm,list_1,list_2,options);
+ tmp;
+);
+
+MeetCurve(Crv,Xorg,Yorg):=(
+ regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate);
+ if(isstring(Crv),Cv=parse(Crv),Cv=Crv);
+ if(MeasureDepth(Cv)==2,Cv=Cv_1);
+ Cv=apply(Cv,LLcrd(#)); // 14.12.18
+ while(length(Cv)==1,
+ Cv=Cv_1;
+ );
+ Cv=apply(Cv,Lcrd(#));
+ tmp1=min(apply(Cv,#_1));
+ tmp2=max(apply(Cv,#_1));
+ if(isstring(Xorg),X0=parse(Xorg),X0=Xorg);
+ if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg);
+ if(X0<tmp1,
+ X0=tmp1;
+ ,
+ if(X0>tmp2,
+ X0=tmp2;
+ );
+ );
+ tmp1=select(
+ 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1);
+ tmp2=select(
+ 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1);
+ tmp2=remove(tmp2,common(tmp2,tmp1));
+ Ban=concat(tmp1,tmp2);
+ Tate=select(Ban,
+ abs(Cv_#_1-Cv_(#+1)_1)<=
+ 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2)
+ );
+ Ban=remove(Ban,Tate);
+ Ylist=[];
+ forall(Ban,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1);
+ Ylist=append(Ylist,tmp);
+ );
+ forall(Tate,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp1=min([y1,y2]);
+ tmp2=max([y1,y2]);
+ if(Y0<tmp1,
+ tmp=tmp1;
+ ,
+ if(Y0>tmp2,
+ tmp=tmp2;
+ ,
+ tmp=Y0;
+ );
+ );
+ Ylist=append(Ylist,tmp);
+ );
+ tmp=sort(Ylist,abs(#_1-Y0));
+ [X0,tmp_1];
+);
+
+PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]);
+PutonLine(name,p1org,p2org,options):=(
+//help:PutonLine("C","sgAB");
+//help:PutonLine("C",pA,pB);
+ regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ tmp1=(1-par)*p1+par*p2;
+ if(abs(dx)>abs(dy),
+ tmp=name+".x";
+ tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11upto
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ if(abs(dy)>0,
+ tmp=name+".y";
+ tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]";
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ tmp2=p1;//16.10.11
+ Putpoint(name,tmp1,tmp2);
+ );
+ );
+);
+
+PutonSeg(name,sgstr):=(
+ regional(seg,p1,p2);
+ if(isstring(sgstr),seg=parse(sgstr),seg=sgstr);
+ PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2));
+);
+PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]);
+PutonSeg(name,p1org,p2org,options):=(
+//help:PutonSeg("C","sgAB");
+//help:PutonSeg("C",pA,pB);
+ regional(par,dx,dy,p,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ PutonLine(name,p1,p2,[par]);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ p=parse(name+".xy");
+ p=LLcrd(p);
+ if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");
+ );
+ );
+ if(abs(dx)<abs(dy) & (p_2-p1_2)*(p_2-p2_2)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");//16.10.11upto
+ );
+ );
+);
+
+PutonCurve(pn,crv):=PutonCurve(pn,crv,[]);
+PutonCurve(pn,crv,options):=(
+//help:PutonCurve("A","gr1");
+ regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg);
+ if(!islist(options),optionL=[options],optionL=options);
+ leftlim=XMIN;
+ rightlim=XMAX;
+ Flg=0;
+ Msg="y";
+ forall(optionL,
+ if(isstring(#), // 16.02.10 from
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="N", Msg="n"); // 16.02.10 upto
+ ,
+ if(Flg==0,
+ leftlim=#;
+ Flg=Flg+1;
+ ,
+ rightlim=#;
+ );
+ );
+ );
+ Pmt=MeetCurve(crv,leftlim,0);
+ pstr=apply(allpoints(),textformat(#,5)); // 15.04.07
+ if(!contains(pstr,pn),
+ createpoint(pn,Pcrd(Pmt));
+ ,
+ tmp1=parse(pn+".x");
+ if(tmp1< leftlim % tmp1>rightlim,
+ if(tmp1< leftlim,tmp= leftlim, tmp=rightlim);
+ Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y");
+ ,
+ Pmt=MeetCurve(crv,pn+".x",pn+".y");
+ );
+ ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";";
+ parse(ptstr);
+ );
+ if(Msg=="y",
+ println("Put "+pn+" on Curve "+text(crv));
+ );
+);
+
+CrossPoint(name,Crv1,Crv2,range):=(
+ regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2);
+ Mx1=range_1; Mx2=range_2;
+ repeat(15,
+ Mx3=(Mx1+Mx2)/2;
+ Crs1=MeetCurve(Crv1,Mx1,0);
+ Crs2=MeetCurve(Crv2,Mx1,0);
+ Crs3=MeetCurve(Crv1,Mx3,0);
+ Crs4=MeetCurve(Crv2,Mx3,0);
+ df1=Crs1_2-Crs2_2;
+ df2=Crs3_2-Crs4_2;
+ if((df1>0 & df2>0) % (df1<0 & df2<0),
+ Mx1=Mx3;
+ ,
+ Mx2=Mx3;
+ );
+ );
+ Putpoint(name,Crs1);
+);
+
+Setscaling(sc):=(
+//help:Setscaling(3);
+ SCALEX=1;
+ SCALEY=sc;
+ Com0th("Setscaling("+sc+")");
+ Setwindow("Msg=no");
+);
+
+Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]);
+Tabledatalight(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledatalight("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledatalight "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist));
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tabledata(nm,n,m,xsize,ysize,rmvL):=
+ Tabledata(nm,n,m,xsize,ysize,rmvL,[]);
+Tabledata(nm,n,m,xsize,ysize,rmvL,options):=(
+ regional(Tb,name,tmp,xLst,yLst);
+ name="tb"+nm;
+ xLst=apply(1..n,xsize/n);
+ yLst=apply(1..m,ysize/m);
+ Tabledata(nm,xLst,yLst,rmvL,options)
+);
+Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]);
+Tabledata(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledata("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledata "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp="C"+text(#);
+ tmp1="c"+text(#)+"r0";
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]);
+ clist_(#+1)=parse(tmp+".xy");
+ );
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp="R"+text(#);
+ tmp1="c0r"+text(#);
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ rlist_(#+1)=parse(tmp+".xy");
+ );
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(#<m,
+ tmp1=parse("C"+text(#));
+ tmp2=parse("C"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp+[-0.2,0.5],text((tmp2.x-tmp1.x)*10));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(#<n,
+ tmp1=parse("R"+text(#));
+ tmp2=parse("R"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp-[1.2,0.1],text(abs(tmp1.y-tmp2.y)*10));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist)); // 15.06.11
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tseginfo(seg):=(
+ regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2);
+ if(substring(seg,0,2)=="sg",
+ cr=substring(seg,2,length(seg));
+ ,
+ cr=seg;
+ );
+ tp=substring(cr,0,1);
+ if(tp=="c",
+ tpc="r";
+ ,
+ tpc="c";
+ );
+ tmp1=indexof(cr,tpc);
+ tmp=substring(cr,tmp1,length(cr));
+ tmp2=tmp1+indexof(tmp,tpc);
+ n1=substring(cr,1,tmp1-1);
+ n2=substring(cr,tmp1,tmp2-1);
+ n3=substring(cr,tmp2,length(cr));
+ [tp+n1,tpc,parse(n2),parse(n3)];
+);
+
+Tsegrmv(rmvL):=Tsegrmv(rmvL,[]);
+Tsegrmv(rmvL,options):=(
+ regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2);
+ forall(rmvL,cr,
+ tmp1=Tseginfo(cr);
+ hd=tmp1_1;
+ tpc=tmp1_2;
+ m1=tmp1_3;
+ m2=tmp1_4;
+ gcL=select(GCLIST,Tseginfo(#_1)_1==tmp1_1);
+ flg=0;
+ forall(gcL,
+ if(flg==0,
+ tmp=Tseginfo(#_1);
+ n1=tmp_3;
+ n2=tmp_4;
+ if(m1>=n1 & m2<=n2,
+ gc=#;
+ flg=1;
+ );
+ );
+ );
+ if(flg==1,
+ Changestyle([gc_1],["nodisp"]);
+ tail="";
+ if(indexof(hd,"r")>0,
+ tail=hd; hd="";
+ );
+ if(n1<m1,
+ tmp1=tpc+text(n1);
+ tmp2=tpc+text(m1);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ if(m2<n2,
+ tmp1=tpc+text(m2);
+ tmp2=tpc+text(n2);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ );
+ );
+);
+
+Tgrid(ptstr):=(
+//help:Tgrid("c2r5");
+ regional(tmp,tmp1,tmp2);
+ tmp=parse(ptstr);
+ if(islist(tmp),
+ tmp;
+ ,
+ tmp=indexof(ptstr,"r");
+ tmp1=substring(ptstr,1,tmp-1);
+ tmp1=parse(tmp1);
+ tmp2=substring(ptstr,tmp,length(ptstr));
+ tmp2=parse(tmp2);
+ [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2];
+ );
+);
+
+Tlistplot(ptL):=Tlistplot(ptL,[]);
+Tlistplot(Ag1,Ag2):=(
+ regional(nm,ptL,options);
+ if(isstring(Ag1),
+ nm=Ag1;
+ ptL=Ag2;
+ options=[];
+ ,
+ ptL=Ag1;
+ options=Ag2;
+ nm=ptL_1+ptL_2;
+ );
+ Tlistplot(nm,ptL,options);
+);
+Tlistplot(nm,ptL,options):=(
+//help:Tlistplot(["c0r0","c0r4"]);
+//help:Tlistplot("1",["c0r0","c0r4"]);
+ regional(tmp);
+ tmp=apply(ptL,Tgrid(#)); // 15.06.03
+ Listplot(nm,tmp,append(options,"Msg=no"));
+);
+
+ChangeTablestyle(nameL,style):=(
+////help:ChangeTablestyle(["r0c0c3"],["da"]);
+ regional(nmL,tmp,tmp1,tmp2);
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ nmL=apply(nmL,"sg"+#);
+ nmL=select(nmL,islist(parse(#)));
+ Changestyle(nmL,style);
+);
+
+Findcell(pos1,pos2):=Findcell("",pos1,pos2);
+Findcell(Tbdata,pos1,pos2):=(
+//help:Findcell("c0r0","c2r1");
+ regional(tmp1,tmp2,posnw,posse,ctr,dx,dy);
+ if(isstring(pos1),
+ posnw=Tgrid(pos1); // 15.05.20
+ posse=Tgrid(pos2);
+ //posnw=parse(pos1);
+ //posse=parse(pos2);
+ ,
+ if(islist(pos1),
+ posnw=pos1;
+ posse=pos2;
+ ,
+ tmp1="c"+text(pos1-1)+"r"+text(pos2-1);
+ tmp2="c"+text(pos1)+"r"+text(pos2);
+ posnw=Tgrid(tmp1);
+ posse=Tgrid(tmp2);
+// posnw=parse(tmp1);
+// posse=parse(tmp2);
+ );
+ );
+ ctr=(posnw+posse)/2;
+ dx=abs(posse_1-ctr_1);
+ dy=abs(posnw_2-ctr_2);
+ [ctr,dx,dy];
+);
+
+Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr);
+Putcell(Tbdata,pos1,pos2,dir,lttr):=(
+//help:Putcell("c0r0","c2r1","lt","abc");
+//help:Putcell(2,3,"c","xyz");
+ regional(tmp,tmp1,tmp2,posnw,posse,
+ posdir,posstr,ctr,dx,dy);
+ tmp=Findcell(Tbdata,pos1,pos2);
+ ctr=tmp_1; dx=tmp_2; dy=tmp_3;
+ posdir=ctr;
+ posstr=dir;
+ if(indexof(dir,"b")>0,
+ posdir_2=posdir_2-dy;
+ posstr=replace(posstr,"b","n");
+ );
+ if(indexof(dir,"t")>0,
+ posdir_2=posdir_2+dy;
+ posstr=replace(posstr,"t","s");
+ );
+ if(indexof(dir,"l")>0,
+ posdir_1=posdir_1-dx;
+ posstr=replace(posstr,"l","e");
+ );
+ if(indexof(dir,"r")>0,
+ posdir_1=posdir_1+dx;
+ posstr=replace(posstr,"r","w");
+ );
+ Letter(posdir,posstr,text(lttr));
+);
+
+Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex);
+Putcellexpr(Tbdata,pos1,pos2,dir,ex):=(
+//help:Putcellexpr("c0r0","c2r1","lt","abc");
+//help:Putcellexpr(2,3,"c","\sin x");
+ Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$");
+);
+
+Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL);
+Putrow(Tbdata,nrow,dir,lttrL):=(
+//help:Putrow(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,mcol);
+ mcol=length(lttrL);
+ forall(1..mcol,
+ Putcell(Tbdata,#,nrow,dir,lttrL_#);
+ );
+);
+
+Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL);
+Putrowexpr(Tbdata,nrow,dir,exL):=(
+//help:Putrowexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ Putrow(Tbdata,nrow,dir,lttrL);
+);
+
+PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL);
+PutcoL(Tbdata,mcol,dir,lttrL):=(
+//help:PutcoL(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,nrow);
+ nrow=length(lttrL);
+ forall(1..nrow,
+ Putcell(Tbdata,mcol,#,dir,lttrL_#);
+ );
+);
+PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL);
+PutcoLexpr(Tbdata,mcol,dir,exL):=(
+//help:PutcoLexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ PutcoL(Tbdata,mcol,dir,lttrL);
+);
+
+Setwindow():=Setwindow("Msg=yes");
+Setwindow(str):=(
+ regional(tmp,tmp1,tmp2,msg);
+ msg="y";
+ tmp=indexof(str,"="); // 16.02.10
+ tmp1=Toupper(substring(str,tmp,tmp+1));
+ if(tmp1=="N",msg="n");
+ if((ispoint(SW) & ispoint(NE)),
+ tmp1=Lcrd(SW);
+ tmp2=Lcrd(NE);
+ XMIN=tmp1_1; XMAX=tmp2_1;
+ YMIN=tmp1_2; YMAX=tmp2_2;
+ ,
+// XMIN=-5; XMAX=5;
+// YMIN=Lcrdy(-5); YMAX=Lcrdy(5);
+ createpoint("SW",Pcrd([XMIN,YMIN]));
+ createpoint("NE", Pcrd([XMAX,YMAX]));
+ );
+ if(msg=="y",
+ println("Setwindow(["+XMIN+","+XMAX+"],["+YMIN+","+YMAX+"])");
+ );
+ layer(KETPICLAYER);
+ autoclearlayer(KETPICLAYER,true);
+ drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
+ Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
+);
+Setwindow(xrange,yrange):=(
+//help:Setwindow([2,3],[-1,1]);
+ XMIN=xrange_1;
+ XMAX=xrange_2;
+ YMIN=yrange_1;
+ YMAX=yrange_2;
+// Setwindow();
+);
+
+Sciform(list):=(
+ regional(plotlist,comp,pos,out,out2,nn,strL,flg,
+ tmp,tmp1,tmp2,tmp3,Nj);
+ plotlist=Flatten([list]);
+ out=replace(plotlist_1,".xy","");
+ out=replace(out,".x","(1)");
+ out=replace(out,".y","(2)");
+ if(length(plotlist)==1,
+ comp=[];
+ forall(1..length(out),
+ comp=append(comp,substring(out,#-1,#));
+ );
+ out="";
+ pos=0;
+ forall(comp,
+ if(#!="'",
+ out=out+#;
+ ,
+ if(pos==0,
+ tmp=indexof(out,"Assign(");
+ if(substring(out,length(out)-7,length(out))=="Assign(",
+ out=out+"'";
+ pos=1;
+ ,
+ out=out+"Assign('";
+ pos=2;
+ );
+ ,
+ if(pos==2,
+ out=out+"')";
+ ,
+ out=out+"'";
+ );
+ pos=0;
+ );
+ );
+ );
+ ,
+ forall(2..length(plotlist),
+ comp=plotlist_#;
+ if(isstring(comp),
+ pos=indexof(comp,"Assign(");
+ if(pos>0,
+ comp=substring(comp,6,length(comp));
+ );
+ out=out+"Assign(";
+ comp=replace(comp,".xy","");
+ comp=replace(comp,".x","(1)");
+ comp=replace(comp,".y","(2)");
+ out=out+"'"+comp+"'";
+ out=out+"),";
+ );
+ if(islist(comp),
+ forall(comp,
+ out=out+"'"+#+"',";
+ );
+ );
+ );
+ if(length(plotlist)>1,
+ out=substring(out,0,length(out)-1);
+ out=out+");";
+ );
+ );
+ pos=[];
+ forall(1..length(out),
+ tmp=indexof(substring(out,#-1,length(out)),"Assign");
+ if(tmp>0,
+ tmp1=#-1+tmp;
+ if(length(pos)==0,
+ pos=[tmp1];
+ ,
+ if(pos_(length(pos))<tmp1,
+ pos=append(pos,tmp1);
+ );
+ );
+ );
+ );
+ if(length(pos)>0,
+ strL=[];
+ Nj=0;
+ forall(pos,
+ tmp=substring(out,Nj,#-1);
+ strL=append(strL,tmp);
+ Nj=#-1;
+ );
+ strL=append(strL,substring(out,Nj,length(out)));
+ out="";
+ forall(strL,
+ if(indexof(#,"Assign")==0,
+ out=out+#;
+ ,
+ tmp=indexof(#,"('");
+ tmp1=indexof(#,"')");
+ tmp2=substring(#,tmp+1,tmp1-2);
+ tmp3=substring(#,tmp1-2,length(#));
+ if(indexof(tmp2,"=")==0,
+ out=out+#;
+ ,
+ tmp=substring(tmp2,0,indexof(tmp2,"="));
+ out=out+"'"+tmp+"'+"+"Assign('";
+ tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2));
+ out=out+tmp+tmp3;
+ );
+ );
+ );
+ );
+ out2=""; // patched 16.01.21 from
+ nn=length(out);
+ flg=0;
+ forall(1..nn,
+ if(flg==0,
+ tmp=indexof(out,"='+Assign('");
+ if(tmp==0,
+ out2=out2+out;
+ flg=1;
+ ,
+ out2=out2+substring(out,0,tmp);
+ out=substring(out,tmp+10,length(out));
+ tmp=indexof(out,"'"); // 16.04.19 from
+ tmp1=substring(out,0,tmp-1);
+ tmp2="1234567890";
+ tmp=apply(1..length(tmp1),
+ indexof(tmp2,substring(tmp1,#-1,#)));
+ tmp=min(tmp);
+ if(tmp==0, // 16.04.19 upto
+ out2=out2+"'+Assign('";
+ ,
+ tmp=indexof(out,"'");
+ out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 upto
+ );
+ );
+ );
+ );
+ out2=replace(out2,"Dist=","D=");
+ out2=replace(out2,"Dis=","D=");
+ out2;
+);
+
+
+Rform(list):=(
+ regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj);
+ out=list;
+ out=replace(out,"[[[","list([[");
+ out=replace(out,"[","c(");
+ out=replace(out,"]",")");
+ out=replace(out,".xy","");
+ out=replace(out,".x","[1]");
+ out=replace(out,".y","[2]");
+ out;
+);
+
+Defvar(varstr):=(
+ regional(name,value,tmp,tmp1);
+ parse(varstr);
+ tmp=indexof(varstr,"=");
+ name=substring(varstr,0,tmp-1);
+ value=substring(varstr,tmp,length(varstr));
+ value=parse(value);
+ tmp1=select(1..length(VLIST),VLIST_#_1==name+"=");
+ if(length(tmp1)>0,
+ tmp=tmp1_1;
+ VLIST_tmp=[name+"=",value];
+ ,
+ VLIST=prepend([name+"=",value],VLIST);
+ );
+);
+
+Defvar(name,value):=(
+//help:Defvar("a",0.3);
+ regional(tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+format(#,5)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ tmp1=format(value,5);
+ );
+ tmp=name+"="+tmp1; // 15.02.06
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=name+"="); // 15.02.08
+ VLIST=prepend([name+"=",value],VLIST);
+);
+
+Iftosci(strorg):=( // 16.06.10
+ regional(str,ifL,ppL,cpL,kk,sL,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ str=replace(strorg,LFmark,"");
+ ifL=Indexall(str,"if(");
+ ppL=Bracket(str,"()");
+ cpL=Indexall(str,",");
+ tmp1=Bracket(str,"[]");
+ forall(1..(length(tmp1)/2),kk,
+ cpL=select(cpL,#<tmp1_(2*kk-1)_1%#_1>tmp1_(2*kk)_1);
+ );
+ forall(1..length(ifL),kk,
+ tmp=select(ppL,#_1>ifL_kk);
+ tmp1=tmp_1;
+ tmp2=select(tmp,#_2==-tmp1_2);
+ tmp2=tmp2_1;
+ tmp3=select(cpL,#>tmp1_1 & #<tmp2_1);
+ ifL_kk=[tmp1_1,tmp2_1,tmp1_2,tmp3];
+ );
+ forall(1..length(cpL),kk,
+ tmp=select(1..length(ifL),contains(ifL_#_4,cpL_kk));
+ tmp1=tmp_(length(tmp));
+ cpL_kk=[cpL_kk,tmp1];
+ );
+ sL=apply(1..length(str),substring(str,#-1,#));
+ forall(1..length(ifL),kk,
+ tmp1=ifL_kk_1;
+ tmp2=ifL_kk_2;
+ tmp=select(cpL,#_2==kk);
+ tmp3=apply(tmp,#_1);
+ sL_tmp1=" ";
+ sL_tmp2=";end;";
+ sL_(tmp3_1)=" then,";
+ if(length(tmp3)>1,
+ sL_(tmp3_2)=";else,";
+ );
+ );
+ tmp=sum(sL);
+);
+
+Fortosci(strorg):=(
+ regional(str,jj,var,tmp,tmp1,tmp2,tmp3,tmp4,
+ Out,repL,Pflg,Iflg,Cflg);
+ str=strorg;
+ repL=[];
+ tmp1=Indexall(str,"forall");
+ tmp2=Indexall(str,",");
+ forall(1..length(tmp1),jj,
+ tmp=select(tmp2,#>tmp1_jj);
+ var=substring(str,tmp_1,tmp_2-1);
+ tmp3=substring(str,tmp1_jj-1,tmp_2-1);
+ tmp=indexof(tmp3,"(");
+ tmp4=substring(tmp3,tmp,length(tmp3));
+ tmp=indexof(tmp4,",");
+ tmp4=substring(tmp4,0,tmp-1);
+ tmp4="for "+var+"="+tmp4;
+ tmp4=replace(tmp4,"..",":");
+ repL=concat(repL,[tmp3,tmp4]);
+ );
+ forall(1..length(repL)/2,
+ str=replace(str,repL_(2*#-1),repL_(2*#));
+ );
+ tmp=Bracket(str);
+ tmp=select(tmp,#_2==0);
+ tmp=tmp_1_1;
+ tmp1=substring(str,tmp-1,length(str));
+ tmp1=replace(tmp1,")",";end");
+ str=substring(str,0,tmp-1)+tmp1;
+ str=replace(str,";;",";");
+ str;
+);
+
+Deffun(name,bodylist):=(
+//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); // 16.02.18
+ regional(funstr,tmp,tmp1,str,Pos);
+ funstr=name+":=(";
+ forall(bodylist,
+ funstr=funstr+#+";";
+ );
+ funstr=funstr+");";
+ parse(funstr);
+ tmp=bodylist_(length(bodylist));
+ str="function "+tmp+"="+name+",";
+ forall(1..(length(bodylist)-1),
+ tmp1=bodylist_#;
+ tmp1=replace(tmp1,LFmark,"");// 16.05.26
+ tmp1=replace(tmp1," ","");// 16.05.26
+ Pos=indexof(tmp1,"regional")+indexof(tmp1,"local");
+ if(Pos==0,
+ tmp=replace(tmp1,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ tmp=replace(tmp,".y","(2)");
+ if(indexof(tmp,"if(")>0,
+ tmp=iftosci(tmp);
+ );
+ if(indexof(tmp,"forall(")>0, // 16.05.26from
+ tmp=Fortosci(tmp);
+ ); // 16.05.26upto
+ str=str+tmp+",";
+ );
+ );
+ str=str+"endfunction;";
+ FUNLIST=append(FUNLIST,str);
+);
+
+Windispg():=(
+ regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,tmp3,opcindy);
+ gsave();
+ layer(KETPIClayer);
+ forall(GCLIST,Nj,
+ if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
+ if(islist(Dt) & length(Dt)>0, // 12.19,12.22
+ tmp=MeasureDepth(Dt);
+ if(tmp==1,Dt=[Dt]);
+ opcindy=Nj_3;
+ if(Nj_2<0,tmp1=0,tmp1=Nj_2);
+ if(tmp1<10,
+ forall(Dt,Nk,
+// tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#));
+// tmp2=apply(tmp2,Pcrd(#));
+ tmp2=Nk; // 14.12.04
+ if(length(Nk)>1,
+ forall(2..length(Nk),
+ tmp3=textformat(Nk_[#-1,#],5);
+ tmp3=substring(tmp3,1,length(tmp3)-1);
+ if(tmp1==1,opcindy=opcindy+",dashpattern->[2,2]");
+ tmp="draw("+tmp3+
+ ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")";
+ parse(tmp);
+ );
+ ,
+ if(length(Nk)==1,
+ tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
+ parse(tmp);
+ );
+ );
+ );
+ );
+ );
+ );
+// if(ADDAXES=="1", // 16.10.08from
+// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]);
+// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]);
+// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]);
+// Letter([[0,0],"sw","O"]);
+// ); // 16.10.08upto
+ grestore();
+ layer(0);
+);
+</script>
+ <script type="text/javascript">
+var cdy = CindyJS({
+ scripts: "cs*",
+ use: ["katex"],
+ defaultAppearance: {
+ dimDependent: 0.7,
+ fontFamily: "sans-serif",
+ lineSize: 1,
+ pointSize: 5.0,
+ textsize: 12.0
+ },
+ angleUnit: "°",
+ geometry: [
+ {name: "SW", type: "Free", pos: [-2.5744680851063833, -4.0, 0.8525536333742482], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "NE", type: "Free", pos: [4.0, 2.4285714285714284, 0.44032989855593035], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "A", type: "Free", pos: [0.0, -4.0, -0.8], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "B", type: "Free", pos: [-0.02366863905325444, -4.0, 0.9484028584281579], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "a", type: "Segment", color: [0.0, 0.0, 1.0], args: ["A", "B"], labeled: true},
+ {name: "C", type: "PointOnSegment", pos: [0.011092747971205843, -4.0, -1.619421523013707], color: [1.0, 0.0, 0.0], args: ["a"], labeled: true},
+ {name: "E", type: "Free", pos: [0.0, -4.0, 0.6666666666666666], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "F", type: "Free", pos: [4.0, -2.1818181818181817, 0.36363636363636365], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "b", type: "Segment", color: [0.0, 0.0, 1.0], args: ["E", "F"], labeled: true},
+ {name: "G", type: "PointOnSegment", pos: [2.8117446133333335, -4.0, 0.6666666666666666], color: [1.0, 0.0, 0.0], args: ["b"], labeled: true},
+ {name: "H", type: "Free", pos: [0.0, -4.0, 0.5714285714285714], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "K", type: "Free", pos: [4.0, -2.5454545454545454, 0.36363636363636365], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "c", type: "Segment", color: [0.0, 0.0, 1.0], args: ["H", "K"], labeled: true},
+ {name: "L", type: "PointOnSegment", pos: [0.5714285714285715, -4.0, 0.5714285714285714], color: [1.0, 0.0, 0.0], args: ["c"], labeled: true},
+ {name: "M", type: "Free", pos: [-2.0, -4.0, -1.0], color: [1.0, 0.0, 0.0], size: 2.0},
+ {name: "Text3", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 0.29, 0.29], fillalpha: 0.27272728085517883, script: "Viewtex();", text: "Texview", textsize: 18.0, dock: {corner: "UL", offset: [76.0, -20.0]}},
+ {name: "Text4", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 0.498, 0.0], fillalpha: 0.27272728085517883, script: "kc();", text: "Exekc", textsize: 18.0, dock: {corner: "UL", offset: [157.0, -20.0]}},
+ {name: "Text1", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 1.0, 0.0], fillalpha: 0.27272728085517883, script: "if(length(Shellparent)>0,\n Makeshell(),Makebat();\n);\nWritetoSci(2);", text: "Parent", textsize: 18.0, dock: {corner: "UL", offset: [10.0, -20.0]}},
+ {name: "Text0", type: "ToggleButton", color: [0.0, 0.0, 0.0], fillcolor: [0.0, 1.0, 1.0], fillalpha: 0.27272728085517883, script: "Mkketcindyjs();", text: "KeTJS", textsize: 18.0, dock: {corner: "UL", offset: [225.0, -20.0]}}
+ ],
+ ports: [{
+ id: "CSCanvas",
+ width: 1052,
+ height: 584,
+ transform: [{visibleRect: [-9.745440419289913, 6.700770173058494, 16.50860137608266, -7.873716907262401]}],
+ axes: true,
+ grid: 1.0,
+ snap: true,
+ background: "rgb(168,176,192)"
+ }],
+ csconsole: false,
+ cinderella: {build: 1894, version: [2, 9, 1894]}
+});
+ </script>
+</head>
+<body>
+ <div id="CSCanvas"></div>
+</body>
+</html>
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamow.cdy b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamow.cdy
new file mode 100755
index 00000000..2e926cd4
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamow.cdy
Binary files differ
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamowketcindy.html b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamowketcindy.html
new file mode 100644
index 00000000..3acb1b2c
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/js03gamowketcindy.html
@@ -0,0 +1,6494 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <meta charset="UTF-8">
+
+ <title>js03gamow.cdy</title>
+ <style type="text/css">
+ * {
+ margin: 0px;
+ padding: 0px;
+ }
+
+ #CSConsole {
+ background-color: #FAFAFA;
+ border-top: 1px solid #333333;
+ bottom: 0px;
+ height: 200px;
+ overflow-y: scroll;
+ position: fixed;
+ width: 100%;
+ }
+ </style>
+ <link rel="stylesheet" href="http://cindyjs.org/dist/v0.8/CindyJS.css">
+ <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/Cindy.js"></script>
+ <script type="text/javascript" src="http://cindyjs.org/dist/v0.8/KetCindyPlugin.js"></script>
+<script id="csdraw" type="text/x-cindyscript">
+Fhead="js03gamow";
+Ketinit();
+
+Changework(gethome()+"/Desktop");
+
+rotate(points,th):=(
+ regional(pa,pb,za,zb,zr,deg);
+ pa=points_1; pb=points_2;
+ za=pa.x+pa.y*i; zb=pb.x+pb.y*i;
+ deg=pi/180*th;
+ zr=za+(zb-za)*(cos(deg)+i*sin(deg));
+ [re(zr),im(zr)];
+);
+
+p1=rotate([A,C],90);
+p2=rotate([B,C],-90);
+Ds=0.5;
+red="color->[1,0,0]";
+
+Listplot([C,A]);
+Listplot([C,B]);
+Listplot("a",[A,p1]);
+Listplot("b",[B,p2]);
+Listplot("0",[p1,p2],[red]);
+Pointdata("a",p1,[red,"Size=4"]);
+Pointdata("b",p2,[red,"Size=4"]);
+if(norm(C.xy-pc)>Ds,
+ ptsL=append(ptsL,[p1,p2]);
+ pc=C.xy;
+);
+forall(1..(length(ptsL)),
+ Listplot(text(#),ptsL_#,[red,"do"]);
+);
+
+Windispg();
+
+;
+</script>
+<script id="csinit" type="text/x-cindyscript">
+Ketinit():=Ketinit(1);
+Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]);
+Ketinit(sy,rangex,rangey):=(
+ regional(pt,tmp,tmp1,tmp2);
+ PenThickInit=8;
+ ULEN="1cm";
+ KETPICLAYER=20;
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ KETPICCOUNT=1;
+ KCOLOR=[0,0,0];
+ GLIST=[];
+ GCLIST=[];
+// GDATALIST=[];
+ GOUTLIST=[];
+ POUTLIST=[];
+ VLIST=[];
+ FUNLIST=[];
+ LETTERlist=[];
+ COM0thlist=[];
+ COM1stlist=[];
+ COM2ndlist=[];
+ SCIWRLIST=[];
+ SCIRELIST=[];
+ ADDAXES="1";
+ LFmark=unicode("000a");
+ Dq=unicode("0022");
+ WaitUnit=10;
+ CONTINUED=0;
+ OutComList=[];
+ OutFileLIst=[]; // 15.10.22
+ FigPdfList=[]; // 16.04.08
+ ADDPACK=[]; // 16.05.16
+ ErrFlag=0;
+ setdirectory(Dirwork);
+ if(isstring(Fhead), // 15.04.06
+ Fnametex=Fhead+".tex";
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+ );
+ if(!isstring(Mackc),// 16.06.07
+ Mackc="sh";
+ );
+ ArrowlineNumber=1; // 15.01.05
+ ArrowheadNumber=1;
+ BezierNumber=1; //15.01.03
+ SCALEX=1;
+ SCALEY=sy;
+// Setscaling(sy);
+ XMIN=rangex_1/SCALEX;
+ XMAX=rangex_2/SCALEX;
+ YMIN=rangey_1/SCALEY;
+ YMAX=rangey_2/SCALEY;
+ Setwindow("Msg=n"); // 16.05.31
+);
+
+DqDq(str):=unicode("0022")+str+unicode("0022");
+
+Tab2list(dtstr):=Tab2list(dtstr,[]);
+Tab2list(dtstr,options):=(
+//help:Tab2list(datastr);
+//help:Tab2list(options=[0]);
+ regional(dtall,dt,rep,out,crm,lfm,htm,first,tmp,tmp1,tmp2);
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ htm=unicode("0009");
+ rep=0;
+ if(length(options)>0,rep=options_1);
+ first=lfm; // 16.09.05from
+ if(indexof(dtstr,crm)>0,
+ first=crm;
+ if(indexof(dtstr,crm+lfm)>0,
+ first=first+lfm;
+ ); // 16.09.05upto
+ );
+ tmp1=Indexall(dtstr,first);
+ tmp1=prepend(0,tmp1);
+ tmp1=append(tmp1,length(dtstr));
+ dtall=[];
+ forall(1..(length(tmp1)-1),
+ tmp=substring(dtstr,tmp1_#,tmp1_(#+1)-1);
+ if(length(tmp)>0,
+ dtall=append(dtall,tmp);
+ );
+ );
+ out=[];
+ forall(dtall,dt,
+ tmp1=tokenize(dt,unicode("0009"));
+ tmp2=[];
+ forall(tmp1,
+ if(isstring(#),tmp=parse(#),tmp=#);
+ if(!isreal(tmp),
+ if(length(#)>0,tmp=#,tmp=rep);
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ out=append(out,tmp2);
+ );
+ out;
+);
+
+Columnlist(dt,list):=( // 16.09.04
+//help:Columnlist(dt,1..3);
+ apply(dt,#_list);
+);
+
+Dispmat(dt):=( // 16.09.16
+//help:Dispmat(dt);
+ regional(htm,crm,lfm,row,tmp,tmp1,tmp2);
+ htm=unicode("0009");
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ tmp2="";
+ forall(dt,row,
+ tmp1="";
+ forall(row,
+ if(isstring(#),
+ tmp1=tmp1+#+htm;
+ ,
+ tmp1=tmp1+text(#)+htm;
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp1=tmp1+lfm;
+ tmp2=tmp2+tmp1;
+ );
+ print(tmp2);
+ println();
+);
+
+norm(v1):=( // 16.09.01
+//help:norm([2,1,3]);
+ regional(out,tmp,tmp1,tmp2);
+ out=0;
+ forall(1..length(v1),
+ out=out+(v1_#)^2;
+ );
+ out=sqrt(out);
+ out;
+);
+norm(v1,v2):=(
+ norm(v2-v1);
+);
+
+// 16.03.28
+Removespace(str):=(
+//help:Removespace(" a b c ");
+ regional(tmp,flg,out);
+ tmp=length(str)+1;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ if((str_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(str,tmp-1,length(str));
+ flg=0;
+ tmp=0;
+ forall(reverse(1..length(out)),
+ if(flg==0,
+ if((out_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(out,0,tmp);
+);
+
+Indexall(str,key):=(
+ regional(rest,out,flg,tmp,tmp1,);
+ out=[];
+ rest=str;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ tmp=indexof(rest,key);
+ if(tmp>0,
+ tmp1=tmp+length(str)-length(rest);
+ out=append(out,tmp1);
+ rest=substring(rest,tmp,length(rest));
+ ,
+ flg=1;
+ );
+ );
+ );
+ out;
+);
+
+Changestyle(nameL,style):=(
+//help:Changestyle(["sgAB"],["da"]);
+ regional(nmL,name,Ltype,Ltypeorg,Noflg,opcindy,tmp);
+ tmp=Divoptions(style);
+ Ltypeorg=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ forall(nmL,name,
+ Ltype=Ltypeorg;
+ GCLIST=select(GCLIST,#_1!=name);
+ COM2ndlist=select(COM2ndlist,indexof(#,"("+name)==0); // 15.05.23
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+);
+
+Op(n,object):=( // 16.05.25
+//help:Op(4,[1,2,3,4]);
+//help:Op(3,"abcd");
+ regional(out);
+ if(islist(object),
+ out=object_n;
+ ,
+ if(isstring(object),
+ out=substring(object,n-1,n);
+ );
+ );
+ out;
+);
+
+Toupper(str):=(
+ regional(alphabet,out,tmp,tmp1);
+ alphabet="abcdefghijklmnopqrstuvwxyz";
+ out="";
+ forall(1..length(str),
+ tmp=substring(str,#-1,#);
+ tmp1=indexof(alphabet,tmp);
+ if(tmp1>0,
+ out=out+unicode(text(tmp1+64),base->10);
+ ,
+ out=out+tmp;
+ );
+ );
+ out;
+);
+
+Textformat(value,dig):=(
+//help:Textformat(2/3,4);
+//help:Textformat([gr1,gr2],5);
+ regional(vv,tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+Textformat(#,dig)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ if(ispoint(value) % isstring(value),
+// vv=Lcrd(value);
+// tmp1=Textformat(vv,dig);
+// tmp1=text(value); // 15.04.07
+ if(isstring(value),tmp1=Dq+value+Dq,tmp1=text(value)); // 15.10.02
+ ,
+ tmp1=format(value,dig);
+ );
+ );
+ tmp1;
+);
+
+Sprintf(value,dig):=(
+//help:Sprintf(5.1,4);
+ regional(vv,tmp,tmp1);
+ if(!islist(value),
+ vv=Textformat(value,dig);
+ if(indexof(vv,".")==0,vv=vv+".");
+ vv=vv+"0000000000000000";
+ tmp=indexof(vv,".")+dig;
+ vv=substring(vv,0,tmp);
+ ,
+ vv=apply(value,Sprintf(#,dig));
+ );
+ vv;
+);
+
+Assign(funstr,vrL):=(
+ regional(nn,out,tmp,tmp1);
+ nn=length(vrL)/2;
+ out=funstr;
+ forall(1..nn,
+ out=Assign(out,vrL_(2*#-1),vrL_(2*#));
+ );
+ out;
+);
+
+Assign(funstr,varname,rep):=(
+//help:Assign("x^2+a*x","a",1.3);
+//help:Assign("a*x^2+b*x",["a",1,"b",2]);
+ regional(repstr,ii,jj,tmp,tmp1,tmp2,Notvar,Flg);
+ if(isstring(rep),repstr=rep,repstr="("+Textformat(rep,5)+")"); // 15.02.09, 07.06
+ tmp=[46]; // 12.20
+ tmp=concat(tmp,48..57);
+ tmp=concat(tmp,65..90);
+ tmp=concat(tmp,97..122);
+ Notvar=apply(tmp,unicode(text(#),base->10));
+ tmp2="";
+ forall(1..100,
+ ii=indexof(funstr,varname);
+ if(ii>0,
+ Flg=0;
+ if(ii>1,
+ tmp=substring(funstr,ii-2,ii-1);
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,ii);
+ funstr=substring(funstr,ii,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ jj=ii-1+length(varname);
+ if(jj<length(funstr),
+ tmp=substring(funstr,jj,jj+1));
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,jj);
+ funstr=substring(funstr,jj,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp2=tmp2+substring(funstr,0,ii-1)+repstr;
+ funstr=substring(funstr,jj,length(funstr));
+ );
+ );
+ );
+ funstr=tmp2+funstr;
+ funstr;
+);
+
+MeasureDepth(list):=(
+ regional(tmp,Depth,Flg);
+ Flg=0;
+ Depth=0;
+ if(ispoint(list), // 15.01.22
+ Depth=0;
+ Flg=1;
+ ,
+ tmp=list_1;
+ );
+ repeat(4,
+ if(Flg==0,
+ if(islist(tmp),
+ tmp=tmp_1;
+ Depth=Depth+1;
+ ,
+ if(ispoint(tmp),Depth=Depth+1);
+ Flg=1;
+ );
+ );
+ );
+ Depth;
+);
+
+Flattenlist(pltlist):=(
+//help:Flattenlist([[2,3],[[1,2],[5,6]]]);
+ regional(Out,nn,Dt,ii,tmp,flg);
+ Out=[];
+ if(MeasureDepth(pltlist)==1,
+ Out=[pltlist];
+ ,
+ forall(1..length(pltlist),nn,
+ Dt=pltlist_nn;
+ if(MeasureDepth(Dt)<2,
+ Out=append(Out,Dt);
+ ,
+ forall(1..length(Dt),ii,
+ tmp=Flattenlist(Dt_ii);
+ Out=concat(Out,tmp);
+ );
+ );
+ );
+ );
+ Out;
+);
+
+Divoptions(options):=(
+//help:Divoptions(options);
+ regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy,flg,tmp,tmp1);
+ Ltype="dr"; // 2015.01.13
+ Noflg=0;
+ Inflg=0;
+ Outflg=0;
+ eqL=[];
+ realL=[];
+ strL=[];
+ opstr="";
+ opcindy="";
+ forall(options,
+ flg=0;
+ if(flg==0,
+ if(isreal(#) % ispoint(#) % islist(#),
+ realL=append(realL,#);
+ opstr=opstr+","+text(#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"=")>0,
+ eqL=append(eqL,#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"no")+indexof(#,"No")>0,
+ if(indexof(#,"tex")>0,Noflg=1);
+ if(indexof(#,"disp")>0,Noflg=2);
+ if(indexof(#,"data")>0,Noflg=3);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"out")+indexof(#,"Out")>0,
+ if(indexof(#,"-")==0,
+ Outflg=1;
+ ,
+ Outflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"in")+indexof(#,"In")>0,
+ if(indexof(#,"-")==0,
+ Inflg=1;
+ ,
+ Inflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp=substring(#,0,2);
+ tmp1=indexof(tmp,"dr")+indexof(tmp,"Dr");
+ tmp1=tmp1+indexof(tmp,"da")+indexof(tmp,"Da");
+ tmp1=tmp1+indexof(tmp,"id")+indexof(tmp,"Id");
+ tmp1=tmp1+indexof(tmp,"do")+indexof(tmp,"Do");
+ tmp1=tmp1+indexof(tmp,"dp")+indexof(tmp,"Dp");
+ if(tmp1>0,
+ Ltype=#;
+ flg=1;
+ );
+ if(flg==0,
+ strL=append(strL,#);
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ );
+ if(indexof(opcindy,"color->")==0,// 16.10.07from
+ opcindy=opcindy+",color->[0,0,0]";
+ );
+ [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy];
+);
+
+Dotprod(vec1,vec2):=(
+//help:Dotprod(vec1,vec2);
+ regional(v1,v2,tmp);
+ if(ispoint(vec1),v1=vec1.xy,v1=vec1);
+ if(ispoint(vec2),v2=vec2.xy,v2=vec2);
+ v1*v2;
+);
+
+Crossprod(a,b):=(
+//help:Crossprod(vec1,vec2);
+ regional(tmp1,tmp2,tmp3,Out);
+ if(length(a)==3,
+ tmp1=a_2*b_3-a_3*b_2;
+ tmp2=a_3*b_1-a_1*b_3;
+ tmp3=a_1*b_2-a_2*b_1;
+ Out=[tmp1,tmp2,tmp3];
+ ,
+ Out=a_1*b_2-a_2*b_1;
+ );
+ Out;
+);
+
+Ptstart(Fig):=(
+//help:Ptstart("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21
+ tmp_1;
+);
+
+Ptend(Fig):=(
+//help:Ptend("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_(length(tmp)); // 15.04.12
+);
+
+Numptcrv(Fig):=(
+//help:Numptcrv("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23
+ length(tmp);
+);
+
+Ptcrv(Num,Fig):=(
+//help:Ptcrv(10,"gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_Num;
+);
+
+Invert(Fig):=(
+//help:Invert("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27
+ reverse(tmp);
+);
+Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 16.01.27
+Invert(nm,Fig,options):=(
+//help:Invert("1","gr1");
+ regional(name,tmp);
+ name="-inv"+nm;
+ tmp=Invert(Fig);
+ Listplot(name,tmp,options);
+);// upto 16.01.27
+
+Paramoncrv(pP,Gdata):=(
+ regional(Tmp,PtL);
+// Eps=10^(-8);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ Tmp=Nearestpt(pP,PtL);
+ Tmp_2;
+);
+
+ParamonCurve(pP,nN,plist):=(
+//help:ParamonCurve(A,10,"gr1");
+ regional(PtL,Out,Pa,Pb,vV,vW,sS);
+ if(isstring(plist),PtL=parse(plist),PtL=plist);
+ PtL=apply(PtL,LLcrd(#));//16.10.16
+ if(nN==length(PtL),
+ Out=nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ vV=Pb-Pa;
+ vW=pP-Pa;
+ sS=vV*vW/|vV|^2;
+ sS=min([max([sS,0]),1]);
+ Out=nN+sS;
+ );
+ Out;
+);
+
+Pointoncrv(tT,PtL):=PointonCurve(tT,PtL);
+PointonCurve(tT,Gdata):=(
+//help:PointonCurve(20.5,"gr1");
+ regional(Out,Eps,nN,sS,Pa,Pb,PtL);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ if(length(PtL)==1,PtL=PtL_1);
+ Eps=10^(-4);
+ nN=floor(tT+Eps);
+ sS=max([tT-nN,0]);
+ if(nN==length(PtL),
+ Out=PtL_nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ Out=(1-sS)*Pa+sS*Pb;
+ );
+ Out;
+);
+
+Koutenseg(pA,pB,pC,pD):=Koutenseg(pA,pB,pC,pD,[]);
+Koutenseg(pA,pB,pC,pD,options):=(
+ regional(Eps0,Eps,Eps2,pV,Sv2,Out,pP,pQ,Flg,p1,p2,q1,q2,
+ em1,eM1,em2,eM2,rT,Tmp1,Tmp2);
+ Eps0=10^(-4);
+ pV=pB-pA;
+ Sv2=|pV|;
+ pP=pC-pA; pQ=pD-pA;
+ Eps=10^(-3);
+ Eps2=0.2;
+ Tmp1=0;
+ forall(options,
+ if(Tmp1==0,
+ Eps=#;
+ Tmp1=1;
+ ,
+ Eps2=#;
+ );
+ );
+ Flg=0;
+ if(Sv2<10^(-3),
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ Eps=min([Eps2,Eps/Sv2]);
+ p1=pP*pV/Sv2^2;
+ p2=[pP_2,-pP_1]*pV/Sv2^2;
+ q1=pQ*pV/Sv2^2;
+ q2=[pQ_2,-pQ_1]*pV/Sv2^2;
+ em1=-Eps; eM1=1+Eps;
+ em2=-Eps; eM2=Eps;
+ if(max([p1,q1])<em1 % min([p1,q1])>eM1,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(max([p2,q2])<em2 % min([p2,q2])>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & p2*q2<0,
+ rT=p1-(q1-p1)/(q2-p2)*p2;
+ if(rT>em1 & rT<eM1,
+ if(rT>-Eps0 & rT<1+Eps0,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,0];
+ ,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,1];
+ );
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ );
+ if(Flg==0 & (p1 > -Eps0 & p1 < 1 + Eps0 & p2 > -Eps0 & p2 < Eps0),
+ rT= p1;
+ Tmp1=pA+rT*pV;
+ Out= [Tmp1, rT, 0];
+ Flg=1;
+ );
+ if(Flg==0 & (q1 > -Eps0 & q1 < 1 + Eps0 & q2 > -Eps0 & q2 < Eps0),
+ rT= q1;
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,0];
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([q1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & (q1<em1 % q1>eM1% q2<em2 % q2>eM2),
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ if(Flg==0,
+ if(abs(p2)<abs(q2),
+ rT=min([max([p1,0]),1]);
+ ,
+ rT=min([max([q1,0]),1]);
+ );
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ );
+ Out;
+);
+
+IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]);
+IntersectcrvsPp(Gr1,Gr2,options):=(
+//help:IntersectcrvsPp("gr1","pa1");
+ regional(Out,Eps,Eps2,Eps0,Flg,Data1,Data2,
+ Tmp1,Tmp2,Tmp3,Tmp,KL1,KL2,pA,pB,Ni,Nj,
+ pP,pQ,rT,Flg,eqL,realL,opstr,Dif);
+ Eps=10^(-4);
+ Eps2=0.1;
+ Dif=0.05; // 2015.05.31
+ Flg=0;
+ Tmp1=Divoptions(options); //
+ eqL=Tmp1_5;
+ realL=Tmp1_6;
+ opstr=Tmp1_(length(Tmp1));
+ forall(eqL,
+ if(substring(#,0,1)=="D",
+ Tmp1=indexof(#,"=");
+ Dif=parse(substring(#,Tmp1,length(#)));
+ );
+ );
+ Tmp1=length(realL);
+ if(Tmp1>0,
+ Eps=realL_1;
+ if(Tmp1>1,
+ Eps2=realL_2;
+ );
+ );
+ Flg=0;
+ if(isstring(Gr1),Data1=parse(Gr1),Data1=Gr1);
+ if(isstring(Gr2),Data2=parse(Gr2),Data2=Gr2);
+ if(MeasureDepth(Data1)==2,Data1=Data1_1);
+ if(MeasureDepth(Data2)==2,Data2=Data2_1);
+ Data1=apply(Data1,LLcrd(#));
+ Data2=apply(Data2,LLcrd(#));
+ if(length(Data1)==length(Data2),
+ Tmp1=Reverse(Data2);
+ Eps0=10^(-6);
+ Tmp2=0;
+ forall(1..length(Data1),
+ Tmp2=Tmp2+abs(Data1_#-Data2_#);
+ );
+ Tmp3=0;
+ forall(1..length(Data1),
+ Tmp3=Tmp3+abs(Data1_#-Tmp1_#);
+ );
+ if(Tmp2<Eps0 % Tmp3<Eps0,
+ Out=[];
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ KL1=[];
+ KL2=[];
+ forall(1..(length(Data1)-1),Ni,
+ pA=Data1_Ni;
+ pB=Data1_(Ni+1);
+ forall(1..(length(Data2)-1),
+ pP=Data2_#; pQ=Data2_(#+1);
+ Tmp=Koutenseg(pA,pB,pP,pQ,[Eps,Eps2]);
+ if(Tmp!=["inf","inf"],
+ if(Tmp_3==0,
+ Tmp1=[Tmp_1,Tmp_2,Ni,#];
+ KL1=concat(KL1,[Tmp1]);
+ ,
+ Tmp2=[Tmp_1,Tmp_2,Ni,#];
+ KL2=concat(KL2,[Tmp2]);
+ );
+ );
+ );
+ );
+ Out=[];
+ if(length(KL1)>0,
+ Tmp=KL1_1;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Ni=Tmp_3;
+ Nj=Tmp_4;
+ Tmp=[pP,Ni+rT,Nj];
+ Out=[Tmp];
+ );
+ forall(2..length(KL1),Ni,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Tmp1=Tmp_3;
+ Tmp2=Tmp_4;
+ Tmp=[pP,Tmp1+rT,Tmp2];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ forall(1..length(KL2),Ni,
+ Tmp=KL2_Ni; // 15.11.21 Usui
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL2_Ni;
+ rT=Tmp_2;
+ rT=min([max([rT,0]),1]); // 15.11.21 Usui
+ Tmp=[pP,Tmp_3+rT,Tmp_4];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ );
+ Tmp1=Out; // 15.04.06 from
+ Out=[];
+ forall(Tmp1,Tmp2,
+ Tmp3=select(1..(length(Out)),|Out_#_1-Tmp2_1|<Dif);//16.11.27
+ if(length(Tmp3)==0,
+ Out=append(Out,Tmp2);
+ ,
+ forall(Tmp3,//16.11.27
+ Out_#=(Out_#+Tmp2)/2;
+ );
+ );
+ ); // 15.04.06 upto
+ Out;
+);
+
+Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]);
+//help:Intersectcrvs("gr1","pa1");
+Intersectcrvs(Gr1,Gr2,options):=(
+ regional(tmp,tmp1,tmp2);
+ tmp1=IntersectcrvsPp(Gr1,Gr2,options);
+ apply(tmp1,#_1);
+);
+
+NearestptcrvPhy(point,PL):=(
+ regional(tmp,pP,plist);
+ pP=Pcrd(point);
+ if(isstring(PL),plist=parse(PL),plist=PL);
+ if(MeasureDepth(plist)==2,plist=plist_1);
+ plist=apply(plist,#); // 14.12.18
+ tmp=Nearestpt(pP,plist);
+ tmp=tmp_1;
+ [tmp_1/SCALEX,tmp_2/SCALEY];
+);
+
+Nearestptcrv(point,plist):=(
+//help:Nearestptcrv(A,"gr1");
+ regional(tmp);
+ tmp=Nearestpt(point,plist);
+ tmp_1;
+);
+
+Nearestpt(point,PL2):=(
+ regional(PL1,PL,Ans,Flg,Eps,pA,Pm,Im,Sm,Nn,Ni,
+ a1,b1,a2,b2,v1,v2,x1,x2,Tmp,rT,pP,sS,Lm,Pm,Sm,Flg);
+//help:Nearestpt("gr1","gr2");
+ if(isstring(point),PL1=parse(point),PL1=point);
+ if(MeasureDepth(PL1)==2,PL1=PL1_1);
+ if(!islist(PL1_1),
+ PL1=[PL1];
+ Flg=0;
+ ,
+ Flg=1;
+ );
+ if(isstring(PL2),PL=parse(PL2),PL=PL2);
+ if(MeasureDepth(PL)==2,PL=PL_1);
+ Eps=10^(-6);
+ Ans=[PL1_1,1,PL_1,1,|PL1_1-PL_1|];
+ forall(1..length(PL1),Nn, // 16.05.04
+ pA=PL1_Nn;
+ Pm=PL_1;
+ Im=1;
+ Sm=|Pm-pA|;
+ forall(1..(length(PL)-1),Ni,
+ a1=PL_Ni_1; a2=PL_Ni_2;
+ b1=PL_(Ni+1)_1; b2=PL_(Ni+1)_2;
+ v1=b1-a1; v2=b2-a2;
+ x1=pA_1; x2=pA_2;
+ Tmp=v2^2+v1^2;
+ if(abs(Tmp)>Eps,
+ rT=(-a2*v2-v1*a1+v1*x1+x2*v2)/Tmp;
+ if(rT<-Eps,
+ pP=[a1,a2];
+ ,
+ if(rT>1+Eps,
+ pP=[b1,b2];
+ ,
+ pP=[a1+rT*v1,a2+rT*v2];
+ );
+ );
+ sS=|pP-pA|;
+ if(sS<Sm-Eps,
+ Tmp=ParamonCurve(pP,Ni,PL);
+ Pm=pP; Lm=Tmp; Sm=sS;
+ );
+ );
+ if(Sm<Ans_5, // 16.05.03from
+ Ans=[pA,Nn,Pm,Lm,Sm];
+ );
+ ); // 16.05.03upto
+ );
+ if(Flg==0,
+ Ans=Ans_(3..5);
+ );
+ Ans;
+);
+
+Derivative(fun,var,value):=(
+//help:Derivative("x^3","x",2);
+ regional(str,tmp);
+ str="d(";
+ str=str+replace(fun,var,"#")+",";
+ str=str+value+")";
+ tmp=Pcrd([1,parse(str)]); // 14.11.08
+ tmp_2;
+);
+
+Integrate(pltdata,range):=Integrate(pltdata,range,[]);
+Intergrate(Arg1,Arg2,Arg3):=(
+ regional(pltdata,range,options,fnstr,vartr);
+ if(islist(Arg2),
+ pltdata=Arg1;
+ range=Arg2;
+ options=Arg3;
+ Integrate(pltdata,range,options);
+ ,
+ fnstr=Arg1;
+ vastr=Arg2;
+ range=Arg3;
+ Integrate(fnstr,vastr,range,[]);
+ );
+);
+
+Integrate(pltdata,range,options):=(
+//help:Integrate("gr1",[1,3]);
+//help:Integrate("gr1",[1,3],["Rule=t"]);
+ regional(tmp,tmp1,eqL,Rule,pdata,Sm,ptP,ptQ,list,va1,va2);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ Rule="o";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Rule=substring(#,tmp,tmp+1);
+ );
+ );
+ if(Rule=="o",
+ Sm= IntegrateO(pltdata,range);
+ ,
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ list=apply(list,LLcrd(#)); // 15.09.14
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ ptP=list_#; // 15.09.14
+ ptQ=list_(#+1);
+ Sm=Sm+(ptP_2+ptQ_2)*(ptQ_1-ptP_1)/2;
+ );
+ Sm;
+ );
+);
+
+Integrate(fnstr,vastr,range,options):=(
+//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]);
+ regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2);
+ Num=100;
+ Way="t";
+ forall(options,
+ if(indexof(#,"=")>0,
+ if(indexof(#,"N=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(indexof(#,"Num=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Way=substring(#,tmp,tmp+1);
+ );
+ );
+ );
+ Sm=0;
+ if(Way=="t",
+ forall(1..Num,
+ Lx=range_1+(range_2-range_1)*(#-1)/Num;
+ Rx=range_1+(range_2-range_1)*#/Num;
+ va1=parse(replace(fnstr,vastr,textformat(Lx,5)));
+ va2=parse(replace(fnstr,vastr,textformat(Rx,5)));
+ Sm=Sm+(va1+va2)*(Rx-Lx)/2;
+ );
+ ,
+ sx=range_1;
+ ex=range_2;
+ dx=(ex-sx)/Num;
+ xn=apply(0..Num,sx+#*dx);
+ yn=apply(xn,parse(replace(fnstr,vastr,textformat(#,5))));
+ dx=dx/2;
+ repeat(Num,s,
+ x0=xn_s;
+ x1=(xn_s+xn_(s+1))/2;
+ x2=xn_(s+1);
+ y0=yn_s;
+ y1=parse(replace(fnstr,vastr,textformat(x1,5)));
+ y2=yn_(s+1);
+ Sm=Sm+dx*(y0+4*y1+y2)/3;
+ );
+ );
+ Sm;
+);
+
+IntegrateO(p0org,p1org,p2org,p3org):=(
+ regional(p0,p1,p2,p3,pQ,pR,cc,p01,p02,
+ p11,p12,p21,p22,p31,p32, tmp);
+ if(ispoint(p0org),p0=p0org.xy,p0=p0org); // 16.03.10
+ if(ispoint(p1org),p1=p1org.xy,p1=p1org); // 16.03.16
+ if(ispoint(p2org),p2=p2org.xy,p2=p2org);
+ if(ispoint(p3org),p3=p3org.xy,p3=p3org);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp=tmp/20;
+);
+IntegrateO(pltdata,rangeorg):=(
+//help:IntegrateO("gr1",[0,2]);
+ regional(tmp,tmp1,tmp2,pdata,va1,va2,list,Bzk,Bzc,range,pmflg,
+ Sm,p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ range=rangeorg;
+ pmflg=1;
+ if(range_2<range_1,
+ range=reverse(range);
+ pmflg=-1;
+ );
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ if((length(list)>0) & (list_1_1>list_(length(list))_1),
+ list=reverse(list);
+// pmflg=pmflg*(-1);
+ );
+ list=apply(list,LLcrd(#));
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ p1=list_#;
+ p2=list_(#+1);
+ if(#==1 % #==length(list)-1,
+ tmp1=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ Sm=Sm+tmp1;
+ ,
+ p0=list_(#-1);
+ p3=list_(#+2);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp1=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp1=tmp1/20;
+ Sm=Sm+tmp1;
+ );
+ );
+ if(pmflg==-1,
+ Sm=-Sm;
+ );
+ Sm;
+);
+
+Findarea(pdstr):=(
+//help:Findarea("sgABCA");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findarea(pdstr):=( // 15.11.27
+//help:Findarea("cr1");
+ regional(pd,p0,p1,p2,p3,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=pd_#;
+ p2=pd_(#+1);
+ if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1));
+ if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2));
+ tmp=IntegrateO(p0,p1,p2,p3);
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findlength(pdstr):=(
+//help:Findlength("gr1");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=|p2-p1|;
+ s=s+tmp;
+ );
+ s;
+);
+
+Inversefun(fnstr,rngstr,value):=(
+ regional(tmp,varstr,range,x1,x2,x3,va1,va2);
+ tmp=indexof(rngstr,"=");
+ varstr=substring(rngstr,0,tmp-1);
+ range=parse(substring(rngstr,tmp,length(rngstr)));
+ x1=range_1; x2=range_2;
+ repeat(15,
+ x3=(x1+x2)/2;
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)));
+ va2=parse(replace(fnstr,varstr,textformat(x3,5)));
+ if((va1>value & va2>value) % (va1<value & va2<value),
+ x1=x3;
+ ,
+ x2=x3;
+ );
+ );
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)))-value;
+ va2=parse(replace(fnstr,varstr,textformat(x2,5)))-value;
+ if(x1==range_1 % x2==range_2,
+ println("not found in ("+textformat(range_1,5)
+ +","+textformat(range_2,5)+")");
+ );
+ if(abs(va1)<=abs(va2),x1,x2);
+);
+
+Lcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=[pt.x/SCALEX,pt.y/SCALEY];
+ ,
+ tmp=pt;
+ );
+ tmp;
+);
+
+Pcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=re(pt.xy); // 15.07.24
+ ,
+ tmp=[pt_1*SCALEX,pt_2*SCALEY];
+ );
+ tmp;
+);
+
+LLcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=pt.xy
+ ,
+ tmp=pt;
+ );
+ tmp=[tmp_1/SCALEX,tmp_2/SCALEY];
+ tmp;
+);
+
+Doscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Unscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Definecolor(name,data):=(
+//help:Definecolor("mycolor",[1,1,1,0]);
+ regional(type,tmp);
+ if(length(data)>3,type="cmyk",type="rgb");
+ tmp=text(data);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="\definecolor{"+name+"}{"+type+"}{"+tmp+"}";
+ Texcom(tmp);
+);
+
+Setcolor(Par):=(
+//help:Setcolor([1,0,0,1]);
+//help:Setcolor([1,1,0]);
+ if(islist(Par),
+ if(length(Par)==3,
+ Setcolorrgb(Par); // 2015.04.28
+// KCOLOR=Par;
+ );
+ if(length(Par)==4,
+ Setcolor(Par,[]);
+ );
+ ,
+ Setcolor(Par,[]);
+ );
+);
+
+Setcolor(colorname,options):=(
+//help:Setcolor("greenyellow",0.3);
+ regional(tmp);
+ if(isstring(colorname),
+ tmp="Setcolor("+Dq+colorname+Dq;
+ if(length(options)>0,
+ tmp=tmp+","+text(options_1);
+ );
+ Com2nd(tmp+")");
+ );
+ if(islist(colorname),
+ tmp=text(colorname);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[cmyk]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+ );
+);
+
+Setcolorrgb(colorlist):=(
+// help:Setcolorrgb([0.5,0.3,0.4]);
+ regional(tmp);
+ tmp=text(colorlist);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[rgb]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+);
+
+ColorRgb2Cmyk(clr):=(
+// help:ColorRgb([0.2,0.5,0.1]);
+ regional(clrnew,tmp,black);
+ tmp=apply(clr,1-#);
+ black=min(tmp);
+ tmp=apply(clr,(1-#-black)/(1-black));
+ clrnew=append(tmp,black);
+ clrnew;
+);
+
+ColorCmyk2Rgb(clr):=(
+// help:ColorRgb([0.2,0.5,0.1,0.2]);
+ regional(clrnew,tmp,black);
+ black=clr_4;
+ tmp=apply(clr,1-min(1,#*(1-black)+black));
+ clrnew=tmp_(1..3);
+ clrnew;
+);
+
+Colorrgbhsv(rgb):=(
+ regional(varR,varG,varB,varMin,varMax,delMax,hh,ss,vv,delR,delG,delB);
+ varR = rgb_1;
+ varG = rgb_2;
+ varB = rgb_3;
+ varMin = min( [varR, varG, varB] );
+ varMax = max( [varR, varG, varB] );
+ delMax = varMax - varMin ;
+ vv = varMax;
+ if ( delMax == 0 ,
+ hh = 0 ;
+ ss = 0 ;
+ ,
+ ss = delMax / varMax;
+ delR = ( ( ( varMax - varR ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delG = ( ( ( varMax - varG ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delB = ( ( ( varMax - varB ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ if( varR == varMax ,
+ hh = delB - delG;
+ ,
+ if ( varG == varMax,
+ hh = ( 1 / 3 ) + delR - delB;
+ ,
+ if ( varB == varMax ,
+ hh = ( 2 / 3 ) + delG - delR;
+ );
+ );
+ );
+ if ( hh < 0 ,hh = hh+1);
+ if ( hh > 1 ,hh = hh-1);
+ );
+ [hh*360,ss,vv];
+);
+
+Colorhsvrgb(sL):=(
+ regional(tmp,tmp1,tmp2,tmp3,hi,ff,dL);
+ tmp=[sL_1/60,sL_2,sL_3];
+ hi=mod(floor(tmp_1),6);
+ ff=tmp_1-floor(tmp_1);
+ tmp2=tmp_3*[1-tmp_2,1-tmp_2*ff,1-tmp_2*(1-ff)];
+ tmp2=append(tmp2,tmp_3);
+ if(hi==0,dL=tmp2_[4,3,1]);
+ if(hi==1,dL=tmp2_[2,4,1]);
+ if(hi==2,dL=tmp2_[1,4,3]);
+ if(hi==3,dL=tmp2_[1,2,4]);
+ if(hi==4,dL=tmp2_[3,1,4]);
+ if(hi==5,dL=tmp2_[4,1,2]);
+ dL;
+);
+
+Colorrgbhsl(rgb):=(
+ regional(rr,gg,bb,mn,mx,delta,deltaR,deltaG,deltaB,hh,ss,ll);
+ rr = rgb_1 ;
+ gg = rgb_2 ;
+ bb = rgb_3 ;
+ mn = min([rr, gg, bb]);
+ mx = max([rr, gg, bb]);
+ delta = mx - mn;
+ ll = (mx + mn) / 2;
+ if (delta == 0,
+ hh=0;
+ ss=0;
+ ,
+ if (ll < 0.5,
+ ss = delta/ (mx + mn);
+ ,
+ ss = delta / (2 - mx - mn);
+ );
+ deltaR = (((mx - rr) / 6) + (delta / 2)) / delta;
+ deltaG = (((mx - gg) / 6) + (delta / 2)) / delta;
+ deltaB = (((mx - bb) / 6) + (delta / 2)) / delta;
+ if (rr == mx,
+ hh = deltaB - deltaG;
+ ,
+ if (gg == mx,
+ hh = (1 / 3) + deltaR - deltaB;
+ ,
+ if (bb == mx,
+ hh = (2 / 3) + deltaG - deltaR;
+ );
+ );
+ );
+ if ( hh < 0, hh = hh+1);
+ if ( hh > 1, hh = hh-1);
+ );
+ [hh*360,ss,ll];
+);
+
+Colorhslrgb(hsl):=(
+ regional(hh,ss,ll,rr,gg,bb,var1,var2);
+ hh=hsl_1/360;
+ ss=hsl_2;
+ ll=hsl_3;
+ if ( ss == 0.0,
+ rr = ll ;
+ gg = ll ;
+ bb = ll ;
+ ,
+ if ( ll < 0.5 ,
+ var2 = ll * ( 1.0 + ss );
+ ,
+ var2 = ( ll + ss ) - ( ss * ll );
+ );
+ var1 = 2.0 * ll - var2;
+ rr = hue2rgb( var1, var2, hh + ( 1.0 / 3.0 ) );
+ gg = hue2rgb( var1, var2, hh );
+ bb = hue2rgb( var1, var2, hh - ( 1.0 / 3.0 ) );
+ );
+ [rr,gg,bb];
+);
+
+hue2rgb(vv1,vv2,vh):=(
+ regional(out);
+ if ( vh < 0.0 ,vh =vh+1);
+ if ( vh > 1.0 ,vh =vh-1);
+ if ( 6.0*vh < 1.0 ,
+ out = vv1 + ( vv2 - vv1 ) * 6.0 * vh ;
+ ,
+ if( 2.0*vh < 1.0 ,
+ out = vv2;
+ ,
+ if ( 3.0*vh < 2.0 ,
+ out = vv1 + ( vv2 - vv1 ) * ( ( 2.0 / 3.0 ) - vh ) * 6.0 ;
+ ,
+ out= vv1 ;
+ );
+ );
+ );
+ out;
+);
+
+Colorrgbhwb(sL):=(
+ regional(dl1,dl2,dl3);
+ dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1;
+ dl2 = min(sL);
+ dl3 = 1 - max(sL);
+ dL= [dl1, dl2 , dl3 ];
+);
+
+Colorhwbrgb(sLorg):=(
+ regional(sL,tmp,tmp1,tmp2,tmp3,ratio,ff,ii,vv,nn,dL,flg);
+ sL=sLorg;
+ sL=[sL_1/360,sL_2,sL_3];
+ ratio = sL_2 + sL_3;
+ // sL_2 + sL_3 cant be > 1
+ if (ratio > 1.,
+ sL_2 =sL_2 / ratio;
+ sL_3 = sL_3 / ratio;
+ );
+ ii = floor(6 * sL_1);
+ vv = 1 - sL_3;
+ ff = 6 * sL_1 - ii;
+ if(mod(ii,2)==1,ff = 1 - ff);
+ nn = sL_2 + ff * (vv - sL_2); // linear interpolation
+ tmp=[[vv,nn,sL_2],[nn,vv,sL_2],[sL_2,vv,nn],
+ [sL_2,nn,vv],[nn,sL_2,vv],[vv,sL_2,nn],[vv,nn,sL_2]];
+ flg=0;
+ forall(0..6,
+ if(flg==0 & ii == # ,
+ dL=tmp_(#+1);
+ flg=1;
+ );
+ );
+ dL;
+);
+
+Colorhslhsv(sL):=(
+ regional(dl1,dl2,dl3,dL);
+ dl1=sL_1;
+ if(sL_3 == 0,
+ // no need to do calc on black
+ // also avoids divide by 0 error
+ dL= [0, 0, 0];
+ ,
+ sL_3 = sL_3 * 2;
+ if(sL_3 <= 1,sL_2 = sL_2 * sL_3,sL_2 = sL_2 * (2 - sL_3));
+ dl3 = (sL_3 + sL_2) / 2;
+ dl2 = (2 * sL_2) / (sL_3 + sL_2);
+ dL = [dl1, dl2, dl3];
+ );
+ dL;
+);
+
+Colorcode(src,dest,sL):=(
+//help:Colorcode("rgb","cmyk",[1,0.5,0]);
+ regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg);
+ regional(dl1,dl2,dl3);
+ if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL));
+ if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL));
+ if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL));
+ if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL));
+ if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL));
+ if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL));
+ if(src=="hsl" & dest=="hsv", dL=Colorhslhsv(sL));
+ if(src=="hsv" & dest=="hsl",
+ dl1 = sL_1;
+ dl3 = (2 - sL_2) * sL_3;
+ dl2 = sL_2 * sL_3;
+ if(dl3 <= 1,dl2 = dl2/dl3,dl2=dl2/(2 - dl3));
+ dl3 =d l3/ 2;
+ dL = [dl1, dl2 , dl3 ];
+ );
+
+ if(src=="rgb" & dest=="cmyk",
+ tmp=apply(sL,1-#);
+ black=min(tmp);
+ tmp=apply(sL,(1-#-black)/(1-black));
+ dL=append(tmp,black);
+ );
+ if(src=="cmyk" & dest=="rgb",
+ black=sL_4;
+ tmp=apply(sL,1-min(1,#*(1-black)+black));
+ dL=tmp_(1..3);
+ );
+ if(src=="hsv" & dest=="cmyk",
+ tmp=Colorcode("hsv","rgb",sL);
+ dL=Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsv",
+ tmp=Colorcode("cmyk","rgb",sL);
+ dL=Colorcode("rgb","hsv",tmp);
+ );
+
+ if(src=="hsv" & dest=="hwb",
+ tmp = Colorcode("hsv","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsv",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsv",tmp);
+ );
+ if(src=="hsl" & dest=="hwb",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsl",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="hsl" & dest=="cmyk",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="hwb" & dest=="cmyk",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsl",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="cmyk" & dest=="hwb",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hsb" & dest=="rgb",dL=Colorcode("hsv","rgb",sL));
+ if(src=="rgb" & dest=="hsb",dL=Colorcode("rgb","hsv",sL));
+
+ if(src=="hsb" & dest=="hsl",dL=Colorcode("hsv","hsl",sL));
+ if(src=="hsl" & dest=="hsb",dL=Colorcode("hsl","hsv",sL));
+
+ if(src=="hsb" & dest=="hwb",dL=Colorcode("hsv","hwb",sL));
+ if(src=="hwb" & dest=="hsb",dL=Colorcode("hwb","hsv",sL));
+
+ if(src=="hsb" & dest=="cmyk",dL=Colorcode("hsv","cmyk",sL));
+ if(src=="cmyk" & dest=="hsb",dL=Colorcode("cmyk","hsv",sL));
+
+ dL;
+);
+
+Addcolor(cmdorg,list):=(
+//help:Addcolor("Plotdata('1','x^2','x',[])",[1,1,0]);
+ regional(rgb,cmyk,cmd,tmp,tmp1,tmp2,tmp3,tmp4);
+ cmd=replace(cmdorg,"'",Dq);
+ if(length(list)==3,
+ rgb=list;
+ cmyk=Colorcode("rgb","cmyk",list);
+ ,
+ cmyk=list;
+ rgb=Colorcode("cmyk","rgb",list);
+ );
+ tmp1="color->"+text(rgb);
+ tmp2="Setcolor("+text(cmyk)+");";
+ tmp3=substring(cmd,0,length(cmd)-2);
+ tmp=substring(tmp3,length(tmp3)-1,length(tmp3));
+ if(tmp!="[",
+ tmp3=tmp3+",";
+ );
+ tmp3=tmp3+Dq+tmp1+Dq+"])";
+ parse(tmp2);
+ parse(tmp3);
+ Setcolor("black");
+);
+
+Colorinfile(filename,clrf,clrt):=(
+ regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body);
+ if(length(clrf_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrf,text(#));
+ cstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ if(length(clrt_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrt,text(#));
+ chstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ tmp1=load(filename);
+ tmp=tokenize(tmp1,"{\unitlength");
+ head=tokenize(tmp_1,"%%%");
+ head=head_(2..length(head));
+ head=apply(head,"%%%"+#);
+ tmp2=tmp_2;
+ forall(1..5,
+ tmp2=replace(tmp2,cstrL_#,chstrL_#);
+ );
+ body=tokenize(tmp2,"%");
+ body_1="{\unitlength"+body_1;
+ body=apply(body,#+"%");
+ body=body_(1..(length(body)-1));
+ tmp=replace(filename,".tex","new.tex");
+ SCEOUT=openfile(tmp);
+ forall(head,
+ println(SCEOUT,#);
+ );
+ forall(1..length(body),
+ tmp=body_#;
+ if(#<length(body),
+ println(SCEOUT,tmp);
+ ,
+ print(SCEOUT,tmp)
+ );
+ );
+ closefile(SCEOUT);
+);
+
+GetLinestyle(str,name):=(
+ regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg);
+ Ltype=-1;
+ Dop="";
+ tmp1=indexof(str,",");
+ if(tmp1>0,
+ Dop=","+substring(str,tmp1,length(str));
+ );
+ noflg=parse(substring(str,0,1));
+ if(substring(name,0,3)=="sub",subflg=1,subflg=0); // 16.02.29
+ tmp1=substring(str,1,3);
+ if(tmp1=="dr" % tmp1=="Dr",
+ Ltype=0;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Drwline(name+Dop);
+ );
+ );
+ if(tmp1=="da" % tmp1=="Da",
+ Ltype=1;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dashline(name+Dop);
+ );
+ );
+ if(tmp1=="id" % tmp1=="Id",
+ Ltype=2; // 15.11.09
+ if(noflg==0 & subflg==0, // 16.02.29
+ Invdashline(name+Dop);
+ );
+ );
+ if(tmp1=="do" % tmp1=="Do",
+ Ltype=3;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dottedline(name+Dop);
+ );
+ );
+ if(tmp1=="dp" % tmp1=="Dp",
+ Ltype=0;
+ tmp1=parse(name);
+ tmp2="";
+ forall(tmp1,
+ tmp2=tmp2+textformat(#_1,5)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ if(noflg==0,
+ Drwpt(tmp2+Dop);
+ );
+ );
+ if(tmp1=="no" % tmp1=="No",
+ Ltype=10;
+ );
+ Ltype;
+);
+
+Chunderscore(str):=(
+ regional(flg,tmp,tmp1,tmp2,tmp3);
+ if(indexof(str,"]")>0,
+ tmp1=replace(str,"]",",]");
+ ,
+ tmp1=str+",";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ if(indexof(str,"]")>0,
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,"[","list(");
+ ,
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ );
+ tmp1;
+);
+
+//AddGraph(pltdata):=AddGraph("-"+pltdata,pltdata,[]);
+AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]);
+// if(isstring(Arg2),
+// AddGraph(Arg1,Arg2,[]);
+// ,
+// if(MeasureDepth(Arg2)>0,
+// Addgraph(Arg1,Arg2,[]);
+// ,
+// Addgraph("-"+Arg1,Arg1,Arg2);
+// );
+// );
+//);
+AddGraph(nm,pltdata,options):=(
+//help:AddGraph("1","imp1"); // 16.04.04
+//help:Addgraph("1",["[pt1]","gr1"],["nodisp"]);
+ regional(name,Ltype,Noflg,opcindy,pdata,fname,flg,
+ tmp,tmp1,tmp2,tmp3);
+ if(substring(nm,0,1)=="-",
+ name=substring(nm,1,length(nm));
+ ,
+ name="ad"+nm;
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_9;
+ if(isstring(pltdata),
+ pdata=parse(pltdata)
+ ,
+ if(!islist(pltdata),pdata=[pltdata],pdata=pltdata);
+ pdata=apply(pdata,parse(#));
+ ); // 15.01.22
+ pdata=Flattenlist(pdata);
+ tmp1=[];
+ forall(pdata,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ pdata=tmp1;
+ if(Noflg<3,
+ println("generate addgraph "+name);
+ tmp=name+"="+textformat(pdata,5);
+ parse(tmp);
+ if(isstring(pltdata), // 16.04.04 from
+ if(indexof(pltdata,"]")>0,
+ tmp1="list(Listplot("+substring(pltdata,1,length(pltdata));
+ tmp1=replace(tmp1,"]",",]");
+ ,
+ tmp1="Listplot("+substring(pltdata,0,length(pltdata))+",]";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,",","),Listplot(");
+ if(indexof(pltdata,"[")>0,
+ tmp1=tmp1+")";
+ );
+ GLIST=append(GLIST,name+"="+tmp1);
+ ,
+ if(MeasureDepth(pdata)==1,
+ tmp1=name+"=Listplot("+textformat(pdata,5)+")";
+ ,
+ tmp1="list(";
+ forall(1..length(pdata),
+ tmp=name+"p"+textformat(#,5)+"=";
+ if(length(pdata_#)>1, // 15.01.22
+ tmp=tmp+"Listplot("+textformat(pdata_#,5)+")";
+ ,
+ tmp=tmp+"Pointdata("+textformat(pdata_#_1,5)+")";
+ );
+ GLIST=append(GLIST,tmp);
+ tmp1=tmp1+name+"p"+textformat(#,5)+",";
+ );
+ tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ GLIST=append(GLIST,tmp1);
+ );
+ ); // 16.04.04 upto
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Joincrvs(nm,plotstrL):=Joincrvs(nm,plotstrL,[]);
+Joincrvs(nm,plotstrL,options):=(
+//help:Joincrvs("1",["sgAB","sgDCB"]);
+ regional(plotlist,PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
+ opcindy,tmp,tmp1,tmp2,str,name,Ltype,Noflg);
+ name="join"+nm;
+ plotlist=[];
+ forall(plotstrL,str,
+ if(isstring(str),
+ tmp=parse(str);
+ tmp=apply(tmp,LLcrd(#));
+ ,
+ tmp=str;
+ );
+ plotlist=append(plotlist,tmp);
+ );
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Eps=tmp1_1);
+ QdL=[];
+ forall(plotlist,Qd,
+ if(ispoint(Qd_1) % !islist(Qd_1_1),
+ QdL=concat(QdL,[Qd]);
+ ,
+ forall(Qd,
+ QdL=concat(QdL,[#]);
+ );
+ );
+ );
+ Flg=0;
+ if(length(QdL)==0,
+ PtL=[];
+ Flg=1;
+ );
+ if(Flg==0,
+ PtL=QdL_1;
+ forall(2..length(QdL),Ni,
+ Qd=QdL_Ni;
+ if(Numptcrv(Qd)>1,
+ pP=Ptend(PtL);
+ pS=Ptstart(PtL);
+ pQ=Ptstart(Qd);
+ pR=Ptend(Qd);
+ rMN=min([|pP-pQ|,|pP-pR|,|pS-pQ|,|pS-pR|]);
+ if(rMN==|pP-pR|,
+ Qd=reverse(Qd);
+ ,
+ if(rMN==|pS-pQ|,
+ PtL=reverse(PtL);
+ ,
+ if(rMN==|pS-pR|,
+ PtL=reverse(PtL);
+ Qd=reverse(Qd);
+ );
+ );
+ );
+ );
+ if(rMN>Eps,
+ PtL=concat(PtL,Qd);
+ ,
+ PtL=concat(PtL,Qd_(2..length(Qd)));
+ );
+ );
+ );
+ if(Noflg<3,
+ println("generate joincurve "+name);
+ tmp1=apply(PtL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1="";
+ forall(plotstrL,
+ tmp1=tmp1+#+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ GLIST=append(GLIST,name+"=Joincrvs("+tmp1+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PtL;
+);
+
+Partcrv(nm,pA,pB,PkLstr):=Partcrv(nm,pA,pB,PkLstr,[]);
+Partcrv(nm,pA,pB,PkLstr,options):=(
+//help:Partcrv("1",A,B,"sgABC");
+//help:Partcrv("1",1.3,2.5,"sgABC");
+ regional(PkL,Ans,Eps,Npt,Out1,Out2,tmp,tmp1,Flg,nS,nE,PPL,pP,
+ opcindy,Ta,Tb,name,Ltype,Noflg,DepthFlg);
+ name="part"+nm;
+ if(isstring(PkLstr),PkL=parse(PkLstr),PkL=PkLstr);
+ DepthFlg=0;
+ if(MeasureDepth(PkL)==2,
+ PkL=PkL_1;
+ DepthFlg=1;
+ );
+ PkL=apply(PkL,LLcrd(#));
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ Flg=0;
+ if(isreal(pA),
+ if(pA>pB+Eps,
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv("",pA,Npt,PkLstr,["nodata"]);
+ Out2=Partcrv("",1,pB,PkLstr,["nodata"]);
+ tmp=Ptstart(PkL)-Ptend(PkL);
+ if(|tmp|<Eps,
+ Ans=Joincrvs("",[Out1,Out2],["nodata"]);
+ ,
+ Ans=[apply(Out1,Pcrd(#)),apply(Out2,Pcrd(#))];
+ );
+ Flg=1;
+ );
+ if(Flg==0,
+ nS=ceil(pA);
+ nE=floor(pB);
+ PPL=[];
+ if(pA<nS-Eps,
+ pP=(nS-pA)*PkL_(nS-1)+(1-nS+pA)*PkL_nS;
+ PPL=[pP];
+ );
+ PPL=concat(PPL,PkL_(nS..nE));
+ if(pB>nE+Eps,
+ pP=(1-pB+nE)*PkL_nE+(pB-nE)*PkL_(nE+1);
+ PPL=concat(PPL,[pP]);
+ );
+ Ans=PPL;
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp=Nearestpt(LLcrd(Pcrd(pA)),PkL);
+ Ta=tmp_2;
+ tmp=Nearestpt(LLcrd(Pcrd(pB)),PkL); // 15.09.12
+ Tb=tmp_2;
+ Ans=Partcrv("",Ta,Tb,PkL,["nodata"] );
+ Ans=apply(Ans,Pcrd(#));
+ );
+ if(Noflg<3,
+ println("generate partcrv "+name);
+ tmp1=apply(Ans,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST, // 16.04.03
+ if(DepthFlg==0,
+ tmp=PkLstr;
+ ,
+ tmp=PkLstr+"(1)";
+ );
+ tmp1=name+"=Partcrv("+textformat(Lcrd(pA),5)
+ +","+textformat(Lcrd(pB),5)+","+tmp+")"; // 16.04.03
+ GLIST=append(GLIST,tmp1);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Ans;
+);
+
+Opcrvs(num,Fig):=Opcrvs(num,Fig,["nodisp"]);
+Opcrvs(num,Fig,options):=(
+ //help:Subgraph(2,"grfs");
+ regional(name,tmp,tmp1);
+ name="-"+Fig+text(num);
+ tmp=Fig+"_"+text(num);
+ tmp1=parse(tmp);
+ Listplot(name,tmp1,options);
+);
+
+
+Pointdata(nm,list):=Pointdata(nm,list,[]);
+Pointdata(nm,list,options):=(
+//help:Pointdata("1",[2,4],["Size=5"]);
+//help:Pointdata("2",[[2,3],[4,1]]);
+ regional(name,nameL,ptlist,opstr,opcindy,
+ eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="pt"+nm;
+ nameL=name+"L";
+ println("generate pointdata "+name);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ size="";
+ eqL=tmp_5;
+ if(length(eqL)>0,
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="s" % tmp=="S",
+ tmp=indexof(#,"=");
+ size=substring(#,tmp,length(#));
+ );
+ );
+ );
+ tmp=MeasureDepth(list);
+ if(tmp>0, // 2015.02.21
+ if(tmp==1,ptlist=list,ptlist=list_1);
+ tmp=apply(ptlist,[textformat(Pcrd(#),5)]);
+ tmp1=text(tmp);
+ tmp2=substring(tmp1,1,length(tmp1)-1);
+ tmp3=tmp1;
+ ,
+ ptlist=list;
+ tmp1=textformat(Pcrd(ptlist),5);
+ tmp2=tmp1;
+ tmp3="["+tmp1+"]";
+ );
+ tmp=name+"="+tmp1;
+ parse(tmp);
+ tmp=nameL+"="+tmp3;
+ parse(tmp);
+ if(Noflg<3,
+ GLIST=append(GLIST,name+"=Pointdata("+tmp2+")");
+ );
+ if(Noflg<2,
+ tmp=[nameL,0,opcindy];
+ GCLIST=append(GCLIST,tmp);
+ if(Noflg==0,
+ if(length(size)>0,
+ Com2nd("Setpt("+size+")");
+ );
+ thick=PenThick/PenThickInit; // 16.04.09 from
+ if(length(size)>0,tmp1=parse(size),tmp1=1);
+ tmp1=max(tmp1,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ Com2nd("Drwpt(list("+name+")"+opstr+")");
+ Setpen(thick); // 16.04.09
+ if(length(size)>0,
+ Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")");
+ );
+ );
+ );
+ ptlist;
+);
+
+Listplot(nm,list,options):=(
+//help:Listplot([A,B]);
+// help:Listplot(["A","B"]);
+//help:Listplot("1",[[2,1],[3,3]]);
+//help:Listplot(options2=["Msg=yes"]);
+ regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg);
+ if(substring(nm,0,1)=="-", // 16.01.27 from
+ name=substring(nm,1,length(nm));
+ ,
+ name="sg"+nm;
+ ); // upto
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ Msg=1; // 15.09.17
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+1); // 16.06.28
+ if(Toupper(tmp1)=="N", // 16.06.28
+ Msg=0;
+ );
+ );
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Listplot "+name);
+ );
+ if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24
+ ptlist=apply(tmp,Pcrd(#));
+ tmp=name+"="+textformat(ptlist,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp1=apply(list,Lcrd(#));
+ tmp1;
+);
+Listplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Listplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Listplot(name,list,options);
+ );
+);
+Listplot(list):=Listplot(list,[]);
+
+Lineplot(nm,list,options):=(
+//help:Lineplot([A,B]);
+//help:Lineplot("1",[[2,1],[3,3]]);
+ regional(name,Out,tmp,tmp1,opstr,opcindy,Mag,Semi,
+ Vec,pA,pB,Ltype,Noflg);
+ name="ln"+nm;
+ Mag=100;
+ Semi="";
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Mag=tmp1_1);
+ tmp1=tmp_7;
+ if(length(tmp1)>0,Semi=tmp1_1);
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ Vec= Mag/dist(pA,pB)*(pB-pA);
+ if(length(Semi)==0,
+ Out=[pA-Vec,pA+Vec];
+ ,
+ if(Semi=="+",
+ Out=[pA,pA+Vec];
+ ,
+ Out=[pA-Vec,pA];
+ );
+ );
+ if(Noflg<3,
+ println("generate Lineplot "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Lineplot("+textformat(list,5)+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Lineplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Lineplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Lineplot(name,list,options);
+ );
+);
+Lineplot(list):=Lineplot(list,[]);
+
+Plotdata(name1,func,variable):=Plotdata(name1,func,variable,[]);
+Plotdata(name1,func,variable,options):=(
+//help:Plotdata("1","sin(x)","x",["Num=100"]);
+//help:Plotdata("2","x^2","x=[-1,1]");
+//help:Plotdata("3","Fout(x)","x",["out"]);
+ regional(Fn,Va,tmp,tmp1,tmp2,eqL,name,Vname,x1,x2,dx,
+ PdL,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gr"+name1;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ Eps=10^(-3);
+ tmp=replace(func,LFmark,"");
+ tmp=tokenize(variable,"=");
+ Vname=tmp_1;
+ if(length(tmp)>1,
+ tmp=tmp_2;
+ tmp=parse(tmp);
+ x1=tmp_1;
+ x2=tmp_2;
+ ,
+ x1=XMIN;
+ x2=XMAX;
+ );
+ // dx=(x2-x2)/Num;
+ Ec=append(sort(Ec),10000);
+ Fun=Assign(func,Vname, "xx");
+ Exfun=Assign(Exfun,Vname, "xx");
+ PdL=[];
+ Ke=1;
+ forall(0..Num,
+ xx=x1+#*(x2-x1)/Num; // differs from Scilab ( / Num-1)
+ if(length(Exfun)>0,
+ tmp=parse(Exfun);
+ if(abs(tmp)<Eps,
+ if(length(Pdt)>0,
+ PdL=concat(PdL,["inf"]);
+ );
+ );
+ ,
+ Pa=[];
+ if(xx-Ec_Ke<-Eps,
+ Pa=[xx,parse(Fun)];
+ );
+ if(abs(xx-Ec_Ke)<=Eps,
+ if(length(PdL)>0,
+ if(PdL_(length(PdL))_1!="inf",
+ Pa=["inf"];
+ );
+ );
+ );
+ if(xx-Ec_Ke>Eps,
+ Pa=[xx,parse(Fun)];
+ Ke=Ke+1;
+ );
+ if(length(Pa)>0,
+ if(Pa_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(length(PdL)==0,
+ PdL=[Pa];
+ ,
+ tmp=PdL_(length(PdL));
+ if(tmp_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(dist(tmp,Pa)<Dc,
+ PdL=concat(PdL,[Pa]);
+ ,
+ PdL=concat(PdL,[["inf"],Pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(PdL),PdL_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[PdL_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(PdL),
+ tmp1=concat(tmp1,[PdL_(tmp..length(PdL))]);
+ );
+ PdL=tmp1;
+ if(length(PdL)==1,
+ PdL=PdL_1;
+ );
+ if(Noflg<3,
+ println("generate Plotdata "+name);
+ if(MeasureDepth(PdL)==1,
+ tmp1=apply(PdL,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(func,LFmark,"");
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Plotdata "+name);
+ tmp=name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Plotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Paramplot(name1,funstr,variable):=Paramplot(name1,funstr,variable,[]);
+Paramplot(name1,funstr,variable,options):=(
+//help:Paramplot("1","[2*cos(t),sin(t)]","t=[0,2*pi]");
+ regional(name,Out,tmp,tmp1,tmp2,vname,func,str,Rng,Num,
+ Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gp"+name1;
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ tmp=indexof(variable,"=");
+ vname=substring(variable,0,tmp-1);
+ str=substring(variable,tmp,length(variable));
+ Rng=parse(str);
+ t1=Rng_1; t2=Rng_2;
+ dt=(t2-t1)/Num;// differs from Scilab ( / Num-1)
+ func=Assign(funstr,vname,"tt");
+ Out=[];
+ Ec=append(sort(Ec),10000);
+ ke=1;
+ forall(0..Num,
+ pt=[];
+ tt=Rng_1+#*dt;
+ if(tt-Ec_ke<-Eps,
+ pa=parse(func);
+ );
+ if(abs(tt-Ec_ke)<=Eps,
+ if(length(Out)>0,
+ if(Out_(length(Out))_1!="inf",
+ pa=["inf"];
+ );
+ );
+ );
+ if(tt-Ec_ke>Eps,
+ pa=parse(func);
+ ke=ke+1;
+ );
+ if(length(pa)>0,
+ if(pa_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(length(Out)==0,
+ Out=[pa];
+ ,
+ tmp=Out_(length(Out));
+ if(tmp_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(|tmp-pa|<Dc,
+ Out=append(Out,pa);
+ ,
+ Out=concat(Out,[["inf"],pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(Out),Out_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[Out_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(Out),
+ tmp1=concat(tmp1,[Out_(tmp..length(Out))]);
+ );
+ Out=tmp1;
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ println("generate Paramplot "+name);
+ if(MeasureDepth(Out)==1,
+ tmp1=apply(Out,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(funstr,LFmark,""); // 15.11.13
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Paramplot "+name);
+ tmp=name+"=Paramplot('"+funstr+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Paramplotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Paramplot('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Circledata(cenrad):=Circledata(cenrad,[]);
+Circledata(para1,para2):=(
+//help:Circledata([A,B],["Rng=[0,pi/2]"]);
+//help:Circledata([A,B,C]);
+ regional(name,cenrad,options,str,n);
+ if(isstring(para1),
+ name=para1;
+ cenrad=para2;
+ options=[];
+ ,
+ cenrad=para1;
+ options=para2;
+ name="";// 16.10.07from
+ forall(cenrad,
+ name=name+#.name;
+ );// 16.10.07upto
+ );
+ Circledata(name,cenrad,options);
+);
+Circledata(nm,cenrad,options):=(
+ regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,
+ tmp,tmp1,tmp1,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps);
+ name="cr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Rg=[0,2*pi];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="R",
+ Rg=parse(tmp1);
+ );
+ );
+ if(length(cenrad)==2,
+ Ctr=Lcrd(cenrad_1);
+ Ptcir=Lcrd(cenrad_2);
+ ra=dist(Ctr,Ptcir);
+ ,
+ Eps=10^(-1);
+ pA=Lcrd(cenrad_1);
+ pB=Lcrd(cenrad_2);
+ pC=Lcrd(cenrad_3);
+ tmp=pB-pA;
+ tmp1=(tmp_2,-tmp_1);
+ tmp=pC-pB;
+ tmp2=(tmp_2,-tmp_1);
+ d1=det([tmp1,tmp2]);
+ d2=det([pC-pA,tmp2]);
+ if(abs(d1)<Eps & abs(d2)>10*Eps,
+ println("points are in a line");
+ ra=0;
+ ,
+ Ctr=1/2*(pA+pB)+1/2*d2/d1*tmp1;
+ ra=|pA-Ctr|;
+ tmp=name+"center="+Ctr;
+ parse(tmp);
+ Defvar(name+"center",Ctr);
+ );
+ );
+ if(ra>0,
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ ,
+ Out=Lineplot("1",[pA,pB],["nodata"]);
+ );
+ if(Noflg<3,
+ println("generate Circledata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ if(length(cenrad)==2,
+ tmp=name+"=Circledata("+cenrad+opstr+")";
+ ,
+ if(ra>0,
+ tmp=name+"=Circledata(["+Ctr+","+cenrad_1+"]"+opstr+")";
+ ,
+ tmp=name+"=Lineplot("+cenrad_1+","+cenrad_2+")";
+ );
+ );
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata():=(
+ regional(pA,pB);
+ pA=LLcrd((SW+NE)/2); // 15.09.17
+ pB=LLcrd(NE);
+ Framedata("win",[pA,pB]);
+);
+Framedata(list):=Framedata(list,[]);
+Framedata(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Framedata(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";// 16.10.07from
+ forall(list,
+ name=name+#.name;
+ );// 16.10.07upto
+ Framedata(name,list,options);
+ );
+);
+
+Framedata(nm,list,options):=(
+//help:Framedata();
+//help:Framedata([A,B]);
+//help:Framedata("1",[A,B]);
+//help:Framedata("1",[C,dx,dy]);
+ regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy,
+ opcindy,Ltype,Noflg,cent,dx,dy);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(length(list)==2, // 15.05.12
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2);
+ ,
+ pA=Lcrd(list_1);
+ dx=list_2; dy=list_3;
+ );
+ x1=pA_1-dx; x2=pA_1+dx;
+ y1=pA_2-dy; y2=pA_2+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Framedata(nm,cent,dx,dy):=Framedata(nm,cent,dx,dy,[]);
+Framedata(nm,cent,dx,dy,options):=(
+ regional(name,Out,tmp,tmp1,x1,y1,x2,y2,Ltype,opcindy,Noflg);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ x1=cent.x-dx; x2=cent.x+dx;
+ y1=cent.y-dy; y2=cent.y+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+cent.xy+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata2(nm,list):=Framedata2(nm,list,[]);
+Framedata2(nm,list,options):=(
+//help:Framedata2("1",[A,B]);
+ regional(tmp,tmp1,pC,pB);
+ pC=(Lcrd(list_1)+Lcrd(list_2))/2;
+ pB=Lcrd(list_2);
+ Framedata(nm,[pC,pB],options);
+);
+
+Ovaldata(nm,Pdata):=Ovaldata(nm,Pdata,[]);
+Ovaldata(nm,Pdata,options):=(
+//help:Ovaldata("1",[A,B]);
+//help:Ovaldata(optios=[size]);
+ regional(name,Graph,Ctr,Dx,Dy,Rc,Out,Point,Graph,
+ opstr,opcindy,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="ov"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ Rc=0.2;
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Rc=tmp1_1*Rc);
+// if(length(tmp1)>0,Rc=tmp1_1); //15.11.15
+ Ctr=Lcrd(Pdata_1);
+ if(ispoint(Pdata_2) % islist(Pdata_2),
+ tmp1=Lcrd(Pdata_2);
+ Dx=abs(tmp1_1-Ctr_1);
+ Dy=abs(tmp1_2-Ctr_2);
+ ,
+ Dx=Pdata_2;
+ Dy=Pdata_3;
+ );
+ Point=Ctr+[Dx-Rc,Dy-Rc];
+ tmp1=Circledata("1",[Point,Point+[Rc,0]],
+ ["Rng=[0,pi/2]","Num=10","nodata"]);
+ tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]],
+ ["nodata"]);
+ tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]],
+ ["nodata"]);
+ Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]);
+ tmp1=Reflectdata("1",[Graph],[Ctr,Ctr+[0,1]],["nodata"]);
+ Graph=Joincrvs("1",[Graph,tmp1],["nodata"]);
+ tmp2=Reflectdata("2",[Graph],[Ctr,Ctr+[1,0]],
+ ["nodata"]);
+ Graph=Joincrvs("2",[Graph,tmp2],["nodata"]);
+ if(Noflg<3,
+ println("generate Ovaldata "+name);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(Ctr,5)+","+textformat(Dx,5)+","+textformat(Dy,5);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+tmp+opstr+")");
+ );
+ Graph;
+);
+
+Segmark(nm,ptlist):=Segmark(nm,ptlist,[]);
+Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);
+Drawsegmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]);
+Drawsegmark(nm,ptlist,options):=(
+//help:Segmark("1",[A,B]);
+//help:Segmark(options=["Type=1","Width=1","Size=1"]);
+ regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,
+ tmp,tmp1,tmp2);
+ name="mrk"+nm;
+ pA=ptlist_1;
+ pB=ptlist_2;
+ size=0.15;
+ wid=0.05;
+ tp=1;
+ tmp1=Divoptions(options);
+ eqL=tmp1_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ tmp1=parse(tmp1);
+ tmp=substring(#,0,1);
+ if(tmp=="S" % tmp=="s",
+ size=size*tmp1;
+ );
+ if(tmp=="W" % tmp=="w",
+ wid=wid*tmp1;
+ );
+ if(tmp=="T" % tmp=="t",
+ tp=tmp1;
+ );
+ );
+ mid=(pA+pB)/2;
+ dir=(pB-pA)/|pB-pA|;
+ nor=[-dir_2,dir_1];
+// nor=nor/|nor|;
+ if(tp==1,
+ tmp1=mid+size*nor;
+ tmp2=mid-size*nor;
+ Listplot(name,[tmp1,tmp2]);
+ );
+ if(tp==2,
+ tmp1=mid+wid*dir+size*nor;
+ tmp2=mid+wid*dir-size*nor;
+ Listplot(name+"r",[tmp1,tmp2]);
+ tmp1=mid-wid*dir+size*nor;
+ tmp2=mid-wid*dir-size*nor;
+ Listplot(name+"l",[tmp1,tmp2]);
+ );
+ if(tp==3,
+ tmp1=mid;
+ tmp2=mid+size*dir;
+ Circledata(name,[tmp1,tmp2]);
+ );
+ if(tp==4,
+ tmp=mid+size*2/sqrt(3)*nor;
+ tmp1=mid+size*dir-size/sqrt(3)*nor;
+ tmp2=mid-size*dir-size/sqrt(3)*nor;
+ Listplot(name,[tmp,tmp1,tmp2,tmp]);
+ );
+);
+
+Parabolaplot(nm,ptlist):=Parabolaplot(nm,ptlist,"[-5,5]",[]);
+Parabolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5,5]";
+ options=Arg;
+ );
+ Parabolaplot(nm,ptlist,rng,options);
+);
+Parabolaplot(nm,ptlist,rng,options):=(
+//help:Parabolaplot("1",[A,B,C]):
+//help:Parabolaplot("1",[A,B,C],"[-5,5]");
+ regional(pA,pB,pC,angle,tmp,tmp1,tmp2);
+ tmp1=Lcrd(ptlist_1);
+ tmp2=Lcrd(ptlist_3);
+ pB=Lcrd(ptlist_2);
+ tmp=(tmp2-pB)/|tmp2-pB|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pA=Rotatepoint(tmp1,-angle,pB);
+ pC=Rotatepoint(tmp2,-angle,pB);
+ tmp1=1/(2*(pA_2-pB_2));
+ tmp2=1/2*(pA_2+pB_2);
+ tmp="("+format(tmp1,5)+")*(x-("+format(pA_1,5)+"))^2";
+ tmp=tmp+"+("+format(tmp2,5)+")";
+ tmp1=parse(rng);
+ tmp1=[pA_1-(tmp1_2-tmp1_1)/2,pA_1+(tmp1_2-tmp1_1)/2];
+ tmp2="x="+textformat(tmp1,5);
+ Plotdata(nm+"para",tmp,tmp2,append(options,"nodisp"));
+ Rotatedata(nm+"para","gr"+nm+"para",angle,append(options,pB));
+);
+
+Ellipseplot(nm,ptlist):=Ellipseplot(nm,ptlist,"[0,2*pi]",[]);
+Ellipseplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[0,2*pi]";
+ options=Arg;
+ );
+ Ellipseplot(nm,ptlist,rng,options);
+);
+Ellipseplot(nm,ptlist,rng,options):=(
+//help:Ellipseplot("1",[A,B,3]);
+//help:Ellipseplot("1",[A,B,C],"[0,pi]",[options]);
+ regional(pA,pB,d,angle,f,a,b,pM,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=|tmp2-pA|+|tmp2-tmp1|;
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(d^2/4-f^2);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+","+format(pM_2,5)+"]";
+ tmp=tmp+"+["+format(a,5)+"*cos(t),"+format(b,5)+"*sin(t)]";
+ Paramplot(nm+"elp",tmp,"t="+rng,append(options,"nodisp"));
+ Rotatedata(nm+"elp","gp"+nm+"elp",angle,append(options,pA));
+);
+
+Hyperbolaplot(nm,ptlist):=Hyperbolaplot(nm,ptlist,"[-5/2,5/2]",[]);
+Hyperbolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5/2,5/2]";
+ options=Arg;
+ );
+ Hyperbolaplot(nm,ptlist,rng,options);
+);
+Hyperbolaplot(nm,ptlist,rng,optionsorg):=(
+//help:Hyperbolaplot("1",[A,B,C],["Num=200"]):
+//help:Hyperbolaplot("1",[A,B,C],"[-5,5]",["Asy=do"]);
+ regional(pA,pB,d,angle,f,a,b,pM,eqL,options,opasy,tmp,tmp1,tmp2);
+ tmp=Divoptions(optionsorg);
+ eqL=tmp_5;
+ options=optionsorg;
+ opasy=[];
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="A",
+ tmp=indexof(#,"=");
+ opasy=[substring(#,tmp,length(#))];
+ options=remove(options,[#]);
+ );
+ );
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=abs(|tmp2-pA|-|tmp2-tmp1|);
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(f^2-d^2/4);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+"+"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp1",tmp,"t="+rng,append(options,"nodisp"));
+ tmp="["+format(pM_1,5)+"-"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp2",tmp,"t="+rng,append(options,"nodisp"));
+ tmp=["gp"+nm+"hyp1","gp"+nm+"hyp2"];
+ Rotatedata(nm+"hyp",tmp,angle,append(options,pA));
+ if(length(opasy)>0,
+ Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]);
+ Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]);
+ tmp=["ln"+nm+"asy1","ln"+nm+"asy2"];
+ Rotatedata(nm+"asy",tmp,angle,append(opasy,pA));
+ );
+);
+
+Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]);
+Polygonplot(nm,ptlist,number,options):=(
+//help:Polygonplot("1",[A,B],12);
+ regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ pB=Lcrd(ptlist_2);
+ rr=|pB-pA|;
+ tmp=(pB-pA)/rr;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ ptL=[];
+ forall(0..number,
+ tmp=angle+#*2*pi/number;
+ tmp1=pA+rr*[cos(tmp),sin(tmp)];
+ if(#>0 & #<number,
+ Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07
+ //Pointdata(nm,ptL);
+ );
+ tmp2=tmp1;
+ ptL=append(ptL,tmp1);
+ );
+ Listplot(nm+"ply",ptL,options);
+);
+
+Putintersect(nm,pdata1,pdata2):=(
+//help:Putintersect("Q","gr1","gr2");
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)==1,
+ Putpoint(nm,tmp_1);
+ ,
+ if(length(tmp)==0,
+ err("No intersect point");
+ ,
+ err("Multiple intersect points");
+ println(tmp);
+ err("Choose point number");
+ );
+ );
+);
+Putintersect(nm,pdata1,pdata2,ptno):=(
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)>0,
+ Putpoint(nm,tmp_ptno);
+ ,
+ err("No intersect point");
+ );
+);
+
+Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]);
+Arrowheaddata(point,direction,options):=(
+//help:Arrowheaddata(A,B);
+ regional(list,Ookisa,Hiraki,Futosa,Houkou,Str,Flg,tmp,Ev,Nv,pA,pB,
+ pP,rF,gG,Flg,Nj,Eps,tmp1,scx,scy);
+ Eps=10^(-3);
+ pP=point;
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Str=YaStyle;
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Ookisa=Ookisa*tmp1_1);
+ if(length(tmp1)>1,
+ tmp=tmp1_2;
+ if(tmp<5,
+ Hiraki=Hiraki*tmp;
+ ,
+ Hiraki=tmp;
+ );
+ );
+ Flg=0;
+ Hiraki=Hiraki*pi/180;
+ if(isstring(direction),Houkou=parse(direction),Houkou=direction);
+ if(MeasureDepth(Houkou)==2,Houkou=Houkou_1);
+ if(islist(Houkou_1),
+// pP=Lcrd(pP);
+// pP=Doscaling(pP);
+// Houkou=Dosscaling(Houkou);
+ pP=Pcrd(pP);
+ scy=SCALEY;
+ SCALEY=1;
+ tmp=Nearestpt(pP,Houkou);
+ pA=tmp_1;
+ rF=floor(tmp_2);
+ if(rF==1,
+ if(|Ptend(Houkou)-Ptstart(Houkou)|<Eps,
+ rF=Numptcrv(Houkou);
+ );
+ );
+ gG=apply(0..10,pP+Ookisa*cos(Hiraki)*[cos(2*pi/10*#),sin(2*pi/10*#)]);
+ Flg=0;
+ forall(1..rF,Nj,
+ if(Flg==0,
+ pB=Ptcrv(rF+1-Nj,Houkou);
+ tmp=IntersectcrvsPp([pA,pB],gG);
+ if(length(tmp)>0,
+ Houkou=pP-tmp_1_1;
+ Flg=1;
+ );
+ pA=pB;
+ );
+ );
+ SCALEY=scy;
+ if(Flg==0,
+ println("Arrowhead may be too large (no intersect)");
+ Flg=2;
+ );
+ if(Flg==1,
+ Houkou=Unscaling(Houkou);
+ pP=Unscaling(pP);
+ );
+ );
+ if(Flg<2,
+// pP=Doscaling(pP);
+// Houkou=Doscaling(Houkou);
+ pP=Pcrd(pP);
+ if(!ispoint(point),
+ Houkou=Pcrd(Houkou);
+ );
+// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou));
+ Ev=-1/|Houkou|*Houkou;
+ Ev=Lcrd(Ev);
+ Nv=[-Ev_2, Ev_1];
+ if(indexof(Str,"c")>0,
+ pP=pP-0.5*Ookisa*cos(Hiraki)*Ev;
+ );
+ if(indexof(Str,"b")>0,
+ pP=pP-Ookisa*cos(Hiraki)*Ev;
+ );
+ pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv;
+ pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv;
+ list=[pA,pP,pB];
+ list=apply(list,LLcrd(#));
+// Out=Unscaling(Out);
+ list;
+ );
+);
+
+Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]);
+Arrowhead(point,Houkou,options):=(
+//help:Arrowhead(B,B-A,[1.5,30]);
+//help:Arrowhead(A,"gr1");
+ // global ArrowheadNumber
+ regional(name,Ltype,Noflg,reL,opstr,opcindy,ptstr,hostr,tmp,tmp1,list);
+ name="arh"+text(ArrowheadNumber);
+ ArrowheadNumber=ArrowheadNumber+1;
+ ptstr=textformat(point,5);
+ if(isstring(Houkou), // 15.01.11
+ tmp=parse(Houkou);
+ if(MeasureDepth(tmp)<2,
+ hostr=Houkou;
+ ,
+ hostr=Houkou+"(1)";
+ );
+ ,
+ if(ispoint(point),
+ hostr=textformat(LLcrd(Houkou),5);
+ ,
+ hostr=textformat(Houkou,5);
+ );
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ list=Arrowheaddata(point,Houkou,options);
+ if(Noflg<3,
+// println("generate Arrowhead "+name);
+ tmp1=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST,name+"=Listplot("+list+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(1)+Ltype,name);
+ ,
+// if(Noflg==1,Ltype=0);
+ Ltype=0;
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ if(Noflg==0,
+ if(length(reL)<3, // 16.04.09 from
+ forall(1..(2-length(reL)),
+ opstr=opstr+",1";
+ );
+ tmp=PenThick/PenThickInit;
+ opstr=opstr+","+text(tmp);
+ ); // 16.04.09 upto
+ Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")");
+ );
+);
+
+Arrowdata(ptlist):=Arrowdata(ptlist,[]);
+Arrowdata(Arg1,Arg2):=(
+ regional(tmp,nm,ptlist,flg,pA,pB,options);
+ flg=0;
+ if(isstring(Arg1),
+ nm=Arg1;
+ ptlist=Arg2;
+ Arrowdata(nm,ptlist,[]);
+ flg=1;
+ );
+ if(flg==0,
+ tmp=MeasureDepth(Arg1);
+ if(tmp==0,
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,[]);
+ ,
+ ptlist=Arg1;
+ options=Arg2;
+ nm=text(ArrowlineNumber);
+ ArrowlineNumber=ArrowlineNumber+1;
+ Arrowdata(nm,ptlist,options);
+ );
+ );
+);
+Arrowdata(Arg1,Arg2,options):=(
+//help:Arrowdata([A,B],[2,10]);
+ regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size,
+ flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos);
+ Retflg=0;
+ Noflg=0;
+ Ltype=0;
+ if(!isstring(Arg1),
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,options,"old");
+ Retflg=1;
+ ptlist=[pA,pB];
+ );
+ if(Retflg==0,
+ nm=Arg1;
+ ptlist=Arg2;
+ name="ar"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ realL=tmp_6;
+ strL=tmp_7;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ size=1; // 15.06.11
+ if(length(realL)>0,
+ size=realL_1;
+ );
+ tmp2=select(strL,indexof(#,"l")>0); // 16.04.09
+ if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09
+ segpos=1;
+ tmp1=tmp_5;
+ if(length(tmp1)>2,
+ segpos=tmp1_3;
+ );
+ if(Noflg<3,
+// println("generate Arrowdata "+name);
+ tmp1=apply(ptlist,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=Pcrd(ptlist_1);//16.10.20
+ tmp2=Pcrd(ptlist_2);//16.10.20
+ if(lineflg==0, // 16.04.09 from
+ tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11
+ ,
+ tmp=tmp2;
+ ); // 16.04.09 upto
+ tmp=[LLcrd(tmp1),LLcrd(tmp)];//16.10.20
+ GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ tmp=textformat(ptlist,5);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp1=indexof(tmp,"],[");
+ if(tmp1>0,
+ pA=substring(tmp,0,tmp1);
+ pB=substring(tmp,tmp1+1,length(tmp));
+ ,
+ tmp1=indexof(tmp,",");
+ pA=substring(tmp,0,tmp1-1);
+ pB=substring(tmp,tmp1,length(tmp));
+ );
+ tmp1="Lcrd("+pA+")+"
+ +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))";
+ tmp1=parse(tmp1);
+ tmp2="Lcrd("+pB+")-Lcrd("+pA+")";
+ tmp2=parse(tmp2);
+ Arrowhead(tmp1,tmp2,options);
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ ptlist;
+);
+Arrowdata(pA,pB,options,str):=(
+ regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy);
+ Astr=textformat(pA,5);
+ Bstr=textformat(pB,5);
+ name="ar"+pA.name+pB.name;
+ println("generate Arrow "+name);
+ opstr="";
+ opcindy="";
+ forall(options,
+ if(isstring(#),
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ ,
+ tmp="'"+#+"'";
+ );
+ ,
+ tmp=text(#);
+ );
+ opstr=opstr+","+tmp;
+ );
+ ptA=Lcrd(pA);
+ ptB=Lcrd(pB);
+ Arrowheaddata(ptB,ptB-ptA,options);
+ tmp="connect("+textformat([ptA,ptB],5)
+ +",linecolor->"+text(KCOLOR)+opcindy+");";
+ parse(tmp); // 14.11.17
+ Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04
+);
+
+Anglemark(plist):=Anglemark(plist,[]);
+Anglemark(Arg1,Arg2):=( // 2015.04.28 from
+ regional(nm,plist,options,tmp);
+ if(isstring(Arg1),
+ nm=Arg1;
+ plist=Arg2;
+ Anglemark(nm,plist,[]);
+ ,
+ plist=Arg1;
+ options=Arg2;
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Anglemark(nm,plist,options);
+ );
+); // upto
+Anglemark(nm,plist,options):=(
+//help:Anglemark([A,B,C],["E=\theta",2]);
+//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]);
+//help:Anglemark(options=["E/L=(sep,)letter",size]);
+ regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg);
+ name="ag"+nm;
+ ra=0.5;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ Bname="";
+ Brat=1.5;
+ Num=20;
+ if(length(realL)>0,
+ ra=realL_1*ra;
+ opstr=opstr+","+text(realL_1);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Bpos+","+Dq+"c"+Dq+","+Dq;//16.10.29
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ sab=pB-pA;
+ sac=pC-pA;
+ Rg=[arctan2(sab)+0,arctan2(sac)+0];
+ if(Rg_2<Rg_1,Rg_2=Rg_2+2*pi);
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ if(length(Bname)>0,
+ Th=(Rg_1+Rg_2)/2;
+ tmp1=Ctr+Brat*ra*[cos(Th),sin(Th)];
+ tmp="Defvar("+Dq+Bpos+"=";
+ tmp=tmp+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate anglemark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(plist,5);
+ tmp1=substring(tmp,1,length(tmp)-1);
+ tmp=name+"=Anglemark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Paramark(plist):=Paramark(plist,[]);
+Paramark(plist,options):=(
+//help:Paramark([A,B,C],["E=\theta"]);
+ regional(name,Out,pB,pA,pC,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Ltype,Noflg,eqL,realL,opcindy);
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ tmp=substring(tmp,1,length(tmp)-1);
+ name="pm"+tmp;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ ra=0.5;
+ Bname="";
+ Brat=1.2;
+ if(length(realL)>0,
+ tmp=realL_1;
+ ra=tmp*ra;
+ opstr=opstr+","+text(tmp);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ Out=[];
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|);
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|+ra*(pC-pA)/|pC-pA|);
+ Out=append(Out,pA+ra*(pC-pA)/|pC-pA|);
+ if(length(Bname)>0,
+ tmp1=pA+Brat*ra*(pB-pA)/|pB-pA|+Brat*ra*(pC-pA)/|pC-pA|;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate paramark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Paramark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+MakeBowdata(pA,pB,Hgt):=(
+ regional(angle,pB2,pH2,pC2,pC,tmp,Th1,Th2,ra,dMA);
+ angle=arctan2(pB-pA)+0;
+ pB2=Rotatepoint(pB,-angle,pA);
+ tmp=Lcrd(pA);
+ pH2=[(tmp_1+pB2_1)/2,tmp_2-Hgt];
+ dMA=|tmp-pB2|/2;
+ ra=(dMA^2+Hgt^2)/(2*Hgt);
+ pC2=[pH2_1,pB2_2+(ra-Hgt)];
+ pC=Rotatepoint(pC2,angle,pA);
+ Th1=arctan2(pA-pC2)+angle;
+ Th2=arctan2(pB2-pC2)+angle;
+ [pC,ra,Th1,Th2];
+);
+
+Bowdata(nm,plist,options):=(
+//help:Bowdata([C,A],[2,1.2,"Expr=10","da"]);
+//help:Bowdata([A,B],["Expr=t0n3,a"]);
+//help:Bowdata([A,B],["Exprrot=t0n2r,a"]);
+ regional(name,Out,pB,pA,pC,ra,tmp,tmp1,tmp2,Ltype,eqL,realL,
+ Bname,Bpos,Th,Cut,Num,Hgt,opstr,opcindy,Ydata,pC,
+ Th1,Th2,Noflg,Bops,Bmov,Tmov,Nmov,rev);
+ name="bw"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ pA=Lcrd(plist_1); pB=Lcrd(plist_2);
+ Hgt=1/2*|pB-pA|*0.2;
+ Cut=0;
+ Num=24;
+ Bname="";
+ Tmov=0;//16.11.01from
+ Nmov=0;
+ Bmov="";
+ rev=0;//16.11.01upto
+ if(length(realL)>0,
+ Hgt=realL_1*Hgt; // 15.04.12
+ if(length(realL)>1,Cut=realL_2);
+ );
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="L" % tmp=="l",
+ if(indexof(#,"rot")>0,
+ Bname="Letterrot(";
+ ,
+ Bname="Letter(";
+ );
+ );
+ if(tmp=="E" % tmp=="e",
+ if(indexof(#,"rot")>0,
+ Bname="Exprrot(";
+ ,
+ Bname="Expr(";
+ );
+ );
+ tmp=indexof(#,"=");
+ Bops=substring(#,tmp,length(#)); // 16.11.01
+ );
+ Ydata=MakeBowdata(pA,pB,Hgt);
+ pC=Ydata_1;
+ ra=Ydata_2;
+ Th=(Ydata_3+Ydata_4)*0.5;
+ BOWMIDDLE=[pC_1+ra*cos(Th),pC_2+ra*sin(Th)];
+ Bpos="md"+name; // 16.10.31from(moved)
+ tmp="Defvar("+Dq+Bpos+"="+textformat(BOWMIDDLE,5)+Dq+");";
+ parse(tmp);// 16.10.31upto(moved)
+ if(length(Bname)>0, //16.11.01from
+ tmp=indexof(Bops,",");
+ if(tmp>0,
+ tmp1=substring(Bops,0,tmp-1);
+ if(length(tmp1)>=4 & substring(tmp1,0,1)=="t" & indexof(tmp1,"n")>0,
+ Bmov=tmp1;
+ Bops=substring(Bops,tmp,length(Bops));
+ );
+ );
+ if(length(Bmov)>0,
+ tmp=indexof(Bmov,"t");
+ if(tmp>0,
+ tmp1=indexof(Bmov,"n");
+ Tmov=parse(substring(Bmov,tmp,tmp1-1));
+ tmp=indexof(Bmov,"r");
+ if(tmp>0,
+ Nmov=parse(substring(Bmov,tmp1,tmp-1));
+ rev=1;
+ ,
+ Nmov=parse(substring(Bmov,tmp1,length(Bmov)));
+ );
+ );
+ );
+ Bname=Bname+Bpos;//16.11.01
+ if(abs(Tmov)+abs(Nmov)>0,
+ tmp=Pcrd(pA)-Pcrd(pB);
+ tmp1=1/norm(tmp)*tmp;
+ tmp2=[-tmp1_2,tmp1_1];
+ tmp=MARKLEN*(Tmov*tmp1+Nmov*tmp2);
+ tmp=LLcrd(tmp);
+ Bname=Bname+"+"+text(tmp);
+ );
+ Bname=Bname+",";
+ if(indexof(Bname,"rot")>0,
+ if(rev==1,tmp=pB-pA,tmp=pA-pB);
+ Bname=Bname+textformat(tmp,5)+",";
+ ,
+ Bname=Bname+Dq+"c"+Dq+",";
+ );
+ Bname=Bname+Dq+Bops+Dq+")";
+ parse(Bname);
+ );//16.11.01upto
+ if(Cut==0,
+ Th1=Ydata_3;
+ Th2=Ydata_4;
+ Out=[];
+ forall(0..Num,
+ tmp=Th1+#*(Th2-Th1)/Num;
+ Out=append(Out,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ ,
+ Th1=Ydata_3;
+ Th2=Th-Cut/(2*ra);
+ tmp1=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp1=append(tmp1,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Th1=Th+Cut/(2*ra);
+ Th2=Ydata_4;
+ tmp2=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp2=append(tmp2,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Out=[tmp1,tmp2];
+ );
+ if(Noflg<3,
+ println("generate bowdata "+name+" and "+Bpos);//16.10.31
+ if(MeasureDepth(Out)==1,Out=[Out]);
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Bowdata("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Deqplot(nm,deq,rng,initf):=Deqplot(nm,deq,rng,Lcrd(initf)_1,initf,[]);
+Deqplot(nm,deq,rng,Arg1,Arg2):=(
+ regional(initt,initf,options);
+ if(isreal(Arg1) & length(Arg1)==1,
+ initt=Arg1;
+ initf=Arg2;
+ options=[];
+ ,
+ initf=Lcrd(Arg1);
+ initt=initf_1;
+ options=Arg2;
+ );
+ Deqplot(nm,deq,rng,initt,initf,options);
+);
+Deqplot(nm,deq,rng,initt,initf,options):=(
+ regional(name,Noflg,Ltype,eqL,opstr,opcindy,pdL,var2,deq2,rng2,initt2,initf2,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ tmp2=tmp_2;
+ tmp3=tokenize(tmp1,"`");
+ if(length(tmp3)==2,
+ if(indexof(tmp1,"[")>0,
+ Deqplot(nm,deq,rng,initt,initf,options,[2,3]);
+ ,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ tmp=tokenize(rng2,"=");
+ deq2="["+tmp_1+","+replace(tmp1,"`","]")+"`=[1,"+tmp2+"]";
+ rng2="t="+tmp_2;
+ if(isreal(initf) & length(initf)==1,
+ initf2=[initt,initf];
+ initt2=initt;
+ ,
+ initf2=Lcrd(initf));
+ initt2=initf2_1;
+ Deqplot(nm,deq2,rng2,initt2,initf2,options,[2,3]);
+ );
+ ,
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_9;
+ opstr="";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="N",
+ tmp=indexof(#,"=");
+ tmp1="N="+substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp1+"'";
+ );
+ );
+ if(Noflg<1,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ var2="d"+tmp3_1;
+ deq2="["+tmp3_1+","+var2+"]`=[";
+ tmp=replace(tmp2,tmp3_1+"`",var2);
+ deq2=deq2+var2+","+tmp+"]";
+ Deqplot(nm,deq2,rng2,initt,initf,append(options,"nodisp"),[1,2]);
+ parse(tmp);
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ parse("de"+nm);
+ );
+ );
+);
+Deqplot(nm,deq,rng,initt,initf,options,Sel):=(
+//help:Deqplot("2","y`=y*(1-y)","x",0, 0.5,["Num=100"]);
+//help:Deqplot("1","y``=-y","x",0, [1,0]);
+//help:Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",[1,0.5]);
+ regional(Ltype,Noflg,Inflg,Outflg,strL,opstr,opcindy,Num,
+ outstr,name,func,xf,yf,pdL,Eps,Inf,t1,t2,tt,Vname,dt,funP,funN,flg,
+ kl1,kl2,kl3,kl4,x0,y0,x1,y1,tmp,tmp1,tmp2);
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ eqL=tmp_5;
+ strL=tmp_7;
+// opstr=tmp_(length(tmp)-1);
+ opstr="";
+ opcindy=tmp_(length(tmp));
+ outstr="";
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="S",
+ outstr="Sci";
+ );
+ );
+ Num=50;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp2=substring(#,0,1);
+ tmp2=Toupper(tmp2);
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp2+"="+tmp1+"'";
+ if(Toupper(substring(#,0,1))=="N",
+ Num=parse(tmp1);
+ );
+ );
+ if(outstr=="Sci",
+ if(Inflg==0 & Outflg==0,Outflg=1;Inflg=1);
+ );
+ if(Noflg<3,
+ if(outstr=="Sci",
+ if(Outflg==1,
+ println("Output Deqplot "+name);
+ SCIWRLIST=append(SCIWRLIST,name);
+ );
+ if(Inflg==1,
+ println("Input Deqplot "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ ,
+ Eps=10^(-3);
+ Inf=10^3;
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ func=tmp_2;
+ tmp=indexof(tmp1,",");
+ xf=substring(tmp1,1,tmp-1);
+ yf=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(yf,"]");
+ yf=substring(yf,0,tmp-1);
+ tmp=tokenize(rng,"=");
+ Vname=tmp_1;
+ tmp=parse(tmp_2);
+ t1=tmp_1;
+ t2=tmp_2;
+ tmp="funP("+Vname+","+xf+","+yf+"):="+func+";";
+ parse(tmp);
+ tmp=tokenize(func,",");
+ tmp1="-("+substring(tmp_1,1,length(tmp_1))+")";
+ tmp2="-("+substring(tmp_2,0,length(tmp_2)-1)+")";
+ tmp="funN("+Vname+","+xf+","+yf+"):=["+tmp1+","+tmp2+"];";
+ parse(tmp);
+ dt=(t2-t1)/Num;
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ pdL=[[tt,x0,y0]];
+ flg=0;
+ forall(1..floor((t2-initt)/dt),
+ if(flg==0,
+ kl1=dt*funP(tt,x0,y0);
+ kl2=dt*funP(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funP(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funP(tt+dt,x0+kl3_1,y0+kl3_2);//16.10.14
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt+#*dt;
+ pdL=append(pdL,[tt,x0,y0]);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ flg=0;
+ forall(1..floor((initt-t1)/dt),
+ if(flg==0,
+ kl1=dt*funN(tt,x0,y0);
+ kl2=dt*funN(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funN(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funN(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt-#*dt;
+ pdL=prepend([tt,x0,y0],pdL);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ println("Generate Deqplot "+name);
+ pdL=apply(pdL,#_Sel);
+ tmp1=apply(pdL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ );
+ if(Noflg<1,
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(outstr=="Sci",
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ ,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ pdL;
+ );
+ );
+);
+
+Enclosing(nm,plist):=EnclosingS(nm,plist);
+Enclosing(nm,plist,options):=EnclosingS(nm,plist,options);
+EnclosingS(nm,plist):=EnclosingS(nm,plist,[]);
+EnclosingS(nm,plist,options):=(
+//help:Enclosing("1",["sc2","crAB","sc2","Invert(sc1)"],[pt,"dr"]);
+ regional(name,AnsL,Start,Eps,EEps,S,Flg,Fdata,Gdata,KL,pt,qt,
+ t1,t2,t3,ii,nn,tmp,tmp1,tmp2,Ltype,Noflg,realL,eqL,opstr,opcindy);
+ name="en"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ realL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ EEps=0.1;
+ Start=[];
+ Flg=0;
+ forall(realL,
+ if(isList(#) % ispoint(#),
+ Start=Lcrd(#); // 15.09.12
+ ,
+ Flg=Flg+1;
+ if(Flg==1,Eps=#);
+ if(Flg==2,EEps=#);
+ );
+ );
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ Fdata=plist_1;
+ Gdata=plist_(length(plist));
+ KL=IntersectcrvsPp(Fdata,Gdata);
+ if(length(KL)==1,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ );
+ if(length(KL)==0,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ pt=tmp_1;
+ t1=tmp_2;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ pt=tmp_3;
+ t1=tmp_4;
+ );
+ );
+ if(length(KL)>1,
+ if(Start==[],
+ err("No Start Point");
+ ,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ tmp=|pt-Start|;
+ forall(2..length(KL),ii, // 15.04.20
+ tmp1=KL_ii_1;
+ tmp2=|tmp1-Start|; // 15.04.20
+ if(tmp2<tmp,
+ pt=tmp1;
+ t1=KL_ii_2;
+ tmp=tmp2;
+ );
+ );
+ );
+ );
+// pt=Pcrd(pt); // 15.09.12
+ Start=pt;
+ AnsL=[];
+ forall(1..length(plist),nn,
+ Fdata=plist_nn;
+ if(nn>1, pt=qt);
+ if(nn==length(plist),
+ qt=Start;
+ ,
+ Flg=0;
+ Gdata=plist_(nn+1);
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ KL=IntersectcrvsPp(Gdata,Fdata);
+ if(length(KL)==1,
+ tmp=KL_1;
+ qt=KL_1_1;
+ t3=KL_1_2;
+ Flg=10;
+ );
+ if(length(KL)==0,Flg=1);
+ if(length(KL)>1,
+ tmp1=KL_1_1;
+ tmp2=KL_2_1;
+ tmp=|tmp1-tmp2|;
+ if(tmp<Eps*10, Flg=1);
+ );
+ if(Flg==1,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ qt=tmp_1;
+ t3=tmp_4;
+ Flg=10;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ qt=tmp_3;
+ t3=tmp_2;
+ Flg=10;
+ );
+ );
+ if(Flg<10,
+ t2=10^6; //%inf;
+ forall(1..length(KL),ii,
+ tmp1=KL_ii_1;
+ tmp=KL_ii_3;
+ tmp2=ParamonCurve(tmp1,tmp,Fdata);
+ tmp3=KL_ii_2;
+ if(tmp2>t1+Eps & tmp2<t2+Eps,
+ qt=tmp1;
+ t2=tmp2;
+ t3=tmp3;
+ );
+ );
+ );
+ );
+ tmp=Partcrv("",pt,qt,Fdata,["nodata"]);
+ t1=t3;
+ if(nn==1,
+ AnsL=tmp;
+ ,
+ AnsL=concat(AnsL,tmp_(2..length(tmp)));
+ );
+ );
+ AnsL=apply(AnsL,Pcrd(#)); // 15.09.12
+ AnsL_(length(AnsL))=AnsL_1;//16.10.20
+ if(Noflg<3,
+ println("generate Enclosing "+name);
+ tmp=name+"="+textformat(AnsL,5);
+ parse(tmp);
+// tmp=name+"=Enclosing(";//16.10.20from
+// tmp1="list(";
+// forall(plist,
+// tmp1=tmp1+#+",";
+// );
+// tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ tmp=apply(AnsL,LLcrd(#));
+ tmp=name+"=Listplot("+textformat(tmp,5)+")";//16.10.20upto
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp=apply(AnsL,LLcrd(#));//16.10.20
+ tmp;
+);
+
+Shade(plist):=Shade(plist,[]);
+Shade(plist,options):=(
+//help:Shade(["gr2","sg1"],[0.5]);
+//help:Shade([pointlist],[0.5]);
+ regional(tmp,tmp1,tmp2,opstr,opcindy,Str,G2,flg);
+ if(isstring(plist_1), // 16.01.24
+ println("output Shade of "+plist);
+ ,
+ println("output Shade of lists");
+ );
+ tmp=Divoptions(options);
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ flg=0;
+ forall(plist,
+ if(flg==0,
+ if(isstring(#),tmp=parse(#),tmp=#); // from 16.01.24
+ if(!islist(tmp),flg=1); upto
+ );
+ );
+ if(flg==1,
+// err("some data not defined yet");
+ ,
+ G2=Joincrvs("1",plist,["nodata"]);
+ G2=apply(G2,Pcrd(#));
+ tmp1="fillpoly("+textformat(G2,5)+opcindy+");";
+ parse(tmp1);
+ );
+ Str="Shade(";
+ tmp1="list(";
+ forall(plist,
+ if(isstring(#), // from 16.01.24
+ if(length(#)>1,
+ tmp1=tmp1+#+",";
+ ,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ ,
+ tmp1=tmp1+"Listplot("+textformat(#,5)+"),";
+ ); // upto 16.01.24
+ );
+ Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ Com2nd(Str);
+);
+
+
+//help:start();
+
+Rotatepoint(point,Theta,ctr):=(
+//help:Rotatepoint(A,2*pi/3,B);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(ctr);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ [X2,Y2];
+);
+
+Translatepoint(point,mov):=(
+//help:Translatepoint(A,[2,3]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=X1+Cx;
+ Y2=Y1+Cy;
+ [X2,Y2];
+);
+
+Scalepoint(point,ratio,center):=(
+//help:Scalepoint(A,[3,2],[0,0]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(center);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+ratio_1*(X1-Cx);
+ Y2=Cy+ratio_2*(Y1-Cy);
+ [X2,Y2];
+);
+
+Reflectpoint(point,symL):=(
+//help:Reflectpoint(A,B);
+//help:Reflectpoint(A,[[2,3]]);
+//help:Reflectpoint(A,[C,E]);\\
+ regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ [X2,Y2];
+);
+
+Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]);
+Rotatedata(nm,plist,angle,options):=(
+//help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]);
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,
+ opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="rt"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Pt=Lcrd(tmp1_1));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ if(isstring(angle),Theta=parse(angle),Theta=angle);
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Rotatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Rotatedata("+tmp1+","
+ +textformat(angle,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+translatedata(nm,plist,mov):=translatedata(nm,plist,mov,[]);
+translatedata(nm,plist,mov,options):=(
+//help:translatedata("1",["gr1"],[1,2]);
+ regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,
+ opcindy,X2,Y2,Ltype,Noflg,name);
+ name="tr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=tmp_1+Cx;
+ Y2=tmp_2+Cy;
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate translatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=translatedata("+tmp1+","+textformat(mov,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Scaledata(nm,plist,ratioV):=(
+ regional(tmp);
+ tmp=Lcrd(ratioV);
+ Scaledata(nm,plist,tmp_1,tmp_2,[]);
+);
+Scaledata(nm,plist,Arg1,Arg2):=(
+//help:Scaledata("1","crAB",3,2,[[0,0]]);
+ regional(tmp,options);
+ if(islist(Arg2),
+ tmp=Lcrd(Arg1);
+ options=Arg2;
+ Scaledata(nm,plist,tmp_1,tmp_2,options);
+ ,
+ Scaledata(nm,plist,Arg1,Arg2,[]);
+ );
+);
+Scaledata(nm,plist,rx,ry,options):=(
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name);
+ name="sc"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,
+ Pt=Lcrd(tmp1_1);
+ );
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=Cx+rx*(tmp_1-Cx);
+ Y2=Cy+ry*(tmp_2-Cy);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Scaledata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Scaledata("+tmp1+","
+ +textformat(rx,5)+","+textformat(ry,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]);
+Reflectdata(nm,plist,symL,options):=(
+//help:Reflectdata("1","crAB",[C]);
+ regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="re"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Reflectdata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Reflectdata("+tmp1+","+textformat(symL,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Mksegments():=Mksegments([]);
+Mksegments(options):=(
+//help:Mksegments();
+ regional(segstr,p,q,r,tmp1,tmp2,tmp3);
+ forall(allsegments(),seg,
+ str=text(inspect(seg,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Listplot([parse(p),parse(q)]);
+ );
+);
+
+Mkcircles():=Mkcircles([]);
+Mkcircles(options):=(
+//help:Mkcircles():
+ regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4);
+ forall(allcircles(),cir,
+ str=text(inspect(cir,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ tmp4=indexof(str,";",tmp2+1);
+ if(tmp4==0,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Circledata([parse(p),parse(q)]);
+ ,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp4-1);
+ r=substring(str,tmp4,tmp3-1);
+ Circledata([parse(p),parse(q),parse(r)]);
+ );
+ );
+);
+
+Makesciarg(arglist):=(
+ regional(str,tmpstr);
+ str="";
+ forall(arglist,
+ if(isstring(#),
+ tmpstr=Dq+#+Dq;
+ ,
+ tmpstr=textformat(#,5);
+ );
+ str=str+tmpstr+",";
+ );
+ str=substring(str,0,length(str)-1);
+ str;
+);
+
+Setax(arglist):=(
+//help:Setax(["l","x","e","y","n","O","sw"]);
+//help:Setax([7,"nw"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com1st("Setax("+tmp+")");
+);
+
+Htickmark(arglist):=(
+//help:Htickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp="";
+ tmp=Makesciarg(arglist);
+ Com2nd("Htickmark("+tmp+")");
+);
+
+Vtickmark(arglist):=(
+//help:Vtickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com2nd("Vtickmark("+tmp+")");
+);
+
+Drwxy():=(
+//help:Drwxy();
+ Com2nd("Drwxy()");
+ Addax(0); // 16.01.21
+);
+
+Drwpt(pstr):=Drawpoint(pstr);
+Drwpt(ptlist,nn):=( // 16.03.05 from
+//help:Drwpt(A);
+//help:Drwpt("[1,1],0");
+//help:Drwpt(A,0);
+//help:Drwpt([1,2],0);
+ Drawpoint(ptlist,nn);
+);
+Drawpoint(pstr):=(
+ if(isstring(pstr),
+ println("Drwpt : "+pstr);
+ Com2nd("Drwpt("+pstr+")");
+ ,
+ Drawpoint(pstr,1);
+ );
+);
+Drawpoint(ptlistorg,nn):=(
+ regional(ptlist,thick,tmp,tmp1);
+ println("Drwpt : "+text(ptlistorg));
+ if(islist(ptlistorg),
+ if(MeasureDepth(ptlistorg)==1,
+ ptlist=ptlistorg
+ ,
+ ptlist=[ptlistorg]
+ );
+ ,
+ ptlist=[ptlistorg]
+ );
+ thick=PenThick/PenThickInit;// 16.04.09 from
+ tmp1=max(TenSize/TenSizeInit,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ forall(ptlist,
+ tmp=textformat(#,5)+","+text(nn);
+ Com2nd("Drwpt("+tmp+")"); // 16.04.09
+ );
+ Setpen(thick); // 16.04.09
+);// 16.03.05 upto
+
+Addax(param):=(
+//help:Addax(0);
+ ADDAXES=text(param);
+);
+
+Expr(Pt,Dr,St):=Expr([Pt,Dr,St]);
+Expr(list):=Expr(list,[]);
+Expr(listorg,options):=( //16.10.09
+//help:Expr([A,"e","f(x)=x^2"]);
+ regional(list,str,tmp,tmp1,tmp2);
+ list=listorg;
+ forall(1..round(length(list)/3),
+ str=list_(3*#);
+ if(!isstring(str),str=format(str,5));
+ str="$"+str+"$";
+ list_(3*#)=str;
+ );
+ Letter(list,options);
+);
+
+Letter(Pt,Dr,St):=Letter([Pt,Dr,St]);
+Letter(list):=Letter(list,[]);
+Letter(list,options):=(
+//help:Letter([C,"c","Graph of f(x)"]);
+ regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy,
+ opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2);
+ tmp=Divoptions(options);
+ Noflg=tmp_2;
+ opL=select(options,indexof(#,"->")>0); //16.10.09from
+ tmp=select(opL,indexof(#,"color"));
+ size=12;
+ clr=[0,0,0];
+ bld=false;
+ ita=false;
+ aln="left";
+ forall(opL,
+ tmp=indexof(#,"->");
+ tmp1=removespace(substring(#,0,tmp-1));
+ tmp2=substring(#,tmp+1,length(#));
+ if(tmp1=="size",sz=parse(tmp2));
+ if(tmp1=="color",clr=parse(tmp2));
+ if(tmp1=="bold",bld=parse(tmp2));
+ if(tmp1=="ita",ita=parse(tmp2));
+ );//16.10.09upto
+ Off=-4;
+ Dmv=8;
+ Nj=1;
+ while(Nj+2<=length(list),
+// Pos=textformat(list_Nj,5);
+ Pos=list_Nj;
+ Dir=list_(Nj+1);
+ tmp=indexof(Dir,"s")+indexof(Dir,"n");//16.10.19from
+ if(tmp>0,
+ tmp=indexof(Dir,"w")+indexof(Dir,"e");
+ if(tmp==0,
+ Dir="c"+Dir;//16.10.08
+ );
+ );//16.10.19upto
+ Str=list_(Nj+2);
+ if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09
+ tmp=replace(Str,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ Str=replace(tmp,".y","(2)");
+ if(indexof(Str,"`")>0,
+// tmp=Dq+",Assign('"+Str+"','`',Prime()))";
+ tmp=Dq+",Assign('"+Str+"'))"; // 15.02.22
+ ,
+ tmp=Dq+","+Dq+Str+Dq+")";
+ );
+ if(Noflg==0,
+ Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10
+ );
+ if(Noflg<2,
+ Xmv=0;//16.10.13
+ Ymv=-4;
+ if(indexof(Dir,"n")>0,
+ Ymv=Dmv/2;
+ );
+ if(indexof(Dir,"s")>0,
+ Ymv=-Dmv*3/2;//16.10.13
+ );
+ if(indexof(Dir,"e")>0,
+ Xmv=Dmv/2;
+ Off=0;
+ aln="left";
+ );
+ if(indexof(Dir,"w")>0,
+ Xmv=-Dmv/2;
+ Off=0; // 16.09.30from
+ aln="right";
+ );
+ if(indexof(Dir,"c")>0,
+ Xmv=0;//16.10.13
+ Off=0;
+ if(Ymv==0,Ymv=-4);//16.10.08
+ aln="mid"; // 16.09.30upto
+ );
+ drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv],
+ size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09
+ );
+ Nj=Nj+3;
+ );
+);
+
+Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str);
+Letterrot(pt,dir,movstr,str):=(
+//help:Letterrot(C,B-A,"AB"):
+//help:Letterrot(C,B-A,0,5,"AB"):
+//help:Letterrot(C,B-A,"t0n5","AB"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Letterrot(pt,dir,tmov,nmov,str);
+);
+Letterrot(pt,dir,tmov,nmov,str):=(
+ Letter([pt,"c",str],["notex"]);
+ Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str);
+Exprrot(pt,dir,movstr,str):=(
+//help:Exprrot(C,B-A,"d"):
+//help:Exprrot(C,B-A,0,5,"d"):
+//help:Exprrot(C,B-A,"t0n5","d"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Exprrot(pt,dir,tmov,nmov,str);
+);
+Exprrot(pt,dir,tmov,nmov,str):=(
+ Expr([pt,"c",str],["notex"]);
+ Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Putpoint(name,Pt):=Putpoint(name,Pt,Pt);
+Putpoint(name,Ptinit,Pt):=(
+//help:Putpoint("A",[1,2],[1,A.y]);
+ regional(ptstr);
+ ptstr=apply(allpoints(),#.name);
+ if(!contains(ptstr,name),
+ createpoint(name,Pcrd([Ptinit_1,Ptinit_2]));
+ ,
+ ptstr=name+".xy="+textformat(Pcrd(Pt),5);
+ parse(ptstr);
+ );
+);
+
+Bezierpt(t,ptlist,ctrlist):=(
+ regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9);
+ p0=ptlist_1;
+ p3=ptlist_2;
+ p1=ctrlist_1;
+ if(length(ctrlist)==1,
+ p2=p3;
+ flg3=0;
+ ,
+ p2=ctrlist_2;
+ flg3=1;
+ );
+ if(length(p0)<3, // 15.02.08
+ p0=Lcrd(p0);
+ p3=Lcrd(p3);
+ p1=Lcrd(p1);
+ p2=Lcrd(p2);
+ );
+ p4=(1-t)*p0+t*p1;
+ p5=(1-t)*p1+t*p2;
+ p6=(1-t)*p2+t*p3;
+ p7=(1-t)*p4+t*p5;
+ p8=(1-t)*p5+t*p6;
+ p9=(1-t)*p7+t*p8;
+ if(flg3==0,p7,p9);
+);
+
+Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]);
+Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options);
+Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options);
+BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+BezierCurve(nm,ptlistorg,ctrlistorg,options):=(
+//help:Bezier("1",[A,D],[B,C]);
+//help:Bezier(options=["Num=10"]);
+ regional(name,Ltype,Noflg,opstr,opcindy,Num,
+ ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list);
+ name="bz"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Num=10;
+ tmp1=tmp_5;
+ forall(tmp1, // 14.12.31
+ if(substring(#,0,1)=="N",
+ tmp2=indexof(#,"=");
+ Num=parse(substring(#,tmp2,length(#)));
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16
+ ctrlist=[]; // 14.12.31
+ if(length(ctrlistorg)==length(ptlist)-1,
+ forall(ctrlistorg,tmp1,
+ if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1);
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ ,
+ forall(1..(length(ptlist)-1),ii,
+ tmp=ctrlistorg_((2*ii-1)..(2*ii));
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ );
+ if(!islist(Num),
+ Num=apply(ctrlist,Num);
+ );
+ list=[];
+ forall(1..(length(ptlist)-1),ii,
+ tmp1=ptlist_(ii..(ii+1));
+ tmp2=ctrlist_ii;
+ if(ii==1,st=0,st=1);
+ forall(st..Num_ii,
+ tmp=Bezierpt(#/Num_ii,tmp1,tmp2);
+ list=append(list,tmp);
+ );
+ );
+ if(Noflg<3,
+ println("generate Bezier "+name);
+ out=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(out,5);
+ parse(tmp);
+ tmp1=textformat(ptlist,5);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=textformat(ctrlist,5);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ list;
+);
+
+Readcsvsla(fname):=Readplotdigdata(fname,[]);
+Readcsvsla(fname,options):=Readplotdigdata(fname,options);
+Readplotdigdata(fname):=Readplotdigdata(fname,[]);
+Readplotdigdata(fname,options):=(
+ regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3);
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ sc=1;//10;
+ mv=[0,0];//[5,5];
+ forall(tmp1,
+ if(!islist(#),sc=#,mv=#);
+ );
+ if(indexof(fname,".")>0,
+ tmp=load(fname);
+ ,
+ tmp=load(fname+".txt");
+ );
+ cmdall=tokenize(tmp,"//");
+ dataL=[];
+ forall(2..length(cmdall),ii,
+ tmp1=parse("["+cmdall_ii+"]");
+ dataL=append(dataL,tmp1);
+ );
+ if(length(dataL_(length(dataL)))<2,
+ dataL=dataL_(1..(length(dataL)-1));
+ );
+ nd=length(dataL_1)/2;
+ npt=length(dataL);
+ ptdata=[];
+ forall(1..nd,ii,
+ tmp3=[];
+ forall(1..npt,
+ tmp1=dataL_#_(2*ii-1);
+ tmp2=dataL_#_(2*ii);
+ if(isreal(tmp1),
+ tmp3=append(tmp3,[tmp1,tmp2]);
+ );
+ );
+ ptdata=append(ptdata,tmp3);
+ );
+ tmp1=[];
+ forall(ptdata,
+ tmp=#/sc;
+ tmp=translatedata("1",[tmp],-mv,["nodata"]);
+ tmp1=append(tmp1,tmp);
+ );
+ ptdata=tmp1;
+ ptdata;
+);
+
+Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]);
+Putbezierdata(name,ptL,options):=(
+ regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs);
+ tmp=Divoptions(options);
+ psize=3;
+ Deg=3;
+ tmp1=tmp_5;
+ forall(tmp1,
+ if(substring(#,0,1)=="D",
+ tmp=indexof(#,"=");
+ Deg=parse(substring(#,tmp,length(#)));
+ );
+ if(substring(#,0,1)=="S",
+ tmp=indexof(#,"=");
+ psize=parse(substring(#,tmp,length(#)));
+ );
+ );
+ pts=[];
+ ctrs=[];
+ forall(1..length(ptL),
+ p2=ptL_#; // 16.08.16
+ if(ispoint(p2),
+ tmp1=text(p2);
+ ,
+ tmp1=name+text(#);
+ Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ inspect(parse(tmp1),"ptsize",psize);
+ pts=append(pts,parse(tmp1));
+ inspect(parse(tmp1),"color",4);
+ if(#>1,
+ p1=Lcrd(ptL_(#-1)); // 16.08.16
+ p2=Lcrd(ptL_#); // 16.08.16
+ if(Deg==3,
+ tmp=(2*p1+p2)/3;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ tmp=(p1+2*p2)/3;
+ tmp2=name+"q"+text(#-1);
+ Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16
+ inspect(parse(tmp2),"labeled",false); //15.01.22
+ Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22
+ inspect(parse(tmp2),"ptsize",psize);
+ inspect(parse(tmp2),"color",3);
+ ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]);
+ ,
+ tmp=(p1+p2)/2;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ ctrs=append(ctrs,[parse(tmp1)]);
+ );
+ );
+ );
+ [pts,ctrs,name];
+);
+
+Bezierstart(n):=( // 2016.02.26
+ BezierNumber=n;
+);
+
+Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]);
+Mkbezierptcrv(ptdata,options):=(
+ //help:Mkbezierptcrv([A,B,C,D]);
+ //help:Mkbezierptcrv([[A,B],[C,D]]);
+ //help:Mkbezierptcrv(options=["Num=10"]);
+ // global BezierNumber
+ regional(ptlist,Out,tmp,tmp1,tmp2);
+ if(isstring(ptdata),
+ ptlist=Readcsvsla(ptdata,options);
+ ,
+ ptlist=ptdata;
+ );
+ if(MeasureDepth(ptlist)==1,ptlist=[ptlist]);
+ Out=[];
+ forall(1..length(ptlist),
+ tmp=floor((BezierNumber-1)/26);// 15.02.23
+ if(tmp==0,tmp="",tmp=text(tmp));
+ tmp2=mod(BezierNumber,26);
+ if(tmp2==0,tmp2=26);
+ tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11
+ tmp2=Putbezierdata(tmp1,ptlist_#,options);
+ Bezier(tmp2,options);
+ BezierNumber=BezierNumber+1;
+ Out=append(Out,tmp2_(1..2));
+ );
+ Out;
+);
+
+Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]);
+Mkbeziercrv(nm,ptctrL,options):=(
+ //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]);
+ regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2);
+ if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL);
+ forall(1..length(ptctrLL),
+ name=nm+text(#);
+ ptlist=ptctrLL_#_1;
+ ctrlist=ptctrLL_#_2;
+ Bezier(name,ptlist,ctrlist,options);
+ );
+);
+
+Writebezier():=Writebezier(Fhead,"all");
+Writebezier(head):=Writebezier(head,"all");
+Writebezier(head,seL):=(
+//help:Writebezier(file);
+//help:Writebezier(file,"acd");
+ regional(bz,dt,name,tmp,tmp1,tmp2);
+ bz=select(GLIST,indexof(#,"=Bezier")>0);
+ tmp1=[]; // 16.04.22from
+ if(seL!="all",
+ forall(1..length(seL),
+ tmp=substring(seL,#-1,#);
+ tmp=select(bz,indexof(#,"bz"+tmp)>0);
+ tmp1=concat(tmp1,tmp);
+ );
+ bz=tmp1;// 16.04.22upto
+ );
+ dt=[head+"n",[[length(bz),0]]];
+ forall(1..length(bz),
+ tmp=indexof(bz_#,"=");
+ name=substring(bz_#,0,tmp-1);
+ tmp=indexof(bz_#,","+Dq);
+ if(tmp>0,
+ tmp1=substring(bz_#,0,tmp-1)+")";
+ ,
+ tmp1=bz_#;
+ );
+ tmp1=replace(tmp1,"Bezier(","[");
+ tmp1=replace(tmp1,"list(","[");
+ tmp1=replace(tmp1,")","]");
+ tmp1=replace(tmp1,",",".xy,");
+ tmp1=replace(tmp1,"]",".xy]");
+ tmp1=replace(tmp1,".xy,[",",[");
+ tmp1=replace(tmp1,"].xy","]");
+ tmp1=replace(tmp1,name,head+text(#));
+ parse(tmp1);
+ tmp=parse(head+text(#)+"_1");
+ dt=concat(dt,[head+text(#)+"k",tmp]);
+ tmp=parse(head+text(#)+"_2");
+ dt=concat(dt,[head+text(#)+"c",tmp]);
+ );
+ WriteOutData(head+".txt",dt);
+ dt;
+);
+
+Readbezier(file):=Readbezier(file,[]);
+Readbezier(file,optionorg):=(
+//help:Readbezier("xsr");
+//help:Readbezier(options=["Num=10","nogeo"]);
+ regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3);
+ options=optionorg;
+ tmp=Divoptions(options);
+ stL=tmp_7;
+ geo=0;
+ forall(stL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="G",geo=1);
+ options=remove(options,[#]);
+ );
+ ReadOutData(file);
+ tmp=file+"n_1_1";
+ nn=parse(tmp);
+ out=[];
+ forall(1..nn,nc,
+ tmp=file+text(nc);
+ tmp1=parse(tmp+"k");
+ tmp2=parse(tmp+"c");
+ if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from
+ if(geo==1,
+ alpha="abcdefghijklmnopqrstuvwxyz";
+ forall(1..length(tmp1),
+ tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#);
+ Putpoint(tmp,tmp1_#,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"ptsize",3);
+ tmp1_#=parse(tmp+".xy");
+ );
+ forall(1..length(tmp2),
+ tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1";
+ Putpoint(tmp,tmp2_#_1,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_1=parse(tmp+".xy");
+ tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2";
+ Putpoint(tmp,tmp2_#_2,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_2=parse(tmp+".xy");
+ );
+ BezierNumber=BezierNumber+1;
+ );
+ Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22upto
+ out=append(out,"bz"+tmp);
+ );
+ out;
+);
+
+Ospline(nm,ptlist):=Ospline(nm,ptlist,[]);
+Ospline(nm,ptlist,options):=(
+//help:Ospline("1",ptlist,[options]);
+ regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg,
+ p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ name="o"+nm;
+ if(isstring(ptlist),list=parse(ptlist),list=ptlist);
+ if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0);
+// list=apply(list,LLcrd(#));
+ ctrL=[];
+ forall(1..(length(list)-1),
+ flg=0;
+ p1=Lcrd(list_#); // 16.08.16
+ p2=Lcrd(list_(#+1)); // 16.08.16
+ if(#==1 % #==length(list)-1,
+ flg=1;
+ if(closed==0,
+ pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16
+ pR=(2*p1+p2)/3; // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ flg=2;
+ ,
+ if(#==1,
+ p0=Lcrd(list_(length(list)-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ ,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_2); // 16.08.16
+ );
+ );
+ );
+ if(flg<=1,
+ if(flg==0,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ );
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16
+ pR=p2+cc*(p1-p3); // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ );
+ );
+// list=apply(list,LLcrd(#)); // 16.08.16
+// ctrL=apply(ctrL,LLcrd(#));
+ if(closed==0, // 15.09.21
+ p1=ctrL_2_1;
+ p2=Lcrd(list_2); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_1=[pQ];
+ tmp=length(ctrL);
+ tmp1=ctrL_(tmp-1);
+ p1=ctrL_(tmp-1)_2;
+ p2=Lcrd(list_(tmp)); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_tmp=[pQ];
+ );
+ Bezier("o"+nm,list,ctrL,options);
+);
+
+CRspline(nm,ptL):=CRspline(nm,ptL,[]);
+CRspline(nm,ptL,options):=(
+ // Catmull-Rom spline
+//help:CRspline("1",[A,B,C,A]);
+ regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg);
+ name="crsp"+nm;
+ if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL);
+ ptlist=tmp_1;
+ if(length(tmp)==1,
+ cflg=1;
+ ,
+ cflg=0;
+ ctrpts=tmp_2;
+ );
+ c=1/6;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp)); // 15.03.05
+ forall(eqL,
+ if(substring(#,0,1)=="R",
+ tmp2=indexof(#,"=");
+ c=parse(substring(#,tmp2,length(#)));
+ );
+ );
+ ptlist=apply(ptlist,Lcrd(#)); // 16.08.16
+ ctrlist=[];
+ forall(1..(length(ptlist)-1),
+ if(#==1,
+ if(cflg==0,
+ tmp1=ctrpts_1;
+ ,
+ v=ptlist_2-ptlist_(length(ptlist)-1);
+ tmp1=ptlist_#+c*v;
+ );
+ ,
+ v=ptlist_(#+1)-ptlist_(#-1);
+ tmp1=ptlist_#+c*v;
+ );
+ if(#==length(ptlist)-1,
+ if(cflg==0,
+ tmp2=ctrpts_2;
+ ,
+ v=ptlist_2-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ ,
+ v=ptlist_(#+2)-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ tmp=select(options,indexof(text(#),"->")>0);
+ tmp=append(tmp,"notex"); //15.03.05
+ Pointdata(name+text(#),[tmp1,tmp2],tmp);
+ ctrlist=append(ctrlist,[tmp1,tmp2]);
+ );
+ Bezier(nm,ptlist,ctrlist,options);
+);
+
+Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]);
+//help:Beziersmooth("1",[A,B,C,A]);
+Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options);
+Bzspline(nm,ptL):=Bzspline(nm,ptL,[]);
+Bzspline(nm,ptLorg,options):=(
+ // smooth bezier
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzsp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ lstr="c"+text(#);
+ pt=ptLorg_#; // 16.08.16
+ pt1=parse("C"+text(#-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp2="C"+text(#)+"p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp2],"PointOnLine",[parse(lstr),tmp]);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ tmp1="C1p";
+ Putpoint(tmp1,(4*pt+pt1)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ if(cflg==1,
+ lstr="c1";
+ pt=ptLorg_1; // 16.08.16
+ pt1=parse("C"+text(length(ptL)-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp1="C1p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp1],"PointOnLine",[parse(lstr),tmp]);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ if(#>1 % cflg==1,
+ tmp1="c"+text(#);
+ inspect(parse(tmp1),"alpha",0.3);
+ );
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp1),"ptsize",3);
+ inspect(parse(tmp1),"color",3);
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]);
+Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options);
+Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]);
+Bzsspline(nm,ptLorg,options):=(
+ // smooth bezier with symmetric control points
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzssp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1)));
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ pt=ptL_#;
+ pt1=parse("C"+text(#-1)+"q");
+ tmp2="C"+text(#)+"p=2*pt-pt1";
+ parse(tmp2);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ Putpoint("C1p",(4*pt+pt1)/5,Lcrd(C1p)); // 16.08.16
+ inspect(C1p,"ptsize",3);
+ inspect(C1p,"color",3);
+ );
+ if(cflg==1,
+ pt=ptL_1;
+ pt1=Lcrd(parse("C"+text(length(ptL)-1)+"q")); // 16.08.16
+ tmp1="Putpoint("+Dq+"C1p"+Dq+",2*pt-pt1)"; // 16.08.16
+ parse(tmp1);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Listbspline2bz(listorg):=(
+ regional(Eps,list,pcl,ptl,ctrl,k);
+ Eps=10^(-3);
+ list=apply(listorg,Lcrd(#)); // 16.08.16
+ k=length(list);
+ if(|list_1-list_k|>Eps,
+ pcl=list;
+ pcl_1=2*list_1-list_2;
+ pcl_k=2*list_k-list_(k-1);
+ ,
+ pcl=concat(list,[list_2]);
+ );
+ ctrl=apply(2..(length(pcl)-1),[pcl_#]);
+ ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2);
+ [ptl,ctrl];
+);
+
+Bspline(nm,ctrL):=Bspline(nm,ctrL,[]);
+Bspline(nm,ctrL,options):=(
+//help:Bspline("",[A,B,C]);
+ regional(list,tmp);
+ list=Listbspline2bz(ctrL);
+ tmp=BezierCurve("b"+nm,list_1,list_2,options);
+ tmp;
+);
+
+MeetCurve(Crv,Xorg,Yorg):=(
+ regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate);
+ if(isstring(Crv),Cv=parse(Crv),Cv=Crv);
+ if(MeasureDepth(Cv)==2,Cv=Cv_1);
+ Cv=apply(Cv,LLcrd(#)); // 14.12.18
+ while(length(Cv)==1,
+ Cv=Cv_1;
+ );
+ Cv=apply(Cv,Lcrd(#));
+ tmp1=min(apply(Cv,#_1));
+ tmp2=max(apply(Cv,#_1));
+ if(isstring(Xorg),X0=parse(Xorg),X0=Xorg);
+ if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg);
+ if(X0<tmp1,
+ X0=tmp1;
+ ,
+ if(X0>tmp2,
+ X0=tmp2;
+ );
+ );
+ tmp1=select(
+ 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1);
+ tmp2=select(
+ 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1);
+ tmp2=remove(tmp2,common(tmp2,tmp1));
+ Ban=concat(tmp1,tmp2);
+ Tate=select(Ban,
+ abs(Cv_#_1-Cv_(#+1)_1)<=
+ 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2)
+ );
+ Ban=remove(Ban,Tate);
+ Ylist=[];
+ forall(Ban,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1);
+ Ylist=append(Ylist,tmp);
+ );
+ forall(Tate,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp1=min([y1,y2]);
+ tmp2=max([y1,y2]);
+ if(Y0<tmp1,
+ tmp=tmp1;
+ ,
+ if(Y0>tmp2,
+ tmp=tmp2;
+ ,
+ tmp=Y0;
+ );
+ );
+ Ylist=append(Ylist,tmp);
+ );
+ tmp=sort(Ylist,abs(#_1-Y0));
+ [X0,tmp_1];
+);
+
+PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]);
+PutonLine(name,p1org,p2org,options):=(
+//help:PutonLine("C","sgAB");
+//help:PutonLine("C",pA,pB);
+ regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ tmp1=(1-par)*p1+par*p2;
+ if(abs(dx)>abs(dy),
+ tmp=name+".x";
+ tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11upto
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ if(abs(dy)>0,
+ tmp=name+".y";
+ tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]";
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ tmp2=p1;//16.10.11
+ Putpoint(name,tmp1,tmp2);
+ );
+ );
+);
+
+PutonSeg(name,sgstr):=(
+ regional(seg,p1,p2);
+ if(isstring(sgstr),seg=parse(sgstr),seg=sgstr);
+ PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2));
+);
+PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]);
+PutonSeg(name,p1org,p2org,options):=(
+//help:PutonSeg("C","sgAB");
+//help:PutonSeg("C",pA,pB);
+ regional(par,dx,dy,p,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ PutonLine(name,p1,p2,[par]);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ p=parse(name+".xy");
+ p=LLcrd(p);
+ if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");
+ );
+ );
+ if(abs(dx)<abs(dy) & (p_2-p1_2)*(p_2-p2_2)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");//16.10.11upto
+ );
+ );
+);
+
+PutonCurve(pn,crv):=PutonCurve(pn,crv,[]);
+PutonCurve(pn,crv,options):=(
+//help:PutonCurve("A","gr1");
+ regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg);
+ if(!islist(options),optionL=[options],optionL=options);
+ leftlim=XMIN;
+ rightlim=XMAX;
+ Flg=0;
+ Msg="y";
+ forall(optionL,
+ if(isstring(#), // 16.02.10 from
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="N", Msg="n"); // 16.02.10 upto
+ ,
+ if(Flg==0,
+ leftlim=#;
+ Flg=Flg+1;
+ ,
+ rightlim=#;
+ );
+ );
+ );
+ Pmt=MeetCurve(crv,leftlim,0);
+ pstr=apply(allpoints(),textformat(#,5)); // 15.04.07
+ if(!contains(pstr,pn),
+ createpoint(pn,Pcrd(Pmt));
+ ,
+ tmp1=parse(pn+".x");
+ if(tmp1< leftlim % tmp1>rightlim,
+ if(tmp1< leftlim,tmp= leftlim, tmp=rightlim);
+ Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y");
+ ,
+ Pmt=MeetCurve(crv,pn+".x",pn+".y");
+ );
+ ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";";
+ parse(ptstr);
+ );
+ if(Msg=="y",
+ println("Put "+pn+" on Curve "+text(crv));
+ );
+);
+
+CrossPoint(name,Crv1,Crv2,range):=(
+ regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2);
+ Mx1=range_1; Mx2=range_2;
+ repeat(15,
+ Mx3=(Mx1+Mx2)/2;
+ Crs1=MeetCurve(Crv1,Mx1,0);
+ Crs2=MeetCurve(Crv2,Mx1,0);
+ Crs3=MeetCurve(Crv1,Mx3,0);
+ Crs4=MeetCurve(Crv2,Mx3,0);
+ df1=Crs1_2-Crs2_2;
+ df2=Crs3_2-Crs4_2;
+ if((df1>0 & df2>0) % (df1<0 & df2<0),
+ Mx1=Mx3;
+ ,
+ Mx2=Mx3;
+ );
+ );
+ Putpoint(name,Crs1);
+);
+
+Setscaling(sc):=(
+//help:Setscaling(3);
+ SCALEX=1;
+ SCALEY=sc;
+ Com0th("Setscaling("+sc+")");
+ Setwindow("Msg=no");
+);
+
+Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]);
+Tabledatalight(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledatalight("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledatalight "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist));
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tabledata(nm,n,m,xsize,ysize,rmvL):=
+ Tabledata(nm,n,m,xsize,ysize,rmvL,[]);
+Tabledata(nm,n,m,xsize,ysize,rmvL,options):=(
+ regional(Tb,name,tmp,xLst,yLst);
+ name="tb"+nm;
+ xLst=apply(1..n,xsize/n);
+ yLst=apply(1..m,ysize/m);
+ Tabledata(nm,xLst,yLst,rmvL,options)
+);
+Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]);
+Tabledata(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledata("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledata "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp="C"+text(#);
+ tmp1="c"+text(#)+"r0";
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]);
+ clist_(#+1)=parse(tmp+".xy");
+ );
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp="R"+text(#);
+ tmp1="c0r"+text(#);
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ rlist_(#+1)=parse(tmp+".xy");
+ );
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(#<m,
+ tmp1=parse("C"+text(#));
+ tmp2=parse("C"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp+[-0.2,0.5],text((tmp2.x-tmp1.x)*10));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(#<n,
+ tmp1=parse("R"+text(#));
+ tmp2=parse("R"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp-[1.2,0.1],text(abs(tmp1.y-tmp2.y)*10));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist)); // 15.06.11
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tseginfo(seg):=(
+ regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2);
+ if(substring(seg,0,2)=="sg",
+ cr=substring(seg,2,length(seg));
+ ,
+ cr=seg;
+ );
+ tp=substring(cr,0,1);
+ if(tp=="c",
+ tpc="r";
+ ,
+ tpc="c";
+ );
+ tmp1=indexof(cr,tpc);
+ tmp=substring(cr,tmp1,length(cr));
+ tmp2=tmp1+indexof(tmp,tpc);
+ n1=substring(cr,1,tmp1-1);
+ n2=substring(cr,tmp1,tmp2-1);
+ n3=substring(cr,tmp2,length(cr));
+ [tp+n1,tpc,parse(n2),parse(n3)];
+);
+
+Tsegrmv(rmvL):=Tsegrmv(rmvL,[]);
+Tsegrmv(rmvL,options):=(
+ regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2);
+ forall(rmvL,cr,
+ tmp1=Tseginfo(cr);
+ hd=tmp1_1;
+ tpc=tmp1_2;
+ m1=tmp1_3;
+ m2=tmp1_4;
+ gcL=select(GCLIST,Tseginfo(#_1)_1==tmp1_1);
+ flg=0;
+ forall(gcL,
+ if(flg==0,
+ tmp=Tseginfo(#_1);
+ n1=tmp_3;
+ n2=tmp_4;
+ if(m1>=n1 & m2<=n2,
+ gc=#;
+ flg=1;
+ );
+ );
+ );
+ if(flg==1,
+ Changestyle([gc_1],["nodisp"]);
+ tail="";
+ if(indexof(hd,"r")>0,
+ tail=hd; hd="";
+ );
+ if(n1<m1,
+ tmp1=tpc+text(n1);
+ tmp2=tpc+text(m1);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ if(m2<n2,
+ tmp1=tpc+text(m2);
+ tmp2=tpc+text(n2);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ );
+ );
+);
+
+Tgrid(ptstr):=(
+//help:Tgrid("c2r5");
+ regional(tmp,tmp1,tmp2);
+ tmp=parse(ptstr);
+ if(islist(tmp),
+ tmp;
+ ,
+ tmp=indexof(ptstr,"r");
+ tmp1=substring(ptstr,1,tmp-1);
+ tmp1=parse(tmp1);
+ tmp2=substring(ptstr,tmp,length(ptstr));
+ tmp2=parse(tmp2);
+ [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2];
+ );
+);
+
+Tlistplot(ptL):=Tlistplot(ptL,[]);
+Tlistplot(Ag1,Ag2):=(
+ regional(nm,ptL,options);
+ if(isstring(Ag1),
+ nm=Ag1;
+ ptL=Ag2;
+ options=[];
+ ,
+ ptL=Ag1;
+ options=Ag2;
+ nm=ptL_1+ptL_2;
+ );
+ Tlistplot(nm,ptL,options);
+);
+Tlistplot(nm,ptL,options):=(
+//help:Tlistplot(["c0r0","c0r4"]);
+//help:Tlistplot("1",["c0r0","c0r4"]);
+ regional(tmp);
+ tmp=apply(ptL,Tgrid(#)); // 15.06.03
+ Listplot(nm,tmp,append(options,"Msg=no"));
+);
+
+ChangeTablestyle(nameL,style):=(
+////help:ChangeTablestyle(["r0c0c3"],["da"]);
+ regional(nmL,tmp,tmp1,tmp2);
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ nmL=apply(nmL,"sg"+#);
+ nmL=select(nmL,islist(parse(#)));
+ Changestyle(nmL,style);
+);
+
+Findcell(pos1,pos2):=Findcell("",pos1,pos2);
+Findcell(Tbdata,pos1,pos2):=(
+//help:Findcell("c0r0","c2r1");
+ regional(tmp1,tmp2,posnw,posse,ctr,dx,dy);
+ if(isstring(pos1),
+ posnw=Tgrid(pos1); // 15.05.20
+ posse=Tgrid(pos2);
+ //posnw=parse(pos1);
+ //posse=parse(pos2);
+ ,
+ if(islist(pos1),
+ posnw=pos1;
+ posse=pos2;
+ ,
+ tmp1="c"+text(pos1-1)+"r"+text(pos2-1);
+ tmp2="c"+text(pos1)+"r"+text(pos2);
+ posnw=Tgrid(tmp1);
+ posse=Tgrid(tmp2);
+// posnw=parse(tmp1);
+// posse=parse(tmp2);
+ );
+ );
+ ctr=(posnw+posse)/2;
+ dx=abs(posse_1-ctr_1);
+ dy=abs(posnw_2-ctr_2);
+ [ctr,dx,dy];
+);
+
+Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr);
+Putcell(Tbdata,pos1,pos2,dir,lttr):=(
+//help:Putcell("c0r0","c2r1","lt","abc");
+//help:Putcell(2,3,"c","xyz");
+ regional(tmp,tmp1,tmp2,posnw,posse,
+ posdir,posstr,ctr,dx,dy);
+ tmp=Findcell(Tbdata,pos1,pos2);
+ ctr=tmp_1; dx=tmp_2; dy=tmp_3;
+ posdir=ctr;
+ posstr=dir;
+ if(indexof(dir,"b")>0,
+ posdir_2=posdir_2-dy;
+ posstr=replace(posstr,"b","n");
+ );
+ if(indexof(dir,"t")>0,
+ posdir_2=posdir_2+dy;
+ posstr=replace(posstr,"t","s");
+ );
+ if(indexof(dir,"l")>0,
+ posdir_1=posdir_1-dx;
+ posstr=replace(posstr,"l","e");
+ );
+ if(indexof(dir,"r")>0,
+ posdir_1=posdir_1+dx;
+ posstr=replace(posstr,"r","w");
+ );
+ Letter(posdir,posstr,text(lttr));
+);
+
+Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex);
+Putcellexpr(Tbdata,pos1,pos2,dir,ex):=(
+//help:Putcellexpr("c0r0","c2r1","lt","abc");
+//help:Putcellexpr(2,3,"c","\sin x");
+ Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$");
+);
+
+Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL);
+Putrow(Tbdata,nrow,dir,lttrL):=(
+//help:Putrow(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,mcol);
+ mcol=length(lttrL);
+ forall(1..mcol,
+ Putcell(Tbdata,#,nrow,dir,lttrL_#);
+ );
+);
+
+Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL);
+Putrowexpr(Tbdata,nrow,dir,exL):=(
+//help:Putrowexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ Putrow(Tbdata,nrow,dir,lttrL);
+);
+
+PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL);
+PutcoL(Tbdata,mcol,dir,lttrL):=(
+//help:PutcoL(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,nrow);
+ nrow=length(lttrL);
+ forall(1..nrow,
+ Putcell(Tbdata,mcol,#,dir,lttrL_#);
+ );
+);
+PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL);
+PutcoLexpr(Tbdata,mcol,dir,exL):=(
+//help:PutcoLexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ PutcoL(Tbdata,mcol,dir,lttrL);
+);
+
+Setwindow():=Setwindow("Msg=yes");
+Setwindow(str):=(
+ regional(tmp,tmp1,tmp2,msg);
+ msg="y";
+ tmp=indexof(str,"="); // 16.02.10
+ tmp1=Toupper(substring(str,tmp,tmp+1));
+ if(tmp1=="N",msg="n");
+ if((ispoint(SW) & ispoint(NE)),
+ tmp1=Lcrd(SW);
+ tmp2=Lcrd(NE);
+ XMIN=tmp1_1; XMAX=tmp2_1;
+ YMIN=tmp1_2; YMAX=tmp2_2;
+ ,
+// XMIN=-5; XMAX=5;
+// YMIN=Lcrdy(-5); YMAX=Lcrdy(5);
+ createpoint("SW",Pcrd([XMIN,YMIN]));
+ createpoint("NE", Pcrd([XMAX,YMAX]));
+ );
+ if(msg=="y",
+ println("Setwindow(["+XMIN+","+XMAX+"],["+YMIN+","+YMAX+"])");
+ );
+ layer(KETPICLAYER);
+ autoclearlayer(KETPICLAYER,true);
+ drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
+ Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
+);
+Setwindow(xrange,yrange):=(
+//help:Setwindow([2,3],[-1,1]);
+ XMIN=xrange_1;
+ XMAX=xrange_2;
+ YMIN=yrange_1;
+ YMAX=yrange_2;
+// Setwindow();
+);
+
+Sciform(list):=(
+ regional(plotlist,comp,pos,out,out2,nn,strL,flg,
+ tmp,tmp1,tmp2,tmp3,Nj);
+ plotlist=Flatten([list]);
+ out=replace(plotlist_1,".xy","");
+ out=replace(out,".x","(1)");
+ out=replace(out,".y","(2)");
+ if(length(plotlist)==1,
+ comp=[];
+ forall(1..length(out),
+ comp=append(comp,substring(out,#-1,#));
+ );
+ out="";
+ pos=0;
+ forall(comp,
+ if(#!="'",
+ out=out+#;
+ ,
+ if(pos==0,
+ tmp=indexof(out,"Assign(");
+ if(substring(out,length(out)-7,length(out))=="Assign(",
+ out=out+"'";
+ pos=1;
+ ,
+ out=out+"Assign('";
+ pos=2;
+ );
+ ,
+ if(pos==2,
+ out=out+"')";
+ ,
+ out=out+"'";
+ );
+ pos=0;
+ );
+ );
+ );
+ ,
+ forall(2..length(plotlist),
+ comp=plotlist_#;
+ if(isstring(comp),
+ pos=indexof(comp,"Assign(");
+ if(pos>0,
+ comp=substring(comp,6,length(comp));
+ );
+ out=out+"Assign(";
+ comp=replace(comp,".xy","");
+ comp=replace(comp,".x","(1)");
+ comp=replace(comp,".y","(2)");
+ out=out+"'"+comp+"'";
+ out=out+"),";
+ );
+ if(islist(comp),
+ forall(comp,
+ out=out+"'"+#+"',";
+ );
+ );
+ );
+ if(length(plotlist)>1,
+ out=substring(out,0,length(out)-1);
+ out=out+");";
+ );
+ );
+ pos=[];
+ forall(1..length(out),
+ tmp=indexof(substring(out,#-1,length(out)),"Assign");
+ if(tmp>0,
+ tmp1=#-1+tmp;
+ if(length(pos)==0,
+ pos=[tmp1];
+ ,
+ if(pos_(length(pos))<tmp1,
+ pos=append(pos,tmp1);
+ );
+ );
+ );
+ );
+ if(length(pos)>0,
+ strL=[];
+ Nj=0;
+ forall(pos,
+ tmp=substring(out,Nj,#-1);
+ strL=append(strL,tmp);
+ Nj=#-1;
+ );
+ strL=append(strL,substring(out,Nj,length(out)));
+ out="";
+ forall(strL,
+ if(indexof(#,"Assign")==0,
+ out=out+#;
+ ,
+ tmp=indexof(#,"('");
+ tmp1=indexof(#,"')");
+ tmp2=substring(#,tmp+1,tmp1-2);
+ tmp3=substring(#,tmp1-2,length(#));
+ if(indexof(tmp2,"=")==0,
+ out=out+#;
+ ,
+ tmp=substring(tmp2,0,indexof(tmp2,"="));
+ out=out+"'"+tmp+"'+"+"Assign('";
+ tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2));
+ out=out+tmp+tmp3;
+ );
+ );
+ );
+ );
+ out2=""; // patched 16.01.21 from
+ nn=length(out);
+ flg=0;
+ forall(1..nn,
+ if(flg==0,
+ tmp=indexof(out,"='+Assign('");
+ if(tmp==0,
+ out2=out2+out;
+ flg=1;
+ ,
+ out2=out2+substring(out,0,tmp);
+ out=substring(out,tmp+10,length(out));
+ tmp=indexof(out,"'"); // 16.04.19 from
+ tmp1=substring(out,0,tmp-1);
+ tmp2="1234567890";
+ tmp=apply(1..length(tmp1),
+ indexof(tmp2,substring(tmp1,#-1,#)));
+ tmp=min(tmp);
+ if(tmp==0, // 16.04.19 upto
+ out2=out2+"'+Assign('";
+ ,
+ tmp=indexof(out,"'");
+ out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 upto
+ );
+ );
+ );
+ );
+ out2=replace(out2,"Dist=","D=");
+ out2=replace(out2,"Dis=","D=");
+ out2;
+);
+
+
+Rform(list):=(
+ regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj);
+ out=list;
+ out=replace(out,"[[[","list([[");
+ out=replace(out,"[","c(");
+ out=replace(out,"]",")");
+ out=replace(out,".xy","");
+ out=replace(out,".x","[1]");
+ out=replace(out,".y","[2]");
+ out;
+);
+
+Defvar(varstr):=(
+ regional(name,value,tmp,tmp1);
+ parse(varstr);
+ tmp=indexof(varstr,"=");
+ name=substring(varstr,0,tmp-1);
+ value=substring(varstr,tmp,length(varstr));
+ value=parse(value);
+ tmp1=select(1..length(VLIST),VLIST_#_1==name+"=");
+ if(length(tmp1)>0,
+ tmp=tmp1_1;
+ VLIST_tmp=[name+"=",value];
+ ,
+ VLIST=prepend([name+"=",value],VLIST);
+ );
+);
+
+Defvar(name,value):=(
+//help:Defvar("a",0.3);
+ regional(tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+format(#,5)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ tmp1=format(value,5);
+ );
+ tmp=name+"="+tmp1; // 15.02.06
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=name+"="); // 15.02.08
+ VLIST=prepend([name+"=",value],VLIST);
+);
+
+Iftosci(strorg):=( // 16.06.10
+ regional(str,ifL,ppL,cpL,kk,sL,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ str=replace(strorg,LFmark,"");
+ ifL=Indexall(str,"if(");
+ ppL=Bracket(str,"()");
+ cpL=Indexall(str,",");
+ tmp1=Bracket(str,"[]");
+ forall(1..(length(tmp1)/2),kk,
+ cpL=select(cpL,#<tmp1_(2*kk-1)_1%#_1>tmp1_(2*kk)_1);
+ );
+ forall(1..length(ifL),kk,
+ tmp=select(ppL,#_1>ifL_kk);
+ tmp1=tmp_1;
+ tmp2=select(tmp,#_2==-tmp1_2);
+ tmp2=tmp2_1;
+ tmp3=select(cpL,#>tmp1_1 & #<tmp2_1);
+ ifL_kk=[tmp1_1,tmp2_1,tmp1_2,tmp3];
+ );
+ forall(1..length(cpL),kk,
+ tmp=select(1..length(ifL),contains(ifL_#_4,cpL_kk));
+ tmp1=tmp_(length(tmp));
+ cpL_kk=[cpL_kk,tmp1];
+ );
+ sL=apply(1..length(str),substring(str,#-1,#));
+ forall(1..length(ifL),kk,
+ tmp1=ifL_kk_1;
+ tmp2=ifL_kk_2;
+ tmp=select(cpL,#_2==kk);
+ tmp3=apply(tmp,#_1);
+ sL_tmp1=" ";
+ sL_tmp2=";end;";
+ sL_(tmp3_1)=" then,";
+ if(length(tmp3)>1,
+ sL_(tmp3_2)=";else,";
+ );
+ );
+ tmp=sum(sL);
+);
+
+Fortosci(strorg):=(
+ regional(str,jj,var,tmp,tmp1,tmp2,tmp3,tmp4,
+ Out,repL,Pflg,Iflg,Cflg);
+ str=strorg;
+ repL=[];
+ tmp1=Indexall(str,"forall");
+ tmp2=Indexall(str,",");
+ forall(1..length(tmp1),jj,
+ tmp=select(tmp2,#>tmp1_jj);
+ var=substring(str,tmp_1,tmp_2-1);
+ tmp3=substring(str,tmp1_jj-1,tmp_2-1);
+ tmp=indexof(tmp3,"(");
+ tmp4=substring(tmp3,tmp,length(tmp3));
+ tmp=indexof(tmp4,",");
+ tmp4=substring(tmp4,0,tmp-1);
+ tmp4="for "+var+"="+tmp4;
+ tmp4=replace(tmp4,"..",":");
+ repL=concat(repL,[tmp3,tmp4]);
+ );
+ forall(1..length(repL)/2,
+ str=replace(str,repL_(2*#-1),repL_(2*#));
+ );
+ tmp=Bracket(str);
+ tmp=select(tmp,#_2==0);
+ tmp=tmp_1_1;
+ tmp1=substring(str,tmp-1,length(str));
+ tmp1=replace(tmp1,")",";end");
+ str=substring(str,0,tmp-1)+tmp1;
+ str=replace(str,";;",";");
+ str;
+);
+
+Deffun(name,bodylist):=(
+//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); // 16.02.18
+ regional(funstr,tmp,tmp1,str,Pos);
+ funstr=name+":=(";
+ forall(bodylist,
+ funstr=funstr+#+";";
+ );
+ funstr=funstr+");";
+ parse(funstr);
+ tmp=bodylist_(length(bodylist));
+ str="function "+tmp+"="+name+",";
+ forall(1..(length(bodylist)-1),
+ tmp1=bodylist_#;
+ tmp1=replace(tmp1,LFmark,"");// 16.05.26
+ tmp1=replace(tmp1," ","");// 16.05.26
+ Pos=indexof(tmp1,"regional")+indexof(tmp1,"local");
+ if(Pos==0,
+ tmp=replace(tmp1,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ tmp=replace(tmp,".y","(2)");
+ if(indexof(tmp,"if(")>0,
+ tmp=iftosci(tmp);
+ );
+ if(indexof(tmp,"forall(")>0, // 16.05.26from
+ tmp=Fortosci(tmp);
+ ); // 16.05.26upto
+ str=str+tmp+",";
+ );
+ );
+ str=str+"endfunction;";
+ FUNLIST=append(FUNLIST,str);
+);
+
+Windispg():=(
+ regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,tmp3,opcindy);
+ gsave();
+ layer(KETPIClayer);
+ forall(GCLIST,Nj,
+ if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
+ if(islist(Dt) & length(Dt)>0, // 12.19,12.22
+ tmp=MeasureDepth(Dt);
+ if(tmp==1,Dt=[Dt]);
+ opcindy=Nj_3;
+ if(Nj_2<0,tmp1=0,tmp1=Nj_2);
+ if(tmp1<10,
+ forall(Dt,Nk,
+// tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#));
+// tmp2=apply(tmp2,Pcrd(#));
+ tmp2=Nk; // 14.12.04
+ if(length(Nk)>1,
+ forall(2..length(Nk),
+ tmp3=textformat(Nk_[#-1,#],5);
+ tmp3=substring(tmp3,1,length(tmp3)-1);
+ if(tmp1==1,opcindy=opcindy+",dashpattern->[2,2]");
+ tmp="draw("+tmp3+
+ ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")";
+ parse(tmp);
+ );
+ ,
+ if(length(Nk)==1,
+ tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
+ parse(tmp);
+ );
+ );
+ );
+ );
+ );
+ );
+// if(ADDAXES=="1", // 16.10.08from
+// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]);
+// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]);
+// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]);
+// Letter([[0,0],"sw","O"]);
+// ); // 16.10.08upto
+ grestore();
+ layer(0);
+);
+</script>
+ <script type="text/javascript">
+var cdy = CindyJS({
+ scripts: "cs*",
+ use: ["katex"],
+ defaultAppearance: {
+ dimDependent: 0.7,
+ fontFamily: "sans-serif",
+ lineSize: 1,
+ pointSize: 5.0,
+ textsize: 12.0
+ },
+ angleUnit: "°",
+ geometry: [
+ {name: "SW", type: "Free", pos: [4.0, 0.5714285714285714, -0.5714285714285714], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "NE", type: "Free", pos: [4.0, 2.857142857142857, 0.5714285714285714], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "A", type: "Free", pos: [4.0, -0.0, -2.0], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "B", type: "Free", pos: [4.0, -0.0, 2.0], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "C", type: "Free", pos: [-1.3333333333333333, -4.0, -1.3333333333333333], color: [1.0, 0.0, 0.0], labeled: true},
+ {name: "Text4", type: "Button", color: [0.0, 0.0, 0.0], fillcolor: [1.0, 1.0, 1.0], fillalpha: 0.27272728085517883, script: "pc=C.xy;\nptsL=[];", text: "Start", textsize: 18.0, dock: {corner: "UL", offset: [298.0, -20.0]}}
+ ],
+ ports: [{
+ id: "CSCanvas",
+ width: 753,
+ height: 540,
+ transform: [{visibleRect: [-8.362618329472264, 7.29077405760399, 8.451938685461288, -4.767474000914095]}],
+ axes: true,
+ grid: 1.0,
+ snap: true,
+ background: "rgb(168,176,192)"
+ }],
+ csconsole: false,
+ cinderella: {build: 1894, version: [2, 9, 1894]}
+});
+ </script>
+</head>
+<body>
+ <div id="CSCanvas"></div>
+</body>
+</html>
diff --git a/texmf-dist/doc/support/ketpic/ketsample/samplesJS/kc.sh b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/kc.sh
new file mode 100755
index 00000000..e69de29b
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/ketsample/samplesJS/kc.sh
diff --git a/texmf-dist/doc/support/ketpic/source/ScriptDraw.txt b/texmf-dist/doc/support/ketpic/source/ScriptDraw.txt
new file mode 100644
index 00000000..7e2f2120
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/source/ScriptDraw.txt
@@ -0,0 +1,19 @@
+Fhead="new1basic";
+Texparent="";
+Slidename="";
+
+Ketinit();
+
+Putpoint("A",[-4,0],A.xy);
+Putpoint("B",[4,0],B.xy);
+Putpoint("C",[1,4],C.xy);
+ // points can be put with Cindy button.
+
+Listplot([A,B,C,A]);
+Plotdata("1","sin(x)","x",["da"]);
+Paramplot("1","3*[cos(3*t),sin(2*t)]","t=[0,4*pi]",["Num=200","do"]);
+
+Windispg();
+
+//Help("Plotdata");
+//Help("Option");
diff --git a/texmf-dist/doc/support/ketpic/source/ScriptInitialization.txt b/texmf-dist/doc/support/ketpic/source/ScriptInitialization.txt
new file mode 100644
index 00000000..891b93e8
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/source/ScriptInitialization.txt
@@ -0,0 +1,15 @@
+use("KetCindyPlugin");
+if(isexists(plugindirectory,"dirhead.txt"),
+ setdirectory(plugindirectory);
+ import("dirhead.txt");
+,
+ Dirhead=getdirhead();
+);
+Shellfile="";
+setdirectory(Dirhead);
+import("setketcindy.txt");
+import("ketoutset.txt");
+
+setdirectory(Dirwork);
+
+Helplist(["+","+3d","+mv"],"helpJ");
diff --git a/texmf-dist/doc/support/ketpic/source/ScriptInitializationdirect.txt b/texmf-dist/doc/support/ketpic/source/ScriptInitializationdirect.txt
new file mode 100644
index 00000000..d5149163
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/source/ScriptInitializationdirect.txt
@@ -0,0 +1,10 @@
+use("KetCindyPlugin");
+Dirhead=getdirhead(gethome()+"/work");
+Shellfile="";
+setdirectory(Dirhead);
+import("setketcindy.txt");
+import("ketoutset.txt");
+
+setdirectory(Dirwork);
+
+Helplist(["+","+3d","+mv"],"helpJ");
diff --git a/texmf-dist/doc/support/ketpic/source/ScriptKeytyped.txt b/texmf-dist/doc/support/ketpic/source/ScriptKeytyped.txt
new file mode 100644
index 00000000..b06655d5
--- /dev/null
+++ b/texmf-dist/doc/support/ketpic/source/ScriptKeytyped.txt
@@ -0,0 +1,134 @@
+if(key()=="?" % keydownlist()==[32],
+ if(!isreal(NumTyped),NumTyped=0);
+ if(NumTyped==0,
+ DispStr=
+ "Figure(1) Parent(2) Parapara(3) Movie(4) Surf(5)";
+ );
+ if(NumTyped==1,
+ DispStr=
+ "Shift+ Title(T) Para(P) AniF(A) Slide(S) Digest(D)";
+ );
+ if(NumTyped==2,
+ DispStr="Shift+ Meshlab(M) KeTCindyJS(J)";
+ );
+ if(NumTyped==3,
+ DispStr=
+ "Ch : disp(0) chg(9) N(+,-) add(<) rmv(>)";
+ );
+ drawtext(mouse().xy,DispStr,size->24);
+ NumTyped=mod(NumTyped+1,4);
+,
+ NumTyped=0;
+);
+if(key()=="1",//Mkfigure
+ Viewtex();
+ kc();
+);
+if(key()=="2",//Mkparent
+ Viewparent();
+);
+if(key()=="3",//Flipbook(Parapara)
+ Flipbook();
+);
+if(key()=="4",//Texmovie
+ Texmovie();
+ kc();
+);
+if(key()=="5",//Surface
+ Cheader();
+ Cmain();
+ kcC();
+ if(ChNum>0,
+ Ch=[ChNum];
+ ,
+ Ch=[1];
+ );
+ ChNum=0;
+);
+if(key()=="T",//Title
+ Maketitle();
+);
+if(key()=="P",//ParaF
+ Parafolder();
+);
+if(key()=="A",//Animatefile
+ Animatefile();
+);
+if(key()=="S",//Slide
+ Mkslides();
+);
+if(key()=="D",//Digest(Summary)
+ Mkslidesummary();
+);
+if(key()=="M",//Meshlab
+ Mkviewobj(OCNAME,OBJCMD,OCOPTION);
+);
+if(key()=="J",//KeTCindyJS
+ Mkketcindyjs();
+);
+
+if(key()=="0",
+ Dispchoice();
+);
+if(key()=="9",
+ if(length(Ch)==0,
+ Ch=[ChNum];
+ ,
+ if(!contains(Ch,ChNum),
+ Ch=append(Ch,ChNum);
+ ChNum=Ch_(length(Ch)-1);
+ Ch=remove(Ch,[ChNum]);
+ Ch=sort(Ch);
+ );
+ );
+ Dispchoice();
+);
+if(key()=="+",
+ ChNum=ChNum+1;
+ Dispchoice();
+);
+if(key()=="-",
+ ChNum=ChNum-1;
+ Dispchoice();
+);
+if(key()=="<",
+ if(length(select(Ch,#==ChNum))==0,
+ Ch=append(Ch,ChNum);
+ Ch=sort(Ch);
+ ChNum=ChNum+1;
+ );
+ Dispchoice();
+);
+if(key()=="^",
+ if(length(Ch)==0,
+ Ch=[ChNum];
+ ,
+ if(!contains(Ch,ChNum),
+ Ch=Ch_(1..(length(Ch)-1));
+ Ch=append(Ch,ChNum);
+ Ch=sort(Ch);
+ );
+ );
+ ChNum=ChNum+1;
+ Dispchoice();
+);
+if(key()=="~",
+ if(length(Ch)==0,
+ Ch=[ChNum];
+ ,
+ if(!contains(Ch,ChNum),
+ Ch=Ch_(1..(length(Ch)-1));
+ Ch=append(Ch,ChNum);
+ Ch=sort(Ch);
+ );
+ );
+ ChNum=max(ChNum-1,1);
+ Dispchoice();
+);
+if(key()==">",
+ if(length(Ch)>0,
+ ChNum=Ch_(length(Ch));
+ Ch=Remove(Ch,[ChNum]);
+ );
+ Dispchoice();
+);
diff --git a/texmf-dist/scripts/ketpic/allbuttons.cdy b/texmf-dist/scripts/ketpic/allbuttons.cdy
new file mode 100755
index 00000000..4ae63aaa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/allbuttons.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/Rtutorial/t4sample1.csv b/texmf-dist/scripts/ketpic/data/Rtutorial/t4sample1.csv
new file mode 100644
index 00000000..75715f97
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/Rtutorial/t4sample1.csv
@@ -0,0 +1 @@
+-0.16,-1.79,0.21,0.64,1.12,-0.04,0.05,0.99,-0.4,-0.17,0.94,-0.99,1.43,-0.74,-0.16,0.75,1.18,1.53,1.55,0.17,-0.02,-0.78,0.5,0.16,-1.47,-0.26,0.14,-1.8,-0.78,0.29,-0.02,-0.06,-0.08,1.37,0.77,-0.06,-0.21,0.72,-1.08,-0.72,-0.51,0.8,-0.95,0.36,-1.5,-0.24,-1.21,2.5,0.03,-0.8,0.32,0.79,1.03,-1.32,-1.17,1,0.89,0.47,1.18,-0.21,0.39,-1.17,-0.49,1.04,0.09,0.97,-0.55,-0.09,-1,1.15,-0.89,-0.77,1.04,-0.79,-0.66,-0.9,0.78,-0.55,-0.42,0.32,-0.75,-0.6,-0.66,-0.05,-0.94,-0.54,0.83,0.08,-0.93,-0.3,0.74,-1.35,1.5,-2.44,-0.44,-0.17,-1.32,0.13,-1.49,0.43
diff --git a/texmf-dist/scripts/ketpic/data/Rtutorial/t4sample2.csv b/texmf-dist/scripts/ketpic/data/Rtutorial/t4sample2.csv
new file mode 100644
index 00000000..928f94d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/Rtutorial/t4sample2.csv
@@ -0,0 +1,74 @@
+,No1,No2,,,,,,,,
+,60,66,,,,,,,,
+,62,67,,,,,,,,
+,30,60,,,,,,,,
+,60,70,,,,,,,,
+,77,60,,,,,,,,
+,65,60,,,,,,,,
+,30,54,,,,,,,,
+,30,50,,,,,,,,
+,20,40,,,,,,,,
+,88,80,,,,,,,,
+,82,60,,,,,,,,
+,87,88,,,,,,,,
+,60,66,,,,,,,,
+,83,85,,,,,,,,
+,87,88,,,,,,,,
+,60,66,,,,,,,,
+,87,88,,,,,,,,
+,60,66,,,,,,,,
+,60,66,,,,,,,,
+,73,76,,,,,,,,
+,82,80,,,,,,,,
+,60,66,,,,,,,,
+,87,88,,,,,,,,
+,63,68,,,,,,,,
+,20,50,,,,,,,,
+,72,75,,,,,,,,
+,70,80,,,,,,,,
+,60,66,,,,,,,,
+,60,66,,,,,,,,
+,87,88,,,,,,,,
+,84,86,,,,,,,,
+,99,90,,,,,,,,
+,89,90,,,,,,,,
+,60,80,,,,,,,,
+,96,97,,,,,,,,
+,81,83,,,,,,,,
+,92,70,,,,,,,,
+,60,66,,,,,,,,
+,60,66,,,,,,,,
+,40,56,,,,,,,,
+,66,70,,,,,,,,
+,63,68,,,,,,,,
+,80,82,,,,,,,,
+,64,69,,,,,,,,
+,80,82,,,,,,,,
+,95,96,,,,,,,,
+,80,50,,,,,,,,
+,20,40,,,,,,,,
+,94,80,,,,,,,,
+,94,95,,,,,,,,
+,87,88,,,,,,,,
+,60,66,,,,,,,,
+,80,82,,,,,,,,
+,70,74,,,,,,,,
+,99,100,,,,,,,,
+,86,87,,,,,,,,
+,40,56,,,,,,,,
+,60,70,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,,
+,,,,,,,,,, \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/data/Rtutorial/t6sample.csv b/texmf-dist/scripts/ketpic/data/Rtutorial/t6sample.csv
new file mode 100644
index 00000000..70614266
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/Rtutorial/t6sample.csv
@@ -0,0 +1,21 @@
+no1,no2
+2.50029,3.0914
+1.14447,0.5
+6.61082,5.12323
+7.91532,9.5
+9.58157,9.21903
+8.16335,8.71356
+8.3303,8.32783
+2.90018,2.22525
+4.58738,4.33457
+8.77463,6.63825
+4.04384,3.51828
+6.31744,6.42058
+9.99769,9.5
+1.74338,2.08149
+1.74195,0.55616
+7.79965,8.14211
+2.48528,2.20084
+3.54729,3.61683
+6.72468,5.99547
+1.22752,1.05287
diff --git a/texmf-dist/scripts/ketpic/data/Rtutorial/t7sample.csv b/texmf-dist/scripts/ketpic/data/Rtutorial/t7sample.csv
new file mode 100644
index 00000000..ed185bf1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/Rtutorial/t7sample.csv
@@ -0,0 +1,21 @@
+no1,no2
+5.18806,5.84027
+2.40647,2.1354
+1.67986,2.65213
+6.07764,6.3763
+1.34631,0.5
+7.48434,7.81286
+3.51076,2.85506
+9.90707,9.5
+4.50056,4.59383
+8.65694,7.76352
+2.40712,4.22212
+9.48185,9.5
+4.8778,3.83387
+7.79092,7.81612
+8.40402,8.06828
+2.25626,2.57587
+2.35259,3.0321
+6.69321,6.61142
+5.94798,5.43573
+1.40489,0.5
diff --git a/texmf-dist/scripts/ketpic/data/Rtutorial/t8sampledistrtest.csv b/texmf-dist/scripts/ketpic/data/Rtutorial/t8sampledistrtest.csv
new file mode 100644
index 00000000..ba609bb7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/Rtutorial/t8sampledistrtest.csv
@@ -0,0 +1,201 @@
+n=1,n=10
+4,5.2
+4,5.2
+5,5.3
+2,6.6
+6,5.9
+5,5.9
+6,5.7
+3,3.7
+7,6.2
+6,5.8
+0,6.2
+6,4.6
+5,5.3
+6,5.5
+8,6.2
+5,4.9
+7,5.5
+3,4.2
+5,6.4
+5,4.9
+3,4.9
+1,4.7
+3,4.3
+8,4.4
+2,4.3
+3,4.2
+1,4.6
+3,5.4
+5,5.3
+7,4.8
+3,4.5
+7,4.4
+3,5.2
+8,4.3
+0,4.3
+6,6.1
+6,3.9
+2,4.9
+8,5.4
+8,5.7
+7,4.6
+6,4.5
+5,3.5
+4,5.1
+5,5.9
+2,4.5
+3,4.6
+6,5.6
+3,4.8
+3,5.9
+6,4.2
+9,4.1
+7,5.2
+10,4.7
+2,5.4
+6,5.5
+8,3.9
+1,4.9
+3,4
+6,5.5
+6,4.2
+6,4.8
+9,4.6
+2,4.8
+5,4.9
+3,4.7
+5,5
+6,5.1
+3,6.4
+3,5.5
+9,4
+3,5
+10,4.5
+12,5.6
+2,5.3
+3,5.2
+2,3.4
+7,5
+4,4.5
+1,4
+3,5.3
+5,3.8
+7,3.5
+5,5.5
+5,4.9
+6,4.7
+5,4.1
+11,4.6
+2,4.9
+1,5
+5,4.7
+4,5.3
+6,5.4
+5,5.6
+7,3.6
+8,5.7
+5,5.8
+6,4.9
+7,3.6
+9,4.7
+2,4.8
+4,4.9
+8,5.4
+2,5.2
+4,6.3
+3,5.5
+6,6.7
+7,4.7
+6,4.8
+4,5
+7,4.4
+5,4.7
+5,4.4
+8,5.3
+4,5.5
+5,5
+4,6.9
+4,5.6
+4,5.9
+4,4.8
+4,4.2
+3,5.3
+5,6
+4,5.1
+6,5.9
+6,4.9
+5,4.3
+5,5.5
+6,3.5
+6,5.4
+5,5.7
+2,4.5
+5,4.7
+3,5.3
+7,4.8
+6,4.3
+4,5.5
+7,6.2
+6,7.1
+5,4.4
+5,4.6
+5,5.6
+3,4.7
+1,4.7
+11,5
+7,5.6
+5,5.8
+6,5.8
+3,5.7
+6,5.3
+6,3.9
+4,6.3
+5,4.8
+3,5
+5,4.4
+7,5.6
+6,5.2
+5,5.2
+4,5.5
+2,5.3
+9,4.1
+6,5.3
+10,6
+4,4.6
+9,6.3
+3,3.5
+4,5.5
+4,4.8
+3,4.7
+2,4
+5,4.4
+3,4.3
+8,4.6
+3,4.1
+7,4.8
+2,6.2
+5,5.4
+8,4.7
+8,4.6
+6,6
+5,4.7
+2,4.5
+8,4.5
+3,7.2
+4,4.1
+4,5.6
+4,5.2
+5,6
+4,5.5
+7,4.5
+5,4.8
+2,4.7
+7,5.1
+13,4.1
+10,5.6
+10,4.5
+1,4.5
+2,4.9
+4,6.3
+7,4.6
diff --git a/texmf-dist/scripts/ketpic/data/fontF/0Small.png b/texmf-dist/scripts/ketpic/data/fontF/0Small.png
new file mode 100644
index 00000000..8d491ce0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/0Small.png
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/0Smalla-h.png b/texmf-dist/scripts/ketpic/data/fontF/0Smalla-h.png
new file mode 100644
index 00000000..4578fb1e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/0Smalla-h.png
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/0Smalli-o.png b/texmf-dist/scripts/ketpic/data/fontF/0Smalli-o.png
new file mode 100644
index 00000000..812d3755
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/0Smalli-o.png
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/0Smallp-w.png b/texmf-dist/scripts/ketpic/data/fontF/0Smallp-w.png
new file mode 100644
index 00000000..29c6c446
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/0Smallp-w.png
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/0Smallxyz.png b/texmf-dist/scripts/ketpic/data/fontF/0Smallxyz.png
new file mode 100644
index 00000000..a4e3a6a6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/0Smallxyz.png
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/nsi.cdy b/texmf-dist/scripts/ketpic/data/fontF/nsi.cdy
new file mode 100644
index 00000000..53393398
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/nsi.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/nsi.txt b/texmf-dist/scripts/ketpic/data/fontF/nsi.txt
new file mode 100644
index 00000000..3492d65d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/nsi.txt
@@ -0,0 +1,29 @@
+nsin//
+start//
+[[2,0]]//
+end//
+nsi1k//
+start//
+[[-1.7646,1.9555],[-0.8458,1.7871],[-1.3206,-0.0046]]//
+end//
+nsi1c//
+start//
+[[-1.4431,3.395],[-0.5243,3.104]]//
+end//
+start//
+[[-0.9837,1.3328],[-1.1521,0.664]]//
+end//
+nsi2k//
+start//
+[[-1.3206,-0.0046],[-0.9224,1.5114],[0.9152,1.4348],[1.7115,0.9601]]//
+end//
+nsi2c//
+start//
+[[-1.1776,0.5007],[-1.0449,1.0367]]//
+end//
+start//
+[[-0.218,3.7166],[1.6962,3.104]]//
+end//
+start//
+[[0.0919,-0.3982],[1.4206,-0.2037]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/pcr.cdy b/texmf-dist/scripts/ketpic/data/fontF/pcr.cdy
new file mode 100644
index 00000000..cc8891d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/pcr.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/pcr.txt b/texmf-dist/scripts/ketpic/data/fontF/pcr.txt
new file mode 100644
index 00000000..76c429b5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/pcr.txt
@@ -0,0 +1,26 @@
+pcrn//
+start//
+[[2,0]]//
+end//
+pcr1k//
+start//
+[[-1.4642,4.3617],[-1.4816,0.0001]]//
+end//
+pcr1c//
+start//
+[[-1.4642,3.0117],[-1.4642,1.5578]]//
+end//
+pcr2k//
+start//
+[[-1.7654,4.3962],[0.3658,4.3899],[0.3704,2.1982],[-1.4816,2.1982]]//
+end//
+pcr2c//
+start//
+[[-1.1236,4.3899],[0,4.3899]]//
+end//
+start//
+[[1.8552,4.3638],[1.7769,2.2211]]//
+end//
+start//
+[[0.0242,2.1982],[-0.72,2.1982]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/qcr.cdy b/texmf-dist/scripts/ketpic/data/fontF/qcr.cdy
new file mode 100644
index 00000000..ad28dd15
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/qcr.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/qcr.txt b/texmf-dist/scripts/ketpic/data/fontF/qcr.txt
new file mode 100644
index 00000000..58a390e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/qcr.txt
@@ -0,0 +1,23 @@
+qcrn//
+start//
+[[2,0]]//
+end//
+qcr1k//
+start//
+[[0,0.1212],[0,4.5347],[0,0.1212]]//
+end//
+qcr1c//
+start//
+[[2.5616,0.1904],[2.527,4.5347]]//
+end//
+start//
+[[-2.527,4.4828],[-2.527,0.1731]]//
+end//
+qcr2k//
+start//
+[[0,1],[2.1808,-0.1904]]//
+end//
+qcr2c//
+start//
+[[0.9866,0.9692],[1.402,-0.1731]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/rcr.cdy b/texmf-dist/scripts/ketpic/data/fontF/rcr.cdy
new file mode 100644
index 00000000..e5a02dd9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/rcr.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/rcr.txt b/texmf-dist/scripts/ketpic/data/fontF/rcr.txt
new file mode 100644
index 00000000..f668aba4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/rcr.txt
@@ -0,0 +1,34 @@
+rcrn//
+start//
+[[3,0]]//
+end//
+rcr1k//
+start//
+[[-1.5231,4.4135],[-1.5231,0]]//
+end//
+rcr1c//
+start//
+[[-1.5231,2.9424],[-1.5231,1.4712]]//
+end//
+rcr2k//
+start//
+[[-1.7827,4.4135],[0.6231,4.4135],[0.5885,2.3366],[-1.5231,2.3366]]//
+end//
+rcr2c//
+start//
+[[-0.9808,4.4135],[-0.1788,4.4135]]//
+end//
+start//
+[[2.0943,4.4135],[2.025,2.3539]]//
+end//
+start//
+[[-0.1038,2.3366],[-0.75,2.3366]]//
+end//
+rcr3k//
+start//
+[[-0.3981,2.3366],[1.8866,-0]]//
+end//
+rcr3c//
+start//
+[[1.2808,2.3193],[1.0731,1.2462]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/tsi.cdy b/texmf-dist/scripts/ketpic/data/fontF/tsi.cdy
new file mode 100644
index 00000000..2fa6231c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/tsi.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/tsi.txt b/texmf-dist/scripts/ketpic/data/fontF/tsi.txt
new file mode 100644
index 00000000..6a51e190
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/tsi.txt
@@ -0,0 +1,23 @@
+tsin//
+start//
+[[2,0]]//
+end//
+tsi1k//
+start//
+[[-0.9341,2.8483],[0.9494,2.879]]//
+end//
+tsi1c//
+start//
+[[-0.3063,2.8585],[0.3216,2.8687]]//
+end//
+tsi2k//
+start//
+[[0.3828,4.2112],[-0.49,0.6125],[0.8422,0.9801]]//
+end//
+tsi2c//
+start//
+[[0.0919,3.0117],[-0.1991,1.8121]]//
+end//
+start//
+[[-0.7044,-0.2144],[0.4594,-0.1072]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/xsi.cdy b/texmf-dist/scripts/ketpic/data/fontF/xsi.cdy
new file mode 100644
index 00000000..428c783d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/xsi.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/xsi.txt b/texmf-dist/scripts/ketpic/data/fontF/xsi.txt
new file mode 100644
index 00000000..f16d04f0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/xsi.txt
@@ -0,0 +1,26 @@
+xsin//
+start//
+[[2,0]]//
+end//
+xsi1k//
+start//
+[[-1.2134,2.2311],[0.027,1.3889],[1.2521,0.6232]]//
+end//
+xsi1c//
+start//
+[[-0.9837,3.0734],[0.6855,3.4869]]//
+end//
+start//
+[[-0.6468,-0.5866],[0.9765,-0.1118]]//
+end//
+xsi2k//
+start//
+[[1.6043,2.5527],[0.027,1.3889],[-1.5503,0.3935]]//
+end//
+xsi2c//
+start//
+[[1.4818,3.1193],[0.4864,3.2265]]//
+end//
+start//
+[[-0.4324,-0.3722],[-1.489,-0.2037]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/ysi.cdy b/texmf-dist/scripts/ketpic/data/fontF/ysi.cdy
new file mode 100644
index 00000000..ff075329
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/ysi.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/ysi.txt b/texmf-dist/scripts/ketpic/data/fontF/ysi.txt
new file mode 100644
index 00000000..83f6b329
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/ysi.txt
@@ -0,0 +1,26 @@
+ysin//
+start//
+[[2,0]]//
+end//
+ysi1k//
+start//
+[[-1.3052,2.1239],[-0.5549,1.4042],[1.0684,1.3889]]//
+end//
+ysi1c//
+start//
+[[-0.8458,3.2418],[0.2567,3.2572]]//
+end//
+start//
+[[-1.198,-0.1272],[0.4099,-0.8316]]//
+end//
+ysi2k//
+start//
+[[1.4665,2.8284],[0.7008,-0.0506],[-1.244,-0.8316]]//
+end//
+ysi2c//
+start//
+[[1.1756,1.7462],[0.9152,0.7406]]//
+end//
+start//
+[[0.2721,-1.6738],[-1.1981,-1.5666]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/fontF/zsi.cdy b/texmf-dist/scripts/ketpic/data/fontF/zsi.cdy
new file mode 100644
index 00000000..3326d6ad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/zsi.cdy
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/data/fontF/zsi.txt b/texmf-dist/scripts/ketpic/data/fontF/zsi.txt
new file mode 100644
index 00000000..f62925cd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/fontF/zsi.txt
@@ -0,0 +1,28 @@
+zsin//
+start//
+[[3,0]]//
+end//
+zsi1k//
+start//
+[[-0.8152,2.2618],[1.1756,2.6752]]//
+end//
+zsi1c//
+start//
+[[0.1802,3.7319],[0.2874,1.7564]]//
+end//
+zsi2k//
+start//
+[[1.3287,2.8896],[-1.3818,-0.02]]//
+end//
+zsi2c//
+start//
+[[0.5783,1.7564],[-0.7846,1.052]]//
+end//
+zsi3k//
+start//
+[[-1.1215,0.3629],[1.0684,0.8835]]//
+end//
+zsi3c//
+start//
+[[-0.5549,0.9754],[0.2108,-0.9388]]//
+end////
diff --git a/texmf-dist/scripts/ketpic/data/js/Cindy.js b/texmf-dist/scripts/ketpic/data/js/Cindy.js
new file mode 100644
index 00000000..0fe1c2a5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/js/Cindy.js
@@ -0,0 +1,757 @@
+/* CindyJS - (C) 2014-2016 The CindyJS Project
+ * Mostly licensed under the Apache License 2.0, but subprojects may use different licensing.
+ * See https://github.com/CindyJS/CindyJS/tree/a578a6389991b86a1b9f4e54197acf99bc1adec0
+ * for corresponding sources and their respective licensing conditions.
+ */
+(function(){function q(b,d,e){h.biginteger_used=1;null!=b&&("number"==typeof b&&"undefined"==typeof d?this.fromInt(b):"number"==typeof b?this.fromNumber(b,d,e):null==d&&"string"!=typeof b?this.fromString(b,256):this.fromString(b,d))}function H(){return new q(null)}function oa(b,d,e,l,h,r){for(;0<=--r;){var k=d*this[b++]+e[l]+h;h=Math.floor(k/67108864);e[l++]=k&67108863}return h}function ib(b,d,e,l,h,r){var k=d&32767;for(d>>=15;0<=--r;){var E=this[b]&32767,B=this[b++]>>15,q=d*E+B*k,E=k*E+((q&32767)<<
+15)+e[l]+(h&1073741823);h=(E>>>30)+(q>>>15)+d*B+(h>>>30);e[l++]=E&1073741823}return h}function Ia(b,d,e,l,h,r){var k=d&16383;for(d>>=14;0<=--r;){var E=this[b]&16383,B=this[b++]>>14,q=d*E+B*k,E=k*E+((q&16383)<<14)+e[l]+h;h=(E>>28)+(q>>14)+d*B;e[l++]=E&268435455}return h}function Ja(b,d){var e=Ya[b.charCodeAt(d)];return null==e?-1:e}function Ba(b){var d=H();d.fromInt(b);return d}function k(b){var d=1,e;0!=(e=b>>>16)&&(b=e,d+=16);0!=(e=b>>8)&&(b=e,d+=8);0!=(e=b>>4)&&(b=e,d+=4);0!=(e=b>>2)&&(b=e,d+=2);
+0!=b>>1&&(d+=1);return d}function Ra(b){this.m=b}function L(b){this.m=b;this.mp=b.invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<b.DB-15)-1;this.mt2=2*b.t}function fa(b,d){return b&d}function Y(b,d){return b|d}function Q(b,d){return b^d}function X(b,d){return b&~d}function xb(){}function Fc(b){return b}function ka(b){this.r2=H();this.q3=H();q.ONE.dlShiftTo(2*b.t,this.r2);this.mu=this.r2.divide(b);this.m=b}var h={},Ib=!1;"undefined"!==typeof module&&module.exports?(module.exports=
+h,Ib=!0):"undefined"!==typeof document?window.ClipperLib=h:self.ClipperLib=h;var da;if(Ib)S="chrome",da="Netscape";else{var S=navigator.userAgent.toString().toLowerCase();da=navigator.appName}var Za,Wb,La,$a,jb,pb;Za=-1!=S.indexOf("chrome")&&-1==S.indexOf("chromium")?1:0;Ib=-1!=S.indexOf("chromium")?1:0;Wb=-1!=S.indexOf("safari")&&-1==S.indexOf("chrome")&&-1==S.indexOf("chromium")?1:0;La=-1!=S.indexOf("firefox")?1:0;S.indexOf("firefox/17");S.indexOf("firefox/15");S.indexOf("firefox/3");$a=-1!=S.indexOf("opera")?
+1:0;S.indexOf("msie 10");S.indexOf("msie 9");jb=-1!=S.indexOf("msie 8")?1:0;pb=-1!=S.indexOf("msie 7")?1:0;S=-1!=S.indexOf("msie ")?1:0;h.biginteger_used=null;"Microsoft Internet Explorer"==da?(q.prototype.am=ib,da=30):"Netscape"!=da?(q.prototype.am=oa,da=26):(q.prototype.am=Ia,da=28);q.prototype.DB=da;q.prototype.DM=(1<<da)-1;q.prototype.DV=1<<da;q.prototype.FV=Math.pow(2,52);q.prototype.F1=52-da;q.prototype.F2=2*da-52;var Ya=[],K;da=48;for(K=0;9>=K;++K)Ya[da++]=K;da=97;for(K=10;36>K;++K)Ya[da++]=
+K;da=65;for(K=10;36>K;++K)Ya[da++]=K;Ra.prototype.convert=function(b){return 0>b.s||0<=b.compareTo(this.m)?b.mod(this.m):b};Ra.prototype.revert=function(b){return b};Ra.prototype.reduce=function(b){b.divRemTo(this.m,null,b)};Ra.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};Ra.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};L.prototype.convert=function(b){var d=H();b.abs().dlShiftTo(this.m.t,d);d.divRemTo(this.m,null,d);0>b.s&&0<d.compareTo(q.ZERO)&&this.m.subTo(d,d);
+return d};L.prototype.revert=function(b){var d=H();b.copyTo(d);this.reduce(d);return d};L.prototype.reduce=function(b){for(;b.t<=this.mt2;)b[b.t++]=0;for(var d=0;d<this.m.t;++d){var e=b[d]&32767,l=e*this.mpl+((e*this.mph+(b[d]>>15)*this.mpl&this.um)<<15)&b.DM,e=d+this.m.t;for(b[e]+=this.m.am(0,l,b,d,0,this.m.t);b[e]>=b.DV;)b[e]-=b.DV,b[++e]++}b.clamp();b.drShiftTo(this.m.t,b);0<=b.compareTo(this.m)&&b.subTo(this.m,b)};L.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};L.prototype.sqrTo=
+function(b,d){b.squareTo(d);this.reduce(d)};q.prototype.copyTo=function(b){for(var d=this.t-1;0<=d;--d)b[d]=this[d];b.t=this.t;b.s=this.s};q.prototype.fromInt=function(b){this.t=1;this.s=0>b?-1:0;0<b?this[0]=b:-1>b?this[0]=b+this.DV:this.t=0};q.prototype.fromString=function(b,d){var e;if(16==d)e=4;else if(8==d)e=3;else if(256==d)e=8;else if(2==d)e=1;else if(32==d)e=5;else if(4==d)e=2;else{this.fromRadix(b,d);return}this.s=this.t=0;for(var l=b.length,h=!1,r=0;0<=--l;){var k=8==e?b[l]&255:Ja(b,l);0>
+k?"-"==b.charAt(l)&&(h=!0):(h=!1,0==r?this[this.t++]=k:r+e>this.DB?(this[this.t-1]|=(k&(1<<this.DB-r)-1)<<r,this[this.t++]=k>>this.DB-r):this[this.t-1]|=k<<r,r+=e,r>=this.DB&&(r-=this.DB))}8==e&&0!=(b[0]&128)&&(this.s=-1,0<r&&(this[this.t-1]|=(1<<this.DB-r)-1<<r));this.clamp();h&&q.ZERO.subTo(this,this)};q.prototype.clamp=function(){for(var b=this.s&this.DM;0<this.t&&this[this.t-1]==b;)--this.t};q.prototype.dlShiftTo=function(b,d){var e;for(e=this.t-1;0<=e;--e)d[e+b]=this[e];for(e=b-1;0<=e;--e)d[e]=
+0;d.t=this.t+b;d.s=this.s};q.prototype.drShiftTo=function(b,d){for(var e=b;e<this.t;++e)d[e-b]=this[e];d.t=Math.max(this.t-b,0);d.s=this.s};q.prototype.lShiftTo=function(b,d){var e=b%this.DB,l=this.DB-e,h=(1<<l)-1,r=Math.floor(b/this.DB),k=this.s<<e&this.DM,E;for(E=this.t-1;0<=E;--E)d[E+r+1]=this[E]>>l|k,k=(this[E]&h)<<e;for(E=r-1;0<=E;--E)d[E]=0;d[r]=k;d.t=this.t+r+1;d.s=this.s;d.clamp()};q.prototype.rShiftTo=function(b,d){d.s=this.s;var e=Math.floor(b/this.DB);if(e>=this.t)d.t=0;else{var l=b%this.DB,
+h=this.DB-l,r=(1<<l)-1;d[0]=this[e]>>l;for(var k=e+1;k<this.t;++k)d[k-e-1]|=(this[k]&r)<<h,d[k-e]=this[k]>>l;0<l&&(d[this.t-e-1]|=(this.s&r)<<h);d.t=this.t-e;d.clamp()}};q.prototype.subTo=function(b,d){for(var e=0,l=0,h=Math.min(b.t,this.t);e<h;)l+=this[e]-b[e],d[e++]=l&this.DM,l>>=this.DB;if(b.t<this.t){for(l-=b.s;e<this.t;)l+=this[e],d[e++]=l&this.DM,l>>=this.DB;l+=this.s}else{for(l+=this.s;e<b.t;)l-=b[e],d[e++]=l&this.DM,l>>=this.DB;l-=b.s}d.s=0>l?-1:0;-1>l?d[e++]=this.DV+l:0<l&&(d[e++]=l);d.t=
+e;d.clamp()};q.prototype.multiplyTo=function(b,d){var e=this.abs(),l=b.abs(),h=e.t;for(d.t=h+l.t;0<=--h;)d[h]=0;for(h=0;h<l.t;++h)d[h+e.t]=e.am(0,l[h],d,h,0,e.t);d.s=0;d.clamp();this.s!=b.s&&q.ZERO.subTo(d,d)};q.prototype.squareTo=function(b){for(var d=this.abs(),e=b.t=2*d.t;0<=--e;)b[e]=0;for(e=0;e<d.t-1;++e){var l=d.am(e,d[e],b,2*e,0,1);(b[e+d.t]+=d.am(e+1,2*d[e],b,2*e+1,l,d.t-e-1))>=d.DV&&(b[e+d.t]-=d.DV,b[e+d.t+1]=1)}0<b.t&&(b[b.t-1]+=d.am(e,d[e],b,2*e,0,1));b.s=0;b.clamp()};q.prototype.divRemTo=
+function(b,d,e){var l=b.abs();if(!(0>=l.t)){var h=this.abs();if(h.t<l.t)null!=d&&d.fromInt(0),null!=e&&this.copyTo(e);else{null==e&&(e=H());var r=H(),w=this.s;b=b.s;var E=this.DB-k(l[l.t-1]);0<E?(l.lShiftTo(E,r),h.lShiftTo(E,e)):(l.copyTo(r),h.copyTo(e));l=r.t;h=r[l-1];if(0!=h){var B=h*(1<<this.F1)+(1<l?r[l-2]>>this.F2:0),L=this.FV/B,B=(1<<this.F1)/B,pa=1<<this.F2,na=e.t,K=na-l,fa=null==d?H():d;r.dlShiftTo(K,fa);0<=e.compareTo(fa)&&(e[e.t++]=1,e.subTo(fa,e));q.ONE.dlShiftTo(l,fa);for(fa.subTo(r,r);r.t<
+l;)r[r.t++]=0;for(;0<=--K;){var Q=e[--na]==h?this.DM:Math.floor(e[na]*L+(e[na-1]+pa)*B);if((e[na]+=r.am(0,Q,e,K,0,l))<Q)for(r.dlShiftTo(K,fa),e.subTo(fa,e);e[na]<--Q;)e.subTo(fa,e)}null!=d&&(e.drShiftTo(l,d),w!=b&&q.ZERO.subTo(d,d));e.t=l;e.clamp();0<E&&e.rShiftTo(E,e);0>w&&q.ZERO.subTo(e,e)}}}};q.prototype.invDigit=function(){if(1>this.t)return 0;var b=this[0];if(0==(b&1))return 0;var d=b&3,d=d*(2-(b&15)*d)&15,d=d*(2-(b&255)*d)&255,d=d*(2-((b&65535)*d&65535))&65535,d=d*(2-b*d%this.DV)%this.DV;return 0<
+d?this.DV-d:-d};q.prototype.isEven=function(){return 0==(0<this.t?this[0]&1:this.s)};q.prototype.exp=function(b,d){if(4294967295<b||1>b)return q.ONE;var e=H(),l=H(),h=d.convert(this),r=k(b)-1;for(h.copyTo(e);0<=--r;)if(d.sqrTo(e,l),0<(b&1<<r))d.mulTo(l,h,e);else var w=e,e=l,l=w;return d.revert(e)};q.prototype.toString=function(b){if(0>this.s)return"-"+this.negate().toString(b);if(16==b)b=4;else if(8==b)b=3;else if(2==b)b=1;else if(32==b)b=5;else if(4==b)b=2;else return this.toRadix(b);var d=(1<<b)-
+1,e,l=!1,h="",r=this.t,k=this.DB-r*this.DB%b;if(0<r--)for(k<this.DB&&0<(e=this[r]>>k)&&(l=!0,h="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));0<=r;)k<b?(e=(this[r]&(1<<k)-1)<<b-k,e|=this[--r]>>(k+=this.DB-b)):(e=this[r]>>(k-=b)&d,0>=k&&(k+=this.DB,--r)),0<e&&(l=!0),l&&(h+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));return l?h:"0"};q.prototype.negate=function(){var b=H();q.ZERO.subTo(this,b);return b};q.prototype.abs=function(){return 0>this.s?this.negate():this};q.prototype.compareTo=function(b){var d=
+this.s-b.s;if(0!=d)return d;var e=this.t,d=e-b.t;if(0!=d)return 0>this.s?-d:d;for(;0<=--e;)if(0!=(d=this[e]-b[e]))return d;return 0};q.prototype.bitLength=function(){return 0>=this.t?0:this.DB*(this.t-1)+k(this[this.t-1]^this.s&this.DM)};q.prototype.mod=function(b){var d=H();this.abs().divRemTo(b,null,d);0>this.s&&0<d.compareTo(q.ZERO)&&b.subTo(d,d);return d};q.prototype.modPowInt=function(b,d){var e;e=256>b||d.isEven()?new Ra(d):new L(d);return this.exp(b,e)};q.ZERO=Ba(0);q.ONE=Ba(1);xb.prototype.convert=
+Fc;xb.prototype.revert=Fc;xb.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e)};xb.prototype.sqrTo=function(b,d){b.squareTo(d)};ka.prototype.convert=function(b){if(0>b.s||b.t>2*this.m.t)return b.mod(this.m);if(0>b.compareTo(this.m))return b;var d=H();b.copyTo(d);this.reduce(d);return d};ka.prototype.revert=function(b){return b};ka.prototype.reduce=function(b){b.drShiftTo(this.m.t-1,this.r2);b.t>this.m.t+1&&(b.t=this.m.t+1,b.clamp());this.mu.multiplyUpperTo(this.r2,this.m.t+1,this.q3);for(this.m.multiplyLowerTo(this.q3,
+this.m.t+1,this.r2);0>b.compareTo(this.r2);)b.dAddOffset(1,this.m.t+1);for(b.subTo(this.r2,b);0<=b.compareTo(this.m);)b.subTo(this.m,b)};ka.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};ka.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};var la=[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,
+313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997],qb=67108864/la[la.length-1];q.prototype.chunkSize=function(b){return Math.floor(Math.LN2*
+this.DB/Math.log(b))};q.prototype.toRadix=function(b){null==b&&(b=10);if(0==this.signum()||2>b||36<b)return"0";var d=this.chunkSize(b),d=Math.pow(b,d),e=Ba(d),l=H(),h=H(),r="";for(this.divRemTo(e,l,h);0<l.signum();)r=(d+h.intValue()).toString(b).substr(1)+r,l.divRemTo(e,l,h);return h.intValue().toString(b)+r};q.prototype.fromRadix=function(b,d){this.fromInt(0);null==d&&(d=10);for(var e=this.chunkSize(d),l=Math.pow(d,e),h=!1,r=0,k=0,E=0;E<b.length;++E){var B=Ja(b,E);0>B?"-"==b.charAt(E)&&0==this.signum()&&
+(h=!0):(k=d*k+B,++r>=e&&(this.dMultiply(l),this.dAddOffset(k,0),k=r=0))}0<r&&(this.dMultiply(Math.pow(d,r)),this.dAddOffset(k,0));h&&q.ZERO.subTo(this,this)};q.prototype.fromNumber=function(b,d,e){if("number"==typeof d)if(2>b)this.fromInt(1);else for(this.fromNumber(b,e),this.testBit(b-1)||this.bitwiseTo(q.ONE.shiftLeft(b-1),Y,this),this.isEven()&&this.dAddOffset(1,0);!this.isProbablePrime(d);)this.dAddOffset(2,0),this.bitLength()>b&&this.subTo(q.ONE.shiftLeft(b-1),this);else{e=[];var l=b&7;e.length=
+(b>>3)+1;d.nextBytes(e);e[0]=0<l?e[0]&(1<<l)-1:0;this.fromString(e,256)}};q.prototype.bitwiseTo=function(b,d,e){var l,h,r=Math.min(b.t,this.t);for(l=0;l<r;++l)e[l]=d(this[l],b[l]);if(b.t<this.t){h=b.s&this.DM;for(l=r;l<this.t;++l)e[l]=d(this[l],h);e.t=this.t}else{h=this.s&this.DM;for(l=r;l<b.t;++l)e[l]=d(h,b[l]);e.t=b.t}e.s=d(this.s,b.s);e.clamp()};q.prototype.changeBit=function(b,d){var e=q.ONE.shiftLeft(b);this.bitwiseTo(e,d,e);return e};q.prototype.addTo=function(b,d){for(var e=0,l=0,h=Math.min(b.t,
+this.t);e<h;)l+=this[e]+b[e],d[e++]=l&this.DM,l>>=this.DB;if(b.t<this.t){for(l+=b.s;e<this.t;)l+=this[e],d[e++]=l&this.DM,l>>=this.DB;l+=this.s}else{for(l+=this.s;e<b.t;)l+=b[e],d[e++]=l&this.DM,l>>=this.DB;l+=b.s}d.s=0>l?-1:0;0<l?d[e++]=l:-1>l&&(d[e++]=this.DV+l);d.t=e;d.clamp()};q.prototype.dMultiply=function(b){this[this.t]=this.am(0,b-1,this,0,0,this.t);++this.t;this.clamp()};q.prototype.dAddOffset=function(b,d){if(0!=b){for(;this.t<=d;)this[this.t++]=0;for(this[d]+=b;this[d]>=this.DV;)this[d]-=
+this.DV,++d>=this.t&&(this[this.t++]=0),++this[d]}};q.prototype.multiplyLowerTo=function(b,d,e){var l=Math.min(this.t+b.t,d);e.s=0;for(e.t=l;0<l;)e[--l]=0;var h;for(h=e.t-this.t;l<h;++l)e[l+this.t]=this.am(0,b[l],e,l,0,this.t);for(h=Math.min(b.t,d);l<h;++l)this.am(0,b[l],e,l,0,d-l);e.clamp()};q.prototype.multiplyUpperTo=function(b,d,e){--d;var l=e.t=this.t+b.t-d;for(e.s=0;0<=--l;)e[l]=0;for(l=Math.max(d-this.t,0);l<b.t;++l)e[this.t+l-d]=this.am(d-l,b[l],e,0,0,this.t+l-d);e.clamp();e.drShiftTo(1,e)};
+q.prototype.modInt=function(b){if(0>=b)return 0;var d=this.DV%b,e=0>this.s?b-1:0;if(0<this.t)if(0==d)e=this[0]%b;else for(var l=this.t-1;0<=l;--l)e=(d*e+this[l])%b;return e};q.prototype.millerRabin=function(b){var d=this.subtract(q.ONE),e=d.getLowestSetBit();if(0>=e)return!1;var l=d.shiftRight(e);b=b+1>>1;b>la.length&&(b=la.length);for(var h=H(),r=0;r<b;++r){h.fromInt(la[Math.floor(Math.random()*la.length)]);var k=h.modPow(l,this);if(0!=k.compareTo(q.ONE)&&0!=k.compareTo(d)){for(var E=1;E++<e&&0!=
+k.compareTo(d);)if(k=k.modPowInt(2,this),0==k.compareTo(q.ONE))return!1;if(0!=k.compareTo(d))return!1}}return!0};q.prototype.clone=function(){var b=H();this.copyTo(b);return b};q.prototype.intValue=function(){if(0>this.s){if(1==this.t)return this[0]-this.DV;if(0==this.t)return-1}else{if(1==this.t)return this[0];if(0==this.t)return 0}return(this[1]&(1<<32-this.DB)-1)<<this.DB|this[0]};q.prototype.byteValue=function(){return 0==this.t?this.s:this[0]<<24>>24};q.prototype.shortValue=function(){return 0==
+this.t?this.s:this[0]<<16>>16};q.prototype.signum=function(){return 0>this.s?-1:0>=this.t||1==this.t&&0>=this[0]?0:1};q.prototype.toByteArray=function(){var b=this.t,d=[];d[0]=this.s;var e=this.DB-b*this.DB%8,l,h=0;if(0<b--)for(e<this.DB&&(l=this[b]>>e)!=(this.s&this.DM)>>e&&(d[h++]=l|this.s<<this.DB-e);0<=b;)if(8>e?(l=(this[b]&(1<<e)-1)<<8-e,l|=this[--b]>>(e+=this.DB-8)):(l=this[b]>>(e-=8)&255,0>=e&&(e+=this.DB,--b)),0!=(l&128)&&(l|=-256),0==h&&(this.s&128)!=(l&128)&&++h,0<h||l!=this.s)d[h++]=l;
+return d};q.prototype.equals=function(b){return 0==this.compareTo(b)};q.prototype.min=function(b){return 0>this.compareTo(b)?this:b};q.prototype.max=function(b){return 0<this.compareTo(b)?this:b};q.prototype.and=function(b){var d=H();this.bitwiseTo(b,fa,d);return d};q.prototype.or=function(b){var d=H();this.bitwiseTo(b,Y,d);return d};q.prototype.xor=function(b){var d=H();this.bitwiseTo(b,Q,d);return d};q.prototype.andNot=function(b){var d=H();this.bitwiseTo(b,X,d);return d};q.prototype.not=function(){for(var b=
+H(),d=0;d<this.t;++d)b[d]=this.DM&~this[d];b.t=this.t;b.s=~this.s;return b};q.prototype.shiftLeft=function(b){var d=H();0>b?this.rShiftTo(-b,d):this.lShiftTo(b,d);return d};q.prototype.shiftRight=function(b){var d=H();0>b?this.lShiftTo(-b,d):this.rShiftTo(b,d);return d};q.prototype.getLowestSetBit=function(){for(var b=0;b<this.t;++b)if(0!=this[b]){var d=b*this.DB,b=this[b];if(0==b)b=-1;else{var e=0;0==(b&65535)&&(b>>=16,e+=16);0==(b&255)&&(b>>=8,e+=8);0==(b&15)&&(b>>=4,e+=4);0==(b&3)&&(b>>=2,e+=2);
+0==(b&1)&&++e;b=e}return d+b}return 0>this.s?this.t*this.DB:-1};q.prototype.bitCount=function(){for(var b=0,d=this.s&this.DM,e=0;e<this.t;++e){for(var l=this[e]^d,h=0;0!=l;)l&=l-1,++h;b+=h}return b};q.prototype.testBit=function(b){var d=Math.floor(b/this.DB);return d>=this.t?0!=this.s:0!=(this[d]&1<<b%this.DB)};q.prototype.setBit=function(b){return this.changeBit(b,Y)};q.prototype.clearBit=function(b){return this.changeBit(b,X)};q.prototype.flipBit=function(b){return this.changeBit(b,Q)};q.prototype.add=
+function(b){var d=H();this.addTo(b,d);return d};q.prototype.subtract=function(b){var d=H();this.subTo(b,d);return d};q.prototype.multiply=function(b){var d=H();this.multiplyTo(b,d);return d};q.prototype.divide=function(b){var d=H();this.divRemTo(b,d,null);return d};q.prototype.remainder=function(b){var d=H();this.divRemTo(b,null,d);return d};q.prototype.divideAndRemainder=function(b){var d=H(),e=H();this.divRemTo(b,d,e);return[d,e]};q.prototype.modPow=function(b,d){var e=b.bitLength(),l,h=Ba(1),r;
+if(0>=e)return h;l=18>e?1:48>e?3:144>e?4:768>e?5:6;r=8>e?new Ra(d):d.isEven()?new ka(d):new L(d);var w=[],E=3,B=l-1,q=(1<<l)-1;w[1]=r.convert(this);if(1<l)for(e=H(),r.sqrTo(w[1],e);E<=q;)w[E]=H(),r.mulTo(e,w[E-2],w[E]),E+=2;for(var pa=b.t-1,na,fa=!0,K=H(),e=k(b[pa])-1;0<=pa;){e>=B?na=b[pa]>>e-B&q:(na=(b[pa]&(1<<e+1)-1)<<B-e,0<pa&&(na|=b[pa-1]>>this.DB+e-B));for(E=l;0==(na&1);)na>>=1,--E;0>(e-=E)&&(e+=this.DB,--pa);if(fa)w[na].copyTo(h),fa=!1;else{for(;1<E;)r.sqrTo(h,K),r.sqrTo(K,h),E-=2;0<E?r.sqrTo(h,
+K):(E=h,h=K,K=E);r.mulTo(K,w[na],h)}for(;0<=pa&&0==(b[pa]&1<<e);)r.sqrTo(h,K),E=h,h=K,K=E,0>--e&&(e=this.DB-1,--pa)}return r.revert(h)};q.prototype.modInverse=function(b){var d=b.isEven();if(this.isEven()&&d||0==b.signum())return q.ZERO;for(var e=b.clone(),l=this.clone(),h=Ba(1),r=Ba(0),k=Ba(0),E=Ba(1);0!=e.signum();){for(;e.isEven();)e.rShiftTo(1,e),d?(h.isEven()&&r.isEven()||(h.addTo(this,h),r.subTo(b,r)),h.rShiftTo(1,h)):r.isEven()||r.subTo(b,r),r.rShiftTo(1,r);for(;l.isEven();)l.rShiftTo(1,l),
+d?(k.isEven()&&E.isEven()||(k.addTo(this,k),E.subTo(b,E)),k.rShiftTo(1,k)):E.isEven()||E.subTo(b,E),E.rShiftTo(1,E);0<=e.compareTo(l)?(e.subTo(l,e),d&&h.subTo(k,h),r.subTo(E,r)):(l.subTo(e,l),d&&k.subTo(h,k),E.subTo(r,E))}if(0!=l.compareTo(q.ONE))return q.ZERO;if(0<=E.compareTo(b))return E.subtract(b);if(0>E.signum())E.addTo(b,E);else return E;return 0>E.signum()?E.add(b):E};q.prototype.pow=function(b){return this.exp(b,new xb)};q.prototype.gcd=function(b){var d=0>this.s?this.negate():this.clone();
+b=0>b.s?b.negate():b.clone();if(0>d.compareTo(b)){var e=d,d=b;b=e}var e=d.getLowestSetBit(),l=b.getLowestSetBit();if(0>l)return d;e<l&&(l=e);for(0<l&&(d.rShiftTo(l,d),b.rShiftTo(l,b));0<d.signum();)0<(e=d.getLowestSetBit())&&d.rShiftTo(e,d),0<(e=b.getLowestSetBit())&&b.rShiftTo(e,b),0<=d.compareTo(b)?(d.subTo(b,d),d.rShiftTo(1,d)):(b.subTo(d,b),b.rShiftTo(1,b));0<l&&b.lShiftTo(l,b);return b};q.prototype.isProbablePrime=function(b){var d,e=this.abs();if(1==e.t&&e[0]<=la[la.length-1]){for(d=0;d<la.length;++d)if(e[0]==
+la[d])return!0;return!1}if(e.isEven())return!1;for(d=1;d<la.length;){for(var l=la[d],h=d+1;h<la.length&&l<qb;)l*=la[h++];for(l=e.modInt(l);d<h;)if(0==l%la[d++])return!1}return e.millerRabin(b)};q.prototype.square=function(){var b=H();this.squareTo(b);return b};q.prototype.IsNegative=function(){return-1==this.compareTo(q.ZERO)?!0:!1};q.op_Equality=function(b,d){return 0==b.compareTo(d)?!0:!1};q.op_Inequality=function(b,d){return 0!=b.compareTo(d)?!0:!1};q.op_GreaterThan=function(b,d){return 0<b.compareTo(d)?
+!0:!1};q.op_LessThan=function(b,d){return 0>b.compareTo(d)?!0:!1};q.op_Addition=function(b,d){return(new q(b)).add(new q(d))};q.op_Subtraction=function(b,d){return(new q(b)).subtract(new q(d))};q.Int128Mul=function(b,d){return(new q(b)).multiply(new q(d))};q.op_Division=function(b,d){return b.divide(d)};q.prototype.ToDouble=function(){return parseFloat(this.toString())};if("undefined"==typeof Yb)var Yb=function(b,d){var e;if("undefined"==typeof Object.getOwnPropertyNames)for(e in d.prototype){if("undefined"==
+typeof b.prototype[e]||b.prototype[e]==Object.prototype[e])b.prototype[e]=d.prototype[e]}else for(var l=Object.getOwnPropertyNames(d.prototype),h=0;h<l.length;h++)"undefined"==typeof Object.getOwnPropertyDescriptor(b.prototype,l[h])&&Object.defineProperty(b.prototype,l[h],Object.getOwnPropertyDescriptor(d.prototype,l[h]));for(e in d)"undefined"==typeof b[e]&&(b[e]=d[e]);b.$baseCtor=d};h.Path=function(){return[]};h.Paths=function(){return[]};h.DoublePoint=function(){var b=arguments;this.Y=this.X=0;
+1==b.length?(this.X=b[0].X,this.Y=b[0].Y):2==b.length&&(this.X=b[0],this.Y=b[1])};h.DoublePoint0=function(){this.Y=this.X=0};h.DoublePoint1=function(b){this.X=b.X;this.Y=b.Y};h.DoublePoint2=function(b,d){this.X=b;this.Y=d};h.PolyNode=function(){this.m_Parent=null;this.m_polygon=new h.Path;this.m_endtype=this.m_jointype=this.m_Index=0;this.m_Childs=[];this.IsOpen=!1};h.PolyNode.prototype.IsHoleNode=function(){for(var b=!0,d=this.m_Parent;null!==d;)b=!b,d=d.m_Parent;return b};h.PolyNode.prototype.ChildCount=
+function(){return this.m_Childs.length};h.PolyNode.prototype.Contour=function(){return this.m_polygon};h.PolyNode.prototype.AddChild=function(b){var d=this.m_Childs.length;this.m_Childs.push(b);b.m_Parent=this;b.m_Index=d};h.PolyNode.prototype.GetNext=function(){return 0<this.m_Childs.length?this.m_Childs[0]:this.GetNextSiblingUp()};h.PolyNode.prototype.GetNextSiblingUp=function(){return null===this.m_Parent?null:this.m_Index==this.m_Parent.m_Childs.length-1?this.m_Parent.GetNextSiblingUp():this.m_Parent.m_Childs[this.m_Index+
+1]};h.PolyNode.prototype.Childs=function(){return this.m_Childs};h.PolyNode.prototype.Parent=function(){return this.m_Parent};h.PolyNode.prototype.IsHole=function(){return this.IsHoleNode()};h.PolyTree=function(){this.m_AllPolys=[];h.PolyNode.call(this)};h.PolyTree.prototype.Clear=function(){for(var b=0,d=this.m_AllPolys.length;b<d;b++)this.m_AllPolys[b]=null;this.m_AllPolys.length=0;this.m_Childs.length=0};h.PolyTree.prototype.GetFirst=function(){return 0<this.m_Childs.length?this.m_Childs[0]:null};
+h.PolyTree.prototype.Total=function(){return this.m_AllPolys.length};Yb(h.PolyTree,h.PolyNode);h.Math_Abs_Int64=h.Math_Abs_Int32=h.Math_Abs_Double=function(b){return Math.abs(b)};h.Math_Max_Int32_Int32=function(b,d){return Math.max(b,d)};h.Cast_Int32=S||$a||Wb?function(b){return b|0}:function(b){return~~b};h.Cast_Int64=Za?function(b){return-2147483648>b||2147483647<b?0>b?Math.ceil(b):Math.floor(b):~~b}:La&&"function"==typeof Number.toInteger?function(b){return Number.toInteger(b)}:pb||jb?function(b){return parseInt(b,
+10)}:S?function(b){return-2147483648>b||2147483647<b?0>b?Math.ceil(b):Math.floor(b):b|0}:function(b){return 0>b?Math.ceil(b):Math.floor(b)};h.Clear=function(b){b.length=0};h.PI=3.141592653589793;h.PI2=6.283185307179586;h.IntPoint=function(){var b;b=arguments;var d=b.length;this.Y=this.X=0;2==d?(this.X=b[0],this.Y=b[1]):1==d?b[0]instanceof h.DoublePoint?(b=b[0],this.X=h.Clipper.Round(b.X),this.Y=h.Clipper.Round(b.Y)):(b=b[0],this.X=b.X,this.Y=b.Y):this.Y=this.X=0};h.IntPoint.op_Equality=function(b,
+d){return b.X==d.X&&b.Y==d.Y};h.IntPoint.op_Inequality=function(b,d){return b.X!=d.X||b.Y!=d.Y};h.IntPoint0=function(){this.Y=this.X=0};h.IntPoint1=function(b){this.X=b.X;this.Y=b.Y};h.IntPoint1dp=function(b){this.X=h.Clipper.Round(b.X);this.Y=h.Clipper.Round(b.Y)};h.IntPoint2=function(b,d){this.X=b;this.Y=d};h.IntRect=function(){var b=arguments,d=b.length;4==d?(this.left=b[0],this.top=b[1],this.right=b[2],this.bottom=b[3]):1==d?(this.left=b[0].left,this.top=b[0].top,this.right=b[0].right,this.bottom=
+b[0].bottom):this.bottom=this.right=this.top=this.left=0};h.IntRect0=function(){this.bottom=this.right=this.top=this.left=0};h.IntRect1=function(b){this.left=b.left;this.top=b.top;this.right=b.right;this.bottom=b.bottom};h.IntRect4=function(b,d,e,l){this.left=b;this.top=d;this.right=e;this.bottom=l};h.ClipType={ctIntersection:0,ctUnion:1,ctDifference:2,ctXor:3};h.PolyType={ptSubject:0,ptClip:1};h.PolyFillType={pftEvenOdd:0,pftNonZero:1,pftPositive:2,pftNegative:3};h.JoinType={jtSquare:0,jtRound:1,
+jtMiter:2};h.EndType={etOpenSquare:0,etOpenRound:1,etOpenButt:2,etClosedLine:3,etClosedPolygon:4};h.EdgeSide={esLeft:0,esRight:1};h.Direction={dRightToLeft:0,dLeftToRight:1};h.TEdge=function(){this.Bot=new h.IntPoint;this.Curr=new h.IntPoint;this.Top=new h.IntPoint;this.Delta=new h.IntPoint;this.Dx=0;this.PolyTyp=h.PolyType.ptSubject;this.Side=h.EdgeSide.esLeft;this.OutIdx=this.WindCnt2=this.WindCnt=this.WindDelta=0;this.PrevInSEL=this.NextInSEL=this.PrevInAEL=this.NextInAEL=this.NextInLML=this.Prev=
+this.Next=null};h.IntersectNode=function(){this.Edge2=this.Edge1=null;this.Pt=new h.IntPoint};h.MyIntersectNodeSort=function(){};h.MyIntersectNodeSort.Compare=function(b,d){return d.Pt.Y-b.Pt.Y};h.LocalMinima=function(){this.Y=0;this.Next=this.RightBound=this.LeftBound=null};h.Scanbeam=function(){this.Y=0;this.Next=null};h.OutRec=function(){this.Idx=0;this.IsOpen=this.IsHole=!1;this.PolyNode=this.BottomPt=this.Pts=this.FirstLeft=null};h.OutPt=function(){this.Idx=0;this.Pt=new h.IntPoint;this.Prev=
+this.Next=null};h.Join=function(){this.OutPt2=this.OutPt1=null;this.OffPt=new h.IntPoint};h.ClipperBase=function(){this.m_CurrentLM=this.m_MinimaList=null;this.m_edges=[];this.PreserveCollinear=this.m_HasOpenPaths=this.m_UseFullRange=!1;this.m_CurrentLM=this.m_MinimaList=null;this.m_HasOpenPaths=this.m_UseFullRange=!1};h.ClipperBase.horizontal=-9007199254740992;h.ClipperBase.Skip=-2;h.ClipperBase.Unassigned=-1;h.ClipperBase.tolerance=1E-20;h.ClipperBase.loRange=47453132;h.ClipperBase.hiRange=0xfffffffffffff;
+h.ClipperBase.near_zero=function(b){return b>-h.ClipperBase.tolerance&&b<h.ClipperBase.tolerance};h.ClipperBase.IsHorizontal=function(b){return 0===b.Delta.Y};h.ClipperBase.prototype.PointIsVertex=function(b,d){var e=d;do{if(h.IntPoint.op_Equality(e.Pt,b))return!0;e=e.Next}while(e!=d);return!1};h.ClipperBase.prototype.PointOnLineSegment=function(b,d,e,l){return l?b.X==d.X&&b.Y==d.Y||b.X==e.X&&b.Y==e.Y||b.X>d.X==b.X<e.X&&b.Y>d.Y==b.Y<e.Y&&q.op_Equality(q.Int128Mul(b.X-d.X,e.Y-d.Y),q.Int128Mul(e.X-
+d.X,b.Y-d.Y)):b.X==d.X&&b.Y==d.Y||b.X==e.X&&b.Y==e.Y||b.X>d.X==b.X<e.X&&b.Y>d.Y==b.Y<e.Y&&(b.X-d.X)*(e.Y-d.Y)==(e.X-d.X)*(b.Y-d.Y)};h.ClipperBase.prototype.PointOnPolygon=function(b,d,e){for(var l=d;;){if(this.PointOnLineSegment(b,l.Pt,l.Next.Pt,e))return!0;l=l.Next;if(l==d)break}return!1};h.ClipperBase.prototype.SlopesEqual=h.ClipperBase.SlopesEqual=function(){var b=arguments,d=b.length,e,l,G;if(3==d)return d=b[0],e=b[1],b[2]?q.op_Equality(q.Int128Mul(d.Delta.Y,e.Delta.X),q.Int128Mul(d.Delta.X,e.Delta.Y)):
+h.Cast_Int64(d.Delta.Y*e.Delta.X)==h.Cast_Int64(d.Delta.X*e.Delta.Y);if(4==d)return d=b[0],e=b[1],l=b[2],b[3]?q.op_Equality(q.Int128Mul(d.Y-e.Y,e.X-l.X),q.Int128Mul(d.X-e.X,e.Y-l.Y)):0===h.Cast_Int64((d.Y-e.Y)*(e.X-l.X))-h.Cast_Int64((d.X-e.X)*(e.Y-l.Y));d=b[0];e=b[1];l=b[2];G=b[3];return b[4]?q.op_Equality(q.Int128Mul(d.Y-e.Y,l.X-G.X),q.Int128Mul(d.X-e.X,l.Y-G.Y)):0===h.Cast_Int64((d.Y-e.Y)*(l.X-G.X))-h.Cast_Int64((d.X-e.X)*(l.Y-G.Y))};h.ClipperBase.SlopesEqual3=function(b,d,e){return e?q.op_Equality(q.Int128Mul(b.Delta.Y,
+d.Delta.X),q.Int128Mul(b.Delta.X,d.Delta.Y)):h.Cast_Int64(b.Delta.Y*d.Delta.X)==h.Cast_Int64(b.Delta.X*d.Delta.Y)};h.ClipperBase.SlopesEqual4=function(b,d,e,l){return l?q.op_Equality(q.Int128Mul(b.Y-d.Y,d.X-e.X),q.Int128Mul(b.X-d.X,d.Y-e.Y)):0===h.Cast_Int64((b.Y-d.Y)*(d.X-e.X))-h.Cast_Int64((b.X-d.X)*(d.Y-e.Y))};h.ClipperBase.SlopesEqual5=function(b,d,e,l,G){return G?q.op_Equality(q.Int128Mul(b.Y-d.Y,e.X-l.X),q.Int128Mul(b.X-d.X,e.Y-l.Y)):0===h.Cast_Int64((b.Y-d.Y)*(e.X-l.X))-h.Cast_Int64((b.X-d.X)*
+(e.Y-l.Y))};h.ClipperBase.prototype.Clear=function(){this.DisposeLocalMinimaList();for(var b=0,d=this.m_edges.length;b<d;++b){for(var e=0,l=this.m_edges[b].length;e<l;++e)this.m_edges[b][e]=null;h.Clear(this.m_edges[b])}h.Clear(this.m_edges);this.m_HasOpenPaths=this.m_UseFullRange=!1};h.ClipperBase.prototype.DisposeLocalMinimaList=function(){for(;null!==this.m_MinimaList;){var b=this.m_MinimaList.Next;this.m_MinimaList=null;this.m_MinimaList=b}this.m_CurrentLM=null};h.ClipperBase.prototype.RangeTest=
+function(b,d){if(d.Value)(b.X>h.ClipperBase.hiRange||b.Y>h.ClipperBase.hiRange||-b.X>h.ClipperBase.hiRange||-b.Y>h.ClipperBase.hiRange)&&h.Error("Coordinate outside allowed range in RangeTest().");else if(b.X>h.ClipperBase.loRange||b.Y>h.ClipperBase.loRange||-b.X>h.ClipperBase.loRange||-b.Y>h.ClipperBase.loRange)d.Value=!0,this.RangeTest(b,d)};h.ClipperBase.prototype.InitEdge=function(b,d,e,l){b.Next=d;b.Prev=e;b.Curr.X=l.X;b.Curr.Y=l.Y;b.OutIdx=-1};h.ClipperBase.prototype.InitEdge2=function(b,d){b.Curr.Y>=
+b.Next.Curr.Y?(b.Bot.X=b.Curr.X,b.Bot.Y=b.Curr.Y,b.Top.X=b.Next.Curr.X,b.Top.Y=b.Next.Curr.Y):(b.Top.X=b.Curr.X,b.Top.Y=b.Curr.Y,b.Bot.X=b.Next.Curr.X,b.Bot.Y=b.Next.Curr.Y);this.SetDx(b);b.PolyTyp=d};h.ClipperBase.prototype.FindNextLocMin=function(b){for(var d;;){for(;h.IntPoint.op_Inequality(b.Bot,b.Prev.Bot)||h.IntPoint.op_Equality(b.Curr,b.Top);)b=b.Next;if(b.Dx!=h.ClipperBase.horizontal&&b.Prev.Dx!=h.ClipperBase.horizontal)break;for(;b.Prev.Dx==h.ClipperBase.horizontal;)b=b.Prev;for(d=b;b.Dx==
+h.ClipperBase.horizontal;)b=b.Next;if(b.Top.Y!=b.Prev.Bot.Y){d.Prev.Bot.X<b.Bot.X&&(b=d);break}}return b};h.ClipperBase.prototype.ProcessBound=function(b,d){var e=b,l=b,G;b.Dx==h.ClipperBase.horizontal&&(G=d?b.Prev.Bot.X:b.Next.Bot.X,b.Bot.X!=G&&this.ReverseHorizontal(b));if(l.OutIdx!=h.ClipperBase.Skip)if(d){for(;l.Top.Y==l.Next.Bot.Y&&l.Next.OutIdx!=h.ClipperBase.Skip;)l=l.Next;if(l.Dx==h.ClipperBase.horizontal&&l.Next.OutIdx!=h.ClipperBase.Skip){for(G=l;G.Prev.Dx==h.ClipperBase.horizontal;)G=G.Prev;
+G.Prev.Top.X==l.Next.Top.X?d||(l=G.Prev):G.Prev.Top.X>l.Next.Top.X&&(l=G.Prev)}for(;b!=l;)b.NextInLML=b.Next,b.Dx==h.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Prev.Top.X&&this.ReverseHorizontal(b),b=b.Next;b.Dx==h.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Prev.Top.X&&this.ReverseHorizontal(b);l=l.Next}else{for(;l.Top.Y==l.Prev.Bot.Y&&l.Prev.OutIdx!=h.ClipperBase.Skip;)l=l.Prev;if(l.Dx==h.ClipperBase.horizontal&&l.Prev.OutIdx!=h.ClipperBase.Skip){for(G=l;G.Next.Dx==h.ClipperBase.horizontal;)G=G.Next;
+G.Next.Top.X==l.Prev.Top.X?d||(l=G.Next):G.Next.Top.X>l.Prev.Top.X&&(l=G.Next)}for(;b!=l;)b.NextInLML=b.Prev,b.Dx==h.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Next.Top.X&&this.ReverseHorizontal(b),b=b.Prev;b.Dx==h.ClipperBase.horizontal&&b!=e&&b.Bot.X!=b.Next.Top.X&&this.ReverseHorizontal(b);l=l.Prev}if(l.OutIdx==h.ClipperBase.Skip){b=l;if(d){for(;b.Top.Y==b.Next.Bot.Y;)b=b.Next;for(;b!=l&&b.Dx==h.ClipperBase.horizontal;)b=b.Prev}else{for(;b.Top.Y==b.Prev.Bot.Y;)b=b.Prev;for(;b!=l&&b.Dx==h.ClipperBase.horizontal;)b=
+b.Next}b==l?l=d?b.Next:b.Prev:(b=d?l.Next:l.Prev,e=new h.LocalMinima,e.Next=null,e.Y=b.Bot.Y,e.LeftBound=null,e.RightBound=b,e.RightBound.WindDelta=0,l=this.ProcessBound(e.RightBound,d),this.InsertLocalMinima(e))}return l};h.ClipperBase.prototype.AddPath=function(b,d,e){e||d!=h.PolyType.ptClip||h.Error("AddPath: Open paths must be subject.");var l=b.length-1;if(e)for(;0<l&&h.IntPoint.op_Equality(b[l],b[0]);)--l;for(;0<l&&h.IntPoint.op_Equality(b[l],b[l-1]);)--l;if(e&&2>l||!e&&1>l)return!1;for(var G=
+[],r=0;r<=l;r++)G.push(new h.TEdge);var k=!0;try{for(G[1].Curr.X=b[1].X,G[1].Curr.Y=b[1].Y,function(){var d={Value:this.m_UseFullRange},e=this.RangeTest(b[0],d);this.m_UseFullRange=d.Value;return e}.call(this),function(){var d={Value:this.m_UseFullRange},e=this.RangeTest(b[l],d);this.m_UseFullRange=d.Value;return e}.call(this),this.InitEdge(G[0],G[1],G[l],b[0]),this.InitEdge(G[l],G[0],G[l-1],b[l]),r=l-1;1<=r;--r)(function(){var d={Value:this.m_UseFullRange},e=this.RangeTest(b[r],d);this.m_UseFullRange=
+d.Value;return e}).call(this),this.InitEdge(G[r],G[r+1],G[r-1],b[r])}catch(q){return!1}var E=G[0];e||(E.Prev.OutIdx=h.ClipperBase.Skip);for(var B=E,L=E;;)if(h.IntPoint.op_Equality(B.Curr,B.Next.Curr)){if(B==B.Next)break;B==E&&(E=B.Next);L=B=this.RemoveEdge(B)}else{if(B.Prev==B.Next)break;else if(e&&h.ClipperBase.SlopesEqual(B.Prev.Curr,B.Curr,B.Next.Curr,this.m_UseFullRange)&&(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(B.Prev.Curr,B.Curr,B.Next.Curr))){B==E&&(E=B.Next);B=this.RemoveEdge(B);
+L=B=B.Prev;continue}B=B.Next;if(B==L)break}if(!e&&B==B.Next||e&&B.Prev==B.Next)return!1;e||(this.m_HasOpenPaths=!0);B=E;do this.InitEdge2(B,d),B=B.Next,k&&B.Curr.Y!=E.Curr.Y&&(k=!1);while(B!=E);if(k){if(e)return!1;B.Prev.OutIdx=h.ClipperBase.Skip;B.Prev.Bot.X<B.Prev.Top.X&&this.ReverseHorizontal(B.Prev);d=new h.LocalMinima;d.Next=null;d.Y=B.Bot.Y;d.LeftBound=null;d.RightBound=B;d.RightBound.Side=h.EdgeSide.esRight;for(d.RightBound.WindDelta=0;B.Next.OutIdx!=h.ClipperBase.Skip;)B.NextInLML=B.Next,
+B.Bot.X!=B.Prev.Top.X&&this.ReverseHorizontal(B),B=B.Next;this.InsertLocalMinima(d);this.m_edges.push(G);return!0}this.m_edges.push(G);for(k=null;;){B=this.FindNextLocMin(B);if(B==k)break;else null==k&&(k=B);d=new h.LocalMinima;d.Next=null;d.Y=B.Bot.Y;B.Dx<B.Prev.Dx?(d.LeftBound=B.Prev,d.RightBound=B,G=!1):(d.LeftBound=B,d.RightBound=B.Prev,G=!0);d.LeftBound.Side=h.EdgeSide.esLeft;d.RightBound.Side=h.EdgeSide.esRight;d.LeftBound.WindDelta=e?d.LeftBound.Next==d.RightBound?-1:1:0;d.RightBound.WindDelta=
+-d.LeftBound.WindDelta;B=this.ProcessBound(d.LeftBound,G);E=this.ProcessBound(d.RightBound,!G);d.LeftBound.OutIdx==h.ClipperBase.Skip?d.LeftBound=null:d.RightBound.OutIdx==h.ClipperBase.Skip&&(d.RightBound=null);this.InsertLocalMinima(d);G||(B=E)}return!0};h.ClipperBase.prototype.AddPaths=function(b,d,e){for(var l=!1,h=0,k=b.length;h<k;++h)this.AddPath(b[h],d,e)&&(l=!0);return l};h.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3=function(b,d,e){return h.IntPoint.op_Equality(b,e)||h.IntPoint.op_Equality(b,
+d)||h.IntPoint.op_Equality(e,d)?!1:b.X!=e.X?d.X>b.X==d.X<e.X:d.Y>b.Y==d.Y<e.Y};h.ClipperBase.prototype.RemoveEdge=function(b){b.Prev.Next=b.Next;b.Next.Prev=b.Prev;var d=b.Next;b.Prev=null;return d};h.ClipperBase.prototype.SetDx=function(b){b.Delta.X=b.Top.X-b.Bot.X;b.Delta.Y=b.Top.Y-b.Bot.Y;b.Dx=0===b.Delta.Y?h.ClipperBase.horizontal:b.Delta.X/b.Delta.Y};h.ClipperBase.prototype.InsertLocalMinima=function(b){if(null===this.m_MinimaList)this.m_MinimaList=b;else if(b.Y>=this.m_MinimaList.Y)b.Next=this.m_MinimaList,
+this.m_MinimaList=b;else{for(var d=this.m_MinimaList;null!==d.Next&&b.Y<d.Next.Y;)d=d.Next;b.Next=d.Next;d.Next=b}};h.ClipperBase.prototype.PopLocalMinima=function(){null!==this.m_CurrentLM&&(this.m_CurrentLM=this.m_CurrentLM.Next)};h.ClipperBase.prototype.ReverseHorizontal=function(b){var d=b.Top.X;b.Top.X=b.Bot.X;b.Bot.X=d};h.ClipperBase.prototype.Reset=function(){this.m_CurrentLM=this.m_MinimaList;if(null!=this.m_CurrentLM)for(var b=this.m_MinimaList;null!=b;){var d=b.LeftBound;null!=d&&(d.Curr.X=
+d.Bot.X,d.Curr.Y=d.Bot.Y,d.Side=h.EdgeSide.esLeft,d.OutIdx=h.ClipperBase.Unassigned);d=b.RightBound;null!=d&&(d.Curr.X=d.Bot.X,d.Curr.Y=d.Bot.Y,d.Side=h.EdgeSide.esRight,d.OutIdx=h.ClipperBase.Unassigned);b=b.Next}};h.Clipper=function(b){"undefined"==typeof b&&(b=0);this.m_PolyOuts=null;this.m_ClipType=h.ClipType.ctIntersection;this.m_IntersectNodeComparer=this.m_IntersectList=this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m_ExecuteLocked=!1;this.m_SubjFillType=this.m_ClipFillType=
+h.PolyFillType.pftEvenOdd;this.m_GhostJoins=this.m_Joins=null;this.StrictlySimple=this.ReverseSolution=this.m_UsingPolyTree=!1;h.ClipperBase.call(this);this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.m_IntersectList=[];this.m_IntersectNodeComparer=h.MyIntersectNodeSort.Compare;this.m_UsingPolyTree=this.m_ExecuteLocked=!1;this.m_PolyOuts=[];this.m_Joins=[];this.m_GhostJoins=[];this.ReverseSolution=0!==(1&b);this.StrictlySimple=0!==(2&b);this.PreserveCollinear=0!==(4&b)};h.Clipper.ioReverseSolution=
+1;h.Clipper.ioStrictlySimple=2;h.Clipper.ioPreserveCollinear=4;h.Clipper.prototype.Clear=function(){0!==this.m_edges.length&&(this.DisposeAllPolyPts(),h.ClipperBase.prototype.Clear.call(this))};h.Clipper.prototype.DisposeScanbeamList=function(){for(;null!==this.m_Scanbeam;){var b=this.m_Scanbeam.Next;this.m_Scanbeam=null;this.m_Scanbeam=b}};h.Clipper.prototype.Reset=function(){h.ClipperBase.prototype.Reset.call(this);this.m_SortedEdges=this.m_ActiveEdges=this.m_Scanbeam=null;this.DisposeAllPolyPts();
+for(var b=this.m_MinimaList;null!==b;)this.InsertScanbeam(b.Y),b=b.Next};h.Clipper.prototype.InsertScanbeam=function(b){if(null===this.m_Scanbeam)this.m_Scanbeam=new h.Scanbeam,this.m_Scanbeam.Next=null,this.m_Scanbeam.Y=b;else if(b>this.m_Scanbeam.Y){var d=new h.Scanbeam;d.Y=b;d.Next=this.m_Scanbeam;this.m_Scanbeam=d}else{for(var e=this.m_Scanbeam;null!==e.Next&&b<=e.Next.Y;)e=e.Next;b!=e.Y&&(d=new h.Scanbeam,d.Y=b,d.Next=e.Next,e.Next=d)}};h.Clipper.prototype.Execute=function(){var b=arguments,
+d=b.length,e=b[1]instanceof h.PolyTree;if(4!=d||e){if(4==d&&e){e=b[0];d=b[1];l=b[2];b=b[3];if(this.m_ExecuteLocked)return!1;this.m_ExecuteLocked=!0;this.m_SubjFillType=l;this.m_ClipFillType=b;this.m_ClipType=e;this.m_UsingPolyTree=!0;(b=this.ExecuteInternal())&&this.BuildResult2(d);this.m_ExecuteLocked=!1;return b}if(2==d&&!e||2==d&&e)return e=b[0],d=b[1],this.Execute(e,d,h.PolyFillType.pftEvenOdd,h.PolyFillType.pftEvenOdd)}else{var e=b[0],d=b[1],l=b[2],b=b[3];if(this.m_ExecuteLocked)return!1;this.m_HasOpenPaths&&
+h.Error("Error: PolyTree struct is need for open path clipping.");this.m_ExecuteLocked=!0;h.Clear(d);this.m_SubjFillType=l;this.m_ClipFillType=b;this.m_ClipType=e;this.m_UsingPolyTree=!1;(b=this.ExecuteInternal())&&this.BuildResult(d);this.m_ExecuteLocked=!1;return b}};h.Clipper.prototype.FixHoleLinkage=function(b){if(null!==b.FirstLeft&&(b.IsHole==b.FirstLeft.IsHole||null===b.FirstLeft.Pts)){for(var d=b.FirstLeft;null!==d&&(d.IsHole==b.IsHole||null===d.Pts);)d=d.FirstLeft;b.FirstLeft=d}};h.Clipper.prototype.ExecuteInternal=
+function(){try{this.Reset();if(null===this.m_CurrentLM)return!1;var b=this.PopScanbeam();do{this.InsertLocalMinimaIntoAEL(b);h.Clear(this.m_GhostJoins);this.ProcessHorizontals(!1);if(null===this.m_Scanbeam)break;var d=this.PopScanbeam();if(!this.ProcessIntersections(b,d))return!1;this.ProcessEdgesAtTopOfScanbeam(d);b=d}while(null!==this.m_Scanbeam||null!==this.m_CurrentLM);for(var b=0,e=this.m_PolyOuts.length;b<e;b++){var l=this.m_PolyOuts[b];null===l.Pts||l.IsOpen||(l.IsHole^this.ReverseSolution)==
+0<this.Area(l)&&this.ReversePolyPtLinks(l.Pts)}this.JoinCommonEdges();b=0;for(e=this.m_PolyOuts.length;b<e;b++)l=this.m_PolyOuts[b],null===l.Pts||l.IsOpen||this.FixupOutPolygon(l);this.StrictlySimple&&this.DoSimplePolygons();return!0}finally{h.Clear(this.m_Joins),h.Clear(this.m_GhostJoins)}};h.Clipper.prototype.PopScanbeam=function(){var b=this.m_Scanbeam.Y;this.m_Scanbeam=this.m_Scanbeam.Next;return b};h.Clipper.prototype.DisposeAllPolyPts=function(){for(var b=0,d=this.m_PolyOuts.length;b<d;++b)this.DisposeOutRec(b);
+h.Clear(this.m_PolyOuts)};h.Clipper.prototype.DisposeOutRec=function(b){var d=this.m_PolyOuts[b];null!==d.Pts&&this.DisposeOutPts(d.Pts);this.m_PolyOuts[b]=null};h.Clipper.prototype.DisposeOutPts=function(b){if(null!==b)for(b.Prev.Next=null;null!==b;)b=b.Next};h.Clipper.prototype.AddJoin=function(b,d,e){var l=new h.Join;l.OutPt1=b;l.OutPt2=d;l.OffPt.X=e.X;l.OffPt.Y=e.Y;this.m_Joins.push(l)};h.Clipper.prototype.AddGhostJoin=function(b,d){var e=new h.Join;e.OutPt1=b;e.OffPt.X=d.X;e.OffPt.Y=d.Y;this.m_GhostJoins.push(e)};
+h.Clipper.prototype.InsertLocalMinimaIntoAEL=function(b){for(;null!==this.m_CurrentLM&&this.m_CurrentLM.Y==b;){var d=this.m_CurrentLM.LeftBound,e=this.m_CurrentLM.RightBound;this.PopLocalMinima();var l=null;null===d?(this.InsertEdgeIntoAEL(e,null),this.SetWindingCount(e),this.IsContributing(e)&&(l=this.AddOutPt(e,e.Bot))):(null==e?(this.InsertEdgeIntoAEL(d,null),this.SetWindingCount(d),this.IsContributing(d)&&(l=this.AddOutPt(d,d.Bot))):(this.InsertEdgeIntoAEL(d,null),this.InsertEdgeIntoAEL(e,d),
+this.SetWindingCount(d),e.WindCnt=d.WindCnt,e.WindCnt2=d.WindCnt2,this.IsContributing(d)&&(l=this.AddLocalMinPoly(d,e,d.Bot))),this.InsertScanbeam(d.Top.Y));null!=e&&(h.ClipperBase.IsHorizontal(e)?this.AddEdgeToSEL(e):this.InsertScanbeam(e.Top.Y));if(null!=d&&null!=e){if(null!==l&&h.ClipperBase.IsHorizontal(e)&&0<this.m_GhostJoins.length&&0!==e.WindDelta)for(var G=0,k=this.m_GhostJoins.length;G<k;G++){var w=this.m_GhostJoins[G];this.HorzSegmentsOverlap(w.OutPt1.Pt,w.OffPt,e.Bot,e.Top)&&this.AddJoin(w.OutPt1,
+l,w.OffPt)}0<=d.OutIdx&&null!==d.PrevInAEL&&d.PrevInAEL.Curr.X==d.Bot.X&&0<=d.PrevInAEL.OutIdx&&h.ClipperBase.SlopesEqual(d.PrevInAEL,d,this.m_UseFullRange)&&0!==d.WindDelta&&0!==d.PrevInAEL.WindDelta&&(G=this.AddOutPt(d.PrevInAEL,d.Bot),this.AddJoin(l,G,d.Top));if(d.NextInAEL!=e&&(0<=e.OutIdx&&0<=e.PrevInAEL.OutIdx&&h.ClipperBase.SlopesEqual(e.PrevInAEL,e,this.m_UseFullRange)&&0!==e.WindDelta&&0!==e.PrevInAEL.WindDelta&&(G=this.AddOutPt(e.PrevInAEL,e.Bot),this.AddJoin(l,G,e.Top)),l=d.NextInAEL,null!==
+l))for(;l!=e;)this.IntersectEdges(e,l,d.Curr,!1),l=l.NextInAEL}}};h.Clipper.prototype.InsertEdgeIntoAEL=function(b,d){if(null===this.m_ActiveEdges)b.PrevInAEL=null,b.NextInAEL=null,this.m_ActiveEdges=b;else if(null===d&&this.E2InsertsBeforeE1(this.m_ActiveEdges,b))b.PrevInAEL=null,b.NextInAEL=this.m_ActiveEdges,this.m_ActiveEdges=this.m_ActiveEdges.PrevInAEL=b;else{for(null===d&&(d=this.m_ActiveEdges);null!==d.NextInAEL&&!this.E2InsertsBeforeE1(d.NextInAEL,b);)d=d.NextInAEL;b.NextInAEL=d.NextInAEL;
+null!==d.NextInAEL&&(d.NextInAEL.PrevInAEL=b);b.PrevInAEL=d;d.NextInAEL=b}};h.Clipper.prototype.E2InsertsBeforeE1=function(b,d){return d.Curr.X==b.Curr.X?d.Top.Y>b.Top.Y?d.Top.X<h.Clipper.TopX(b,d.Top.Y):b.Top.X>h.Clipper.TopX(d,b.Top.Y):d.Curr.X<b.Curr.X};h.Clipper.prototype.IsEvenOddFillType=function(b){return b.PolyTyp==h.PolyType.ptSubject?this.m_SubjFillType==h.PolyFillType.pftEvenOdd:this.m_ClipFillType==h.PolyFillType.pftEvenOdd};h.Clipper.prototype.IsEvenOddAltFillType=function(b){return b.PolyTyp==
+h.PolyType.ptSubject?this.m_ClipFillType==h.PolyFillType.pftEvenOdd:this.m_SubjFillType==h.PolyFillType.pftEvenOdd};h.Clipper.prototype.IsContributing=function(b){var d,e;b.PolyTyp==h.PolyType.ptSubject?(d=this.m_SubjFillType,e=this.m_ClipFillType):(d=this.m_ClipFillType,e=this.m_SubjFillType);switch(d){case h.PolyFillType.pftEvenOdd:if(0===b.WindDelta&&1!=b.WindCnt)return!1;break;case h.PolyFillType.pftNonZero:if(1!=Math.abs(b.WindCnt))return!1;break;case h.PolyFillType.pftPositive:if(1!=b.WindCnt)return!1;
+break;default:if(-1!=b.WindCnt)return!1}switch(this.m_ClipType){case h.ClipType.ctIntersection:switch(e){case h.PolyFillType.pftEvenOdd:case h.PolyFillType.pftNonZero:return 0!==b.WindCnt2;case h.PolyFillType.pftPositive:return 0<b.WindCnt2;default:return 0>b.WindCnt2}case h.ClipType.ctUnion:switch(e){case h.PolyFillType.pftEvenOdd:case h.PolyFillType.pftNonZero:return 0===b.WindCnt2;case h.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}case h.ClipType.ctDifference:if(b.PolyTyp==
+h.PolyType.ptSubject)switch(e){case h.PolyFillType.pftEvenOdd:case h.PolyFillType.pftNonZero:return 0===b.WindCnt2;case h.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}else switch(e){case h.PolyFillType.pftEvenOdd:case h.PolyFillType.pftNonZero:return 0!==b.WindCnt2;case h.PolyFillType.pftPositive:return 0<b.WindCnt2;default:return 0>b.WindCnt2}case h.ClipType.ctXor:if(0===b.WindDelta)switch(e){case h.PolyFillType.pftEvenOdd:case h.PolyFillType.pftNonZero:return 0===b.WindCnt2;
+case h.PolyFillType.pftPositive:return 0>=b.WindCnt2;default:return 0<=b.WindCnt2}}return!0};h.Clipper.prototype.SetWindingCount=function(b){for(var d=b.PrevInAEL;null!==d&&(d.PolyTyp!=b.PolyTyp||0===d.WindDelta);)d=d.PrevInAEL;if(null===d)b.WindCnt=0===b.WindDelta?1:b.WindDelta,b.WindCnt2=0,d=this.m_ActiveEdges;else{if(0===b.WindDelta&&this.m_ClipType!=h.ClipType.ctUnion)b.WindCnt=1;else if(this.IsEvenOddFillType(b))if(0===b.WindDelta){for(var e=!0,l=d.PrevInAEL;null!==l;)l.PolyTyp==d.PolyTyp&&0!==
+l.WindDelta&&(e=!e),l=l.PrevInAEL;b.WindCnt=e?0:1}else b.WindCnt=b.WindDelta;else 0>d.WindCnt*d.WindDelta?1<Math.abs(d.WindCnt)?b.WindCnt=0>d.WindDelta*b.WindDelta?d.WindCnt:d.WindCnt+b.WindDelta:b.WindCnt=0===b.WindDelta?1:b.WindDelta:b.WindCnt=0===b.WindDelta?0>d.WindCnt?d.WindCnt-1:d.WindCnt+1:0>d.WindDelta*b.WindDelta?d.WindCnt:d.WindCnt+b.WindDelta;b.WindCnt2=d.WindCnt2;d=d.NextInAEL}if(this.IsEvenOddAltFillType(b))for(;d!=b;)0!==d.WindDelta&&(b.WindCnt2=0===b.WindCnt2?1:0),d=d.NextInAEL;else for(;d!=
+b;)b.WindCnt2+=d.WindDelta,d=d.NextInAEL};h.Clipper.prototype.AddEdgeToSEL=function(b){null===this.m_SortedEdges?(this.m_SortedEdges=b,b.PrevInSEL=null,b.NextInSEL=null):(b.NextInSEL=this.m_SortedEdges,b.PrevInSEL=null,this.m_SortedEdges=this.m_SortedEdges.PrevInSEL=b)};h.Clipper.prototype.CopyAELToSEL=function(){var b=this.m_ActiveEdges;for(this.m_SortedEdges=b;null!==b;)b.PrevInSEL=b.PrevInAEL,b=b.NextInSEL=b.NextInAEL};h.Clipper.prototype.SwapPositionsInAEL=function(b,d){if(b.NextInAEL!=b.PrevInAEL&&
+d.NextInAEL!=d.PrevInAEL){if(b.NextInAEL==d){var e=d.NextInAEL;null!==e&&(e.PrevInAEL=b);var l=b.PrevInAEL;null!==l&&(l.NextInAEL=d);d.PrevInAEL=l;d.NextInAEL=b;b.PrevInAEL=d;b.NextInAEL=e}else d.NextInAEL==b?(e=b.NextInAEL,null!==e&&(e.PrevInAEL=d),l=d.PrevInAEL,null!==l&&(l.NextInAEL=b),b.PrevInAEL=l,b.NextInAEL=d,d.PrevInAEL=b,d.NextInAEL=e):(e=b.NextInAEL,l=b.PrevInAEL,b.NextInAEL=d.NextInAEL,null!==b.NextInAEL&&(b.NextInAEL.PrevInAEL=b),b.PrevInAEL=d.PrevInAEL,null!==b.PrevInAEL&&(b.PrevInAEL.NextInAEL=
+b),d.NextInAEL=e,null!==d.NextInAEL&&(d.NextInAEL.PrevInAEL=d),d.PrevInAEL=l,null!==d.PrevInAEL&&(d.PrevInAEL.NextInAEL=d));null===b.PrevInAEL?this.m_ActiveEdges=b:null===d.PrevInAEL&&(this.m_ActiveEdges=d)}};h.Clipper.prototype.SwapPositionsInSEL=function(b,d){if(null!==b.NextInSEL||null!==b.PrevInSEL)if(null!==d.NextInSEL||null!==d.PrevInSEL){if(b.NextInSEL==d){var e=d.NextInSEL;null!==e&&(e.PrevInSEL=b);var l=b.PrevInSEL;null!==l&&(l.NextInSEL=d);d.PrevInSEL=l;d.NextInSEL=b;b.PrevInSEL=d;b.NextInSEL=
+e}else d.NextInSEL==b?(e=b.NextInSEL,null!==e&&(e.PrevInSEL=d),l=d.PrevInSEL,null!==l&&(l.NextInSEL=b),b.PrevInSEL=l,b.NextInSEL=d,d.PrevInSEL=b,d.NextInSEL=e):(e=b.NextInSEL,l=b.PrevInSEL,b.NextInSEL=d.NextInSEL,null!==b.NextInSEL&&(b.NextInSEL.PrevInSEL=b),b.PrevInSEL=d.PrevInSEL,null!==b.PrevInSEL&&(b.PrevInSEL.NextInSEL=b),d.NextInSEL=e,null!==d.NextInSEL&&(d.NextInSEL.PrevInSEL=d),d.PrevInSEL=l,null!==d.PrevInSEL&&(d.PrevInSEL.NextInSEL=d));null===b.PrevInSEL?this.m_SortedEdges=b:null===d.PrevInSEL&&
+(this.m_SortedEdges=d)}};h.Clipper.prototype.AddLocalMaxPoly=function(b,d,e){this.AddOutPt(b,e);0==d.WindDelta&&this.AddOutPt(d,e);b.OutIdx==d.OutIdx?(b.OutIdx=-1,d.OutIdx=-1):b.OutIdx<d.OutIdx?this.AppendPolygon(b,d):this.AppendPolygon(d,b)};h.Clipper.prototype.AddLocalMinPoly=function(b,d,e){var l,G;h.ClipperBase.IsHorizontal(d)||b.Dx>d.Dx?(l=this.AddOutPt(b,e),d.OutIdx=b.OutIdx,b.Side=h.EdgeSide.esLeft,d.Side=h.EdgeSide.esRight,G=b,b=G.PrevInAEL==d?d.PrevInAEL:G.PrevInAEL):(l=this.AddOutPt(d,e),
+b.OutIdx=d.OutIdx,b.Side=h.EdgeSide.esRight,d.Side=h.EdgeSide.esLeft,G=d,b=G.PrevInAEL==b?b.PrevInAEL:G.PrevInAEL);null!==b&&0<=b.OutIdx&&h.Clipper.TopX(b,e.Y)==h.Clipper.TopX(G,e.Y)&&h.ClipperBase.SlopesEqual(G,b,this.m_UseFullRange)&&0!==G.WindDelta&&0!==b.WindDelta&&(e=this.AddOutPt(b,e),this.AddJoin(l,e,G.Top));return l};h.Clipper.prototype.CreateOutRec=function(){var b=new h.OutRec;b.Idx=-1;b.IsHole=!1;b.IsOpen=!1;b.FirstLeft=null;b.Pts=null;b.BottomPt=null;b.PolyNode=null;this.m_PolyOuts.push(b);
+b.Idx=this.m_PolyOuts.length-1;return b};h.Clipper.prototype.AddOutPt=function(b,d){var e=b.Side==h.EdgeSide.esLeft;if(0>b.OutIdx){var l=this.CreateOutRec();l.IsOpen=0===b.WindDelta;var G=new h.OutPt;l.Pts=G;G.Idx=l.Idx;G.Pt.X=d.X;G.Pt.Y=d.Y;G.Next=G;G.Prev=G;l.IsOpen||this.SetHoleState(b,l);b.OutIdx=l.Idx}else{var l=this.m_PolyOuts[b.OutIdx],k=l.Pts;if(e&&h.IntPoint.op_Equality(d,k.Pt))return k;if(!e&&h.IntPoint.op_Equality(d,k.Prev.Pt))return k.Prev;G=new h.OutPt;G.Idx=l.Idx;G.Pt.X=d.X;G.Pt.Y=d.Y;
+G.Next=k;G.Prev=k.Prev;G.Prev.Next=G;k.Prev=G;e&&(l.Pts=G)}return G};h.Clipper.prototype.SwapPoints=function(b,d){var e=new h.IntPoint(b.Value);b.Value.X=d.Value.X;b.Value.Y=d.Value.Y;d.Value.X=e.X;d.Value.Y=e.Y};h.Clipper.prototype.HorzSegmentsOverlap=function(b,d,e,l){return b.X>e.X==b.X<l.X?!0:d.X>e.X==d.X<l.X?!0:e.X>b.X==e.X<d.X?!0:l.X>b.X==l.X<d.X?!0:b.X==e.X&&d.X==l.X?!0:b.X==l.X&&d.X==e.X?!0:!1};h.Clipper.prototype.InsertPolyPtBetween=function(b,d,e){var l=new h.OutPt;l.Pt.X=e.X;l.Pt.Y=e.Y;
+d==b.Next?(b.Next=l,d.Prev=l,l.Next=d,l.Prev=b):(d.Next=l,b.Prev=l,l.Next=b,l.Prev=d);return l};h.Clipper.prototype.SetHoleState=function(b,d){for(var e=!1,l=b.PrevInAEL;null!==l;)0<=l.OutIdx&&0!=l.WindDelta&&(e=!e,null===d.FirstLeft&&(d.FirstLeft=this.m_PolyOuts[l.OutIdx])),l=l.PrevInAEL;e&&(d.IsHole=!0)};h.Clipper.prototype.GetDx=function(b,d){return b.Y==d.Y?h.ClipperBase.horizontal:(d.X-b.X)/(d.Y-b.Y)};h.Clipper.prototype.FirstIsBottomPt=function(b,d){for(var e=b.Prev;h.IntPoint.op_Equality(e.Pt,
+b.Pt)&&e!=b;)e=e.Prev;for(var l=Math.abs(this.GetDx(b.Pt,e.Pt)),e=b.Next;h.IntPoint.op_Equality(e.Pt,b.Pt)&&e!=b;)e=e.Next;for(var G=Math.abs(this.GetDx(b.Pt,e.Pt)),e=d.Prev;h.IntPoint.op_Equality(e.Pt,d.Pt)&&e!=d;)e=e.Prev;for(var k=Math.abs(this.GetDx(d.Pt,e.Pt)),e=d.Next;h.IntPoint.op_Equality(e.Pt,d.Pt)&&e!=d;)e=e.Next;e=Math.abs(this.GetDx(d.Pt,e.Pt));return l>=k&&l>=e||G>=k&&G>=e};h.Clipper.prototype.GetBottomPt=function(b){for(var d=null,e=b.Next;e!=b;)e.Pt.Y>b.Pt.Y?(b=e,d=null):e.Pt.Y==b.Pt.Y&&
+e.Pt.X<=b.Pt.X&&(e.Pt.X<b.Pt.X?(d=null,b=e):e.Next!=b&&e.Prev!=b&&(d=e)),e=e.Next;if(null!==d)for(;d!=e;)for(this.FirstIsBottomPt(e,d)||(b=d),d=d.Next;h.IntPoint.op_Inequality(d.Pt,b.Pt);)d=d.Next;return b};h.Clipper.prototype.GetLowermostRec=function(b,d){null===b.BottomPt&&(b.BottomPt=this.GetBottomPt(b.Pts));null===d.BottomPt&&(d.BottomPt=this.GetBottomPt(d.Pts));var e=b.BottomPt,l=d.BottomPt;return e.Pt.Y>l.Pt.Y?b:e.Pt.Y<l.Pt.Y?d:e.Pt.X<l.Pt.X?b:e.Pt.X>l.Pt.X?d:e.Next==e?d:l.Next==l?b:this.FirstIsBottomPt(e,
+l)?b:d};h.Clipper.prototype.Param1RightOfParam2=function(b,d){do if(b=b.FirstLeft,b==d)return!0;while(null!==b);return!1};h.Clipper.prototype.GetOutRec=function(b){for(b=this.m_PolyOuts[b];b!=this.m_PolyOuts[b.Idx];)b=this.m_PolyOuts[b.Idx];return b};h.Clipper.prototype.AppendPolygon=function(b,d){var e=this.m_PolyOuts[b.OutIdx],l=this.m_PolyOuts[d.OutIdx],G;G=this.Param1RightOfParam2(e,l)?l:this.Param1RightOfParam2(l,e)?e:this.GetLowermostRec(e,l);var k=e.Pts,w=k.Prev,E=l.Pts,B=E.Prev;b.Side==h.EdgeSide.esLeft?
+(d.Side==h.EdgeSide.esLeft?(this.ReversePolyPtLinks(E),E.Next=k,k.Prev=E,w.Next=B,B.Prev=w,e.Pts=B):(B.Next=k,k.Prev=B,E.Prev=w,w.Next=E,e.Pts=E),k=h.EdgeSide.esLeft):(d.Side==h.EdgeSide.esRight?(this.ReversePolyPtLinks(E),w.Next=B,B.Prev=w,E.Next=k,k.Prev=E):(w.Next=E,E.Prev=w,k.Prev=B,B.Next=k),k=h.EdgeSide.esRight);e.BottomPt=null;G==l&&(l.FirstLeft!=e&&(e.FirstLeft=l.FirstLeft),e.IsHole=l.IsHole);l.Pts=null;l.BottomPt=null;l.FirstLeft=e;G=b.OutIdx;w=d.OutIdx;b.OutIdx=-1;d.OutIdx=-1;for(E=this.m_ActiveEdges;null!==
+E;){if(E.OutIdx==w){E.OutIdx=G;E.Side=k;break}E=E.NextInAEL}l.Idx=e.Idx};h.Clipper.prototype.ReversePolyPtLinks=function(b){if(null!==b){var d,e;d=b;do e=d.Next,d.Next=d.Prev,d=d.Prev=e;while(d!=b)}};h.Clipper.SwapSides=function(b,d){var e=b.Side;b.Side=d.Side;d.Side=e};h.Clipper.SwapPolyIndexes=function(b,d){var e=b.OutIdx;b.OutIdx=d.OutIdx;d.OutIdx=e};h.Clipper.prototype.IntersectEdges=function(b,d,e,l){var G=!l&&null===b.NextInLML&&b.Top.X==e.X&&b.Top.Y==e.Y;l=!l&&null===d.NextInLML&&d.Top.X==
+e.X&&d.Top.Y==e.Y;var k=0<=b.OutIdx,w=0<=d.OutIdx;if(0===b.WindDelta||0===d.WindDelta)0===b.WindDelta&&0===d.WindDelta?(G||l)&&k&&w&&this.AddLocalMaxPoly(b,d,e):b.PolyTyp==d.PolyTyp&&b.WindDelta!=d.WindDelta&&this.m_ClipType==h.ClipType.ctUnion?0===b.WindDelta?w&&(this.AddOutPt(b,e),k&&(b.OutIdx=-1)):k&&(this.AddOutPt(d,e),w&&(d.OutIdx=-1)):b.PolyTyp!=d.PolyTyp&&(0!==b.WindDelta||1!=Math.abs(d.WindCnt)||this.m_ClipType==h.ClipType.ctUnion&&0!==d.WindCnt2?0!==d.WindDelta||1!=Math.abs(b.WindCnt)||this.m_ClipType==
+h.ClipType.ctUnion&&0!==b.WindCnt2||(this.AddOutPt(d,e),w&&(d.OutIdx=-1)):(this.AddOutPt(b,e),k&&(b.OutIdx=-1))),G&&(0>b.OutIdx?this.DeleteFromAEL(b):h.Error("Error intersecting polylines")),l&&(0>d.OutIdx?this.DeleteFromAEL(d):h.Error("Error intersecting polylines"));else{if(b.PolyTyp==d.PolyTyp)if(this.IsEvenOddFillType(b)){var E=b.WindCnt;b.WindCnt=d.WindCnt;d.WindCnt=E}else b.WindCnt=0===b.WindCnt+d.WindDelta?-b.WindCnt:b.WindCnt+d.WindDelta,d.WindCnt=0===d.WindCnt-b.WindDelta?-d.WindCnt:d.WindCnt-
+b.WindDelta;else this.IsEvenOddFillType(d)?b.WindCnt2=0===b.WindCnt2?1:0:b.WindCnt2+=d.WindDelta,this.IsEvenOddFillType(b)?d.WindCnt2=0===d.WindCnt2?1:0:d.WindCnt2-=b.WindDelta;var B,q,L;b.PolyTyp==h.PolyType.ptSubject?(B=this.m_SubjFillType,L=this.m_ClipFillType):(B=this.m_ClipFillType,L=this.m_SubjFillType);d.PolyTyp==h.PolyType.ptSubject?(q=this.m_SubjFillType,E=this.m_ClipFillType):(q=this.m_ClipFillType,E=this.m_SubjFillType);switch(B){case h.PolyFillType.pftPositive:B=b.WindCnt;break;case h.PolyFillType.pftNegative:B=
+-b.WindCnt;break;default:B=Math.abs(b.WindCnt)}switch(q){case h.PolyFillType.pftPositive:q=d.WindCnt;break;case h.PolyFillType.pftNegative:q=-d.WindCnt;break;default:q=Math.abs(d.WindCnt)}if(k&&w)G||l||0!==B&&1!=B||0!==q&&1!=q||b.PolyTyp!=d.PolyTyp&&this.m_ClipType!=h.ClipType.ctXor?this.AddLocalMaxPoly(b,d,e):(this.AddOutPt(b,e),this.AddOutPt(d,e),h.Clipper.SwapSides(b,d),h.Clipper.SwapPolyIndexes(b,d));else if(k){if(0===q||1==q)this.AddOutPt(b,e),h.Clipper.SwapSides(b,d),h.Clipper.SwapPolyIndexes(b,
+d)}else if(w){if(0===B||1==B)this.AddOutPt(d,e),h.Clipper.SwapSides(b,d),h.Clipper.SwapPolyIndexes(b,d)}else if(!(0!==B&&1!=B||0!==q&&1!=q||G||l)){switch(L){case h.PolyFillType.pftPositive:k=b.WindCnt2;break;case h.PolyFillType.pftNegative:k=-b.WindCnt2;break;default:k=Math.abs(b.WindCnt2)}switch(E){case h.PolyFillType.pftPositive:w=d.WindCnt2;break;case h.PolyFillType.pftNegative:w=-d.WindCnt2;break;default:w=Math.abs(d.WindCnt2)}if(b.PolyTyp!=d.PolyTyp)this.AddLocalMinPoly(b,d,e);else if(1==B&&
+1==q)switch(this.m_ClipType){case h.ClipType.ctIntersection:0<k&&0<w&&this.AddLocalMinPoly(b,d,e);break;case h.ClipType.ctUnion:0>=k&&0>=w&&this.AddLocalMinPoly(b,d,e);break;case h.ClipType.ctDifference:(b.PolyTyp==h.PolyType.ptClip&&0<k&&0<w||b.PolyTyp==h.PolyType.ptSubject&&0>=k&&0>=w)&&this.AddLocalMinPoly(b,d,e);break;case h.ClipType.ctXor:this.AddLocalMinPoly(b,d,e)}else h.Clipper.SwapSides(b,d)}G!=l&&(G&&0<=b.OutIdx||l&&0<=d.OutIdx)&&(h.Clipper.SwapSides(b,d),h.Clipper.SwapPolyIndexes(b,d));
+G&&this.DeleteFromAEL(b);l&&this.DeleteFromAEL(d)}};h.Clipper.prototype.DeleteFromAEL=function(b){var d=b.PrevInAEL,e=b.NextInAEL;if(null!==d||null!==e||b==this.m_ActiveEdges)null!==d?d.NextInAEL=e:this.m_ActiveEdges=e,null!==e&&(e.PrevInAEL=d),b.NextInAEL=null,b.PrevInAEL=null};h.Clipper.prototype.DeleteFromSEL=function(b){var d=b.PrevInSEL,e=b.NextInSEL;if(null!==d||null!==e||b==this.m_SortedEdges)null!==d?d.NextInSEL=e:this.m_SortedEdges=e,null!==e&&(e.PrevInSEL=d),b.NextInSEL=null,b.PrevInSEL=
+null};h.Clipper.prototype.UpdateEdgeIntoAEL=function(b){null===b.Value.NextInLML&&h.Error("UpdateEdgeIntoAEL: invalid call");var d=b.Value.PrevInAEL,e=b.Value.NextInAEL;b.Value.NextInLML.OutIdx=b.Value.OutIdx;null!==d?d.NextInAEL=b.Value.NextInLML:this.m_ActiveEdges=b.Value.NextInLML;null!==e&&(e.PrevInAEL=b.Value.NextInLML);b.Value.NextInLML.Side=b.Value.Side;b.Value.NextInLML.WindDelta=b.Value.WindDelta;b.Value.NextInLML.WindCnt=b.Value.WindCnt;b.Value.NextInLML.WindCnt2=b.Value.WindCnt2;b.Value=
+b.Value.NextInLML;b.Value.Curr.X=b.Value.Bot.X;b.Value.Curr.Y=b.Value.Bot.Y;b.Value.PrevInAEL=d;b.Value.NextInAEL=e;h.ClipperBase.IsHorizontal(b.Value)||this.InsertScanbeam(b.Value.Top.Y)};h.Clipper.prototype.ProcessHorizontals=function(b){for(var d=this.m_SortedEdges;null!==d;)this.DeleteFromSEL(d),this.ProcessHorizontal(d,b),d=this.m_SortedEdges};h.Clipper.prototype.GetHorzDirection=function(b,d,e,l){b.Bot.X<b.Top.X?(e.Value=b.Bot.X,l.Value=b.Top.X,d.Value=h.Direction.dLeftToRight):(e.Value=b.Top.X,
+l.Value=b.Bot.X,d.Value=h.Direction.dRightToLeft)};h.Clipper.prototype.PrepareHorzJoins=function(b,d){var e=this.m_PolyOuts[b.OutIdx].Pts;b.Side!=h.EdgeSide.esLeft&&(e=e.Prev);for(var l=0,G=this.m_GhostJoins.length;l<G;++l){var k=this.m_GhostJoins[l];this.HorzSegmentsOverlap(k.OutPt1.Pt,k.OffPt,b.Bot,b.Top)&&this.AddJoin(k.OutPt1,e,k.OffPt)}d&&(h.IntPoint.op_Equality(e.Pt,b.Top)?this.AddGhostJoin(e,b.Bot):this.AddGhostJoin(e,b.Top))};h.Clipper.prototype.ProcessHorizontal=function(b,d){var e,l,k;(function(){e=
+{Value:e};l={Value:l};k={Value:k};var d=this.GetHorzDirection(b,e,l,k);e=e.Value;l=l.Value;k=k.Value;return d}).call(this);for(var r=b,w=null;null!==r.NextInLML&&h.ClipperBase.IsHorizontal(r.NextInLML);)r=r.NextInLML;for(null===r.NextInLML&&(w=this.GetMaximaPair(r));;){for(var E=b==r,B=this.GetNextInAEL(b,e);null!==B&&!(B.Curr.X==b.Top.X&&null!==b.NextInLML&&B.Dx<b.NextInLML.Dx);){var q=this.GetNextInAEL(B,e);if(e==h.Direction.dLeftToRight&&B.Curr.X<=k||e==h.Direction.dRightToLeft&&B.Curr.X>=l){0<=
+b.OutIdx&&0!=b.WindDelta&&this.PrepareHorzJoins(b,d);if(B==w&&E){e==h.Direction.dLeftToRight?this.IntersectEdges(b,B,B.Top,!1):this.IntersectEdges(B,b,B.Top,!1);0<=w.OutIdx&&h.Error("ProcessHorizontal error");return}if(e==h.Direction.dLeftToRight){var L=new h.IntPoint(B.Curr.X,b.Curr.Y);this.IntersectEdges(b,B,L,!0)}else L=new h.IntPoint(B.Curr.X,b.Curr.Y),this.IntersectEdges(B,b,L,!0);this.SwapPositionsInAEL(b,B)}else if(e==h.Direction.dLeftToRight&&B.Curr.X>=k||e==h.Direction.dRightToLeft&&B.Curr.X<=
+l)break;B=q}0<=b.OutIdx&&0!==b.WindDelta&&this.PrepareHorzJoins(b,d);if(null!==b.NextInLML&&h.ClipperBase.IsHorizontal(b.NextInLML))(function(){b={Value:b};var d=this.UpdateEdgeIntoAEL(b);b=b.Value;return d}).call(this),0<=b.OutIdx&&this.AddOutPt(b,b.Bot),function(){e={Value:e};l={Value:l};k={Value:k};var d=this.GetHorzDirection(b,e,l,k);e=e.Value;l=l.Value;k=k.Value;return d}.call(this);else break}null!==b.NextInLML?0<=b.OutIdx?(r=this.AddOutPt(b,b.Top),function(){b={Value:b};var d=this.UpdateEdgeIntoAEL(b);
+b=b.Value;return d}.call(this),0!==b.WindDelta&&(w=b.PrevInAEL,q=b.NextInAEL,null!==w&&w.Curr.X==b.Bot.X&&w.Curr.Y==b.Bot.Y&&0!==w.WindDelta&&0<=w.OutIdx&&w.Curr.Y>w.Top.Y&&h.ClipperBase.SlopesEqual(b,w,this.m_UseFullRange)?(q=this.AddOutPt(w,b.Bot),this.AddJoin(r,q,b.Top)):null!==q&&q.Curr.X==b.Bot.X&&q.Curr.Y==b.Bot.Y&&0!==q.WindDelta&&0<=q.OutIdx&&q.Curr.Y>q.Top.Y&&h.ClipperBase.SlopesEqual(b,q,this.m_UseFullRange)&&(q=this.AddOutPt(q,b.Bot),this.AddJoin(r,q,b.Top)))):function(){b={Value:b};var d=
+this.UpdateEdgeIntoAEL(b);b=b.Value;return d}.call(this):null!==w?0<=w.OutIdx?(e==h.Direction.dLeftToRight?this.IntersectEdges(b,w,b.Top,!1):this.IntersectEdges(w,b,b.Top,!1),0<=w.OutIdx&&h.Error("ProcessHorizontal error")):(this.DeleteFromAEL(b),this.DeleteFromAEL(w)):(0<=b.OutIdx&&this.AddOutPt(b,b.Top),this.DeleteFromAEL(b))};h.Clipper.prototype.GetNextInAEL=function(b,d){return d==h.Direction.dLeftToRight?b.NextInAEL:b.PrevInAEL};h.Clipper.prototype.IsMinima=function(b){return null!==b&&b.Prev.NextInLML!=
+b&&b.Next.NextInLML!=b};h.Clipper.prototype.IsMaxima=function(b,d){return null!==b&&b.Top.Y==d&&null===b.NextInLML};h.Clipper.prototype.IsIntermediate=function(b,d){return b.Top.Y==d&&null!==b.NextInLML};h.Clipper.prototype.GetMaximaPair=function(b){var d=null;h.IntPoint.op_Equality(b.Next.Top,b.Top)&&null===b.Next.NextInLML?d=b.Next:h.IntPoint.op_Equality(b.Prev.Top,b.Top)&&null===b.Prev.NextInLML&&(d=b.Prev);return null===d||-2!=d.OutIdx&&(d.NextInAEL!=d.PrevInAEL||h.ClipperBase.IsHorizontal(d))?
+d:null};h.Clipper.prototype.ProcessIntersections=function(b,d){if(null==this.m_ActiveEdges)return!0;try{this.BuildIntersectList(b,d);if(0==this.m_IntersectList.length)return!0;if(1==this.m_IntersectList.length||this.FixupIntersectionOrder())this.ProcessIntersectList();else return!1}catch(e){this.m_SortedEdges=null,this.m_IntersectList.length=0,h.Error("ProcessIntersections error")}this.m_SortedEdges=null;return!0};h.Clipper.prototype.BuildIntersectList=function(b,d){if(null!==this.m_ActiveEdges){var e=
+this.m_ActiveEdges;for(this.m_SortedEdges=e;null!==e;)e.PrevInSEL=e.PrevInAEL,e.NextInSEL=e.NextInAEL,e.Curr.X=h.Clipper.TopX(e,d),e=e.NextInAEL;for(var l=!0;l&&null!==this.m_SortedEdges;){l=!1;for(e=this.m_SortedEdges;null!==e.NextInSEL;){var k=e.NextInSEL,r=new h.IntPoint;e.Curr.X>k.Curr.X?(r={Value:r},l=this.IntersectPoint(e,k,r),r=r.Value,!l&&e.Curr.X>k.Curr.X+1&&h.Error("Intersection error"),r.Y>b&&(r.Y=b,Math.abs(e.Dx)>Math.abs(k.Dx)?r.X=h.Clipper.TopX(k,b):r.X=h.Clipper.TopX(e,b)),l=new h.IntersectNode,
+l.Edge1=e,l.Edge2=k,l.Pt.X=r.X,l.Pt.Y=r.Y,this.m_IntersectList.push(l),this.SwapPositionsInSEL(e,k),l=!0):e=k}if(null!==e.PrevInSEL)e.PrevInSEL.NextInSEL=null;else break}this.m_SortedEdges=null}};h.Clipper.prototype.EdgesAdjacent=function(b){return b.Edge1.NextInSEL==b.Edge2||b.Edge1.PrevInSEL==b.Edge2};h.Clipper.IntersectNodeSort=function(b,d){return d.Pt.Y-b.Pt.Y};h.Clipper.prototype.FixupIntersectionOrder=function(){this.m_IntersectList.sort(this.m_IntersectNodeComparer);this.CopyAELToSEL();for(var b=
+this.m_IntersectList.length,d=0;d<b;d++){if(!this.EdgesAdjacent(this.m_IntersectList[d])){for(var e=d+1;e<b&&!this.EdgesAdjacent(this.m_IntersectList[e]);)e++;if(e==b)return!1;var l=this.m_IntersectList[d];this.m_IntersectList[d]=this.m_IntersectList[e];this.m_IntersectList[e]=l}this.SwapPositionsInSEL(this.m_IntersectList[d].Edge1,this.m_IntersectList[d].Edge2)}return!0};h.Clipper.prototype.ProcessIntersectList=function(){for(var b=0,d=this.m_IntersectList.length;b<d;b++){var e=this.m_IntersectList[b];
+this.IntersectEdges(e.Edge1,e.Edge2,e.Pt,!0);this.SwapPositionsInAEL(e.Edge1,e.Edge2)}this.m_IntersectList.length=0};Za=function(b){return 0>b?Math.ceil(b-.5):Math.round(b)};La=function(b){return 0>b?Math.ceil(b-.5):Math.floor(b+.5)};$a=function(b){return 0>b?-Math.round(Math.abs(b)):Math.round(b)};jb=function(b){if(0>b)return b-=.5,-2147483648>b?Math.ceil(b):b|0;b+=.5;return 2147483647<b?Math.floor(b):b|0};h.Clipper.Round=S?Za:Ib?$a:Wb?jb:La;h.Clipper.TopX=function(b,d){return d==b.Top.Y?b.Top.X:
+b.Bot.X+h.Clipper.Round(b.Dx*(d-b.Bot.Y))};h.Clipper.prototype.IntersectPoint=function(b,d,e){e.Value=new h.IntPoint;var l,k;if(h.ClipperBase.SlopesEqual(b,d,this.m_UseFullRange)||b.Dx==d.Dx)return d.Bot.Y>b.Bot.Y?(e.Value.X=d.Bot.X,e.Value.Y=d.Bot.Y):(e.Value.X=b.Bot.X,e.Value.Y=b.Bot.Y),!1;if(0===b.Delta.X)e.Value.X=b.Bot.X,h.ClipperBase.IsHorizontal(d)?e.Value.Y=d.Bot.Y:(k=d.Bot.Y-d.Bot.X/d.Dx,e.Value.Y=h.Clipper.Round(e.Value.X/d.Dx+k));else if(0===d.Delta.X)e.Value.X=d.Bot.X,h.ClipperBase.IsHorizontal(b)?
+e.Value.Y=b.Bot.Y:(l=b.Bot.Y-b.Bot.X/b.Dx,e.Value.Y=h.Clipper.Round(e.Value.X/b.Dx+l));else{l=b.Bot.X-b.Bot.Y*b.Dx;k=d.Bot.X-d.Bot.Y*d.Dx;var r=(k-l)/(b.Dx-d.Dx);e.Value.Y=h.Clipper.Round(r);Math.abs(b.Dx)<Math.abs(d.Dx)?e.Value.X=h.Clipper.Round(b.Dx*r+l):e.Value.X=h.Clipper.Round(d.Dx*r+k)}if(e.Value.Y<b.Top.Y||e.Value.Y<d.Top.Y){if(b.Top.Y>d.Top.Y)return e.Value.Y=b.Top.Y,e.Value.X=h.Clipper.TopX(d,b.Top.Y),e.Value.X<b.Top.X;e.Value.Y=d.Top.Y;Math.abs(b.Dx)<Math.abs(d.Dx)?e.Value.X=h.Clipper.TopX(b,
+e.Value.Y):e.Value.X=h.Clipper.TopX(d,e.Value.Y)}return!0};h.Clipper.prototype.ProcessEdgesAtTopOfScanbeam=function(b){for(var d=this.m_ActiveEdges;null!==d;){var e=this.IsMaxima(d,b);e&&(e=this.GetMaximaPair(d),e=null===e||!h.ClipperBase.IsHorizontal(e));if(e){var l=d.PrevInAEL;this.DoMaxima(d);d=null===l?this.m_ActiveEdges:l.NextInAEL}else this.IsIntermediate(d,b)&&h.ClipperBase.IsHorizontal(d.NextInLML)?(function(){d={Value:d};var b=this.UpdateEdgeIntoAEL(d);d=d.Value;return b}.call(this),0<=d.OutIdx&&
+this.AddOutPt(d,d.Bot),this.AddEdgeToSEL(d)):(d.Curr.X=h.Clipper.TopX(d,b),d.Curr.Y=b),this.StrictlySimple&&(l=d.PrevInAEL,0<=d.OutIdx&&0!==d.WindDelta&&null!==l&&0<=l.OutIdx&&l.Curr.X==d.Curr.X&&0!==l.WindDelta&&(e=this.AddOutPt(l,d.Curr),l=this.AddOutPt(d,d.Curr),this.AddJoin(e,l,d.Curr))),d=d.NextInAEL}this.ProcessHorizontals(!0);for(d=this.m_ActiveEdges;null!==d;){if(this.IsIntermediate(d,b)){e=null;0<=d.OutIdx&&(e=this.AddOutPt(d,d.Top));(function(){d={Value:d};var b=this.UpdateEdgeIntoAEL(d);
+d=d.Value;return b}).call(this);var l=d.PrevInAEL,k=d.NextInAEL;null!==l&&l.Curr.X==d.Bot.X&&l.Curr.Y==d.Bot.Y&&null!==e&&0<=l.OutIdx&&l.Curr.Y>l.Top.Y&&h.ClipperBase.SlopesEqual(d,l,this.m_UseFullRange)&&0!==d.WindDelta&&0!==l.WindDelta?(l=this.AddOutPt(l,d.Bot),this.AddJoin(e,l,d.Top)):null!==k&&k.Curr.X==d.Bot.X&&k.Curr.Y==d.Bot.Y&&null!==e&&0<=k.OutIdx&&k.Curr.Y>k.Top.Y&&h.ClipperBase.SlopesEqual(d,k,this.m_UseFullRange)&&0!==d.WindDelta&&0!==k.WindDelta&&(l=this.AddOutPt(k,d.Bot),this.AddJoin(e,
+l,d.Top))}d=d.NextInAEL}};h.Clipper.prototype.DoMaxima=function(b){var d=this.GetMaximaPair(b);if(null===d)0<=b.OutIdx&&this.AddOutPt(b,b.Top),this.DeleteFromAEL(b);else{for(var e=b.NextInAEL;null!==e&&e!=d;)this.IntersectEdges(b,e,b.Top,!0),this.SwapPositionsInAEL(b,e),e=b.NextInAEL;-1==b.OutIdx&&-1==d.OutIdx?(this.DeleteFromAEL(b),this.DeleteFromAEL(d)):0<=b.OutIdx&&0<=d.OutIdx?this.IntersectEdges(b,d,b.Top,!1):0===b.WindDelta?(0<=b.OutIdx&&(this.AddOutPt(b,b.Top),b.OutIdx=-1),this.DeleteFromAEL(b),
+0<=d.OutIdx&&(this.AddOutPt(d,b.Top),d.OutIdx=-1),this.DeleteFromAEL(d)):h.Error("DoMaxima error")}};h.Clipper.ReversePaths=function(b){for(var d=0,e=b.length;d<e;d++)b[d].reverse()};h.Clipper.Orientation=function(b){return 0<=h.Clipper.Area(b)};h.Clipper.prototype.PointCount=function(b){if(null===b)return 0;var d=0,e=b;do d++,e=e.Next;while(e!=b);return d};h.Clipper.prototype.BuildResult=function(b){h.Clear(b);for(var d=0,e=this.m_PolyOuts.length;d<e;d++){var l=this.m_PolyOuts[d];if(null!==l.Pts){var l=
+l.Pts.Prev,k=this.PointCount(l);if(!(2>k)){for(var r=Array(k),w=0;w<k;w++)r[w]=l.Pt,l=l.Prev;b.push(r)}}}};h.Clipper.prototype.BuildResult2=function(b){b.Clear();for(var d=0,e=this.m_PolyOuts.length;d<e;d++){var l=this.m_PolyOuts[d],k=this.PointCount(l.Pts);if(!(l.IsOpen&&2>k||!l.IsOpen&&3>k)){this.FixHoleLinkage(l);var r=new h.PolyNode;b.m_AllPolys.push(r);l.PolyNode=r;r.m_polygon.length=k;for(var l=l.Pts.Prev,w=0;w<k;w++)r.m_polygon[w]=l.Pt,l=l.Prev}}d=0;for(e=this.m_PolyOuts.length;d<e;d++)l=this.m_PolyOuts[d],
+null!==l.PolyNode&&(l.IsOpen?(l.PolyNode.IsOpen=!0,b.AddChild(l.PolyNode)):null!==l.FirstLeft&&null!=l.FirstLeft.PolyNode?l.FirstLeft.PolyNode.AddChild(l.PolyNode):b.AddChild(l.PolyNode))};h.Clipper.prototype.FixupOutPolygon=function(b){var d=null;b.BottomPt=null;for(var e=b.Pts;;){if(e.Prev==e||e.Prev==e.Next){this.DisposeOutPts(e);b.Pts=null;return}if(h.IntPoint.op_Equality(e.Pt,e.Next.Pt)||h.IntPoint.op_Equality(e.Pt,e.Prev.Pt)||h.ClipperBase.SlopesEqual(e.Prev.Pt,e.Pt,e.Next.Pt,this.m_UseFullRange)&&
+(!this.PreserveCollinear||!this.Pt2IsBetweenPt1AndPt3(e.Prev.Pt,e.Pt,e.Next.Pt)))d=null,e.Prev.Next=e.Next,e=e.Next.Prev=e.Prev;else if(e==d)break;else null===d&&(d=e),e=e.Next}b.Pts=e};h.Clipper.prototype.DupOutPt=function(b,d){var e=new h.OutPt;e.Pt.X=b.Pt.X;e.Pt.Y=b.Pt.Y;e.Idx=b.Idx;d?(e.Next=b.Next,e.Prev=b,b.Next.Prev=e,b.Next=e):(e.Prev=b.Prev,e.Next=b,b.Prev.Next=e,b.Prev=e);return e};h.Clipper.prototype.GetOverlap=function(b,d,e,l,h,k){b<d?e<l?(h.Value=Math.max(b,e),k.Value=Math.min(d,l)):
+(h.Value=Math.max(b,l),k.Value=Math.min(d,e)):e<l?(h.Value=Math.max(d,e),k.Value=Math.min(b,l)):(h.Value=Math.max(d,l),k.Value=Math.min(b,e));return h.Value<k.Value};h.Clipper.prototype.JoinHorz=function(b,d,e,l,k,r){var w=b.Pt.X>d.Pt.X?h.Direction.dRightToLeft:h.Direction.dLeftToRight;l=e.Pt.X>l.Pt.X?h.Direction.dRightToLeft:h.Direction.dLeftToRight;if(w==l)return!1;if(w==h.Direction.dLeftToRight){for(;b.Next.Pt.X<=k.X&&b.Next.Pt.X>=b.Pt.X&&b.Next.Pt.Y==k.Y;)b=b.Next;r&&b.Pt.X!=k.X&&(b=b.Next);d=
+this.DupOutPt(b,!r);h.IntPoint.op_Inequality(d.Pt,k)&&(b=d,b.Pt.X=k.X,b.Pt.Y=k.Y,d=this.DupOutPt(b,!r))}else{for(;b.Next.Pt.X>=k.X&&b.Next.Pt.X<=b.Pt.X&&b.Next.Pt.Y==k.Y;)b=b.Next;r||b.Pt.X==k.X||(b=b.Next);d=this.DupOutPt(b,r);h.IntPoint.op_Inequality(d.Pt,k)&&(b=d,b.Pt.X=k.X,b.Pt.Y=k.Y,d=this.DupOutPt(b,r))}if(l==h.Direction.dLeftToRight){for(;e.Next.Pt.X<=k.X&&e.Next.Pt.X>=e.Pt.X&&e.Next.Pt.Y==k.Y;)e=e.Next;r&&e.Pt.X!=k.X&&(e=e.Next);l=this.DupOutPt(e,!r);h.IntPoint.op_Inequality(l.Pt,k)&&(e=l,
+e.Pt.X=k.X,e.Pt.Y=k.Y,l=this.DupOutPt(e,!r))}else{for(;e.Next.Pt.X>=k.X&&e.Next.Pt.X<=e.Pt.X&&e.Next.Pt.Y==k.Y;)e=e.Next;r||e.Pt.X==k.X||(e=e.Next);l=this.DupOutPt(e,r);h.IntPoint.op_Inequality(l.Pt,k)&&(e=l,e.Pt.X=k.X,e.Pt.Y=k.Y,l=this.DupOutPt(e,r))}w==h.Direction.dLeftToRight==r?(b.Prev=e,e.Next=b,d.Next=l,l.Prev=d):(b.Next=e,e.Prev=b,d.Prev=l,l.Next=d);return!0};h.Clipper.prototype.JoinPoints=function(b,d,e){var l=b.OutPt1,k;new h.OutPt;var r=b.OutPt2,w;new h.OutPt;if((w=b.OutPt1.Pt.Y==b.OffPt.Y)&&
+h.IntPoint.op_Equality(b.OffPt,b.OutPt1.Pt)&&h.IntPoint.op_Equality(b.OffPt,b.OutPt2.Pt)){for(k=b.OutPt1.Next;k!=l&&h.IntPoint.op_Equality(k.Pt,b.OffPt);)k=k.Next;k=k.Pt.Y>b.OffPt.Y;for(w=b.OutPt2.Next;w!=r&&h.IntPoint.op_Equality(w.Pt,b.OffPt);)w=w.Next;if(k==w.Pt.Y>b.OffPt.Y)return!1;k?(k=this.DupOutPt(l,!1),w=this.DupOutPt(r,!0),l.Prev=r,r.Next=l,k.Next=w,w.Prev=k):(k=this.DupOutPt(l,!0),w=this.DupOutPt(r,!1),l.Next=r,r.Prev=l,k.Prev=w,w.Next=k);b.OutPt1=l;b.OutPt2=k;return!0}if(w){for(k=l;l.Prev.Pt.Y==
+l.Pt.Y&&l.Prev!=k&&l.Prev!=r;)l=l.Prev;for(;k.Next.Pt.Y==k.Pt.Y&&k.Next!=l&&k.Next!=r;)k=k.Next;if(k.Next==l||k.Next==r)return!1;for(w=r;r.Prev.Pt.Y==r.Pt.Y&&r.Prev!=w&&r.Prev!=k;)r=r.Prev;for(;w.Next.Pt.Y==w.Pt.Y&&w.Next!=r&&w.Next!=l;)w=w.Next;if(w.Next==r||w.Next==l)return!1;var q,B;q={Value:q};B={Value:B};d=this.GetOverlap(l.Pt.X,k.Pt.X,r.Pt.X,w.Pt.X,q,B);q=q.Value;B=B.Value;if(!d)return!1;d=new h.IntPoint;l.Pt.X>=q&&l.Pt.X<=B?(d.X=l.Pt.X,d.Y=l.Pt.Y,e=l.Pt.X>k.Pt.X):r.Pt.X>=q&&r.Pt.X<=B?(d.X=
+r.Pt.X,d.Y=r.Pt.Y,e=r.Pt.X>w.Pt.X):k.Pt.X>=q&&k.Pt.X<=B?(d.X=k.Pt.X,d.Y=k.Pt.Y,e=k.Pt.X>l.Pt.X):(d.X=w.Pt.X,d.Y=w.Pt.Y,e=w.Pt.X>r.Pt.X);b.OutPt1=l;b.OutPt2=r;return this.JoinHorz(l,k,r,w,d,e)}for(k=l.Next;h.IntPoint.op_Equality(k.Pt,l.Pt)&&k!=l;)k=k.Next;if(q=k.Pt.Y>l.Pt.Y||!h.ClipperBase.SlopesEqual(l.Pt,k.Pt,b.OffPt,this.m_UseFullRange)){for(k=l.Prev;h.IntPoint.op_Equality(k.Pt,l.Pt)&&k!=l;)k=k.Prev;if(k.Pt.Y>l.Pt.Y||!h.ClipperBase.SlopesEqual(l.Pt,k.Pt,b.OffPt,this.m_UseFullRange))return!1}for(w=
+r.Next;h.IntPoint.op_Equality(w.Pt,r.Pt)&&w!=r;)w=w.Next;if(B=w.Pt.Y>r.Pt.Y||!h.ClipperBase.SlopesEqual(r.Pt,w.Pt,b.OffPt,this.m_UseFullRange)){for(w=r.Prev;h.IntPoint.op_Equality(w.Pt,r.Pt)&&w!=r;)w=w.Prev;if(w.Pt.Y>r.Pt.Y||!h.ClipperBase.SlopesEqual(r.Pt,w.Pt,b.OffPt,this.m_UseFullRange))return!1}if(k==l||w==r||k==w||d==e&&q==B)return!1;q?(k=this.DupOutPt(l,!1),w=this.DupOutPt(r,!0),l.Prev=r,r.Next=l,k.Next=w,w.Prev=k):(k=this.DupOutPt(l,!0),w=this.DupOutPt(r,!1),l.Next=r,r.Prev=l,k.Prev=w,w.Next=
+k);b.OutPt1=l;b.OutPt2=k;return!0};h.Clipper.GetBounds=function(b){for(var d=0,e=b.length;d<e&&0==b[d].length;)d++;if(d==e)return new h.IntRect(0,0,0,0);var l=new h.IntRect;l.left=b[d][0].X;l.right=l.left;l.top=b[d][0].Y;for(l.bottom=l.top;d<e;d++)for(var k=0,r=b[d].length;k<r;k++)b[d][k].X<l.left?l.left=b[d][k].X:b[d][k].X>l.right&&(l.right=b[d][k].X),b[d][k].Y<l.top?l.top=b[d][k].Y:b[d][k].Y>l.bottom&&(l.bottom=b[d][k].Y);return l};h.Clipper.prototype.GetBounds2=function(b){var d=b,e=new h.IntRect;
+e.left=b.Pt.X;e.right=b.Pt.X;e.top=b.Pt.Y;e.bottom=b.Pt.Y;for(b=b.Next;b!=d;)b.Pt.X<e.left&&(e.left=b.Pt.X),b.Pt.X>e.right&&(e.right=b.Pt.X),b.Pt.Y<e.top&&(e.top=b.Pt.Y),b.Pt.Y>e.bottom&&(e.bottom=b.Pt.Y),b=b.Next;return e};h.ClipperBase.prototype.PointInPolygon=h.Clipper.prototype.PointInPolygon=function(){var b=arguments,d=b.length;if(2==d){for(var d=b[0],e=b[1],b=0,l=e;;){var h=e.Pt.X,k=e.Pt.Y,w=e.Next.Pt.X,E=e.Next.Pt.Y;if(E==d.Y&&(w==d.X||k==d.Y&&w>d.X==h<d.X))return-1;if(k<d.Y!=E<d.Y)if(h>=
+d.X)if(w>d.X)b=1-b;else{h=(h-d.X)*(E-d.Y)-(w-d.X)*(k-d.Y);if(0==h)return-1;0<h==E>k&&(b=1-b)}else if(w>d.X){h=(h-d.X)*(E-d.Y)-(w-d.X)*(k-d.Y);if(0==h)return-1;0<h==E>k&&(b=1-b)}e=e.Next;if(l==e)break}return b}if(3==d){d=b[0];e=b[1];l=b[2];k=e;b=!1;if(l){do k.Pt.Y>d.Y!=k.Prev.Pt.Y>d.Y&&q.op_LessThan(new q(d.X-k.Pt.X),q.op_Division(q.Int128Mul(k.Prev.Pt.X-k.Pt.X,d.Y-k.Pt.Y),new q(k.Prev.Pt.Y-k.Pt.Y)))&&(b=!b),k=k.Next;while(k!=e)}else{do k.Pt.Y>d.Y!=k.Prev.Pt.Y>d.Y&&d.X-k.Pt.X<(k.Prev.Pt.X-k.Pt.X)*
+(d.Y-k.Pt.Y)/(k.Prev.Pt.Y-k.Pt.Y)&&(b=!b),k=k.Next;while(k!=e)}return b}};h.Clipper.prototype.Poly2ContainsPoly1=function(b,d){var e=b;do{var l=this.PointInPolygon(e.Pt,d);if(0<=l)return 0!=l;e=e.Next}while(e!=b);return!0};h.Clipper.prototype.FixupFirstLefts1=function(b,d){for(var e=0,l=this.m_PolyOuts.length;e<l;e++){var h=this.m_PolyOuts[e];null!==h.Pts&&h.FirstLeft==b&&this.Poly2ContainsPoly1(h.Pts,d.Pts)&&(h.FirstLeft=d)}};h.Clipper.prototype.FixupFirstLefts2=function(b,d){for(var e=0,l=this.m_PolyOuts,
+h=l.length,k=l[e];e<h;e++,k=l[e])k.FirstLeft==b&&(k.FirstLeft=d)};h.Clipper.ParseFirstLeft=function(b){for(;null!=b&&null==b.Pts;)b=b.FirstLeft;return b};h.Clipper.prototype.JoinCommonEdges=function(){for(var b=0,d=this.m_Joins.length;b<d;b++){var e=this.m_Joins[b],l=this.GetOutRec(e.OutPt1.Idx),k=this.GetOutRec(e.OutPt2.Idx);if(null!=l.Pts&&null!=k.Pts){var r;r=l==k?l:this.Param1RightOfParam2(l,k)?k:this.Param1RightOfParam2(k,l)?l:this.GetLowermostRec(l,k);if(this.JoinPoints(e,l,k))if(l==k){l.Pts=
+e.OutPt1;l.BottomPt=null;k=this.CreateOutRec();k.Pts=e.OutPt2;this.UpdateOutPtIdxs(k);if(this.m_UsingPolyTree){r=0;for(var w=this.m_PolyOuts.length;r<w-1;r++){var q=this.m_PolyOuts[r];null!=q.Pts&&h.Clipper.ParseFirstLeft(q.FirstLeft)==l&&q.IsHole!=l.IsHole&&this.Poly2ContainsPoly1(q.Pts,e.OutPt2)&&(q.FirstLeft=k)}}this.Poly2ContainsPoly1(k.Pts,l.Pts)?(k.IsHole=!l.IsHole,k.FirstLeft=l,this.m_UsingPolyTree&&this.FixupFirstLefts2(k,l),(k.IsHole^this.ReverseSolution)==0<this.Area(k)&&this.ReversePolyPtLinks(k.Pts)):
+this.Poly2ContainsPoly1(l.Pts,k.Pts)?(k.IsHole=l.IsHole,l.IsHole=!k.IsHole,k.FirstLeft=l.FirstLeft,l.FirstLeft=k,this.m_UsingPolyTree&&this.FixupFirstLefts2(l,k),(l.IsHole^this.ReverseSolution)==0<this.Area(l)&&this.ReversePolyPtLinks(l.Pts)):(k.IsHole=l.IsHole,k.FirstLeft=l.FirstLeft,this.m_UsingPolyTree&&this.FixupFirstLefts1(l,k))}else k.Pts=null,k.BottomPt=null,k.Idx=l.Idx,l.IsHole=r.IsHole,r==k&&(l.FirstLeft=k.FirstLeft),k.FirstLeft=l,this.m_UsingPolyTree&&this.FixupFirstLefts2(k,l)}}};h.Clipper.prototype.UpdateOutPtIdxs=
+function(b){var d=b.Pts;do d.Idx=b.Idx,d=d.Prev;while(d!=b.Pts)};h.Clipper.prototype.DoSimplePolygons=function(){for(var b=0;b<this.m_PolyOuts.length;){var d=this.m_PolyOuts[b++],e=d.Pts;if(null!==e){do{for(var l=e.Next;l!=d.Pts;){if(h.IntPoint.op_Equality(e.Pt,l.Pt)&&l.Next!=e&&l.Prev!=e){var k=e.Prev,r=l.Prev;e.Prev=r;r.Next=e;l.Prev=k;k.Next=l;d.Pts=e;k=this.CreateOutRec();k.Pts=l;this.UpdateOutPtIdxs(k);this.Poly2ContainsPoly1(k.Pts,d.Pts)?(k.IsHole=!d.IsHole,k.FirstLeft=d):this.Poly2ContainsPoly1(d.Pts,
+k.Pts)?(k.IsHole=d.IsHole,d.IsHole=!k.IsHole,k.FirstLeft=d.FirstLeft,d.FirstLeft=k):(k.IsHole=d.IsHole,k.FirstLeft=d.FirstLeft);l=e}l=l.Next}e=e.Next}while(e!=d.Pts)}}};h.Clipper.Area=function(b){var d=b.length;if(3>d)return 0;for(var e=0,h=0,k=d-1;h<d;++h)e+=(b[k].X+b[h].X)*(b[k].Y-b[h].Y),k=h;return.5*-e};h.Clipper.prototype.Area=function(b){var d=b.Pts;if(null==d)return 0;var e=0;do e+=(d.Prev.Pt.X+d.Pt.X)*(d.Prev.Pt.Y-d.Pt.Y),d=d.Next;while(d!=b.Pts);return.5*e};h.Clipper.SimplifyPolygon=function(b,
+d){var e=[],l=new h.Clipper(0);l.StrictlySimple=!0;l.AddPath(b,h.PolyType.ptSubject,!0);l.Execute(h.ClipType.ctUnion,e,d,d);return e};h.Clipper.SimplifyPolygons=function(b,d){"undefined"==typeof d&&(d=h.PolyFillType.pftEvenOdd);var e=[],l=new h.Clipper(0);l.StrictlySimple=!0;l.AddPaths(b,h.PolyType.ptSubject,!0);l.Execute(h.ClipType.ctUnion,e,d,d);return e};h.Clipper.DistanceSqrd=function(b,d){var e=b.X-d.X,h=b.Y-d.Y;return e*e+h*h};h.Clipper.DistanceFromLineSqrd=function(b,d,e){var h=d.Y-e.Y;e=e.X-
+d.X;d=h*d.X+e*d.Y;d=h*b.X+e*b.Y-d;return d*d/(h*h+e*e)};h.Clipper.SlopesNearCollinear=function(b,d,e,l){return h.Clipper.DistanceFromLineSqrd(d,b,e)<l};h.Clipper.PointsAreClose=function(b,d,e){var h=b.X-d.X;b=b.Y-d.Y;return h*h+b*b<=e};h.Clipper.ExcludeOp=function(b){var d=b.Prev;d.Next=b.Next;b.Next.Prev=d;d.Idx=0;return d};h.Clipper.CleanPolygon=function(b,d){"undefined"==typeof d&&(d=1.415);var e=b.length;if(0==e)return[];for(var l=Array(e),k=0;k<e;++k)l[k]=new h.OutPt;for(k=0;k<e;++k)l[k].Pt=
+b[k],l[k].Next=l[(k+1)%e],l[k].Next.Prev=l[k],l[k].Idx=0;k=d*d;for(l=l[0];0==l.Idx&&l.Next!=l.Prev;)h.Clipper.PointsAreClose(l.Pt,l.Prev.Pt,k)?(l=h.Clipper.ExcludeOp(l),e--):h.Clipper.PointsAreClose(l.Prev.Pt,l.Next.Pt,k)?(h.Clipper.ExcludeOp(l.Next),l=h.Clipper.ExcludeOp(l),e-=2):h.Clipper.SlopesNearCollinear(l.Prev.Pt,l.Pt,l.Next.Pt,k)?(l=h.Clipper.ExcludeOp(l),e--):(l.Idx=1,l=l.Next);3>e&&(e=0);for(var r=Array(e),k=0;k<e;++k)r[k]=new h.IntPoint(l.Pt),l=l.Next;return r};h.Clipper.CleanPolygons=
+function(b,d){for(var e=Array(b.length),l=0,k=b.length;l<k;l++)e[l]=h.Clipper.CleanPolygon(b[l],d);return e};h.Clipper.Minkowski=function(b,d,e,l){var k=l?1:0,r=b.length,w=d.length;l=[];if(e)for(e=0;e<w;e++){for(var q=Array(r),B=0,L=b.length,H=b[B];B<L;B++,H=b[B])q[B]=new h.IntPoint(d[e].X+H.X,d[e].Y+H.Y);l.push(q)}else for(e=0;e<w;e++){q=Array(r);B=0;L=b.length;for(H=b[B];B<L;B++,H=b[B])q[B]=new h.IntPoint(d[e].X-H.X,d[e].Y-H.Y);l.push(q)}b=[];for(e=0;e<=w-2+k;e++)for(B=0;B<=r-1;B++)d=[],d.push(l[e%
+w][B%r]),d.push(l[(e+1)%w][B%r]),d.push(l[(e+1)%w][(B+1)%r]),d.push(l[e%w][(B+1)%r]),h.Clipper.Orientation(d)||d.reverse(),b.push(d);k=new h.Clipper(0);k.AddPaths(b,h.PolyType.ptSubject,!0);k.Execute(h.ClipType.ctUnion,l,h.PolyFillType.pftNonZero,h.PolyFillType.pftNonZero);return l};h.Clipper.MinkowskiSum=function(b,d,e){return h.Clipper.Minkowski(b,d,!0,e)};h.Clipper.MinkowskiDiff=function(b,d,e){return h.Clipper.Minkowski(b,d,!1,e)};h.Clipper.PolyTreeToPaths=function(b){var d=[];h.Clipper.AddPolyNodeToPaths(b,
+h.Clipper.NodeType.ntAny,d);return d};h.Clipper.AddPolyNodeToPaths=function(b,d,e){var l=!0;switch(d){case h.Clipper.NodeType.ntOpen:return;case h.Clipper.NodeType.ntClosed:l=!b.IsOpen}0<b.m_polygon.length&&l&&e.push(b.m_polygon);l=0;b=b.Childs();for(var k=b.length,r=b[l];l<k;l++,r=b[l])h.Clipper.AddPolyNodeToPaths(r,d,e)};h.Clipper.OpenPathsFromPolyTree=function(b){for(var d=new h.Paths,e=0,l=b.ChildCount();e<l;e++)b.Childs()[e].IsOpen&&d.push(b.Childs()[e].m_polygon);return d};h.Clipper.ClosedPathsFromPolyTree=
+function(b){var d=new h.Paths;h.Clipper.AddPolyNodeToPaths(b,h.Clipper.NodeType.ntClosed,d);return d};Yb(h.Clipper,h.ClipperBase);h.Clipper.NodeType={ntAny:0,ntOpen:1,ntClosed:2};h.ClipperOffset=function(b,d){"undefined"==typeof b&&(b=2);"undefined"==typeof d&&(d=h.ClipperOffset.def_arc_tolerance);this.m_destPolys=new h.Paths;this.m_srcPoly=new h.Path;this.m_destPoly=new h.Path;this.m_normals=[];this.m_StepsPerRad=this.m_miterLim=this.m_cos=this.m_sin=this.m_sinA=this.m_delta=0;this.m_lowest=new h.IntPoint;
+this.m_polyNodes=new h.PolyNode;this.MiterLimit=b;this.ArcTolerance=d;this.m_lowest.X=-1};h.ClipperOffset.two_pi=6.28318530717959;h.ClipperOffset.def_arc_tolerance=.25;h.ClipperOffset.prototype.Clear=function(){h.Clear(this.m_polyNodes.Childs());this.m_lowest.X=-1};h.ClipperOffset.Round=h.Clipper.Round;h.ClipperOffset.prototype.AddPath=function(b,d,e){var l=b.length-1;if(!(0>l)){var k=new h.PolyNode;k.m_jointype=d;k.m_endtype=e;if(e==h.EndType.etClosedLine||e==h.EndType.etClosedPolygon)for(;0<l&&
+h.IntPoint.op_Equality(b[0],b[l]);)l--;k.m_polygon.push(b[0]);var r=0;d=0;for(var w=1;w<=l;w++)h.IntPoint.op_Inequality(k.m_polygon[r],b[w])&&(r++,k.m_polygon.push(b[w]),b[w].Y>k.m_polygon[d].Y||b[w].Y==k.m_polygon[d].Y&&b[w].X<k.m_polygon[d].X)&&(d=r);if(!(e==h.EndType.etClosedPolygon&&2>r||e!=h.EndType.etClosedPolygon&&0>r)&&(this.m_polyNodes.AddChild(k),e==h.EndType.etClosedPolygon))if(0>this.m_lowest.X)this.m_lowest=new h.IntPoint(0,d);else if(b=this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon[this.m_lowest.Y],
+k.m_polygon[d].Y>b.Y||k.m_polygon[d].Y==b.Y&&k.m_polygon[d].X<b.X)this.m_lowest=new h.IntPoint(this.m_polyNodes.ChildCount()-1,d)}};h.ClipperOffset.prototype.AddPaths=function(b,d,e){for(var h=0,k=b.length;h<k;h++)this.AddPath(b[h],d,e)};h.ClipperOffset.prototype.FixOrientations=function(){if(0<=this.m_lowest.X&&!h.Clipper.Orientation(this.m_polyNodes.Childs()[this.m_lowest.X].m_polygon))for(var b=0;b<this.m_polyNodes.ChildCount();b++){var d=this.m_polyNodes.Childs()[b];(d.m_endtype==h.EndType.etClosedPolygon||
+d.m_endtype==h.EndType.etClosedLine&&h.Clipper.Orientation(d.m_polygon))&&d.m_polygon.reverse()}else for(b=0;b<this.m_polyNodes.ChildCount();b++)d=this.m_polyNodes.Childs()[b],d.m_endtype!=h.EndType.etClosedLine||h.Clipper.Orientation(d.m_polygon)||d.m_polygon.reverse()};h.ClipperOffset.GetUnitNormal=function(b,d){var e=d.X-b.X,l=d.Y-b.Y;if(0==e&&0==l)return new h.DoublePoint(0,0);var k=1/Math.sqrt(e*e+l*l);return new h.DoublePoint(l*k,-(e*k))};h.ClipperOffset.prototype.DoOffset=function(b){this.m_destPolys=
+[];this.m_delta=b;if(h.ClipperBase.near_zero(b))for(var d=0;d<this.m_polyNodes.ChildCount();d++){var e=this.m_polyNodes.Childs()[d];e.m_endtype==h.EndType.etClosedPolygon&&this.m_destPolys.push(e.m_polygon)}else{this.m_miterLim=2<this.MiterLimit?2/(this.MiterLimit*this.MiterLimit):.5;var d=0>=this.ArcTolerance?h.ClipperOffset.def_arc_tolerance:this.ArcTolerance>Math.abs(b)*h.ClipperOffset.def_arc_tolerance?Math.abs(b)*h.ClipperOffset.def_arc_tolerance:this.ArcTolerance,l=3.14159265358979/Math.acos(1-
+d/Math.abs(b));this.m_sin=Math.sin(h.ClipperOffset.two_pi/l);this.m_cos=Math.cos(h.ClipperOffset.two_pi/l);this.m_StepsPerRad=l/h.ClipperOffset.two_pi;0>b&&(this.m_sin=-this.m_sin);for(d=0;d<this.m_polyNodes.ChildCount();d++){e=this.m_polyNodes.Childs()[d];this.m_srcPoly=e.m_polygon;var k=this.m_srcPoly.length;if(!(0==k||0>=b&&(3>k||e.m_endtype!=h.EndType.etClosedPolygon))){this.m_destPoly=[];if(1==k)if(e.m_jointype==h.JoinType.jtRound)for(var e=1,k=0,r=1;r<=l;r++){this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[0].X+
+e*b),h.ClipperOffset.Round(this.m_srcPoly[0].Y+k*b)));var w=e,e=e*this.m_cos-this.m_sin*k,k=w*this.m_sin+k*this.m_cos}else for(k=e=-1,r=0;4>r;++r)this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[0].X+e*b),h.ClipperOffset.Round(this.m_srcPoly[0].Y+k*b))),0>e?e=1:0>k?k=1:e=-1;else{for(r=this.m_normals.length=0;r<k-1;r++)this.m_normals.push(h.ClipperOffset.GetUnitNormal(this.m_srcPoly[r],this.m_srcPoly[r+1]));e.m_endtype==h.EndType.etClosedLine||e.m_endtype==h.EndType.etClosedPolygon?
+this.m_normals.push(h.ClipperOffset.GetUnitNormal(this.m_srcPoly[k-1],this.m_srcPoly[0])):this.m_normals.push(new h.DoublePoint(this.m_normals[k-2]));if(e.m_endtype==h.EndType.etClosedPolygon)for(w=k-1,r=0;r<k;r++)w=this.OffsetPoint(r,w,e.m_jointype);else if(e.m_endtype==h.EndType.etClosedLine){w=k-1;for(r=0;r<k;r++)w=this.OffsetPoint(r,w,e.m_jointype);this.m_destPolys.push(this.m_destPoly);this.m_destPoly=[];w=this.m_normals[k-1];for(r=k-1;0<r;r--)this.m_normals[r]=new h.DoublePoint(-this.m_normals[r-
+1].X,-this.m_normals[r-1].Y);this.m_normals[0]=new h.DoublePoint(-w.X,-w.Y);w=0;for(r=k-1;0<=r;r--)w=this.OffsetPoint(r,w,e.m_jointype)}else{w=0;for(r=1;r<k-1;++r)w=this.OffsetPoint(r,w,e.m_jointype);e.m_endtype==h.EndType.etOpenButt?(r=k-1,w=new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[r].X+this.m_normals[r].X*b),h.ClipperOffset.Round(this.m_srcPoly[r].Y+this.m_normals[r].Y*b)),this.m_destPoly.push(w),w=new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[r].X-this.m_normals[r].X*b),h.ClipperOffset.Round(this.m_srcPoly[r].Y-
+this.m_normals[r].Y*b)),this.m_destPoly.push(w)):(r=k-1,w=k-2,this.m_sinA=0,this.m_normals[r]=new h.DoublePoint(-this.m_normals[r].X,-this.m_normals[r].Y),e.m_endtype==h.EndType.etOpenSquare?this.DoSquare(r,w):this.DoRound(r,w));for(r=k-1;0<r;r--)this.m_normals[r]=new h.DoublePoint(-this.m_normals[r-1].X,-this.m_normals[r-1].Y);this.m_normals[0]=new h.DoublePoint(-this.m_normals[1].X,-this.m_normals[1].Y);w=k-1;for(r=w-1;0<r;--r)w=this.OffsetPoint(r,w,e.m_jointype);e.m_endtype==h.EndType.etOpenButt?
+(w=new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[0].X-this.m_normals[0].X*b),h.ClipperOffset.Round(this.m_srcPoly[0].Y-this.m_normals[0].Y*b)),this.m_destPoly.push(w),w=new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[0].X+this.m_normals[0].X*b),h.ClipperOffset.Round(this.m_srcPoly[0].Y+this.m_normals[0].Y*b)),this.m_destPoly.push(w)):(this.m_sinA=0,e.m_endtype==h.EndType.etOpenSquare?this.DoSquare(0,1):this.DoRound(0,1))}}this.m_destPolys.push(this.m_destPoly)}}}};h.ClipperOffset.prototype.Execute=
+function(){var b=arguments;if(b[0]instanceof h.PolyTree)if(d=b[0],e=b[1],d.Clear(),this.FixOrientations(),this.DoOffset(e),b=new h.Clipper(0),b.AddPaths(this.m_destPolys,h.PolyType.ptSubject,!0),0<e)b.Execute(h.ClipType.ctUnion,d,h.PolyFillType.pftPositive,h.PolyFillType.pftPositive);else if(e=h.Clipper.GetBounds(this.m_destPolys),l=new h.Path,l.push(new h.IntPoint(e.left-10,e.bottom+10)),l.push(new h.IntPoint(e.right+10,e.bottom+10)),l.push(new h.IntPoint(e.right+10,e.top-10)),l.push(new h.IntPoint(e.left-
+10,e.top-10)),b.AddPath(l,h.PolyType.ptSubject,!0),b.ReverseSolution=!0,b.Execute(h.ClipType.ctUnion,d,h.PolyFillType.pftNegative,h.PolyFillType.pftNegative),1==d.ChildCount()&&0<d.Childs()[0].ChildCount())for(b=d.Childs()[0],d.Childs()[0]=b.Childs()[0],e=1;e<b.ChildCount();e++)d.AddChild(b.Childs()[e]);else d.Clear();else{var d=b[0],e=b[1];h.Clear(d);this.FixOrientations();this.DoOffset(e);b=new h.Clipper(0);b.AddPaths(this.m_destPolys,h.PolyType.ptSubject,!0);if(0<e)b.Execute(h.ClipType.ctUnion,
+d,h.PolyFillType.pftPositive,h.PolyFillType.pftPositive);else{var e=h.Clipper.GetBounds(this.m_destPolys),l=new h.Path;l.push(new h.IntPoint(e.left-10,e.bottom+10));l.push(new h.IntPoint(e.right+10,e.bottom+10));l.push(new h.IntPoint(e.right+10,e.top-10));l.push(new h.IntPoint(e.left-10,e.top-10));b.AddPath(l,h.PolyType.ptSubject,!0);b.ReverseSolution=!0;b.Execute(h.ClipType.ctUnion,d,h.PolyFillType.pftNegative,h.PolyFillType.pftNegative);0<d.length&&d.splice(0,1)}}};h.ClipperOffset.prototype.OffsetPoint=
+function(b,d,e){this.m_sinA=this.m_normals[d].X*this.m_normals[b].Y-this.m_normals[b].X*this.m_normals[d].Y;if(5E-5>this.m_sinA&&-5E-5<this.m_sinA)return d;1<this.m_sinA?this.m_sinA=1:-1>this.m_sinA&&(this.m_sinA=-1);if(0>this.m_sinA*this.m_delta)this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[d].X*this.m_delta),h.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[d].Y*this.m_delta))),this.m_destPoly.push(new h.IntPoint(this.m_srcPoly[b])),this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+
+this.m_normals[b].X*this.m_delta),h.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[b].Y*this.m_delta)));else switch(e){case h.JoinType.jtMiter:e=1+(this.m_normals[b].X*this.m_normals[d].X+this.m_normals[b].Y*this.m_normals[d].Y);e>=this.m_miterLim?this.DoMiter(b,d,e):this.DoSquare(b,d);break;case h.JoinType.jtSquare:this.DoSquare(b,d);break;case h.JoinType.jtRound:this.DoRound(b,d)}return b};h.ClipperOffset.prototype.DoSquare=function(b,d){var e=Math.tan(Math.atan2(this.m_sinA,this.m_normals[d].X*
+this.m_normals[b].X+this.m_normals[d].Y*this.m_normals[b].Y)/4);this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_delta*(this.m_normals[d].X-this.m_normals[d].Y*e)),h.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_delta*(this.m_normals[d].Y+this.m_normals[d].X*e))));this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_delta*(this.m_normals[b].X+this.m_normals[b].Y*e)),h.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_delta*(this.m_normals[b].Y-
+this.m_normals[b].X*e))))};h.ClipperOffset.prototype.DoMiter=function(b,d,e){e=this.m_delta/e;this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+(this.m_normals[d].X+this.m_normals[b].X)*e),h.ClipperOffset.Round(this.m_srcPoly[b].Y+(this.m_normals[d].Y+this.m_normals[b].Y)*e)))};h.ClipperOffset.prototype.DoRound=function(b,d){for(var e=Math.atan2(this.m_sinA,this.m_normals[d].X*this.m_normals[b].X+this.m_normals[d].Y*this.m_normals[b].Y),e=h.Cast_Int32(h.ClipperOffset.Round(this.m_StepsPerRad*
+Math.abs(e))),l=this.m_normals[d].X,k=this.m_normals[d].Y,r,w=0;w<e;++w)this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+l*this.m_delta),h.ClipperOffset.Round(this.m_srcPoly[b].Y+k*this.m_delta))),r=l,l=l*this.m_cos-this.m_sin*k,k=r*this.m_sin+k*this.m_cos;this.m_destPoly.push(new h.IntPoint(h.ClipperOffset.Round(this.m_srcPoly[b].X+this.m_normals[b].X*this.m_delta),h.ClipperOffset.Round(this.m_srcPoly[b].Y+this.m_normals[b].Y*this.m_delta)))};h.Error=function(b){try{throw Error(b);
+}catch(d){alert(d.message)}};h.JS={};h.JS.AreaOfPolygon=function(b,d){d||(d=1);return h.Clipper.Area(b)/(d*d)};h.JS.AreaOfPolygons=function(b,d){d||(d=1);for(var e=0,l=0;l<b.length;l++)e+=h.Clipper.Area(b[l]);return e/(d*d)};h.JS.BoundsOfPath=function(b,d){return h.JS.BoundsOfPaths([b],d)};h.JS.BoundsOfPaths=function(b,d){d||(d=1);var e=h.Clipper.GetBounds(b);e.left/=d;e.bottom/=d;e.right/=d;e.top/=d;return e};h.JS.Clean=function(b,d){if(!(b instanceof Array))return[];var e=b[0]instanceof Array;b=
+h.JS.Clone(b);if("number"!=typeof d||null===d)return h.Error("Delta is not a number in Clean()."),b;if(0===b.length||1==b.length&&0===b[0].length||0>d)return b;e||(b=[b]);for(var l=b.length,k,r,w,q,B,L,H,K=[],fa=0;fa<l;fa++)if(r=b[fa],k=r.length,0!==k)if(3>k)w=r,K.push(w);else{w=r;q=d*d;B=r[0];for(H=L=1;H<k;H++)(r[H].X-B.X)*(r[H].X-B.X)+(r[H].Y-B.Y)*(r[H].Y-B.Y)<=q||(w[L]=r[H],B=r[H],L++);B=r[L-1];(r[0].X-B.X)*(r[0].X-B.X)+(r[0].Y-B.Y)*(r[0].Y-B.Y)<=q&&L--;L<k&&w.splice(L,k-L);w.length&&K.push(w)}!e&&
+K.length?K=K[0]:e||0!==K.length?e&&0===K.length&&(K=[[]]):K=[];return K};h.JS.Clone=function(b){if(!(b instanceof Array)||0===b.length)return[];if(1==b.length&&0===b[0].length)return[[]];var d=b[0]instanceof Array;d||(b=[b]);var e=b.length,h,k,r,w,q=Array(e);for(k=0;k<e;k++){h=b[k].length;w=Array(h);for(r=0;r<h;r++)w[r]={X:b[k][r].X,Y:b[k][r].Y};q[k]=w}d||(q=q[0]);return q};h.JS.Lighten=function(b,d){if(!(b instanceof Array))return[];if("number"!=typeof d||null===d)return h.Error("Tolerance is not a number in Lighten()."),
+h.JS.Clone(b);if(0===b.length||1==b.length&&0===b[0].length||0>d)return h.JS.Clone(b);b[0]instanceof Array||(b=[b]);var e,l,k,r,w,q,B,L,H,K,fa,Q,Y,S,X,da=b.length,la=d*d,ka=[];for(e=0;e<da;e++)if(k=b[e],q=k.length,0!=q){for(r=0;1E6>r;r++){w=[];q=k.length;k[q-1].X!=k[0].X||k[q-1].Y!=k[0].Y?(fa=1,k.push({X:k[0].X,Y:k[0].Y}),q=k.length):fa=0;K=[];for(l=0;l<q-2;l++){B=k[l];H=k[l+1];L=k[l+2];S=B.X;X=B.Y;B=L.X-S;Q=L.Y-X;if(0!==B||0!==Q)Y=((H.X-S)*B+(H.Y-X)*Q)/(B*B+Q*Q),1<Y?(S=L.X,X=L.Y):0<Y&&(S+=B*Y,X+=
+Q*Y);B=H.X-S;Q=H.Y-X;L=B*B+Q*Q;L<=la&&(K[l+1]=1,l++)}w.push({X:k[0].X,Y:k[0].Y});for(l=1;l<q-1;l++)K[l]||w.push({X:k[l].X,Y:k[l].Y});w.push({X:k[q-1].X,Y:k[q-1].Y});fa&&k.pop();if(K.length)k=w;else break}q=w.length;w[q-1].X==w[0].X&&w[q-1].Y==w[0].Y&&w.pop();2<w.length&&ka.push(w)}b[0]instanceof Array||(ka=ka[0]);"undefined"==typeof ka&&(ka=[[]]);return ka};h.JS.PerimeterOfPath=function(b,d,e){if("undefined"==typeof b)return 0;var h=Math.sqrt,k=0,r,w,q,B,L=b.length;if(2>L)return 0;for(d&&(b[L]=b[0],
+L++);--L;)r=b[L],q=r.X,r=r.Y,w=b[L-1],B=w.X,w=w.Y,k+=h((q-B)*(q-B)+(r-w)*(r-w));d&&b.pop();return k/e};h.JS.PerimeterOfPaths=function(b,d,e){e||(e=1);for(var k=0,q=0;q<b.length;q++)k+=h.JS.PerimeterOfPath(b[q],d,e);return k};h.JS.ScaleDownPath=function(b,d){var e,h;d||(d=1);for(e=b.length;e--;)h=b[e],h.X/=d,h.Y/=d};h.JS.ScaleDownPaths=function(b,d){var e,h,k;d||(d=1);for(e=b.length;e--;)for(h=b[e].length;h--;)k=b[e][h],k.X/=d,k.Y/=d};h.JS.ScaleUpPath=function(b,d){var e,h,k=Math.round;d||(d=1);for(e=
+b.length;e--;)h=b[e],h.X=k(h.X*d),h.Y=k(h.Y*d)};h.JS.ScaleUpPaths=function(b,d){var e,h,k,r=Math.round;d||(d=1);for(e=b.length;e--;)for(h=b[e].length;h--;)k=b[e][h],k.X=r(k.X*d),k.Y=r(k.Y*d)};h.ExPolygons=function(){return[]};h.ExPolygon=function(){this.holes=this.outer=null};h.JS.AddOuterPolyNodeToExPolygons=function(b,d){var e=new h.ExPolygon;e.outer=b.Contour();var k=b.Childs(),q=k.length;e.holes=Array(q);var r,w,L,B,H;for(w=0;w<q;w++)for(r=k[w],e.holes[w]=r.Contour(),L=0,B=r.Childs(),H=B.length;L<
+H;L++)r=B[L],h.JS.AddOuterPolyNodeToExPolygons(r,d);d.push(e)};h.JS.ExPolygonsToPaths=function(b){var d,e,k,q,r=new h.Paths;d=0;for(k=b.length;d<k;d++)for(r.push(b[d].outer),e=0,q=b[d].holes.length;e<q;e++)r.push(b[d].holes[e]);return r};h.JS.PolyTreeToExPolygons=function(b){var d=new h.ExPolygons,e,k,q;e=0;k=b.Childs();for(q=k.length;e<q;e++)b=k[e],h.JS.AddOuterPolyNodeToExPolygons(b,d);return d}})();
+var CindyJS=function(){function q(k){if(0===oa)return console.error("Waiting for "+k+" after we finished waiting."),function(){};0>oa&&(oa=0);++oa;return function(){--oa;0>oa&&console.error("Wait count mismatch: "+k);if(0===oa)for(var q=0,H=ib.length;q<H;)ib[q++].startup()}}function H(k){var q=H.newInstance(k);0>=oa?q.startup():!1!==k.autostart&&ib.push(q);return q}var oa=-1,ib=[];"undefined"===typeof document||"undefined"===typeof window||"undefined"===typeof document.addEventListener||"undefined"!==
+typeof window.cindyDontWait&&!0===window.cindyDontWait||document.addEventListener("DOMContentLoaded",q("DOMContentLoaded"));var Ia=null,Ja=null,Ba={};H.getBaseDir=function(){if(null!==Ia)return Ia;for(var k=document.getElementsByTagName("script"),q=0;q<k.length;++q){var H=k[q],Q=H.src;if(Q){var X=/Cindy\.js$/.exec(Q);if(X)return Ia=Q.substr(0,X.index),console.log("Will load extensions from "+Ia),Ja=H,Ia}}console.error("Could not find <script> tag for Cindy.js");return Ia=Ja=!1};H.addNewScript=function(k,
+q){q||console.error.bind(console);var Y=H.getBaseDir();if(!1===Y)return!1;var Q=document.createElement("script");Q.src=Y+k;var Y=Ja.nextSibling,X=Ja.parentElement;Y?X.insertBefore(Q,Y):X.appendChild(Q);return Q};H.loadScript=function(k,q,Y,Q){if(window[k])return Y(),!0;Q||(Q=console.error.bind(console));var X=Ba[k];if(!X){X=H.addNewScript(q,Q);if(!1===X)return Q("Can't load additional components."),!1;Ba[k]=X}X.addEventListener("load",Y);X.addEventListener("error",Q);return null};H._autoLoadingPlugin=
+{};H.autoLoadPlugin=function(k,q,Y){if(H._pluginRegistry[k])return Y(),!0;var Q=H._autoLoadingPlugin[k];if(!Q){q||(q=k+"-plugin.js");Q=H._autoLoadingPlugin[k]=[];k=H.addNewScript(q);if(!1===k)return!1;k.addEventListener("error",console.error.bind(console))}Q.push(Y);return null};var k={ctype:"undefined"};H.waitFor=q;H._pluginRegistry={};H.instances=[];H.registerPlugin=function(k,q,Y){if(1!==k)return console.error("Plugin API version "+k+" not supported"),!1;H._pluginRegistry[q]=Y;(H._autoLoadingPlugin[q]||
+[]).forEach(function(k){k()})};var Ra=0;H.dumpState=function(k){k=H.instances[k||0].saveState();console.log(JSON.stringify(k))};H.debugState=function(k){H.instances.map(function(k){var q=k.config,q=JSON.parse(JSON.stringify(q)),L=k.saveState();console.log(JSON.stringify(L));for(var H in L)q[H]=L[H];k.shutdown();return q}).forEach(function(k){H(k)})};H.newInstance=function(q){function H(){ga.width=W=ga.clientWidth;ga.height=V=ga.clientHeight;z.setTransform(1,0,0,1,0,0);x.setMat(25,0,0,25,250.5,250.5);
+if(yb)for(var a=0;a<yb.length;a++){var g=yb[a],c=Object.keys(g)[0];"scale"===c&&(Jb=g.scale,x[c](g.scale));if("translate"===c)x[c](g.translate[0],g.translate[1]);"scaleAndOrigin"===c&&(Jb=g[c][0]/25,x[c].apply(null,g[c]));"visibleRect"===c&&(x[c].apply(null,g[c]),Jb=x.drawingstate.initialmatrix.a/25)}x.createnewbackup();x.greset();a=1;"undefined"!==typeof window&&window.devicePixelRatio&&(a=window.devicePixelRatio);g=z.webkitBackingStorePixelRatio||z.mozBackingStorePixelRatio||z.msBackingStorePixelRatio||
+z.oBackingStorePixelRatio||z.backingStorePixelRatio||1;a!==g&&(a/=g,ga.width=W*a,ga.height=V*a,z.scale(a,a))}function Y(a){var g;if("canvas"!==a.tagName.toLowerCase())for(g=a,ga=document.createElement("canvas");g.firstChild;)g.removeChild(g.firstChild);else{ga=a;g=document.createElement("div");var c=null,p=null;Array.prototype.slice.call(ga.attributes).forEach(function(a){"width"===a.name?c=a.value:"height"===a.name?p=a.value:g.setAttributeNodeNS(ga.removeAttributeNode(a))});null===c||g.style.width||
+(g.style.width=c+"px");null===p||g.style.height||(g.style.height=p+"px");ga.parentNode.replaceChild(g,ga)}g.classList.add("CindyJS-widget");a=ga.style;a.position="absolute";a.border="none";a.margin=a.padding=a.left=a.top="0px";a.width=a.height="100%";a="static";window.getComputedStyle&&(a=window.getComputedStyle(g).getPropertyValue("position"),a=String(a||"static"));"static"===a&&(g.style.position="relative");g.appendChild(ga);return ga}function Q(){$b=!0;if(0===Kb){if(q.exclusive)for(b=va.instances.length;0<
+b;)va.instances[--b].shutdown();void 0!==q.csconsole&&(ha=q.csconsole);ha=null===ha?new Ya:!0===ha?new jb:"string"===typeof ha?new pb(ha):"object"===typeof ha&&"function"===typeof ha.appendChild?new pb(ha):new Ya;sa=[100,100];var a=null;yb=q.transform;if(q.ports&&0<q.ports.length){b=q.ports[0];(a=b.element)||(a=document.getElementById(b.id));var a=Y(a),g=a.parentNode.style;"window"===b.fill?(g.width="100vw",g.height="100vh"):"parent"===b.fill?(g.width="100%",g.height="100%"):b.width&&b.height&&(g.width=
+b.width+"px",g.height=b.height+"px");b.background&&(a.style.backgroundColor=b.background);void 0!==b.transform&&(yb=b.transform);Sa(b.grid)&&0<b.grid&&(Ta=b.grid);Sa(b.tgrid)&&0<b.tgrid&&(ac=b.tgrid);b.snap&&(bc=!0);b.axes&&(zb=!0)}a||(a=q.canvas,a||"undefined"===typeof document||(a=document.getElementById(q.canvasname))&&(a=Y(a)));a&&(ga=a,z=a.getContext("2d"),H(),z.setLineDash||(z.setLineDash=function(){}),(q.animation?q.animation.controls:q.animcontrols)&&Ba(q),q.animation&&Sa(q.animation.speed)&&
+(void 0===q.animation.accuracy&&q.cinderella&&q.cinderella.version&&2===q.cinderella.version[0]&&9===q.cinderella.version[1]&&1875>q.cinderella.version[2]?oa(.5*q.animation.speed):oa(q.animation.speed)),q.animation&&Sa(q.animation.accuracy)&&(Lb=q.animation.accuracy));q.statusbar&&(cc="string"===typeof q.statusbar?document.getElementById(q.statusbar):q.statusbar);var c=q.scripts,p=null;"string"===typeof c&&c.search(/\*/)&&(p=c);"object"!==typeof c&&(c=null);"move keydown mousedown mouseup mousedrag mousemove mouseclick init tick draw simulationstep simulationstart simulationstop ondrop".split(" ").forEach(function(a){var g;
+if(null!==c&&c[a])g=c[a];else{g=a+"script";if(q[g])g=document.getElementById(q[g]);else if(p){if(g=document.getElementById(p.replace(/\*/,a)),!g)return}else return;g=g.text}g=Ma(g,!1);"error"===g.ctype?console.error("Error compiling "+a+" script: "+g.message):ia[a]=g});Sa(q.grid)&&0<q.grid&&(Ta=q.grid);q.snap&&(bc=!0);u={};var b=0;ab={};q.geometry||(q.geometry=[]);Hd(q.geometry);q.behavior||(q.behavior=[]);"function"===typeof dc&&dc(q.behavior);for(var d in q.images)b=X(q.images[d]),b!==k&&(ab[d]=
+b);qa.canvas=a;if(q.oninit)q.oninit(qa);va.instances.push(qa);q.use&&q.use.forEach(function(a){t.use$1([v.wrap(a)],{})});Mc.convexhull3d$1&&h("quickhull3d","quickhull3d/quickhull3d.nocache.js");Ia()}}function X(a){var g;"string"===typeof a?(g=new Image,g.src=a):g=a;if(!g.tagName)return console.error("Not a valid image element",g),k;var c={img:g,width:NaN,height:NaN,ready:!0,live:!1,generation:0,whenReady:ka};a=g.tagName.toLowerCase();var p=[];if("img"===a)g.complete?(c.width=g.width,c.height=g.height):
+(c.ready=!1,g.addEventListener("load",function(){c.width=g.width;c.height=g.height;c.ready=!0;c.whenReady=ka;p.forEach(ka);b()}),c.whenReady=p.push.bind(p));else if("video"===a)c.live=!0,g.readyState>=g.HAVE_METADATA?(c.width=g.videoWidth,c.height=g.videoHeight):(c.ready=!1,g.addEventListener("loadedmetadata",function(){c.width=g.videoWidth;c.height=g.videoHeight;c.ready=!0;c.whenReady=ka;p.forEach(ka);b()}),c.whenReady=p.push.bind(p));else if("canvas"===a)c.width=g.width,c.height=g.height;else return console.error("Not a valid image element",
+a,g),k;return{ctype:"image",value:c}}function Ba(a){function g(a,c){var g=document.createElement("button"),p=document.createElement("img");g.appendChild(p);k.appendChild(g);Ab(p,a);g.addEventListener("click",c);Na[a]=function(a){a?g.classList.add("CindyJS-active"):g.classList.remove("CindyJS-active")}}function c(a){if(h){var c=e.getBoundingClientRect();oa(f*(a.clientX-c.left-e.clientLeft+.5)/c.width+b)}}var p=document.createElement("div");p.className="CindyJS-animcontrols";ga.parentNode.appendChild(p);
+var b=0,d=1,f=1;a.animation&&a.animation.speedRange&&Sa(a.animation.speedRange[0])&&Sa(a.animation.speedRange[1])&&(b=a.animation.speedRange[0],d=a.animation.speedRange[1],f=d-b);var e=document.createElement("div");e.className="CindyJS-animspeed";p.appendChild(e);var m=document.createElement("div");e.appendChild(m);K(e,"mousedown",function(a){h=!0;c(a)});K(e,"mousemove",c);K(ga.parentNode,"mouseup",function(a){h=!1},!0);var k=document.createElement("div");k.className="CindyJS-animbuttons";p.appendChild(k);
+g("play",S);g("pause",Za);g("stop",Ja);Na.stop(!0);fc=function(a){a=(a-b)/f;a=Math.max(0,Math.min(1,a));a=.1*Math.round(1E3*a);m.style.width=a+"%"};var h=!1}function oa(a){Nc=a;fc&&fc(a)}function ka(a){return a()}function h(a,g){var c=null;q.plugins&&(c=q.plugins[a]);c||(c=va._pluginRegistry[a]);c?t.use$1([v.wrap(a)],{}):(++Oc,va.autoLoadPlugin(a,g,function(){t.use$1([v.wrap(a)],{});Ia()}))}function Ia(){0===--Oc&&(A(ia.init),(q.animation||q).autoplay&&S(),qa.canvas&&la(qa.canvas,q))}function da(){null!==
+Bb&&(ma.set(Bb.state),Object.keys(Bb.speeds).forEach(function(a){var g=u.csnames[a];"undefined"!==typeof g.behavior&&(a=Bb.speeds[a],g.behavior.vx=a[0],g.behavior.vy=a[1],g.behavior.vz=a[2],g.behavior.fx=0,g.behavior.fy=0,g.behavior.fz=0)}),Id())}function S(){if(!Ua){if(Nb){var a=bb.backup;a.set(ma);for(var g={},c=0;c<u.points.length;c++){var p=u.points[c];"undefined"!==typeof p.behavior&&(g[p.name]=[p.behavior.vx,p.behavior.vy,p.behavior.vz])}Bb={state:a,speeds:g};Cb=0;Nb=!1;Na.stop(!1)}else Na.pause(!1);
+gc=Date.now();Na.play(!0);"function"===typeof dc&&hc&&Jd();Ua=!0;A(ia.simulationstart);b()}}function Za(){Ua&&(Na.play(!1),Na.pause(!0),Ua=!1)}function Ja(){Nb||(Ua?(A(ia.simulationstop),Ua=!1,Na.play(!1)):Na.pause(!1),Na.stop(!0),Nb=!0,da())}function La(){if(!ic){ic=!0;for(var a=va.instances.length;0<a;)if(va.instances[--a]===qa){va.instances.splice(a,1);break}for(a=kb.length;0<a;)try{kb[--a]()}catch(g){console.error(g)}}}function $a(a){this["in"]=function(a,c){console.log(a);c?this.append(this.createTextNode("span",
+"blue",a)):this.append(this.createTextNode("p","blue",a))};this.out=function(a,c){console.log(a);c?this.append(this.createTextNode("span","red",a)):this.append(this.createTextNode("p","red",a))};this.err=function(a,c){console.log(a);c?this.append(this.createTextNode("span","red",a)):this.append(this.createTextNode("p","red",a))};this.createTextNode=function(a,c,p){return"undefined"!==typeof document?(a=document.createElement(a),a.appendChild(document.createTextNode(p)),a.style.color=c,a):p+"\n"}}
+function jb(){var a=this,g,c=document.createElement("div"),p;c.innerHTML='<div id="console" style="border-top: 1px solid #333333; bottom: 0px; position: absolute; width: 100%;"><div id="log" style="height: 150px; overflow-y: auto;"></div><input id="cmd" type="text" style="box-sizing: border-box; height: 30px; width: 100%;"></div>';document.body.appendChild(c);g=document.getElementById("cmd");p=document.getElementById("log");g.onkeydown=function(c){13===c.keyCode&&""!==g.value&&(a["in"](g.value),c=
+t.parse$1([v.wrap(g.value)],[]),c=A(c),console.log(w(c)),"undefined"!==c.ctype&&ha.out(w(c)),g.value="",p.scrollTop=p.scrollHeight)};this.append=function(a){p.appendChild(a)};this.clear=function(){p.innerHTML=""}}function pb(a){var g=a;"string"===typeof a&&(g=document.getElementById(a));this.append=function(a){g.appendChild(a)};this.clear=function(){g.innerHTML=""}}function Ya(){this.append=function(a){};this.clear=function(){}}function K(a,g,c,p){void 0===p&&(p=!1);kb.push(function(){a.removeEventListener(g,
+c,p)});a.addEventListener(g,c,p)}function la(a,g){function c(c){var g=a.getBoundingClientRect();c=x.to(c.clientX-g.left-a.clientLeft+.5,c.clientY-g.top-a.clientTop+.5);U.prevx=U.x;U.prevy=U.y;U.x=c[0];U.y=c[1];sa[0]=U.x;sa[1]=U.y;b()}function p(a){U.down=!1;aa=void 0;lb();A(ia.mouseup);sb("mouseup");b();a.preventDefault()}var ba=null;"undefined"!==typeof MutationObserver&&(ba=MutationObserver);ba||"undefined"===typeof WebKitMutationObserver||(ba=WebKitMutationObserver);ba?(ba=new ba(function(c){document.body.contains(a)||
+La()}),ba.observe(document.documentElement,{childList:!0,subtree:!0}),kb.push(function(){ba.disconnect()})):(K(a,"DOMNodeRemovedFromDocument",La),K(a,"DOMNodeRemoved",La));!0===g.keylistener?K(document,"keydown",function(a){l(a);return!1}):ia.keydown&&(a.setAttribute("tabindex","0"),K(a,"mousedown",function(){a.focus()}),K(a,"keydown",function(a){9!==a.keyCode&&(l(a),a.preventDefault())}));K(a,"mousedown",function(a){U.button=a.which;c(a);A(ia.mousedown);sb("mousedown");U.down=!0;a.preventDefault()});
+K(a,"mouseup",function(a){U.down=!1;aa=void 0;lb();A(ia.mouseup);sb("mouseup");b();a.preventDefault()});K(a,"mousemove",function(a){c(a);U.down?A(ia.mousedrag):A(ia.mousemove);sb("mousemove");a.preventDefault()});K(a,"click",function(a){c(a);A(ia.mouseclick);a.preventDefault()});K(a,"dragenter",function(a){a.preventDefault()});K(a,"dragover",function(a){a.preventDefault()});K(a,"drop",function(c){function g(a,c,R){ba[a]=f.turnIntoCSList([c,v.string(R||c.ctype),v.string(p[a].type),v.string(p[a].name)]);
+0===--d&&(a=m,jc=f.turnIntoCSList(ba),kc=a,A(ia.ondrop),kc=jc=k,b())}c.preventDefault();var p=c.dataTransfer.files,ba=Array(p.length),d=p.length,e=c.currentTarget.getBoundingClientRect(),m=f.realVector(x.to(c.clientX-e.left-a.clientLeft+.5,c.clientY-e.top-a.clientTop+.5));Array.prototype.forEach.call(p,function(a,c){var p=new FileReader;/^text\//.test(a.type)?(p.onload=function(){var a=v.string(p.result);g(c,a)},p.readAsText(a)):/^image\//.test(a.type)?(p.onload=function(){var a=new Image;a.onload=
+function(){g(c,X(a))};a.src=p.result},p.readAsDataURL(a)):g(c,k)})});K(a,"touchstart",function(a){c(a.targetTouches[0]);A(ia.mousedown);U.down=!0;sb("mousedown");a.preventDefault()},!1);K(a,"touchmove",function(a){c(a.targetTouches[0]);U.down?A(ia.mousedrag):A(ia.mousemove);sb("mousemove");a.preventDefault()},!0);K(a,"touchend",p,!1);"undefined"!==typeof document&&document.body&&K(document.body,"touchcancel",p,!1);"undefined"!==typeof window&&K(window,"resize",function(){Ob(function(){H();b()})},
+!1);ib(a.parentNode);b()}function qb(a,g){var c=document.createElement("div");c.setAttribute("style",g);a.appendChild(c);return c}function ib(a){function g(){p.scrollLeft=p.scrollTop=ba.scrollLeft=ba.scrollTop=1E5}function c(){if(d!==a.clientWidth||f!==a.clientHeight)d=a.clientWidth,f=a.clientHeight,e||(e=!0,Ob(function(){e=!1;H();b()}));g()}if("undefined"!==typeof document){var p=qb(a,"position: absolute; transition: 0s; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;");
+qb(p,"position: absolute; transition: 0s; left: 0; top: 0; width: 100000px; height: 100000px");var ba=qb(a,"position: absolute; transition: 0s; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;");qb(ba,"position: absolute; transition: 0s; left: 0; top: 0; width: 200%; height: 200%");g();var d=a.clientWidth,f=a.clientHeight,e=!1;p.addEventListener("scroll",c);ba.addEventListener("scroll",c)}}function b(){lc||(lc=Ob(d))}function d(){lc=null;if(!ic){if(Ua){var a=
+Date.now(),g=Math.min(50,a-gc)*Nc*Kd;gc=a;a=Cb+g;hc&&"undefined"!==typeof ra&&ra.tick(g);Cb=a;Ua&&A(ia.tick)}e();Ua&&b()}}function e(){x.reset();z.save();z.clearRect(0,0,W,V);var a=x.drawingstate.matrix,g,c,p,b,d;if(0!==Ta){z.beginPath();z.strokeStyle="rgba(0,0,0,0.1)";z.lineWidth=1;z.lineCap="butt";g=Ta*a.a;for(b=Math.ceil(-a.tx/g);(d=b*g+a.tx)<W;){if(b||!zb)z.moveTo(d,0),z.lineTo(d,V);b++}for(b=Math.floor(a.ty/g);(d=b*g-a.ty)<V;){if(b||!zb)z.moveTo(0,d),z.lineTo(W,d);b++}z.stroke()}if(0!==ac){z.beginPath();
+z.strokeStyle="rgba(0,0,0,0.1)";z.lineWidth=1;z.lineCap="butt";g=ac*a.a;var e=Math.sqrt(3);c=a.ty/e;p=(V+a.ty)/e;for(b=Math.ceil(-(a.tx+p)/g);(d=b*g+a.tx)+c<W;)z.moveTo(d+c,0),z.lineTo(d+p,V),b++;for(b=Math.ceil(-(a.tx-c)/g);(d=b*g+a.tx)-p<W;)z.moveTo(d-c,0),z.lineTo(d-p,V),b++;g*=.5*e;for(b=Math.floor(a.ty/g);(d=b*g-a.ty)<V;){if(b||!zb)z.moveTo(0,d),z.lineTo(W,d);b++}z.stroke()}zb&&(z.beginPath(),z.strokeStyle="rgba(0,0,0,0.2)",z.lineWidth=3,z.lineCap="butt",z.lineJoin="miter",z.miterLimit=10,z.beginPath(),
+z.moveTo(0,-a.ty),z.lineTo(W-6,-a.ty),z.moveTo(W-13,-5-a.ty),z.lineTo(W-3,-a.ty),z.lineTo(W-13,5-a.ty),z.moveTo(a.tx,V),z.lineTo(a.tx,6),z.moveTo(a.tx-5,13),z.lineTo(a.tx,3),z.lineTo(a.tx+5,13),z.stroke());Ld();x.greset();Md();for(a=0;a<u.polygons.length;a++)g=u.polygons[a],g.isshowing&&!1!==g.visible&&(c={color:g.color,alpha:g.alpha,fillcolor:g.fillcolor,fillalpha:g.fillalpha,size:g.size,lineJoin:v.string("miter")},D.drawpolygon([g.vertices],c,"D",!0));for(a=0;a<u.conics.length;a++)u.conics[a].isArc?
+(g=u.conics[a],g.isshowing&&!1!==g.visible&&(c={},c.color=g.color,c.alpha=g.alpha,c.size=g.size,D.drawarc(g,c,g.filled?"F":"D"))):(g=u.conics[a],g.isshowing&&!1!==g.visible&&(c={},c.color=g.color,c.alpha=g.alpha,c.size=g.size,D.drawconic(g.matrix,c)));for(a=0;a<u.lines.length;a++)a:if(g=u.lines[a],g.isshowing&&!1!==g.visible&&f._helper.isAlmostReal(g.homog))if("S"===g.kind)c={overhang:g.overhang,dashtype:g.dashtype,size:g.size,color:g.color,alpha:g.alpha,arrow:g.arrow,arrowsize:g.arrowsize,arrowposition:g.arrowposition,
+arrowshape:g.arrowshape,arrowsides:g.arrowsides},0<=m.mult(g.startpos.value[2],m.conjugate(g.endpos.value[2])).value.real?t.draw$2([g.startpos,g.endpos],c):(y.handleModifs(c,y.lineModifs),y.drawRaySegment(g.startpos,g.endpos));else if("end"===g.clip.value&&"Join"===g.type)b=u.csnames[g.args[0]],c=u.csnames[g.args[1]],t.draw$2([b.homog,c.homog],{overhang:g.overhang,dashtype:g.dashtype,size:g.size,color:g.color,alpha:g.alpha});else{if("inci"===g.clip.value){b=[1E6,0];c=[-1E6,0];d=[1E6,0];p=[-1E6,0];
+for(e=0;e<g.incidences.length;e++){var k=u.csnames[g.incidences[e]].homog,h=k.value[0],l=k.value[1],n=k.value[2];m._helper.isAlmostZero(n)||(h=m.div(h,n),l=m.div(l,n),m._helper.isAlmostReal(h)&&m._helper.isAlmostReal(l)&&(h.value.real<b[0]&&(b=[h.value.real,k]),h.value.real>c[0]&&(c=[h.value.real,k]),l.value.real<d[0]&&(d=[l.value.real,k]),l.value.real>p[0]&&(p=[l.value.real,k])))}c[0]-b[0]>p[0]-d[0]?(b=b[1],c=c[1]):(b=d[1],c=p[1]);if(b!==c){t.draw$2([b,c],{dashtype:g.dashtype,size:g.size,color:g.color,
+alpha:g.alpha,overhang:g.overhang});break a}}t.draw$1([g.homog],{dashtype:g.dashtype,size:g.size,color:g.color,alpha:g.alpha})}for(a=0;a<u.points.length;a++)g=u.points[a],g.isshowing&&!1!==g.visible&&f._helper.isAlmostReal(g.homog)&&(c=g.color,g.behavior&&(c=g.color),t.draw$1([g.homog],{size:g.size,color:c,alpha:g.alpha}),g.labeled&&!g.tmp&&(c=g.printname||g.name||"P",p=g.labelpos||{x:3,y:3},b=g.textsize||ja.textsize,d=!0===g.textbold,e=!0===g.textitalics,k=g.text_fontfamily||ja.fontFamily,h=p.x*
+p.x+p.y*p.y,l=1,0<h&&(l=1+g.size.value.real/Math.sqrt(h)),D.drawtext([g.homog,v.wrap(c)],{x_offset:v.wrap(l*p.x),y_offset:v.wrap(l*p.y),size:v.wrap(b),bold:v.wrap(d),italics:v.wrap(e),family:v.wrap(k)})));for(a=0;a<u.texts.length;a++)Nd(u.texts[a]);z.restore()}function l(a){a=window.event?event:a;a=a.charCode?a.charCode:a.keyCode;Pc=String.fromCharCode(a);Qc=a;A(ia.keydown);b()}function G(a){var g=a.value;a=g[0].value;var c=g[1].value,g=g[2].value;return f.turnIntoCSList([a[0],m.add(a[1],c[0]),m.add(a[2],
+g[0]),c[1],m.add(c[2],g[1]),g[2]])}function r(a){var g=!0;return function(c,p){g&&(console.error("Operator "+a+" is not supported yet."),g=!1);return k}}function w(a){if("undefined"===typeof a)return"_??_";if(null===a)return"_???_";if("undefined"===a.ctype)return"___";if("number"===a.ctype)return m.niceprint(a);if("string"===a.ctype||"boolean"===a.ctype)return a.value;if("list"===a.ctype){for(var g="[",c=0;c<a.value.length;c++)g+=w(A(a.value[c])),c!==a.value.length-1&&(g+=", ");return g+"]"}return"dict"===
+a.ctype?Oa.niceprint(a):"function"===a.ctype?"FUNCTION":"infix"===a.ctype?"INFIX":"modifier"===a.ctype?a.key+"->"+w(a.value):"shape"===a.ctype?a.type:"error"===a.ctype?"Error: "+a.message:"variable"===a.ctype?w(J.getvar(a.name)):"geo"===a.ctype?a.value.name:"image"===a.ctype?"IMAGE":"_?_"}function E(a,g){var c="undefined"===a[0].ctype,p="undefined"===a[1].ctype,b=A(a[1]);if(c||p)return k;"variable"===a[0].ctype?J.setvar(a[0].name,b):"infix"===a[0].ctype?"_"===a[0].oper?D.assigntake(a[0],b):console.error("Can't use infix expression as lvalue"):
+"field"===a[0].ctype?D.assigndot(a[0],b):"function"===a[0].ctype&&"genList"===a[0].oper?"list"===b.ctype?D.assignlist(a[0].args,b.value):console.error("Expected list in rhs of assignment"):console.error("Left hand side of assignment is not a recognized lvalue");return b}function B(a,g){var c=A(a[0]),p=A(a[1]);if(c.ctype===p.ctype){if("number"===c.ctype)return v.bool(c.value.real===p.value.real&&c.value.imag===p.value.imag);if("string"===c.ctype||"boolean"===c.ctype)return v.bool(c.value===p.value);
+if("list"===c.ctype)return f.equals(c,p);if("geo"===c.ctype)return v.bool(c.value===p.value)}return{ctype:"boolean",value:!1}}function Ec(a,g){return v.not(B(a,g))}function pa(a,g){var c=C(a[0]),p=C(a[1]);return"number"===c.ctype&&"number"===p.ctype?{ctype:"boolean",value:m._helper.isAlmostEqual(c,p)}:"string"===c.ctype&&"string"===p.ctype||"boolean"===c.ctype&&"boolean"===p.ctype?{ctype:"boolean",value:c.value===p.value}:"list"===c.ctype&&"list"===p.ctype?f.almostequals(c,p):{ctype:"boolean",value:!1}}
+function na(a,g){var c=C(a[0]),p=C(a[1]);return"boolean"===c.ctype&&"boolean"===p.ctype?{ctype:"boolean",value:c.value&&p.value}:k}function Gc(a,g){var c=C(a[0]),p=C(a[1]);return"boolean"===c.ctype&&"boolean"===p.ctype?{ctype:"boolean",value:c.value||p.value}:k}function Hc(a,g){var c=a[0];"void"!==c.ctype&&(c=C(c));var p=C(a[1]),b=v.add(c,p);"Angle"===c.usage&&"Angle"===p.usage&&(b=v.withUsage(b,"Angle"));return b}function Xb(a,g){var c=a[0];"void"!==c.ctype&&(c=C(c));var p=C(a[1]),b=v.sub(c,p);"Angle"===
+c.usage&&"Angle"===p.usage&&(b=v.withUsage(b,"Angle"));return b}function Ic(a,g){var c=C(a[0]),p=C(a[1]),b=v.mult(c,p);"Angle"!==c.usage||p.usage?"Angle"!==p.usage||c.usage||(b=v.withUsage(b,"Angle")):b=v.withUsage(b,"Angle");return b}function Jc(a,g){var c=C(a[0]),p=C(a[1]);"number"===p.ctype&&m._helper.isZero(p)&&ha.err("WARNING: Division by zero!");var b=v.div(c,p);"Angle"!==c.usage||p.usage?"Angle"!==p.usage||c.usage||(b=v.withUsage(b,"Angle")):b=v.withUsage(b,"Angle");return b}function Kc(a,
+g){var c=C(a[0]),p=C(a[1]);return"number"===c.ctype&&"number"===p.ctype?m.pow(c,p):k}function Lc(a,g){var c=M(a[0]),p=M(a[1]);if(c!==k&&p!==k){var b=f.cross(c,p);"Point"===c.usage&&"Point"===p.usage&&(b=v.withUsage(b,"Line"));"Line"===c.usage&&"Line"===p.usage&&(b=v.withUsage(b,"Point"));return b}return k}function Zb(a){var g=a.length;if(0===g)return[];if(1===g)return[0];if(2===g)return a[0][0]+a[1][1]<=a[0][1]+a[1][0]?[0,1]:[1,0];if(4<g)return Od(a);for(var c=Pd[g],p=Number.POSITIVE_INFINITY,b=c[0],
+d=0;d<c.length;++d){for(var f=c[d],e=0,m=0;m<g;++m)e+=a[m][f[m]];e<p&&(p=e,b=f)}return b}function Od(a){function g(){return{matched:-1,prev:-1,start:-1,cost:0,used:!1,leaf:!1}}function c(a){for(var g=0;g<d;++g)0<h[a][g]||k[g].used||(k[g].used=!0,c(k[g].matched))}function p(a){for(var c=0;c<d;++c)0<h[c][a]||m[c].used||(m[c].used=!0,p(m[c].matched))}var b=Math.abs,d=a.length,f,e,m=Array(d),k=Array(d),h=Array(d);for(f=0;f<d;++f)h[f]=Array(d);for(f=0;f<d;++f)for(m[f]=g(),k[f]=g(),m[f].cost=a[f][0],e=
+1;e<d;++e)m[f].cost>a[f][e]&&(m[f].cost=a[f][e]);for(;;){for(f=0;f<d;++f)for(e=0;e<d;++e)h[f][e]=a[f][e]-m[f].cost-k[e].cost,h[f][e]<1E-14*(b(a[f][e])+b(m[f].cost)+b(k[e].cost))&&(h[f][e]=0);for(f=0;f<d;++f)m[f].matched=k[f].matched=-1;for(var l=0;;){for(f=0;f<d;++f)m[f].used=m[f].leaf=k[f].used=k[f].leaf=!1,-1===m[f].matched&&(m[f].start=f,m[f].used=m[f].leaf=!0,m[f].prev=-1);for(var n=!1,q=!1;!q;){for(f=0;f<d;++f)if(m[f].leaf)for(m[f].leaf=!1,e=0;e<d;++e)if(!(k[e].used||0<h[f][e])&&m[f].matched!==
+e&&(k[e].prev=f,k[e].start=m[f].start,k[e].used=k[e].leaf=!0,-1===k[e].matched)){m[k[e].start].prev=e;n=!0;break}if(n)break;q=!0;for(e=0;e<d;++e)k[e].leaf&&(k[e].leaf=!1,f=k[e].matched,m[f].used||(m[f].prev=e,m[f].start=k[e].start,m[f].used=m[f].leaf=!0,q=!1))}if(!n)break;for(n=0;n<d;++n)if(-1===m[n].matched&&-1!==m[n].prev){e=m[n].prev;do f=k[e].prev,k[e].matched=f,m[f].matched=e,e=m[f].prev;while(f!==n);++l}}if(l===d)break;for(f=0;f<d;++f)m[f].used=m[f].leaf=k[f].used=k[f].leaf=!1;for(f=0;f<d;++f)-1===
+m[f].matched&&c(f);for(e=0;e<d;++e)-1===k[e].matched&&p(e);for(f=0;f<d;++f)-1===m[f].matched||m[f].used||k[m[f].matched].used||(m[f].used=!0);l=Number.POSITIVE_INFINITY;for(f=0;f<d;++f)if(!m[f].used)for(e=0;e<d;++e)k[e].used||l>h[f][e]&&(l=h[f][e]);for(f=0;f<d;++f)m[f].used||(m[f].cost+=l),k[f].used&&(k[f].cost-=l)}a=Array(d);for(f=0;f<d;++f)e=m[f].matched,a[f]=e;return a}function mc(a,g){var c=A(a[0]),p=C(a[1]);"string"!==c.ctype&&(c=f.asList(c));if("number"===p.ctype){p=Math.floor(p.value.real);
+0>p&&(p=c.value.length+p+1);if(0<p&&p<c.value.length+1)return"list"===c.ctype?c.value[p-1]:{ctype:"string",value:c.value.charAt(p-1)};ha.err("WARNING: Index out of range!");return k}if("list"===p.ctype){for(var b=[],d=0;d<p.value.length;d++){var e=C(p.value[d]);b[d]=mc([c,e],[])}return f.turnIntoCSList(b)}return k}function Rc(a,g){var c=A(a[0]),p=A(a[1]);if("shape"===c.ctype&&"shape"===p.ctype)return D.shapeconcat(c,p);c=f.asList(c);p=f.asList(p);return"list"===c.ctype&&"list"===p.ctype?f.concat(c,
+p):k}function Sc(a,g){var c=A(a[0]),p=A(a[1]);return"list"===c.ctype&&"list"===p.ctype?f.set(f.common(c,p)):"shape"===c.ctype&&"shape"===p.ctype?D.shapecommon(c,p):k}function Tc(a,g){var c=A(a[0]),p=A(a[1]);return"list"===c.ctype&&"list"===p.ctype?f.remove(c,p):"shape"===c.ctype&&"shape"===p.ctype?D.shaperemove(c,p):k}function Uc(a,g){var c=A(a[0]),p=A(a[1]);return"list"===c.ctype?f.append(c,p):k}function Vc(a,g){var c=A(a[0]),p=A(a[1]);return"list"===p.ctype?f.prepend(c,p):k}function nc(a,g){a|=
+0;g|=0;if(0===a&&0===g)return 0;for(;0!==g;){var c=a;a=g;g=c%g|0}return a}function Qd(a){return 1===a?0:1}function Wc(a,g,c,p,b,d,f){if(-1!==g.indexOf("\n")){var e=Infinity,m=-Infinity,k=Infinity,h=-Infinity;g.split("\n").forEach(function(g){g=Wc(a,g,c,p,b,d);e>g.left&&(e=g.left);m<g.right&&(m=g.right);k>g.top&&(k=g.top);h<g.bottom&&(h=g.bottom);p+=f});return{left:e,right:m,top:k,bottom:h}}var l=a.measureText(g);a.fillText(g,c-l.width*b,p);return{left:c-l.width*b,right:c+l.width*(1-b),top:p-.84*d,
+bottom:p+.36*d}}function cb(a){return"image"===a.ctype?a.value:"string"===a.ctype&&ab.hasOwnProperty(a.value)?ab[a.value].value:null}function Xc(a){return a.replace(/[^A-Za-z0-9 \u0080-\uffff]/ig,"\\$&")}function ea(a,g,c){var p=a;g&&(p=p+" at "+g.row+":"+g.col);c&&(p=p+": \u2018"+c+"\u2019");p=Error(p);p.name="CindyScriptParseError";p.description=a;p.location=g;p.text=c;return p}function mb(a){this.input=a;this.re=new RegExp(Yc,"g");for(var g=[],c=a.indexOf("\n")+1;c;)g.push(c),c=a.indexOf("\n",
+c)+1;g.push(a.length);this.bols=g;this.bol=this.pos=0;this.line=1}function Pb(a){var g=a[a.length-2],c=a[a.length-3],p=a[a.length-1];if(c){if(c.isSuperscript&&g.precedence<=c.precedence)throw ea("Operator not allowed after superscript",g.start,g.text);if(p){if(!g.op.infix)throw ea("Operator may not be used infix",g.start,g.text);}else if(!g.op.postfix)throw ea("Operator may not be used postfix",g.start,g.text);}else if(p){if(!g.op.prefix)throw ea("Operator may not be used prefix",g.start,g.text);
+}else if(!g.op.bare)throw ea("Operator without operands",g.start,g.text);g.ctype="infix";g.oper=g.op.sym;g.args=[c,p];a.splice(a.length-3,3,g)}function Zc(a,g,c,p){a.length&1||a.push(null);for(c=wa[c];3<=a.length&&a[a.length-2].precedence<=c.precedence;)Pb(a);a.push({op:c,precedence:c.precedence+(c.rassoc?1:0),start:g.start,end:g.end,text:g.text,rawtext:g.rawtext});c="";for(var b=g.text,d=0;d<b.length;++d)c+="0123456789+-".charAt(p.indexOf(b.charAt(d)));g.ctype="number";g.value={real:+c,imag:0};a.push(g);
+Pb(a)}function $c(a,g){var c=[],p;a:for(;;)switch(p=a.next(),p.toktype){case "OP":var b=wa[p.text];"_"!==b.sym||!c.length||c.length&1||"OP"!==c[c.length-1].toktype||":="!==c[c.length-1].op.sym||(c.pop(),b=wa[":=_"],p.text=b.sym);p.op=b;p.precedence=b.precedence;for(c.length&1||c.push(null);3<=c.length&&c[c.length-2].precedence<=p.precedence;)Pb(c);b.rassoc&&p.precedence++;c.push(p);break;case "ID":p.ctype="variable";p.name=p.text;if(c.length&1)throw ea("Missing operator",p.start,p.text);c.push(p);
+break;case "NUM":p.ctype="number";p.value={real:+p.text,imag:0};if(c.length&1)throw ea("Missing operator",p.start,p.text);c.push(p);break;case "STR":p.ctype="string";p.value=p.raw.substring(1,p.raw.length-1);if(c.length&1)throw ea("Missing operator",p.start,p.text);c.push(p);break;case "SUB":Zc(c,p,"_","\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u208a\u208b");break;case "SUP":Zc(c,p,"^","\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079\u207a\u207b");c[c.length-1].isSuperscript=
+!0;break;case "BRA":b="[](){}||".indexOf(p.text);if(p.text===g||b&1)break a;var b="[](){}||".charAt(b+1),d=$c(a,b),f=d.closedBy;if(f.text!==b)throw ea("Opening "+p.text+" at "+p.start.row+":"+p.start.col+" closed by "+(f.text||"EOF")+" at "+f.start.row+":"+f.start.col);f=p.text+f.text;b=[];if(d=d.expr){for(;d&&"infix"===d.ctype&&","===d.oper;)b.push(d.args[0]),d=d.args[1];b.push(d)}if(c.length&1){if("{}"===f)throw ea("{\u2026} reserved for future use",p.start);d=c[c.length-1];if("variable"!==d.ctype)throw ea("Function name must be an identifier",
+d.start);if(2<c.length&&c[c.length-2].precedence<ad)throw ea("Function call in indexing construct must be enclosed in parentheses",p.start);d.ctype="function";p=d.args=[];for(var f=d.modifs={},e=0;e<b.length;++e){var m=b[e];if(m&&"infix"===m.ctype&&"->"===m.oper){var k=m.args[0];if("variable"!==k.ctype)throw ea("Modifier name must be an identifier",m.start);f[k.name]=m.args[1]}else p.push(m)}d.oper=d.name.toLowerCase()+"$"+d.args.length}else if("||"===f)if(1===b.length)c.push({ctype:"function",oper:"abs_infix",
+args:b,modifs:{}});else if(2===b.length)c.push({ctype:"function",oper:"dist_infix",args:b,modifs:{}});else throw ea("Don't support |\u2026| with "+b.length+" arguments",p.start);else{if("{}"===f)throw ea("{\u2026} reserved for future use",p.start);"[]"!==f&&1===b.length?c.push({ctype:"paren",args:b}):0===b.length?c.push({ctype:"list",value:[]}):c.push({ctype:"function",oper:"genList",args:b,modifs:{}})}break;case "EOF":break a}for(c.length&1||c.push(null);3<=c.length;)Pb(c);return{expr:c[0],closedBy:p}}
+function Db(a){this.usedFunctions={};this.usedVariables={}}function A(a){if(void 0===a)return k;if("infix"===a.ctype)return a.impl(a.args,{},a);if("variable"===a.ctype)return A(J.getvar(a.name));if("function"===a.ctype)return D.evaluate(a.oper,a.args,a.modifs);if("void"===a.ctype)return k;if("field"===a.ctype){var g=A(a.obj);return"geo"===g.ctype?xa.getField(g.value,a.key):"list"===g.ctype?f.getField(g,a.key):k}return a}function C(a){a=A(a);if("geo"===a.ctype){var g=a.value;if("P"===g.kind)return xa.getField(g,
+"xy");if("V"===g.kind)return g.value}return a}function M(a){a=A(a);if("geo"===a.ctype){var g=a.value;if("P"===g.kind||"L"===g.kind)return xa.getField(g,"homog")}return f._helper.isNumberVecN(a,3)?a:f._helper.isNumberVecN(a,2)?(g=f.turnIntoCSList([a.value[0],a.value[1],m.real(1)]),a.usage&&(g=v.withUsage(g,a.usage)),g):k}function Ma(a){var g=new Db;g.usedFunctions=Mc;g.infixmap=P;a=g.parse(a);for(var c in g.usedVariables)J.create(c);return a}function bd(){this._path=[];this._defs=["<defs>"];this._imgcache=
+[];this._body=[];this._saveStack=[""];this._clipIndex=0;this._stroke=this._fill="#000";this._strokeOpacity=this._fillOpacity=null;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10;this.globalAlpha=1}function cd(){this._body=[];this._yPos=this._xPos=NaN;this._extGState={Af255:"<< /ca 1 >>",As255:"<< /CA 1 >>"};this._objects=[["%PDF-1.4\n"]];this._offset=this._objects[0][0].length;this._nextIndex=5;this._imgcache=[];this._xobjects={};this._pathUsed=
+-1;this._fillAlpha=this._strokeAlpha=this._globalAlpha=1;this.height=this.width=0;this.lineWidth=1;this.lineCap="butt";this.lineJoin="miter";this.miterLimit=10}function dd(a,g){var c=a.width,p=a.height,b=document.createElement("canvas");b.setAttribute("width",c);b.setAttribute("height",p);b.setAttribute("style","display:none;");var d=qa.canvas;d.parentNode.insertBefore(b,d.nextSibling);try{return b.getContext("2d").drawImage(a,0,0,c,p),b.toDataURL(g||"image/png")}finally{b.parentNode.removeChild(b)}}
+function Rd(a){a=a.replace(RegExp("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/]+","g"),"");var g=new Uint8Array(3*a.length>>2),c,p,b,d,f,e;for(p=c=0;c+3<a.length;c+=4)b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c)),d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1)),f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+2)),e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+
+3)),g[p++]=b<<2|d>>4,g[p++]=d<<4|f>>2,g[p++]=f<<6|e;switch(a.length-c){case 0:break;case 2:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));g[p++]=b<<2|d>>4;break;case 3:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));f="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+
+2));g[p++]=b<<2|d>>4;g[p++]=d<<4|f>>2;break;default:throw Error("Malformed Base64 input: "+(a.length-c)+" chars left: "+a.substr(c));}if(p!==g.length)throw Error("Failed assertion: "+p+" should be "+g.length);return g}function Sd(a){function g(c){return(a[c]<<24|a[c+1]<<16|a[c+2]<<8|a[c+3])>>>0}if(57>a.length)throw Error("Too short to be a PNG file");if(2303741511!==g(0)||218765834!==g(4))throw Error("PNG signature missing");for(var c=[],p=8;p<a.length;){if(p+12>a.length)throw Error("Incomplete chunk at offset 0x"+
+p.toString(16));var b=g(p);if(2147483648<=b)throw Error("Chunk too long");var d=p+12+b;if(d>a.length)throw Error("Incomplete chunk at offset 0x"+p.toString(16));var f=a.subarray(p+4,p+8),f=String.fromCharCode.apply(String,f);c.push({len:b,type:f,data:a.subarray(p+8,p+8+b),crc:g(p+8+b)});p=d}return c}function Qb(a,g){var c;if(c=/^rgba\(([0-9]+), *([0-9]+), *([0-9]+), *([0-9]+)\)$/.exec(a))g(+c[1],+c[2],+c[3],+c[4]);else if(c=/^rgb\(([0-9]+), *([0-9]+), *([0-9]+)\)$/.exec(a))g(+c[1],+c[2],+c[3],1);
+else throw Error("Can't handle color style "+a);}function Td(a){var g=1;Object.keys(ab).forEach(function(c){var p=ab[c].value.img;if(void 0===p.cachedDataURL&&p.src)if("data:"===p.src.substr(0,5))p.cachedDataURL=p.src;else{++g;p.cachedDataURL=null;var b=new XMLHttpRequest;b.responseType="blob";b.onreadystatechange=function(){if(b.readyState===XMLHttpRequest.DONE)if(200===b.status){var c=new FileReader;c.onloadend=function(){p.cachedDataURL=c.result;console.log("Cached data for image "+p.src);0===
+--g&&a()};c.readAsDataURL(b.response)}else console.error("Failed to load "+p.src+": "+b.statusText),0===--g&&a()};b.open("GET",p.src,!0);b.send()}});0===--g&&a()}function nb(a,g,c){for(c||(c="0");a.length<g;)a=c+a;return a}function ed(){null!==Eb&&(window.URL.revokeObjectURL(Eb),Eb=null)}function fd(a,g){Td(function(){var c=z;try{z=new a;z.width=W;z.height=V;e();var p=z.toBlob();ed();Eb=window.URL.createObjectURL(p);g.location.href=Eb}finally{z=c}})}function Fb(a){var g=null,c=1E6,p;console.log("getElementAtMouse");
+for(var b=0;b<u.gslp.length;b++){var d=u.gslp[b];if(!d.pinned&&!1!==d.visible&&!0!==d.tmp){var e,k,h,l=x.drawingstate.matrix.sdet;if("P"===d.kind){var n=f.normalizeZ(d.homog);if(!f._helper.isAlmostReal(n))continue;e=n.value[0].value.real-a.x;k=n.value[1].value.real-a.y;h=Math.sqrt(e*e+k*k);d.narrow&h>20/l&&(h=1E4)}else if("C"===d.kind)k=u.csnames[d.args[0]],h=0,"undefined"!==typeof d.radius&&(h=d.radius.value.real),e=m.div(k.homog.value[0],k.homog.value[2]).value.real,k=m.div(k.homog.value[1],k.homog.value[2]).value.real,
+e-=a.x,k-=a.y,h=Math.sqrt(e*e+k*k)-h,k=e=0,0>h&&(h=-h),h+=30/l;else if("L"===d.kind||"S"===d.kind)e=d.homog,h=m,k=h.add(h.mult(e.value[0],h.conjugate(e.value[0])),h.mult(e.value[1],h.conjugate(e.value[1]))),k=f.scaldiv(h.sqrt(k),e),h=k.value[0].value.real*a.x+k.value[1].value.real*a.y+k.value[2].value.real,e=k.value[0].value.real*h,k=k.value[1].value.real*h,0>h&&(h=-h),h+=1;h<c+.2/l&&(c=h,g=d,p={x:e,y:k})}}return null===g?null:{mover:g,offset:p,prev:{x:a.x,y:a.y}}}function Pa(){return"P"+Ud++}function sb(a){var g=
+F[oc].actions;g[tb].event===a&&g[tb]["do"]()&&(b(),tb===g.length-1?(ta=[],tb=Qa=0):tb++)}function pc(a){return a&&.5>Math.abs(a.offset.x)&&.5>Math.abs(a.offset.y)&&!a.mover.tmp}function gd(a){return pc(a)&&"P"===a.mover.kind}function hd(a){return pc(a)&&("L"===a.mover.kind||"S"===a.mover.kind)}function qc(a){aa={mover:a,offset:{x:0,y:0},prev:{x:U.x,y:U.y}}}function ob(){var a=Fb(U);gd(a)?ta[Qa]=a.mover:(ta[Qa]={type:"Free",name:Pa(),labeled:!0,pos:[sa[0],sa[1],1]},Da(ta[Qa]));Qa++}function id(){var a=
+Fb(U);return hd(a)?(ta[Qa]=a.mover,Qa++,!0):!1}function jd(){var a=Fb(U),g;(g=hd(a))||(g=pc(a)&&"C"===a.mover.kind);return g?(ta[Qa]=a.mover,Qa++,!0):!1}function ub(){var a=Fb(U);if(gd(a))for(Gb.args[1]=a.mover.name,a=0;a<u.gslp.length;a++){var g=u.gslp[a];!0===g.tmp&&kd(g.name)}else for(a=0;a<u.gslp.length;a++)g=u.gslp[a],!0===g.tmp&&(g.tmp=!1)}function Rb(a){var g={type:"Free",name:Pa(),labeled:!0,pos:[sa[0],sa[1],1],tmp:!0},g=Da(g);Gb=Da({type:a,name:Pa(),labeled:!0,args:[ta[0].name,g.name]});
+qc(g)}function Vd(a){for(var g in a)null!==a[g]&&(ja[g]=a[g])}function Hd(a){Object.keys(n).forEach(function(a){var c=n[a];db(c.signature||"_helper"===a,a+" has no signature");void 0!==c.updatePosition&&void 0===c.stateSize&&(c.stateSize=0)});u.gslp=[];u.csnames={};u.points=[];u.lines=[];u.conics=[];u.texts=[];u.free=[];u.polygons=[];a.forEach(ld);md()}function nd(a){"undefined"===typeof a.tracedim&&(a.tracedim=1);"undefined"===typeof a.tracelength&&(a.tracelength=100);"undefined"===typeof a.traceskip&&
+(a.traceskip=1);a._traces=Array(a.tracelength);a._traces_index=0;a._traces_tick=0}function Wd(a){void 0===a.size&&(a.size=ja.pointSize);a.size=m.real(a.size);!a.movable||a.pinned?(a.color=f.realVector(a.color||ja.pointColor),a.color=f.scalmult(m.real(ja.dimDependent),a.color)):a.color=f.realVector(a.color||ja.pointColor);void 0===a.alpha&&(a.alpha=ja.alpha);a.alpha=m.real(a.alpha);a.drawtrace&&nd(a)}function Sb(a){void 0===a.size&&(a.size=ja.lineSize);a.size=m.real(a.size);a.color=f.realVector(a.color||
+ja.lineColor);void 0===a.alpha&&(a.alpha=ja.alpha);a.alpha=m.real(a.alpha);a.clip=v.string(a.clip||ja.clip);void 0===a.overhang&&(a.overhang=ja.overhangLine);a.overhang=m.real(a.overhang);a.dashtype&&(a.dashtype=v.wrap(a.dashtype))}function Xd(a){void 0===a.overhang&&(a.overhang=ja.overhangSeg);a.arrow&&(a.arrow=v.bool(a.arrow));a.arrowsize&&(a.arrowsize=m.real(a.arrowsize));a.arrowposition&&(a.arrowposition=m.real(a.arrowposition));a.arrowshape&&(a.arrowshape=v.string(a.arrowshape));a.arrowsides&&
+(a.arrowsides=v.string(a.arrowsides));Sb(a);a.clip=v.string("end")}function Yd(a){a.size=void 0!==a.textsize?a.textsize:void 0!==a.size?a.size:ja.textsize;a.size=m.real(+a.size)}function Zd(a){a.filled=void 0!==a.filled?v.bool(a.filled):v.bool(!0);a.fillcolor=void 0===a.fillcolor?k:f.realVector(a.fillcolor);void 0===a.fillalpha&&(a.fillalpha=0);a.fillalpha=m.real(a.fillalpha);Sb(a)}function Da(a){a=ld(a);md();return a}function ld(a){var g;if(void 0!==u.csnames[a.name])return console.log("Element name '"+
+a.name+"' already exists"),g=u.csnames[a.name],n[g.type].isMovable&&Ea(g,a.pos,"homog"),{ctype:"geo",value:g};if(g=od[a.type]){var c=g(a),p=null;for(g=0;g<c.length;++g)p=Da(c[g]);return p}var b=n[a.type],c=!1;if(!b)return console.error(a),console.error("Operation "+a.type+" not implemented yet"),null;if("**"!==b.signature)if(!Array.isArray(b.signature)&&"*"===b.signature.charAt(1))c=!0,a.args.forEach(function(c){if(u.csnames[c].kind!==b.signature.charAt(0))return console.error("Not all elements in set are of same type: "+
+a.name+" expects "+b.signature+" but "+c+" is of kind "+u.csnames[c].kind),"undefined"!==typeof window&&window.alert("Not all elements in set are of same type: "+a.name),null});else if(b.signature.length!==(a.args?a.args.length:0))return console.error("Wrong number of arguments for "+a.name+" of type "+a.type),"undefined"!==typeof window&&window.alert("Wrong number of arguments for "+a.name),null;if(a.args)for(g=0;g<a.args.length;++g){if(!u.csnames.hasOwnProperty(a.args[g]))return console.log("Dropping "+
+a.name+" due to missing argument "+a.args[g]),null;if("**"!==b.signature&&!c&&(p=u.csnames[a.args[g]].kind,b.signature[g]!==p&&("S"!==p||"L"!==b.signature[g])))return window.alert("Wrong argument kind "+p+" as argument "+g+" to element "+a.name+" of type "+a.type),null}b.signatureConstraints&&!b.signatureConstraints(a)&&window.alert("signature constraints violated for element "+a.name);u.gslp.push(a);u.csnames[a.name]=a;g=ya.length;a.kind=b.kind;a.stateIdx=g;g+=b.stateSize;a.incidences=[];a.isshowing=
+!0;a.movable=!1;b.isMovable&&(a.movable=!0,u.free.push(a));"P"===a.kind&&(u.points.push(a),Wd(a));"L"===a.kind&&(u.lines.push(a),Sb(a));"C"===a.kind&&(u.conics.push(a),Sb(a));"S"===a.kind&&(u.lines.push(a),Xd(a));"Text"===a.kind&&(u.texts.push(a),Yd(a));"Poly"===a.kind&&(u.polygons.push(a),Zd(a));$d(g);ma=Fa=ya;eb=!0;b.initialize&&(ua=za=a.stateIdx,a.param=b.initialize(a),db(za===a.stateIdx+b.stateSize,"State fully initialized"));ua=za=a.stateIdx;b.updatePosition(a,!1);db(ua===a.stateIdx+b.stateSize,
+"State fully consumed");db(za===a.stateIdx+b.stateSize,"State fully updated");eb=!1;ma=bb["in"];ma.set(ya);Fa=bb.out;rc(a,b);Tb={};fb(a);return u.csnames[a.name]}function kd(a){var g,c;console.log("Remove element "+a);delete u.csnames[a];for(g=0;g<u.gslp.length;g++)c=u.gslp[g],c.name===a&&(console.log("Removed element from gslp "+a),u.gslp.splice(g,1));for(g=0;g<u.free.length;g++)c=u.free[g],c.name===a&&(console.log("Removed element from free "+a),u.free.splice(g,1));for(g=0;g<u.points.length;g++)c=
+u.points[g],c.name===a&&(console.log("Removed element from points "+a),u.points.splice(g,1));for(g=0;g<u.lines.length;g++)c=u.lines[g],c.name===a&&(console.log("Removed element from lines "+a),u.lines.splice(g,1));for(g=0;g<u.conics.length;g++)c=u.conics[g],c.name===a&&(console.log("Removed element from conics "+a),u.conics.splice(g,1));Tb={}}function pd(a,g){var c=u.csnames[g.args[0]].homog,p=u.csnames[g.args[1]].homog,b=a.homog,d=m.div(c.value[0],c.value[2]),c=m.div(c.value[1],c.value[2]),f=m.div(p.value[0],
+p.value[2]),p=m.div(p.value[1],p.value[2]),e=m.div(b.value[0],b.value[2]),b=m.div(b.value[1],b.value[2]);return m._helper.isAlmostReal(d)&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(f)&&m._helper.isAlmostReal(p)&&m._helper.isAlmostReal(e)&&m._helper.isAlmostReal(b)?(d=d.value.real,c=c.value.real,f=f.value.real,p=p.value.real,e=e.value.real,b=b.value.real,d=Math.sqrt((d-f)*(d-f)+(c-p)*(c-p))-Math.sqrt((d-e)*(d-e)+(c-b)*(c-b))-Math.sqrt((f-e)*(f-e)+(p-b)*(p-b)),1E-15>d*d):!1}function rc(a,g){a.isshowing=
+!0;if(a.args)for(var c=0;c<a.args.length;c++)if(!u.csnames[a.args[c]].isshowing){a.isshowing=!1;return}g.visiblecheck&&g.visiblecheck(a)}function Nd(a){a._bbox=null;if(a.isshowing&&!1!==a.visible){var g={size:a.size},c=a.homog,p=a.text,b=n[a.type].getText,p=b?b(a):p.replace(/@[$#]"([^"\\]|\\.)*"/g,function(a){var c,g;try{if(c=JSON.parse(a.substring(2)),g=u.csnames[c],!g)return"?"}catch(p){return"?"}switch(a.charAt(1)){case "$":return g.printname||c;case "#":return"V"!==g.kind?"?":w(g.value)}}),b=
+null;if(a.html)var d=a._textCache||{text:!1},f=a.html,e=f.parentNode,m=e.parentNode,b=function(c,g,p,b,ba){d.invisible&&m.style.removeProperty("display");if(c!==d.text||g!==d.font||p!==d.x||b!==d.y||ba!==d.align){g!==d.font&&(f.style.font=g,f.style.lineHeight=ja.lineHeight);c!==d.text&&!1!==c&&!1===qd(f,c,g)&&(c=!1);m.style.left=p+"px";m.style.top=b+"px";if(ba||e.style.transform)e.style.transform="translateX("+-100*ba+"%)";a._textCache={text:c,font:g,x:p,y:b,align:ba}}};p=v.string(p);a.dock&&(a.dock.to?
+c=u.csnames[a.dock.to].homog:rd.hasOwnProperty(a.dock.corner)&&(c=t.screenbounds$0([],{}),c=c.value[rd[a.dock.corner]]),g.offset=a.dock.offset);a.align&&(g.align=v.string(a.align));c&&(a._bbox=D.drawtext([c,p],g,b))}else a.html&&(a.html.parentNode.parentNode.style.display="none",a._textCache={invisible:!0})}function Md(){function a(){var a=e++/c._traces.length,g=c._traces[f];g&&(a*=p*a*a,t.draw$1([g],{size:m.real(b),color:c.color,alpha:m.real(a)}));b*=d}for(var g=0;g<u.points.length;g++){var c=u.points[g];
+if(c.drawtrace){c._traces_tick===c.traceskip?(c._traces[c._traces_index]=c.homog,c._traces_index=(c._traces_index+1)%c._traces.length,c._traces_tick=0):c._traces_tick++;var p=c.alpha.value.real,b=c.size.value.real,d=1;1!==c.tracedim&&(b*=c.tracedim,d=Math.pow(c.tracedim,-1/c._traces.length));var f,e=0;for(f=c._traces_index;f<c._traces.length;++f)a();for(f=0;f<c._traces_index;++f)a()}}}function db(a,g){var c="Assertion failed: "+g;if(!a)throw console.log(c),La(),"undefined"!==typeof alert&&alert(c),
+Error(c);}function $d(a){if(a!==ya.length){var g,c,p=sc.length;gb.length<a*p?(g=2*a,gb=new Float64Array(p*g)):g=gb.length/p|0;for(c=0;c<p;++c)bb[sc[c]]=gb.subarray(c*g,c*g+a);a=ya;ma=bb["in"];Fa=bb.out;ya=bb.good;ya.set(a)}}function lb(){ya.set(ma);sd(!1);for(var a=ya.length,g=Math.abs,c=0;c<a;c+=2)g(ya[c])>1E12*g(ya[c+1])&&(ya[c+1]=0)}function Ub(){if(vb)Ga=!0;else throw td;}function ud(a,g,c,p,b){return v.add(p,v.mult(c,v.sub(b,p)))}function Ld(){I&&(I.currentMouseAndScripts=[]);tc=!0;Ga=!1;ma.set(ya);
+if(aa){var a=aa.mover,g=f.realVector([U.x+aa.offset.x,U.y+aa.offset.y,1]);uc(a,g,"mouse");aa.prev.x=U.x;aa.prev.y=U.y}A(ia.move);A(ia.draw);Ga||lb();tc=!1;I&&(I.fullLog.push(f.turnIntoCSList([f.turnIntoCSList(I.currentMouseAndScripts)])),I.length>I.logLength&&I.splice(0,I.length-I.logLength),I.currentMouseAndScripts=null,I.postMouseHooks.forEach(function(a){a()}))}function Ea(a,g,c){tc?uc(a,g,c):(lb(),Ga=!1,uc(a,g,c),lb())}function uc(a,g,c){I&&I.currentMouseAndScripts&&(I.currentMover=[]);Fa.set(ma);
+var p=1E4,b;b=Tb[a.name];if(!b){var d={},e=0;b=[];d[a.name]=a;for(var k=u.gslp,h=0;h<k.length;++h){var l=k[h],rb=l.args;if(rb)for(var q=0;q<rb.length;++q)d.hasOwnProperty(rb[q])&&(d[l.name]=l,b[e++]=l)}Tb[a.name]=b}var d=-1,e=.9,r,t,w,k=n[a.type],h=k.parameterPath||ud;ua=a.stateIdx;l=k.getParamFromState(a);ua=za=a.stateIdx;rb=k.getParamForInput(a,g,c);for(q=d+e;d!==q;){var y=q*q,x=.5/(1+y),x=m.complex(2*q*x+.5,(1-y)*x);vb=d+.5*e<=d||0===p;0===p&&console.log("tracing limit Reached");y=!1;I&&I.currentMouseAndScripts&&
+(I.currentStep=[]);try{ua=za=a.stateIdx;var z=h(a,q,x,l,rb);I&&(I.currentParam=z);x=Fa;Fa=ma;k.putParamToState(a,z);Fa=x;za=a.stateIdx;I&&(I.currentElement=a);k.updatePosition(a,!0);db(ua===a.stateIdx+k.stateSize,"State fully consumed");db(za===a.stateIdx+k.stateSize,"State fully updated");for(r=0;r<b.length;++r)t=b[r],w=n[t.type],ua=za=t.stateIdx,I&&(I.currentElement=t),w.updatePosition(t,!1),db(ua===t.stateIdx+w.stateSize,"State fully consumed"),db(za===t.stateIdx+w.stateSize,"State fully updated");
+I&&(I.currentElement=null);d=q;e*=1.25;q+=e;1<=q&&(q=1);Fa=ma;ma=x}catch(A){if(A!==td)throw A;e*=.5;q=d+e;--p;y=!0}I&&I.currentMouseAndScripts&&(I.currentMover.push(f.turnIntoCSList([f.turnIntoCSList(I.currentStep),v.wrap(y),v.wrap(d),v.wrap(q),v.wrap(I.currentParam)])),I.currentStep=null,I.currentParam=null)}sd(Ga);for(r=0;r<b.length;++r)t=b[r],w=n[t.type],rc(t,w);I&&I.currentMouseAndScripts&&(I.currentMouseAndScripts.push(f.turnIntoCSList([f.turnIntoCSList(I.currentMover),v.wrap(Ga),v.wrap(a.name),
+g,v.wrap(c),l,rb])),I.currentMover=null)}function Id(){lb();vb=!0;for(var a=u.gslp,g=0;g<a.length;g++){var c=a[g],p=n[c.type];ua=za=c.stateIdx;p.updatePosition(c,!1);rc(c,p)}a=Fa;Fa=ma;ma=a;lb()}function sd(a){var g=q.tracingStateReport;"string"===typeof g&&(document.getElementById(g).textContent=a?"BAD":"GOOD")}function ae(){return f.turnIntoCSList(I.fullLog.slice())}function be(a){var g=JSON.stringify(I.fullLog);a=new Blob([g],{type:a?"application/octet-stream":"application/json"});return window.URL.createObjectURL(a)}
+function wb(){var a=ua;ua+=2;return m.complex(ma[a],ma[a+1])}function Z(a){for(var g=Array(a),c=0;c<a;++c)g[c]=wb();return f.turnIntoCSList(g)}function Va(a){Fa[za]=a.value.real;Fa[za+1]=a.value.imag;za+=2}function T(a){for(var g=0,c=a.value.length;g<c;++g)Va(a.value[g])}function Ha(a,g){var c=Z(3),p=Z(3),c=vd(a,g,c,p);T(c[0]);T(c[1]);return f.turnIntoCSList(c)}function vd(a,g,c,p){if(eb)return[a,g];var b=f.projectiveDistMinScal(c,a),d=f.projectiveDistMinScal(c,g),e=f.projectiveDistMinScal(p,a),m=
+f.projectiveDistMinScal(p,g),h=f.projectiveDistMinScal(c,p),l=f.projectiveDistMinScal(a,g),n=b+m,q=d+e,r;n>q?(r=[g,a],n=q):r=[a,g];q=function(){};if(I&&I.currentStep){var t=[I.labelTracing2,v.wrap(I.currentElement.name),f.turnIntoCSList(r),f.turnIntoCSList([c,p]),f.realMatrix([[b,d],[e,m]]),v.wrap(n),v.wrap(h),v.wrap(l),k];I.currentStep.push(f.turnIntoCSList(t));q=function(a){I.hasOwnProperty(a)||(I[a]=v.wrap(a));t[t.length-1]=I[a]}}f._helper.isNaN(a)||f._helper.isNaN(g)?(q("Tracing failed due to NaNs."),
+Ga=!0):h>3*n&&l>3*n?q("Normal case, everything all right."):1E-5>l?1E-5>h?q("Staying inside singularity."):(q("Moved into singularity."),Ga=!0):1E-5>h?q("Moved out of singularity."):(vb?q("Reached refinement limit, giving up."):q("Need to refine."),Ub());return r}function vc(a,g,c,p){var b=Z(3),d=Z(3),e=Z(3),m=Z(3);a=ce(a,g,c,p,b,d,e,m);T(a[0]);T(a[1]);T(a[2]);T(a[3]);return f.turnIntoCSList(a)}function ce(a,g,c,p,b,d,e,m){var h=function(){};b=[b,d,e,m];a=[a,g,c,p];if(eb)return a;d=0;p=Array(4);for(c=
+0;4>c;c++)for(p[c]=Array(4),m=0;4>m;m++)e=f.projectiveDistMinScal(b[c],a[m]),p[c][m]=e;e=Zb(p);g=Array(4);for(c=0;4>c;++c)g[c]=a[e[c]],d+=p[c][e[c]];var l=1*d,n=Infinity,q=Infinity;for(c=0;4>c;c++){if(f._helper.isNaN(a[c]))return h("Tracing failed due to NaNs."),Ga=!0,g;for(m=c+1;4>m;m++)e=f.projectiveDistMinScal(b[c],b[m]),n>e&&(n=e),e=f.projectiveDistMinScal(g[c],g[m]),q>e&&(q=e)}if(I&&I.currentStep){var r=[I.labelTracing4,v.wrap(I.currentElement.name),f.turnIntoCSList(g),f.turnIntoCSList(b),f.realMatrix(p),
+v.wrap(d),v.wrap(n),v.wrap(q),k];I.currentStep.push(f.turnIntoCSList(r));h=function(a){I.hasOwnProperty(a)||(I[a]=v.wrap(a));r[r.length-1]=I[a]}}n>l&&q>l||(1E-5>q?1E-5>n?h("Staying inside singularity."):(h("Moved into singularity."),Ga=!0):1E-5>n?h("Moved out of singularity."):(vb?h("Reached refinement limit, giving up."):h("Need to refine."),Ub()));return g}function wd(a){var g=a.length,c,p;if(eb){for(c=0;c<g;++c)ua+=2*a[c].value.length,T(a[c]);return a}var b=Array(g),d=Array(g),e=Array(g),m=99,
+h=99,l=Array(g);for(c=0;c<g;++c)b[c]=Z(a[c].value.length),d[c]=f.normSquared(b[c]).value.real,e[c]=f.normSquared(a[c]).value.real,l[c]=Array(g);var n;for(c=0;c<g;++c){for(p=0;p<g;++p)n=f.sesquilinearproduct(b[c],a[p]).value,n=(n.real*n.real+n.imag*n.imag)/(d[c]*e[p]),l[c][p]=1-n;for(p=c+1;p<g;++p)n=f.sesquilinearproduct(b[c],b[p]).value,n=(n.real*n.real+n.imag*n.imag)/(d[c]*d[p]),m>1-n&&(m=1-n),n=f.sesquilinearproduct(a[c],a[p]).value,n=(n.real*n.real+n.imag*n.imag)/(e[c]*e[p]),h>1-n&&(h=1-n)}n=Zb(l);
+p=Array(g);d=0;e=!1;for(c=0;c<g;++c){var d=d+l[c][n[c]],q=p[c]=a[n[c]];T(q);e|=f._helper.isNaN(q)}e|=isNaN(d);a=function(){};if(I&&I.currentStep){var r=[I.labelTracingSesq,v.wrap(I.currentElement.name),f.turnIntoCSList(p),f.turnIntoCSList(b),f.realMatrix(l),v.wrap(d),v.wrap(m),v.wrap(h),k];I.currentStep.push(f.turnIntoCSList(r));a=function(a){I.hasOwnProperty(a)||(I[a]=v.wrap(a));r[r.length-1]=I[a]}}e?(a("Tracing failed due to NaNs."),Ga=!0):m>3*d&&h>3*d?a("Normal case, everything all right."):1E-5>
+h?1E-5>m?a("Staying inside singularity."):(a("Moved into singularity."),Ga=!0):1E-5>m?a("Moved out of singularity."):(vb?a("Reached refinement limit, giving up."):a("Need to refine."),Ub());return p}function fb(a){if(fb.hasOwnProperty(a.kind))fb[a.kind](a)}function xd(a,g){return function(){a.incidences.push(g.name);g.incidences.push(a.name)}}function yd(a,g){return{toString:function(){return"point "+a.name+" incident line "+g.name},apply:xd(a,g),holds:function(){var c=f.scaldiv(f.abs(a.homog),a.homog),
+p=f.scaldiv(f.abs(g.homog),g.homog);return 1E-13>m.abs(f.scalproduct(c,p)).value.real}}}function zd(a,g){return{toString:function(){return"point "+a.name+" incident conic "+g.name},apply:xd(a,g),holds:function(){var c=v.mult(g.matrix,a.homog),c=v.mult(a.homog,c),c=m.abs(c);1E-13>c.value.real&&(a.incidences.push(g.name),g.incidences.push(a.name))}}}function md(){if(0!==hb.length){for(var a=0;a<hb.length;++a)hb[a].apply();hb=[]}}function wc(a,g,c){var p=document.createElement("div"),d=document.createElement("img");
+d.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAPoCAQAAAC1v1zVAAAAGklEQVR42u3BMQEAAADCoPVPbQ0PoAAAgHcDC7gAAVI8ZnwAAAAASUVORK5CYII=";p.className="CindyJS-baseline";p.appendChild(d);d=document.createElement("div");d.className="CindyJS-button";p.appendChild(d);for(var f=2;f<arguments.length;++f)d.appendChild(arguments[f]);ga.parentNode.appendChild(p);a.html=arguments[arguments.length-1];p=b;if(a.script)var e=Ma(a.script),p=function(){A(e);b()};c.addEventListener(g,p);n.Text.initialize(a)}
+function Ka(){}function de(a){if(!/^Select/.test(a.type)&&!n[a.type].isMovable)return null;var g=v.unwrap,c=m.add;switch(a.kind){case "P":case "L":case "Text":return g(a.homog);case "C":return a=a.matrix.value,{xx:g(a[0].value[0]),yy:g(a[1].value[1]),zz:g(a[2].value[2]),xy:g(c(a[0].value[1],a[1].value[0])),xz:g(c(a[0].value[2],a[2].value[0])),yz:g(c(a[1].value[2],a[2].value[1]))};default:return null}}function ee(a){var g={};g.offset=v.unwrap(a.offset);a.to&&(g.to=a.to);a.corner&&(g.corner=a.corner);
+return g}function fe(a){var g={};ge.forEach(function(c){if(a.hasOwnProperty(c)){var b=v.unwrap(a[c]);null!==b&&void 0!==b&&(g[c]=b)}});if("P"===a.kind&&(!a.movable||a.pinned)&&g.color){var c=m.real(1/ja.dimDependent);g.color=v.unwrap(f.scalmult(c,a.color))}if(c=de(a))g.pos=c;a.dock&&(g.dock=ee(a.dock));return g}function he(){var a=[];u.gslp.forEach(function(g){g.tmp||a.push(fe(g))});return a}function Jd(){Aa.forEach(function(a){var g=(a.geo||[]).map(function(a){return u.csnames[a]});N[a.type].reset(a,
+g[0],g)})}function dc(a){hc=0!==a.length;Aa=[];ca=[];xc=[];N.Environment.init({});a.forEach(function(a){a.behavior?(a.name&&(a.behavior.geo=[a.name]),a=a.behavior,a.gravity&&(a.gravity=-a.gravity)):c=a.geo;var c=(a.geo||[]).map(function(a){return u.csnames[a]}),p=c[0],b=N[a.type];b?(b.init&&b.init(a,p,c),p&&(p.behavior=a,"Mass"===a.type?ca.push(p):"Spring"===a.type&&xc.push(p)),Aa.push(a)):(console.error(a),console.error("Behavior "+a.type+" not implemented yet"))})}var va=this,ha,ia={},Ua=!1,Nb=
+!0,Cb=0,Nc=.5,gc=0,Lb=10,Ad=5/360,Kd=.32/Ad/1E3*2,Jb=1,Ta=0,ac=0,bc=!1,zb=!1,ga,yb,Sa=Number.isFinite||function(a){return"number"===typeof a&&isFinite(a)},sa,z,W,V,u,ab,jc=k,kc=k,Na={play:Ka,pause:Ka,stop:Ka},fc=null,Ab=function(a,g){var c=[];Ab=function(a,g){c.push({img:a,id:g})};Ab(a,g);var p=va.getBaseDir()+"images/Icons.svg",b=new XMLHttpRequest;b.onreadystatechange=function(){if(b.readyState===XMLHttpRequest.DONE)if(200!==b.status)console.error("Failed to load CindyJS Icons.svg from "+p+": "+
+b.statusText);else{var a=b.responseXML,g=a.documentElement,d={},f,e;for(f=g.firstChild;f;f=e)e=f.nextSibling,f.nodeType===Node.ELEMENT_NODE&&"http://www.w3.org/2000/svg"===f.namespaceURI&&"g"===f.localName.toLowerCase()&&(g.removeChild(f),f.setAttribute("style","display:inline"),d[f.getAttribute("id")]=f);var m=new XMLSerializer;Ab=function(c,p){if(d.hasOwnProperty(p)){var b=d[p];g.appendChild(b);var f;try{f=m.serializeToString(a)}finally{g.removeChild(b)}c.src="data:image/svg+xml;charset=utf-8,"+
+encodeURIComponent(f)}};c.forEach(function(a){Ab(a.img,a.id)});c=null}};b.responseType="document";b.open("GET",p);b.send()},Oc=1,Bb=null,kb=[],ic=!1,qa={config:q,startup:Q,shutdown:La,evokeCS:function(a){a=Ma(a,!1);console.log(a);A(a);b()},play:S,pause:Za,stop:Ja,evalcs:function(a){return A(Ma(a,!1))},parse:function(a){return Ma(a)},niceprint:w,canvas:null},$b=!1,Kb=0;q.use&&q.use.forEach(function(a){var g=null;q.plugins&&(g=q.plugins[a]);g||(g=va._pluginRegistry[a]);g||(++Kb,console.log("Loading script for plugin "+
+a),va.loadScript(a+"-plugin",a+"-plugin.js",function(){console.log("Successfully loaded plugin "+a);0===--Kb&&$b&&Q()},function(){console.error("Failed to auto-load plugin "+a);0===--Kb&&$b&&Q()}))});jb.prototype=new $a;pb.prototype=new $a;Ya.prototype=new $a;var U={},aa,Pc="",Qc=0,Ob;Ob=q.isNode?process.nextTick:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a,
+0)};var lc=null,ie=[0,8,1,0,"ga578a63"],m={_helper:{}};m._helper.roundingfactor=1E4;m._helper.angleroundingfactor=10;m._helper.niceround=function(a,g){return Math.round(a*g)/g};m.niceprint=function(a,g){g=g||m._helper.roundingfactor;if("Angle"===a.usage)return m._helper.niceangle(a);var c=m._helper.niceround(a.value.real,g),p=m._helper.niceround(a.value.imag,g);return 0===p?""+c:0<p?""+c+" + i*"+p:""+c+" - i*"+-p};var yc=q.angleUnit||"\u00b0",je=yc.replace(/\s+/g,""),Bd=2*Math.PI,ke=1/Bd,le={rad:Bd,
+"\u00b0":360,deg:360,degree:360,gra:400,grad:400,turn:1,cyc:1,rev:1,rot:1,"\u03c0":2,pi:2,quad:4};m._helper.niceangle=function(a){var g=le[je];if(!g)return m.niceprint(v.withUsage(a,null));if("function"===typeof g)return g(a);a=m.niceprint(m.realmult(g*ke,a),200<g?m._helper.angleroundingfactor:null);return-1===a.indexOf("i*")?a+yc:"("+a+")"+yc};m.complex=function(a,g){return{ctype:"number",value:{real:a,imag:g}}};m.real=function(a){return{ctype:"number",value:{real:a,imag:0}}};m.zero=m.real(0);m.one=
+m.real(1);m.infinity=m.complex(Infinity,Infinity);m.nan=m.complex(NaN,NaN);m._helper.input=function(a){return"object"===typeof a?m.complex(+a.r,+a.i):m.real(+a)};m.argmax=function(a,g){return a.value.real*a.value.real+a.value.imag*a.value.imag<g.value.real*g.value.real+g.value.imag*g.value.imag?g:a};m.max=function(a,g){return{ctype:"number",value:{real:Math.max(a.value.real,g.value.real),imag:Math.max(a.value.imag,g.value.imag)}}};m.min=function(a,g){return{ctype:"number",value:{real:Math.min(a.value.real,
+g.value.real),imag:Math.min(a.value.imag,g.value.imag)}}};m.add=function(a,g){return{ctype:"number",value:{real:a.value.real+g.value.real,imag:a.value.imag+g.value.imag}}};m.sub=function(a,g){return{ctype:"number",value:{real:a.value.real-g.value.real,imag:a.value.imag-g.value.imag}}};m.neg=function(a){return{ctype:"number",value:{real:-a.value.real,imag:-a.value.imag}}};m.re=function(a){return{ctype:"number",value:{real:a.value.real,imag:0}}};m.im=function(a){return{ctype:"number",value:{real:a.value.imag,
+imag:0}}};m.conjugate=function(a){return{ctype:"number",value:{real:a.value.real,imag:-a.value.imag}}};m.round=function(a){return{ctype:"number",value:{real:Math.round(a.value.real),imag:Math.round(a.value.imag)}}};m.ceil=function(a){return{ctype:"number",value:{real:Math.ceil(a.value.real),imag:Math.ceil(a.value.imag)}}};m.floor=function(a){return{ctype:"number",value:{real:Math.floor(a.value.real),imag:Math.floor(a.value.imag)}}};m.mult=function(a,g){return{ctype:"number",value:{real:a.value.real*
+g.value.real-a.value.imag*g.value.imag,imag:a.value.real*g.value.imag+a.value.imag*g.value.real}}};m.realmult=function(a,g){return{ctype:"number",value:{real:a*g.value.real,imag:a*g.value.imag}}};m.multiMult=function(a){var g=a[0];if("number"!==g.ctype)return k;for(var c=1;c<a.length;c++){if("number"!==a[c].ctype)return k;g=m.mult(g,a[c])}return g};m.abs2=function(a,g){return{ctype:"number",value:{real:a.value.real*a.value.real+a.value.imag*a.value.imag,imag:0}}};m.abs=function(a){return m.sqrt(m.abs2(a))};
+m.inv=function(a){var g=a.value.real*a.value.real+a.value.imag*a.value.imag;return{ctype:"number",value:{real:a.value.real/g,imag:-a.value.imag/g}}};m.div=function(a,g){var c=a.value.real,p=a.value.imag,b=g.value.real,d=g.value.imag,f=b*b+d*d;return{ctype:"number",value:{real:(c*b+p*d)/f,imag:(p*b-c*d)/f}}};m.eps=1E-10;m.epsbig=1E-6;m.snap=function(a){var g=a.value.real;a=a.value.imag;Math.floor(g+m.eps)!==Math.floor(g-m.eps)&&(g=Math.round(g));Math.floor(a+m.eps)!==Math.floor(a-m.eps)&&(a=Math.round(a));
+return{ctype:"number",value:{real:g,imag:a}}};m.exp=function(a){var g=Math.exp(a.value.real);return{ctype:"number",value:{real:g*Math.cos(a.value.imag),imag:g*Math.sin(a.value.imag)}}};m.cos=function(a){var g=a.value.real;a=a.value.imag;var c=Math.exp(a),p=c*Math.sin(-g),b=c*Math.cos(-g),c=Math.exp(-a);return{ctype:"number",value:{real:(b+c*Math.cos(g))/2,imag:(p+c*Math.sin(g))/2}}};m.sin=function(a){var g=a.value.real;a=a.value.imag;var c=Math.exp(a),p=c*Math.sin(-g),b=c*Math.cos(-g),c=Math.exp(-a);
+return{ctype:"number",value:{real:-(p-c*Math.sin(g))/2,imag:(b-c*Math.cos(g))/2}}};m.tan=function(a){var g=m.sin(a);a=m.cos(a);return m.div(g,a)};m.arccos=function(a){var g=m.mult(a,m.neg(a)),g=m.sqrt(m.add(m.real(1),g));a=m.add(m.mult(a,m.complex(0,1)),g);a=m.add(m.mult(m.log(a),m.complex(0,1)),m.real(.5*Math.PI));return v.withUsage(a,"Angle")};m.arcsin=function(a){var g=m.mult(a,m.neg(a)),g=m.sqrt(m.add(m.real(1),g));a=m.add(m.mult(a,m.complex(0,1)),g);a=m.mult(m.log(a),m.complex(0,-1));return v.withUsage(a,
+"Angle")};m.arctan=function(a){var g=m.log(m.add(m.mult(a,m.complex(0,-1)),m.real(1)));a=m.log(m.add(m.mult(a,m.complex(0,1)),m.real(1)));g=m.mult(m.sub(g,a),m.complex(0,.5));return v.withUsage(g,"Angle")};m.arctan2=function(a,g){var c;if(void 0===g)c=m.real(Math.atan2(a.value.imag,a.value.real));else if(m._helper.isReal(a)&&m._helper.isReal(g))c=m.real(Math.atan2(g.value.real,a.value.real));else{c=m.add(a,m.mult(m.complex(0,1),g));var p=m.sqrt(m.add(m.mult(a,a),m.mult(g,g)));c=m.mult(m.complex(0,
+-1),m.log(m.div(c,p)))}return v.withUsage(c,"Angle")};m.sqrt=function(a){var g=a.value.real,c=a.value.imag;a=Math.sqrt(Math.sqrt(g*g+c*c));g=Math.atan2(c,g);return{ctype:"number",value:{real:a*Math.cos(g/2),imag:a*Math.sin(g/2)}}};m.powRealExponent=function(a,g){var c=a.value.real,p=a.value.imag,b=Math.pow(Math.sqrt(c*c+p*p),g),c=Math.atan2(p,c);return{ctype:"number",value:{real:b*Math.cos(c*g),imag:b*Math.sin(c*g)}}};m.log=function(a){var g=a.value.real;a=a.value.imag;var c=Math.sqrt(g*g+a*a),p=
+Math.atan2(a,g);0>a&&(p+=2*Math.PI);0===a&&0>g&&(p=Math.PI);p>Math.PI&&(p-=2*Math.PI);return m.snap({ctype:"number",value:{real:Math.log(c),imag:p}})};m.pow=function(a,g){return m._helper.isZero(g)?m.one:m._helper.isZero(a)?m.zero:m._helper.isReal(g)?m.powRealExponent(a,g.value.real):m.exp(m.mult(m.log(a),g))};m.mod=function(a,g){var c=a.value.real,p=g.value.real,b=a.value.imag,d=g.value.imag,c=c-Math.floor(c/p)*p,b=b-Math.floor(b/d)*d;0===p&&(c=0);0===d&&(b=0);return m.snap({ctype:"number",value:{real:c,
+imag:b}})};m._helper.seed="NO";m._helper.seedrandom=function(a){a-=Math.floor(a);m._helper.seed=.8*a+.1};m._helper.rand=function(){if("NO"===m._helper.seed)return Math.random();var a=m._helper.seed,a=1E3*Math.sin(1E3*a),a=a-Math.floor(a);return m._helper.seed=a};m._helper.randnormal=function(){var a=m._helper.rand(),g=m._helper.rand();return Math.sqrt(-2*Math.log(a))*Math.cos(2*Math.PI*g)};m._helper.isEqual=function(a,g){return a.value.real===g.value.real&&a.value.imag===g.value.imag};m._helper.isLessThan=
+function(a,g){return a.value.real<g.value.real||a.value.real===g.value.real&&a.value.imag<g.value.imag};m._helper.compare=function(a,g){return m._helper.isLessThan(a,g)?-1:m._helper.isEqual(a,g)?0:1};m._helper.isAlmostEqual=function(a,g,c){var p=m.eps;"undefined"!==typeof c&&(p=c);c=a.value.real-g.value.real;a=a.value.imag-g.value.imag;return c<p&&c>-p&&a<p&&a>-p};m._helper.isZero=function(a){return 0===a.value.real&&0===a.value.imag};m._helper.isAlmostZero=function(a){var g=a.value.real;a=a.value.imag;
+return g<m.eps&&g>-m.eps&&a<m.eps&&a>-m.eps};m._helper.isReal=function(a){return 0===a.value.imag};m._helper.isAlmostReal=function(a){a=a.value.imag;return a<m.epsbig&&a>-m.epsbig};m._helper.isNaN=function(a){return isNaN(a.value.real)||isNaN(a.value.imag)};m._helper.isFinite=function(a){return isFinite(a.value.real)&&isFinite(a.value.imag)};m._helper.isAlmostImag=function(a){a=a.value.real;return a<m.epsbig&&a>-m.epsbig};m._helper.z3a=m.complex(-.5,.5*Math.sqrt(3));m._helper.z3b=m.complex(-.5,-.5*
+Math.sqrt(3));m._helper.cub1={ctype:"list",value:[m.one,m.one,m.one]};m._helper.cub2={ctype:"list",value:[m._helper.z3a,m.one,m._helper.z3b]};m._helper.cub3={ctype:"list",value:[m._helper.z3b,m.one,m._helper.z3a]};m.solveCubic=function(a,g,c,p){a=m._helper.solveCubicHelper(a,g,c,p);return[f.scalproduct(m._helper.cub1,a),f.scalproduct(m._helper.cub2,a),f.scalproduct(m._helper.cub3,a)]};m._helper.solveCubicHelper=function(a,g,c,p){var b=a.value.real;a=a.value.imag;var d=g.value.real;g=g.value.imag;
+var e=c.value.real,k=c.value.imag,h=p.value.real,l=p.value.imag,n=b*e-a*k;c=b*k+a*e;p=4*n-(d*d-g*g);var q=4*c-2*d*g,r=b*d-a*g,t=b*g+a*d,u=p*e-q*k-18*(r*h-t*l),q=p*k+q*e-18*(r*l+t*h);p=27*(b*b-a*a);var v=54*a*b,w=p*h-v*l,y=p*l+v*h,x=d*d-g*g,z=2*d*g,A=x*d-z*g,B=x*g+z*d,C=w+4*A,v=y+4*B;p=27*(u*e-q*k+C*h-v*l);q=27*(u*k+q*e+C*l+v*h);C=Math.sqrt(Math.sqrt(p*p+q*q));v=Math.atan2(q,p);q=C*Math.sin(v/2);p=C*Math.cos(v/2);A=-2*A+9*(r*e-t*k)-w+(p*b-q*a);B=-2*B+9*(r*k+t*e)-y+(p*a+q*b);p=Math.exp(Math.log(Math.sqrt(A*
+A+B*B))/3);e=Math.atan2(B,A);v=p*Math.sin(e/3);q=p*Math.cos(e/3);p*=p;e*=2;n=2*x-6*n;c=2*z-6*c;z=-1.5874010519681996*(d*q-g*v);d=-1.5874010519681996*(d*v+g*q);g=1.2599210498948732*p*Math.cos(e/3);e=1.2599210498948732*p*Math.sin(e/3);p=4.762203155904599*(q*b-v*a);q=4.762203155904599*(q*a+v*b);b=p*p+q*q;v=(-n*q+c*p)/b;n=(n*p+c*q)/b;c=v;v=(-z*q+d*p)/b;z=(z*p+d*q)/b;d=v;v=(-g*q+e*p)/b;g=(g*p+e*q)/b;e=v;return f.turnIntoCSList([m.complex(n,c),m.complex(z,d),m.complex(g,e)])};var f={_helper:{},turnIntoCSList:function(a){return{ctype:"list",
+value:a}}};f.EMPTY=f.turnIntoCSList([]);f.asList=function(a){return"list"===a.ctype?a:"number"===a.ctype||"boolean"===a.ctype||"geo"===a.ctype?f.turnIntoCSList([a]):f.EMPTY};f.realVector=function(a){for(var g=[],c=0;c<a.length;c++)g[c]={ctype:"number",value:{real:a[c],imag:0}};return{ctype:"list",value:g}};f._helper.unitvector=function(a,g){var c=f.zerovector(a);c.value[Math.floor(g.value.real-1)]=m.real(1);return c};f.idMatrix=function(a){for(var g=f.zeromatrix(a,a),c=m.real(1),p=0;p<a.value.real;p++)g.value[p].value[p]=
+c;return g};f._helper.flippedidMatrix=function(a){for(var g=f.zeromatrix(a,a),c=m.real(1),p=0;p<a.value.real;p++)g.value[p].value[a.value.real-p-1]=c;return g};f.println=function(a){for(var g=[],c=0;c<a.value.length;c++)if("number"===a.value[c].ctype)g[c]=m.niceprint(a.value[c]);else if("list"===a.value[c].ctype)f.println(a.value[c]);else return k;"number"===a.value[0].ctype&&console.log(g)};f.matrix=function(a){return f.turnIntoCSList(a.map(f.turnIntoCSList))};f.realMatrix=function(a){for(var g=
+a.length,c=Array(g),p=0;p<g;p++)c[p]=f.realVector(a[p]);return f.turnIntoCSList(c)};f.ex=f.realVector([1,0,0]);f.ey=f.realVector([0,1,0]);f.ez=f.realVector([0,0,1]);f.linfty=f.realVector([0,0,1]);f.ii=f.turnIntoCSList([m.complex(1,0),m.complex(0,1),m.complex(0,0)]);f.jj=f.turnIntoCSList([m.complex(1,0),m.complex(0,-1),m.complex(0,0)]);f.fundDual=f.realMatrix([[1,0,0],[0,1,0],[0,0,0]]);f.fund=f.realMatrix([[0,0,0],[0,0,0],[0,0,1]]);f.sequence=function(a,g){for(var c=[],p=0,b=Math.round(a.value.real);b<
+Math.round(g.value.real)+1;b++)c[p]={ctype:"number",value:{real:b,imag:0}},p++;return{ctype:"list",value:c}};f.pairs=function(a){for(var g=[],c=0;c<a.value.length-1;c++)for(var p=c+1;p<a.value.length;p++)g.push({ctype:"list",value:[a.value[c],a.value[p]]});return{ctype:"list",value:g}};f.triples=function(a){for(var g=[],c=0;c<a.value.length-2;c++)for(var p=c+1;p<a.value.length-1;p++)for(var b=p+1;b<a.value.length;b++)g.push({ctype:"list",value:[a.value[c],a.value[p],a.value[b]]});return{ctype:"list",
+value:g}};f.cycle=function(a){for(var g=[],c=0;c<a.value.length-1;c++)g[c]={ctype:"list",value:[a.value[c],a.value[c+1]]};g.push({ctype:"list",value:[a.value[a.value.length-1],a.value[0]]});return{ctype:"list",value:g}};f.consecutive=function(a){for(var g=[],c=0;c<a.value.length-1;c++)g[c]={ctype:"list",value:[a.value[c],a.value[c+1]]};return{ctype:"list",value:g}};f.reverse=function(a){for(var g=[],c=a.value.length-1;0<=c;c--)g.push(a.value[c]);return{ctype:"list",value:g}};f.directproduct=function(a,
+g){for(var c=[],p=0;p<a.value.length;p++)for(var b=0;b<g.value.length;b++)c.push({ctype:"list",value:[a.value[p],g.value[b]]});return{ctype:"list",value:c}};f.concat=function(a,g){for(var c=[],p=0;p<a.value.length;p++)c.push(a.value[p]);for(p=0;p<g.value.length;p++)c.push(g.value[p]);return{ctype:"list",value:c}};f.prepend=function(a,g){var c=[];c[0]=a;for(var p=0;p<g.value.length;p++)c[p+1]=g.value[p];return{ctype:"list",value:c}};f.append=function(a,g){for(var c=[],p=0;p<a.value.length;p++)c[p]=
+a.value[p];c.push(g);return{ctype:"list",value:c}};f.contains=function(a,g){for(var c=0;c<a.value.length;c++)if(D.equals(a.value[c],g).value)return{ctype:"boolean",value:!0};return{ctype:"boolean",value:!1}};f.common=function(a,g){for(var c=[],p=0,b=0;b<a.value.length;b++){for(var d=!1,f=a.value[b],e=0;e<g.value.length;e++)d=d||D.equals(f,g.value[e]).value;d&&(c[p]=a.value[b],p++)}return{ctype:"list",value:c}};f.remove=function(a,g){for(var c=[],p=0,b=0;b<a.value.length;b++){for(var d=!1,f=a.value[b],
+e=0;e<g.value.length;e++)d=d||D.equals(f,g.value[e]).value;d||(c[p]=a.value[b],p++)}return{ctype:"list",value:c}};f.sort1=function(a){a=a.value.slice();a.sort(v.compare);return f.turnIntoCSList(a)};f._helper.isEqual=function(a,g){return f.equals(a,g).value};f._helper.isLessThan=function(a,g){for(var c=a.value.length,p=g.value.length,b=0;!(b>=c||b>=p)&&v.isEqual(a.value[b],g.value[b]);)b++;return b===c&&b<p?!0:b===p&&b<c||b===c&&b===p?!1:v.isLessThan(a.value[b],g.value[b])};f._helper.compare=function(a,
+g){return f._helper.isLessThan(a,g)?-1:f._helper.isEqual(a,g)?0:1};f.equals=function(a,g){if(a.value.length!==g.value.length)return{ctype:"boolean",value:!1};for(var c=!0,p=0;p<a.value.length;p++)var b=a.value[p],d=g.value[p],c="list"===b.ctype&&"list"===d.ctype?c&&f.equals(b,d).value:c&&B([b,d],[]).value;return{ctype:"boolean",value:c}};f.almostequals=function(a,g){if(a.value.length!==g.value.length)return{ctype:"boolean",value:!1};for(var c=!0,p=0;p<a.value.length;p++)var b=a.value[p],d=g.value[p],
+c="list"===b.ctype&&"list"===d.ctype?c&&f.almostequals(b,d).value:c&&pa([b,d],[]).value;return{ctype:"boolean",value:c}};f._helper.isAlmostReal=function(a){for(var g=!0,c=0;c<a.value.length;c++)var p=a.value[c],g="list"===p.ctype?g&&f._helper.isAlmostReal(p):g&&m._helper.isAlmostReal(p);return g};f._helper.isAlmostZero=function(a){for(var g=0;g<a.value.length;g++){var c=a.value[g];if("list"===c.ctype){if(!f._helper.isAlmostZero(c))return!1}else if(!m._helper.isAlmostZero(c))return!1}return!0};f._helper.isNaN=
+function(a){for(var g=!1,c=0;c<a.value.length;c++)var p=a.value[c],g="list"===p.ctype?g||f._helper.isNaN(p):g||m._helper.isNaN(p);return g};f.set=function(a){var g=[],c=0;a=a.value.slice();a.sort(v.compare);for(var p=0;p<a.length;p++)0!==p&&B([g[g.length-1],a[p]],[]).value||(g[c]=a[p],c++);return{ctype:"list",value:g}};f.maxval=function(a){for(var g=m.zero,c=0;c<a.value.length;c++){var p=a.value[c];"number"===p.ctype&&(g=m.argmax(g,p));"list"===p.ctype&&(g=m.argmax(g,f.maxval(p)))}return g};f.maxIndex=
+function(a,g,c){var p=0;void 0!==c&&(p=c);c=p;for(var b=g(a.value[p]).value.real;p<a.value.length;++p){var d=g(a.value[p]).value.real;d>b&&(c=p,b=d)}return c};f.normalizeMax=function(a){var g=m.inv(f.maxval(a));return m._helper.isFinite(g)?f.scalmult(g,a):a};f.normalizeZ=function(a){var g=m.inv(a.value[2]);return f.scalmult(g,a)};f.dehom=function(a){a=a.value.slice();var g=a.length-1,c=m.inv(a[g]);a.length=g;for(var p=0;p<g;++p)a[p]=m.mult(c,a[p]);return f.turnIntoCSList(a)};f.normalizeAbs=function(a){var g=
+m.inv(f.abs(a));return f.scalmult(g,a)};f.max=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],p=0;p<a.value.length;p++)c[p]=v.max(a.value[p],g.value[p]);return{ctype:"list",value:c}};f.min=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],p=0;p<a.value.length;p++)c[p]=v.min(a.value[p],g.value[p]);return{ctype:"list",value:c}};f.scaldiv=function(a,g){if("number"!==a.ctype)return k;for(var c=[],p=0;p<g.value.length;p++){var b=g.value[p];c[p]="number"===b.ctype?
+v.div(b,a):"list"===b.ctype?f.scaldiv(a,b):k}return{ctype:"list",value:c}};f.scalmult=function(a,g){if("number"!==a.ctype)return k;for(var c=[],p=0;p<g.value.length;p++){var b=g.value[p];c[p]="number"===b.ctype?v.mult(b,a):"list"===b.ctype?f.scalmult(a,b):k}return{ctype:"list",value:c}};f.add=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],p=0;p<a.value.length;p++){var b=a.value[p],d=g.value[p];c[p]="number"===b.ctype&&"number"===d.ctype?v.add(b,d):"list"===b.ctype&&"list"===
+d.ctype?f.add(b,d):k}return{ctype:"list",value:c}};f.sub=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],p=0;p<a.value.length;p++){var b=a.value[p],d=g.value[p];c[p]="number"===b.ctype&&"number"===d.ctype?m.sub(b,d):"list"===b.ctype&&"list"===d.ctype?f.sub(b,d):k}return{ctype:"list",value:c}};f.abs2=function(a){for(var g=0,c=0;c<a.value.length;c++){var p=a.value[c];if("number"===p.ctype)g+=m.abs2(p).value.real;else if("list"===p.ctype)g+=f.abs2(p).value.real;else return k}return{ctype:"number",
+value:{real:g,imag:0}}};f.abs=function(a){return m.sqrt(f.abs2(a))};f.normalizeMaxXX=function(a){for(var g=-1E4,c=m.real(1),p=0;p<a.value.length;p++){var b=m.abs(a.value[p]);b.value.real>g&&(c=a.value[p],g=b.value.real)}return f.scaldiv(c,a)};f.recursive=function(a,g){for(var c=[],p=0;p<a.value.length;p++){var b=C(a.value[p]);c[p]="number"===b.ctype?m[g](b):"list"===b.ctype?f[g](b):k}return{ctype:"list",value:c}};f.re=function(a){return f.recursive(a,"re")};f.neg=function(a){return f.recursive(a,
+"neg")};f.im=function(a){return f.recursive(a,"im")};f.conjugate=function(a){return f.recursive(a,"conjugate")};f.transjugate=function(a){return f.transpose(f.conjugate(a))};f.round=function(a){return f.recursive(a,"round")};f.ceil=function(a){return f.recursive(a,"ceil")};f.floor=function(a){return f.recursive(a,"floor")};f._helper.colNumb=function(a){if("list"!==a.ctype)return-1;for(var g=-1,c=0;c<a.value.length;c++){if("list"!==a.value[c].ctype)return-1;if(0===c)g=a.value[c].value.length;else if(g!==
+a.value[c].value.length)return-1}return g};f._helper.isNumberVecN=function(a,g){if("list"!==a.ctype||a.value.length!==g)return!1;for(var c=0;c<a.value.length;c++)if("number"!==a.value[c].ctype)return!1;return!0};f.isNumberVector=function(a){if("list"!==a.ctype)return{ctype:"boolean",value:!1};for(var g=0;g<a.value.length;g++)if("number"!==a.value[g].ctype)return{ctype:"boolean",value:!1};return{ctype:"boolean",value:!0}};f.isNumberVectorN=function(a,g){if("list"!==a.ctype)return{ctype:"boolean",value:!1};
+if(a.value)for(var c=0;c<a.value.length;c++)if("number"!==a.value[c].ctype)return{ctype:"boolean",value:!1};return{ctype:"boolean",value:!0}};f.isNumberMatrix=function(a){if(-1===f._helper.colNumb(a))return{ctype:"boolean",value:!1};for(var g=0;g<a.value.length;g++)if(!f.isNumberVector(a.value[g]).value)return{ctype:"boolean",value:!1};return{ctype:"boolean",value:!0}};f.scalproduct=function(a,g){if(a.value.length!==g.value.length)return k;for(var c={ctype:"number",value:{real:0,imag:0}},p=0;p<g.value.length;p++){var b=
+a.value[p],d=g.value[p];if("number"===b.ctype&&"number"===d.ctype)c=m.add(m.mult(b,d),c);else return k}return c};f.sesquilinearproduct=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=0,p=0,b=0;b<g.value.length;b++)var d=a.value[b].value,f=g.value[b].value,c=c+(d.real*f.real+d.imag*f.imag),p=p+(d.real*f.imag-d.imag*f.real);return m.complex(c,p)};f.normSquared=function(a){for(var g=0,c=0;c<a.value.length;c++)var p=a.value[c].value,g=g+(p.real*p.real+p.imag*p.imag);return m.real(g)};
+f.productMV=function(a,g){if(a.value[0].value.length!==g.value.length)return k;for(var c=[],p=0;p<a.value.length;p++){for(var b={ctype:"number",value:{real:0,imag:0}},d=a.value[p],e=0;e<g.value.length;e++){var h=d.value[e],l=g.value[e];if("number"===h.ctype&&"number"===l.ctype)b=m.add(m.mult(h,l),b);else return k}c[p]=b}return f.turnIntoCSList(c)};f.productVM=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],p=0;p<g.value[0].value.length;p++){for(var b={ctype:"number",value:{real:0,
+imag:0}},d=0;d<a.value.length;d++){var e=a.value[d],h=g.value[d].value[p];if("number"===e.ctype&&"number"===h.ctype)b=m.add(m.mult(e,h),b);else return k}c[p]=b}return f.turnIntoCSList(c)};f.productMM=function(a,g){if(a.value[0].value.length!==g.value.length)return k;for(var c=[],p=0;p<a.value.length;p++){var b=f.productVM(a.value[p],g);c[p]=b}return f.turnIntoCSList(c)};f.mult=function(a,g){return a.value.length===g.value.length&&f.isNumberVector(a).value&&f.isNumberVector(g).value?f.scalproduct(a,
+g):f.isNumberMatrix(a).value&&g.value.length===a.value[0].value.length&&f.isNumberVector(g).value?f.productMV(a,g):f.isNumberMatrix(g).value&&a.value.length===g.value.length&&f.isNumberVector(a).value?f.productVM(a,g):f.isNumberMatrix(a).value&&f.isNumberMatrix(g)&&g.value.length===a.value[0].value.length?f.productMM(a,g):k};f.projectiveDistMinScal=function(a,g){var c=f.abs(a),p=f.abs(g);if(0===c.value.real||0===p.value.real)return 0;var b=f.conjugate(g),b=f.scalproduct(a,b),b=m._helper.isAlmostZero(b)?
+m.real(1):m.div(b,m.abs(b)),c=f.scaldiv(c,a),p=f.scaldiv(p,g),p=f.scalmult(b,p),b=f.abs(f.add(c,p)),p=f.abs(f.sub(c,p));return Math.min(b.value.real,p.value.real)};f.conicDist=function(a,g){var c=G(a),p=G(g);console.log(w(c),w(p));return f.projectiveDistMinScal(c,p)};f.crossOperator=function(a){var g=a.value[0],c=a.value[1];a=a.value[2];return f.turnIntoCSList([f.turnIntoCSList([m.zero,m.neg(a),c]),f.turnIntoCSList([a,m.zero,m.neg(g)]),f.turnIntoCSList([m.neg(c),g,m.zero])])};f.cross=function(a,g){var c=
+m.sub(m.mult(a.value[1],g.value[2]),m.mult(a.value[2],g.value[1])),p=m.sub(m.mult(a.value[2],g.value[0]),m.mult(a.value[0],g.value[2])),b=m.sub(m.mult(a.value[0],g.value[1]),m.mult(a.value[1],g.value[0]));return f.turnIntoCSList([c,p,b])};f.crossratio3harm=function(a,g,c,p,b){var d=f.det3(a,c,b),e=f.det3(g,p,b);a=f.det3(a,p,b);g=f.det3(g,c,b);d=m.mult(d,e);e=m.mult(a,g);return f.turnIntoCSList([d,e])};f.crossratio3=function(a,g,c,p,b){a=f.crossratio3harm(a,g,c,p,b);return m.div(a.value[0],a.value[1])};
+f.veronese=function(a){var g=m.mult(a.value[0],a.value[0]),c=m.mult(a.value[1],a.value[1]),p=m.mult(a.value[2],a.value[2]),b=m.mult(a.value[0],a.value[1]),d=m.mult(a.value[0],a.value[2]);a=m.mult(a.value[1],a.value[2]);return f.turnIntoSCList([g,c,p,b,d,a])};f.matrixFromVeronese=function(a){var g=a.value[0],c=a.value[1],p=a.value[2],b=m.realmult(.5,a.value[3]),d=m.realmult(.5,a.value[4]);a=m.realmult(.5,a.value[5]);return f.turnIntoCSList([f.turnIntoCSList([g,b,d]),f.turnIntoCSList([b,c,a]),f.turnIntoCSList([d,
+a,p])])};f.det2=function(a,g){var c=m.mult(a.value[0],g.value[1]);return c=m.sub(c,m.mult(a.value[1],g.value[0]))};f.det3=function(a,g,c){return m.complex(a.value[0].value.real*g.value[1].value.real*c.value[2].value.real-a.value[0].value.imag*g.value[1].value.imag*c.value[2].value.real-a.value[0].value.imag*g.value[1].value.real*c.value[2].value.imag-a.value[0].value.real*g.value[1].value.imag*c.value[2].value.imag+a.value[2].value.real*g.value[0].value.real*c.value[1].value.real-a.value[2].value.imag*
+g.value[0].value.imag*c.value[1].value.real-a.value[2].value.imag*g.value[0].value.real*c.value[1].value.imag-a.value[2].value.real*g.value[0].value.imag*c.value[1].value.imag+a.value[1].value.real*g.value[2].value.real*c.value[0].value.real-a.value[1].value.imag*g.value[2].value.imag*c.value[0].value.real-a.value[1].value.imag*g.value[2].value.real*c.value[0].value.imag-a.value[1].value.real*g.value[2].value.imag*c.value[0].value.imag-a.value[0].value.real*g.value[2].value.real*c.value[1].value.real+
+a.value[0].value.imag*g.value[2].value.imag*c.value[1].value.real+a.value[0].value.imag*g.value[2].value.real*c.value[1].value.imag+a.value[0].value.real*g.value[2].value.imag*c.value[1].value.imag-a.value[2].value.real*g.value[1].value.real*c.value[0].value.real+a.value[2].value.imag*g.value[1].value.imag*c.value[0].value.real+a.value[2].value.imag*g.value[1].value.real*c.value[0].value.imag+a.value[2].value.real*g.value[1].value.imag*c.value[0].value.imag-a.value[1].value.real*g.value[0].value.real*
+c.value[2].value.real+a.value[1].value.imag*g.value[0].value.imag*c.value[2].value.real+a.value[1].value.imag*g.value[0].value.real*c.value[2].value.imag+a.value[1].value.real*g.value[0].value.imag*c.value[2].value.imag,-a.value[0].value.imag*g.value[1].value.imag*c.value[2].value.imag+a.value[0].value.imag*g.value[1].value.real*c.value[2].value.real+a.value[0].value.real*g.value[1].value.real*c.value[2].value.imag+a.value[0].value.real*g.value[1].value.imag*c.value[2].value.real-a.value[2].value.imag*
+g.value[0].value.imag*c.value[1].value.imag+a.value[2].value.imag*g.value[0].value.real*c.value[1].value.real+a.value[2].value.real*g.value[0].value.real*c.value[1].value.imag+a.value[2].value.real*g.value[0].value.imag*c.value[1].value.real-a.value[1].value.imag*g.value[2].value.imag*c.value[0].value.imag+a.value[1].value.imag*g.value[2].value.real*c.value[0].value.real+a.value[1].value.real*g.value[2].value.real*c.value[0].value.imag+a.value[1].value.real*g.value[2].value.imag*c.value[0].value.real+
+a.value[0].value.imag*g.value[2].value.imag*c.value[1].value.imag-a.value[0].value.imag*g.value[2].value.real*c.value[1].value.real-a.value[0].value.real*g.value[2].value.real*c.value[1].value.imag-a.value[0].value.real*g.value[2].value.imag*c.value[1].value.real+a.value[2].value.imag*g.value[1].value.imag*c.value[0].value.imag-a.value[2].value.imag*g.value[1].value.real*c.value[0].value.real-a.value[2].value.real*g.value[1].value.real*c.value[0].value.imag-a.value[2].value.real*g.value[1].value.imag*
+c.value[0].value.real+a.value[1].value.imag*g.value[0].value.imag*c.value[2].value.imag-a.value[1].value.imag*g.value[0].value.real*c.value[2].value.real-a.value[1].value.real*g.value[0].value.real*c.value[2].value.imag-a.value[1].value.real*g.value[0].value.imag*c.value[2].value.real)};f.det4m=function(a){var g=a.value,c=g[0].value,p=c[0].value,b=+p.real,d=+p.imag,p=c[1].value,f=+p.real,e=+p.imag,p=c[2].value,k=+p.real,h=+p.imag,p=c[3].value,l=+p.real,n=+p.imag,c=g[1].value,p=c[0].value,q=+p.real,
+r=+p.imag,p=c[1].value,t=+p.real,u=+p.imag,p=c[2].value,v=+p.real,w=+p.imag,p=c[3].value,c=+p.real,p=+p.imag;a=b*t-d*u-f*q+e*r;var x=b*u+d*t-f*r-e*q,y=b*v-d*w-k*q+h*r,z=b*w+d*v-k*r-h*q,A=b*c-d*p-l*q+n*r,B=b*p+d*c-l*r-n*q,C=f*v-e*w-k*t+h*u,D=f*w+e*v-k*u-h*t,E=f*c-e*p-l*t+n*u,F=f*p+e*c-l*u-n*t,G=k*c-h*p-l*v+n*w,H=k*p+h*c-l*w-n*v,c=g[2].value,p=c[0].value,b=+p.real,d=+p.imag,p=c[1].value,f=+p.real,e=+p.imag,p=c[2].value,k=+p.real,h=+p.imag,p=c[3].value,l=+p.real,n=+p.imag,c=g[3].value,p=c[0].value,q=
++p.real,r=+p.imag,p=c[1].value,t=+p.real,u=+p.imag,p=c[2].value,v=+p.real,w=+p.imag,p=c[3].value,c=+p.real,p=+p.imag,g=b*t-d*u-f*q+e*r,I=b*u+d*t-f*r-e*q,J=b*v-d*w-k*q+h*r,K=b*w+d*v-k*r-h*q,L=b*c-d*p-l*q+n*r,b=b*p+d*c-l*r-n*q,d=f*v-e*w-k*t+h*u,q=f*w+e*v-k*u-h*t,r=f*c-e*p-l*t+n*u,f=f*p+e*c-l*u-n*t,e=k*c-h*p-l*v+n*w,k=k*p+h*c-l*w-n*v;return m.complex(a*e-x*k-y*r+z*f+A*d-B*q+C*L-D*b-E*J+F*K+G*g-H*I,a*k+x*e-y*f-z*r+A*q+B*d+C*b+D*L-E*K-F*J+G*I+H*g)};f.eucangle=function(a,g){var c=f.cross(a,f.linfty),p=
+f.cross(g,f.linfty),b=f.det3(f.ez,c,f.ii),c=f.det3(f.ez,c,f.jj),d=f.det3(f.ez,p,f.ii),p=f.det3(f.ez,p,f.jj),b=m.div(m.mult(b,p),m.mult(d,c)),b=m.log(b);return b=m.mult(b,m.complex(0,.5))};f.zerovector=function(a){a=Math.floor(a.value.real);for(var g=Array(a),c=0;c<a;c++)g[c]=0;return f.realVector(g)};f.zeromatrix=function(a,g){for(var c=Math.floor(a.value.real),p=Array(c),b=0;b<c;b++)p[b]=f.zerovector(g);return f.turnIntoCSList(p)};f.vandermonde=function(a){for(var g=a.value.length,c=f.zeromatrix(g,
+g),p=0;p<g;p++)for(var b=0;b<g;b++)c.value[p].value[b]=m.pow(a.value[p],m.real(b-1));return c};f.transpose=function(a){for(var g=[],c=a.value[0].value.length,b=a.value.length,d=0;d<c;d++){for(var e=[],m=0;m<b;m++)e[m]=a.value[m].value[d];g[d]=f.turnIntoCSList(e)}return f.turnIntoCSList(g)};f.column=function(a,g){for(var c=[],b=a.value.length,d=Math.floor(g.value.real-1),e=0;e<b;e++)c[e]=a.value[e].value[d];return f.turnIntoCSList(c)};f.row=function(a,g){for(var c=[],b=a.value[0].value.length,d=Math.floor(g.value.real-
+1),e=0;e<b;e++)c[e]=a.value[d].value[e];return f.turnIntoCSList(c)};f.adjoint2=function(a){var g=a.value[0].value[0],c=a.value[1].value[0],b=Array(2);b[0]=f.turnIntoCSList([a.value[1].value[1],m.neg(a.value[0].value[1])]);b[1]=f.turnIntoCSList([m.neg(c),g]);return b=f.turnIntoCSList(b)};f.adjoint3=function(a){var g,c,b,d,f,e,m,k,h,l,n,q,r,t,u,v,w;g=a.value[0].value;c=g[0].value;b=c.real;d=c.imag;c=g[1].value;f=c.real;e=c.imag;c=g[2].value;m=c.real;k=c.imag;g=a.value[1].value;c=g[0].value;h=c.real;
+l=c.imag;c=g[1].value;n=c.real;q=c.imag;c=g[2].value;r=c.real;t=c.imag;g=a.value[2].value;c=g[0].value;a=c.real;u=c.imag;c=g[1].value;v=c.real;w=c.imag;c=g[2].value;g=c.real;c=c.imag;return{ctype:"list",value:[{ctype:"list",value:[{ctype:"number",value:{real:n*g-r*v-q*c+t*w,imag:n*c-r*w-v*t+g*q}},{ctype:"number",value:{real:-f*g+m*v+e*c-k*w,imag:-f*c+m*w+v*k-g*e}},{ctype:"number",value:{real:f*r-m*n-e*t+k*q,imag:f*t-m*q-n*k+r*e}}]},{ctype:"list",value:[{ctype:"number",value:{real:-h*g+r*a+l*c-t*u,
+imag:-h*c+r*u+a*t-g*l}},{ctype:"number",value:{real:b*g-m*a-d*c+k*u,imag:b*c-m*u-a*k+g*d}},{ctype:"number",value:{real:-b*r+m*h+d*t-k*l,imag:-b*t+m*l+h*k-r*d}}]},{ctype:"list",value:[{ctype:"number",value:{real:h*v-n*a-l*w+q*u,imag:h*w-n*u-a*q+v*l}},{ctype:"number",value:{real:-b*v+f*a+d*w-e*u,imag:-b*w+f*u+a*e-v*d}},{ctype:"number",value:{real:b*n-f*h-d*q+e*l,imag:b*q-f*l-h*e+n*d}}]}]}};f.inverse=function(a){var g=a.value.length;if(g!==a.value[0].value.length)return console.log("Inverse works only for square matrices"),
+k;if(2===g)return f.scaldiv(f.det(a),f.adjoint2(a));if(3===g)return f.scaldiv(f.det(a),f.adjoint3(a));g=f.LUdecomp(a);a=a.value.length;var c=m.real(0),b=m.real(1),d=f.zerovector(m.real(a));d.value[0]=b;for(var e=Array(a),h=0;h<a;h++)e[h]=f._helper.LUsolve(g,d),d.value[h]=c,d.value[h+1]=b;e=f.turnIntoCSList(e);return e=f.transpose(e)};f.linearsolve=function(a,g){return 2===a.value.length?f.linearsolveCramer2(a,g):3===a.value.length?f.linearsolveCramer3(a,g):f.LUsolve(a,g)};f.getDiag=function(a){if(a.value.length!==
+a.value[0].value.length)return k;for(var g=Array(a.value.length),c=0;c<a.value.length;c++)g[c]=a.value[c].value[c];return f.turnIntoCSList(g)};f.getSubDiag=function(a){if(a.value.length!==a.value[0].value.length)return k;for(var g=Array(a.value.length-1),c=0;c<a.value.length-1;c++)g[c]=a.value[c+1].value[c];return f.turnIntoCSList(g)};f.eig2=function(a){var g=m.add(a.value[0].value[0],a.value[1].value[1]);a=f.det2(a.value[0],a.value[1]);var c=m.mult(g,g),b=g=m.mult(g,m.real(.5));a=m.sqrt(m.sub(m.div(c,
+m.real(4)),a));g=m.add(g,a);b=m.sub(b,a);return f.turnIntoCSList([g,b])};f.eig=function(a,g){var c=g||!0,b=a,d=m.real(b.value.length),e=d.value.real;m.real(0);var b=f._helper.QRIteration(b)[0],b=f.getDiag(b),b=f.sort1(b),d=f.idMatrix(d,d),h=Array(e),h=f.turnIntoCSList(h);if(c){for(var k,l,n,q=0,r=!1,c=0;c<e;c++)r?l=k.value[q]:(k=b.value[c],k=f.sub(a,f.scalmult(k,d)),k=f.nullSpace(k),l=k.value[0],void 0!==l&&(n=l)),void 0===l&&(l=n),1E-8>f.abs(l).value.real&&0===q&&(l=f._helper.inverseIteration(a,
+b.value[c])),h.value[c]=f._helper.isAlmostZeroVec(l)?l:f.scaldiv(f.abs(l),l),c<e-1&&((r=1E-6>m.abs(m.sub(b.value[c],b.value[c+1])).value.real)?q++:q=0);h=f.transpose(h)}return f.turnIntoCSList([b,h])};f._helper.isNormalMatrix=function(a){return 1E-10>f.abs(f.sub(a,f.transjugate(a))).value.real};f._helper.QRIteration=function(a,g){var c,b=a;c=m.real(b.value.length);var d=c.value.real,e=c.value.real;m.real(0);var k;f.idMatrix(c,c);var h=f.zeromatrix(c,c),l=f.idMatrix(c,c),n=g?g:2500,q,r,t,u=0,w=Array(e);
+for(c=0;c<n;c++){k=f._helper.getBlock(b,[e-2,e-1],[e-2,e-1]);q=f.eig2(k);k=q.value[0];q=q.value[1];f.abs(k);f.abs(q);r=b.value[e-1].value[e-1];t=m.abs(m.sub(r,k)).value.real;r=m.abs(m.sub(r,q)).value.real;q=t<r?k:q;k=f.idMatrix(m.real(e),m.real(e));q=f.scalmult(q,k);k=f.QRdecomp(f.sub(b,q));b=v.mult(k.R,k.Q);b=f.add(b,q);k.Q=f._helper.buildBlockMatrix(k.Q,f.idMatrix(m.real(u),m.real(u)));l=v.mult(l,k.Q);if(1E-48>m.abs2(b.value[b.value.length-1].value[b.value[0].value.length-2]).value.real&&1<e){w[d-
+u-1]=b.value[e-1].value[e-1];for(c=0;c<e;c++)h.value[e-1].value[c]=b.value[e-1].value[c],h.value[c].value[e-1]=b.value[c].value[e-1];b=f._helper.getBlock(b,[0,e-2],[0,e-2]);u++;e--}if(1===e){h.value[0].value[0]=b.value[0].value[0];break}if(f._helper.isUpperTriangular(b)){for(c=0;c<e;c++)h.value[c].value[c]=b.value[c].value[c];break}}return[h,l]};f.rank=function(a,g){return f.RRQRdecomp(a,g).rank};f._helper.isAlmostZeroVec=function(a){for(var g=a.value.length,c=0;c<g;c++)if(!m._helper.isAlmostZero(a.value[c]))return!1;
+return!0};f._helper.isLowerTriangular=function(a){for(var g=a.value.length,c=a.value[0].value.length,b=0;b<g;b++)for(var d=b+1;d<c;d++)if(!m._helper.isAlmostZero(a.value[b].value[d]))return!1;return!0};f._helper.isUpperTriangular=function(a){return f._helper.isLowerTriangular(f.transpose(a))};f._helper.isAlmostId=function(a){var g=a.value.length,c=m.real(g);if(g!==a.value[0].value.length)return!1;a=f.sub(a,f.idMatrix(c),c);for(c=0;c<g;c++)for(var b=0;b<g;b++)if(1E-16<m.abs(a.value[c].value[b]).value.real)return!1;
+return!0};f.nullSpace=function(a,g){var c=a.value.length,b=f.RRQRdecomp(f.transjugate(a),g),d=f.transpose(b.Q),b=c-b.rank.value.real,e=Array(b);d.value.reverse();for(var k,h=0;h<b;h++)k=d.value[h],e[h]=f.scaldiv(f.abs(k),k);e=f.turnIntoCSList(e);return 0<e.value.length?e:f.turnIntoCSList([f.zerovector(m.real(c))])};f._helper.isAlmostDiagonal=function(a){var g=a.value.length;m.real(g);m.real(0);if(g!==a.value[0].value.length)return!1;for(var c=0;c<g;c++)for(var b=0;b<g;b++)if(c!==b&&1E-16<m.abs(a.value[c].value[b]).value.real)return!1;
+return!0};f._helper.inverseIteration=function(a,g){console.log("warning: code untested");for(var c=a.value.length,b=Array(c),d=0;d<c;d++)b[d]=2*Math.random()-.5;for(var b=f.realVector(b),c=f.idMatrix(m.real(c),m.real(c)),d=m.add(g,m.real(.1*Math.random()-.5)),e=0;100>e;e++)b=f.scaldiv(f.abs(b),b),b=f.LUsolve(f.sub(a,f.scalmult(d,c)),JSON.parse(JSON.stringify(b)));return f.scaldiv(f.abs(b),b)};f._helper.toHessenberg=function(a){var g=JSON.parse(JSON.stringify(a)),c=g.value.length,b=m.real(c-1),d=m.real(c);
+m.real(1);if(f._helper.isUpperTriangular(g))return[f.idMatrix(b,b),a];var e;a=f.idMatrix(d,d);for(var k,d=1;d<c-1;d++)e=f.column(g,m.real(d)),e.value=e.value.splice(d),k=f.abs2(e).value.real,1E-16<k&&(e=f._helper.getHouseHolder(e),a=v.mult(a,e),g=v.mult(v.mult(e,g),e)),b.value.real--;return[a,g]};f._helper.swapEl=function(a,g,c){var b;"[object Array]"===Object.prototype.toString.call(a)?(b=a[g],a[g]=a[c],a[c]=b):"list"===a.ctype&&(b=a.value[g],a.value[g]=a.value[c],a.value[c]=b)};f.RRQRdecomp=function(a,
+g){var c=Math.sqrt(m.eps);void 0!==g&&(c=.1*g.value.real);var c=c*c,b,d=a.value.length,e=m.real(d),k=m.real(1),h=f._helper.unitvector(m.real(a.value.length),k),l=f.idMatrix(e,e),n=JSON.parse(JSON.stringify(a)),q=f.transpose(a),r=Array(d);for(b=0;b<d;b++)r[b]=f.abs2(q.value[b]);r=f.turnIntoCSList(r);q=Array(d);for(b=0;b<d;b++)q[b]=b;b=f.maxIndex(r,m.abs);for(var t=r.value[b],u=0,w=0;1E-16<m.abs2(t).value.real;w++){u++;f._helper.swapColumn(n,w,b);f._helper.swapEl(r,w,b);f._helper.swapEl(q,w,b);b=f._helper.getBlock(n,
+[w],[w]);b=f.column(b,k);t=f.abs2(b).value.real;1E-8<t&&(b=f._helper.getHouseHolder(b),b=f._helper.buildBlockMatrix(f.idMatrix(m.real(w),m.real(w)),b),l=v.mult(l,f.transjugate(b)),n=v.mult(b,n));for(b=w+1;b<d;b++)r.value[b]=m.sub(r.value[b],m.mult(n.value[w].value[b],m.conjugate(n.value[w].value[b])));b=f.maxIndex(r,m.abs2,w+1);t=r.value[b];if(w+2===d){m.abs(t).value.real>c&&u++;break}e=m.sub(e,k);h.value=h.value.splice(0,h.value.length-1)}return{Q:l,R:n,P:f.turnIntoCSList(q),rank:m.real(u)}};f._helper.getHouseHolder=
+function(a){var g=m.real(a.value.length);if(1E-16>f.abs2(a))return f.idMatrix(g,g);var c,b=m.real(1),d=f._helper.unitvector(m.real(a.value.length),b);c=f._helper.QRgetAlpha(a,0);c=f.sub(a,f.scalmult(c,d));c=f.scaldiv(f.abs(c),c);a=m.div(f.sesquilinearproduct(a,c),f.sesquilinearproduct(c,a));g=f.idMatrix(g,g);return g=f.sub(g,f.scalmult(m.add(b,a),f._helper.transposeMult(c,f.conjugate(c))))};f._helper.reOrderbyPivots=function(a,g){for(var c=a.value.length.length,b=f.transpose(a),c=Array(c),d=0;d<g.length;d++)c[g[d]]=
+b.value[d];c=f.turnIntoCSList(c);return f.transpose(c)};f.QRdecomp=function(a){var g,c=a.value.length,b=m.real(c);if(f._helper.isUpperTriangular(a))return{Q:f.idMatrix(b,b),R:a};var d=m.real(1),e=f._helper.unitvector(m.real(a.value.length),d),k,h=f.idMatrix(b,b);a=JSON.parse(JSON.stringify(a));for(var l=0;;l++){g=f._helper.getBlock(a,[l],[l]);g=f.column(g,d);k=f.abs2(g).value.real;1E-8<k&&(g=f._helper.getHouseHolder(g),g=f._helper.buildBlockMatrix(f.idMatrix(m.real(l),m.real(l)),g),h=v.mult(h,f.transjugate(g)),
+a=v.mult(g,a));if(l+2===c)break;b=m.sub(b,d);e.value=e.value.splice(0,e.value.length-1)}return{Q:h,R:a}};f._helper.swapColumn=function(a,g,c){for(var b,d=0;d<a.value.length;d++)b=a.value[d].value[g],a.value[d].value[g]=a.value[d].value[c],a.value[d].value[c]=b};f._helper.buildBlockMatrix=function(a,g){if(0===a.value.length)return g;if(0===g.value.length)return a;for(var c=a.value.length,b=a.value[0].value.length,d=b+g.value[0].value.length,d=f.zeromatrix(m.real(c+g.value.length),m.real(d)),e=0;e<
+a.value.length;e++)for(var k=0;k<a.value[0].value.length;k++)d.value[e].value[k]=a.value[e].value[k];for(e=0;e<g.value.length;e++)for(k=0;k<g.value[0].value.length;k++)d.value[c+e].value[b+k]=g.value[e].value[k];return d};f._helper.getBlock=function(a,g,c){a=JSON.parse(JSON.stringify(a));var b=g[0],d=c[0];g=void 0===g[1]?a.value.length:g[1];c=void 0===c[1]?a.value[0].value.length:c[1];g++;c++;a.value=a.value.slice(b,g);for(b=0;b<a.value.length;b++)a.value[b].value=a.value[b].value.slice(d,c);return a};
+f._helper.setBlock=function(a,g,c){a=JSON.parse(JSON.stringify(a));var b=c[0];c=c[1];for(var d=g.value.length,f=g.value[0].value.length,e=0;e<d;e++)for(var k=0;k<f;k++)a.value[b+e].value[c+k]=g.value[e].value[k];return a};f._helper.transposeMult=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=a.value.length,b=Array(c),d=0;d<c;d++)b[d]=f.scalmult(a.value[d],g);return f.turnIntoCSList(b)};f._helper.QRgetAlpha=function(a,g){return 0>a.value[g].value.real?f.abs(a):m.neg(f.abs(a))};
+f.LUdecomp=function(a){a=JSON.parse(JSON.stringify(a));var g,c,b,d,f,e=0,k,h=a.value.length,l=h-1,n=Array(h);for(b=0;b<h;++b){f=b;d=a.value[b];k=m.abs(d.value[b]).value.real;for(c=b+1;c<h;++c)g=m.abs(a.value[c].value[b]),k<g.value.real&&(k=g.value.real,f=c);k<m.eps&&console.log("Warning: singular matrix!");n[b]=f;f!==b&&(a.value[b]=a.value[f],a.value[f]=d,d=a.value[b],e++);c=d.value[b];for(g=b+1;g<h;++g)a.value[g].value[b]=m.div(a.value[g].value[b],c);for(g=b+1;g<h;++g){f=a.value[g];for(c=b+1;c<l;++c)f.value[c]=
+m.sub(f.value[c],m.mult(f.value[b],d.value[c])),++c,f.value[c]=m.sub(f.value[c],m.mult(f.value[b],d.value[c]));c===l&&(f.value[c]=m.sub(f.value[c],m.mult(f.value[b],d.value[c])))}}return{LU:a,P:n,TransPos:e}};f.LUsolve=function(a,g){var c=f.LUdecomp(a);return f._helper.LUsolve(c,g)};f._helper.LUsolve=function(a,g){var c=JSON.parse(JSON.stringify(g)),b,d=a.LU,f=d.value.length,e=JSON.parse(JSON.stringify(c)),k=a.P,h;for(b=f-1;-1!==b;--b)e.value[b]=c.value[b];for(b=0;b<f;++b)for(c=k[b],k[b]!==b&&(h=
+e.value[b],e.value[b]=e.value[c],e.value[c]=h),h=d.value[b],c=0;c<b;++c)e.value[b]=m.sub(e.value[b],m.mult(e.value[c],h.value[c]));for(b=f-1;0<=b;--b){h=d.value[b];for(c=b+1;c<f;++c)e.value[b]=m.sub(e.value[b],m.mult(e.value[c],h.value[c]));e.value[b]=m.div(e.value[b],h.value[b])}return e};f.linearsolveCramer2=function(a,g){var c=f.column(a,m.real(1)),b=f.column(a,m.real(2)),d=f.det2(c,b);m._helper.isZero(d)&&console.log("A is not regular!");b=f.det2(g,b);b=m.div(b,d);c=f.det2(c,g);c=m.div(c,d);return f.turnIntoCSList([b,
+c])};f.linearsolveCramer3=function(a,g){var c=f.column(a,m.real(1)),b=f.column(a,m.real(2)),d=f.column(a,m.real(3)),e=f.det3(c,b,d);m._helper.isZero(e)&&console.log("A is not regular!");var k=f.det3(g,b,d),d=f.det3(c,g,d),c=f.det3(c,b,g),k=f.turnIntoCSList([k,d,c]);return k=f.scaldiv(e,k)};f.linearsolveCGNR=function(a,g){var c=f.transpose(a),b=v.mult(c,a),c=v.mult(c,g);return f.linearsolveCG(b,c)};f.linearsolveCG=function(a,g){var c,b,d,e,k,h;e=g;b=c=f.sub(g,v.mult(a,g));for(var l=Math.ceil(1.2*a.value.length),
+n=0;n<l;){n++;k=v.mult(a,b);h=d=f.scalproduct(c,c);d=m.div(d,f.scalproduct(b,k));e=f.add(e,v.mult(d,b));c=f.sub(c,v.mult(d,k));if(f.abs(c).value.real<m.eps)break;d=f.scalproduct(c,c);d=m.div(d,h);b=f.add(c,v.mult(d,b))}n>=l&&console.log("CG did not converge");return e};f.det=function(a){if(1===a.value.length)return a.value[0].value[0];if(2===a.value.length)return f.det2(a.value[0],a.value[1]);if(3===a.value.length)return f.det3(a.value[0],a.value[1],a.value[2]);if(4===a.value.length)return f.det4m(a);
+var g=a.value.length,c=m.real(1),b,d,e=JSON.parse(JSON.stringify(a)),k,h,l,n;for(a=0;a<g-1;a++){d=a;for(b=a+1;b<g;b++)m.abs(e.value[b].value[a]).value.real>m.abs(e.value[d].value[a]).value.real&&(d=b);d!==a&&(b=e.value[d],e.value[d]=e.value[a],e.value[a]=b,c=m.neg(c));k=e.value[a];for(b=a+1;b<g;b++){h=e.value[b];l=m.div(h.value[a],k.value[a]);for(d=a+1;d<g-1;d+=2)n=d+1,h.value[d]=m.sub(h.value[d],m.mult(k.value[d],l)),h.value[n]=m.sub(h.value[n],m.mult(k.value[n],l));d!==g&&(h.value[d]=m.sub(h.value[d],
+m.mult(k.value[d],l)))}if(m._helper.isZero(k.value[a]))return m.real(0);c=m.mult(c,k.value[a])}return m.mult(c,e.value[a].value[a])};f.LUdet=function(a){a=f.LUdecomp(a);for(var g=a.LU,c=g.value.length,b=g.value[0].value[0],d=1;d<c;d++)b=m.mult(b,g.value[d].value[d]);1===a.TransPos%2&&(b=m.neg(b));return b};f.getField=function(a,g){var c;if("homog"===g){if(f._helper.isNumberVecN(a,3))return a;if(f._helper.isNumberVecN(a,2))return f.turnIntoCSList([a.value[0],a.value[1],m.real(1)])}if("xy"===g){if(f._helper.isNumberVecN(a,
+2))return a;if(f._helper.isNumberVecN(a,3))return f.turnIntoCSList([m.div(a.value[0],a.value[2]),m.div(a.value[1],a.value[2])])}if("x"===g&&f.isNumberVector(a)){c=a.value.length;if(0<c&&3!==c)return a.value[0];if(3===c)return"Point"===a.usage?m.div(a.value[0],a.value[2]):a.value[0]}if("y"===g&&f.isNumberVector(a)){c=a.value.length;if(1<c&&3!==c)return a.value[1];if(3===c)return"Point"===a.usage?m.div(a.value[1],a.value[2]):a.value[1]}return"z"===g&&f.isNumberVector(a)&&(c=a.value.length,2<c)?a.value[2]:
+k};f.nil=f.turnIntoCSList([]);f.ofGeos=function(a){return f.turnIntoCSList(a.map(function(a){return{ctype:"geo",value:a}}))};var Oa={key:function(a){if("string"===a.ctype)return"s"+a.value.length+":"+a.value+";";if("number"===a.ctype)return"n"+a.value.real+","+a.value.imag+";";if("list"===a.ctype)return"l"+a.value.length+":"+a.value.map(Oa.key).join(",")+";";if("boolean"===a.ctype)return"b"+a.value+";";if("dict"===a.ctype)return a=Object.keys(a.value).sort(),"d"+a.length+":"+a.join(",")+";";"undefined"!==
+a.ctype&&ha.err("Bad dictionary key: "+w(a));return"undef"},create:function(){return{ctype:"dict",value:{}}},clone:function(a){var g=Oa.create(),c;for(c in a.value)a.value.hasOwnProperty(c)&&(g.value[c]=a.value[c]);return g},put:function(a,g,c){a.value[Oa.key(g)]={key:g,value:c}},get:function(a,g,c){return(a=a.value[Oa.key(g)])?a.value:c},niceprint:function(a){return"{"+Object.keys(a.value).sort().map(function(g){g=a.value[g];return w(g.key)+":"+w(g.value)}).join(", ")+"}"}},v={_helper:{},order:{undefined:0,
+"boolean":1,number:2,term:3,atomic:4,variable:5,geo:6,string:7,list:8},string:function(a){return{ctype:"string",value:a}},bool:function(a){return{ctype:"boolean",value:a}},not:function(a){return v.bool(!a.value)},isLessThan:function(a,g){return-1===v.compare(a,g)},isEqual:function(a,g){return 0===v.compare(a,g)},compareResults:function(a,g){return v.compare(a.result,g.result)},compare:function(a,g){if(a.ctype!==g.ctype)return v.order[a.ctype]-v.order[g.ctype];if("number"===a.ctype)return m._helper.compare(a,
+g);if("list"===a.ctype)return f._helper.compare(a,g);if("geo"===a.ctype)return a.value.name===g.value.name?0:a.value.name<g.value.name?-1:1;if("string"===a.ctype)return a.value===g.value?0:a.value<g.value?-1:1;if("boolean"===a.ctype)return a.value===g.value?0:!1===a.value?-1:1},add:function(a,g){return"void"===a.ctype&&"number"===g.ctype||"void"===a.ctype&&"list"===g.ctype?g:"number"===a.ctype&&"number"===g.ctype?m.add(a,g):"string"===a.ctype||"string"===g.ctype?{ctype:"string",value:w(a)+w(g)}:"list"===
+a.ctype&&"list"===g.ctype?f.add(a,g):k},sub:function(a,g){return"void"===a.ctype&&"number"===g.ctype?m.neg(g):"void"===a.ctype&&"list"===g.ctype?f.neg(g):"number"===a.ctype&&"number"===g.ctype?m.sub(a,g):"list"===a.ctype&&"list"===g.ctype?f.sub(a,g):k},mult:function(a,g){return"number"===a.ctype&&"number"===g.ctype?m.mult(a,g):"number"===a.ctype&&"list"===g.ctype?f.scalmult(a,g):"list"===a.ctype&&"number"===g.ctype?f.scalmult(g,a):"list"===a.ctype&&"list"===g.ctype?f.mult(a,g):k},div:function(a,g){return"number"===
+a.ctype&&"number"===g.ctype?m.div(a,g):"list"===a.ctype&&"number"===g.ctype?f.scaldiv(g,a):k},max:function(a,g){return"number"===a.ctype&&"number"===g.ctype?m.max(a,g):"list"===a.ctype&&"list"===g.ctype?f.max(a,g):k},min:function(a,g){return"number"===a.ctype&&"number"===g.ctype?m.min(a,g):"list"===a.ctype&&"list"===g.ctype?f.min(a,g):k},wrap:function(a){if("number"===typeof a)return m.real(a);if("object"===typeof a&&void 0!==a.length){for(var g=[],c=0;c<a.length;c++)g[c]=v.wrap(a[c]);return f.turnIntoCSList(g)}return"string"===
+typeof a?{ctype:"string",value:a}:"boolean"===typeof a?{ctype:"boolean",value:a}:k},unwrap:function(a){if("object"!==typeof a||null===a)return a;if(Array.isArray(a))return a.map(v.unwrap);switch(a.ctype){case "string":case "boolean":return a.value;case "number":return 0===a.value.imag?a.value.real:{r:a.value.real,i:a.value.imag};case "list":return a.value.map(v.unwrap);default:return null}},withUsage:function(a,g){return{ctype:a.ctype,value:a.value,usage:g}}},Wa={},P={};P[":"]=r(":");P["\u00b0"]=
+function(a,g){var c=C(a[0]);return"number"===c.ctype&&"void"===a[1].ctype?v.withUsage(m.realmult(Math.PI/180,c),"Angle"):k};P._=mc;P["^"]=Kc;P["\u221a"]=function(a,g){return"void"===a[0].ctype?t.sqrt$1([a[1]],g):k};P["*"]=Ic;P["\u00d7"]=Lc;P["/"]=Jc;P["+"]=Hc;P["-"]=Xb;P["!"]=function(a,g){var c=C(a[1]);return"void"===a[0].ctype&&"boolean"===c.ctype?{ctype:"boolean",value:!c.value}:k};P["=="]=B;P["~="]=pa;P["~<"]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&
+m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real<=-m.eps}:k};P["~>"]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real>=m.eps}:k};P["=:="]=r("=:=");P[">="]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real>=
+b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value>=b.value}:k};P["<="]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real<=b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value<=b.value}:k};P["~>="]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?
+{ctype:"boolean",value:c.value.real-b.value.real>-m.eps}:k};P["~<="]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real-b.value.real<m.eps}:k};P[">"]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real>b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",
+value:c.value>b.value}:k};P["<"]=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype&&m._helper.isAlmostReal(c)&&m._helper.isAlmostReal(b)?{ctype:"boolean",value:c.value.real<b.value.real}:"string"===c.ctype&&"string"===b.ctype?{ctype:"boolean",value:c.value<b.value}:k};P["<>"]=Ec;P["\u2208"]=function(a,g){var c=A(a[0]),b=A(a[1]);return"list"===b.ctype?f.contains(b,c):k};P["\u2209"]=function(a,g){var c=A(a[0]),b=A(a[1]);return"list"===b.ctype?v.not(f.contains(b,c)):
+k};P["&"]=na;P["%"]=Gc;P["!="]=Ec;P["~!="]=function(a,g){return v.not(pa(a,g))};P[".."]=function(a,g){var c=A(a[0]),b=A(a[1]);return"number"===c.ctype&&"number"===b.ctype?f.sequence(c,b):k};P["++"]=Rc;P["--"]=Tc;P["~~"]=Sc;P[":>"]=Uc;P["<:"]=Vc;P["="]=E;P[":="]=function(a,g,c){g="undefined"===a[1].ctype;if("undefined"===a[0].ctype||g)return k;if("function"===a[0].ctype){g=a[0].oper;var b=a[0].args,d=a[1],f=1;if(Wa.hasOwnProperty(g)){f=Wa[g];if(f.definer===c)return k;f=f.generation+1}Wa[g]={oper:g,
+body:d,arglist:b,definer:c,generation:f}}"variable"===a[0].ctype&&J.setvar(a[0].name,a[1]);return k};P[":=_"]=function(a,g){if("void"!==a[1].ctype)return k;"function"===a[0].ctype&&delete Wa[a[0].oper];return k};P["::="]=r("::=");P[";"]=function(a,g){var c="void"===a[0].ctype,b="void"===a[1].ctype;if(c&&b)return k;if(!c&&b)return A(a[0]);c||b||A(a[0]);return b?k:A(a[1])};var t={},D={evaluate:function(a,g,c){if(Wa.hasOwnProperty(a)){a=Wa[a];if(void 0===a)g=k;else{var b=[];for(c=0;c<a.arglist.length;c++)b[c]=
+A(g[c]);for(c=0;c<a.arglist.length;c++)J.newvar(a.arglist[c].name),J.setvar(a.arglist[c].name,b[c]);J.pushVstack("*");g=A(a.body);J.cleanVstack();for(c=0;c<a.arglist.length;c++)J.removevar(a.arglist[c].name)}return g}if(b=t[a])return b(g,c);var d=a.lastIndexOf("$");if(-1!==d&&(d=a.substr(0,d),b=t[d]))return b(g,c);ha.err("Called undefined function "+d+" (as "+a+")");return k},equals:function(a,g){return"number"===a.ctype&&"number"===g.ctype?{ctype:"boolean",value:a.value.real===g.value.real&&a.value.imag===
+g.value.imag}:"string"===a.ctype&&"string"===g.ctype||"boolean"===a.ctype&&"boolean"===g.ctype?{ctype:"boolean",value:a.value===g.value}:"list"===a.ctype&&"list"===g.ctype?f.equals(a,g):"geo"===a.ctype&&"geo"===g.ctype?{ctype:"boolean",value:a.value===g.value}:{ctype:"boolean",value:!1}}},J={};J.vars=function(){var a={pi:m.real(Math.PI),"\u03c0":m.real(Math.PI),i:m.complex(0,1),"true":v.bool(!0),"false":v.bool(!1),"#":k,nil:f.turnIntoCSList([]),newline:v.string("\n"),tab:v.string("\t")},g=[],c;for(c in a)g[c]=
+[a[c]];return g}();J.isVariable=function(a){return this.vars.hasOwnProperty(a)};J.create=function(a){if(this.vars.hasOwnProperty(a))return this.vars[a];var g=[null];return this.vars[a]=g};J.newvar=function(a){a=this.vars[a];a.push(k);return a};J.removevar=function(a){var g=this.vars[a];0===g.length&&console.error("Removing non-existing "+a);g.pop();0===g.length&&console.warn("Removing last "+a)};J.setvar=function(a,g){var c=this.vars[a];0===c.length&&console.error("Setting non-existing variable "+
+a);void 0===g&&(console.error("Setting variable "+a+" to undefined value"),g=k);if("undefined"===g.ctype)c[c.length-1]=g;else{var b=g;null===b&&(b=k);c[c.length-1]=b}};J.undefinedWarning={};J.getvar=function(a){var g=this.vars[a];0===g.length&&console.error("Getting non-existing variable "+a);g=g[g.length-1];if(null===g){if(u.csnames.hasOwnProperty(a))return{ctype:"geo",value:u.csnames[a]};console&&console.log&&void 0===this.undefinedWarning[a]&&(this.undefinedWarning[a]=!0,console.log("Warning: Accessing undefined variable: "+
+a));return k}return g};J.dump=function(a){var g=this.vars[a];console.log("*** Dump "+a);for(a=0;a<g.length;a++)console.log(a+":> "+w(g[a]))};J.vstack=[];J.pushVstack=function(a){this.vstack.push(a)};J.popVstack=function(){this.vstack.pop()};J.cleanVstack=function(){for(var a=this.vstack;0<a.length&&"*"!==a[a.length-1];)this.removevar(a[a.length-1]),a.pop();0<a.length&&a.pop()};var xa={generalFields:{color:"color",colorhsb:"",size:"size",alpha:"alpha",fillcolor:"fillcolor",fillalpha:"fillalpha",isshowing:"isshowing",
+visible:"visible",name:"name",caption:"caption",trace:"",tracelength:"",selected:""},getGeoField:function(a,g){return"undefined"!==typeof u.csnames[a]?xa.getField(u.csnames[a],g):k},setGeoField:function(a,g,c){return"undefined"!==typeof u.csnames[a]?xa.setField(u.csnames[a],g,c):k},getField:function(a,g){var c;if("P"===a.kind){if("xy"===g)return c=f.dehom(a.homog),v.withUsage(c,"Point");if("homog"===g)return v.withUsage(a.homog,"Point");if("x"===g)return m.div(a.homog.value[0],a.homog.value[2]);if("y"===
+g)return m.div(a.homog.value[1],a.homog.value[2])}if("L"===a.kind||"S"===a.kind){if("homog"===g)return v.withUsage(a.homog,"Line");if("angle"===g)return c=f.eucangle(f.ey,a.homog),v.withUsage(c,"Angle");if("slope"===g)return m.neg(m.div(a.homog.value[0],a.homog.value[1]))}if("Tr"===a.kind&&"matrix"===g)return a.matrix;if("C"===a.kind){if("radius"===g){var b=a.matrix;c=b.value[0].value[0];var d=b.value[0].value[2],e=b.value[1].value[2],b=b.value[2].value[2];m.mult(c,c);d=m.div(d,c);e=m.div(e,c);c=
+m.div(b,c);return c=m.sqrt(m.sub(m.add(m.mult(d,d),m.mult(e,e)),c))}if("size"===g)return a.size;if("matrix"===g)return a.matrix;if("center"===g)return c=n._helper.CenterOfConic(a.matrix),c=f.dehom(c),v.withUsage(c,"Point");if("dualMatrix"===g)return f.normalizeMax(f.adjoint3(a.matrix))}if("Text"===a.kind){if("pressed"===g)return a.checkbox?v.bool(a.checkbox.checked):v.bool(!1);if(("text"===g||"currenttext"===g)&&"EditableText"===a.type)return v.string(String(a.html.value));if("xy"===g)return c=f.dehom(a.homog),
+v.withUsage(c,"Point");if("homog"===g)return v.withUsage(a.homog,"Point");if("x"===g)return m.div(a.homog.value[0],a.homog.value[2]);if("y"===g)return m.div(a.homog.value[1],a.homog.value[2])}if("trace"===g)return v.bool(!!a.drawtrace);if(xa.generalFields[g])return(c=a[xa.generalFields[g]])&&c.ctype?c:"object"!==typeof c?v.wrap(c):k;if(a.behavior){if("mass"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.mass);if("radius"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.radius);if("charge"===
+g&&"Mass"===a.behavior.type)return m.real(a.behavior.charge);if("friction"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.friction);if("vx"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.vx);if("vy"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.vy);if("v"===g&&"Mass"===a.behavior.type)return f.realVector([a.behavior.vx,a.behavior.vy]);if("fx"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.fx);if("fy"===g&&"Mass"===a.behavior.type)return m.real(a.behavior.fy);if("f"===
+g&&"Mass"===a.behavior.type)return f.realVector([a.behavior.fx,a.behavior.fy])}return k},setField:function(a,g,c){var b;"color"===g&&f._helper.isNumberVecN(c,3)&&(a.color=c);"size"===g&&"number"===c.ctype&&(a.size=c);"alpha"===g&&"number"===c.ctype&&(a.alpha=c);"fillcolor"===g&&f._helper.isNumberVecN(c,3)&&("EditableText"===a.type?(a.fillcolor=c.value.map(function(a){return a.value.real}),a.html.style.backgroundColor=y.makeColor(a.fillcolor,a.fillalpha)):a.fillcolor=c);"fillalpha"===g&&"number"===
+c.ctype&&(a.fillalpha=c);"visible"===g&&"boolean"===c.ctype&&(a.visible=c.value);"pinned"===g&&"boolean"===c.ctype&&(a.pinned=c.value);"printlabel"===g&&(a.printname=w(c));"trace"===g&&"boolean"===c.ctype&&(c.value&&!a.drawtrace?(a.drawtrace=!0,nd(a)):a.drawtrace=c.value);"P"===a.kind&&a.movable&&("xy"===g&&f._helper.isNumberVecN(c,2)&&Ea(a,f.turnIntoCSList([c.value[0],c.value[1],m.real(1)]),"homog"),"xy"===g&&f._helper.isNumberVecN(c,3)&&Ea(a,c,"homog"),"x"===g&&"number"===c.ctype&&Ea(a,f.turnIntoCSList([m.mult(c,
+a.homog.value[2]),a.homog.value[1],a.homog.value[2]]),"homog"),"y"===g&&"number"===c.ctype&&Ea(a,f.turnIntoCSList([a.homog.value[0],m.mult(c,a.homog.value[2]),a.homog.value[2]]),"homog"),"homog"===g&&f._helper.isNumberVecN(c,3)&&Ea(a,c,"homog"));"homog"===g&&"L"===a.kind&&a.movable&&f._helper.isNumberVecN(c,3)&&Ea(a,c,"homog");if("angle"===g&&"Through"===a.type&&"number"===c.ctype){b=m.cos(c);var d=m.sin(c);b=f.turnIntoCSList([b,d,m.real(0)]);Ea(a,b,"dir")}"slope"===g&&"Through"===a.type&&"number"===
+c.ctype&&(b=f.turnIntoCSList([m.real(1),c,m.real(0)]),Ea(a,b,"dir"));"C"===a.kind&&"radius"===g&&"CircleMr"===a.type&&"number"===c.ctype&&Ea(a,c,"radius");"Text"===a.kind&&("pressed"===g&&"boolean"===c.ctype&&a.checkbox&&(a.checkbox.checked=c.value),"text"!==g&&"currenttext"!==g||"EditableText"!==a.type||(a.html.value=w(c)),a.movable&&("xy"===g?f._helper.isNumberVecN(c,2)?a.homog=f.turnIntoCSList([c.value[0],c.value[1],m.real(1)]):f._helper.isNumberVecN(c,3)&&(a.homog=c):"homog"===g&&f._helper.isNumberVecN(c,
+3)?a.homog=c:"x"===g&&"number"===c.ctype?a.homog=f.turnIntoCSList([m.mult(c,a.homog.value[2]),a.homog.value[1],a.homog.value[2]]):"y"===g&&"number"===c.ctype&&(a.homog=f.turnIntoCSList([a.homog.value[0],m.mult(c,a.homog.value[2]),a.homog.value[2]]))));a.behavior&&("mass"===g&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.mass=c.value.real),"mass"===g&&"Sun"===a.behavior.type&&"number"===c.ctype&&(a.behavior.mass=c.value.real),"friction"===g&&"Mass"===a.behavior.type&&"number"===c.ctype&&
+(a.behavior.friction=c.value.real),"charge"===g&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.charge=c.value.real),"radius"===g&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.radius=c.value.real),"vx"===g&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.vx=c.value.real),"vy"===g&&"Mass"===a.behavior.type&&"number"===c.ctype&&(a.behavior.vy=c.value.real),"v"===g&&"Mass"===a.behavior.type&&f._helper.isNumberVecN(c,2)&&(a.behavior.vx=c.value[0].value.real,a.behavior.vy=
+c.value[1].value.real))}};t.version$0=function(a,g){var c=["CindyJS"].concat(ie);return f.turnIntoCSList(c.map(v.wrap))};t.clearconsole$0=function(a,g){ha.clear()};t.err$1=function(a,g){var c="",b;"variable"===a[0].ctype?(c=a[0].name,b=J.getvar(a[0].name)):b=a[0];b=c+" ===> "+w(A(b));ha.err(b);return k};t.errc$1=function(a,g){var c;"variable"===a[0].ctype?(c=A(J.getvar(a[0].name)),console.log(a[0].name+" ===> "+w(c))):(c=A(a[0]),console.log(" ===> "+w(c)));return k};t.print$1=function(a,g){ha.out(w(A(a[0])),
+!0);return k};t.println$1=function(a,g){ha.out(w(A(a[0])));return k};t.dump$1=function(a,g){console.log(JSON.stringify(a[0]));return k};t.repeat$2=function(a,g){return t.repeat$3([a[0],null,a[1]],g)};t.repeat$3=function(a,g){var c=C(a[0]),b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);if("number"!==c.ctype)return k;var c=Math.round(c.value.real),d=1,f=1,e=c+1,h=!1,m=!1,l=!1,n;void 0!==g.start&&(n=A(g.start),"number"===n.ctype&&(h=!0,f=n.value.real));void 0!==g.step&&(n=A(g.step),"number"===
+n.ctype&&(l=!0,d=n.value.real));void 0!==g.stop&&(n=A(g.stop),"number"===n.ctype&&(m=!0,e=n.value.real));!h||m||l||(e=d*c+f);h||!m||l||(f=-d*(c-1)+e,e+=d);h||m||!l||(e=d*c+f);h&&m&&!l&&(d=(e-f)/(c-1),e+=d);h&&!m&&l&&(e=d*c+f);!h&&m&&l&&(f=-d*(c-1)+e,e+=d);h&&m&&l&&(e+=d);(f<=e&&0<d||f>=e&&0>d)&&h&&m&&l&&(c=Math.floor((e-f)/d));J.newvar(b);e=k;for(h=0;h<c;h++)J.setvar(b,{ctype:"number",value:{real:h*d+f,imag:0}}),e=A(a[2]);J.removevar(b);return e};t.while$2=function(a,g){for(var c=a[1],b=a[0],d=A(b),
+f=k;"list"!==d.ctype&&d.value;)f=A(c),d=A(b);return f};t.apply$2=function(a,g){return t.apply$3([a[0],null,a[1]],g)};t.apply$3=function(a,g){var c=C(a[0]);if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);for(var f=0;f<c.length;f++)J.setvar(b,c[f]),d[f]=A(a[2]);J.removevar(b);return{ctype:"list",value:d}};t.forall$2=function(a,g){return t.forall$3([a[0],null,a[1]],g)};t.forall$3=function(a,g){var c=C(a[0]);if("list"!==c.ctype)return k;
+var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);c=c.value;J.newvar(b);for(var d,f=0;f<c.length;f++)J.setvar(b,c[f]),d=A(a[2]);J.removevar(b);return d};t.select$2=function(a,g){return t.select$3([a[0],null,a[1]],g)};t.select$3=function(a,g){var c=C(a[0]);if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);for(var f=0,e=0;e<c.length;e++){J.setvar(b,c[e]);var h=A(a[2]);"boolean"===h.ctype&&!0===h.value&&(d[f]=c[e],f++)}J.removevar(b);
+return{ctype:"list",value:d}};t.flatten$1=function(a,g){function c(a,g){return-1===g||"list"!==a.ctype?a:[].concat.apply([],a.value.map(function(a){return c(a,g-1)}))}var b=C(a[0]);if("list"!==b.ctype)return b;var d=g.levels;void 0===d?d=1:(d=A(d),d="number"===d.ctype?d.value.real:"string"===d.ctype&&"all"===d.value?-2:1);return{ctype:"list",value:c(b,d)}};t.createvar$1=function(a,g){"variable"===a[0].ctype&&J.newvar(a[0].name);return k};t.local=function(a,g){for(var c=0;c<a.length;c++)"variable"===
+a[c].ctype&&J.newvar(a[c].name);return k};t.removevar$1=function(a,g){var c=A(a[0]);"variable"===a[0].ctype&&J.removevar(a[0].name);return c};t.release=function(a,g){if(0===a.length)return k;for(var c=A(a[a.length-1]),b=0;b<a.length;b++)"variable"===a[b].ctype&&J.removevar(a[b].name);return c};t.regional=function(a,g){for(var c=0;c<a.length;c++)if("variable"===a[c].ctype){var b=a[c].name;J.newvar(b);J.pushVstack(b)}return k};t.genList=function(a,g){return f.turnIntoCSList(a.map(A))};D.assigntake=
+function(a,g){var c=a.args[0],b=A(c),d=C(a.args[1]),e=k;if("list"===b.ctype||"string"===b.ctype)d=Math.floor(d.value.real),0>d&&(d=b.value.length+d+1),0<d&&d<=b.value.length&&("list"===b.ctype?(b=b.value.slice(),b[d-1]=A(g),e=f.turnIntoCSList(b)):(b=b.value,b=b.substring(0,d-1)+w(A(g))+b.substring(d,b.length),e=v.string(b)));E([c,e])};D.assigndot=function(a,g){var c=A(a.obj),b=a.key;"geo"===c.ctype&&b&&xa.setField(c.value,b,C(g));return k};D.assignlist=function(a,g){var c=a.length,b=g.length;b<c&&
+(c=b);for(b=0;b<c;b++)E([a[b],g[b]],[])};t.if$2=function(a,g){return t.if$3(a,g)};t.if$3=function(a,g){var c=C(a[0]);if("boolean"===c.ctype){if(!0===c.value)return A(a[1]);if(3===a.length)return A(a[2])}else ha.err("Condition for if is not boolean");return k};t.and$2=na;t.or$2=Gc;t.xor$2=function(a,g){var c=C(a[0]),b=C(a[1]);return"boolean"===c.ctype&&"boolean"===b.ctype?{ctype:"boolean",value:c.value!==b.value}:k};t.not$1=function(a,g){var c=C(a[0]);return"boolean"===c.ctype?{ctype:"boolean",value:!c.value}:
+k};D.genericListMathGen=function(a,g,c){t[a+"$1"]=function(a,b){var p=A(a[0]);if("list"!==p.ctype)return k;p=p.value;if(0===p.length)return c;for(var d=p[0],f=1;f<p.length;f++)d=g(d,p[f]);return d};var b=a+"$3";t[a+"$2"]=function(a,c){return t[b]([a[0],null,a[1]])};t[b]=function(a,b){var p=C(a[0]);if("list"!==p.ctype)return k;p=p.value;if(0===p.length)return c;var d="#";null!==a[1]&&"variable"===a[1].ctype&&(d=a[1].name);J.newvar(d);J.setvar(d,p[0]);for(var f=A(a[2]),e=1;e<p.length;e++){J.setvar(d,
+p[e]);var h=A(a[2]),f=g(f,h)}J.removevar(d);return f}};D.genericListMathGen("product",v.mult,m.real(1));D.genericListMathGen("sum",v.add,m.real(0));D.genericListMathGen("max",v.max,k);D.genericListMathGen("min",v.min,k);t.max$2=function(a,g){var c=C(a[0]);if("list"===c.ctype)return t.max$3([c,null,a[1]]);var b=C(a[1]);return t.max$1([f.turnIntoCSList([c,b])])};t.min$2=function(a,g){var c=C(a[0]);if("list"===c.ctype)return t.min$3([c,null,a[1]]);var b=C(a[1]);return t.min$1([f.turnIntoCSList([c,b])])};
+t.add$2=Hc;t.sub$2=Xb;t.mult$2=Ic;t.div$2=Jc;t.mod$2=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype?m.mod(c,b):k};t.pow$2=Kc;t.exp$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.exp(c):k};t.sin$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.sin(c):k};t.sqrt$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.sqrt(c):k};D.laguerre=function(a,g,c){if("list"!==a.ctype)return k;var b=a.value.length-1,d;for(d=0;d<=b;d++)if("number"!==a.value[d].ctype)return k;
+if("number"!==g.ctype)return k;for(var f=[1,.3141,.5926,.5358,.9793,.2385,.6264,.3383,.2795,.0288],e,h,l,n=1;n<=c;n++){h=l=m.zero;e=a.value[b];for(d=b-1;0<=d;d--)l=m.add(h,m.mult(l,g)),h=m.add(e,m.mult(h,g)),e=m.add(a.value[d],m.mult(e,g));if(m._helper.isLessThan(m.abs(e),m.real(1E-14)))break;d=m.div(h,e);h=m.mult(d,d);e=m.sub(h,m.div(m.mult(m.real(2),l),e));l=m.sqrt(m.mult(m.real(b-1),m.sub(m.mult(m.real(b),e),h)));e=m.add(d,l);d=m.sub(d,l);m._helper.isLessThan(m.abs(e),m.abs(d))&&(e=d);d=m._helper.isLessThan(m.real(1E-14),
+m.abs(e))?m.div(m.real(b),e):m.mult(m.add(m.abs(g),m.one),m.complex(Math.cos(n),Math.sin(n)));if(m._helper.isLessThan(m.abs(d),m.real(1E-14)))break;0===n%20&&n<c-19&&(d=m.mult(d,m.real(f[Math.floor(n/20)])));g=m.sub(g,d)}return g};D.quadratic_roots=function(a){if("list"!==a.ctype)return k;var g=a.value[2],c=a.value[1];a=a.value[0];if(m._helper.isZero(a))return[m.zero,m.neg(m.div(c,g))];var b=m.sqrt(m.sub(m.mult(c,c),m.mult(m.real(4),m.mult(g,a))));0<=m.re(c)&&(b=m.neg(b));return[m.div(m.sub(b,c),
+m.mult(m.real(2),g)),m.div(m.mult(m.real(2),a),m.sub(b,c))]};D.roots=function(a){var g=[],c=a,b=a.value.length-1;if(0>=b)return f.turnIntoCSList([]);if(m._helper.isZero(a.value[b]))return g=D.roots(f.turnIntoCSList(a.value.slice(0,b))),f.append(g,m.infinity);if(1===b)g[0]=m.neg(m.div(a.value[0],a.value[1]));else if(2===b)g=D.quadratic_roots(a);else{for(var d=0;d<b-2;d++){g[d]=D.laguerre(a,m.zero,200);g[d]=D.laguerre(c,g[d],1);var e=[];e[b-d]=a.value[b-d];for(var h=b-d;0<h;h--)e[h-1]=m.add(a.value[h-
+1],m.mult(e[h],g[d]));e.shift();a=f.turnIntoCSList(e)}a=D.quadratic_roots(a);g[b-2]=a[0];g[b-1]=a[1]}return f.turnIntoCSList(g)};t.roots$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){for(var b=0;b<c.value.length;b++)if("number"!==c.value[b].ctype)return k;c=D.roots(c);return f.sort1(c)}return k};t.autodiff$3=function(a,g){var c="x",b;if("function"===a[0].ctype)b=Wa[a[0].oper].body,c=a[0].args[0].name;else if("function"===typeof a[0].impl)b=a[0];else return console.log("could not parse function"),
+k;var d=C(a[1]),f=C(a[2]);if(1>f.value.real)return console.log("grade cant be < 1"),k;f=m.add(f,m.real(1));return O.autodiff(b,c,d,f)};t.cos$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.cos(c):k};t.tan$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.tan(c):k};t.arccos$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.arccos(c):k};t.arcsin$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.arcsin(c):k};t.arctan$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?
+m.arctan(c):k};t.arctan2$2=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype?m.arctan2(c,b):k};t.arctan2$1=function(a,g){var c=C(a[0]);if("list"===c.ctype&&2===c.value.length){if(c=c.value,"number"===c[0].ctype&&"number"===c[1].ctype)return t.arctan2$2(c,g)}else if("number"===c.ctype)return m.arctan2(c);return k};t.log$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.log(c):k};D.recursiveGen=function(a){var g=m[a],c=f[a];t[a+"$1"]=function(a,b){var d=C(a[0]);
+return"number"===d.ctype?g(d):"list"===d.ctype?c(d):k}};D.recursiveGen("im");D.recursiveGen("re");D.recursiveGen("conjugate");D.recursiveGen("round");D.recursiveGen("ceil");D.recursiveGen("floor");D.recursiveGen("abs");t.abs_infix=t.abs$1;t.random$0=function(a,g){return m.real(m._helper.rand())};t.random$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?m.complex(c.value.real*m._helper.rand(),c.value.imag*m._helper.rand()):k};t.seedrandom$1=function(a,g){var c=C(a[0]);"number"===c.ctype&&m._helper.seedrandom(c.value.real);
+return k};t.randomnormal$0=function(a,g){return m.real(m._helper.randnormal())};t.randominteger$1=function(a,g){var c=C(a[0]);if("number"===c.ctype){var b=c.value.real|0,c=c.value.imag|0,b=b*m._helper.rand()|0,c=c*m._helper.rand()|0;return m.complex(b,c)}return k};t.randomint$1=t.randominteger$1;t.randombool$0=function(a,g){return.5<m._helper.rand()?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isreal$1=function(a,g){var c=A(a[0]);return"number"===c.ctype&&m._helper.isAlmostReal(c)?{ctype:"boolean",
+value:!0}:{ctype:"boolean",value:!1}};t.isinteger$1=function(a,g){var c=A(a[0]);return"number"===c.ctype&&m._helper.isAlmostReal(c)&&c.value.real===Math.floor(c.value.real)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.iseven$1=function(a,g){var c=A(a[0]);return"number"===c.ctype&&m._helper.isAlmostReal(c)&&c.value.real/2===Math.floor(c.value.real/2)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isodd$1=function(a,g){var c=A(a[0]);return"number"===c.ctype&&m._helper.isAlmostReal(c)&&
+(c.value.real-1)/2===Math.floor((c.value.real-1)/2)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.iscomplex$1=function(a,g){return"number"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isstring$1=function(a,g){return"string"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.islist$1=function(a,g){return"list"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.ismatrix$1=function(a,g){var c=A(a[0]);return-1!==f._helper.colNumb(c)?
+{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.iscircle$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&"C"===c.value.kind&&"Circle"===c.value.matrix.usage?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isconic$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&"C"===c.value.kind?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isline$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&"L"===c.value.kind?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.ispoint$1=
+function(a,g){var c=A(a[0]);return"geo"===c.ctype&&"P"===c.value.kind?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isgeometric$1=function(a,g){return"geo"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isnumbermatrix$1=function(a,g){var c=A(a[0]);return f.isNumberMatrix(c).value?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isnumbervector$1=function(a,g){var c=A(a[0]);return f.isNumberVector(c).value?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};
+t.issun$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Sun"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.ismass$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Mass"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isspring$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Spring"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",
+value:!1}};t.isbouncer$1=function(a,g){var c=A(a[0]);return"geo"===c.ctype&&void 0!==c.value.behavior&&"Bouncer"===c.value.behavior.type?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isundefined$1=function(a,g){return"undefined"===A(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};var Cd={ArcBy3:"Arc",CenterOfConic:"Center",ConicBy1p4l:"Conic1P4L",ConicBy4p1l:"Conic4P1L",ConicBy5lines:"Conic5L",ConicBy2Foci1P:"ConicFoci",ConicFromPrincipalDirections:"ConicPrincipleDirs",
+Free:"FreePoint",PolarOfLine:"PolarLine",PolarOfPoint:"PolarPoint",PointOnSegment:"PointOnLine",Button:"Text",ToggleButton:"Text",TrReflectionL:"TrReflection",TrReflectionP:"TrReflection",TrReflectionC:"TrReflection",TrTranslation:"TrProjection",TrSimilarity:"TrProjection",TrAffine:"TrProjection",TransformP:"Transform",TransformL:"Transform",TransformSegment:"Transform",TransformS:"Transform",TransformPolygon:"Transform",TransformArc:"Transform",TransformConic:"Transform",TransformC:"Transform",TrMoebiusP:"Transform",
+TrMoebiusL:"Transform",TrMoebiusSegment:"Transform",TrMoebiusS:"Transform",TrMoebiusPolygon:"Transform",TrMoebiusArc:"Transform",TrMoebiusCircle:"Transform",TrMoebiusC:"Transform",TrInverseMoebius:"TrInverse",Perp:"Orthogonal",Para:"Parallel",AngleBisector:"AngularBisector",IntersectLC:"IntersectionConicLine",IntersectCirCir:"IntersectionCircleCircle",OtherPointOnCircle:"PointOnCircle"};t.algorithm$1=function(a,g){var c=A(a[0]);if("geo"===c.ctype){var c=c.value,b=c.type,d=C(g.compatibility);"string"===
+d.ctype&&/^cinderella$/i.test(d.value)&&(/^Select/.test(b)&&(c=u.csnames[c.args[0]],b=c.type),Cd.hasOwnProperty(b)?b=Cd[b]:"CircleMr"===b&&(b=c.pinned?"CircleByFixedRadius":"CircleByRadius"));return v.string(b)}return k};t.inputs$1=function(a,g){var c=A(a[0]);if("geo"===c.ctype){var c=c.value,b=c.type,d=[];c.args&&(d=c.args.map(function(a){return{ctype:"geo",value:u.csnames[a]}}));if(/^Select/.test(b)||n[b].isMovable)switch(c.kind){case "P":case "L":d.push(c.homog);break;case "C":d.push(c.matrix)}return f.turnIntoCSList(d)}return k};
+t.moveto$2=function(a,g){var c=A(a[0]),b=C(a[1]);"geo"===c.ctype&&(c=c.value,f._helper.isNumberVecN(b,2)?xa.setField(c,"xy",b):f._helper.isNumberVecN(b,3)&&xa.setField(c,"homog",b));return k};t.matrixrowcolumn$1=function(a,g){var c=A(a[0]);return-1!==f._helper.colNumb(c)?f.realVector([c.value.length,c.value[0].value.length]):k};t.rowmatrix$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.turnIntoCSList([c]):k};t.columnmatrix$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.turnIntoCSList(c.value.map(function(a){return f.turnIntoCSList([a])})):
+k};t.submatrix$3=function(a,g){var c=A(a[0]),b=A(a[1]),d=A(a[2]);if("list"===c.ctype&&"number"===b.ctype&&"number"===d.ctype){var e=Math.round(b.value.real),b=Math.round(d.value.real),c=c.value.slice();0<b&&b<=c.length&&c.splice(b-1,1);var h=!0,c=c.map(function(a){if("list"!==a.ctype)h=!1;else return a=a.value.slice(),0<e&&e<=a.length&&a.splice(e-1,1),f.turnIntoCSList(a)});return h?f.turnIntoCSList(c):k}return k};t.complex$1=function(a,g){var c,b,d;d=C(a[0]);if("list"===d.ctype&&f.isNumberVector(d)){if(2===
+d.value.length)return c=d.value[0],b=d.value[1],m.complex(c.value.real-b.value.imag,b.value.real+c.value.imag);if(3===d.value.length)return c=d.value[0],b=d.value[1],d=d.value[2],c=m.div(c,d),b=m.div(b,d),m.complex(c.value.real-b.value.imag,b.value.real+c.value.imag)}return k};t.gauss$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?f.realVector([c.value.real,c.value.imag]):k};t.cross$2=Lc;t.crossratio$4=function(a,g){var c=A(a[0]),b=A(a[1]),d=A(a[2]),e=A(a[3]),h=M(c),l=M(b),n=M(d),q=M(e);return h!==
+k&&l!==k&&n!==k&&q!==k?f.crossratio3(h,l,n,q,f.ii):"number"===c.ctype&&"number"===b.ctype&&"number"===d.ctype&&"number"===e.ctype?m.div(m.mult(m.sub(c,d),m.sub(b,e)),m.mult(m.sub(c,e),m.sub(b,d))):k};t.para$2=function(a,g){var c=C(a[0]),b=C(a[1]),d=M(c),e=M(b);if(c!==k&&b!==k){var b=b.usage,h=d,m=e;if("Line"===c.usage||"Point"===b)h=e,m=d;c=f.cross(f.cross(f.linfty,m),h);return v.withUsage(c,"Line")}return k};t.perp$2=function(a,g){var c=C(a[0]),b=C(a[1]),d=M(c),e=M(b);if(c!==k&&b!==k){var h=b.usage||
+e.usage,b=d,l=e;if("Line"===(c.usage||d.usage)||"Point"===h)b=e,l=d;c=f.turnIntoCSList([l.value[0],l.value[1],m.zero]);c=f.cross(c,b);return v.withUsage(c,"Line")}return k};t.perp$1=function(a,g){var c=C(a[0]);return f._helper.isNumberVecN(c,2)?f.turnIntoCSList([m.neg(c.value[1]),c.value[0]]):k};t.parallel$2=t.para$2;t.perpendicular$2=t.perp$2;t.perpendicular$1=t.perp$1;t.meet$2=function(a,g){var c=M(a[0]),b=M(a[1]);return c!==k&&b!==k?(c=f.cross(c,b),v.withUsage(c,"Point")):k};t.join$2=function(a,
+g){var c=M(a[0]),b=M(a[1]);return c!==k&&b!==k?(c=f.cross(c,b),v.withUsage(c,"Line")):k};t.dist$2=function(a,g){var c=C(a[0]),b=C(a[1]),c=Xb([c,b],[]);return t.abs$1([c],[])};t.dist_infix=t.dist$2;t.point$1=function(a,g){var c=A(a[0]);return f._helper.isNumberVecN(c,3)||f._helper.isNumberVecN(c,2)?v.withUsage(c,"Point"):c};t.line$1=function(a,g){var c=A(a[0]);return f._helper.isNumberVecN(c,3)?v.withUsage(c,"Line"):c};t.det$3=function(a,g){var c=M(a[0]),b=M(a[1]),d=M(a[2]);if(c!==k&&b!==k&&d!==k)return f.det3(c,
+b,d)};t.det$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return f.det(c)}return k};t.eig$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return f.eig(c)}return k};t.eigenvalues$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return f.eig(c,!1).value[0]}return k};t.rank$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=
+f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return f.rank(c,g.precision)}return k};t.kernel$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return c=f.nullSpace(c,g.precision),f.transpose(c)}return k};t.eigenvectors$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return f.eig(c).value[1]}return k};t.area$3=function(a,g){var c=M(a[0]),b=M(a[1]),d=M(a[2]);if(c!==k&&b!==k&&d!==
+k){var e=c.value[2],h=b.value[2],l=d.value[2];if(!m._helper.isAlmostZero(e)&&!m._helper.isAlmostZero(h)&&!m._helper.isAlmostZero(l))return c=f.scaldiv(e,c),b=f.scaldiv(h,b),d=f.scaldiv(l,d),c=f.det3(c,b,d),m.realmult(.5,c)}return k};t.inverse$1=function(a,g){var c=C(a[0]);if("list"===c.ctype){var b=f._helper.colNumb(c);if(-1!==b&&b===c.value.length)return f.inverse(c)}return k};t.linearsolve$2=function(a,g){var c=C(a[0]),b=C(a[1]);if("list"===c.ctype){var d=f._helper.colNumb(c);if(-1!==d&&d===c.value.length&&
+f._helper.isNumberVecN(b,d))return f.linearsolve(c,b)}return k};var Pd=[[[]],[[0]],[[0,1],[1,0]],[[0,1,2],[0,2,1],[1,0,2],[1,2,0],[2,0,1],[2,1,0]],[[0,1,2,3],[0,1,3,2],[0,2,1,3],[0,2,3,1],[0,3,1,2],[0,3,2,1],[1,0,2,3],[1,0,3,2],[1,2,0,3],[1,2,3,0],[1,3,0,2],[1,3,2,0],[2,0,1,3],[2,0,3,1],[2,1,0,3],[2,1,3,0],[2,3,0,1],[2,3,1,0],[3,0,1,2],[3,0,2,1],[3,1,0,2],[3,1,2,0],[3,2,0,1],[3,2,1,0]]];t.mincostmatching$1=function(a,g){var c=A(a[0]);if(f.isNumberMatrix(c)){var b=c.value.length,d=f._helper.colNumb(c),
+e=b<d?d:b,h,l,n=Array(e);for(h=0;h<e;++h)for(n[h]=Array(e),l=0;l<e;++l)n[h][l]=h<b&&l<d?c.value[h].value[l].value.real:0;c=Zb(n);e=Array(b);for(h=0;h<b;++h)l=c[h],e[h]=l<d?m.real(l+1):m.real(0);return f.turnIntoCSList(e)}return k};t.take$2=mc;t.length$1=function(a,g){var c=A(a[0]);return"list"===c.ctype||"string"===c.ctype?m.real(c.value.length):k};t.pairs$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.pairs(c):k};t.triples$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.triples(c):
+k};t.cycle$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.cycle(c):k};t.consecutive$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.consecutive(c):k};t.reverse$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.reverse(c):k};t.directproduct$2=function(a,g){var c=A(a[0]),b=A(a[1]);return"list"===c.ctype&&"list"===b.ctype?f.directproduct(c,b):k};t.concat$2=Rc;t.common$2=Sc;t.remove$2=Tc;t.append$2=Uc;t.prepend$2=Vc;t.contains$2=function(a,g){var c=A(a[0]),b=A(a[1]);return"list"===
+c.ctype?f.contains(c,b):k};t.sort$2=function(a,g){return t.sort$3([a[0],null,a[1]],g)};t.sort$3=function(a,g){var c=C(a[0]);if("list"!==c.ctype)return k;var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var c=c.value,d=[];J.newvar(b);var e;for(e=0;e<c.length;e++)J.setvar(b,c[e]),d[e]={val:c[e],result:A(a[2])};J.removevar(b);d.sort(v.compareResults);b=[];for(e=0;e<c.length;e++)b[e]=d[e].val;return{ctype:"list",value:b}};t.sort$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.sort1(c):
+k};t.set$1=function(a,g){var c=A(a[0]);return"list"===c.ctype?f.set(c):k};t.combinations$2=function(a,g){function c(a,g){a===h?n.push(f.turnIntoCSList(l.slice())):g<e&&(l[a]=b.value[g],c(a+1,g+1),c(a,g+1))}var b=A(a[0]),d=A(a[1]),e,h,l,n;if("number"===d.ctype){h=d.value.real|0;if("number"===b.ctype){e=b.value.real|0;e-h<h&&(h=e-h);if(0>h)return m.real(0);if(0===h)return m.real(1);if(1===h)return b;for(var q=d=1,r=1;r<=h;++r)var t=e-h+r|0,u=r|0,v=nc(t,u)|0,t=t/v|0,u=u/v|0,v=nc(d,u)|0,d=d/v|0,u=u/v|
+0,v=nc(t,q)|0,t=t/v|0,q=q/v|0,d=d*t|0,q=q*u|0;return m.real(d/q)}if("list"===b.ctype){e=b.value.length;if(0>h||h>e)return f.turnIntoCSList([]);if(0===h)return f.turnIntoCSList([f.turnIntoCSList([])]);if(h===e)return f.turnIntoCSList([b]);n=[];l=Array(h);c(0,0);return f.turnIntoCSList(n)}}return k};t.zeromatrix$2=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===c.ctype&&"number"===b.ctype?f.zeromatrix(c,b):k};t.zerovector$1=function(a,g){var c=C(a[0]);return"number"===c.ctype?f.zerovector(c):
+k};t.transpose$1=function(a,g){var c=C(a[0]);return"list"===c.ctype&&-1!==f._helper.colNumb(c)?f.transpose(c):k};t.row$2=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==f._helper.colNumb(c)?f.row(c,b):k};t.column$2=function(a,g){var c=C(a[0]),b=C(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==f._helper.colNumb(c)?f.column(c,b):k};t.dict$0=function(a,g){var c=Oa.create(),b;for(b in g)g.hasOwnProperty(b)&&Oa.put(c,v.string(b),A(g[b]));return c};t.put$3=
+function(a,g){var c=A(a[0]),b=A(a[1]),d=A(a[2]);return"dict"===c.ctype?(c=Oa.clone(c),Oa.put(c,b,d),c):k};t.get$2=function(a,g){var c=A(a[0]),b=A(a[1]);return"dict"===c.ctype?Oa.get(c,b,k):k};t.red$1=function(a,g){var c=A(a[0]);return"number"===c.ctype?f.realVector([Math.min(1,Math.max(0,c.value.real)),0,0]):k};t.green$1=function(a,g){var c=A(a[0]);return"number"===c.ctype?f.realVector([0,Math.min(1,Math.max(0,c.value.real)),0]):k};t.blue$1=function(a,g){var c=A(a[0]);return"number"===c.ctype?f.realVector([0,
+0,Math.min(1,Math.max(0,c.value.real))]):k};t.gray$1=function(a,g){var c=A(a[0]);return"number"===c.ctype?(c=Math.min(1,Math.max(0,c.value.real)),f.realVector([c,c,c])):k};t.grey$1=t.gray$1;D.HSVtoRGB=function(a,g,c){var b,d,e,h,k,m;a&&void 0===g&&void 0===c&&(g=a.s,c=a.v,a=a.h);h=Math.floor(6*a);k=6*a-h;a=c*(1-g);m=c*(1-k*g);g=c*(1-(1-k)*g);switch(h%6){case 0:b=c;d=g;e=a;break;case 1:b=m;d=c;e=a;break;case 2:b=a;d=c;e=g;break;case 3:b=a;d=m;e=c;break;case 4:b=g;d=a;e=c;break;case 5:b=c,d=a,e=m}return f.realVector([b,
+d,e])};t.hue$1=function(a,g){var c=A(a[0]);return"number"===c.ctype?(c=c.value.real,c-=Math.floor(c),D.HSVtoRGB(c,1,1)):k};D.shapeconvert=function(a){var g,c;if("circle"===a.type){g=a.value.value[0];g=v.div(g,g.value[2]);var b=g.value[0].value.real,d=g.value[1].value.real;a=a.value.value[1].value.real;c=Array(125);var e=2*Math.PI/125;for(g=0;125>g;g++)c[g]={X:b+Math.cos(g*e)*a,Y:d+Math.sin(g*e)*a};return[c]}if("polygon"===a.type){b=[];for(g=0;g<a.value.length;g++){d=a.value[g];c=[];for(e=0;e<d.length;e++)c[e]=
+{X:d[e].X,Y:d[e].Y};b[g]=c}return b}};D.shapeop=function(a,g,c){a=D.shapeconvert(a);var b=D.shapeconvert(g);ClipperLib.JS.ScaleUpPaths(a,1E3);ClipperLib.JS.ScaleUpPaths(b,1E3);g=new ClipperLib.Clipper;g.AddPaths(a,ClipperLib.PolyType.ptSubject,!0);g.AddPaths(b,ClipperLib.PolyType.ptClip,!0);var b=a=ClipperLib.PolyFillType.pftNonZero,d=new ClipperLib.Paths;g.Execute(c,d,a,b);ClipperLib.JS.ScaleDownPaths(d,1E3);return{ctype:"shape",type:"polygon",value:d}};D.shapecommon=function(a,g){return D.shapeop(a,
+g,ClipperLib.ClipType.ctIntersection)};D.shaperemove=function(a,g){return D.shapeop(a,g,ClipperLib.ClipType.ctDifference)};D.shapeconcat=function(a,g){return D.shapeop(a,g,ClipperLib.ClipType.ctUnion)};t.key$0=function(a,g){return{ctype:"string",value:Pc}};t.keycode$0=function(a,g){return m.real(Qc)};t.mouse$0=function(a,g){return f.realVector([sa[0],sa[1]])};t.mover$0=function(a,g){if(aa&&aa.mover)return{ctype:"geo",value:aa.mover};console.log("Not moving anything at the moment");return k};t.translate$1=
+function(a,g){var c=C(a[0]);"list"===c.ctype&&f.isNumberVector(c)&&2===c.value.length&&x.translate(c.value[0].value.real,c.value[1].value.real);return k};t.rotate$1=function(a,g){var c=C(a[0]);"number"===c.ctype&&x.rotate(c.value.real);return k};t.scale$1=function(a,g){var c=C(a[0]);"number"===c.ctype&&x.scale(c.value.real);return k};t.greset$0=function(a,g){var c=Xa.stack.length;x.greset();for(var b=0;b<c;b++)z.restore();return k};t.gsave$0=function(a,g){x.gsave();z.save();return k};t.grestore$0=
+function(a,g){x.grestore();z.restore();return k};t.color$1=function(a,g){var c=C(a[0]);"list"===c.ctype&&f.isNumberVector(c).value&&x.setcolor(c);return k};t.linecolor$1=function(a,g){var c=C(a[0]);"list"===c.ctype&&f.isNumberVector(c).value&&x.setlinecolor(c);return k};t.pointcolor$1=function(a,g){var c=C(a[0]);"list"===c.ctype&&f.isNumberVector(c).value&&x.setpointcolor(c);return k};t.alpha$1=function(a,g){var c=C(a[0]);"number"===c.ctype&&x.setalpha(c);return k};t.pointsize$1=function(a,g){var c=
+C(a[0]);"number"===c.ctype&&x.setpointsize(c);return k};t.linesize$1=function(a,g){var c=C(a[0]);"number"===c.ctype&&x.setlinesize(c);return k};t.textsize$1=function(a,g){var c=C(a[0]);"number"===c.ctype&&x.settextsize(c);return k};t.playanimation$0=function(a,g){S();return k};t.pauseanimation$0=function(a,g){Za();return k};t.stopanimation$0=function(a,g){Ja();return k};t.text$1=function(a,g){var c=C(a[0]);return v.string(w(c))};t.replace$3=function(a,g){var c=A(a[0]),b=A(a[1]),d=A(a[2]);if("string"===
+c.ctype&&"string"===b.ctype&&"string"===d.ctype)return c=c.value,b=b.value.replace(/[^A-Za-z0-9]/g,"\\$&"),d=d.value.replace(/\$/g,"$$$$"),c=c.replace(new RegExp(b,"g"),d),{ctype:"string",value:c}};t.replace$2=function(a,g){function c(a,c,g){var e="";d=b=-1;for(var f=0;f<c.length;f++){var h=c[f][0],k=a.indexOf(h,g);-1!==k&&(-1===b?(e=h,b=k,d=f):k<b&&(e=h,b=k,d=f))}return e}var b,d,e,f=A(a[0]);e=A(a[1]);if("string"===f.ctype&&"list"===e.ctype){for(var f=f.value,h=[],m=0;m<e.value.length;m++){var l=
+e.value[m];"list"===l.ctype&&2===l.value.length&&"string"===l.value[0].ctype&&"string"===l.value[1].ctype&&(h[h.length]=[l.value[0].value,l.value[1].value])}b=-1;for(e=c(f,h,0);-1!==b;)f=f.substring(0,b)+h[d][1]+f.substring(b+e.length,f.length),e=b+h[d][1].length,e=c(f,h,e);return{ctype:"string",value:f}}return k};t.substring$3=function(a,g){var c=A(a[0]),b=C(a[1]),d=C(a[2]);return"string"===c.ctype&&"number"===b.ctype&&"number"===d.ctype?{ctype:"string",value:c.value.substring(Math.floor(b.value.real),
+Math.floor(d.value.real))}:k};t.tokenize$2=function(a,g){var c=A(a[0]),b=A(a[1]);if("string"===c.ctype&&"string"===b.ctype)return t.tokenize$2([c,f.turnIntoCSList([b])],g);if("string"===c.ctype&&"list"===b.ctype){c=c.value;if(0===b.value.length){b=!0;if(void 0!==g.autoconvert){var d=A(g.autoconvert);"boolean"===d.ctype&&(b=d.value)}return b&&(b=parseFloat(c),!isNaN(b))?m.real(b):v.string(c)}var d=b.value[0],e=f.turnIntoCSList(b.value.slice(1)),c=c.split(d.value);return f.turnIntoCSList(c.map(function(a){return t.tokenize$2([v.string(a),
+e],g)}))}return k};t.indexof$2=function(a,g){var c=A(a[0]),b=A(a[1]);return"string"===c.ctype&&"string"===b.ctype?(c=c.value.indexOf(b.value),m.real(c+1)):k};t.indexof$3=function(a,g){var c=A(a[0]),b=A(a[1]),d=A(a[2]);return"string"===c.ctype&&"string"===b.ctype&&"number"===d.ctype?(c=c.value.indexOf(b.value,Math.round(d.value.real)-1),m.real(c+1)):k};t.parse$1=function(a,g){var c=A(a[0]);return"string"===c.ctype?(c=Ma(c.value),A(c)):k};t.unicode$1=function(a,g){var c;c=A(a[0]);var b=16;if(g.base){var d=
+A(g.base);"number"===d.ctype&&(b=d.value.real)}if("string"===c.ctype)c=parseInt(c.value,b);else if("number"===c.ctype)c=c.value.real;else return k;"undefined"!==typeof String.fromCodePoint?c=String.fromCodePoint(c):65535>=c?c=String.fromCharCode(c):(c-=65536,c=String.fromCharCode((c>>10)+55296,(c&1023)+56320));return v.string(c)};t.international$1=function(a,g){return t.international$2([a[0],null],g)};t.international$2=function(a,g){var c=A(a[0]);if("string"!==c.ctype)return k;var b=(q.translations||
+{})[q.language||"en"]||{};if(!b.hasOwnProperty(c.value))return c;var d=b[c.value];if("string"===typeof d)return v.string(d);if(null===a[1])return c;var e=A(a[1]),e="number"===e.ctype?e.value.real:0,b=(b._pluralFormFunction||Qd)(e);return b<d.length?v.string(d[b]):c};t.currentlanguage$0=function(a,g){return v.string(q.language||"en")};D.basismap=function(a,g,c,b){var d=f.turnIntoCSList([a,g,c]),d=f.adjoint3(f.transpose(d));b=v.mult(d,b);d=f.turnIntoCSList([v.mult(b.value[0],a),v.mult(b.value[1],g),
+v.mult(b.value[2],c)]);return f.transpose(d)};t.map$8=function(a,g){var c=M(a[0]),b=M(a[1]),d=M(a[2]),e=M(a[3]),h=M(a[4]),m=M(a[5]),l=M(a[6]),n=M(a[7]);return h!==k&&m!==k&&l!==k&&n!==k&&c!==k&&b!==k&&d!==k&&e!==k?(h=D.basismap(h,m,l,n),c=D.basismap(c,b,d,e),c=v.mult(h,f.adjoint3(c)),f.normalizeMax(c)):k};t.map$6=function(a,g){var c=M(a[0]),b=M(a[1]),d=M(a[2]),e=f.realVector([0,0,1]),h=f.cross,m=h(h(d,h(e,h(c,b))),h(b,h(e,h(c,d)))),l=M(a[3]),n=M(a[4]),q=M(a[5]),e=h(h(q,h(e,h(l,n))),h(n,h(e,h(l,q))));
+return l!==k&&n!==k&&q!==k&&e!==k&&c!==k&&b!==k&&d!==k&&m!==k?(l=D.basismap(l,n,q,e),c=D.basismap(c,b,d,m),c=v.mult(l,f.adjoint3(c)),f.normalizeMax(c)):k};t.map$4=function(a,g){var c=f.ii,b=f.jj,d=M(a[0]),e=M(a[1]),h=M(a[2]),m=M(a[3]);return h!==k&&m!==k&&d!==k&&e!==k?(h=D.basismap(h,m,c,b),c=D.basismap(d,e,c,b),c=v.mult(h,f.adjoint3(c)),f.normalizeMax(c)):k};t.map$2=function(a,g){var c=f.ii,b=f.jj,d=M(a[0]),e=v.add(f.realVector([1,0,0]),d),h=M(a[1]),m=v.add(f.realVector([1,0,0]),h);return h!==k&&
+m!==k&&d!==k&&e!==k?(h=D.basismap(h,m,c,b),c=D.basismap(d,e,c,b),c=v.mult(h,f.adjoint3(c)),f.normalizeMax(c)):k};t.pointreflect$1=function(a,g){var c=f.ii,b=f.jj,d=M(a[0]),e=v.add(f.realVector([1,0,0]),d),h=v.add(f.realVector([-1,0,0]),d);return h!==k&&d!==k&&e!==k?(h=D.basismap(d,h,c,b),c=D.basismap(d,e,c,b),c=v.mult(h,f.adjoint3(c)),f.normalizeMax(c)):k};t.linereflect$1=function(a,g){var c=f.ii,b=f.jj,d=M(a[0]),e=f.realVector([Math.random(),Math.random(),Math.random()]),h=f.realVector([Math.random(),
+Math.random(),Math.random()]),e=f.cross(e,d),h=f.cross(h,d);return d!==k&&e!==k?(d=D.basismap(e,h,c,b),c=D.basismap(e,h,b,c),c=v.mult(d,f.adjoint3(c)),f.normalizeMax(c)):k};D.extractPointVec=function(a){var g={ok:!1};if("geo"===a.ctype){var c=a.value;if("P"===c.kind)return g.x=xa.getField(c,"x"),g.y=xa.getField(c,"y"),g.z=m.real(1),g.ok=!0,g}if("list"!==a.ctype)return g;var b=a.value;if(2===b.length&&(a=b[0],c=b[1],"number"===a.ctype&&"number"===c.ctype))return g.x=a,g.y=c,g.z=m.real(1),g.ok=!0,g;
+3===b.length&&(a=b[0],c=b[1],b=b[2],"number"===a.ctype&&"number"===c.ctype&&"number"===b.ctype&&(g.x=m.div(a,b),g.y=m.div(c,b),g.z=m.real(1),g.ok=!0));return g};t.polygon$1=function(a,g){var c=A(a[0]);if("list"===c.ctype){for(var b=[],d=0;d<c.value.length;d++){var e=D.extractPoint(c.value[d]);if(!e.ok)return k;b[d]={X:e.x,Y:e.y}}return{ctype:"shape",type:"polygon",value:[b]}}return k};t.circle$2=function(a,g){var c=C(a[0]),b=C(a[1]),c=D.extractPointVec(c);if(!c.ok||"number"!==b.ctype)return k;c=f.turnIntoCSList([c.x,
+c.y,c.z]);return{ctype:"shape",type:"circle",value:f.turnIntoCSList([c,b])}};t.screen$0=function(a,g){var c=x.drawingstate.initialmatrix,b=function(a,g){var b=a-c.tx,d=g+c.ty;return{X:(b*c.d-d*c.b)/c.det,Y:-(-b*c.c+d*c.a)/c.det}};return{ctype:"shape",type:"polygon",value:[[b(0,0),b(W,0),b(W,V),b(0,V)]]}};t.halfplane$2=function(a,g){var c=C(a[0]),b=C(a[1]),d=M(c),e=M(b);if(c!==k&&b!==k){var h=b.usage,b=e;if("Line"===c.usage||"Point"===h)d=e,b=c;c=f.turnIntoCSList([b.value[0],b.value[1],m.zero]);c=
+f.cross(c,d);e=f.cross(b,c);e=v.div(e,e.value[2]);d=v.div(d,d.value[2]);d=f.sub(d,e);c=f.abs(d);d=v.div(d,c);c=e.value[0].value.real;e=e.value[1].value.real;b=1E3*d.value[0].value.real;d=1E3*d.value[1].value.real;return{ctype:"shape",type:"polygon",value:[[{X:c+d/2,Y:e-b/2},{X:c+d/2+b,Y:e-b/2+d},{X:c-d/2+b,Y:e+b/2+d},{X:c-d/2,Y:e+b/2}]]}}return k};t.element$1=function(a,g){var c=A(a[0]);return"string"===c.ctype&&u.csnames.hasOwnProperty(c.value)?{ctype:"geo",value:u.csnames[c.value]}:k};D.all$1=function(a,
+g){var c=A(a[0]);return"geo"===c.ctype&&c.value.incidences?f.ofGeos(c.value.incidences.map(function(a){return u.csnames[a]}).filter(g)):f.nil};t.allpoints$0=function(a,g){return f.ofGeos(u.points)};t.allpoints$1=function(a,g){return D.all$1(a,function(a){return"P"===a.kind})};t.allmasses$0=function(a,g){return f.ofGeos(ca)};t.allmasses$1=function(a,g){return D.all$1(a,function(a){return"P"===a.kind&&a.behavior&&"Mass"===a.behavior.type})};t.allsprings$0=function(a,g){return f.ofGeos(xc)};t.allsprings$1=
+function(a,g){return D.all$1(a,function(a){return"S"===a.kind&&a.behavior&&"Spring"===a.behavior.type})};t.alllines$0=function(a,g){return f.ofGeos(u.lines)};t.alllines$1=function(a,g){return D.all$1(a,function(a){return"L"===a.kind||"S"===a.kind})};t.allsegments$0=function(a,g){return f.ofGeos(u.lines.filter(function(a){return"S"===a.kind}))};t.allsegments$1=function(a,g){return D.all$1(a,function(a){return"S"===a.kind})};t.allconics$0=function(a,g){return f.ofGeos(u.conics)};t.allconics$1=function(a,
+g){return D.all$1(a,function(a){return"C"===a.kind})};t.allcircles$0=function(a,g){return f.ofGeos(u.conics.filter(function(a){return"Circle"===a.matrix.usage}))};t.allcircles$1=function(a,g){return D.all$1(a,function(a){return"C"===a.kind&&"Circle"===a.matrix.usage})};t.allelements$0=function(a,g){return f.ofGeos(u.gslp)};t.allelements$1=function(a,g){return D.all$1(a,function(a){return!0})};t.incidences$1=t.allelements$1;t.createpoint$2=function(a,g){var c=A(a[0]),b=M(a[1]);return"string"!==c.ctype?
+(console.log("Name must be a string"),k):"list"!==b.ctype&&f.isNumberVector(b)?(console.log("Position must be a number vector"),k):Da({name:c.value,type:"Free",labeled:!0,pos:b})};t.create$3=function(a,g){var c=A(a[0]),b=A(a[1]),d=A(a[2]),e,h;if("string"===c.ctype)e=c.value;else{if("list"!==c.ctype)return console.log("Names must be a string or a list of strings"),k;if(1!==c.value.length){e=v.string(c.value.map(function(a){return a.value}).join("__"));e=t.create$3([e,b,d],g);if(e!==k)for(b=v.string(e.kind.replace(/^(.*)s$/,
+"Select$1")),d=f.turnIntoCSList([v.string(e.name)]),h=0;h<c.value.length;++h)t.create$3([c.value[h],b,d],{index:m.real(h+1)});return e}if("string"!==c.value[0].ctype)return console.log("Element of names list must be a string"),k;e=c.value[0].value}if("string"!==b.ctype)return console.log("Type must be a string"),k;if("list"!==d.ctype)return console.log("Arguments must be a list"),k;if(!n.hasOwnProperty(b.value)&&!od.hasOwnProperty(b.value))return console.log("Invalid geometric operation: '"+b.value+
+"'"),k;var c=[],l=null;for(h=0;h<d.value.length;h++){var q=d.value[h];if("string"===q.ctype)c.push(q.value);else if("geo"===q.ctype)c.push(q.value.name);else if(l=M(q),l===k)return console.log("Unknown argument type"),k}e={name:e,type:b.value,labeled:!0};l&&(e.pos=l);0<c.length&&(e.args=c);b=C(g.index);"number"===b.ctype&&(e.index=b.value.real|0);return Da(e)};t.javascript$1=function(a,g){var c=A(a[0]);"string"===c.ctype&&(new Function(c.value)).call(qa);return k};t.use$1=function(a,g){function c(a,
+c,g){t[a.toLowerCase()+"$"+c]=g}var b=A(a[0]);if("string"===b.ctype){var b=b.value,d;q.plugins&&(d=q.plugins[b]);d||(d=va._pluginRegistry[b]);if(d)return d({instance:qa,config:q,nada:k,evaluate:A,extractPoint:D.extractPoint,evaluateAndVal:C,defineFunction:c,addShutdownHook:kb.push.bind(kb),addAutoCleaningEventListener:K,getVariable:J.getvar.bind(J),getInitialMatrix:function(){return x.drawingstate.initialmatrix},setTextRenderer:function(a,c){zc=a;c&&(qd=c)},getImage:function(a,c){"string"===typeof a&&
+(a=v.string(a));var g=cb(a);if(!g)return null;!c&&g.cdyUpdate&&g.cdyUpdate();return g},getMyfunction:function(a){return Wa.hasOwnProperty(a)?Wa[a]:null}}),{ctype:"boolean",value:!0};console.log("Plugin "+b+" not found");return{ctype:"boolean",value:!1}}return k};t.format$2=function(a,g){function c(a){a=a.toFixed(f);var c;do c=a,a=a.substring(0,a.length-1);while(""!==a&&"-"!==a&&+a===+c);return""+c}function b(a){var g;return"number"===a.ctype?(g=c(a.value.real),a=c(a.value.imag),g="0"===a?g:"-"===
+a.substring(0,1)?g+" - i*"+a.substring(1):g+" + i*"+a,{ctype:"string",value:g}):"list"===a.ctype?{ctype:"list",value:a.value.map(b)}:{ctype:"string",value:w(a).toString()}}var d=C(a[0]),e=C(a[1]),f;return"number"!==d.ctype&&"list"!==d.ctype||"number"!==e.ctype?k:(f=Math.max(0,Math.min(20,Math.round(e.value.real))),b(d))};Date.now||(Date.now=function(){return(new Date).getTime()});var Dd=0;t.timestamp$0=function(a,g){return m.real(Date.now())};t.seconds$0=function(a,g){return m.real((Date.now()-Dd)/
+1E3)};t.resetclock$0=function(a,g){Dd=Date.now();return k};t.time$0=function(a,g){var c=new Date;return f.realVector([c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds()])};t.date$0=function(a,g){var c=new Date;return f.realVector([c.getFullYear(),c.getMonth()+1,c.getDate()])};t.simulationtime$0=function(a,g){return m.real(Cb*Ad)};t.settimeout$2=function(a,g){function c(){A(e);b()}var d=A(a[0]),e=a[1];"number"===d.ctype&&"undefined"!==typeof window&&window.setTimeout(c,1E3*d.value.real);
+return k};D.formatForWebGL=function(a){return a.toFixed(10)};t.generateWebGL$2=function(a,g){var c=D.formatForWebGL,b=a[0],d=A(a[1]);console.log(d);if("list"!==d.ctype)return k;for(var e=[],f=0;f<d.value.length;f++)"string"===d.value[f].ctype&&e.push(d.value[f].value);console.log("***********");console.log(e);d=D.plotvars(b);console.log(d);-1===d.indexOf("a")&&-1===d.indexOf("b")&&-1===d.indexOf("c")&&-1===d.indexOf("d")&&-1===d.indexOf("e")&&-1===d.indexOf("f")&&(b=C(b));if("number"===b.ctype)return{ctype:"string",
+value:"vec2("+c(b.value.real)+","+c(b.value.imag)+")"};if("variable"===b.ctype)return{ctype:"string",value:b.name};if("string"===b.ctype||"void"===b.ctype)return b;if(2===b.args.length&&("infix"===b.ctype||"function"===b.ctype)){c=t.compileToWebGL$1([b.args[0]],{});d=t.compileToWebGL$1([b.args[1]],{});if("+"===b.oper||"add"===b.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:d.value}:{ctype:"string",value:"addc("+c.value+","+d.value+")"};if("*"===b.oper||"mult"===b.oper)return{ctype:"string",
+value:"multc("+c.value+","+d.value+")"};if("/"===b.oper||"div"===b.oper)return{ctype:"string",value:"divc("+c.value+","+d.value+")"};if("-"===b.oper||"sub"===b.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:"negc("+d.value+")"}:{ctype:"string",value:"subc("+c.value+","+d.value+")"};if("^"===b.oper||"pow"===b.oper)return{ctype:"string",value:"powc("+c.value+","+d.value+")"}}if("function"===b.ctype&&1===b.args.length){c=t.compileToWebGL$1([b.args[0]],{});if("sin$1"===b.oper)return{ctype:"string",
+value:"sinc("+c.value+")"};if("cos$1"===b.oper)return{ctype:"string",value:"cosc("+c.value+")"};if("tan$1"===b.oper)return{ctype:"string",value:"tanc("+c.value+")"};if("exp$1"===b.oper)return{ctype:"string",value:"expc("+c.value+")"};if("log$1"===b.oper)return{ctype:"string",value:"logc("+c.value+")"};if("arctan$1"===b.oper)return{ctype:"string",value:"arctanc("+c.value+")"};if("arcsin$1"===b.oper)return{ctype:"string",value:"arcsinc("+c.value+")"};if("arccos$1"===b.oper)return{ctype:"string",value:"arccosc("+
+c.value+")"};if("sqrt$1"===b.oper)return{ctype:"string",value:"sqrtc("+c.value+")"}}return k};t.compileToWebGL$1=function(a,g){var c,b;c=D.formatForWebGL;var d=a[0];b=D.plotvars(d);-1===b.indexOf("a")&&-1===b.indexOf("b")&&-1===b.indexOf("c")&&-1===b.indexOf("d")&&-1===b.indexOf("e")&&-1===b.indexOf("f")&&(d=C(d));if("number"===d.ctype)return{ctype:"string",value:"vec2("+c(d.value.real)+","+c(d.value.imag)+")"};if("variable"===d.ctype)return{ctype:"string",value:d.name};if("string"===d.ctype||"void"===
+d.ctype)return d;if(2===d.args.length&&("infix"===d.ctype||"function"===d.ctype)){c=t.compileToWebGL$1([d.args[0]],{});b=t.compileToWebGL$1([d.args[1]],{});if("+"===d.oper||"add"===d.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:b.value}:{ctype:"string",value:"addc("+c.value+","+b.value+")"};if("*"===d.oper||"mult"===d.oper)return{ctype:"string",value:"multc("+c.value+","+b.value+")"};if("/"===d.oper||"div"===d.oper)return{ctype:"string",value:"divc("+c.value+","+b.value+")"};
+if("-"===d.oper||"sub"===d.oper)return void 0===c.value||"void"===c.ctype?{ctype:"string",value:"negc("+b.value+")"}:{ctype:"string",value:"subc("+c.value+","+b.value+")"};if("^"===d.oper||"pow"===d.oper)return{ctype:"string",value:"powc("+c.value+","+b.value+")"}}if("function"===d.ctype&&1===d.args.length){c=t.compileToWebGL$1([d.args[0]],{});if("sin$1"===d.oper)return{ctype:"string",value:"sinc("+c.value+")"};if("cos$1"===d.oper)return{ctype:"string",value:"cosc("+c.value+")"};if("tan$1"===d.oper)return{ctype:"string",
+value:"tanc("+c.value+")"};if("exp$1"===d.oper)return{ctype:"string",value:"expc("+c.value+")"};if("log$1"===d.oper)return{ctype:"string",value:"logc("+c.value+")"};if("arctan$1"===d.oper)return{ctype:"string",value:"arctanc("+c.value+")"};if("arcsin$1"===d.oper)return{ctype:"string",value:"arcsinc("+c.value+")"};if("arccos$1"===d.oper)return{ctype:"string$1",value:"arccosc("+c.value+")"};if("sqrt$1"===d.oper)return{ctype:"string",value:"sqrtc("+c.value+")"}}return k};t.setsimulationspeed$1=function(a,
+b){var c=C(a[0]);"number"===c.ctype&&oa(c.value.real);return k};t.setsimulationaccuracy$1=function(a,b){var c=C(a[0]);"number"===c.ctype&&"undefined"!==typeof N&&"undefined"!==typeof N.env&&(N.env.accuracy=Math.max(1,c.value.real|0));return k};t.setsimulationquality$1=function(a,b){var c=C(a[0]);"number"===c.ctype&&"undefined"!==typeof N&&"undefined"!==typeof N.env&&(c=c.value.real,0===c&&(N.env.errorbound=.01,N.env.lowestdeltat=1E-5,N.env.slowdownfactor=2),1===c&&(N.env.errorbound=.001,N.env.lowestdeltat=
+1E-7,N.env.slowdownfactor=2),2===c&&(N.env.errorbound=1E-5,N.env.lowestdeltat=1E-10,N.env.slowdownfactor=4),3===c&&(N.env.errorbound=1E-6,N.env.lowestdeltat=1E-12,N.env.slowdownfactor=4));return k};var Vb=null,cc=null;t.createtool$3=function(a,b){var c,d="left",e="top",f=null;b.space&&(c=A(b.space),"number"===c.ctype&&(f=c.value.real/2));var h=null;b.toolbar&&(c=A(b.toolbar),"string"===c.ctype&&((h=document.getElementById(c.value))||console.warn("Element #"+c.value+" not found")));if(!h){if(b.reference){var m=
+A(b.reference);if("string"===m.ctype)switch(m.value){case "UR":d="right";break;case "LL":e="bottom";break;case "LR":d="right",e="bottom"}}h=document.createElement("div");h.className="CindyJS-toolbar";ga.parentNode.appendChild(h);m=A(a[1]);c=A(a[2]);"number"===m.ctype&&(h.style[d]=m.value.real+"px");"number"===c.ctype&&(h.style[e]=c.value.real+"px");null!==f&&(h.style.margin=-f+"px")}m=A(a[0]);if("string"===m.ctype)m=[[m.value]];else if("list"===m.ctype)m=m.value.map(function(a){return"string"===a.ctype?
+[a.value]:"list"===a.ctype?a.value.map(function(a){return"string"===a.ctype?a.value:null}):[null]});else return console.log("Name must be a string or a list of strings"),k;if(b.flipped&&(c=A(b.flipped),"boolean"===c.ctype&&c.value)){console.log("Flipping");var l=0;c=m.length;m.forEach(function(a){a.length>l&&(l=a.length)});for(var n=[],q=0;q<l;++q){n[q]=[];for(var r=0;r<c;++r)n[q][r]=m[r][q]||null}m=n}"bottom"===e&&m.reverse();m.forEach(function(a){"right"===d&&a.reverse();var c=document.createElement("div");
+h.appendChild(c);a.forEach(function(a){function b(){Vb&&Vb.classList.remove("CindyJS-active");Vb=d;d.classList.add("CindyJS-active");oc=a;var c=F[oc].actions;cc&&(cc.textContent=c[0].tooltip||"");ta=[];tb=Qa=0}F.hasOwnProperty(a)||(console.log("Tool '"+a+"' not implemented yet."),a=null);if(null===a){var g=document.createElement("span");g.className="CindyJS-spacer";c.appendChild(g)}else{var d=document.createElement("button"),g=document.createElement("img");g.src=va.getBaseDir()+"images/"+a+".png";
+d.appendChild(g);d.addEventListener("click",b);Vb||b();null!==f&&(d.style.margin=f+"px");c.appendChild(d)}})});return k};t.dropped$0=function(){return jc};t.droppoint$0=function(){return kc};t.parsecsv$1=function(a,b){var c=!0,d=C(b.autoconvert);"boolean"===d.ctype&&(c=d.value);var e=null,d=C(b.delimiter);"string"===d.ctype&&/^[^\"\r\n]$/.test(d.value)&&(e=d.value);d=C(a[0]);if("string"!==d.ctype)return console.log("CSV data is not a string"),k;var d=d.value,h='(?:"((?:[^"]+|"")*)"|([^]*?))(\r\n|(,)|[\r\n]|$)';
+e&&(e=e.replace(/[^A-Za-z0-9]/g,"\\$&").replace(/\$/g,"$$$$"),h=h.replace(/,/g,e));for(var h=new RegExp(h,"g"),e=[],l=[],n=null;h.lastIndex<d.length;){var q=h.exec(d),r=q[2];"string"===typeof q[1]&&(r=q[1].replace(/""/g,'"'));r=c?/^[Tt]rue$/.test(r)?v.bool(!0):/^[Ff]alse$/.test(r)?v.bool(!1):/^[\-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+|Infinity)$/.test(r)?m.real(Number(r)):v.string(r):v.string(r);e.push(r);q[4]&&h.lastIndex===d.length&&(e.push(v.string("")),q={});if(!q[4]){null===n&&(n=e.length);if(n<e.length)for(n=
+e.length,q=0;q<l.length;++q)for(r=l[q].length;r<n;++r)l[q][r]=k;else if(n>e.length)for(q=e.length;q<n;++q)e[q]=k;l.push(e);e=[]}}return f.turnIntoCSList(l.map(f.turnIntoCSList))};t.load$2=function(a,b){return t.load$3([a[0],null,a[1]],b)};t.load$3=function(a,g){function c(){if(h.readyState===XMLHttpRequest.DONE){var c;200===h.status?c=v.string(String(h.responseText)):(ha.err("Failed to load "+f+": "+h.statusText),c=k);J.newvar(d);J.setvar(d,c);A(a[2]);J.removevar(d);b()}}var d="#";null!==a[1]&&"variable"===
+a[1].ctype&&(d=a[1].name);var e=C(a[0]),f=null,h=null;"string"===e.ctype&&/^https?:\/\//.test(e.value)&&(f=e.value);return null!==f?(h=new XMLHttpRequest,h.onreadystatechange=c,h.open("GET",f),h.send(),v.bool(!0)):k};D.extractPoint=function(a){var b={ok:!1};if("geo"===a.ctype){var c=a.value;if("P"===c.kind)return b.x=xa.getField(c,"x").value.real,b.y=xa.getField(c,"y").value.real,b.ok=!0,b}if("list"!==a.ctype)return b;var d=a.value;if(2===d.length&&(a=d[0],c=d[1],"number"===a.ctype&&"number"===c.ctype))return b.x=
+a.value.real,b.y=c.value.real,b.ok=!0,b;3===d.length&&(a=d[0],c=d[1],d=d[2],"number"===a.ctype&&"number"===c.ctype&&"number"===d.ctype&&(a=m.div(a,d),c=m.div(c,d),b.x=a.value.real,b.y=c.value.real,b.ok=!0));return b};t.draw$1=function(a,b){var c=C(a[0]);if("shape"===c.ctype)D.drawshape(c,b);else if("Line"===c.usage)y.handleModifs(b,y.lineModifs),y.drawline(c);else{var d=D.extractPoint(c);if(!d.ok){if("undefined"!==typeof c.value&&2===c.value.length)return t.draw$2(c.value,b);return}null!==b&&y.handleModifs(b,
+y.pointModifs);y.drawpoint(d)}return k};t.draw$2=function(a,b){var c=C(a[0]),d=C(a[1]),c=D.extractPoint(c),d=D.extractPoint(d);if(!c.ok||!d.ok)return k;null!==b&&y.handleModifs(b,y.lineModifs);y.drawsegcore(c,d);return k};t.drawcircle$2=function(a,b){return D.drawcircle(a,b,"D")};D.arcHelper=function(a){var b={};b.startPoint=M(a[0]);b.viaPoint=M(a[1]);b.endPoint=M(a[2]);return b};t.fillcircle$2=function(a,b){return D.drawcircle(a,b,"F")};t.drawarc$3=function(a,b){var c=D.arcHelper(a);return D.drawarc(c,
+b,"D")};t.fillarc$3=function(a,b){var c=D.arcHelper(a);return D.drawarc(c,b,"F")};D.drawarc=function(a,b,c){var d=a.startPoint,e=a.viaPoint;a=a.endPoint;if(!f._helper.isAlmostReal(f.turnIntoCSList([d,e,a])))return k;y.handleModifs(b,y.conicModifs);y.preDrawCurve();b=f.det3(d,e,a);if(1E-12<Math.abs(b.value.real)){b=n._helper.ConicBy5(null,d,e,a,f.ii,f.jj);var h=n._helper.CenterOfConic(b),h=f.normalizeMax(h);b=m.real(0);var l=f.turnIntoCSList([f.turnIntoCSList([h.value[2],b,m.neg(h.value[0])]),f.turnIntoCSList([b,
+h.value[2],m.neg(h.value[1])]),f.turnIntoCSList([b,b,h.value[2]])]);b=f.normalizeZ(v.mult(l,d));f.normalizeZ(v.mult(l,e));l=f.normalizeZ(v.mult(l,a));b=-Math.atan2(b.value[1].value.real,b.value[0].value.real);l=-Math.atan2(l.value[1].value.real,l.value[0].value.real);h=f.normalizeZ(h);d=f.normalizeZ(d);e=f.normalizeZ(e);a=f.normalizeZ(a);var q=f.abs(f.sub(d,h)),r=[h.value[0].value.real,h.value[1].value.real],h=x.drawingstate.matrix,t=r[0]*h.a-r[1]*h.b+h.tx,r=r[0]*h.c-r[1]*h.d-h.ty,d=0<f.det3(d,e,
+a).value.real;z.save();z.beginPath();z.translate(t,r);z.arc(0,0,q.value.real*h.sdet,b,l,d);"F"===c&&(z.fillStyle=y.lineColor,z.closePath(),z.fill());"D"===c&&z.stroke();z.restore()}else{if("D"!==c)return k;c=D.extractPoint(d);b=D.extractPoint(e);l=D.extractPoint(a);if(!c.ok||!b.ok||!l.ok)return k;q=(c.x-l.x)*(c.x-l.x)+(c.y-l.y)*(c.y-l.y);h=(l.x-b.x)*(l.x-b.x)+(l.y-b.y)*(l.y-b.y);if(1E-12>(c.x-b.x)*(c.x-b.x)+(c.y-b.y)*(c.y-b.y)||1E-12>q||1E-12>h)return k;0>f.crossratio3(d,a,e,f.cross(f.cross(d,e),
+f.linfty),f.ii).value.real?y.drawsegcore(c,l):y.drawRaySegment(d,a)}return k};D.drawcircle=function(a,b,c){var d=C(a[0]);a=C(a[1]);var e=D.extractPoint(d);if(!e.ok||"number"!==a.ctype||!m._helper.isAlmostReal(a))return k;var d=x.drawingstate.matrix,f=e.x*d.a-e.y*d.b+d.tx,e=e.x*d.c-e.y*d.d-d.ty;y.handleModifs(b,y.conicModifs);y.preDrawCurve();z.lineJoin="miter";z.beginPath();z.arc(f,e,Math.abs(a.value.real)*d.sdet,0,2*Math.PI);z.closePath();"D"===c&&z.stroke();"F"===c&&(z.fillStyle=y.lineColor,z.fill());
+"C"===c&&z.clip();return k};t.drawconic$1=function(a,b){var c;c=C(a[0]);if("list"!==c.ctype||3!==c.value.length&&6!==c.value.length)return console.error("could not parse conic"),k;if(6===c.value.length){for(var d=0;6>d;d++)if("number"!==c.value[d].ctype)return console.error("could not parse conic"),k;var e=m.real(.5),d=c.value[0],h=c.value[2],h=m.mult(h,e),l=c.value[1],n=c.value[3],n=m.mult(n,e),q=c.value[4],q=m.mult(q,e);c=c.value[5];c=f.turnIntoCSList([f.turnIntoCSList([d,h,n]),f.turnIntoCSList([h,
+l,q]),f.turnIntoCSList([n,q,c])])}else{for(d=0;3>d;d++)for(h=0;3>h;h++)if("number"!==c.value[d].value[h].ctype)return console.error("could not parse conic"),k;f.equals(c,f.transpose(c)).value||(d=v.mult(c,m.real(.5)),c=v.mult(f.transpose(c),m.real(.5)),c=f.add(d,c))}c=f.normalizeMax(c);return D.drawconic(c,b)};D.drawconic=function(a,b){y.handleModifs(b,y.conicModifs);if(0!==y.lsize){y.preDrawCurve();for(var c=f.normalizeMax(a),d=c,e=0;2>e;e++)for(var h=0;2>h;h++)if(Math.abs(c.value[e].value[h].value.imag)>
+m.eps)return;e=f.turnIntoCSList([f.realVector([-1,-1,1]),f.realVector([1,0,0]),f.realVector([0,1,0])]);h=x.from(0,0,1);h[2]=1;var l=x.from(1,0,1);l[2]=1;var q=x.from(0,1,1);q[2]=1;var h=f.turnIntoCSList([f.realVector(h),f.realVector(l),f.realVector(q)]),h=f.transpose(h),e=v.mult(h,e),e=f.inverse(e),c=v.mult(f.transpose(e),c),c=v.mult(c,e),e=c.value[0].value[0].value.real,h=c.value[1].value[0].value.real,l=c.value[1].value[1].value.real,q=c.value[2].value[0].value.real,r=c.value[2].value[1].value.real,
+u=c.value[2].value[2].value.real,c=[[e,h,q],[h,l,r],[q,r,u]],w=1E-14>Math.abs(e*l*u-e*r*r-h*h*u+2*h*q*r-l*q*q);if(w&&"Circle"===a.usage){var A=v.mult(f.adjoint3(d),f.linfty);m.abs(A.value[2]).value.real>m.eps&&(w=!1)}var A=W>V?W:V,B=-1.5*A,C=1.5*A,D=-1.5*A,ec=1.5*A,E=1;w&&(E=0);if(E)var q=0,q=1E-14<Math.abs(e-h)?Math.atan(h/e-l)/2:Math.PI/4,F=function(a){var c=Math.cos(a);a=Math.sin(a);return[[c,-a,0],[a,c,0],[0,0,1]]}(q),F=f.realMatrix(F),e=f.transpose(F),c=v.mult(f.realMatrix(c),F),c=v.mult(e,c),
+e=c.value[0].value[0].value.real,h=c.value[1].value[0].value.real,l=c.value[1].value[1].value.real,q=c.value[2].value[0].value.real,r=c.value[2].value[1].value.real,u=c.value[2].value[2].value.real;var c=[e,h,l,q,r,u],e=function(){var a=n._helper.splitDegenConic(d);if(a!==k){var c=a[1],a=[a[0]];t.draw$1(a,b);a[0]=c;t.draw$1(a,b)}},G=function(a){"undefined"!==a&&6===a.length||console.error("this does not define a Conic");if(w)return"degenerate";a=a[0]*a[2]-a[1]*a[1];return 1E-14>Math.abs(a)?"parabola":
+1E-14<a?"ellipsoid":"hyperbola"};G(c);var H=function(a,c){return 0<a&&a<W&&0<c&&c<V},I=[],J=[],K=[],L=[],M=[],N=[],O=function(){I=[];J=[];K=[];L=[];M=[];N=[]},P=function(a,c){z.beginPath();z.moveTo(a[0],c[0]);for(var b=1;b<a.length;b++)z.lineTo(a[b],c[b]);z.stroke()},Q=function(a,c,b){var g,d,e=G(a);if(6!==a.length)console.error("Conic needs 6 Parameters");else{var p=a[0],h=a[1],k=a[2],m=a[3],l=a[4];a=a[5];var n;g=b-c;for(var ba=.1*g+c,q=b-.1*g,R=c;R<=b;R+=n){n=R<ba||R>q||100>Math.abs(b-c)?.5:0>R||
+R>V?10:3;d=-p*k*R*R-2*p*l*R-p*a+h*h*R*R+2*h*m*R+m*m;d=Math.sqrt(d);g=1/p*(-h*R-m+d);d=-1/p*(h*R+m+d);var r,Ca;E?(r=[g,R,1],Ca=[d,R,1],r=v.mult(F,f.realVector(r)),Ca=v.mult(F,f.realVector(Ca)),g=r.value[0].value.real,d=Ca.value[0].value.real,r=r.value[1].value.real,Ca=Ca.value[1].value.real):Ca=r=R;isNaN(g)||"ellipsoid"!==e?!isNaN(g)&&g>=B&&g<=C&&(I.push(g),K.push(r)):(I.push(g),K.push(r));isNaN(d)||"ellipsoid"!==e?!isNaN(d)&&d>=B&&d<=C&&(J.push(d),L.push(Ca)):(J.push(d),L.push(Ca))}}},h=function(a){var c,
+b,g;G(a);if(6!==a.length)console.error("Conic needs 6 Parameters");else{g=a[0];var d=a[1],e=a[2],f=a[3],p=a[4],h=a[5];c=-g*p+d*f;b=Math.sqrt(g*(-g*e*h+g*Math.pow(p,2)+Math.pow(d,2)*h-2*d*f*p+e*Math.pow(f,2)));e=g*e-Math.pow(d,2);1E-14<Math.abs(e)?(g=(c-b)/e,b=(c+b)/e):b=g=(-g*h+f*f)/(2*g*p-2*d*f);!isNaN(g)&&g>D&&g<ec||(g=D);!isNaN(b)&&b>D&&b<ec||(b=D);c=g<b?g:b;b=g>b?g:b;Q(a,D,c);M=I.concat(J.reverse());N=K.concat(L.reverse());P(M,N);O();Q(a,b,ec);P(I,K);if(H(I[0],K[1])||H(J[0],L[0]))z.beginPath(),
+z.moveTo(I[0],K[0]),z.lineTo(J[0],L[0]),z.stroke();P(J,L);O();Q(a,c,b);P(I,K);z.beginPath();z.moveTo(I[0],K[0]);z.lineTo(J[0],L[0]);z.stroke();z.beginPath();z.moveTo(I[I.length-1],K[K.length-1]);z.lineTo(J[J.length-1],L[L.length-1]);z.stroke();P(J,L);O()}};w?e():h(c)}};t.drawall$1=function(a,b){var c=A(a[0]);if("list"===c.ctype){y.handleModifs(b,y.pointAndLineModifs);for(var d=0;d<c.value.length;d++)t.draw$1([c.value[d]],null)}return k};t.connect$1=function(a,b){return D.drawpolygon(a,b,"D",!1)};
+t.drawpoly$1=function(a,b){return D.drawpolygon(a,b,"D",!0)};t.fillpoly$1=function(a,b){return D.drawpolygon(a,b,"F",!0)};t.drawpolygon$1=function(a,b){return D.drawpolygon(a,b,"D",!0)};t.fillpolygon$1=function(a,b){return D.drawpolygon(a,b,"F",!0)};D.drawpolygon=function(a,b,c,d){function e(){for(var a=m.value,c=0;c<a.length;c++){var b=a[c],g;for(g=0;g<b.length;g++){var d=b[g],f=d.X*h.a-d.Y*h.b+h.tx,d=d.X*h.c-d.Y*h.d-h.ty;0===g?z.moveTo(f,d):z.lineTo(f,d)}z.closePath()}}function f(){var a;for(a=
+0;a<m.value.length;a++){var c=D.extractPoint(m.value[a]);if(!c.ok)return;var b=c.x*h.a-c.y*h.b+h.tx,c=c.x*h.c-c.y*h.d-h.ty;0===a?z.moveTo(b,c):z.lineTo(b,c)}d&&z.closePath()}y.handleModifs(b,y.conicModifs);y.preDrawCurve();z.mozFillRule="evenodd";var h=x.drawingstate.matrix,m=A(a[0]);z.beginPath();"list"===m.ctype&&f();"shape"===m.ctype&&e();"D"===c&&(y.fillColor&&(z.fillStyle=y.fillColor,z.fill()),z.stroke());"F"===c&&(z.fillStyle=y.lineColor,z.fill());"C"===c&&z.clip();return k};var zc=Wc,qd=function(a,
+b,c){if(-1!==b.indexOf("\n"))for(b=b.split("\n"),a.textContent=b[0],c=1;c<b.length;++c)a.appendChild(document.createElement("br")),a.appendChild(document.createTextNode(b[c]));else a.textContent=b};D.drawtext=function(a,b,c){var d=C(a[0]);a=A(a[1]);var e=D.extractPoint(d);if(!e.ok)return null;y.handleModifs(b,y.textModifs);b=x.drawingstate.textsize;null===b&&(b=ja.textsize);null!==y.size&&(b=y.size);z.fillStyle=y.textColor;var f=x.drawingstate.matrix,d=e.x*f.a-e.y*f.b+f.tx+y.xOffset,e=e.x*f.c-e.y*
+f.d-f.ty-y.yOffset;a=w(a);f=y.bold+y.italics+Math.round(10*b)/10+"px "+y.family;z.font=f;return c?c(a,f,d,e,y.align,b):zc(z,a,d,e,y.align,b,b*ja.lineHeight)};t.drawtext$2=function(a,b){D.drawtext(a,b,null);return k};t.drawtable$2=function(a,b){var c=C(a[0]),d=C(a[1]),e=D.extractPoint(c);if(!e.ok||"list"!==d.ctype)return k;var d=d.value,c=d.length,h=-1,m;for(m=0;m<c;++m)"list"===d[m].ctype&&d[m].value.length>h&&(h=d[m].value.length);-1===h?(d=d.map(function(a){return[a]}),h=1):d=d.map(function(a){return f.asList(a).value});
+var l=100,n=null,q=!0,r=x.drawingstate.textcolor;y.handleModifs(b,{size:!0,color:function(a){f._helper.isNumberVecN(a,3)&&(r=y.makeColor([a.value[0].value.real,a.value[1].value.real,a.value[2].value.real]))},alpha:!0,bold:!0,italics:!0,family:!0,align:!0,x_offset:!0,y_offset:!0,offset:!0,width:function(a){"number"===a.ctype&&(l=a.value.real)},height:function(a){"number"===a.ctype&&(n=a.value.real)},border:function(a){"boolean"===a.ctype&&(q=a.value)}});var t=x.drawingstate.textsize;null===t&&(t=ja.textsize);
+null!==y.size&&(t=y.size);null===n&&(n=1.6*t);z.font=y.bold+y.italics+Math.round(10*t)/10+"px "+y.family;m=x.drawingstate.matrix;var u=h*l,v=c*n,t=e.x*m.a-e.y*m.b+m.tx+y.xOffset,A=e.x*m.c-e.y*m.d-m.ty-y.yOffset-v;if(q){y.preDrawCurve();z.strokeStyle=y.lineColor;z.beginPath();for(m=1;m<c;++m)z.moveTo(t,A+m*n),z.lineTo(t+u,A+m*n);for(e=1;e<h;++e)z.moveTo(t+e*l,A),z.lineTo(t+e*l,A+v);z.stroke();z.lineWidth=y.lsize+1;z.beginPath();z.rect(t,A,u,v);z.stroke()}t+=y.align*l+(1-2*y.align)*n*.3;A+=.7*n;z.fillStyle=
+r;for(m=0;m<c;++m)for(e=0;e<h;++e)u=w(d[m][e]),zc(z,u,t+e*l,A+m*n,y.align);return k};D.drawshape=function(a,b){return"polygon"===a.type?D.drawpolygon([a],b,"D",1):"circle"===a.type?D.drawcircle([a.value.value[0],a.value.value[1]],b,"D"):k};D.fillshape=function(a,b){return"polygon"===a.type?D.drawpolygon([a],b,"F",1):"circle"===a.type?D.drawcircle([a.value.value[0],a.value.value[1]],b,"F"):k};D.clipshape=function(a,b){return"polygon"===a.type?D.drawpolygon([a],b,"C",1):"circle"===a.type?D.drawcircle([a.value.value[0],
+a.value.value[1]],b,"C"):k};t.fill$1=function(a,b){var c=A(a[0]);return"shape"===c.ctype?D.fillshape(c,b):k};t.clip$1=function(a,b){var c=A(a[0]);return"shape"===c.ctype?D.clipshape(c,b):"list"===c.ctype?(c=t.polygon$1(a,[]),t.clip$1([c],[])):k};t.plot$1=function(a,b){return t.plot$2([a[0],null],b)};t.plot$2=function(a,b){function c(a){return"number"===a.ctype&&m._helper.isAlmostReal(a)}function d(a,c,b,g,e){n++;c=+c.value.real;e=+g.value.real;g=c*E.a-e*E.b+E.tx;c=c*E.c-e*E.d-E.ty;a=+a.value.real;
+e=+b.value.real;b=a*E.a-e*E.b+E.tx;a=a*E.c-e*E.d-E.ty;q?(z.lineTo(b,a),z.lineTo(g,c)):(z.beginPath(),z.moveTo(b,a),z.lineTo(g,c),q=!0)}function e(a,b,g,f,k){var n=c(g),r=c(f);if(.001>k)!h&&q&&(z.stroke(),q=!1);else if(n||r){var t=m.real((a.value.real+b.value.real)/2);J.setvar(B,t);var u=A(w),v=c(u);if(n&&r&&v){var Mb=g.value.real,r=u.value.real,v=f.value.real;if(n=1>Math.abs(Mb+v-2*r)/l){var x=m.real((a.value.real+t.value.real)/2);J.setvar(B,x);var x=A(w),y=m.real((t.value.real+b.value.real)/2);J.setvar(B,
+y);y=A(w);Mb=Math.abs(Mb+r-2*x.value.real)/l;r=Math.abs(r+v-2*y.value.real)/l;n=n&&1>Mb&&1>r}n?(d(a,t,g,u,k/2),d(t,b,u,f,k/2)):(e(a,t,g,u,k/2),e(t,b,u,f,k/2))}else e(a,t,g,u,k/2),e(t,b,u,f,k/2)}}var h=!1,l=.2/Jb,n=0,q=!1,r=-10,t=10,u=.1,v=1E3,w=a[0],B;if(null!==a[1]&&"variable"===a[1].ctype)B=a[1].name;else{var C=D.plotvars(w);B="#";-1!==C.indexOf("t")&&(B="t");-1!==C.indexOf("z")&&(B="z");-1!==C.indexOf("y")&&(B="y");-1!==C.indexOf("x")&&(B="x")}J.newvar(B);var E=x.drawingstate.matrix;y.handleModifs(b,
+{color:!0,alpha:!0,size:!0,dashpattern:!0,dashtype:!0,dashing:!0,lineCap:!0,lineJoin:!0,miterLimit:!0,connect:function(a){"boolean"===a.ctype&&(h=a.value)},start:function(a){"number"===a.ctype&&(r=a.value.real)},stop:function(a){"number"===a.ctype&&(t=a.value.real)},steps:function(a){"number"===a.ctype&&(v=a.value.real)}});z.strokeStyle=y.lineColor;z.lineWidth=y.lsize;var F,G,H,I,q=!1,C=m.real(14.32);J.setvar(B,C);H=A(w);if("number"!==H.ctype){if(f.isNumberVector(H).value&&2===H.value.length){q=!1;
+u=(t-r)/v;for(C=r;C<t;C+=u)J.setvar(B,m.real(C)),I=A(w),f.isNumberVector(I).value&&2===I.value.length&&(F=+I.value[0].value.real,G=+I.value[1].value.real,I=F*E.a-G*E.b+E.tx,F=F*E.c-G*E.d-E.ty,q?z.lineTo(I,F):(z.beginPath(),z.moveTo(I,F),q=!0));z.stroke();J.removevar(B)}return k}for(I=r;I<t+u;I+=u)C=m.real(I),J.setvar(B,C),H=A(w),C.value.real>r&&e(F,C,G,H,u),F=C,G=H;J.removevar(B);q&&z.stroke();return k};t.plotX$1=function(a,b){var c=a[0],d=D.plotvars(c),e="#";-1!==d.indexOf("t")&&(e="t");-1!==d.indexOf("z")&&
+(e="z");-1!==d.indexOf("y")&&(e="y");-1!==d.indexOf("x")&&(e="x");J.newvar(e);d=x.drawingstate.matrix;z.fillStyle=x.drawingstate.linecolor;z.lineWidth=1;z.lineCap=y.lineCap;z.lineJoin=y.lineJoin;z.miterLimit=y.miterLimit;for(var f=!1,h=-10;10>h;h+=.01){J.setvar(e,m.real(h));var l=A(c);if("number"===l.ctype){var n=+l.value.real,l=h*d.a-n*d.b+d.tx,n=h*d.c-n*d.d-d.ty;f?z.lineTo(l,n):(z.beginPath(),z.moveTo(l,n),f=!0)}}z.stroke();J.removevar(e);return k};D.plotvars=function(a){function b(a,c){var g={},
+d;for(d=a.length-1;0<=d;--d)g[a[d]]=a[d];for(d=c.length-1;0<=d;--d)g[c[d]]=c[d];d=[];for(var e in g)g.hasOwnProperty(e)&&d.push(g[e]);return d}function c(a,c){for(var b=0;b<a.length;b++)a[b]===c&&(a.splice(b,1),b--);return a}var d,e,f,h;if("variable"===a.ctype)return[a.name];if("infix"===a.ctype)return d=D.plotvars(a.args[0]),a=D.plotvars(a.args[1]),b(d,a);if("list"===a.ctype){f=a.value;e=[];for(h=0;h<f.length;h++)d=D.plotvars(f[h]),e=b(e,d);return e}if("function"===a.ctype){f=a.args;e=[];for(h=0;h<
+f.length;h++)d=D.plotvars(f[h]),e=b(e,d);"apply"!==a.oper&&"select"!==a.oper&&"forall"!==a.oper&&"sum"!==a.oper&&"product"!==a.oper&&"repeat"!==a.oper&&"min"!==a.oper&&"max"!==a.oper&&"sort"!==a.oper||"variable"!==a.args[1].ctype||(e=c(e,a.args[1].name));return e}return[]};t.clrscr$0=function(a,b){"undefined"!==typeof W&&"undefined"!==typeof V&&z.clearRect(0,0,W,V);return k};t.repaint$0=function(a,g){b();return k};t.screenbounds$0=function(a,b){var c=v.withUsage(f.realVector(x.to(0,0)),"Point"),d=
+v.withUsage(f.realVector(x.to(W,0)),"Point"),e=v.withUsage(f.realVector(x.to(W,V)),"Point"),h=v.withUsage(f.realVector(x.to(0,V)),"Point");return f.turnIntoCSList([c,d,e,h])};t.createimage$3=function(a,b){var c=A(a[0]),d=C(a[1]),e=C(a[2]);if("number"!==d.ctype||"number"!==e.ctype||"string"!==c.ctype)return k;var f=document.createElement("canvas");f.id=c.value;f.width=d.value.real;f.height=e.value.real;f.style.display="none";document.body.appendChild(f);ab[c.value]=X(f);return k};t.clearimage$1=function(a,
+b){var c=A(a[0]);if("string"!==c.ctype&&"image"!==c.ctype)return k;var c=cb(c),d=c.img;if("undefined"===typeof d||null===d)return k;var e=c.width,f=c.height;d.getContext("2d").clearRect(0,0,e,f);c.generation++;return k};t.canvas$4=function(a,b){var c=C(a[0]),d=C(a[1]),e=A(a[2]),f=a[3],h=D.extractPoint(c),m=D.extractPoint(d);if(!h.ok||!m.ok||"string"!==e.ctype&&"image"!==e.ctype)return k;e=cb(e);if(!e||!e.img.getContext)return k;var d=e.img,l=e.width,c=e.height,n=m.x-h.x,q=m.y-h.y,r=h.x-q*c/l,t=h.y+
+n*c/l,q=m.x-q*c/l,n=m.y+n*c/l,m=x.from(h.x,h.y,1),r=x.from(r,t,1),q=x.from(q,n,1),h=m[0],t=m[1],n=r[0],u=r[1],v=q[0],w=q[1],r=l*(t-u)/((h-n)*(t-w)-(h-v)*(t-u)),l=l*(h-n)/((t-u)*(h-v)-(t-w)*(h-n)),q=-r*h-l*t,m=(c*(t-w)-c*(t-u))/((h-n)*(t-w)-(h-v)*(t-u)),n=(c*(h-v)-c*(h-n))/((t-u)*(h-v)-(t-w)*(h-n)),c=c-m*h-n*t,d=d.getContext("2d"),h=z;z=d;z.save();z.transform(r,m,l,n,q,c);e.generation++;A(f);z.restore();z=h};t.canvas$5=function(a,b){var c=C(a[0]),d=C(a[1]),e=C(a[2]),f=A(a[3]),h=a[4],c=D.extractPoint(c),
+m=D.extractPoint(d),l=D.extractPoint(e);if(!c.ok||!m.ok||!l.ok||"string"!==f.ctype&&"image"!==f.ctype)return k;f=cb(f);if(!f||!f.img.getContext)return k;var e=f.img,n=f.width,d=f.height,q=x.from(c.x,c.y,1),r=x.from(m.x,m.y,1),m=x.from(l.x,l.y,1),c=q[0],l=q[1],t=r[0],u=r[1],v=m[0],w=m[1],m=((0-n)*(l-w)-0*(l-u))/((c-t)*(l-w)-(c-v)*(l-u)),n=((0-n)*(c-v)-0*(c-t))/((l-u)*(c-v)-(l-w)*(c-t)),r=0-m*c-n*l,q=((d-d)*(l-w)-(d-0)*(l-u))/((c-t)*(l-w)-(c-v)*(l-u)),t=((d-d)*(c-v)-(d-0)*(c-t))/((l-u)*(c-v)-(l-w)*
+(c-t)),d=d-q*c-t*l,e=e.getContext("2d"),c=z;z=e;z.save();z.transform(m,q,n,t,r,d);f.generation++;A(h);z.restore();z=c};t.screenresolution$0=function(a,b){return m.real(x.drawingstate.matrix.a)};t.layer$1=function(a,b){};t.imagesize$1=function(a,b){var c=cb(C(a[0]));return c?f.realVector([+c.width,+c.height]):k};t.imageready$1=function(a,b){var c=cb(C(a[0]));return v.bool(!(!c||!c.ready))};t.drawimage$2=function(a,b){function c(){var a=1,c=1,d=1,p=1,h=0,m=1,n=D.extractPoint(e);if(!n.ok)return k;l=
+cb(l);if(!l)return k;z.save();var q;void 0!==b.angle&&(q=A(b.angle),"number"===q.ctype&&(h=q.value.real));void 0!==b.rotation&&(q=A(b.rotation),"number"===q.ctype&&(h=q.value.real));void 0!==b.scale&&(q=C(b.scale),"number"===q.ctype&&(c=a=q.value.real),f.isNumberVector(q).value&&2===q.value.length&&(a=q.value[0].value.real,c=q.value[1].value.real));void 0!==b.scalex&&(q=A(b.scalex),"number"===q.ctype&&(a=q.value.real));void 0!==b.scaley&&(q=A(b.scaley),"number"===q.ctype&&(c=q.value.real));void 0!==
+b.flipx&&(q=A(b.flipx),"boolean"===q.ctype&&q.value&&(d=-1));void 0!==b.flipy&&(q=A(b.flipy),"boolean"===q.ctype&&q.value&&(p=-1));void 0!==b.alpha&&(q=A(b.alpha),"number"===q.ctype&&(m=q.value.real));var r=x.drawingstate.matrix,R=x.drawingstate.initialmatrix,t=l.width,u=l.height;q=n.x*r.a-n.y*r.b+r.tx;var v=n.x*r.c-n.y*r.d-r.ty,w=(n.x+1)*r.a-n.y*r.b+r.tx-q,r=(n.x+1)*r.c-n.y*r.d-r.ty-v,Ca=(n.x+1)*R.a-n.y*R.b+R.tx-(n.x*R.a-n.y*R.b+R.tx),R=(n.x+1)*R.c-n.y*R.d-R.ty-(n.x*R.c-n.y*R.d-R.ty),n=Math.sqrt(w*
+w+r*r)/Math.sqrt(Ca*Ca+R*R),w=-Math.atan2(w,r)+Math.atan2(Ca,R),r=x.drawingstate.matrix.sdet/72,a=a*r,c=c*r;1!==m&&(z.globalAlpha=m);z.translate(q,v);z.scale(a*d*n,c*p*n);z.rotate(h+w);z.translate(-q,-v);z.translate(-t/2,-u/2);a=l;a.drawTo?a.drawTo(z,q,v):z.drawImage(a.img,q,v);z.globalAlpha=1;z.restore()}function d(){var a=1,c=1,f=1,p=1,n=D.extractPoint(e),q=D.extractPoint(h),r;if(!n.ok||!q.ok)return k;l=cb(l);if(!l)return k;var t=l.width,u=l.height;if(0===m)r={},r.x=n.x-(q.y-n.y),r.y=n.y+(q.x-n.x),
+p=u/t;else if(r=D.extractPoint(m),!n.ok)return k;z.save();var v;void 0!==b.alpha&&(v=A(b.alpha),"number"===v.ctype&&(a=v.value.real));void 0!==b.aspect&&(v=A(b.aspect),"number"===v.ctype&&(p=v.value.real));void 0!==b.flipx&&(v=A(b.flipx),"boolean"===v.ctype&&v.value&&(c=-1));void 0!==b.flipy&&(v=A(b.flipy),"boolean"===v.ctype&&v.value&&(f=-1));v=x.drawingstate.matrix;1!==a&&(z.globalAlpha=a);a=n.x*v.a-n.y*v.b+v.tx;n=n.x*v.c-n.y*v.d-v.ty;z.transform(q.x*v.a-q.y*v.b+v.tx-a,q.x*v.c-q.y*v.d-v.ty-n,r.x*
+v.a-r.y*v.b+v.tx-a,r.x*v.c-r.y*v.d-v.ty-n,a,n);z.scale(1/t,-1/u*p);z.translate(t/2,-u/2);z.scale(c,f);z.translate(-t/2,u/2);z.translate(0,-u);c=l;c.drawTo?c.drawTo(z,0,0):z.drawImage(c.img,0,0);z.globalAlpha=1;z.restore()}var e,h,m,l;return 2===a.length?(e=C(a[0]),l=C(a[1]),c()):3===a.length?(e=C(a[0]),h=C(a[1]),m=0,l=C(a[2]),d()):4===a.length?(e=C(a[0]),h=C(a[1]),m=C(a[2]),l=C(a[3]),d()):k};t.drawimage$3=t.drawimage$2;t.drawimage$4=t.drawimage$2;t.allimages$0=function(){var a=[];Object.keys(ab).forEach(function(b){a.push({ctype:"string",
+value:b})});return f.turnIntoCSList(a)};t.cameravideo$0=function(){var a=null,b={video:!0,audio:!1},c=navigator.mediaDevices&&navigator.mediaDevices.getUserMedia;c?a=function(a,c){navigator.mediaDevices.getUserMedia(b).then(a,c)}:(c=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)&&(a=function(a,d){c.call(navigator,b,a,d)});if(!a)return console.warn("getUserMedia call not supported"),k;var d=document.createElement("video");d.autoplay=!0;var e=
+X(d);console.log("Opening stream.");a(function(a){a=window.URL.createObjectURL(a);d.src=a;d.addEventListener("loadeddata",S)},function(a){console.error("Could not get user video:",String(a),a)});return e};"use strict";var me=[{key:[":"],field:["."],deg:["\u00b0"],take:["_"]},{functionCall:!0},{rassoc:!0,pow:["^"],sqrt:["\u221a"]},{mul:["*","\u2062","\u22c5","\u00b7"],cross:["\u00d7"],div:["/","\u00f7","\u2215","\u2236"]},{add:["+"],sub:["-","\u2212"],neg:["!","\u00ac"]},{seq:[".."]},{eq:["==","\u225f"],
+ne:["!=","<>","\u2260"],lt:["<"],gt:[">"],le:["<=","\u2264","\u2266"],ge:[">=","\u2265","\u2267"],aeq:["~=","\u2248"],ane:["~!=","\u2249"],alt:["~<","\u2a89"],agt:["~>","\u2a8a"],ale:["~<=","\u2a85"],age:["~>=","\u2a86"],"in":["\u2208"],nin:["\u2209"]},{and:["&","\u2227"],or:["%","\u2228"]},{rassoc:!0,prepend:["<:"]},{concat:["++","\u222a"],remove:["--","\u2216"],common:["~~","\u2229"],append:[":>"]},{rassoc:!0,assign:["="],define:[":="],undefine:[":=_"],bdefine:["::="]},{seq:[";"]},{modif:["->",
+"\u2192"]},{rassoc:!0,list:[","]}],ne=["+","-"],oe=["!","\u221a"],pe=["\u00b0",":=_"],qe=[";",","],Ac=[],wa={},ad;(function(){var a=0;me.forEach(function(b){a+=2;var c=!!b.rassoc;b.functionCall&&(ad=a);for(var d in b){var e=b[d];if("boolean"!==typeof e)for(var f={name:d,sym:e[0],symbols:e,rassoc:c,precedence:a,prefix:!1,postfix:!1,infix:!0,bare:!1},h=0;h<e.length;++h){var m=e[h];if(wa.hasOwnProperty(m))throw Error("Duplicate operator: "+m);wa[m]=f;Ac.push(m)}}});ne.forEach(function(a){wa[a].prefix=
+!0});oe.forEach(function(a){wa[a].prefix=!0;wa[a].infix=!1});pe.forEach(function(a){wa[a].postfix=!0;wa[a].infix=!1});qe.forEach(function(a){wa[a].prefix=!0;wa[a].postfix=!0;wa[a].infix=!0;wa[a].bare=!0})})();Ac.sort(function(a,b){return b.length-a.length});var re="(?:[0-9](?: [0-9])*(?: \\.(?! \\.)(?: [0-9])*)?|\\.(?: [0-9])+)(?: [Ee](?: [+-])?(?: [0-9])+)?".replace(/ /g,"[ \t]*"),se="(?:[\u207a\u207b] )?[\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079](?: [\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079])*".replace(/ /g,
+"[ \t]*"),te="(?:[\u208a\u208b] )?[\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089](?: [\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089])*".replace(/ /g,"[ \t]*"),Bc=function(a,b,c){var d,e,f=0,h="(?:[",m=b.length;for(d=0;d<m;++d)e=b.charCodeAt(d),55296<=e?(h+="]|"+b.charAt(d)+"[",f=56320):(h+=String.fromCharCode(e=f=a[e-32]+f),f+=a[b.charCodeAt(++d)-32],f!==e&&(f!==e+1&&(h+="-"),h+=String.fromCharCode(f)));return h+"]|["+c+"][\udc00-\udfff])"}([2,0,106,3,4,1,6,5,7,11,17,
+8,12,21,9,22,30,10,15,24,25,16,13,42,46,14,18,19,29,37,27,28,35,26,32,36,40,43,47,53,20,48,50,56,33,34,39,51,52,55,63,64,65,68,85,23,31,38,45,49,105,59,66,69,72,88,102,114,117,128,157,191,41,44,54,60,67,70,71,73,74,75,76,80,81,82,83,84,86,87,89,93,94,98,99,107,108,116,122,130,132,134,138,160,165,185,195,196,255,268,277,310,332,339,362,365,390,449,457,470,512,513,541,568,582,619,673,726,768,820,921,991,1164,2684,6581,8453,11171,20949],"T4(4I!)!'!&/ 0 \u0096')2$+! !\u0083$ %## !(! ! ; u \u0086.\u0088 =#!+YoA& 87C% } !5%+%) #!*! <0a,!4B1%'!&-'!1!$!33`HsG$!;!+.52'(#%#- & !$#$!*!9% 2%H''%#- & % % %B# !H *+ - & % $$!;!5%3!,(#%#- & % $$!X% 5!:! '$ #$% ! %$%$ $)W!G( / 2$!> &%C( / . $$!L! %5%;( D#!*!* 4'&*$W + !#&]F %6&]% !#% !#!(# & ! !#% # %1!#$ !/#L!S( @?$\u00817-!*''#$!$%+ ',6!:= !&!#7 \u0090 ##& ! ##D ##B ##& ! ##9 K ##^Y2*V#'$\u009d#5 4&p((+, #2*2*2, 5OC!'!Uy.D !&_)0J<#$,E'4Q/1Pv!|8:&K<9%)E>@7 )@\u0080# #$%1gT\u008e#'#=#'#( ! ! ! 0#P & !$ &$##'',& &d!9!*,b!'!#. !$$(! ! ! # 1##&$'!G%\u00a58 8 \u0084(#$%6= !&!#Q+!*/1& & & & & & & &t!\u0097%E$&%'V( z #&D${:Aj2\u0099\u00a6q\u00a9E\u00a4UZ#\u008d$2)%-8*0#_J+#b#M#(S1 # /0O2[R'$! !6>)/A?+8<!*$ .)$ D3 (-/$!$[ !$%#$#! !4 #1+ 6'#'#'1& & 7 .)c0\u00a86/'I\u00a7\u0093#\\N&6$&! . , $ ! % % \u007fM\u0092;R#Gh)d$ \u0085=4(4,a$'#'#'# \ud800!) 4 : % 9#6@\u0082\u0094?$IIX*5 ((=)<#@'(\ud801!f~N.Of\u008f1-)(\ud802!'#! E %$!#/)/10^: %)-)4nQ(%T!5# AZ?$?C( >?G)-):9*\ud803!`KJ9J\ud804#PriL3>@7M$!6F2#/! !C* 3V& ! # 9 .+8N(#%#- & % $$!;!6$\ud805eF-% !\u008987#=F-!k7x4\ud806\u0087RB!\u0095K\ud808!\u00a2\ud809e\u008a\ud80d!8\ud811!\u009c\ud81a!\u009b+0c<;F*#BH&:\ud81b\u00a0U,!l,\ud82c!%\ud82f!\"&,$++.\ud835!w m %#!#%## ) ! & S ##( & > # $ !$& \u0091#3 3 0 3 0 3 0 3 0 3 (\ud83a!\u008b\ud83b\u0098# A % !#! . # ! !(!'! ! ! % !#! ! ! ! ! % !## & # # ! . 5& $ 5\ud869!\u009f7\u008c\ud86d!\u00a1,g\ud86e!<#\u00a3\ud873!\u009e\ud87e!\u009a",
+"\ud80c\ud840-\ud868\ud86a-\ud86c\ud86f-\ud872"),ue=("#(?: [1-9])?|(?:'|"+Bc+")(?: (?:[0-9']|"+Bc+"))*").replace(/ /g,"[ \t]*"),Yc=["([ \t\n]+)|(//.*)|(/\\*)","("+re+")","("+Ac.map(Xc).join("|")+")","("+"[](){}||".split("").map(Xc).join("|")+")","("+te+")","("+se+")","("+ue+")",'("[^"]*")|($)'].join("|"),ve=new RegExp("[ \t]*".replace(/\*$/,"+"),"g"),Cc="ANY WS COMMENT START_COMMENT NUM OP BRA SUB SUP ID STR EOF".split(" ");(function(){var a=(new RegExp(Yc,"g")).exec("");if(a.hasOwnProperty(Cc.length))throw Error("RE has more groups than expected");
+if(!a.hasOwnProperty(Cc.length-1))throw Error("RE has fewer groups than expected");})();mb.prototype.advanceBy=function(a){this.advanceTo(this.pos+a)};mb.prototype.advanceTo=function(a){for(this.pos=a;this.bols[0]<=a;)this.bol=this.bols.shift(),this.line++};mb.prototype.curPos=function(){return{row:this.line,col:this.pos-this.bol,pos:this.pos}};mb.prototype.nextInternal=function(){var a=this.re.exec(this.input);if(a.index!==this.pos)throw ea("Invalid token",this.curPos(),this.input.substring(this.pos,
+a.index));var b=this.curPos();this.advanceBy(a[0].length);var c=this.curPos(),d;for(d=1;null==a[d];++d);return{start:b,end:c,raw:a[0],text:a[0].replace(ve,""),toktype:Cc[d]}};mb.prototype.next=function(){var a;do if(a=this.nextInternal(),"START_COMMENT"===a.toktype){var b=/\*\/|\/\*/g;b.lastIndex=a.start.pos+2;for(var c=1,d;0<c;)if(d=b.exec(this.input))"/*"===d[0]?++c:--c;else throw ea("Unterminated comment",a.start,a.text);this.re.lastIndex=b.lastIndex;this.advanceTo(b.lastIndex);a.end=this.curPos();
+a.raw=this.input.substring(a.start.pos,a.end.pos);a.text=a.raw;a.toktype="COMMENT"}while("WS"===a.toktype||"COMMENT"===a.toktype);return a};var we={ctype:"void"};Db.prototype.postprocess=function(a){if(null===a)return we;if(a){if("infix"===a.ctype)if(":="===a.oper){var b=a.args[0];if("function"===b.ctype)b.args.forEach(function(c){if(null===c||"variable"!==c.ctype)throw ea("Function argument must be an identifier",c.start||a.start);});else if("variable"!==b.ctype)throw ea(a.oper+" can only be used to define functions or variables",
+a.start);}else if(","===a.oper)throw ea("comma may only be used to delimit list elements",a.start);a.args&&(a.args=a.args.map(this.postprocess,this));if(a.modifs)for(var c in a.modifs)a.modifs[c]=this.postprocess(a.modifs[c]);if("paren"===a.ctype)return a.args[0];if("infix"===a.ctype){if("."===a.oper){if(!a.args[1]||"variable"!==a.args[1].ctype)throw ea("Field name must be identifier",a.start,a.text);a.ctype="field";a.obj=a.args[0];a.key=a.args[1].name;delete a.args}this.infixmap&&(a.impl=this.infixmap[a.oper])}else"variable"===
+a.ctype?this.usedVariables[a.name]=!0:"function"===a.ctype&&(this.usedFunctions[a.oper]=!0)}if("infix"===a.ctype)return{ctype:"infix",oper:String(a.oper),args:[a.args[0],a.args[1]],impl:a.impl};if("variable"===a.ctype)return{ctype:"variable",name:String(a.name)};if("number"===a.ctype)return{ctype:"number",value:{real:+a.value.real,imag:+a.value.imag}};if("string"===a.ctype)return{ctype:"string",value:String(a.value)};if("list"===a.ctype)return{ctype:"list",value:a.value};if("function"===a.ctype)return{ctype:"function",
+oper:String(a.oper),args:a.args,modifs:a.modifs};if("field"===a.ctype)return{ctype:"field",obj:a.obj,key:String(a.key)};throw Error("Unsupported AST node of type "+a.ctype);};Db.prototype.parse=function(a){try{var b=$c(new mb(a));if("EOF"!==b.closedBy.toktype)throw ea("Closing bracket never opened.",b.closedBy.start,b.closedBy.text);return this.postprocess(b.expr)}catch(c){return c.ctype="error",c}};"undefined"!==typeof process&&"undefined"!==typeof module&&"undefined"!==typeof module.exports&&"undefined"===
+typeof window&&(module.exports.Parser=Db,module.exports.Tokenizer=mb,module.exports.unicodeLetters=Bc,module.exports.parse=function(a){return(new Db).parse(a)});var Mc={},Dc;Dc=[0,0,0,0,0,0,0,0,0,0,0,0];t.playsin$1=function(a,b){var c=C(a[0]),d=0;if("number"===c.ctype){var e;void 0!==b.line&&(e=A(b.line),"number"===e.ctype&&(d=Math.floor(e.value.real),0>d&&(d=0),10<d&&(d=10)));c=c.value.real;0!==Dc[d]&&Dc[d].set({freq:c})}return k};var O={printArr:function(a){for(var b=a.value.length,c=[],d=[],e=
+!1,f=0;f<b;f++)c[f]=a.value[f].value.real,d[f]=a.value[f].value.imag,0!==d[f]&&(e=!0);console.log(c);e&&console.log(d)},zero:function(a){for(var b=[],c=m.real(0),d=0;d<a.value.real;d++)b[d]=c;return f.turnIntoCSList(b)},number:function(a,b){var c=O.zero(b);c.value[0]=a;return c},variable:function(a,b){var c=O.zero(b);c.value[0]=a;c.value[1]=m.real(1);return c},add:function(a,b){return f.add(a,b)},sub:function(a,b){return f.sub(a,b)},mult:function(a,b){if(a.value.length!==b.value.length)return console.error("dims don't fit return nada"),
+k;for(var c=a.value.length,d=O.zero(m.real(c)),e=m.real(0),f=0;f<c;f++){for(var h=0;h<=f;h++)e=m.add(e,m.mult(a.value[h],b.value[f-h]));d.value[f]=e;e=m.real(0)}return d},pow:function(a,b){if(0>b.value.real||b.value.real!==Math.floor(b.value.real))return O.root(a,b);for(var c=a,d=1;d<b.value.real;d++)c=O.mult(c,a);return c},root:function(a,b){var c=m.real(0),d=m.real(1),e=m.add(d,b),f=a.value.length,h=O.zero(m.real(f));h.value[0]=m.pow(a.value[0],b);for(var k=c,l,n,q=1;q<f;q++){n=m.real(q);for(var r=
+1;r<=q;r++)l=m.mult(e,m.real(r)),l=m.div(l,n),l=m.sub(l,d),l=m.mult(l,a.value[r]),l=m.mult(l,h.value[q-r]),k=m.add(k,l);k=m.div(k,a.value[0]);h.value[q]=k;k=c}return h},findFirstNoneZero:function(a,b,c){for(var d=Infinity,e=Infinity,f=c;f<a.value.length;f++)if(1E-12<m.abs2(a.value[f]).value.real){d=f;break}for(a=c;a<b.value.length;a++)if(1E-12<m.abs2(b.value[a]).value.real){e=a;break}return[d,e]},div:function(a,b){if(a.value.length!==b.value.length)return console.log("dims don't fit - return nada"),
+k;for(var c=a.value.length,d=m.real(0),e=O.zero(m.real(c)),f=d,h,l=0;l<c;l++){h=O.findFirstNoneZero(a,b,l);l<h[0]&&h[0]===h[1]&&Infinity!==h[0]&&(a.value.splice(l,h[0]),b.value.splice(l,h[0]),e.value.splice(l,h[0]),c-=h[0]);h=a.value[l];for(var n=0;n<l;n++)f=m.add(f,m.mult(e.value[n],b.value[l-n]));h=m.sub(h,f);h=m.div(h,b.value[0]);e.value[l]=h;f=d}return e},exp:function(a){var b=m.real(0),c=a.value.length,d=O.zero(m.real(c)),e=b,f;d.value[0]=m.exp(a.value[0]);for(var h=1;h<c;h++){for(var k=1;k<=
+h;k++)f=m.mult(m.real(k),a.value[k]),f=m.mult(f,d.value[h-k]),e=m.add(e,f);d.value[h]=m.div(e,m.real(h));e=b}return d},log:function(a){var b=m.real(0),c=a.value.length,d=O.zero(m.real(c));d.value[0]=m.log(a.value[0]);for(var e=b,f,h,k=1;k<c;k++){f=a.value[k];for(var l=1;l<k;l++)h=m.mult(m.real(l),d.value[l]),h=m.mult(h,a.value[k-l]),e=m.add(e,h);e=m.div(e,m.real(k));f=m.sub(f,e);f=m.div(f,a.value[0]);d.value[k]=f;e=b}return d},sincos:function(a){var b=m.real(0),c=a.value.length,d=O.zero(m.real(c)),
+e=O.zero(m.real(c));d.value[0]=m.sin(a.value[0]);e.value[0]=m.cos(a.value[0]);for(var f=b,h=b,k,l,n,q=1;q<c;q++){n=m.real(q);for(var r=1;r<=q;r++)l=m.mult(m.real(r),a.value[r]),k=m.mult(l,e.value[q-r]),l=m.mult(l,d.value[q-r]),h=m.add(h,k),f=m.add(f,l);h=m.div(h,n);f=m.div(f,m.neg(n));d.value[q]=h;e.value[q]=f;f=h=b}O.sinsave=d;O.cossave=e;return[d,e]},sin:function(a){return O.sincos(a)[0]},cos:function(a){return O.sincos(a)[1]},faculty:function(a){var b=[];b[0]=m.real(1);for(var c=1,d=1;d<=a.value.real;d++)c*=
+d,b[d]=m.real(c);return b=f.turnIntoCSList(b)},diff:function(a,b,c,d){var e;if("variable"===a.ctype)e=a.name!==b?O.number(A(a),d):O.variable(c,d);else if("number"===a.ctype)e=O.number(a,d);else{if("infix"===a.ctype){if("*"===a.oper)return O.mult(O.diff(a.args[0],b,c,d),O.diff(a.args[1],b,c,d));if("^"===a.oper)return O.pow(O.diff(a.args[0],b,c,d),O.diff(a.args[1],b,c,d).value[0]);if("/"===a.oper)return O.div(O.diff(a.args[0],b,c,d),O.diff(a.args[1],b,c,d));if("+"===a.oper)return O.add(O.diff(a.args[0],
+b,c,d),O.diff(a.args[1],b,c,d));if("-"===a.oper)return O.sub(O.diff(a.args[0],b,c,d),O.diff(a.args[1],b,c,d));console.log("infix not found",a.oper);return k}if("function"===a.ctype){if("exp$1"===a.oper)return O.exp(O.diff(a.args[0],b,c,d));if("log$1"===a.oper)return O.log(O.diff(a.args[0],b,c,d));if("sin$1"===a.oper)return O.sin(O.diff(a.args[0],b,c,d));if("cos$1"===a.oper)return O.cos(O.diff(a.args[0],b,c,d))}else return console.log("ctype not found",a.ctype),k}return e},adevaluate:function(a,b,
+c,d){a=O.diff(a,b,c,d);d=O.faculty(d);for(b=2;b<a.value.length;b++)a.value[b]=m.mult(a.value[b],d.value[b]);return a},autodiff:function(a,b,c,d){for(var e=[],h=c.value.length,m,k=0;k<h;k++)m=O.adevaluate(a,b,c.value[k],d),e[k]=m;return e=f.turnIntoCSList(e)}},y={handleModifs:function(a,b){y.dashing&&y.unSetDash();y.colorraw=null;y.fillcolorraw=null;y.size=null;0>=y.psize&&(y.psize=0);0>=y.lsize&&(y.lsize=0);y.overhang=1;y.dashing=!1;y.isArrow=!1;y.arrowSides="==>";y.arrowposition=1;y.headlen=10;y.arrowShape=
+y.arrowShapes.line;y.alpha=x.drawingstate.alpha;y.fillalpha=0;y.bold="";y.italics="";y.family="sans-serif";y.align=0;y.xOffset=0;y.yOffset=0;y.lineCap="round";y.lineJoin="round";y.miterLimit=10;var c,d;for(c in a){var e=a[c];e&&((d=b[c])?(!0===d&&(d=y.modifHandlers[c]),d(A(e))):console.log("Modifier not supported: "+c))}null!==y.size?y.psize=y.lsize=y.size:(y.psize=x.drawingstate.pointsize,y.lsize=x.drawingstate.linesize);y.dashing&&y.dashing(y.lsize);null!==y.colorraw?y.pointColor=y.lineColor=y.textColor=
+y.makeColor(y.colorraw):1===y.alpha?(y.pointColor=x.drawingstate.pointcolor,y.lineColor=x.drawingstate.linecolor,y.textColor=x.drawingstate.textcolor):(y.pointColor=y.makeColor(x.drawingstate.pointcolorraw),y.lineColor=y.makeColor(x.drawingstate.linecolorraw),y.textColor=y.makeColor(x.drawingstate.textcolorraw));y.black=1===y.alpha?"rgb(0,0,0)":"rgba(0,0,0,"+y.alpha+")";y.fillColor=y.fillcolorraw&&0<y.fillalpha?y.makeColor(y.fillcolorraw,y.fillalpha):null},modifHandlers:{size:function(a){"number"===
+a.ctype&&(y.size=a.value.real,0>y.size&&(y.size=0),1E3<y.size&&(y.size=1E3))},color:function(a){f.isNumberVector(a).value&&3===a.value.length&&(y.colorraw=[a.value[0].value.real,a.value[1].value.real,a.value[2].value.real])},fillcolor:function(a){f.isNumberVector(a).value&&3===a.value.length&&(y.fillcolorraw=[a.value[0].value.real,a.value[1].value.real,a.value[2].value.real])},alpha:function(a){"number"===a.ctype&&(y.alpha=a.value.real)},fillalpha:function(a){"number"===a.ctype&&(y.fillalpha=a.value.real)},
+dashpattern:function(a){if("list"===a.ctype){for(var b=[],c=0,d=0;c<a.value.length;c++)"number"===a.value[c].ctype&&(b[d++]=a.value[c].value.real);y.dashing=y.setDash.bind(null,b)}},dashtype:function(a){if("number"===a.ctype)a=Math.floor(a.value.real);else if("string"===a.ctype)a=a.value;else return;if(a=y.dashTypes[a])y.dashing=y.setDash.bind(null,a)},dashing:function(a){"number"===a.ctype&&(a=Math.floor(a.value.real),y.dashing=y.setDash.bind(null,[2*a,a]))},overhang:function(a){"number"===a.ctype&&
+(y.overhang=y.overhang*a.value.real+(1-y.overhang)*(1-a.value.real))},arrow:function(a){"boolean"===a.ctype?y.isArrow=a.value:console.error("arrow needs to be of type boolean")},arrowshape:function(a){"string"!==a.ctype?console.error("arrowshape needs to be of type string"):y.arrowShapes.hasOwnProperty(a.value)?(y.arrowShape=y.arrowShapes[a.value],y.isArrow=!0,y.arrowShape.deprecated&&(console.log("arrowshape "+a.value+" is deprecated, use "+y.arrowShape.deprecated+" instead."),y.arrowShape.deprecated=
+null)):(a=Object.keys(y.arrowShapes),a.sort(),a=a.join(", "),console.error("arrowshape needs to be one of "+a))},arrowsides:function(a){"string"!==a.ctype?console.error("arrowsides is not of type string"):"==>"!==a.value&&"<==>"!==a.value&&"<=="!==a.value?console.error("arrowsides is unknows"):(y.arrowSides=a.value,y.isArrow=!0)},arrowposition:function(a){"number"!==a.ctype?console.error("arrowposition is not of type number"):0>a.value.real?console.error("arrowposition has to be positive"):1<a.value.real?
+y.overhang=y.overhang*a.value.real+(1-y.overhang)*(1-a.value.real):(y.arrowposition=a.value.real,y.isArrow=!0)},arrowsize:function(a){"number"!==a.ctype?console.error("arrowsize is not of type number"):0>a.value.real?console.error("arrowsize has to be positive"):y.headlen*=a.value.real},bold:function(a){"boolean"===a.ctype&&a.value&&(y.bold="bold ")},italics:function(a){"boolean"===a.ctype&&a.value&&(y.italics="italic ")},family:function(a){"string"===a.ctype&&(y.family=a.value)},align:function(a){"string"===
+a.ctype&&(a=a.value,"left"===a&&(y.align=0),"right"===a&&(y.align=1),"mid"===a&&(y.align=.5))},x_offset:function(a){"number"===a.ctype&&(y.xOffset=a.value.real)},y_offset:function(a){"number"===a.ctype&&(y.yOffset=a.value.real)},offset:function(a){"list"===a.ctype&&2===a.value.length&&"number"===a.value[0].ctype&&"number"===a.value[1].ctype&&(y.xOffset=a.value[0].value.real,y.yOffset=a.value[1].value.real)},lineCap:function(a){"string"!==a.ctype||"round"!==a.value&&"square"!==a.value&&"butt"!==a.value||
+(y.lineCap=a.value)},lineJoin:function(a){"string"!==a.ctype||"round"!==a.value&&"bevel"!==a.value&&"miter"!==a.value||(y.lineJoin=a.value)},miterLimit:function(a){"number"===a.ctype&&0<a.value.real&&(y.miterLimit=Math.round(a.value.real))}},lineModifs:{size:!0,color:!0,alpha:!0,dashpattern:!0,dashtype:!0,dashing:!0,overhang:!0,arrow:!0,arrowshape:!0,arrowsides:!0,arrowposition:!0,arrowsize:!0,lineCap:!0,lineJoin:!0,miterLimit:!0},pointModifs:{size:!0,color:!0,alpha:!0}};y.pointAndLineModifs=y.lineModifs;
+y.conicModifs={size:!0,color:!0,alpha:!0,fillcolor:!0,fillalpha:!0,lineCap:!0,lineJoin:!0,miterLimit:!0};y.textModifs={size:!0,color:!0,alpha:!0,bold:!0,italics:!0,family:!0,align:!0,x_offset:!0,y_offset:!0,offset:!0};y.makeColor=function(a,b){void 0===b&&(b=y.alpha);return"rgba("+Math.floor(255*a[0])+","+Math.floor(255*a[1])+","+Math.floor(255*a[2])+","+b+")"};y.preDrawCurve=function(){z.lineWidth=y.lsize;z.lineCap=y.lineCap;z.lineJoin=y.lineJoin;z.miterLimit=y.miterLimit;z.strokeStyle=y.lineColor};
+y.arrowShapes={"default":{close:!1,fill:!1,ratio:1,deprecated:"line"},line:{close:!1,fill:!1,ratio:1},empty:{close:!0,fill:!1,ratio:1},hollow:{close:!0,fill:!1,ratio:1,deprecated:"empty"},full:{close:!0,fill:!0,ratio:1},jet:{close:!0,fill:!0,ratio:1.5},delta:{close:!0,fill:!0,ratio:1.5,deprecated:"jet"}};y.clipSegment=function(a,b){var c=b.x-a.x,d=b.y-a.y,e=y.clipLineCore(-d,c,a.x*b.y-b.x*a.y);if(2!==e.length)return[];var f=e[0],e=e[1],h=1/(c*c+d*d),m=((f.x-a.x)*c+(f.y-a.y)*d)*h,c=((e.x-a.x)*c+(e.y-
+a.y)*d)*h;0>m&&(f=a);1<m&&(f=b);0>c&&(e=a);1<c&&(e=b);return f===e?[]:[f,e]};y.drawsegcore=function(a,b){function c(a,b,c,g){var d=a-g*r+.5*t,e=b-g*t-.5*r,f=a-g*r-.5*t;g=b-g*t+.5*r;z.beginPath();y.arrowShape.fill&&(z.lineWidth=y.lsize/2);z.moveTo(d,e);z.lineTo(a,b);z.lineTo(f,g);y.arrowShape.close&&(z.fillStyle=y.lineColor,z.lineTo(a-c*r,b-c*t),z.closePath(),y.arrowShape.fill&&z.fill());z.stroke()}var d=x.drawingstate.matrix,e=a.x*d.a-a.y*d.b+d.tx,f=a.x*d.c-a.y*d.d-d.ty,h=b.x*d.a-b.y*d.b+d.tx,m=b.x*
+d.c-b.y*d.d-d.ty,k=y.overhang,l=1-k,d=k*e+l*h,n=k*f+l*m,q=k*h+l*e,k=k*m+l*f;if(0>d||d>W||0>n||n>V||0>q||q>W||0>k||k>V){k=y.clipSegment({x:d,y:n},{x:q,y:k});if(2!==k.length||.01>y.lsize)return;d=k[0].x;n=k[0].y;q=k[1].x;k=k[1].y}y.preDrawCurve();if(!y.isArrow||e===f&&h===m).01>y.lsize||(z.beginPath(),z.moveTo(d,n),z.lineTo(q,k),z.stroke());else{var e=h-e,f=m-f,h=y.headlen/Math.sqrt(e*e+f*f),r=e*h,t=f*h,m=y.arrowposition,l=1-m,f=m*d+l*q,e=m*n+l*k,h=m*q+l*d,m=m*k+l*n,l=y.arrowSides;z.beginPath();y.arrowShape.close?
+("<==>"===l||"<=="===l?(1>y.arrowposition&&(z.moveTo(d,n),z.lineTo(f,e)),z.moveTo(f+r,e+t)):z.moveTo(d,n),"==>"===l||"<==>"===l?(z.lineTo(h-r,m-t),1>y.arrowposition&&(z.moveTo(h,m),z.lineTo(q,k))):z.lineTo(q,k)):(z.moveTo(d,n),z.lineTo(q,k));z.stroke();"==>"!==l&&"<==>"!==l||c(h,m,1,y.arrowShape.ratio);"<=="!==l&&"<==>"!==l||c(f,e,-1,-y.arrowShape.ratio)}};y.drawpoint=function(a){var b=x.drawingstate.matrix,c=a.x*b.a-a.y*b.b+b.tx;a=a.x*b.c-a.y*b.d-b.ty;z.lineWidth=.3*y.psize;z.beginPath();z.arc(c,
+a,y.psize,0,2*Math.PI);z.fillStyle=y.pointColor;z.fill();z.beginPath();z.arc(c,a,1.15*y.psize,0,2*Math.PI);z.fillStyle=y.black;z.strokeStyle=y.black;z.stroke()};y.clipLineCore=function(a,b,c){var d=Math.SQRT1_2*y.lsize,e=0-d,f=W+d,h=0-d,d=V+d,m=0>e*a+h*b+c,k=0>f*a+h*b+c,l=0>e*a+d*b+c,n=0>f*a+d*b+c,q=[];m!==k&&q.push({x:(-c-b*h)/a,y:h});k!==n&&q.push({x:f,y:(-c-a*f)/b});l!==n&&q.push({x:(-c-b*d)/a,y:d});m!==l&&q.push({x:e,y:(-c-a*e)/b});return q};y.clipLine=function(a){a=f.normalizeMax(f.productVM(a,
+x.toMat()));return y.clipLineCore(a.value[0].value.real,a.value[1].value.real,a.value[2].value.real)};y.drawline=function(a){f._helper.isAlmostReal(a)&&(a=y.clipLine(a),2===a.length&&.01<=y.lsize&&(y.preDrawCurve(),z.beginPath(),z.moveTo(a[0].x,a[0].y),z.lineTo(a[1].x,a[1].y),z.stroke()))};y.drawRaySegment=function(a,b){var c=D.extractPoint(a),d=D.extractPoint(b);if(c.ok&&d.ok){var e=c.x-d.x,f=c.y-d.y,h=25E3/x.drawingstate.matrix.sdet/Math.sqrt(e*e+f*f),e=e*h,f=f*h;y.drawsegcore(c,{x:c.x+e,y:c.y+
+f});y.drawsegcore(d,{x:d.x-e,y:d.y-f})}};y.dashTypes={solid:[],dashed:[10,10],tightdash:[10,4],dotted:[1,3],dashdot:[10,5,1,5],"dashvalue.solid":[],"dashvalue.dashed":[10,10],"dashvalue.tightdash":[10,4],"dashvalue.dotted":[1,3],"dashvalue.dashdot":[10,5,1,5],0:[],1:[10,10],2:[10,4],3:[1,3],4:[10,5,1,5]};y.setDash=function(a,b){var c=Math.sqrt(b);a=a.slice();for(var d=0;d<a.length;d++)a[d]*=c;z.webkitLineDash=a;z.setLineDash(a);z.mozDash=a};y.unSetDash=function(){z.webkitLineDash=[];z.setLineDash([]);
+z.mozDash=[]};bd.prototype={set fillStyle(a){var b=this;Qb(a,function(a,d,e,f){b._fill="#"+nb(a.toString(16),2)+nb(d.toString(16),2)+nb(e.toString(16),2);b._fillOpacity=255===f?null:f})},set strokeStyle(a){var b=this;Qb(a,function(a,d,e,f){b._stroke="#"+nb(a.toString(16),2)+nb(d.toString(16),2)+nb(e.toString(16),2);b._strokeOpacity=255===f?null:f})},clearRect:function(){},beginPath:function(){this._path=[]},_pathcmd:function(){this._path.push.apply(this._path,arguments)},closePath:function(){this._pathcmd("Z")},
+moveTo:function(a,b){this._pathcmd("M",a,b)},lineTo:function(a,b){this._pathcmd("L",a,b)},bezierCurveTo:function(a,b,c,d,e,f){this._pathcmd("C",a,b,c,d,e,f)},quadraticCurveTo:function(a,b,c,d){this._pathcmd("Q",a,b,c,d)},arc:function(a,b,c,d,e,f){var h=c*Math.cos(d)+a,m=c*Math.sin(d)+b,k=c*Math.cos(e)+a,l=c*Math.sin(e)+b;e=f?d-e:e-d;e>=2*Math.PI?this._pathcmd(this._path.length?"L":"M",h,m,"A",c,c,0,0,f?1:0,a-c*Math.cos(d),b-c*Math.sin(d),"A",c,c,0,0,f?1:0,h,m):this._pathcmd(this._path.length?"L":
+"M",h,m,"A",c,c,0,e>Math.PI?1:0,f?1:0,k,l)},rect:function(a,b,c,d){this._pathcmd("M",a,b,"h",c,"v",d,"h",-c,"z")},_cmd:function(a){1!==this.globalAlpha?(this._body.push('<g opacity="'+this.globalAlpha+'">'),this._body.push(a),this._body.push("</g>")):this._body.push(a)},_attrs:function(a){var b="",c;for(c in a)null!==a[c]&&(b+=" "+c+'="'+a[c]+'"');return b},fill:function(){this._cmd("<path"+this._attrs({d:this._path.join(" "),fill:this._fill,"fill-opacity":this._fillOpacity})+"/>")},stroke:function(){this._cmd("<path"+
+this._attrs({d:this._path.join(" "),stroke:this._stroke,"stroke-opacity":this._strokeOpacity,"stroke-width":this.lineWidth,"stroke-linecap":this.lineCap,"stroke-linejoin":this.lineJoin,"stroke-miterlimit":"miter"===this.lineJoin?this.miterLimit:null})+"/>")},clip:function(){++this._clipIndex;this._body.push('<clipPath id="clip'+this._clipIndex+'"><path d="'+this._path.join(" ")+'"/></clipPath>','<g clip-path="url(#clip'+this._clipIndex+')">');this._saveStack[this._saveStack.length-1]+="</g>"},save:function(){this._saveStack.push("")},
+restore:function(){this._body.push(this._saveStack.pop());0===this._saveStack.length&&this._saveStack.push("")},_transform:function(a){this._body.push('<g transform="'+a+'">');this._saveStack[this._saveStack.length-1]+="</g>"},translate:function(a,b){this._transform("translate("+a+" "+b+")")},rotate:function(a){this._transform("rotate("+Math.PI/180*a+")")},scale:function(a,b){this._transform("scale("+a+" "+b+")")},transform:function(a,b,c,d,e,f){this._transform("matrix("+[a,b,c,d,e,f].join(" ")+")")},
+drawImage:function(a,b,c){if(3!==arguments.length)throw Error("SvgWriterContext only supports 3-argument version of drawImage");var d=this._imgcache.indexOf(a);if(-1===d){var d=this._imgcache.length,e;e=a.cachedDataURL?a.cachedDataURL:dd(a);this._defs.push('<image id="img'+d+'" x="0" y="0" width="'+a.width+'" height="'+a.height+'" xlink:href="'+e+'"/>');this._imgcache.push(a)}this._cmd('<use x="'+b+'" y="'+c+'" xlink:href="#img'+d+'"/>')},toBlob:function(){for(;1<this._saveStack.length||""!==this._saveStack[0];)this.restore();
+var a='<?xml version="1.0" encoding="UTF-8" standalone="no"?>\n<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="'+this.width+'px" height="'+this.height+'px">\n'+this._defs.join("\n")+'\n</defs>\n<g stroke="none" fill="none">\n'+this._body.join("\n")+"\n</g>\n</svg>\n";return new Blob([a],{type:"image/svg+xml"})}};cd.prototype={_cmd:function(){this._body.push(Array.prototype.join.call(arguments," "))},_setAlpha:function(a,b,c){var d=Math.round(255*
+a*this._globalAlpha);b+=d;this._extGState[b]="<< /"+c+" "+d/255+" >>";this._cmd("/"+b,"gs");return a},set globalAlpha(a){this._globalAlpha=a;this._setAlpha(this._strokeAlpha,"As","CA");this._setAlpha(this._fillAlpha,"Af","ca")},set fillStyle(a){var b=this;Qb(a,function(a,d,e,f){b._cmd(a/255,d/255,e/255,"rg");b._setAlpha(b._fillAlpha=f,"Af","ca")})},set strokeStyle(a){var b=this;Qb(a,function(a,d,e,f){b._cmd(a/255,d/255,e/255,"RG");b._setAlpha(b._strokeAlpha=f,"As","CA")})},set lineWidth(a){this._cmd(a,
+"w")},set lineCap(a){this._cmd({butt:0,round:1,square:2}[a],"J")},set lineJoin(a){this._cmd({miter:0,round:1,bevel:2}[a],"j")},set miterLimit(a){this._cmd(a,"M")},clearRect:function(){},beginPath:function(){this._pathUsed=!1},closePath:function(){this._cmd("h")},moveTo:function(a,b){this._cmd(this._xPos=a,this._yPos=-b,"m")},lineTo:function(a,b){this._cmd(this._xPos=a,this._yPos=-b,"l")},bezierCurveTo:function(a,b,c,d,e,f){this._cmd(a,-b,c,-d,this._xPos=e,this._yPos=-f,"c")},quadraticCurveTo:function(a,
+b,c,d){this.bezierCurveTo((2*a+this._xPos)/3,(2*b-this._yPos)/3,(c+2*a)/3,(d+2*b)/3,c,d)},_kappa:.5522847498307935,arc:function(a,b,c,d,e,f){if(0===d&&e===2*Math.PI)d=this._kappa*c,this.moveTo(a+c,b),this.bezierCurveTo(a+c,b+d,a+d,b+c,a,b+c),this.bezierCurveTo(a-d,b+c,a-c,b+d,a-c,b),this.bezierCurveTo(a-c,b-d,a-d,b-c,a,b-c),this.bezierCurveTo(a+d,b-c,a+c,b-d,a+c,b);else throw Error("PdfWriterContext.arc only supports full circles");},rect:function(a,b,c,d){this._cmd(a,-b,c,-d,"re")},_usePath:function(a){if(this._pathUsed){var b=
+this._body[this._pathUsed],c={"S + f":"B","f + S":"B","W n + S":"W S","W n + f":"W f","S + W n":"W S","f + W n":"W f","B + W n":"W B","W S + f":"W B","W f + S":"W B"}[b+" + "+a];if(!c)throw Error("Don't know how to combine '"+b+"' and '"+a+"'");this._body.splice(this._pathUsed,1);a=c}this._pathUsed=this._body.length;this._cmd(a)},fill:function(){this._usePath("f")},stroke:function(){this._usePath("S")},clip:function(){this._usePath("W n")},save:function(){this._cmd("q")},restore:function(){this._cmd("Q")},
+translate:function(a,b){this.transform(1,0,0,1,a,b)},rotate:function(a){var b=Math.cos(a);a=Math.sin(a);this.transform(b,a,-a,b,0,0)},scale:function(a,b){this.transform(a,0,0,b,0,0)},transform:function(a,b,c,d,e,f){this._cmd(a,-b,-c,d,e,-f,"cm")},_png:function(a){if("data:image/png;base64,"!==a.substr(0,22))return{error:"Not a base64-encoded PNG file"};a=Rd(a.substr(22));var b=Sd(a);console.log("PNG chunks:",b.map(function(a){return a.type}));if("IHDR"!==b[0].type)throw Error("Image does not start with an IHDR");
+var c=b[0].data;a=(c[0]<<24|c[1]<<16|c[2]<<8|c[3])>>>0;var d=(c[4]<<24|c[5]<<16|c[6]<<8|c[7])>>>0,e=c[8],f=c[9],h=0===(f&2),m=0!==(f&4),k=c[10],l=c[11],c=c[12];if(0!==k)throw Error("Unsupported PNG compression method: "+k);if(0!==l)throw Error("Unsupported PNG filter method: "+l);if(0!==c)return{error:"Interlaced image not supported"};if(0!==(f&1))return{error:"Indexed PNG image not supported"};l=null;f=h?1:3;k=b.filter(function(a){return"IDAT"===a.type}).map(function(a){return a.data});if(m){m=window.pako;
+l=new m.Inflate;for(b=0;b<k.length;++b)l.push(k[b],b+1===k.length);if(l.err)throw Error(l.err);l=l.result;c=e>>>3;if(l.length!==d*(a*(f+1)*c+1))throw Error("Data length mismatch");for(var n=f*c,k=new Uint8Array(d*(a*n+1)),q=new Uint8Array(d*(a*c+1)),r=0,t=0,u=0,v=0;v<d;++v){k[t++]=q[u++]=l[r++];for(var w=0;w<a;++w){for(b=0;b<n;++b)k[t++]=l[r++];for(b=0;b<c;++b)q[u++]=l[r++]}}if(r!==l.length||t!==k.length||u!==q.length)throw Error("Seems we garbled our index computation somehow");q=m.deflate(q);l=
+this._strm({Type:"/XObject",Subtype:"/Image",Width:a,Height:d,ColorSpace:"/DeviceGray",BitsPerComponent:e,Filter:"/FlateDecode",DecodeParms:this._dict({Predictor:15,Colors:1,BitsPerComponent:e,Columns:a})},q).ref;k=[m.deflate(k)]}var x=0;k.forEach(function(a){x+=a.length});return this._obj([this._dict({Type:"/XObject",Subtype:"/Image",Name:"/img"+this._imgcache.length,Width:a,Height:d,ColorSpace:h?"/DeviceGray":"/DeviceRGB",SMask:l,BitsPerComponent:e,Length:x,Filter:"/FlateDecode",DecodeParms:this._dict({Predictor:15,
+Colors:f,BitsPerComponent:e,Columns:a})}),"\nstream\n"].concat(k,["\nendstream"]))},drawImage:function(a,b,c){if(3!==arguments.length)throw Error("PdfWriterContext only supports 3-argument version of drawImage");var d=this._imgcache.indexOf(a);if(-1===d){d=this._imgcache.length;this._imgcache.push(a);var e=this._png(a.cachedDataURL||"");e.hasOwnProperty("error")&&(e=this._png(dd(a)));if(e.hasOwnProperty("error"))throw Error(e.error);this._xobjects["img"+d]=e.ref}this._cmd("q");this._setAlpha(1,"Af",
+"ca");this._cmd(a.width,0,0,a.height,b,-c-a.height,"cm");this._cmd("/img"+d,"Do");this._cmd("Q")},_dict:function(a){var b="<<",c;for(c in a)b+=" /"+c+" "+a[c];return b+" >>"},_obj:function(a,b){b||(b=this._nextIndex++);Array.isArray(a)||(a=[this._dict(a)]);a.index=b;a.ref=b+" 0 R";a.offset=this._offset;var c=0;a.unshift(b+" 0 obj\n");a.push("\nendobj\n");for(var d=0;d<a.length;++d)c+=a[d].length;this._offset+=c;this._objects.push(a);return a},_strm:function(a,b,c){a.Length=b.length;return this._obj([this._dict(a),
+"\nstream\n",b,"\nendstream"],c)},toBlob:function(){var a;a="["+[0,-this.height,this.width,0].join(" ")+"]";this._obj({Type:"/Catalog",Pages:"2 0 R"},1);this._obj({Type:"/Pages",Kids:"[3 0 R]",Count:1},2);this._obj({Type:"/Page",Parent:"2 0 R",MediaBox:a,Contents:"4 0 R",Resources:this._dict({ProcSet:"[/PDF /Text /ImageB /ImageC /ImageI]",XObject:this._dict(this._xobjects),ExtGState:this._dict(this._extGState)})},3);var b=this._body.join("\n"),c=new Uint8Array(b.length);for(a=0;a<b.length;++a)c[a]=
+b.charCodeAt(a)&255;b=window.pako.deflate(c);this._strm({Filter:"/FlateDecode"},b,4);var b=this._objects,d=[];for(a=1;a<b.length;++a)d[b[a].index]=b[a];c="xref\n0 "+d.length+"\n";for(a=0;a<d.length;++a)c=d[a]?c+(nb(String(d[a].offset),10)+" 00000 n \n"):c+"0000000000 65535 f \n";a="trailer\n"+this._dict({Size:d.length,Root:"1 0 R"})+"\nstartxref\n"+this._offset+"\n%%EOF\n";b=Array.prototype.concat.apply([],b);b.push(c,a);return new Blob(b,{type:"application/pdf"})}};var Eb=null;kb.push(ed);qa.exportSVG=
+function(){fd(bd,window.open("about:blank","_blank"))};qa.exportPDF=function(){var a=window.open("about:blank","_blank");va.loadScript("pako","pako.min.js",function(){fd(cd,a)})};var oc="Move",Gb,ta=[],Qa=0,Ud=0,tb=0,F={Delete:{}};F.Delete.actions=[];F.Delete.actions[0]={};F.Delete.actions[0].event="mousedown";F.Delete.actions[0].tooltip="...";F.Delete.actions[0]["do"]=function(){aa=Fb(U);null!==aa&&kd(aa.mover.name);return!0};F.Move={};F.Move.actions=[];F.Move.actions[0]={};F.Move.actions[0].event=
+"mousedown";F.Move.actions[0].tooltip="Move free elements by dragging the mouse";F.Move.actions[0]["do"]=function(){for(var a=U,b=null,c=1E6,d,e=0;e<u.free.length;e++){var h=u.free[e];if(!h.pinned&&!1!==h.visible&&!0!==h.tmp){var k,l,n,q=x.drawingstate.matrix.sdet;if("P"===h.kind){l=f.normalizeZ(h.homog);if(!f._helper.isAlmostReal(l))continue;k=l.value[0].value.real-a.x;l=l.value[1].value.real-a.y;n=Math.sqrt(k*k+l*l);if(h.narrow&&n>("number"===typeof h.narrow?h.narrow:20)/q)continue}else if("C"===
+h.kind)l=u.csnames[h.args[0]],n=h.radius,k=m.div(l.homog.value[0],l.homog.value[2]).value.real,l=m.div(l.homog.value[1],l.homog.value[2]).value.real,k-=a.x,l-=a.y,n=Math.sqrt(k*k+l*l)-n.value.real,l=k=0,0>n&&(n=-n),n+=30/q;else if("L"===h.kind)k=h.homog,n=m,l=n.add(n.mult(k.value[0],n.conjugate(k.value[0])),n.mult(k.value[1],n.conjugate(k.value[1]))),l=f.scaldiv(n.sqrt(l),k),n=l.value[0].value.real*a.x+l.value[1].value.real*a.y+l.value[2].value.real,k=-l.value[0].value.real*n,l=-l.value[1].value.real*
+n,0>n&&(n=-n),n+=25/q;else if("Text"===h.kind){if(!h._bbox)continue;l=x.from(a.x,a.y,1);k=Math.max(0,l[0]-h._bbox.right,h._bbox.left-l[0]);l=Math.max(0,l[1]-h._bbox.bottom,h._bbox.top-l[1]);n=Math.sqrt(k*k+l*l);if(20<n)continue;n/=q;l=f.normalizeZ(h.homog);if(!f._helper.isAlmostReal(l))continue;k=l.value[0].value.real-a.x;l=l.value[1].value.real-a.y}else continue;n<c+.2/q&&(c=n,b=h,d={x:k,y:l})}}console.log("Moving "+(b?b.name:"nothing"));aa=null===b?null:{mover:b,offset:d,prev:{x:a.x,y:a.y}};return!0};
+F.Point={};F.Point.actions=[];F.Point.actions[0]={};F.Point.actions[0].event="mousedown";F.Point.actions[0].tooltip="Add a single point with the mouse";F.Point.actions[0]["do"]=function(){Da({type:"Free",name:Pa(),labeled:!0,pos:[sa[0],sa[1],1]});return!0};F.Mid={};F.Mid.actions=[];F.Mid.actions[0]={};F.Mid.actions[0].event="mousedown";F.Mid.actions[0].tooltip="Construct two points and their midpoint by dragging";F.Mid.actions[0]["do"]=function(){ob();return!0};F.Mid.actions[1]={};F.Mid.actions[1].event=
+"mousemove";F.Mid.actions[1]["do"]=function(){Rb("Mid");return!0};F.Mid.actions[2]={};F.Mid.actions[2].event="mouseup";F.Mid.actions[2]["do"]=function(){ub();return!0};F.Circle={};F.Circle.actions=[];F.Circle.actions[0]={};F.Circle.actions[0].event="mousedown";F.Circle.actions[0].tooltip="Construct two points and a circle by dragging the mouse";F.Circle.actions[0]["do"]=function(){ob();return!0};F.Circle.actions[1]={};F.Circle.actions[1].event="mousemove";F.Circle.actions[1]["do"]=function(){Rb("CircleMP");
+return!0};F.Circle.actions[2]={};F.Circle.actions[2].event="mouseup";F.Circle.actions[2]["do"]=function(){ub();return!0};F.Compass={};F.Compass.actions=[];F.Compass.actions[0]={};F.Compass.actions[0].event="mousedown";F.Compass.actions[0].tooltip="...";F.Compass.actions[0]["do"]=function(){ob();return!0};F.Compass.actions[1]={};F.Compass.actions[1].event="mousedown";F.Compass.actions[1].tooltip="...";F.Compass.actions[1]["do"]=function(){ob();return!0};F.Compass.actions[2]={};F.Compass.actions[2].event=
+"mousedown";F.Compass.actions[2].tooltip="...";F.Compass.actions[2]["do"]=function(){ob();Da({type:"Compass",name:Pa(),labeled:!0,args:[ta[0].name,ta[1].name,ta[2].name]});return!0};F.Line={};F.Line.actions=[];F.Line.actions[0]={};F.Line.actions[0].event="mousedown";F.Line.actions[0].tooltip="Construct two points and their connecting line by dragging the mouse";F.Line.actions[0]["do"]=function(){ob();return!0};F.Line.actions[1]={};F.Line.actions[1].event="mousemove";F.Line.actions[1]["do"]=function(){Rb("Join");
+return!0};F.Line.actions[2]={};F.Line.actions[2].event="mouseup";F.Line.actions[2]["do"]=function(){ub();return!0};F.Segment={};F.Segment.actions=[];F.Segment.actions[0]={};F.Segment.actions[0].event="mousedown";F.Segment.actions[0].tooltip="Draw a segment by dragging the mouse";F.Segment.actions[0]["do"]=function(){ob();return!0};F.Segment.actions[1]={};F.Segment.actions[1].event="mousemove";F.Segment.actions[1]["do"]=function(){Rb("Segment");return!0};F.Segment.actions[2]={};F.Segment.actions[2].event=
+"mouseup";F.Segment.actions[2]["do"]=function(){ub();return!0};F.Parallel={};F.Parallel.actions=[];F.Parallel.actions[0]={};F.Parallel.actions[0].event="mousedown";F.Parallel.actions[0].tooltip="Construct a parallel line by dragging a line";F.Parallel.actions[0]["do"]=function(){return id()};F.Parallel.actions[1]={};F.Parallel.actions[1].event="mousemove";F.Parallel.actions[1]["do"]=function(){var a={type:"Free",name:Pa(),labeled:!0,pos:[sa[0],sa[1],1],tmp:!0},a=Da(a);Gb=Da({type:"Para",name:Pa(),
+labeled:!0,args:[ta[0].name,a.name]});qc(a);return!0};F.Parallel.actions[2]={};F.Parallel.actions[2].event="mouseup";F.Parallel.actions[2]["do"]=function(){ub();return!0};F.Orthogonal={};F.Orthogonal.actions=[];F.Orthogonal.actions[0]={};F.Orthogonal.actions[0].event="mousedown";F.Orthogonal.actions[0].tooltip="Construct a orthogonal line by dragging a line";F.Orthogonal.actions[0]["do"]=function(){if(id()){var a={type:"Free",name:Pa(),labeled:!0,pos:[sa[0],sa[1],1],tmp:!0},a=Da(a);Gb=Da({type:"Perp",
+name:Pa(),labeled:!0,args:[ta[0].name,a.name]});qc(a);return!0}return!1};F.Orthogonal.actions[1]={};F.Orthogonal.actions[1].event="mouseup";F.Orthogonal.actions[1]["do"]=function(){ub();return!0};F.Intersection={};F.Intersection.actions=[];F.Intersection.actions[0]={};F.Intersection.actions[0].event="mousedown";F.Intersection.actions[0].tooltip="Select two elements to define their intersection";F.Intersection.actions[0]["do"]=function(){return jd()};F.Intersection.actions[1]={};F.Intersection.actions[1].event=
+"mousedown";F.Intersection.actions[1]["do"]=function(){return jd()?(Gb=Da({type:"Meet",name:Pa(),labeled:!0,args:[ta[0].name,ta[1].name]}),!0):!1};var Xa={},x={drawingstate:{}};x.drawingstate.linecolor="rgb(0,0,255)";x.drawingstate.linecolorraw=[0,0,1];x.drawingstate.pointcolor="rgb(0,255,0)";x.drawingstate.pointcolorraw=[0,1,0];x.drawingstate.textcolor="rgb(0,0,0)";x.drawingstate.textcolorraw=[0,0,0];x.drawingstate.alpha=1;x.drawingstate.pointsize=4;x.drawingstate.linesize=1;x.drawingstate.textsize=
+null;x.drawingstate.matrix={};x.drawingstate.matrix.a=25;x.drawingstate.matrix.b=0;x.drawingstate.matrix.c=0;x.drawingstate.matrix.d=25;x.drawingstate.matrix.tx=250.5;x.drawingstate.matrix.ty=250.5;x.drawingstate.matrix.det=x.drawingstate.matrix.a*x.drawingstate.matrix.d-x.drawingstate.matrix.b*x.drawingstate.matrix.c;x.drawingstate.matrix.sdet=Math.sqrt(x.drawingstate.matrix.det);x.drawingstate.initialmatrix={};x.drawingstate.initialmatrix.a=x.drawingstate.matrix.a;x.drawingstate.initialmatrix.b=
+x.drawingstate.matrix.b;x.drawingstate.initialmatrix.c=x.drawingstate.matrix.c;x.drawingstate.initialmatrix.d=x.drawingstate.matrix.d;x.drawingstate.initialmatrix.tx=x.drawingstate.matrix.tx;x.drawingstate.initialmatrix.ty=x.drawingstate.matrix.ty;x.drawingstate.initialmatrix.det=x.drawingstate.matrix.det;x.drawingstate.initialmatrix.sdet=x.drawingstate.matrix.sdet;x.clone=function(a){if(null===a||"object"!==typeof a)return a;var b=a.constructor(),c;for(c in a)b[c]=x.clone(a[c]);return b};Xa.backup=
+x.clone(x.drawingstate);Xa.stack=[];x.clone(x.drawingstate);x.reset=function(){x.drawingstate.matrix.a=x.drawingstate.initialmatrix.a;x.drawingstate.matrix.b=x.drawingstate.initialmatrix.b;x.drawingstate.matrix.c=x.drawingstate.initialmatrix.c;x.drawingstate.matrix.d=x.drawingstate.initialmatrix.d;x.drawingstate.matrix.tx=x.drawingstate.initialmatrix.tx;x.drawingstate.matrix.ty=x.drawingstate.initialmatrix.ty;x.drawingstate.matrix.det=x.drawingstate.initialmatrix.det;x.drawingstate.matrix.sdet=x.drawingstate.initialmatrix.sdet};
+x.from=function(a,b,c){a/=c;b/=c;c=x.drawingstate.matrix;return[a*c.a-b*c.b+c.tx,a*c.c-b*c.d-c.ty]};x.to=function(a,b){var c=x.drawingstate.matrix,d=a-c.tx,e=b+c.ty;return[(d*c.d-e*c.b)/c.det,-(-d*c.c+e*c.a)/c.det,1]};x.toMat=function(){var a=x.drawingstate.matrix;return f.realMatrix([[a.d,-a.b,-a.tx*a.d-a.ty*a.b],[a.c,-a.a,-a.tx*a.c-a.ty*a.a],[0,0,a.det]])};x.dumpTrafo=function(){function a(a){return Math.round(1E3*a)/1E3}var b=x.drawingstate.matrix;console.log("a:"+a(b.a)+" b:"+a(b.b)+" c:"+a(b.c)+
+" d:"+a(b.d)+" tx:"+a(b.ty)+" ty:"+a(b.tx))};x.setMat=function(a,b,c,d,e,f){var h=x.drawingstate.matrix;h.a=a;h.b=b;h.c=c;h.d=d;h.tx=e;h.ty=f;h.det=a*d-b*c;h.sdet=Math.sqrt(h.det)};x.scaleAndOrigin=function(a,b,c){x.setMat(a,0,0,a,b,c)};x.visibleRect=function(a,b,c,d){var e=c-a,f=b-d,e=W*f<V*e?W/e:V/f;x.setMat(e,0,0,e,(W-e*(a+c))/2,(V-e*(b+d))/2)};x.applyMat=function(a,b,c,d,e,f){var h=x.drawingstate.matrix;x.setMat(h.a*a+h.c*b,h.b*a+h.d*b,h.a*c+h.c*d,h.b*c+h.d*d,h.a*e+h.c*f+h.tx,h.b*e+h.d*f+h.ty)};
+x.translate=function(a,b){x.applyMat(1,0,0,1,a,b)};x.rotate=function(a){var b=Math.cos(a);a=Math.sin(a);x.applyMat(b,a,-a,b,0,0)};x.scale=function(a){x.applyMat(a,0,0,a,0,0)};x.gsave=function(){Xa.stack.push(x.clone(x.drawingstate))};x.grestore=function(){0!==Xa.stack.length&&(x.drawingstate=Xa.stack.pop())};x.greset=function(){x.drawingstate=x.clone(Xa.backup);x.drawingstate.matrix.ty-=V;x.drawingstate.initialmatrix.ty-=V;Xa.stack=[]};x.createnewbackup=function(){x.drawingstate.initialmatrix.a=x.drawingstate.matrix.a;
+x.drawingstate.initialmatrix.b=x.drawingstate.matrix.b;x.drawingstate.initialmatrix.c=x.drawingstate.matrix.c;x.drawingstate.initialmatrix.d=x.drawingstate.matrix.d;x.drawingstate.initialmatrix.tx=x.drawingstate.matrix.tx;x.drawingstate.initialmatrix.ty=x.drawingstate.matrix.ty;x.drawingstate.initialmatrix.det=x.drawingstate.matrix.det;x.drawingstate.initialmatrix.sdet=x.drawingstate.matrix.sdet;Xa.backup=x.clone(x.drawingstate)};x.makecolor=function(a,b,c){a=Math.floor(255*a);b=Math.floor(255*b);
+c=Math.floor(255*c);return 1===x.drawingstate.alpha?"rgb("+a+","+b+","+c+")":"rgba("+a+","+b+","+c+","+x.drawingstate.alpha+")"};x.setcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;x.drawingstate.linecolor=x.drawingstate.pointcolor=x.makecolor(b,c,a);x.drawingstate.linecolorraw=x.drawingstate.pointcolorraw=[b,c,a]};x.setlinecolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;x.drawingstate.linecolor=x.makecolor(b,
+c,a);x.drawingstate.linecolorraw=[b,c,a]};x.settextcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;x.drawingstate.textcolor=x.makecolor(b,c,a);x.drawingstate.textcolorraw=[b,c,a]};x.setpointcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;x.drawingstate.pointcolor=x.makecolor(b,c,a);x.drawingstate.pointcolorraw=[b,c,a]};x.setalpha=function(a){x.drawingstate.alpha=a.value.real;x.drawingstate.linecolor=x.makecolor(x.drawingstate.linecolorraw[0],
+x.drawingstate.linecolorraw[1],x.drawingstate.linecolorraw[2]);x.drawingstate.pointcolor=x.makecolor(x.drawingstate.pointcolorraw[0],x.drawingstate.pointcolorraw[1],x.drawingstate.pointcolorraw[2]);x.drawingstate.textcolor=x.makecolor(x.drawingstate.textcolorraw[0],x.drawingstate.textcolorraw[1],x.drawingstate.textcolorraw[2])};x.setpointsize=function(a){x.drawingstate.pointsize=a.value.real};x.setlinesize=function(a){x.drawingstate.linesize=a.value.real};x.settextsize=function(a){x.drawingstate.textsize=
+a.value.real};var ja={clip:"none",pointColor:[1,0,0],lineColor:[0,0,1],pointSize:5,lineSize:1,alpha:1,overhangLine:1,overhangSeg:1,dimDependent:.7,fontFamily:"sans-serif",textsize:20,lineHeight:1.45};q.defaultAppearance&&Vd(q.defaultAppearance);var Tb={},rd={UL:0,UR:1,LR:2,LL:3},sc=["in","out","good","backup"],gb=new Float64Array(0),bb={};sc.forEach(function(a){bb[a]=gb});var ma=gb,Fa=gb,ya=gb,ua,za,eb,Ga,vb,tc=!1,td={toString:function(){return"RefineException"}},I=null;q.enableTraceLog&&(I={logLength:Infinity,
+fullLog:[],currentMouseAndScripts:null,currentMover:null,currentStep:null,currentElement:null,currentParam:null,labelTracing2:v.wrap("tracing2"),labelTracing4:v.wrap("tracing4"),labelTracingSesq:v.wrap("tracingSesq"),postMouseHooks:[]},"number"===typeof q.enableTraceLog&&(I.logLength=q.enableTraceLog),qa.getTraceLog=ae,qa.formatTraceLog=be,qa.addTraceHook=I.postMouseHooks.push.bind(I.postMouseHooks));Ha.stateSize=12;vc.stateSize=24;var hb=[];fb.P=function(a){u.lines.forEach(function(b){b=yd(a,b);
+b.holds()&&hb.push(b)});u.conics.forEach(function(b){b=zd(a,b);b.holds()&&hb.push(b)})};fb.L=function(a){u.points.forEach(function(b){b=yd(b,a);b.holds()&&hb.push(b)})};fb.S=fb.L;fb.C=function(a){u.points.forEach(function(b){b=zd(b,a);b.holds()&&hb.push(b)})};var n={_helper:{},RandomLine:{}};n.RandomLine.kind="L";n.RandomLine.signature=[];n.RandomLine.updatePosition=function(a){a.homog=f.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,
+"Line")};n.FreeLine={};n.FreeLine.kind="L";n.FreeLine.signature=[];n.FreeLine.isMovable=!0;n.FreeLine.initialize=function(a){a=n._helper.initializeLine(a);T(a)};n.FreeLine.getParamForInput=function(a,b,c){"mouse"===c?(a=f.cross(b,f.ez),a=f.cross(a,b)):a="homog"===c?b:f.turnIntoCSList([m.zero,m.zero,m.zero]);return f.normalizeMax(a)};n.FreeLine.getParamFromState=function(a){return Z(3)};n.FreeLine.putParamToState=function(a,b){T(b)};n.FreeLine.updatePosition=function(a){var b=Z(3);T(b);a.homog=v.withUsage(b,
+"Line")};n.FreeLine.stateSize=6;n.RandomPoint={};n.RandomPoint.kind="P";n.RandomPoint.signature=[];n.RandomPoint.updatePosition=function(a){a.homog=f.realVector([100*Math.random(),100*Math.random(),100*Math.random()]);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Point")};n.Join={};n.Join.kind="L";n.Join.signature=["P","P"];n.Join.updatePosition=function(a){a.homog=f.cross(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,
+"Line")};n.Segment={};n.Segment.kind="S";n.Segment.signature=["P","P"];n.Segment.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]];n.Segment.setSegmentPos(a,f.cross(b.homog,c.homog),f.scalmult(c.homog.value[2],b.homog),f.scalmult(b.homog.value[2],c.homog))};n.Segment.setSegmentPos=function(a,b,c,d){b=f.normalizeMax(b);a.homog=v.withUsage(b,"Line");b=f.turnIntoCSList([c,d]);b=f.normalizeMax(b);a.startpos=b.value[0];a.endpos=b.value[1]};n.Meet={};n.Meet.kind="P";n.Meet.signature=
+["L","L"];n.Meet.updatePosition=function(a){a.homog=f.cross(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Point")};n.Meet.visiblecheck=function(a){var b=!0,c=u.csnames[a.args[0]],d=u.csnames[a.args[1]];"S"===c.kind&&(b=pd(a,c));b&&"S"===d.kind&&(b=pd(a,d));a.isshowing=b};n._helper.midpoint=function(a,b){return f.normalizeMax(f.add(f.scalmult(b.value[2],a),f.scalmult(a.value[2],b)))};n.Mid={};n.Mid.kind="P";n.Mid.signature=["P",
+"P"];n.Mid.updatePosition=function(a){var b=n._helper.midpoint(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog);a.homog=v.withUsage(b,"Point")};n.Perp={};n.Perp.kind="L";n.Perp.signature=["L","P"];n.Perp.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,b=f.turnIntoCSList([b.value[0],b.value[1],m.zero]);a.homog=f.cross(b,c);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Line")};n.Para={};n.Para.kind="L";n.Para.signature=["L","P"];n.Para.updatePosition=
+function(a){var b=u.csnames[a.args[1]].homog;a.homog=f.cross(f.cross(f.linfty,u.csnames[a.args[0]].homog),b);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Line")};n.Horizontal={};n.Horizontal.kind="L";n.Horizontal.signature=["P"];n.Horizontal.updatePosition=function(a){a.homog=f.cross(f.ex,u.csnames[a.args[0]].homog);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Line")};n.HorizontalLine={};n.HorizontalLine.kind="L";n.HorizontalLine.signature=[];n.HorizontalLine.isMovable=
+!0;n.HorizontalLine.initialize=function(a){a=n._helper.initializeLine(a);a=f.turnIntoCSList([m.zero,a.value[1],a.value[2]]);a=f.normalizeMax(a);T(a)};n.HorizontalLine.getParamForInput=function(a,b,c){if("mouse"===c)b=f.cross(b,f.ex);else if("homog"===c){if(0!==b.value[0].real||0!==b.value[0].imag)b=f.turnIntoCSList([m.zero,b.value[1],b.value[2]])}else b=f.turnIntoCSList([m.zero,m.zero,m.zero]);return f.normalizeMax(b)};n.HorizontalLine.getParamFromState=function(a){return Z(3)};n.HorizontalLine.putParamToState=
+function(a,b){T(b)};n.HorizontalLine.updatePosition=function(a){var b=Z(3);T(b);a.homog=v.withUsage(b,"Line")};n.HorizontalLine.stateSize=6;n.Vertical={};n.Vertical.kind="L";n.Vertical.signature=["P"];n.Vertical.updatePosition=function(a){a.homog=f.cross(f.ey,u.csnames[a.args[0]].homog);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Line")};n.VerticalLine={};n.VerticalLine.kind="L";n.VerticalLine.signature=[];n.VerticalLine.isMovable=!0;n.VerticalLine.initialize=function(a){a=n._helper.initializeLine(a);
+a=f.turnIntoCSList([a.value[0],m.zero,a.value[2]]);a=f.normalizeMax(a);T(a)};n.VerticalLine.getParamForInput=function(a,b,c){if("mouse"===c)b=f.cross(b,f.ey);else if("homog"===c){if(0!==b.value[1].real||0!==b.value[1].imag)b=f.turnIntoCSList([b.value[0],m.zero,b.value[2]])}else b=f.turnIntoCSList([m.zero,m.zero,m.zero]);return f.normalizeMax(b)};n.VerticalLine.getParamFromState=function(a){return Z(3)};n.VerticalLine.putParamToState=function(a,b){T(b)};n.VerticalLine.updatePosition=function(a){var b=
+Z(3);T(b);a.homog=v.withUsage(b,"Line")};n.VerticalLine.stateSize=6;n.LineByFixedAngle={};n.LineByFixedAngle.kind="L";n.LineByFixedAngle.signature=["L","P"];n.LineByFixedAngle.initialize=function(a){var b=m._helper.input(a.angle),c=m.cos(b),b=m.sin(b);a.rot=f.turnIntoCSList([f.turnIntoCSList([b,c,m.zero]),f.turnIntoCSList([m.neg(c),b,m.zero]),f.turnIntoCSList([m.zero,m.zero,m.zero])])};n.LineByFixedAngle.updatePosition=function(a){var b=u.csnames[a.args[1]],c=f.productMV(a.rot,u.csnames[a.args[0]].homog);
+a.homog=f.cross(b.homog,c);a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Line")};n.Through={};n.Through.kind="L";n.Through.signature=["P"];n.Through.isMovable=!0;n.Through.initialize=function(a){a=a.dir?v.wrap(a.dir):f.realVector([a.pos[1],-a.pos[0],0]);T(a)};n.Through.getParamForInput=function(a,b,c){a="dir"===c||"mouse"===c?f.cross(u.csnames[a.args[0]].homog,b):"homog"===c?b:f.turnIntoCSList([m.zero,m.zero,m.zero]);a=f.cross(f.linfty,a);return f.normalizeMax(a)};n.Through.getParamFromState=
+function(a){return Z(3)};n.Through.putParamToState=function(a,b){T(b)};n.Through.updatePosition=function(a){var b=Z(3);T(b);b=f.cross(u.csnames[a.args[0]].homog,b);b=f.normalizeMax(b);a.homog=v.withUsage(b,"Line")};n.Through.stateSize=6;n.Free={};n.Free.kind="P";n.Free.signature=[];n.Free.isMovable=!0;n.Free.initialize=function(a){a=n._helper.initializePoint(a);T(a)};n.Free.getParamForInput=function(a,b,c){if("mouse"===c&&bc&&0!==Ta){b=f.normalizeZ(b);a=b.value[0].value.real;c=b.value[1].value.real;
+var d=Math.round(a/Ta)*Ta,e=Math.round(c/Ta)*Ta;.2>Math.abs(d-a)&&.2>Math.abs(e-c)&&(b=f.realVector([d,e,1]))}return f.normalizeMax(b)};n.Free.getParamFromState=function(a){return Z(3)};n.Free.putParamToState=function(a,b){T(b)};n.Free.updatePosition=function(a){var b=Z(3);T(b);a.homog=v.withUsage(b,"Point")};n.Free.stateSize=6;n._helper.projectPointToLine=function(a,b){var c=f.turnIntoCSList([b.value[0],b.value[1],m.zero]),c=f.cross(c,a);return f.normalizeMax(f.cross(c,b))};n.PointOnLine={};n.PointOnLine.kind=
+"P";n.PointOnLine.signature=["L"];n.PointOnLine.isMovable=!0;n.PointOnLine.initialize=function(a){var b=n._helper.initializePoint(a);a=u.csnames[a.args[0]].homog;var b=n._helper.projectPointToLine(b,a),b=f.normalizeMax(b),c=f.cross(f.linfty,b);f.normalizeMax(c);T(b);T(a);eb=!1};n.PointOnLine.updatePosition=function(a,b){var c,d=u.csnames[a.args[0]].homog;c=Z(3);Z(3);if(!b){ua=a.stateIdx;var e=ma;ma=ya;var h=Z(3),m=Z(3);ma=e;e=f.cross(m,d);f._helper.isAlmostZero(e)&&(e=f.cross(f.linfty,d));h=n._helper.CircleMP(e,
+h);h=n._helper.IntersectLC(d,h);e=n._helper.pointReflection(e,c);c=vd(h[0],h[1],c,e)[0]}c=f.normalizeMax(c);T(c);T(d);a.homog=v.withUsage(c,"Point")};n.PointOnLine.getParamForInput=function(a,b,c){return b=n._helper.projectPointToLine(b,u.csnames[a.args[0]].homog)};n.PointOnLine.getParamFromState=function(a){return Z(3)};n.PointOnLine.putParamToState=function(a,b){return T(b)};n.PointOnLine.stateSize=12;n.PointOnCircle={};n.PointOnCircle.kind="P";n.PointOnCircle.signature=["C"];n.PointOnCircle.isMovable=
+!0;n.PointOnCircle.initialize=function(a){var b=u.csnames[a.args[0]];a=f.normalizeZ(n._helper.initializePoint(a));var c=f.normalizeZ(n._helper.CenterOfConic(b.matrix)),d=f.sub(a,c),d=f.turnIntoCSList([d.value[1],m.neg(d.value[0]),m.zero]),c=f.cross(a,c),b=n._helper.IntersectLC(c,b.matrix),c=f.projectiveDistMinScal(a,b[0]);f.projectiveDistMinScal(a,b[1])<c?(a=b[1],b=b[0]):(a=b[0],b=b[1]);T(d);T(a);T(b);eb=!1};n.PointOnCircle.putParamToState=function(a,b){T(b)};n.PointOnCircle.getParamFromState=function(a){return Z(3)};
+n.PointOnCircle.getParamForInput=function(a,b,c){c=f.normalizeZ(n._helper.CenterOfConic(u.csnames[a.args[0]].matrix));b=f.sub(b,c);ua=a.stateIdx;a=Z(3);var d=f.normalizeZ(Z(3));c=f.sub(d,c);0>m.sub(m.mult(a.value[0],c.value[1]),m.mult(a.value[1],c.value[0])).value.real&&(b=f.neg(b));return f.turnIntoCSList([b.value[1],m.neg(b.value[0]),m.zero])};n.PointOnCircle.parameterPath=function(a,b,c,d,e){d=f.normalizeAbs(d);e=f.normalizeAbs(e);var h=f.scalproduct(d,e);if(0<=h.value.real)return ud(a,b,c,d,e);
+a=f.turnIntoCSList([m.sub(d.value[1],e.value[1]),m.sub(e.value[0],d.value[0]),m.zero]);h=f.scalproduct(d,a);0>h.value.real&&(a=f.neg(a));0>b?(b=2*b+1,c=b*b,h=.25/(1+c),c=m.complex(2*b*h+.25,(1-c)*h)):(b=2*b-1,c=b*b,h=.25/(1+c),c=m.complex(2*b*h+.75,(1-c)*h));var k=m.sub(m.real(1),c);b=m.mult(c,c);h=m.mult(k,k);c=m.mult(c,k);d=f.scalmult(h,d);d=f.add(d,f.scalmult(c,a));return d=f.add(d,f.scalmult(b,e))};n.PointOnCircle.updatePosition=function(a){var b=Z(3);T(b);var c=u.csnames[a.args[0]],b=f.productMV(c.matrix,
+b),c=n._helper.IntersectLC(b,c.matrix),c=Ha(c[0],c[1]),b=f.normalizeMax(c.value[0]);a.homog=v.withUsage(b,"Point");a.antipodalPoint=c.value[1]};n.PointOnCircle.stateSize=6+Ha.stateSize;n.OtherPointOnCircle={};n.OtherPointOnCircle.kind="P";n.OtherPointOnCircle.signature=["P"];n.OtherPointOnCircle.signatureConstraints=function(a){return"PointOnCircle"===u.csnames[a.args[0]].type};n.OtherPointOnCircle.updatePosition=function(a){var b=u.csnames[a.args[0]].antipodalPoint,b=f.normalizeMax(b);a.homog=v.withUsage(b,
+"Point")};n.PointOnSegment={};n.PointOnSegment.kind="P";n.PointOnSegment.signature=["S"];n.PointOnSegment.isMovable=!0;n.PointOnSegment.initialize=function(a){var b=n._helper.initializePoint(a);a=n.PointOnSegment.getParamForInput(a,b);Va(a)};n.PointOnSegment.getParamForInput=function(a,b){var c=u.csnames[a.args[0]],d=c.homog,d=f.turnIntoCSList([d.value[0],d.value[1],m.zero]),e=f.sub(c.startpos,c.endpos),c=f.crossratio3(e,c.startpos,c.endpos,b,d);0>c.value.real&&(c=m.complex(0,c.value.imag));1<c.value.real&&
+(c=m.complex(1,c.value.imag));return c};n.PointOnSegment.getParamFromState=function(a){return wb()};n.PointOnSegment.putParamToState=function(a,b){Va(b)};n.PointOnSegment.updatePosition=function(a){var b=wb();Va(b);var c=u.csnames[a.args[0]],d=c.startpos,c=f.sub(c.endpos,d),b=f.add(d,f.scalmult(b,c)),b=f.normalizeMax(b);a.homog=v.withUsage(b,"Point")};n.PointOnSegment.stateSize=2;n._helper.CenterOfConic=function(a){a=f.adjoint3(a);return{ctype:"list",value:[a.value[2].value[0],a.value[2].value[1],
+a.value[2].value[2]]}};n.CenterOfConic={};n.CenterOfConic.kind="P";n.CenterOfConic.signature=["C"];n.CenterOfConic.updatePosition=function(a){var b=n._helper.CenterOfConic(u.csnames[a.args[0]].matrix);a.homog=b;a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Point")};n._helper.CircleMP=function(a,b){var c=a.value[0],d=a.value[1],e=m.neg(a.value[2]),h=m.zero,c=f.turnIntoCSList([f.turnIntoCSList([e,h,c]),f.turnIntoCSList([h,e,d]),f.turnIntoCSList([c,d,h])]),e=v.mult(v.mult(b,c),b),d=v.mult(v.mult(b,
+f.fund),b),e=v.mult(e,f.fund),c=v.mult(d,c);return f.sub(e,c)};n.CircleMP={};n.CircleMP.kind="C";n.CircleMP.signature=["P","P"];n.CircleMP.updatePosition=function(a){a.matrix=n._helper.CircleMP(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog);a.matrix=f.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Circle")};n.CircleMr={};n.CircleMr.kind="C";n.CircleMr.signature=["P"];n.CircleMr.isMovable=!0;n.CircleMr.initialize=function(a){Va(m.real(a.radius))};n.CircleMr.getParamForInput=function(a,
+b,c){if("radius"===c)return b;a=u.csnames[a.args[0]].homog;a=f.normalizeZ(a);b=f.normalizeZ(b);b=f.sub(a,b);return b=f.abs(b)};n.CircleMr.getParamFromState=function(a){return wb()};n.CircleMr.putParamToState=function(a,b){Va(b)};n.CircleMr.updatePosition=function(a){var b=wb();Va(b);var c=u.csnames[a.args[0]].homog,d=m.mult(c.value[2],b),d=m.mult(d,d);if(!m._helper.isFinite(d)&&!m._helper.isNaN(d))return f.fund;c=n._helper.ScaledCircleMrr(c,d);a.matrix=v.withUsage(c,"Circle");a.radius=b};n.CircleMr.stateSize=
+2;n._helper.ScaledCircleMrr=function(a,b){var c=a.value[0],d=a.value[1],e=m.neg(a.value[2]),e=f.scalmult(e,f.turnIntoCSList([c,d,e])).value,c=f.turnIntoCSList([c,d]),c=m.sub(f.scalproduct(c,c),b),e=n._helper.buildConicMatrix([e[2],m.zero,e[2],e[0],e[1],c]);return f.normalizeMax(e)};n.Compass={};n.Compass.kind="C";n.Compass.signature=["P","P","P"];n.Compass.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=b.value[2],h=c.value[2],
+k=d.value[2],b=f.scalmult(m.mult(h,k),b),c=f.scalmult(m.mult(e,k),c),d=f.scalmult(m.mult(e,h),d),b=f.sub(c,b),d=n._helper.ScaledCircleMrr(d,f.scalproduct(b,b));a.matrix=v.withUsage(d,"Circle")};n._helper.getConicType=function(a){if(1E-16>m.abs(f.det(a)).value.real)return"degenerate";var b=m.mult(a.value[0].value[0],a.value[1].value[1]),b=m.sub(b,m.pow(a.value[0].value[1],m.real(2))),b=b.value.real;return 1E-16>Math.abs(b)?"parabola":1E-16<b?"ellipsoid":"hyperbola"};n._helper.ConicBy5=function(a,b,
+c,d,e,h){a=f.turnIntoCSList([f.cross(c,d)]);var k=f.turnIntoCSList([f.cross(b,e)]);b=f.turnIntoCSList([f.cross(b,c)]);d=f.turnIntoCSList([f.cross(d,e)]);return n._helper.conicFromTwoDegenerates(a,k,b,d,h)};n._helper.conicFromTwoDegenerates=function(a,b,c,d,e){a=v.mult(f.transpose(b),a);c=v.mult(f.transpose(d),c);a=f.add(a,f.transpose(a));c=f.add(c,f.transpose(c));d=v.mult(v.mult(e,a),e);e=v.mult(v.mult(e,c),e);c=v.mult(d,c);e=v.mult(e,a);return f.sub(c,e)};n.ConicBy5={};n.ConicBy5.kind="C";n.ConicBy5.signature=
+["P","P","P","P","P"];n.ConicBy5.updatePosition=function(a){var b=n._helper.ConicBy5(a,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog);a.matrix=b;a.matrix=f.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Conic")};n._helper.buildConicMatrix=function(a){var b=a[1],c=a[2],d=a[3],e=a[4],h=a[5];return f.turnIntoCSList([f.turnIntoCSList([a[0],b,d]),f.turnIntoCSList([b,c,e]),f.turnIntoCSList([d,e,h])])};n._helper.splitDegenConic=
+function(a){var b=f.adjoint3(a),c=0,d,e,h=m.abs2(b.value[0].value[0]).value.real;for(d=1;3>d;d++)e=m.abs2(b.value[d].value[d]).value.real,e>h&&(c=d,h=e);d=m.sqrt(m.mult(m.real(-1),b.value[c].value[c]));if(1E-16>m.abs2(d).value.real)return a=f.turnIntoCSList([m.zero,m.zero,m.zero]),[a,a];c=m.real(c+1);e=f.column(b,c);e=f.scaldiv(d,e);d=e.value[0];h=e.value[1];e=e.value[2];d=f.turnIntoCSList([f.turnIntoCSList([m.real(0),e,m.mult(m.real(-1),h)]),f.turnIntoCSList([m.mult(m.real(-1),e),m.real(0),d]),f.turnIntoCSList([h,
+m.mult(m.real(-1),d),m.real(0)])]);a=f.add(a,d);var k=0;for(d=h=b=0;3>d;d++)for(c=0;3>c;c++)e=m.abs2(a.value[d].value[c]).value.real,e>h&&(k=d,b=c,h=e);d=a.value[k];a=f.transpose(a);a=a.value[b];d=f.normalizeMax(d);a=f.normalizeMax(a);d=v.withUsage(d,"Line");a=v.withUsage(a,"Line");return[d,a]};n.SelectConic={};n.SelectConic.kind="C";n.SelectConic.signature=["Cs"];n.SelectConic.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=m._helper.input(a.pos.xx),c=m._helper.input(a.pos.yy),
+d=m._helper.input(a.pos.zz),e=m.realmult(.5,m._helper.input(a.pos.xy)),h=m.realmult(.5,m._helper.input(a.pos.xz)),k=m.realmult(.5,m._helper.input(a.pos.yz)),b=f.turnIntoCSList([f.turnIntoCSList([b,e,h]),f.turnIntoCSList([e,c,k]),f.turnIntoCSList([h,k,d])]);a=u.csnames[a.args[0]].results;c=f.conicDist(b,a[0]);d=0;for(e=1;e<a.length;++e)h=f.conicDist(b,a[e]),h<c&&(c=h,d=e);return d};n.SelectConic.updatePosition=function(a){a.matrix=u.csnames[a.args[0]].results[a.param];a.matrix=f.normalizeMax(a.matrix);
+a.matrix=v.withUsage(a.matrix,"Conic")};n._helper.ConicBy4p1l=function(a,b,c,d,e,h){var k=f.scalproduct(b,h),l=f.scalproduct(c,h),q=f.scalproduct(d,h),r=f.scalproduct(e,h),t=f.det3(c,d,e),u=f.det3(b,c,e),v=f.det3(b,d,e),w=f.det3(b,c,d),x=m.mult,l=m.sqrt(x(x(l,r),x(t,u))),k=m.sqrt(x(x(k,q),x(v,w))),q=f.cross(f.cross(b,d),h);h=f.cross(f.cross(c,e),h);q=f.scalmult(l,q);k=f.scalmult(k,h);h=f.normalizeMax(f.add(q,k));k=f.normalizeMax(f.sub(q,k));k=Ha(h,k);h=n._helper.ConicBy5(a,b,c,d,e,k.value[0]);a=n._helper.ConicBy5(a,
+b,c,d,e,k.value[1]);return[f.normalizeMax(h),f.normalizeMax(a)]};n.ConicBy4p1l={};n.ConicBy4p1l.kind="Cs";n.ConicBy4p1l.signature=["P","P","P","P","L"];n.ConicBy4p1l.updatePosition=function(a){var b=n._helper.ConicBy4p1l(a,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog);a.results=b};n.ConicBy4p1l.stateSize=Ha.stateSize;n._helper.ConicBy3p2l=function(a,b,c,d,e){function h(a,b,c,d){return m.sub(m.mult(a,d),m.mult(b,
+c))}var k=f.cross(a,b),l=f.cross(d,e);d=f.cross(d,k);e=f.cross(e,k);k=f.turnIntoCSList([d,e,l]);c=f.productVM(c,f.adjoint3(k));l=f.adjoint3(f.turnIntoCSList([f.scalmult(c.value[0],d),f.scalmult(c.value[1],e),f.scalmult(c.value[2],l)]));c=f.transpose(l);d=m.mult;e=f.productMV(c,a);a=e.value[0];e=e.value[1];k=f.productMV(c,b);b=k.value[0];var k=k.value[1],n=m.sqrt(d(a,e)),q=m.sqrt(d(b,k)),r,t=Array(4);for(r=0;4>r;++r){var u=(r&2)-1,v=d(m.real(((r&1)<<1)-1),n),w=d(m.real(u),q),x=h(e,v,k,w),y=h(b,w,a,
+v),u=h(a,e,b,k),z=m.add(m.add(h(b,k,a,e),h(k,w,e,v)),h(w,b,v,a)),v=d(x,x),w=d(y,y),A=d(z,z),B=d(x,y),x=d(x,z),y=d(y,z),B=m.sub(B,d(m.real(.5),d(u,u))),u=f.turnIntoCSList([f.turnIntoCSList([v,B,x]),f.turnIntoCSList([B,w,y]),f.turnIntoCSList([x,y,A])]),u=f.productMM(l,f.productMM(u,c)),u=f.turnIntoCSList([u.value[0].value[0],u.value[0].value[1],u.value[0].value[2],u.value[1].value[1],u.value[1].value[2],u.value[2].value[2]]);t[r]=u}return t};n.ConicBy3p2l={};n.ConicBy3p2l.kind="Cs";n.ConicBy3p2l.signature=
+["P","P","P","L","L"];n.ConicBy3p2l.updatePosition=function(a){for(var b=n._helper.ConicBy3p2l(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=wd(b),c=Array(4),d=0;4>d;++d){var e=b[d].value;c[d]=f.turnIntoCSList([f.turnIntoCSList([e[0],e[1],e[2]]),f.turnIntoCSList([e[1],e[3],e[4]]),f.turnIntoCSList([e[2],e[4],e[5]])])}a.results=c};n.ConicBy3p2l.stateSize=48;n.ConicBy2p3l={};n.ConicBy2p3l.kind="Cs";n.ConicBy2p3l.signature=
+["P","P","L","L","L"];n.ConicBy2p3l.updatePosition=function(a){for(var b=n._helper.ConicBy3p2l(u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog),b=wd(b),c=Array(4),d=0;4>d;++d){var e=b[d].value,e=f.turnIntoCSList([f.turnIntoCSList([e[0],e[1],e[2]]),f.turnIntoCSList([e[1],e[3],e[4]]),f.turnIntoCSList([e[2],e[4],e[5]])]);c[d]=f.normalizeMax(f.adjoint3(e))}a.results=c};n.ConicBy2p3l.stateSize=48;n.ConicBy1p4l={};n.ConicBy1p4l.kind=
+"Cs";n.ConicBy1p4l.signature=["P","L","L","L","L"];n.ConicBy1p4l.updatePosition=function(a){var b=n._helper.ConicBy4p1l(a,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog,u.csnames[a.args[0]].homog),c=b[0],b=b[1],c=f.adjoint3(c),b=f.adjoint3(b),b=[c,b];a.results=b};n.ConicBy1p4l.stateSize=Ha.stateSize;n.ConicParabolaPL={};n.ConicParabolaPL.kind="C";n.ConicParabolaPL.signature=["P","L"];n.ConicParabolaPL.updatePosition=function(a){var b=u.csnames[a.args[0]].homog.value,
+c=u.csnames[a.args[1]].homog.value,d=m.mult,e=m.neg,h=m.add,k=m.sub,l=b[0],q=b[1],r=b[2],t=c[0],b=c[1],c=c[2],w=d(r,r),x=d(t,t),y=d(b,b),z=d(r,c),A=e(r),r=h(x,y),y=d(w,y),x=d(w,x),e=d(e(w),d(t,b)),t=d(A,h(d(l,r),d(z,t))),b=d(A,h(d(q,r),d(z,b))),d=k(d(h(d(l,l),d(q,q)),r),d(w,d(c,c))),d=n._helper.buildConicMatrix([y,e,x,t,b,d]),d=f.normalizeMax(d);a.matrix=v.withUsage(d,"Conic")};n.ConicBy2Foci1P={};n.ConicBy2Foci1P.kind="Cs";n.ConicBy2Foci1P.signature=["P","P","P"];n.ConicBy2Foci1P.updatePosition=
+function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=f.ii,h=f.jj,k=f.normalizeMax(f.cross(b,d)),l=f.normalizeMax(f.cross(c,d)),q=f.normalizeMax(f.cross(d,e)),d=f.normalizeMax(f.cross(d,h)),l=n._helper.coHarmonic(q,d,k,l),k=f.normalizeMax(l[0]),l=f.normalizeMax(l[1]),e=f.turnIntoCSList([e]),q=f.turnIntoCSList([h]),d=f.turnIntoCSList([b]),r=f.turnIntoCSList([c]),h=n._helper.conicFromTwoDegenerates(e,q,d,r,k),h=f.normalizeMax(h),e=n._helper.conicFromTwoDegenerates(e,
+q,d,r,l),e=f.normalizeMax(e),h=f.normalizeMax(f.adjoint3(h)),e=f.normalizeMax(f.adjoint3(e));"ellipsoid"!==n._helper.getConicType(h)&&(k=h,h=e,e=k);f.almostequals(b,c).value&&(b=m.real(3),e=f.zeromatrix(b,b));a.results=[h,e]};n.ConicBy2Pol1P={};n.ConicBy2Pol1P.kind="C";n.ConicBy2Pol1P.signature=["P","L","P","L","P"];n.ConicBy2Pol1P.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=u.csnames[a.args[3]].homog,h=u.csnames[a.args[4]].homog,
+k=f.scalproduct,l=f.scalmult,n=f.sub,q=f.productMM,r=m.realmult,t=f.transpose,w=f.turnIntoCSList,x=n(l(k(c,b),h),l(r(2,k(c,h)),b)),y=n(l(k(e,d),h),l(r(2,k(e,h)),d)),z=w([f.cross(b,h)]),h=w([f.cross(d,h)]),y=q(t(z),w([f.cross(b,y)])),w=q(t(h),w([f.cross(d,x)])),q=q(t(z),h),b=k(b,e),c=k(d,c),d=f.add(l(c,y),l(b,w)),d=n(d,l(r(2,m.mult(b,c)),q)),d=f.add(d,t(d)),d=f.normalizeMax(d),d=v.withUsage(d,"Conic");a.matrix=d};n.ConicBy2Pol1L={};n.ConicBy2Pol1L.kind="C";n.ConicBy2Pol1L.signature=["P","L","P","L",
+"L"];n.ConicBy2Pol1L.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=u.csnames[a.args[3]].homog,h=u.csnames[a.args[4]].homog,k=f.scalproduct,l=f.scalmult,n=f.productMM,q=m.mult,r=f.transpose,t=f.turnIntoCSList,w=k(c,b),x=k(c,d),y=k(e,b),z=k(e,d),A=k(h,b),k=k(h,d),B=t([f.sub(l(q(y,k),c),l(q(x,A),e))]),b=f.add(n(r(t([l(q(y,x),h)])),t([f.sub(f.add(l(m.sub(q(w,k),q(x,A)),e),l(m.sub(q(z,A),q(y,k)),c)),l(f.det3(c,e,h),f.cross(b,d)))])),
+n(r(B),B)),b=f.add(b,r(b)),b=f.normalizeMax(b),b=v.withUsage(b,"Conic");a.matrix=b};n._helper.conic1Pol3Inc=function(a,b,c,d,e){var h=f.scalproduct,k=f.scalmult,l=f.productMM,n=f.cross,q=m.realmult,r=m.mult,t=f.transpose,u=f.turnIntoCSList,v=f.det3,w=v(a,c,d),x=u([n(c,e)]),y=u([n(a,e)]),z=u([n(c,d)]),A=h(b,a),B=h(b,c);b=h(b,e);n=u([n(d,f.sub(k(A,e),k(q(2,b),a)))]);x=k(w,l(t(x),n));a=q(2,m.add(r(v(a,d,e),B),r(w,b)));a=m.sub(r(v(c,d,e),A),a);x=f.add(x,k(a,l(t(y),z)));x=f.add(x,t(x));return x=f.normalizeMax(x)};
+n.ConicBy1Pol3P={};n.ConicBy1Pol3P.kind="C";n.ConicBy1Pol3P.signature=["P","L","P","P","P"];n.ConicBy1Pol3P.updatePosition=function(a){var b=n._helper.conic1Pol3Inc(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=v.withUsage(b,"Conic");a.matrix=b};n.ConicBy1Pol3L={};n.ConicBy1Pol3L.kind="C";n.ConicBy1Pol3L.signature=["P","L","L","L","L"];n.ConicBy1Pol3L.updatePosition=function(a){var b=n._helper.conic1Pol3Inc(u.csnames[a.args[1]].homog,
+u.csnames[a.args[0]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=f.normalizeMax(f.adjoint3(b)),b=v.withUsage(b,"Conic");a.matrix=b};n._helper.coHarmonic=function(a,b,c,d){var e=f.realVector([100*Math.random(),100*Math.random(),1]),h=f.det3(e,c,a),k=f.det3(e,c,b);c=f.det3(e,d,a);d=f.det3(e,d,b);d=m.sqrt(m.mult(d,k));h=m.sqrt(m.mult(c,h));a=v.mult(a,d);h=v.mult(b,h);b=f.add(a,h);a=f.sub(a,h);return[b,a]};n.ConicInSquare={};n.ConicInSquare.kind="C";n.ConicInSquare.signature=
+["P","P","P","P"];n.ConicInSquare.updatePosition=function(a){var b=D.basismap(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog),c=m.one,c=n._helper.buildConicMatrix([c,c,c,m.real(-3),c,c]),b=f.adjoint3(b),b=f.productMM(f.productMM(f.transpose(b),c),b),b=f.normalizeMax(b);a.matrix=v.withUsage(b,"Conic")};n.ConicBy5lines={};n.ConicBy5lines.kind="C";n.ConicBy5lines.signature=["L","L","L","L","L"];n.ConicBy5lines.updatePosition=function(a){var b=
+n._helper.ConicBy5(a,u.csnames[a.args[0]].homog,u.csnames[a.args[1]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[4]].homog),b=f.adjoint3(b);a.matrix=b;a.matrix=f.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Conic")};n.ConicFromPrincipalDirections={};n.ConicFromPrincipalDirections.kind="C";n.ConicFromPrincipalDirections.signature=["P","P","P"];n.ConicFromPrincipalDirections.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,
+d=u.csnames[a.args[2]].homog,e=n._helper.pointReflection(b,c),h=f.cross(c,b),b=f.turnIntoCSList([h.value[0],h.value[1],m.zero]),h=f.turnIntoCSList([h]),c=f.turnIntoCSList([f.cross(c,b)]),e=f.turnIntoCSList([f.cross(e,b)]);a.matrix=n._helper.conicFromTwoDegenerates(h,h,c,e,d);a.matrix=f.normalizeMax(a.matrix);a.matrix=v.withUsage(a.matrix,"Conic")};n.CircleBy3={};n.CircleBy3.kind="C";n.CircleBy3.signature=["P","P","P"];n.CircleBy3.updatePosition=function(a){var b=n._helper.ConicBy5(a,u.csnames[a.args[0]].homog,
+u.csnames[a.args[1]].homog,f.ii,f.jj,u.csnames[a.args[2]].homog);a.matrix=f.normalizeMax(b);a.matrix=v.withUsage(a.matrix,"Circle")};n.ArcBy3={};n.ArcBy3.kind="C";n.ArcBy3.signature=["P","P","P"];n.ArcBy3.updatePosition=function(a){n.CircleBy3.updatePosition(a);a.startPoint=u.csnames[a.args[0]].homog;a.viaPoint=u.csnames[a.args[1]].homog;a.endPoint=u.csnames[a.args[2]].homog};n.ArcBy3.initialize=function(a){a.startPoint=u.csnames[a.args[0]].homog;a.viaPoint=u.csnames[a.args[1]].homog;a.endPoint=u.csnames[a.args[2]].homog;
+a.isArc=!0};n.PolarOfPoint={};n.PolarOfPoint.kind="L";n.PolarOfPoint.signature=["P","C"];n.PolarOfPoint.updatePosition=function(a){var b=v.mult(u.csnames[a.args[1]].matrix,u.csnames[a.args[0]].homog),b=f.normalizeMax(b);a.homog=v.withUsage(b,"Line")};n.PolarOfLine={};n.PolarOfLine.kind="P";n.PolarOfLine.signature=["L","C"];n.PolarOfLine.updatePosition=function(a){var b=u.csnames[a.args[0]],c=f.adjoint3(u.csnames[a.args[1]].matrix),b=v.mult(c,b.homog),b=f.normalizeMax(b);a.homog=v.withUsage(b,"Point")};
+n.AngleBisector={};n.AngleBisector.kind="Ls";n.AngleBisector.signature=["L","L","P"];n.AngleBisector.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=u.csnames[a.args[2]].homog,e=f.add,h=f.sub,k=f.abs,l=f.cross,m=f.scalmult,n=f.normalizeMax,q=f._helper.isAlmostZero,r=f.linfty,t=m(k(l(l(r,c),r)),b),b=m(k(l(l(r,b),r)),c),h=h(t,b),e=e(t,b);q(h)&&(h=l(l(l(r,e),r),d));q(e)&&(e=l(l(l(r,h),r),d));a.results=Ha(n(h),n(e))};n.AngleBisector.stateSize=Ha.stateSize;n._helper.IntersectLC=
+function(a,b){var c=m,d=f.crossOperator(a),e=f.transpose(d),e=v.mult(e,v.mult(b,d)),h=f.maxIndex(a,m.abs2),k,l,n,q;0===h?(h=e.value[1].value[1],k=e.value[1].value[2],l=e.value[2].value[1],n=e.value[2].value[2],q=a.value[0]):1===h?(h=e.value[0].value[0],k=e.value[0].value[2],l=e.value[2].value[0],n=e.value[2].value[2],q=a.value[1]):(h=e.value[0].value[0],k=e.value[0].value[1],l=e.value[1].value[0],n=e.value[1].value[1],q=a.value[2]);c=c.div(c.sqrt(c.sub(c.mult(k,l),c.mult(h,n))),q);c=f.add(e,f.scalmult(c,
+d));h=f.maxIndex(c,f.abs2);d=c.value[h];d=f.normalizeMax(d);d=v.withUsage(d,"Point");c=f.transpose(c);h=f.maxIndex(c,f.abs2);c=c.value[h];c=f.normalizeMax(c);c=v.withUsage(c,"Point");return[d,c]};n.IntersectLC={};n.IntersectLC.kind="Ps";n.IntersectLC.signature=["L","C"];n.IntersectLC.updatePosition=function(a){var b=n._helper.IntersectLC(u.csnames[a.args[0]].homog,u.csnames[a.args[1]].matrix);a.results=Ha(b[0],b[1])};n.IntersectLC.stateSize=Ha.stateSize;n.OtherIntersectionCL={};n.OtherIntersectionCL.kind=
+"P";n.OtherIntersectionCL.signature=["C","L","P"];n.OtherIntersectionCL.updatePosition=function(a){var b=u.csnames[a.args[2]].homog,c=n._helper.IntersectLC(u.csnames[a.args[1]].homog,u.csnames[a.args[0]].matrix),d=c[0],c=c[1],e=f.projectiveDistMinScal(d,b),b=f.projectiveDistMinScal(c,b);a.homog=e<b?c:d;a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Point")};n.IntersectCirCir={};n.IntersectCirCir.kind="Ps";n.IntersectCirCir.signature=["C","C"];n.IntersectCirCir.updatePosition=function(a){var b=
+u.csnames[a.args[0]].matrix,c=u.csnames[a.args[1]].matrix,d=f.scalmult(c.value[0].value[0],b.value[2]),c=f.scalmult(b.value[0].value[0],c.value[2]),d=f.sub(d,c),d=f.turnIntoCSList([d.value[0],d.value[1],m.realmult(.5,d.value[2])]),d=f.normalizeMax(d),b=n._helper.IntersectLC(d,b);a.results=Ha(b[0],b[1])};n.IntersectCirCir.stateSize=Ha.stateSize;n.OtherIntersectionCC={};n.OtherIntersectionCC.kind="P";n.OtherIntersectionCC.signature=["C","C","P"];n.OtherIntersectionCC.updatePosition=function(a){var b=
+u.csnames[a.args[0]].matrix,c=u.csnames[a.args[1]].matrix,d=u.csnames[a.args[2]].homog,e=f.scalmult(c.value[0].value[0],b.value[2]),c=f.scalmult(b.value[0].value[0],c.value[2]),e=f.sub(e,c),e=f.turnIntoCSList([e.value[0],e.value[1],m.realmult(.5,e.value[2])]),e=f.normalizeMax(e),e=n._helper.IntersectLC(e,b),b=e[0],e=e[1],c=f.projectiveDistMinScal(b,d),d=f.projectiveDistMinScal(e,d);a.homog=c<d?e:b;a.homog=f.normalizeMax(a.homog);a.homog=v.withUsage(a.homog,"Point")};n._helper.IntersectConicConic=
+function(a,b){var c=a.value[0],d=a.value[1],e=a.value[2],h=b.value[0],k=b.value[1],l=b.value[2],q=f.det3(c,d,e),r=m.add(m.add(f.det3(c,d,l),f.det3(c,k,e)),f.det3(h,d,e)),c=m.add(m.add(f.det3(c,k,l),f.det3(h,d,l)),f.det3(h,k,e)),h=f.det3(h,k,l),l=m.abs2(q).value.real,k=m.abs2(h).value.real;l<k&&(l=a,a=b,b=l,l=h,h=q,q=l,l=c,c=r,r=l,l=k);1E-24>l?(q=a,c=b):(r=m.solveCubic(q,r,c,h),c=m.abs2(m.sub(r[0],r[1])).value.real,h=m.abs2(m.sub(r[0],r[2])).value.real,k=m.abs2(m.sub(r[1],r[2])).value.real,c>h?(q=
+r[1],r=c>k?r[0]:r[2]):(q=r[2],r=h>k?r[0]:r[1]),q=f.add(f.scalmult(q,a),b),c=f.add(f.scalmult(r,a),b));r=n._helper.splitDegenConic(q);q=r[0];r=r[1];c=n._helper.splitDegenConic(c);k=c[0];h=c[1];c=f.cross(q,k);k=f.cross(r,k);q=f.cross(q,h);r=f.cross(r,h);c=f.normalizeMax(c);k=f.normalizeMax(k);q=f.normalizeMax(q);r=f.normalizeMax(r);c=v.withUsage(c,"Point");k=v.withUsage(k,"Point");q=v.withUsage(q,"Point");r=v.withUsage(r,"Point");return[c,k,q,r]};n.IntersectConicConic={};n.IntersectConicConic.kind=
+"Ps";n.IntersectConicConic.signature=["C","C"];n.IntersectConicConic.updatePosition=function(a){var b=n._helper.IntersectConicConic(u.csnames[a.args[0]].matrix,u.csnames[a.args[1]].matrix),b=vc(b[0],b[1],b[2],b[3]);a.results=b};n.IntersectConicConic.stateSize=vc.stateSize;n.SelectP={};n.SelectP.kind="P";n.SelectP.signature=["Ps"];n.SelectP.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=u.csnames[a.args[0]].results.value;a=n._helper.initializePoint(a);for(var c=f.projectiveDistMinScal(a,
+b[0]),d=0,e=1;e<b.length;++e){var h=f.projectiveDistMinScal(a,b[e]);h<c&&(c=h,d=e)}return d};n.SelectP.updatePosition=function(a){a.homog=u.csnames[a.args[0]].results.value[a.param]};n.SelectL={};n.SelectL.kind="L";n.SelectL.signature=["Ls"];n.SelectL.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=u.csnames[a.args[0]].results.value;a=n._helper.initializeLine(a);for(var c=f.projectiveDistMinScal(a,b[0]),d=0,e=1;e<b.length;++e){var h=f.projectiveDistMinScal(a,b[e]);h<c&&(c=h,d=e)}return d};
+n.SelectL.updatePosition=function(a){a.homog=u.csnames[a.args[0]].results.value[a.param];a.homog=v.withUsage(a.homog,"Line")};n._helper.moebiusStep=function(a,b,c){var d=m.add,e=m.sub,f=m.mult,h=a.value[0],k=a.value[1];a=a.value[2];var l=b.value[0],n=b.value[1];b=b.value[2];var q=c.value[0],r=c.value[1],t=c.value[2];c=e(f(b,q),f(l,t));var u=e(f(b,r),f(n,t)),q=e(f(h,t),f(a,q)),r=e(f(k,t),f(a,r));return[e(f(h,c),f(k,u)),d(f(k,c),f(h,u)),f(a,c),f(a,u),e(f(l,q),f(n,r)),d(f(n,q),f(l,r)),f(b,q),f(b,r)]};
+n.TrMoebius={};n.TrMoebius.kind="Mt";n.TrMoebius.signature="PPPPPP".split("");n.TrMoebius.updatePosition=function(a){var b=m.neg,c=n._helper.moebiusStep(u.csnames[a.args[0]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[4]].homog),d=n._helper.moebiusStep(u.csnames[a.args[1]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[5]].homog),d=f.normalizeMax(f.matrix([[d[0],b(d[1]),d[4],b(d[5])],[d[1],d[0],d[5],d[4]],[d[2],b(d[3]),d[6],b(d[7])],[d[3],d[2],d[7],d[6]]])),c=f.normalizeMax(f.matrix([[c[6],
+b(c[4])],[c[7],b(c[5])],[b(c[2]),c[0]],[b(c[3]),c[1]]])),e=f.productMM(d,c),c=e.value[0].value[0],d=e.value[1].value[0],h=e.value[0].value[1],k=e.value[1].value[1],l=e.value[2].value[0],q=e.value[3].value[0],r=e.value[2].value[1],e=e.value[3].value[1];a.mat1=f.normalizeMax(f.matrix([[b(l),q,b(r)],[q,l,e],[c,b(d),h]]));a.mat2=f.normalizeMax(f.matrix([[b(q),b(l),b(e)],[b(l),q,b(r)],[d,c,k]]))};n.TrMoebiusP={};n.TrMoebiusP.kind="P";n.TrMoebiusP.signature=["Mt","P"];n.TrMoebiusP.updatePosition=function(a){var b=
+u.csnames[a.args[0]],c=u.csnames[a.args[1]].homog,d=f.productMV(b.mat1,c),b=f.productMV(b.mat2,c);a.homog=f.normalizeMax(f.cross(d,b));a.homog=v.withUsage(a.homog,"Point")};n._helper.TrMoebiusP=function(a,b){var c=f.productMV(b.mat1,a),d=f.productMV(b.mat2,a);return f.normalizeMax(f.cross(c,d))};n.TrMoebiusL={};n.TrMoebiusL.kind="C";n.TrMoebiusL.signature=["Mt","L"];n.TrMoebiusL.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]].homog,d=function(){var a=f.realVector([Math.random()-
+.5,Math.random()-.5,Math.random()-.5]);return f.normalizeMax(a)},e=f.cross(d(),c),h=f.cross(d(),c),c=f.cross(d(),c),e=n._helper.TrMoebiusP(e,b),h=n._helper.TrMoebiusP(h,b),b=n._helper.TrMoebiusP(c,b);a.matrix=f.normalizeMax(n._helper.ConicBy5(null,e,h,b,f.ii,f.jj));a.matrix=v.withUsage(a.matrix,"Circle")};n.TrMoebiusS={};n.TrMoebiusS.kind="C";n.TrMoebiusS.signature=["Mt","S"];n.TrMoebiusS.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]],d=c.startpos,c=c.endpos,e=f.add(d,
+c),d=n._helper.TrMoebiusP(d,b),e=n._helper.TrMoebiusP(e,b),b=n._helper.TrMoebiusP(c,b);a.startPoint=d;a.viaPoint=e;a.endPoint=b;a.isArc=!0;a.matrix=f.normalizeMax(n._helper.ConicBy5(null,d,e,b,f.ii,f.jj));a.matrix=v.withUsage(a.matrix,"Circle")};n.TrMoebiusC={};n.TrMoebiusC.kind="C";n.TrMoebiusC.signature=["Mt","C"];n.TrMoebiusC.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]].matrix;if("Circle"!==c.usage)console.log("applying Moebius transform to conics is not implemented yet"),
+b=m.real(3),a.matrix=f.zeromatrix(b,b);else{var d=function(){var a=f.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);return f.normalizeMax(a)},e=n._helper.IntersectLC(d(),c),d=n._helper.IntersectLC(d(),c),c=e[1],d=d[1],e=n._helper.TrMoebiusP(e[0],b),c=n._helper.TrMoebiusP(c,b),b=n._helper.TrMoebiusP(d,b);a.matrix=f.normalizeMax(n._helper.ConicBy5(null,e,c,b,f.ii,f.jj))}a.matrix=v.withUsage(a.matrix,"Circle")};n.TrMoebiusArc={};n.TrMoebiusArc.kind="C";n.TrMoebiusArc.signature=["Mt",
+"C"];n.TrMoebiusArc.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,c=n._helper.TrMoebiusP(c.startPoint,b),d=n._helper.TrMoebiusP(d,b),b=n._helper.TrMoebiusP(e,b);a.startPoint=c;a.viaPoint=d;a.endPoint=b;a.isArc=!0;a.matrix=f.normalizeMax(n._helper.ConicBy5(null,c,d,b,f.ii,f.jj));a.matrix=v.withUsage(a.matrix,"Circle")};n._helper.trBuildMatrix=function(a,b){var c=b(0),d=b(1),e=f.productMM(d,f.adjoint3(c));a.matrix=f.normalizeMax(e);e=f.transpose(f.productMM(c,
+f.adjoint3(d)));a.dualMatrix=f.normalizeMax(e)};n.TrProjection={};n.TrProjection.kind="Tr";n.TrProjection.signature="PPPPPPPP".split("");n.TrProjection.updatePosition=function(a){n._helper.trBuildMatrix(a,function(b){return D.basismap(u.csnames[a.args[0+b]].homog,u.csnames[a.args[2+b]].homog,u.csnames[a.args[4+b]].homog,u.csnames[a.args[6+b]].homog)})};n.TrAffine={};n.TrAffine.kind="Tr";n.TrAffine.signature="PPPPPP".split("");n.TrAffine.updatePosition=function(a){var b=m.mult,c=f.scalmult,d=f.turnIntoCSList,
+e=f.transpose,h=f.normalizeMax,k=f.productMM,l=f.adjoint3,n=d([u.csnames[a.args[0]].homog,u.csnames[a.args[2]].homog,u.csnames[a.args[4]].homog]),q=d([u.csnames[a.args[1]].homog,u.csnames[a.args[3]].homog,u.csnames[a.args[5]].homog]),r=e(n),e=e(q),t=r.value[2].value,v=e.value[2].value,w=[b(t[0],v[2]),b(t[1],v[0]),b(t[2],v[1])],r=l(r).value;a.matrix=h(k(e,d([c(b(w[0],v[1]),r[0]),c(b(w[1],v[2]),r[1]),c(b(w[2],v[0]),r[2])])));r=n.value;a.dualMatrix=h(k(l(q),d([c(b(t[2],w[1]),r[0]),c(b(t[0],w[2]),r[1]),
+c(b(t[1],w[0]),r[2])])))};n.TrSimilarity={};n.TrSimilarity.kind="Tr";n.TrSimilarity.signature=["P","P","P","P"];n.TrSimilarity.updatePosition=function(a){n._helper.trBuildMatrix(a,function(b){return D.basismap(u.csnames[a.args[0+b]].homog,u.csnames[a.args[2+b]].homog,f.ii,f.jj)})};n.TrTranslation={};n.TrTranslation.kind="Tr";n.TrTranslation.signature=["P","P"];n.TrTranslation.updatePosition=function(a){var b=u.csnames[a.args[0]].homog,c=u.csnames[a.args[1]].homog,d=f.cross(b,c).value,b=m.mult(b.value[2],
+c.value[2]),c=f.turnIntoCSList,e=m.neg,h=m.zero,d=c([c([b,h,d[1]]),c([h,b,e(d[0])]),c([h,h,b])]),d=f.normalizeMax(d);a.matrix=d;b=e(d.value[0].value[0]);d=c([c([b,h,h]),c([h,b,h]),c([d.value[0].value[2],d.value[1].value[2],b])]);a.dualMatrix=d};n.TrReflectionP={};n.TrReflectionP.kind="Tr";n.TrReflectionP.signature=["P"];n.TrReflectionP.updatePosition=function(a){var b=u.csnames[a.args[0]].homog.value,c=m.realmult(-.5,b[2]),d=m.zero,b=f.turnIntoCSList([f.turnIntoCSList([c,d,b[0]]),f.turnIntoCSList([d,
+c,b[1]]),f.turnIntoCSList([d,d,m.neg(c)])]),b=f.normalizeMax(b);a.matrix=b;a.dualMatrix=f.transpose(b)};n.TrReflectionL={};n.TrReflectionL.kind="Tr";n.TrReflectionL.signature=["L"];n.TrReflectionL.updatePosition=function(a){var b=m.mult,c=m.realmult,d=m.zero,e=u.csnames[a.args[0]].homog.value,h=e[0],k=e[1],e=e[2],l=b(h,h),n=b(k,k),q=c(-.5,m.sub(l,n)),r=b(h,k),b=f.turnIntoCSList([f.turnIntoCSList([m.neg(q),r,b(h,e)]),f.turnIntoCSList([r,q,b(k,e)]),f.turnIntoCSList([d,d,c(-.5,m.add(l,n))])]),b=f.normalizeMax(b);
+a.matrix=b;a.dualMatrix=f.transpose(b)};n.TrReflectionS={};n.TrReflectionS.kind="Tr";n.TrReflectionS.signature=["S"];n.TrReflectionS.updatePosition=n.TrReflectionL.updatePosition;n.TrReflectionC={};n.TrReflectionC.kind="Rc";n.TrReflectionC.signature=["C"];n.TrReflectionC.updatePosition=function(a){var b=u.csnames[a.args[0]].matrix;if("Circle"!==b.usage)console.log("reflection in general conics is not defined"),a.sclRsq=m.zero,a.matrix=f.fund;else{var c=m.add,d=m.mult,e=b.value[2].value,h=e[0],k=e[1],
+e=e[2],l=b.value[0].value[0];a.sclRsq=m.sub(c(d(h,h),d(k,k)),d(l,e))}a.dualMatrix=a.matrix=b};n._helper.ReflectC=function(a,b){var c=m.add,d=m.sub,e=m.mult,h=f.scalmult,k=a.matrix,l=k.value[0].value[0],n=k.value[2].value,q=n[1],r=n[2],t=b.value[0].value[0],u=b.value[2].value,w=u[1],x=u[2],c=d(m.realmult(2,c(e(n[0],u[0]),e(q,w))),c(e(l,x),e(t,r)));return v.withUsage(f.normalizeMax(f.sub(h(c,k),h(a.sclRsq,b))),"Circle")};n.ReflectCC={};n.ReflectCC.kind="C";n.ReflectCC.signature=["Rc","C"];n.ReflectCC.updatePosition=
+function(a){var b=u.csnames[a.args[1]];"Circle"!==b.matrix.usage?(console.log("reflecting general conics in circles is not defined"),a.matrix=v.withUsage(f.fund,"Circle")):a.matrix=n._helper.ReflectC(u.csnames[a.args[0]],b.matrix)};n.ReflectCL={};n.ReflectCL.kind="C";n.ReflectCL.signature=["Rc","L"];n.ReflectCL.updatePosition=function(a){var b=m.zero,c=u.csnames[a.args[1]].homog.value,b=n._helper.buildConicMatrix([b,b,b,c[0],c[1],m.realmult(2,c[2])]);a.matrix=n._helper.ReflectC(u.csnames[a.args[0]],
+b)};n._helper.ReflectCP=function(a,b){var c=b.matrix,d=c.value[2].value,d=f.turnIntoCSList([d[0],d[1],m.neg(c.value[0].value[0])]),e=f.cross;return f.normalizeMax(e(f.productMV(c,a),e(d,a)))};n.ReflectCP={};n.ReflectCP.kind="P";n.ReflectCP.signature=["Rc","P"];n.ReflectCP.updatePosition=function(a){a.homog=v.withUsage(n._helper.ReflectCP(u.csnames[a.args[1]].homog,u.csnames[a.args[0]]),"Point")};n.ReflectCArc={};n.ReflectCArc.kind="C";n.ReflectCArc.signature=["Rc","C"];n.ReflectCArc.updatePosition=
+function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,f=n._helper.ReflectCP(c.startPoint,b),d=n._helper.ReflectCP(d,b),e=n._helper.ReflectCP(e,b);a.startPoint=f;a.viaPoint=d;a.endPoint=e;a.isArc=!0;a.matrix=n._helper.ReflectC(b,c.matrix)};n.ReflectCS={};n.ReflectCS.kind="C";n.ReflectCS.signature=["Rc","S"];n.ReflectCS.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]],d=c.startpos,e=c.endpos,f=n._helper.midpoint(d,e),d=n._helper.ReflectCP(d,
+b),f=n._helper.ReflectCP(f,b),e=n._helper.ReflectCP(e,b);a.startPoint=d;a.viaPoint=f;a.endPoint=e;a.isArc=!0;e=m.zero;c=c.homog.value;c=n._helper.buildConicMatrix([e,e,e,c[0],c[1],m.realmult(2,c[2])]);a.matrix=n._helper.ReflectC(b,c)};n.TrInverse={};n.TrInverse.kind="Tr";n.TrInverse.signature=["Tr"];n.TrInverse.updatePosition=function(a){var b=u.csnames[a.args[0]];a.dualMatrix=f.transpose(b.matrix);a.matrix=f.transpose(b.dualMatrix)};n.TransformC={};n.TransformC.kind="C";n.TransformC.signature=["Tr",
+"C"];n.TransformC.updatePosition=function(a){var b=u.csnames[a.args[0]].dualMatrix,b=f.productMM(f.productMM(b,u.csnames[a.args[1]].matrix),f.transpose(b)),b=f.normalizeMax(b);a.matrix=v.withUsage(b,"Conic")};n.TransformArc={};n.TransformArc.kind="C";n.TransformArc.signature=["Tr","C"];n.TransformArc.updatePosition=function(a){var b=u.csnames[a.args[0]].matrix,c=u.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,c=f.normalizeMax(f.productMV(b,c.startPoint)),d=f.normalizeMax(f.productMV(b,d)),b=f.normalizeMax(f.productMV(b,
+e));a.startPoint=c;a.viaPoint=d;a.endPoint=b;a.isArc=!0;a.matrix=f.normalizeMax(n._helper.ConicBy5(null,c,d,b,f.ii,f.jj));a.matrix=v.withUsage(a.matrix,"Circle")};n.TransformP={};n.TransformP.kind="P";n.TransformP.signature=["Tr","P"];n.TransformP.updatePosition=function(a){a.homog=f.normalizeMax(f.productMV(u.csnames[a.args[0]].matrix,u.csnames[a.args[1]].homog));a.homog=v.withUsage(a.homog,"Point")};n.TransformL={};n.TransformL.kind="L";n.TransformL.signature=["Tr","L"];n.TransformL.updatePosition=
+function(a){a.homog=f.normalizeMax(f.productMV(u.csnames[a.args[0]].dualMatrix,u.csnames[a.args[1]].homog));a.homog=v.withUsage(a.homog,"Line")};n.TransformS={};n.TransformS.kind="S";n.TransformS.signature=["Tr","S"];n.TransformS.updatePosition=function(a){var b=u.csnames[a.args[0]],c=u.csnames[a.args[1]];n.Segment.setSegmentPos(a,f.productMV(b.dualMatrix,c.homog),f.productMV(b.matrix,c.startpos),f.productMV(b.matrix,c.endpos))};n.TransformPolygon={};n.TransformPolygon.kind="Poly";n.TransformPolygon.signature=
+["Tr","Poly"];n.TransformPolygon.updatePosition=function(a){var b=u.csnames[a.args[0]].matrix;a.vertices=f.turnIntoCSList(u.csnames[a.args[1]].vertices.value.map(function(a){a=f.normalizeMax(f.productMV(b,a));return a=v.withUsage(a,"Point")}))};n._helper.pointReflection=function(a,b){return f.normalizeMax(f.sub(f.scalmult(m.realmult(2,b.value[2]),a),f.scalmult(a.value[2],b)))};n._helper.conicOtherIntersection=function(a,b,c){var d=f.productMV(a,c);a=f.scalproduct(c,d);d=f.scalproduct(b,d);d=m.realmult(-2,
+d);b=f.scalmult(a,b);c=f.scalmult(d,c);c=f.add(b,c);return c=f.normalizeMax(c)};n.Dist={};n.Dist.kind="V";n.Dist.signature=["P","P"];n.Dist.updatePosition=function(a){var b=u.csnames[a.args[1]].homog;a.value=f.abs(f.sub(f.normalizeZ(u.csnames[a.args[0]].homog),f.normalizeZ(b)))};n.Angle={};n.Angle.kind="V";n.Angle.signature=["L","L","P"];n.Angle.initialize=function(a){void 0===a.angle&&(a.angle=.5*Math.PI);Va(m._helper.input(a.angle))};n.Angle.updatePosition=function(a){var b=u.csnames[a.args[1]].homog,
+c=u.csnames[a.args[2]].homog,d=f.cross(u.csnames[a.args[0]].homog,f.linfty),b=f.cross(b,f.linfty),c=f.crossratio3(d,b,f.ii,f.jj,c),c=m.mult(m.complex(0,.5),m.log(c)),d=(wb().value.real-c.value.real)/Math.PI,b=Math.round(d);!eb&&.01<Math.abs(b-d)&&Ub();c=m.complex(b*Math.PI+c.value.real,c.value.imag);Va(c);a.value=v.withUsage(c,"Angle")};n.Angle.stateSize=2;n.Text={};n.Text.kind="Text";n.Text.signature="**";n.Text.isMovable=!0;n.Text.updatePosition=Ka;n.Text.initialize=function(a){a.text=String(a.text);
+a.pos&&(a.homog=n._helper.initializePoint(a));a.dock&&(a.dock.offset=a.dock.offset&&2===a.dock.offset.length?f.realVector([+a.dock.offset[0],+a.dock.offset[1]]):f.realVector([0,0]))};n.Text.getParamForInput=function(a,b,c){return n.Free.getParamForInput(a,b,c)};n.Text.getParamFromState=function(a){return a.homog};n.Text.putParamToState=function(a,b){a.homog=b};n.Calculation={};n.Calculation.kind="Text";n.Calculation.signature="**";n.Calculation.isMovable=!0;n.Calculation.updatePosition=Ka;n.Calculation.initialize=
+function(a){n.Text.initialize(a);a.calculation=Ma(a.text)};n.Calculation.getText=function(a){return w(A(a.calculation))};n.Calculation.getParamForInput=n.Text.getParamForInput;n.Calculation.getParamFromState=n.Text.getParamFromState;n.Calculation.putParamToState=n.Text.putParamToState;n.Equation={};n.Equation.kind="Text";n.Equation.isMovable=!0;n.Equation.signature="**";n.Equation.updatePosition=Ka;n.Equation.initialize=function(a){n.Text.initialize(a);a.calculation=Ma(a.text)};n.Equation.getText=
+function(a){return a.text+" = "+w(A(a.calculation))};n.Equation.getParamForInput=n.Text.getParamForInput;n.Equation.getParamFromState=n.Text.getParamFromState;n.Equation.putParamToState=n.Text.putParamToState;n.Evaluate={};n.Evaluate.kind="Text";n.Evaluate.isMovable=!0;n.Evaluate.signature="**";n.Evaluate.updatePosition=Ka;n.Evaluate.initialize=function(a){n.Text.initialize(a);a.calculation=Ma(a.text)};n.Evaluate.getText=function(a){A(a.calculation);return a.text};n.Evaluate.getParamForInput=n.Text.getParamForInput;
+n.Evaluate.getParamFromState=n.Text.getParamFromState;n.Evaluate.putParamToState=n.Text.putParamToState;n.Plot={};n.Plot.kind="Text";n.Plot.isMovable=!0;n.Plot.signature="**";n.Plot.updatePosition=Ka;n.Plot.initialize=function(a){n.Text.initialize(a);a.calculation=Ma("plot(("+a.text+"))")};n.Plot.getText=function(a){A(a.calculation);return a.text};n.Plot.getParamForInput=n.Text.getParamForInput;n.Plot.getParamFromState=n.Text.getParamFromState;n.Plot.putParamToState=n.Text.putParamToState;n.Button=
+{};n.Button.kind="Text";n.Button.signature="**";n.Button.isMovable=!0;n.Button.updatePosition=Ka;n.Button.initialize=function(a){var b=document.createElement("button");wc(a,"click",b)};n.Button.getParamForInput=n.Text.getParamForInput;n.Button.getParamFromState=n.Text.getParamFromState;n.Button.putParamToState=n.Text.putParamToState;n.ToggleButton={};n.ToggleButton.kind="Text";n.ToggleButton.signature="**";n.ToggleButton.isMovable=!0;n.ToggleButton.updatePosition=Ka;n.ToggleButton.initialize=function(a){var b;
+b=void 0;void 0===b&&(b="CindyJSid");b+=++Ra;var c=document.createElement("input"),d=document.createElement("label");c.setAttribute("id",b);d.setAttribute("for",b);c.setAttribute("type","checkbox");a.pressed&&(c.checked=!0);a.checkbox=c;wc(a,"change",c,d)};n.ToggleButton.getParamForInput=n.Text.getParamForInput;n.ToggleButton.getParamFromState=n.Text.getParamFromState;n.ToggleButton.putParamToState=n.Text.putParamToState;n.EditableText={};n.EditableText.kind="Text";n.EditableText.isMovable=!0;n.EditableText.signature=
+[];n.EditableText.updatePosition=Ka;n.EditableText.initialize=function(a){var b=document.createElement("input");b.setAttribute("type","text");b.className="CindyJS-editabletext";Sa(a.fillalpha)||(a.fillalpha=1);a.fillcolor&&(b.style.backgroundColor=y.makeColor(a.fillcolor,a.fillalpha));Sa(a.minwidth)&&(b.style.width=a.minwidth-3+"px");"string"===typeof a.text&&(b.value=a.text);b.addEventListener("keydown",function(a){13===a.keyCode&&b.blur()});wc(a,"change",b)};n.EditableText.getText=function(a){return!1};
+n.EditableText.getParamForInput=n.Text.getParamForInput;n.EditableText.getParamFromState=n.Text.getParamFromState;n.EditableText.putParamToState=n.Text.putParamToState;n._helper.initializePoint=function(a){var b=0,c=0,d=0;if(a.pos){if("list"===a.pos.ctype&&f.isNumberVector(a.pos))return a.pos;2===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=1);3===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=a.pos[2])}a=f.turnIntoCSList([m._helper.input(b),m._helper.input(c),m._helper.input(d)]);return a=f.normalizeMax(a)};n._helper.initializeLine=
+function(a){var b=0,c=0,d=0;if(a.pos){if("list"===a.pos.ctype&&f.isNumberVector(a.pos))return a.pos;3===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=a.pos[2])}a=f.turnIntoCSList([m._helper.input(b),m._helper.input(c),m._helper.input(d)]);return a=f.normalizeMax(a)};n.Poly={};n.Poly.kind="Poly";n.Poly.signature="P*";n.Poly.updatePosition=function(a){a.vertices=f.turnIntoCSList(a.args.map(function(a){return u.csnames[a].homog}))};var od={CircleMFixedr:function(a){a.pinned=!0;a.type="CircleMr";return[a]},
+CircleByFixedRadius:function(a){a.pinned=!0;a.type="CircleMr";return[a]},CircleByRadius:function(a){a.type="CircleMr";return[a]},IntersectionConicLine:function(a){a.args=[a.args[1],a.args[0]];a.type="IntersectLC";return[a]},IntersectionCircleCircle:function(a){a.type="IntersectCirCir";return[a]},IntersectionConicConic:function(a){a.type="IntersectConicConic";return[a]},FreePoint:function(a){a.type="Free";return[a]},Orthogonal:function(a){a.type="Perp";return[a]},Parallel:function(a){a.type="Para";
+return[a]},Pole:function(a){a.type="PolarOfLine";return[a]},Polar:function(a){a.type="PolarOfPoint";return[a]},Arc:function(a){a.type="ArcBy3";return[a]},EuclideanMid:function(a){a.type="Mid";return[a]},AngularBisector:function(a){a.type="AngleBisector";return[a]},TransformConic:function(a){a.type="TransformC";return[a]},TransformSegment:function(a){a.type="TransformS";return[a]},TrMoebiusSegment:function(a){a.type="TrMoebiusS";return[a]},angleBisector:function(a){var b={name:a.name+"_Intersection",
+type:"Meet",args:a.args,visible:!1};a.type="AngleBisector";a.args=[a.args[0],a.args[1],b.name];return[b,a]},Transform:function(a){var b=u.csnames[a.args[1]],b={Tr:"Transform",Mt:"TrMoebius",Rc:"ReflectC"}[u.csnames[a.args[0]].kind]+(b.isArc?"Arc":b.kind);if(n.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]},TrReflection:function(a){var b="TrReflection"+u.csnames[a.args[0]].kind;if(n.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]}},
+ge="align alpha angle args arrow arrowposition arrowshape arrowsides arrowsize clip color dashtype drawtrace fillalpha fillcolor filled labeled labelpos name overhang pinned printname radius size text text_fontfamily textbold textitalics textsize tracedim tracelength traceskip tracing type visible".split(" ");qa.saveState=function(){return{geometry:he()}};var ra={},Ed,Hb,Fd,Gd;Ed=[[],[.2],[.075,.225],[44/45,-56/15,32/9],[19372/6561,-25360/2187,64448/6561,-212/729],[9017/3168,-355/33,46732/5247,49/
+176,-5103/18656],[35/384,0,500/1113,125/192,-2187/6784,11/84]];Hb=[0,.2,.3,.8,8/9,1,1];Fd=[35/384,0,500/1113,125/192,-2187/6784,11/84,0];Gd=[5179/57600,0,7571/16695,.6140625,-92097/339200,187/2100,.025];var Aa,ca=[],xc=[],hc=!1;ra.tick=function(a){a/=Lb;for(var b=0;b<Lb;b++)ra.tick1(a),Cb+=a,A(ia.simulationstep)};ra.tick1=function(a){for(var b=a,c=0;0<a&&c<.999*a||0>a&&c>.999*a;)b=ra.oneRKStep(b),c+=b,b=Math.min(2*b,a-c),b=Math.max(b,1E-16),ra.restorePosition(),ra.doCollisions(),ra.calculateForces(),
+ra.moveToFinalPos();return!0};ra.restorePosition=function(){Aa.forEach(function(a){N[a.type].restorePos(a,9)})};ra.doCollisions=function(){Aa.forEach(function(a){N[a.type].doCollisions(a)})};ra.calculateForces=function(){Aa.forEach(function(a){N[a.type].calculateForces(a)})};ra.moveToFinalPos=function(){Aa.forEach(function(a){N[a.type].move(a)})};ra.oneRKStep=function(a){for(var b=function(a){Aa.forEach(function(b){N[b.type].initRK(b,a);N[b.type].storePosition(b)})},c=function(a){Aa.forEach(function(b){N[b.type].setToTimestep(b,
+Hb[a])})},d=function(a){Aa.forEach(function(b){N[b.type].proceedMotion(b,Hb[a],a,Ed[a])})},e=function(){Aa.forEach(function(a){N[a.type].resetForces(a)})},f=function(a){Aa.forEach(function(b){N[b.type].calculateDelta(b,a)})},h=function(b){var c=0;Aa.forEach(function(a){N[a.type].proceedMotion(a,Hb[6],7,Fd);N[a.type].savePos(a,8);N[a.type].proceedMotion(a,Hb[6],7,Gd);N[a.type].savePos(a,9);c+=N[a.type].sqDist(a,8,9)});return c=Math.sqrt(c)/a},k=function(a){Aa.forEach(function(a){N[a.type].recallPosition(a)})},
+l=!1;!l;){b(a);for(var m=0;7>m;m++)c(m),d(m),e(),ra.calculateForces(),f(m);h(a)>N.env.errorbound&&a>N.env.lowestdeltat?(a/=N.env.slowdownfactor,k()):l=!0}return a};var N={Mass:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.mass&&(a.mass=1);"undefined"===typeof a.charge&&(a.charge=0);"undefined"===typeof a.friction&&(a.friction=0);a.lnfrict=0;"undefined"===typeof a.limitspeed&&(a.limitspeed=!1);"undefined"===typeof a.fixed&&(a.fixed=!1);"undefined"===typeof a.radius&&
+(a.radius=1);a.internalmove=!1;a.fx=0;a.fy=0;a.fz=0;a.vx=a.vx||0;a.vy=a.vy||0;a.vz=a.vz||0;a.mtype=0;a.env=N.env;a.deltat=0;a.mx=0;a.my=0;a.mz=0;a.mvx=0;a.mvy=0;a.mvz=0;a.dx=[0,0,0,0,0,0,0,0,0,0];a.dy=[0,0,0,0,0,0,0,0,0,0];a.dz=[0,0,0,0,0,0,0,0,0,0];a.dvx=[0,0,0,0,0,0,0,0,0,0];a.dvy=[0,0,0,0,0,0,0,0,0,0];a.dvz=[0,0,0,0,0,0,0,0,0,0];a.midx=0;a.midy=0;a.midz=0;a.lx=0;a.ly=0;a.lz=0},resetForces:function(a){a.fx=0;a.fy=0;a.fz=0},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){var c=D.extractPoint(a.el.homog);
+a.x=c.x;a.y=c.y;a.z=0;a.xo=a.x;a.yo=a.y;a.zo=a.z;a.vxo=a.vx;a.vyo=a.vy;a.vzo=a.vz;a.deltat=b;a.fx=0;a.fy=0;a.fz=0},setVelocity:function(a,b,c,d){d||(d=0);a.vx=b;a.vy=c;a.vz=d},move:function(a){a.pos=[a.x,a.y,1];a.internalmove=!0;aa&&U.down&&a.el===aa.mover||Ea(a.el,f.realVector(a.pos),"homog");a.el.sx=a.x;a.el.sy=a.y;a.internalmove=!1},proceedMotion:function(a,b,c,d){if(!a.fixed)for(a.x=a.mx,a.y=a.my,a.z=a.mz,a.vx=a.mvx,a.vy=a.mvy,a.vz=a.mvz,b=0;b<c;b++)a.x+=d[b]*a.dx[b]*a.deltat,a.y+=d[b]*a.dy[b]*
+a.deltat,a.z+=d[b]*a.dz[b]*a.deltat,a.vx+=d[b]*a.dvx[b]*a.deltat,a.vy+=d[b]*a.dvy[b]*a.deltat,a.vz+=d[b]*a.dvz[b]*a.deltat},calculateForces:function(a){var b=Math.sqrt(a.vx*a.vx+a.vy*a.vy+a.vz*a.vz);a.lnfrict=-Math.log((1-a.friction)*(1-a.env.friction)*(.1<b&&a.limitSpeed?.1/b:1));a.fx+=-a.vx*a.lnfrict*a.mass;a.fy+=-a.vy*a.lnfrict*a.mass;a.fz+=-a.vz*a.lnfrict*a.mass},calculateDelta:function(a,b){a.dx[b]=a.vx;a.dy[b]=a.vy;a.dz[b]=a.vz;a.dvx[b]=a.fx/a.mass;a.dvy[b]=a.fy/a.mass;a.dvz[b]=a.fz/a.mass},
+savePos:function(a,b){a.dx[b]=a.x;a.dy[b]=a.y;a.dz[b]=a.z;a.dvx[b]=a.vx;a.dvy[b]=a.vy;a.dvz[b]=a.vz},restorePos:function(a,b){a.fixed||(a.x=a.dx[b],a.y=a.dy[b],a.z=a.dz[b],a.vx=a.dvx[b],a.vy=a.dvy[b],a.vz=a.dvz[b])},sqDist:function(a,b,c){var d=(a.dx[b]-a.dx[c])*(a.dx[b]-a.dx[c]),d=d+(a.dy[b]-a.dy[c])*(a.dy[b]-a.dy[c]),d=d+(a.dz[b]-a.dz[c])*(a.dz[b]-a.dz[c]),d=d+(a.dvx[b]-a.dvx[c])*(a.dvx[b]-a.dvx[c]),d=d+(a.dvy[b]-a.dvy[c])*(a.dvy[b]-a.dvy[c]);return d+=(a.dvz[b]-a.dvz[c])*(a.dvz[b]-a.dvz[c])},kineticEnergy:function(a){return.5*
+a.mass*(a.vx*a.vx+a.vy*a.vy+a.vz*a.vz)},storePosition:function(a){a.mx=a.x;a.my=a.y;a.mz=a.z;a.mvx=a.vx;a.mvy=a.vy;a.mvz=a.vz},recallPosition:function(a){a.fixed||(a.x=a.mx,a.y=a.my,a.z=a.mz,a.vx=a.mvx,a.vy=a.mvy,a.vz=a.mvz)},doCollisions:function(a){}},Sun:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.mass&&(a.mass=10);"undefined"===typeof a.friction&&(a.friction=0);a.charge=0;a.x=0;a.y=0;a.z=0},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},
+initRK:function(a,b){var c=D.extractPoint(a.el.homog);a.x=c.x;a.y=c.y;a.z=0},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateDelta:function(a,b){},calculateForces:function(a){for(var b=a.x,c=a.y,d=a.z,e=0;e<ca.length;e++){var f=ca[e],h=f.behavior.x,k=f.behavior.y,l=f.behavior.z,m=Math.sqrt((b-h)*(b-h)+(c-k)*(c-k)+(d-l)*(d-l)),k=(c-k)*a.mass*f.behavior.mass/(m*m*m),l=(d-l)*a.mass*f.behavior.mass/(m*m*m);f.behavior.fx+=(b-h)*a.mass*f.behavior.mass/(m*m*
+m)*f.behavior.mass;f.behavior.fy+=k*f.behavior.mass;f.behavior.fz+=l*f.behavior.mass}},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},Velocity:{reset:function(a){var b=u.csnames[a.geo[1]];console.log(b);var c=D.extractPoint(b.homog);a=D.extractPoint(u.csnames[a.geo[2]].homog);b=b.behavior;N[b.type].setVelocity(b,a.x-c.x,a.y-c.y,0)},resetForces:function(a){},
+getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){var b=u.csnames[a.geo[2]];if(!aa||!U.down||b!==aa.mover){var c=u.csnames[a.geo[1]];a=D.extractPoint(c.homog);c=c.behavior;a=f.realVector([a.x+c.vx,a.y+c.vy,1]);Ea(b,a,"homog")}},proceedMotion:function(a,b,c,d){},calculateForces:function(a){},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},
+storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},Gravity:{reset:function(a,b){a.vel=[0,0,0];a.pos=[0,0,0,0];a.el=b;"undefined"===typeof a.strength&&(a.strength=1);a.namea=b.args[0];a.nameb=b.args[1];a.ma=u.csnames[a.namea];a.mb=u.csnames[a.nameb]},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateDelta:function(a,b){},calculateForces:function(a){var b=
+D.extractPoint(a.ma.homog),c=D.extractPoint(a.mb.homog),d=(c.x-b.x)*a.strength;a=(c.y-b.y)*a.strength;for(b=0;b<ca.length;b++)c=ca[b],c.behavior.fx+=d*c.behavior.mass,c.behavior.fy+=a*c.behavior.mass,c.behavior.fz+=0*c.behavior.mass},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},Spring:{reset:function(a,b){a.el=b;"undefined"===typeof a.strength&&(a.strength=
+1);"undefined"===typeof a.amplitude&&(a.amplitude=0);"undefined"===typeof a.phase&&(a.phase=0);"undefined"===typeof a.speed&&(a.speed=1);"undefined"===typeof a.l0&&(a.l0=0);"undefined"===typeof a.stype&&(a.stype=1);"undefined"===typeof a.readOnInit&&(a.readOnInit=!1);a.namea=b.args[0];a.nameb=b.args[1];a.ma=u.csnames[a.namea];a.mb=u.csnames[a.nameb];var c=D.extractPoint(a.ma.homog),d=D.extractPoint(a.mb.homog);a.l0=Math.sqrt((c.x-d.x)*(c.x-d.x)+(c.y-d.y)*(c.y-d.y));a.env=N.env},resetForces:function(a){},
+getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateForces:function(a){var b,c,d,e;!a.ma.behavior||aa&&U.down&&a.ma===aa.mover?(c=D.extractPoint(a.ma.homog),b=c.x,d=c.y):(b=a.ma.behavior.x,d=a.ma.behavior.y);!a.mb.behavior||aa&&U.down&&a.mb===aa.mover?(e=D.extractPoint(a.mb.homog),c=e.x,e=e.y):(c=a.mb.behavior.x,e=a.mb.behavior.y);var f=Math.sqrt((b-c)*(b-c)+(d-e)*(d-e)),h=a.l0,k=a.stype;1===
+k&&(h=0);var l=0;if(2===k||3===k)l=a.ma.behavior.mass*a.mb.behavior.mass*a.strength;2===k&&(l=-l);var m,n;if(0===f||0!==k&&1!==k)if(a.ma.behavior&&a.mb.behavior&&0!==f){if(f*=f*f,2===k||3===k)m=(b-c)*l/f,n=(d-e)*l/f}else m=n=0;else m=-(b-c)*a.strength*(f-h)/f*a.env.springstrength,n=-(d-e)*a.strength*(f-h)/f*a.env.springstrength;a.ma.behavior&&(a.ma.behavior.fx+=m,a.ma.behavior.fy+=n);a.mb.behavior&&(a.mb.behavior.fx-=m,a.mb.behavior.fy-=n)},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,
+b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}},det:function(a,b,c,d,e,f){return c*f-e*d+e*b-a*f+a*d-c*b},Bouncer:{reset:function(a,b){a.el=b;"undefined"===typeof a.xdamp&&(a.xdamp=0);"undefined"===typeof a.ydamp&&(a.ydamp=0);"undefined"===typeof a.motorchanger&&(a.motorchanger=!0);a.namea=b.args[0];a.nameb=b.args[1];a.ma=u.csnames[a.namea];a.mb=u.csnames[a.nameb];var c=D.extractPoint(a.ma.homog),
+d=D.extractPoint(a.mb.homog);a.x1o=1.01*c.x-.01*d.x;a.y1o=1.01*c.y-.01*d.y;a.x2o=1.01*d.x-.01*c.x;a.y2o=1.01*d.y-.01*c.y;a.env=N.env},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){a.deltat=b},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateForces:function(a){},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},
+recallPosition:function(a){},doCollisions:function(a){for(var b=D.extractPoint(a.ma.homog),c=D.extractPoint(a.mb.homog),d=b.x,b=b.y,e=c.x,c=c.y,f=a.x1o,h=a.y1o,k=a.x2o,l=a.y2o,n=Math.sqrt((d-e)*(d-e)+(b-c)*(b-c)),q=(d-e)/n,n=(b-c)/n,r=0;r<ca.length;r++){var t=ca[r],u=t.behavior.xo,v=t.behavior.yo,w=t.behavior.x,x=t.behavior.y,y=m.mult(m.complex(f,h),m.complex(e,c)),z=m.mult(m.complex(k,l),m.complex(d,b)),y=m.sub(y,z),z=m.mult(m.complex(u,v),m.complex(d,b)),y=m.add(y,z),z=m.mult(m.complex(u,v),m.complex(e,
+c)),y=m.sub(y,z),z=m.sub(m.complex(f,h),m.complex(k,l)),y=m.div(y,z);0>N.det(d,b,e,c,w,x)*N.det(d,b,e,c,y.value.real,y.value.imag)&&0>N.det(d,b,w,x,y.value.real,y.value.imag)*N.det(e,c,w,x,y.value.real,y.value.imag)&&(v=t.behavior.mvx+a.deltat*(-y.value.real+t.behavior.xo),w=t.behavior.mvy+a.deltat*(-y.value.imag+t.behavior.yo),u=q*v+n*w,v=n*v-q*w,t.behavior.x=y.value.real,t.behavior.y=y.value.imag,t.behavior.vx=q*u*(1-a.xdamp),t.behavior.vy=n*u*(1-a.xdamp),t.behavior.vx+=-n*v*(1-a.ydamp),t.behavior.vy+=
+q*v*(1-a.ydamp))}a.x1o=d;a.y1o=b;a.x2o=e;a.y2o=c}},Environment:{init:function(a){"undefined"===typeof a.gravity&&(a.gravity=0);"undefined"===typeof a.friction&&(a.friction=0);"undefined"===typeof a.springstrength&&(a.springstrength=1);"undefined"!==typeof a.accuracy&&(Lb=a.accuracy);"undefined"!==typeof a.deltat&&oa(a.deltat/.6);"undefined"===typeof a.charges&&(a.charges=!1);"undefined"===typeof a.balls&&(a.balls=!1);"undefined"===typeof a.newton&&(a.newton=!1);"undefined"===typeof a.ballInteractionBoosting&&
+(a.ballInteractionBoosting=1);N.env=a;a.errorbound=.001;a.lowestdeltat=1E-7;a.slowdownfactor=2},reset:function(a){},resetForces:function(a){},getBlock:!1,setToTimestep:function(a,b,c){},initRK:function(a,b){},setVelocity:function(a,b,c,d){},move:function(a){},proceedMotion:function(a,b,c,d){},calculateForces:function(a){var b,c,d,e,f,h,k,l,m,n;if(a.newton)for(b=0;b<ca.length-1;b++)for(c=ca[b],d=c.behavior.x,e=c.behavior.y,f=b+1;f<ca.length;f++)h=ca[f],k=h.behavior.x,l=h.behavior.y,n=Math.sqrt((d-
+k)*(d-k)+(e-l)*(e-l)),k=(d-k)*c.behavior.mass*h.behavior.mass/(n*n*n),l=(e-l)*c.behavior.mass*h.behavior.mass/(n*n*n),c.behavior.fx-=k,c.behavior.fy-=l,h.behavior.fx+=k,h.behavior.fy+=l;if(a.charges)for(b=0;b<ca.length-1;b++)for(c=ca[b],d=c.behavior.x,e=c.behavior.y,f=b+1;f<ca.length;f++)h=ca[f],k=h.behavior.x,l=h.behavior.y,n=Math.sqrt((d-k)*(d-k)+(e-l)*(e-l)),k=(d-k)*c.behavior.charge*h.behavior.charge/(n*n*n),l=(e-l)*c.behavior.charge*h.behavior.charge/(n*n*n),c.behavior.fx+=k,c.behavior.fy+=l,
+h.behavior.fx-=k,h.behavior.fy-=l;if(a.balls)for(b=0;b<ca.length-1;b++)if(c=ca[b],0!==c.behavior.radius)for(d=c.behavior.x,e=c.behavior.y,f=b+1;f<ca.length;f++)h=ca[f],0!==h.behavior.radius&&(k=h.behavior.x,l=h.behavior.y,m=c.behavior.radius+h.behavior.radius,n=Math.sqrt((d-k)*(d-k)+(e-l)*(e-l)),0===a.ballInteractionBoosting?(k=(d-k)/(n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n)*(n>m?0:(n-m)*(n-m))):1===a.ballInteractionBoosting?(k=(d-k)/(n*n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n*n)*(n>m?0:(n-m)*
+(n-m))):(k=(d-k)/(n*n*n*n*n)*(n>m?0:(n-m)*(n-m)),l=(e-l)/(n*n*n*n*n)*(n>m?0:(n-m)*(n-m))),c.behavior.fx+=k,c.behavior.fy+=l,h.behavior.fx-=k,h.behavior.fy-=l);for(b=0;b<ca.length;b++)c=ca[b],c.behavior.fx+=0,c.behavior.fy+=-a.gravity*c.behavior.mass,c.behavior.fz+=0},calculateDelta:function(a,b){},savePos:function(a,b){},restorePos:function(a,b){},sqDist:function(a,b,c){return 0},kineticEnergy:function(a){},storePosition:function(a){},recallPosition:function(a){},doCollisions:function(a){}}};return qa};
+return H}(),createCindy=CindyJS;"undefined"!==typeof process&&"undefined"!==typeof module&&"undefined"!==typeof module.exports&&"undefined"===typeof window&&(module.exports=CindyJS);
+//# sourceMappingURL=Cindy.js.map
+
diff --git a/texmf-dist/scripts/ketpic/data/js/CindyJS.css b/texmf-dist/scripts/ketpic/data/js/CindyJS.css
new file mode 100644
index 00000000..2fdefb34
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/js/CindyJS.css
@@ -0,0 +1,121 @@
+.CindyJS-toolbar button, .CindyJS-animbuttons button, .CindyJS-button button, .CindyJS-button label {
+ background-color: #bfc4d0;
+ border: 1px solid #d0d0d0;
+ box-shadow: inset 1px 1px 2px #fff, inset -1px -1px 2px #aaa;
+ outline: none; }
+
+.CindyJS-toolbar button:active, .CindyJS-animbuttons button:active, .CindyJS-toolbar button.CindyJS-active, .CindyJS-animbuttons button.CindyJS-active, .CindyJS-button button:active, .CindyJS-button label:active, .CindyJS-button input[type=checkbox]:checked + label {
+ background-color: #aaafbb;
+ box-shadow: inset 1px 1px 2px #999, inset -1px -1px 2px #ccc; }
+
+.CindyJS-toolbar, .CindyJS-animbuttons {
+ line-height: 0px; }
+ .CindyJS-toolbar button, .CindyJS-animbuttons button {
+ display: inline-block;
+ margin: 0px;
+ padding: 0px; }
+ .CindyJS-toolbar button:focus, .CindyJS-animbuttons button:focus {
+ border-color: #06f; }
+ .CindyJS-toolbar img, .CindyJS-animbuttons img {
+ margin: 0px;
+ border: none;
+ display: block; }
+
+.CindyJS-widget {
+ overflow: hidden;
+ z-index: 0; }
+ .CindyJS-widget canvas {
+ z-index: 1; }
+ .CindyJS-widget .CindyJS-baseline {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+ position: absolute;
+ white-space: nowrap;
+ margin-top: -1000px; }
+ .CindyJS-widget .CindyJS-baseline > img {
+ margin: 0px;
+ padding: 0px;
+ border: none;
+ display: inline;
+ position: static;
+ vertical-align: baseline;
+ visibility: hidden;
+ margin-right: -1px; }
+ .CindyJS-widget .CindyJS-baseline .CindyJS-button {
+ display: inline-block; }
+ .CindyJS-widget .CindyJS-button {
+ position: relative;
+ z-index: 2; }
+ .CindyJS-widget .CindyJS-toolbar, .CindyJS-widget .CindyJS-animbuttons {
+ position: absolute; }
+ .CindyJS-widget .CindyJS-toolbar button, .CindyJS-widget .CindyJS-animbuttons button {
+ position: relative;
+ z-index: 3; }
+ .CindyJS-widget .CindyJS-animspeed {
+ position: relative;
+ z-index: 3; }
+ .CindyJS-widget .CindyJS-animcontrols {
+ bottom: 5px;
+ left: 5px; }
+
+.CindyJS-button input[type=checkbox] {
+ position: absolute;
+ left: -10000px; }
+
+.CindyJS-button button, .CindyJS-button label {
+ margin: -6px -7px;
+ padding: 5px 6px;
+ border-radius: 4px; }
+
+.CindyJS-button button:focus, .CindyJS-button input[type=checkbox]:focus + label {
+ box-shadow: 0px 0px 3px #06f, inset 1px 1px 2px #fff, inset -1px -1px 2px #aaa; }
+
+.CindyJS-button button:focus:active, .CindyJS-button input[type=checkbox]:focus:checked + label {
+ background-color: #aaafbb;
+ box-shadow: 0px 0px 3px #06f, inset 1px 1px 2px #999, inset -1px -1px 2px #ccc; }
+
+.CindyJS-editabletext {
+ border: 1px solid #000;
+ margin: -4px -4px -1px;
+ padding: 4px 4px 1px; }
+ .CindyJS-editabletext:focus {
+ box-shadow: 0px 0px 3px #06f; }
+
+.CindyJS-toolbar div {
+ line-height: 0px; }
+
+.CindyJS-toolbar span.CindyJS-spacer {
+ display: inline-block;
+ margin: 0px;
+ padding: 1px;
+ width: 32px;
+ height: 24px; }
+
+.CindyJS-animcontrols {
+ position: absolute;
+ background-color: #00f;
+ height: 36px;
+ width: 102px; }
+ .CindyJS-animcontrols .CindyJS-animspeed {
+ height: 10px;
+ width: 100%;
+ border-radius: 4px;
+ background-color: #ff7f7f;
+ box-shadow: inset 1px 1px 2px #999, inset -1px -1px 2px #ccc; }
+ .CindyJS-animcontrols .CindyJS-animspeed div {
+ width: 50%;
+ height: 100%;
+ border-radius: 4px;
+ background-color: #cc0000;
+ box-shadow: inset 1px 1px 2px #fff, inset -1px -1px 2px #aaa; }
+ .CindyJS-animcontrols .CindyJS-animbuttons {
+ white-space: nowrap; }
+
+.CindyJS-animbuttons button {
+ border-radius: 4px;
+ width: 34px;
+ height: 26px;
+ box-sizing: border-box; }
+
+/*# sourceMappingURL=CindyJS.css.map */ \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/data/js/ketcindylib.txt b/texmf-dist/scripts/ketpic/data/js/ketcindylib.txt
new file mode 100644
index 00000000..f1247e68
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/js/ketcindylib.txt
@@ -0,0 +1,6389 @@
+Ketinit():=Ketinit(1);
+Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]);
+Ketinit(sy,rangex,rangey):=(
+ regional(pt,tmp,tmp1,tmp2);
+ PenThickInit=8;
+ ULEN="1cm";
+ KETPICLAYER=20;
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ KETPICCOUNT=1;
+ KCOLOR=[0,0,0];
+ GLIST=[];
+ GCLIST=[];
+// GDATALIST=[];
+ GOUTLIST=[];
+ POUTLIST=[];
+ VLIST=[];
+ FUNLIST=[];
+ LETTERlist=[];
+ COM0thlist=[];
+ COM1stlist=[];
+ COM2ndlist=[];
+ SCIWRLIST=[];
+ SCIRELIST=[];
+ ADDAXES="1";
+ LFmark=unicode("000a");
+ Dq=unicode("0022");
+ WaitUnit=10;
+ CONTINUED=0;
+ OutComList=[];
+ OutFileLIst=[]; // 15.10.22
+ FigPdfList=[]; // 16.04.08
+ ADDPACK=[]; // 16.05.16
+ ErrFlag=0;
+ setdirectory(Dirwork);
+ if(isstring(Fhead), // 15.04.06
+ Fnametex=Fhead+".tex";
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+ );
+ if(!isstring(Mackc),// 16.06.07
+ Mackc="sh";
+ );
+ ArrowlineNumber=1; // 15.01.05
+ ArrowheadNumber=1;
+ BezierNumber=1; //15.01.03
+ SCALEX=1;
+ SCALEY=sy;
+// Setscaling(sy);
+ XMIN=rangex_1/SCALEX;
+ XMAX=rangex_2/SCALEX;
+ YMIN=rangey_1/SCALEY;
+ YMAX=rangey_2/SCALEY;
+ Setwindow("Msg=n"); // 16.05.31
+);
+
+DqDq(str):=unicode("0022")+str+unicode("0022");
+
+Tab2list(dtstr):=Tab2list(dtstr,[]);
+Tab2list(dtstr,options):=(
+//help:Tab2list(datastr);
+//help:Tab2list(options=[0]);
+ regional(dtall,dt,rep,out,crm,lfm,htm,first,tmp,tmp1,tmp2);
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ htm=unicode("0009");
+ rep=0;
+ if(length(options)>0,rep=options_1);
+ first=lfm; // 16.09.05from
+ if(indexof(dtstr,crm)>0,
+ first=crm;
+ if(indexof(dtstr,crm+lfm)>0,
+ first=first+lfm;
+ ); // 16.09.05upto
+ );
+ tmp1=Indexall(dtstr,first);
+ tmp1=prepend(0,tmp1);
+ tmp1=append(tmp1,length(dtstr));
+ dtall=[];
+ forall(1..(length(tmp1)-1),
+ tmp=substring(dtstr,tmp1_#,tmp1_(#+1)-1);
+ if(length(tmp)>0,
+ dtall=append(dtall,tmp);
+ );
+ );
+ out=[];
+ forall(dtall,dt,
+ tmp1=tokenize(dt,unicode("0009"));
+ tmp2=[];
+ forall(tmp1,
+ if(isstring(#),tmp=parse(#),tmp=#);
+ if(!isreal(tmp),
+ if(length(#)>0,tmp=#,tmp=rep);
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ out=append(out,tmp2);
+ );
+ out;
+);
+
+Columnlist(dt,list):=( // 16.09.04
+//help:Columnlist(dt,1..3);
+ apply(dt,#_list);
+);
+
+Dispmat(dt):=( // 16.09.16
+//help:Dispmat(dt);
+ regional(htm,crm,lfm,row,tmp,tmp1,tmp2);
+ htm=unicode("0009");
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ tmp2="";
+ forall(dt,row,
+ tmp1="";
+ forall(row,
+ if(isstring(#),
+ tmp1=tmp1+#+htm;
+ ,
+ tmp1=tmp1+text(#)+htm;
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp1=tmp1+lfm;
+ tmp2=tmp2+tmp1;
+ );
+ print(tmp2);
+ println();
+);
+
+norm(v1):=( // 16.09.01
+//help:norm([2,1,3]);
+ regional(out,tmp,tmp1,tmp2);
+ out=0;
+ forall(1..length(v1),
+ out=out+(v1_#)^2;
+ );
+ out=sqrt(out);
+ out;
+);
+norm(v1,v2):=(
+ norm(v2-v1);
+);
+
+// 16.03.28
+Removespace(str):=(
+//help:Removespace(" a b c ");
+ regional(tmp,flg,out);
+ tmp=length(str)+1;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ if((str_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(str,tmp-1,length(str));
+ flg=0;
+ tmp=0;
+ forall(reverse(1..length(out)),
+ if(flg==0,
+ if((out_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(out,0,tmp);
+);
+
+Indexall(str,key):=(
+ regional(rest,out,flg,tmp,tmp1,);
+ out=[];
+ rest=str;
+ flg=0;
+ forall(1..length(str),
+ if(flg==0,
+ tmp=indexof(rest,key);
+ if(tmp>0,
+ tmp1=tmp+length(str)-length(rest);
+ out=append(out,tmp1);
+ rest=substring(rest,tmp,length(rest));
+ ,
+ flg=1;
+ );
+ );
+ );
+ out;
+);
+
+Changestyle(nameL,style):=(
+//help:Changestyle(["sgAB"],["da"]);
+ regional(nmL,name,Ltype,Ltypeorg,Noflg,opcindy,tmp);
+ tmp=Divoptions(style);
+ Ltypeorg=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ forall(nmL,name,
+ Ltype=Ltypeorg;
+ GCLIST=select(GCLIST,#_1!=name);
+ COM2ndlist=select(COM2ndlist,indexof(#,"("+name)==0); // 15.05.23
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+);
+
+Op(n,object):=( // 16.05.25
+//help:Op(4,[1,2,3,4]);
+//help:Op(3,"abcd");
+ regional(out);
+ if(islist(object),
+ out=object_n;
+ ,
+ if(isstring(object),
+ out=substring(object,n-1,n);
+ );
+ );
+ out;
+);
+
+Toupper(str):=(
+ regional(alphabet,out,tmp,tmp1);
+ alphabet="abcdefghijklmnopqrstuvwxyz";
+ out="";
+ forall(1..length(str),
+ tmp=substring(str,#-1,#);
+ tmp1=indexof(alphabet,tmp);
+ if(tmp1>0,
+ out=out+unicode(text(tmp1+64),base->10);
+ ,
+ out=out+tmp;
+ );
+ );
+ out;
+);
+
+Textformat(value,dig):=(
+//help:Textformat(2/3,4);
+//help:Textformat([gr1,gr2],5);
+ regional(vv,tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+Textformat(#,dig)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ if(ispoint(value) % isstring(value),
+// vv=Lcrd(value);
+// tmp1=Textformat(vv,dig);
+// tmp1=text(value); // 15.04.07
+ if(isstring(value),tmp1=Dq+value+Dq,tmp1=text(value)); // 15.10.02
+ ,
+ tmp1=format(value,dig);
+ );
+ );
+ tmp1;
+);
+
+Sprintf(value,dig):=(
+//help:Sprintf(5.1,4);
+ regional(vv,tmp,tmp1);
+ if(!islist(value),
+ vv=Textformat(value,dig);
+ if(indexof(vv,".")==0,vv=vv+".");
+ vv=vv+"0000000000000000";
+ tmp=indexof(vv,".")+dig;
+ vv=substring(vv,0,tmp);
+ ,
+ vv=apply(value,Sprintf(#,dig));
+ );
+ vv;
+);
+
+Assign(funstr,vrL):=(
+ regional(nn,out,tmp,tmp1);
+ nn=length(vrL)/2;
+ out=funstr;
+ forall(1..nn,
+ out=Assign(out,vrL_(2*#-1),vrL_(2*#));
+ );
+ out;
+);
+
+Assign(funstr,varname,rep):=(
+//help:Assign("x^2+a*x","a",1.3);
+//help:Assign("a*x^2+b*x",["a",1,"b",2]);
+ regional(repstr,ii,jj,tmp,tmp1,tmp2,Notvar,Flg);
+ if(isstring(rep),repstr=rep,repstr="("+Textformat(rep,5)+")"); // 15.02.09, 07.06
+ tmp=[46]; // 12.20
+ tmp=concat(tmp,48..57);
+ tmp=concat(tmp,65..90);
+ tmp=concat(tmp,97..122);
+ Notvar=apply(tmp,unicode(text(#),base->10));
+ tmp2="";
+ forall(1..100,
+ ii=indexof(funstr,varname);
+ if(ii>0,
+ Flg=0;
+ if(ii>1,
+ tmp=substring(funstr,ii-2,ii-1);
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,ii);
+ funstr=substring(funstr,ii,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ jj=ii-1+length(varname);
+ if(jj<length(funstr),
+ tmp=substring(funstr,jj,jj+1));
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,jj);
+ funstr=substring(funstr,jj,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp2=tmp2+substring(funstr,0,ii-1)+repstr;
+ funstr=substring(funstr,jj,length(funstr));
+ );
+ );
+ );
+ funstr=tmp2+funstr;
+ funstr;
+);
+
+MeasureDepth(list):=(
+ regional(tmp,Depth,Flg);
+ Flg=0;
+ Depth=0;
+ if(ispoint(list), // 15.01.22
+ Depth=0;
+ Flg=1;
+ ,
+ tmp=list_1;
+ );
+ repeat(4,
+ if(Flg==0,
+ if(islist(tmp),
+ tmp=tmp_1;
+ Depth=Depth+1;
+ ,
+ if(ispoint(tmp),Depth=Depth+1);
+ Flg=1;
+ );
+ );
+ );
+ Depth;
+);
+
+Flattenlist(pltlist):=(
+//help:Flattenlist([[2,3],[[1,2],[5,6]]]);
+ regional(Out,nn,Dt,ii,tmp,flg);
+ Out=[];
+ if(MeasureDepth(pltlist)==1,
+ Out=[pltlist];
+ ,
+ forall(1..length(pltlist),nn,
+ Dt=pltlist_nn;
+ if(MeasureDepth(Dt)<2,
+ Out=append(Out,Dt);
+ ,
+ forall(1..length(Dt),ii,
+ tmp=Flattenlist(Dt_ii);
+ Out=concat(Out,tmp);
+ );
+ );
+ );
+ );
+ Out;
+);
+
+Divoptions(options):=(
+//help:Divoptions(options);
+ regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy,flg,tmp,tmp1);
+ Ltype="dr"; // 2015.01.13
+ Noflg=0;
+ Inflg=0;
+ Outflg=0;
+ eqL=[];
+ realL=[];
+ strL=[];
+ opstr="";
+ opcindy="";
+ forall(options,
+ flg=0;
+ if(flg==0,
+ if(isreal(#) % ispoint(#) % islist(#),
+ realL=append(realL,#);
+ opstr=opstr+","+text(#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"=")>0,
+ eqL=append(eqL,#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"no")+indexof(#,"No")>0,
+ if(indexof(#,"tex")>0,Noflg=1);
+ if(indexof(#,"disp")>0,Noflg=2);
+ if(indexof(#,"data")>0,Noflg=3);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"out")+indexof(#,"Out")>0,
+ if(indexof(#,"-")==0,
+ Outflg=1;
+ ,
+ Outflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"in")+indexof(#,"In")>0,
+ if(indexof(#,"-")==0,
+ Inflg=1;
+ ,
+ Inflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp=substring(#,0,2);
+ tmp1=indexof(tmp,"dr")+indexof(tmp,"Dr");
+ tmp1=tmp1+indexof(tmp,"da")+indexof(tmp,"Da");
+ tmp1=tmp1+indexof(tmp,"id")+indexof(tmp,"Id");
+ tmp1=tmp1+indexof(tmp,"do")+indexof(tmp,"Do");
+ tmp1=tmp1+indexof(tmp,"dp")+indexof(tmp,"Dp");
+ if(tmp1>0,
+ Ltype=#;
+ flg=1;
+ );
+ if(flg==0,
+ strL=append(strL,#);
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ );
+ if(indexof(opcindy,"color->")==0,// 16.10.07from
+ opcindy=opcindy+",color->[0,0,0]";
+ );
+ [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy];
+);
+
+Dotprod(vec1,vec2):=(
+//help:Dotprod(vec1,vec2);
+ regional(v1,v2,tmp);
+ if(ispoint(vec1),v1=vec1.xy,v1=vec1);
+ if(ispoint(vec2),v2=vec2.xy,v2=vec2);
+ v1*v2;
+);
+
+Crossprod(a,b):=(
+//help:Crossprod(vec1,vec2);
+ regional(tmp1,tmp2,tmp3,Out);
+ if(length(a)==3,
+ tmp1=a_2*b_3-a_3*b_2;
+ tmp2=a_3*b_1-a_1*b_3;
+ tmp3=a_1*b_2-a_2*b_1;
+ Out=[tmp1,tmp2,tmp3];
+ ,
+ Out=a_1*b_2-a_2*b_1;
+ );
+ Out;
+);
+
+Ptstart(Fig):=(
+//help:Ptstart("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21
+ tmp_1;
+);
+
+Ptend(Fig):=(
+//help:Ptend("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_(length(tmp)); // 15.04.12
+);
+
+Numptcrv(Fig):=(
+//help:Numptcrv("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23
+ length(tmp);
+);
+
+Ptcrv(Num,Fig):=(
+//help:Ptcrv(10,"gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_Num;
+);
+
+Invert(Fig):=(
+//help:Invert("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27
+ reverse(tmp);
+);
+Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 16.01.27
+Invert(nm,Fig,options):=(
+//help:Invert("1","gr1");
+ regional(name,tmp);
+ name="-inv"+nm;
+ tmp=Invert(Fig);
+ Listplot(name,tmp,options);
+);// upto 16.01.27
+
+Paramoncrv(pP,Gdata):=(
+ regional(Tmp,PtL);
+// Eps=10^(-8);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ Tmp=Nearestpt(pP,PtL);
+ Tmp_2;
+);
+
+ParamonCurve(pP,nN,plist):=(
+//help:ParamonCurve(A,10,"gr1");
+ regional(PtL,Out,Pa,Pb,vV,vW,sS);
+ if(isstring(plist),PtL=parse(plist),PtL=plist);
+ PtL=apply(PtL,LLcrd(#));//16.10.16
+ if(nN==length(PtL),
+ Out=nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ vV=Pb-Pa;
+ vW=pP-Pa;
+ sS=vV*vW/|vV|^2;
+ sS=min([max([sS,0]),1]);
+ Out=nN+sS;
+ );
+ Out;
+);
+
+Pointoncrv(tT,PtL):=PointonCurve(tT,PtL);
+PointonCurve(tT,Gdata):=(
+//help:PointonCurve(20.5,"gr1");
+ regional(Out,Eps,nN,sS,Pa,Pb,PtL);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ if(length(PtL)==1,PtL=PtL_1);
+ Eps=10^(-4);
+ nN=floor(tT+Eps);
+ sS=max([tT-nN,0]);
+ if(nN==length(PtL),
+ Out=PtL_nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ Out=(1-sS)*Pa+sS*Pb;
+ );
+ Out;
+);
+
+Koutenseg(pA,pB,pC,pD):=Koutenseg(pA,pB,pC,pD,[]);
+Koutenseg(pA,pB,pC,pD,options):=(
+ regional(Eps0,Eps,Eps2,pV,Sv2,Out,pP,pQ,Flg,p1,p2,q1,q2,
+ em1,eM1,em2,eM2,rT,Tmp1,Tmp2);
+ Eps0=10^(-4);
+ pV=pB-pA;
+ Sv2=|pV|;
+ pP=pC-pA; pQ=pD-pA;
+ Eps=10^(-3);
+ Eps2=0.2;
+ Tmp1=0;
+ forall(options,
+ if(Tmp1==0,
+ Eps=#;
+ Tmp1=1;
+ ,
+ Eps2=#;
+ );
+ );
+ Flg=0;
+ if(Sv2<10^(-3),
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ Eps=min([Eps2,Eps/Sv2]);
+ p1=pP*pV/Sv2^2;
+ p2=[pP_2,-pP_1]*pV/Sv2^2;
+ q1=pQ*pV/Sv2^2;
+ q2=[pQ_2,-pQ_1]*pV/Sv2^2;
+ em1=-Eps; eM1=1+Eps;
+ em2=-Eps; eM2=Eps;
+ if(max([p1,q1])<em1 % min([p1,q1])>eM1,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(max([p2,q2])<em2 % min([p2,q2])>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & p2*q2<0,
+ rT=p1-(q1-p1)/(q2-p2)*p2;
+ if(rT>em1 & rT<eM1,
+ if(rT>-Eps0 & rT<1+Eps0,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,0];
+ ,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,1];
+ );
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ );
+ if(Flg==0 & (p1 > -Eps0 & p1 < 1 + Eps0 & p2 > -Eps0 & p2 < Eps0),
+ rT= p1;
+ Tmp1=pA+rT*pV;
+ Out= [Tmp1, rT, 0];
+ Flg=1;
+ );
+ if(Flg==0 & (q1 > -Eps0 & q1 < 1 + Eps0 & q2 > -Eps0 & q2 < Eps0),
+ rT= q1;
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,0];
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([q1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & (q1<em1 % q1>eM1% q2<em2 % q2>eM2),
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ if(Flg==0,
+ if(abs(p2)<abs(q2),
+ rT=min([max([p1,0]),1]);
+ ,
+ rT=min([max([q1,0]),1]);
+ );
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ );
+ Out;
+);
+
+IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]);
+IntersectcrvsPp(Gr1,Gr2,options):=(
+//help:IntersectcrvsPp("gr1","pa1");
+ regional(Out,Eps,Eps2,Eps0,Flg,Data1,Data2,
+ Tmp1,Tmp2,Tmp3,Tmp,KL1,KL2,pA,pB,Ni,Nj,
+ pP,pQ,rT,Flg,eqL,realL,opstr,Dif);
+ Eps=10^(-4);
+ Eps2=0.1;
+ Dif=0.05; // 2015.05.31
+ Flg=0;
+ Tmp1=Divoptions(options); //
+ eqL=Tmp1_5;
+ realL=Tmp1_6;
+ opstr=Tmp1_(length(Tmp1));
+ forall(eqL,
+ if(substring(#,0,1)=="D",
+ Tmp1=indexof(#,"=");
+ Dif=parse(substring(#,Tmp1,length(#)));
+ );
+ );
+ Tmp1=length(realL);
+ if(Tmp1>0,
+ Eps=realL_1;
+ if(Tmp1>1,
+ Eps2=realL_2;
+ );
+ );
+ Flg=0;
+ if(isstring(Gr1),Data1=parse(Gr1),Data1=Gr1);
+ if(isstring(Gr2),Data2=parse(Gr2),Data2=Gr2);
+ if(MeasureDepth(Data1)==2,Data1=Data1_1);
+ if(MeasureDepth(Data2)==2,Data2=Data2_1);
+ Data1=apply(Data1,LLcrd(#));
+ Data2=apply(Data2,LLcrd(#));
+ if(length(Data1)==length(Data2),
+ Tmp1=Reverse(Data2);
+ Eps0=10^(-6);
+ Tmp2=0;
+ forall(1..length(Data1),
+ Tmp2=Tmp2+abs(Data1_#-Data2_#);
+ );
+ Tmp3=0;
+ forall(1..length(Data1),
+ Tmp3=Tmp3+abs(Data1_#-Tmp1_#);
+ );
+ if(Tmp2<Eps0 % Tmp3<Eps0,
+ Out=[];
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ KL1=[];
+ KL2=[];
+ forall(1..(length(Data1)-1),Ni,
+ pA=Data1_Ni;
+ pB=Data1_(Ni+1);
+ forall(1..(length(Data2)-1),
+ pP=Data2_#; pQ=Data2_(#+1);
+ Tmp=Koutenseg(pA,pB,pP,pQ,[Eps,Eps2]);
+ if(Tmp!=["inf","inf"],
+ if(Tmp_3==0,
+ Tmp1=[Tmp_1,Tmp_2,Ni,#];
+ KL1=concat(KL1,[Tmp1]);
+ ,
+ Tmp2=[Tmp_1,Tmp_2,Ni,#];
+ KL2=concat(KL2,[Tmp2]);
+ );
+ );
+ );
+ );
+ Out=[];
+ if(length(KL1)>0,
+ Tmp=KL1_1;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Ni=Tmp_3;
+ Nj=Tmp_4;
+ Tmp=[pP,Ni+rT,Nj];
+ Out=[Tmp];
+ );
+ forall(2..length(KL1),Ni,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Tmp1=Tmp_3;
+ Tmp2=Tmp_4;
+ Tmp=[pP,Tmp1+rT,Tmp2];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ forall(1..length(KL2),Ni,
+ Tmp=KL2_Ni; // 15.11.21 Usui
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..length(Out),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL2_Ni;
+ rT=Tmp_2;
+ rT=min([max([rT,0]),1]); // 15.11.21 Usui
+ Tmp=[pP,Tmp_3+rT,Tmp_4];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ );
+ Tmp1=Out; // 15.04.06 from
+ Out=[];
+ forall(Tmp1,Tmp2,
+ Tmp3=select(1..(length(Out)),|Out_#_1-Tmp2_1|<Dif);//16.11.27
+ if(length(Tmp3)==0,
+ Out=append(Out,Tmp2);
+ ,
+ forall(Tmp3,//16.11.27
+ Out_#=(Out_#+Tmp2)/2;
+ );
+ );
+ ); // 15.04.06 upto
+ Out;
+);
+
+Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]);
+//help:Intersectcrvs("gr1","pa1");
+Intersectcrvs(Gr1,Gr2,options):=(
+ regional(tmp,tmp1,tmp2);
+ tmp1=IntersectcrvsPp(Gr1,Gr2,options);
+ apply(tmp1,#_1);
+);
+
+NearestptcrvPhy(point,PL):=(
+ regional(tmp,pP,plist);
+ pP=Pcrd(point);
+ if(isstring(PL),plist=parse(PL),plist=PL);
+ if(MeasureDepth(plist)==2,plist=plist_1);
+ plist=apply(plist,#); // 14.12.18
+ tmp=Nearestpt(pP,plist);
+ tmp=tmp_1;
+ [tmp_1/SCALEX,tmp_2/SCALEY];
+);
+
+Nearestptcrv(point,plist):=(
+//help:Nearestptcrv(A,"gr1");
+ regional(tmp);
+ tmp=Nearestpt(point,plist);
+ tmp_1;
+);
+
+Nearestpt(point,PL2):=(
+ regional(PL1,PL,Ans,Flg,Eps,pA,Pm,Im,Sm,Nn,Ni,
+ a1,b1,a2,b2,v1,v2,x1,x2,Tmp,rT,pP,sS,Lm,Pm,Sm,Flg);
+//help:Nearestpt("gr1","gr2");
+ if(isstring(point),PL1=parse(point),PL1=point);
+ if(MeasureDepth(PL1)==2,PL1=PL1_1);
+ if(!islist(PL1_1),
+ PL1=[PL1];
+ Flg=0;
+ ,
+ Flg=1;
+ );
+ if(isstring(PL2),PL=parse(PL2),PL=PL2);
+ if(MeasureDepth(PL)==2,PL=PL_1);
+ Eps=10^(-6);
+ Ans=[PL1_1,1,PL_1,1,|PL1_1-PL_1|];
+ forall(1..length(PL1),Nn, // 16.05.04
+ pA=PL1_Nn;
+ Pm=PL_1;
+ Im=1;
+ Sm=|Pm-pA|;
+ forall(1..(length(PL)-1),Ni,
+ a1=PL_Ni_1; a2=PL_Ni_2;
+ b1=PL_(Ni+1)_1; b2=PL_(Ni+1)_2;
+ v1=b1-a1; v2=b2-a2;
+ x1=pA_1; x2=pA_2;
+ Tmp=v2^2+v1^2;
+ if(abs(Tmp)>Eps,
+ rT=(-a2*v2-v1*a1+v1*x1+x2*v2)/Tmp;
+ if(rT<-Eps,
+ pP=[a1,a2];
+ ,
+ if(rT>1+Eps,
+ pP=[b1,b2];
+ ,
+ pP=[a1+rT*v1,a2+rT*v2];
+ );
+ );
+ sS=|pP-pA|;
+ if(sS<Sm-Eps,
+ Tmp=ParamonCurve(pP,Ni,PL);
+ Pm=pP; Lm=Tmp; Sm=sS;
+ );
+ );
+ if(Sm<Ans_5, // 16.05.03from
+ Ans=[pA,Nn,Pm,Lm,Sm];
+ );
+ ); // 16.05.03upto
+ );
+ if(Flg==0,
+ Ans=Ans_(3..5);
+ );
+ Ans;
+);
+
+Derivative(fun,var,value):=(
+//help:Derivative("x^3","x",2);
+ regional(str,tmp);
+ str="d(";
+ str=str+replace(fun,var,"#")+",";
+ str=str+value+")";
+ tmp=Pcrd([1,parse(str)]); // 14.11.08
+ tmp_2;
+);
+
+Integrate(pltdata,range):=Integrate(pltdata,range,[]);
+Intergrate(Arg1,Arg2,Arg3):=(
+ regional(pltdata,range,options,fnstr,vartr);
+ if(islist(Arg2),
+ pltdata=Arg1;
+ range=Arg2;
+ options=Arg3;
+ Integrate(pltdata,range,options);
+ ,
+ fnstr=Arg1;
+ vastr=Arg2;
+ range=Arg3;
+ Integrate(fnstr,vastr,range,[]);
+ );
+);
+
+Integrate(pltdata,range,options):=(
+//help:Integrate("gr1",[1,3]);
+//help:Integrate("gr1",[1,3],["Rule=t"]);
+ regional(tmp,tmp1,eqL,Rule,pdata,Sm,ptP,ptQ,list,va1,va2);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ Rule="o";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Rule=substring(#,tmp,tmp+1);
+ );
+ );
+ if(Rule=="o",
+ Sm= IntegrateO(pltdata,range);
+ ,
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ list=apply(list,LLcrd(#)); // 15.09.14
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ ptP=list_#; // 15.09.14
+ ptQ=list_(#+1);
+ Sm=Sm+(ptP_2+ptQ_2)*(ptQ_1-ptP_1)/2;
+ );
+ Sm;
+ );
+);
+
+Integrate(fnstr,vastr,range,options):=(
+//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]);
+ regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2);
+ Num=100;
+ Way="t";
+ forall(options,
+ if(indexof(#,"=")>0,
+ if(indexof(#,"N=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(indexof(#,"Num=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Way=substring(#,tmp,tmp+1);
+ );
+ );
+ );
+ Sm=0;
+ if(Way=="t",
+ forall(1..Num,
+ Lx=range_1+(range_2-range_1)*(#-1)/Num;
+ Rx=range_1+(range_2-range_1)*#/Num;
+ va1=parse(replace(fnstr,vastr,textformat(Lx,5)));
+ va2=parse(replace(fnstr,vastr,textformat(Rx,5)));
+ Sm=Sm+(va1+va2)*(Rx-Lx)/2;
+ );
+ ,
+ sx=range_1;
+ ex=range_2;
+ dx=(ex-sx)/Num;
+ xn=apply(0..Num,sx+#*dx);
+ yn=apply(xn,parse(replace(fnstr,vastr,textformat(#,5))));
+ dx=dx/2;
+ repeat(Num,s,
+ x0=xn_s;
+ x1=(xn_s+xn_(s+1))/2;
+ x2=xn_(s+1);
+ y0=yn_s;
+ y1=parse(replace(fnstr,vastr,textformat(x1,5)));
+ y2=yn_(s+1);
+ Sm=Sm+dx*(y0+4*y1+y2)/3;
+ );
+ );
+ Sm;
+);
+
+IntegrateO(p0org,p1org,p2org,p3org):=(
+ regional(p0,p1,p2,p3,pQ,pR,cc,p01,p02,
+ p11,p12,p21,p22,p31,p32, tmp);
+ if(ispoint(p0org),p0=p0org.xy,p0=p0org); // 16.03.10
+ if(ispoint(p1org),p1=p1org.xy,p1=p1org); // 16.03.16
+ if(ispoint(p2org),p2=p2org.xy,p2=p2org);
+ if(ispoint(p3org),p3=p3org.xy,p3=p3org);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp=tmp/20;
+);
+IntegrateO(pltdata,rangeorg):=(
+//help:IntegrateO("gr1",[0,2]);
+ regional(tmp,tmp1,tmp2,pdata,va1,va2,list,Bzk,Bzc,range,pmflg,
+ Sm,p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ range=rangeorg;
+ pmflg=1;
+ if(range_2<range_1,
+ range=reverse(range);
+ pmflg=-1;
+ );
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ if((length(list)>0) & (list_1_1>list_(length(list))_1),
+ list=reverse(list);
+// pmflg=pmflg*(-1);
+ );
+ list=apply(list,LLcrd(#));
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ p1=list_#;
+ p2=list_(#+1);
+ if(#==1 % #==length(list)-1,
+ tmp1=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ Sm=Sm+tmp1;
+ ,
+ p0=list_(#-1);
+ p3=list_(#+2);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp1=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp1=tmp1/20;
+ Sm=Sm+tmp1;
+ );
+ );
+ if(pmflg==-1,
+ Sm=-Sm;
+ );
+ Sm;
+);
+
+Findarea(pdstr):=(
+//help:Findarea("sgABCA");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findarea(pdstr):=( // 15.11.27
+//help:Findarea("cr1");
+ regional(pd,p0,p1,p2,p3,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=pd_#;
+ p2=pd_(#+1);
+ if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1));
+ if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2));
+ tmp=IntegrateO(p0,p1,p2,p3);
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findlength(pdstr):=(
+//help:Findlength("gr1");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=|p2-p1|;
+ s=s+tmp;
+ );
+ s;
+);
+
+Inversefun(fnstr,rngstr,value):=(
+ regional(tmp,varstr,range,x1,x2,x3,va1,va2);
+ tmp=indexof(rngstr,"=");
+ varstr=substring(rngstr,0,tmp-1);
+ range=parse(substring(rngstr,tmp,length(rngstr)));
+ x1=range_1; x2=range_2;
+ repeat(15,
+ x3=(x1+x2)/2;
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)));
+ va2=parse(replace(fnstr,varstr,textformat(x3,5)));
+ if((va1>value & va2>value) % (va1<value & va2<value),
+ x1=x3;
+ ,
+ x2=x3;
+ );
+ );
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)))-value;
+ va2=parse(replace(fnstr,varstr,textformat(x2,5)))-value;
+ if(x1==range_1 % x2==range_2,
+ println("not found in ("+textformat(range_1,5)
+ +","+textformat(range_2,5)+")");
+ );
+ if(abs(va1)<=abs(va2),x1,x2);
+);
+
+Lcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=[pt.x/SCALEX,pt.y/SCALEY];
+ ,
+ tmp=pt;
+ );
+ tmp;
+);
+
+Pcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=re(pt.xy); // 15.07.24
+ ,
+ tmp=[pt_1*SCALEX,pt_2*SCALEY];
+ );
+ tmp;
+);
+
+LLcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=pt.xy
+ ,
+ tmp=pt;
+ );
+ tmp=[tmp_1/SCALEX,tmp_2/SCALEY];
+ tmp;
+);
+
+Doscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Unscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Definecolor(name,data):=(
+//help:Definecolor("mycolor",[1,1,1,0]);
+ regional(type,tmp);
+ if(length(data)>3,type="cmyk",type="rgb");
+ tmp=text(data);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="\definecolor{"+name+"}{"+type+"}{"+tmp+"}";
+ Texcom(tmp);
+);
+
+Setcolor(Par):=(
+//help:Setcolor([1,0,0,1]);
+//help:Setcolor([1,1,0]);
+ if(islist(Par),
+ if(length(Par)==3,
+ Setcolorrgb(Par); // 2015.04.28
+// KCOLOR=Par;
+ );
+ if(length(Par)==4,
+ Setcolor(Par,[]);
+ );
+ ,
+ Setcolor(Par,[]);
+ );
+);
+
+Setcolor(colorname,options):=(
+//help:Setcolor("greenyellow",0.3);
+ regional(tmp);
+ if(isstring(colorname),
+ tmp="Setcolor("+Dq+colorname+Dq;
+ if(length(options)>0,
+ tmp=tmp+","+text(options_1);
+ );
+ Com2nd(tmp+")");
+ );
+ if(islist(colorname),
+ tmp=text(colorname);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[cmyk]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+ );
+);
+
+Setcolorrgb(colorlist):=(
+// help:Setcolorrgb([0.5,0.3,0.4]);
+ regional(tmp);
+ tmp=text(colorlist);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[rgb]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+);
+
+ColorRgb2Cmyk(clr):=(
+// help:ColorRgb([0.2,0.5,0.1]);
+ regional(clrnew,tmp,black);
+ tmp=apply(clr,1-#);
+ black=min(tmp);
+ tmp=apply(clr,(1-#-black)/(1-black));
+ clrnew=append(tmp,black);
+ clrnew;
+);
+
+ColorCmyk2Rgb(clr):=(
+// help:ColorRgb([0.2,0.5,0.1,0.2]);
+ regional(clrnew,tmp,black);
+ black=clr_4;
+ tmp=apply(clr,1-min(1,#*(1-black)+black));
+ clrnew=tmp_(1..3);
+ clrnew;
+);
+
+Colorrgbhsv(rgb):=(
+ regional(varR,varG,varB,varMin,varMax,delMax,hh,ss,vv,delR,delG,delB);
+ varR = rgb_1;
+ varG = rgb_2;
+ varB = rgb_3;
+ varMin = min( [varR, varG, varB] );
+ varMax = max( [varR, varG, varB] );
+ delMax = varMax - varMin ;
+ vv = varMax;
+ if ( delMax == 0 ,
+ hh = 0 ;
+ ss = 0 ;
+ ,
+ ss = delMax / varMax;
+ delR = ( ( ( varMax - varR ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delG = ( ( ( varMax - varG ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delB = ( ( ( varMax - varB ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ if( varR == varMax ,
+ hh = delB - delG;
+ ,
+ if ( varG == varMax,
+ hh = ( 1 / 3 ) + delR - delB;
+ ,
+ if ( varB == varMax ,
+ hh = ( 2 / 3 ) + delG - delR;
+ );
+ );
+ );
+ if ( hh < 0 ,hh = hh+1);
+ if ( hh > 1 ,hh = hh-1);
+ );
+ [hh*360,ss,vv];
+);
+
+Colorhsvrgb(sL):=(
+ regional(tmp,tmp1,tmp2,tmp3,hi,ff,dL);
+ tmp=[sL_1/60,sL_2,sL_3];
+ hi=mod(floor(tmp_1),6);
+ ff=tmp_1-floor(tmp_1);
+ tmp2=tmp_3*[1-tmp_2,1-tmp_2*ff,1-tmp_2*(1-ff)];
+ tmp2=append(tmp2,tmp_3);
+ if(hi==0,dL=tmp2_[4,3,1]);
+ if(hi==1,dL=tmp2_[2,4,1]);
+ if(hi==2,dL=tmp2_[1,4,3]);
+ if(hi==3,dL=tmp2_[1,2,4]);
+ if(hi==4,dL=tmp2_[3,1,4]);
+ if(hi==5,dL=tmp2_[4,1,2]);
+ dL;
+);
+
+Colorrgbhsl(rgb):=(
+ regional(rr,gg,bb,mn,mx,delta,deltaR,deltaG,deltaB,hh,ss,ll);
+ rr = rgb_1 ;
+ gg = rgb_2 ;
+ bb = rgb_3 ;
+ mn = min([rr, gg, bb]);
+ mx = max([rr, gg, bb]);
+ delta = mx - mn;
+ ll = (mx + mn) / 2;
+ if (delta == 0,
+ hh=0;
+ ss=0;
+ ,
+ if (ll < 0.5,
+ ss = delta/ (mx + mn);
+ ,
+ ss = delta / (2 - mx - mn);
+ );
+ deltaR = (((mx - rr) / 6) + (delta / 2)) / delta;
+ deltaG = (((mx - gg) / 6) + (delta / 2)) / delta;
+ deltaB = (((mx - bb) / 6) + (delta / 2)) / delta;
+ if (rr == mx,
+ hh = deltaB - deltaG;
+ ,
+ if (gg == mx,
+ hh = (1 / 3) + deltaR - deltaB;
+ ,
+ if (bb == mx,
+ hh = (2 / 3) + deltaG - deltaR;
+ );
+ );
+ );
+ if ( hh < 0, hh = hh+1);
+ if ( hh > 1, hh = hh-1);
+ );
+ [hh*360,ss,ll];
+);
+
+Colorhslrgb(hsl):=(
+ regional(hh,ss,ll,rr,gg,bb,var1,var2);
+ hh=hsl_1/360;
+ ss=hsl_2;
+ ll=hsl_3;
+ if ( ss == 0.0,
+ rr = ll ;
+ gg = ll ;
+ bb = ll ;
+ ,
+ if ( ll < 0.5 ,
+ var2 = ll * ( 1.0 + ss );
+ ,
+ var2 = ( ll + ss ) - ( ss * ll );
+ );
+ var1 = 2.0 * ll - var2;
+ rr = hue2rgb( var1, var2, hh + ( 1.0 / 3.0 ) );
+ gg = hue2rgb( var1, var2, hh );
+ bb = hue2rgb( var1, var2, hh - ( 1.0 / 3.0 ) );
+ );
+ [rr,gg,bb];
+);
+
+hue2rgb(vv1,vv2,vh):=(
+ regional(out);
+ if ( vh < 0.0 ,vh =vh+1);
+ if ( vh > 1.0 ,vh =vh-1);
+ if ( 6.0*vh < 1.0 ,
+ out = vv1 + ( vv2 - vv1 ) * 6.0 * vh ;
+ ,
+ if( 2.0*vh < 1.0 ,
+ out = vv2;
+ ,
+ if ( 3.0*vh < 2.0 ,
+ out = vv1 + ( vv2 - vv1 ) * ( ( 2.0 / 3.0 ) - vh ) * 6.0 ;
+ ,
+ out= vv1 ;
+ );
+ );
+ );
+ out;
+);
+
+Colorrgbhwb(sL):=(
+ regional(dl1,dl2,dl3);
+ dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1;
+ dl2 = min(sL);
+ dl3 = 1 - max(sL);
+ dL= [dl1, dl2 , dl3 ];
+);
+
+Colorhwbrgb(sLorg):=(
+ regional(sL,tmp,tmp1,tmp2,tmp3,ratio,ff,ii,vv,nn,dL,flg);
+ sL=sLorg;
+ sL=[sL_1/360,sL_2,sL_3];
+ ratio = sL_2 + sL_3;
+ // sL_2 + sL_3 cant be > 1
+ if (ratio > 1.,
+ sL_2 =sL_2 / ratio;
+ sL_3 = sL_3 / ratio;
+ );
+ ii = floor(6 * sL_1);
+ vv = 1 - sL_3;
+ ff = 6 * sL_1 - ii;
+ if(mod(ii,2)==1,ff = 1 - ff);
+ nn = sL_2 + ff * (vv - sL_2); // linear interpolation
+ tmp=[[vv,nn,sL_2],[nn,vv,sL_2],[sL_2,vv,nn],
+ [sL_2,nn,vv],[nn,sL_2,vv],[vv,sL_2,nn],[vv,nn,sL_2]];
+ flg=0;
+ forall(0..6,
+ if(flg==0 & ii == # ,
+ dL=tmp_(#+1);
+ flg=1;
+ );
+ );
+ dL;
+);
+
+Colorhslhsv(sL):=(
+ regional(dl1,dl2,dl3,dL);
+ dl1=sL_1;
+ if(sL_3 == 0,
+ // no need to do calc on black
+ // also avoids divide by 0 error
+ dL= [0, 0, 0];
+ ,
+ sL_3 = sL_3 * 2;
+ if(sL_3 <= 1,sL_2 = sL_2 * sL_3,sL_2 = sL_2 * (2 - sL_3));
+ dl3 = (sL_3 + sL_2) / 2;
+ dl2 = (2 * sL_2) / (sL_3 + sL_2);
+ dL = [dl1, dl2, dl3];
+ );
+ dL;
+);
+
+Colorcode(src,dest,sL):=(
+//help:Colorcode("rgb","cmyk",[1,0.5,0]);
+ regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg);
+ regional(dl1,dl2,dl3);
+ if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL));
+ if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL));
+ if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL));
+ if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL));
+ if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL));
+ if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL));
+ if(src=="hsl" & dest=="hsv", dL=Colorhslhsv(sL));
+ if(src=="hsv" & dest=="hsl",
+ dl1 = sL_1;
+ dl3 = (2 - sL_2) * sL_3;
+ dl2 = sL_2 * sL_3;
+ if(dl3 <= 1,dl2 = dl2/dl3,dl2=dl2/(2 - dl3));
+ dl3 =d l3/ 2;
+ dL = [dl1, dl2 , dl3 ];
+ );
+
+ if(src=="rgb" & dest=="cmyk",
+ tmp=apply(sL,1-#);
+ black=min(tmp);
+ tmp=apply(sL,(1-#-black)/(1-black));
+ dL=append(tmp,black);
+ );
+ if(src=="cmyk" & dest=="rgb",
+ black=sL_4;
+ tmp=apply(sL,1-min(1,#*(1-black)+black));
+ dL=tmp_(1..3);
+ );
+ if(src=="hsv" & dest=="cmyk",
+ tmp=Colorcode("hsv","rgb",sL);
+ dL=Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsv",
+ tmp=Colorcode("cmyk","rgb",sL);
+ dL=Colorcode("rgb","hsv",tmp);
+ );
+
+ if(src=="hsv" & dest=="hwb",
+ tmp = Colorcode("hsv","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsv",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsv",tmp);
+ );
+ if(src=="hsl" & dest=="hwb",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsl",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="hsl" & dest=="cmyk",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="hwb" & dest=="cmyk",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsl",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="cmyk" & dest=="hwb",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hsb" & dest=="rgb",dL=Colorcode("hsv","rgb",sL));
+ if(src=="rgb" & dest=="hsb",dL=Colorcode("rgb","hsv",sL));
+
+ if(src=="hsb" & dest=="hsl",dL=Colorcode("hsv","hsl",sL));
+ if(src=="hsl" & dest=="hsb",dL=Colorcode("hsl","hsv",sL));
+
+ if(src=="hsb" & dest=="hwb",dL=Colorcode("hsv","hwb",sL));
+ if(src=="hwb" & dest=="hsb",dL=Colorcode("hwb","hsv",sL));
+
+ if(src=="hsb" & dest=="cmyk",dL=Colorcode("hsv","cmyk",sL));
+ if(src=="cmyk" & dest=="hsb",dL=Colorcode("cmyk","hsv",sL));
+
+ dL;
+);
+
+Addcolor(cmdorg,list):=(
+//help:Addcolor("Plotdata('1','x^2','x',[])",[1,1,0]);
+ regional(rgb,cmyk,cmd,tmp,tmp1,tmp2,tmp3,tmp4);
+ cmd=replace(cmdorg,"'",Dq);
+ if(length(list)==3,
+ rgb=list;
+ cmyk=Colorcode("rgb","cmyk",list);
+ ,
+ cmyk=list;
+ rgb=Colorcode("cmyk","rgb",list);
+ );
+ tmp1="color->"+text(rgb);
+ tmp2="Setcolor("+text(cmyk)+");";
+ tmp3=substring(cmd,0,length(cmd)-2);
+ tmp=substring(tmp3,length(tmp3)-1,length(tmp3));
+ if(tmp!="[",
+ tmp3=tmp3+",";
+ );
+ tmp3=tmp3+Dq+tmp1+Dq+"])";
+ parse(tmp2);
+ parse(tmp3);
+ Setcolor("black");
+);
+
+Colorinfile(filename,clrf,clrt):=(
+ regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body);
+ if(length(clrf_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrf,text(#));
+ cstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ if(length(clrt_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrt,text(#));
+ chstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ tmp1=load(filename);
+ tmp=tokenize(tmp1,"{\unitlength");
+ head=tokenize(tmp_1,"%%%");
+ head=head_(2..length(head));
+ head=apply(head,"%%%"+#);
+ tmp2=tmp_2;
+ forall(1..5,
+ tmp2=replace(tmp2,cstrL_#,chstrL_#);
+ );
+ body=tokenize(tmp2,"%");
+ body_1="{\unitlength"+body_1;
+ body=apply(body,#+"%");
+ body=body_(1..(length(body)-1));
+ tmp=replace(filename,".tex","new.tex");
+ SCEOUT=openfile(tmp);
+ forall(head,
+ println(SCEOUT,#);
+ );
+ forall(1..length(body),
+ tmp=body_#;
+ if(#<length(body),
+ println(SCEOUT,tmp);
+ ,
+ print(SCEOUT,tmp)
+ );
+ );
+ closefile(SCEOUT);
+);
+
+GetLinestyle(str,name):=(
+ regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg);
+ Ltype=-1;
+ Dop="";
+ tmp1=indexof(str,",");
+ if(tmp1>0,
+ Dop=","+substring(str,tmp1,length(str));
+ );
+ noflg=parse(substring(str,0,1));
+ if(substring(name,0,3)=="sub",subflg=1,subflg=0); // 16.02.29
+ tmp1=substring(str,1,3);
+ if(tmp1=="dr" % tmp1=="Dr",
+ Ltype=0;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Drwline(name+Dop);
+ );
+ );
+ if(tmp1=="da" % tmp1=="Da",
+ Ltype=1;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dashline(name+Dop);
+ );
+ );
+ if(tmp1=="id" % tmp1=="Id",
+ Ltype=2; // 15.11.09
+ if(noflg==0 & subflg==0, // 16.02.29
+ Invdashline(name+Dop);
+ );
+ );
+ if(tmp1=="do" % tmp1=="Do",
+ Ltype=3;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dottedline(name+Dop);
+ );
+ );
+ if(tmp1=="dp" % tmp1=="Dp",
+ Ltype=0;
+ tmp1=parse(name);
+ tmp2="";
+ forall(tmp1,
+ tmp2=tmp2+textformat(#_1,5)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ if(noflg==0,
+ Drwpt(tmp2+Dop);
+ );
+ );
+ if(tmp1=="no" % tmp1=="No",
+ Ltype=10;
+ );
+ Ltype;
+);
+
+Chunderscore(str):=(
+ regional(flg,tmp,tmp1,tmp2,tmp3);
+ if(indexof(str,"]")>0,
+ tmp1=replace(str,"]",",]");
+ ,
+ tmp1=str+",";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ if(indexof(str,"]")>0,
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,"[","list(");
+ ,
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ );
+ tmp1;
+);
+
+//AddGraph(pltdata):=AddGraph("-"+pltdata,pltdata,[]);
+AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]);
+// if(isstring(Arg2),
+// AddGraph(Arg1,Arg2,[]);
+// ,
+// if(MeasureDepth(Arg2)>0,
+// Addgraph(Arg1,Arg2,[]);
+// ,
+// Addgraph("-"+Arg1,Arg1,Arg2);
+// );
+// );
+//);
+AddGraph(nm,pltdata,options):=(
+//help:AddGraph("1","imp1"); // 16.04.04
+//help:Addgraph("1",["[pt1]","gr1"],["nodisp"]);
+ regional(name,Ltype,Noflg,opcindy,pdata,fname,flg,
+ tmp,tmp1,tmp2,tmp3);
+ if(substring(nm,0,1)=="-",
+ name=substring(nm,1,length(nm));
+ ,
+ name="ad"+nm;
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_9;
+ if(isstring(pltdata),
+ pdata=parse(pltdata)
+ ,
+ if(!islist(pltdata),pdata=[pltdata],pdata=pltdata);
+ pdata=apply(pdata,parse(#));
+ ); // 15.01.22
+ pdata=Flattenlist(pdata);
+ tmp1=[];
+ forall(pdata,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ pdata=tmp1;
+ if(Noflg<3,
+ println("generate addgraph "+name);
+ tmp=name+"="+textformat(pdata,5);
+ parse(tmp);
+ if(isstring(pltdata), // 16.04.04 from
+ if(indexof(pltdata,"]")>0,
+ tmp1="list(Listplot("+substring(pltdata,1,length(pltdata));
+ tmp1=replace(tmp1,"]",",]");
+ ,
+ tmp1="Listplot("+substring(pltdata,0,length(pltdata))+",]";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..length(tmp1),
+ if(flg==0,
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,",","),Listplot(");
+ if(indexof(pltdata,"[")>0,
+ tmp1=tmp1+")";
+ );
+ GLIST=append(GLIST,name+"="+tmp1);
+ ,
+ if(MeasureDepth(pdata)==1,
+ tmp1=name+"=Listplot("+textformat(pdata,5)+")";
+ ,
+ tmp1="list(";
+ forall(1..length(pdata),
+ tmp=name+"p"+textformat(#,5)+"=";
+ if(length(pdata_#)>1, // 15.01.22
+ tmp=tmp+"Listplot("+textformat(pdata_#,5)+")";
+ ,
+ tmp=tmp+"Pointdata("+textformat(pdata_#_1,5)+")";
+ );
+ GLIST=append(GLIST,tmp);
+ tmp1=tmp1+name+"p"+textformat(#,5)+",";
+ );
+ tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ GLIST=append(GLIST,tmp1);
+ );
+ ); // 16.04.04 upto
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Joincrvs(nm,plotstrL):=Joincrvs(nm,plotstrL,[]);
+Joincrvs(nm,plotstrL,options):=(
+//help:Joincrvs("1",["sgAB","sgDCB"]);
+ regional(plotlist,PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
+ opcindy,tmp,tmp1,tmp2,str,name,Ltype,Noflg);
+ name="join"+nm;
+ plotlist=[];
+ forall(plotstrL,str,
+ if(isstring(str),
+ tmp=parse(str);
+ tmp=apply(tmp,LLcrd(#));
+ ,
+ tmp=str;
+ );
+ plotlist=append(plotlist,tmp);
+ );
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Eps=tmp1_1);
+ QdL=[];
+ forall(plotlist,Qd,
+ if(ispoint(Qd_1) % !islist(Qd_1_1),
+ QdL=concat(QdL,[Qd]);
+ ,
+ forall(Qd,
+ QdL=concat(QdL,[#]);
+ );
+ );
+ );
+ Flg=0;
+ if(length(QdL)==0,
+ PtL=[];
+ Flg=1;
+ );
+ if(Flg==0,
+ PtL=QdL_1;
+ forall(2..length(QdL),Ni,
+ Qd=QdL_Ni;
+ if(Numptcrv(Qd)>1,
+ pP=Ptend(PtL);
+ pS=Ptstart(PtL);
+ pQ=Ptstart(Qd);
+ pR=Ptend(Qd);
+ rMN=min([|pP-pQ|,|pP-pR|,|pS-pQ|,|pS-pR|]);
+ if(rMN==|pP-pR|,
+ Qd=reverse(Qd);
+ ,
+ if(rMN==|pS-pQ|,
+ PtL=reverse(PtL);
+ ,
+ if(rMN==|pS-pR|,
+ PtL=reverse(PtL);
+ Qd=reverse(Qd);
+ );
+ );
+ );
+ );
+ if(rMN>Eps,
+ PtL=concat(PtL,Qd);
+ ,
+ PtL=concat(PtL,Qd_(2..length(Qd)));
+ );
+ );
+ );
+ if(Noflg<3,
+ println("generate joincurve "+name);
+ tmp1=apply(PtL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1="";
+ forall(plotstrL,
+ tmp1=tmp1+#+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ GLIST=append(GLIST,name+"=Joincrvs("+tmp1+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PtL;
+);
+
+Partcrv(nm,pA,pB,PkLstr):=Partcrv(nm,pA,pB,PkLstr,[]);
+Partcrv(nm,pA,pB,PkLstr,options):=(
+//help:Partcrv("1",A,B,"sgABC");
+//help:Partcrv("1",1.3,2.5,"sgABC");
+ regional(PkL,Ans,Eps,Npt,Out1,Out2,tmp,tmp1,Flg,nS,nE,PPL,pP,
+ opcindy,Ta,Tb,name,Ltype,Noflg,DepthFlg);
+ name="part"+nm;
+ if(isstring(PkLstr),PkL=parse(PkLstr),PkL=PkLstr);
+ DepthFlg=0;
+ if(MeasureDepth(PkL)==2,
+ PkL=PkL_1;
+ DepthFlg=1;
+ );
+ PkL=apply(PkL,LLcrd(#));
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ Flg=0;
+ if(isreal(pA),
+ if(pA>pB+Eps,
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv("",pA,Npt,PkLstr,["nodata"]);
+ Out2=Partcrv("",1,pB,PkLstr,["nodata"]);
+ tmp=Ptstart(PkL)-Ptend(PkL);
+ if(|tmp|<Eps,
+ Ans=Joincrvs("",[Out1,Out2],["nodata"]);
+ ,
+ Ans=[apply(Out1,Pcrd(#)),apply(Out2,Pcrd(#))];
+ );
+ Flg=1;
+ );
+ if(Flg==0,
+ nS=ceil(pA);
+ nE=floor(pB);
+ PPL=[];
+ if(pA<nS-Eps,
+ pP=(nS-pA)*PkL_(nS-1)+(1-nS+pA)*PkL_nS;
+ PPL=[pP];
+ );
+ PPL=concat(PPL,PkL_(nS..nE));
+ if(pB>nE+Eps,
+ pP=(1-pB+nE)*PkL_nE+(pB-nE)*PkL_(nE+1);
+ PPL=concat(PPL,[pP]);
+ );
+ Ans=PPL;
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp=Nearestpt(LLcrd(Pcrd(pA)),PkL);
+ Ta=tmp_2;
+ tmp=Nearestpt(LLcrd(Pcrd(pB)),PkL); // 15.09.12
+ Tb=tmp_2;
+ Ans=Partcrv("",Ta,Tb,PkL,["nodata"] );
+ Ans=apply(Ans,Pcrd(#));
+ );
+ if(Noflg<3,
+ println("generate partcrv "+name);
+ tmp1=apply(Ans,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST, // 16.04.03
+ if(DepthFlg==0,
+ tmp=PkLstr;
+ ,
+ tmp=PkLstr+"(1)";
+ );
+ tmp1=name+"=Partcrv("+textformat(Lcrd(pA),5)
+ +","+textformat(Lcrd(pB),5)+","+tmp+")"; // 16.04.03
+ GLIST=append(GLIST,tmp1);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Ans;
+);
+
+Opcrvs(num,Fig):=Opcrvs(num,Fig,["nodisp"]);
+Opcrvs(num,Fig,options):=(
+ //help:Subgraph(2,"grfs");
+ regional(name,tmp,tmp1);
+ name="-"+Fig+text(num);
+ tmp=Fig+"_"+text(num);
+ tmp1=parse(tmp);
+ Listplot(name,tmp1,options);
+);
+
+
+Pointdata(nm,list):=Pointdata(nm,list,[]);
+Pointdata(nm,list,options):=(
+//help:Pointdata("1",[2,4],["Size=5"]);
+//help:Pointdata("2",[[2,3],[4,1]]);
+ regional(name,nameL,ptlist,opstr,opcindy,
+ eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="pt"+nm;
+ nameL=name+"L";
+ println("generate pointdata "+name);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ size="";
+ eqL=tmp_5;
+ if(length(eqL)>0,
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="s" % tmp=="S",
+ tmp=indexof(#,"=");
+ size=substring(#,tmp,length(#));
+ );
+ );
+ );
+ tmp=MeasureDepth(list);
+ if(tmp>0, // 2015.02.21
+ if(tmp==1,ptlist=list,ptlist=list_1);
+ tmp=apply(ptlist,[textformat(Pcrd(#),5)]);
+ tmp1=text(tmp);
+ tmp2=substring(tmp1,1,length(tmp1)-1);
+ tmp3=tmp1;
+ ,
+ ptlist=list;
+ tmp1=textformat(Pcrd(ptlist),5);
+ tmp2=tmp1;
+ tmp3="["+tmp1+"]";
+ );
+ tmp=name+"="+tmp1;
+ parse(tmp);
+ tmp=nameL+"="+tmp3;
+ parse(tmp);
+ if(Noflg<3,
+ GLIST=append(GLIST,name+"=Pointdata("+tmp2+")");
+ );
+ if(Noflg<2,
+ tmp=[nameL,0,opcindy];
+ GCLIST=append(GCLIST,tmp);
+ if(Noflg==0,
+ if(length(size)>0,
+ Com2nd("Setpt("+size+")");
+ );
+ thick=PenThick/PenThickInit; // 16.04.09 from
+ if(length(size)>0,tmp1=parse(size),tmp1=1);
+ tmp1=max(tmp1,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ Com2nd("Drwpt(list("+name+")"+opstr+")");
+ Setpen(thick); // 16.04.09
+ if(length(size)>0,
+ Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")");
+ );
+ );
+ );
+ ptlist;
+);
+
+Listplot(nm,list,options):=(
+//help:Listplot([A,B]);
+// help:Listplot(["A","B"]);
+//help:Listplot("1",[[2,1],[3,3]]);
+//help:Listplot(options2=["Msg=yes"]);
+ regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg);
+ if(substring(nm,0,1)=="-", // 16.01.27 from
+ name=substring(nm,1,length(nm));
+ ,
+ name="sg"+nm;
+ ); // upto
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ Msg=1; // 15.09.17
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+1); // 16.06.28
+ if(Toupper(tmp1)=="N", // 16.06.28
+ Msg=0;
+ );
+ );
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Listplot "+name);
+ );
+ if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24
+ ptlist=apply(tmp,Pcrd(#));
+ tmp=name+"="+textformat(ptlist,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp1=apply(list,Lcrd(#));
+ tmp1;
+);
+Listplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Listplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Listplot(name,list,options);
+ );
+);
+Listplot(list):=Listplot(list,[]);
+
+Lineplot(nm,list,options):=(
+//help:Lineplot([A,B]);
+//help:Lineplot("1",[[2,1],[3,3]]);
+ regional(name,Out,tmp,tmp1,opstr,opcindy,Mag,Semi,
+ Vec,pA,pB,Ltype,Noflg);
+ name="ln"+nm;
+ Mag=100;
+ Semi="";
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Mag=tmp1_1);
+ tmp1=tmp_7;
+ if(length(tmp1)>0,Semi=tmp1_1);
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ Vec= Mag/dist(pA,pB)*(pB-pA);
+ if(length(Semi)==0,
+ Out=[pA-Vec,pA+Vec];
+ ,
+ if(Semi=="+",
+ Out=[pA,pA+Vec];
+ ,
+ Out=[pA-Vec,pA];
+ );
+ );
+ if(Noflg<3,
+ println("generate Lineplot "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Lineplot("+textformat(list,5)+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Lineplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Lineplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Lineplot(name,list,options);
+ );
+);
+Lineplot(list):=Lineplot(list,[]);
+
+Plotdata(name1,func,variable):=Plotdata(name1,func,variable,[]);
+Plotdata(name1,func,variable,options):=(
+//help:Plotdata("1","sin(x)","x",["Num=100"]);
+//help:Plotdata("2","x^2","x=[-1,1]");
+//help:Plotdata("3","Fout(x)","x",["out"]);
+ regional(Fn,Va,tmp,tmp1,tmp2,eqL,name,Vname,x1,x2,dx,
+ PdL,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gr"+name1;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ Eps=10^(-3);
+ tmp=replace(func,LFmark,"");
+ tmp=tokenize(variable,"=");
+ Vname=tmp_1;
+ if(length(tmp)>1,
+ tmp=tmp_2;
+ tmp=parse(tmp);
+ x1=tmp_1;
+ x2=tmp_2;
+ ,
+ x1=XMIN;
+ x2=XMAX;
+ );
+ // dx=(x2-x2)/Num;
+ Ec=append(sort(Ec),10000);
+ Fun=Assign(func,Vname, "xx");
+ Exfun=Assign(Exfun,Vname, "xx");
+ PdL=[];
+ Ke=1;
+ forall(0..Num,
+ xx=x1+#*(x2-x1)/Num; // differs from Scilab ( / Num-1)
+ if(length(Exfun)>0,
+ tmp=parse(Exfun);
+ if(abs(tmp)<Eps,
+ if(length(Pdt)>0,
+ PdL=concat(PdL,["inf"]);
+ );
+ );
+ ,
+ Pa=[];
+ if(xx-Ec_Ke<-Eps,
+ Pa=[xx,parse(Fun)];
+ );
+ if(abs(xx-Ec_Ke)<=Eps,
+ if(length(PdL)>0,
+ if(PdL_(length(PdL))_1!="inf",
+ Pa=["inf"];
+ );
+ );
+ );
+ if(xx-Ec_Ke>Eps,
+ Pa=[xx,parse(Fun)];
+ Ke=Ke+1;
+ );
+ if(length(Pa)>0,
+ if(Pa_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(length(PdL)==0,
+ PdL=[Pa];
+ ,
+ tmp=PdL_(length(PdL));
+ if(tmp_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(dist(tmp,Pa)<Dc,
+ PdL=concat(PdL,[Pa]);
+ ,
+ PdL=concat(PdL,[["inf"],Pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(PdL),PdL_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[PdL_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(PdL),
+ tmp1=concat(tmp1,[PdL_(tmp..length(PdL))]);
+ );
+ PdL=tmp1;
+ if(length(PdL)==1,
+ PdL=PdL_1;
+ );
+ if(Noflg<3,
+ println("generate Plotdata "+name);
+ if(MeasureDepth(PdL)==1,
+ tmp1=apply(PdL,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(func,LFmark,"");
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Plotdata "+name);
+ tmp=name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Plotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Paramplot(name1,funstr,variable):=Paramplot(name1,funstr,variable,[]);
+Paramplot(name1,funstr,variable,options):=(
+//help:Paramplot("1","[2*cos(t),sin(t)]","t=[0,2*pi]");
+ regional(name,Out,tmp,tmp1,tmp2,vname,func,str,Rng,Num,
+ Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gp"+name1;
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ tmp=indexof(variable,"=");
+ vname=substring(variable,0,tmp-1);
+ str=substring(variable,tmp,length(variable));
+ Rng=parse(str);
+ t1=Rng_1; t2=Rng_2;
+ dt=(t2-t1)/Num;// differs from Scilab ( / Num-1)
+ func=Assign(funstr,vname,"tt");
+ Out=[];
+ Ec=append(sort(Ec),10000);
+ ke=1;
+ forall(0..Num,
+ pt=[];
+ tt=Rng_1+#*dt;
+ if(tt-Ec_ke<-Eps,
+ pa=parse(func);
+ );
+ if(abs(tt-Ec_ke)<=Eps,
+ if(length(Out)>0,
+ if(Out_(length(Out))_1!="inf",
+ pa=["inf"];
+ );
+ );
+ );
+ if(tt-Ec_ke>Eps,
+ pa=parse(func);
+ ke=ke+1;
+ );
+ if(length(pa)>0,
+ if(pa_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(length(Out)==0,
+ Out=[pa];
+ ,
+ tmp=Out_(length(Out));
+ if(tmp_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(|tmp-pa|<Dc,
+ Out=append(Out,pa);
+ ,
+ Out=concat(Out,[["inf"],pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(Out),Out_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[Out_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(Out),
+ tmp1=concat(tmp1,[Out_(tmp..length(Out))]);
+ );
+ Out=tmp1;
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ println("generate Paramplot "+name);
+ if(MeasureDepth(Out)==1,
+ tmp1=apply(Out,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(funstr,LFmark,""); // 15.11.13
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Paramplot "+name);
+ tmp=name+"=Paramplot('"+funstr+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Paramplotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Paramplot('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Circledata(cenrad):=Circledata(cenrad,[]);
+Circledata(para1,para2):=(
+//help:Circledata([A,B],["Rng=[0,pi/2]"]);
+//help:Circledata([A,B,C]);
+ regional(name,cenrad,options,str,n);
+ if(isstring(para1),
+ name=para1;
+ cenrad=para2;
+ options=[];
+ ,
+ cenrad=para1;
+ options=para2;
+ name="";// 16.10.07from
+ forall(cenrad,
+ name=name+#.name;
+ );// 16.10.07upto
+ );
+ Circledata(name,cenrad,options);
+);
+Circledata(nm,cenrad,options):=(
+ regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,
+ tmp,tmp1,tmp1,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps);
+ name="cr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Rg=[0,2*pi];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="R",
+ Rg=parse(tmp1);
+ );
+ );
+ if(length(cenrad)==2,
+ Ctr=Lcrd(cenrad_1);
+ Ptcir=Lcrd(cenrad_2);
+ ra=dist(Ctr,Ptcir);
+ ,
+ Eps=10^(-1);
+ pA=Lcrd(cenrad_1);
+ pB=Lcrd(cenrad_2);
+ pC=Lcrd(cenrad_3);
+ tmp=pB-pA;
+ tmp1=(tmp_2,-tmp_1);
+ tmp=pC-pB;
+ tmp2=(tmp_2,-tmp_1);
+ d1=det([tmp1,tmp2]);
+ d2=det([pC-pA,tmp2]);
+ if(abs(d1)<Eps & abs(d2)>10*Eps,
+ println("points are in a line");
+ ra=0;
+ ,
+ Ctr=1/2*(pA+pB)+1/2*d2/d1*tmp1;
+ ra=|pA-Ctr|;
+ tmp=name+"center="+Ctr;
+ parse(tmp);
+ Defvar(name+"center",Ctr);
+ );
+ );
+ if(ra>0,
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ ,
+ Out=Lineplot("1",[pA,pB],["nodata"]);
+ );
+ if(Noflg<3,
+ println("generate Circledata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ if(length(cenrad)==2,
+ tmp=name+"=Circledata("+cenrad+opstr+")";
+ ,
+ if(ra>0,
+ tmp=name+"=Circledata(["+Ctr+","+cenrad_1+"]"+opstr+")";
+ ,
+ tmp=name+"=Lineplot("+cenrad_1+","+cenrad_2+")";
+ );
+ );
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata():=(
+ regional(pA,pB);
+ pA=LLcrd((SW+NE)/2); // 15.09.17
+ pB=LLcrd(NE);
+ Framedata("win",[pA,pB]);
+);
+Framedata(list):=Framedata(list,[]);
+Framedata(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Framedata(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";// 16.10.07from
+ forall(list,
+ name=name+#.name;
+ );// 16.10.07upto
+ Framedata(name,list,options);
+ );
+);
+
+Framedata(nm,list,options):=(
+//help:Framedata();
+//help:Framedata([A,B]);
+//help:Framedata("1",[A,B]);
+//help:Framedata("1",[C,dx,dy]);
+ regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy,
+ opcindy,Ltype,Noflg,cent,dx,dy);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(length(list)==2, // 15.05.12
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2);
+ ,
+ pA=Lcrd(list_1);
+ dx=list_2; dy=list_3;
+ );
+ x1=pA_1-dx; x2=pA_1+dx;
+ y1=pA_2-dy; y2=pA_2+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Framedata(nm,cent,dx,dy):=Framedata(nm,cent,dx,dy,[]);
+Framedata(nm,cent,dx,dy,options):=(
+ regional(name,Out,tmp,tmp1,x1,y1,x2,y2,Ltype,opcindy,Noflg);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ x1=cent.x-dx; x2=cent.x+dx;
+ y1=cent.y-dy; y2=cent.y+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+cent.xy+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata2(nm,list):=Framedata2(nm,list,[]);
+Framedata2(nm,list,options):=(
+//help:Framedata2("1",[A,B]);
+ regional(tmp,tmp1,pC,pB);
+ pC=(Lcrd(list_1)+Lcrd(list_2))/2;
+ pB=Lcrd(list_2);
+ Framedata(nm,[pC,pB],options);
+);
+
+Ovaldata(nm,Pdata):=Ovaldata(nm,Pdata,[]);
+Ovaldata(nm,Pdata,options):=(
+//help:Ovaldata("1",[A,B]);
+//help:Ovaldata(optios=[size]);
+ regional(name,Graph,Ctr,Dx,Dy,Rc,Out,Point,Graph,
+ opstr,opcindy,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="ov"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ Rc=0.2;
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Rc=tmp1_1*Rc);
+// if(length(tmp1)>0,Rc=tmp1_1); //15.11.15
+ Ctr=Lcrd(Pdata_1);
+ if(ispoint(Pdata_2) % islist(Pdata_2),
+ tmp1=Lcrd(Pdata_2);
+ Dx=abs(tmp1_1-Ctr_1);
+ Dy=abs(tmp1_2-Ctr_2);
+ ,
+ Dx=Pdata_2;
+ Dy=Pdata_3;
+ );
+ Point=Ctr+[Dx-Rc,Dy-Rc];
+ tmp1=Circledata("1",[Point,Point+[Rc,0]],
+ ["Rng=[0,pi/2]","Num=10","nodata"]);
+ tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]],
+ ["nodata"]);
+ tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]],
+ ["nodata"]);
+ Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]);
+ tmp1=Reflectdata("1",[Graph],[Ctr,Ctr+[0,1]],["nodata"]);
+ Graph=Joincrvs("1",[Graph,tmp1],["nodata"]);
+ tmp2=Reflectdata("2",[Graph],[Ctr,Ctr+[1,0]],
+ ["nodata"]);
+ Graph=Joincrvs("2",[Graph,tmp2],["nodata"]);
+ if(Noflg<3,
+ println("generate Ovaldata "+name);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(Ctr,5)+","+textformat(Dx,5)+","+textformat(Dy,5);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+tmp+opstr+")");
+ );
+ Graph;
+);
+
+Segmark(nm,ptlist):=Segmark(nm,ptlist,[]);
+Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);
+Drawsegmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]);
+Drawsegmark(nm,ptlist,options):=(
+//help:Segmark("1",[A,B]);
+//help:Segmark(options=["Type=1","Width=1","Size=1"]);
+ regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,
+ tmp,tmp1,tmp2);
+ name="mrk"+nm;
+ pA=ptlist_1;
+ pB=ptlist_2;
+ size=0.15;
+ wid=0.05;
+ tp=1;
+ tmp1=Divoptions(options);
+ eqL=tmp1_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ tmp1=parse(tmp1);
+ tmp=substring(#,0,1);
+ if(tmp=="S" % tmp=="s",
+ size=size*tmp1;
+ );
+ if(tmp=="W" % tmp=="w",
+ wid=wid*tmp1;
+ );
+ if(tmp=="T" % tmp=="t",
+ tp=tmp1;
+ );
+ );
+ mid=(pA+pB)/2;
+ dir=(pB-pA)/|pB-pA|;
+ nor=[-dir_2,dir_1];
+// nor=nor/|nor|;
+ if(tp==1,
+ tmp1=mid+size*nor;
+ tmp2=mid-size*nor;
+ Listplot(name,[tmp1,tmp2]);
+ );
+ if(tp==2,
+ tmp1=mid+wid*dir+size*nor;
+ tmp2=mid+wid*dir-size*nor;
+ Listplot(name+"r",[tmp1,tmp2]);
+ tmp1=mid-wid*dir+size*nor;
+ tmp2=mid-wid*dir-size*nor;
+ Listplot(name+"l",[tmp1,tmp2]);
+ );
+ if(tp==3,
+ tmp1=mid;
+ tmp2=mid+size*dir;
+ Circledata(name,[tmp1,tmp2]);
+ );
+ if(tp==4,
+ tmp=mid+size*2/sqrt(3)*nor;
+ tmp1=mid+size*dir-size/sqrt(3)*nor;
+ tmp2=mid-size*dir-size/sqrt(3)*nor;
+ Listplot(name,[tmp,tmp1,tmp2,tmp]);
+ );
+);
+
+Parabolaplot(nm,ptlist):=Parabolaplot(nm,ptlist,"[-5,5]",[]);
+Parabolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5,5]";
+ options=Arg;
+ );
+ Parabolaplot(nm,ptlist,rng,options);
+);
+Parabolaplot(nm,ptlist,rng,options):=(
+//help:Parabolaplot("1",[A,B,C]):
+//help:Parabolaplot("1",[A,B,C],"[-5,5]");
+ regional(pA,pB,pC,angle,tmp,tmp1,tmp2);
+ tmp1=Lcrd(ptlist_1);
+ tmp2=Lcrd(ptlist_3);
+ pB=Lcrd(ptlist_2);
+ tmp=(tmp2-pB)/|tmp2-pB|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pA=Rotatepoint(tmp1,-angle,pB);
+ pC=Rotatepoint(tmp2,-angle,pB);
+ tmp1=1/(2*(pA_2-pB_2));
+ tmp2=1/2*(pA_2+pB_2);
+ tmp="("+format(tmp1,5)+")*(x-("+format(pA_1,5)+"))^2";
+ tmp=tmp+"+("+format(tmp2,5)+")";
+ tmp1=parse(rng);
+ tmp1=[pA_1-(tmp1_2-tmp1_1)/2,pA_1+(tmp1_2-tmp1_1)/2];
+ tmp2="x="+textformat(tmp1,5);
+ Plotdata(nm+"para",tmp,tmp2,append(options,"nodisp"));
+ Rotatedata(nm+"para","gr"+nm+"para",angle,append(options,pB));
+);
+
+Ellipseplot(nm,ptlist):=Ellipseplot(nm,ptlist,"[0,2*pi]",[]);
+Ellipseplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[0,2*pi]";
+ options=Arg;
+ );
+ Ellipseplot(nm,ptlist,rng,options);
+);
+Ellipseplot(nm,ptlist,rng,options):=(
+//help:Ellipseplot("1",[A,B,3]);
+//help:Ellipseplot("1",[A,B,C],"[0,pi]",[options]);
+ regional(pA,pB,d,angle,f,a,b,pM,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=|tmp2-pA|+|tmp2-tmp1|;
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(d^2/4-f^2);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+","+format(pM_2,5)+"]";
+ tmp=tmp+"+["+format(a,5)+"*cos(t),"+format(b,5)+"*sin(t)]";
+ Paramplot(nm+"elp",tmp,"t="+rng,append(options,"nodisp"));
+ Rotatedata(nm+"elp","gp"+nm+"elp",angle,append(options,pA));
+);
+
+Hyperbolaplot(nm,ptlist):=Hyperbolaplot(nm,ptlist,"[-5/2,5/2]",[]);
+Hyperbolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5/2,5/2]";
+ options=Arg;
+ );
+ Hyperbolaplot(nm,ptlist,rng,options);
+);
+Hyperbolaplot(nm,ptlist,rng,optionsorg):=(
+//help:Hyperbolaplot("1",[A,B,C],["Num=200"]):
+//help:Hyperbolaplot("1",[A,B,C],"[-5,5]",["Asy=do"]);
+ regional(pA,pB,d,angle,f,a,b,pM,eqL,options,opasy,tmp,tmp1,tmp2);
+ tmp=Divoptions(optionsorg);
+ eqL=tmp_5;
+ options=optionsorg;
+ opasy=[];
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="A",
+ tmp=indexof(#,"=");
+ opasy=[substring(#,tmp,length(#))];
+ options=remove(options,[#]);
+ );
+ );
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=abs(|tmp2-pA|-|tmp2-tmp1|);
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(f^2-d^2/4);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+"+"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp1",tmp,"t="+rng,append(options,"nodisp"));
+ tmp="["+format(pM_1,5)+"-"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp2",tmp,"t="+rng,append(options,"nodisp"));
+ tmp=["gp"+nm+"hyp1","gp"+nm+"hyp2"];
+ Rotatedata(nm+"hyp",tmp,angle,append(options,pA));
+ if(length(opasy)>0,
+ Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]);
+ Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]);
+ tmp=["ln"+nm+"asy1","ln"+nm+"asy2"];
+ Rotatedata(nm+"asy",tmp,angle,append(opasy,pA));
+ );
+);
+
+Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]);
+Polygonplot(nm,ptlist,number,options):=(
+//help:Polygonplot("1",[A,B],12);
+ regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ pB=Lcrd(ptlist_2);
+ rr=|pB-pA|;
+ tmp=(pB-pA)/rr;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ ptL=[];
+ forall(0..number,
+ tmp=angle+#*2*pi/number;
+ tmp1=pA+rr*[cos(tmp),sin(tmp)];
+ if(#>0 & #<number,
+ Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07
+ //Pointdata(nm,ptL);
+ );
+ tmp2=tmp1;
+ ptL=append(ptL,tmp1);
+ );
+ Listplot(nm+"ply",ptL,options);
+);
+
+Putintersect(nm,pdata1,pdata2):=(
+//help:Putintersect("Q","gr1","gr2");
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)==1,
+ Putpoint(nm,tmp_1);
+ ,
+ if(length(tmp)==0,
+ err("No intersect point");
+ ,
+ err("Multiple intersect points");
+ println(tmp);
+ err("Choose point number");
+ );
+ );
+);
+Putintersect(nm,pdata1,pdata2,ptno):=(
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)>0,
+ Putpoint(nm,tmp_ptno);
+ ,
+ err("No intersect point");
+ );
+);
+
+Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]);
+Arrowheaddata(point,direction,options):=(
+//help:Arrowheaddata(A,B);
+ regional(list,Ookisa,Hiraki,Futosa,Houkou,Str,Flg,tmp,Ev,Nv,pA,pB,
+ pP,rF,gG,Flg,Nj,Eps,tmp1,scx,scy);
+ Eps=10^(-3);
+ pP=point;
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Str=YaStyle;
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Ookisa=Ookisa*tmp1_1);
+ if(length(tmp1)>1,
+ tmp=tmp1_2;
+ if(tmp<5,
+ Hiraki=Hiraki*tmp;
+ ,
+ Hiraki=tmp;
+ );
+ );
+ Flg=0;
+ Hiraki=Hiraki*pi/180;
+ if(isstring(direction),Houkou=parse(direction),Houkou=direction);
+ if(MeasureDepth(Houkou)==2,Houkou=Houkou_1);
+ if(islist(Houkou_1),
+// pP=Lcrd(pP);
+// pP=Doscaling(pP);
+// Houkou=Dosscaling(Houkou);
+ pP=Pcrd(pP);
+ scy=SCALEY;
+ SCALEY=1;
+ tmp=Nearestpt(pP,Houkou);
+ pA=tmp_1;
+ rF=floor(tmp_2);
+ if(rF==1,
+ if(|Ptend(Houkou)-Ptstart(Houkou)|<Eps,
+ rF=Numptcrv(Houkou);
+ );
+ );
+ gG=apply(0..10,pP+Ookisa*cos(Hiraki)*[cos(2*pi/10*#),sin(2*pi/10*#)]);
+ Flg=0;
+ forall(1..rF,Nj,
+ if(Flg==0,
+ pB=Ptcrv(rF+1-Nj,Houkou);
+ tmp=IntersectcrvsPp([pA,pB],gG);
+ if(length(tmp)>0,
+ Houkou=pP-tmp_1_1;
+ Flg=1;
+ );
+ pA=pB;
+ );
+ );
+ SCALEY=scy;
+ if(Flg==0,
+ println("Arrowhead may be too large (no intersect)");
+ Flg=2;
+ );
+ if(Flg==1,
+ Houkou=Unscaling(Houkou);
+ pP=Unscaling(pP);
+ );
+ );
+ if(Flg<2,
+// pP=Doscaling(pP);
+// Houkou=Doscaling(Houkou);
+ pP=Pcrd(pP);
+ if(!ispoint(point),
+ Houkou=Pcrd(Houkou);
+ );
+// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou));
+ Ev=-1/|Houkou|*Houkou;
+ Ev=Lcrd(Ev);
+ Nv=[-Ev_2, Ev_1];
+ if(indexof(Str,"c")>0,
+ pP=pP-0.5*Ookisa*cos(Hiraki)*Ev;
+ );
+ if(indexof(Str,"b")>0,
+ pP=pP-Ookisa*cos(Hiraki)*Ev;
+ );
+ pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv;
+ pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv;
+ list=[pA,pP,pB];
+ list=apply(list,LLcrd(#));
+// Out=Unscaling(Out);
+ list;
+ );
+);
+
+Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]);
+Arrowhead(point,Houkou,options):=(
+//help:Arrowhead(B,B-A,[1.5,30]);
+//help:Arrowhead(A,"gr1");
+ // global ArrowheadNumber
+ regional(name,Ltype,Noflg,reL,opstr,opcindy,ptstr,hostr,tmp,tmp1,list);
+ name="arh"+text(ArrowheadNumber);
+ ArrowheadNumber=ArrowheadNumber+1;
+ ptstr=textformat(point,5);
+ if(isstring(Houkou), // 15.01.11
+ tmp=parse(Houkou);
+ if(MeasureDepth(tmp)<2,
+ hostr=Houkou;
+ ,
+ hostr=Houkou+"(1)";
+ );
+ ,
+ if(ispoint(point),
+ hostr=textformat(LLcrd(Houkou),5);
+ ,
+ hostr=textformat(Houkou,5);
+ );
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ list=Arrowheaddata(point,Houkou,options);
+ if(Noflg<3,
+// println("generate Arrowhead "+name);
+ tmp1=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST,name+"=Listplot("+list+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(1)+Ltype,name);
+ ,
+// if(Noflg==1,Ltype=0);
+ Ltype=0;
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ if(Noflg==0,
+ if(length(reL)<3, // 16.04.09 from
+ forall(1..(2-length(reL)),
+ opstr=opstr+",1";
+ );
+ tmp=PenThick/PenThickInit;
+ opstr=opstr+","+text(tmp);
+ ); // 16.04.09 upto
+ Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")");
+ );
+);
+
+Arrowdata(ptlist):=Arrowdata(ptlist,[]);
+Arrowdata(Arg1,Arg2):=(
+ regional(tmp,nm,ptlist,flg,pA,pB,options);
+ flg=0;
+ if(isstring(Arg1),
+ nm=Arg1;
+ ptlist=Arg2;
+ Arrowdata(nm,ptlist,[]);
+ flg=1;
+ );
+ if(flg==0,
+ tmp=MeasureDepth(Arg1);
+ if(tmp==0,
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,[]);
+ ,
+ ptlist=Arg1;
+ options=Arg2;
+ nm=text(ArrowlineNumber);
+ ArrowlineNumber=ArrowlineNumber+1;
+ Arrowdata(nm,ptlist,options);
+ );
+ );
+);
+Arrowdata(Arg1,Arg2,options):=(
+//help:Arrowdata([A,B],[2,10]);
+ regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size,
+ flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos);
+ Retflg=0;
+ Noflg=0;
+ Ltype=0;
+ if(!isstring(Arg1),
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,options,"old");
+ Retflg=1;
+ ptlist=[pA,pB];
+ );
+ if(Retflg==0,
+ nm=Arg1;
+ ptlist=Arg2;
+ name="ar"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ realL=tmp_6;
+ strL=tmp_7;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ size=1; // 15.06.11
+ if(length(realL)>0,
+ size=realL_1;
+ );
+ tmp2=select(strL,indexof(#,"l")>0); // 16.04.09
+ if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09
+ segpos=1;
+ tmp1=tmp_5;
+ if(length(tmp1)>2,
+ segpos=tmp1_3;
+ );
+ if(Noflg<3,
+// println("generate Arrowdata "+name);
+ tmp1=apply(ptlist,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=Pcrd(ptlist_1);//16.10.20
+ tmp2=Pcrd(ptlist_2);//16.10.20
+ if(lineflg==0, // 16.04.09 from
+ tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11
+ ,
+ tmp=tmp2;
+ ); // 16.04.09 upto
+ tmp=[LLcrd(tmp1),LLcrd(tmp)];//16.10.20
+ GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ tmp=textformat(ptlist,5);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp1=indexof(tmp,"],[");
+ if(tmp1>0,
+ pA=substring(tmp,0,tmp1);
+ pB=substring(tmp,tmp1+1,length(tmp));
+ ,
+ tmp1=indexof(tmp,",");
+ pA=substring(tmp,0,tmp1-1);
+ pB=substring(tmp,tmp1,length(tmp));
+ );
+ tmp1="Lcrd("+pA+")+"
+ +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))";
+ tmp1=parse(tmp1);
+ tmp2="Lcrd("+pB+")-Lcrd("+pA+")";
+ tmp2=parse(tmp2);
+ Arrowhead(tmp1,tmp2,options);
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ ptlist;
+);
+Arrowdata(pA,pB,options,str):=(
+ regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy);
+ Astr=textformat(pA,5);
+ Bstr=textformat(pB,5);
+ name="ar"+pA.name+pB.name;
+ println("generate Arrow "+name);
+ opstr="";
+ opcindy="";
+ forall(options,
+ if(isstring(#),
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ ,
+ tmp="'"+#+"'";
+ );
+ ,
+ tmp=text(#);
+ );
+ opstr=opstr+","+tmp;
+ );
+ ptA=Lcrd(pA);
+ ptB=Lcrd(pB);
+ Arrowheaddata(ptB,ptB-ptA,options);
+ tmp="connect("+textformat([ptA,ptB],5)
+ +",linecolor->"+text(KCOLOR)+opcindy+");";
+ parse(tmp); // 14.11.17
+ Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04
+);
+
+Anglemark(plist):=Anglemark(plist,[]);
+Anglemark(Arg1,Arg2):=( // 2015.04.28 from
+ regional(nm,plist,options,tmp);
+ if(isstring(Arg1),
+ nm=Arg1;
+ plist=Arg2;
+ Anglemark(nm,plist,[]);
+ ,
+ plist=Arg1;
+ options=Arg2;
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Anglemark(nm,plist,options);
+ );
+); // upto
+Anglemark(nm,plist,options):=(
+//help:Anglemark([A,B,C],["E=\theta",2]);
+//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]);
+//help:Anglemark(options=["E/L=(sep,)letter",size]);
+ regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg);
+ name="ag"+nm;
+ ra=0.5;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ Bname="";
+ Brat=1.5;
+ Num=20;
+ if(length(realL)>0,
+ ra=realL_1*ra;
+ opstr=opstr+","+text(realL_1);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Bpos+","+Dq+"c"+Dq+","+Dq;//16.10.29
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ sab=pB-pA;
+ sac=pC-pA;
+ Rg=[arctan2(sab)+0,arctan2(sac)+0];
+ if(Rg_2<Rg_1,Rg_2=Rg_2+2*pi);
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ if(length(Bname)>0,
+ Th=(Rg_1+Rg_2)/2;
+ tmp1=Ctr+Brat*ra*[cos(Th),sin(Th)];
+ tmp="Defvar("+Dq+Bpos+"=";
+ tmp=tmp+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate anglemark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(plist,5);
+ tmp1=substring(tmp,1,length(tmp)-1);
+ tmp=name+"=Anglemark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Paramark(plist):=Paramark(plist,[]);
+Paramark(plist,options):=(
+//help:Paramark([A,B,C],["E=\theta"]);
+ regional(name,Out,pB,pA,pC,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Ltype,Noflg,eqL,realL,opcindy);
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ tmp=substring(tmp,1,length(tmp)-1);
+ name="pm"+tmp;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ ra=0.5;
+ Bname="";
+ Brat=1.2;
+ if(length(realL)>0,
+ tmp=realL_1;
+ ra=tmp*ra;
+ opstr=opstr+","+text(tmp);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ Out=[];
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|);
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|+ra*(pC-pA)/|pC-pA|);
+ Out=append(Out,pA+ra*(pC-pA)/|pC-pA|);
+ if(length(Bname)>0,
+ tmp1=pA+Brat*ra*(pB-pA)/|pB-pA|+Brat*ra*(pC-pA)/|pC-pA|;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate paramark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Paramark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+MakeBowdata(pA,pB,Hgt):=(
+ regional(angle,pB2,pH2,pC2,pC,tmp,Th1,Th2,ra,dMA);
+ angle=arctan2(pB-pA)+0;
+ pB2=Rotatepoint(pB,-angle,pA);
+ tmp=Lcrd(pA);
+ pH2=[(tmp_1+pB2_1)/2,tmp_2-Hgt];
+ dMA=|tmp-pB2|/2;
+ ra=(dMA^2+Hgt^2)/(2*Hgt);
+ pC2=[pH2_1,pB2_2+(ra-Hgt)];
+ pC=Rotatepoint(pC2,angle,pA);
+ Th1=arctan2(pA-pC2)+angle;
+ Th2=arctan2(pB2-pC2)+angle;
+ [pC,ra,Th1,Th2];
+);
+
+Bowdata(nm,plist,options):=(
+//help:Bowdata([C,A],[2,1.2,"Expr=10","da"]);
+//help:Bowdata([A,B],["Expr=t0n3,a"]);
+//help:Bowdata([A,B],["Exprrot=t0n2r,a"]);
+ regional(name,Out,pB,pA,pC,ra,tmp,tmp1,tmp2,Ltype,eqL,realL,
+ Bname,Bpos,Th,Cut,Num,Hgt,opstr,opcindy,Ydata,pC,
+ Th1,Th2,Noflg,Bops,Bmov,Tmov,Nmov,rev);
+ name="bw"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ pA=Lcrd(plist_1); pB=Lcrd(plist_2);
+ Hgt=1/2*|pB-pA|*0.2;
+ Cut=0;
+ Num=24;
+ Bname="";
+ Tmov=0;//16.11.01from
+ Nmov=0;
+ Bmov="";
+ rev=0;//16.11.01upto
+ if(length(realL)>0,
+ Hgt=realL_1*Hgt; // 15.04.12
+ if(length(realL)>1,Cut=realL_2);
+ );
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="L" % tmp=="l",
+ if(indexof(#,"rot")>0,
+ Bname="Letterrot(";
+ ,
+ Bname="Letter(";
+ );
+ );
+ if(tmp=="E" % tmp=="e",
+ if(indexof(#,"rot")>0,
+ Bname="Exprrot(";
+ ,
+ Bname="Expr(";
+ );
+ );
+ tmp=indexof(#,"=");
+ Bops=substring(#,tmp,length(#)); // 16.11.01
+ );
+ Ydata=MakeBowdata(pA,pB,Hgt);
+ pC=Ydata_1;
+ ra=Ydata_2;
+ Th=(Ydata_3+Ydata_4)*0.5;
+ BOWMIDDLE=[pC_1+ra*cos(Th),pC_2+ra*sin(Th)];
+ Bpos="md"+name; // 16.10.31from(moved)
+ tmp="Defvar("+Dq+Bpos+"="+textformat(BOWMIDDLE,5)+Dq+");";
+ parse(tmp);// 16.10.31upto(moved)
+ if(length(Bname)>0, //16.11.01from
+ tmp=indexof(Bops,",");
+ if(tmp>0,
+ tmp1=substring(Bops,0,tmp-1);
+ if(length(tmp1)>=4 & substring(tmp1,0,1)=="t" & indexof(tmp1,"n")>0,
+ Bmov=tmp1;
+ Bops=substring(Bops,tmp,length(Bops));
+ );
+ );
+ if(length(Bmov)>0,
+ tmp=indexof(Bmov,"t");
+ if(tmp>0,
+ tmp1=indexof(Bmov,"n");
+ Tmov=parse(substring(Bmov,tmp,tmp1-1));
+ tmp=indexof(Bmov,"r");
+ if(tmp>0,
+ Nmov=parse(substring(Bmov,tmp1,tmp-1));
+ rev=1;
+ ,
+ Nmov=parse(substring(Bmov,tmp1,length(Bmov)));
+ );
+ );
+ );
+ Bname=Bname+Bpos;//16.11.01
+ if(abs(Tmov)+abs(Nmov)>0,
+ tmp=Pcrd(pA)-Pcrd(pB);
+ tmp1=1/norm(tmp)*tmp;
+ tmp2=[-tmp1_2,tmp1_1];
+ tmp=MARKLEN*(Tmov*tmp1+Nmov*tmp2);
+ tmp=LLcrd(tmp);
+ Bname=Bname+"+"+text(tmp);
+ );
+ Bname=Bname+",";
+ if(indexof(Bname,"rot")>0,
+ if(rev==1,tmp=pB-pA,tmp=pA-pB);
+ Bname=Bname+textformat(tmp,5)+",";
+ ,
+ Bname=Bname+Dq+"c"+Dq+",";
+ );
+ Bname=Bname+Dq+Bops+Dq+")";
+ parse(Bname);
+ );//16.11.01upto
+ if(Cut==0,
+ Th1=Ydata_3;
+ Th2=Ydata_4;
+ Out=[];
+ forall(0..Num,
+ tmp=Th1+#*(Th2-Th1)/Num;
+ Out=append(Out,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ ,
+ Th1=Ydata_3;
+ Th2=Th-Cut/(2*ra);
+ tmp1=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp1=append(tmp1,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Th1=Th+Cut/(2*ra);
+ Th2=Ydata_4;
+ tmp2=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp2=append(tmp2,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Out=[tmp1,tmp2];
+ );
+ if(Noflg<3,
+ println("generate bowdata "+name+" and "+Bpos);//16.10.31
+ if(MeasureDepth(Out)==1,Out=[Out]);
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Bowdata("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Deqplot(nm,deq,rng,initf):=Deqplot(nm,deq,rng,Lcrd(initf)_1,initf,[]);
+Deqplot(nm,deq,rng,Arg1,Arg2):=(
+ regional(initt,initf,options);
+ if(isreal(Arg1) & length(Arg1)==1,
+ initt=Arg1;
+ initf=Arg2;
+ options=[];
+ ,
+ initf=Lcrd(Arg1);
+ initt=initf_1;
+ options=Arg2;
+ );
+ Deqplot(nm,deq,rng,initt,initf,options);
+);
+Deqplot(nm,deq,rng,initt,initf,options):=(
+ regional(name,Noflg,Ltype,eqL,opstr,opcindy,pdL,var2,deq2,rng2,initt2,initf2,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ tmp2=tmp_2;
+ tmp3=tokenize(tmp1,"`");
+ if(length(tmp3)==2,
+ if(indexof(tmp1,"[")>0,
+ Deqplot(nm,deq,rng,initt,initf,options,[2,3]);
+ ,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ tmp=tokenize(rng2,"=");
+ deq2="["+tmp_1+","+replace(tmp1,"`","]")+"`=[1,"+tmp2+"]";
+ rng2="t="+tmp_2;
+ if(isreal(initf) & length(initf)==1,
+ initf2=[initt,initf];
+ initt2=initt;
+ ,
+ initf2=Lcrd(initf));
+ initt2=initf2_1;
+ Deqplot(nm,deq2,rng2,initt2,initf2,options,[2,3]);
+ );
+ ,
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_9;
+ opstr="";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="N",
+ tmp=indexof(#,"=");
+ tmp1="N="+substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp1+"'";
+ );
+ );
+ if(Noflg<1,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ var2="d"+tmp3_1;
+ deq2="["+tmp3_1+","+var2+"]`=[";
+ tmp=replace(tmp2,tmp3_1+"`",var2);
+ deq2=deq2+var2+","+tmp+"]";
+ Deqplot(nm,deq2,rng2,initt,initf,append(options,"nodisp"),[1,2]);
+ parse(tmp);
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ parse("de"+nm);
+ );
+ );
+);
+Deqplot(nm,deq,rng,initt,initf,options,Sel):=(
+//help:Deqplot("2","y`=y*(1-y)","x",0, 0.5,["Num=100"]);
+//help:Deqplot("1","y``=-y","x",0, [1,0]);
+//help:Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",[1,0.5]);
+ regional(Ltype,Noflg,Inflg,Outflg,strL,opstr,opcindy,Num,
+ outstr,name,func,xf,yf,pdL,Eps,Inf,t1,t2,tt,Vname,dt,funP,funN,flg,
+ kl1,kl2,kl3,kl4,x0,y0,x1,y1,tmp,tmp1,tmp2);
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ eqL=tmp_5;
+ strL=tmp_7;
+// opstr=tmp_(length(tmp)-1);
+ opstr="";
+ opcindy=tmp_(length(tmp));
+ outstr="";
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="S",
+ outstr="Sci";
+ );
+ );
+ Num=50;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp2=substring(#,0,1);
+ tmp2=Toupper(tmp2);
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp2+"="+tmp1+"'";
+ if(Toupper(substring(#,0,1))=="N",
+ Num=parse(tmp1);
+ );
+ );
+ if(outstr=="Sci",
+ if(Inflg==0 & Outflg==0,Outflg=1;Inflg=1);
+ );
+ if(Noflg<3,
+ if(outstr=="Sci",
+ if(Outflg==1,
+ println("Output Deqplot "+name);
+ SCIWRLIST=append(SCIWRLIST,name);
+ );
+ if(Inflg==1,
+ println("Input Deqplot "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ ,
+ Eps=10^(-3);
+ Inf=10^3;
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ func=tmp_2;
+ tmp=indexof(tmp1,",");
+ xf=substring(tmp1,1,tmp-1);
+ yf=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(yf,"]");
+ yf=substring(yf,0,tmp-1);
+ tmp=tokenize(rng,"=");
+ Vname=tmp_1;
+ tmp=parse(tmp_2);
+ t1=tmp_1;
+ t2=tmp_2;
+ tmp="funP("+Vname+","+xf+","+yf+"):="+func+";";
+ parse(tmp);
+ tmp=tokenize(func,",");
+ tmp1="-("+substring(tmp_1,1,length(tmp_1))+")";
+ tmp2="-("+substring(tmp_2,0,length(tmp_2)-1)+")";
+ tmp="funN("+Vname+","+xf+","+yf+"):=["+tmp1+","+tmp2+"];";
+ parse(tmp);
+ dt=(t2-t1)/Num;
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ pdL=[[tt,x0,y0]];
+ flg=0;
+ forall(1..floor((t2-initt)/dt),
+ if(flg==0,
+ kl1=dt*funP(tt,x0,y0);
+ kl2=dt*funP(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funP(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funP(tt+dt,x0+kl3_1,y0+kl3_2);//16.10.14
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt+#*dt;
+ pdL=append(pdL,[tt,x0,y0]);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ flg=0;
+ forall(1..floor((initt-t1)/dt),
+ if(flg==0,
+ kl1=dt*funN(tt,x0,y0);
+ kl2=dt*funN(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funN(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funN(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt-#*dt;
+ pdL=prepend([tt,x0,y0],pdL);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ println("Generate Deqplot "+name);
+ pdL=apply(pdL,#_Sel);
+ tmp1=apply(pdL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ );
+ if(Noflg<1,
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(outstr=="Sci",
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ ,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ pdL;
+ );
+ );
+);
+
+Enclosing(nm,plist):=EnclosingS(nm,plist);
+Enclosing(nm,plist,options):=EnclosingS(nm,plist,options);
+EnclosingS(nm,plist):=EnclosingS(nm,plist,[]);
+EnclosingS(nm,plist,options):=(
+//help:Enclosing("1",["sc2","crAB","sc2","Invert(sc1)"],[pt,"dr"]);
+ regional(name,AnsL,Start,Eps,EEps,S,Flg,Fdata,Gdata,KL,pt,qt,
+ t1,t2,t3,ii,nn,tmp,tmp1,tmp2,Ltype,Noflg,realL,eqL,opstr,opcindy);
+ name="en"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ realL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ EEps=0.1;
+ Start=[];
+ Flg=0;
+ forall(realL,
+ if(isList(#) % ispoint(#),
+ Start=Lcrd(#); // 15.09.12
+ ,
+ Flg=Flg+1;
+ if(Flg==1,Eps=#);
+ if(Flg==2,EEps=#);
+ );
+ );
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ Fdata=plist_1;
+ Gdata=plist_(length(plist));
+ KL=IntersectcrvsPp(Fdata,Gdata);
+ if(length(KL)==1,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ );
+ if(length(KL)==0,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ pt=tmp_1;
+ t1=tmp_2;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ pt=tmp_3;
+ t1=tmp_4;
+ );
+ );
+ if(length(KL)>1,
+ if(Start==[],
+ err("No Start Point");
+ ,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ tmp=|pt-Start|;
+ forall(2..length(KL),ii, // 15.04.20
+ tmp1=KL_ii_1;
+ tmp2=|tmp1-Start|; // 15.04.20
+ if(tmp2<tmp,
+ pt=tmp1;
+ t1=KL_ii_2;
+ tmp=tmp2;
+ );
+ );
+ );
+ );
+// pt=Pcrd(pt); // 15.09.12
+ Start=pt;
+ AnsL=[];
+ forall(1..length(plist),nn,
+ Fdata=plist_nn;
+ if(nn>1, pt=qt);
+ if(nn==length(plist),
+ qt=Start;
+ ,
+ Flg=0;
+ Gdata=plist_(nn+1);
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ KL=IntersectcrvsPp(Gdata,Fdata);
+ if(length(KL)==1,
+ tmp=KL_1;
+ qt=KL_1_1;
+ t3=KL_1_2;
+ Flg=10;
+ );
+ if(length(KL)==0,Flg=1);
+ if(length(KL)>1,
+ tmp1=KL_1_1;
+ tmp2=KL_2_1;
+ tmp=|tmp1-tmp2|;
+ if(tmp<Eps*10, Flg=1);
+ );
+ if(Flg==1,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ qt=tmp_1;
+ t3=tmp_4;
+ Flg=10;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ qt=tmp_3;
+ t3=tmp_2;
+ Flg=10;
+ );
+ );
+ if(Flg<10,
+ t2=10^6; //%inf;
+ forall(1..length(KL),ii,
+ tmp1=KL_ii_1;
+ tmp=KL_ii_3;
+ tmp2=ParamonCurve(tmp1,tmp,Fdata);
+ tmp3=KL_ii_2;
+ if(tmp2>t1+Eps & tmp2<t2+Eps,
+ qt=tmp1;
+ t2=tmp2;
+ t3=tmp3;
+ );
+ );
+ );
+ );
+ tmp=Partcrv("",pt,qt,Fdata,["nodata"]);
+ t1=t3;
+ if(nn==1,
+ AnsL=tmp;
+ ,
+ AnsL=concat(AnsL,tmp_(2..length(tmp)));
+ );
+ );
+ AnsL=apply(AnsL,Pcrd(#)); // 15.09.12
+ AnsL_(length(AnsL))=AnsL_1;//16.10.20
+ if(Noflg<3,
+ println("generate Enclosing "+name);
+ tmp=name+"="+textformat(AnsL,5);
+ parse(tmp);
+// tmp=name+"=Enclosing(";//16.10.20from
+// tmp1="list(";
+// forall(plist,
+// tmp1=tmp1+#+",";
+// );
+// tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ tmp=apply(AnsL,LLcrd(#));
+ tmp=name+"=Listplot("+textformat(tmp,5)+")";//16.10.20upto
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp=apply(AnsL,LLcrd(#));//16.10.20
+ tmp;
+);
+
+Shade(plist):=Shade(plist,[]);
+Shade(plist,options):=(
+//help:Shade(["gr2","sg1"],[0.5]);
+//help:Shade([pointlist],[0.5]);
+ regional(tmp,tmp1,tmp2,opstr,opcindy,Str,G2,flg);
+ if(isstring(plist_1), // 16.01.24
+ println("output Shade of "+plist);
+ ,
+ println("output Shade of lists");
+ );
+ tmp=Divoptions(options);
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ flg=0;
+ forall(plist,
+ if(flg==0,
+ if(isstring(#),tmp=parse(#),tmp=#); // from 16.01.24
+ if(!islist(tmp),flg=1); upto
+ );
+ );
+ if(flg==1,
+// err("some data not defined yet");
+ ,
+ G2=Joincrvs("1",plist,["nodata"]);
+ G2=apply(G2,Pcrd(#));
+ tmp1="fillpoly("+textformat(G2,5)+opcindy+");";
+ parse(tmp1);
+ );
+ Str="Shade(";
+ tmp1="list(";
+ forall(plist,
+ if(isstring(#), // from 16.01.24
+ if(length(#)>1,
+ tmp1=tmp1+#+",";
+ ,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ ,
+ tmp1=tmp1+"Listplot("+textformat(#,5)+"),";
+ ); // upto 16.01.24
+ );
+ Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ Com2nd(Str);
+);
+
+
+//help:start();
+
+Rotatepoint(point,Theta,ctr):=(
+//help:Rotatepoint(A,2*pi/3,B);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(ctr);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ [X2,Y2];
+);
+
+Translatepoint(point,mov):=(
+//help:Translatepoint(A,[2,3]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=X1+Cx;
+ Y2=Y1+Cy;
+ [X2,Y2];
+);
+
+Scalepoint(point,ratio,center):=(
+//help:Scalepoint(A,[3,2],[0,0]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(center);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+ratio_1*(X1-Cx);
+ Y2=Cy+ratio_2*(Y1-Cy);
+ [X2,Y2];
+);
+
+Reflectpoint(point,symL):=(
+//help:Reflectpoint(A,B);
+//help:Reflectpoint(A,[[2,3]]);
+//help:Reflectpoint(A,[C,E]);\\
+ regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ [X2,Y2];
+);
+
+Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]);
+Rotatedata(nm,plist,angle,options):=(
+//help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]);
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,
+ opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="rt"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Pt=Lcrd(tmp1_1));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ if(isstring(angle),Theta=parse(angle),Theta=angle);
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Rotatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Rotatedata("+tmp1+","
+ +textformat(angle,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+translatedata(nm,plist,mov):=translatedata(nm,plist,mov,[]);
+translatedata(nm,plist,mov,options):=(
+//help:translatedata("1",["gr1"],[1,2]);
+ regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,
+ opcindy,X2,Y2,Ltype,Noflg,name);
+ name="tr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=tmp_1+Cx;
+ Y2=tmp_2+Cy;
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate translatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=translatedata("+tmp1+","+textformat(mov,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Scaledata(nm,plist,ratioV):=(
+ regional(tmp);
+ tmp=Lcrd(ratioV);
+ Scaledata(nm,plist,tmp_1,tmp_2,[]);
+);
+Scaledata(nm,plist,Arg1,Arg2):=(
+//help:Scaledata("1","crAB",3,2,[[0,0]]);
+ regional(tmp,options);
+ if(islist(Arg2),
+ tmp=Lcrd(Arg1);
+ options=Arg2;
+ Scaledata(nm,plist,tmp_1,tmp_2,options);
+ ,
+ Scaledata(nm,plist,Arg1,Arg2,[]);
+ );
+);
+Scaledata(nm,plist,rx,ry,options):=(
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name);
+ name="sc"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,
+ Pt=Lcrd(tmp1_1);
+ );
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=Cx+rx*(tmp_1-Cx);
+ Y2=Cy+ry*(tmp_2-Cy);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Scaledata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Scaledata("+tmp1+","
+ +textformat(rx,5)+","+textformat(ry,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]);
+Reflectdata(nm,plist,symL,options):=(
+//help:Reflectdata("1","crAB",[C]);
+ regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="re"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Reflectdata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Reflectdata("+tmp1+","+textformat(symL,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Mksegments():=Mksegments([]);
+Mksegments(options):=(
+//help:Mksegments();
+ regional(segstr,p,q,r,tmp1,tmp2,tmp3);
+ forall(allsegments(),seg,
+ str=text(inspect(seg,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Listplot([parse(p),parse(q)]);
+ );
+);
+
+Mkcircles():=Mkcircles([]);
+Mkcircles(options):=(
+//help:Mkcircles():
+ regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4);
+ forall(allcircles(),cir,
+ str=text(inspect(cir,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ tmp4=indexof(str,";",tmp2+1);
+ if(tmp4==0,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Circledata([parse(p),parse(q)]);
+ ,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp4-1);
+ r=substring(str,tmp4,tmp3-1);
+ Circledata([parse(p),parse(q),parse(r)]);
+ );
+ );
+);
+
+Makesciarg(arglist):=(
+ regional(str,tmpstr);
+ str="";
+ forall(arglist,
+ if(isstring(#),
+ tmpstr=Dq+#+Dq;
+ ,
+ tmpstr=textformat(#,5);
+ );
+ str=str+tmpstr+",";
+ );
+ str=substring(str,0,length(str)-1);
+ str;
+);
+
+Setax(arglist):=(
+//help:Setax(["l","x","e","y","n","O","sw"]);
+//help:Setax([7,"nw"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com1st("Setax("+tmp+")");
+);
+
+Htickmark(arglist):=(
+//help:Htickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp="";
+ tmp=Makesciarg(arglist);
+ Com2nd("Htickmark("+tmp+")");
+);
+
+Vtickmark(arglist):=(
+//help:Vtickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com2nd("Vtickmark("+tmp+")");
+);
+
+Drwxy():=(
+//help:Drwxy();
+ Com2nd("Drwxy()");
+ Addax(0); // 16.01.21
+);
+
+Drwpt(pstr):=Drawpoint(pstr);
+Drwpt(ptlist,nn):=( // 16.03.05 from
+//help:Drwpt(A);
+//help:Drwpt("[1,1],0");
+//help:Drwpt(A,0);
+//help:Drwpt([1,2],0);
+ Drawpoint(ptlist,nn);
+);
+Drawpoint(pstr):=(
+ if(isstring(pstr),
+ println("Drwpt : "+pstr);
+ Com2nd("Drwpt("+pstr+")");
+ ,
+ Drawpoint(pstr,1);
+ );
+);
+Drawpoint(ptlistorg,nn):=(
+ regional(ptlist,thick,tmp,tmp1);
+ println("Drwpt : "+text(ptlistorg));
+ if(islist(ptlistorg),
+ if(MeasureDepth(ptlistorg)==1,
+ ptlist=ptlistorg
+ ,
+ ptlist=[ptlistorg]
+ );
+ ,
+ ptlist=[ptlistorg]
+ );
+ thick=PenThick/PenThickInit;// 16.04.09 from
+ tmp1=max(TenSize/TenSizeInit,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ forall(ptlist,
+ tmp=textformat(#,5)+","+text(nn);
+ Com2nd("Drwpt("+tmp+")"); // 16.04.09
+ );
+ Setpen(thick); // 16.04.09
+);// 16.03.05 upto
+
+Addax(param):=(
+//help:Addax(0);
+ ADDAXES=text(param);
+);
+
+Expr(Pt,Dr,St):=Expr([Pt,Dr,St]);
+Expr(list):=Expr(list,[]);
+Expr(listorg,options):=( //16.10.09
+//help:Expr([A,"e","f(x)=x^2"]);
+ regional(list,str,tmp,tmp1,tmp2);
+ list=listorg;
+ forall(1..round(length(list)/3),
+ str=list_(3*#);
+ if(!isstring(str),str=format(str,5));
+ str="$"+str+"$";
+ list_(3*#)=str;
+ );
+ Letter(list,options);
+);
+
+Letter(Pt,Dr,St):=Letter([Pt,Dr,St]);
+Letter(list):=Letter(list,[]);
+Letter(list,options):=(
+//help:Letter([C,"c","Graph of f(x)"]);
+ regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy,
+ opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2);
+ tmp=Divoptions(options);
+ Noflg=tmp_2;
+ opL=select(options,indexof(#,"->")>0); //16.10.09from
+ tmp=select(opL,indexof(#,"color"));
+ size=12;
+ clr=[0,0,0];
+ bld=false;
+ ita=false;
+ aln="left";
+ forall(opL,
+ tmp=indexof(#,"->");
+ tmp1=removespace(substring(#,0,tmp-1));
+ tmp2=substring(#,tmp+1,length(#));
+ if(tmp1=="size",sz=parse(tmp2));
+ if(tmp1=="color",clr=parse(tmp2));
+ if(tmp1=="bold",bld=parse(tmp2));
+ if(tmp1=="ita",ita=parse(tmp2));
+ );//16.10.09upto
+ Off=-4;
+ Dmv=8;
+ Nj=1;
+ while(Nj+2<=length(list),
+// Pos=textformat(list_Nj,5);
+ Pos=list_Nj;
+ Dir=list_(Nj+1);
+ tmp=indexof(Dir,"s")+indexof(Dir,"n");//16.10.19from
+ if(tmp>0,
+ tmp=indexof(Dir,"w")+indexof(Dir,"e");
+ if(tmp==0,
+ Dir="c"+Dir;//16.10.08
+ );
+ );//16.10.19upto
+ Str=list_(Nj+2);
+ if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09
+ tmp=replace(Str,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ Str=replace(tmp,".y","(2)");
+ if(indexof(Str,"`")>0,
+// tmp=Dq+",Assign('"+Str+"','`',Prime()))";
+ tmp=Dq+",Assign('"+Str+"'))"; // 15.02.22
+ ,
+ tmp=Dq+","+Dq+Str+Dq+")";
+ );
+ if(Noflg==0,
+ Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10
+ );
+ if(Noflg<2,
+ Xmv=0;//16.10.13
+ Ymv=-4;
+ if(indexof(Dir,"n")>0,
+ Ymv=Dmv/2;
+ );
+ if(indexof(Dir,"s")>0,
+ Ymv=-Dmv*3/2;//16.10.13
+ );
+ if(indexof(Dir,"e")>0,
+ Xmv=Dmv/2;
+ Off=0;
+ aln="left";
+ );
+ if(indexof(Dir,"w")>0,
+ Xmv=-Dmv/2;
+ Off=0; // 16.09.30from
+ aln="right";
+ );
+ if(indexof(Dir,"c")>0,
+ Xmv=0;//16.10.13
+ Off=0;
+ if(Ymv==0,Ymv=-4);//16.10.08
+ aln="mid"; // 16.09.30upto
+ );
+ drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv],
+ size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09
+ );
+ Nj=Nj+3;
+ );
+);
+
+Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str);
+Letterrot(pt,dir,movstr,str):=(
+//help:Letterrot(C,B-A,"AB"):
+//help:Letterrot(C,B-A,0,5,"AB"):
+//help:Letterrot(C,B-A,"t0n5","AB"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Letterrot(pt,dir,tmov,nmov,str);
+);
+Letterrot(pt,dir,tmov,nmov,str):=(
+ Letter([pt,"c",str],["notex"]);
+ Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str);
+Exprrot(pt,dir,movstr,str):=(
+//help:Exprrot(C,B-A,"d"):
+//help:Exprrot(C,B-A,0,5,"d"):
+//help:Exprrot(C,B-A,"t0n5","d"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Exprrot(pt,dir,tmov,nmov,str);
+);
+Exprrot(pt,dir,tmov,nmov,str):=(
+ Expr([pt,"c",str],["notex"]);
+ Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Putpoint(name,Pt):=Putpoint(name,Pt,Pt);
+Putpoint(name,Ptinit,Pt):=(
+//help:Putpoint("A",[1,2],[1,A.y]);
+ regional(ptstr);
+ ptstr=apply(allpoints(),#.name);
+ if(!contains(ptstr,name),
+ createpoint(name,Pcrd([Ptinit_1,Ptinit_2]));
+ ,
+ ptstr=name+".xy="+textformat(Pcrd(Pt),5);
+ parse(ptstr);
+ );
+);
+
+Bezierpt(t,ptlist,ctrlist):=(
+ regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9);
+ p0=ptlist_1;
+ p3=ptlist_2;
+ p1=ctrlist_1;
+ if(length(ctrlist)==1,
+ p2=p3;
+ flg3=0;
+ ,
+ p2=ctrlist_2;
+ flg3=1;
+ );
+ if(length(p0)<3, // 15.02.08
+ p0=Lcrd(p0);
+ p3=Lcrd(p3);
+ p1=Lcrd(p1);
+ p2=Lcrd(p2);
+ );
+ p4=(1-t)*p0+t*p1;
+ p5=(1-t)*p1+t*p2;
+ p6=(1-t)*p2+t*p3;
+ p7=(1-t)*p4+t*p5;
+ p8=(1-t)*p5+t*p6;
+ p9=(1-t)*p7+t*p8;
+ if(flg3==0,p7,p9);
+);
+
+Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]);
+Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options);
+Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options);
+BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+BezierCurve(nm,ptlistorg,ctrlistorg,options):=(
+//help:Bezier("1",[A,D],[B,C]);
+//help:Bezier(options=["Num=10"]);
+ regional(name,Ltype,Noflg,opstr,opcindy,Num,
+ ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list);
+ name="bz"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Num=10;
+ tmp1=tmp_5;
+ forall(tmp1, // 14.12.31
+ if(substring(#,0,1)=="N",
+ tmp2=indexof(#,"=");
+ Num=parse(substring(#,tmp2,length(#)));
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16
+ ctrlist=[]; // 14.12.31
+ if(length(ctrlistorg)==length(ptlist)-1,
+ forall(ctrlistorg,tmp1,
+ if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1);
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ ,
+ forall(1..(length(ptlist)-1),ii,
+ tmp=ctrlistorg_((2*ii-1)..(2*ii));
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ );
+ if(!islist(Num),
+ Num=apply(ctrlist,Num);
+ );
+ list=[];
+ forall(1..(length(ptlist)-1),ii,
+ tmp1=ptlist_(ii..(ii+1));
+ tmp2=ctrlist_ii;
+ if(ii==1,st=0,st=1);
+ forall(st..Num_ii,
+ tmp=Bezierpt(#/Num_ii,tmp1,tmp2);
+ list=append(list,tmp);
+ );
+ );
+ if(Noflg<3,
+ println("generate Bezier "+name);
+ out=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(out,5);
+ parse(tmp);
+ tmp1=textformat(ptlist,5);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=textformat(ctrlist,5);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ list;
+);
+
+Readcsvsla(fname):=Readplotdigdata(fname,[]);
+Readcsvsla(fname,options):=Readplotdigdata(fname,options);
+Readplotdigdata(fname):=Readplotdigdata(fname,[]);
+Readplotdigdata(fname,options):=(
+ regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3);
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ sc=1;//10;
+ mv=[0,0];//[5,5];
+ forall(tmp1,
+ if(!islist(#),sc=#,mv=#);
+ );
+ if(indexof(fname,".")>0,
+ tmp=load(fname);
+ ,
+ tmp=load(fname+".txt");
+ );
+ cmdall=tokenize(tmp,"//");
+ dataL=[];
+ forall(2..length(cmdall),ii,
+ tmp1=parse("["+cmdall_ii+"]");
+ dataL=append(dataL,tmp1);
+ );
+ if(length(dataL_(length(dataL)))<2,
+ dataL=dataL_(1..(length(dataL)-1));
+ );
+ nd=length(dataL_1)/2;
+ npt=length(dataL);
+ ptdata=[];
+ forall(1..nd,ii,
+ tmp3=[];
+ forall(1..npt,
+ tmp1=dataL_#_(2*ii-1);
+ tmp2=dataL_#_(2*ii);
+ if(isreal(tmp1),
+ tmp3=append(tmp3,[tmp1,tmp2]);
+ );
+ );
+ ptdata=append(ptdata,tmp3);
+ );
+ tmp1=[];
+ forall(ptdata,
+ tmp=#/sc;
+ tmp=translatedata("1",[tmp],-mv,["nodata"]);
+ tmp1=append(tmp1,tmp);
+ );
+ ptdata=tmp1;
+ ptdata;
+);
+
+Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]);
+Putbezierdata(name,ptL,options):=(
+ regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs);
+ tmp=Divoptions(options);
+ psize=3;
+ Deg=3;
+ tmp1=tmp_5;
+ forall(tmp1,
+ if(substring(#,0,1)=="D",
+ tmp=indexof(#,"=");
+ Deg=parse(substring(#,tmp,length(#)));
+ );
+ if(substring(#,0,1)=="S",
+ tmp=indexof(#,"=");
+ psize=parse(substring(#,tmp,length(#)));
+ );
+ );
+ pts=[];
+ ctrs=[];
+ forall(1..length(ptL),
+ p2=ptL_#; // 16.08.16
+ if(ispoint(p2),
+ tmp1=text(p2);
+ ,
+ tmp1=name+text(#);
+ Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ inspect(parse(tmp1),"ptsize",psize);
+ pts=append(pts,parse(tmp1));
+ inspect(parse(tmp1),"color",4);
+ if(#>1,
+ p1=Lcrd(ptL_(#-1)); // 16.08.16
+ p2=Lcrd(ptL_#); // 16.08.16
+ if(Deg==3,
+ tmp=(2*p1+p2)/3;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ tmp=(p1+2*p2)/3;
+ tmp2=name+"q"+text(#-1);
+ Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16
+ inspect(parse(tmp2),"labeled",false); //15.01.22
+ Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22
+ inspect(parse(tmp2),"ptsize",psize);
+ inspect(parse(tmp2),"color",3);
+ ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]);
+ ,
+ tmp=(p1+p2)/2;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ ctrs=append(ctrs,[parse(tmp1)]);
+ );
+ );
+ );
+ [pts,ctrs,name];
+);
+
+Bezierstart(n):=( // 2016.02.26
+ BezierNumber=n;
+);
+
+Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]);
+Mkbezierptcrv(ptdata,options):=(
+ //help:Mkbezierptcrv([A,B,C,D]);
+ //help:Mkbezierptcrv([[A,B],[C,D]]);
+ //help:Mkbezierptcrv(options=["Num=10"]);
+ // global BezierNumber
+ regional(ptlist,Out,tmp,tmp1,tmp2);
+ if(isstring(ptdata),
+ ptlist=Readcsvsla(ptdata,options);
+ ,
+ ptlist=ptdata;
+ );
+ if(MeasureDepth(ptlist)==1,ptlist=[ptlist]);
+ Out=[];
+ forall(1..length(ptlist),
+ tmp=floor((BezierNumber-1)/26);// 15.02.23
+ if(tmp==0,tmp="",tmp=text(tmp));
+ tmp2=mod(BezierNumber,26);
+ if(tmp2==0,tmp2=26);
+ tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11
+ tmp2=Putbezierdata(tmp1,ptlist_#,options);
+ Bezier(tmp2,options);
+ BezierNumber=BezierNumber+1;
+ Out=append(Out,tmp2_(1..2));
+ );
+ Out;
+);
+
+Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]);
+Mkbeziercrv(nm,ptctrL,options):=(
+ //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]);
+ regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2);
+ if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL);
+ forall(1..length(ptctrLL),
+ name=nm+text(#);
+ ptlist=ptctrLL_#_1;
+ ctrlist=ptctrLL_#_2;
+ Bezier(name,ptlist,ctrlist,options);
+ );
+);
+
+Writebezier():=Writebezier(Fhead,"all");
+Writebezier(head):=Writebezier(head,"all");
+Writebezier(head,seL):=(
+//help:Writebezier(file);
+//help:Writebezier(file,"acd");
+ regional(bz,dt,name,tmp,tmp1,tmp2);
+ bz=select(GLIST,indexof(#,"=Bezier")>0);
+ tmp1=[]; // 16.04.22from
+ if(seL!="all",
+ forall(1..length(seL),
+ tmp=substring(seL,#-1,#);
+ tmp=select(bz,indexof(#,"bz"+tmp)>0);
+ tmp1=concat(tmp1,tmp);
+ );
+ bz=tmp1;// 16.04.22upto
+ );
+ dt=[head+"n",[[length(bz),0]]];
+ forall(1..length(bz),
+ tmp=indexof(bz_#,"=");
+ name=substring(bz_#,0,tmp-1);
+ tmp=indexof(bz_#,","+Dq);
+ if(tmp>0,
+ tmp1=substring(bz_#,0,tmp-1)+")";
+ ,
+ tmp1=bz_#;
+ );
+ tmp1=replace(tmp1,"Bezier(","[");
+ tmp1=replace(tmp1,"list(","[");
+ tmp1=replace(tmp1,")","]");
+ tmp1=replace(tmp1,",",".xy,");
+ tmp1=replace(tmp1,"]",".xy]");
+ tmp1=replace(tmp1,".xy,[",",[");
+ tmp1=replace(tmp1,"].xy","]");
+ tmp1=replace(tmp1,name,head+text(#));
+ parse(tmp1);
+ tmp=parse(head+text(#)+"_1");
+ dt=concat(dt,[head+text(#)+"k",tmp]);
+ tmp=parse(head+text(#)+"_2");
+ dt=concat(dt,[head+text(#)+"c",tmp]);
+ );
+ WriteOutData(head+".txt",dt);
+ dt;
+);
+
+Readbezier(file):=Readbezier(file,[]);
+Readbezier(file,optionorg):=(
+//help:Readbezier("xsr");
+//help:Readbezier(options=["Num=10","nogeo"]);
+ regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3);
+ options=optionorg;
+ tmp=Divoptions(options);
+ stL=tmp_7;
+ geo=0;
+ forall(stL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="G",geo=1);
+ options=remove(options,[#]);
+ );
+ ReadOutData(file);
+ tmp=file+"n_1_1";
+ nn=parse(tmp);
+ out=[];
+ forall(1..nn,nc,
+ tmp=file+text(nc);
+ tmp1=parse(tmp+"k");
+ tmp2=parse(tmp+"c");
+ if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from
+ if(geo==1,
+ alpha="abcdefghijklmnopqrstuvwxyz";
+ forall(1..length(tmp1),
+ tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#);
+ Putpoint(tmp,tmp1_#,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"ptsize",3);
+ tmp1_#=parse(tmp+".xy");
+ );
+ forall(1..length(tmp2),
+ tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1";
+ Putpoint(tmp,tmp2_#_1,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_1=parse(tmp+".xy");
+ tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2";
+ Putpoint(tmp,tmp2_#_2,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_2=parse(tmp+".xy");
+ );
+ BezierNumber=BezierNumber+1;
+ );
+ Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22upto
+ out=append(out,"bz"+tmp);
+ );
+ out;
+);
+
+Ospline(nm,ptlist):=Ospline(nm,ptlist,[]);
+Ospline(nm,ptlist,options):=(
+//help:Ospline("1",ptlist,[options]);
+ regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg,
+ p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ name="o"+nm;
+ if(isstring(ptlist),list=parse(ptlist),list=ptlist);
+ if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0);
+// list=apply(list,LLcrd(#));
+ ctrL=[];
+ forall(1..(length(list)-1),
+ flg=0;
+ p1=Lcrd(list_#); // 16.08.16
+ p2=Lcrd(list_(#+1)); // 16.08.16
+ if(#==1 % #==length(list)-1,
+ flg=1;
+ if(closed==0,
+ pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16
+ pR=(2*p1+p2)/3; // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ flg=2;
+ ,
+ if(#==1,
+ p0=Lcrd(list_(length(list)-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ ,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_2); // 16.08.16
+ );
+ );
+ );
+ if(flg<=1,
+ if(flg==0,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ );
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16
+ pR=p2+cc*(p1-p3); // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ );
+ );
+// list=apply(list,LLcrd(#)); // 16.08.16
+// ctrL=apply(ctrL,LLcrd(#));
+ if(closed==0, // 15.09.21
+ p1=ctrL_2_1;
+ p2=Lcrd(list_2); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_1=[pQ];
+ tmp=length(ctrL);
+ tmp1=ctrL_(tmp-1);
+ p1=ctrL_(tmp-1)_2;
+ p2=Lcrd(list_(tmp)); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_tmp=[pQ];
+ );
+ Bezier("o"+nm,list,ctrL,options);
+);
+
+CRspline(nm,ptL):=CRspline(nm,ptL,[]);
+CRspline(nm,ptL,options):=(
+ // Catmull-Rom spline
+//help:CRspline("1",[A,B,C,A]);
+ regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg);
+ name="crsp"+nm;
+ if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL);
+ ptlist=tmp_1;
+ if(length(tmp)==1,
+ cflg=1;
+ ,
+ cflg=0;
+ ctrpts=tmp_2;
+ );
+ c=1/6;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp)); // 15.03.05
+ forall(eqL,
+ if(substring(#,0,1)=="R",
+ tmp2=indexof(#,"=");
+ c=parse(substring(#,tmp2,length(#)));
+ );
+ );
+ ptlist=apply(ptlist,Lcrd(#)); // 16.08.16
+ ctrlist=[];
+ forall(1..(length(ptlist)-1),
+ if(#==1,
+ if(cflg==0,
+ tmp1=ctrpts_1;
+ ,
+ v=ptlist_2-ptlist_(length(ptlist)-1);
+ tmp1=ptlist_#+c*v;
+ );
+ ,
+ v=ptlist_(#+1)-ptlist_(#-1);
+ tmp1=ptlist_#+c*v;
+ );
+ if(#==length(ptlist)-1,
+ if(cflg==0,
+ tmp2=ctrpts_2;
+ ,
+ v=ptlist_2-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ ,
+ v=ptlist_(#+2)-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ tmp=select(options,indexof(text(#),"->")>0);
+ tmp=append(tmp,"notex"); //15.03.05
+ Pointdata(name+text(#),[tmp1,tmp2],tmp);
+ ctrlist=append(ctrlist,[tmp1,tmp2]);
+ );
+ Bezier(nm,ptlist,ctrlist,options);
+);
+
+Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]);
+//help:Beziersmooth("1",[A,B,C,A]);
+Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options);
+Bzspline(nm,ptL):=Bzspline(nm,ptL,[]);
+Bzspline(nm,ptLorg,options):=(
+ // smooth bezier
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzsp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ lstr="c"+text(#);
+ pt=ptLorg_#; // 16.08.16
+ pt1=parse("C"+text(#-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp2="C"+text(#)+"p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp2],"PointOnLine",[parse(lstr),tmp]);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ tmp1="C1p";
+ Putpoint(tmp1,(4*pt+pt1)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ if(cflg==1,
+ lstr="c1";
+ pt=ptLorg_1; // 16.08.16
+ pt1=parse("C"+text(length(ptL)-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp1="C1p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp1],"PointOnLine",[parse(lstr),tmp]);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ if(#>1 % cflg==1,
+ tmp1="c"+text(#);
+ inspect(parse(tmp1),"alpha",0.3);
+ );
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp1),"ptsize",3);
+ inspect(parse(tmp1),"color",3);
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]);
+Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options);
+Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]);
+Bzsspline(nm,ptLorg,options):=(
+ // smooth bezier with symmetric control points
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzssp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1)));
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ pt=ptL_#;
+ pt1=parse("C"+text(#-1)+"q");
+ tmp2="C"+text(#)+"p=2*pt-pt1";
+ parse(tmp2);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ Putpoint("C1p",(4*pt+pt1)/5,Lcrd(C1p)); // 16.08.16
+ inspect(C1p,"ptsize",3);
+ inspect(C1p,"color",3);
+ );
+ if(cflg==1,
+ pt=ptL_1;
+ pt1=Lcrd(parse("C"+text(length(ptL)-1)+"q")); // 16.08.16
+ tmp1="Putpoint("+Dq+"C1p"+Dq+",2*pt-pt1)"; // 16.08.16
+ parse(tmp1);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Listbspline2bz(listorg):=(
+ regional(Eps,list,pcl,ptl,ctrl,k);
+ Eps=10^(-3);
+ list=apply(listorg,Lcrd(#)); // 16.08.16
+ k=length(list);
+ if(|list_1-list_k|>Eps,
+ pcl=list;
+ pcl_1=2*list_1-list_2;
+ pcl_k=2*list_k-list_(k-1);
+ ,
+ pcl=concat(list,[list_2]);
+ );
+ ctrl=apply(2..(length(pcl)-1),[pcl_#]);
+ ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2);
+ [ptl,ctrl];
+);
+
+Bspline(nm,ctrL):=Bspline(nm,ctrL,[]);
+Bspline(nm,ctrL,options):=(
+//help:Bspline("",[A,B,C]);
+ regional(list,tmp);
+ list=Listbspline2bz(ctrL);
+ tmp=BezierCurve("b"+nm,list_1,list_2,options);
+ tmp;
+);
+
+MeetCurve(Crv,Xorg,Yorg):=(
+ regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate);
+ if(isstring(Crv),Cv=parse(Crv),Cv=Crv);
+ if(MeasureDepth(Cv)==2,Cv=Cv_1);
+ Cv=apply(Cv,LLcrd(#)); // 14.12.18
+ while(length(Cv)==1,
+ Cv=Cv_1;
+ );
+ Cv=apply(Cv,Lcrd(#));
+ tmp1=min(apply(Cv,#_1));
+ tmp2=max(apply(Cv,#_1));
+ if(isstring(Xorg),X0=parse(Xorg),X0=Xorg);
+ if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg);
+ if(X0<tmp1,
+ X0=tmp1;
+ ,
+ if(X0>tmp2,
+ X0=tmp2;
+ );
+ );
+ tmp1=select(
+ 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1);
+ tmp2=select(
+ 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1);
+ tmp2=remove(tmp2,common(tmp2,tmp1));
+ Ban=concat(tmp1,tmp2);
+ Tate=select(Ban,
+ abs(Cv_#_1-Cv_(#+1)_1)<=
+ 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2)
+ );
+ Ban=remove(Ban,Tate);
+ Ylist=[];
+ forall(Ban,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1);
+ Ylist=append(Ylist,tmp);
+ );
+ forall(Tate,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp1=min([y1,y2]);
+ tmp2=max([y1,y2]);
+ if(Y0<tmp1,
+ tmp=tmp1;
+ ,
+ if(Y0>tmp2,
+ tmp=tmp2;
+ ,
+ tmp=Y0;
+ );
+ );
+ Ylist=append(Ylist,tmp);
+ );
+ tmp=sort(Ylist,abs(#_1-Y0));
+ [X0,tmp_1];
+);
+
+PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]);
+PutonLine(name,p1org,p2org,options):=(
+//help:PutonLine("C","sgAB");
+//help:PutonLine("C",pA,pB);
+ regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ tmp1=(1-par)*p1+par*p2;
+ if(abs(dx)>abs(dy),
+ tmp=name+".x";
+ tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11upto
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ if(abs(dy)>0,
+ tmp=name+".y";
+ tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]";
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ tmp2=p1;//16.10.11
+ Putpoint(name,tmp1,tmp2);
+ );
+ );
+);
+
+PutonSeg(name,sgstr):=(
+ regional(seg,p1,p2);
+ if(isstring(sgstr),seg=parse(sgstr),seg=sgstr);
+ PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2));
+);
+PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]);
+PutonSeg(name,p1org,p2org,options):=(
+//help:PutonSeg("C","sgAB");
+//help:PutonSeg("C",pA,pB);
+ regional(par,dx,dy,p,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ PutonLine(name,p1,p2,[par]);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ p=parse(name+".xy");
+ p=LLcrd(p);
+ if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");
+ );
+ );
+ if(abs(dx)<abs(dy) & (p_2-p1_2)*(p_2-p2_2)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");//16.10.11upto
+ );
+ );
+);
+
+PutonCurve(pn,crv):=PutonCurve(pn,crv,[]);
+PutonCurve(pn,crv,options):=(
+//help:PutonCurve("A","gr1");
+ regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg);
+ if(!islist(options),optionL=[options],optionL=options);
+ leftlim=XMIN;
+ rightlim=XMAX;
+ Flg=0;
+ Msg="y";
+ forall(optionL,
+ if(isstring(#), // 16.02.10 from
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="N", Msg="n"); // 16.02.10 upto
+ ,
+ if(Flg==0,
+ leftlim=#;
+ Flg=Flg+1;
+ ,
+ rightlim=#;
+ );
+ );
+ );
+ Pmt=MeetCurve(crv,leftlim,0);
+ pstr=apply(allpoints(),textformat(#,5)); // 15.04.07
+ if(!contains(pstr,pn),
+ createpoint(pn,Pcrd(Pmt));
+ ,
+ tmp1=parse(pn+".x");
+ if(tmp1< leftlim % tmp1>rightlim,
+ if(tmp1< leftlim,tmp= leftlim, tmp=rightlim);
+ Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y");
+ ,
+ Pmt=MeetCurve(crv,pn+".x",pn+".y");
+ );
+ ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";";
+ parse(ptstr);
+ );
+ if(Msg=="y",
+ println("Put "+pn+" on Curve "+text(crv));
+ );
+);
+
+CrossPoint(name,Crv1,Crv2,range):=(
+ regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2);
+ Mx1=range_1; Mx2=range_2;
+ repeat(15,
+ Mx3=(Mx1+Mx2)/2;
+ Crs1=MeetCurve(Crv1,Mx1,0);
+ Crs2=MeetCurve(Crv2,Mx1,0);
+ Crs3=MeetCurve(Crv1,Mx3,0);
+ Crs4=MeetCurve(Crv2,Mx3,0);
+ df1=Crs1_2-Crs2_2;
+ df2=Crs3_2-Crs4_2;
+ if((df1>0 & df2>0) % (df1<0 & df2<0),
+ Mx1=Mx3;
+ ,
+ Mx2=Mx3;
+ );
+ );
+ Putpoint(name,Crs1);
+);
+
+Setscaling(sc):=(
+//help:Setscaling(3);
+ SCALEX=1;
+ SCALEY=sc;
+ Com0th("Setscaling("+sc+")");
+ Setwindow("Msg=no");
+);
+
+Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]);
+Tabledatalight(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledatalight("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledatalight "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist));
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tabledata(nm,n,m,xsize,ysize,rmvL):=
+ Tabledata(nm,n,m,xsize,ysize,rmvL,[]);
+Tabledata(nm,n,m,xsize,ysize,rmvL,options):=(
+ regional(Tb,name,tmp,xLst,yLst);
+ name="tb"+nm;
+ xLst=apply(1..n,xsize/n);
+ yLst=apply(1..m,ysize/m);
+ Tabledata(nm,xLst,yLst,rmvL,options)
+);
+Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]);
+Tabledata(nm,xLst,yLst,rmvL,options):=(
+//help:Tabledata("",xLst,yLst,rmvL,[2]);
+ regional(name,upleft,ul,flg,tick,n,m,xsize,ysize,rlist,clist,Tb,
+ tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ println("Tabledata "+name+" generated");
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ tick=1;
+ tmp=Divoptions(options);
+ flg=0;
+ forall(tmp_6,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp="C"+text(#);
+ tmp1="c"+text(#)+"r0";
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]);
+ clist_(#+1)=parse(tmp+".xy");
+ );
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp="R"+text(#);
+ tmp1="c0r"+text(#);
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ rlist_(#+1)=parse(tmp+".xy");
+ );
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(#<m,
+ tmp1=parse("C"+text(#));
+ tmp2=parse("C"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp+[-0.2,0.5],text((tmp2.x-tmp1.x)*10));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(#<n,
+ tmp1=parse("R"+text(#));
+ tmp2=parse("R"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp-[1.2,0.1],text(abs(tmp1.y-tmp2.y)*10));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist)); // 15.06.11
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ Tb;
+);
+
+Tseginfo(seg):=(
+ regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2);
+ if(substring(seg,0,2)=="sg",
+ cr=substring(seg,2,length(seg));
+ ,
+ cr=seg;
+ );
+ tp=substring(cr,0,1);
+ if(tp=="c",
+ tpc="r";
+ ,
+ tpc="c";
+ );
+ tmp1=indexof(cr,tpc);
+ tmp=substring(cr,tmp1,length(cr));
+ tmp2=tmp1+indexof(tmp,tpc);
+ n1=substring(cr,1,tmp1-1);
+ n2=substring(cr,tmp1,tmp2-1);
+ n3=substring(cr,tmp2,length(cr));
+ [tp+n1,tpc,parse(n2),parse(n3)];
+);
+
+Tsegrmv(rmvL):=Tsegrmv(rmvL,[]);
+Tsegrmv(rmvL,options):=(
+ regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2);
+ forall(rmvL,cr,
+ tmp1=Tseginfo(cr);
+ hd=tmp1_1;
+ tpc=tmp1_2;
+ m1=tmp1_3;
+ m2=tmp1_4;
+ gcL=select(GCLIST,Tseginfo(#_1)_1==tmp1_1);
+ flg=0;
+ forall(gcL,
+ if(flg==0,
+ tmp=Tseginfo(#_1);
+ n1=tmp_3;
+ n2=tmp_4;
+ if(m1>=n1 & m2<=n2,
+ gc=#;
+ flg=1;
+ );
+ );
+ );
+ if(flg==1,
+ Changestyle([gc_1],["nodisp"]);
+ tail="";
+ if(indexof(hd,"r")>0,
+ tail=hd; hd="";
+ );
+ if(n1<m1,
+ tmp1=tpc+text(n1);
+ tmp2=tpc+text(m1);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ if(m2<n2,
+ tmp1=tpc+text(m2);
+ tmp2=tpc+text(n2);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ );
+ );
+);
+
+Tgrid(ptstr):=(
+//help:Tgrid("c2r5");
+ regional(tmp,tmp1,tmp2);
+ tmp=parse(ptstr);
+ if(islist(tmp),
+ tmp;
+ ,
+ tmp=indexof(ptstr,"r");
+ tmp1=substring(ptstr,1,tmp-1);
+ tmp1=parse(tmp1);
+ tmp2=substring(ptstr,tmp,length(ptstr));
+ tmp2=parse(tmp2);
+ [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2];
+ );
+);
+
+Tlistplot(ptL):=Tlistplot(ptL,[]);
+Tlistplot(Ag1,Ag2):=(
+ regional(nm,ptL,options);
+ if(isstring(Ag1),
+ nm=Ag1;
+ ptL=Ag2;
+ options=[];
+ ,
+ ptL=Ag1;
+ options=Ag2;
+ nm=ptL_1+ptL_2;
+ );
+ Tlistplot(nm,ptL,options);
+);
+Tlistplot(nm,ptL,options):=(
+//help:Tlistplot(["c0r0","c0r4"]);
+//help:Tlistplot("1",["c0r0","c0r4"]);
+ regional(tmp);
+ tmp=apply(ptL,Tgrid(#)); // 15.06.03
+ Listplot(nm,tmp,append(options,"Msg=no"));
+);
+
+ChangeTablestyle(nameL,style):=(
+////help:ChangeTablestyle(["r0c0c3"],["da"]);
+ regional(nmL,tmp,tmp1,tmp2);
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ nmL=apply(nmL,"sg"+#);
+ nmL=select(nmL,islist(parse(#)));
+ Changestyle(nmL,style);
+);
+
+Findcell(pos1,pos2):=Findcell("",pos1,pos2);
+Findcell(Tbdata,pos1,pos2):=(
+//help:Findcell("c0r0","c2r1");
+ regional(tmp1,tmp2,posnw,posse,ctr,dx,dy);
+ if(isstring(pos1),
+ posnw=Tgrid(pos1); // 15.05.20
+ posse=Tgrid(pos2);
+ //posnw=parse(pos1);
+ //posse=parse(pos2);
+ ,
+ if(islist(pos1),
+ posnw=pos1;
+ posse=pos2;
+ ,
+ tmp1="c"+text(pos1-1)+"r"+text(pos2-1);
+ tmp2="c"+text(pos1)+"r"+text(pos2);
+ posnw=Tgrid(tmp1);
+ posse=Tgrid(tmp2);
+// posnw=parse(tmp1);
+// posse=parse(tmp2);
+ );
+ );
+ ctr=(posnw+posse)/2;
+ dx=abs(posse_1-ctr_1);
+ dy=abs(posnw_2-ctr_2);
+ [ctr,dx,dy];
+);
+
+Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr);
+Putcell(Tbdata,pos1,pos2,dir,lttr):=(
+//help:Putcell("c0r0","c2r1","lt","abc");
+//help:Putcell(2,3,"c","xyz");
+ regional(tmp,tmp1,tmp2,posnw,posse,
+ posdir,posstr,ctr,dx,dy);
+ tmp=Findcell(Tbdata,pos1,pos2);
+ ctr=tmp_1; dx=tmp_2; dy=tmp_3;
+ posdir=ctr;
+ posstr=dir;
+ if(indexof(dir,"b")>0,
+ posdir_2=posdir_2-dy;
+ posstr=replace(posstr,"b","n");
+ );
+ if(indexof(dir,"t")>0,
+ posdir_2=posdir_2+dy;
+ posstr=replace(posstr,"t","s");
+ );
+ if(indexof(dir,"l")>0,
+ posdir_1=posdir_1-dx;
+ posstr=replace(posstr,"l","e");
+ );
+ if(indexof(dir,"r")>0,
+ posdir_1=posdir_1+dx;
+ posstr=replace(posstr,"r","w");
+ );
+ Letter(posdir,posstr,text(lttr));
+);
+
+Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex);
+Putcellexpr(Tbdata,pos1,pos2,dir,ex):=(
+//help:Putcellexpr("c0r0","c2r1","lt","abc");
+//help:Putcellexpr(2,3,"c","\sin x");
+ Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$");
+);
+
+Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL);
+Putrow(Tbdata,nrow,dir,lttrL):=(
+//help:Putrow(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,mcol);
+ mcol=length(lttrL);
+ forall(1..mcol,
+ Putcell(Tbdata,#,nrow,dir,lttrL_#);
+ );
+);
+
+Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL);
+Putrowexpr(Tbdata,nrow,dir,exL):=(
+//help:Putrowexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ Putrow(Tbdata,nrow,dir,lttrL);
+);
+
+PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL);
+PutcoL(Tbdata,mcol,dir,lttrL):=(
+//help:PutcoL(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,nrow);
+ nrow=length(lttrL);
+ forall(1..nrow,
+ Putcell(Tbdata,mcol,#,dir,lttrL_#);
+ );
+);
+PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL);
+PutcoLexpr(Tbdata,mcol,dir,exL):=(
+//help:PutcoLexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ PutcoL(Tbdata,mcol,dir,lttrL);
+);
+
+Setwindow():=Setwindow("Msg=yes");
+Setwindow(str):=(
+ regional(tmp,tmp1,tmp2,msg);
+ msg="y";
+ tmp=indexof(str,"="); // 16.02.10
+ tmp1=Toupper(substring(str,tmp,tmp+1));
+ if(tmp1=="N",msg="n");
+ if((ispoint(SW) & ispoint(NE)),
+ tmp1=Lcrd(SW);
+ tmp2=Lcrd(NE);
+ XMIN=tmp1_1; XMAX=tmp2_1;
+ YMIN=tmp1_2; YMAX=tmp2_2;
+ ,
+// XMIN=-5; XMAX=5;
+// YMIN=Lcrdy(-5); YMAX=Lcrdy(5);
+ createpoint("SW",Pcrd([XMIN,YMIN]));
+ createpoint("NE", Pcrd([XMAX,YMAX]));
+ );
+ if(msg=="y",
+ println("Setwindow(["+XMIN+","+XMAX+"],["+YMIN+","+YMAX+"])");
+ );
+ layer(KETPICLAYER);
+ autoclearlayer(KETPICLAYER,true);
+ drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
+ Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
+);
+Setwindow(xrange,yrange):=(
+//help:Setwindow([2,3],[-1,1]);
+ XMIN=xrange_1;
+ XMAX=xrange_2;
+ YMIN=yrange_1;
+ YMAX=yrange_2;
+// Setwindow();
+);
+
+Sciform(list):=(
+ regional(plotlist,comp,pos,out,out2,nn,strL,flg,
+ tmp,tmp1,tmp2,tmp3,Nj);
+ plotlist=Flatten([list]);
+ out=replace(plotlist_1,".xy","");
+ out=replace(out,".x","(1)");
+ out=replace(out,".y","(2)");
+ if(length(plotlist)==1,
+ comp=[];
+ forall(1..length(out),
+ comp=append(comp,substring(out,#-1,#));
+ );
+ out="";
+ pos=0;
+ forall(comp,
+ if(#!="'",
+ out=out+#;
+ ,
+ if(pos==0,
+ tmp=indexof(out,"Assign(");
+ if(substring(out,length(out)-7,length(out))=="Assign(",
+ out=out+"'";
+ pos=1;
+ ,
+ out=out+"Assign('";
+ pos=2;
+ );
+ ,
+ if(pos==2,
+ out=out+"')";
+ ,
+ out=out+"'";
+ );
+ pos=0;
+ );
+ );
+ );
+ ,
+ forall(2..length(plotlist),
+ comp=plotlist_#;
+ if(isstring(comp),
+ pos=indexof(comp,"Assign(");
+ if(pos>0,
+ comp=substring(comp,6,length(comp));
+ );
+ out=out+"Assign(";
+ comp=replace(comp,".xy","");
+ comp=replace(comp,".x","(1)");
+ comp=replace(comp,".y","(2)");
+ out=out+"'"+comp+"'";
+ out=out+"),";
+ );
+ if(islist(comp),
+ forall(comp,
+ out=out+"'"+#+"',";
+ );
+ );
+ );
+ if(length(plotlist)>1,
+ out=substring(out,0,length(out)-1);
+ out=out+");";
+ );
+ );
+ pos=[];
+ forall(1..length(out),
+ tmp=indexof(substring(out,#-1,length(out)),"Assign");
+ if(tmp>0,
+ tmp1=#-1+tmp;
+ if(length(pos)==0,
+ pos=[tmp1];
+ ,
+ if(pos_(length(pos))<tmp1,
+ pos=append(pos,tmp1);
+ );
+ );
+ );
+ );
+ if(length(pos)>0,
+ strL=[];
+ Nj=0;
+ forall(pos,
+ tmp=substring(out,Nj,#-1);
+ strL=append(strL,tmp);
+ Nj=#-1;
+ );
+ strL=append(strL,substring(out,Nj,length(out)));
+ out="";
+ forall(strL,
+ if(indexof(#,"Assign")==0,
+ out=out+#;
+ ,
+ tmp=indexof(#,"('");
+ tmp1=indexof(#,"')");
+ tmp2=substring(#,tmp+1,tmp1-2);
+ tmp3=substring(#,tmp1-2,length(#));
+ if(indexof(tmp2,"=")==0,
+ out=out+#;
+ ,
+ tmp=substring(tmp2,0,indexof(tmp2,"="));
+ out=out+"'"+tmp+"'+"+"Assign('";
+ tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2));
+ out=out+tmp+tmp3;
+ );
+ );
+ );
+ );
+ out2=""; // patched 16.01.21 from
+ nn=length(out);
+ flg=0;
+ forall(1..nn,
+ if(flg==0,
+ tmp=indexof(out,"='+Assign('");
+ if(tmp==0,
+ out2=out2+out;
+ flg=1;
+ ,
+ out2=out2+substring(out,0,tmp);
+ out=substring(out,tmp+10,length(out));
+ tmp=indexof(out,"'"); // 16.04.19 from
+ tmp1=substring(out,0,tmp-1);
+ tmp2="1234567890";
+ tmp=apply(1..length(tmp1),
+ indexof(tmp2,substring(tmp1,#-1,#)));
+ tmp=min(tmp);
+ if(tmp==0, // 16.04.19 upto
+ out2=out2+"'+Assign('";
+ ,
+ tmp=indexof(out,"'");
+ out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 upto
+ );
+ );
+ );
+ );
+ out2=replace(out2,"Dist=","D=");
+ out2=replace(out2,"Dis=","D=");
+ out2;
+);
+
+
+Rform(list):=(
+ regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj);
+ out=list;
+ out=replace(out,"[[[","list([[");
+ out=replace(out,"[","c(");
+ out=replace(out,"]",")");
+ out=replace(out,".xy","");
+ out=replace(out,".x","[1]");
+ out=replace(out,".y","[2]");
+ out;
+);
+
+Defvar(varstr):=(
+ regional(name,value,tmp,tmp1);
+ parse(varstr);
+ tmp=indexof(varstr,"=");
+ name=substring(varstr,0,tmp-1);
+ value=substring(varstr,tmp,length(varstr));
+ value=parse(value);
+ tmp1=select(1..length(VLIST),VLIST_#_1==name+"=");
+ if(length(tmp1)>0,
+ tmp=tmp1_1;
+ VLIST_tmp=[name+"=",value];
+ ,
+ VLIST=prepend([name+"=",value],VLIST);
+ );
+);
+
+Defvar(name,value):=(
+//help:Defvar("a",0.3);
+ regional(tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+format(#,5)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ tmp1=format(value,5);
+ );
+ tmp=name+"="+tmp1; // 15.02.06
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=name+"="); // 15.02.08
+ VLIST=prepend([name+"=",value],VLIST);
+);
+
+Iftosci(strorg):=( // 16.06.10
+ regional(str,ifL,ppL,cpL,kk,sL,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ str=replace(strorg,LFmark,"");
+ ifL=Indexall(str,"if(");
+ ppL=Bracket(str,"()");
+ cpL=Indexall(str,",");
+ tmp1=Bracket(str,"[]");
+ forall(1..(length(tmp1)/2),kk,
+ cpL=select(cpL,#<tmp1_(2*kk-1)_1%#_1>tmp1_(2*kk)_1);
+ );
+ forall(1..length(ifL),kk,
+ tmp=select(ppL,#_1>ifL_kk);
+ tmp1=tmp_1;
+ tmp2=select(tmp,#_2==-tmp1_2);
+ tmp2=tmp2_1;
+ tmp3=select(cpL,#>tmp1_1 & #<tmp2_1);
+ ifL_kk=[tmp1_1,tmp2_1,tmp1_2,tmp3];
+ );
+ forall(1..length(cpL),kk,
+ tmp=select(1..length(ifL),contains(ifL_#_4,cpL_kk));
+ tmp1=tmp_(length(tmp));
+ cpL_kk=[cpL_kk,tmp1];
+ );
+ sL=apply(1..length(str),substring(str,#-1,#));
+ forall(1..length(ifL),kk,
+ tmp1=ifL_kk_1;
+ tmp2=ifL_kk_2;
+ tmp=select(cpL,#_2==kk);
+ tmp3=apply(tmp,#_1);
+ sL_tmp1=" ";
+ sL_tmp2=";end;";
+ sL_(tmp3_1)=" then,";
+ if(length(tmp3)>1,
+ sL_(tmp3_2)=";else,";
+ );
+ );
+ tmp=sum(sL);
+);
+
+Fortosci(strorg):=(
+ regional(str,jj,var,tmp,tmp1,tmp2,tmp3,tmp4,
+ Out,repL,Pflg,Iflg,Cflg);
+ str=strorg;
+ repL=[];
+ tmp1=Indexall(str,"forall");
+ tmp2=Indexall(str,",");
+ forall(1..length(tmp1),jj,
+ tmp=select(tmp2,#>tmp1_jj);
+ var=substring(str,tmp_1,tmp_2-1);
+ tmp3=substring(str,tmp1_jj-1,tmp_2-1);
+ tmp=indexof(tmp3,"(");
+ tmp4=substring(tmp3,tmp,length(tmp3));
+ tmp=indexof(tmp4,",");
+ tmp4=substring(tmp4,0,tmp-1);
+ tmp4="for "+var+"="+tmp4;
+ tmp4=replace(tmp4,"..",":");
+ repL=concat(repL,[tmp3,tmp4]);
+ );
+ forall(1..length(repL)/2,
+ str=replace(str,repL_(2*#-1),repL_(2*#));
+ );
+ tmp=Bracket(str);
+ tmp=select(tmp,#_2==0);
+ tmp=tmp_1_1;
+ tmp1=substring(str,tmp-1,length(str));
+ tmp1=replace(tmp1,")",";end");
+ str=substring(str,0,tmp-1)+tmp1;
+ str=replace(str,";;",";");
+ str;
+);
+
+Deffun(name,bodylist):=(
+//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); // 16.02.18
+ regional(funstr,tmp,tmp1,str,Pos);
+ funstr=name+":=(";
+ forall(bodylist,
+ funstr=funstr+#+";";
+ );
+ funstr=funstr+");";
+ parse(funstr);
+ tmp=bodylist_(length(bodylist));
+ str="function "+tmp+"="+name+",";
+ forall(1..(length(bodylist)-1),
+ tmp1=bodylist_#;
+ tmp1=replace(tmp1,LFmark,"");// 16.05.26
+ tmp1=replace(tmp1," ","");// 16.05.26
+ Pos=indexof(tmp1,"regional")+indexof(tmp1,"local");
+ if(Pos==0,
+ tmp=replace(tmp1,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ tmp=replace(tmp,".y","(2)");
+ if(indexof(tmp,"if(")>0,
+ tmp=iftosci(tmp);
+ );
+ if(indexof(tmp,"forall(")>0, // 16.05.26from
+ tmp=Fortosci(tmp);
+ ); // 16.05.26upto
+ str=str+tmp+",";
+ );
+ );
+ str=str+"endfunction;";
+ FUNLIST=append(FUNLIST,str);
+);
+
+Windispg():=(
+ regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,tmp3,opcindy);
+ gsave();
+ layer(KETPIClayer);
+ forall(GCLIST,Nj,
+ if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
+ if(islist(Dt) & length(Dt)>0, // 12.19,12.22
+ tmp=MeasureDepth(Dt);
+ if(tmp==1,Dt=[Dt]);
+ opcindy=Nj_3;
+ if(Nj_2<0,tmp1=0,tmp1=Nj_2);
+ if(tmp1<10,
+ forall(Dt,Nk,
+// tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#));
+// tmp2=apply(tmp2,Pcrd(#));
+ tmp2=Nk; // 14.12.04
+ if(length(Nk)>1,
+ forall(2..length(Nk),
+ tmp3=textformat(Nk_[#-1,#],5);
+ tmp3=substring(tmp3,1,length(tmp3)-1);
+ if(tmp1==1,opcindy=opcindy+",dashpattern->[2,2]");
+ tmp="draw("+tmp3+
+ ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")";
+ parse(tmp);
+ );
+ ,
+ if(length(Nk)==1,
+ tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
+ parse(tmp);
+ );
+ );
+ );
+ );
+ );
+ );
+// if(ADDAXES=="1", // 16.10.08from
+// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]);
+// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]);
+// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]);
+// Letter([[0,0],"sw","O"]);
+// ); // 16.10.08upto
+ grestore();
+ layer(0);
+);
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(kobayashi-suzuki).txt b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(kobayashi-suzuki).txt
new file mode 100644
index 00000000..897ac82f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(kobayashi-suzuki).txt
@@ -0,0 +1,116 @@
+®–Ê“Ê‘½–Ê‘Ìi‚y-‘½–Ê‘Ìj‚ÌÀ•Wƒf[ƒ^‚ɂ‚¢‚Ä 1994”N6ŒŽ22“ú
+
+‚PD‚Í‚¶‚ß‚É
+
+ ‚RŽŸŒ³ƒ†[ƒNƒŠƒbƒh‹óŠÔ‚Ì‘½–Ê‘Ì‚Ì’†‚ÅCg•Ó‚Ì’·‚³‚Ì“™‚µ‚¢³‘½ŠpŒ`‚ð–Ê
+‚É‚à‚“ʑ½ŠpŒ`h‚ÍC®–Ê“Ê‘½–Ê‘Ì(regular-faced convex polyhedron)‚ÆŒÄ
+‚΂ê‚Ä‚¢‚Ü‚·D®–Ê“Ê‘½–Ê‘Ì‚ÍC³‘½–Ê‘ÌC€³‘½–Ê‘ÌC³‘½Šp’ŒC³‘½Šp”½
+’Œ‚𜂭‚Æ 92 Ží—Þ‚µ‚©‘¶Ý‚µ‚Ü‚¹‚ñD‚±‚Ì‚±‚Æ‚ðØ–¾‚µ‚½Victor A.
+Zalgaller(1) ‚É‚¿‚È‚ñ‚ÅC®–Ê“Ê‘½–Ê‘Ì‚Í‚y-‘½–Ê‘Ì(Z-polyhedron)‚Æ‚àŒÄ‚Î
+‚ê‚Ä‚¢‚Ü‚·D
+
+ ®–Ê“Ê‘½–Ê‘Ì‚Ì–ÍŒ^‚ÍCŽ†‚È‚Ç‚ÅŠÈ’P‚Éì‚邱‚Æ‚ª‚Å‚«‚Ü‚·‚ªC’¸“_‚ÌÀ•W
+‚ðŒvŽZ‚·‚邱‚Æ‚ª“‚­C‚±‚ê‚܂ŃRƒ“ƒsƒ…[ƒ^‚É‚æ‚é•\Ž¦‚Í¢“ï‚Å‚µ‚½DŽ„
+‚½‚¿‚ÍC‘½–ʑ̂̃Oƒ‰ƒt•\Œ»‚ð—˜—p‚µ‚½ŒvŽZƒAƒ‹ƒSƒŠƒYƒ€‚ðlˆÄ‚µC’Tõ‚Æ”
+’lŒvŽZ‚É‚æ‚Á‚Ä‚·‚ׂĂ̮–Ê“Ê‘½ŠpŒ`‚Ì’¸“_‚̈ʒuÀ•W‚ð‹‚ß‚Ü‚µ‚½(2)D‚±
+‚ÌÀ•Wƒf[ƒ^‚Í‚³‚Ü‚´‚Ü‚È—p“r‚É—˜—p‚Å‚«‚é‚ÆŽv‚í‚ê‚Ü‚·‚Ì‚ÅC‚±‚±‚ÉŒöŠJ‚¢
+‚½‚µ‚Ü‚·D‚Ç‚¤‚¼‚¨–𗧂ĉº‚³‚¢D
+
+ À•Wƒf[ƒ^‚ÍŽ©—R‚É”z•z‚µ‚Ä‚¢‚½‚¾‚¢‚Ä‚©‚Ü‚¢‚Ü‚¹‚ñD‚½‚¾‚µCƒf[ƒ^‚É‚Í
+•K‚¸‚±‚̃hƒLƒ…ƒƒ“ƒg‚ð“Y‚¦‚ĉº‚³‚¢D‚È‚¨CÀ•Wƒf[ƒ^‚Ì—˜—p‚ÉŠÖ‚µ‚Ä”­¶
+‚µ‚½ˆêØ‚ÌáŠQ‚ɂ‚¢‚ÄÓ”C‚𕉂¢‚©‚Ë‚Ü‚·‚Ì‚ÅCŒä—¹³‰º‚³‚¢D
+
+ “d‹C’ÊM‘åŠw î•ñHŠw‰È ¬—Ñ Œõ•v
+ §182 “Œ‹ž“s’²•zŽs’²•zƒ–‹u1-5-1
+ ‘—§—ðŽj–¯‘­”Ž•¨ŠÙ î•ñŽ‘—¿Œ¤‹†•” —é–Ø ‘쎡
+ §285 ç—tŒ§²‘qŽsé“à’¬117
+ E-mail: suzuki@alp0.cs.uec.ac.jp
+ suz-tak@tansei.cc.u-tokyo.ac.jp
+
+’F
+(1) Zalgaller,V.A.: Convex Polyhedra with Regular Faces(‰p–ó”Å),
+Consultants Bureau, 1969. (Œ´’˜‚Í Zalgaller,B.A.: Vypuklye
+Mnogogranniki c Pravil'nymi Granyami, Nauka Press, 1966.)
+(2) ¬—ÑŒõ•v, —é–ؑ쎡: ³‘½ŠpŒ`‚ð–Ê‚É‚à‚‚·‚ׂĂ̓ʑ½–Ê‘Ì‚Ì’¸“_À•W
+‚ÌŒvŽZ, “d‹C’ÊM‘åŠw‹I—v, Vol.5, No.2, pp.147-184(1992).
+
+
+‚QDƒf[ƒ^ƒtƒ@ƒCƒ‹‚ÌŽí—Þ
+
+‘½–ʑ̃f[ƒ^‚̓fƒBƒŒƒNƒgƒŠ data/ ‚É‚ ‚éD
+
+‚P‚‚̑½–ʑ̂ɂ‚«‚P‚‚̃tƒ@ƒCƒ‹‚ª‘Ήž‚·‚éDŠe‘½–ʑ̂̃tƒ@ƒCƒ‹–¼‚ðˆÈ‰º
+‚ÉŽ¦‚·Dƒtƒ@ƒCƒ‹–¼‚Æ‘½–Ê‘Ì‚Ì–¼Ì‚Ƃ̑Ήž‚ÍCƒtƒ@ƒCƒ‹ dnamej.tex ‚Ì•\‚P
+‚©‚ç•\‚R‚ðŽQÆ‚Ì‚±‚ÆD
+
+³‘½–Ê‘Ì(regular polyhedron): r01, r02, r03, r04, r05.
+(r02 = a03, r03 = p04)
+
+€³‘½–Ê‘Ì(semiregular polyhedron): s01, s02, s03, s04, s05, s06, s07,
+s08, s09, s10, s11, s12L, s12R, s13L, s13R.
+(s12 ‚Æ s13 ‚Í‚»‚ꂼ‚ꋾ‘œŠÖŒW‚É‚ ‚鑽–Ê‘Ì‚ª‘¶Ý‚·‚é‚Ì‚ÅC¶ŽèŒn‚ƉEŽè
+Œn‚ð‚»‚ê‚¼‚ê L, R ‚Å‹æ•Ê‚µ‚Ä‚¢‚éD)
+(n37 ‚Í s08 ‚Ì”P‚ꂽ‚à‚ÌDƒ~ƒ‰[‚Ì‘½–ʑ̂ƌĂ΂ê‚éD‚±‚ê‚ð s14 ‚Æ‚Ý‚È
+‚·ê‡‚ª‚ ‚éD)
+
+³‘½Šp’Œ(prism): p03, p04, p05, p06, p07, p08, p09, p10.
+
+³‘½Šp”½’Œ(antiprism): a03, a04, a05, a06, a07, a08, a09, a10.
+
+®–Ê“Ê‘½–Ê‘Ì(regular-faced convex polyhedron):
+ iœ‚­³‘½–Ê‘ÌC€³‘½–Ê‘ÌC³‘½Šp’ŒC³‘½Šp”½’Œj
+n01, n02, n03, n04, n05, n06, n07, n08, n09, n10, n11, n12, n13, n14,
+n15, n16, n17, n18, n19, n20, n21, n22, n23, n24, n25, n26, n27, n28,
+n29, n30, n31, n32, n33, n34, n35, n36, n37, n38, n39, n40, n41, n42,
+n43, n44L, n44R, n45L, n45R, n46L, n46R, n47L, n47R, n48L, n48R, n49,
+n50, n51, n52, n53, n54, n55, n56, n57, n58, n59, n60, n61, n62, n63,
+n64, n65, n66, n67, n68, n69, n70, n71, n72, n73, n74, n75, n76, n77,
+n78, n79, n80, n81, n82, n83, n84, n85, n86, n87, n88, n89, n90, n91,
+n92.
+(n44, n45, n46, n47, n48 ‚É‚Í‹¾‘œŠÖŒW‚É‚ ‚鑽–Ê‘Ì‚ª‘¶Ý‚·‚é‚Ì‚ÅC¶Žè
+Œn‚ƉEŽèŒn‚ð‚»‚ê‚¼‚ê L, R ‚Å‹æ•Ê‚µ‚Ä‚¢‚éD)
+
+
+‚RDƒf[ƒ^‚̃tƒH[ƒ}ƒbƒg
+
+ ƒf[ƒ^‚͂‚¬‚Ì‚SŽí—ނ̃f[ƒ^‚©‚ç‚È‚éD
+ E’¸“_‚É—×Ú‚·‚é’¸“_‚̃f[ƒ^
+ E’¸“_‚ðˆÍ‚ޖʂ̃f[ƒ^
+ E–Ê‚ð\¬‚·‚é’¸“_‚̃f[ƒ^
+ E’¸“_‚ÌÀ•Wƒf[ƒ^
+
+ ’¸“_C–ʂ͔Ԇ‚ÅŽ¯•Ê‚·‚éDn ŒÂ‚Ì’¸“_‚ª‚ ‚é‚Æ‚«‚Ì’¸“_”Ô†‚͈̔͂Í
+1 ”Ô‚©‚ç n ”Ô‚Ü‚Å‚Æ‚È‚éDm ŒÂ‚Ì–Ê‚ª‚ ‚é‚Æ‚«‚̖ʔԆ‚͈̔͂Í
+1 ”Ô‚©‚ç m ”Ô‚Ü‚Å‚Æ‚È‚éD
+
+ ‹ï‘Ì“I‚É‚ÍC‚‚¬‚̂悤‚Ƀf[ƒ^‚ª‚È‚ç‚ñ‚Å‚¢‚éDƒf[ƒ^‚Í’¸“_À•W
+‚̃f[ƒ^‚¾‚¯ŽÀ”‚ÅC‚ ‚Æ‚Í®”‚Å‚ ‚é
+
+ ’¸“_‚Ì”
+ ’¸“_”Ô† ’¸“_‚É—×Ú‚·‚é’¸“_‚Ì” —×Ú‚·‚é’¸“_‚̔ԆDDD
+ DDD
+ i’¸“_‚Ì”‚¾‚¯‘±‚­j
+ DDD
+ ’¸“_‚Ì”
+ ’¸“_”Ô† ’¸“_‚É—×Ú‚·‚é–Ê‚Ì” —×Ú‚·‚é–ʂ̔ԆDDD
+ DDD
+ i’¸“_‚Ì”‚¾‚¯‘±‚­j
+ DDD
+ –Ê‚Ì”
+ –ʔԆ –Ê‚ð\¬‚·‚é’¸“_‚Ì” –Ê‚ð\¬‚·‚é’¸“_‚̔ԆDDD
+ DDD
+ i–Ê‚Ì”‚¾‚¯‘±‚­j
+ DDD
+ ’¸“_‚Ì”
+ ’¸“_”Ô† ’¸“_‚Ì‚wÀ•W ’¸“_‚Ì‚xÀ•W ’¸“_‚Ì‚yÀ•W
+ DDD
+ i’¸“_‚Ì”‚¾‚¯‘±‚­j
+ DDD
+
+
+‚SD‘½–ʑ̂̃n[ƒhƒRƒs[‚ɂ‚¢‚Ä
+
+Še‘½–ʑ̂̃n[ƒhƒRƒs[‚ð PBM Œ`Ž®‚Å‹L˜^‚µ‚½‚à‚Ì‚ªCƒfƒBƒŒƒNƒgƒŠ
+hardcopy/ ‚É‚ ‚éDƒtƒ@ƒCƒ‹–¼‚̑Ήž‚ÍÀ•Wƒf[ƒ^‚Æ“¯‚¶‚Å‚ ‚éD
+
+ˆÈãD
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(mitani).txt b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(mitani).txt
new file mode 100644
index 00000000..262fff5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/READMEj(mitani).txt
@@ -0,0 +1,7 @@
+OBJŒ`Ž®‚ÌÀ•Wƒf[ƒ^‚ɂ‚¢‚Ä
+
+¬—ÑŽA—é–ØŽ‚ª¶¬‚µ‚½®–Ê“Ê‘½–Ê‘Ìi‚y-‘½–Ê‘Ìj‚ÌÀ•Wƒf[ƒ^‚ðOBJŒ`Ž®‚É•ÏX‚µ‚½‚à‚Ì‚Å‚·B
+ƒf[ƒ^‚Ì“à—e‚ɂ‚¢‚Ä‚ÍA‚±‚̃tƒ@ƒCƒ‹‚Æ“¯«‚³‚ê‚Ä‚¢‚éREADMEj(kobayashi-suzuki).txt‚ð‚²——‚­‚¾‚³‚¢B
+
+2007”N8ŒŽ27“ú
+ŽO’Jƒ jmitani@gmail.com
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a03.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a03.obj
new file mode 100644
index 00000000..2259162a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a03.obj
@@ -0,0 +1,14 @@
+v -0.70710678 -0.40824829 0.57735027
+v 0.00000000 0.81649658 0.57735027
+v 0.70710678 -0.40824829 0.57735027
+v -0.00000000 -0.81649658 -0.57735027
+v -0.70710678 0.40824829 -0.57735027
+v 0.70710678 0.40824829 -0.57735027
+f 1 2 5
+f 1 5 4
+f 1 4 3
+f 1 3 2
+f 2 3 6
+f 2 6 5
+f 3 4 6
+f 4 5 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a04.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a04.obj
new file mode 100644
index 00000000..552dd092
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a04.obj
@@ -0,0 +1,18 @@
+v -0.60778126 -0.60778126 0.51108108
+v -0.60778126 0.60778126 0.51108108
+v 0.60778126 0.60778126 0.51108108
+v 0.60778126 -0.60778126 0.51108108
+v -0.00000000 -0.85953250 -0.51108108
+v -0.85953250 0.00000000 -0.51108108
+v 0.00000000 0.85953250 -0.51108108
+v 0.85953250 -0.00000000 -0.51108108
+f 1 2 6
+f 1 6 5
+f 1 5 4
+f 1 4 3 2
+f 2 3 7
+f 2 7 6
+f 3 4 8
+f 3 8 7
+f 4 5 8
+f 5 6 7 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a05.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a05.obj
new file mode 100644
index 00000000..0ad84696
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a05.obj
@@ -0,0 +1,22 @@
+v -0.52573111 -0.72360680 0.44721360
+v -0.85065081 0.27639320 0.44721360
+v 0.00000000 0.89442719 0.44721360
+v 0.85065081 0.27639320 0.44721360
+v 0.52573111 -0.72360680 0.44721360
+v -0.00000000 -0.89442719 -0.44721360
+v -0.85065081 -0.27639320 -0.44721360
+v -0.52573111 0.72360680 -0.44721360
+v 0.52573111 0.72360680 -0.44721360
+v 0.85065081 -0.27639320 -0.44721360
+f 1 2 7
+f 1 7 6
+f 1 6 5
+f 1 5 4 3 2
+f 2 3 8
+f 2 8 7
+f 3 4 9
+f 3 9 8
+f 4 5 10
+f 4 10 9
+f 5 6 10
+f 6 7 8 9 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a06.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a06.obj
new file mode 100644
index 00000000..fa5467aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a06.obj
@@ -0,0 +1,26 @@
+v -0.45970084 -0.79622522 0.39331989
+v -0.91940169 0.00000000 0.39331989
+v -0.45970084 0.79622522 0.39331989
+v 0.45970084 0.79622522 0.39331989
+v 0.91940169 -0.00000000 0.39331989
+v 0.45970084 -0.79622522 0.39331989
+v -0.00000000 -0.91940169 -0.39331989
+v -0.79622522 -0.45970084 -0.39331989
+v -0.79622522 0.45970084 -0.39331989
+v 0.00000000 0.91940169 -0.39331989
+v 0.79622522 0.45970084 -0.39331989
+v 0.79622522 -0.45970084 -0.39331989
+f 1 2 8
+f 1 8 7
+f 1 7 6
+f 1 6 5 4 3 2
+f 2 3 9
+f 2 9 8
+f 3 4 10
+f 3 10 9
+f 4 5 11
+f 4 11 10
+f 5 6 12
+f 5 12 11
+f 6 7 12
+f 7 8 9 10 11 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a07.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a07.obj
new file mode 100644
index 00000000..17d011c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a07.obj
@@ -0,0 +1,30 @@
+v -0.40659420 -0.84430155 0.34905022
+v -0.91360887 -0.20852526 0.34905022
+v -0.73265743 0.58427480 0.34905022
+v 0.00000000 0.93710402 0.34905022
+v 0.73265743 0.58427480 0.34905022
+v 0.91360887 -0.20852526 0.34905022
+v 0.40659420 -0.84430155 0.34905022
+v -0.00000000 -0.93710402 -0.34905022
+v -0.73265743 -0.58427480 -0.34905022
+v -0.91360887 0.20852526 -0.34905022
+v -0.40659420 0.84430155 -0.34905022
+v 0.40659420 0.84430155 -0.34905022
+v 0.91360887 0.20852526 -0.34905022
+v 0.73265742 -0.58427480 -0.34905022
+f 1 2 9
+f 1 9 8
+f 1 8 7
+f 1 7 6 5 4 3 2
+f 2 3 10
+f 2 10 9
+f 3 4 11
+f 3 11 10
+f 4 5 12
+f 4 12 11
+f 5 6 13
+f 5 13 12
+f 6 7 14
+f 6 14 13
+f 7 8 14
+f 8 9 10 11 12 13 14
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a08.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a08.obj
new file mode 100644
index 00000000..2235341d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a08.obj
@@ -0,0 +1,34 @@
+v -0.36349134 -0.87754573 0.31270999
+v -0.87754573 -0.36349134 0.31270999
+v -0.87754573 0.36349134 0.31270999
+v -0.36349134 0.87754573 0.31270999
+v 0.36349134 0.87754573 0.31270999
+v 0.87754573 0.36349134 0.31270999
+v 0.87754573 -0.36349134 0.31270999
+v 0.36349134 -0.87754573 0.31270999
+v -0.00000000 -0.94984865 -0.31270999
+v -0.67164442 -0.67164442 -0.31270999
+v -0.94984865 0.00000000 -0.31270999
+v -0.67164442 0.67164442 -0.31270999
+v 0.00000000 0.94984865 -0.31270999
+v 0.67164442 0.67164442 -0.31270999
+v 0.94984865 -0.00000000 -0.31270999
+v 0.67164442 -0.67164442 -0.31270999
+f 1 2 10
+f 1 10 9
+f 1 9 8
+f 1 8 7 6 5 4 3 2
+f 2 3 11
+f 2 11 10
+f 3 4 12
+f 3 12 11
+f 4 5 13
+f 4 13 12
+f 5 6 14
+f 5 14 13
+f 6 7 15
+f 6 15 14
+f 7 8 16
+f 7 16 15
+f 8 9 16
+f 9 10 11 12 13 14 15 16
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a09.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a09.obj
new file mode 100644
index 00000000..79e22eca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a09.obj
@@ -0,0 +1,38 @@
+v -0.32807418 -0.90137641 0.28264447
+v -0.83071299 -0.47961237 0.28264447
+v -0.94465196 0.16656763 0.28264447
+v -0.61657778 0.73480878 0.28264447
+v 0.00000000 0.95922474 0.28264447
+v 0.61657778 0.73480878 0.28264447
+v 0.94465196 0.16656763 0.28264447
+v 0.83071299 -0.47961237 0.28264447
+v 0.32807418 -0.90137641 0.28264447
+v -0.00000000 -0.95922474 -0.28264447
+v -0.61657778 -0.73480878 -0.28264447
+v -0.94465196 -0.16656763 -0.28264447
+v -0.83071299 0.47961237 -0.28264447
+v -0.32807418 0.90137641 -0.28264447
+v 0.32807418 0.90137641 -0.28264447
+v 0.83071299 0.47961237 -0.28264447
+v 0.94465196 -0.16656763 -0.28264447
+v 0.61657778 -0.73480878 -0.28264447
+f 1 2 11
+f 1 11 10
+f 1 10 9
+f 1 9 8 7 6 5 4 3 2
+f 2 3 12
+f 2 12 11
+f 3 4 13
+f 3 13 12
+f 4 5 14
+f 4 14 13
+f 5 6 15
+f 5 15 14
+f 6 7 16
+f 6 16 15
+f 7 8 17
+f 7 17 16
+f 8 9 18
+f 8 18 17
+f 9 10 18
+f 10 11 12 13 14 15 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a10.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a10.obj
new file mode 100644
index 00000000..cc602ba2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/a10.obj
@@ -0,0 +1,42 @@
+v -0.29859575 -0.91898322 0.25750808
+v -0.78173382 -0.56796287 0.25750808
+v -0.96627614 0.00000000 0.25750808
+v -0.78173382 0.56796287 0.25750808
+v -0.29859575 0.91898322 0.25750808
+v 0.29859575 0.91898322 0.25750808
+v 0.78173382 0.56796287 0.25750808
+v 0.96627614 -0.00000000 0.25750808
+v 0.78173382 -0.56796287 0.25750808
+v 0.29859575 -0.91898322 0.25750808
+v -0.00000000 -0.96627614 -0.25750808
+v -0.56796287 -0.78173382 -0.25750808
+v -0.91898322 -0.29859575 -0.25750808
+v -0.91898322 0.29859575 -0.25750808
+v -0.56796287 0.78173382 -0.25750808
+v 0.00000000 0.96627615 -0.25750808
+v 0.56796287 0.78173382 -0.25750808
+v 0.91898322 0.29859575 -0.25750808
+v 0.91898322 -0.29859575 -0.25750808
+v 0.56796287 -0.78173382 -0.25750808
+f 1 2 12
+f 1 12 11
+f 1 11 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 13
+f 2 13 12
+f 3 4 14
+f 3 14 13
+f 4 5 15
+f 4 15 14
+f 5 6 16
+f 5 16 15
+f 6 7 17
+f 6 17 16
+f 7 8 18
+f 7 18 17
+f 8 9 19
+f 8 19 18
+f 9 10 20
+f 9 20 19
+f 10 11 20
+f 11 12 13 14 15 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n01.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n01.obj
new file mode 100644
index 00000000..70574b60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n01.obj
@@ -0,0 +1,10 @@
+v -0.69337525 -0.69337525 0.19611614
+v -0.69337525 0.69337525 0.19611614
+v 0.69337525 0.69337525 0.19611614
+v 0.69337525 -0.69337525 0.19611614
+v 0.00000000 0.00000000 -0.78446454
+f 1 2 5
+f 1 5 4
+f 1 4 3 2
+f 2 3 5
+f 3 4 5
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n02.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n02.obj
new file mode 100644
index 00000000..e279a395
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n02.obj
@@ -0,0 +1,12 @@
+v -0.58469160 -0.80475895 0.10246352
+v -0.94605088 0.30739056 0.10246352
+v 0.00000000 0.99473676 0.10246352
+v 0.94605088 0.30739056 0.10246352
+v 0.58469160 -0.80475895 0.10246352
+v 0.00000000 0.00000000 -0.51231761
+f 1 2 6
+f 1 6 5
+f 1 5 4 3 2
+f 2 3 6
+f 3 4 6
+f 4 5 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n03.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n03.obj
new file mode 100644
index 00000000..72508077
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n03.obj
@@ -0,0 +1,17 @@
+v -0.48245064 -0.83562902 0.26261287
+v -0.96490128 0.00000000 0.26261287
+v -0.48245064 0.83562902 0.26261287
+v 0.48245064 0.83562902 0.26261287
+v 0.96490128 -0.00000000 0.26261287
+v 0.48245064 -0.83562902 0.26261287
+v -0.48245064 -0.27854301 -0.52522573
+v 0.00000000 0.55708601 -0.52522573
+v 0.48245064 -0.27854301 -0.52522573
+f 1 2 7
+f 1 7 9 6
+f 1 6 5 4 3 2
+f 2 3 8 7
+f 3 4 8
+f 4 5 9 8
+f 5 6 9
+f 7 8 9
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n04.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n04.obj
new file mode 100644
index 00000000..03abdf63
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n04.obj
@@ -0,0 +1,22 @@
+v -0.37660445 -0.90920356 0.17753304
+v -0.90920356 -0.37660445 0.17753304
+v -0.90920356 0.37660445 0.17753304
+v -0.37660445 0.90920356 0.17753304
+v 0.37660445 0.90920356 0.17753304
+v 0.90920356 0.37660445 0.17753304
+v 0.90920356 -0.37660445 0.17753304
+v 0.37660445 -0.90920356 0.17753304
+v 0.00000000 -0.53259911 -0.35506608
+v -0.53259911 0.00000000 -0.35506608
+v 0.00000000 0.53259911 -0.35506608
+v 0.53259911 -0.00000000 -0.35506608
+f 1 2 10 9
+f 1 9 8
+f 1 8 7 6 5 4 3 2
+f 2 3 10
+f 3 4 11 10
+f 4 5 11
+f 5 6 12 11
+f 6 7 12
+f 7 8 9 12
+f 9 10 11 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n05.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n05.obj
new file mode 100644
index 00000000..7e79daa2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n05.obj
@@ -0,0 +1,27 @@
+v -0.30722035 -0.94552702 0.10767686
+v -0.80431332 -0.58436784 0.10767686
+v -0.99418594 0.00000000 0.10767686
+v -0.80431332 0.58436784 0.10767686
+v -0.30722035 0.94552702 0.10767686
+v 0.30722035 0.94552702 0.10767686
+v 0.80431332 0.58436784 0.10767686
+v 0.99418594 -0.00000000 0.10767686
+v 0.80431332 -0.58436784 0.10767686
+v 0.30722035 -0.94552702 0.10767686
+v -0.30722035 -0.42285254 -0.21535373
+v -0.49709297 0.16151530 -0.21535373
+v 0.00000000 0.52267448 -0.21535373
+v 0.49709297 0.16151530 -0.21535373
+v 0.30722035 -0.42285254 -0.21535373
+f 1 2 11
+f 1 11 15 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 12 11
+f 3 4 12
+f 4 5 13 12
+f 5 6 13
+f 6 7 14 13
+f 7 8 14
+f 8 9 15 14
+f 9 10 15
+f 11 12 13 14 15
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n06.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n06.obj
new file mode 100644
index 00000000..f93e9b72
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n06.obj
@@ -0,0 +1,37 @@
+v -0.29220218 -0.89930585 0.32537191
+v -0.76499524 -0.55580158 0.32537191
+v -0.94558612 0.00000000 0.32537191
+v -0.76499524 0.55580158 0.32537191
+v -0.29220218 0.89930585 0.32537191
+v 0.29220218 0.89930585 0.32537191
+v 0.76499524 0.55580158 0.32537191
+v 0.94558612 -0.00000000 0.32537191
+v 0.76499524 -0.55580158 0.32537191
+v 0.29220218 -0.89930585 0.32537191
+v 0.00000000 -0.80436360 -0.17175213
+v -0.76499524 -0.24856202 -0.17175213
+v -0.47279306 0.65074382 -0.17175213
+v 0.47279306 0.65074382 -0.17175213
+v 0.76499524 -0.24856202 -0.17175213
+v -0.29220218 -0.40218180 -0.47899169
+v -0.47279306 0.15361978 -0.47899169
+v 0.00000000 0.49712404 -0.47899169
+v 0.47279306 0.15361978 -0.47899169
+v 0.29220218 -0.40218180 -0.47899169
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 12
+f 3 4 13 17 12
+f 4 5 13
+f 5 6 14 18 13
+f 6 7 14
+f 7 8 15 19 14
+f 8 9 15
+f 9 10 11 20 15
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n07.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n07.obj
new file mode 100644
index 00000000..529d40b7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n07.obj
@@ -0,0 +1,14 @@
+v -0.44309521 -0.25582114 0.27642855
+v 0.00000000 0.51164228 0.27642855
+v 0.44309521 -0.25582114 0.27642855
+v -0.44309521 -0.25582114 -0.60976188
+v 0.00000000 0.51164228 -0.60976188
+v 0.44309521 -0.25582114 -0.60976188
+v -0.00000000 -0.00000000 1.00000000
+f 1 2 5 4
+f 1 4 6 3
+f 1 3 7
+f 1 7 2
+f 2 3 6 5
+f 2 7 3
+f 4 5 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n08.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n08.obj
new file mode 100644
index 00000000..09205712
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n08.obj
@@ -0,0 +1,18 @@
+v -0.34099026 -0.46599026 0.46599026
+v -0.34099026 0.46599026 0.46599026
+v 0.59099026 0.46599026 0.46599026
+v 0.59099026 -0.46599026 0.46599026
+v -0.34099026 -0.46599026 -0.46599026
+v -0.34099026 0.46599026 -0.46599026
+v 0.59099026 0.46599026 -0.46599026
+v 0.59099026 -0.46599026 -0.46599026
+v -1.00000000 0.00000000 -0.00000000
+f 1 5 8 4
+f 1 4 3 2
+f 1 2 9
+f 1 9 5
+f 2 3 7 6
+f 2 6 9
+f 3 4 8 7
+f 5 6 7 8
+f 5 9 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n09.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n09.obj
new file mode 100644
index 00000000..e7b7c9a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n09.obj
@@ -0,0 +1,22 @@
+v -0.48211943 -0.66358047 0.39220581
+v -0.78008563 0.25346519 0.39220581
+v -0.00000000 0.82023057 0.39220581
+v 0.78008563 0.25346519 0.39220581
+v 0.48211943 -0.66358047 0.39220581
+v -0.48211943 -0.66358047 -0.57203305
+v -0.78008563 0.25346519 -0.57203305
+v 0.00000000 0.82023057 -0.57203305
+v 0.78008563 0.25346519 -0.57203305
+v 0.48211943 -0.66358047 -0.57203305
+v 0.00000000 0.00000000 0.89913619
+f 1 2 7 6
+f 1 6 10 5
+f 1 5 11
+f 1 11 2
+f 2 3 8 7
+f 2 11 3
+f 3 4 9 8
+f 3 11 4
+f 4 5 10 9
+f 4 11 5
+f 6 7 8 9 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n10.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n10.obj
new file mode 100644
index 00000000..012f40ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n10.obj
@@ -0,0 +1,22 @@
+v -0.49886702 -0.49886702 0.29449549
+v -0.49886702 0.49886702 0.29449549
+v 0.49886702 0.49886702 0.29449549
+v 0.49886702 -0.49886702 0.29449549
+v 0.00000000 -0.70550451 -0.54449549
+v -0.70550451 0.00000000 -0.54449549
+v 0.00000000 0.70550451 -0.54449549
+v 0.70550451 -0.00000000 -0.54449549
+v 0.00000000 0.00000000 1.00000000
+f 1 2 6
+f 1 6 5
+f 1 5 4
+f 1 4 9
+f 1 9 2
+f 2 3 7
+f 2 7 6
+f 2 9 3
+f 3 4 8
+f 3 8 7
+f 3 9 4
+f 4 5 8
+f 5 6 7 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n11.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n11.obj
new file mode 100644
index 00000000..291356f8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n11.obj
@@ -0,0 +1,27 @@
+v -0.50365704 -0.69322445 0.34134421
+v -0.81493421 0.26478818 0.34134421
+v -0.00000000 0.85687254 0.34134421
+v 0.81493421 0.26478818 0.34134421
+v 0.50365704 -0.69322445 0.34134421
+v 0.00000000 -0.85687254 -0.51552833
+v -0.81493421 -0.26478818 -0.51552833
+v -0.50365704 0.69322444 -0.51552833
+v 0.50365704 0.69322444 -0.51552833
+v 0.81493421 -0.26478818 -0.51552833
+v 0.00000000 0.00000000 0.87092056
+f 1 2 7
+f 1 7 6
+f 1 6 5
+f 1 5 11
+f 1 11 2
+f 2 3 8
+f 2 8 7
+f 2 11 3
+f 3 4 9
+f 3 9 8
+f 3 11 4
+f 4 5 10
+f 4 10 9
+f 4 11 5
+f 5 6 10
+f 6 7 8 9 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n12.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n12.obj
new file mode 100644
index 00000000..4513f468
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n12.obj
@@ -0,0 +1,11 @@
+v -0.61237244 -0.35355339 0.00000000
+v 0.61237244 -0.35355339 0.00000000
+v 0.00000000 0.00000000 -1.00000000
+v 0.00000000 0.70710678 0.00000000
+v 0.00000000 0.00000000 1.00000000
+f 1 4 3
+f 1 3 2
+f 1 2 5
+f 1 5 4
+f 2 3 4
+f 2 4 5
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n13.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n13.obj
new file mode 100644
index 00000000..ba77013e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n13.obj
@@ -0,0 +1,17 @@
+v -0.58778525 -0.80901699 0.00000000
+v -0.95105652 0.30901699 0.00000000
+v -0.00000000 1.00000000 0.00000000
+v 0.95105652 0.30901699 0.00000000
+v 0.58778525 -0.80901699 0.00000000
+v 0.00000000 0.00000000 -0.61803399
+v 0.00000000 0.00000000 0.61803399
+f 1 2 6
+f 1 6 5
+f 1 5 7
+f 1 7 2
+f 2 3 6
+f 2 7 3
+f 3 4 6
+f 3 7 4
+f 4 5 6
+f 4 7 5
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n14.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n14.obj
new file mode 100644
index 00000000..066ad4d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n14.obj
@@ -0,0 +1,17 @@
+v -0.37979590 -0.21927526 0.37979590
+v 0.00000000 0.43855053 0.37979590
+v 0.37979590 -0.21927526 0.37979590
+v -0.37979590 -0.21927526 -0.37979590
+v 0.00000000 0.43855053 -0.37979590
+v 0.37979590 -0.21927526 -0.37979590
+v -0.00000000 -0.00000000 1.00000000
+v -0.00000000 0.00000000 -1.00000000
+f 1 2 5 4
+f 1 4 6 3
+f 1 3 7
+f 1 7 2
+f 2 3 6 5
+f 2 7 3
+f 4 5 8
+f 4 8 6
+f 5 6 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n15.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n15.obj
new file mode 100644
index 00000000..cce594a8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n15.obj
@@ -0,0 +1,22 @@
+v -0.41421356 -0.41421356 0.41421356
+v -0.41421356 0.41421356 0.41421356
+v 0.41421356 0.41421356 0.41421356
+v 0.41421356 -0.41421356 0.41421356
+v -0.41421356 -0.41421356 -0.41421356
+v -0.41421356 0.41421356 -0.41421356
+v 0.41421356 0.41421356 -0.41421356
+v 0.41421356 -0.41421356 -0.41421356
+v -1.00000000 0.00000000 -0.00000000
+v 1.00000000 -0.00000000 -0.00000000
+f 1 5 8 4
+f 1 4 3 2
+f 1 2 9
+f 1 9 5
+f 2 3 7 6
+f 2 6 9
+f 3 4 10
+f 3 10 7
+f 4 8 10
+f 5 6 7 8
+f 5 9 6
+f 7 10 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n16.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n16.obj
new file mode 100644
index 00000000..5222ab17
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n16.obj
@@ -0,0 +1,27 @@
+v -0.48745718 -0.67092726 0.48745718
+v -0.78872229 0.25627141 0.48745718
+v -0.00000000 0.82931170 0.48745718
+v 0.78872229 0.25627141 0.48745718
+v 0.48745718 -0.67092726 0.48745718
+v -0.48745718 -0.67092726 -0.48745718
+v -0.78872229 0.25627141 -0.48745718
+v 0.00000000 0.82931170 -0.48745718
+v 0.78872229 0.25627141 -0.48745718
+v 0.48745718 -0.67092726 -0.48745718
+v 0.00000000 0.00000000 1.00000000
+v 0.00000000 0.00000000 -1.00000000
+f 1 2 7 6
+f 1 6 10 5
+f 1 5 11
+f 1 11 2
+f 2 3 8 7
+f 2 11 3
+f 3 4 9 8
+f 3 11 4
+f 4 5 10 9
+f 4 11 5
+f 6 7 12
+f 6 12 10
+f 7 8 12
+f 8 9 12
+f 9 10 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n17.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n17.obj
new file mode 100644
index 00000000..5bafb396
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n17.obj
@@ -0,0 +1,26 @@
+v -0.44343735 -0.44343735 0.37288488
+v -0.44343735 0.44343735 0.37288488
+v 0.44343735 0.44343735 0.37288488
+v 0.44343735 -0.44343735 0.37288488
+v 0.00000000 -0.62711512 -0.37288488
+v -0.62711512 0.00000000 -0.37288488
+v 0.00000000 0.62711512 -0.37288488
+v 0.62711512 -0.00000000 -0.37288488
+v 0.00000000 0.00000000 1.00000000
+v 0.00000000 0.00000000 -1.00000000
+f 1 2 6
+f 1 6 5
+f 1 5 4
+f 1 4 9
+f 1 9 2
+f 2 3 7
+f 2 7 6
+f 2 9 3
+f 3 4 8
+f 3 8 7
+f 3 9 4
+f 4 5 8
+f 5 6 10
+f 5 10 8
+f 6 7 10
+f 7 8 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n18.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n18.obj
new file mode 100644
index 00000000..11416d75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n18.obj
@@ -0,0 +1,29 @@
+v -0.39744851 -0.68840102 0.18815267
+v -0.79489703 0.00000000 0.18815267
+v -0.39744851 0.68840102 0.18815267
+v 0.39744851 0.68840102 0.18815267
+v 0.79489703 0.00000000 0.18815267
+v 0.39744851 -0.68840102 0.18815267
+v -0.39744851 -0.68840102 -0.60674436
+v -0.79489703 0.00000000 -0.60674436
+v -0.39744851 0.68840102 -0.60674436
+v 0.39744851 0.68840102 -0.60674436
+v 0.79489703 -0.00000000 -0.60674436
+v 0.39744851 -0.68840102 -0.60674436
+v 0.00000000 -0.45893401 0.83718338
+v 0.39744851 0.22946701 0.83718338
+v -0.39744851 0.22946701 0.83718338
+f 1 2 8 7
+f 1 7 12 6
+f 1 6 13
+f 1 13 15 2
+f 2 3 9 8
+f 2 15 3
+f 3 4 10 9
+f 3 15 14 4
+f 4 5 11 10
+f 4 14 5
+f 5 6 12 11
+f 5 14 13 6
+f 7 8 9 10 11 12
+f 13 14 15
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n19.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n19.obj
new file mode 100644
index 00000000..6942d041
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n19.obj
@@ -0,0 +1,38 @@
+v -0.33282985 -0.80352235 0.17212538
+v -0.80352235 -0.33282985 0.17212538
+v -0.80352235 0.33282985 0.17212538
+v -0.33282985 0.80352235 0.17212538
+v 0.33282985 0.80352235 0.17212538
+v 0.80352235 0.33282985 0.17212538
+v 0.80352235 -0.33282985 0.17212538
+v 0.33282985 -0.80352235 0.17212538
+v -0.33282985 -0.80352235 -0.49353432
+v -0.80352235 -0.33282985 -0.49353432
+v -0.80352235 0.33282985 -0.49353432
+v -0.33282985 0.80352235 -0.49353432
+v 0.33282985 0.80352235 -0.49353432
+v 0.80352235 0.33282985 -0.49353432
+v 0.80352235 -0.33282985 -0.49353432
+v 0.33282985 -0.80352235 -0.49353432
+v -0.33282985 -0.33282985 0.64281788
+v 0.33282985 -0.33282985 0.64281788
+v 0.33282985 0.33282985 0.64281788
+v -0.33282985 0.33282985 0.64281788
+f 1 2 10 9
+f 1 9 16 8
+f 1 8 18 17
+f 1 17 2
+f 2 3 11 10
+f 2 17 20 3
+f 3 4 12 11
+f 3 20 4
+f 4 5 13 12
+f 4 20 19 5
+f 5 6 14 13
+f 5 19 6
+f 6 7 15 14
+f 6 19 18 7
+f 7 8 16 15
+f 7 18 8
+f 9 10 11 12 13 14 15 16
+f 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n20.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n20.obj
new file mode 100644
index 00000000..48711e26
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n20.obj
@@ -0,0 +1,47 @@
+v -0.28328429 -0.87185940 -0.16705489
+v -0.74164790 -0.53883874 -0.16705489
+v -0.91672723 0.00000000 -0.16705489
+v -0.74164790 0.53883874 -0.16705489
+v -0.28328429 0.87185940 -0.16705489
+v 0.28328429 0.87185940 -0.16705489
+v 0.74164790 0.53883874 -0.16705489
+v 0.91672722 0.00000000 -0.16705489
+v 0.74164790 -0.53883874 -0.16705489
+v 0.28328429 -0.87185940 -0.16705489
+v -0.28328429 -0.38990738 -0.46491762
+v -0.45836361 0.14893137 -0.46491762
+v 0.00000000 0.48195202 -0.46491762
+v 0.45836361 0.14893137 -0.46491762
+v 0.28328429 -0.38990738 -0.46491762
+v -0.28328429 -0.87185940 0.39951370
+v 0.28328429 -0.87185940 0.39951370
+v 0.74164790 -0.53883874 0.39951370
+v 0.91672722 0.00000000 0.39951370
+v 0.74164790 0.53883874 0.39951370
+v 0.28328429 0.87185940 0.39951370
+v -0.28328429 0.87185940 0.39951370
+v -0.74164790 0.53883874 0.39951370
+v -0.91672723 0.00000000 0.39951370
+v -0.74164790 -0.53883874 0.39951370
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 16
+f 1 16 25 2
+f 2 3 12 11
+f 2 25 24 3
+f 3 4 12
+f 3 24 23 4
+f 4 5 13 12
+f 4 23 22 5
+f 5 6 13
+f 5 22 21 6
+f 6 7 14 13
+f 6 21 20 7
+f 7 8 14
+f 7 20 19 8
+f 8 9 15 14
+f 8 19 18 9
+f 9 10 15
+f 9 18 17 10
+f 11 12 13 14 15
+f 16 17 18 19 20 21 22 23 24 25
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n21.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n21.obj
new file mode 100644
index 00000000..be39dcb0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n21.obj
@@ -0,0 +1,57 @@
+v -0.26010839 -0.80053131 0.01968437
+v -0.68097260 -0.49475556 0.01968437
+v -0.84172843 0.00000000 0.01968437
+v -0.68097260 0.49475556 0.01968437
+v -0.26010839 0.80053131 0.01968437
+v 0.26010839 0.80053131 0.01968437
+v 0.68097260 0.49475556 0.01968437
+v 0.84172843 0.00000000 0.01968437
+v 0.68097260 -0.49475556 0.01968437
+v 0.26010839 -0.80053131 0.01968437
+v 0.00000000 -0.71601697 -0.42283845
+v -0.68097260 -0.22126141 -0.42283845
+v -0.42086421 0.57926990 -0.42283845
+v 0.42086421 0.57926990 -0.42283845
+v 0.68097260 -0.22126141 -0.42283845
+v -0.26010839 -0.35800848 -0.69633260
+v -0.42086421 0.13674707 -0.69633260
+v 0.00000000 0.44252282 -0.69633260
+v 0.42086421 0.13674707 -0.69633260
+v 0.26010839 -0.35800848 -0.69633260
+v -0.26010839 -0.80053131 0.53990115
+v 0.26010839 -0.80053131 0.53990115
+v 0.68097260 -0.49475556 0.53990115
+v 0.84172843 0.00000000 0.53990115
+v 0.68097260 0.49475556 0.53990115
+v 0.26010839 0.80053131 0.53990115
+v -0.26010839 0.80053131 0.53990115
+v -0.68097260 0.49475556 0.53990115
+v -0.84172843 0.00000000 0.53990115
+v -0.68097260 -0.49475556 0.53990115
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22 21
+f 1 21 30 2
+f 2 3 12
+f 2 30 29 3
+f 3 4 13 17 12
+f 3 29 28 4
+f 4 5 13
+f 4 28 27 5
+f 5 6 14 18 13
+f 5 27 26 6
+f 6 7 14
+f 6 26 25 7
+f 7 8 15 19 14
+f 7 25 24 8
+f 8 9 15
+f 8 24 23 9
+f 9 10 11 20 15
+f 9 23 22 10
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 22 23 24 25 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n22.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n22.obj
new file mode 100644
index 00000000..1dfec909
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n22.obj
@@ -0,0 +1,35 @@
+v -0.41410547 -0.71725171 0.14820052
+v -0.82821094 0.00000000 0.14820052
+v -0.41410547 0.71725171 0.14820052
+v 0.41410547 0.71725171 0.14820052
+v 0.82821094 0.00000000 0.14820052
+v 0.41410547 -0.71725171 0.14820052
+v 0.00000000 -0.82821094 -0.56041649
+v -0.71725171 -0.41410547 -0.56041649
+v -0.71725171 0.41410547 -0.56041649
+v 0.00000000 0.82821094 -0.56041649
+v 0.71725171 0.41410547 -0.56041649
+v 0.71725171 -0.41410547 -0.56041649
+v 0.00000000 -0.47816781 0.82443193
+v 0.41410547 0.23908390 0.82443193
+v -0.41410547 0.23908390 0.82443193
+f 1 2 8
+f 1 8 7
+f 1 7 6
+f 1 6 13
+f 1 13 15 2
+f 2 3 9
+f 2 9 8
+f 2 15 3
+f 3 4 10
+f 3 10 9
+f 3 15 14 4
+f 4 5 11
+f 4 11 10
+f 4 14 5
+f 5 6 12
+f 5 12 11
+f 5 14 13 6
+f 6 7 12
+f 7 8 9 10 11 12
+f 13 14 15
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n23.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n23.obj
new file mode 100644
index 00000000..a7c786ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n23.obj
@@ -0,0 +1,46 @@
+v -0.34182948 -0.82524936 0.13857553
+v -0.82524936 -0.34182948 0.13857553
+v -0.82524936 0.34182948 0.13857553
+v -0.34182948 0.82524936 0.13857553
+v 0.34182948 0.82524936 0.13857553
+v 0.82524936 0.34182948 0.13857553
+v 0.82524936 -0.34182948 0.13857553
+v 0.34182948 -0.82524936 0.13857553
+v 0.00000000 -0.89324347 -0.44957324
+v -0.63161852 -0.63161852 -0.44957324
+v -0.89324347 0.00000000 -0.44957324
+v -0.63161852 0.63161852 -0.44957324
+v 0.00000000 0.89324347 -0.44957324
+v 0.63161852 0.63161852 -0.44957324
+v 0.89324347 -0.00000000 -0.44957324
+v 0.63161852 -0.63161852 -0.44957324
+v -0.34182948 -0.34182948 0.62199542
+v 0.34182948 -0.34182948 0.62199542
+v 0.34182948 0.34182948 0.62199542
+v -0.34182948 0.34182948 0.62199542
+f 1 2 10
+f 1 10 9
+f 1 9 8
+f 1 8 18 17
+f 1 17 2
+f 2 3 11
+f 2 11 10
+f 2 17 20 3
+f 3 4 12
+f 3 12 11
+f 3 20 4
+f 4 5 13
+f 4 13 12
+f 4 20 19 5
+f 5 6 14
+f 5 14 13
+f 5 19 6
+f 6 7 15
+f 6 15 14
+f 6 19 18 7
+f 7 8 16
+f 7 16 15
+f 7 18 8
+f 8 9 16
+f 9 10 11 12 13 14 15 16
+f 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n24.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n24.obj
new file mode 100644
index 00000000..95d5834f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n24.obj
@@ -0,0 +1,57 @@
+v -0.28840390 -0.88761595 -0.13832577
+v -0.75505123 -0.54857683 -0.13832577
+v -0.93329464 0.00000000 -0.13832577
+v -0.75505123 0.54857683 -0.13832577
+v -0.28840391 0.88761595 -0.13832577
+v 0.28840390 0.88761595 -0.13832577
+v 0.75505122 0.54857683 -0.13832577
+v 0.93329464 0.00000000 -0.13832577
+v 0.75505123 -0.54857683 -0.13832577
+v 0.28840391 -0.88761595 -0.13832577
+v -0.28840390 -0.39695392 -0.44157158
+v -0.46664732 0.15162291 -0.44157158
+v 0.00000000 0.49066203 -0.44157158
+v 0.46664732 0.15162291 -0.44157158
+v 0.28840391 -0.39695392 -0.44157158
+v -0.54857683 -0.75505123 0.35911156
+v 0.00000000 -0.93329464 0.35911156
+v 0.54857683 -0.75505123 0.35911156
+v 0.88761595 -0.28840391 0.35911156
+v 0.88761595 0.28840390 0.35911156
+v 0.54857683 0.75505123 0.35911156
+v -0.00000000 0.93329464 0.35911156
+v -0.54857683 0.75505123 0.35911156
+v -0.88761595 0.28840390 0.35911156
+v -0.88761595 -0.28840391 0.35911156
+f 1 2 11
+f 1 11 15 10
+f 1 10 17
+f 1 17 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 25
+f 2 25 3
+f 3 4 12
+f 3 25 24
+f 3 24 4
+f 4 5 13 12
+f 4 24 23
+f 4 23 5
+f 5 6 13
+f 5 23 22
+f 5 22 6
+f 6 7 14 13
+f 6 22 21
+f 6 21 7
+f 7 8 14
+f 7 21 20
+f 7 20 8
+f 8 9 15 14
+f 8 20 19
+f 8 19 9
+f 9 10 15
+f 9 19 18
+f 9 18 10
+f 10 18 17
+f 11 12 13 14 15
+f 16 17 18 19 20 21 22 23 24 25
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n25.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n25.obj
new file mode 100644
index 00000000..e3048519
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n25.obj
@@ -0,0 +1,67 @@
+v -0.26676074 -0.82100515 0.04465919
+v -0.69838870 -0.50740909 0.04465919
+v -0.86325590 0.00000000 0.04465919
+v -0.69838870 0.50740909 0.04465919
+v -0.26676075 0.82100515 0.04465919
+v 0.26676074 0.82100515 0.04465919
+v 0.69838870 0.50740909 0.04465919
+v 0.86325590 0.00000000 0.04465919
+v 0.69838870 -0.50740909 0.04465919
+v 0.26676074 -0.82100515 0.04465919
+v 0.00000000 -0.73432933 -0.40918129
+v -0.69838870 -0.22692024 -0.40918129
+v -0.43162795 0.59408491 -0.40918129
+v 0.43162795 0.59408491 -0.40918129
+v 0.69838870 -0.22692024 -0.40918129
+v -0.26676074 -0.36716467 -0.68967014
+v -0.43162795 0.14024442 -0.68967014
+v 0.00000000 0.45384049 -0.68967014
+v 0.43162795 0.14024442 -0.68967014
+v 0.26676074 -0.36716467 -0.68967014
+v -0.50740909 -0.69838870 0.50476653
+v 0.00000000 -0.86325590 0.50476653
+v 0.50740909 -0.69838870 0.50476653
+v 0.82100515 -0.26676074 0.50476653
+v 0.82100515 0.26676074 0.50476653
+v 0.50740909 0.69838870 0.50476653
+v -0.00000000 0.86325590 0.50476653
+v -0.50740909 0.69838870 0.50476653
+v -0.82100515 0.26676074 0.50476653
+v -0.82100515 -0.26676074 0.50476653
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22
+f 1 22 21
+f 1 21 2
+f 2 3 12
+f 2 21 30
+f 2 30 3
+f 3 4 13 17 12
+f 3 30 29
+f 3 29 4
+f 4 5 13
+f 4 29 28
+f 4 28 5
+f 5 6 14 18 13
+f 5 28 27
+f 5 27 6
+f 6 7 14
+f 6 27 26
+f 6 26 7
+f 7 8 15 19 14
+f 7 26 25
+f 7 25 8
+f 8 9 15
+f 8 25 24
+f 8 24 9
+f 9 10 11 20 15
+f 9 24 23
+f 9 23 10
+f 10 23 22
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 22 23 24 25 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n26.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n26.obj
new file mode 100644
index 00000000..3eb6d8d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n26.obj
@@ -0,0 +1,16 @@
+v -0.25000000 -0.43301270 0.50000000
+v 0.25000000 0.43301270 0.50000000
+v 0.75000000 -0.43301270 0.50000000
+v -0.25000000 -0.43301270 -0.50000000
+v 0.25000000 0.43301270 -0.50000000
+v 0.75000000 -0.43301270 -0.50000000
+v -1.00000000 0.00000000 -0.00000000
+v -0.50000000 0.86602540 0.00000000
+f 1 4 6 3
+f 1 3 2
+f 1 2 8 7
+f 1 7 4
+f 2 3 6 5
+f 2 5 8
+f 4 5 6
+f 4 7 8 5
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n27.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n27.obj
new file mode 100644
index 00000000..41a03100
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n27.obj
@@ -0,0 +1,26 @@
+v -0.50000000 -0.86602540 0.00000000
+v -1.00000000 0.00000000 0.00000000
+v -0.50000000 0.86602540 0.00000000
+v 0.50000000 0.86602540 0.00000000
+v 1.00000000 -0.00000000 0.00000000
+v 0.50000000 -0.86602540 0.00000000
+v -0.50000000 -0.28867513 -0.81649658
+v 0.00000000 0.57735027 -0.81649658
+v 0.50000000 -0.28867513 -0.81649658
+v -0.50000000 -0.28867513 0.81649658
+v 0.50000000 -0.28867513 0.81649658
+v 0.00000000 0.57735027 0.81649658
+f 1 2 7
+f 1 7 9 6
+f 1 6 11 10
+f 1 10 2
+f 2 3 8 7
+f 2 10 12 3
+f 3 4 8
+f 3 12 4
+f 4 5 9 8
+f 4 12 11 5
+f 5 6 9
+f 5 11 6
+f 7 8 9
+f 10 11 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n28.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n28.obj
new file mode 100644
index 00000000..8d1f142f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n28.obj
@@ -0,0 +1,34 @@
+v -0.38268343 -0.92387953 -0.00000000
+v -0.92387953 -0.38268343 -0.00000000
+v -0.92387953 0.38268343 -0.00000000
+v -0.38268343 0.92387953 -0.00000000
+v 0.38268343 0.92387953 -0.00000000
+v 0.92387953 0.38268343 -0.00000000
+v 0.92387953 -0.38268343 -0.00000000
+v 0.38268343 -0.92387953 -0.00000000
+v -0.00000000 -0.54119610 -0.54119610
+v -0.54119610 0.00000000 -0.54119610
+v 0.00000000 0.54119610 -0.54119610
+v 0.54119610 -0.00000000 -0.54119610
+v -0.54119610 0.00000000 0.54119610
+v 0.00000000 -0.54119610 0.54119610
+v 0.54119610 -0.00000000 0.54119610
+v -0.00000000 0.54119610 0.54119610
+f 1 2 10 9
+f 1 9 8
+f 1 8 14
+f 1 14 13 2
+f 2 3 10
+f 2 13 3
+f 3 4 11 10
+f 3 13 16 4
+f 4 5 11
+f 4 16 5
+f 5 6 12 11
+f 5 16 15 6
+f 6 7 12
+f 6 15 7
+f 7 8 9 12
+f 7 15 14 8
+f 9 10 11 12
+f 13 14 15 16
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n29.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n29.obj
new file mode 100644
index 00000000..ef7fd148
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n29.obj
@@ -0,0 +1,34 @@
+v -0.38268343 -0.92387953 -0.00000000
+v -0.92387953 -0.38268343 -0.00000000
+v -0.92387953 0.38268343 -0.00000000
+v -0.38268343 0.92387953 -0.00000000
+v 0.38268343 0.92387953 -0.00000000
+v 0.92387953 0.38268343 -0.00000000
+v 0.92387953 -0.38268343 -0.00000000
+v 0.38268343 -0.92387953 -0.00000000
+v 0.00000000 -0.54119610 -0.54119610
+v -0.54119610 0.00000000 -0.54119610
+v 0.00000000 0.54119610 -0.54119610
+v 0.54119610 -0.00000000 -0.54119610
+v -0.38268343 -0.38268343 0.54119610
+v 0.38268343 -0.38268343 0.54119610
+v 0.38268343 0.38268343 0.54119610
+v -0.38268343 0.38268343 0.54119610
+f 1 2 10 9
+f 1 9 8
+f 1 8 14 13
+f 1 13 2
+f 2 3 10
+f 2 13 16 3
+f 3 4 11 10
+f 3 16 4
+f 4 5 11
+f 4 16 15 5
+f 5 6 12 11
+f 5 15 6
+f 6 7 12
+f 6 15 14 7
+f 7 8 9 12
+f 7 14 8
+f 9 10 11 12
+f 13 14 15 16
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n30.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n30.obj
new file mode 100644
index 00000000..565d361a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n30.obj
@@ -0,0 +1,42 @@
+v -0.30901699 -0.95105652 0.00000000
+v -0.80901699 -0.58778525 0.00000000
+v -1.00000000 0.00000000 0.00000000
+v -0.80901699 0.58778525 0.00000000
+v -0.30901699 0.95105652 0.00000000
+v 0.30901699 0.95105652 0.00000000
+v 0.80901699 0.58778525 0.00000000
+v 1.00000000 -0.00000000 0.00000000
+v 0.80901699 -0.58778525 0.00000000
+v 0.30901699 -0.95105652 0.00000000
+v -0.30901699 -0.42532540 -0.32491970
+v -0.50000000 0.16245985 -0.32491970
+v 0.00000000 0.52573111 -0.32491970
+v 0.50000000 0.16245985 -0.32491970
+v 0.30901699 -0.42532540 -0.32491970
+v -0.30901699 -0.42532540 0.32491970
+v 0.30901699 -0.42532540 0.32491970
+v 0.50000000 0.16245985 0.32491970
+v -0.00000000 0.52573111 0.32491970
+v -0.50000000 0.16245985 0.32491970
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 20 3
+f 3 4 12
+f 3 20 4
+f 4 5 13 12
+f 4 20 19 5
+f 5 6 13
+f 5 19 6
+f 6 7 14 13
+f 6 19 18 7
+f 7 8 14
+f 7 18 8
+f 8 9 15 14
+f 8 18 17 9
+f 9 10 15
+f 9 17 10
+f 11 12 13 14 15
+f 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n31.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n31.obj
new file mode 100644
index 00000000..2bc879c4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n31.obj
@@ -0,0 +1,42 @@
+v -0.30901699 -0.95105652 -0.00000000
+v -0.80901699 -0.58778525 -0.00000000
+v -1.00000000 -0.00000000 -0.00000000
+v -0.80901699 0.58778525 -0.00000000
+v -0.30901700 0.95105652 -0.00000000
+v 0.30901699 0.95105652 -0.00000000
+v 0.80901699 0.58778525 -0.00000000
+v 1.00000000 -0.00000000 -0.00000000
+v 0.80901699 -0.58778525 -0.00000000
+v 0.30901699 -0.95105652 -0.00000000
+v -0.30901699 -0.42532540 -0.32491970
+v -0.50000000 0.16245985 -0.32491970
+v 0.00000000 0.52573111 -0.32491970
+v 0.50000000 0.16245985 -0.32491970
+v 0.30901699 -0.42532540 -0.32491970
+v 0.00000000 -0.52573111 0.32491970
+v 0.50000000 -0.16245985 0.32491970
+v 0.30901699 0.42532540 0.32491970
+v -0.30901699 0.42532540 0.32491970
+v -0.50000000 -0.16245985 0.32491970
+f 1 2 11
+f 1 11 15 10
+f 1 10 16
+f 1 16 20 2
+f 2 3 12 11
+f 2 20 3
+f 3 4 12
+f 3 20 19 4
+f 4 5 13 12
+f 4 19 5
+f 5 6 13
+f 5 19 18 6
+f 6 7 14 13
+f 6 18 7
+f 7 8 14
+f 7 18 17 8
+f 8 9 15 14
+f 8 17 9
+f 9 10 15
+f 9 17 16 10
+f 11 12 13 14 15
+f 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n32.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n32.obj
new file mode 100644
index 00000000..39d12437
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n32.obj
@@ -0,0 +1,52 @@
+v -0.30240276 -0.93070001 -0.20579132
+v -0.79170071 -0.57520424 -0.20579132
+v -0.97859590 -0.00000000 -0.20579132
+v -0.79170071 0.57520424 -0.20579132
+v -0.30240276 0.93070001 -0.20579132
+v 0.30240276 0.93070001 -0.20579132
+v 0.79170071 0.57520424 -0.20579132
+v 0.97859590 -0.00000000 -0.20579132
+v 0.79170071 -0.57520424 -0.20579132
+v 0.30240276 -0.93070001 -0.20579132
+v -0.30240276 -0.41622170 -0.52375640
+v -0.48929795 0.15898254 -0.52375641
+v 0.00000000 0.51447831 -0.52375641
+v 0.48929795 0.15898254 -0.52375641
+v 0.30240276 -0.41622170 -0.52375640
+v -0.48929795 -0.67346085 0.30868699
+v 0.48929795 -0.67346085 0.30868699
+v 0.79170071 0.25723915 0.30868699
+v -0.00000000 0.83244339 0.30868699
+v -0.79170071 0.25723915 0.30868699
+v 0.00000000 -0.51447831 0.62665207
+v 0.48929795 -0.15898254 0.62665207
+v 0.30240276 0.41622170 0.62665207
+v -0.30240276 0.41622170 0.62665207
+v -0.48929795 -0.15898254 0.62665207
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 21 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 25 20 3
+f 3 4 12
+f 3 20 4
+f 4 5 13 12
+f 4 20 24 19 5
+f 5 6 13
+f 5 19 6
+f 6 7 14 13
+f 6 19 23 18 7
+f 7 8 14
+f 7 18 8
+f 8 9 15 14
+f 8 18 22 17 9
+f 9 10 15
+f 9 17 10
+f 11 12 13 14 15
+f 16 21 25
+f 17 22 21
+f 18 23 22
+f 19 24 23
+f 20 25 24
+f 21 22 23 24 25
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n33.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n33.obj
new file mode 100644
index 00000000..4fb6508f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n33.obj
@@ -0,0 +1,52 @@
+v -0.30240276 -0.93070001 -0.20579132
+v -0.79170071 -0.57520424 -0.20579132
+v -0.97859590 0.00000000 -0.20579132
+v -0.79170071 0.57520424 -0.20579132
+v -0.30240276 0.93070001 -0.20579132
+v 0.30240276 0.93070001 -0.20579132
+v 0.79170071 0.57520424 -0.20579132
+v 0.97859590 -0.00000000 -0.20579132
+v 0.79170071 -0.57520424 -0.20579132
+v 0.30240276 -0.93070001 -0.20579132
+v -0.30240276 -0.41622170 -0.52375641
+v -0.48929795 0.15898254 -0.52375641
+v 0.00000000 0.51447831 -0.52375641
+v 0.48929795 0.15898254 -0.52375641
+v 0.30240276 -0.41622170 -0.52375641
+v -0.79170071 -0.25723915 0.30868699
+v 0.00000000 -0.83244339 0.30868699
+v 0.79170071 -0.25723915 0.30868699
+v 0.48929795 0.67346085 0.30868699
+v -0.48929795 0.67346085 0.30868699
+v -0.30240276 -0.41622170 0.62665207
+v 0.30240276 -0.41622170 0.62665207
+v 0.48929795 0.15898254 0.62665207
+v -0.00000000 0.51447831 0.62665207
+v -0.48929795 0.15898254 0.62665207
+f 1 2 11
+f 1 11 15 10
+f 1 10 17
+f 1 17 21 16 2
+f 2 3 12 11
+f 2 16 3
+f 3 4 12
+f 3 16 25 20 4
+f 4 5 13 12
+f 4 20 5
+f 5 6 13
+f 5 20 24 19 6
+f 6 7 14 13
+f 6 19 7
+f 7 8 14
+f 7 19 23 18 8
+f 8 9 15 14
+f 8 18 9
+f 9 10 15
+f 9 18 22 17 10
+f 11 12 13 14 15
+f 16 21 25
+f 17 22 21
+f 18 23 22
+f 19 24 23
+f 20 25 24
+f 21 22 23 24 25
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n34.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n34.obj
new file mode 100644
index 00000000..eea5439f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n34.obj
@@ -0,0 +1,62 @@
+v -0.30901699 -0.95105652 0.00000000
+v -0.80901699 -0.58778525 0.00000000
+v -1.00000000 0.00000000 0.00000000
+v -0.80901699 0.58778525 0.00000000
+v -0.30901699 0.95105652 0.00000000
+v 0.30901699 0.95105652 0.00000000
+v 0.80901699 0.58778525 0.00000000
+v 1.00000000 -0.00000000 0.00000000
+v 0.80901699 -0.58778525 0.00000000
+v 0.30901699 -0.95105652 0.00000000
+v -0.00000000 -0.85065081 -0.52573111
+v -0.80901699 -0.26286556 -0.52573111
+v -0.50000000 0.68819096 -0.52573111
+v 0.50000000 0.68819096 -0.52573111
+v 0.80901699 -0.26286556 -0.52573111
+v -0.30901699 -0.42532540 -0.85065081
+v -0.50000000 0.16245985 -0.85065081
+v 0.00000000 0.52573111 -0.85065081
+v 0.50000000 0.16245985 -0.85065081
+v 0.30901699 -0.42532540 -0.85065081
+v -0.80901699 -0.26286556 0.52573111
+v 0.00000000 -0.85065081 0.52573111
+v 0.80901699 -0.26286556 0.52573111
+v 0.50000000 0.68819096 0.52573111
+v -0.50000000 0.68819096 0.52573111
+v -0.30901699 -0.42532540 0.85065081
+v 0.30901699 -0.42532540 0.85065081
+v 0.50000000 0.16245985 0.85065081
+v -0.00000000 0.52573111 0.85065081
+v -0.50000000 0.16245985 0.85065081
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22
+f 1 22 26 21 2
+f 2 3 12
+f 2 21 3
+f 3 4 13 17 12
+f 3 21 30 25 4
+f 4 5 13
+f 4 25 5
+f 5 6 14 18 13
+f 5 25 29 24 6
+f 6 7 14
+f 6 24 7
+f 7 8 15 19 14
+f 7 24 28 23 8
+f 8 9 15
+f 8 23 9
+f 9 10 11 20 15
+f 9 23 27 22 10
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 26 30
+f 22 27 26
+f 23 28 27
+f 24 29 28
+f 25 30 29
+f 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n35.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n35.obj
new file mode 100644
index 00000000..ed3b9efc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n35.obj
@@ -0,0 +1,38 @@
+v -0.34781848 -0.60243929 0.34781848
+v -0.69563697 0.00000000 0.34781848
+v -0.34781848 0.60243929 0.34781848
+v 0.34781848 0.60243929 0.34781848
+v 0.69563697 0.00000000 0.34781848
+v 0.34781848 -0.60243929 0.34781848
+v -0.34781848 -0.60243929 -0.34781848
+v -0.69563697 0.00000000 -0.34781848
+v -0.34781848 0.60243929 -0.34781848
+v 0.34781848 0.60243929 -0.34781848
+v 0.69563697 -0.00000000 -0.34781848
+v 0.34781848 -0.60243929 -0.34781848
+v 0.00000000 -0.40162619 0.91580369
+v 0.34781848 0.20081310 0.91580369
+v -0.34781848 0.20081310 0.91580369
+v -0.34781848 0.20081310 -0.91580369
+v 0.34781848 0.20081310 -0.91580369
+v 0.00000000 -0.40162619 -0.91580369
+f 1 2 8 7
+f 1 7 12 6
+f 1 6 13
+f 1 13 15 2
+f 2 3 9 8
+f 2 15 3
+f 3 4 10 9
+f 3 15 14 4
+f 4 5 11 10
+f 4 14 5
+f 5 6 12 11
+f 5 14 13 6
+f 7 8 16 18
+f 7 18 12
+f 8 9 16
+f 9 10 17 16
+f 10 11 17
+f 11 12 18 17
+f 13 14 15
+f 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n36.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n36.obj
new file mode 100644
index 00000000..977ef5c4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n36.obj
@@ -0,0 +1,38 @@
+v -0.34781848 -0.60243929 0.34781848
+v -0.69563697 0.00000000 0.34781848
+v -0.34781848 0.60243929 0.34781848
+v 0.34781848 0.60243929 0.34781848
+v 0.69563697 0.00000000 0.34781848
+v 0.34781848 -0.60243929 0.34781848
+v -0.34781848 -0.60243929 -0.34781848
+v -0.69563697 0.00000000 -0.34781848
+v -0.34781848 0.60243929 -0.34781848
+v 0.34781848 0.60243929 -0.34781848
+v 0.69563697 -0.00000000 -0.34781848
+v 0.34781848 -0.60243929 -0.34781848
+v 0.00000000 -0.40162619 0.91580369
+v 0.34781848 0.20081310 0.91580369
+v -0.34781848 0.20081310 0.91580369
+v -0.34781848 -0.20081310 -0.91580369
+v -0.00000000 0.40162619 -0.91580369
+v 0.34781848 -0.20081310 -0.91580369
+f 1 2 8 7
+f 1 7 12 6
+f 1 6 13
+f 1 13 15 2
+f 2 3 9 8
+f 2 15 3
+f 3 4 10 9
+f 3 15 14 4
+f 4 5 11 10
+f 4 14 5
+f 5 6 12 11
+f 5 14 13 6
+f 7 8 16
+f 7 16 18 12
+f 8 9 17 16
+f 9 10 17
+f 10 11 18 17
+f 11 12 18
+f 13 14 15
+f 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n37.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n37.obj
new file mode 100644
index 00000000..69c08490
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n37.obj
@@ -0,0 +1,50 @@
+v -0.35740674 -0.86285621 0.35740674
+v -0.86285621 -0.35740674 0.35740674
+v -0.86285621 0.35740674 0.35740674
+v -0.35740674 0.86285621 0.35740674
+v 0.35740674 0.86285621 0.35740674
+v 0.86285621 0.35740674 0.35740674
+v 0.86285621 -0.35740674 0.35740674
+v 0.35740674 -0.86285621 0.35740674
+v -0.35740674 -0.86285621 -0.35740674
+v -0.86285621 -0.35740674 -0.35740674
+v -0.86285621 0.35740674 -0.35740674
+v -0.35740674 0.86285621 -0.35740674
+v 0.35740674 0.86285621 -0.35740674
+v 0.86285621 0.35740674 -0.35740674
+v 0.86285621 -0.35740674 -0.35740674
+v 0.35740674 -0.86285621 -0.35740674
+v -0.35740674 -0.35740674 0.86285621
+v 0.35740674 -0.35740674 0.86285621
+v 0.35740674 0.35740674 0.86285621
+v -0.35740674 0.35740674 0.86285621
+v 0.00000000 -0.50544946 -0.86285621
+v -0.50544946 -0.00000000 -0.86285621
+v 0.00000000 0.50544946 -0.86285621
+v 0.50544946 -0.00000000 -0.86285621
+f 1 2 10 9
+f 1 9 16 8
+f 1 8 18 17
+f 1 17 2
+f 2 3 11 10
+f 2 17 20 3
+f 3 4 12 11
+f 3 20 4
+f 4 5 13 12
+f 4 20 19 5
+f 5 6 14 13
+f 5 19 6
+f 6 7 15 14
+f 6 19 18 7
+f 7 8 16 15
+f 7 18 8
+f 9 10 22 21
+f 9 21 16
+f 10 11 22
+f 11 12 23 22
+f 12 13 23
+f 13 14 24 23
+f 14 15 24
+f 15 16 21 24
+f 17 18 19 20
+f 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n38.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n38.obj
new file mode 100644
index 00000000..fd528ea3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n38.obj
@@ -0,0 +1,62 @@
+v -0.29524181 -0.90866085 -0.29524181
+v -0.77295309 -0.56158329 -0.29524181
+v -0.95542256 0.00000000 -0.29524181
+v -0.77295309 0.56158329 -0.29524181
+v -0.29524181 0.90866085 -0.29524181
+v 0.29524181 0.90866085 -0.29524181
+v 0.77295309 0.56158329 -0.29524181
+v 0.95542256 0.00000000 -0.29524181
+v 0.77295309 -0.56158329 -0.29524181
+v 0.29524181 -0.90866085 -0.29524181
+v -0.29524181 -0.40636549 -0.60567742
+v -0.47771128 0.15521780 -0.60567742
+v 0.00000000 0.50229537 -0.60567742
+v 0.47771128 0.15521780 -0.60567742
+v 0.29524181 -0.40636549 -0.60567742
+v -0.29524181 -0.90866085 0.29524181
+v 0.29524181 -0.90866085 0.29524181
+v 0.77295309 -0.56158329 0.29524181
+v 0.95542256 -0.00000000 0.29524181
+v 0.77295309 0.56158329 0.29524181
+v 0.29524181 0.90866085 0.29524181
+v -0.29524181 0.90866085 0.29524181
+v -0.77295309 0.56158329 0.29524181
+v -0.95542256 0.00000000 0.29524181
+v -0.77295309 -0.56158329 0.29524181
+v -0.29524181 -0.40636549 0.60567742
+v 0.29524181 -0.40636549 0.60567742
+v 0.47771128 0.15521780 0.60567742
+v 0.00000000 0.50229537 0.60567742
+v -0.47771128 0.15521780 0.60567742
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 16
+f 1 16 25 2
+f 2 3 12 11
+f 2 25 24 3
+f 3 4 12
+f 3 24 23 4
+f 4 5 13 12
+f 4 23 22 5
+f 5 6 13
+f 5 22 21 6
+f 6 7 14 13
+f 6 21 20 7
+f 7 8 14
+f 7 20 19 8
+f 8 9 15 14
+f 8 19 18 9
+f 9 10 15
+f 9 18 17 10
+f 11 12 13 14 15
+f 16 17 27 26
+f 16 26 25
+f 17 18 27
+f 18 19 28 27
+f 19 20 28
+f 20 21 29 28
+f 21 22 29
+f 22 23 30 29
+f 23 24 30
+f 24 25 26 30
+f 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n39.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n39.obj
new file mode 100644
index 00000000..5cb96de7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n39.obj
@@ -0,0 +1,62 @@
+v -0.29524181 -0.90866085 -0.29524181
+v -0.77295309 -0.56158329 -0.29524181
+v -0.95542256 -0.00000000 -0.29524181
+v -0.77295309 0.56158329 -0.29524181
+v -0.29524181 0.90866085 -0.29524181
+v 0.29524181 0.90866085 -0.29524181
+v 0.77295309 0.56158329 -0.29524181
+v 0.95542256 -0.00000000 -0.29524181
+v 0.77295309 -0.56158329 -0.29524181
+v 0.29524181 -0.90866085 -0.29524181
+v -0.29524181 -0.40636549 -0.60567742
+v -0.47771128 0.15521780 -0.60567742
+v 0.00000000 0.50229537 -0.60567742
+v 0.47771128 0.15521780 -0.60567742
+v 0.29524181 -0.40636549 -0.60567742
+v -0.29524181 -0.90866085 0.29524181
+v 0.29524181 -0.90866085 0.29524181
+v 0.77295309 -0.56158329 0.29524181
+v 0.95542256 0.00000000 0.29524181
+v 0.77295309 0.56158329 0.29524181
+v 0.29524181 0.90866085 0.29524181
+v -0.29524181 0.90866085 0.29524181
+v -0.77295309 0.56158329 0.29524181
+v -0.95542256 0.00000000 0.29524181
+v -0.77295309 -0.56158329 0.29524181
+v 0.00000000 -0.50229537 0.60567742
+v 0.47771128 -0.15521780 0.60567742
+v 0.29524181 0.40636549 0.60567742
+v -0.29524181 0.40636549 0.60567742
+v -0.47771128 -0.15521780 0.60567742
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 16
+f 1 16 25 2
+f 2 3 12 11
+f 2 25 24 3
+f 3 4 12
+f 3 24 23 4
+f 4 5 13 12
+f 4 23 22 5
+f 5 6 13
+f 5 22 21 6
+f 6 7 14 13
+f 6 21 20 7
+f 7 8 14
+f 7 20 19 8
+f 8 9 15 14
+f 8 19 18 9
+f 9 10 15
+f 9 18 17 10
+f 11 12 13 14 15
+f 16 17 26
+f 16 26 30 25
+f 17 18 27 26
+f 18 19 27
+f 19 20 28 27
+f 20 21 28
+f 21 22 29 28
+f 22 23 29
+f 23 24 30 29
+f 24 25 30
+f 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n40.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n40.obj
new file mode 100644
index 00000000..c1b57f02
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n40.obj
@@ -0,0 +1,72 @@
+v -0.27602000 -0.84950220 -0.44962093
+v -0.72262973 -0.52502123 -0.44962093
+v -0.89321947 -0.00000000 -0.44962093
+v -0.72262973 0.52502123 -0.44962093
+v -0.27602000 0.84950220 -0.44962093
+v 0.27601999 0.84950220 -0.44962093
+v 0.72262973 0.52502123 -0.44962093
+v 0.89321947 -0.00000000 -0.44962093
+v 0.72262973 -0.52502123 -0.44962093
+v 0.27602000 -0.84950220 -0.44962093
+v -0.27602000 -0.37990893 -0.73984553
+v -0.44660973 0.14511230 -0.73984553
+v 0.00000000 0.46959326 -0.73984553
+v 0.44660974 0.14511230 -0.73984553
+v 0.27602000 -0.37990893 -0.73984553
+v -0.27602000 -0.84950220 0.10241906
+v 0.27602000 -0.84950220 0.10241906
+v 0.72262973 -0.52502123 0.10241906
+v 0.89321947 -0.00000000 0.10241906
+v 0.72262973 0.52502123 0.10241906
+v 0.27601999 0.84950220 0.10241906
+v -0.27602000 0.84950220 0.10241906
+v -0.72262973 0.52502123 0.10241906
+v -0.89321947 -0.00000000 0.10241906
+v -0.72262973 -0.52502123 0.10241906
+v -0.44660973 -0.61470556 0.57201233
+v 0.44660974 -0.61470556 0.57201233
+v 0.72262973 0.23479663 0.57201233
+v -0.00000000 0.75981786 0.57201233
+v -0.72262973 0.23479663 0.57201233
+v 0.00000000 -0.46959326 0.86223693
+v 0.44660973 -0.14511230 0.86223693
+v 0.27602000 0.37990893 0.86223693
+v -0.27602000 0.37990893 0.86223693
+v -0.44660973 -0.14511230 0.86223693
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 16
+f 1 16 25 2
+f 2 3 12 11
+f 2 25 24 3
+f 3 4 12
+f 3 24 23 4
+f 4 5 13 12
+f 4 23 22 5
+f 5 6 13
+f 5 22 21 6
+f 6 7 14 13
+f 6 21 20 7
+f 7 8 14
+f 7 20 19 8
+f 8 9 15 14
+f 8 19 18 9
+f 9 10 15
+f 9 18 17 10
+f 11 12 13 14 15
+f 16 17 27 31 26
+f 16 26 25
+f 17 18 27
+f 18 19 28 32 27
+f 19 20 28
+f 20 21 29 33 28
+f 21 22 29
+f 22 23 30 34 29
+f 23 24 30
+f 24 25 26 35 30
+f 26 31 35
+f 27 32 31
+f 28 33 32
+f 29 34 33
+f 30 35 34
+f 31 32 33 34 35
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n41.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n41.obj
new file mode 100644
index 00000000..3adcc5a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n41.obj
@@ -0,0 +1,72 @@
+v -0.27602000 -0.84950220 -0.44962093
+v -0.72262973 -0.52502123 -0.44962093
+v -0.89321947 0.00000000 -0.44962093
+v -0.72262973 0.52502123 -0.44962093
+v -0.27602000 0.84950220 -0.44962093
+v 0.27601999 0.84950220 -0.44962093
+v 0.72262973 0.52502123 -0.44962093
+v 0.89321947 0.00000000 -0.44962093
+v 0.72262973 -0.52502123 -0.44962093
+v 0.27602000 -0.84950220 -0.44962093
+v -0.27602000 -0.37990893 -0.73984553
+v -0.44660973 0.14511230 -0.73984553
+v 0.00000000 0.46959326 -0.73984553
+v 0.44660973 0.14511230 -0.73984553
+v 0.27602000 -0.37990893 -0.73984553
+v -0.27602000 -0.84950220 0.10241906
+v 0.27602000 -0.84950220 0.10241906
+v 0.72262973 -0.52502123 0.10241906
+v 0.89321947 -0.00000000 0.10241906
+v 0.72262973 0.52502123 0.10241906
+v 0.27602000 0.84950220 0.10241906
+v -0.27602000 0.84950220 0.10241906
+v -0.72262973 0.52502123 0.10241906
+v -0.89321947 -0.00000000 0.10241906
+v -0.72262973 -0.52502123 0.10241906
+v -0.72262973 -0.23479663 0.57201233
+v 0.00000000 -0.75981786 0.57201233
+v 0.72262973 -0.23479663 0.57201233
+v 0.44660973 0.61470556 0.57201233
+v -0.44660973 0.61470556 0.57201233
+v -0.27602000 -0.37990893 0.86223693
+v 0.27602000 -0.37990893 0.86223693
+v 0.44660973 0.14511230 0.86223693
+v 0.00000000 0.46959326 0.86223693
+v -0.44660973 0.14511230 0.86223693
+f 1 2 11
+f 1 11 15 10
+f 1 10 17 16
+f 1 16 25 2
+f 2 3 12 11
+f 2 25 24 3
+f 3 4 12
+f 3 24 23 4
+f 4 5 13 12
+f 4 23 22 5
+f 5 6 13
+f 5 22 21 6
+f 6 7 14 13
+f 6 21 20 7
+f 7 8 14
+f 7 20 19 8
+f 8 9 15 14
+f 8 19 18 9
+f 9 10 15
+f 9 18 17 10
+f 11 12 13 14 15
+f 16 17 27
+f 16 27 31 26 25
+f 17 18 28 32 27
+f 18 19 28
+f 19 20 29 33 28
+f 20 21 29
+f 21 22 30 34 29
+f 22 23 30
+f 23 24 26 35 30
+f 24 25 26
+f 26 31 35
+f 27 32 31
+f 28 33 32
+f 29 34 33
+f 30 35 34
+f 31 32 33 34 35
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n42.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n42.obj
new file mode 100644
index 00000000..414d704a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n42.obj
@@ -0,0 +1,82 @@
+v -0.24269512 -0.74693876 -0.24269512
+v -0.63538406 -0.46163354 -0.24269512
+v -0.78537789 0.00000000 -0.24269512
+v -0.63538406 0.46163354 -0.24269512
+v -0.24269512 0.74693876 -0.24269512
+v 0.24269512 0.74693876 -0.24269512
+v 0.63538406 0.46163354 -0.24269512
+v 0.78537789 0.00000000 -0.24269512
+v 0.63538406 -0.46163354 -0.24269512
+v 0.24269512 -0.74693876 -0.24269512
+v 0.00000000 -0.66808234 -0.65559271
+v -0.63538406 -0.20644880 -0.65559271
+v -0.39268895 0.54048997 -0.65559271
+v 0.39268895 0.54048997 -0.65559271
+v 0.63538406 -0.20644880 -0.65559271
+v -0.24269512 -0.33404117 -0.91077746
+v -0.39268895 0.12759237 -0.91077746
+v 0.00000000 0.41289759 -0.91077746
+v 0.39268895 0.12759237 -0.91077746
+v 0.24269512 -0.33404117 -0.91077746
+v -0.24269512 -0.74693876 0.24269512
+v 0.24269512 -0.74693876 0.24269512
+v 0.63538406 -0.46163354 0.24269512
+v 0.78537789 -0.00000000 0.24269512
+v 0.63538406 0.46163354 0.24269512
+v 0.24269512 0.74693876 0.24269512
+v -0.24269512 0.74693876 0.24269512
+v -0.63538406 0.46163354 0.24269512
+v -0.78537789 0.00000000 0.24269512
+v -0.63538406 -0.46163354 0.24269512
+v -0.63538406 -0.20644880 0.65559271
+v 0.00000000 -0.66808234 0.65559271
+v 0.63538406 -0.20644880 0.65559271
+v 0.39268895 0.54048997 0.65559271
+v -0.39268895 0.54048997 0.65559271
+v -0.24269512 -0.33404117 0.91077746
+v 0.24269512 -0.33404117 0.91077746
+v 0.39268895 0.12759237 0.91077746
+v 0.00000000 0.41289759 0.91077746
+v -0.39268895 0.12759237 0.91077746
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22 21
+f 1 21 30 2
+f 2 3 12
+f 2 30 29 3
+f 3 4 13 17 12
+f 3 29 28 4
+f 4 5 13
+f 4 28 27 5
+f 5 6 14 18 13
+f 5 27 26 6
+f 6 7 14
+f 6 26 25 7
+f 7 8 15 19 14
+f 7 25 24 8
+f 8 9 15
+f 8 24 23 9
+f 9 10 11 20 15
+f 9 23 22 10
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 22 32
+f 21 32 36 31 30
+f 22 23 33 37 32
+f 23 24 33
+f 24 25 34 38 33
+f 25 26 34
+f 26 27 35 39 34
+f 27 28 35
+f 28 29 31 40 35
+f 29 30 31
+f 31 36 40
+f 32 37 36
+f 33 38 37
+f 34 39 38
+f 35 40 39
+f 36 37 38 39 40
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n43.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n43.obj
new file mode 100644
index 00000000..15b86180
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n43.obj
@@ -0,0 +1,82 @@
+v -0.24269512 -0.74693876 -0.24269512
+v -0.63538406 -0.46163354 -0.24269512
+v -0.78537789 -0.00000000 -0.24269512
+v -0.63538406 0.46163354 -0.24269512
+v -0.24269512 0.74693876 -0.24269512
+v 0.24269512 0.74693876 -0.24269512
+v 0.63538406 0.46163354 -0.24269512
+v 0.78537789 -0.00000000 -0.24269512
+v 0.63538406 -0.46163354 -0.24269512
+v 0.24269512 -0.74693876 -0.24269512
+v 0.00000000 -0.66808234 -0.65559271
+v -0.63538406 -0.20644880 -0.65559271
+v -0.39268895 0.54048997 -0.65559271
+v 0.39268895 0.54048997 -0.65559271
+v 0.63538406 -0.20644880 -0.65559271
+v -0.24269512 -0.33404117 -0.91077746
+v -0.39268895 0.12759237 -0.91077746
+v 0.00000000 0.41289759 -0.91077746
+v 0.39268895 0.12759237 -0.91077746
+v 0.24269512 -0.33404117 -0.91077746
+v -0.24269512 -0.74693876 0.24269512
+v 0.24269512 -0.74693876 0.24269512
+v 0.63538406 -0.46163354 0.24269512
+v 0.78537789 0.00000000 0.24269512
+v 0.63538406 0.46163354 0.24269512
+v 0.24269512 0.74693876 0.24269512
+v -0.24269512 0.74693876 0.24269512
+v -0.63538406 0.46163354 0.24269512
+v -0.78537789 0.00000000 0.24269512
+v -0.63538406 -0.46163354 0.24269512
+v -0.39268895 -0.54048997 0.65559271
+v 0.39268895 -0.54048997 0.65559271
+v 0.63538406 0.20644880 0.65559271
+v -0.00000000 0.66808234 0.65559271
+v -0.63538406 0.20644880 0.65559271
+v 0.00000000 -0.41289759 0.91077746
+v 0.39268895 -0.12759237 0.91077746
+v 0.24269512 0.33404117 0.91077746
+v -0.24269512 0.33404117 0.91077746
+v -0.39268895 -0.12759237 0.91077746
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22 21
+f 1 21 30 2
+f 2 3 12
+f 2 30 29 3
+f 3 4 13 17 12
+f 3 29 28 4
+f 4 5 13
+f 4 28 27 5
+f 5 6 14 18 13
+f 5 27 26 6
+f 6 7 14
+f 6 26 25 7
+f 7 8 15 19 14
+f 7 25 24 8
+f 8 9 15
+f 8 24 23 9
+f 9 10 11 20 15
+f 9 23 22 10
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 22 32 36 31
+f 21 31 30
+f 22 23 32
+f 23 24 33 37 32
+f 24 25 33
+f 25 26 34 38 33
+f 26 27 34
+f 27 28 35 39 34
+f 28 29 35
+f 29 30 31 40 35
+f 31 36 40
+f 32 37 36
+f 33 38 37
+f 34 39 38
+f 35 40 39
+f 36 37 38 39 40
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44L.obj
new file mode 100644
index 00000000..a118aec6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44L.obj
@@ -0,0 +1,44 @@
+v -0.36450673 -0.63134418 0.31187184
+v -0.72901347 0.00000000 0.31187184
+v -0.36450673 0.63134418 0.31187184
+v 0.36450673 0.63134418 0.31187184
+v 0.72901347 0.00000000 0.31187184
+v 0.36450673 -0.63134418 0.31187184
+v 0.00000000 -0.72901347 -0.31187184
+v -0.63134418 -0.36450673 -0.31187184
+v -0.63134418 0.36450673 -0.31187184
+v -0.00000000 0.72901347 -0.31187184
+v 0.63134418 0.36450673 -0.31187184
+v 0.63134418 -0.36450673 -0.31187184
+v 0.00000000 -0.42089612 0.90710884
+v 0.36450673 0.21044806 0.90710884
+v -0.36450673 0.21044806 0.90710884
+v 0.21044806 -0.36450673 -0.90710884
+v -0.42089612 0.00000000 -0.90710884
+v 0.21044806 0.36450673 -0.90710884
+f 1 2 8
+f 1 8 7
+f 1 7 6
+f 1 6 13
+f 1 13 15 2
+f 2 3 9
+f 2 9 8
+f 2 15 3
+f 3 4 10
+f 3 10 9
+f 3 15 14 4
+f 4 5 11
+f 4 11 10
+f 4 14 5
+f 5 6 12
+f 5 12 11
+f 5 14 13 6
+f 6 7 12
+f 7 8 17 16
+f 7 16 12
+f 8 9 17
+f 9 10 18 17
+f 10 11 18
+f 11 12 16 18
+f 13 14 15
+f 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44R.obj
new file mode 100644
index 00000000..d29c2764
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n44R.obj
@@ -0,0 +1,44 @@
+v -0.36450673 -0.63134418 0.31187184
+v -0.72901347 0.00000000 0.31187184
+v -0.36450673 0.63134418 0.31187184
+v 0.36450673 0.63134418 0.31187184
+v 0.72901347 0.00000000 0.31187184
+v 0.36450673 -0.63134418 0.31187184
+v 0.00000000 -0.72901347 -0.31187184
+v -0.63134418 -0.36450673 -0.31187184
+v -0.63134418 0.36450673 -0.31187184
+v 0.00000000 0.72901347 -0.31187184
+v 0.63134418 0.36450673 -0.31187184
+v 0.63134418 -0.36450673 -0.31187184
+v 0.00000000 -0.42089612 0.90710884
+v 0.36450673 0.21044806 0.90710884
+v -0.36450673 0.21044806 0.90710884
+v -0.21044806 -0.36450673 -0.90710884
+v -0.21044806 0.36450673 -0.90710884
+v 0.42089612 -0.00000000 -0.90710884
+f 1 2 8
+f 1 8 7
+f 1 7 6
+f 1 6 13
+f 1 13 15 2
+f 2 3 9
+f 2 9 8
+f 2 15 3
+f 3 4 10
+f 3 10 9
+f 3 15 14 4
+f 4 5 11
+f 4 11 10
+f 4 14 5
+f 5 6 12
+f 5 12 11
+f 5 14 13 6
+f 6 7 12
+f 7 8 16
+f 7 16 18 12
+f 8 9 17 16
+f 9 10 17
+f 10 11 18 17
+f 11 12 18
+f 13 14 15
+f 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45L.obj
new file mode 100644
index 00000000..79c06df1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45L.obj
@@ -0,0 +1,58 @@
+v -0.36349134 -0.87754573 0.31270999
+v -0.87754573 -0.36349134 0.31270999
+v -0.87754573 0.36349134 0.31270999
+v -0.36349134 0.87754573 0.31270999
+v 0.36349134 0.87754573 0.31270999
+v 0.87754573 0.36349134 0.31270999
+v 0.87754573 -0.36349134 0.31270999
+v 0.36349134 -0.87754573 0.31270999
+v 0.00000000 -0.94984865 -0.31270999
+v -0.67164442 -0.67164442 -0.31270999
+v -0.94984865 -0.00000000 -0.31270999
+v -0.67164442 0.67164442 -0.31270999
+v 0.00000000 0.94984865 -0.31270999
+v 0.67164442 0.67164442 -0.31270999
+v 0.94984865 -0.00000000 -0.31270999
+v 0.67164442 -0.67164442 -0.31270999
+v -0.36349134 -0.36349134 0.82676438
+v 0.36349134 -0.36349134 0.82676438
+v 0.36349134 0.36349134 0.82676438
+v -0.36349134 0.36349134 0.82676438
+v 0.47492433 -0.19672010 -0.82676438
+v -0.19672010 -0.47492433 -0.82676438
+v -0.47492433 0.19672010 -0.82676438
+v 0.19672010 0.47492433 -0.82676438
+f 1 2 10
+f 1 10 9
+f 1 9 8
+f 1 8 18 17
+f 1 17 2
+f 2 3 11
+f 2 11 10
+f 2 17 20 3
+f 3 4 12
+f 3 12 11
+f 3 20 4
+f 4 5 13
+f 4 13 12
+f 4 20 19 5
+f 5 6 14
+f 5 14 13
+f 5 19 6
+f 6 7 15
+f 6 15 14
+f 6 19 18 7
+f 7 8 16
+f 7 16 15
+f 7 18 8
+f 8 9 16
+f 9 10 22
+f 9 22 21 16
+f 10 11 23 22
+f 11 12 23
+f 12 13 24 23
+f 13 14 24
+f 14 15 21 24
+f 15 16 21
+f 17 18 19 20
+f 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45R.obj
new file mode 100644
index 00000000..5b7ea3ed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n45R.obj
@@ -0,0 +1,58 @@
+v -0.36349134 -0.87754573 0.31270999
+v -0.87754573 -0.36349134 0.31270999
+v -0.87754573 0.36349134 0.31270999
+v -0.36349134 0.87754573 0.31270999
+v 0.36349134 0.87754573 0.31270999
+v 0.87754573 0.36349134 0.31270999
+v 0.87754573 -0.36349134 0.31270999
+v 0.36349134 -0.87754573 0.31270999
+v 0.00000000 -0.94984865 -0.31270999
+v -0.67164442 -0.67164442 -0.31270999
+v -0.94984865 -0.00000000 -0.31270999
+v -0.67164442 0.67164442 -0.31270999
+v 0.00000000 0.94984865 -0.31270999
+v 0.67164442 0.67164442 -0.31270999
+v 0.94984865 -0.00000000 -0.31270999
+v 0.67164442 -0.67164442 -0.31270999
+v -0.36349134 -0.36349134 0.82676438
+v 0.36349134 -0.36349134 0.82676438
+v 0.36349134 0.36349134 0.82676438
+v -0.36349134 0.36349134 0.82676438
+v 0.19672010 -0.47492433 -0.82676438
+v -0.47492433 -0.19672010 -0.82676438
+v -0.19672010 0.47492433 -0.82676438
+v 0.47492433 0.19672010 -0.82676438
+f 1 2 10
+f 1 10 9
+f 1 9 8
+f 1 8 18 17
+f 1 17 2
+f 2 3 11
+f 2 11 10
+f 2 17 20 3
+f 3 4 12
+f 3 12 11
+f 3 20 4
+f 4 5 13
+f 4 13 12
+f 4 20 19 5
+f 5 6 14
+f 5 14 13
+f 5 19 6
+f 6 7 15
+f 6 15 14
+f 6 19 18 7
+f 7 8 16
+f 7 16 15
+f 7 18 8
+f 8 9 16
+f 9 10 22 21
+f 9 21 16
+f 10 11 22
+f 11 12 23 22
+f 12 13 23
+f 13 14 24 23
+f 14 15 24
+f 15 16 21 24
+f 17 18 19 20
+f 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46L.obj
new file mode 100644
index 00000000..c36513d3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46L.obj
@@ -0,0 +1,72 @@
+v -0.29859575 -0.91898322 -0.25750808
+v -0.78173382 -0.56796287 -0.25750808
+v -0.96627614 0.00000000 -0.25750808
+v -0.78173382 0.56796287 -0.25750808
+v -0.29859575 0.91898322 -0.25750808
+v 0.29859575 0.91898322 -0.25750808
+v 0.78173382 0.56796287 -0.25750808
+v 0.96627614 0.00000000 -0.25750808
+v 0.78173382 -0.56796287 -0.25750808
+v 0.29859575 -0.91898322 -0.25750808
+v -0.29859575 -0.41098179 -0.57147023
+v -0.48313807 0.15698108 -0.57147023
+v 0.00000000 0.50800143 -0.57147023
+v 0.48313807 0.15698108 -0.57147023
+v 0.29859575 -0.41098179 -0.57147023
+v -0.56796287 -0.78173382 0.25750808
+v 0.00000000 -0.96627614 0.25750808
+v 0.56796287 -0.78173382 0.25750808
+v 0.91898322 -0.29859575 0.25750808
+v 0.91898322 0.29859575 0.25750808
+v 0.56796287 0.78173382 0.25750808
+v -0.00000000 0.96627614 0.25750808
+v -0.56796287 0.78173382 0.25750808
+v -0.91898322 0.29859575 0.25750808
+v -0.91898322 -0.29859575 0.25750808
+v -0.41098179 -0.29859575 0.57147023
+v 0.15698108 -0.48313807 0.57147023
+v 0.50800143 -0.00000000 0.57147023
+v 0.15698107 0.48313807 0.57147023
+v -0.41098179 0.29859575 0.57147023
+f 1 2 11
+f 1 11 15 10
+f 1 10 17
+f 1 17 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 25
+f 2 25 3
+f 3 4 12
+f 3 25 24
+f 3 24 4
+f 4 5 13 12
+f 4 24 23
+f 4 23 5
+f 5 6 13
+f 5 23 22
+f 5 22 6
+f 6 7 14 13
+f 6 22 21
+f 6 21 7
+f 7 8 14
+f 7 21 20
+f 7 20 8
+f 8 9 15 14
+f 8 20 19
+f 8 19 9
+f 9 10 15
+f 9 19 18
+f 9 18 10
+f 10 18 17
+f 11 12 13 14 15
+f 16 17 27 26
+f 16 26 25
+f 17 18 27
+f 18 19 28 27
+f 19 20 28
+f 20 21 29 28
+f 21 22 29
+f 22 23 30 29
+f 23 24 30
+f 24 25 26 30
+f 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46R.obj
new file mode 100644
index 00000000..ce2cc058
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n46R.obj
@@ -0,0 +1,72 @@
+v -0.29859575 -0.91898322 -0.25750808
+v -0.78173382 -0.56796287 -0.25750808
+v -0.96627614 0.00000000 -0.25750808
+v -0.78173382 0.56796287 -0.25750808
+v -0.29859575 0.91898322 -0.25750808
+v 0.29859575 0.91898322 -0.25750808
+v 0.78173382 0.56796287 -0.25750808
+v 0.96627614 0.00000000 -0.25750808
+v 0.78173382 -0.56796287 -0.25750808
+v 0.29859575 -0.91898322 -0.25750808
+v -0.29859575 -0.41098179 -0.57147023
+v -0.48313807 0.15698108 -0.57147023
+v 0.00000000 0.50800143 -0.57147023
+v 0.48313807 0.15698108 -0.57147023
+v 0.29859575 -0.41098179 -0.57147023
+v -0.56796287 -0.78173382 0.25750808
+v 0.00000000 -0.96627614 0.25750808
+v 0.56796287 -0.78173382 0.25750808
+v 0.91898322 -0.29859575 0.25750808
+v 0.91898322 0.29859575 0.25750808
+v 0.56796286 0.78173382 0.25750808
+v -0.00000000 0.96627614 0.25750808
+v -0.56796287 0.78173382 0.25750808
+v -0.91898322 0.29859575 0.25750808
+v -0.91898322 -0.29859575 0.25750808
+v -0.15698107 -0.48313807 0.57147023
+v 0.41098179 -0.29859575 0.57147023
+v 0.41098179 0.29859575 0.57147023
+v -0.15698108 0.48313807 0.57147023
+v -0.50800143 0.00000000 0.57147023
+f 1 2 11
+f 1 11 15 10
+f 1 10 17
+f 1 17 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 25
+f 2 25 3
+f 3 4 12
+f 3 25 24
+f 3 24 4
+f 4 5 13 12
+f 4 24 23
+f 4 23 5
+f 5 6 13
+f 5 23 22
+f 5 22 6
+f 6 7 14 13
+f 6 22 21
+f 6 21 7
+f 7 8 14
+f 7 21 20
+f 7 20 8
+f 8 9 15 14
+f 8 20 19
+f 8 19 9
+f 9 10 15
+f 9 19 18
+f 9 18 10
+f 10 18 17
+f 11 12 13 14 15
+f 16 17 26
+f 16 26 30 25
+f 17 18 27 26
+f 18 19 27
+f 19 20 28 27
+f 20 21 28
+f 21 22 29 28
+f 22 23 29
+f 23 24 30 29
+f 24 25 30
+f 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47L.obj
new file mode 100644
index 00000000..e2fa72f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47L.obj
@@ -0,0 +1,82 @@
+v -0.28129438 -0.86573510 -0.41397609
+v -0.73643826 -0.53505372 -0.41397609
+v -0.91028775 0.00000000 -0.41397609
+v -0.73643826 0.53505372 -0.41397609
+v -0.28129439 0.86573510 -0.41397609
+v 0.28129438 0.86573510 -0.41397609
+v 0.73643826 0.53505372 -0.41397609
+v 0.91028775 0.00000000 -0.41397609
+v 0.73643826 -0.53505372 -0.41397609
+v 0.28129439 -0.86573510 -0.41397609
+v -0.28129438 -0.38716851 -0.70974651
+v -0.45514388 0.14788521 -0.70974651
+v 0.00000000 0.47856659 -0.70974651
+v 0.45514388 0.14788521 -0.70974651
+v 0.28129439 -0.38716851 -0.70974651
+v -0.53505372 -0.73643826 0.07119878
+v 0.00000000 -0.91028775 0.07119878
+v 0.53505372 -0.73643826 0.07119878
+v 0.86573510 -0.28129439 0.07119878
+v 0.86573510 0.28129438 0.07119877
+v 0.53505371 0.73643826 0.07119877
+v -0.00000000 0.91028775 0.07119877
+v -0.53505372 0.73643826 0.07119877
+v -0.86573510 0.28129439 0.07119878
+v -0.86573510 -0.28129439 0.07119878
+v -0.77433701 0.00000000 0.54976537
+v -0.23928330 -0.73643826 0.54976537
+v 0.62645180 -0.45514388 0.54976537
+v 0.62645180 0.45514388 0.54976537
+v -0.23928330 0.73643826 0.54976537
+v -0.38716851 -0.28129439 0.84553579
+v 0.14788521 -0.45514388 0.84553579
+v 0.47856659 -0.00000000 0.84553579
+v 0.14788521 0.45514388 0.84553579
+v -0.38716851 0.28129439 0.84553579
+f 1 2 11
+f 1 11 15 10
+f 1 10 17
+f 1 17 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 25
+f 2 25 3
+f 3 4 12
+f 3 25 24
+f 3 24 4
+f 4 5 13 12
+f 4 24 23
+f 4 23 5
+f 5 6 13
+f 5 23 22
+f 5 22 6
+f 6 7 14 13
+f 6 22 21
+f 6 21 7
+f 7 8 14
+f 7 21 20
+f 7 20 8
+f 8 9 15 14
+f 8 20 19
+f 8 19 9
+f 9 10 15
+f 9 19 18
+f 9 18 10
+f 10 18 17
+f 11 12 13 14 15
+f 16 17 27
+f 16 27 31 26 25
+f 17 18 28 32 27
+f 18 19 28
+f 19 20 29 33 28
+f 20 21 29
+f 21 22 30 34 29
+f 22 23 30
+f 23 24 26 35 30
+f 24 25 26
+f 26 31 35
+f 27 32 31
+f 28 33 32
+f 29 34 33
+f 30 35 34
+f 31 32 33 34 35
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47R.obj
new file mode 100644
index 00000000..2ab53743
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n47R.obj
@@ -0,0 +1,82 @@
+v -0.28129438 -0.86573510 -0.41397609
+v -0.73643826 -0.53505372 -0.41397609
+v -0.91028775 0.00000000 -0.41397609
+v -0.73643826 0.53505372 -0.41397609
+v -0.28129439 0.86573510 -0.41397609
+v 0.28129438 0.86573510 -0.41397609
+v 0.73643826 0.53505372 -0.41397609
+v 0.91028775 0.00000000 -0.41397609
+v 0.73643826 -0.53505372 -0.41397609
+v 0.28129439 -0.86573510 -0.41397609
+v -0.28129438 -0.38716851 -0.70974651
+v -0.45514387 0.14788521 -0.70974651
+v 0.00000000 0.47856659 -0.70974651
+v 0.45514388 0.14788521 -0.70974651
+v 0.28129439 -0.38716851 -0.70974651
+v -0.53505372 -0.73643826 0.07119878
+v 0.00000000 -0.91028775 0.07119878
+v 0.53505372 -0.73643826 0.07119878
+v 0.86573510 -0.28129439 0.07119878
+v 0.86573510 0.28129439 0.07119877
+v 0.53505371 0.73643826 0.07119877
+v -0.00000000 0.91028775 0.07119877
+v -0.53505372 0.73643826 0.07119877
+v -0.86573510 0.28129439 0.07119878
+v -0.86573510 -0.28129439 0.07119878
+v -0.62645180 -0.45514388 0.54976537
+v 0.23928330 -0.73643826 0.54976537
+v 0.77433701 -0.00000000 0.54976537
+v 0.23928329 0.73643826 0.54976537
+v -0.62645180 0.45514388 0.54976537
+v -0.14788521 -0.45514388 0.84553579
+v 0.38716851 -0.28129439 0.84553579
+v 0.38716850 0.28129439 0.84553579
+v -0.14788521 0.45514388 0.84553579
+v -0.47856659 0.00000000 0.84553579
+f 1 2 11
+f 1 11 15 10
+f 1 10 17
+f 1 17 16
+f 1 16 2
+f 2 3 12 11
+f 2 16 25
+f 2 25 3
+f 3 4 12
+f 3 25 24
+f 3 24 4
+f 4 5 13 12
+f 4 24 23
+f 4 23 5
+f 5 6 13
+f 5 23 22
+f 5 22 6
+f 6 7 14 13
+f 6 22 21
+f 6 21 7
+f 7 8 14
+f 7 21 20
+f 7 20 8
+f 8 9 15 14
+f 8 20 19
+f 8 19 9
+f 9 10 15
+f 9 19 18
+f 9 18 10
+f 10 18 17
+f 11 12 13 14 15
+f 16 17 27 31 26
+f 16 26 25
+f 17 18 27
+f 18 19 28 32 27
+f 19 20 28
+f 20 21 29 33 28
+f 21 22 29
+f 22 23 30 34 29
+f 23 24 30
+f 24 25 26 35 30
+f 26 31 35
+f 27 32 31
+f 28 33 32
+f 29 34 33
+f 30 35 34
+f 31 32 33 34 35
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48L.obj
new file mode 100644
index 00000000..b2c4ece1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48L.obj
@@ -0,0 +1,92 @@
+v -0.25028317 -0.77029241 -0.21584346
+v -0.65524986 -0.47606689 -0.21584346
+v -0.80993337 0.00000000 -0.21584346
+v -0.65524986 0.47606689 -0.21584346
+v -0.25028318 0.77029241 -0.21584346
+v 0.25028317 0.77029241 -0.21584346
+v 0.65524986 0.47606689 -0.21584346
+v 0.80993337 0.00000000 -0.21584346
+v 0.65524986 -0.47606689 -0.21584346
+v 0.25028318 -0.77029241 -0.21584346
+v 0.00000000 -0.68897047 -0.64165063
+v -0.65524986 -0.21290358 -0.64165063
+v -0.40496668 0.55738882 -0.64165063
+v 0.40496668 0.55738882 -0.64165063
+v 0.65524986 -0.21290358 -0.64165063
+v -0.25028317 -0.34448524 -0.90481393
+v -0.40496668 0.13158165 -0.90481393
+v 0.00000000 0.42580717 -0.90481393
+v 0.40496668 0.13158165 -0.90481393
+v 0.25028318 -0.34448524 -0.90481393
+v -0.47606689 -0.65524986 0.21584346
+v 0.00000000 -0.80993337 0.21584346
+v 0.47606689 -0.65524986 0.21584346
+v 0.77029241 -0.25028318 0.21584346
+v 0.77029241 0.25028317 0.21584346
+v 0.47606689 0.65524986 0.21584346
+v -0.00000000 0.80993337 0.21584346
+v -0.47606689 0.65524986 0.21584346
+v -0.77029241 0.25028317 0.21584346
+v -0.77029241 -0.25028317 0.21584346
+v -0.68897047 0.00000000 0.64165063
+v -0.21290358 -0.65524986 0.64165063
+v 0.55738882 -0.40496668 0.64165063
+v 0.55738882 0.40496668 0.64165063
+v -0.21290359 0.65524986 0.64165063
+v -0.34448524 -0.25028317 0.90481393
+v 0.13158165 -0.40496668 0.90481393
+v 0.42580717 -0.00000000 0.90481393
+v 0.13158165 0.40496668 0.90481393
+v -0.34448524 0.25028317 0.90481393
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22
+f 1 22 21
+f 1 21 2
+f 2 3 12
+f 2 21 30
+f 2 30 3
+f 3 4 13 17 12
+f 3 30 29
+f 3 29 4
+f 4 5 13
+f 4 29 28
+f 4 28 5
+f 5 6 14 18 13
+f 5 28 27
+f 5 27 6
+f 6 7 14
+f 6 27 26
+f 6 26 7
+f 7 8 15 19 14
+f 7 26 25
+f 7 25 8
+f 8 9 15
+f 8 25 24
+f 8 24 9
+f 9 10 11 20 15
+f 9 24 23
+f 9 23 10
+f 10 23 22
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 22 32
+f 21 32 36 31 30
+f 22 23 33 37 32
+f 23 24 33
+f 24 25 34 38 33
+f 25 26 34
+f 26 27 35 39 34
+f 27 28 35
+f 28 29 31 40 35
+f 29 30 31
+f 31 36 40
+f 32 37 36
+f 33 38 37
+f 34 39 38
+f 35 40 39
+f 36 37 38 39 40
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48R.obj
new file mode 100644
index 00000000..004d8254
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n48R.obj
@@ -0,0 +1,92 @@
+v -0.25028317 -0.77029241 -0.21584346
+v -0.65524986 -0.47606689 -0.21584346
+v -0.80993337 0.00000000 -0.21584346
+v -0.65524986 0.47606689 -0.21584346
+v -0.25028317 0.77029241 -0.21584346
+v 0.25028317 0.77029241 -0.21584346
+v 0.65524986 0.47606689 -0.21584346
+v 0.80993337 0.00000000 -0.21584346
+v 0.65524986 -0.47606689 -0.21584346
+v 0.25028318 -0.77029241 -0.21584346
+v 0.00000000 -0.68897047 -0.64165063
+v -0.65524986 -0.21290358 -0.64165063
+v -0.40496668 0.55738882 -0.64165063
+v 0.40496668 0.55738882 -0.64165063
+v 0.65524986 -0.21290359 -0.64165063
+v -0.25028317 -0.34448524 -0.90481393
+v -0.40496668 0.13158165 -0.90481393
+v 0.00000000 0.42580717 -0.90481393
+v 0.40496668 0.13158165 -0.90481393
+v 0.25028318 -0.34448524 -0.90481393
+v -0.47606689 -0.65524986 0.21584346
+v 0.00000000 -0.80993337 0.21584346
+v 0.47606689 -0.65524986 0.21584346
+v 0.77029241 -0.25028317 0.21584346
+v 0.77029240 0.25028317 0.21584346
+v 0.47606689 0.65524986 0.21584346
+v -0.00000000 0.80993337 0.21584346
+v -0.47606689 0.65524986 0.21584346
+v -0.77029241 0.25028317 0.21584346
+v -0.77029241 -0.25028317 0.21584346
+v -0.55738882 -0.40496668 0.64165063
+v 0.21290359 -0.65524986 0.64165063
+v 0.68897047 -0.00000000 0.64165063
+v 0.21290358 0.65524986 0.64165063
+v -0.55738882 0.40496668 0.64165063
+v -0.13158165 -0.40496668 0.90481393
+v 0.34448524 -0.25028317 0.90481393
+v 0.34448524 0.25028317 0.90481393
+v -0.13158165 0.40496668 0.90481393
+v -0.42580717 0.00000000 0.90481393
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22
+f 1 22 21
+f 1 21 2
+f 2 3 12
+f 2 21 30
+f 2 30 3
+f 3 4 13 17 12
+f 3 30 29
+f 3 29 4
+f 4 5 13
+f 4 29 28
+f 4 28 5
+f 5 6 14 18 13
+f 5 28 27
+f 5 27 6
+f 6 7 14
+f 6 27 26
+f 6 26 7
+f 7 8 15 19 14
+f 7 26 25
+f 7 25 8
+f 8 9 15
+f 8 25 24
+f 8 24 9
+f 9 10 11 20 15
+f 9 24 23
+f 9 23 10
+f 10 23 22
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 22 32 36 31
+f 21 31 30
+f 22 23 32
+f 23 24 33 37 32
+f 24 25 33
+f 25 26 34 38 33
+f 26 27 34
+f 27 28 35 39 34
+f 28 29 35
+f 29 30 31 40 35
+f 31 36 40
+f 32 37 36
+f 33 38 37
+f 34 39 38
+f 35 40 39
+f 36 37 38 39 40
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n49.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n49.obj
new file mode 100644
index 00000000..6cedb9f8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n49.obj
@@ -0,0 +1,15 @@
+v -0.43001399 -0.41061161 0.57060708
+v 0.14059309 0.57770884 0.57060708
+v 0.71120016 -0.41061161 0.57060708
+v -0.43001399 -0.41061161 -0.57060708
+v 0.14059309 0.57770884 -0.57060708
+v 0.71120016 -0.41061161 -0.57060708
+v -0.84355854 0.48702875 -0.00000000
+f 1 4 6 3
+f 1 3 2
+f 1 2 7
+f 1 7 4
+f 2 3 6 5
+f 2 5 7
+f 4 5 6
+f 4 7 5
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n50.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n50.obj
new file mode 100644
index 00000000..f7c4ccbc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n50.obj
@@ -0,0 +1,19 @@
+v -0.53205720 -0.43963661 0.53205720
+v 0.00000000 0.48191351 0.53205720
+v 0.53205720 -0.43963661 0.53205720
+v -0.53205720 -0.43963661 -0.53205720
+v 0.00000000 0.48191351 -0.53205720
+v 0.53205720 -0.43963661 -0.53205720
+v -0.91766294 0.39735971 -0.00000000
+v 0.91766294 0.39735971 -0.00000000
+f 1 4 6 3
+f 1 3 2
+f 1 2 7
+f 1 7 4
+f 2 5 7
+f 2 3 8
+f 2 8 5
+f 3 6 8
+f 4 5 6
+f 4 7 5
+f 5 8 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n51.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n51.obj
new file mode 100644
index 00000000..86483d6d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n51.obj
@@ -0,0 +1,23 @@
+v -0.50211798 -0.28989795 0.50211798
+v 0.00000000 0.57979590 0.50211798
+v 0.50211798 -0.28989795 0.50211798
+v -0.50211798 -0.28989795 -0.50211798
+v 0.00000000 0.57979590 -0.50211798
+v 0.50211798 -0.28989795 -0.50211798
+v -0.86602540 0.50000000 -0.00000000
+v 0.86602540 0.50000000 -0.00000000
+v -0.00000000 -1.00000000 -0.00000000
+f 1 3 2
+f 1 2 7
+f 1 7 4
+f 1 4 9
+f 1 9 3
+f 2 5 7
+f 2 3 8
+f 2 8 5
+f 3 6 8
+f 3 9 6
+f 4 7 5
+f 4 5 6
+f 4 6 9
+f 5 8 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n52.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n52.obj
new file mode 100644
index 00000000..8e67dd58
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n52.obj
@@ -0,0 +1,21 @@
+v -0.29907545 -0.51164204 0.39418110
+v -0.54269277 0.23813497 0.39418110
+v 0.09510565 0.70152264 0.39418110
+v 0.73290407 0.23813497 0.39418110
+v 0.48928675 -0.51164204 0.39418110
+v -0.29907545 -0.51164204 -0.39418110
+v -0.54269277 0.23813497 -0.39418110
+v 0.09510565 0.70152264 -0.39418110
+v 0.73290407 0.23813497 -0.39418110
+v 0.48928675 -0.51164204 -0.39418110
+v -0.95105652 -0.30901699 -0.00000000
+f 1 6 10 5
+f 1 5 4 3 2
+f 1 2 11
+f 1 11 6
+f 2 3 8 7
+f 2 7 11
+f 3 4 9 8
+f 4 5 10 9
+f 6 7 8 9 10
+f 6 11 7
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n53.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n53.obj
new file mode 100644
index 00000000..cd266e99
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n53.obj
@@ -0,0 +1,25 @@
+v -0.33296747 -0.54286675 0.36369162
+v -0.55774125 0.14891583 0.36369162
+v 0.03072416 0.57646097 0.36369162
+v 0.61918957 0.14891583 0.36369162
+v 0.39441578 -0.54286675 0.36369162
+v -0.33296747 -0.54286675 -0.36369162
+v -0.55774125 0.14891583 -0.36369162
+v 0.03072416 0.57646097 -0.36369162
+v 0.61918957 0.14891583 -0.36369162
+v 0.39441578 -0.54286675 -0.36369162
+v -0.93451851 -0.35591453 -0.00000000
+v 0.62727693 0.77879628 -0.00000000
+f 1 6 10 5
+f 1 5 4 3 2
+f 1 2 11
+f 1 11 6
+f 2 3 8 7
+f 2 7 11
+f 3 4 12
+f 3 12 8
+f 4 5 10 9
+f 4 9 12
+f 6 7 8 9 10
+f 6 11 7
+f 8 12 9
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n54.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n54.obj
new file mode 100644
index 00000000..4377b1ff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n54.obj
@@ -0,0 +1,24 @@
+v -0.27215490 -0.55471945 0.34432368
+v -0.61647858 0.04166667 0.34432368
+v -0.27215490 0.63805278 0.34432368
+v 0.41649247 0.63805278 0.34432368
+v 0.76081615 0.04166667 0.34432368
+v 0.41649247 -0.55471945 0.34432368
+v -0.27215490 -0.55471945 -0.34432368
+v -0.61647858 0.04166667 -0.34432368
+v -0.27215490 0.63805278 -0.34432368
+v 0.41649247 0.63805278 -0.34432368
+v 0.76081615 0.04166667 -0.34432368
+v 0.41649247 -0.55471945 -0.34432368
+v -0.86602540 -0.50000000 -0.00000000
+f 1 7 12 6
+f 1 6 5 4 3 2
+f 1 2 13
+f 1 13 7
+f 2 3 9 8
+f 2 8 13
+f 3 4 10 9
+f 4 5 11 10
+f 5 6 12 11
+f 7 8 9 10 11 12
+f 7 13 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n55.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n55.obj
new file mode 100644
index 00000000..cfde17fe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n55.obj
@@ -0,0 +1,28 @@
+v -0.31783725 -0.55051026 0.31783725
+v -0.63567449 0.00000000 0.31783725
+v -0.31783725 0.55051026 0.31783725
+v 0.31783725 0.55051026 0.31783725
+v 0.63567449 -0.00000000 0.31783725
+v 0.31783725 -0.55051026 0.31783725
+v -0.31783725 -0.55051026 -0.31783725
+v -0.63567449 0.00000000 -0.31783725
+v -0.31783725 0.55051026 -0.31783725
+v 0.31783725 0.55051026 -0.31783725
+v 0.63567449 -0.00000000 -0.31783725
+v 0.31783725 -0.55051026 -0.31783725
+v -0.86602540 -0.50000000 -0.00000000
+v 0.86602540 0.50000000 0.00000000
+f 1 7 12 6
+f 1 6 5 4 3 2
+f 1 2 13
+f 1 13 7
+f 2 3 9 8
+f 2 8 13
+f 3 4 10 9
+f 4 5 14
+f 4 14 10
+f 5 6 12 11
+f 5 11 14
+f 7 8 9 10 11 12
+f 7 13 8
+f 10 14 11
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n56.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n56.obj
new file mode 100644
index 00000000..7bae7915
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n56.obj
@@ -0,0 +1,28 @@
+v -0.26491443 -0.60668951 0.32893287
+v -0.59384731 -0.03696106 0.32893287
+v -0.26491443 0.53276739 0.32893287
+v 0.39295131 0.53276739 0.32893287
+v 0.72188419 -0.03696106 0.32893287
+v 0.39295131 -0.60668951 0.32893287
+v -0.26491443 -0.60668951 -0.32893287
+v -0.59384731 -0.03696106 -0.32893287
+v -0.26491443 0.53276739 -0.32893287
+v 0.39295131 0.53276739 -0.32893287
+v 0.72188419 -0.03696106 -0.32893287
+v 0.39295131 -0.60668951 -0.32893287
+v -0.83223972 -0.55441595 -0.00000000
+v 0.06401844 0.99794872 -0.00000000
+f 1 7 12 6
+f 1 6 5 4 3 2
+f 1 2 13
+f 1 13 7
+f 2 3 9 8
+f 2 8 13
+f 3 4 14
+f 3 14 9
+f 4 5 11 10
+f 4 10 14
+f 5 6 12 11
+f 7 8 9 10 11 12
+f 7 13 8
+f 9 14 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n57.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n57.obj
new file mode 100644
index 00000000..036ae2e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n57.obj
@@ -0,0 +1,32 @@
+v -0.31783725 -0.55051026 0.31783725
+v -0.63567449 0.00000000 0.31783725
+v -0.31783725 0.55051026 0.31783725
+v 0.31783725 0.55051026 0.31783725
+v 0.63567449 -0.00000000 0.31783725
+v 0.31783725 -0.55051026 0.31783725
+v -0.31783725 -0.55051026 -0.31783725
+v -0.63567449 0.00000000 -0.31783725
+v -0.31783725 0.55051026 -0.31783725
+v 0.31783725 0.55051026 -0.31783725
+v 0.63567449 -0.00000000 -0.31783725
+v 0.31783725 -0.55051026 -0.31783725
+v -0.86602540 -0.50000000 -0.00000000
+v 0.00000000 1.00000000 -0.00000000
+v 0.86602540 -0.50000000 -0.00000000
+f 1 7 12 6
+f 1 6 5 4 3 2
+f 1 2 13
+f 1 13 7
+f 2 3 9 8
+f 2 8 13
+f 3 4 14
+f 3 14 9
+f 4 5 11 10
+f 4 10 14
+f 5 6 15
+f 5 15 11
+f 6 12 15
+f 7 8 9 10 11 12
+f 7 13 8
+f 9 14 10
+f 11 15 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n58.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n58.obj
new file mode 100644
index 00000000..a7350853
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n58.obj
@@ -0,0 +1,37 @@
+v -0.32026891 -0.44081234 0.66324934
+v 0.32026891 -0.44081234 0.66324934
+v 0.51820598 -0.71324934 0.11837533
+v 0.00000000 -0.88162467 -0.21837533
+v -0.51820598 -0.71324934 0.11837533
+v -0.51820598 0.16837533 0.66324934
+v 0.51820598 0.16837533 0.66324934
+v 0.83847489 -0.27243701 -0.21837533
+v -0.00000000 -0.54487401 -0.76324934
+v -0.83847489 -0.27243701 -0.21837533
+v -0.83847489 0.27243701 0.11837533
+v -0.00000000 0.54487401 0.66324934
+v 0.83847489 0.27243701 0.11837533
+v 0.51820598 -0.16837533 -0.76324934
+v -0.51820598 -0.16837533 -0.76324934
+v -0.51820598 0.71324934 -0.21837533
+v 0.00000000 0.88162467 0.11837533
+v 0.51820598 0.71324934 -0.21837533
+v 0.32026891 0.44081234 -0.76324934
+v -0.32026891 0.44081234 -0.76324934
+v 0.00000000 0.00000000 1.00000000
+f 1 6 11 10 5
+f 1 5 4 3 2
+f 1 2 21
+f 1 21 6
+f 2 3 8 13 7
+f 2 7 21
+f 3 4 9 14 8
+f 4 5 10 15 9
+f 6 12 17 16 11
+f 6 21 12
+f 7 13 18 17 12
+f 7 12 21
+f 8 14 19 18 13
+f 9 15 20 19 14
+f 10 11 16 20 15
+f 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n59.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n59.obj
new file mode 100644
index 00000000..9981d0b4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n59.obj
@@ -0,0 +1,42 @@
+v -0.30501801 -0.41982127 0.67928509
+v 0.30501801 -0.41982127 0.67928509
+v 0.49352950 -0.67928509 0.16035746
+v 0.00000000 -0.83964254 -0.16035746
+v -0.49352950 -0.67928509 0.16035746
+v -0.49352950 0.16035746 0.67928509
+v 0.49352950 0.16035746 0.67928509
+v 0.79854751 -0.25946382 -0.16035746
+v -0.00000000 -0.51892763 -0.67928509
+v -0.79854751 -0.25946382 -0.16035746
+v -0.79854751 0.25946382 0.16035746
+v -0.00000000 0.51892763 0.67928509
+v 0.79854751 0.25946382 0.16035746
+v 0.49352950 -0.16035746 -0.67928509
+v -0.49352950 -0.16035746 -0.67928509
+v -0.49352950 0.67928509 -0.16035746
+v 0.00000000 0.83964254 0.16035746
+v 0.49352950 0.67928509 -0.16035746
+v 0.30501801 0.41982127 -0.67928509
+v -0.30501801 0.41982127 -0.67928509
+v 0.00000000 0.00000000 1.00000000
+v -0.00000000 0.00000000 -1.00000000
+f 1 6 11 10 5
+f 1 5 4 3 2
+f 1 2 21
+f 1 21 6
+f 2 3 8 13 7
+f 2 7 21
+f 3 4 9 14 8
+f 4 5 10 15 9
+f 6 12 17 16 11
+f 6 21 12
+f 7 13 18 17 12
+f 7 12 21
+f 8 14 19 18 13
+f 9 15 22
+f 9 22 14
+f 10 11 16 20 15
+f 14 22 19
+f 15 20 22
+f 16 17 18 19 20
+f 19 22 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n60.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n60.obj
new file mode 100644
index 00000000..27819bd4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n60.obj
@@ -0,0 +1,42 @@
+v -0.35223599 -0.44314381 0.67043614
+v 0.27297981 -0.44314381 0.67043614
+v 0.46618212 -0.70906397 0.13859581
+v -0.03962809 -0.87341167 -0.19009959
+v -0.54543830 -0.70906397 0.13859581
+v -0.54543830 0.15147175 0.67043614
+v 0.46618212 0.15147175 0.67043614
+v 0.77879002 -0.27879611 -0.19009959
+v -0.03962809 -0.54471627 -0.72193992
+v -0.85804620 -0.27879611 -0.19009959
+v -0.85804620 0.25304422 0.13859581
+v -0.03962809 0.51896438 0.67043614
+v 0.77879002 0.25304422 0.13859581
+v 0.46618212 -0.17722365 -0.72193992
+v -0.54543830 -0.17722365 -0.72193992
+v -0.54543830 0.68331208 -0.19009959
+v -0.03962809 0.84765978 0.13859581
+v 0.46618212 0.68331208 -0.19009959
+v 0.27297981 0.41739192 -0.72193992
+v -0.35223599 0.41739192 -0.72193992
+v -0.03962809 -0.01287595 0.99913154
+v 0.83218983 0.27039487 -0.48409369
+f 1 6 11 10 5
+f 1 5 4 3 2
+f 1 2 21
+f 1 21 6
+f 2 3 8 13 7
+f 2 7 21
+f 3 4 9 14 8
+f 4 5 10 15 9
+f 6 12 17 16 11
+f 6 21 12
+f 7 13 18 17 12
+f 7 12 21
+f 8 14 22
+f 8 22 13
+f 9 15 20 19 14
+f 10 11 16 20 15
+f 13 22 18
+f 14 19 22
+f 16 17 18 19 20
+f 18 22 19
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n61.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n61.obj
new file mode 100644
index 00000000..9668c496
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n61.obj
@@ -0,0 +1,47 @@
+v -0.32052320 -0.40210626 0.67760869
+v 0.29214730 -0.40210626 0.67760869
+v 0.48147290 -0.66269059 0.15644003
+v -0.01418795 -0.82374057 -0.16565992
+v -0.50984880 -0.66269059 0.15644003
+v -0.50984880 0.18057801 0.67760869
+v 0.48147290 0.18057801 0.67760869
+v 0.78780815 -0.24105629 -0.16565992
+v -0.01418795 -0.50164062 -0.68682858
+v -0.81618406 -0.24105629 -0.16565992
+v -0.81618406 0.28011237 0.15644003
+v -0.01418795 0.54069670 0.67760869
+v 0.78780815 0.28011237 0.15644003
+v 0.48147290 -0.14152193 -0.68682858
+v -0.50984880 -0.14152193 -0.68682858
+v -0.50984880 0.70174667 -0.16565992
+v -0.01418795 0.86279665 0.15644003
+v 0.48147290 0.70174667 -0.16565992
+v 0.29214730 0.44116234 -0.68682858
+v -0.32052320 0.44116234 -0.68682858
+v -0.01418795 0.01952804 0.99970864
+v 0.84013646 0.29711487 -0.45375487
+v -0.54218948 -0.70720371 -0.45375487
+f 1 6 11 10 5
+f 1 5 4 3 2
+f 1 2 21
+f 1 21 6
+f 2 3 8 13 7
+f 2 7 21
+f 3 4 9 14 8
+f 4 5 23
+f 4 23 9
+f 5 10 23
+f 6 12 17 16 11
+f 6 21 12
+f 7 13 18 17 12
+f 7 12 21
+f 8 14 22
+f 8 22 13
+f 9 15 20 19 14
+f 9 23 15
+f 10 11 16 20 15
+f 10 15 23
+f 13 22 18
+f 14 19 22
+f 16 17 18 19 20
+f 18 22 19
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n62.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n62.obj
new file mode 100644
index 00000000..270b879b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n62.obj
@@ -0,0 +1,22 @@
+v -0.48194883 -0.71402076 0.32797613
+v 0.00000000 -0.87061543 -0.49196420
+v 0.00000000 -0.05067510 -0.99871519
+v -0.48194883 0.61267056 -0.49196420
+v -0.77980959 0.20270040 0.32797613
+v 0.48194883 -0.71402076 0.32797613
+v 0.77980959 0.20270040 0.32797613
+v 0.48194883 0.61267056 -0.49196420
+v -0.00000000 0.76926523 0.32797613
+v 0.00000000 -0.05067510 0.83472713
+f 1 5 4 3 2
+f 1 2 6
+f 1 6 10
+f 1 10 5
+f 2 3 8 7 6
+f 3 4 8
+f 4 5 9
+f 4 9 8
+f 5 10 9
+f 6 7 10
+f 7 8 9
+f 7 9 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n63.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n63.obj
new file mode 100644
index 00000000..ee44b2b3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n63.obj
@@ -0,0 +1,17 @@
+v -0.50051680 -0.74737722 0.43693274
+v 0.00000000 -0.91000499 -0.41459730
+v -0.00000000 -0.05847495 -0.94087181
+v -0.50051680 0.63042733 -0.41459730
+v -0.80985320 0.20466231 0.43693274
+v 0.50051680 -0.74737722 0.43693274
+v 0.80985320 0.20466231 0.43693274
+v 0.50051680 0.63042733 -0.41459730
+v 0.00000000 0.79305510 0.43693274
+f 1 2 6
+f 1 6 7 9 5
+f 1 5 4 3 2
+f 2 3 8 7 6
+f 3 4 8
+f 4 5 9
+f 4 9 8
+f 7 8 9
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n64.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n64.obj
new file mode 100644
index 00000000..f1aadc5c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n64.obj
@@ -0,0 +1,20 @@
+v -0.34047064 -0.39925597 0.27637473
+v 0.00000000 -0.50988159 -0.30286852
+v -0.00000000 0.06936166 -0.66086054
+v -0.34047064 0.53797929 -0.30286852
+v -0.55089306 0.24835767 0.27637473
+v 0.34047064 -0.39925597 0.27637473
+v 0.55089306 0.24835767 0.27637473
+v 0.34047064 0.53797929 -0.30286852
+v 0.00000000 0.64860491 0.27637473
+v 0.00000000 -0.98224695 0.18759247
+f 1 6 7 9 5
+f 1 5 4 3 2
+f 1 2 10
+f 1 10 6
+f 2 3 8 7 6
+f 2 6 10
+f 3 4 8
+f 4 5 9
+f 4 9 8
+f 7 8 9
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n65.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n65.obj
new file mode 100644
index 00000000..e5e0ba78
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n65.obj
@@ -0,0 +1,29 @@
+v -0.35007002 -0.41770024 0.49544036
+v -0.70014004 0.18863882 0.49544036
+v -0.35007002 0.79497788 0.49544036
+v 0.35007002 0.79497788 0.49544036
+v 0.70014004 0.18863882 0.49544036
+v 0.35007002 -0.41770024 0.49544036
+v -0.70014004 -0.21558722 -0.07622159
+v 0.00000000 0.99709090 -0.07622159
+v 0.70014004 -0.21558722 -0.07622159
+v -0.35007002 -0.01347420 -0.64788354
+v 0.00000000 0.59286486 -0.64788354
+v 0.35007002 -0.01347420 -0.64788354
+v -0.00000000 -0.88929729 0.11433239
+v -0.35007002 -0.68718427 -0.45732956
+v 0.35007002 -0.68718427 -0.45732956
+f 1 6 5 4 3 2
+f 1 2 7
+f 1 7 14 13
+f 1 13 6
+f 2 3 8 11 10 7
+f 3 4 8
+f 4 5 9 12 11 8
+f 5 6 9
+f 6 13 15 9
+f 7 10 14
+f 9 15 12
+f 10 11 12
+f 10 12 15 14
+f 13 14 15
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n66.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n66.obj
new file mode 100644
index 00000000..8bcd109e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n66.obj
@@ -0,0 +1,50 @@
+v -0.15528707 -0.51338206 0.61130639
+v -0.51338206 -0.15528707 0.61130639
+v -0.51338206 0.35113572 0.61130639
+v -0.15528707 0.70923071 0.61130639
+v 0.35113572 0.70923071 0.61130639
+v 0.70923071 0.35113572 0.61130639
+v 0.70923071 -0.15528707 0.61130639
+v 0.35113572 -0.51338206 0.61130639
+v 0.09792433 -0.76659346 0.25321140
+v -0.76659346 0.09792433 0.25321140
+v 0.09792433 0.96244211 0.25321140
+v 0.96244211 0.09792433 0.25321140
+v 0.09792433 -0.76659346 -0.25321140
+v -0.76659346 0.09792433 -0.25321140
+v 0.09792433 0.96244211 -0.25321140
+v 0.96244211 0.09792433 -0.25321140
+v -0.15528707 -0.51338206 -0.61130639
+v -0.51338206 -0.15528707 -0.61130639
+v -0.51338206 0.35113572 -0.61130639
+v -0.15528707 0.70923071 -0.61130639
+v 0.35113572 0.70923071 -0.61130639
+v 0.70923071 0.35113572 -0.61130639
+v 0.70923071 -0.15528707 -0.61130639
+v 0.35113572 -0.51338206 -0.61130639
+v -0.33433456 -0.84075736 0.00000000
+v -0.58754596 -0.58754596 0.35809499
+v -0.84075736 -0.33433456 0.00000000
+v -0.58754596 -0.58754596 -0.35809499
+f 1 9 8
+f 1 8 7 6 5 4 3 2
+f 1 2 26
+f 1 26 25 9
+f 2 3 10
+f 2 10 27 26
+f 3 4 11 15 20 19 14 10
+f 4 5 11
+f 5 6 12 16 22 21 15 11
+f 6 7 12
+f 7 8 9 13 24 23 16 12
+f 9 25 13
+f 10 14 27
+f 13 17 24
+f 13 25 28 17
+f 14 19 18
+f 14 18 28 27
+f 15 21 20
+f 16 23 22
+f 17 18 19 20 21 22 23 24
+f 17 28 18
+f 25 26 27 28
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n67.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n67.obj
new file mode 100644
index 00000000..58572003
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n67.obj
@@ -0,0 +1,62 @@
+v -0.24502111 -0.59153329 0.59153329
+v -0.59153329 -0.24502111 0.59153329
+v -0.59153329 0.24502111 0.59153329
+v -0.24502111 0.59153329 0.59153329
+v 0.24502111 0.59153329 0.59153329
+v 0.59153329 0.24502111 0.59153329
+v 0.59153329 -0.24502111 0.59153329
+v 0.24502111 -0.59153329 0.59153329
+v 0.00000000 -0.83655440 0.24502111
+v -0.83655441 0.00000000 0.24502111
+v 0.00000000 0.83655440 0.24502111
+v 0.83655441 -0.00000000 0.24502111
+v -0.00000000 -0.83655440 -0.24502111
+v -0.83655441 0.00000000 -0.24502111
+v 0.00000000 0.83655440 -0.24502111
+v 0.83655441 -0.00000000 -0.24502111
+v -0.24502111 -0.59153329 -0.59153329
+v -0.59153329 -0.24502111 -0.59153329
+v -0.59153329 0.24502111 -0.59153329
+v -0.24502111 0.59153329 -0.59153329
+v 0.24502111 0.59153329 -0.59153329
+v 0.59153329 0.24502111 -0.59153329
+v 0.59153329 -0.24502111 -0.59153329
+v 0.24502111 -0.59153329 -0.59153329
+v -0.41827720 -0.90831943 -0.00000000
+v -0.66329831 -0.66329831 0.34651218
+v -0.90831943 -0.41827720 0.00000000
+v -0.66329832 -0.66329831 -0.34651218
+v 0.41827720 0.90831943 -0.00000000
+v 0.66329831 0.66329831 0.34651218
+v 0.90831943 0.41827720 0.00000000
+v 0.66329831 0.66329831 -0.34651218
+f 1 9 8
+f 1 8 7 6 5 4 3 2
+f 1 2 26
+f 1 26 25 9
+f 2 3 10
+f 2 10 27 26
+f 3 4 11 15 20 19 14 10
+f 4 5 11
+f 5 6 30
+f 5 30 29 11
+f 6 7 12
+f 6 12 31 30
+f 7 8 9 13 24 23 16 12
+f 9 25 13
+f 10 14 27
+f 11 29 15
+f 12 16 31
+f 13 17 24
+f 13 25 28 17
+f 14 19 18
+f 14 18 28 27
+f 15 21 20
+f 15 29 32 21
+f 16 23 22
+f 16 22 32 31
+f 17 18 19 20 21 22 23 24
+f 17 28 18
+f 21 32 22
+f 25 26 27 28
+f 29 30 31 32
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n68.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n68.obj
new file mode 100644
index 00000000..fbf46178
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n68.obj
@@ -0,0 +1,107 @@
+v -0.15790394 -0.48597835 0.71307107
+v -0.41339788 -0.30035114 0.71307107
+v -0.51098788 0.00000000 0.71307107
+v -0.41339788 0.30035114 0.71307107
+v -0.15790394 0.48597835 0.71307107
+v 0.15790394 0.48597835 0.71307107
+v 0.41339788 0.30035114 0.71307107
+v 0.51098788 0.00000000 0.71307107
+v 0.41339788 -0.30035114 0.71307107
+v 0.15790394 -0.48597835 0.71307107
+v -0.00000000 -0.70331448 0.54704104
+v -0.00000000 -0.86934451 0.27839881
+v 0.15790394 -0.92065061 0.00975659
+v 0.41339788 -0.83763559 -0.15627344
+v 0.66889182 -0.65200838 -0.15627344
+v 0.82679576 -0.43467225 0.00975659
+v 0.82679576 -0.26864223 0.27839881
+v 0.66889182 -0.21733613 0.54704104
+v -0.15790394 -0.92065061 0.00975659
+v -0.41339788 -0.83763559 -0.15627344
+v -0.66889182 -0.65200838 -0.15627344
+v -0.82679576 -0.43467225 0.00975659
+v -0.82679576 -0.26864223 0.27839881
+v -0.66889182 -0.21733613 0.54704104
+v -0.92438576 -0.13432111 0.00975659
+v -0.92438576 0.13432111 -0.15627344
+v -0.82679576 0.43467225 -0.15627344
+v -0.66889182 0.65200838 0.00975659
+v -0.51098788 0.70331448 0.27839881
+v -0.41339788 0.56899337 0.54704104
+v -0.41339788 0.83763559 0.00975659
+v -0.15790394 0.92065061 -0.15627344
+v 0.15790394 0.92065060 -0.15627344
+v 0.41339788 0.83763559 0.00975659
+v 0.51098788 0.70331448 0.27839881
+v 0.41339788 0.56899337 0.54704104
+v 0.66889182 0.65200838 0.00975659
+v 0.82679576 0.43467225 -0.15627344
+v 0.92438576 0.13432111 -0.15627344
+v 0.92438576 -0.13432111 0.00975659
+v 0.51098788 -0.70331448 -0.42491566
+v 0.41339788 -0.56899337 -0.69355789
+v 0.15790394 -0.48597835 -0.85958792
+v -0.15790394 -0.48597835 -0.85958792
+v -0.41339788 -0.56899337 -0.69355789
+v -0.51098788 -0.70331448 -0.42491566
+v -0.41339788 -0.30035114 -0.85958792
+v -0.51098788 0.00000000 -0.85958792
+v -0.66889182 0.21733613 -0.69355789
+v -0.82679576 0.26864223 -0.42491566
+v -0.41339788 0.30035114 -0.85958792
+v -0.15790394 0.48597835 -0.85958792
+v 0.00000000 0.70331448 -0.69355789
+v 0.00000000 0.86934451 -0.42491566
+v 0.15790394 0.48597835 -0.85958792
+v 0.41339788 0.30035114 -0.85958792
+v 0.66889182 0.21733613 -0.69355789
+v 0.82679576 0.26864223 -0.42491566
+v 0.51098788 -0.00000000 -0.85958792
+v 0.41339788 -0.30035114 -0.85958792
+v -0.15790394 -0.21733613 0.87910109
+v 0.15790394 -0.21733613 0.87910109
+v 0.25549394 0.08301501 0.87910109
+v 0.00000000 0.26864223 0.87910109
+v -0.25549394 0.08301501 0.87910109
+f 1 2 24 23 22 21 20 19 12 11
+f 1 11 10
+f 1 10 62 61
+f 1 61 2
+f 2 3 24
+f 2 61 65 3
+f 3 4 30 29 28 27 26 25 23 24
+f 3 65 4
+f 4 5 30
+f 4 65 64 5
+f 5 6 36 35 34 33 32 31 29 30
+f 5 64 6
+f 6 7 36
+f 6 64 63 7
+f 7 8 18 17 40 39 38 37 35 36
+f 7 63 8
+f 8 9 18
+f 8 63 62 9
+f 9 10 11 12 13 14 15 16 17 18
+f 9 62 10
+f 12 19 13
+f 13 19 20 46 45 44 43 42 41 14
+f 14 41 15
+f 15 41 42 60 59 57 58 39 40 16
+f 16 40 17
+f 20 21 46
+f 21 22 25 26 50 49 48 47 45 46
+f 22 23 25
+f 26 27 50
+f 27 28 31 32 54 53 52 51 49 50
+f 28 29 31
+f 32 33 54
+f 33 34 37 38 58 57 56 55 53 54
+f 34 35 37
+f 38 39 58
+f 42 43 60
+f 43 44 47 48 51 52 55 56 59 60
+f 44 45 47
+f 48 49 51
+f 52 53 55
+f 56 57 59
+f 61 62 63 64 65
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n69.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n69.obj
new file mode 100644
index 00000000..2e11a375
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n69.obj
@@ -0,0 +1,122 @@
+v -0.15957569 -0.49112347 0.79465447
+v -0.41777458 -0.30353100 0.79465447
+v -0.51639778 0.00000000 0.79465447
+v -0.41777458 0.30353100 0.79465447
+v -0.15957569 0.49112347 0.79465447
+v 0.15957569 0.49112347 0.79465447
+v 0.41777458 0.30353100 0.79465447
+v 0.51639778 0.00000000 0.79465447
+v 0.41777458 -0.30353100 0.79465447
+v 0.15957569 -0.49112347 0.79465447
+v -0.00000000 -0.71076057 0.62686666
+v -0.00000000 -0.87854838 0.35538028
+v 0.15957569 -0.93039766 0.08389390
+v 0.41777458 -0.84650376 -0.08389390
+v 0.67597347 -0.65891128 -0.08389390
+v 0.83554916 -0.43927419 0.08389390
+v 0.83554916 -0.27148638 0.35538028
+v 0.67597347 -0.21963709 0.62686666
+v -0.15957569 -0.93039766 0.08389390
+v -0.41777458 -0.84650376 -0.08389390
+v -0.67597347 -0.65891128 -0.08389390
+v -0.83554916 -0.43927419 0.08389391
+v -0.83554916 -0.27148638 0.35538028
+v -0.67597347 -0.21963709 0.62686666
+v -0.93417236 -0.13574319 0.08389390
+v -0.93417236 0.13574319 -0.08389390
+v -0.83554916 0.43927419 -0.08389390
+v -0.67597347 0.65891128 0.08389390
+v -0.51639778 0.71076057 0.35538028
+v -0.41777458 0.57501738 0.62686666
+v -0.41777458 0.84650376 0.08389390
+v -0.15957569 0.93039766 -0.08389390
+v 0.15957569 0.93039766 -0.08389390
+v 0.41777458 0.84650376 0.08389390
+v 0.51639778 0.71076057 0.35538028
+v 0.41777458 0.57501738 0.62686666
+v 0.67597347 0.65891128 0.08389390
+v 0.83554916 0.43927419 -0.08389390
+v 0.93417236 0.13574319 -0.08389390
+v 0.93417236 -0.13574319 0.08389390
+v 0.51639778 -0.71076057 -0.35538028
+v 0.41777458 -0.57501738 -0.62686666
+v 0.15957569 -0.49112347 -0.79465447
+v -0.15957569 -0.49112347 -0.79465447
+v -0.41777458 -0.57501738 -0.62686666
+v -0.51639778 -0.71076057 -0.35538028
+v -0.41777458 -0.30353100 -0.79465447
+v -0.51639778 0.00000000 -0.79465447
+v -0.67597347 0.21963709 -0.62686666
+v -0.83554916 0.27148638 -0.35538028
+v -0.41777458 0.30353100 -0.79465447
+v -0.15957569 0.49112347 -0.79465447
+v -0.00000000 0.71076057 -0.62686666
+v -0.00000000 0.87854838 -0.35538028
+v 0.15957569 0.49112347 -0.79465447
+v 0.41777458 0.30353100 -0.79465447
+v 0.67597347 0.21963709 -0.62686666
+v 0.83554916 0.27148638 -0.35538028
+v 0.51639778 -0.00000000 -0.79465447
+v 0.41777458 -0.30353100 -0.79465447
+v -0.15957569 -0.21963709 0.96244228
+v 0.15957569 -0.21963709 0.96244228
+v 0.25819889 0.08389390 0.96244228
+v -0.00000000 0.27148638 0.96244228
+v -0.25819889 0.08389390 0.96244228
+v -0.00000000 -0.27148638 -0.96244228
+v -0.25819889 -0.08389390 -0.96244228
+v -0.15957569 0.21963709 -0.96244228
+v 0.15957569 0.21963709 -0.96244228
+v 0.25819889 -0.08389390 -0.96244228
+f 1 2 24 23 22 21 20 19 12 11
+f 1 11 10
+f 1 10 62 61
+f 1 61 2
+f 2 3 24
+f 2 61 65 3
+f 3 4 30 29 28 27 26 25 23 24
+f 3 65 4
+f 4 5 30
+f 4 65 64 5
+f 5 6 36 35 34 33 32 31 29 30
+f 5 64 6
+f 6 7 36
+f 6 64 63 7
+f 7 8 18 17 40 39 38 37 35 36
+f 7 63 8
+f 8 9 18
+f 8 63 62 9
+f 9 10 11 12 13 14 15 16 17 18
+f 9 62 10
+f 12 19 13
+f 13 19 20 46 45 44 43 42 41 14
+f 14 41 15
+f 15 41 42 60 59 57 58 39 40 16
+f 16 40 17
+f 20 21 46
+f 21 22 25 26 50 49 48 47 45 46
+f 22 23 25
+f 26 27 50
+f 27 28 31 32 54 53 52 51 49 50
+f 28 29 31
+f 32 33 54
+f 33 34 37 38 58 57 56 55 53 54
+f 34 35 37
+f 38 39 58
+f 42 43 60
+f 43 44 66
+f 43 66 70 60
+f 44 45 47
+f 44 47 67 66
+f 47 48 67
+f 48 49 51
+f 48 51 68 67
+f 51 52 68
+f 52 53 55
+f 52 55 69 68
+f 55 56 69
+f 56 57 59
+f 56 59 70 69
+f 59 60 70
+f 61 62 63 64 65
+f 66 67 68 69 70
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n70.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n70.obj
new file mode 100644
index 00000000..62c1da41
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n70.obj
@@ -0,0 +1,122 @@
+v -0.21398275 -0.46330675 0.74252390
+v -0.46736036 -0.27921715 0.74252390
+v -0.56414199 0.01864609 0.74252390
+v -0.46736036 0.31650933 0.74252390
+v -0.21398275 0.50059894 0.74252390
+v 0.09920920 0.50059894 0.74252390
+v 0.35258680 0.31650933 0.74252390
+v 0.44936843 0.01864609 0.74252390
+v 0.35258680 -0.27921715 0.74252390
+v 0.09920920 -0.46330675 0.74252390
+v -0.05738678 -0.67884262 0.57786915
+v -0.05738678 -0.84349737 0.31145217
+v 0.09920920 -0.89437848 0.04503519
+v 0.35258680 -0.81205111 -0.11961956
+v 0.60596441 -0.62796150 -0.11961956
+v 0.76256038 -0.41242564 0.04503519
+v 0.76256038 -0.24777089 0.31145217
+v 0.60596441 -0.19688977 0.57786915
+v -0.21398275 -0.89437848 0.04503519
+v -0.46736036 -0.81205111 -0.11961956
+v -0.72073796 -0.62796150 -0.11961956
+v -0.87733393 -0.41242564 0.04503519
+v -0.87733393 -0.24777089 0.31145217
+v -0.72073796 -0.19688977 0.57786915
+v -0.97411557 -0.11456240 0.04503519
+v -0.97411557 0.15185459 -0.11961956
+v -0.87733393 0.44971782 -0.11961956
+v -0.72073796 0.66525369 0.04503519
+v -0.56414199 0.71613481 0.31145217
+v -0.46736036 0.58292632 0.57786915
+v -0.46736036 0.84934330 0.04503519
+v -0.21398275 0.93167067 -0.11961956
+v 0.09920920 0.93167067 -0.11961956
+v 0.35258680 0.84934330 0.04503519
+v 0.44936843 0.71613481 0.31145217
+v 0.35258680 0.58292632 0.57786915
+v 0.60596441 0.66525369 0.04503519
+v 0.76256038 0.44971782 -0.11961956
+v 0.85934201 0.15185458 -0.11961956
+v 0.85934201 -0.11456240 0.04503519
+v 0.44936843 -0.67884262 -0.38603654
+v 0.35258680 -0.54563413 -0.65245352
+v 0.09920920 -0.46330675 -0.81710827
+v -0.21398275 -0.46330675 -0.81710827
+v -0.46736036 -0.54563413 -0.65245352
+v -0.56414199 -0.67884262 -0.38603654
+v -0.46736035 -0.27921715 -0.81710827
+v -0.56414199 0.01864609 -0.81710827
+v -0.72073796 0.23418196 -0.65245352
+v -0.87733393 0.28506308 -0.38603654
+v -0.46736035 0.31650933 -0.81710827
+v -0.21398275 0.50059894 -0.81710827
+v -0.05738678 0.71613481 -0.65245352
+v -0.05738678 0.88078955 -0.38603654
+v 0.09920919 0.50059894 -0.81710827
+v 0.35258680 0.31650933 -0.81710827
+v 0.60596441 0.23418196 -0.65245353
+v 0.76256038 0.28506307 -0.38603654
+v 0.44936843 0.01864609 -0.81710827
+v 0.35258680 -0.27921715 -0.81710827
+v -0.21398275 -0.19688977 0.90717865
+v 0.09920920 -0.19688977 0.90717865
+v 0.19599083 0.10097347 0.90717865
+v -0.05738678 0.28506308 0.90717865
+v -0.31076438 0.10097347 0.90717865
+v 0.78931016 -0.42111717 -0.26689125
+v 0.63271419 -0.47199828 -0.53330823
+v 0.63271419 -0.20558130 -0.69796298
+v 0.78931016 0.00995456 -0.53330823
+v 0.88609180 -0.12325393 -0.26689125
+f 1 2 24 23 22 21 20 19 12 11
+f 1 11 10
+f 1 10 62 61
+f 1 61 2
+f 2 3 24
+f 2 61 65 3
+f 3 4 30 29 28 27 26 25 23 24
+f 3 65 4
+f 4 5 30
+f 4 65 64 5
+f 5 6 36 35 34 33 32 31 29 30
+f 5 64 6
+f 6 7 36
+f 6 64 63 7
+f 7 8 18 17 40 39 38 37 35 36
+f 7 63 8
+f 8 9 18
+f 8 63 62 9
+f 9 10 11 12 13 14 15 16 17 18
+f 9 62 10
+f 12 19 13
+f 13 19 20 46 45 44 43 42 41 14
+f 14 41 15
+f 15 41 67 66
+f 15 66 16
+f 16 40 17
+f 16 66 70 40
+f 20 21 46
+f 21 22 25 26 50 49 48 47 45 46
+f 22 23 25
+f 26 27 50
+f 27 28 31 32 54 53 52 51 49 50
+f 28 29 31
+f 32 33 54
+f 33 34 37 38 58 57 56 55 53 54
+f 34 35 37
+f 38 39 58
+f 39 40 70
+f 39 70 69 58
+f 41 42 67
+f 42 43 60
+f 42 60 68 67
+f 43 44 47 48 51 52 55 56 59 60
+f 44 45 47
+f 48 49 51
+f 52 53 55
+f 56 57 59
+f 57 58 69
+f 57 69 68 59
+f 59 68 60
+f 61 62 63 64 65
+f 66 67 68 69 70
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n71.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n71.obj
new file mode 100644
index 00000000..331009af
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n71.obj
@@ -0,0 +1,137 @@
+v -0.17974856 -0.51787354 0.78493349
+v -0.43698164 -0.33098277 0.78493349
+v -0.53523593 -0.02858715 0.78493349
+v -0.43698164 0.27380847 0.78493349
+v -0.17974856 0.46069924 0.78493349
+v 0.13820900 0.46069924 0.78493349
+v 0.39544208 0.27380847 0.78493349
+v 0.49369637 -0.02858715 0.78493349
+v 0.39544208 -0.33098277 0.78493349
+v 0.13820900 -0.51787354 0.78493349
+v -0.02076978 -0.73668906 0.61777331
+v -0.02076978 -0.90384925 0.34730244
+v 0.13820900 -0.95550458 0.07683158
+v 0.39544208 -0.87192449 -0.09032860
+v 0.65267515 -0.68503372 -0.09032860
+v 0.81165394 -0.46621820 0.07683158
+v 0.81165394 -0.29905801 0.34730244
+v 0.65267515 -0.24740267 0.61777331
+v -0.17974856 -0.95550458 0.07683158
+v -0.43698164 -0.87192449 -0.09032860
+v -0.69421472 -0.68503372 -0.09032860
+v -0.85319350 -0.46621820 0.07683158
+v -0.85319350 -0.29905801 0.34730244
+v -0.69421472 -0.24740267 0.61777331
+v -0.95144779 -0.16382258 0.07683158
+v -0.95144779 0.10664828 -0.09032860
+v -0.85319350 0.40904390 -0.09032860
+v -0.69421472 0.62785942 0.07683158
+v -0.53523593 0.67951476 0.34730244
+v -0.43698164 0.54427933 0.61777331
+v -0.43698164 0.81475019 0.07683158
+v -0.17974856 0.89833028 -0.09032860
+v 0.13820900 0.89833028 -0.09032860
+v 0.39544208 0.81475019 0.07683158
+v 0.49369637 0.67951476 0.34730244
+v 0.39544208 0.54427933 0.61777331
+v 0.65267515 0.62785942 0.07683158
+v 0.81165394 0.40904390 -0.09032860
+v 0.90990823 0.10664828 -0.09032860
+v 0.90990823 -0.16382258 0.07683158
+v 0.49369637 -0.73668906 -0.36079947
+v 0.39544208 -0.60145363 -0.63127033
+v 0.13820900 -0.51787354 -0.79843051
+v -0.17974856 -0.51787354 -0.79843051
+v -0.43698164 -0.60145363 -0.63127033
+v -0.53523593 -0.73668906 -0.36079947
+v -0.43698164 -0.33098277 -0.79843051
+v -0.53523593 -0.02858715 -0.79843051
+v -0.69421472 0.19022837 -0.63127033
+v -0.85319350 0.24188371 -0.36079947
+v -0.43698164 0.27380847 -0.79843051
+v -0.17974856 0.46069924 -0.79843051
+v -0.02076978 0.67951476 -0.63127033
+v -0.02076978 0.84667494 -0.36079947
+v 0.13820900 0.46069923 -0.79843051
+v 0.39544208 0.27380847 -0.79843051
+v 0.65267515 0.19022837 -0.63127033
+v 0.81165394 0.24188371 -0.36079947
+v 0.49369637 -0.02858715 -0.79843051
+v 0.39544208 -0.33098277 -0.79843051
+v -0.17974856 -0.24740267 0.95209368
+v 0.13820900 -0.24740267 0.95209368
+v 0.23646329 0.05499294 0.95209368
+v -0.02076978 0.24188371 0.95209368
+v -0.27800286 0.05499294 0.95209368
+v 0.83881076 -0.47504198 -0.23984122
+v 0.67983197 -0.52669732 -0.51031208
+v 0.67983197 -0.25622646 -0.67747227
+v 0.83881076 -0.03741094 -0.51031208
+v 0.93706505 -0.17264637 -0.23984122
+v -0.71099855 0.65096039 -0.23984122
+v -0.45376548 0.83785116 -0.23984122
+v -0.29478669 0.78619582 -0.51031208
+v -0.45376548 0.56738030 -0.67747227
+v -0.71099855 0.48380020 -0.51031208
+f 1 2 24 23 22 21 20 19 12 11
+f 1 11 10
+f 1 10 62 61
+f 1 61 2
+f 2 3 24
+f 2 61 65 3
+f 3 4 30 29 28 27 26 25 23 24
+f 3 65 4
+f 4 5 30
+f 4 65 64 5
+f 5 6 36 35 34 33 32 31 29 30
+f 5 64 6
+f 6 7 36
+f 6 64 63 7
+f 7 8 18 17 40 39 38 37 35 36
+f 7 63 8
+f 8 9 18
+f 8 63 62 9
+f 9 10 11 12 13 14 15 16 17 18
+f 9 62 10
+f 12 19 13
+f 13 19 20 46 45 44 43 42 41 14
+f 14 41 15
+f 15 41 67 66
+f 15 66 16
+f 16 40 17
+f 16 66 70 40
+f 20 21 46
+f 21 22 25 26 50 49 48 47 45 46
+f 22 23 25
+f 26 27 50
+f 27 28 71
+f 27 71 75 50
+f 28 29 31
+f 28 31 72 71
+f 31 32 72
+f 32 33 54
+f 32 54 73 72
+f 33 34 37 38 58 57 56 55 53 54
+f 34 35 37
+f 38 39 58
+f 39 40 70
+f 39 70 69 58
+f 41 42 67
+f 42 43 60
+f 42 60 68 67
+f 43 44 47 48 51 52 55 56 59 60
+f 44 45 47
+f 48 49 51
+f 49 50 75
+f 49 75 74 51
+f 51 74 52
+f 52 53 55
+f 52 74 73 53
+f 53 73 54
+f 56 57 59
+f 57 58 69
+f 57 69 68 59
+f 59 68 60
+f 61 62 63 64 65
+f 66 67 68 69 70
+f 71 72 73 74 75
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n72.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n72.obj
new file mode 100644
index 00000000..ad80a06d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n72.obj
@@ -0,0 +1,122 @@
+v -0.22391898 -0.68915176 0.68915176
+v -0.58622750 -0.42591921 0.68915176
+v -0.72461704 0.00000000 0.68915176
+v -0.58622750 0.42591921 0.68915176
+v -0.22391898 0.68915176 0.68915176
+v 0.22391898 0.68915176 0.68915176
+v 0.58622750 0.42591921 0.68915176
+v 0.72461704 0.00000000 0.68915176
+v 0.58622750 -0.42591921 0.68915176
+v 0.22391898 -0.68915176 0.68915176
+v -0.22391898 -0.92459411 0.30819804
+v -0.81014648 -0.49867490 0.30819804
+v -0.94853602 -0.07275569 0.30819804
+v -0.72461704 0.61639607 0.30819804
+v -0.36230852 0.87962862 0.30819804
+v 0.36230852 0.87962862 0.30819804
+v 0.72461704 0.61639607 0.30819804
+v 0.94853602 -0.07275569 0.30819804
+v 0.81014648 -0.49867490 0.30819804
+v 0.22391898 -0.92459411 0.30819804
+v 0.00000000 -0.99734979 -0.07275569
+v -0.58622750 -0.80687293 0.07275569
+v -0.94853602 0.30819804 0.07275569
+v 0.00000000 0.99734979 0.07275569
+v 0.94853602 0.30819804 0.07275569
+v 0.58622750 -0.80687293 0.07275569
+v -0.36230852 -0.87962862 -0.30819804
+v -0.22391898 -0.68915176 -0.68915176
+v -0.22391898 -0.30819804 -0.92459411
+v -0.36230852 0.11772117 -0.92459411
+v -0.58622750 0.42591921 -0.68915176
+v -0.81014648 0.49867490 -0.30819804
+v 0.36230852 -0.87962862 -0.30819804
+v 0.22391898 -0.68915176 -0.68915176
+v 0.22391898 -0.30819804 -0.92459411
+v 0.36230852 0.11772117 -0.92459411
+v 0.58622750 0.42591921 -0.68915176
+v 0.81014648 0.49867490 -0.30819804
+v -0.00000000 0.38095372 -0.92459410
+v -0.22391898 0.68915176 -0.68915176
+v 0.22391898 0.68915176 -0.68915176
+v -0.22391898 0.92459411 -0.30819804
+v 0.22391898 0.92459411 -0.30819804
+v 0.58622750 0.80687293 -0.07275569
+v -0.58622750 0.80687293 -0.07275569
+v 0.00000000 -0.38095372 0.92459411
+v 0.36230852 -0.11772117 0.92459411
+v 0.22391898 0.30819804 0.92459411
+v -0.22391898 0.30819804 0.92459411
+v -0.36230852 -0.11772117 0.92459411
+v -0.94853602 -0.30819803 -0.07275569
+v -0.94853602 0.07275569 -0.30819804
+v -0.72461704 0.00000000 -0.68915176
+v -0.58622750 -0.42591921 -0.68915176
+v -0.72461704 -0.61639607 -0.30819804
+v 0.98678595 -0.08518384 -0.13783035
+v 0.84839641 -0.51110305 -0.13783035
+v 0.62447743 -0.58385874 -0.51878407
+v 0.62447743 -0.20290502 -0.75422642
+v 0.84839641 0.10529302 -0.51878407
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 46
+f 1 46 50 2
+f 2 3 13 12
+f 2 50 3
+f 3 4 14 23 13
+f 3 50 49 4
+f 4 5 15 14
+f 4 49 5
+f 5 6 16 24 15
+f 5 49 48 6
+f 6 7 17 16
+f 6 48 7
+f 7 8 18 25 17
+f 7 48 47 8
+f 8 9 19 18
+f 8 47 9
+f 9 10 20 26 19
+f 9 47 46 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 51
+f 12 51 55 22
+f 13 23 52 51
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 57 56
+f 18 56 25
+f 19 26 57
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 55 27
+f 23 32 52
+f 24 43 42
+f 25 56 60 38
+f 26 33 58 57
+f 27 55 54 28
+f 28 29 35 34
+f 28 54 29
+f 29 30 39 36 35
+f 29 54 53 30
+f 30 31 40 39
+f 30 53 31
+f 31 32 45 42 40
+f 31 53 52 32
+f 33 34 58
+f 34 35 59 58
+f 35 36 59
+f 36 39 41 37
+f 36 37 60 59
+f 37 41 43 44 38
+f 37 38 60
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
+f 56 57 58 59 60
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n73.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n73.obj
new file mode 100644
index 00000000..d65e44ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n73.obj
@@ -0,0 +1,122 @@
+v -0.22391898 -0.68915175 0.68915175
+v -0.58622750 -0.42591921 0.68915175
+v -0.72461704 -0.00000000 0.68915175
+v -0.58622750 0.42591921 0.68915175
+v -0.22391898 0.68915175 0.68915175
+v 0.22391898 0.68915175 0.68915175
+v 0.58622749 0.42591921 0.68915175
+v 0.72461703 -0.00000000 0.68915175
+v 0.58622749 -0.42591921 0.68915175
+v 0.22391898 -0.68915175 0.68915175
+v -0.22391898 -0.92459410 0.30819803
+v -0.81014648 -0.49867489 0.30819803
+v -0.94853602 -0.07275569 0.30819803
+v -0.72461704 0.61639607 0.30819803
+v -0.36230852 0.87962861 0.30819803
+v 0.36230852 0.87962861 0.30819803
+v 0.72461703 0.61639607 0.30819803
+v 0.94853601 -0.07275569 0.30819803
+v 0.81014647 -0.49867489 0.30819803
+v 0.22391898 -0.92459410 0.30819803
+v -0.00000000 -0.99734979 -0.07275569
+v -0.58622750 -0.80687293 0.07275569
+v -0.94853602 -0.30819803 -0.07275569
+v -0.94853602 0.30819803 0.07275569
+v -0.58622750 0.80687293 -0.07275569
+v -0.00000000 0.99734979 0.07275569
+v 0.58622749 0.80687293 -0.07275569
+v 0.94853601 0.30819803 0.07275569
+v 0.94853601 -0.30819803 -0.07275569
+v 0.58622749 -0.80687293 0.07275569
+v 0.36230852 -0.87962861 -0.30819803
+v -0.36230852 -0.87962861 -0.30819803
+v -0.72461704 -0.61639607 -0.30819803
+v -0.94853601 0.07275569 -0.30819803
+v -0.81014648 0.49867489 -0.30819803
+v -0.22391898 0.92459410 -0.30819803
+v 0.22391898 0.92459410 -0.30819803
+v 0.81014647 0.49867489 -0.30819803
+v 0.94853601 0.07275569 -0.30819803
+v 0.72461703 -0.61639607 -0.30819803
+v -0.22391898 -0.68915175 -0.68915175
+v -0.58622750 -0.42591921 -0.68915175
+v -0.72461703 0.00000000 -0.68915175
+v -0.58622748 0.42591921 -0.68915175
+v -0.22391896 0.68915175 -0.68915175
+v 0.22391899 0.68915175 -0.68915175
+v 0.58622751 0.42591921 -0.68915175
+v 0.72461704 0.00000000 -0.68915175
+v 0.58622750 -0.42591921 -0.68915175
+v 0.22391898 -0.68915175 -0.68915175
+v -0.22391898 -0.30819803 0.92459410
+v 0.22391898 -0.30819803 0.92459410
+v 0.36230852 0.11772117 0.92459410
+v -0.00000000 0.38095372 0.92459410
+v -0.36230852 0.11772117 0.92459410
+v 0.00000000 -0.38095372 -0.92459410
+v -0.36230851 -0.11772117 -0.92459410
+v -0.22391897 0.30819803 -0.92459410
+v 0.22391899 0.30819803 -0.92459410
+v 0.36230852 -0.11772117 -0.92459410
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 52 51
+f 1 51 2
+f 2 3 13 12
+f 2 51 55 3
+f 3 4 14 24 13
+f 3 55 4
+f 4 5 15 14
+f 4 55 54 5
+f 5 6 16 26 15
+f 5 54 6
+f 6 7 17 16
+f 6 54 53 7
+f 7 8 18 28 17
+f 7 53 8
+f 8 9 19 18
+f 8 53 52 9
+f 9 10 20 30 19
+f 9 52 10
+f 11 22 32 21
+f 11 21 20
+f 12 13 23
+f 12 23 33 22
+f 13 24 34 23
+f 14 15 25
+f 14 25 35 24
+f 15 26 36 25
+f 16 17 27
+f 16 27 37 26
+f 17 28 38 27
+f 18 19 29
+f 18 29 39 28
+f 19 30 40 29
+f 20 21 31 30
+f 21 32 41 50 31
+f 22 33 32
+f 23 34 43 42 33
+f 24 35 34
+f 25 36 45 44 35
+f 26 37 36
+f 27 38 47 46 37
+f 28 39 38
+f 29 40 49 48 39
+f 30 31 40
+f 31 50 49 40
+f 32 33 42 41
+f 34 35 44 43
+f 36 37 46 45
+f 38 39 48 47
+f 41 42 57 56
+f 41 56 50
+f 42 43 57
+f 43 44 58 57
+f 44 45 58
+f 45 46 59 58
+f 46 47 59
+f 47 48 60 59
+f 48 49 60
+f 49 50 56 60
+f 51 52 53 54 55
+f 56 57 58 59 60
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n74.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n74.obj
new file mode 100644
index 00000000..b0a6ff58
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n74.obj
@@ -0,0 +1,122 @@
+v -0.22391898 -0.68915176 0.68915176
+v -0.58622750 -0.42591921 0.68915176
+v -0.72461704 -0.00000000 0.68915176
+v -0.58622750 0.42591921 0.68915176
+v -0.22391898 0.68915176 0.68915176
+v 0.22391898 0.68915176 0.68915176
+v 0.58622750 0.42591921 0.68915176
+v 0.72461704 -0.00000000 0.68915176
+v 0.58622750 -0.42591921 0.68915176
+v 0.22391898 -0.68915176 0.68915176
+v -0.22391898 -0.92459411 0.30819804
+v -0.81014648 -0.49867490 0.30819804
+v -0.94853602 -0.07275569 0.30819804
+v -0.72461704 0.61639607 0.30819804
+v -0.36230852 0.87962862 0.30819804
+v 0.36230852 0.87962862 0.30819804
+v 0.72461704 0.61639607 0.30819804
+v 0.94853602 -0.07275569 0.30819804
+v 0.81014648 -0.49867490 0.30819804
+v 0.22391898 -0.92459411 0.30819804
+v 0.00000000 -0.99734979 -0.07275569
+v -0.58622750 -0.80687293 0.07275569
+v -0.94853602 0.30819804 0.07275569
+v 0.00000000 0.99734979 0.07275569
+v 0.94853602 0.30819803 0.07275569
+v 0.58622750 -0.80687293 0.07275569
+v -0.36230852 -0.87962862 -0.30819804
+v -0.22391898 -0.68915176 -0.68915176
+v -0.22391898 -0.30819803 -0.92459411
+v -0.36230852 0.11772118 -0.92459411
+v -0.58622750 0.42591921 -0.68915176
+v -0.81014648 0.49867490 -0.30819804
+v 0.36230852 -0.87962862 -0.30819804
+v 0.22391898 -0.68915176 -0.68915176
+v 0.22391898 -0.30819804 -0.92459411
+v 0.36230852 0.11772117 -0.92459411
+v 0.58622750 0.42591921 -0.68915176
+v 0.81014648 0.49867490 -0.30819804
+v -0.00000000 0.38095372 -0.92459410
+v -0.22391898 0.68915176 -0.68915176
+v 0.22391898 0.68915176 -0.68915176
+v -0.22391898 0.92459411 -0.30819804
+v 0.22391898 0.92459411 -0.30819804
+v 0.58622750 0.80687293 -0.07275569
+v -0.58622750 0.80687293 -0.07275569
+v 0.00000000 -0.38095372 0.92459411
+v 0.36230852 -0.11772117 0.92459411
+v 0.22391898 0.30819804 0.92459411
+v -0.22391898 0.30819804 0.92459411
+v -0.36230852 -0.11772117 0.92459411
+v -0.84839641 -0.51110305 -0.13783035
+v -0.98678595 -0.08518384 -0.13783035
+v -0.84839641 0.10529302 -0.51878407
+v -0.62447743 -0.20290502 -0.75422642
+v -0.62447743 -0.58385874 -0.51878407
+v 0.98678595 -0.08518384 -0.13783035
+v 0.84839641 -0.51110305 -0.13783035
+v 0.62447743 -0.58385874 -0.51878407
+v 0.62447743 -0.20290502 -0.75422642
+v 0.84839641 0.10529302 -0.51878407
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 46
+f 1 46 50 2
+f 2 3 13 12
+f 2 50 3
+f 3 4 14 23 13
+f 3 50 49 4
+f 4 5 15 14
+f 4 49 5
+f 5 6 16 24 15
+f 5 49 48 6
+f 6 7 17 16
+f 6 48 7
+f 7 8 18 25 17
+f 7 48 47 8
+f 8 9 19 18
+f 8 47 9
+f 9 10 20 26 19
+f 9 47 46 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 52 51
+f 12 51 22
+f 13 23 52
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 57 56
+f 18 56 25
+f 19 26 57
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 51 55 27
+f 23 32 53 52
+f 24 43 42
+f 25 56 60 38
+f 26 33 58 57
+f 27 55 28
+f 28 29 35 34
+f 28 55 54 29
+f 29 30 39 36 35
+f 29 54 30
+f 30 31 40 39
+f 30 54 53 31
+f 31 32 45 42 40
+f 31 53 32
+f 33 34 58
+f 34 35 59 58
+f 35 36 59
+f 36 39 41 37
+f 36 37 60 59
+f 37 41 43 44 38
+f 37 38 60
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
+f 56 57 58 59 60
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n75.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n75.obj
new file mode 100644
index 00000000..a6eca558
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n75.obj
@@ -0,0 +1,122 @@
+v -0.22391898 -0.68915176 0.68915176
+v -0.58622750 -0.42591921 0.68915176
+v -0.72461704 -0.00000000 0.68915176
+v -0.58622750 0.42591921 0.68915176
+v -0.22391898 0.68915176 0.68915176
+v 0.22391898 0.68915176 0.68915176
+v 0.58622750 0.42591921 0.68915176
+v 0.72461704 -0.00000000 0.68915176
+v 0.58622750 -0.42591921 0.68915176
+v 0.22391898 -0.68915176 0.68915176
+v -0.22391898 -0.92459411 0.30819804
+v -0.81014648 -0.49867490 0.30819804
+v -0.94853602 -0.07275569 0.30819804
+v -0.72461704 0.61639607 0.30819804
+v -0.36230852 0.87962862 0.30819804
+v 0.36230852 0.87962862 0.30819804
+v 0.72461704 0.61639607 0.30819804
+v 0.94853602 -0.07275569 0.30819804
+v 0.81014648 -0.49867490 0.30819804
+v 0.22391898 -0.92459411 0.30819804
+v -0.00000000 -0.99734979 -0.07275569
+v -0.58622750 -0.80687293 0.07275569
+v -0.94853602 0.30819804 0.07275569
+v 0.00000000 0.99734979 0.07275569
+v 0.94853602 0.30819804 0.07275569
+v 0.58622750 -0.80687293 0.07275569
+v -0.36230852 -0.87962862 -0.30819804
+v -0.22391898 -0.68915176 -0.68915176
+v -0.22391898 -0.30819803 -0.92459411
+v -0.36230852 0.11772118 -0.92459411
+v -0.58622750 0.42591921 -0.68915176
+v -0.81014648 0.49867490 -0.30819804
+v 0.36230852 -0.87962862 -0.30819804
+v 0.22391898 -0.68915176 -0.68915176
+v 0.22391898 -0.30819804 -0.92459411
+v 0.36230852 0.11772117 -0.92459411
+v 0.58622750 0.42591921 -0.68915176
+v 0.81014648 0.49867490 -0.30819804
+v -0.00000000 0.38095372 -0.92459410
+v -0.22391898 0.68915176 -0.68915176
+v 0.22391898 0.68915176 -0.68915176
+v -0.22391898 0.92459411 -0.30819804
+v 0.22391898 0.92459411 -0.30819804
+v 0.58622750 0.80687293 -0.07275569
+v -0.58622750 0.80687293 -0.07275569
+v -0.22391898 -0.30819804 0.92459411
+v 0.22391898 -0.30819804 0.92459411
+v 0.36230852 0.11772117 0.92459411
+v 0.00000000 0.38095372 0.92459411
+v -0.36230852 0.11772117 0.92459411
+v -0.84839641 -0.51110305 -0.13783035
+v -0.98678595 -0.08518384 -0.13783035
+v -0.84839641 0.10529302 -0.51878407
+v -0.62447743 -0.20290502 -0.75422642
+v -0.62447743 -0.58385874 -0.51878407
+v 0.98678595 -0.08518384 -0.13783035
+v 0.84839641 -0.51110305 -0.13783035
+v 0.62447743 -0.58385874 -0.51878407
+v 0.62447743 -0.20290502 -0.75422642
+v 0.84839641 0.10529302 -0.51878407
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 47 46
+f 1 46 2
+f 2 3 13 12
+f 2 46 50 3
+f 3 4 14 23 13
+f 3 50 4
+f 4 5 15 14
+f 4 50 49 5
+f 5 6 16 24 15
+f 5 49 6
+f 6 7 17 16
+f 6 49 48 7
+f 7 8 18 25 17
+f 7 48 8
+f 8 9 19 18
+f 8 48 47 9
+f 9 10 20 26 19
+f 9 47 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 52 51
+f 12 51 22
+f 13 23 52
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 57 56
+f 18 56 25
+f 19 26 57
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 51 55 27
+f 23 32 53 52
+f 24 43 42
+f 25 56 60 38
+f 26 33 58 57
+f 27 55 28
+f 28 29 35 34
+f 28 55 54 29
+f 29 30 39 36 35
+f 29 54 30
+f 30 31 40 39
+f 30 54 53 31
+f 31 32 45 42 40
+f 31 53 32
+f 33 34 58
+f 34 35 59 58
+f 35 36 59
+f 36 39 41 37
+f 36 37 60 59
+f 37 41 43 44 38
+f 37 38 60
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
+f 56 57 58 59 60
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n76.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n76.obj
new file mode 100644
index 00000000..6ae6abe0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n76.obj
@@ -0,0 +1,107 @@
+v -0.14383464 -0.67226446 0.61486772
+v -0.48573906 -0.42385636 0.61486772
+v -0.61633492 -0.02192360 0.61486772
+v -0.48573906 0.38000915 0.61486772
+v -0.14383464 0.62841725 0.61486772
+v 0.27878247 0.62841725 0.61486772
+v 0.62068689 0.38000915 0.61486772
+v 0.75128276 -0.02192360 0.61486772
+v 0.62068689 -0.42385636 0.61486772
+v 0.27878247 -0.67226446 0.61486772
+v -0.14383464 -0.89444742 0.25536813
+v -0.69704761 -0.49251467 0.25536813
+v -0.82764348 -0.09058192 0.25536813
+v -0.61633492 0.55975894 0.25536813
+v -0.27443050 0.80816704 0.25536813
+v 0.40937834 0.80816704 0.25536813
+v 0.75128276 0.55975894 0.25536813
+v 0.96259131 -0.09058192 0.25536813
+v 0.83199544 -0.49251467 0.25536813
+v 0.27878247 -0.89444742 0.25536813
+v 0.06747392 -0.96310573 -0.10413145
+v -0.48573906 -0.78335594 0.03318517
+v -0.82764348 0.26891767 0.03318517
+v 0.06747392 0.91925852 0.03318517
+v 0.96259131 0.26891767 0.03318517
+v 0.62068689 -0.78335594 0.03318517
+v -0.27443050 -0.85201425 -0.32631441
+v -0.14383464 -0.67226446 -0.68581399
+v -0.14383464 -0.31276488 -0.90799695
+v -0.27443050 0.08916788 -0.90799695
+v -0.48573906 0.38000915 -0.68581399
+v -0.69704761 0.44866746 -0.32631441
+v 0.40937834 -0.85201425 -0.32631441
+v 0.27878247 -0.67226446 -0.68581399
+v 0.27878247 -0.31276488 -0.90799695
+v 0.40937834 0.08916788 -0.90799695
+v 0.62068689 0.38000915 -0.68581399
+v 0.83199544 0.44866746 -0.32631441
+v 0.06747392 0.33757598 -0.90799695
+v -0.14383464 0.62841725 -0.68581399
+v 0.27878247 0.62841725 -0.68581399
+v -0.14383464 0.85060021 -0.32631441
+v 0.27878247 0.85060021 -0.32631441
+v 0.62068689 0.73950873 -0.10413145
+v -0.48573906 0.73950873 -0.10413145
+v 0.06747392 -0.38142319 0.83705068
+v 0.40937834 -0.13301509 0.83705068
+v 0.27878247 0.26891767 0.83705068
+v -0.14383464 0.26891767 0.83705068
+v -0.27443050 -0.13301508 0.83705068
+v -0.82764348 -0.31276488 -0.10413145
+v -0.82764348 0.04673471 -0.32631441
+v -0.61633492 -0.02192360 -0.68581399
+v -0.48573906 -0.42385636 -0.68581399
+v -0.61633492 -0.60360615 -0.32631441
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 46
+f 1 46 50 2
+f 2 3 13 12
+f 2 50 3
+f 3 4 14 23 13
+f 3 50 49 4
+f 4 5 15 14
+f 4 49 5
+f 5 6 16 24 15
+f 5 49 48 6
+f 6 7 17 16
+f 6 48 7
+f 7 8 18 25 17
+f 7 48 47 8
+f 8 9 19 18
+f 8 47 9
+f 9 10 20 26 19
+f 9 47 46 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 51
+f 12 51 55 22
+f 13 23 52 51
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 26 33 34 35 36 37 38 25
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 55 27
+f 23 32 52
+f 24 43 42
+f 27 55 54 28
+f 28 29 35 34
+f 28 54 29
+f 29 30 39 36 35
+f 29 54 53 30
+f 30 31 40 39
+f 30 53 31
+f 31 32 45 42 40
+f 31 53 52 32
+f 36 39 41 37
+f 37 41 43 44 38
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n77.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n77.obj
new file mode 100644
index 00000000..14c23ffd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n77.obj
@@ -0,0 +1,107 @@
+v -0.21130855 -0.65034085 0.57102051
+v -0.55321297 -0.40193275 0.57102051
+v -0.68380884 -0.00000000 0.57102051
+v -0.55321297 0.40193275 0.57102051
+v -0.21130855 0.65034085 0.57102051
+v 0.21130855 0.65034085 0.57102051
+v 0.55321297 0.40193275 0.57102051
+v 0.68380884 -0.00000000 0.57102051
+v 0.55321297 -0.40193275 0.57102051
+v 0.21130855 -0.65034085 0.57102051
+v -0.21130855 -0.87252381 0.21152092
+v -0.76452153 -0.47059106 0.21152092
+v -0.89511739 -0.06865831 0.21152092
+v -0.68380884 0.58168254 0.21152092
+v -0.34190442 0.83009064 0.21152092
+v 0.34190442 0.83009064 0.21152092
+v 0.68380884 0.58168254 0.21152092
+v 0.89511739 -0.06865831 0.21152092
+v 0.76452152 -0.47059106 0.21152092
+v 0.21130855 -0.87252381 0.21152092
+v -0.00000000 -0.94118212 -0.14797866
+v -0.55321297 -0.76143233 -0.01066204
+v -0.89511739 -0.29084127 -0.14797866
+v -0.89511739 0.29084127 -0.01066204
+v -0.55321297 0.76143233 -0.14797866
+v -0.00000000 0.94118212 -0.01066204
+v 0.55321297 0.76143233 -0.14797866
+v 0.89511739 0.29084127 -0.01066204
+v 0.89511739 -0.29084127 -0.14797866
+v 0.55321297 -0.76143233 -0.01066204
+v 0.34190442 -0.83009064 -0.37016162
+v -0.34190442 -0.83009064 -0.37016162
+v -0.68380884 -0.58168254 -0.37016162
+v -0.89511739 0.06865831 -0.37016162
+v -0.76452153 0.47059106 -0.37016162
+v -0.21130855 0.87252381 -0.37016162
+v 0.21130855 0.87252381 -0.37016162
+v 0.76452153 0.47059106 -0.37016162
+v 0.89511739 0.06865831 -0.37016162
+v 0.68380884 -0.58168254 -0.37016162
+v -0.21130855 -0.65034085 -0.72966120
+v -0.55321297 -0.40193275 -0.72966120
+v -0.68380884 0.00000000 -0.72966120
+v -0.55321297 0.40193275 -0.72966120
+v -0.21130855 0.65034085 -0.72966120
+v 0.21130855 0.65034085 -0.72966120
+v 0.55321297 0.40193275 -0.72966120
+v 0.68380884 -0.00000000 -0.72966120
+v 0.55321297 -0.40193275 -0.72966120
+v 0.21130855 -0.65034085 -0.72966120
+v -0.21130855 -0.29084127 0.79320347
+v 0.21130855 -0.29084127 0.79320347
+v 0.34190442 0.11109148 0.79320347
+v -0.00000000 0.35949958 0.79320347
+v -0.34190442 0.11109148 0.79320347
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 52 51
+f 1 51 2
+f 2 3 13 12
+f 2 51 55 3
+f 3 4 14 24 13
+f 3 55 4
+f 4 5 15 14
+f 4 55 54 5
+f 5 6 16 26 15
+f 5 54 6
+f 6 7 17 16
+f 6 54 53 7
+f 7 8 18 28 17
+f 7 53 8
+f 8 9 19 18
+f 8 53 52 9
+f 9 10 20 30 19
+f 9 52 10
+f 11 22 32 21
+f 11 21 20
+f 12 13 23
+f 12 23 33 22
+f 13 24 34 23
+f 14 15 25
+f 14 25 35 24
+f 15 26 36 25
+f 16 17 27
+f 16 27 37 26
+f 17 28 38 27
+f 18 19 29
+f 18 29 39 28
+f 19 30 40 29
+f 20 21 31 30
+f 21 32 41 50 31
+f 22 33 32
+f 23 34 43 42 33
+f 24 35 34
+f 25 36 45 44 35
+f 26 37 36
+f 27 38 47 46 37
+f 28 39 38
+f 29 40 49 48 39
+f 30 31 40
+f 31 50 49 40
+f 32 33 42 41
+f 34 35 44 43
+f 36 37 46 45
+f 38 39 48 47
+f 41 42 43 44 45 46 47 48 49 50
+f 51 52 53 54 55
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n78.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n78.obj
new file mode 100644
index 00000000..7693437a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n78.obj
@@ -0,0 +1,107 @@
+v -0.14383464 -0.67226446 0.61486772
+v -0.48573906 -0.42385636 0.61486772
+v -0.61633492 -0.02192360 0.61486772
+v -0.48573906 0.38000915 0.61486772
+v -0.14383464 0.62841725 0.61486772
+v 0.27878247 0.62841725 0.61486772
+v 0.62068689 0.38000915 0.61486772
+v 0.75128276 -0.02192360 0.61486772
+v 0.62068689 -0.42385636 0.61486772
+v 0.27878247 -0.67226446 0.61486772
+v -0.14383464 -0.89444742 0.25536813
+v -0.69704761 -0.49251467 0.25536813
+v -0.82764348 -0.09058192 0.25536813
+v -0.61633492 0.55975894 0.25536813
+v -0.27443050 0.80816704 0.25536813
+v 0.40937834 0.80816704 0.25536813
+v 0.75128276 0.55975894 0.25536813
+v 0.96259131 -0.09058192 0.25536813
+v 0.83199544 -0.49251467 0.25536813
+v 0.27878247 -0.89444742 0.25536813
+v 0.06747392 -0.96310573 -0.10413145
+v -0.48573906 -0.78335594 0.03318517
+v -0.82764348 0.26891767 0.03318517
+v 0.06747392 0.91925852 0.03318517
+v 0.96259131 0.26891767 0.03318517
+v 0.62068689 -0.78335594 0.03318517
+v -0.27443050 -0.85201425 -0.32631441
+v -0.14383464 -0.67226446 -0.68581399
+v -0.14383464 -0.31276488 -0.90799695
+v -0.27443050 0.08916788 -0.90799695
+v -0.48573906 0.38000915 -0.68581399
+v -0.69704761 0.44866746 -0.32631441
+v 0.40937834 -0.85201425 -0.32631441
+v 0.27878247 -0.67226446 -0.68581399
+v 0.27878247 -0.31276488 -0.90799695
+v 0.40937834 0.08916788 -0.90799695
+v 0.62068689 0.38000915 -0.68581399
+v 0.83199544 0.44866746 -0.32631441
+v 0.06747392 0.33757598 -0.90799695
+v -0.14383464 0.62841725 -0.68581399
+v 0.27878247 0.62841725 -0.68581399
+v -0.14383464 0.85060021 -0.32631441
+v 0.27878247 0.85060021 -0.32631441
+v 0.62068689 0.73950873 -0.10413145
+v -0.48573906 0.73950873 -0.10413145
+v 0.06747392 -0.38142319 0.83705068
+v 0.40937834 -0.13301509 0.83705068
+v 0.27878247 0.26891767 0.83705068
+v -0.14383464 0.26891767 0.83705068
+v -0.27443050 -0.13301509 0.83705068
+v -0.73314342 -0.50424291 -0.16554131
+v -0.86373929 -0.10231015 -0.16554131
+v -0.73314342 0.07743964 -0.52504089
+v -0.52183487 -0.21340164 -0.74722385
+v -0.52183487 -0.57290122 -0.52504089
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 46
+f 1 46 50 2
+f 2 3 13 12
+f 2 50 3
+f 3 4 14 23 13
+f 3 50 49 4
+f 4 5 15 14
+f 4 49 5
+f 5 6 16 24 15
+f 5 49 48 6
+f 6 7 17 16
+f 6 48 7
+f 7 8 18 25 17
+f 7 48 47 8
+f 8 9 19 18
+f 8 47 9
+f 9 10 20 26 19
+f 9 47 46 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 52 51
+f 12 51 22
+f 13 23 52
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 26 33 34 35 36 37 38 25
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 51 55 27
+f 23 32 53 52
+f 24 43 42
+f 27 55 28
+f 28 29 35 34
+f 28 55 54 29
+f 29 30 39 36 35
+f 29 54 30
+f 30 31 40 39
+f 30 54 53 31
+f 31 32 45 42 40
+f 31 53 32
+f 36 39 41 37
+f 37 41 43 44 38
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n79.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n79.obj
new file mode 100644
index 00000000..5923c300
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n79.obj
@@ -0,0 +1,107 @@
+v -0.14383464 -0.67226446 0.61486772
+v -0.48573906 -0.42385636 0.61486772
+v -0.61633492 -0.02192360 0.61486772
+v -0.48573906 0.38000915 0.61486772
+v -0.14383464 0.62841725 0.61486772
+v 0.27878247 0.62841725 0.61486772
+v 0.62068689 0.38000915 0.61486772
+v 0.75128276 -0.02192360 0.61486772
+v 0.62068689 -0.42385636 0.61486772
+v 0.27878247 -0.67226446 0.61486772
+v -0.14383464 -0.89444742 0.25536813
+v -0.69704761 -0.49251467 0.25536813
+v -0.82764348 -0.09058192 0.25536813
+v -0.61633492 0.55975894 0.25536813
+v -0.27443050 0.80816704 0.25536813
+v 0.40937834 0.80816704 0.25536813
+v 0.75128276 0.55975894 0.25536813
+v 0.96259131 -0.09058192 0.25536813
+v 0.83199544 -0.49251467 0.25536813
+v 0.27878247 -0.89444742 0.25536813
+v 0.06747392 -0.96310573 -0.10413145
+v -0.48573906 -0.78335594 0.03318517
+v -0.82764348 0.26891767 0.03318517
+v 0.06747392 0.91925852 0.03318517
+v 0.96259131 0.26891767 0.03318517
+v 0.62068689 -0.78335594 0.03318517
+v -0.27443050 -0.85201425 -0.32631441
+v -0.14383464 -0.67226446 -0.68581399
+v -0.14383464 -0.31276488 -0.90799695
+v -0.27443050 0.08916788 -0.90799695
+v -0.48573906 0.38000915 -0.68581399
+v -0.69704761 0.44866746 -0.32631441
+v 0.40937834 -0.85201425 -0.32631441
+v 0.27878247 -0.67226446 -0.68581399
+v 0.27878247 -0.31276488 -0.90799695
+v 0.40937834 0.08916788 -0.90799695
+v 0.62068689 0.38000915 -0.68581399
+v 0.83199544 0.44866746 -0.32631441
+v 0.06747392 0.33757598 -0.90799695
+v -0.14383464 0.62841725 -0.68581399
+v 0.27878247 0.62841725 -0.68581399
+v -0.14383464 0.85060021 -0.32631441
+v 0.27878247 0.85060021 -0.32631441
+v 0.62068689 0.73950873 -0.10413145
+v -0.48573906 0.73950873 -0.10413145
+v -0.14383464 -0.31276488 0.83705068
+v 0.27878247 -0.31276488 0.83705068
+v 0.40937834 0.08916788 0.83705068
+v 0.06747392 0.33757598 0.83705068
+v -0.27443050 0.08916788 0.83705068
+v -0.73314342 -0.50424291 -0.16554131
+v -0.86373929 -0.10231015 -0.16554131
+v -0.73314342 0.07743964 -0.52504089
+v -0.52183487 -0.21340164 -0.74722385
+v -0.52183487 -0.57290122 -0.52504089
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 47 46
+f 1 46 2
+f 2 3 13 12
+f 2 46 50 3
+f 3 4 14 23 13
+f 3 50 4
+f 4 5 15 14
+f 4 50 49 5
+f 5 6 16 24 15
+f 5 49 6
+f 6 7 17 16
+f 6 49 48 7
+f 7 8 18 25 17
+f 7 48 8
+f 8 9 19 18
+f 8 48 47 9
+f 9 10 20 26 19
+f 9 47 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 52 51
+f 12 51 22
+f 13 23 52
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 26 33 34 35 36 37 38 25
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 51 55 27
+f 23 32 53 52
+f 24 43 42
+f 27 55 28
+f 28 29 35 34
+f 28 55 54 29
+f 29 30 39 36 35
+f 29 54 30
+f 30 31 40 39
+f 30 54 53 31
+f 31 32 45 42 40
+f 31 53 32
+f 36 39 41 37
+f 37 41 43 44 38
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n80.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n80.obj
new file mode 100644
index 00000000..c6797f3d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n80.obj
@@ -0,0 +1,92 @@
+v -0.22391898 -0.68915176 0.68915176
+v -0.58622750 -0.42591921 0.68915176
+v -0.72461704 -0.00000000 0.68915176
+v -0.58622750 0.42591921 0.68915176
+v -0.22391898 0.68915176 0.68915176
+v 0.22391898 0.68915176 0.68915176
+v 0.58622750 0.42591921 0.68915176
+v 0.72461704 -0.00000000 0.68915176
+v 0.58622750 -0.42591921 0.68915176
+v 0.22391898 -0.68915176 0.68915176
+v -0.22391898 -0.92459411 0.30819803
+v -0.81014648 -0.49867490 0.30819803
+v -0.94853602 -0.07275569 0.30819803
+v -0.72461704 0.61639607 0.30819803
+v -0.36230852 0.87962862 0.30819803
+v 0.36230852 0.87962862 0.30819803
+v 0.72461704 0.61639607 0.30819803
+v 0.94853602 -0.07275569 0.30819803
+v 0.81014648 -0.49867490 0.30819803
+v 0.22391898 -0.92459411 0.30819803
+v -0.00000000 -0.99734979 -0.07275569
+v -0.58622750 -0.80687293 0.07275569
+v -0.94853602 -0.30819803 -0.07275569
+v -0.94853602 0.30819803 0.07275569
+v -0.58622750 0.80687293 -0.07275569
+v -0.00000000 0.99734979 0.07275569
+v 0.58622750 0.80687293 -0.07275569
+v 0.94853602 0.30819803 0.07275569
+v 0.94853602 -0.30819804 -0.07275569
+v 0.58622750 -0.80687293 0.07275569
+v 0.36230852 -0.87962862 -0.30819803
+v -0.36230852 -0.87962862 -0.30819803
+v -0.72461704 -0.61639607 -0.30819803
+v -0.94853602 0.07275569 -0.30819803
+v -0.81014648 0.49867490 -0.30819803
+v -0.22391898 0.92459411 -0.30819803
+v 0.22391898 0.92459410 -0.30819803
+v 0.81014648 0.49867490 -0.30819803
+v 0.94853602 0.07275569 -0.30819803
+v 0.72461704 -0.61639607 -0.30819803
+v -0.22391898 -0.68915176 -0.68915176
+v -0.58622750 -0.42591921 -0.68915176
+v -0.72461703 0.00000000 -0.68915176
+v -0.58622750 0.42591921 -0.68915176
+v -0.22391898 0.68915176 -0.68915176
+v 0.22391898 0.68915176 -0.68915176
+v 0.58622750 0.42591921 -0.68915176
+v 0.72461704 -0.00000000 -0.68915176
+v 0.58622750 -0.42591921 -0.68915176
+v 0.22391898 -0.68915176 -0.68915176
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 13 12
+f 3 4 14 24 13
+f 4 5 15 14
+f 5 6 16 26 15
+f 6 7 17 16
+f 7 8 18 28 17
+f 8 9 19 18
+f 9 10 20 30 19
+f 11 22 32 21
+f 11 21 20
+f 12 13 23
+f 12 23 33 22
+f 13 24 34 23
+f 14 15 25
+f 14 25 35 24
+f 15 26 36 25
+f 16 17 27
+f 16 27 37 26
+f 17 28 38 27
+f 18 19 29
+f 18 29 39 28
+f 19 30 40 29
+f 20 21 31 30
+f 21 32 41 50 31
+f 22 33 32
+f 23 34 43 42 33
+f 24 35 34
+f 25 36 45 44 35
+f 26 37 36
+f 27 38 47 46 37
+f 28 39 38
+f 29 40 49 48 39
+f 30 31 40
+f 31 50 49 40
+f 32 33 42 41
+f 34 35 44 43
+f 36 37 46 45
+f 38 39 48 47
+f 41 42 43 44 45 46 47 48 49 50
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n81.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n81.obj
new file mode 100644
index 00000000..e249e287
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n81.obj
@@ -0,0 +1,92 @@
+v -0.20493237 -0.67749353 0.55503095
+v -0.53651992 -0.43658108 0.55503095
+v -0.66317509 -0.04677654 0.55503095
+v -0.53651992 0.34302799 0.55503095
+v -0.20493237 0.58394044 0.55503095
+v 0.20493237 0.58394044 0.55503095
+v 0.53651992 0.34302799 0.55503095
+v 0.66317509 -0.04677654 0.55503095
+v 0.53651992 -0.43658108 0.55503095
+v 0.20493237 -0.67749353 0.55503095
+v -0.20493237 -0.89297218 0.20637917
+v -0.74145229 -0.50316764 0.20637917
+v -0.86810746 -0.11336311 0.20637917
+v -0.66317509 0.51735388 0.20637917
+v -0.33158754 0.75826633 0.20637917
+v 0.33158754 0.75826633 0.20637917
+v 0.66317509 0.51735388 0.20637917
+v 0.86810746 -0.11336311 0.20637917
+v 0.74145229 -0.50316764 0.20637917
+v 0.20493237 -0.89297218 0.20637917
+v 0.00000000 -0.95955874 -0.14227260
+v -0.53651992 -0.78523286 -0.00909947
+v -0.86810746 0.23528867 -0.00909947
+v 0.00000000 0.86600566 -0.00909947
+v 0.86810746 0.23528867 -0.00909947
+v 0.53651992 -0.78523286 -0.00909947
+v -0.33158754 -0.85181942 -0.35775125
+v -0.20493237 -0.67749353 -0.70640303
+v -0.20493237 -0.32884176 -0.92188167
+v -0.33158754 0.06096278 -0.92188167
+v -0.53651992 0.34302799 -0.70640302
+v -0.74145229 0.40961456 -0.35775125
+v 0.33158754 -0.85181942 -0.35775125
+v 0.20493237 -0.67749353 -0.70640303
+v 0.20493237 -0.32884176 -0.92188167
+v 0.33158754 0.06096278 -0.92188167
+v 0.53651992 0.34302799 -0.70640303
+v 0.74145229 0.40961456 -0.35775125
+v -0.00000000 0.30187523 -0.92188167
+v -0.20493237 0.58394044 -0.70640302
+v 0.20493237 0.58394044 -0.70640303
+v -0.20493237 0.79941909 -0.35775125
+v 0.20493237 0.79941909 -0.35775125
+v 0.53651992 0.69167977 -0.14227260
+v -0.53651992 0.69167977 -0.14227260
+v 0.00000000 -0.39542832 0.77050960
+v 0.33158754 -0.15451587 0.77050960
+v 0.20493237 0.23528867 0.77050960
+v -0.20493237 0.23528867 0.77050960
+v -0.33158754 -0.15451587 0.77050960
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 46
+f 1 46 50 2
+f 2 3 13 12
+f 2 50 3
+f 3 4 14 23 13
+f 3 50 49 4
+f 4 5 15 14
+f 4 49 5
+f 5 6 16 24 15
+f 5 49 48 6
+f 6 7 17 16
+f 6 48 7
+f 7 8 18 25 17
+f 7 48 47 8
+f 8 9 19 18
+f 8 47 9
+f 9 10 20 26 19
+f 9 47 46 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 23 32 31 30 29 28 27 22
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 26 33 34 35 36 37 38 25
+f 20 21 33 26
+f 21 27 28 34 33
+f 24 43 42
+f 28 29 35 34
+f 29 30 39 36 35
+f 30 31 40 39
+f 31 32 45 42 40
+f 36 39 41 37
+f 37 41 43 44 38
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n82.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n82.obj
new file mode 100644
index 00000000..bec40fa7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n82.obj
@@ -0,0 +1,92 @@
+v -0.20493237 -0.67749353 0.55503095
+v -0.53651992 -0.43658108 0.55503095
+v -0.66317509 -0.04677654 0.55503095
+v -0.53651992 0.34302799 0.55503095
+v -0.20493237 0.58394044 0.55503095
+v 0.20493237 0.58394044 0.55503095
+v 0.53651992 0.34302799 0.55503095
+v 0.66317509 -0.04677654 0.55503095
+v 0.53651992 -0.43658108 0.55503095
+v 0.20493237 -0.67749353 0.55503095
+v -0.20493237 -0.89297218 0.20637917
+v -0.74145229 -0.50316764 0.20637917
+v -0.86810746 -0.11336311 0.20637917
+v -0.66317509 0.51735388 0.20637917
+v -0.33158754 0.75826633 0.20637917
+v 0.33158754 0.75826633 0.20637917
+v 0.66317509 0.51735388 0.20637917
+v 0.86810746 -0.11336311 0.20637917
+v 0.74145229 -0.50316764 0.20637917
+v 0.20493237 -0.89297218 0.20637917
+v 0.00000000 -0.95955874 -0.14227260
+v -0.53651992 -0.78523286 -0.00909947
+v -0.86810746 0.23528867 -0.00909947
+v 0.00000000 0.86600566 -0.00909947
+v 0.86810746 0.23528867 -0.00909947
+v 0.53651992 -0.78523286 -0.00909947
+v -0.33158754 -0.85181942 -0.35775125
+v -0.20493237 -0.67749353 -0.70640303
+v -0.20493237 -0.32884176 -0.92188167
+v -0.33158754 0.06096278 -0.92188167
+v -0.53651992 0.34302799 -0.70640302
+v -0.74145229 0.40961456 -0.35775125
+v 0.33158754 -0.85181942 -0.35775125
+v 0.20493237 -0.67749353 -0.70640303
+v 0.20493237 -0.32884176 -0.92188167
+v 0.33158754 0.06096278 -0.92188167
+v 0.53651992 0.34302799 -0.70640303
+v 0.74145229 0.40961456 -0.35775125
+v -0.00000000 0.30187523 -0.92188167
+v -0.20493237 0.58394044 -0.70640302
+v 0.20493237 0.58394044 -0.70640303
+v -0.20493237 0.79941909 -0.35775125
+v 0.20493237 0.79941909 -0.35775125
+v 0.53651992 0.69167977 -0.14227260
+v -0.53651992 0.69167977 -0.14227260
+v -0.20493237 -0.32884176 0.77050960
+v 0.20493237 -0.32884176 0.77050960
+v 0.33158754 0.06096278 0.77050960
+v 0.00000000 0.30187523 0.77050960
+v -0.33158754 0.06096278 0.77050960
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 47 46
+f 1 46 2
+f 2 3 13 12
+f 2 46 50 3
+f 3 4 14 23 13
+f 3 50 4
+f 4 5 15 14
+f 4 50 49 5
+f 5 6 16 24 15
+f 5 49 6
+f 6 7 17 16
+f 6 49 48 7
+f 7 8 18 25 17
+f 7 48 8
+f 8 9 19 18
+f 8 48 47 9
+f 9 10 20 26 19
+f 9 47 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 23 32 31 30 29 28 27 22
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 26 33 34 35 36 37 38 25
+f 20 21 33 26
+f 21 27 28 34 33
+f 24 43 42
+f 28 29 35 34
+f 29 30 39 36 35
+f 30 31 40 39
+f 31 32 45 42 40
+f 36 39 41 37
+f 37 41 43 44 38
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n83.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n83.obj
new file mode 100644
index 00000000..40656942
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n83.obj
@@ -0,0 +1,77 @@
+v -0.21205343 -0.70641331 0.66290442
+v -0.55516310 -0.45712955 0.66290442
+v -0.68621933 -0.05377995 0.66290442
+v -0.55516310 0.34956965 0.66290442
+v -0.21205343 0.59885342 0.66290442
+v 0.21205343 0.59885342 0.66290442
+v 0.55516310 0.34956965 0.66290442
+v 0.68621933 -0.05377995 0.66290442
+v 0.55516310 -0.45712955 0.66290442
+v 0.21205343 -0.70641331 0.66290442
+v -0.21205343 -0.92937949 0.30213757
+v -0.76721653 -0.52602989 0.30213757
+v -0.89827276 -0.12268028 0.30213757
+v -0.68621933 0.52995308 0.30213757
+v -0.34310966 0.77923684 0.30213757
+v 0.34310966 0.77923684 0.30213757
+v 0.68621933 0.52995308 0.30213757
+v 0.89827276 -0.12268028 0.30213757
+v 0.76721653 -0.52602989 0.30213757
+v 0.21205343 -0.92937949 0.30213757
+v 0.00000000 -0.99827982 -0.05862928
+v -0.55516310 -0.81789640 0.07917139
+v -0.89827276 0.23808657 0.07917139
+v 0.00000000 0.89071993 0.07917139
+v 0.89827276 0.23808657 0.07917139
+v 0.55516310 -0.81789640 0.07917139
+v -0.34310966 -0.88679674 -0.28159546
+v -0.21205343 -0.70641331 -0.64236231
+v -0.21205343 -0.34564646 -0.86532848
+v -0.34310967 0.05770314 -0.86532848
+v -0.55516310 0.34956965 -0.64236231
+v -0.76721653 0.41846999 -0.28159546
+v 0.34310966 -0.88679674 -0.28159546
+v 0.21205343 -0.70641331 -0.64236231
+v 0.21205343 -0.34564646 -0.86532848
+v 0.34310966 0.05770314 -0.86532848
+v 0.55516310 0.34956965 -0.64236231
+v 0.76721653 0.41846999 -0.28159546
+v -0.00000000 0.30698691 -0.86532848
+v -0.21205344 0.59885342 -0.64236231
+v 0.21205343 0.59885342 -0.64236231
+v -0.21205343 0.82181959 -0.28159546
+v 0.21205343 0.82181959 -0.28159546
+v 0.55516310 0.71033651 -0.05862928
+v -0.55516310 0.71033650 -0.05862928
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 13 12
+f 3 4 14 23 13
+f 4 5 15 14
+f 5 6 16 24 15
+f 6 7 17 16
+f 7 8 18 25 17
+f 8 9 19 18
+f 9 10 20 26 19
+f 11 22 27 21
+f 11 21 20
+f 12 13 23 32 31 30 29 28 27 22
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 26 33 34 35 36 37 38 25
+f 20 21 33 26
+f 21 27 28 34 33
+f 24 43 42
+f 28 29 35 34
+f 29 30 39 36 35
+f 30 31 40 39
+f 31 32 45 42 40
+f 36 39 41 37
+f 37 41 43 44 38
+f 39 40 41
+f 40 42 43 41
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n84.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n84.obj
new file mode 100644
index 00000000..99140d2c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n84.obj
@@ -0,0 +1,20 @@
+v -0.75649990 -0.43676533 0.48676866
+v -0.21875602 -0.92678633 -0.30530764
+v -0.21875602 0.49463440 0.48676866
+v -0.57471845 0.07921625 -0.43918622
+v 0.47448656 -0.13708534 -0.53435131
+v 0.14100681 0.88189762 -0.44985925
+v 0.31898787 -0.43676533 0.48676866
+v 0.83424915 0.48165406 0.26839843
+f 1 2 7
+f 1 7 3
+f 1 3 4
+f 1 4 2
+f 2 4 5
+f 2 5 7
+f 3 7 8
+f 3 8 6
+f 3 6 4
+f 4 6 5
+f 5 6 8
+f 5 8 7
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n85.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n85.obj
new file mode 100644
index 00000000..88e6e2d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n85.obj
@@ -0,0 +1,42 @@
+v -0.40739095 -0.40739110 0.55150049
+v -0.40739095 0.40739118 0.55150049
+v 0.40739133 0.40739118 0.55150049
+v 0.40739133 -0.40739110 0.55150049
+v -0.69897385 -0.69897400 -0.15122917
+v -0.98849816 0.00000004 0.15122929
+v -0.69897385 0.69897408 -0.15122917
+v 0.00000019 0.98849838 0.15122929
+v 0.69897423 0.69897408 -0.15122917
+v 0.98849853 0.00000004 0.15122929
+v 0.69897423 -0.69897400 -0.15122917
+v 0.00000019 -0.98849831 0.15122929
+v -0.57613626 0.00000004 -0.55149955
+v -0.00000043 0.57614036 -0.55150182
+v 0.57613486 -0.00000057 -0.55149925
+v -0.00000043 -0.57614028 -0.55150182
+f 1 2 6
+f 1 6 5
+f 1 5 12
+f 1 12 4
+f 1 4 3 2
+f 2 3 8
+f 2 8 7
+f 2 7 6
+f 3 4 10
+f 3 10 9
+f 3 9 8
+f 4 12 11
+f 4 11 10
+f 5 6 13
+f 5 13 16
+f 5 16 12
+f 6 7 13
+f 7 8 14
+f 7 14 13
+f 8 9 14
+f 9 10 15
+f 9 15 14
+f 10 11 15
+f 11 12 16
+f 11 16 15
+f 13 14 15 16
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n86.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n86.obj
new file mode 100644
index 00000000..0c12e8e4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n86.obj
@@ -0,0 +1,24 @@
+v 0.15389145 -0.79063961 -0.25122195
+v 0.15389145 0.79063935 -0.25122195
+v -0.08683237 0.00000121 -0.81691859
+v 0.76720476 -0.00000013 -0.29376075
+v -0.34687634 -0.50076793 0.56626173
+v -0.34687634 0.50076766 0.56626173
+v 0.65465925 -0.50076793 0.56626173
+v 0.65465925 0.50076766 0.56626173
+v -0.80186056 -0.50076793 -0.32596185
+v -0.80186056 0.50076766 -0.32596185
+f 1 3 4
+f 1 4 7
+f 1 7 5
+f 1 5 9
+f 1 9 3
+f 2 3 10
+f 2 10 6
+f 2 6 8
+f 2 8 4
+f 2 4 3
+f 3 9 10
+f 4 8 7
+f 5 7 8 6
+f 5 6 10 9
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n87.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n87.obj
new file mode 100644
index 00000000..d6f957ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n87.obj
@@ -0,0 +1,28 @@
+v 0.11988005 -0.67749119 -0.31454842
+v 0.11988005 0.67749098 -0.31454842
+v -0.08639380 0.00000104 -0.79928823
+v 0.64542211 -0.00000010 -0.35099950
+v -0.30922289 -0.42910304 0.38594519
+v -0.30922289 0.42910283 0.38594519
+v 0.54898298 -0.42910304 0.38594519
+v 0.54898298 0.42910283 0.38594519
+v -0.69909432 -0.42910304 -0.37859230
+v -0.69909432 0.42910283 -0.37859230
+v 0.11988005 -0.00000010 0.99278838
+f 1 3 4
+f 1 4 7
+f 1 7 5
+f 1 5 9
+f 1 9 3
+f 2 3 10
+f 2 10 6
+f 2 6 8
+f 2 8 4
+f 2 4 3
+f 3 9 10
+f 4 8 7
+f 5 6 10 9
+f 5 7 11
+f 5 11 6
+f 6 11 8
+f 7 8 11
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n88.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n88.obj
new file mode 100644
index 00000000..6b72d3ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n88.obj
@@ -0,0 +1,30 @@
+v 0.38077489 -0.65068035 -0.28161977
+v 0.23971953 -0.00000007 -0.65071787
+v 0.69238902 0.00000073 -0.03866788
+v -0.17227827 -0.97677286 0.12741658
+v -0.55290763 -0.38062943 0.40892884
+v -0.55290763 0.38062930 0.40892884
+v -0.17227827 0.97677272 0.12741658
+v 0.38077489 0.65068022 -0.28161977
+v -0.32999437 -0.38062943 -0.31896162
+v -0.32999437 0.38062930 -0.31896162
+v 0.20835110 -0.38062943 0.40892884
+v 0.20835110 0.38062930 0.40892884
+f 1 2 3
+f 1 3 11
+f 1 11 4
+f 1 4 9
+f 1 9 2
+f 2 9 10
+f 2 10 8
+f 2 8 3
+f 3 8 12
+f 3 12 11
+f 4 11 5
+f 4 5 9
+f 5 11 12 6
+f 5 6 10 9
+f 6 12 7
+f 6 7 10
+f 7 12 8
+f 7 8 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n89.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n89.obj
new file mode 100644
index 00000000..0b5c2160
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n89.obj
@@ -0,0 +1,35 @@
+v -0.44436584 -0.44436584 0.75893037
+v -0.44436584 0.44436584 0.75893037
+v 0.44436584 0.44436584 0.75893037
+v 0.44436584 -0.44436584 0.75893037
+v -0.97875646 0.00000000 0.20502633
+v 0.97875646 -0.00000000 0.20502633
+v -0.44436584 -0.63708304 -0.10865484
+v 0.44436584 -0.63708304 -0.10865484
+v -0.44436584 0.63708304 -0.10865484
+v 0.44436584 0.63708304 -0.10865484
+v -0.74267577 0.00000000 -0.65177582
+v 0.74267577 -0.00000000 -0.65177582
+v -0.00000000 -0.44436731 -0.85380157
+v 0.00000000 0.44436731 -0.85380157
+f 1 2 5
+f 1 5 7
+f 1 7 8 4
+f 1 4 3 2
+f 2 3 10 9
+f 2 9 5
+f 3 4 6
+f 3 6 10
+f 4 8 6
+f 5 9 11
+f 5 11 7
+f 6 8 12
+f 6 12 10
+f 7 11 13
+f 7 13 8
+f 8 13 12
+f 9 10 14
+f 9 14 11
+f 10 12 14
+f 11 14 13
+f 12 13 14
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n90.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n90.obj
new file mode 100644
index 00000000..12cea9c9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n90.obj
@@ -0,0 +1,40 @@
+v -0.41242387 -0.58439230 0.69885062
+v 0.41242321 -0.58439230 0.69885062
+v -0.41242387 0.24045478 0.69885062
+v 0.41242321 0.24045478 0.69885062
+v -0.41242387 -0.73037469 -0.11297563
+v 0.41242321 -0.73037469 -0.11297563
+v -0.92917625 -0.17196876 0.20565034
+v 0.92917559 -0.17196876 0.20565034
+v -0.63276502 0.56134326 -0.02837223
+v 0.63276436 0.56134326 -0.02837223
+v -0.63276502 -0.07142283 -0.55750338
+v 0.63276436 -0.07142283 -0.55750338
+v -0.00000033 -0.54083237 -0.80170870
+v 0.00000232 0.26800856 -0.96341536
+v 0.00000232 0.90077466 -0.43428421
+v -0.00000033 0.88477025 0.39040759
+f 1 2 4 3
+f 1 3 7
+f 1 7 5
+f 1 5 6 2
+f 2 6 8
+f 2 8 4
+f 3 4 16
+f 3 16 9
+f 3 9 7
+f 4 8 10
+f 4 10 16
+f 5 7 11
+f 5 11 13
+f 5 13 6
+f 6 13 12
+f 6 12 8
+f 7 9 11
+f 8 12 10
+f 9 16 15
+f 9 15 14 11
+f 10 12 14 15
+f 10 15 16
+f 11 14 13
+f 12 13 14
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n91.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n91.obj
new file mode 100644
index 00000000..8fa9e15a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n91.obj
@@ -0,0 +1,28 @@
+v -0.35682209 -0.79465447 0.49112347
+v 0.35682209 -0.79465447 0.49112347
+v 0.57735027 -0.49112347 -0.11593853
+v -0.00000000 -0.30353100 -0.49112347
+v -0.57735027 -0.49112347 -0.11593853
+v -0.57735027 -0.11593852 0.49112347
+v 0.57735027 -0.11593853 0.49112347
+v 0.57735027 0.11593853 -0.49112347
+v -0.57735027 0.11593853 -0.49112347
+v 0.00000000 0.30353100 0.49112347
+v 0.57735027 0.49112347 0.11593853
+v 0.35682209 0.79465447 -0.49112347
+v -0.35682209 0.79465447 -0.49112347
+v -0.57735027 0.49112347 0.11593852
+f 1 2 7 10 6
+f 1 6 5
+f 1 5 4 3 2
+f 2 3 7
+f 3 4 8
+f 3 8 11 7
+f 4 5 9
+f 4 9 13 12 8
+f 5 6 14 9
+f 6 10 14
+f 7 11 10
+f 8 12 11
+f 9 14 13
+f 10 11 12 13 14
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n92.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n92.obj
new file mode 100644
index 00000000..1f85374b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/n92.obj
@@ -0,0 +1,38 @@
+v -0.33030437 -0.57210395 -0.43569542
+v 0.33030437 -0.57210395 -0.43569542
+v 0.66060874 0.00000000 -0.43569542
+v 0.33030437 0.57210395 -0.43569542
+v -0.33030437 0.57210395 -0.43569542
+v -0.66060874 -0.00000000 -0.43569542
+v -0.53444370 -0.68996385 0.18142700
+v 0.00000000 -0.99852506 -0.05429279
+v 0.53444370 -0.68996385 0.18142700
+v 0.86474807 -0.11785990 0.18142700
+v 0.86474807 0.49926253 -0.05429279
+v 0.33030437 0.80782374 0.18142700
+v -0.33030437 0.80782374 0.18142700
+v -0.86474807 0.49926253 -0.05429279
+v -0.86474807 -0.11785990 0.18142700
+v -0.33030437 -0.19070132 0.56282964
+v 0.33030437 -0.19070132 0.56282964
+v 0.00000000 0.38140263 0.56282964
+f 1 2 8
+f 1 8 7
+f 1 7 15 6
+f 1 6 5 4 3 2
+f 2 3 10 9
+f 2 9 8
+f 3 4 11
+f 3 11 10
+f 4 5 13 12
+f 4 12 11
+f 5 6 14
+f 5 14 13
+f 6 15 14
+f 7 8 9 17 16
+f 7 16 15
+f 9 10 17
+f 10 11 12 18 17
+f 12 13 18
+f 13 14 15 16 18
+f 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p03.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p03.obj
new file mode 100644
index 00000000..2dfa2604
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p03.obj
@@ -0,0 +1,11 @@
+v -0.65465367 -0.37796447 0.65465367
+v 0.00000000 0.75592895 0.65465367
+v 0.65465367 -0.37796447 0.65465367
+v -0.65465367 -0.37796447 -0.65465367
+v 0.00000000 0.75592895 -0.65465367
+v 0.65465367 -0.37796447 -0.65465367
+f 1 2 5 4
+f 1 4 6 3
+f 1 3 2
+f 2 3 6 5
+f 4 5 6
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p04.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p04.obj
new file mode 100644
index 00000000..c42c1d1f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p04.obj
@@ -0,0 +1,14 @@
+v -0.57735027 -0.57735027 0.57735027
+v -0.57735027 0.57735027 0.57735027
+v 0.57735027 0.57735027 0.57735027
+v 0.57735027 -0.57735027 0.57735027
+v -0.57735027 -0.57735027 -0.57735027
+v -0.57735027 0.57735027 -0.57735027
+v 0.57735027 0.57735027 -0.57735027
+v 0.57735027 -0.57735027 -0.57735027
+f 1 2 6 5
+f 1 5 8 4
+f 1 4 3 2
+f 2 3 7 6
+f 3 4 8 7
+f 5 6 7 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p05.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p05.obj
new file mode 100644
index 00000000..e7731809
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p05.obj
@@ -0,0 +1,17 @@
+v -0.50673185 -0.69745656 0.50673185
+v -0.81990936 0.26640470 0.50673185
+v 0.00000000 0.86210372 0.50673185
+v 0.81990936 0.26640470 0.50673185
+v 0.50673185 -0.69745656 0.50673185
+v -0.50673185 -0.69745656 -0.50673185
+v -0.81990936 0.26640470 -0.50673185
+v 0.00000000 0.86210372 -0.50673185
+v 0.81990936 0.26640470 -0.50673185
+v 0.50673185 -0.69745656 -0.50673185
+f 1 2 7 6
+f 1 6 10 5
+f 1 5 4 3 2
+f 2 3 8 7
+f 3 4 9 8
+f 4 5 10 9
+f 6 7 8 9 10
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p06.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p06.obj
new file mode 100644
index 00000000..6b1fc4e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p06.obj
@@ -0,0 +1,20 @@
+v -0.44721360 -0.77459667 0.44721360
+v -0.89442719 0.00000000 0.44721360
+v -0.44721360 0.77459667 0.44721360
+v 0.44721360 0.77459667 0.44721360
+v 0.89442719 -0.00000000 0.44721360
+v 0.44721360 -0.77459667 0.44721360
+v -0.44721360 -0.77459667 -0.44721360
+v -0.89442719 0.00000000 -0.44721360
+v -0.44721360 0.77459667 -0.44721360
+v 0.44721360 0.77459667 -0.44721360
+v 0.89442719 -0.00000000 -0.44721360
+v 0.44721360 -0.77459667 -0.44721360
+f 1 2 8 7
+f 1 7 12 6
+f 1 6 5 4 3 2
+f 2 3 9 8
+f 3 4 10 9
+f 4 5 11 10
+f 5 6 12 11
+f 7 8 9 10 11 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p07.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p07.obj
new file mode 100644
index 00000000..b11e3f11
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p07.obj
@@ -0,0 +1,23 @@
+v -0.39803250 -0.82652300 0.39803250
+v -0.89437090 -0.20413432 0.39803250
+v -0.71722978 0.57197166 0.39803250
+v 0.00000000 0.91737132 0.39803250
+v 0.71722978 0.57197166 0.39803250
+v 0.89437090 -0.20413432 0.39803250
+v 0.39803250 -0.82652300 0.39803250
+v -0.39803250 -0.82652300 -0.39803250
+v -0.89437090 -0.20413432 -0.39803250
+v -0.71722978 0.57197166 -0.39803250
+v 0.00000000 0.91737132 -0.39803250
+v 0.71722978 0.57197166 -0.39803250
+v 0.89437090 -0.20413432 -0.39803250
+v 0.39803250 -0.82652300 -0.39803250
+f 1 2 9 8
+f 1 8 14 7
+f 1 7 6 5 4 3 2
+f 2 3 10 9
+f 3 4 11 10
+f 4 5 12 11
+f 5 6 13 12
+f 6 7 14 13
+f 8 9 10 11 12 13 14
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p08.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p08.obj
new file mode 100644
index 00000000..3b99bc23
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p08.obj
@@ -0,0 +1,26 @@
+v -0.35740674 -0.86285621 0.35740674
+v -0.86285621 -0.35740674 0.35740674
+v -0.86285621 0.35740674 0.35740674
+v -0.35740674 0.86285621 0.35740674
+v 0.35740674 0.86285621 0.35740674
+v 0.86285621 0.35740674 0.35740674
+v 0.86285621 -0.35740674 0.35740674
+v 0.35740674 -0.86285621 0.35740674
+v -0.35740674 -0.86285621 -0.35740674
+v -0.86285621 -0.35740674 -0.35740674
+v -0.86285621 0.35740674 -0.35740674
+v -0.35740674 0.86285621 -0.35740674
+v 0.35740674 0.86285621 -0.35740674
+v 0.86285621 0.35740674 -0.35740674
+v 0.86285621 -0.35740674 -0.35740674
+v 0.35740674 -0.86285621 -0.35740674
+f 1 2 10 9
+f 1 9 16 8
+f 1 8 7 6 5 4 3 2
+f 2 3 11 10
+f 3 4 12 11
+f 4 5 13 12
+f 5 6 14 13
+f 6 7 15 14
+f 7 8 16 15
+f 9 10 11 12 13 14 15 16
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p09.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p09.obj
new file mode 100644
index 00000000..e00153ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p09.obj
@@ -0,0 +1,29 @@
+v -0.32361558 -0.88912649 0.32361558
+v -0.81942341 -0.47309432 0.32361558
+v -0.93181392 0.16430393 0.32361558
+v -0.60819834 0.72482256 0.32361558
+v 0.00000000 0.94618865 0.32361558
+v 0.60819834 0.72482256 0.32361558
+v 0.93181392 0.16430393 0.32361558
+v 0.81942341 -0.47309432 0.32361558
+v 0.32361558 -0.88912649 0.32361558
+v -0.32361558 -0.88912649 -0.32361558
+v -0.81942341 -0.47309432 -0.32361558
+v -0.93181392 0.16430393 -0.32361558
+v -0.60819834 0.72482256 -0.32361558
+v 0.00000000 0.94618865 -0.32361558
+v 0.60819834 0.72482256 -0.32361558
+v 0.93181392 0.16430393 -0.32361558
+v 0.81942341 -0.47309432 -0.32361558
+v 0.32361558 -0.88912649 -0.32361558
+f 1 2 11 10
+f 1 10 18 9
+f 1 9 8 7 6 5 4 3 2
+f 2 3 12 11
+f 3 4 13 12
+f 4 5 14 13
+f 5 6 15 14
+f 6 7 16 15
+f 7 8 17 16
+f 8 9 18 17
+f 10 11 12 13 14 15 16 17 18
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p10.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p10.obj
new file mode 100644
index 00000000..31941eda
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/p10.obj
@@ -0,0 +1,32 @@
+v -0.29524181 -0.90866085 0.29524181
+v -0.77295309 -0.56158329 0.29524181
+v -0.95542256 0.00000000 0.29524181
+v -0.77295309 0.56158329 0.29524181
+v -0.29524181 0.90866085 0.29524181
+v 0.29524181 0.90866085 0.29524181
+v 0.77295309 0.56158329 0.29524181
+v 0.95542256 -0.00000000 0.29524181
+v 0.77295309 -0.56158329 0.29524181
+v 0.29524181 -0.90866085 0.29524181
+v -0.29524181 -0.90866085 -0.29524181
+v -0.77295309 -0.56158329 -0.29524181
+v -0.95542256 0.00000000 -0.29524181
+v -0.77295309 0.56158329 -0.29524181
+v -0.29524181 0.90866085 -0.29524181
+v 0.29524181 0.90866085 -0.29524181
+v 0.77295309 0.56158329 -0.29524181
+v 0.95542256 -0.00000000 -0.29524181
+v 0.77295309 -0.56158329 -0.29524181
+v 0.29524181 -0.90866085 -0.29524181
+f 1 2 12 11
+f 1 11 20 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 13 12
+f 3 4 14 13
+f 4 5 15 14
+f 5 6 16 15
+f 6 7 17 16
+f 7 8 18 17
+f 8 9 19 18
+f 9 10 20 19
+f 11 12 13 14 15 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r01.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r01.obj
new file mode 100644
index 00000000..2edf33c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r01.obj
@@ -0,0 +1,8 @@
+v -0.81649658 -0.47140452 0.33333333
+v 0.81649658 -0.47140452 0.33333333
+v 0.00000000 0.00000000 -1.00000000
+v 0.00000000 0.94280904 0.33333333
+f 1 2 4
+f 1 4 3
+f 1 3 2
+f 2 3 4
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r02.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r02.obj
new file mode 100644
index 00000000..85bbede8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r02.obj
@@ -0,0 +1,14 @@
+v -0.70710678 -0.70710678 0.00000000
+v -0.70710678 0.70710678 0.00000000
+v 0.70710678 0.70710678 0.00000000
+v 0.70710678 -0.70710678 0.00000000
+v 0.00000000 0.00000000 -1.00000000
+v 0.00000000 0.00000000 1.00000000
+f 1 2 5
+f 1 5 4
+f 1 4 6
+f 1 6 2
+f 2 3 5
+f 2 6 3
+f 3 4 5
+f 3 6 4
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r03.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r03.obj
new file mode 100644
index 00000000..c42c1d1f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r03.obj
@@ -0,0 +1,14 @@
+v -0.57735027 -0.57735027 0.57735027
+v -0.57735027 0.57735027 0.57735027
+v 0.57735027 0.57735027 0.57735027
+v 0.57735027 -0.57735027 0.57735027
+v -0.57735027 -0.57735027 -0.57735027
+v -0.57735027 0.57735027 -0.57735027
+v 0.57735027 0.57735027 -0.57735027
+v 0.57735027 -0.57735027 -0.57735027
+f 1 2 6 5
+f 1 5 8 4
+f 1 4 3 2
+f 2 3 7 6
+f 3 4 8 7
+f 5 6 7 8
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r04.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r04.obj
new file mode 100644
index 00000000..56a0c40c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r04.obj
@@ -0,0 +1,32 @@
+v -0.35682209 -0.49112347 0.79465447
+v 0.35682209 -0.49112347 0.79465447
+v 0.57735027 -0.79465447 0.18759247
+v 0.00000000 -0.98224695 -0.18759247
+v -0.57735027 -0.79465447 0.18759247
+v -0.57735027 0.18759247 0.79465447
+v 0.57735027 0.18759247 0.79465447
+v 0.93417236 -0.30353100 -0.18759247
+v -0.00000000 -0.60706200 -0.79465447
+v -0.93417236 -0.30353100 -0.18759247
+v -0.93417236 0.30353100 0.18759247
+v 0.00000000 0.60706200 0.79465447
+v 0.93417236 0.30353100 0.18759247
+v 0.57735027 -0.18759247 -0.79465447
+v -0.57735027 -0.18759247 -0.79465447
+v -0.57735027 0.79465447 -0.18759247
+v 0.00000000 0.98224695 0.18759247
+v 0.57735027 0.79465447 -0.18759247
+v 0.35682209 0.49112347 -0.79465447
+v -0.35682209 0.49112347 -0.79465447
+f 1 2 7 12 6
+f 1 6 11 10 5
+f 1 5 4 3 2
+f 2 3 8 13 7
+f 3 4 9 14 8
+f 4 5 10 15 9
+f 6 12 17 16 11
+f 7 13 18 17 12
+f 8 14 19 18 13
+f 9 15 20 19 14
+f 10 11 16 20 15
+f 16 17 18 19 20
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r05.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r05.obj
new file mode 100644
index 00000000..fd013dc2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/r05.obj
@@ -0,0 +1,32 @@
+v -0.52573111 -0.72360680 0.44721360
+v -0.85065081 0.27639320 0.44721360
+v -0.00000000 0.89442719 0.44721360
+v 0.85065081 0.27639320 0.44721360
+v 0.52573111 -0.72360680 0.44721360
+v 0.00000000 -0.89442719 -0.44721360
+v -0.85065081 -0.27639320 -0.44721360
+v -0.52573111 0.72360680 -0.44721360
+v 0.52573111 0.72360680 -0.44721360
+v 0.85065081 -0.27639320 -0.44721360
+v 0.00000000 0.00000000 1.00000000
+v -0.00000000 0.00000000 -1.00000000
+f 1 2 7
+f 1 7 6
+f 1 6 5
+f 1 5 11
+f 1 11 2
+f 2 3 8
+f 2 8 7
+f 2 11 3
+f 3 4 9
+f 3 9 8
+f 3 11 4
+f 4 5 10
+f 4 10 9
+f 4 11 5
+f 5 6 10
+f 6 7 12
+f 6 12 10
+f 7 8 12
+f 8 9 12
+f 9 10 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s01.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s01.obj
new file mode 100644
index 00000000..f493d9c7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s01.obj
@@ -0,0 +1,26 @@
+v -0.50000000 -0.86602540 -0.00000000
+v -1.00000000 0.00000000 -0.00000000
+v -0.50000000 0.86602540 -0.00000000
+v 0.50000000 0.86602540 -0.00000000
+v 1.00000000 0.00000000 -0.00000000
+v 0.50000000 -0.86602540 -0.00000000
+v -0.50000000 -0.28867513 -0.81649658
+v 0.00000000 0.57735027 -0.81649658
+v 0.50000000 -0.28867513 -0.81649658
+v 0.00000000 -0.57735027 0.81649658
+v 0.50000000 0.28867513 0.81649658
+v -0.50000000 0.28867513 0.81649658
+f 1 2 7
+f 1 7 9 6
+f 1 6 10
+f 1 10 12 2
+f 2 3 8 7
+f 2 12 3
+f 3 4 8
+f 3 12 11 4
+f 4 5 9 8
+f 4 11 5
+f 5 6 9
+f 5 11 10 6
+f 7 8 9
+f 10 11 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s02.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s02.obj
new file mode 100644
index 00000000..cc2dc6cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s02.obj
@@ -0,0 +1,62 @@
+v -0.30901699 -0.95105652 -0.00000000
+v -0.80901699 -0.58778525 -0.00000000
+v -1.00000000 0.00000000 -0.00000000
+v -0.80901699 0.58778525 -0.00000000
+v -0.30901700 0.95105652 -0.00000000
+v 0.30901699 0.95105652 -0.00000000
+v 0.80901699 0.58778525 -0.00000000
+v 1.00000000 0.00000000 -0.00000000
+v 0.80901699 -0.58778525 -0.00000000
+v 0.30901699 -0.95105652 -0.00000000
+v 0.00000000 -0.85065081 -0.52573111
+v -0.80901699 -0.26286556 -0.52573111
+v -0.50000000 0.68819096 -0.52573111
+v 0.50000000 0.68819096 -0.52573111
+v 0.80901699 -0.26286556 -0.52573111
+v -0.30901699 -0.42532540 -0.85065081
+v -0.50000000 0.16245985 -0.85065081
+v 0.00000000 0.52573111 -0.85065081
+v 0.50000000 0.16245985 -0.85065081
+v 0.30901699 -0.42532540 -0.85065081
+v -0.50000000 -0.68819096 0.52573111
+v 0.50000000 -0.68819096 0.52573111
+v 0.80901699 0.26286556 0.52573111
+v -0.00000000 0.85065081 0.52573111
+v -0.80901699 0.26286556 0.52573111
+v 0.00000000 -0.52573111 0.85065081
+v 0.50000000 -0.16245985 0.85065081
+v 0.30901699 0.42532540 0.85065081
+v -0.30901699 0.42532540 0.85065081
+v -0.50000000 -0.16245985 0.85065081
+f 1 2 12 16 11
+f 1 11 10
+f 1 10 22 26 21
+f 1 21 2
+f 2 3 12
+f 2 21 30 25 3
+f 3 4 13 17 12
+f 3 25 4
+f 4 5 13
+f 4 25 29 24 5
+f 5 6 14 18 13
+f 5 24 6
+f 6 7 14
+f 6 24 28 23 7
+f 7 8 15 19 14
+f 7 23 8
+f 8 9 15
+f 8 23 27 22 9
+f 9 10 11 20 15
+f 9 22 10
+f 11 16 20
+f 12 17 16
+f 13 18 17
+f 14 19 18
+f 15 20 19
+f 16 17 18 19 20
+f 21 26 30
+f 22 27 26
+f 23 28 27
+f 24 29 28
+f 25 30 29
+f 26 27 28 29 30
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s03.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s03.obj
new file mode 100644
index 00000000..0663c724
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s03.obj
@@ -0,0 +1,20 @@
+v -0.42640143 -0.73854895 0.52223297
+v -0.85280287 0.00000000 0.52223297
+v -0.42640143 0.73854895 0.52223297
+v 0.42640143 0.73854895 0.52223297
+v 0.85280287 -0.00000000 0.52223297
+v 0.42640143 -0.73854895 0.52223297
+v -0.85280287 -0.49236596 -0.17407766
+v 0.00000000 0.98473193 -0.17407766
+v 0.85280287 -0.49236596 -0.17407766
+v -0.42640143 -0.24618298 -0.87038828
+v 0.00000000 0.49236596 -0.87038828
+v 0.42640143 -0.24618298 -0.87038828
+f 1 2 7
+f 1 7 10 12 9 6
+f 1 6 5 4 3 2
+f 2 3 8 11 10 7
+f 3 4 8
+f 4 5 9 12 11 8
+f 5 6 9
+f 10 11 12
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s04.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s04.obj
new file mode 100644
index 00000000..58e0fa0c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s04.obj
@@ -0,0 +1,38 @@
+v -0.31622777 -0.54772256 0.77459667
+v -0.63245553 0.00000000 0.77459667
+v -0.31622777 0.54772256 0.77459667
+v 0.31622777 0.54772256 0.77459667
+v 0.63245553 -0.00000000 0.77459667
+v 0.31622777 -0.54772256 0.77459667
+v -0.31622777 -0.91287093 0.25819889
+v -0.94868330 0.18257419 0.25819889
+v -0.63245553 0.73029674 0.25819889
+v 0.63245553 0.73029674 0.25819889
+v 0.94868330 0.18257419 0.25819889
+v 0.31622777 -0.91287093 0.25819889
+v -0.63245553 -0.73029674 -0.25819889
+v -0.94868330 -0.18257419 -0.25819889
+v -0.31622777 0.91287093 -0.25819889
+v 0.31622777 0.91287093 -0.25819889
+v 0.94868330 -0.18257419 -0.25819889
+v 0.63245553 -0.73029674 -0.25819889
+v -0.31622777 -0.54772256 -0.77459667
+v -0.63245553 0.00000000 -0.77459667
+v -0.31622777 0.54772256 -0.77459667
+v 0.31622777 0.54772256 -0.77459667
+v 0.63245553 -0.00000000 -0.77459667
+v 0.31622777 -0.54772256 -0.77459667
+f 1 7 12 6
+f 1 6 5 4 3 2
+f 1 2 8 14 13 7
+f 2 3 9 8
+f 3 4 10 16 15 9
+f 4 5 11 10
+f 5 6 12 18 17 11
+f 7 13 19 24 18 12
+f 8 9 15 21 20 14
+f 10 11 17 23 22 16
+f 13 14 20 19
+f 15 16 22 21
+f 17 18 24 23
+f 19 20 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s05.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s05.obj
new file mode 100644
index 00000000..a2ec5ff1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s05.obj
@@ -0,0 +1,38 @@
+v -0.28108464 -0.67859834 0.67859834
+v -0.67859834 -0.28108464 0.67859834
+v -0.67859834 0.28108464 0.67859834
+v -0.28108464 0.67859834 0.67859834
+v 0.28108464 0.67859834 0.67859834
+v 0.67859834 0.28108464 0.67859834
+v 0.67859834 -0.28108464 0.67859834
+v 0.28108464 -0.67859834 0.67859834
+v 0.00000000 -0.95968298 0.28108464
+v -0.95968298 0.00000000 0.28108464
+v 0.00000000 0.95968298 0.28108464
+v 0.95968298 -0.00000000 0.28108464
+v -0.00000000 -0.95968298 -0.28108464
+v -0.95968298 0.00000000 -0.28108464
+v 0.00000000 0.95968298 -0.28108464
+v 0.95968298 -0.00000000 -0.28108464
+v -0.28108464 -0.67859834 -0.67859834
+v -0.67859834 -0.28108464 -0.67859834
+v -0.67859834 0.28108464 -0.67859834
+v -0.28108464 0.67859834 -0.67859834
+v 0.28108464 0.67859834 -0.67859834
+v 0.67859834 0.28108464 -0.67859834
+v 0.67859834 -0.28108464 -0.67859834
+v 0.28108464 -0.67859834 -0.67859834
+f 1 2 10 14 18 17 13 9
+f 1 9 8
+f 1 8 7 6 5 4 3 2
+f 2 3 10
+f 3 4 11 15 20 19 14 10
+f 4 5 11
+f 5 6 12 16 22 21 15 11
+f 6 7 12
+f 7 8 9 13 24 23 16 12
+f 13 17 24
+f 14 19 18
+f 15 21 20
+f 16 23 22
+f 17 18 19 20 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s06.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s06.obj
new file mode 100644
index 00000000..4167cae1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s06.obj
@@ -0,0 +1,92 @@
+v -0.20177411 -0.27771823 0.93923362
+v -0.40354821 -0.55543646 0.72707577
+v -0.20177411 -0.83315470 0.51491792
+v 0.20177411 -0.83315470 0.51491792
+v 0.40354821 -0.55543646 0.72707577
+v 0.20177411 -0.27771823 0.93923362
+v -0.32647736 0.10607893 0.93923362
+v -0.65295472 0.21215785 0.72707577
+v -0.85472883 -0.06556038 0.51491792
+v -0.73002557 -0.44935754 0.51491792
+v -0.73002557 -0.66151539 0.17163931
+v -0.40354821 -0.89871508 0.17163931
+v -0.20177411 -0.96427546 -0.17163931
+v 0.20177411 -0.96427546 -0.17163931
+v 0.40354821 -0.89871508 0.17163931
+v 0.73002557 -0.66151539 0.17163931
+v 0.73002557 -0.44935754 0.51491792
+v 0.85472883 -0.06556038 0.51491792
+v 0.65295472 0.21215785 0.72707577
+v 0.32647736 0.10607893 0.93923362
+v -0.00000000 0.34327861 0.93923362
+v -0.65295472 0.55543646 0.51491792
+v -0.85472883 0.48987608 0.17163931
+v -0.97943209 0.10607893 0.17163931
+v -0.97943209 -0.10607892 -0.17163931
+v -0.85472883 -0.48987608 -0.17163931
+v -0.65295472 -0.55543646 -0.51491792
+v -0.32647736 -0.79263615 -0.51491792
+v -0.00000000 -0.68655723 -0.72707577
+v 0.32647736 -0.79263615 -0.51491792
+v 0.65295472 -0.55543646 -0.51491792
+v 0.85472883 -0.48987608 -0.17163931
+v 0.97943209 -0.10607893 -0.17163931
+v 0.97943209 0.10607893 0.17163931
+v 0.85472883 0.48987608 0.17163931
+v 0.65295472 0.55543646 0.51491792
+v 0.32647736 0.79263615 0.51491792
+v 0.00000000 0.68655723 0.72707577
+v -0.32647736 0.79263615 0.51491792
+v -0.73002557 0.66151539 -0.17163931
+v -0.73002557 0.44935754 -0.51491792
+v -0.85472883 0.06556038 -0.51491792
+v -0.65295472 -0.21215785 -0.72707577
+v -0.32647736 -0.10607892 -0.93923362
+v 0.00000000 -0.34327861 -0.93923362
+v 0.32647736 -0.10607892 -0.93923362
+v 0.65295472 -0.21215785 -0.72707577
+v 0.85472883 0.06556038 -0.51491792
+v 0.73002557 0.44935754 -0.51491792
+v 0.73002557 0.66151539 -0.17163931
+v 0.40354821 0.89871508 -0.17163931
+v 0.20177411 0.96427546 0.17163931
+v -0.20177411 0.96427546 0.17163931
+v -0.40354821 0.89871508 -0.17163931
+v -0.20177411 0.83315469 -0.51491792
+v -0.40354821 0.55543646 -0.72707577
+v -0.20177411 0.27771823 -0.93923362
+v 0.20177410 0.27771823 -0.93923362
+v 0.40354821 0.55543646 -0.72707577
+v 0.20177411 0.83315469 -0.51491792
+f 1 6 20 21 7
+f 1 7 8 9 10 2
+f 1 2 3 4 5 6
+f 2 10 11 12 3
+f 3 12 13 14 15 4
+f 4 15 16 17 5
+f 5 17 18 19 20 6
+f 7 21 38 39 22 8
+f 8 22 23 24 9
+f 9 24 25 26 11 10
+f 11 26 27 28 13 12
+f 13 28 29 30 14
+f 14 30 31 32 16 15
+f 16 32 33 34 18 17
+f 18 34 35 36 19
+f 19 36 37 38 21 20
+f 22 39 53 54 40 23
+f 23 40 41 42 25 24
+f 25 42 43 27 26
+f 27 43 44 45 29 28
+f 29 45 46 47 31 30
+f 31 47 48 33 32
+f 33 48 49 50 35 34
+f 35 50 51 52 37 36
+f 37 52 53 39 38
+f 40 54 55 56 41
+f 41 56 57 44 43 42
+f 44 57 58 46 45
+f 46 58 59 49 48 47
+f 49 59 60 51 50
+f 51 60 55 54 53 52
+f 55 60 59 58 57 56
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s07.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s07.obj
new file mode 100644
index 00000000..5820f529
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s07.obj
@@ -0,0 +1,92 @@
+v -0.16838141 -0.51822468 0.83850515
+v -0.44082824 -0.32028047 0.83850515
+v -0.54489368 0.00000000 0.83850515
+v -0.44082824 0.32028047 0.83850515
+v -0.16838141 0.51822468 0.83850515
+v 0.16838141 0.51822468 0.83850515
+v 0.44082824 0.32028047 0.83850515
+v 0.54489368 0.00000000 0.83850515
+v 0.44082824 -0.32028047 0.83850515
+v 0.16838141 -0.51822468 0.83850515
+v 0.00000000 -0.74998180 0.66145846
+v -0.00000000 -0.92702849 0.37499090
+v 0.16838141 -0.98173893 0.08852334
+v 0.44082824 -0.89321558 -0.08852334
+v 0.71327508 -0.69527137 -0.08852334
+v 0.88165649 -0.46351425 0.08852334
+v 0.88165649 -0.28646756 0.37499090
+v 0.71327508 -0.23175712 0.66145846
+v -0.16838141 -0.98173893 0.08852334
+v -0.44082824 -0.89321558 -0.08852334
+v -0.71327508 -0.69527137 -0.08852334
+v -0.88165649 -0.46351425 0.08852334
+v -0.88165649 -0.28646756 0.37499090
+v -0.71327508 -0.23175712 0.66145846
+v -0.98572192 -0.14323378 0.08852334
+v -0.98572192 0.14323378 -0.08852334
+v -0.88165649 0.46351425 -0.08852334
+v -0.71327508 0.69527137 0.08852334
+v -0.54489368 0.74998180 0.37499090
+v -0.44082824 0.60674802 0.66145846
+v -0.44082824 0.89321558 0.08852334
+v -0.16838141 0.98173893 -0.08852334
+v 0.16838141 0.98173893 -0.08852334
+v 0.44082824 0.89321558 0.08852334
+v 0.54489368 0.74998180 0.37499090
+v 0.44082824 0.60674802 0.66145846
+v 0.71327508 0.69527137 0.08852334
+v 0.88165649 0.46351425 -0.08852334
+v 0.98572192 0.14323378 -0.08852334
+v 0.98572192 -0.14323378 0.08852334
+v 0.54489368 -0.74998180 -0.37499090
+v 0.44082824 -0.60674802 -0.66145846
+v 0.16838141 -0.51822468 -0.83850515
+v -0.16838141 -0.51822468 -0.83850515
+v -0.44082824 -0.60674802 -0.66145846
+v -0.54489368 -0.74998180 -0.37499090
+v -0.44082824 -0.32028047 -0.83850515
+v -0.54489367 0.00000000 -0.83850515
+v -0.71327508 0.23175712 -0.66145846
+v -0.88165649 0.28646756 -0.37499090
+v -0.44082824 0.32028047 -0.83850515
+v -0.16838141 0.51822468 -0.83850515
+v 0.00000000 0.74998180 -0.66145846
+v 0.00000000 0.92702849 -0.37499090
+v 0.16838141 0.51822468 -0.83850515
+v 0.44082824 0.32028047 -0.83850515
+v 0.71327508 0.23175712 -0.66145846
+v 0.88165649 0.28646756 -0.37499090
+v 0.54489368 -0.00000000 -0.83850515
+v 0.44082824 -0.32028047 -0.83850515
+f 1 2 24 23 22 21 20 19 12 11
+f 1 11 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 24
+f 3 4 30 29 28 27 26 25 23 24
+f 4 5 30
+f 5 6 36 35 34 33 32 31 29 30
+f 6 7 36
+f 7 8 18 17 40 39 38 37 35 36
+f 8 9 18
+f 9 10 11 12 13 14 15 16 17 18
+f 12 19 13
+f 13 19 20 46 45 44 43 42 41 14
+f 14 41 15
+f 15 41 42 60 59 57 58 39 40 16
+f 16 40 17
+f 20 21 46
+f 21 22 25 26 50 49 48 47 45 46
+f 22 23 25
+f 26 27 50
+f 27 28 31 32 54 53 52 51 49 50
+f 28 29 31
+f 32 33 54
+f 33 34 37 38 58 57 56 55 53 54
+f 34 35 37
+f 38 39 58
+f 42 43 60
+f 43 44 47 48 51 52 55 56 59 60
+f 44 45 47
+f 48 49 51
+f 52 53 55
+f 56 57 59
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s08.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s08.obj
new file mode 100644
index 00000000..8441f42c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s08.obj
@@ -0,0 +1,50 @@
+v -0.35740674 -0.86285621 0.35740674
+v -0.86285621 -0.35740674 0.35740674
+v -0.86285621 0.35740674 0.35740674
+v -0.35740674 0.86285621 0.35740674
+v 0.35740674 0.86285621 0.35740674
+v 0.86285621 0.35740674 0.35740674
+v 0.86285621 -0.35740674 0.35740674
+v 0.35740674 -0.86285621 0.35740674
+v -0.35740674 -0.86285621 -0.35740674
+v -0.86285621 -0.35740674 -0.35740674
+v -0.86285621 0.35740674 -0.35740674
+v -0.35740674 0.86285621 -0.35740674
+v 0.35740674 0.86285621 -0.35740674
+v 0.86285621 0.35740674 -0.35740674
+v 0.86285621 -0.35740674 -0.35740674
+v 0.35740674 -0.86285621 -0.35740674
+v -0.35740674 -0.35740674 0.86285621
+v 0.35740674 -0.35740674 0.86285621
+v 0.35740674 0.35740674 0.86285621
+v -0.35740674 0.35740674 0.86285621
+v -0.35740674 -0.35740674 -0.86285621
+v -0.35740674 0.35740674 -0.86285621
+v 0.35740674 0.35740674 -0.86285621
+v 0.35740674 -0.35740674 -0.86285621
+f 1 2 10 9
+f 1 9 16 8
+f 1 8 18 17
+f 1 17 2
+f 2 3 11 10
+f 2 17 20 3
+f 3 4 12 11
+f 3 20 4
+f 4 5 13 12
+f 4 20 19 5
+f 5 6 14 13
+f 5 19 6
+f 6 7 15 14
+f 6 19 18 7
+f 7 8 16 15
+f 7 18 8
+f 9 10 21
+f 9 21 24 16
+f 10 11 22 21
+f 11 12 22
+f 12 13 23 22
+f 13 14 23
+f 14 15 24 23
+f 15 16 24
+f 17 18 19 20
+f 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s09.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s09.obj
new file mode 100644
index 00000000..40f8fdd8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s09.obj
@@ -0,0 +1,122 @@
+v -0.22391898 -0.68915176 0.68915176
+v -0.58622750 -0.42591921 0.68915176
+v -0.72461704 -0.00000000 0.68915176
+v -0.58622750 0.42591921 0.68915176
+v -0.22391898 0.68915176 0.68915176
+v 0.22391898 0.68915176 0.68915176
+v 0.58622750 0.42591921 0.68915176
+v 0.72461704 -0.00000000 0.68915176
+v 0.58622750 -0.42591921 0.68915176
+v 0.22391898 -0.68915176 0.68915176
+v -0.22391898 -0.92459411 0.30819804
+v -0.81014648 -0.49867490 0.30819804
+v -0.94853602 -0.07275569 0.30819804
+v -0.72461704 0.61639607 0.30819804
+v -0.36230852 0.87962862 0.30819804
+v 0.36230852 0.87962862 0.30819804
+v 0.72461704 0.61639607 0.30819804
+v 0.94853602 -0.07275569 0.30819804
+v 0.81014648 -0.49867490 0.30819804
+v 0.22391898 -0.92459411 0.30819804
+v 0.00000000 -0.99734979 -0.07275569
+v -0.58622750 -0.80687293 0.07275569
+v -0.94853602 0.30819804 0.07275569
+v 0.00000000 0.99734979 0.07275569
+v 0.94853602 0.30819803 0.07275569
+v 0.58622750 -0.80687293 0.07275569
+v -0.36230852 -0.87962862 -0.30819804
+v -0.22391898 -0.68915176 -0.68915176
+v -0.22391898 -0.30819804 -0.92459411
+v -0.36230852 0.11772117 -0.92459411
+v -0.58622750 0.42591921 -0.68915176
+v -0.81014648 0.49867490 -0.30819804
+v 0.36230852 -0.87962862 -0.30819804
+v 0.22391898 -0.68915176 -0.68915176
+v 0.22391898 -0.30819803 -0.92459411
+v 0.36230852 0.11772117 -0.92459411
+v 0.58622750 0.42591921 -0.68915176
+v 0.81014648 0.49867490 -0.30819804
+v -0.00000000 0.38095372 -0.92459410
+v -0.22391898 0.68915176 -0.68915176
+v 0.22391898 0.68915176 -0.68915176
+v -0.22391898 0.92459411 -0.30819804
+v 0.22391898 0.92459411 -0.30819804
+v 0.58622750 0.80687293 -0.07275569
+v -0.58622750 0.80687293 -0.07275569
+v 0.00000000 -0.38095372 0.92459411
+v 0.36230852 -0.11772117 0.92459411
+v 0.22391898 0.30819804 0.92459411
+v -0.22391898 0.30819804 0.92459411
+v -0.36230852 -0.11772117 0.92459411
+v -0.94853602 -0.30819804 -0.07275569
+v -0.94853602 0.07275569 -0.30819804
+v -0.72461704 -0.00000000 -0.68915176
+v -0.58622750 -0.42591921 -0.68915176
+v -0.72461704 -0.61639607 -0.30819804
+v 0.94853602 -0.30819804 -0.07275569
+v 0.72461704 -0.61639607 -0.30819804
+v 0.58622750 -0.42591921 -0.68915176
+v 0.72461704 0.00000000 -0.68915176
+v 0.94853602 0.07275569 -0.30819804
+f 1 2 12 22 11
+f 1 11 20 10
+f 1 10 46
+f 1 46 50 2
+f 2 3 13 12
+f 2 50 3
+f 3 4 14 23 13
+f 3 50 49 4
+f 4 5 15 14
+f 4 49 5
+f 5 6 16 24 15
+f 5 49 48 6
+f 6 7 17 16
+f 6 48 7
+f 7 8 18 25 17
+f 7 48 47 8
+f 8 9 19 18
+f 8 47 9
+f 9 10 20 26 19
+f 9 47 46 10
+f 11 22 27 21
+f 11 21 20
+f 12 13 51
+f 12 51 55 22
+f 13 23 52 51
+f 14 15 45
+f 14 45 32 23
+f 15 24 42 45
+f 16 17 44
+f 16 44 43 24
+f 17 25 38 44
+f 18 19 56
+f 18 56 60 25
+f 19 26 57 56
+f 20 21 33 26
+f 21 27 28 34 33
+f 22 55 27
+f 23 32 52
+f 24 43 42
+f 25 60 38
+f 26 33 57
+f 27 55 54 28
+f 28 29 35 34
+f 28 54 29
+f 29 30 39 36 35
+f 29 54 53 30
+f 30 31 40 39
+f 30 53 31
+f 31 32 45 42 40
+f 31 53 52 32
+f 33 34 58 57
+f 34 35 58
+f 35 36 59 58
+f 36 39 41 37
+f 36 37 59
+f 37 41 43 44 38
+f 37 38 60 59
+f 39 40 41
+f 40 42 43 41
+f 46 47 48 49 50
+f 51 52 53 54 55
+f 56 57 58 59 60
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s10.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s10.obj
new file mode 100644
index 00000000..c9027972
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s10.obj
@@ -0,0 +1,74 @@
+v -0.21573941 -0.52084100 0.82594259
+v -0.52084100 -0.21573941 0.82594259
+v -0.52084100 0.21573941 0.82594259
+v -0.21573941 0.52084100 0.82594259
+v 0.21573941 0.52084100 0.82594259
+v 0.52084100 0.21573941 0.82594259
+v 0.52084100 -0.21573941 0.82594259
+v 0.21573941 -0.52084100 0.82594259
+v -0.21573941 -0.82594259 0.52084100
+v -0.82594259 -0.21573941 0.52084100
+v -0.82594259 0.21573941 0.52084100
+v -0.21573941 0.82594259 0.52084100
+v 0.21573941 0.82594259 0.52084100
+v 0.82594259 0.21573941 0.52084100
+v 0.82594259 -0.21573941 0.52084100
+v 0.21573941 -0.82594259 0.52084100
+v -0.52084100 -0.82594259 0.21573941
+v -0.82594259 -0.52084100 0.21573941
+v -0.82594259 0.52084100 0.21573941
+v -0.52084100 0.82594259 0.21573941
+v 0.52084100 0.82594259 0.21573941
+v 0.82594259 0.52084100 0.21573941
+v 0.82594259 -0.52084100 0.21573941
+v 0.52084100 -0.82594259 0.21573941
+v 0.52084100 -0.82594259 -0.21573941
+v 0.21573940 -0.82594259 -0.52084100
+v -0.21573941 -0.82594259 -0.52084100
+v -0.52084100 -0.82594259 -0.21573941
+v -0.82594259 -0.52084100 -0.21573941
+v -0.82594259 -0.21573941 -0.52084100
+v -0.82594259 0.21573941 -0.52084100
+v -0.82594259 0.52084100 -0.21573941
+v -0.52084100 0.82594259 -0.21573941
+v -0.21573941 0.82594259 -0.52084100
+v 0.21573941 0.82594259 -0.52084100
+v 0.52084100 0.82594259 -0.21573941
+v 0.82594259 0.52084100 -0.21573941
+v 0.82594259 0.21573941 -0.52084100
+v 0.82594259 -0.21573941 -0.52084100
+v 0.82594259 -0.52084100 -0.21573941
+v 0.52084100 -0.21573941 -0.82594259
+v 0.52084100 0.21573941 -0.82594259
+v 0.21573941 0.52084100 -0.82594259
+v -0.21573941 0.52084100 -0.82594259
+v -0.52084100 0.21573941 -0.82594259
+v -0.52084100 -0.21573941 -0.82594259
+v -0.21573941 -0.52084100 -0.82594259
+v 0.21573940 -0.52084100 -0.82594259
+f 1 2 10 18 17 9
+f 1 9 16 8
+f 1 8 7 6 5 4 3 2
+f 2 3 11 10
+f 3 4 12 20 19 11
+f 4 5 13 12
+f 5 6 14 22 21 13
+f 6 7 15 14
+f 7 8 16 24 23 15
+f 9 17 28 27 26 25 24 16
+f 10 11 19 32 31 30 29 18
+f 12 13 21 36 35 34 33 20
+f 14 15 23 40 39 38 37 22
+f 17 18 29 28
+f 19 20 33 32
+f 21 22 37 36
+f 23 24 25 40
+f 25 26 48 41 39 40
+f 26 27 47 48
+f 27 28 29 30 46 47
+f 30 31 45 46
+f 31 32 33 34 44 45
+f 34 35 43 44
+f 35 36 37 38 42 43
+f 38 39 41 42
+f 41 48 47 46 45 44 43 42
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s11.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s11.obj
new file mode 100644
index 00000000..496cd08e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s11.obj
@@ -0,0 +1,182 @@
+v -0.13149606 -0.40470333 0.90494412
+v -0.34426119 -0.25012042 0.90494412
+v -0.42553024 -0.00000001 0.90494412
+v -0.34426119 0.25012040 0.90494412
+v -0.13149606 0.40470332 0.90494412
+v 0.13149611 0.40470332 0.90494412
+v 0.34426124 0.25012040 0.90494412
+v 0.42553028 -0.00000001 0.90494412
+v 0.34426124 -0.25012042 0.90494412
+v 0.13149611 -0.40470333 0.90494412
+v -0.13149606 -0.62841783 0.76668096
+v -0.34426119 -0.69754941 0.62841780
+v -0.42553024 -0.80940666 0.40470330
+v -0.34426119 -0.92126391 0.18098881
+v -0.13149606 -0.99039549 0.04272564
+v 0.13149611 -0.99039549 0.04272564
+v 0.34426124 -0.92126391 0.18098881
+v 0.42553028 -0.80940666 0.40470330
+v 0.34426124 -0.69754941 0.62841780
+v 0.13149611 -0.62841783 0.76668096
+v -0.55702632 -0.54296650 0.62841780
+v -0.55702632 -0.31925200 0.76668096
+v -0.63829537 -0.06913159 0.76668096
+v -0.76979145 0.11185724 0.62841780
+v -0.90128753 0.15458291 0.40470330
+v -0.98255658 0.04272566 0.18098880
+v -0.98255658 -0.18098884 0.04272564
+v -0.90128753 -0.43110925 0.04272564
+v -0.76979145 -0.61209808 0.18098881
+v -0.63829537 -0.65482375 0.40470330
+v -0.82001848 0.54296648 0.18098881
+v -0.82001848 0.40470332 0.40470330
+v -0.68852240 0.36197765 0.62841780
+v -0.47575727 0.43110923 0.76668096
+v -0.26299214 0.58569215 0.76668096
+v -0.13149606 0.76668098 0.62841780
+v -0.13149606 0.90494414 0.40470330
+v -0.26299214 0.94766981 0.18098881
+v -0.47575727 0.87853823 0.04272564
+v -0.68852240 0.72395531 0.04272564
+v 0.47575732 0.87853821 0.04272564
+v 0.26299219 0.94766979 0.18098880
+v 0.13149611 0.90494413 0.40470330
+v 0.13149611 0.76668098 0.62841780
+v 0.26299219 0.58569215 0.76668096
+v 0.47575732 0.43110923 0.76668096
+v 0.68852245 0.36197765 0.62841780
+v 0.82001853 0.40470330 0.40470331
+v 0.82001853 0.54296646 0.18098881
+v 0.68852245 0.72395529 0.04272564
+v 0.63829541 -0.65482375 0.40470330
+v 0.76979150 -0.61209808 0.18098881
+v 0.90128758 -0.43110925 0.04272564
+v 0.98255663 -0.18098884 0.04272564
+v 0.98255647 0.04272561 0.18098879
+v 0.90128750 0.15458288 0.40470331
+v 0.76979150 0.11185724 0.62841780
+v 0.63829541 -0.06913159 0.76668096
+v 0.55702637 -0.31925200 0.76668096
+v 0.55702637 -0.54296650 0.62841780
+v -0.47575727 -0.87853824 -0.04272569
+v -0.68852240 -0.72395533 -0.04272569
+v -0.82001848 -0.54296650 -0.18098886
+v -0.82001848 -0.40470333 -0.40470335
+v -0.68852240 -0.36197767 -0.62841785
+v -0.47575727 -0.43110925 -0.76668101
+v -0.26299214 -0.58569216 -0.76668101
+v -0.13149605 -0.76668099 -0.62841784
+v -0.13149606 -0.90494416 -0.40470335
+v -0.26299214 -0.94766982 -0.18098885
+v -0.90128753 -0.15458292 -0.40470335
+v -0.98255658 -0.04272567 -0.18098885
+v -0.98255658 0.18098882 -0.04272569
+v -0.90128753 0.43110923 -0.04272569
+v -0.76979145 0.61209806 -0.18098885
+v -0.63829536 0.65482373 -0.40470335
+v -0.55702632 0.54296648 -0.62841785
+v -0.55702632 0.31925199 -0.76668101
+v -0.63829537 0.06913157 -0.76668101
+v -0.76979145 -0.11185726 -0.62841785
+v -0.13149606 0.62841781 -0.76668101
+v -0.34426119 0.69754940 -0.62841785
+v -0.42553023 0.80940665 -0.40470335
+v -0.34426119 0.92126389 -0.18098885
+v -0.13149606 0.99039547 -0.04272569
+v 0.13149611 0.99039546 -0.04272569
+v 0.34426124 0.92126387 -0.18098886
+v 0.42553028 0.80940661 -0.40470335
+v 0.34426124 0.69754939 -0.62841785
+v 0.13149611 0.62841781 -0.76668101
+v 0.76979153 -0.11185725 -0.62841782
+v 0.63829541 0.06913155 -0.76668097
+v 0.55702634 0.31925197 -0.76668097
+v 0.55702635 0.54296649 -0.62841782
+v 0.63829541 0.65482370 -0.40470335
+v 0.76979149 0.61209803 -0.18098885
+v 0.90128750 0.43110919 -0.04272571
+v 0.98255648 0.18098877 -0.04272572
+v 0.98255640 -0.04272561 -0.18098874
+v 0.90128711 -0.15458281 -0.40470320
+v 0.26299219 -0.94766982 -0.18098885
+v 0.13149611 -0.90494416 -0.40470335
+v 0.13149611 -0.76668098 -0.62841784
+v 0.26299219 -0.58569215 -0.76668099
+v 0.47575682 -0.43110886 -0.76668009
+v 0.68852237 -0.36197738 -0.62841730
+v 0.82001805 -0.40470325 -0.40470322
+v 0.82001853 -0.54296650 -0.18098885
+v 0.68852245 -0.72395533 -0.04272569
+v 0.47575732 -0.87853824 -0.04272569
+v -0.13149606 -0.40470333 -0.90494417
+v -0.34426119 -0.25012042 -0.90494417
+v -0.42553024 -0.00000000 -0.90494417
+v -0.34426119 0.25012040 -0.90494417
+v -0.13149606 0.40470332 -0.90494417
+v 0.13149611 0.40470332 -0.90494417
+v 0.34426120 0.25012038 -0.90494414
+v 0.42553027 -0.00000003 -0.90494414
+v 0.34426060 -0.25012001 -0.90494332
+v 0.13149611 -0.40470332 -0.90494416
+f 1 2 22 21 12 11
+f 1 11 20 10
+f 1 10 9 8 7 6 5 4 3 2
+f 2 3 23 22
+f 3 4 34 33 24 23
+f 4 5 35 34
+f 5 6 45 44 36 35
+f 6 7 46 45
+f 7 8 58 57 47 46
+f 8 9 59 58
+f 9 10 20 19 60 59
+f 11 12 13 14 15 16 17 18 19 20
+f 12 21 30 13
+f 13 30 29 62 61 14
+f 14 61 70 15
+f 15 70 69 102 101 16
+f 16 101 110 17
+f 17 110 109 52 51 18
+f 18 51 60 19
+f 21 22 23 24 25 26 27 28 29 30
+f 24 33 32 25
+f 25 32 31 74 73 26
+f 26 73 72 27
+f 27 72 71 64 63 28
+f 28 63 62 29
+f 31 32 33 34 35 36 37 38 39 40
+f 31 40 75 74
+f 36 44 43 37
+f 37 43 42 86 85 38
+f 38 85 84 39
+f 39 84 83 76 75 40
+f 41 42 43 44 45 46 47 48 49 50
+f 41 50 96 95 88 87
+f 41 87 86 42
+f 47 57 56 48
+f 48 56 55 98 97 49
+f 49 97 96 50
+f 51 52 53 54 55 56 57 58 59 60
+f 52 109 108 53
+f 53 108 107 100 99 54
+f 54 99 98 55
+f 61 62 63 64 65 66 67 68 69 70
+f 64 71 80 65
+f 65 80 79 113 112 66
+f 66 112 111 67
+f 67 111 120 104 103 68
+f 68 103 102 69
+f 71 72 73 74 75 76 77 78 79 80
+f 76 83 82 77
+f 77 82 81 115 114 78
+f 78 114 113 79
+f 81 82 83 84 85 86 87 88 89 90
+f 81 90 116 115
+f 88 95 94 89
+f 89 94 93 117 116 90
+f 91 92 93 94 95 96 97 98 99 100
+f 91 100 107 106
+f 91 106 105 119 118 92
+f 92 118 117 93
+f 101 102 103 104 105 106 107 108 109 110
+f 104 120 119 105
+f 111 112 113 114 115 116 117 118 119 120
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12L.obj
new file mode 100644
index 00000000..aaee84e5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12L.obj
@@ -0,0 +1,62 @@
+v -0.37210275 -0.37210283 0.85033943
+v -0.37210275 0.37210284 0.85033943
+v 0.37210291 0.37210284 0.85033943
+v 0.37210291 -0.37210283 0.85033943
+v -0.68440375 -0.68440382 0.25135842
+v -0.88671195 0.00000000 0.46232019
+v -0.68440375 0.68440383 0.25135842
+v 0.00000008 0.88671203 0.46232019
+v 0.68440391 0.68440383 0.25135842
+v 0.88671211 0.00000000 0.46232019
+v 0.68440391 -0.68440382 0.25135842
+v 0.00000008 -0.88671202 0.46232019
+v -0.74420553 -0.48209560 -0.46232023
+v -0.94651373 0.20230822 -0.25135846
+v -0.48209559 0.74420581 -0.46232023
+v 0.20230824 0.94651401 -0.25135846
+v 0.74420550 0.48209553 -0.46232032
+v 0.94651368 -0.20230824 -0.25135852
+v 0.48209586 -0.74420614 -0.46232018
+v -0.20230823 -0.94651406 -0.25135841
+v -0.51460872 0.10999275 -0.85033925
+v 0.10999269 0.51461005 -0.85033999
+v 0.51460748 -0.10999294 -0.85033865
+v -0.10999264 -0.51460945 -0.85033947
+f 1 2 6
+f 1 6 5
+f 1 5 12
+f 1 12 4
+f 1 4 3 2
+f 2 3 8
+f 2 8 7
+f 2 7 6
+f 3 4 10
+f 3 10 9
+f 3 9 8
+f 4 12 11
+f 4 11 10
+f 5 6 14 13
+f 5 13 20
+f 5 20 12
+f 6 7 14
+f 7 8 16 15
+f 7 15 14
+f 8 9 16
+f 9 17 16
+f 9 10 18 17
+f 10 11 18
+f 11 12 20 19
+f 11 19 18
+f 13 14 21
+f 13 21 24
+f 13 24 20
+f 14 15 21
+f 15 16 22
+f 15 22 21
+f 16 17 22
+f 17 23 22
+f 17 18 23
+f 18 19 23
+f 19 20 24
+f 19 24 23
+f 21 22 23 24
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12R.obj
new file mode 100644
index 00000000..8cdb06b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s12R.obj
@@ -0,0 +1,62 @@
+v -0.37210283 -0.37210275 0.85033943
+v 0.37210284 -0.37210275 0.85033943
+v 0.37210284 0.37210291 0.85033943
+v -0.37210283 0.37210291 0.85033943
+v -0.68440382 -0.68440374 0.25135842
+v 0.00000000 -0.88671194 0.46232019
+v 0.68440383 -0.68440374 0.25135842
+v 0.88671203 0.00000008 0.46232019
+v 0.68440383 0.68440391 0.25135842
+v 0.00000001 0.88671211 0.46232019
+v -0.68440382 0.68440391 0.25135842
+v -0.88671202 0.00000008 0.46232019
+v -0.48209560 -0.74420553 -0.46232022
+v 0.20230822 -0.94651373 -0.25135846
+v 0.74420581 -0.48209559 -0.46232022
+v 0.94651401 0.20230824 -0.25135846
+v 0.48209553 0.74420550 -0.46232032
+v -0.20230824 0.94651368 -0.25135852
+v -0.74420614 0.48209586 -0.46232018
+v -0.94651406 -0.20230823 -0.25135841
+v 0.10999275 -0.51460872 -0.85033925
+v 0.51461005 0.10999269 -0.85033999
+v -0.10999294 0.51460747 -0.85033864
+v -0.51460944 -0.10999264 -0.85033947
+f 1 4 12
+f 1 12 5
+f 1 5 6
+f 1 6 2
+f 1 2 3 4
+f 2 6 7
+f 2 7 8
+f 2 8 3
+f 3 8 9
+f 3 9 10
+f 3 10 4
+f 4 10 11
+f 4 11 12
+f 5 12 20
+f 5 20 13
+f 5 13 14 6
+f 6 14 7
+f 7 14 15
+f 7 15 16 8
+f 8 16 9
+f 9 16 17
+f 9 17 18 10
+f 10 18 11
+f 11 18 19
+f 11 19 20 12
+f 13 20 24
+f 13 24 21
+f 13 21 14
+f 14 21 15
+f 15 21 22
+f 15 22 16
+f 16 22 17
+f 17 22 23
+f 17 23 18
+f 18 23 19
+f 19 23 24
+f 19 24 20
+f 21 24 23 22
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13L.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13L.obj
new file mode 100644
index 00000000..fe10910d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13L.obj
@@ -0,0 +1,152 @@
+v -0.23192831 -0.31922195 0.91886098
+v -0.37526789 0.12193192 0.91886098
+v 0.00000001 0.39458001 0.91886098
+v 0.37526790 0.12193192 0.91886098
+v 0.23192832 -0.31922195 0.91886098
+v -0.64379514 -0.20918173 0.73605007
+v -0.72920227 0.23693218 0.64197045
+v -0.39788728 0.54764486 0.73605007
+v 0.00000001 0.76672864 0.64197045
+v 0.39788729 0.54764486 0.73605007
+v 0.72920229 0.23693218 0.64197045
+v 0.64379516 -0.20918173 0.73605007
+v 0.45067180 -0.62029652 0.64197045
+v 0.00000001 -0.67692629 0.73605007
+v -0.45067179 -0.62029652 0.64197045
+v -0.80031956 -0.46310151 0.38082081
+v -0.68774804 0.61804289 0.38082081
+v 0.37526790 0.84507302 0.38082081
+v 0.91967637 -0.09575906 0.38082081
+v 0.19312336 -0.90425538 0.38082081
+v -0.53607892 -0.81262648 0.22859680
+v -0.80975412 -0.58290795 -0.06719747
+v -0.98246410 -0.17391866 0.06719745
+v -0.93851120 0.25872595 0.22859680
+v -0.80460617 0.58999346 -0.06719747
+v -0.46900456 0.88063506 0.06719744
+v -0.04395289 0.97252791 0.22859680
+v 0.31248017 0.94754396 -0.06719747
+v 0.69260335 0.71818105 0.06719745
+v 0.91134683 0.34232934 0.22859680
+v 0.99772955 -0.00437911 -0.06719747
+v 0.89705698 -0.43677477 0.06719744
+v 0.60719621 -0.76095675 0.22859680
+v 0.30415062 -0.95025041 -0.06719747
+v -0.13819163 -0.98812271 0.06719745
+v -0.46900456 -0.85309854 -0.22859683
+v -0.89001331 -0.25070046 -0.38082083
+v -0.95627530 0.18242790 -0.22859683
+v -0.51345952 0.76898225 -0.38082083
+v -0.12200607 0.96584518 -0.22859683
+v 0.57267787 0.72595761 -0.38082083
+v 0.88087142 0.41449724 -0.22859683
+v 0.86739393 -0.32031578 -0.38082083
+v 0.66641454 -0.70967180 -0.22859683
+v -0.03659893 -0.92392370 -0.38082084
+v -0.33866894 -0.68787802 -0.64197048
+v -0.59886666 -0.31557553 -0.73605009
+v -0.75886533 0.10952730 -0.64197048
+v -0.48519013 0.47203783 -0.73605009
+v -0.13033561 0.75556961 -0.64197047
+v 0.29900267 0.60731094 -0.73605008
+v 0.67831351 0.35744039 -0.64197048
+v 0.66998396 -0.09669904 -0.73605009
+v 0.54955640 -0.53465933 -0.64197049
+v 0.11507018 -0.66707429 -0.73605010
+v -0.17428848 -0.35400123 -0.91886092
+v -0.39053340 0.05636580 -0.91886108
+v -0.06707427 0.38883710 -0.91886080
+v 0.34907940 0.18394910 -0.91886141
+v 0.28281632 -0.27515023 -0.91886006
+f 1 2 6
+f 1 6 15
+f 1 15 14
+f 1 14 5
+f 1 5 4 3 2
+f 2 3 8
+f 2 8 7
+f 2 7 6
+f 3 4 10
+f 3 10 9
+f 3 9 8
+f 4 5 12
+f 4 12 11
+f 4 11 10
+f 5 14 13
+f 5 13 12
+f 6 7 24 23 16
+f 6 16 15
+f 7 8 17
+f 7 17 24
+f 8 9 27 26 17
+f 9 10 18
+f 9 18 27
+f 10 11 30 29 18
+f 11 12 19
+f 11 19 30
+f 12 13 33 32 19
+f 13 14 20
+f 13 20 33
+f 14 15 21 35 20
+f 15 16 21
+f 16 23 22
+f 16 22 21
+f 17 26 25
+f 17 25 24
+f 18 29 28
+f 18 28 27
+f 19 32 31
+f 19 31 30
+f 20 35 34
+f 20 34 33
+f 21 22 36
+f 21 36 35
+f 22 23 37
+f 22 37 47 46 36
+f 23 24 38
+f 23 38 37
+f 24 25 38
+f 25 26 39
+f 25 39 49 48 38
+f 26 27 40
+f 26 40 39
+f 27 28 40
+f 28 29 41
+f 28 41 51 50 40
+f 29 30 42
+f 29 42 41
+f 30 31 42
+f 31 43 53 52 42
+f 31 32 43
+f 32 44 43
+f 32 33 44
+f 33 34 44
+f 34 35 45
+f 34 45 55 54 44
+f 35 36 45
+f 36 46 45
+f 37 38 48
+f 37 48 47
+f 39 40 50
+f 39 50 49
+f 41 42 52
+f 41 52 51
+f 43 44 54
+f 43 54 53
+f 45 46 55
+f 46 47 56
+f 46 56 55
+f 47 48 57
+f 47 57 56
+f 48 49 57
+f 49 50 58
+f 49 58 57
+f 50 51 58
+f 51 59 58
+f 51 52 59
+f 52 53 59
+f 53 54 60
+f 53 60 59
+f 54 55 60
+f 55 56 60
+f 56 57 58 59 60
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13R.obj b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13R.obj
new file mode 100644
index 00000000..fa9be1b3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/s13R.obj
@@ -0,0 +1,152 @@
+v -0.23192837 -0.31922203 0.91886124
+v 0.23192838 -0.31922203 0.91886124
+v 0.37526800 0.12193196 0.91886124
+v 0.00000000 0.39458012 0.91886124
+v -0.37526799 0.12193196 0.91886124
+v 0.00000000 -0.67692647 0.73605027
+v 0.45067192 -0.62029668 0.64197064
+v 0.64379533 -0.20918178 0.73605027
+v 0.72920248 0.23693225 0.64197064
+v 0.39788740 0.54764501 0.73605027
+v 0.00000000 0.76672886 0.64197064
+v -0.39788739 0.54764501 0.73605027
+v -0.72920248 0.23693225 0.64197064
+v -0.64379532 -0.20918178 0.73605027
+v -0.45067191 -0.62029668 0.64197064
+v -0.19312341 -0.90425562 0.38082092
+v 0.80031978 -0.46310163 0.38082092
+v 0.68774824 0.61804307 0.38082092
+v -0.37526799 0.84507325 0.38082092
+v -0.91967661 -0.09575908 0.38082092
+v -0.60719637 -0.76095695 0.22859687
+v -0.30415069 -0.95025066 -0.06719748
+v 0.13819168 -0.98812298 0.06719747
+v 0.53607907 -0.81262670 0.22859687
+v 0.80975434 -0.58290810 -0.06719748
+v 0.98246437 -0.17391870 0.06719747
+v 0.93851146 0.25872603 0.22859687
+v 0.80460641 0.58999364 -0.06719748
+v 0.46900470 0.88063531 0.06719747
+v 0.04395291 0.97252818 0.22859687
+v -0.31248024 0.94754422 -0.06719748
+v -0.69260352 0.71818125 0.06719747
+v -0.91134706 0.34232943 0.22859687
+v -0.99772981 -0.00437910 -0.06719748
+v -0.89705721 -0.43677489 0.06719747
+v -0.66641472 -0.70967199 -0.22859688
+v 0.03659896 -0.92392391 -0.38082093
+v 0.46900470 -0.85309878 -0.22859688
+v 0.89001354 -0.25070051 -0.38082093
+v 0.95627558 0.18242795 -0.22859688
+v 0.51345966 0.76898245 -0.38082093
+v 0.12200611 0.96584547 -0.22859688
+v -0.57267800 0.72595780 -0.38082093
+v -0.88087165 0.41449736 -0.22859688
+v -0.86739415 -0.32031586 -0.38082093
+v -0.54955655 -0.53465945 -0.64197064
+v -0.11507021 -0.66707442 -0.73605028
+v 0.33866904 -0.68787822 -0.64197064
+v 0.59886681 -0.31557561 -0.73605027
+v 0.75886555 0.10952733 -0.64197063
+v 0.48519026 0.47203794 -0.73605027
+v 0.13033567 0.75556984 -0.64197064
+v -0.29900272 0.60731111 -0.73605027
+v -0.67831368 0.35744049 -0.64197064
+v -0.66998413 -0.09669906 -0.73605027
+v -0.28281717 -0.27515070 -0.91886123
+v 0.17428857 -0.35400135 -0.91886120
+v 0.39053348 0.05636583 -0.91886122
+v 0.06707433 0.38883729 -0.91886104
+v -0.34907938 0.18394906 -0.91886143
+f 1 5 14
+f 1 14 15
+f 1 15 6
+f 1 6 2
+f 1 2 3 4 5
+f 2 6 7
+f 2 7 8
+f 2 8 3
+f 3 8 9
+f 3 9 10
+f 3 10 4
+f 4 10 11
+f 4 11 12
+f 4 12 5
+f 5 12 13
+f 5 13 14
+f 6 15 16
+f 6 16 23 24 7
+f 7 24 17
+f 7 17 8
+f 8 17 26 27 9
+f 9 27 18
+f 9 18 10
+f 10 18 29 30 11
+f 11 30 19
+f 11 19 12
+f 12 19 32 33 13
+f 13 33 20
+f 13 20 14
+f 14 20 35 21 15
+f 15 21 16
+f 16 21 22
+f 16 22 23
+f 17 24 25
+f 17 25 26
+f 18 27 28
+f 18 28 29
+f 19 30 31
+f 19 31 32
+f 20 33 34
+f 20 34 35
+f 21 35 36
+f 21 36 22
+f 22 36 46 47 37
+f 22 37 23
+f 23 37 38
+f 23 38 24
+f 24 38 25
+f 25 38 48 49 39
+f 25 39 26
+f 26 39 40
+f 26 40 27
+f 27 40 28
+f 28 41 29
+f 28 40 50 51 41
+f 29 42 30
+f 29 41 42
+f 30 42 31
+f 31 42 52 53 43
+f 31 43 32
+f 32 43 44
+f 32 44 33
+f 33 44 34
+f 34 44 54 55 45
+f 34 45 35
+f 35 45 36
+f 36 45 46
+f 37 47 48
+f 37 48 38
+f 39 49 50
+f 39 50 40
+f 41 52 42
+f 41 51 52
+f 43 53 54
+f 43 54 44
+f 45 55 46
+f 46 56 47
+f 46 55 56
+f 47 56 57
+f 47 57 48
+f 48 57 49
+f 49 58 50
+f 49 57 58
+f 50 58 51
+f 51 58 59
+f 51 59 52
+f 52 59 53
+f 53 59 60
+f 53 60 54
+f 54 60 55
+f 55 60 56
+f 56 60 59 58 57
diff --git a/texmf-dist/scripts/ketpic/data/polyhedrons_obj/æ•´é¢å‡¸å¤šé¢ä½“データ.pdf b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/æ•´é¢å‡¸å¤šé¢ä½“データ.pdf
new file mode 100644
index 00000000..e2b52ddd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/data/polyhedrons_obj/æ•´é¢å‡¸å¤šé¢ä½“データ.pdf
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/dirhead.txt b/texmf-dist/scripts/ketpic/dirhead.txt
new file mode 100644
index 00000000..9e41b8c2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/dirhead.txt
@@ -0,0 +1 @@
+Dirhead=gethome()+"/ketcindy";
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylib3d.cs b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3d.cs
new file mode 100644
index 00000000..53b542a0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3d.cs
@@ -0,0 +1,4517 @@
+// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team
+//
+//This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>
+//
+
+println("ketcindylib3d(2017.06.02) loaded");
+
+//help:start();
+
+Ketinit3d():=Ketinit3d(1);
+Ketinit3d(sf):=(
+ regional(tmp);
+ tmp=round(4*SW.y)/4;
+// Ketinit3d(sf,[round(SW.x)+1,tmp-0.5,tmp-1]);
+ Ketinit3d(sf,[-5,tmp-0.5,tmp-1]);
+);
+Ketinit3d(subflg,position):=(
+//help:Ketinit3d(subflg=1)
+ regional(ctr,tmp,tmp1,tmp2,tmp3,tmp4,xPos,yTh,yPh);
+// println("KETCindy3d V.2.3.5(2016.02.03)");
+ BezierNumber3=1; //15.02.28
+ if(!islist(BZLIST3),
+ BZLIST3=[]; //15.02.28
+ ,
+ tmp=apply(allpoints(),text(#));
+ tmp1=select(tmp,substring(#,length(#)-1,length(#))=="p");
+ tmp2=[];
+ forall(tmp1,ctr,
+ tmp=substring(ctr,0,length(ctr)-1);
+ tmp=select(BZLIST3,#_1==tmp);
+ if(length(tmp)>0,
+ tmp2=append(tmp2,tmp_1);
+ );
+ );
+ BZLIST3=tmp2;
+ );
+ SUBSCR=subflg;
+ Setwindow("Msg=no");
+ if(length(position)>2,
+ xPos=position_1;
+ yTh=position_2;
+ yPh=position_3;
+ ,
+ xPos=0;
+ yTh=position_1;
+ yPh=position_2;
+ );
+// THETA=60*pi/180;
+// PHI=30*pi/180;
+ FocusPoint=[0,0,0];
+ EyePoint=[5,5,5];
+ Listplot("th",[[xPos,yTh],[xPos+9,yTh]],["notex","linecolor->[0,1,0]","Msg=no"]);
+ Listplot("ph",[[xPos,yPh],[xPos+9,yPh]],["notex","linecolor->[0,1,0]","Msg=no"]);
+ //16.02.10
+ PutonCurve("TH",sgth,[xPos,xPos+9,"Msg=no"]);
+ PutonCurve("FI",sgph,[xPos,xPos+9,"Msg=no"]);
+ THETA=(TH.x-xPos)*20*pi/180;
+ PHI=(FI.x-xPos)*40*pi/180;
+// Defvar("THETA",THETA); // 16.06.20
+// Defvar("PHI",PHI); // 16.06.20
+ drawtext([xPos-0.8,yTh-0.1],Sprintf((TH.x-xPos)*20,2),align->"right"); //17.05.02
+ drawtext([xPos-0.8,yPh-0.1],Sprintf((FI.x-xPos)*40,2),align->"right"); //17.05.02
+ tmp="Setangle("+text((TH.x-xPos)*20)+","+text((FI.x-xPos)*40)+")";
+ GLIST=append(GLIST,tmp);
+ Addax(0);
+ TSIZE=10;
+ TSIZEZ=10;
+ ErrFlg=0;
+);
+
+Start3d():=Start3d([]); //16.11.12
+Start3d(ptexception):=( //16.11.12
+//help:Start3d();
+//help:Start3d(execptionptlist);
+ regional(xmn,xMx,ymn,yMx,pt,pt3,pt2,
+ xPos,yTh,yPh,Eps,tmp,tmp1,tmp2,tmp3,tmp4);
+ GCLIST=[];
+ GLIST=[];
+ FUNLIST=[];
+ COM0thlist=[];
+ COM1stlist=[];
+ COM2ndlist=[];
+ SEG3dlist=[];
+ SCIWRLIST=[];
+ SCIRELIST=[];
+ OutFileList=[];
+ FigPdfList=[]; // 16.04.08
+ ErrFlag=0;
+ OBJCMD=[]; // 16.11.29from
+ OCNAME=Fhead;
+ OCOPTION=["m","v"];// 16.11.29upto
+ ArrowlineNumber=1; // 16.01.31
+ ArrowheadNumber=1;
+ BezierNumber=1; //16.01.31
+ BezierNumber3=1; //16.08.19
+ Fnametex=Fhead+".tex"; // 15.04.06
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+// Ketinit3d(SUBSCR); // 16.06.20
+ Setwindow("Msg=no"); // 16.06.20from
+ tmp=round(4*SW.y)/4;
+ xPos=-5;yTh=tmp-0.5;yPh=tmp-1;
+ Listplot("th",[[xPos,yTh],[xPos+9,yTh]],
+ ["notex","linecolor->[0,1,0]","Msg=no"]);
+ Listplot("ph",[[xPos,yPh],[xPos+9,yPh]],
+ ["notex","linecolor->[0,1,0]","Msg=no"]);
+ //16.02.10
+ PutonCurve("TH",sgth,[xPos,xPos+9,"Msg=no"]);
+ PutonCurve("FI",sgph,[xPos,xPos+9,"Msg=no"]);
+ drawtext([xPos-0.8,yTh-0.1],Sprintf((TH.x-xPos)*20,2),align->"right"); //17.05.02
+ drawtext([xPos-0.8,yPh-0.1],Sprintf((FI.x-xPos)*40,2),align->"right"); //17.05.02
+ tmp="Setangle("
+ +format((TH.x-xPos)*20,5)+","
+ +format((FI.x-xPos)*40,5)+")";
+ GLIST=append(GLIST,tmp);
+ THETA=(TH.x-xPos)*20*pi/180;
+ PHI=(FI.x-xPos)*40*pi/180; // 16.06.20upto
+ if(isselected(TH) % isselected(FI), // 17.05.18from
+ if(length(Ch)>0,
+ ChNum=Ch_(length(Ch));
+ if(ChNum==0, ChNum=1);
+ ,
+ ChNum=1;
+ );
+ Ch=[0];
+ );// 17.05.18upto
+ if(length(VLIST)==0, // 16.06.20
+ tmp=remove(allpoints(),[NE,SW,TH,FI,O,X,Y,Z]);//17.06.02
+ tmp4=remove(tmp,ptexception);
+ forall(tmp4,pt,
+ tmp1=text(pt);
+ tmp=substring(tmp1,length(tmp1)-1,length(tmp1));
+ if(tmp!="z",
+ tmp=parse(tmp1+"z.y");
+ pt3=Xyzcoord(pt.x,pt.y,tmp);
+ Defvar(tmp1+"3d",pt3);
+ pt2=Parapt(pt3); // 16.05.28from
+ Defvar(tmp1+"2d",pt2); // 16.05.28upto
+ );
+ );
+ ,
+ if(isselected(NE) % isselected(SW),
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp4=remove(tmp,ptexception);
+ forall(tmp4,pt,
+ tmp1=text(pt);
+ tmp=substring(tmp1,length(tmp1)-1,length(tmp1));
+ if(tmp!="z",
+ tmp=select(VLIST,#_1==tmp1+"3d=");
+ pt3=tmp_1_2;
+ tmp=tmp1+".xy=Parapt("+pt3+")_[1,2];";
+ parse(tmp);
+// if(SUBSCR==1,
+// tmp=tmp1+"z"+".x=NE.x-SW.x+"+tmp1+".x";
+// parse(tmp);
+// );
+ );
+ );
+ ,
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp4=remove(tmp,ptexception);
+ forall(tmp4,pt,
+ tmp1=text(pt);
+ tmp=substring(tmp1,length(tmp1)-1,length(tmp1));
+ if(tmp!="z",
+ tmp2=parse(tmp1+"z");
+ if(isselected(pt) % isselected(tmp2),
+ Defvar(tmp1+"2d",pt.xy);
+ tmp=parse(tmp1+"z.y");
+ tmp=Xyzcoord(pt.x,pt.y,tmp);
+ Defvar(tmp1+"3d",tmp);
+ );
+ );
+ );
+ );
+ );
+ if(SUBSCR==1,
+ xmn=SW.x+NE.x-SW.x;
+ xMx=NE.x+NE.x-SW.x;
+ ymn=SW.y;
+ yMx=NE.y;
+ drawpoly([[xMx,yMx],[xmn,yMx],
+ [xmn,ymn],[xMx,ymn]],color->[1,1,1]);
+ connect([[NE.x-SW.x,yMx],[NE.x-SW.x,ymn]],
+ color->[0.5,0.5,0.5]);
+ );
+ // for Presentation //17.07.01from
+ letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0];
+ shadowc=[0,0,0,0.5]; mboxc="yellow"; //17.03.02 regional debugged
+ SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
+ letterc,mboxc,mboxc,mboxc,62,2,letterc];
+ ThinDense=0.1; //17.07.01upto
+ Ptseg3data(ptexception); //16.08.23
+);
+
+Setangle(theta,phi):=( //16.12.24
+//help:Setangle(60,30);
+ regional(xmn,xMx,ymn,yMx,pt,pt3,pt2,
+ xPos,yTh,yPh,Eps,tmp,tmp1,tmp2,tmp3,tmp4);
+ tmp=round(4*SW.y)/4;
+ xPos=-5;yTh=tmp-0.5;yPh=tmp-1;
+ if(theta=="",theta=THETA*180/pi); // 17.01.19
+ if(phi=="",phi=PHI*180/pi);
+ THETA=theta*pi/180;
+ TH.x=theta/20+xPos;
+ PHI=phi*pi/180;
+ FI.x=phi/40+xPos;
+// drawtext([xPos-0.8,yTh-0.1],text(theta)); //17.05.05
+// drawtext([xPos-0.8,yPh-0.1],text(phi));
+ tmp="Setangle("
+ +format(theta,5)+","+format(phi,5)+")";
+ GLIST=append(GLIST,tmp);
+ if(length(VLIST)==0, // 16.06.20
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp4=remove(tmp,ptexception);
+ forall(tmp4,pt,
+ tmp1=text(pt);
+ tmp=substring(tmp1,length(tmp1)-1,length(tmp1));
+ if(tmp!="z",
+ tmp=parse(tmp1+"z.y");
+ pt3=Xyzcoord(pt.x,pt.y,tmp);
+ Defvar(tmp1+"3d",pt3);
+ pt2=Parapt(pt3); // 16.05.28from
+ Defvar(tmp1+"2d",pt2); // 16.05.28upto
+ );
+ );
+ ,
+ if(isselected(NE) % isselected(SW),
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp4=remove(tmp,ptexception);
+ forall(tmp4,pt,
+ tmp1=text(pt);
+ tmp=substring(tmp1,length(tmp1)-1,length(tmp1));
+ if(tmp!="z",
+ tmp=select(VLIST,#_1==tmp1+"3d=");
+ pt3=tmp_1_2;
+ tmp=tmp1+".xy=Parapt("+pt3+")_[1,2];";
+ parse(tmp);
+ );
+ );
+ ,
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp4=remove(tmp,ptexception);
+ forall(tmp4,pt,
+ tmp1=text(pt);
+ tmp=substring(tmp1,length(tmp1)-1,length(tmp1));
+ if(tmp!="z",
+ tmp2=parse(tmp1+"z");
+ if(isselected(pt) % isselected(tmp2),
+ Defvar(tmp1+"2d",pt.xy);
+ tmp=parse(tmp1+"z.y");
+ tmp=Xyzcoord(pt.x,pt.y,tmp);
+ Defvar(tmp1+"3d",tmp);
+ );
+ );
+ );
+ );
+ );
+ forall(Datalist3d(),#,
+ tmp1=replace(#,"3d","2d");
+ tmp2=Projpara(#,["nodata"]);
+ tmp=tmp1+"="+textformat(tmp2,5);
+ parse(tmp);
+ );
+ Ptseg3data(ptexception);
+);
+
+Changestyle3d(nameL,style):=(
+//help:Changestyle3d(["geoseg3d","ax3d"],["notex"]);
+ regional(nmL,name,tmp,tmp1,tmp2);
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ tmp1=[];
+ forall(nmL,name,
+ tmp=parse(name);
+ if(isstring(tmp_1),
+ tmp1=concat(tmp1,tmp);
+ ,
+ tmp1=append(tmp1,name);
+ );
+ tmp=apply(tmp1,replace(#,"3d","2d"));
+ Changestyle(tmp,style);
+ tmp=apply(tmp,"sub"+#); // 15.05.24
+ Changestyle(tmp,style);
+ );
+);
+
+Dist3d(pt1):=Dist3d(pt1,[0,0,0]);
+Dist3d(pt1,pt2):=(
+//help:Dist3d(A3d,B3d);
+//help:Dist3d(A,B);
+//help:Dist3d("A","B");
+ regional(p1,p2);
+ if(islist(pt1),
+ p1=pt1;
+ ,
+ if(ispoint(pt1),p1=text(pt1),p1=pt1);
+ p1=parse(p1+"3d");
+ );
+ if(islist(pt2),
+ p2=pt2;
+ ,
+ if(ispoint(pt2),p2=text(pt2),p2=pt2);
+ p2=parse(p2+"3d");
+ );
+ sqrt((p2-p1)*(p2-p1));
+);
+
+Findangle(vec):=(
+//help:Findangle([2,1,4]);
+//help:Findangle([0,0,1,0]);
+ regional(vec3,vec2,Eps,th,ph,tmp);
+ Eps=10^(-4);
+ vec3=vec_(1..3);
+ vec2=vec_(1..2);
+ th=arccos(vec_3/|vec3|);
+ if(|vec2|>Eps,
+ ph=arccos(vec_1/|vec2|);
+ if(vec_2<0,
+ ph=2*pi-ph; // 15.03.28
+ );
+ ,
+ if(length(vec)>3,ph=vec_4*pi/180,ph=PHI);
+ );
+ [th,ph];
+);
+
+Cancoordpara(pc):=(
+//help:Cancoordpara([1,2,0]);
+ regional(Xz,Yz,Zz,tmp1,tmp2,tmp3);
+ Xz=pc_1; Yz=pc_2; Zz=pc_3;
+ tmp1=-Xz*sin(PHI)-Yz*cos(PHI)*cos(THETA)+Zz*cos(PHI)*sin(THETA);
+ tmp2=Xz*cos(PHI)-Yz*sin(PHI)*cos(THETA)+Zz*sin(PHI)*sin(THETA);
+ tmp3=Yz*sin(THETA)+Zz*cos(THETA);
+ [tmp1,tmp2,tmp3];
+);
+
+Zparapt(cc):=(
+ regional(x,y,z);
+ x=cc_1; y=cc_2; z=cc_3;
+ x*cos(PHI)*sin(THETA)+y*sin(PHI)*sin(THETA)+z*cos(THETA);
+);
+
+Projcoordpara(cc):=(
+//help:Projcoordpara([3,1,2]);
+ regional(tmp);
+ tmp=Parapt(cc);
+ [tmp_1,tmp_2,Zparapt(cc)];
+);
+
+Parapt(pt):=(
+//help:Parapt([2,1,5]);
+ regional(Xz,Yz);
+ Xz=-pt_1*sin(PHI)+pt_2*cos(PHI);
+ Yz=-pt_1*cos(PHI)*cos(THETA)-pt_2*sin(PHI)*cos(THETA)+pt_3*sin(THETA);
+ [Xz,Yz];
+);
+
+ProjCurve(crv):=(
+//help:Projcurve("sl3d1");
+ regional(CurveL,Curve,Eps,AnsL,Out,sp,cp,st,,ct,ii,pt,
+ Xz,Yz,tmp,tmp1,tmp2);
+ Eps=10^(-6);
+ sp=sin(PHI); cp=cos(PHI);
+ st=sin(THETA); ct=cos(THETA);
+ if(isstring(crv),CurveL=parse(crv),CurveL=crv);
+ if(MeasureDepth(CurveL)==1,CurveL=[CurveL]);
+ Out=[];
+ forall(CurveL,Curve,
+ AnsL=[];
+ forall(1..length(Curve),ii,
+ pt=Curve_ii;
+ if(pt_1!="inf",
+ Xz=-pt_1*sp+pt_2*cp;
+ Yz=-pt_1*cp*ct-pt_2*sp*ct+pt_3*st;
+ tmp=[Xz,Yz];
+ if(ii==1,
+ AnsL=[tmp];
+ ,
+ tmp1=AnsL_(length(AnsL));
+ if(tmp1_1=="inf" % |tmp-tmp1|>Eps,
+ AnsL=append(AnsL,tmp);
+ );
+ );
+ ,
+ AnsL=append(AnsL,["inf"]);
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(AnsL),AnsL_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[AnsL_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(AnsL),
+ tmp1=concat(tmp1,[AnsL_(tmp..length(AnsL))]);
+ );
+ AnsL=tmp1;
+ if(length(AnsL)==1,AnsL=AnsL_1);
+ Out=append(Out,AnsL);
+ );
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Projpara(ptdata):=Projpara(ptdata,[]);
+Projpara(ptdata,options):=(
+ regional(name2,name3,Ltype,Noflg,opcindy,dtL,ptL,tmp,Out);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(ptdata),dtL=ptdata,dtL=[ptdata]);
+ Out=[];
+ forall(dtL,name3,
+// name3=#;
+ if(indexof(name3,"3d")>0, //17.05.24
+ name2=replace(name3,"3d","2d");
+ ,
+ name2="para"+name3;
+ );
+ ptL=Projcurve(name3);
+ ptL=select(ptL,length(#)>1);//17.06.02
+ if(length(ptL)==1,
+ ptL=ptL_1;
+ );
+ Out=append(Out,ptL);
+ if(Noflg<3,
+ println("generate projparadata "+name2);
+ tmp=name2+"="+textformat(ptL,5);
+ parse(tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ );
+ );
+ if(length(Out)==1,Out=Out_1);
+// Out=Flattenlist(Out);
+ if(length(Out)==1,Out=Out_1); // 15.02.24
+ tmp=[];
+ forall(Out,
+ if(length(#)>0,tmp=append(tmp,#));
+ );
+ Out=tmp;
+ Out;
+);
+
+InvparaptPp(pt,pd):=(
+ regional(Eps,fk,nfk,ph,fh,ah,bh,ak,bk,v1,v2,
+ nn,s0,t2,out,tmp,tmp1,tmp2,flg);
+ Eps=10^(-4);
+ if(isstring(pd),
+ fk=pd;
+ ,
+ fk=textformat(pd,5);
+ );
+ nfk=Numptcrv(parse(fk));
+ flg=0;
+ tmp=pt;
+ if(length(tmp)==1,
+ ph=tmp;
+ fh=pd;
+ ,
+ fh=Projpara(fk,["nodata"]);
+ if(nfk>2,
+ tmp1=Nearestpt(tmp,fh);
+ ph=tmp1_2;
+ ,
+ ah=Ptcrv(1,fh); bh=Ptcrv(2,fh);
+ v1=tmp-ah; v2=bh-ah;
+ tmp1=Crossprod(v1,v2);
+ if(abs(tmp1)>Eps,
+ println(" Not on the line");
+ out=[];
+ flg=1;
+ ,
+ ph=Dotprod(v1,v2)/|v2|^2+1;
+ );
+ );
+ );
+ if(flg==0,
+ if(nfk>2,
+ nn=floor(ph);
+ s0=ph-nn;
+ if(ph>Numptcrv(fh)-Eps,
+ out=[Ptend(fk),Numptcrv(fh)];
+ flg=1;
+ );
+ ,
+ nn=1;
+ s0=ph-1;
+ );
+ );
+ if(flg==0,
+ ak=Ptcrv(nn,fk); bk=Ptcrv(nn+1,fk);
+ ah=Ptcrv(nn,fh); bh=Ptcrv(nn+1,fh);
+ ph=(1-s0)*ah+a0*bh;
+ t2=s0;
+ pk=(1-t2)*ak+t2*bk;
+ out=[pk,nn+t2];
+ );
+ out;
+);
+
+Invparapt(pt,pd):=(
+ regional(tmp);
+ tmp=InvparaptPp(pt,pd);
+ tmp_1;
+);
+
+Subgraph(name,opcindy):=(
+ regional(tht,tmp,tmp1);
+ tht=THETA; THETA=pi/2;
+ tmp=Projpara(name3,["nodata"]);
+ if(length(tmp)>0, //15.08.17
+ tmp=Translatedata("",[tmp],[NE.x-SW.x,0],["nodata"]);
+ tmp1=replace("sub"+name,"3d","2d");
+ tmp=tmp1+"="+Textformat(tmp,5);
+ parse(tmp);
+ GCLIST=append(GCLIST,[tmp1,0,opcindy]);
+ );
+ THETA=tht; // 15.11.03
+);
+
+Spaceline(ptlist):=Spaceline(ptlist,[]); // 16.02.22 from
+Spaceline(Arg1,Arg2):=(
+ regional(name,tmp,tmp1,tmp2);
+ if(isstring(Arg1),
+ Spaceline(Arg1,Arg2,[]);
+ ,
+ tmp=text(Arg1);
+ tmp=substring(tmp,1,length(tmp)-1);
+ name="-"+replace(tmp,",","");
+ Spaceline(name,Arg1,Arg2);
+ );
+); // 16.02.22 upto
+Spaceline(nm,ptlistorg,optionorg):=(
+//help:Spaceline("1",[[2,5,1],[4,2,3]]);
+//help:Spaceline([A,B]);
+ regional(name2,name3,options,Out,tmp,tmp1,tmp2,
+ opstr,opcindy,Ltype,Noflg,eqL,ptlist, Msg);
+ ptlist=apply(ptlistorg,if(ispoint(#),parse(text(#)+"3d"),#)); // 16.02.10
+ if(substring(nm,0,2)=="bz",
+ name2=replace(nm,"bz","bz2d");
+ name3=replace(nm,"bz","bz3d");
+ ,
+ if(substring(nm,0,1)=="-",
+ tmp=substring(nm,1,length(nm));
+ if(indexof(tmp,"3d")>0,name3=tmp,name3=tmp+"3d");
+ name2=replace(name3,"3d","2d");
+ ,
+ name2="sl2d"+nm;
+ name3="sl3d"+nm;
+ );
+ );
+ options=select(optionorg,length(#)>0); // 160415
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ Msg=1;
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+1);
+ if(Toupper(tmp1)=="N",
+ Msg=0;
+ );
+ );
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Spaceline "+name3);
+ );
+ tmp=name3+"="+ptlist;
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp="[";
+ forall(ptlist, //17.07.13from
+ if(isstring(#),
+ tmp=tmp+#+",";
+ ,
+ tmp=tmp+textformat(#,5)+",";
+ );
+ );
+ tmp=substring(tmp,0,length(tmp)-1)+"]";
+ tmp=name3+"=Spaceline("+tmp+")"; //17.07.13upto
+// tmp=name3+"=Spaceline("+textformat(ptlist,5)+")"; //17.05.24
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ Subgraph(name3,opcindy);
+ );
+ );
+ ptlist;
+);
+
+Spacecurve(nm,funstr,variable):=Spacecurve(nm,funstr,variable,[]);
+Spacecurve(nm,funstr,variable,optionorg):=(
+//help:Spacecurve("1","[cos(t),sin(t),0.5*t]","t=[0,4*pi]",["Num=200"]);
+ regional(name2,name3,options,Out,tmp,tmp1,tmp2,vname,tmpfn,str,Rng,Num,Msg,
+ Ec,Exfun,Dc,opstr,opcindy,Fntmp,Vatmp,Ltype,Noflg,eqL,t1,t2,dt,tt,pa,ke);
+ if(substring(nm,0,2)=="bz",
+ name2=replace(nm,"bz","bz2d");
+ name3=replace(nm,"bz","bz3d");
+ ,
+ name2="sc2d"+nm;
+ name3="sc3d"+nm;
+ );
+ Eps=10^(-4);
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ options=select(optionorg,length(#)>0); // 160415
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Msg=1;
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+2);
+ if(Toupper(tmp1)=="NO",
+ Msg=0;
+ );
+ );
+ tmp=indexof(#,"N=");
+ if(tmp>0,
+ tmp1=substring(#,tmp+1,length(#));
+ Num=parse(tmp1);
+ opstr=opstr+",'"+#+"'";
+ );
+ tmp=indexof(#,"Num=");
+ if(tmp>0,
+ tmp1=substring(#,tmp+3,length(#));
+ Num=parse(tmp1);
+ opstr=opstr+",'"+#+"'";
+ );
+ tmp=indexof(#,"E=");
+ if(tmp>0,
+ tmp1=substring(#,tmp+1,length(#));
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ opstr=opstr+",'"+#+"'";
+ );
+ tmp=indexof(#,"Exc=");
+ if(tmp>0,
+ tmp1=substring(#,tmp+3,length(#));
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ );
+ tmp=indexof(variable,"=");
+ vname=substring(variable,0,tmp-1);
+ str=substring(variable,tmp,length(variable));
+ Rng=parse(str);
+ t1=Rng_1; t2=Rng_2;
+ dt=(t2-t1)/Num; // differ from Scilab
+ tmp="tmpfn("+vname+"):="+funstr+";";
+ parse(tmp);
+ Out=[];
+ Ec=append(sort(Ec),10000);
+ ke=1;
+ forall(0..Num,
+ pt=[];
+ tt=Rng_1+#*dt;
+ if(tt-Ec_ke<-Eps,
+ pa=tmpfn(tt);
+ );
+ if(abs(tt-Ec_ke)<=Eps,
+ if(length(Out)>0,
+ if(Out_(length(Out))_1!="inf",
+ pa=["inf"];
+ );
+ );
+ );
+ if(tt-Ec_ke>Eps,
+ pa=tmpfn(tt);
+ ke=ke+1;
+ );
+ if(length(pa)>0,
+ if(pa_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(length(Out)==0,
+ Out=[pa];
+ ,
+ tmp=Out_(length(Out));
+ if(tmp_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(|tmp-pa|<Dc,
+ Out=append(Out,pa);
+ ,
+ Out=concat(Out,[["inf"],pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..length(Out),Out_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[Out_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(Out),
+ tmp1=concat(tmp1,[Out_(tmp..length(Out))]);
+ );
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Spacecurve "+name3);
+ );
+ tmp=name3+"="+textformat(Out,5);
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=name3+"=Spacecurve(Assign('"+funstr+"'),'"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ tmp=parse(name2); // 15.08.17
+ if(length(tmp)>0,
+ Subgraph(name3,opcindy);
+ ); // 15.08.17
+ );
+ );
+ Out;
+);
+
+Partcrv3d(nm,pA,pB,PkLstr):=Partcrv3d(nm,pA,pB,PkLstr,[]);
+Partcrv3d(nm,pA,pB,PkLstr,options):=(
+//help:Partcrv3d("1",A,B,"sl3d1");
+//help:Partcrv3d("1",1.3,2.5,"sl3d1");
+ regional(p1,p2,q1,q2,dt1,dts,dt3,tmp,tmp1,tmp2);
+ if(isreal(pA),
+ p1=pA; q1=pA;
+ ,
+ if(islist(pA),
+ tmp=pA;
+ ,
+ if(ispoint(pA),tmp=text(pA),tmp=pA);
+ tmp=parse(tmp+"3d");
+ );
+ p1=parapt(tmp);
+ q1=[p1_1,tmp_3]+[NE.x-SW.x,0];
+ );
+ if(isreal(pB),
+ p2=pB; q2=pB;
+ ,
+ if(islist(pB),
+ tmp=pB;
+ ,
+ if(ispoint(pB),tmp=text(pB),tmp=pB);
+ tmp=parse(tmp+"3d");
+ );
+ p2=parapt(tmp);
+ q2=[p2_1,tmp_3]+[NE.x-SW.x,0];
+ );
+ tmp=replace(PkLstr,"3d","2d");
+ dt1=partcrv("",p1,p2,tmp,["nodata"]);
+ dts=partcrv("",q1,q2,"sub"+tmp,["nodata"]);
+ dt=apply(1..length(dt1),
+ Xyzcoord(dt1_#_1,dt1_#_2,dts_#_2));
+ Spaceline("-part3d"+nm,dt,options);
+);
+
+Joincrvs3d(nm,plotstrL):=Joincrvs3d(nm,plotstrL,[]);//16.10.06
+Joincrvs3d(nm,plotstrL,options):=(
+//help:Joincrvs3d("1",["bz3da1","bz3da1"]);
+ regional(PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
+ opcindy,tmp,tmp1,tmp2,str,name2,name3,Ltype,Noflg);
+ name2="join2d"+nm;
+ name3="join3d"+nm;
+ QdL=[];
+ forall(plotstrL,str,
+ if(isstring(str),
+ tmp=parse(str);
+ ,
+ tmp=str;
+ );
+ QdL=append(QdL,tmp);
+ );
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Eps=tmp1_1);
+ Flg=0;
+ if(length(QdL)==0,
+ PtL=[];
+ Flg=1;
+ );
+ if(Flg==0,
+ PtL=QdL_1;
+ forall(2..length(QdL),Ni,
+ Qd=QdL_Ni;
+ if(length(Qd)>1,
+ pP=PtL_1;
+ pS=PtL_(length(PtL));
+ pQ=Qd_1;
+ pR=Qd_(length(Qd));
+ rMN=min([norm(pP-pQ),norm(pP-pR),
+ norm(pS-pQ),norm(pS-pR)]);
+ if(rMN==norm(pP-pR),
+ Qd=reverse(Qd);
+ ,
+ if(rMN==norm(pS-pQ),
+ PtL=reverse(PtL);
+ ,
+ if(rMN==norm(pS-pR),
+ PtL=reverse(PtL);
+ Qd=reverse(Qd);
+ );
+ );
+ );
+ );
+ if(rMN>Eps,
+ PtL=concat(PtL,Qd);
+ ,
+ PtL=concat(PtL,Qd_(2..length(Qd)));
+ );
+ );
+ );
+ if(Noflg<3,
+ println("generate Joincurves3d "+name3);
+ tmp=name3+"="+textformat(PtL,5);
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=text(plotstrL);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp=name3+"=Joincrvs("+tmp+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ tmp=parse(name2); // 15.08.17
+ if(length(tmp)>0,
+ Subgraph(name3,opcindy);
+ ); // 15.08.17
+ );
+ );
+ PtL;
+);
+
+Xyzax3data(nm,Xrange,Yrange,Zrange):=
+ Xyzax3data(nm,Xrange,Yrange,Zrange,[]);
+Xyzax3data(nm,Xrange,Yrange,Zrange,options):=(
+//help:Xyzax3data("","x=[-5,5]","y=[-5,5]","z=[-5,5]");
+//help:Xyzax3data(Options2=["a1","Osw"]);
+ regional(name2,name3,Out,tmp,tmp1,tmp2,eqL,reL,strL,
+ opstr,opcindy,Ltype,Noflg,Axname,Arrow,Origin);
+ name2="ax2d"+nm;
+ name3="ax3d"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ opcindy=tmp_(length(tmp));
+ Axname=1;
+ Arrow=0; // 16.08.14
+ Origin=""; // 16.08.14
+ if(length(reL)>0,
+ Axname=reL_1;
+ );
+ forall(strL, // 16.08.14from
+ tmp1=Toupper(substring(#,0,1));
+ if(tmp1=="A",
+ tmp=substring(#,1,length(#));
+ if(length(tmp)>0,
+ Arrow=parse(tmp);
+ ,
+ Arrow=1;
+ );
+ );
+ if(tmp1=="O",
+ tmp=indexof(#,",");
+ if(tmp>0,
+ Origin=substring(#,tmp,length(#));
+ ,
+ tmp=substring(#,1,length(#));
+ if(length(tmp)>0,
+ Origin=tmp;
+ ,
+ Origin="sw";
+ );
+ );
+ );
+ ); // 16.08.14upto
+ tmp1=indexof(Xrange,"=");
+ tmp=parse(substring(Xrange,tmp1,length(Xrange)));
+ Px=[tmp_1,0,0]; Qx=[tmp_2,0,0];
+ tmp1=indexof(Yrange,"=");
+ tmp=parse(substring(Yrange,tmp1,length(Yrange)));
+ Py=[0,tmp_1,0]; Qy=[0,tmp_2,0];
+ tmp1=indexof(Zrange,"=");
+ tmp=parse(substring(Zrange,tmp1,length(Zrange)));
+ Pz=[0,0,tmp_1]; Qz=[0,0,tmp_2];
+ Out=[[Px,Qx],[Py,Qy],[Pz,Qz]];
+ if(Axname>0,
+ Xyzaxparaname(Xrange,Yrange,Zrange,[Axname]);
+ );
+ if(Noflg<3,
+ println("generate axes "+name3);
+ tmp=name3+"="+textformat(Out,5);
+ parse(tmp);
+ tmp1=Projpara([name3],["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=name3+"=Xyzax3data("+
+ Dq+Xrange+Dq+","+Dq+Yrange+Dq+","+Dq+Zrange+Dq+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(Noflg<1, // 16.08.14from
+ if(Arrow>0,
+ tmp1=Parapt(Px); tmp2=Parapt(Qx);
+ Arrowhead(tmp2,tmp2-tmp1,[Arrow]);
+ tmp1=Parapt(Py); tmp2=Parapt(Qy);
+ Arrowhead(tmp2,tmp2-tmp1,[Arrow]);
+ tmp1=Parapt(Pz); tmp2=Parapt(Qz);
+ Arrowhead(tmp2,tmp2-tmp1,[Arrow]);
+ );
+ if(length(Origin)>0,
+ Letter([Parapt([0,0,0]),Origin,"O"]);
+ );
+ ); // 16.08.14upto
+ if(SUBSCR==1, // 15.02.11
+ Subgraph(name3,opcindy);
+ );
+ );
+ Out;
+);
+
+Xyzaxparaname(Xrange,Yrange,Zrange):=
+ Xyzaxparaname(Xrange,Yrange,Zrange,[]);
+Xyzaxparaname(Xrange,Yrange,Zrange,options):=(
+ regional(tmp,tmp1,tmp2,Eps,Dr,Noflg,Xname,Yname,Zname,
+ px,qx,py,qy,pz,qz,ph,qh,rr,ch);
+ Eps=10.0^(-6);
+ Dr=0.19*1000/2.54/MilliIn;
+ Noflg=0;
+ forall(options,
+ if(isreal(#),Dr=Dr*#);
+ );
+ tmp=indexof(Xrange,"=");
+ Xname=substring(Xrange,0,tmp-1);
+ tmp=parse(substring(Xrange,tmp,length(Xrange)));
+ px=[tmp_1,0,0]; qx=[tmp_2,0,0];
+ tmp=indexof(Yrange,"=");
+ Yname=substring(Yrange,0,tmp-1);
+ tmp=parse(substring(Yrange,tmp,length(Yrange)));
+ py=[0,tmp_1,0]; qy=[0,tmp_2,0];
+ tmp=indexof(Zrange,"=");
+ Zname=substring(Zrange,0,tmp-1);
+ tmp=parse(substring(Zrange,tmp,length(Zrange)));
+ pz=[0,0,tmp_1]; qz=[0,0,tmp_2];
+ ph=Parapt(px); qh=Parapt(qx); rr=|ph-qh|;
+ if(rr>Eps,
+ ch=qh+Dr/rr*(qh-ph);
+ Expr(ch,"c",Xname);
+ );
+ ph=Parapt(py); qh=Parapt(qy); rr=|ph-qh|;
+ if(rr>Eps,
+ ch=qh+Dr/rr*(qh-ph);
+ Expr(ch,"c",Yname);
+ );
+ ph=Parapt(pz); qh=Parapt(qz); rr=|ph-qh|;
+ if(rr>Eps,
+ ch=qh+Dr/rr*(qh-ph);
+ Expr(ch,"c",Zname);
+ );
+);
+
+Datalist3d():=(
+//help:Datalist3d();
+ regional(out,tmp,tmp2,tmp3);
+ tmp=apply(GCLIST,#_1);
+ tmp=select(tmp,indexof(#,"2d")>0);
+ tmp2=select(tmp,indexof(#,"sub")==0);
+ tmp3=apply(tmp2,replace(#,"2d","3d"));
+ out=tmp3;
+);
+
+Datalist2d():=(
+//help:Datalist2d();
+ regional(out,tmp,tmp2,tmp3);
+ tmp=apply(GCLIST,#_1);
+ tmp=select(tmp,indexof(#,"2d")>0);
+ tmp2=select(tmp,indexof(#,"sub")==0);
+// tmp3=apply(tmp2,replace(#,"2d","3d"));
+ out=tmp2;
+);
+
+Embed(nm,Pd2str,funstr,varstr):=
+ Embed(nm,Pd2str,funstr,varstr,[]);
+Embed(nm,Pd2str,funstr,varstr,options):=(
+//help:Embed("1",["gr1"],"A3d+x*(B3d-A3d)+y*(C3d-A3d)","[x,y]");
+ regional(name2,name3,Pd2L,Pd2,tmp,tmp1,xstr,ystr,
+ Ltype,Noflg,opstr,opcindy,Out);
+ name2="em2d"+nm;
+ name3="em3d"+nm;
+ if(!islist(Pd2str),Pd2L=[Pd2str],Pd2L=Pd2str); // 15.03.06
+ tmp1=[]; // 15.10.31
+ forall(Pd2L,
+ if(isstring(#),tmp=parse(#),tmp=#);
+ if(MeasureDepth(tmp)==2,
+ tmp1=concat(tmp1,tmp);
+ );
+ if(MeasureDepth(tmp)==1,
+ tmp1=append(tmp1,tmp);
+ );
+ );
+ Pd2L=tmp1;
+ tmp=substring(varstr,0,1);
+ if(tmp=="[" % tmp=="(",
+ tmp1=substring(varstr,1,length(varstr)-1);
+ ,
+ tmp1=varstr;
+ );
+ tmp=indexof(tmp1,",");
+ xstr=substring(tmp1,0,tmp-1);
+ ystr=substring(tmp1,tmp,length(tmp1));
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ Out=[];
+ forall(Pd2L,Pd2,
+ tmp1=[];
+ forall(Pd2,
+ tmp=Assign(funstr,xstr,"("+textformat(#_1,5)+")");
+ tmp=Assign(tmp,ystr,"("+textformat(#_2,5)+")");
+ tmp=parse(tmp);
+ tmp1=append(tmp1,tmp);
+ );
+ Out=append(Out,tmp1);
+ );
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ println("generate Embed "+name3);
+ if(length(Out)>0,
+ tmp=name3+"="+textformat(Out,5);
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ );
+ if(!islist(Pd2str),
+ tmp=Pd2str;
+ ,
+ tmp=text(Pd2str);
+ tmp="list("+substring(tmp,1,length(tmp)-1)+")";
+ );
+ tmp=name3+"=Embed("+tmp+",'"+funstr+"','"+varstr+"'"+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(length(Out)>0,
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ Subgraph(name3,opcindy);
+ );
+ );
+ );
+ Out;
+);
+
+Rotatept3d(point,w1,w2):=Rotate3pt(point,w1,w2);
+Rotatept3d(point,w1,w2,center):=Rotate3pt(point,w1,w2,center);
+//help:Rotatept3d(pt3d,[0,0,1],pi/2);
+//help:Rotatept3d(pt3d,[0,0,1],pi/2,[1,1,1]);
+Rotate3pt(point,w1,w2):=Rotate3pt(point,w1,w2,[0,0,0]);
+Rotate3pt(point,w1,w2,center):=(
+//help:Rotate3pt(pt3d,[0,0,1],pi/2);
+//help:Rotate3pt(pt3d,[0,0,1],pi/2,[1,1,1]);
+ regional(Eps,ct,st,v3,v1,v2,Ans,ns,PtL,num,
+ pt,tmp,tmp1,tmp2,Retflg,x,y,z,xx,yy,zz,flg);
+ Eps=10^(-4);
+ Retflg=0;
+ if(length(w2)==1,
+ ct=cos(w2);
+ st=sin(w2);
+ v3=1/|w1|*w1;
+ if(v3_1==0,
+ tmp=[1,0,0];
+ ,
+ tmp=[0,1,0];
+ );
+ w1=[tmp_2*v3_3-tmp_3*v3_2,
+ tmp_3*v3_1-tmp_1*v3_3,
+ tmp_1*v3_2-tmp_2*v3_1];
+ v1=1/|w1|*w1;
+ v2=[v3_2*v1_3-v3_3*v1_2,
+ v3_3*v1_1-v3_1*v1_3,
+ v3_1*v1_2-v3_2*v1_1];
+ ,
+ tmp=[w1_2*w2_3-w1_3*w2_2,
+ w1_3*w2_1-w1_1*w2_3,
+ w1_1*w2_2-w1_2*w2_1];
+ if(|tmp|<Eps,
+ Ans=point;
+ Retflg=1;
+ );
+ if(Retflg==0,
+ v1=1/|w1|*w1;
+ ns=v1_1*w2_1+v1_2*w2_2+v1_3*w2_3;
+ tmp=w2-ns*v1;
+ v2=1/|tmp|*tmp;
+ tmp=[v1_2*v2_3-v1_3*v2_2,
+ v1_3*v2_1-v1_1*v2_3,
+ v1_1*v2_2-v1_2*v2_1];
+ v3=1/|tmp|*tmp;
+ ct=ns/|w2|;
+ st=sqrt(1-ct^2);
+ );
+ );
+ if(Retflg==0,
+ if(|tmp|<Eps,
+ Ans=point;
+ Retflg=1;
+ );
+ );
+ if(Retflg==0,
+ if(MeasureDepth(point)>0,
+ PtL=point;
+ ,
+ PtL=[point];
+ );
+ Ans=[];
+ flg=0;
+ forall(1..length(PtL),num,
+ pt=PtL_num;
+ if(pt_1=="inf",
+ Ans=append(Ans,["inf"]);
+ flg=1;
+ );
+ if(flg==0,
+ x=pt_1-center_1; y=pt_2-center_2; z=pt_3-center_3;
+ xx=((v1_1*ct+v2_1*st)*v1_1+ (-v1_1*st+v2_1*ct)*v2_1+v3_1^2)*x
+ +((v1_1*ct+v2_1*st)*v1_2+(-v1_1*st+v2_1*ct)*v2_2+v3_1*v3_2)*y
+ +((v1_1*ct+v2_1*st)*v1_3+(-v1_1*st+v2_1*ct)*v2_3+v3_1*v3_3)*z;
+ yy=((v1_2*ct+v2_2*st)*v1_1+(-v1_2*st+v2_2*ct)*v2_1+v3_1*v3_2)*x
+ +((v1_2*ct+v2_2*st)*v1_2+(-v1_2*st+v2_2*ct)*v2_2+v3_2^2)*y
+ +((v1_2*ct+v2_2*st)*v1_3+(-v1_2*st+v2_2*ct)*v2_3+v3_2*v3_3)*z;
+ zz=((v1_3*ct+v2_3*st)*v1_1+(-v1_3*st+v2_3*ct)*v2_1+v3_1*v3_3)*x
+ +((v1_3*ct+v2_3*st)*v1_2+(-v1_3*st+v2_3*ct)*v2_2+v3_2*v3_3)*y
+ +((v1_3*ct+v2_3*st)*v1_3+(-v1_3*st+v2_3*ct)*v2_3+v3_3^2)*z;
+ Ans=append(Ans,center+[xx,yy,zz]);
+ );
+ );
+ if(length(Ans)==1,
+ Ans=Ans_1;
+ );
+ );
+ Ans;
+);
+
+Rotatedata3d(nm,P3data,w1,w2):=Rotate3data(nm,P3data,w1,w2);
+Rotatedata3d(nm,P3data,w1,w2,options):=
+ Rotate3data(nm,P3data,w1,w2,options);
+//help:Rotatedata3d("1",["sl3d1","sc3d2"],[0,0,1],pi/3);
+Rotate3data(nm,P3data,w1,w2):=Rotate3data(nm,P3data,w1,w2,[]);
+Rotate3data(nm,P3data,w1,w2,options):=(
+ regional(name3,name2,center,pdata,Pd3,Pd,Out,tmp,tmp1,
+ Ltype,Noflg,opcindy,opstr);
+ name3="rot3d"+nm;
+ name2="rot2d"+nm;
+ center=[0,0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,
+ center=tmp1_1;
+ );
+ if(islist(P3data) & isstring(P3data_1),Pd3=P3data,Pd3=[P3data]);
+ Out=[];
+ forall(Pd3,Pd,
+ if(isstring(Pd),Pd=parse(Pd));
+ if(MeasureDepth(Pd)==1,Pd=[Pd]);
+ Ans=[];
+ forall(Pd,
+ tmp=Rotate3pt(#,w1,w2,center);
+ Ans=append(Ans,tmp);
+ );
+ Out=append(Out,Ans);
+ );
+ Out=Flattenlist(Out);
+ if(length(Out)==1,Out=Out_1);
+ if(Noflg<3,
+ println("generate Rotate3data "+name3);
+ tmp=name3+"="+textformat(Out,5);
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=text(P3data);
+ tmp=replace(tmp,"[","list(");
+ tmp=replace(tmp,"]",")");
+ tmp=name3+"=Rotate3data("+tmp+","
+ +textformat(w1,5)+","+textformat(w2,5)+opstr+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ Subgraph(name3,opcindy);
+ );
+ );
+ Out;
+);
+
+Translatept3d(point,w1):=Translate3pt(point,w1);
+//help:Translatept3d(pt3d,[1,2,3]);
+Translate3pt(point,w1):=(
+ regional(Eps,Ans,PtL,pt,num,xx,yy,zz,flg);
+ Eps=10^(-4);
+ if(MeasureDepth(point)>0,
+ PtL=point;
+ ,
+ PtL=[point];
+ );
+ Ans=[];
+ flg=0;
+ forall(1..length(PtL),num,
+ pt=PtL_num;
+ if(pt_1=="inf",
+ Ans=append(Ans,["inf"]);
+ flg=1;
+ );
+ if(flg==0,
+ xx=pt_1+w1_1; yy=pt_2+w1_2; zz=pt_3+w1_3;
+ Ans=append(Ans,[xx,yy,zz]);
+ );
+ );
+ if(length(Ans)==1,
+ Ans=Ans_1;
+ );
+ Ans;
+);
+
+Translatedata3d(nm,P3data,w1):=Translate3data(nm,P3data,w1);
+Translatedata3d(nm,P3data,w1,options):=
+ Translate3data(nm,P3data,w1,options);
+//help:Translatedata3d("1",["sl3d1"],[1,2,3]);
+Translate3data(nm,P3data,w1):=Translate3data(nm,P3data,w1,[]);
+Translate3data(nm,P3data,w1,options):=(
+ regional(name3,name2,pdata,Pd3,Pd,Out,tmp,tmp1,
+ Ltype,Noflg,opcindy);
+ name3="tra3d"+nm;
+ name2="tra2d"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(P3data) & isstring(P3data_1),Pd3=P3data,Pd3=[P3data]);
+ Out=[];
+ forall(Pd3,Pd,
+ if(isstring(Pd),Pd=parse(Pd));
+ if(MeasureDepth(Pd)==1,Pd=[Pd]);
+ Ans=[];
+ forall(Pd,
+ tmp=Translate3pt(#,w1);
+ Ans=append(Ans,tmp);
+ );
+ Out=append(Out,Ans);
+ );
+ Out=Flattenlist(Out);
+ if(length(Out)==1,Out=Out_1);
+ if(Noflg<3,
+ println("generate Translate3data "+name3);
+ tmp=name3+"="+textformat(Out,5);
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=text(P3data);
+ tmp=replace(tmp,"[","list(");
+ tmp=replace(tmp,"]",")");
+ tmp=name3+"=Translate3data("+tmp+","+textformat(w1,5)+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ Subgraph(name3,opcindy);
+ );
+ );
+ Out;
+);
+
+Reflectpoint3d(point,vecL):=Reflect3point(point,vecL);
+Reflectpt3d(point,vecL):=Reflect3pt(point,vecL);
+//help:Reflectpoint3d(pt3d,[v1,v2,v3]);
+Reflect3point(point,vecL):=Reflect3pt(point,vecL);
+Reflect3pt(point,vecL):=(
+ regional(ans,v1,v2,v3,tmp,tmp1);
+ if(length(vecL)==1,
+ v1=vecL_1;
+ ans=2*v1-point;
+ );
+ if(length(vecL)==2,
+ v1=vecL_1;
+ v2=vecL_2;
+ v3=(v2-v1)/|v2-v1|;
+ tmp=v1+Dotprod(point-v1,v3)*v3;
+ ans=2*tmp-point;
+ );
+ if(length(vecL)==3,
+ v1=vecL_1;
+ v2=vecL_2;
+ v3=vecL_3;
+ tmp=Crossprod(v2-v1,v3-v1);
+ tmp1=point-Dotprod(tmp,point-v1)/|tmp|^2*tmp;
+ ans=2*tmp1-point;
+ );
+ ans;
+);
+
+Xyzcoord(X,Y,z):=(
+//help:Xyzcoord(A.x,A.y,Az.y);
+ regional(Eps,x3d,y3d,z3d);
+ x3d=(-X*sin(PHI)*cos(THETA)-Y*cos(PHI)+z*cos(PHI)*sin(THETA))/cos(THETA);
+ y3d=(X*cos(PHI)*cos(THETA)-Y*sin(PHI)+z*sin(PHI)*sin(THETA))/cos(THETA);
+ z3d=z;
+ [x3d,y3d,z3d];
+);
+
+PutonCurve3d(name,pdstr):=(
+//help:PutonCurve3d("T","sc3d1");
+ regional(pt,pd2str,tmp,tmp1,tmp2);
+ pd2str=replace(pdstr,"3d","2d");
+ PutonCurve(name,pd2str);
+ pt=parse(name+".xy");
+ tmp=Nearestpt(pt,pd2str); // 15.03.13
+ tmp1=ParamonCurve(tmp_1,tmp_2,pd2str);
+ tmp="sub"+pd2str;
+ tmp2=PointonCurve(tmp1,tmp);
+ pt=append(pt,tmp2_2);
+ pt=Xyzcoord(pt_1,pt_2,pt_3); // 15.03.13
+ tmp=name+"z.xy="+textformat(tmp2,5);
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=name+"3d=");
+ Defvar(name+"3d",pt);
+);
+
+Mkpointlist():=Mkpointlist([]); //16.11.12
+Mkpointlist(options):=( //16.11.12
+ regional(Eps,pos,ptL,plist,ilist,plistrest,
+ inforest,free,pt,pt3,ptz,par,vlistpre,
+ tmp,tmp1,tmp2,tmp3,tmp4,p1,p2,flg);
+ Eps=10^(-4);
+ tmp=Finddef(NE);
+ free=tmp_1;
+ pos=[NE.x+1,NE.y];
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp=remove(tmp,options); //16.11.12
+ plist=select(tmp,
+ substring(text(#),length(text(#))-1,length(text(#)))!="z"
+ );
+ if(SUBSCR==0,plist=[]);
+ ptL=[];
+ plistrest=[];
+ inforest=[];
+ forall(plist,pt,
+ inspect(pt,"ptsize",3);
+ inspect(pt,"color",2);
+ inspect(pt,"textsize",TSIZE);
+ ptz=text(pt)+"z";
+ tmp=Finddef(pt);
+ if(indexof(tmp_1,free)>0, // free point
+ tmp=select(VLIST,#_1==text(pt)+"3d=");
+ if(length(tmp)==0,
+ tmp=pt.x+NE.x-SW.x;
+ Putpoint(ptz,[tmp,0],[tmp,parse(ptz+".y")]);
+ pt3=Xyzcoord(pt.x,pt.y,parse(text(ptz)+".y"));
+ Defvar(text(pt)+"3d",pt3);
+ Defvar(text(pt)+"fix",0);
+ vlistpre=VLIST; //16.08.20
+ );
+ flg=0;
+ if(isselected(pt),
+ if(parse(text(pt)+"fix")!=1, // 15.03.01
+ tmp=pt.x+NE.x-SW.x;
+ Putpoint(ptz,[tmp,0],[tmp,parse(ptz+".y")]);
+ pt3=Xyzcoord(pt.x,pt.y,parse(text(ptz)+".y"));
+ VLIST=select(VLIST,#_1!=text(pt)+"3d=");
+ Defvar(text(pt)+"3d",pt3);
+ vlistpre=VLIST; //16.08.20
+ flg=1;
+ );
+ );
+ inspect(parse(ptz),"ptsize",3);
+ inspect(parse(ptz),"color",3);
+ inspect(parse(ptz),"textsize",TSIZEZ);
+ if(isselected(parse(ptz)),
+ if(parse(ptz+"fix")!=1, // 15.03.01
+ tmp=select(vlistpre,#_1==text(pt)+"3d="); //16.08.20
+ pt3=tmp_1_2;
+ pt3_3=parse(ptz+".y");
+ pt.xy=Parapt(pt3);
+ tmp=ptz+".x=pt.x+NE.x-SW.x";
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=text(pt)+"3d=");
+ Defvar(text(pt)+"3d",pt3);
+ flg=2;
+ );
+ );
+ if(flg==0,
+ tmp=select(VLIST,#_1==text(pt)+"3d=");
+ pt3=tmp_1_2;
+ pt.xy=Parapt(pt3);
+ tmp=ptz+".x=pt.x+NE.x-SW.x";
+ parse(tmp);
+ );
+ if(isselected(pt) % isselected(parse(ptz)),
+ drawtext(pos,text(pt3));
+ );
+ if(!contains(["p","q"],text(pt)),
+ ptL=append(ptL,pt);
+ );
+ ,
+ tmp=Findgeoinfo(pt);
+ tmp1=[parse(tmp_1),parse(tmp_2),parse(tmp_3)];
+ plistrest=append(plistrest,pt);
+ inforest=append(inforest,tmp);
+ );
+ );
+ if(length(plistrest)>0,
+ tmp=Sortpointlist([plistrest,inforest]);
+ plist=tmp_1;
+ ilist=tmp_2;
+ forall(1..length(plist),
+ pt=plist_#;
+ ptz=text(pt)+"z";
+ tmp=ilist_#;
+ p1=parse(tmp_3);
+ p2=p1+parse(tmp_2)-parse(tmp_1);
+ tmp1=p2-p1;
+ tmp2=pt-p1;
+ if(abs(tmp1_1)>abs(tmp1_2),
+ par=tmp2_1/tmp1_1;
+ ,
+ par=tmp2_2/tmp1_2;
+ );
+ tmp=ilist_#;
+ tmp1=parse(tmp_1+"3d");
+ tmp2=parse(tmp_2+"3d");
+ tmp3=parse(tmp_3+"3d");
+ tmp1=(1-par)*tmp3+par*(tmp3+tmp2-tmp1);
+ Putpoint(ptz,[pt.x+NE.x-SW.x,tmp1_3]);
+ inspect(parse(ptz),"ptsize",3);
+ inspect(parse(ptz),"color",3);
+ inspect(parse(ptz),"textsize",TSIZEZ);
+ pt3=Xyzcoord(pt.x,pt.y,parse(text(ptz)+".y"));
+ VLIST=select(VLIST,#_1!=tmp1+"3d=");
+ Defvar(text(pt)+"3d",pt3);
+ vlistpre=VLIST; //16.08.20
+ if(isselected(pt) % isselected(parse(ptz)),
+ drawtext(pos,text(pt3));
+ );
+ if(!contains(["p","q"],text(pt)),
+ ptL=append(ptL,pt);
+ );
+ );
+ );
+ ptL;
+);
+
+Mkseg3d():=Mkseg3d([]);
+Mkseg3d(options):=(
+ regional(seg,nmseg,def,ptA,ptB,segL,opstr,opcindy,
+ name,strg,Ltype,Noflg,tht,tmp,tmp1,tmp2,tmp3);
+ name="geoseg3d";
+ strg=name+"=list(";
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ segL=[];
+ forall(allsegments(),seg,
+ inspect(seg,"labeled",false);
+ tmp=Finddef(seg);
+ def=tmp_1;
+ ptA=tmp_2;
+ ptB=tmp_3;
+ if(ispoint(parse(ptA)) & ispoint(parse(ptB)),
+ tmp1=select(VLIST,indexof(#_1,ptA+"3d=")>0);
+ tmp2=select(VLIST,indexof(#_1,ptB+"3d=")>0);
+ if(length(tmp1)>0 & length(tmp2)>0,
+ tmp1="["+ptA+"3d,"+ptB+"3d]";
+ nmseg=ptA+ptB;
+// Spaceline(nmseg,parse(tmp1),append(options,"Msg=nodisp")); //15.06.15
+ Spaceline("-"+nmseg+"3d",[ptA+"3d",ptB+"3d"], // 16.04.07
+ append(options,"Msg=nodisp")); //15.06.15
+ segL=append(segL,nmseg+"3d");// 16.04.07
+ strg=strg+nmseg+"3d,";// 16.04.07
+ );
+ );
+ );
+ println("generate totally "+name);
+ if(length(segL)>0, // 15.03.06
+ strg=substring(strg,0,length(strg)-1)+")";
+ if(Noflg<3,
+ GLIST=append(GLIST,strg);
+ );
+ tmp1=apply(segL,Dq+#+Dq); //15.03.02
+ tmp=name+"="+text(tmp1);
+ parse(tmp);
+ );
+ segL;
+);
+
+Ptseg3data():=Ptseg3data([]);
+//help:Ptseg3data();
+//help:Ptseg3data([A,B]);
+Ptseg3data(options):=(
+ regional(pt,pt3,plist,tmp,tmp1,tmp2);
+ if(isselected(TH) % isselected(FI),
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp=remove(tmp,options); //16.11.12
+ tmp=apply(tmp,text(#));
+ plist=select(tmp,substring(#,length(#)-1,length(#))!="z");
+ forall(plist,pt,
+ tmp1=text(pt);
+ tmp=select(VLIST,#_1==tmp1+"3d=");
+ if(length(tmp)>0,
+ pt3=tmp_1_2;
+ tmp=tmp1+".xy=Parapt("+pt3+")_[1,2];";
+ parse(tmp);
+ if(SUBSCR==1,
+ tmp=tmp1+"z"+".x=NE.x-SW.x+"+tmp1+".x";
+ parse(tmp);
+ );
+ );
+ );
+ ,
+ Mkpointlist(options); // 16.12.18
+ );
+ forall(alllines(),
+ #.color=[0.5,0.5,1];
+ );
+ SEG3dlist=Mkseg3d(options);
+ SEG3dlist;
+);
+
+Putonseg3d(name,ptL):=Putonseg3d(name,ptL_1,ptL_2,[]);
+Putonseg3d(name,Arg1,Arg2):=(
+ if(islist(Arg1),
+ Putonseg3d(name,Arg1_1,Arg1_2,Arg2);
+ ,
+ Putonseg3d(name,Arg1,Arg2,[]);
+ );
+);
+Putonseg3d(name,pt1,pt2,options):=(
+//help:Putonseg3d("C",[A,B]);
+//help:Putonseg3d("C",A,B);
+ regional(par,pn1,pn2,tmp,tmp1,tmp2,tmp3);
+ par=0.5;
+ tmp=divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ Putonseg(name,pt1,pt2,[par]);
+ inspect(parse(name),"ptsize",3);
+ inspect(parse(name),"color",2);
+ inspect(parse(name),"textsize",TSIZEZ);
+ Putpoint(name+"z",[parse(name+".x"),0]);
+ inspect(parse(name+"z"),"ptsize",3);
+ inspect(parse(name+"z"),"color",3);
+ inspect(parse(name+"z"),"textsize",TSIZEZ);
+ pn1=text(pt1);
+ pn2=text(pt2);
+ tmp1=replace("PTCz.y=PTAz.y+|PTC-PTA|/|PTB-PTA|*(PTBz.y-PTAz.y)","PTC",name);
+ tmp1=replace(tmp1,"PTA",pn1);
+ tmp1=replace(tmp1,"PTB",pn2);
+ tmp2=replace("PTCz.x=PTAz.x+|PTC-PTA|/|PTB-PTA|*(PTBz.x-PTAz.x)","PTC",name);
+ tmp2=replace(tmp2,"PTA",pn1);
+ tmp2=replace(tmp2,"PTB",pn2);
+ parse(tmp2);
+ parse(tmp1);
+ tmp1=parse(name+".x");
+ tmp2=parse(name+".y");
+ tmp3=parse(name+"z.y");
+ tmp=Xyzcoord(tmp1,tmp2,tmp3);
+ Defvar(name+"3d",tmp);
+);
+
+Putpoint3d(ptslist):=Putpoint3d(ptslist,"",0);
+Putpoint3d(Arg1,Arg2):=( // 16.03.02 from
+ if(islist(Arg1),
+ Putpoint3d(Arg1,Arg2,0);
+ ,
+ Putpoint3d(Arg1,Arg2,"fix");
+ );
+);
+Putpoint3d(Arg1,Arg2,Arg3):=(
+//help:Putpoint3d(["A",[2,1,3]]);
+//help:Putpoint3d(["A",[2,1,3]],"fix");
+//help:Putpoint3d("A",[2,1,3]);
+//help:Putpoint3d(["A",[2,1,3]],["fix"]);
+ regional(nn,kk,pt,pt3,ptslist,fixstr,tmp,tmp1,tmp2,tmp3); //16.08.19
+ if(isstring(Arg1),
+ ptslist=[Arg1,Arg2];
+ fixstr=Arg3;
+ ,
+ ptslist=Arg1;
+ fixstr=Arg2;
+ );
+ if(islist(fixstr),fixstr=fixstr_1);// 16.03.02 upto
+ nn=length(ptslist)/2;
+ forall(1..nn,kk, // 16.08.19from
+ tmp1=ptslist_(2*kk-1);
+ pt3=ptslist_(2*kk); // 16.08.19upto
+ VLIST=select(VLIST,#_1!=tmp1+"3d=");
+ tmp2=parse(tmp1);
+ if(ispoint(tmp2), // 16.05.26from
+ if(islist(fixstr),tmp=fixstr_1,tmp=fixstr);
+ tmp=Toupper(tmp);
+ if(tmp!="FIX",
+ tmp=Xyzcoord(tmp2.x,tmp2.y,parse(tmp1+"z").y);
+ ,
+ tmp=pt3;
+ );
+ Defvar(tmp1+"3d",tmp);
+ ,
+ Defvar(tmp1+"3d",pt3);
+ ); // 16.05.26upto
+ Defvar(tmp1+"fix",0);
+ pt=Parapt(pt3);
+ Putpoint(tmp1,pt,parse(tmp1+".xy"));
+ inspect(parse(tmp1),"ptsize",3);
+ inspect(parse(tmp1),"color",2);
+ inspect(parse(tmp1),"textsize",TSIZE);
+ if(SUBSCR==1,
+ tmp2=tmp1+"z";
+ tmp=[pt.x+NE.x-SW.x,pt3_3];
+ tmp1="[NE.x-SW.x+"+tmp1+".x,"+tmp2+"y]";
+ Putpoint(tmp2,tmp,parse(tmp1));
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ inspect(parse(tmp2),"textsize",TSIZEZ);
+ );
+ );
+ if(islist(fixstr),tmp=fixstr_1,tmp=fixstr);
+ if(tmp=="fix" % tmp=="Fix",
+ Fixpoint3d(ptslist);
+ );
+);
+
+Fixpoint3d(ptlist):=(
+// help:Fixpoint3d(["O",[0,0,0],"X",[1,0,0]]);
+ regional(name,pt3,pt2,tmp,tmp1,tmp2);
+ forall(1..(length(ptlist)/2),
+ name=ptlist_(2*#-1);
+ Defvar(name+"fix",1);
+ pt3=ptlist_(2*#);
+ pt2=Parapt(pt3);
+ tmp1=textformat(pt2_1,5);
+ tmp2=textformat(pt2_2,5);
+ tmp=name+".xy=["+tmp1+","+tmp2+"]";
+ parse(tmp);
+ tmp1=name+".x+NE.x-SW.x";
+ tmp2=textformat(pt3_3,5);
+ tmp=name+"z.xy=["+tmp1+","+tmp2+"];";
+ parse(tmp);
+ );
+);
+
+Perppt(name,ptstr,pLstr):=Putperp(name,ptstr,pLstr,"draw");
+Perppt(name,ptstr,pLstr,option):=Putperp(name,ptstr,pLstr,option);
+Putperp(name,ptstr,pLstr):=Putperp(name,ptstr,pLstr,"put");
+Putperp(name,ptstr,pLstr,option):=(
+//help:Perppt("N","O","A-B-C");
+//help:Perppt("N","O","A-B-C","put");
+//help:Perppt("N","O","A-B","none");
+ regional(out,Eps,N3d,sgstr,pP,pA,pB,pC,tmp,tmp1,flgpL);
+ Eps=10^(-4);
+ pP=parse(ptstr+"3d");
+ tmp=indexof(pLstr,"-");
+ pA=parse(substring(pLstr,0,tmp-1)+"3d");
+ tmp1=substring(pLstr,tmp,length(pLstr));
+ tmp=indexof(tmp1,"-");
+ if(tmp>0,
+ pB=parse(substring(tmp1,0,tmp-1)+"3d");
+ pC=parse(substring(tmp1,tmp,length(tmp1))+"3d");
+ flgpL=1;
+ ,
+ pB=parse(tmp1+"3d");
+ flgpL=0;
+ );
+ if(flgpL==1,
+ tmp=Crossprod(pB-pA,pC-pA);
+ if(abs(tmp)<Eps,
+ err("not a plane");
+ ,
+ tmp=tmp/|tmp|;
+ N3d=pP+tmp;
+ Defvar("tmp3d",N3d); // temporary
+ sgstr=ptstr+"-tmp";
+ tmp=IntersectsgpL(name,sgstr,pLstr,"none");
+ VLIST=select(VLIST,#_1!="tmp3d=");
+ out=tmp_1;
+ Defvar(name+"3d",tmp_1);
+ );
+ ,
+ if(|pB-pA|<Eps,
+ err("on the line");
+ ,
+ tmp1=(pB-pA)/|pB-pA|;
+ tmp=Dotprod(pP-pA,tmp1);
+ out=pA+tmp*tmp1;
+ Defvar(name+"3d",out);
+ );
+ );
+ if(islist(option),tmp=option_1,tmp=option);
+ tmp=substring(tmp,0,1);
+ if(tmp=="P" % tmp=="p",
+ Putpoint3d([name,out]);
+ Fixpoint3d([name,out]);
+ );
+ if(tmp=="D" % tmp=="d",
+ Drawpoint3d(out);
+ );
+ out;
+);
+
+Perpplane(name,ptstr,nvec):=
+ Perpplane(name,ptstr,nvec,"draw");
+Perpplane(name,ptstr,nstr,option):=(
+//help:Perpplane("A-B","P",[1,3,2]);
+//help:Perpplane("A-B","P",[0,0,1,0]);
+ regional(Eps,nvec,sgstr,pP,v1,v2,v3,
+ th,ph,pA,pB,tmp,tmp1,tmp2);
+ Eps=10^(-4);
+ if(isstring(nstr),nvec=parse(nstr+"3d"),nvec=nstr);
+ pP=parse(ptstr+"3d");
+ v3=nvec/|nvec|;
+ th=THETA; ph=PHI;
+ tmp=findangle(v3);
+ THETA=tmp_1; PHI=tmp_2;
+ v1=Cancoordpara([1,0,0]);
+ v2=Cancoordpara([0,1,0]);
+ THETA=th; PHI=ph;
+ tmp=indexof(pLstr,"-");
+ pA=pP+v1;
+ pB=pP+v2;
+ if(islist(option),tmp=option_1,tmp=option);
+ tmp=Toupper(substring(tmp,0,1)); // 16.06.19
+ if(tmp=="P",
+ tmp=indexof(name,"-");
+ tmp1=substring(name,0,tmp-1);
+ tmp2=substring(name,tmp,length(name));
+ Putpoint3d([tmp1,pA,tmp2,pB],["fix"]);
+ );
+ if(tmp=="D",
+ Drawpoint3d(pA);
+ Drawpoint3d(pB);
+ );
+ [pA,pB];
+);
+
+Drawpoint3d(pt3):=(
+//help:Drawpoint3d(pt3d);
+ regional(ptL,tmp,tmp1,tmp2);
+ if(MeasureDepth(pt3)==0,ptL=[pt3],ptL=pt3);
+ forall(ptL,
+ tmp=parapt(#);
+ draw(tmp_(1..2));
+ if(SUBSCR==1,
+ draw([tmp_1+NE.x-SW.x, #_3]);
+ );
+ );
+);
+
+Putaxes3d(size):=(
+//help:Putaxes3d(5);
+//help:Putaxes3d([1,2,3]);
+ regional(sL);
+ if(islist(size),sL=size,sL=[size,size,size]);
+ Putpoint3d(["O",[0,0,0]],"fix"); //17.06.02from
+ Putpoint3d(["X",[sL_1,0,0]],"fix");
+ Putpoint3d(["Y",[0,sL_2,0]],"fix");
+ Putpoint3d(["Z",[0,0,sL_3]],"fix");
+// Fixpoint3d(["O",[0,0,0]]);
+// Fixpoint3d(["X",[sL_1,0,0],"Y",[0,sL_2,0],"Z",[0,0,sL_3]]);//17.06.02fupto
+);
+
+IntersectsgpL(name,sgstr,pLstr):=
+ IntersectsgpL(name,sgstr,pLstr,"draw");
+IntersectsgpL(name,sgstr,pLstr,option):=(
+//help:IntersectsgpL("R","P-Q","A-B-C");
+//help:IntersectsgpL("R","P-Q","A-B-C","put");
+//// help:IntersectsgpL("","P-Q","A-B-C","none");
+//help:IntersectsgpL("",[p1,p2],[p3,p4,p5],"draw");
+ regional(opstr,out,pP,pQ,pA,pB,pC,pH,pK,pR,tseg,tt,ss,Eps,flg,
+ nvec,tmp,tmp1,tmp2,tmp3,tmp4);
+ if(islist(option),opstr=option_1,opstr=option);
+ Eps=10^(-4);
+ flg=0;
+ if(!isstring(sgstr), // 15.05.29
+ pP=sgstr_1;
+ pQ=sgstr_2;
+ ,
+ tmp=indexof(sgstr,"-");
+ if(tmp>0, // 15.05.28
+ pP=parse(substring(sgstr,0,tmp-1)+"3d");
+ pQ=parse(substring(sgstr,tmp,length(sgstr))+"3d");
+ ,
+ tmp1=parse(sgstr);
+ pP=tmp1_1;
+ pQ=tmp1_2;
+ );
+ );
+ if(!isstring(pLstr), // 16.02.02
+ pA=pLstr_1;
+ pB=pLstr_2;
+ pC=pLstr_3;
+ ,
+ tmp=indexof(pLstr,"-");
+ pA=parse(substring(pLstr,0,tmp-1)+"3d");
+ tmp1=substring(pLstr,tmp,length(pLstr));
+ tmp=indexof(tmp1,"-");
+ pB=parse(substring(tmp1,0,tmp-1)+"3d");
+ pC=parse(substring(tmp1,tmp,length(tmp1))+"3d");
+ );
+ nvec=Crossprod(pB-pA,pC-pA);
+ if(abs(Dotprod(nvec,pQ-pP))>Eps,
+ pH=(Reflect3point(pP,[pA,pB,pC])+pP)/2;
+ pK=(Reflect3point(pQ,[pA,pB,pC])+pQ)/2;
+ tmp1=pP-pH;
+ tmp2=tmp1+pK-pQ;
+ tmp=select(tmp2,abs(#)==max(apply(tmp2,abs(#))));
+ tmp=select(1..3,tmp2_#==tmp_1);
+ tmp=tmp_1;
+ tseg=tmp1_tmp/tmp2_tmp;
+ pR=(1-tseg)*pH+tseg*pK;
+ tmp=substring(opstr,0,1);
+ if(Toupper(tmp)=="P",
+ Putpoint3d([name,pR]);
+ Fixpoint3d([name,pR]);
+ );
+ if(Toupper(tmp)=="D",
+ Drawpoint3d(pR);
+ );
+ tmp=Dotprod(pB-pA,pC-pA);
+ tmp1=Dotprod(pB-pA,pB-pA);
+ tmp2=Dotprod(pC-pA,pC-pA);
+ tmp3=Dotprod(pR-pA,pB-pA);
+ tmp4=Dotprod(pR-pA,pC-pA);
+ ss=-(tmp*tmp4-tmp3*tmp2)/(tmp1*tmp2-tmp^2);
+ tt=(tmp1*tmp4-tmp*tmp3)/(tmp1*tmp2-tmp^2);
+ out=[pR,tseg,ss,tt];
+ ,
+ if(Toupper(substring(opstr,0,1))!="N",
+ println(" "+sgstr+","+pLstr+" are parallel");
+ );
+ out=[];
+ );
+ out;
+);
+
+Bezier3d(nm,ptctrlist):=Bezier3(nm,ptctrlist);
+Bezier3d(nm,Ag1,Ag2):=Bezier3(nm,Ag1,Ag2);
+Bezier3d(nm,ptlistorg,ctrlistorg,options):=
+ Bezier3(nm,ptlistorg,ctrlistorg,options);
+//help:Bezier3d("1",["A","B","C"],["D","E","F","G"]);
+Bezier3(nm,ptctrlist):=Bezier3(nm,ptctrlist_1,ptctrlist_2,[]);
+Bezier3(nm,Ag1,Ag2):=(
+ if(MeasureDepth(Ag1)==0,
+ Bezier3(nm,Ag1,Ag2,[]);
+ ,
+ if(MeasureDepth(Ag1)>1,
+ Bezier3(nm,Ag1_1,Ag1_2,Ag2);
+ ,
+ if(isstring(Ag_1_1),
+ Bezier3(nm,Ag1,Ag2,[]);
+ ,
+ Bezier3(nm,Ag1_1,Ag1_2,Ag2);
+ );
+ );
+ );
+);
+Bezier3(nm,ptlistorg,ctrlistorg,options):=(
+ regional(name,name3,name2,tmp,tmp1,tmp2,
+ Ltype,Noflg,opstr,eqL,ii,knt,ctr,out);
+ name="bz"+nm;
+ name3="bz3d"+nm;
+ name2="bz2d"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ tmp1=select(eqL,indexof(#,"Num")>0);
+ if(length(tmp1)==0,eqL=append(eqL,"Num=20"));
+ ptlist=ptlistorg;
+ if(isstring(ptlistorg_1),ptlist=apply(ptlistorg,parse(#+"3d")));
+ ctrlist=ctrlistorg;
+ if(isstring(ctrlistorg_1),ctrlist=apply(ctrlistorg,parse(#+"3d")));
+ out=[];
+ forall(1..(length(ptlist)-1),ii,
+ knt=[ptlist_ii,ptlist_(ii+1)];
+ ctr=[ctrlist_(2*ii-1),ctrlist_(2*ii)];
+ tmp="Bezierpt(T,ptlist,ctrlist)";//17.01.04
+ tmp=Assign(tmp,"ptlist",knt);
+ tmp=Assign(tmp,"ctrlist",ctr);
+ Spacecurve(name+text(ii),tmp,"T=[0,1]",append(eqL,"nodisp"));//17.01.04
+ out=append(out,name3+text(ii));
+ );
+ tmp1=[];
+ forall(1..length(out),
+ tmp=parse(out_#);
+ if(#==1,tmp1=tmp,tmp1=concat(tmp1,tmp_(2..length(tmp))));
+ );
+ if(Noflg<3,
+ println("generate Beziercurve "+name3);
+ tmp2=Spaceline("",tmp1,["nodata"]);
+ tmp=name3+"="+tmp2;
+ parse(tmp);
+ tmp1=Projpara(name3,["nodata"]);
+ tmp=name2+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=text(out);
+ tmp1=substring(tmp1,1,length(tmp1)-1);
+ tmp=name3+"=Joincrvs("+tmp1+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1, // 15.02.11
+ Subgraph(name3,opcindy);
+ );
+ );
+ out;
+);
+
+Putbezier3data(name,pt3Lorg):=Putbezier3data(name,pt3Lorg,[]);
+Putbezier3data(name,pt3Lorg,options):=(
+ regional(pt3L,psize,Deg,nn,numstr,
+ tmp,tmp1,tmp2,tmp3,pts,ctrpts);
+ tmp=Divoptions(options);
+ Deg=3;
+ tmp1=tmp_5;
+ forall(tmp1,
+ if(substring(#,0,1)=="D",
+ tmp=indexof(#,"=");
+ Deg=parse(substring(#,tmp,length(#)));
+ );
+ );
+ pt3L=pt3Lorg;
+ if(isstring(pt3L_1),pt3L=apply(pt3L,parse(#+"3d")));
+ ctrpts=[];
+ forall(2..length(pt3L),nn, // 16.08.19from
+// if(nn==2,numstr="",numstr=text(nn-2));
+ numstr=text(nn-1); // 16.08.19
+ if(Deg==3,
+ tmp1=name+numstr+"p";
+ tmp2=(2*pt3L_(nn-1)+pt3L_(nn))/3;
+ VLIST=select(VLIST,#_1!=tmp1+"3d="); // 16.08.19from
+// if(length(tmp)==0,
+ Putpoint3d([tmp1,tmp2]);
+// );// 16.08.19upto
+ ctrpts=append(ctrpts,tmp1);
+ tmp1=name+numstr+"q";
+ tmp3=(pt3L_(nn-1)+2*pt3L_nn)/3;
+ VLIST=select(VLIST,#_1!=tmp1+"3d=");
+// if(length(tmp)==0,
+ Putpoint3d([tmp1,tmp3]);
+// );
+ ctrpts=append(ctrpts,tmp1);
+ ,
+ tmp1=name+numstr+"p";
+ tmp2=(pt3L_(nn-1)+pt3L_nn)/2;
+ VLIST=select(VLIST,#_1!=tmp1+"3d="); // 16.08.19upto
+// if(length(tmp)==0,
+ Putpoint3d([tmp1,tmp2]);
+// );
+ ctrpts=append(ctrpts,tmp1);
+ );
+ );
+ ctrpts;
+);
+
+Mkbezierptcrv3d(ptdata):=Mkbezierptcrv3(ptdata);
+Mkbezierptcrv3d(ptdata,options):=Mkbezierptcrv3(ptdata,options);
+//help:Mkbezierptcrv3d(["A","B","C","D"]);
+Mkbezierptcrv3(ptdata):=Mkbezierptcrv3(ptdata,[]);
+Mkbezierptcrv3(ptdata,options):=(
+ regional(Eps,ptlist,nn,pt3L,name,bz,pt,p1,p2,p13d,p23d,pt3,
+ Out,tt,pos,tmp,tmp1,tmp2);
+ Eps=10^(-4);
+ pos=[NE.x+1,NE.y];
+ if(MeasureDepth(ptdata)==0,ptlist=[ptdata],ptlist=[ptdata]);
+ Out=[];
+ forall(1..length(ptlist),nn,
+ nn=1;
+ pt3L=ptlist_nn;
+ tmp=floor((BezierNumber3-1)/26);// 15.02.23 from
+ if(tmp==0,tmp="",tmp=text(tmp));
+ tmp2=mod(BezierNumber3,26);
+ if(tmp2==0,tmp2=26);
+ name=unicode(text(96+tmp2),base->10)+tmp;
+ tmp2=Putbezier3data(name,pt3L,options);
+ Bezier3(name,pt3L,tmp2,options);
+// BZLIST3=append(BZLIST3,[name,pt3L]);
+ Out=append(Out,tmp2);
+ BezierNumber3=BezierNumber3+1;
+ );
+ Out;
+);
+
+
+///////////////////////////////////////////
+
+Readobj(filename):=Readobj(filename,[]);
+Readobj(filename,options):=(
+//help:Readobj("file.obj",["size=-3"]);
+ regional(eqL,size,vL,fnL,tmp,tmp1,tmp2);
+ size=1;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="S",
+ tmp=indexof(#,"=");
+ size=parse(substring(#,tmp,length(#)));
+ );
+ );
+ tmp=load(filename);
+ tmp=tokenize(tmp,"v");
+ tmp1=tmp_(2..(length(tmp)-1));
+ tmp2=tmp_(length(tmp));
+ tmp2=tokenize(tmp2,"f");
+ tmp1=append(tmp1,tmp2_1);
+ tmp1=apply(tmp1,Removespace(#));
+ tmp1=apply(tmp1,replace(#," "," "));
+ tmp1=apply(tmp1,"["+replace(#," ",",")+"]");
+ vL=apply(tmp1,size*parse(#));
+ tmp2=tmp2_(2..(length(tmp2)));
+ tmp2=apply(tmp2,Removespace(#));
+ tmp2=apply(tmp2,replace(#," "," "));
+ tmp2=apply(tmp2,"["+replace(#," ",",")+"]");
+ fnL=apply(tmp2,parse(#));
+ [vL,fnL];
+);
+
+/////////////////////////////////////////
+
+Readobj(filename,options):=(
+//help:Readobj("file.obj",["size=-3"]);
+ regional(eqL,size,vL,fnL,dtL,numer,flg,flg2,
+ tmp,tmp1,tmp2,tmp3,tmp4,tmp5);
+ size=1;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="S",
+ tmp=indexof(#,"=");
+ size=parse(substring(#,tmp,length(#)));
+ );
+ );
+ numer="-0123456789";
+ tmp=load(filename);
+ dtL=tokenize(tmp,"v ");
+ vL=[];
+ fnL=[];
+ flg=0;
+ flg2=0;
+ forall(dtL,dt,
+ tmp1=Removespace(dt);
+ if(indexof(numer,substring(tmp1,0,1))>0,
+ tmp2="";
+ tmp=indexof(tmp1,"f");
+ if(tmp>0,
+ tmp2=substring(tmp1,tmp-1,length(tmp1));
+ tmp1=substring(tmp1,0,tmp-1);
+ if(substring(tmp1,length(tmp1)-1,length(tmp1))=="#",
+ tmp2="#"+tmp2;
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ );
+// tmp=indexof(tmp2,"#");
+// if(tmp>0,
+// tmp2=substring(tmp2,0,tmp-1);
+// );
+ );
+ if(flg==1,
+ tmp1="";
+ flg=0;
+ );
+ if(length(tmp1)>0,
+ tmp=indexof(tmp1,"#");
+ if(tmp>0,
+ tmp1=substring(tmp1,0,tmp-1);
+ flg=1;
+ );
+ tmp=indexof(tmp1,"vt");
+ if(tmp>0,
+ tmp1=substring(tmp1,0,tmp-1);
+ );
+ tmp1=replace(tmp1," ",",");
+ tmp1=replace(tmp1," ",",");
+ tmp1="["+tmp1+"]";
+ tmp1=size*parse(tmp1);
+ vL=append(vL,tmp1);
+ );
+ if(length(tmp2)>0,
+ tmp2=tokenize(tmp2,"f");
+ if(length(tmp2_1)==0,
+ tmp2=tmp2_(2..length(tmp2));
+ // ,
+ // if(tmp2_1=="#",
+// tmp2=tmp2_(2..length(tmp2));
+// tmp2_1="#"+tmp2_1;
+// );
+ );
+ forall(1..length(tmp2),tmp3,
+ tmp=tmp2_tmp3;
+ if(substring(tmp,length(tmp)-1,length(tmp))=="#",
+ tmp2_(tmp3+1)="#"+Removespace(tmp2_(tmp3+1));
+ tmp2_tmp3=substring(tmp,0,length(tmp)-1);
+ );
+ tmp5="";
+ if(length(tmp2_tmp3)>0,
+ tmp4=tokenize(tmp2_tmp3," ");
+ forall(tmp4,
+ if(length(text(#))>0,
+ if(indexof(text(#),"/")==0,
+ tmp=text(#);
+ ,
+ tmp=tokenize(text(#),"/");
+ tmp=tmp_1;
+ );
+ if(length(tmp)>0,
+ tmp5=tmp5+tmp+",";
+ );
+ );
+ );
+ tmp5=substring(tmp5,0,length(tmp5)-1);
+ if(length(tmp5)>0,
+ if(substring(tmp5,0,1)!="#",
+ tmp5="["+tmp5+"]";
+ fnL=append(fnL,parse(tmp5));
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ [vL,fnL];
+);
+
+Concatobj(objL):=Concatobj(objL,[]);
+Concatobj(objL,options):=(
+//help:Concatobj([polyhed,triangle]);
+//help:Concatobj([polyhed,triangle],["Rmf=no"]);
+//help:Concatobj([[A,B,C],[A,C,D]]);
+ regional(obj,vL,fL,vadd,vtx,faces,fnew,face,jj,kk,vctr,eps,
+ tmp,tmp1,tmp2,tmp3,eqL,rmf);
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ rmf="y"; // 16.08.19
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="R",
+ if(tmp2=="Y",rmf="y"); // 16.08.14
+ );
+ );
+ eps=10^(-4);
+ vL=[];
+ fL=[];
+ vctr=0;
+ forall(objL,obj,
+ if(isstring(obj),
+ tmp1=parse(obj);
+ ,
+ tmp1=obj;
+ );
+ if(length(tmp1)>2, // 16.02.28
+ tmp=1..length(tmp1);
+ tmp1=[tmp1,[tmp]];
+ );
+ vtx=tmp1_1; // 16.02.11 from
+ faces=tmp1_2;
+ fnew=faces;
+ vctr=0;
+ vadd=[];
+ forall(1..length(vtx),jj,
+ tmp1=vtx_jj;
+ tmp=select(1..length(vL),dist3d(vL_#,tmp1)<eps);
+ if(length(tmp)==0,
+ vadd=append(vadd,tmp1);
+ vctr=vctr+1;
+ tmp2=length(vL)+vctr;
+ ,
+ tmp2=tmp_1;
+ );
+ forall(1..length(faces),kk,
+ face=faces_kk;
+ tmp=select(1..length(face),face_#==jj);
+ if(length(tmp)>0,
+ tmp1=tmp_1;
+ fnew_kk_tmp1=tmp2;
+ );
+ );
+ );
+ vL=concat(vL,vadd);
+ fL=concat(fL,fnew); // 16.02.11 upto
+ );
+ tmp2=apply(1..length(fL),1);
+ if(rmf=="y",
+ forall(1..length(fL),jj,
+ tmp=fL_jj;
+ tmp1=select((jj+1)..length(fL),fL_#==tmp);
+ forall(tmp1,tmp2_#=0);
+ );
+ tmp=select(1..length(tmp2),tmp2_#==1);
+ fL=fL_tmp;
+ );
+ [vL,fL];
+);
+
+if(1==0,
+
+Mkobjfile(fname,objL):=Mkobjfile(Dirwork,fname,objL);
+Mkobjfile(path,fnameorg,objL):=(
+//help:Mkobj(filename,objlist);
+ regional(fname,obj,vtx,face,tmp,tmp1,tmp2);
+ fname=fnameorg;
+ if(indexof(fname,".")==0,fname=fname+".obj");
+ vtx=objL_1;
+ face=objL_2;
+ setdirectory(path);
+ SCEOUTPUT = openfile(fname);
+ forall(vtx,tmp1,
+ tmp2=tmp1;
+ if(ispoint(tmp1),
+ tmp2=parse(text(tmp1)+"3d");
+ );
+ tmp="v "+format(tmp2_1,5)+" "+format(tmp2_2,5)+" "+format(tmp2_3,5);
+ println(SCEOUTPUT,tmp);
+ );
+ forall(face,tmp1,
+ tmp="f";
+ forall(tmp1,
+ tmp=tmp+" "+text(#);
+ );
+ println(SCEOUTPUT,tmp);
+ );
+ closefile(SCEOUTPUT);
+ setdirectory(Dirwork);
+);
+
+);
+
+VertexandEdge(nm,vfnL):=VertexEdgeFace(nm,vfnL,[]);
+VertexandEdge(nm,vfnL,options):=VertexEdgeFace(nm,vfnL,options);
+VertexEdgeFace(nm,vfnL):=VertexEdgeFace(nm,vfnL,[]); // 16.02.10
+//help:VertexEdgeFace("1",[vL,fnL]);
+//help:VertexEdgeFace("1",["A","B","C"]);
+//help:VertexEdgeFace(options=["Pt=fix","Edg=geo"]);
+VertexEdgeFace(nm,vfnLorg,optionorg):=(
+ regional(name3,namev,namee,namef,vfnL,options,Noflg,eqL,strL,
+ vL,eL,enL,face,edge,vtx,vname,fixflg,edgflg,tmp,tmp1,tmp2);
+ name3="phvef"+nm;
+ namev="phv3d"+nm;
+ namee="phe3d"+nm;
+ namef="phf3d"+nm;
+ options=optionorg;
+ vfnL=vfnLorg; // 16.06.19from
+ if(length(vfnL)>2,
+ vfnL=[vfnL,[1..length(vfnL)]];
+ );
+ if(length(vfnL)==1,
+ vfnL=[vfnL_1,[1..length(vfnL_1)]];
+ ); // 16.06.19upto
+ tmp=Divoptions(options);
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ strL=tmp_7;
+ fixflg=1;
+ edgflg=1;
+ forall(eqL,
+ tmp1=Toupper(substring(#,0,1));
+ tmp=indexof(#,"=");
+ tmp2=Toupper(substring(#,tmp,length(#)));
+ if(tmp1=="P",
+ if(tmp2=="FREE", fixflg=0);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="E",
+ if(substring(tmp2,0,1)=="N", edgflg=0);
+ options=remove(options,[#]);
+ );
+ );
+ forall(strL,
+ if(Toupper(#)=="FREE",
+ fixflg=0;
+ options=remove(options,[#]);
+ );
+ );
+ vL=[];
+ forall(1..length(vfnL_1),
+ vtx=vfnL_1_#; // 16.02.10 from
+ if(isstring(vtx),vtx=parse(vtx)); // 16.06.19
+ if(ispoint(vtx),
+ tmp=parse(text(vtx)+"3d");
+ vname=text(vtx);
+// tmp=parse(text(vtx)+"3d");
+// tmp="v"+text(#)+"3d="+textformat(tmp,5);
+// parse(tmp);
+ ,
+ vname="v"+text(#);
+ if(fixflg==1,
+ Putpoint3d(["v"+text(#),vtx],"fix");
+ );
+ );
+ vL=append(vL,vname); // 16.02.10 upto
+ );
+ eL=[];
+ forall(vfnL_2,face,
+ forall(1..length(face),
+ tmp1=face_#;
+ if(#<length(face),
+ tmp2=face_(#+1);
+ ,
+ tmp2=face_1;
+ );
+ if(tmp2<tmp1,
+ tmp=tmp2; tmp2=tmp1; tmp1=tmp;
+ );
+// tmp1="v"+text(tmp1)+"3d";
+// tmp2="v"+text(tmp2)+"3d";
+ tmp1=vL_tmp1+"3d";
+ tmp2=vL_tmp2+"3d";
+ tmp=select(eL,#==[tmp1,tmp2] % #==[tmp2,tmp1]);
+ if(length(tmp)==0,
+ eL=append(eL,[tmp1,tmp2]);
+ );
+ );
+ );
+ if(Noflg<3,
+ enL=[];
+ forall(eL,edge,
+ if(edgflg==0,
+ if(Noflg<2,
+ tmp1=edge_1;//parse(edge_1);
+ tmp2=edge_2;//parse(edge_2);
+ tmp="sl3d"+edge_1+edge_2;
+ if(islist(parse(tmp)),
+ Changestyle3d([tmp],["nodisp"]);
+ );
+ tmp="sl3d"+edge_2+edge_1;
+ if(islist(parse(tmp)),
+ Changestyle3d([tmp],["nodisp"]);
+ );
+ tmp=replace(edge_1+edge_2,"3d","");
+ options=append(options,"Msg=no");
+ Spaceline("-"+tmp,[tmp1,tmp2],options); //16.02.28
+ );
+ enL=append(enL,tmp+"3d"); //16.02.29
+ ,
+ tmp1=replace(edge_1,"3d","");
+ tmp2=replace(edge_2,"3d","");
+ tmp=tmp1+tmp2;
+ create([tmp],"Segment",[parse(tmp1),parse(tmp2)]);
+ enL=append(enL,tmp+"3d");//16.02.29
+ );
+ );
+ if(Noflg<2,
+ println("generate "+name3);
+ println(" generate totally "+namee);
+ println(" generate vertexes "+namev);
+ println(" generate faces "+namef);
+ );
+ tmp1="";
+ forall(enL,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp=namee+"=["+tmp1+"]";
+ parse(tmp);
+ tmp=namee+"=list("+tmp1+")";
+ tmp=replace(tmp,Dq,"");
+ GLIST=append(GLIST,tmp);
+ tmp1=apply(vL,Dq+#+"3d"+Dq);
+ tmp1=text(tmp1);
+ tmp1=substring(tmp1,1,length(tmp1)-1);
+ tmp=namev+"=["+tmp1+"]";
+ parse(tmp);
+ tmp1=replace(tmp1,Dq,"");
+ tmp=namev+"=list("+tmp1+")";
+ GLIST=append(GLIST,tmp);
+ tmp1=text(vfnL_2);
+ tmp1=substring(tmp1,1,length(tmp1)-1);
+ tmp=namef+"=["+tmp1+"]";
+ parse(tmp);
+ tmp=namef+"=list("+tmp1+")";
+ GLIST=append(GLIST,tmp);
+ );
+ [namev,namee,namef];
+);
+
+Phparadata(nm,nmvf):=(
+ regional(tmp1,tmp2);
+ tmp1=parse("phv3d"+nmvf);
+ tmp2=parse("phf3d"+nmvf);
+ Phparadata(nm,nmvf,[tmp1,tmp2]);
+);
+Phparadata(nm,nmvf,Arg1):=(
+ regional(vfL,options,tmp1,tmp2);
+ if(islist(Arg1) & !islist(Arg1_1),
+ tmp1=parse("phv3d"+nmvf);
+ tmp2=parse("phf3d"+nmvf);
+ vfL=[tmp1,tmp2];
+ options=Arg1;
+ ,
+ vfL=Arg1;
+ options=[];
+ );
+ Phparadata(nm,nmvf,vfL,options);
+);
+Phparadata(nm,nmvf,vfL,options):=(
+//help:Phparadata("1","1",["do"]);
+ regional(name2,name3,nameh2,nameh3,Ltype,Noflg,eqL,Hidden,
+ opstr,opcindy,Outflg,Inflg,pdata1,tmp,tmp1,tmp2);
+ name2="php2d"+nm;
+ name3="php3d"+nm;
+ nameh2="phh2d"+nm;
+ nameh3="phh3d"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ if(Inflg==0 & Outflg==0, Inflg=1;Outflg=1); // 15.05.15
+ eqL=tmp_5;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Hidden="";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="H",
+ Hidden=tmp2;
+ );
+ );
+ if(Noflg<3,
+ if(Outflg>=1,
+ println("Output Phparadata "+name3);
+ if(isstring(vfL_1), // 2015.05.27 from
+ tmp1=vfL_1;
+ ,
+ tmp1="list(";
+ forall(vfL_1,
+ tmp1=tmp1+#+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ if(isstring(vfL_2),
+ tmp2=vfL_2;
+ ,
+ tmp2="list(";
+ forall(vfL_2,
+ tmp2=tmp2+text(#)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1)+")";
+ ); // 2015.05.27 upto
+ tmp=name3+"=Phparadata("+tmp1+","+tmp2+opstr+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ tmp=nameh3+"=PhHiddenData()";
+ GLIST=append(GLIST,tmp);
+ tmp=nameh2+"=Projpara("+nameh3+")";
+ GLIST=append(GLIST,tmp);
+ if(Outflg==1,
+ SCIWRLIST=append(SCIWRLIST,name3);
+ SCIWRLIST=append(SCIWRLIST,name2);
+ SCIWRLIST=append(SCIWRLIST,nameh3);
+ SCIWRLIST=append(SCIWRLIST,nameh2);
+ );
+ );
+ if(Inflg==1,
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name2);
+ if(islist(tmp),
+ Extractdata(name2,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name3);
+ SCIRELIST=append(SCIRELIST,name2);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+// tmp=apply(pltdata1,replace(#,"3d","2d")); // 15.05.18 from
+ Changestyle3d("phe3d"+nmvf,["nodisp"]);
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ );
+ );
+ if(Hidden!="",
+ Drawlinetype(nameh2,Hidden);
+ if(Inflg==1,
+ tmp1=Toupper(substring(Hidden,0,2));
+ if(tmp1=="DR",Ltype=0);
+ if(tmp1=="DA",Ltype=1);
+ if(tmp1=="DO",Ltype=3);
+ if(tmp1=="ID",Ltype=1);
+ GCLIST=append(GCLIST,[nameh2,Ltype,opcindy]);
+ );
+ );
+);
+
+Nohiddenseg(seg,rng,triang):=(
+// help:Nohiddenseg("1",seg1,[0,1],["v1","v2","v3"]);
+ regional(Eps,pA3,pB3,pC3,pA,pB,pC,sg1,sg2,ss1,ss2,parL,flgL,flg1,flg2,
+ veB,veC,sgnoh,sghid,added,tristr,tmp,tmp1,tmp2,tmp3,tmp4,tmp5);
+ Eps=10^(-4);
+ sgnoh=[0,1];
+ pA3=if(isstring(triang_1),parse(triang_1+"3d"),triang_1); //16.06.19
+ pA=Parapt(pA3);
+ pB3=if(isstring(triang_2),parse(triang_2+"3d"),triang_2); //16.06.19
+ pB=Parapt(pB3);
+ pC3=if(isstring(triang_3),parse(triang_3+"3d"),triang_3); //16.06.19
+ pC=Parapt(pC3);
+ sg1=seg_1+rng_1*(seg_2-seg_1);
+ sg2=seg_1+rng_2*(seg_2-seg_1);
+ ss1=Parapt(sg1);
+ ss2=Parapt(sg2);
+ tristr=replace(text(triang),",","-");
+ tristr=substring(tristr,1,length(tristr)-1);
+ if(|ss2-ss1|>Eps & abs(Crossprod(pB-pA,pC-pA))>Eps,
+ tmp=IntersectcrvsPp([ss1,ss2],[pA,pB,pC,pA]);
+ parL=apply(tmp,#_2-1);
+ parL=sort(parL);
+ if(length(parL)==0,
+ parL=[0,1];
+ ,
+ if(parL_1>Eps,parL=prepend(0,parL));
+ if(parL_(length(parL))<1-Eps,parL=append(parL,1));
+ );
+ tmp1=Crossprod(pB3-pA3,pC3-pA3);
+ if(abs(Dotprod(tmp1,sg2-sg1))>Eps,
+ tmp=IntersectsgpL("",[sg1,sg2],tristr,["nodisp"]);
+ if(tmp_2>-Eps & tmp_2<1+Eps,
+ if(tmp_3>-Eps & tmp_4>-Eps & tmp_3+tmp_4<1+Eps,
+ tmp1=select(parL,abs(tmp_2-#)<Eps);
+ if(length(tmp1)==0,
+ parL=sort(append(parL,tmp_2));
+ );
+ );
+ );
+ );
+ flgL=[];
+ forall(parL,
+ tmp1=sg1+#*(sg2-sg1);
+ tmp=Projcoordpara(tmp1);
+ tmp_3=tmp_3+1;
+ tmp2=Cancoordpara(tmp);
+ tmp=IntersectsgpL("",[tmp1,tmp2],tristr,["nodisp"]);
+ tmp1=Projcoordpara(tmp1);
+ tmp2=Projcoordpara(tmp_1);
+ flg1=0;
+ if(tmp1_3<tmp2_3-Eps,flg1=-1);
+ if(tmp1_3>tmp2_3+Eps,flg1=1);
+ flgL=append(flgL,flg1);
+ );
+ sgnoh=[];
+ forall(2..length(flgL),
+ added=[];
+ flg1=flgL_(#-1);
+ flg2=flgL_#;
+ if(max([flg1,flg2])==1 % flg1+flg2==0,
+ added=[parL_(#-1),parL_#];
+ ,
+ sghid=[parL_(#-1),parL_#];
+ tmp1=ss1+sghid_1*(ss2-ss1);
+ tmp2=ss1+sghid_2*(ss2-ss1);
+ tmp=IntersectcrvsPp([tmp1,tmp2],[pA,pB,pC,pA]);
+ if(length(tmp)<2,
+ veB=pB-pA;
+ veC=pC-pA;
+ tmp3=tmp1-pA;
+ tmp4=tmp2-pA;
+ tmp5=Crossprod(veB,veC);
+ tmp1=(tmp3_1*veC_2-tmp3_2*veC_1)/tmp5;
+ tmp2=(-tmp3_1*veB_2+tmp3_2*veB_1)/tmp5;
+ if(tmp1>-Eps & tmp2>-Eps & tmp1+tmp2<1+Eps,flg1=1,flg1=0);
+ tmp1=(tmp4_1*veC_2-tmp4_2*veC_1)/tmp5;
+ tmp2=(-tmp4_1*veB_2+tmp4_2*veB_1)/tmp5;
+ if(tmp1>-Eps & tmp2>-Eps & tmp1+tmp2<1+Eps,flg2=1,flg2=0);
+ if(flg1==1 & flg2==0,
+ if(length(tmp)>0,
+ tmp1=tmp_1_2-1;
+ tmp1=sghid_1+(sghid_2-sghid_1)*tmp1;
+ ,
+ tmp1=sghid_1;
+ );
+ added=[tmp1,sghid_2];
+// added=[tmp1+Eps,sghid_2]; // <--- USUI 2016.02.27
+ );
+ if(flg1==0 & flg2==1,
+ if(length(tmp)>0,
+ tmp1=tmp_1_2-1;
+ tmp1=sghid_1+(sghid_2-sghid_1)*tmp1;
+ ,
+ tmp1=sghid_2;
+ );
+ added=[sghid_1,tmp1];
+ );
+ if(flg1+flg2==0,
+ added=sghid;
+ );
+ );
+ if(length(tmp)==2,
+ if(min([flg1,flg2])>=0,added=sghid,added=[]);
+ );
+ );
+ if(length(added)>0,
+ if(length(sgnoh)==0,
+ sgnoh=added;
+ ,
+ if(sgnoh_(length(sgnoh))<added_1-Eps,
+ sgnoh=concat(sgnoh,added);
+ ,
+ sgnoh=sgnoh_(1..(length(sgnoh)-1));
+ sgnoh=concat(sgnoh,added_(2..length(added)));
+ );
+ );
+ );
+ );
+ );
+ sgnoh=apply(sgnoh,rng_1+#*(rng_2-rng_1));
+ sgnoh;
+);
+
+Nohiddensegs(seg,range,faceno,vtxL):=(
+ regional(Eps,rng,face,vtx,out,ra,rb,tmp,tmp1,tmp2);
+ Eps=10^(-4);
+ face=apply(faceno,vtxL_#); // 16.02.10
+ rng=range;
+ out=rng;
+ forall(2..(length(face)-1),vtx,
+ tmp1=[face_1,face_vtx,face_(vtx+1)];
+ forall(1..(length(rng)/2),
+ tmp=[rng_(2*#-1),rng_(2*#)];
+ out=remove(out,tmp);
+ tmp2=Nohiddenseg(seg,tmp,tmp1);
+ if(length(tmp2)>0,
+ out=remove(out,tmp);
+ out=concat(out,tmp2);
+ );
+ );
+ tmp=sort(out);
+ out=[];
+ forall(1..(length(tmp)/2),
+ ra=tmp_(2*#-1);
+ rb=tmp_(2*#);
+ if(ra<rb-Eps,
+ if(length(out)==0,
+ out=[ra,rb];
+ ,
+ if(out_(length(out))<ra-Eps,
+ out=concat(out,[ra,rb]);
+ ,
+ out_(length(out))=rb;
+ );
+ );
+ );
+ );
+ rng=out;
+ );
+ rng;
+);
+
+Nohiddenbyfaces(nm,facestr):=
+ Nohiddenbyfaces(nm,Datalist3d(),facestr,[],["do"]);
+Nohiddenbyfaces(nm,Arg1,Arg2):=(
+ regional(segstr,facestr,options);
+ if(islist(Arg2),
+ segstr=Datalist3d();
+ facestr=Arg1;
+ options=Arg2;
+ ,
+ segstr=Arg1;
+ facestr=Arg2;
+ options=[];
+ );
+ Nohiddenbyfaces(nm,segstr,facestr,options,["do"]);
+);
+Nohiddenbyfaces(nm,Arg1,Arg2,Arg3):=(
+ regional(segstr,facestr,options,optionsh);
+ if(islist(Arg2),
+ segstr=Datalist3d();
+ facestr=Arg1;
+ options=Arg2;
+ optionsh=Arg3;
+ ,
+ segstr=Arg1;
+ facestr=Arg2;
+ options=Arg3;
+ optionsh=["do"];
+ );
+ Nohiddenbyfaces(nm,segstr,facestr,options,optionsh); // 16.02.21
+);
+Nohiddenbyfaces(nm,segstr,facestr,optionorg,optionsh):=(
+//help:Nohiddenbyfaces("1","phf3d1");
+//help:Nohiddenbyfaces("1","ax3d","phf3d1");
+//help:Nohiddenbyfaces(options1=["dr"]);
+//help:Nohiddenbyfaces(options2=["do"]);
+ regional(Eps,namen,nameh,options,segL,faceL,vtxL,rng,seg,face,
+ flg,ctr,tmp,tmp1,tmp2,Ltype,Noflg,eqL,opstr,opcindy,frnL,frhL);
+ Eps=10^(-4);
+ namen="frn"+nm;
+ nameh="frh"+nm;
+ if(isstring(segstr),
+// segL=parse(segstr);
+ segL=[segstr]; // 16.08.19
+ ,
+ segL=segstr;
+ );
+ tmp2=[]; // 16.02.29 from
+ forall(segL,seg,
+ tmp=replace(seg,"3d","2d");
+ tmp1=select(GCLIST,#_1==tmp);
+ tmp1=tmp1_1;
+ if(tmp1_2==0,
+ tmp2=append(tmp2,seg);
+ );
+ );
+ segL=tmp2;
+ Changestyle3d(segL,["nodisp"]); // 16.02.29 upto
+ if(islist(segL),
+ if(isstring(segL_1),
+ segL=apply(segL,parse(#));
+ );
+ );
+ segL=Flattenlist(segL);
+ flg=0;
+ if(isstring(facestr),
+ if(substring(facestr,0,3)=="phf", // 16.08.19from
+ faceL=parse(facestr);
+ tmp=replace(facestr,"phf","phv"); // 16.02.10 from
+ tmp=parse(tmp);
+ vtxL=apply(tmp,replace(#,"3d","")); // 16.02.10 upto
+ flg=1;
+ ,
+ faceL=parse(facestr);
+ );
+ );
+ if(flg==0,
+ if(length(faceL)==2, // 16.08.19upto
+ vtxL=facestr_1;
+ faceL=facestr_2;
+ ,
+ vtxL=facestr;
+ faceL=[1..length(vtxL)];
+ );
+ );
+// Hidden="";
+ options=optionorg;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+// forall(eqL,
+// tmp=indexof(#,"=");
+// tmp1=Toupper(substring(#,0,1));
+// tmp2=substring(#,tmp,length(#));
+// if(tmp1=="H",
+// Hidden=tmp2;
+// );
+// );
+
+ ctr=1;
+ frnL=[];
+ frhL=[];
+ forall(segL,seg,
+ rng=[0,1];
+ forall(faceL,face,
+ rng=Nohiddensegs(seg,rng,face,vtxL);
+ );
+ forall(1..length(rng)/2,
+ tmp=rng_(2*#-1);
+ tmp1=seg_1+tmp*(seg_2-seg_1);
+ tmp=rng_(2*#);
+ tmp2=seg_1+tmp*(seg_2-seg_1);
+// tmp=remove(options,eqL);
+ tmp=append(options,"Msg=nodisp"); // 15.06.22
+ Spaceline("-"+namen+"n"+text(ctr),[tmp1,tmp2],tmp);
+ frnL=append(frnL,namen+"n"+text(ctr)+"3d");
+ ctr=ctr+1;
+ );
+ if(length(rng)==0,
+ rng=[0,1];
+ ,
+ if(rng_1>0+Eps,
+ rng=prepend(0,rng);
+ ,
+ rng=rng_(2..length(rng));
+ );
+ if(rng_(length(rng))<1-Eps,
+ rng=append(rng,1);
+ ,
+ rng=rng_(1..(length(rng)-1));
+ );
+ );
+ forall(1..length(rng)/2,
+ tmp=rng_(2*#-1);
+ tmp1=seg_1+tmp*(seg_2-seg_1);
+ tmp=rng_(2*#);
+ tmp2=seg_1+tmp*(seg_2-seg_1);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["do"]);
+ tmp=append(tmp,"Msg=nodisp"); // 15.06.22
+ Spaceline("-"+nameh+"n"+text(ctr),[tmp1,tmp2],tmp);
+ frhL=append(frhL,nameh+"n"+text(ctr)+"3d");
+ ctr=ctr+1;
+ );
+ );
+ tmp1=apply(frnL,Dq+#+Dq);
+ tmp="frn3d"+nm+"="+text(tmp1);
+ parse(tmp);
+ println(" generate totally "+"frn3d"+nm);
+ tmp1=apply(frhL,Dq+#+Dq);
+ tmp="frh3d"+nm+"="+text(tmp1);
+ parse(tmp);
+ println(" generate totally "+"frh3d"+nm);
+);
+
+Faceremovaldata(nm,vfdata,crvdata):=Faceremovaldata(nm,vfdata,crvdata,[]);
+Faceremovaldata(nm,vfdata,crvdata,options):=(
+ regional(name2,name3,nameh2,nameh3,Ltype,Noflg,eqL,Hidden,
+ opstr,opcindy,Outflg,Inflg,tmp,tmp1,tmp2);
+ name2="frc2d"+nm;
+ name3="frc3d"+nm;
+ nameh2="frch2d"+nm;
+ nameh3="frch3d"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ if(Inflg==0 & Outflg==0, Inflg=1;Outflg=1); // 15.05.15
+ eqL=tmp_5;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Hidden="";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="H",
+ Hidden=tmp2;
+ );
+ );
+ if(Noflg<3,
+ if(Outflg>=1,
+ println("Output Faceremovaldata "+name3);
+ if(MeasureDepth(vfdata)==1,
+ tmp1=text(apply(vfdata,#_[1,3]));
+ ,
+ tmp1=text([vfdata_[1,3]]);
+ );
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp2=text(crvdata);
+ tmp2=replace(tmp2,"[","list(");
+ tmp2=replace(tmp2,"]",")");
+// tmp2="Flattenlist("+tmp2+")";
+ tmp=name3+"=Faceremovaldata("+tmp1+","+tmp2+opstr+","+Dq+"para"+Dq+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ tmp=nameh3+"=PhHiddenData()";
+ GLIST=append(GLIST,tmp);
+ tmp=nameh2+"=Projpara("+nameh3+")";
+ GLIST=append(GLIST,tmp);
+ if(Outflg==1,
+ SCIWRLIST=append(SCIWRLIST,name3);
+ SCIWRLIST=append(SCIWRLIST,name2);
+ SCIWRLIST=append(SCIWRLIST,nameh3);
+ SCIWRLIST=append(SCIWRLIST,nameh2);
+ );
+ );
+ if(Inflg==1,
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name2);
+ if(islist(tmp),
+ Extractdata(name2,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name3);
+ SCIRELIST=append(SCIRELIST,name2);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ if(MeasureDepth(vfdata)==1,
+ tmp1=apply(vfdata,parse(#_2));
+ ,
+ tmp1=[parse(vfdata_2)];
+ );
+ forall(tmp1,
+ Changestyle3d(#,["nodisp"]);
+ );
+ Changestyle3d(crvdata,["nodisp"]);
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ );
+ );
+ if(Hidden!="",
+ Drawlinetype(nameh2,Hidden);
+ if(Inflg==1,
+ tmp1=Toupper(substring(Hidden,0,2));
+ if(tmp1=="DR",Ltype=0);
+ if(tmp1=="DA",Ltype=1);
+ if(tmp1=="DO",Ltype=3);
+ if(tmp1=="ID",Ltype=1);
+ GCLIST=append(GCLIST,[nameh2,Ltype,opcindy]);
+ );
+ );
+);
+
+Fullformfunc(FdL):=(
+ regional(Out,nn,ii,Jrg,flg,Urg,Vrg,kk,Uname,
+ Zf,Xname,Xf,Yname,Yf,tmp,tmp1,tmp2);
+ Out=[FdL_1];
+ nn=length(FdL);
+ flg=0;
+ forall(1..nn,
+ if(flg==0,
+ tmp=FdL_#;
+ if(substring(tmp,length(tmp)-1,length(tmp))=="]",
+ Jrg=#;
+ Urg=FdL_Jrg;
+ flg=1;
+ );
+ );
+ );
+ kk=indexof(Urg,"=");
+ Uname=Removespace(substring(Urg,0,kk-1));
+ tmp=substring(Urg,kk,length(Urg));
+ Urg=Uname+"="+tmp;
+// tmp1=parse(tmp);
+// Urg=Uname+"="+textformat(tmp1,5);
+ Vrg=FdL_(Jrg+1);
+ kk=indexof(Vrg,"=");
+ Vname=Removespace(substring(Vrg,0,kk-1));
+ tmp=substring(Vrg,kk,length(Vrg));
+ Vrg=Vname+"="+tmp;
+// tmp1=parse(tmp);
+// Vrg=Vname+"="+textformat(tmp1,5);
+ if(Jrg==2,
+ tmp=FdL_1;
+ kk=indexof(tmp,"=");
+ Zf=substring(tmp,kk,length(tmp));
+ tmp=[Uname,Vname,Zf,Urg,Vrg];
+ Out=concat(Out,tmp);
+ ,
+ if(Jrg==4,
+ tmp=FdL_1;
+ kk=indexof(tmp,"=");
+ Zf=substring(tmp,kk,length(tmp));
+ tmp=FdL_2;
+ kk=indexof(tmp,"=");
+ Xname=Removespace(substring(tmp,0,kk-1));
+ Xf=substring(tmp,kk,length(tmp));
+ tmp=FdL_3;
+ kk=indexof(tmp,"=");
+ Yname=Removespace(substring(tmp,0,kk-1));
+ Yf=substring(tmp,kk,length(tmp));
+ tmp=replace(Zf,Xname,"("+Xf+")");
+ Zf=replace(tmp,Yname,"("+Yf+")");
+ Tmp=[Xf,Yf,Zf,Urg,Vrg];
+ Out=concat(Out,Tmp);
+ ,
+ tmp=FdL_2;
+ kk=indexof(tmp,"=");
+ Xf=substring(tmp,kk,length(tmp));
+ tmp=FdL_3;
+ kk=indexof(tmp,"=");
+ Yf=substring(tmp,kk,length(tmp));
+ tmp=FdL_4;
+ kk=indexof(tmp,"=");
+ Zf=substring(tmp,kk,length(tmp));
+ tmp=[Xf,Yf,Zf,Urg,Vrg];
+ Out=concat(Out,tmp);
+ );
+ );
+ DrwS="enws";
+ BdyL=[];
+ forall((Jrg+2)..length(FdL),ii,
+ tmp=FdL_ii;
+ if(isstring(tmp),
+ if(length(tmp)==0,
+ tmp=" ";
+ );
+ DrwS=tmp;
+ );
+ if(islist(tmp) & length(tmp_1)>1,
+ BdyL=tmp;
+ );
+ );
+ tmp=[DrwS,BdyL];
+ Out=concat(Out,tmp);
+);
+
+Surffun(nm,Fd):=(
+ regional(name,coord,var1,var2,rng1,rng2,bdy,tmp,tmp1,tmp2);
+ tmp=Fullformfunc(Fd);
+ rng1=tmp_5;
+ rng2=tmp_6;
+ bdy=tmp_7;
+ coord="["+tmp_2+","+tmp_3+","+tmp_4+"]";
+ tmp=indexof(rng1,"=");
+ var1=substring(rng1,0,tmp-1);
+ rng1=substring(rng1,tmp,length(rng1));
+ tmp=indexof(rng2,"=");
+ var2=substring(rng2,0,tmp-1);
+ rng2=substring(rng2,tmp,length(rng2));
+ name="Sfn"+nm+"("+var1+","+var2+")";
+ Deffun(name,["regional(tmp)","tmp="+coord,"tmp"]);
+ [name,var1,rng1,var2,rng2,bdy];
+);
+
+Sf3data(nm,fdata):=Sf3data(nm,fdata,[]);
+Sf3data(nm,fdata,optionorg):=(
+ regional(tmp,tmp1,tmp2);
+ tmp=Surffun(nm,fdata);
+ tmp1=tmp_2+"="+tmp_3;
+ tmp2=tmp_4+"="+tmp_5;
+ Sf3data(nm,tmp_1,tmp1,tmp2,optionorg);
+);
+Sf3data(nm,funstr,var1,var2):=Sf3data(nm,funstr,var1,var2,[]);
+Sf3data(nm,funstr,var1org,var2org,optionorg):=(
+//help:Sf3data("1",Fd);
+//help:Sf3data(options=["Num=[25,25]","Wire=[20,20]"]);
+ regional(name2,name3,var1,var2,Ltype,Noflg,opstr,opcindy,eqL,Num,
+ Wire,varu,varv,rngu,rngv,sfdtuL,sfdtvL,options,
+ tmp,tmp1,tmp2,tmp3);
+ var1=replace(var1org,"%pi","pi");
+ var2=replace(var2org,"%pi","pi");
+ tmp=Divoptions(optionorg);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ options=optionorg;
+ Num=[25,25];
+ Wire=[20,20];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#)); // 16.05.25
+ tmp=Toupper(substring(tmp1,0,1));
+ if(tmp=="N",
+ tmp2=parse(tmp2);
+ if(!islist(tmp2),tmp2=[tmp2,tmp2]);
+ Num=tmp2;
+ options=remove(options,[#]);
+ );
+ if(tmp=="W",
+ tmp2=parse(tmp2);
+ if(!islist(tmp2),tmp2=[tmp2,tmp2]);
+ Wire=tmp2;
+ options=remove(options,[#]);
+ );
+ );
+ tmp=indexof(var1,"=");
+ varu=substring(var1,0,tmp-1);
+ rngu=parse(substring(var1,tmp,length(var1)));
+ tmp=indexof(var2,"=");
+ varv=substring(var2,0,tmp-1);
+ rngv=parse(substring(var2,tmp,length(var2)));
+ sfdtuL=[];
+ forall(0..Wire_2,
+ tmp=rngv_1+#/Wire_2*(rngv_2-rngv_1);
+ tmp1=replace(funstr,varv,textformat(tmp,5));
+ tmp="Num="+text(Num_2);
+ tmp2=concat(options,["Msg=no",tmp]);
+ Spacecurve(nm+"u"+#,tmp1,var1,tmp2);
+ sfdtuL=append(sfdtuL,"sc3d"+nm+"u"+#);
+ );
+ sfdtvL=[];
+ forall(0..Wire_1,
+ tmp=rngu_1+#/Wire_1*(rngu_2-rngu_1);
+ tmp1=replace(funstr,varu,textformat(tmp,5));
+ tmp="Num="+text(Num_1);
+ tmp2=concat(options,["Msg=no",tmp]);
+ Spacecurve(nm+"v"+#,tmp1,var2,tmp2);
+ sfdtvL=append(sfdtvL,"sc3d"+nm+"v"+#);
+ );
+ if(Noflg<3,
+ println(" generate totally "+"sf3d"+nm);
+ tmp1="";
+ forall(sfdtuL,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp2="";
+ forall(sfdtvL,
+ tmp2=tmp2+Dq+#+Dq+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ tmp="sf3d"+nm+"=[["+tmp1+"],["+tmp2+"]]";
+ parse(tmp);
+ );
+ [sfdtuL,sfdtvL];
+);
+
+Sfbdparadata(nm,fd):=
+ Sfbdparadata(nm,fd,[],["nodisp"]);
+Sfbdparadata(nm,fd,options):=
+ Sfbdparadata(nm,fd,options,["nodisp"]);
+Sfbdparadata(nm,fdorg,optionorg,optionsh):=(
+//help:Sfbdparadata("1",Fd);
+//help:Sfbdparadata(options2=["Wait=30",limit1([0.05,1], limit2(0.2)]);
+ regional(fd,options,name2,name3,name2h,name3h,waiting,
+ eqL,reL,strL,fname,outreg,tmp,tmp1,tmp2,flg,wflg);
+ name2="sfbd2d"+nm;
+ name3="sfbd3d"+nm;
+ name2h="sfbdh2d"+nm;
+ name3h="sfbdh3d"+nm;
+ fname=Fhead+"sfbd"+nm+".txt";
+ fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=30;
+ outreg=0; // 16.08.20
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+// if(tmp1=="O", // 16.08.20
+// tmp=Toupper(substring(tmp2,0,1));
+// if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
+// options=remove(options,[#]);
+// );
+ );
+ options=remove(options,reL);
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ cmdL=MkprecommandS(5); // 16.02.01
+ tmp=[
+ Dq+fname+Dq,
+ Dq+name3+Dq,name3,
+ Dq+name2+Dq,name2,
+ Dq+name3h+Dq,name3h,
+ Dq+name2h+Dq,name2h,
+ Dq+"HIDDENDATA"+Dq,"HIDDENDATA", // 16.08.20from
+ Dq+"PARTITIONPT"+Dq,"PARTITIONPT",
+ Dq+"OTHERPARTITION"+Dq,"OTHERPARTITION" // 16.08.20upto
+ ];
+ fd=apply(fd,replace(#,"_1","(1)")); // 16.05.25from
+ fd=apply(fd,replace(#,"_2","(2)"));
+ fd=apply(fd,replace(#,"_3","(3)")); // 16.05.25upto
+ cmdL=concat(cmdL,[
+ name3+"=Sfbdparadata",concat([fd,"Error"],reL),
+ name2+"=Projpara",[name3],
+ name3h+"=BorderHiddenData()",[],
+ name2h+"=Projpara",[name3h],
+ "function Ot=Hiddend(),global HIDDENDATA,Ot=HIDDENDATA,endfunction)"
+ ,[], // 16.08.20from
+ "function Ot=Otherp(),global OTHERPARTITION,Ot=OTHERPARTITION,endfunction)"
+ ,[],
+ "HIDDENDATA=Hiddend()",[],
+ "PARTITIONPT=PartitionPt()",[],
+ "OTHERPARTITION=Otherp()",[],
+ "for J=1:length(OTHERPARTITION)",[],
+ " Tmp1=OTHERPARTITION(J)",[],
+ " Tmp2=[]",[],
+ " for K=1:length(Tmp1)",[],
+ " Tmp2=[Tmp2;Tmp1(K),1000]",[],
+ " end",[],
+ " OTHERPARTITION(J)=Tmp2",[],
+ "end",[],
+ "WriteOutData",tmp
+ ]);
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"])); // 16.08.20
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS("sfbd"+nm,cmdL,options);
+ );
+ if(ErrFlag==1,
+ err("Sfbdparadata not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[fname]);
+ OutFileList=append(OutFileList,fname);
+ );
+ ReadOutData(fname);
+ if(islist(parse(name2)),
+ Extractdata(name2,options);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
+ Extractdata(name2h,tmp);
+ ,
+ ErrFlag=1;
+ );
+ );
+);
+
+Wireparadata(nm,out,wr1,wr2,fd):=
+ Wireparadata(nm,out,fd,wr1,wr2,[],["nodisp"]);
+Wireparadata(nm,out,fd,wr1,wr2,options):=
+ Wireparadata(nm,out,fd,wr1,wr2,options,["nodisp"]);
+Wireparadata(nm,outstr,fdorg,wr1,wr2,optionorg,optionsh):=(
+//help:Wireparadata("1","sfbd3d1",fd,5,5);
+//help:Wireparadata(options2=["Wait=40"]);
+ regional(out,fd,options,name2,name3,name2h,name3h,outreg,
+ eqL,reL,strL,fname,outfname,waiting,tmp,tmp1,tmp2,flg,wflg);
+ name2="wire2d"+nm;
+ name3="wiref3d"+nm;
+ name2h="wireh2d"+nm;
+ name3h="wireh3d"+nm;
+ fname=Fhead+"wire"+nm+".txt";
+ tmp=replace(outstr,"3d","");
+ outfname=Fhead+tmp+".txt"; // 16.08.20
+ out=parse(outstr);
+ if(!islist(out), ErrFlag=1);
+ fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=40;
+ outreg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+// if(tmp1=="O", // 16.08.20from
+// tmp=Toupper(substring(tmp2,0,1));
+// if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
+// options=remove(options,[#]);
+// );// 16.08.20upto
+ );
+ options=remove(options,reL);
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ flg=0;
+ tmp1=floor(5*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp=load(Fhead+replace(outstr,"3d","")+".txt");
+ if(length(tmp)>=4,
+ tmp2=substring(tmp,length(tmp)-4,length(tmp));
+ if(tmp2=="////",
+ flg=1;
+ );
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ if(flg==0,
+ Err(outstr+" file not copleted");
+ ErrFlag=1;
+ );
+ if(ErrFlag==0,
+// Writeoutdata(outfname,["Out",out]);
+ );
+ cmdL=MkprecommandS(5); // 16.02.01
+ tmp=[
+ Dq+fname+Dq,
+ Dq+name3+Dq,name3,
+ Dq+name2+Dq,name2,
+ Dq+name3h+Dq,name3h,
+ Dq+name2h+Dq,name2h
+ ];
+ fd=apply(fd,if(isstring(#),replace(#,"_1","(1)"),#)); // 16.05.25 08.17from
+ fd=apply(fd,if(isstring(#),replace(#,"_2","(2)"),#));
+ fd=apply(fd,if(isstring(#),replace(#,"_3","(3)"),#)); // 16.05.25 08.17upto
+ cmdL=concat(cmdL,[
+ "disp('Running Wireparadata')",[],
+ "tmp=ReadOutData",[Dq+outfname+Dq],
+ "execstr(tmp)",[],
+ "function SetHidd(Dt),global HIDDENDATA,HIDDENDATA=Dt,endfunction)",
+ [], // 16.08.20from
+ "function SetPart(Dt),global PARTITIONPT,PARTITIONPT=Dt,endfunction)",
+ [],
+ "function SetOther(Dt),global OTHERPARTITION,OTHERPARTITION=Dt,endfunction)",
+ [],
+ "if type(HIDDENDATA)~=15,HIDDENDATA=list(HIDDENDATA),end",[],
+ "if type(PARTITIONPT)~=15,PARTITIONPT=list(PARTITIONPT),end",[],
+ "if type(OTHERPARTITION)~=15,OTHERPARTITION=list(OTHERPARTITION),end",[],
+ "for J=1:length(OTHERPARTITION)",[],
+ " Tmp=OTHERPARTITION(J)",[],
+ " OTHERPARTITION(J)=Tmp(:,1)",[],
+ "end",[],
+ "SetHidd(HIDDENDATA)",[],
+ "SetPart(PARTITIONPT)",[],
+ "SetOther(OTHERPARTITION)",[],
+ "if type("+outstr+")~=15,"+outstr+"=list("+outstr+"),end",[], // 16.08.20upto
+ name3+"=Wireparadata",concat([outstr,fd,wr1,wr2,"Error"],reL),
+ name2+"=Projpara",[name3],
+ name3h+"=WireHiddenData()",[],
+ name2h+"=Projpara",[name3h],
+ "WriteOutData",tmp
+ ]);
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"]));
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS("wire"+nm,cmdL,options);
+ );
+ if(ErrFlag==1,
+ err("Wireparadata not completed");
+ ,
+ if(outreg==1,
+// OutFileList=remove(OutFileList,[fname]);
+// OutFileList=append(OutFileList,fname);
+ );
+ ReadOutData(fname);
+ if(!islist(parse(name2)), ErrFlag=1);
+ if(ErrFlag==0,
+ Extractdata(name2,options);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
+ Extractdata(name2h,tmp);
+ );
+ );
+);
+
+Crvsfparadata(nm,gd,out,fd):=
+ Crvsfparadata(nm,gd,out,fd,[],["nodisp"]);
+Crvsfparadata(nm,gd,out,fd,options):=
+ Crvsfparadata(nm,gd,out,fd,options,["nodisp"]);
+Crvsfparadata(nm,gdstr,outstr,fdorg,optionorg,optionsh):=(
+//help:Crvsfparadata("1","ax3d","sfbd3d1",fd);
+//help:Crvsfparadata(options2=["Wait=20"]);
+ regional(gd,out,fd,options,name2,name3,name2h,name3h,outreg,
+ eqL,reL,strL,fname,gdfname,outfname,waiting,tmp,tmp1,tmp2,flg,wflg);
+ name2="crvsf2d"+nm;
+ name3="crvsf3d"+nm;
+ name2h="crvsfh2d"+nm;
+ name3h="crvsfh3d"+nm;
+ fname=Fhead+"crvsf"+nm+".txt";
+ gdfname=Fhead+"crv"+nm+".txt";
+ tmp=replace(outstr,"3d","");
+ outfname=Fhead+tmp+".txt"; // 16.08.20
+ gd=parse(gdstr);
+ out=parse(outstr);
+ if(!islist(out), ErrFlag=1);
+ fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=20;
+ outreg=1;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+// if(tmp1=="O",
+// tmp=Toupper(substring(tmp2,0,1));
+// if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
+// options=remove(options,[#]);
+// );
+ );
+ options=remove(options,reL);
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ flg=0;
+ tmp1=floor(5*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp=load(Fhead+replace(outstr,"3d","")+".txt");
+ if(length(tmp)>=4,
+ tmp2=substring(tmp,length(tmp)-4,length(tmp));
+ if(tmp2=="////",
+ flg=1;
+ );
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ if(flg==0,
+ Err(outstr+" file not copleted");
+ ErrFlag=1;
+ );
+ if(wflg==0,
+ tmp=load(fname);
+ if(length(tmp)==0,wflg=1);
+ );
+ if(ErrFlag==0,
+// Writeoutdata(outfname,["Gc",gd,"Out",out]);
+// wait(WaitUnit);
+ );
+ cmdL=MkprecommandS(5); // 16.02.01
+ tmp=[
+ Dq+fname+Dq,
+ Dq+name3+Dq,name3,
+ Dq+name2+Dq,name2,
+ Dq+name3h+Dq,name3h,
+ Dq+name2h+Dq,name2h
+ ];
+ fd=apply(fd,if(isstring(#),replace(#,"_1","(1)"),#)); // 16.05.25 08.17from
+ fd=apply(fd,if(isstring(#),replace(#,"_2","(2)"),#));
+ fd=apply(fd,if(isstring(#),replace(#,"_3","(3)"),#)); // 16.05.25 08.17upto
+ cmdL=concat(cmdL,[
+ "disp('Running Crvsfparadata')",[],
+ "tmp=ReadOutData",[Dq+outfname+Dq],
+ "execstr(tmp)",[],
+ "function SetHidd(Dt),global HIDDENDATA,HIDDENDATA=Dt,endfunction)",
+ [], // 16.08.20from
+ "function SetPart(Dt),global PARTITIONPT,PARTITIONPT=Dt,endfunction)",
+ [],
+ "function SetOther(Dt),global OTHERPARTITION,OTHERPARTITION=Dt,endfunction)",
+ [],
+ "if type(HIDDENDATA)~=15,HIDDENDATA=list(HIDDENDATA),end",[],
+ "if type(PARTITIONPT)~=15,PARTITIONPT=list(PARTITIONPT),end",[],
+ "if type(OTHERPARTITION)~=15,OTHERPARTITION=list(OTHERPARTITION),end",[],
+ "for J=1:length(OTHERPARTITION)",[],
+ " Tmp=OTHERPARTITION(J)",[],
+ " OTHERPARTITION(J)=Tmp(:,1)",[],
+ "end",[],
+ "SetHidd(HIDDENDATA)",[],
+ "SetPart(PARTITIONPT)",[],
+ "SetOther(OTHERPARTITION)",[],
+ "if type("+outstr+")~=15,"+outstr+"=list("+outstr+"),end",[], // 16.08.20upto
+ name3+"=Crvsfparadata",concat([gdstr,outstr,fd,"Error"],reL),
+ name2+"=Projpara",[name3],
+ name3h+"=CrvsfHiddenData()",[],
+ name2h+"=Projpara",[name3h],
+ "WriteOutData",tmp
+ ]);
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"]));
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS("crvsf"+nm,cmdL,options);
+ );
+ if(ErrFlag==1,
+ err("Crvsfparadata not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[fname]);
+ OutFileList=append(OutFileList,fname);
+ );
+ ReadOutData(fname);
+ tmp=replace(gdstr,"3d","2d");
+ Changestyle([tmp],["nodisp"]);
+ Extractdata(name2,options);
+ if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]);
+ Extractdata(name2h,tmp);
+ );
+);
+
+Intersectcrvsf(nm,gd,fd):=
+ Intersectcrvsf(nm,gd,fd,[]);
+Intersectcrvsf(nm,gdstr,fdorg,optionorg):=(
+//help:Intersectcrvsf("1",ax3d_1,fd);
+//help:Intersectcrvsf(options=["Wait=10",50,0.05]);
+ regional(name,gd,fd,options,reL,fname,gdfname,
+ waiting,tmp,tmp1,tmp2,flg,wflg,pts);
+ name="intpts"+nm;
+ fname=Fhead+name+".txt";
+ gdfname=Fhead+"crv"+nm+".txt";
+ gd=parse(gdstr);
+ fd=apply(fdorg,if(isstring(#),"'"+#+"'",#));
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=10;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ options=remove(options,reL);
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ if(wflg>-1,
+ Writeoutdata(gdfname,["Gd",gd]);
+// wait(WaitUnit);
+ );
+ fd=apply(fd,replace(#,"_1","(1)")); // 16.05.25from
+ fd=apply(fd,replace(#,"_2","(2)"));
+ fd=apply(fd,replace(#,"_3","(3)")); // 16.05.25upto
+ cmdL=[
+ "disp('Finding Intersectcrvsf')",[],
+ "Setangle",[THETA,PHI]*180/pi,
+ "tmp=ReadOutData",[Dq+gdfname+Dq],
+ "execstr(tmp)",[],
+ "Intpts=Intersectcrvsf",concat(["Gd",fd,"Error"],reL),
+ "tmp1='['",[],
+ "for J=1:length(Intpts)",[],
+ " tmp2=Intpts(J)",[],
+ " for K=1:length(tmp2)",[],
+ " if K==1",[],
+ " tmp1=tmp1+'['",[],
+ " end",[],
+ " tmp1=tmp1+string(tmp2(K))",[],
+ " if K<length(tmp2)",[],
+ " tmp1=tmp1+','",[],
+ " else",[],
+ " tmp1=tmp1+']'",[],
+ " end",[],
+ " end",[],
+ " if J<length(Intpts)",[],
+ " tmp1=tmp1+','",[],
+ " else",[],
+ " tmp1=tmp1+']||||'",[], //16.08.09
+ " end",[],
+ "end",[],
+ "fid=mopen('"+fname+"','w')",[],
+ " mputl(tmp1,fid)",[],
+ "mclose(fid)",[]
+ ];
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"]));
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS(name,cmdL,options); // 16.08.14
+ );
+ if(ErrFlag==1,
+ err("Intersectcrvsf not completed");
+ ,
+ println(name+" obtained"); //16.08.14from
+ pts=load(fname);
+ pts=replace(pts,"||||","");
+ tmp=name+"="+pts;
+ parse(tmp);
+ parse(pts); //16.08.14upto
+ );
+);
+
+Skeletonparadata2(nm):=Skeletonparadata2(nm,[]);
+Skeletonparadata2(nm,options):=(
+ regional(tmp,tmp2,tmp3);
+ // tmp=apply(GCLIST,#_1);
+ // tmp=select(tmp,indexo(#,"2d")>0);
+ // tmp2=select(tmp,indexof(#,"sub")==0);
+ tmp3=Datalist3d();
+ Changestyle3d(tmp3,["nodisp"]); // 15.06.02, 07.22
+ // tmp3=apply(tmp2,replace(#,"2d","3d"));
+ Skeletonparadata2(nm,"",tmp3,tmp3,options);
+);
+Skeletonparadata2(nm,Arg1,Arg2):=(
+ regional(nme,pltdata1,pltdata2,options);
+ if(isstring(Arg1) & islist(Arg2),
+ nme=Arg1;
+// pltdata1=parse("phe3d"+nme);
+ pltdata1="phe3d"+nme;
+ pltdata2=pltdata1;
+ options=Arg2;
+ ,
+ nme="";
+ pltdata1=Arg1;
+ pltdata2=Arg2;
+ options=[];
+ );
+ Skeletonparadata2(nm,nme,pltdata1,pltdata2,options);
+);
+Skeletonparadata2(nm,Arg1,Arg2,Arg3):=(
+ regional(nme,pltdata1,pltdata2,options);
+ if(!isstring(Arg1),
+ nme="";
+ pltdata1=Arg1;
+ pltdata2=Arg2;
+ options=Arg3;
+ ,
+ if(isstring(Arg2) & !isstring(Arg3),
+ nme="";
+ pltdata1=Arg1;
+ pltdata2=Arg2;
+ options=Arg3;
+ ,
+ nme=Arg1;
+ pltdata1=Arg2;
+ pltdata2=Arg3;
+ options=[];
+ );
+ );
+ Skeletonparadata2(nm,nme,pltdata1,pltdata2,options); // 15.07.09
+);
+Skeletonparadata2(nm,nme,pltdata1,pltdata2,options):=(
+ regional(name2,name3,count,Ltype,Noflg,PdL,tmp,tmp1,tmp2,
+ opstr,opcindy,Str,Outflg,Inflg,realL,pdata1,pdata2,level);
+ name2="sk2d"+nm;
+ name3="sk3d"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ if(Inflg==0 & Outflg==0, Inflg=1;Outflg=1); // 15.05.15
+ realL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ if(Noflg<3,
+ if(Outflg>=1,
+ println("Output Skeletonparadata2 "+name3);
+ if(isstring(pltdata1), // 15.05.27 from
+ tmp1=pltdata1;
+ ,
+ tmp1="";
+ forall(pltdata1,
+ tmp1=tmp1+#+",";
+ );
+ tmp1="list("+substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ if(isstring(pltdata2),
+ tmp2=pltdata2;
+ ,
+ tmp2="";
+ forall(pltdata2,
+ tmp2=tmp2+#+",";
+ );
+ tmp2="list("+substring(tmp2,0,length(tmp2)-1)+")";
+ );
+ Str="Skeletonpara3data("+tmp1+","+tmp2+opstr+")"; // 15.05.27 upto
+ GLIST=append(GLIST,name3+"="+Str);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ if(Outflg==1,
+ SCIWRLIST=append(SCIWRLIST,name3);
+ SCIWRLIST=append(SCIWRLIST,name2);
+ );
+ );
+ if(Inflg==1,
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name2);
+ if(islist(tmp),
+ Extractdata(name2,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name3);
+ SCIRELIST=append(SCIRELIST,name2);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+// tmp=apply(pltdata1,replace(#,"3d","2d")); // 15.05.18 from
+ if(nme!="", // 15.05.27
+ Changestyle3d("phe3d"+nme,["nodisp"]);
+ ,
+ forall(pltdata1, // 15.07.16
+ tmp=replace(#,"3d","2d");
+ if(contains(GCLIST,tmp),
+ Changestyle3d(#,["nodisp"]);
+ );
+ );
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ );
+ );
+);
+
+Skeletonparadata(nm):=Skeletonparadata(nm,[]);
+Skeletonparadata(nm,options):=(
+ regional(tmp,tmp2,tmp3);
+ tmp3=Datalist3d();
+ Skeletonparadata(nm,"",tmp3,tmp3,options);
+// Changestyle3d(tmp3,["nodisp"]); // 15.06.02, 07.22
+);
+Skeletonparadata(nm,Arg1,Arg2):=(
+//help:Skeletonparadata("1");
+//help:Skeletonparadata("1",[pdata1,pdata2],[pdata3]);
+//help:Skeletonparadata(options2=[width(1), "Wait=20]);
+ regional(nme,pltdata1,pltdata2,options);
+ if(isstring(Arg1) & islist(Arg2),
+ nme=Arg1;
+// pltdata1=parse("phe3d"+nme);
+ pltdata1="phe3d"+nme;
+ pltdata2=pltdata1;
+ options=Arg2;
+ ,
+ nme="";
+ pltdata1=Arg1;
+ pltdata2=Arg2;
+ options=[];
+ );
+ Skeletonparadata(nm,nme,pltdata1,pltdata2,options);
+);
+Skeletonparadata(nm,Arg1,Arg2,Arg3):=(
+ regional(nme,pltdata1,pltdata2,options);
+ if(!isstring(Arg1),
+ nme="";
+ pltdata1=Arg1;
+ pltdata2=Arg2;
+ options=Arg3;
+ ,
+ if(isstring(Arg2) & !isstring(Arg3),
+ nme="";
+ pltdata1=Arg1;
+ pltdata2=Arg2;
+ options=Arg3;
+ ,
+ nme=Arg1;
+ pltdata1=Arg2;
+ pltdata2=Arg3;
+ options=[];
+ );
+ );
+ Skeletonparadata(nm,nme,pltdata1,pltdata2,options); // 15.07.09
+);
+Skeletonparadata(nm,nme,pltdata1org,pltdata2org,optionorg):=(
+ regional(name2,name3,eqL,strL,options,fname,outreg,waiting,
+ reL, pltdata1,pltdata2,wflg,opcindy,width,pdata,
+ tmp,tmp1,tmp2);
+ name2="sk2d"+nm;
+ name3="sk3d"+nm;
+ fname=Fhead+"sk"+nm+".txt";
+ pltdata1=[];// 16.01.31
+ forall(pltdata1org,tmp1,
+ tmp=parse(tmp1);
+ if(isstring(tmp_1),
+ pltdata1=concat(pltdata1,tmp);
+ ,
+ pltdata1=append(pltdata1,tmp1);
+ );
+ );
+ pltdata2=[];// 16.01.31
+ forall(pltdata2org,tmp1,
+ tmp=parse(tmp1);
+ if(isstring(tmp_1),
+ pltdata2=concat(pltdata2,tmp);
+ ,
+ pltdata2=append(pltdata2,tmp1);
+ );
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6; //16.02.28
+ strL=tmp_7;
+ opcindy=tmp_9;
+ waiting=20;
+ outreg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="O",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", outreg=1,outreg=0);
+ options=remove(options,[#]);
+ );
+ );
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ width=1;
+ if(length(reL)>0, //16.02.28
+ width=reL_1;
+ );
+ forall(pltdata1,pdata,
+ tmp=select(GLIST,indexof(#,pdata+"=")>0);
+ if(tmp==0,
+ Defvar(pdata,parse(pdata));
+ );
+ );
+ forall(pltdata2,pdata,
+ tmp=select(GLIST,indexof(#,pdata+"=")>0);
+ if(tmp==0,
+ tmp=select(VLIST,#_1==pdata+"=");
+ if(tmp==0,
+ Defvar(pdata,parse(pdata));
+ );
+ );
+ );
+ cmdL=MkprecommandS(4);
+ tmp2=[
+ Dq+fname+Dq,
+ Dq+name3+Dq,name3,
+ Dq+name2+Dq,name2
+ ];
+ cmdL=concat(cmdL,[
+ "Setangle",[THETA,PHI]*180/pi,
+ name3+"=Skeletonpara3data",[pltdata1,pltdata2,width,"Error"],
+ name2+"=Projpara",[name3],
+ "WriteOutData",tmp2
+ ]);
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"]));
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS("sk"+nm,cmdL,options);
+ );
+ if(ErrFlag==1,
+ err("Skeletonparadata not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[fname]);
+ OutFileList=append(OutFileList,fname);
+ );
+ ReadOutData(fname);
+ if(islist(parse(name2)),
+ Extractdata(name2,options);
+// if(isstring(pltdata1_1), // 16.01.31
+ tmp=apply(pltdata1,replace(#,"3d","2d"));
+// ,
+// tmp=replace(pltdata1org,"3d","2d");
+// );
+ Changestyle(tmp,["nodisp"]);
+// Changestyle3d(pltdata1,["nodisp"]);
+ ,
+ ErrFlag=1;
+ );
+ );
+);
+
+Skeletondatacindy(nm):=Skeletondatacindy(nm,[]);
+Skeletondatacindy(nm,options):=(
+ regional(tmp);
+ tmp=Datalist3d();
+ Skeletondatacindy(nm,tmp,tmp,options);
+);
+Skeletondatacindy(nm,pltdata1,pltdata2):=
+ Skeletondatacindy(nm,pltdata1,pltdata2,[]);
+Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=(
+//help:Skeletondatacindy("1");
+//help:Skeletondatacindy("1",[pdata1,pdata2],[pdata3]);
+//help:Skeletondatacindy(options2=[1(width)]);
+ regional(Eps,Eps2,name2,name3,Ltype,Noflg,reL,opcindy,
+ Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data,
+ Obj3,jj,Gd,PtD,size,tmp,tmp1,tmp2);
+ name2="sk2d"+nm;
+ name3="sk3d"+nm;
+ pltdata1=[];// 16.01.31
+ forall(pltdata1org,tmp1,
+ tmp=parse(tmp1);
+ pltdata1=append(pltdata1,tmp);
+ );
+ pltdata2=[];// 16.01.31
+ forall(pltdata2org,tmp1,
+ tmp=parse(tmp1);
+ pltdata2=append(pltdata2,tmp);
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6; //16.02.28
+ opcindy=tmp_9;
+ Rr=0.075*1000/2.54/MilliIn;
+ size=1;
+ Eps2=0.05;
+ if(length(reL)>0, //16.02.28
+ size=reL_1;
+ Rr=size*Rr;
+ if(length(reL)>1,Eps2=reL_2);
+ );
+ Eps=10^(-4);
+ ObjL=Flattenlist(pltdata1);
+ Plt3L=Flattenlist(pltdata2);
+ tmp=apply(Plt3L,ProjcoordCurve(#));
+ Plt2L=Flattenlist(tmp);
+/////////// tmp=apply(pltdata1,replace(#,"3d","2d"));
+ Out=[];
+ forall(1..(length(ObjL)),ii,
+ Obj3=ObjL_ii;
+ tmp=ProjcoordCurve(Obj3);
+ Data=Makeskeletondata([tmp],Plt2L,Rr,Eps2);
+ forall(1..(length(Data)),jj,
+ Gd=Data_jj;
+ if((length(Gd)>1)
+ & (norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))>Eps),
+ PtD=[];
+ forall(1..(length(Gd)),
+ tmp=Gd_#;
+ tmp1=Invparapt(tmp,Obj3);
+ PtD=append(PtD,tmp1);
+ );
+ Out=append(Out,PtD);
+ );
+ );
+ );
+ Out=select(Out,length(Projcurve(#))>0); // 16.12.19
+ tmp1=apply(Out,textformat(#,5));
+ tmp=name3+"="+tmp1;
+ parse(tmp);
+ tmp=name2+"=Projcurve("+tmp1+");";
+ parse(tmp);
+ Changestyle3d(pltdata1org,["nodisp"]);
+ if(Noflg<3,
+ println("generate skeleton :"+name3);
+ tmp1=text(pltdata1org);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=text(pltdata2org);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ tmp=name3+"=Skeletonpara3data("+tmp1+","+tmp2+",";
+ tmp=tmp+text(size)+")";
+ GLIST=append(GLIST,tmp);
+ tmp=name2+"=Projpara("+name3+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name2);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name2,Ltype,opcindy]);
+ if(SUBSCR==1,
+ Subgraph(name3,opcindy);
+ );
+ );
+ Out;
+);
+
+Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=(
+ regional(Allres,Eps,Dmat,Dind,ii,Dt,nn1,nn2,Nind,Nobj,
+ Plt2,PhL,ClipL,ns,pt1,pt2,pt,pta,ptb,za,zb,z1,z2,t1,t2,te,
+ koc,KukanL,nn,tt,Rr,Flg,ii,jj,ptq,hh,Ku,Res,contflg,breakflg);
+ Eps=10.0^(-4);
+ Dmat=[];
+ Dind=[];
+ forall(1..(length(Plt2L)),ii,
+ Dt=Plt2L_ii;
+ nn1=length(Dmat)+1;
+ Dmat=concat(Dmat,Dt);
+ nn2=length(Dmat);
+ Dind=append(Dind,[nn1,nn2]);
+ );
+ Nind=length(Dind);
+ Allres=[];
+ forall(1..(length(Obj2L)),Nobj,
+ Plt2=Obj2L_Nobj;
+ PhL=Columnlist(Plt2,1..2);
+ ClipL=[];
+ forall(1..(length(PhL)-1),ns,
+ pt1=PhL_(ns..(ns+1));
+ forall(1..(length(Dind)),ii,
+ tmp=Dind_ii;
+ tmp=Dmat_(Dind_ii_1..Dind_ii_2);
+ pt2=Columnlist(tmp,1..2);
+ koc=IntersectcrvsPp(pt1,pt2,[Eps]);
+ if(length(koc)>0,
+ breakflg=0;
+ forall(1..(length(koc)),jj,
+ contflg=0;
+ if(breakflg==0,
+ pt=Op(1,Op(jj,koc));
+ tmp=Op(2,Op(jj,koc));
+ if((tmp<1+Eps) & (ns==1),
+ contflg=1;
+ );
+ if(contflg==0,
+ if((tmp>length(pt1)-Eps)
+ & (ns==length(PhL)-1),
+ contflg=1;
+ );
+ );
+ if(contflg==0,
+ nn1=ns;
+ nn2=Op(3,Op(jj,koc));
+ tmp=Plt2_nn1;
+ pta=tmp_(1..2);
+ za=tmp_3;
+ tmp=Plt2_(nn1+1);
+ ptb=tmp_(1..2);
+ zb=tmp_3;
+ if(norm(pta-ptb)<Eps,
+ contflg=1;
+ );
+ );
+ if(contflg==0,
+ t1=norm(pta-pt)/norm(pta-ptb);
+ z1=(1-t1)*za+t1*zb;
+ tmp=Dmat_(Dind_ii_1..Dind_ii_2);
+ tmp1=tmp_nn2;
+ pta=tmp1_(1..2);
+ za=tmp1_3;
+ tmp2=tmp_(nn2+1);
+ ptb=tmp2_(1..2);
+ zb=tmp2_3;
+ if(norm(pta-ptb)<Eps,
+ contflg=1;
+ );
+ );
+ if(contflg==0,
+ t2=norm(pta-pt)/norm(pta-ptb);
+ z2=(1-t2)*za+t2*zb;
+ if(z1<z2-Eps2,
+ if(length(ClipL)==0,
+ tmp=1;
+ ,
+ tmp1=column(ClipL,1);
+ tmp1=apply(tmp1,#-pt_1);
+ tmp2=column(ClipL,2);
+ tmp2=apply(tmp2,#-pt_2);
+ tmp3=apply(tmp1,#^2)+apply(tmp2,#^2);
+ tmp=min(tmp3);
+ );
+ if(tmp>Eps^2,
+ tmp1=pt1_2-pt1_1;
+ tmp2=ptb-pta;
+ tmp3=Dotprod(tmp1,tmp2);
+ tmp3=tmp3/norm(tmp1)/norm(tmp2);
+ tmp=1-0.5*tmp3^2;
+ tmp1=concat(pt,[nn1,t1,R0/tmp]);
+ ClipL=append(ClipL,tmp1);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ te=length(Plt2);
+ KukanL=[[1.0,te]];
+ pt1=PhL;
+ if(length(ClipL)>0,
+ forall(1..(length(ClipL)),ii,
+ tmp=ClipL_ii;
+ pt=tmp_(1..2);
+ nn=tmp_3;
+ tt=nn+tmp_4;
+ Rr=tmp_5;
+ Flg=0;
+ breakflg=0;
+ forall(reverse(1..nn),jj,
+ contflg=0;
+ if(breakflg==0,
+ ptq=PointonCurve(jj,pt1);
+ if(norm(pt-ptq)<Rr,
+ contflg=1;
+ );
+ if(contflg==0,
+ Flg=jj;
+ breakflg=1;
+ contflg=1;
+ );
+ );
+ );
+ if(Flg==0,
+ t1=1;
+ ,
+ t1=Flg; t2=tt;
+ hh=t2-t1;
+ forall(1..10,
+ hh=hh*0.5;
+ ptq=PointonCurve(t1+hh,pt1);
+ if(norm(pt-ptq)<Rr,
+ t2=t2-hh;
+ ,
+ t1=t1+hh;
+ );
+ );
+ );
+ Ku=[t1];
+ Flg=0;
+ breakflg=0;
+ forall((nn+1)..te,jj,
+ contflg=0;
+ if(breakflg==0,
+ ptq=PointonCurve(jj,pt1);
+ if(norm(pt-ptq)<Rr,
+ contflg=1;
+ );
+ if(contflg==0,
+ Flg=jj;
+ breakflg=1;
+ contflg=1;
+ );
+ );
+ );
+ if(Flg==0,
+ t2=te;
+ ,
+ t1=tt; t2=Flg;
+ hh=t2-t1;
+ forall(1..10,
+ hh=hh*0.5;
+ ptq=PointonCurve(t1+hh,pt1);
+ if(norm(pt-ptq)<Rr,
+ t1=t1+hh;
+ ,
+ t2=t2-hh;
+ );
+ );
+ );
+ Ku=append(Ku,t2);
+ KukanL=Kukannozoku(Ku,KukanL);
+ );
+ );
+ Res=[];
+ forall(1..(length(KukanL)),ii,
+ tmp=KukanL_ii;
+ t1=tmp_1; nn1=floor(t1);
+ t2=tmp_2; nn2=floor(t2);
+ PtL=[];
+ if(t1-nn1<1-Eps,
+ tmp=PointonCurve(t1,pt1);
+ PtL=[tmp];
+ );
+ forall((nn1+1)..nn2,jj,
+ tmp=PointonCurve(jj,pt1);
+ PtL=append(PtL,tmp);
+ );
+ if(t2-nn2>Eps,
+ tmp=PointonCurve(t2,pt1);
+ PtL=append(PtL,tmp);
+ );
+ tmp=Listplot("",PtL,["nodata"]);
+ Res=append(Res,tmp);
+ );
+ Allres=concat(Allres,Res);
+ );
+ Allres;
+);
+
+Kukannozoku(Jokyo,KukanL):=(
+ regional(Res,Eps,nn,ii,t1,t2,Ku,Flg,contflg,tmp,tmp1);
+ Eps=10^(-6);
+ nn=length(KukanL);
+ t1=Jokyo_1; t2=Jokyo_2;
+ tmp=KukanL_1;
+ t1=max(t1,tmp_1);
+ tmp=KukanL_nn;
+ t2=min(t2,tmp_2);
+ Res=[];
+ Flg=0;
+ contflg=0;
+ forall(1..nn,ii,
+ if(contflg==0,
+ Ku=KukanL_ii;
+ if(Flg==0,
+ if(Ku_2<t1,
+ Res=append(Res,Ku);
+ ,
+ Flg=1;
+ if(Ku_1<t1-Eps,
+ tmp=[Ku_1,t1];
+ Res=append(Res,tmp);
+ );
+ if(Ku_2>t2+Eps,
+ tmp=[t2,Ku_2];
+ Res=append(Res,tmp);
+ );
+ );
+ ,
+ if(Flg==1,
+ if(Ku_2<t2,
+ contflg=1;
+ ,
+ if(contflg==0,
+ Flg=2;
+ if(Ku_1<t2-Eps,
+ Ku=[t2,Ku_2];
+ );
+ Res=append(Res,Ku);
+ );
+ );
+ ,
+ if(contflg==0,
+ Res=append(Res,Ku);
+ );
+ );
+ );
+ );
+ );
+ Res;
+);
+
+ProjcoordCurve(Curve):=(
+ regional(SP,CP,ST,CT,Out,jj,pt,x,y,z,xz,yz,zz);
+ SP=sin(PHI); CP=cos(PHI);
+ ST=sin(THETA); CT=cos(THETA);
+ Out=[];
+ forall(1..(length(Curve)),jj,
+ pt=Curve_jj;
+ x=pt_1; y=pt_2; z=pt_3;
+ xz=-x*SP+y*CP;
+ yz=-x*CP*CT-y*SP*CT+z*ST;
+ zz=x*CP*ST+y*SP*ST+z*CT;
+ Out=append(Out,[xz,yz,zz]);
+ );
+ Out;
+);
+
+Divnohidhid(nm,dt3dorg,nvec):=Divnohidhid(nm,dt3dorg,nvec,[],["do"]);
+Divnohidhid(nm,dt3dorg,nvec,optionorg,options2):=(
+//help:Divnohidhid("1","sc3d1",nvec,["Num=100"],["Num=100","do"]);
+ regional(name,dt3d,options,pvec,disp,nohid,hid,flg,tmp,tmp1,eqL);
+ name="nh"+nm;
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ disp="Y";
+ forall(eqL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="D",
+ tmp=indexof(#,"=");
+ disp=Toupper(substring(#,tmp,tmp+1));
+ options=remove(options,[#]);
+ );
+ );
+ if(isstring(dt3dorg),dt3d=parse(dt3dorg),dt3d=dt3dorg);
+ pvec=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ nohid=[];
+ hid=[];
+ flg=0;
+ forall(1..(length(dt3d)-1),
+ p1=dt3d_#;
+ p2=dt3d_(#+1);
+ tmp=assign(nvec,["x",p1_1,"y",p1_2,"z",p1_3]);
+ tmp=parse(tmp);
+ if(Dotprod(tmp,pvec)>0,
+ if(flg==0 % flg==-1,
+ nohid=append(nohid,[p1,p2]);
+ flg=1;
+ );
+ if(flg==1,
+ nohid_(length(nohid))=append(nohid_(length(nohid)),p2);
+ );
+ ,
+ if(flg==0 % flg==1,
+ hid=append(hid,[p1,p2]);
+ flg=-1;
+ );
+ if(flg==-1,
+ hid_(length(hid))=append(hid_(length(hid)),p2);
+ );
+ );
+ );
+ if(disp=="Y",
+ Changestyle3d([dt3dorg],["nodisp"]);
+ forall(1..length(nohid),
+ Spaceline(name+"nh"+text(#),nohid_#,options);
+ );
+ forall(1..length(hid),
+ Spaceline(name+"h"+text(#),hid_#,options2);
+ );
+ );
+ tmp1="[";
+ forall(nohid,tmp1=tmp1+textformat(#,5)+",");
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ parse(name+"nh="+tmp1);
+ tmp1="[";
+ forall(hid,tmp1=tmp1+textformat(#,5)+",");
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ parse(name+"h="+tmp1);
+ [nohid,hid];
+);
+
+Beziersurf(nm,m,n,pL):=(
+//help:Beziersurf("pt",2,2,pL);
+ regional(p3dL,ptlistx,ptlilsty,ptlistz);
+ factorial(n):=(
+ regional(out);
+ out=1;
+ forall(1..n,
+ out=out*#;
+ );
+ out;
+ );
+ Deffun("Comb(n,r)",[
+ "regional(y)",
+ "y=factorial(n)/(factorial(r)*factorial(n-r))",
+ "y"
+ ]);
+ Deffun("Bterm(u,v,m,n,i,j)",[
+ "regional(y)",
+ "y=Comb(m,i)*u^i*(1-u)^(m-i)",
+ "y=y*Comb(n,j)*v^j*(1-v)^(n-j)",
+ "y"
+ ]);
+ Deffun("Ball(u,v,m,n,pL)",[
+ "regional(y,ii,jj,tmp,tmp1)",
+ "y=0",
+ "forall(0..m,ii,
+ forall(0..n,jj,
+ tmp=(n+1)*ii+jj+1;
+ tmp1=Op(tmp,pL);
+ tmp1=tmp1*Bterm(u,v,m,n,ii,jj);
+ y=y+tmp1;
+ )
+ )",
+ "y"
+ ]);
+ if(ispoint(pL_1),
+ p3dL=apply(pL,parse(text(#)+"3d"));
+ ,
+ p3dL=apply(pL,parse(#+"3d"));
+ );
+ ptlistx=apply(p3dL,#_1);
+ ptlisty=apply(p3dL,#_2);
+ ptlistz=apply(p3dL,#_3);
+ Defvar(nm+"x",ptlistx);
+ Defvar(nm+"y",ptlisty);
+ Defvar(nm+"z",ptlistz);
+ tmp=[
+ "p",
+ "x=Ball(U,V,2,2,"+nm+"x)",
+ "y=Ball(U,V,2,2,"+nm+"y)",
+ "z=Ball(U,V,2,2,"+nm+"z)",
+ "U=[0,1]",
+ "V=[0,1]"
+ ];
+ tmp;
+);
+
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpE.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpE.txt
new file mode 100644
index 00000000..27b40955
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpE.txt
@@ -0,0 +1,29 @@
+//help:start();
+//help:Changstyle3d*(change the attribute of 3d plot data);
+//help:Findangle*(specify the angles theta and phi);
+//help:Cancoordpara*(specify the coordinate with respect to canonical coordinate);
+//help:Projcoordpara*(specify the coordinate of projected image);
+//help:Parapt*(the coordinate of the point in the projected plane);
+//help:Spaceline*(generate the plot data of 3d segments);
+//help:Spacecurve*(generate the plot data of 3d curve);
+//help:Xyzax3data*(generate the plot data of coordinate axes);
+//help:Datalist3d*(list of plot data of the all objects on the screen. Both 2d and 3d values are returned);
+//help:Skeletonparadata*(generate the plot data of the objects with hidden line elimination);
+//help:Embed*(generate the embedded plot data);
+//help:Rotate3pt*(rotate the point);
+//help:Rotate3data*(rotate 3d plot data);
+//help:Translate3pt*(parallelly transport the point);
+//help:Translate3data*(parallelly transport the plot data);
+//help:Reflect3point*(reflect the point);
+//help:Xyzcoord*(coordinate of a point determined with respect to main screen and sub screen);
+//help:PutonCurve3d*(put a point on the 3d curve);
+//help:Ptsegdata*(generate the 3d plot data of point and segment derived from those on 2d screen);
+//help:Putpoint3d*(put a specific point);
+//help:Perppt*(the foot of the perpendicular on the plane);
+//help:Perpplane*(a fiducial point of a plane with specific point on it and with specific normal vector);
+//help:Drawpoint3d*(draw a specific point);
+//help:Putaxes3d*(take a point with specific coordinates as geometric one);
+//help:IntersectsgpL*(intersection between line and plane);
+//help:Bezier3*(draw 3d Bezier curve);
+//help:Mkbezierptcrv3*(draw 3d Bezier curve by automatically taking controll points);
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpJ.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpJ.txt
new file mode 100644
index 00000000..bd29d25f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dhelpJ.txt
@@ -0,0 +1,45 @@
+//help:start();
+//help:Changstyle3d*(3dプロットデータã®å±žæ€§ã‚’変更);
+//help:Findangle*(theta,phiを求ã‚ã‚‹);
+//help:Cancoordpara*(標準座標を求ã‚ã‚‹);
+//help:Projcoordpara*(投影座標を求ã‚ã‚‹);
+//help:Parapt*(点ã®æŠ•å½±é¢ã§ã®åº§æ¨™);
+//help:Spaceline*(空間ã®æŠ˜ç·šãƒ‡ãƒ¼ã‚¿ä½œæˆ);
+//help:Spacecurve*(空間曲線ã®ãƒ‡ãƒ¼ã‚¿ä½œæˆ);
+//help:Xyzax3data*(座標軸ã®ãƒ‡ãƒ¼ã‚¿ä½œæˆ);
+//help:Datalist3d*(ç”»é¢ã«æã‹ã‚Œã¦ã„ã‚‹ã™ã¹ã¦ã®ãƒ—ロットデータ.戻り値ã¯3d,2d);
+//help:Skeletonparadata*(スケルトン処ç†ã®ãƒ‡ãƒ¼ã‚¿ä½œæˆ);
+//help:Embed*(埋ã‚è¾¼ã¿ãƒ‡ãƒ¼ã‚¿ä½œæˆ);
+//help:Rotatept3d*(空間点を回転);
+//help:Rotatedata3d*(プロットデータを回転);
+//help:Translatept3d*(空間点を平行移動);
+//help:Translatedata3d*(空間プロットデータを平行移動);
+//help:Reflectpoint3d*(点をé¡æ˜ );
+//help:Xyzcoord*(主副画é¢ã§æ±ºã¾ã‚‹ç‚¹ã®åº§æ¨™);
+//help:PutonCurve3d*(空間曲線上ã«ç‚¹ã‚’ã¨ã‚‹);
+//help:Ptsegdata*(ç”»é¢ã«ã¨ã£ãŸç‚¹ã¨ç·šåˆ†ã‹ã‚‰ç©ºé–“ã®ç‚¹ã¨ç·šåˆ†ã‚’作æˆ);
+//help:Putpoint3d*(空間点をã¨ã‚‹);
+//help:Perppt*(å¹³é¢ã«ä¸‹ã‚ã—ãŸåž‚ç·šã®è¶³);
+//help:Perpplane*(点を通り垂直ãªå¹³é¢ä¸Šã®åŸºæº–点);
+//help:Drawpoint3d*(空間点をæã);
+//help:Putaxes3d*(座標点を幾何点ã¨ã—ã¦ã¨ã‚‹);
+//help:IntersectsgpL*(空間ã®ç›´ç·šã¨å¹³é¢ã®äº¤ç‚¹);
+//help:Bezier3d*(空間ベジェ曲線);
+//help:Mkbezierptcrv3d*(制御点を自動的ã«ã¨ã‚‹ç©ºé–“ベジェ曲線);
+//help:Readobj*(objファイルを読ã¿è¾¼ã‚€ï¼Žã‚ªãƒ—ションã¯ä¸Šä¸‹å転(符å·ï¼‰ã¨å€çŽ‡);
+//help:VertexandEdge*(頂点ã¨é¢ã‹ã‚‰è¾ºã‚’求ã‚,辺をæã);
+//help:Phparadata*(多é¢ä½“を陰線処ç†ã—ã¦æã
+//追加オプション : "Hidden=線種");
+//help:Nohiddenbyfaces*(多é¢ä½“ã¨ç©ºé–“曲線を陰線処ç†);
+//help:Fixpoint3d*(空間ã®å›ºå®šç‚¹ã‚’ã¨ã‚‹);
+//help:Sf3data*(陰線処ç†ãªã—ã®ç©ºé–“曲é¢ã‚’æã);
+//help:Concatobj*(ã„ãã¤ã‹ã®objデータをçµåˆ);
+//help:Crvsfparadata*(曲線ã®æ›²é¢ã«ã‚ˆã‚‹é™°ç·šå‡¦ç†);
+//help:Intersectcrvsf*(曲線ã¨æ›²é¢ã®äº¤ç‚¹ã‚’求ã‚ã‚‹);
+//help:Intersectcrvsf*(曲線ã¨æ›²é¢ã®äº¤ç‚¹ã‚’求ã‚ã‚‹);
+//help:Sfbdparaparadata*(空間曲é¢ã®é™°ç·šå‡¦ç†);
+//help:Wireparadata*(曲é¢ã®ãƒ¯ã‚¤ãƒ¤ãƒ•ãƒ¬ãƒ¼ãƒ ã‚’陰線処ç†);
+//help:Dist3d*(空間ã®ï¼’点ã®è·é›¢);
+
+
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dlog.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dlog.txt
new file mode 100644
index 00000000..63f107b7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylib3dlog.txt
@@ -0,0 +1,295 @@
+// s: 2017.07.13
+// Spaceline debugged ( ["A3d","B3d"] =>[A3d,B3d] )
+// s: 2017.07.01
+// Start3d changed (debugged) ( Initialize SlideColorList )
+// s: 2017.06.02
+// Putaxes3d debugged ( for THETA=90 )
+// Projpara debugged ( list with length <2 removed)
+// s: 2017.05.18
+// Start3d changed ( Ch,ChNum added )
+// s: 2017.05.02
+// Ketinit3d, Start3d changed ( Sprintf(*.2) used )
+// s: 2017.04.14
+// Makeskeleton debugged ( Eps=10^(-4) )
+// s: 2017.01.19
+// Setangle changed ( for "" )
+// s: 2017.01.04
+// Bezier3 debugged ( t => T)
+// s: 2016.12.24
+// Setangle added
+// s: 2016.12.19
+// Skeletondatacindy debugged ( for null 2d data);
+// s: 2016.12.18
+// Ptseg3data debugged ( points to be removed );
+// s: 2016.11.29
+// Start3d changed ( CONCATCMD,OCNAME added )
+// s: 2016.11.12
+// Start3d changed ( option:ptexception added )
+// ( with Ptseg3data, Mkpointlist );
+// s: 2016.11.11
+// Skeletondatacindy added
+// ( with Makeskeletondata, Kukannozoku,ProjcoordCurve )
+// s: 2016.11.02
+// Divnohidhid added
+// s: 2016.10.06
+// Joincrvs3d added
+// s: 2016.08.20(22)
+// Ptseg3data included in Start3d
+// Wait option adjusted
+// s: 2016.08.20(21)
+// Mkpointlist changed ( x,y fixed when ptz changes )
+// Sfbdparadata,Wireparadata,Crvsfparadata debugged ( global var, for non list )
+// s: 2016.08.19
+// Nohiddenbyfaces, Mkbezierptcrv3d changed
+// Start3d debugged ( BezierNumber3 added )
+// Concatobj changed ( Default : "rmf=y" )
+// s: 2016.08.17
+// Wireparadata debugged
+// s: 2016.08.14
+// Xyzax3data changed ( options "a1","Osw" added )
+// Intersectcrvsf debugged
+// s: 2016.08.09
+// Intersectcrvsf debugged ( //// => |||| )
+// s: 2016.06.20
+// Start3d changed ( no ketinit3d )
+// s: 2016.06.19
+// VertexEdgeFace changed ( for ptdata alone )
+// Putpoint3d debugged
+// s: 2016.05.26
+// Putpoint3d debugged
+// Beziersurf added
+// s: 2016.05.26
+// Start3d changed ( pt2d added)
+
+/////////////
+// s: 2014.12.13 v1.0.0(beta)
+// Ketinit3d, Projpara, Parapt, Spaceline, Spacecurve, Xyzax3data
+// e: 2014.12.14
+// Skeletonparadata
+// e: 2014.12.18
+// Embed added
+// e: 2014.12.19
+// Skeletonparadata debugged ( Extractdata used )
+// Dotprod, Crossprod added
+// e: 2014.12.22
+// Skeletonparadata changed and debugged
+// Rotate3pt, Rotate3data added
+// Translate3pt, Translate3data added
+// e: 2014.12.27
+// Projcurve changed ( options )
+// e: 2015.02.02
+// Ketinit3d changed ( slider position )
+// e: 2015.02.06
+// xyzcoord, Mkpointlist, Mkseg3d, Putpoint3d, Makescreen added
+// e: 2015.02.07
+// Mkseg3d changed ( LineSeg )
+// 2nd frame changed (10 -> Pne.x-Psw.x )
+// e: 2015.02.08
+// Spacecurve changed ( Assign written to Scilab)
+// Ketinit changed ( position of slider)
+// e: 2015.02.09
+// Bezierpt3sub,Bezier3,Putbezier3data,Mkbezierptcrv3 added
+// e: 2015.02.10
+// Spacecurve changed ( Num )
+// e: 2015.02.11
+// Ketinit3d, Ptseg3data,Putpoint3d changed ( SUBSCR )
+// Subscreen, Subgraph added
+// Spaceline,Spacecurve, Rotate3data, Tranlate3data changed (SUBSCR)
+// Bezier3 changed
+// e: 2015,02.12
+// Bezier3, Putbezierpt debugged
+// Spacecurve changed ( name when "bz")
+// e: 2015.02.14
+// Ptseg3data changed ( alllines => allsegments )
+// e: 2015.02.15
+// Subscreen renamed to Start3d
+// e: 2015.02.16
+// Ptseg3data, Mkpointlist changed
+// e: 2015.02.17
+// Skeletonparadata debugged ( textformat was wrongly used)
+// Mkpointlist debugged ( not finished )
+// e: 2015.02.18
+// Rotate3data, Translate3data changed ( available for pdlist )
+// Puttickmark3d ( not yet )
+// Putonaxes3 added
+// drawpoint3d added
+// e: 2015.02.23
+// help(example) added
+// Pne,Psw,Th,Ph changed to NE,SW,TH,FI
+// e: 2015.02.24
+// Bezier3 debugged
+// Projpara changed ( for single data )
+// Reflectpt, PutonCurve3d added
+// e: 2015.02.25 v1.2.1
+// Puonaxes changed ( sizelist for each axis )
+// e: 2015.02.26
+// Mkpointlist changed ( point moves perpendicular to xy-plain)
+// e: 2015.02.27
+// IntersectsgpL, Fixpoint3d added
+// Puonaxes3 renamed to Putaxes3d and changed
+// e: 2015.02.28
+// Fixaxes3d removed
+// Mkbezierptcrv changed
+// Ketinit3d changed ( global BezierNumber3, BZLIST3)
+// e: 2015.03.01
+// Findangle, Cancoordpara,Zparapt, Projcoordpara,added
+// Putpoint3d changed ( fix option );
+// Putperp added
+// e: 2015.03.02
+// Mkseg3d changed ( geoseg3 defined )
+// Changestyle3d added
+// IntersectsgpL changed ( option put, draw, none )
+// Putperp rename to Perppt, available for segment, option added
+// e: 2015.03.05
+// Start3d changed ( VLIST defined if empty )
+// e: 2015.03.06 v1.2.2
+// Keinit3d, Putpoint3d changed (TSIZE,TSIZEZ)
+// Perpplane added
+// Embed debugged (for data as string )
+// Pseg3d debugged (case of empty )
+// e: 2015:03.13 v1.2.3
+// Help ( Putoncurve3d ) added
+// Putoncurve3d debugged
+// e: 2015.03.25 v1.2.4
+// Skeletonparadata changed ( nm, options );
+// e: 2015.03.26
+// Bezier3, Mkbezierptcrv3d debugged
+// e: 2015.03.28
+// Findangle ( and Perpplane ) debugged
+// e: 2015.04.06
+// Start3d changed ( Var from Fhead )
+// e: 2015.05.12 v1.3.1
+// Datalist3d added
+// e: 2015.05.14
+// Start3d debugged (SCEWRLIST, SCEWRLIST reset )
+// Skeletonpara changed (Divoptions used )
+// e: 2015.05.17 v1.3.2
+// Skeletonpara changed (out/in )
+// e: 2015.05.24 v1.3.3
+// Bezier3,Rotate3data,.. renamed to Bezier3d, ...
+// help:start(), help:end() added
+// VertexandEdge, Readobj, Removespace added
+// Changestyle3d changed
+// e: 2015.05.26 v1.4.1
+// Readobj, VertexandEdge added
+// Phparadata added
+// e: 2015.05.27 v1.4.1a
+// Skeletonpara, Phparadata changed ( for string ) and debugged
+// e: 2015.05.28
+// IntersectsgpL changed ( with segdata )
+// e: 2015.05.29 v1.4.2
+// Findhiddenseg added
+// e: 2015.05.30
+// Spaceline changed ( name when "-" )
+// Datalist3d changed, Datalist2d added;
+// Nohiddenbyfaces, Nohiddensegs, Nohiddenseg added
+// e: 2015.06.02 v1.4.3
+// Nohiddenseg revised/debugged ( major revision )
+// Skeletonparadata changed
+// e: 2015.06.06 v1.4.4
+// Readobj changed ( for #, f / )
+// Spaceline changed ( Message option )
+// e: 2015.06.08 v1.4.5
+// Nohiddenbyfaces changed
+// e: 2015.06.15 v1.4.6
+// Vertexedgeface changed ( edge drawn as geometric figure )
+// Mkseg3data changed ( Points of Spaceline changed to vertex name )
+// e: 2015.06.22 v1.5.0
+// .cs adopted
+// e: 2015.07.06 v1.5.1
+// Vertexedgeface changed ( options "Pt=..", "Sg=.." );
+// e: 2015.07.09 v1.5.2
+// Skeletonparadata debugged
+// e: 2015.07.16 v1.5.3
+// Skeletonparadata debugged
+// e: 2015.07.22 v1.5.4
+// Skeletonparadata debugged
+// e: 2015.08.11 v1.5.6
+// Fullformfunc added
+// e: 2015.08.14 v1.5.7
+// Spacecurve changed ( Msg option, tmpfn defined )
+// Start3d debugged ( FUNLIST initialized )
+// e: 2015.08.17
+// Spacecurve debugged
+// Subgraph debugged
+// e: 2015.10.04 v1.8.0
+// Sf3data, Sfbdparadata added
+// Ketinit3d changed ( Position of Th,Phi sliders)
+// e: 2015.10.05
+// Sfbdparadata changed
+// Crvsfparadata added
+// e: 2015.10.09 v1.8.1
+// Sfbdparadata,Crvsfparadata changed
+// e: 2015.10.10
+// Sf3data debugged
+// e: 2015.10.12 v1.8.2
+// Wireparadata, Intersectcrvsf added
+// e: 2015.10.19 v1.8.4
+// Concatobj added
+// Nohiddenbyseg changed ( optionh )
+// e: 2015.10.19 v1.8.5
+// Intersectcrvsf changed ( according to the mod of ReadOutData of Scilab)
+// Drawpoint3d changed ( for pointlist)
+// e: 2015.10.31 v2.0.0
+// Bugs fixed
+// Embed debugged
+// e: 2015.11.01 v2.0.1
+// Skeletonparadata changed to new version
+// ( old version renamed to Skeletonparadata2 )
+// e: 2015.11.03 v2.0.1
+// Subgraph debugged
+// e: 2015.11.05 v2.1.0
+// Start3d changed ( OutFileList reset )
+// e: 2015.12.16
+// VertexEdgeFace changed (help )
+// e:2016.01.24
+// Concatobj debugged ( major revision )
+// e:2016.01.30
+// geoseg3 => geoseg3d
+// e:2016.01.31
+// Skeletonparadata debugged
+// Start3d changed ( Arrow..counter reset )
+// e:2016.02.01
+// Skeletonparadata changed ( prec=4 )
+// Sfbdparadata changed ( precommandS added )
+// e:2016.02.02
+// IntersectsgpL changed ( for pointlist )
+// e:2016.02.02
+// Skeletonparadata debugged ( linestyle options )
+// e:2016.02.07
+// Dist3d added
+// e:2016.02.10
+// Partcrv3d added
+// Ketinit3d changed ( no display for sgTH,sgFI and TH,FI ,setwindow)
+// Spaceline changed ( for [A,B,C,...] )
+// Vertexedgeface changed ( for [A,B,C,...] )
+// Nohiddenbyfaces, Nohiddenbyseg changed
+// e:2016.02.11
+// Concatobj changed ( for duplicated point, removeface option )
+// e:2016.02.21
+// Nohiddenbyfaces debugged ( optionorg )
+// e:2016.02.22
+// Putonseg3d added
+// Spaceline changed ( name defined automatically when no name )
+// e:2016.02.23
+// Nohiddenbyfaces debugged
+// e:2016.02.28
+// Skeletonparadata debugged ( width option )
+// Concatobj changed ( for the list of points )
+// e:2016.02.29
+// Nohiddenbyfaces, Vertexedgeface debugged ( width option )
+// e:2016.03.02
+// Putpoint3d changed ( ("A",[1,2,3],"fix") is OK )
+// e:2016.03.30
+// Invparapt, InvparaptPp added
+// e:2016.04.07
+// Mkseg3d debugged
+// e:2016.04.08
+// Start3d changed (FigPdfList added )
+// e:2016.04.15
+// Spacecurve debugged ( option empty case )
+// e:2016.05.25
+// Sf3data debugged (parse in options )
+// Sfbdparadata, Wireparadata, Crvsfparadata debugged ( Sciform)
+///////// To Reverse Sequence ////////////////
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1.cs b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1.cs
new file mode 100644
index 00000000..bf9a81eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1.cs
@@ -0,0 +1,4874 @@
+// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team
+//
+//This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>
+//
+
+println("KETCindy V.3.0.2(2017.08.23)");
+println(ketjavaversion());//17.06.05
+println("ketcindylibbasic1(2017.08.23) loaded");
+
+//help:start();
+
+//help:drawimage([0,0],"picture.png",scale->2,alpha->0.4);
+//help:drawtext((2,1),"Text",size->2);
+//help:system(list=append(list,"a"););
+//help:system(list=concat(list,["a","b"]););
+//help:system(arccos,arcsin,arctan);
+//help:system(abs,round,floor,ceil);
+
+//help:Option1(["dr","dr,2","da","da,2,1","do","do,1,2"]);
+//help:Option2(["notex","nodisp","nodata"]);
+//help :Option3(["in","out","in-","out-"]);
+
+//help:getdirhead();
+//help:gedirhead("/Applications");
+//help:gedirhead("C:\Users\(username)");
+
+Ch=[0]; ChNum=1;
+
+Ketinit():=Ketinit(1);
+//help:Ketinit();
+Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]);
+Ketinit(sy,rangex,rangey):=(
+ regional(pt,tmp,tmp1,tmp2,letterc,boxc,shadowc,mboxc,sep);
+ PenThickInit=8;
+ ULEN="1cm";
+ MARKLEN=0.2; //16.11.01
+ KETPICLAYER=20;
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ KETPICCOUNT=1;
+ KCOLOR=[0,0,0];
+ GLIST=[];
+ GCLIST=[];
+// GDATALIST=[];
+ GOUTLIST=[];
+ POUTLIST=[];
+ VLIST=[];
+ FUNLIST=[];
+ LETTERlist=[];
+ COM0thlist=[];
+ COM1stlist=[];
+ COM2ndlist=[];
+ SCIWRLIST=[];
+ SCIRELIST=[];
+ ADDAXES="1";
+ LFmark=unicode("000a");
+ CRmark=unicode("000d");//16.12.13
+ Dq=unicode("0022");
+ WaitUnit=10;
+ CONTINUED=0;
+ OutComList=[];
+ OutFileLIst=[]; // 15.10.22
+ FigPdfList=[]; // 16.04.08
+ ADDPACK=[]; // 16.05.16
+ ErrFlag=0;
+ setdirectory(Dirwork);
+ if(isstring(Fhead), // 15.04.06
+ Fnametex=Fhead+".tex";
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+ );
+ if(!isstring(Mackc),// 16.06.07
+ Mackc="sh";
+ );
+ ArrowlineNumber=1; // 15.01.05
+ ArrowheadNumber=1;
+ BezierNumber=1; //15.01.03
+ SCALEX=1;
+ SCALEY=sy;
+// Setscaling(sy);
+ XMIN=rangex_1/SCALEX;
+ XMAX=rangex_2/SCALEX;
+ YMIN=rangey_1/SCALEY;
+ YMAX=rangey_2/SCALEY;
+ Setwindow("Msg=n"); // 16.05.31
+ // for Presentation
+ letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0];
+ shadowc=[0,0,0,0.5]; mboxc="yellow"; //17.03.02 regional debugged
+ SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
+ letterc,mboxc,mboxc,mboxc,62,2,letterc];
+ ThinDense=0.1;//17.01.08
+ if(indexof(PathS,"-6.")>0,//17.04.14from
+ if(iswindows(),sep="\",sep="/");
+ if((indexof(PathT,"pdflatex")==0)&(indexof(PathT,"lualatex")==0),
+ Libname=Dirlib+sep+"ketpicscifiles6";
+ ,
+ Libname=Dirlib+sep+"ketpic2escifiles6";
+ );
+ );//17.04.14upto
+);
+
+Setwindow():=Setwindow("Msg=yes");
+Setwindow(str):=(
+ regional(tmp,tmp1,tmp2,msg);
+ msg="y";
+ tmp=indexof(str,"="); // 16.02.10
+ tmp1=Toupper(substring(str,tmp,tmp+1));
+ if(tmp1=="N",msg="n");
+ if((ispoint(SW) & ispoint(NE)),
+ tmp1=Lcrd(SW);
+ tmp2=Lcrd(NE);
+ XMIN=tmp1_1; XMAX=tmp2_1;
+ YMIN=tmp1_2; YMAX=tmp2_2;
+ ,
+// XMIN=-5; XMAX=5;
+// YMIN=Lcrdy(-5); YMAX=Lcrdy(5);
+// createpoint("SW",Pcrd([XMIN,YMIN]));
+// createpoint("NE", Pcrd([XMAX,YMAX]));
+ Putpoint("SW",Pcrd([XMIN,YMIN]));
+ Putpoint("NE", Pcrd([XMAX,YMAX]));
+ );
+ if(msg=="y",
+ println("Setwindow(["+XMIN+","+XMAX+"],["+YMIN+","+YMAX+"])");
+ );
+ layer(KETPICLAYER);
+ autoclearlayer(KETPICLAYER,true);
+ drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
+ Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
+);
+Setwindow(xrange,yrange):=(
+//help:Setwindow([2,3],[-1,1]);
+ XMIN=xrange_1;
+ XMAX=xrange_2;
+ YMIN=yrange_1;
+ YMAX=yrange_2;
+ Putpoint("SW",Pcrd([XMIN,YMIN]));//17.05.30
+ Putpoint("NE",Pcrd([XMAX,YMAX]));//17.05.30
+// Ketinit();
+);
+
+Setfiles(file):=( // 17.01.16
+//help:Setfiles(file);
+ Fhead=file;
+ Fnametex=Fhead+".tex";
+ Fnamesci=Fhead+".sce";
+ Fnamescibody=Fhead+"body.sce";
+ Fnameout=Fhead+".txt";
+);
+
+Setcindyname():=Setcindyname("");//16.12.25
+Setcindyname(file):=(
+//help:Setcindyname("Fhead");
+//help:Setcindyname(<only when on the terminal "ketcindy/cindy.sh "+file>);
+ regional(tmp,tmp1,tmp2);
+ setdirectory(Dirhead);
+ CindyPathName="";
+ CindyFileName="";
+ CindyPathName=load("cindypath.txt");
+ tmp2=load("cindyfile.txt");
+ tmp2=replace(tmp2,".cdy","");
+ if(length(tmp2)>0,
+ CindyFileName=tmp2;
+ if(length(file)>0,
+ tmp=file+"="+DqDq(tmp2);
+ parse(tmp);
+ println(file+" set to "+DqDq(tmp2));
+ );
+ ,
+ println("set "+file+" manually");
+ );
+ setdirectory(Dirwork);
+ CindyFileName;
+);
+
+Cindypath():=( // 16.12.26
+//help:Cindypath();
+ regional(out);
+ CindyPathName="";
+ setdirectory(Dirhead);
+ CindyPathName=load("cindypath.txt");
+ setdirectory(Dirwork);
+ if(length(CindyPathName)==0,
+ out=Dirwork;
+ ,
+ out=CindyPathName;
+ );
+ println(" path name="+out);
+ out;
+);
+
+Cindyfile():=( // 16.12.26
+//help:Cindyfile();
+ regional(out);
+ CindyFileName="";
+ setdirectory(Dirhead);
+ out=load("cindyfile.txt");
+ out=replace(out,".cdy","");
+ setdirectory(Dirwork);
+ CindyFileName=out;
+ println(" file name="+out);
+ out;
+);
+
+DqDq(str):=unicode("0022")+str+unicode("0022");
+
+Tab2list(dtstr):=Tab2list(dtstr,[]);
+Tab2list(dtstrorg,options):=(
+//help:Tab2list(datastr);
+//help:Tab2list(options=["Blank=(null)","Sep=tab"]);
+ regional(dtstr,dtall,dt,rep,out,crm,lfm,htm,first,eqL,sep,
+ tmp,tmp1,tmp2);
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ htm=unicode("0009");
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ rep="";
+ sep=htm;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="B",
+ tmp1="0123456789+-."; // 16.09.28from
+ tmp=substring(tmp2,0,1);
+ if(indexof(tmp1,tmp)>0,rep=parse(tmp2),rep=tmp2); // 16.09.28upto
+ );
+ if(tmp1=="S", // 16.12.04
+ if(tmp2!="tab",sep=tmp2);
+ );
+ );
+ first=lfm; // 16.09.05from
+ if(indexof(dtstr,crm)>0,
+ first=crm;
+ if(indexof(dtstr,crm+lfm)>0,
+ first=first+lfm;
+ ); // 16.09.05upto
+ );
+ dtstr=dtstrorg;// 16.09.19from
+ tmp=substring(dtstr,length( dtstr)-1,length(dtstr));
+ if(tmp!=lfm,
+ dtstr=dtstr+first;
+ );// 16.09.19upto
+ tmp1=Indexall(dtstr,first);
+ tmp1=prepend(0,tmp1);
+ tmp1=append(tmp1,length(dtstr));
+ dtall=[];
+ forall(1..(length(tmp1)-1),
+ tmp=substring(dtstr,tmp1_#,tmp1_(#+1)-1);
+ if(length(tmp)>0,
+ dtall=append(dtall,tmp);
+ );
+ );
+ out=[];
+ forall(dtall,dt,
+ tmp1=tokenize(dt,sep); //16.12.04
+ tmp2=[];
+ forall(tmp1,
+ if(isstring(#),tmp=parse(#),tmp=#);
+ if(!isreal(tmp),
+ if(length(#)>0,tmp=#,tmp=rep);
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ out=append(out,tmp2);
+ );
+ out;
+);
+
+Columnlist(dt,list):=( // 16.09.04
+//help:Columnlist(dt,1..3);
+ apply(dt,#_list);
+);
+
+Dispmat(dt):=( // 16.09.16
+//help:Dispmat(dt);
+ regional(htm,crm,lfm,row,tmp,tmp1,tmp2);
+ htm=unicode("0009");
+ crm=unicode("000d");
+ lfm=unicode("000a");
+ tmp2="";
+ forall(dt,row,
+ tmp1="";
+ forall(row,
+ if(isstring(#),
+ tmp1=tmp1+#+htm;
+ ,
+ tmp1=tmp1+text(#)+htm;
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ tmp1=tmp1+lfm;
+ tmp2=tmp2+tmp1;
+ );
+ print(tmp2);
+ println();
+);
+
+Sep1000(va):=( //17.07.18
+//help:Sep1000(1344555);
+//help:Sep1000([12456,55567]);
+ regional(str,nall,out);
+ if(islist(va),
+ out=apply(va,Sep1000(#));
+ ,
+ str=text(va);
+ nall=length(str);
+ out="";
+ forall(1..nall,
+ out=str_(nall+1-#)+out;
+ if((#<nall)&(mod(#,3)==0),
+ out=","+out;
+ );
+ );
+ );
+ out;
+);
+
+factorial(n):=(
+//help:factorial(5);
+ regional(out);
+ out=1;
+ forall(1..n,
+ out=out*#;
+ );
+ out;
+);
+
+norm(v1):=( // 16.09.01
+//help:norm([2,1,3]);
+ regional(out,tmp,tmp1,tmp2);
+ out=0;
+ forall(1..(length(v1)),
+ out=out+(v1_#)^2;
+ );
+ out=sqrt(out);
+ out;
+);
+norm(v1,v2):=(
+ norm(v2-v1);
+);
+
+// 16.03.28
+Removespace(str):=(
+//help:Removespace(" a b c ");
+ regional(tmp,flg,out);
+ tmp=length(str)+1;
+ flg=0;
+ forall(1..(length(str)),
+ if(flg==0,
+ if((str_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(str,tmp-1,length(str));
+ flg=0;
+ tmp=0;
+ forall(reverse(1..(length(out))),
+ if(flg==0,
+ if((out_#)!=" ",
+ tmp=#;
+ flg=1;
+ );
+ );
+ );
+ out=substring(out,0,tmp);
+);
+
+Indexall(str,key):=(
+ regional(rest,out,flg,tmp,tmp1,);
+ out=[];
+ rest=str;
+ flg=0;
+ forall(1..(length(str)),
+ if(flg==0,
+ tmp=indexof(rest,key);
+ if(tmp>0,
+ tmp1=tmp+length(str)-length(rest);
+ out=append(out,tmp1);
+ rest=substring(rest,tmp,length(rest));
+ ,
+ flg=1;
+ );
+ );
+ );
+ out;
+);
+
+Parlevel(str):=Bracket(str); // 16.05.22from
+Bracket(str):=Bracket(str,"()");
+Bracket(str,br):=(
+//help:Bracket(string,"()");
+ regional(ph,pt,out,noL,ncL,nall,level,tmp);
+ ph=substring(br,0,1);
+ pt=substring(br,1,2);
+ noL=Indexall(str,ph);
+ ncL=Indexall(str,pt); // 16.05.22upto
+ nall=sort(concat(noL,ncL));
+ level=0;
+ out=[];
+ forall(nall,
+ if(contains(noL,#),
+ level=level+1;
+ tmp=[#,level];
+ ,
+ tmp=[#,-level];
+ level=level-1;
+ );
+ out=append(out,tmp);
+ );
+ out;
+);
+
+Pardiagram(str):=Pardiagram(str,[20]);
+Pardiagram(str,options):=(
+//help:Pardiagram(exprstr);
+//help:Pardiagram(options=[20,"Disp=y","Fig=y"]);
+ regional(reL,eqL,len,disp,scheme,bra,nn,sta,out,
+ opos,cpos,all,dx,dh,mxh,start,nn,p1,p2,p3,p4,tmp,tmp1,tmp2,tmp3);
+ len=20;
+ disp=1;
+ scheme=1;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="D",
+ if(tmp2=="N" % tmp2=="F",disp=0);
+ );
+ if(tmp1=="F",
+ if(tmp2=="N" % tmp2=="F",scheme=0);
+ );
+ );
+ forall(reL,
+ len=#;
+ );
+ bra=Bracket(str);
+ tmp1=select(bra,#_2>0);
+ tmp2=select(bra,#_2<0);
+ out=[];
+ forall(1..(length(tmp1)),nn,
+ sta=tmp1_nn;
+ tmp=select(tmp2,#_2==-sta_2 & #_1>sta_1);
+ tmp=tmp_1;
+ out=append(out, [substring(str,sta_1-1,tmp_1),
+ nn,sta_2,sta_1,tmp_1,
+ substring(str,sta_1-1,sta_1+len-1),
+ substring(str,tmp_1-len,tmp_1)] );
+ );
+ if(disp==1,
+ println("Printing from 2 to 7. (Extract full string using _1)");
+ apply(out,println(#_(2..7)));
+ );
+ if(scheme==1,
+ opos=sort(apply(out,#_4));
+ cpos=sort(apply(out,#_5));
+ tmp=concat(opos,cpos);
+ all=sort(tmp);
+ mxh=max(apply(out,#_3));
+ dx=1;
+ dh=1;
+ start=[-5,5];
+ forall(1..(length(all)),nn,
+ tmp=select(out,#_4==all_nn);
+ if(length(tmp)>0,
+ tmp1=tmp_1_3;
+ tmp2=tmp_1_4;
+ tmp3=tmp_1_5;
+ tmp=select(1..(length(all)),all_#==tmp3);
+ tmp4=tmp_1;
+ p1=start+[(nn-1)*dx,-0.5];
+ p2=p1+[0,(tmp1-mxh-1)*dh];
+ p3=p2+[(tmp4-nn)*dx,0];
+ p4=p3+[0,(mxh+1-tmp1)*dh];
+ Listplot("ch"+text(nn),[p1,p2,p3,p4],["Message=n"]);
+ Letter([p2,"s",text(tmp2),p3,"s",text(tmp3)]);
+ tmp=select(1..(length(opos)),opos_#==tmp2);
+ tmp=tmp_1;
+ if(tmp==1,
+ tmp=substring(str,tmp2-1,tmp2);
+ ,
+ if(opos_(tmp-1)==opos_tmp-1,
+ tmp=substring(str,tmp2-1,tmp2);
+ ,
+ tmp=substring(str,tmp2-2,tmp2);
+ );
+ );
+ tmp=replace(tmp,"^","**");
+ Expr(p1,"n",tmp);
+ tmp=select(1..(length(cpos)),cpos_#==tmp3);
+ tmp=tmp_1;
+ if(tmp==length(cpos),
+ tmp=substring(str,tmp3-1,tmp3);
+ ,
+ if(cpos_(tmp+1)==cpos_tmp+1,
+ tmp=substring(str,tmp3-1,tmp3);
+ ,
+ tmp=substring(str,tmp3-1,tmp3+1);
+ );
+ );
+ tmp=replace(tmp,"^","**");
+ Expr(p4,"n",tmp);
+ );
+ );
+ );
+ out;
+);
+
+Changelib(path):=(
+ Dirlib=path;
+ setdirectory(Dirlib);
+ import("ketcindyset.txt");
+ setdirectory(Dirwork); // 16.04.23
+);
+
+Changework(path):=( //16.10.21
+//help:Changework(directory);
+ regional(tmp);
+ if(path=="" % !isexists(path,""),
+ println("Directory "+path+" not exist, so set to "+Dirwork);
+ ErrFlag=-1;
+ ,
+ Dirwork=path;
+ setdirectory(Dirwork);
+ if(!iswindows(), //17.04.11
+ if(!iskcexists(Dirwork),
+ SCEOUTPUT = openfile(Shellparent);
+ closefile(SCEOUTPUT);
+ println(setexec(Dirwork,Shellparent));
+ );
+ );
+ );
+);
+
+Changestyle(nameL,style):=(
+//help:Changestyle(["sgAB"],["da"]);
+ regional(nmL,name,Ltype,Ltypeorg,Noflg,opcindy,tmp);
+ tmp=Divoptions(style);
+ Ltypeorg=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ forall(nmL,name,
+ Ltype=Ltypeorg;
+ GCLIST=select(GCLIST,#_1!=name);
+ COM2ndlist=select(COM2ndlist,
+ (indexof(#,"("+name)==0)%(indexof(#,"Shade")>0)); // 15.05.23,16.12.13
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+);
+
+Op(n,object):=( // 16.05.25
+//help:Op(4,[1,2,3,4]);
+//help:Op(3,"abcd");
+ regional(out);
+ if(islist(object),
+ out=object_n;
+ ,
+ if(isstring(object),
+ out=substring(object,n-1,n);
+ );
+ );
+ out;
+);
+
+Finddef(G):=(
+ regional(def,tmp,tmp1,tmp2,tmp3);
+ if(isstring(G),tmp=parse(G),tmp=G);
+ def=text(inspect(tmp,"definition"));
+ tmp1=indexof(def,"(");
+ tmp2=indexof(def,";");
+ tmp3=indexof(def,")");
+ tmp=[substring(def,0,tmp1-1)];
+ if(tmp2>0,
+ tmp=append(tmp,substring(def,tmp1,tmp2-1));
+ if(indexof(def,")",tmp3+1)==0,
+ tmp=append(tmp,substring(def,tmp2,tmp3-1));
+ ,
+ tmp=append(tmp,substring(def,tmp2,tmp3));
+ );
+ ,
+ tmp=append(tmp,substring(def,tmp1-1,tmp3));
+ );
+ tmp;
+);
+
+Findgeoinfo(geo):=(
+ regional(out,tmp,tmp1,tmp2);
+ tmp=Finddef(geo);
+ if(ispoint(parse(tmp_2)),
+ out=[tmp_2,tmp_3];
+ ,
+ tmp1=Findgeoinfo(parse(tmp_2));
+ if(ispoint(parse(tmp1_1)),
+ out=[tmp1_1,tmp1_2];
+ ,
+ tmp2=Findgeoinfo(parse(tmp1_2));
+ out=[tmp2_1,tmp2_2];
+ );
+ );
+ if(ispoint(geo),
+ if(!ispoint(parse(tmp_2)),
+ tmp1=Finddef(parse(tmp_2));
+ ,
+ tmp1=tmp;
+ );
+ out=append(out,tmp1_3);
+ ,
+ out=append(out,tmp_3);
+ );
+ out;
+);
+
+Dependgeo(geo):=(
+ regional(tmp,tmp1,tmp2,out);
+ tmp=Finddef(geo);
+ if(!iscircle(geo),
+ out=[text(geo)];
+ ,
+ out=[geo];
+ );
+ if(length(tmp)<3,
+ out=concat(out,[tmp_1,[]]);
+ ,
+ out=concat(out,[tmp_1]);
+ tmp1=[tmp_2,tmp_3];
+ tmp=parse(tmp1_2);
+ if(islist(tmp) % isreal(tmp),
+ tmp1=[tmp1_1];
+ );
+ out=append(out,tmp1);
+ );
+ out;
+);
+
+Workprocess():=Workprocess(300);
+Workprocess(nn):=Drawprocess(nn);
+Drawprocess():=Drawprocess(300);
+Drawprocess(nn):=(
+//help:Workprocess();
+ regional(All,added,remain,out,flg,tmp,tmp1,tmp2);
+ tmp=remove(allpoints(),[NE,SW,TH,FI]);
+ tmp1=select(tmp,
+ substring(text(#),length(text(#))-1,length(text(#)))!="z");
+ tmp1=concat(tmp1,alllines());
+// tmp1=concat(tmp1,allcircles());
+ All=apply(tmp1,Dependgeo(#));
+ added=select(All,length(#_3)==0);
+ out=sort(apply(added,#_1));
+ remain=remove(All,added);
+ flg=0;
+ repeat(nn,
+ if(flg==0,
+ tmp1=select(remain,remove(#_3,out)==[]);
+ tmp2=sort(apply(tmp1,#_1));
+ out=concat(out,tmp2);
+ remain=remove(remain,tmp1);
+ if(length(remain)==0,flg=1);
+ );
+ );
+ println("Process of drawing");
+ forall(out,
+ println(Dependgeo(parse(#)));
+ );
+ out;
+);
+
+Sortpointlist(list):=(
+ regional(plist,ilist,jj,kk,flg,p1,p2,in1,in2,
+ tmp,tmp1,tmp2,out);
+ out=list;
+ plist=list_1;
+ ilist=list_2;
+ flg=0;
+ forall(1..(length(plist)),jj,
+ p1=plist_jj;
+ in1=ilist_jj;
+ forall((jj+1)..(length(plist)),kk,
+ if(flg==0,
+ p2=plist_kk;
+ in2=ilist_kk;
+ if(contains(in1,p2),
+ tmp1=plist_(1..(jj-1));
+ tmp1=append(tmp1,p2);
+ tmp1=concat(tmp1,plist_((jj+1)..(kk-1)));
+ tmp1=append(tmp1,p1);
+ tmp1=concat(tmp1,plist_((kk+1)..(length(plist))));
+ tmp2=ilist_(1..(jj-1));
+ tmp2=append(tmp2,in2);
+ tmp2=concat(tmp2,ilist_((jj+1)..(kk-1)));
+ tmp2=append(tmp2,in1);
+ tmp2=concat(tmp2,ilist_((kk+1)..(length(plist))));
+ out=Sortpointlist([tmp1,tmp2]);
+ flg=1;
+ );
+ );
+ );
+ );
+ out;
+);
+
+Toupper(str):=(
+//help:Toupper("Abc");
+ regional(alphabet,out,tmp,tmp1);
+ alphabet="abcdefghijklmnopqrstuvwxyz";
+ out="";
+ forall(1..(length(str)),
+ tmp=substring(str,#-1,#);
+ tmp1=indexof(alphabet,tmp);
+ if(tmp1>0,
+ out=out+unicode(text(tmp1+64),base->10);
+ ,
+ out=out+tmp;
+ );
+ );
+ out;
+);
+
+Textformat(value,dig):=(
+//help:Textformat(2/3,4);
+//help:Textformat([gr1,gr2],5);
+ regional(vv,tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ tmp1=tmp1+Textformat(#,dig)+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ if(ispoint(value) % isstring(value),
+// vv=Lcrd(value);
+// tmp1=Textformat(vv,dig);
+// tmp1=text(value); // 15.04.07
+ if(isstring(value),tmp1=Dq+value+Dq,tmp1=text(value)); // 15.10.02
+ ,
+ tmp1=format(value,dig);
+ );
+ );
+ tmp1;
+);
+
+Sprintf(value,dig):=(
+//help:Sprintf(5.1,4);
+ regional(vv,tmp,tmp1);
+ if(!islist(value), // 17.03.12from
+ if(isstring(value),
+ vv=value;
+ ,
+ vv=Textformat(value,dig);
+ ); // 17.03.12from
+ if(indexof(vv,".")==0,vv=vv+".");
+ vv=vv+"0000000000000000";
+ tmp=indexof(vv,".")+dig;
+ vv=substring(vv,0,tmp);
+ ,
+ vv=apply(value,Sprintf(#,dig));
+ );
+ vv;
+);
+
+Assign(str):=( // old
+ regional(out);
+ out=str;
+ forall(VLIST,
+ tmp=substring(#_1,0,length(#_1)-1);
+ out=replace(out,tmp,"("+#_2+")");
+ );
+ out;
+);
+
+Assign(funstr,vrL):=(
+ regional(nn,out,tmp,tmp1);
+ nn=length(vrL)/2;
+ out=funstr;
+ forall(1..nn,
+ out=Assign(out,vrL_(2*#-1),vrL_(2*#));
+ );
+ out;
+);
+
+Assign(funstr,varname,rep):=(
+//help:Assign("x^2+a*x","a",1.3);
+//help:Assign("a*x^2+b*x",["a",1,"b",2]);
+ regional(repstr,ii,jj,tmp,tmp1,tmp2,Notvar,Flg);
+ if(isstring(rep),repstr=rep,repstr="("+Textformat(rep,6)+")");
+ // 15.02.09, 07.06,17.08.24
+ tmp=[46]; // 12.20
+ tmp=concat(tmp,48..57);
+ tmp=concat(tmp,65..90);
+ tmp=concat(tmp,97..122);
+ Notvar=apply(tmp,unicode(text(#),base->10));
+ tmp2="";
+ forall(1..100,
+ ii=indexof(funstr,varname);
+ if(ii>0,
+ Flg=0;
+ if(ii>1,
+ tmp=substring(funstr,ii-2,ii-1);
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,ii);
+ funstr=substring(funstr,ii,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ jj=ii-1+length(varname);
+ if(jj<length(funstr),
+ tmp=substring(funstr,jj,jj+1));
+ if(contains(Notvar,tmp),
+ tmp2=tmp2+substring(funstr,0,jj);
+ funstr=substring(funstr,jj,length(funstr));
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp2=tmp2+substring(funstr,0,ii-1)+repstr;
+ funstr=substring(funstr,jj,length(funstr));
+ );
+ );
+ );
+ funstr=tmp2+funstr;
+ funstr;
+);
+
+MeasureDepth(list):=(
+ regional(tmp,tmp1,Depth,Flg);
+ Flg=0;
+ Depth=0;
+ if(ispoint(list), // 15.01.22
+ Depth=0;
+ Flg=1;
+ ,
+ tmp1=select(1..(length(list)),length(list_#)>0);//17.05.21from
+ tmp=list_(tmp1_1);//17.05.21upto
+ );
+ repeat(4,
+ if(Flg==0,
+ if(islist(tmp),
+ tmp=tmp_1;
+ Depth=Depth+1;
+ ,
+ if(ispoint(tmp),Depth=Depth+1);
+ Flg=1;
+ );
+ );
+ );
+ Depth;
+);
+
+Flattenlist(pltlist):=(
+//help:Flattenlist([[2,3],[[1,2],[5,6]]]);
+ regional(Out,nn,Dt,ii,tmp,flg);
+ Out=[];
+ if(MeasureDepth(pltlist)==1,
+ Out=[pltlist];
+ ,
+ forall(1..(length(pltlist)),nn,
+ Dt=pltlist_nn;
+ if(MeasureDepth(Dt)<2,
+ Out=append(Out,Dt);
+ ,
+ forall(1..(length(Dt)),ii,
+ tmp=Flattenlist(Dt_ii);
+ Out=concat(Out,tmp);
+ );
+ );
+ );
+ );
+ Out;
+);
+
+Divoptions(options):=(
+//help:Divoptions(options);
+ regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy,flg,tmp,tmp1);
+ Ltype="dr"; // 2015.01.13
+ Noflg=0;
+ Inflg=0;
+ Outflg=0;
+ eqL=[];
+ realL=[];
+ strL=[];
+ opstr="";
+ opcindy="";
+ forall(options,
+ flg=0;
+ if(flg==0,
+ if(isreal(#) % ispoint(#) % islist(#),
+ realL=append(realL,#);
+ opstr=opstr+","+text(#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"=")>0,
+ eqL=append(eqL,#);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"no")+indexof(#,"No")>0,
+ if(indexof(#,"tex")>0,Noflg=1);
+ if(indexof(#,"disp")>0,Noflg=2);
+ if(indexof(#,"data")>0,Noflg=3);
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"out")+indexof(#,"Out")>0,
+ if(indexof(#,"-")==0,
+ Outflg=1;
+ ,
+ Outflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ if(indexof(#,"in")+indexof(#,"In")>0,
+ if(indexof(#,"-")==0,
+ Inflg=1;
+ ,
+ Inflg=2;
+ );
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp=substring(#,0,2);
+ tmp1=indexof(tmp,"dr")+indexof(tmp,"Dr");
+ tmp1=tmp1+indexof(tmp,"da")+indexof(tmp,"Da");
+ tmp1=tmp1+indexof(tmp,"id")+indexof(tmp,"Id");
+ tmp1=tmp1+indexof(tmp,"do")+indexof(tmp,"Do");
+ tmp1=tmp1+indexof(tmp,"dp")+indexof(tmp,"Dp");
+ if(tmp1>0,
+ Ltype=#;
+ flg=1;
+ );
+ if(flg==0,
+ strL=append(strL,#);
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ );
+ if(indexof(opcindy,"color->")==0,// 16.10.07from
+ opcindy=opcindy+",color->[0,0,0]";
+ );
+ [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,opstr,opcindy];
+);
+
+Dotprod(vec1,vec2):=(
+//help:Dotprod(vec1,vec2);
+ regional(v1,v2,tmp);
+ if(ispoint(vec1),v1=vec1.xy,v1=vec1);
+ if(ispoint(vec2),v2=vec2.xy,v2=vec2);
+ v1*v2;
+);
+
+Crossprod(a,b):=(
+//help:Crossprod(vec1,vec2);
+ regional(tmp1,tmp2,tmp3,Out);
+ if(length(a)==3,
+ tmp1=a_2*b_3-a_3*b_2;
+ tmp2=a_3*b_1-a_1*b_3;
+ tmp3=a_1*b_2-a_2*b_1;
+ Out=[tmp1,tmp2,tmp3];
+ ,
+ Out=a_1*b_2-a_2*b_1;
+ );
+ Out;
+);
+
+Ptstart(Fig):=(
+//help:Ptstart("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21
+ tmp_1;
+);
+
+Ptend(Fig):=(
+//help:Ptend("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_(length(tmp)); // 15.04.12
+);
+
+Numptcrv(Fig):=(
+//help:Numptcrv("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23
+ length(tmp);
+);
+
+Ptcrv(Num,Fig):=(
+//help:Ptcrv(10,"gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig);
+ tmp_Num;
+);
+
+Invert(Fig):=(
+//help:Invert("gr1");
+ regional(tmp);
+ if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27
+ reverse(tmp);
+);
+Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 16.01.27
+Invert(nm,Fig,options):=(
+//help:Invert("1","gr1");
+ regional(name,tmp);
+ name="-inv"+nm;
+ tmp=Invert(Fig);
+ Listplot(name,tmp,options);
+);// upto 16.01.27
+
+Paramoncrv(pP,Gdata):=(
+ regional(Tmp,PtL);
+// Eps=10^(-8);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ Tmp=Nearestpt(pP,PtL);
+ Tmp_2;
+);
+
+ParamonCurve(pP,nN,plist):=(
+//help:ParamonCurve(A,10,"gr1");
+ regional(PtL,Out,Pa,Pb,vV,vW,sS);
+ if(isstring(plist),PtL=parse(plist),PtL=plist);
+ PtL=apply(PtL,LLcrd(#));//16.10.16
+ if(nN==length(PtL),
+ Out=nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ vV=Pb-Pa;
+ vW=pP-Pa;
+ sS=vV*vW/|vV|^2;
+ sS=min([max([sS,0]),1]);
+ Out=nN+sS;
+ );
+ Out;
+);
+
+Pointoncrv(tT,PtL):=PointonCurve(tT,PtL);
+PointonCurve(tT,Gdata):=(
+//help:PointonCurve(20.5,"gr1");
+ regional(Out,Eps,nN,sS,Pa,Pb,PtL);
+ if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata);
+ if(length(PtL)==1,PtL=PtL_1);
+ Eps=10^(-4);
+ nN=floor(tT+Eps);
+ sS=max([tT-nN,0]);
+ if(nN==length(PtL),
+ Out=PtL_nN;
+ ,
+ Pa=PtL_nN;
+ Pb=PtL_(nN+1);
+ Out=(1-sS)*Pa+sS*Pb;
+ );
+ Out;
+);
+
+Koutenseg(pA,pB,pC,pD):=Koutenseg(pA,pB,pC,pD,[]);
+Koutenseg(pA,pB,pC,pD,options):=(
+ regional(Eps0,Eps,Eps2,pV,Sv2,Out,pP,pQ,Flg,p1,p2,q1,q2,
+ em1,eM1,em2,eM2,rT,Tmp1,Tmp2);
+ Eps0=10^(-4);
+ pV=pB-pA;
+ Sv2=|pV|;
+ pP=pC-pA; pQ=pD-pA;
+ Eps=10^(-3);
+ Eps2=0.2;
+ Tmp1=0;
+ forall(options,
+ if(Tmp1==0,
+ Eps=#;
+ Tmp1=1;
+ ,
+ Eps2=#;
+ );
+ );
+ Flg=0;
+ if(Sv2<10^(-3),
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ Eps=min([Eps2,Eps/Sv2]);
+ p1=pP*pV/Sv2^2;
+ p2=[pP_2,-pP_1]*pV/Sv2^2;
+ q1=pQ*pV/Sv2^2;
+ q2=[pQ_2,-pQ_1]*pV/Sv2^2;
+ em1=-Eps; eM1=1+Eps;
+ em2=-Eps; eM2=Eps;
+ if(max([p1,q1])<em1 % min([p1,q1])>eM1,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(max([p2,q2])<em2 % min([p2,q2])>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & p2*q2<0,
+ rT=p1-(q1-p1)/(q2-p2)*p2;
+ if(rT>em1 & rT<eM1,
+ if(rT>-Eps0 & rT<1+Eps0,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,0];
+ ,
+ Tmp1=pA+rT*pV;
+ Tmp2=min([max([rT,0]),1]);
+ Out=[Tmp1,Tmp2,1];
+ );
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ );
+ if(Flg==0 & (p1 > -Eps0 & p1 < 1 + Eps0 & p2 > -Eps0 & p2 < Eps0),
+ rT= p1;
+ Tmp1=pA+rT*pV;
+ Out= [Tmp1, rT, 0];
+ Flg=1;
+ );
+ if(Flg==0 & (q1 > -Eps0 & q1 < 1 + Eps0 & q2 > -Eps0 & q2 < Eps0),
+ rT= q1;
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,0];
+ Flg=1;
+ );
+ if(Flg==0 & (p1<em1 % p1>eM1 % p2<em2 % p2>eM2),
+ if(q1<em1 % q1>eM1 % q2<em2 % q2>eM2,
+ Out=["inf","inf"];
+ Flg=1;
+ );
+ if(Flg==0,
+ rT=min([max([q1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ );
+ if(Flg==0 & (q1<em1 % q1>eM1% q2<em2 % q2>eM2),
+ rT=min([max([p1,0]),1]);
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ Flg=1;
+ );
+ if(Flg==0,
+ if(abs(p2)<abs(q2),
+ rT=min([max([p1,0]),1]);
+ ,
+ rT=min([max([q1,0]),1]);
+ );
+ Tmp1=pA+rT*pV;
+ Out=[Tmp1,rT,1];
+ );
+ Out;
+);
+
+IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]);
+IntersectcrvsPp(Gr1,Gr2,options):=(
+//help:IntersectcrvsPp("gr1","pa1");
+//help:IntersectcrvsPp(options=[Eps2(0.1),"Dif=0.05"]);
+ regional(Out,Eps,Eps2,Eps0,Flg,Data1,Data2,
+ Tmp1,Tmp2,Tmp3,Tmp,KL1,KL2,pA,pB,Ni,Nj,
+ pP,pQ,rT,Flg,eqL,realL,opstr,Dif);
+ Eps=10^(-4);
+ Eps2=0.1;
+ Dif=0.05; // 2015.05.31
+ Flg=0;
+ Tmp1=Divoptions(options); //
+ eqL=Tmp1_5;
+ realL=Tmp1_6;
+ opstr=Tmp1_(length(Tmp1));
+ forall(eqL,
+ if(substring(#,0,1)=="D",
+ Tmp1=indexof(#,"=");
+ Dif=parse(substring(#,Tmp1,length(#)));
+ );
+ );
+ Tmp1=length(realL);
+ if(Tmp1>0,
+ Eps=realL_1;
+ if(Tmp1>1,
+ Eps2=realL_2;
+ );
+ );
+ Flg=0;
+ if(isstring(Gr1),Data1=parse(Gr1),Data1=Gr1);
+ if(isstring(Gr2),Data2=parse(Gr2),Data2=Gr2);
+ if(MeasureDepth(Data1)==2,Data1=Data1_1);
+ if(MeasureDepth(Data2)==2,Data2=Data2_1);
+ Data1=apply(Data1,LLcrd(#));
+ Data2=apply(Data2,LLcrd(#));
+ if(length(Data1)==length(Data2),
+ Tmp1=Reverse(Data2);
+ Eps0=10^(-6);
+ Tmp2=0;
+ forall(1..(length(Data1)),
+ Tmp2=Tmp2+abs(Data1_#-Data2_#);
+ );
+ Tmp3=0;
+ forall(1..(length(Data1)),
+ Tmp3=Tmp3+abs(Data1_#-Tmp1_#);
+ );
+ if(Tmp2<Eps0 % Tmp3<Eps0,
+ Out=[];
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ KL1=[];
+ KL2=[];
+ forall(1..(length(Data1)-1),Ni,
+ pA=Data1_Ni;
+ pB=Data1_(Ni+1);
+ forall(1..(length(Data2)-1),
+ pP=Data2_#; pQ=Data2_(#+1);
+ Tmp=Koutenseg(pA,pB,pP,pQ,[Eps,Eps2]);
+ if(Tmp!=["inf","inf"],
+ if(Tmp_3==0,
+ Tmp1=[Tmp_1,Tmp_2,Ni,#];
+ KL1=concat(KL1,[Tmp1]);
+ ,
+ Tmp2=[Tmp_1,Tmp_2,Ni,#];
+ KL2=concat(KL2,[Tmp2]);
+ );
+ );
+ );
+ );
+ Out=[];
+ if(length(KL1)>0,
+ Tmp=KL1_1;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Ni=Tmp_3;
+ Nj=Tmp_4;
+ Tmp=[pP,Ni+rT,Nj];
+ Out=[Tmp];
+ );
+ forall(2..(length(KL1)),Ni,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..(length(Out)),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL1_Ni;
+ pP=Tmp_1;
+ rT=Tmp_2;
+ Tmp1=Tmp_3;
+ Tmp2=Tmp_4;
+ Tmp=[pP,Tmp1+rT,Tmp2];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ forall(1..(length(KL2)),Ni,
+ Tmp=KL2_Ni; // 15.11.21 Usui
+ pP=Tmp_1;
+ Tmp2=0;
+ Flg=0;
+ forall(1..(length(Out)),Nj,
+ if(Flg==0,
+ Tmp=Out_Nj;
+ if(|pP-Tmp_1|<Eps,
+ Tmp2=1;
+ Flg=1;
+ );
+ );
+ );
+ if(Tmp2==0,
+ Tmp=KL2_Ni;
+ rT=Tmp_2;
+ rT=min([max([rT,0]),1]); // 15.11.21 Usui
+ Tmp=[pP,Tmp_3+rT,Tmp_4];
+ Out=concat(Out,[Tmp]);
+ );
+ );
+ );
+ Tmp1=Out; // 15.04.06 from
+ Out=[];
+ forall(Tmp1,Tmp2,
+ Tmp3=select(1..(length(Out)),//16.11.27,
+ |Out_#_1-Tmp2_1|<Dif & |Out_#_2-Tmp2_2|<=1& |Out_#_3-Tmp2_3|<=1);
+ //17.04.13
+ if(length(Tmp3)==0,
+ Out=append(Out,Tmp2);
+ ,
+ forall(Tmp3, //16.11.27
+ Out_#_1=(Out_#_1+Tmp2_1)/2;//17.04.14
+ );
+ );
+ ); // 15.04.06 upto
+ Out;
+);
+
+Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]);
+//help:Intersectcrvs("gr1","pa1");
+Intersectcrvs(Gr1,Gr2,options):=(
+ regional(tmp,tmp1,tmp2);
+ tmp1=IntersectcrvsPp(Gr1,Gr2,options);
+ apply(tmp1,#_1);
+);
+
+NearestptcrvPhy(point,PL):=(
+ regional(tmp,pP,plist);
+ pP=Pcrd(point);
+ if(isstring(PL),plist=parse(PL),plist=PL);
+ if(MeasureDepth(plist)==2,plist=plist_1);
+ plist=apply(plist,#); // 14.12.18
+ tmp=Nearestpt(pP,plist);
+ tmp=tmp_1;
+ [tmp_1/SCALEX,tmp_2/SCALEY];
+);
+
+Nearestptcrv(point,plist):=(
+//help:Nearestptcrv(A,"gr1");
+ regional(tmp);
+ tmp=Nearestpt(point,plist);
+ tmp_1;
+);
+
+Nearestpt(point,PL2):=(
+ regional(PL1,PL,Ans,Flg,Eps,pA,Pm,Im,Sm,Nn,Ni,
+ a1,b1,a2,b2,v1,v2,x1,x2,Tmp,rT,pP,sS,Lm,Pm,Sm,Flg);
+//help:Nearestpt("gr1","gr2");
+ if(isstring(point),PL1=parse(point),PL1=point);
+ if(MeasureDepth(PL1)==2,PL1=PL1_1);
+ if(!islist(PL1_1),
+ PL1=[PL1];
+ Flg=0;
+ ,
+ Flg=1;
+ );
+ if(isstring(PL2),PL=parse(PL2),PL=PL2);
+ if(MeasureDepth(PL)==2,PL=PL_1);
+ Eps=10^(-6);
+ Ans=[PL1_1,1,PL_1,1,|PL1_1-PL_1|];
+ forall(1..(length(PL1)),Nn, // 16.05.04
+ pA=PL1_Nn;
+ Pm=PL_1;
+ Im=1;
+ Sm=|Pm-pA|;
+ forall(1..(length(PL)-1),Ni,
+ a1=PL_Ni_1; a2=PL_Ni_2;
+ b1=PL_(Ni+1)_1; b2=PL_(Ni+1)_2;
+ v1=b1-a1; v2=b2-a2;
+ x1=pA_1; x2=pA_2;
+ Tmp=v2^2+v1^2;
+ if(abs(Tmp)>Eps,
+ rT=(-a2*v2-v1*a1+v1*x1+x2*v2)/Tmp;
+ if(rT<-Eps,
+ pP=[a1,a2];
+ ,
+ if(rT>1+Eps,
+ pP=[b1,b2];
+ ,
+ pP=[a1+rT*v1,a2+rT*v2];
+ );
+ );
+ sS=|pP-pA|;
+ if(sS<Sm-Eps,
+ Tmp=ParamonCurve(pP,Ni,PL);
+ Pm=pP; Lm=Tmp; Sm=sS;
+ );
+ );
+ if(Sm<Ans_5, // 16.05.03from
+ Ans=[pA,Nn,Pm,Lm,Sm];
+ );
+ ); // 16.05.03upto
+ );
+ if(Flg==0,
+ Ans=Ans_(3..5);
+ );
+ Ans;
+);
+
+Derivative(fun,var,value):=(
+//help:Derivative("x^3","x",2);
+ regional(str,tmp);
+ str="d(";
+ str=str+replace(fun,var,"#")+",";
+ str=str+value+")";
+ tmp=Pcrd([1,parse(str)]); // 14.11.08
+ tmp_2;
+);
+
+Integrate(pltdata,range):=Integrate(pltdata,range,[]);
+Intergrate(Arg1,Arg2,Arg3):=(
+ regional(pltdata,range,options,fnstr,vartr);
+ if(islist(Arg2),
+ pltdata=Arg1;
+ range=Arg2;
+ options=Arg3;
+ Integrate(pltdata,range,options);
+ ,
+ fnstr=Arg1;
+ vastr=Arg2;
+ range=Arg3;
+ Integrate(fnstr,vastr,range,[]);
+ );
+);
+
+Integrate(pltdata,range,options):=(
+//help:Integrate("gr1",[1,3]);
+//help:Integrate(options=["Rule=o"]);
+ regional(tmp,tmp1,eqL,Rule,pdata,Sm,ptP,ptQ,list,va1,va2);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ Rule="o";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Rule=substring(#,tmp,tmp+1);
+ );
+ );
+ if(Rule=="o",
+ Sm= IntegrateO(pltdata,range);
+ ,
+ if(isstring(pltdata),pdata=parse(pltdata),pdata=pltdata);
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ list=apply(list,LLcrd(#)); // 15.09.14
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ ptP=list_#; // 15.09.14
+ ptQ=list_(#+1);
+ Sm=Sm+(ptP_2+ptQ_2)*(ptQ_1-ptP_1)/2;
+ );
+ Sm;
+ );
+);
+
+Integrate(fnstr,vastr,range,options):=(
+//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]);
+ regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2);
+ Num=100;
+ Way="t";
+ forall(options,
+ if(indexof(#,"=")>0,
+ if(indexof(#,"N=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(indexof(#,"Num=")>0,
+ Num=parse(substring(#,indexof(#,"="),length(#)));
+ );
+ if(Toupper(substring(#,0,1))=="R",
+ tmp=indexof(#,"=");
+ Way=substring(#,tmp,tmp+1);
+ );
+ );
+ );
+ Sm=0;
+ if(Way=="t",
+ forall(1..Num,
+ Lx=range_1+(range_2-range_1)*(#-1)/Num;
+ Rx=range_1+(range_2-range_1)*#/Num;
+ va1=parse(replace(fnstr,vastr,textformat(Lx,5)));
+ va2=parse(replace(fnstr,vastr,textformat(Rx,5)));
+ Sm=Sm+(va1+va2)*(Rx-Lx)/2;
+ );
+ ,
+ sx=range_1;
+ ex=range_2;
+ dx=(ex-sx)/Num;
+ xn=apply(0..Num,sx+#*dx);
+ yn=apply(xn,parse(replace(fnstr,vastr,textformat(#,5))));
+ dx=dx/2;
+ repeat(Num,s,
+ x0=xn_s;
+ x1=(xn_s+xn_(s+1))/2;
+ x2=xn_(s+1);
+ y0=yn_s;
+ y1=parse(replace(fnstr,vastr,textformat(x1,5)));
+ y2=yn_(s+1);
+ Sm=Sm+dx*(y0+4*y1+y2)/3;
+ );
+ );
+ Sm;
+);
+
+IntegrateO(p0org,p1org,p2org,p3org):=(
+ regional(p0,p1,p2,p3,pQ,pR,cc,p01,p02,
+ p11,p12,p21,p22,p31,p32, tmp);
+ if(ispoint(p0org),p0=p0org.xy,p0=p0org); // 16.03.10
+ if(ispoint(p1org),p1=p1org.xy,p1=p1org); // 16.03.16
+ if(ispoint(p2org),p2=p2org.xy,p2=p2org);
+ if(ispoint(p3org),p3=p3org.xy,p3=p3org);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp=tmp/20;
+);
+IntegrateO(pltdata,rangeorg):=(
+//help:IntegrateO("gr1",[0,2]);
+ regional(tmp,tmp1,tmp2,pdata,va1,va2,list,Bzk,Bzc,range,pmflg,
+ Sm,p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ if(isstring(pltdata),
+ pdata=parse(pltdata);
+ ,
+ pdata=pltdata;
+ );
+ if(MeasureDepth(pdata)==2,pdata=pdata_1);
+ range=rangeorg;
+ pmflg=1;
+ if(range_2<range_1,
+ range=reverse(range);
+ pmflg=-1;
+ );
+ va1=MeetCurve(pdata,range_1,0);
+ va2=MeetCurve(pdata,range_2,0);
+ list=select(pdata,(#_1>range_1 & #_1<range_2));
+ if(length(list)>0, // 16.09.25
+ if(list_1_1>list_(length(list))_1, //16.11.03
+ list=reverse(list);
+// pmflg=pmflg*(-1);
+ );
+ );
+ list=apply(list,LLcrd(#));
+ list=concat([va1],list);
+ list=concat(list,[va2]);
+ Sm=0;
+ forall(1..(length(list)-1),
+ p1=list_#;
+ p2=list_(#+1);
+ if(#==1 % #==length(list)-1,
+ tmp1=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ Sm=Sm+tmp1;
+ ,
+ p0=list_(#-1);
+ p3=list_(#+2);
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0);
+ pR=p2+cc*(p1-p3);
+ p01=p1_1; p02=p1_2;
+ p31=p2_1; p32=p2_2;
+ p11=pQ_1; p12=pQ_2;
+ p21=pR_1; p22=pR_2;
+ tmp1=-6*p12*p01+3*p12*p21+3*p12*p31+6*p02*p11-
+ 10*p02*p01+3*p02*p21+p02*p31-3*p22*p11-
+ 3*p22*p01+6*p22*p31-3*p32*p11-p32*p01-
+ 6*p32*p21+10*p32*p31;
+ tmp1=tmp1/20;
+ Sm=Sm+tmp1;
+ );
+ );
+ if(pmflg==-1,
+ Sm=-Sm;
+ );
+ Sm;
+);
+
+Findarea(pdstr):=(
+//help:Findarea("sgABCA");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=(p1_2+p2_2)*(p2_1-p1_1)/2;
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findarea(pdstr):=( // 15.11.27
+//help:Findarea("cr1");
+ regional(pd,p0,p1,p2,p3,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=pd_#;
+ p2=pd_(#+1);
+ if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1));
+ if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2));
+ tmp=IntegrateO(p0,p1,p2,p3);
+ s=s+tmp;
+ );
+ if(s<0,s=-s);
+ s;
+);
+
+Findlength(pdstr):=(
+//help:Findlength("gr1");
+ regional(pd,p1,p2,s,tmp);
+ if(isstring(pdstr),pd=parse(pdstr),pd=pdstr);
+ s=0;
+ forall(1..(length(pd)-1),
+ p1=Lcrd(pd_#);
+ p2=Lcrd(pd_(#+1));
+ tmp=|p2-p1|;
+ s=s+tmp;
+ );
+ s;
+);
+
+Inversefun(fnstr,rngstr,value):=(
+ regional(tmp,varstr,range,x1,x2,x3,va1,va2);
+ tmp=indexof(rngstr,"=");
+ varstr=substring(rngstr,0,tmp-1);
+ range=parse(substring(rngstr,tmp,length(rngstr)));
+ x1=range_1; x2=range_2;
+ repeat(15,
+ x3=(x1+x2)/2;
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)));
+ va2=parse(replace(fnstr,varstr,textformat(x3,5)));
+ if((va1>value & va2>value) % (va1<value & va2<value),
+ x1=x3;
+ ,
+ x2=x3;
+ );
+ );
+ va1=parse(replace(fnstr,varstr,textformat(x1,5)))-value;
+ va2=parse(replace(fnstr,varstr,textformat(x2,5)))-value;
+ if(x1==range_1 % x2==range_2,
+ println("not found in ("+textformat(range_1,5)
+ +","+textformat(range_2,5)+")");
+ );
+ if(abs(va1)<=abs(va2),x1,x2);
+);
+
+Com0th(String):=(
+ regional(str);
+ str=replace(String,LFmark,"");
+ COM0thlist=append(COM0thlist,str);
+);
+
+Com1st(String):=(
+ regional(str);
+ str=replace(String,LFmark,"");
+ GLIST=append(GLIST,str); // 15.05.27
+// COM1stlist=append(COM1stlist,str);
+);
+
+Com2nd(String):=(
+// help:Com2nd("");
+ regional(str);
+ str=replace(String,LFmark,"");
+ COM2ndlist=append(COM2ndlist,str);
+);
+
+Com2ndpre(String):=(
+ regional(str);
+ str=replace(String,LFmark,"");
+ COM2ndlist=prepend(str,COM2ndlist);
+);
+
+Texcom(String):=(
+//help:Texcom("\color[cmyk]{0,0,0,0.5}");
+ regional(str);
+ str="Texcom("+Dq+String+Dq+")";
+ Com2nd(str);
+);
+
+Ketcindylogo():=(
+//help:Ketcindylogo();
+ Com2nd("Texcom("+Dq+"\def\ketcindy{{K\kern-.20em
+ \lower.5ex\hbox{E}\kern-.125em{TCindy}}}"+Dq+")");
+);
+
+Drwline():=Drwline(textformat(GrL,5));
+Drwline(gstr):=(
+ Com2nd("Drwline("+gstr+")");
+);
+
+Dashline(gstr):=(
+ Com2nd("Dashline("+gstr+")");
+);
+
+Invdashline(gstr):=(
+ Com2nd("Invdashline("+gstr+")");
+);
+
+Dottedline(gstr):=(
+ Com2nd("Dottedline("+gstr+")");
+);
+
+SetEnglish():=(
+//help:SetEnglish();
+ Com0th("setlanguage('en')");
+);
+
+Drawlinetype(name,type):=(
+//help:Drawlinetype("gr1","da,1");
+ regional(Dop,tmp,tmp1,tmp2);
+ Dop="";
+ tmp1=indexof(type,",");
+ if(tmp1>0,
+ Dop=","+substring(type,tmp1,length(type));
+ );
+ tmp1=Toupper(substring(type,0,3));
+ if(tmp1=="DR",
+ Drwline(name+Dop);
+ );
+ if(tmp1=="DA",
+ Dashline(name+Dop);
+ );
+ if(tmp1=="ID",
+ Invdashline(name+Dop);
+ );
+ if(tmp1=="DO",
+ Dottedline(name+Dop);
+ );
+);
+
+Setunitlen(string):=(
+//help:Setunitlen("5mm");
+ ULEN=string;
+ GLIST=append(GLIST,"Setunitlen("+Dq+string+Dq+")");
+);
+
+Setmarklen(ratio):=(
+//help:Setmarklen(0.2);
+ MARKLEN=ratio*0.2;//16.11.01
+ Com2nd("Setmarklen("+textformat(ratio,5)+")");
+);
+
+Setorigin(point):=(
+//help:Setorigin([1,2]);
+ Com2nd("Setorigin("+textformat(point,5)+")");
+);
+
+Fontsize(sizestr):=(
+//help:Fontsize("s");
+ Com2nd("Fontsize('"+sizestr+"')");
+);
+
+Setpen(width):=(
+//help:Setpen(2);
+ PenThick=PenThickInit*width; // 16.04.09
+ Com2nd("Setpen("+text(width)+")");
+);
+
+Lcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=[pt.x/SCALEX,pt.y/SCALEY];
+ ,
+ tmp=pt;
+ );
+ tmp;
+);
+
+Pcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=re(pt.xy); // 15.07.24
+ ,
+ tmp=[pt_1*SCALEX,pt_2*SCALEY];
+ );
+ tmp;
+);
+
+LLcrd(pt):=(
+ regional(tmp);
+ if(ispoint(pt),
+ tmp=pt.xy
+ ,
+ tmp=pt;
+ );
+ tmp=[tmp_1/SCALEX,tmp_2/SCALEY];
+ tmp;
+);
+
+Doscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Unscaling(pltdata):=(
+ regional(Level,Out,gL,gr,tmp);
+ if(ispoint(pltdata) % isreal(pltdata_1),
+ gL=[[pltdata]];
+ Level=0;
+ ,
+ if(ispoint(pltdata_1) % isreal(pltdata_1_1),
+ gL=[pltdata];
+ Level=1;
+ ,
+ gL=pltdata;
+ Level=2;
+ );
+ );
+ Out=[];
+ forall(gL,gr,
+ tmp=apply(gr,Lcrd(#));
+ tmp=apply(tmp,LLcrd(#));
+ Out=concat(Out,[tmp]);
+ );
+ if(Level==0,
+ Out=Out_1_1;
+ );
+ if(Level==1,
+ Out=Out_1;
+ );
+ Out;
+);
+
+Setpt(n):=Ptsize(n);
+//help:Setpt(5);
+Ptsize(n):=(
+ println("Setpt("+text(n)+")");
+ TenSize=TenSizeInit*n;
+ Com2nd("Setpt("+text(n)+")"); // 14.01.19
+);
+
+Definecolor(name,data):=(
+//help:Definecolor("mycolor",[1,1,1,0]);
+ regional(type,tmp);
+ if(length(data)>3,type="cmyk",type="rgb");
+ tmp=text(data);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="\definecolor{"+name+"}{"+type+"}{"+tmp+"}";
+ Texcom(tmp);
+);
+
+Setcolor(Par):=(
+//help:Setcolor([1,0,0,1]);
+//help:Setcolor([1,1,0]);
+ if(islist(Par),
+ if(length(Par)==3,
+ Setcolorrgb(Par); // 2015.04.28
+// KCOLOR=Par;
+ );
+ if(length(Par)==4,
+ Setcolor(Par,[]);
+ );
+ ,
+ Setcolor(Par,[]);
+ );
+);
+
+Setcolor(colorname,options):=(
+//help:Setcolor("greenyellow",0.3);
+ regional(tmp);
+ if(isstring(colorname),
+ tmp="Setcolor("+Dq+colorname+Dq;
+ if(length(options)>0,
+ tmp=tmp+","+text(options_1);
+ );
+ Com2nd(tmp+")");
+ );
+ if(islist(colorname),
+ tmp=text(colorname);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[cmyk]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+ );
+);
+
+Setcolorrgb(colorlist):=(
+// help:Setcolorrgb([0.5,0.3,0.4]);
+ regional(tmp);
+ tmp=text(colorlist);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp="Texcom("+Dq+"\color[rgb]{"+tmp+"}"+Dq+")";
+ Com2nd(tmp);
+);
+
+ColorRgb2Cmyk(clr):=(
+// help:ColorRgb([0.2,0.5,0.1]);
+ regional(clrnew,tmp,black);
+ tmp=apply(clr,1-#);
+ black=min(tmp);
+ tmp=apply(clr,(1-#-black)/(1-black));
+ clrnew=append(tmp,black);
+ clrnew;
+);
+
+ColorCmyk2Rgb(clr):=(
+// help:ColorRgb([0.2,0.5,0.1,0.2]);
+ regional(clrnew,tmp,black);
+ black=clr_4;
+ tmp=apply(clr,1-min(1,#*(1-black)+black));
+ clrnew=tmp_(1..3);
+ clrnew;
+);
+
+Colorrgbhsv(rgb):=(
+ regional(varR,varG,varB,varMin,varMax,delMax,hh,ss,vv,delR,delG,delB);
+ varR = rgb_1;
+ varG = rgb_2;
+ varB = rgb_3;
+ varMin = min( [varR, varG, varB] );
+ varMax = max( [varR, varG, varB] );
+ delMax = varMax - varMin ;
+ vv = varMax;
+ if ( delMax == 0 ,
+ hh = 0 ;
+ ss = 0 ;
+ ,
+ ss = delMax / varMax;
+ delR = ( ( ( varMax - varR ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delG = ( ( ( varMax - varG ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ delB = ( ( ( varMax - varB ) / 6 ) + ( delMax / 2 ) ) / delMax;
+ if( varR == varMax ,
+ hh = delB - delG;
+ ,
+ if ( varG == varMax,
+ hh = ( 1 / 3 ) + delR - delB;
+ ,
+ if ( varB == varMax ,
+ hh = ( 2 / 3 ) + delG - delR;
+ );
+ );
+ );
+ if ( hh < 0 ,hh = hh+1);
+ if ( hh > 1 ,hh = hh-1);
+ );
+ [hh*360,ss,vv];
+);
+
+Colorhsvrgb(sL):=(
+ regional(tmp,tmp1,tmp2,tmp3,hi,ff,dL);
+ tmp=[sL_1/60,sL_2,sL_3];
+ hi=mod(floor(tmp_1),6);
+ ff=tmp_1-floor(tmp_1);
+ tmp2=tmp_3*[1-tmp_2,1-tmp_2*ff,1-tmp_2*(1-ff)];
+ tmp2=append(tmp2,tmp_3);
+ if(hi==0,dL=tmp2_[4,3,1]);
+ if(hi==1,dL=tmp2_[2,4,1]);
+ if(hi==2,dL=tmp2_[1,4,3]);
+ if(hi==3,dL=tmp2_[1,2,4]);
+ if(hi==4,dL=tmp2_[3,1,4]);
+ if(hi==5,dL=tmp2_[4,1,2]);
+ dL;
+);
+
+Colorrgbhsl(rgb):=(
+ regional(rr,gg,bb,mn,mx,delta,deltaR,deltaG,deltaB,hh,ss,ll);
+ rr = rgb_1 ;
+ gg = rgb_2 ;
+ bb = rgb_3 ;
+ mn = min([rr, gg, bb]);
+ mx = max([rr, gg, bb]);
+ delta = mx - mn;
+ ll = (mx + mn) / 2;
+ if (delta == 0,
+ hh=0;
+ ss=0;
+ ,
+ if (ll < 0.5,
+ ss = delta/ (mx + mn);
+ ,
+ ss = delta / (2 - mx - mn);
+ );
+ deltaR = (((mx - rr) / 6) + (delta / 2)) / delta;
+ deltaG = (((mx - gg) / 6) + (delta / 2)) / delta;
+ deltaB = (((mx - bb) / 6) + (delta / 2)) / delta;
+ if (rr == mx,
+ hh = deltaB - deltaG;
+ ,
+ if (gg == mx,
+ hh = (1 / 3) + deltaR - deltaB;
+ ,
+ if (bb == mx,
+ hh = (2 / 3) + deltaG - deltaR;
+ );
+ );
+ );
+ if ( hh < 0, hh = hh+1);
+ if ( hh > 1, hh = hh-1);
+ );
+ [hh*360,ss,ll];
+);
+
+Colorhslrgb(hsl):=(
+ regional(hh,ss,ll,rr,gg,bb,var1,var2);
+ hh=hsl_1/360;
+ ss=hsl_2;
+ ll=hsl_3;
+ if ( ss == 0.0,
+ rr = ll ;
+ gg = ll ;
+ bb = ll ;
+ ,
+ if ( ll < 0.5 ,
+ var2 = ll * ( 1.0 + ss );
+ ,
+ var2 = ( ll + ss ) - ( ss * ll );
+ );
+ var1 = 2.0 * ll - var2;
+ rr = hue2rgb( var1, var2, hh + ( 1.0 / 3.0 ) );
+ gg = hue2rgb( var1, var2, hh );
+ bb = hue2rgb( var1, var2, hh - ( 1.0 / 3.0 ) );
+ );
+ [rr,gg,bb];
+);
+
+hue2rgb(vv1,vv2,vh):=(
+ regional(out);
+ if ( vh < 0.0 ,vh =vh+1);
+ if ( vh > 1.0 ,vh =vh-1);
+ if ( 6.0*vh < 1.0 ,
+ out = vv1 + ( vv2 - vv1 ) * 6.0 * vh ;
+ ,
+ if( 2.0*vh < 1.0 ,
+ out = vv2;
+ ,
+ if ( 3.0*vh < 2.0 ,
+ out = vv1 + ( vv2 - vv1 ) * ( ( 2.0 / 3.0 ) - vh ) * 6.0 ;
+ ,
+ out= vv1 ;
+ );
+ );
+ );
+ out;
+);
+
+Colorrgbhwb(sL):=(
+ regional(dl1,dl2,dl3);
+ dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1;
+ dl2 = min(sL);
+ dl3 = 1 - max(sL);
+ dL= [dl1, dl2 , dl3 ];
+);
+
+Colorhwbrgb(sLorg):=(
+ regional(sL,tmp,tmp1,tmp2,tmp3,ratio,ff,ii,vv,nn,dL,flg);
+ sL=sLorg;
+ sL=[sL_1/360,sL_2,sL_3];
+ ratio = sL_2 + sL_3;
+ // sL_2 + sL_3 cant be > 1
+ if (ratio > 1.,
+ sL_2 =sL_2 / ratio;
+ sL_3 = sL_3 / ratio;
+ );
+ ii = floor(6 * sL_1);
+ vv = 1 - sL_3;
+ ff = 6 * sL_1 - ii;
+ if(mod(ii,2)==1,ff = 1 - ff);
+ nn = sL_2 + ff * (vv - sL_2); // linear interpolation
+ tmp=[[vv,nn,sL_2],[nn,vv,sL_2],[sL_2,vv,nn],
+ [sL_2,nn,vv],[nn,sL_2,vv],[vv,sL_2,nn],[vv,nn,sL_2]];
+ flg=0;
+ forall(0..6,
+ if(flg==0 & ii == # ,
+ dL=tmp_(#+1);
+ flg=1;
+ );
+ );
+ dL;
+);
+
+Colorhslhsv(sL):=(
+ regional(dl1,dl2,dl3,dL);
+ dl1=sL_1;
+ if(sL_3 == 0,
+ // no need to do calc on black
+ // also avoids divide by 0 error
+ dL= [0, 0, 0];
+ ,
+ sL_3 = sL_3 * 2;
+ if(sL_3 <= 1,sL_2 = sL_2 * sL_3,sL_2 = sL_2 * (2 - sL_3));
+ dl3 = (sL_3 + sL_2) / 2;
+ dl2 = (2 * sL_2) / (sL_3 + sL_2);
+ dL = [dl1, dl2, dl3];
+ );
+ dL;
+);
+
+Colorcode(src,dest,sL):=(
+//help:Colorcode("rgb","cmyk",[1,0.5,0]);
+ regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg);
+ regional(dl1,dl2,dl3);
+ if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL));
+ if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL));
+ if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL));
+ if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL));
+ if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL));
+ if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL));
+ if(src=="hsl" & dest=="hsv", dL=Colorhslhsv(sL));
+ if(src=="hsv" & dest=="hsl",
+ dl1 = sL_1;
+ dl3 = (2 - sL_2) * sL_3;
+ dl2 = sL_2 * sL_3;
+ if(dl3 <= 1,dl2 = dl2/dl3,dl2=dl2/(2 - dl3));
+ dl3 =d l3/ 2;
+ dL = [dl1, dl2 , dl3 ];
+ );
+
+ if(src=="rgb" & dest=="cmyk",
+ tmp=apply(sL,1-#);
+ black=min(tmp);
+ tmp=apply(sL,(1-#-black)/(1-black));
+ dL=append(tmp,black);
+ );
+ if(src=="cmyk" & dest=="rgb",
+ black=sL_4;
+ tmp=apply(sL,1-min(1,#*(1-black)+black));
+ dL=tmp_(1..3);
+ );
+ if(src=="hsv" & dest=="cmyk",
+ tmp=Colorcode("hsv","rgb",sL);
+ dL=Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsv",
+ tmp=Colorcode("cmyk","rgb",sL);
+ dL=Colorcode("rgb","hsv",tmp);
+ );
+
+ if(src=="hsv" & dest=="hwb",
+ tmp = Colorcode("hsv","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsv",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsv",tmp);
+ );
+ if(src=="hsl" & dest=="hwb",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hwb" & dest=="hsl",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="hsl" & dest=="cmyk",
+ tmp = Colorcode("hsl","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="hwb" & dest=="cmyk",
+ tmp = Colorcode("hwb","rgb",sL);
+ dL = Colorcode("rgb","cmyk",tmp);
+ );
+ if(src=="cmyk" & dest=="hsl",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hsl",tmp);
+ );
+ if(src=="cmyk" & dest=="hwb",
+ tmp = Colorcode("cmyk","rgb",sL);
+ dL = Colorcode("rgb","hwb",tmp);
+ );
+ if(src=="hsb" & dest=="rgb",dL=Colorcode("hsv","rgb",sL));
+ if(src=="rgb" & dest=="hsb",dL=Colorcode("rgb","hsv",sL));
+
+ if(src=="hsb" & dest=="hsl",dL=Colorcode("hsv","hsl",sL));
+ if(src=="hsl" & dest=="hsb",dL=Colorcode("hsl","hsv",sL));
+
+ if(src=="hsb" & dest=="hwb",dL=Colorcode("hsv","hwb",sL));
+ if(src=="hwb" & dest=="hsb",dL=Colorcode("hwb","hsv",sL));
+
+ if(src=="hsb" & dest=="cmyk",dL=Colorcode("hsv","cmyk",sL));
+ if(src=="cmyk" & dest=="hsb",dL=Colorcode("cmyk","hsv",sL));
+
+ dL;
+);
+
+Addcolor(cmdorg,list):=(
+//help:Addcolor("Plotdata('1','x^2','x',[])",[1,1,0]);
+ regional(rgb,cmyk,cmd,tmp,tmp1,tmp2,tmp3,tmp4);
+ cmd=replace(cmdorg,"'",Dq);
+ if(length(list)==3,
+ rgb=list;
+ cmyk=Colorcode("rgb","cmyk",list);
+ ,
+ cmyk=list;
+ rgb=Colorcode("cmyk","rgb",list);
+ );
+ tmp1="color->"+text(rgb);
+ tmp2="Setcolor("+text(cmyk)+");";
+ tmp3=substring(cmd,0,length(cmd)-2);
+ tmp=substring(tmp3,length(tmp3)-1,length(tmp3));
+ if(tmp!="[",
+ tmp3=tmp3+",";
+ );
+ tmp3=tmp3+Dq+tmp1+Dq+"])";
+ parse(tmp2);
+ parse(tmp3);
+ Setcolor("black");
+);
+
+Colorinfile(filename,clrf,clrt):=(
+ regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body);
+ if(length(clrf_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrf,text(#));
+ cstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ if(length(clrt_1)==3,
+ head="[rgb]{";
+ ,
+ head="[cmyk]{";
+ );
+ tmp=apply(clrt,text(#));
+ chstrL=apply(tmp,head+substring(#,1,length(#)-1)+"}");
+ tmp1=load(filename);
+ tmp=tokenize(tmp1,"{\unitlength");
+ head=tokenize(tmp_1,"%%%");
+ head=head_(2..(length(head)));
+ head=apply(head,"%%%"+#);
+ tmp2=tmp_2;
+ forall(1..5,
+ tmp2=replace(tmp2,cstrL_#,chstrL_#);
+ );
+ body=tokenize(tmp2,"%");
+ body_1="{\unitlength"+body_1;
+ body=apply(body,#+"%");
+ body=body_(1..(length(body)-1));
+ tmp=replace(filename,".tex","new.tex");
+ SCEOUT=openfile(tmp);
+ forall(head,
+ println(SCEOUT,#);
+ );
+ forall(1..(length(body)),
+ tmp=body_#;
+ if(#<length(body),
+ println(SCEOUT,tmp);
+ ,
+ print(SCEOUT,tmp)
+ );
+ );
+ closefile(SCEOUT);
+);
+
+GetLinestyle(str,name):=(
+ regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg);
+ Ltype=-1;
+ Dop="";
+ tmp1=indexof(str,",");
+ if(tmp1>0,
+ Dop=","+substring(str,tmp1,length(str));
+ );
+ noflg=parse(substring(str,0,1));
+ if(substring(name,0,3)=="sub",subflg=1,subflg=0); // 16.02.29
+ tmp1=substring(str,1,3);
+ if(tmp1=="dr" % tmp1=="Dr",
+ Ltype=0;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Drwline(name+Dop);
+ );
+ );
+ if(tmp1=="da" % tmp1=="Da",
+ Ltype=1;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dashline(name+Dop);
+ );
+ );
+ if(tmp1=="id" % tmp1=="Id",
+ Ltype=2; // 15.11.09
+ if(noflg==0 & subflg==0, // 16.02.29
+ Invdashline(name+Dop);
+ );
+ );
+ if(tmp1=="do" % tmp1=="Do",
+ Ltype=3;
+ if(noflg==0 & subflg==0, // 16.02.29
+ Dottedline(name+Dop);
+ );
+ );
+ if(tmp1=="dp" % tmp1=="Dp",
+ Ltype=0;
+ tmp1=parse(name);
+ tmp2="";
+ forall(tmp1,
+ tmp2=tmp2+textformat(#_1,5)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ if(noflg==0,
+ Drwpt(tmp2+Dop);
+ );
+ );
+ if(tmp1=="no" % tmp1=="No",
+ Ltype=10;
+ );
+ Ltype;
+);
+
+Chunderscore(str):=(
+ regional(flg,tmp,tmp1,tmp2,tmp3);
+ if(indexof(str,"]")>0,
+ tmp1=replace(str,"]",",]");
+ ,
+ tmp1=str+",";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..(length(tmp1)),
+ if(flg==0,
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=substring(tmp1,tmp3,length(tmp1));
+ tmp=indexof(tmp,",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ if(indexof(str,"]")>0,
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,"[","list(");
+ ,
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ );
+ tmp1;
+);
+
+//AddGraph(pltdata):=AddGraph("-"+pltdata,pltdata,[]);
+AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]);
+// if(isstring(Arg2),
+// AddGraph(Arg1,Arg2,[]);
+// ,
+// if(MeasureDepth(Arg2)>0,
+// Addgraph(Arg1,Arg2,[]);
+// ,
+// Addgraph("-"+Arg1,Arg1,Arg2);
+// );
+// );
+//);
+AddGraph(nm,pltdata,options):=(
+//help:AddGraph("1","imp1"); // 16.04.04
+//help:Addgraph("1",["[pt1]","gr1"],["nodisp"]);
+ regional(name,Ltype,Noflg,opcindy,pdata,fname,flg,
+ tmp,tmp1,tmp2,tmp3);
+ if(substring(nm,0,1)=="-",
+ name=substring(nm,1,length(nm));
+ ,
+ name="ad"+nm;
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_9;
+ if(isstring(pltdata),
+ pdata=parse(pltdata)
+ ,
+ if(!islist(pltdata),pdata=[pltdata],pdata=pltdata);
+ pdata=apply(pdata,parse(#));
+ ); // 15.01.22
+ pdata=Flattenlist(pdata);
+ tmp1=[];
+ forall(pdata,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ pdata=tmp1;
+ if(Noflg<3,
+ println("generate addgraph "+name);
+ tmp=name+"="+textformat(pdata,5);
+ parse(tmp);
+ if(isstring(pltdata), // 16.04.04 from
+ if(indexof(pltdata,"]")>0,
+ tmp1="list(Listplot("+substring(pltdata,1,length(pltdata));
+ tmp1=replace(tmp1,"]",",]");
+ ,
+ tmp1="Listplot("+substring(pltdata,0,length(pltdata))+",]";
+ );
+ flg=0;
+ tmp2=[];
+ tmp3=0;
+ forall(1..(length(tmp1)),
+ if(flg==0,
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),"_");
+ if(tmp==0,
+ flg=1;
+ ,
+ tmp3=tmp3+tmp;
+ tmp=indexof(substring(tmp1,tmp3,length(tmp1)),",")-1;
+ tmp=substring(tmp1,tmp3,tmp3+tmp);
+ tmp2=append(tmp2,tmp);
+ );
+ );
+ );
+ forall(tmp2,
+ tmp1=replace(tmp1,"_"+#,"("+#+")");
+ );
+ tmp1=replace(tmp1,",]",")");
+ tmp1=replace(tmp1,",","),Listplot(");
+ if(indexof(pltdata,"[")>0,
+ tmp1=tmp1+")";
+ );
+ GLIST=append(GLIST,name+"="+tmp1);
+ ,
+ if(MeasureDepth(pdata)==1,
+ tmp1=name+"=Listplot("+textformat(pdata,5)+")";
+ ,
+ tmp1="list(";
+ forall(1..(length(pdata)),
+ tmp=name+"p"+textformat(#,5)+"=";
+ if(length(pdata_#)>1, // 15.01.22
+ tmp=tmp+"Listplot("+textformat(pdata_#,5)+")";
+ ,
+ tmp=tmp+"Pointdata("+textformat(pdata_#_1,5)+")";
+ );
+ GLIST=append(GLIST,tmp);
+ tmp1=tmp1+name+"p"+textformat(#,5)+",";
+ );
+ tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+")";
+ );
+ GLIST=append(GLIST,tmp1);
+ );
+ ); // 16.04.04 upto
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Joincrvs(nm,plotstrL):=Joincrvs(nm,plotstrL,[]);
+Joincrvs(nm,plotstrL,options):=(
+//help:Joincrvs("1",["sgAB","sgDCB"]);
+ regional(plotlist,PtL,Eps,QdL,Flg,Ni,Qd,pP,pS,pQ,pR,rMN,
+ opcindy,tmp,tmp1,tmp2,str,name,Ltype,Noflg);
+ name="join"+nm;
+ plotlist=[];
+ forall(plotstrL,str,
+ if(isstring(str),
+ tmp=parse(str);
+ tmp=apply(tmp,LLcrd(#));
+ ,
+ tmp=str;
+ );
+ plotlist=append(plotlist,tmp);
+ );
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Eps=tmp1_1);
+ QdL=[];
+ forall(plotlist,Qd,
+ if(ispoint(Qd_1) % !islist(Qd_1_1),
+ QdL=concat(QdL,[Qd]);
+ ,
+ forall(Qd,
+ QdL=concat(QdL,[#]);
+ );
+ );
+ );
+ Flg=0;
+ if(length(QdL)==0,
+ PtL=[];
+ Flg=1;
+ );
+ if(Flg==0,
+ PtL=QdL_1;
+ forall(2..(length(QdL)),Ni,
+ Qd=QdL_Ni;
+ if(Numptcrv(Qd)>1,
+ pP=Ptend(PtL);
+ pS=Ptstart(PtL);
+ pQ=Ptstart(Qd);
+ pR=Ptend(Qd);
+ rMN=min([|pP-pQ|,|pP-pR|,|pS-pQ|,|pS-pR|]);
+ if(rMN==|pP-pR|,
+ Qd=reverse(Qd);
+ ,
+ if(rMN==|pS-pQ|,
+ PtL=reverse(PtL);
+ ,
+ if(rMN==|pS-pR|,
+ PtL=reverse(PtL);
+ Qd=reverse(Qd);
+ );
+ );
+ );
+ );
+ if(rMN>Eps,
+ PtL=concat(PtL,Qd);
+ ,
+ PtL=concat(PtL,Qd_(2..(length(Qd))));
+ );
+ );
+ );
+ if(Noflg<3,
+ println("generate joincurve "+name);
+ tmp1=apply(PtL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1="";
+ forall(plotstrL,
+ tmp1=tmp1+#+",";
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1);
+ GLIST=append(GLIST,name+"=Joincrvs("+tmp1+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PtL;
+);
+
+Partcrv(nm,pA,pB,PkLstr):=Partcrv(nm,pA,pB,PkLstr,[]);
+Partcrv(nm,pA,pB,PkLstr,options):=(
+//help:Partcrv("1",A,B,"sgABC");
+//help:Partcrv("1",1.3,2.5,"sgABC");
+ regional(PkL,Ans,Eps,Npt,Out1,Out2,tmp,tmp1,Flg,nS,nE,PPL,pP,
+ opcindy,Ta,Tb,name,Ltype,Noflg,DepthFlg);
+ name="part"+nm;
+ if(isstring(PkLstr),PkL=parse(PkLstr),PkL=PkLstr);
+ DepthFlg=0;
+ if(MeasureDepth(PkL)==2,
+ PkL=PkL_1;
+ DepthFlg=1;
+ );
+ PkL=apply(PkL,LLcrd(#));
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-3);
+ Flg=0;
+ if(isreal(pA),
+ if(pA>pB+Eps,
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv("",pA,Npt,PkLstr,["nodata"]);
+ Out2=Partcrv("",1,pB,PkLstr,["nodata"]);
+ tmp=Ptstart(PkL)-Ptend(PkL);
+ if(|tmp|<Eps,
+ Ans=Joincrvs("",[Out1,Out2],["nodata"]);
+ ,
+ Ans=[apply(Out1,Pcrd(#)),apply(Out2,Pcrd(#))];
+ );
+ Flg=1;
+ );
+ if(Flg==0,
+ nS=ceil(pA);
+ nE=floor(pB);
+ PPL=[];
+ if(pA<nS-Eps,
+ pP=(nS-pA)*PkL_(nS-1)+(1-nS+pA)*PkL_nS;
+ PPL=[pP];
+ );
+ PPL=concat(PPL,PkL_(nS..nE));
+ if(pB>nE+Eps,
+ pP=(1-pB+nE)*PkL_nE+(pB-nE)*PkL_(nE+1);
+ PPL=concat(PPL,[pP]);
+ );
+ Ans=PPL;
+ Flg=1;
+ );
+ );
+ if(Flg==0,
+ tmp=Nearestpt(LLcrd(Pcrd(pA)),PkL);
+ Ta=tmp_2;
+ tmp=Nearestpt(LLcrd(Pcrd(pB)),PkL); // 15.09.12
+ Tb=tmp_2;
+ Ans=Partcrv("",Ta,Tb,PkL,["nodata"] );
+ Ans=apply(Ans,Pcrd(#));
+ );
+ if(Noflg<3,
+ println("generate partcrv "+name);
+ tmp1=apply(Ans,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST, // 16.04.03
+ if(DepthFlg==0,
+ tmp=PkLstr;
+ ,
+ tmp=PkLstr+"(1)";
+ );
+ tmp1=name+"=Partcrv("+textformat(Lcrd(pA),5)
+ +","+textformat(Lcrd(pB),5)+","+tmp+")"; // 16.04.03
+ GLIST=append(GLIST,tmp1);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Ans;
+);
+
+Opcrvs(num,Fig):=Opcrvs(num,Fig,["nodisp"]);
+Opcrvs(num,Fig,options):=(
+ //help:Subgraph(2,"grfs");
+ regional(name,tmp,tmp1);
+ name="-"+Fig+text(num);
+ tmp=Fig+"_"+text(num);
+ tmp1=parse(tmp);
+ Listplot(name,tmp1,options);
+);
+
+
+Pointdata(nm,list):=Pointdata(nm,list,[]);
+Pointdata(nm,list,options):=(
+//help:Pointdata("1",[2,4],["Size=5"]);
+//help:Pointdata("2",[[2,3],[4,1]]);
+ regional(name,nameL,ptlist,opstr,opcindy,
+ eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="pt"+nm;
+ nameL=name+"L";
+ println("generate pointdata "+name);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ size="";
+ eqL=tmp_5;
+ if(length(eqL)>0,
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="s" % tmp=="S",
+ tmp=indexof(#,"=");
+ size=substring(#,tmp,length(#));
+ );
+ );
+ );
+ tmp=MeasureDepth(list);
+ if(tmp>0, // 2015.02.21
+ if(tmp==1,ptlist=list,ptlist=list_1);
+ tmp=apply(ptlist,[textformat(Pcrd(#),5)]);
+ tmp1=text(tmp);
+ tmp2=substring(tmp1,1,length(tmp1)-1);
+ tmp3=tmp1;
+ ,
+ ptlist=list;
+ tmp1=textformat(Pcrd(ptlist),5);
+ tmp2=tmp1;
+ tmp3="["+tmp1+"]";
+ );
+ tmp=name+"="+tmp1;
+ parse(tmp);
+ tmp=nameL+"="+tmp3;
+ parse(tmp);
+ if(Noflg<3,
+ GLIST=append(GLIST,name+"=Pointdata("+tmp2+")");
+ );
+ if(Noflg<2,
+ tmp=[nameL,0,opcindy];
+ GCLIST=append(GCLIST,tmp);
+ if(Noflg==0,
+ if(length(size)>0,
+ Com2nd("Setpt("+size+")");
+ );
+ thick=PenThick/PenThickInit; // 16.04.09 from
+ if(length(size)>0,tmp1=parse(size),tmp1=1);
+ tmp1=max(tmp1,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ Com2nd("Drwpt(list("+name+")"+opstr+")");
+ Setpen(thick); // 16.04.09
+ if(length(size)>0,
+ Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")");
+ );
+ );
+ );
+ ptlist;
+);
+
+Listplot(nm,list,options):=(
+//help:Listplot([A,B]);
+// help:Listplot(["A","B"]);
+//help:Listplot("1",[[2,1],[3,3]]);
+//help:Listplot(options2=["Msg=yes"]);
+ regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg);
+ if(substring(nm,0,1)=="-", // 16.01.27 from
+ name=substring(nm,1,length(nm));
+ ,
+ name="sg"+nm;
+ ); // upto
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp));
+ Msg=1; // 15.09.17
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(Toupper(tmp)=="M",
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,tmp+1); // 16.06.28
+ if(Toupper(tmp1)=="N", // 16.06.28
+ Msg=0;
+ );
+ );
+ );
+ if(Noflg<3,
+ if(Msg==1,
+ println("generate Listplot "+name);
+ );
+ if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24
+ ptlist=apply(tmp,Pcrd(#));
+ tmp=name+"="+textformat(ptlist,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp1=apply(list,Lcrd(#));
+ tmp1;
+);
+Listplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Listplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Listplot(name,list,options);
+ );
+);
+Listplot(list):=Listplot(list,[]);
+
+Lineplot(nm,list,options):=(
+//help:Lineplot([A,B]);
+//help:Lineplot("1",[[2,1],[3,3]]);
+ regional(name,Out,tmp,tmp1,opstr,opcindy,Mag,Semi,
+ Vec,pA,pB,Ltype,Noflg);
+ name="ln"+nm;
+ Mag=100;
+ Semi="";
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Mag=tmp1_1);
+ tmp1=tmp_7;
+ if(length(tmp1)>0,Semi=tmp1_1);
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ Vec= Mag/dist(pA,pB)*(pB-pA);
+ if(length(Semi)==0,
+ Out=[pA-Vec,pA+Vec];
+ ,
+ if(Semi=="+",
+ Out=[pA,pA+Vec];
+ ,
+ Out=[pA-Vec,pA];
+ );
+ );
+ if(Noflg<3,
+ println("generate Lineplot "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Lineplot("+textformat(list,5)+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Lineplot(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Lineplot(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";
+ forall(list, // 16.10.07from
+ name=name+#.name;
+ );// 16.10.07upto
+ Lineplot(name,list,options);
+ );
+);
+Lineplot(list):=Lineplot(list,[]);
+
+Plotdata(name1,func,variable):=Plotdata(name1,func,variable,[]);
+Plotdata(name1,func,variable,options):=(
+//help:Plotdata("1","sin(x)","x",["Num=100"]);
+//help:Plotdata("2","x^2","x=[-1,1]");
+//help:Plotdata("3","Fout(x)","x",["out"]);
+ regional(Fn,Va,tmp,tmp1,tmp2,eqL,name,Vname,x1,x2,dx,
+ PdL,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gr"+name1;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ Eps=10^(-3);
+ tmp=replace(func,LFmark,"");
+ tmp=tokenize(variable,"=");
+ Vname=tmp_1;
+ if(length(tmp)>1,
+ tmp=tmp_2;
+ tmp=parse(tmp);
+ x1=tmp_1;
+ x2=tmp_2;
+ ,
+ x1=XMIN;
+ x2=XMAX;
+ );
+ // dx=(x2-x2)/Num;
+ Ec=append(sort(Ec),10000);
+ Fun=Assign(func,Vname, "xx");
+ Exfun=Assign(Exfun,Vname, "xx");
+ PdL=[];
+ Ke=1;
+ forall(0..Num,
+ xx=x1+#*(x2-x1)/Num; // differs from Scilab ( / Num-1)
+ if(length(Exfun)>0,
+ tmp=parse(Exfun);
+ if(abs(tmp)<Eps,
+ if(length(Pdt)>0,
+ PdL=concat(PdL,["inf"]);
+ );
+ );
+ ,
+ Pa=[];
+ if(xx-Ec_Ke<-Eps,
+ Pa=[xx,parse(Fun)];
+ );
+ if(abs(xx-Ec_Ke)<=Eps,
+ if(length(PdL)>0,
+ if(PdL_(length(PdL))_1!="inf",
+ Pa=["inf"];
+ );
+ );
+ );
+ if(xx-Ec_Ke>Eps,
+ Pa=[xx,parse(Fun)];
+ Ke=Ke+1;
+ );
+ if(length(Pa)>0,
+ if(Pa_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(length(PdL)==0,
+ PdL=[Pa];
+ ,
+ tmp=PdL_(length(PdL));
+ if(tmp_1=="inf",
+ PdL=concat(PdL,[Pa]);
+ ,
+ if(dist(tmp,Pa)<Dc,
+ PdL=concat(PdL,[Pa]);
+ ,
+ PdL=concat(PdL,[["inf"],Pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..(length(PdL)),PdL_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[PdL_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(PdL),
+ tmp1=concat(tmp1,[PdL_(tmp..(length(PdL)))]);
+ );
+ PdL=tmp1;
+ if(length(PdL)==1,
+ PdL=PdL_1;
+ );
+ if(Noflg<3,
+ println("generate Plotdata "+name);
+ if(MeasureDepth(PdL)==1,
+ tmp1=apply(PdL,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(func,LFmark,"");
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Plotdata "+name);
+ tmp=name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Plotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Plotdata('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Paramplot(name1,funstr,variable):=Paramplot(name1,funstr,variable,[]);
+Paramplot(name1,funstr,variable,options):=(
+//help:Paramplot("1","[2*cos(t),sin(t)]","t=[0,2*pi]");
+ regional(name,Out,tmp,tmp1,tmp2,vname,func,str,Rng,Num,
+ Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke,
+ Ltype,Noflg,Inflg,Outflg,opstr,opcindy);
+ name="gp"+name1;
+ Eps=10^(-4);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Ec=[];
+ Exfun="";
+ Dc=1000;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="E",
+ if(substring(tmp1,0,1)=="[",
+ Ec=parse(tmp1);
+ ,
+ Exfun=tmp1;
+ );
+ );
+ if(substring(#,0,1)=="D",
+ Dc=parse(tmp1);
+ );
+ );
+ if(Inflg==0 & Outflg==0,
+ tmp=indexof(variable,"=");
+ vname=substring(variable,0,tmp-1);
+ str=substring(variable,tmp,length(variable));
+ Rng=parse(str);
+ t1=Rng_1; t2=Rng_2;
+ dt=(t2-t1)/Num;// differs from Scilab ( / Num-1)
+ func=Assign(funstr,vname,"tt");
+ Out=[];
+ Ec=append(sort(Ec),10000);
+ ke=1;
+ forall(0..Num,
+ pt=[];
+ tt=Rng_1+#*dt;
+ if(tt-Ec_ke<-Eps,
+ pa=parse(func);
+ );
+ if(abs(tt-Ec_ke)<=Eps,
+ if(length(Out)>0,
+ if(Out_(length(Out))_1!="inf",
+ pa=["inf"];
+ );
+ );
+ );
+ if(tt-Ec_ke>Eps,
+ pa=parse(func);
+ ke=ke+1;
+ );
+ if(length(pa)>0,
+ if(pa_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(length(Out)==0,
+ Out=[pa];
+ ,
+ tmp=Out_(length(Out));
+ if(tmp_1=="inf",
+ Out=append(Out,pa);
+ ,
+ if(|tmp-pa|<Dc,
+ Out=append(Out,pa);
+ ,
+ Out=concat(Out,[["inf"],pa]);
+ );
+ );
+ );
+ );
+ );
+ );
+ tmp1=[];
+ tmp2=select(1..(length(Out)),Out_#==["inf"]);
+ tmp=1;
+ forall(tmp2,
+ if(#>tmp,
+ tmp1=concat(tmp1,[Out_(tmp..(#-1))])
+ );
+ tmp=#+1;
+ );
+ if(tmp<length(Out),
+ tmp1=concat(tmp1,[Out_(tmp..(length(Out)))]);
+ );
+ Out=tmp1;
+ if(length(Out)==1,
+ Out=Out_1;
+ );
+ if(Noflg<3,
+ println("generate Paramplot "+name);
+ if(MeasureDepth(Out)==1,
+ tmp1=apply(Out,Pcrd(#));
+ ,
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp1=append(tmp1,apply(tmp2,Pcrd(#)));
+ );
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=replace(funstr,LFmark,""); // 15.11.13
+ tmp2=replace(variable,LFmark,"");
+ tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+ ,
+ // Inflg or Outflg >0 15.05.15
+ if(Noflg<3,
+ if(Outflg==1,
+ println("Output Paramplot "+name);
+ tmp=name+"=Paramplot('"+funstr+"','"+variable+"'"+opstr+")";
+ GLIST=append(GLIST,tmp);
+ SCIWRLIST=append(SCIWRLIST,name);
+ if(Inflg==0,Inflg=1); // 15.05.17
+ );
+ if(Inflg==1,
+ println("Input Paramplotdata "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ tmp="// "+name+"=Paramplot('"+func+"','"+variable+"'"+opstr+")";
+ Com1st(tmp);
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ );
+);
+
+Circledata(cenrad):=Circledata(cenrad,[]);
+Circledata(para1,para2):=(
+//help:Circledata([A,B],["Rng=[0,pi/2]"]);
+//help:Circledata([A,B,C]);
+ regional(name,cenrad,options,str,n);
+ if(isstring(para1),
+ name=para1;
+ cenrad=para2;
+ options=[];
+ ,
+ cenrad=para1;
+ options=para2;
+ name="";// 16.10.07from
+ forall(cenrad,
+ name=name+#.name;
+ );// 16.10.07upto
+ );
+ Circledata(name,cenrad,options);
+);
+Circledata(nm,cenrad,options):=(
+ regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,
+ tmp,tmp1,tmp1,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps);
+ name="cr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ Num=50;
+ Rg=[0,2*pi];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+#+"'";
+ if(substring(#,0,1)=="N",
+ Num=parse(tmp1);
+ );
+ if(substring(#,0,1)=="R",
+ Rg=parse(tmp1);
+ );
+ );
+ if(length(cenrad)==2,
+ Ctr=Lcrd(cenrad_1);
+ Ptcir=Lcrd(cenrad_2);
+ ra=dist(Ctr,Ptcir);
+ ,
+ Eps=10^(-1);
+ pA=Lcrd(cenrad_1);
+ pB=Lcrd(cenrad_2);
+ pC=Lcrd(cenrad_3);
+ tmp=pB-pA;
+ tmp1=(tmp_2,-tmp_1);
+ tmp=pC-pB;
+ tmp2=(tmp_2,-tmp_1);
+ d1=det([tmp1,tmp2]);
+ d2=det([pC-pA,tmp2]);
+ if(abs(d1)<Eps & abs(d2)>10*Eps,
+ println("points are in a line");
+ ra=0;
+ ,
+ Ctr=1/2*(pA+pB)+1/2*d2/d1*tmp1;
+ ra=|pA-Ctr|;
+ tmp=name+"center="+Ctr;
+ parse(tmp);
+ Defvar(name+"center",Ctr);
+ );
+ );
+ if(ra>0,
+ Out=[];
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ ,
+ Out=Lineplot("1",[pA,pB],["nodata"]);
+ );
+ if(Noflg<3,
+ println("generate Circledata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ if(length(cenrad)==2,
+ tmp=name+"=Circledata("+cenrad+opstr+")";
+ ,
+ if(ra>0,
+ tmp=name+"=Circledata(["+Ctr+","+cenrad_1+"]"+opstr+")";
+ ,
+ tmp=name+"=Lineplot("+cenrad_1+","+cenrad_2+")";
+ );
+ );
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata():=Framedata(["dr"]);//16.10.29from
+Framedata(list):=(
+ regional(pA,pB);
+ if(MeasureDepth(list)==0,
+ pA=LLcrd((SW+NE)/2); // 15.09.17
+ pB=LLcrd(NE);
+ Framedata("win",[pA,pB],list);
+ ,
+ Framedata(list,[]);
+ );
+);//16.10.29upto
+Framedata(Arg1,Arg2):=(
+ regional(name,list,options,str);
+ if(isstring(Arg1),
+ name=Arg1;
+ list=Arg2;
+ Framedata(name,list,[]);
+ ,
+ list=Arg1;
+ options=Arg2;
+ name="";// 16.10.07from
+ forall(list,
+ name=name+#.name;
+ );// 16.10.07upto
+ Framedata(name,list,options);
+ );
+);
+Framedata(nm,list,options):=(
+//help:Framedata();
+//help:Framedata([C,A]);
+//help:Framedata("1",[C,A]);
+//help:Framedata("1",[C,dx,dy]);
+ regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy,
+ opcindy,Ltype,Noflg,cent,dx,dy);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ if(length(list)==2, // 15.05.12
+ pA=Lcrd(list_1); pB=Lcrd(list_2);
+ dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2);
+ ,
+ pA=Lcrd(list_1);
+ dx=list_2; dy=list_3;
+ );
+ x1=pA_1-dx; x2=pA_1+dx;
+ y1=pA_2-dy; y2=pA_2+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+Framedata(nm,cent,dx,dy):=Framedata(nm,cent,dx,dy,[]);
+Framedata(nm,cent,dx,dy,options):=(
+ regional(name,Out,tmp,tmp1,x1,y1,x2,y2,Ltype,opcindy,Noflg);
+ name="fr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ x1=cent.x-dx; x2=cent.x+dx;
+ y1=cent.y-dy; y2=cent.y+dy;
+ Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]];
+ if(Noflg<3,
+ println("generate Framedata "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,name+"=Framedata("+cent.xy+","+dx+","+dy+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+Framedata2(nm,list):=Framedata2(nm,list,[]);
+Framedata2(nm,list,options):=(
+//help:Framedata2("1",[A,B]);
+ regional(tmp,tmp1,pC,pB);
+ pC=(Lcrd(list_1)+Lcrd(list_2))/2;
+ pB=Lcrd(list_2);
+ Framedata(nm,[pC,pB],options);
+);
+
+Ovaldata(nm,Pdata):=Ovaldata(nm,Pdata,[]);
+Ovaldata(nm,Pdata,options):=(
+//help:Ovaldata("1",[A,B]);
+//help:Ovaldata(optios=[size]);
+ regional(name,Graph,Ctr,Dx,Dy,Rc,Out,Point,Graph,
+ opstr,opcindy,tmp,tmp1,tmp2,tmp3,Ltype,Noflg);
+ name="ov"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ opstr=tmp_(length(tmp)-1);
+ Rc=0.2;
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Rc=tmp1_1*Rc);
+// if(length(tmp1)>0,Rc=tmp1_1); //15.11.15
+ Ctr=Lcrd(Pdata_1);
+ if(ispoint(Pdata_2) % islist(Pdata_2),
+ tmp1=Lcrd(Pdata_2);
+ Dx=abs(tmp1_1-Ctr_1);
+ Dy=abs(tmp1_2-Ctr_2);
+ ,
+ Dx=Pdata_2;
+ Dy=Pdata_3;
+ );
+ Point=Ctr+[Dx-Rc,Dy-Rc];
+ tmp1=Circledata("1",[Point,Point+[Rc,0]],
+ ["Rng=[0,pi/2]","Num=10","nodata"]);
+ tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]],
+ ["nodata"]);
+ tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]],
+ ["nodata"]);
+ Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]);
+ tmp1=Reflectdata("1",[Graph],[Ctr,Ctr+[0,1]],["nodata"]);
+ Graph=Joincrvs("1",[Graph,tmp1],["nodata"]);
+ tmp2=Reflectdata("2",[Graph],[Ctr,Ctr+[1,0]],
+ ["nodata"]);
+ Graph=Joincrvs("2",[Graph,tmp2],["nodata"]);
+ if(Noflg<3,
+ println("generate Ovaldata "+name);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ GLIST=append(GLIST,
+ name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ tmp1=apply(Graph,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(Ctr,5)+","+textformat(Dx,5)+","+textformat(Dy,5);
+ );
+ Graph;
+);
+
+Segmark(nm,ptlist):=Segmark(nm,ptlist,[]);
+Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);
+Drawsegmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]);
+Drawsegmark(nm,ptlist,options):=(
+//help:Segmark("1",[A,B]);
+//help:Segmark(options=["Type=1","Width=1","Size=1"]);
+ regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,
+ tmp,tmp1,tmp2);
+ name="mrk"+nm;
+ pA=ptlist_1;
+ pB=ptlist_2;
+ size=0.15;
+ wid=0.05;
+ tp=1;
+ tmp1=Divoptions(options);
+ eqL=tmp1_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ tmp1=parse(tmp1);
+ tmp=substring(#,0,1);
+ if(tmp=="S" % tmp=="s",
+ size=size*tmp1;
+ );
+ if(tmp=="W" % tmp=="w",
+ wid=wid*tmp1;
+ );
+ if(tmp=="T" % tmp=="t",
+ tp=tmp1;
+ );
+ );
+ mid=(pA+pB)/2;
+ dir=(pB-pA)/|pB-pA|;
+ nor=[-dir_2,dir_1];
+// nor=nor/|nor|;
+ if(tp==1,
+ tmp1=mid+size*nor;
+ tmp2=mid-size*nor;
+ Listplot(name,[tmp1,tmp2]);
+ );
+ if(tp==2,
+ tmp1=mid+wid*dir+size*nor;
+ tmp2=mid+wid*dir-size*nor;
+ Listplot(name+"r",[tmp1,tmp2]);
+ tmp1=mid-wid*dir+size*nor;
+ tmp2=mid-wid*dir-size*nor;
+ Listplot(name+"l",[tmp1,tmp2]);
+ );
+ if(tp==3,
+ tmp1=mid;
+ tmp2=mid+size*dir;
+ Circledata(name,[tmp1,tmp2]);
+ );
+ if(tp==4,
+ tmp=mid+size*2/sqrt(3)*nor;
+ tmp1=mid+size*dir-size/sqrt(3)*nor;
+ tmp2=mid-size*dir-size/sqrt(3)*nor;
+ Listplot(name,[tmp,tmp1,tmp2,tmp]);
+ );
+);
+
+Parabolaplot(nm,ptlist):=Parabolaplot(nm,ptlist,"[-5,5]",[]);
+Parabolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5,5]";
+ options=Arg;
+ );
+ Parabolaplot(nm,ptlist,rng,options);
+);
+Parabolaplot(nm,ptlist,rng,options):=(
+//help:Parabolaplot("1",[A,B,C]):
+//help:Parabolaplot("1",[A,B,C],"[-5,5]");
+ regional(pA,pB,pC,angle,tmp,tmp1,tmp2);
+ tmp1=Lcrd(ptlist_1);
+ tmp2=Lcrd(ptlist_3);
+ pB=Lcrd(ptlist_2);
+ tmp=(tmp2-pB)/|tmp2-pB|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pA=Rotatepoint(tmp1,-angle,pB);
+ pC=Rotatepoint(tmp2,-angle,pB);
+ tmp1=1/(2*(pA_2-pB_2));
+ tmp2=1/2*(pA_2+pB_2);
+ tmp="("+format(tmp1,5)+")*(x-("+format(pA_1,5)+"))^2";
+ tmp=tmp+"+("+format(tmp2,5)+")";
+ tmp1=parse(rng);
+ tmp1=[pA_1-(tmp1_2-tmp1_1)/2,pA_1+(tmp1_2-tmp1_1)/2];
+ tmp2="x="+textformat(tmp1,5);
+ Plotdata(nm+"para",tmp,tmp2,append(options,"nodisp"));
+ Rotatedata(nm+"para","gr"+nm+"para",angle,append(options,pB));
+);
+
+Ellipseplot(nm,ptlist):=Ellipseplot(nm,ptlist,"[0,2*pi]",[]);
+Ellipseplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[0,2*pi]";
+ options=Arg;
+ );
+ Ellipseplot(nm,ptlist,rng,options);
+);
+Ellipseplot(nm,ptlist,rng,options):=(
+//help:Ellipseplot("1",[A,B,3]);
+//help:Ellipseplot("1",[A,B,C],"[0,pi]",[options]);
+ regional(pA,pB,d,angle,f,a,b,pM,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=|tmp2-pA|+|tmp2-tmp1|;
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(d^2/4-f^2);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+","+format(pM_2,5)+"]";
+ tmp=tmp+"+["+format(a,5)+"*cos(t),"+format(b,5)+"*sin(t)]";
+ Paramplot(nm+"elp",tmp,"t="+rng,append(options,"nodisp"));
+ Rotatedata(nm+"elp","gp"+nm+"elp",angle,append(options,pA));
+);
+
+Hyperbolaplot(nm,ptlist):=Hyperbolaplot(nm,ptlist,"[-5/2,5/2]",[]);
+Hyperbolaplot(nm,ptlist,Arg):=(
+ regional(rng,options);
+ if(isstring(Arg),
+ rng=Arg;
+ options=[];
+ ,
+ rng="[-5/2,5/2]";
+ options=Arg;
+ );
+ Hyperbolaplot(nm,ptlist,rng,options);
+);
+Hyperbolaplot(nm,ptlist,rng,optionsorg):=(
+//help:Hyperbolaplot("1",[A,B,C],["Num=200"]):
+//help:Hyperbolaplot("1",[A,B,C],"[-5,5]",["Asy=do"]);
+ regional(pA,pB,d,angle,f,a,b,pM,eqL,options,opasy,tmp,tmp1,tmp2);
+ tmp=Divoptions(optionsorg);
+ eqL=tmp_5;
+ options=optionsorg;
+ opasy=[];
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="A",
+ tmp=indexof(#,"=");
+ opasy=[substring(#,tmp,length(#))];
+ options=remove(options,[#]);
+ );
+ );
+ pA=Lcrd(ptlist_1);
+ tmp1=Lcrd(ptlist_2);
+ if(ispoint(ptlist_3),
+ tmp2=Lcrd(ptlist_3);
+ d=abs(|tmp2-pA|-|tmp2-tmp1|);
+ ,
+ d=ptlist_3;
+ );
+ tmp=(tmp1-pA)/|tmp1-pA|;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ pB=Rotatepoint(tmp1,-angle,pA);
+ f=|pB_1-pA_1|/2;
+ a=d/2;
+ b=sqrt(f^2-d^2/4);
+ pM=(pA+pB)/2;
+ tmp="["+format(pM_1,5)+"+"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp1",tmp,"t="+rng,append(options,"nodisp"));
+ tmp="["+format(pM_1,5)+"-"+format(a,5)+"*(exp(t)+exp(-t))/2,";
+ tmp=tmp+format(pM_2,5)+"+"+format(b,5)+"*(exp(t)-exp(-t))/2]";
+ Paramplot(nm+"hyp2",tmp,"t="+rng,append(options,"nodisp"));
+ tmp=["gp"+nm+"hyp1","gp"+nm+"hyp2"];
+ Rotatedata(nm+"hyp",tmp,angle,append(options,pA));
+ if(length(opasy)>0,
+ Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]);
+ Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]);
+ tmp=["ln"+nm+"asy1","ln"+nm+"asy2"];
+ Rotatedata(nm+"asy",tmp,angle,append(opasy,pA));
+ );
+);
+
+Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]);
+Polygonplot(nm,ptlist,number,options):=(
+//help:Polygonplot("1",[A,B],12);
+ regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2);
+ pA=Lcrd(ptlist_1);
+ pB=Lcrd(ptlist_2);
+ rr=|pB-pA|;
+ tmp=(pB-pA)/rr;
+ if(tmp_2>=0,
+ angle=arccos(tmp_1);
+ ,
+ if(tmp_1>=0,
+ angle=arcsin(tmp_2);
+ ,
+ angle=-arccos(tmp_1);
+ );
+ );
+ ptL=[];
+ forall(0..number,
+ tmp=angle+#*2*pi/number;
+ tmp1=pA+rr*[cos(tmp),sin(tmp)];
+ if(#>0 & #<number,
+ Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07
+ //Pointdata(nm,ptL);
+ );
+ tmp2=tmp1;
+ ptL=append(ptL,tmp1);
+ );
+ Listplot(nm+"ply",ptL,options);
+);
+
+Putintersect(nm,pdata1,pdata2):=(
+//help:Putintersect("Q","gr1","gr2");
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)==1,
+ Putpoint(nm,tmp_1);
+ ,
+ if(length(tmp)==0,
+ err("No intersect point");
+ ,
+ err("Multiple intersect points");
+ println(tmp);
+ err("Choose point number");
+ );
+ );
+);
+Putintersect(nm,pdata1,pdata2,ptno):=(
+ regional(pd1,pd2,tmp);
+ if(isstring(pdata1),pd1=parse(pdata1),pd1=pdata1);
+ if(isstring(pdata2),pd2=parse(pdata2),pd2=pdata2);
+ tmp=Intersectcrvs(pd1,pd2);
+ if(length(tmp)>0,
+ Putpoint(nm,tmp_ptno);
+ ,
+ err("No intersect point");
+ );
+);
+
+Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]);
+Arrowheaddata(point,direction,options):=(
+//help:Arrowheaddata(A,B);
+ regional(list,Ookisa,Hiraki,Futosa,Houkou,Str,Flg,tmp,Ev,Nv,pA,pB,
+ pP,rF,gG,Flg,Nj,Eps,tmp1,scx,scy);
+ Eps=10^(-3);
+ pP=point;
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Str=YaStyle;
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Ookisa=Ookisa*tmp1_1);
+ if(length(tmp1)>1,
+ tmp=tmp1_2;
+ if(tmp<5,
+ Hiraki=Hiraki*tmp;
+ ,
+ Hiraki=tmp;
+ );
+ );
+ Flg=0;
+ Hiraki=Hiraki*pi/180;
+ if(isstring(direction),Houkou=parse(direction),Houkou=direction);
+ if(MeasureDepth(Houkou)==2,Houkou=Houkou_1);
+ if(islist(Houkou_1),
+// pP=Lcrd(pP);
+// pP=Doscaling(pP);
+// Houkou=Dosscaling(Houkou);
+ pP=Pcrd(pP);
+ scy=SCALEY;
+ SCALEY=1;
+ tmp=Nearestpt(pP,Houkou);
+ pA=tmp_1;
+ rF=floor(tmp_2);
+ if(rF==1,
+ if(|Ptend(Houkou)-Ptstart(Houkou)|<Eps,
+ rF=Numptcrv(Houkou);
+ );
+ );
+ gG=apply(0..10,pP+Ookisa*cos(Hiraki)*[cos(2*pi/10*#),sin(2*pi/10*#)]);
+ Flg=0;
+ forall(1..rF,Nj,
+ if(Flg==0,
+ pB=Ptcrv(rF+1-Nj,Houkou);
+ tmp=IntersectcrvsPp([pA,pB],gG);
+ if(length(tmp)>0,
+ Houkou=pP-tmp_1_1;
+ Flg=1;
+ );
+ pA=pB;
+ );
+ );
+ SCALEY=scy;
+ if(Flg==0,
+ println("Arrowhead may be too large (no intersect)");
+ Flg=2;
+ );
+ if(Flg==1,
+ Houkou=Unscaling(Houkou);
+ pP=Unscaling(pP);
+ );
+ );
+ if(Flg<2,
+// pP=Doscaling(pP);
+// Houkou=Doscaling(Houkou);
+ pP=Pcrd(pP);
+ if(!ispoint(point),
+ Houkou=Pcrd(Houkou);
+ );
+// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou));
+ Ev=-1/|Houkou|*Houkou;
+ Ev=Lcrd(Ev);
+ Nv=[-Ev_2, Ev_1];
+ if(indexof(Str,"c")>0,
+ pP=pP-0.5*Ookisa*cos(Hiraki)*Ev;
+ );
+ if(indexof(Str,"b")>0,
+ pP=pP-Ookisa*cos(Hiraki)*Ev;
+ );
+ pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv;
+ pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv;
+ list=[pA,pP,pB];
+ list=apply(list,LLcrd(#));
+// Out=Unscaling(Out);
+ list;
+ );
+);
+
+Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]);
+Arrowhead(point,Houkou,options):=(
+//help:Arrowhead(B,B-A,[1.5,30]);
+//help:Arrowhead(A,"gr1");
+ // global ArrowheadNumber
+ regional(name,Ltype,Noflg,reL,opstr,opcindy,ptstr,hostr,tmp,tmp1,list);
+ name="arh"+text(ArrowheadNumber);
+ ArrowheadNumber=ArrowheadNumber+1;
+ ptstr=textformat(point,5);
+ if(isstring(Houkou), // 15.01.11
+ tmp=parse(Houkou);
+ if(MeasureDepth(tmp)<2,
+ hostr=Houkou;
+ ,
+ hostr=Houkou+"(1)";
+ );
+ ,
+ if(ispoint(point),
+ hostr=textformat(LLcrd(Houkou),5);
+ ,
+ hostr=textformat(Houkou,5);
+ );
+ );
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ reL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ list=Arrowheaddata(point,Houkou,options);
+ if(Noflg<3,
+// println("generate Arrowhead "+name);
+ tmp1=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// GLIST=append(GLIST,name+"=Listplot("+list+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(1)+Ltype,name);
+ ,
+// if(Noflg==1,Ltype=0);
+ Ltype=0;
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ if(Noflg==0,
+ if(length(reL)<3, // 16.04.09 from
+ forall(1..(2-length(reL)),
+ opstr=opstr+",1";
+ );
+ tmp=PenThick/PenThickInit;
+ opstr=opstr+","+text(tmp);
+ ); // 16.04.09 upto
+ Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")");
+ );
+);
+
+Arrowdata(ptlist):=Arrowdata(ptlist,[]);
+Arrowdata(Arg1,Arg2):=(
+ regional(tmp,nm,ptlist,flg,pA,pB,options);
+ flg=0;
+ if(isstring(Arg1),
+ nm=Arg1;
+ ptlist=Arg2;
+ Arrowdata(nm,ptlist,[]);
+ flg=1;
+ );
+ if(flg==0,
+ tmp=MeasureDepth(Arg1);
+ if(tmp==0,
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,[]);
+ ,
+ ptlist=Arg1;
+ options=Arg2;
+ nm=text(ArrowlineNumber);
+ ArrowlineNumber=ArrowlineNumber+1;
+ Arrowdata(nm,ptlist,options);
+ );
+ );
+);
+Arrowdata(Arg1,Arg2,options):=(
+//help:Arrowdata([A,B],[2,10]);
+ regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size,
+ flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos);
+ Retflg=0;
+ Noflg=0;
+ Ltype=0;
+ if(!isstring(Arg1),
+ pA=Arg1;
+ pB=Arg2;
+ Arrowdata(pA,pB,options,"old");
+ Retflg=1;
+ ptlist=[pA,pB];
+ );
+ if(Retflg==0,
+ nm=Arg1;
+ ptlist=Arg2;
+ name="ar"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ realL=tmp_6;
+ strL=tmp_7;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ size=1; // 15.06.11
+ if(length(realL)>0,
+ size=realL_1;
+ );
+ tmp2=select(strL,indexof(#,"l")>0); // 16.04.09
+ if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09
+ segpos=1;
+ tmp1=tmp_5;
+ if(length(tmp1)>2,
+ segpos=tmp1_3;
+ );
+ if(Noflg<3,
+// println("generate Arrowdata "+name);
+ tmp1=apply(ptlist,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=Pcrd(ptlist_1);//16.10.20
+ tmp2=Pcrd(ptlist_2);//16.10.20
+ if(lineflg==0, // 16.04.09 from
+ tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11
+ ,
+ tmp=tmp2;
+ ); // 16.04.09 upto
+ tmp=[LLcrd(tmp1),LLcrd(tmp)];//16.10.20
+ GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ tmp=textformat(ptlist,5);
+ tmp=substring(tmp,1,length(tmp)-1);
+ tmp1=indexof(tmp,"],[");
+ if(tmp1>0,
+ pA=substring(tmp,0,tmp1);
+ pB=substring(tmp,tmp1+1,length(tmp));
+ ,
+ tmp1=indexof(tmp,",");
+ pA=substring(tmp,0,tmp1-1);
+ pB=substring(tmp,tmp1,length(tmp));
+ );
+ tmp1="Lcrd("+pA+")+"
+ +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))";
+ tmp1=parse(tmp1);
+ tmp2="Lcrd("+pB+")-Lcrd("+pA+")";
+ tmp2=parse(tmp2);
+ Arrowhead(tmp1,tmp2,options);
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ ptlist;
+);
+Arrowdata(pA,pB,options,str):=(
+ regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy);
+ Astr=textformat(pA,5);
+ Bstr=textformat(pB,5);
+ name="ar"+pA.name+pB.name;
+ println("generate Arrow "+name);
+ opstr="";
+ opcindy="";
+ forall(options,
+ if(isstring(#),
+ if(indexof(#,"->")>0,
+ opcindy=opcindy+","+#;
+ ,
+ tmp="'"+#+"'";
+ );
+ ,
+ tmp=text(#);
+ );
+ opstr=opstr+","+tmp;
+ );
+ ptA=Lcrd(pA);
+ ptB=Lcrd(pB);
+ Arrowheaddata(ptB,ptB-ptA,options);
+ tmp="connect("+textformat([ptA,ptB],5)
+ +",linecolor->"+text(KCOLOR)+opcindy+");";
+ parse(tmp); // 14.11.17
+ Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04
+);
+
+Anglemark(plist):=Anglemark(plist,[]);
+Anglemark(Arg1,Arg2):=( // 2015.04.28 from
+ regional(nm,plist,options,tmp);
+ if(isstring(Arg1),
+ nm=Arg1;
+ plist=Arg2;
+ Anglemark(nm,plist,[]);
+ ,
+ plist=Arg1;
+ options=Arg2;
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Anglemark(nm,plist,options);
+ );
+); // upto
+Anglemark(nm,plist,options):=(
+//help:Anglemark([A,B,C],["E=\theta",2]);
+//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]);
+//help:Anglemark(options=["E/L=(sep,)letter",size]);
+ regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg);
+ name="ag"+nm;
+ Bpos="md"+name;
+ ra=0.5;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ Bname="";
+ Brat=1.5;
+ Num=20;
+ if(length(realL)>0,
+ ra=realL_1*ra;
+ opstr=opstr+","+text(realL_1);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bname=Bname+Bpos+","+Dq+"c"+Dq+","+Dq;//16.10.29
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ sab=pB-pA;
+ sac=pC-pA;
+ Rg=[arctan2(sab)+0,arctan2(sac)+0];
+ if(Rg_2<Rg_1,Rg_2=Rg_2+2*pi);
+ Out=[];
+ if(ra>min(|sab|,|sac|), // 16.12.29
+ println(" segments too short");
+ ,
+ forall(0..Num,
+ Th=Rg_1+#*(Rg_2-Rg_1)/Num;
+ Out=append(Out,Ctr+ra*[cos(Th),sin(Th)]);
+ );
+ Th=(Rg_1+Rg_2)/2; //16.10.31from(moved)
+ tmp1=Ctr+Brat*ra*[cos(Th),sin(Th)];
+ tmp="Defvar("+Dq+Bpos+"=";
+ tmp=tmp+textformat(tmp1,5)+Dq+");";
+ parse(tmp);//16.10.31upto(moved)
+ if(length(Bname)>0,
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate anglemark "+name+" and "+Bpos);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp=textformat(plist,5);
+ tmp1=substring(tmp,1,length(tmp)-1);
+ tmp=name+"=Anglemark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ Out;
+);
+
+Paramark(plist):=Paramark(plist,[]);
+Paramark(Arg1,Arg2):=( // 17.03.27 from
+ regional(nm,plist,options,tmp);
+ if(isstring(Arg1),
+ nm=Arg1;
+ plist=Arg2;
+ Paramark(nm,plist,[]);
+ ,
+ plist=Arg1;
+ options=Arg2;
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Paramark(nm,plist,options);
+ );
+);// upto
+Paramark(nm,plist,options):=(
+//help:Paramark([A,B,C],["E=\theta"]);
+//help:Paramark("1",[p1,p2,p3],["E=\theta"]);
+ regional(name,Out,pB,pA,pC,ra,sab,sac,ratio,opstr,Bname,Bpos,
+ Brat,tmp,tmp1,tmp2,Ltype,Noflg,eqL,realL,opcindy);
+ name="pm"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ ra=0.5;
+ Bname="";
+ Brat=1.2;
+ if(length(realL)>0,
+ tmp=realL_1;
+ ra=tmp*ra;
+ opstr=opstr+","+text(tmp);
+ );
+ forall(eqL,
+ if(substring(#,0,1)=="L",Bname="Letter(");
+ if(substring(#,0,1)=="E",Bname="Expr(");
+ Bpos="md"+name;
+ Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq;
+ tmp=substring(#,indexof(#,"="),length(#));
+ tmp1=indexof(tmp,",");
+ Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")";
+ if(tmp1>0,
+ Brat=parse(substring(tmp,0,tmp1-1));
+ );
+ );
+ pB=Lcrd(plist_1); pA=Lcrd(plist_2); pC=Lcrd(plist_3);
+ Ctr=Lcrd(pA);
+ Out=[];
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|);
+ Out=append(Out,pA+ra*(pB-pA)/|pB-pA|+ra*(pC-pA)/|pC-pA|);
+ Out=append(Out,pA+ra*(pC-pA)/|pC-pA|);
+ if(length(Bname)>0,
+ tmp1=pA+Brat*ra*(pB-pA)/|pB-pA|+Brat*ra*(pC-pA)/|pC-pA|;
+ tmp="Defvar("+Dq+Bpos+"="+textformat(tmp1,5)+Dq+");";
+ parse(tmp);
+ parse(Bname);
+ );
+ if(Noflg<3,
+ println("generate paramark "+name);
+ tmp1=apply(Out,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Paramark("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ Out;
+);
+
+MakeBowdata(pA,pB,Hgt):=(
+ regional(angle,pB2,pH2,pC2,pC,tmp,Th1,Th2,ra,dMA);
+ angle=arctan2(pB-pA)+0;
+ pB2=Rotatepoint(pB,-angle,pA);
+ tmp=Lcrd(pA);
+ pH2=[(tmp_1+pB2_1)/2,tmp_2-Hgt];
+ dMA=|tmp-pB2|/2;
+ ra=(dMA^2+Hgt^2)/(2*Hgt);
+ pC2=[pH2_1,pB2_2+(ra-Hgt)];
+ pC=Rotatepoint(pC2,angle,pA);
+ Th1=arctan2(pA-pC2)+angle;
+ Th2=arctan2(pB2-pC2)+angle;
+ [pC,ra,Th1,Th2];
+);
+
+Bowdata(plist):=Bowdata(plist,[]);
+Bowdata(plist,options):=(
+ regional(nm,tmp);
+ if(islist(plist), // 16.12.04from
+ tmp=textformat(plist,5);
+ tmp=replace(tmp,",","");
+ nm=substring(tmp,1,length(tmp)-1);
+ Bowdata(nm,plist,options);
+ ,
+ nm=plist;
+ tmp=options;
+ Bowdata(nm,tmp,[]);
+ ); // 16.12.04upto
+);
+Bowdata(nm,plist,options):=(
+//help:Bowdata([C,A],[2,1.2,"Expr=10","da"]);
+//help:Bowdata([A,B],["Expr=t0n3,a"]);
+//help:Bowdata([A,B],["Exprrot=t0n2r,a"]);
+ regional(name,Out,pB,pA,pC,ra,tmp,tmp1,tmp2,Ltype,eqL,realL,
+ Bname,Bpos,Th,Cut,Num,Hgt,opstr,opcindy,Ydata,pC,
+ Th1,Th2,Noflg,Bops,Bmov,Tmov,Nmov,rev);
+ name="bw"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ eqL=tmp_5;
+ realL=tmp_6;
+ pA=Lcrd(plist_1); pB=Lcrd(plist_2);
+ Hgt=1/2*|pB-pA|*0.2;
+ Cut=0;
+ Num=24;
+ Bname="";
+ Tmov=0;//16.11.01from
+ Nmov=0;
+ Bmov="";
+ rev=0;//16.11.01upto
+ if(length(realL)>0,
+ Hgt=realL_1*Hgt; // 15.04.12
+ if(length(realL)>1,Cut=realL_2);
+ );
+ forall(eqL,
+ tmp=substring(#,0,1);
+ if(tmp=="L" % tmp=="l",
+ if(indexof(#,"rot")>0,
+ Bname="Letterrot(";
+ ,
+ Bname="Letter(";
+ );
+ );
+ if(tmp=="E" % tmp=="e",
+ if(indexof(#,"rot")>0,
+ Bname="Exprrot(";
+ ,
+ Bname="Expr(";
+ );
+ );
+ tmp=indexof(#,"=");
+ Bops=substring(#,tmp,length(#)); // 16.11.01
+ );
+ Ydata=MakeBowdata(pA,pB,Hgt);
+ pC=Ydata_1;
+ ra=Ydata_2;
+ Th=(Ydata_3+Ydata_4)*0.5;
+ BOWMIDDLE=[pC_1+ra*cos(Th),pC_2+ra*sin(Th)];
+ Bpos="md"+name; // 16.10.31from(moved)
+ tmp="Defvar("+Dq+Bpos+"="+textformat(BOWMIDDLE,5)+Dq+");";
+ parse(tmp);// 16.10.31upto(moved)
+ if(length(Bname)>0, //16.11.01from
+ tmp=indexof(Bops,",");
+ if(tmp>0,
+ tmp1=substring(Bops,0,tmp-1);
+ if(length(tmp1)>=4 & substring(tmp1,0,1)=="t" & indexof(tmp1,"n")>0,
+ Bmov=tmp1;
+ Bops=substring(Bops,tmp,length(Bops));
+ );
+ );
+ if(length(Bmov)>0,
+ tmp=indexof(Bmov,"t");
+ if(tmp>0,
+ tmp1=indexof(Bmov,"n");
+ Tmov=parse(substring(Bmov,tmp,tmp1-1));
+ tmp=indexof(Bmov,"r");
+ if(tmp>0,
+ Nmov=parse(substring(Bmov,tmp1,tmp-1));
+ rev=1;
+ ,
+ Nmov=parse(substring(Bmov,tmp1,length(Bmov)));
+ );
+ );
+ );
+ Bname=Bname+Bpos;//16.11.01
+ if(abs(Tmov)+abs(Nmov)>0,
+ tmp=Pcrd(pA)-Pcrd(pB);
+ tmp1=1/norm(tmp)*tmp;
+ tmp2=[-tmp1_2,tmp1_1];
+ tmp=MARKLEN*(Tmov*tmp1+Nmov*tmp2);
+ tmp=LLcrd(tmp);
+ Bname=Bname+"+"+text(tmp);
+ );
+ Bname=Bname+",";
+ if(indexof(Bname,"rot")>0,
+ if(rev==1,tmp=pB-pA,tmp=pA-pB);
+ Bname=Bname+textformat(tmp,5)+",";
+ ,
+ Bname=Bname+Dq+"c"+Dq+",";
+ );
+ Bname=Bname+Dq+Bops+Dq+")";
+ parse(Bname);
+ );//16.11.01upto
+ if(Cut==0,
+ Th1=Ydata_3;
+ Th2=Ydata_4;
+ Out=[];
+ forall(0..Num,
+ tmp=Th1+#*(Th2-Th1)/Num;
+ Out=append(Out,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ ,
+ Th1=Ydata_3;
+ Th2=Th-Cut/(2*ra);
+ tmp1=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp1=append(tmp1,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Th1=Th+Cut/(2*ra);
+ Th2=Ydata_4;
+ tmp2=[];
+ forall(0..Num/2,
+ tmp=Th1+#*(Th2-Th1)/(Num/2);
+ tmp2=append(tmp2,pC+ra*[cos(tmp),sin(tmp)]);
+ );
+ Out=[tmp1,tmp2];
+ );
+ if(Noflg<3,
+ println("generate bowdata "+name+" and "+Bpos);//16.10.31
+ if(MeasureDepth(Out)==1,Out=[Out]);
+ tmp1=[];
+ forall(Out,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=substring(textformat(plist,5),1,length(textformat(plist,5))-1);
+ tmp=name+"=Bowdata("+tmp1+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+);
+
+Bowname(str):=Bowname("c",str);
+Bowname(dir,str):=(
+ Expr([BOWMIDDLE,dir,str]);
+);
+
+Bownamerot(bwdata,str):=Bownamerot(bwdata,0,0,str,1);
+Bownamerot(bwdata,str,updown):=Bownamerot(bwdata,0,0,str,updown);
+Bownamerot(bwdata,tmov,nmov,str):=Bownamerot(bwdata,tmov,nmov,str,1);
+Bownamerot(bwdata,tmov,nmov,str,updown):=(
+ regional(bdata,tmp);
+ tmp=MeasureDepth(bwdata);
+ if(tmp==1,bdata=[bwdata],bdata=bwdata);
+ if(length(bdata)>1,
+ tmp=Ptend(bdata_2)-Ptstart(bdata_1);
+ ,
+ tmp=Ptend(bdata_1)-Ptstart(bdata_1);
+ );
+ if(updown<0,tmp=-tmp);
+ Exprrot(BOWMIDDLE,tmp,tmov,nmov,str);
+);
+
+Deqplot(nm,deq,rng,initf):=Deqplot(nm,deq,rng,Lcrd(initf)_1,initf,[]);
+Deqplot(nm,deq,rng,Arg1,Arg2):=(
+ regional(initt,initf,options);
+ if(isreal(Arg1) & !islist(Arg1),
+ initt=Arg1;
+ initf=Arg2;
+ options=[];
+ ,
+ initf=Lcrd(Arg1);
+ initt=initf_1;
+ options=Arg2;
+ );
+ Deqplot(nm,deq,rng,initt,initf,options);
+);
+Deqplot(nm,deq,rng,initt,initf,options):=(
+ regional(name,Noflg,Ltype,eqL,opstr,opcindy,pdL,var2,deq2,rng2,initt2,initf2,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ tmp2=tmp_2;
+ tmp3=tokenize(tmp1,"`");
+ if(length(tmp3)==2,
+ if(indexof(tmp1,"[")>0,
+ Deqplot(nm,deq,rng,initt,initf,options,[2,3]);
+ ,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ tmp=tokenize(rng2,"=");
+ deq2="["+tmp_1+","+replace(tmp1,"`","]")+"`=[1,"+tmp2+"]";
+ rng2="tvar="+tmp_2; //17.02.26
+ if(isreal(initf) & !islist(initf),
+ initf2=[initt,initf];
+ initt2=initt;
+ ,
+ initf2=Lcrd(initf);
+ initt2=initf2_1;
+ );
+ Deqplot(nm,deq2,rng2,initt2,initf2,options,[2,3]);
+ );
+ ,
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ opcindy=tmp_9;
+ opstr="";
+ forall(eqL,
+ if(Toupper(substring(#,0,1))=="N",
+ tmp=indexof(#,"=");
+ tmp1="N="+substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp1+"'";
+ );
+ );
+ if(Noflg<1,
+ if(indexof(rng,"=")>0,rng2=rng,rng2=rng+"=[XMIN,XMAX]");
+ var2="d"+tmp3_1;
+ deq2="["+tmp3_1+","+var2+"]`=[";
+ tmp=replace(tmp2,tmp3_1+"`",var2);
+ deq2=deq2+var2+","+tmp+"]";
+ Deqplot(nm,deq2,rng2,initt,initf,append(options,"nodisp"),[1,2]);
+ parse(tmp);
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ parse("de"+nm);
+ );
+ );
+);
+Deqplot(nm,deq,rng,initt,initf,options,Sel):=(
+//help:Deqplot("2","y`=y*(1-y)","x",0, 0.5,["Num=100"]);
+//help:Deqplot("1","y``=-y","x",0, [1,0]);
+//help:Deqplot("3","[x,y]`=[x*(1-y),0.3*y*(x-1)]","t=[0,20]",[1,0.5]);
+ regional(Ltype,Noflg,Inflg,Outflg,strL,opstr,opcindy,Num,
+ outstr,name,func,xf,yf,pdL,Eps,Inf,t1,t2,tt,Vname,dt,funP,funN,flg,
+ kl1,kl2,kl3,kl4,x0,y0,x1,y1,tmp,tmp1,tmp2);
+ name="de"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ eqL=tmp_5;
+ strL=tmp_7;
+// opstr=tmp_(length(tmp)-1);
+ opstr="";
+ opcindy=tmp_(length(tmp));
+ outstr="";
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="S",
+ outstr="Sci";
+ );
+ );
+ Num=50;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp2=substring(#,0,1);
+ tmp2=Toupper(tmp2);
+ tmp1=substring(#,tmp,length(#));
+ opstr=opstr+",'"+tmp2+"="+tmp1+"'";
+ if(Toupper(substring(#,0,1))=="N",
+ Num=parse(tmp1);
+ );
+ );
+ if(outstr=="Sci",
+ if(Inflg==0 & Outflg==0,Outflg=1;Inflg=1);
+ );
+ if(Noflg<3,
+ if(outstr=="Sci",
+ if(Outflg==1,
+ println("Output Deqplot "+name);
+ SCIWRLIST=append(SCIWRLIST,name);
+ );
+ if(Inflg==1,
+ println("Input Deqplot "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ ,
+ Eps=10^(-3);
+ Inf=10^3;
+ tmp=tokenize(deq,"=");
+ tmp1=tmp_1;
+ func=tmp_2;
+ tmp=indexof(tmp1,",");
+ xf=substring(tmp1,1,tmp-1);
+ yf=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(yf,"]");
+ yf=substring(yf,0,tmp-1);
+ tmp=tokenize(rng,"=");
+ Vname=tmp_1;
+ tmp=parse(tmp_2);
+ t1=tmp_1;
+ t2=tmp_2;
+ tmp="funP("+Vname+","+xf+","+yf+"):="+func+";";
+ parse(tmp);
+ tmp=tokenize(func,",");
+ tmp1="-("+substring(tmp_1,1,length(tmp_1))+")";
+ tmp2="-("+substring(tmp_2,0,length(tmp_2)-1)+")";
+ tmp="funN("+Vname+","+xf+","+yf+"):=["+tmp1+","+tmp2+"];";
+ parse(tmp);
+ dt=(t2-t1)/Num;
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ pdL=[[tt,x0,y0]];
+ flg=0;
+ forall(1..floor((t2-initt)/dt),
+ if(flg==0,
+ kl1=dt*funP(tt,x0,y0);
+ kl2=dt*funP(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funP(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funP(tt+dt,x0+kl3_1,y0+kl3_2);//16.10.14
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt+#*dt;
+ pdL=append(pdL,[tt,x0,y0]);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ tt=initt;
+ tmp=Lcrd(initf);
+ x0=tmp_1;
+ y0=tmp_2;
+ flg=0;
+ forall(1..floor((initt-t1)/dt),
+ if(flg==0,
+ kl1=dt*funN(tt,x0,y0);
+ kl2=dt*funN(tt+dt/2,x0+kl1_1/2,y0+kl1_2/2);
+ kl3=dt*funN(tt+dt/2,x0+kl2_1/2,y0+kl2_2/2);
+ kl4=dt*funN(tt+dt/2,x0+kl3_1/2,y0+kl3_2/2);
+ tmp1=[x0,y0]+(kl1+2*kl2+2*kl3+kl4)/6;
+ x0=tmp1_1;
+ y0=tmp1_2;
+ tt=initt-#*dt;
+ pdL=prepend([tt,x0,y0],pdL);
+ if(|tmp1|>Inf,flg=1);
+ );
+ );
+ println("Generate Deqplot "+name);
+ pdL=apply(pdL,#_Sel);
+ tmp1=apply(pdL,Pcrd(#));
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ );
+ if(Noflg<1,
+ tmp=name+"=Deqplot(Assign("+Dq+deq+Dq+"),'"+rng+"',";
+ tmp=tmp+initt+","+initf+opstr+")";
+ GLIST=append(GLIST,tmp);
+ );
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(outstr=="Sci",
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ ,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+ if(outstr!="Sci",pdL); // 17.02.17
+);
+
+Enclosing(nm,plist):=EnclosingS(nm,plist);
+Enclosing(nm,plist,options):=EnclosingS(nm,plist,options);
+EnclosingS(nm,plist):=EnclosingS(nm,plist,[]);
+EnclosingS(nm,plist,options):=(
+//help:Enclosing("1",["sc2","crAB","sc2","Invert(sc1)"],[pt,"dr"]);
+ regional(name,AnsL,Start,Eps,EEps,S,Flg,Fdata,Gdata,KL,pt,qt,
+ t1,t2,t3,ii,nn,tmp,tmp1,tmp2,Ltype,Noflg,realL,eqL,opstr,opcindy);
+ name="en"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ eqL=tmp_5;
+ realL=tmp_6;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Eps=10^(-5); // 16.12.05
+ EEps=0.05;
+ Start=[];
+ Flg=0;
+ forall(realL,
+ if(isList(#) % ispoint(#),
+ Start=Lcrd(#); // 15.09.12
+ ,
+ Flg=Flg+1;
+ if(Flg==1,Eps=#);
+ if(Flg==2,EEps=#);
+ );
+ );
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ Fdata=plist_1;
+ Gdata=plist_(length(plist));
+ KL=IntersectcrvsPp(Fdata,Gdata);
+ if(length(KL)==1,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ );
+ if(length(KL)==0,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ pt=tmp_1;
+ t1=tmp_2;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ pt=tmp_3;
+ t1=tmp_4;
+ );
+ );
+ if(length(KL)>1,
+ if(Start==[],
+ err("No Start Point");
+ ,
+ pt=KL_1_1;
+ t1=KL_1_2;
+ tmp=|pt-Start|;
+ forall(2..(length(KL)),ii, // 15.04.20
+ tmp1=KL_ii_1;
+ tmp2=|tmp1-Start|; // 15.04.20
+ if(tmp2<tmp,
+ pt=tmp1;
+ t1=KL_ii_2;
+ tmp=tmp2;
+ );
+ );
+ );
+ );
+// pt=Pcrd(pt); // 15.09.12
+ Start=pt;
+ AnsL=[];
+ forall(1..(length(plist)),nn,
+ Fdata=plist_nn;
+ if(nn>1, pt=qt);
+ if(nn==length(plist),
+ qt=Start;
+ ,
+ Flg=0;
+ Gdata=plist_(nn+1);
+// tmp1=concat([Eps,EEps],eqL); // 15.04.06
+ KL=IntersectcrvsPp(Gdata,Fdata);
+ if(length(KL)==1,
+ tmp=KL_1;
+ qt=KL_1_1;
+ t3=KL_1_2;
+ Flg=10;
+ );
+ if(length(KL)==0,Flg=1);
+ if(length(KL)>1,
+ tmp1=KL_1_1;
+ tmp2=KL_2_1;
+ tmp=|tmp1-tmp2|;
+ if(tmp<Eps*10, Flg=1);
+ );
+ if(Flg==1,
+ if(Numptcrv(Fdata)>Numptcrv(Gdata),
+ tmp=Nearestpt(Fdata,Gdata);
+ qt=tmp_1;
+ t3=tmp_4;
+ Flg=10;
+ ,
+ tmp=Nearestpt(Gdata,Fdata);
+ qt=tmp_3;
+ t3=tmp_2;
+ Flg=10;
+ );
+ );
+ if(Flg<10,
+ t2=10^6; //%inf;
+ forall(1..(length(KL)),ii,
+ tmp1=KL_ii_1;
+ tmp=KL_ii_3;
+ tmp2=ParamonCurve(tmp1,tmp,Fdata);
+ tmp3=KL_ii_2;
+ if(tmp2>t1+Eps & tmp2<t2+Eps,
+ qt=tmp1;
+ t2=tmp2;
+ t3=tmp3;
+ );
+ );
+ );
+ );
+ tmp=Partcrv("",pt,qt,Fdata,["nodata"]);
+ t1=t3;
+ if(nn==1,
+ AnsL=tmp;
+ ,
+ AnsL=concat(AnsL,tmp_(2..(length(tmp))));
+ );
+ );
+ AnsL=apply(AnsL,Pcrd(#)); // 15.09.12
+ AnsL_(length(AnsL))=AnsL_1;//16.10.20
+ if(Noflg<3,
+ println("generate Enclosing "+name);
+ tmp=name+"="+textformat(AnsL,5);
+ parse(tmp);
+ tmp=name+"=Enclosing(";//16.11.07from
+ tmp1="list(";
+ forall(plist,
+ tmp1=tmp1+#+",";
+ );
+ tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ GLIST=append(GLIST,tmp);//16.11.07upto
+ // GLIST=append(GLIST,"Tmp=[]"); // 16.11.05from
+// nn=floor(length(AnsL)/20);
+// forall(1..nn,ii,
+// tmp=AnsL_(((ii-1)*20+1)..(ii*20));
+// tmp=apply(tmp,LLcrd(#));
+// tmp="Tmp=[Tmp,"+textformat(tmp,5)+"]";
+// GLIST=append(GLIST,tmp);
+// );
+// if(length(AnsL)>nn*20,
+// tmp=AnsL_((nn*20+1)..(length(AnsL)));
+// tmp=apply(tmp,LLcrd(#));
+// tmp="Tmp=[Tmp,"+textformat(tmp,5)+"]";
+// GLIST=append(GLIST,tmp);
+// );
+// GLIST=append(GLIST,name+"=Listplot(Tmp)"); // 16.11.05upto
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp=apply(AnsL,LLcrd(#));//16.10.20
+ tmp;
+);
+
+Shade(plist):=Shade(plist,[]);
+Shade(plist,options):=(
+//help:Shade(["gr2","sg1"],[0.5]);
+//help:Shade([pointlist],[0.5]);
+ regional(tmp,tmp1,tmp2,opstr,opcindy,Str,G2,flg);
+ if(isstring(plist_1), // 16.01.24
+ println("output Shade of "+plist);
+ ,
+ println("output Shade of lists");
+ );
+ tmp=Divoptions(options);
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ flg=0;
+ forall(plist,
+ if(flg==0,
+ if(isstring(#),tmp=parse(#),tmp=#); // from 16.01.24
+ if(!islist(tmp),flg=1); upto
+ );
+ );
+ if(flg==1,
+// err("some data not defined yet");
+ ,
+ G2=Joincrvs("1",plist,["nodata"]);
+ G2=apply(G2,Pcrd(#));
+ tmp1="fillpoly("+textformat(G2,5)+opcindy+");";
+ parse(tmp1);
+ );
+ Str="Shade(";
+ tmp1="list(";
+ forall(plist,
+ if(isstring(#), // from 16.01.24
+ if(length(#)>1,
+ tmp1=tmp1+#+",";
+ ,
+ tmp1=tmp1+Dq+#+Dq+",";
+ );
+ ,
+ tmp1=tmp1+"Listplot("+textformat(#,5)+"),";
+ ); // upto 16.01.24
+ );
+ Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")";
+ Com2nd(Str);
+);
+
+//help:end();
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1log.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1log.txt
new file mode 100644
index 00000000..cf775fa8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic1log.txt
@@ -0,0 +1,647 @@
+// s:2017.08.23
+// Help of getdirhead changed
+// s:2017.07.19
+// Sep1000 added;
+// s:2017.07.03
+// Deqplot debugged ( )); )
+// s:2017.06.26
+// Ch added at the first line
+// s:2017.06.19
+// factorial added
+// s:2017.06.05
+// Ketinit changed (ketjavaversion added)
+// s:2017.05.21
+// Ketinit() debugged (Ch removed to setketcindy.txt)
+// MeasureDepth debugged (in the case of null list)
+// s:2017.05.18
+// Ketinit() debugged (Chnum => ChNum)
+// s:2017.05.16
+// Ketinit() changed (Ch added)
+// s:2017.05.15
+// C command for surface drawing are added (partly)
+// s:2017.04.14
+// IntersectcrvPp debugged ( in samepoint )
+// Ketinit changed ( to change Libname for scilab6 )
+// s:2017.04.10(all)
+// Buttons can be removed
+// s:2017.04.08
+// bugs fixed
+// e: 2017.03.27
+// Paramark changed ( name supported)
+// e: 2017.03.12
+// Sprintf changed ( for string input )
+// e: 2017.03.02
+// Ketinit debugged ( regional changed from bodyc to mboxc)
+// e: 2017.02.26
+// Deqplot debugged ( "t=" changed to "tvar=" )
+// e: 2017.02.17
+// Deqplot debugged ( for data output for "nodata" )
+// e: 2017.01.16
+// Setfiles added (Fhead,Fnamesci, Fnametex )
+// e: 2017.01.09
+// Ketinit changed ( slidecolor )
+// e: 2017.01.08
+// Ketinit changed ( for presentation )
+// e: 2016.12.29
+// Anglemark changed ( for too short segment )
+// e: 2016.12.26
+// Cindypathname,Cindyfilename added
+// e: 2016.12.25
+// Setcindyname added
+// Only avalable when Cinderella has been started in terminal mode.
+// e: 2016.12.22
+// Changework changed ( ErrFlg=-1 if path not exists )
+// e: 2016.12.13
+// Changestyle changed ( "Shade" not removed from COM2ndlist)
+// Ketinit change ( CRmark added);
+// e: 2016.12.04
+// Bowdata debugged ( for 3 arguments )
+// Tab2list ( sep option added )
+// e: 2016.11.27
+// IntersectcrvsPp Changed ( for adjacent points )
+// e: 2016.11.22
+// Ovaldata debugged ( Double written to GLIST)
+// e: 2016.11.07
+// Enclosing changed ( back to old version)
+// e: 2016.11.05
+// Enclosing debugged
+// e: 2016.11.03
+// Integrate(0) debugged
+// e: 2016.11.01
+// Bowdata changed ( "Expr(rot)=t0n1(r),a" )
+// e: 2016.10.31
+// Bowdata,Anglemark changed ( Bpos )
+// e: 2016.10.30
+// Bowdata debugged ( Bname )
+// e: 2016.10.29
+// Framedata changed ( option for window size )
+// Anglemark debugged ( Bname )
+// e: 2016.10.21
+// Changework changed
+// e: 2016.10.20
+// Arrowdata debugged ( Scaling )
+// Enclosing debugged ( data passed directly )
+// e: 2016.10.19
+// Changework changed ( Case that directory not exists, java "iskcexists" )
+// e: 2016.10.16
+// ParamonCurve debugged (scaling)
+// e: 2016.10.14
+// Deqplot debugged (mistake of formula)
+// e: 2016.10.10
+// Arrowdata debugged ( for scaling)
+// e: 2016.10.07
+// Listplot,Lineplot,Circledata Framedata changed ( auto naming)
+// Polygonplot changed ( Putpoint )
+// Divoptions changed ( opcindy)
+// e: 2016.10.02
+// Changework debugged ( Fnametex)
+// e: 2016.09.28
+// tab2list debugged ( for option "Blank" )
+// e: 2016.09.25
+// small bug-fix
+// IntegrateO debugged
+// e: 2016.09.19
+// Tab2list changed ( for numbers / mac )
+// e: 2016.09.16
+// Dispmat added
+// e: 2016.09.01
+// Tab2list, Columnlist added
+// e: 2016.09.01
+// norm added
+// e: 2016.08.15
+// DqDq added
+// e: 2016.07.30
+// Changework changed (Dq)
+// e: 2016.07.23
+// Changework changed
+// e: 2016.07.21
+// basic2 : makeshell,makebat changed
+// e: 2016.06.28
+// StringinPar changed ( Chart implemented )
+// StringPar renamed to Pardiagram ( Chart => Fig )
+// Listplot changed (Message option 2chars => 1char)
+// e: 2016.06.23
+// StringinPar added
+// e: 2016.06.07
+// Mackc added
+// Changework changed (iskcexists )
+// e: 2016.06.06
+// Changework changed ( "c" removed )
+// e: 2016.06.04
+// Ketinit, Changework changed (kc )
+// setketcindy.txt changed , kc changed in KetcindyPlugin
+// e: 2016.05.31
+// Ketinit() changed ( Setwindow message=n )
+// e: 2016.05.29
+// Ketinit() changed ( for /Users )
+
+
+//////////////////
+// s: 2014.12.01 v1.0.0
+// e: 2014.12.03 v1.0.1
+// e: 2014.12.05 v1.0.2
+// Paramplot debugged ( negative number )
+// e: 2014.12.09 v1.1.0
+// Setscaling changed ( Setwindow() added )
+// Arrowdata debugged ( Arrowhead options )
+// Arrowheadata debugged (Scaling )
+// Writetosci changed (XMIN,... assigned )
+// Coordinate System changed
+// Pcrd used for GCLIST, Lcrd used calculating
+// Extractdata added
+// Plotdata debugged (Exc option)
+// Assign added
+// Plotdata, Paramplot changed ( Assign used )
+// e: 2014.12.11
+// Circledata through 3 pts supported
+// e: 2014.12.14
+// ReadOutData changed ( for 3d )
+// e: 2014.12.16 v1.1.1
+// nodata option added
+// Makeshell added
+// e: 2014.12.17
+// Extractdata changed (GLIST )
+// e: 2014.12.18
+// Exptractdata changed ( case of list length==1)
+// Integrate changed ( for scaling )
+// IntersectcrvPhy, Intersectcrv, Meetcurve changed ( for scaling)
+// Arrowheaddata debugged ( for scaling )
+// e: 2014.12.19
+// Windispg changed ( empty case )
+// hatchdata changed ( Extractdata used )
+// e: 2014.12.20
+// Assign debugged ( case of .x )
+// Plotdata, Paramplot changed ( Num changed to number of intervals )
+// e: 2014.12.21
+// ReadOutData changed ( comment if headchar="#" )
+// e: 2014.12.22
+// Windispg changed ( case of empty data )
+// ReadOutData debugged
+// Flattenlist, WriteOutData added
+// e: 2014.12.24
+// Divoptions added
+// Addgraph added ( need to be revised )
+// e: 2014.12.27
+// Dotprod, Crossprod moved from 3dlib
+// BezierCurve added
+// e: 2014.12.28
+// Bezier changed (2 & 3 )
+// e: 2014.12.30
+// ViewTeX added
+// Bezier changed ( choosable 2/3 )
+// Hatchdata debugged ( iostr to list )
+// v1.1.3
+// e: 2014.12.31
+// Bezier changed ( varirous forms of Num, ctrlist usable)
+// Pointdata changed ( opcindy supported )
+// e: 2015.01.01
+// Bezier(list) supported ([ptlist,ctrlist,name]);
+// Readpcsvsla, Putbezierdata added
+// e: 2015.01.02
+// Bezier changed ( corresponded to Bezier in ketsciL5.1.4 )
+// Mkbezierptcrv added
+// e: 2015.01.03
+// Mkbeziercrv added
+// Putbezierdata changed (option "Size=")
+// BezierNumber added to Ketinit
+// Mkbezierptcrv changed ( ptctrLL returned )
+// Shade changed ( case of not defined yet )
+// e: 2015.01.04 v1.1.4
+// ketcindylogo added
+// e: 2015.01.05
+// CRspline added
+// e: 2015.01.05
+// CRspline changed ( "Rat=" added )
+// Com2ndpre added ( ex) shade
+// e: 2015.01.07
+// Com2ndpre added
+// Shade changed ( Com2ndpre used );
+// Bzspline added
+// e: 2015.01.08
+// Shade (Com2nd ) restored
+// Bzsspline added
+// Bspline added ( Usui )
+// e:2015.01.11
+// Beziersmooth, Beziersym = Bzspline, Bzsspline
+// Arrowheaddata,Arrowhead, Arrowdata changed ( option etc)
+// e: 2015.01.12
+// Setunitlen changed (added to GLIST )
+// e: 2015.01.13
+// Makeshell, Makebat changed ( case of Texmain=="");
+// Divoptions used for options of all commands
+// e: 2015.01.14
+// Arrowhead debugged
+// e: 2015.01.15
+// Makesh, Makebat debugged and changed ( Warning message )
+// e: 2015.01.17
+// WriteOutData changed ( list of Gname permitted)
+// e: 2015.01.20
+// Setpt changed ( written to COM2nd )
+// AddGraph debugged & changed
+// e: 2015.01.22
+// AddGraph changed ( for, stringdata, for pointdata)
+// MeasureDepth changed ( singlepoint =0)
+// Mkbezierptcrv changed (label of points )
+// Setcolor changed ( Setcolor (ketpic)command supported)
+// e: 2015.01.27
+// Plist, Vlist changed (format(. , 5 ) used )
+// e: 2015.01.31
+// Windispg(pltlist) added (changed from Windispg(GoutL))
+// e: 2015.02.05
+// format(.., 5) changed ( to remove "i" )
+// e: 2015.02.06
+// Defvar(name,value) changed (parse executed )
+// WritetoSci changed ( VLIST )
+// e: 2015.02.08
+// Defvar(name,value) debugged
+// Bezierpt changed ( available for 3d )
+// e: 2015.02.09
+// Changestyle, ChangeTablestyle, Textformat added
+// Assign changed (Textformat used )
+// e: 2015.02.13
+// Tabledata, Putpttable changed ( made from up to down )
+// e: 2015.02.14
+// Putpttable changed ( R0 fixed )
+// e: 2015.02.15
+// Putpttable debugged
+// Mksegments, Mkcircles added
+// PtonLine, PtonSeg added
+// e: 2015.02.16
+// Finddef added
+// e: 2015.02.18
+// Rotatedata,... debugged ( for pdlist )
+// e: 2015.02.19
+// Findgeoinfo,Sortpointlist added
+// e: 2015.02.21
+// Pointdata changed ( for non list, and "size=" added )
+// e: 2015.02.22
+// Letter, Expr changed ( ` )
+// PtonLine,... renamed to PutonLine,..
+// Pne, Psw renamed to NE, SE
+// e: 2015.02.23
+// help(example) added
+// Mkbezierptcrv changed ( available for BezierNumber >26)
+// Makehelplist,Makecmdlist,Savecmdlist,Quicksort,Lessstr added
+// Helplist,Help added
+// e: 2015.02.24
+// Help ( PointonCurve ) revised
+// e: 2015.02.25 v1.2.1
+// Helplist changed
+// Dependgeo, Viewprocess added
+// e: 2015.02.27
+// Drawprocess renamed to Workprocess
+// Help changed ( Capital transform quitted )
+// e: 2015.02.28
+// Makecmd changed ( Dirlb )
+// Mkbezierptcrv debugged ( name )
+// Shade changed ( err message removed )
+// system help added
+// e: 2015.03.05
+// CRspline changed (cinderella options available )
+// e: 2015.03.06 v1.2.2
+// Findarea added
+// e: 2015.03.07
+// Findlength added
+// e: 2015.03.11 v1.2.3
+// Mkbezierptcrv changed ( A,... => a,... )
+// e: 2015.03.12
+// Bowdata debugged
+// e: 2015.03.24 v.1.2.4
+// Listplot changed ( for stringdata )
+// e: 2015.03.25
+// Enclosing changed ( implemented to Cindy )
+// e: 2015.04.06 v.1.2.5
+// Ketinit changed ( for Fhead not defined )
+// IntersectcrvsPp changed ( Dif option added )
+// EnclosingS changed
+// Letter, Expr changed ( options "nodisp" )
+// Textformat changed ( for point )
+// text => textformat
+// e: 2015.04.10 v.1.2.6
+// Textformat debugged
+// Writetosci changed ( ThisVersion written )
+// e: 2015.04.12
+// Anglemark debugged
+// Bowdata debugged
+// Ptend debugged
+// e: 2015.04.20 v1.2.7
+// Enclosing debugged
+// e: 2015.04.21
+// Setcolor changed (for [c,m,y,k] )
+// e: 2015.04.28 v1.2.8
+// Setcolorrgb added
+// Setcolor changed ( KCOLOR abolished )
+// e: 2015.05.04
+// Toupper, Definecolor added
+// e: 2015.05.11 v1.3.1
+// Widispg(Pdata) debugged
+// Framedata changed ( for Findcell )
+// e: 2015.05.15
+// Writesci changed (arccos,.. added )
+// Plotdata, Paramplot changed (for out/in )
+// Deqplot added ( only executed externally )
+// Hatchdata changed ( in and out executed as default)
+// Writetosci changed ( load only if the file exists )
+// e: 2015.20 v1.3.2
+// Framedata debugged
+// Plotdata,Paramplot changed (for outdata )
+// Divoptions changed (Out-, In- supported )
+// e: 2015.21 v1.3.3
+// Tabledatalight, Tablelightseg added
+// Tablelightdata, Tgrid, Tseginfo, Tlistplot, Tsegrmv added
+// Putcell, ChangeTablestyle changed ( for Tabledatalight )
+// Help changed ( Description added with ? )
+// e: 2015.23 v1.3.3
+// Helplist changed ( fileslist is not to be added )
+// Tabledata changed (similar to Tabledatalight )
+// Findcell debugged
+// Changestyle debugged
+// Changetablestyle changed
+// e: 2015.05.26 v1.4.1
+// Help of Hatchdata changed
+// Removespace added
+// Drawlinetype added
+// e: 2015.05.27 v1.4.1a
+// Com1st changed ( string is added to GLIST )
+// e: 2015.05.31 v1.4.2
+// Divoptions debugged
+// IntersectcrvsPp debugged (Dif -> 0.05 )
+// e: 2015.0602 v1.4.3
+// Divoptions debugged
+// e: 2015.06.02 v1.4.4
+// Writetosci changed ( for C version )
+// e: 2015.06.03 v1.4.5
+// Tlistplot changed ( for more than 2 points )
+// e: 2015.06.11
+// Talbedata debugged ( Setwindow )
+// Arrowdata changed ( listplot )
+// e: 2015.06.20 v1.4.6
+// Helplist debugged
+// e: 2015.06.22 v1.5.0
+// .cs adopted
+// Helplist changed
+// Makeshell, Makebat changed ( "..." )
+// e: 2015.07.06 v1.5.1
+// helpJ slighty changed
+// Assign debugged
+// Depplot changed ( realtime )
+// e: 2015.07.15
+// Presentation, Mkslides added
+// e: 2015.07.16 v 1.5.3
+// Mksh, Mkbat slightly changed
+// Hatchdata changed ( for "nodisp" )
+// e: 2015.07.21 v 1.5.4
+// Presendata changed ( for preample)
+// e: 2015.07.25
+// Pcrd changed ( re added for point )
+// e: 2015.07.26 v1.5.5
+// Drawsegmark, Parabolaplot, Putintersect added
+// e: 2015.07.27
+// Polygonplot, Drawsegmark added
+// e: 2015.07.28
+// Texmain renamed to Texparent
+// e: 2015.08.07 v1.5.6
+// Ellipseplot added
+// e: 2015.08.08
+// Hyperbolaplot added
+// Parabolaplot changed ( range )
+// e: 2015.08.09
+// Polygonplot changed ( options added )
+// help of Letterrot,Exprrot debugged
+// e: 2015.08.10
+// Ellipseplot changed ( range added )
+// e: 2015.08.14 v1.5.7
+// Mkslides debugged ( Texmain )
+// e: 2015.08.29
+// Ovaldata debugged
+// e: 2015.09.10 v1.6.0
+// WritetoR, kcR, PlotdataR added
+// e: 2015.09.12 v1.6.1
+// Writesci, Extractdata changed ( for length==1)
+// Partcrv, Enclosing debugged (for scaling )
+// e: 2015.09.13
+// CalcbyR added
+// e: 2015.09.14
+// Integrate changed ( Oshima rule implemented, Way => Rule )
+// Ospline added
+// e: 2015.09.15
+// Sprintf added ( = sprintf("%*.(dig)f") );
+// Assign changed ( multi assignment supported )
+// e: 2015.09.16 v1.6.2
+// KcR changed ( wait added )
+// PlotdataR, CalcbyR changed ( PathR set as defalt )
+// Boxplot added
+// e: 2015.09.17 v1.6.3
+// Histplot, Framedata2 added
+// Boxplot changed ( from file )
+// Boxplot added
+// e: 2015.09.18 v1.6.4
+// Rulerscale added
+// Tlisplot changed ( "Msg=no" added )
+// e: 2015.09.20 v1.6.5
+// CalcbyR changed ( in case of name is a number )
+// e: 2015.09.21
+// Ospline changed ( in case of non-closed )
+// e: 2015.09.23 v1.6.6
+// ColorRgb2Cmyk, ColorCmyk2Rgb, Colorinfile added
+// e: 2015.09.25
+// PlotdataR, CalcbyR changed ("make" option not needed )
+// e: 2015.09.29 v1.6.7
+// CalcbyR, Boxplot debugged/changed
+// Readcsv added
+// e: 2015.09.29 v1.6.8
+// Histplot debugged/changed
+// WritetoR debugged
+// e: 2015.09.30 v1.6.9
+// WritetoR changed ( "setwd" added )
+// PlotdiscR added
+// e: 2015.10.01 v1.6.9a
+// Readcsv changed ( for blank )
+// Scatterplot added
+// e: 2015.10.02 v1.6.9b
+// WritetoR,... changed ( options )
+// textformat changed ( Dq added for string )
+// CalcbyR chanded ( case of start with "=", name added )
+// e: 2015.10.03 v1.7.0
+// Histplot changed ( options for Listplot)
+// Writecsv added
+// e: 2015.10.04 v1.8.0
+// WritetoS, kcS, CalcbyS added
+// ReadOutData debugged ( for null data, and case of outdt is null )
+// e: 2015.10.05
+// CalcbyR, CalcbyS changed (deleting the file at first,
+// waiting until file generated )
+// PlotdataR, PlotdiscR, Readcsv, Boxplot, Histplot changed ( timing )
+// e: 2015.10.06
+// Implicitplot added ( using CalcbyS)
+// e: 2015.10.08 v1.8.1
+// kcR, kcS,... changed ( path of "kc" can be at any place, etc )
+// Colorcode added
+// e: 2015.10.13 v1.8.2
+// waiting added
+// WritetoR changed
+// PlotdataR debugged/changed
+// WaitUnit (global var ) added
+// e: 2015.10.15 v1.8.3
+// HatchdataS, MkprecommandS added
+// Histplot changed ( density options )
+// Scaledata, ... debugged ( in case of list)
+// Writecsv changed (option of "Col=" )
+// e: 2015.10.16
+// CalcbyS, CalcbyR, Hatchdata changed
+// e: 2015.10.17
+// Readcsv changed ( option "Head=" added )
+// e: 2015.10.19 v1.8.4
+// Colorcode changed (hsi,hwb supported)
+// e: 2015.10.22 v1.8.5
+// Boxplot, Histplot changed ( option "" )
+// OutFileLIst,Rform added
+// e: 2015.10.29 v1.8.6
+// WriteOutData changed (endmark //// )
+// ReadOutData changed (renewal )
+// CalcbyR, CalcbyS changed ( //// used)
+// ErrFlag are defined
+// e: 2015.10.31 v2.0.0
+// Bugs fixed
+// e: 2015.11.01 v2.0.1
+// CalcbyS changed ( for [[[ ... ]]] )
+// Hatchdata changed from HatchdataS
+// (Old version renamed to Hatchdata2 )
+// e: 2015.11.03 v2.0.2
+// Default of waiting raised
+// e: 2015.11.05 v2.1.0
+// lib divided to libbasic, libout
+// Use of cs changed
+// Mkhellp changed
+// Colorcode,... changed/debugged
+// Cindycolor added
+// e: 2015.11.06 v2.1.1
+// libbasic divided to libbasic1,libbasic2
+// Readcsv, .., changed ( for case of non-exiting file )
+// e: 2015.11.09 v2.1.2
+// helplist debugged
+// Getlinestyle debugged ( for id )
+// e: 2015.11.09 v2.1.3
+// Plotdata, Paramplot changed ( LFmark)
+// e: 2015.11.20 v2.2.1
+// Addcolor added
+// e: 2015.11.20 v2.2.2
+// Koutenseg, IntersectcrvsPp debugged (from Usui)
+// e: 2015.11.24 v2.2.3 ( out )
+// e: 2015.11.26
+// IntegrateO changed ( for a>b of range )
+// e: 2015.11.29 v2.2.5
+// basic2, out
+// example.txt adde
+// e: 2015.12.08 v2.2.6
+// basic2, out
+// e: 2015.12.12 v2.2.7
+// basic2, out ( autosetting )
+// e: 2015.12.14 v2.2.8
+// basic2, ( autosetting of slides)
+// e: 2015.12.23 v2.2.9
+// Listplot, Lineplot debugged ( precision)
+// Numcrv debugged (tmp)
+// e: 2016.01.07 v2.3.0
+// out (Mxtex)
+// e: 2016.01.10 v2.3.1
+// out (Mxtex,kcS)
+// e: 2016.01.12
+// basic2 (Viewtex)
+// e: 2016.01.18 v2.3.2
+// basic2 (Viewtex)
+// out ( Mxtex )
+// e: 2016.01.21 v2.3.3
+// Ptstart debugged
+// basic2 ( Drwxy,Sciform )
+// e: 2016.01.24 v2.3.4
+// Shade changed ( for non-string data )
+// 3d ( concatobj )
+// e: 2016.01.27
+// Invert debugged
+// Invert changed ( for a list of plotdata )
+// Listplot changed ("sg" not added when name starts with "-" )
+// Opcrvs added
+// e: 2016.01.29
+// Ovaldata debugged ( "nodisp" , Tex output)
+// e: 2016.01.29 v2.3.5
+// out
+// e: 2016.02.22
+// basic2, 3d, out
+// e: 2016.02.24
+// out
+// e: 2016.02.26
+// out
+// e: 2016.02.29 v2.3.7
+// GetLinestyle changed ( "sub..." not outputted to TeX )
+// out,3d
+// e: 2016.03.02
+// out,3d
+// e: 2016.03.03
+// out
+// e: 2016.03.05
+// basic2,out
+// e: 2016.03.07
+// basic2
+// e: 2016.03.10
+// integrateO changed ( for geo. point )
+// e: 2016.03.14
+// out
+// e: 2016.03.16
+// IntegralO debugged
+// e: 2016.03.17 v2.3.8
+// out
+// e: 2016.03.25 v2.3.9
+// basic2
+// e: 2016.03.26
+// out, basic2
+// e: 2016.03.27
+// out
+// e: 2016.03.28
+// basic2
+// Removespace debugged
+// e: 2016.04.01
+// mv
+// e: 2016.04.03
+// Partcrv debugged
+// e: 2016.04.04
+// Addgraph changed ( when data is a string )
+// e: 2016.04.05
+// Addgraph changed ( case data is a list of plotdata )
+// Chunderscore added
+// e: 2016.04.06
+// out (Hatchdata)
+// e: 2016.04.08
+// Ketinit() changed ( FigPdfList added )
+// e: 2016.04.09 v2.4.1
+// Setpen,Setpt changed ( PenThick, TenSize )
+// Arrowdata changed ( Arrow thickness/position for "l" )
+// Addgraph changed ( for non string data )
+// e: 2016.04.11
+// basic2(BBdata)
+// e: 2016.04.13
+// Changework added
+// e: 2016.04.15
+// out(Mkobj...)
+// e: 2016.04.17
+// basic2, out
+// e: 2016.04.23
+// Changework debugged
+// e: 2016.04.25
+// Changelib added
+// e: 2016.04.26
+// Indexall added
+// e: 2016.05.03
+// Nearestpt debugged
+// e: 2016.05.12
+// Parlevel added
+// e: 2016.05.16
+// Ketinit changed ( ADDPACK added)
+// e: 2016.05.22
+// Parlevel changed ( for any parenthes )
+// Bracket aded ( Parlevel renamed)
+// e: 2016.05.25
+// Op added
+////// To Reverse sequence //////
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2.cs b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2.cs
new file mode 100644
index 00000000..80e48da9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2.cs
@@ -0,0 +1,5135 @@
+// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team
+//
+//This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>
+//
+
+println("ketcindybasic2(2017.08.23) loaded");
+
+//help:start();
+
+Dispchoice():=(
+ if(islist(Ch),
+ if(!isreal(ChNum),ChNum=1);
+ drawtext(mouse().xy,"Ch="+text(Ch)+" N="+text(ChNum),size->24,color->[0,0,1]);
+ );
+);
+
+Datetime():=(
+//help:Datetime();
+ regional(names,dt,tmp);
+ tmp=getdatetime();
+ dt=tokenize(tmp," ");
+ dt=apply(dt,if(!isstring(#),text(#),#));
+ names=["Jan","Feb","Mar","Apr","May","Jun",
+ "Jul","Aug","Sep","Oct","Nov","Dec"];
+ tmp=select(1..12,names_#==dt_2);
+ tmp=text(tmp_1);
+ tmp=[dt_6+"/"+tmp+"/"+dt_3,dt_4];
+);
+
+Rotatepoint(point,Theta,ctr):=(
+//help:Rotatepoint(A,2*pi/3,B);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(ctr);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ [X2,Y2];
+);
+
+Translatepoint(point,mov):=(
+//help:Translatepoint(A,[2,3]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=X1+Cx;
+ Y2=Y1+Cy;
+ [X2,Y2];
+);
+
+Scalepoint(point,ratio,center):=(
+//help:Scalepoint(A,[3,2],[0,0]);
+ regional(X1,X2,Y1,Y2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ tmp=Lcrd(center);
+ Cx=tmp_1; Cy=tmp_2;
+ X2=Cx+ratio_1*(X1-Cx);
+ Y2=Cy+ratio_2*(Y1-Cy);
+ [X2,Y2];
+);
+
+Reflectpoint(point,symL):=(
+//help:Reflectpoint(A,B);
+//help:Reflectpoint(A,[[2,3]]);
+//help:Reflectpoint(A,[C,E]);\\
+ regional(X1,X2,Y1,Y2,Us,Vs,Pt1,Pt2,Cx,Cy,tmp);
+ tmp=Lcrd(point);
+ X1=tmp_1; Y1=tmp_2;
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ [X2,Y2];
+);
+
+Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]);
+Rotatedata(nm,plist,angle,options):=(
+//help:Rotatedata("1","crAB",pi/3,[[1,5],"dr,2"]);
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,
+ opcindy,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="rt"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,Pt=Lcrd(tmp1_1));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ if(isstring(angle),Theta=parse(angle),Theta=angle);
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Rotatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Rotatedata("+tmp1+","
+ +textformat(angle,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Translatedata(nm,plist,mov):=Translatedata(nm,plist,mov,[]);
+Translatedata(nm,plist,mov,options):=(
+//help:Translatedata("1",["gr1"],[1,2]);
+ regional(tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,
+ opcindy,X2,Y2,Ltype,Noflg,name);
+ name="tr"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ tmp=Lcrd(mov);
+ Cx=tmp_1; Cy=tmp_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=tmp_1+Cx;
+ Y2=tmp_2+Cy;
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Translatedata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Translatedata("+tmp1+","+textformat(mov,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Scaledata(nm,plist,ratioV):=(
+ regional(tmp);
+ tmp=Lcrd(ratioV);
+ Scaledata(nm,plist,tmp_1,tmp_2,[]);
+);
+Scaledata(nm,plist,Arg1,Arg2):=(
+//help:Scaledata("1","crAB",3,2,[[0,0]]);
+ regional(tmp,options);
+ if(islist(Arg2),
+ tmp=Lcrd(Arg1);
+ options=Arg2;
+ Scaledata(nm,plist,tmp_1,tmp_2,options);
+ ,
+ Scaledata(nm,plist,Arg1,Arg2,[]);
+ );
+);
+Scaledata(nm,plist,rx,ry,options):=(
+ regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name);
+ name="sc"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ tmp1=tmp_6;
+ if(length(tmp1)>0,
+ Pt=Lcrd(tmp1_1);
+ );
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Cx=Pt_1; Cy=Pt_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X2=Cx+rx*(tmp_1-Cx);
+ Y2=Cy+ry*(tmp_2-Cy);
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Scaledata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Scaledata("+tmp1+","
+ +textformat(rx,5)+","+textformat(ry,5)+","+textformat(Pt,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]);
+Reflectdata(nm,plist,symL,options):=(
+//help:Reflectdata("1","crAB",[C]);
+ regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,
+ opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name);
+ name="re"+nm;
+ Pt=[0,0];
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opcindy=tmp_(length(tmp));
+ pdata=plist;
+ if(isstring(pdata),pdata=[pdata]);
+ if(!isstring(pdata_1) & MeasureDepth(pdata)==1,
+ pdata=[pdata];
+ );
+ Pt1=Lcrd(symL_1);
+ if(length(symL)==1,
+ Pt2=Pt1;
+ ,
+ Pt2=Lcrd(symL_2);
+ );
+ Us=Pt2_1-Pt1_1;
+ Vs=Pt2_2-Pt1_2;
+ PdL=[];
+ forall(pdata,Njj,
+ if(isstring(Njj),Kj=parse(Njj),Kj=Njj);
+ if(MeasureDepth(Kj)==1,Kj=[Kj]);
+ tmp2=[];
+ forall(Kj,Nj,
+ tmp1=[];
+ forall(Nj,
+ tmp=LLcrd(#);
+ X1=tmp_1;
+ Y1=tmp_2;
+ if(Pt1==Pt2,
+ X2=2*Pt1_1-X1;
+ Y2=2*Pt1_2-Y1;
+ ,
+ X2=(Us^2-Vs^2)/(Us^2+Vs^2)*X1+2*Us*Vs/(Us^2+Vs^2)*Y1
+ -2*Vs*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ Y2=2*Us*Vs/(Us^2+Vs^2)*X1-(Us^2-Vs^2)/(Us^2+Vs^2)*Y1
+ +2*Us*(Us*Pt1_2-Vs*Pt1_1)/(Us^2+Vs^2);
+ );
+ tmp1=concat(tmp1,[[X2,Y2]]);
+ );
+ tmp2=concat(tmp2,[tmp1]);
+ );
+ PdL=concat(PdL,tmp2);
+ );
+ if(Noflg<3,
+ println("generate Reflectdata "+name);
+ tmp1=[];
+ forall(PdL,tmp2,
+ tmp=apply(tmp2,Pcrd(#));
+ tmp1=append(tmp1,tmp);
+ );
+ if(length(tmp1)==1,tmp1=tmp1_1);
+ tmp=name+"="+textformat(tmp1,5);
+ parse(tmp);
+// tmp1=textformat(plist,5);
+ tmp1=text(plist); // 15.10.15
+ tmp1=replace(tmp1,"[","list(");
+ tmp1=replace(tmp1,"]",")");
+ tmp=name+"=Reflectdata("+tmp1+","+textformat(symL,5)+")";
+ GLIST=append(GLIST,tmp);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ PdL;
+);
+
+Mksegments():=Mksegments([]);
+Mksegments(options):=(
+//help:Mksegments();
+ regional(segstr,p,q,r,tmp1,tmp2,tmp3);
+ forall(allsegments(),seg,
+ str=text(inspect(seg,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Listplot([parse(p),parse(q)]);
+ );
+);
+
+Mkcircles():=Mkcircles([]);
+Mkcircles(options):=(
+//help:Mkcircles():
+ regional(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4);
+ forall(allcircles(),cir,
+ str=text(inspect(cir,"definition"));
+ tmp1=indexof(str,"(");
+ tmp2=indexof(str,";");
+ tmp3=indexof(str,")");
+ tmp4=indexof(str,";",tmp2+1);
+ if(tmp4==0,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp3-1);
+ Circledata([parse(p),parse(q)]);
+ ,
+ p=substring(str,tmp1,tmp2-1);
+ q=substring(str,tmp2,tmp4-1);
+ r=substring(str,tmp4,tmp3-1);
+ Circledata([parse(p),parse(q),parse(r)]);
+ );
+ );
+);
+
+Makesciarg(arglist):=(
+ regional(str,tmpstr);
+ str="";
+ forall(arglist,
+ if(isstring(#),
+ tmpstr=Dq+#+Dq;
+ ,
+ tmpstr=textformat(#,5);
+ );
+ str=str+tmpstr+",";
+ );
+ str=substring(str,0,length(str)-1);
+ str;
+);
+
+Setax(arglist):=(
+//help:Setax(["l","x","e","y","n","O","sw"]);
+//help:Setax([7,"nw"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com1st("Setax("+tmp+")");
+);
+
+Htickmark(arglist):=(
+//help:Htickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp="";
+ tmp=Makesciarg(arglist);
+ Com2nd("Htickmark("+tmp+")");
+);
+
+Vtickmark(arglist):=(
+//help:Vtickmark([1,"1",2,"sw","2"]);
+ regional(tmp);
+ tmp=Makesciarg(arglist);
+ Com2nd("Vtickmark("+tmp+")");
+);
+
+Vtick(py):=Vtick(py,MARKLEN,[]);
+Vtick(py,len):=Vtick(py,len,[]);
+Vtick(py,len,options):=(
+//help:Vtick(1,0.1,options);
+ regional(tmp,tmp1,tmp2);
+ tmp="v"+text(round(py*100));
+ tmp=replace(tmp,"-","m");
+ tmp1=[0-len/2,py];
+ tmp2=[0+len/2,py];
+ Listplot(tmp,[tmp1,tmp2],options);
+);
+
+Htick(px):=Htick(px,MARKLEN,[]);
+Htick(px,len):=Htick(px,len,[]);
+Htick(px,lenorg,options):=(
+//help:Htick(-1,0.1,options);
+ regional(len,tmp,tmp1,tmp2);
+ tmp=LLcrd([0,lenorg]);
+ len=tmp_2;
+ tmp="h"+text(round(px*100));
+ tmp=replace(tmp,"-","m");
+ tmp1=[px,0-len/2];
+ tmp2=[px,0+len/2];
+ Listplot(tmp,[tmp1,tmp2],options);
+);
+
+Drwxy():=(
+//help:Drwxy();
+ Com2nd("Drwxy()");
+ Addax(0); // 16.01.21
+);
+
+Drwpt(pstr):=Drawpoint(pstr);
+Drwpt(ptlist,nn):=( // 16.03.05 from
+//help:Drwpt(A);
+//help:Drwpt("[1,1],0");
+//help:Drwpt(A,0);
+//help:Drwpt([1,2],0);
+ Drawpoint(ptlist,nn);
+);
+Drawpoint(pstr):=(
+ if(isstring(pstr),
+ println("Drwpt : "+pstr);
+ Com2nd("Drwpt("+pstr+")");
+ ,
+ Drawpoint(pstr,1);
+ );
+);
+Drawpoint(ptlistorg,nn):=(
+ regional(ptlist,thick,tmp,tmp1);
+ println("Drwpt : "+text(ptlistorg));
+ if(islist(ptlistorg),
+ if(MeasureDepth(ptlistorg)==1,
+ ptlist=ptlistorg
+ ,
+ ptlist=[ptlistorg]
+ );
+ ,
+ ptlist=[ptlistorg]
+ );
+ thick=PenThick/PenThickInit;// 16.04.09 from
+ tmp1=max(TenSize/TenSizeInit,1)/8;
+ Setpen(tmp1); // 16.04.09 upto
+ forall(ptlist,
+ tmp=textformat(#,5)+","+text(nn);
+ Com2nd("Drwpt("+tmp+")"); // 16.04.09
+ );
+ Setpen(thick); // 16.04.09
+);// 16.03.05 upto
+
+Addax(param):=(
+//help:Addax(0);
+ ADDAXES=textformat(param,5);
+);
+
+Expr(Pt,Dr,St):=Expr([Pt,Dr,St]);
+Expr(list):=Expr(list,[]);
+Expr(listorg,options):=( //16.10.09
+//help:Expr([A,"e","f(x)=x^2"]);
+ regional(list,str,tmp,tmp1,tmp2);
+ list=listorg;
+ forall(1..round(length(list)/3),
+ str=list_(3*#);
+ if(!isstring(str),str=format(str,5));
+ str="$"+str+"$";
+ list_(3*#)=str;
+ );
+ Letter(list,options);
+);
+
+Letter(Pt,Dr,St):=Letter([Pt,Dr,St]);
+Letter(list):=Letter(list,[]);
+Letter(list,options):=(
+//help:Letter([C,"c","Graph of f(x)"]);
+ regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy,
+ opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2);
+ tmp=Divoptions(options);
+ Noflg=tmp_2;
+ opL=select(options,indexof(#,"->")>0); //16.10.09from
+ tmp=select(opL,indexof(#,"color"));
+ size=12;
+ clr=[0,0,0];
+ bld=false;
+ ita=false;
+ aln="left";
+ forall(opL,
+ tmp=indexof(#,"->");
+ tmp1=removespace(substring(#,0,tmp-1));
+ tmp2=substring(#,tmp+1,length(#));
+ if(tmp1=="size",sz=parse(tmp2));
+ if(tmp1=="color",clr=parse(tmp2));
+ if(tmp1=="bold",bld=parse(tmp2));
+ if(tmp1=="ita",ita=parse(tmp2));
+ );//16.10.09upto
+ Off=-4;
+ Dmv=8;
+ Nj=1;
+ while(Nj+2<=length(list),
+// Pos=textformat(list_Nj,5);
+ Pos=list_Nj;
+ Dir=list_(Nj+1);
+ tmp=indexof(Dir,"s")+indexof(Dir,"n");//16.10.19from
+ if(tmp>0,
+ tmp=indexof(Dir,"w")+indexof(Dir,"e");
+ if(tmp==0,
+ Dir="c"+Dir;//16.10.08
+ );
+ );//16.10.19upto
+ Str=list_(Nj+2);
+ if(!isstring(Str),Str=format(Str,5)); // 16.09.30,10.09
+ tmp=replace(Str,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ Str=replace(tmp,".y","(2)");
+ if(indexof(Str,"`")>0,
+// tmp=Dq+",Assign('"+Str+"','`',Prime()))";
+ tmp=Dq+",Assign('"+Str+"'))"; // 15.02.22
+ ,
+ tmp=Dq+","+Dq+Str+Dq+")";
+ );
+ if(Noflg==0,
+ Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10
+ );
+ if(Noflg<2,
+ Xmv=0;//16.10.13
+ Ymv=-4;
+ if(indexof(Dir,"n")>0,
+ Ymv=Dmv/2;
+ );
+ if(indexof(Dir,"s")>0,
+ Ymv=-Dmv*3/2;//16.10.13
+ );
+ if(indexof(Dir,"e")>0,
+ Xmv=Dmv/2;
+ Off=0;
+ aln="left";
+ );
+ if(indexof(Dir,"w")>0,
+ Xmv=-Dmv/2;
+ Off=0; // 16.09.30from
+ aln="right";
+ );
+ if(indexof(Dir,"c")>0,
+ Xmv=0;//16.10.13
+ Off=0;
+ if(Ymv==0,Ymv=-4);//16.10.08
+ aln="mid"; // 16.09.30upto
+ );
+ drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv],
+ size->sz,color->clr,align->aln,bold->bld,italics->ita);//16.10.09
+ );
+ Nj=Nj+3;
+ );
+);
+
+Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str);
+Letterrot(pt,dir,movstr,str):=(
+//help:Letterrot(C,B-A,"AB"):
+//help:Letterrot(C,B-A,0,5,"AB"):
+//help:Letterrot(C,B-A,"t0n5","AB"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Letterrot(pt,dir,tmov,nmov,str);
+);
+Letterrot(pt,dir,tmov,nmov,str):=(
+ Letter([pt,"c",str],["notex"]);
+ Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str);
+Exprrot(pt,dir,movstr,str):=(
+//help:Exprrot(C,B-A,"d"):
+//help:Exprrot(C,B-A,0,5,"d"):
+//help:Exprrot(C,B-A,"t0n5","d"):
+ regional(tmov,nmov,tmp,tmp1,tmp2);
+ tmp1=indexof(movstr,"t");
+ tmp2=indexof(movstr,"n");
+ if(tmp1>0,
+ if(tmp2>0,tmp=tmp2-1,tmp=length(movstr));
+ tmov=parse(substring(movstr,tmp1,tmp));
+ ,
+ tmov=0;
+ );
+ if(tmp2>0,
+ nmov=parse(substring(movstr,tmp2,length(movstr)));
+ ,
+ nmov=0;
+ );
+ Exprrot(pt,dir,tmov,nmov,str);
+);
+Exprrot(pt,dir,tmov,nmov,str):=(
+ Expr([pt,"c",str],["notex"]);
+ Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+str+"')");
+);
+
+Putslider(ptstr,p1,p2):=Slider(ptstr,p1,p2);
+Slider(ptstr,p1,p2):=( //17.04.11
+//help:Slider("A-C-B",[-3,0],[3,0]);
+ regional(pA,pB,pC,seg,sname,Alpha,tmp,tmp1);
+ tmp=indexall(ptstr,"-");
+ pA=substring(ptstr,0,tmp_1-1);
+ pC=substring(ptstr,tmp_1,tmp_2-1);
+ pB=substring(ptstr,tmp_2,length(ptstr));
+ seg=pA+pB;
+ Alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ sname="";
+ forall(1..(length(seg)),
+ tmp=substring(seg,#-1,#);
+ tmp1=indexof(Alpha,tmp);
+ if(tmp1>0,
+ sname=sname+unicode(text(tmp1+96),base->10);
+ ,
+ sname=sname+tmp;
+ );
+ );
+ Putpoint(pA,p1);
+ Putpoint(pB,p2);
+ Listplot([parse(pA),parse(pB)],["notex","color->[0,0.4,0.4]","size->2"]);
+// create([sname],"Segment",[parse(pA),parse(pB)]);
+// tmp2=Listplot("",[p1,p2],["nodata"]);
+ Putonseg(pC,parse("sg"+pA+pB));
+// create([pC],"PointOn",[parse(sname),0.5]);
+);
+
+Putpoint(name,Pt):=Putpoint(name,Pt,Pt);
+Putpoint(name,Ptinit,Pt):=(
+//help:Putpoint("A",[1,2],[1,A.y]);
+ regional(ptstr);
+ ptstr=apply(allpoints(),#.name);//16.10.06
+ if(!contains(ptstr,name),
+ createpoint(name,Pcrd([Ptinit_1,Ptinit_2]));
+ ,
+ ptstr=name+".xy="+textformat(Pcrd(Pt),5);
+ parse(ptstr);
+ );
+);
+
+Bezierpt(t,ptlist,ctrlist):=(
+ regional(flg3,p0,p1,p2,p3,p4,p5,p6,p7,p8,p9);
+ p0=ptlist_1;
+ p3=ptlist_2;
+ p1=ctrlist_1;
+ if(length(ctrlist)==1,
+ p2=p3;
+ flg3=0;
+ ,
+ p2=ctrlist_2;
+ flg3=1;
+ );
+ if(length(p0)<3, // 15.02.08
+ p0=Lcrd(p0);
+ p3=Lcrd(p3);
+ p1=Lcrd(p1);
+ p2=Lcrd(p2);
+ );
+ p4=(1-t)*p0+t*p1;
+ p5=(1-t)*p1+t*p2;
+ p6=(1-t)*p2+t*p3;
+ p7=(1-t)*p4+t*p5;
+ p8=(1-t)*p5+t*p6;
+ p9=(1-t)*p7+t*p8;
+ if(flg3==0,p7,p9);
+);
+
+Bezier(ptctrlist):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]);
+Bezier(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options);
+Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options);
+BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]);
+BezierCurve(nm,ptlistorg,ctrlistorg,options):=(
+//help:Bezier("1",[A,D],[B,C]);
+//help:Bezier(options=["Num=10"]);
+ regional(name,Ltype,Noflg,opstr,opcindy,Num,
+ ptlist,ctrlist,tmp,tmp1,tmp2,ii,st,out,list);
+ name="bz"+nm;
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Num=10;
+ tmp1=tmp_5;
+ forall(tmp1, // 14.12.31
+ if(substring(#,0,1)=="N",
+ tmp2=indexof(#,"=");
+ Num=parse(substring(#,tmp2,length(#)));
+ opstr=opstr+","+Dq+#+Dq;
+ );
+ );
+ ptlist=apply(ptlistorg,Lcrd(#)); // 16.08.16
+ ctrlist=[]; // 14.12.31
+ if(length(ctrlistorg)==length(ptlist)-1,
+ forall(ctrlistorg,tmp1,
+ if(MeasureDepth(tmp1)==0,tmp=[tmp1],tmp=tmp1);
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ ,
+ forall(1..(length(ptlist)-1),ii,
+ tmp=ctrlistorg_((2*ii-1)..(2*ii));
+ tmp=apply(tmp,Lcrd(#)); // 16.08.16
+ ctrlist=append(ctrlist,tmp);
+ );
+ );
+ if(!islist(Num),
+ Num=apply(ctrlist,Num);
+ );
+ list=[];
+ forall(1..(length(ptlist)-1),ii,
+ tmp1=ptlist_(ii..(ii+1));
+ tmp2=ctrlist_ii;
+ if(ii==1,st=0,st=1);
+ forall(st..Num_ii,
+ tmp=Bezierpt(#/Num_ii,tmp1,tmp2);
+ list=append(list,tmp);
+ );
+ );
+ if(Noflg<3,
+ println("generate Bezier "+name);
+ out=apply(list,Pcrd(#));
+ tmp=name+"="+textformat(out,5);
+ parse(tmp);
+ tmp1=textformat(ptlist,5);
+ tmp1="list("+substring(tmp1,1,length(tmp1)-1)+")";
+ tmp2=textformat(ctrlist,5);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+")";
+ GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")");
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ list;
+);
+
+Readcsvsla(fname):=Readplotdigdata(fname,[]);
+Readcsvsla(fname,options):=Readplotdigdata(fname,options);
+Readplotdigdata(fname):=Readplotdigdata(fname,[]);
+Readplotdigdata(fname,options):=(
+ regional(fsc,mv,cmdall,dataL,nd,npt,ptdata,ii,tmp,tmp1,tmp2,tmp3);
+ tmp=Divoptions(options);
+ tmp1=tmp_6;
+ sc=1;//10;
+ mv=[0,0];//[5,5];
+ forall(tmp1,
+ if(!islist(#),sc=#,mv=#);
+ );
+ if(indexof(fname,".")>0,
+ tmp=load(fname);
+ ,
+ tmp=load(fname+".txt");
+ );
+ cmdall=tokenize(tmp,"//");
+ dataL=[];
+ forall(2..length(cmdall),ii,
+ tmp1=parse("["+cmdall_ii+"]");
+ dataL=append(dataL,tmp1);
+ );
+ if(length(dataL_(length(dataL)))<2,
+ dataL=dataL_(1..(length(dataL)-1));
+ );
+ nd=length(dataL_1)/2;
+ npt=length(dataL);
+ ptdata=[];
+ forall(1..nd,ii,
+ tmp3=[];
+ forall(1..npt,
+ tmp1=dataL_#_(2*ii-1);
+ tmp2=dataL_#_(2*ii);
+ if(isreal(tmp1),
+ tmp3=append(tmp3,[tmp1,tmp2]);
+ );
+ );
+ ptdata=append(ptdata,tmp3);
+ );
+ tmp1=[];
+ forall(ptdata,
+ tmp=#/sc;
+ tmp=Translatedata("1",[tmp],-mv,["nodata"]);
+ tmp1=append(tmp1,tmp);
+ );
+ ptdata=tmp1;
+ ptdata;
+);
+
+Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]);
+Putbezierdata(name,ptL,options):=(
+ regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs);
+ tmp=Divoptions(options);
+ psize=3;
+ Deg=3;
+ tmp1=tmp_5;
+ forall(tmp1,
+ if(substring(#,0,1)=="D",
+ tmp=indexof(#,"=");
+ Deg=parse(substring(#,tmp,length(#)));
+ );
+ if(substring(#,0,1)=="S",
+ tmp=indexof(#,"=");
+ psize=parse(substring(#,tmp,length(#)));
+ );
+ );
+ pts=[];
+ ctrs=[];
+ forall(1..length(ptL),
+ p2=ptL_#; // 16.08.16
+ if(ispoint(p2),
+ tmp1=text(p2);
+ ,
+ tmp1=name+text(#);
+ Putpoint(tmp1,p2,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ inspect(parse(tmp1),"ptsize",psize);
+ pts=append(pts,parse(tmp1));
+ inspect(parse(tmp1),"color",4);
+ if(#>1,
+ p1=Lcrd(ptL_(#-1)); // 16.08.16
+ p2=Lcrd(ptL_#); // 16.08.16
+ if(Deg==3,
+ tmp=(2*p1+p2)/3;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ tmp=(p1+2*p2)/3;
+ tmp2=name+"q"+text(#-1);
+ Putpoint(tmp2,tmp,Lcrd(parse(tmp2))); // 16.08.16
+ inspect(parse(tmp2),"labeled",false); //15.01.22
+ Letter([parse(tmp2),"ne",tmp2],["notex"]); //15.01.22
+ inspect(parse(tmp2),"ptsize",psize);
+ inspect(parse(tmp2),"color",3);
+ ctrs=append(ctrs,[parse(tmp1),parse(tmp2)]);
+ ,
+ tmp=(p1+p2)/2;
+ tmp1=name+"p"+text(#-1);
+ Putpoint(tmp1,tmp,Lcrd(parse(tmp1))); // 16.08.16
+ inspect(parse(tmp1),"labeled",false); //15.01.22
+ Letter([parse(tmp1),"ne",tmp1],["notex"]); //15.01.22
+ inspect(parse(tmp1),"ptsize",psize);
+ inspect(parse(tmp1),"color",3);
+ ctrs=append(ctrs,[parse(tmp1)]);
+ );
+ );
+ );
+ [pts,ctrs,name];
+);
+
+Bezierstart(n):=( // 2016.02.26
+ BezierNumber=n;
+);
+
+Mkbezierptcrv(ptdata):=Mkbezierptcrv(ptdata,[]);
+Mkbezierptcrv(ptdata,options):=(
+ //help:Mkbezierptcrv([A,B,C,D]);
+ //help:Mkbezierptcrv([[A,B],[C,D]]);
+ //help:Mkbezierptcrv(options=["Num=10"]);
+ // global BezierNumber
+ regional(ptlist,Out,tmp,tmp1,tmp2);
+ if(isstring(ptdata),
+ ptlist=Readcsvsla(ptdata,options);
+ ,
+ ptlist=ptdata;
+ );
+ if(MeasureDepth(ptlist)==1,ptlist=[ptlist]);
+ Out=[];
+ forall(1..length(ptlist),
+ tmp=floor((BezierNumber-1)/26);// 15.02.23
+ if(tmp==0,tmp="",tmp=text(tmp));
+ tmp2=mod(BezierNumber,26);
+ if(tmp2==0,tmp2=26);
+ tmp1=unicode(text(96+tmp2),base->10)+tmp;// 15.03.11
+ tmp2=Putbezierdata(tmp1,ptlist_#,options);
+ Bezier(tmp2,options);
+ BezierNumber=BezierNumber+1;
+ Out=append(Out,tmp2_(1..2));
+ );
+ Out;
+);
+
+Mkbeziercrv(nm,ptctrL):=Mkbeziercrv(nm,ptctrL,[]);
+Mkbeziercrv(nm,ptctrL,options):=(
+ //help:Mkbeziercrv("1",[[A,B,C,D],[[P,Q],[R,S],T]]);
+ regional(ptctrLL,name,ptlist,ctrlist,tmp,tmp1,tmp2);
+ if(MeasureDepth(ptctrL)==2,ptctrLL=[ptctrL],ptctrLL=ptctrL);
+ forall(1..length(ptctrLL),
+ name=nm+text(#);
+ ptlist=ptctrLL_#_1;
+ ctrlist=ptctrLL_#_2;
+ Bezier(nm,ptlist,ctrlist,options); // 17.01.06
+ );
+);
+
+Writebezier():=Writebezier(Fhead,"all");
+Writebezier(head):=Writebezier(head,"all");
+Writebezier(head,seL):=(
+//help:Writebezier(file);
+//help:Writebezier(file,"acd");
+ regional(bz,dt,name,tmp,tmp1,tmp2);
+ bz=select(GLIST,indexof(#,"=Bezier")>0);
+ tmp1=[]; // 16.04.22from
+ if(seL!="all",
+ forall(1..length(seL),
+ tmp=substring(seL,#-1,#);
+ tmp=select(bz,indexof(#,"bz"+tmp)>0);
+ tmp1=concat(tmp1,tmp);
+ );
+ bz=tmp1;// 16.04.22upto
+ );
+ dt=[head+"n",[[length(bz),0]]];
+ forall(1..length(bz),
+ tmp=indexof(bz_#,"=");
+ name=substring(bz_#,0,tmp-1);
+ tmp=indexof(bz_#,","+Dq);
+ if(tmp>0,
+ tmp1=substring(bz_#,0,tmp-1)+")";
+ ,
+ tmp1=bz_#;
+ );
+ tmp1=replace(tmp1,"Bezier(","[");
+ tmp1=replace(tmp1,"list(","[");
+ tmp1=replace(tmp1,")","]");
+ tmp1=replace(tmp1,",",".xy,");
+ tmp1=replace(tmp1,"]",".xy]");
+ tmp1=replace(tmp1,".xy,[",",[");
+ tmp1=replace(tmp1,"].xy","]");
+ tmp1=replace(tmp1,name,head+text(#));
+ parse(tmp1);
+ tmp=parse(head+text(#)+"_1");
+ dt=concat(dt,[head+text(#)+"k",tmp]);
+ tmp=parse(head+text(#)+"_2");
+ dt=concat(dt,[head+text(#)+"c",tmp]);
+ );
+ WriteOutData(head+".txt",dt);
+ dt;
+);
+
+Readbezier(file):=Readbezier(file,[]);
+Readbezier(file,optionorg):=(
+//help:Readbezier("xsr");
+//help:Readbezier(options=["Num=10","nogeo"]);
+ regional(nn,options,stL,geo,nc,alpha,out,tmp,tmp1,tmp2,tmp3);
+ options=optionorg;
+ tmp=Divoptions(options);
+ stL=tmp_7;
+ geo=0;
+ forall(stL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="G",geo=1);
+ options=remove(options,[#]);
+ );
+ ReadOutData(file);
+ tmp=file+"n_1_1";
+ nn=parse(tmp);
+ out=[];
+ forall(1..nn,nc,
+ tmp=file+text(nc);
+ tmp1=parse(tmp+"k");
+ tmp2=parse(tmp+"c");
+ if(MeasureDepth(tmp2)==1,tmp2=[tmp2]); // 16.04.22from
+ if(geo==1,
+ alpha="abcdefghijklmnopqrstuvwxyz";
+ forall(1..length(tmp1),
+ tmp="k"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#);
+ Putpoint(tmp,tmp1_#,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"ptsize",3);
+ tmp1_#=parse(tmp+".xy");
+ );
+ forall(1..length(tmp2),
+ tmp="c"+BezierNumber+"n"+text(nc)+substring(alpha,#-1,#)+"1";
+ Putpoint(tmp,tmp2_#_1,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_1=parse(tmp+".xy");
+ tmp="c"+BezierNumber+"no"+text(nc)+substring(alpha,#-1,#)+"2";
+ Putpoint(tmp,tmp2_#_2,parse(tmp+".xy"));
+ inspect(parse(tmp),"labeled",false);
+ inspect(parse(tmp),"color",4);
+ inspect(parse(tmp),"ptsize",3);
+ tmp2_#_2=parse(tmp+".xy");
+ );
+ BezierNumber=BezierNumber+1;
+ );
+ Bezier(file+text(nc),tmp1,tmp2,options);// 16.04.22upto
+ out=append(out,"bz"+tmp);
+ );
+ out;
+);
+
+Ospline(nm,ptlist):=Ospline(nm,ptlist,[]);
+Ospline(nm,ptlist,options):=(
+//help:Ospline("1",ptlist,[options]);
+ regional(tmp,tmp1,tmp2,list,ptL,ctrL,name,closed,flg,
+ p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32);
+ name="o"+nm;
+ if(isstring(ptlist),list=parse(ptlist),list=ptlist);
+ if(|list_1-list_(length(list))|<10^(-6),closed=1,closed=0);
+// list=apply(list,LLcrd(#));
+ ctrL=[];
+ forall(1..(length(list)-1),
+ flg=0;
+ p1=Lcrd(list_#); // 16.08.16
+ p2=Lcrd(list_(#+1)); // 16.08.16
+ if(#==1 % #==length(list)-1,
+ flg=1;
+ if(closed==0,
+ pQ=(p1+2*p2)/3; // 15.09.21 // 16.08.16
+ pR=(2*p1+p2)/3; // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ flg=2;
+ ,
+ if(#==1,
+ p0=Lcrd(list_(length(list)-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ ,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_2); // 16.08.16
+ );
+ );
+ );
+ if(flg<=1,
+ if(flg==0,
+ p0=Lcrd(list_(#-1)); // 16.08.16
+ p3=Lcrd(list_(#+2)); // 16.08.16
+ );
+ tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/|p2-p0|/|p3-p1|)/2);
+ cc=4*|p2-p1|/3/(|p2-p0|+|p3-p1|)/tmp;
+ pQ=p1+cc*(p2-p0); // 15.09.21 // 16.08.16
+ pR=p2+cc*(p1-p3); // 16.08.16
+ ctrL=append(ctrL,[pQ,pR]);
+ );
+ );
+// list=apply(list,LLcrd(#)); // 16.08.16
+// ctrL=apply(ctrL,LLcrd(#));
+ if(closed==0, // 15.09.21
+ p1=ctrL_2_1;
+ p2=Lcrd(list_2); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_1=[pQ];
+ tmp=length(ctrL);
+ tmp1=ctrL_(tmp-1);
+ p1=ctrL_(tmp-1)_2;
+ p2=Lcrd(list_(tmp)); // 16.08.16
+ pQ=p2+(p2-p1);
+ ctrL_tmp=[pQ];
+ );
+ Bezier("o"+nm,list,ctrL,options);
+);
+
+CRspline(nm,ptL):=CRspline(nm,ptL,[]);
+CRspline(nm,ptL,options):=(
+ // Catmull-Rom spline
+//help:CRspline("1",[A,B,C,A]);
+ regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg);
+ name="crsp"+nm;
+ if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL);
+ ptlist=tmp_1;
+ if(length(tmp)==1,
+ cflg=1;
+ ,
+ cflg=0;
+ ctrpts=tmp_2;
+ );
+ c=1/6;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ opcindy=tmp_(length(tmp)); // 15.03.05
+ forall(eqL,
+ if(substring(#,0,1)=="R",
+ tmp2=indexof(#,"=");
+ c=parse(substring(#,tmp2,length(#)));
+ );
+ );
+ ptlist=apply(ptlist,Lcrd(#)); // 16.08.16
+ ctrlist=[];
+ forall(1..(length(ptlist)-1),
+ if(#==1,
+ if(cflg==0,
+ tmp1=ctrpts_1;
+ ,
+ v=ptlist_2-ptlist_(length(ptlist)-1);
+ tmp1=ptlist_#+c*v;
+ );
+ ,
+ v=ptlist_(#+1)-ptlist_(#-1);
+ tmp1=ptlist_#+c*v;
+ );
+ if(#==length(ptlist)-1,
+ if(cflg==0,
+ tmp2=ctrpts_2;
+ ,
+ v=ptlist_2-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ ,
+ v=ptlist_(#+2)-ptlist_#;
+ tmp2=ptlist_(#+1)-c*v;
+ );
+ tmp=select(options,indexof(text(#),"->")>0);
+ tmp=append(tmp,"notex"); //15.03.05
+ Pointdata(name+text(#),[tmp1,tmp2],tmp);
+ ctrlist=append(ctrlist,[tmp1,tmp2]);
+ );
+ Bezier(nm,ptlist,ctrlist,options);
+);
+
+Beziersmooth(nm,ptL):=Bzspline(nm,ptL,[]);
+//help:Beziersmooth("1",[A,B,C,A]);
+Beziersmooth(nm,ptL,options):=Bzspline(nm,ptL,options);
+Bzspline(nm,ptL):=Bzspline(nm,ptL,[]);
+Bzspline(nm,ptLorg,options):=(
+ // smooth bezier
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzsp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";// 16.10.07
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ lstr="c"+text(#);
+ pt=ptLorg_#; // 16.08.16
+ pt1=parse("C"+text(#-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp2="C"+text(#)+"p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp2],"PointOnLine",[parse(lstr),tmp]);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ tmp1="C1p";
+ Putpoint(tmp1,(4*pt+pt1)/5,Lcrd(parse(tmp1))); // 16.08.16
+ );
+ if(cflg==1,
+ lstr="c1";
+ pt=ptLorg_1; // 16.08.16
+ pt1=parse("C"+text(length(ptL)-1)+"q");
+ create([lstr],"Join",[pt1,pt]);
+ tmp1="C1p";
+ tmp=Append((2*pt.xy-pt1.xy),1);
+ create([tmp1],"PointOnLine",[parse(lstr),tmp]);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ if(#>1 % cflg==1,
+ tmp1="c"+text(#);
+ inspect(parse(tmp1),"alpha",0.3);
+ );
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp1),"ptsize",3);
+ inspect(parse(tmp1),"color",3);
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Beziersym(nm,ptL):=Bzsspline(nm,ptL,[]);
+Beziersym(nm,ptL,options):=Bzsspline(nm,ptL,options);
+Bzsspline(nm,ptL):=Bzsspline(nm,ptL,[]);
+Bzsspline(nm,ptLorg,options):=(
+ // smooth bezier with symmetric control points
+ regional(name,Eps,ptL,pt,pt1,pt2,pt3,npt,lstr,
+ tmp,tmp1,tmp2,cflg,ctrlist);
+ name="bzssp"+nm;
+ Eps=10^(-3);
+ ptL=apply(ptLorg,Lcrd(#)); // 16.08.16
+ if(|ptL_1-ptL_(length(ptL))|<Eps,cflg=1,cflg=0);
+ forall(2..length(ptL),
+ pt=ptL_#;
+ pt1=ptL_(#-1);
+ tmp1="C"+text(#-1)+"q";
+ Putpoint(tmp1,(pt1+4*pt)/5,Lcrd(parse(tmp1)));
+ );
+ forall(2..(length(ptL)-1),
+ if(#<length(ptL) % cflg==1,
+ pt=ptL_#;
+ pt1=parse("C"+text(#-1)+"q");
+ tmp2="C"+text(#)+"p=2*pt-pt1";
+ parse(tmp2);
+ );
+ );
+ if(cflg==0,
+ pt=ptL_1;
+ pt1=ptL_2;
+ Putpoint("C1p",(4*pt+pt1)/5,Lcrd(C1p)); // 16.08.16
+ inspect(C1p,"ptsize",3);
+ inspect(C1p,"color",3);
+ );
+ if(cflg==1,
+ pt=ptL_1;
+ pt1=Lcrd(parse("C"+text(length(ptL)-1)+"q")); // 16.08.16
+ tmp1="Putpoint("+Dq+"C1p"+Dq+",2*pt-pt1)"; // 16.08.16
+ parse(tmp1);
+ );
+ ctrlist=[];
+ forall(1..(length(ptL)-1),
+ tmp1="C"+text(#)+"p";
+ tmp2="C"+text(#)+"q";
+ inspect(parse(tmp2),"ptsize",3);
+ inspect(parse(tmp2),"color",3);
+ tmp=[parse(tmp1),parse(tmp2)];
+ ctrlist=append(ctrlist,tmp);
+ );
+ Bezier(nm,ptL,ctrlist,options);
+ [ptL,ctrlist];
+);
+
+Listbspline2bz(listorg):=(
+ regional(Eps,list,pcl,ptl,ctrl,k);
+ Eps=10^(-3);
+ list=apply(listorg,Lcrd(#)); // 16.08.16
+ k=length(list);
+ if(|list_1-list_k|>Eps,
+ pcl=list;
+ pcl_1=2*list_1-list_2;
+ pcl_k=2*list_k-list_(k-1);
+ ,
+ pcl=concat(list,[list_2]);
+ );
+ ctrl=apply(2..(length(pcl)-1),[pcl_#]);
+ ptl=apply(1..(length(pcl)-1),(pcl_#+pcl_(#+1))/2);
+ [ptl,ctrl];
+);
+
+Bspline(nm,ctrL):=Bspline(nm,ctrL,[]);
+Bspline(nm,ctrL,options):=(
+//help:Bspline("",[A,B,C]);
+ regional(list,tmp);
+ list=Listbspline2bz(ctrL);
+ tmp=BezierCurve("b"+nm,list_1,list_2,options);
+ tmp;
+);
+
+MeetCurve(Crv,Xorg,Yorg):=(
+ regional(Cv,tmp,tmp1,tmp2,X0,Y0,x1,x2,y1,y2,Ylist,Ban,Tate);
+ if(isstring(Crv),Cv=parse(Crv),Cv=Crv);
+ if(MeasureDepth(Cv)==2,Cv=Cv_1);
+ Cv=apply(Cv,LLcrd(#)); // 14.12.18
+ while(length(Cv)==1,
+ Cv=Cv_1;
+ );
+ Cv=apply(Cv,Lcrd(#));
+ tmp1=min(apply(Cv,#_1));
+ tmp2=max(apply(Cv,#_1));
+ if(isstring(Xorg),X0=parse(Xorg),X0=Xorg);
+ if(isstring(Yorg),Y0=parse(Yorg),Y0=Yorg);
+ if(X0<tmp1,
+ X0=tmp1;
+ ,
+ if(X0>tmp2,
+ X0=tmp2;
+ );
+ );
+ tmp1=select(
+ 1..(length(Cv)-1),Cv_#_1<=X0 & X0<=Cv_(#+1)_1);
+ tmp2=select(
+ 1..(length(Cv)-1),Cv_#_1>=X0 & X0>=Cv_(#+1)_1);
+ tmp2=remove(tmp2,common(tmp2,tmp1));
+ Ban=concat(tmp1,tmp2);
+ Tate=select(Ban,
+ abs(Cv_#_1-Cv_(#+1)_1)<=
+ 10^(-2)*abs(Cv_#_2-Cv_(#+1)_2)
+ );
+ Ban=remove(Ban,Tate);
+ Ylist=[];
+ forall(Ban,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp=((x2-X0)*y1+(X0-x1)*y2)/(x2-x1);
+ Ylist=append(Ylist,tmp);
+ );
+ forall(Tate,
+ tmp=Cv_#;
+ x1=tmp_1; y1=tmp_2;
+ tmp=Cv_(#+1);
+ x2=tmp_1; y2=tmp_2;
+ tmp1=min([y1,y2]);
+ tmp2=max([y1,y2]);
+ if(Y0<tmp1,
+ tmp=tmp1;
+ ,
+ if(Y0>tmp2,
+ tmp=tmp2;
+ ,
+ tmp=Y0;
+ );
+ );
+ Ylist=append(Ylist,tmp);
+ );
+ tmp=sort(Ylist,abs(#_1-Y0));
+ [X0,tmp_1];
+);
+
+PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]);
+PutonLine(name,p1org,p2org,options):=(
+//help:PutonLine("C","sgAB");
+//help:PutonLine("C",pA,pB);
+ regional(par,p1,p2,dx,dy,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ tmp1=(1-par)*p1+par*p2;
+ if(abs(dx)>abs(dy),
+ tmp=name+".x";
+ tmp2="["+tmp+",dy/dx*("+tmp+"-p1_1)+p1_2]";//16.10.11upto
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ if(abs(dy)>0,
+ tmp=name+".y";
+ tmp2="[dx/dy*("+tmp+"-p1.y)+p1_1,"+tmp+"]";
+ Putpoint(name,tmp1,parse(tmp2));
+ ,
+ tmp2=p1;//16.10.11
+ Putpoint(name,tmp1,tmp2);
+ );
+ );
+);
+
+PutonSeg(name,sgstr):=(
+ regional(seg,p1,p2);
+ if(isstring(sgstr),seg=parse(sgstr),seg=sgstr);
+ PutonSeg(name,LLcrd(seg_1),LLcrd(seg_2));
+);
+PutonSeg(name,p1,p2):=PutonSeg(name,p1,p2,[]);
+PutonSeg(name,p1org,p2org,options):=(
+//help:PutonSeg("C","sgAB");
+//help:PutonSeg("C",pA,pB);
+ regional(par,dx,dy,p,tmp,tmp1,tmp2);
+ par=0.5;
+ tmp=Divoptions(options);
+ if(length(tmp_6)>0,
+ par=tmp_6_1;
+ );
+ p1=Lcrd(p1org);//16.10.11from
+ p2=Lcrd(p2org);
+ PutonLine(name,p1,p2,[par]);
+ dx=p2_1-p1_1;
+ dy=p2_2-p1_2;
+ p=parse(name+".xy");
+ p=LLcrd(p);
+ if(abs(dx)>abs(dy) & (p_1-p1_1)*(p_1-p2_1)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");
+ );
+ );
+ if(abs(dx)<abs(dy) & (p_2-p1_2)*(p_2-p2_2)>0,
+ if(|p-p1|<|p-p2|,
+ parse(name+".xy=Pcrd(p1)");
+ ,
+ parse(name+".xy=Pcrd(p2)");//16.10.11upto
+ );
+ );
+);
+
+PutonCurve(pn,crv):=PutonCurve(pn,crv,[]);
+PutonCurve(pn,crv,options):=(
+//help:PutonCurve("A","gr1");
+ regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg);
+ if(!islist(options),optionL=[options],optionL=options);
+ leftlim=XMIN;
+ rightlim=XMAX;
+ Flg=0;
+ Msg="y";
+ forall(optionL,
+ if(isstring(#), // 16.02.10 from
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="N", Msg="n"); // 16.02.10 upto
+ ,
+ if(Flg==0,
+ leftlim=#;
+ Flg=Flg+1;
+ ,
+ rightlim=#;
+ );
+ );
+ );
+ Pmt=MeetCurve(crv,leftlim,0);
+ pstr=apply(allpoints(),textformat(#,5)); // 15.04.07
+ if(!contains(pstr,pn),
+ createpoint(pn,Pcrd(Pmt));
+ ,
+ tmp1=parse(pn+".x");
+ if(tmp1< leftlim % tmp1>rightlim,
+ if(tmp1< leftlim,tmp= leftlim, tmp=rightlim);
+ Pmt=MeetCurve(crv,textformat(tmp,5),pn+".y");
+ ,
+ Pmt=MeetCurve(crv,pn+".x",pn+".y");
+ );
+ ptstr=pn+".xy="+textformat(Pcrd(Pmt),5)+";";
+ parse(ptstr);
+ );
+ if(Msg=="y",
+ println("Put "+pn+" on Curve "+text(crv));
+ );
+);
+
+CrossPoint(name,Crv1,Crv2,range):=(
+ regional(Mx1,Mx2,Mx3,tmp,Crs1,Crs2,Crs3,Crs4,df1,df2);
+ Mx1=range_1; Mx2=range_2;
+ repeat(15,
+ Mx3=(Mx1+Mx2)/2;
+ Crs1=MeetCurve(Crv1,Mx1,0);
+ Crs2=MeetCurve(Crv2,Mx1,0);
+ Crs3=MeetCurve(Crv1,Mx3,0);
+ Crs4=MeetCurve(Crv2,Mx3,0);
+ df1=Crs1_2-Crs2_2;
+ df2=Crs3_2-Crs4_2;
+ if((df1>0 & df2>0) % (df1<0 & df2<0),
+ Mx1=Mx3;
+ ,
+ Mx2=Mx3;
+ );
+ );
+ Putpoint(name,Crs1);
+);
+
+Setscaling(sc):=(
+//help:Setscaling(3);
+ SCALEX=1;
+ SCALEY=sc;
+ Com0th("Setscaling("+sc+")");
+ Setwindow("Msg=no");
+);
+
+Periodfun(defL,rep):=Periodfun(defL,rep,[]);
+Periodfun(defL,rep,optionorg):=( // 16.11.24
+//help:Periodfun(["0",[-1,0],"1",1,[0,1],1],2(num of repetition),options);
+//help:Periodfun(options=["Con=y"]);
+//help:Periodfun(defL=[function string, range, devision number,...]);
+ regional(nn,fun,range,num,options,nr,maxfun,
+ tmp,tmp1,tmp2,eqL,connect,minx,maxx,pdata,Eps,prept);
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ connect="Y";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp2=substring(#,tmp,tmp+1);
+ tmp=substring(#,0,3);
+ if(Toupper(tmp)=="CON",
+ connect=Toupper(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ minx=10000;
+ maxx=-10000;
+ mxfun="";
+ pdata=[];
+ forall(1..(length(defL)/3),nn,
+ fun=defL_(3*nn-2);
+ range=defL_(3*nn-1);
+ tmp1=if(isstring(range_1),parse(range_1),range_1); //17.06.11(2lines)
+ tmp2=if(isstring(range_2),parse(range_2),range_2);
+ minx=min(minx,tmp1);
+ maxx=max(maxx,tmp2);
+ num=defL_(3*nn);
+ options=append(options,"Num="+text(num));
+ Plotdata("pe"+text(nn),fun,
+ "x="+textformat([tmp1,tmp2],5),options);
+ pdata=append(pdata,"grpe"+text(nn));
+ tmp1=range_1; //17.06.11(4lines)
+ if(isstring(tmp1),tmp1=replace(tmp1,"pi","%pi"),tmp1=format(tmp1,5));
+ tmp2=range_2;
+ if(isstring(tmp2),tmp2=replace(tmp2,"pi","%pi"),tmp2=format(tmp2,5));
+ mxfun=mxfun+"elseif ("+tmp1+
+ "<=x and x<"+tmp2+") then "+fun+" ";
+ );
+ per=maxx-minx;
+ forall(1..rep,nr,
+ tmp1=[];
+ forall(pdata,
+ Translatedata("p"+#+text(nr),#,[per*nr,0],options);
+ Translatedata("m"+#+text(nr),#,[-per*nr,0],options);
+ tmp1=concat(tmp1,["trp"+#+text(nr),"trm"+#+text(nr)]);
+ );
+ );
+ pdata=concat(pdata,tmp1);
+ if(connect=="Y",
+ Eps=10^(-5);
+ pdata=sort(pdata,[parse(#)_1_1]);
+ prept=parse(pdata_1)_1;
+ forall(1..(length(pdata)),
+ tmp=parse(pdata_#);
+ tmp1=tmp_1;
+ tmp2=tmp_(length(tmp));
+ if(|prept-tmp1|>Eps,
+ Listplot("con"+text(#),[prept,tmp1],append(options,"da"));
+ );
+ prept=tmp_(length(tmp));
+ );
+ );
+ mxfun=substring(mxfun,4,length(mxfun)-1);
+ [mxfun,per];
+);
+
+Fourierseries(nm,coeff,per,nterm):=
+ Fourierseries(nm,coeff,per,nterm,[]); // 16.11.24
+Fourierseries(nm,coeff,per,nterm,options):=(
+//help:Fourierseries("1",[c0,cn,sn],period,numterm,options);
+ regional(c0,cn,sn,fs,tmp,tmp1,tmp2);
+ c0=coeff_1;
+ if(!isstring(c0),c0=format(c0,5));
+ c0=replace(c0,"%pi","pi");
+ cn=coeff_2;
+ if(!isstring(cn),cn=format(cn,5));
+ cn=replace(cn,"%pi","pi");
+ sn=coeff_3;
+ if(!isstring(sn),sn=format(sn,5));
+ sn=replace(sn,"%pi","pi");
+ fs=c0;
+ forall(1..nterm,
+ tmp=parse(Assign(cn,["n",#]));
+ tmp1=Assign("("+format(tmp,5)+")*cos(n*2*pi/per*x)",
+ ["n",#,"per",per]);
+ tmp=parse(Assign(sn,["n",#]));
+ tmp2=Assign("("+format(tmp,5)+")*sin(n*2*pi/per*x)",
+ ["n",#,"per",per]);
+ fs=fs+"+"+tmp1+"+"+tmp2;
+ );
+ Plotdata("four"+nm,fs,"x",options);
+);
+
+Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]);
+Tabledatalight(nm,xLst,yLst,rmvL,optionorg):=(
+//help:Tabledatalight("",xLst,yLst,rmvL,[2,"Rng=y"]);
+ regional(options,rng,name,upleft,ul,flg,tick,eqL,reL,n,m,xsize,ysize,
+ rlist,clist,Tb,tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5; //16.12.16from
+ reL=tmp_6;
+ rng="Y";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,2));
+ tmp2=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="RN",
+ rng=tmp2;
+ options=remove(options,[#]);
+ );
+ );//16.12.16upto
+ tick=1;
+ flg=0;
+ forall(reL,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ TableOptions=options; // 16.11.28
+ println("Tabledatalight "+name+" generated");
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist));
+ if(rng=="Y", // 16.12.16
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ );
+ Tb;
+);
+
+Tabledata(nm,n,m,xsize,ysize,rmvL):=
+ Tabledata(nm,n,m,xsize,ysize,rmvL,[]);
+Tabledata(nm,n,m,xsize,ysize,rmvL,options):=(
+//help:Tabledata("",xLst,yLst,rmvL,[2,"Rng=y"]);
+ regional(Tb,name,tmp,xLst,yLst);
+ name="tb"+nm;
+ xLst=apply(1..n,xsize/n);
+ yLst=apply(1..m,ysize/m);
+ Tabledata(nm,xLst,yLst,rmvL,options)
+);
+Tabledata(nm,xLst,yLst,rmvL):=Tabledata(nm,xLst,yLst,rmvL,[]);
+Tabledata(nm,xLst,yLst,rmvL,optionorg):=(
+//help:Tabledata("",xLst,yLst,rmvL,[2,"Rng=y"]);
+ regional(name,options,eqL,reL,rng,upleft,ul,flg,tick,n,m,xsize,ysize,
+ rlist,clist,Tb,tmp,tmp1,tmp2,tmp3,Eps);
+// name="tb"+nm;
+ name="tb";
+ tmp=sum(yLst);
+ upleft=[0,tmp];
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5; //16.12.16from
+ reL=tmp_6;
+ rng="Y";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,2));
+ tmp2=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="RN",
+ rng=tmp2;
+ options=remove(options,[#]);
+ );
+ );//16.12.16upto
+ tick=1;
+ flg=0;
+ forall(reL,
+ if(flg==0,
+ tick=#;
+ flg=flg+1;
+ ,
+ upleft=tmp_6_1;
+ );
+ );
+ TableOptions=options; // 16.11.28
+ println("Tabledata "+name+" generated");
+ ul=upleft/10;
+ m=length(xLst);
+ n=length(yLst);
+ xsize=sum(xLst);
+ ysize=sum(yLst);
+ clist=[ul];
+ rlist=[ul];
+ forall(1..m,
+ tmp1=clist_(#)_1+xLst_#/10;
+ clist=append(clist,[tmp1,clist_1_2]);
+ );
+ forall(1..n,
+ tmp1=rlist_(#)_2-yLst_#/10;
+ rlist=append(rlist,[0,tmp1]);
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp="C"+text(#);
+ tmp1="c"+text(#)+"r0";
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[parse(tmp+".x"),C0.y]);
+ clist_(#+1)=parse(tmp+".xy");
+ );
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==m,
+ tmp=clist_(#+1);
+ drawtext(clist_(#+1)-[0.04,-0.1],"c"+text(#));
+ );
+ );
+ forall(0..n,
+ tmp="R"+text(#);
+ tmp1="c0r"+text(#);
+ if(#==0,
+ Putpoint(tmp,Tgrid(tmp1));
+ ,
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ rlist_(#+1)=parse(tmp+".xy");
+ );
+ Putpoint(tmp,Tgrid(tmp1),[R0.x,parse(tmp+".y")]);
+ inspect(parse(tmp),"ptsize",3);
+ inspect(parse(tmp),"labeled",false);
+ if(mod(#,tick)==0 % #==n,
+ tmp=rlist_(#+1);
+ drawtext(rlist_(#+1)-[0.4,0.1],"r"+text(#));
+ );
+ );
+ Tb=[clist,rlist];
+ tmp=name+"="+Tb;
+ parse(tmp);
+ forall(0..m,
+ tmp1="c"+text(#)+"r0";
+ tmp2="c"+text(#)+"r"+text(n);
+ Tlistplot("c"+text(#)+"r0r"+text(n),[tmp1,tmp2],options);
+ if(#<m,
+ tmp1=parse("C"+text(#));
+ tmp2=parse("C"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp+[-0.2,0.5],text((tmp2.x-tmp1.x)*10));
+ );
+ );
+ forall(0..n,
+ tmp1="c0r"+text(#);
+ tmp2="c"+text(m)+"r"+text(#);
+ Tlistplot("r"+text(#)+"c0c"+text(m),[tmp1,tmp2],options);
+ if(#<n,
+ tmp1=parse("R"+text(#));
+ tmp2=parse("R"+text(#+1));
+ tmp=(tmp1.xy+tmp2.xy)/2;
+ drawtext(tmp-[1.2,0.1],text(abs(tmp1.y-tmp2.y)*10));
+ );
+ );
+ Tsegrmv(rmvL,options);
+ Addax(0);
+ Eps=10^(-3);
+ tmp1=clist_(length(clist));
+ tmp2=rlist_1;
+ tmp3=rlist_(length(rlist)); // 15.06.11
+ if(rng=="Y", // 16.12.16
+ Setwindow([0-Eps,tmp1_1+Eps],[tmp3_2-Eps,tmp2_2+Eps]);
+ );
+ Tb;
+);
+
+Tseginfo(seg):=(
+ regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2);
+ if(substring(seg,0,2)=="sg",
+ cr=substring(seg,2,length(seg));
+ ,
+ cr=seg;
+ );
+ tp=substring(cr,0,1);
+ if(tp=="c",
+ tpc="r";
+ ,
+ tpc="c";
+ );
+ tmp1=indexof(cr,tpc);
+ tmp=substring(cr,tmp1,length(cr));
+ tmp2=tmp1+indexof(tmp,tpc);
+ n1=substring(cr,1,tmp1-1);
+ n2=substring(cr,tmp1,tmp2-1);
+ n3=substring(cr,tmp2,length(cr));
+ [tp+n1,tpc,parse(n2),parse(n3)];
+);
+
+Tsegrmv(rmvL):=Tsegrmv(rmvL,[]);
+Tsegrmv(rmvL,options):=(
+ regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2);
+ forall(rmvL,cr,
+ tmp1=Tseginfo(cr);
+ hd=tmp1_1;
+ tpc=tmp1_2;
+ m1=tmp1_3;
+ m2=tmp1_4;
+ gcL=select(GCLIST,Tseginfo(#_1)_1==tmp1_1);
+ flg=0;
+ forall(gcL,
+ if(flg==0,
+ tmp=Tseginfo(#_1);
+ n1=tmp_3;
+ n2=tmp_4;
+ if(m1>=n1 & m2<=n2,
+ gc=#;
+ flg=1;
+ );
+ );
+ );
+ if(flg==1,
+ Changestyle([gc_1],["nodisp"]);
+ tail="";
+ if(indexof(hd,"r")>0,
+ tail=hd; hd="";
+ );
+ if(n1<m1,
+ tmp1=tpc+text(n1);
+ tmp2=tpc+text(m1);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ if(m2<n2,
+ tmp1=tpc+text(m2);
+ tmp2=tpc+text(n2);
+ tmp=hd+tail+tmp1+tmp2;
+ Tlistplot(tmp,[hd+tmp1+tail,hd+tmp2+tail],options);
+ );
+ );
+ );
+);
+
+Tgrid(ptstr):=(
+//help:Tgrid("c2r5");
+ regional(tmp,tmp1,tmp2);
+ tmp=parse(ptstr);
+ if(islist(tmp),
+ tmp;
+ ,
+ tmp=indexof(ptstr,"r");
+ tmp1=substring(ptstr,1,tmp-1);
+ tmp1=parse(tmp1);
+ tmp2=substring(ptstr,tmp,length(ptstr));
+ tmp2=parse(tmp2);
+ [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2];
+ );
+);
+
+Tlistplot(ptL):=Tlistplot(ptL,[]);
+Tlistplot(Ag1,Ag2):=(
+ regional(nm,ptL,options);
+ if(isstring(Ag1),
+ nm=Ag1;
+ ptL=Ag2;
+ options=[];
+ ,
+ ptL=Ag1;
+ options=Ag2;
+ nm=ptL_1+ptL_2;
+ );
+ Tlistplot(nm,ptL,options);
+);
+Tlistplot(nm,ptL,options):=(
+//help:Tlistplot(["c0r0","c0r4"]);
+//help:Tlistplot("1",["c0r0","c0r4"]);
+ regional(tmp);
+ tmp=apply(ptL,Tgrid(#)); // 15.06.03
+ Listplot(nm,tmp,append(options,"Msg=no"));
+);
+
+ChangeTablestyle(nameL,style):=(
+////help:ChangeTablestyle(["r0c0c3"],["da"]);
+ regional(nmL,grid,head,sb,tmp,tmp1,tmp2,
+ tsg,segall,sg,str);
+ if(islist(nameL),nmL=nameL,nmL=[nameL]);
+ forall(nmL,grid,
+ if(substring(grid,0,1)=="r",sb="c",sb="r");
+ tmp=Indexall(grid,sb);
+ head=substring(grid,0,tmp_1-1);
+ tmp1=substring(grid,tmp_1,tmp_2-1);
+ tmp2=substring(grid,tmp_2,length(grid));
+ tsg=apply([tmp1,tmp2],parse(#));
+ tmp1=apply(GCLIST,#_1); // 16.12.06from
+ segall=[];
+ forall(tmp1,
+ tmp2=substring(#,2,length(#));
+ tmp=indexof(tmp2,sb);
+ tmp2=substring(tmp2,0,tmp-1);
+ if(head==tmp2,segall=append(segall,#));
+ );// 16.12.06upto
+ sg=[];
+ forall(segall,
+ tmp=Indexall(#,sb);
+ tmp1=substring(#,tmp_1,tmp_2-1);
+ tmp2=substring(#,tmp_2,length(#));
+ tmp=apply([tmp1,tmp2],parse(#));
+ if((tsg_1>=tmp_1) & (tsg_2<=tmp_2),
+ sg=tmp;
+ Changestyle(#,["nodisp"]);
+ );
+ );
+ if(length(sg)==0,
+ println("No segment includes "+grid);
+ ,
+ if(sb=="c",str=sb+"no"+head,str=head+sb+"no");
+ if(sg_1<tsg_1,
+ tmp1=replace(str,"no",text(sg_1));
+ tmp2=replace(str,"no",text(tsg_1));
+ tmp=head+sb+text(sg_1)+"c"+text(tsg_1);
+ Tlistplot(tmp,[tmp1,tmp2],TableOptions);
+ );
+ tmp1=replace(str,"no",text(tsg_1));
+ tmp2=replace(str,"no",text(tsg_2));
+ tmp=head+"c"+text(tsg_1)+"c"+text(tsg_2);
+ Tlistplot(tmp,[tmp1,tmp2],style);
+ if(tsg_2<sg_2,
+ tmp1=replace(str,"no",text(tsg_2));
+ tmp2=replace(str,"no",text(sg_2));
+ tmp=head+"c"+text(tsg_2)+"c"+text(sg_2);
+ Tlistplot(tmp,[tmp1,tmp2],TableOptions);
+ );
+ );
+ );
+);
+
+Findcell(pos1,pos2):=Findcell("",pos1,pos2);
+Findcell(Tbdata,pos1,pos2):=(
+//help:Findcell("c0r0","c2r1");
+ regional(tmp1,tmp2,posnw,posse,ctr,dx,dy);
+ if(isstring(pos1),
+ posnw=Tgrid(pos1); // 15.05.20
+ posse=Tgrid(pos2);
+ //posnw=parse(pos1);
+ //posse=parse(pos2);
+ ,
+ if(islist(pos1),
+ posnw=pos1;
+ posse=pos2;
+ ,
+ tmp1="c"+text(pos1-1)+"r"+text(pos2-1);
+ tmp2="c"+text(pos1)+"r"+text(pos2);
+ posnw=Tgrid(tmp1);
+ posse=Tgrid(tmp2);
+// posnw=parse(tmp1);
+// posse=parse(tmp2);
+ );
+ );
+ ctr=(posnw+posse)/2;
+ dx=abs(posse_1-ctr_1);
+ dy=abs(posnw_2-ctr_2);
+ [ctr,dx,dy];
+);
+
+Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr);
+Putcell(Tbdata,pos1,pos2,dir,lttr):=(
+//help:Putcell("c0r0","c2r1","lt","abc");
+//help:Putcell(2,3,"c","xyz");
+ regional(tmp,tmp1,tmp2,posnw,posse,
+ posdir,posstr,ctr,dx,dy);
+ tmp=Findcell(Tbdata,pos1,pos2);
+ ctr=tmp_1; dx=tmp_2; dy=tmp_3;
+ posdir=ctr;
+ posstr=dir;
+ if(indexof(dir,"b")>0,
+ posdir_2=posdir_2-dy;
+ posstr=replace(posstr,"b","n");
+ );
+ if(indexof(dir,"t")>0,
+ posdir_2=posdir_2+dy;
+ posstr=replace(posstr,"t","s");
+ );
+ if(indexof(dir,"l")>0,
+ posdir_1=posdir_1-dx;
+ posstr=replace(posstr,"l","e");
+ );
+ if(indexof(dir,"r")>0,
+ posdir_1=posdir_1+dx;
+ posstr=replace(posstr,"r","w");
+ );
+ Letter(posdir,posstr,text(lttr));
+);
+
+Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex);
+Putcellexpr(Tbdata,pos1,pos2,dir,ex):=(
+//help:Putcellexpr("c0r0","c2r1","lt","abc");
+//help:Putcellexpr(2,3,"c","\sin x");
+ Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$");
+);
+
+Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL);
+Putrow(Tbdata,nrow,dir,lttrL):=(
+//help:Putrow(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,mcol);
+ mcol=length(lttrL);
+ forall(1..mcol,
+ Putcell(Tbdata,#,nrow,dir,lttrL_#);
+ );
+);
+
+Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL);
+Putrowexpr(Tbdata,nrow,dir,exL):=(
+//help:Putrowexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ Putrow(Tbdata,nrow,dir,lttrL);
+);
+
+PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL);
+PutcoL(Tbdata,mcol,dir,lttrL):=(
+//help:PutcoL(1,"c",["x","y","z"]);
+ regional(tmp,tmp1,nrow);
+ nrow=length(lttrL);
+ forall(1..nrow,
+ Putcell(Tbdata,mcol,#,dir,lttrL_#);
+ );
+);
+PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL);
+PutcoLexpr(Tbdata,mcol,dir,exL):=(
+//help:PutcoLexpr(2,"r",["x","y","z"]);
+ regional(lttrL);
+ lttrL=apply(exL,"$"+#+"$");
+ PutcoL(Tbdata,mcol,dir,lttrL);
+);
+
+Setrange():=(
+//help:Setrange();
+ SW.xy=Pcrd([XMIN,YMIN]);
+ NE.xy=Pcrd([XMAX,YMAX]);
+ drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]),
+ Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]);
+);
+
+Sciform(list):=(
+ regional(plotlist,comp,pos,out,out2,nn,strL,flg,
+ tmp,tmp1,tmp2,tmp3,Nj);
+ plotlist=Flatten([list]);
+ out=replace(plotlist_1,".xy","");
+ out=replace(out,".x","(1)");
+ out=replace(out,".y","(2)");
+ if(length(plotlist)==1,
+ comp=[];
+ forall(1..length(out),
+ comp=append(comp,substring(out,#-1,#));
+ );
+ out="";
+ pos=0;
+ forall(comp,
+ if(#!="'",
+ out=out+#;
+ ,
+ if(pos==0,
+ tmp=indexof(out,"Assign(");
+ if(substring(out,length(out)-7,length(out))=="Assign(",
+ out=out+"'";
+ pos=1;
+ ,
+ out=out+"Assign('";
+ pos=2;
+ );
+ ,
+ if(pos==2,
+ out=out+"')";
+ ,
+ out=out+"'";
+ );
+ pos=0;
+ );
+ );
+ );
+ ,
+ forall(2..length(plotlist),
+ comp=plotlist_#;
+ if(isstring(comp),
+ pos=indexof(comp,"Assign(");
+ if(pos>0,
+ comp=substring(comp,6,length(comp));
+ );
+ out=out+"Assign(";
+ comp=replace(comp,".xy","");
+ comp=replace(comp,".x","(1)");
+ comp=replace(comp,".y","(2)");
+ out=out+"'"+comp+"'";
+ out=out+"),";
+ );
+ if(islist(comp),
+ forall(comp,
+ out=out+"'"+#+"',";
+ );
+ );
+ );
+ if(length(plotlist)>1,
+ out=substring(out,0,length(out)-1);
+ out=out+");";
+ );
+ );
+ pos=[];
+ forall(1..length(out),
+ tmp=indexof(substring(out,#-1,length(out)),"Assign");
+ if(tmp>0,
+ tmp1=#-1+tmp;
+ if(length(pos)==0,
+ pos=[tmp1];
+ ,
+ if(pos_(length(pos))<tmp1,
+ pos=append(pos,tmp1);
+ );
+ );
+ );
+ );
+ if(length(pos)>0,
+ strL=[];
+ Nj=0;
+ forall(pos,
+ tmp=substring(out,Nj,#-1);
+ strL=append(strL,tmp);
+ Nj=#-1;
+ );
+ strL=append(strL,substring(out,Nj,length(out)));
+ out="";
+ forall(strL,
+ if(indexof(#,"Assign")==0,
+ out=out+#;
+ ,
+ tmp=indexof(#,"('");
+ tmp1=indexof(#,"')");
+ tmp2=substring(#,tmp+1,tmp1-2);
+ tmp3=substring(#,tmp1-2,length(#));
+ if(indexof(tmp2,"=")==0,
+ out=out+#;
+ ,
+ tmp=substring(tmp2,0,indexof(tmp2,"="));
+ out=out+"'"+tmp+"'+"+"Assign('";
+ tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2));
+ out=out+tmp+tmp3;
+ );
+ );
+ );
+ );
+ out2=""; // patched 16.01.21 from
+ nn=length(out);
+ flg=0;
+ forall(1..nn,
+ if(flg==0,
+ tmp=indexof(out,"='+Assign('");
+ if(tmp==0,
+ out2=out2+out;
+ flg=1;
+ ,
+ out2=out2+substring(out,0,tmp);
+ out=substring(out,tmp+10,length(out));
+ tmp=indexof(out,"'"); // 16.04.19 from
+ tmp1=substring(out,0,tmp-1);
+ tmp2="1234567890";
+ tmp=apply(1..length(tmp1),
+ indexof(tmp2,substring(tmp1,#-1,#)));
+ tmp=min(tmp);
+ if(tmp==0, // 16.04.19 upto
+ out2=out2+"'+Assign('";
+ ,
+ tmp=indexof(out,"'");
+ out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); // 16.04.18 upto
+ );
+ );
+ );
+ );
+ out2=replace(out2,"Dist=","D=");
+ out2=replace(out2,"Dis=","D=");
+ out2;
+);
+
+
+Rform(list):=(
+ regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj);
+ out=list;
+ out=replace(out,"[[[","list([[");
+ out=replace(out,"[","c(");
+ out=replace(out,"]",")");
+ out=replace(out,".xy","");
+ out=replace(out,".x","[1]");
+ out=replace(out,".y","[2]");
+ out;
+);
+
+Defvar(varstr):=(
+ regional(name,value,tmp,tmp1);
+ if(isstring(varstr),
+ parse(varstr);
+ tmp=indexof(varstr,"=");
+ name=substring(varstr,0,tmp-1);
+ value=substring(varstr,tmp,length(varstr));
+ value=parse(value);
+ tmp1=select(1..length(VLIST),VLIST_#_1==name+"=");
+ if(length(tmp1)>0,
+ tmp=tmp1_1;
+ VLIST_tmp=[name+"=",value];
+ ,
+ VLIST=prepend([name+"=",value],VLIST);
+ );
+ ,
+ forall(1..(length(varstr)/2), // 16.11.16from
+ name=varstr_(2*#-1);
+ value=varstr_(2*#);
+ Defvar(name,value);
+ ); // 16.11.16upto
+ );
+);
+
+Defvar(name,value):=(
+//help:Defvar("a",0.3);
+//help:Defvar(["a",0.3,"b",2]);
+ regional(tmp,tmp1);
+ if(islist(value),
+ tmp1="[";
+ forall(value,
+ if(isstring(#), // 16.11.14
+ tmp1=tmp1+Dq+#+Dq+","; // 16.11.14
+ ,
+ tmp1=tmp1+format(#,5)+",";
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ ,
+ tmp1=format(value,5);
+ );
+ tmp=name+"="+tmp1; // 15.02.06
+ parse(tmp);
+ VLIST=select(VLIST,#_1!=name+"="); // 15.02.08
+ VLIST=prepend([name+"=",value],VLIST);
+);
+
+Iftosci(strorg):=( // 16.06.10
+ regional(str,ifL,ppL,cpL,kk,sL,
+ tmp,tmp1,tmp2,tmp3,tmp4);
+ str=replace(strorg,LFmark,"");
+ ifL=Indexall(str,"if(");
+ ppL=Bracket(str,"()");
+ cpL=Indexall(str,",");
+ tmp1=Bracket(str,"[]");
+ forall(1..(length(tmp1)/2),kk,
+ cpL=select(cpL,#<tmp1_(2*kk-1)_1%#_1>tmp1_(2*kk)_1);
+ );
+ forall(1..length(ifL),kk,
+ tmp=select(ppL,#_1>ifL_kk);
+ tmp1=tmp_1;
+ tmp2=select(tmp,#_2==-tmp1_2);
+ tmp2=tmp2_1;
+ tmp3=select(cpL,#>tmp1_1 & #<tmp2_1);
+ ifL_kk=[tmp1_1,tmp2_1,tmp1_2,tmp3];
+ );
+ forall(1..length(cpL),kk,
+ tmp=select(1..length(ifL),contains(ifL_#_4,cpL_kk));
+ tmp1=tmp_(length(tmp));
+ cpL_kk=[cpL_kk,tmp1];
+ );
+ sL=apply(1..length(str),substring(str,#-1,#));
+ forall(1..length(ifL),kk,
+ tmp1=ifL_kk_1;
+ tmp2=ifL_kk_2;
+ tmp=select(cpL,#_2==kk);
+ tmp3=apply(tmp,#_1);
+ sL_tmp1=" ";
+ sL_tmp2=";end;";
+ sL_(tmp3_1)=" then,";
+ if(length(tmp3)>1,
+ sL_(tmp3_2)=";else,";
+ );
+ );
+ tmp=sum(sL);
+);
+
+Fortosci(strorg):=(
+ regional(str,jj,var,tmp,tmp1,tmp2,tmp3,tmp4,
+ Out,repL,Pflg,Iflg,Cflg);
+ str=strorg;
+ repL=[];
+ tmp1=Indexall(str,"forall");
+ tmp2=Indexall(str,",");
+ forall(1..length(tmp1),jj,
+ tmp=select(tmp2,#>tmp1_jj);
+ var=substring(str,tmp_1,tmp_2-1);
+ tmp3=substring(str,tmp1_jj-1,tmp_2-1);
+ tmp=indexof(tmp3,"(");
+ tmp4=substring(tmp3,tmp,length(tmp3));
+ tmp=indexof(tmp4,",");
+ tmp4=substring(tmp4,0,tmp-1);
+ tmp4="for "+var+"="+tmp4;
+ tmp4=replace(tmp4,"..",":");
+ repL=concat(repL,[tmp3,tmp4]);
+ );
+ forall(1..length(repL)/2,
+ str=replace(str,repL_(2*#-1),repL_(2*#));
+ );
+ tmp=Bracket(str);
+ tmp=select(tmp,#_2==0);
+ tmp=tmp_1_1;
+ tmp1=substring(str,tmp-1,length(str));
+ tmp1=replace(tmp1,")",";end");
+ str=substring(str,0,tmp-1)+tmp1;
+ str=replace(str,";;",";");
+ str;
+);
+
+Deffun(name,bodylist):=(
+//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); // 16.02.18
+ regional(funstr,tmp,tmp1,str,Pos);
+ funstr=name+":=(";
+ forall(bodylist,
+ funstr=funstr+#+";";
+ );
+ funstr=funstr+");";
+ parse(funstr);
+ tmp=bodylist_(length(bodylist));
+ str="function "+tmp+"="+name+",";
+ forall(1..(length(bodylist)-1),
+ tmp1=bodylist_#;
+ tmp1=replace(tmp1,LFmark,"");// 16.05.26
+ tmp1=replace(tmp1," ","");// 16.05.26
+ Pos=indexof(tmp1,"regional")+indexof(tmp1,"local");
+ if(Pos==0,
+ tmp=replace(tmp1,".xy","");
+ tmp=replace(tmp,".x","(1)");
+ tmp=replace(tmp,".y","(2)");
+ if(indexof(tmp,"if(")>0,
+ tmp=iftosci(tmp);
+ );
+ if(indexof(tmp,"forall(")>0, // 16.05.26from
+ tmp=Fortosci(tmp);
+ ); // 16.05.26upto
+ str=str+tmp+",";
+ );
+ );
+ str=str+"endfunction;";
+ FUNLIST=append(FUNLIST,str);
+);
+
+Windispg():=(
+ regional(Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,opcindy);
+ gsave();
+ layer(KETPIClayer);
+ forall(GCLIST,Nj,
+ if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
+ if(islist(Dt) & length(Dt)>0, // 12.19,12.22
+ tmp=MeasureDepth(Dt);
+ if(tmp==1,Dt=[Dt]);
+ opcindy=Nj_3;
+ if(Nj_2<0,tmp1=0,tmp1=Nj_2);
+ if(tmp1<10,
+ forall(Dt,Nk,
+// tmp2=apply(Nk,if(ispoint(#),Lcrd(#),#));
+// tmp2=apply(tmp2,Pcrd(#));
+ tmp2=Nk; // 14.12.04
+ if(length(Nk)>1,
+ tmp="connect("+textformat(tmp2,5)+
+ ",dashtype->"+text(tmp1)+",linecolor->"+KCOLOR+opcindy+")";
+ parse(tmp);
+ ,
+ if(length(Nk)==1,
+ tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
+ parse(tmp);
+ );
+ );
+ );
+ );
+ );
+ );
+// if(ADDAXES=="1", // 16.10.08from
+// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]);
+// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]);
+// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]);
+// Letter([[0,0],"sw","O"]);
+// ); // 16.10.08upto
+ grestore();
+ layer(0);
+);
+
+Windispg(pltdata):=(
+ regional(pdata,Nj,Nk,Dt,tmp,tmp1,tmp2,opcindy);
+ gsave();
+ layer(KETPIClayer);
+ if(!islist(pltdata),tmp=[pltdata],tmp=pltdata);
+ pdata=select(GCLIST,contains(tmp,#_1));
+ forall(pdata,Nj,
+ if(isstring(Nj_1),Dt=parse(Nj_1),Dt=Nj_1); // 11.17
+ if(islist(Dt) & length(Dt)>0, // 12.19,12.22
+ tmp=MeasureDepth(Dt);
+ if(tmp==1,Dt=[Dt]);
+ opcindy=Nj_3;
+ if(Nj_2<0,tmp1=0,tmp1=Nj_2);
+ if(tmp1<10,
+ forall(Dt,Nk,
+ tmp2=Nk; // 14.12.04
+ if(length(Nk)>1,
+ tmp="connect("+textformat(tmp2,5)+ // 15.05.11
+ ",dashtype->"+text(tmp1)+
+ ",linecolor->"+KCOLOR+opcindy+")";
+ parse(tmp);
+ ,
+ if(length(Nk)==1,
+ tmp="draw("+text(tmp2_1)+opcindy+")"; // 14.12.31
+ parse(tmp);
+ );
+ );
+ );
+ );
+ );
+ );
+ grestore();
+ layer(0);
+);
+
+
+WritetoSci() := WritetoSci(Fnamesci);
+WritetoSci(Arg) := (
+ regional(string,filename,shch,tmp1,tmp2);
+ if(isstring(Arg),
+ string=Arg;
+ if(indexof(string,".sce")>0,
+ filename=string;
+ shchoice="";
+ ,
+ filename=Fnamesci;
+ shch=string;
+ );
+ WritetoSci(filename,shch);
+ ,
+ if(Arg<=1,WritetoSci(Fnamesci,"all"));
+ if(Arg==2,WritetoSci(Fnamesci,"sh"));
+ if(Arg==3,WritetoScibody(Fnamescibody));
+ );
+);
+WritetoSci(filename,shchoice) := (
+ regional(Plist,Pos,Pnamelist,Pvaluelist,GrL,str,tmp,tmp1,tmp2,cmd);
+ println("Write to Sci "+filename);
+ Plist=[];
+ Pnamelist=[];
+ Pvaluelist=[];
+ forall(remove(allpoints(),[SW,NE]),
+ tmp=Lcrd(#);
+ tmp1=format(re(tmp_1),5);// 15.02.05
+ tmp2=format(re(tmp_2),5);
+ tmp="["+tmp1+","+tmp2+"]";
+ Plist=append(Plist,#.name+"="+tmp+";");
+ Pnamelist=append(Pnamelist,#.name);
+ Pvaluelist=append(Pvaluelist,tmp);
+ );
+ SCEOUTPUT = openfile(filename);
+ tmp=Datetime();//16.12.25from
+ println(SCEOUTPUT,"//date time="+tmp_1+" "+tmp_2);
+ if(isstring(CindyPathName), // 16.12.25from
+ if(length(CindyPathName)>0,
+ println(SCEOUTPUT,"//path file="+CindyPathName+" "+CindyFileName+".cdy");
+ ,
+ println(SCEOUTPUT,"");
+ );
+ ,
+ println(SCEOUTPUT,"");
+ );//16.12.25upto
+ println(SCEOUTPUT,"cd('"+Dirwork+"');");
+ if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0) ,//16.11.29,12.16
+ if(indexof(PathS,"-6.")>0,
+ Libname=Dirlib+"/ketpic2escifiles6";//17.05.13
+ ,
+ Libname=Dirlib+"/ketpic2esciL5";//16.11.29
+ );
+ );
+ println(SCEOUTPUT,"Ketlib=lib('"+Libname+"');");
+ tmp=length(Libname)-1;
+ if(substring(Libname,tmp-1,tmp)!="C", // 15.06.02
+ println(SCEOUTPUT,"Ketinit();");
+ ,
+ println(SCEOUTPUT,"errcatch(235,"+DqDq("continue")+");");
+ println(SCEOUTPUT,"Ketinit("+DqDq("Ketlib")+");");
+ );
+ println(SCEOUTPUT,"disp('KETpic '+ThisVersion())"); // 15.04.12
+ println(SCEOUTPUT,"Fnametex='"+Fnametex+"';");
+ println(SCEOUTPUT,"Fnamesci='"+Fnamesci+"';");
+ println(SCEOUTPUT,"Fnamescibody='"+Fnamescibody+"';");
+ println(SCEOUTPUT,"Fnameout='"+Fnameout+"';");
+ if(iswindows(), // 17.01.11from
+ println(SCEOUTPUT,"setlanguage('en')");
+ ); // 17.01.11upto
+ println(SCEOUTPUT,"pi=%pi; i=%i;");
+ println(SCEOUTPUT,"arccos=acos; arcsin=asin; arctan=atan;"); // 15.05.15
+ println(SCEOUTPUT,"");
+ forall(COM0thlist,
+ println(SCEOUTPUT,#+";");
+ );
+ println(SCEOUTPUT,
+ "Setwindow(["+XMIN+","+XMAX+"], ["+YMIN+","+YMAX+"]);");
+ println(SCEOUTPUT,"Assignadd('pi',%pi);");
+ println(SCEOUTPUT,"Assignadd('XMIN',Xmin());");
+ println(SCEOUTPUT,"Assignadd('XMAX',Xmax());");
+ println(SCEOUTPUT,"Assignadd('YMIN',Ymin());");
+ println(SCEOUTPUT,"Assignadd('YMAX',Ymax());");
+ forall(1..length(Plist),
+ print(SCEOUTPUT,Plist_#);
+ println(SCEOUTPUT," Assignrep('"+Pnamelist_#+"',"+Pvaluelist_#+");");
+ );
+ forall(VLIST,
+ tmp=Sciform(#_1);
+ tmp1=#_2; // 15.02.06
+ if(!isstring(tmp1),
+ if(islist(tmp1),
+ tmp2="[";
+ forall(tmp1,
+ tmp2=tmp2+format(#,5)+",";
+ );
+ tmp1=substring(tmp2,0,length(tmp2)-1)+"]";
+ ,
+ tmp1=format(tmp1,5);
+ );
+ );
+ print(SCEOUTPUT,tmp+"evstr('"+tmp1+"')"+"; ");
+ tmp=substring(tmp,0,length(tmp)-1);
+ println(SCEOUTPUT," Assignrep('"+tmp+"',"+tmp1+");"); // 15.01.27
+ );
+ forall(FUNLIST,
+ println(SCEOUTPUT,#);
+ );
+ forall(GLIST,
+ println(SCEOUTPUT,Sciform(#)+";");
+ );
+ tmp=text(Pnamelist);
+ tmp=replace(tmp,"[","list(");
+ Pnamelist=replace(tmp,"]",")");
+ println(SCEOUTPUT,"PtL="+Pnamelist+";");
+ tmp=select(GCLIST,#_2==-1);
+ GrL=apply(tmp,#_1);
+ tmp=text(GrL);
+ tmp=replace(tmp,"[","list(");
+ tmp=replace(tmp,"]",")");
+ println(SCEOUTPUT,"GrL="+tmp+";");
+ tmp1="";
+ forall(SCIWRLIST,
+ tmp1=tmp1+","+Dq+#+Dq+","+#;
+ );
+ if(length(tmp1)>0,
+ tmp1="WriteOutData(Fnameout"+tmp1+");";
+ println(SCEOUTPUT,tmp1);
+ );
+ if(length(SCIRELIST)>0,
+ println(SCEOUTPUT,"if length(fileinfo(Fnameout))>0"); // 15.05.15
+ println(SCEOUTPUT," Tmpout=ReadOutData(Fnameout);");// 15.09.12
+ println(SCEOUTPUT," execstr(Tmpout);"); // 15.05.15
+// println(SCEOUTPUT," forall Tmp1=1:size(Tmpout,1)");
+// println(SCEOUTPUT," Tmp=strindex(Tmpout(Tmp1,1),'=list()');");
+// println(SCEOUTPUT," if length(Tmp)>0");
+// println(SCEOUTPUT," Tmp=part(Tmpout(Tmp1,1),1:(Tmp-1));");
+// println(SCEOUTPUT," if length(evstr(Tmp))==1,");
+// println(SCEOUTPUT," Tmp=Tmp+'='+Tmp+'(1)';");
+// println(SCEOUTPUT," execstr(Tmp);");
+// println(SCEOUTPUT," end;");
+// println(SCEOUTPUT," end;");
+// println(SCEOUTPUT," end;");
+// println(SCEOUTPUT,"end;");
+ );
+ if(shchoice=="sh",
+ println(SCEOUTPUT,"//if length(fileinfo(Fnamescibody))>0");
+ println(SCEOUTPUT,"// Gbdy=ReadfromCindy(Fnamescibody);");
+ println(SCEOUTPUT,"// execstr(Gbdy)");
+ println(SCEOUTPUT,"//end;");
+ ,
+ println(SCEOUTPUT,"//if length(fileinfo(Fnamescibody))>0");
+ println(SCEOUTPUT,"// Gbdy=ReadfromCindy(Fnamescibody);");
+ println(SCEOUTPUT,"// execstr(Gbdy)");
+ println(SCEOUTPUT,"//end;");
+ );
+ forall(COM1stlist,
+ println(SCEOUTPUT,#+";");
+ );
+// forall(GOUTLIST,
+// if(length(#_2)>0,
+// tmp1=#_1;
+// println(SCEOUTPUT,"execstr(ReadOutData('"+tmp1+"'));");
+// );
+// );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"//Windisp(GrL,'c');");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"if 1==1 then");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"Openfile('"+Dirwork+"/"+Fnametex+"','"+ULEN+"');");// 16.05.29
+ forall(COM2ndlist,
+ println(SCEOUTPUT," "+#+";");
+ );
+ if(length(GrL)>0,
+ println(SCEOUTPUT," Drwline(GrL);");
+ );
+// forall(GOUTLIST,
+// if(length(#_2)>0,
+// tmp1=textformat(#_2,5);
+// tmp1=substring(tmp1,1,length(tmp1)-1);
+// println(SCEOUTPUT," Drwline("+tmp1+");");
+// );
+// );
+ println(SCEOUTPUT,"Closefile('"+ADDAXES+"');");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"end;");
+ if(shchoice=="sh",
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"quit();");
+ ,
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"//quit();");
+ );
+ closefile(SCEOUTPUT);
+
+);
+
+WritetoScibody() := WritetoScibody(Fnamescibody);
+WritetoScibody(filename) := (
+ regional(Plist,Pos,Pnamelist,Pvaluelist,GrL,str,tmp,tmp1,cmd);
+ println("WritetoScibody "+filename);
+ Plist=[];
+ Pnamelist=[];
+ Pvaluelist=[];
+ forall(remove(allpoints(),[SW,NE]),
+ Plist=append(Plist,#.name+"="+#.xy+";");
+ Pnamelist=append(Pnamelist,#.name);
+ Pvaluelist=append(Pvaluelist,#.xy);
+ );
+ SCEOUTPUT = openfile(filename);
+ println(SCEOUTPUT,
+ "Setwindow(["+XMIN+","+XMAX+"], ["+YMIN+","+YMAX+"]);");
+ println(SCEOUTPUT,"Assignadd('pi',%pi);");
+ println(SCEOUTPUT,"Assignadd('XMIN',Xmin());");
+ println(SCEOUTPUT,"Assignadd('XMAX',Xmax());");
+ println(SCEOUTPUT,"Assignadd('YMIN',Ymin());");
+ println(SCEOUTPUT,"Assignadd('YMAX',Ymax());");
+ forall(1..length(Plist),
+ print(SCEOUTPUT,Plist_#);
+ println(SCEOUTPUT," Assignrep('"+Pnamelist_#+"',"+Pvaluelist_#+");");
+ );
+ forall(VLIST,
+ tmp=Sciform(#_1);
+ tmp1=#_2;
+ if(!isstring(tmp1),
+ print(SCEOUTPUT,tmp+tmp1+"; ");
+ ,
+ print(SCEOUTPUT,tmp+"evstr('"+tmp1+"')"+"; ");
+ );
+ tmp=substring(tmp,0,length(tmp)-1);
+ println(SCEOUTPUT," Assignrep('"+tmp+"',"+#_2+");");
+ );
+ forall(FUNLIST,
+ println(SCEOUTPUT,#);
+ );
+ forall(GLIST,
+ println(SCEOUTPUT,Sciform(#)+";");
+ );
+ tmp=text(Pnamelist);
+ tmp=replace(tmp,"[","list(");
+ Pnamelist=replace(tmp,"]",")");
+ println(SCEOUTPUT,"PtL="+Pnamelist+";");
+ tmp=select(GCLIST,#_2==-1);
+ GrL=apply(tmp,#_1);
+ tmp=textformat(GrL,5);
+ tmp=replace(tmp,"[","list(");
+ tmp=replace(tmp,"]",")");
+ println(SCEOUTPUT,"GrL="+tmp+";");
+ tmp1="";
+ forall(SCIWRLIST,
+ tmp1=tmp1+","+Dq+#+Dq+","+#;
+ );
+ if(length(tmp1)>0,
+ tmp1="WriteOutData(Fnameout"+tmp1+");";
+ println(SCEOUTPUT,tmp1);
+ );
+ if(length(SCIRELIST)>0,
+ println(SCEOUTPUT,"Tmpout=ReadOutData(Fnameout);");
+ println(SCEOUTPUT,"execstr(Tmpout);");
+ println(SCEOUTPUT,"forall Tmp1=1:size(Tmpout,1)");
+ println(SCEOUTPUT," Tmp=strindex(Tmpout(Tmp1,1),'=list()');");
+ println(SCEOUTPUT," if length(Tmp)>0");
+ println(SCEOUTPUT," Tmp=part(Tmpout(Tmp1,1),1:(Tmp-1));");
+ println(SCEOUTPUT," if length(evstr(Tmp))==1,");
+ println(SCEOUTPUT," Tmp=Tmp+'='+Tmp+'(1)';");
+ println(SCEOUTPUT," execstr(Tmp);");
+ println(SCEOUTPUT," end;");
+ println(SCEOUTPUT," end;");
+ println(SCEOUTPUT,"end;");
+ );
+ if(shchoice=="sh",
+ println(SCEOUTPUT,"//if length(fileinfo(Fnamescibody))>0");
+ println(SCEOUTPUT,"// Gbdy=ReadfromCindy(Fnamescibody);");
+ println(SCEOUTPUT,"// execstr(Gbdy)");
+ println(SCEOUTPUT,"//end;");
+ ,
+ println(SCEOUTPUT,"//if length(fileinfo(Fnamescibody))>0");
+ println(SCEOUTPUT,"// Gbdy=ReadfromCindy(Fnamescibody);");
+ println(SCEOUTPUT,"// execstr(Gbdy)");
+ println(SCEOUTPUT,"//end;");
+ );
+ forall(COM1stlist,
+ println(SCEOUTPUT,#+";");
+ );
+// forall(GOUTLIST, 2014.12.18
+// if(length(#_2)>0,
+// tmp1=#_1;
+// println(SCEOUTPUT,"execstr(ReadOutData('"+tmp1+"'));");
+// );
+// );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"//Windisp(GrL,'c');");
+ println(SCEOUTPUT,"");
+
+ closefile(SCEOUTPUT);
+);
+
+Extractdata(name):=Extractdata(1,name,[]);
+Extractdata(Arg1,Arg2):=(
+ if(isstring(Arg1),
+ Extractdata(1,Arg1,Arg2);
+ ,
+ Extractdata(Arg1,Arg2,[]);
+ );
+);
+Extractdata(number,name,options):=(
+//help:ExtractData("ha1");
+//help:ExtractData(1,"ha1");
+ regional(dlist,tmp,tmp1,tmp2,tmp3,File,Ltype,Noflg,opstr,opcindy);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ tmp1=[];
+ forall(1..length(GOUTLIST),
+ if(contains(GOUTLIST_#_2,name),
+ tmp1=append(tmp1,#);
+ );
+ );
+ if(length(tmp1)==0,
+ println(varname+" not found");
+ ,
+ tmp1=tmp1_number;
+ tmp2=GOUTLIST_tmp1;
+ tmp=remove(tmp2_2,[name]);
+ GOUTLIST_tmp1=[tmp2_1,tmp];
+ File=tmp2_1;
+ );
+ if(Noflg<3,
+ println("extract outdata "+name);
+ tmp1=parse(name);
+ if(1==0,
+ Com0th("Tmpout=ReadOutData("+Dq+File+Dq+");");
+ Com0th("execstr(Tmpout);");
+ Com0th("for Tmp1=1:size(Tmpout,1)");
+ Com0th(" Tmp=strindex(Tmpout(Tmp1,1),'=list()');");
+ Com0th(" if length(Tmp)>0");
+ Com0th(" Tmp=part(Tmpout(Tmp1,1),1:(Tmp-1));");
+ Com0th(" if length(evstr(Tmp))==1,");
+ Com0th(" Tmp=Tmp+'='+Tmp+'(1)';");
+ Com0th(" execstr(Tmp);");
+ Com0th(" end;");
+ Com0th(" end;");
+ Com0th("end;");
+ );
+ tmp3=[
+ "Tmpout=ReadOutData("+Dq+File+Dq+");",
+ "execstr(Tmpout);",
+ "for Tmp1=1:size(Tmpout,1)",
+ " Tmp=strindex(Tmpout(Tmp1,1),'=list()');",
+ " if length(Tmp)>0",
+ " Tmp=part(Tmpout(Tmp1,1),1:(Tmp-1));",
+ " if length(evstr(Tmp))==1",
+ " Tmp=Tmp+'='+Tmp+'(1)';",
+ " execstr(Tmp);",
+ " end;",
+ " end;",
+ "end;"
+ ];
+ GLIST=concat(GLIST,tmp3);
+ );
+ if(Noflg<2,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ tmp2;
+);
+
+RemoveOut(pltlist):=(
+ regional(name,tmp,tmp1,tmp2);
+ forall(pltlist,name,
+ tmp1=[];
+ forall(GOUTLIST,
+ tmp=remove(#_2,[name]);
+ tmp1=append(tmp1,[#_1,tmp]);
+ );
+ GOUTLIST=tmp1;
+ );
+);
+
+ReadOutData():=ReadOutData(Fnameout);
+ReadOutData(filename):=ReadOutData("",filename); //16.03.07
+ReadOutData(pathorg,filenameorg):=(
+//help:ReadOutData();
+//help:Readoutdata();
+//help:ReadOutData("file.txt");
+//help:Readoutdata("file.txt");
+//help:ReadOutData("/datafolder","file.txt");
+//help:Readoutdata("/datafolder","file.txt");
+ regional(path,filename,varname,varL,ptL,pts,tmp,tmp1,tmp2,tmp3,tmp4,
+ nmbr,cmdall,cmd,cmdorg,outdt,goutdt);
+ path=pathorg; //16.03.07 from
+ if(length(path)>0,
+ setdirectory(path);
+ if(indexof(path,"\")>0,tmp1="\",tmp1="/");
+ tmp=substring(path,length(path)-1,length(path));
+ if(tmp!=tmp1,path=path+tmp1);
+ ); //16.03.07 upto
+ filename=filenameorg; // 16.04.17
+ if(indexof(filename,".")==0,filename=filename+".txt");
+ tmp=load(filename);
+ cmdall=tokenize(tmp,"//");
+ varname=cmdall_1;
+ cmdall=cmdall_(2..length(cmdall));
+ outdt=[];
+ varL=[varname];
+ ptL=[];
+ forall(cmdall,cmdorg,
+ cmd=replace(cmdorg,LFmark,"");
+ if(length(cmd)>0,
+ if(cmd=="start" % cmd=="end" % substring(cmd,0,1)=="[",
+ if(cmd=="start",
+ pts=[];
+ );
+ if(cmd=="end",
+ ptL=append(ptL,pts);
+ );
+ if(substring(cmd,0,1)=="[",
+ tmp1=parse(cmd);
+ if(length(tmp1_1)==2,
+ tmp1=apply(tmp1,Pcrd(#));
+ );
+ pts=concat(pts,tmp1);
+ );
+ ,
+ if(length(ptL)>0,
+ if(length(ptL)==1,
+ ptL=ptL_1;
+ tmp=apply(ptL,textformat(#,6));
+ ,
+ tmp="[";
+ forall(ptL,tmp1,
+ tmp=tmp+apply(tmp1,textformat(#,6))+",";
+ );
+ tmp=substring(tmp,0,length(tmp)-1)+"]";
+ );
+ ,
+ tmp="[]";
+ );
+ parse(varname+"="+tmp);
+ outdt=append(outdt,ptL);
+ ptL=[];
+ varname=cmd;
+ varL=append(varL,varname);
+ );
+ );
+ );
+ if(length(ptL)>0,
+ if(length(ptL)==1,
+ ptL=ptL_1;
+ tmp=apply(ptL,textformat(#,6));
+ ,
+ tmp="[";
+ forall(ptL,tmp1,
+ tmp=tmp+apply(tmp1,textformat(#,6))+",";
+ );
+ tmp=substring(tmp,0,length(tmp)-1)+"]";
+ );
+ ,
+ tmp="[]";
+ );
+ parse(varname+"="+tmp);
+ outdt=append(outdt,ptL);
+ if(path=="",tmp=filename,tmp=path+filename); //16.03.07
+ GOUTLIST=append(GOUTLIST,[tmp,varL]);
+ if(length(path)>0, // 16.03.09
+ setdirectory(Dirwork); // 16.03.07
+ );
+ print("readoutdata from "+tmp+" : ");
+ println(varL);
+ varL;
+);
+
+WriteOutData(filename,ptlist):=(
+//help:WriteOutData("file.txt",["g1",gr1,"sg",sgAB]);
+//help:Writeoutdata("file.txt",["g1",gr1,"sg",sgAB]);
+ regional(nn,Gname,Gdata,Str,Gstr,Gj,Pt,Flg,tmp,tmp1,loopend);
+ Flg=0;
+ if(isstring(ptlist_(length(ptlist))),
+ Flg=1;
+ );
+ SCEOUTPUT = openfile(filename);
+ if(Flg==0,
+ loopend=length(ptlist)/2;
+ ,
+ loopend=length(ptlist);
+ );
+ Gstr="[";
+ forall(1..loopend,nn,
+ if(Flg==0,
+ Gname=ptlist_(2*nn-1);
+ ,
+ Gname=ptlist_nn;
+ );
+ Gstr=Gstr+Gname+",";
+ println(SCEOUTPUT,Gname+"//");
+ if(Flg==0,
+ Gdata=ptlist_(2*nn);
+ ,
+ Gdata=parse(Gname);
+ );
+ Gdata=Flattenlist(Gdata);
+ if(MeasureDepth(Gdata)==1,Gdata=[Gdata]);
+ forall(Gdata,Gj,
+ println(SCEOUTPUT,"start//");
+ Str="";
+ forall(Gj,Pt,
+ if(length(Str)>0,
+ Str=Str+","
+ );
+ Str=Str+"["+format(Pt_1,5)+",";
+ Str=Str+format(Pt_2,5);
+ if(length(Pt)<3,
+ Str=Str+"]";
+ ,
+ Str=Str+","+format(Pt_3,5)+"]";
+ );
+ if(length(Str)>80,
+ println(SCEOUTPUT,"["+Str+"]//");
+ Str="";
+ );
+ );
+ if(length(Str)>0,
+ println(SCEOUTPUT,"["+Str+"]//");
+ );
+ if((nn==loopend) & (Gj==Gdata_(length(Gdata))),
+ println(SCEOUTPUT,"end////");
+ ,
+ println(SCEOUTPUT,"end//");
+ );
+ );
+ );
+ closefile(SCEOUTPUT);
+ Gstr=substring(Gstr,0,length(Gstr)-1)+"]";
+ println("writeoutdata "+filename+":"+Gstr);
+);
+
+Makeshell():=(
+ if(length(Texmain)>0,
+ Texparent=Texmain;
+ );
+ if(length(Texparent)>0,
+ Makeshell(Texparent);
+ if(length(FigPdfList)>0,
+ SCEOUTPUT=openfile(Texparent+".tex");
+ forall(FigPdfList,println(SCEOUTPUT,#));
+ closefile(SCEOUTPUT);
+ );
+ ,
+ Makeshell(Fhead+"main");
+ );
+);
+Makeshell(texmainfile):=Makeshell(texmainfile,"stv");
+Makeshell(texmainfile,flow):=(
+ regional(parent,tmp,tmp1,tmp2,tmp3,flg,tex,path,shnm);
+ parent=Dirwork+Shellparent; // 16.05.29
+ kc():=(
+ println("kc : "+kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex)); // 16.06.04,06.07
+ );
+ tmp1="";
+// tmp2=parent;
+ flg=0;
+ forall(reverse(1..length(parent)),
+ if(flg==0,
+ tmp=substring(parent,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ tmp1=substring(parent,0,#-1);
+ tmp2=substring(parent,#,length(parent));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(tmp1);
+ );
+ SCEOUTPUT = openfile(tmp2);
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); // 15.07.16
+ tmp1=" "+Dq+Fhead+Dq+" "+Dq+texmainfile+Dq; // 15.12.11
+ if((isstring(Shellfile)) & (length(Shellfile)>5), // 16.04.01
+ tmp="sh "+Dq+Shellchild+Dq+tmp1; // 16.05.15,16.05.30
+ ,
+ flg=0;
+ forall(reverse(1..length(PathT)),
+ if(flg==0,
+ if(substring(PathT,#-1,#)=="/",
+ tex=substring(PathT,#,length(PathT));
+ path=substring(PathT,0,#-1);
+ flg=1;
+ );
+ );
+ );
+ if(indexof(flow,"s")>0,
+ tmp=Dq+PathS+Dq+" -nwni -f "+Fhead+".sce"; // 16.07.21from
+ println(SCEOUTPUT,tmp);
+ );
+ if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13
+ tmp=Dq+PathT+Dq+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ tmp=replace(Dq+PathT+Dq,tex,"dvipdfmx")+" "+texmainfile+".dvi";
+ println(SCEOUTPUT,tmp);
+ tmp="rm "+texmainfile+".dvi";
+ println(SCEOUTPUT,tmp);
+ );
+ if(tex=="xelatex",
+ tmp="export PATH=$"+path+":${PATH}";
+ println(SCEOUTPUT,tmp);
+ tmp="xelatex"+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ tmp="rm "+texmainfile+".dvi";
+ println(SCEOUTPUT,tmp);
+ );
+ if(tex=="pdflatex" % tex=="pdftex",//16.11.22from
+ tmp=Dq+PathT+Dq+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ );//16.11.22upto
+ if(tex=="lualatex",//16.12.16
+ tmp=Dq+PathT+Dq+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ );//16.12.16
+ tmp="";
+ if(isstring(Shellfile),
+ if(indexof(Shellfile,"mv")>0,
+ tmp=PathAd;
+ );
+ );
+ if(length(tmp)==0,
+ if(!isstring(Pathpdf),
+ tmp="preview";
+ ,
+ tmp=Pathpdf;
+ );
+ );
+ if(tmp=="preview" % tmp=="skim", // 16.09.09from,16.10.20
+ tmp="open -a "+Dq+tmp+Dq+" "+texmainfile+".pdf";
+ ,
+ tmp=Dq+tmp+Dq+" "+texmainfile+".pdf";
+ );// 16.09.09upto
+ );
+ println(SCEOUTPUT,tmp); // 16.07.21upto
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ setdirectory(Dirwork);
+);
+
+Makebat():=(
+ if(length(Texmain)>0,
+ Texparent=Texmain;
+ );
+ if(length(Texparent)>0,
+ Makebat(Texparent);
+ if(length(FigPdfList)>0,
+ SCEOUTPUT=openfile(Texparent+".tex");
+ forall(FigPdfList,println(SCEOUTPUT,#));
+ closefile(SCEOUTPUT);
+ );
+ ,
+ Makebat(Fhead+"main");
+ );
+);
+Makebat(texmainfile):=Makebat(texmainfile,"stv");
+Makebat(texmainfile,flow):=(
+ regional(drive,fname,tmp,tmp1,tmp2,tmp3,flg,tex,path,batnm);
+ drive="C:";
+ fname=Dirwork+Batparent;
+ kc():=(
+ println("kc : "+kc(Dirwork+Batparent,Dirlib,Fnametex)); // 16.06.04
+ );
+ tmp=indexof(fname,":");
+ if(tmp>0,
+ drive=substring(fname,0,tmp);
+ fname=substring(fname,tmp,length(fname));
+ );
+ tmp1="";
+ tmp2=fname;
+ flg=0;
+ forall(reverse(1..length(fname)),
+ if(flg==0,
+ tmp=substring(fname,#-1,#);
+ if(tmp=="/" % tmp=="\" % tmp=="\", // 14.01.15
+ tmp1=substring(fname,0,#-1);
+ tmp2=substring(fname,#,length(fname));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(drive+tmp1);
+ );
+ SCEOUTPUT = openfile(tmp2);
+ fname=Dirwork;
+ tmp=indexof(fname,":");
+ if(tmp>0,
+ drive=substring(Dirwork,0,tmp);
+ fname=substring(Dirwork,tmp,length(Dirwork));
+ println(SCEOUTPUT,drive);
+ );
+ println(SCEOUTPUT,"cd "+Dq+fname+Dq);// 15.07.16
+ if((isstring(Shellfile)) & (length(Shellfile)>6), // 16.04.01
+ tmp=Dq+Batchild+Dq+tmp1;
+ ,
+ flg=0;
+ forall(reverse(1..length(PathT)),
+ if(flg==0,
+ if(substring(PathT,#-1,#)=="\",
+ tex=substring(PathT,#,length(PathT));
+ path=substring(PathT,0,#-1);
+ flg=1;
+ );
+ );
+ );
+ if(indexof(flow,"s")>0,
+ tmp=Dq+PathS+Dq+" -nb -nwni -f "+Fhead+".sce"; // 16.07.21from
+ println(SCEOUTPUT,tmp);
+ );
+ if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13
+ tmp=Dq+PathT+Dq+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ tmp=replace(Dq+PathT+Dq,tex,"dvipdfmx")+" "+texmainfile+".dvi";
+ println(SCEOUTPUT,tmp);
+ tmp="del "+texmainfile+".dvi";
+ println(SCEOUTPUT,tmp);
+ );
+ if(tex=="xelatex",
+ tmp="set Path = %Path%;"+Dq+path+Dq;
+ println(SCEOUTPUT,tmp);
+ tmp="xelatex"+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ tmp="del "+texmainfile+".dvi";
+ println(SCEOUTPUT,tmp);
+ );
+ if(tex=="pdflatex" % tex=="pdftex",//16.11.22from
+ tmp=Dq+PathT+Dq+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ );//16.11.22upto
+ if(tex=="lualatex",//16.12.16
+ tmp=Dq+PathT+Dq+" "+texmainfile+".tex";
+ println(SCEOUTPUT,tmp);
+ if(indexof(Shellfile,"mv")>0,
+ println(SCEOUTPUT,tmp);
+ );
+ );//16.12.16
+// tmp="del "+texmainfile+".dvi";
+// println(SCEOUTPUT,tmp);
+ tmp="";
+ if(isstring(Shellfile),
+ if(indexof(Shellfile,"mv")>0,
+ tmp=PathAd;
+ );
+ );
+ if(length(tmp)==0,
+ if(!isstring(Pathpdf),
+ tmp=indexof(PathS,"\scilab");// 15.12.12
+ tmp=substring(PathS,0,tmp-1)+"\SumatraPDF\SumatraPDF.exe";
+ ,
+ tmp=Pathpdf;
+ );
+ );
+ tmp=Dq+tmp+Dq+" "+texmainfile+".pdf";
+ ); //16.07.21upto
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ if(indexof(Dirwork,":")==0, // 14.01.15
+ drive="C:";
+ ,
+ drive="";
+ );
+ setdirectory(drive+Dirwork);
+);
+
+Addpackage(packorg):=(
+//help:Addpackage("bm");
+//help:Addpackage(["bm","enumerate"]);
+//help:Addpackage(["bm","[c]{somepackage}"]);
+ regional(packL,tmp);
+ packL=packorg; //17.06.25from
+ if(!islist(packL),packL=[packL]);
+ packL=apply(packL,replace(#,"\","/"));
+ forall(1..(length(packL)),
+ tmp=packL_#;
+ if(substring(tmp,0,11)=="ketpicstyle",
+ tmp=replace(Dirhead+"/"+tmp,"\","/");
+ );
+ if(indexof(tmp,"[")==0,
+ packL_#="{"+tmp+"}";
+ );
+ );
+ ADDPACK=concat(ADDPACK,packL); //17.06.25upto
+);
+
+Viewtex():=(
+ regional(texfile,tmp,tmp1,sep);
+ texfile=Fhead+"main";
+// if(iswindows(),sep="\",sep="/"); // 17.04.07
+// sep="/";
+ SCEOUTPUT=openfile(texfile+".tex");
+ tmp="\documentclass{article}"; // 16.06.09from
+ if(indexof(PathT,"platex")>0,
+ tmp=replace(tmp,"article","jarticle");
+ if(indexof(PathT,"uplatex")>0, //17.08.13from
+ tmp=replace(tmp,"jarticle","ujarticle");
+ );//17.08.13upto
+ ); // 16.06.09upto
+ println(SCEOUTPUT,tmp);
+ if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0) ,//16.11.23,12.16
+ if(indexof(PathT,"pdflatex")>0,
+ println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}");//16.11.24
+ ,
+ println(SCEOUTPUT,"\usepackage{pict2e}");//16.12.16
+ println(SCEOUTPUT,"\usepackage{luatexja}");//16.12.18
+ );
+// println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}");// 17.04.07from
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic2e}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer2e}");
+ ,
+// println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}");
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}");
+ );//17.04.07upto
+ println(SCEOUTPUT,"\usepackage{amsmath,amssymb}");
+ println(SCEOUTPUT,"\usepackage{graphicx}");
+ println(SCEOUTPUT,"\usepackage{color}");
+ forall(ADDPACK, // 16.05.16from
+ println(SCEOUTPUT,"\usepackage"+#); //17.05.25
+ );// 16.05.16upto
+ println(SCEOUTPUT,"");
+// println(SCEOUTPUT,"\def\ketcindy{{K\kern-.20em%"); // deleted 16.11.27,recovered11.29 redeleted17.04.07
+// println(SCEOUTPUT,"\lower.5ex\hbox{E}\kern-.125em{TCindy}}}");
+// println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\setmargin{20}{20}{20}{20}");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\begin{document}");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\verb|"+Fhead+"| by \ketcindy");// 16.01.12, 18, 16.04.08
+// println(SCEOUTPUT,"\verb|"+Fhead+"| by KeTCindy");// 16.11.29 temporarily
+ println(SCEOUTPUT,"\vspace{5mm}");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\input{"+Fhead+".tex}");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\end{document}");
+ closefile(SCEOUTPUT);
+ if(iswindows(),
+ kc():=(
+ println("kc : "+kc(Dirwork+Batparent,Dirlib,Fnametex)); // 16.06.04
+ );
+ Makebat(texfile);
+ ,
+ kc():=(
+ println("kc : "+kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex)); // 16.06.04
+ );
+ Makeshell(texfile);
+ );
+ WritetoSci(2);
+);
+
+Viewparent():=( //17.04.13
+ if(!isexists(Dirwork,Texparent+".tex"),
+ if(isstring(Texparent),
+ drawtext(mouse().xy,Texparent+".tex not exist",
+ size->24,color->[1,0,0]);
+ ,
+ drawtext(mouse().xy,"Texparent not defined",
+ size->24,color->[1,0,0]);
+ );
+ ,
+ if(iswindows(),
+ Makebat();
+ ,
+ Makeshell();
+ );
+ WritetoSci(2);
+ kc();
+ );
+);
+
+Makecmdlist(libname):=(
+//help:Makecmdlist("ketcindylib");
+ regional(cmdall,cmd,flg,tmp,tmp1,tmp2,out);
+ setdirectory(Dirlib);
+ tmp=load(libname+".cs");
+ cmdall=tokenize(tmp,":=");
+ out=[];
+ forall(cmdall,cmd,
+ tmp=max([0,length(cmd)-50]);
+ tmp1=";"+substring(cmd,tmp,length(cmd));
+ flg=0;
+ forall(reverse(1..length(tmp1)),
+ if(flg==0,
+ if(substring(tmp1,#-1,#)==";",
+ tmp=substring(tmp1,#,length(tmp1));
+ tmp2=substring(tmp,0,1);
+ if(length(tmp)>0,
+ if(!contains([" ","/"],tmp2),
+ out=append(out,tmp);
+ flg=1;
+ );
+ );
+ );
+ );
+ );
+ );
+ setdirectory(Dirwork);
+ tmp=length(out)-1;
+ out=out_(2..tmp);
+ out=sort(out);
+);
+
+Savecmdlist(cmdlist,cmdfile):=(
+ SCEOUTPUT=openfile(cmdfile+".cs");
+ forall(cmdlist,
+ println(SCEOUTPUT,#);
+ );
+ closefile(SCEOUTPUT);
+);
+
+Quicksort(seq):=(
+ regional(pivot,left,right,out);
+ if(length(seq)<2,
+ out=seq;
+ ,
+ pivot = max(seq_1,seq_2);
+ left = [];
+ right = [];
+ forall(seq,
+ if(#< pivot,
+ left=append(left,#);
+ ,
+ right=append(right,#);
+ );
+ );
+ left = Quicksort(left);
+ right = Quicksort(right);
+ out=concat(left,right);
+ );
+ out;
+);
+
+Lessstr(st1,st2):=(
+ regional(tmp,tmp1,tmp2,out);
+ tmp=min(length(st1),length(st2));
+ flg=0;
+ forall(1..tmp,
+ if(flg==0,
+ tmp1=substring(st1,#-1,#);
+ tmp2=substring(st2,#-1,#);
+ if(tmp1<tmp2,
+ out=(1<2);
+ flg=1;
+ ,
+ if(tmp1>tmp2,
+ out=(1>2);
+ flg=1;
+ );
+ );
+ );
+ );
+ if(flg==0,
+ if(length(st1)<length(str2),
+ out=(1<2);
+ ,
+ out=(1>2);
+ );
+ );
+ out;
+);
+
+Figpdf():=Figpdf(Texparent,[]);
+Figpdf(Arg1):=(
+ if(isstring(Arg1),
+ Figpdf(Arg1,[]);
+ ,
+ Figpdf(Texparent,Arg1);
+ );
+);
+Figpdf(fnameorg,optionorg):=(
+//help:Figpdf();
+//help:Figpdf([10,,10,,[0,2] ]);(margin(4),move)
+//help:Figpdf([[0,0]]);(move)
+//help:Figpdf(options=[5,5,5,5,[0,0]]]);
+ regional(options,fname,mar,pos,dp,sc,tmp,tmp1,tmp2,sep);
+ fname=fnameorg;
+ if(indexof(fnameorg,".")==0,
+ fname=fnameorg+".tex";
+ );
+ tmp=apply(optionorg,if(isstring(#),parse("["+#+"]"),#)); // 16.04.07
+ tmp=select(tmp,#!=[]);
+ options=optionorg;//16.11.08from
+// mar=[5,5,5,5];
+ dp=[0,-3];
+ tmp=select(options,islist(#));
+ if(length(tmp)>0,
+ dp=tmp_1;
+ options=remove(options,tmp);
+ );
+ tmp=4-length(options);
+ tmp1=apply(1..tmp,5);
+ mar=concat(options,tmp1);
+ mar=apply(mar,if(length(#)==0,5,#));//16.11.08upto
+ pos=[mar_1+dp_1,mar_3+dp_2];
+ sc=10;
+ tmp=indexof(ULEN,"cm");
+ if(tmp>0,
+ tmp1=Removespace(substring(ULEN,0,tmp-1));
+ sc=parse(tmp1)*10;
+ );
+ tmp=indexof(ULEN,"mm");
+ if(tmp>0,
+ tmp1=Removespace(substring(ULEN,0,tmp-1));
+ sc=parse(tmp1);
+ );
+ tmp="\documentclass{article}"; // 16.06.09from
+ if(indexof(PathT,"platex")>0,
+ tmp=replace(tmp,"article","jarticle");
+ if(indexof(PathT,"uplatex")>0, //17.08.13from
+ tmp=replace(tmp,"jarticle","ujarticle");
+ );//17.08.13upto
+ );
+ FigPdfList=append(FigPdfList,tmp); // 16.06.09upto
+ tmp1="\special{papersize=W mm,H mm}";
+ tmp=(XMAX-XMIN)*sc+(mar_1+mar_2);
+ tmp1=replace(tmp1,"W",text(tmp));
+ tmp=(YMAX-YMIN)*sc+(mar_3+mar_4);
+ tmp1=replace(tmp1,"H",text(tmp));
+// if(iswindows(),sep="\",sep="/");//17.04.08
+// sep="/";
+ FigPdfList=append(FigPdfList,tmp1);
+ if(indexof(PathT,"pdflatex")>0 ,//16.11.23
+ Libname=Dirlib+"/ketpic2esciL5";//16.11.23
+ FigPdfList=append(FigPdfList,
+ "\usepackage[pdftex]{pict2e}");//16.11.24
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ FigPdfList=concat(FigPdfList, // 17.04.08from
+// "\usepackage{ketpic2e,ketlayer2e}");
+ ["\usepackage{"+tmp+"/ketpic2e}",
+ "\usepackage{"+tmp+"/ketlayer2e}"]
+ );
+ ,
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ FigPdfList=concat(FigPdfList,
+// "\usepackage{ketpic,ketlayer}");
+ ["\usepackage{"+tmp+"/ketpic}",
+ "\usepackage{"+tmp+"/ketlayer}"]
+ );// 17.04.08upto
+ );//16.11.22from
+ FigPdfList=append(FigPdfList,
+ "\usepackage{amsmath,amssymb}");
+ FigPdfList=append(FigPdfList,
+ "\usepackage{graphicx,color}");
+ forall(ADDPACK, // 16.05.16from
+// if(indexof(#,"[")==0, // 16.09.05from
+// tmp1="\usepackage{"+#+"}";
+// ,
+ tmp1="\usepackage"+#; //17.07.10
+// );
+ FigPdfList=append(FigPdfList,tmp1); // 16.09.05upto
+ );
+ FigPdfList=append(FigPdfList,"");
+// FigPdfList=append(FigPdfList, // deleted 2016.11.27
+// "\def\ketcindy{{K\kern-.20em%");
+// tmp="\lower.5ex\hbox{E}\kern-.125em";
+// tmp=tmp+"{TCindy}}}";
+// FigPdfList=append(FigPdfList,tmp);
+// FigPdfList=append(FigPdfList,"");
+ FigPdfList=append(FigPdfList,
+ "\setmargin{0}{0}{0}{0}");
+ FigPdfList=append(FigPdfList,"");
+ FigPdfList=append(FigPdfList,"\begin{document}");
+ FigPdfList=append(FigPdfList,"");
+ FigPdfList=append(FigPdfList,
+ "\begin{layer}{50}{0}");
+ tmp1="\putnotese{X}{Y}{\input{";
+ tmp1=replace(tmp1,"X",text(pos_1));
+ tmp1=replace(tmp1,"Y",text(pos_2));
+ FigPdfList=append(FigPdfList,tmp1+Fhead+".tex}}");
+ FigPdfList=append(FigPdfList,"");
+ FigPdfList=append(FigPdfList,"\end{layer}");
+ FigPdfList=append(FigPdfList,"");
+ FigPdfList=append(FigPdfList,"\end{document}");
+ if(fnameorg!=Texparent,
+ SCEOUTPUT=openfile(fname);
+ forall(FigPdfList,println(SCEOUTPUT,#));
+ closefile(SCEOUTPUT);
+ );
+ FigPdfList;
+);
+
+Makehelplist(libname):=(
+ regional(cmdall,cmd,flg,lev,tmp,tmp1,out);
+ tmp=load(libname);
+ cmdall=tokenize(tmp,"//help:");
+ cmdall=select(cmdall,substring(#,1,3)!=");");
+ flg=0;
+ forall(1..3,
+ if(flg==0,
+ if(substring(cmdall_#,0,7)=="start()",
+ cmdall=cmdall_((#+1)..length(cmdall));
+ flg=1;
+ );
+ );
+ );
+ flg=0;
+ tmp=length(cmdall);
+ forall(0..2,
+ if(flg==0,
+ if(substring(cmdall_(tmp-#),0,5)=="end()",
+ cmdall=cmdall_(1..(tmp-#-1));
+ flg=1;
+ );
+ );
+ );
+ out=[];
+ forall(cmdall,cmd,
+ tmp1=indexof(cmd,"(");
+ lev=1;
+ flg=0;
+ forall((tmp1+1)..length(cmd),
+ if(flg==0,
+ tmp=substring(cmd,#-1,#);
+ if(tmp=="(",lev=lev+1);
+ if(tmp==")",
+ lev=lev-1;
+ if(lev==0,
+ flg=1;
+ out=append(out,substring(cmd,0,#)+";");
+ );
+ );
+ );
+ );
+ );
+ sort(out);
+);
+
+Helplist():=Helplist(Dirlib,["+","+3d"],"helpJ");
+// 15.05.22
+Helplist(Arg):=(
+ if(islist(Arg),
+ Helplist(Dirlib,Arg,"helpJ"); // 15.06.20
+ ,
+ if(indexof(Arg,"help")>0,
+ Helplist(Dirlib,["+","+3d"],Arg);
+ ,
+ Helplist(Arg,["+","+3d"],"helpJ");
+ );
+ );
+);
+Helplist(Arg1,Arg2):=(
+ if(islist(Arg1),
+ Helplist(Dirlib,Arg1,Arg2);
+ ,
+ if(indexof(Arg2,"help")>0,
+ Helplist(Dirlib,Arg1,Arg2);
+ ,
+ Helplist(Arg,["+","+3d"],Arg2);
+ );
+ );
+);
+Helplist(dir,files,help):=(
+//help:Helplist();
+//help:Helplist("helpE");
+ regional(ketfiles,tmp,tmp1,tmp2);
+ setdirectory(dir);
+ if(contains(files,"+"),
+ tmp=remove(files,["+"]);
+ ketfiles=concat(["+basic1","+basic2","+out"],tmp);
+ ,
+ ketfiles=files;
+ );
+ ketfiles=apply(ketfiles,replace(#,"+","ketcindylib"));
+ ketfiles=apply(ketfiles,#+".cs"); // 15.11.05 from
+ tmp=apply(files,replace(#,"+","ketcindylib"));
+// tmp=apply(files,replace(#,".cs",""));
+// tmp=remove(tmp,["ketcindylibout"]);
+// tmp=apply(tmp,replace(#,"basic",""));
+ tmp=apply(tmp,#+help+".txt");
+ ketfiles=concat(ketfiles,tmp);// 15.11.05 upto
+ tmp1=[];
+ forall(ketfiles,
+ tmp=Makehelplist(#);
+ tmp1=concat(tmp1,tmp);
+ );
+ if(!islist(HLIST), // 16.12.31from
+ HLIST=sort(tmp1);
+ ,
+ HLIST=sort(concat(HLIST,tmp1));
+ ); // 16.12.31upto
+ setdirectory(Dirwork);
+);
+
+
+Help():=(
+ forall(HLIST,
+ println(#);
+ );
+);
+Help(strorg):=(
+//help:Help("Plot");
+//help:Help("*");
+ regional(str,sel,tmp,tmp1,tmp2,flg,Endflg);
+ if(length(HLIST)>0,flg=0,flg=-1);
+ str=replace(strorg,"'",Dq); // 15.11.25
+ if(length(str)==0,
+ forall(HLIST,
+ if(indexof(#,"*")>0,
+ println(#);
+ );
+ flg=1;
+ );
+ ,
+ if(str=="*",
+ sel=HLIST;
+ ,
+ sel=select(HLIST,substring(#,0,length(str))==str);
+ );
+ if(length(sel)>0,flg=1);
+ forall(sel,
+ tmp=indexof(#,"(");
+ if(substring(#,tmp-2,tmp-1)!="*",
+ println(#);
+ ,
+// println(substring(#,0,tmp-1));
+ tmp1=substring(#,tmp,length(#)-2);
+ tmp2=indexof(tmp1,"//");
+ Endflg=0;
+ forall(1..4,
+ if(Endflg==0,
+ tmp2=indexof(tmp1,"//");
+ if(tmp2==0,
+ println(" "+tmp1);
+ Endflg=1;
+ ,
+ println(" "+substring(tmp1,0,tmp2-1));
+ tmp1=substring(tmp1,tmp2+1,length(tmp1));
+ );
+ );
+ );
+ );
+ );
+ );
+ if(flg==-1,println(" Help not read in"));
+ if(flg==0,println(" no example"));
+);
+
+Helpkey(str):=(
+ regional(tmp,tmp1,tmp2);
+ tmp1=select(HLIST,indexof(#,str)>0);
+ forall(tmp1,
+ tmp=substring(#,0,indexof(#,"*")-1);
+ Help(tmp);
+ );
+);
+Helpkey(str1,str2):=(
+//help:Helpkey(keyword);
+//help:Helpkey(keyword1,keyword2);
+ regional(tmp,tmp1,tmp2);
+ tmp1=select(HLIST,indexof(#,str1)>0);
+ tmp1=select(tmp1,indexof(#,str2)>0);
+ forall(tmp1,
+ tmp=substring(#,0,indexof(#,"*")-1);
+ Help(tmp);
+ );
+);
+
+Slidework():=Slidework(Dirwork); // 16.06.10
+Slidework(dirorg):=(
+//help:Slidework(directory);
+ regional(dir,tmp,sep); // 16.06.25
+ dir=replace(dirorg,unicode("000a"),""); // 16.06.25
+ sep="/"; //17.04.16from
+ if(iswindows(),
+ dir=replace(dir,"/","\");
+ sep="\";
+ ); //17.04.16upto
+ if(isexists(dir,""), // 16.12.20
+ Changework(dir);
+ if(!isexists(Dirwork,"fig"), // 16.12.18
+ cmdL=["createdir",[Dq+dir+sep+"fig"+Dq]];//16.12.27,17.04.16
+ CalcbyS("crdr",cmdL,["m"]);
+ println(dir+sep+"fig generated"); //17.04.16
+ );
+ tmp=dir+sep+"fig"; //17.04.16from
+ Changework(tmp);// 17.02.19upto
+ ,
+ println(dir+ " not exists");
+ );
+);
+
+Setslidepage():=( // 17.03.05
+ regional(tmp1,tmp2,tmp3);
+ tmp1=["letterc","boxc","framec","shadowc","xpos","size"];
+ tmp2=apply([1,2,4,5,7,8],SlideColorList_#);
+ tmp3=apply(1..(length(tmp1)),tmp1_#+"="+tmp2_#);
+ println(tmp3);
+);
+Setslidepage(list):=( // 16.12.22
+//help:Setslidepage([letterc,boxc,framec,shadowc,xpos,size]);
+ regional(numlist,tmp,tmp1,letterc,boxc,shadowc,mboxc);
+ letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0];
+ shadowc=[0,0,0,0.5]; mboxc="yellow";
+ if(!islist(SlideColorList),
+ SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
+ letterc,mboxc,mboxc,mboxc,62,2,letterc];
+ );
+ numlist=[1,2,4,5,7,8];
+ forall(1..(length(list)),
+ if(length(list_#)>0,
+ tmp=numlist_#;
+ SlideColorList_tmp=list_#;
+ );
+ );
+ SlideColorList_3=SlideColorList_2;
+ SlideColorList_6=SlideColorList_5;
+);
+
+Setslidemain():=( // 17.03.05
+ regional(tmp1,tmp2,tmp3);
+ tmp1=["letterc","boxc","framec","xpos","size"];
+ tmp2=apply([9,10,12,13,14],SlideColorList_#);
+ tmp3=apply(1..(length(tmp1)),tmp1_#+"="+tmp2_#);
+ println(tmp3);
+);
+Setslidemain(list):=( // 16.12.22
+//help:Setslidemain([letterc,boxc,framec,xpos,size]);
+ regional(numlist,tmp,tmp1,letterc,boxc,shadowc,mboxc);
+ letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0];
+ shadowc=[0,0,0,0.5]; mboxc="yellow";
+ if(!islist(SlideColorList),
+ SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
+ letterc,mboxc,mboxc,mboxc,62,2,letterc];
+ );
+ numlist=[9,10,12,13,14];
+ forall(1..(length(list)),
+ if(length(list_#)>0, //17.01.04
+ tmp=numlist_#;
+ SlideColorList_tmp=list_#;
+ );
+ );
+ SlideColorList_11=SlideColorList_10;
+);
+
+Setslidebody():=( // 17.03.05
+ regional(tmp1,tmp2,tmp3);
+ tmp1=["letterc","style","thindense"];
+ tmp2=[SlideColorList_(15),BodyStyle,ThinDense];
+ tmp3=apply(1..(length(tmp1)),tmp1_#+"="+tmp2_#);
+ println(tmp3);
+);
+Setslidebody(str):=(
+ regional(clr,style,thin);
+ if(isstring(str),
+ Setslidebody(str,"\Large\bf\boldmath",0.1);
+ ,
+ if(length(str)==1,Setslidebody(str_1));
+ if(length(str)==2,Setslidebody(str_1,str_2));
+ if(length(str)==3,Setslidebody(str_1,str_2,str_3));
+ );
+);
+Setslidebody(str,Arg):=( //17.01.08
+ if(isstring(Arg),
+ Setslidebody(str,Arg,0.1);
+ ,
+ Setslidebody(str,"\Large\bf\boldmath",Arg);
+ );
+);
+Setslidebody(str,style,density):=( // 16.12.22,17.01.06,01.08
+//help:Setslidebody(["black",,0]);
+//help:Setslidebody(["blue","\Large\bf\boldmath",0.1]);
+ regional(numlist,tmp,tmp1,letterc,boxc,shadowc,mboxc);
+ letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0];
+ shadowc=[0,0,0,0.5]; mboxc="yellow";
+ if(!islist(SlideColorList),
+ SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
+ letterc,mboxc,mboxc,mboxc,62,2,letterc];
+ );
+ if(length(str)>0,SlideColorList_(15)=str);
+ if(length(style)>0,BodyStyle=style);
+ ThinDense=density;//17.01.08
+);
+
+Setslidehyper():=Setslidehyper(["cl=true,lc=blue,fc=blue",125,70,1]);
+// 16.12.31from
+Setslidehyper(Arg):=(
+ if(isstring(Arg),
+ if(length(Arg)==0, //17.01.29from
+ Setslidehyper();
+ ,
+ Setslidehyper(Arg,[]);
+ );//17.01.29upto
+ ,
+ Setslidehyper("dvipdfmx",Arg);
+ );
+);
+Setslidehyper(driver,options):=(
+//help:Setslidehyper();
+//help:Setslidehyper("dvipdfmx",["cl=true,lc=blue,fc=blue",125,70,1]);
+ regional(reL,stL,tmp,tmp1,tmp2,str,reL);
+ str="";
+ reL=[];
+ forall(options,
+ if(isstring(#),
+ str=#
+ ,
+ reL=append(reL,#);
+ );
+ );
+ if(length(str)>0,str=","+str);
+ tmp1="";
+ if(length(driver+str)>0,
+ tmp1="["+driver+str+"]";
+ );
+ tmp1=replace(tmp1,"cl=","colorlinks=");
+ tmp1=replace(tmp1,"lc=","linkcolor=");
+ tmp1=replace(tmp1,"fc=","filecolor=");
+ tmp1=replace(tmp1,"uc=","urlcolor=");
+ Addpackage(tmp1+"{hyperref}");
+ LinkPosH=125;
+ LinkPosV=70;
+ LinkSize=1;
+ if(length(reL)>0,LinkPosH=reL_1);
+ if(length(reL)>1,LinkPosV=reL_2);
+ if(length(reL)>2,LinkSize=max(reL_3,0.1)); // 17.07.31
+);
+
+Settitle(cmdL):=Settitle("slide0",cmdL,[]);
+Settitle(Arg1,Arg2):=(
+ if(isstring(Arg1),
+ Settitle(Arg1,Arg2,[]);
+ ,
+ Settitle("slide0",Arg1,Arg2);
+ );
+);
+Settitle(name,cmdL,options):=(
+//help:Settitle(cmdL);
+//help:Settitle(name,cmdL);
+//help:Settitle(options=["Layery=0","Color=blue"]);
+ regional(tmp,tmp1,tmp2,eqL,layery,color,size,font);
+ TitleName=name;
+ layery="0";
+ color="blue";
+ size="\Large";
+ font="\bf";
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ forall(eqL,
+ tmp1=Toupper(substring(#,0,1));
+ tmp=indexof(#,"=");
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="L",
+ layery=tmp2;
+ );
+ if(tmp1=="C",
+ color=tmp2;
+ );
+ if(tmp1=="S",
+ size=tmp2;
+ if(substring(size,0,1)!="\",size="\"+size);
+ );
+ if(tmp1=="F",
+ font=tmp2;
+ if(substring(font,0,1)!="\",font="\"+font);
+ );
+ );
+ TitleCmdL=["{"+size+font];
+ if(indexof(color,"[")>0,
+ tmp=replace(color,"[","{");
+ tmp=replace(tmp,"]","}");
+ tmp1=Indexall(tmp,",");
+ if(length(tmp1)>=3,
+ tmp="\color[cmyk]"+tmp;
+ ,
+ tmp="\color[rgb]"+tmp;
+ );
+ ,
+ tmp="\color{"+color+"}";
+ );
+ TitleCmdL=append(TitleCmdL,tmp);
+ TitleCmdL=concat(TitleCmdL,["","\begin{layer}{120}{"+layery+"}"]);
+ forall(1..(length(cmdL)),
+ tmp=cmdL_#;
+ if(length(tmp)>0,
+ if(#==1,
+ tmp="{\Huge \putnote"+tmp+"}"
+ ,
+ tmp="\putnote"+tmp;
+ );
+ TitleCmdL=append(TitleCmdL,tmp);
+ );
+ );
+ TitleCmdL=concat(TitleCmdL,["\end{layer}","","}"]);
+);
+
+Maketitle():=(
+ if(!isstring(TitleName), //17.04.13from
+ drawtext(mouse().xy,"Settitle not defined",
+ size->24,color->[1,0,0]);
+ , //17.04.13upto
+ Maketitle(TitleName);
+ );
+);
+Maketitle(name):=(
+//help:Maketitle();
+ regional(texfile,texmain,tmp,tmp1,sep);
+ texfile=name;
+ texmain=name+"main";
+ SCEOUTPUT=openfile(texfile+".tex");
+ forall(TitleCmdL,
+ println(SCEOUTPUT,#);
+ );
+ closefile(SCEOUTPUT);
+ SCEOUTPUT=openfile(texmain+".tex");
+ tmp="\documentclass[landscape,10pt]{article}";
+ if(indexof(PathT,"platex")>0,
+ tmp=replace(tmp,"article","jarticle");
+ if(indexof(PathT,"uplatex")>0, //17.08.13from
+ tmp=replace(tmp,"jarticle","ujarticle");
+ );//17.08.13upto
+ );
+ println(SCEOUTPUT,tmp);
+ tmp="\special{papersize=\the\paperwidth,\the\paperheight}";
+ println(SCEOUTPUT,tmp);
+// if(iswindows(),sep="\",sep="/"); // 17.04.08from
+// sep="/";
+ //println(SCEOUTPUT,"\usepackage{ketpic,ketlayer,ketslide}");
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide}");
+ println(SCEOUTPUT,"\usepackage{amsmath,amssymb}");
+ println(SCEOUTPUT,"\usepackage{bm,enumerate}");
+ if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0),
+ println(SCEOUTPUT,"\usepackage{graphicx}");
+ ,
+ println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}");
+ );
+ println(SCEOUTPUT,"\usepackage[usenames]{xcolor}");
+ forall(ADDPACK,
+// if(indexof(#,"[")==0,
+// println(SCEOUTPUT,"\usepackage{"+#+"}");
+// ,
+ println(SCEOUTPUT,"\usepackage"+#); // 17.07.10
+// );
+ );
+ if(indexof(PathT,"platex")>0,tmp="\ketmarginJ",tmp="\ketmarginE");
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"\ketslideinit");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\begin{document}");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\input{"+texfile+".tex}");
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\end{document}");
+ closefile(SCEOUTPUT);
+ if(iswindows(),
+ Makebat(texmain,"tv");
+ ,
+ Makeshell(texmain,"tv");
+ );
+ kc();
+);
+
+Repeatsameslide(repeatflg,sestr,addedL):=(
+ regional(seL,flg1,ss,nn,nrep,tmp,tmp1,tmp2,tmp3,str,j,k);
+ // global RepeatList, SCEOUTPUT
+ nrep=length(RepeatList);
+ flg1=0;
+ forall(addedL,ss,
+ if(repeatflg==0,
+ if(substring(ss,0,1)!="%", //16.01.04
+ println(SCEOUTPUT,ss);
+ );//16.01.04
+ ,
+ forall(1..nrep,nn,
+ if(sestr=="",
+ RepeatList_nn=append(RepeatList_nn,ss);
+ );
+ );
+ if(sestr=="",
+ seL=[1];
+ ,
+ tmp1=substring(sestr,1,length(sestr)-1);
+ tmp1=replace(tmp1,",-",".."+text(nrep));
+ tmp1=replace(tmp1,"-,","1..");
+ tmp1="["+tmp1+"]"; //17.01.03
+ seL=flatten(parse(tmp1)); //17.01.03
+ );
+ if(contains(seL,1),
+ if(substring(ss,0,1)!="%", //16.01.04
+ println(SCEOUTPUT,ss);
+ );
+ seL=remove(seL,[1]);
+ flg1=1;
+ );
+ forall(1..(length(seL)),nn,
+ tmp=seL_nn;
+ if(tmp<=length(RepeatList), //17.01.12from
+ RepeatList_tmp=append( RepeatList_tmp,ss);
+ ,
+ println(" "+sestr+" : "+text(tmp)+" > "+text(length(RepeatList)));
+ );
+ );
+ if(ThinFlg==1,//16.01.05from
+ if(flg1==1,seL=append(seL,1));
+ seL=remove(1..nrep,seL);
+ str=ss; // 17.05.28from
+ repeat(10,
+ tmp1=Indexall(str,"{\color");
+ if(length(tmp1)>0,
+ tmp2=Indexall(str,"}");
+ tmp=select(tmp2,tmp1_1<#);
+ tmp=substring(str,tmp1_1,tmp_1);
+ str=replace(str,tmp+" ","");
+ str=replace(str,tmp,"");
+ );
+ );//17.05.28upto
+ if(contains(seL,1),
+ if(substring(str,0,1)!="%",
+ if(NonThinFlg==0,
+ if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15
+ println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}");//17.08.23
+ println(SCEOUTPUT,str);
+ println(SCEOUTPUT,"}%");
+ ,
+ println(SCEOUTPUT,str);
+ );
+ );
+ if(NonThinFlg==1,
+ if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15
+ println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}");//17.08.23
+ );
+ println(SCEOUTPUT,str);
+ );
+ if(NonThinFlg==2,
+ println(SCEOUTPUT,str);
+ if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15
+ println(SCEOUTPUT,"}%");
+ );
+ );
+ seL=remove(seL,[1]);
+ );
+ );
+ if(substring(ss,0,1)!="%", //16.01.04
+ forall(1..(length(seL)),nn,
+ tmp=seL_nn;
+ if(NonThinFlg==0,
+ tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}";//17.08.23
+ tmp1=[tmp1,str,"}%"];
+ );
+ if(NonThinFlg==1,
+ tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}";//17.08.23
+ tmp1=[tmp1,str];//17.01.08upto
+ );
+ if(NonThinFlg==2,
+ tmp1=[str,"}%"];
+ );
+ RepeatList_tmp=concat( RepeatList_tmp,tmp1);
+ );
+ );
+ );//16.01.05upto
+ );
+ );//16.12.05upto
+);
+
+Presentation(texfile):=Presentation(texfile,texfile);
+Presentation(texfile,txtfile):=(
+//help:Presentation(texfile,txtfile);
+ regional(file,flgL,flg,verbflg,slideL,ns,slideorgL,wall,sld,slidecmd,tmp,tmp0,tmp1,
+ tmp2,tmp3,tmp4,tmp5,newoption,top,repeatflg,nrep,nrepprev,,repstr,
+ sestr,npara,paradt,parafiles,hyperflg,paractr,
+ letterc,boxc,shadowc,mboxc,sep);
+ slidecmd=["\ketcletter","\ketcbox","\ketdbox","\ketcframe",
+ "\ketcshadow","\ketdshadow","\slidetitlex","\slidetitlesize",
+ "\mketcletter","\mketcbox","\mketdbox","\mketcframe",
+ "\mslidetitlex","\mslidetitlesize"];
+ if(!isstring(BodyStyle),//17.01.06
+ BodyStyle="\Large\bf\boldmath";
+ );
+ repeatflg=0;
+ RepeatList=[];
+ paractr=0; //16.12.31
+ if(indexof(texfile,".")==0,file=texfile+".tex",file=texfile);
+ if(indexof(txtfile,".")==0,tmp1=txtfile+".txt",tmp1=txtfile);
+ tmp=load(tmp1);
+ tmp=replace(tmp,"////","||||");// 16.05.11, 06.24(reactivated)
+ slideL=tokenize(tmp,"//");
+ slideorgL=slideL; // 16.07.11
+ slideL=apply(slideL,Removespace(#));
+ tmp=select(1..length(slideL),length(slideL_#)>0); // 16.07.11from
+ slideL=apply(tmp,slideL_#);
+ slideorgL=apply(tmp,slideorgL_#);
+// slideL=select(slideL,length(#)>0); // 16.07.11upto
+ flg=0; // 16.06.09from
+ forall(1..10,
+ if(flg==0,
+ if(substring(slideL_1,0,1)!="%",
+ flg=1;
+ ,
+ slideL=slideL_(2..length(slideL));
+ slideorgL=slideorgL_(2..length(slideorgL));
+ );
+ );
+ ); // 16.06.09upto
+ flgL=[];
+ SCEOUTPUT = openfile(file);
+ tmp=tokenize(slideL_1,"::");
+ tmp1=tmp_1;
+ if(length(tmp)>1,
+ tmp2=tmp_2;
+ tmp3=tmp_(3..length(tmp));//16.06.25
+ ,
+ tmp2="";
+ tmp3=tmp_(2..length(tmp));//16.06.25
+ );
+ wall=""; // 16.06.10
+ if(length(tmp3)>0,//16.06.25from
+ if(substring(tmp3_1,0,1)!="\" & indexof(tmp3_1,"=")==0,
+ wall=tmp3_1;
+ tmp3=tmp3_(2..length(tmp3));
+ );
+ );//16.06.25upto
+ tmp="%%% "+tmp1+" "+txtfile;// 16.06.09from
+ println(SCEOUTPUT,tmp);
+ tmp="\documentclass[landscape,10pt]{article}";
+ if(indexof(PathT,"platex")>0,
+ tmp=replace(tmp,"article","jarticle");
+ if(indexof(PathT,"uplatex")>0, //17.08.13from
+ tmp=replace(tmp,"jarticle","ujarticle");
+ );//17.08.13upto
+ );
+ println(SCEOUTPUT,tmp);// 16.06.09from
+ tmp=select(1..(length(tmp3)),indexof(tmp3_#,"\usepackage")>0);//17.06.18from
+ forall(tmp,
+ println(SCEOUTPUT,tmp3_#);
+ );
+ tmp=remove(1..(length(tmp3)),tmp);
+ tmp3=tmp3_tmp;//17.06.18upto
+// if(iswindows(),sep="\",sep="/"); // 17.04.08
+// sep="/";
+ if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0),
+ if(indexof(PathT,"lualatex")>0,
+ println(SCEOUTPUT,"\usepackage{luatexja}");
+ );
+ println(SCEOUTPUT,"\usepackage{pict2e}");
+// println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}");// 17.04.08from
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic2e}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer2e}");
+ ,
+ println(SCEOUTPUT,"\special{papersize=\the\paperwidth,\the\paperheight}");
+ //println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}");
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}");
+ );// 17.04.08upto
+ if(length(wall)==0,
+ //println(SCEOUTPUT,"\usepackage{ketslide}");//17.04.08from
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");//17.04.16
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide}");
+ ,
+ tmp=replace(Dirhead+"/ketpicstyle","\","/");//17.04.16
+ //println(SCEOUTPUT,"\usepackage{ketslide2}");
+ println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide2}");
+ );//17.04.08upto
+ println(SCEOUTPUT,"\usepackage{amsmath,amssymb}");
+ println(SCEOUTPUT,"\usepackage{bm,enumerate}");
+ if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0),
+ println(SCEOUTPUT,"\usepackage{graphicx}");
+ ,
+ println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}");
+ );
+// println(SCEOUTPUT,"\usepackage[usenames]{color}");
+// println(SCEOUTPUT,"\usepackage{color}");//17.06.14
+ println(SCEOUTPUT,"\usepackage{xcolor}");//17.07.31
+ letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0];
+ shadowc=[0,0,0,0.5]; mboxc="yellow";
+// if(!islist(SlideColorList), //17.03.02from
+// SlideColorList=[letterc,boxc,boxc,boxc,shadowc,shadowc,6,1.3,
+// letterc,mboxc,mboxc,mboxc,62,2,letterc];
+// , //17.03.02upto
+ tmp4="abcdefghijklmno";
+ forall(1..15,
+ tmp=SlideColorList_#;
+ if(islist(tmp),
+ tmp=text(tmp);
+ tmp=substring(tmp,1,length(tmp)-1);
+ if(length(SlideColorList_#)==4,//17.01.07from
+ println(SCEOUTPUT,"\definecolor{slidecolor"+tmp4_#+"}{cmyk}{"+tmp+"}");
+ );
+ if(length(SlideColorList_#)==3,
+ println(SCEOUTPUT,"\definecolor{slidecolor"+tmp4_#+"}{rgb}{"+tmp+"}");
+ );//17.01.07upto
+ SlideColorList_#="slidecolor"+tmp4_#;
+ );
+ );
+// ); //17.03.02
+ println(SCEOUTPUT,"\def\setthin#1{\def\thin{#1}}");//17.08.23
+ println(SCEOUTPUT,"\setthin{"+text(ThinDense)+"}");//17.08.23
+ forall(ADDPACK,// 16.06.09from
+// if(indexof(#,"[")==0, // 16.09.05from
+// println(SCEOUTPUT,"\usepackage{"+#+"}");
+// ,
+ println(SCEOUTPUT,"\usepackage"+#); //17.07.10
+// );
+ );// 16.06.09upto
+ tmp=select(ADDPACK,indexof(#,"{hyperref}")>0);//16.12.31from
+ if(length(tmp)>0,
+ hyperflg=1;
+ ,
+ hyperflg=0; //16.12.31upto
+ );
+ forall(tmp3,
+ println(SCEOUTPUT,#);
+ );
+ if(indexof(PathT,"platex")>0,tmp="\ketmarginJ",tmp="\ketmarginE"); // 16.06.09
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"\ketslideinit");
+ println(SCEOUTPUT,"");
+ forall(tmp, // 15.07.21
+ if(substring(#,0,1)=="\", println(SCEOUTPUT,#));
+ );
+ if(!isstring(PageStyle),PageStyle="headings");//17.04.09
+ println(SCEOUTPUT,"\pagestyle{"+PageStyle+"}");//17.04.09
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\begin{document}");
+ println(SCEOUTPUT,"");
+ if(length(wall)>0,
+ println(SCEOUTPUT,"\input{fig/"+wall+".tex}");
+ println(SCEOUTPUT,"");
+ );
+ if(length(tmp2)>0,
+ if(indexof(tmp2," no")==0, // 16.11.11from
+ println(SCEOUTPUT,"\begin{layer}{120}{0}");
+ if(substring(tmp2,0,1)!="\",
+ tmp2="\putnotese{0}{0}{\input{fig/"+tmp2+".tex}}";//16.12.27
+ );
+ println(SCEOUTPUT,tmp2);
+ println(SCEOUTPUT,"\end{layer}");
+ println(SCEOUTPUT,"");
+ ,
+ tmp=indexof(tmp2,"=");
+ if(tmp==0,
+ top="10mm";
+ ,
+ top=substring(tmp2,tmp,length(tmp2));
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\vspace*{"+top+"}");
+ println(SCEOUTPUT,"");
+ ); // 16.11.11upto
+ );
+ println(SCEOUTPUT,"\def\mainslidetitley{22}");
+ forall(1..14, //16.12.22from
+ tmp=SlideColorList_#;
+ if(!isstring(tmp),tmp=text(tmp));
+ if(length(tmp)>0,
+ tmp="\def"+slidecmd_#+"{"+tmp+"}";
+ println(SCEOUTPUT,tmp);
+ );
+ );//16.12.22upto
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\color{"+SlideColorList_(15)+"}");
+ println(SCEOUTPUT,BodyStyle);//17.01.07
+ println(SCEOUTPUT,"\thispagestyle{empty}");//17.01.29
+ println(SCEOUTPUT,"\addtocounter{page}{-1}");//17.01.29
+ println(SCEOUTPUT,"");
+ verbflg=0; //16.06.28
+ repeatflg=0;//16.12.02
+ nrep=0;//16.12.27
+ nrepprev=0;//17.01.03
+ npara=0;//16.12.27
+ forall(2..length(slideL),ns,
+ ThinFlg=0;
+ NonThinFlg=0;
+ flg=0;
+ tmp1="";
+ tmp2="";
+ tmp3="";
+ sld=removespace(slideL_ns); // 16.06.28
+ sestr="";
+ if((substring(sld,0,1)=="%") & (substring(sld,0,2)!="%%"), // 17.06.23
+ Repeatsameslide(repeatflg,"",[slideL_ns]);
+ if(repeatflg>0,
+ tmp=indexof(sld,"]::");
+ if(tmp>0,
+ if(substring(sld,1,2)!="%",//17.05.31
+ if(substring(sld,1,5)=="thin", ThinFlg=1); // 17.05.28
+ sestr=substring(sld,1,tmp);
+ sld=substring(sld,tmp+2,length(sld));
+ tmp=indexof(sestr,"[");
+ sestr=substring(sestr,tmp-1,length(sestr));//17.01.05
+ );
+ );
+ );
+ if(substring(sld,1,7)=="repeat", // 16.12.09from
+ tmp=indexof(sld,"=");
+ tmp5=substring(sld,tmp,length(sld));
+ tmp=indexof(tmp5,",");
+ if(tmp>0,//17.01.03from
+ tmp5=substring(tmp5,0,tmp-1);
+ );//17.01.03upto
+ repeatflg=1;
+ if(length(tmp5)>0,
+ nrep=parse(tmp5);
+ tmp=[];
+ if(length(wall)>0,
+ tmp=["","\input{fig/"+wall+".tex}"];
+ );
+ tmp=concat(tmp,["","\sameslide"+NewSlideOption,"","\vspace*{18mm}",""]);
+ RepeatList=apply(1..nrep,if(#==1,[],tmp));
+ );
+ if(sestr=="",flg=1);
+ tmp=indexof(sld,",");//17.01.03from
+ if(tmp>0,
+ sld="%"+substring(sld,tmp,length(sld));
+ if(indexof(sld,"=")==0,sld=sld+"=");
+ );//17.01.03upto
+ );
+ if(substring(sld,1,5)=="para",
+ paractr=paractr+1;
+ repeatflg=1;
+ tmp=indexof(sld,"=");
+ tmp=substring(sld,tmp,length(sld));
+ if(length(tmp)==0, //17.01.03
+ npara=0;
+ ,
+ paradt=tokenize(tmp,":");
+ tmp=fileslist(Dirwork+"/fig/"+paradt_1);
+ if(length(tmp)>0,
+ parafiles=tokenize(tmp,",");
+ if(indexof(paradt_4,"input")>0,
+ tmp0=indexof(paradt_4,",");//17.01.29from
+ if(tmp0>0,
+ paradt=append(paradt,substring(paradt_4,tmp0,length(paradt_4)));
+ paradt_4=substring(paradt_4,0,tmp0-1);
+ );//17.01.29upto
+ parafiles=select(parafiles,indexof(#,".tex")>0);
+ if(indexof(paradt_4,"\input")==0,paradt_4="\"+paradt_4);//16.12.17
+ );
+ if(indexof(paradt_4,"include")>0,
+ parafiles=select(parafiles,indexof(#,".pdf")>0);
+ );
+ npara=length(parafiles);
+ ,
+ println(Dirwork+"/fig/"+paradt_1+" not found");
+ parafiles=[];
+ npara=0;
+ );
+ if(nrep==0,
+ nrep=npara;
+ if(length(wall)>0,
+ tmp=["","\input{fig/"+wall+".tex}"];
+ );
+ tmp=concat(tmp,["","\sameslide"+NewSlideOption,"","\vspace*{18mm}",""]);
+ RepeatList=apply(1..nrep,if(#==1,[],tmp));
+ );
+ );
+ forall(1..nrep, //16.12.28
+ tmp4=[]; //16.12.31from
+ if(hyperflg>0,
+ tmp4=["\hypertarget{para"+text(paractr)+"pg"+text(#)+"}{}"];
+ );//16.12.31upto
+ if(npara>0, //17.01.03
+ tmp4=concat(tmp4,["","\begin{layer}{120}"+paradt_2]);
+ if(#<=npara, //16.12.28from
+ tmp=parafiles_#;
+ ,
+ tmp=parafiles_npara;
+ );
+ tmp="{"+paradt_4+"{fig/"+paradt_1+"/"+tmp+"}}";
+ if(length(paradt)>=5,
+ tmp="{\scalebox{"+text(paradt_5)+"}"+tmp+"}";
+ );
+ if(substring(paradt_3,0,1)=="\",
+ tmp=paradt_3+tmp;
+ ,
+ tmp="\putnote"+paradt_3+tmp;
+ );
+ tmp4=concat(tmp4,[tmp]);//16.12.31
+ ,
+ tmp4=concat(tmp4,["","\begin{layer}{120}{0}"]);
+ );
+ if((hyperflg>0) & (LinkSize>0.15),
+ tmp="{"+text(LinkPosV)+"}{\hyperlink{para"; // 17.01.12from
+ tmp1=tmp+text(paractr)+"pg";
+ tmp2=tmp+text(paractr-1)+"pg"+text(nrepprev);
+ if(#>1,tmp=tmp1+text(1),tmp=tmp2);
+ tmp3=[text(LinkPosH-29*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{"
+ +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize)
+ +"}{\scriptsize $\mathstrut|\!\lhd$}}}}}"];
+ if(#>1,tmp=tmp1+text(max(#-3,1)),tmp=tmp2);
+ tmp3=append(tmp3,
+ text(LinkPosH-24*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{"
+ +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize)
+ +"}{\scriptsize $\mathstrut\!\! \lhd\!\!\lhd\!$}}}}}");
+ if(#>1,tmp=tmp1+text(#-1),tmp=tmp2);
+ tmp3=append(tmp3,
+ text(LinkPosH-17*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{"
+ +text(4.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize)
+ +"}{\scriptsize $\mathstrut\!\!\lhd\!\!$}}}}}");
+ tmp="{"+text(LinkPosV)+"}{\hyperlink{para";
+ tmp2=tmp+text(paractr+1)+"pg"+text(1);
+ if(#<nrep,tmp=tmp1+text(#+1),tmp=tmp2);
+ tmp3=append(tmp3,
+ text(LinkPosH-10*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{"
+ +text(4.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize)
+ +"}{\scriptsize $\mathstrut\!\rhd\!$}}}}}");
+ if(#<nrep,tmp=tmp1+text(min(#+3,nrep)),tmp=tmp2);
+ tmp3=append(tmp3,
+ text(LinkPosH-5*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{"
+ +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize)
+ +"}{\scriptsize $\mathstrut\!\!\rhd\!\!\rhd\!$}}}}}");
+ if(#<nrep,tmp=tmp1+text(nrep),tmp=tmp2);
+ tmp3=append(tmp3,
+ text(LinkPosH)+"}"+tmp+"}{\fbox{\Ctab{" // 17.01.19
+ +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize)
+ +"}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}");
+ tmp3=apply(tmp3,tmp,"\putnotew{"+tmp);
+ tmp4=concat(tmp4,tmp3);// 17.01.12uptor
+ tmp="\putnotew{"+text(LinkPosH)+"}{"+text(LinkPosV+6)+"}";//17.10.21from
+ tmp=tmp+"{\scriptsize\color{black} "+text(#)+"/"+text(nrep)+"}";
+ tmp4=append(tmp4,tmp);//17.10.21upto
+ );
+ tmp4=concat(tmp4,["\end{layer}",""]);//16.12.31upto
+ Repeatsameslide(repeatflg,text([#]),tmp4);
+ );
+ );
+ );
+ if(substring(sld,0,2)=="%%", //17.06.23from
+ println(SCEOUTPUT,sld);
+ flg=1;
+ ); //17.06.23upto
+ if(flg==0,
+ if(indexof(sld,"\begin{verbatim}")==1, // 16.06.28from
+ Repeatsameslide(repeatflg,sestr,[slideL_ns]);
+ verbflg=1;
+ flg=1;
+ ); // 16.06.28
+ if(indexof(sld,"\end{verbatim}")==1,
+ Repeatsameslide(repeatflg,sestr,[slideL_ns]);
+ verbflg=0;
+ flg=1;
+ ); // 16.06.28upto
+ if(flg==0,
+ tmp=replace(sld,"||||","//"); // 16.05.11
+ tmp=tokenize(tmp,"::"); // 16.05.11
+ tmp1=tmp_1;
+ if(length(tmp)>1,tmp2=tmp_2,tmp2="");
+ if(length(tmp)>2,tmp3=tmp_3,tmp3="");
+ if(length(tmp)>3,tmp4=tmp_4,tmp4="");
+ if(length(tmp)>4,tmp5=tmp_5,tmp5="");
+ if(contains(["main","new","same"],tmp1),
+ if(tmp1=="new", // 16.11.09from
+ newoption="";
+ if(substring(tmp2,0,1)=="[",newoption=tmp2);
+ );
+ if(tmp1=="same",
+ if(length(tmp2)==0,tmp2=newoption);
+ );// 16.11.09upto
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%%%%%%%%%%%%%%%%%%%%");
+ println(SCEOUTPUT,"");
+ );
+ );
+ if(flg==0&tmp1=="main",
+ if(repeatflg==1,
+ forall(2..(length(RepeatList)),nrep,
+ tmp=RepeatList_nrep;
+ forall(tmp,
+ if(substring(#,0,1)!="%", //16.01.04
+ println(SCEOUTPUT,#);
+ );
+ );
+ );
+ println(SCEOUTPUT,"");
+ repeatflg=0;RepeatList=[];
+ nrepprev=nrep;//17.01.03
+ nrep=0;//16.12.27
+ npara=0;//16.12.27
+ );
+ if(length(wall)>0,
+ println(SCEOUTPUT,"\input{fig/"+wall+".tex}");
+ );
+ println(SCEOUTPUT,"\mainslide{"+tmp2+"}");
+ println(SCEOUTPUT,"");
+ tmp2="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="new",
+ if(repeatflg==1,
+ forall(2..(length(RepeatList)),nrep,
+ tmp=RepeatList_nrep;
+ forall(tmp,
+ if(substring(#,0,1)!="%", //16.01.04
+ println(SCEOUTPUT,#);
+ );
+ );
+ );
+ println(SCEOUTPUT,"");
+ repeatflg=0;RepeatList=[];
+ nrepprev=nrep;//17.01.03
+ nrep=0;
+ npara=0;
+ );
+ if(length(wall)>0,
+ Repeatsameslide(repeatflg,sestr,["\input{fig/"+wall+".tex}"]);
+ );
+ tmp="\newslide";
+ NewSlideOption=""; //17.01.04
+ if(substring(tmp2,0,1)=="[",
+ NewSlideOption=tmp2; //17.01.04
+ tmp=tmp+tmp2;
+ tmp2=tmp3;
+ tmp3=tmp4;
+ tmp4=tmp5;
+ );
+ tmp=tmp+"{"+tmp2+"}";
+ Repeatsameslide(repeatflg,sestr,[tmp,"","\vspace*{18mm}",""]);
+ tmp2="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="same",
+ if(repeatflg==1,
+ forall(2..(length(RepeatList)),nrep,
+ tmp=RepeatList_nrep;
+ forall(tmp,
+ if(substring(#,0,1)!="%", //16.01.04
+ println(SCEOUTPUT,#);
+ );
+ );
+ );
+ println(SCEOUTPUT,"");
+ repeatflg=0;RepeatList=[];
+ nrepprev=nrep;//17.01.03
+ nrep=0;
+ npara=0;
+ );
+ if(length(wall)>0,
+ println(SCEOUTPUT,"\input{fig/"+wall+".tex}");
+ );
+ tmp="\sameslide"+NewSlideOption; //17.01.04;
+// if(substring(tmp2,0,1)=="[",
+// tmp=tmp+tmp2;
+// tmp2=tmp3;
+// tmp3=tmp4;
+// );
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\vspace*{18mm}");
+ println(SCEOUTPUT,"");
+ tmp4=tmp3;
+ tmp3=tmp2;
+ tmp2="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="itemize",
+ Repeatsameslide(repeatflg,sestr,["\begin{itemize}"]);
+ flgL=append(flgL,"i");
+ tmp2="";
+ tmp3="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="enumerate",
+ Repeatsameslide(repeatflg,sestr,["\begin{enumerate}"+tmp2]);
+ flgL=append(flgL,"e");
+ tmp2="";
+ tmp3="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="verbatim", //16.06.28from
+ Repeatsameslide(repeatflg,sestr,["\begin{verbatim}"]);
+ flgL=append(flgL,"v");
+ tmp1="";
+ tmp2="";
+ tmp3="";
+ verbflg=1;
+ flg=1;
+ ); //16.06.28upto
+ if(flg==0&tmp1=="layer",
+ Repeatsameslide(repeatflg,sestr,[""]);
+ tmp="\begin{layer}";
+ if(length(tmp2)>0,
+ tmp=tmp+tmp2;
+ ,
+ tmp=tmp+"{120}{0}";
+ );
+ Repeatsameslide(repeatflg,sestr,[tmp]);
+ flgL=append(flgL,"l");
+ tmp2="";
+ tmp3="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="putnote",
+ tmp="\putnote"+tmp2+"{";
+ if(indexof(tmp3,"include")==0,
+ tmp1=indexof(tmp3,",");
+ if(tmp1==0,
+ tmp=tmp+"\input{fig/"+tmp3+".tex}}";
+ ,
+ tmp2=substring(tmp3,tmp1,length(tmp3));
+ tmp3=substring(tmp3,0,tmp1-1);
+ tmp=tmp+"\scalebox{"+tmp2+"}{\input{fig/"+tmp3+".tex}}}";
+ );
+ ,
+ tmp2=indexof(tmp3,"[");
+ tmp3=substring(tmp3,tmp2-1,length(tmp3));
+ tmp=tmp+"\includegraphics"+tmp3+"{fig/"+tmp4+"}}";
+ );
+ Repeatsameslide(repeatflg,sestr,[tmp]);
+ tmp2="";
+ tmp3="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="item",
+ NonThinFlg=1;
+ Repeatsameslide(repeatflg,sestr,["\item"]);
+ tmp3="";
+ flg=1;
+ );
+ if(flg==0&tmp1=="end",
+ tmp=flgL_(length(flgL));
+ if(tmp=="i",
+ Repeatsameslide(repeatflg,sestr,["\end{itemize}"]);
+ );
+ if(tmp=="e",
+ Repeatsameslide(repeatflg,sestr,["\end{enumerate}"]);
+ );
+ if(tmp=="l",
+ Repeatsameslide(repeatflg,sestr,["\end{layer}",""]);
+ );
+ if(tmp=="v", // 16.06.28from
+ Repeatsameslide(repeatflg,sestr,["\end{verbatim}",""]);
+ verbflg=0;
+ ); // 16.06.28upto
+ flgL=flgL_(1..(length(flgL)-1));
+ tmp2="";
+ tmp3="";
+ flg=1;
+ );
+ if(flg==0, // 16.06.28from
+ if(verbflg==0,
+ tmp2=tmp1;
+ ,
+ tmp2=slideorgL_ns; // 16.07.11
+ tmp2=replace(tmp2,"||","//"); // 16.07.10
+ tmp3="";
+ );
+ ); // 16.06.28upto
+ if(length(tmp2)>0,
+ if(tmp2=="...", tmp2="");
+ if(NonThinFlg==1,NonThinFlg=2);
+ Repeatsameslide(repeatflg,sestr,[tmp2]);
+ );
+ if(length(tmp3)>0,
+ Repeatsameslide(repeatflg,sestr,["\begin{layer}{120}{0}"]);
+ if(substring(tmp3,0,1)=="{",
+ tmp=tmp3;
+ tmp3=tmp4;
+ ,
+ tmp="{60}{0}";
+ );
+ tmp1=indexof(tmp3,",");
+ if(tmp1==0,
+ tmp3="\putnotes"+tmp+"{\input{fig/"+tmp3+".tex}}";
+ ,
+ tmp2=substring(tmp3,tmp1,length(tmp3));
+ tmp3=substring(tmp3,0,tmp1-1);
+ tmp3="\putnotes"+tmp+"{\scalebox{"+tmp2+"}
+ {\input{fig/"+tmp3+".tex}}}";
+ );
+ Repeatsameslide(repeatflg,sestr,[tmp3,"\end{layer}",""]);
+ );
+ );
+ );
+ if(repeatflg==1,
+ forall(2..(length(RepeatList)),nrep,
+ tmp=RepeatList_nrep;
+ forall(tmp,
+ if(substring(#,0,1)!="%", //16.01.04
+ println(SCEOUTPUT,#);
+ );
+ );
+ );
+ println(SCEOUTPUT,"");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"\end{document}");
+ closefile(SCEOUTPUT);
+);
+
+Mkslides():=(
+ regional(sep,parent,texparentorg,tmp,tmp1,tmp2,tmp3,tmp4,flg);
+ tmp4=Fhead;
+ Fhead="";
+ if(length(Shellparent)>0, // 16.05.29
+ sep="/";
+ Dirwork=replace(Dirwork,"\",sep);
+ parent=replace(Dirwork+Shellparent,"\",sep);// 16.05.29
+ ,
+ sep="\";
+ Dirwork=replace(Dirwork,"/",sep);
+ parent=replace(Dirwork+Batparent,"/",sep);// 16.05.29
+ );
+ Dirwork=replace(Dirwork,sep+"fig","");
+ Setdirectory(Dirwork);
+ if(length(Texmain)>0, // 15.08.14 from
+ Texparent=Texmain;
+ );
+ texparentorg=Texparent; //17.04.10from
+ if(isstring(Slidename), // 15.08.14 from
+ Texparent=Slidename;
+ );//17.04.10upto
+ if(!isexists(Dirwork,Texparent+".txt"), // 17.04.12from
+ drawtext(mouse().xy,Texparent+".txt not exist in "+Dirwork,
+ size->24,color->[1,0,0]);
+ , // 17.04.12upto
+ Presentation(Texparent); // 15.08.14 upto
+ if(iswindows(),
+ tmp1=Batchild;
+ tmp2=Batparent;
+ tmp3=Shellfile;
+ parent=replace(Dirwork+Batparent,sep+"fig","");// 16.05.29
+ if((isstring(Sheslide)) & (length(Shellslide)>0),
+ Shellfile=Dirbin+sep+Shellslide+".bat"; // 15.12.08
+ Batchild=Shellfile;
+ ,
+ Shellfile=".bat";
+ );
+ Makebat(Texparent,"tv"); // 16.07.21
+ kc():=(
+ println("kc : "+kc(parent,Dirlib,Fnametex)); // 16.06.10, 17.02.19
+ );
+ kc();
+ Batchild=tmp1;
+ Batparent=tmp2;
+ Shellfile=tmp3;
+ ,
+ tmp1=Shellchild;
+ tmp2=Shellparent;
+ tmp3=Shellfile;
+ parent=replace(Dirwork+Shellparent,sep+"fig","");// 16.05.29
+ if((isstring(Shellslide)) & (length(Shellslide)>0),
+ Shellfile=Dirbin+sep+Shellslide+".sh"; // 15.12.08
+ Shellchild=Shellfile;
+ ,
+ Shellfile=".sh";
+ );
+ Shellparent=replace(Shellparent,sep+"fig","");
+ Makeshell(Texparent,"tv"); // 16.07.21
+ kc():=(
+ println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); // 16.06.10
+ );
+ kc();
+ Shellchild=tmp1;
+ Shellparent=tmp2;
+ Shellfile=tmp3;
+ );
+ );
+ Dirwork=Dirwork+sep+"fig";
+ setdirectory(Dirwork);
+ Fhead=tmp4;
+ Texparent=texparentorg;//17.04.10
+);
+
+Mkslidesummary():=( // 17.04.10revised
+ regional(texparentorg);
+ texparentorg=Texparent;
+ if(isstring(Slidename),
+ Texparent=Slidename;
+ );
+ Mkslidesummary(Texparent,Texparent+"sum",["m","Wait=3"]);
+ Texparent=texparentorg;//17.04.10
+);
+Mkslidesummary(fin,fout):=
+ Mkslidesummary(fin,fout,["m","Wait=3"]);
+Mkslidesummary(inputfile,outputfile,options):=(
+//help:Mkslidesummary(fin,fout,options);
+ regional(fin,fout,out,sep,figflg,dirworkorg,dirtop,tmp);
+ dirworkorg=Dirwork;//17.04.10from
+ if(iswindows(),sep="\",sep="/");
+ dirtop=replace(Dirwork,sep+"fig","");
+ Changework(dirtop);//17.04.10uptp
+ fin=inputfile;
+ if(indexof(fin,".")==0,fin=fin+".tex");
+ fout=outputfile;
+ if(indexof(fout,".")==0,fout=fout+".tex");
+ cmdL=[
+ "Dt=mgetl('"+fin+"');",[],
+ "Tmp=find((strstr(Dt,'\hypertarget')=='')
+ &(strstr(Dt,'\hyperlink')==''))",[],
+ "Dt=Dt(Tmp)",[],
+ "Smain=strstr(Dt,'\mainslide')",[],
+ "Snew=strstr(Dt,'\newslide')",[],
+ "Ssame=strstr(Dt,'\sameslide')",[],
+ "Nnew=[]",[],
+ "Nsame=[]",[],
+ "for J=1:size(Dt,1),
+ if (length(Snew(J))>0)|(length(Smain(J))>0),
+ Nnew=[Nnew,J],
+ end;
+ if length(Ssame(J))>0,
+ Nsame=[Nsame,J],
+ end;
+ end",[],
+ "Out=Dt(1:Nnew(1))",[],
+ "for J=2:length(Nnew),
+ Tmp=find(Nsame<Nnew(J));
+ Tmp=max(Tmp);
+ Tmp=max([Nsame(Tmp),Nnew(J-1)])+1;
+ Out=[Out;Dt(Tmp:Nnew(J))],
+ end",[],
+ "Tmp=max([Nsame($),Nnew($)])+1",[],
+ "Out=[Out;Dt(Tmp:size(Dt,1))]",[],
+ "mputl(Out,'"+fout+"');",[]
+ ];
+ CalcbyS("out",cmdL,options);
+ wait(1000);
+ Changework(dirtop);//17.04.10
+ tmp=replace(fout,".tex","");
+ if(iswindows(),
+ Makebat(tmp,"tv");
+ ,
+ Makeshell(tmp,"tv");
+ );
+ kc();
+ Changework(dirworkorg);//17.04.10
+);
+
+Example(exorg):=Example(exorg,"");
+Example(exorg,suborg):=(
+//help:Example("Mxfun","diff");
+ regional(ex,tmp,tmp1,tmp2);
+ ex=replace(exorg,"'",Dq);
+ sub=replace(suborg,"'",Dq);
+ setdirectory(Dirlib);
+ tmp=load("examples.txt");
+ setdirectory(Dirwork);
+ tmp=tokenize(tmp,"//");
+ tmp=tmp_(1..(length(tmp)-1));
+ tmp1=select(tmp,substring(#,0,length(ex))==ex);
+ tmp1=sort(tmp1);
+ if(length(sub)>0,
+ tmp1=select(tmp1,indexof(#,sub)>0);
+ );
+ forall(tmp1,
+ if((indexof(#,"##")>0) % (indexof(#,"~#")>0),
+ tmp=indexof(#,",");
+ println(substring(#,tmp,length(#)));
+ ,
+ println(#);
+ );
+ );
+);
+
+BBdata():=Bbdata(BBTarget,0);
+BBdata(fname):=Bbdata(fname,0); // 16.04.09
+BBdata(fname,optionorg):=(
+//help:BBdata(filename);
+//help:BBdata(options=0(automatic),1(make),"w=","h=");
+ regional(fout,flg,path,file,kcfile,options,eqL,reL,stL,
+ waiting,addop,tmp,tmp1,tmp2);
+ path="";
+ file=fname;
+ flg=0;
+ waiting=2;
+ forall(reverse(1..length(fname)),
+ if(flg==0,
+ tmp=substring(fname,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ path=substring(fname,0,#-1);
+ file=substring(fname,#,length(fname));
+ flg=1;
+ );
+ );
+ );
+ if(path=="",path=Dirwork);//16.10.05
+ if(indexof(file,".")==0,file=file+".pdf");
+ if(islist(optionorg),options=optionorg,options=[optionorg]);
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ stL=tmp_7;
+ flg=0;
+ addop="";
+ if(length(reL)>0,
+ tmp=reL_1;
+ if(tmp==1,flg=1);
+ );
+ forall(stL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",flg=1);
+ );
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,2));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W=",
+ addop=addop+",width="+tmp2;
+ options=remove(options,[#]);
+ );
+ if(tmp1=="H=",
+ addop=addop+",height="+tmp2;
+ options=remove(options,[#]);
+ );
+ );
+ tmp=indexof(file,".");
+ tmp1=substring(file,0,tmp-1);
+ fout=tmp1+".txt";
+ if(iswindows(),
+ kcfile="kc.bat";
+ ,
+ kcfile="kc.sh";
+ );
+ if(flg==0,
+ tmp=load(fout); //
+ if(length(tmp)==0,
+ flg=1;
+ ,
+ tmp=tokenize(tmp,"%%");
+ tmp=tmp_2;
+ tmp1=indexof(tmp,":");
+ tmp=substring(tmp,tmp1,length(tmp));
+ tmp=Removespace(tmp);
+ if(tmp!=file,flg=1);
+ );
+ );
+ if(length(path)==0,
+ path=Dirwork;
+ );
+ if(flg==1,
+ setdirectory(path);
+ tmp=load(file);
+ setdirectory(Dirwork);
+ if(length(tmp)==0,
+ println(" => "+file+" not exists");
+ flg=-1;
+ );
+ );
+ if(flg==1,
+ SCEOUTPUT = openfile(kcfile);
+ if(!iswindows(),
+ println(SCEOUTPUT,"#!/bin/sh");
+ );
+ println(SCEOUTPUT,"cd "+Dq+path+Dq);
+ tmp=replace(PathT,"pdflatex","extractbb"); //16.11.22
+ tmp=replace(tmp,"pdftex","extractbb"); //16.11.22
+ tmp=replace(tmp,"xelatex","extractbb");
+ tmp=replace(tmp,"platex","extractbb");
+ tmp=replace(tmp,"latex","extractbb");
+ tmp=tmp+" -O "+file;
+ if(iswindows(),
+ tmp=tmp+" > "+Dirwork+"\"+fout;
+ ,
+ tmp=tmp+" > "+Dirwork+"/"+fout;
+ );
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ kc(Dirwork+"/"+kcfile,Mackc+Dirlib,Fnametex); // 16.06.07
+ );
+ if(flg>=0,
+ tmp1=0;
+ repeat(floor(waiting*1000/WaitUnit),
+ if(tmp1==0,
+ wait(10);
+ tmp=load(fout);
+ if(indexof(tmp,"CreationDate")>0,
+ tmp1=1;
+ );
+ );
+ );
+ if(length(tmp)==0,
+ println(fout+" not generated. Maybe "+kcfile+" not run.");
+ ,
+ tmp=tokenize(tmp,"%%");
+ tmp=select(tmp,indexof(#,"Bounding")>0);
+ tmp=tmp_2; //
+ tmp1=indexof(tmp,":");
+ tmp=substring(tmp,tmp1,length(tmp));
+ tmp=removespace(tmp);
+ tmp=tokenize(tmp," ");
+ tmp1="";
+ forall(tmp,
+ tmp1=tmp1+Sprintf(#,2)+" ";
+ );
+ tmp1=removespace(tmp1)+addop;
+ tmp2="\includegraphics[bb="+tmp1+"]{"+file+"}";
+ println(tmp2);
+ );
+ );
+// setdirectory(Dirwork);
+ tmp2; // 16.04.25
+);
+
+//help:end();
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2log.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2log.txt
new file mode 100644
index 00000000..98d7a8c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibbasic2log.txt
@@ -0,0 +1,293 @@
+// s:2017.08.23
+// thin changed so as to change dynamically
+// \setthin{dense} supported
+// s:2017.08.13
+// uplatex added
+// s:2017.07.31
+// Presentation, Mktitle changed (color->xcolor)
+// Setslidehyper, Presentation changed (the case LinkSize==0)
+// s:2017.07.10
+// Presentation,.. debugged (Addpack )
+// s:2017.06.25
+// Addpackage changed ( change to full form of package )
+// Presentation changed ( ADDPACK )
+// s:2017.06.23
+// Presentation debugged ("%%")
+// s:2017.06.19
+// Htick, Vtick added
+// s:2017.06.18
+// Presentation changed ( usepackages in the1st line are writte first)
+// s:2017.06.14
+// Presentation changed ( usepackage{color} )
+// s:2017.06.11
+// Periodfun debugged( for "pi",etc)
+// e:2017.05.31
+// Presentation changed (for %%[, %%thin[ )
+// e:2017.05.30
+// Setwindow changed and moved to basic1( SW,NE )
+// e:2017.05.28
+// Repeatsameslide changed (color for thin)
+// Presentation changed ( comment out the thin line )
+// e:2017.05.24
+// WriteOutData changed (format changed 4 -> 5)
+// ReadOutdata changed ( for blank file )
+// e:2017.05.13
+// Dispchoice() added ( for Keypressed )
+// e:2017.05.13
+// WritetoSci debugged ( for Scilab6 and pdflatexs )
+// e:2017.04.16
+// Slidework debugged ( "\" for windows )
+// e:2017.04.13
+// Maketitle changed ( Error Message when Settitle is not defined )
+// Viewparent added
+// e:2017.04.12
+// Mkslides changed ( Error Message when txt file do not exist )
+// e:2017.04.11
+// Putslider added
+// e:2017.04.10
+// Mkslides,Mkslidesummary changed ( Slidename )
+// Mkslidesummary debugged
+// e:2017.04.09
+// Presentation debugged (for verbatim )
+// Presentation changed (PageStyle )
+// s:2017.04.08
+// bugs fixed
+// e:2017.04.08
+// Figpdf, Mktitle, Presentation changed
+// ( To read stylefiles from ketpicstyle);
+// e:2017.04.07
+// Viewtex changed ( To read stylefiles from ketpicstyle, log of ketcindy deleted);
+// e:2017.03.05
+// Setslide... changed (to display values when no argment )
+// e:2017.03.02
+// Presentation changed ( To define SlideColorList removed);
+// e:2017.02.19
+// Maketitle, Mkslides debugged ( for windows )
+// e:2017.01.29
+// Setslidehyper changed ( for null string)
+// Presentation changed (pagestyle added, para for input(,) changed )
+// e:2017.01.21
+// Presentation changed ( counter added to para )
+// e:2017.01.20
+// Setrange added
+// e:2017.01.15
+// Repeatsameslide debugged ( for \begin,\end )
+// e:2017.01.14
+// Mkslidesummary added
+// e:2017.01.12
+// Repeatsameslide changed ( message for "n>nrep" added)
+// Presentation changed ( hyperlink )
+// Writetosci changed ( english message for windows)
+// e:2017.01.07
+// Setslide..., Presentation changed ( slidecolorlist);
+// e:2017.01.06
+// Setslidebody, Presentation changed ( BodyStyle, "\boldmath");
+// Presentation changed ( thin added )
+// Mkbeziercrv changed ( name => nm )
+// Presentation changed ( for pdflatex,lualatex , not finished )
+// e:2017.01.05
+// Setslidemain debugged
+// Presentation changed ( NewSlideOption added to sameslide )
+// Presentation,Repeatsameslide changed (ThinFlg,NonThinFlg)
+// e:2017.01.03
+// Presentation changed (control button)
+// e:2016.12.31
+// Helplist changed (when adding to HLIST)
+// Setslidehyper added
+// Presentation changed (paractr,hyherflg)
+// e:2016.12.29
+// Writetosci changed ( add null row when path not defined)
+/// e:2016.12.28
+// Maketitle debugged
+// e:2016.12.27
+// Maketitle, Settitle added
+// Slidework debugged ( when "fig" not exists )
+// Presentation changed ( nrep,npara )
+// e:2016.12.25
+// WritetoSci changed ( date/time and path/file stamped if possible)
+// e:2016.12.23
+// BBdata changed ( waiting=2)
+// e:2016.12.22
+// Setslidetitle,Setslidemain,Setslidebody added
+// Presentation changed ( for commands above )
+// e:2016.12.20
+// Slidework changed ( isexists(dir) checked )
+// e:2016.12.18
+// Slidework changed ( to create "fig" when not exists )
+// Presentation changed ( input replaced to \input )
+// viewtex changed ( luatexja-core => luatexja )
+// e:2016.12.16
+// Tabledata,Tabledatalight changed ( "Rng" option added );
+// Viewtex,Writetosci,Makeshell,Makebat changed (for lualatex );
+// e:2016.12.09
+// Presentation changed ( for parapara ) here fileslist(directory) used
+// e:2016.12.06
+// Changetablestyle debugged
+// e:2016.12.05
+// Repeatsameslide added
+// Presentation changed ( for repeated slide )
+// e:2016.11.29
+// Macro \ketcindy recovered
+// Writetosci debugged ( for pdflatex )
+// e:2016.11.28
+// Tabledata,Tabldata changed (TableOptions added )
+// ChangeTablestyle changed completely
+// e:2016.11.24
+// Periodfun,Fourierseries added
+// Viewtex changed ( option [pdftex] added to pict2e )
+// e:2016.11.23
+// Viewtex changed (if pdflatex, Libname changed)
+// e:2016.11.22
+// Viewtex changed (for pict2e)
+// BBdata changed ( for pdflatex )
+// e:2016.11.16
+// Defvar changed (for a list of variables )
+// e:2016.11.11
+// Presentation changed (for no title (nodisp=10mm) )
+// e:2016.11.09
+// Presentation changed (for same option([]) )
+// e:2016.11.08
+// Figpdf changed (options )
+// e:2016.10.21
+// Datetime added
+// e:2016.10.20
+// Makeshell changed (skim for mac )
+// e:2016.10.19
+// Letter debugged (case of s,e )
+// e:2016.10.13
+// Letter changed (position )
+// e:2016.10.11
+// PutonLine,PutonSeg debugged & changed ( scaling, segstr)
+// e:2016.10.09
+// Expr and Letter(slightly) changed
+// e:2016.10.07
+// Commands which use Putpoint changed (=> .name )
+// e:2016.10.06
+// Putpoint changed ( .name used )
+// BBdata changed (default path )
+// e:2016.09.30
+// Letter,Expr changed ( align, string )
+// e:2016.09.25
+// Small bug-fix ( :, ", _ )
+// e:2016.09.05
+// Texview, Figpdf, Presentation changed ( for ADDPACK )
+// e:2016.08.16
+// Mkbezierptcrv, Ospline, Bspline, Beziersmooth,
+// CRspline, Beziersym changed ( for scaling )
+// e:2016.08.10
+// Setslidecolor added
+// Presentation changed ( for color change )
+// e:2016.07.21
+// Makeshell,Makebat, Mkslides changed (no call of .sh/.bat )
+// e:2016.07.11
+// Presentation changed (spaces in verbatim, and || in verbatim changed // )
+// e:2016.07.07
+// Letter, Expr changed ( opcindy "size->..." supported )
+// e:2016.06.28
+// Presentation debugged and changed (verbatim, :: )
+// e:2016.06.25
+// Presentation debugged (Preamble addtion )
+// e:2016.06.10
+// Iftosci changed (Major change )
+// Presentation debugged ( wall )
+// Slidework added
+// e:2016.06.09
+// Viewtex,Figpdf,Presentation changed ( jartcle used when platex )
+// Presentation changed ( for % )
+// e:2016.06.07
+// Mackc added
+// e:2016.06.06
+// Makebat debugged
+// e:2016.06.04
+// Viewtex,Mkslide, BBdata changed ( kc)
+// e:2016.06.02
+// Makeshell,Makebat changed ( Pathpdf= )
+// e:2016.05.30
+// Makeshell changed ( output to kcout.txt )
+// Makebat changed ( for Sumatra )
+// e:2016.05.29
+// WritetoSci changed ( for /users )
+// Makeshell, Makebat, Mkslide changed ( for /users )
+// e: 2016.05.25
+// Defun changed ( for "forall")
+// Iftosci debugged, Fortosci added
+
+
+///////////////////
+// e: 2015.11.06
+// libbasic divided to libbasic1,libbasic2
+// e: 2015.11.09
+// helplist debugged
+// e: 2015.11.25
+// Help changed ( ' changed to Dq)
+// e: 2015.11.29
+// Example, Helpkey added
+// e: 2015.12.08
+// Mkslide changed ( Dirbin )
+// e: 2015.12.12
+// Makeshell, Makebat changed ( for autosetting )
+// Mksliides changed ( for autosetting )
+// e: 2015.12.14
+// Mkslides, Makeshell, Makebat changed ( for autosetting of slides )
+// e: 2016.01.12
+// Viewtex changed ( Title changed to verb )
+// e: 2016.01.18
+// Viewtex debugged ( Title changed to verb )
+// e: 2016.01.21
+// Drwxy debugged
+// Help of Drwpt added
+// Sciform patched
+// e: 2016.02.02
+// Helpkey changed ( for 2 keywords )
+// e: 2016.02.10
+// Putoncurve changed ( option :"Msg=no" )
+// Setwindow changed ( option :"Msg=no" )
+// e: 2016.02.16
+// Help of ExtractData changed
+// e: 2016.02.18
+// Deffun ( help ) changed
+// e: 2016.02.22
+// Ptonseg changed ( par option added )
+// e: 2016.03.05
+// Drwpt changed ( point/pointlist allowed)
+// e: 2016.03.07
+// ReadOutData changed ( change of path supported)
+// e: 2016.03.09
+// ReadOutData debugged ( in case of no path)
+// e: 2016.03.25
+// Figpdf added
+// e: 2016.03.26
+// Figpdf changed ( for various unitlen )
+// e: 2016.03.28
+// Mkshell, Mkbat changed ( for "mv" )
+// e: 2016.04.07
+// Viewtex changed ( by \ketcindy)
+// Figpdf changed ( options "4,3,2" effective )
+// e: 2016.04.08
+// Figpdf,Makeshell, Makebat changed ( FigPdfList )
+// Figpdf changed ( options )
+// e: 2016.04.09
+// Drwpt,Pointdata changed ( boundary )
+// e: 2016.04.11
+// BBdata added
+// BBdata changed ( to look at fig.txt)
+// e: 2016.04.12
+// BBdata changed ( prec=2, option of width/heigh )
+// e: 2016.04.17
+// ReadOutData changed ( for file of no "." => ".txt" )
+// Writebezier, Readbezier added
+// e: 2016.04.18
+// Sciform debugged
+// e: 2016.04.19
+// Sciform changed
+// e: 2016.04.22
+// Writebezier, Readbezier changed
+// e: 2016.05.11
+// Presentation changed (for url //// )
+// e: 2016.05.15
+// Makeshell changed (sh added )
+// e: 2016.05.16
+// Addpackage added
+// Viewtex,Figpdf changed ( for Addpackage )
+////// To Reverse sequence //////
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpE.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpE.txt
new file mode 100644
index 00000000..437bdefd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpE.txt
@@ -0,0 +1,116 @@
+//help:start();
+//help:drawimage*(import image into the screen);
+//help:drawtext*(write letters on the screen);
+//help:Option1*(specify the style of drawing lines);
+//help:Option2*(specify the way of writing data out);
+//help:Option3*(specify the way of reading and writing data in);
+//help:Changestyle*(change the style for drawing plot data);
+//help:Workprocess*(display the process of execution);
+//help:Textformat*(convert number into string with specific number of digits);
+//help:Assign*(replace the name of variable in the string by some specific value);
+//help:Flattenlist*(flatten the list of data);
+//help:Dotprod*(inner product);
+//help:Crossprod*(exterior product);
+//help:Ptstart*(starting point of plot data);
+//help:Ptend*(ending point of plot data);
+//help:Numptcrvtenn*(number of points in plot data);
+//help:Ptcrv*(the n-th point of plot data);
+//help:Invert*(reverse the orientation of curve);
+//help:ParamonCurve*(information (parameter value etc.) of the point in plot data);
+//help:PointonCurve*(the point in the plot data specified by the given information);
+//help:Nearestptcrv*(the point in the curve which is nearest to the given point);
+//help:Nearestpt*(the points in two given curves which are nearest each other);
+//help:Derivative*(calculate the differential coefficient);
+//help:Integrate*(numerical integration);
+//help:Findarea*(calculate the area of the region surrounded by a closed curve);
+//help:Findlength*(calculate the length of curve);
+//help:Com2nd*(add the Scilab command to write out plot data into TeX);
+//help:Texcom*(write command into TeX output exactly as written here);
+//help:SetEnglish*(display Scilab messages in English language);
+//help:Setunitlen*(specify the unit length);
+//help:Setmarklen*(specify the unit length of the tickmarks on coordinate axis);
+//help:Setorigin*(specify the position the origin);
+//help:Fontsize*(specify the size of font);
+ //help:Setpen*(specify the thickness of line);
+//help:Setpt*(specify the size of point);
+//help:Definecolor*(define the color for user's own use);
+//help:Setcolor*(specify the color);
+//help:Joincrvs*(join curves);
+//help:Partcrv*(cut out some part of the curve);
+//help:Pointdata*(generate the plot data of point
+//additional option : "Size=");
+//help:Listplot*(generate the plot data of a polyline);
+//help:Lineplot*(generate the plot data of line);
+//help:Plotdata*(generate the plot data of function
+//additional option : "Num=", "Exc=", "Dis=");
+//help:Paramplot*(generate the plot data of parametric function
+//additional option : "Num=", "Exc=", "Dis=");
+//help:Circledata*(generate the plot data of circle
+//additional option : "Num=", "Rng=");
+//help:Framedata*(generate the plot data of rectangle);
+//help:Ovaldata*(generate the plot data of oval shape);
+//help:Arrowhead*(generate the plot data of arrowhead
+//option : size, sharpness, shape and position in the arrow);
+//help:Arrowdata*(generate the plot data of arrow line
+//option : size of arrowhead, sharpness(angle),position of arrowhead);
+//help:Anglemark*(generate the plot data of angle mark option : size);
+//help:Paramark*(generate the plot data of right angle mark option : size);
+//help:Bowdata*(generate the plot data of bow arched curve
+//option : curvatute, size of the blank space, letter);
+//help:Deqplot*(generate the solution curve of differential equation
+//additional option : "Num=");
+//help:Hatchdata*(add hatching into some region
+// option : slope, degree, space betwen lines));
+//help:Enclosing*(generate the plot data of closed curve connecting some curves);
+//help:Shade*(add shading into some region option : depth);
+//help:Rotatepoint*(rotate the point, option : center);
+//help:Translatepoint*(pararell transport of the point);
+//help:Scalepoint*(magnify or reduce the position of point option : center);
+ //help:Reflectpoint*(reflect the point);
+//help:Rotatedata*(rotate the plot data option : center);
+//help:Scaledata*(magnify or reduce the plot data option : center);
+//help:Reflectdata*(reflect the plot data);
+//help:Mksegments*(generate the plot data of all segments on the screen);
+//help:Mkcircles*(generate the plot data of all circles on the screen):
+//help:Setax*(specify the setting of coordinate axes);
+//help:Htickmark*(put a tickmark on the horizontal coordinate axis);
+//help:Vtickmark*(put a tickmark on the vertical coordinate axis);
+//help:Drwxy*(draw coordinate axes);
+//help:Addax*(specify whether coordinate axes are drawn or not);
+//help:Expr*(write mathematical expressions at a specific position);
+//help:Letter*(write letters at a specific position);
+//help:Letterrot*(write sloped letters at a specific position):
+//help:Exprrot*(write sloped mathematical expressions at a specific position):
+//help:Putpoint*(put a point at the specific position);
+//help:Bezier*(generate the plot data of Bezier curve);
+//help:Mkbezierptcrv*(generate the plot data of Bezier curve by automatically taking controll points);
+//help:CRspline*(generate the plot data of Catmull-Rom spline curve);
+//help:Beziersmooth*(generate the plot data of Bezier spline curve);
+//help:Bspline*(generate the plot data of B-spline curve);
+//help:PtonLine*(put a point on a specific line);
+//help:PtonSeg*(put a point on a specific segment);
+//help:PutonCurve*(put a point on a specific curve);
+//help:Setscaling*(specify the rate of magnification in the vertical direction);
+ //help:Tabledatalight*(generate the plot data of table without geometric points
+ //additional option : rules to be removed);
+ //help:Tgrid*(return the coordinates of a cell in the table);
+ //help:Tlistplot*(draw segment connecting two lattice points in the table);
+//help:ChangeTablestyle*(change the style for drawing rules in the table);
+//help:Tabledata*(generate the plot data of table with geometric points
+ //option : usual options+rules to be removed);
+//help:Tabledata*(xLst=apply(1..5,10);yLst=apply(1..4,8);rmvL=[];);
+//help:Findcell*(return the information of a cell in the table);
+//help:Putcell*(write letters in a specific cell of the table);
+//help:Putcellexpr*(write mathematical expressions in a specific cell of the table);
+//help:Putrow*(write letters in a specific row of the table));
+//help:Putrowexpr*(write mathematical expressions in a specific row of the table);
+//help:PutcoL*(write letters in a specific column of the table));
+//help:PutcoLexpr*(write mathematical expressions in a specific column of the table));
+//help:Setwindow*(specify the area of drawing);
+//help:Defvar*(the definition of a variable is called by Scilab);
+//help:Deffun*(the definition of a function is called by Scilab);
+//help:Extractdata*(endow attribute to the imported plot data);
+//help:ReadOutData*(import the plot data);
+//help:WriteOutData*(export the plot data);
+//help:Removespace*(remove spaces of in front and behind);
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpJ.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpJ.txt
new file mode 100644
index 00000000..330a47c4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibhelpJ.txt
@@ -0,0 +1,140 @@
+//help:start();
+//help:drawimage*(ç”»åƒã‚’ç”»é¢ã«èª­ã¿è¾¼ã‚€);
+//help:drawtext*(ç”»é¢ã«æ–‡å­—を書ã込む);
+//help:Option1*(線種を指定.コマンドã®ã‚ªãƒ—ション);
+//help:Option2*(書ã出ã—を指定.コマンドã®ã‚ªãƒ—ション);
+//help:Option3*(外部ファイルã®èª­è¾¼ï¼æ›¸è¾¼ã®æŒ‡å®šï¼Žã‚³ãƒžãƒ³ãƒ‰ã®ã‚ªãƒ—ション);
+//help:Changestyle*(プロットデータã®ã‚ªãƒ—ションを変更);
+//help:Workprocess*(実行手順を表示);
+//help:Textformat*(数値ã®æ–‡å­—列化ã§æ¡æ•°æŒ‡å®š);
+//help:Assign*(文字列内ã®å¤‰æ•°ã¸ã®å‰²å½“ã¦);
+//help:Flattenlist*(データリストを平å¦åŒ–);
+//help:Dotprod*(内ç©);
+//help:Crossprod*(外ç©);
+//help:Ptstart*(プロットデータã®å§‹ç‚¹);
+//help:Ptend*(プロットデータã®çµ‚点);
+//help:Numptcrvtenn*(プロットデータã®ç‚¹ã®æ•°);
+//help:Ptcrv*(プロットデータã®n番目ã®ç‚¹);
+//help:Invert*(プロットデータã®å‘ãを逆ã«ã™ã‚‹);
+//help:ParamonCurve*(プロットデータ上ã®ç‚¹ã®æƒ…å ±);
+//help:PointonCurve*(プロットデータ上ã®æƒ…å ±ã«ã‚ˆã‚‹ç‚¹);
+//help:Nearestptcrv*(点ã«ã¤ã„ã¦ãƒ—ロットデータ上ã®æœ€è¿‘点);
+//help:Nearestpt*(2曲線ã®æœ€è¿‘点);
+//help:Derivative*(微分係数);
+//help:Integrate*(数値ç©åˆ†);
+//help:Findarea*(閉曲線ã«å›²ã¾ã‚ŒãŸé¢ç©);
+//help:Findlength*(曲線ã®é•·ã•);
+//help:Com2nd*(TeXã®æ›¸ã出ã—コマンドを入れる);
+//help:Texcom*(TeXã®ã‚³ãƒžãƒ³ãƒ‰ã‚’直接記述);
+//help:SetEnglish*(Scilabã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’英語ã«ã™ã‚‹);
+//help:Setunitlen*(å˜ä½é•·ã‚’指定);
+//help:Setmarklen*(å¾®å°å˜ä½é•·ã‚’指定);
+//help:Setorigin*(原点ã®ä½ç½®ã‚’指定);
+//help:Fontsize*(フォントサイズを指定);
+ //help:Setpen*(ç·šã®å¤ªã•ã‚’指定);
+//help:Setpt*(点ã®å¤§ãã•ã‚’指定);
+//help:Definecolor*(ユーザー色を定義);
+//help:Setcolor*(色を指定);
+//help:Joincrvs*(曲線をã¤ãªã’ã‚‹);
+//help:Partcrv*(部分曲線を作る);
+//help:Pointdata*(点データを表示ï¼ä½œæˆ
+//追加オプション : "Size=");
+//help:Listplot*(線分や折れ線データを作æˆ);
+//help:Lineplot*(直線データを作æˆ);
+//help:Plotdata*(関数ã®ã‚°ãƒ©ãƒ•ã‚’作æˆ
+//追加オプション : "Num=", "Exc=", "Dis=");
+//help:Paramplot*(媒介変数ã®é–¢æ•°ã®ã‚°ãƒ©ãƒ•ã‚’作æˆ
+//追加オプション : "Num=", "Exc=", "Dis=");
+//help:Circledata*(円ã®ãƒ‡ãƒ¼ã‚¿ã‚’作æˆ
+//追加オプション : "Num=", "Rng=");
+//help:Framedata*(長方形ã®ãƒ‡ãƒ¼ã‚¿ã‚’作æˆ);
+//help:Ovaldata*(オーãƒãƒ«ãƒ‡ãƒ¼ã‚¿ã‚’作æˆ);
+//help:Arrowhead*(éƒã‚’作æˆ
+//オプション : 大ãã•ï¼Œé–‹ã角,形状ã¨ä½ç½®);
+//help:Arrowdata*(矢å°ã‚’作æˆ
+//オプション : 大ãã•ï¼Œé–‹ã角,矢ã˜ã‚Šä½ç½®);
+//help:Anglemark*(角度マークを作æˆ. オプション : 角ã®å°ã®å¤§ãã•);
+//help:Paramark*(垂直マークを作æˆ. オプション : 角ã®å°ã®å¤§ãã•);
+//help:Bowdata*(弓形をæã
+//オプション : 曲ãŒã‚Šï¼Œç©ºç™½ã‚µã‚¤ã‚ºï¼Œæ–‡å­—);
+//help:Deqplot*(微分方程å¼ã®è§£æ›²ç·šã‚’作æˆ
+//追加オプション : "Num=");
+//help:Hatchdata*(斜線塗り. オプション : 傾ã(度),間隔);
+//help:Enclosing*(複数曲線をã¤ãªã’ã¦é–‰æ›²ç·šã‚’作æˆ);
+//help:Shade*(シェーディング. オプション : 濃ã•);
+//help:Rotatepoint*(点を回転. オプション : 中心);
+//help:Translatepoint*(点を平行移動);
+//help:Translatedata*(プロットデータを平行移動);
+//help:Scalepoint*(点を縮å°ï¼æ‹¡å¤§. オプション : 中心);
+//help:Reflectpoint*(点をé¡æ˜ );
+//help:Rotatedata*(プロットデータを回転. オプション : 中心);
+//help:Scaledata*(プロットデータを縮å°ï¼æ‹¡å¤§. オプション : 中心);
+//help:Reflectdata*(プロットデータをé¡æ˜ );
+//help:Mksegments*(ç”»é¢ã«ã‚ã‚‹ã™ã¹ã¦ã®ç·šåˆ†ãƒ‡ãƒ¼ã‚¿ã‚’作æˆ);
+//help:Mkcircles*(ç”»é¢ã«ã‚ã‚‹ã™ã¹ã¦ã®å††ãƒ‡ãƒ¼ã‚¿ã‚’作æˆ):
+//help:Setax*(座標軸を指定);
+//help:Htickmark*(横軸ã«ç›®ç››ã‚Šã‚’æã);
+//help:Vtickmark*(縦軸ã«ç›®ç››ã‚Šã‚’æã);
+//help:Drwxy*(座標軸をæã);
+//help:Addax*(座標軸をæãã‹æã‹ãªã„ã‹ã®æŒ‡å®š);
+//help:Expr*(æ•°å¼ã‚’書ã込む);
+//help:Letter*(文字を書ã込む);
+//help:Letterrot*(傾ã„ãŸæ–‡å­—を書ã込む):
+//help:Exprrot*(傾ã„ãŸæ•°å¼ã‚’書ã込む):
+//help:Putpoint*(幾何点をã¨ã‚‹);
+//help:Bezier*(ベジェ曲線データを作æˆ);
+//help:Mkbezierptcrv*(制御点を自動的ã«ã¨ã£ã¦ãƒ™ã‚¸ã‚§ã‚’作æˆ);
+//help:CRspline*(Catmull-Romスプラインを作æˆ);
+//help:Beziersmooth*(ベジェスプラインを作æˆ);
+//help:Bspline*(B-スプラインを作æˆ);
+//help:PtonLine*(直線上ã«ç‚¹ã‚’ã¨ã‚‹);
+//help:PtonSeg*(線分上ã«ç‚¹ã‚’ã¨ã‚‹);
+//help:PutonCurve*(曲線上ã«ç‚¹ã‚’ã¨ã‚‹);
+//help:Setscaling*(縦方å‘ã®å€çŽ‡ã‚’指定);
+ //help:Tabledatalight*(幾何点をもãŸãªã„表データ作æˆ
+ //追加オプション : ラベルã®ã¨ã³ï¼Œæ画領域を表ã«åˆã‚ã›ã‚‹ã‹);
+ //help:Tgrid*(表ã®ã‚»ãƒ«ã®åº§æ¨™ã‚’è¿”ã™);
+ //help:Tlistplot*(表ã®2æ ¼å­ç‚¹ã‚’çµã¶ç·šåˆ†);
+////help:ChangeTablestyle*(表ã®ç½«ç·šã®ã‚¹ã‚¿ã‚¤ãƒ«å¤‰æ›´);
+//help:Tabledata*(幾何点をもã¤è¡¨ãƒ‡ãƒ¼ã‚¿ã‚’作æˆ
+ //追加オプション : ラベルã®ã¨ã³ï¼Œæ画領域を表ã«åˆã‚ã›ã‚‹ã‹);
+//help:Tabledata*(xLst=apply(1..5,10);yLst=apply(1..4,8);rmvL=[];);
+//help:Findcell*(表ã®ã‚»ãƒ«ã®æƒ…報を返ã™);
+//help:Putcell*(表ã®ã‚»ãƒ«ã«æ–‡å­—を書ã入れる);
+//help:Putcellexpr*(表ã®ã‚»ãƒ«ã«æ•°å¼ã‚’書ã入れる);
+//help:Putrow*(表ã®è¡Œã«æ–‡å­—を書ã入れる));
+//help:Putrowexpr*(表ã®è¡Œã«æ•°å¼ã‚’書ã入れる);
+//help:PutcoL*(表ã®åˆ—ã«æ–‡å­—を書ã入れる));
+//help:PutcoLexpr*(表ã®åˆ—ã«æ•°å¼ã‚’書ã入れる));
+//help:Setwindow*(æ画領域を指定);
+//help:Defvar*(変数をScilabã«æ¸¡ã™);
+//help:Deffun*(関数をScilabã«æ¸¡ã™);
+//help:Extractdata*(読ã¿è¾¼ã‚“ã ãƒ‡ãƒ¼ã‚¿ã«å±žæ€§ã‚’与ãˆã‚‹);
+//help:ReadOutData*(データを読ã¿è¾¼ã‚€);
+//help:WriteOutData*(データを書ã出ã™);
+//help:Removespace*(å‰å¾Œã®ã‚¹ãƒšãƒ¼ã‚¹ã‚’除ã);
+//help:Drawlinetype*(線種を指定ã—ã¦æ›²ç·šã‚’æã);
+//help:Intersectcrvs*(交点リストを求ã‚ã‚‹);
+//help:IntersectcrvsPp*(交点ã¨ãƒ‘ラメータ値ã®ãƒªã‚¹ãƒˆã‚’求ã‚ã‚‹);
+//help:Implicitplot*(陰関数ã®ã‚°ãƒ©ãƒ•ã‚’æã);
+//help:Boxplot*(箱ヒゲ図をæã(R使用));
+//help:CalcbyR*(Rã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦çµæžœã‚’è¿”ã™);
+//help:CalcbyS*(Scilabã®ã‚³ãƒžãƒ³ãƒ‰ã‚’実行ã—ã¦çµæžœã‚’è¿”ã™);
+//help:Framedata2*(左下ã¨å³ä¸Šã®ç‚¹ã§é•·æ–¹å½¢ã‚’æã);
+//help:HIstplot*(ヒストグラムをæã(R使用));
+//help:Hyperbolaplot*(åŒæ›²ç·šã‚’æã);
+//help:Ellipseplot*(楕円をæã);
+//help:Ospline*(Oshimaã®ã‚¹ãƒ—ラインをæã);
+//help:Parabolaplot*(放物線をæã);
+//help:PlotdataR*(Rã®é–¢æ•°ã®ã‚°ãƒ©ãƒ•ã‚’æã);
+//help:Polygonplot*(正多角形をæã);
+//help:Putintersect*(交点ã«å¹¾ä½•ç‚¹ã‚’ã¨ã‚‹);
+//help:Rulerscale*(点ã®å³ã¨ä¸Šã«ç›®ç››ã‚’æã);
+//help:Segmark*(線分ã«ãƒžãƒ¼ã‚¯ã‚’ã¤ã‘ã‚‹);
+//help:Sprintf*(å°æ•°ç‚¹ä»¥ä¸‹ã®é•·ã•ã‚’固定ã—ãŸæ–‡å­—列ã«å¤‰æ›);
+//help:Readcsv*(csvファイルを読ã¿è¾¼ã¿);
+//help:Writecsv*(csvファイルを書ãè¾¼ã¿);
+//help:Drwpt*(点をTeXã«æã.オプション:白抜ã 0);
+
+
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibmv.cs b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmv.cs
new file mode 100644
index 00000000..bf846d08
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmv.cs
@@ -0,0 +1,812 @@
+// Copyright (C) 2014 Masataka Kaneko, Setsuo Takato, KETCindyJapan project team
+//
+//This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>
+//
+
+println("ketcindymv(2017.08.19) loaded");
+
+//help:start();
+
+Ketinitmv():=(
+ regional(tmp,tmp1,tmp2,tmp3);
+ Ketinit();//17.04.10
+ Texmov=Fhead+"movie";
+ Texpara=Fhead+"para";
+ ParaTitle=Texpara;//16.12.10
+ tmp1=round(4*SW.y)/4-0.5;
+ tmp2=SW.x+1;
+ tmp3=NE.x-1;
+ Listplot("sl",[[tmp2,tmp1],[tmp3,tmp1]],["notex","linecolor->[0,1,0]"]);
+ PutonCurve("MF",sgsl,[tmp2,tmp3]);
+ Paraamble(); // 16.08.10
+ Shellfile="mv"; // 17.04.09
+);
+
+Moviedata(func,var):=Moviedata(func,var,[]);
+Moviedata(func,var,options):=(
+//help:Moviedata("mf(t)","t=[0,4]");
+//help:Moviedata(Options=["Cut=20","Div=80"]);
+ regional(tmp,tmp1,tmp2,eqL);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ CUT=20;
+ DVALL=0;
+ Ec=[];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=Toupper(substring(#,tmp,length(#)));
+ if(tmp1=="D",
+ DVALL=parse(tmp2);
+ );
+ if(tmp1=="C",
+ CUT=parse(tmp2);
+ );
+ );
+ if(DVALL==0,
+ DVALL=4*CUT;
+ );
+ tmp=indexof(var,"=");
+ tmp1=substring(var,0,tmp-1);
+ tmp2=substring(var,tmp,length(var));
+ tmp2=parse(tmp2);
+ if(indexof(func,"Moiveframe")==0,
+ tmp="Movieframe("+tmp1+"):="+func+";";
+ parse(tmp);
+ );
+ tmp="Movierange="+tmp2+";";
+ parse(tmp);
+// tmp="Movieoptions=["+Dq+"Div="+text(DVALL)+Dq+","+Dq+"Cut="+text(CUT)+Dq+"]";
+// parse(tmp);
+);
+
+Paraamble():=Paraamble("");
+Paraamble(str):=(
+//help:Paraamble();
+//help:Paraamble(amblelist);
+//help:Paraamble(filename);
+ regional(cmdall,sep,tmp,tmp1,tmp2);
+ if(isstring(str),
+ if(str=="",
+ Parafirsthead=[
+ "\def\ketcbox{white}", // 17.02.26
+ "\newslide[0]{"+ParaTitle+"}", //16.12.10
+ "",
+ "\hypertarget{FIRST}{}",
+ "Commonhead"
+ ];
+ Parafirsttail=[
+ "Commontail"
+ ];
+ Parahead=[
+ "\sameslide[0]",
+ "Commonhead"
+ ];
+ Paratail=[
+ "Commontail"
+ ];
+ Paralasthead=[
+ "\sameslide[0]",
+ "",
+ "\hypertarget{LAST}{}",
+ "Commonhead"
+ ];
+ Paralasttail=[
+ "Commontail"
+ ];
+ Commonhead=[
+ "",
+ "\definecolor{thinblue}{cmyk}{0.3,0.3,0,0}", //17.02.19
+ "\begin{layer}{130}{0}",
+ "\hyperlink{FIRST}{\colorframe[8]{0}{80}{thinblue}{yellow}{blue}{FIRST}}", //17.02.19
+ "\hyperlink{LAST}{\colorframe[8]{110}{80}{thinblue}{yellow}{blue}{LAST}}", //17.02.19
+ "\putnotec{60}{40}{" // 16.07.06
+ ];
+ Commontail=[
+ "",
+ "}",
+ "\end{layer}",
+ ""
+ ];
+ ,
+ if(indexof(str,".")>0,tmp1=str,tmp1=str+".txt");
+ tmp=load(tmp1);
+ cmdall=tokenize(tmp,"...");
+ cmdall=apply(cmdall,Removespace(#));
+ sep=select(1..length(cmdall),substring(cmdall_#,0,5)=="%Para");
+ Parafirsthead=cmdall_(2..(sep_2-1));
+ Parafirsttail=cmdall_((sep_2+1)..(sep_3-1));
+ Parahead=cmdall_((sep_3+1)..(sep_4-1));
+ Paratail=cmdall_((sep_4+1)..(sep_5-1));
+ Paralasthead=cmdall_((sep_5+1)..(sep_6-1));
+ tmp1=cmdall_((sep_6+1)..length(cmdall));
+ sep=select(1..length(tmp1),substring(tmp1_#,0,7)=="%Common");
+ Paralasttail=tmp1_(1..sep_1-1);
+ Commonhead=tmp1_((sep_1+1)..(sep_2-1));
+ Commontail=tmp1_((sep_2+1)..length(tmp1));
+ );
+ );
+ if(islist(str),
+ Parafirsthead=str_1;
+ Parafirsttail=str_2;
+ Parahead=str_3;
+ Paratail=str_4;
+ Paralasthead=str_5;
+ Paralasttail=str_6;
+ Commonhead=str_7;
+ Commontail=str_8;
+ );
+ tmp1=apply(Parafirsthead,Dq+#+Dq);
+ tmp2=apply(Parafirsttail,Dq+#+Dq);
+ tmp=[tmp1,tmp2];
+ tmp1=apply(Parahead,Dq+#+Dq);
+ tmp2=apply(Paratail,Dq+#+Dq);
+ tmp=concat(tmp,[tmp1,tmp2]);
+ tmp1=apply(Paralasthead,Dq+#+Dq);
+ tmp2=apply(Paralasttail,Dq+#+Dq);
+ tmp=concat(tmp,[tmp1,tmp2]);
+ tmp1=apply(Commonhead,Dq+#+Dq);
+ tmp2=apply(Commontail,Dq+#+Dq);
+ tmp=concat(tmp,[tmp1,tmp2]);
+ tmp;
+);
+
+Writeparaamble(filename):=(
+ //regional(tmp,tmp1,tmp2);
+ SCEOUTPUT=openfile(filename);
+ println(SCEOUTPUT,"%Parafirsthead"+"...");
+ forall(Parafirsthead,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Parafirsttail"+"...");
+ forall(Parafirsttail,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Parahead"+"...");
+ forall(Parahead,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Paratail"+"...");
+ forall(Paratail,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Paralasthead"+"...");
+ forall(Paralasthead,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Paralasttail"+"...");
+ forall(Paralasttail,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Commonhead"+"...");
+ forall(Commonhead,
+ println(SCEOUTPUT,#+"...");
+ );
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"%Commontail"+"...");
+ forall(Commontail,
+ println(SCEOUTPUT,#+"...");
+ );
+ closefile(SCEOUTPUT);
+);
+
+Mvdispg():=(
+ regional(tmp,tmp1,tmp2,tmp3,num,s,i);
+ CLIST=COM2ndlist;
+ FIXGLIST=[];
+ forall(2..length(GLIST),
+ FIXGLIST=append(FIXGLIST,GLIST_#);
+ );
+ STPTlist=remove(allpoints(),[SW,NE,MF]);
+ STPlist=[];
+ STPnamelist=[];
+ STPvaluelist=[];
+ forall(STPTlist,
+ tmp=Lcrd(#);
+ tmp1=format(re(tmp_1),5);
+ tmp2=format(re(tmp_2),5);
+ tmp="["+tmp1+","+tmp2+"]";
+ STPlist=append(STPlist,#.name+"="+tmp+";");
+ STPnamelist=append(STPnamelist,#.name);
+ STPvaluelist=append(STPvaluelist,tmp);
+ );
+ tmp1=round(4*SW.y)/4-0.5;
+ tmp2=SW.x+1;
+ tmp3=NE.x-1;
+ if(length(Movierange)==2,
+ s=Movierange_1+(MF.x-tmp2)/(tmp3-tmp2)*(Movierange_2-Movierange_1);
+ Movieframe(s);
+ ,
+ num=length(Movierange);
+ tmp=Movierange_1+(MF.x-tmp2)/(tmp3-tmp2)*(Movierange_num-Movierange_1);
+ i=1;
+ while(Movierange_(i+1)<=tmp,
+ i=i+1;
+ );
+ s=Movierange_i;
+ Movieframe(s);
+ );
+ Windispg();
+ Defvar("s",s);
+ GOUTLIST=[];
+);
+
+Mkmovie():=Mkmovie(Movierange);
+Mkmovie(rng):=(
+ regional(x1,x2,PLIST,GL,num0,num1,num2,num3,num4,num5,num6,num,
+ l,s,k,tmp,tmp1,tmp2,tmp3,Plist,Pnamelist,Pvaluelist,
+ ALLPlist,MVPlist);
+ if(length(rng)==2,
+ x1=rng_1;
+ x2=rng_2;
+ PLIST=[x1];
+ forall(1..DVALL,k,
+ s=x1+k*(x2-x1)/DVALL;
+ PLIST=append(PLIST,s);
+ );
+ ,
+ PLIST=rng;
+ DVALL=length(rng)-1;
+ );
+ if(VERNUM==0,
+ SCEOUTPUT=openfile(Texmov+".sce");
+ ,
+ SCEOUTPUT=openfile(Texpara+".sce");
+ );
+ println(SCEOUTPUT,"cd('"+Dirwork+"');");
+ println(SCEOUTPUT,"Ketlib=lib('"+Libname+"');");
+ println(SCEOUTPUT,"Ketinit();");
+ println(SCEOUTPUT,"pi=%pi;");
+ tmp="Setwindow(["+text(XMIN)+","+text(XMAX)+
+ "],["+text(YMIN)+","+text(YMAX)+"]);";// 16.05.19
+ println(SCEOUTPUT,tmp);
+ //println(SCEOUTPUT,"Setax('l','x','e','y','n','O','sw');");
+ num1=length(COM1stlist);
+ forall(1..num1,l,
+ println(SCEOUTPUT,COM1stlist_l+";");
+ );
+ forall(1..length(STPlist),
+ print(SCEOUTPUT,STPlist_#);
+ println(SCEOUTPUT," Assignrep('"+STPnamelist_#+"',"+STPvaluelist_#+");");
+ );
+ num2=length(CLIST);
+ num3=length(FIXGLIST);
+ num=0;
+ repeat(num3,
+ num=num+1;
+ tmp1=FIXGLIST_num;
+ num4=indexof(tmp1,"=");
+ if(num4>0,
+ tmp2=substring(tmp1,num4,length(tmp1));
+ tmp=substring(tmp1,0,num4-1);
+ println(SCEOUTPUT,tmp+"="+text(tmp2)+";");
+ );
+ );
+ if(VERNUM==0,
+ println(SCEOUTPUT,"Openfile('"+Texmov+"figs.tex');");
+ println(SCEOUTPUT,"Texcom('\begin{animateinline}{"+text(CUT)+"}');");
+ ,
+ println(SCEOUTPUT,"Openfile('"+Texpara+"figs.tex');");
+ );
+ println(SCEOUTPUT,"");
+ forall(0..DVALL,k,
+ s=PLIST_(k+1);
+ println(SCEOUTPUT,"s="+format(s,5)+";");
+ GLIST=[];
+ COM2ndlist=[];
+ GCLIST=FIXGCLIST;
+ Movieframe(s);
+ clrscr(); // 15.06.17
+ Plist=[];
+ Pnamelist=[];
+ Pvaluelist=[];
+ ALLPlist=remove(allpoints(),[SW,NE,MF]);
+ RMPlist=[];
+ forall(1..length(ALLPlist),
+ tmp=indexof(STPvaluelist_#,",");
+ tmp1=substring(STPvaluelist_#,1,tmp-1);
+ tmp2=substring(STPvaluelist_#,tmp,length(STPvaluelist_#)-1);
+ if(parse(format(Lcrd(ALLPlist_#)_1,5))==parse(tmp1),
+ if(parse(format(Lcrd(ALLPlist_#)_2,5))==parse(tmp2),
+ RMPlist=append(RMPlist,ALLPlist_#);
+ );
+ );
+ );
+ MVPlist=remove(ALLPlist,RMPlist);
+ forall(MVPlist,
+ tmp=Lcrd(#);
+ tmp1=format(re(tmp_1),5);
+ tmp2=format(re(tmp_2),5);
+ tmp="["+tmp1+","+tmp2+"]";
+ Plist=append(Plist,#.name+"="+tmp+";");
+ Pnamelist=append(Pnamelist,#.name);
+ Pvaluelist=append(Pvaluelist,tmp);
+ );
+ forall(1..length(Plist),
+ print(SCEOUTPUT,Plist_#);
+ println(SCEOUTPUT," Assignrep('"+Pnamelist_#+"',"+Pvaluelist_#+");");
+ );
+ num3=length(GLIST);
+ num=0;
+ GL=[];
+ forall(GCLIST,
+ GL=append(GL,#_1);
+ );
+ repeat(num3,
+ num=num+1;
+ tmp1=GLIST_num;
+ num4=indexof(tmp1,"=");
+ tmp2=substring(tmp1,num4,length(tmp1));
+ tmp=substring(tmp1,0,num4-1);
+ //if(indexof(tmp2,"=")>0,
+ if(substring(tmp2,0,5)=="Param",
+ num5=indexof(tmp2,"=");
+ tmp3=substring(tmp2,num5,length(tmp2)-2);
+ tmp3=parse(tmp3);
+ if(tmp3_1==tmp3_2,
+ tmp2="Pointdata([0,0])";
+ );
+ );
+ println(SCEOUTPUT,tmp+"="+text(tmp2)+";");
+ );
+ forall(GOUTLIST,
+ tmp=#_1;
+ println(SCEOUTPUT,"Tmpout=ReadOutData('"+tmp+"');");
+ println(SCEOUTPUT,"execstr(Tmpout);");
+ );
+ if(VERNUM==1,
+ if(k==0,
+ tmp1=apply(Parafirsthead,Removespace(#));
+ ,
+ if(k<DVALL,
+ tmp1=apply(Parahead,Removespace(#));
+ ,
+ tmp1=apply(Paralasthead,Removespace(#));
+ );
+ );
+ tmp1=apply(tmp1,if(length(#)==0,"newline",#));
+ tmp=select(1..length(tmp1),indexof(tmp1_#,"Common")>0);
+ tmp2=apply(Commonhead,Removespace(#));
+ tmp2=apply(tmp2,if(length(#)==0,"newline",#));
+ tmp1_(tmp_1)=tmp2;
+ tmp1=flatten(tmp1);
+ forall(tmp1,
+ println(SCEOUTPUT,"Texcom('"+#+"');");
+ );
+ );
+ tmp=indexof(ULEN,"cm"); // 16.05.19from
+ if(tmp>0,
+ tmp1=Removespace(substring(ULEN,0,tmp-1));
+ tmp2=0.5/parse(tmp1)
+ ); // 16.05.19upto
+ tmp=indexof(ULEN,"mm");
+ if(tmp>0,
+ tmp1=Removespace(substring(ULEN,0,tmp-1));
+ tmp2=5/parse(tmp1);
+ );
+ tmp="Setwindow(["+text(XMIN)+","+text(XMAX+tmp2)+
+ "],["+text(YMIN)+","+text(YMAX+tmp2)+"]);";// 16.05.19
+ println(SCEOUTPUT,tmp);// 16.05.19
+ println(SCEOUTPUT,"Beginpicture('"+ULEN+"');");
+ tmp="Setwindow(["+text(XMIN)+","+text(XMAX)+
+ "],["+text(YMIN)+","+text(YMAX)+"]);";// 16.05.19
+ println(SCEOUTPUT,tmp);// 16.05.19
+ forall(1..num2,l,
+ println(SCEOUTPUT,CLIST_l+";");
+ );
+ forall(1..length(COM2ndlist),l,
+ println(SCEOUTPUT,COM2ndlist_l+";");
+ );
+ println(SCEOUTPUT,"Endpicture("+ADDAXES+");");
+ if(VERNUM==0,
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"Texcom('');");
+ if(k<DVALL,
+ println(SCEOUTPUT,"Texcom('\newframe');");
+ println(SCEOUTPUT,"");
+ ,
+ println(SCEOUTPUT,"Texcom('\end{animateinline}')");
+ println(SCEOUTPUT,"Closefile();");
+ println(SCEOUTPUT,"quit();");
+ closefile(SCEOUTPUT);
+ );
+ ,
+ if(k==0,
+ tmp1=apply(Parafirsttail,Removespace(#));
+ ,
+ if(k<DVALL,
+ tmp1=apply(Paratail,Removespace(#));
+ ,
+ tmp1=apply(Paralasttail,Removespace(#));
+ );
+ );
+ tmp1=apply(tmp1,if(length(#)==0,"newline",#));
+ tmp=select(1..length(tmp1),indexof(tmp1_#,"Common")>0);
+ tmp2=apply(Commontail,Removespace(#));
+ tmp2=apply(tmp2,if(length(#)==0,"newline",#));
+ tmp1_(tmp_1)=tmp2;
+ tmp1=flatten(tmp1);
+ forall(tmp1,
+ println(SCEOUTPUT,"Texcom('"+#+"');");
+ );
+ if(k==DVALL,
+ println(SCEOUTPUT,"");
+ println(SCEOUTPUT,"Closefile();");
+ println(SCEOUTPUT,"quit();");
+ closefile(SCEOUTPUT);
+ );
+ );
+ Windispg(GL);
+ time=1000/CUT;
+ wait(time);
+ GLIST=[];
+ GCLIST=[];
+ COM2ndlist=[];
+ GOUTLIST=[];
+ );
+);
+
+Mkmovietexmain():=(
+ TEXOUTPUT=openfile(Texmov+"main"+".tex"); // 15.03.28
+ println(TEXOUTPUT,"");
+ println(TEXOUTPUT,"\documentclass{article}");
+ println(TEXOUTPUT,"\usepackage{amsmath,amssymb}"); // 16.07.06
+ println(TEXOUTPUT,"\usepackage{graphicx}");
+ println(TEXOUTPUT,"\usepackage[dvipdfmx]{animate}");
+ println(TEXOUTPUT,"\usepackage{color}");
+ println(TEXOUTPUT,"\usepackage{ketpic,ketlayer}");
+ println(TEXOUTPUT,"\setmargin{20}{20}{20}{20}");
+ println(TEXOUTPUT,"\begin{document}");
+ println(TEXOUTPUT,"\input{"+Texmov+"figs.tex}%");
+ println(TEXOUTPUT,"\end{document}");
+ closefile(TEXOUTPUT);
+);
+
+Mkmoviesh():=(
+ regional(parentorg,tmp);
+ parentorg=Texparent;//17.04.10
+ Texparent="";//17.04.10
+ tmp=Fhead;// 15.03.28
+ Fhead=Texmov;
+ if(length(Shellparent)>0,
+ Makeshell()
+ ,
+ Makebat();
+ );
+ Fhead=tmp;
+ Texparent=parentorg;//17.04.10
+);
+
+Texmovie():=(
+ VERNUM=0;
+ Mkmovie();
+ Mkmovietexmain();
+ Mkmoviesh();
+);
+
+Mkparatexmain():=(
+ TEXOUTPUT=openfile(Texpara+"main"+".tex");
+ println(TEXOUTPUT,"");
+ println(TEXOUTPUT,"\documentclass[landscape,10pt]{article}");
+ println(TEXOUTPUT,"\usepackage{amsmath,amssymb}"); // 16.07.06
+ println(TEXOUTPUT,"\usepackage{graphicx}");
+ println(TEXOUTPUT,"\usepackage[dvipdfmx,colorlinks=true,linkcolor=black]{hyperref}");
+ println(TEXOUTPUT,"\AtBeginDvi{\special{pdf:tounicode 90ms-RKSJ-UCS2}}");
+ println(TEXOUTPUT,"\usepackage{color}");
+ println(TEXOUTPUT,"\usepackage{ketpic,ketlayer,ketslide}");
+ println(TEXOUTPUT,"\ketmarginE");
+ println(TEXOUTPUT,"\ketslideinit");
+ println(TEXOUTPUT,"\begin{document}");
+ println(TEXOUTPUT,"\input{"+Texpara+"figs.tex}%");
+ println(TEXOUTPUT,"\end{document}");
+ closefile(TEXOUTPUT);
+);
+
+Mkparash():=(
+ regional(tmp);
+ tmp=Fhead;
+ Fhead=Texpara;
+ if(length(Shellparent)>0,
+ Makeshell()
+ ,
+ Makebat();
+ );
+ Fhead=tmp;
+);
+
+Texpara():=(
+ VERNUM=1;
+ Mkmovie();
+ Mkparatexmain();
+ Mkparash();
+);
+
+Setpara(path,fstr,sL):=Setpara(path,fstr,sL,[]); // 16.12.27added
+Setpara(pathorg,fstr,sL,options):=(
+//help:Setpara("folder name","funstr","range",options);
+//help:Setpara(folder,funstr,range,options);
+//help:Setpara(options=["m/r","Div=25"]);
+//help:Setpara(options=["Frate=10","Scale=1","OpA=[loop]"] for animation);
+ regional(path);//17.04.10
+ if(length(pathorg)==0, path=Slidename,path=pathorg);//17.04.10
+ ParaPath=path;
+ ParaFstr=fstr;
+ ParaSL=sL;
+ ParaOp=options;
+ GLISTback=GLIST;
+ GCLISTback=GCLIST;
+ GOUTLISTback=GOUTLIST;
+ POUTLISTback=POUTLIST;
+ VLISTback=VLIST;
+ FUNLISTback=FUNLIST;
+ LETTERlistback=LETTERlist;
+ COM0thlistback=COM0thlist;
+ COM1stlistback=COM1stlist;
+ COM2ndlistback=COM2ndlist;
+);
+
+Parafolder():=Parafolder(ParaPath,ParaFstr,ParaSL,ParaOp);
+Parafolder(path,fstr,sL):=Parafolder(path,fstr,sL,[]);
+Parafolder(path,fstr,sLorg,optionorg):=(
+//help:Parafolder(foldername,1..4);
+//help:Parafolder(foldername,"s=[0,1]");
+//help:Parafolder("mf(s)",foldername,"s=[0,1]");
+//help:Parafolder(options=["m/r","Div=25"]);
+//help:Paraslide(para=folder:layery:pos:input,scale);
+//help:Paraslide(para=folder:layery:pos:include:[width=100]);
+ regional(nn,sL,tmp,tmp1,tmp2,strL,eqL,
+ mksce,mktex,ndiv,options,sciall,sfL);
+ if(!isstring(ParaPath),
+ println("Setpara not executed");
+ ,
+ sL=sLorg;//16.12.24from
+ if(!isstring(sL),
+ tmp=indexof(fstr,"(");
+ tmp1=substring(fstr,tmp,length(fstr));
+ tmp=indexof(tmp1,")");
+ tmp1=substring(tmp1,0,tmp-1);
+ ,
+ tmp=indexof(sL,"=");//16.12.21from
+ if(length(tmp)>0,
+ tmp1=substring(sL,0,tmp-1);
+ );
+ );//16.12.21,24upto
+ parse("Movieframe("+tmp1+"):="+fstr);
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ if(length(strL)==0,options=append(options,"m"));//16.12.18
+ mksce="A";
+ mktex="A";
+ ndiv=25;
+ forall(eqL,
+ tmp=Indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="D",
+ ndiv=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ forall(strL,
+ tmp1=Toupper(substring(#,0,1));
+ if(tmp1=="M",
+ mksce="Y"; mktex="Y";
+ );
+ );
+ sL=sLorg;
+ if(isstring(sL),
+ tmp=indexof(sL,"=");
+ tmp1=parse(substring(sL,tmp,length(sL)));
+ sL=apply(0..ndiv,tmp1_1+#*(tmp1_2-tmp1_1)/ndiv);
+ );
+ if(!isexists(Dirwork,path),
+ if(ErrFlag!=-1,
+ cmdL=["createdir",[Dq+path+Dq]];//16.12.20
+ CalcbyS("crdr",cmdL,["m"]);
+ wait(200);//17.02.20from
+ repeat(1..30,
+ if(!isexists(Dirwork,path),wait(100));
+ );//17.02.20upto
+ ,
+ println(" ==> Changework may not work properly");
+ sL=[];
+ );
+ ,
+ if(mksce=="Y",
+ cmdL=[
+ "rmdir",[Dq+path+Dq,Dq+"s"+Dq],
+ "createdir",[Dq+path+Dq]
+ ];//16.12.20
+ CalcbyS("crdr",cmdL,["m"]);
+ wait(200);//17.02.20from
+ tmp=Dirwork+"/"+path;
+ if(iswindows(),tmp=replace(tmp,"/","\"));
+ repeat(1..30,
+ if(!isexists(Dirwork,path),
+ wait(100);
+ ,
+ if(length(fileslist(tmp))>0,wait(100));
+ );
+ );
+ );//17.02.20upto
+ );
+ sciall=path+"/all.sce";
+ if(iswindows(),sciall=replace(sciall,"/","\"));//17.02.20
+ sfL=[];
+ forall(1..(length(sL)),nn,
+ clrscr(); // 16.12.28
+ GLIST=GLISTback;
+ GCLIST=GCLISTback;
+ GOUTLIST=GOUTLISTback;
+ POUTLIST=POUTLISTback;
+ VLIST=VLISTback;
+ FUNLIST=FUNLISTback;
+ LETTERlist=LETTERlistback;
+ COM0thlist=COM0thlistback;
+ COM1stlist=COM1stlistback;
+ COM2ndlist=COM2ndlistback;
+ tmp1=Sprintf(nn/1000,3);
+ tmp=indexof(tmp1,".");
+ tmp1=substring(tmp1,tmp,length(tmp1));
+ Fnamesci=path+"/p"+tmp1+".sce";
+ sfL=append(sfL,Fnamesci);
+ Fnametex=replace(Fnamesci,".sce",".tex");
+ Movieframe(sL_nn);
+// windispg();//16.12.28
+ if(!isexists(Dirwork,Fnamesci) % mksce=="Y",
+ if(ErrFlag!=-1,
+ Viewtex();
+ );
+ );
+ ); // 16.12.27upto
+ cmdL=[
+ "fL="+text(apply(sfL,Dq+#+Dq)),[],
+ "Dt=mgetl(fL(1));",[],
+ "Dt=Dt(1:(size(Dt,1)-1),:)",[],
+ "for I=2:size(fL,2),Tmp=mgetl(fL(I));N=size(Tmp,1)-1;Tmp1=Tmp(13:N,:);Dt=[Dt;Tmp1],end",[],
+ "mputl(Dt,'"+sciall+"')",[],
+ "exec('"+sciall+"',-1)",[]
+ ];
+ if(ErrFlag!=-1,
+ if(!isexists(Dirwork,Fnametex) % mktex=="Y",
+ CalcbyS("all",cmdL,options);
+ ,
+ println("Parafolder "+path+" finished");//16.12.20
+ );
+ if(length(after)>0, // 16.12.27
+ parse(after);
+ );
+ Fnamesci=Fhead+".sce";
+ Fnametex=Fhead+".tex";
+ );
+ );
+);
+
+Flipbook():=( //17.04.09
+ regional(parentorg,Dirworkorg,figfolder,sep,x0,y0,sc,title,tmp,tmp1,tmp2);
+ Dirworkorg=Dirwork;
+ Slidework(Dirwork);
+ figfolder=Dirwork;
+ parentorg=Texparent;
+ PageStyle="empty";
+ title=Texparent;
+ tmp=Divoptions(ParaOp);
+ tmp1=tmp_5;
+ forall(tmp1,
+ tmp2=substring(Toupper(#),0,1);
+ if(tmp2=="T",
+ tmp=indexof(#,"=");
+ title=substring(#,tmp,length(#));
+ ParaOp=remove(ParaOp,[#]);
+ );
+ );
+ x0="60"; y0="5"; sc="1";
+ tmp=select(ParaOp,islist(#));
+ if(length(tmp)>0,
+ x0=text(tmp_1_1);
+ y0=text(tmp_1_2);
+ ParaOp=remove(ParaOp,[tmp_1]);
+ );
+ tmp=select(ParaOp,!islist(#) & isreal(#));
+ if(length(tmp)>0,
+ sc=text(tmp_1);
+ ParaOp=remove(ParaOp,[tmp_1]);
+ );
+ Parafolder();
+ Changework(Dirworkorg);
+ if(isstring(Slidename),
+ Texparent=Slidename;
+ ,
+ Texparent=parentorg+"flip";
+ );
+ SCEOUTPUT = openfile(Texparent+".txt");
+ println(SCEOUTPUT,"%title//");
+ println(SCEOUTPUT,"\pagestyle{empty};//");
+ println(SCEOUTPUT,"new::"+title+"//");
+ println(SCEOUTPUT,
+ "%repeat=,para="+ParaPath+":{0}:s{"+x0+"}{"+y0+"}:input:"+sc+"//");
+ closefile(SCEOUTPUT);
+ Changework(figfolder);
+ Setslidebody("black");
+ Setslidehyper("");
+ Mkslides();
+ Changework(Dirworkorg);
+ Texparent=parentorg;
+);
+
+Animatefile():=Animatefile(Dirwork,ParaPath);
+Animatefile(path,folder):=(
+//help:Animatefile();
+//help:Animatefile(Dirwork,ParaPath);
+ regional(FRate, Scale, OpA, pa,fname,eqL,tmp,tmp1,tmp2);
+ tmp=divoptions(ParaOp);
+ eqL=tmp_5;
+ FRate="10";
+ Scale="1";
+ OpA="";
+ forall(eqL,
+ tmp1=Toupper(substring(#,0,2));
+ tmp=indexof(#,"=");
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="FR",
+ FRate=tmp2;
+ );
+ if(tmp1=="SC",
+ Scale=tmp2;
+ );
+ if(tmp1=="OP",
+ if(substring(tmp2,0,1)!="[",tmp2="["+tmp2+"]");
+ OpA=tmp2;
+ );
+ );
+ pa=replace(path,"\","/");
+ fname="anim"+folder+".tex";
+ tmp=Dirwork+"/"+folder;
+ path=replace(tmp,"\","/");
+ if(iswindows(),tmp=replace(tmp,"/","\"));
+ tmp1=fileslist(tmp);
+ tmp1=tokenize(tmp1,",");
+ tmp1=select(tmp1,indexof(#,".tex")>0);
+ SCEOUTPUT= openfile(fname);
+ println(SCEOUTPUT,"\def\parapath{"+pa+"}%"); //17.06.22
+ println(SCEOUTPUT,"\begin{animateinline}"+OpA+"{"+FRate+"}%");
+ forall(1..(length(tmp1)),
+ if(Scale==1, // 17.08.30from
+ tmp="\input{\parapath/";
+ tmp=tmp+folder+"/"+tmp1_#+"}%";
+ ,
+ tmp="\scalebox{"+Scale+"}{\input{\parapath/";//17.06.22(3lines)
+ tmp=tmp+folder+"/"+tmp1_#+"}}%";
+ ); // 17.08.30upto
+ println(SCEOUTPUT,tmp);
+// println(SCEOUTPUT,""); //17.06.25
+ if(#<length(tmp1),
+ println(SCEOUTPUT,"\newframe%");
+ );
+ );
+ println(SCEOUTPUT,"\end{animateinline}%");
+ closefile(SCEOUTPUT);
+ println(fname+" has been generated");
+);
+
+//help:end();
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpE.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpE.txt
new file mode 100644
index 00000000..9a7edb2e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpE.txt
@@ -0,0 +1,4 @@
+//help:start();
+//help:Moviedata*(generate movie/para data);
+//help:Paraamble*(Define preamble and postamble);
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpJ.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpJ.txt
new file mode 100644
index 00000000..354d6596
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvhelpJ.txt
@@ -0,0 +1,4 @@
+//help:start();
+//help:Moviedata*(movieデータを定義
+//オプション : "Cut=1秒ã®ã‚³ãƒžæ•°(20)", "Div=全体ã®ã‚³ãƒžæ•°(80)");
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvlog.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvlog.txt
new file mode 100644
index 00000000..b39a48e0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibmvlog.txt
@@ -0,0 +1,66 @@
+// e: 2017.08.19
+// Help of Setpara changed
+// e: 2017.06.25
+// Animatefile changed (remove blank lines)
+// e: 2017.06.22
+// Animatefile changed (parapath)
+// e: 2017.06.18
+// Animatefile added
+// e: 2017.04.10
+// Mkmoviesh changed ( Texparent )
+// Ketinitmv changed ( Ketinit included )
+// e: 2017.04.09
+// Ketinitmv changed ( Shellfile="mv" added )
+// Flipbook added
+// s:2017.04.08
+// bugs fixed
+// e: 2017.02.26
+// Paraamble debugged ( \def\ketcbox{white} added )
+// e: 2017.02.20
+// Parafolder debugged ( waiting time )
+// e: 2017.02.19
+// Paraamble debugged ( "colorframe" )
+// e: 2016.12.29
+// Parafolder changed (rmdir added);
+// e: 2016.12.28
+// Parafolder changed (clrscr,windispg);
+// e: 2016.12.27
+// Setpara added ( for Para button )
+// Parafolder changed( "m" for remake)
+// e: 2016.12.26
+// Parafolder debugged("quit" removed from all.sce)
+// e: 2016.12.25
+// Parafolder debugged/changed (OK for "Scetex=m or m,r")
+// e: 2016.12.24
+// Parafolder debugged (definition of movieframe )
+// e: 2016.12.22
+// Parafolder changed ( not executed when Errflg=-1 from Changework )
+// e: 2016.12.21
+// Parafolder changed ( for functionstring )
+// e: 2016.12.19
+// Parafolder debugged
+// e: 2016.12.15
+// Parafolder added
+// e: 2016.12.10
+// Setpara added (global var ParaTitle added )
+// e: 2016.08.10
+// Ketinitmv changed ( Paraamble() added)
+// e: 2016.07.06
+// amsmath,amssymb added
+// putnotes => putnotec in paraamble
+
+//////////// old ////
+// s: 2015.06.20 v1.4.6
+// e: 2015.06.22 v1.5.0
+// .cs adopted
+// movie, para embodied
+// e: 2015.07.10 v1.5.1
+// applied to Deqplot
+// e: 2015.07.10 v1.5.2
+// rename "start","end" to "First", "Last"
+// e: 2016.04.01 v1.5.3
+// rename Texmovie to Texmov
+// e: 2016.05.19
+// Mkmovie changed ( for name of axis )
+//////// To Reverse Sequence
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindylibout.cs b/texmf-dist/scripts/ketpic/ketlib/ketcindylibout.cs
new file mode 100644
index 00000000..baf06a73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindylibout.cs
@@ -0,0 +1,5359 @@
+// Copyright (C) 2014 Setsuo Takato, KETCindy Japan project team
+//
+//This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation; either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see <http://www.gnu.org/licenses/>
+//
+
+println("ketcindyout(2017.06.23) loaded");
+
+//help:start();
+
+WritetoS(fname,cmdL):=(
+// help:WritetoS("outdata",cmdL);
+ regional(tmp,tmp1,tmp2,filename);
+ if(indexof(fname,".")==0,
+ filename=fname+".sce";
+ ,
+ filename=fname;
+ );
+ SCEOUTPUT = openfile(filename);
+ tmp="cd('"+Dirwork+"');//";
+ println(SCEOUTPUT,tmp);
+// tmp1=replace(Dirlib,"\","/");
+ tmp="Ketlib=lib("+Dq+Libname+Dq+");//";
+ println(SCEOUTPUT,tmp);
+ tmp="Ketinit();//";
+ println(SCEOUTPUT,tmp);
+ tmp="Setwindow([XMIN,XMAX],[YMIN,YMAX]);"; // 16.06.26from
+ tmp=Assign(tmp,["XMIN",XMIN,"XMAX",XMAX,"YMIN",YMIN,"YMAX",YMAX]);
+ println(SCEOUTPUT,tmp); // 16.06.26upto
+ if(iswindows(), // 17.01.11from
+ println(SCEOUTPUT,"setlanguage('en')");
+ ); // 17.01.11upto
+ tmp="pi=%pi;////";
+ println(SCEOUTPUT,tmp);
+ forall(cmdL,
+ println(SCEOUTPUT,#+"//");
+ );
+ closefile(SCEOUTPUT);
+);
+
+kcS(path,fname):=kcS(path,fname,[]);
+kcS(path,fname,optionorg):=(
+//help:kcS(PathS,"boxdata");
+//help:kcS(options=["r/m"]);
+ regional(options,tmp,tmp1,tmp2,eqL,strL,filename,flg);
+ if(indexof(fname,".")==0,
+ filename=fname+".sce";
+ ,
+ filename=fname;
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ );
+ flg=0;
+ forall(strL,
+ if(Toupper(substring(#,0,1))=="R",
+ flg=0;
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="M",
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp2=replace(filename,".sce",".txt");
+ tmp1=load(tmp2);
+ if(length(tmp1)==0,
+ flg=1;
+ );
+ );
+ if(flg==1,
+ tmp1=""; // 15.10.08 from
+ if(iswindows(),
+ tmp2=Batparent;
+ ,
+ tmp2=Shellparent;
+ );
+ flg=0;
+ forall(reverse(1..length(tmp2)),
+ if(flg==0,
+ tmp=substring(tmp2,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ tmp1=substring(tmp2,0,#-1);
+ tmp2=substring(tmp2,#,length(tmp2));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(tmp1);
+ ); // 15.10.08 to
+ if(iswindows(),
+ SCEOUTPUT = openfile("kc.bat");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=Dq+path+Dq+" -nb -nwni -f "+filename;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29, 0605
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=Dq+path+Dq+" -nwni -f "+filename;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29
+ );
+ wait(WaitUnit);
+ setdirectory(Dirwork);
+ );
+);
+
+SetpathS():=(
+ regional(tmp,tmp1);
+ if(!isstring(PathS), // 15.12.11
+ Setdirectory(Dirbin); // 15.12.07
+ tmp=load(Shellfile);
+ if(iswindows(),
+ tmp=tokenize(tmp," -nb");
+ PathS=tmp_1;
+ ,
+ tmp=tokenize(tmp," -nwni");
+ tmp=tokenize(tmp_1,"/Applications/sci");
+ PathS="/Applications/sci"+tmp_2;
+ );
+ setdirectory(Dirwork);
+ );
+ PathS;
+);
+
+ErrhandleS(fname):=( // 2016.02.28
+ regional(str); //17.04.14
+ if(indexof(PathS,"-6.")==0,
+ str=["if iserror(-1) then"," error=lasterror()+'????';"];
+ str=append(str," errclear(-1);"); // 16.03.14
+ str=append(str," Fd=mopen("+Dq+wfile+Dq+",'wt');");
+ str=append(str," mfprintf(Fd,'%s','Error: '+error);");
+ str=append(str," mclose(Fd);");
+ str=append(str," quit();");
+ str=append(str,"end;");
+ str;
+ ,
+ str=[]; //17.04.14
+ );
+);
+
+Testfunstr(funstr,varx,vary):=(
+ regional(var,val,fun,tmp,tmp1,tmp2);
+ fun=replace(funstr,".x","(1)"); // 16.05.19
+ fun=replace(fun,".y","(2)"); // 16.05.19
+ tmp=indexof(varx,"=");
+ var=substring(varx,0,tmp-1);
+ val=substring(varx,tmp+1,length(varx));
+ tmp=indexof(val,",");
+ val=substring(val,0,tmp-1);
+ tmp1=replace(fun,var,"("+val+")");
+ tmp=indexof(vary,"=");
+ var=substring(vary,0,tmp-1);
+ val=substring(vary,tmp+1,length(vary));
+ tmp=indexof(val,",");
+ val=substring(val,0,tmp-1);
+ tmp1=replace(tmp1,var,"("+val+")");
+ tmp1;
+);
+
+CalcbyS(name,cmd):=CalcbyS(name,SetpathS(),cmd,[]);
+CalcbyS(name,Arg1,Arg2):=(
+ if(isstring(Arg1),
+ CalcbyS(name,Arg1,Arg2,[]);
+ ,
+ CalcbyS(name,SetpathS(),Arg1,Arg2);
+ );
+);
+CalcbyS(name,path,cmd,optionorg):=(
+//help:CalcbyS("a",cmd);
+//help:CalcbyS(options= ["m/r","Wait=10","Cat=middle"]]);
+//help:CalcbyS(options1= ["Ncol=2","File=result","Dig=5"]]);
+ regional(options,tmp,tmp1,tmp2,tmp3,tmp4,realL,strL,eqL,
+ ncoL,cat,dig,flg,wflg,file,nc,arg,cmdS,cmdlist,wfile,ext,
+ waiting, errcheck);
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ realL=tmp_6;
+ strL=tmp_7;
+ cat="M";//16.11.24
+ ncoL=2;
+ ext=".txt";
+ waiting=10;
+ dig=5;
+ wfile="";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,2));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="CA",
+ cat=Toupper(substring(tmp2,0,1));// 16.11.24
+ options=remove(options,[#]);
+ );
+ if(tmp1=="NC",
+ ncoL=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="EX",
+ if(indexof(tmp2,".")==0,ext="."+tmp2,ext=tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="WA",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="DI",
+ dig=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="FI", // 16.06.26from
+ wfile=tmp2;
+ options=remove(options,[#]);
+ ); // 16.06.26upto
+ );
+ if(wfile=="",
+ if(cat=="Y",
+ wfile=Fhead+name;
+ ,
+ wfile="resultS";
+ );
+ );
+ if(indexof(wfile,".")==0,// 16.06.26from
+ wfile=wfile+ext;
+ ); // 16.06.26upto
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ if(CONTINUED==0,
+ if((wflg==0) & (cat=="Y"), // 16.11.24
+ tmp=load(wfile);
+ if(length(tmp)==0,wflg=1);
+ );
+ );
+ file=Fhead+name;
+ cmdS=cmd;
+ cmdlist=[];
+ forall(1..floor(length(cmdS)/2),nc, //17.05.18
+ tmp1=cmdS_(2*nc-1);
+ tmp1=replace(tmp1,LFmark,""); // 16.06.12
+ tmp1=replace(tmp1,CRmark,""); // 16.12.13
+ if(nc==length(cmdR)/2, //16.10.23from
+ if(indexof(tmp1,"=")==0,tmp1="="+tmp1);
+ ); //16.10.23from
+ if(substring(tmp1,0,1)=="=",
+// tmp1=name+tmp1; // 16.12.20
+ );
+ tmp2=cmdS_(2*nc); // list of argments
+ tmp3="";
+ tmp4="";
+ errcheck=0;
+ forall(tmp2,arg,
+ if(isstring(arg),
+ if(Toupper(arg)=="ERROR",
+ errcheck=1;
+ ,
+ tmp3=tmp3+replace(arg,"'",Dq)+",";
+ );
+ ,
+ if(!islist(arg),
+ tmp3=tmp3+textformat(arg,dig)+",";
+ ,
+ tmp=select(arg,isstring(#) % islist(#));
+ if(length(tmp)>0,
+ tmp3=tmp3+"list(";
+ tmp4=")";
+ ,
+ tmp3=tmp3+"[";
+ tmp4="]";
+ );
+ forall(arg,
+ if(isstring(#),
+ tmp3=tmp3+replace(#,"'",Dq)+",";
+ ,
+ if(!islist(#), // 15.11.01 from
+ tmp3=tmp3+textformat(#,dig)+",";
+ ,
+ tmp=textformat(#,dig);
+ tmp=replace(tmp,"],[","];[");
+ tmp3=tmp3+tmp+",";
+ ); // 15.11.01 upto
+ );
+ );
+ tmp3=substring(tmp3,0,length(tmp3)-1)+tmp4+",";
+ );
+ );
+ );
+ if(length(tmp3)>0,
+ tmp3=substring(tmp3,0,length(tmp3)-1);
+ tmp1=tmp1+"("+tmp3+");";
+ );
+ if(errcheck==1,
+ if(indexof(Dirlib,"sciL5")>0, // 17.03.20
+ cmdlist=append(cmdlist,"errcatch(-1,'continue','nomessage');");
+ ); // 17.03.20
+ );
+ cmdlist=append(cmdlist,tmp1);
+ if(errcheck==1,
+ tmp=ErrhandleS(wfile);
+ cmdlist=concat(cmdlist,tmp);
+ );
+ );
+ if(CONTINUED==1,
+ ComOutList=concat(ComOutList,cmdlist);
+ ,
+ if(cat=="Y",
+ tmp=[];
+ tmp=append(tmp,"Fd=mopen("+Dq+file+".txt"+Dq+",'wt');");
+ // 16.03.11 from
+ tmp=append(tmp,"mfprintf(Fd,'%s',"+name+");");
+ tmp=append(tmp,"mclose(Fd);");
+ cmdlist=concat(cmdlist,tmp);
+// tmp="fprintfMat("+Dq+file+".txt"+Dq+","+name+")";
+// cmdlist=append(cmdlist,tmp); // 16.03.11 upto
+ ,
+// tmp="mputl(['????'],"+Dq+file+".txt"+Dq+");"; // 16.06.2 from
+// cmdlist=concat(cmdlist,[tmp]); // 16.06.2 upto
+ );
+ if(cat!="Y", // 16.12.18
+ cmdlist=append(cmdlist,"mputl('||||','"+wfile+"')");
+ );
+ cmdlist=append(cmdlist,"quit()");
+ if(wflg==0,
+ tmp1=load(file+".sce");
+ if(length(tmp1)==0,
+ wflg=1;
+ ,
+ tmp1=tokenize(tmp1,"////");
+ tmp1=tokenize(tmp1_2,"//");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ if(length(tmp1)!=length(cmdlist),
+ wflg=1;
+ ,
+ tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#);
+ if(length(tmp)>0, wflg=1);
+ );
+ );
+ );
+ if(wflg==0,wflg=-1); // 15.10.16
+ if(wflg==1,
+ if(length(wfile)>0, // 15.10.05
+ SCEOUTPUT=openfile(wfile);
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ );
+ WritetoS(file+".sce",cmdlist);
+ kcS(path,file,concat(options,["m"])); // 15.09.25
+ );
+ flg=0;
+ tmp1=floor(waiting*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp=load(wfile);
+ if(length(tmp)>=4,
+ tmp2=substring(tmp,length(tmp)-4,length(tmp));
+ if(tmp2=="////" % tmp2=="||||" % tmp2=="????", // 16.08.09
+ if(indexof(Toupper(tmp),"ERROR")>0,
+ println(tmp);
+ flg=2;
+ ,
+ flg=1;
+ );
+ );
+ tmp2=#*WaitUnit/1000;
+ ,
+ if(wflg==-1,
+ flg=-1;
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ );
+ if(flg<=0,
+ ErrFlag=1;
+ if(flg==-1,
+ println(wfile+" does not exist");
+ ,
+ tmp="("+text(waiting)+" s )";
+ println(wfile+" not generated "+tmp);
+ );
+ ,
+ if(flg==1,
+ println(" CalcbyS succeeded "+name+"("+text(tmp2)+" sec)"); //16.06.03
+ ,
+ ErrFlag=1;
+ );
+ );
+ );
+ if(wflg>-1,
+// wait(WaitUnit);
+ );
+);
+
+Scifun(name,fun,argL):=Scifun(name,fun,argL,[]);//16.10.22
+Scifun(name,fun,argL,optionorg):=(
+//help:Scifun("1","date()",[]);
+//help:Scifun(options=["Disp=y"]);
+ regional(nm,options,eqL,disp,cmdL,fname,
+ tmp,tmp1,tmp2);
+ nm="sc"+name;
+ fname=Fhead+nm+".txt";
+ options=optionorg;
+ tmp=divoptions(options);
+ precise=6;
+ disp=1;
+ pack=[];
+ set=[];
+ add="";
+ eqL=tmp_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if((tmp1=="DIS") % (tmp1=="DSP") ,
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="F") % (tmp=="N"),
+ disp=0;
+ );
+ options=remove(options,[#]);
+ );
+ );
+ cmdL=[];
+ cmdL=concat(cmdL,[
+ nm+"="+fun,argL,
+ "Fd=mopen",[Dq+fname+Dq,Dq+"wt"+Dq],
+ "Sla=char(47)+char(47);",[],
+ "mputl",["string("+nm+")+Sla","Fd"],
+ "mputl",["Sla","Fd"],
+ "mclose",["Fd"]
+ ]);
+ options=append(options,"Wait=2");
+ CalcbyS(nm,cmdL,options);
+ if(ErrFlag==0,
+ tmp=load(fname);
+ tmp=replace(tmp,"////","");
+ tmp=tokenize(tmp,"//");
+ tmp=apply(tmp,if(!isstring(#),textformat(#,6),Dq+#+Dq));
+ if(length(tmp)==1,
+ tmp=tmp_1;
+ );
+ tmp=nm+"="+text(tmp);
+ parse(tmp);
+ if(disp==1, // 15.11.24
+ println(nm+" is : ");
+ println(parse(nm));
+ );
+ );
+ parse(nm);
+);
+
+WritetoR(fname,cmdL):=WritetoR(fname,cmdL,[]);
+WritetoR(fname,cmdL,options):=(
+// help:WritetoR("outdata",cmdL);
+ regional(eqL,tmp,tmp1,tmp2,filename,waiting);
+ if(indexof(fname,".")==0,
+ filename=fname+".r";
+ ,
+ filename=fname;
+ );
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ waiting=5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ if(Toupper(substring(tmp1,0,1))=="W",
+ waiting=parse(tmp2);
+ );
+ );
+ SCEOUTPUT = openfile(filename);
+ tmp1=replace(Dirwork,"\","/");
+ tmp="setwd("+Dq+tmp1+Dq+")##";
+ println(SCEOUTPUT,tmp);
+ tmp1=replace(Dirlib,"\","/");
+ tmp="load("+Dq+tmp1;
+ tmp=tmp+"/ketpic_ltd.Rdata"+Dq+")##";
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"Ketinit()##"); // 16.07.07
+ tmp="Setwindow(c(XMIN,XMAX),c(YMIN,YMAX))####"; // 16.06.26from
+ tmp=Assign(tmp,["XMIN",XMIN,"XMAX",XMAX,"YMIN",YMIN,"YMAX",YMAX]);
+ println(SCEOUTPUT,tmp);
+ forall(cmdL,
+ println(SCEOUTPUT,#+"##");
+ );
+ closefile(SCEOUTPUT);
+// flg=0;
+// tmp1=floor(waiting*1000/WaitUnit);
+// repeat(tmp1,
+// if(flg==0,
+// tmp=load(filename);
+// if(length(tmp)>0,
+// flg=1;
+// ,
+// wait(WaitUnit);
+// );
+// );
+// );
+);
+
+kcR(path,fname):=kcR(path,fname,[]);
+kcR(path,fname,optionorg):=(
+//help:kcR(PathR,"boxdata");
+//help:kcR(options=["m/r","Wait=10"]);
+ regional(options,tmp,tmp1,tmp2,eqL,strL,filename,ferr,flg);
+ if(indexof(fname,".")==0,
+ filename=fname+".r";
+ ,
+ filename=fname;
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ );
+ flg=0;
+ forall(strL,
+ if(Toupper(substring(#,0,1))=="R",
+ flg=0;
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="M",
+ flg=1;
+ options=remove(options,[#]);
+ );
+ );
+ if(flg==0,
+ tmp2=replace(filename,".r",".txt");
+ tmp1=load(tmp2);
+ if(length(tmp1)==0,
+ flg=1;
+ );
+ );
+ if(flg==1,
+ tmp1=""; // 15.10.08 from
+ if(iswindows(),
+ tmp2=Batparent;
+ ,
+ tmp2=Shellparent;
+ );
+ flg=0;
+ forall(reverse(1..length(tmp2)),
+ if(flg==0,
+ tmp=substring(tmp2,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ tmp1=substring(tmp2,0,#-1);
+ tmp2=substring(tmp2,#,length(tmp2));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(tmp1);
+ ); // 15.10.08 to
+ ferr="errormessageR.txt";//16.10.22from
+ SCEOUTPUT=openfile(ferr);
+ closefile(SCEOUTPUT);//16.10.22uptp
+ if(iswindows(),
+ SCEOUTPUT = openfile("kc.bat");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=Dq+path+"\R"+Dq+" --vanilla --slave < "+filename+" 2> "+ferr;
+ //16.10.22
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29,06.05
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ if(PathR=="",tmp="R",tmp=PathR);//16.10.20
+ tmp=tmp+" --vanilla --slave < "+filename+" >& "+ferr;//16.10.22
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29,06.05
+ );
+ wait(WaitUnit);
+ setdirectory(Dirwork);
+ );
+);
+
+Dataframe(nmL,dL):=Dataframe(nmL,dL,[]);
+Dataframe(nmL,dL,options):=(
+//help:Dataframe(["name","no1","no2"],dtL);
+//help:Dataframe(options=["Dig=5"]);
+ regional(dig,tmp,tmp1,tmp2,out);
+ dig=5;
+ tmp=Divoptions(options);
+ tmp=tmp_5;
+ forall(tmp,
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=indexof(#,"=");
+ tmp2=substring(#,tmp2,length(#));
+ if(tmp1=="D",
+ dig=parse(tmp2);
+ );
+ );
+ out="data.frame(";
+ forall(1..(length(nmL)),
+ tmp1=nmL_#;
+ tmp2=column(dL,#);
+ tmp2=apply(tmp2,if(isstring(#),Dq+#+Dq,format(#,dig)));
+ tmp=tmp1+"="+tmp2+",";
+ out=out+tmp;
+ );
+ out=substring(out,0,length(out)-1)+")";
+ out=replace(out,"[","c(");
+ out=replace(out,"]",")");
+);
+
+CalcbyR(name,cmd):=CalcbyR(name,PathR,cmd,[]);
+CalcbyR(name,Arg1,Arg2):=(
+ if(isstring(Arg1),
+ CalcbyR(name,Arg1,Arg2,[]);
+ ,
+ CalcbyR(name,PathR,Arg1,Arg2);
+ );
+);
+CalcbyR(name,path,cmd,optionorg):=(
+//help:CalcbyR("Pr",cmd);
+//help:CalcbyR(options=["m/r","Wait=2","Cat=yes","File=result" ]);
+ regional(options,tmp,tmp1,tmp2,tmp3,realL,strL,eqL,
+ cat,dig,flg,wflg,file,nc,arg,cmdR,cmdlist,wfile,ext,waiting);
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ realL=tmp_6;
+ strL=tmp_7;
+ dig=5;
+ cat="Y";
+ wfile="";
+ ext=".txt";
+ waiting=2;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="C",
+ cat=Toupper(substring(tmp2,0,1));
+ options=remove(options,[#]);
+ );
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="E",
+ if(indexof(tmp2,".")==0,ext="."+tmp2,ext=tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="D",
+ dig=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="F",
+ wfile=tmp2;
+ options=remove(options,[#]);
+ );
+ );
+ if(wfile=="",
+ if(cat=="Y",
+ wfile=Fhead+name+ext;
+ ,
+ wfile="resultR"+ext;
+ );
+ );
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ if(CONTINUED==0,
+ if((wflg==0) & (cat!="N"), // 16.11.13
+ tmp=load(wfile);
+ if(length(tmp)==0,wflg=1);
+ );
+ );
+ file=Fhead+name;
+// cmdR=flatten(cmd);
+ cmdR=cmd;
+ cmdlist=[];
+ if(dig>5, //16.10.28from
+ cmdlist=append(cmdlist,"options(digits="+text(dig+2)+");");
+ ); //16.10.28upto
+ forall(1..floor(length(cmdR)/2),nc, //17.05.18
+ tmp1=cmdR_(2*nc-1);
+ tmp1=replace(tmp1,LFmark,""); // 16.06.12
+ if(nc==length(cmdR)/2, //16.10.23from
+// if(indexof(tmp1,"=")==0,tmp1="="+tmp1);//16.12.20
+ ); //16.10.23uptp
+ if(substring(tmp1,0,1)=="=",
+ tmp1=name+tmp1;
+ );
+ tmp2=cmdR_(2*nc); // list of argments
+ tmp3="";
+ forall(tmp2,arg,
+ if(isstring(arg),
+ tmp3=tmp3+replace(arg,"'",Dq)+",";
+ ,
+ if(length(arg)==1,
+ tmp3=tmp3+textformat(arg,dig)+",";
+ ,
+ tmp3=tmp3+"c(";
+ forall(arg,
+ tmp3=tmp3+textformat(#,dig)+",";
+ );
+ tmp3=substring(tmp3,0,length(tmp3)-1)+")"+",";
+ );
+ );
+ );
+ if(length(tmp3)>0,
+ tmp3=substring(tmp3,0,length(tmp3)-1);
+ tmp1=tmp1+"("+tmp3+")";
+ );
+ cmdlist=append(cmdlist,tmp1);
+ );
+ if(CONTINUED==1,
+ ComOutList=concat(ComOutList,cmdlist);
+ ,
+ if(cat=="Y", //16.10.23from
+ tmp="sharp=rawToChar(as.raw(35))";
+ cmdlist=append(cmdlist,tmp);
+ tmp="sharps=paste(sharp,sharp,'\n',sep='')";
+ cmdlist=append(cmdlist,tmp);
+ cmdlist=append(cmdlist,"if(is.matrix("+name+")){");
+ cmdlist=append(cmdlist," "+name+"=as.data.frame("+name+")");
+ cmdlist=append(cmdlist,"}");
+ cmdlist=append(cmdlist,"if(is.list("+name+")){");
+ tmp=" cat(names("+name+"),file='"+wfile+"',sep=',')";
+ cmdlist=append(cmdlist,tmp);
+ tmp=" cat(sharps,file='"+wfile+"',append=TRUE)";
+ cmdlist=append(cmdlist,tmp);
+ cmdlist=append(cmdlist," for(ii in 1:length("+name+")){");
+ tmp=" cat("+name+"[[ii]],file='"+wfile+"',";
+ tmp=tmp+"sep=',',append=TRUE)";
+ cmdlist=append(cmdlist,tmp);
+ tmp=" cat(sharps,file='"+wfile+"',append=TRUE)";
+ cmdlist=append(cmdlist,tmp);
+ cmdlist=append(cmdlist," }");
+ cmdlist=append(cmdlist,"}else{");
+ tmp=" cat("+name+",file='"+wfile+"',sep=',')";
+ cmdlist=append(cmdlist,tmp);
+ tmp=" cat(sharps,file='"+wfile+"',append=TRUE)";
+ cmdlist=append(cmdlist,tmp);
+ cmdlist=append(cmdlist,"}");
+ tmp="cat('////',file='"+wfile+"',sep=',',append=TRUE)";
+ cmdlist=append(cmdlist,tmp);
+ ); //16.10.23upto
+ if(cat!="Y", // 16.12.18
+ cmdlist=append(cmdlist,"cat('////',file='"+wfile+"',sep='')");
+ );
+ cmdlist=append(cmdlist,"quit()");
+ if(wflg==0,
+ tmp1=load(file+".r");
+ if(length(tmp1)==0,
+ wflg=1;
+ ,
+ tmp1=tokenize(tmp1,"####"); // 15.09.25 from
+ tmp1=tokenize(tmp1_2,"##");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ if(length(tmp1)!=length(cmdlist),
+ wflg=1;
+ ,
+ tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#);
+ if(length(tmp)>0, wflg=1);
+ );
+ ); // 15.09.25 to
+ );
+ if(wflg==0,wflg=-1); // 15.10.16
+ if(wflg==1,
+ if(length(wfile)>0, // 15.10.05
+ SCEOUTPUT=openfile(wfile);
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ );
+ WritetoR(file+".r",cmdlist);
+ kcR(PathR,file,concat(options,["m"])); // 15.09.25
+ );
+ flg=0;
+ tmp1=floor(waiting*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp=load(wfile);
+ if(length(tmp)>=4,
+ tmp2=substring(tmp,length(tmp)-4,length(tmp));
+ if(tmp2=="////",
+ tmp=substring(tmp,0,length(tmp)-4);
+ flg=1;
+ tmp2=#*WaitUnit/1000;
+ );
+ ,
+ if(wflg==-1,
+ flg=-1;
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ );
+ if(flg<=0,
+ ErrFlag=1;
+ if(flg==-1,
+ println(wfile+" does not exist");
+ ,
+ tmp="("+text(waiting)+" s )";
+ println(wfile+" not generated "+tmp);
+ tmp=load("errormessageR.txt");//16.10.22
+ if(length(tmp)>1,println(tmp));//16.10.22
+ );
+ ,
+ println(" CalcbyR succeeded "+name+" ("+text(tmp2)+" sec)");
+ if(cat=="Y", // 16.10.29,11.25
+ tmp1=tokenize(tmp,"##"); //16.10.23from
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ tmp2=[];
+ forall(tmp1,tmp3,
+ if(!isstring(tmp3),tmp3=format(tmp3,dig));
+ tmp=tokenize(tmp3,",");
+ tmp=apply(tmp,if(isstring(#),Dq+#+Dq,format(#,dig)));
+ tmp2=append(tmp2,tmp);
+ );
+ if(length(tmp2)==1,
+ tmp2=tmp2_1;
+ if(length(tmp2)==1,tmp2=tmp2_1);//16.10.24
+ ,
+ tmp2=[tmp2_1,tmp2_(2..(length(tmp2)))];
+ );
+ tmp=name+"="+text(tmp2); //16.10.23upto
+ parse(tmp);
+ );
+ );
+ );
+);
+
+Rfun(name,fun,argL):=Rfun(name,fun,argL,[]);//16.10.22
+Rfun(name,fun,argL,optionorg):=(
+//help:Rfun("1","rnorm",[10]);
+//help:Rfun(options=["Disp=y"]);
+ regional(nm,options,eqL,disp,cmdL,
+ tmp,tmp1,tmp2);
+ nm="R"+name;
+ options=optionorg;
+ tmp=divoptions(options);
+ precise=6;
+ disp=1;
+ pack=[];
+ set=[];
+ add="";
+ eqL=tmp_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if((tmp1=="DIS") % (tmp1=="DSP") ,
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="F") % (tmp=="N"),
+ disp=0;
+ );
+ options=remove(options,[#]);
+ );
+ );
+ cmdL=[];
+ cmdL=concat(cmdL,[
+ nm+"="+fun,argL
+ ]);
+ options=concat(options,["Wait=2"]);
+ CalcbyR(nm,cmdL,options);
+ if(ErrFlag==0,
+ if(disp==1, // 15.11.24
+ println(nm+" is : ");
+ println(parse(nm));
+ );
+ );
+ parse(nm);
+);
+
+Readcsv(file):=Readcsv(Dirwork,file,[]);
+Readcsv(Arg1,Arg2):=(
+ if(isstring(Arg2),
+ Readcsv(Arg1,Arg2,[]);
+ ,
+ Readcsv(Dirwork,Arg1,Arg2);
+ );
+);
+Readcsv(pathorg,file,optionorg):=(
+//help:Readcsv("ex.csv");
+//help:Readcsv(directory,"ex.csv");
+//help:Readcsv(options=["Head=yes","Sep=-999","Flat=no","Use=R"]);
+ regional(path,fname,fout,options,eqL,header,cmdL,sep,
+ dt,nrow,tmp,tmp1,tmp2,csv,use,flat);
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ header=1;
+ sep="-999";
+ csv="Y"; // 16.12.12
+ use="R";
+ flat="N";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ tmp=Toupper(substring(tmp1,0,2));
+ if(tmp=="HE",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="F" % tmp=="N",
+ header=0;
+ options=remove(options,[#]);
+ );
+ );
+// if(tmp=="WA", // removed:17.02.19
+// waiting=parse(tmp2);
+// options=remove(options,[#]);
+// );
+ if(tmp=="SE",
+ sep=tmp2;
+ options=remove(options,[#]);
+ );
+ if(tmp=="CS",
+ csv=Toupper(substring(tmp2,0,1));
+ options=remove(options,[#]);
+ );
+ if(tmp=="US",
+ use=Toupper(substring(tmp2,0,1));
+ options=remove(options,[#]);
+ );
+ if(tmp=="FL",
+ flat=Toupper(substring(tmp2,0,1));
+ options=remove(options,[#]);
+ );
+ );
+ if(flat=="Y",csv="N");
+ sep=","+sep;
+ tmp=indexof(file,".");
+ if(tmp==0,
+ fname=file+".csv";
+ fout=file+"sep.csv";
+ ,
+ fname=file;
+ tmp1=substring(file,0,tmp-1);
+ tmp2=substring(file,tmp-1,length(file));
+ fout=tmp1+"sep"+tmp2;
+ );
+ path=pathorg;
+ if(!isexists(path,fname),
+ println(path+" "+fname+" not found");
+ ,
+ path=replace(path,"\","/");
+ if(use=="S",
+ cmdL=[ // 16.12.20from
+ "cd('"+path+"')",[],
+ "Dt=mgetl('"+fname+"');",[],
+ "cd('"+Dirwork+"')",[],
+ "Dt2=[]",[],
+ "for I=1:size(Dt,1),
+ Tmp=Dt(I,:)+'"+sep+"';
+ Dt2=[Dt2;Tmp];
+ end",[],
+ "mputl(Dt2,'"+fout+"')",[]
+ ];
+ CalcbyS("sep",cmdL,options);
+ ,
+ cmdL=[
+ "setwd",[Dq+path+Dq],
+ "tmp1=readLines",[Dq+fname+Dq,"warn=FALSE"],
+ "fun=function(s) paste(s,"+Dq+sep+Dq+",sep="+Dq+Dq+")",[],
+ "tmp2=sapply(tmp1,fun)",[],
+ "writeLines",["tmp2",Dq+fout+Dq]
+ ];
+ CalcbyR("sep",cmdL,concat(options,["Cat=n"]));
+ ); // 16.12.20upto
+ if(ErrFlag==1,
+ println("Readcsv not completed");
+ ,
+ dt=load(fout);
+ dt=tokenize(dt,sep);
+ dt=dt_(1..(length(dt)-1));//16.12.20
+ if(isstring(dt_1),// 17.02.10from
+ if(indexof(dt_1,",")==0,csv="N");
+ ,
+ csv="N";
+ );// 17.02.10upto
+ if(csv=="Y",
+ dt=apply(dt,tokenize(#,","));
+ ,
+ dt=apply(dt,[#]);
+ );
+ forall(1..(length(dt)),nrow,
+ tmp1=dt_nrow;
+ tmp2=[];
+ forall(tmp1,
+ if(!isstring(#),
+ tmp=#;
+ ,
+ if(substring(#,0,1)==Dq,
+ tmp=parse(#);
+ ,
+ tmp=#;
+ );
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ dt_nrow=tmp2;
+ );
+ if(header==0,dt=dt_(2..(length(dt))));
+ if(length(dt)==1,
+ dt=dt_1
+ ,
+ if(length(dt_1)==1,
+ dt=apply(dt,#_1);
+ );
+ );
+ dt;
+ );
+ );
+);
+
+Writecsv(nmL,data,file):=Writecsv(nmL,data,file,[]);
+Writecsv(nmL,dataorg,file,optionorg):=(
+//help:Writecsv([],data,"ex.csv");
+//help:Writecsv(["a","b"],data,"ex.csv");
+//help:Writecsv(optins=["Col=1"]);
+ regional(nameL,data,eqL,strL,ncol,nrow,fname,dig,tmp,tmp1,tmp2);
+ ncol=0; // 17.02.09from
+ dig=5;
+ if(isstring(dataorg),data=parse(dataorg),data=dataorg);
+ if(islist(data_1),
+ ncol=length(data_1);
+ data=flatten(data);
+ ); // 17.02.09upto
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ if(Toupper(substring(tmp1,0,1))=="C",
+ ncol=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ if(indexof(file,".")==0,fname=file+".csv",fname=file);
+ if(ncol==0,ncol=max(1,length(nmL)));
+ tmp1=mod(length(data),ncol);
+ if(tmp1>0,
+ tmp=apply(1..(ncol-tmp1),-1);
+ data=concat(data,tmp);
+ );
+ nrow=length(data)/ncol;
+ if(length(nmL)<ncol,
+ nameL=apply(1..ncol,"c"+text(#));
+// tmp=nameL_length(nameL)+"##";//17.02.09
+ tmp=nameL_(length(nameL));//17.02.09
+ nameL_(length(nameL))=tmp;
+ ,
+ nameL=nmL;
+ );
+ SCEOUTPUT=openfile(fname);
+ tmp=text(nameL);
+ println(SCEOUTPUT,substring(tmp,1,length(tmp)-1));
+ forall(1..nrow,
+ tmp1=data_(((#-1)*ncol+1)..(#*ncol));
+ tmp2="";
+ forall(tmp1,
+ tmp2=tmp2+textformat(#,5)+",";
+ );
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ println(SCEOUTPUT,tmp2);
+ );
+ closefile(SCEOUTPUT);
+);
+
+PlotdataR(name1,func,var):=PlotdataR(name1,PathR,func,var);
+PlotdataR(name1,Arg1,Arg2,Arg3):=(
+ if(islist(Arg3),
+ PlotdataR(name1,PathR,Arg1,Arg2,Arg3);
+ ,
+ PlotdataR(name1,Arg1,Arg2,Arg3,[]);
+ );
+);
+PlotdataR(name1,path,func,variable,optionorg):=(
+//help:PlotdataR("1","dnorm(x)","x");
+//help:PlotdataR(options=["m/r","Num=50","Wait=10"]);
+ regional(options,tmp,tmp1,tmp2,tmp3,name,varstr,flg,Num,
+ Ltype,Noflg,eqL,strL,flg,outreg,filename,wfile,cmdL,waiting);
+ name="grR"+name1;
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ Num=50;
+ waiting=5;
+ outreg=0;
+ flg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ if(Toupper(substring(#,0,1))=="N",
+ Num=parse(tmp1);
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="W",
+ waiting=parse(tmp1);
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="O",
+ tmp=Toupper(substring(tmp1,0,1));
+ if(tmp=="T" % tmp=="Y", outreg=1);
+ options=remove(options,[#]);
+ );
+ );
+ tmp=indexof(variable,"=");
+ if(tmp>0,
+ varstr=variable;
+ ,
+ varstr=variable+"="+textformat([XMIN,XMAX],5);
+ );
+ varstr=replace(varstr,"[","c(");
+ varstr=replace(varstr,"]",")");
+ filename=Fhead+name+".r";
+ wfile=Fhead+name+".txt";
+ cmdL=MkprecommandR();
+ cmdL=concat(cmdL,[
+ name+"=Plotdata",[Dq+func+Dq,Dq+varstr+Dq,Dq+"Num="+text(Num)+Dq],
+ "WriteOutData",[Dq+wfile+Dq,Dq+name+Dq,name]
+ ]);
+ if(ErrFlag==0,
+ CalcbyR(name,cmdL,concat(options,["Cat=middle","Wait="+text(waiting)]));
+ );
+ if(ErrFlag==1,
+ println("PlotdataR not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[wfile]);
+ OutFileList=append(OutFileList,wfile);
+ );
+ ReadOutData(wfile);
+ Extractdata(name,options);
+ tmp=parse(name);
+ tmp1=name+"="+textformat(tmp,5);
+ parse(tmp1);
+ tmp2=apply(tmp,Lcrd(#));
+ tmp2;
+ );
+);
+
+PlotdiscR(nm,fun,varrng):=PlotdiscR(nm,fun,varrng,[]);
+PlotdiscR(nm,fun,varrng,options):=(
+//help:PlotdiscR("1","dbinom(k,10,0.4)","k=[0,10]");
+ regional(name,pb,cmdL,var,range,tmp,tmp1,tmp2,wfile);
+ name="grd"+nm;
+ tmp=indexof(varrng,"=");
+ var=substring(varrng,0,tmp-1);
+ range=parse(substring(varrng,tmp,length(varrng)));
+ if(length(range)==2,
+ range=(range_1)..(range_2);
+ );
+ cmdL=[
+ "fnb=function("+var+") "+fun,[],
+ name+"=sapply",[range,"fnb"]
+ ];
+ wfile=Fhead+name+".txt";
+ if(ErrFlag==0,
+ CalcbyR(name,cmdL,options);
+ );
+ if(ErrFlag==1,
+ println("PlotdiscR not completed");
+ ,
+ tmp1=load(wfile);
+ tmp1=substring(tmp1,0,length(tmp1)-4);
+ tmp1=replace(tmp1,"##","");
+ pb=tokenize(tmp1,",");
+ tmp=apply(range,[#,pb_(#+1)]);
+ Listplot(name,tmp,options);
+ );
+);
+
+Boxplot(nm,dataorg,ypos,dy):=Boxplot(nm,dataorg,ypos,dy,[]);
+Boxplot(nm,dataorg,ypos,dy,optionorg):=(
+//help:Boxplot("1",dt,2,1/2,[""]);
+ regional(options,name,data,bp,cmdL,waiting,tmp,tmp1,tmp2,tmp3,tmp4,
+ out,eqL,strL,pstr,ext,file,flg,wrflg);
+ name="bp"+nm;
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ waiting=3;
+ wrflg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ if(Toupper(substring(tmp1,0,1))=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="R",
+ wrflg=-1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="M",
+ wrflg=1;
+ options=remove(options,[#]);
+ );
+ );
+ data=dataorg;
+ if(isstring(data),
+ if(indexof(data,".")==0,data=data+".dat");
+ if(iswindows(), // 15.11.10
+ data=replace(data,"/","\");
+ flg="\";
+ ,
+ data=replace(data,"\","/");
+ flg="/";
+ );
+ forall(reverse(1..length(data)),
+ if(length(flg)>0,
+ tmp=substring(data,#-1,#);
+ if(tmp==flg,
+ tmp3=substring(data,0,#-1);
+ tmp4=substring(data,#,length(data));
+ if(indexof(tmp3,":")==0, // 11.11.10
+ tmp=substring(tmp3,0,1);
+ if(tmp!=flg,
+ tmp3=Dirwork+flg+tmp3;
+ );
+ );
+ flg="";
+ );
+ );
+ );
+ if(length(flg)>0,
+ tmp3=Dirwork; //15.11.10
+ tmp4=data;
+ );
+ setdirectory(tmp3);
+ tmp=load(tmp4);
+ if(length(tmp)==0, ErrFlag=2); // 15.11.07 upto
+ setdirectory(Dirwork);
+ ,
+ file=Fhead+name+".dat";
+ tmp=load(file);
+ if(length(tmp)>0,
+ tmp1=tokenize(tmp,",");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ ,
+ tmp1=[];
+ );
+ flg=0;
+ if(length(tmp1)==length(data),
+ tmp=tmp1-data;
+ tmp=select(tmp,#!=0);
+ if(length(tmp)>0,flg=1);
+ ,
+ flg=1;
+ );
+ if(flg==1,
+ SCEOUTPUT=openfile(file);
+ forall(data,
+ print(SCEOUTPUT,textformat(#,5)+",");
+ );
+ println(SCEOUTPUT,"////");
+ closefile(SCEOUTPUT);
+// wait(WaitUnit);
+ );
+ data=file;
+ );
+ data=replace(data,"\","/");
+ cmdL=[
+ "tmp=readLines",[Dq+data+Dq, "warn=FALSE"],
+ "tmp=substring",["tmp",1,"nchar(tmp)-4"],
+ "data=strsplit",["tmp",Dq+","+Dq,"fix=TRUE"],
+ "data=data[[1]]",[],
+ "fun=function(s) eval(parse(text=s))",[],
+ "data=sapply",["data","fun"],
+ "data=data[!is.na(data)]",[],
+ "tmp=boxplot",["data","plot=FALSE"],
+ "tmp1=tmp$stat",[],
+ "tmp2=tmp$out",[],
+ name+"=c(tmp1,tmp2)",[]
+ ];
+ file=Fhead+name+".txt";
+ options=append(options,"Wait="+text(waiting));
+ if(wrflg==1,options=append(options,"m"));
+ if(wrflg==-1,options=append(options,"r"));
+ if(ErrFlag==0,
+ CalcbyR(name,cmdL,options);
+ );
+ if(ErrFlag>0,
+ if(ErrFlag==1,println("Boxplot not completed"));
+ if(ErrFlag==2,println(Dq+data+Dq+" not found"));
+ ,
+// tmp=load(file);//16.10.23from
+// println([1449,tmp]);
+// tmp=replace(tmp,"/","");
+// tmp=tokenize(tmp,",");
+// tmp=name+"="+textformat(tmp,5);
+// parse(tmp);//16.10.23upto
+ bp=parse(name);
+ pstr="[";
+ tmp1=[bp_1,ypos-dy/2];
+ tmp2=[bp_1,ypos+dy/2];
+ Listplot(name+text(1),[tmp1,tmp2],["Msg=no"]);
+ pstr=pstr+Dq+"sg"+name+text(1)+Dq+",";
+ tmp1=[bp_2,ypos-dy];
+ tmp2=[bp_2,ypos+dy];
+ tmp3=[bp_4,ypos+dy];
+ tmp4=[bp_4,ypos-dy];
+ Listplot(name+text(2),[tmp1,tmp2,tmp3,tmp4,tmp1],["Msg=no"]);
+ pstr=pstr+Dq+"sg"+name+text(2)+Dq+",";
+ tmp1=[bp_5,ypos-dy/2];
+ tmp2=[bp_5,ypos+dy/2];
+ Listplot(name+text(3),[tmp1,tmp2],["Msg=no"]);
+ pstr=pstr+Dq+"sg"+name+text(3)+Dq+",";
+ tmp1=[bp_3,ypos-dy];
+ tmp2=[bp_3,ypos+dy];
+ Listplot(name+text(4),[tmp1,tmp2],["dr,2","Msg=no"]);
+ pstr=pstr+Dq+"sg"+name+text(4)+Dq+",";
+ tmp1=[bp_1,ypos];
+ tmp2=[bp_2,ypos];
+ Listplot(name+text(5),[tmp1,tmp2],["da","Msg=no"]);
+ pstr=pstr+Dq+"sg"+name+text(5)+Dq+",";
+ tmp1=[bp_4,ypos];
+ tmp2=[bp_5,ypos];
+ Listplot(name+text(6),[tmp1,tmp2],["da","Msg=no"]);
+ pstr=pstr+Dq+"sg"+name+text(6)+Dq+",";
+ out=bp_(6..length(bp));
+ if(length(out)>0,
+ out=apply(out,[#,ypos]);
+ Pointdata(name+text(1),out,[0,"Size=4"]);
+ );
+ pstr=substring(pstr,0,length(pstr)-1)+"]";
+ println("generate totally "+name);
+ tmp=name+"="+pstr;
+ [bp_(1..5),out];
+ );
+);
+
+Histplot(nm,dataorg):=Histplot(nm,dataorg,[]);
+Histplot(nm,dataorg,optionorg):=(
+//help:Histplot("1",data(fillename));
+//help:Histplot(options=["Breaks=","Den=no","Rel=no"]);
+ regional(options,name,data,waiting,hp,cmdL,tmp,tmp1,tmp2,tmp3,tmp4,
+ out,eqL,strL,breaks,bdata,cdata,pstr,file,flg,rwflg,density,relative);
+ name="hp"+nm;
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ breaks = "breaks="+Dq+"Sturges"+Dq;
+ density=0;
+ relative=0;
+ waiting=3;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,tmp,length(#));
+ if(Toupper(substring(#,0,1))=="B",
+ if(substring(tmp1,0,1)=="[",
+ tmp1="c("+substring(tmp1,1,length(tmp1)-1)+")";
+ );
+ breaks="breaks="+tmp1;
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="D",
+ tmp2=Toupper(substring(tmp1,0,1));
+ if(tmp2=="T" % tmp2=="Y",
+ density=1;
+ );
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="R",
+ tmp2=Toupper(substring(tmp1,0,1));
+ if(tmp2=="T" % tmp2=="Y",
+ relative=1;
+ );
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="W",
+ waiting=parse(tmp1);
+ options=remove(options,[#]);
+ );
+ );
+ wrflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="R",
+ wrflg=-1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="M",
+ wrflg=1;
+ options=remove(options,[#]);
+ );
+ );
+ data=dataorg;
+ if(isstring(data),
+ if(indexof(data,".")==0,data=data+".csv");
+ if(iswindows(), // 15.11.10
+ data=replace(data,"/","\");
+ flg="\";
+ ,
+ data=replace(data,"\","/");
+ flg="/";
+ );
+ forall(reverse(1..length(data)),
+ if(length(flg)>0,
+ tmp=substring(data,#-1,#);
+ if(tmp==flg,
+ tmp3=substring(data,0,#-1);
+ tmp4=substring(data,#,length(data));
+ if(indexof(tmp3,":")==0, // 11.11.10
+ tmp=substring(tmp3,0,1);
+ if(tmp!=flg,
+ tmp3=Dirwork+flg+tmp3;
+ );
+ );
+ flg="";
+ );
+ );
+ );
+ if(length(flg)>0,
+ tmp3=Dirwork; //15.11.10
+ tmp4=data;
+ );
+ setdirectory(tmp3);
+ tmp=load(tmp4);
+ if(length(tmp)==0, ErrFlag=2); // 15.11.07 upto
+ setdirectory(Dirwork);
+ ,
+ file=Fhead+name+".dat";
+ tmp=load(file);
+ if(length(tmp)>0,
+ tmp1=tokenize(tmp,",");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ ,
+ tmp1=[];
+ );
+ flg=0;
+ if(length(tmp1)==length(data),
+ tmp=tmp1-data;
+ tmp=select(tmp,#!=0);
+ if(length(tmp)>0,flg=1);
+ ,
+ flg=1;
+ );
+ if(flg==1,
+ SCEOUTPUT=openfile(file);
+ forall(data,
+ print(SCEOUTPUT,textformat(#,5)+",");
+ );
+ println(SCEOUTPUT,"////");
+ closefile(SCEOUTPUT);
+// wait(WaitUnit);
+ );
+ data=file;
+ );
+ data=replace(data,"\","/");
+ cmdL=[
+ "tmp=readLines",[Dq+data+Dq, "warn=FALSE"],
+ "tmp=substring",["tmp",1,"nchar(tmp)-4"],
+ "data=strsplit",["tmp",Dq+","+Dq,"fix=TRUE"],
+ "data=data[[1]]",[],
+ "fun=function(s) eval(parse(text=s))",[],
+ "data=sapply",["data","fun"],
+ "data=data[!is.na(data)]",[],
+ "tmp=hist",["data","plot=FALSE",breaks],
+ "tmp1=tmp$breaks",[],
+ "tmp2=tmp$count",[],
+ "tmp3=tmp$density",[],
+ name+"=c(tmp1,tmp2,tmp3)",[]
+ ];
+ file=Fhead+name+".txt";
+ options=append(options,"Wait="+text(waiting));
+ if(wrflg==1,options=append(options,"m"));
+ if(wrflg==-1,options=append(options,"r"));
+ if(ErrFlag==0,
+ CalcbyR(name,cmdL,options);
+ );
+ if(ErrFlag>0,
+ if(ErrFlag==1,println("Histplot not completed"));
+ if(ErrFlag==2,println(Dq+data+Dq+" not found"));
+ ,
+// tmp=load(file);
+// tmp=replace(tmp,"/","");
+// tmp=tokenize(tmp,",");
+// tmp=name+"="+textformat(tmp,5);
+// parse(tmp);
+ hp=parse(name);
+ tmp1=(length(hp)-1)/3+1;
+ tmp2=tmp1+(length(hp)-1)/3;
+ bdata=hp_(1..tmp1);
+ if(density==0,
+ cdata=hp_((tmp1+1)..tmp2);
+ ,
+ cdata=hp_((tmp2+1)..length(hp));
+ );
+ if(relative==1,
+ cdata=cdata/sum(cdata);
+ );
+ options=append(options,"Msg=no"); // 15.10.03
+ pstr="[";
+ forall(1..length(cdata),
+ tmp1=[bdata_#,0];
+ tmp2=[bdata_#,cdata_#];
+ tmp3=[bdata_(#+1),cdata_#];
+ tmp4=[bdata_(#+1),0];
+ Listplot(name+text(#),[tmp1,tmp2,tmp3,tmp4,tmp1],options);
+ pstr=pstr+Dq+"sg"+name+text(#)+Dq+",";
+ );
+ pstr=substring(pstr,0,length(pstr)-1)+"]";
+ println("generate totally "+name);
+ tmp=name+"="+pstr;
+ parse(tmp);
+ [bdata,cdata];
+ );
+);
+
+Scatterplot(nm,file):=Scatterplot(nm,file,[]);
+Scatterplot(nm,file,optionorg):=(
+//help:Scatterplot("1",path+filename);
+//help:Scatterplot(options=["Reg=yes",A,B,C,"Size"=4"]);
+ regional(tmp,tmp1,tmp2,fname,name,reg,eqL,reL,cdysize,
+ options,dtx,dty,nn,mx,my,sx,sy,sxy,rr,aa,bb,size);
+ name="sc"+nm;
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ options=remove(options,reL);
+ cdysize=select(options,indexof(#,"size->")>0);
+ options=remove(options,cdysize);
+ size=4;
+ reg="yes";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="R",
+ reg=tmp2;
+ options=remove(options,[#]);
+ );
+ if(tmp1=="S",
+ size=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ if(indexof(file,".")==0,
+ fname=file+".csv";
+ ,
+ fname=file;
+ );
+ Readcsv(nm,fname);
+ tmp=concat(options,cdysize);
+ Pointdata(name,parse("rc"+nm),append(tmp,"Size="+text(size)));
+ tmp=parse("rc"+nm);
+ dtx=apply(tmp,#_1);
+ dty=apply(tmp,#_2);
+ nn=length(dtx);
+ mx=sum(dtx)/nn;
+ my=sum(dty)/nn;
+ sx=sqrt(dtx*dtx/nn-mx^2);
+ sy=sqrt(dty*dty/nn-my^2);
+ sxy=dtx*dty/nn-mx*my;
+ rr=sxy/sx/sy;
+ aa=sxy/sx^2;
+ bb=my-aa*mx;
+ tmp=Assign("a*x+b",["a",aa,"b",bb]);
+ if(reg!="no",
+ Plotdata(name,tmp,"x",append(options,"Num=2"));
+ );
+ if(length(reL)>=2,
+ Framedata2(name,[reL_1,reL_2]);
+ if(length(reL)>2,
+ tmp="r="+textformat(rr,3)+",\ y=";
+ tmp=tmp+textformat(aa,3)+"x";
+ if(bb>0,tmp=tmp+"+",tmp=tmp+"-");
+ tmp=tmp+textformat(abs(bb),3);
+ Expr([reL_3,"e",tmp]);
+ );
+ );
+ [mx,my,sx,sy,sxy,rr,bb,aa];
+);
+
+Rulerscale(pt,hscale,vscale):=Rulerscale(pt,hscale,vscale,0.1);
+Rulerscale(pt,hscale,vscale,tick):=(
+//help:Rulerscale(A,["r",0,5,1],["s2",0,2,4]);
+//help:Rulerscale(A,["r",0,5,1],["f",10,"a",20,"w2","b"]);
+//help:Rulerscale(A,["r",0,5,1],["r",0,10,1],0.2);
+ regional(pA,pos,mrk,dir,tmp,tmp1,tmp2,tmp3);
+ pA=Lcrd(pt);
+ if(length(hscale)>0,
+ pos=[]; mrk=[]; dir=[];
+ tmp=Toupper(substring(hscale_1,0,1));
+ if(tmp=="R" % tmp=="F",
+ if(tmp=="R",
+ dir="s2";
+ tmp1=hscale_2;
+ tmp2=hscale_3;
+ tmp3=hscale_4;
+ tmp=floor((tmp2-tmp1)/tmp3);
+ pos=apply(0..tmp,tmp1+#*tmp3);
+ mrk=apply(pos,text(#));
+ dir=apply(1..length(pos),"s2");
+ ,
+ forall(2..(length(hscale)-2),
+ tmp1=hscale_(#);
+ tmp2=hscale_(#+1);
+ tmp3=hscale_(#+2);
+ if(isreal(tmp1),
+ pos=append(pos,tmp1);
+ if(isstring(tmp3),
+ dir=append(dir,tmp2);
+ mrk=append(mrk,tmp3);
+ ,
+ dir=append(dir,"s2");
+ mrk=append(mrk,tmp2);
+ );
+ );
+ );
+ if(isreal(tmp2),
+ pos=append(pos,tmp2);
+ dir=append(dir,"s2");
+ mrk=append(mrk,tmp3);
+ );
+ );
+ ,
+ pos=hscale_(2..length(hscale));
+ dir=apply(pos,"s2");
+ mrk=apply(pos,text(#));
+ );
+ pos=apply(pos,[#,pA_2]);
+ forall(1..length(pos),
+ Expr([pos_#,dir_#,mrk_#]);
+ tmp1=pos_#;
+ tmp2=pos_#-[0,tick/SCALEY];
+ Listplot("rsh"+text(#),[tmp1,tmp2],["Msg=no"]);
+ );
+ );
+ if(length(vscale)>0,
+ pos=[]; mrk=[]; dir=[];
+ tmp=Toupper(substring(vscale_1,0,1));
+ if(tmp=="R" % tmp=="F",
+ if(tmp=="R",
+ dir="w2";
+ tmp1=vscale_2;
+ tmp2=vscale_3;
+ tmp3=vscale_4;
+ tmp=floor((tmp2-tmp1)/tmp3);
+ pos=apply(0..tmp,tmp1+#*tmp3);
+ mrk=apply(pos,text(#));
+ dir=apply(1..length(pos),"w2");
+ ,
+ forall(2..(length(vscale)-2),
+ tmp1=vscale_(#);
+ tmp2=vscale_(#+1);
+ tmp3=vscale_(#+2);
+ if(isreal(tmp1),
+ pos=append(pos,tmp1);
+ if(isstring(tmp3),
+ dir=append(dir,tmp2);
+ mrk=append(mrk,tmp3);
+ ,
+ dir=append(dir,"w2");
+ mrk=append(mrk,tmp2);
+ );
+ );
+ );
+ if(isreal(tmp2),
+ pos=append(pos,tmp2);
+ dir=append(dir,"w2");
+ mrk=append(mrk,tmp3);
+ );
+ );
+ ,
+ pos=vscale_(2..length(vscale));
+ dir=apply(pos,"w1");
+ mrk=apply(pos,text(#));
+ );
+ pos=apply(pos,[pA_1,#]);
+ forall(1..length(pos),
+ Expr([pos_#,dir_#,mrk_#]);
+ tmp1=pos_#;
+ tmp2=pos_#-[tick/SCALEX,0];
+ Listplot("rsv"+text(#),[tmp1,tmp2],["Msg=no"]);
+ );
+ );
+);
+
+MkprecommandR():=MkprecommandR(5); // 15.02.01
+MkprecommandR(prec):=(
+ regional(cmdL,Plist,Pnamelist,Pvaluelist,tmp,tmp1,tmp2);
+ Plist=[];
+ Pnamelist=[];
+ Pvaluelist=[];
+ forall(remove(allpoints(),[SW,NE]),
+ tmp=Lcrd(#);
+ tmp1=format(re(tmp_1),prec);// 15.02.05
+ tmp2=format(re(tmp_2),prec);
+ tmp="c("+tmp1+","+tmp2+")";
+ Plist=append(Plist,#.name+"="+tmp);
+ Pnamelist=append(Pnamelist,#.name);
+ Pvaluelist=append(Pvaluelist,tmp);
+ );
+ cmdL=[];
+ forall(1..length(Plist),
+ cmdL=concat(cmdL,[Plist_#,[]]);
+ cmdL=concat(cmdL,
+ ["Assign("+Dq+Pnamelist_#+Dq+","+Pvaluelist_#+")",[]]);
+ );
+ tmp2=sort(apply(VLIST,#_1)); // 16.02.03 from
+ tmp1=[];
+ forall(tmp2,tmp,
+ tmp1=concat(tmp1,select(VLIST,#_1==tmp));
+ );
+ VLIST=tmp1;// 16.02.03 upto
+ forall(VLIST,
+ tmp=Rform(#_1);
+ tmp1=#_2; // 15.02.06
+ if(!isstring(tmp1),
+ if(islist(tmp1),
+ tmp2="[";
+ forall(tmp1,
+ if(abs(#)<10^(-5), // 16.01.30
+ tmp2=tmp2+"0,";
+ ,
+ tmp2=tmp2+format(#,prec)+",";
+ );
+ );
+ tmp1=substring(tmp2,0
+ ,length(tmp2)-1)+"]";
+ ,
+ tmp1=format(tmp1,prec);
+ );
+ );
+ cmdL=concat(cmdL,["eval(parse(text="+tmp+Dq+tmp1+Dq+")",[]]);
+ tmp=substring(tmp,0,length(tmp)-1);
+ cmdL=concat(cmdL,
+ ["Assign("+Dq+tmp+Dq+","+tmp1+")",[]]); // 15.01.27
+ );
+ forall(OutFileList,
+ cmdL=concat(cmdL,["tmp=ReadOutData",[Dq+#+Dq]]);
+ );
+// forall(FUNLIST, // 16.04.23from
+// cmdL=concat(cmdL,[#,[]]);
+// ); // 16.02.17 upto
+// forall(GLIST,
+// tmp1=Rform(#);
+// cmdL=concat(cmdL,[tmp1,[]]);
+// );// 16.04.23upto
+ cmdL;
+);
+
+MkprecommandS():=MkprecommandS(5);
+MkprecommandS(prec):=(
+ regional(cmdL,Plist,Pnamelist,Pvaluelist,tmp,tmp1,tmp2);
+ cmdL=[];
+ Plist=[];
+ Pnamelist=[];
+ Pvaluelist=[];
+ forall(remove(allpoints(),[SW,NE]),
+ tmp=Lcrd(#);
+ tmp1=format(re(tmp_1),prec);// 15.02.05
+ tmp2=format(re(tmp_2),prec);
+ tmp="["+tmp1+","+tmp2+"]";
+ Plist=append(Plist,#.name+"="+tmp);
+ Pnamelist=append(Pnamelist,#.name);
+ Pvaluelist=append(Pvaluelist,tmp);
+ );
+ forall(1..length(Plist),
+ cmdL=concat(cmdL,[Plist_#,[]]);
+ cmdL=concat(cmdL,["Assignrep('"+Pnamelist_#+"',"+Pvaluelist_#+")",[]]);
+ );
+ tmp2=sort(apply(VLIST,#_1)); // 16.02.03 from
+ tmp1=[];
+ forall(tmp2,tmp,
+ tmp1=concat(tmp1,select(VLIST,#_1==tmp));
+ );
+ VLIST=tmp1;// 16.02.03 upto
+ forall(VLIST,
+ tmp=Sciform(#_1);
+ tmp1=#_2; // 15.02.06
+ if(!isstring(tmp1),
+ if(islist(tmp1),
+ if(!isstring(tmp1_1), // 16.11.14
+ tmp2="[";
+ forall(tmp1,
+ if(abs(#)<10^(-prec), // 16.01.30
+ tmp2=tmp2+"0,";
+ ,
+ tmp2=tmp2+format(#,prec)+",";
+ );
+ );
+ tmp1=substring(tmp2,0,length(tmp2)-1)+"]";
+ ,
+ tmp2="list("; // 16.11.14from
+ forall(tmp1,
+ tmp2=tmp2+#+",";
+ );
+ tmp1=substring(tmp2,0,length(tmp2)-1)+")";
+ ); // 16.11.14upto
+ ,
+ tmp1=format(tmp1,prec);
+ );
+ );
+ cmdL=concat(cmdL,[tmp+"evstr('"+tmp1+"')",[]]);
+ tmp=substring(tmp,0,length(tmp)-1);
+ cmdL=concat(cmdL,["Assignrep('"+tmp+"',"+tmp1+")",[]]); // 15.01.27
+ );
+ forall(OutFileList,
+ tmp=["tmp=ReadOutData",[Dq+#+Dq],
+ "if length(tmp(1))>8,execstr(tmp),end",[]];
+ cmdL=concat(cmdL,tmp);
+ );
+ forall(FUNLIST, // 16.02.17 from
+ cmdL=concat(cmdL,[#,[]]);
+ ); // 16.02.17 upto
+ forall(GLIST,
+ tmp1=Sciform(#);
+ cmdL=concat(cmdL,[tmp1,[]]);
+ );
+ cmdL;
+);
+
+PlotdataS(name1,func,var):=PlotdataS(name1,func,var,[]);
+PlotdataS(nm,fun,variable,optionorg):=(
+//help:PlotdataS("1","besselj(1,x)","x");
+//help:PlotdataS(options=["m/r","Num=50","Wait=5","Mx=no"]);
+ regional(options,name,varstr,Num,waiting,mxcheck,outreg,
+ eqL,strL,fname,tmp,tmp1,tmp2,tmp3,cmdL,flg,wflg);
+ name="grsc"+nm;
+ fname=Fhead+name+".txt";
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ Num=50;
+ waiting=5;
+ mxcheck=0; // 16.03.02
+ outreg=0;
+ flg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="N",
+ Num=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="O",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", outreg=1);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="M",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", mxcheck=1);
+ options=remove(options,[#]);
+ );
+ );
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(length(#)==0,
+ options=remove(options,[#]);
+ );
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ tmp=indexof(variable,"=");
+ if(tmp>0,
+ varstr=variable;
+ ,
+ varstr=variable+"="+textformat([XMIN,XMAX],5);
+ );
+ cmdL=MkprecommandS();
+ cmdL=concat(cmdL,[
+ name+"=Plotdata",[Dq+fun+Dq,Dq+varstr+Dq,Dq+"Num="+text(Num)+Dq],
+ "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name]
+ ]);
+ ErrFlag=0; // 16.03.02 from
+ if(mxcheck==1,
+ Mxfun(name,fun,[],["Disp=n"]);
+ tmp=parse("mx"+name);
+ if(!isstring(tmp),ErrFlag=1);
+ );
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));// 16.03.02 upto
+ if(ErrFlag==0,
+ CalcbyS(name,cmdL,concat(options,["cat=middle","Wait="+text(waiting)]));
+ );
+ if(ErrFlag==1,
+ println(" PlotdataS not completed");
+ ,
+ if(outreg==1, // 2016.03.02 ( // )
+ OutFileList=remove(OutFileList,[wfile]);
+ OutFileList=append(OutFileList,wfile);
+ );
+ ReadOutData(fname);
+ Extractdata(name,options);
+ tmp=parse(name);
+ tmp1=name+"="+textformat(tmp,5);
+ parse(tmp1);
+// Addgraph(name); // 16.04.04
+ tmp2=apply(tmp,Lcrd(#));
+ tmp2;
+ );
+);
+
+Implicitplot(nm,fun,varx,vary):=
+ Implicitplot(nm,fun,varx,vary,[]);
+Implicitplot(nm,fnorg,varx,vary,optionorg):=(
+//help:Implicitplot("1","3*x^2+y^2=1","x=[-3,3]","y=[-3,3]");
+//help:Implicitplot(options2=["Wait=10","Out=no","Mx=no"]);
+ regional(options,name,fun,waiting,mxcheck,outreg,
+ eqL,reL,strL,fname,var,rng,val,tmp,tmp1,tmp2,cmdL,flg,wflg);
+ name="imp"+nm;
+ fname=Fhead+name+".txt";
+ fun=fnorg;
+ tmp=indexof(fun,"=");
+ if(tmp>0,
+ tmp1=substring(fun,0,tmp-1);
+ tmp2=substring(fun,tmp,length(fun));
+ fun=tmp1+"-("+tmp2+")";
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=5; // 16.02.29
+ mxcheck=0; // 16.02.29
+ outreg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,2));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="WA",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="OU",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", outreg=1);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="MX",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", mxcheck=1);
+ options=remove(options,[#]);
+ );
+ );
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(length(#)==0,
+ options=remove(options,[#]);
+ );
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ tmp1=Testfunstr(fun,varx,vary);
+ tmp=apply([fun,varx,vary],Dq+#+Dq);
+ tmp_1=Sciform(tmp_1);
+ tmp=concat(tmp,reL);
+// tmp=append(tmp,"Error"); // 16.02.29
+ cmdL=MkprecommandS();
+ cmdL=concat(cmdL,[
+ "evstr",[tmp1,"Error"], // 16.03.15
+ name+"=Implicitplot",tmp, // 16.03.15
+ "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name]
+ ]);
+// tmp=[""];
+ ErrFlag=0; // 16.02.29 from
+ if(mxcheck==1,
+ Mxfun(name,"expand",[fun],["Disp=n"]);
+ tmp=parse("mx"+name);
+ if(!isstring(tmp),ErrFlag=1);
+ ); // 16.02.29 upto
+ options=concat(options,["Wait="+text(waiting)]);
+ if(wflg==1,options=append(options,"m"));
+ if(wflg==-1,options=append(options,"r"));
+ if(ErrFlag==0,
+ CalcbyS(name,cmdL,options);
+ );
+ if(ErrFlag==1,
+ println(" Implicitplot not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[fname]);
+ OutFileList=append(OutFileList,fname);
+ );
+ ReadOutData(fname);
+ Extractdata(name,options);
+ tmp=parse(name);
+ tmp1=name+"="+textformat(tmp,5);
+ parse(tmp1);
+// Addgraph(name); // 16.04.04
+ tmp2=apply(tmp,Lcrd(#));
+ tmp2;
+ );
+);
+
+Hatchdata2(nm,iostr,pltlist):=Hatchdata2(nm,iostr,pltlist,[]);
+Hatchdata2(nm,iostr,pltlist,options):=(
+// help: Hatchdata2("1",["i"],[["crAB"]],["dr,0.7"]);
+ regional(name,Ltype,Noflg,PdL,tmp,tmp1,tmp2,opstr,opcindy,Str,Outflg,Inflg);
+ name="ha"+nm;
+// println("output hatchdata2 "+name);
+ tmp=Divoptions(options);
+ Ltype=tmp_1;
+ Noflg=tmp_2;
+ Inflg=tmp_3;
+ Outflg=tmp_4;
+ if(Inflg==0 & Outflg==0, Inflg=1;Outflg=1); // 15.05.15
+ opstr=tmp_(length(tmp)-1);
+ opcindy=tmp_(length(tmp));
+ Str="Hatchdata(";
+ if(islist(iostr),
+ tmp="list(";
+ forall(iostr,
+ tmp=tmp+Dq+#+Dq+",";
+ );
+ Str=Str+substring(tmp,0,length(tmp)-1)+"),";
+ ,
+ Str=Str+Dq+iostr+Dq+",";
+ );
+ PdL=pltlist;
+ if(isstring(PdL_1) % !islist(PdL),PdL=[PdL]);
+ forall(PdL,tmp1,
+ tmp="list(";
+ forall(tmp1,
+ if(length(#)>1,
+ tmp=tmp+#+",";
+ ,
+ tmp=tmp+Dq+#+Dq+",";
+ );
+ );
+ Str=Str+substring(tmp,0,length(tmp)-1)+"),";
+ );
+ Str=substring(Str,0,length(Str)-1)+opstr+")";
+ if(Noflg<3, // 2015.07.16
+ GLIST=append(GLIST,name+"="+Str);
+ );
+ if(Noflg<2,
+ if(Outflg==1,
+ println("Output Hatchdata2 "+name);
+ SCIWRLIST=append(SCIWRLIST,name);
+ );
+ if(Inflg==1,
+ println("Input Hatchdata2 "+name);
+ if(length(SCIRELIST)==0,
+ ReadOutData(Fnameout);
+ );
+ tmp=parse(name);
+ if(islist(tmp),
+ Extractdata(name,["nodisp"]); // 12.19
+ );
+ SCIRELIST=append(SCIRELIST,name);
+ );
+ );
+ if(Noflg<1,
+ if(isstring(Ltype),
+ Ltype=GetLinestyle(text(Noflg)+Ltype,name);
+ ,
+ if(Noflg==1,Ltype=0);
+ );
+ if(Inflg==1,
+ GCLIST=append(GCLIST,[name,Ltype,opcindy]);
+ );
+ );
+);
+
+Hatchdata(nm,iostr,pltlist):=Hatchdata(nm,iostr,pltlist,[]);
+Hatchdata(nm,iostr,pltlist,optionorg):=(
+//help:Hatchdata("1","ii",[["gr1"],["gr2","n"]]);
+//help:Hatchdata(options=["Wait=5"]);
+ regional(options,name,fun,eqL,reL,strL,outreg,
+ plt,fname,options,tmp,tmp1,tmp2,tmp3,flg,wflg,waiting);
+ name="ha"+nm;
+ fname=Fhead+name+".txt";
+ fun=fnorg;
+ tmp=indexof(fun,"=");
+ if(tmp>0,
+ tmp1=substring(fun,0,tmp-1);
+ tmp2=substring(fun,tmp,length(fun));
+ fun=tmp1+"-("+tmp2+")";
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ waiting=5;
+ outreg=0;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="O",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", outreg=1);
+ options=remove(options,[#]);
+ );
+ );
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(length(#)==0,
+ options=remove(options,[#]);
+ );
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ if(islist(iostr),
+ tmp1=text(apply(iostr,Dq+#+Dq));
+ tmp1=replace(tmp1,"[","list("); //16.02.14
+ tmp1=replace(tmp1,"]",")"); //16.02.14
+ ,
+ tmp1=Dq+iostr+Dq;
+ );
+ if(!islist(pltlist_1),
+ tmp2=apply(pltlist,if(length(#)==1,Dq+#+Dq,Chunderscore(#)));
+ tmp2=text(tmp2);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+"),";
+ ,
+ tmp2="";
+ forall(pltlist,plt,
+ tmp=apply(plt,if(length(#)==1,Dq+#+Dq,Chunderscore(#))); // 16.04.06
+ tmp=text(tmp);
+ tmp="list("+substring(tmp,1,length(tmp)-1)+")";
+ tmp2=tmp2+tmp+",";
+ );
+ );
+ cmdL=MkprecommandS();
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ tmp=[tmp1,tmp2];
+ tmp=concat(tmp,reL);
+ tmp=append(tmp,"Error"); // 16.03.05
+ cmdL=concat(cmdL,[
+ "Setscaling",[SCALEY],
+ "Setunitlen",[Dq+ULEN+Dq],
+ name+"=Hatchdata",tmp, //16.12.23
+ "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name],
+ ]);
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"]));
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS(name,cmdL,options);
+ );
+ if(ErrFlag==1,
+ err("Hatchdata not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[fname]);
+ OutFileList=append(OutFileList,fname);
+ );
+ if(ErrFlag==0,
+ ReadOutData(fname);
+ Extractdata(name,options);
+ );
+ );
+);
+
+Dotfilldata(nm,iostr,pltlist):=
+ Dotfilldata(nm,iostr,pltlist,[]);
+Dotfilldata(nm,iostr,pltlist,optionorg):=(
+//help:Dotfilldata("1","ii",[["sg1"],["sg2"]]);
+//help:Dotfilldata(options=[0.3,"Wait=5"]);
+ regional(options,name,fun,eqL,reL,strL,outreg,
+ plt,fname,options,tmp,tmp1,tmp2,tmp3,flg,
+ wflg,waiting,dense);
+ name="df"+nm;
+ fname=Fhead+name+".txt";
+ fun=fnorg;
+ tmp=indexof(fun,"=");
+ if(tmp>0,
+ tmp1=substring(fun,0,tmp-1);
+ tmp2=substring(fun,tmp,length(fun));
+ fun=tmp1+"-("+tmp2+")";
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ strL=tmp_7;
+ dense=0.3;
+ waiting=5;
+ outreg=0;
+ forall(reL,
+ dense=#;
+ );
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="O",
+ tmp=Toupper(substring(tmp2,0,1));
+ if(tmp=="T" % tmp=="Y", outreg=1);
+ options=remove(options,[#]);
+ );
+ );
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(length(#)==0,
+ options=remove(options,[#]);
+ );
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ if(islist(iostr),
+ tmp1=text(apply(iostr,Dq+#+Dq));
+ tmp1=replace(tmp1,"[","list("); //16.02.14
+ tmp1=replace(tmp1,"]",")"); //16.02.14
+ ,
+ tmp1=Dq+iostr+Dq;
+ );
+ if(!islist(pltlist_1),
+ tmp2=apply(pltlist,if(length(#)==1,Dq+#+Dq,#));
+ tmp2=text(tmp2);
+ tmp2="list("+substring(tmp2,1,length(tmp2)-1)+"),";
+ ,
+ tmp2="";
+ forall(pltlist,plt,
+ tmp=apply(plt,if(length(#)==1,Dq+#+Dq,#));
+ tmp=text(tmp);
+ tmp="list("+substring(tmp,1,length(tmp)-1)+")";
+ tmp2=tmp2+tmp+",";
+ );
+ );
+ cmdL=MkprecommandS();
+ tmp2=substring(tmp2,0,length(tmp2)-1);
+ tmp=[tmp1,tmp2];
+ tmp=concat(tmp,dense);
+ cmdL=concat(cmdL,[
+ "Setscaling",[SCALEY],
+ "Setunitlen",[Dq+ULEN+Dq],
+ name+"=Dotfilldata",tmp,
+ "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name],
+ ]);
+ options=append(options,"Wait="+text(waiting));
+ if(wflg==1,options=concat(options,["m"]));
+ if(wflg==-1,options=concat(options,["r"]));
+ if(ErrFlag==0,
+ CalcbyS(name,cmdL,options);
+ );
+ if(ErrFlag==1,
+ println("Dotfilldata not completed");
+ ,
+ if(outreg==1,
+ OutFileList=remove(OutFileList,[fname]);
+ OutFileList=append(OutFileList,fname);
+ );
+ if(ErrFlag==0,
+ ReadOutData(fname);
+ tmp1=parse(name);
+ forall(tmp1,
+ tmp=#_1;
+ draw(tmp,pointsize->1);
+ );
+ Com2nd("tmp=ReadOutData("+Dq+fname+Dq+")");
+ Com2nd("execstr(tmp)");
+ Com2nd("Drwpt(list("+name+")"+")");
+ );
+ );
+);
+
+WritetoA(fname,cmdL):=(
+// help:WritetoA("outdata",cmdL);
+ regional(tmp,tmp1,tmp2,filename,wfilename,endmark);
+ if(indexof(fname,".")==0,
+ filename=fname+".rr";
+ ,
+ filename=fname;
+ );
+ wfilename=replace(filename,".rr",".txt");
+ SCEOUTPUT = openfile(filename);
+// tmp=replace(Dirlib,"\","/");
+// tmp="load("+Dq+tmp+"/oshima/os_muldif.rr"+Dq+")$/*####*/";
+ tmp="/*####*/"; // 16.03.11
+ println(SCEOUTPUT,tmp);
+ tmp="output("+Dq+wfilename+Dq+")$/*##*/"; // 16.05.18from
+ println(SCEOUTPUT,tmp); // 16.05.18upto
+ forall(1..(length(cmdL)),
+ tmp1=cmdL_#;
+ tmp=indexof(tmp1,";"); // 16.05.18from
+ if(tmp>0,endmark=";",endmark="$");
+ tmp1=replace(tmp1,";",""); // 16.05.18upto
+ if(#==length(cmdL)-1,
+ println(SCEOUTPUT,tmp1+";/*##*/");
+ ,
+ println(SCEOUTPUT,tmp1+endmark+"/*##*/");//16.05.18
+ );
+ );
+ closefile(SCEOUTPUT);
+);
+
+kcA(fname):=kcA(fname,[]);
+kcA(fname,optionorg):=(
+//help:kcA("boxdata");
+//help:kcA(options=["r/m"]);
+ regional(options,tmp,tmp1,tmp2,eqL,strL,filename,flg);
+ if(indexof(fname,".")==0,
+ filename=fname+".rr";
+ ,
+ filename=fname;
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ );
+ flg=0;
+ forall(strL,
+ if(Toupper(substring(#,0,1))=="R",
+ flg=0;
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="M",
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp2=replace(filename,".rr",".txt");
+ tmp1=load(tmp2);
+ if(length(tmp1)==0,
+ flg=1;
+ );
+ );
+ if(flg==1,
+ tmp1="";
+ if(iswindows(),
+ tmp2=Batparent;
+ ,
+ tmp2=Shellparent;
+ );
+ flg=0;
+ forall(reverse(1..length(tmp2)),
+ if(flg==0,
+ tmp=substring(tmp2,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ tmp1=substring(tmp2,0,#-1);
+ tmp2=substring(tmp2,#,length(tmp2));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(tmp1);
+ );
+ if(iswindows(),
+ SCEOUTPUT = openfile("kc.bat");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp="del "+replace(filename,".rr",".txt");
+ println(SCEOUTPUT,tmp);
+ tmp=Dq+PathA+Dq+" -quiet -f "+Dq+filename+Dq;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit");
+ closefile(SCEOUTPUT);
+ tmp=replace(filename,".rr",".txt");
+ println(kc(Dirwork+Batparent,Dirlib,tmp)); // 16.05.29,06.05
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp="rm "+replace(filename,".rr",".txt");
+ println(SCEOUTPUT,tmp);
+ tmp=Dq+PathA+Dq+" -quiet -f "+Dq+filename+Dq;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ tmp=replace(filename,".rr",".txt");
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp));// 16.05.29,06.05
+
+ );
+// wait(WaitUnit);
+ setdirectory(Dirwork);
+ );
+);
+
+CalcbyA(name,cmd):=CalcbyA(name,cmd,[]);
+CalcbyA(name,cmd,optionorg):=(
+//help:CalcbyA("a",cmd);
+//help:CalcbyA(options= ["m/r","Wait=10","Ext=txt","Dig=16"]]);
+ regional(options,tmp,tmp1,tmp2,tmp3,tmp4,realL,strL,eqL,
+ dig,flg,wflg,file,nc,arg,cmdA,cmdlist,wfile,ext,waiting,num,st);
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ realL=tmp_6;
+ strL=tmp_7;
+ wfile="";
+ ext=".txt";
+ waiting=2;
+ dig=6;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="E",
+ if(indexof(tmp2,".")==0,ext="."+tmp2,ext=tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="D",
+ dig=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ wfile=Fhead+name+ext;
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ file=Fhead+name;
+ cmdA=cmd;
+ cmdlist=[];
+ forall(1..floor(length(cmdA)/2),nc, //17.5.18
+ tmp1=cmdA_(2*nc-1);
+ tmp1=replace(tmp1,LFmark,""); // 16.06.12
+ if(nc==length(cmdA)/2,
+ tmp=indexof(tmp1,"=");
+ tmp1=substring(tmp1,tmp,length(tmp1));
+ if(substring(tmp1,0,1)=="[",
+ tmp=substring(tmp1,0,length(tmp1)-1);
+ ,
+ tmp="["+Dq+"/start/"+Dq+","+tmp1; // 16.05.18
+ );
+ tmp=replace(tmp,"::",","+Dq+"//"+Dq+",");
+ tmp1=tmp+","+Dq+"////"+Dq+"]";
+ );
+ tmp2=cmdA_(2*nc); // list of argments
+ tmp3="";
+ tmp4="";
+ forall(tmp2,arg,
+ if(isstring(arg),
+ tmp3=tmp3+replace(arg,"'",Dq)+",";
+// tmp3=tmp3+arg;
+ ,
+ if(!islist(arg),
+ tmp3=tmp3+textformat(arg,dig)+",";
+ ,
+ tmp3=tmp3+"[";
+ tmp4="]";
+ forall(arg,
+ if(isstring(#),
+// tmp3=tmp3+Dq+#+Dq+",";
+ tmp=replace(#,"'",Dq);
+// tmp=#;// 2016.03.03
+ tmp3=tmp3+tmp+",";
+ ,
+ if(!islist(#),
+ tmp3=tmp3+textformat(#,dig)+",";
+ ,
+ tmp=textformat(#,dig);
+ tmp=replace(tmp,"],[","];[");
+ tmp3=tmp3+tmp+",";
+ );
+ );
+ );
+ tmp3=substring(tmp3,0,length(tmp3)-1)+tmp4+",";
+ );
+ );
+ );
+ if(length(tmp3)>0,
+ tmp3=substring(tmp3,0,length(tmp3)-1);
+ tmp1=tmp1+"("+tmp3+")";
+ );
+ cmdlist=append(cmdlist,tmp1);
+ );
+ cmdlist=append(cmdlist,"quit");
+ if(wflg==0,
+ tmp1=load(file+".rr");
+ if((length(tmp1)==0) % (indexof(tmp1,"/*####*/")==0), //15.11.26
+ wflg=1;
+ ,
+ tmp1=tokenize(tmp1,"/*####*/");
+ tmp1=tokenize(tmp1_2,"/*##*/");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ tmp=select(tmp1,indexof(#,"output")>0);
+ tmp1=remove(tmp1,tmp);
+ tmp1=apply(tmp1,substring(#,0,length(#)-1));
+ if(length(tmp1)!=length(cmdlist), // 15.12.06
+ wflg=1;
+ ,
+ tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#);
+ if(length(tmp)>0, wflg=1);
+ );
+ );
+ );
+ if(wflg==0,wflg=-1); // 15.10.16
+ if(wflg==1,
+ if(length(wfile)>0, // 15.10.05
+ SCEOUTPUT=openfile(wfile);
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ );
+ WritetoA(file+".rr",cmdlist);
+ kcA(file,concat(options,["m"]));
+ );
+ flg=0;
+ tmp1=floor(waiting*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp=load(wfile);
+ if(length(tmp)>=4,
+ tmp2=substring(tmp,length(tmp)-5,length(tmp));
+ if(tmp2=="////]",
+ tmp=substring(tmp,1,length(tmp)-6);
+// old tmp1=tokenize(tmp,",//,");
+// old tmp1=apply(tmp1,if(isstring(#),Dq+#+Dq,textformat(#,dig)));
+ num="1234567890+-.";
+ tmp1=tokenize(","+tmp,",//");
+ tmp3=apply(tmp1,substring(#,1,length(#)));
+ tmp1="[";
+ forall(tmp3,st,
+ tmp=select(1..length(st),indexof(num,substring(st,#-1,#))==0);
+ if((length(tmp)==0) & (length(st)<4), // 16.05.10 16=>4
+ tmp1=tmp1+st+",";
+ ,
+ tmp1=tmp1+Dq+st+Dq+",";
+ );
+ );
+ tmp=Indexof(tmp1,"/start/,"); // 16.05.18from
+ tmp1="["+Dq+substring(tmp1,tmp+7,length(tmp1)-1)+"]";
+ // 16.05.18upto
+// tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ parse(name+"="+tmp1);
+ tmp=parse(name);
+ if(length(tmp)==1,
+ tmp1=substring(tmp1,1,length(tmp1)-1);
+ parse(name+"="+tmp1);
+ );
+ flg=1;
+ tmp2=#*WaitUnit/1000;
+ );
+ ,
+ if(wflg==-1,
+ flg=-1;
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ );
+ if(flg<=0,
+ ErrFlag=1;
+ if(flg==-1,
+ println(wfile+" does not exist");
+ ,
+ tmp="("+text(waiting)+" s )";
+ println(wfile+" not generated "+tmp);
+ );
+ ,
+ println(" CalcbyA succeeded "+name+" ("+text(tmp2)+" sec)");
+ );
+);
+
+AsfunO(name,fun,argL):=AsirfunO(name,fun,argL); // 16.02.03
+AsfunO(name,fun,argL,options):=AsirfunO(name,fun,argL,options);
+Asfun(name,fun,argL):=Asirfun(name,fun,argL);
+Asfun(name,fun,argL,optionorg):=Asirfun(name,fun,argL,optionorg);
+AsirfunO(name,fun,argL):=AsirfunO(name,fun,argL,[]);
+AsirfunO(name,fun,argLorg,options):=(
+//help:AsirfunO("an1","fint",["1/(x^2+1)",32,"['-','+']"]);
+ regional(argL,tmp,tmp1,tmp2,eqL);// 16.05.26from
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ argL=argLorg;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="PRO", // 16.05.26from
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="T") % (tmp=="Y"),
+ tmp1=argL_(length(argL));
+ tmp=indexof(tmp1,"|");
+ if(tmp==0,
+ argL_(length(argL))=tmp1+"|dumb=-1,dviout=-2";
+ );
+ );
+ );
+ ); // 16.05.26upto
+ Asirfun(name,"os_md."+fun,argL,options);
+);
+Asirfun(name,fun,argL):=Asirfun(name,fun,argL,[]);
+Asirfun(name,fun,argL,optionorg):=(
+//help:Asirfun("al1","2*(3+5^4)",[],[""]);
+ regional(nm,options,eqL,precise,disp,process,
+ cmdL,tmp,tmp1,tmp2,tmp3,tmp4,out,out2);
+ nm="as"+name;
+ options=optionorg;
+ tmp=divoptions(options);
+ precise=6;
+ disp=1;
+ process=0;
+ eqL=tmp_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="PRE",
+ precise=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if((tmp1=="DIS") % (tmp1=="DSP"),
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="F") % (tmp=="N"),
+ disp=0;
+ );
+ options=remove(options,[#]);
+ );
+ if(tmp1=="PRO", // 16.05.26from
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="T") % (tmp=="Y"),
+ process=1;
+ );
+ options=remove(options,[#]);
+ ); // 16.05.26upt
+ );
+ tmp=replace(Dirlib,"\","/");
+ cmdL=[
+ "load",[Dq+tmp+"/oshima/os_muldif.rr"+Dq], // 16.03.11
+ "ctrl",[Dq+"real_digit"+Dq,precise],
+ "A="+fun,argL, // 16.05.26from
+ "A",[]
+ ];
+ CalcbyA(nm,cmdL,options);
+ out=parse(nm); //16.05.26from
+ if(process==1,
+ tmp1=Bracket(out,"[]");
+ tmp2=select(tmp1,abs(#_2)==2);
+ tmp2=apply(tmp2,#_1);
+ out=[];
+ forall(1..length(tmp2)/2,
+ tmp3=tmp2_(2*#-1);
+ tmp4=tmp2_(2*#);
+ tmp=substring(as1,tmp3+1,tmp4-2);
+ tmp=tokenize(tmp,"],[");
+ out=append(out,tmp);
+ );
+ out2=[];
+ forall(out,tmp2,
+ tmp4="";
+ forall(tmp2,tmp3,
+ tmp1=tokenize(tmp3,",");
+ if(tmp1_1==0,
+ tmp4=tmp4+tmp1_2+"="+tmp1_3+"+";
+ ,
+ if(tmp1_1==1,
+ tmp4=tmp4+tmp1_2+"+";
+ ,
+ tmp="'integrate(";
+ forall(2..length(tmp1),
+ tmp=tmp+tmp1_#+"+";
+ );
+ tmp=substring(tmp,0,length(tmp)-1);
+ tmp=tmp+","+tmp1_1+")";
+ tmp4=tmp4+tmp+"+";
+ );
+ );
+ );
+ tmp4=substring(tmp4,0,length(tmp4)-1);
+ out2=append(out2,tmp4);
+ );
+ out=out2;
+ tmp=apply(out,Dq+#+Dq);
+ parse(nm+"="+tmp);
+ );
+ if(ErrFlag==0,
+ if(disp==1, // 15.11.24
+ println(nm+" is : ");
+ println(parse(nm));
+ );
+ );
+ out; //16.05.26upto
+);
+
+WritetoM(fname,cmdL,allflg):=(
+// help:WritetoM("outdata",cmdL);
+ regional(tmp,tmp1,tmp2,filename,wfilename,outflg);
+ if(indexof(fname,".")==0,
+ filename=fname+".max";
+ ,
+ filename=fname;
+ );
+ wfilename=replace(filename,".max",".txt");
+ SCEOUTPUT = openfile(filename);
+ outflg=0;
+ forall(1..(length(cmdL)),
+ tmp1=cmdL_#;
+
+ if(allflg==1, // 2016.02.23 from
+ if(#==1,
+ tmp="writefile("+Dq+Dirwork+"/"+wfilename+Dq+")$/*##*/";
+ tmp=replace(tmp,"\","/");
+ println(SCEOUTPUT,tmp);
+ outflg=1;
+ println(SCEOUTPUT,tmp1+"$/*##*/");
+ ,
+ println(SCEOUTPUT,tmp1+"$/*##*/");
+ );
+ ,
+ if((indexof(tmp1,"disp(")>0) & (outflg==0),
+ tmp="writefile("+Dq+Dirwork+"/"+wfilename+Dq+")$/*##*/";
+ tmp=replace(tmp,"\","/");
+ println(SCEOUTPUT,tmp);
+ outflg=1;
+ println(SCEOUTPUT,tmp1+"$/*##*/");
+ ,
+ println(SCEOUTPUT,tmp1+"$/*##*/");
+ );
+ );
+ );
+ closefile(SCEOUTPUT);
+);
+
+kcM(fname):=kcM(fname,[]);
+kcM(fname,optionorg):=(
+//help:kcM("boxdata");
+//help:kcM(options=["r/m"]);
+ regional(options,tmp,tmp1,tmp2,eqL,strL,filename,flg);
+ if(indexof(fname,".")==0,
+ filename=fname+".max";
+ ,
+ filename=fname;
+ );
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ );
+ flg=0;
+ forall(strL,
+ if(Toupper(substring(#,0,1))=="R",
+ flg=0;
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="M",
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp2=replace(filename,".max",".txt");
+ tmp1=load(tmp2);
+ if(length(tmp1)==0,
+ flg=1;
+ );
+ );
+ if(flg==1,
+ tmp1="";
+ if(iswindows(),
+ tmp2=Batparent;
+ ,
+ tmp2=Shellparent;
+ );
+ flg=0;
+ forall(reverse(1..length(tmp2)),
+ if(flg==0,
+ tmp=substring(tmp2,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ tmp1=substring(tmp2,0,#-1);
+ tmp2=substring(tmp2,#,length(tmp2));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(tmp1);
+ );
+ if(iswindows(),
+ SCEOUTPUT=openfile(replace(filename,".max",".txt"));
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ SCEOUTPUT = openfile("kc.bat");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+// tmp="del "+replace(filename,".max",".txt");
+// println(SCEOUTPUT,tmp);
+ tmp=Indexall(PathM,".");
+ tmp=substring(PathM,tmp_1,tmp_2-1);
+ tmp=parse(tmp);
+ if(tmp<39,
+ tmp="call "+Dq+Dq+PathM+Dq+Dq+" -b "+Dq+filename+Dq;
+ ,
+ tmp="call "+Dq+PathM+Dq+" -b "+Dq+filename+Dq;
+ );
+// tmp="cmd/c "+Dq+PathM+" -b "+filename+Dq;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit");
+ closefile(SCEOUTPUT);
+ tmp=replace(filename,".max",".txt");
+ println(kc(Dirwork+Batparent,Mackc+Dirlib,tmp));// 16.05.29,06.05
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp="rm "+replace(filename,".max",".txt");
+ println(SCEOUTPUT,tmp);
+ tmp=Dq+PathM+Dq+" -b "+Dq+filename+Dq;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ tmp=replace(filename,".max",".txt");
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp));// 16.05.29,06.05
+ );
+// wait(WaitUnit);
+ setdirectory(Dirwork);
+ );
+);
+
+CalcbyM(name,cmd):=CalcbyM(name,cmd,[]);
+CalcbyM(name,cmd,optionorg):=(
+//help:CalcbyM("a",cmdL);
+//help:CalcbyM(options1= ["m/r","Wait=5","Ext=txt","Dig=6","Pow=no","All=y"]);
+//help:CalcbyM(options2= ["line=1000"]);
+ regional(options,tmp,tmp0,tmp1,tmp2,tmp3,tmp4,realL,strL,eqL,allflg,indL,line,
+ dig,flg,wflg,file,nc,arg,add,powerd,cmdM,cmdlist,wfile,ext,waiting,num,st);
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ realL=tmp_6;
+ strL=tmp_7;
+ wfile="";
+ ext=".txt";
+ waiting=5;
+ dig=6;
+ allflg=1;
+ powerd="false";
+ line=1000; // 16.06.13
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="E",
+ if(indexof(tmp2,".")==0,ext="."+tmp2,ext=tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="D",
+ dig=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="L", // 16.06.13
+ line=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if(tmp1=="P",
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="y") % (tmp=="F"),powerd="true");
+ options=remove(options,[#]);
+ );
+ if(tmp1=="A", // 2016.02.23
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="N") % (tmp=="F"),allflg=0);
+ options=remove(options,[#]);
+ );
+ );
+ wfile=Fhead+name+ext;
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ file=Fhead+name;
+ cmdM=cmd;
+ cmdlist=[
+ "powerdisp:"+powerd,"display2d:false","linel:"+text(line) //15.11.25,16.06.13
+ ];
+ forall(1..floor(length(cmdM)/2),nc, //17.5.18
+ tmp1=replace(cmdM_(2*nc-1),"`","'");//2016.02.23
+ tmp1=replace(tmp1,LFmark,""); // 16.06.12
+ if(nc==length(cmdM)/2,
+ tmp=indexof(tmp1,"=");
+ tmp1=substring(tmp1,tmp,length(tmp1));
+ if(substring(tmp1,0,1)=="[",
+ tmp=substring(tmp1,0,length(tmp1)-1);
+ ,
+ tmp="["+tmp1;
+ );
+ tmp2="";
+ forall(1..length(tmp1),
+ if(substring(tmp1,#-1,#+1)=="::",
+ if(substring(tmp2,0,1)==":", tmp2=substring(tmp2,1,length(tmp2)));
+ cmdlist=append(cmdlist,"disp("+tmp2+")");
+ tmp2="";
+ ,
+ tmp2=tmp2+substring(tmp1,#-1,#);
+ );
+ );
+ if(length(tmp2)>0,
+ if(substring(tmp2,0,1)==":", tmp2=substring(tmp2,1,length(tmp2)));
+ cmdlist=append(cmdlist,"disp("+tmp2+")");
+ );
+ ,
+ tmp2=cmdM_(2*nc); // list of argments
+ tmp3="";
+ tmp4="";
+ add="";
+ forall(tmp2,arg,
+ if(isstring(arg),
+ if(substring(arg,0,1)!=",",
+// tmp=replace(arg,"'",Dq); // 16.03.03
+ tmp=arg; // 16.03.03
+ tmp=replace(tmp,"`","'");// 2016.02.23
+ tmp3=tmp3+tmp+",";
+ ,
+ add=add+arg;
+ );
+ ,
+ if(!islist(arg),
+ tmp3=tmp3+textformat(arg,dig)+",";
+ ,
+ tmp3=tmp3+"[";
+ tmp4="]";
+ forall(arg,
+ if(isstring(#),
+// tmp3=tmp3+Dq+#+Dq+",";
+ tmp=replace(#,"'",Dq);
+ tmp3=tmp3+tmp+",";
+ ,
+ if(!islist(#),
+ tmp3=tmp3+textformat(#,dig)+",";
+ ,
+ tmp=textformat(#,dig);
+ tmp=replace(tmp,"],[","];[");
+ tmp3=tmp3+tmp+",";
+ );
+ );
+ );
+ tmp3=substring(tmp3,0,length(tmp3)-1)+tmp4+",";
+ );
+ );
+ );
+ if(length(tmp3)>0,
+ tmp3=substring(tmp3,0,length(tmp3)-1);
+ tmp1=tmp1+"("+tmp3+")"+add;
+ );
+ cmdlist=append(cmdlist,tmp1);
+ );
+ );
+ cmdlist=append(cmdlist,"closefile()");
+ cmdlist=append(cmdlist,"quit()");
+ if(wflg==0,
+ tmp1=load(file+".max");
+ if(length(tmp1)==0,
+ wflg=1;
+ ,
+ if(indexof(tmp1,"/*##*/")==0, // 15.11.26
+ wflg=1;
+ ,
+ tmp1=tokenize(tmp1,"/*##*/");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ tmp=select(tmp1,indexof(#,"writefile")>0);
+ tmp1=remove(tmp1,tmp);
+ tmp1=apply(tmp1,substring(#,0,length(#)-1));
+ if(length(tmp1)!=length(cmdlist), // 15.12.07
+ wflg=1;
+ ,
+ tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#);
+ if(length(tmp)>0, wflg=1);
+ );
+ );
+ );
+ );
+ if(wflg==0,wflg=-1); // 15.10.16
+ if(wflg==1,
+ if(length(wfile)>0, // 15.10.05
+ SCEOUTPUT=openfile(wfile);
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ );
+ WritetoM(file+".max",cmdlist,allflg); // 2016.02.23
+ kcM(file,concat(options,["m"]));
+ );
+ flg=0;
+ tmp1=floor(waiting*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp1=load(wfile);
+ if(wflg==1,wait(WaitUnit)); // 2016.02.23
+ if(length(tmp1)>0,
+ tmp=indexof(tmp1,"error")+indexof(tmp1,"syntax"); //2016.02.23
+ if(tmp>0,
+ println("Some error(s) occurred"); //2016.02.24 from
+ tmp2=tokenize(tmp1,"(%");
+ forall(4..length(tmp2),println(tmp2_#)); //2016.02.24 upto
+ flg=2; //2016.02.23
+ ,
+ if(indexof(tmp1,"closefile()")>0, // 15.11.24
+ tmp=tokenize(tmp1,"disp(");
+ tmp1=tmp_(2..length(tmp));
+ tmp4=[];
+ forall(tmp1,tmp2,
+ tmp=indexof(tmp2,")");
+ tmp3=substring(tmp2,tmp,length(tmp2));
+ indL=Indexall(tmp3,"(%i"); // 16.04.26from
+ tmp0=0;
+ forall(indL,
+ if(tmp0==0,
+ tmp=substring(tmp3,#+2,#+3);
+ if(indexof("0123456789",tmp)>0,//16.04.25?
+ tmp3=removespace(substring(tmp3,0,#-1));
+ tmp4=append(tmp4,tmp3);
+ tmp0=1;
+ );
+ );// 16.04.26upto
+ );
+ );
+ num="1234567890+-.";
+ tmp1="[";
+ forall(tmp4,st,
+ tmp=select(1..length(st),indexof(num,substring(st,#-1,#))==0);
+ if((length(tmp)==0) & (length(st)<4), // 16.05.10 16=>4
+ tmp1=tmp1+st+",";
+ ,
+ tmp1=tmp1+Dq+st+Dq+",";
+ );
+ );
+ tmp1=substring(tmp1,0,length(tmp1)-1)+"]";
+ tmp1=replace(tmp1,".d+0",""); // 15.11.23
+ parse(name+"="+tmp1);
+ tmp=parse(name);
+ if(length(tmp)==1,
+ tmp1=substring(tmp1,1,length(tmp1)-1);
+ parse(name+"="+tmp1);
+ );
+ flg=1;
+ tmp2=#*WaitUnit/1000;
+ );
+ );
+ ,
+ if(wflg==-1,
+ flg=-1;
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ );
+ if(flg<=0,
+ ErrFlag=1;
+ if(flg==-1,
+ println(wfile+" does not exist");
+ ,
+ tmp="("+text(waiting)+" s )";
+ tmp1=load(wfile);
+ if(length(tmp1)>0,
+ println(wfile+" incomplete"+tmp); // 2016.02.24
+ ,
+ println(wfile+" not generated "+tmp);
+ );
+ );
+ ,
+ if(flg==1, // 2016.02.23
+ println(" CalcbyM succeeded "+name+" ("+text(tmp2)+" sec)");
+ );
+ );
+);
+
+Mxfun(name,fun,argL):=Mxfun(name,fun,argL,[]);
+Mxfun(name,fun,argL,optionorg):=(
+//help:Mxfun("ca1","diff",["sin(x)^3","x"],[""]);
+//help:Mxfun(options=["Pre=6","Disp=y","Load= :: ","Set=::","Add="]);
+ regional(nm,options,eqL,precise,disp,pack,set,add,cmdL,tmp,tmp1,tmp2);
+ nm="mx"+name;
+ options=optionorg;
+ tmp=divoptions(options);
+ precise=6;
+ disp=1;
+ pack=[];
+ set=[];
+ add="";
+ eqL=tmp_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="PRE",
+ precise=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ if((tmp1=="DIS") % (tmp1=="DSP") ,
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="F") % (tmp=="N"),
+ disp=0;
+ );
+ options=remove(options,[#]);
+ );
+ if((tmp1=="PAC") % (tmp1=="LOA"), // 16.02.08
+ pack=tokenize(tmp2,"::");
+ options=remove(options,[#]);
+ );
+ if(tmp1=="SET",
+ set=tokenize(tmp2,"::");
+ options=remove(options,[#]);
+ );
+ if(tmp1=="ADD",
+ add=","+tmp2;
+ options=remove(options,[#]);
+ );
+ );
+ cmdL=[];
+ forall(pack,
+ cmdL=concat(cmdL,["load",[#]]);
+ );
+ forall(set,
+ cmdL=concat(cmdL,[#,[]]);
+ );
+ if(length(add)>0,
+ tmp=append(argL,add);
+ ,
+ tmp=argL;
+ );
+ cmdL=concat(cmdL,[
+ "ans"+":"+fun,tmp,
+ "ans",[]
+ ]);
+ CalcbyM(nm,cmdL,options);
+ if(ErrFlag==0,
+ if(disp==1, // 15.11.24
+ println(nm+" is : ");
+ println(parse(nm));
+ );
+ );
+ parse(nm);
+);
+
+Mxtex(nm,ex):=Mxtex(nm,ex,[]);
+Mxtex(nm,ex,optionorg):=(
+//help:Mxtex("1","sin(x)/x");
+//help:Mxtex(options=["Disp=y"]);
+ regional(name,cmdL,eqL,options,tx,disp,out,set,
+ tmp,tmp1,tmp2); // 16.01.25
+ name="tx"+nm;
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ disp=1;
+ set=[];
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if((tmp1=="DIS") % (tmp1=="DSP") ,
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="F") % (tmp=="N"),
+ disp=0;
+ );
+ options=remove(options,[#]);
+ );
+ if(tmp1=="SET", // 16.03.01
+ set=tokenize(tmp2,"::");
+ options=remove(options,[#]);
+ );
+ if(tmp1=="ORD", // 16.03.01
+ tmp="ordergreat("+tmp2+")";
+ set=append(set,tmp);
+ options=remove(options,[#]);
+ );
+ );
+ cmdL=[
+ "load",[Dq+"mactex-utilities.lisp"+Dq]]; // 16.03.03
+ forall(set, // 16.03.01
+ cmdL=concat(cmdL,[#,[]]);
+ );
+ cmdL=concat(cmdL,[
+ name+":disp(tex("+ex+"))",[], // 16.01.18
+ name,[] // 16.01.18
+ ]);
+ CalcbyM(name,cmdL,options); // 16.02.19
+ tx=parse(name);
+ if(islist(tx), // 16.01.10
+ out=tx_1;
+ ,
+ out=tx;
+ );
+ tmp=indexof(out,"$$")+1;
+ out=substring(out,tmp,length(out));
+ tmp=indexof(out,"$$")-1;
+ out=substring(out,0,tmp);
+ if(disp==1, // 16.01.10
+ println(name+" is:");
+ println(out);
+ );
+ tmp=name+"="+Dq+out+Dq; //16.01.10
+ parse(tmp);
+ out;
+);
+
+MxtexL(nm,exlist):=MxtexL(nm,exlist,[]); // 16.05.27
+MxtexL(nm,exlist,options):=(
+ regional(out,tmp,tmp1);
+ out=[];
+ forall(1..length(exlist),
+ tmp=Mxtex(nm+"n"+text(#),exlist_#,["Disp=n"]);
+ out=append(out,Dq+tmp+Dq);
+ );
+ tmp="tx"+nm+"="+out;
+ parse(tmp);
+ println("tx"+nm+"is:");
+ apply(out,println(#));
+ out;
+);
+
+Mxbatch(file):=(
+//help:Mxbatch(["matoperation.max"]);
+ regional(figL,out,path,tmp,tmp1,tmp2);
+ if(!islist(file),figL=[file],figL=file);
+ path=replace(Dirlib+"/maximaL/","\","/");
+ out=[];
+ forall(figL,
+ if(indexof(#,".")==0,tmp1=#+".max",tmp1=#);
+ tmp1=Dq+path+tmp1+Dq;
+ tmp2=["batch",[tmp1]];
+ out=concat(out,tmp2);
+ );
+ out;
+);
+
+Mxload(file):=( //17.06.16
+//help:Mxload(["rkfun.lispp"]);
+ regional(figL,out,path,tmp,tmp1,tmp2);
+ if(!islist(file),figL=[file],figL=file);
+ path=replace(Dirlib+"/maximaL/","\","/");
+ out=[];
+ forall(figL,
+ if(indexof(#,".")==0,tmp1=#+".lisp",tmp1=#);
+ tmp1=Dq+path+tmp1+Dq;
+ tmp2=["load",[tmp1]];
+ out=concat(out,tmp2);
+ );
+ out;
+);
+
+kcV3(fname):=kcV3(Dirwork,fname);
+kcV3(path,fname):=(
+//help:kcV3(path,"ex.obj");
+ regional(tmp,tmp1,tmp2,eqL,strL,filename,flg);
+ if(indexof(fname,".")==0,
+ filename=fname+".obj";
+ ,
+ filename=fname;
+ );
+ flg=1;
+ if(flg==1,
+ tmp1=""; // 15.10.08 from
+ if(iswindows(),
+ tmp2=Batparent;
+ ,
+ tmp2=Shellparent;
+ );
+ tmp=replace(path,"\","/");
+ tmp=substring(tmp,length(tmp)-1,length(tmp));
+ if(tmp=="/" % tmp=="\", tmp1=path, tmp1=path+"/");
+ if(iswindows(),
+ SCEOUTPUT = openfile("kc.bat");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=Dq+PathV3+Dq+" "+tmp1+filename;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29,06.05
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=Dq+PathV3+Dq+" "+tmp1+filename;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29,06.05
+ );
+ wait(WaitUnit);
+ );
+ if(fig==2,
+ println("Obj file not exist / imperfect");
+ );
+);
+
+Changeobjscale(fname):=Changeobjscale(ULEN,fname,fname,[]);
+Changeobjscale(fname,Arg):=(
+ if(islist(Arg),
+ Changeobjscale(ULEN,fname,fname,Arg);
+ ,
+ Changeobjscale(ULEN,fname,Arg,[]);
+ );
+);
+Changeobjscale(Arg1,Arg2,Arg3):=(
+ if(islist(Arg3),
+ Changeobjscale(ULEN,Arg1,Arg2,Arg3);
+ ,
+ Changeobjscale(Arg1,Arg2,Arg3,[]);
+ );
+);
+Changeobjscale(unitlen,fnameorg,foutorg,optionorg):=(
+//help:Changeobjscale("20mm",fnamei,fmediate);
+//help:Changeobjscale(options=["Unit=mm",[0,0,0]]);
+ regional(fname,fout,fmd,unit,val,options,eqL,reL,
+ origin,outunit,sc,stL,nn,tmp,tmp1,tmp2);
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ outunit="IN";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=Toupper(substring(#,tmp,length(#)));
+ if(tmp1=="O" % tmp1=="U",
+ outunit=tmp2;
+ options=remove(options,[#]);
+ );
+ );
+ options=remove(options,reL);
+ origin=[0,0,0];
+ forall(reL,
+ if(islist(#),origin=#);
+ );
+ options=remove(options,reL);
+ tmp1=".0123456789+-*/";
+ unit="";
+ val=1;
+ tmp2=0;
+ forall(reverse(1..length(unitlen)),
+ tmp=substring(unitlen,#-1,#);
+ if(tmp2==0,
+ if(indexof(tmp1,tmp)>0,
+ tmp2=#;
+ );
+ );
+ unit=substring(unitlen,tmp2,length(unitlen));
+ unit=removespace(unit);
+ val=parse(substring(unitlen,0,tmp2));
+ );
+ sc=1;
+ if(unit=="cm",sc=1);
+ if(unit=="mm",sc=0.1);
+ if(unit=="in",sc=2.54);
+ sc=sc*val;
+ if(outunit=="IN",sc=sc/2.54);
+ if(outunit=="MM",sc=sc*10);
+ fname=fnameorg;
+ if(indexof(fname,".")==0,fname=fname+".obj");
+ fmd=replace(fname,".obj",".txt");
+ fout=foutorg;
+ if(indexof(fout,".")==0,fout=fout+".obj");
+ tmp1=Textformat(origin,4);
+ tmp1=replace(tmp1,",",";");
+ cmdL=[
+ "Origin="+tmp1+";",[],
+ "Sc="+format(sc,6)+";",[],
+ "Stv=mgetl",[Dq+fname+Dq],
+ "for nn=1:size(Stv,1),Tmp=Stv(nn);",[],
+ " if part(Tmp,1:2)=='v ' then,Tmp=tokens(Tmp,' ');",[],
+ " Tmp=evstr(Tmp(2:4));",[],
+ " Tmp=Origin+Sc*(Tmp-Origin);",[],
+ " Tmp='v '+msprintf('%7.4f %7.4f %7.4f',Tmp(1),Tmp(2),Tmp(3));",[],
+ " Stv(nn,1)=Tmp;",[],
+ " end;",[],
+ "end;",[],
+ "mputl",["Stv",Dq+fout+Dq],
+ "mputl",["['finished////']",Dq+fmd+Dq]
+ ];
+ options=concat(["Wait=3","Cat=n","File="+fmd],options); // 16.06.26
+ CalcbyS("cs",cmdL,options);
+ println("Scale of "+fname+" changed");
+);
+
+Mkviewobj(fname,cmdL):=Mkviewobj(Dirwork,fname,cmdL,[]);
+Mkviewobj(Arg1,Arg2,Arg3):=(
+ if(!isstring(OCNAME), //17.04.13from
+ drawtext(mouse().xy,"Mkobjcmd not defined",
+ size->24,color->[1,0,0]);
+ , //17.04.13upto
+ if(islist(Arg2),
+ Mkviewobj(Dirwork,Arg1,Arg2,Arg3);
+ ,
+ Mkviewobj(Arg1,Arg2,Arg3,[]);
+ );
+ );
+);
+Mkviewobj(pathorg,fnameorg,cmdLorg,optionorg):=(
+//help:Mkviewobj(fname,cmdlist);
+//help:Mkviewobj(fname,[]);
+//help:Mkviewobj(path,fname,cmdlist);
+//help:Mkviewobj(options=["M/R","V","Unit=in","Wait=5"]);
+ regional(path,cmdL,eqL,strL,flg,fname,options,make,view,cmdlist,
+ vtx,face,unit,tmp,tmp1,tmp2);
+ path=replace(pathorg,"\","/");
+ if(substring(path,length(path)-1,length(path))!="/",path=path+"/");
+ fname=fnameorg;
+ if(indexof(fname,".")==0,fname=fname+".obj");
+ cmdL=cmdLorg;
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ make=-1;
+ view=0;
+ unit="";
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="M",
+ tmp2=Toupper(substring(tmp2,0,1));
+ if(tmp2=="N" % tmp2=="F",
+ make=0;
+ );
+ options=remove(options,[#]);
+ );
+ if(tmp1=="V",
+ tmp2=Toupper(substring(tmp2,0,1));
+ if(tmp2=="N" % tmp2=="F",
+ view=0;
+ );
+ options=remove(options,[#]);
+ );
+ if(tmp1=="U", // 16.06.30from
+ unit=tmp2;
+ options=remove(options,[#]);
+ ); // 16.06.30upto
+ );
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ make=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ make=0;
+ options=remove(options,[#]);
+ );
+ if(tmp=="V",
+ view=1;
+ options=remove(options,[#]);
+ );
+ );
+ if(islist(cmdL),
+ if(length(cmdL)==0,
+ make=0;
+ println("Command sequence not defnamed");
+ );
+ ,
+ make=0;
+ println("Command sequence not defined");
+ );
+ if(make==-1,
+ setdirectory(pathorg);
+ tmp1=load(fname);
+ if(length(tmp1)==0,make=1,make=0);
+ setdirectory(Dirwork);
+ );
+ if(make==1,
+ if(isstring(cmdL_1),
+ cmdlist=MkprecommandS(); // 16.04.23
+ cmdlist=concat(cmdlist,["Openobj",[Dq+path+fname+Dq]]);
+ cmdlist=concat(cmdlist,cmdL);
+ tmp=["Closeobj()",[],"ans="+Dq+"||||"+Dq,[]];//16.12.26
+ cmdlist=concat(cmdlist,tmp);
+ tmp=append(options,"Cat=y");
+ tmp1=apply(tmp,Toupper(substring(#,0,1))); // 16.04.23from
+ tmp1=select(tmp1,#=="W");
+ if(length(tmp1)==0,
+ tmp=append(tmp,"Wait=5");
+ );// 16.04.23upto
+ CalcbyS("ans",cmdlist,tmp);
+ wait(WaitUnit*100); // 16.03.18
+ ,
+ vtx=cmdL_1;
+ face=cmdL_2;
+ setdirectory(pathorg);
+ SCEOUTPUT = openfile(fname);
+ forall(vtx,tmp1,
+ tmp2=tmp1;
+ if(ispoint(tmp1),
+ tmp2=parse(text(tmp1)+"3d");
+ );
+ tmp2=apply(tmp2,format(#,5));
+ tmp="v "+tmp2_1+" "+tmp2_2+" "+tmp2_3;
+ println(SCEOUTPUT,tmp);
+ );
+ forall(face,tmp1,
+ tmp="f";
+ forall(tmp1,
+ tmp=tmp+" "+text(#);
+ );
+ println(SCEOUTPUT,tmp);
+ );
+ closefile(SCEOUTPUT);
+ setdirectory(Dirwork);
+ );
+ );
+ if(length(unit)>0, // 16.06.30from
+ Changeobjscale(fname,["Unit="+unit]);//16.10.04
+ ); // 16.06.30upto
+ if(view==1,
+ flg=0; // 16.03.14 from
+ if(isstring(ViewFile),
+ if(ViewFile==fname,flg=1);
+ );
+ if(flg==0,
+ kcV3(path,fname);
+ ViewFile=fname;
+ ); // 16.03.14 upto
+ );
+);
+
+SetObj(str):=Objname(str,["m","v"]); //17.01.12
+SetObj(str,options):=Objname(str,options); //17.01.12
+Objnameoptions(str,options):=Objname(str,options);// 16.11.29
+Objname(str):=Objname(str,["m","v"]); // 16.11.29
+Objname(str,options):=(
+//help:Objname("sample");
+//help:Objname(options=["m","v"]);
+//help:Setobj("sample");
+//help:Setobj(options=["m","v"]);
+ if(length(str)>0,
+ OCNAME=str;
+ );
+ OCOPTION=options;
+ println([OCNAME,OCOPTION]);
+);
+
+Mkobjcmd(nm,fd):=Mkobjcmd(nm,fd,[40,40,"+"]);
+Mkobjcmd(nm,fd,options):=(
+//help:Mkobjcmd("1",fd,[40,40,"+"]);
+ regional(ffd,cmd,out,div1,div2,side,
+ reL,stL,tmp,tmp1,tmp2,tmp3,tmp4);
+ div1=40;
+ div2=40;
+ side="+";
+ tmp=Divoptions(options);
+ reL=tmp_6;
+ stL=select(tmp_7,length(#)>0);
+ forall(1..length(reL),
+ if(#==1,
+ div1=reL_1;
+ div2=div1;
+ ,
+ div2=reL_2;
+ );
+ );
+ forall(stL,
+ side=#;
+ );
+ side="'"+side+"'";
+ ffd=Fullformfunc(fd);
+ tmp=indexof(ffd_5,"=");
+ tmp1=substring(ffd_5,0,tmp-1);
+ tmp2=substring(ffd_5,tmp,length(ffd_5));
+ tmp=indexof(ffd_6,"=");
+ tmp3=substring(ffd_6,0,tmp-1);
+ tmp4=substring(ffd_6,tmp,length(ffd_6));
+ out=["function Out=Fun"+nm+"("+tmp1+","+tmp3+")",[]];
+ tmp=" Out=["+ffd_2+","+ffd_3+","+ffd_4+"]";
+ out=concat(out,[tmp,[]]);
+ out=concat(out,["endfunction",[]]);
+ tmp1=["Objsurf",
+ ["Fun"+nm,tmp2,tmp4,div1,div2,side]];
+ out=concat(out,tmp1);
+ tmp2=[]; // 16.06.10from
+ forall(out,tmp1,
+ if(islist(tmp1),
+ tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5)));
+ ,
+ if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5));
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ parse("oc"+nm+"="+tmp2);
+ println("cmd seq oc"+nm+" generated"); // 16.06.10upto
+ OBJCMD=concat(OBJCMD,out);//16.11.29
+ out;
+);
+
+Mkobjnrm(nm,fd):=Mkobjnrm(nm,fd,[]);
+Mkobjnrm(nm,fd,optionorg):=(
+//help:Mkobjnrm("1",fd1,["Disp=y"]);
+//help:Mkobjnrm("1","[x,y,x*y/(x^2+y^2)],x,y");
+ regional(name,options,stL,eqL,disp,ffd,fst,xst,yst,cmdL,
+ precmd,out,tmp,tmp1,tmp2,tmp3);
+ name="nrm"+nm;
+ options=select(optionorg,length(#)>0);
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ stL=tmp_7;
+ precmd=[];
+ disp="N";
+ forall(eqL, // 16.05.02
+ tmp1=Toupper(substring(#,0,1));
+ tmp=indexof(#,"=");
+ tmp2=Toupper(substring(#,tmp,tmp+1));
+ if(tmp1=="D",
+ if(tmp2=="Y" % tmp2=="T",
+ disp="Y";
+ options=remove(options,[#]);
+ );
+ );
+ );
+ forall(stL,
+ if(indexof(#,"+")+indexof(#,"-")==0,
+ precmd=concat(precmd,[#,[]]);
+ options=remove(options,[#]);
+ );
+ );
+ if(isstring(fd),
+ tmp=Indexall(fd,",");
+ fst=[
+ substring(fd,1,tmp_1-1),
+ substring(fd,tmp_1,tmp_2-1),
+ substring(fd,tmp_2,tmp_3-2)
+ ];
+ xst=substring(fd,tmp_3,tmp_4-1);
+ yst=substring(fd,tmp_4,length(fd));
+ ,
+ ffd=Fullformfunc(fd);
+ fst=text(ffd_(2..4));
+ tmp=indexof(ffd_5,"=");
+ xst=substring(ffd_5,0,tmp-1);
+ tmp=indexof(ffd_6,"=");
+ yst=substring(ffd_6,0,tmp-1);
+ );
+ cmdL=precmd;
+ cmdL=concat(cmdL,[
+ "fx:diff",[fst,xst],
+ "fy:diff",[fst,yst],
+ "nx:fx[2]*fy[3]-fx[3]*fy[2]",[],
+ "ny:fx[3]*fy[1]-fx[1]*fy[3]",[],
+ "nz:fx[1]*fy[2]-fx[2]*fy[1]",[],
+ "nn:factor(nx^2+ny^2+nz^2)",[], // 16.04.21
+ "nn:sqrt(nn)",[], // 16.04.20
+ "nx:nx/nn",[],
+ "ny:ny/nn",[],
+ "nz:nz/nn",[],
+ "n:[nx,ny,nz]",[], // 16.04.21from
+ "n:ratsimp(n)",[],
+ "n:trigsimp(n)",[],
+ "n:factor(n)",[], // 16.04.21upto
+ "n",[]
+ ]);
+ CalcbyM(name,cmdL,options); // 16.05.12
+ tmp1=parse(name); // 16.05.12
+ out=[tmp1]; // 15.04.21b from
+ tmp2=[];
+ forall(1..3,
+ tmp=indexof(tmp1,",");
+ if(tmp==0,
+ tmp=indexof(tmp1,"]");
+ );
+ tmp3=substring(tmp1,0,tmp-1);
+ tmp1=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(tmp3,"/");
+ if(tmp>0,
+ tmp3=substring(tmp3,tmp,length(tmp3));
+ tmp2=append(tmp2,tmp3);
+ ,
+ tmp2=append(tmp2,"1");
+ );
+ );
+// out=append(out,tmp2);
+ out=out_1; // 16.05.02from
+ println("calculate "+name+":"); // 16.05.12
+ if(disp=="Y", // 16.05.02
+ println(out);
+ // println(out_2);
+ ); // 16.05.02upto
+ out;
+);
+
+Mkobjthickcmd(nm,fd):=Mkobjthickcmd(nm,fd,"",[40,40,"+"]);
+Mkobjthickcmd(nm,fd,Arg):=(
+ if(islist(Arg),
+ Mkobjthickcmd(nm,fd,"",Arg);
+ ,
+ Mkobjthickcmd(nm,fd,Arg,[]);
+ );
+);
+Mkobjthickcmd(nm,fd,fnrm,optionorg):=(
+//help:Mkobjthickcmd("1",fd,["assume(R>0)"]);
+//help:Mkobjthickcmd("1",fd,fnorm);
+//help:Mkobjthickcmd(options1=[40,40,0.05,-0.05,"+n+s+e+w+"]);
+//help:Mkobjthickcmd(options2=["ratsimp","trigsimp"]);
+ regional(options,ffd,cmd,out,div1,div2,thick1,thick2,side,
+ reL,stL,addcmd,fst,xst,yst,tmp,tmp1,tmp2,tmp3,tmp4);
+ div1=40;
+ div2=40;
+ thick1=0.05;
+ thick2=-0.05;
+ side="+n+s+e+w+";
+ options=select(optionorg,length(#)>0);
+ tmp=Divoptions(options);
+ reL=tmp_6;
+ stL=tmp_7;
+ tmp1=1; // 16.04.21from
+ tmp2=1;
+ forall(1..length(reL),
+ tmp=reL_#;
+ if(tmp>1,
+ if(tmp1==1,
+ div1=tmp;
+ div2=tmp;
+ ,
+ div2=tmp;
+ );
+ tmp1=tmp1+1;
+ ,
+ if(tmp2==1,
+ thick1=tmp;
+ thick2=-tmp;
+ ,
+ thick2=tmp;
+ );
+ tmp2=tmp2+1;
+ );
+ ); // 16.04.21upto
+ options=remove(options,reL);
+ forall(stL,
+ if(length(#)>0,
+ tmp=indexof(#,"+")+indexof(#,"-");
+ if(tmp>0,
+ side=#;
+ options=remove(options,[#]);
+ );
+ );
+ );
+ side="'"+side+"'";
+ ffd=Fullformfunc(fd);
+ tmp=indexof(ffd_5,"=");
+ tmp1=substring(ffd_5,0,tmp-1);
+ tmp2=substring(ffd_5,tmp,length(ffd_5));
+ tmp=indexof(ffd_6,"=");
+ tmp3=substring(ffd_6,0,tmp-1);
+ tmp4=substring(ffd_6,tmp,length(ffd_6));
+ fst=text(ffd_(2..4));
+ tmp=indexof(ffd_5,"=");
+ xst=substring(ffd_5,0,tmp-1);
+ tmp=indexof(ffd_6,"=");
+ yst=substring(ffd_6,0,tmp-1);
+ out=["function Out=Fun"+nm+"("+tmp1+","+tmp3+")",[]];
+ tmp=" Out=["+ffd_2+","+ffd_3+","+ffd_4+"]";
+ out=concat(out,[tmp,[]]);
+ out=concat(out,["endfunction",[]]);
+ tmp=["function Out=Fnrm"+nm+"("+xst+","+yst+")",[]];
+ out=concat(out,tmp);
+ if(fnrm=="",
+ tmp=Mkobjnrm(nm,fd,options);
+ tmp1="Out="+tmp; // 16.05.17
+ tmp="Fnrmden"+nm+"("+xst+","+yst+"):="+tmp_2;
+ parse(tmp);
+ ,
+// tmp1=" Out="+fnrm; // 16.04.30
+ tmp1=fnrm; // 16.04.30
+ if(indexof(tmp1,"Out=")==0, // 16.05.09from
+ tmp1="Out="+tmp1;
+ ); // 16.05.09upto
+ );
+ out=concat(out,[tmp1,[]]);
+ out=concat(out,["endfunction",[]]);
+ tmp1=["Objthicksurf",
+ ["Fun"+nm,tmp2,tmp4,div1,div2,"Fnrm"+nm,thick1,thick2,side]];
+ out=concat(out,tmp1);
+ tmp2=[]; // 16.06.10from
+ forall(out,tmp1,
+ if(islist(tmp1),
+ tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5)));
+ ,
+ if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5));
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ parse("oc"+nm+"="+tmp2);
+ println("cmd seq oc"+nm+" generated"); // 16.06.10upto
+ OBJCMD=concat(OBJCMD,out);//16.11.29
+ out;
+);
+
+Mkobjpolycmd(nm,pd):=Mkobjpolycmd(nm,pd,[]);
+Mkobjpolycmd(nm,pd,optionorg):=(
+//help:Mkobjpolycmd("1",pd);
+//help:Mkobjpolycmd(options1=[internal([0,0,0])]);
+ regional(options,cmd,out,thick1,thick2,origin,
+ reL,stL,vtx,face,pt1,pt2,pt3,tmp,tmp1,tmp2);
+ thick1=0;
+ thick2=-0;
+ origin=[0,0,0];
+ options=select(optionorg,length(#)>0);
+ tmp=Divoptions(options);
+ reL=tmp_6;
+ stL=tmp_7;
+ tmp1=1;
+ forall(1..length(reL),
+ tmp=reL_#;
+ if(islist(tmp),
+ origin=tmp;
+ ,
+ if(tmp1==1,
+ thick1=tmp;
+ thick2=-tmp;
+ ,
+ thick2=tmp;
+ );
+ tmp1=tmp1+1; // 16.07.08
+ );
+ );
+ options=remove(options,reL);
+ forall(stL,
+ tmp=indexof(#,"+")+indexof(#,"-");
+ if(tmp>0,
+ side=#;
+ options=remove(options,[#]);
+ );
+ );
+ vtx=pd_1; //16.04.23from
+ if(length(pd)==2,face=pd_2,face=pd_3);
+ if(isstring(vtx),vtx=parse(vtx));
+ vtx=apply(vtx,if(isstring(#),parse(#),#)); // 16.06.18
+ if(isstring(face),face=parse(face));
+ forall(1..length(face),
+ tmp=face_#;
+ pt1=vtx_(tmp_1);// 16.06.18
+ pt2=vtx_(tmp_2);// 16.06.18
+ pt3=vtx_(tmp_(length(tmp)));// 16.06.18
+ tmp1=Crossprod(pt2-pt1,pt3-pt1);
+ tmp2=Dotprod(tmp1,pt1-origin);
+ if(tmp2<0,
+ face_#=reverse(face_#);
+ );
+ );
+ out=["Objpolyhedron",[vtx,face]];
+ tmp2=[]; // 16.06.10from
+ forall(out,tmp1,
+ if(islist(tmp1),
+ tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5)));
+ ,
+ if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5));
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ parse("oc"+nm+"="+tmp2);
+ println("cmd seq oc"+nm+" generated"); // 16.06.10upto
+ OBJCMD=concat(OBJCMD,out);//16.11.29
+ out;
+);
+
+Mkobjplatecmd(nm,pd):=Mkobjplatecmd(nm,pd,[]);
+Mkobjplatecmd(nm,pdorg,optionorg):=( // 16.06.18
+//help:Mkobjplatecmd("1",pd);
+//help:Mkobjplatecmd("1",vtxlist);
+//help:Mkobjplatecmd(options1=[0.05,-0.05]);
+ regional(pd,options,cmd,out,thick1,thick2,nn,pdn,
+ reL,vtx,face,nv,npttmp,tmp1,tmp2,tmp3);
+ pd=pdorg;
+ if(MeasureDepth(pd)==1,pd=[pd]);
+ if(MeasureDepth(pd)==2,pd=[pd]);//16.10.04from
+ forall(1..length(pd),nn, // 16.06.19from
+ pdn=pd_nn;
+ vtx=pdn_1;
+ if(length(pdn)==1,face=[1..(length(vtx))],face=pdn_2);
+ vtx=apply(vtx,if(isstring(#),parse(#),#));
+ vtx=apply(vtx,if(ispoint(#),parse(text(#)+"3d"),#));
+ pd_nn=[vtx,face];//16.10.04upto
+ ); // 16.06.19upto
+ thick1=0.05;
+ thick2=-0.05;
+ options=select(optionorg,length(#)>0);
+ tmp=Divoptions(options);
+ reL=tmp_6;
+ tmp1=1;
+ forall(1..length(reL),
+ tmp=reL_#;
+ if(tmp1==1,
+ thick1=tmp;
+ thick2=-tmp;
+ ,
+ thick2=tmp;
+ );
+ tmp1=tmp1+1;// 16.07.08
+ );
+ options=remove(options,reL);
+ out=[];
+ forall(1..length(pd),npd,
+ forall(pd_npd_2,face,
+ vtx=apply(face,pd_npd_1_#);
+ npt=length(vtx);
+ tmp1=vtx_1;
+ tmp2=vtx_2;
+ tmp3=vtx_npt;
+ tmp=Crossprod(tmp2-tmp1,tmp3-tmp1);
+ nv=tmp/Dist3d(tmp);
+ tmp1=apply(vtx,#+thick1*nv);
+ tmp2=apply(vtx,#+thick2*nv);
+ vtx=concat(tmp1,tmp2);
+ tmp=apply(1..npt,#+npt);
+ tmp2=[1..npt,reverse(tmp)];
+ tmp=apply(1..(npt-1),[#,#+npt,#+npt+1,#+1]);
+ tmp2=concat(tmp2,tmp);
+ tmp=[npt,npt+npt,1+npt,1];
+ tmp2=append(tmp2,tmp);
+ out=concat(out,["Objpolyhedron",[vtx,tmp2]]);
+ );
+ );
+ tmp3="["; // 16.06.10from
+ forall(out,tmp1,
+ tmp2="";
+ if(isstring(tmp1),
+ tmp2=tmp2+Dq+tmp1+Dq+",[";
+ ,
+ tmp2=tmp2+Textformat(tmp1_1,5)+",";
+ tmp2=tmp2+Textformat(tmp1_2,5)+"],";
+ );
+ tmp3=tmp3+tmp2;
+ );
+ tmp3=substring(tmp3,0,length(tmp3)-1)+"]";
+ parse("oc"+nm+"="+tmp3);
+ println("cmd seq oc"+nm+" generated");
+ OBJCMD=concat(OBJCMD,out);//16.11.29
+ out;
+);
+
+Mkobjcrvcmd(nm,pst):=Mkobjcrvcmd(nm,pst,[]);
+Mkobjcrvcmd(nm,pstorg,options):=(
+//help:Mkobjcrvcmd("1","sc3d1",[0.02,6,"xy"]);
+ regional(cmd,out,thick,poly,dir,phead,pst,
+ reL,stL,tmp,tmp1,tmp2,tmp3,tmp4,flg);
+ thick=0.02;
+ poly=6;
+ dir="xy";
+ tmp=Divoptions(options);
+ reL=tmp_6;
+ stL=select(tmp_7,length(#)>0);
+ forall(1..length(reL),
+ if(#==1,
+ thick=reL_1;
+ ,
+ poly=reL_2;
+ );
+ );
+ forall(stL,
+ dir=#;
+ );
+ dir="'"+dir+"'";
+ tmp=indexof(pstorg,"_");
+ if(tmp==0,
+ phead=pstorg;
+ ,
+ phead=substring(pstorg,0,tmp-1);
+ );
+ pst=pstorg;
+ out=[];
+ tmp1=select(GLIST,indexof(#,phead+"=")>0);
+ if(length(tmp1)==0, println(phead+" incorrect"));
+// out=[tmp1_1,[]];
+ out=[];
+ tmp1=parse(pst);
+ flg=0; // 16.04.23from
+ if(MeasureDepth(tmp1)==2,flg=1);
+ if(MeasureDepth(tmp1)==0,
+ if(islist(tmp1),flg=1);
+ );
+ if(flg==1, // 16.04.23upto
+ if(!isstring(tmp1_1),
+ forall(1..length(tmp1),
+ tmp=["Objcurve",[pst+"("+text(#)+")",thick,poly,dir]];
+ out=concat(out,tmp);
+ );
+ ,
+ forall(1..length(tmp1), // 16.11.14from
+ tmp=["Objcurve",[tmp1_#,thick,poly,dir]];
+ out=concat(out,tmp);
+ );// 16.11.14upto
+ );
+ ,
+ tmp1=Chunderscore(pst);
+ tmp=["Objcurve",[tmp1,thick,poly,dir]];
+ out=concat(out,tmp);
+ );
+ tmp2=[]; // 16.06.10from
+ forall(out,tmp1,
+ if(islist(tmp1),
+ tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5)));
+ ,
+ if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5));
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ parse("oc"+nm+"="+tmp2);
+ println("cmd seq oc"+nm+" generated"); // 16.06.10upto
+ OBJCMD=concat(OBJCMD,out);//16.11.29
+ out;
+);
+
+Mkobjsymbcmd(symb,size,rot,dir,pos):=
+ Mkobjsymbcmd("",symb,size,rot,dir,pos,[]);
+Mkobjsymbcmd(Ar1,Ar2,Ar3,Ar4,Ar5,Ar6):=(
+ if(isstring(Ar2),
+ Mkobjsymbcmd(Ar1,Ar2,Ar3,Ar4,Ar5,Ar6,[]);
+ ,
+ Mkobjsymbcmd("",Ar1,Ar2,Ar3,Ar4,Ar5,Ar6);
+ );
+);
+Mkobjsymbcmd(path,symborg,size,rot,dir,pos,optionorg):=(
+//help:Mkobjsymbcmd("x",0.5,0,V3d,A3d);
+//help:Mkobjsymbcmd("P",0.5,0,V3d,A3d);
+//help:Mkobjsymbcmd(options=[0.05,4,"'yz'"]);
+ regional(symb,options,opbez,eqL,reL,stL,dtL,dt,
+ alpha,Alpha,out,mx,Mx,my,My,center,tmp,tmp1,tmp2);
+ alpha="abcdefghijklmnopqrstuvwxyz";
+ Alpha=Toupper(alpha);
+ symb=symborg;
+ options=optionorg;
+ opbez=["nodisp"];
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ reL=tmp_6;
+ stL=tmp_7;
+ opbez=concat(opbez,eqL);
+ options=remove(options,eqL);
+ tmp1=[0.05,4,"'yz'"];
+ if(length(reL)==0,
+ options=concat(options,tmp1_(1..2));
+ );
+ if(length(reL)==1, // debugged 16.06.18
+ options=concat(options,[tmp1_2]);
+ );
+ if(length(stL)==0,
+ options=concat(options,[tmp1_3]);
+ );
+ tmp=parse(symb);
+ if(islist(tmp),
+ tmp1=select(GLIST,substring(#,0,length(symb))==symb);
+ tmp1=tmp1_1;
+ out=[tmp1,[]];
+ dtL=symb;
+ ,
+ tmp=substring(symb,0,1);
+ if(tmp>="a" & tmp<="z",tmp1=tmp+"s");
+ if(tmp>="A" & tmp<="Z",
+ tmp=indexof(Alpha,tmp);
+ tmp=substring(alpha,tmp-1,tmp);
+ tmp1=tmp+"c";
+ );
+ if(length(symb)==1,
+ if(symb>"Z",
+ symb=tmp1+"i";
+ ,
+ symb=tmp1+"r";
+ );
+ );
+ if(length(symb)==2,symb=tmp1+substring(symb,1,2));
+ out=[];
+ if(length(path)>0, // 16.04.23from
+ setdirectory(path);
+ ,
+// tmp=Dirhead+"/ketsample/samples/s13meshlab/fontF";
+ tmp=Dirhead+"/data/fontF"; // 16.05.10
+ setdirectory(tmp);
+ ); // 16.04.23upto
+ dtL=Readbezier(symb,opbez);
+ setdirectory(Dirwork);
+ forall(dtL,dt,
+ tmp=dt+"=";
+ tmp1=select(GLIST,indexof(#,tmp)>0);
+ tmp1=tmp1_1;
+ out=concat(out,[tmp1,[]]);
+ );
+ mx=100;Mx=-100;my=100;My=-100;
+ forall(dtL,dt,
+ tmp=apply(parse(dt),#_1);
+ mx=min(append(tmp,mx));
+ Mx=max(append(tmp,Mx));
+ tmp=apply(parse(dt),#_2);
+ my=min(append(tmp,my));
+ My=max(append(tmp,My));
+ );
+ center=[(mx+Mx)/2,(my+My)/2];
+ tmp1=[];
+ forall(dtL,dt,
+ Rotatedata(dt,dt,rot,[center,"nodisp"]); // 16.04.23
+ Translatedata(dt,"rt"+dt,-center,["nodisp"]);
+ tmp1=append(tmp1,"tr"+dt);
+ );
+ dtL=tmp1;
+ forall(dtL,dt,
+ tmp=dt+"=";
+ tmp1=select(GLIST,indexof(#,tmp)>0);
+ tmp1=tmp1_1;
+ out=concat(out,[tmp1,[]]);
+ );
+ );
+ tmp1=text(options);
+ tmp1=substring(tmp1,1,length(tmp1)-1);
+ out=concat(out,[
+ "Sd=Symb3data",[dtL,size,0,dir,pos], // 16.04.23
+ "Objsymb(Sd,"+tmp1+")",[]
+ ]);
+ tmp2=[]; // 16.06.10from
+ forall(out,tmp1,
+ if(islist(tmp1),
+ tmp=apply(tmp1,if(isstring(#),Dq+#+Dq,Textformat(#,5)));
+ ,
+ if(isstring(tmp1),tmp=Dq+tmp1+Dq,tmp=Textformat(#,5));
+ );
+ tmp2=append(tmp2,tmp);
+ );
+ parse("oc"+symborg+"="+tmp2);
+ println("cmd seq oc"+symborg+" generated"); // 16.06.10upto
+ OBJCMD=concat(OBJCMD,out);//16.11.29
+ out;
+);
+
+Concatcmd(cmdlist):=(
+//help:Concatcmd([cmdL1,cmdL2]);
+ regional(out);
+ out=[];
+ forall(cmdlist,
+ out=concat(out,#);
+ );
+ out;
+);
+
+WritetoF(fname,cmdL):=(
+// help:WritetoF("outdata",cmdL);
+ regional(tmp,tmp1,tmp2,filename,wfilename);
+ if(indexof(fname,".")==0,
+ filename=fname+".input";
+ ,
+ filename=fname;
+ );
+ wfilename=replace(filename,".input",".txt");
+ SCEOUTPUT = openfile(filename);
+ forall(1..(length(cmdL)),
+ tmp1=cmdL_#;
+ if(substring(tmp1,0,1)=="[",
+ tmp1=tmp1+" --##";
+ println(SCEOUTPUT,tmp1);
+ ,
+ println(SCEOUTPUT,tmp1);
+ println(SCEOUTPUT," --##");
+ );
+ );
+ closefile(SCEOUTPUT);
+);
+
+kcF(fname):=kcF(fname,[]);
+kcF(fname,optionorg):=(
+ regional(options,tmp,tmp1,tmp2,eqL,strL,
+ filename,wfile,flg);
+ if(indexof(fname,".")==0,
+ filename=fname+".input";
+ ,
+ filename=fname;
+ );
+ wfile=replace(filename,".input",".sfort");
+ options=optionorg;
+ tmp=Divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=substring(#,0,tmp-1);
+ tmp2=substring(#,tmp,length(#));
+ );
+ flg=0;
+ forall(strL,
+ if(Toupper(substring(#,0,1))=="R",
+ flg=0;
+ options=remove(options,[#]);
+ );
+ if(Toupper(substring(#,0,1))=="M",
+ flg=1;
+ );
+ );
+ if(flg==0,
+ tmp2=replace(filename,".input",".sfort");
+ tmp1=load(tmp2);
+ if(length(tmp1)==0,
+ flg=1;
+ );
+ );
+ if(flg==1,
+ tmp1="";
+ if(iswindows(),
+ tmp2=Batparent;
+ ,
+ tmp2=Shellparent;
+ );
+ flg=0;
+ forall(reverse(1..length(tmp2)),
+ if(flg==0,
+ tmp=substring(tmp2,#-1,#);
+ if(tmp=="/" % tmp=="\", // 14.01.15
+ tmp1=substring(tmp2,0,#-1);
+ tmp2=substring(tmp2,#,length(tmp2));
+ flg=1;
+ );
+ );
+ );
+ if(length(tmp1)>0,
+ setdirectory(tmp1);
+ );
+ if(iswindows(),
+// SCEOUTPUT=openfile(wfile);
+// println(SCEOUTPUT,"");
+// closefile(SCEOUTPUT);
+ SCEOUTPUT = openfile("kc.bat");
+ tmp=Dq+PathF+"\bash"+Dq+" --login -i -c "+Dq+"/cygdrive/";
+ tmp1=replace(Dirwork,"\","/");
+ if(indexof(tmp1,":")==0,
+ tmp=tmp+"c/"+tmp1+"/kc.sh"+Dq;
+ ,
+ tmp1=replace(tmp1,":","");
+ tmp=tmp+tmp1+"/kc.sh"+Dq;
+ );
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ SCEOUTPUT = openfile("kc.sh");
+ Lf=unicode("10",base->10);
+ print(SCEOUTPUT,"#!/bin/sh"+Lf);
+ tmp1=replace(Dirwork,"\","/");
+ if(indexof(tmp1,":")==0,
+ tmp="cd "+Dq+"/cygdrive/c/"+tmp1+Dq;
+ ,
+ tmp1=replace(tmp1,":","");
+ tmp="cd "+Dq+"/cygdrive/"+tmp1+Dq;
+ );
+ print(SCEOUTPUT,tmp+Lf);
+ tmp=Dq+"/opt/fricas/bin/fricas";
+ tmp=tmp+Dq+" -nox -eval ";
+ tmp=tmp+Dq+")read "+filename+Dq;
+// tmp=tmp+" > "+Dq+wfile+Dq;
+ print(SCEOUTPUT,tmp+Lf);
+ print(SCEOUTPUT,"exit 0"+Lf);
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29,06.05
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=Dq+PathF+Dq+" -nox -eval "+Dq+")read "+filename+Dq;
+// tmp=tmp+" > "+wfile;
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex));// 16.05.29,06.05
+ );
+ setdirectory(Dirwork);
+ );
+);
+
+CalcbyF(name,cmd):=CalcbyM(name,cmd,[]);
+CalcbyF(name,cmd,optionorg):=(
+//help:CalcbyF("a",cmdL);
+//help:CalcbyF(options= ["m/r","Wait=5"]]);
+ regional(options,tmp,tmp1,tmp2,tmp3,tmp4,strL,eqL,
+ flg,wflg,file,nc,arg,cmdF,cmdlist,wfile,Alpha,
+ waiting,num,dig,varlist);
+ options=optionorg;
+ tmp=divoptions(options);
+ eqL=tmp_5;
+ strL=tmp_7;
+ waiting=5;
+ dig=5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,1));
+ tmp2=substring(#,tmp,length(#));
+ if(tmp1=="W",
+ waiting=parse(tmp2);
+ options=remove(options,[#]);
+ );
+ );
+ file=Fhead+name+".input";
+ wfile=Fhead+name+".sfort";
+ wflg=0;
+ forall(strL,
+ tmp=Toupper(substring(#,0,1));
+ if(tmp=="M",
+ wflg=1;
+ options=remove(options,[#]);
+ );
+ if(tmp=="R",
+ wflg=-1;
+ options=remove(options,[#]);
+ );
+ );
+ cmdF=cmd;
+ tmp1=")set breakmode quit";
+ tmp2=")set output fortran on";
+ tmp3=")set fortran precision single";
+ cmdlist=[tmp1,tmp2,tmp3];
+ tmp=")set output fortran "+wfile;
+ cmdlist=append(cmdlist,tmp);
+ forall(1..floor(length(cmdF)/2),nc, //17.5.18
+ tmp1=cmdF_(2*nc-1);
+ tmp1=replace(tmp1,LFmark,""); // 16.06.12
+ tmp2=cmdF_(2*nc); // list of argments
+ if(nc<length(cmdF)/2,
+ tmp3="";
+ forall(tmp2,arg,
+ if(isstring(arg),
+ tmp3=tmp3+arg+",";
+ ,
+ tmp3=tmp3+textformat(arg,dig)+",";
+ );
+ );
+ if(length(tmp3)>0,
+ tmp3=tmp1+
+ "("+substring(tmp3,0,length(tmp3)-1)+")";
+ ,
+ tmp3=tmp1;
+ );
+ cmdlist=append(cmdlist,tmp3);
+ ,
+ if(indexof(tmp1,"::")==0,
+ varlist=[tmp1];
+ ,
+ varlist=tokenize(tmp1,"::");
+ );
+ forall(varlist,
+ cmdlist=append(cmdlist,"["+#+"]");
+ );
+ );
+ );
+ cmdlist=concat(cmdlist,["111111*1",")quit"]);
+ if(wflg==0,
+ tmp1=load(file);
+ if(length(tmp1)==0,
+ wflg=1;
+ ,
+ if(indexof(tmp1," --##")==0, // 15.11.26
+ wflg=1;
+ ,
+ tmp1=tokenize(tmp1," --##");
+ tmp1=tmp1_(1..(length(tmp1)-1));
+ if(length(tmp1)!=length(cmdlist),
+ wflg=1;
+ ,
+ tmp=select(1..length(tmp1),tmp1_#!=cmdlist_#);
+ if(length(tmp)>0, wflg=1);
+ );
+ );
+ );
+ );
+ if(wflg==0,wflg=-1);
+ if(wflg==1,
+ if(length(wfile)>0,
+ SCEOUTPUT=openfile(wfile);
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ );
+ WritetoF(file,cmdlist);
+ kcF(file,concat(options,["m"]));
+ );
+ Alpha="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
+ flg=0;
+ tmp1=floor(waiting*1000/WaitUnit);
+ repeat(tmp1,
+ if(flg==0,
+ tmp1=load(wfile);
+ if(wflg==1,wait(WaitUnit));
+ tmp=indexof(tmp1,"Error")+indexof(tmp1,"find");
+ if(tmp>0,
+ println("Some error(s) occurred");
+ tmp=tokenize(tmp1," --##");
+ forall(tmp,
+ if(indexof(#,"Error")+indexof(#,"find")>0,
+ println(tmp_(length(tmp)));
+ );
+ );
+ flg=2;
+ );
+ if(indexof(tmp1,"111111")>0,
+ tmp1=replace(tmp1," &","");
+ tmp3="[";
+ forall(1..length(varlist),
+ tmp=indexof(tmp1,"["+varlist_#+"]");
+ tmp1=substring(tmp1,tmp,length(tmp1));
+ tmp=indexof(tmp1,"(1)=");
+ tmp1=substring(tmp1,tmp+3,length(tmp1));
+ tmp=indexof(tmp1," ");
+ tmp3=tmp3+Dq+substring(tmp1,0,tmp-1)+Dq+",";
+ );
+ tmp3=replace(tmp3,"**","^");
+ tmp3=replace(tmp3,".0","");
+ tmp4="";
+ forall(1..length(tmp3),
+ tmp=substring(tmp3,#-1,#);
+ tmp1=indexof(Alpha,tmp);
+ if(tmp1>0,
+ tmp4=tmp4+unicode(text(tmp1+96),base->10);
+ ,
+ if(tmp==" " % tmp=="&",
+ ,
+ tmp4=tmp4+tmp;
+ );
+ );
+ );
+ tmp=name+"="+substring(tmp4,0,length(tmp4)-1)+"]";
+ parse(tmp);
+ tmp=parse(name);
+ if(length(tmp)==1,
+ tmp1=substring(tmp4,1,length(tmp3)-1);
+ parse(name+"="+tmp1);
+ );
+ flg=1;
+ tmp2=#*WaitUnit/1000;
+ ,
+ if(wflg==-1,
+ flg=-1;
+ ,
+ wait(WaitUnit);
+ );
+ );
+ );
+ );
+ if(flg<=0,
+ if(flg==-1,
+ println(wfile+" does not exist");
+ ,
+ tmp="("+text(waiting)+" s )";
+ tmp1=load(wfile);
+ if(length(tmp1)>0,
+ println(wfile+" incomplete"+tmp); // 2016.02.24
+ ,
+ println(wfile+" not generated "+tmp);
+ );
+ );
+ ,
+ if(flg==1,
+ println(" Succeeded "+name+" ("+text(tmp2)+" sec)");
+ );
+ );
+);
+
+Frfun(name,fun,argL):=Frifun(name,fun,argL,[]);
+Frfun(name,fun,argL,optionorg):=Frifun(name,fun,argL,optionorg);
+Frifun(name,fun,argL):=Frifun(name,fun,argL,[]);
+Frifun(name,fun,argL,optionorg):=(
+//help:Frfun("1","integrate",["sin(x)^3","x"],[""]);
+//help:Mxfun(options=["Disp=y"]);
+ regional(nm,options,eqL,disp,cmdL,tmp,tmp1,tmp2);
+ nm="fri"+name;
+ options=optionorg;
+ tmp=divoptions(options);
+ disp=1;
+ eqL=tmp_5;
+ forall(eqL,
+ tmp=indexof(#,"=");
+ tmp1=Toupper(substring(#,0,3));
+ tmp2=substring(#,tmp,length(#));
+ if((tmp1=="DIS") % (tmp1=="DSP") ,
+ tmp=Toupper(substring(tmp2,0,1));
+ if((tmp=="F") % (tmp=="N"),
+ disp=0;
+ );
+ options=remove(options,[#]);
+ );
+ );
+ cmdL=[];
+ cmdL=concat(cmdL,[
+ "ans"+":="+fun,argL,
+ "ans",[]
+ ]);
+ CalcbyF(nm,cmdL,options);
+ if(disp==1, // 15.11.24
+ println(nm+" is : ");
+ println(parse(nm));
+ );
+ parse(nm);
+);
+
+Mkketcindyjs():=Mkketcindyjs("ketcindylib"); //16.10.07,11.06
+Mkketcindyjs(Arg):=(
+ if(isstring(Arg),
+ Mkketcindyjs(Arg,[])
+ ,
+ Mkketcindyjs("ketcindylib",Arg)
+ );
+);
+Mkketcindyjs(libname,options):=(
+//help:Mkketcindyjs("ketcindylib");
+//help:Mkketcindyjs(options="Tex=y","Net=y"]);
+ regional(texflg,netflg,tmp,tmp1,tmp2);
+ texflg="Y";
+ netflg="Y";
+ forall(options,
+ tmp1=Toupper(#);
+ if(indexof(tmp1,"TEX")>0,
+ tmp=indexof(tmp1,"=");
+ texflg=Toupper(substring(tmp1,tmp,tmp+1));
+ );
+ if(indexof(tmp1,"NET")>0,
+ tmp=indexof(tmp1,"=");
+ netflg=Toupper(substring(tmp1,tmp,tmp+1));
+ );
+ );
+ SCEOUTPUT = openfile(Fhead+".sce");
+ println(SCEOUTPUT,"cd('"+Dirhead+"/CindyJS);");
+ println(SCEOUTPUT,"Dtket=mgetl('"+libname+".txt');");
+ println(SCEOUTPUT,"cd('"+Dirwork+"');");
+ println(SCEOUTPUT,"Dtjs=mgetl('"+Fhead+".html');");
+ println(SCEOUTPUT,"Qt=char(34);");
+ println(SCEOUTPUT,"Fb=0;Lb=0;Ka=0;");
+ println(SCEOUTPUT,
+ "for I=1:size(Dtjs,1)");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['<script id=','csinit']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then Fb=I,end;");
+ println(SCEOUTPUT,
+ " if Fb>0 then");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),'</script>');");
+ println(SCEOUTPUT,
+ " if Tmp>0 then Lb=I,end;");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),'scripts: '+Qt+'cs*'+Qt+',');");
+ println(SCEOUTPUT,
+ " if Tmp>0 then Ka=I;break,end;");
+ println(SCEOUTPUT,
+ " end;");
+ println(SCEOUTPUT,
+ "end;");
+ if(netflg=="N", //16.11.08from
+ println(SCEOUTPUT,
+ "for I=1:Fb");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['href=','CindyJS.css']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then");
+ println(SCEOUTPUT,
+ " Tmp=part(Dtjs(I,:),1:(Tmp(1)+4))+Qt+'CindyJS.css'+Qt+'>';");
+ println(SCEOUTPUT,
+ " Dtjs(I,:)=Tmp;");
+ println(SCEOUTPUT,
+ " end;");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['src=','Cindy.js']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then");
+ println(SCEOUTPUT,
+ " Tmp=part(Dtjs(I,:),1:(Tmp(1)+3))+Qt+'Cindy.js'+Qt+'></script>';");
+ println(SCEOUTPUT,
+ " Dtjs(I,:)=Tmp;");
+ println(SCEOUTPUT,
+ " end;");
+ println(SCEOUTPUT,
+ "end;");
+ );//16.11.08upto
+ println(SCEOUTPUT,
+ "Dtket=[Dtjs(1:Fb,:);Dtket;Dtjs(Lb:Ka,:)];");
+ if(texflg=="Y",
+ println(SCEOUTPUT,
+ "Dtket=[Dtket;' use: ['+Qt+'katex'+Qt+'],'];");
+ );
+ println(SCEOUTPUT, //16.11.08from
+ "for I=Ka+1:size(Dtjs,1)");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['Button',Qt+'Figure']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then continue,end;");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['Button',Qt+'Exekc']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then continue,end;");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['Button',Qt+'Parent']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then continue,end;");
+ println(SCEOUTPUT,
+ " Tmp=strindex(Dtjs(I,:),['Button',Qt+'KeTJS']);");
+ println(SCEOUTPUT,
+ " if length(Tmp)>1 then continue,end;");
+ println(SCEOUTPUT,
+ " Dtket=[Dtket;Dtjs(I,:)];");
+ println(SCEOUTPUT,
+ "end"); //16.11.08upto
+// println(SCEOUTPUT,
+// "Dtket=[Dtket;Dtjs((Ka+1):(size(Dtjs,1)),:)];");
+ println(SCEOUTPUT,
+ "mputl(Dtket,'"+Fhead+"ketcindy.html');");
+ println(SCEOUTPUT,"quit()");
+ closefile(SCEOUTPUT);
+ kcS(PathS,Fhead+".sce",["m"]);
+);
+
+Cheader():=Cheader(FdC,FheadC+"header.h");
+Cheader(fdc,fname):=(
+ regional(tmp,tmp1,tmp2,j, dW,dE,dS,dN,dstr,
+ DsizeLL,DsizeL,DsizeM,DsizeS,Eps,Eps1,Eps2,Eps3);
+ Mdv=50; Ndv=50;
+ DsizeLL=15000; DsizeL=1500; DsizeM=500; DsizeS=200;
+ Eps=0.00001; Eps1=0.05; Eps2=0.2; Eps3=1;
+ SCEOUTPUT = openfile(fname);
+ tmp=indexof(fdc_2,"=");
+ tmp1=substring(fdc_2,tmp,length(fdc_2));
+ tmp1=replace(tmp1,"[","{");
+ tmp1=replace(tmp1,"]","}");
+ tmp=indexof(fdc_3,"=");
+ tmp2=substring(fdc_3,tmp,length(fdc_3));
+ tmp2=replace(tmp2,"[","{");
+ tmp2=replace(tmp2,"]","}");
+ tmp="const double Urng[2]="+tmp1+", Vrng[2]="+tmp2;
+ println(SCEOUTPUT,tmp+";");
+ tmp="const double XMIN="+Sprintf(XMIN,6);
+ tmp=tmp+",XMAX="+Sprintf(XMAX,6);
+ println(SCEOUTPUT,tmp+";");
+ tmp="const double THETA="+Sprintf(THETA,6);
+ tmp=tmp+",PHI="+Sprintf(PHI,6);
+ println(SCEOUTPUT,tmp+";");
+ tmp=" //THETA:"+Sprintf(THETA*180/pi,2);
+ tmp=tmp+", PHI:"+Sprintf(PHI*180/pi,2);
+ println(SCEOUTPUT,tmp+";");
+ dstr=fdc_4;
+ if(indexof(dstr,"w")>0,dW=1,dW=0);
+ if(indexof(dstr,"e")>0,dE=1,dE=0);
+ if(indexof(dstr,"s")>0,dS=1,dS=0);
+ if(indexof(dstr,"n")>0,dN=1,dN=0);
+ tmp="const int DrawW="+text(dW)+", DrawE="+text(dE);
+ tmp=tmp+", DrawS="+text(dS)+", DrawN="+text(dN);
+ println(SCEOUTPUT,tmp+";");
+ forall(j=5..(length(fdc)),
+ tmp=fdc_#; //17.05.21from
+ if(length(tmp)==2,
+ if(tmp_1>1, //17.05.24from
+ Mdv=tmp_1; Ndv=tmp_2;
+ ,
+ if(length(tmp_1)>0, Eps1=tmp_1);
+ if(length(tmp_1)>0, Eps2=tmp_2);
+ ); //17.05.24upto
+ );
+ if(length(tmp)==3,
+ if(length(tmp_1)>0, DsizeLL=tmp_1);//17.06.09(3lines)
+ if(length(tmp_2)>0, DsizeL=tmp_2);
+ if(length(tmp_3)>0, DsizeM=tmp_3);
+ );
+ if(length(tmp)==4,
+ if(min(tmp)<1,
+ if(length(tmp_1)>0, Eps=tmp_1);
+ if(length(tmp_2)>0, Eps1=tmp_2);
+ if(length(tmp_3)>0, Eps2=tmp_3);
+ if(length(tmp_4)>0, Eps3=tmp_4);
+ ,
+ if(length(tmp_1)>0, DsizeLL=tmp_1);
+ if(length(tmp_2)>0, DsizeL=tmp_2);
+ if(length(tmp_3)>0, DsizeM=tmp_3);
+ if(length(tmp_4)>0, DsizeS=tmp_4);
+ )
+ );//17.05.21upto
+ );
+ tmp1=text(fdc_5_1);
+ tmp2=text(fdc_5_2);
+ tmp="const int Mdv="+text(Mdv)+", Ndv="+text(Ndv);
+ println(SCEOUTPUT,tmp+";");
+ tmp="#define DsizeLL "+text(DsizeLL);//17.05.21
+ println(SCEOUTPUT,tmp);
+ tmp="#define DsizeL "+text(DsizeL);
+ println(SCEOUTPUT,tmp);
+ tmp="#define DsizeM "+text(DsizeM);
+ println(SCEOUTPUT,tmp);
+ tmp="#define DsizeS "+text(DsizeS);
+ println(SCEOUTPUT,tmp);
+ tmp="const double Eps="+format(Eps,7);
+ tmp=tmp+", Eps1="+format(Eps1,7);
+ tmp=tmp+", Eps2="+format(Eps2,7);
+ tmp=tmp+", Eps3= "+format(Eps3,7);
+ println(SCEOUTPUT,tmp+";");
+ tmp="void surffun(double u, double v, double pt[3]){";
+ println(SCEOUTPUT,tmp);
+ forall(fdc_1,
+ tmp1=replace(#,"x=","pt[0]=");
+ tmp1=replace(tmp1,"y=","pt[1]=");
+ tmp1=replace(tmp1,"z=","pt[2]=");
+ println(SCEOUTPUT," "+tmp1+";");
+ );
+ println(SCEOUTPUT,"}");
+ closefile(SCEOUTPUT);
+);
+
+Cmain():=Cmain(FheadC+".c",MainC);
+Cmain(fname,cmdLorg):=(
+//help:MainC(writesfbd("sfbd");)
+//help:MainC(writeax("ax");)
+//help:MainC(writewire("wire" (,2), [10,10]);)
+//help:MainC(writewire("wire", [[0.5,1],[0,1,2]]]);)
+//help:MainC(writecut("sfcut","x+y+2*z-4");)
+//help:MainC(writesc("sl3d1");)
+//help:MainC(skeleton("sk",[objlist],[pltlist] (,width));)
+//help:MainC(writewire ptincrease (=2) are optional);)
+ regional(cmdL, tmp,tmp1,tmp2,tmp3,tmp4,nL, nn,kk,jj, num, en,cmd,
+ ax1,ax2,ax3,path, var,varh,file,fileh, flg, cutctr);
+ path=Dirwork+"/"; //17.05.29from
+ path=replace(path,"\","/");
+ cmdL=cmdLorg;// 17.05.26from
+ nL=select(1..(length(cmdL)),cmdL_#=="writeax");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ forall(1..(length(nL)),
+ tmp2=cmdL_(nL_#+1);
+ if(length(tmp2)==1,tmp2=append(tmp2,"Surf"));
+ tmp=tmp2_1; // 17.06.08(5lines)
+ if(substring(tmp,length(tmp)-2,length(tmp))!="3d",
+ tmp=tmp+"3d";
+ );
+ tmp1=parse(tmp);
+ tmp="axx="+textformat(tmp1_1,5);
+ parse(tmp);
+ tmp="axy="+textformat(tmp1_2,5);
+ parse(tmp);
+ tmp="axz="+textformat(tmp1_3,5);
+ parse(tmp);
+ tmp3=concat(tmp3,[
+ "double "+tmp2_1+"[DsizeL][3];",[], //17.06.07(2lines)
+ "double axx[3][3], axy[3][3], axz[3][3];",[],
+ "spaceline",["axx"],
+ "spaceline",["axy"],
+ "spaceline",["axz"],
+ tmp2_1+"[0][0]=0;",[],
+ "appendd3(2,1,2,axx,"+tmp2_1+");",[],
+ "appendd3(2,1,2,axy,"+tmp2_1+");",[],
+ "appendd3(2,1,2,axz,"+tmp2_1+");",[],
+ "writecrv",[tmp2_1,tmp2_2] //17.06.07
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(nL_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );
+ nL=select(1..(length(cmdL)),cmdL_#=="writesc");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ forall(1..(length(nL)),
+ tmp2=cmdL_(nL_#+1);
+ if(length(tmp2)==1,
+ tmp2=[tmp2_1,"Surf"];
+ );
+ tmp3=concat(tmp3,[
+ "double "+tmp2_1+"[DsizeL][3];",[], //17.06.07(2lines)
+ "double "+tmp2_1+"h[DsizeL][3];",[],
+ "spaceline",[tmp2_1],
+ "writecrv",[tmp2_1,tmp2_2] //17.06.07
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(nL_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );
+ nL=select(1..(length(cmdL)),cmdL_#=="writesfbd");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ forall(1..(length(nL)),
+ tmp2=cmdL_(nL_#+1);
+ if(length(tmp2)==1,tmp2=append(tmp2,"Surf"));
+ var=Dq+tmp2_1+"3d"+Dq;
+ varh=Dq+tmp2_1+"h3d"+Dq;
+ file=Dq+path+FheadC+tmp2_1+".txt"+Dq;
+ fileh=Dq+path+FheadC+tmp2_1+"h.txt"+Dq;
+ tmp="Borderhiddendata";
+ tmp3=concat(tmp3,[
+ "double "+tmp2_1+"[DsizeL][3];",[], //17.06.09(6lines)
+ "sfbdparadata",[tmp2_1],
+ "output3h",[var, varh,file,tmp2_1],
+ "dataindexd3",[3,tmp2_1,"din"],
+ tmp2_2+"[0][0]=0;",[],
+ "appendd3",[2,"din[1][0]","din[1][1]",tmp2_1,tmp2_2]
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(nL_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );
+ nL=select(1..(length(cmdL)),cmdL_#=="writecrv");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ forall(1..(length(nL)),
+ tmp2=cmdL_(nL_#+1);
+ if(length(tmp2)==1,tmp2=append(tmp2,"Surf"));
+ var=Dq+tmp2_1+"3d"+Dq;
+ varh=Dq+tmp2_1+"h3d"+Dq;
+ file=Dq+path+FheadC+tmp2_1+".txt"+Dq;
+ tmp3=concat(tmp3,[
+ "crvsfparadata",[tmp2_1,tmp2_2,1,"Crvdata"],
+ tmp2_1+"[0][0]=0;",[], //17.06.09(3lines)
+ "appendd3",[0,1,"length3(Crvdata)","Crvdata",tmp2_1],
+ "output3h",[var, varh, file,tmp2_1]
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(nL_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );
+ nL=select(1..(length(cmdL)),cmdL_#=="writescrvonsf");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ forall(1..(length(nL)),
+ tmp2=cmdL_(nL_#+1);
+ if(length(tmp2)==1,tmp2=append(tmp2,"Surf"));
+ var=Dq+tmp2_1+"3d"+Dq;
+ varh=Dq+tmp2_1+"h3d"+Dq; //17.06.09(8lines)
+ file=Dq+path+FheadC+tmp2_1+".txt"+Dq;
+ tmp3=concat(tmp3,[
+ "double "+tmp2_1+"[DsizeL][3];",[],
+ " crv3onsfparadata",[tmp2_1,tmp2_2,1,"Crvdata"],
+ tmp2_1+"[0][0]=0;",[],
+ "appendd3",[0,1,"length3(Crvdata)","Crvdata",tmp2_1],
+ "output3h",[var,varh, file ,tmp2_1]
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(nL_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );
+ nL=select(1..(length(cmdL)),cmdL_#=="writecut");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ cutctr=0;
+ forall(1..(length(nL)),
+ cutctr=#;
+ tmp2=cmdL_(nL_#+1);
+ if(length(tmp2)==2,
+ tmp2=[tmp2_1,"Surf",tmp2_2];
+ );
+ var=Dq+tmp2_1+"3d"+Dq;
+ varh=Dq+tmp2_1+"h3d"+Dq; //17.06.09(10lines)
+ file=Dq+path+FheadC+tmp2_1+".txt"+Dq;
+ tmp3=concat(tmp3,[
+ "cutfun",[tmp2_3],
+ "double "+tmp2_1+"[DsizeL][3];",[],
+ "sfcutdata",[text(cutctr),"out"], //17.06.02
+ "crv3onsfparadata",["out",tmp2_2,"Crvdata"],
+ tmp2_1+"[0][0]=0;",[],
+ "appendd3",[0,1,"length3(Crvdata)","Crvdata",tmp2_1],
+ "output3h",[var, varh, file, tmp2_1]
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(nL_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );
+ nL=select(1..(length(cmdL)),cmdL_#=="writewire");
+ cmd=[];
+ if(length(nL)>0,tmp3=cmdL_(1..(nL_1-1)),tmp3=[]);
+ forall(1..(length(nL)),
+ tmp2=cmdL_(nL_#+1);
+ if(!isstring(tmp2_2),
+ tmp2=[tmp2_1,"Surf",tmp2_2,tmp2_3];
+ );
+ var=Dq+tmp2_1+"3d"+Dq;
+ varh=Dq+tmp2_1+"h3d"+Dq; //17.06.09
+ file=Dq+path+FheadC+tmp2_1+".txt"+Dq;
+ tmp4=tmp2_(length(tmp2)); num=2;
+ if(!islist(tmp4),
+ num=tmp4; tmp4=tmp2_(length(tmp2)-1);
+ );
+ if(!islist(tmp4_1),
+ tmp3=concat(tmp3,[
+ "double udv[2]={-1,"+text(tmp4_1)+"};",[]
+ ]);
+ ,
+ len=length(tmp4_1);
+ tmp="double udv["+text(len+1)+"]={"+text(len)+",";
+ forall(tmp4_1,
+ tmp=tmp+format(#,5)+",";
+ );
+ tmp=substring(tmp,0,length(tmp)-1)+"};";
+ tmp3=concat(tmp3,[tmp,[]]);
+ );
+ if(!islist(tmp4_2),
+ tmp3=concat(tmp3,[
+ "double vdv[2]={-1,"+text(tmp4_2)+"};",[]
+ ]);
+ ,
+ len=length(tmp4_2);
+ tmp="double vdv["+text(len+1)+"]={"+text(len)+",";
+ forall(tmp4_2,
+ tmp=tmp+format(#,5)+",";
+ );
+ tmp=substring(tmp,0,length(tmp)-1)+"};";
+ tmp3=concat(tmp3,[tmp,[]]);
+ );
+ tmp3=concat(tmp3,[
+ "double "+tmp2_1+"[DsizeLL][3];",[], //17.06.09(5lines)
+ "wireparadata",["Surf", "udv","vdv", num, "Wiredata"],
+ tmp2_1+"[0][0]=0;",[],
+ "appendd3",[0,1,"length3(Wiredata)","Wiredata",tmp2_1],
+ "output3h",[var, varh, file, tmp2_1]
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(#<length(nL),
+ tmp3=cmdL_((nL_#+2)..(tmp_(#+1)-1));
+ ,
+ tmp3=cmdL_((nL_#+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );
+ );// 17.05.29upto
+ nL=select(1..(length(cmdL)),cmdL_#=="skeleton");// 17.06.05from
+ cmd=[];
+ if(length(nL)>0,
+ tmp3=cmdL_(1..(nL_1-1));
+ tmp3=concat(tmp3,["double sk[DsizeLL][3];",[]]);//17.06.13
+ ,
+ tmp3=[];
+ );
+ forall(1..(length(nL)),nn,
+ tmp2=cmdL_(nL_nn+1);
+ var=Dq+tmp2_1+"3d"+Dq;
+ file=Dq+path+FheadC+tmp2_1+".txt"+Dq;
+ tmp3=concat(tmp3,[ //17.06.08from
+ "data[0][0]=0;",[]
+ ]);
+ forall(tmp2_2,
+ if(substring(#,length(#)-1,length(#))!="h",
+ tmp1=#;
+ tmp=[0,"din[1][0]","din[1][1]",tmp1,"data"];
+ ,
+ tmp1=substring(#,0,length(#)-1);
+ tmp=[0,"din[2][0]","din[2][1]",tmp1,"data"];
+ );
+ tmp3=concat(tmp3,[
+ "dataindexd3",[3,tmp1,"din"],
+ "appendd3",tmp
+ ]);
+ );
+ forall(1..(length(tmp2_3)),
+ if(substring(tmp2_3_#,length(tmp2_3_#)-1,length(tmp2_3_#))!="h",
+ tmp1=tmp2_3_#;
+ tmp=[0,"din[1][0]","din[1][1]",tmp1,"data"];
+ ,
+ tmp1=substring(tmp2_3_#,0,length(tmp2_3_#)-1);
+ tmp=[0,"din[2][0]","din[2][1]",tmp1,"data"];
+ );
+ tmp3=concat(tmp3,[
+ "push3",["Inf",3,0,"data"],
+ "dataindexd3",[3,tmp1,"din"],
+ "appendd3",tmp
+ ]);
+ );
+ if(length(tmp2)<=3,tmp=1,tmp=tmp2_4);
+ tmp3=concat(tmp3,[
+ "skeletondata3",["data", tmp, "Eps1","Eps2","sk"],//17.06.13
+ "output3",[var, file, 2, "sk"]
+ ]);
+ cmd=concat(cmd,tmp3);
+ if(nn<length(nL),
+ tmp3=cmdL_((nL_nn+2)..(nL_(nn+1)-1));
+ ,
+ tmp3=cmdL_((nL_nn+2)..(length(cmdL)));
+ cmdL=concat(cmd,tmp3);
+ );//17.06.08upto
+ );// 17.06.05upto
+ path=DirlibC+"/";
+ path=replace(path,"\","/");
+ cmd=[
+ "#include <stdio.h>", "#include <math.h>",
+ "#include "+Dq+FheadC+"header.h"+Dq,
+ "#include "+Dq+path+"ketcommon.h"+Dq,
+ "#include "+Dq+path+"surflibhead.h"+Dq,
+ "#include "+Dq+path+"surflib.h"+Dq,
+ "int main(void){",
+ " double out[DsizeL][3], data[DsizeLL][3];", //17.06.10
+ " int i, j, nall, din[DsizeS][2];" //17.06.09
+ ];
+// tmp=select(cmdL,#=="cutfun");
+// if(length(tmp)==0,
+ if(cutctr==0, //17.06.02
+ cmdL=prepend(["1"],cmdL);
+ cmdL=prepend("cutfun",cmdL);
+ );// 17.05.26upto
+ cutctr=0;
+ forall(1..(floor(length(cmdL))/2),nn,
+ tmp1=cmdL_(2*nn-1); tmp2=cmdL_(2*nn);
+ flg=0; // 17.05.26from
+ if(tmp1=="cutfun",
+ cutctr=cutctr+1;
+ tmp=select(1..(length(cmd)), indexof(cmd_#,"main")>0);
+ tmp3=cmd_((tmp_1)..(length(cmd)));
+ cmd=cmd_(1..(tmp_1-1));
+ cmd=append(cmd,"double cutfun"+text(cutctr)+"(double u, double v){");
+ cmd=append(cmd," double p[3],val;");
+ cmd=append(cmd," surffun(u,v,p);");
+ tmp=" val="+assign(tmp2_1,["x","p[0]","y","p[1]","z","p[2]"])+";";
+ cmd=concat(cmd, [tmp," return val;", "}"]);
+ cmd=concat(cmd, tmp3);
+ flg=1;
+ );
+ if(tmp1=="xyzax3data",
+ tmp=" "+tmp1+"(";
+ tmp=tmp+textformat(tmp2_1_1_1_1,5)+",";
+ tmp=tmp+textformat(tmp2_1_1_2_1,5)+",";
+ tmp=tmp+textformat(tmp2_1_2_1_2,5)+",";
+ tmp=tmp+textformat(tmp2_1_2_2_2,5)+",";
+ tmp=tmp+textformat(tmp2_1_3_1_3,5)+",";
+ tmp=tmp+textformat(tmp2_1_3_2_3,5)+",";
+ tmp=tmp+tmp2_2+");";
+ cmd=append(cmd,tmp);
+ flg=1;
+ );
+ if(tmp1=="spaceline",
+ if(!isstring(tmp2_1),
+ println(tmp2_1+" should be assgined as a string");
+ ,
+ tmp3=parse(tmp2_1);
+ tmp=text(length(tmp3)+1);
+// cmd=append(cmd, " double "+tmp2_1+"["+tmp+"][3];");
+ tmp=text(length(tmp3));
+ cmd=append(cmd, " "+tmp2_1+"[0][0]="+tmp+";");
+ forall(1..(length(tmp3)),
+ tmp=" "+tmp2_1+"["+text(#)+"][0]="+textformat(tmp3_#_1,5)+",";
+ tmp=tmp+tmp2_1+"["+text(#)+"][1]="+textformat(tmp3_#_2,5)+",";
+ tmp=tmp+tmp2_1+"["+text(#)+"][2]="+textformat(tmp3_#_3,5)+";";
+ cmd=append(cmd,tmp);
+ );
+ );
+ flg=1;
+ );
+ if(flg==0,
+ tmp=" "+tmp1;
+ if(length(tmp2)>0,
+ tmp=tmp+"(";
+ forall(1..length(tmp2),kk,
+ if(isstring(tmp2_kk),
+ if((kk==1)&(substring(tmp1,0,5)=="write"),
+ file=path+FheadC+tmp2_kk+".txt";
+ fileh=path+FheadC+tmp2_kk+"h.txt";
+ tmp=tmp+Dq+tmp2_kk+Dq+","+Dq+file+Dq+","+Dq+fileh+Dq;
+ ,
+ tmp=tmp+tmp2_kk;
+ );
+ ,
+ if(!islist(tmp2_kk),
+ tmp=tmp+textformat(tmp2_kk,5);
+ ,
+ );
+ );
+ if(kk<length(tmp2),
+ tmp=tmp+",";
+ ,
+ tmp=tmp+");";
+ );
+ );
+ );
+ cmd=append(cmd, tmp);// 17.05.26upto
+ );
+ );
+ tmp=select(1..(length(cmd)), indexof(cmd_#,"main")>0);//17.06.02from
+ tmp3=cmd_((tmp_1)..(length(cmd)));
+ cmd=cmd_(1..(tmp_1-1));
+ cmd=append(cmd,"double cutfun(int ch, double u, double v){");
+ cmd=append(cmd," double val;");
+ forall(1..cutctr,
+ tmp=text(#);
+ cmd=append(cmd," if(ch=="+tmp+"){val=cutfun"+tmp+"(u,v);}");
+ );
+ cmd=concat(cmd,[" return val;", "}"]);
+ cmd=concat(cmd, tmp3);//17.06.02upto
+ cmd=concat(cmd, [" return 0;", "}"]);
+ SCEOUTPUT = openfile(fname);
+ forall(cmd,
+ println(SCEOUTPUT,#);
+ );
+ closefile(SCEOUTPUT);
+ tmp=fileslist(Dirwork); // 17.05.20from
+ tmp=tokenize(tmp,",");
+ tmp=select(tmp,indexof(#,".txt")>0);
+ tmp=select(tmp,indexof(#,FheadC)>0);
+ forall(tmp,
+ SCEOUTPUT = openfile(#);
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ ); // 17.05.20upto
+);
+
+kcC():=kcC(FheadC);
+kcC(cname):=(
+ regional(tmp, tmp1, flg);
+ if(iswindows(),
+ SCEOUTPUT = openfile("kc.bat");
+ println(SCEOUTPUT,"set path="+Dirwork);
+ tmp=Indexall(PathC,"\");
+ if(length(tmp)==0, tmp=ndexall(PathC,"/"));
+ tmp1=substring(PathC,0,tmp_(length(tmp))-1);
+ println(SCEOUTPUT,"cd "+tmp1);
+ tmp=PathC+" %path%\"+cname+".c";
+ tmp=tmp+" -o %path%\main.exe";
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"%path%\main.exe");
+ println(SCEOUTPUT,"echo //// > %path%\resultC.txt");
+ println(SCEOUTPUT,"exit");
+ closefile(SCEOUTPUT);
+ tmp=cname+".txt";
+ println(kc(Dirwork+Batparent,Mackc+Dirlib,tmp));
+ ,
+ SCEOUTPUT = openfile("kc.sh");
+ println(SCEOUTPUT,"#!/bin/sh");
+ println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq);
+ tmp=PathC+" "+cname+".c -o main.out";
+ println(SCEOUTPUT,tmp);
+ println(SCEOUTPUT,"./main.out");
+ println(SCEOUTPUT,"echo //// > resultC.txt");
+ println(SCEOUTPUT,"exit 0");
+ closefile(SCEOUTPUT);
+ tmp=cname+".txt";
+ println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp));
+ );
+ SCEOUTPUT=openfile("resultC.txt");
+ println(SCEOUTPUT,"");
+ closefile(SCEOUTPUT);
+ flg=0;
+ repeat(floor(10*1000/WaitUnit),
+ if(flg==0,
+ tmp1=load("resultC.txt");
+ if(substring(tmp1,0,4)=="////",
+ flg=1;
+ );
+ wait(WaitUnit);
+ );
+ );
+ if(flg==0,
+ println("Ckc not completed");
+ ,
+ println("Ckc succeeded");
+ );
+);
+
+ReadCdata(var, fname):=ReadCdata(var, fname,[]);
+ReadCdata(var, fname,options):=(
+ regional(file,dt,name,str,tmp,tmp1,opstr,gout, out3,out2);
+ if(indexof(fname,".")==0,
+ file=fname+".txt";
+ name=fname;
+ ,
+ file=fname;
+ tmp=indexof(fname,".");
+ name=substring(fname,0,tmp-1);
+ );
+ tmp=Divoptions(options);
+ opstr=tmp_8;
+ gout=ReadOutData(file);
+ GLIST=Append(GLIST,"Tmpstr=ReadOutData("+Dq+file+Dq+")");//17.06.16from
+ GLIST=Append(GLIST,"execstr(Tmpstr)");
+ if(substring(var,length(var)-1,length(var))!="h",
+ if(length(parse(gout_1))>0,
+ Projpara(var+"3d",options);
+ );
+ ,
+ if(length(parse(gout_2))>0,
+ Projpara(var+"3d",options);
+ );
+ );//17.06.16upto
+);
+
+WriteCdata(fnameorg,dataorg):=(
+//help:WriteCdata(filename, 3ddata);
+ regional(tmp,fname,data,kk,nn,pt);
+ data=dataorg;
+ if(isstring(data),data=parse(data));
+ if(MeasureDepth(data)==1,data=[data]);
+ fname=fnameorg;
+ if(indexof(fname,".")==0, fname=fname+".txt");
+ SCEOUTPUT=openfile(fname);
+ forall(1..(length(data)),kk,
+ forall(1..(length(data_kk)),nn,
+ pt=apply(1..3,Sprintf(data_kk_nn_#,5));
+ tmp=pt_1+" "+pt_2+" "+pt_3;
+ println(SCEOUTPUT,tmp);
+ );
+ if(kk<length(data),
+ println(SCEOUTPUT,"99999.00000 2.00000 0.00000");
+ );
+ );
+ closefile(SCEOUTPUT);
+);
+
+DisplayC():=DisplayC(DispC);
+DisplayC(name,options):=DisplayC([name,options]);
+DisplayC(dispc):=(
+//help:DisplayC("out",["Color=[1,0,0]");
+//help:DispC(options=["dr", "Color=[0,0,0]"])
+ regional(tmp,tmp1,cflg,var, file,options,eqL,opcindy,color);
+ forall(1..(floor(length(dispc)/2)), //17.05.18
+ var=dispc_(2*#-1); // 17.05.24
+ if(substring(var,length(var)-1,length(var))!="h",//17.06.09(5lines)
+ file=FheadC+var+".txt";
+ ,
+ file=FheadC+substring(var,0,length(var)-1)+".txt";
+ );
+ options=dispc_(2*#);
+ cflg=0;
+ tmp=Divoptions(options);//17.06.18from
+ eqL=tmp_5;
+ opcindy=tmp_9;
+ forall(eqL,
+ if(Toupper(substring(#,0,2))=="CO",
+ tmp=indexof(#,"=");
+ color=substring(#,tmp,length(#));
+ if(substring(color,0,1)=="[",
+ color=parse(color);
+ if(length(color)==3,
+ tmp1="color->"+text(color);
+ ,
+ tmp=Colorcode("rgb","cmyk",color);
+ tmp1="color->"+text(tmp);
+ );
+ options=append(options,tmp1);
+ );
+ options=remove(options,[#]);
+ cflg=1;
+ );
+ );
+ if(cflg==1,
+ Texcom("{");
+ Setcolor(color);
+ );
+ ReadCdata(var,file,options);// 17.05.24
+ if(cflg==1,
+ Texcom("}");
+ );
+ );
+);
+
+//help:end();
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketcindyliboutlog.txt b/texmf-dist/scripts/ketpic/ketlib/ketcindyliboutlog.txt
new file mode 100644
index 00000000..1e4a426e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketcindyliboutlog.txt
@@ -0,0 +1,325 @@
+//// s:2017.08.26
+//// MkketcindyJS ( data/js => CindyJS )
+// s:2017.07.02
+// MkketcindyJS ( Texview => Figure )
+// s:2017.06.23
+// MainC changed (ax1 => axx ,etc)
+// s:2017.06.16
+// Mxload added
+// ReadCdata debugged (for null list )
+// s:2017.06.13
+// Cmain changed (skeleton : sk1,2 -> sk)
+// s:2017.06.10
+// Cmain debugged(skeleton "data" should be declared commonly)
+// s:2017.06.09
+// Cmain, Cheader changed (output3h used )
+// s:2017.06.08
+// Cmain changed (skeleton finished )
+// s:2017.06.07
+// Cmain debugged ( ax3d ) /changed ( local data name)
+// s:2017.06.05
+// Cmain changed ( for skeleton)
+// s:2017.06.02
+// ReadCdata debugged ( for hiddenfile )
+// s:2017.05.29
+// DisplayC changed ( DisplayC(name,options) supported )
+// Cmain changed ("write..." are resolved in Cmain)
+// s:2017.05.27
+// Cmain changed (coding arranged)
+// s:2017.05.25
+// Cmain changed (cmd list, surfcut)
+// s:2017.05.24
+// Cmain changed ("write" changed)
+// Cheader changed (options)
+// ReadCdata3 changed
+// s:2017.05.23
+// Cmain changed (point number option)
+// s:2017.05.21
+// Cheader debugge ( Assignment of values)
+// s:2017.05.20
+// Cmain changed (files reset, param for writewire)
+// ReadCdata3 changed ( for blank data )
+// s:2017.05.18
+// CalcbyS,... changed (/2 => floor( /2))
+// DisplayC changed (color option added, floor(./2))
+// changed
+// s:2017.05.15
+// WriteCdata added
+// s:2017.05.14
+// Cheader,Cmain, kcC, ReadCdata3, DisplayC added
+// s:2017.04.14
+// ErrhandleS changed (nothing for scilab6)
+// s:2017.04.13
+// Mkviewobj changed (Error message when Setobj not defined )
+// s:2017.04.08
+// bugs fixed
+// s:2017.03.29
+// kcM changed ( for Maxima version >3.38 )
+// s:2017.02.19
+// Readcsv debugged ( waiting removed )
+// s:2017.02.09
+// Writecsv changed ( for double list )
+// Readcsv changed ( for sigle column )
+// s:2017.01.13
+// Setobj added (=Objname)
+// s:2017.01.12
+// WritetoS changed (English message for Windows )
+// s:2016.12.27
+// Mkviewobj debugged ( = )
+// s:2016.12.23
+// Hatchdata,Dotfilldata,... debugged ( "=.." => name+"=... )
+// s:2016.12.20
+// CalcbyR changed (in case of Cat!="Y" )
+// Readcsv changed (Both R and Scilab available with "Use=",
+// Flat option added )
+// s:2016.12.18
+// CalcbyS debugged (in case of Cat!="Y" )
+// s:2016.12.13
+// CalcbyS changed ( LFmark )
+// s:2016.12.12
+// Readcsv changed ( csv option added )
+// s:2016.12.11
+// CalcbyS debugged
+// Readcsv rewritten ( CalcbyS used )
+// s:2016.11.29
+// Mkobj... changed (OBJCMD added )
+// Objname(option) added
+// s: 2016.11.25
+// CalcbyR changed(about .txt file, cat="yes"(default),"no","middle")
+// s: 2016.11.24
+// CalcbyS changed(about .txt file, cat="yes","no","middle"(default))
+// s: 2016.11.22
+// CalcbyS debugged ( comment out : wfile when cat!="Y")
+// s: 2016.11.14
+// CalcbyS changed ( wfile when cat!="Y")
+// Mkobjcrvcmd changed ( for a string of a list of strings )
+// s: 2016.11.13
+// CalcbyS, CalcbyR debugged ( wflg==0 & cat!="Y")
+// s: 2016.11.08
+// Mkketcindy changed ( Buttons of KeTCindy removed)
+// Mkketcindy changed ( "Net=" option)
+// s: 2016.11.06
+// Mkketcindy debugged
+// s: 2016.10.29
+// CalcbyR debugged ( case of "Cat=no" )
+// s: 2016.10.28
+// CalcbyR changed ( options(digits=,,,) added)
+// s: 2016.10.24
+// Dataframe added
+// CalcbyR changed ( for only 1 value)
+// s: 2016.10.23
+// CalcbyS changed ( = in last line )
+// CalcbyR changed ( for output in list, vector,matrix)
+// MkketcindyJS changed ( libname )
+// MkketcindyJS changed ( libname )
+// s: 2016.10.22
+// Scifun, Rfun added
+// err => println
+// kcR,CalcbyR changed ( error message )
+// s: 2016.10.21
+// Help of Dotfilldata changed
+// s: 2016.10.20
+// kcR changed (for pathR)
+// s: 2016.10.13
+// Mkketcindyjs changed (for katex)
+// s: 2016.10.07
+// Mkketcindyjs added
+// s: 2016.10.04
+// Mkviewobj, Mkobjplate, Changeobjscale debugged
+// s: 2016.09.18
+// Histplot(help) debugged
+// s: 2016.08.09
+// CalcbyS changed ( |||| added )
+// s: 2016.07.08
+// Mkobjpoly,Mkobjplate debugged( option thick1,thick2 )
+// s: 2016.07.07
+// CalcbyR debugged( add "####" at setwindow )
+// s: 2016.06.30
+// Mkviewobj changed ( Changeobjscale executed when "Unit=.." )
+// s: 2016.06.27
+// Mkobjplatecmd debugged ( nv )
+// s: 2016.06.26
+// CalcbyS re-debugged and chaged ( case of "Cat=n", "File=" added )
+// Changeobjscale changed
+// WritetoS, WritetoR changed ( Setwindow added )
+// Changeobjscale majorly revised ( Scilab mainly used )
+// s: 2016.06.25
+// CalcbyS debugged ( case of "Cat=n" )
+// Changeobjscale added
+// s: 2016.06.19
+// Mkobjplatecmd debugged
+// s: 2016.06.18
+// Mkobjplatecmd added
+// Mkobjsymbcmd debugged ( rel > reL )
+// s: 2016.06.17
+// Mkobjpoiycmd,Mkobjsymbcmd changed (Help modified)
+// s: 2016.06.13
+// CalcbyM changed (Oprion Line=1000 )
+// s: 2016.06.12
+// CalcbyS,... changed ( LFmark removed )
+// s: 2016.06.08
+// Mkobjnrm debugged ( option eqL )
+// s: 2016.06.07
+// kcA,kcS,kcM,kcR,kcF,kcV3 changed ( kc(,Mackc+,) )
+// s: 2016.06.05
+// kcA,kcS,kcM,kcR,kcF,kcV3 changed ( kc(,,) )
+// s: 2016.06.03
+// Calcby. changed ( name added after "suceeded" )
+// s: 2016.05.29
+// kcA,kcS,kcM,kcR,kcF,kcV3 changed ( kc(Dirwork+ ) )
+// s: 2016.05.27
+// MxtexL added ( for the list of expressions )
+// s: 2016.05.26
+// AsirfunO changed ( Process implemented )
+
+//////////////
+// s: 2015.11.05 v2.1.0
+// Divided from ketcindylib
+// kcR, kcS changed ( waiting removed )
+// PlotdataS added
+// e: 2015.11.07 v2.1.1
+// Readcsv, .., changed ( for case of non-exiting file )
+// e: 2015.11.10 v2.1.2
+// Boxplot, Readcsv, Hatchdata debugged ( directory of input file )
+// e: 2015.11.11
+// Boxplot, Readcsv, Hatchdata re-debugged ( directory of input file )
+// e: 2015.11.17
+// WritetoA, kcA, CalcbyA, Asirfun added
+// e:2015.11.18
+// WritetoA, kcA, CalcbyA, Asirfun changed ( PathA )
+// CalcbyA changed ( ' for Dq=" )
+// Asirfun changed ( name adde )
+// e:2015.11.19
+// kcA changed ( for windows )
+// CalcbyR,CalcbyS changed ( ' for Dq )
+// CalcbyA changed ( a big number represented as string )
+// e:2015.11.20
+// Asirfun changed ( precise option added )
+// e:2015.11.21
+// MkprecommandS debugged
+// e:2015.11.22
+// WritetoM, kcM, CalcbyM, Mxfun added
+// PathA change ( to full path )
+// e:2015.11.23
+// CalcbyM changed ( for "+d")
+// e:2015.11.24
+// CalcbyM changed ( for windows)
+// Asirfun, Mxfun changed ( Disp, Pack options )
+// Example added
+// Mxfun changed ( Set option )
+// e:2015.11.25
+// changed "fortran" to "disp"
+// kcM changed ( for windows )
+// e:2015.11.26
+// CalcbyA, CalcbyB changed ( for wflg=0)
+// e:2015.11.27
+// AsirfunO added
+// e:2015.12.06
+// CalcbyS, CalcbyR, CalcbyM,CalcbyA changed
+// ( for length(tmp1)!=length(cmdlsit) )
+// e:2015.12.07
+// SetpathS changed ( Dirlib => Dirbin )
+// e:2015.12.11
+// SetpathS changed ( for autosetting )
+// e:2016.01.07
+// Mxtex added
+// e:2016.01.10
+// Mxtex debugged
+// kcS debugged ( for Windows )
+// e:2016.01.18
+// Mxtex debugged
+// e:2016.01.25
+// Mxtex debugged ( regional )
+// e:2016.01.30
+// MkprecommandR, MkprecommandS debugged ( -0 and 0 )
+// e:2016.02.01
+// MkprecommandR, MkprecommandS changed ( prec option added )
+// e:2016.02.03
+// MkprecommandR, MkprecommandS debugged ( sorting of VLIST )
+// AsfunO, Asfun supported
+// e:2016.02.08
+// Mxfun changed ( option PACK or LOAD)
+// e:2016.02.14
+// Hatchdata debugged ( bug of ["ii","oo"] for example)
+// e:2016.02.16
+// Dotfilldata added
+// e:2016.02.19
+// Mxtex debugged ( options )
+// e:2016.02.23
+// WritetoM, CalcbyM changed ( option "All=y" added for error )
+// CalcbyM changed ( ` changed to ' )
+// e:2016.02.24
+// CalcbyM changed ( if errors occurred, output displayed under "All=y" )
+// e:2016.02.26
+// CalcbyM changed ( defalut of All changed to "y" )
+// e:2016.02.29
+// ErrhandleS added
+// CalcbyS changed ( "Error" option )
+// Implicitplot changed ( "Mx" option added )
+// e:2016.03.01
+// Mxtex changed ( Set & Ord option added )
+// e:2016.03.02
+// PlotdataS,Implicitdata changed ( equalized )
+// e:2016.03.03
+// CalcbyM changed ( replacement ' abolished )
+// e:2016.03.05
+// Hatchdata changed ( "Error" added )
+// e:2016.03.09
+// Implicitplot, Hatchdata changed ( "Out=" option readded)
+// e:2016.03.11
+// WritetoA,AsirfunO changed ( ooshima lib read in AsirfunO)
+// e:2016.03.12
+// CalcbyM changed (output for "Cat=y")
+// kcV3,Mkviewobj added
+// e:2016.03.12
+// kcV3,Mkviewobj debugged/changed
+// e:2016.03.14
+// Mkviewobj changed ( repetition of Meshlab avoided )
+// e:2016.03.15
+// Mkviewobj changed ( for making from objlist )
+// Implicitplot changed ( error handling)
+// e:2016.03.17
+// WritetoF,kcF,CalcbyF,Frifun added
+// e:2016.03.26
+// kcF changed ( added for windows )
+// e: 2016.04.04
+// PlotdataS, Implicitplot changed (Addgraph added )
+// e: 2016.04.06
+// Hatchdata changed (Chunderscore added )
+// e: 2016.04.14
+// Mkobjcmd added
+// e:2016.04.15
+// Mkobjthickcmd, Mkobjnrm, Mkobjcrvcmd added
+// Mkobjcrvcmd, Concatcmd added
+// e:2016.04.17
+// Mkobjsymbcmd added
+// e:2016.04.20
+// Mkobjnrm,Mkobjthickcmd changed
+// e:2016.04.21
+// Mkobjnrm,Mkobjthickcmd changed (precmd added , option "simp" unused)
+// e:2016.04.22
+// Mkobjpolycmd added
+// e:2016.04.23
+// Mkviewobj,Mkobjpolycmd,Mkobjcrvcmd,Mkobjsymbcmd changed
+// MkprecommandR debugged
+// e:2016.04.26
+// CalcbyM changed ( Indexall used)
+// e:2016.04.29
+// Mxbatch added
+// e:2016.04.30
+// Mkobjnrm changed ( twice )
+// Mxbatch debugged
+// e:2016.05.02
+// Mkobjnrm changed ( Out= , disp option )
+// e:2016.05.10
+// Mkobjsymbcmd changed ( defaut path changed )
+// e:2016.05.12
+// Mkobjnrm changed ( name => "nrm"+nm )
+// e:2016.05.18
+// WritetoA changed ( output )
+// CalcbyA changed ( ; supported )
+// e:2016.05.1
+// Testfunstr debugged ( ".x", ".y" )
+////// To Reverse sequence //////
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Addcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Addcounter.bin
new file mode 100644
index 00000000..c1e3ef24
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Addcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Anglemark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Anglemark.bin
new file mode 100644
index 00000000..8b094651
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Anglemark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowdata.bin
new file mode 100644
index 00000000..2af2be64
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowhead.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowhead.bin
new file mode 100644
index 00000000..f4101b32
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowhead.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowheaddata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowheaddata.bin
new file mode 100644
index 00000000..3640469b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowheaddata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowline.bin
new file mode 100644
index 00000000..0d68e6d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Arrowline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assign.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assign.bin
new file mode 100644
index 00000000..3f243306
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assign.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignadd.bin
new file mode 100644
index 00000000..99a0cecd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignrep.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignrep.bin
new file mode 100644
index 00000000..47ac2ac9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignrep.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignset.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignset.bin
new file mode 100644
index 00000000..afb1b3bc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Assignset.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Beginpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Beginpicture.bin
new file mode 100644
index 00000000..81625f07
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Beginpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezier.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezier.bin
new file mode 100644
index 00000000..1e8b41fb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezier.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezierpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezierpt.bin
new file mode 100644
index 00000000..f146b511
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bezierpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderHiddenData.bin
new file mode 100644
index 00000000..bb466f84
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderPt.bin
new file mode 100644
index 00000000..80964b1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/BorderPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderparadata.bin
new file mode 100644
index 00000000..94cfb714
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderpersdata.bin
new file mode 100644
index 00000000..bee787d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderrawdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderrawdata.bin
new file mode 100644
index 00000000..f53ad324
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Borderrawdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowdata.bin
new file mode 100644
index 00000000..05a4fb2e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowmiddle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowmiddle.bin
new file mode 100644
index 00000000..bc02de52
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowmiddle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowname.bin
new file mode 100644
index 00000000..77aa840f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bowname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bownamerot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bownamerot.bin
new file mode 100644
index 00000000..49978903
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Bownamerot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcHeight.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcHeight.bin
new file mode 100644
index 00000000..5e3f28b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcHeight.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcWidth.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcWidth.bin
new file mode 100644
index 00000000..426023be
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CalcWidth.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Calcfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Calcfun.bin
new file mode 100644
index 00000000..7745bccc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Calcfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameraCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameraCurve.bin
new file mode 100644
index 00000000..d037c656
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameraCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameracoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameracoordCurve.bin
new file mode 100644
index 00000000..13e374db
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CameracoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpara.bin
new file mode 100644
index 00000000..c16f84ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpers.bin
new file mode 100644
index 00000000..55b15ad7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cancoordpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Circledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Circledata.bin
new file mode 100644
index 00000000..9a27e094
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Circledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Clipindomain.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Clipindomain.bin
new file mode 100644
index 00000000..73ea5db3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Clipindomain.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closefile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closefile.bin
new file mode 100644
index 00000000..e7a00c3e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closefile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closeobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closeobj.bin
new file mode 100644
index 00000000..f62af795
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closeobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepar.bin
new file mode 100644
index 00000000..f73458f1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closephr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closephr.bin
new file mode 100644
index 00000000..5960bb73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closephr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepicture.bin
new file mode 100644
index 00000000..1c8fd062
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Closepicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Connectseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Connectseg.bin
new file mode 100644
index 00000000..70566c55
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Connectseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crossprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crossprod.bin
new file mode 100644
index 00000000..ade04624
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crossprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfHiddenData.bin
new file mode 100644
index 00000000..5c4f8404
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfparadata.bin
new file mode 100644
index 00000000..7d645929
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfpersdata.bin
new file mode 100644
index 00000000..7f994b75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crv3onsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvonsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvonsfHiddenData.bin
new file mode 100644
index 00000000..d92d7a5a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvonsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfparadata.bin
new file mode 100644
index 00000000..71b24de1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfpersdata.bin
new file mode 100644
index 00000000..835d570f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvonsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvsfHiddenData.bin
new file mode 100644
index 00000000..0ecbcb1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CrvsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfparadata.bin
new file mode 100644
index 00000000..dba77269
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfpersdata.bin
new file mode 100644
index 00000000..b3a3f8e4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Crvsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspData.bin
new file mode 100644
index 00000000..b2124b51
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspPt.bin
new file mode 100644
index 00000000..08f82d89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspSplitPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspSplitPt.bin
new file mode 100644
index 00000000..2fbf6adb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/CuspSplitPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpara.bin
new file mode 100644
index 00000000..b09e4aeb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpers.bin
new file mode 100644
index 00000000..609d057a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cuspsplitpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cutsf2d.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cutsf2d.bin
new file mode 100644
index 00000000..e6f70b1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Cutsf2d.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dashline.bin
new file mode 100644
index 00000000..8f7d28a1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dataindex.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dataindex.bin
new file mode 100644
index 00000000..e3bd11d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dataindex.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Definecolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Definecolor.bin
new file mode 100644
index 00000000..f0ff3ef8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Definecolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Deqplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Deqplot.bin
new file mode 100644
index 00000000..a3ba57b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Deqplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Derivative.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Derivative.bin
new file mode 100644
index 00000000..8ab45716
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Derivative.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Diagcelldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Diagcelldata.bin
new file mode 100644
index 00000000..70d3663e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Diagcelldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividegraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividegraphics.bin
new file mode 100644
index 00000000..03498fd7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividegraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividetable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividetable.bin
new file mode 100644
index 00000000..abf752c8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dividetable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Doscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Doscaling.bin
new file mode 100644
index 00000000..1a024a4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Doscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotfilldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotfilldata.bin
new file mode 100644
index 00000000..589adeaf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotfilldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotprod.bin
new file mode 100644
index 00000000..7a097bea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dotprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dottedline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dottedline.bin
new file mode 100644
index 00000000..c4c45ddd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dottedline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dropnumlistcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dropnumlistcrv.bin
new file mode 100644
index 00000000..9ac44969
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Dropnumlistcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Droppoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Droppoint.bin
new file mode 100644
index 00000000..f4bff84e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Droppoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwline.bin
new file mode 100644
index 00000000..69c411ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwpt.bin
new file mode 100644
index 00000000..5af3db83
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwxy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwxy.bin
new file mode 100644
index 00000000..54ce1e7c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Drwxy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Embed.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Embed.bin
new file mode 100644
index 00000000..5a081c10
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Embed.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Enclosing.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Enclosing.bin
new file mode 100644
index 00000000..17e55798
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Enclosing.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/EnclosingS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/EnclosingS.bin
new file mode 100644
index 00000000..1a6860c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/EnclosingS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Endpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Endpicture.bin
new file mode 100644
index 00000000..7fa6e7b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Endpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepara.bin
new file mode 100644
index 00000000..e4bb3e12
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepers.bin
new file mode 100644
index 00000000..a300752a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Evlptablepers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Execmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Execmd.bin
new file mode 100644
index 00000000..3ed90ff9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Execmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Expr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Expr.bin
new file mode 100644
index 00000000..3cae8493
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Expr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Exprrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Exprrot.bin
new file mode 100644
index 00000000..e249a055
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Exprrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Faceremovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Faceremovaldata.bin
new file mode 100644
index 00000000..f7f2e09b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Faceremovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Facesdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Facesdata.bin
new file mode 100644
index 00000000..003930bd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Facesdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Findcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Findcell.bin
new file mode 100644
index 00000000..1cc63d81
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Findcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Flattenlist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Flattenlist.bin
new file mode 100644
index 00000000..47cd3aff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Flattenlist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fontsize.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fontsize.bin
new file mode 100644
index 00000000..d0ac6d1f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fontsize.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriercoeff.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriercoeff.bin
new file mode 100644
index 00000000..0c1ff22d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriercoeff.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/FouriercoeffL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/FouriercoeffL.bin
new file mode 100644
index 00000000..0ada7614
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/FouriercoeffL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriersum.bin
new file mode 100644
index 00000000..80d7fa1d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fouriersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fracform.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fracform.bin
new file mode 100644
index 00000000..f17997ae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fracform.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Framedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Framedata.bin
new file mode 100644
index 00000000..4dfc5fba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Framedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fullformfunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fullformfunc.bin
new file mode 100644
index 00000000..a445388d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Fullformfunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gaiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gaiseki.bin
new file mode 100644
index 00000000..00cefe7b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gaiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Getcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Getcounter.bin
new file mode 100644
index 00000000..5efa1ba3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Getcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gettrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gettrace.bin
new file mode 100644
index 00000000..31de11e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Gettrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hatchdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hatchdata.bin
new file mode 100644
index 00000000..8bc86748
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hatchdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hexahedrondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hexahedrondata.bin
new file mode 100644
index 00000000..ebb9f45e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Hexahedrondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/HiddenWireData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/HiddenWireData.bin
new file mode 100644
index 00000000..0335b185
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/HiddenWireData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Htickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Htickmark.bin
new file mode 100644
index 00000000..88ce57e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Htickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ImplicitData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ImplicitData.bin
new file mode 100644
index 00000000..f52ad0ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ImplicitData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Implicitplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Implicitplot.bin
new file mode 100644
index 00000000..5662575f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Implicitplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/InWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/InWindow.bin
new file mode 100644
index 00000000..38306a20
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/InWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Initangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Initangle.bin
new file mode 100644
index 00000000..3c6ed6c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Initangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Integrate.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Integrate.bin
new file mode 100644
index 00000000..deb2de0d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Integrate.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvs.bin
new file mode 100644
index 00000000..3a87071b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectcrvsPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectcrvsPp.bin
new file mode 100644
index 00000000..de85e2a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectcrvsPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvsf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvsf.bin
new file mode 100644
index 00000000..3a918b84
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectcrvsf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectlines.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectlines.bin
new file mode 100644
index 00000000..5b1846e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Intersectlines.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectselfPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectselfPp.bin
new file mode 100644
index 00000000..2b895f4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/IntersectselfPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invdashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invdashline.bin
new file mode 100644
index 00000000..76baa221
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invdashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invert.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invert.bin
new file mode 100644
index 00000000..def0bb31
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invert.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invparapt.bin
new file mode 100644
index 00000000..07c0c078
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invperspt.bin
new file mode 100644
index 00000000..5dbdc7cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Invperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joincrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joincrvs.bin
new file mode 100644
index 00000000..dafe1e24
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joincrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joingraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joingraphics.bin
new file mode 100644
index 00000000..97caac64
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Joingraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ketinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ketinit.bin
new file mode 100644
index 00000000..70e1971c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ketinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kouten.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kouten.bin
new file mode 100644
index 00000000..21dc66a1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kouten.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/KoutenList.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/KoutenList.bin
new file mode 100644
index 00000000..9ccea2a3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/KoutenList.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Koutenseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Koutenseg.bin
new file mode 100644
index 00000000..d191d41a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Koutenseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukannozoku.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukannozoku.bin
new file mode 100644
index 00000000..313c934d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukannozoku.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukeiwake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukeiwake.bin
new file mode 100644
index 00000000..f705d5b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kukeiwake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyorihensuu.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyorihensuu.bin
new file mode 100644
index 00000000..3940a613
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyorihensuu.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyoukai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyoukai.bin
new file mode 100644
index 00000000..c9ce9f14
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Kyoukai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letter.bin
new file mode 100644
index 00000000..bcaebbbd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letterrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letterrot.bin
new file mode 100644
index 00000000..4bc6206a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Letterrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Lineplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Lineplot.bin
new file mode 100644
index 00000000..51fbfbe1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Lineplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Listplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Listplot.bin
new file mode 100644
index 00000000..0fa577df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Listplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeBowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeBowdata.bin
new file mode 100644
index 00000000..fb13efa4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeBowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeCurves.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeCurves.bin
new file mode 100644
index 00000000..98ddd1a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeCurves.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakecutbycrvL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakecutbycrvL.bin
new file mode 100644
index 00000000..6356eaed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakecutbycrvL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makehasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makehasen.bin
new file mode 100644
index 00000000..0d7bd77d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makehasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeliststr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeliststr.bin
new file mode 100644
index 00000000..83ba3861
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeliststr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makesfcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makesfcutoffdata.bin
new file mode 100644
index 00000000..92534466
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makesfcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeshasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeshasen.bin
new file mode 100644
index 00000000..2d013048
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeshasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletondata.bin
new file mode 100644
index 00000000..0bd11580
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletonpersdata.bin
new file mode 100644
index 00000000..49a24e6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makeskeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makevaltable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makevaltable.bin
new file mode 100644
index 00000000..67316bd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makevaltable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeveLfaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeveLfaceL.bin
new file mode 100644
index 00000000..1658b408
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MakeveLfaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makexybdy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makexybdy.bin
new file mode 100644
index 00000000..95c31670
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Makexybdy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mawarikomi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mawarikomi.bin
new file mode 100644
index 00000000..fcf74e3c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mawarikomi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MeetWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MeetWindow.bin
new file mode 100644
index 00000000..f5ced4c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MeetWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Meetpoints.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Meetpoints.bin
new file mode 100644
index 00000000..6cd9f985
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Meetpoints.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Member.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Member.bin
new file mode 100644
index 00000000..c41eb72e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Member.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi.bin
new file mode 100644
index 00000000..ab493424
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi2.bin
new file mode 100644
index 00000000..659d412f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Menkakusi2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mix.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mix.bin
new file mode 100644
index 00000000..f26a75b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mix.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixL.bin
new file mode 100644
index 00000000..1a2a931f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixS.bin
new file mode 100644
index 00000000..92c22101
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/MixS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixadd.bin
new file mode 100644
index 00000000..43809cb9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixdisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixdisp.bin
new file mode 100644
index 00000000..4562fd87
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixdisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixjoin.bin
new file mode 100644
index 00000000..29800896
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixlength.bin
new file mode 100644
index 00000000..dc725565
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixmake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixmake.bin
new file mode 100644
index 00000000..e1ab36e0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixmake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixop.bin
new file mode 100644
index 00000000..74a5a6aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixsub.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixsub.bin
new file mode 100644
index 00000000..332d7968
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixsub.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixtype.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixtype.bin
new file mode 100644
index 00000000..b188ade7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Mixtype.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naigai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naigai.bin
new file mode 100644
index 00000000..4c0a5b2d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naigai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naiseki.bin
new file mode 100644
index 00000000..d7d9f480
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Naiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nearestpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nearestpt.bin
new file mode 100644
index 00000000..bf51af8a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nearestpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Newlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Newlength.bin
new file mode 100644
index 00000000..80a32401
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Newlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara.bin
new file mode 100644
index 00000000..b7f0d8cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara2.bin
new file mode 100644
index 00000000..7bfcf7ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpara2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers.bin
new file mode 100644
index 00000000..2bdabcc4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers2.bin
new file mode 100644
index 00000000..b692d55a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Nohiddenpers2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Numptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Numptcrv.bin
new file mode 100644
index 00000000..57a2ce6f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Numptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objcurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objcurve.bin
new file mode 100644
index 00000000..845d40ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objcurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objjoin.bin
new file mode 100644
index 00000000..92afe9ad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objname.bin
new file mode 100644
index 00000000..a14bcc2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolygon.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolygon.bin
new file mode 100644
index 00000000..da05430c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolygon.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolyhedron.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolyhedron.bin
new file mode 100644
index 00000000..18416f1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objpolyhedron.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objrecs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objrecs.bin
new file mode 100644
index 00000000..bef4fb7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objrecs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsurf.bin
new file mode 100644
index 00000000..6bbe6d7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsymb.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsymb.bin
new file mode 100644
index 00000000..8c215679
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objsymb.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objthicksurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objthicksurf.bin
new file mode 100644
index 00000000..e66c254e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Objthicksurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Op.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Op.bin
new file mode 100644
index 00000000..fb3d3b45
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Op.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openfile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openfile.bin
new file mode 100644
index 00000000..e1625a76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openfile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openobj.bin
new file mode 100644
index 00000000..2024ea60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpar.bin
new file mode 100644
index 00000000..c812540a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openphr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openphr.bin
new file mode 100644
index 00000000..41d69ca5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openphr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpicture.bin
new file mode 100644
index 00000000..f10f1efc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Openpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovalbox.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovalbox.bin
new file mode 100644
index 00000000..32bf34e8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovalbox.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovaldata.bin
new file mode 100644
index 00000000..d28e36ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramark.bin
new file mode 100644
index 00000000..a7078f9c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ParamonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ParamonCurve.bin
new file mode 100644
index 00000000..e4c31df3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ParamonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramoncrv.bin
new file mode 100644
index 00000000..f532d7ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramplot.bin
new file mode 100644
index 00000000..ffebca84
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Paramplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Parapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Parapt.bin
new file mode 100644
index 00000000..e7958ab9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Parapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv.bin
new file mode 100644
index 00000000..d54eb52f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv3.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv3.bin
new file mode 100644
index 00000000..07321262
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partcrv3.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partframe.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partframe.bin
new file mode 100644
index 00000000..a13d3f5f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partframe.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PartitionPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PartitionPt.bin
new file mode 100644
index 00000000..58cef916
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PartitionPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partitionseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partitionseg.bin
new file mode 100644
index 00000000..6f557a3b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Partitionseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Perspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Perspt.bin
new file mode 100644
index 00000000..f95c613a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Perspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhFaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhFaceL.bin
new file mode 100644
index 00000000..2d1eec35
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhFaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhHiddenData.bin
new file mode 100644
index 00000000..ac5490d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhVertexL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhVertexL.bin
new file mode 100644
index 00000000..814b8791
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PhVertexL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutdata.bin
new file mode 100644
index 00000000..d700ec69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutoffdata.bin
new file mode 100644
index 00000000..ccea3366
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phidegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phidegree.bin
new file mode 100644
index 00000000..c3f667e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phidegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phparadata.bin
new file mode 100644
index 00000000..2e3c664b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phpersdata.bin
new file mode 100644
index 00000000..1a2bbf95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawparadata.bin
new file mode 100644
index 00000000..903c9029
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawpersdata.bin
new file mode 100644
index 00000000..5e7b5ffb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsparadata.bin
new file mode 100644
index 00000000..da8b1196
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phspersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phspersdata.bin
new file mode 100644
index 00000000..6ac27dcb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phspersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawparadata.bin
new file mode 100644
index 00000000..a3da7dd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawpersdata.bin
new file mode 100644
index 00000000..8843cde4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Phsrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Plotdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Plotdata.bin
new file mode 100644
index 00000000..c0547852
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Plotdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointdata.bin
new file mode 100644
index 00000000..8c11c2c2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PointonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PointonCurve.bin
new file mode 100644
index 00000000..e6055b42
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PointonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointoncrv.bin
new file mode 100644
index 00000000..cf693dd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Pointoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Powersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Powersum.bin
new file mode 100644
index 00000000..1dce322f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Powersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Prime.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Prime.bin
new file mode 100644
index 00000000..e7094eb4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Prime.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Printobjstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Printobjstr.bin
new file mode 100644
index 00000000..3a62be73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Printobjstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjCurve.bin
new file mode 100644
index 00000000..2ca583e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjcoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjcoordCurve.bin
new file mode 100644
index 00000000..5de23ccd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ProjcoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpara.bin
new file mode 100644
index 00000000..bda03ab0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpers.bin
new file mode 100644
index 00000000..fbf6d134
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Projpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptcrv.bin
new file mode 100644
index 00000000..13f43f67
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptend.bin
new file mode 100644
index 00000000..10ac2f07
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PthiddenQ.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PthiddenQ.bin
new file mode 100644
index 00000000..cf36ca4e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PthiddenQ.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptne.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptne.bin
new file mode 100644
index 00000000..4f608b89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptne.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptnw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptnw.bin
new file mode 100644
index 00000000..727cf4d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptnw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptse.bin
new file mode 100644
index 00000000..f09e463c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptstart.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptstart.bin
new file mode 100644
index 00000000..c1303557
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptstart.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptsw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptsw.bin
new file mode 100644
index 00000000..1003cd61
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ptsw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcell.bin
new file mode 100644
index 00000000..be3a6f13
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcirmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcirmark.bin
new file mode 100644
index 00000000..d154a0a0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putcirmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoL.bin
new file mode 100644
index 00000000..77a99874
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLexpr.bin
new file mode 100644
index 00000000..01e1b69c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLstr.bin
new file mode 100644
index 00000000..a4872a7f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/PutcoLstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putdashmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putdashmark.bin
new file mode 100644
index 00000000..1e679bfc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putdashmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrecmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrecmark.bin
new file mode 100644
index 00000000..5df6db75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrecmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrow.bin
new file mode 100644
index 00000000..042a7261
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowexpr.bin
new file mode 100644
index 00000000..df1a3849
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowstr.bin
new file mode 100644
index 00000000..da18fb37
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Putrowstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Puttrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Puttrace.bin
new file mode 100644
index 00000000..10769324
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Puttrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ratiocmyk.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ratiocmyk.bin
new file mode 100644
index 00000000..56a87566
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ratiocmyk.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadOutData.bin
new file mode 100644
index 00000000..0acb33cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadfromCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadfromCindy.bin
new file mode 100644
index 00000000..8d4a1b0e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ReadfromCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Readtextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Readtextdata.bin
new file mode 100644
index 00000000..f51f7599
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Readtextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Reflectdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Reflectdata.bin
new file mode 100644
index 00000000..02bd0619
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Reflectdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rmmember.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rmmember.bin
new file mode 100644
index 00000000..1036fe46
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rmmember.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3data.bin
new file mode 100644
index 00000000..6cfc7b1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3pt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3pt.bin
new file mode 100644
index 00000000..7bc8974d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotate3pt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotatedata.bin
new file mode 100644
index 00000000..dcde7e7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Rotatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Roundstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Roundstr.bin
new file mode 100644
index 00000000..c9678719
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Roundstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Scaledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Scaledata.bin
new file mode 100644
index 00000000..aca40719
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Scaledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sectionview.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sectionview.bin
new file mode 100644
index 00000000..bfdb8495
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sectionview.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setangle.bin
new file mode 100644
index 00000000..997e8178
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setarrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setarrow.bin
new file mode 100644
index 00000000..1d2063bf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setarrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setax.bin
new file mode 100644
index 00000000..46e49d69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcolor.bin
new file mode 100644
index 00000000..ae62bffa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcounter.bin
new file mode 100644
index 00000000..3a609bc9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmark.bin
new file mode 100644
index 00000000..be2cbbb6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmarklen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmarklen.bin
new file mode 100644
index 00000000..79ae6660
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setmarklen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjdecimals.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjdecimals.bin
new file mode 100644
index 00000000..3fe068d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjdecimals.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjscale.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjscale.bin
new file mode 100644
index 00000000..adc5ef97
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setobjscale.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setorigin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setorigin.bin
new file mode 100644
index 00000000..ed695e7f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setorigin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpen.bin
new file mode 100644
index 00000000..934f8764
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpers.bin
new file mode 100644
index 00000000..e417c91f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpt.bin
new file mode 100644
index 00000000..f9fb21b4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setscaling.bin
new file mode 100644
index 00000000..faf60668
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoL.bin
new file mode 100644
index 00000000..c0d4e9e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoR.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoR.bin
new file mode 100644
index 00000000..44dc173e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/SetstereoR.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setunitlen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setunitlen.bin
new file mode 100644
index 00000000..d6b8e988
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setunitlen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setversion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setversion.bin
new file mode 100644
index 00000000..9658e1ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setversion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setwindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setwindow.bin
new file mode 100644
index 00000000..fc39c4e1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Setwindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sf3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sf3data.bin
new file mode 100644
index 00000000..bed3747e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sf3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdparadata.bin
new file mode 100644
index 00000000..bd7b7168
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdpersdata.bin
new file mode 100644
index 00000000..86ba2a9e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawparadata.bin
new file mode 100644
index 00000000..c4009953
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawpersdata.bin
new file mode 100644
index 00000000..278af331
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfbdrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutdata.bin
new file mode 100644
index 00000000..5aa6fd04
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffparadata.bin
new file mode 100644
index 00000000..b22043d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffpersdata.bin
new file mode 100644
index 00000000..64f416d6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawparadata.bin
new file mode 100644
index 00000000..cd356699
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawpersdata.bin
new file mode 100644
index 00000000..295812ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfcutoffrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfparadata.bin
new file mode 100644
index 00000000..c98b95ed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfpersdata.bin
new file mode 100644
index 00000000..5a780fab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Shade.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Shade.bin
new file mode 100644
index 00000000..c4a3aef7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Shade.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeleton2data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeleton2data.bin
new file mode 100644
index 00000000..b3d2d402
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeleton2data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpara3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpara3data.bin
new file mode 100644
index 00000000..5895e254
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpara3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonparadata.bin
new file mode 100644
index 00000000..c34f7e16
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpers3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpers3data.bin
new file mode 100644
index 00000000..4ba4947b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpers3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpersdata.bin
new file mode 100644
index 00000000..9c83ea64
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Skeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spacecurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spacecurve.bin
new file mode 100644
index 00000000..0e8bacaf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spacecurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spaceline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spaceline.bin
new file mode 100644
index 00000000..b097e980
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Spaceline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Splinedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Splinedata.bin
new file mode 100644
index 00000000..7a3c634c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Splinedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Strop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Strop.bin
new file mode 100644
index 00000000..ca70656e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Strop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Subs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Subs.bin
new file mode 100644
index 00000000..66f8e6c0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Subs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sumfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sumfun.bin
new file mode 100644
index 00000000..a2bafc2c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Sumfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symb3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symb3data.bin
new file mode 100644
index 00000000..131297e0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symb3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symbdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symbdata.bin
new file mode 100644
index 00000000..a1a27f00
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Symbdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tabledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tabledata.bin
new file mode 100644
index 00000000..ab4bb5ed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tabledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texcom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texcom.bin
new file mode 100644
index 00000000..74871299
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texcom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texctr.bin
new file mode 100644
index 00000000..e0e2dab3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texelse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texelse.bin
new file mode 100644
index 00000000..4e974456
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texelse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texend.bin
new file mode 100644
index 00000000..d22ea31d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendfor.bin
new file mode 100644
index 00000000..0d86b601
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendif.bin
new file mode 100644
index 00000000..46fd7b7e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texendif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texfor.bin
new file mode 100644
index 00000000..f5e92c99
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texforinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texforinit.bin
new file mode 100644
index 00000000..a8140128
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texforinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texif.bin
new file mode 100644
index 00000000..be4c9157
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texletter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texletter.bin
new file mode 100644
index 00000000..99ef9902
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texletter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewcmd.bin
new file mode 100644
index 00000000..0904029d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewctr.bin
new file mode 100644
index 00000000..7d332cfd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texnewctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texrenewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texrenewcmd.bin
new file mode 100644
index 00000000..1abdf882
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texrenewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texsetctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texsetctr.bin
new file mode 100644
index 00000000..ccfce689
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texsetctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texthectr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texthectr.bin
new file mode 100644
index 00000000..f2e50561
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texthectr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvalctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvalctr.bin
new file mode 100644
index 00000000..a224f885
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvalctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvctr.bin
new file mode 100644
index 00000000..2fee3584
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Texvctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Thetadegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Thetadegree.bin
new file mode 100644
index 00000000..5f360f2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Thetadegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ThisVersion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ThisVersion.bin
new file mode 100644
index 00000000..5aa530ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ThisVersion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tolist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tolist.bin
new file mode 100644
index 00000000..5e76126d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Tolist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translate3data.bin
new file mode 100644
index 00000000..3fd4aeda
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translatedata.bin
new file mode 100644
index 00000000..3262007d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Translatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Trunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Trunc.bin
new file mode 100644
index 00000000..a05f649a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Trunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Unscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Unscaling.bin
new file mode 100644
index 00000000..1bd27535
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Unscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa.bin
new file mode 100644
index 00000000..1668581e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa2.bin
new file mode 100644
index 00000000..3acff07e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vecnagasa2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Viewfrom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Viewfrom.bin
new file mode 100644
index 00000000..06515c27
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Viewfrom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vtickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vtickmark.bin
new file mode 100644
index 00000000..e0c9fdf2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Vtickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Windisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Windisp.bin
new file mode 100644
index 00000000..487a5881
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Windisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WireHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WireHiddenData.bin
new file mode 100644
index 00000000..15d7c7ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WireHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WirePt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WirePt.bin
new file mode 100644
index 00000000..8356c7d3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WirePt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wireparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wireparadata.bin
new file mode 100644
index 00000000..8a956544
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wireparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirepersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirepersdata.bin
new file mode 100644
index 00000000..06813c26
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirepersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawparadata.bin
new file mode 100644
index 00000000..53ef48f2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawpersdata.bin
new file mode 100644
index 00000000..a4463d6f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Wirerawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WriteOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WriteOutData.bin
new file mode 100644
index 00000000..35bbb30a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WriteOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writeobjpoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writeobjpoint.bin
new file mode 100644
index 00000000..1c115eb9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writeobjpoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writetextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writetextdata.bin
new file mode 100644
index 00000000..90e83be0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Writetextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WritetoCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WritetoCindy.bin
new file mode 100644
index 00000000..3cc76a71
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/WritetoCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmax.bin
new file mode 100644
index 00000000..51ccdf48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmin.bin
new file mode 100644
index 00000000..bba8a4ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xmin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzax3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzax3data.bin
new file mode 100644
index 00000000..3a5e517b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzax3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxparaname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxparaname.bin
new file mode 100644
index 00000000..d89801c7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxparaname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxpersname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxpersname.bin
new file mode 100644
index 00000000..f89ae3a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Xyzaxpersname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymax.bin
new file mode 100644
index 00000000..cc5aea83
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymin.bin
new file mode 100644
index 00000000..e454fb5a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Ymin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zparapt.bin
new file mode 100644
index 00000000..1749fad9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zperspt.bin
new file mode 100644
index 00000000..8613eba7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/Zperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ketcindylibhelpE.txt b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ketcindylibhelpE.txt
new file mode 100644
index 00000000..437bdefd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/ketcindylibhelpE.txt
@@ -0,0 +1,116 @@
+//help:start();
+//help:drawimage*(import image into the screen);
+//help:drawtext*(write letters on the screen);
+//help:Option1*(specify the style of drawing lines);
+//help:Option2*(specify the way of writing data out);
+//help:Option3*(specify the way of reading and writing data in);
+//help:Changestyle*(change the style for drawing plot data);
+//help:Workprocess*(display the process of execution);
+//help:Textformat*(convert number into string with specific number of digits);
+//help:Assign*(replace the name of variable in the string by some specific value);
+//help:Flattenlist*(flatten the list of data);
+//help:Dotprod*(inner product);
+//help:Crossprod*(exterior product);
+//help:Ptstart*(starting point of plot data);
+//help:Ptend*(ending point of plot data);
+//help:Numptcrvtenn*(number of points in plot data);
+//help:Ptcrv*(the n-th point of plot data);
+//help:Invert*(reverse the orientation of curve);
+//help:ParamonCurve*(information (parameter value etc.) of the point in plot data);
+//help:PointonCurve*(the point in the plot data specified by the given information);
+//help:Nearestptcrv*(the point in the curve which is nearest to the given point);
+//help:Nearestpt*(the points in two given curves which are nearest each other);
+//help:Derivative*(calculate the differential coefficient);
+//help:Integrate*(numerical integration);
+//help:Findarea*(calculate the area of the region surrounded by a closed curve);
+//help:Findlength*(calculate the length of curve);
+//help:Com2nd*(add the Scilab command to write out plot data into TeX);
+//help:Texcom*(write command into TeX output exactly as written here);
+//help:SetEnglish*(display Scilab messages in English language);
+//help:Setunitlen*(specify the unit length);
+//help:Setmarklen*(specify the unit length of the tickmarks on coordinate axis);
+//help:Setorigin*(specify the position the origin);
+//help:Fontsize*(specify the size of font);
+ //help:Setpen*(specify the thickness of line);
+//help:Setpt*(specify the size of point);
+//help:Definecolor*(define the color for user's own use);
+//help:Setcolor*(specify the color);
+//help:Joincrvs*(join curves);
+//help:Partcrv*(cut out some part of the curve);
+//help:Pointdata*(generate the plot data of point
+//additional option : "Size=");
+//help:Listplot*(generate the plot data of a polyline);
+//help:Lineplot*(generate the plot data of line);
+//help:Plotdata*(generate the plot data of function
+//additional option : "Num=", "Exc=", "Dis=");
+//help:Paramplot*(generate the plot data of parametric function
+//additional option : "Num=", "Exc=", "Dis=");
+//help:Circledata*(generate the plot data of circle
+//additional option : "Num=", "Rng=");
+//help:Framedata*(generate the plot data of rectangle);
+//help:Ovaldata*(generate the plot data of oval shape);
+//help:Arrowhead*(generate the plot data of arrowhead
+//option : size, sharpness, shape and position in the arrow);
+//help:Arrowdata*(generate the plot data of arrow line
+//option : size of arrowhead, sharpness(angle),position of arrowhead);
+//help:Anglemark*(generate the plot data of angle mark option : size);
+//help:Paramark*(generate the plot data of right angle mark option : size);
+//help:Bowdata*(generate the plot data of bow arched curve
+//option : curvatute, size of the blank space, letter);
+//help:Deqplot*(generate the solution curve of differential equation
+//additional option : "Num=");
+//help:Hatchdata*(add hatching into some region
+// option : slope, degree, space betwen lines));
+//help:Enclosing*(generate the plot data of closed curve connecting some curves);
+//help:Shade*(add shading into some region option : depth);
+//help:Rotatepoint*(rotate the point, option : center);
+//help:Translatepoint*(pararell transport of the point);
+//help:Scalepoint*(magnify or reduce the position of point option : center);
+ //help:Reflectpoint*(reflect the point);
+//help:Rotatedata*(rotate the plot data option : center);
+//help:Scaledata*(magnify or reduce the plot data option : center);
+//help:Reflectdata*(reflect the plot data);
+//help:Mksegments*(generate the plot data of all segments on the screen);
+//help:Mkcircles*(generate the plot data of all circles on the screen):
+//help:Setax*(specify the setting of coordinate axes);
+//help:Htickmark*(put a tickmark on the horizontal coordinate axis);
+//help:Vtickmark*(put a tickmark on the vertical coordinate axis);
+//help:Drwxy*(draw coordinate axes);
+//help:Addax*(specify whether coordinate axes are drawn or not);
+//help:Expr*(write mathematical expressions at a specific position);
+//help:Letter*(write letters at a specific position);
+//help:Letterrot*(write sloped letters at a specific position):
+//help:Exprrot*(write sloped mathematical expressions at a specific position):
+//help:Putpoint*(put a point at the specific position);
+//help:Bezier*(generate the plot data of Bezier curve);
+//help:Mkbezierptcrv*(generate the plot data of Bezier curve by automatically taking controll points);
+//help:CRspline*(generate the plot data of Catmull-Rom spline curve);
+//help:Beziersmooth*(generate the plot data of Bezier spline curve);
+//help:Bspline*(generate the plot data of B-spline curve);
+//help:PtonLine*(put a point on a specific line);
+//help:PtonSeg*(put a point on a specific segment);
+//help:PutonCurve*(put a point on a specific curve);
+//help:Setscaling*(specify the rate of magnification in the vertical direction);
+ //help:Tabledatalight*(generate the plot data of table without geometric points
+ //additional option : rules to be removed);
+ //help:Tgrid*(return the coordinates of a cell in the table);
+ //help:Tlistplot*(draw segment connecting two lattice points in the table);
+//help:ChangeTablestyle*(change the style for drawing rules in the table);
+//help:Tabledata*(generate the plot data of table with geometric points
+ //option : usual options+rules to be removed);
+//help:Tabledata*(xLst=apply(1..5,10);yLst=apply(1..4,8);rmvL=[];);
+//help:Findcell*(return the information of a cell in the table);
+//help:Putcell*(write letters in a specific cell of the table);
+//help:Putcellexpr*(write mathematical expressions in a specific cell of the table);
+//help:Putrow*(write letters in a specific row of the table));
+//help:Putrowexpr*(write mathematical expressions in a specific row of the table);
+//help:PutcoL*(write letters in a specific column of the table));
+//help:PutcoLexpr*(write mathematical expressions in a specific column of the table));
+//help:Setwindow*(specify the area of drawing);
+//help:Defvar*(the definition of a variable is called by Scilab);
+//help:Deffun*(the definition of a function is called by Scilab);
+//help:Extractdata*(endow attribute to the imported plot data);
+//help:ReadOutData*(import the plot data);
+//help:WriteOutData*(export the plot data);
+//help:Removespace*(remove spaces of in front and behind);
+//help:end();
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/names b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/names
new file mode 100755
index 00000000..02079ff8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2esciL5/names
@@ -0,0 +1,341 @@
+Addcounter
+Anglemark
+Arrowdata
+Arrowhead
+Arrowheaddata
+Arrowline
+Assign
+Assignadd
+Assignrep
+Assignset
+Beginpicture
+Bezierpt
+Bezier
+BorderHiddenData
+Borderparadata
+Borderpersdata
+BorderPt
+Borderrawdata
+Bowdata
+Bowmiddle
+Bowname
+Bownamerot
+Calcfun
+CalcHeight
+CalcWidth
+CameracoordCurve
+CameraCurve
+Cancoordpara
+Cancoordpers
+Circledata
+Clipindomain
+Closefile
+Closepar
+Closephr
+Closepicture
+Closeobj
+Connectseg
+Crossprod
+Crv3onsfHiddenData
+Crv3onsfparadata
+Crv3onsfpersdata
+CrvonsfHiddenData
+Crvonsfparadata
+Crvonsfpersdata
+CrvsfHiddenData
+Crvsfparadata
+Crvsfpersdata
+CuspData
+CuspPt
+Cuspsplitpara
+Cuspsplitpers
+CuspSplitPt
+Cutsf2d
+Dashline
+Dataindex
+Definecolor
+Deqplot
+Derivative
+Diagcelldata
+Dividegraphics
+Dividetable
+Doscaling
+Dotfilldata
+Dotprod
+Dottedline
+Dropnumlistcrv
+Droppoint
+Drwline
+Drwpt
+Drwxy
+Embed
+Enclosing
+EnclosingS
+Endpicture
+Evlptablepara
+Evlptablepers
+Execmd
+Expr
+Exprrot
+Faceremovaldata
+Facesdata
+Findcell
+Flattenlist
+Fontsize
+Fouriercoeff
+FouriercoeffL
+Fouriersum
+Fracform
+Framedata
+Fullformfunc
+Gaiseki
+Getcounter
+Gettrace
+Hatchdata
+Hexahedrondata
+HiddenWireData
+Htickmark
+Implicitplot
+ImplicitData
+Initangle
+Integrate
+Intersectcrvs
+Intersectcrvsf
+IntersectcrvsPp
+Intersectlines
+IntersectselfPp
+Invdashline
+Invert
+Invparapt
+Invperspt
+InWindow
+Joincrvs
+Joingraphics
+Ketinit
+Kouten
+KoutenList
+Koutenseg
+Kukannozoku
+Kukeiwake
+Kyorihensuu
+Kyoukai
+Letter
+Letterrot
+Lineplot
+Listplot
+MakeBowdata
+MakecutbycrvL
+MakeCurves
+Makehasen
+Makeliststr
+Makesfcutoffdata
+Makeshasen
+Makeskeletondata
+Makeskeletonpersdata
+Makevaltable
+MakeveLfaceL
+Makexybdy
+Mawarikomi
+Meetpoints
+MeetWindow
+Member
+Menkakusi
+Menkakusi2
+Mix
+Mixadd
+Mixdisp
+Mixjoin
+MixL
+Mixlength
+Mixmake
+Mixop
+MixS
+Mixsub
+Mixtype
+Naigai
+Naiseki
+Nearestpt
+Newlength
+Nohiddenpara
+Nohiddenpara2
+Nohiddenpers
+Nohiddenpers2
+Numptcrv
+Objjoin
+Objname
+Objcurve
+Objpolyhedron
+Objpolygon
+Objrecs
+Objsurf
+Objsymb
+Objthicksurf
+Openobj
+Op
+Openfile
+Openpar
+Openphr
+Openpicture
+Ovalbox
+Ovaldata
+Paramark
+Paramoncrv
+ParamonCurve
+Paramplot
+Parapt
+Partcrv
+Partcrv3
+Partframe
+PartitionPt
+Partitionseg
+Perspt
+Phcutdata
+Phcutoffdata
+Phidegree
+PhFaceL
+PhHiddenData
+Phparadata
+Phpersdata
+Phsparadata
+Phspersdata
+Phrawparadata
+Phrawpersdata
+Phsrawparadata
+Phsrawpersdata
+PhVertexL
+Plotdata
+Pointdata
+Pointoncrv
+PointonCurve
+Powersum
+Prime
+Printobjstr
+ProjcoordCurve
+ProjCurve
+Projpara
+Projpers
+Ptcrv
+Ptend
+PthiddenQ
+Ptne
+Ptnw
+Ptse
+Ptstart
+Ptsw
+Putcell
+Putcirmark
+PutcoL
+PutcoLexpr
+PutcoLstr
+Putdashmark
+Putrecmark
+Putrow
+Putrowexpr
+Putrowstr
+Puttrace
+Ratiocmyk
+ReadfromCindy
+ReadOutData
+Readtextdata
+Reflectdata
+Rmmember
+Rotate3data
+Rotate3pt
+Rotatedata
+Roundstr
+Scaledata
+Sectionview
+Setangle
+Setarrow
+Setax
+Setcolor
+Setcounter
+Setmark
+Setmarklen
+Setobjdecimals
+Setobjscale
+Setorigin
+Setpen
+Setpers
+Setpt
+Setscaling
+SetstereoL
+SetstereoR
+Setunitlen
+Setversion
+Setwindow
+Sf3data
+Sfbdparadata
+Sfbdpersdata
+Sfbdrawparadata
+Sfbdrawpersdata
+Sfcutdata
+Sfcutoffparadata
+Sfcutoffpersdata
+Sfcutoffrawparadata
+Sfcutoffrawpersdata
+Sfparadata
+Sfpersdata
+Shade
+Skeleton2data
+Skeletonparadata
+Skeletonpara3data
+Skeletonpersdata
+Skeletonpers3data
+Spacecurve
+Spaceline
+Splinedata
+Strop
+Subs
+Sumfun
+Symbdata
+Symb3data
+Tabledata
+Texcom
+Texctr
+Texelse
+Texend
+Texendfor
+Texendif
+Texfor
+Texforinit
+Texif
+Texletter
+Texnewcmd
+Texnewctr
+Texrenewcmd
+Texsetctr
+Texthectr
+Texvalctr
+Texvctr
+Thetadegree
+ThisVersion
+Tolist
+Translate3data
+Translatedata
+Trunc
+Unscaling
+Vecnagasa
+Vecnagasa2
+Viewfrom
+Vtickmark
+Windisp
+WireHiddenData
+Wireparadata
+Wirepersdata
+WirePt
+Wirerawparadata
+Wirerawpersdata
+WriteOutData
+Writetextdata
+WritetoCindy
+Writeobjpoint
+Xmax
+Xmin
+Xyzaxparaname
+Xyzaxpersname
+Xyzax3data
+Ymax
+Ymin
+Zparapt
+Zperspt
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.bin
new file mode 100644
index 00000000..04ec361b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.sci
new file mode 100755
index 00000000..c940a543
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Addcounter.sci
@@ -0,0 +1,12 @@
+// 09.09.10
+
+function Addcounter(varargin)
+ global GCOUNTER;
+ if Nargs==0
+ N=1;
+ else
+ N=varargin(1);
+ GCOUNTER=GCOUNTER+N;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.bin
new file mode 100644
index 00000000..9e505d61
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.sci
new file mode 100755
index 00000000..6deb302c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Anglemark.sci
@@ -0,0 +1,33 @@
+// 08.06.05
+// 16.12.29 ( for too short segment )
+
+function Out=Anglemark(varargin)
+ Nargs=length(varargin);
+ Eps=10^(-3);
+ PA=varargin(1); PB=varargin(2); PC=varargin(3);
+ r = 0.5;
+ if Nargs>=4
+ r = varargin(4)*r;
+ end
+ Out=[]; // 16.12.29
+ if r>min(norm(PA-PB),norm(PC-PB)) then
+ return;
+ end;
+ Cir=Circledata(PB,r);
+ Tmp=IntersectcrvsPp(Cir,Listplot(PA,PB));
+ P1=Op(2,Op(1,Tmp));
+ Tmp=IntersectcrvsPp(Cir,Listplot(PC,PB));
+ P2=Op(2,Mixop(1,Tmp));
+ if abs(P1-P2)<Eps
+ Out=[];
+ return;
+ end
+ if P1<P2-Eps
+ Out=Partcrv(P1,P2,Cir);
+ else
+ Tmp=Numptcrv(Cir);
+ Tmp1=Partcrv(P1,Tmp,Cir);
+ Tmp2=Partcrv(1,P2,Cir);
+ Out=Joincrvs(Tmp1,Tmp2);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.bin
new file mode 100644
index 00000000..fa50bd08
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.sci
new file mode 100755
index 00000000..f6ac6ef2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowdata.sci
@@ -0,0 +1,58 @@
+// 08.05.08
+
+function Out=Arrowdata(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle;
+ Nargs=length(varargin);
+ P=varargin(1);
+ Q=varargin(2);
+ R=Q;
+ Futosa=YaThick;
+ Ookisa=YaSize;
+ Thickness=1;
+ Hiraki=YaAngle;
+ Yapos=YaPosition;
+ Position=1;
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ if length(Tmp)>1
+ R=Tmp
+ else
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki;
+ else
+ Hiraki=Tmp;
+ end
+ end
+ if Flg==2
+ R=P+Tmp*(Q-P);
+ else
+ R=P+Yapos*(Q-P);
+ end
+ if Flg==3
+ Futosa=Tmp
+ end
+ Flg=Flg+1;
+ end
+ end
+ if type(Tmp)==10
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ Futosa=Futosa*Thickness;
+ R=P+Position*(Q-P);
+ else
+ Str=Tmp
+ end
+ end
+ end
+ Tmp1=Listplot([P,Q]);
+ Tmp2=Arrowheaddata(R,Q-P,Ookisa,Hiraki,Futosa,Str);
+ Out=Joingraphics(Tmp1,Tmp2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.bin
new file mode 100644
index 00000000..bbd95348
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.sci
new file mode 100755
index 00000000..9073ca6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowhead.sci
@@ -0,0 +1,107 @@
+//
+// 08.06.01
+// 09.12.25
+// 12.01.07 kirikomi(Cut)
+// 12.04.16 debugged
+// 13.05.17 debugged
+// 13.11.13 debugged
+// 15.06.11 debugged
+// 15.06.14 debugged
+// 15.06.15 improved
+
+function Arrowhead(varargin)
+ global Wfile FID MilliIn YaSize
+ global YaAngle YaPosition YaThick YaStyle;
+ Nargs=length(varargin);
+ P=varargin(1);
+ Houkou=varargin(2);
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0.5*YaThick;
+ Cut=0;
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==10
+ Equal=mtlb_findstr(Tmp,'='); // 12.01.07 from
+ if length(Equal)>0
+ Tmp2=strsplit(Tmp,Equal-1);
+ if Tmp2(1)=="Cut" | Tmp2(1)=="cut"
+ Tmp="Cut"+Tmp2(2);
+ execstr(Tmp);
+ end;
+ else
+ Str=Tmp;
+ end; // 12.01.07 upto
+ end;
+ if type(Tmp)==1 & length(Tmp)==1
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki
+ else
+ Hiraki=Tmp
+ end
+ end
+ if Flg==2
+ Futosa=Tmp
+ end
+ Flg=Flg+1;
+ end
+ end;
+ Ookisa=1000/2.54/MilliIn*Ookisa;
+ Theta=Hiraki*%pi/180;
+ if size(Houkou,1)>1
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ Tmp=Nearestpt(P,Houkou);
+ A=Op(1,Tmp);
+ I=floor(Op(2,Tmp));
+ G=Circledata(P,Ookisa*cos(Theta),'N=10');
+ Flg=0; // 13.11.13
+ for J=I:-1:1
+ B=Ptcrv(J,Houkou);
+ Tmp=IntersectcrvsPp(Listplot([A,B]),G);
+ if Mixlength(Tmp)>0
+ Flg=1;
+ break
+ end
+ A=B
+ end
+ if Flg==0 // 13.11.13
+ disp('Arrowhead may be too large (no intersect)');
+ return
+ end
+ Houkou=P-Op(1,Op(1,Tmp));
+ Houkou=Unscaling(Houkou);
+ P=Unscaling(P);
+ end;
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ Ev=-1/Vecnagasa(Houkou)*Houkou;
+ Nv=[-Ev(2),Ev(1)];
+ if mtlb_findstr(Str,'c')~=[]
+ P=P-0.5*Ookisa*cos(Theta)*Ev
+ end;
+ if mtlb_findstr(Str,'b')~=[]
+ P=P-Ookisa*cos(Theta)*Ev
+ end;
+ A=P+Ookisa*cos(Theta)*Ev+Ookisa*sin(Theta)*Nv;
+ B=P+Ookisa*cos(Theta)*Ev-Ookisa*sin(Theta)*Nv;
+ if mtlb_findstr(Str,'l')~=[]
+ Tmp=Listplot([A,P,B]);
+ Tmp1=Unscaling(Tmp); // 13.05.17
+ Drwline(Tmp1,Futosa);
+ else
+ C=P+(1-Cut)*((A+B)/2-P); // 12.01.05
+ Tmp=Listplot([A,P,B,C,A]); // 12.01.05
+ Tmp1=Unscaling(Tmp);
+ Shade(Tmp1);
+ Tmp=Listplot([A,P,B,C,A,P]); // 15.6.20
+ Tmp1=Unscaling(Tmp);
+ Drwline(Tmp1,0.1); // 15.06.11, 15.06.14
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.bin
new file mode 100644
index 00000000..99f58621
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.sci
new file mode 100755
index 00000000..68dfe27c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowheaddata.sci
@@ -0,0 +1,89 @@
+// 08.05.31
+// 09.12.25
+// 13.11.13 debugged
+// 14.11.02 debugged
+
+function Out=Arrowheaddata(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle;
+ Eps=10^(-3);
+ Nargs=length(varargin);
+ Out=[];
+ P=varargin(1);
+ Houkou=varargin(2);
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Thickness=1;
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==10
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ Futosa=Thickness;
+ else
+ Str=Tmp;
+ end
+ end
+ if type(Tmp)==1 & length(Tmp)==1
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki;
+ else
+ Hiraki=Tmp;
+ end
+ end
+ Flg=Flg+1;
+ end
+ end
+ Theta=Hiraki*%pi/180;
+ if size(Houkou,1)>1
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ Tmp=Nearestpt(P,Houkou);
+ A=Op(1,Tmp);
+ I=floor(Op(2,Tmp));
+ if I==1 // 14.11.02
+ if norm(Ptend(Houkou)-Ptstart(Houkou))<Eps
+ l=Numptcrv(Houkou);
+ end;
+ end;
+ G=Circledata(P,Ookisa*cos(Theta),'N=10');
+ Flg=0; // 13.11.13
+ for J=I:-1:1
+ B=Ptcrv(J,Houkou);
+ Tmp=IntersectcrvsPp(Listplot([A,B]),G);
+ if Mixlength(Tmp)>0
+ Flg=1;
+ break
+ end
+ A=B
+ end
+ if Flg==0 // 13.11.13
+ disp('Arrowhead may be too large (no intersect)');
+ return
+ end
+ Houkou=P-Op(1,Op(1,Tmp));
+ Houkou=Unscaling(Houkou);
+ P=Unscaling(P);
+ end
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ E=-1/Vecnagasa(Houkou)*Houkou;
+ N=[-E(2),E(1)];
+ if mtlb_findstr(Str,'c')~=[]
+ P=P-0.5*Ookisa*cos(Theta)*E;
+ end
+ if mtlb_findstr(Str,'b')~=[]
+ P=P-Ookisa*cos(Theta)*E
+ end
+ A=P+Ookisa*cos(Theta)*E+Ookisa*sin(Theta)*N;
+ B=P+Ookisa*cos(Theta)*E-Ookisa*sin(Theta)*N;
+ Out=Listplot([A,P,B]);
+ Out=Unscaling(Out);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.bin
new file mode 100644
index 00000000..dec6b519
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.sci
new file mode 100755
index 00000000..881662b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Arrowline.sci
@@ -0,0 +1,57 @@
+//
+// 12.01.07 kirikomi(Cut)
+// 12.08.26 debugged
+// 15.06.11 debugged
+// 15.10.24 debugged
+
+function Arrowline(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle Kirikomi;
+ Nargs=length(varargin)
+ P=varargin(1);
+ Q=varargin(2);
+ Futosa=YaThick;
+ Ookisa=YaSize;
+ Hiraki=YaAngle;
+ Yapos=YaPosition;
+ Cutstr="Cut=0";
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==10
+ Equal=mtlb_findstr(Tmp,'='); // 12.01.07 from
+ if length(Equal)>0
+ Tmp2=strsplit(Tmp,Equal-1);
+ if (Tmp2(1)=="Cut") | (Tmp2(1)=="cut")
+ Tmp="Cut"+Tmp2(2);
+ Cutstr=Tmp;
+ end
+ else
+ Str=Tmp; // 12.01.07 upto (debugged on 12.08.26)
+ end;
+ end;
+ if (type(Tmp)==1) & (length(Tmp)==1)
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki;
+ else
+ Hiraki=Tmp;
+ end
+ end
+ if Flg==2
+ Yapos=Tmp;
+ end
+ if Flg==3
+ Futosa=Tmp;
+ end
+ Flg=Flg+1;
+ end
+ end
+ R=P+Yapos*(Q-P);
+ Tmp=Q-Unscaling(0.2*Ookisa/2*(Q-P)/norm(Q-P)); // 15.10.24
+ Drwline(Listplot([P,Tmp]),Futosa);
+ Arrowhead(R,Q-P,Ookisa,Hiraki,Futosa,Cutstr,Str); // 12.01.07
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.bin
new file mode 100644
index 00000000..a4ad2b27
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.sci
new file mode 100755
index 00000000..8d9201cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assign.sci
@@ -0,0 +1,202 @@
+// 08.09.26
+// 09.09.21
+// 09.09.26
+// 09.10.01
+// 09.10.03
+// 09.10.05
+// 09.10.08
+// 09.10.09 ( format=20)
+// 09.10.15 ( added Assign('') : reset
+// 09.10.17 ( Matrix added, ? -> number returned)
+// 09.10.21 ( list supported with Makeliststr )
+// 14.10.04 format=12
+// 14.12.11 only replaced when variable name
+// 14.12.28 debugged ( tmp2, ` )
+// 15.02.18 debugged ( for list of string )
+// 15.02.19 debugged
+// 15.04.18 debugged
+
+function Out=Assign(varargin)
+ global ASSIGNLIST;
+ Curfmt=format();
+ format(12); // 14.10.04
+ Nargs=length(varargin);
+ if Nargs==0
+ ASSIGNLIST=list('`',Prime());
+ Out=ASSIGNLIST;
+ format(Curfmt(2));
+ return;
+ end;
+ L=list('`',char(39));
+ NL=length(L);
+ if modulo(Nargs,2)==0
+ for I=1:Nargs
+ L(I+NL)=varargin(I);
+ end;
+ ASSIGNLIST=L;
+ Out=L;
+ format(Curfmt(2));
+ return;
+ end;
+ if Nargs==1
+ Fnstr=varargin(1);
+ if Fnstr==''
+ L=ASSIGNLIST;
+ Out=[];
+ for I=1:2:length(L)
+ Tmp1=L(I);
+ Tmp2=L(I+1);
+ if length(Tmp2)==1
+ Tmp3=string(Tmp2);
+ else
+ Tmp3='[';
+ for J=1:length(Tmp2)
+ Tmp3=Tmp3+string(Tmp2(J));
+ if J<length(Tmp2)
+ Tmp3=Tmp3+',';
+ end;
+ end;
+ Tmp3=Tmp3+']';
+ end;
+ Out=[Out,Tmp1+'='+Tmp3];
+ end;
+ format(Curfmt(2));
+ return;
+ end;
+ if part(Fnstr,1)=='?'
+ Tmp=strsplit(Fnstr,1);
+ Fnstr=Tmp(2);
+ for I=1:2:length(ASSIGNLIST)
+ Tmp=ASSIGNLIST(I);
+ if Tmp==Fnstr
+ Out=Mixjoin(I,ASSIGNLIST(I+1));
+ format(Curfmt(2));
+ return;
+ end;
+ end;
+ Out='Not found';
+ format(Curfmt(2));
+ return;
+ end; //
+ L=ASSIGNLIST;
+ else
+ if type(varargin(2))==1
+ Fnstr=varargin(Nargs);
+ for I=1:Nargs-1
+ L(I)=varargin(I);
+ end;
+ else
+ Fnstr=varargin(1);
+ for I=2:Nargs
+ L(I-1)=varargin(I);
+ end;
+ end;
+ end;
+ Tmp3=Fnstr; // 15.04.18
+ for I=1:2:length(L)
+ Vname=L(I);
+ Val=L(I+1);
+ if Vname=="`" // 14.12.28
+ Tmp3=strsubst(Tmp3,Vname,Val);
+ continue
+ end;
+ if type(Val)==1
+ if size(Val,1)==1 & size(Val,2)>1 // 15.04.18
+ for K=1:length(Val)
+ Tmp=Vname+'('+string(K)+')';
+ if mtlb_findstr(Tmp3,Tmp)~=[]
+ if type(Val(K))==1
+ Tmp1='('+string(Val(K))+')';
+ else
+ Tmp1=Val(K);
+ end;
+ Tmp3=strsubst(Tmp3,Tmp,Tmp1);
+ end;
+ end;
+ else
+ for J=1:size(Val,1)
+ for K=1:size(Val,2)
+ Tmp=Vname+'('+string(J)+','+string(K)+')';
+ if mtlb_findstr(Tmp3,Tmp)~=[]
+ if type(Val(J,K))==1
+ Tmp1='('+string(Val(J,K))+')';
+ else
+ Tmp1=Val(J,K);
+ end;
+ Tmp3=strsubst(Tmp3,Tmp,Tmp1);
+ end;
+ end;
+ end;
+ end;
+ if length(Val)==1
+ Rep=string(Val);
+ else
+ Rep='[';
+ for J=1:size(Val,1)
+ for K=1:size(Val,2)
+ Rep=Rep+string(Val(J,K));
+ if K<size(Val,2)
+ Rep=Rep+',';
+ end;
+ end;
+ if J<size(Val,1)
+ Rep=Rep+';';
+ else
+ Rep=Rep+']';
+ end;
+ end;
+ end;
+ Tmp1='('+Rep+')';
+ end;
+ if type(Val)==10
+ Tmp1=Val;
+ end;
+ if type(Val)==15
+ Tmp1=Makeliststr(Val);
+ end;
+ Notvar=[48:57,65:90,97:122];
+ for K=1:size(Tmp3,2)
+ Tmp2=Tmp3(K);
+ if length(Tmp2)>0 then
+ Flist=mtlb_findstr(Tmp2,Vname);
+ else
+ Flist=[];
+ end
+ if length(Flist)==0 then
+ Tmp3(K)=Tmp2; // 15.04.18
+ continue
+ end
+ Str=part(Tmp2,1:(Flist(1)-1));
+ for I=1:length(Flist)
+ Flg=0;
+ J=Flist(I);
+ if J>1 then
+ Tmp=ascii(part(Tmp2,J-1));
+ if Member(Tmp,Notvar) then
+ Flg=1;
+ end;
+ end
+ if J+length(Vname)-1<length(Tmp2) then // 15.04.18
+ Tmp=ascii(part(Tmp2,J+length(Vname))); // 15.04.18
+ if Member(Tmp,Notvar) then
+ Flg=1;
+ end;
+ end;
+ if Flg==0 then
+ Str=Str+Tmp1;
+ else
+ Str=Str+Vname;
+ end;
+ if I<length(Flist) then
+ Tmp=Flist(I+1)-1;
+ else
+ Tmp=length(Tmp2);
+ end;
+ Str=Str+part(Tmp2,(J+length(Vname)):Tmp);
+ Tmp3(K)=Str; // 15.04.18
+ end;
+ end;
+ end;
+ Out=Tmp3; // 15.02.18 upto
+ format(Curfmt(2));
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.bin
new file mode 100644
index 00000000..c6c202fa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.sci
new file mode 100755
index 00000000..d8883e6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignadd.sci
@@ -0,0 +1,14 @@
+// 09.10.03
+
+function Out=Assignadd(varargin)
+ global ASSIGNLIST;
+ Nargs=length(varargin);
+ L=ASSIGNLIST;
+ Is=length(L);
+ for I=1:Nargs
+ L(I+Is)=varargin(I);
+ end;
+ ASSIGNLIST=L;
+ Out=L;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.bin
new file mode 100644
index 00000000..3e962180
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.sci
new file mode 100755
index 00000000..0a362b01
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignrep.sci
@@ -0,0 +1,22 @@
+// 09.10.17
+// 09.12.05
+// 09.12.29
+// 14.09.30 addition supported
+
+function Assignrep(varargin)
+ global ASSIGNLIST;
+ Nargs=length(varargin);
+ for I=1:2:Nargs
+ Vname=varargin(I);
+ Val=varargin(I+1);
+ Tmp=Assign('?'+Vname);
+ if Tmp=='Not found'
+ Tmp=length(ASSIGNLIST);
+ ASSIGNLIST(Tmp+1)=Vname;
+ ASSIGNLIST(Tmp+2)=Val;
+ else
+ I=Tmp(1);
+ ASSIGNLIST(I+1)=Val;
+ end;
+ end
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.bin
new file mode 100644
index 00000000..04246041
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.sci
new file mode 100755
index 00000000..bb77c105
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Assignset.sci
@@ -0,0 +1,7 @@
+// 09.10.21
+
+function Assignset(varargin)
+ I=1:length(varargin);
+ Tmp=Assign(varargin(I));;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.bin
new file mode 100644
index 00000000..aa6d94ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.sci
new file mode 100755
index 00000000..f93e3200
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Beginpicture.sci
@@ -0,0 +1,6 @@
+// 08.05.22
+
+function Beginpicture(ul)
+ Openpicture(ul)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.bin
new file mode 100644
index 00000000..4de26d03
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.sci
new file mode 100644
index 00000000..7d1993eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezier.sci
@@ -0,0 +1,35 @@
+// 15.01.01
+
+function Out=Bezier(varargin)
+ Nargs=length(varargin);
+ Ptlist=varargin(1);
+ Ctrlist=varargin(2);
+ Num=10;
+ for J=3:Nargs
+ Tmp=varargin(J);
+ K=mtlb_findstr(Tmp,'=');
+ Tmp1=strsplit(Tmp,[K-1,K]);
+ Tmp2=ascii(Tmp1(1,1));
+ Lhs=char(Tmp2(1));
+ if Lhs=="N" then
+ Num=evstr(Tmp1(3,1));
+ end;
+ end;
+ if length(Num)==1
+ Num=Num*ones(1:length(Ctrlist))
+ end;
+ Out=[];
+ for ii=1:length(Ctrlist)
+ Tmp1=[Ptlist(ii),Ptlist(ii+1)];
+ Tmp2=Ctrlist(ii);
+ if ii==1 then
+ St=0
+ else
+ St=1
+ end;
+ for J=St:Num(ii)
+ Tmp=Bezierpt(J/Num(ii),Tmp1,Tmp2);
+ Out=[Out;Tmp];
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.bin
new file mode 100644
index 00000000..53d89112
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.sci
new file mode 100644
index 00000000..ac639249
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bezierpt.sci
@@ -0,0 +1,39 @@
+// 15.01.01
+// 15.02.08 for 3d
+
+function Out=Bezierpt(t,Ptlist,Ctrlist)
+ if length(Ptlist)==6 then // 3d 15.02.08
+ P0=Ptlist(1:3);
+ P3=Ptlist(4:6);
+ P1=Ctrlist(1:3);
+ if length(Ctrlist)==3 then
+ P2=P3;
+ flg3=0;
+ else
+ P2=Ctrlist(4:6);
+ flg3=1;
+ end;
+ else
+ P0=Ptlist(1:2);
+ P3=Ptlist(3:4);
+ P1=Ctrlist(1:2);
+ if length(Ctrlist)==2 then
+ P2=P3;
+ flg3=0;
+ else
+ P2=Ctrlist(3:4);
+ flg3=1;
+ end;
+ end;
+ P4=(1-t)*P0+t*P1;
+ P5=(1-t)*P1+t*P2;
+ P6=(1-t)*P2+t*P3;
+ P7=(1-t)*P4+t*P5;
+ P8=(1-t)*P5+t*P6;
+ P9=(1-t)*P7+t*P8;
+ if flg3==0 then
+ Out=P7;
+ else
+ Out=P9;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.bin
new file mode 100644
index 00000000..2c743976
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.sci
new file mode 100755
index 00000000..dac12561
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.09.13
+
+function Out=BorderHiddenData()
+ global BORDERHIDDENDATA
+ Out=BORDERHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.bin
new file mode 100644
index 00000000..6fb6e54e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.sci
new file mode 100755
index 00000000..12947bcd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/BorderPt.sci
@@ -0,0 +1,7 @@
+// 08.09.13
+
+function Out=BorderPt()
+ global BORDERPT
+ Out=BORDERPT
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.bin
new file mode 100644
index 00000000..1e0a62fc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.sci
new file mode 100755
index 00000000..2e944821
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderparadata.sci
@@ -0,0 +1,121 @@
+// 08.09.13
+// 08.09.16
+// 08.10.10
+// 08.10.11
+// 08.10.15
+// 08.10.28
+// 09.03.09
+// 09.05.27
+// 09.06.03
+// 10.02.16 Eps=> [Eps, Epsmg]
+// 13.10.21 ( __ added to varibles )
+
+function FsL__=Borderparadata(varargin)
+ global BORDERPT OTHERPARTITION HIDDENDATA BORDERHIDDENDATA
+ global PARTITIONPT
+ Nargs__=length(varargin);
+ FkL__=varargin(1);
+ Fd__=varargin(2); N__=3;
+ FdL__=Fullformfunc(Fd__);
+ Fxy__=Mixop(1,FdL__);
+ Tmp__1=Mixop(2,FdL__);
+ Tmp__2=Mixop(3,FdL__);
+ Tmp__3=Mixop(4,FdL__);
+ Xyzstr__=[Tmp__1,Tmp__2,Tmp__3];
+ DrwS__=Mixop(7,FdL__);
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Np__=[50,50];
+ if Nargs__>=3
+ Np__=varargin(3); N__=4;
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Eps__=[0.05,1]; //
+ if Nargs__>=N__ Eps__=varargin(N__); end;
+ Eps__2=0.2;
+ if Nargs__>=N__+1 Eps__2=varargin(N__+1); end;
+ Umin__=Urg__(1); Umax__=Urg__(2);
+ Vmin__=Vrg__(1); Vmax__=Vrg__(2);
+ EkL__=[];
+ Tmp__=mtlb_findstr(DrwS__,'e');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umax__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'n');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmax__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'w');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umin__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'s');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmin__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ if Mixlength(EkL__)>0
+ FkL__=Mixjoin(FkL__,EkL__);
+ end;
+ Fall__=Projpara(FkL__);
+ if Mixtype(Fall__)==1
+ Fall__=Mix(Fall__)
+ end;
+ Fbdxy__=Makexybdy(Fd__,Np__);
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ BORDERPT=[];
+ Tmp__=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixadd(Tmp__,[]);
+ end;
+ OTHERPARTITION=Tmp__;
+ FsL__=[];
+ BORDERHIDDENDATA=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixop(I__,FkL__);
+ Tmp__=Projpara(Tmp__);
+ Par__=Partitionseg(Tmp__,Fall__,Eps__(1),Eps__2,I__); //
+ if Mixlength(PARTITIONPT)>2
+ Tmp__=Mixlength(PARTITIONPT)-1;
+ Tmp__1=Mixsub(2:Tmp__,PARTITIONPT);
+ BORDERPT=Mixjoin(BORDERPT,Tmp__1);
+ end;
+ Tmp__1=Mixop(I__,FkL__);
+ Tmp__=Nohiddenpara2(Par__,Tmp__1,Fd__,1,Np__,Eps__);
+ if Mixlength(HIDDENDATA)>0
+ BORDERHIDDENDATA=Mixjoin(BORDERHIDDENDATA,HIDDENDATA);
+ end;
+ if Mixlength(Tmp__)>0
+ FsL__=Mixjoin(FsL__,Tmp__);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.bin
new file mode 100644
index 00000000..2a4cc650
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.sci
new file mode 100755
index 00000000..f86ddfa0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderpersdata.sci
@@ -0,0 +1,120 @@
+// 08.09.21
+// 08.10.10
+// 08.10.11
+// 08.10.28
+// 09.03.09
+// 09.05.27
+// 09.06.03
+// 10.02.16 Eps__
+// 13.11.01 ( __ added to varibles )
+
+function FsL__=Borderpersdata(varargin)
+ global BORDERPT OTHERPARTITION HIDDENDATA BORDERHIDDENDATA
+ global PARTITIONPT
+ Nargs__=length(varargin);
+ FkL__=varargin(1);
+ Fd__=varargin(2); N=3;
+ FdL__=Fullformfunc(Fd__);
+ Fxy__=Mixop(1,FdL__);
+ Tmp__1=Mixop(2,FdL__);
+ Tmp__2=Mixop(3,FdL__);
+ Tmp__3=Mixop(4,FdL__);
+ Xyzstr__=[Tmp__1,Tmp__2,Tmp__3];
+ DrwS__=Mixop(7,FdL__);
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Np__=[50,50];
+ if Nargs__>=3
+ Np__=varargin(3); N=4;
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Eps__=0.05;
+ Eps__=[0.05,1]; //
+ if Nargs__>=N Eps__=varargin(N); end;
+ Eps__2=0.2;
+ if Nargs__>=N+1 Eps__2=varargin(N+1); end;
+ Umin__=Urg__(1); Umax__=Urg__(2);
+ Vmin__=Vrg__(1); Vmax__=Vrg__(2);
+ EkL__=[];
+ Tmp__=mtlb_findstr(DrwS__,'e');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umax__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'n');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmax__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'w');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umin__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'s');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmin__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ if Mixlength(EkL__)>0
+ FkL__=Mixjoin(FkL__,EkL__);
+ end;
+ Fall__=Projpers(FkL__);
+ if Mixtype(Fall__)==1
+ Fall__=Mix(Fall__);
+ end;
+ Fbdxy__=Makexybdy(Fd__,Np__);
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ BORDERPT=[];
+ Tmp__=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixadd(Tmp__,[]);
+ end;
+ OTHERPARTITION=Tmp__;
+ FsL__=[];
+ BORDERHIDDENDATA=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixop(I__,FkL__);
+ Tmp__=Projpers(Tmp__);
+ Par__=Partitionseg(Tmp__,Fall__,Eps__(1),Eps__2,I__);
+ if Mixlength(PARTITIONPT)>2
+ Tmp__=Mixlength(PARTITIONPT)-1;
+ Tmp__1=Mixsub(2:Tmp__,PARTITIONPT);
+ BORDERPT=Mixjoin(BORDERPT,Tmp__1);
+ end;
+ Tmp__1=Mixop(I__,FkL__);
+ Tmp__=Nohiddenpers2(Par__,Tmp__1,Fd__,1,Np__,Eps__);
+ if Mixlength(HIDDENDATA)>0
+ BORDERHIDDENDATA=Mixjoin(BORDERHIDDENDATA,HIDDENDATA);
+ end;
+ if Mixlength(Tmp__)>0
+ FsL__=Mixjoin(FsL__,Tmp__);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.bin
new file mode 100644
index 00000000..fb44560f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.sci
new file mode 100755
index 00000000..657efc23
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Borderrawdata.sci
@@ -0,0 +1,64 @@
+// 08.09.10
+
+function FkL=Borderrawdata(varargin)
+ Nall=length(varargin);
+ FkL=varargin(1);
+ FdL=Fullformfunc(varargin(2));
+ Tmp1=Mixop(2,FdL);
+ Tmp2=Mixop(3,FdL);
+ Tmp3=Mixop(4,FdL);
+ Xyzstr=[Tmp1,Tmp2,Tmp3];
+ DrwS=Mixop(7,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ Np=[50,50];
+ if Nall>=3
+ Np=varargin(3);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Um=Urg(1); UM=Urg(2);
+ Vm=Vrg(1); VM=Vrg(2);
+ EkL=[];
+ Tmp=mtlb_findstr(DrwS,'e');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Uname,'('+string(UM)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'n');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Vname,'('+string(VM)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'w');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Uname,'('+string(Um)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'s');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Vname,'('+string(Vm)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ FkL=Mixjoin(FkL,EkL);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.bin
new file mode 100644
index 00000000..a5819013
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.sci
new file mode 100755
index 00000000..48154cf1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowdata.sci
@@ -0,0 +1,45 @@
+//
+// 08.05.22
+// 08.08.24
+
+function Pd=Bowdata(varargin)
+ global BOWMIDDLE BOWSTART BOWEND
+ Nargs=length(varargin);
+ PA=varargin(1);
+ PB=varargin(2);
+ Cut=0;
+ D=1/2*Vecnagasa(PB-PA);
+ if Nargs>=3
+ H=varargin(3)*D*0.2;
+ else
+ H=D*0.2;
+ end
+ H=min(H,D);
+ if Nargs>=4
+ Cut=varargin(4);
+ end
+ Ydata=MakeBowdata(PA,PB,H);
+ C=Mixop(1,Ydata);
+ r=Mixop(2,Ydata);
+ R1=Mixop(3,Ydata);
+ R2=Mixop(4,Ydata);
+ Rng='R=['+string(R1)+','+string(R2)+']';
+ Theta=(R1+R2)*0.5;
+ BOWMIDDLE=MixS([C(1)+r*cos(Theta),C(2)+r*sin(Theta)],Theta);
+ M=Mixop(1,BOWMIDDLE);
+ ThetaM=Mixop(2,BOWMIDDLE);
+ BOWSTART=PA;
+ BOWEND=PB;
+ if Cut==0
+ Pd=Circledata(C,r,Rng);
+ else
+ Alpha=R1; Beta=ThetaM-Cut/(2*r);
+ Rng='R=['+string(Alpha)+','+string(Beta)+']';
+ Pd=Circledata(C,r,Rng);
+ Alpha=ThetaM+Cut/(2*r); Beta=R2;
+ Rng='R=['+string(Alpha)+','+string(Beta)+']';
+ Tmp=Circledata(C,r,Rng);
+ Pd=[Pd;%inf,%inf;Tmp];
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.bin
new file mode 100644
index 00000000..b212c380
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.sci
new file mode 100755
index 00000000..5157c111
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowmiddle.sci
@@ -0,0 +1,53 @@
+//
+// 08.05.22
+// 08.05.31
+// 09.08.12
+
+function M=Bowmiddle(varargin)
+ global BOWMIDDLE;
+ Nargs=length(varargin);
+ if Nargs==0
+ M=BOWMIDDLE;
+ return;
+ end;
+ if Nargs==1
+ Bdata=varargin(1);
+ A=Bdata(1,:);
+ Dind=Dataindex(Bdata);
+ Dc=size(Dind,1);
+ Tmp=Dind(Dc,2);
+ B=Bdata(Tmp,:);
+ if Dc==1
+ Tmp1=round(Tmp/2);
+ else
+ Tmp1=Dind(1,2);
+ end;
+ D=Bdata(Tmp1,:);
+ B=B-A;
+ D=D-A;
+ Tmp1=B(1)*D(2)-D(1)*B(2);
+ Tmp2=((B(1)^2+B(2)^2)*D(2)-B(2)*(D(1)^2+D(2)^2))/2;
+ Tmp3=-((B(1)^2+B(2)^2)*D(1)-B(1)*(D(1)^2+D(2)^2))/2;
+ C=[Tmp2,Tmp3]/Tmp1+A;
+ R=norm(C-A);
+ B=B+A;
+ V=(A+B)/2-C;
+ V=V/norm(V);
+ M=C+R*V;
+ else
+ A=varargin(1); B=varargin(2);
+ D=1/2*Vecnagasa(B-A);
+ H=0.2*D;
+ if length(varargin)>=3
+ Tmp=varargin(3);
+ H=Tmp*D*0.2;
+ end
+ H=min(H,D);
+ Ydata=MakeBowdata(A,B,H);
+ C=Op(1,Ydata);
+ R=Op(2,Ydata);
+ T=(Op(3,Ydata)+Op(4,Ydata))/2;
+ P=C+R*[cos(T),sin(T)];
+ M=MixS(P,T);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.bin
new file mode 100644
index 00000000..7286b547
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.sci
new file mode 100755
index 00000000..f57c4961
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bowname.sci
@@ -0,0 +1,40 @@
+//
+// 08.08.24
+// 09.08.12
+// 09.08.13
+// 13.11.30 Directon supported
+
+function Bowname(varargin)
+ global BOWMIDDLE;
+ Nargs=length(varargin);
+ Siki=varargin(Nargs);
+ Nargs=Nargs-1; // 13.11.30
+ Dr="c";
+ if Nargs>=1 then
+ Tmp=varargin(Nargs);
+ if type(Tmp)==10
+ Dr=Tmp;
+ Nargs=Nargs-1;
+ end
+ end
+ if Nargs==0 // 13.11.30
+ P=Mixop(1,BOWMIDDLE);
+ elseif Nargs==1 // 13.11.30
+ Bdata=varargin(1);
+ P=Bowmiddle(Bdata);
+ else
+ A=varargin(1); B=varargin(2);
+ D=1/2*Vecnagasa(B-A);
+ Tmp=varargin(3);
+ if type(Tmp)==10
+ H=D*0.2;
+ else
+ H=Tmp*D*0.2;
+ end;
+ H=min(H,D);
+ Ydata=MakeBowdata(A,B,H);
+ Tmp=Bowmiddle(Ydata);
+ P=Mixop(1,Tmp);
+ end
+ Expr(P,Dr,Siki); //13.11.30
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.bin
new file mode 100644
index 00000000..b66d56a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.sci
new file mode 100755
index 00000000..8d1edf78
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Bownamerot.sci
@@ -0,0 +1,77 @@
+// 08.05.31
+// 08.08.24
+// 09.08.12
+// 09.08.13
+// 13.12.15 tiny move supported
+// A,B type no longer supported
+
+function Bownamerot(varargin)
+ global Wfile FID BOWMIDDLE BOWSTART BOWEND;
+ Nargs=length(varargin);
+ Eps=10^(-6);
+ Flg=1;
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & length(Tmp)==1 & Tmp<0
+ Flg=Tmp;
+ Nargs=Nargs-1;
+ end;
+ Siki=varargin(Nargs);
+ Nargs=Nargs-1;
+ Dr="c";
+ if Nargs>=1 then
+ Tmp=varargin(Nargs);
+ if type(Tmp)==10
+ Dr=Tmp;
+ Nargs=Nargs-1;
+ end
+ end
+ if Nargs==0
+ P=Mixop(1,BOWMIDDLE);
+ A=BOWSTART;
+ B=BOWEND;
+ else
+ Bdata=varargin(1);
+ P=Bowmiddle(Bdata);
+ A=Bdata(1,:);
+ B=Bdata(size(Bdata,1),:);
+ Tm=0; Tv=0;
+ if Nargs>1 then // 13.12.15
+ Tm=varargin(2);
+ if Nargs>2 then
+ Tv=varargin(3);
+ end
+ end
+ end;
+// elseif Nargs==1
+// Bdata=varargin(1);
+// P=Bowmiddle(Bdata);
+// A=Bdata(1,:);
+// B=Bdata(size(Bdata,1),:);
+// else
+// A=varargin(1); B=varargin(2);
+// D=1/2*Vecnagasa(B-A);
+// Tmp=varargin(3);
+// if type(Tmp)==10
+// H=0.2*D; Siki=Tmp;
+// else
+// H=Tmp*D*0.2; Siki=varargin(4);
+// end
+// H=min(H,D);
+// Ydata=MakeBowdata(A,B,H);
+// C=Op(1,Ydata);
+// R=Op(2,Ydata);
+// T=(Op(3,Ydata)+Op(4,Ydata))/2;
+// P=C+R*[cos(T),sin(T)];
+// end;
+ if A(1)>B(1)+Eps
+ Tmp=A;
+ A=B;
+ B=Tmp;
+ end;
+ if Flg>0
+ Tmp=B-A;
+ else
+ Tmp=A-B;
+ end;
+ Exprrot(P,Tmp,Tm,Tv,Siki);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.bin
new file mode 100644
index 00000000..dd6d1a9c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.sci
new file mode 100755
index 00000000..aa1216dd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcHeight.sci
@@ -0,0 +1,31 @@
+function CalcHeight(Hoko,Moji)
+ global Wfile FID;
+ D=0;
+ Tmp=ascii(Hoko);
+ H=char(Tmp(1));
+ Str=['\settoheight{\Height}{'+Moji+'}'];
+ Str=[Str,'\settodepth{\Depth}{'+Moji+'}'];
+ if H=='n'
+ Str=[Str,'\setlength{\Height}{\Depth}'];
+ end
+ if H=='s'
+ Str=[Str,'\setlength{\Height}{-\Height}'];
+ end
+ if H=='c'
+ Str=[Str,'\setlength{\Height}{-0.5\Height}'];
+ Str=[Str,'\setlength{\Depth}{0.5\Depth}'];
+ Str=[Str,'\addtolength{\Height}{\Depth}'];
+ end
+ if Wfile=='default'
+ for I=1:size(Str,2)
+ mprintf('%s',Str(I));
+ end
+ mprintf('%s\n','%');
+ else
+ for I=1:size(Str,2)
+ mfprintf(FID,'%s',Str(I));
+ end
+ mfprintf(FID,'%s\n','%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.bin
new file mode 100644
index 00000000..cba76bac
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.sci
new file mode 100755
index 00000000..111e9b3b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CalcWidth.sci
@@ -0,0 +1,26 @@
+function CalcWidth(Hoko,Moji)
+ global Wfile FID
+ D=0;
+ Tmp=ascii(Hoko);
+ H=char(Tmp(2));
+ if H=='e'
+ D=0;
+ end
+ if H=='w'
+ D=-1.0;
+ end
+ if H=='c'
+ D=-0.5;
+ end
+ Str1='\settowidth{\Width}{'+Moji+'}';
+ Tmp=string(D);
+ Str2='\setlength{\Width}{'+Tmp+'\Width}';
+ if Wfile=='default'
+ mprintf('%s',Str1);
+ mprintf('%s%s\n',Str2,'%');
+ else
+ mfprintf(FID,'%s',Str1);
+ mfprintf(FID,'%s%s\n',Str2,'%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.bin
new file mode 100644
index 00000000..4fdb507e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.sci
new file mode 100755
index 00000000..30c646a6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Calcfun.sci
@@ -0,0 +1,9 @@
+// 08.05.30
+
+function PL=Calcfun(Siki,Namae,Atai)
+ execstr(Namae+'=Atai');
+ Tmp='XY='+Siki;
+ execstr(Tmp);
+ PL=[Atai(:,1),XY(:,2)];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.bin
new file mode 100644
index 00000000..5227aec7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.sci
new file mode 100755
index 00000000..fcc7687c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameraCurve.sci
@@ -0,0 +1,24 @@
+// 08.08.12
+// 08.10.07
+// 09.06.02
+
+function AnsL=CameraCurve(Curve)
+ Eps=10^(-6);
+ for I=1:size(Curve,1)
+ P=Curve(I,:);
+ x=P(1); y=P(2); z=P(3);
+ if x~=%inf
+ Tmp=Perspt(P);
+ if I==1
+ AnsL=[Tmp];
+ else
+ Tmp1=AnsL(size(AnsL,1),:);
+ if Tmp1(1)==%inf | norm(Tmp-Tmp1)>Eps
+ AnsL=[AnsL;Tmp];
+ end;
+ end;
+ else
+ AnsL=[AnsL;%inf,%inf];
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.bin
new file mode 100644
index 00000000..dfe76941
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.sci
new file mode 100755
index 00000000..310ac166
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CameracoordCurve.sci
@@ -0,0 +1,28 @@
+// 08.08.14
+// 08.10.16
+// 09.09.25
+
+function Out=CameracoordCurve(Curve)
+ global FocusPoint EyePoint;
+ Out=[]; // 09.09.25
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ Tmp=P-FocusPoint;
+ X1=Tmp(1); Y1=Tmp(2); Z1=Tmp(3);
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ X2=X1*Ca+Y1*Sa; Y2=-X1*Sa+Y1*Ca; Z2=Z1;
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ X3=X2*Cb+Z2*Sb; Y3=Y2; Z3=-X2*Sb+Z2*Cb;
+ E3=E2*Cb+G2*Sb; F3=F2; G3=-E2*Sb+G2*Cb;
+ Xz=X3;
+ Yz=E3/(E3-X3)*Y3;
+ Zz=E3/(E3-X3)*Z3;
+ Out=[Out;Yz,Zz,Xz];
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.bin
new file mode 100644
index 00000000..58fd0152
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.sci
new file mode 100644
index 00000000..1574d812
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpara.sci
@@ -0,0 +1,11 @@
+// 13.08.13
+
+function Out=Cancoordpara(P)
+ global PHI THETA;
+ Xz=P(1); Yz=P(2); Zz=P(3);
+ X=-Xz*sin(PHI)-Yz*cos(PHI)*cos(THETA)+Zz*cos(PHI)*sin(THETA);
+ Y=Xz*cos(PHI)-Yz*sin(PHI)*cos(THETA)+Zz*sin(PHI)*sin(THETA);
+ Z=Yz*sin(THETA)+Zz*cos(THETA);
+ Out=[X,Y,Z];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.bin
new file mode 100644
index 00000000..57e2e49c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.sci
new file mode 100755
index 00000000..b63aba5c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cancoordpers.sci
@@ -0,0 +1,22 @@
+// 08.08.12
+
+function Out=Cancoordpers(P)
+ global EyePoint FocusPoint;
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ E3=E2*Cb+G2*Sb; F3=F2; G3=-E2*Sb+G2*Cb;
+ Xz=P(3); Yz=P(1); Zz=P(2);
+ X3=Xz; Y3=Yz*(E3-Xz)/E3; Z3=Zz*(E3-Xz)/E3;
+ X2=X3*Cb-Sb*Z3; Y2=Y3; Z2=Cb*Z3+Sb*X3;
+ X1=X2*Ca-Sa*Y2; Y1=Ca*Y2+Sa*X2; Z1=Z2;
+ X=X1+FocusPoint(1);
+ Y=Y1+FocusPoint(2);
+ Z=Z1+FocusPoint(3);
+ Out=[X,Y,Z];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.bin
new file mode 100644
index 00000000..0b9ca934
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.sci
new file mode 100755
index 00000000..2148c061
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Circledata.sci
@@ -0,0 +1,32 @@
+// s:2008,05.12
+// e:2014.09.08 [A,B] supported
+// e:2014.10.24 N,R => N__, ...
+
+function P=Circledata(varargin)
+ Nargs=length(varargin);
+ C=varargin(1);
+ if length(C)==4 then
+ ra=norm(C(1:2)-C(3:4));
+ C=C(1:2);
+ Nop=2;
+ else
+ ra=varargin(2);
+ Nop=3;
+ end;
+ R__=[0,2*%pi];
+ N__=50; // Numpoints
+ for I=Nop:Nargs
+ Tmp=varargin(I);
+ K=mtlb_findstr(Tmp,'=');
+ Tmp1=strsplit(Tmp,[K-1,K]);
+ Tmp2=ascii(Tmp1(1,1));
+ Lhs=char(Tmp2(1));
+ Str=Lhs+'__='+Tmp1(3,1);
+ execstr(Str);
+ end;
+ Dt=(R__(2)-R__(1))/N__;
+ T=R__(1):Dt:R__(2);
+ X=C(1)+ra*cos(T);
+ Y=C(2)+ra*sin(T);
+ P=[X',Y'];
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.bin
new file mode 100644
index 00000000..374f6316
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.sci
new file mode 100755
index 00000000..bf9572c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Clipindomain.sci
@@ -0,0 +1,58 @@
+// 08.09.10
+// 08.09.16
+// 09.12.31 (gsort)
+
+function OutL=Clipindomain(ObjL,FigL)
+ EEps=10^(-4);
+ Eps=0.01;
+ Eps2=0.2;
+ Bdy=Kyoukai(FigL);
+ if Mixlength(Bdy)>=2
+ Fbdy=Joincrvs(FigL)
+ else
+ Fbdy=Mixop(1,FigL);
+ end;
+ if Mixtype(ObjL)==1
+ ObjL=Mix(ObjL)
+ end;
+ if Mixtype(FigL)==1
+ FigL=Mix(FigL)
+ end;
+ OutL=[];
+ for Nobj=1:Mixlength(ObjL);
+ Obj=Mixop(Nobj,ObjL);
+ ParL=[1,Numptcrv(Obj)];
+ Tmp=IntersectcrvsPp(Obj,Fbdy,Eps,Eps2);
+ for J=1:Mixlength(Tmp)
+ Tmp1=Mixop(J,Tmp);
+ ParL=[ParL,Mixop(2,Tmp1)];
+ end;
+ ParL=gsort(ParL);
+ ParL=ParL(length(ParL):-1:1);
+ Tmp=[1];
+ for I=1:length(ParL)
+ Tmp1=Tmp(length(Tmp));
+ Tmp2=ParL(I);
+ if Tmp2-Tmp1>EEps
+ Tmp=[Tmp,Tmp2];
+ end;
+ end;
+ ParL=Tmp;
+ Tmp1=ParL(length(ParL));
+ Tmp2=Numptcrv(Obj);
+ if abs(Tmp1-Tmp2)<Eps
+ ParL=[ParL(1:length(ParL)-1),Tmp2];
+ end;
+ Fig=[];
+ for N=1:length(ParL)-1
+ Tmp=(ParL(N)+ParL(N+1))*0.5;
+ Tmp=PointonCurve(Tmp,Obj);
+ Tmp=Naigai(Tmp,Bdy);
+ Tmp1=modulo(sum(Tmp),2);
+ if Tmp1==0 continue; end;
+ Fig=Mixadd(Fig,Partcrv(ParL(N),ParL(N+1),Obj));
+ end;
+ OutL=Mixjoin(OutL,Fig);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.bin
new file mode 100644
index 00000000..991de452
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.sci
new file mode 100755
index 00000000..f2928103
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closefile.sci
@@ -0,0 +1,24 @@
+//
+// 13.05.19 openfile error tackled
+// 13.11.01 Endpicture joined optionally
+// 13.11.05 debugged
+
+function Closefile(varargin)
+ global Wfile FID;
+ if length(varargin)>=1 then
+ Pa=varargin(1);
+ if type(Pa)==10 then
+ if Pa=="1" then // 2013.11.05
+ Endpicture(1)
+ end;
+ if Pa=="0" then
+ Endpicture(0)
+ end //
+ end
+ end
+ if Wfile~='default' then
+ mclose(FID);
+ FID=[]; // 2013.05.19
+ end
+ Wfile='default';
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.bin
new file mode 100644
index 00000000..d8f4d64d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.sci
new file mode 100644
index 00000000..da7c3850
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closeobj.sci
@@ -0,0 +1,10 @@
+// s : 2014.06.22
+
+function Closeobj()
+ global Wfile FID;
+ if Wfile~='default' then
+ mclose(FID);
+ FID=[];
+ end;
+ Wfile='default';
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.bin
new file mode 100644
index 00000000..0e0991c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.sci
new file mode 100755
index 00000000..64b93e1a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepar.sci
@@ -0,0 +1,15 @@
+// 08.05.31
+
+function Closepar()
+ global Wfile FID
+ S='\end{minipage}'
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ mprintf('%s',S);
+ else
+ mfprintf(FID,'%s\n','%');
+ mfprintf(FID,'%s',S);
+ end
+ Closephr();
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.bin
new file mode 100644
index 00000000..6bffbf74
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.sci
new file mode 100755
index 00000000..39b363f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closephr.sci
@@ -0,0 +1,13 @@
+// 08.05.31
+
+function Closephr()
+ global Wfile FID;
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ mprintf('%s\n','}%');
+ else
+ mfprintf(FID,'%s\n','%');
+ mfprintf(FID,'%s\n','}%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.bin
new file mode 100644
index 00000000..c0c13ad5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.sci
new file mode 100755
index 00000000..a3f345cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Closepicture.sci
@@ -0,0 +1,22 @@
+//
+// 08.12.17
+// 09.02.20
+// 10.04.12
+
+function Closepicture(varargin)
+ global Wfile FID MEMORI MEMORINow ULEN MilliIn;
+ Nargs=length(varargin);
+ if Nargs==0
+ Drwxy();
+ elseif varargin(1)==1
+ Drwxy();
+ end
+ if Wfile=='default'
+ mprintf('%s','\end{picture}}%');
+ else
+ mfprintf(FID,'%s','\end{picture}}%');
+ end
+// MEMORI=MEMORINow*1000/2.54/MilliIn;
+ Setunitlen('1cm');
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.bin
new file mode 100644
index 00000000..7504d934
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.sci
new file mode 100755
index 00000000..2abe8c90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Connectseg.sci
@@ -0,0 +1,76 @@
+// 08.09.09
+// 08.09.10
+// 08.09.24
+
+function PlotL=Connectseg(varargin)
+ Nargs=length(varargin);
+ Pdata=varargin(1);
+ Eps=10^(-5);
+ if Nargs>=2
+ Eps=varargin(2)
+ end;
+ if Mixtype(Pdata)~=1
+ Tmp=Mixop(1,Pdata);
+ Tmp=size(Tmp,2);
+ Sep=%inf*ones(1,Tmp);
+ Tmp=[];
+ for I=1:Mixlength(Pdata)
+ Tmp1=Mixop(I,Pdata);
+ Tmp=[Tmp;Sep;Tmp1];
+ end;
+ Pdata=Tmp(2:size(Tmp,1),:);
+ end;
+ Din=Dataindex(Pdata);
+ PlotL=[];
+ Qd=Pdata(Din(1,1):Din(1,2),:);
+ Din=Din(2:size(Din,1),:);
+ N=size(Din,1);
+ while N>0
+ Ah=Qd(1,:);Ao=Qd(size(Qd,1),:);
+ Flg=0;
+ for J=1:N
+ St=Din(J,1);
+ En=Din(J,2);
+ P=Pdata(St,:);
+ Q=Pdata(En,:);
+ if norm(P-Ao)<Eps
+ Tmp=Pdata(St+1:En,:);
+ Qd=[Qd;Tmp];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ if norm(Q-Ao)<Eps
+ Tmp=Pdata(En-1:-1:St,:);
+ Qd=[Qd;Tmp];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ if norm(P-Ah)<Eps
+ Tmp=Pdata(En:-1:St+1,:);
+ Qd=[Tmp;Qd];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ if norm(Q-Ah)<Eps
+ Tmp=Pdata(St:En-1,:);
+ Qd=[Tmp;Qd];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ end;
+ if Flg==0
+ PlotL=Mixadd(PlotL,Qd);
+ Qd=Pdata(Din(1,1):Din(1,2),:);
+ Din=Din(2:N,:);
+ end;
+ N=size(Din,1);
+ end;
+ if size(Qd,1)>0
+ PlotL=Mixadd(PlotL,Qd);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.bin
new file mode 100644
index 00000000..c22f1e9e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.sci
new file mode 100755
index 00000000..ab4d55b5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crossprod.sci
@@ -0,0 +1,13 @@
+// 09.10.0
+
+function Out=Crossprod(a,b)
+ if length(a)==3
+ Tmp1=a(2)*b(3)-a(3)*b(2);
+ Tmp2=a(3)*b(1)-a(1)*b(3);
+ Tmp3=a(1)*b(2)-a(2)*b(1);
+ Out=[Tmp1,Tmp2,Tmp3];
+ else
+ Out=a(1)*b(2)-a(2)*b(1);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.bin
new file mode 100644
index 00000000..9de876b4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.sci
new file mode 100755
index 00000000..07c17303
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.09.19
+
+function Out=Crv3onsfHiddenData()
+ global CRV3ONSFHIDDENDATA
+ Out=CRV3ONSFHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.bin
new file mode 100644
index 00000000..b2cafb90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.sci
new file mode 100755
index 00000000..ba168b71
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfparadata.sci
@@ -0,0 +1,49 @@
+// 08.09.16
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+
+function Out=Crv3onsfparadata(varargin)
+ global PARTITIONPT HIDDENDATA CRV3ONSFHIDDENDATA
+ Nargs=length(varargin);
+ Fk=varargin(1);
+ Fbdy=Projpara(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Fbdxy=Makexybdy(Fd,Np);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Fxy=='p'
+ Out=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ else
+ Tmp=Mix(Fxy,Fbdxy,Xname,Yname);
+ Out=Nohiddenpara(Par,Fk,Tmp);
+ end;
+ CRV3ONSFHIDDENDATA=HIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.bin
new file mode 100644
index 00000000..55aa8c1f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.sci
new file mode 100755
index 00000000..5fc40737
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crv3onsfpersdata.sci
@@ -0,0 +1,50 @@
+// 08.09.21
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+
+function Out=Crv3onsfpersdata(varargin)
+ global PARTITIONPT HIDDENDATA CRV3ONSFHIDDENDATA
+ Nargs=length(varargin);
+ Fk=varargin(1);
+ Fbdy=Projpers(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Fbdxy=Makexybdy(Fd,Np);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Fxy=='p'
+ Out=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ else
+ Tmp=Mix(Fxy,Fbdxy,Xname,Yname);
+ Out=Nohiddenpers(Par,Fk,Tmp);
+ end;
+
+ CRV3ONSFHIDDENDATA=HIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.bin
new file mode 100644
index 00000000..5269bbf1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.sci
new file mode 100755
index 00000000..9d97b3ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvonsfHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.09.19
+
+function Out=CrvonsfHiddenData()
+ global CRVONSFHIDDENDATA
+ Out=CRVONSFHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.bin
new file mode 100644
index 00000000..69551af4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.sci
new file mode 100755
index 00000000..a530284b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfparadata.sci
@@ -0,0 +1,90 @@
+// 08.09.16
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+// 13.10.22 ( __ added to varibles )
+
+function OutL__=Crvonsfparadata(varargin)
+ global PARTITIONPT HIDDENDATA CRVONSFHIDDENDATA
+ Nargs__=length(varargin);
+ Eps__0=10^(-4);
+ Figuv__=varargin(1);
+ Fbdy__=Projpara(varargin(2));
+ Fd__=varargin(3); N__=4;
+ Fd__L=Fullformfunc(Fd__);
+ Fxy__=Mixop(1,Fd__L);
+ Xf__=Mixop(2,Fd__L);
+ Yf__=Mixop(3,Fd__L);
+ Zf__=Mixop(4,Fd__L);
+ Np__=[50,50];
+ if Nargs__>=N__
+ Np__=varargin(N__); N__=N__+1;
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Eps__=[0.05,1]; //
+ if Nargs__>=N__
+ Eps__=varargin(N__);
+ end;
+ if length(Eps__)==1
+ Eps__=[Eps__,1];
+ end;
+ Eps__2=0.2;
+ if Nargs__>=N__+1
+ Eps__2=varargin(N__+1);
+ end;
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Fbdxy__=Makexybdy(Fd__,Np__);
+ Fbdy__uv=Mixop(8,Fd__L);
+ if Fbdy__uv==[]
+ Fbdy__uv=Mix(Framedata(Urg__,Vrg__));
+ end;
+ FigL__=Clipindomain(Figuv__,Fbdy__uv);
+ CRVONSFHIDDENDATA=[];
+ OutL__=[];
+ for N__=1:Mixlength(FigL__)
+ PtL__=Mixop(N__,FigL__);
+ Tmp__=[];
+ for I__=1:size(PtL__,1)
+ P__=PtL__(I__,:);
+ Tmp__1=strsubst(Xf__,Uname__,'('+string(P__(1))+')');
+ Tmp__1=strsubst(Tmp__1,Vname__,'('+string(P__(2))+')');
+ Tmp__1=evstr(Tmp__1);
+ Tmp__2=strsubst(Yf__,Uname__,'('+string(P__(1))+')');
+ Tmp__2=strsubst(Tmp__2,Vname__,'('+string(P__(2))+')');
+ Tmp__2=evstr(Tmp__2);
+ Tmp__3=strsubst(Zf__,Uname__,'('+string(P__(1))+')');
+ Tmp__3=strsubst(Tmp__3,Vname__,'('+string(P__(2))+')');
+ Tmp__3=evstr(Tmp__3);
+ Tmp__=[Tmp__,[Tmp__1,Tmp__2,Tmp__3]];
+ end;
+ Fk__=Spaceline(Tmp__);
+ Par__=Partitionseg(Projpara(Fk__),Fbdy__,Eps__(1),Eps__2); //
+ if Fxy__=='p'
+ Tmp__=Nohiddenpara2(Par__,Fk__,Fd__,1,Np__,Eps__);
+ else
+ Tmp__1=Mix(Fxy__,Fbdxy__,Xname__,Yname__);
+ Tmp__=Nohiddenpara(Par__,Fk__,Tmp__1);
+ end;
+ if Tmp__~=[]
+ OutL__=Mixjoin(OutL__,Tmp__);
+ end;
+ if HIDDENDATA~=[]
+ CRVONSFHIDDENDATA=Mixjoin(CRVONSFHIDDENDATA,HIDDENDATA);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.bin
new file mode 100644
index 00000000..48451c6b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.sci
new file mode 100755
index 00000000..f3bdf700
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvonsfpersdata.sci
@@ -0,0 +1,86 @@
+// 08.09.21
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+
+function OutL=Crvonsfpersdata(varargin)
+ global PARTITIONPT HIDDENDATA CRVONSFHIDDENDATA
+ Nargs=length(varargin);
+ Eps0=10^(-4);
+ Figuv=varargin(1);
+ Fbdy=Projpers(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Xf=Mixop(2,FdL);
+ Yf=Mixop(3,FdL);
+ Zf=Mixop(4,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1
+ Eps=[Eps,1];
+ end;
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ Fbdxy=Makexybdy(Fd,Np);
+ Fbdyuv=Mixop(8,FdL);
+ if Fbdyuv==[]
+ Fbdyuv=Mix(Framedata(Urg,Vrg));
+ end;
+ FigL=Clipindomain(Figuv,Fbdyuv);
+ CRVONSFHIDDENDATA=[];
+ OutL=[];
+ for N=1:Mixlength(FigL)
+ PtL=Mixop(N,FigL);
+ Tmp=[];
+ for I=1:size(PtL,1)
+ P=PtL(I,:);
+ Tmp1=strsubst(Xf,Uname,'('+string(P(1))+')');
+ Tmp1=strsubst(Tmp1,Vname,'('+string(P(2))+')');
+ Tmp1=evstr(Tmp1);
+ Tmp2=strsubst(Yf,Uname,'('+string(P(1))+')');
+ Tmp2=strsubst(Tmp2,Vname,'('+string(P(2))+')');
+ Tmp2=evstr(Tmp2);
+ Tmp3=strsubst(Zf,Uname,'('+string(P(1))+')');
+ Tmp3=strsubst(Tmp3,Vname,'('+string(P(2))+')');
+ Tmp3=evstr(Tmp3);
+ Tmp=[Tmp,[Tmp1,Tmp2,Tmp3]];
+ end;
+ Fk=Spaceline(Tmp);
+ Par=Partitionseg(Projpers(Fk),Fbdy,Eps(1),Eps2); //
+ if Fxy=='p'
+ Tmp=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ else
+ Tmp1=Mix(Fxy,Fbdxy,Xname,Yname);
+ Tmp=Nohiddenpers(Par,Fk,Tmp1);
+ end;
+ OutL=Mixjoin(OutL,Tmp);
+ CRVONSFHIDDENDATA=Mixjoin(CRVONSFHIDDENDATA,HIDDENDATA);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.bin
new file mode 100644
index 00000000..110cf0de
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.sci
new file mode 100755
index 00000000..0081b20c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CrvsfHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.10.24
+
+function Out=CrvsfHiddenData()
+ global CRVSFHIDDENDATA
+ Out=CRVSFHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.bin
new file mode 100644
index 00000000..b759eff5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.sci
new file mode 100755
index 00000000..a87506d2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfparadata.sci
@@ -0,0 +1,81 @@
+// 08.10.24
+// 08.10.25
+// 08.10.26
+// 08.10.27
+// 09.06.02
+// 09.12.31 (gsort)
+// 10.02.16
+
+function Out=Crvsfparadata(varargin)
+ global PARTITIONPT HIDDENDATA CRVSFHIDDENDATA
+ Nargs=length(varargin);
+ Sepflg=0;
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & Tmp<=0
+ Sepflg=1;
+ Nargs=Nargs-1;
+ end;
+ Fk=varargin(1);
+ if Mixtype(Fk)==1
+ FkL=Mix(Fk);
+ else
+ FkL=Fk;
+ end;
+ Fbdy=Projpara(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Out=[];
+ CRVSFHIDDENDATA=[];
+ for Nn=1:Mixlength(FkL)
+ Fk=Mixop(Nn,FkL);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Sepflg==0
+ for I=1:Numptcrv(Fk)-1
+ Pa=Ptcrv(I,Fk);
+ Pb=Ptcrv(I+1,Fk);
+ PtL=Meetpoints(Pa,Pb,Fd,1,Np,Eps(1)); //
+ for J=1:Mixlength(PtL)
+ Tmp=Mixop(J,PtL);
+ Tmp=Parapt(Tmp);
+ Tmp1=ParamonCurve(Tmp,I,Projpara(Fk));
+ Tmp2=min(abs(Par-Tmp1));
+ if Tmp2*norm(Parapt(Pb-Pa))>Eps (1) //
+ Par=[Par,Tmp1];
+ end;
+ end;
+ Par=gsort(Par);
+ Par=Par(length(Par):-1:1);
+ end;
+ end;
+ Tmp1=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ Out=Mixjoin(Out,Tmp1);
+ CRVSFHIDDENDATA=Mixjoin(CRVSFHIDDENDATA,HIDDENDATA);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.bin
new file mode 100644
index 00000000..af00090e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.sci
new file mode 100755
index 00000000..7e24efcb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Crvsfpersdata.sci
@@ -0,0 +1,80 @@
+// 08.10.24
+// 08.10.25
+// 08.10.26
+// 08.10.27
+// 09.06.02
+// 09.12.31 (gsort)
+
+function Out=Crvsfpersdata(varargin)
+ global PARTITIONPT HIDDENDATA CRVSFHIDDENDATA
+ Nargs=length(varargin);
+ Sepflg=0;
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & Tmp<=0
+ Sepflg=1;
+ Nargs=Nargs-1;
+ end;
+ Fk=varargin(1);
+ if Mixtype(Fk)==1
+ FkL=Mix(Fk);
+ else
+ FkL=Fk;
+ end;
+ Fbdy=Projpers(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Out=[];
+ CRVSFHIDDENDATA=[];
+ for Nn=1:Mixlength(FkL)
+ Fk=Mixop(Nn,FkL);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Sepflg==0
+ for I=1:Numptcrv(Fk)-1
+ Pa=Ptcrv(I,Fk);
+ Pb=Ptcrv(I+1,Fk);
+ PtL=Meetpoints(Pa,Pb,Fd,1,Np,Eps(1)); //
+ for J=1:Mixlength(PtL)
+ Tmp=Mixop(J,PtL);
+ Tmp=Perspt(Tmp);
+ Tmp1=ParamonCurve(Tmp,I,Projpers(Fk));
+ Tmp2=min(abs(Par-Tmp1));
+ if Tmp2*norm(Perspt(Pb-Pa))>Eps(1) //
+ Par=[Par,Tmp1];
+ end;
+ end;
+ Par=gsort(Par);
+ Par=Par(length(Par):-1:1);
+ end;
+ end;
+ Tmp1=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ Out=Mixjoin(Out,Tmp1);
+ CRVSFHIDDENDATA=Mixjoin(CRVSFHIDDENDATA,HIDDENDATA);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.bin
new file mode 100644
index 00000000..e6820112
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.sci
new file mode 100755
index 00000000..8c2b6eee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspData.sci
@@ -0,0 +1,7 @@
+// 08.09.10
+
+function Out=CuspData()
+ global CUSPDATA
+ Out=CUSPDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.bin
new file mode 100644
index 00000000..a31b8fa0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.sci
new file mode 100755
index 00000000..33f1d807
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspPt.sci
@@ -0,0 +1,7 @@
+// 08.09.10
+
+function Out=CuspPt()
+ global CUSPPT
+ Out=CUSPPT;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.bin
new file mode 100644
index 00000000..040b5f3e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.sci
new file mode 100755
index 00000000..07cbb09b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/CuspSplitPt.sci
@@ -0,0 +1,7 @@
+// 08.09.10
+
+function PL=CuspSplitPt()
+ global CUSPSPLITPT
+ PL=CUSPSPLITPT;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.bin
new file mode 100644
index 00000000..333137e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.sci
new file mode 100755
index 00000000..0ea935b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpara.sci
@@ -0,0 +1,179 @@
+// 08.09.10
+// 08.09.13
+// 08.09.15
+// 08.10.10
+// 10.02.16 Eps
+// 13.10.21 ( __ added to varibles )
+// 14.06.28 debug in the case of no cusp
+
+function OutkL__=Cuspsplitpara(varargin);
+ global CUSPSPLITPT;
+ Nargs__=length(varargin);
+ Gdxy__=varargin(1);
+ if Mixtype(Gdxy__)==1
+ Gdxy__=Mix(Gdxy__);
+ end;
+ Fd__=varargin(2);
+ FdL__=Fullformfunc(Fd__);
+ Eps0__=10^(-5);
+ Eps__=0.05;
+ if Nargs__>2 Eps__=varargin(3); end;
+ if length(Eps__)>1 //
+ Eps__=Eps__(1);
+ end; //
+ Fxy__=Mixop(1,FdL__); N__=2;
+ Tmp1__=Mixop(2,FdL__);
+ Tmp2__=Mixop(3,FdL__);
+ Tmp3__=Mixop(4,FdL__);
+ Xyzstr__=[Tmp1__,Tmp2__,Tmp3__];
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ CUSPSPLITPT=[];
+ OutkL__=[];
+ for Ng__=1:Mixlength(Gdxy__)
+ PtxyL__=Mixop(Ng__,Gdxy__);
+ PtkL__=[];
+ PthL__=[];
+ for I__=1:size(PtxyL__,1)
+ Tmp__=PtxyL__(I__,:);
+ Tmp1__=Uname__+'='+string(Tmp__(1));
+ execstr(Tmp1__);
+ Tmp1__=Vname__+'='+string(Tmp__(2))
+ execstr(Tmp1__);
+ Tmp2__=evstr(Xyzstr__);
+ Tmp3__=Parapt(Tmp2__);
+ if I__==1
+ PtkL__=[Tmp2__];
+ PthL__=[Tmp3__];
+ else
+ Tmp4__=PthL__(size(PthL__,1),:);
+ if norm(Tmp3__-Tmp4__)>Eps0__
+ PtkL__=[PtkL__;Tmp2__];
+ PthL__=[PthL__;Tmp3__]
+ end;
+ end;
+ end;
+ if size(PthL__,1)==0 then // from 20140628
+ OutkL__=[];
+ return;
+ end; // upto 20140628
+ Ps__=PthL__(1,:); Pe__=PthL__(size(PthL__,1),:);
+ Cflg__=0;
+ if norm(Ps__-Pe__)<Eps__ Cflg__=1; end;
+ CuspL__=[];
+ Cva__=cos(10*%pi/180);
+ for I__=1:size(PthL__,1)-1
+ if size(PthL__,1)==2 break; end;
+ Tmp__=PthL__(I__,:);
+ if I__==1
+ if Cflg__==0 continue; end;
+ Tmp1__=PthL__(size(PthL__,1)-1,:);
+ else
+ Tmp1__=PthL__(I__-1,:);
+ end;
+ Tmp2__=PthL__(I__+1,:);
+ V1__=Tmp__-Tmp1__;
+ V2__=Tmp2__-Tmp__;
+ Tmp3__=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp3__=Tmp3__/(norm(V1__)*norm(V2__));
+ Cuspflg__=0;
+ if Tmp3__<Cva__
+ P__=PthL__(I__,:);
+ Kaku__=acos(Tmp3__)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Kaku__=-Kaku__
+ end;
+ Cuspflg__=0;
+ for J__=I__+1:size(PthL__,1)-1
+ if abs(Kaku__)>90
+ Cuspflg__=1;
+ break
+ end;
+ Q__=PthL__(J__,:);
+ if norm(P__-Q__)>Eps__
+ break
+ end;
+ V1__=Q__-PthL__(J__-1,:);
+ V2__=PthL__(J__+1,:)-Q__;
+ Tmp3__=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp3__=Tmp3__/(norm(V1__)*norm(V2__));
+ Tmp__=acos(Tmp3__)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Tmp__=-Tmp__
+ end;
+ Kaku__=Kaku__+Tmp__
+ end;
+ if Cuspflg__==1
+ Tmp__=Trunc((I__+J__)*0.5);
+ I__=J__;
+ if length(CuspL__)==0
+ CuspL__=[Tmp__]
+ else
+ CuspL__=[CuspL__,Tmp__];
+ end;
+ end;
+ end;
+ end;
+ if Cflg__==0
+ CuspL__=[1,CuspL__,size(PthL__,1)];
+ elseif length(CuspL__)==0
+ CuspL__=[1,size(PthL__,1)];
+ elseif CuspL__(1)==1
+ CuspL__=[CuspL__,size(PthL__,1)];
+ else
+ Tmp__=CuspL__(1);
+ Tmp1__=size(PthL__,1);
+ PthL__=[PthL__(Tmp__:Tmp1__,:);PthL__(2:Tmp__,:)];
+ PtkL__=[PtkL__(Tmp__:Tmp1__,:);PtkL__(2:Tmp__,:)];
+ CuspL__=CuspL__-Tmp__+1;
+ CuspL__=[CuspL__,size(PthL__,1)];
+ end;
+ if length(CuspL__)==2
+ //Outh=[plot(PthL__)];
+ Tmp4__=PthL__(size(PthL__,1),:);
+ if size(PtkL__,1)>=2
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp4__);
+ OutkL__=Mixadd(OutkL__,PtkL__);
+ end;
+ continue
+ end;
+ //Outh=[];
+ Outk__=[];
+ Is__=1;
+ for I__=1:length(CuspL__)-1
+ Tmp1__=CuspL__(Is__); Tmp2__=CuspL__(I__+1);
+ Tmp3__=PthL__(Tmp1__,:); Tmp4__=PthL__(Tmp2__,:);
+ if norm(Tmp3__-Tmp4__)>Eps__
+ //Tmph__=[op(Tmp1__..Tmp2__,PthL__)];
+ Tmpk__=PtkL__(Tmp1__:Tmp2__,:);
+ //Outh=[op(Outh),plot(Tmph__)];
+ Outk__=Mixadd(Outk__,Tmpk__);
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp4__);
+ Is__=I__+1;
+ end;
+ end;
+ OutkL__=Mixjoin(OutkL__,Outk__);
+ end;
+ Tmp1__=Dropnumlistcrv(Projpara(OutkL__),Eps__*0.5);
+ Tmp__=[];
+ for I__=1:Mixlength(OutkL__)
+ Tmp2__=Mixop(I__,OutkL__);
+ Tmp3__=Mixop(I__,Tmp1__);
+ Tmp4__=[];
+ for J__=1:length(Tmp3__)
+ Tmp5__=Tmp2__(Tmp3__(J__),:);
+ Tmp4__=[Tmp4__;Tmp5__];
+ end;
+ if Tmp4__~=[]
+ Tmp__=Mixadd(Tmp__,Tmp4__);
+ end;
+ end;
+ OutkL__=Tmp__;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.bin
new file mode 100644
index 00000000..d5f47f89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.sci
new file mode 100755
index 00000000..a8221f5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cuspsplitpers.sci
@@ -0,0 +1,176 @@
+// 08.09.21
+// 08.10.10
+// 10.02.16 Eps__
+// 13.11.01 ( __ added to varibles )
+// 14.06.28 debug in the case of no cusp
+
+function OutkL__=Cuspsplitpers(varargin);
+ global CUSPSPLITPT;
+ Nargs__=length(varargin);
+ Gdxy__=varargin(1);
+ if Mixtype(Gdxy__)==1
+ Gdxy__=Mix(Gdxy__);
+ end;
+ Fd__=varargin(2);
+ FdL__=Fullformfunc(Fd__);
+ Eps__0=10^(-5);
+ Eps__=0.05;
+ if Nargs__>2 Eps__=varargin(3); end;
+ if length(Eps__)>1 //
+ Eps__=Eps__(1);
+ end; //
+ Fxy__=Mixop(1,FdL__); N=2;
+ Tmp__1=Mixop(2,FdL__);
+ Tmp__2=Mixop(3,FdL__);
+ Tmp__3=Mixop(4,FdL__);
+ Xyzstr__=[Tmp__1,Tmp__2,Tmp__3];
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ CUSPSPLITPT=[];
+ OutkL__=[];
+ for Ng__=1:Mixlength(Gdxy__)
+ PtxyL__=Mixop(Ng__,Gdxy__);
+ PtkL__=[];
+ PthL__=[];
+ for I__=1:size(PtxyL__,1)
+ Tmp__=PtxyL__(I__,:);
+ Tmp__1=Uname__+'='+string(Tmp__(1));
+ execstr(Tmp__1);
+ Tmp__1=Vname__+'='+string(Tmp__(2))
+ execstr(Tmp__1);
+ Tmp__2=evstr(Xyzstr__);
+ Tmp__3=Perspt(Tmp__2);
+ if I__==1
+ PtkL__=[Tmp__2];
+ PthL__=[Tmp__3];
+ else
+ Tmp__4=PthL__(size(PthL__,1),:);
+ if norm(Tmp__3-Tmp__4)>Eps__0
+ PtkL__=[PtkL__;Tmp__2];
+ PthL__=[PthL__;Tmp__3]
+ end;
+ end;
+ end;
+ if size(PthL__,1)==0 then // from 20140628
+ OutkL__=[];
+ return;
+ end; // upto 20140628
+ Ps__=PthL__(1,:); Pe=PthL__(size(PthL__,1),:);
+ Cflg__=0;
+ if norm(Ps__-Pe)<Eps__ Cflg__=1; end;
+ CuspL__=[];
+ Cva__=cos(10*%pi/180);
+ for I__=1:size(PthL__,1)-1
+ if size(PthL__,1)==2 break; end;
+ Tmp__=PthL__(I__,:);
+ if I__==1
+ if Cflg__==0 continue; end;
+ Tmp__1=PthL__(size(PthL__,1)-1,:);
+ else
+ Tmp__1=PthL__(I__-1,:);
+ end;
+ Tmp__2=PthL__(I__+1,:);
+ V1__=Tmp__-Tmp__1;
+ V2__=Tmp__2-Tmp__;
+ Tmp__3=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp__3=Tmp__3/(norm(V1__)*norm(V2__));
+ Cuspflg__=0;
+ if Tmp__3<Cva__
+ P__=PthL__(I__,:);
+ Kaku__=acos(Tmp__3)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Kaku__=-Kaku__
+ end;
+ Cuspflg__=0;
+ for J__=I__+1:size(PthL__,1)-1
+ if abs(Kaku__)>90
+ Cuspflg__=1;
+ break
+ end;
+ Q__=PthL__(J__,:);
+ if norm(P__-Q__)>Eps__
+ break
+ end;
+ V1__=Q__-PthL__(J__-1,:);
+ V2__=PthL__(J__+1,:)-Q__;
+ Tmp__3=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp__3=Tmp__3/(norm(V1__)*norm(V2__));
+ Tmp__=acos(Tmp__3)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Tmp__=-Tmp__
+ end;
+ Kaku__=Kaku__+Tmp__
+ end;
+ if Cuspflg__==1
+ Tmp__=Trunc((I__+J__)*0.5);
+ I__=J__;
+ if length(CuspL__)==0
+ CuspL__=[Tmp__]
+ else
+ CuspL__=[CuspL__,Tmp__];
+ end;
+ end;
+ end;
+ end;
+ if Cflg__==0
+ CuspL__=[1,CuspL__,size(PthL__,1)];
+ elseif length(CuspL__)==0
+ CuspL__=[1,size(PthL__,1)];
+ elseif CuspL__(1)==1
+ CuspL__=[CuspL__,size(PthL__,1)];
+ else
+ Tmp__=CuspL__(1);
+ Tmp__1=size(PthL__,1);
+ PthL__=[PthL__(Tmp__:Tmp__1,:);PthL__(2:Tmp__,:)];
+ PtkL__=[PtkL__(Tmp__:Tmp__1,:);PtkL__(2:Tmp__,:)];
+ CuspL__=CuspL__-Tmp__+1;
+ CuspL__=[CuspL__,size(PthL__,1)];
+ end;
+ if length(CuspL__)==2
+ //Outh__=[plot(PthL__)];
+ Tmp__4=PthL__(size(PthL__,1),:);
+ if size(PtkL__,1)>=2
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp__4);
+ OutkL__=Mixadd(OutkL__,PtkL__);
+ end;
+ continue
+ end;
+ //Outh__=[];
+ Outk__=[];
+ Is__=1;
+ for I__=1:length(CuspL__)-1
+ Tmp__1=CuspL__(Is__); Tmp__2=CuspL__(I__+1);
+ Tmp__3=PthL__(Tmp__1,:); Tmp__4=PthL__(Tmp__2,:);
+ if norm(Tmp__3-Tmp__4)>Eps__
+ //Tmp__h=[op(Tmp__1..Tmp__2,PthL__)];
+ Tmp__k=PtkL__(Tmp__1:Tmp__2,:);
+ //Outh__=[op(Outh__),plot(Tmp__h)];
+ Outk__=Mixadd(Outk__,Tmp__k);
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp__4);
+ Is__=I__+1;
+ end;
+ end;
+ OutkL__=Mixjoin(OutkL__,Outk__);
+ end;
+ Tmp__1=Dropnumlistcrv(Projpers(OutkL__),Eps__*0.5);
+ Tmp__=[];
+ for I__=1:Mixlength(OutkL__)
+ Tmp__2=Mixop(I__,OutkL__);
+ Tmp__3=Mixop(I__,Tmp__1);
+ Tmp__4=[];
+ for J__=1:length(Tmp__3)
+ Tmp__5=Tmp__2(Tmp__3(J__),:);
+ Tmp__4=[Tmp__4;Tmp__5];
+ end;
+ if Tmp__4~=[]
+ Tmp__=Mixadd(Tmp__,Tmp__4);
+ end;
+ end;
+ OutkL__=Tmp__;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.bin
new file mode 100644
index 00000000..d9fb0edd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.sci
new file mode 100755
index 00000000..fa26b319
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Cutsf2d.sci
@@ -0,0 +1,14 @@
+// 08.10.15
+
+function Out=Cutsf2d(Nvec,GL,Flg)
+ global THETA PHI
+ Theta=THETA; Phi=PHI;
+ Tmp=Rotate3data(GL,Nvec,[-1,0,0]);
+ THETA=%pi/2; PHI=0;
+ Out=Projpara(Tmp);
+ if Flg==1
+ Windisp(Out);
+ end;
+ THETA=Theta; PHI=Phi;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.bin
new file mode 100644
index 00000000..dc144378
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.sci
new file mode 100755
index 00000000..1df8e5e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dashline.sci
@@ -0,0 +1,31 @@
+// 08.05.21
+// 08.07.14
+// 10.01.02 bin remade
+// 10.11.13 Flattenlist used
+
+function Dashline(varargin)
+ global MilliIn
+ Nargs=length(varargin);
+ Nall=Nargs; Sen=1 ; Gap=1;
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1 & Tmp>0
+ Tmp1=varargin(Nall-1);
+ if type(Tmp1)==1 & length(Tmp1)==1 & Tmp1>0
+ Sen=Tmp1; Gap=Tmp;
+ Nall=Nall-2;
+ else
+ Sen=Tmp; Gap=Sen;
+ Nall=Nall-1;
+ end
+ end
+ Sen=1000/2.54/MilliIn*Sen;
+ Gap=1000/2.54/MilliIn*Gap;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Fdata=Flattenlist(Tmp);
+ for I=1:length(Fdata);
+ Figdata=Fdata(I);
+ Makehasen(Figdata,Sen,Gap,0);
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.bin
new file mode 100644
index 00000000..b64a96c8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.sci
new file mode 100755
index 00000000..82e9ac48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dataindex.sci
@@ -0,0 +1,24 @@
+//
+// 08.05.31
+
+function Ndm=Dataindex(P)
+ // %inf;%inf -> end
+ Ndm=[];
+ if P==[] return; end
+ N1=1;
+ Flg=0;
+ for J=1:size(P,1)
+ if P(J,1)==%inf
+ Ndm=[Ndm;N1,J-1];
+ N1=J+1;
+ if P(N1,1)==%inf
+ Flg=1;
+ break;
+ end
+ end
+ end
+ if Flg==0
+ Ndm=[Ndm;N1,size(P,1)];
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.bin
new file mode 100644
index 00000000..7ffb898a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.sci
new file mode 100644
index 00000000..b06ac44b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Definecolor.sci
@@ -0,0 +1,23 @@
+// 15.05.04
+
+function Definecolor(Name,Data)
+ Tmp1=size(Data,2);
+ if Tmp1<3 | Tmp1>4
+ disp("Size of data should be 3 or 4.");
+ return;
+ end;
+ if Tmp1==4
+ Tp="cmyk"
+ else
+ Tp="rgb"
+ end;
+ Tmp="";
+ for J=1:Tmp1
+ Tmp=Tmp+string(Data(J));
+ if J<Tmp1
+ Tmp=Tmp+",";
+ end;
+ end
+ Tmp="\definecolor{"+Name+"}{"+Tp+"}{"+Tmp+"}";
+ Texcom(Tmp);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.bin
new file mode 100644
index 00000000..a2f5f722
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci
new file mode 100755
index 00000000..43d8ea6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Deqplot.sci
@@ -0,0 +1,195 @@
+
+// 08.09.22
+// 09.03.10
+// 09.10.09 ( ` and order )
+// 09.10.09b ( system )
+// 09.11.12 ( debug for x<0 )
+// 13.10.19 ( __ added to variables )
+// 15.11.16 N changed to number of intervals
+// 15.12.08 bug of optiion ( __ ) fixed
+
+function P__=Deqplot(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs__=length(varargin);
+ Eps__=10^(-5);
+ Fnstr__=varargin(1);
+ Fnstr__=strsubst(Fnstr__,Prime(),'`');
+ K__=mtlb_findstr(Fnstr__,'=');
+ Str__=part(Fnstr__,1:(K__-1));
+ Fnstr__=part(Fnstr__,(K__+1):length(Fnstr__));
+ JL__=mtlb_findstr(Str__,'`');
+ Yname__=part(Str__,1:(JL__(1)-1));
+ Yname__=strsubst(Yname__,',',';');
+ Tmp__=mtlb_findstr(Yname__,';');
+ if length(Tmp__)>0
+ Dim__=length(Tmp__)+1;
+ Order__=1;
+ Fnstr__=strsubst(Fnstr__,',',';');
+ else
+ Dim__=1;
+ Order__=length(JL__);
+ end;
+ Rgstr__=varargin(2);
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Xname__=part(Rgstr__,1:K__-1);
+ Rng__=evstr(part(Rgstr__,K__+1:length(Rgstr__)));
+ else
+ Xname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end;
+ X0__=varargin(3);
+ Y0__=varargin(4);
+ if size(Y0__,2)>1
+ Y0__=Y0__';
+ end;
+ N__=50;
+ if Nargs__>=5
+ Tmp__=varargin(5);
+ Tmp__=strsubst(Tmp__,"=","__="); // 15.12.08
+ Tmp__=strsubst(Tmp__,"____","__");
+ execstr(Tmp__);
+ end;
+ X1__=Rng__(1); X2__=Rng__(2);
+ dX__=(X2__-X1__)/(N__-1);
+ dX__=(X2__-X1__)/(N__); // 15.11.16
+ if Dim__>1
+ Tmp__=mtlb_findstr(Yname__,'[');
+ Data__=part(Yname__,Tmp__+1:length(Yname__));
+ Tmp__=mtlb_findstr(Data__,']');
+ Data__=part(Data__,1:Tmp__-1);
+ Data__=';'+Data__+';';
+ NL__=mtlb_findstr(Data__,';');
+ NameL__=list();
+ for I__=1:length(NL__)-1
+ Tmp__=part(Data__,NL__(I__)+1:NL__(I__+1)-1);
+ NameL__(I__)=Tmp__;
+ end;
+ Fnrep__=Fnstr__;
+ for I__=1:length(NameL__)
+ Tmp__=NameL__(I__);
+ Fnrep__=strsubst(Fnrep__,Tmp__,'Pt('+string(I__)+')');
+ end;
+ Tmp1__='Outf=Dfp__('+Xname__+',Pt)';
+ Tmp2__='Outf='+Fnrep__;
+ deff(Tmp1__,Tmp2__);
+ Y0p__=Y0__;
+ Tmp1__='Outf=Dfn__('+Xname__+',Pt)';
+ Tmp2__='Outf=-('+Fnrep__+')';
+ deff(Tmp1__,Tmp2__);
+ Y0n__=Y0__;
+ else
+ YL__=mtlb_findstr(Fnstr__,Yname__);
+ Fnrep__=part(Fnstr__,1:YL__(1)-1);
+ for I__=1:length(YL__)
+ Py__=YL__(I__);
+ J__=1;
+ K__=Py__+1;
+ while part(Fnstr__,K__:K__)=='`'
+ J__=J__+1; K__=K__+1;
+ end;
+ Fnrep__=Fnrep__+Yname__+'('+string(J__)+')';
+ if I__==length(YL__)
+ Fnrep__=Fnrep__+part(Fnstr__,K__:length(Fnstr__));
+ else
+ J__=YL__(I__+1)-1;
+ if J__>=K__
+ Fnrep__=Fnrep__+part(Fnstr__,K__:J__);
+ end;
+ end;
+ end;
+ Eqvec__='[';
+ for I__=1:Order__-1
+ Eqvec__=Eqvec__+Yname__+'('+string(I__+1)+');';
+ end;
+ Eqvec__=Eqvec__+Fnrep__+']';
+ Tmp1__='Outf=Dfp__('+Xname__+','+Yname__+')';
+ Tmp2__='Outf='+Eqvec__;
+ deff(Tmp1__,Tmp2__);
+ Y0p__=Y0__;
+ YL__=mtlb_findstr(Fnstr__,Yname__);
+ Fnrep__=part(Fnstr__,1:YL__(1)-1);
+ for I__=1:length(YL__)
+ Py__=YL__(I__);
+ J__=1;
+ K__=Py__+1;
+ while part(Fnstr__,K__:K__)=='`'
+ J__=J__+1; K__=K__+1;
+ end;
+ if modulo(J__,2)==1
+ Fnrep__=Fnrep__+Yname__+'('+string(J__)+')';
+ else
+ Fnrep__=Fnrep__+'(-'+Yname__+'('+string(J__)+'))';
+ end;
+ if I__==length(YL__)
+ Fnrep__=Fnrep__+part(Fnstr__,K__:length(Fnstr__));
+ else
+ J__=YL__(I__+1)-1;
+ if J__>=K__
+ Fnrep__=Fnrep__+part(Fnstr__,K__:J__);
+ end;
+ end;
+ end;
+ if modulo(Order__,2)==1
+ Fnrep__='-('+Fnrep__+')';
+ end;
+ Fnrep__=strsubst(Fnrep__,Xname__,'(-'+Xname__+')'); // 09.11.12
+ Eqvec__='[';
+ for I__=1:Order__-1
+ Eqvec__=Eqvec__+Yname__+'('+string(I__+1)+');';
+ end;
+ Eqvec__=Eqvec__+Fnrep__+']';
+ Tmp1__='Outf=Dfn__('+Xname__+','+Yname__+')';
+ Tmp2__='Outf='+Eqvec__;
+ deff(Tmp1__,Tmp2__);
+ Y0n__=[];
+ for I__=1:size(Y0__,1)
+ Y0n__=[Y0n__;(-1)^(I__-1)*Y0__(I__)];
+ end;
+ end;
+ if X0__<=X1__
+ X__=X1__:dX__:X2__;
+ Y__=ode(Y0p__,X0__,X__,Dfp__);
+ M__=min(size(X__,2),size(Y__,2));
+ if Dim__>1
+ PL__=Y__';
+ P__=PL__(1:M__,:);
+ else
+ P__=[X__(:,1:M__);Y__(1,1:M__)]';
+ end;
+ return;
+ end;
+ if X2__<=X0__
+ X__=(-X2__):dX__:(-X1__);
+ Y__=ode(Y0n__,-X0__,X__,Dfn__);
+ X__=-X__;
+ M__=min(size(X__,2),size(Y__,2));
+ if Dim__>1
+ PL__=Y__';
+ P__=PL__(1:M__,:);
+ else
+ P__=[X__(:,1:M__);Y__(1,1:M__)]';
+ end;
+ return;
+ end;
+ XP__=X0__:dX__:X2__;
+ YP__=ode(Y0p__,X0__,XP__,Dfp__);
+ M__=min(size(XP__,2),size(YP__,2));
+ XP__=XP__(:,1:M__);
+ YP__=YP__(:,1:M__);
+ XN__=(-X0__)+dX__:dX__:(-X1__);
+ YN__=ode(Y0n__,-X0__,XN__,Dfn__);
+ M__=min(size(XN__,2),size(YN__,2));
+ XN__=XN__(:,1:M__);
+ YN__=YN__(:,1:M__);
+ XN__=-XN__;
+ XN__=XN__(length(XN__):-1:1);
+ YN__=YN__(:,size(YN__,2):-1:1);
+ if Dim__>1
+ P__=[YN__';YP__']
+ else
+ X__=[XN__,XP__];
+ Y__=[YN__(1,:),YP__(1,:)];
+ P__=[X__;Y__]';
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.bin
new file mode 100644
index 00000000..c30c8ae4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.sci
new file mode 100755
index 00000000..cbffc3d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Derivative.sci
@@ -0,0 +1,64 @@
+// 09.10.04
+// 09.10.05
+// 09.10.06
+// 14.10.24 numderivative used after 5.5
+
+function Out=Derivative(varargin)
+ Nargs=length(varargin);
+ Out=[];
+ Fs=varargin(1);
+ Vv=varargin(2);
+ Np=3;
+ if type(Vv)==10
+ Prstr=strsubst(Vv,'[','(');
+ Prstr=strsubst(Prstr,']',')');
+ Tmp=part(Prstr,1);
+ if Tmp~='('
+ Prstr='('+Prstr+')';
+ end;
+ deff('Out=Tmpfun'+Prstr,'Out='+Fs);
+ Fs='Tmpfun'+Prstr;
+ Vv=varargin(Np);
+ Np=Np+1;
+ end;
+ Nd=[];
+ if Np<=Nargs
+ Nd=varargin(Np);
+ end;
+ Js=mtlb_findstr(Fs,'(');
+ JL=mtlb_findstr(Fs,',');
+ Je=mtlb_findstr(Fs,')');
+ Sep=[Js(1),JL,Je];
+ Fse=Fs;
+ for I=1:length(Vv)
+ J1=Sep(I)+1;
+ J2=Sep(I+1)-1;
+ Tmp1=part(Fs,J1:J2);
+ Tmp2='X_'+string(I);
+ Fse=strsubst(Fse,Tmp1,Tmp2);
+ end;
+ function Ans=Tmpf(W)
+ X1=W(1);
+ if length(W)>1
+ X2=W(2);
+ else;
+ X2=%inf;
+ end;
+ if length(W)>2
+ X3=W(3);
+ else
+ X3=%inf;
+ end;
+ Tmp=Assign(Fse,'X_1',X1,'X_2',X2,'X_3',X3);
+ Ans=evstr(Tmp)';
+ endfunction;
+ Tmp1=getversion("scilab");
+ if Tmp1(1)*10+Tmp1(2)>=55 then
+ Out=numderivative(Tmpf,Vv')';
+ else
+ Out=derivative(Tmpf,Vv')';
+ end
+ if Nd~=[]
+ Out=Out(Nd,:)
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.bin
new file mode 100644
index 00000000..6f9d2eaf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.sci
new file mode 100755
index 00000000..b6a53b62
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Diagcelldata.sci
@@ -0,0 +1,15 @@
+// 10.03.28
+
+function Out=Diagcelldata(Tb,Nc,Nr)
+ Tmp=Findcell(Tb,Nc,Nr);
+ C=Tmp(1);
+ Dx=Tmp(2);
+ Dy=Tmp(3);
+ Pne=C+[Dx,Dy];
+ Pnw=C+[-Dx,Dy];
+ Psw=C+[-Dx,-Dy];
+ Pse=C+[Dx,-Dy];
+ Tmp1=Listplot(Pnw,Pse);
+ Tmp2=Listplot(Pne,Psw);
+ Out=list(Tmp1,Tmp2);
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.bin
new file mode 100644
index 00000000..76090b77
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.sci
new file mode 100755
index 00000000..be16b473
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividegraphics.sci
@@ -0,0 +1,20 @@
+// 08.05.31
+// 10.01.01
+// 11.01.07
+
+function OutL=Dividegraphics(Pd)
+ if length(Pd)==0
+ OutL=Pd;
+ return;
+ end;
+ DtL=Flattenlist(Pd);
+ OutL=list();
+ for J=1:length(DtL)
+ Dt= DtL(J);
+ Ndm=Dataindex(Dt);
+ for I=1:size(Ndm,1)
+ Fd=Dt(Ndm(I,1):Ndm(I,2),:);
+ OutL($+1)=Fd;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.bin
new file mode 100644
index 00000000..f65a407d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.sci
new file mode 100644
index 00000000..36531da2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dividetable.sci
@@ -0,0 +1,9 @@
+// 13.05.03
+
+function Out=Dividetable(Tb)
+ G=Tb(1);
+ Gw=G(1);
+ Gt=Mixsub(Tb(2),G);
+ Gy=Mixsub(Tb(3),G);
+ Out=list(Gw,Gt,Gy)
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.bin
new file mode 100644
index 00000000..921b0546
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.sci
new file mode 100755
index 00000000..5054faf2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Doscaling.sci
@@ -0,0 +1,14 @@
+// 09.12.25
+
+function Out=Doscaling(G)
+ global LOGX LOGY SCALEX SCALEY;
+ GLg=G;
+ if LOGX==1
+ GLg=[log10(G(:,1)),GLg(:,2)];
+ end;
+ if LOGY==1
+ GLg=[GLg(:,1),log10(G(:,2))];
+ end;
+ Out=[SCALEX*GLg(:,1),SCALEY*GLg(:,2)];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.bin
new file mode 100644
index 00000000..9b3d417e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.sci
new file mode 100755
index 00000000..fc2847c7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotfilldata.sci
@@ -0,0 +1,186 @@
+// 08.05.31
+// 10.01.01
+// 10.03.07 (Kosa )
+
+function ShaL=Dotfilldata(varargin)
+ global XMIN XMAX YMIN YMAX MilliIn;
+ Nargs=length(varargin);
+ ShaL=[];
+ Eps=0.01;
+ Kakudo=45;
+ Kosa=0.5;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xmn=Tmp(1); Ymn=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ Xmx=Tmp(1); Ymx=Tmp(2);
+ for N=Nargs:-1:1
+ Tmp=varargin(N);
+ if Mixtype(Tmp)~=1
+ break
+ end
+ end
+ if N<Nargs
+ Kosa=varargin(N+1);
+ end
+// Kosa=min(Kosa,1); // 100307
+ Tmp=1/(2*Kosa);
+ Kankaku=Tmp*0.100*1000/2.54/MilliIn;
+ NaitenL=varargin(1);
+ if Mixtype(NaitenL)==1
+ NaitenL=list(NaitenL);
+ end
+ Ns=2;
+ StartP=Op(1,NaitenL);
+ if type(StartP)==10
+ StartP=[(XMIN+XMAX)/2,(YMIN+YMAX)/2];
+ else
+ StartP=Doscaling(StartP);
+ end;
+ Tmp=varargin(2);
+ if Mixtype(Tmp)==1
+ StartP=Doscaling(Tmp);
+ Ns=3;
+ end
+ Tmp=[];
+ for I=Ns:N
+ Tmp=Mixjoin(Tmp,list(varargin(I)));
+ end
+ Bdy=Kyoukai(Tmp);
+ Bdys=list();
+ for I=1:length(Bdy)
+ Tmp1=Bdy(I);
+ Tmp2=Doscaling(Tmp1);
+ Bdys=Mixjoin(Bdys,list(Tmp2))
+ end;
+ Bdy=Bdys;
+ PtnL=[];
+ for I=1:length(NaitenL)
+ Tmp=Op(I,NaitenL);
+ if type(Tmp)==1
+ Tmp1=Naigai(Tmp,Bdy)
+ PtnL=Mixjoin(PtnL,list(Tmp1));
+ else
+ if type(Tmp)~=10
+ disp('Type Error');
+ return;
+ end
+ Ptn=[];
+ for J=1:length(Tmp)
+ if Op(J,Tmp)=='i'
+ Ptn=[Ptn,1];
+ else
+ Ptn=[Ptn,0];
+ end
+ end
+ PtnL=Mixjoin(PtnL,list(Ptn));
+ end
+ end
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ if Member(Ptn,PtnL)
+ Wn=Doscaling(Framedata());
+ Bdy=Mixjoin(Bdy,list(Wn));
+ Tmp=[];
+ for I=1:Mixlength(PtnL)
+ Tmp1=[Op(I,PtnL),1];
+ Tmp=Mixjoin(Tmp,list(Tmp1));
+ end
+ PtnL=Tmp;
+ end
+ V=[cos(Kakudo*%pi/180),sin(Kakudo*%pi/180)];
+ Vm=[-sin(Kakudo*%pi/180),cos(Kakudo*%pi/180)];
+ Tmp=Op(1,NaitenL);
+ if type(Tmp)==1 & size(Tmp,2)>1
+ Delta=Tmp-StartP;
+ K=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ PA=StartP+K*Kankaku*Vm;
+ P=PA;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ I=1;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ P=PA+I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ I=I+1;
+ end
+ P=PA-Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ I=2;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ P=PA-I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ I=I+1;
+ end
+ else
+ Delta=[Xmn,Ymn]-StartP;
+ K1=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmx,Ymn]-StartP;
+ K2=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmx,Ymx]-StartP;
+ K3=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmn,Ymx]-StartP;
+ K4=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ IM=max(K1,K2,K3,K4);
+ Im=min(K1,K2,K3,K4);
+ for I=Im:IM
+ P=StartP+I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ if length(Sha)>0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ end
+ end
+ end
+ ShaLs=list();
+ for I=1:length(ShaL)
+ Tmp=ShaL(I);
+ Tmp1=Unscaling(Tmp);
+ ShaLs=Mixjoin(ShaLs,Tmp1);
+ end;
+ ShaL=ShaLs
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.bin
new file mode 100644
index 00000000..2e5b0eb1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.sci
new file mode 100755
index 00000000..dc35fde5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dotprod.sci
@@ -0,0 +1,6 @@
+// 09.10.03
+
+function Out=Dotprod(a,b)
+ Out=a*b';
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.bin
new file mode 100644
index 00000000..6f85f204
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.sci
new file mode 100755
index 00000000..253d5d75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedline.sci
@@ -0,0 +1,124 @@
+// 08.05.21
+// 08.11.26
+// 09.12.24 (Revised)
+// 09.12.29
+// 10.01.02
+// 11.05.27
+
+function Dottedline(varargin)
+ global Wfile FID MilliIn PenThick PenThickInit
+ Nall=length(varargin);
+ Nagasa=0.1;
+ Ookisa=PenThick;
+ I=Nall;
+ Tmp=varargin(I);
+ while type(Tmp)==1 & length(Tmp)==1
+ I=I-1;
+ Tmp=varargin(I);
+ end
+ if I==Nall-1
+ Nagasa=Nagasa*varargin(Nall);
+ Nall=Nall-1;
+ end
+ if I==Nall-2
+ Nagasa=Nagasa*varargin(Nall-1);
+ Ookisa=Ookisa*varargin(Nall);
+ Nall=Nall-2;
+ end
+ Nagasa=1000/2.54/MilliIn*Nagasa;
+ Ra=Ookisa/MilliIn;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Pdata=Flattenlist(Tmp); //
+ for II=1:length(Pdata)
+ Clist=MakeCurves(Op(II,Pdata));
+ DinM=Dataindex(Clist);
+ Mojisu=0;
+ for n=1:size(DinM,1)
+ Tmp=DinM(n,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Len=0;
+ Lenlist=[0];
+ for I=2:size(Data,1)
+ Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
+ Lenlist=[Lenlist,Len];
+ end
+ Lenall=Lenlist(length(Lenlist));
+ if Lenall==0
+ continue
+ end
+ Naga=Nagasa;
+ Nten=round(Lenall/Naga)+1;
+ if Nten>1
+ Seg=Lenall/(Nten-1);
+ else
+ Seg=Lenall;
+ end
+ Eps=10^(-6)*Seg;
+ PPd=[];
+ Hajime=1;
+ for I=0:Nten-1
+ Len=Seg*I;
+ if I>0
+ J=Hajime;
+ while Len>=Lenlist(J)+Eps
+ J=J+1;
+ end
+ Hajime=J-1;
+ end
+ T=(Len-Lenlist(Hajime))...
+ /(Lenlist(Hajime+1)-Lenlist(Hajime));
+ P=Data(Hajime,:)+T*(Data(Hajime+1,:)...
+ -Data(Hajime,:));
+ PPd=[PPd;P];
+ if I==Nten-1
+ if norm(P-Data(1,:))<Eps
+ continue
+ end
+ end
+ end
+ for I=1:size(PPd,1)
+ P=PPd(I,:);
+ if size(PPd,1)==1
+ V=[1,0];
+ elseif I==1
+ Tmp=PPd(I+1,:)-P;
+ V=1/norm(Tmp)*Tmp;
+ elseif I==size(PPd,1)
+ Tmp= P-PPd(I-1,:);
+ V=1/norm(Tmp)*Tmp;
+ else
+ Tmp1=PPd(I+1,:)-P;
+ Tmp2=P-PPd(I-1,:);
+ Tmp3=1/norm(Tmp1)*Tmp1+1/norm(Tmp2)*Tmp2;
+ V=1/norm(Tmp3)*Tmp3;
+ end;
+ X=sprintf('%5.5f',P(1));
+ Y=sprintf('%5.5f',P(2));
+ Str='\put('+X+','+Y+'){\circle*{'+sprintf('%6.6f',Ra)+'}}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ end
+ end;
+ if Mojisu>0
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.bin
new file mode 100644
index 00000000..5576b57e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.sci
new file mode 100755
index 00000000..c4d9b86a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dottedlineold.sci
@@ -0,0 +1,115 @@
+// 08.05.21
+// 08.11.26
+
+function Dottedline(varargin)
+ global Wfile FID MilliIn;
+ Nall=length(varargin);
+ Nagasa=0.1;
+ Ookisa=0.02*0.5;
+ I=Nall;
+ Tmp=varargin(I);
+ while type(Tmp)==1 & length(Tmp)==1
+ I=I-1;
+ Tmp=varargin(I);
+ end
+ if I==Nall-1
+ Nagasa=Nagasa*varargin(Nall);
+ Nall=Nall-1;
+ end
+ if I==Nall-2
+ Nagasa=Nagasa*varargin(Nall-1);
+ Ookisa=Ookisa*varargin(Nall);
+ Nall=Nall-2;
+ end
+ Nagasa=1000/2.54/MilliIn*Nagasa;
+ Ookisa=1000/2.54/MilliIn*Ookisa;
+ CL=[];
+ Nk=4;
+ Tmp=Framedata([0,0],Ookisa/2);
+ CL=Tmp;
+ for N=1:Nall
+ Pdata=varargin(N);
+ if Mixtype(Pdata)==1
+ Pdata=MixS(Pdata);
+ end
+ for II=1:Mixlength(Pdata)
+ Clist=MakeCurves(Op(II,Pdata));
+ DinM=Dataindex(Clist);
+ for n=1:size(DinM,1)
+ Tmp=DinM(n,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Len=0;
+ Lenlist=[0];
+ for I=2:size(Data,1)
+ Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
+ Lenlist=[Lenlist,Len];
+ end
+ Lenall=Lenlist(length(Lenlist));
+ if Lenall==0
+ continue
+ end
+ Naga=Nagasa;
+ Nten=round(Lenall/Naga)+1;
+ if Nten>1
+ Seg=Lenall/(Nten-1);
+ else
+ Seg=Lenall;
+ end
+ Eps=10^(-6)*Seg;
+ Hajime=1;
+ for I=0:Nten-1
+ Len=Seg*I;
+ if I>0
+ J=Hajime;
+ while Len>=Lenlist(J)+Eps
+ J=J+1;
+ end
+ Hajime=J-1;
+ end
+ T=(Len-Lenlist(Hajime))...
+ /(Lenlist(Hajime+1)-Lenlist(Hajime));
+ P=Data(Hajime,:)+T*(Data(Hajime+1,:)...
+ -Data(Hajime,:));
+ if I==Nten-1
+ if Vecnagasa(P-Data(1,:))<Eps
+ continue
+ end
+ end
+ PL=[];
+ for J=1:size(CL,1)
+ PL=[PL;P+CL(J,:)];
+ end
+ Mojisu=0;
+ for J=1:size(PL,1)
+ Q=PL(J,:);
+ X=round(MilliIn*Q(1));
+ X=string(X);
+ Y=-round(MilliIn*Q(2));
+ Y=string(Y);
+ Str='\special{pa '+X+" "+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ Str='\special{sh 1}'+'\special{fp}%'
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ end
+ end
+ end
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.bin
new file mode 100644
index 00000000..14cf5d76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.sci
new file mode 100755
index 00000000..3a06be00
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Dropnumlistcrv.sci
@@ -0,0 +1,34 @@
+// 08.09.10
+// 08.09.15
+// 08.10.10
+// 10.09.03
+
+function OutL=Dropnumlistcrv(QdL,Eps)
+ Eps0=10^(-6); //
+ if Mixtype(QdL)==1
+ PdL=list(QdL);
+ else
+ PdL=QdL;
+ end;
+ OutL=[];
+ for I=1:Mixlength(PdL)
+ Pd=Op(I,PdL);
+ PtL=[1];
+ P=Pd(1,:);
+ for K=2:size(Pd,1)-1 //
+ if norm(P-Pd(K,:))>Eps
+ PtL=[PtL,K];
+ P=Pd(K,:);
+ end;
+ end;
+ // PtL=[PtL,size(Pd,1)];
+ K=size(Pd,1) //
+ if norm(P-Pd(K,:))>Eps0 //
+ PtL=[PtL,K]; //
+ end; //
+ if length(PtL)==1
+ PtL=[];
+ end;
+ OutL=Mixadd(OutL,PtL);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.bin
new file mode 100644
index 00000000..155b2072
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.sci
new file mode 100755
index 00000000..84fd6daa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Droppoint.sci
@@ -0,0 +1,28 @@
+// 08.10.07
+// 08.10.27
+// 09.06.02
+
+function AnsL=Droppoint(varargin)
+ Nargs=length(varargin);
+ Curve=varargin(1);
+ Eps=0.02;
+ if Nargs>=2
+ Eps=varargin(2);
+ end;
+ AnsL=[%inf,%inf];
+ for I=1:size(Curve,1)
+ P=Curve(I,:);
+ if P(1)~=%inf
+ Tmp=AnsL(size(AnsL,1),:);
+ if norm(P-Tmp)>Eps
+ AnsL=[AnsL;P];
+ end;
+ else
+ AnsL=[AnsL;%inf,%inf];
+ end;
+ end;
+ AnsL=AnsL(2:size(AnsL,1),:);
+ Tmp=Ptend(Curve);
+ AnsL=[AnsL(1:size(AnsL,1)-1,:);Tmp];
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.bin
new file mode 100644
index 00000000..86d3110c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.sci
new file mode 100755
index 00000000..60f0da1a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwline.sci
@@ -0,0 +1,66 @@
+// 08.05.21
+// 11.05.25
+
+function Drwline(varargin)
+ global Wfile FID MilliIn PenThick PenThickInit;
+ Nall=length(varargin);
+ Thick=PenThick;
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1
+ Setpen(Tmp);
+ Nall=Nall-1;
+ end;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Pdata=Flattenlist(Tmp);
+ for II=1:length(Pdata) //11.05.25
+ Clist=MakeCurves(Op(II,Pdata));
+ DinM=Dataindex(Clist);
+ for n=1:size(DinM,1)
+ Tmp=DinM(n,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Mojisu=0;
+ Tmp=Data(1,:);
+ for I=1:size(Data,1)
+ Tmp=Data(I,:);
+ X=sprintf('%5.5f',Tmp(1));
+ Y=sprintf('%5.5f',Tmp(2));
+ Pt='('+X+','+Y+')';
+ if I==1 then
+ Str='\polyline'+Pt;
+ else
+ Str=Pt;
+ end
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end;
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ if Mojisu~=0
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end;
+ end;
+ end;
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end;
+ end;
+ Setpen(Thick/PenThickInit);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.bin
new file mode 100644
index 00000000..02e88bd7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.sci
new file mode 100755
index 00000000..5df4a877
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwpt.sci
@@ -0,0 +1,142 @@
+//
+// 08.05.31
+// 09.12.25
+// 10.01.01
+// 11.05.26 (for pdflatex)
+
+function Drwpt(varargin)
+ global Wfile FID TenSize TenSizeInit MilliIn;
+ Nargs=length(varargin);
+ All=Nargs;
+ Tmp=varargin(All);
+ Iro=[0,0,0,1];
+ Iroflg=0;
+ if type(Tmp)==10 then
+ Iro=Ratiocmyk(Tmp);
+ Iroflg=1;
+ All=All-1;
+ end
+ Tmp=varargin(All);
+ Kosa=1;
+ if type(Tmp)==1 & length(Tmp)==1
+ Kosa=Tmp; All=All-1;
+ end;
+ Ra=TenSize*1000/2.54/MilliIn;
+ if Iroflg>0
+ Str='{\color[cmyk]{';
+ for J=1:4
+ Str=Str+string(Kosa*Iro(J));
+ if J<4 then
+ Str=Str+',';
+ end
+ end
+ Str=Str+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ end;
+ Mojisu=0;
+ for II=1:All
+ Tmp=varargin(II);
+ MS=Flattenlist(Tmp); // 11.05.29
+ for I=1:length(MS);
+ P=Op(I,MS);
+ if InWindow(P)~='i'
+ continue
+ end
+ P=Doscaling(P);
+ X=sprintf('%5.5f',P(1));
+ Y=sprintf('%5.5f',P(2));
+ Str='\put('+X+','+Y+'){\circle*{'+sprintf('%6.6f',Ra)+'}}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ end;
+ Str="";
+ if Iroflg>0
+ Str='}';
+ end;
+ if Mojisu>0
+ Fmt='\n%s\n';
+ else
+ Fmt='%s\n';
+ end;
+ if Wfile=='default'
+ mprintf(Fmt,Str);
+ else
+ mfprintf(FID,Fmt,Str);
+ end;
+ Mojisu=0;
+ if Iroflg>0
+ Str='{\color[cmyk]{';
+ for J=1:4
+ Str=Str+string(Iro(J));
+ if J<4 then
+ Str=Str+',';
+ end
+ end
+ Str=Str+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end;
+ Mojisu=0;
+ end;
+ for II=1:All
+ Tmp=varargin(II);
+ MS=Flattenlist(Tmp); // 11.05.29
+ for I=1:length(MS);
+ P=Op(I,MS);
+ if InWindow(P)~='i'
+ continue
+ end
+ P=Doscaling(P);
+ X=sprintf('%5.5f',P(1));
+ Y=sprintf('%5.5f',P(2));
+ Str='\put('+X+','+Y+'){\circle{'+sprintf('%6.6f',Ra)+'}}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ end
+ Str="%";
+ if Iroflg>0
+ Str='}%';
+ end;
+ if Mojisu>0
+ Fmt='\n%s\n';
+ else
+ Fmt='%s\n';
+ end;
+ if Wfile=='default'
+ mprintf(Fmt,Str);
+ else
+ mfprintf(FID,Fmt,Str);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.bin
new file mode 100644
index 00000000..6d275fab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.sci
new file mode 100755
index 00000000..b091754f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Drwxy.sci
@@ -0,0 +1,17 @@
+function Drwxy(varargin)
+ global XMIN XMAX YMIN YMAX GENTEN ARROWSIZE
+ global ZIKU XNAME XPOS YNAME YPOS ONAME OPOS ULEN;
+ Nargs=length(varargin)
+ Tmp=mtlb_findstr(ZIKU,'arrow');
+ if Tmp~=[]
+ Arrowline([XMIN,GENTEN(2)],[XMAX,GENTEN(2)],ARROWSIZE);
+ Arrowline([GENTEN(1),YMIN],[GENTEN(1),YMAX],ARROWSIZE);
+ else
+ Drwline(Listplot([XMIN,GENTEN(2)],[XMAX,GENTEN(2)]));
+ Drwline(Listplot([GENTEN(1),YMIN],[GENTEN(1),YMAX]));
+ end;
+ Letter([XMAX,GENTEN(2)],XPOS,XNAME);
+ Letter([GENTEN(1),YMAX],YPOS,YNAME);
+ Letter(GENTEN,OPOS,ONAME);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.bin
new file mode 100644
index 00000000..e3e99cfd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.sci
new file mode 100755
index 00000000..9b67e366
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Embed.sci
@@ -0,0 +1,41 @@
+// 09.09.25
+// 09.11.21
+// 09.11.26
+
+function Out=Embed(varargin)
+ Nargs=length(varargin);
+ Pd3=varargin(1);
+ if Mixtype(Pd3)==1
+ Pd3=list(Pd3);
+ elseif Mixtype(Pd3)==3
+ Tmp=list();
+ for I=1:length(Pd3)
+ Tmp=Mixjoin(Tmp,Pd3(I));
+ end;
+ Pd3=Tmp;
+ end;
+ Tmpf=varargin(2);
+ if type(Tmpf)==10
+ Tmp=varargin(3);
+ Tmp1=strsubst(Tmp,'[','(');
+ Vstr=strsubst(Tmp1,']',')');
+ deff('Z=Tmpfn'+Vstr,'Z='+Tmpf);
+ else
+ Tmpfn=Tmpf;
+ end;
+ Out=list();
+ for I=1:length(Pd3)
+ PD=Pd3(I);
+ Ans=[];
+ for J=1:size(PD,1)
+ P=PD(J,:);
+ Tmp=Tmpfn(P(1),P(2));
+ Ans=[Ans;Tmp];
+ end;
+ Out($+1)=Ans;
+ end;
+ if length(Out)==1
+ Out=Out(1);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.bin
new file mode 100644
index 00000000..6a5a9096
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.sci
new file mode 100755
index 00000000..bfc191b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Enclosing.sci
@@ -0,0 +1,23 @@
+// 08.05.31
+// 10.12.04
+// 16.12.05 to make it a closed curve
+
+function AnsL=Enclosing(varargin)
+ global MilliIn;
+ Eps=10^(-7); // 12.05
+ Nargs=length(varargin);
+ P=varargin(1);
+ if Mixtype(P)==2
+ Tmp=Op(1,P);
+ if type(Tmp)~=1 | length(Tmp)~=1
+ AnsL=EnclosingS(P,varargin(2:Nargs));
+ AnsL=Joincrvs(AnsL) // 10.12.04
+ end
+ end;
+ Tmp1=Op(1,AnsL);
+ Tmp2=Op(size(AnsL,1),AnsL);
+ if norm(Tmp2-Tmp1)>Eps then // 12.05
+ AnsL=[AnsL;Tmp1];
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.bin
new file mode 100644
index 00000000..a5f0596e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.sci
new file mode 100755
index 00000000..cded7ef2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/EnclosingS.sci
@@ -0,0 +1,126 @@
+// 08.05.31
+// 08.11.12
+// 09.10.12
+// 09.10.14
+// 15.04.10
+
+function AnsL=EnclosingS(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ AnsL=[];
+ PdataL=varargin(1);
+ Nall=length(PdataL);
+ Eps=10^(-3);
+ EEps=0.1;
+ S=[];
+ Flg=0;
+ for I=2:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1 & size(Tmp,1)==1 & size(Tmp,2)>1
+ S=Tmp;
+ end
+ if type(Tmp)==1 & length(Tmp)==1
+ if Flg==0
+ Eps=Tmp;
+ Flg=Flg+1
+ else
+ EEps=Tmp
+ end
+ end
+ end
+ F=Op(1,PdataL); G=Op(Nall,PdataL);
+ KL=IntersectcrvsPp(F,G);
+ if length(KL)==1
+ Tmp=Op(1,KL);
+ P=Op(1,Tmp);
+ T1=Op(2,Tmp);
+ end
+ if length(KL)==0
+ if Numptcrv(F)>Numptcrv(G)
+ Tmp=Nearestpt(F,G);
+ P=Op(1,Tmp);
+ T1=Op(2,Tmp);
+ else
+ Tmp=Nearestpt(G,F);
+ P=Op(3,Tmp);
+ T1=Op(4,Tmp);
+ end
+ end
+ if length(KL)>1 // 15.04.10
+ if S==[]
+ disp('No Start Point');
+ return
+ end;
+ Tmp=Op(1,KL);
+ P=Op(1,Tmp);
+ T1=Op(2,Tmp);
+ Tmp=norm(P-S);
+ for I=2:length(KL)
+ Tmp1=Op(1,Op(I,KL));
+ Tmp2=norm(Tmp1-S);
+ if Tmp2<Tmp
+ P=Tmp1;
+ T1=Op(2,Op(I,KL));
+ Tmp=Tmp2;
+ end
+ end
+ end
+ S=P;
+ AnsL=[];
+ for N=1:Nall
+ F=Op(N,PdataL);
+ if N>1 P=Q;end
+ if N==Nall
+ Q=S;
+ else
+ Flg=0;
+ G=Op(N+1,PdataL);
+ KL=IntersectcrvsPp(G,F);
+ if length(KL)==1
+ Tmp=Op(1,KL);
+ Q=Op(1,Tmp);
+ T3=Op(2,Tmp);
+ Flg=10;
+ end
+ if length(KL)==0 Flg=1; end
+ if length(KL)>=2 // Maple bug?
+ Tmp1=Op(1,Op(1,KL));
+ Tmp2=Op(1,Op(2,KL));
+ Tmp=norm(Tmp1-Tmp2);
+ if Tmp<Eps*10 Flg=1; end
+ end
+ if Flg==1
+ if Numptcrv(F)>Numptcrv(G)
+ Tmp=Nearestpt(F,G);
+ Q=Op(1,Tmp);
+ T3=Op(4,Tmp);
+ Flg=10;
+ else
+ Tmp=Nearestpt(G,F);
+ Q=Op(3,Tmp);
+ T3=Op(2,Tmp);
+ Flg=10;
+ end
+ end
+ if Flg<10
+ T2=%inf;
+ for I=1:length(KL)
+ Dt=Op(I,KL);
+ Tmp1=Op(1,Dt);
+ Tmp=Op(3,Dt);
+ Tmp2=Paramoncrv(Tmp1,Tmp,F);
+ Tmp3=Op(2,Dt);
+ if (Tmp2>T1+Eps) & (Tmp2<T2+Eps)
+ Q=Tmp1;
+ T2=Tmp2;
+ T3=Tmp3;
+ end
+ end
+ end
+ end
+ Tmp=Partcrv(P,Q,F);
+ T1=T3;
+ AnsL=Mixadd(AnsL,Tmp);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.bin
new file mode 100644
index 00000000..ceb0ffb6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.sci
new file mode 100755
index 00000000..ff4a3c43
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Endpicture.sci
@@ -0,0 +1,11 @@
+// 08.05.22
+
+function Endpicture(varargin)
+ if length(varargin)==0
+ Flg=1
+ else
+ Flg=varargin(1);
+ end
+ Closepicture(Flg)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.bin
new file mode 100644
index 00000000..38c7da86
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.sci
new file mode 100755
index 00000000..b9c86eef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepara.sci
@@ -0,0 +1,79 @@
+// 08.09.10
+// 13.10.21 ( __ added to varibles )
+// 17.05.21 Mdv, Ndv changed to division number
+
+function [Zval__,Xval__,Yval__]=Evlptablepara(MS__)
+ Nargs__=Mixlength(MS__);
+ Eps__=10^(-3);
+ Tmp__=Mixop(1,MS__);
+ FdL__=Fullformfunc(Tmp__);
+ Mdv=50;
+ Ndv__=50;
+ if Nargs__>=2
+ Tmp__=Mixop(2,MS__);
+ if Mixtype(Tmp__)~=1 Tmp__=Mixop(1,Tmp__); end;
+ if length(Tmp__)>1
+ Mdv__=Tmp__(1,1);
+ Ndv__=Tmp__(1,2);
+ else
+ Mdv__=Tmp__
+ if Nargs__==2
+ Ndv__=Mdv__
+ else
+ Tmp1__=Mixop(3,MS__);
+ if type(Tmp1__)==1 & length(Tmp1__)==1
+ Ndv__=Tmp1__;
+ else
+ Ndv__=Mdv__;
+ end
+ end
+ end
+ end;
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ U1__=Urange__(1); U2__=Urange__(2);
+ V1__=Vrange__(1); V2__=Vrange__(2);
+ Du__=(U2__-U1__)/(Mdv__); //17.05.21
+ Dv__=(V2__-V1__)/(Ndv__); //17.05.21
+ Xyzstr__=[Mixop(2,FdL__),Mixop(3,FdL__),Mixop(4,FdL__)];
+ I__=1;
+ Zval__=[];
+ for v__=V1__:Dv__:V2__
+ v1__=v__-Eps__/2; v2__=v__+Eps__/2;
+ ZuL__=[];
+ for u__=U1__:Du__:U2__;
+ u1__=u__-Eps__/2; u2__=u__+Eps__/2;
+ Tmpv__=strsubst(Xyzstr__,Vname__,'v__');
+ Tmp__=strsubst(Tmpv__,Uname__,'u1__');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmpv__,Uname__,'u2__');
+ P2__=evstr(Tmp__);
+ Tmp1__=Parapt(P1__);
+ Tmp2__=Parapt(P2__);
+ Dxu__=(Tmp2__(1)-Tmp1__(1))/Eps__;
+ Dyu__=(Tmp2__(2)-Tmp1__(2))/Eps__;
+ u1__=u__-Eps__/2; u2__=u__+Eps__/2;
+ Tmpu__=strsubst(Xyzstr__,Uname__,'u__');
+ Tmp__=strsubst(Tmpu__,Vname__,'v1__');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmpu__,Vname__,'v2__');
+ P2__=evstr(Tmp__);
+ Tmp1__=Parapt(P1__);
+ Tmp2__=Parapt(P2__);
+ Dxv__=(Tmp2__(1)-Tmp1__(1))/Eps__;
+ Dyv__=(Tmp2__(2)-Tmp1__(2))/Eps__;
+ Tmp__=Dxu__*Dyv__-Dxv__*Dyu__;
+ ZuL__=[ZuL__,Tmp__];
+ end;
+ Zval__=[Zval__;ZuL__];
+ end;
+ Yval__=V1__:Dv__:V2__;
+ Xval__=U1__:Du__:U2__;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.bin
new file mode 100644
index 00000000..775dd55e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.sci
new file mode 100755
index 00000000..15ddd0a8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Evlptablepers.sci
@@ -0,0 +1,77 @@
+// 08.09.21
+// 13.11.01 ( __ added to varibles )
+
+function [Zval__,Xval__,Yval__]=Evlptablepers(MS__)
+ Nargs__=Mixlength(MS__);
+ Eps__=10^(-3);
+ Tmp__=Mixop(1,MS__);
+ FdL__=Fullformfunc(Tmp__);
+ Mdv__=50;
+ Ndv__=50;
+ if Nargs__>=2
+ Tmp__=Mixop(2,MS__);
+ if Mixtype(Tmp__)~=1 Tmp__=Mixop(1,Tmp__); end;
+ if length(Tmp__)>1
+ Mdv__=Tmp__(1,1);
+ Ndv__=Tmp__(1,2);
+ else
+ Mdv__=Tmp__
+ if Nargs__==2
+ Ndv__=Mdv__
+ else
+ Tmp__1=Mixop(3,MS__);
+ if type(Tmp__1)==1 & length(Tmp__1)==1
+ Ndv__=Tmp__1;
+ else
+ Ndv__=Mdv__;
+ end
+ end
+ end
+ end;
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ U1__=Urange__(1); U2__=Urange__(2);
+ V1__=Vrange__(1); V2__=Vrange__(2);
+ Du__=(U2__-U1__)/(Mdv__-1);
+ Dv__=(V2__-V1__)/(Ndv__-1);
+ Xyzstr__=[Mixop(2,FdL__),Mixop(3,FdL__),Mixop(4,FdL__)];
+ I__=1;
+ Zval__=[];
+ for v__=V1__:Dv__:V2__
+ v__1=v__-Eps__/2; v__2=v__+Eps__/2;
+ ZuL__=[];
+ for u__=U1__:Du__:U2__;
+ u__1=u__-Eps__/2; u__2=u__+Eps__/2;
+ Tmp__v=strsubst(Xyzstr__,Vname__,'v__');
+ Tmp__=strsubst(Tmp__v,Uname__,'u__1');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmp__v,Uname__,'u__2');
+ P2__=evstr(Tmp__);
+ Tmp__1=Perspt(P1__);
+ Tmp__2=Perspt(P2__);
+ Dxu__=(Tmp__2(1)-Tmp__1(1))/Eps__;
+ Dyu__=(Tmp__2(2)-Tmp__1(2))/Eps__;
+ u__1=u__-Eps__/2; u__2=u__+Eps__/2;
+ Tmp__u=strsubst(Xyzstr__,Uname__,'u__');
+ Tmp__=strsubst(Tmp__u,Vname__,'v__1');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmp__u,Vname__,'v__2');
+ P2__=evstr(Tmp__);
+ Tmp__1=Perspt(P1__);
+ Tmp__2=Perspt(P2__);
+ Dxv__=(Tmp__2(1)-Tmp__1(1))/Eps__;
+ Dyv__=(Tmp__2(2)-Tmp__1(2))/Eps__;
+ Tmp__=Dxu__*Dyv__-Dxv__*Dyu__;
+ ZuL__=[ZuL__,Tmp__];
+ end;
+ Zval__=[Zval__;ZuL__];
+ end;
+ Yval__=V1__:Dv__:V2__;
+ Xval__=U1__:Du__:U2__;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.bin
new file mode 100644
index 00000000..44e39527
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.sci
new file mode 100755
index 00000000..2a4d1491
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Execmd.sci
@@ -0,0 +1,8 @@
+// 10.01.16
+// 10.02.24
+
+function Execmd(StrL)
+ for I=1:length(StrL)
+ execstr(Op(I,StrL))
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.bin
new file mode 100644
index 00000000..b58e53fd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.sci
new file mode 100755
index 00000000..5b9df24b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Expr.sci
@@ -0,0 +1,100 @@
+//
+// 09.12.25
+
+function Expr(varargin)
+ global Wfile FID MEMORI;
+ Nargs=length(varargin);
+ for I=1:3:Nargs
+ Tmp=varargin(I);
+ P=Doscaling(Tmp);
+ X=P(1);
+ Y=P(2);
+ Houkou=varargin(I+1);
+ Mojiretu='$'+varargin(I+2)+'$';
+ Hset=Houkou;
+ Vhoko='c';
+ if mtlb_findstr(Hset,'n')~=[]
+ Vhoko='n'; Y=Y+MEMORI;
+ end
+ if mtlb_findstr(Hset,'s')~=[]
+ Vhoko='s'; Y=Y-MEMORI;
+ end
+ Hhoko='c';
+ if mtlb_findstr(Hset,'e')~=[]
+ Hhoko='e'; X=X+MEMORI;
+ end
+ if mtlb_findstr(Hset,'w')~=[]
+ Hhoko='w'; X=X-MEMORI;
+ end
+ Hoko=Vhoko+Hhoko;
+ Suu='+-.0123456789';
+ SuuL=Suu;
+ Hcode=ascii(Houkou);
+ J=1; Dstr='';
+ while J<=length(Houkou)
+ Tmp=char(Hcode(J));
+ if mtlb_findstr(SuuL,Tmp)~=[]
+ if Dstr==''
+ Hk=char(Hcode(J-1));
+ end
+ Dstr=Dstr+Tmp;
+ else
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ Dstr='';
+ end
+ end
+ J=J+1;
+ end
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ end
+ CalcWidth(Hoko,Mojiretu);
+ CalcHeight(Hoko,Mojiretu);
+ Tmp='){\hspace*{\Width}';
+ Str=Tmp+'\raisebox{\Height}{'+Mojiretu+'}}';
+ if Wfile=='default'
+ mprintf('%s','\put(');
+ mprintf('%6.4f%s%6.4f',X,',',Y);
+ mprintf('%s%s\n',Str,'%');
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s','\put(');
+ mfprintf(FID,'%6.4f%s%6.4f',X,',',Y);
+ mfprintf(FID,'%s%s\n',Str,'%');
+ mfprintf(FID,'%s\n','%');
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.bin
new file mode 100644
index 00000000..17904d7a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.sci
new file mode 100755
index 00000000..d51dfa91
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Exprrot.sci
@@ -0,0 +1,36 @@
+// 08.05.31
+// 08.08.24
+// 09.12.25
+
+function Exprrot(varargin)
+ global MEMORI;
+ P=varargin(1);
+ V=varargin(2); N=3;
+ P=Doscaling(P);
+ V=Doscaling(V);
+ Tmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1
+ Tmov=Tmp; N=N+1;
+ end
+ Nmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1 then
+ Nmov=Tmp; N=N+1;
+ end
+ Mojiretu='$'+varargin(N)+'$';
+ Tv=1/norm(V)*V;
+ Nv=[-Tv(2),Tv(1)];
+ P=P+MEMORI*Tmov*Tv+MEMORI*Nmov*Nv;
+ Tmp=acos(V(1)/norm(V));
+ Theta=round(Tmp*180/%pi);
+ if V(2)>=0
+ Units='';
+ else
+ Units='units=-360,';
+ end
+ Tmp='\rotatebox['+Units+'origin=c]{'+string(Theta);
+ Tmp=Tmp+'}{'+Mojiretu+'}';
+ Letter(P,"c",Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.bin
new file mode 100644
index 00000000..5095cc06
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.sci
new file mode 100755
index 00000000..ae0bea54
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata.sci
@@ -0,0 +1,78 @@
+// 09.10.29
+// 10.02.07 debugged
+
+function NohiddenL=Faceremovaldata(FL,CLadd,PT)
+ global PHHIDDENDATA VELNO VELHI;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CLadd)//
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ VELNO=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ Ntmp=length(VELNO); //
+ VELNO(Ntmp+1)=list(Edge,0,Ntmp+1); //
+ end;
+ end;
+ VELHI=list();
+ Out=MakeveLfaceL(FL);
+ FaceL=Out(2);
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi2(Face,Nf,Ptype);
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ for I=1:length(VELHI)
+ Edge=Op(1,VELHI(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ PHHIDDENDATA=HiddenL;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.bin
new file mode 100644
index 00000000..ea9738c8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.sci
new file mode 100755
index 00000000..7dc8bef1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Faceremovaldata0.sci
@@ -0,0 +1,81 @@
+// NEW
+// Faceremovaldata
+// 09.10.24
+// 09.10.26
+// 09.10.27
+
+function NohiddenL=Faceremovaldata(FL,CLadd,PT)
+ global PHHIDDENDATA VELNO VELHI;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CL)
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ VELNO=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ VELNO($+1)=list(Edge,0);
+ end;
+ end;
+ VELHI=list();
+ Out=MakeveLfaceL(FL);
+ FaceL=Out(2);
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi(Face,Nf,Ptype);
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ for I=1:length(VELHI)
+ Edge=Op(1,VELHI(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ PHHIDDENDATA=HiddenL;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.bin
new file mode 100644
index 00000000..84ab9833
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.sci
new file mode 100755
index 00000000..0ed2f249
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata.sci
@@ -0,0 +1,154 @@
+/////////
+// 09.10.29
+// 11.01.13 (HiddenL) remodified 110122
+// 13.03.30 (HiddenL) debugged 140330
+
+function NohiddenL=Facesdata(varargin)
+ global PHHIDDENDATA VELNO VELHI;
+ Nargs=length(varargin);
+ FL=varargin(1);
+ PT=varargin($);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if Nargs==2
+ CLadd=list();
+ else
+ CLadd=varargin(2);
+ end;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CL)
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ Out=MakeveLfaceL(FL);
+ VELNO=Out(1);
+ VELHI=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ Ntmp=length(VELNO); //
+ VELNO(Ntmp+1)=list(Edge,0,Ntmp+1); //
+ end;
+ end;
+ FaceL=Out(2);
+ if mtlb_findstr(PT,'raw')==[]
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi2(Face,Nf,Ptype);
+ end;
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ EdgeL=list(); // from 13.03.30
+ for K=1:length(VELHI)
+ Edge=Op(1,VELHI(K));
+ P=Edge(1); Q=Edge(2);
+ if norm(P-Q)>Eps then
+ EdgeL($+1)=Edge;
+ end
+ end
+ for K=1:length(EdgeL)
+ Edge=EdgeL(K); //
+ P=Edge(1); Q=Edge(2);
+ Cflg=0;
+ for J=K+1:length(EdgeL)
+ Ej=EdgeL(J); //
+ Pj=Ej(1); Qj=Ej(2);
+ if norm(Crossprod(Q-P,Qj-Pj))>Eps then
+ continue
+ end
+ if norm(Q-Pj)<Eps then
+ EdgeL(J)=list(P,Qj);
+ Cflg=1;
+ break;
+ end
+ if norm(P-Qj)<Eps then
+ EdgeL(J)=list(Q,Pj)
+ Cflg=1;
+ break;
+ end;
+ end
+ if Cflg==0 then
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end; // upto 14.03.30
+
+// L=1:length(VELHI); // from 11.01.13
+// while length(L)>0
+// Lr=[];
+// Edge=Op(1,VELHI(L(1))); //
+// P=Edge(1);
+// Q=Edge(2);
+//
+// disp([293,P,Q])
+//
+// if norm(P-Q)>Eps
+// for J=2:length(L)
+// Rflg=0;
+// Ej=Op(1,VELHI(L(J))); //
+// Pj=Ej(1);
+// Qj=Ej(2);
+// if norm(Crossprod(Q-P,Qj-Pj))>Eps
+// Lr=[Lr,J];
+// continue;
+// end;
+// if norm(Q-Pj)<Eps
+// Edge(2)=Qj;
+// Rflg=1;
+// elseif norm(P-Qj)<Eps
+// Edge(1)=Pj;
+// Rflg=1;
+// end;
+// if Rflg==0
+// Lr=[Lr,J];
+// end;
+// end;
+// else
+// Lr=L(2:length(L));
+// end;
+// L=Lr; // upto 11.01.13
+// HiddenL($+1)=Spaceline(Edge);
+// end;
+ PHHIDDENDATA=HiddenL;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.bin
new file mode 100644
index 00000000..82821a8b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.sci
new file mode 100755
index 00000000..c300cf6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Facesdata0.sci
@@ -0,0 +1,88 @@
+// 09.10.27
+
+function NohiddenL=Facesdata(varargin)
+ global PHHIDDENDATA VELNO VELHI;
+ Nargs=length(varargin);
+ FL=varargin(1);
+ PT=varargin($);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if Nargs==2
+ CLadd=list();
+ else
+ CLadd=varargin(2);
+ end;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CL)
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ Out=MakeveLfaceL(FL);
+ VELNO=Out(1);
+ VELHI=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ VELNO($+1)=list(Edge,0);
+ end;
+ end;
+ FaceL=Out(2);
+ if mtlb_findstr(PT,'raw')==[]
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi(Face,Nf,Ptype);
+ end;
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ for I=1:length(VELHI)
+ Edge=Op(1,VELHI(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ PHHIDDENDATA=HiddenL;
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.bin
new file mode 100644
index 00000000..ade40fbf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.sci
new file mode 100755
index 00000000..062fcc5c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Findcell.sci
@@ -0,0 +1,127 @@
+// 09.11.26
+// 09.12.06
+// 09.12.14
+// 10.01.12
+// 10.01.13
+// 10.01.14
+
+function Out=Findcell(varargin)//TbL,Nrg,Mrg
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ Ag=varargin(2);
+ Alpha='-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ if type(Ag)==10
+ Clm=[];
+ Rstr='';
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp-1];
+ else
+ Rstr=Rstr+C;
+ end;
+ end;
+ Nrg=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg=Nrg+Tmp*26^Tmp1;
+ end;
+ Mrg=eval(Rstr);
+ if Nargs>=3
+ Ag=varargin(3);
+ Clm=[];
+ Rstr='';
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp];
+ else
+ Rstr=Rstr+C;
+ end;
+ end;
+ Nrg2=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg2=Nrg2+Tmp*26^Tmp1;
+ end;
+ Nrg=[Nrg,Nrg2];
+ Mrg=[Mrg,eval(Rstr)];
+ end;
+ else
+ Nrg=varargin(2);
+ Mrg=varargin(3);
+ end;
+ if length(Mrg)==1
+ m1=Mrg; m2=m1+1;
+ else
+ m1=Mrg(1); m2=Mrg(2);
+ end;
+ if length(Nrg)==1
+ n1=Nrg; n2=n1+1;
+ else
+ n1=Nrg(1); n2=Nrg(2);
+ end;
+ n1=n1+1; n2=n2+1;
+ m1=m1+1; m2=m2+1;
+ Hind=TbL(2);
+ Vind=TbL(3);
+ HL=Mixsub(TbL(2),TbL(1));
+ Tmp1=Op(1,TbL(4));
+ Tmp2=Op(2,TbL(4));
+ HL=Mixjoin(list(Tmp1),HL,list(Tmp2));
+ VL=Mixsub(TbL(3),TbL(1));
+ Tmp1=Op(1,TbL(5));
+ Tmp2=Op(2,TbL(5));
+ VL=Mixjoin(list(Tmp1),VL,list(Tmp2));
+ Tmp=TbL(6);
+ Tmp1=Listplot([Ptsw(Tmp),Ptnw(Tmp)]);
+ Tmp2=Listplot([Ptse(Tmp),Ptne(Tmp)]);
+ HL=Mixjoin(list(Tmp1),HL,list(Tmp2));
+ Tmp1=Listplot([Ptnw(Tmp),Ptne(Tmp)]);
+ Tmp2=Listplot([Ptsw(Tmp),Ptse(Tmp)]);
+ VL=Mixjoin(list(Tmp1),VL,list(Tmp2));
+ Tmp=HL(n1);
+ if type(Tmp)==1
+ H1=Tmp(1,1);
+ else
+ Tmp1=Tmp(1);
+ H1=Tmp1(1,1);
+ end;
+ Tmp=HL(n2);
+ if type(Tmp)==1
+ H2=Tmp(1,1);
+ else
+ Tmp1=Tmp(1);
+ H2=Tmp1(1,1);
+ end;
+ Tmp=VL(m1);
+ if type(Tmp)==1
+ V1=Tmp(1,2);
+ else
+ Tmp1=Tmp(1);
+ V1=Tmp1(1,2);
+ end;
+ Tmp=VL(m2);
+ if type(Tmp)==1
+ V2=Tmp(1,2);
+ else
+ Tmp1=Tmp(1);
+ V2=Tmp1(1,2);
+ end;
+ Pt=[(H1+H2)/2,(V1+V2)/2];
+ High=(V1-V2)/2;
+ Wide=(H2-H1)/2;
+ Out=list(Pt,Wide,High);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.bin
new file mode 100644
index 00000000..31e5d594
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.sci
new file mode 100755
index 00000000..903679ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Flattenlist.sci
@@ -0,0 +1,17 @@
+// 10.11.13
+
+function Out=Flattenlist(varargin)
+ Out=list();
+ for N=1:length(varargin)
+ D=varargin(N);
+ if type(D)~=15
+ Out($+1)=D;
+ else
+ for I=1:length(D)
+ Ds=D(I);
+ Tmp=Flattenlist(Ds);
+ Out=lstcat(Out,Tmp);
+ end;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.bin
new file mode 100644
index 00000000..10387e38
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.sci
new file mode 100755
index 00000000..218b599f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fontsize.sci
@@ -0,0 +1,54 @@
+function Fontsize(Ookisa)
+ global Wfile FID;
+ Str='%';
+ Ucode=ascii(Ookisa);
+ S=char(Ucode(1));
+ if S=='n'
+ Str='\normalsize%';
+ end
+ if S=='s'
+ if length(Ucode)==1
+ Tmp='';
+ else
+ Tmp=char(Ucode(2));
+ end
+ if Tmp=='s'
+ Str='\scriptsize%';
+ else
+ Str='\small%';
+ end
+ end
+ if S=='f'
+ Str='\footnotesize%';
+ end
+ if S=='t'
+ Str='\tiny%';
+ end
+ if S=='l'
+ Str='\large%';
+ end
+ if S=='L'
+ if length(Ucode)==1
+ Tmp='a';
+ else
+ Tmp=char(Ucode(2));
+ end
+ if Tmp=='a'
+ Str='\Large%';
+ else
+ Str='\LARGE%';
+ end
+ end
+ if S=='h'
+ Str='\huge%';
+ end
+ if S=='H'
+ Str='\Huge%';
+ end
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.bin
new file mode 100644
index 00000000..e718a4ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.sci
new file mode 100755
index 00000000..af259244
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriercoeff.sci
@@ -0,0 +1,21 @@
+// 09.03.13
+
+function Out=Fouriercoeff(Fn,T,Ch,K)
+ Eps=10^(-5);
+ L=T/2;
+ Tmp1='Out=FUNC(x)';
+ if Ch=='c'
+ Tmp2='Out=Fn(10*L*x)*cos('+string(K)+'*%pi*x*10)';
+ else
+ Tmp2='Out=Fn(10*L*x)*sin('+string(K)+'*%pi*x*10)';
+ end;
+ deff(Tmp1,Tmp2);
+ Out=10*intg(-0.1,0.1,FUNC);
+ if K==0
+ Out=Out/2;
+ end;
+ if abs(Out)<Eps
+ Out=0;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.bin
new file mode 100644
index 00000000..59f91f6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.sci
new file mode 100755
index 00000000..2d0d840b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/FouriercoeffL.sci
@@ -0,0 +1,18 @@
+// 09.03.12
+
+function Out=FouriercoeffL(Fn,T,Upto)
+ Out=Mix(Fouriercoeff(Fn,T,'c',0));
+ CL=[];
+ for K=1:Upto
+ Tmp=Fouriercoeff(Fn,T,'c',K);
+ CL=[CL,Tmp];
+ end;
+ Out=Mixadd(Out,CL);
+ CL=[];
+ for K=1:Upto
+ Tmp=Fouriercoeff(Fn,T,'s',K);
+ CL=[CL,Tmp];
+ end;
+ Out=Mixadd(Out,CL);
+ Out=Mixadd(Out,T);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.bin
new file mode 100644
index 00000000..bf840511
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.sci
new file mode 100755
index 00000000..6182f4a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fouriersum.sci
@@ -0,0 +1,15 @@
+// 09.03.12
+
+function Out=Fouriersum(COEFF,x)
+ C=Mixop(1,COEFF);
+ A=Mixop(2,COEFF);
+ B=Mixop(3,COEFF);
+ T=Mixop(4,COEFF);
+ Upto=size(A,2);
+ L=T/2;
+ K=1:Upto;
+ Tmp1=sum(A(K).*cos(K*%pi*x/L));
+ Tmp2=sum(B(K).*sin(K*%pi*x/L));
+ Out=C+Tmp1+Tmp2;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.bin
new file mode 100644
index 00000000..478d4e52
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.sci
new file mode 100755
index 00000000..437ff122
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fracform.sci
@@ -0,0 +1,18 @@
+// 09.08.23
+
+function Out=Fracform(X)
+ [N,D]=rat(X);
+ Out=[];
+ for I=1:size(X,1)
+ for J=1:size(X,2)
+ Tmp1=N(I,J);
+ Tmp2=D(I,J);
+ if Tmp2==1
+ Out(I,J)=string(Tmp1);
+ else
+ Out(I,J)=string(Tmp1)+'/'+string(Tmp2);
+ end;
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.bin
new file mode 100644
index 00000000..442df592
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.sci
new file mode 100755
index 00000000..071f7381
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Framedata.sci
@@ -0,0 +1,36 @@
+// 2011.12.18 ( available for list )
+
+function P=Framedata(varargin)
+ global XMIN XMAX YMIN YMAX
+ VaL=Flattenlist(varargin);
+ N=length(VaL);
+ if N<=1
+ H=1.0*10^(-4);
+ PA=[XMIN+H,YMIN+H];
+ PB=[XMAX-H,YMIN+H];
+ PC=[XMAX-H,YMAX-H];
+ PD=[XMIN+H,YMAX-H];
+ else
+ Tmp=VaL(N);
+ if type(Tmp)==1 & length(Tmp)==1
+ Dy=Tmp;
+ Dx=Dy;
+ Tmp=VaL(N-1);
+ if type(Tmp)==1 & length(Tmp)==1
+ Dx=Tmp;
+ end;
+ Tmp=VaL(1);
+ X=Tmp(1); Y=Tmp(2);
+ X1=X-Dx; X2=X+Dx;
+ Y1=Y-Dy; Y2=Y+Dy;
+ else
+ Tmp=VaL(1);
+ X1=Tmp(1); X2=Tmp(2);
+ Tmp=VaL(2);
+ Y1=Tmp(1); Y2=Tmp(2);
+ end;
+ PA=[X1,Y1]; PB=[X2,Y1];
+ PC=[X2,Y2]; PD=[X1,Y2];
+ end;
+ P=Listplot(PA,PB,PC,PD,PA)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.bin
new file mode 100644
index 00000000..b86c79cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.sci
new file mode 100755
index 00000000..97ddae5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Fullformfunc.sci
@@ -0,0 +1,79 @@
+// 08.08.16
+// 08.09.16
+// 09.11.14
+// 10.08.19
+// 13.10.22 ( __ added to varibles )
+
+function Out__=Fullformfunc(FdL__)
+ Out__=MixS(Mixop(1,FdL__));
+ N__=Mixlength(FdL__);
+ for Jrg__=1:N__
+ Tmp__=Mixop(Jrg__,FdL__);
+ if part(Tmp__,length(Tmp__))==']'
+ break
+ end;
+ end;
+ Urg__=Mixop(Jrg__,FdL__);
+ K__=mtlb_findstr(Urg__,'=');
+ Uname__=stripblanks(part(Urg__,1:K__-1));
+ Tmp__=part(Urg__,K__+1:length(Urg__)); // 2013.10.22
+ Tmp1__=evstr(Tmp__);
+ Urg__=Uname__+"=["+string(Tmp1__(1))+","+string(Tmp1__(2))+"]";
+ Vrg__=Mixop(Jrg__+1,FdL__);
+ K__=mtlb_findstr(Vrg__,'=');
+ Vname__=stripblanks(part(Vrg__,1:K__-1));
+ Tmp__=part(Vrg__,K__+1:length(Vrg__));
+ Tmp1__=evstr(Tmp__);
+ Vrg__=Vname__+"=["+string(Tmp1__(1))+","+string(Tmp1__(2))+"]"; //
+ if Jrg__==2
+ Tmp__=Mixop(1,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=MixS(Uname__,Vname__,Zf__,Urg__,Vrg__);
+ Out__=Mixjoin(Out__,Tmp__);
+ elseif Jrg__==4
+ Tmp__=Mixop(1,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(2,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=stripblanks(part(Tmp__,1:K__-1));
+ Xf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(3,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=stripblanks(part(Tmp__,1:K__-1));
+ Yf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=strsubst(Zf__,Xname__,'('+Xf__+')');
+ Zf__=strsubst(Tmp__,Yname__,'('+Yf__+')');
+ Tmp__=MixS(Xf__,Yf__,Zf__,Urg__,Vrg__);
+ Out__=Mixjoin(Out__,Tmp__);
+ else
+ Tmp__=Mixop(2,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(3,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(4,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=MixS(Xf__,Yf__,Zf__,Urg__,Vrg__);
+ Out__=Mixjoin(Out__,Tmp__);
+ end;
+ DrwS__='enws';
+ BdyL__=[];
+ for I__=Jrg__+2:Mixlength(FdL__)
+ Tmp__=Mixop(I__,FdL__);
+ if type(Tmp__)==10
+ if length(Tmp__)==0 //
+ Tmp__=' ';
+ end;
+ DrwS__=Tmp__;
+ end;
+ if type(Tmp__)==1 & size(Tmp__,2)>1
+ BdyL__=Tmp__;
+ end;
+ end;
+ Tmp__=MixS(DrwS__,BdyL__);
+ Out__=Mixjoin(Out__,Tmp__);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.bin
new file mode 100644
index 00000000..5ada2529
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.sci
new file mode 100755
index 00000000..3d17995e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gaiseki.sci
@@ -0,0 +1,11 @@
+function G=Gaiseki(a,b)
+ if length(a)==3
+ Tmp=[a(2)*b(3)-a(3)*b(2),...
+ a(3)*b(1)-a(1)*b(3),...
+ a(1)*b(2)-a(2)*b(1)];
+ else
+ Tmp=a(1)*b(2)-a(2)*b(1);
+ end;
+ G=Tmp;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.bin
new file mode 100644
index 00000000..9dbd0923
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.sci
new file mode 100755
index 00000000..ca4e0d2a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Getcounter.sci
@@ -0,0 +1,7 @@
+// 09.09.10
+
+function Out=Getcounter()
+ global GCOUNTER;
+ Out=GCOUNTER;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.bin
new file mode 100644
index 00000000..b99800fe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.sci
new file mode 100755
index 00000000..5395d885
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Gettrace.sci
@@ -0,0 +1,7 @@
+// 09.09.10
+
+function Out=Gettrace();
+ global TRACEDATA;
+ Out=TRACEDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.bin
new file mode 100644
index 00000000..d688039f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.sci
new file mode 100755
index 00000000..236287ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hatchdata.sci
@@ -0,0 +1,141 @@
+// 08.05.21
+// 09.10.05
+// 09.12.25
+// 10.01.20
+// 10.02.01
+// 10.11.04 ( debugged 83 )
+
+function ShaLs=Hatchdata(varargin)
+ global XMIN XMAX YMIN YMAX MilliIn;
+ ShaL=[];
+ Nargs=length(varargin);
+ Kakudo=45;
+ Kankaku=0.125*1000/2.54/MilliIn;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xmn=Tmp(1); Ymn=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ Xmx=Tmp(1); Ymx=Tmp(2);
+ for N=Nargs:-1:1
+ Tmp=varargin(N);
+ if Mixtype(Tmp)~=1
+ break
+ end
+ end
+ if N<Nargs
+ Kakudo=varargin(N+1);
+ if N==Nargs-2
+ Kankaku=0.125*varargin(Nargs);
+ end
+ end
+ NaitenL=varargin(1);
+ if Mixtype(NaitenL)==1
+ NaitenL=list(NaitenL);
+ end
+ Ns=2;
+ StartP=Op(1,NaitenL);
+ if type(StartP)==10
+ StartP=[(Xmn+Xmx)/2,(Ymn+Ymx)/2];
+ end
+ if Mixtype(varargin(2))==1
+ StartP=varargin(2);
+ StartP=Doscaling(StartP);
+ Ns=3;
+ end
+ Tmp=list();
+ for I=Ns:N
+ Tmp1=list(varargin(I));
+ Tmp=Mixjoin(Tmp,Tmp1);
+ end
+ Bdy=Kyoukai(Tmp);
+ Bdys=list();
+ for I=1:length(Bdy)
+ Tmp1=Bdy(I);
+ Tmp2=Doscaling(Tmp1);
+ Bdys=Mixjoin(Bdys,list(Tmp2));
+ end;
+ Bdy=Bdys;
+ PtnL=list();
+ for I=1:length(NaitenL)
+ Tmp=Op(I,NaitenL);
+ if type(Tmp)==1
+ Tmp1=Naigai(Tmp,Bdy);
+ PtnL=Mixjoin(PtnL,list(Tmp1));
+ else
+ if type(Tmp)~=10
+ disp('Type Error');
+ return
+ end
+ Ptn=[];
+ for J=1:length(Tmp)
+ if Op(J,Tmp)=='i'
+ Ptn=[Ptn,1];
+ else
+ Ptn=[Ptn,0];
+ end
+ end
+ PtnL=Mixjoin(PtnL,list(Ptn));
+ end
+ end
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ if Member(Ptn,PtnL)
+ Wn=Doscaling(Framedata());
+ Bdy=Mixjoin(Bdy,list(Wn));
+ Tmp=list();
+ for I=1:length(PtnL)
+ Tmp1=[Op(I,PtnL),1];
+ Tmp=Mixjoin(Tmp,Tmp1); // 10.11.04
+ end
+ PtnL=Tmp;
+ end
+ V=[cos(Kakudo*%pi/180),sin(Kakudo*%pi/180)];
+ Vm=[-sin(Kakudo*%pi/180),cos(Kakudo*%pi/180)];
+ Tmp=Op(1,NaitenL);
+ if type(Tmp)==1 & size(Tmp,2)==2
+ Tmp=Doscaling(Tmp);
+ Delta=Tmp-StartP;
+ K=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ PA=StartP+K*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,PA,V,Bdy);
+ I=1;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ ShaL=Mixadd(ShaL,Sha(J));
+ end;
+ Sha=Makeshasen(PtnL,PA+I*Kankaku*Vm,V,Bdy);
+ I=I+1;
+ end
+ Sha=Makeshasen(PtnL,PA-Kankaku*Vm,V,Bdy);
+ I=2;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ ShaL=Mixjoin(ShaL,list(Sha(J)));
+ end;
+ Sha=Makeshasen(PtnL,PA-I*Kankaku*Vm,V,Bdy);
+ I=I+1;
+ end
+ else
+ Delta=[Xmn,Ymn]-StartP;
+ K1=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmx,Ymn]-StartP;
+ K2=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmx,Ymx]-StartP;
+ K3=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmn,Ymx]-StartP;
+ K4=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ IM=max(K1,K2,K3,K4);
+ Im=min(K1,K2,K3,K4);
+ for I=Im:IM
+ Sha=Makeshasen(PtnL,StartP+I*Kankaku*Vm,V,Bdy);
+ for J=1:length(Sha)
+ ShaL=Mixjoin(ShaL,list(Sha(J)));
+ end
+ end
+ end
+ ShaLs=list();
+ for I=1:length(ShaL)
+ Tmp=ShaL(I);
+ Tmp1=Unscaling(Tmp);
+ ShaLs=Mixjoin(ShaLs,list(Tmp1));
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.bin
new file mode 100644
index 00000000..fed0c2c1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.sci
new file mode 100644
index 00000000..7bc05ed9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Hexahedrondata.sci
@@ -0,0 +1,15 @@
+// s : 2014.06.22
+
+function Out=Hexahedrondata(A,V1,V2,V3)
+ Tmp=det([V1;V2;V3]);
+ if Tmp<0 then
+ Tmp1=V1;
+ V1=V2;
+ V2=Tmp1
+ end
+ B=A+V1; C=A+V1+V2; D=A+V2;
+ E=A+V3; F=B+V3; G=C+V3; H=D+V3;
+ VL=list(A,B,C,D,E,F,G,H);
+ FL=list([1,4,3,2],[5,6,7,8],[1,2,6,5],[2,3,7,6],[3,4,8,7],[1,5,8,4]);
+ Out=list(VL,FL)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.bin
new file mode 100644
index 00000000..09289136
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.sci
new file mode 100755
index 00000000..2ead122d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/HiddenWireData.sci
@@ -0,0 +1,7 @@
+// 08.09.15
+
+function Out=HiddenWireData()
+ global HIDDENWIREDATA
+ Out=HIDDENWIREDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.bin
new file mode 100644
index 00000000..86cae9a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.sci
new file mode 100644
index 00000000..ab8a54b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Htickmark.sci
@@ -0,0 +1,144 @@
+// 08.05.17 Debugged
+// 09.12.25
+// 11.04.13 debugged ( [a,b] )
+// 14.03.05 MARKLEN
+
+function Htickmark(varargin)
+ global Wfile FID MARKLEN GENTEN XMIN XMAX;
+ Nargs=length(varargin);
+ ArgsL=list(varargin(1:Nargs));
+ if type(Op(1,ArgsL))==10
+ Str=Op(1,ArgsL);
+ Tmp=mtlb_findstr(Str,'m');
+ if Tmp~=[]
+ I=Tmp(1);
+ else
+ I=0;
+ end
+ Tmp=mtlb_findstr(Str,'n');
+ if Tmp~=[]
+ J=Tmp(1);
+ else
+ J=0;
+ end
+ Tmp=mtlb_findstr(Str,'r');
+ if Tmp~=[]
+ K=Tmp(1);
+ else
+ K=0;
+ end;
+ if K>0
+ Tmp=ascii(Str);
+ S=char(Tmp(K+1:length(Tmp)));
+ R=msscanf(S,'%f');
+ if length(R)==0
+ R=1;
+ end
+ else
+ R=1;
+ K=length(Str)+1;
+ end
+ if J>0 then
+ Tmp=ascii(Str);
+ S=char(Tmp(J+1:K-1));
+ if S==[]
+ S='';
+ end;
+ Dn=msscanf(S,'%d');
+ if length(Dn)==0
+ Dn=1;
+ end
+ else
+ Dn=1000;
+ J=length(Str)+1;
+ end
+ Tmp=ascii(Str);
+ S=char(Tmp(I+1:J-1));
+ if S==[]
+ S='';
+ end
+ Dm=msscanf(S,'%f');
+ if length(Dm)==0
+ Dm=1;
+ end
+ ArgsL=list();
+ for I=1:floor((XMAX-GENTEN(1))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(Tmp(1:k-1));
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ for I=-1:-1:ceil((XMIN-GENTEN(1))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(1:K-1);
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ end
+ MemoriList=list();
+ Memori=list();
+ for N=1:length(ArgsL)
+ Dt=ArgsL(N);
+ if type(Dt)==1 & length(Dt)>1
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(Dt(1),Dt(2));
+ continue
+ end
+ if type(Dt)==10
+ Memori($+1)=Dt;
+ else
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(Dt,GENTEN(2));
+ end
+ end
+ MemoriList($+1)=Memori;
+ for N=1:length(MemoriList)
+ Dt=MemoriList(N);
+ Ndt=length(Dt);
+ X=Op(1,Dt);
+ Y=Op(2,Dt);
+ Tmp=Doscaling([X,Y]);
+ X=Tmp(1);
+ Y=Tmp(2);
+ Moji=Op(Ndt,Dt);
+ Tmp1=Unscaling([X,Y+MARKLEN]);
+ Tmp2=Unscaling([X,Y-MARKLEN]);
+ Fd=Listplot([Tmp1,Tmp2]);
+ Drwline(Fd);
+ if Ndt==3
+ Tmp=Unscaling([X,Y-MARKLEN]);
+ Expr(Tmp,'s',Moji);
+ end
+ if Ndt==4
+ Houkou=Op(3,Dt);
+ if mtlb_findstr(Houkou,'s')~=[]
+ Tmp=Unscaling([X,Y-MARKLEN]);
+ Expr(Tmp,Houkou,Moji);
+ else
+ Tmp=Unscaling([X,Y+MARKLEN]);
+ Expr(Tmp,Houkou,Moji);
+ end
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.bin
new file mode 100644
index 00000000..6334287e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.sci
new file mode 100755
index 00000000..ae02fee1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ImplicitData.sci
@@ -0,0 +1,9 @@
+// 08.09.10
+// 08.09.16
+// 08.10.10 (Name)
+
+function Out=ImplicitData()
+ global IMPLICITDATA
+ Out=IMPLICITDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.bin
new file mode 100644
index 00000000..6336bf4c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.sci
new file mode 100755
index 00000000..b0715484
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Implicitplot.sci
@@ -0,0 +1,61 @@
+// 08.09.09
+// 08.09.20
+// 13.10.19 ( __ added to variables )
+
+function Out__=Implicitplot(varargin)
+ Eps__=10^(-4);
+ Nargs__=length(varargin);
+ Fstr__=varargin(1);
+ if Mixtype(Fstr__)~=1
+ MS__=Fstr__;
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ elseif type(Fstr__)==10
+ MS__=[];
+ for I__=1:Nargs__
+ MS__=Mixadd(MS__,varargin(I__));
+ end;
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ else
+ Zval__=varargin(1);
+ Xval__=varargin(2);
+ Yval__=varargin(3);
+ end;
+ Out__=[];
+ for J__=1:length(Yval__)-1
+ for I__=1:length(Xval__)-1
+ a1__=Xval__(I__);b1__=Yval__(J__);c1__=Zval__(J__,I__);
+ a2__=Xval__(I__+1);b2__=Yval__(J__);c2__=Zval__(J__,I__+1);
+ a3__=Xval__(I__+1);b3__=Yval__(J__+1);c3__=Zval__(J__+1,I__+1);
+ a4__=Xval__(I__);b4__=Yval__(J__+1);c4__=Zval__(J__+1,I__);
+ PL__=[a1__,b1__;a2__,b2__;a3__,b3__;a4__,b4__;a1__,b1__];
+ VL__=[c1__,c2__,c3__,c4__,c1__];
+ QL__=[];
+ for K__=1:4
+ if abs(VL__(K__))<=Eps__
+ QL__=[QL__;PL__(K__,:)];
+ elseif VL__(K__)>Eps__
+ if VL__(K__+1)<-Eps__
+ Tmp__=1/(VL__(K__)-VL__(K__+1))*(-VL__(K__+1)*PL__(K__,:)...
+ + VL__(K__)*PL__(K__+1,:));
+ QL__=[QL__;Tmp__];
+ end
+ else
+ if VL__(K__+1)>Eps__
+ Tmp__=1/(-VL__(K__)+VL__(K__+1))*(VL__(K__+1)*PL__(K__,:)...
+ - VL__(K__)*PL__(K__+1,:));
+ QL__=[QL__;Tmp__];
+ end;
+ end;
+ end;
+ if size(QL__,1)==2
+ Out__=[Out__;%inf,%inf;QL__(1,:);QL__(2,:)];
+ end;
+ end;
+ end;
+ Out__=Out__(2:size(Out__,1),:);
+ if size(Out__,1)>0
+ Out__=Connectseg(Out__);
+ else
+ Out__=[];
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.bin
new file mode 100644
index 00000000..da2db1f4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.sci
new file mode 100755
index 00000000..9dacd30c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/InWindow.sci
@@ -0,0 +1,11 @@
+function Rx=InWindow(PA)
+ global XMIN XMAX YMIN YMAX
+ Eps=10.0^(-6);
+ X=PA(1); Y=PA(2);
+ if X>XMIN-Eps & X<XMAX+Eps & Y>YMIN-Eps & Y<YMAX+Eps
+ Rx='i'
+ else
+ Rx='o'
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.bin
new file mode 100644
index 00000000..ac64c46b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.sci
new file mode 100755
index 00000000..d5e09ff4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Initangle.sci
@@ -0,0 +1,8 @@
+// 08.07.11
+
+function Initangle()
+ global PHI THETA;
+ PHI=30*%pi/180;
+ THETA=60*%pi/180;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.bin
new file mode 100644
index 00000000..b26672c0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.sci
new file mode 100755
index 00000000..abd3377f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Integrate.sci
@@ -0,0 +1,25 @@
+// 09.10.09
+// 09.10.21 Es, Er
+
+function Out=Integrate(varargin);
+ Nargs=length(varargin);
+ Fs=varargin(1);
+ Vs=varargin(2);
+ Itv=varargin(3);
+ Es=1d-10;
+ if Nargs>3
+ Es=varargin(4);
+ end;
+ Er=1d-8;
+ if Nargs>4
+ Er=varargin(5);
+ end;
+ Out=0;
+ Na=1;
+ while Na<length(Itv)
+ A=Itv(Na); B=Itv(Na+1);
+ Out=Out+integrate(Fs,Vs,A,B,Es,Er);
+ Na=Na+1;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.bin
new file mode 100644
index 00000000..3ff5a305
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.sci
new file mode 100755
index 00000000..59b4fdcc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvs.sci
@@ -0,0 +1,34 @@
+// 08.05.18 Koshikawa
+// 08.05.19 Changed
+// 08.06.03
+// 09.11.12
+// 09.11.14 debug
+
+function PL=Intersectcrvs(varargin)
+ Nargs=length(varargin);
+ Eps=10^(-4);
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & length(Tmp)==1
+ Eps=Tmp;
+ end
+ G1=varargin(1);
+ if Mixtype(G1)==1
+ G1=list(G1);
+ end;
+ G2=varargin(2);
+ if Mixtype(G2)==1
+ G2=list(G2); //
+ end;
+ PL=list();
+ for N=1:length(G1)
+ for M=1:length(G2)
+ KL=IntersectcrvsPp(G1(N),G2(M),Eps);
+ for I=1:length(KL)
+ Tmp=KL(I);;
+ P=Tmp(1);
+ PL($+1)=P;
+ end;
+ end;
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.bin
new file mode 100644
index 00000000..348451cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.sci
new file mode 100755
index 00000000..a1218d06
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectcrvsPp.sci
@@ -0,0 +1,101 @@
+// 08.05.18 Koshikawa
+// 08.05.19 Changed
+// 08.00.04
+// 09.11.07 for the same curve
+
+function KL=IntersectcrvsPp(varargin) // Modified
+ Nargs=length(varargin);
+ G1=varargin(1); G2=varargin(2);
+ Eps=10.0^(-4);
+ if Nargs>2
+ Eps=varargin(3)
+ end
+ SqEps=10.0^(-10);
+ Eps2=0.1;
+ if Nargs>3
+ Eps2=varargin(4)
+ end
+ Data1=G1;
+ Data2=G2;
+ if size(Data1,1)==size(Data2,1)
+ Tmp1=Data2(size(Data2,1):-1:1,:); // 09.11.07
+ Eps0=10^(-6);
+ Tmp2=norm(Data1-Data2);
+ Tmp3=norm(Data1-Tmp1);
+ if Tmp2<Eps0|Tmp3<Eps0
+ KL=list();
+ return;
+ end; //
+ end;
+ KL1=[];
+ KL2=[];
+ for I=1:size(Data1,1)-1
+ A=Data1(I,:);
+ B=Data1(I+1,:);
+ for J=1:size(Data2,1)-1
+ P=Data2(J,:); Q=Data2(J+1,:);
+ Tmp=Koutenseg(A,B,P,Q,Eps,Eps2);
+ if Tmp~=[%inf,-%inf]
+ if Op(3,Tmp)==0
+ Tmp1=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL1=Mixadd(KL1,Tmp1);
+ else
+ Tmp2=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL2=Mixadd(KL2,Tmp2);
+ end
+ end
+ end
+ end
+ KL=[];
+ if Mixlength(KL1)>0
+ Tmp=Op(1,KL1);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ Tmp=MixS(P,I+T,J);
+ KL=MixL(Tmp);
+ end
+ for N=2:Mixlength(KL1)
+ Tmp=Op(N,KL1);
+ P=Op(1,Tmp);
+ Flg=0;
+ for K=1:Mixlength(KL)
+ Tmp=Op(K,KL);
+ if Vecnagasa2(P-Op(1,Tmp))<SqEps
+ Flg=1;
+ break
+ end
+ end
+ if Flg==0
+ Tmp=Op(N,KL1);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ Tmp=MixS(P,I+T,J);
+ KL=Mixadd(KL,Tmp);
+ end
+ end
+ for N=1:Mixlength(KL2)
+ Tmp=Op(N,KL2);
+ P=Op(1,Tmp);
+ Flg=0;
+ for K=1:Mixlength(KL)
+ Tmp=Op(K,KL);
+ if Vecnagasa2(P-Op(1,Tmp))<SqEps
+ Flg=1;
+ break
+ end
+ end
+ if Flg==0
+ Tmp=Op(N,KL2);
+ T=Op(2,Tmp);
+ T=min(max(T,0),1);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ Tmp=MixS(P,I+T,J);
+ KL=Mixadd(KL,Tmp);
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.bin
new file mode 100644
index 00000000..3d7069f0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.sci
new file mode 100755
index 00000000..2a2e5b6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectcrvsf.sci
@@ -0,0 +1,47 @@
+// 08.10.26
+// 10.02.16
+
+function Out=Intersectcrvsf(varargin)
+ Nargs=length(varargin);
+ Eps0=10^(-4);
+ Crv=varargin(1);
+ Fd=varargin(2);
+ N=3;Uveq=1;
+ if Nargs>=3
+ Tmp=varargin(3);
+ if type(Tmp)==10
+ Uveq=Tmp;
+ N=4;
+ end;
+ end;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Out=[];
+ for I=1:Numptcrv(Crv)-1
+ PtA=Ptcrv(I,Crv);
+ PtB=Ptcrv(I+1,Crv);
+ if norm(PtB-PtA)<Eps0
+ continue;
+ end;
+ PL=Meetpoints(PtA,PtB,Fd,Uveq,Np,Eps(1));
+ for J=1:Mixlength(PL)
+ Pt=Mixop(J,PL);
+ Tmp=norm(Pt-PtA)/norm(PtB-PtA);
+ Tmp=min(max(Tmp,0),1);
+ Out=Mixadd(Out,[Pt,I+Tmp]);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.bin
new file mode 100644
index 00000000..bebf87c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.sci
new file mode 100755
index 00000000..ed92a5aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Intersectlines.sci
@@ -0,0 +1,22 @@
+// 09.10.11
+// 09.10.12
+
+function Out=Intersectlines(L1,L2)
+ Eps0=10^(-6);
+ P=Ptstart(L1);
+ a1=P(1); a2=P(2);
+ V=Ptend(L1)-P;
+ b1=V(1); b2=V(2);
+ P=Ptstart(L2);
+ c1=P(1); c2=P(2);
+ V=Ptend(L2)-P;
+ d1=V(1); d2=V(2);
+ Den=b1*d2-d1*b2;
+ if abs(Den)<Eps0
+ Out=[];
+ return;
+ end;
+ x=-(d1*b2*a1-c1*b1*d2-d1*a2*b1+d1*b1*c2)/Den;
+ y=-(-a2*b1*d2+b2*a1*d2-b2*c1*d2+c2*d1*b2)/Den;
+ Out=[x,y];
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.bin
new file mode 100644
index 00000000..5f0cad0f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.sci
new file mode 100755
index 00000000..4b246e95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/IntersectselfPp.sci
@@ -0,0 +1,95 @@
+// 09.05.27
+// 09.06.03
+// 09.06.05
+
+function KL=IntersectselfPp(varargin)
+ Nargs=length(varargin);
+ G1=varargin(1);
+ Eps=10.0^(-4);
+ if Nargs>1
+ Eps=varargin(2)
+ end
+ Eps0=10.0^(-5);
+ Eps2=0.01;
+// if Nargs>2
+// Eps2=varargin(3)
+// end;
+ Data1=G1;
+ KL1=[];
+ KL2=[];
+ for I=1:size(Data1,1)-2
+ A=Data1(I,:);
+ B=Data1(I+1,:);
+ Is=I+2;
+ Tmp=Data1(Is,:);
+ while norm(Tmp-B)<Eps & Is<size(Data1,1);
+ Is=Is+1;
+ Tmp=Data1(Is,:);
+ end;
+ for J=Is:size(Data1,1)-1
+ P=Data1(J,:); Q=Data1(J+1,:);
+ Tmp=Koutenseg(A,B,P,Q,Eps,Eps2);
+ if Tmp~=[%inf,-%inf]
+ if Op(3,Tmp)==0
+ Tmp1=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL1=Mixadd(KL1,Tmp1);
+ else
+ Tmp2=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL2=Mixadd(KL2,Tmp2);
+ end
+ end
+ end
+ end
+ KL=[];
+ if Mixlength(KL1)>0
+ Tmp=Op(1,KL1);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ S=ParamonCurve(P,J,Data1);
+ Tmp=MixS(P,I+T,J);
+ Tmp2=MixS(P,S,I);
+ KL=MixL(Tmp);
+ KL=Mixadd(KL,Tmp2);
+ end;
+ for N=2:Mixlength(KL1)
+ Tmp=Op(N,KL1);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ S=ParamonCurve(P,J,Data1);
+ Tmp=MixS(P,I+T,J);
+ Tmp1=MixS(P,S,I);
+ KL=Mixadd(KL,Tmp);
+ KL=Mixadd(KL,Tmp1);
+ end
+ for N=1:Mixlength(KL2)
+ Tmp=Op(N,KL2);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ T=min(max(T,0),1);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ S=ParamonCurve(P,J,Data1);
+ Flg=0;
+ for K=1:Mixlength(KL)
+ Tmp=Op(K,KL);
+ if norm(P-Op(1,Tmp))<Eps
+ Tmp1=Op(2,Tmp);
+ if abs(I+T-Tmp1)<Eps
+ Flg=1;
+ break;
+ end;
+ end;
+ end;
+ if Flg==0
+ Tmp=MixS(P,I+T,J);
+ Tmp1=MixS(P,S,I);
+ KL=Mixadd(KL,Tmp);
+ KL=Mixadd(KL,Tmp1);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.bin
new file mode 100644
index 00000000..e3bc6bf4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.sci
new file mode 100644
index 00000000..bf6f976f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invdashline.sci
@@ -0,0 +1,29 @@
+// 10.11.13 ( Flattenlist used
+// 13.10.19 debugged
+
+function Invdashline(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Nall=Nargs; Sen=1 ; Gap=1;
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1 & Tmp>0 // 2013.10.19
+ Tmp1=varargin(Nall-1);
+ if type(Tmp1)==1 & length(Tmp1)==1 & Tmp1>0 // 2013.10.19
+ Sen=Tmp1; Gap=Tmp;
+ Nall=Nall-2;
+ else
+ Sen=Tmp; Gap=Sen;
+ Nall=Nall-1;
+ end
+ end
+ Sen=1000/2.54/MilliIn*Sen;
+ Gap=1000/2.54/MilliIn*Gap;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Fdata=Flattenlist(Tmp);
+ for I=1:length(Fdata);
+ Figdata=Fdata(I);
+ Makehasen(Figdata,Sen,Gap,1);
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.bin
new file mode 100644
index 00000000..2e870385
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.sci
new file mode 100755
index 00000000..9f9f9d95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invert.sci
@@ -0,0 +1,6 @@
+// 08.05.31
+
+function OutL=Invert(Pd)
+ OutL=Pd(size(Pd,1):-1:1,:);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.bin
new file mode 100644
index 00000000..c92f5024
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci
new file mode 100755
index 00000000..4d7863b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invparapt.sci
@@ -0,0 +1,50 @@
+// 08.07.11
+// 08.08.17
+// 09.10.31
+// 09.11.12
+
+function Out=Invparapt(varargin)
+ Eps=10^(-4);
+ Fk=varargin($);
+ NFk=Numptcrv(Fk)
+ Tmp=varargin(1);
+ if type(Tmp)==1 & size(Tmp)==1
+ Ph=Tmp;
+ Fh=varargin(2);
+ else
+ Fh=Projpara(Fk);
+ if NFk>2
+ Tmp1=Nearestpt(Tmp,Fh);
+ Ph=Tmp1(2);
+ else
+ Ah=Ptcrv(1,Fh); Bh=Ptcrv(2,Fh);
+ V1=Tmp-Ah; V2=Bh-Ah;
+ Tmp1=Crossprod(V1,V2);
+ if abs(Tmp1)>Eps
+ disp('Not on the line');
+ Out=[];
+ return;
+ else
+ Ph=Dotprod(V1,V2)/norm(V2)^2+1; // 09.11.12
+ end;
+ end;
+ end;
+ if NFk>2
+ N=Trunc(Ph);
+ S0=Ph-N;
+ if Ph>Numptcrv(Fh)-Eps
+ Out=list(Ptend(Fk),Numptcrv(Fh));
+ return;
+ end;
+ else
+ N=1;
+ S0=Ph-1; // 09.11.12
+ end;
+ Ak=Ptcrv(N,Fk); Bk=Ptcrv(N+1,Fk);
+ Ah=Ptcrv(N,Fh); Bh=Ptcrv(N+1,Fh);
+ Ph=(1-S0)*Ah+S0*Bh;
+ T2=S0;
+ Pk=(1-T2)*Ak+T2*Bk;
+ Out=list(Pk,N+T2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.bin
new file mode 100644
index 00000000..073bbdca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.sci
new file mode 100755
index 00000000..c2c35355
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Invperspt.sci
@@ -0,0 +1,65 @@
+// 08.08.12
+// 09.10.31
+// 09.11.12
+
+function Out=Invperspt(varargin)
+ global FocusPoint EyePoint;
+ Eps=10^(-4);
+ Fk=varargin($);
+ NFk=Numptcrv(Fk)
+ Tmp=varargin(1);
+ if type(Tmp)==1 & length(Tmp)==1
+ Ph=varargin(1);
+ Fh=varargin(2);
+ else
+ Fh=Projpers(Fk);
+ if NFk>2
+ Tmp1=Nearestpt(Tmp,Fh);
+ Ph=Tmp1(2);
+ else
+ Ah=Ptcrv(1,Fh); Bh=Ptcrv(2,Fh);
+ V1=Tmp-Ah; V2=Bh-Ah;
+ Tmp1=Crossprod(V1,V2);
+ if abs(Tmp1)>Eps
+ disp('Not on the line');
+ Out=[];
+ return;
+ else
+ Ph=Dotprod(V1,V2)/norm(V2)^2+1; // 09.11.12
+ end;
+ end;
+ end;
+ if NFk>2
+ N=Trunc(Ph);
+ S0=Ph-N;
+ if Ph>Numptcrv(Fh)-Eps
+ Out=list(Ptend(Fk),Numptcrv(Fh));
+ return;
+ end;
+ else
+ N=1;
+ S0=Ph-1; // 09.11.12
+ end;
+ Ak=Ptcrv(N,Fk); Bk=Ptcrv(N+1,Fk);
+ Ah=Ptcrv(N,Fh); Bh=Ptcrv(N+1,Fh);
+ Ph=(1-S0)*Ah+S0*Bh;
+ Phc=Cancoordpers([Ph,0]);
+ Ahc=Cancoordpers([Ah,0]);
+ Bhc=Cancoordpers([Bh,0]);
+ Vp=Phc-EyePoint;
+ Va=Ak-EyePoint;
+ AB=Bk-Ak;
+ Cp=Crossprod(Vp,AB);
+ Nmr=Crossprod(Va,Vp);
+ Mx=max(abs(Cp));
+ if abs(Cp(1))==Mx
+ T2=Nmr(1)/Cp(1);
+ elseif abs(Cp(2))==Mx
+ T2=Nmr(2)/Cp(2);
+ else
+ T2=Nmr(3)/Cp(3);
+ end;
+ Pk=(1-T2)*Ak+T2*Bk;
+ Out=list(Pk,N+T2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.bin
new file mode 100644
index 00000000..b44d17eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.sci
new file mode 100755
index 00000000..04aaf4eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joincrvs.sci
@@ -0,0 +1,51 @@
+// 08.05.31
+// 08.08.22
+// 08.09.14
+// 08.09.20
+// 08.10.27
+// 11.06.25
+
+function PtL=Joincrvs(varargin)
+ Nall=length(varargin);
+ Eps=10^(-4);
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1
+ Eps=Tmp;
+ Nall=Nall-1;
+ end;
+ QdL=list();
+ for I=1:Nall
+ QdL($+1)=varargin(I); // 11.06.25
+ end;
+ QdL=Flattenlist(QdL); // 11.06.25
+ if length(QdL)==0
+ PtL=[];
+ return;
+ end;
+ PtL=[Mixop(1,QdL)];
+ for I=2:Mixlength(QdL)
+ Qd=QdL(I);
+ if Numptcrv(Qd)<=1 // 11.06.25
+ continue;
+ end;
+ P=Ptend(PtL)
+ S=Ptstart(PtL);
+ Q=Ptstart(Qd);
+ R=Ptend(Qd);
+ MN=min(norm(P-Q),norm(P-R),norm(S-Q),norm(S-R));
+ if MN==norm(P-R)
+ Qd=Invert(Qd);
+ elseif MN==norm(S-Q)
+ PtL=Invert(PtL);
+ elseif MN==norm(S-R);
+ PtL=Invert(PtL);
+ Qd=Invert(Qd);
+ end;
+ if MN>Eps
+ PtL=[PtL;Qd];
+ else
+ PtL=[PtL;Qd(2:size(Qd,1),:)];
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.bin
new file mode 100644
index 00000000..c7b88175
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.sci
new file mode 100755
index 00000000..78cd46e5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Joingraphics.sci
@@ -0,0 +1,26 @@
+// 11.11.02 (for list structure)
+
+function P=Joingraphics(varargin)
+ Ls=Flattenlist(varargin);
+ N=length(Ls);
+ Tp=Ls(N);
+ Listflg=0;
+ if type(Tp)==10
+ Tmp=part(Tp,1);
+ if Tmp=="L"|Tmp=="l"
+ Listflg=1
+ end;
+ N=N-1;
+ Ls=Mixsub(1:N,Ls);
+ end;
+ if Listflg==1
+ P=Ls
+ else
+ P=[];
+ for I=1:N
+ Tmp=Ls(I);
+ P=[P;%inf,%inf;Tmp];
+ end;
+ P=P(2:size(P,1),:)
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.bin
new file mode 100644
index 00000000..140d9028
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.sci
new file mode 100755
index 00000000..bbe02e62
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ketinit.sci
@@ -0,0 +1,57 @@
+// 08.07.08 PHI,THETA,FocusPoint,EyePoint;
+// 08.08.08
+// 08.08.31
+// 08.09.18
+// 09.10.09 ASSIGNLIST
+// 09.12.25 SCALING
+// 10.04.16 TEXFOR
+// 13.05.19 funcprot(0)
+// 13.03.05 MARKLEN instead of MEMORI
+
+function Ketinit()
+ global THISVERSION
+ global TenSize TenSizeInit Wfile XMIN XMAX YMIN YMAX
+ global XNAME XPOS YNAME YPOS ONAME OPOS ARROWSIZE
+ global ULEN MilliIn PenThick PenThickInit ZIKU
+ global MEMORI MEMORIInit MEMORINow GENTEN
+ global MARKLEN MARKLENInit MARKLENNow
+ global YaSize YaAngle YaPosition YaThick YaStyle
+ global PHI THETA FocusPoint EyePoint ASSIGNLIST
+ global SCALEX SCALEY LOGX LOGY TEXFORLEVEL TEXFORLAST
+ funcprot(0); // 2013.05.19
+ Setversion();
+ XMIN=-5 ;XMAX=5;
+ YMIN=-5 ; YMAX=5;
+ ZIKU='line'; ARROWSIZE=1;
+ XNAME='$x$' ; XPOS='e';
+ YNAME='$y$' ; YPOS='n';
+ ONAME='O' ; OPOS='sw';
+ ULEN='1cm';
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ Wfile='default';
+ MEMORI=0.05;
+ MEMORIInit=MEMORI;
+ MEMORINow=MEMORI;
+ MARKLEN=0.05;
+ MARKLENInit=MARKLEN;
+ MARKLENNow=MARKLEN;
+ GENTEN=[0,0];
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ PHI=30*%pi/180;
+ THETA=60*%pi/180;
+ FocusPoint=[0,0,0];
+ EyePoint=[5,5,5];
+ ASSIGNLIST=list('`',char(39));
+ SCALEX=1;
+ SCALEY=1;
+ LOGX=0;
+ LOGY=0;
+ TEXFORLEVEL=0;
+ TEXFORLAST=list();
+ endfunction;
+ \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.bin
new file mode 100644
index 00000000..f5871542
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.sci
new file mode 100755
index 00000000..c12b721e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kouten.sci
@@ -0,0 +1,31 @@
+// 08.05.18
+// 08.05.19
+// 09.06.01 (same as 05.19)
+
+function Out=Kouten(PA,V,P,Q);
+ Eps=10.0^(-6);
+ A1=PA(1); A2=PA(2);
+ V1=V(1); V2=V(2);
+ P1=P(1); P2=P(2);
+ U1=Q(1)-P1; U2=Q(2)-P2;
+ Tmp=norm(P-Q)*norm(V);
+ if Tmp==0
+ Out=[%inf,-%inf];
+ return
+ end
+ D=U1*V2-U2*V1;
+ if abs(D)/Tmp<Eps
+ Out=[%inf,-%inf];
+ return
+ end
+ S=((-A2+P2)*V1+(A1-P1)*V2)/D;
+ if S>1+Eps | S<-Eps
+ Out=[%inf,-%inf];
+ return
+ end
+ T=((-A2+P2)*U1+(A1-P1)*U2)/D;
+ Tmp=PA+T*V;
+ Out=MixS(T,Tmp,sign(D));
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.bin
new file mode 100644
index 00000000..f5b67546
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.sci
new file mode 100755
index 00000000..82cf1e2c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/KoutenList.sci
@@ -0,0 +1,51 @@
+// 08.05.18
+// 08.05.20
+// 08.06.02
+
+function TenL=KoutenList(PA,V,Bdy)
+ Eps=10.0^(-6);
+ TenL=[];
+ for N=1:Mixlength(Bdy)
+ KL=Op(N,Bdy);
+ for K=1:size(KL,1)-1
+ P=KL(K,:); Q=KL(K+1,:);
+ if P~='/' & Q~='/'
+ Tmp=Kouten(PA,V,P,Q);
+ if Tmp~=[%inf,-%inf]
+ Ten=Mixadd(Tmp,N);
+ Flg=0;
+ NN=Mixlength(TenL);
+ I=1;
+ while Flg==0 & I<=NN
+ Tmp=Op(I,TenL);
+ if Op(1,Ten)<Op(1,Tmp)-Eps
+ Tmp=Mixsub(1:I-1,TenL);
+ Tmp1=Mixadd(Tmp,Ten);
+ Tmp2=Mixsub(I:Mixlength(TenL),TenL);
+ TenL=Mixjoin(Tmp1,Tmp2);
+ Flg=1;
+ elseif Op(1,Ten)<Op(1,Tmp)+Eps
+ if Op(4,Ten)~=Op(4,Tmp)
+ Tmp=Mixsub(1:I-1,TenL);
+ Tmp1=Mixadd(Tmp,Ten);
+ Tmp2=Mixsub(I:Mixlength(TenL),TenL);
+ TenL=Mixjoin(Tmp1,Tmp2);
+ Flg=1;
+ elseif Op(3,Ten)~=Op(3,Tmp)
+ Tmp1=Mixsub(1:I-1,TenL);
+ Tmp2=Mixsub(I+1:Mixlength(TenL),TenL);
+ TenL=Mixjoin(Tmp1,Tmp2);
+ end
+ Flg=1;
+ end
+ I=I+1;
+ end
+ if Flg==0
+ TenL=Mixadd(TenL,Ten);
+ end
+ end
+ end
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.bin
new file mode 100644
index 00000000..be93baf3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.sci
new file mode 100755
index 00000000..371807fa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Koutenseg.sci
@@ -0,0 +1,105 @@
+//
+// 08.05.19
+// 09.12.05
+
+function Out=Koutenseg(varargin)
+ //pointdata on AB at which AB intersects CD
+ Nargs=length(varargin);
+ Eps0=10^(-4);
+ A=varargin(1); V=varargin(2)-A;
+ Sv2=V(1)^2+V(2)^2;
+ if Sv2<10^(-6)
+ Out=[%inf,-%inf];
+ return
+ end
+ P=varargin(3)-A; Q=varargin(4)-A;
+ Eps=10.0^(-3);
+ if Nargs>=5
+ Eps=varargin(5);
+ end
+ Eps2=0.2;
+ if Nargs>=6
+ Eps2=varargin(6);
+ end
+ Eps=min(Eps2,Eps/sqrt(Sv2));
+ P1=(P(1)*V(1)+P(2)*V(2))/Sv2;
+ P2=(-P(1)*V(2)+P(2)*V(1))/Sv2;
+ Q1=(Q(1)*V(1)+Q(2)*V(2))/Sv2;
+ Q2=(-Q(1)*V(2)+Q(2)*V(1))/Sv2;
+ m1=-Eps; M1=1+Eps;
+ m2=-Eps; M2=Eps;
+ if (max(P1,Q1)<m1) | (min(P1,Q1)>M1)
+ Out=[%inf,-%inf];
+ return
+ end
+ if (max(P2,Q2)<m2) | (min(P2,Q2)>M2)
+ Out=[%inf,-%inf];
+ return
+ end
+ if P2*Q2<0
+ T=P1-(Q1-P1)/(Q2-P2)*P2;
+ if (T>m1) & (T<M1)
+ if (T>-Eps0) & (T<1+Eps0)
+ Tmp1=A+T*V;
+ Tmp2=min(max(T,0),1);
+ Out=MixS(Tmp1,Tmp2,0);
+ else
+ Tmp1=A+T*V;
+ Tmp2=min(max(T,0),1);
+ Out=MixS(Tmp1,Tmp2,1);
+ end
+ return
+ end
+ if P1<m1 | P1>M1 | P2<m2 | P2>M2
+ if Q1<m1 | Q1>M1 | Q2<m2 | Q2>M2
+ Out=[%inf,-%inf];
+ return
+ end
+ T=min(max(Q1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ T=min(max(P1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ if P1 > -Eps0 & P1 < 1 + Eps0 & P2 > -Eps0 & P2 < Eps0
+ T= P1;
+ Tmp=A+T*V;
+ Out= MixS(Tmp, T, 0);
+ return
+ end
+ if Q1 > -Eps0 & Q1 < 1 + Eps0 & Q2 > -Eps0 & Q2 < Eps0
+ T= Q1;
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,0);
+ return
+ end
+ if P1<m1 | P1>M1 | P2<m2 | P2>M2
+ if Q1<m1 | Q1>M1 | Q2<m2 | Q2>M2
+ Out=[%inf,-%inf];
+ return
+ end
+ T=min(max(Q1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ if Q1<m1 | Q1>M1 | Q2<m2 | Q2>M2
+ T=min(max(P1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ if abs(P2)<abs(Q2)
+ T=min(max(P1,0),1);
+ else
+ T=min(max(Q1,0),1);
+ end
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.bin
new file mode 100644
index 00000000..7535fd2e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.sci
new file mode 100755
index 00000000..0e38dae7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukannozoku.sci
@@ -0,0 +1,45 @@
+// 08.07.13
+// 08.10.16
+
+function Res=Kukannozoku(Jokyo,KukanL)
+ Eps=10^(-6);
+ N=size(KukanL,1);
+ T1=Jokyo(1); T2=Jokyo(2);
+ Tmp=KukanL(1,:);
+ T1=max(T1,Tmp(1));
+ Tmp=KukanL(N,:);
+ T2=min(T2,Tmp(2));
+ Res=[];
+ Flg=0;
+ for I=1:N
+ Ku=KukanL(I,:);
+ if Flg==0
+ if Ku(2)<T1
+ Res=[Res;Ku];
+ else
+ Flg=1;
+ if Ku(1)<T1-Eps
+ Tmp=[Ku(1),T1];
+ Res=[Res;Tmp];
+ end;
+ if Ku(2)>T2+Eps
+ Tmp=[T2,Ku(2)];
+ Res=[Res;Tmp];
+ end;
+ end;
+ elseif Flg==1
+ if Ku(2)<T2
+ continue;
+ else
+ Flg=2;
+ if Ku(1)<T2-Eps
+ Ku=[T2,Ku(2)];
+ end;
+ Res=[Res;Ku];
+ end;
+ else
+ Res=[Res;Ku];
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.bin
new file mode 100644
index 00000000..656dd42d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.sci
new file mode 100755
index 00000000..4e38175f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kukeiwake.sci
@@ -0,0 +1,62 @@
+// 08.05.30
+
+function Out=Kukeiwake(PL)
+ global XMIN XMAX YMIN YMAX;
+ Eps=10.0^(-6);
+ NW=[XMIN,YMAX]; SW=[XMIN,YMIN];
+ SE=[XMAX,YMIN]; NE=[XMAX,YMAX];
+ Sikaku=[NW;SW;SE;NE;NW];
+ Kt=IntersectcrvsPp(PL,Sikaku);
+ if Mixlength(Kt)~=2
+ disp('not two points')
+ return
+ end
+ Tmp=Op(1,Kt);
+ Pt1=Op(1,Tmp);
+ N1=Trunc(Op(2,Tmp));
+ M1=Op(3,Tmp);
+ Tmp=Op(2,Kt);
+ Pt2=Op(1,Tmp);
+ N2=Trunc(Op(2,Tmp));
+ M2=Op(3,Tmp);
+ T1=ParamonCurve(Pt1,M1,Sikaku);
+ T2=ParamonCurve(Pt2,M2,Sikaku);
+ QL=[];
+ if Vecnagasa(Pt1,PL(N1+1,:))>Eps
+ QL=[Pt1];
+ end
+ QL=[QL;PL(N1+1:N2,:)];
+ if Vecnagasa(Pt2,PL(N2,:))>Eps
+ QL=[QL;Pt2];
+ end
+ HidariL=QL;
+ Ms=M2+1; Me=M1;
+ if T1<T2+Eps Me=M1+4; end
+ for M=Ms:Me
+ Tmp=HidariL(size(HidariL,1),:);
+ P=Sikaku(modulo(M-1,4)+1,:);
+ if Vecnagasa(Tmp,P)>Eps
+ HidariL=[HidariL;P];
+ end
+ end
+ Tmp=HidariL(size(HidariL,1),:);
+ if Vecnagasa(Tmp,Pt1)>Eps
+ HidariL=[HidariL;Pt1];
+ end
+ MigiL=QL;
+ Ms=M2; Me=M1+1;
+ if T1>T2-Eps Me=Me-4; end;
+ for M=Ms:-1:Me
+ Tmp=MigiL(size(MigiL,1),:);
+ P=Sikaku(modulo(M-1,4)+1,:);
+ if Vecnagasa(Tmp,P)>Eps
+ MigiL=[MigiL;P]
+ end
+ end
+ Tmp=MigiL(size(MigiL,1),:);
+ if Vecnagasa(Tmp,Pt1)>Eps
+ MigiL=[MigiL;Pt1];
+ end
+ Out=MixS(HidariL,MigiL);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.bin
new file mode 100644
index 00000000..a45aa2e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.sci
new file mode 100755
index 00000000..a07a89d1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyorihensuu.sci
@@ -0,0 +1,30 @@
+function Kyorihensuu(varargin)
+ if length(varargin)==0
+ FL='default';
+ else
+ FL=varargin(1);
+ if FL==''
+ FL='tmp.tex'
+ end
+ end
+ StrM=[...
+ '\newlength{\Width}%',...
+ '\newlength{\Height}%',...
+ '\newlength{\Depth}%'...
+ ];
+ if FL~='default'
+ Fid=mopen(FL,'w');
+ mprintf('%s\n\n','Writing to '+FL);
+ end;
+ for I=1:size(StrM,2)
+ Str=StrM(I);
+ mprintf('%s\n',Str);
+ if FL~='default'
+ mfprintf(Fid,'%s\n',Str);
+ end
+ end
+ if FL~='default'
+ mclose(Fid)
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.bin
new file mode 100644
index 00000000..07c938a3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.sci
new file mode 100755
index 00000000..4090c2da
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Kyoukai.sci
@@ -0,0 +1,144 @@
+// 08.05.18
+// 08.05.19
+// 08.05.20
+// 08.05.30
+// 08.09.19
+// 08.10.26
+// 09.01.15 "e"
+// 09.05.18
+// 09.12.05
+// 16.11.03 Eps=10^(-5)
+// 16.12.05 Eps=10^(-7)
+
+function PLall=Kyoukai(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ Eps0=10^(-7);
+ DataL=[];
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if Mixtype(Tmp)==1
+ Tmp1=MixS(Tmp);
+ DataL=Mixadd(DataL,Tmp1);
+ end
+ if Mixtype(Tmp)==2
+ DataL=Mixadd(DataL,Tmp);
+ end
+ if Mixtype(Tmp)==3
+ DataL=Mixjoin(DataL,Tmp);
+ end
+ end;
+ Eps=10.0^(-4);
+ PLall=[];
+ Sflg=0;
+ N=Mixlength(DataL);
+ for I=1:N
+ Data=Op(I,DataL);
+ Tmp=Op(Mixlength(Data),Data);
+ if type(Tmp)==1 & size(Tmp,1)==1 & size(Tmp,2)>1
+ Rg=Tmp ; Nd=Mixlength(Data)-1;
+ elseif type(Tmp)==10
+ Rg=Tmp ; Nd=Mixlength(Data)-1;
+ else
+ Rg='c' ; Nd=Mixlength(Data);
+ end;
+ for J=1:Nd
+ Tmp=Op(J,Data);
+ if type(Tmp)==10
+ Rg=Tmp;
+ continue
+ end
+ Points=Tmp;
+ P1=Ptstart(Points);
+ P2=Ptend(Points);
+ if J==1
+ PL=Points;
+ Pfirst=P1;
+ Plast=P2;
+ if Nd>=2
+ Tmp=Op(2,Data);
+ P=Ptstart(Tmp);
+ Q=Ptend(Tmp);
+ if norm(P2-P)>Eps & norm(P2-Q)>Eps
+ Tmp=size(PL,1);
+ PL=PL(Tmp:-1:1,:);
+ Pfirst=Ptstart(PL);
+ Plast=Ptend(PL);
+ end;
+ end
+ else
+ if norm(P1-Plast)<Eps
+ Stp=1; Ks=2; Ke=size(Points,1);
+ elseif norm(P2-Plast)<Eps
+ Stp=-1; Ks=size(Points,1)-1; Ke=1;
+ else
+ PL=[PL;%inf,%inf;Points];
+ Sflg=1;
+ Pfirst=P1;
+ Plast=P2;
+ Stp=1; Ks=size(Points,1)-1; Ke=1;
+ end
+ for K=Ks:Stp:Ke
+ PL=[PL;Points(K,:)];
+ end
+ Plast=Points(Ke,:);
+ end
+ end
+ if norm(Pfirst-Plast)>Eps
+ Np=size(PL,1);
+ if Rg=='c'
+ PL=[PL;Pfirst];
+ elseif Rg=='s'
+ Tmp=[PL(1:Np,2);YMIN];
+ Y=min(Tmp)-1;
+ P=[Plast(1),Y]; Q=[Pfirst(1),Y];
+ PL=[PL;P;Q;Pfirst];
+ elseif Rg=='n'
+ Tmp=[PL(1:Np,2);YMAX];
+ Y=max(Tmp)+1;
+ P=[Plast(1),Y]; Q=[Pfirst(1),Y];
+ PL=[PL;P;Q;Pfirst];
+ elseif Rg=='w'
+ Tmp=[PL(1:Np,1);XMIN];
+ X=min(Tmp)-1;
+ P=[X,Plast(2)]; Q=[X,Pfirst(2)];
+ PL=[PL;P;Q;Pfirst];
+ elseif Rg=='e'
+ Tmp=[PL(1:Np,1);XMAX];
+ X=max(Tmp)+1;
+ P=[X,Plast(2)]; Q=[X,Pfirst(2)];
+ PL=[PL;P;Q;Pfirst];
+ elseif type(Rg)==1 & size(Rg,1)==1 & size(Rg,2)>1
+ Tmp=Kukeiwake(PL); //Modified from here
+ Tmp1=Op(1,Tmp);
+ Tmp2=Naigai(Rg,Mix(Tmp1));
+ if Tmp2==[1]
+ PL=Op(1,Tmp);
+ else
+ PL=Op(2,Tmp); // to here
+ end
+ end
+ end
+ Tmp=[Ptstart(PL)];
+ for J=2:size(PL,1)
+ P=PL(J,:);
+ Q=Tmp(size(Tmp,1),:);
+ if norm(P-Q)>Eps then
+ Tmp=[Tmp;P];
+ end
+ end
+ PL=Tmp;
+ PLall=Mixadd(PLall,PL);
+ end
+ if Mixlength(PLall)==1 & Sflg==0
+ Tmp=Op(1,PLall);
+// Tmp=Op(1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))>Eps0
+ Tmp=[Tmp;Ptstart(Tmp)];
+ PLall=MixS(Tmp);
+ end
+ end;
+endfunction;
+
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.bin
new file mode 100644
index 00000000..41551ef5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.sci
new file mode 100755
index 00000000..7a7a4b78
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letter.sci
@@ -0,0 +1,100 @@
+//
+// 09.12.25
+
+function Letter(varargin)
+ global Wfile FID MEMORI;
+ Nargs=length(varargin);
+ for I=1:3:Nargs
+ Tmp=varargin(I);
+ P=Doscaling(Tmp);
+ X=P(1);
+ Y=P(2);
+ Houkou=varargin(I+1);
+ Mojiretu=varargin(I+2);
+ Hset=Houkou;
+ Vhoko='c';
+ if mtlb_findstr(Hset,'n')~=[]
+ Vhoko='n'; Y=Y+MEMORI;
+ end
+ if mtlb_findstr(Hset,'s')~=[]
+ Vhoko='s'; Y=Y-MEMORI;
+ end
+ Hhoko='c';
+ if mtlb_findstr(Hset,'e')~=[]
+ Hhoko='e'; X=X+MEMORI;
+ end
+ if mtlb_findstr(Hset,'w')~=[]
+ Hhoko='w'; X=X-MEMORI;
+ end
+ Hoko=Vhoko+Hhoko;
+ Suu='+-.0123456789';
+ SuuL=Suu;
+ Hcode=ascii(Houkou);
+ J=1; Dstr='';
+ while J<=length(Houkou)
+ Tmp=char(Hcode(J));
+ if mtlb_findstr(SuuL,Tmp)~=[]
+ if Dstr==''
+ Hk=char(Hcode(J-1));
+ end
+ Dstr=Dstr+Tmp;
+ else
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ Dstr='';
+ end
+ end
+ J=J+1;
+ end
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ end
+ CalcWidth(Hoko,Mojiretu);
+ CalcHeight(Hoko,Mojiretu);
+ Tmp='){\hspace*{\Width}';
+ Str=Tmp+'\raisebox{\Height}{'+Mojiretu+'}}';
+ if Wfile=='default'
+ mprintf('%s','\put(');
+ mprintf('%6.4f%s%6.4f',X,',',Y);
+ mprintf('%s%s\n',Str,'%');
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s','\put(');
+ mfprintf(FID,'%6.4f%s%6.4f',X,',',Y);
+ mfprintf(FID,'%s%s\n',Str,'%');
+ mfprintf(FID,'%s\n','%');
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.bin
new file mode 100644
index 00000000..53dcb238
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.sci
new file mode 100755
index 00000000..f99917cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Letterrot.sci
@@ -0,0 +1,36 @@
+// 08.05.31
+// 08.08.24
+// 09.12.25
+
+function Letterrot(varargin)
+ global MEMORI;
+ P=varargin(1);
+ V=varargin(2); N=3;
+ P=Doscaling(P);
+ V=Doscaling(V);
+ Tmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1
+ Tmov=Tmp; N=N+1;
+ end
+ Nmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1 then
+ Nmov=Tmp; N=N+1;
+ end
+ Mojiretu=varargin(N);
+ Tv=1/Vecnagasa(V)*V;
+ Nv=[-Tv(2),Tv(1)];
+ P=P+MEMORI*Tmov*Tv+MEMORI*Nmov*Nv;
+ Tmp=acos(V(1)/Vecnagasa(V));
+ Theta=round(Tmp*180/%pi);
+ if V(2)>=0
+ Units='';
+ else
+ Units='units=-360,';
+ end
+ Tmp='\rotatebox['+Units+'origin=c]{'+string(Theta);
+ Tmp=Tmp+'}{'+Mojiretu+'}';
+ Letter(P,"c",Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.bin
new file mode 100644
index 00000000..3acfa7aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.sci
new file mode 100755
index 00000000..bc44c2e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Lineplot.sci
@@ -0,0 +1,44 @@
+// 09.10.09
+// 09.10.12
+// 09.11.01
+// 09.11.12
+// 09.12.06
+// 10.12.04
+
+function Out=Lineplot(varargin)
+ Nargs=length(varargin);
+ A=varargin(1);
+ if type(A)==1 // 09.11.12 from
+ Tmp=length(A);
+ if Tmp>3
+ B=A(Tmp/2+1:Tmp);
+ A=A(1:Tmp/2);
+ Is=2;
+ else
+ B=varargin(2);
+ Is=3;
+ end;
+ else
+ B=A(2);
+ A=A(1);
+ Is=2;
+ end; // upto
+ Mag=100; Semi='';
+ for I=Is:Nargs
+ Tmp=varargin(I);
+ select type(Tmp)
+ case 1
+ Mag=Tmp;
+ case 10
+ Semi=Tmp;
+ end;
+ end;
+ V= Mag/norm(B-A)*(B-A) // 10.12.04 from here
+ if Semi==""
+ Out=Listplot(A-V,A+V)
+ elseif Semi=="+"
+ Out=Listplot(A,A+V)
+ else
+ Out=Listplot(A-V,A)
+ end // 10.12.04 to here
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.bin
new file mode 100644
index 00000000..e2ea3688
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.sci
new file mode 100755
index 00000000..0bc9f736
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Listplot.sci
@@ -0,0 +1,24 @@
+//
+// 08.07.13
+// 09.06.13
+
+function Z=Listplot(varargin)
+ Z=[];
+ for I=1:length(varargin)
+ Data=varargin(I);
+ if Mixtype(Data)==1
+ if size(Data,1)==1
+ Tmp=matrix(Data,2,size(Data,2)/2);
+ Z=[Z;Tmp'];
+ else
+ Z=[Z;Data];
+ end;
+ else
+ for J=1:Mixlength(Data)
+ Tmp=Mixop(J,Data);
+ Z=[Z;Tmp];
+ end
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.bin
new file mode 100644
index 00000000..10970e3d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.sci
new file mode 100755
index 00000000..27e70d48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeBowdata.sci
@@ -0,0 +1,49 @@
+//
+// 08.08.24
+// 10.01.02
+
+function Out=MakeBowdata(PA,PB,H)
+ global BOWSTART BOWEND
+ BOWSTART=PA;
+ BOWEND=PB;
+ Eps=10^(-5);
+ D=1/2*Vecnagasa(PB-PA);
+ R=(H^2+D^2)/(2*H);
+ A1=PA(1); A2=PA(2);
+ B1=PB(1); B2=PB(2);
+ if abs(A2-B2)>Eps
+ x=poly(0,'X');
+ y=-(A1-B1)*x/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2);
+ Eq1=(A1-x)^2+(A2-y)^2-R^2;
+ Tmp=coeff(Eq1);
+ C0=Tmp(1); C1=Tmp(2); C2=Tmp(3);
+ Det=sqrt(C1^2-4*C0*C2);
+ Ansx1=(-C1+Det)/(2*C2);
+ Ansx2=(-C1-Det)/(2*C2);
+ Tmp=horner(y,Ansx1);
+ PC=[Ansx1,Tmp];
+ Tmp=horner(y,Ansx2);
+ PC2=[Ansx2,Tmp];
+ else
+ Tmp=0.5*(PA+PB);
+ PC=Tmp+[0,R-H];
+ PC2=Tmp-[0,R-H];
+ end;
+ VA=PA-PC;
+ VB=PB-PC;
+ if VA(1)*VB(2)-VA(2)*VB(1)<0
+ PC=PC2;
+ end
+ AngA=acos((PA(1)-PC(1))/R);
+ if PA(2)-PC(2)<0
+ AngA=-AngA;
+ end
+ AngB=acos((PB(1)-PC(1))/R);
+ if PB(2)-PC(2)<0
+ AngB=-AngB;
+ end
+ if AngA>AngB
+ AngB=AngB+2*%pi;
+ end
+ Out=Mixmake(PC,R,AngA,AngB);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.bin
new file mode 100644
index 00000000..1e4a9df1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.sci
new file mode 100755
index 00000000..f3bbd3ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeCurves.sci
@@ -0,0 +1,62 @@
+//
+// 09.12.25
+// 10.01.01
+// 10.12.02 ( debugged for norm()==0 )
+
+function Outdata=MakeCurves(varargin)
+ Figdata=varargin(1);
+ Ptout=1;
+ if length(varargin)>=2
+ Ptout=varargin(2);
+ end
+ Eps=10.0^(-6);
+ IndM=Dataindex(Figdata);
+ Atos=[];
+ for Nd=1:size(IndM,1)
+ Tmp=IndM(Nd,:);
+ Motos=Figdata(Tmp(1):Tmp(2),:);
+ All=size(Motos,1);
+ if size(Motos,1)==1
+ if InWindow(Motos)=='o'
+ continue;
+ end;
+ if Ptout==1
+ Drwpt(Motos(1,:));
+ else
+ Atos=[Atos;%inf,%inf;Doscaling(Motos)];
+ end
+ continue
+ end
+ Crv=[];
+ for I=2:All
+ P=Motos(I-1,:);
+ Q=Motos(I,:);
+ Snbn=MeetWindow(P,Q);
+ if Snbn==[]
+ if Crv~=[]
+ Atos=[Atos;%inf,%inf;Doscaling(Crv)];
+ Crv=[];
+ end
+ else
+ if norm(Snbn(1,:)-Snbn(2,:))<Eps // 10.12.02
+ continue;
+ end;
+ if Crv==[]
+ Crv=Snbn
+ else
+ Tmp=Crv(size(Crv,1),:);
+ if norm(Tmp-Snbn(1,:))<Eps
+ Crv=[Crv;Snbn(2,:)];
+ else
+ Atos=[Atos;%inf,%inf;Doscaling(Crv)];
+ Crv=Snbn;
+ end
+ end
+ end
+ end
+ if size(Crv,1)>=2
+ Atos=[Atos;%inf,%inf;Doscaling(Crv)];
+ end
+ end
+ Outdata=Atos(2:size(Atos,1),:);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.bin
new file mode 100644
index 00000000..8d2516c2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.sci
new file mode 100755
index 00000000..81b0492f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakecutbycrvL.sci
@@ -0,0 +1,45 @@
+// 08.09.19
+// 08.10.15
+// 08.12.21
+
+function AnsL=MakecutbycrvL(Out1,CutuvL,Uveqstr,Uname,Vname,Eps)
+ if CutuvL==[]
+ if Mixtype(Out1)==1
+ AnsL=Mix(Out1);
+ else
+ AnsL=Out1;
+ end;
+ return;
+ end;
+ AnsL=[];
+ ParL=Partitionseg(Out1,CutuvL,Eps);
+ Flg=0;
+ for J=1:length(ParL)-1
+ Tmp=(ParL(J)+ParL(J+1))*0.5;
+ Tmp=PointonCurve(Tmp,Out1);
+ Tmp1='('+string(Tmp(1))+')';
+ Tmp2='('+string(Tmp(2))+')';
+ Tmp=strsubst(Uveqstr,Uname,Tmp1);
+ Tmp=strsubst(Tmp,Vname,Tmp2);
+ Tmp=evstr(Tmp);
+ if Tmp>0
+ if Flg==0
+ P1=ParL(J);
+ end;
+ Flg=1
+ else
+ if Flg==1
+ P2=ParL(J);
+ Tmp=Partcrv(P1,P2,Out1);
+ AnsL=Mixadd(AnsL,Tmp);
+ end;
+ Flg=0
+ end;
+ end;
+ if Flg==1
+ P2=ParL(length(ParL));
+ Tmp=Partcrv(P1,P2,Out1);
+ AnsL=Mixadd(AnsL,Tmp);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.bin
new file mode 100644
index 00000000..b2f34062
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.sci
new file mode 100755
index 00000000..3f768e87
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makehasen.sci
@@ -0,0 +1,123 @@
+//
+// 11.05.26 (for pdflatex)
+
+function Makehasen(Figdata,Sen,Gap,Ptn)
+ global Wfile FID;
+ Eps=10.0^(-6);
+ Clist=MakeCurves(Figdata);
+ DinM=Dataindex(Clist);
+ for N=1:size(DinM,1)
+ Tmp=DinM(N,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Dtall=size(Data,1);
+ Len=0;
+ Lenlist=[0];
+ for I=2:Dtall
+ Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
+ Lenlist=[Lenlist,Len];
+ end
+ Lenall=Lenlist(Dtall);
+ if Lenall==0
+ continue
+ end
+ Kari=(Sen+Gap)*0.1;
+ Naga=Sen*0.1;
+ Tobi=Gap*0.1;
+ if Vecnagasa(Data(1,:)-Data(Dtall,:))<Eps
+ Nsen=max(ceil(Lenall/Kari),3);
+ SegUnit=Lenall/Nsen;
+ Naga=SegUnit*Sen/(Sen+Gap);
+ Tobi=SegUnit*Gap/(Sen+Gap);
+ SegList=[0:SegUnit:(Nsen-1)*SegUnit];
+ else
+ if Ptn==0
+ Nsen=max(ceil((Lenall+Tobi)/Kari),3);
+ SegUnit=Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap);
+ Naga=SegUnit*Sen/(Sen+Gap);
+ Tobi=SegUnit*Gap/(Sen+Gap);
+ SegList=[0:SegUnit:(Nsen-1)*SegUnit];
+ else
+ Nsen=max(ceil((Lenall+Naga)/Kari),3);
+ SegUnit=Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap);
+ Naga=SegUnit*Sen/(Sen+Gap);
+ Tobi=SegUnit*Gap/(Sen+Gap);
+ SegList=[Tobi:SegUnit:Tobi+(Nsen-2)*SegUnit];
+ end
+ end
+ Hajime=1; Owari=1;
+ Mojisu=0;
+ for I=1:length(SegList)
+ Len=SegList(I);
+ J=Owari;
+ while Len>=Lenlist(J)-Eps
+ if J==Dtall
+ break
+ end
+ J=J+1;
+ end
+ Hajime=J-1;
+ J=Hajime;
+ while Len+Naga>Lenlist(J)-Eps
+ if J==Dtall
+ break
+ end
+ J=J+1
+ end
+ Owari=J-1;
+ T=(Len-Lenlist(Hajime))...
+ /(Lenlist(Hajime+1)-Lenlist(Hajime));
+ P=Data(Hajime,:)+T*(Data(Hajime+1,:)-Data(Hajime,:));
+ X0=sprintf('%5.5f',P(1));
+ Y0=sprintf('%5.5f',P(2));
+ Pt0='('+X0+','+Y0+')';
+ Str='\polyline'+Pt0;
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end;
+ Mojisu=Mojisu+length(Str);
+ for J=Hajime+1:Owari
+ P=Data(J,:);
+ X=sprintf('%5.5f',P(1));
+ Y=sprintf('%5.5f',P(2));
+ Pt='('+X+','+Y+')';
+ Str=Pt;
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end;
+ Pt0=Pt;
+ Mojisu=Mojisu+length(Str);
+ end;
+ T=(Len+Naga-Lenlist(Owari))...
+ /(Lenlist(Owari+1)-Lenlist(Owari));
+ P=Data(Owari,:)+T*(Data(Owari+1,:)-Data(Owari,:));
+ X=sprintf('%5.5f',P(1));
+ Y=sprintf('%5.5f',P(2));
+ Pt='('+string(X)+','+string(Y)+')';
+ Str=Pt;
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end;
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end;
+ Mojisu=0;
+ end
+ end
+ end
+ if Wfile=='default'
+ mprintf('%s\n%s\n','%','%');
+ else
+ mfprintf(FID,'%s\n%s\n','%','%');
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.bin
new file mode 100644
index 00000000..1c9d8f4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.sci
new file mode 100755
index 00000000..e9915e1b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeliststr.sci
@@ -0,0 +1,41 @@
+// 09.10.21
+
+function Out=Makeliststr(L)
+ Out='list(';
+ for I=1:length(L)
+ Dt=L(I);
+ if type(Dt)==1
+ if length(Dt)==1
+ Dts=string(Dt);
+ else
+ Dts='[';
+ for J=1:size(Dt,1)
+ for K=1:size(Dt,2)
+ Dts=Dts+string(Dt(J,K));
+ if K<size(Dt,2)
+ Dts=Dts+',';
+ end;
+ end;
+ if J<size(Dt,1)
+ Dts=Dts+';';
+ else
+ Dts=Dts+']';
+ end;
+ end;
+ end;
+ end;
+ if type(Dt)==10
+ Dts=Prime()+Dt+Prime();
+ end;
+ if type(Dt)==15
+ Dts=Makeliststr(Dt);
+ end;
+ Out=Out+Dts;
+ if I<length(L)
+ Out=Out+',';
+ else
+ Out=Out+')';
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.bin
new file mode 100644
index 00000000..bafa4670
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.sci
new file mode 100755
index 00000000..e24525e1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makesfcutoffdata.sci
@@ -0,0 +1,345 @@
+// 08.09.19
+// 08.09.24
+// 08.10.09
+// 08.10.10
+// 08.10.15
+// 08.12.06
+// 08.12.21
+// 08.12.31
+// 10.02.16 Eps__ ( And Mislength, Mixop replaced )
+// 13.10.21 ( __ added to varibles )
+
+function FsL__=Makesfcutoffdata(MS__)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT
+ global BORDERPT OTHERPARTITION PARTITIONPT
+ global HIDDENDATA BORDERHIDDENDATA;
+ timer();
+ Nargs__=length(MS__);
+ HT__=Op(1,MS__);
+ PT__=Op(2,MS__);
+ Fd__=Op(3,MS__);
+ CutD__=Op(4,MS__);
+ Np__=[50,50];
+ Eps__=[0.05,1]; //
+ Eps__2=0.2;
+ Sgnstr__='+';
+ K__=0;
+ for I__=5:Nargs__
+ Tmp__=Op(I__,MS__);
+ if type(Tmp__)==10
+ Sgnstr__=Tmp__;
+ end;
+ if type(Tmp__)==1 // from
+ K__=K__+1;
+ if K__==1
+ Np__=Tmp__;
+ if length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ if K__==2
+ Eps__=Tmp__;
+ if length(Eps__)==1
+ Eps__=[Eps__,1];
+ end;
+ end;
+ if K__==3
+ Eps__2=Tmp__;
+ end;
+ end; // upto
+ end;
+ Tmp__=Op(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Op(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Op(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Op(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ Fd__L=Fullformfunc(Fd__);
+ Fxy__=Op(1,Fd__L);
+ Xf__=Op(2,Fd__L);
+ Yf__=Op(3,Fd__L);
+ Zf__=Op(4,Fd__L);
+ DrwS__=Op(7,Fd__L);
+ Tmp__=Op(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Op(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); Umax__=Urg__(2);
+ Vmin__=Vrg__(1); Vmax__=Vrg__(2);
+ Fugou__=1;
+ if Sgnstr__=='-' | Sgnstr__=='n'
+ Fugou__=-1;
+ end;
+ if Mixtype(CutD__)~=1
+ V1__=Op(1,CutD__);
+ Tmp__=Op(2,CutD__);
+ if length(Tmp__)>1
+ D__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ D__=Tmp__;
+ end;
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'-';
+ Eq__=Tmp__+string(D__);
+ elseif type(CutD__)==1
+ V1__=CutD__(1:3);
+ D__=CutD__(4);
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'+';
+ Eq__=Tmp__+string(D__);
+ else
+ K__=mtlb_findstr(CutD__,'=');
+ if K__>0
+ Tmp__1=part(CutD__,1:K__-1);
+ Tmp__2=part(CutD__,K__+1:length(CutD__));
+ Eq__=Tmp__1+'-('+Tmp__2+')';
+ else
+ Eq__=CutD__;
+ end;
+ end;
+ Eq__='('+string(Fugou__)+')*('+Eq__+')';
+ Tmp__=strsubst(Eq__,Xname__,'('+Xf__+')');
+ Tmp__=strsubst(Tmp__,Yname__,'('+Yf__+')');
+ Uveq__=strsubst(Tmp__,Zname__,'('+Zf__+')');
+ Tmp__1=Op(5,Fd__L);
+ Tmp__2=Op(6,Fd__L);
+ CutuvL__=Implicitplot(Uveq__,Tmp__1,Tmp__2,Np__);
+ EkL__=[];
+ for I__=1:length(CutuvL__)
+ Out__1=Op(I__,CutuvL__);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'e');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[Umax__,T]','T=[Vmin__,Vmax__]','N='+string(Np__(2)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'n');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[T,Vmax__]','T=[Umin__,Umax__]','N='+string(Np__(1)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'w');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[Umin__,T]','T=[Vmin__,Vmax__]','N='+string(Np__(2)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'s');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[T,Vmin__]','T=[Umin__,Umax__]','N='+string(Np__(1)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Fbdxy__=[];
+ for I__=1:length(EkL__)
+ Out__1=Op(I__,EkL__);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__=Out__1(J__,1:2);
+ Out__2=[Out__2,Tmp__];
+ end;
+ Tmp__=Listplot(Out__2);
+ Fbdxy__=Mixjoin(Fbdxy__,list(Tmp__));
+ end;
+ if PT__=='pers'
+ [Zval__,Xval__,Yval__]=Evlptablepers(Mix(Fd__,Np__));
+ end;
+ if PT__=='para'
+ [Zval__,Xval__,Yval__]=Evlptablepara(Mix(Fd__,Np__));
+ end;
+ Mixdisp(Mix('Ridge Equation obtained ',timer()));
+ Out__2=Implicitplot(Zval__,Xval__,Yval__);
+ IMPLICITDATA=Out__2;
+ Tmp__L=[];
+ for I__=1:length(Out__2)
+ Tmp__1=Op(I__,Out__2);
+ Tmp__=MakecutbycrvL(Tmp__1,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for J__=1:length(Tmp__)
+ Tmp__L=Mixjoin(Tmp__L,Op(J__,Tmp__));
+ end;
+ end;
+ Out__3=Tmp__L;
+ IMPLICITDATA=Out__3;
+ Mixdisp(Mix('ImplicitData obtained ',timer()));
+ if PT__=='pers'
+ Out__4=Cuspsplitpers(Out__3,Fd__,Eps__(1));
+ end;
+ if PT__=='para'
+ Out__4=Cuspsplitpara(Out__3,Fd__,Eps__(1));
+ end;
+ CUSPDATA=Out__4;
+ CUSPT=CUSPSPLITPT;
+ Mixdisp(Mix('CuspData obtained ',timer()));
+ FkL__=Mixjoin(EkL__,Out__4);
+ if PT__=='pers'
+ Fall__=Projpers(FkL__);
+ end;
+ if PT__=='para'
+ Fall__=Projpara(FkL__);
+ end;
+ if HT__=='raw'
+ Mixdisp(Mix('BorderData obtained ',timer()));
+ FsL__=FkL__;
+ return;
+ end;
+ BORDERPT=[];
+ Tmp__=[];
+ for I__=1:length(Fall__)
+ Tmp__=Mixjoin(Tmp__,list([]));
+ end;
+ OTHERPARTITION=Tmp__;
+ FsL__=[];
+ BORDERHIDDENDATA=[];
+ for I__=1:length(Fall__)
+ if PT__=='pers'
+ Tmp__=Projpers(Op(I__,FkL__));
+ end;
+ if PT__=='para'
+ Tmp__=Projpara(Op(I__,FkL__));
+ end;
+ ParL__=Partitionseg(Tmp__,Fall__,Eps__(1),Eps__2,I__);
+ if length(PARTITIONPT)>2
+ Tmp__=length(PARTITIONPT)-1;
+ Tmp__1=BORDERPT;
+ for J__=2:Tmp__
+ Tmp__2=Op(J__,PARTITIONPT);
+ Tmp__1=Mixjoin(Tmp__1,list(Tmp__2));
+ end;
+ BORDERPT=Tmp__1;
+ end;
+ if PT__=='pers'
+ if Fxy__=='p'
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpers2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+ else
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpers2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+// Tmp__2=Mix(Fxy__,Fbdxy__,Xname__,Yname__);
+// Tmp__=Nohiddenpers(ParL__,Tmp__1,Tmp__2);
+ end;
+ else
+ if Fxy__=='p'
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpara2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+ else
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpara2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+// Tmp__2=Mix(Fxy__,Fbdxy__,Xname__,Yname__);
+// Tmp__=Nohiddenpara(ParL__,Tmp__1,Tmp__2);
+ end;
+ end;
+ BORDERHIDDENDATA=Mixjoin(BORDERHIDDENDATA,HIDDENDATA);
+ FsL__=Mixjoin(FsL__,Tmp__);
+ end;
+ Mixdisp(Mix('BorderData obtained ',timer()));
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.bin
new file mode 100644
index 00000000..c4f4d4c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.sci
new file mode 100755
index 00000000..443751be
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeshasen.sci
@@ -0,0 +1,41 @@
+// 08.05.20
+// 09.10.05
+// 10.01.20
+// 10.02.01
+
+function Out=Makeshasen(PtnL,PA,V,Bdy)
+ Eps=10.0^(-6);
+ TenL=KoutenList(PA,V,Bdy);
+ Nten=length(TenL);
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ Out=list();
+ GL=[]
+ Te=-10.0^6;
+ for I=1:Nten-1
+ TenP=Op(I,TenL); TenQ=Op(I+1,TenL);
+ Ts=Op(1,TenP);
+ P=Op(2,TenP); Q=Op(2,TenQ);
+ NC=Op(4,TenP);
+ Tmp=modulo(Ptn(NC)+1,2);
+ Ptn(1,NC)=Tmp;
+ if Op(1,TenQ)-Ts>Eps
+ if Member(Ptn,PtnL)
+ if abs(Te-Ts)>Eps
+ if GL~=[]
+ J=length(Out);
+ Out(J+1)=GL;
+ end;
+ Tmp=Listplot(P,Q);
+ GL=Tmp;
+ else
+ GL=[GL;Q];
+ end
+ Te=Op(1,TenQ);
+ end
+ end
+ end
+ if size(GL,1)>0
+ Out=Mixjoin(Out,list(GL))
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.bin
new file mode 100644
index 00000000..102b44b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.sci
new file mode 100755
index 00000000..99ad5910
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletondata.sci
@@ -0,0 +1,171 @@
+// 08.07.13
+// 08.10.16
+// 09.03.05
+// 09.05.12
+// 10.05.09
+// 14.07.05
+// 16.12.24 ( when kukanL=[] )
+
+function Allres=Makeskeletondata(Obj2L,Plt2L,R0,Eps2)
+ Eps=10.0^(-3);
+ Dmat=[];
+ Dind=[];
+ for I=1:Mixlength(Plt2L)
+ Dt=Mixop(I,Plt2L);
+ N1=size(Dmat,1)+1;
+ Dmat=[Dmat;Dt];
+ N2=size(Dmat,1);
+ Dind=[Dind;N1,N2];
+ end;
+ Nind=size(Dind,1);
+ Allres=[];
+ for Nobj=1:Mixlength(Obj2L)
+ Plt2=Mixop(Nobj,Obj2L);
+ PhL=Plt2(:,1:2);
+ ClipL=[];
+ for Ns=1:size(PhL,1)-1
+ P1=PhL(Ns:Ns+1,:);
+ for I=1:size(Dind,1)
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ P2=Tmp(:,1:2);
+ KC=IntersectcrvsPp(P1,P2,Eps);
+ if Mixlength(KC)>0
+ for J=1:Mixlength(KC)
+ P=Mixop(1,Mixop(J,KC));
+ Tmp=Mixop(2,Mixop(J,KC));
+ if Tmp<1+Eps & Ns==1 // 2010.05.09
+ continue;
+ end;
+ if Tmp>Numptcrv(P1)-Eps & Ns==size(PhL,1)-1
+ continue;
+ end; //
+ N1=Ns;
+ N2=Mixop(3,Mixop(J,KC));
+ Pa=Plt2(N1,1:2);
+ Za=Plt2(N1,3);
+ Pb=Plt2(N1+1,1:2);
+ Zb=Plt2(N1+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T1=norm(Pa-P)/norm(Pa-Pb);
+ Z1=(1-T1)*Za+T1*Zb;
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ Pa=Tmp(N2,1:2);
+ Za=Tmp(N2,3);
+ Pb=Tmp(N2+1,1:2);
+ Zb=Tmp(N2+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T2=norm(Pa-P)/norm(Pa-Pb);
+ Z2=(1-T2)*Za+T2*Zb;
+ if Z1<Z2-Eps2
+ if ClipL==[] // corrected from here
+ Tmp=1;
+ else
+ Tmp1=ClipL(:,1)-P(1);
+ Tmp2=ClipL(:,2)-P(2);
+ Tmp3=Tmp1.^2+Tmp2.^2; // 20140705
+ Tmp=min(Tmp3);
+ end; // upto here
+ if Tmp>Eps^2
+ Tmp1=P1(2,:)-P1(1,:);
+ Tmp2=Pb-Pa;
+ Tmp3=Naiseki(Tmp1,Tmp2);
+ Tmp3=Tmp3/norm(Tmp1)/norm(Tmp2);
+ Tmp=1-0.5*Tmp3^2;
+ ClipL=[ClipL;P,N1,T1,R0/Tmp];
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ Te=size(Plt2,1);
+ KukanL=[1.0,Te];
+ P1=PhL;
+ if size(ClipL,1)>0
+ for I=1:size(ClipL,1)
+ P=ClipL(I,1:2);
+ NN=ClipL(I,3);
+ T=NN+ClipL(I,4);
+ R=ClipL(I,5);
+ Flg=0;
+ for J=NN:-1:1
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T1=1;
+ else
+ T1=J; T2=T;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T2=T2-H;
+ else
+ T1=T1+H;
+ end;
+ end;
+ end;
+ Ku=[T1];
+ Flg=0;
+ for J=NN+1:Te
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end;
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T2=Te;
+ else
+ T1=T; T2=J;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T1=T1+H;
+ else
+ T2=T2-H;
+ end;
+ end;
+ end;
+ Ku=[Ku,T2];
+ if size(KukanL,2)==0 then
+ break;
+ end;
+ KukanL=Kukannozoku(Ku,KukanL);
+ end;
+ end;
+ Res=[];
+ for I=1:size(KukanL,1)
+ T1=KukanL(I,1); N1=Trunc(T1);
+ T2=KukanL(I,2); N2=Trunc(T2);
+ PtL=[];
+ if T1-N1<1-Eps
+ Tmp=PointonCurve(T1,P1);
+ PtL=MixS(Tmp);
+ end;
+ for J=N1+1:N2
+ Tmp=PointonCurve(J,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ if T2-N2>Eps
+ Tmp=PointonCurve(T2,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ Res=Mixadd(Res,Listplot(PtL));
+ end;
+ Allres=Mixjoin(Allres,Res);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.bin
new file mode 100644
index 00000000..0082bcd5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.sci
new file mode 100755
index 00000000..4838d658
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makeskeletonpersdata.sci
@@ -0,0 +1,188 @@
+// 08.08.14
+// 08.10.16
+// 09.05.12
+// 09.09.25
+// 10.05.09
+// 10.08.17
+// 14.07.05
+
+function Allres=Makeskeletonpersdata(Obj2L,Plt2L,R0,Eps2)
+ Eps=10.0^(-3);
+ Dmat=[];
+ Dind=[];
+ for I=1:Mixlength(Plt2L)
+ Dt=Mixop(I,Plt2L);
+ N1=size(Dmat,1)+1;
+ Dmat=[Dmat;Dt];
+ N2=size(Dmat,1);
+ Dind=[Dind;N1,N2];
+ end;
+ Nind=size(Dind,1);
+ Allres=[];
+ for Nobj=1:Mixlength(Obj2L)
+ Plt2=Mixop(Nobj,Obj2L);
+ PhL=Plt2(:,1:2);
+ ClipL=[];
+ for Ns=1:size(PhL,1)-1
+ P1=PhL(Ns:Ns+1,:);
+ for I=1:size(Dind,1)
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ P2=Tmp(:,1:2);
+ KC=IntersectcrvsPp(P1,P2,Eps);
+ if Mixlength(KC)>0
+ for J=1:Mixlength(KC)
+ P=Mixop(1,Mixop(J,KC));
+ Tmp=Mixop(2,Mixop(J,KC));
+ if Tmp<1+Eps & Ns==1 // 2010.05.09
+ continue;
+ end;
+ if Tmp>Numptcrv(P1)-Eps & Ns==size(PhL,1)-1
+ continue;
+ end; //
+ N1=Ns;
+ N2=Mixop(3,Mixop(J,KC));
+ Pa=Plt2(N1,1:2);
+ Za=Plt2(N1,3);
+ Pb=Plt2(N1+1,1:2);
+ Zb=Plt2(N1+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T1=norm(Pa-P)/norm(Pa-Pb);
+ Pka=Cancoordpers([Pa(1),Pa(2),Za]);
+ Pkb=Cancoordpers([Pb(1),Pb(2),Zb]);
+ if T1>1-Eps
+ Pk=Pkb;
+ else
+ Tmp1=Listplot([Pa,Pb]);
+ Tmp2=Spaceline([Pka,Pkb]);
+ Tmp=Invperspt(1+T1,Tmp1,Tmp2);
+ Pk=Mixop(1,Tmp);
+ end;
+ Z1=Zperspt(Pk);
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ Pa=Tmp(N2,1:2);
+ Za=Tmp(N2,3);
+ Pb=Tmp(N2+1,1:2);
+ Zb=Tmp(N2+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T2=norm(Pa-P)/norm(Pa-Pb);
+ Pka=Cancoordpers([Pa(1),Pa(2),Za]);
+ Pkb=Cancoordpers([Pb(1),Pb(2),Zb]);
+ if T2>1-Eps
+ Pk=Pkb;
+ else
+ Tmp1=Listplot([Pa,Pb]);
+ Tmp2=Spaceline([Pka,Pkb]);
+ Tmp=Invperspt(1+T2,Tmp1,Tmp2);
+ Pk=Mixop(1,Tmp);
+ end
+ Z2=Zperspt(Pk);
+ if Z1<Z2-Eps2
+ if ClipL==[] // corrected from here
+ Tmp=1;
+ else
+ Tmp1=ClipL(:,1)-P(1);
+ Tmp2=ClipL(:,2)-P(2);
+ Tmp3=Tmp1.^2+Tmp2.^2; // 20140705
+ Tmp=min(Tmp3);
+ end; // upto here
+ if Tmp>Eps^2
+ Tmp1=P1(2,:)-P1(1,:);
+ Tmp2=Pb-Pa;
+ Tmp3=Naiseki(Tmp1,Tmp2);
+ Tmp3=Tmp3/norm(Tmp1)/norm(Tmp2);
+ Tmp=1-0.5*Tmp3^2;
+ ClipL=[ClipL;P,N1,T1,R0/Tmp];
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ Te=size(Plt2,1);
+ KukanL=[1.0,Te];
+ P1=PhL;
+ if size(ClipL,1)>0
+ for I=1:size(ClipL,1)
+ P=ClipL(I,1:2);
+ NN=ClipL(I,3);
+ T=NN+ClipL(I,4);
+ R= ClipL(I,5); // 10.08.17
+ Flg=0;
+ for J=NN:-1:1
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T1=1;
+ else
+ T1=J; T2=T;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T2=T2-H;
+ else
+ T1=T1+H;
+ end;
+ end;
+ end;
+ Ku=[T1];
+ Flg=0;
+ for J=NN+1:Te
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end;
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T2=Te;
+ else
+ T1=T; T2=J;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T1=T1+H;
+ else
+ T2=T2-H;
+ end;
+ end;
+ end;
+ Ku=[Ku,T2];
+ KukanL=Kukannozoku(Ku,KukanL);
+ end;
+ end;
+ Res=[];
+ for I=1:size(KukanL,1)
+ T1=KukanL(I,1); N1=Trunc(T1);
+ T2=KukanL(I,2); N2=Trunc(T2);
+ PtL=[];
+ if T1-N1<1-Eps
+ Tmp=PointonCurve(T1,P1);
+ PtL=MixS(Tmp);
+ end;
+ for J=N1+1:N2
+ Tmp=PointonCurve(J,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ if T2-N2>Eps
+ Tmp=PointonCurve(T2,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ Res=Mixadd(Res,Listplot(PtL));
+ end;
+ Allres=Mixjoin(Allres,Res);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.bin
new file mode 100644
index 00000000..37e149ff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.sci
new file mode 100755
index 00000000..dc917f30
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makevaltable.sci
@@ -0,0 +1,79 @@
+// 08.09.09
+// 08.10.08
+// 08.12.06
+// 08.12.30
+// 09.06.03
+// 13.10.19 ( __ added to variables )
+
+function [Zval__,Xval__,Yval__]=Makevaltable(MS__)
+ Eps__=10^(-6);
+ Nargs__=Mixlength(MS__);
+ Fstr__=Mixop(1,MS__);
+ Tmp__=Mixop(2,MS__);
+ Tmp1__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,Tmp1__-1);
+ Xrange__=evstr(part(Tmp__,Tmp1__+1:length(Tmp__)));
+ Tmp__=Mixop(3,MS__);
+ Tmp1__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,Tmp1__-1);
+ Yrange__=evstr(part(Tmp__,Tmp1__+1:length(Tmp__)));
+ Tmp__=strsubst(Fstr__,Xname__,'x');
+ Fstr__=strsubst(Tmp__,Yname__,'y');
+ Tmp__=mtlb_findstr(Fstr__,Xname__);
+ if length(Tmp__)==0
+ Fstr__=Fstr__+'+0*x';
+ end;
+ Mdv__=50;
+ Ndv__=50;
+ if Nargs__>=4
+ Tmp__=Mixop(4,MS__);
+ if length(Tmp__)>1
+ Mdv__=Tmp__(1,1);
+ Ndv__=Tmp__(1,2);
+ else
+ Mdv__=Tmp__
+ if Nargs__==4
+ Ndv__=Mdv__
+ else
+ Tmp1__=Mixop(5,MS__);
+ if type(Tmp1__)==1 & length(Tmp1__)==1
+ Ndv__=Tmp1__;
+ else
+ Ndv__=Mdv__;
+ end
+ end
+ end
+ end
+ X1__=Xrange__(1); X2__=Xrange__(2);
+ Y1__=Yrange__(1); Y2__=Yrange__(2);
+ Dx__=(X2__-X1__)/(Mdv__-1);
+ Dy__=(Y2__-Y1__)/(Ndv__-1);
+ Xval__=[];
+ Tmp__=X1__;
+ while Tmp__<X2__+Eps__
+ Xval__=[Xval__,Tmp__];
+ Tmp__=Tmp__+Dx__;
+ end;
+ Yval__=[];
+ Tmp__=Y1__;
+ while Tmp__<Y2__+Eps__
+ Yval__=[Yval__,Tmp__];
+ Tmp__=Tmp__+Dy__;
+ end;
+ I__=1;
+// x=Xval;
+// for y=Yval
+// Tmp=evstr(Fstr);
+// Zval(I,:)=Tmp;
+// I=I+1;
+// end;
+ for y=Yval__
+ J__=1;
+ for x=Xval__
+ Zval__(I__,J__)=evstr(Fstr__);
+ J__=J__+1;
+ end;
+ I__=I__+1;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.bin
new file mode 100644
index 00000000..82acb406
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.sci
new file mode 100755
index 00000000..a16a5a4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MakeveLfaceL.sci
@@ -0,0 +1,68 @@
+// 08.08.22
+// 09.10.25
+// 09.10.26
+// 09.10.27
+// 09.10.29
+
+function Out=MakeveLfaceL(VfL)
+ // Out format
+ // VeL Edge, Face num(as numlist), VeL num
+ // FL Face (Vertexs)
+ Eps=10^(-4);
+ Tmp=VfL($);
+ Tmp1=Tmp(1);
+ if type(Tmp1)==1
+ FvL=list(VfL);
+ else
+ FvL=VfL;
+ end;
+ EL=list(); FL=list();
+ for Nn=1:length(FvL)
+ Tmp=FvL(Nn);
+ VL=Tmp(1);
+ if length(VL)>0
+ FnL=Tmp(2);
+ FaceL=list();
+ for I=1:length(FnL)
+ Tmp1=FnL(I);
+ PtL=list();
+ for J=1:length(Tmp1)
+ Tmp2=Tmp1(J);
+ PtL(J)=VL(Tmp2);
+ end;
+ FaceL(I)=PtL;
+ end;
+ else
+ FaceL=list(Tmp(2));
+ end;
+ for I=1:length(FaceL)
+ Face=FaceL(I);
+ Face($+1)=Face(1);
+ FL($+1)=Face;
+ for J=1:length(Face)-1
+ Edge=list(Face(J),Face(J+1));
+ Flg=0;
+ for K=1:length(EL)
+ Tmp=EL(K);
+ Tmp1=Tmp(1);
+ Tmp2=norm(Edge(1)-Tmp1(1))+norm(Edge(2)-Tmp1(2));
+ Tmp3=norm(Edge(1)-Tmp1(2))+norm(Edge(2)-Tmp1(1));
+ if Tmp2<Eps | Tmp3<Eps
+ Tmp=EL(K);
+ Tmp1=Tmp(1);
+ Tmp2=[Tmp(2),length(FL)];
+ EL(K)=list(Tmp1,Tmp2,K);
+ Flg=1;
+ break;
+ end;
+ end;
+ if Flg==0
+ Ntmp=length(EL);
+ EL(Ntmp+1)=list(Edge,[length(FL)],Ntmp+1);
+ end;
+ end;
+ end;
+ end;
+ Out=list(EL,FL);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.bin
new file mode 100644
index 00000000..7c309bf0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.sci
new file mode 100644
index 00000000..fb8aa27b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Makexybdy.sci
@@ -0,0 +1,111 @@
+// 08.09.13
+// 08.09.16
+// 08.10.11
+// 08.10.27
+// 14.07.07 debug ( Kitahara )
+
+function EhL=Makexybdy(Fd,Np)
+ Eps0=10^(-4);
+ FdL=Fullformfunc(Fd);
+ Tmp1=Mixop(2,FdL);
+ Tmp2=Mixop(3,FdL);
+ Xystr=[Tmp1,Tmp2];
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ DrwS=Mixop(7,FdL);
+ Cflg=0;
+ EhL=[];
+ Tmp=mtlb_findstr(DrwS,'e');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Uname,'('+string(Umax)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'n');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Vname,'('+string(Vmax)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if Cflg~=0 // 140707 Kitahara
+ Tmp1=Mixop(Mixlength(EhL),EhL);
+ Tmp=Joincrvs(Tmp1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ Tmp1=Mixsub(1:Mixlength(EhL)-1,EhL);
+ EhL=Mixadd(Tmp1,Tmp);
+ else
+ Cflg=0;
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ end;
+ Tmp=mtlb_findstr(DrwS,'w');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Uname,'('+string(Umin)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if Cflg~=0 //if Cflg==0
+ Tmp1=Mixop(Mixlength(EhL),EhL);
+ Tmp=Joincrvs(Tmp1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ Tmp1=Mixsub(1:Mixlength(EhL)-1,EhL);
+ EhL=Mixadd(Tmp1,Tmp);
+ else
+ Cflg=0;
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ end;
+ Tmp=mtlb_findstr(DrwS,'s');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Vname,'('+string(Vmin)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if Cflg~=0 //if Cflg==0
+ Tmp1=Mixop(Mixlength(EhL),EhL);
+ Tmp=Joincrvs(Tmp1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ Tmp1=Mixsub(1:Mixlength(EhL)-1,EhL);
+ EhL=Mixadd(Tmp1,Tmp);
+ else
+ Cflg=0;
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.bin
new file mode 100644
index 00000000..86b2954f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.sci
new file mode 100755
index 00000000..11b02c63
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mawarikomi.sci
@@ -0,0 +1,39 @@
+function Mawarikomi(varargin)
+ FL='default';
+ haba='10cm';
+ Nargs=length(varargin);
+ if Nargs>0
+ haba=varargin(1);
+ if Nargs>=2
+ FL=varargin(2);
+ if FL==''
+ FL='tmp.tex'
+ end
+ end
+ end
+ StrM=[
+ '\begin{mawarikomi}%',...
+ '%<1>[5](0,0)%',...
+ '{'+haba+'}{%',...
+ '',...
+ '}',...
+ '',...
+ '',...
+ '\end{mawarikomi}'...
+ ];
+ if FL~='default'
+ Fid=mopen(FL,'w');
+ mprintf('%s\n\n','Writing to '+FL);
+ end;
+ for I=1:size(StrM,2)
+ Str=StrM(I);
+ mprintf('%s\n',Str);
+ if FL~='default'
+ mfprintf(Fid,'%s\n',Str);
+ end
+ end
+ if FL~='default'
+ mclose(Fid);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.bin
new file mode 100644
index 00000000..78d328fc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.sci
new file mode 100755
index 00000000..65f543ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MeetWindow.sci
@@ -0,0 +1,91 @@
+//
+// 08.05.30 debugged
+// 08.08.14 (horner)
+// 09.12.31 (gsort)
+// 15.10.23 ( horner not used )
+// 16.12.29 (msprintf("%3.10f",..) used )
+
+function R=MeetWindow(PA,PB)
+ global XMIN XMAX YMIN YMAX
+ if InWindow(PA)=='i' & InWindow(PB)=='i'
+ R=[PA;PB];
+ return
+ end;
+ Eps=10.0^(-6);
+ t=poly(0,'T');
+ PT="(1-(t))*PA+(t)*PB";
+ Txm=-1; TxM=-1; Tym=-1; TyM=-1;
+ if PA(1)~=PB(1)
+ Txm=(XMIN-PA(1))/(PB(1)-PA(1));
+ TxM=(XMAX-PA(1))/(PB(1)-PA(1));
+ end
+ if PA(2)~=PB(2)
+ Tym=(YMIN-PA(2))/(PB(2)-PA(2));
+ TyM=(YMAX-PA(2))/(PB(2)-PA(2));
+ end;
+// Tmp=horner(PT(2),Txm);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",Txm));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(2);
+ if Tmp<YMIN-Eps | Tmp>YMAX+Eps
+ Txm=-1;
+ end
+// Tmp=horner(PT(2),TxM);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",TxM));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(2);
+ if Tmp<YMIN-Eps | Tmp>YMAX+Eps
+ TxM=-1
+ end
+// Tmp=horner(PT(1),Tym);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",Tym));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(1);
+ if Tmp<XMIN-Eps | Tmp>XMAX+Eps
+ Tym=-1
+ end
+// Tmp=horner(PT(1),TyM);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",TyM));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(1);
+ if Tmp<XMIN-Eps | Tmp>XMAX+Eps
+ TyM=-1
+ end
+ Tmp=gsort([Txm,TxM,Tym,TyM]);
+ Tans=Tmp(length(Tmp):-1:1);
+ Tmp=[];
+ for I=1:length(Tans)
+ Tmp1=Tans(I);
+ if Tmp1>-Eps & Tmp1<1+Eps
+ if length(Tmp)==0
+ Tmp=[Tmp1];
+ elseif abs(Tmp(length(Tmp))-Tmp1)>Eps
+ Tmp=[Tmp,Tmp1]
+ end
+ end
+ end
+ Tans=Tmp;
+ if length(Tans)==0
+ R=[];
+ return;
+ end
+ if length(Tans)==1
+// Ten1=horner(PT,Tans(1));
+ Tmp1=strsubst(PT,"t",string(Tans(1)));
+ Ten1=evstr(Tmp1)
+ if InWindow(PA)=='i'
+ R=[PA;Ten1];
+ return;
+ else
+ R=[Ten1;PB];
+ return
+ end
+ end
+// Ten1=horner(PT,Tans(1));
+ Tmp1=strsubst(PT,"t",string(Tans(1)));
+ Ten1=evstr(Tmp1)
+// Ten2=horner(PT,Tans(2));
+ Tmp1=strsubst(PT,"t",string(Tans(2)));
+ Ten2=evstr(Tmp1)
+ R=[Ten1;Ten2];
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.bin
new file mode 100644
index 00000000..ebe3ead9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.sci
new file mode 100755
index 00000000..65ba1166
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Meetpoints.sci
@@ -0,0 +1,169 @@
+// 08.10.24
+// 08.10.25
+// 08.10.26
+// 09.12.31 (gsort)
+// 13.10.22 ( __ added to varibles )
+// 13.12.02 debugged
+
+function PtL__=Meetpoints(PtA__,PtB__,Fd__,Uveq__,Np__,Eps__)
+ Eps__0=10^(-4);
+ Vec__=PtB__-PtA__;
+ Out__=[];
+ PtL__=[];
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Mixop(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ Fd__L=Fullformfunc(Fd__);
+ Xf__=Mixop(2,Fd__L);
+ Yf__=Mixop(3,Fd__L);
+ Zf__=Mixop(4,Fd__L);
+ Tmp__=Mixop(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); UMax__=Urg__(2);
+ Vmin__=Vrg__(1); VMax__=Vrg__(2);
+ V1__='('+string(Vec__(1))+')';
+ V2__='('+string(Vec__(2))+')';
+ V3__='('+string(Vec__(3))+')';
+ Xstr__='(('+Xf__+')-('+string(PtA__(1))+'))';
+ Ystr__='(('+Yf__+')-('+string(PtA__(2))+'))';
+ Zstr__='(('+Zf__+')-('+string(PtA__(3))+'))';
+ Urg__str=Mixop(5,Fd__L);
+ Vrg__str=Mixop(6,Fd__L);
+ if abs(Vec__(2))>Eps__0 | abs(Vec__(1))>Eps__0
+ Eq__=V2__+'*'+Xstr__+'-'+V1__+'*'+Ystr__;
+ else
+ Eq__=Xstr__;
+ end;
+ MS__=Mix(Eq__,Urg__str,Vrg__str,Np__);
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ for J=1:length(Yval__)-1
+ for I=1:length(Xval__)-1
+ a1__=Xval__(I);b1__=Yval__(J);c1__=Zval__(J,I);
+ a2__=Xval__(I+1);b2__=Yval__(J);c2__=Zval__(J,I+1);
+ a3__=Xval__(I+1);b3__=Yval__(J+1);c3__=Zval__(J+1,I+1);
+ a4__=Xval__(I);b4__=Yval__(J+1);c4__=Zval__(J+1,I);
+ PL__=[a1__,b1__;a2__,b2__;a3__,b3__;a4__,b4__;a1__,b1__];
+ VL__=[c1__,c2__,c3__,c4__,c1__];
+ QL__=[];
+ for K__=1:4
+ P1__=PL__(K__,:); P2__=PL__(K__+1,:);
+ M1__=VL__(K__); M2__=VL__(K__+1);
+ if M1__>=Eps__0 & M2__>=Eps__0
+ continue;
+ end;
+ if M1__<=-Eps__0 & M2__<=-Eps__0
+ continue;
+ end;
+ if abs(M1__)<Eps__0
+ Tmp__=P1__;
+ elseif abs(M2__)<Eps__0
+ continue;
+ else
+ Tmp__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ end;
+ QL__=[QL__;Tmp__];
+ end;
+ if size(QL__,1)==2
+ Puv__1=QL__(1,:); Puv__2=QL__(2,:);
+ Tmp__1=Puv__1(1);
+ Tmp__2=Puv__1(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__); // 13.12.02
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P1__=[Xv__,Yv__,Zv__];
+ Tmp__1=Puv__2(1);
+ Tmp__2=Puv__2(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P2__=[Xv__,Yv__,Zv__];
+ V1__=Vec__(1); V2__=Vec__(2); V3__=Vec__(3);
+ if abs(V1__)>Eps__0
+ M1__=PtA__(3)+V3__/V1__*(P1__(1)-PtA__(1))-P1__(3);
+ M2__=PtA__(3)+V3__/V1__*(P2__(1)-PtA__(1))-P2__(3);
+ elseif abs(V2__)>Eps__0
+ M1__=PtA__(3)+V3__/V2__*(P1__(2)-PtA__(2))-P1__(3);
+ M2__=PtA__(3)+V3__/V2__*(P2__(2)-PtA__(2))-P2__(3);
+ else
+ M1__=PtA__(2)-P1__(2);
+ M2__=PtA__(2)-P2__(2);
+ end;
+ if M1__*M2__>=0
+ if (M1__>Eps__0 & M2__>Eps__0) | (M1__<-Eps__0 & M2__<-Eps__0)
+ continue;
+ end;
+ if abs(M1__)<=Eps__0
+ Pt__=P1__; Ptuv__=Puv__1;
+ else
+ Pt__=P2__; Ptuv__=Puv__2;
+ end;
+ else
+ Pt__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ Ptuv__=1/(M1__-M2__)*(-M2__*Puv__1+M1__*Puv__2);
+ end;
+ if type(Uveq__)==10
+ Tmp__1='('+string(Ptuv__(1))+')';
+ Tmp__2='('+string(Ptuv__(2))+')';
+ Tmp__=strsubst(Uveq__,Uname__,Tmp__1);
+ Tmp__=strsubst(Tmp__,Vname__,Tmp__2);
+ Tmp__=evstr(Tmp__);
+ if Tmp__<-Eps__0
+ continue;
+ end;
+ end;
+ Tmp__1=Naiseki(Pt__-PtA__,Vec__);
+ Tmp__1=Tmp__1/norm(Vec__)^2;
+ if Tmp__1>-Eps__0 & Tmp__1<1+Eps__0
+ Out__=[Out__,Tmp__1];
+ end;
+ end;
+ end;
+ end;
+ if length(Out__)>0
+ Out__=gsort(Out__);
+ Out__=Out__(length(Out__):-1:1);
+ Tmp__=[Out__(1)];
+ for I__=2:length(Out__)
+ Tmp__1=(Out__(I__)-Tmp__(length(Tmp__)))*Vec__;
+ Tmp__1=norm(Tmp__1);
+ if Tmp__1>Eps__
+ Tmp__=[Tmp__,Out__(I__)];
+ end;
+ end;
+ Out__=Tmp__;
+ for I__=1:length(Out__)
+ Tmp__=PtA__+Out__(I__)*Vec__;
+ PtL__=Mixadd(PtL__,Tmp__);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.bin
new file mode 100644
index 00000000..711c4fc4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.sci
new file mode 100755
index 00000000..79826f90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Member.sci
@@ -0,0 +1,21 @@
+// 08.05.18
+
+// Structure changed
+// 09.10.11
+
+function TF=Member(A,L)
+ if Mixtype(L)>1
+ N=Mixlength(L);
+ else
+ N=length(L);
+ end
+ for I=1:N
+ Tmp=Op(I,L);
+ if A==Tmp
+ TF=%t
+ return
+ end
+ end
+ TF=%f
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.bin
new file mode 100644
index 00000000..9cb3477e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.sci
new file mode 100755
index 00000000..de8d4b0d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi.sci
@@ -0,0 +1,206 @@
+// 08.08.21
+// 09.10.24
+// 09.10.26
+
+function Menkakusi(Face,Nf,Ptype)
+ global THETA PHI EyePoint FocusPoint VELNO VELHI;
+ Eps0=10^(-6);
+ Eps=10^(-4);
+ Tmp1=Face(1)-Face(2);
+ Tmp2=Face(3)-Face(2);
+ if norm(Tmp1)<Eps | norm(Tmp2)<Eps
+ return;
+ end;
+ Vec=1/norm(Tmp1)/norm(Tmp2)*Crossprod(Tmp1,Tmp2);
+ if norm(Vec)<Eps
+ return;
+ end;
+ if Ptype==-1
+ W=EyePoint;
+ Tmp=Dotprod(Vec,W-Face(1));
+ else
+ W=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ W=100*W;
+ Tmp=Dotprod(Vec,W-Face(1));
+ end;
+ if abs(Tmp)<Eps
+ return;
+ end;
+ if Tmp<-Eps
+ Vec=-Vec;
+ end;
+ if Ptype==-1
+ G1=Projpers(Spaceline(Face));
+ else
+ G1=Projpara(Spaceline(Face))
+ end;
+ VL=list();
+ for I=1:Numptcrv(G1)
+ VL(I)=Ptcrv(I,G1);
+ end;
+ Out1L=list();
+ Out2L=VELHI;
+ for N=1:length(VELNO)
+ Tmp=VELNO(N);
+ Edge=Tmp(1);
+ Ne=Tmp(2);
+ Nenm=Tmp(3);
+ if Member(Nf,Ne)
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ continue;
+ end;
+ if Ptype==-1
+ P=Perspt(Edge(1));
+ Q=Perspt(Edge(2));
+ else
+ P=Parapt(Edge(1));
+ Q=Parapt(Edge(2));
+ end;
+ if norm(P-Q)<Eps
+ continue;
+ end;
+ Tmp=Kyoukai(Mix(G1));
+ Tmp1=Naigai(P,Tmp);
+ Ng1=Tmp1(1);
+ Tmp1=Naigai(Q,Tmp);
+ Ng2=Tmp1(1);
+ KL=IntersectcrvsPp(Listplot([P,Q]),G1);
+ if Mixlength(KL)==0
+ if Ng1==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=(Edge(1)+Edge(2))*0.5-Face(1);
+ Tmp=Dotprod(Tmp1,Vec)/norm(Tmp1);
+ if Tmp>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out2L($+1)=list(Edge,Ne,Nenm);
+ end;
+ end;
+ continue;
+ end;
+ Flg=0;
+ for I=1:Mixlength(VL)-1
+ Tmp=VL(I+1)-VL(I);
+ if norm(Tmp)<Eps continue; end;
+ Tmp1=Crossprod(Tmp,Q-P)/norm(Tmp)/norm(Q-P);
+ if abs(Tmp1)<Eps
+ Flg=1;
+ break;
+ end;
+ end;
+ if Flg==1
+ Tmp=Mixop(I,VL)-P;
+ if norm(Tmp)<Eps
+ Tmp1=0;
+ else
+ Tmp1=Crossprod(Tmp,Q-P)/norm(Tmp)/norm(Q-P);
+ end;
+ if abs(Tmp1)<Eps then
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ continue;
+ end;
+ end;
+ if Mixlength(KL)==1
+ Tmp=KL(1);
+ Tmp=Tmp(2)-1;
+ if Tmp<Eps
+ if Ng2==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=Edge(2)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out2L($+1)=list(Edge,Ne,Nenm);
+ end;
+ end;
+ continue;
+ end;
+ if Tmp>1-Eps
+ if Ng1==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=Edge(1)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out2L($+1)=list(Edge,Ne,Nenm);
+ end;
+ end;
+ continue;
+ end;
+ if Ng1==0 & Ng2==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=KL(1);
+ Tmp1=Tmp1(1);
+ if Ptype==-1
+ Tmp=Invperspt(Tmp1,Spaceline(Edge));
+ else
+ Tmp=Invparapt(Tmp1,Spaceline(Edge))
+ end;
+ Ak=Tmp(1);
+ if Ng1==1
+ Tmp1=Edge(1)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp2=list(Ak,Edge(2));
+ Out1L($+1)=list(Tmp2,Ne,Nenm);
+ Tmp2=list(Edge(1),Ak);
+ Out2L($+1)=list(Tmp2,Ne,Nenm);
+ end;
+ end;
+ if Ng2==1
+ Tmp1=Edge(2)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp2=list(Edge(1),Ak);
+ Out1L($+1)=list(Tmp2,Ne,Nenm);
+ Tmp2=list(Ak,Edge(2));
+ Out2L($+1)=list(Tmp2,Ne,Nenm);
+ end;
+ end;
+ end;
+ end;
+ if Mixlength(KL)==2
+ Tmp1=KL(1);
+ Tmp1=Tmp1(2);
+ Tmp2=KL(2);
+ Tmp2=Tmp2(2);
+ if Tmp1>Tmp2
+ KL=list(KL(2),KL(1));
+ end;
+ Tmp=Spaceline(Edge);
+ Tmp1=KL(1);
+ Tmp1=Tmp1(1);
+ Tmp2=KL(2);
+ Tmp2=Tmp2(1);
+ if Ptype==-1
+ Ak=Mixop(1,Invperspt(Tmp1,Tmp));
+ Bk=Mixop(1,Invperspt(Tmp2,Tmp))
+ else
+ Ak=Mixop(1,Invparapt(Tmp1,Tmp));
+ Bk=Mixop(1,Invparapt(Tmp2,Tmp))
+ end;
+ Tmp1=(Ak+Bk)*0.5-Face(1);
+ Tmp=Dotprod(Tmp1,Vec);
+ if Tmp>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out1L($+1)=list(list(Edge(1),Ak),Ne,Nenm);
+ Out1L($+1)=list(list(Bk,Edge(2)),Ne,Nenm);
+ Out2L($+1)=list(list(Ak,Bk),Ne,Nenm);
+ end;
+ end;
+ end;
+ VELNO=Out1L;
+ VELHI=Out2L;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.bin
new file mode 100644
index 00000000..e8361324
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.sci
new file mode 100755
index 00000000..43eab74b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Menkakusi2.sci
@@ -0,0 +1,186 @@
+// 09.10.29
+// 09.11.15
+// 10.08.17 debug (line 66)
+
+function Menkakusi2(Face,Nf,Ptype)
+ global THETA PHI EyePoint FocusPoint VELNO VELHI;
+ Eps0=10^(-6);
+ Eps=10^(-4);
+ Tmp1=Face(1)-Face(2);
+ Tmp2=Face(3)-Face(2);
+ if norm(Tmp1)<Eps | norm(Tmp2)<Eps
+ return;
+ end;
+ Vec=1/norm(Tmp1)/norm(Tmp2)*Crossprod(Tmp1,Tmp2);
+ if norm(Vec)<Eps
+ return;
+ end;
+ if Ptype==-1
+ W=EyePoint;
+ Tmp=Dotprod(Vec,W-Face(1));
+ else
+ W=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ W=100*W;
+ Tmp=Dotprod(Vec,W-Face(1));
+ end;
+ if abs(Tmp)<Eps
+ return;
+ end;
+ if Tmp<-Eps
+ Vec=-Vec;
+ end;
+ if Ptype==-1
+ G1=Projpers(Spaceline(Face));
+ else
+ G1=Projpara(Spaceline(Face))
+ end;
+ VL=list();
+ for I=1:Numptcrv(G1)
+ VL(I)=Ptcrv(I,G1);
+ end;
+ Out1L=list();
+ Out2L=VELHI;
+ for N=1:length(VELNO)
+ Out1=list();
+ Out2=list();
+ Tmp=VELNO(N);
+ Edge=Tmp(1);
+ Ne=Tmp(2);
+ NNe=Tmp(3);
+ if Member(Nf,Ne)
+ Out1L($+1)=list(Edge,Ne,NNe);
+ continue;
+ end;
+ if Ptype==-1
+ PtA=Perspt(Edge(1));
+ PtB=Perspt(Edge(2));
+ else
+ PtA=Parapt(Edge(1));
+ PtB=Parapt(Edge(2));
+ end;
+ if norm(PtA-PtB)<Eps continue; end;
+ Bdy=list(G1);
+ V=PtB-PtA;
+ TenL=KoutenList(PtA,V,Bdy);
+ Nten=length(TenL);
+ if Nten==0 // 10.08.17
+ Out1L($+1)=list(Edge,Ne,NNe);
+ continue;
+ end;
+ Te=0;
+ Pe3=Edge(1);
+ if Ptype==-1
+ Tmp1=Perspt(Pe3);
+ Tmp=Invperspt(Tmp1,Spaceline(Face));
+ else
+ Tmp1=Parapt(Pe3);
+ Tmp=Invparapt(Tmp1,Spaceline(Face));
+ end;
+ Qe3=Tmp(1);
+ Flg=0;
+ for I=1:Nten
+ TenP=TenL(I);
+ Ts=TenP(1);
+ P=TenP(2);
+ if Ts<-Eps
+ continue;
+ end;
+ Eline=Spaceline(Edge);
+ if Ptype==-1
+ Tmp=Invperspt(P,Eline);
+ Tmp1=Invperspt(P,Spaceline(Face));
+ else
+ Tmp=Invparapt(P,Eline)
+ Tmp1=Invparapt(P,Spaceline(Face));
+ end;
+ P3=Tmp(1); Q3=Tmp1(1);
+ if Ts>1-Eps // P3, Q3 are necessary
+ Flg=I;
+ break;
+ end;
+ if abs(Te-Ts)>Eps0 //
+ if modulo(I,2)==1
+ Out1($+1)=list(Pe3,P3);
+ else
+ if Qe3==[]
+ Tmp=Op(2,TenL(I-1));
+ if Ptype==-1
+ Tmp1=Invperspt(Tmp,Spaceline(Face));
+ else
+ Tmp1=Invparapt(Tmp,Spaceline(Face));
+ end;
+ Qe3=Tmp1(1);
+ end;
+ PM=0.5*(Pe3+P3); QM=0.5*(Qe3+Q3);
+ if Ptype==-1
+ Z1=Zperspt(PM); Z2=Zperspt(QM);
+ else
+ Z1=Zparapt(PM); Z2=Zparapt(QM);
+ end;
+ if Z1>Z2
+ Out1($+1)=list(Pe3,P3);
+ else
+ Out2($+1)=list(Pe3,P3);
+ end;
+ end;
+ end;
+ Te=Ts; Pe3=P3; Qe3=Q3;
+ end;
+ if Flg==0
+ if norm(Pe3-Edge(2))>Eps0
+ Out1($+1)=list(Pe3,Edge(2));
+ end;
+ else
+ if modulo(Flg,2)==1
+ Out1($+1)=list(Pe3,Edge(2));
+ else
+ PM=0.5*(Pe3+P3); QM=0.5*(Qe3+Q3);
+ if Ptype==-1
+ Z1=Zperspt(PM); Z2=Zperspt(QM);
+ else
+ Z1=Zparapt(PM); Z2=Zparapt(QM);
+ end;
+ if Z1>Z2
+ Out1($+1)=list(Pe3,Edge(2));
+ else
+ Out2($+1)=list(Pe3,Edge(2));
+ end;
+ end;
+ end;
+ for I=1:length(Out1)
+ Tmp=Out1(I);
+ if I==1
+ SeL=Tmp;
+ else
+ if norm(SeL(2)-Tmp(1))<Eps0
+ SeL(2)=Tmp(2);
+ else
+ Out1L($+1)=list(SeL,Ne,NNe);
+ SeL=Tmp;
+ end;
+ end;
+ end;
+ if length(Out1)>0
+ Out1L($+1)=list(SeL,Ne,NNe);
+ end;
+ for I=1:length(Out2)
+ Tmp=Out2(I);
+ if I==1
+ SeL=Tmp;
+ else
+ if norm(SeL(2)-Tmp(1))<Eps0
+ SeL(2)=Tmp(2);
+ else
+ Out2L($+1)=list(SeL,Ne,NNe);
+ SeL=Tmp;
+ end;
+ end;
+ end;
+ if length(Out2)>0
+ Out2L($+1)=list(SeL,Ne,NNe);
+ end;
+ end;
+ VELNO=Out1L;
+ VELHI=Out2L;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.bin
new file mode 100644
index 00000000..acc02ec0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.sci
new file mode 100755
index 00000000..4f06c437
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mix.sci
@@ -0,0 +1,15 @@
+// 08.05.20
+// 08.08.08
+
+// Structure changed
+// 09.10.11
+
+function M=Mix(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Da=varargin(I);
+ M(I)=Da;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.bin
new file mode 100644
index 00000000..50f6189c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.sci
new file mode 100755
index 00000000..daf5a2d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixL.sci
@@ -0,0 +1,14 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+
+function M=MixL(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Da=varargin(I);
+ M(I)=Da;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.bin
new file mode 100644
index 00000000..2372bb1f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.sci
new file mode 100755
index 00000000..623af493
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/MixS.sci
@@ -0,0 +1,15 @@
+// 08.05.19
+
+//Structure Changed
+
+// 09.10.11
+
+function M=MixS(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Da=varargin(I);
+ M(I)=Da;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.bin
new file mode 100644
index 00000000..0dbd5427
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.sci
new file mode 100755
index 00000000..8d45fea1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixadd.sci
@@ -0,0 +1,23 @@
+// 05.14 Data Structure
+// 05.16 List of MixList
+// 05.19 use:MixS, MixL, Mixtype
+// 08.08.17
+
+// Structure changed
+// 09.10.11
+
+function M=Mixadd(varargin)
+ Nargs=length(varargin);
+ M=list();
+ Tmp=varargin(1);
+ if length(Tmp)==0
+ M(1)=varargin(2);
+ else
+ M=Tmp;
+ M($+1)=varargin(2);
+ end;
+ for I=3:Nargs
+ M($+1)=varargin(I);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.bin
new file mode 100644
index 00000000..45325b78
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.sci
new file mode 100755
index 00000000..2fed1197
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixdisp.sci
@@ -0,0 +1,14 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+// 10.01.02
+
+function Mixdisp(L)
+ if Mixtype(L)==1
+ disp(L)
+ return;
+ end;
+ Str=Makeliststr(L);
+ disp(Str)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.bin
new file mode 100644
index 00000000..6ed0a2a6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.sci
new file mode 100755
index 00000000..d6e49c14
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixjoin.sci
@@ -0,0 +1,29 @@
+// 08.05.18
+// 08.05.19 Changed
+// 08.08.15
+
+// Structure changed
+// 09.10.11
+
+function M=Mixjoin(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if length(Tmp)==0
+ continue;
+ end;
+ if Mixtype(Tmp)==1
+ Tmp=list(Tmp);
+ end;
+ if length(M)==0
+ M=Tmp;
+ else
+ M=lstcat(M,Tmp);
+ end;
+ end;
+ if length(M)==0
+ M=[];
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.bin
new file mode 100644
index 00000000..b601884d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.sci
new file mode 100755
index 00000000..6fd31749
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixlength.sci
@@ -0,0 +1,18 @@
+// 08.05.14 Data Structure
+// 08.05.23 Debugged
+
+// Structure changed
+// 09.10.11
+
+function Out=Mixlength(PL)
+ if PL==[]
+ Out=0;
+ return
+ end
+ if Mixtype(PL)==1
+ Out=size(PL,1);
+ else
+ Out=length(PL);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.bin
new file mode 100644
index 00000000..c607a109
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.sci
new file mode 100755
index 00000000..7f05a2ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixmake.sci
@@ -0,0 +1,14 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+
+function PL=Mixmake(varargin)
+ PL=list();
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ PL=Mixadd(PL,Tmp);
+ end
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.bin
new file mode 100644
index 00000000..9aa1f9f1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.sci
new file mode 100755
index 00000000..10c846dc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixop.sci
@@ -0,0 +1,22 @@
+// 08.05.14 Data Structure
+// 08.04.15 List ex N=1:3
+// 08.05.16 List of MixL
+// 08.05.18 Debugged
+// 08.05.19 Changed
+// 08.08.17
+
+// Structure changed
+// 09.10.11
+
+function D=Mixop(N,PL)
+ D=[];
+ if Mixtype(PL)==1
+ D=PL;
+ return;
+ end;
+ if type(N)~=1 | length(N)>1 | N>Mixlength(PL)
+ return
+ end;
+ D=PL(N);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.bin
new file mode 100644
index 00000000..e2b2ba6a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.sci
new file mode 100755
index 00000000..e3e281f3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixsub.sci
@@ -0,0 +1,18 @@
+// 08.05.19
+// 08.05.20 debugged
+// 08.06.02
+
+// Structure changed
+// 09.10.11
+
+function M=Mixsub(Rg,PL)
+ M=list();
+ N=Mixlength(PL);
+ for I=Rg
+ if I>N
+ return;
+ end;
+ M($+1)=PL(I);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.bin
new file mode 100644
index 00000000..4d786a5d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.sci
new file mode 100755
index 00000000..b336c763
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Mixtype.sci
@@ -0,0 +1,19 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+
+function T=Mixtype(D)
+ if type(D)~=15
+ T=1;
+ return;
+ end;
+ for I=1:length(D)
+ if type(D(I))==15
+ T=3;
+ return;
+ end;
+ end;
+ T=2;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.bin
new file mode 100644
index 00000000..aa1e8c72
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.sci
new file mode 100755
index 00000000..8a4f0557
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naigai.sci
@@ -0,0 +1,18 @@
+// 08.05.18
+// 08.05.20
+
+function Ptn=Naigai(A,Bdy)
+ V=[1,1];
+ Call=Mixlength(Bdy);
+ KL=KoutenList(A,V,Bdy);
+ Ptn=zeros(1,Call);
+ for K=1:Mixlength(KL)
+ Ten=Op(K,KL);
+ T=Op(1,Ten); NC=Op(4,Ten);
+ if T<0
+ Tmp=modulo(Ptn(NC)+1,2);
+ Ptn(1,NC)=Tmp;
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.bin
new file mode 100644
index 00000000..0c5dc7b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.sci
new file mode 100755
index 00000000..193ad384
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Naiseki.sci
@@ -0,0 +1,4 @@
+function N=Naiseki(a,b)
+ N=a*b';
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.bin
new file mode 100644
index 00000000..59d31369
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.sci
new file mode 100755
index 00000000..a404370a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nearestpt.sci
@@ -0,0 +1,53 @@
+// 08.05.31
+// 08.06.03
+// 08.10.07
+
+function Ans=Nearestpt(varargin)
+ Nargs=length(varargin);
+ PL1=varargin(1);
+ if size(PL1,1)==1
+ Flg=0;
+ else
+ Flg=1
+ end
+ Eps=10.0^(-6);
+// Fig=varargin(2);
+ PL=varargin(2);
+ Ans=MixS(PL1(1,:),1,PL(1,:),1,norm(PL1(1,:)-PL(1,:)));
+ for N=1:size(PL1,1)
+ PA=PL1(N,:);
+ Pm=PL(1,:);
+ Im=1;
+ Sm=norm(Pm-PA);
+ for I=1:size(PL,1)-1
+ A1=PL(I,1); A2=PL(I,2);
+ B1=PL(I+1,1); B2=PL(I+1,2);
+ V1=B1-A1; V2=B2-A2;
+ X1=PA(1); X2=PA(2);
+ Tmp=V2^2+V1^2;
+ if abs(Tmp)<Eps
+ continue;
+ end;
+ T=(-A2*V2-V1*A1+V1*X1+X2*V2)/Tmp;
+ if T<-Eps
+ P=[A1,A2];
+ elseif T>1+Eps
+ P=[B1,B2];
+ else
+ P=[A1+T*V1,A2+T*V2];
+ end
+ S=norm(P-PA);
+ if S<Sm-Eps
+ Tmp=ParamonCurve(P,I,PL);
+ Pm=P; Im=Tmp; Sm=S;
+ end
+ end
+ if Sm<Op(5,Ans)
+ Ans=MixS(PA,N,Pm,Im,Sm);
+ end
+ end
+ if Flg==0
+ Ans=Mixsub(3:5,Ans);
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.bin
new file mode 100644
index 00000000..038306fb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.sci
new file mode 100755
index 00000000..9e0227e8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Newlength.sci
@@ -0,0 +1,9 @@
+function Newlength(varargin)
+ if length(varargin)==0
+ Kyorihensuu();
+ else
+ FL=varargin(1);
+ Kyorihensuu(FL);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.bin
new file mode 100644
index 00000000..701b77db
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.sci
new file mode 100755
index 00000000..3826b281
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara.sci
@@ -0,0 +1,254 @@
+// 08.09.13
+// 09.12.31 (gsort)
+
+function FigkL=Nohiddenpara(varargin)
+ global HIDDENDATA THETA PHI;
+ Eps=0.001;
+ PaL=varargin(1);
+ Fk=varargin(2);
+ FuncdL=varargin(3);
+ Tmp=Mixop(1,FuncdL);
+ Fxy=Mixop(1,Tmp);
+ K=mtlb_findstr(Fxy,'=');
+ Fxy=part(Fxy,K+1:length(Fxy));
+ Fbdxy=Mixop(2,FuncdL);
+ Tmp=Mixop(3,FuncdL);
+ Xname=Mixop(1,Tmp);
+ Tmp=Mixop(4,FuncdL);
+ Yname=Mixop(1,Tmp);
+ FigkL=[];
+ if Fbdxy==[]
+ return;
+ end;
+ Bdy=Kyoukai(Fbdxy);
+ Ptn=0;
+ Fh=Projpara(Fk);
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ P=PointonCurve(S,Fh);
+ Tmp=Invparapt(S,Fh,Fk)
+ Pk=Mixop(1,Tmp);
+ Qk=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ Flg=zeros(1,Mixlength(Fbdxy));
+ for I=1:1000
+ Tmp=Pk+I*10*Qk;
+ Tmp1=Naigai(Tmp(1:2),Bdy);
+ if Tmp1==Flg
+ Flg=1;
+ Qk=Tmp;
+ break;
+ end;
+ end;
+ if Flg~=1
+ disp('Bad EyePoint');
+ return;
+ end;
+ T=poly(0,'t');
+ P0=(1-T)*Pk+T*Qk;
+ X0str='('+pol2str(P0(1))+')';
+ Y0str='('+pol2str(P0(2))+')';
+ Z0str='('+pol2str(P0(3))+')';
+ Tmp=strsubst(Fxy,Xname,X0str);
+ Tmp=strsubst(Tmp,Yname,Y0str);
+ Efn=Z0str+'-('+Tmp+')';
+ t=0;
+ Tmp=evstr(Efn);
+ Eps=max(Eps,abs(Tmp));
+ Tmp1=evstr([X0str,Y0str]);
+ t=1;
+ Tmp2=evstr([X0str,Y0str]);
+ Seg=Listplot([Tmp1,Tmp2]);
+ Tmp=[];
+ for I=1:Mixlength(Fbdxy)
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=IntersectcrvsPp(Seg,Tmp2,Eps);
+ if Mixlength(Tmp1)>0
+ Tmp2=[];
+ for J=1:Mixlength(Tmp1)
+ Tmp3=Mixop(J,Tmp1);
+ Tmp3=Mixop(2,Tmp3)-1;
+ Tmp2=[Tmp2,Tmp3];
+ end;
+ Tmp=[Tmp,Tmp2];
+ else
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=Nearestpt(Tmp2,Seg);
+ Tmp3=Mixop(5,Tmp1);
+ if Tmp3<Eps
+ Tmp4=Mixop(4,Tmp1);
+ Tmp=[Tmp,Tmp4-1];
+ end;
+ end;
+ end;
+ if length(Tmp)==0
+ SeL=[SeL,N];
+ continue;
+ end;
+ Tmp=gsort(Tmp);
+ Tmp=Tmp(length(Tmp):-1:1);
+ ParamL=[0];
+ for I=1:length(Tmp)
+ Tmp1=Tmp(I);
+ Tmp2=ParamL(length(ParamL));
+ if Tmp1-Tmp2>Eps
+ ParamL=[ParamL,Tmp1];
+ end;
+ end;
+ Nhdflg=0;
+ for M=1:length(ParamL)-1
+ TL=[ParamL(M),ParamL(M+1)];
+ t=TL(1);
+ Tmp1=evstr([X0str,Y0str]);
+ t=TL(2);
+ Tmp2=evstr([X0str,Y0str]);
+ Tmp=Naigai(0.5*(Tmp1+Tmp2),Bdy);
+ Tmp=modulo(sum(Tmp),2);
+ if Tmp==Ptn continue; end;
+ Ik=max(ceil(log((TL(2)-TL(1))/Eps)/log(2)),6);
+ t=TL(1);
+ Tmp1=evstr(Efn);
+ t=TL(2);
+ Tmp2=evstr(Efn);
+ if abs(Tmp1)<=Eps
+ if M>1
+ Nhdflg=-10;
+ break;
+ end;
+ end;
+ if abs(Tmp2)<=Eps
+ Nhdflg=-10;
+ break;
+ end;
+ if Tmp2>Eps
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=min(VL);
+ if Tmp1<=-Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ else
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=max(VL);
+ if Tmp1>Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ end;
+ end;
+ if Nhdflg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.bin
new file mode 100644
index 00000000..cbc317ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.sci
new file mode 100755
index 00000000..996559db
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpara2.sci
@@ -0,0 +1,131 @@
+// 08.10.10
+// 08.10.15
+// 09.06.24
+// 10.02.16 Eps
+
+function FigkL=Nohiddenpara2(PaL,Fk,Fd,Uveq,Np,Eps)
+ global HIDDENDATA THETA PHI TMP;
+ Eps0=10^(-5);
+ Fh=Projpara(Fk);
+ P1=Ptstart(Fh);
+ P2=Ptend(Fh);
+ Csp=CuspPt();
+ Cspflg=1;
+ for I=1:Mixlength(Csp)
+ Tmp=Mixop(I,Csp);
+ if norm(Tmp-P1)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=2,
+ case 3 then Cspflg=6;
+ end;
+ continue;
+ end;
+ if norm(Tmp-P2)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=3,
+ case 2 then Cspflg=6;
+ end;
+ continue;
+ end;
+ end;
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ Tmp=Invparapt(S,Fh,Fk);
+ PtA=Mixop(1,Tmp);
+ PtAp=Parapt(PtA);
+ Vec=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ Epstmp=Eps;
+ if N==1 & modulo(Cspflg,2)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptstart(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ if N==length(PaL)-1 & modulo(Cspflg,3)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptend(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ Flg=PthiddenQ(PtA,Vec,Fd,Uveq,Np,Epstmp);
+ if Flg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.bin
new file mode 100644
index 00000000..1ad435a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.sci
new file mode 100755
index 00000000..140516b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers.sci
@@ -0,0 +1,253 @@
+// 08.09.21
+// 09.12.31 (gsort)
+
+function FigkL=Nohiddenpers(varargin)
+ global EyePoint FocusPoint HIDDENDATA;
+ Eps=0.001;
+ PaL=varargin(1);
+ Fk=varargin(2);
+ FuncdL=varargin(3);
+ Tmp=Mixop(1,FuncdL);
+ Fxy=Mixop(1,Tmp);
+ K=mtlb_findstr(Fxy,'=');
+ Fxy=part(Fxy,K+1:length(Fxy));
+ Fbdxy=Mixop(2,FuncdL);
+ Tmp=Mixop(3,FuncdL);
+ Xname=Mixop(1,Tmp);
+ Tmp=Mixop(4,FuncdL);
+ Yname=Mixop(1,Tmp);
+ FigkL=[];
+ if Fbdxy==[]
+ return;
+ end;
+ Bdy=Kyoukai(Fbdxy);
+ Ptn=0;
+ Fh=Projpers(Fk);
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ P=PointonCurve(S,Fh);
+ Tmp=Invperspt(S,Fh,Fk)
+ Pk=Mixop(1,Tmp);
+ Flg=zeros(1,Mixlength(Fbdxy));
+ for I=1:1000
+ Tmp=Pk+I*(EyePoint-Pk);
+ Tmp1=Naigai(Tmp(1:2),Bdy);
+ if Tmp1==Flg
+ Flg=1;
+ Qk=Tmp;
+ break;
+ end;
+ end;
+ if Flg~=1
+ disp('Bad EyePoint');
+ return;
+ end;
+ T=poly(0,'t');
+ P0=(1-T)*Pk+T*Qk;
+ X0str='('+pol2str(P0(1))+')';
+ Y0str='('+pol2str(P0(2))+')';
+ Z0str='('+pol2str(P0(3))+')';
+ Tmp=strsubst(Fxy,Xname,X0str);
+ Tmp=strsubst(Tmp,Yname,Y0str);
+ Efn=Z0str+'-('+Tmp+')';
+ t=0;
+ Tmp=evstr(Efn);
+ Eps=max(Eps,abs(Tmp));
+ Tmp1=evstr([X0str,Y0str]);
+ t=1;
+ Tmp2=evstr([X0str,Y0str]);
+ Seg=Listplot([Tmp1,Tmp2]);
+ Tmp=[];
+ for I=1:Mixlength(Fbdxy)
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=IntersectcrvsPp(Seg,Tmp2,Eps);
+ if Mixlength(Tmp1)>0
+ Tmp2=[];
+ for J=1:Mixlength(Tmp1)
+ Tmp3=Mixop(J,Tmp1);
+ Tmp3=Mixop(2,Tmp3)-1;
+ Tmp2=[Tmp2,Tmp3];
+ end;
+ Tmp=[Tmp,Tmp2];
+ else
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=Nearestpt(Tmp2,Seg);
+ Tmp3=Mixop(5,Tmp1);
+ if Tmp3<Eps
+ Tmp4=Mixop(4,Tmp1);
+ Tmp=[Tmp,Tmp4-1];
+ end;
+ end;
+ end;
+ if length(Tmp)==0
+ SeL=[SeL,N];
+ continue;
+ end;
+ Tmp=gsort(Tmp);
+ Tmp=Tmp(length(Tmp):-1:1);
+ ParamL=[0];
+ for I=1:length(Tmp)
+ Tmp1=Tmp(I);
+ Tmp2=ParamL(length(ParamL));
+ if Tmp1-Tmp2>Eps
+ ParamL=[ParamL,Tmp1];
+ end;
+ end;
+ Nhdflg=0;
+ for M=1:length(ParamL)-1
+ TL=[ParamL(M),ParamL(M+1)];
+ t=TL(1);
+ Tmp1=evstr([X0str,Y0str]);
+ t=TL(2);
+ Tmp2=evstr([X0str,Y0str]);
+ Tmp=Naigai(0.5*(Tmp1+Tmp2),Bdy);
+ Tmp=modulo(sum(Tmp),2);
+ if Tmp==Ptn continue; end;
+ Ik=max(ceil(log((TL(2)-TL(1))/Eps)/log(2)),6);
+ t=TL(1);
+ Tmp1=evstr(Efn);
+ t=TL(2);
+ Tmp2=evstr(Efn);
+ if abs(Tmp1)<=Eps
+ if M>1
+ Nhdflg=-10;
+ break;
+ end;
+ end;
+ if abs(Tmp2)<=Eps
+ Nhdflg=-10;
+ break;
+ end;
+ if Tmp2>Eps
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=min(VL);
+ if Tmp1<=-Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ else
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=max(VL);
+ if Tmp1>Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ end;
+ end;
+ if Nhdflg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.bin
new file mode 100644
index 00000000..7de094a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.sci
new file mode 100644
index 00000000..d49bce91
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Nohiddenpers2.sci
@@ -0,0 +1,134 @@
+// 08.10.11
+// 08.10.12
+// 08.10.15
+// 09.06.24
+// 10.02.16 Eps
+// 11.04.12 Eps0 (bug)
+// 13.11.02 bug
+
+function FigkL=Nohiddenpers2(PaL,Fk,Fd,Uveq,Np,Eps)
+ global EyePoint FocusPoint HIDDENDATA;
+ Eps0=10^(-5); // 11.04.12
+ Fh=Projpers(Fk);
+ P1=Ptstart(Fh);
+ P2=Ptend(Fh);
+ Csp=CuspPt();
+ Cspflg=1;
+ for I=1:Mixlength(Csp)
+ Tmp=Mixop(I,Csp);
+ if norm(Tmp-P1)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=2,
+ case 3 then Cspflg=6;
+ end;
+ continue;
+ end;
+ if norm(Tmp-P2)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=3,
+ case 2 then Cspflg=6;
+ end;
+ continue;
+ end;
+ end;
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ Tmp=Invperspt(S,Fh,Fk)
+ PtA=Mixop(1,Tmp);
+ PtAp=Perspt(PtA);
+// Vec=EyePoint-FocusPoint;
+ Vec=EyePoint-PtA; // 2013.11.02
+ Epstmp=Eps; // 2011.04.12
+ if N==1 & modulo(Cspflg,2)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptstart(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ if N==length(PaL)-1 & modulo(Cspflg,3)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptend(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ Flg=PthiddenQ(PtA,Vec,Fd,Uveq,Np,Epstmp);
+ if Flg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.bin
new file mode 100644
index 00000000..dff5f719
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.sci
new file mode 100755
index 00000000..dad4f4ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Numptcrv.sci
@@ -0,0 +1,4 @@
+function N=Numptcrv(Fig)
+ N=size(Fig,1)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.bin
new file mode 100644
index 00000000..544abced
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.sci
new file mode 100644
index 00000000..20a86640
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objcurve.sci
@@ -0,0 +1,115 @@
+// s : 2014.06.22
+// 2014.08.26 debugged 1,-1 => "+","-"
+// 2014.09.07 Objjoin added
+// 2016.10.09 Np in Spacecurve changed
+
+function Out=Objcurve(varargin)
+ global OBJFIGNO OBJJOIN
+ Eps=10^(-6);
+ Args=varargin;
+ Nargs=length(Args)
+ Tmp=Args(1);
+ PtL=Flattenlist(Tmp);
+ PL=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL=lstcat(PL,list(Tmp(K,:)))
+ end;
+ end;
+ Closed=norm(PL(length(PL))-PL(1))<Eps
+ Pstr="xy";
+ Tmp=Args(Nargs)
+ if type(Tmp)==10 then
+ Pstr=Tmp;
+ Nargs=Nargs-1
+ end;
+ Sz=0.1;
+ Np=4;
+ if Nargs>=2 then
+ Sz=Args(2)
+ end;
+ if Nargs>=3 then
+ Np=Args(3)
+ end;
+ Assign("Sz",Sz)
+ if Pstr=="xy" then
+ Vz=[0,0,1];
+ Fs=Assign("[Sz*cos(t),Sz*sin(t),0]")
+ end;
+ if Pstr=="yz" then
+ Vz=[1,0,0];
+ Fs=Assign("[0,Sz*cos(t),Sz*sin(t)]")
+ end;
+ if Pstr=="zx" then
+ Vz=[0,1,0];
+ Fs=Assign("[Sz*sin(t),0,Sz*cos(t)]")
+ end;
+ Gc0=Spacecurve(Fs,"t=[0,2*%pi]","N="+string(Np));//16.10.09
+ P=PL(1); Q=PL(2); R=PL(length(PL)-1);
+ PQ1=Q-P;
+ if ~Closed then
+ PQ2=PQ1
+ else
+ PQ2=P-R
+ end;
+ Vp=PQ1/norm(PQ1)+PQ2/norm(PQ2);
+ Vp1=Vp/norm(Vp);
+ Theta=acos(min(Dotprod(Vz,Vp1),1));
+ Vj=Crossprod(Vz,Vp1);
+ if norm(Vj)<Eps then
+ Vj=Vz
+ end;
+ Gc1=Rotate3data(Gc0,Vj,Theta);
+ CL=list(Translate3data(Gc1,P));
+ for J=2:(length(PL)-1)
+ P=PL(J); Q=PL(J+1);
+ PQ2=Q-P;
+ if norm(PQ2)<Eps then
+ continue
+ end;
+ Vp=PQ1/norm(PQ1)+PQ2/norm(PQ2);
+ Vp2=Vp/norm(Vp);
+ Theta=acos(min(Dotprod(Vp1,Vp2),1));
+ Vj=Crossprod(Vp1,Vp2);
+ if norm(Vj)<Eps then
+ Vj=Vp1
+ end;
+ Gc2=Rotate3data(Gc1,Vj,Theta);
+ CL=lstcat(CL,list(Translate3data(Gc2,P)));
+ PQ1=PQ2;
+ Vp1=Vp2;
+ Gc1=Gc2;
+ end;
+ if ~Closed then
+ Vp2=(Q-P)/norm(Q-P);
+ Theta=acos(min(Dotprod(Vp1,Vp2),1));
+ Vj=Crossprod(Vp1,Vp2);
+ if norm(Vj)<Eps then
+ Vj=Vp1
+ end;
+ Gc3=Rotate3data(Gc1,Vj,Theta);
+ CL=lstcat(CL,list(Translate3data(Gc3,Q)))
+ end;
+ Objname(); // from 140907
+ Join=Objjoin();
+ Objjoin(1); // upto
+ GL1=CL(1);
+ for J=2:length(CL)
+ GL2=CL(J);
+ Dt=Objrecs(GL1,GL2,"-");
+ GL1=Dt(2);
+ if J==2 then
+ GL0=Dt(1)
+ end;
+ end;
+ if ~Closed then
+ Objpolygon(CL(1),"-");
+ N=length(CL);
+ Objpolygon(CL(N),"+")
+ else
+ Objrecs(GL1,GL0,"-")
+ end;
+ Out=CL
+ OBJJOIN=Join; // 140907
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.bin
new file mode 100644
index 00000000..9b530ae6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.sci
new file mode 100644
index 00000000..e8a80ff3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objjoin.sci
@@ -0,0 +1,9 @@
+// s: 2014.09.07
+
+function Out=Objjoin(varargin)
+ global OBJJOIN
+ if length(varargin)>0
+ OBJJOIN=abs(sign(varargin(1)))
+ end;
+ Out=OBJJOIN
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.bin
new file mode 100644
index 00000000..c1e415ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.sci
new file mode 100644
index 00000000..6c523fc2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objname.sci
@@ -0,0 +1,11 @@
+// s: 2014.09.07
+
+function Objname()
+ global OBJFIGNO OBJJOIN
+ if OBJJOIN==0 then
+ OBJFIGNO=OBJFIGNO+1;
+ Gname="ketfig"+string(OBJFIGNO);
+ Printobjstr("# "+Gname);
+ Printobjstr("g "+Gname);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.bin
new file mode 100644
index 00000000..ad6e0eba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.sci
new file mode 100644
index 00000000..ba5b346a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolygon.sci
@@ -0,0 +1,65 @@
+// s : 2014.06.22
+// 14.09.07 Objjoin added
+
+function Out=Objpolygon(varargin)
+ global OBJFIGNO OBJJOIN
+ Eps=10^(-6);
+ Args=varargin;
+ Nargs=length(Args);
+ Tmp=Args(1);
+ PtL=Flattenlist(Tmp);
+ PL=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL=lstcat(PL,list(Tmp(K,:)))
+ end;
+ end;
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Objname(); // 140907
+ for J=1:length(PL)
+ P=PL(J);
+ if (length(P)<4) | (P(4)==0) then
+ Np=Writeobjpoint(P);
+ PL(J)=[P(1:3),Np]
+ end;
+ end;
+ if Nargs==1 then
+ Tmp=PL(1);
+ Cen=Tmp(1:3);
+ Nc=Tmp(4)
+ else
+ Tmp=Args(2);
+ if length(Tmp)==1 then
+ Tmp1=PL(Tmp);
+ Cen=Tmp1(1:3);
+ Nc=Tmp(4)
+ else
+ Cen=Tmp;
+ Nc=Writeobjpoint(Cen)
+ end;
+ end;
+ for J=1:length(PL)
+ if J<length(PL) then
+ Je=J+1
+ else
+ Je=1
+ end;
+ Pt1=Cen;
+ PLj=PL(J); PLje=PL(Je);
+ Pt2=PLj(1:3); Pt3=PLje(1:3);
+ if norm(Crossprod(Pt2-Pt1,Pt3-Pt1))<Eps then
+ continue
+ end;
+ P1=sprintf("%1d",Nc);
+ P2=sprintf("%1d",PLj(4))
+ P3=sprintf("%1d",PLje(4))
+ if Sel=="+" then // 6.22
+ Str="f "+P1+" "+P2+" "+P3+" "
+ else
+ Str="f "+P1+" "+P3+" "+P2+" "
+ end;
+ Printobjstr(Str)
+ end;
+ Out=PL
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.bin
new file mode 100644
index 00000000..a0fdf444
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.sci
new file mode 100644
index 00000000..c33e23a8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objpolyhedron.sci
@@ -0,0 +1,25 @@
+// s : 2014.06.22
+// 14.09.07 Objjoin added
+
+function Out=Objpolyhedron(Vertex,Face)
+ global NPOINT OBJFIGNO;
+ OBJFIGNO=OBJFIGNO+1;
+ Ninit=NPOINT;
+ Objname(); // 140907
+ for N=1:length(Vertex)
+ P=Vertex(N);
+ Np=Writeobjpoint(P);
+ Vertex(N)=[P(1:3),Np]
+ end;
+ for N=1:length(Face)
+ F=Face(N)+Ninit;
+ Face(N)=F;
+ Str="f"
+ for J=1:length(F)
+ P=sprintf("%1d",F(J));
+ Str=Str+" "+P
+ end;
+ Printobjstr(Str)
+ end;
+ Out=list(Vertex,Face)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.bin
new file mode 100644
index 00000000..4f7b55de
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.sci
new file mode 100644
index 00000000..d8775fb3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objrecs.sci
@@ -0,0 +1,87 @@
+// s : 2014.06.22
+// 2014.09.07 Objjoin added
+
+function Out=Objrecs(varargin)
+ global OBJFIGNO OBJJOIN
+ Eps=10^(-6);
+ Args=varargin;
+ Nargs=length(Args);
+ Tmp=Args(1);
+ PtL=Flattenlist(Tmp);
+ PL1=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL1=lstcat(PL1,list(Tmp(K,:)))
+ end;
+ end;
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Objname(); // // 140907
+ for J=1:length(PL1)
+ P=PL1(J)
+ if (length(P)<4) | (P(4)==0) then
+ Np=Writeobjpoint(P);
+ PL1(J)=[P(1:3),Np];
+ end;
+ end;
+ Tmp=Args(2);
+ if (type(Tmp)==1) & (size(Tmp,1)==1) then
+ Drv=Tmp;
+ Len=norm(Drv);
+ PL2=list();
+ for J=1:length(PL1)
+ Tmp=PL1(J);
+ P=Tmp(1:3)+Drv;
+ Np=Writeobjpoint(P);
+ PL2=lstcat(PL2,list([P(1:3),Np]));
+ if J<length(PL1) then
+ Vec=PL1(J+1)-PL1(J);
+ if norm(Vec)>Eps then
+ Tmp1=Crossprod(Drv,Vec);
+ Tmp2=Crossprod(Tmp1,Vec);
+ Tmp3=Dotprod(Tmp2,Drv);
+ if Tmp3<-Eps then
+ Tmp2=-Tmp2
+ end;
+ Drv=Len/norm(Tmp2)*Tmp2
+ end
+ end
+ end
+ else
+ PtL=Flattenlist(Tmp);
+ PL2=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL2=lstcat(PL2,list(Tmp(K,:)))
+ end;
+ end;
+ for J=1:length(PL2)
+ P=PL2(J);
+ if (length(P)<4) | (P(4)==0) then
+ Np=Writeobjpoint(P);
+ PL2(J)=[P(1:3),Np]
+ end;
+ end;
+ end;
+ Printobjstr("vt 0 0");
+ Printobjstr("vt 1 0");
+ Printobjstr("vt 1 1");
+ Printobjstr("vt 0 1");
+ for J=2:length(PL1)
+ P1=sprintf("%1d",Op(4,PL1(J-1)));
+ P2=sprintf("%1d",Op(4,PL2(J-1)));
+ P3=sprintf("%1d",Op(4,PL2(J)));
+ P4=sprintf("%1d",Op(4,PL1(J)));
+ N1=""; N2=""; N3=""; N4="";
+ if Sel=="+" then // 6.22
+ Str="f "+P1+"/1/"+N1+" "+P2+"/2/"+N2+" ";
+ Str=Str+P3+"/3/"+N3+" "+P4+"/4/"+N4;
+ else
+ Str="f "+P1+"/1/"+N1+" "+P4+"/4/"+N4+" ";
+ Str=Str+P3+"/3/"+N3+" "+P2+"/2/"+N2;
+ end;
+ Printobjstr(Str)
+ end;
+ Out=list(PL1,PL2)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.bin
new file mode 100644
index 00000000..122e0986
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.sci
new file mode 100644
index 00000000..15543b8a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsurf.sci
@@ -0,0 +1,114 @@
+// s : 2014.06.22
+// e : 2014.07.18
+// Objsurf, Objthicksurf : Range argments changed
+// 2014.09.07 Objjoin added
+
+function Out=Objsurf(varargin)
+ global OBJFIGNO OBJJOIN
+ Args=varargin;
+ Nargs=length(Args);
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Rf=Args(1);
+ N=2;
+ Mg=0; Ng=0;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ U=Args(N);
+ Mg=length(U)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ else
+ Ag=Args(N); Bg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ end;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ V=Args(N);
+ Ng=length(V)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ else
+ Cg=Args(N); Dg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ end;
+ if Mg==0 then
+ Mg=Args(N);
+ N=N+1;
+ U=[];
+ for J=1:(Mg+1)
+ U=[U,Ag+(J-1)/Mg*(Bg-Ag)];
+ end;
+ end;
+ if Ng==0 then
+ Ng=Args(N);
+ V=[];
+ for K=1:(Ng+1)
+ V=[V,Cg+(K-1)/Ng*(Dg-Cg)];
+ end;
+ end;
+ Objname(); // // 140907
+ PL=list();
+ for J=1:(Mg+1)
+ for K=1:(Ng+1)
+ P=Rf(U(J),V(K));
+ Np=Writeobjpoint(P)
+ PL=lstcat(PL,list([P,Np]));
+ end;
+ end;
+ Idx=1:(Ng+1):(Ng+1)*Mg+1;
+ Pus=Mixsub(Idx,PL);
+ Idx=(Ng+1):(Ng+1):(Ng+1)*(Mg+1);
+ Pue=Mixsub(Idx,PL);
+ Idx=1:1:Ng+1;
+ Pvs=Mixsub(Idx,PL);
+ Idx=(Ng+1)*Mg+1:1:(Ng+1)*(Mg+1);
+ Pve=Mixsub(Idx,PL);
+ Printobjstr("vt 0 0");
+ Printobjstr("vt 1 0");
+ Printobjstr("vt 1 1");
+ Printobjstr("vt 0 1");
+ for J=1:Mg
+ for K=1:Ng
+ P1=sprintf("%1d",Op(4,PL((Ng+1)*(J-1)+K)))
+ P2=sprintf("%1d",Op(4,PL((Ng+1)*J+K)))
+ P3=sprintf("%1d",Op(4,PL((Ng+1)*J+K+1)))
+ P4=sprintf("%1d",Op(4,PL((Ng+1)*(J-1)+K+1)))
+ N1=""; N2=""; N3=""; N4="";
+ if Sel=="+" then // 6.22
+ Str="f "+P1+"/1/"+N1+" "+P2+"/2/"+N2+" ";
+ Str=Str+P3+"/3/"+N3+" "+P4+"/4/"+N4;
+ else
+ Str="f "+P1+"/1/"+N1+" "+P4+"/4/"+N4+" ";
+ Str=Str+P3+"/3/"+N3+" "+P2+"/2/",N2;
+ end;
+ Printobjstr(Str)
+ end;
+ end;
+ Out=list(U,V,Pus,Pue,Pvs,Pve)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.bin
new file mode 100644
index 00000000..733ab14d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.sci
new file mode 100644
index 00000000..808924a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objsymb.sci
@@ -0,0 +1,7 @@
+// s : 2014.08.25
+
+function Objsymb(Symb,Thick,Face,Dir)
+ for J=1:length(Symb)
+ Objcurve(Symb(J),Thick,Face,Dir);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.bin
new file mode 100644
index 00000000..6c85bcca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.sci
new file mode 100644
index 00000000..42fde6a5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Objthicksurf.sci
@@ -0,0 +1,123 @@
+// s : 2014.06.22
+// e : 2014.07.18
+// Objsurf, Objthicksurf : Range argments changed
+// 14.09.07 Objjoin added
+
+function Out=Objthicksurf(varargin)
+ global OBJJOIN
+ Args=varargin;
+ Nargs=length(Args)
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Selsurf=part(Sel,1); // from 6.22
+ Selside=["0","0","0","0"]; // wesn
+ Tmp=mtlb_findstr(Sel,"w");
+ if length(Tmp)>0 then
+ Selside(1)=part(Sel,Tmp+1)
+ end;
+ Tmp=mtlb_findstr(Sel,"e");
+ if length(Tmp)>0 then
+ Selside(2)=part(Sel,Tmp+1)
+ end;
+ Tmp=mtlb_findstr(Sel,"s");
+ if length(Tmp)>0 then
+ Selside(3)=part(Sel,Tmp+1)
+ end;
+ Tmp=mtlb_findstr(Sel,"n");
+ if length(Tmp)>0 then
+ Selside(4)=part(Sel,Tmp+1)
+ end;
+ Nfth=Args(Nargs-2);
+ Thick1=Args(Nargs-1);
+ Thick2=Args(Nargs);
+ Nargs=Nargs-3; // upto 6.22
+ Rfth=Args(1); // 6.22
+ N=2;
+ Mg=0; Ng=0;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ U=Args(N);
+ Mg=length(U)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ else
+ Ag=Args(N); Bg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ end;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ V=Args(N);
+ Ng=length(V)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ else
+ Cg=Args(N); Dg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ end;
+ if Mg==0 then
+ Mg=Args(N);
+ N=N+1;
+ U=[];
+ for J=1:(Mg+1)
+ U=[U,Ag+(J-1)/Mg*(Bg-Ag)];
+ end;
+ end;
+ if Ng==0 then
+ Ng=Args(N);
+ V=[];
+ for K=1:(Ng+1)
+ V=[V,Cg+(K-1)/Ng*(Dg-Cg)];
+ end;
+ end;
+ Objname(); // 140907 from
+ Join=OBJJOIN;
+ OBJJOIN=1; // upto
+ deff("Out=F1(u,v)","Out=Rfth(u,v)+Thick1*Nfth(u,v)");
+ deff("Out=F2(u,v)","Out=Rfth(u,v)+Thick2*Nfth(u,v)");
+ Dt1=Objsurf(F1,U,V,Selsurf);
+ if Selsurf=="+" then Tmp="-"; else Tmp="+"; end;
+ Dt2=Objsurf(F2,U,V,Tmp);
+ Out=list(Dt1,Dt2); //from 06.22
+ if Selside(1)~="0" then
+ Dt=Objrecs(Dt1(3),Dt2(3),Selside(1));
+ Out=lstcat(Out,list(Dt));
+ end
+ if Selside(2)~="0" then
+ Dt=Objrecs(Dt1(4),Dt2(4),Selside(2));
+ Out=lstcat(Out,list(Dt));
+ end
+ if Selside(3)~="0" then
+ Dt=Objrecs(Dt1(5),Dt2(5),Selside(3));
+ Out=lstcat(Out,list(Dt));
+ end
+ if Selside(4)~="0" then
+ Dt=Objrecs(Dt1(6),Dt2(6),Selside(4));
+ Out=lstcat(Out,list(Dt));
+ end; // upto 6.22
+ OBJJOIN=Join // 140907
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.bin
new file mode 100644
index 00000000..e90f633d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.sci
new file mode 100755
index 00000000..519bc9da
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Op.sci
@@ -0,0 +1,35 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+// 10.01.10 available for plotdata
+// 10.01.12 available for Dataindexed
+// 10.01.16
+
+function C=Op(N,Data)
+ C=[];
+ if Mixtype(Data)>1
+ C=Mixop(N,Data);
+ return;
+ end;
+ if type(Data)==10
+ if size(Data,2)==1
+ C=part(Data,N:N);
+ else
+ C=Data(N)
+ end;
+ return;
+ end;
+ if type(Data)==1
+ if size(Data,1)==1
+ C=Data(N);
+ else
+ Din=Dataindex(Data);
+ if size(Din,1)==1
+ C=Data(N,:);
+ else
+ C=Data(Din(N,1):Din(N,2),:);
+ end;
+ end;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.bin
new file mode 100644
index 00000000..3935c2e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.sci
new file mode 100755
index 00000000..4007e1b3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openfile.sci
@@ -0,0 +1,106 @@
+
+//
+// 10.01.10 filename written
+// 13.05.20 openfile error tackled
+// creator and date recorded
+// 13.11.01 Beginpicture joined optionally
+
+function Openfile(varargin)
+ global Wfile FID;
+
+ function Out=Datecount(F)
+ Tmp1=fileinfo(F);
+ Tmp=getdate(Tmp1(7));
+ Year=Tmp(1);
+ Sec=((Tmp(4)-1)*24+Tmp(7))*3600+Tmp(8)*60+Tmp(9);
+ Out=[Year,Sec];
+ endfunction
+
+ function Out=Datestr(F)
+ if F~="" then
+ Tmp1=fileinfo(F);
+ Tmp=getdate(Tmp1(7));
+ else
+ Tmp=getdate();
+ end;
+ Year=Tmp(1);
+ Month=Tmp(2);
+ Day=Tmp(6);
+ Hour=Tmp(7);
+ Min=Tmp(8);
+ D=string(Year)+"-"+string(Month)+"-"+string(Day);
+ T=string(Hour)+":"+string(Min);
+ Out=D+" "+T;
+ endfunction
+
+ File=varargin(1);
+ Bflg=0;
+ Creator='';
+ Cflg=0;
+ Nargs=length(varargin);
+ for N=2:Nargs
+ Tmp=varargin(N);
+ K=mtlb_findstr(Tmp,"=");
+ if length(K)>0 then
+ Creator=part(Tmp,(K+1):length(Tmp));
+ Cflg=1;
+ else
+ Bflg=1;
+ Unitstr=Tmp
+ end
+ end;
+ Recentf='';
+ Tmp1=dir("*.sce");
+ Files=Tmp1(2);
+ if size(Files,1)>0 then
+ Recentf=Files(1,:);
+ Dt=Datecount(Recentf);
+ for J=2:size(Files,1)
+ F=Files(J,:);
+ D=Datecount(F);
+ if D(1)~=Dt(1) then
+ if D(1)>Dt(1) then
+ Recentf=F;
+ Dt=D;
+ end
+ continue
+ end
+ if D(2)>Dt(2) then
+ Recentf=F;
+ Dt=D;
+ end
+ end;
+ end;
+ StrW="%%% "+File+" "+Datestr("")
+ StrC="%%% "+Creator;
+ if Cflg==0 then
+ if Recentf~="" then
+ StrC=StrC+Recentf+" "+Datestr(Recentf);
+ end
+ end
+ if File =='' then
+ Wfile='default';
+ else
+// errcatch(4,"continue"); // 2017.02.18 from
+// Tmp=FID;
+// if iserror(4) then
+// FID=[];
+// errclear(4);
+// end;
+// if FID~=[] then
+// mclose(FID);
+// FID=[];
+// end
+// errcatch(4,"kill"); // 2017.02.18 upto
+ FID=mopen(File,'w');
+ Wfile=File;
+ end
+ if Wfile=='default'
+ mprintf('%s\n%s\n',StrW,StrC);
+ else
+ mfprintf(FID,'%s\n%s\n',StrW,StrC);
+ end
+ if Bflg==1 then
+ Beginpicture(Unitstr)
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.bin
new file mode 100644
index 00000000..e72281c1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.sci
new file mode 100644
index 00000000..e902ce5d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openobj.sci
@@ -0,0 +1,33 @@
+// s : 2014.06.22
+// e : 14.09.07
+
+function Out=Openobj(Fnm)
+ global OBJFMT NPOINT NNORM OBJSCALE OBJFIGNO Wfile FID OBJJOIN
+ OBJFMT= "%7.4f";
+ NPOINT= 0;
+ NNORM=0;
+ OBJSCALE=1;
+ OBJFIGNO=0;
+ OBJJOIN=0; // 140906
+ if Fnm =='' then
+ Wfile='default';
+ else
+// errcatch(4,"continue"); //17.02.18from
+// Tmp=FID;
+// if iserror(4) then
+// FID=[];
+// errclear(4);
+// end;
+// if FID~=[] then
+// mclose(FID);
+// FID=[];
+// end
+// errcatch(4,"kill"); //17.02.18upto
+ if length(mtlb_findstr(Fnm,".obj"))==0
+ Fnm=Fnm+".obj";
+ end;
+ FID=mopen(Fnm,'w');
+ Wfile=Fnm;
+ Out=Wfile;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.bin
new file mode 100644
index 00000000..a8d4c7fc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.sci
new file mode 100755
index 00000000..a3056f66
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpar.sci
@@ -0,0 +1,29 @@
+// 08.05.31
+
+function Openpar(varargin)
+ global Wfile FID;
+ Nargs=length(varargin);
+ Tmp=varargin(1);
+ Tmp1=Strop(1,Tmp);
+ if Tmp1=='\' | Tmp1=='Â¥'
+ Namestr=Tmp;
+ N=2;
+ else
+ Namestr='\tmp';
+ N=1;
+ end
+ Habastr=varargin(N);
+ if Nargs>N
+ Posstr='['+varargin(N+1)+']';
+ else
+ Posstr='[c]'
+ end
+ Openphr(Namestr);
+ S='\begin{minipage}'+Posstr+'{'+Habastr+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',S);
+ else
+ mfprintf(FID,'%s\n',S);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.bin
new file mode 100644
index 00000000..f9d281d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.sci
new file mode 100755
index 00000000..461549e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openphr.sci
@@ -0,0 +1,12 @@
+// 08.05.31
+
+function Openphr(Str)
+ global Wfile FID
+ S='\def'+Str+'{%';
+ if Wfile=='default'
+ mprintf('%s\n',S);
+ else
+ mfprintf(FID,'%s\n',S);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.bin
new file mode 100644
index 00000000..877c0a04
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.sci
new file mode 100755
index 00000000..edf043ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Openpicture.sci
@@ -0,0 +1,92 @@
+//
+// 09.12.25
+// 11.05.25
+// 14.03.05 MARKLEN
+// 17.03.19 VL=[] => VL="";
+
+function Openpicture(ul)
+ global Wfile FID XMIN XMAX YMIN YMAX ULEN
+ global MilliIn MARKLEN MARKLENNow PenThickInit;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xm=Tmp(1);
+ Ym=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ XM=Tmp(1);
+ YM=Tmp(2);
+ Dx=XM-Xm;
+ Dy=YM-Ym;
+ Sym='.0123456789 +-*/';
+ Tmp=ascii(Sym);
+ SL=Sym;
+ OL='+-*/';
+ if ul~=''
+ ULEN=ul;
+ end
+ Is=1;
+ VL=""; // 17.03.19
+ Ucode=ascii(ULEN);
+ for I=1:length(Ucode)
+ C=char(Ucode(I));
+ if mtlb_findstr(SL,C)~=[]
+ if mtlb_findstr(OL,C)~=[]
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str+C;
+ Is=I+1;
+ end
+ else
+ Unit=char(Ucode(I:(I+1)));
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str;
+ break;
+ end;
+ end;
+ Valu=evstr(VL);
+ Str=string(Valu);
+ ULEN=Str+Unit;
+ if Unit=='cm'
+ MilliIn=1000/2.54*Valu;
+ end
+ if Unit=='mm'
+ MilliIn=1000/2.54*Valu/10;
+ end
+ if Unit=='in'
+ MilliIn=1000*Valu;
+ end
+ if Unit=='pt'
+ MilliIn=1000/72.27*Valu;
+ end
+ if Unit=='pc'
+ MilliIn=1000/6.022*Valu;
+ end
+ if Unit=='bp'
+ MilliIn=1000/72*Valu;
+ end
+ if Unit=='dd'
+ MilliIn=1000/1238/1157/72.27*Valu;
+ end
+ if Unit=='cc'
+ MilliIn=1000/1238/1157/72.27*12*Valu;p
+ end
+ if Unit=='sp'
+ MilliIn=1000/72.27/65536*Valu/10;
+ end
+ MARKLEN=MARKLENNow*1000/2.54/MilliIn;
+ if Wfile=='default'
+ mprintf('%s%s%s\n','{\unitlength=',ULEN,'%');
+ mprintf('%s\n','\begin{picture}%');
+ mprintf('%c%10.5f%c%10.5f%2s%10.5f%c%10.5f%2s\n',...
+ '(',Dx,',',Dy,')(',Xm,',',Ym,')%');
+ Str='\special{pn '+string(PenThickInit)+'}%';
+ mprintf('%s\n',Str);
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s%s%s\n','{\unitlength=',ULEN,'%');
+ mfprintf(FID,'%s\n','\begin{picture}%');
+ mfprintf(FID,'%c%10.5f%c%10.5f%2s%10.5f%c%10.5f%2s\n',...
+ '(',Dx,',',Dy,')(',Xm,',',Ym,')%'); //11.05.25
+ Str='\special{pn '+string(PenThickInit)+'}%';
+ mfprintf(FID,'%s\n',Str);
+ mfprintf(FID,'%s\n','%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.bin
new file mode 100644
index 00000000..eca8a277
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.sci
new file mode 100755
index 00000000..8889de32
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovalbox.sci
@@ -0,0 +1,42 @@
+function Ovalbox(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ Pos=varargin(1);
+ Dr=varargin(2);
+ StrV=varargin(3);
+ R=0.2;
+ NDflg=0;
+ for I=4:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ R=Tmp;
+ else
+ if part(Tmp,1)=='-'
+ NDflg=1;
+ Tmp1=part(Tmp,2:length(Tmp));
+ Cmdstr=strsubst(Tmp1,'*','G1');
+ end;
+ end;
+ end;
+ Xr=[XMIN,XMAX];
+ Yr=[YMIN,YMAX];
+ Uv=0.6; Uh=0.8;
+ N=length(StrV);
+ W=Uh; H=Uv*N;
+ Setwindow([-W/2,W/2],[-H,0]);
+ G1=Ovaldata([0,-H/2],W/2,H/2,R);
+ Openphr('\ketpictmp');
+ Beginpicture('1cm');
+ if NDflg==0
+ Drwline(G1);
+ else
+ execstr(Cmdstr);
+ end;
+ for I=1:N
+ Letter([0,Uv/2-Uv*I],'c',Op(I,StrV))
+ end;
+ Endpicture(0);
+ Closephr();
+ Setwindow(Xr,Yr);
+ Letter(Pos,Dr,'\ketpictmp');
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.bin
new file mode 100644
index 00000000..a33c17e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.sci
new file mode 100644
index 00000000..823fc8c4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ovaldata.sci
@@ -0,0 +1,31 @@
+// e : 2015.11.15
+function Out=Ovaldata(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ if Nargs<=1
+ Eps=1.0*10^(-4);
+ C=[(XMIN+XMAX)/2,(YMIN+YMAX)/2];
+ Dx=XMAX-C(1)-Eps;
+ Dy=YMAX-C(2)-Eps;
+ N=1;
+ else
+ C=varargin(1);
+ Dx=varargin(2);
+ Dy=varargin(3);
+ N=4;
+ end;
+ Rc=0.2;
+ if N<=Nargs
+ Rc=varargin(N)*Rc; // 15.11.15
+ end;
+ Out=[];
+ P=C+[Dx-Rc,Dy-Rc];
+ Tmp1=Circledata(P,Rc,'R=[0,%pi/2]','N=10');
+ Tmp2=Listplot(C+[Dx-Rc,Dy],C+[0,Dy]);
+ Tmp3=Listplot(C+[Dx,0],C+[Dx,Dy-Rc]);
+ G=Joincrvs(Tmp3,Tmp1,Tmp2);
+ Tmp=Reflectdata(G,[C,C+[0,1]]);
+ G=Joincrvs(G,Tmp);
+ Tmp=Reflectdata(G,[C,C+[1,0]]);
+ Out=Joincrvs(G,Tmp);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.bin
new file mode 100644
index 00000000..e86a5592
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.sci
new file mode 100755
index 00000000..82ac7c4f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramark.sci
@@ -0,0 +1,20 @@
+// 08.06.18
+
+function P=Paramark(varargin)
+ Nargs=length(varargin);
+ PA=varargin(1);
+ PB=varargin(2);
+ PC=varargin(3);
+ R=0.5;
+ if Nargs>=4
+ R=varargin(4)*R;
+ end
+ U=R*(PA-PB)/Vecnagasa(PA,PB);
+ V=R*(PC-PB)/Vecnagasa(PC,PB);
+ if Gaiseki(PA-PB,PC-PB)~=0
+ P=Listplot([PB+U,PB+U+V,PB+V]);
+ else
+ P=[];
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.bin
new file mode 100644
index 00000000..3479482b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.sci
new file mode 100755
index 00000000..ce7e0d76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ParamonCurve.sci
@@ -0,0 +1,18 @@
+// 08.05.30
+
+function Out=ParamonCurve(P,N,PtL)
+// PtL=Plt;
+ if N==size(PtL,1)
+ Out=N;
+ else
+ Pa=PtL(N,:);
+ Pb=PtL(N+1,:);
+ V=Pb-Pa;
+ W=P-Pa;
+ D2=V(1)^2+V(2)^2;
+ S=(V(1)*W(1)+V(2)*W(2))/D2;
+ S=min(max(S,0),1);
+ Out=N+S;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.bin
new file mode 100644
index 00000000..d3aeafcc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.sci
new file mode 100755
index 00000000..83661787
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramoncrv.sci
@@ -0,0 +1,35 @@
+// 09.10.03
+
+function Out=Paramoncrv(varargin)
+ Eps=10^(-8);
+ Nargs=length(varargin);
+ P=varargin(1);
+ Gdata=varargin(Nargs);
+ if size(P,1)>1
+ Tmp=P; P=Gdata; Gdata=Tmp;
+ end;
+ if Nargs==2
+ Tmp=Nearestpt(P,Gdata);
+ Out=Mixop(2,Tmp);
+ return;
+ end;
+ N=varargin(2);
+ PtL=Gdata;
+ if N==size(PtL,1)
+ Out=N;
+ else
+ Pa=PtL(N,:);
+ Pb=PtL(N+1,:);
+ V=Pb-Pa;
+ W=P-Pa;
+ D2=norm(V)^2;
+ if D2<Eps
+ Out=0;
+ return;
+ end;
+ S=Dotprod(V,W)/D2;
+ S=min(max(S,0),1);
+ Out=N+S;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.bin
new file mode 100644
index 00000000..79569617
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.sci
new file mode 100755
index 00000000..4e3effdc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Paramplot.sci
@@ -0,0 +1,140 @@
+// 08.06.18 (N)
+// 08.12.18
+// 09.03.12
+// 09.12.31 (gsort)
+// 13.10.19 ( __ added to variables )
+// 14.10.24 N,D,E => N__, etc
+// 14.12.11 Assign used
+// 15.11.16 N changed to number of intervals
+// 16.12.13 in case of T1=T2
+
+function P__=Paramplot(varargin)
+ Eps__=10^(-5);
+ Nargs__=length(varargin);
+ if type(varargin(1))==13
+ Fnflg__=1;
+ Fnx__=varargin(1);
+ Fny__=varargin(2); Is__=3;
+ if type(varargin(Is__))==13
+ Fnflg__=Fnflg__+1;
+ Fnargx__=varargin(Is__);
+ Fnargy__=varargin(Is__+1);
+ Is__=Is__+2;
+ end;
+ else
+ Fnflg__=0;
+ Fnstr__=varargin(1); Is__=2;
+ end;
+ Rgstr__=varargin(Is__); Is__=Is__+1;
+ Range__=[0,2*%pi];
+ N__=50; // Numpoints
+ E__=[]; // Exclusions
+ D__=%inf; // Discont
+ for I__=Is__:Nargs__
+ Tmp__=varargin(I__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Tmp1__=strsplit(Tmp__,[K__-1,K__]);
+ Tmp2__=ascii(Tmp1__(1,1));
+ Lhs__=char(Tmp2__(1));
+ Str__=Lhs__+'__='+Tmp1__(3,1);
+ execstr(Str__);
+ end;
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Tmp__=strsplit(Rgstr__,[K__-1,K__]);
+ Vname__=Tmp__(1,1);
+ Rng__=evstr(Tmp__(3,1));
+ else
+ Vname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end
+ T1__=Rng__(1); T2__=Rng__(2);
+// Dt__=(T2__-T1__)/(N__-1);
+ Dt__=(T2__-T1__)/(N__); // 15.11.16
+ if Fnflg__==0
+ Str__=Assign(Fnstr__,Vname__,'t__');
+ end;
+ if abs(Dt__)<Eps__ then // 16.12.13
+ t__=T1__;
+ P__=evstr(Str__);
+ return;
+ end;
+ P__=[];
+ E__=gsort(E__);
+ E__=E__(length(E__):-1:1);
+ E__=[E__,%inf];
+ Tmp__=gsort(E__);
+ E__=Tmp__(length(Tmp__):-1:1);
+ Ke__=1;
+ for t__=T1__:Dt__:T2__
+ Pa__=[];
+ if t__-E__(Ke__)<-Eps__
+ if Fnflg__==0
+ Pa__=evstr(Str__);
+ else
+ if Fnflg__==1
+ Pa__=[Fnx__(t__),Fny__(t__)];
+ else
+ if type(Fnargx__)==1
+ Tmp1__=Fnx__(t__);
+ else
+ Tmp1__=Fnx__(Fnargx__,t__);
+ end;
+ if type(Fnargy__)==1
+ Tmp2__=Fny__(t__);
+ else
+ Tmp2__=Fny__(Fnargy__,t__);
+ end;
+ Pa__=[Tmp1__,Tmp2__];
+ end;
+ end;
+ end
+ if abs(t__-E__(Ke__))<=Eps__
+ if P__~=[] & P__(size(P__,1),:)~=[%inf,%inf]
+ Pa__=[%inf,%inf];
+ end
+ end
+ if t__-E__(Ke__)>Eps__
+ if Fnflg__==0
+ Pa__=evstr(Str__);
+ else
+ if Fnflg__==1
+ Pa__=[Fnx__(t__),Fny__(t__)];
+ else
+ if type(Fnargx__)==1
+ Tmp1__=Fnx__(t__);
+ else
+ Tmp1__=Fnx__(Fnargx__,t__);
+ end;
+ if type(Fnargy__)==1
+ Tmp2__=Fny__(t__);
+ else
+ Tmp2__=Fny__(Fnargy__,t__);
+ end;
+ Pa__=[Tmp1__,Tmp2__];
+ end;
+ end;
+ Ke__=Ke__+1;
+ end
+ if Pa__~=[]
+ if Pa__(1)==%inf
+ P__=[P__; Pa__]
+ elseif P__==[]
+ P__=[Pa__];
+ else
+ Tmp__=P__(size(P__,1),:);
+ if Tmp__(1)==%inf
+ P__=[P__;Pa__];
+ elseif norm(Tmp__-Pa__)<D__
+ P__=[P__;Pa__];
+ else
+ P__=[P__;%inf,%inf;Pa__];
+ end
+ end
+ end
+ end;
+ Tmp__=size(P__,1);
+ if P__(Tmp__,1)==%inf
+ P__=P__(1:Tmp__-1,:);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.bin
new file mode 100644
index 00000000..468a99cd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.sci
new file mode 100755
index 00000000..5adb4837
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Parapt.sci
@@ -0,0 +1,12 @@
+// 08.07.11
+// 10.01.02
+
+function Out=Parapt(P)
+ global PHI THETA
+ x=P(1);
+ y=P(2);
+ z=P(3);
+ Xz=-x*sin(PHI)+y*cos(PHI);
+ Yz=-x*cos(PHI)*cos(THETA)-y*sin(PHI)*cos(THETA)+z*sin(THETA);
+ Out=[Xz,Yz];
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.bin
new file mode 100644
index 00000000..a488103c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.sci
new file mode 100755
index 00000000..0b4844df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv.sci
@@ -0,0 +1,42 @@
+// 08.05.31
+// 09.03.06
+
+function Ans=Partcrv(A,B,PkL)
+ Eps=10.0^(-3);
+ if type(A)==1 & length(A)==1
+ // new part from
+ if A>B+Eps
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv(A,Npt,PkL);
+ Out2=Partcrv(1,B,PkL);
+ Tmp=Ptstart(PkL)-Ptend(PkL);
+ if norm(Tmp)<Eps
+ Ans=Joincrvs(Out1,Out2);
+ else
+ Ans=Mix(Out1,Out2);
+ end;
+ return;
+ end;
+ // to here
+ Is=ceil(A);
+ Ie=floor(B);
+ PL=[];
+ if A<Is-Eps
+ P=(Is-A)*PkL(Is-1,:)+(1-Is+A)*PkL(Is,:);
+ PL=[P];
+ end
+ PL=[PL;PkL(Is:Ie,:)];
+ if B>Ie+Eps
+ P=(1-B+Ie)*PkL(Ie,:)+(B-Ie)*PkL(Ie+1,:);
+ PL=[PL;P]
+ end
+ Ans=PL;
+ return
+ end;
+ Tmp=Nearestpt(A,PkL);//
+ Ta=Op(2,Tmp);//
+ Tmp=Nearestpt(B,PkL);//
+ Tb=Op(2,Tmp);//
+ Ans=Partcrv(Ta,Tb,PkL);//
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.bin
new file mode 100644
index 00000000..5b652d87
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.sci
new file mode 100755
index 00000000..5b3cd178
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partcrv3.sci
@@ -0,0 +1,34 @@
+// 08.09.13
+// 09.03.06
+
+function PL=Partcrv3(T1,T2,Fk)
+ Eps=10^(-4);
+// Tmp=Mixop(1,Fk);
+ // new part from
+ if T1>T2+Eps
+ Npt=size(Fk,1);
+ Out1=Partcrv3(T1,Npt,Fk);
+ Out2=Partcrv3(1,T2,Fk);
+ Tmp=Fk(1,:)-Fk(Npt,:);
+ if norm(Tmp)<Eps
+ PL=Joincrvs(Out1,Out2);
+ else
+ PL=Mix(Out1,Out2);
+ end;
+ return;
+ end;
+ // to here
+ Is=ceil(T1);
+ Ie=floor(T2);
+ PL=[];
+ if T1<Is-Eps
+ P=(Is-T1)*Fk(Is-1,:)+(1-Is+T1)*Fk(Is,:);
+ PL=[P]
+ end;
+ PL=[PL;Fk(Is:Ie,:)];
+ if T2>Ie+Eps
+ P=(1-T2+Ie)*Fk(Ie,:)+(T2-Ie)*Fk(Ie+1,:);
+ PL=[PL;P]
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.bin
new file mode 100644
index 00000000..1678ce6b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.sci
new file mode 100644
index 00000000..a8581b1b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partframe.sci
@@ -0,0 +1,27 @@
+// 13.05.03
+
+function Out=Partframe(Tb,St,Ed)
+ G=Dividetable(Tb);
+ Gw=G(1);
+ Gt=G(2);
+ Gy=G(3);
+ Gwt=Tb(4);
+ Gwy=Tb(5);
+ Gat=lstcat(list(Gwt(1)),Gt,list(Gwt(2)));
+ Gay=lstcat(list(Gwy(1)),Gy,list(Gwy(2)));
+ Tmp1=Ptstart(Gat(St(1)));
+ Tmp2=Ptstart(Gay(St(2)));
+ Ps=[Tmp1(1),Tmp2(2)];
+ Tmp1=Ptstart(Gat(Ed(1)));
+ Tmp2=Ptstart(Gay(Ed(2)));
+ Pe=[Tmp1(1),Tmp2(2)];
+ Pars=Paramoncrv(Ps,Gw);
+ Pare=Paramoncrv(Pe,Gw);
+ if Pars<Pare then
+ Out=Partcrv(Pars,Pare,Gw);
+ else
+ Tmp1=Partcrv(Pars,Numptcrv(Gw),Gw);
+ Tmp2=Partcrv(1,Pare,Gw);
+ Out=Joincrvs(Tmp1,Tmp2);
+ end
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.bin
new file mode 100644
index 00000000..13e1cb62
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.sci
new file mode 100755
index 00000000..15d74ec4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PartitionPt.sci
@@ -0,0 +1,7 @@
+// 08.09.13
+
+function Out=PartitionPt()
+ global PARTITIONPT;
+ Out=PARTITIONPT;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.bin
new file mode 100644
index 00000000..7e736e20
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.sci
new file mode 100755
index 00000000..39c23c45
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Partitionseg.sci
@@ -0,0 +1,100 @@
+// 08.09.13
+// 08.10.17
+// 09.05.27
+// 09.12.31 (gsort)
+
+function Out=Partitionseg(varargin)
+ global PARTITIONPT OTHERPARTITION;
+ Nargs=length(varargin);
+ Fig=varargin(1);
+ GL=varargin(2); N=3;
+ Eps0=10^(-5);
+ Eps=0.05;
+ if Nargs>2
+ Eps=varargin(3);
+ end;
+ Eps2=0.2;
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ if Nargs>4
+ Ns=varargin(5);
+ Other=Mixop(Ns,OTHERPARTITION);
+ else
+ Ns=1;
+ Other=[];
+ OTHERPARTITION=[];
+ for N=1:Mixlength(GL)
+ OTHERPARTITION=Mixadd(OTHERPARTITION,[]);
+ end;
+ end;
+ Npt=size(Fig,1);
+ ParL=[1,Npt,Other];
+ for N=Ns:Mixlength(GL)
+ G=Mixop(N,GL);
+ if Fig==G
+ KouL=IntersectselfPp(Fig,Eps,Eps2);
+ else
+ KouL=IntersectcrvsPp(Fig,G,Eps,Eps2);
+ Tmp=Nearestpt(Ptstart(Fig),G);
+ Tmp1=Mixop(1,Tmp);
+ Tmp2=Mixop(2,Tmp);
+ Tmp3=Mixop(3,Tmp);
+ if Tmp3>Eps0 & Tmp3<Eps
+ Tmp1=Mix(Tmp1,1,floor(Tmp2));
+ KouL=Mixadd(KouL,Tmp1);
+ end;
+ Tmp=Nearestpt(Ptend(Fig),G);
+ Tmp1=Mixop(1,Tmp);
+ Tmp2=Mixop(2,Tmp);
+ Tmp3=Mixop(3,Tmp);
+ if Tmp3>Eps0 & Tmp3<Eps
+ Tmp1=Mix(Tmp1,Numptcrv(Fig),floor(Tmp2));
+ KouL=Mixadd(KouL,Tmp1);
+ end;
+ end;
+ for I=1:Mixlength(KouL)
+ Tmp=Mixop(I,KouL);
+ P=Mixop(1,Tmp);
+ S=Mixop(2,Tmp);
+ ParL=[ParL,S];
+ K=Mixop(3,Tmp);
+ S=ParamonCurve(P,K,G);
+ Tmp=Mixop(N,OTHERPARTITION);
+ Tmp1=gsort([Tmp,S]);
+ Tmp1=Tmp1(length(Tmp1):-1:1);
+ Tmp2=[];
+ for J=1:Mixlength(OTHERPARTITION)
+ Tmp3=Mixop(J,OTHERPARTITION);
+ if J~=N
+ Tmp2=Mixadd(Tmp2,Tmp3);
+ else
+ Tmp2=Mixadd(Tmp2,Tmp1);
+ end;
+ end;
+ OTHERPARTITION=Tmp2;
+ end;
+ end;
+ ParL=gsort(ParL);
+ ParL=ParL(length(ParL):-1:1);
+ ParL(1)=1;
+ Out=[ParL(1)];
+ P=PointonCurve(ParL(1),Fig);
+ PARTITIONPT=Mix(P);
+ for I=1:length(ParL)
+ Tmp=ParL(I);
+ P=PointonCurve(Tmp,Fig);
+ Tmp1=Out(length(Out));
+ Q=PointonCurve(Tmp1,Fig);
+ if norm(P-Q)>Eps
+ Out=[Out,Tmp];
+// P=PointonCurve(Tmp,Fig);
+ PARTITIONPT=Mixadd(PARTITIONPT,P);
+ end;
+ end;
+ if Out(length(Out))~=Npt
+ Out=[Out(1:length(Out)-1),Npt];
+ end;
+ if length(Out)==1 Out=[1,Npt]; end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.bin
new file mode 100644
index 00000000..e07e8ade
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.sci
new file mode 100755
index 00000000..eb689ffe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Perspt.sci
@@ -0,0 +1,21 @@
+// 08.08.12
+
+function Out=Perspt(P)
+ global FocusPoint EyePoint;
+ Tmp=P-FocusPoint;
+ X1=Tmp(1); Y1=Tmp(2); Z1=Tmp(3);
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ X2=X1*Ca+Y1*Sa; Y2=-X1*Sa+Y1*Ca; Z2=Z1;
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ X3=X2*Cb+Z2*Sb; Y3=Y2; Z3=-X2*Sb+Z2*Cb;
+ E3=E2*Cb+G2*Sb; F3=F2; G3=-E2*Sb+G2*Cb;
+ Yz=E3/(E3-X3)*Y3;
+ Zz=E3/(E3-X3)*Z3;
+ Out=[Yz,Zz];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.bin
new file mode 100644
index 00000000..c7fb3404
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.sci
new file mode 100755
index 00000000..ea2c8e28
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhFaceL.sci
@@ -0,0 +1,7 @@
+// 08.08.17
+
+function Out=PhFaceL()
+ global PHCUTPOINTL PHVERTEXL PHFACEL;
+ Out=PHFACEL;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.bin
new file mode 100644
index 00000000..162ba3f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.sci
new file mode 100755
index 00000000..d5333cd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+
+function Out=PhHiddenData()
+ global PHHIDDENDATA;
+ Out=PHHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.bin
new file mode 100644
index 00000000..7c4526ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.sci
new file mode 100755
index 00000000..1eae4bc9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PhVertexL.sci
@@ -0,0 +1,7 @@
+// 08.08.17
+
+function Out=PhVertexL()
+ global PHCUTPOINTL PHVERTEXL PHFACEL;
+ Out=PHVERTEXL;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.bin
new file mode 100644
index 00000000..767e453e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.sci
new file mode 100755
index 00000000..9c7806f5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutdata.sci
@@ -0,0 +1,173 @@
+// 08.08.17
+// 08.09.16
+// 10.01.02
+// 13.10.21 ( __ added to varibles )
+// 14.06.09 ( debugged -- the cause unknown )
+
+function Out__=Phcutdata(VL__,FaceL__,PlaneD__)
+ global PHCUTPOINTL
+ Out__=[];
+ EL__=[];
+ Eps__=10^(-4);
+ for I__=1:Mixlength(FaceL__)
+ Face__=Mixop(I__,FaceL__);
+ for J__=1:length(Face__)
+ Nj__=J__+1;
+ if J__==length(Face__)
+ Nj__=1;
+ end;
+ N1__=Face__(J__); N2__=Face__(Nj__);
+ Tmp__=[N1__,N2__];
+ Flg__=0;
+ for K__=1:Mixlength(EL__)
+ Tmp1__=Mixop(K__,EL__);
+ Tmp2__=[Tmp1__(2),Tmp1__(1)];
+ if Tmp__==Tmp1__ | Tmp__==Tmp2__
+ Flg__=1;
+ break;
+ end
+ end;
+ if Flg__==0
+ EL__=Mixadd(EL__,Tmp__);
+ end;
+ end;
+ end;
+ Out0__=[];
+ for I__=1:Mixlength(EL__)
+ Tmp__=Mixop(I__,EL__);
+ Tmp1__=Mixop(Tmp__(1),VL__);
+ Tmp2__=Mixop(Tmp__(2),VL__);
+ Out0__=Mixadd(Out0__, Spaceline([Tmp1__,Tmp2__]));
+ end;
+ if Mixtype(PlaneD__)~=1
+ V1__=Mixop(1,PlaneD__);
+ Tmp__=Mixop(2,PlaneD__);
+ if length(Tmp__)>1
+ d__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ d__=Tmp__;
+ end;
+ elseif type(PlaneD__)==1
+ V1__=PlaneD__(1:3);
+ d__=PlaneD__(4);
+ else
+ K__=mtlb_findstr(PlaneD__,'=');
+ if K__>0
+ Tmp1__=part(PlaneD__,1:K__-1);
+ Tmp2__=part(PlaneD__,K__+1:length(PlaneD__));
+ PlaneD__=Tmp1__+'-('+Tmp2__+')';
+ end;
+ x=0; y=0; z=0;
+ d__=-evstr(PlaneD__);
+ x=1; y=0; z=0;
+ Tmp1__=evstr(PlaneD__)+d__;
+ x=0; y=1; z=0;
+ Tmp2__=evstr(PlaneD__)+d__;
+ x=0; y=0; z=1;
+ Tmp3__=evstr(PlaneD__)+d__;
+ V1__=[Tmp1__,Tmp2__,Tmp3__];
+ end;
+ if V1__==[0,0,0]
+ Out__=Out0__;
+ return;
+ end;
+ V3__=[1,0,0];
+ Out1__=Rotate3data(Out0__,V1__,V3__);
+// x=poly(0,'X');
+ Tmp2__=Rotate3pt([1,0,0],V3__,V1__);
+ Tmp__=V1__(1)*Tmp2__(1)+V1__(2)*Tmp2__(2)+V1__(3)*Tmp2__(3);
+ x0__=d__/Tmp__;
+ t__=poly(0,'T');
+ PtL__ =[];
+ for I__=1:Mixlength(Out1__)
+ Tmp__=Mixop(I__,Out1__);
+ Tmp1__=Tmp__(1,:); Tmp2__=Tmp__(2,:);
+ P__=Tmp1__+t__*(Tmp2__-Tmp1__);
+ Tmp__=Tmp1__(1)+t__*(Tmp2__(1)-Tmp1__(1));
+ if abs(coeff(Tmp__,1))<Eps__
+ Tmp__=[];
+ else
+ Tmp1__=coeff(Tmp__,1);
+ Tmp2__=x0__-coeff(Tmp__,0);
+ Tmp__=[Tmp2__/Tmp1__];
+ end;
+ if length(Tmp__)>0
+ Tmp__=Tmp__(1);
+ if (Tmp__>-Eps__) & (Tmp__<1+Eps__)
+ Tmp3__=horner(P__,Tmp__);
+ Tmp3__=Rotate3pt(Tmp3__,V3__,V1__);
+ if Tmp__<Eps__
+ Tmp1__=Mixop(I__,EL__);
+ Tmp1__=Tmp1__(1);
+ Tmp4__=MixS([Tmp1__,Tmp1__],Tmp3__);
+ else
+ if Tmp__>1-Eps__ then
+ Tmp1__=Mixop(I__,EL__);
+ Tmp1__=Tmp1__(2);
+ Tmp4__=MixS([Tmp1__,Tmp1__],Tmp3__);
+ else
+ Tmp4__=MixS(Mixop(I__,EL__),Tmp3__);
+ end;
+ end;
+ Flg__=0;
+ for J__=1:Mixlength(PtL__)
+ Tmp__=Mixop(J__,PtL__);
+ Tmp__=Mixop(2,Tmp__);
+ if norm(Tmp3__-Tmp__)<Eps__ then
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ PtL__=Mixadd(PtL__,Tmp4__);
+ end;
+ end;
+ end;
+ end;
+ if Mixlength(PtL__)==0
+ Out__=Out0__;
+ return
+ end;
+ PL__=Mix(Mixop(1,PtL__));
+ QL__=Mixsub(2:Mixlength(PtL__),PtL__);
+ N__=Mixlength(QL__);
+ for I__=2:N__+1
+ Tmp1__=Mixop(Mixlength(PL__),PL__);
+ Tmp1__=Mixop(1,Tmp1__);
+ for J__=1:Mixlength(QL__)
+ Tmp2__=Mixop(J__,QL__);
+ Tmp2__=Mixop(1,Tmp2__);
+ Flg__=0;
+ for K__=1:Mixlength(FaceL__)
+ Tmp3__=Mixop(K__,FaceL__);
+ if Member(Tmp1__(1),Tmp3__) & Member(Tmp1__(2),Tmp3__) & Member(Tmp2__(1),Tmp3__) & Member(Tmp2__(2),Tmp3__)
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==1
+ break;
+ end;
+ end;
+ J__=min(J__, Mixlength(QL__));
+ PL__=Mixadd(PL__,Mixop(J__,QL__));
+ Tmp1__=Mixsub(1:J__-1,QL__);
+ Tmp2__=Mixsub(J__+1:Mixlength(QL__),QL__);
+ QL__=Mixjoin(Tmp1__,Tmp2__);
+ if Mixlength(QL__)==0
+ break;
+ end;
+ end;
+ PHCUTPOINTL=PL__;
+ Tmp__=[];
+ for J__=1:Mixlength(PL__);
+ Tmp1__=Mixop(J__,PL__);
+ Tmp1__=Mixop(2,Tmp1__);
+ Tmp__=Mixadd(Tmp__,Tmp1__);
+ end;
+ Tmp1__=Mixop(1,PL__);
+ Tmp1__=Mixop(2,Tmp1__);
+ Tmp__=Mixadd(Tmp__,Tmp1__);
+ Out2__=Spaceline(Tmp__);
+ Out__=Mixadd(Out0__,Out2__);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.bin
new file mode 100644
index 00000000..5e7c757a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.sci
new file mode 100755
index 00000000..879067ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phcutoffdata.sci
@@ -0,0 +1,184 @@
+// 08.08.17
+// 10.08.15 near line 25 or so
+// 13.10.21 ( __ added to varibles )
+
+function Out2__=Phcutoffdata(varargin)
+ global PHCUTPOINTL PHVERTEXL PHFACEL;
+ Eps__=10^(-4);
+ Out2__=[];
+ VL__=varargin(1);
+ FaceL__=varargin(2);
+ PlaneD__=varargin(3);
+ Sgnstr__=varargin(4);
+ Fugou__=1;
+ if Sgnstr__=='-' | Sgnstr__=='n' Fugou__=-1; end;
+ Out0__=Phcutdata(VL__,FaceL__,PlaneD__);
+ PtL__=PHCUTPOINTL;
+ PHVERTEXL=VL__;
+ PHFACEL=FaceL__;
+ if PtL__==[]
+ Out2__=Out0__;
+ return;
+ end;
+ N1__=Mixlength(VL__);
+ Face__=[];
+ for I__=1:Mixlength(PtL__);
+ Tmp__=Mixop(I__,PtL__);
+ Tmp3__=Mixop(1,Tmp__); // 2010.08.15
+ Tmp1__=Tmp3__(1); Tmp2__=Tmp3__(2); // 2010.08.15
+ if Tmp1__~=Tmp2__
+ VL__=Mixadd(VL__,Mixop(2,Tmp__));
+ N1__=N1__+1;
+ Tmp1__=N1__;
+ end;
+ Face__=[Face__,Tmp1__];
+ PtL__(I__)=list(Mixop(1,Tmp__),Tmp1__); // 2010.08.15
+// Tmp2__=Mixsub(1:I__-1,PtL__);
+// Tmp2__=Mixadd(Tmp2__,Mix(Mixop(1,Tmp__),Tmp1__));
+// Tmp3__=Mixsub(I__+1:Mixlength(PtL__),PtL__);
+// PtL__=Mixjoin(Tmp2__,Tmp3__);
+ end;
+ OutfL__=MixS(Face__);
+ if Mixtype(PlaneD__)~=1
+ V1__=Mixop(1,PlaneD__);
+ Tmp__=Mixop(2,PlaneD__);
+ if length(Tmp__)>1
+ d__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ d__=Tmp__;
+ end;
+ elseif type(PlaneD__)==1
+ V1__=PlaneD__(1:3);
+ d__=PlaneD__(4);
+ else
+ K__=mtlb_findstr(PlaneD__,'=');
+ if K__>0
+ Tmp1__=part(PlaneD__,1:K__-1);
+ Tmp2__=part(PlaneD__,K__+1:length(PlaneD__));
+ PlaneD__=Tmp1__+'-('+Tmp2__+')';
+ end;
+ x=0; y=0; z=0;
+ d__=-evstr(PlaneD__);
+ x=1; y=0; z=0;
+ Tmp1__=evstr(PlaneD__)+d__;
+ x=0; y=1; z=0;
+ Tmp2__=evstr(PlaneD__)+d__;
+ x=0; y=0; z=1;
+ Tmp3__=evstr(PlaneD__)+d__;
+ V1__=[Tmp1__,Tmp2__,Tmp3__];
+ end;
+ for I__=1:Mixlength(FaceL__)
+ Face__=Mixop(I__,FaceL__);
+ TmpL__=[];
+ for J__=1:length(Face__)
+ N1__=Face__(J__);
+ if J__==length(Face__)
+ N2__=Face__(1);
+ else
+ N2__=Face__(J__+1);
+ end;
+ for K__=1:Mixlength(PtL__)
+ Pd__=Mixop(K__,PtL__);
+ Tmp__=Mixop(1,Pd__);
+ if Tmp__(1)==Tmp__(2)
+ if Tmp__(1)==N1__
+ TmpL__=Mixadd(TmpL__,Mix(J__,[N1__,N2__],Mixop(2,Pd__)));
+ end
+ else
+ if Tmp__==[N1__,N2__] | Tmp__==[N2__,N1__]
+ TmpL__=Mixadd(TmpL__,Mix(J__,[N1__,N2__],Mixop(2,Pd__)));
+ end;
+ end;
+ end;
+ end;
+ if Mixlength(TmpL__)<2
+ Flg__=0;
+ for J__=1:length(Face__)
+ Tmp__=Mixop(Face__(J__),VL__);
+ Tmp1__=Fugou__*(Naiseki(V1__,Tmp__)-d__);
+ if Tmp1__<-Eps__
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ OutfL__=Mixadd(OutfL__,Face__);
+ end;
+ continue;
+ end;
+ Pd__=Mixop(1,TmpL__);
+ Qd__=Mixop(2,TmpL__);
+ Outf1__=[Mixop(3,Pd__)];
+ Nf__=Mixop(1,Pd__)+1;
+ Tmp__=Mixop(2,Pd__);
+ JJ__=0;
+ while Tmp__~=Mixop(2,Qd__)
+ JJ__=JJ__+1;
+ if JJ__>20
+ disp('bug');
+ return;
+ end;
+ Tmp1__=Tmp__(2);
+ if Outf1__(length(Outf1__))~=Tmp1__
+ Outf1__=[Outf1__,Tmp1__];
+ end;
+ Tmp__=[Face__(Nf__)];
+ Nf__=Nf__+1;
+ if Nf__>length(Face__) Nf__=1; end;
+ Tmp__=[Tmp__,Face__(Nf__)];
+ end;
+ Tmp1__=Mixop(3,Qd__);
+ if Outf1__(length(Outf1__))~=Tmp1__
+ Outf1__=[Outf1__,Tmp1__];
+ end;
+ Outf2__=[Mixop(3,Pd__)];
+ Nf__=Mixop(1,Pd__);
+ Tmp__=Mixop(2,Pd__);
+ JJ__=0;
+ while Tmp__~=Mixop(2,Qd__)
+ JJ__=JJ__+1;
+ if JJ__>20
+ disp('bug');
+ return;
+ end;
+ Tmp1__=Tmp__(1);
+ if Outf2__(length(Outf2__))~=Tmp1__
+ Outf2__=[Outf2__,Tmp1__]
+ end;
+ Tmp__=[Face__(Nf__)];
+ Nf__=Nf__-1;
+ if Nf__<1 Nf__=length(Face__); end;
+ Tmp__=[Face__(Nf__),Tmp__];
+ end;
+ Tmp1__=Mixop(3,Qd__);
+ if Outf2__(length(Outf2__))~=Tmp1__
+ Outf2__=[Outf2__,Tmp1__]
+ end;
+ if length(Outf1__)<3 | length(Outf2__)<3
+ Face__=Outf1__;
+ if length(Outf1__)<length(Outf2__) Face__=Outf2__; end;
+ Flg__=0;
+ for J__=1:length(Face__)
+ Tmp__=Mixop(Face__(J__),VL__);
+ Tmp1__=Fugou__*(Naiseki(V1__,Tmp__)-d__);
+ if Tmp1__<-Eps__
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ OutfL__=Mixadd(OutfL__,Face__);
+ end;
+ else
+ Tmp__=Mixop(Outf1__(2),VL__);
+ Tmp1__=Outf1__;
+ Tmp2__=Fugou__*(Naiseki(V1__,Tmp__)-d__);
+ if Tmp2__<0 Tmp1__=Outf2__; end;
+ OutfL__=Mixadd(OutfL__,Tmp1__);
+ end;
+ end;
+ PHVERTEXL=VL__;
+ PHFACEL=OutfL__;
+ Out2__=Phcutdata(VL__,OutfL__,[0,0,0,0]);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.bin
new file mode 100644
index 00000000..2e8372d4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.sci
new file mode 100755
index 00000000..02fe98a5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phidegree.sci
@@ -0,0 +1,7 @@
+// 08.07.11
+
+function Ang=Phidegree()
+ global PHI;
+ Ang=PHI*180/%pi;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.bin
new file mode 100644
index 00000000..f048d289
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.sci
new file mode 100755
index 00000000..835c173e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Out=Phparadata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'para');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.bin
new file mode 100644
index 00000000..fd962e37
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.sci
new file mode 100755
index 00000000..e422b6fc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phpersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Out=Phpersdata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'pers');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.bin
new file mode 100644
index 00000000..ab558ee1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.sci
new file mode 100755
index 00000000..c4c79c26
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Out=Phrawparadata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'rawpara');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.bin
new file mode 100644
index 00000000..b07adddd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.sci
new file mode 100755
index 00000000..29870630
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phrawpersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Phrawpersdata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'rawpers');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.bin
new file mode 100644
index 00000000..5548e0e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.sci
new file mode 100755
index 00000000..3c8018e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Out=Phsparadata(Fdata)
+ Out=Facesdata(Fdata,'para')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.bin
new file mode 100644
index 00000000..b625f4d4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.sci
new file mode 100755
index 00000000..58ab8101
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phspersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Out=Phspersdata(Fdata)
+ Out=Facesdata(Fdata,'pers')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.bin
new file mode 100644
index 00000000..7b3c7f0f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.sci
new file mode 100755
index 00000000..6928d928
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Out=Phsrawparadata(Fdata)
+ Out=Facesdata(Fdata,'rawpara')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.bin
new file mode 100644
index 00000000..0594752f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.sci
new file mode 100755
index 00000000..21677841
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Phsrawpersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Phsrawpersdata(Fdata)
+ Out=Facesdata(Fdata,'rawpers')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.bin
new file mode 100644
index 00000000..7d239bba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.sci
new file mode 100755
index 00000000..fc548f28
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Plotdata.sci
@@ -0,0 +1,138 @@
+//
+// 08.06.18 (N)
+// 08.08.24
+// 08.10.05
+// 08.12.18
+// 09.03.12
+// 09.12.31 (gsort)
+// 13.10.19 (__ added to variables)
+// 14.10.24 N,D,E => N__ ,...
+// 14.12.11 Assign used, and debugged (Exfun )
+// 15.11.16 N changed to number of intervals
+// 16.12.13 in case of X1=X2
+
+function P__=Plotdata(varargin)
+ global XMIN XMAX YMIN YMAX
+ Eps__=10^(-5);
+ Fnstr__=varargin(1); Is__=2;
+ if type(Fnstr__)==13
+ Fnflg__=1;
+ Fnarg__=varargin(Is__);
+ if type(Fnarg__)==13
+ Fnflg__=Fnflg__+1;
+ Is__=Is__+1;
+ end;
+ else
+ Fnflg__=0;
+ end;
+ Rgstr__=varargin(Is__); Is__=Is__+1;
+ K__=mtlb_findstr(Rgstr__,'=');
+ if length(K__)>0
+ Tmp__=strsplit(Rgstr__,[K__-1,K__]);
+ Vname__=Tmp__(1,1);
+ Rng__=evstr(Tmp__(3,1));
+ else
+ Vname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end;
+ N__=50; // Numpoints
+ E__=[]; // Exclusions
+ Exfun__=''; // Exclusion function
+ D__=%inf; // Discont
+ for I__=Is__:length(varargin)
+ Tmp__=varargin(I__);
+ Lhs__=part(Tmp__,1);
+ K__=mtlb_findstr(Tmp__,'=');
+ Tmp1__=part(Tmp__,K__+1:length(Tmp__));
+ if mtlb_findstr(Tmp__,Vname__)==[]
+ Str__=Lhs__+'__='+Tmp1__;
+ execstr(Str__);
+ else
+ Exfun__=Tmp1__;
+ end;
+ end;
+ X1__=Rng__(1); X2__=Rng__(2);
+// dx__=(X2__-X1__)/(N__-1);
+ dx__=(X2__-X1__)/(N__); // 15.11.16
+ if Fnflg__==0
+ Str__=Assign(Fnstr__,Vname__,'x__');
+ end;
+ if abs(dx__)<Eps__ then // 16.12.13
+ x__=X1__;
+ P__=[X1__,evstr(Str__)];
+ return;
+ end;
+ Exfun__=Assign(Exfun__,Vname__,'x__');
+ if length(Exfun__)>0 then // 14.12.11
+ Tmp__=mtlb_findstr(Exfun__,"x__");
+ if length(Tmp__)==0 then
+ E__=evstr(Exfun__);
+ Exfun__="";
+ end
+ end
+ P__=[];
+ E__=gsort(E__);
+ E__=E__(length(E__):-1:1);
+ E__=[E__,%inf];
+ Tmp__=gsort(E__);
+ E__=Tmp__(length(Tmp__):-1:1);
+ Ke__=1;
+ for x__=X1__:dx__:X2__
+ if Exfun__~=''
+ Tmp__=evstr(Exfun__);
+ if abs(Tmp__)<Eps__
+ P__=[P__;%inf,%inf];
+ continue;
+ end;
+ end;
+ Pa__=[];
+ if x__-E__(Ke__)<-Eps__
+ if Fnflg__==0
+ Pa__=[x__,evstr(Str__)];
+ else
+ if Fnflg__==1
+ Pa__=[x__,Fnstr__(x__)];
+ else
+ Pa__=[x__,Fnstr__(Fnarg__,x__)];
+ end;
+ end;
+ end;
+ if abs(x__-E__(Ke__))<=Eps__
+ if P__~=[] & P__(size(P__,1),:)~=[%inf,%inf]
+ Pa__=[%inf,%inf];
+ end
+ end
+ if x__-E__(Ke__)>Eps__
+ if Fnflg__==0
+ Pa__=[x__,evstr(Str__)];
+ else
+ if Fnflg__==1
+ Pa__=[x__,Fnstr(x__)];
+ else
+ Pa__=[x__,Fnstr__(Fnarg__,x__)];
+ end;
+ end;
+ Ke__=Ke__+1;
+ end
+ if Pa__~=[]
+ if Pa__(1)==%inf
+ P__=[P__;Pa__]
+ elseif P__==[]
+ P__=[Pa__];
+ else
+ Tmp__=P__(size(P__,1),:);
+ if Tmp__(1)==%inf
+ P__=[P__;Pa__];
+ elseif norm(Tmp__-Pa__)<D__
+ P__=[P__;Pa__];
+ else
+ P__=[P__;%inf,%inf;Pa__];
+ end
+ end
+ end
+ end;
+ Tmp__=size(P__,1);
+ if P__(Tmp__,1)==%inf
+ P__=P__(1:Tmp__-1,:);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.bin
new file mode 100644
index 00000000..73d006ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.sci
new file mode 100755
index 00000000..35e2347e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointdata.sci
@@ -0,0 +1,25 @@
+//
+// 08.05.23
+// 09.09.18
+// 13.05.03 list of points is outputted
+
+function PL=Pointdata(varargin)
+ Nargs=length(varargin);
+ PL=list();
+ for I=1:Nargs
+ DL=varargin(I);
+ DL=Flattenlist(DL);
+ for K=1:length(DL);
+ Dt=DL(K);
+ for J=1:size(Dt,1)
+ Tmp=Dt(J,:);
+ if Tmp(1)~=%inf then
+ PL($+1)=Tmp;
+ end
+ end
+ end;
+ end;
+ if length(PL)==1
+ PL=PL(1);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.bin
new file mode 100644
index 00000000..1914f8a3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.sci
new file mode 100755
index 00000000..fd2a35d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PointonCurve.sci
@@ -0,0 +1,15 @@
+// 08.05.30
+
+function Out=PointonCurve(T,PtL)
+ Eps=10^(-4);
+ N=Trunc(T+Eps);
+ S=max(T-N,0);
+// PtL=Plt;
+ if N==size(PtL,1)
+ Out=PtL(N,:);
+ else
+ Pa=PtL(N,:);;
+ Pb=PtL(N+1,:);
+ Out=(1-S)*Pa+S*Pb;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.bin
new file mode 100644
index 00000000..69dc99ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.sci
new file mode 100755
index 00000000..c39cdadc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Pointoncrv.sci
@@ -0,0 +1,21 @@
+// 09.10.03
+
+function Out=Pointoncrv(varargin)
+ Eps=10^(-4);
+ T=varargin(1);
+ Gdata=varargin(2);
+ if size(T,1)>1
+ Tmp=T; T=Gdata; Gdata=Tmp;
+ end;
+ PtL=Gdata;
+ N=Trunc(T+Eps);
+ S=max(T-N,0);
+ if N==size(PtL,1)
+ Out=PtL(N,:);
+ else
+ Pa=PtL(N,:);;
+ Pb=PtL(N+1,:);
+ Out=(1-S)*Pa+S*Pb;
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.bin
new file mode 100644
index 00000000..f85dfeb2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.sci
new file mode 100755
index 00000000..b23dfdc8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Powersum.sci
@@ -0,0 +1,17 @@
+// 09.03.12
+
+function Out=Powersum(varargin)
+ Nargs=length(varargin);
+ COEFF=varargin(1);
+ x=varargin(2);
+ if Nargs>2
+ x=x-varargin(3);
+ end;
+ NL=Mixop(1,COEFF);
+ A=Mixop(2,COEFF);
+ Upto=min(size(NL,2),size(A,2));
+ NL=NL(1:Upto);
+ A=A(1:Upto);
+ Out=sum(A.*x^NL);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.bin
new file mode 100644
index 00000000..54fceb67
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.sci
new file mode 100755
index 00000000..bc866928
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Prime.sci
@@ -0,0 +1,10 @@
+// 09.08.23
+
+function Out=Prime(varargin)
+ if length(varargin)==0
+ Out=char(39);
+ else
+ Out=varargin(1)+char(39);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.bin
new file mode 100644
index 00000000..3e8d6ca7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.sci
new file mode 100644
index 00000000..bf137751
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Printobjstr.sci
@@ -0,0 +1,10 @@
+// s : 2014.06.22
+
+function Printobjstr(Str)
+ global Wfile FID;
+ if Wfile=='default' then
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.bin
new file mode 100644
index 00000000..22cf9f20
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.sci
new file mode 100755
index 00000000..bbe28c12
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjCurve.sci
@@ -0,0 +1,32 @@
+// 08.07.11
+// 08.10.07
+// 09.06.02
+// 09.08.23
+
+function AnsL=ProjCurve(Curve)
+ global PHI THETA;
+ Eps=10^(-6);
+ AnsL=[]; // Added
+ SP=sin(PHI); CP=cos(PHI);
+ ST=sin(THETA); CT=cos(THETA);
+ for I=1:size(Curve,1)
+ P=Curve(I,:);
+ x=P(1); y=P(2); z=P(3);
+ if x~=%inf
+ Xz=-x*SP+y*CP;
+ Yz=-x*CP*CT-y*SP*CT+z*ST;
+ Tmp=[Xz,Yz];
+ if I==1
+ AnsL=[Tmp];
+ else
+ Tmp1=AnsL(size(AnsL,1),:);
+ if Tmp1(1)==%inf | norm(Tmp-Tmp1)>Eps
+ AnsL=[AnsL;Tmp];
+ end;
+ end;
+ else
+ AnsL=[AnsL;%inf,%inf];
+ end;
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.bin
new file mode 100644
index 00000000..1a815b50
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.sci
new file mode 100755
index 00000000..74c552a6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ProjcoordCurve.sci
@@ -0,0 +1,18 @@
+// 08.07.11
+// 08.10.16
+
+function Out=ProjcoordCurve(Curve)
+ global PHI THETA;
+ SP=sin(PHI); CP=cos(PHI);
+ ST=sin(THETA); CT=cos(THETA);
+ Out=[];
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ x=P(1); y=P(2); z=P(3);
+ Xz=-x*SP+y*CP;
+ Yz=-x*CP*CT-y*SP*CT+z*ST;
+ Zz=x*CP*ST+y*SP*ST+z*CT;
+ Out=[Out;Xz,Yz,Zz];
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.bin
new file mode 100644
index 00000000..c78a60ff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.sci
new file mode 100755
index 00000000..82feeff2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpara.sci
@@ -0,0 +1,41 @@
+// 08.07.11
+// 08.07.15
+// 08.08.12
+// 08.10.28
+
+function CL=Projpara(varargin)
+ Nargs=length(varargin);
+ Flg=0;
+ if Nargs==1 & Mixtype(varargin(1))==1
+ Flg=1;
+ end;
+ CL=[];
+ for N=1:Nargs
+ Crv=varargin(N);
+ if Mixtype(Crv)==1
+ Tmp=ProjCurve(Crv);
+ CL=Mixadd(CL,Tmp);
+ else
+ if Mixtype(Crv)==3
+ ObjL=[];
+ for I=1:Mixlength(Crv)
+ Tmp1=Mixop(I,Crv);
+ if Mixtype(Tmp1)==1
+ ObjL=Mixadd(ObjL,Tmp1);
+ else
+ ObjL=Mixjoin(ObjL,Tmp1);
+ end;
+ end;
+ Crv=ObjL;
+ end;
+ for J=1:Mixlength(Crv)
+ Tmp=ProjCurve(Mixop(J,Crv));
+ CL=Mixadd(CL,Tmp);
+ end
+ end
+ end
+ if Mixlength(CL)==1 & Flg==1
+ CL=Mixop(1,CL);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.bin
new file mode 100644
index 00000000..fe160426
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.sci
new file mode 100755
index 00000000..b43451a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Projpers.sci
@@ -0,0 +1,39 @@
+// 08.08.12
+// 08.10.28
+
+function CL=Projpers(varargin)
+ Nargs=length(varargin);
+ Flg=0;
+ if Nargs==1 & Mixtype(varargin(1))==1
+ Flg=1;
+ end;
+ CL=[];
+ for N=1:Nargs
+ Crv=varargin(N);
+ if Mixtype(Crv)==1
+ Tmp=CameraCurve(Crv);
+ CL=Mixadd(CL,Tmp);
+ else
+ if Mixtype(Crv)==3
+ ObjL=[];
+ for I=1:Mixlength(Crv)
+ Tmp1=Mixop(I,Crv);
+ if Mixtype(Tmp1)==1
+ ObjL=Mixadd(ObjL,Tmp1);
+ else
+ ObjL=Mixjoin(ObjL,Tmp1);
+ end;
+ end;
+ Crv=ObjL;
+ end;
+ for J=1:Mixlength(Crv)
+ Tmp=CameraCurve(Mixop(J,Crv));
+ CL=Mixadd(CL,Tmp);
+ end
+ end
+ end
+ if Mixlength(CL)==1 & Flg==1
+ CL=Mixop(1,CL);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.bin
new file mode 100644
index 00000000..6ba89403
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.sci
new file mode 100755
index 00000000..78776d7b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptcrv.sci
@@ -0,0 +1,4 @@
+function P=Ptcrv(N,Fig)
+ P=Fig(N,:)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.bin
new file mode 100644
index 00000000..9cc74d07
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.sci
new file mode 100755
index 00000000..d16ebf80
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptend.sci
@@ -0,0 +1,4 @@
+function P=Ptend(Fig)
+ P=Fig(size(Fig,1),:)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.bin
new file mode 100644
index 00000000..f195927d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.sci
new file mode 100755
index 00000000..98f2ca94
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PthiddenQ.sci
@@ -0,0 +1,250 @@
+// 08.10.10
+// 08.10.12
+// 08.10.15
+// 08.10.26
+// 09.06.05
+// 09.09.10
+// 09.10.12 debug
+// 09.11.07 debugged
+// 10.02.16 Eps__
+// 13.10.22 ( __ added to variables )
+
+function Out__=PthiddenQ(PtA__,Vec__,Fd__,Uveq__,Np__,EPS__)
+// Out__=1 : hidden
+// SL__ : List of segments near PtA__+Vec__
+ Eps__0=10^(-4)*(Xmax()-Xmin())/10;
+ Eps__=EPS__(1)*(Xmax()-Xmin())/10; //
+ Out__=0;
+ Vec__1=1/norm(Vec__)*Vec__;
+ PtL__=[];
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Mixop(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ FdL__=Fullformfunc(Fd__);
+ Xf__=Mixop(2,FdL__);
+ Yf__=Mixop(3,FdL__);
+ Zf__=Mixop(4,FdL__);
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); UMax__=Urg__(2);
+ Vmin__=Vrg__(1); VMax__=Vrg__(2);
+ V1__='('+string(Vec__(1))+')';
+ V2__='('+string(Vec__(2))+')';
+ V3__='('+string(Vec__(3))+')';
+ Xstr__='(('+Xf__+')-('+string(PtA__(1))+'))';
+ Ystr__='(('+Yf__+')-('+string(PtA__(2))+'))';
+ Zstr__='(('+Zf__+')-('+string(PtA__(3))+'))';
+ Urg__str=Mixop(5,FdL__);
+ Vrg__str=Mixop(6,FdL__);
+ if abs(Vec__(2))>Eps__0 | abs(Vec__(1))>Eps__0
+ Eq__=V2__+'*'+Xstr__+'-'+V1__+'*'+Ystr__;
+ else
+ Eq__=Xstr__;
+ end;
+ MS__=Mix(Eq__,Urg__str,Vrg__str,Np__);
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ SL__=[];
+ for J__=1:length(Yval__)-1
+ for I__=1:length(Xval__)-1
+ a1__=Xval__(I__);b1__=Yval__(J__);c1__=Zval__(J__,I__);
+ a2__=Xval__(I__+1);b2__=Yval__(J__);c2__=Zval__(J__,I__+1);
+ a3__=Xval__(I__+1);b3__=Yval__(J__+1);c3__=Zval__(J__+1,I__+1);
+ a4__=Xval__(I__);b4__=Yval__(J__+1);c4__=Zval__(J__+1,I__);
+ PL__=[a1__,b1__;a2__,b2__;a3__,b3__;a4__,b4__;a1__,b1__];
+ VL__=[c1__,c2__,c3__,c4__,c1__];
+ QL__=[];
+ for K__=1:4
+ P1__=PL__(K__,:); P2__=PL__(K__+1,:);
+ M1__=VL__(K__); M2__=VL__(K__+1);
+ if M1__>=Eps__0 & M2__>=Eps__0
+ continue;
+ end;
+ if M1__<=-Eps__0 & M2__<=-Eps__0
+ continue;
+ end;
+ if abs(M1__)<Eps__0
+ Tmp__=P1__;
+ elseif abs(M2__)<Eps__0
+ continue;
+ else
+ Tmp__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ end;
+ QL__=[QL__;Tmp__];
+ end;
+ if size(QL__,1)==2
+ Puv1__=QL__(1,:); Puv2=QL__(2,:);
+ Tmp__1=Puv1__(1);
+ Tmp__2=Puv1__(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P1__=[Xv__,Yv__,Zv__];
+ Tmp__1=Puv2(1);
+ Tmp__2=Puv2(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P2__=[Xv__,Yv__,Zv__];
+ if norm(P1__-P2__)<Eps__0 // 09.11.07
+ continue;
+ end; //
+ Tmp__1=norm(P1__-PtA__);
+ Tmp__2=Naiseki(P1__-PtA__,Vec__1);
+ Tmp__3=sqrt(abs(Tmp__1^2-Tmp__2^2));
+ Tmp__4=norm(P2__-PtA__);
+ Tmp__5=Naiseki(P2__-PtA__,Vec__1);
+ Tmp__6=sqrt(abs(Tmp__4^2-Tmp__5^2));
+ if Tmp__2<Tmp__5
+ Tmp__=P1__; P1__=P2__; P2__=Tmp__;
+ Tmp__=Tmp__2; Tmp__2=Tmp__5; Tmp__5=Tmp__;
+ Tmp__=Tmp__3; Tmp__3=Tmp__6; Tmp__6=Tmp__;
+ end;
+ if Tmp__3<EPS__(2)*Eps__ & Tmp__6<EPS__(2)*Eps__ //
+ if Tmp__2>-Eps__0
+ if Tmp__5<-Eps__0
+ SL__=[SL__;P1__,P2__,-1];
+ else
+ SL__=[SL__;P1__,P2__,1];
+ end;
+ end;
+ end;
+ V1__=Vec__1(1); V2__=Vec__1(2); V3__=Vec__1(3);
+ if abs(V1__)>Eps__0
+ M1__=PtA__(3)+V3__/V1__*(P1__(1)-PtA__(1))-P1__(3);
+ M2__=PtA__(3)+V3__/V1__*(P2__(1)-PtA__(1))-P2__(3);
+ elseif abs(V2__)>Eps__0
+ M1__=PtA__(3)+V3__/V2__*(P1__(2)-PtA__(2))-P1__(3);
+ M2__=PtA__(3)+V3__/V2__*(P2__(2)-PtA__(2))-P2__(3);
+ else
+ M1__=PtA__(2)-P1__(2);
+ M2__=PtA__(2)-P2__(2);
+ end;
+ if M1__*M2__>=0
+ if (M1__>Eps__0 & M2__>Eps__0) | (M1__<-Eps__0 & M2__<-Eps__0)
+ continue;
+ end;
+ if abs(M1__)<=Eps__0
+ Pt__=P1__; Ptuv__=Puv1__;
+ else
+ Pt__=P2__; Ptuv__=Puv2;
+ end;
+ else
+ Pt__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ Ptuv__=1/(M1__-M2__)*(-M2__*Puv1__+M1__*Puv2);
+ end;
+ if type(Uveq__)==10
+ Tmp__1='('+string(Ptuv__(1))+')';
+ Tmp__2='('+string(Ptuv__(2))+')';
+ Tmp__=strsubst(Uveq__,Uname__,Tmp__1);
+ Tmp__=strsubst(Tmp__,Vname__,Tmp__2);
+ Tmp__=evstr(Tmp__);
+ if Tmp__<-Eps__0
+ continue;
+ end;
+ end;
+ Tmp__1=Dotprod(Pt__-PtA__,Vec__1);
+ Tmp__2=abs(Tmp__1);
+ Tmp__3=Dotprod(P1__-P2__,Vec__1);
+ Tmp__4=norm(P1__-P2__);
+ Tmp__6=Tmp__3/Tmp__4;
+ if Tmp__1>Eps__0
+ if abs(Tmp__6)>0.75 // from
+ PtL__=[PtL__;Pt__,P2__];
+ continue;
+ end; // upto
+ if Tmp__2>Eps__
+ Out__=1;
+ return
+ end;
+ if Tmp__2<2*Eps__
+ continue;
+ end;
+ end;
+ end;
+ end;
+ end;
+ if PtL__==[]
+ return;
+ end;
+ for I__=1:size(SL__,1)
+ P2__=SL__(I__,4:6);
+ Flg__=0;
+ for J__=1:size(SL__,1)
+ P=SL__(J__,1:3);
+ if norm(P-P2__)<Eps__0
+ SL__(I__,7)=J__;
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0 & SL__(I__,7)>0
+ SL__(I__,7)=-2;
+ end;
+ end;
+ for I__=1:size(PtL__,1)
+ P__=PtL__(I__,4:6);
+ Flg__=0;
+ for J__=1:size(SL__,1)
+ P1__=SL__(J__,1:3);
+ if norm(P1__-P__)<Eps__0
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ Pt__=PtL__(I__,1:3); // from
+ Tmp__0=norm(P__-Pt__);
+ Tmp__1=abs(Dotprod(P__-Pt__,Vec__1));
+ Tmp__2=sqrt(abs(Tmp__0^2-Tmp__1^2));
+ Tmp__3=Tmp__2*norm(Pt__-PtA__)/Tmp__0; // should to be changed 10.02.16
+ if Tmp__3>Eps__/5
+ Out__=1;
+ return;
+ else
+ continue;
+ end; // upto
+ end;
+ Nxt__=SL__(J__,7);
+ while Nxt__>0
+ P__=SL__(Nxt__,4:6);
+ Nxt__=SL__(Nxt__,7);
+ end;
+ if Nxt__==-2
+ Out__=1;
+ return;
+ else
+ Out__=0;
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.bin
new file mode 100644
index 00000000..00ce8734
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.sci
new file mode 100755
index 00000000..f6452897
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptne.sci
@@ -0,0 +1,14 @@
+//
+// 10.01.13
+
+function Out=Ptne(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMAX,YMAX];
+ else
+ G=varargin(1);
+ XM=max(G(:,1));
+ YM=max(G(:,2));
+ Out=[XM,YM];
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.bin
new file mode 100644
index 00000000..d8c23898
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.sci
new file mode 100755
index 00000000..e3cd5ebc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptnw.sci
@@ -0,0 +1,14 @@
+//
+// 10.01.13
+
+function Out=Ptnw(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMIN,YMAX];
+ else
+ G=varargin(1);
+ Xm=min(G(:,1));
+ YM=max(G(:,2));
+ Out=[Xm,YM];
+ end;
+ endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.bin
new file mode 100644
index 00000000..19bd2ccc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.sci
new file mode 100755
index 00000000..fe5e52b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptse.sci
@@ -0,0 +1,14 @@
+//
+// 10.01.13
+
+function Out=Ptse(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMAX,YMIN];
+ else
+ G=varargin(1);
+ XM=max(G(:,1));
+ Ym=min(G(:,2));
+ Out=[XM,Ym];
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.bin
new file mode 100644
index 00000000..c87076aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.sci
new file mode 100755
index 00000000..f94437cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptstart.sci
@@ -0,0 +1,4 @@
+function P=Ptstart(Fig)
+ P=Fig(1,:)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.bin
new file mode 100644
index 00000000..df35b82c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.sci
new file mode 100755
index 00000000..5b0a3474
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ptsw.sci
@@ -0,0 +1,13 @@
+// 10.01.13
+
+function Out=Ptsw(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMIN,YMIN];
+ else
+ G=varargin(1);
+ Xm=min(G(:,1));
+ Ym=min(G(:,2));
+ Out=[Xm,Ym];
+ end;
+endfunction \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.bin
new file mode 100644
index 00000000..baf3e29f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.sci
new file mode 100755
index 00000000..e0020f0b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcell.sci
@@ -0,0 +1,72 @@
+// 09.11.26
+// 09.12.06
+// 09.12.25
+// 09.12.29
+
+function Putcell(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ Str=varargin(Nargs);
+ if type(Str)==1
+ Str=string(Str);
+ end;
+ Pos=varargin(Nargs-1);
+ Nrg=varargin(2);
+ if type(Nrg)==10
+ if Nargs==4
+ Cell=Findcell(TbL,Nrg);
+ else
+ Mrg=varargin(3);
+ Cell=Findcell(TbL,Nrg,Mrg);
+ end;
+ else
+ Mrg=varargin(3);
+ Cell=Findcell(TbL,Nrg,Mrg);
+ end;
+ Pt=Cell(1); Dr='c';
+ Posh=part(Pos,1);
+ Post=part(Pos,2:length(Pos));
+ if (Posh=='r')|(Posh=='R')
+ Pt=Pt+[Cell(2),0];
+ if length(Post)==0
+ Dr='w1';
+ else
+ Dr='w'+Post;
+ end;
+ end;
+ if (Posh=='l')|(Posh=='L')
+ Pt=Pt-[Cell(2),0];
+ if length(Post)==0
+ Dr='e1';
+ else
+ Dr='e'+Post;
+ end;
+ end;
+ if (Posh=='u')|(Posh=='U')
+ Pt=Pt+[0,Cell(3)];
+ if length(Post)==0
+ Dr='s1';
+ else
+ Dr='s'+Post;
+ end;
+ end;
+ if (Posh=='d')|(Posh=='D')
+ Pt=Pt-[0,Cell(3)];
+ if length(Post)==0
+ Dr='n1';
+ else
+ Dr='n'+Post;
+ end;
+ end;
+ if (Posh=='b')|(Posh=='B')
+ Pt=Pt-[0,Cell(3)];
+ if length(Post)==0
+ Dr='n1';
+ else
+ Dr='n'+Post;
+ end;
+ Str='$\mathstrut$'+Str;
+ end;
+ Letter(Pt,Dr,Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.bin
new file mode 100644
index 00000000..3a9d0634
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.sci
new file mode 100755
index 00000000..63bc151f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putcirmark.sci
@@ -0,0 +1,18 @@
+// 09.11.26
+
+function Putcirmark(TbL,Nrg,Mrg,Dt)
+ if type(Dt)==10
+ N=1; Pos=Dt; Str='';
+ else
+ N=length(Dt); Pos='l'; Str='\hspace*{2mm}';
+ end;
+ for I=1:N
+ Tmp1=Dt(I);
+ Str=Str+'\cirmark';
+ if I<N
+ Str=Str+'\hspace{3mm}';
+ end;
+ end;
+ Putcell(TbL,Nrg,Mrg,Pos,Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.bin
new file mode 100644
index 00000000..b7994dc4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.sci
new file mode 100755
index 00000000..41b9a1b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoL.sci
@@ -0,0 +1,65 @@
+// 09.12.06
+// 10.01.26
+
+function PutcoL(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Ag=varargin(2);
+ if type(Ag)==1
+ CoL=Ag;
+ else
+ Alpha='-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ Clm=[];
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp-1];
+ end;
+ end;
+ Nrg=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg=Nrg+Tmp*26^Tmp1;
+ end;
+ CoL=Nrg;
+ end;
+ Nr=length(TbL(3))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Putcell(TbL,CoL,K,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str=Dt(N);
+ Rrng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Rrng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,CoL,Rrng,Pos,Str)
+ K=Rrng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.bin
new file mode 100644
index 00000000..304768e4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.sci
new file mode 100755
index 00000000..0e2f9d0a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLexpr.sci
@@ -0,0 +1,65 @@
+// 10.04.01
+
+function PutcoLexpr(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Ag=varargin(2);
+ if type(Ag)==1
+ CoL=Ag;
+ else
+ Alpha='-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ Clm=[];
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp-1];
+ end;
+ end;
+ Nrg=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg=Nrg+Tmp*26^Tmp1;
+ end;
+ CoL=Nrg;
+ end;
+ Nr=length(TbL(3))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Dt='$'+Dt+'$';
+ Putcell(TbL,CoL,K,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str='$'+Dt(N)+'$';
+ Rrng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Rrng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,CoL,Rrng,Pos,Str)
+ K=Rrng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.bin
new file mode 100644
index 00000000..153f9afd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.sci
new file mode 100755
index 00000000..b993ffa9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/PutcoLstr.sci
@@ -0,0 +1,34 @@
+// 10.01.02 for v5
+
+function PutcoLstr(varargin)
+ Tb=varargin(1);
+ Nr=varargin(2);
+ Pos=varargin(3);
+ Str=varargin(4);
+ Sep='';
+ if length(varargin)>4
+ Sep=varargin(5);
+ end;
+ if Sep==''
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ Putcell(Tb,Nr,I,Pos,Tmp);
+ end;
+ else
+ Ltr='';
+ K=1;
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ if Tmp==Sep
+ Putcell(Tb,Nr,K,Pos,Ltr);
+ K=K+1;
+ Ltr='';
+ else
+ Ltr=Ltr+Tmp;
+ end;
+ end;
+ if Ltr~=''
+ Putcell(Tb,Nr,K,Pos,Ltr);
+ end;
+ end;
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.bin
new file mode 100644
index 00000000..f48d783b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.sci
new file mode 100755
index 00000000..8d732a9d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putdashmark.sci
@@ -0,0 +1,18 @@
+// 09.11.26
+
+function Putdashmark(TbL,Nrg,Mrg,Dt)
+ N=length(Dt);
+ Str='\hspace*{2mm}';
+ for I=1:N
+ Tmp1=Dt(I);
+ if type(Tmp1)==1
+ Tmp1=string(Tmp1);
+ end;
+ Str=Str+'\dashmark{'+Tmp1+'}';
+ if I<N
+ Str=Str+'\hspace{3mm}';
+ end;
+ end;
+ Putcell(TbL,Nrg,Mrg,'l',Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.bin
new file mode 100644
index 00000000..ae7f9955
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.sci
new file mode 100755
index 00000000..ce63e542
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrecmark.sci
@@ -0,0 +1,17 @@
+// 09.11.26
+
+function Putrecmark(TbL,Nrg,Mrg,Dt)
+ if type(Dt)==10
+ N=1; Pos=Dt; Str='';
+ else
+ N=length(Dt); Pos='l'; Str='\hspace*{2mm}';
+ end;
+ for I=1:N
+ Str=Str+'\recmark';
+ if I<N
+ Str=Str+'\hspace{3mm}';
+ end;
+ end;
+ Putcell(TbL,Nrg,Mrg,Pos,Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.bin
new file mode 100644
index 00000000..9e4117c2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.sci
new file mode 100755
index 00000000..0c2c209a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrow.sci
@@ -0,0 +1,41 @@
+// 09.12.06
+// 10.01.26
+
+function Putrow(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Row=varargin(2);
+ Nr=length(TbL(2))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Putcell(TbL,K,Row,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str=Dt(N);
+ Crng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Crng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,Crng,Row,Pos,Str)
+ K=Crng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.bin
new file mode 100644
index 00000000..f29ca390
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.sci
new file mode 100755
index 00000000..0a3158cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowexpr.sci
@@ -0,0 +1,41 @@
+// 10.04.01
+
+function Putrowexpr(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Row=varargin(2);
+ Nr=length(TbL(2))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Dt='$'+Dt+'$';
+ Putcell(TbL,K,Row,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str='$'+Dt(N)+'$';
+ Crng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Crng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,Crng,Row,Pos,Str)
+ K=Crng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.bin
new file mode 100644
index 00000000..32f9675d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.sci
new file mode 100755
index 00000000..d006f3ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Putrowstr.sci
@@ -0,0 +1,34 @@
+// 10.01.02 for v5
+
+function Putrowstr(varargin)
+ Tb=varargin(1);
+ Nr=varargin(2);
+ Pos=varargin(3);
+ Str=varargin(4);
+ Sep='';
+ if length(varargin)>4
+ Sep=varargin(5);
+ end;
+ if Sep==''
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ Putcell(Tb,I,Nr,Pos,Tmp);
+ end;
+ else
+ Ltr='';
+ K=1;
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ if Tmp==Sep
+ Putcell(Tb,K,Nr,Pos,Ltr);
+ K=K+1;
+ Ltr='';
+ else
+ Ltr=Ltr+Tmp;
+ end;
+ end;
+ if Ltr~=''
+ Putcell(Tb,K,Nr,Pos,Ltr);
+ end;
+ end;
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.bin
new file mode 100644
index 00000000..30dda6f7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.sci
new file mode 100755
index 00000000..a4f1ad89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Puttrace.sci
@@ -0,0 +1,7 @@
+// 09.09.10
+
+function Puttrace(Dt);
+ global TRACEDATA;
+ TRACEDATA=Dt;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.bin
new file mode 100644
index 00000000..aa4a60ac
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.sci
new file mode 100644
index 00000000..839452f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ratiocmyk.sci
@@ -0,0 +1,87 @@
+// 11.05.28
+// 15.05.03
+
+function R=Ratiocmyk(Color)
+ if type(Color)==1 then
+ R=Color;
+ return;
+ end;
+ Tmp=grep(Color,',');
+ if length(Tmp)>0
+ R=evstr(Tmp);
+ return;
+ end;
+ select Color
+ case 'greenyellow' then R=[0.15,0,0.69,0],
+ case 'yellow' then R=[0,0,1,0],
+ case 'goldenrod' then R=[0,0.1,0.84,0],
+ case 'dandelion' then R=[0,0.29,0.84,0],
+ case 'apricot' then R=[0,0.32,0.52,0],
+ case 'peach' then R=[0,0.5,0.7,0],
+ case 'melon' then R=[0,0.46,0.5,0],
+ case 'yelloworange' then R=[0,0.42,1,0],
+ case 'orange' then R=[0,0.61,0.87,0],
+ case 'burntorange' then R=[0,0.51,1,0],
+ case 'bittersweet' then R=[0,0.75,1,0.24],
+ case 'redorange' then R=[0,0.77,0.87,0],
+ case 'mahogany' then R=[0,0.85,0.87,0.35],
+ case 'maroon' then R=[0,0.87,0.68,0.32],
+ case 'brickred' then R=[0,0.89,0.94,0.28],
+ case 'red' then R=[0,1,1,0],
+ case 'orangered' then R=[0,1,0.5,0],
+ case 'rubinered' then R=[0,1,0.13,0],
+ case 'wildstrawberry' then R=[0,0.96,0.39,0],
+ case 'salmon' then R=[0,0.53,0.38,0],
+ case 'carnationpink' then R=[0,0.63,0,0],
+ case 'magenta' then R=[0,1,0,0],
+ case 'violetred' then R=[0,0.81,0,0],
+ case 'rhodamine' then R=[0,0.82,0,0],
+ case 'mulberry' then R=[0.34,0.9,0,0.02],
+ case 'redviolet' then R=[0.07,0.9,0,0.34],
+ case 'fuchsia' then R=[0.47,0.91,0,0.08],
+ case 'lavender' then R=[0,0.48,0,0],
+ case 'thistle' then R=[0.12,0.59,0,0],
+ case 'orchid' then R=[0.32,0.64,0,0],
+ case 'darkorchid' then R=[0.4,0.8,0.2,0],
+ case 'purple' then R=[0.45,0.86,0,0],
+ case 'plum' then R=[0.5,1,0,0],
+ case 'violet' then R=[0.79,0.88,0,0],
+ case 'royalpurple' then R=[0.75,0.9,0,0],
+ case 'blueviolet' then R=[0.86,0.91,0,0.04],
+ case 'periwinkle' then R=[0.57,0.55,0,0],
+ case 'cadetblue' then R=[0.62,0.57,0.23,0],
+ case 'cornflowerblue' then R=[0.65,0.13,0,0],
+ case 'midnightblue' then R=[0.98,0.13,0,0.43],
+ case 'navyblue' then R=[0.94,0.54,0,0],
+ case 'royalblue' then R=[1,0.5,0,0],
+ case 'blue' then R=[1,1,0,0],
+ case 'cerulean' then R=[0.94,0.11,0,0],
+ case 'cyan' then R=[1,0,0,0],
+ case 'processblue' then R=[0.96,0,0,0],
+ case 'skyblue' then R=[0.62,0,0.12,0],
+ case 'turquoise' then R=[0.85,0,0.2,0],
+ case 'tealblue' then R=[0.86,0,0.34,0.02],
+ case 'aquamarine' then R=[0.82,0,0.3,0],
+ case 'bluegreen' then R=[0.85,0,0.33,0],
+ case 'emerald' then R=[1,0,0.5,0],
+ case 'junglegreen' then R=[0.99,0,0.52,0],
+ case 'seagreen' then R=[0.69,0,0.5,0],
+ case 'green' then R=[1,0,1,0],
+ case 'forestgreen' then R=[0.91,0,0.88,0.12],
+ case 'pinegreen' then R=[0.92,0,0.59,0.25],
+ case 'limegreen' then R=[0.5,0,1,0],
+ case 'yellowgreen' then R=[0.44,0,0.74,0],
+ case 'springgreen' then R=[0.26,0,0.76,0],
+ case 'olivegreen' then R=[0.64,0,0.95,0.4],
+ case 'rawsienna' then R=[0,0.72,1,0.45],
+ case 'sepia' then R=[0,0.83,1,0.7],
+ case 'brown' then R=[0,0.81,1,0.6],
+ case 'tan' then R=[0.14,0.42,0.56,0],
+ case 'gray' then R=[0,0,0,0.5],
+ case 'black' then R=[0,0,0,1],
+ case 'white' then R=[0,0,0,0],
+ else
+ disp(Color+' may be user-defined');
+ R=Color; // 15.05.03
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.bin
new file mode 100644
index 00000000..0b858b05
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.sci
new file mode 100644
index 00000000..c1656b15
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadOutData.sci
@@ -0,0 +1,92 @@
+// 14.10.10
+// 14.12.14 for 3d
+// 15.01.03 changed ("start","end")
+// 15.10.24 in case of list-length==1
+
+function Out=ReadOutData(varargin)
+ global Fnameout
+ if length(varargin)==0 then
+ Fname=Rnameout;
+ else
+ Fname=varargin(1);
+ end
+ Fid=mopen(Fname,"rb");
+ Gstr=[];
+ Str="";
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ while 1==1
+ if Tmp=="" then
+ break;
+ end;
+ C=ascii(Tmp);
+ if Tmp=="/"|C==13|C==10 then// / CR,LF
+ if Flg==1 then
+ if part(Str,1:5)=="start" then
+ Str="Tmp=[];";
+ else
+ if part(Str,1:3)=="end" then
+ if Flg3d==0 then // 2014.12.14
+ Str=Varname+"($+1)=Listplot(Tmp);";
+ else
+ Str=Varname+"($+1)=Spaceline(Tmp);";
+ end
+ else
+ if part(Str,1:2)=="[[" then
+ Str="Tmp=[Tmp,"+Str+"];";
+ else
+ Varname=Str;
+ Str=Varname+"=list();"
+ Flg3d=-1;
+ end;
+ end;
+ end;
+ if Flg3d==-1 then // 2014.12.14
+ Tmp1=mtlb_findstr(Str,"[[");
+ if length(Tmp1)>0 then
+ Tmp2=mtlb_findstr(Str,"]");
+ Tmp3=part(Str,Tmp1:Tmp2(1));
+ Tmp4=mtlb_findstr(Tmp3,",")
+ if length(Tmp4)==2 then
+ Flg3d=1;
+ else
+ Flg3d=0;
+ end
+ end
+ end
+ Gstr=[Gstr;Str];
+ Str="";
+ Flg=0;
+ end;
+ else
+ Str=Str+Tmp;
+ Flg=1;
+ end;
+ Tmp=mgetstr(1,Fid);
+ end;
+ mclose(Fid);
+ Out=[]; // 15.10.24 from
+ Var="";
+ Ctr=0;
+ for J=1:size(Gstr,1)
+ St=Gstr(J,1);
+ Out=[Out;St];
+ Tmp=strsplit(St,"=");
+ Tmp1=Tmp(1,1);
+ Tmp2=Tmp(2,1);
+ if grep(Tmp2,"list()") then
+ if Ctr==1 then
+ Out=[Out;Var+"="+Var+"(1)"];
+ end;
+ Var=Tmp1;
+ Ctr=0;
+ end;
+ if grep(Tmp1,"$") then
+ Ctr=Ctr+1;
+ end;
+ end
+ if Ctr==1 then
+ Out=[Out;Var+"="+Var+"(1)"];
+ end; // 15.10.24 upto
+ Out;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.bin
new file mode 100644
index 00000000..e078ba2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.sci
new file mode 100644
index 00000000..eaf9f6df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ReadfromCindy.sci
@@ -0,0 +1,38 @@
+// s:2014,09.08
+// e:2014.09.26
+// e:2014.10.07 debugged, code changed
+// e:2014.10.08 CR | LF
+
+function Out=ReadfromCindy(Fname)
+ Fid=mopen(Fname,"rb");
+ Gline=list();
+ Gpt=list();
+ Gstr=[];
+ Str="";
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ while 1==1
+ if Tmp=="" then
+ if Flg==1 then
+ Gstr=[Gstr;Str];
+ Str="";
+ Flg=1;
+ end;
+ break;
+ end
+ C=ascii(Tmp);
+ if C==13|C==10 then// CR,LF
+ if Flg==1 then
+ Gstr=[Gstr;Str];
+ Str="";
+ Flg=0;
+ end;
+ else
+ Str=Str+Tmp;
+ Flg=1;
+ end;
+ Tmp=mgetstr(1,Fid);
+ end;
+ mclose(Fid);
+ Out=Gstr;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.bin
new file mode 100644
index 00000000..05df3aa2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.sci
new file mode 100755
index 00000000..7109f789
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Readtextdata.sci
@@ -0,0 +1,160 @@
+// 08.05.22
+// 08.05.23
+// 08.05.26
+// 08.05.28
+// 10.04.25
+// 11.01.05
+// 13.10.06 format, debug
+// 14.01.20 debugged (Big data)
+
+function OutL=Readtextdata(varargin)
+ OutL=[];
+ Nargs=length(varargin);
+ Fname=varargin(1);
+ Suuji='0123456789.+-';
+ Sep='';
+ Hajime=[1,1];
+ N=%inf;
+ R=%inf;
+ D=-%inf; // 11.01.04
+ Fmt="%lf"; // 13.10.06
+ Flg=0;
+ for I=2:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ if Flg==0
+ Hajime=Tmp;
+ Flg=1
+ else
+ Owari=Tmp;
+ end
+ elseif mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ else
+ if part(Tmp,1)=="%" // 13.10.06
+ Fmt=Tmp
+ else
+ Sep=Tmp;
+ if Tmp=='s' Sep=' '; end
+ if Tmp==',' Sep=','; end
+ if Tmp=='t' Sep=char(9); end
+ end
+ end
+ end
+ Owari=Hajime+[N-1,R-1];
+ Fid=mopen(Fname,'rb');
+ SL=[];
+ S='';
+ Lsp=0;
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ while 1==1 // 2014.01.20
+ if Tmp=='' break; end
+ C=ascii(Tmp);
+ if C>=32 | C==9
+ if C==32
+ if Flg==1
+ Tmp='';
+ end
+ Flg=1
+ else
+ Flg=0;
+ end
+ S=S+Tmp;
+ Tmp=mgetstr(1,Fid);
+ else
+ SL=[SL;S];
+ S='';
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ if Lsp==0
+ if C==10 // LF
+ Lsp=1;
+ elseif C==13
+ if ascii(Tmp)==10
+ Lsp=3; // CR LF
+ Tmp=mgetstr(1,Fid);
+ else
+ Lsp=2; // CR
+ end
+ else
+ break;
+ end
+ else
+ if C==10 | C==13
+ if Lsp==3
+ Tmp=mgetstr(1,Fid);
+ end
+ else
+ break
+ end
+ end
+ end
+ end
+ mclose(Fid);
+ if length(S)>0 then // 2013.10.06
+ SL=[SL;S]
+ end
+ for I=1:size(SL,1)
+ S=SL(I,1);
+ if S=='' continue; end
+ if mtlb_findstr(Suuji,Strop(1,S))~=[]
+ break
+ end
+ end
+ Hajime(1,1)=max(Hajime(1,1),I);
+ S=SL(Hajime(1),1);
+ if Sep==''
+ if length(mtlb_findstr(S,char(9)))~=0
+ Sep=char(9);
+ elseif length(mtlb_findstr(S,','))~=0
+ Sep=',';
+ else
+ Sep=' ';
+ end
+ end
+ Tmp=mtlb_findstr(S,Sep);
+ J=length(Tmp);
+ if Tmp(J)~=length(S)
+ J=J+1;
+ end
+ Owari(1,1)=min(size(SL,1),Owari(1));
+ Owari(1,2)=min(J,Owari(2));
+ S=SL(Owari(1),1);
+ while S==''
+ Owari(1,1)=Owari(1,1)-1;
+ S=SL(Owari(1),1);
+ end
+ OutL=[];
+ for J=Hajime(1):Owari(1)
+ S=SL(J,1);
+ if S==''
+ Tmp=%inf*ones(1,Owari(2)-Hajime(2)+1);
+ OutL=[OutL;Tmp];
+ continue
+ end
+ Tmp=Strop(1,S);
+ if mtlb_findstr(Suuji+Sep,Tmp)==[]
+ continue
+ end
+ SpL=[0,mtlb_findstr(S,Sep),length(S)+1];
+ Data=[];
+ for K=Hajime(2):Owari(2)
+ Tmp=Strop(SpL(K)+1:SpL(K+1)-1,S);
+ Tmp1=msscanf(Tmp,Fmt); // 13.10.06
+ Data=[Data,Tmp1];
+ end
+ OutL=[OutL;Data];
+ end;
+ if D~=-%inf // 11.01.04
+ Data=[];
+ for I=1:size(OutL,1)
+ Tmp=OutL(I,:);
+ if Tmp(1)<=D // 11.01.04
+ Tmp=[%inf,%inf];
+ end;
+ Data=[Data;Tmp];
+ end;
+ OutL=Data;
+ end; //
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.bin
new file mode 100644
index 00000000..2269d9ad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.sci
new file mode 100755
index 00000000..837a5727
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Reflectdata.sci
@@ -0,0 +1,51 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Reflectdata(varargin)
+ Nargs=length(varargin)
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ if Nargs==1
+ PtA=[0,0];PtB=PtA;
+ else
+ Pts=varargin(2);
+ if length(Pts)==2
+ PtA=Pts; PtB=PtA;
+ else
+ PtA=Pts(1,1:2); PtB=Pts(1,3:4);
+ end
+ end
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ if PtA==PtB
+ X2=2*PtA(1)-X1;
+ Y2=2*PtA(2)-Y1;
+ else
+ U=PtB(1)-PtA(1);
+ V=PtB(2)-PtA(2);
+ A=PtA(1);
+ B=PtA(2);
+ X2=(U^2-V^2)/(U^2+V^2)*X1+2*U*V/(U^2+V^2)*Y1-2*V*(U*B-V*A)/(U^2+V^2);
+ Y2=2*U*V/(U^2+V^2)*X1-(U^2-V^2)/(U^2+V^2)*Y1+2*U*(U*B-V*A)/(U^2+V^2);
+ end
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.bin
new file mode 100644
index 00000000..1a99c6ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.sci
new file mode 100755
index 00000000..facea4d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rmmember.sci
@@ -0,0 +1,20 @@
+// 11.01.14 New
+
+function Out=Rmmember(L,Rm)
+ if type(L)==1
+ Out=[];
+ end;
+ if type(L)==15
+ Out=list();
+ end;
+ for J=1:length(L)
+ Tmp=L(J);
+ if ~Member(Tmp,Rm)
+ Out($+1)=Tmp;
+ end;
+ end;
+ if type(L)==1 & size(L,1)==1
+ Out=Out';
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.bin
new file mode 100644
index 00000000..c9391ec5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.sci
new file mode 100755
index 00000000..9082290d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3data.sci
@@ -0,0 +1,40 @@
+// 08.08.15
+// 14.03.23 debugged "center"
+// 15.04.12
+
+function Out=Rotate3data(varargin)
+// Eps=10^(-4);
+ Nargs=length(varargin);
+ Pd3=varargin(1);
+ Pd3=Flattenlist(Pd3); // 15.04.12
+ W1=varargin(2);
+ W2=varargin(3);
+ C=[0,0,0];
+ if Nargs>=4
+ C=varargin(4);
+ end;
+// if Mixtype(Pd3)==1 // 15.04.12 from
+// Pd3=MixS(Pd3);
+// elseif Mixtype(Pd3)==3
+// Tmp=[];
+// for I=1:Mixlength(Pd3)
+// Tmp=Mixjoin(Tmp,Mixop(I,Pd3));
+// end;
+// Pd3=Tmp;
+// end;
+ Out=[];
+ for I=1:length(Pd3)
+ PD=Op(I,Pd3);
+ Ans=[];
+ for J=1:size(PD,1)
+ P=PD(J,:);
+ Tmp=Rotate3pt(P,W1,W2,C); // 14.03.23
+ Ans=[Ans;Tmp];
+ end;
+ Out=Mixadd(Out,Ans);
+ end;
+ if length(Out)==1
+ Out=Op(1,Out);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.bin
new file mode 100644
index 00000000..35da0ed9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.sci
new file mode 100755
index 00000000..910aa734
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotate3pt.sci
@@ -0,0 +1,75 @@
+// 08.08.15
+
+function Ans=Rotate3pt(varargin)
+ Eps=10^(-4);
+ Nargs=length(varargin);
+ P=varargin(1);
+ W1=varargin(2);
+ W2=varargin(3);
+ C=[0,0,0];
+ if Nargs>=4
+ C=varargin(4);
+ end;
+ if type(W2)==1 & length(W2)==1
+ Ct=cos(W2);
+ St=sin(W2);
+ V3=1/norm(W1)*W1;
+ if V3(1)==0
+ Tmp=[1,0,0];
+ else
+ Tmp=[0,1,0];
+ end;
+ W1=[Tmp(2)*V3(3)-Tmp(3)*V3(2),Tmp(3)*V3(1)-Tmp(1)*V3(3),Tmp(1)*V3(2)-Tmp(2)*V3(1)];
+ V1=1/norm(W1)*W1;
+ V2=[V3(2)*V1(3)-V3(3)*V1(2),V3(3)*V1(1)-V3(1)*V1(3),V3(1)*V1(2)-V3(2)*V1(1)];
+ else
+ Tmp=[W1(2)*W2(3)-W1(3)*W2(2),W1(3)*W2(1)-W1(1)*W2(3),W1(1)*W2(2)-W1(2)*W2(1)];
+ if norm(Tmp)<Eps
+ Ans=P;
+ return;
+ end;
+ V1=1/norm(W1)*W1;
+ Ns=V1(1)*W2(1)+V1(2)*W2(2)+V1(3)*W2(3);
+ Tmp=W2-Ns*V1;
+ V2=1/norm(Tmp)*Tmp;
+ Tmp=[V1(2)*V2(3)-V1(3)*V2(2),V1(3)*V2(1)-V1(1)*V2(3),V1(1)*V2(2)-V1(2)*V2(1)];
+ V3=1/norm(Tmp)*Tmp;
+ Ct=Ns/norm(W2);
+ St=sqrt(1-Ct^2);
+ end;
+ if norm(Tmp)<Eps
+ Ans=P;
+ return;
+ end;
+ V1x=V1(1); V1y=V1(2); V1z=V1(3);
+ V2x=V2(1); V2y=V2(2); V2z=V2(3);
+ V3x=V3(1); V3y=V3(2); V3z=V3(3);
+ if Mixtype(P)~=1
+ PtL=P;
+ else
+ PtL=MixS(P);
+ end;
+ Ans=[];
+ for N=1:Mixlength(PtL)
+ P=Mixop(N,PtL);
+ if P(1)==%inf
+ Ans=Mixadd(Ans,[%inf,%inf,%inf]);
+ continue;
+ end;
+ x=P(1)-C(1); y=P(2)-C(2); z=P(3)-C(3);
+ X=((V1x*Ct+V2x*St)*V1x+(-V1x*St+V2x*Ct)*V2x+V3x^2)*x;
+ X=X+((V1x*Ct+V2x*St)*V1y+(-V1x*St+V2x*Ct)*V2y+V3x*V3y)*y;
+ X=X+((V1x*Ct+V2x*St)*V1z+(-V1x*St+V2x*Ct)*V2z+V3x*V3z)*z;
+ Y=((V1y*Ct+V2y*St)*V1x+(-V1y*St+V2y*Ct)*V2x+V3x*V3y)*x;
+ Y=Y+((V1y*Ct+V2y*St)*V1y+(-V1y*St+V2y*Ct)*V2y+V3y^2)*y;
+ Y=Y+((V1y*Ct+V2y*St)*V1z+(-V1y*St+V2y*Ct)*V2z+V3y*V3z)*z;
+ Z=((V1z*Ct+V2z*St)*V1x+(-V1z*St+V2z*Ct)*V2x+V3x*V3z)*x;
+ Z=Z+((V1z*Ct+V2z*St)*V1y+(-V1z*St+V2z*Ct)*V2y+V3y*V3z)*y;
+ Z=Z+((V1z*Ct+V2z*St)*V1z+(-V1z*St+V2z*Ct)*V2z+V3z^2)*z;
+ Ans=Mixadd(Ans,C+[X,Y,Z]);
+ end;
+ if Mixlength(Ans)==1
+ Ans=Mixop(1,Ans);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.bin
new file mode 100644
index 00000000..fda8e518
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.sci
new file mode 100755
index 00000000..845cac17
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Rotatedata.sci
@@ -0,0 +1,39 @@
+// 08.05.23 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Rotatedata(varargin)
+ Nargs=length(varargin);
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ Theta=varargin(2);
+ if Nargs==2,
+ Pt=[0,0]
+ else
+ Pt=varargin(3);
+ end
+ Cx=Pt(1);Cy=Pt(2);
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ end;
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.bin
new file mode 100644
index 00000000..dd5656fd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.sci
new file mode 100755
index 00000000..d14f3b3a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Roundstr.sci
@@ -0,0 +1,7 @@
+// 10.11.04
+
+function Out=Roundstr(X,Ni,Nf)
+ Na=Ni+1+Nf;
+ Fmt='%'+string(Na)+'.'+string(Nf)+'f';
+ Out=sprintf(Fmt,X);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.bin
new file mode 100644
index 00000000..7aeb7385
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.sci
new file mode 100755
index 00000000..7e563f4b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Scaledata.sci
@@ -0,0 +1,39 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Scaledata(varargin)
+ Nargs=length(varargin);
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ A=varargin(2);
+ B=varargin(3);
+ if Nargs==3
+ Pt=[0,0];
+ else
+ Pt=varargin(4);
+ end
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ X2=Pt(1)+A*(X1-Pt(1));
+ Y2=Pt(2)+B*(Y1-Pt(2));
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.bin
new file mode 100644
index 00000000..4ebf14d1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.sci
new file mode 100755
index 00000000..e918e475
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sectionview.sci
@@ -0,0 +1,14 @@
+// 09.09.10
+// 09.10.12 remove:Uveq, add:Glist
+
+function Out=Sectionview(PtA,Vec,Fd,Glist,Np,Eps)
+ Uv=1/norm(Vec)*Vec;
+ Nv=[Uv(2),-Uv(1),0];
+ G1=Sfcutdata(Fd,Mix(Nv,PtA),Np);
+ G2=Spaceline([PtA,PtA+10*Uv]);
+ Tmp=Mixjoin(G1,G2,Glist);
+ Tmp1=Viewfrom(Nv,Tmp);
+ Out=Tmp;
+endfunction;
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.bin
new file mode 100644
index 00000000..4b102f32
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.sci
new file mode 100755
index 00000000..2a4a3c95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setangle.sci
@@ -0,0 +1,17 @@
+// 08.07.11
+// 08.08.12
+// 09.02.27
+
+function Setangle(varargin)
+ global PHI THETA;
+ Nargs=length(varargin);
+ if Nargs<2
+ Mixdisp(Mix('theta=',THETA*180/%pi));
+ Mixdisp(Mix('phi=',PHI*180/%pi));
+ return;
+ else
+ PHI=varargin(2)*%pi/180;
+ THETA=varargin(1)*%pi/180;
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.bin
new file mode 100644
index 00000000..7ea694d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.sci
new file mode 100755
index 00000000..8f9d6053
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setarrow.sci
@@ -0,0 +1,35 @@
+// 08.05.31
+// 09.02.27
+
+function Setarrow(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle;
+ Nargs=length(varargin);
+ if Nargs==0
+ Mixdisp(Mix('Size=',YaSize));
+ Mixdisp(Mix('Angle=',YaAngle));
+ Mixdisp(Mix('Position=',YaThick));
+ Mixdisp(Mix('Style=',YaStyle));
+ return;
+ end;
+ Flg=0;
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ Flg=Flg+1;
+ if Flg==1 YaSize=Tmp; end
+ if Flg==2
+ if Tmp<5
+ YaAngle=18*Tmp;
+ else
+ YaAngle=Tmp;
+ end
+ end
+ if Flg==3 YaPosition=Tmp; end
+ if Flg==4 YaThick=Tmp; end
+ end
+ if type(Tmp)==10
+ YaStyle=Tmp
+ end
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.bin
new file mode 100644
index 00000000..55e4fb8c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.sci
new file mode 100755
index 00000000..5fab30e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setax.sci
@@ -0,0 +1,102 @@
+// 08.08.08
+// 09,02.27
+
+function Out=Setax(varargin)
+ global ZIKU XNAME XPOS YNAME YPOS ONAME OPOS ARROWSIZE;
+ Nargs=length(varargin);
+ if Nargs==0
+ if ZIKU=='line'
+ Tmp=','
+ else
+ Tmp='(Arrowsize='+string(ARROWSIZE)+'),'
+ end;
+ Str=...
+ ZIKU+Tmp+...
+ XNAME+','+XPOS+','+YNAME+','+...
+ YPOS+','+ONAME+','+OPOS;
+ Out=Str;
+ disp(Str);
+ return;
+ end;
+ ArgL=[];
+ Is=1;
+ Tmp=varargin(1);
+ if type(Tmp)==1 & length(Tmp)==1
+ Is=varargin(1);
+ ArgL=[];
+ for I=1:Is-1
+ ArgL=[ArgL,''];
+ end
+ for I=2:Nargs
+ ArgL=[ArgL,varargin(I)];
+ end
+ else
+ if Nargs==1
+ ArgL=[varargin(1)];
+ else
+ Tmp=varargin(2);
+ if type(Tmp)==1 & length(Tmp)==1
+ ARROWSIZE=Tmp;
+ ArgL=[varargin(1)];
+ for I=3:Nargs
+ ArgL=[ArgL,varargin(I)];
+ end;
+ else
+ ArgL=[];
+ for I=1:Nargs
+ ArgL=[ArgL,varargin(I)];
+ end;
+ end
+ end
+ end
+ for I=size(ArgL,2)+1:7
+ ArgL=[ArgL,''];
+ end
+ Zk=ArgL(1);
+ if Zk~=''
+ ZL=msscanf(Zk,'%c%f');
+ Zk=ZL(1);
+ if length(ZL)>1 // modified at 080807
+ ARROWSIZE=ZL(2);
+ end
+ end
+ Xn=ArgL(2); Xp=ArgL(3);
+ Yn=ArgL(4); Yp=ArgL(5);
+ Genn=ArgL(6); Genp=ArgL(7);
+ if Zk~=''
+ C=Zk;
+ if C=='a'
+ ZIKU='arrow';
+ else
+ ZIKU='line';
+ end
+ end
+ if Xn~=''
+ XNAME='$'+Xn+'$'
+ end
+ if Xp~=''
+ XPOS=Xp
+ end
+ if Yn~=''
+ YNAME='$'+Yn+'$'
+ end
+ if Yp~=''
+ YPOS=Yp
+ end
+ if Genn~=''
+ ONAME=Genn
+ end
+ if Genp~=''
+ OPOS=Genp
+ end
+ if ZIKU=='line'
+ Tmp=','
+ else
+ Tmp='(Arrowsize='+string(ARROWSIZE)+'),'
+ end;
+ Str=...
+ ZIKU+Tmp+...
+ XNAME+','+XPOS+','+YNAME+','+...
+ YPOS+','+ONAME+','+OPOS;
+ Out=Str;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.bin
new file mode 100644
index 00000000..a6d15d9d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.sci
new file mode 100644
index 00000000..51b8e0c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcolor.sci
@@ -0,0 +1,36 @@
+// 11.05.28
+// 11.08.24
+// 15.05.03
+
+function Setcolor(varargin)
+ global Wfile FID;
+ Nargs=length(varargin);
+ Color='black';
+ Kosa=1;
+ Color=varargin(1);
+ if length(varargin)>1
+ Kosa=varargin(2);
+ end;
+ Iro=Ratiocmyk(Color);
+ if type(Iro)==10
+ Str='\color{'+Iro+"}%";
+ else
+ if size(Iro,2)>3
+ Str='\color[cmyk]{';
+ else
+ Str='\color[rgb]{';
+ end;
+ for J=1:size(Iro,2)
+ Str=Str+string(Kosa*Iro(J));
+ if J<size(Iro,2)
+ Str=Str+',';
+ end;
+ end;
+ Str=Str+'}%';
+ end;
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.bin
new file mode 100644
index 00000000..e8d09380
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.sci
new file mode 100755
index 00000000..4b8b932b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setcounter.sci
@@ -0,0 +1,13 @@
+// 09.09.10
+
+function Setcounter(varargin)
+ global GCOUNTER;
+ Nargs=length(varargin);
+ if Nargs==0
+ N=1;
+ else
+ N=varargin(1);
+ end;
+ GCOUNTER=N;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.bin
new file mode 100644
index 00000000..b50381fd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.sci
new file mode 100755
index 00000000..ae713f4e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmark.sci
@@ -0,0 +1,43 @@
+// 09.11.26
+// 09.12.06
+
+function Setmark();
+ Xminnow=Xmin(); Xmaxnow=Xmax();
+ Yminnow=Ymin(); Ymaxnow=Ymax();
+ Setwindow([-1.5,1.5],[-2.3,2.3]);
+ F1=Framedata();
+ F2=Paramplot('[1.5*cos(t),2.3*sin(t)]','t=[0,2*%pi]','N=25');
+ Texcom('\def\recmark{');
+ Texcom('\begin{minipage}[c]{3mm}');
+ Beginpicture('1mm');
+ Shade(F1);
+ Drwline(F1);
+ Endpicture(0);
+ Texcom('');
+ Texcom('\end{minipage}');
+ Texcom('}');
+
+ Texcom('\def\cirmark{');
+ Texcom('\begin{minipage}[c]{3mm}');
+ Beginpicture('1mm');
+ Shade(F2);
+ Drwline(F2);
+ Endpicture(0);
+ Texcom('');
+ Texcom('\end{minipage}');
+ Texcom('}');
+
+ Texcom('\def\dashmark#1{');
+ Texcom('\begin{minipage}[c]{3mm}');
+ Beginpicture('1mm');
+ Setpen(0.5);
+ Dashline(F2,0.5,0.5);
+ Fontsize('ss');
+ Letter([0,0],'c','#1');
+ Endpicture(0);
+ Texcom('');
+ Texcom('\end{minipage}');
+ Texcom('}');
+ Setwindow([Xminnow,Xmaxnow],[Yminnow,Ymaxnow]);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.bin
new file mode 100644
index 00000000..1ad13b66
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.sci
new file mode 100755
index 00000000..a17c9e95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setmarklen.sci
@@ -0,0 +1,17 @@
+//
+// 09.02.27
+// 14.03.05 MARKLEN
+
+function Setmarklen(varargin)
+ global MARKLEN MARKLENInit MARKLENNow;
+ Nargs=length(varargin);
+ if Nargs==0
+ Tmp=MARKLEN/MARKLENInit;
+ Tmp=round(Tmp*100)/100;
+ disp(Tmp);
+ return;
+ end;
+ Size=varargin(1);
+ MARKLEN=MARKLENInit*Size;
+ MARKLENNow=MARKLEN;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.bin
new file mode 100644
index 00000000..af675f9c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.sci
new file mode 100644
index 00000000..2ee06cbb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjdecimals.sci
@@ -0,0 +1,8 @@
+// s : 2014.06.22
+
+function Setobjdecimals(n)
+ global OBJFMT;
+ s1=string(n);
+ s2=string(n+3);
+ OBJFMT="%"+s2+"."+s1+"f";
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.bin
new file mode 100644
index 00000000..5ae9c620
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.sci
new file mode 100644
index 00000000..22f13c4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setobjscale.sci
@@ -0,0 +1,6 @@
+// s : 2014.06.22
+
+function Setobjscale(scale)
+ global OBJSCALE;
+ OBJSCALE=scale;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.bin
new file mode 100644
index 00000000..05b3c3e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.sci
new file mode 100755
index 00000000..62a1f624
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setorigin.sci
@@ -0,0 +1,14 @@
+//
+// 09.02.27
+
+function Setorigin(varargin)
+ global GENTEN;
+ Nargs=length(varargin);
+ if Nargs==0
+ disp(GENTEN);
+ return;
+ end;
+ Pt=varargin(1);
+ GENTEN=Pt;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.bin
new file mode 100644
index 00000000..fd0d6bd7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.sci
new file mode 100755
index 00000000..b3f0cbad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpen.sci
@@ -0,0 +1,11 @@
+function Setpen(Width)
+ global Wfile FID PenThick PenThickInit;
+ PenThick=round(PenThickInit*Width);
+ Str='\linethickness{'+string(PenThick/1000)+'in}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.bin
new file mode 100644
index 00000000..07e56733
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.sci
new file mode 100755
index 00000000..455551bb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpers.sci
@@ -0,0 +1,16 @@
+// 08.08.12
+// 08.08.15
+
+function Setpers(varargin)
+ global FocusPoint EyePoint;
+ Nargs=length(varargin);
+ if Nargs==0
+ Mixdisp(Mix('FocusPoints=',FocusPoint));
+ Mixdisp(Mix('EyePoint=',EyePoint));
+ return;
+ else
+ FocusPoint=varargin(1);
+ EyePoint=varargin(2);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.bin
new file mode 100644
index 00000000..43792ee3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.sci
new file mode 100755
index 00000000..a3b86b01
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setpt.sci
@@ -0,0 +1,16 @@
+//
+// 09.02.27
+
+function Setpt(varargin)
+ global TenSize TenSizeInit;
+ Nargs=length(varargin);
+ if Nargs==0
+ Tmp=TenSize/TenSizeInit;
+ Tmp=round(Tmp*100)/100;
+ disp(Tmp);
+ return;
+ end;
+ Size=varargin(1);
+ TenSize=TenSizeInit*Size;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.bin
new file mode 100644
index 00000000..85da2aca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.sci
new file mode 100755
index 00000000..1d4868c9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setscaling.sci
@@ -0,0 +1,28 @@
+function Out=Setscaling(varargin)
+ global LOGX LOGY SCALEX SCALEY;
+ Nargs= length(varargin)
+ if Nargs==0
+ Out=[SCALEY,LOGX,LOGY];
+ return;
+ end;
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ SCALEY=Tmp;
+ end;
+ if type(Tmp)==10
+ if Tmp=="l"
+ LOGX=0;
+ LOGY=1;
+ elseif Tmp=="ll"
+ LOGX=1
+ LOGY=1
+ else
+ LOGX=0
+ LOGY=0
+ end;
+ end;
+ end;
+ Out=[SCALEY,LOGX,LOGY];
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.bin
new file mode 100644
index 00000000..4e097b75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.sci
new file mode 100755
index 00000000..cb6c79ae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoL.sci
@@ -0,0 +1,12 @@
+// 08.08.12
+// 08.09.21
+// 09.03.09
+
+function SetstereoL(R,T,P,H)
+ X=R*sin(T*%pi/180)*cos(P*%pi/180);
+ Y=R*sin(T*%pi/180)*sin(P*%pi/180);
+ Z=R*cos(T*%pi/180);
+ Eye=[X+H/2*Y/(X^2+Y^2),Y-H/2*X/(X^2+Y^2),Z];
+ Setpers([0,0,0],Eye);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.bin
new file mode 100644
index 00000000..bf25b018
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.sci
new file mode 100755
index 00000000..ff9de892
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/SetstereoR.sci
@@ -0,0 +1,10 @@
+// 08.08.12
+
+function SetstereoR(R,T,P,H)
+ X=R*sin(T*%pi/180)*cos(P*%pi/180);
+ Y=R*sin(T*%pi/180)*sin(P*%pi/180);
+ Z=R*cos(T*%pi/180);
+ Eye=[X-H/2*Y/(X^2+Y^2),Y+H/2*X/(X^2+Y^2),Z];
+ Setpers([0,0,0],Eye);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.bin
new file mode 100644
index 00000000..455d977f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.sci
new file mode 100755
index 00000000..84ea4d60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setunitlen.sci
@@ -0,0 +1,78 @@
+// 08.12.06
+// 08.12.18
+// 09.02.20
+// 09.02.27
+// 14.03.05 MARKLEN
+// 17.03.19 VL=[] => VL="";
+
+function Out=Setunitlen(varargin)
+ global FID XMIN XMAX YMIN YMAX ULEN
+ global MilliIn MARKLEN MARKLENNow PenThickInit;
+ if length(varargin)==0
+ Out=ULEN;
+ disp(ULEN);
+ return;
+ end;
+ Ul=varargin(1);
+ Dx=XMAX-XMIN;
+ Dy=YMAX-YMIN;
+ Sym='.0123456789 +-*/';
+ Tmp=ascii(Sym);
+ SL=Sym;
+ OL='+-*/';
+ if Ul~=''
+ ULEN=Ul;
+ end;
+ Out=ULEN;
+ Is=1;
+ VL=""; // 17.03.19
+ Ucode=ascii(ULEN);
+ for I=1:length(Ucode)
+ C=char(Ucode(I));
+ if mtlb_findstr(SL,C)~=[]
+ if mtlb_findstr(OL,C)
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str+C;
+ Is=I+1;
+ end
+ else
+ Unit=char(Ucode(I:(I+1)));
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str;
+ break;
+ end;
+ end;
+ Valu=evstr(VL);
+ Str=string(Valu);
+ ULEN=Str+Unit;
+ Out=ULEN;
+ if Unit=='cm'
+ MilliIn=1000/2.54*Valu;
+ end
+ if Unit=='mm'
+ MilliIn=1000/2.54*Valu/10;
+ end
+ if Unit=='in'
+ MilliIn=1000*Valu;
+ end
+ if Unit=='pt'
+ MilliIn=1000/72.27*Valu;
+ end
+ if Unit=='pc'
+ MilliIn=1000/6.022*Valu;
+ end
+ if Unit=='bp'
+ MilliIn=1000/72*Valu;
+ end
+ if Unit=='dd'
+ MilliIn=1000/1238/1157/72.27*Valu;
+ end
+ if Unit=='cc'
+ MilliIn=1000/1238/1157/72.27*12*Valu;p
+ end
+ if Unit=='sp'
+ MilliIn=1000/72.27/65536*Valu/10;
+ end
+ MARKLEN=MARKLENNow*1000/2.54/MilliIn;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.bin
new file mode 100644
index 00000000..a2e35ff2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.sci
new file mode 100755
index 00000000..92883d5a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setversion.sci
@@ -0,0 +1,182 @@
+//
+// 08.11.12 V3.0.2b
+// 08.11.26 V3.0.2c
+// 08.12.08 V3.0.2d
+// 08.12.11 v3.0.2e
+// 08.12.17 v3.0.3a
+// 08.12.21 v3.0.3b
+// 08.12.30 v3.0.3c
+// 09.01.15 v3.0.3d
+// 09.02.20 v3.0.3e
+// 09.02.27 v3.0.4a
+// 09.02.27 v3.0.4b
+// 09.03.06 v3.0.4c
+// 09.03.09 v3.0.4d
+// 09.03.10 v3.0.4e
+// 09.03.12 v3.0.5a
+// 09.05.12 v3.0.5b
+// 09.05.18 v3.0.5c
+// 09.05.27 v3.0.6a
+// 09.06.01 v3.0.6b
+// 09.06.05 v3.0.6c
+// 09.06.13 v3.0.6d
+// 09.06.24 v3.0.6e
+// 09.08.12 v3.0.7a
+// 09.08.13 v3.0.7b
+// 09.08.23 v3.0.8a
+// 09.09.10 v3.0.9a
+// 09.09.18 v3.1.0a
+// 09.09.21 v3.1.0b
+// 09.09.25 v3.1.1a
+// 09.09.25 v3.1.1b
+// 09.10.01 v3.1.1c
+// 09.10.03 v3.1.2a
+// 09.10.04 v3.1.3a
+// 09.10.05 v3.1.3b
+// 09.10.08 v3.1.3c
+// 09.10.09 v3.1.4a
+// 09.10.11 v3.1.5a
+
+// Structure changed
+// 09.10.11 v3.2.0beta
+// 09.10.31 v3.2.0beta1031
+
+// 09.11.01 v3.2.0a
+// 09.11.04 v3.2.1a
+// 09.11.12 v3.2.1b
+// 09.11.14 v3.2.1c
+// 09.11.14 v3.2.1d
+// 09.11.21 v3.2.1e
+// 09.11.26 v3.2.2a
+// 09.12.05 v3.2.2b
+// 09.12.06 v3.2.3a
+// 09.12.17 v3.2.3b
+// 09.12.24 v3.2.3c
+// 09.12.25 v3.3.1a
+// 09.12.26 v3.3.1b
+// 09.12.28 v3.3.1c
+// 09.12.31 v3.3.1d ( for v5.2.0)
+// 10.01.01 v3.4.0alpha
+// 10.01.05 v3.4.0beta
+// 10.01.10 v3.4.1a
+// 10.01.12 v3.4.1b
+// 10.01.16 v3.4.1c
+// 10.01.21 v3.4.2a
+// 10.02.01 v3.4.2b
+// 10.02.07 v3.4.2c
+// 10.02.12 v3.4.2d
+// 10.02.14 v3.4.2e
+// 10.02.16 v3.4.3a
+// 10.02.20 v3.4.3b Windisp
+// 10.02.24 v3.4.3c Execmd
+// 10.03.07 v3.4.3d
+// 10.03.28 v3.4.4a
+// 10.03.28 v3.4.4b
+// 10.04.03 v3.4.5a
+// 10.04.10 v3.4.5b
+// 10.04.16 v3.4.6a
+// 10.04.24 v3.4.6b
+// 10.04.24 v3.4.6b1
+// 10.04.27 v3.4.7a
+// 10.05.03 v3.4.7b
+// 10.05.09 v3.4.7c Makeskeletondata, Makeskeletonpersdata
+// 10.05.12 v3.4.7d Texfor
+// 10.05.15 v3.4.8a Texctr
+// 10.08.15 v3.5.0a Phcutoffdata
+// 10.09.02 Dropnumlistcrv
+// 10.10.20 Texfor
+// 10.11.04 Hatchdata, Roundstr
+// 10.11.13 v3.5.0b Flattenlist added. Dashline, Invdashline changed
+// 10.12.02 v3.5.0c Lineplot changed
+// Makecurves debugged
+// Enclosing changed (Output )
+// 11.01.07 v3.5.1a Readtextdata is changed
+// Dividegraphiics, Splinedata are changed
+// Facesdata is debugged (HiddenL)
+// Rmmember added
+// 11.04.13 Nohiddenpers2, Htickmark, Vtickmark are debugged
+// 11.05.29 v4.0.0a ketpict2e released, too
+// Setcolor, Ratiocmyk
+// 11.11.02 v4.0.0b Joingraphics changed
+// 11.12.12 v4.0.0c Skeletonparadata... changed (for various list )
+// 11.12.18 Framedata (compliant for list )
+// 12.01.07 v4.0.1a Arrowline, Arrowhead ( kirikomi )
+// 12.04.16 v4.0.1b Arrowhead debugged
+// 12.08.26 v4.0.1c Arrowline debugged
+// 13.05.03 v4.2a Tabledata, Pointdata changed
+// Dividetable, Partframe added
+// 13.05.17 v4.2_1a Arrowhead debugged
+// Openfile, Closefile, Ketinit() changed
+// 13.08.13 v4.2_2 Cancoordpara added
+// 13.10.06 v4.2_2a Readtextdata debugged and changed (Format)
+// 13.11.02 v4.3_0 __ added to local variables
+// Openfile, Closefile changed
+// 13.11.02 v4.3_0a Closefile debugged
+// 13.11.13 v4.3_0b Arrowhead, Arrowheaddata debugged
+// 13.12.03 v4.3_1 Bowname changed, Meetpoint debugged
+// 14.01.10 v4.3_1a Readtextdata debugged (Big data)
+// 14.03.05 v4.3_1b MARKLEN separated from MEMORI
+// 14.03.23 Rotate3data debugged
+// 14.03.30 v43_1c Facesdata debugged
+// 14.06.09 v43_2a Phcutdata debugged (cause unknown )
+// 14.06.22 v5_0_1a Obj macros added
+// 14.06.28 v5_0_1b debug cuspsplit (para, pers)
+// 14.07.05 v5_0_1c debug (warning ) Makeskeletondata, Makeskeletonpersdata
+// debug Makexybdy (by Kitahara)
+// 14.07.18 v5_0_1d Objsurf, Objthicksurf changed ( input argument )
+// 14.08.26 V5_1_0a Symbdata, Symb3data, Objsymb added
+// Objcurve debugged
+// 14.09.07 v5_1_0b Objjoin added
+// 14.09,08 v5_1_1a ReadfromCindy added
+// 14.09.16 v5_1_1b WritetoCindy added
+// 14.09.26 v5_1_1c Derivative changed ( to numderivative)
+// 14.09.30 v5_1_1d Assignrep changed
+// 14.10.08 v5_1_1e ReadfromCindy debugged
+// 14.10.08 v5_1_1f ReadfromCindy supported CF|LF
+// 14.10.10 v5_1_2a ReadOutdata, WritOutData added
+// 14.10.24 v5_1_2b Derivative changed ( derivative or numderivative used a.t scilab version)
+// Plotdata,Paramplot,Circledata changed ( N,D,E,R => N__, ... )
+// 14.12.11 v5_1_3a Assign changed (replaced only variable name )
+// Plotdata changed (and debugged ), Paramplot changed
+// 12.14 WriteOutData,ReadOutData changed ( for 3d )
+// 14.12.28 v5_1_3b Assign debugged
+// 15.01.01 v5_1_4a Bezierpt,Bezier added
+// 15.01.03 v5_1_4b ReadOutData changed ("start","end")
+// 15.02.08 v5_1_5a Bezier pt changed (available for 3d)
+// 15.02.18 v5_1_5b Assign debugged
+// 15.02.19 v5_1_5c Assign again debugged
+// 15.04.10 v5_1_5d EnclosingS debugged
+// Translatedata, Rotatedata, Reflectdata, Scaledate changed (Flattenlist)
+// 15.04.18 v5_1_5e Assign debugged
+// 15.05.03 v5_1_6a Setcolor,Ratiocmyk changed ( for cmyk, rgb, mycolor )
+// 15.05.04 Definecolor added
+// 15.06.11 v5_1_6b Arrowline, Arrowhead debugged
+// 15.06.14 v5_1_6c Skeletonpara3data debugged
+// Arrowhead changed (0.2 -> 0.1 )
+// 15.10.19 v5_1_6d Skeletonpara3data debugged
+// 15.10.23 v5_1_6e ReadOutData changed ( for the lenth of PD is 1 )
+// 15.10.23 Meetwindow changed ( horner non used )
+// 15.10.24 Arrowline debugged
+// 15.10.23 v5_1_6f WriteOutData changed ( endmark //// )
+// 15.11.05 v5_1_6g WriteOutData changed
+// 15.11.16 v5_2_1 Ovaldata changed ( Rc )
+// Plotdata, Paramplot, Deqplot
+// number of points changed to number of intervals
+// 15.12.08 v5_2_2 Deqplot debugged ( option __)
+// 16.08.20 v5_2_3 Spacecurve debugged ( N )
+// 16.10.09 v5_2_3a Objcurve changed ( N of Sapcecurve)
+// 16.10.09 v5_2_3b Kyoukai changed ( Eps =>10^(-4))
+// 16.10.09 v5_2_3c Enclosing, Kyoukai changed ( to make it a closed curve))
+// 16.12.13 v5_2_3d Plotdata,Paramplot,Spacecurve changed ( for only one point)
+// 16.12.24 v5_2_3e Makeskeletondata debugged ( for nul interval)
+// 16.12.29 v5_2_3f Anglemark, MeetWindow debugged ( for nul interval)
+// 16.12.29 v5_2_3g Shade changed (for colorname or colorcode)
+// 17.03.19 v5_2_3h Openpicture,Setunitlen debugged ( for 6 )
+// 17.05.21 v5_2_3i Evlptablepara changed (division number)
+
+
+function Setversion()
+ global THISVERSION;
+ THISVERSION='v5_2_3i';
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.bin
new file mode 100644
index 00000000..0fdd661f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.sci
new file mode 100755
index 00000000..fb72097b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Setwindow.sci
@@ -0,0 +1,44 @@
+//
+// 09.02.27
+// 10.04.25
+
+function Out=Setwindow(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ if Nargs==0
+ Out=[XMIN,XMAX,YMIN,YMAX];
+ disp(Out);
+ return;
+ end;
+ if Nargs==1
+ Dt=varargin(1);
+ if type(Dt)==1
+ Dt=list(Dt);
+ end;
+ Xm=%inf; XM=-%inf;
+ Ym=%inf; YM=-%inf;
+ for I=1:length(Dt)
+ GL=Dividegraphics(Dt(I));
+ for J=1:length(GL)
+ G=GL(J);
+ Tmp=min(G(:,1)); Xm=min(Xm,Tmp);
+ Tmp=max(G(:,1)); XM=max(XM,Tmp);
+ Tmp=min(G(:,2)); Ym=min(Ym,Tmp);
+ Tmp=max(G(:,2)); YM=max(YM,Tmp);
+ end;
+ end;
+ XMIN=Xm; XMAX=XM;
+ YMIN=Ym; YMAX=YM;
+ end;
+ if Nargs==2
+ RgX=varargin(1);
+ RgY=varargin(2);
+ XMIN=RgX(1); XMAX=RgX(2);
+ YMIN=RgY(1); YMAX=RgY(2);
+ end
+ if Nargs==4
+ XMIN=varargin(1); XMAX=varargin(2);
+ YMIN=varargin(3); YMAX=varargin(4);
+ end;
+ Out=[XMIN,XMAX,YMIN,YMAX];
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.bin
new file mode 100644
index 00000000..df965eb7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.sci
new file mode 100755
index 00000000..9c20a13b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sf3data.sci
@@ -0,0 +1,62 @@
+// 08.08.16
+// 08.10.10
+// 13.10.21 ( __ added to varibles )
+
+function PL__=Sf3data(varargin)
+ Nargs__=length(varargin);
+ FdL__=Fullformfunc(varargin(1));
+ F__=Mixop(1,FdL__);
+ Xf__=Mixop(2,FdL__);
+ Yf__=Mixop(3,FdL__);
+ Zf__=Mixop(4,FdL__);
+ Urg__=Mixop(5,FdL__);
+ Vrg__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Urg__,'=');
+ U__=part(Urg__,1:K__-1);
+ Tmp__=part(Urg__,K__+1:length(Urg__));
+ Tmp__=evstr(Tmp__);
+ Umin__=Tmp__(1); Umax__=Tmp__(2);
+ K__=mtlb_findstr(Vrg__,'=');
+ V__=part(Vrg__,1:K__-1);
+ Tmp__=part(Vrg__,K__+1:length(Vrg__));
+ Tmp__=evstr(Tmp__);
+ Vmin__=Tmp__(1); Vmax__=Tmp__(2);
+ Ndu__=25 ; Ndv__=25; Np__=[50,50];
+ if Nargs__>=3
+ Ndu__=varargin(2);
+ Ndv__=varargin(3);
+ end;
+ if Nargs__>=4
+ Np__=varargin(4);
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Du__=(Umax__-Umin__)/Ndu__;
+ Dv__=(Vmax__-Vmin__)/Ndv__;
+ PL__ = [];
+ for I__=0:Ndu__
+ U0__ ='('+string(Umin__+I__*Du__)+')';
+ Tmp__=strsubst(Xf__,U__,U0__);
+ Tmp1__=strsubst(Tmp__,V__,'t');
+ Tmp__=strsubst(Yf__,U__,U0__);
+ Tmp2__=strsubst(Tmp__,V__,'t');
+ Tmp__=strsubst(Zf__,U__,U0__);
+ Tmp3__=strsubst(Tmp__,V__,'t');
+ Tmp__='['+Tmp1__+','+Tmp2__+','+Tmp3__+']';
+ PD__=Spacecurve(Tmp__,'t=[Vmin__,Vmax__]','N='+string(Np__(2)));
+ PL__=Mixadd(PL__,PD__);
+ end;
+ for J__=0:Ndv__
+ V0__='('+string(Vmin__+J__*Dv__)+')';
+ Tmp__=strsubst(Xf__,V__,V0__);
+ Tmp1__=strsubst(Tmp__,U__,'t');
+ Tmp__=strsubst(Yf__,V__,V0__);
+ Tmp2__=strsubst(Tmp__,U__,'t');
+ Tmp__=strsubst(Zf__,V__,V0__);
+ Tmp3__=strsubst(Tmp__,U__,'t');
+ Tmp__='['+Tmp1__+','+Tmp2__+','+Tmp3__+']';
+ PD__=Spacecurve(Tmp__,'t=[Umin__,Umax__]','N='+string(Np__(1)));
+ PL__=Mixadd(PL__,PD__);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.bin
new file mode 100644
index 00000000..a86220d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.sci
new file mode 100755
index 00000000..7a759f69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdparadata.sci
@@ -0,0 +1,39 @@
+// 08.09.13
+// 10.02.16 Eps => [Eps, Epsmag]
+
+function Out5=Sfbdparadata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=4
+ Eps2=varargin(4);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepara(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ IMPLICITDATA=Out3;
+ Mixdisp(Mix('ImplicitData obtained ',timer()));
+ Out4=Cuspsplitpara(Out3,Fd,Eps(1)); //
+ CUSPDATA=Out4;
+ CUSPPT=CUSPSPLITPT;
+ Mixdisp(Mix('CuspData obtained ',timer()));
+ Out5=Borderparadata(Out4,Fd,Np,Eps,Eps2);
+ Mixdisp(Mix('BorderData obtained ',timer()));
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.bin
new file mode 100644
index 00000000..304be9f0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.sci
new file mode 100755
index 00000000..9833a7f4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdpersdata.sci
@@ -0,0 +1,42 @@
+
+// 08.09.21
+// 10.02.16 Eps => [Eps, Epsmag]
+// 13.11.02 bug
+
+function Out5=Sfbdpersdata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=4
+ Eps2=varargin(4);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepers(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ IMPLICITDATA=Out3;
+ Mixdisp(Mix('ImplicitData obtained ',timer()));
+ Out4=Cuspsplitpers(Out3,Fd,Eps(1)); // 13.11.02
+ CUSPDATA=Out4;
+ CUSPPT=CUSPSPLITPT;
+ Mixdisp(Mix('CuspData obtained ',timer()));
+ Out5=Borderpersdata(Out4,Fd,Np,Eps,Eps2);
+ Mixdisp(Mix('BorderData obtained ',timer()));
+endfunction;
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.bin
new file mode 100644
index 00000000..cb2d0f7a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.sci
new file mode 100755
index 00000000..082ccec3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawparadata.sci
@@ -0,0 +1,33 @@
+// 08.09.10
+// 08.09.13
+
+function Out5=Sfbdrawparadata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=0.05;
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepara(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ BdyL=Mixop(8,FdL);
+ if BdyL~=[]
+ Out3=Clipindomain(Out3,BdyL)
+ end;
+ IMPLICITDATA=Out3;
+ Out4=Cuspsplitpara(Out3,Fd,Eps);
+ CUSPDATA=Out4;
+ CCUSPPT=CUSPSPLITPT;
+ Out5=Borderrawdata(Out4,Fd,Np,Eps);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.bin
new file mode 100644
index 00000000..5731c723
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.sci
new file mode 100755
index 00000000..cde6870f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfbdrawpersdata.sci
@@ -0,0 +1,31 @@
+// 08.09.21
+
+function Out5=Sfbdrawpersdata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=0.05;
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepers(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ BdyL=Mixop(8,FdL);
+ if BdyL~=[]
+ Out3=Clipindomain(Out3,BdyL)
+ end;
+ IMPLICITDATA=Out3;
+ Out4=Cuspsplitpers(Out3,Fd,Eps);
+ CUSPDATA=Out4;
+ CCUSPPT=CUSPSPLITPT;
+ Out5=Borderrawdata(Out4,Fd,Np,Eps);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.bin
new file mode 100644
index 00000000..a7dae3c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.sci
new file mode 100755
index 00000000..5a15d61c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutdata.sci
@@ -0,0 +1,105 @@
+// 08.09.09
+// 08.09.19
+// 08.09.20
+// 08.09.24
+// 08.10.09
+// 08.10.10
+// 13.10.21 ( __ added to varibles )
+
+function EkL__=Sfcutdata(varargin)
+ Nargs__=length(varargin);
+ Fd__=varargin(1);
+ CutD__=varargin(2);
+ Np__=[50,50];
+ if Nargs__>=3
+ Tmp__=varargin(3);
+ if type(Tmp__)==1 & length(Tmp__)==1
+ Np__=[Tmp__,Tmp__];
+ end;
+ end;
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Mixop(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ Fd__L=Fullformfunc(Fd__);
+ Xf__=Mixop(2,Fd__L);
+ Yf__=Mixop(3,Fd__L);
+ Zf__=Mixop(4,Fd__L);
+ Tmp__=Mixop(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); Umax=Urg__(2);
+ Vmin__=Vrg__(1); Vmax=Vrg__(2);
+ if Mixtype(CutD__)~=1
+ V1__=Mixop(1,CutD__);
+ Tmp__=Mixop(2,CutD__);
+ if length(Tmp__)>1
+ D__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ D__=Tmp__;
+ end;
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'-';
+ Eq__=Tmp__+string(D__);
+ elseif type(CutD__)==1
+ V1__=CutD__(1:3);
+ D__=CutD__(4);
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'+';
+ Eq__=Tmp__+string(D__);
+ else
+ K__=mtlb_findstr(CutD__,'=');
+ if K__>0
+ Tmp__1=part(CutD__,1:K__-1);
+ Tmp__2=part(CutD__,K__+1:length(CutD__));
+ Eq__=Tmp__1+'-('+Tmp__2+')';
+ else
+ Eq__=CutD__;
+ end;
+ end;
+ Tmp__=strsubst(Eq__,Xname__,'('+Xf__+')');
+ Tmp__=strsubst(Tmp__,Yname__,'('+Yf__+')');
+ Uveq__=strsubst(Tmp__,Zname__,'('+Zf__+')');
+ Tmp__1=Mixop(5,Fd__L);
+ Tmp__2=Mixop(6,Fd__L);
+ CutuvL__=Implicitplot(Uveq__,Tmp__1,Tmp__2,Np__);
+ EkL__=[];
+ for I__=1:Mixlength(CutuvL__)
+ Out__1=Mixop(I__,CutuvL__);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.bin
new file mode 100644
index 00000000..07cfe7f8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.sci
new file mode 100755
index 00000000..0e4c6a5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffparadata.sci
@@ -0,0 +1,12 @@
+// 08.09.1
+// 10.02.17
+
+function Out=Sfcutoffparadata(varargin)
+ Ms=list('hidden','para');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.bin
new file mode 100644
index 00000000..aaf088b5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.sci
new file mode 100755
index 00000000..c10cdb8d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffpersdata.sci
@@ -0,0 +1,12 @@
+// 08.09.21
+// 10.02.17
+
+function Out=Sfcutoffpersdata(varargin)
+ Ms=list('hidden','pers');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.bin
new file mode 100644
index 00000000..b2d998a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.sci
new file mode 100755
index 00000000..546f66d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawparadata.sci
@@ -0,0 +1,12 @@
+// 08.09.19
+// 10.02.17
+
+function Out=Sfcutoffrawparadata(varargin)
+ Ms=list('raw','para');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.bin
new file mode 100644
index 00000000..8c08c1b7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.sci
new file mode 100755
index 00000000..e5a387f5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfcutoffrawpersdata.sci
@@ -0,0 +1,12 @@
+// 08.09.21
+// 10.02.17
+
+function Out=Sfcutoffrawpersdata(varargin)
+ Ms=list('raw','pers');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.bin
new file mode 100644
index 00000000..45df29ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.sci
new file mode 100755
index 00000000..5aa4e5e5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfparadata.sci
@@ -0,0 +1,17 @@
+// 08.08.16
+
+function Out=Sfparadata(varargin)
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ Ndu=25 ; Ndv=25; Np=[50,50];
+ if Nargs>=3
+ Ndu=varargin(2);
+ Ndv=varargin(3);
+ end;
+ if Nargs>=4
+ Np=varargin(4);
+ end;
+ Tmp=Sf3data(Fd,Ndu,Ndv,Np);
+ Out=Projpara(Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.bin
new file mode 100644
index 00000000..3350f9b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.sci
new file mode 100755
index 00000000..ecc63e41
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sfpersdata.sci
@@ -0,0 +1,17 @@
+// 08.08.15
+
+function Out=Sfpersdata(varargin)
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ Ndu=25 ; Ndv=25; Np=[50,50];
+ if Nargs>=3
+ Ndu=varargin(2);
+ Ndv=varargin(3);
+ end;
+ if Nargs>=4
+ Np=varargin(4);
+ end;
+ Tmp=Sf3data(Fd,Ndu,Ndv,Np);
+ Out=Projpers(Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.bin
new file mode 100644
index 00000000..130e2b32
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.sci
new file mode 100755
index 00000000..ff22a933
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Shade.sci
@@ -0,0 +1,84 @@
+// 08.05.22
+// 09.12.25
+// 11.05.27 (for pdflatex )
+// 17.01.09 (shade, thickness )
+
+function Shade(varargin)
+ global Wfile FID MilliIn;
+ // 2nd arg is a color name or '[..]{ }'
+ Nargs=length(varargin);
+ Iroflg=0;
+ if Nargs>1
+ Iroflg=1;
+ Iro=varargin(Nargs);
+ if type(Iro)==10 then
+ if length(strchr(Iro,"{"))>0
+ Str="{\color"+Iro;
+ else
+ Str="{\color{"+Iro+"}";
+ end;
+ else
+ if length(Iro)==4
+ Str='{\color[cmyk]{';
+ else
+ Str='{\color[rgb]{';
+ end;
+ for J=1:length(Iro)
+ Str=Str+string(Iro(J));
+ if J<length(Iro) then
+ Str=Str+',';
+ end
+ end
+ Str=Str+'}';
+ end;
+ if Wfile=='default'
+ mprintf('%s\n',Str+'%');
+ else
+ mfprintf(FID,'%s\n',Str);
+ end;
+ end;
+ Mojisu=0; //
+ Tmp=varargin(1);
+ Data=Kyoukai(Tmp);
+ for I=1:length(Data)
+ PL=Op(I,Data);
+ for J=1:size(PL,1)
+ P=Doscaling(PL(J,:));
+ X=sprintf('%5.5f',P(1));
+ Y=sprintf('%5.5f',P(2));
+ Pt='('+X+','+Y+')';
+ if J==1 then
+ Str='\polygon*'+Pt;
+ else
+ Str=Pt;
+ end
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ Mojisu=0;
+ end;
+ end;
+ end;
+ if Iroflg==1
+ Str='}%';
+ if Mojisu>0
+ Fmt='\n%s\n';
+ else
+ Fmt='%s\n';
+ end;
+ if Wfile=='default'
+ mprintf(Fmt,Str);
+ else
+ mfprintf(FID,Fmt,Str);
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.bin
new file mode 100644
index 00000000..89d8b459
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.sci
new file mode 100755
index 00000000..4eec31cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeleton2data.sci
@@ -0,0 +1,71 @@
+// 08.08.14
+// 08.10.16
+// 09.06.13
+
+function Out=Skeleton2data(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ Tmp=varargin(1);
+ if Mixtype(Tmp)==1
+ ObjL=MixS(Tmp);
+ elseif Mixtype(Tmp)==2
+ ObjL=Tmp;
+ else
+ ObjL=[];
+ for I=1:Mixlength(Tmp)
+ Tmp1=Mixop(I,Tmp);
+ if Mixtype(Tmp1)==1
+ ObjL=Mixadd(ObjL,Tmp1);
+ else
+ ObjL=Mixjoin(ObjL,Tmp1);
+ end;
+ end;
+ end;
+ Tmp=varargin(2);
+ if Mixtype(Tmp)==1
+ PltL=MixS(Tmp);
+ elseif Mixtype(Tmp)==2
+ PltL=Tmp
+ else
+ PltL=[];
+ for I=1:Mixlength(Tmp)
+ Tmp1=Mixop(I,Tmp);
+ if Mixtype(Tmp1)==1
+ PltL=Mixadd(PltL,Tmp1);
+ else
+ PltL=Mixjoin(PltL,Tmp1);
+ end;
+ end;
+ end;
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.01;
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Obj2L=[];
+ for I=1:Mixlength(ObjL)
+ Curve=Mixop(I,ObjL);
+ Obj2=[];
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ Obj2=[Obj2;P,-1];
+ end;
+ Obj2L=Mixadd(Obj2L,Obj2);
+ end;
+ Plt2L=[]
+ for I=1:Mixlength(PltL)
+ Curve=Mixop(I,PltL);
+ Plt2=[];
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ Plt2=[Plt2;P,0];
+ end;
+ Plt2L=Mixadd(Plt2L,Plt2);
+ end;
+ Out=Makeskeletondata(Obj2L,Plt2L,R,Eps2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.bin
new file mode 100644
index 00000000..03fcdda2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.sci
new file mode 100755
index 00000000..5914d47a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpara3data.sci
@@ -0,0 +1,48 @@
+// 09.09.25
+// 11.12.12
+// 15.06.14
+// 15.10.19
+
+function Out=Skeletonpara3data(varargin)
+ global MilliIn;
+ Eps=10^(-4); // 15.06.14
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Plt2L=list();
+ for I=1:Mixlength(Plt3L)
+ Plt2L($+1)=ProjcoordCurve(Plt3L(I));
+ end;
+ Out=list();
+ for I=1:length(ObjL)
+ Obj3=ObjL(I);
+ Tmp=ProjcoordCurve(Obj3);
+ Data=Makeskeletondata(Mix(Tmp),Plt2L,R,Eps2);
+ for J=1:length(Data)
+ Gd=Data(J);
+ if size(Gd,1)==1 // 15.10.19
+ continue;
+ end;
+ if norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))<Eps // 15.06.14
+ continue
+ end;
+ PtD=[];
+ for J=1:size(Gd,1)
+ Tmp=Gd(J,:);
+ Tmp1=Invparapt(Tmp,Obj3);
+ Tmp1=Mixop(1,Tmp1);
+ PtD=[PtD;Tmp1];
+ end;
+ Out($+1)=PtD;
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.bin
new file mode 100644
index 00000000..913af31d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.sci
new file mode 100755
index 00000000..1270f789
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonparadata.sci
@@ -0,0 +1,29 @@
+// 08.07.13
+// 08.08.08
+// 08.10.16
+// 11.12.12 (Flattenlist)
+
+function Out=Skeletonparadata(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Obj2L=list();
+ for I=1:length(ObjL)
+ Obj2L($+1)=ProjcoordCurve(ObjL(I));
+ end;
+ Plt2L=list();
+ for I=1:length(Plt3L)
+ Plt2L($+1)=ProjcoordCurve(Plt3L(I));
+ end;
+ Out=Makeskeletondata(Obj2L,Plt2L,R,Eps2);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.bin
new file mode 100644
index 00000000..ec2a9bad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.sci
new file mode 100755
index 00000000..57dde938
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpers3data.sci
@@ -0,0 +1,41 @@
+// 09.09.25
+// 11.12.12
+
+function Out=Skeletonpers3data(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Plt2L=[];
+ for I=1:Mixlength(Plt3L)
+ Tmp=CameracoordCurve(Mixop(I,Plt3L));
+ Plt2L=Mixadd(Plt2L,Tmp);
+ end;
+ Out=list();
+ for I=1:length(ObjL)
+ Obj3=ObjL(I);
+ Tmp=CameracoordCurve(Obj3);
+ Data=Makeskeletonpersdata(Mix(Tmp),Plt2L,R,Eps2);
+ for J=1:length(Data)
+ Gd=Data(J);
+ PtD=[];
+ for J=1:size(Gd,1)
+ Tmp=Gd(J,:);
+ Tmp1=Invperspt(Tmp,Obj3);
+ Tmp1=Mixop(1,Tmp1);
+ PtD=[PtD;Tmp1];
+ end;
+ Out($+1)=PtD;
+ end;
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.bin
new file mode 100644
index 00000000..7d2c1a07
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.sci
new file mode 100755
index 00000000..c91e73cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Skeletonpersdata.sci
@@ -0,0 +1,29 @@
+// 08.08.14
+// 08.10.16
+// 11.12.12
+
+function Out=Skeletonpersdata(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Obj2L=list();
+ for I=1:length(ObjL)
+ Obj2L($+1)=CameracoordCurve(ObjL(I));
+ end;
+ Plt2L=list();
+ for I=1:length(Plt3L)
+ Plt2L($+1)=CameracoordCurve(Plt3L(I));
+ end;
+ Out=Makeskeletonpersdata(Obj2L,Plt2L,R,Eps2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.bin
new file mode 100644
index 00000000..880f8540
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.sci
new file mode 100755
index 00000000..077a88cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spacecurve.sci
@@ -0,0 +1,83 @@
+// 08.07.11
+// 09.05.27
+// 09.06.02
+// 09.12.31 (gsort)
+// 13.10.21 ( __ added to varibles )
+// 16.08.20 (N changed to devided number )
+// 16.12.13 ( in case of T1=T2)
+
+function P__=Spacecurve(varargin)
+ Eps__=10^(-5);
+ Nargs__=length(varargin);
+ Fnstr__=varargin(1);
+ Rgstr__=varargin(2);
+ Range__=[0,2*%pi];
+ N=50; // Numpoints
+ E=[]; // Exclusions
+ D=%inf; // Discont (Changed)
+ for I__=3:Nargs__
+ Tmp__=varargin(I__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Tmp1__=strsplit(Tmp__,[K__-1,K__]);
+ Tmp2__=ascii(Tmp1__(1,1));
+ Lhs__=char(Tmp2__(1));
+ Str__=Lhs__+'='+Tmp1__(3,1);
+ execstr(Str__);
+ end;
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Tmp__=strsplit(Rgstr__,[K__-1,K__]);
+ Vname__=Tmp__(1,1);
+ Rng__=evstr(Tmp__(3,1));
+ else
+ Vname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end
+ T1__=Rng__(1); T2__=Rng__(2);
+ Dt__=(T2__-T1__)/N; // 16.08.20
+ Str__=mtlb_strrep(Fnstr__,Vname__,'t__');
+ if abs(Dt__)<Eps__ then // 16.12.13
+ t__=T1__;
+ P__=evstr(Str__);
+ return;
+ end;
+ P__=[];
+ E=gsort(E);
+ E=E(length(E):-1:1);
+ E=[E,%inf];
+ Tmp__=gsort(E);
+ E=Tmp__(length(Tmp__):-1:1);
+ Ke__=1;
+ for t__=T1__:Dt__:T2__
+ Pa__=[];
+ if t__-E(Ke__)<-Eps__
+ Pa__=evstr(Str__);
+ end
+ if abs(t__-E(Ke__))<=Eps__
+ if P__~=[] & P__(size(P__,1),:)~=[%inf,%inf,%inf]
+ Pa__=[%inf,%inf,%inf];
+ end
+ end
+ if t__-E(Ke__)>Eps__
+ Pa__=evstr(Str__);
+ Ke__=Ke__+1;
+ end
+ if Pa__~=[]
+ if Pa__(1)==%inf
+ P__=[P__;Pa__]
+ elseif P__==[]
+ P__=[Pa__];
+ else
+ Tmp__=P__(size(P__,1),:);
+ if Tmp__(1)==%inf
+ P__=[P__;Pa__];
+ elseif norm(Tmp__-Pa__)<D
+ P__=[P__;Pa__];
+ else
+ P__=[P__;%inf,%inf,%inf;Pa__];
+ end
+ end
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.bin
new file mode 100644
index 00000000..86bddaa8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.sci
new file mode 100755
index 00000000..9fe33c06
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Spaceline.sci
@@ -0,0 +1,27 @@
+// 08.07.11
+
+function Z=Spaceline(varargin)
+ Z=[];
+ for I=1:length(varargin)
+ Data=varargin(I);
+ if Mixtype(Data)==1
+ for J=1:3:size(Data,2)
+ Tmp=Data(J:J+2);
+ Z=[Z;Tmp];
+ end;
+ continue;
+ end;
+ if Mixtype(Data)==3
+ Tmp=[];
+ for I=1:Mixlength(Data);
+ Tmp=Mixjoin(Tmp,Mixop(I,Data));
+ end;
+ Data=Tmp;
+ end;
+ for J=1:Mixlength(Data)
+ Tmp=Mixop(J,Data);
+ Z=[Z;Tmp];
+ end;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.bin
new file mode 100644
index 00000000..cadb3d56
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.sci
new file mode 100755
index 00000000..a4de85ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Splinedata.sci
@@ -0,0 +1,108 @@
+// 08.05.28
+// 08.05.29
+// 09.06.13
+// 10.04.24
+// 10.04.25
+// 11.01.07 ( major changed )
+
+function OutL=Splinedata(varargin)
+ global SplinePt;
+ Nargs=length(varargin);
+ Eps=10^(-3);
+ PL=varargin(1);
+ if type(PL)==10 // 100425
+ Fname=PL;
+ PL=Readtextdata(Fname);
+ else
+ if size(PL,1)==1
+ PL=matrix(PL,2,length(PL)/2);
+ PL=PL';
+ end;
+ end;
+ if size(PL,2)==3
+ Flg3=1;
+ else
+ Flg3=0;
+ end;
+ PLL=Dividegraphics(PL);
+ N=50;
+ C=[];
+ for I=2:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)~=10 continue; end
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ else
+ Tmp1=Strop(1,Tmp);
+ if Tmp1=='C' | Tmp1=='c'
+ C=1:length(PLL);
+ end;
+ end;
+ end;
+ Cflg=zeros(1,length(PLL));
+ for J=1:length(C)
+ K=C(J);
+ Cflg(K)=1;
+ end;
+ if length(N)>1
+ if type(Nj)==1
+ Nj=N;
+ else
+ Nj=[];
+ for J=1:length(N)
+ Nj(J)=N(J);
+ end;
+ end;
+ else
+ Tmp1=[];
+ for J=1:length(PLL)
+ Tmp1(J)=size(PLL(J),1);
+ end;
+ MxP=max(Tmp1);
+ Nj=[];
+ for J=1:length(PLL)
+ Tmp=size(PLL(J),1);
+ Tmp1=round(N/MxP*(Tmp-1));
+ Nj(J)=Tmp1;
+ end;
+ end;
+ OutL=list();
+ for J=1:length(PLL) //
+ PL=PLL(J);
+ if Cflg(J)==1
+ if norm(PL(1,:)-PL(size(PL,1),:))>Eps
+ PL=[PL;PL(1,:)];
+ Nj(J)=round(N/MxP*size(PL,1));
+ else
+ PL(size(PL,1),:)=PL(1,:);
+ end
+ end;
+ SplinePt=PL;
+ Tn=1:size(PL,1);
+ Xn=PL(:,1)';
+ Yn=PL(:,2)';
+ if Flg3==1 Zn=PL(:,3)';end;
+ if Cflg(J)==0
+ Dxn=splin(Tn,Xn);
+ Dyn=splin(Tn,Yn);
+ if Flg3==1 Dzn=splin(Tn,Zn); end;
+ else
+ Dxn=splin(Tn,Xn,'periodic');
+ Dyn=splin(Tn,Yn,'periodic');
+ if Flg3==1 Dzn=splin(Tn,Zn,'periodic'); end;
+ end
+ T=linspace(1,size(PL,1),Nj(J));
+ X=interp(T,Tn,Xn,Dxn);
+ Y=interp(T,Tn,Yn,Dyn);
+ if Flg3==1 Z=interp(T,Tn,Zn,Dzn); end;
+ if Flg3==1
+ Out=[X',Y',Z'];
+ else
+ Out=[X',Y'];
+ end;
+ OutL($+1)=Out;
+ end;
+ if length(OutL)==1
+ OutL=OutL(1);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.bin
new file mode 100644
index 00000000..de695ff2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.sci
new file mode 100755
index 00000000..8f4da94d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Strop.sci
@@ -0,0 +1,11 @@
+function C=Strop(Num,Str)
+ N=length(Num);
+ L=ascii(Str);
+ C='';
+ for I=1:N
+ K=Num(I);
+ Tmp=char(L(K));
+ C=C+Tmp;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.bin
new file mode 100644
index 00000000..2ca7ae03
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.sci
new file mode 100755
index 00000000..785b605c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Subs.sci
@@ -0,0 +1,21 @@
+//
+// 08.06.04
+
+function V=Subs(SbstrL,StrF)
+ Str=StrF;
+ if type(StrF)==2
+ Str=pol2str(StrF);
+ end
+ V=StrF;
+ for N=1:size(SbstrL,2)
+ Sbstr=SbstrL(1,N);
+ I=mtlb_findstr(Sbstr,'=');
+ Tmp=strsplit(Sbstr,I);
+ SbA=Tmp(1);
+ SbA=Op(1:length(SbA)-1,SbA);
+ SbB=Tmp(2);
+ V=strsubst(V,SbA,SbB);
+ end
+ V=evstr(V);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.bin
new file mode 100644
index 00000000..0e796d65
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.sci
new file mode 100755
index 00000000..55fdfd0f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Sumfun.sci
@@ -0,0 +1,65 @@
+// 08.05.30
+// 08.05.31
+// 08.06.03
+// 13.10.21 (__ added to variables )
+
+function PL__=Sumfun(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs__=length(varargin);
+ Const__=0;
+ Addstr__='A__=0';
+ J__=1;
+ Tmp__=varargin(1);
+ if type(Tmp__)==1
+ Const__=Tmp__;
+ J__=J__+1;
+ end
+ if type(Tmp__)==10
+ Tmp1__=Strop(length(Tmp__),Tmp__);
+ if Tmp1__=='+'
+ Addstr__='A__='+Strop(1:length(Tmp__)-1,Tmp__);
+ J__=J__+1
+ end
+ end
+ Fnstr__=varargin(J__);
+ Krange__=varargin(J__+1);
+ Xrange__=varargin(J__+2);
+ N=50;
+ for I__=J__+3:Nargs__
+ Tmp__=varargin(I__);
+ execstr(Tmp__);
+ end
+ Tmp__=mtlb_findstr(Krange__,'=');
+ Kname__=Strop(1:Tmp__-1,Krange__);
+ Tmp1__=Strop(Tmp__+1:length(Krange__),Krange__);
+ Tmp1__='Krg__='+Tmp1__;
+ execstr(Tmp1__);
+ Tmp__=mtlb_findstr(Xrange__,'=');
+ if Tmp__==[]
+ Xname__=Xrange__;
+ Xrg__=[XMIN,XMAX];
+ else
+ Xname__=Strop(1:Tmp__-1,Xrange__);
+ Tmp1__=Strop(Tmp__+1:length(Xrange__),Xrange__);
+ Tmp1__='Xrg__='+Tmp1__;
+ execstr(Tmp1__);
+ end
+ Dx__=(Xrg__(2)-Xrg__(1))/N;
+ PL__=[];
+ I__=0;
+ while I__<=N
+ Tmp__=Xname__+'=Xrg__(1)+I__*Dx__';
+ execstr(Tmp__);
+ J__=Krg__(1);
+ execstr(Addstr__);
+ Y__=Const__+A__;
+ while J__<=Krg__(length(Krg__))
+ Tmp__=Kname__+'=J__';
+ execstr(Tmp__);
+ execstr('Y__=Y__+'+Fnstr__);
+ J__=J__+1;
+ end
+ PL__=[PL__;Xrg__(1)+I__*Dx__,Y__];
+ I__=I__+1;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.bin
new file mode 100644
index 00000000..c5c00977
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.sci
new file mode 100644
index 00000000..0d649872
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symb3data.sci
@@ -0,0 +1,30 @@
+// s : 2014.08.25
+
+function Out=Symb3data(Moji,Size,Kaiten,NV,Pos)
+ if type(Moji)==10 then
+ Tmp=Symbdata(Moji);
+ GY1=Tmp(2)
+ else
+ GY1=Moji
+ end
+ GY1=Scaledata(GY1,Size,Size);
+ GY1=Rotatedata(GY1,Kaiten*%pi/180);
+ A=NV(1); B=NV(2); C=NV(3);
+ if A^2+B^2==0 then
+ E1=[1,0,0];
+ E2=[0,1,0];
+ else
+ E1=[B,-A,0];
+ E2=[-A*C,-B*C,A^2+B^2];
+ D=det([E1;E2;NV]);
+ if D<0 then
+ E1=-E1
+ end
+ E1=E1/norm(E1);
+ E2=E2/norm(E2);
+ end
+ deff("Out=Em(X,Y)","Out=[E1(1)*X+E2(1)*Y,E1(2)*X+E2(2)*Y,E1(3)*X+E2(3)*Y]");
+ GY1=Embed(GY1,Em);
+ GY1=Translate3data(GY1,Pos);
+ Out=Flattenlist(GY1);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.bin
new file mode 100644
index 00000000..2fb81c8f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.sci
new file mode 100644
index 00000000..d63a3470
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Symbdata.sci
@@ -0,0 +1,67 @@
+// s : 2014.08.25
+// 14.09.07
+
+function Out=Symbdata(Moji)
+ ML=list(); Sp=[]; CC=[];
+ if Moji=="x" then
+ M1=[-0.042,0.035;-0.027,0.045;-0.01,0.045;0.004,0.03;0.00,0.00;...
+ -0.004,-0.03;0.01,-0.045;0.027,-0.045;0.042,-0.035];
+ M2=[0.055,0.035;0.043,0.045;0.027,0.045;0.01,0.03;0.00,0.00;...
+ -0.01,-0.03;-0.027,-0.045;-0.043,-0.045;-0.055,-0.035];
+ ML=list(M1,M2);
+ Sp=[100,100];
+ CC=[0,0];
+ end;
+ if Moji=="y" then
+ M1=[-0.06,0.06;...
+ -0.045,0.080;...
+ -0.03,0.080;...
+ -0.022,0.065;...
+ -0.032,0.035;...
+ -0.035,-0.01;...
+ 0.007,-0.008;...
+ 0.037,0.04;...
+ 0.05,0.09];
+ M2=[0.05,0.09;...
+ 0.037,0.04;...
+ 0.025,-0.00;...
+ 0.015,-0.035;...
+ -0.000,-0.055;...
+ -0.025,-0.062;...
+ -0.05,-0.045];
+ ML=list(M1,M2);
+ Sp=[100,100];
+ CC=[0,0];
+ end
+ if Moji=="z" then
+ M1=[-0.035,0.035;-0.023,0.045;-0.01,0.045;...
+ 0.01,0.04;0.035,0.04;0.042,0.045];
+ M2=[0.042,0.045;0.00,0.00;-0.042,-0.045];
+ M3=[-0.042,-0.045;-0.035,-0.04;-0.01,-0.04;...
+ 0.01,-0.045;0.023,-0.045;0.035,-0.035];
+ ML=list(M1,M2,M3);
+ Sp=[100,0,100];
+ CC=[0,0,0];
+ end
+ Out1=list()
+ Out2=list()
+ for J=1:length(ML)
+ M=ML(J);
+ N=Sp(J);
+ for K=1:size(M,1)
+ P=M(K,:)
+ Out1($+1)=P
+ end
+ if N>0 then
+ if CC(J)==0 then
+ S=Splinedata(M,"N="+string(N))
+ else
+ S=Splinedata(M,"N="+string(N),"C")
+ end
+ else
+ S=M
+ end;
+ Out2($+1)=S
+ end
+ Out=list(Out1,Out2)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.bin
new file mode 100644
index 00000000..774b416f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.sci
new file mode 100755
index 00000000..621f6256
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tabledata.sci
@@ -0,0 +1,130 @@
+// 09.11.26
+// 09.12.06
+// 09.12.25
+// 10.01.12
+// 10.01.13
+// 10.03.28
+// 10.03.30
+// 13.05.03 Domain can be omitted
+
+function Out=Tabledata(varargin)
+// 2013.05.01 Domain is optional.
+ Eps=0.001;
+ Tmp=varargin(1); // 130502 from
+ if type(Tmp)==1
+ Domain=varargin(1);
+ VL=varargin(2);
+ HL=varargin(3);
+ else
+ Domain=[-1,-1];
+ VL=varargin(1);
+ HL=varargin(2);
+ end; // 130502 upto
+ Hsize=Domain(1);
+ SvL=list(0);
+ S=0;
+ for I=1:length(VL)
+ Tmp=VL(I);
+ S=S+Tmp(1);
+ Tmp(1)=S;
+ SvL($+1)=Tmp;
+ end;
+ if Hsize>S
+ SvL($+1)=Hsize;
+ end;
+ Hsize=Op(1,SvL(length(SvL)));
+ Vsize=Domain(2);
+ ShL=list(0);
+ S=0;
+ for I=1:length(HL)
+ Tmp=HL(I);
+ S=S+Tmp(1);
+ Tmp(1)=S;
+ ShL($+1)=Tmp;
+ end;
+ if Vsize>S
+ ShL($+1)=Vsize;
+ end;
+ Vsize=Op(1,ShL(length(ShL)));
+ Marw=0; Mare=0; Mars=0; Marn=0;
+ if length(Domain)>2
+ Marw=Domain(3);
+ Mare=Domain(4);
+ end;
+ if length(Domain)>4
+ Marn=Domain(5);
+ Mars=Domain(6);
+ end;
+ Setwindow([-Marw,Hsize+Mare],[-Mars,Vsize+Marn]);
+ Tmp=Framedata([Eps,Hsize-Eps],[Eps,Vsize-Eps]);
+ Gdata=list(Tmp);
+ Tmp=-Marw;
+ Hdata=list(Listplot([[Tmp,-Mars],[Tmp,Vsize+Marn]]));
+ for I=1:length(SvL) // 10.03.30
+ Data=SvL(I);
+ X=Data(1);
+ if length(Data)==1
+ Y1=0;
+ Y2=Vsize;
+ G=Listplot([X,Y1],[X,Y2]);
+ else
+ G=[];
+ for J=2:2:length(Data)
+ Y1=Vsize-Op(1,ShL(Data(J))); // 10.03.30
+ Y2=Vsize-Op(1,ShL(Data(J+1)));
+ Tmp=Listplot([[X,Y1],[X,Y2]]);
+ G=[G;%inf,%inf;Tmp];
+ end;
+ G=G(2:size(G,1),:);
+ end;
+ Hdata($+1)=G;
+ end;
+ Tmp=Hsize+Mare;
+ Tmp1=Listplot([[Tmp,-Mars],[Tmp,Vsize+Marn]]);
+ Hdata($+1)=Tmp1;
+ Tmp=Vsize+Marn;
+ Vdata=list(Listplot([[-Marw,Tmp],[Hsize+Mare,Tmp]]));
+ for I=1:length(ShL)
+ Data=ShL(I);
+ Y=Vsize-Data(1);
+ if length(Data)==1
+ X1=0;
+ X2=Hsize;
+ G=Listplot([X1,Y],[X2,Y]);
+ else
+ G=[];
+ for J=2:2:length(Data)
+ X1=Op(1,SvL(Data(J))); // 10.03.30
+ X2=Op(1,SvL(Data(J+1)));
+ Tmp=Listplot([X1,Y],[X2,Y]);
+ G=[G;%inf,%inf;Tmp];
+ end;
+ G=G(2:size(G,1),:);
+ end;
+ Vdata($+1)=G;
+ end;
+ Tmp=Listplot([[-Marw,-Mars],[Hsize+Mare,-Mars]]);
+ Vdata($+1)=Tmp;
+ Tmp1=Mixsub(3:(length(Hdata)-2),Hdata);
+ Tmp2=Mixsub(3:(length(Vdata)-2),Vdata);
+ Gdata=Mixjoin(Gdata,Tmp1,Tmp2);
+ Hind=2:(1+length(Tmp1));
+ Vind=(2+length(Tmp1)):(1+length(Tmp1)+length(Tmp2));
+ G=Gdata(1);
+ P1=Ptsw(G); P2=Ptnw(G);
+ Q1=Ptse(G); Q2=Ptne(G);
+ Tmp1=list(Listplot([P1,P2]),Listplot([Q1,Q2]));
+ P1=Ptnw(G); P2=Ptne(G);
+ Q1=Ptsw(G); Q2=Ptse(G);
+ Tmp2=list(Listplot([P1,P2]),Listplot([Q1,Q2]));
+ Tmp3=Framedata();
+ Out=list(Gdata,Hind,Vind,Tmp1,Tmp2,Tmp3);
+endfunction;
+
+function Out=Dividetable(Tb)
+ G=Tb(1);
+ Gw=G(1);
+ Gt=Mixsub(Tb(2),G);
+ Gy=Mixsub(Tb(3),G);
+ Out=list(Gw,Gt,Gy)
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.bin
new file mode 100644
index 00000000..97832ff7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.sci
new file mode 100755
index 00000000..9b848315
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texcom.sci
@@ -0,0 +1,41 @@
+//
+// 09,12.05
+// 09.12.06
+// 09.12.07
+// 09.12.20
+
+function Texcom(Meirei)
+ global Wfile FID;
+ if Meirei=='\thinlines'
+ Setpen(1);
+ return
+ end
+ if Meirei=='\thicklines'
+ Setpen(2);
+ return
+ end
+ if Meirei=='\Thicklines'
+ Setpen(3);
+ return
+ end;
+
+ if Meirei=='' // 09.12.07
+ Tmp=[];
+ else
+ Tmp=mtlb_findstr(Meirei,'newline');
+ end;
+ if length(Tmp)>0
+ if Wfile=='default'
+ mprintf('%s\n','');
+ else
+ mfprintf(FID,'%s\n','');
+ end;
+ return;
+ end;
+ if Wfile=='default'
+ mprintf('%s%s\n',Meirei,'%');
+ else
+ mfprintf(FID,'%s%s\n',Meirei,'%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.bin
new file mode 100644
index 00000000..e04419ed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.sci
new file mode 100755
index 00000000..2a8b08ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texctr.sci
@@ -0,0 +1,15 @@
+//
+// 2010.05.15
+
+function Out=Texctr(N)
+ if type(N)==1
+ Alpha='abcdefghijklmnopqrstuvwxyz';
+ Out='ketpicctr'+part(Alpha,N);
+ else
+ if part(N,1)=='\'
+ Out=part(N,2:length(N));
+ else
+ Out=N;
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.bin
new file mode 100644
index 00000000..30d0e388
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.sci
new file mode 100755
index 00000000..8ef93556
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texelse.sci
@@ -0,0 +1,7 @@
+// 10.04.16
+// 10.04.18
+
+function Texelse()
+ Texcom('');
+ Texcom('\else');
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.bin
new file mode 100644
index 00000000..89cf7657
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.sci
new file mode 100755
index 00000000..a3139873
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texend.sci
@@ -0,0 +1,5 @@
+// 01.10.21
+
+function Texend()
+ Closephr();
+endfunction \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.bin
new file mode 100644
index 00000000..72f260ac
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.sci
new file mode 100755
index 00000000..ecb7b788
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendfor.sci
@@ -0,0 +1,12 @@
+// 10.04.16
+
+function Texendfor(I)
+ global TEXFORLEVEL TEXFORLAST
+ Last=TEXFORLAST(TEXFORLEVEL);
+ Texcom('');
+ Texcom('\ifnum'+Texthectr(I)+'<'+Last);
+ Texcom('\repeat');
+ Texcom('}');
+ TEXFORLEVEL=TEXFORLEVEL-1;
+ TEXFORLAST=Mixsub(1:(length(TEXFORLAST)-1),TEXFORLAST);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.bin
new file mode 100644
index 00000000..bd069613
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.sci
new file mode 100755
index 00000000..97d32d85
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texendif.sci
@@ -0,0 +1,8 @@
+// 10.04.16
+// 10.04.18
+
+function Texendif()
+ Texcom(''); //
+ Texcom('\fi');
+ Texcom('}');
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.bin
new file mode 100644
index 00000000..b9861fc7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.sci
new file mode 100755
index 00000000..0c239842
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texfor.sci
@@ -0,0 +1,15 @@
+// 10.04.16
+// 10.05.12
+// 10.10.20 ( available for numeric )
+
+function Texfor(I,First,Last)
+ global TEXFORLEVEL TEXFORLAST
+ TEXFORLEVEL=TEXFORLEVEL+1;
+ Texsetctr(I,'0');
+ Texsetctr(I,string(First)+'-1');
+ Texcom('');
+ Texcom('{');
+ Texcom('\loop');
+ Texsetctr(I,'+1');
+ TEXFORLAST($+1)=string(Last);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.bin
new file mode 100644
index 00000000..3d33948a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.sci
new file mode 100755
index 00000000..f661c649
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texforinit.sci
@@ -0,0 +1,7 @@
+// 10.04.18
+
+function Texforinit()
+ global TEXFORLEVEL TEXFORLAST
+ TEXFORLEVEL=0;
+ TEXFORLAST=list();
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.bin
new file mode 100644
index 00000000..6f53de74
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.sci
new file mode 100755
index 00000000..8cbae5dc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texif.sci
@@ -0,0 +1,19 @@
+// 10.04.16
+// 10.04.18
+// 10.05.03
+
+function Texif(varargin)
+ Condstr=varargin(1);
+ Tp=0;
+ if length(varargin)>1
+ Tp=varargin(2);
+ end;
+ Texcom('');
+ Texcom('{');
+ if Tp==0
+ Texcom('\ifnum ');
+ else
+ Texcom('\ifdim ');
+ end;
+ Texcom(Condstr+' ');
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.bin
new file mode 100644
index 00000000..4dea33e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.sci
new file mode 100755
index 00000000..f83cc8c8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texletter.sci
@@ -0,0 +1,44 @@
+// 10.01.07
+
+function Texletter(varargin)
+ global Wfile FID MEMORI;
+ Nargs=length(varargin);
+ for I=1:3:Nargs
+ P=varargin(I);
+ X=P(1);
+ if type(X)==1
+ X=string(X);
+ end;
+ Y=P(2);
+ if type(Y)==1
+ Y=string(Y);
+ end;
+ Houkou=varargin(I+1);
+ Mojiretu=varargin(I+2);
+ Hset=Houkou;
+ Vhoko='c';
+ if mtlb_findstr(Hset,'n')~=[]
+ Vhoko='n';
+ end
+ if mtlb_findstr(Hset,'s')~=[]
+ Vhoko='s';
+ end
+ Hhoko='c';
+ if mtlb_findstr(Hset,'e')~=[]
+ Hhoko='e';
+ end
+ if mtlb_findstr(Hset,'w')~=[]
+ Hhoko='w';
+ end
+ Hoko=Vhoko+Hhoko;
+ CalcWidth(Hoko,Mojiretu);
+ CalcHeight(Hoko,Mojiretu);
+ Tmp='\put('+X+','+Y+'){\hspace*{\Width}';
+ Str=Tmp+'\raisebox{\Height}{'+Mojiretu+'}}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.bin
new file mode 100644
index 00000000..a44b7156
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.sci
new file mode 100755
index 00000000..b3b9a417
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewcmd.sci
@@ -0,0 +1,20 @@
+// 10.01.21
+
+function Texnewcmd(varargin)
+ Nargs=length(varargin);
+ Str=varargin(1);
+ S='\newcommand{'+Str+'}';
+ if Nargs>1
+ Tmp=string(varargin(2));
+ S=S+'['+Tmp+']';
+ end;
+ if Nargs>2
+ Tmp=varargin(3);
+ if type(Tmp)==1
+ Tmp=string(Tmp);
+ end;
+ S=S+'['+Tmp+']';
+ end;
+ S=S+'{';
+ Texcom(S);
+endfunction \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.bin
new file mode 100644
index 00000000..c0acb00b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.sci
new file mode 100755
index 00000000..03cabf81
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texnewctr.sci
@@ -0,0 +1,13 @@
+// 10.01.21
+
+function Texnewctr(N)
+ if type(N)==10
+ Str='\newcounter{'+N+'}';
+ Texcom(Str);
+ else
+ for I=N
+ Str='\newcounter{'+Texctr(I)+'}';
+ Texcom(Str);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.bin
new file mode 100644
index 00000000..507705b2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.sci
new file mode 100755
index 00000000..b8926589
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texrenewcmd.sci
@@ -0,0 +1,20 @@
+// 10.01.21
+
+function Texrenewcmd(varargin)
+ Nargs=length(varargin);
+ Str=varargin(1);
+ S='\renewcommand{'+Str+'}';
+ if Nargs>1
+ Tmp=string(varargin(2));
+ S=S+'['+Tmp+']';
+ end;
+ if Nargs>2
+ Tmp=varargin(3);
+ if type(Tmp)==1
+ Tmp=string(Tmp);
+ end;
+ S=S+'['+Tmp+']';
+ end;
+ S=S+'{';
+ Texcom(S);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.bin
new file mode 100644
index 00000000..d9c2bcae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.sci
new file mode 100755
index 00000000..166af676
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texsetctr.sci
@@ -0,0 +1,70 @@
+// 10.01.21
+
+function Texsetctr(Nctr,Opstr)
+ Ctr=Texctr(Nctr);
+ Opstr=Opstr+'%';
+ OperL='+-*/%';
+ Oper='';
+ Va='';
+ Evflg=0;
+ Paflg=0;
+ for I=1:length(Opstr)
+ Tmp=part(Opstr,I);
+ if Tmp=='('
+ Paflg=1;
+ if length(Va)>0
+ Evflg=1;
+ Va=Va+Tmp;
+ end;
+ continue;
+ end;
+ if Tmp==')'
+ Paflg=0;
+ if Evflg>0
+ Va=Va+Tmp;
+ end;
+ continue;
+ end;
+ if Paflg>0
+ Va=Va+Tmp;
+ continue;
+ end;
+ if length(mtlb_findstr(Tmp,OperL))==0
+ Va=Va+Tmp;
+ else
+ if Evflg>0
+ Tmp1=evstr(Va);
+ Va='\value{'+Tmp1+'}';
+ Evflg=0;
+ end;
+ if Oper==''
+ if length(Va)>0
+ Str='\setcounter{'+Ctr+'}{'+Va+'}';
+ Texcom(Str);
+ end;
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='+'
+ Str='\addtocounter{'+Ctr+'}{'+Va+'}';
+ Texcom(Str);
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='-'
+ Str='\addtocounter{'+Ctr+'}{-'+Va+'}';
+ Texcom(Str);
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='*'
+ Str='\multiply\value{'+Ctr+'} by '+Va;
+ Texcom(Str);
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='/'
+ Str='\divide\value{'+Ctr+'} by '+Va;
+ Texcom(Str);
+ Oper=Tmp;
+ Va=''
+ end;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.bin
new file mode 100644
index 00000000..26d4e8ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.sci
new file mode 100755
index 00000000..469da91a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texthectr.sci
@@ -0,0 +1,5 @@
+// 2010.02.12
+
+function Out=Texthectr(N)
+ Out='\the'+Texctr(N);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.bin
new file mode 100644
index 00000000..fd208b4a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.sci
new file mode 100755
index 00000000..96d1c734
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvalctr.sci
@@ -0,0 +1,5 @@
+// 2010.02.12
+
+function Out=Texvalctr(N)
+ Out='\value{'+Texctr(N)+'}';
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.bin
new file mode 100644
index 00000000..74890021
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.sci
new file mode 100755
index 00000000..fc443411
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Texvctr.sci
@@ -0,0 +1,6 @@
+// 10.01.21
+
+function Out=Texvctr(N)
+ Out='\value{'+Texctr(N)+'}';
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.bin
new file mode 100644
index 00000000..67df224b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.sci
new file mode 100755
index 00000000..c6ceff89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Thetadegree.sci
@@ -0,0 +1,7 @@
+// 08.07.11
+
+function Ang=Thetadegree()
+ global THETA;
+ Ang=THETA*180/%pi;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.bin
new file mode 100644
index 00000000..3cbb70be
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.sci
new file mode 100755
index 00000000..a7a3fc2d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/ThisVersion.sci
@@ -0,0 +1,5 @@
+function Y=ThisVersion()
+ global THISVERSION
+ Y=THISVERSION
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.bin
new file mode 100644
index 00000000..a0704ffc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.sci
new file mode 100755
index 00000000..8ef53bd5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Tolist.sci
@@ -0,0 +1,8 @@
+// 10.01.02
+
+function Out=Tolist(LG)
+ Out=list();
+ for I=1:length(LG)
+ Out($+1)=LG(I);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.bin
new file mode 100644
index 00000000..55b89eee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.sci
new file mode 100755
index 00000000..98d69544
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translate3data.sci
@@ -0,0 +1,36 @@
+// 08.08.15
+// 15.04.12
+
+function Out=Translate3data(varargin)
+ Nargs=length(varargin);
+ Pd3=varargin(1);
+ Pd3=Flattenlist(Pd3); // 15.04.12
+ Mv=varargin(2);
+ if type(Mv)==1 & length(Mv)==1
+ Mv=[varargin(2),varargin(3),varargin(4)];
+ end;
+// if Mixtype(Pd3)==1 // 15.04.12 from
+// Pd3=MixS(Pd3);
+// elseif Mixtype(Pd3)==3
+// Tmp=[];
+// for I=1:Mixlength(Pd3)
+// Tmp=Mixjoin(Tmp,Mixop(I,Pd3));
+// end;
+// Pd3=Tmp;
+// end;
+ Out=[];
+ for I=1:length(Pd3)
+ PD=Op(I,Pd3);
+ Ans=[];
+ for J=1:size(PD,1)
+ P=PD(J,:);
+ Tmp=P+Mv;;
+ Ans=[Ans;Tmp];
+ end;
+ Out=Mixadd(Out,Ans);
+ end;
+ if length(Out)==1
+ Out=Op(1,Out);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.bin
new file mode 100644
index 00000000..2239d9d6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.sci
new file mode 100755
index 00000000..a2e31085
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Translatedata.sci
@@ -0,0 +1,42 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Translatedata(varargin)
+ Nargs=length(varargin);
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ Tmp=varargin(2);
+ if type(Tmp)==1 & length(Tmp)>1
+ A=Tmp(1); B=Tmp(2);
+ else
+ A=Tmp;
+ if Nargs>=3
+ B=varargin(3);
+ else
+ B=0;
+ end;
+ end;
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ X2=X1+A;
+ Y2=Y1+B;
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.bin
new file mode 100644
index 00000000..4d0816a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.sci
new file mode 100755
index 00000000..b4705593
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Trunc.sci
@@ -0,0 +1,10 @@
+// 08.05.20
+
+function N=Trunc(X)
+ if X>=0
+ N=floor(X)
+ else
+ N=ceil(X)
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.bin
new file mode 100644
index 00000000..c9d8edf5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.sci
new file mode 100755
index 00000000..74910ceb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Unscaling.sci
@@ -0,0 +1,12 @@
+function Out=Unscaling(G)
+ global LOGX LOGY SCALEX SCALEY;
+ GLg=[G(:,1)/SCALEX,G(:,2)/SCALEY];
+ Out=GLg;
+ if LOGX==1
+ Out=[10^(GLg(:,1)),GLg(:,2)];
+ end;
+ if LOGY==1
+ Out=[GLg(:,1),10^(GLg(:,2))];
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.bin
new file mode 100644
index 00000000..ba124a81
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.sci
new file mode 100755
index 00000000..4bc7684c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa.sci
@@ -0,0 +1,11 @@
+function L=Vecnagasa(varargin)
+ PA=varargin(1);
+ if length(varargin)>1
+ PB=varargin(2);
+ else
+ PB=zeros(1,length(PA));
+ end
+ Tmp=PB-PA;
+ L=sqrt(Tmp*Tmp');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.bin
new file mode 100644
index 00000000..b524d528
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.sci
new file mode 100755
index 00000000..527d3834
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vecnagasa2.sci
@@ -0,0 +1,11 @@
+function L=Vecnagasa2(varargin)
+ PA=varargin(1);
+ if length(varargin)>1
+ PB=varargin(2);
+ else
+ PB=[0,0];
+ end
+ Tmp=PB-PA;
+ L=Tmp*Tmp';
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.bin
new file mode 100644
index 00000000..cef98adc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.sci
new file mode 100755
index 00000000..44bde517
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Viewfrom.sci
@@ -0,0 +1,21 @@
+// 08.10.26
+
+function Out=Viewfrom(varargin)
+ global THETA PHI
+ Nargs=length(varargin);
+ Nvec=varargin(1);
+ GL=varargin(2);
+ Flg=1;
+ if Nargs>=3
+ Flg=varargin(3);
+ end;
+ Theta=THETA; Phi=PHI;
+ Tmp=Rotate3data(GL,Nvec,[-1,0,0]);
+ THETA=%pi/2; PHI=0;
+ Out=Projpara(Tmp);
+ if Flg==1
+ Windisp(Out);
+ end;
+ THETA=Theta; PHI=Phi;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.bin
new file mode 100644
index 00000000..278e7845
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.sci
new file mode 100644
index 00000000..de320918
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Vtickmark.sci
@@ -0,0 +1,144 @@
+// 08.05.26 Debugged
+// 09.12.25
+// 11.04.13 debugged ( [a,b] )
+// 14.03.05 MARKLEN
+
+function Vtickmark(varargin)
+ global Wfile FID MARKLEN GENTEN YMIN YMAX;
+ Nargs=length(varargin);
+ ArgsL=list(varargin(1:Nargs));
+ if type(Op(1,ArgsL))==10
+ Str=Op(1,ArgsL);
+ Tmp=mtlb_findstr(Str,'m');
+ if Tmp~=[]
+ I=Tmp(1);
+ else
+ I=0;
+ end
+ Tmp=mtlb_findstr(Str,'n');
+ if Tmp~=[]
+ J=Tmp(1);
+ else
+ J=0;
+ end
+ Tmp=mtlb_findstr(Str,'r');
+ if Tmp~=[]
+ K=Tmp(1);
+ else
+ K=0;
+ end;
+ if K>0
+ Tmp=ascii(Str);
+ S=char(Tmp(K+1:length(Tmp)));
+ R=msscanf(S,'%f');
+ if length(R)==0
+ R=1;
+ end
+ else
+ R=1;
+ K=length(Str)+1;
+ end
+ if J>0 then
+ Tmp=ascii(Str);
+ S=char(Tmp(J+1:K-1));
+ if S==[]
+ S='';
+ end;
+ Dn=msscanf(S,'%d');
+ if length(Dn)==0
+ Dn=1;
+ end
+ else
+ Dn=1000;
+ J=length(Str)+1;
+ end
+ Tmp=ascii(Str);
+ S=char(Tmp(I+1:J-1));
+ if S==[]
+ S='';
+ end
+ Dm=msscanf(S,'%f');
+ if length(Dm)==0
+ Dm=1;
+ end
+ ArgsL=list();
+ for I=1:floor((YMAX-GENTEN(2))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(Tmp(1:k-1));
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ for I=-1:-1:ceil((YMIN-GENTEN(2))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(1:K-1);
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ end
+ MemoriList=list();
+ Memori=list();
+ for N=1:length(ArgsL)
+ Dt=Op(N,ArgsL);
+ if type(Dt)==1 & length(Dt)>1
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(Dt(1),Dt(2));
+ continue
+ end
+ if type(Dt)==10
+ Memori($+1)=Dt;
+ else
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(GENTEN(1),Dt);
+ end
+ end
+ MemoriList($+1)=Memori;
+ for N=1:length(MemoriList)
+ Dt=MemoriList(N);
+ Ndt=length(Dt);
+ X=Op(1,Dt);
+ Y=Op(2,Dt);
+ Tmp=Doscaling([X,Y]);
+ X=Tmp(1);
+ Y=Tmp(2);
+ Moji=Op(Ndt,Dt);
+ Tmp1=Unscaling([X+MARKLEN,Y]);
+ Tmp2=Unscaling([X-MARKLEN,Y]);
+ Fd=Listplot([Tmp1,Tmp2]);
+ Drwline(Fd);
+ if Ndt==3
+ Tmp=Unscaling([X-MARKLEN,Y]);
+ Expr(Tmp,'w',Moji);
+ end
+ if Ndt==4
+ Houkou=Op(3,Dt);
+ if mtlb_findstr(Houkou,'w')~=[]
+ Tmp=Unscaling([X-MARKLEN,Y]);
+ Expr(Tmp,Houkou,Moji);
+ else
+ Tmp=Unscaling([X+MARKLEN,Y]);
+ Expr(Tmp,Houkou,Moji);
+ end
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.bin
new file mode 100644
index 00000000..6b3e87e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.sci
new file mode 100755
index 00000000..baa03e73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Windisp.sci
@@ -0,0 +1,110 @@
+// 08.05.16 Point style
+// 08.05.17 MixL
+// 08.05.19 Changed
+// 08.05.21 Eps=0.1
+// 08.08.16 square
+// 09.11.04 window option
+// 09.11.07 gcf used
+// 09.12.25
+// 10.01.01
+// 10.01.09 ' '
+// 10.01.10 drw one by one
+// 10.02.08 revised for the case "a"
+// 10.02.13 square debugged
+// 10.02.21 square debugged (2)
+// 10.02.23 case of mixlength=3
+// 10.04.10 Origin bug
+// 11.05.29 Flattenlist used
+
+function Windisp(varargin)
+ global XMIN XMAX YMIN YMAX GENTEN
+ Nargs=length(varargin);
+ Tp=varargin(Nargs);
+ Ch='';
+ if type(Tp)~=10
+ scf();
+ else
+ Ch=part(Tp,1);
+ Nargs=Nargs-1;
+ select Ch;
+ case 'N' then scf();
+ case 'n' then scf();
+ case 'C' then Tmp=gcf();clf('clear');
+ case 'c' then Tmp=gcf();clf('clear');
+ case 'A' then Tmp=gcf();
+ case 'a' then Tmp=gcf();
+ else
+ Tmp1=part(Tp,length(Tp));
+ Tmp2=part(Tp,1:length(Tp)-1);
+ Tmp3=evstr(Tmp2);
+ scf(Tmp3);
+ if Tmp1=='C'|Tmp1=='c'
+ clf('clear');
+ end;
+ end;
+ end;
+ Eps=0.1;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xm=Tmp(1); Ym=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ XM=Tmp(1); YM=Tmp(2);
+ C=[(Xm+XM)/2,(Ym+YM)/2];
+ H=max(XM-Xm,YM-Ym)/2;
+ R1=C-H; R2=C+H;
+ R1=Unscaling(R1);
+ R2=Unscaling(R2);
+ if (Ch~='A')&(Ch~='a')
+ Tmp1=R1(1);
+ Tmp2=R2(1);
+ Tmp3=R1(2);
+ Tmp4=R2(2);
+ square(Tmp1,Tmp3,Tmp2,Tmp4);//
+ P=Framedata([XMIN,XMAX],[YMIN,YMAX]);
+ Tmp1=P(:,1)';
+ Tmp2=P(:,2)';
+ plot2d(Tmp1,Tmp2);
+ PtO=GENTEN; // 10.04.10
+ if (PtO(2)>=YMIN) & (PtO(2)<=YMAX) //
+ P=Listplot([XMIN,PtO(2)],[XMAX,PtO(2)]);
+ Tmp1=P(:,1)';
+ Tmp2=P(:,2)';
+ plot2d(Tmp1,Tmp2,style=[3]);
+ end;
+ if (PtO(1)>=XMIN) & (PtO(1)<=XMAX)
+ P=Listplot([PtO(1),YMIN],[PtO(1),YMAX]);
+ Tmp1=P(:,1)';
+ Tmp2=P(:,2)';
+ plot2d(Tmp1,Tmp2,style=[3]);
+ end;
+ end;
+ for I=1:Nargs
+ Tmp=varargin(I);
+ Pdata=Flattenlist(Tmp); //
+ for II=1:length(Pdata)
+ Tmp=Op(II,Pdata);
+ P=MakeCurves(Tmp,0);
+ P=Unscaling(P);
+ Ndm=Dataindex(P);
+ for J=1:size(Ndm,1)
+ Q=P(Ndm(J,1):Ndm(J,2),:)
+ if size(Q,1)==1
+ for K=1:2:length(Q)
+ plot2d(Q(K),Q(K+1),style=[-3]);
+ end
+ else
+ Tmp1=Q(:,1)';
+ Tmp2=Q(:,2)';
+ plot2d(Tmp1,Tmp2);
+ end
+ end
+ end
+// for II=2:length(Pdata)
+// Tmp=Op(II,Pdata);
+// Windisp(Tmp,'a');
+// end;
+ end
+ for I=2:Nargs
+ Pdata=varargin(I);
+ Windisp(Pdata,'a');
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.bin
new file mode 100644
index 00000000..68abd1d4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.sci
new file mode 100755
index 00000000..24920661
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WireHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.12.11
+
+function Out=WireHiddenData()
+ global HIDDENWIREDATA
+ Out=HIDDENWIREDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.bin
new file mode 100644
index 00000000..085de36e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.sci
new file mode 100755
index 00000000..d62acaf3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WirePt.sci
@@ -0,0 +1,8 @@
+// 08.09.15
+// 09.09.10 registered
+
+function Out=WirePt()
+ global WIREPT
+ Out=WIREPT;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.bin
new file mode 100644
index 00000000..d84e23dc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.sci
new file mode 100755
index 00000000..b46e359c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wireparadata.sci
@@ -0,0 +1,120 @@
+// 08.09.15
+// 08.10.10
+// 08.10.11
+// 08.10.15
+// 08.10.21
+// 08.10.25
+// 09.09.10
+// 10.02.16 Eps
+// 17.05.07 Eps changed
+
+function FsL=Wireparadata(varargin)
+ global WIREPT PARTITIONPT HIDDENDATA HIDDENWIREDATA
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpara(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=[0.05,1]; //
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DuL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ WIREPT=[];
+ HIDDENWIREDATA=[];
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(2)');//17.05.07
+ FkL=Cuspsplitpara(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(1)');//17.05.07
+ FkL=Cuspsplitpara(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.bin
new file mode 100644
index 00000000..01266c62
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.sci
new file mode 100755
index 00000000..11def80c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirepersdata.sci
@@ -0,0 +1,120 @@
+// 08.09.21
+// 08.10.10
+// 08.10.11
+// 08.10.15
+// 08.10.21
+// 08.10.25
+// 09.09.10
+// 10.02.16 Eps
+// 17.05.07 Eps changed
+
+function FsL=Wirepersdata(varargin)
+ global WIREPT PARTITIONPT HIDDENDATA HIDDENWIREDATA
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpers(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=[0.05,1]; //
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DuL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ WIREPT=[];
+ HIDDENWIREDATA=[];
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(2)');//17.05.07
+ FkL=Cuspsplitpers(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(1)');
+ FkL=Cuspsplitpers(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //17.05.07
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.bin
new file mode 100644
index 00000000..4e6ca980
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.sci
new file mode 100755
index 00000000..59c5ba54
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawparadata.sci
@@ -0,0 +1,86 @@
+// 08.09.15
+// 08.10.10
+// 08.10.21
+// 09.09.10
+
+function FsL=Wirerawparadata(varargin)
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpara(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=0.05;
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DuL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(1)');
+ FkL=Cuspsplitpara(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(2)');
+ FkL=Cuspsplitpara(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.bin
new file mode 100644
index 00000000..2718cfd0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.sci
new file mode 100755
index 00000000..d168b4f7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Wirerawpersdata.sci
@@ -0,0 +1,86 @@
+// 08.09.21
+// 08.10.10
+// 08.10.21
+// 09.09.10
+
+function FsL=Wirerawpersdata(varargin)
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpers(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=0.05;
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DvL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(1)');
+ FkL=Cuspsplitpers(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(2)');
+ FkL=Cuspsplitpers(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.bin
new file mode 100644
index 00000000..3016dd47
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.sci
new file mode 100644
index 00000000..059ac6d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WriteOutData.sci
@@ -0,0 +1,55 @@
+// s:2014.10.10
+// e:2014.12.14 ( for 3d )
+// e:2015.10.29 ( endmark //// )
+
+function WriteOutData(varargin)
+ global Fnameout
+ Nargs=length(varargin);
+ if modulo(Nargs,2)==0 then
+ Fname=Fnameout;
+ Nst=1;
+ else
+ Fname=varargin(1);
+ Nst=2;
+ end;
+ Fid=mopen(Fname,'w');
+ for N=Nst:2:Nargs
+ Gname=varargin(N);
+ mfprintf(Fid,'%s\n',Gname+"//");
+ Gdata=varargin(N+1);
+ Gdata=Flattenlist(Gdata);
+ for K=1:length(Gdata)
+ GL=Dividegraphics(Gdata(K));
+ for J=1:length(GL)
+ mfprintf(Fid,'%s\n',"start//");
+ Str="";
+ for I=1:Numptcrv(GL(J))
+ Pt=Ptcrv(I,GL(J));
+ if length(Str)>0 then
+ Str=Str+","
+ end;
+ if length(Pt)<3 // 2014.12.14
+ Str=Str+msprintf("[%5.4f,%5.4f]",Pt(1),Pt(2));
+ else
+ Str=Str+msprintf("[%5.4f,%5.4f,%5.4f]",Pt(1),Pt(2),Pt(3));
+ end;
+ if length(Str)>80 then
+ mfprintf(Fid,'%s\n',"["+Str+"]//");
+ Str="";
+ end
+ end
+ if length(Str)>0 then
+ mfprintf(Fid,'%s\n',"["+Str+"]//");
+ end
+ if N==Nargs-1 & K==length(Gdata) & J==length(GL) then // 15.10.29
+// mfprintf(Fid,'%s\n',"end////");
+ mfprintf(Fid,'%s\n',"end//");
+ else
+ mfprintf(Fid,'%s\n',"end//");
+ end;
+ end
+ end
+ end
+ mfprintf(Fid,'%s\n',"//");
+ mclose(Fid);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.bin
new file mode 100644
index 00000000..e53ba463
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.sci
new file mode 100644
index 00000000..ae51bf8b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writeobjpoint.sci
@@ -0,0 +1,12 @@
+// s : 2014.06.22
+
+function Out=Writeobjpoint(P)
+ global OBJFMT OBJSCALE NPOINT;
+ X=sprintf(OBJFMT,P(1)*OBJSCALE);
+ Y=sprintf(OBJFMT,P(2)*OBJSCALE);
+ Z=sprintf(OBJFMT,P(3)*OBJSCALE);
+ Str="v "+X+" "+Y+" "+Z;
+ Printobjstr(Str)
+ NPOINT=NPOINT+1
+ Out=NPOINT;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.bin
new file mode 100644
index 00000000..c3f3d522
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.sci
new file mode 100755
index 00000000..51a13884
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Writetextdata.sci
@@ -0,0 +1,47 @@
+// 2010.04.27
+
+function Writetextdata(varargin)
+ Fname=varargin(1);
+ Mt=varargin(2);
+ D=-1;
+ for I=3:length(varargin)
+ Tmp=varargin(I);
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ end;
+ end;
+ Str='';
+ for J=1:size(Mt,2)
+ Str=Str+'x'+string(J);
+ if J<size(Mt,2)
+ Str=Str+',';
+ end;
+ end;
+ if Fname~=''
+ Fid=mopen(Fname,'w');
+ mfprintf(Fid,'%s\n',Str);
+ else
+ mprintf('%s\n',Str);
+ end;
+ for I=1:size(Mt,1)
+ Str='';
+ for J=1:size(Mt,2)
+ Dt=Mt(I,J);
+ if Dt==%inf
+ Dt=D;
+ end;
+ Str=Str+string(Dt);
+ if J<size(Mt,2)
+ Str=Str+',';
+ end;
+ end;
+ if Fname~=''
+ mfprintf(Fid,'%s\n',Str);
+ else
+ mprintf('%s\n',Str);
+ end;
+ end;
+ if Fname~=''
+ mclose(Fid);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.bin
new file mode 100644
index 00000000..655cd4e6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.sci
new file mode 100644
index 00000000..60d73ef7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/WritetoCindy.sci
@@ -0,0 +1,42 @@
+// s:2014.09.16
+
+function WritetoCindy(varargin)
+ global Fnametxt
+ GnameV=list();
+ for J=1:length(varargin)
+ Tmp=varargin(J);
+ for K=1:size(Tmp,2)
+ GnameV($+1)=Tmp(1,K);
+ end
+ end;
+ Fid=mopen(Fnametxt,'w');
+ for Nv=1:length(GnameV)
+ Gname=GnameV(Nv);
+ Tmp=evstr(Gname);
+ GL=Dividegraphics(Tmp);
+ Lnst="";
+ for J=1:length(GL)
+ G=GL(J);
+ Gn=Gname+"No"+string(J);
+ mfprintf(Fid,'%s\n',Gn+"=[];//");
+ for K=1:Numptcrv(G)
+ Pt=Ptcrv(K,G);
+ if length(Lnst)==0
+ Lnst=Gn+"=concat("+Gn+",[";
+ end;
+ Tmp=msprintf("[%6.4f,%6.4f]",Pt(1),Pt(2));
+ Lnst=Lnst+Tmp;
+ if length(Lnst)>80 | K==Numptcrv(G)
+ Lnst=Lnst+"]);//";
+ mfprintf(Fid,'%s\n',Lnst);
+ Lnst="";
+ else
+ Lnst=Lnst+",";
+ end;
+ end;
+ Str="Goutdatalist=Append(Goutdatalist,"+Gn+");//";
+ mfprintf(Fid,'%s\n',Str);
+ end;
+ end;
+ mclose(Fid);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.bin
new file mode 100644
index 00000000..ba00f67f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.sci
new file mode 100755
index 00000000..28ab28ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmax.sci
@@ -0,0 +1,5 @@
+function Y=Xmax()
+ global XMAX
+ Y=XMAX;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.bin
new file mode 100644
index 00000000..7e8c9e46
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.sci
new file mode 100755
index 00000000..e18e83d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xmin.sci
@@ -0,0 +1,5 @@
+function Y=Xmin()
+ global XMIN
+ Y=XMIN;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.bin
new file mode 100644
index 00000000..fc0a8807
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.sci
new file mode 100755
index 00000000..b2118c90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzax3data.sci
@@ -0,0 +1,14 @@
+// 08.07.11
+
+function Out=Xyzax3data(Xrange,Yrange,Zrange)
+ J=mtlb_findstr(Xrange,'=');
+ Tmp=evstr(part(Xrange,J+1:length(Xrange)));
+ Px=[Tmp(1),0,0]; Qx=[Tmp(2),0,0];
+ J=mtlb_findstr(Yrange,'=');
+ Tmp=evstr(part(Yrange,J+1:length(Yrange)));
+ Py=[0,Tmp(1),0]; Qy=[0,Tmp(2),0];
+ J=mtlb_findstr(Zrange,'=');
+ Tmp=evstr(part(Zrange,J+1:length(Zrange)));
+ Pz=[0,0,Tmp(1)]; Qz=[0,0,Tmp(2)];
+ Out=MixS(Spaceline([Px,Qx]),Spaceline([Py,Qy]),Spaceline([Pz,Qz]));
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.bin
new file mode 100644
index 00000000..04b8bdce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.sci
new file mode 100755
index 00000000..b833802d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxparaname.sci
@@ -0,0 +1,71 @@
+// 08.07.11
+// 09.09.18
+
+function Kekka=Xyzaxparaname(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Eps=10.0^(-6);
+ Dr=0.19*1000/2.54/MilliIn;
+ Tmp=varargin(Nargs);
+ if Nargs>1 & type(Tmp)==1
+ Dr=Dr*Tmp;
+ Nargs=Nargs-1;
+ end;
+ if type(varargin(1))==10
+ Xrange=varargin(1); Yrange=varargin(2); Zrange=varargin(3);
+ J=mtlb_findstr(Xrange,'=');
+ Xname=part(Xrange,1:J-1);
+ Tmp=evstr(part(Xrange,J+1:length(Xrange)));
+ Px=[Tmp(1),0,0]; Qx=[Tmp(2),0,0];
+ J=mtlb_findstr(Yrange,'=');
+ Yname=part(Yrange,1:J-1);
+ Tmp=evstr(part(Yrange,J+1:length(Yrange)));
+ Py=[0,Tmp(1),0]; Qy=[0,Tmp(2),0];
+ J=mtlb_findstr(Zrange,'=');
+ Zname=part(Zrange,1:J-1);
+ Tmp=evstr(part(Zrange,J+1:length(Zrange)));
+ Pz=[0,0,Tmp(1)]; Qz=[0,0,Tmp(2)];
+ else
+ Data=varargin(1);
+ Xname='x'; Yname='y'; Zname='z';
+ if Nargs>1
+ if varargin(2)~=''
+ Xname=varargin(2);
+ end;
+ if varargin(3)~=''
+ Yname=varargin(3);
+ end;
+ if varargin(4)~=''
+ Zname=varargin(4);
+ end;
+ end;
+ Tmp=Mixop(1,Data);
+ Px=Tmp(1,:); Qx=Tmp(2,:);
+ Tmp=Mixop(2,Data);
+ Py=Tmp(1,:) ;
+ Qy=Tmp(2,:);
+ Tmp=Mixop(3,Data);
+ Pz=Tmp(1,:);
+ Qz=Tmp(2,:);
+ end;
+ Ph=Parapt(Px); Qh=Parapt(Qx); R=Vecnagasa(Ph,Qh);
+ Kekka=[];
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Xname);
+ end
+ Ph=Parapt(Py); Qh=Parapt(Qy); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Yname);
+ end;
+ Ph=Parapt(Pz); Qh=Parapt(Qz); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Zname);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.bin
new file mode 100644
index 00000000..3940b5b0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.sci
new file mode 100755
index 00000000..d9c1c7df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Xyzaxpersname.sci
@@ -0,0 +1,72 @@
+// 08.08.14
+// 08.08.15
+// 09.09.18
+
+function Kekka=Xyzaxpersname(varargin)
+ global MilliIn;
+ Eps=10.0^(-6);
+ Nargs=length(varargin);
+ Dr=0.19*1000/2.54/MilliIn;
+ Tmp=varargin(Nargs);
+ if Nargs>1 & type(Tmp)==1
+ Dr=Dr*Tmp;
+ Nargs=Nargs-1;
+ end;
+ if type(varargin(1))==10
+ Xrange=varargin(1); Yrange=varargin(2); Zrange=varargin(3);
+ J=mtlb_findstr(Xrange,'=');
+ Xname=part(Xrange,1:J-1);
+ Tmp=evstr(part(Xrange,J+1:length(Xrange)));
+ Px=[Tmp(1),0,0]; Qx=[Tmp(2),0,0];
+ J=mtlb_findstr(Yrange,'=');
+ Yname=part(Yrange,1:J-1);
+ Tmp=evstr(part(Yrange,J+1:length(Yrange)));
+ Py=[0,Tmp(1),0]; Qy=[0,Tmp(2),0];
+ J=mtlb_findstr(Zrange,'=');
+ Zname=part(Zrange,1:J-1);
+ Tmp=evstr(part(Zrange,J+1:length(Zrange)));
+ Pz=[0,0,Tmp(1)]; Qz=[0,0,Tmp(2)];
+ else
+ Data=varargin(1);
+ Xname='x'; Yname='y'; Zname='z';
+ if Nargs>1
+ if varargin(2)~=''
+ Xname=varargin(2);
+ end;
+ if varargin(3)~=''
+ Yname=varargin(3);
+ end;
+ if varargin(4)~=''
+ Zname=varargin(4);
+ end;
+ end;
+ Tmp=Mixop(1,Data);
+ Px=Tmp(1,:); Qx=Tmp(2,:);
+ Tmp=Mixop(2,Data);
+ Py=Tmp(1,:) ;
+ Qy=Tmp(2,:);
+ Tmp=Mixop(3,Data);
+ Pz=Tmp(1,:);
+ Qz=Tmp(2,:);
+ end;
+ Ph=Perspt(Px); Qh=Perspt(Qx); R=Vecnagasa(Ph,Qh);
+ Kekka=[];
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Xname);
+ end
+ Ph=Perspt(Py); Qh=Perspt(Qy); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Yname);
+ end;
+ Ph=Perspt(Pz); Qh=Perspt(Qz); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Zname);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.bin
new file mode 100644
index 00000000..93cbf4e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.sci
new file mode 100755
index 00000000..0a835534
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymax.sci
@@ -0,0 +1,5 @@
+function Y=Ymax()
+ global YMAX
+ Y=YMAX;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.bin
new file mode 100644
index 00000000..79ab6600
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.sci
new file mode 100755
index 00000000..73d0d261
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Ymin.sci
@@ -0,0 +1,5 @@
+function Y=Ymin()
+ global YMIN
+ Y=YMIN;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.bin
new file mode 100644
index 00000000..d870458d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.sci
new file mode 100755
index 00000000..5c237179
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zparapt.sci
@@ -0,0 +1,8 @@
+// 08.07.11
+
+function Out=Zparapt(P)
+ global PHI THETA;
+ x=P(1); y=P(2); z=P(3);
+ Out=x*cos(PHI)*sin(THETA)+y*sin(PHI)*sin(THETA)+z*cos(THETA);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.bin
new file mode 100644
index 00000000..0af89330
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.sci
new file mode 100755
index 00000000..13601556
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/Zperspt.sci
@@ -0,0 +1,20 @@
+// 08.08.12
+// 10.01.02
+
+function X3=Zperspt(P)
+
+ global FocusPoint EyePoint
+
+ Tmp=P-FocusPoint;
+ X1=Tmp(1); Y1=Tmp(2); Z1=Tmp(3);
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ X2=X1*Ca+Y1*Sa; Y2=-X1*Sa+Y1*Ca; Z2=Z1;
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ X3=X2*Cb+Z2*Sb;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/lib b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/lib
new file mode 100644
index 00000000..24864cee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/lib
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<scilablib name="ketpic2esciL6">
+ <macro name="Addcounter" file="Addcounter.bin" md5="f7a17da511ba9fdd3cf4cdaf83f3d78c"/>
+ <macro name="Anglemark" file="Anglemark.bin" md5="0e984414d47cb604faef41ae93390dcb"/>
+ <macro name="Arrowdata" file="Arrowdata.bin" md5="b39db1a6340e09c9dfaa3fbb4c3777f1"/>
+ <macro name="Arrowhead" file="Arrowhead.bin" md5="0b0bc5478ce8afeb47770d9add192560"/>
+ <macro name="Arrowheaddata" file="Arrowheaddata.bin" md5="3c06f276e57945b3d54e11e39a9e9435"/>
+ <macro name="Arrowline" file="Arrowline.bin" md5="e15854f9c5c640cee8667f6128023620"/>
+ <macro name="Assign" file="Assign.bin" md5="c8d1390433c0a317d199f5491669e988"/>
+ <macro name="Assignadd" file="Assignadd.bin" md5="d24d31a4cfd1dc707c51c51ff9cdf364"/>
+ <macro name="Assignrep" file="Assignrep.bin" md5="e81413f3bc64c05ae0821b56fd63e5ef"/>
+ <macro name="Assignset" file="Assignset.bin" md5="6a6dad9e5a35cdddb0ac069ec601c061"/>
+ <macro name="Beginpicture" file="Beginpicture.bin" md5="9fd24a768a0d6548b1f458d51e1bb202"/>
+ <macro name="Bezier" file="Bezier.bin" md5="f23aa1069913d825c6f8040b3de17e7d"/>
+ <macro name="Bezierpt" file="Bezierpt.bin" md5="f09183e61d71f55243937a28ef90fb06"/>
+ <macro name="BorderHiddenData" file="BorderHiddenData.bin" md5="67622b4dca726e7aff9b4e92d411edcd"/>
+ <macro name="BorderPt" file="BorderPt.bin" md5="e482d76b67ceb360021f9cef448abc73"/>
+ <macro name="Borderparadata" file="Borderparadata.bin" md5="1bf108993d36707c45e3a25770ca2869"/>
+ <macro name="Borderpersdata" file="Borderpersdata.bin" md5="d46e7fdcf42a61c354a540359dcd9f5f"/>
+ <macro name="Borderrawdata" file="Borderrawdata.bin" md5="0228890cf35b6929fc3bb083b1211da6"/>
+ <macro name="Bowdata" file="Bowdata.bin" md5="1f5f1c65d0448af83143e14f53565393"/>
+ <macro name="Bowmiddle" file="Bowmiddle.bin" md5="0a765efd6dae8c6fbd0d075ef0ff8b3c"/>
+ <macro name="Bowname" file="Bowname.bin" md5="e8ab45879c83d386dcf5e086fe71e1a4"/>
+ <macro name="Bownamerot" file="Bownamerot.bin" md5="ce9e45bf14fca7b62fa56b6d0b3baaef"/>
+ <macro name="CalcHeight" file="CalcHeight.bin" md5="f535ff3dcd86bc6552b54894e5865673"/>
+ <macro name="CalcWidth" file="CalcWidth.bin" md5="cf0f3d22a9dd2ffdb077a4be5bf1219f"/>
+ <macro name="Calcfun" file="Calcfun.bin" md5="618d36dbe48f68b4a3e2664b5df8cad2"/>
+ <macro name="CameraCurve" file="CameraCurve.bin" md5="b8acf2da07c09553106c10b4cc29d9e7"/>
+ <macro name="CameracoordCurve" file="CameracoordCurve.bin" md5="91ad20f64500117414f16a1cce2c344f"/>
+ <macro name="Cancoordpara" file="Cancoordpara.bin" md5="61afc19fb49f4b16d48a3cc54c6c6650"/>
+ <macro name="Cancoordpers" file="Cancoordpers.bin" md5="3a82d9864deed9b050795decae25d8bb"/>
+ <macro name="Circledata" file="Circledata.bin" md5="a5a1cf644e81417a9065d80f71b24d8d"/>
+ <macro name="Clipindomain" file="Clipindomain.bin" md5="773133bed55b7003b0248ffb670e3685"/>
+ <macro name="Closefile" file="Closefile.bin" md5="d29119f97c49373729d10b0cfba746e4"/>
+ <macro name="Closeobj" file="Closeobj.bin" md5="18df14cfd19b6a7911f9a3748572c02c"/>
+ <macro name="Closepar" file="Closepar.bin" md5="b8f58e851efa7f12560401c5b0760ecf"/>
+ <macro name="Closephr" file="Closephr.bin" md5="f53a01c653931c16bd3c493950798acf"/>
+ <macro name="Closepicture" file="Closepicture.bin" md5="32f401713757a349111cfaf0adcf199d"/>
+ <macro name="Connectseg" file="Connectseg.bin" md5="439d9f55197c09cd7b54e98cc7151208"/>
+ <macro name="Crossprod" file="Crossprod.bin" md5="536992b625b66d009e88e73a21a354d6"/>
+ <macro name="Crv3onsfHiddenData" file="Crv3onsfHiddenData.bin" md5="716dedc06dea644e6aadecf58ab050f4"/>
+ <macro name="Crv3onsfparadata" file="Crv3onsfparadata.bin" md5="e0d51c785077d687bfc222837fd8593b"/>
+ <macro name="Crv3onsfpersdata" file="Crv3onsfpersdata.bin" md5="63bcd579f64f40cc04e50094782e09e0"/>
+ <macro name="CrvonsfHiddenData" file="CrvonsfHiddenData.bin" md5="009a9889bf1f2a3a05f38918b579b7cb"/>
+ <macro name="Crvonsfparadata" file="Crvonsfparadata.bin" md5="6d5468227fd75007c1dfe4572c1c189c"/>
+ <macro name="Crvonsfpersdata" file="Crvonsfpersdata.bin" md5="de082902912599535a629ed08e56fb6c"/>
+ <macro name="CrvsfHiddenData" file="CrvsfHiddenData.bin" md5="f8d158838c95df89a67bf8233e541a09"/>
+ <macro name="Crvsfparadata" file="Crvsfparadata.bin" md5="885de6d7639a403dd01a2761e39a6ad1"/>
+ <macro name="Crvsfpersdata" file="Crvsfpersdata.bin" md5="3a660a01512f537e270f611d45512032"/>
+ <macro name="CuspData" file="CuspData.bin" md5="0958a008a4c59305d62522f9b80028da"/>
+ <macro name="CuspPt" file="CuspPt.bin" md5="08b55dc8b3e2d0ee1fea47b71825af92"/>
+ <macro name="CuspSplitPt" file="CuspSplitPt.bin" md5="0ff09f7f3d56080bbad1a1a26260f254"/>
+ <macro name="Cuspsplitpara" file="Cuspsplitpara.bin" md5="e54d63f2224cff696951a50800d0c4d4"/>
+ <macro name="Cuspsplitpers" file="Cuspsplitpers.bin" md5="ebf6aef58ed839a05d27771eeb0fc60c"/>
+ <macro name="Cutsf2d" file="Cutsf2d.bin" md5="adc0dd43b75ee65d181c56c5eeef3b0a"/>
+ <macro name="Dashline" file="Dashline.bin" md5="4d0497d9013039e15ff2b287b2c0988b"/>
+ <macro name="Dataindex" file="Dataindex.bin" md5="f0b3b146c9ee16cde54ecd4937acb0b9"/>
+ <macro name="Definecolor" file="Definecolor.bin" md5="337b7001704f8c604b555e35721973d6"/>
+ <macro name="Deqplot" file="Deqplot.bin" md5="43a868bfe9d41dc2389116b15d18df80"/>
+ <macro name="Derivative" file="Derivative.bin" md5="f0b451a2b43c69168ac088e8443f6961"/>
+ <macro name="Diagcelldata" file="Diagcelldata.bin" md5="efc679b9d0239e2669c6a0929a4e242b"/>
+ <macro name="Dividegraphics" file="Dividegraphics.bin" md5="b2c065a1249613d3cf7f6ba80ec816a4"/>
+ <macro name="Dividetable" file="Dividetable.bin" md5="af1d4f7f854da91ce2b4cec13ff44bc5"/>
+ <macro name="Doscaling" file="Doscaling.bin" md5="86184ec15f528517d5e37e8b5baa3754"/>
+ <macro name="Dotfilldata" file="Dotfilldata.bin" md5="80a560945fc679f1f036778833dd59a7"/>
+ <macro name="Dotprod" file="Dotprod.bin" md5="e1a7afad315e324245ec76499b5dfb6c"/>
+ <macro name="Dottedline" file="Dottedline.bin" md5="6505941ec7ec4395b72df15f93621117"/>
+ <macro name="Dropnumlistcrv" file="Dropnumlistcrv.bin" md5="1875178bc5c363af0d15f8276503be4a"/>
+ <macro name="Droppoint" file="Droppoint.bin" md5="c25e16076a319350b8763f48476b4ec6"/>
+ <macro name="Drwline" file="Drwline.bin" md5="3aedf6f6a861fa772b06071e29680824"/>
+ <macro name="Drwpt" file="Drwpt.bin" md5="52f450f7724e33a424582cfe03c06877"/>
+ <macro name="Drwxy" file="Drwxy.bin" md5="c17d9f6608390f019c87d6e1e181e8a3"/>
+ <macro name="Embed" file="Embed.bin" md5="7cc5c0ccfeb87763b205b3fcf0dc67b4"/>
+ <macro name="Enclosing" file="Enclosing.bin" md5="457c453795c3b3224be70e1721385cb1"/>
+ <macro name="EnclosingS" file="EnclosingS.bin" md5="13de130f31f7932194fd173f977ff896"/>
+ <macro name="Endpicture" file="Endpicture.bin" md5="9b3ce661a450d798d55889be6ffd31ac"/>
+ <macro name="Evlptablepara" file="Evlptablepara.bin" md5="06e669cba02eb0218f852fdf46b1cae5"/>
+ <macro name="Evlptablepers" file="Evlptablepers.bin" md5="6cc6897a677911ce2629157f932f32c5"/>
+ <macro name="Execmd" file="Execmd.bin" md5="c3a30b0fae6f2a8ce6593607ed0d2ed8"/>
+ <macro name="Expr" file="Expr.bin" md5="c3e260bc0fd7af5a7231431ef9033f5c"/>
+ <macro name="Exprrot" file="Exprrot.bin" md5="6fc71ff18629fc512e5fed1218433619"/>
+ <macro name="Faceremovaldata" file="Faceremovaldata.bin" md5="90e9f3a860839349b2486df6fff7adb4"/>
+ <macro name="Facesdata" file="Facesdata.bin" md5="0c43ae73a08dcfce906c075f17eec59a"/>
+ <macro name="Findcell" file="Findcell.bin" md5="9b9cc86ef6f67a8d539d30ec58ad9005"/>
+ <macro name="Flattenlist" file="Flattenlist.bin" md5="d4b4a78c9e9760a4cbeda97f54592acb"/>
+ <macro name="Fontsize" file="Fontsize.bin" md5="3620d8e64b61ab17778776195acec82a"/>
+ <macro name="Fouriercoeff" file="Fouriercoeff.bin" md5="83dfcd5c4a1d0f7ccb711d89b0a8003c"/>
+ <macro name="FouriercoeffL" file="FouriercoeffL.bin" md5="29b8c2c57c53796531cb8316630e87ee"/>
+ <macro name="Fouriersum" file="Fouriersum.bin" md5="3cf167292e587148fe7d3a9d2e34eab0"/>
+ <macro name="Fracform" file="Fracform.bin" md5="6dfc4e723a0a2d55ef9e2e9028e5a0b1"/>
+ <macro name="Framedata" file="Framedata.bin" md5="712be5ee4fdd60fe132b951022f7f5e1"/>
+ <macro name="Fullformfunc" file="Fullformfunc.bin" md5="ebc5473763f9884c091aa9863062702b"/>
+ <macro name="Gaiseki" file="Gaiseki.bin" md5="36a6b9567ed081b46107ed3374562196"/>
+ <macro name="Getcounter" file="Getcounter.bin" md5="45f7aec5f0936f4abe6e65296634a847"/>
+ <macro name="Gettrace" file="Gettrace.bin" md5="bb84c353b0e3af593e903273160d9bd9"/>
+ <macro name="Hatchdata" file="Hatchdata.bin" md5="e05c42f885a108c41a75bf1b607b509b"/>
+ <macro name="Hexahedrondata" file="Hexahedrondata.bin" md5="86efcd2c370b4e76adfeea3b75639d31"/>
+ <macro name="HiddenWireData" file="HiddenWireData.bin" md5="a080bcb1dcc97c1205fff04562d694fd"/>
+ <macro name="Htickmark" file="Htickmark.bin" md5="bdafbfedbc2441fe5cd989910852c79e"/>
+ <macro name="ImplicitData" file="ImplicitData.bin" md5="24a9ea9eb043677084250a30d6c6db00"/>
+ <macro name="Implicitplot" file="Implicitplot.bin" md5="7d1075882d5446646c2304e00e70ad6d"/>
+ <macro name="InWindow" file="InWindow.bin" md5="cf3f449e5189b8d40a3d3a4c219a92ea"/>
+ <macro name="Initangle" file="Initangle.bin" md5="c6902d32536d434af7f28c28b45290ab"/>
+ <macro name="Integrate" file="Integrate.bin" md5="6f255339baf16af41b20d9b2d86adb50"/>
+ <macro name="Intersectcrvs" file="Intersectcrvs.bin" md5="68b875e1418a8a231095155ca2482cbc"/>
+ <macro name="IntersectcrvsPp" file="IntersectcrvsPp.bin" md5="5c05582df9fa8f9a05fa42ef1cf799ae"/>
+ <macro name="Intersectcrvsf" file="Intersectcrvsf.bin" md5="89b1b7d500237aebbd41f1094560609b"/>
+ <macro name="Intersectlines" file="Intersectlines.bin" md5="5a4837581398e0f6299d83805b325fd6"/>
+ <macro name="IntersectselfPp" file="IntersectselfPp.bin" md5="d10bc970ff6540655fedece748a0f1d7"/>
+ <macro name="Invdashline" file="Invdashline.bin" md5="d72a1842fe88eb719dd85ce45caafc96"/>
+ <macro name="Invert" file="Invert.bin" md5="7018f80081bca2cb147e81ea435ba287"/>
+ <macro name="Invparapt" file="Invparapt.bin" md5="b58cfbc854e7b14d076b1f1676c3f54b"/>
+ <macro name="Invperspt" file="Invperspt.bin" md5="c8500cf469fd4a4c8399e5e093f49126"/>
+ <macro name="Joincrvs" file="Joincrvs.bin" md5="41981f483c2cfacab95b25356ee5a7d1"/>
+ <macro name="Joingraphics" file="Joingraphics.bin" md5="e525e21001a3408e5bb3587d24ca4916"/>
+ <macro name="Ketinit" file="Ketinit.bin" md5="bd9d49f1927a921db621d419da386e1d"/>
+ <macro name="Kouten" file="Kouten.bin" md5="b0fbbe27e4961ef9a8d0652b1d9edfaf"/>
+ <macro name="KoutenList" file="KoutenList.bin" md5="ca822b6e42d545a627a7129d02b91cb2"/>
+ <macro name="Koutenseg" file="Koutenseg.bin" md5="2424557c72db63186699b8ab8fb4ef64"/>
+ <macro name="Kukannozoku" file="Kukannozoku.bin" md5="40cef25e80745039eb34c5066dfe2d14"/>
+ <macro name="Kukeiwake" file="Kukeiwake.bin" md5="2e42c3fdef9ac1f7aaca550ff11307c3"/>
+ <macro name="Kyorihensuu" file="Kyorihensuu.bin" md5="3f313b70f962d573d0db9a548ed4ebc4"/>
+ <macro name="Kyoukai" file="Kyoukai.bin" md5="630a8517e9e9ae8ecb2a5372c87193fd"/>
+ <macro name="Letter" file="Letter.bin" md5="a587d241a5c2f1c69b0904632af16a26"/>
+ <macro name="Letterrot" file="Letterrot.bin" md5="1ce92bf2c945ee12d0746ae7f2fe6b5d"/>
+ <macro name="Lineplot" file="Lineplot.bin" md5="d2b8a90dd16c873622ffc291b7c9ed64"/>
+ <macro name="Listplot" file="Listplot.bin" md5="1575fd89b2e6c3c96b90b6889006370f"/>
+ <macro name="MakeBowdata" file="MakeBowdata.bin" md5="ab5ea1d8c5cc092ea13021c3fb255613"/>
+ <macro name="MakeCurves" file="MakeCurves.bin" md5="a1d7968df6f80673bab58af5762640a4"/>
+ <macro name="MakecutbycrvL" file="MakecutbycrvL.bin" md5="8ddeb50d60ce53392a6d6ec76fad7bee"/>
+ <macro name="Makehasen" file="Makehasen.bin" md5="b6e177ea7ad735910a2c6b45dc1bb580"/>
+ <macro name="Makeliststr" file="Makeliststr.bin" md5="bf4e86417206108a51e2b0210b990557"/>
+ <macro name="Makesfcutoffdata" file="Makesfcutoffdata.bin" md5="7b61d0f517b18505225edbac83729b6f"/>
+ <macro name="Makeshasen" file="Makeshasen.bin" md5="878e44c4780cdac427a7d55f551373a2"/>
+ <macro name="Makeskeletondata" file="Makeskeletondata.bin" md5="6c918f7f13736227cc0ac351c6fd7a54"/>
+ <macro name="Makeskeletonpersdata" file="Makeskeletonpersdata.bin" md5="72dd47219b4e6689c54c69eed62f06dc"/>
+ <macro name="Makevaltable" file="Makevaltable.bin" md5="c279f90b73efc06d235c983bd08ce47b"/>
+ <macro name="MakeveLfaceL" file="MakeveLfaceL.bin" md5="1afea9c44a3dbe277e601b02d38be3cc"/>
+ <macro name="Makexybdy" file="Makexybdy.bin" md5="6eca03d530a515cdfe0b98d33fee2b67"/>
+ <macro name="Mawarikomi" file="Mawarikomi.bin" md5="61b967de5ef56e29016932c9f77c561a"/>
+ <macro name="MeetWindow" file="MeetWindow.bin" md5="ae7f015eebc2250c20ad876d1d3ec9e4"/>
+ <macro name="Meetpoints" file="Meetpoints.bin" md5="ffeccee8bfbebd44a45abdfe91c3cca1"/>
+ <macro name="Member" file="Member.bin" md5="6c29ab2fdbbc61889c95b45d820d317d"/>
+ <macro name="Menkakusi" file="Menkakusi.bin" md5="53d3fee4c99b28d7aac10f8114fe2524"/>
+ <macro name="Menkakusi2" file="Menkakusi2.bin" md5="eedabe7e3dd93f6af4fe225a6aa4b2ed"/>
+ <macro name="Mix" file="Mix.bin" md5="f9f822bf34f04f9dc5401f492b8dc76b"/>
+ <macro name="MixL" file="MixL.bin" md5="e80cd4b09be7c0a9b88cfaea7bcf802a"/>
+ <macro name="MixS" file="MixS.bin" md5="d60abae70f94ff28b184306e971d1102"/>
+ <macro name="Mixadd" file="Mixadd.bin" md5="51da5be70ce2e556dd75d812715faad4"/>
+ <macro name="Mixdisp" file="Mixdisp.bin" md5="b2b5187462a54615cca28f272232b61f"/>
+ <macro name="Mixjoin" file="Mixjoin.bin" md5="f9df8699f8cb95ca2b657403a94a9d8f"/>
+ <macro name="Mixlength" file="Mixlength.bin" md5="ee9cee8e9c916ea42ed8e1e8ad70e321"/>
+ <macro name="Mixmake" file="Mixmake.bin" md5="b84d74ef8def9658fa2d8f34cc8424f5"/>
+ <macro name="Mixop" file="Mixop.bin" md5="8c5f9a72e8838aa4b9c9f45013000670"/>
+ <macro name="Mixsub" file="Mixsub.bin" md5="f2a14687cf8a0c6daaede12d0b730dd5"/>
+ <macro name="Mixtype" file="Mixtype.bin" md5="0a0931265b0666b53416685a35897f82"/>
+ <macro name="Naigai" file="Naigai.bin" md5="6e97fdbd9f1feabfb09b2247518c4399"/>
+ <macro name="Naiseki" file="Naiseki.bin" md5="8f33757e011f07a03a144414296c3190"/>
+ <macro name="Nearestpt" file="Nearestpt.bin" md5="7b392fdb66cdafb6ccf4e3f083967ba2"/>
+ <macro name="Newlength" file="Newlength.bin" md5="ea7efdb86cdb3345f0b3e43427cb2c48"/>
+ <macro name="Nohiddenpara" file="Nohiddenpara.bin" md5="b46886584a10d67fbdb7816c5c739fb8"/>
+ <macro name="Nohiddenpara2" file="Nohiddenpara2.bin" md5="be95c5d2791c7b05e25c1def88f2bdc6"/>
+ <macro name="Nohiddenpers" file="Nohiddenpers.bin" md5="1e867c6479823f428d90911b099cdbcf"/>
+ <macro name="Nohiddenpers2" file="Nohiddenpers2.bin" md5="f96bfe5e316b4b771ab3d26b27b73615"/>
+ <macro name="Numptcrv" file="Numptcrv.bin" md5="5bf4461504105054dd993bff3b35f370"/>
+ <macro name="Objcurve" file="Objcurve.bin" md5="3f7684be52bce1b1458d378be0849229"/>
+ <macro name="Objjoin" file="Objjoin.bin" md5="74a96fb8ed5d88ff1008156f27738f5a"/>
+ <macro name="Objname" file="Objname.bin" md5="74d2732da725b97cb3c0eb443a6f5ed9"/>
+ <macro name="Objpolygon" file="Objpolygon.bin" md5="56d22a5ae20dcfc9a0cd4b8a440385e6"/>
+ <macro name="Objpolyhedron" file="Objpolyhedron.bin" md5="ff92bd278e558ead5df19970d6d01546"/>
+ <macro name="Objrecs" file="Objrecs.bin" md5="e8ca7cd5993fb7ce8e5b509dce42e46b"/>
+ <macro name="Objsurf" file="Objsurf.bin" md5="f3017f49c709447a7024d16edb01580d"/>
+ <macro name="Objsymb" file="Objsymb.bin" md5="ef3fbae27f502a20ff4df575638d4e52"/>
+ <macro name="Objthicksurf" file="Objthicksurf.bin" md5="07f9c70cedf719587412c848812c7704"/>
+ <macro name="Op" file="Op.bin" md5="cb2e0935be6b77b1c0bc4f2c7071a1cb"/>
+ <macro name="Openfile" file="Openfile.bin" md5="bfccc88e9e9abcd83236dd4dd5da2cb4"/>
+ <macro name="Openobj" file="Openobj.bin" md5="c60578368dceeb4ab79f74e6de774ffd"/>
+ <macro name="Openpar" file="Openpar.bin" md5="39554dc8c76d98179e21e6878af691c5"/>
+ <macro name="Openphr" file="Openphr.bin" md5="a086531ca6cf4e112742d5aef90943cf"/>
+ <macro name="Openpicture" file="Openpicture.bin" md5="e7b76f0bb2132c86350d0f1293a31069"/>
+ <macro name="Ovalbox" file="Ovalbox.bin" md5="d22bdac24b70c1d6b1625dcf3a8ce007"/>
+ <macro name="Ovaldata" file="Ovaldata.bin" md5="0facfbd0760cec3d8fa762f7dea098f2"/>
+ <macro name="Paramark" file="Paramark.bin" md5="644e9aa93430fd35f3639875d6759584"/>
+ <macro name="ParamonCurve" file="ParamonCurve.bin" md5="910c0b77eb025faf243e2d2cb7ebd043"/>
+ <macro name="Paramoncrv" file="Paramoncrv.bin" md5="48c6dc127d039740c0a11def8a18fe8a"/>
+ <macro name="Paramplot" file="Paramplot.bin" md5="09b2750fc9950bbc258a881a2c12a97b"/>
+ <macro name="Parapt" file="Parapt.bin" md5="e130c84b03164202cf8e25ea27558859"/>
+ <macro name="Partcrv" file="Partcrv.bin" md5="819797d94d68bf7df7c29b01717525a6"/>
+ <macro name="Partcrv3" file="Partcrv3.bin" md5="c87d37f9f00aff9ce05a3a3879c6ea5a"/>
+ <macro name="Partframe" file="Partframe.bin" md5="8df2a78e61362e18cf3b71779ffffbd4"/>
+ <macro name="PartitionPt" file="PartitionPt.bin" md5="a4afd33aca16e70df0984f7cf05371ce"/>
+ <macro name="Partitionseg" file="Partitionseg.bin" md5="c0ce6ccd18ea9794f55a9e6926328ea1"/>
+ <macro name="Perspt" file="Perspt.bin" md5="5415e8696ae175005b59936b2e164bac"/>
+ <macro name="PhFaceL" file="PhFaceL.bin" md5="b8748ee001a1357e2820b304083ce09e"/>
+ <macro name="PhHiddenData" file="PhHiddenData.bin" md5="6a0ab5d6aeb7d4c66b31ab86ac5afdae"/>
+ <macro name="PhVertexL" file="PhVertexL.bin" md5="9d7e1d653e88fc9b98f783ec57ebe8ca"/>
+ <macro name="Phcutdata" file="Phcutdata.bin" md5="bed83bc88efc277012bab8ba47b9d810"/>
+ <macro name="Phcutoffdata" file="Phcutoffdata.bin" md5="2ca3881c7cdfe2fee62aa3e64af34157"/>
+ <macro name="Phidegree" file="Phidegree.bin" md5="5d1ac461a2fee60c6c2dda978a262428"/>
+ <macro name="Phparadata" file="Phparadata.bin" md5="cbc40d5c2c508a72e51adac3ffecdd4c"/>
+ <macro name="Phpersdata" file="Phpersdata.bin" md5="51601f80ae1578cf4aa0d6f244ba5027"/>
+ <macro name="Phrawparadata" file="Phrawparadata.bin" md5="371b244204a19e6a12e70773cb118f21"/>
+ <macro name="Phrawpersdata" file="Phrawpersdata.bin" md5="f2371fdb24326f6c7a209f9b70d07ce1"/>
+ <macro name="Phsparadata" file="Phsparadata.bin" md5="762751108de07b4e5a1e6264e16d487c"/>
+ <macro name="Phspersdata" file="Phspersdata.bin" md5="acf5af0f78c134ae893fd057e408dd3e"/>
+ <macro name="Phsrawparadata" file="Phsrawparadata.bin" md5="2aebf882e1d6cd11e44cb2815fd186fd"/>
+ <macro name="Phsrawpersdata" file="Phsrawpersdata.bin" md5="b90465806262e6016d26450f6654194d"/>
+ <macro name="Plotdata" file="Plotdata.bin" md5="676695f9f9b9a91cfea1ee426d7185ce"/>
+ <macro name="Pointdata" file="Pointdata.bin" md5="eb131a9f0a6687722dc491cedb732ade"/>
+ <macro name="PointonCurve" file="PointonCurve.bin" md5="168183930f3fce712571ad5b737f7004"/>
+ <macro name="Pointoncrv" file="Pointoncrv.bin" md5="a0a2cd4d7f51bec560eb26fef054d835"/>
+ <macro name="Powersum" file="Powersum.bin" md5="29a72b2125d2f95cfd9bdd742a4e106b"/>
+ <macro name="Prime" file="Prime.bin" md5="35045b439a59fabbe9a4127d12706fb6"/>
+ <macro name="Printobjstr" file="Printobjstr.bin" md5="2b4d610c4a39dcab5cfb5c93f7dff5ea"/>
+ <macro name="ProjCurve" file="ProjCurve.bin" md5="7d548512c30e79cd098aa7b2f96a4ebf"/>
+ <macro name="ProjcoordCurve" file="ProjcoordCurve.bin" md5="ddf1fa0e05421feaa482038b26925ab5"/>
+ <macro name="Projpara" file="Projpara.bin" md5="98da96de9ea67f2db4111877d7ff785e"/>
+ <macro name="Projpers" file="Projpers.bin" md5="7820810b8c0861b22e8dcdc23f1c0864"/>
+ <macro name="Ptcrv" file="Ptcrv.bin" md5="d353fd7e1af4fac1533c7e0ddebf996e"/>
+ <macro name="Ptend" file="Ptend.bin" md5="5b30f64ef0920f13b540db8eb5f93e5a"/>
+ <macro name="PthiddenQ" file="PthiddenQ.bin" md5="c1e31cee1140bf7942b7e1c83514d790"/>
+ <macro name="Ptne" file="Ptne.bin" md5="833e0e4b3ced75d740eaaab4c1fc88bd"/>
+ <macro name="Ptnw" file="Ptnw.bin" md5="8415bd27db46c35cec56e67d2ca9734f"/>
+ <macro name="Ptse" file="Ptse.bin" md5="f5180a6df918355d3a588786e7be8cf4"/>
+ <macro name="Ptstart" file="Ptstart.bin" md5="f0e4baaf1f46e6b379571e9414a83812"/>
+ <macro name="Ptsw" file="Ptsw.bin" md5="c30adf43aa5f3c9a0961402ab3b8ddc9"/>
+ <macro name="Putcell" file="Putcell.bin" md5="da158190a8848db850d3d34a16d36dc8"/>
+ <macro name="Putcirmark" file="Putcirmark.bin" md5="9f1b9f829d10c8d29f3c2ea6d316383b"/>
+ <macro name="PutcoL" file="PutcoL.bin" md5="d8f49a7b534060301063804207669228"/>
+ <macro name="PutcoLexpr" file="PutcoLexpr.bin" md5="d35417b4b818f80c7b96f99118795d48"/>
+ <macro name="PutcoLstr" file="PutcoLstr.bin" md5="32c9d7d6751b5c85adca1c384ec98c10"/>
+ <macro name="Putdashmark" file="Putdashmark.bin" md5="03b76cd3bbc9e52df76c2be30c42570b"/>
+ <macro name="Putrecmark" file="Putrecmark.bin" md5="a5c20a30353d0c79c0dcea3cf39c54e3"/>
+ <macro name="Putrow" file="Putrow.bin" md5="0a9adbebc80444ab1495a302265920e6"/>
+ <macro name="Putrowexpr" file="Putrowexpr.bin" md5="4a32c3441cd9ad7c23656ab97e65d352"/>
+ <macro name="Putrowstr" file="Putrowstr.bin" md5="92ee0311a5e4bb7995a9d44bfbc1460d"/>
+ <macro name="Puttrace" file="Puttrace.bin" md5="08b64f48285a49c1cb6138fe1491c8fe"/>
+ <macro name="Ratiocmyk" file="Ratiocmyk.bin" md5="54098c052d304f2b329cc4fd2bd23bc1"/>
+ <macro name="ReadOutData" file="ReadOutData.bin" md5="0198ca044595d75779d267e425e5380a"/>
+ <macro name="ReadfromCindy" file="ReadfromCindy.bin" md5="1fed87229911382502d7e7cfd359f4c1"/>
+ <macro name="Readtextdata" file="Readtextdata.bin" md5="4acbbc591808404b6814db3175c2ffed"/>
+ <macro name="Reflectdata" file="Reflectdata.bin" md5="51d5020a418590fe64cbf4883da76562"/>
+ <macro name="Rmmember" file="Rmmember.bin" md5="31ade9c8802d46438ace1e53bb769b86"/>
+ <macro name="Rotate3data" file="Rotate3data.bin" md5="5aaab016d1fed7a61f270e3b4ad84316"/>
+ <macro name="Rotate3pt" file="Rotate3pt.bin" md5="7feea2dd66e7a02b96c384011d818a0e"/>
+ <macro name="Rotatedata" file="Rotatedata.bin" md5="f7c7aa1bd5b2d2d99b66bb3bd711de19"/>
+ <macro name="Roundstr" file="Roundstr.bin" md5="dd261bcd78d1110bfd9fd775efcf5a4e"/>
+ <macro name="Scaledata" file="Scaledata.bin" md5="fac166fc1de490a64dd7f7a8f46164a9"/>
+ <macro name="Sectionview" file="Sectionview.bin" md5="db370ec400c90c7865f7c626572e39f7"/>
+ <macro name="Setangle" file="Setangle.bin" md5="57190782b3c5c0ace7f2adecb18e4aed"/>
+ <macro name="Setarrow" file="Setarrow.bin" md5="e7baa60ca4f593de15c7cb8b56be800a"/>
+ <macro name="Setax" file="Setax.bin" md5="ef281e109b01e3b65d1842e0d2a03873"/>
+ <macro name="Setcolor" file="Setcolor.bin" md5="b0adb12d43ae4da2815331389b85f944"/>
+ <macro name="Setcounter" file="Setcounter.bin" md5="e38d212ffa114288c73ccdb613c9cb9d"/>
+ <macro name="Setmark" file="Setmark.bin" md5="d4cb68ac16edcd28a86ba2a0563b9597"/>
+ <macro name="Setmarklen" file="Setmarklen.bin" md5="ec3870c326393f15a29d77cf476618cf"/>
+ <macro name="Setobjdecimals" file="Setobjdecimals.bin" md5="823bc64fbdda67813d1e3c3bf592a0e3"/>
+ <macro name="Setobjscale" file="Setobjscale.bin" md5="a2cdb49a13b0dc89328a7194f34eeeab"/>
+ <macro name="Setorigin" file="Setorigin.bin" md5="fe236fa677bab1dd24e53cfc28022826"/>
+ <macro name="Setpen" file="Setpen.bin" md5="9d87bbd283d225fd62422263375a94b5"/>
+ <macro name="Setpers" file="Setpers.bin" md5="830fe8254a07765e703077b456353070"/>
+ <macro name="Setpt" file="Setpt.bin" md5="cbfbda69ce4184fc0ad59bfbe01943a6"/>
+ <macro name="Setscaling" file="Setscaling.bin" md5="263333f56ad33907534fdb460e54da9b"/>
+ <macro name="SetstereoL" file="SetstereoL.bin" md5="2711aa6a1541336aec852ac1437155ac"/>
+ <macro name="SetstereoR" file="SetstereoR.bin" md5="bd74d871d1bc79ed8c01a13a569eb7bb"/>
+ <macro name="Setunitlen" file="Setunitlen.bin" md5="1e245724b987e84c413bf37a30bb5dd3"/>
+ <macro name="Setversion" file="Setversion.bin" md5="d6dbab1ce7bb18b2c773bae647e4ac5d"/>
+ <macro name="Setwindow" file="Setwindow.bin" md5="e781a89da1ce77fbc46f713553523c51"/>
+ <macro name="Sf3data" file="Sf3data.bin" md5="095b6c0f2bf25f7b9ed5f5d8d3a8915d"/>
+ <macro name="Sfbdparadata" file="Sfbdparadata.bin" md5="f9c0c54671a68458f4bcb1936fa402ec"/>
+ <macro name="Sfbdpersdata" file="Sfbdpersdata.bin" md5="aa08f921566b64c11e888ee34429eca5"/>
+ <macro name="Sfbdrawparadata" file="Sfbdrawparadata.bin" md5="fae8431fd5fe5ead8ff2f85d45e144c1"/>
+ <macro name="Sfbdrawpersdata" file="Sfbdrawpersdata.bin" md5="1cafbda088573fad0d85f2bb2a165178"/>
+ <macro name="Sfcutdata" file="Sfcutdata.bin" md5="4dff7dff641c5e51588e8f27c2068396"/>
+ <macro name="Sfcutoffparadata" file="Sfcutoffparadata.bin" md5="d5089ce276ce8329a5e25772eda825ad"/>
+ <macro name="Sfcutoffpersdata" file="Sfcutoffpersdata.bin" md5="8f232600533c8c553d279fb7999a9aef"/>
+ <macro name="Sfcutoffrawparadata" file="Sfcutoffrawparadata.bin" md5="b530fdec88ecac05548dcbc183fac672"/>
+ <macro name="Sfcutoffrawpersdata" file="Sfcutoffrawpersdata.bin" md5="c7dc8aec4aedc1a9e3b88a423b4e4091"/>
+ <macro name="Sfparadata" file="Sfparadata.bin" md5="636205ff5e7fa28c188beb8a788ec30f"/>
+ <macro name="Sfpersdata" file="Sfpersdata.bin" md5="2c198aaa68180b41eb0dd81812668a52"/>
+ <macro name="Shade" file="Shade.bin" md5="db51cd9b42032b1fd9cebb3f0565d055"/>
+ <macro name="Skeleton2data" file="Skeleton2data.bin" md5="046308bb7c2d18186a5db1abf5724ace"/>
+ <macro name="Skeletonpara3data" file="Skeletonpara3data.bin" md5="8b00d1898174de20f097983ad72f96d9"/>
+ <macro name="Skeletonparadata" file="Skeletonparadata.bin" md5="6368394d29bd3e34c9dadbc54dd49755"/>
+ <macro name="Skeletonpers3data" file="Skeletonpers3data.bin" md5="62a627cd77291d934150cbe175d9ec06"/>
+ <macro name="Skeletonpersdata" file="Skeletonpersdata.bin" md5="63663e9c381325970209a62a00877361"/>
+ <macro name="Spacecurve" file="Spacecurve.bin" md5="e06c5eb2ae8623cee4fe135d6ed8d2a5"/>
+ <macro name="Spaceline" file="Spaceline.bin" md5="bcdf09d58fde1a3071968c7600cbcadc"/>
+ <macro name="Splinedata" file="Splinedata.bin" md5="c8cac41f49166b548f6bb20eb765f513"/>
+ <macro name="Strop" file="Strop.bin" md5="b3e20bfeaaf10aa827ec9be26865547b"/>
+ <macro name="Subs" file="Subs.bin" md5="daa0438a2d34af2d043c50b3d2a00a01"/>
+ <macro name="Sumfun" file="Sumfun.bin" md5="0a785d3c30c763778e1f92d3b8fb785e"/>
+ <macro name="Symb3data" file="Symb3data.bin" md5="ba72252ea118f44b847927d0de9b9892"/>
+ <macro name="Symbdata" file="Symbdata.bin" md5="53c196c0ca5f9026e4cd441e0d6586ed"/>
+ <macro name="Tabledata" file="Tabledata.bin" md5="b79bdcd7c171ab768e763d26d9b4f6a1"/>
+ <macro name="Texcom" file="Texcom.bin" md5="dc0139e9541acb939d1c3839a0fc11f6"/>
+ <macro name="Texctr" file="Texctr.bin" md5="5f23e09b23191bec07cb10b070d5c66b"/>
+ <macro name="Texelse" file="Texelse.bin" md5="f8b67c8497e8dd9ac1dbcc5a90fc930c"/>
+ <macro name="Texend" file="Texend.bin" md5="351105e6dd3c5c171f0944030fba69c4"/>
+ <macro name="Texendfor" file="Texendfor.bin" md5="7d1005515ed98a776c7c9a00a2a970d8"/>
+ <macro name="Texendif" file="Texendif.bin" md5="6323c9cf98ac4c1d6e01bef2dadc6614"/>
+ <macro name="Texfor" file="Texfor.bin" md5="0ade87f95e63dadbdbfe35efbca00e86"/>
+ <macro name="Texforinit" file="Texforinit.bin" md5="6e96556a978535b632dba9e33b9551b3"/>
+ <macro name="Texif" file="Texif.bin" md5="db3af265fced379c5bc2a35dcd661aef"/>
+ <macro name="Texletter" file="Texletter.bin" md5="7a7ebe58bae97a3a17d646d1c7a9e1da"/>
+ <macro name="Texnewcmd" file="Texnewcmd.bin" md5="b4f314f440314e77d8c93385172eb5e1"/>
+ <macro name="Texnewctr" file="Texnewctr.bin" md5="86756d50c10bcf8359c1a924e6e1004d"/>
+ <macro name="Texrenewcmd" file="Texrenewcmd.bin" md5="90e63f10dd735a7263da2cb8661692c7"/>
+ <macro name="Texsetctr" file="Texsetctr.bin" md5="8d9cd50bcb9304e25e27ac7818c9b047"/>
+ <macro name="Texthectr" file="Texthectr.bin" md5="b74d5106ff432a8c84dfd3e8baf9402f"/>
+ <macro name="Texvalctr" file="Texvalctr.bin" md5="6a789e4941c736527f57d75d1ba26123"/>
+ <macro name="Texvctr" file="Texvctr.bin" md5="05e1f689e4002ca0b53c1b7674d814e0"/>
+ <macro name="Thetadegree" file="Thetadegree.bin" md5="0ff4846aaeb83b20683ec4d4b60ed98f"/>
+ <macro name="ThisVersion" file="ThisVersion.bin" md5="5d9fc94c56eb694d62a16b1f7a6a9d04"/>
+ <macro name="Tolist" file="Tolist.bin" md5="65c83ab06c83674c70f46e0f402d3580"/>
+ <macro name="Translate3data" file="Translate3data.bin" md5="38c5bcaf8d3659c75cd7cf335d26196b"/>
+ <macro name="Translatedata" file="Translatedata.bin" md5="17b85cc7ed17d1f260cf758ead8dc0ab"/>
+ <macro name="Trunc" file="Trunc.bin" md5="7a6a605bcba822854e4c917fe41db659"/>
+ <macro name="Unscaling" file="Unscaling.bin" md5="08ee317471c47d086c9404e47955b17b"/>
+ <macro name="Vecnagasa" file="Vecnagasa.bin" md5="aaeae5f1a186bba7b2c357a2c77ce2a1"/>
+ <macro name="Vecnagasa2" file="Vecnagasa2.bin" md5="41c4c41904d6b87a9844d20fd860a6cb"/>
+ <macro name="Viewfrom" file="Viewfrom.bin" md5="fe4685d5db0abf45a31b2b643b20c23f"/>
+ <macro name="Vtickmark" file="Vtickmark.bin" md5="375b4bc294d26ab3b7d30f8fbd4bfad7"/>
+ <macro name="Windisp" file="Windisp.bin" md5="1e48a32bf2ea244b701fb5bb63ea18f4"/>
+ <macro name="WireHiddenData" file="WireHiddenData.bin" md5="7fb2be220f2c6dfefea57e5a9acf9145"/>
+ <macro name="WirePt" file="WirePt.bin" md5="0936e8dd2f3ca890efaf0b274aa64d96"/>
+ <macro name="Wireparadata" file="Wireparadata.bin" md5="60a5c112230c8cb7ebd803304b1b17b7"/>
+ <macro name="Wirepersdata" file="Wirepersdata.bin" md5="b2696b1685c9456c6857fbdd1424256a"/>
+ <macro name="Wirerawparadata" file="Wirerawparadata.bin" md5="e770b9a2bce4c8804fc62a5191be1545"/>
+ <macro name="Wirerawpersdata" file="Wirerawpersdata.bin" md5="f254f9cad0b02b01e7388fbbb433bcc4"/>
+ <macro name="WriteOutData" file="WriteOutData.bin" md5="55682f0605917544dd41d2c25f24786c"/>
+ <macro name="Writeobjpoint" file="Writeobjpoint.bin" md5="24c598f95cc38899d5cf5d3048a9e263"/>
+ <macro name="Writetextdata" file="Writetextdata.bin" md5="b1da333518052fedb658e0827833a54f"/>
+ <macro name="WritetoCindy" file="WritetoCindy.bin" md5="c8a05614d69d73bd4aa3c562cf479872"/>
+ <macro name="Xmax" file="Xmax.bin" md5="87038803908d553ab8de412b410887dd"/>
+ <macro name="Xmin" file="Xmin.bin" md5="eae15ed2438d2805a6ad488cf22b75e8"/>
+ <macro name="Xyzax3data" file="Xyzax3data.bin" md5="633e040e19b435e55bb66dbc4f231117"/>
+ <macro name="Xyzaxparaname" file="Xyzaxparaname.bin" md5="8fa701d6b92b478a97ed8b4e263c9a18"/>
+ <macro name="Xyzaxpersname" file="Xyzaxpersname.bin" md5="1e9573e9452267842a7907f30661e902"/>
+ <macro name="Ymax" file="Ymax.bin" md5="4ab8eccdba393b4c41a45d38f97faf88"/>
+ <macro name="Ymin" file="Ymin.bin" md5="5dedfdfc18e01299ea069b578be8b697"/>
+ <macro name="Zparapt" file="Zparapt.bin" md5="e16dd6e761c2e8ec7eb31da49d7a3b96"/>
+ <macro name="Zperspt" file="Zperspt.bin" md5="b04d5677e9ee74a1cbff3ad73c9d2a20"/>
+</scilablib>
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/names b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/names
new file mode 100755
index 00000000..cef9f19b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic2escifiles6/names
@@ -0,0 +1,335 @@
+Addcounter
+Anglemark
+Arrowdata
+Arrowhead
+Arrowheaddata
+Arrowline
+Assign
+Assignadd
+Assignrep
+Assignset
+Beginpicture
+BorderHiddenData
+Borderparadata
+Borderpersdata
+BorderPt
+Borderrawdata
+Bowdata
+Bowmiddle
+Bowname
+Bownamerot
+Calcfun
+CalcHeight
+CalcWidth
+CameracoordCurve
+CameraCurve
+Cancoordpara
+Cancoordpers
+Circledata
+Clipindomain
+Closefile
+Closepar
+Closephr
+Closepicture
+Closeobj
+Connectseg
+Crossprod
+Crv3onsfHiddenData
+Crv3onsfparadata
+Crv3onsfpersdata
+CrvonsfHiddenData
+Crvonsfparadata
+Crvonsfpersdata
+CrvsfHiddenData
+Crvsfparadata
+Crvsfpersdata
+CuspData
+CuspPt
+Cuspsplitpara
+Cuspsplitpers
+CuspSplitPt
+Cutsf2d
+Dashline
+Dataindex
+Deqplot
+Derivative
+Diagcelldata
+Dividegraphics
+Dividetable
+Doscaling
+Dotfilldata
+Dotprod
+Dottedline
+Dropnumlistcrv
+Droppoint
+Drwline
+Drwpt
+Drwxy
+Embed
+Enclosing
+EnclosingS
+Endpicture
+Evlptablepara
+Evlptablepers
+Execmd
+Expr
+Exprrot
+Faceremovaldata
+Facesdata
+Findcell
+Flattenlist
+Fontsize
+Fouriercoeff
+FouriercoeffL
+Fouriersum
+Fracform
+Framedata
+Fullformfunc
+Gaiseki
+Getcounter
+Gettrace
+Hatchdata
+Hexahedrondata
+HiddenWireData
+Htickmark
+Implicitplot
+ImplicitData
+Initangle
+Integrate
+Intersectcrvs
+Intersectcrvsf
+IntersectcrvsPp
+Intersectlines
+IntersectselfPp
+Invdashline
+Invert
+Invparapt
+Invperspt
+InWindow
+Joincrvs
+Joingraphics
+Ketinit
+Kouten
+KoutenList
+Koutenseg
+Kukannozoku
+Kukeiwake
+Kyorihensuu
+Kyoukai
+Letter
+Letterrot
+Lineplot
+Listplot
+MakeBowdata
+MakecutbycrvL
+MakeCurves
+Makehasen
+Makeliststr
+Makesfcutoffdata
+Makeshasen
+Makeskeletondata
+Makeskeletonpersdata
+Makevaltable
+MakeveLfaceL
+Makexybdy
+Mawarikomi
+Meetpoints
+MeetWindow
+Member
+Menkakusi
+Menkakusi2
+Mix
+Mixadd
+Mixdisp
+Mixjoin
+MixL
+Mixlength
+Mixmake
+Mixop
+MixS
+Mixsub
+Mixtype
+Naigai
+Naiseki
+Nearestpt
+Newlength
+Nohiddenpara
+Nohiddenpara2
+Nohiddenpers
+Nohiddenpers2
+Numptcrv
+Objjoin
+Objname
+Objcurve
+Objpolyhedron
+Objpolygon
+Objrecs
+Objsurf
+Objsymb
+Objthicksurf
+Openobj
+Op
+Openfile
+Openpar
+Openphr
+Openpicture
+Ovalbox
+Ovaldata
+Paramark
+Paramoncrv
+ParamonCurve
+Paramplot
+Parapt
+Partcrv
+Partcrv3
+Partframe
+PartitionPt
+Partitionseg
+Perspt
+Phcutdata
+Phcutoffdata
+Phidegree
+PhFaceL
+PhHiddenData
+Phparadata
+Phpersdata
+Phsparadata
+Phspersdata
+Phrawparadata
+Phrawpersdata
+Phsrawparadata
+Phsrawpersdata
+PhVertexL
+Plotdata
+Pointdata
+Pointoncrv
+PointonCurve
+Powersum
+Prime
+Printobjstr
+ProjcoordCurve
+ProjCurve
+Projpara
+Projpers
+Ptcrv
+Ptend
+PthiddenQ
+Ptne
+Ptnw
+Ptse
+Ptstart
+Ptsw
+Putcell
+Putcirmark
+PutcoL
+PutcoLexpr
+PutcoLstr
+Putdashmark
+Putrecmark
+Putrow
+Putrowexpr
+Putrowstr
+Puttrace
+Ratiocmyk
+ReadfromCindy
+Readtextdata
+Reflectdata
+Rmmember
+Rotate3data
+Rotate3pt
+Rotatedata
+Roundstr
+Scaledata
+Sectionview
+Setangle
+Setarrow
+Setax
+Setcolor
+Setcounter
+Setmark
+Setmarklen
+Setobjdecimals
+Setobjscale
+Setorigin
+Setpen
+Setpers
+Setpt
+Setscaling
+SetstereoL
+SetstereoR
+Setunitlen
+Setversion
+Setwindow
+Sf3data
+Sfbdparadata
+Sfbdpersdata
+Sfbdrawparadata
+Sfbdrawpersdata
+Sfcutdata
+Sfcutoffparadata
+Sfcutoffpersdata
+Sfcutoffrawparadata
+Sfcutoffrawpersdata
+Sfparadata
+Sfpersdata
+Shade
+Skeleton2data
+Skeletonparadata
+Skeletonpara3data
+Skeletonpersdata
+Skeletonpers3data
+Spacecurve
+Spaceline
+Splinedata
+Strop
+Subs
+Sumfun
+Symbdata
+Symb3data
+Tabledata
+Texcom
+Texctr
+Texelse
+Texend
+Texendfor
+Texendif
+Texfor
+Texforinit
+Texif
+Texletter
+Texnewcmd
+Texnewctr
+Texrenewcmd
+Texsetctr
+Texthectr
+Texvalctr
+Texvctr
+Thetadegree
+ThisVersion
+Tolist
+Translate3data
+Translatedata
+Trunc
+Unscaling
+Vecnagasa
+Vecnagasa2
+Viewfrom
+Vtickmark
+Windisp
+WireHiddenData
+Wireparadata
+Wirepersdata
+WirePt
+Wirerawparadata
+Wirerawpersdata
+Writetextdata
+Writeobjpoint
+Xmax
+Xmin
+Xyzaxparaname
+Xyzaxpersname
+Xyzax3data
+Ymax
+Ymin
+Zparapt
+Zperspt
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpic_ltd.Rdata b/texmf-dist/scripts/ketpic/ketlib/ketpic_ltd.Rdata
new file mode 100644
index 00000000..0f1f1fd8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpic_ltd.Rdata
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Addcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Addcounter.bin
new file mode 100644
index 00000000..c1e3ef24
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Addcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Anglemark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Anglemark.bin
new file mode 100644
index 00000000..8b094651
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Anglemark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowdata.bin
new file mode 100644
index 00000000..2af2be64
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowhead.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowhead.bin
new file mode 100644
index 00000000..f4101b32
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowhead.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowheaddata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowheaddata.bin
new file mode 100644
index 00000000..3640469b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowheaddata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowline.bin
new file mode 100644
index 00000000..0d68e6d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Arrowline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assign.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assign.bin
new file mode 100644
index 00000000..3f243306
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assign.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignadd.bin
new file mode 100644
index 00000000..99a0cecd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignrep.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignrep.bin
new file mode 100644
index 00000000..47ac2ac9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignrep.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignset.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignset.bin
new file mode 100644
index 00000000..afb1b3bc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Assignset.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Beginpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Beginpicture.bin
new file mode 100644
index 00000000..81625f07
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Beginpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezier.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezier.bin
new file mode 100644
index 00000000..1e8b41fb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezier.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezierpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezierpt.bin
new file mode 100644
index 00000000..f146b511
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bezierpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderHiddenData.bin
new file mode 100644
index 00000000..bb466f84
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderPt.bin
new file mode 100644
index 00000000..80964b1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/BorderPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderparadata.bin
new file mode 100644
index 00000000..94cfb714
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderpersdata.bin
new file mode 100644
index 00000000..bee787d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderrawdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderrawdata.bin
new file mode 100644
index 00000000..f53ad324
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Borderrawdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowdata.bin
new file mode 100644
index 00000000..05a4fb2e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowmiddle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowmiddle.bin
new file mode 100644
index 00000000..bc02de52
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowmiddle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowname.bin
new file mode 100644
index 00000000..77aa840f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bowname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bownamerot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bownamerot.bin
new file mode 100644
index 00000000..49978903
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Bownamerot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcHeight.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcHeight.bin
new file mode 100644
index 00000000..5e3f28b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcHeight.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcWidth.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcWidth.bin
new file mode 100644
index 00000000..426023be
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CalcWidth.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Calcfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Calcfun.bin
new file mode 100644
index 00000000..7745bccc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Calcfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameraCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameraCurve.bin
new file mode 100644
index 00000000..d037c656
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameraCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameracoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameracoordCurve.bin
new file mode 100644
index 00000000..13e374db
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CameracoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpara.bin
new file mode 100644
index 00000000..c16f84ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpers.bin
new file mode 100644
index 00000000..55b15ad7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cancoordpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Circledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Circledata.bin
new file mode 100644
index 00000000..9a27e094
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Circledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Clipindomain.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Clipindomain.bin
new file mode 100644
index 00000000..73ea5db3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Clipindomain.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closefile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closefile.bin
new file mode 100644
index 00000000..e7a00c3e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closefile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closeobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closeobj.bin
new file mode 100644
index 00000000..f62af795
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closeobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepar.bin
new file mode 100644
index 00000000..f73458f1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closephr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closephr.bin
new file mode 100644
index 00000000..5960bb73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closephr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepicture.bin
new file mode 100644
index 00000000..1c8fd062
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Closepicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Connectseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Connectseg.bin
new file mode 100644
index 00000000..70566c55
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Connectseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crossprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crossprod.bin
new file mode 100644
index 00000000..ade04624
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crossprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfHiddenData.bin
new file mode 100644
index 00000000..5c4f8404
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfparadata.bin
new file mode 100644
index 00000000..7d645929
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfpersdata.bin
new file mode 100644
index 00000000..7f994b75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crv3onsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvonsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvonsfHiddenData.bin
new file mode 100644
index 00000000..d92d7a5a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvonsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfparadata.bin
new file mode 100644
index 00000000..71b24de1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfpersdata.bin
new file mode 100644
index 00000000..835d570f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvonsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvsfHiddenData.bin
new file mode 100644
index 00000000..0ecbcb1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CrvsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfparadata.bin
new file mode 100644
index 00000000..dba77269
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfpersdata.bin
new file mode 100644
index 00000000..b3a3f8e4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Crvsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspData.bin
new file mode 100644
index 00000000..b2124b51
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspPt.bin
new file mode 100644
index 00000000..08f82d89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspSplitPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspSplitPt.bin
new file mode 100644
index 00000000..2fbf6adb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/CuspSplitPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpara.bin
new file mode 100644
index 00000000..b09e4aeb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpers.bin
new file mode 100644
index 00000000..609d057a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cuspsplitpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cutsf2d.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cutsf2d.bin
new file mode 100644
index 00000000..e6f70b1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Cutsf2d.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dashline.bin
new file mode 100644
index 00000000..8f7d28a1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dataindex.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dataindex.bin
new file mode 100644
index 00000000..e3bd11d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dataindex.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Definecolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Definecolor.bin
new file mode 100644
index 00000000..f0ff3ef8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Definecolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Deqplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Deqplot.bin
new file mode 100644
index 00000000..a3ba57b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Deqplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Derivative.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Derivative.bin
new file mode 100644
index 00000000..8ab45716
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Derivative.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Diagcelldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Diagcelldata.bin
new file mode 100644
index 00000000..70d3663e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Diagcelldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividegraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividegraphics.bin
new file mode 100644
index 00000000..03498fd7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividegraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividetable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividetable.bin
new file mode 100644
index 00000000..abf752c8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dividetable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Doscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Doscaling.bin
new file mode 100644
index 00000000..1a024a4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Doscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotfilldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotfilldata.bin
new file mode 100644
index 00000000..589adeaf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotfilldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotprod.bin
new file mode 100644
index 00000000..7a097bea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dotprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dottedline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dottedline.bin
new file mode 100644
index 00000000..d3962817
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dottedline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dropnumlistcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dropnumlistcrv.bin
new file mode 100644
index 00000000..9ac44969
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Dropnumlistcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Droppoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Droppoint.bin
new file mode 100644
index 00000000..f4bff84e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Droppoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwline.bin
new file mode 100644
index 00000000..d4520393
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwpt.bin
new file mode 100644
index 00000000..05c9df9c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwxy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwxy.bin
new file mode 100644
index 00000000..54ce1e7c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Drwxy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Embed.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Embed.bin
new file mode 100644
index 00000000..5a081c10
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Embed.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Enclosing.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Enclosing.bin
new file mode 100644
index 00000000..17e55798
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Enclosing.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/EnclosingS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/EnclosingS.bin
new file mode 100644
index 00000000..1a6860c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/EnclosingS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Endpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Endpicture.bin
new file mode 100644
index 00000000..7fa6e7b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Endpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepara.bin
new file mode 100644
index 00000000..e4bb3e12
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepers.bin
new file mode 100644
index 00000000..a300752a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Evlptablepers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Execmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Execmd.bin
new file mode 100644
index 00000000..3ed90ff9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Execmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Expr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Expr.bin
new file mode 100644
index 00000000..3cae8493
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Expr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Exprrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Exprrot.bin
new file mode 100644
index 00000000..e249a055
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Exprrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Faceremovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Faceremovaldata.bin
new file mode 100644
index 00000000..f7f2e09b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Faceremovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Facesdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Facesdata.bin
new file mode 100644
index 00000000..003930bd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Facesdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Findcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Findcell.bin
new file mode 100644
index 00000000..1cc63d81
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Findcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Flattenlist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Flattenlist.bin
new file mode 100644
index 00000000..47cd3aff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Flattenlist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fontsize.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fontsize.bin
new file mode 100644
index 00000000..d0ac6d1f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fontsize.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriercoeff.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriercoeff.bin
new file mode 100644
index 00000000..0c1ff22d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriercoeff.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/FouriercoeffL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/FouriercoeffL.bin
new file mode 100644
index 00000000..0ada7614
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/FouriercoeffL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriersum.bin
new file mode 100644
index 00000000..80d7fa1d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fouriersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fracform.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fracform.bin
new file mode 100644
index 00000000..f17997ae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fracform.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Framedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Framedata.bin
new file mode 100644
index 00000000..4dfc5fba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Framedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fullformfunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fullformfunc.bin
new file mode 100644
index 00000000..a445388d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Fullformfunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gaiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gaiseki.bin
new file mode 100644
index 00000000..00cefe7b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gaiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Getcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Getcounter.bin
new file mode 100644
index 00000000..5efa1ba3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Getcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gettrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gettrace.bin
new file mode 100644
index 00000000..31de11e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Gettrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hatchdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hatchdata.bin
new file mode 100644
index 00000000..8bc86748
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hatchdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hexahedrondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hexahedrondata.bin
new file mode 100644
index 00000000..ebb9f45e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Hexahedrondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/HiddenWireData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/HiddenWireData.bin
new file mode 100644
index 00000000..0335b185
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/HiddenWireData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Htickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Htickmark.bin
new file mode 100644
index 00000000..88ce57e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Htickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ImplicitData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ImplicitData.bin
new file mode 100644
index 00000000..f52ad0ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ImplicitData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Implicitplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Implicitplot.bin
new file mode 100644
index 00000000..5662575f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Implicitplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/InWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/InWindow.bin
new file mode 100644
index 00000000..38306a20
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/InWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Initangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Initangle.bin
new file mode 100644
index 00000000..3c6ed6c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Initangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Integrate.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Integrate.bin
new file mode 100644
index 00000000..deb2de0d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Integrate.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvs.bin
new file mode 100644
index 00000000..3a87071b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectcrvsPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectcrvsPp.bin
new file mode 100644
index 00000000..de85e2a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectcrvsPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvsf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvsf.bin
new file mode 100644
index 00000000..3a918b84
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectcrvsf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectlines.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectlines.bin
new file mode 100644
index 00000000..5b1846e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Intersectlines.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectselfPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectselfPp.bin
new file mode 100644
index 00000000..2b895f4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/IntersectselfPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invdashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invdashline.bin
new file mode 100644
index 00000000..76baa221
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invdashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invert.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invert.bin
new file mode 100644
index 00000000..def0bb31
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invert.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invparapt.bin
new file mode 100644
index 00000000..07c0c078
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invperspt.bin
new file mode 100644
index 00000000..5dbdc7cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Invperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joincrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joincrvs.bin
new file mode 100644
index 00000000..dafe1e24
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joincrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joingraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joingraphics.bin
new file mode 100644
index 00000000..97caac64
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Joingraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ketinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ketinit.bin
new file mode 100644
index 00000000..70e1971c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ketinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kouten.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kouten.bin
new file mode 100644
index 00000000..21dc66a1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kouten.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/KoutenList.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/KoutenList.bin
new file mode 100644
index 00000000..9ccea2a3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/KoutenList.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Koutenseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Koutenseg.bin
new file mode 100644
index 00000000..d191d41a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Koutenseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukannozoku.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukannozoku.bin
new file mode 100644
index 00000000..313c934d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukannozoku.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukeiwake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukeiwake.bin
new file mode 100644
index 00000000..f705d5b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kukeiwake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyorihensuu.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyorihensuu.bin
new file mode 100644
index 00000000..3940a613
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyorihensuu.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyoukai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyoukai.bin
new file mode 100644
index 00000000..c9ce9f14
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Kyoukai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letter.bin
new file mode 100644
index 00000000..bcaebbbd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letterrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letterrot.bin
new file mode 100644
index 00000000..4bc6206a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Letterrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Lineplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Lineplot.bin
new file mode 100644
index 00000000..51fbfbe1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Lineplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Listplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Listplot.bin
new file mode 100644
index 00000000..0fa577df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Listplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeBowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeBowdata.bin
new file mode 100644
index 00000000..fb13efa4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeBowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeCurves.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeCurves.bin
new file mode 100644
index 00000000..98ddd1a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeCurves.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakecutbycrvL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakecutbycrvL.bin
new file mode 100644
index 00000000..6356eaed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakecutbycrvL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makehasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makehasen.bin
new file mode 100644
index 00000000..7f8de9cd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makehasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeliststr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeliststr.bin
new file mode 100644
index 00000000..83ba3861
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeliststr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makesfcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makesfcutoffdata.bin
new file mode 100644
index 00000000..92534466
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makesfcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeshasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeshasen.bin
new file mode 100644
index 00000000..2d013048
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeshasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletondata.bin
new file mode 100644
index 00000000..0bd11580
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletonpersdata.bin
new file mode 100644
index 00000000..49a24e6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makeskeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makevaltable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makevaltable.bin
new file mode 100644
index 00000000..67316bd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makevaltable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeveLfaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeveLfaceL.bin
new file mode 100644
index 00000000..1658b408
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MakeveLfaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makexybdy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makexybdy.bin
new file mode 100644
index 00000000..95c31670
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Makexybdy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mawarikomi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mawarikomi.bin
new file mode 100644
index 00000000..fcf74e3c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mawarikomi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MeetWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MeetWindow.bin
new file mode 100644
index 00000000..f5ced4c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MeetWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Meetpoints.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Meetpoints.bin
new file mode 100644
index 00000000..6cd9f985
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Meetpoints.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Member.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Member.bin
new file mode 100644
index 00000000..c41eb72e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Member.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi.bin
new file mode 100644
index 00000000..ab493424
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi2.bin
new file mode 100644
index 00000000..659d412f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Menkakusi2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mix.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mix.bin
new file mode 100644
index 00000000..f26a75b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mix.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixL.bin
new file mode 100644
index 00000000..1a2a931f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixS.bin
new file mode 100644
index 00000000..92c22101
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/MixS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixadd.bin
new file mode 100644
index 00000000..43809cb9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixdisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixdisp.bin
new file mode 100644
index 00000000..4562fd87
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixdisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixjoin.bin
new file mode 100644
index 00000000..29800896
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixlength.bin
new file mode 100644
index 00000000..dc725565
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixmake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixmake.bin
new file mode 100644
index 00000000..e1ab36e0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixmake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixop.bin
new file mode 100644
index 00000000..74a5a6aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixsub.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixsub.bin
new file mode 100644
index 00000000..332d7968
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixsub.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixtype.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixtype.bin
new file mode 100644
index 00000000..b188ade7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Mixtype.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naigai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naigai.bin
new file mode 100644
index 00000000..4c0a5b2d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naigai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naiseki.bin
new file mode 100644
index 00000000..d7d9f480
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Naiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nearestpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nearestpt.bin
new file mode 100644
index 00000000..bf51af8a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nearestpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Newlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Newlength.bin
new file mode 100644
index 00000000..80a32401
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Newlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara.bin
new file mode 100644
index 00000000..b7f0d8cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara2.bin
new file mode 100644
index 00000000..7bfcf7ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpara2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers.bin
new file mode 100644
index 00000000..2bdabcc4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers2.bin
new file mode 100644
index 00000000..b692d55a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Nohiddenpers2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Numptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Numptcrv.bin
new file mode 100644
index 00000000..57a2ce6f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Numptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objcurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objcurve.bin
new file mode 100644
index 00000000..845d40ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objcurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objjoin.bin
new file mode 100644
index 00000000..92afe9ad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objname.bin
new file mode 100644
index 00000000..a14bcc2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolygon.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolygon.bin
new file mode 100644
index 00000000..da05430c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolygon.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolyhedron.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolyhedron.bin
new file mode 100644
index 00000000..18416f1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objpolyhedron.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objrecs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objrecs.bin
new file mode 100644
index 00000000..bef4fb7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objrecs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsurf.bin
new file mode 100644
index 00000000..6bbe6d7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsymb.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsymb.bin
new file mode 100644
index 00000000..8c215679
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objsymb.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objthicksurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objthicksurf.bin
new file mode 100644
index 00000000..e66c254e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Objthicksurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Op.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Op.bin
new file mode 100644
index 00000000..fb3d3b45
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Op.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openfile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openfile.bin
new file mode 100644
index 00000000..e1625a76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openfile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openobj.bin
new file mode 100644
index 00000000..2024ea60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpar.bin
new file mode 100644
index 00000000..c812540a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openphr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openphr.bin
new file mode 100644
index 00000000..41d69ca5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openphr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpicture.bin
new file mode 100644
index 00000000..d285a0cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Openpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovalbox.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovalbox.bin
new file mode 100644
index 00000000..32bf34e8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovalbox.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovaldata.bin
new file mode 100644
index 00000000..d28e36ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramark.bin
new file mode 100644
index 00000000..a7078f9c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ParamonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ParamonCurve.bin
new file mode 100644
index 00000000..e4c31df3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ParamonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramoncrv.bin
new file mode 100644
index 00000000..f532d7ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramplot.bin
new file mode 100644
index 00000000..ffebca84
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Paramplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Parapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Parapt.bin
new file mode 100644
index 00000000..e7958ab9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Parapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv.bin
new file mode 100644
index 00000000..d54eb52f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv3.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv3.bin
new file mode 100644
index 00000000..07321262
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partcrv3.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partframe.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partframe.bin
new file mode 100644
index 00000000..a13d3f5f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partframe.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PartitionPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PartitionPt.bin
new file mode 100644
index 00000000..58cef916
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PartitionPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partitionseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partitionseg.bin
new file mode 100644
index 00000000..6f557a3b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Partitionseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Perspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Perspt.bin
new file mode 100644
index 00000000..f95c613a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Perspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhFaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhFaceL.bin
new file mode 100644
index 00000000..2d1eec35
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhFaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhHiddenData.bin
new file mode 100644
index 00000000..ac5490d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhVertexL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhVertexL.bin
new file mode 100644
index 00000000..814b8791
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PhVertexL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutdata.bin
new file mode 100644
index 00000000..d700ec69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutoffdata.bin
new file mode 100644
index 00000000..ccea3366
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phidegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phidegree.bin
new file mode 100644
index 00000000..c3f667e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phidegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phparadata.bin
new file mode 100644
index 00000000..2e3c664b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phpersdata.bin
new file mode 100644
index 00000000..1a2bbf95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawparadata.bin
new file mode 100644
index 00000000..903c9029
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawpersdata.bin
new file mode 100644
index 00000000..5e7b5ffb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsparadata.bin
new file mode 100644
index 00000000..da8b1196
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phspersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phspersdata.bin
new file mode 100644
index 00000000..6ac27dcb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phspersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawparadata.bin
new file mode 100644
index 00000000..a3da7dd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawpersdata.bin
new file mode 100644
index 00000000..8843cde4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Phsrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Plotdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Plotdata.bin
new file mode 100644
index 00000000..c0547852
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Plotdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointdata.bin
new file mode 100644
index 00000000..8c11c2c2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PointonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PointonCurve.bin
new file mode 100644
index 00000000..e6055b42
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PointonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointoncrv.bin
new file mode 100644
index 00000000..cf693dd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Pointoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Powersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Powersum.bin
new file mode 100644
index 00000000..1dce322f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Powersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Prime.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Prime.bin
new file mode 100644
index 00000000..e7094eb4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Prime.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Printobjstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Printobjstr.bin
new file mode 100644
index 00000000..3a62be73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Printobjstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjCurve.bin
new file mode 100644
index 00000000..2ca583e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjcoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjcoordCurve.bin
new file mode 100644
index 00000000..5de23ccd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ProjcoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpara.bin
new file mode 100644
index 00000000..bda03ab0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpers.bin
new file mode 100644
index 00000000..fbf6d134
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Projpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptcrv.bin
new file mode 100644
index 00000000..13f43f67
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptend.bin
new file mode 100644
index 00000000..10ac2f07
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PthiddenQ.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PthiddenQ.bin
new file mode 100644
index 00000000..cf36ca4e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PthiddenQ.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptne.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptne.bin
new file mode 100644
index 00000000..4f608b89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptne.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptnw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptnw.bin
new file mode 100644
index 00000000..727cf4d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptnw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptse.bin
new file mode 100644
index 00000000..f09e463c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptstart.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptstart.bin
new file mode 100644
index 00000000..c1303557
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptstart.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptsw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptsw.bin
new file mode 100644
index 00000000..1003cd61
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ptsw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcell.bin
new file mode 100644
index 00000000..be3a6f13
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcirmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcirmark.bin
new file mode 100644
index 00000000..d154a0a0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putcirmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoL.bin
new file mode 100644
index 00000000..77a99874
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLexpr.bin
new file mode 100644
index 00000000..01e1b69c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLstr.bin
new file mode 100644
index 00000000..a4872a7f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/PutcoLstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putdashmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putdashmark.bin
new file mode 100644
index 00000000..1e679bfc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putdashmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrecmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrecmark.bin
new file mode 100644
index 00000000..5df6db75
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrecmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrow.bin
new file mode 100644
index 00000000..042a7261
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowexpr.bin
new file mode 100644
index 00000000..df1a3849
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowstr.bin
new file mode 100644
index 00000000..da18fb37
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Putrowstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Puttrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Puttrace.bin
new file mode 100644
index 00000000..10769324
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Puttrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ratiocmyk.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ratiocmyk.bin
new file mode 100644
index 00000000..56a87566
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ratiocmyk.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadOutData.bin
new file mode 100644
index 00000000..0acb33cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadfromCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadfromCindy.bin
new file mode 100644
index 00000000..8d4a1b0e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ReadfromCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Readtextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Readtextdata.bin
new file mode 100644
index 00000000..f51f7599
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Readtextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Reflectdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Reflectdata.bin
new file mode 100644
index 00000000..02bd0619
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Reflectdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rmmember.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rmmember.bin
new file mode 100644
index 00000000..1036fe46
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rmmember.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3data.bin
new file mode 100644
index 00000000..6cfc7b1c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3pt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3pt.bin
new file mode 100644
index 00000000..7bc8974d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotate3pt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotatedata.bin
new file mode 100644
index 00000000..dcde7e7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Rotatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Roundstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Roundstr.bin
new file mode 100644
index 00000000..c9678719
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Roundstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Scaledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Scaledata.bin
new file mode 100644
index 00000000..aca40719
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Scaledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sectionview.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sectionview.bin
new file mode 100644
index 00000000..bfdb8495
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sectionview.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setangle.bin
new file mode 100644
index 00000000..997e8178
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setarrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setarrow.bin
new file mode 100644
index 00000000..1d2063bf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setarrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setax.bin
new file mode 100644
index 00000000..46e49d69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcolor.bin
new file mode 100644
index 00000000..ae62bffa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcounter.bin
new file mode 100644
index 00000000..3a609bc9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmark.bin
new file mode 100644
index 00000000..be2cbbb6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmarklen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmarklen.bin
new file mode 100644
index 00000000..79ae6660
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setmarklen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjdecimals.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjdecimals.bin
new file mode 100644
index 00000000..3fe068d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjdecimals.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjscale.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjscale.bin
new file mode 100644
index 00000000..adc5ef97
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setobjscale.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setorigin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setorigin.bin
new file mode 100644
index 00000000..ed695e7f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setorigin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpen.bin
new file mode 100644
index 00000000..918c968e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpers.bin
new file mode 100644
index 00000000..e417c91f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpt.bin
new file mode 100644
index 00000000..f9fb21b4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setscaling.bin
new file mode 100644
index 00000000..faf60668
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoL.bin
new file mode 100644
index 00000000..c0d4e9e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoR.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoR.bin
new file mode 100644
index 00000000..44dc173e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/SetstereoR.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setunitlen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setunitlen.bin
new file mode 100644
index 00000000..6ef24cf2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setunitlen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setversion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setversion.bin
new file mode 100644
index 00000000..9658e1ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setversion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setwindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setwindow.bin
new file mode 100644
index 00000000..fc39c4e1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Setwindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sf3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sf3data.bin
new file mode 100644
index 00000000..bed3747e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sf3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdparadata.bin
new file mode 100644
index 00000000..bd7b7168
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdpersdata.bin
new file mode 100644
index 00000000..86ba2a9e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawparadata.bin
new file mode 100644
index 00000000..c4009953
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawpersdata.bin
new file mode 100644
index 00000000..278af331
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfbdrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutdata.bin
new file mode 100644
index 00000000..5aa6fd04
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffparadata.bin
new file mode 100644
index 00000000..b22043d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffpersdata.bin
new file mode 100644
index 00000000..64f416d6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawparadata.bin
new file mode 100644
index 00000000..cd356699
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawpersdata.bin
new file mode 100644
index 00000000..295812ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfcutoffrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfparadata.bin
new file mode 100644
index 00000000..c98b95ed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfpersdata.bin
new file mode 100644
index 00000000..5a780fab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Shade.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Shade.bin
new file mode 100644
index 00000000..037fffea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Shade.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeleton2data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeleton2data.bin
new file mode 100644
index 00000000..b3d2d402
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeleton2data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpara3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpara3data.bin
new file mode 100644
index 00000000..5895e254
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpara3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonparadata.bin
new file mode 100644
index 00000000..c34f7e16
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpers3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpers3data.bin
new file mode 100644
index 00000000..4ba4947b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpers3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpersdata.bin
new file mode 100644
index 00000000..9c83ea64
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Skeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spacecurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spacecurve.bin
new file mode 100644
index 00000000..0e8bacaf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spacecurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spaceline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spaceline.bin
new file mode 100644
index 00000000..b097e980
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Spaceline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Splinedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Splinedata.bin
new file mode 100644
index 00000000..7a3c634c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Splinedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Strop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Strop.bin
new file mode 100644
index 00000000..ca70656e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Strop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Subs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Subs.bin
new file mode 100644
index 00000000..66f8e6c0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Subs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sumfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sumfun.bin
new file mode 100644
index 00000000..a2bafc2c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Sumfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symb3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symb3data.bin
new file mode 100644
index 00000000..131297e0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symb3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symbdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symbdata.bin
new file mode 100644
index 00000000..a1a27f00
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Symbdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tabledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tabledata.bin
new file mode 100644
index 00000000..ab4bb5ed
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tabledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texcom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texcom.bin
new file mode 100644
index 00000000..74871299
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texcom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texctr.bin
new file mode 100644
index 00000000..e0e2dab3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texelse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texelse.bin
new file mode 100644
index 00000000..4e974456
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texelse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texend.bin
new file mode 100644
index 00000000..d22ea31d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendfor.bin
new file mode 100644
index 00000000..0d86b601
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendif.bin
new file mode 100644
index 00000000..46fd7b7e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texendif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texfor.bin
new file mode 100644
index 00000000..f5e92c99
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texforinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texforinit.bin
new file mode 100644
index 00000000..a8140128
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texforinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texif.bin
new file mode 100644
index 00000000..be4c9157
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texletter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texletter.bin
new file mode 100644
index 00000000..99ef9902
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texletter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewcmd.bin
new file mode 100644
index 00000000..0904029d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewctr.bin
new file mode 100644
index 00000000..7d332cfd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texnewctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texrenewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texrenewcmd.bin
new file mode 100644
index 00000000..1abdf882
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texrenewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texsetctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texsetctr.bin
new file mode 100644
index 00000000..ccfce689
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texsetctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texthectr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texthectr.bin
new file mode 100644
index 00000000..f2e50561
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texthectr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvalctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvalctr.bin
new file mode 100644
index 00000000..a224f885
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvalctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvctr.bin
new file mode 100644
index 00000000..2fee3584
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Texvctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Thetadegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Thetadegree.bin
new file mode 100644
index 00000000..5f360f2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Thetadegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ThisVersion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ThisVersion.bin
new file mode 100644
index 00000000..5aa530ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/ThisVersion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tolist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tolist.bin
new file mode 100644
index 00000000..5e76126d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Tolist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translate3data.bin
new file mode 100644
index 00000000..3fd4aeda
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translatedata.bin
new file mode 100644
index 00000000..3262007d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Translatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Trunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Trunc.bin
new file mode 100644
index 00000000..a05f649a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Trunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Unscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Unscaling.bin
new file mode 100644
index 00000000..1bd27535
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Unscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa.bin
new file mode 100644
index 00000000..1668581e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa2.bin
new file mode 100644
index 00000000..3acff07e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vecnagasa2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Viewfrom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Viewfrom.bin
new file mode 100644
index 00000000..06515c27
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Viewfrom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vtickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vtickmark.bin
new file mode 100644
index 00000000..e0c9fdf2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Vtickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Windisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Windisp.bin
new file mode 100644
index 00000000..487a5881
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Windisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WireHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WireHiddenData.bin
new file mode 100644
index 00000000..15d7c7ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WireHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WirePt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WirePt.bin
new file mode 100644
index 00000000..8356c7d3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WirePt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wireparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wireparadata.bin
new file mode 100644
index 00000000..8a956544
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wireparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirepersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirepersdata.bin
new file mode 100644
index 00000000..06813c26
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirepersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawparadata.bin
new file mode 100644
index 00000000..53ef48f2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawpersdata.bin
new file mode 100644
index 00000000..a4463d6f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Wirerawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WriteOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WriteOutData.bin
new file mode 100644
index 00000000..35bbb30a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WriteOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writeobjpoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writeobjpoint.bin
new file mode 100644
index 00000000..1c115eb9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writeobjpoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writetextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writetextdata.bin
new file mode 100644
index 00000000..90e83be0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Writetextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WritetoCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WritetoCindy.bin
new file mode 100644
index 00000000..3cc76a71
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/WritetoCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmax.bin
new file mode 100644
index 00000000..51ccdf48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmin.bin
new file mode 100644
index 00000000..bba8a4ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xmin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzax3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzax3data.bin
new file mode 100644
index 00000000..3a5e517b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzax3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxparaname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxparaname.bin
new file mode 100644
index 00000000..d89801c7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxparaname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxpersname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxpersname.bin
new file mode 100644
index 00000000..f89ae3a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Xyzaxpersname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymax.bin
new file mode 100644
index 00000000..cc5aea83
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymin.bin
new file mode 100644
index 00000000..e454fb5a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Ymin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zparapt.bin
new file mode 100644
index 00000000..1749fad9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zperspt.bin
new file mode 100644
index 00000000..8613eba7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/Zperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/names b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/names
new file mode 100755
index 00000000..02079ff8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicsciL5/names
@@ -0,0 +1,341 @@
+Addcounter
+Anglemark
+Arrowdata
+Arrowhead
+Arrowheaddata
+Arrowline
+Assign
+Assignadd
+Assignrep
+Assignset
+Beginpicture
+Bezierpt
+Bezier
+BorderHiddenData
+Borderparadata
+Borderpersdata
+BorderPt
+Borderrawdata
+Bowdata
+Bowmiddle
+Bowname
+Bownamerot
+Calcfun
+CalcHeight
+CalcWidth
+CameracoordCurve
+CameraCurve
+Cancoordpara
+Cancoordpers
+Circledata
+Clipindomain
+Closefile
+Closepar
+Closephr
+Closepicture
+Closeobj
+Connectseg
+Crossprod
+Crv3onsfHiddenData
+Crv3onsfparadata
+Crv3onsfpersdata
+CrvonsfHiddenData
+Crvonsfparadata
+Crvonsfpersdata
+CrvsfHiddenData
+Crvsfparadata
+Crvsfpersdata
+CuspData
+CuspPt
+Cuspsplitpara
+Cuspsplitpers
+CuspSplitPt
+Cutsf2d
+Dashline
+Dataindex
+Definecolor
+Deqplot
+Derivative
+Diagcelldata
+Dividegraphics
+Dividetable
+Doscaling
+Dotfilldata
+Dotprod
+Dottedline
+Dropnumlistcrv
+Droppoint
+Drwline
+Drwpt
+Drwxy
+Embed
+Enclosing
+EnclosingS
+Endpicture
+Evlptablepara
+Evlptablepers
+Execmd
+Expr
+Exprrot
+Faceremovaldata
+Facesdata
+Findcell
+Flattenlist
+Fontsize
+Fouriercoeff
+FouriercoeffL
+Fouriersum
+Fracform
+Framedata
+Fullformfunc
+Gaiseki
+Getcounter
+Gettrace
+Hatchdata
+Hexahedrondata
+HiddenWireData
+Htickmark
+Implicitplot
+ImplicitData
+Initangle
+Integrate
+Intersectcrvs
+Intersectcrvsf
+IntersectcrvsPp
+Intersectlines
+IntersectselfPp
+Invdashline
+Invert
+Invparapt
+Invperspt
+InWindow
+Joincrvs
+Joingraphics
+Ketinit
+Kouten
+KoutenList
+Koutenseg
+Kukannozoku
+Kukeiwake
+Kyorihensuu
+Kyoukai
+Letter
+Letterrot
+Lineplot
+Listplot
+MakeBowdata
+MakecutbycrvL
+MakeCurves
+Makehasen
+Makeliststr
+Makesfcutoffdata
+Makeshasen
+Makeskeletondata
+Makeskeletonpersdata
+Makevaltable
+MakeveLfaceL
+Makexybdy
+Mawarikomi
+Meetpoints
+MeetWindow
+Member
+Menkakusi
+Menkakusi2
+Mix
+Mixadd
+Mixdisp
+Mixjoin
+MixL
+Mixlength
+Mixmake
+Mixop
+MixS
+Mixsub
+Mixtype
+Naigai
+Naiseki
+Nearestpt
+Newlength
+Nohiddenpara
+Nohiddenpara2
+Nohiddenpers
+Nohiddenpers2
+Numptcrv
+Objjoin
+Objname
+Objcurve
+Objpolyhedron
+Objpolygon
+Objrecs
+Objsurf
+Objsymb
+Objthicksurf
+Openobj
+Op
+Openfile
+Openpar
+Openphr
+Openpicture
+Ovalbox
+Ovaldata
+Paramark
+Paramoncrv
+ParamonCurve
+Paramplot
+Parapt
+Partcrv
+Partcrv3
+Partframe
+PartitionPt
+Partitionseg
+Perspt
+Phcutdata
+Phcutoffdata
+Phidegree
+PhFaceL
+PhHiddenData
+Phparadata
+Phpersdata
+Phsparadata
+Phspersdata
+Phrawparadata
+Phrawpersdata
+Phsrawparadata
+Phsrawpersdata
+PhVertexL
+Plotdata
+Pointdata
+Pointoncrv
+PointonCurve
+Powersum
+Prime
+Printobjstr
+ProjcoordCurve
+ProjCurve
+Projpara
+Projpers
+Ptcrv
+Ptend
+PthiddenQ
+Ptne
+Ptnw
+Ptse
+Ptstart
+Ptsw
+Putcell
+Putcirmark
+PutcoL
+PutcoLexpr
+PutcoLstr
+Putdashmark
+Putrecmark
+Putrow
+Putrowexpr
+Putrowstr
+Puttrace
+Ratiocmyk
+ReadfromCindy
+ReadOutData
+Readtextdata
+Reflectdata
+Rmmember
+Rotate3data
+Rotate3pt
+Rotatedata
+Roundstr
+Scaledata
+Sectionview
+Setangle
+Setarrow
+Setax
+Setcolor
+Setcounter
+Setmark
+Setmarklen
+Setobjdecimals
+Setobjscale
+Setorigin
+Setpen
+Setpers
+Setpt
+Setscaling
+SetstereoL
+SetstereoR
+Setunitlen
+Setversion
+Setwindow
+Sf3data
+Sfbdparadata
+Sfbdpersdata
+Sfbdrawparadata
+Sfbdrawpersdata
+Sfcutdata
+Sfcutoffparadata
+Sfcutoffpersdata
+Sfcutoffrawparadata
+Sfcutoffrawpersdata
+Sfparadata
+Sfpersdata
+Shade
+Skeleton2data
+Skeletonparadata
+Skeletonpara3data
+Skeletonpersdata
+Skeletonpers3data
+Spacecurve
+Spaceline
+Splinedata
+Strop
+Subs
+Sumfun
+Symbdata
+Symb3data
+Tabledata
+Texcom
+Texctr
+Texelse
+Texend
+Texendfor
+Texendif
+Texfor
+Texforinit
+Texif
+Texletter
+Texnewcmd
+Texnewctr
+Texrenewcmd
+Texsetctr
+Texthectr
+Texvalctr
+Texvctr
+Thetadegree
+ThisVersion
+Tolist
+Translate3data
+Translatedata
+Trunc
+Unscaling
+Vecnagasa
+Vecnagasa2
+Viewfrom
+Vtickmark
+Windisp
+WireHiddenData
+Wireparadata
+Wirepersdata
+WirePt
+Wirerawparadata
+Wirerawpersdata
+WriteOutData
+Writetextdata
+WritetoCindy
+Writeobjpoint
+Xmax
+Xmin
+Xyzaxparaname
+Xyzaxpersname
+Xyzax3data
+Ymax
+Ymin
+Zparapt
+Zperspt
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/.Rhistory b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/.Rhistory
new file mode 100644
index 00000000..9a32ff18
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/.Rhistory
@@ -0,0 +1 @@
+source("/Users/takatoosetsuo/Dropbox/sciF/ketpicscifiles/Setversion.sci")
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.bin
new file mode 100644
index 00000000..d21df4c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.sci
new file mode 100755
index 00000000..c940a543
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Addcounter.sci
@@ -0,0 +1,12 @@
+// 09.09.10
+
+function Addcounter(varargin)
+ global GCOUNTER;
+ if Nargs==0
+ N=1;
+ else
+ N=varargin(1);
+ GCOUNTER=GCOUNTER+N;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.bin
new file mode 100644
index 00000000..4a709337
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.sci
new file mode 100755
index 00000000..6deb302c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Anglemark.sci
@@ -0,0 +1,33 @@
+// 08.06.05
+// 16.12.29 ( for too short segment )
+
+function Out=Anglemark(varargin)
+ Nargs=length(varargin);
+ Eps=10^(-3);
+ PA=varargin(1); PB=varargin(2); PC=varargin(3);
+ r = 0.5;
+ if Nargs>=4
+ r = varargin(4)*r;
+ end
+ Out=[]; // 16.12.29
+ if r>min(norm(PA-PB),norm(PC-PB)) then
+ return;
+ end;
+ Cir=Circledata(PB,r);
+ Tmp=IntersectcrvsPp(Cir,Listplot(PA,PB));
+ P1=Op(2,Op(1,Tmp));
+ Tmp=IntersectcrvsPp(Cir,Listplot(PC,PB));
+ P2=Op(2,Mixop(1,Tmp));
+ if abs(P1-P2)<Eps
+ Out=[];
+ return;
+ end
+ if P1<P2-Eps
+ Out=Partcrv(P1,P2,Cir);
+ else
+ Tmp=Numptcrv(Cir);
+ Tmp1=Partcrv(P1,Tmp,Cir);
+ Tmp2=Partcrv(1,P2,Cir);
+ Out=Joincrvs(Tmp1,Tmp2);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.bin
new file mode 100644
index 00000000..4dcd94f2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.sci
new file mode 100755
index 00000000..f6ac6ef2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowdata.sci
@@ -0,0 +1,58 @@
+// 08.05.08
+
+function Out=Arrowdata(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle;
+ Nargs=length(varargin);
+ P=varargin(1);
+ Q=varargin(2);
+ R=Q;
+ Futosa=YaThick;
+ Ookisa=YaSize;
+ Thickness=1;
+ Hiraki=YaAngle;
+ Yapos=YaPosition;
+ Position=1;
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ if length(Tmp)>1
+ R=Tmp
+ else
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki;
+ else
+ Hiraki=Tmp;
+ end
+ end
+ if Flg==2
+ R=P+Tmp*(Q-P);
+ else
+ R=P+Yapos*(Q-P);
+ end
+ if Flg==3
+ Futosa=Tmp
+ end
+ Flg=Flg+1;
+ end
+ end
+ if type(Tmp)==10
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ Futosa=Futosa*Thickness;
+ R=P+Position*(Q-P);
+ else
+ Str=Tmp
+ end
+ end
+ end
+ Tmp1=Listplot([P,Q]);
+ Tmp2=Arrowheaddata(R,Q-P,Ookisa,Hiraki,Futosa,Str);
+ Out=Joingraphics(Tmp1,Tmp2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.bin
new file mode 100644
index 00000000..7c3ca7ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.sci
new file mode 100755
index 00000000..9073ca6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowhead.sci
@@ -0,0 +1,107 @@
+//
+// 08.06.01
+// 09.12.25
+// 12.01.07 kirikomi(Cut)
+// 12.04.16 debugged
+// 13.05.17 debugged
+// 13.11.13 debugged
+// 15.06.11 debugged
+// 15.06.14 debugged
+// 15.06.15 improved
+
+function Arrowhead(varargin)
+ global Wfile FID MilliIn YaSize
+ global YaAngle YaPosition YaThick YaStyle;
+ Nargs=length(varargin);
+ P=varargin(1);
+ Houkou=varargin(2);
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0.5*YaThick;
+ Cut=0;
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==10
+ Equal=mtlb_findstr(Tmp,'='); // 12.01.07 from
+ if length(Equal)>0
+ Tmp2=strsplit(Tmp,Equal-1);
+ if Tmp2(1)=="Cut" | Tmp2(1)=="cut"
+ Tmp="Cut"+Tmp2(2);
+ execstr(Tmp);
+ end;
+ else
+ Str=Tmp;
+ end; // 12.01.07 upto
+ end;
+ if type(Tmp)==1 & length(Tmp)==1
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki
+ else
+ Hiraki=Tmp
+ end
+ end
+ if Flg==2
+ Futosa=Tmp
+ end
+ Flg=Flg+1;
+ end
+ end;
+ Ookisa=1000/2.54/MilliIn*Ookisa;
+ Theta=Hiraki*%pi/180;
+ if size(Houkou,1)>1
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ Tmp=Nearestpt(P,Houkou);
+ A=Op(1,Tmp);
+ I=floor(Op(2,Tmp));
+ G=Circledata(P,Ookisa*cos(Theta),'N=10');
+ Flg=0; // 13.11.13
+ for J=I:-1:1
+ B=Ptcrv(J,Houkou);
+ Tmp=IntersectcrvsPp(Listplot([A,B]),G);
+ if Mixlength(Tmp)>0
+ Flg=1;
+ break
+ end
+ A=B
+ end
+ if Flg==0 // 13.11.13
+ disp('Arrowhead may be too large (no intersect)');
+ return
+ end
+ Houkou=P-Op(1,Op(1,Tmp));
+ Houkou=Unscaling(Houkou);
+ P=Unscaling(P);
+ end;
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ Ev=-1/Vecnagasa(Houkou)*Houkou;
+ Nv=[-Ev(2),Ev(1)];
+ if mtlb_findstr(Str,'c')~=[]
+ P=P-0.5*Ookisa*cos(Theta)*Ev
+ end;
+ if mtlb_findstr(Str,'b')~=[]
+ P=P-Ookisa*cos(Theta)*Ev
+ end;
+ A=P+Ookisa*cos(Theta)*Ev+Ookisa*sin(Theta)*Nv;
+ B=P+Ookisa*cos(Theta)*Ev-Ookisa*sin(Theta)*Nv;
+ if mtlb_findstr(Str,'l')~=[]
+ Tmp=Listplot([A,P,B]);
+ Tmp1=Unscaling(Tmp); // 13.05.17
+ Drwline(Tmp1,Futosa);
+ else
+ C=P+(1-Cut)*((A+B)/2-P); // 12.01.05
+ Tmp=Listplot([A,P,B,C,A]); // 12.01.05
+ Tmp1=Unscaling(Tmp);
+ Shade(Tmp1);
+ Tmp=Listplot([A,P,B,C,A,P]); // 15.6.20
+ Tmp1=Unscaling(Tmp);
+ Drwline(Tmp1,0.1); // 15.06.11, 15.06.14
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.bin
new file mode 100644
index 00000000..56e18c45
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.sci
new file mode 100755
index 00000000..68dfe27c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowheaddata.sci
@@ -0,0 +1,89 @@
+// 08.05.31
+// 09.12.25
+// 13.11.13 debugged
+// 14.11.02 debugged
+
+function Out=Arrowheaddata(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle;
+ Eps=10^(-3);
+ Nargs=length(varargin);
+ Out=[];
+ P=varargin(1);
+ Houkou=varargin(2);
+ Ookisa=0.2*YaSize;
+ Hiraki=YaAngle;
+ Futosa=0;
+ Thickness=1;
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==10
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ Futosa=Thickness;
+ else
+ Str=Tmp;
+ end
+ end
+ if type(Tmp)==1 & length(Tmp)==1
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki;
+ else
+ Hiraki=Tmp;
+ end
+ end
+ Flg=Flg+1;
+ end
+ end
+ Theta=Hiraki*%pi/180;
+ if size(Houkou,1)>1
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ Tmp=Nearestpt(P,Houkou);
+ A=Op(1,Tmp);
+ I=floor(Op(2,Tmp));
+ if I==1 // 14.11.02
+ if norm(Ptend(Houkou)-Ptstart(Houkou))<Eps
+ l=Numptcrv(Houkou);
+ end;
+ end;
+ G=Circledata(P,Ookisa*cos(Theta),'N=10');
+ Flg=0; // 13.11.13
+ for J=I:-1:1
+ B=Ptcrv(J,Houkou);
+ Tmp=IntersectcrvsPp(Listplot([A,B]),G);
+ if Mixlength(Tmp)>0
+ Flg=1;
+ break
+ end
+ A=B
+ end
+ if Flg==0 // 13.11.13
+ disp('Arrowhead may be too large (no intersect)');
+ return
+ end
+ Houkou=P-Op(1,Op(1,Tmp));
+ Houkou=Unscaling(Houkou);
+ P=Unscaling(P);
+ end
+ P=Doscaling(P);
+ Houkou=Doscaling(Houkou);
+ E=-1/Vecnagasa(Houkou)*Houkou;
+ N=[-E(2),E(1)];
+ if mtlb_findstr(Str,'c')~=[]
+ P=P-0.5*Ookisa*cos(Theta)*E;
+ end
+ if mtlb_findstr(Str,'b')~=[]
+ P=P-Ookisa*cos(Theta)*E
+ end
+ A=P+Ookisa*cos(Theta)*E+Ookisa*sin(Theta)*N;
+ B=P+Ookisa*cos(Theta)*E-Ookisa*sin(Theta)*N;
+ Out=Listplot([A,P,B]);
+ Out=Unscaling(Out);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.bin
new file mode 100644
index 00000000..45527ddc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.sci
new file mode 100755
index 00000000..881662b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Arrowline.sci
@@ -0,0 +1,57 @@
+//
+// 12.01.07 kirikomi(Cut)
+// 12.08.26 debugged
+// 15.06.11 debugged
+// 15.10.24 debugged
+
+function Arrowline(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle Kirikomi;
+ Nargs=length(varargin)
+ P=varargin(1);
+ Q=varargin(2);
+ Futosa=YaThick;
+ Ookisa=YaSize;
+ Hiraki=YaAngle;
+ Yapos=YaPosition;
+ Cutstr="Cut=0";
+ Str=YaStyle;
+ Flg=0;
+ for I=3:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==10
+ Equal=mtlb_findstr(Tmp,'='); // 12.01.07 from
+ if length(Equal)>0
+ Tmp2=strsplit(Tmp,Equal-1);
+ if (Tmp2(1)=="Cut") | (Tmp2(1)=="cut")
+ Tmp="Cut"+Tmp2(2);
+ Cutstr=Tmp;
+ end
+ else
+ Str=Tmp; // 12.01.07 upto (debugged on 12.08.26)
+ end;
+ end;
+ if (type(Tmp)==1) & (length(Tmp)==1)
+ if Flg==0
+ Ookisa=Ookisa*Tmp;
+ end
+ if Flg==1
+ if Tmp<5
+ Hiraki=Tmp*Hiraki;
+ else
+ Hiraki=Tmp;
+ end
+ end
+ if Flg==2
+ Yapos=Tmp;
+ end
+ if Flg==3
+ Futosa=Tmp;
+ end
+ Flg=Flg+1;
+ end
+ end
+ R=P+Yapos*(Q-P);
+ Tmp=Q-Unscaling(0.2*Ookisa/2*(Q-P)/norm(Q-P)); // 15.10.24
+ Drwline(Listplot([P,Tmp]),Futosa);
+ Arrowhead(R,Q-P,Ookisa,Hiraki,Futosa,Cutstr,Str); // 12.01.07
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.bin
new file mode 100644
index 00000000..b6f33643
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.sci
new file mode 100755
index 00000000..8d9201cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assign.sci
@@ -0,0 +1,202 @@
+// 08.09.26
+// 09.09.21
+// 09.09.26
+// 09.10.01
+// 09.10.03
+// 09.10.05
+// 09.10.08
+// 09.10.09 ( format=20)
+// 09.10.15 ( added Assign('') : reset
+// 09.10.17 ( Matrix added, ? -> number returned)
+// 09.10.21 ( list supported with Makeliststr )
+// 14.10.04 format=12
+// 14.12.11 only replaced when variable name
+// 14.12.28 debugged ( tmp2, ` )
+// 15.02.18 debugged ( for list of string )
+// 15.02.19 debugged
+// 15.04.18 debugged
+
+function Out=Assign(varargin)
+ global ASSIGNLIST;
+ Curfmt=format();
+ format(12); // 14.10.04
+ Nargs=length(varargin);
+ if Nargs==0
+ ASSIGNLIST=list('`',Prime());
+ Out=ASSIGNLIST;
+ format(Curfmt(2));
+ return;
+ end;
+ L=list('`',char(39));
+ NL=length(L);
+ if modulo(Nargs,2)==0
+ for I=1:Nargs
+ L(I+NL)=varargin(I);
+ end;
+ ASSIGNLIST=L;
+ Out=L;
+ format(Curfmt(2));
+ return;
+ end;
+ if Nargs==1
+ Fnstr=varargin(1);
+ if Fnstr==''
+ L=ASSIGNLIST;
+ Out=[];
+ for I=1:2:length(L)
+ Tmp1=L(I);
+ Tmp2=L(I+1);
+ if length(Tmp2)==1
+ Tmp3=string(Tmp2);
+ else
+ Tmp3='[';
+ for J=1:length(Tmp2)
+ Tmp3=Tmp3+string(Tmp2(J));
+ if J<length(Tmp2)
+ Tmp3=Tmp3+',';
+ end;
+ end;
+ Tmp3=Tmp3+']';
+ end;
+ Out=[Out,Tmp1+'='+Tmp3];
+ end;
+ format(Curfmt(2));
+ return;
+ end;
+ if part(Fnstr,1)=='?'
+ Tmp=strsplit(Fnstr,1);
+ Fnstr=Tmp(2);
+ for I=1:2:length(ASSIGNLIST)
+ Tmp=ASSIGNLIST(I);
+ if Tmp==Fnstr
+ Out=Mixjoin(I,ASSIGNLIST(I+1));
+ format(Curfmt(2));
+ return;
+ end;
+ end;
+ Out='Not found';
+ format(Curfmt(2));
+ return;
+ end; //
+ L=ASSIGNLIST;
+ else
+ if type(varargin(2))==1
+ Fnstr=varargin(Nargs);
+ for I=1:Nargs-1
+ L(I)=varargin(I);
+ end;
+ else
+ Fnstr=varargin(1);
+ for I=2:Nargs
+ L(I-1)=varargin(I);
+ end;
+ end;
+ end;
+ Tmp3=Fnstr; // 15.04.18
+ for I=1:2:length(L)
+ Vname=L(I);
+ Val=L(I+1);
+ if Vname=="`" // 14.12.28
+ Tmp3=strsubst(Tmp3,Vname,Val);
+ continue
+ end;
+ if type(Val)==1
+ if size(Val,1)==1 & size(Val,2)>1 // 15.04.18
+ for K=1:length(Val)
+ Tmp=Vname+'('+string(K)+')';
+ if mtlb_findstr(Tmp3,Tmp)~=[]
+ if type(Val(K))==1
+ Tmp1='('+string(Val(K))+')';
+ else
+ Tmp1=Val(K);
+ end;
+ Tmp3=strsubst(Tmp3,Tmp,Tmp1);
+ end;
+ end;
+ else
+ for J=1:size(Val,1)
+ for K=1:size(Val,2)
+ Tmp=Vname+'('+string(J)+','+string(K)+')';
+ if mtlb_findstr(Tmp3,Tmp)~=[]
+ if type(Val(J,K))==1
+ Tmp1='('+string(Val(J,K))+')';
+ else
+ Tmp1=Val(J,K);
+ end;
+ Tmp3=strsubst(Tmp3,Tmp,Tmp1);
+ end;
+ end;
+ end;
+ end;
+ if length(Val)==1
+ Rep=string(Val);
+ else
+ Rep='[';
+ for J=1:size(Val,1)
+ for K=1:size(Val,2)
+ Rep=Rep+string(Val(J,K));
+ if K<size(Val,2)
+ Rep=Rep+',';
+ end;
+ end;
+ if J<size(Val,1)
+ Rep=Rep+';';
+ else
+ Rep=Rep+']';
+ end;
+ end;
+ end;
+ Tmp1='('+Rep+')';
+ end;
+ if type(Val)==10
+ Tmp1=Val;
+ end;
+ if type(Val)==15
+ Tmp1=Makeliststr(Val);
+ end;
+ Notvar=[48:57,65:90,97:122];
+ for K=1:size(Tmp3,2)
+ Tmp2=Tmp3(K);
+ if length(Tmp2)>0 then
+ Flist=mtlb_findstr(Tmp2,Vname);
+ else
+ Flist=[];
+ end
+ if length(Flist)==0 then
+ Tmp3(K)=Tmp2; // 15.04.18
+ continue
+ end
+ Str=part(Tmp2,1:(Flist(1)-1));
+ for I=1:length(Flist)
+ Flg=0;
+ J=Flist(I);
+ if J>1 then
+ Tmp=ascii(part(Tmp2,J-1));
+ if Member(Tmp,Notvar) then
+ Flg=1;
+ end;
+ end
+ if J+length(Vname)-1<length(Tmp2) then // 15.04.18
+ Tmp=ascii(part(Tmp2,J+length(Vname))); // 15.04.18
+ if Member(Tmp,Notvar) then
+ Flg=1;
+ end;
+ end;
+ if Flg==0 then
+ Str=Str+Tmp1;
+ else
+ Str=Str+Vname;
+ end;
+ if I<length(Flist) then
+ Tmp=Flist(I+1)-1;
+ else
+ Tmp=length(Tmp2);
+ end;
+ Str=Str+part(Tmp2,(J+length(Vname)):Tmp);
+ Tmp3(K)=Str; // 15.04.18
+ end;
+ end;
+ end;
+ Out=Tmp3; // 15.02.18 upto
+ format(Curfmt(2));
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.bin
new file mode 100644
index 00000000..8c80117b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.sci
new file mode 100755
index 00000000..d8883e6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignadd.sci
@@ -0,0 +1,14 @@
+// 09.10.03
+
+function Out=Assignadd(varargin)
+ global ASSIGNLIST;
+ Nargs=length(varargin);
+ L=ASSIGNLIST;
+ Is=length(L);
+ for I=1:Nargs
+ L(I+Is)=varargin(I);
+ end;
+ ASSIGNLIST=L;
+ Out=L;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.bin
new file mode 100644
index 00000000..4ee61642
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.sci
new file mode 100755
index 00000000..0a362b01
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignrep.sci
@@ -0,0 +1,22 @@
+// 09.10.17
+// 09.12.05
+// 09.12.29
+// 14.09.30 addition supported
+
+function Assignrep(varargin)
+ global ASSIGNLIST;
+ Nargs=length(varargin);
+ for I=1:2:Nargs
+ Vname=varargin(I);
+ Val=varargin(I+1);
+ Tmp=Assign('?'+Vname);
+ if Tmp=='Not found'
+ Tmp=length(ASSIGNLIST);
+ ASSIGNLIST(Tmp+1)=Vname;
+ ASSIGNLIST(Tmp+2)=Val;
+ else
+ I=Tmp(1);
+ ASSIGNLIST(I+1)=Val;
+ end;
+ end
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.bin
new file mode 100644
index 00000000..eb9e3072
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.sci
new file mode 100755
index 00000000..bb77c105
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Assignset.sci
@@ -0,0 +1,7 @@
+// 09.10.21
+
+function Assignset(varargin)
+ I=1:length(varargin);
+ Tmp=Assign(varargin(I));;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.bin
new file mode 100644
index 00000000..2f570d6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.sci
new file mode 100755
index 00000000..f93e3200
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Beginpicture.sci
@@ -0,0 +1,6 @@
+// 08.05.22
+
+function Beginpicture(ul)
+ Openpicture(ul)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.bin
new file mode 100644
index 00000000..bcf1d42b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.sci
new file mode 100644
index 00000000..7d1993eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezier.sci
@@ -0,0 +1,35 @@
+// 15.01.01
+
+function Out=Bezier(varargin)
+ Nargs=length(varargin);
+ Ptlist=varargin(1);
+ Ctrlist=varargin(2);
+ Num=10;
+ for J=3:Nargs
+ Tmp=varargin(J);
+ K=mtlb_findstr(Tmp,'=');
+ Tmp1=strsplit(Tmp,[K-1,K]);
+ Tmp2=ascii(Tmp1(1,1));
+ Lhs=char(Tmp2(1));
+ if Lhs=="N" then
+ Num=evstr(Tmp1(3,1));
+ end;
+ end;
+ if length(Num)==1
+ Num=Num*ones(1:length(Ctrlist))
+ end;
+ Out=[];
+ for ii=1:length(Ctrlist)
+ Tmp1=[Ptlist(ii),Ptlist(ii+1)];
+ Tmp2=Ctrlist(ii);
+ if ii==1 then
+ St=0
+ else
+ St=1
+ end;
+ for J=St:Num(ii)
+ Tmp=Bezierpt(J/Num(ii),Tmp1,Tmp2);
+ Out=[Out;Tmp];
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.bin
new file mode 100644
index 00000000..51ad025e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.sci
new file mode 100644
index 00000000..ac639249
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bezierpt.sci
@@ -0,0 +1,39 @@
+// 15.01.01
+// 15.02.08 for 3d
+
+function Out=Bezierpt(t,Ptlist,Ctrlist)
+ if length(Ptlist)==6 then // 3d 15.02.08
+ P0=Ptlist(1:3);
+ P3=Ptlist(4:6);
+ P1=Ctrlist(1:3);
+ if length(Ctrlist)==3 then
+ P2=P3;
+ flg3=0;
+ else
+ P2=Ctrlist(4:6);
+ flg3=1;
+ end;
+ else
+ P0=Ptlist(1:2);
+ P3=Ptlist(3:4);
+ P1=Ctrlist(1:2);
+ if length(Ctrlist)==2 then
+ P2=P3;
+ flg3=0;
+ else
+ P2=Ctrlist(3:4);
+ flg3=1;
+ end;
+ end;
+ P4=(1-t)*P0+t*P1;
+ P5=(1-t)*P1+t*P2;
+ P6=(1-t)*P2+t*P3;
+ P7=(1-t)*P4+t*P5;
+ P8=(1-t)*P5+t*P6;
+ P9=(1-t)*P7+t*P8;
+ if flg3==0 then
+ Out=P7;
+ else
+ Out=P9;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.bin
new file mode 100644
index 00000000..e238cbcb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.sci
new file mode 100755
index 00000000..dac12561
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.09.13
+
+function Out=BorderHiddenData()
+ global BORDERHIDDENDATA
+ Out=BORDERHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.bin
new file mode 100644
index 00000000..40553cd7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.sci
new file mode 100755
index 00000000..12947bcd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/BorderPt.sci
@@ -0,0 +1,7 @@
+// 08.09.13
+
+function Out=BorderPt()
+ global BORDERPT
+ Out=BORDERPT
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.bin
new file mode 100644
index 00000000..d5c08e6d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.sci
new file mode 100755
index 00000000..2e944821
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderparadata.sci
@@ -0,0 +1,121 @@
+// 08.09.13
+// 08.09.16
+// 08.10.10
+// 08.10.11
+// 08.10.15
+// 08.10.28
+// 09.03.09
+// 09.05.27
+// 09.06.03
+// 10.02.16 Eps=> [Eps, Epsmg]
+// 13.10.21 ( __ added to varibles )
+
+function FsL__=Borderparadata(varargin)
+ global BORDERPT OTHERPARTITION HIDDENDATA BORDERHIDDENDATA
+ global PARTITIONPT
+ Nargs__=length(varargin);
+ FkL__=varargin(1);
+ Fd__=varargin(2); N__=3;
+ FdL__=Fullformfunc(Fd__);
+ Fxy__=Mixop(1,FdL__);
+ Tmp__1=Mixop(2,FdL__);
+ Tmp__2=Mixop(3,FdL__);
+ Tmp__3=Mixop(4,FdL__);
+ Xyzstr__=[Tmp__1,Tmp__2,Tmp__3];
+ DrwS__=Mixop(7,FdL__);
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Np__=[50,50];
+ if Nargs__>=3
+ Np__=varargin(3); N__=4;
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Eps__=[0.05,1]; //
+ if Nargs__>=N__ Eps__=varargin(N__); end;
+ Eps__2=0.2;
+ if Nargs__>=N__+1 Eps__2=varargin(N__+1); end;
+ Umin__=Urg__(1); Umax__=Urg__(2);
+ Vmin__=Vrg__(1); Vmax__=Vrg__(2);
+ EkL__=[];
+ Tmp__=mtlb_findstr(DrwS__,'e');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umax__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'n');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmax__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'w');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umin__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'s');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmin__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ if Mixlength(EkL__)>0
+ FkL__=Mixjoin(FkL__,EkL__);
+ end;
+ Fall__=Projpara(FkL__);
+ if Mixtype(Fall__)==1
+ Fall__=Mix(Fall__)
+ end;
+ Fbdxy__=Makexybdy(Fd__,Np__);
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ BORDERPT=[];
+ Tmp__=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixadd(Tmp__,[]);
+ end;
+ OTHERPARTITION=Tmp__;
+ FsL__=[];
+ BORDERHIDDENDATA=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixop(I__,FkL__);
+ Tmp__=Projpara(Tmp__);
+ Par__=Partitionseg(Tmp__,Fall__,Eps__(1),Eps__2,I__); //
+ if Mixlength(PARTITIONPT)>2
+ Tmp__=Mixlength(PARTITIONPT)-1;
+ Tmp__1=Mixsub(2:Tmp__,PARTITIONPT);
+ BORDERPT=Mixjoin(BORDERPT,Tmp__1);
+ end;
+ Tmp__1=Mixop(I__,FkL__);
+ Tmp__=Nohiddenpara2(Par__,Tmp__1,Fd__,1,Np__,Eps__);
+ if Mixlength(HIDDENDATA)>0
+ BORDERHIDDENDATA=Mixjoin(BORDERHIDDENDATA,HIDDENDATA);
+ end;
+ if Mixlength(Tmp__)>0
+ FsL__=Mixjoin(FsL__,Tmp__);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.bin
new file mode 100644
index 00000000..162c473d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.sci
new file mode 100755
index 00000000..f86ddfa0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderpersdata.sci
@@ -0,0 +1,120 @@
+// 08.09.21
+// 08.10.10
+// 08.10.11
+// 08.10.28
+// 09.03.09
+// 09.05.27
+// 09.06.03
+// 10.02.16 Eps__
+// 13.11.01 ( __ added to varibles )
+
+function FsL__=Borderpersdata(varargin)
+ global BORDERPT OTHERPARTITION HIDDENDATA BORDERHIDDENDATA
+ global PARTITIONPT
+ Nargs__=length(varargin);
+ FkL__=varargin(1);
+ Fd__=varargin(2); N=3;
+ FdL__=Fullformfunc(Fd__);
+ Fxy__=Mixop(1,FdL__);
+ Tmp__1=Mixop(2,FdL__);
+ Tmp__2=Mixop(3,FdL__);
+ Tmp__3=Mixop(4,FdL__);
+ Xyzstr__=[Tmp__1,Tmp__2,Tmp__3];
+ DrwS__=Mixop(7,FdL__);
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Np__=[50,50];
+ if Nargs__>=3
+ Np__=varargin(3); N=4;
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Eps__=0.05;
+ Eps__=[0.05,1]; //
+ if Nargs__>=N Eps__=varargin(N); end;
+ Eps__2=0.2;
+ if Nargs__>=N+1 Eps__2=varargin(N+1); end;
+ Umin__=Urg__(1); Umax__=Urg__(2);
+ Vmin__=Vrg__(1); Vmax__=Vrg__(2);
+ EkL__=[];
+ Tmp__=mtlb_findstr(DrwS__,'e');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umax__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'n');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmax__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'w');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Uname__,'('+string(Umin__)+')');
+ Tmp__2=Mixop(6,FdL__);
+ Tmp__3='N='+string(Np__(2));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'s');
+ if length(Tmp__)~=0
+ Tmp__1=strsubst(Xyzstr__,Vname__,'('+string(Vmin__)+')');
+ Tmp__2=Mixop(5,FdL__);
+ Tmp__3='N='+string(Np__(1));
+ Tmp__=Spacecurve(Tmp__1,Tmp__2,Tmp__3);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+ if Mixlength(EkL__)>0
+ FkL__=Mixjoin(FkL__,EkL__);
+ end;
+ Fall__=Projpers(FkL__);
+ if Mixtype(Fall__)==1
+ Fall__=Mix(Fall__);
+ end;
+ Fbdxy__=Makexybdy(Fd__,Np__);
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ BORDERPT=[];
+ Tmp__=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixadd(Tmp__,[]);
+ end;
+ OTHERPARTITION=Tmp__;
+ FsL__=[];
+ BORDERHIDDENDATA=[];
+ for I__=1:Mixlength(Fall__)
+ Tmp__=Mixop(I__,FkL__);
+ Tmp__=Projpers(Tmp__);
+ Par__=Partitionseg(Tmp__,Fall__,Eps__(1),Eps__2,I__);
+ if Mixlength(PARTITIONPT)>2
+ Tmp__=Mixlength(PARTITIONPT)-1;
+ Tmp__1=Mixsub(2:Tmp__,PARTITIONPT);
+ BORDERPT=Mixjoin(BORDERPT,Tmp__1);
+ end;
+ Tmp__1=Mixop(I__,FkL__);
+ Tmp__=Nohiddenpers2(Par__,Tmp__1,Fd__,1,Np__,Eps__);
+ if Mixlength(HIDDENDATA)>0
+ BORDERHIDDENDATA=Mixjoin(BORDERHIDDENDATA,HIDDENDATA);
+ end;
+ if Mixlength(Tmp__)>0
+ FsL__=Mixjoin(FsL__,Tmp__);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.bin
new file mode 100644
index 00000000..41515f60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.sci
new file mode 100755
index 00000000..657efc23
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Borderrawdata.sci
@@ -0,0 +1,64 @@
+// 08.09.10
+
+function FkL=Borderrawdata(varargin)
+ Nall=length(varargin);
+ FkL=varargin(1);
+ FdL=Fullformfunc(varargin(2));
+ Tmp1=Mixop(2,FdL);
+ Tmp2=Mixop(3,FdL);
+ Tmp3=Mixop(4,FdL);
+ Xyzstr=[Tmp1,Tmp2,Tmp3];
+ DrwS=Mixop(7,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ Np=[50,50];
+ if Nall>=3
+ Np=varargin(3);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Um=Urg(1); UM=Urg(2);
+ Vm=Vrg(1); VM=Vrg(2);
+ EkL=[];
+ Tmp=mtlb_findstr(DrwS,'e');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Uname,'('+string(UM)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'n');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Vname,'('+string(VM)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'w');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Uname,'('+string(Um)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'s');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xyzstr,Vname,'('+string(Vm)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Spacecurve(Tmp1,Tmp2,Tmp3);
+ EkL=Mixadd(EkL,Tmp);
+ end;
+ FkL=Mixjoin(FkL,EkL);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.bin
new file mode 100644
index 00000000..00fea499
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.sci
new file mode 100755
index 00000000..48154cf1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowdata.sci
@@ -0,0 +1,45 @@
+//
+// 08.05.22
+// 08.08.24
+
+function Pd=Bowdata(varargin)
+ global BOWMIDDLE BOWSTART BOWEND
+ Nargs=length(varargin);
+ PA=varargin(1);
+ PB=varargin(2);
+ Cut=0;
+ D=1/2*Vecnagasa(PB-PA);
+ if Nargs>=3
+ H=varargin(3)*D*0.2;
+ else
+ H=D*0.2;
+ end
+ H=min(H,D);
+ if Nargs>=4
+ Cut=varargin(4);
+ end
+ Ydata=MakeBowdata(PA,PB,H);
+ C=Mixop(1,Ydata);
+ r=Mixop(2,Ydata);
+ R1=Mixop(3,Ydata);
+ R2=Mixop(4,Ydata);
+ Rng='R=['+string(R1)+','+string(R2)+']';
+ Theta=(R1+R2)*0.5;
+ BOWMIDDLE=MixS([C(1)+r*cos(Theta),C(2)+r*sin(Theta)],Theta);
+ M=Mixop(1,BOWMIDDLE);
+ ThetaM=Mixop(2,BOWMIDDLE);
+ BOWSTART=PA;
+ BOWEND=PB;
+ if Cut==0
+ Pd=Circledata(C,r,Rng);
+ else
+ Alpha=R1; Beta=ThetaM-Cut/(2*r);
+ Rng='R=['+string(Alpha)+','+string(Beta)+']';
+ Pd=Circledata(C,r,Rng);
+ Alpha=ThetaM+Cut/(2*r); Beta=R2;
+ Rng='R=['+string(Alpha)+','+string(Beta)+']';
+ Tmp=Circledata(C,r,Rng);
+ Pd=[Pd;%inf,%inf;Tmp];
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.bin
new file mode 100644
index 00000000..fe5aa36a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.sci
new file mode 100755
index 00000000..5157c111
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowmiddle.sci
@@ -0,0 +1,53 @@
+//
+// 08.05.22
+// 08.05.31
+// 09.08.12
+
+function M=Bowmiddle(varargin)
+ global BOWMIDDLE;
+ Nargs=length(varargin);
+ if Nargs==0
+ M=BOWMIDDLE;
+ return;
+ end;
+ if Nargs==1
+ Bdata=varargin(1);
+ A=Bdata(1,:);
+ Dind=Dataindex(Bdata);
+ Dc=size(Dind,1);
+ Tmp=Dind(Dc,2);
+ B=Bdata(Tmp,:);
+ if Dc==1
+ Tmp1=round(Tmp/2);
+ else
+ Tmp1=Dind(1,2);
+ end;
+ D=Bdata(Tmp1,:);
+ B=B-A;
+ D=D-A;
+ Tmp1=B(1)*D(2)-D(1)*B(2);
+ Tmp2=((B(1)^2+B(2)^2)*D(2)-B(2)*(D(1)^2+D(2)^2))/2;
+ Tmp3=-((B(1)^2+B(2)^2)*D(1)-B(1)*(D(1)^2+D(2)^2))/2;
+ C=[Tmp2,Tmp3]/Tmp1+A;
+ R=norm(C-A);
+ B=B+A;
+ V=(A+B)/2-C;
+ V=V/norm(V);
+ M=C+R*V;
+ else
+ A=varargin(1); B=varargin(2);
+ D=1/2*Vecnagasa(B-A);
+ H=0.2*D;
+ if length(varargin)>=3
+ Tmp=varargin(3);
+ H=Tmp*D*0.2;
+ end
+ H=min(H,D);
+ Ydata=MakeBowdata(A,B,H);
+ C=Op(1,Ydata);
+ R=Op(2,Ydata);
+ T=(Op(3,Ydata)+Op(4,Ydata))/2;
+ P=C+R*[cos(T),sin(T)];
+ M=MixS(P,T);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.bin
new file mode 100644
index 00000000..320dc759
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.sci
new file mode 100755
index 00000000..f57c4961
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bowname.sci
@@ -0,0 +1,40 @@
+//
+// 08.08.24
+// 09.08.12
+// 09.08.13
+// 13.11.30 Directon supported
+
+function Bowname(varargin)
+ global BOWMIDDLE;
+ Nargs=length(varargin);
+ Siki=varargin(Nargs);
+ Nargs=Nargs-1; // 13.11.30
+ Dr="c";
+ if Nargs>=1 then
+ Tmp=varargin(Nargs);
+ if type(Tmp)==10
+ Dr=Tmp;
+ Nargs=Nargs-1;
+ end
+ end
+ if Nargs==0 // 13.11.30
+ P=Mixop(1,BOWMIDDLE);
+ elseif Nargs==1 // 13.11.30
+ Bdata=varargin(1);
+ P=Bowmiddle(Bdata);
+ else
+ A=varargin(1); B=varargin(2);
+ D=1/2*Vecnagasa(B-A);
+ Tmp=varargin(3);
+ if type(Tmp)==10
+ H=D*0.2;
+ else
+ H=Tmp*D*0.2;
+ end;
+ H=min(H,D);
+ Ydata=MakeBowdata(A,B,H);
+ Tmp=Bowmiddle(Ydata);
+ P=Mixop(1,Tmp);
+ end
+ Expr(P,Dr,Siki); //13.11.30
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.bin
new file mode 100644
index 00000000..e4dd5aa2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.sci
new file mode 100755
index 00000000..8d1edf78
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Bownamerot.sci
@@ -0,0 +1,77 @@
+// 08.05.31
+// 08.08.24
+// 09.08.12
+// 09.08.13
+// 13.12.15 tiny move supported
+// A,B type no longer supported
+
+function Bownamerot(varargin)
+ global Wfile FID BOWMIDDLE BOWSTART BOWEND;
+ Nargs=length(varargin);
+ Eps=10^(-6);
+ Flg=1;
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & length(Tmp)==1 & Tmp<0
+ Flg=Tmp;
+ Nargs=Nargs-1;
+ end;
+ Siki=varargin(Nargs);
+ Nargs=Nargs-1;
+ Dr="c";
+ if Nargs>=1 then
+ Tmp=varargin(Nargs);
+ if type(Tmp)==10
+ Dr=Tmp;
+ Nargs=Nargs-1;
+ end
+ end
+ if Nargs==0
+ P=Mixop(1,BOWMIDDLE);
+ A=BOWSTART;
+ B=BOWEND;
+ else
+ Bdata=varargin(1);
+ P=Bowmiddle(Bdata);
+ A=Bdata(1,:);
+ B=Bdata(size(Bdata,1),:);
+ Tm=0; Tv=0;
+ if Nargs>1 then // 13.12.15
+ Tm=varargin(2);
+ if Nargs>2 then
+ Tv=varargin(3);
+ end
+ end
+ end;
+// elseif Nargs==1
+// Bdata=varargin(1);
+// P=Bowmiddle(Bdata);
+// A=Bdata(1,:);
+// B=Bdata(size(Bdata,1),:);
+// else
+// A=varargin(1); B=varargin(2);
+// D=1/2*Vecnagasa(B-A);
+// Tmp=varargin(3);
+// if type(Tmp)==10
+// H=0.2*D; Siki=Tmp;
+// else
+// H=Tmp*D*0.2; Siki=varargin(4);
+// end
+// H=min(H,D);
+// Ydata=MakeBowdata(A,B,H);
+// C=Op(1,Ydata);
+// R=Op(2,Ydata);
+// T=(Op(3,Ydata)+Op(4,Ydata))/2;
+// P=C+R*[cos(T),sin(T)];
+// end;
+ if A(1)>B(1)+Eps
+ Tmp=A;
+ A=B;
+ B=Tmp;
+ end;
+ if Flg>0
+ Tmp=B-A;
+ else
+ Tmp=A-B;
+ end;
+ Exprrot(P,Tmp,Tm,Tv,Siki);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.bin
new file mode 100644
index 00000000..69e9a115
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.sci
new file mode 100755
index 00000000..aa1216dd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcHeight.sci
@@ -0,0 +1,31 @@
+function CalcHeight(Hoko,Moji)
+ global Wfile FID;
+ D=0;
+ Tmp=ascii(Hoko);
+ H=char(Tmp(1));
+ Str=['\settoheight{\Height}{'+Moji+'}'];
+ Str=[Str,'\settodepth{\Depth}{'+Moji+'}'];
+ if H=='n'
+ Str=[Str,'\setlength{\Height}{\Depth}'];
+ end
+ if H=='s'
+ Str=[Str,'\setlength{\Height}{-\Height}'];
+ end
+ if H=='c'
+ Str=[Str,'\setlength{\Height}{-0.5\Height}'];
+ Str=[Str,'\setlength{\Depth}{0.5\Depth}'];
+ Str=[Str,'\addtolength{\Height}{\Depth}'];
+ end
+ if Wfile=='default'
+ for I=1:size(Str,2)
+ mprintf('%s',Str(I));
+ end
+ mprintf('%s\n','%');
+ else
+ for I=1:size(Str,2)
+ mfprintf(FID,'%s',Str(I));
+ end
+ mfprintf(FID,'%s\n','%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.bin
new file mode 100644
index 00000000..dea083ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.sci
new file mode 100755
index 00000000..111e9b3b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CalcWidth.sci
@@ -0,0 +1,26 @@
+function CalcWidth(Hoko,Moji)
+ global Wfile FID
+ D=0;
+ Tmp=ascii(Hoko);
+ H=char(Tmp(2));
+ if H=='e'
+ D=0;
+ end
+ if H=='w'
+ D=-1.0;
+ end
+ if H=='c'
+ D=-0.5;
+ end
+ Str1='\settowidth{\Width}{'+Moji+'}';
+ Tmp=string(D);
+ Str2='\setlength{\Width}{'+Tmp+'\Width}';
+ if Wfile=='default'
+ mprintf('%s',Str1);
+ mprintf('%s%s\n',Str2,'%');
+ else
+ mfprintf(FID,'%s',Str1);
+ mfprintf(FID,'%s%s\n',Str2,'%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.bin
new file mode 100644
index 00000000..90ba14bb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.sci
new file mode 100755
index 00000000..30c646a6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Calcfun.sci
@@ -0,0 +1,9 @@
+// 08.05.30
+
+function PL=Calcfun(Siki,Namae,Atai)
+ execstr(Namae+'=Atai');
+ Tmp='XY='+Siki;
+ execstr(Tmp);
+ PL=[Atai(:,1),XY(:,2)];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.bin
new file mode 100644
index 00000000..a0f9bec1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.sci
new file mode 100755
index 00000000..fcc7687c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameraCurve.sci
@@ -0,0 +1,24 @@
+// 08.08.12
+// 08.10.07
+// 09.06.02
+
+function AnsL=CameraCurve(Curve)
+ Eps=10^(-6);
+ for I=1:size(Curve,1)
+ P=Curve(I,:);
+ x=P(1); y=P(2); z=P(3);
+ if x~=%inf
+ Tmp=Perspt(P);
+ if I==1
+ AnsL=[Tmp];
+ else
+ Tmp1=AnsL(size(AnsL,1),:);
+ if Tmp1(1)==%inf | norm(Tmp-Tmp1)>Eps
+ AnsL=[AnsL;Tmp];
+ end;
+ end;
+ else
+ AnsL=[AnsL;%inf,%inf];
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.bin
new file mode 100644
index 00000000..1504ef28
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.sci
new file mode 100755
index 00000000..310ac166
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CameracoordCurve.sci
@@ -0,0 +1,28 @@
+// 08.08.14
+// 08.10.16
+// 09.09.25
+
+function Out=CameracoordCurve(Curve)
+ global FocusPoint EyePoint;
+ Out=[]; // 09.09.25
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ Tmp=P-FocusPoint;
+ X1=Tmp(1); Y1=Tmp(2); Z1=Tmp(3);
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ X2=X1*Ca+Y1*Sa; Y2=-X1*Sa+Y1*Ca; Z2=Z1;
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ X3=X2*Cb+Z2*Sb; Y3=Y2; Z3=-X2*Sb+Z2*Cb;
+ E3=E2*Cb+G2*Sb; F3=F2; G3=-E2*Sb+G2*Cb;
+ Xz=X3;
+ Yz=E3/(E3-X3)*Y3;
+ Zz=E3/(E3-X3)*Z3;
+ Out=[Out;Yz,Zz,Xz];
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.bin
new file mode 100644
index 00000000..09869b72
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.sci
new file mode 100644
index 00000000..1574d812
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpara.sci
@@ -0,0 +1,11 @@
+// 13.08.13
+
+function Out=Cancoordpara(P)
+ global PHI THETA;
+ Xz=P(1); Yz=P(2); Zz=P(3);
+ X=-Xz*sin(PHI)-Yz*cos(PHI)*cos(THETA)+Zz*cos(PHI)*sin(THETA);
+ Y=Xz*cos(PHI)-Yz*sin(PHI)*cos(THETA)+Zz*sin(PHI)*sin(THETA);
+ Z=Yz*sin(THETA)+Zz*cos(THETA);
+ Out=[X,Y,Z];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.bin
new file mode 100644
index 00000000..9b976e9a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.sci
new file mode 100755
index 00000000..b63aba5c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cancoordpers.sci
@@ -0,0 +1,22 @@
+// 08.08.12
+
+function Out=Cancoordpers(P)
+ global EyePoint FocusPoint;
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ E3=E2*Cb+G2*Sb; F3=F2; G3=-E2*Sb+G2*Cb;
+ Xz=P(3); Yz=P(1); Zz=P(2);
+ X3=Xz; Y3=Yz*(E3-Xz)/E3; Z3=Zz*(E3-Xz)/E3;
+ X2=X3*Cb-Sb*Z3; Y2=Y3; Z2=Cb*Z3+Sb*X3;
+ X1=X2*Ca-Sa*Y2; Y1=Ca*Y2+Sa*X2; Z1=Z2;
+ X=X1+FocusPoint(1);
+ Y=Y1+FocusPoint(2);
+ Z=Z1+FocusPoint(3);
+ Out=[X,Y,Z];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.bin
new file mode 100644
index 00000000..479debe4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.sci
new file mode 100755
index 00000000..2148c061
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Circledata.sci
@@ -0,0 +1,32 @@
+// s:2008,05.12
+// e:2014.09.08 [A,B] supported
+// e:2014.10.24 N,R => N__, ...
+
+function P=Circledata(varargin)
+ Nargs=length(varargin);
+ C=varargin(1);
+ if length(C)==4 then
+ ra=norm(C(1:2)-C(3:4));
+ C=C(1:2);
+ Nop=2;
+ else
+ ra=varargin(2);
+ Nop=3;
+ end;
+ R__=[0,2*%pi];
+ N__=50; // Numpoints
+ for I=Nop:Nargs
+ Tmp=varargin(I);
+ K=mtlb_findstr(Tmp,'=');
+ Tmp1=strsplit(Tmp,[K-1,K]);
+ Tmp2=ascii(Tmp1(1,1));
+ Lhs=char(Tmp2(1));
+ Str=Lhs+'__='+Tmp1(3,1);
+ execstr(Str);
+ end;
+ Dt=(R__(2)-R__(1))/N__;
+ T=R__(1):Dt:R__(2);
+ X=C(1)+ra*cos(T);
+ Y=C(2)+ra*sin(T);
+ P=[X',Y'];
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.bin
new file mode 100644
index 00000000..7a4e7e0e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci
new file mode 100755
index 00000000..bf9572c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Clipindomain.sci
@@ -0,0 +1,58 @@
+// 08.09.10
+// 08.09.16
+// 09.12.31 (gsort)
+
+function OutL=Clipindomain(ObjL,FigL)
+ EEps=10^(-4);
+ Eps=0.01;
+ Eps2=0.2;
+ Bdy=Kyoukai(FigL);
+ if Mixlength(Bdy)>=2
+ Fbdy=Joincrvs(FigL)
+ else
+ Fbdy=Mixop(1,FigL);
+ end;
+ if Mixtype(ObjL)==1
+ ObjL=Mix(ObjL)
+ end;
+ if Mixtype(FigL)==1
+ FigL=Mix(FigL)
+ end;
+ OutL=[];
+ for Nobj=1:Mixlength(ObjL);
+ Obj=Mixop(Nobj,ObjL);
+ ParL=[1,Numptcrv(Obj)];
+ Tmp=IntersectcrvsPp(Obj,Fbdy,Eps,Eps2);
+ for J=1:Mixlength(Tmp)
+ Tmp1=Mixop(J,Tmp);
+ ParL=[ParL,Mixop(2,Tmp1)];
+ end;
+ ParL=gsort(ParL);
+ ParL=ParL(length(ParL):-1:1);
+ Tmp=[1];
+ for I=1:length(ParL)
+ Tmp1=Tmp(length(Tmp));
+ Tmp2=ParL(I);
+ if Tmp2-Tmp1>EEps
+ Tmp=[Tmp,Tmp2];
+ end;
+ end;
+ ParL=Tmp;
+ Tmp1=ParL(length(ParL));
+ Tmp2=Numptcrv(Obj);
+ if abs(Tmp1-Tmp2)<Eps
+ ParL=[ParL(1:length(ParL)-1),Tmp2];
+ end;
+ Fig=[];
+ for N=1:length(ParL)-1
+ Tmp=(ParL(N)+ParL(N+1))*0.5;
+ Tmp=PointonCurve(Tmp,Obj);
+ Tmp=Naigai(Tmp,Bdy);
+ Tmp1=modulo(sum(Tmp),2);
+ if Tmp1==0 continue; end;
+ Fig=Mixadd(Fig,Partcrv(ParL(N),ParL(N+1),Obj));
+ end;
+ OutL=Mixjoin(OutL,Fig);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.bin
new file mode 100644
index 00000000..ee0c01eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.sci
new file mode 100755
index 00000000..f2928103
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closefile.sci
@@ -0,0 +1,24 @@
+//
+// 13.05.19 openfile error tackled
+// 13.11.01 Endpicture joined optionally
+// 13.11.05 debugged
+
+function Closefile(varargin)
+ global Wfile FID;
+ if length(varargin)>=1 then
+ Pa=varargin(1);
+ if type(Pa)==10 then
+ if Pa=="1" then // 2013.11.05
+ Endpicture(1)
+ end;
+ if Pa=="0" then
+ Endpicture(0)
+ end //
+ end
+ end
+ if Wfile~='default' then
+ mclose(FID);
+ FID=[]; // 2013.05.19
+ end
+ Wfile='default';
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.bin
new file mode 100644
index 00000000..459ad839
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.sci
new file mode 100644
index 00000000..da7c3850
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closeobj.sci
@@ -0,0 +1,10 @@
+// s : 2014.06.22
+
+function Closeobj()
+ global Wfile FID;
+ if Wfile~='default' then
+ mclose(FID);
+ FID=[];
+ end;
+ Wfile='default';
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.bin
new file mode 100644
index 00000000..2f0714fe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.sci
new file mode 100755
index 00000000..64b93e1a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepar.sci
@@ -0,0 +1,15 @@
+// 08.05.31
+
+function Closepar()
+ global Wfile FID
+ S='\end{minipage}'
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ mprintf('%s',S);
+ else
+ mfprintf(FID,'%s\n','%');
+ mfprintf(FID,'%s',S);
+ end
+ Closephr();
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.bin
new file mode 100644
index 00000000..6a9af1b5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.sci
new file mode 100755
index 00000000..39b363f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closephr.sci
@@ -0,0 +1,13 @@
+// 08.05.31
+
+function Closephr()
+ global Wfile FID;
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ mprintf('%s\n','}%');
+ else
+ mfprintf(FID,'%s\n','%');
+ mfprintf(FID,'%s\n','}%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.bin
new file mode 100644
index 00000000..45c1666b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.sci
new file mode 100755
index 00000000..a3f345cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Closepicture.sci
@@ -0,0 +1,22 @@
+//
+// 08.12.17
+// 09.02.20
+// 10.04.12
+
+function Closepicture(varargin)
+ global Wfile FID MEMORI MEMORINow ULEN MilliIn;
+ Nargs=length(varargin);
+ if Nargs==0
+ Drwxy();
+ elseif varargin(1)==1
+ Drwxy();
+ end
+ if Wfile=='default'
+ mprintf('%s','\end{picture}}%');
+ else
+ mfprintf(FID,'%s','\end{picture}}%');
+ end
+// MEMORI=MEMORINow*1000/2.54/MilliIn;
+ Setunitlen('1cm');
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.bin
new file mode 100644
index 00000000..2ae19755
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.sci
new file mode 100755
index 00000000..2abe8c90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Connectseg.sci
@@ -0,0 +1,76 @@
+// 08.09.09
+// 08.09.10
+// 08.09.24
+
+function PlotL=Connectseg(varargin)
+ Nargs=length(varargin);
+ Pdata=varargin(1);
+ Eps=10^(-5);
+ if Nargs>=2
+ Eps=varargin(2)
+ end;
+ if Mixtype(Pdata)~=1
+ Tmp=Mixop(1,Pdata);
+ Tmp=size(Tmp,2);
+ Sep=%inf*ones(1,Tmp);
+ Tmp=[];
+ for I=1:Mixlength(Pdata)
+ Tmp1=Mixop(I,Pdata);
+ Tmp=[Tmp;Sep;Tmp1];
+ end;
+ Pdata=Tmp(2:size(Tmp,1),:);
+ end;
+ Din=Dataindex(Pdata);
+ PlotL=[];
+ Qd=Pdata(Din(1,1):Din(1,2),:);
+ Din=Din(2:size(Din,1),:);
+ N=size(Din,1);
+ while N>0
+ Ah=Qd(1,:);Ao=Qd(size(Qd,1),:);
+ Flg=0;
+ for J=1:N
+ St=Din(J,1);
+ En=Din(J,2);
+ P=Pdata(St,:);
+ Q=Pdata(En,:);
+ if norm(P-Ao)<Eps
+ Tmp=Pdata(St+1:En,:);
+ Qd=[Qd;Tmp];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ if norm(Q-Ao)<Eps
+ Tmp=Pdata(En-1:-1:St,:);
+ Qd=[Qd;Tmp];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ if norm(P-Ah)<Eps
+ Tmp=Pdata(En:-1:St+1,:);
+ Qd=[Tmp;Qd];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ if norm(Q-Ah)<Eps
+ Tmp=Pdata(St:En-1,:);
+ Qd=[Tmp;Qd];
+ Din=[Din(1:J-1,:);Din(J+1:N,:)];
+ Flg=1;
+ break;
+ end;
+ end;
+ if Flg==0
+ PlotL=Mixadd(PlotL,Qd);
+ Qd=Pdata(Din(1,1):Din(1,2),:);
+ Din=Din(2:N,:);
+ end;
+ N=size(Din,1);
+ end;
+ if size(Qd,1)>0
+ PlotL=Mixadd(PlotL,Qd);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.bin
new file mode 100644
index 00000000..ebbf0250
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.sci
new file mode 100755
index 00000000..ab4d55b5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crossprod.sci
@@ -0,0 +1,13 @@
+// 09.10.0
+
+function Out=Crossprod(a,b)
+ if length(a)==3
+ Tmp1=a(2)*b(3)-a(3)*b(2);
+ Tmp2=a(3)*b(1)-a(1)*b(3);
+ Tmp3=a(1)*b(2)-a(2)*b(1);
+ Out=[Tmp1,Tmp2,Tmp3];
+ else
+ Out=a(1)*b(2)-a(2)*b(1);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.bin
new file mode 100644
index 00000000..945f328f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.sci
new file mode 100755
index 00000000..07c17303
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.09.19
+
+function Out=Crv3onsfHiddenData()
+ global CRV3ONSFHIDDENDATA
+ Out=CRV3ONSFHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.bin
new file mode 100644
index 00000000..edfc2433
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.sci
new file mode 100755
index 00000000..ba168b71
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfparadata.sci
@@ -0,0 +1,49 @@
+// 08.09.16
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+
+function Out=Crv3onsfparadata(varargin)
+ global PARTITIONPT HIDDENDATA CRV3ONSFHIDDENDATA
+ Nargs=length(varargin);
+ Fk=varargin(1);
+ Fbdy=Projpara(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Fbdxy=Makexybdy(Fd,Np);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Fxy=='p'
+ Out=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ else
+ Tmp=Mix(Fxy,Fbdxy,Xname,Yname);
+ Out=Nohiddenpara(Par,Fk,Tmp);
+ end;
+ CRV3ONSFHIDDENDATA=HIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.bin
new file mode 100644
index 00000000..fcf19f53
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.sci
new file mode 100755
index 00000000..5fc40737
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crv3onsfpersdata.sci
@@ -0,0 +1,50 @@
+// 08.09.21
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+
+function Out=Crv3onsfpersdata(varargin)
+ global PARTITIONPT HIDDENDATA CRV3ONSFHIDDENDATA
+ Nargs=length(varargin);
+ Fk=varargin(1);
+ Fbdy=Projpers(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Fbdxy=Makexybdy(Fd,Np);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Fxy=='p'
+ Out=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ else
+ Tmp=Mix(Fxy,Fbdxy,Xname,Yname);
+ Out=Nohiddenpers(Par,Fk,Tmp);
+ end;
+
+ CRV3ONSFHIDDENDATA=HIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.bin
new file mode 100644
index 00000000..6c2acae3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.sci
new file mode 100755
index 00000000..9d97b3ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvonsfHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.09.19
+
+function Out=CrvonsfHiddenData()
+ global CRVONSFHIDDENDATA
+ Out=CRVONSFHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.bin
new file mode 100644
index 00000000..5a5c9703
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.sci
new file mode 100755
index 00000000..a530284b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfparadata.sci
@@ -0,0 +1,90 @@
+// 08.09.16
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+// 13.10.22 ( __ added to varibles )
+
+function OutL__=Crvonsfparadata(varargin)
+ global PARTITIONPT HIDDENDATA CRVONSFHIDDENDATA
+ Nargs__=length(varargin);
+ Eps__0=10^(-4);
+ Figuv__=varargin(1);
+ Fbdy__=Projpara(varargin(2));
+ Fd__=varargin(3); N__=4;
+ Fd__L=Fullformfunc(Fd__);
+ Fxy__=Mixop(1,Fd__L);
+ Xf__=Mixop(2,Fd__L);
+ Yf__=Mixop(3,Fd__L);
+ Zf__=Mixop(4,Fd__L);
+ Np__=[50,50];
+ if Nargs__>=N__
+ Np__=varargin(N__); N__=N__+1;
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Eps__=[0.05,1]; //
+ if Nargs__>=N__
+ Eps__=varargin(N__);
+ end;
+ if length(Eps__)==1
+ Eps__=[Eps__,1];
+ end;
+ Eps__2=0.2;
+ if Nargs__>=N__+1
+ Eps__2=varargin(N__+1);
+ end;
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Fbdxy__=Makexybdy(Fd__,Np__);
+ Fbdy__uv=Mixop(8,Fd__L);
+ if Fbdy__uv==[]
+ Fbdy__uv=Mix(Framedata(Urg__,Vrg__));
+ end;
+ FigL__=Clipindomain(Figuv__,Fbdy__uv);
+ CRVONSFHIDDENDATA=[];
+ OutL__=[];
+ for N__=1:Mixlength(FigL__)
+ PtL__=Mixop(N__,FigL__);
+ Tmp__=[];
+ for I__=1:size(PtL__,1)
+ P__=PtL__(I__,:);
+ Tmp__1=strsubst(Xf__,Uname__,'('+string(P__(1))+')');
+ Tmp__1=strsubst(Tmp__1,Vname__,'('+string(P__(2))+')');
+ Tmp__1=evstr(Tmp__1);
+ Tmp__2=strsubst(Yf__,Uname__,'('+string(P__(1))+')');
+ Tmp__2=strsubst(Tmp__2,Vname__,'('+string(P__(2))+')');
+ Tmp__2=evstr(Tmp__2);
+ Tmp__3=strsubst(Zf__,Uname__,'('+string(P__(1))+')');
+ Tmp__3=strsubst(Tmp__3,Vname__,'('+string(P__(2))+')');
+ Tmp__3=evstr(Tmp__3);
+ Tmp__=[Tmp__,[Tmp__1,Tmp__2,Tmp__3]];
+ end;
+ Fk__=Spaceline(Tmp__);
+ Par__=Partitionseg(Projpara(Fk__),Fbdy__,Eps__(1),Eps__2); //
+ if Fxy__=='p'
+ Tmp__=Nohiddenpara2(Par__,Fk__,Fd__,1,Np__,Eps__);
+ else
+ Tmp__1=Mix(Fxy__,Fbdxy__,Xname__,Yname__);
+ Tmp__=Nohiddenpara(Par__,Fk__,Tmp__1);
+ end;
+ if Tmp__~=[]
+ OutL__=Mixjoin(OutL__,Tmp__);
+ end;
+ if HIDDENDATA~=[]
+ CRVONSFHIDDENDATA=Mixjoin(CRVONSFHIDDENDATA,HIDDENDATA);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.bin
new file mode 100644
index 00000000..29f41d3c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.sci
new file mode 100755
index 00000000..f3bdf700
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvonsfpersdata.sci
@@ -0,0 +1,86 @@
+// 08.09.21
+// 08.10.11
+// 08.10.15
+// 10.02.16 Eps
+
+function OutL=Crvonsfpersdata(varargin)
+ global PARTITIONPT HIDDENDATA CRVONSFHIDDENDATA
+ Nargs=length(varargin);
+ Eps0=10^(-4);
+ Figuv=varargin(1);
+ Fbdy=Projpers(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Xf=Mixop(2,FdL);
+ Yf=Mixop(3,FdL);
+ Zf=Mixop(4,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1
+ Eps=[Eps,1];
+ end;
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ Fbdxy=Makexybdy(Fd,Np);
+ Fbdyuv=Mixop(8,FdL);
+ if Fbdyuv==[]
+ Fbdyuv=Mix(Framedata(Urg,Vrg));
+ end;
+ FigL=Clipindomain(Figuv,Fbdyuv);
+ CRVONSFHIDDENDATA=[];
+ OutL=[];
+ for N=1:Mixlength(FigL)
+ PtL=Mixop(N,FigL);
+ Tmp=[];
+ for I=1:size(PtL,1)
+ P=PtL(I,:);
+ Tmp1=strsubst(Xf,Uname,'('+string(P(1))+')');
+ Tmp1=strsubst(Tmp1,Vname,'('+string(P(2))+')');
+ Tmp1=evstr(Tmp1);
+ Tmp2=strsubst(Yf,Uname,'('+string(P(1))+')');
+ Tmp2=strsubst(Tmp2,Vname,'('+string(P(2))+')');
+ Tmp2=evstr(Tmp2);
+ Tmp3=strsubst(Zf,Uname,'('+string(P(1))+')');
+ Tmp3=strsubst(Tmp3,Vname,'('+string(P(2))+')');
+ Tmp3=evstr(Tmp3);
+ Tmp=[Tmp,[Tmp1,Tmp2,Tmp3]];
+ end;
+ Fk=Spaceline(Tmp);
+ Par=Partitionseg(Projpers(Fk),Fbdy,Eps(1),Eps2); //
+ if Fxy=='p'
+ Tmp=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ else
+ Tmp1=Mix(Fxy,Fbdxy,Xname,Yname);
+ Tmp=Nohiddenpers(Par,Fk,Tmp1);
+ end;
+ OutL=Mixjoin(OutL,Tmp);
+ CRVONSFHIDDENDATA=Mixjoin(CRVONSFHIDDENDATA,HIDDENDATA);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.bin
new file mode 100644
index 00000000..c0c9a068
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.sci
new file mode 100755
index 00000000..0081b20c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CrvsfHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.10.24
+
+function Out=CrvsfHiddenData()
+ global CRVSFHIDDENDATA
+ Out=CRVSFHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.bin
new file mode 100644
index 00000000..c4172a33
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.sci
new file mode 100755
index 00000000..a87506d2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfparadata.sci
@@ -0,0 +1,81 @@
+// 08.10.24
+// 08.10.25
+// 08.10.26
+// 08.10.27
+// 09.06.02
+// 09.12.31 (gsort)
+// 10.02.16
+
+function Out=Crvsfparadata(varargin)
+ global PARTITIONPT HIDDENDATA CRVSFHIDDENDATA
+ Nargs=length(varargin);
+ Sepflg=0;
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & Tmp<=0
+ Sepflg=1;
+ Nargs=Nargs-1;
+ end;
+ Fk=varargin(1);
+ if Mixtype(Fk)==1
+ FkL=Mix(Fk);
+ else
+ FkL=Fk;
+ end;
+ Fbdy=Projpara(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Out=[];
+ CRVSFHIDDENDATA=[];
+ for Nn=1:Mixlength(FkL)
+ Fk=Mixop(Nn,FkL);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Sepflg==0
+ for I=1:Numptcrv(Fk)-1
+ Pa=Ptcrv(I,Fk);
+ Pb=Ptcrv(I+1,Fk);
+ PtL=Meetpoints(Pa,Pb,Fd,1,Np,Eps(1)); //
+ for J=1:Mixlength(PtL)
+ Tmp=Mixop(J,PtL);
+ Tmp=Parapt(Tmp);
+ Tmp1=ParamonCurve(Tmp,I,Projpara(Fk));
+ Tmp2=min(abs(Par-Tmp1));
+ if Tmp2*norm(Parapt(Pb-Pa))>Eps (1) //
+ Par=[Par,Tmp1];
+ end;
+ end;
+ Par=gsort(Par);
+ Par=Par(length(Par):-1:1);
+ end;
+ end;
+ Tmp1=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ Out=Mixjoin(Out,Tmp1);
+ CRVSFHIDDENDATA=Mixjoin(CRVSFHIDDENDATA,HIDDENDATA);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.bin
new file mode 100644
index 00000000..8efb0eb2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.sci
new file mode 100755
index 00000000..7e24efcb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Crvsfpersdata.sci
@@ -0,0 +1,80 @@
+// 08.10.24
+// 08.10.25
+// 08.10.26
+// 08.10.27
+// 09.06.02
+// 09.12.31 (gsort)
+
+function Out=Crvsfpersdata(varargin)
+ global PARTITIONPT HIDDENDATA CRVSFHIDDENDATA
+ Nargs=length(varargin);
+ Sepflg=0;
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & Tmp<=0
+ Sepflg=1;
+ Nargs=Nargs-1;
+ end;
+ Fk=varargin(1);
+ if Mixtype(Fk)==1
+ FkL=Mix(Fk);
+ else
+ FkL=Fk;
+ end;
+ Fbdy=Projpers(varargin(2));
+ Fd=varargin(3); N=4;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N); N=N+1;
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N
+ Eps=varargin(N);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=N+1
+ Eps2=varargin(N+1);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Out=[];
+ CRVSFHIDDENDATA=[];
+ for Nn=1:Mixlength(FkL)
+ Fk=Mixop(Nn,FkL);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Sepflg==0
+ for I=1:Numptcrv(Fk)-1
+ Pa=Ptcrv(I,Fk);
+ Pb=Ptcrv(I+1,Fk);
+ PtL=Meetpoints(Pa,Pb,Fd,1,Np,Eps(1)); //
+ for J=1:Mixlength(PtL)
+ Tmp=Mixop(J,PtL);
+ Tmp=Perspt(Tmp);
+ Tmp1=ParamonCurve(Tmp,I,Projpers(Fk));
+ Tmp2=min(abs(Par-Tmp1));
+ if Tmp2*norm(Perspt(Pb-Pa))>Eps(1) //
+ Par=[Par,Tmp1];
+ end;
+ end;
+ Par=gsort(Par);
+ Par=Par(length(Par):-1:1);
+ end;
+ end;
+ Tmp1=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ Out=Mixjoin(Out,Tmp1);
+ CRVSFHIDDENDATA=Mixjoin(CRVSFHIDDENDATA,HIDDENDATA);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.bin
new file mode 100644
index 00000000..98b1a53c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.sci
new file mode 100755
index 00000000..8c2b6eee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspData.sci
@@ -0,0 +1,7 @@
+// 08.09.10
+
+function Out=CuspData()
+ global CUSPDATA
+ Out=CUSPDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.bin
new file mode 100644
index 00000000..8d097887
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.sci
new file mode 100755
index 00000000..33f1d807
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspPt.sci
@@ -0,0 +1,7 @@
+// 08.09.10
+
+function Out=CuspPt()
+ global CUSPPT
+ Out=CUSPPT;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.bin
new file mode 100644
index 00000000..a3855489
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.sci
new file mode 100755
index 00000000..07cbb09b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/CuspSplitPt.sci
@@ -0,0 +1,7 @@
+// 08.09.10
+
+function PL=CuspSplitPt()
+ global CUSPSPLITPT
+ PL=CUSPSPLITPT;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.bin
new file mode 100644
index 00000000..ae85baa1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.sci
new file mode 100755
index 00000000..0ea935b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpara.sci
@@ -0,0 +1,179 @@
+// 08.09.10
+// 08.09.13
+// 08.09.15
+// 08.10.10
+// 10.02.16 Eps
+// 13.10.21 ( __ added to varibles )
+// 14.06.28 debug in the case of no cusp
+
+function OutkL__=Cuspsplitpara(varargin);
+ global CUSPSPLITPT;
+ Nargs__=length(varargin);
+ Gdxy__=varargin(1);
+ if Mixtype(Gdxy__)==1
+ Gdxy__=Mix(Gdxy__);
+ end;
+ Fd__=varargin(2);
+ FdL__=Fullformfunc(Fd__);
+ Eps0__=10^(-5);
+ Eps__=0.05;
+ if Nargs__>2 Eps__=varargin(3); end;
+ if length(Eps__)>1 //
+ Eps__=Eps__(1);
+ end; //
+ Fxy__=Mixop(1,FdL__); N__=2;
+ Tmp1__=Mixop(2,FdL__);
+ Tmp2__=Mixop(3,FdL__);
+ Tmp3__=Mixop(4,FdL__);
+ Xyzstr__=[Tmp1__,Tmp2__,Tmp3__];
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ CUSPSPLITPT=[];
+ OutkL__=[];
+ for Ng__=1:Mixlength(Gdxy__)
+ PtxyL__=Mixop(Ng__,Gdxy__);
+ PtkL__=[];
+ PthL__=[];
+ for I__=1:size(PtxyL__,1)
+ Tmp__=PtxyL__(I__,:);
+ Tmp1__=Uname__+'='+string(Tmp__(1));
+ execstr(Tmp1__);
+ Tmp1__=Vname__+'='+string(Tmp__(2))
+ execstr(Tmp1__);
+ Tmp2__=evstr(Xyzstr__);
+ Tmp3__=Parapt(Tmp2__);
+ if I__==1
+ PtkL__=[Tmp2__];
+ PthL__=[Tmp3__];
+ else
+ Tmp4__=PthL__(size(PthL__,1),:);
+ if norm(Tmp3__-Tmp4__)>Eps0__
+ PtkL__=[PtkL__;Tmp2__];
+ PthL__=[PthL__;Tmp3__]
+ end;
+ end;
+ end;
+ if size(PthL__,1)==0 then // from 20140628
+ OutkL__=[];
+ return;
+ end; // upto 20140628
+ Ps__=PthL__(1,:); Pe__=PthL__(size(PthL__,1),:);
+ Cflg__=0;
+ if norm(Ps__-Pe__)<Eps__ Cflg__=1; end;
+ CuspL__=[];
+ Cva__=cos(10*%pi/180);
+ for I__=1:size(PthL__,1)-1
+ if size(PthL__,1)==2 break; end;
+ Tmp__=PthL__(I__,:);
+ if I__==1
+ if Cflg__==0 continue; end;
+ Tmp1__=PthL__(size(PthL__,1)-1,:);
+ else
+ Tmp1__=PthL__(I__-1,:);
+ end;
+ Tmp2__=PthL__(I__+1,:);
+ V1__=Tmp__-Tmp1__;
+ V2__=Tmp2__-Tmp__;
+ Tmp3__=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp3__=Tmp3__/(norm(V1__)*norm(V2__));
+ Cuspflg__=0;
+ if Tmp3__<Cva__
+ P__=PthL__(I__,:);
+ Kaku__=acos(Tmp3__)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Kaku__=-Kaku__
+ end;
+ Cuspflg__=0;
+ for J__=I__+1:size(PthL__,1)-1
+ if abs(Kaku__)>90
+ Cuspflg__=1;
+ break
+ end;
+ Q__=PthL__(J__,:);
+ if norm(P__-Q__)>Eps__
+ break
+ end;
+ V1__=Q__-PthL__(J__-1,:);
+ V2__=PthL__(J__+1,:)-Q__;
+ Tmp3__=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp3__=Tmp3__/(norm(V1__)*norm(V2__));
+ Tmp__=acos(Tmp3__)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Tmp__=-Tmp__
+ end;
+ Kaku__=Kaku__+Tmp__
+ end;
+ if Cuspflg__==1
+ Tmp__=Trunc((I__+J__)*0.5);
+ I__=J__;
+ if length(CuspL__)==0
+ CuspL__=[Tmp__]
+ else
+ CuspL__=[CuspL__,Tmp__];
+ end;
+ end;
+ end;
+ end;
+ if Cflg__==0
+ CuspL__=[1,CuspL__,size(PthL__,1)];
+ elseif length(CuspL__)==0
+ CuspL__=[1,size(PthL__,1)];
+ elseif CuspL__(1)==1
+ CuspL__=[CuspL__,size(PthL__,1)];
+ else
+ Tmp__=CuspL__(1);
+ Tmp1__=size(PthL__,1);
+ PthL__=[PthL__(Tmp__:Tmp1__,:);PthL__(2:Tmp__,:)];
+ PtkL__=[PtkL__(Tmp__:Tmp1__,:);PtkL__(2:Tmp__,:)];
+ CuspL__=CuspL__-Tmp__+1;
+ CuspL__=[CuspL__,size(PthL__,1)];
+ end;
+ if length(CuspL__)==2
+ //Outh=[plot(PthL__)];
+ Tmp4__=PthL__(size(PthL__,1),:);
+ if size(PtkL__,1)>=2
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp4__);
+ OutkL__=Mixadd(OutkL__,PtkL__);
+ end;
+ continue
+ end;
+ //Outh=[];
+ Outk__=[];
+ Is__=1;
+ for I__=1:length(CuspL__)-1
+ Tmp1__=CuspL__(Is__); Tmp2__=CuspL__(I__+1);
+ Tmp3__=PthL__(Tmp1__,:); Tmp4__=PthL__(Tmp2__,:);
+ if norm(Tmp3__-Tmp4__)>Eps__
+ //Tmph__=[op(Tmp1__..Tmp2__,PthL__)];
+ Tmpk__=PtkL__(Tmp1__:Tmp2__,:);
+ //Outh=[op(Outh),plot(Tmph__)];
+ Outk__=Mixadd(Outk__,Tmpk__);
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp4__);
+ Is__=I__+1;
+ end;
+ end;
+ OutkL__=Mixjoin(OutkL__,Outk__);
+ end;
+ Tmp1__=Dropnumlistcrv(Projpara(OutkL__),Eps__*0.5);
+ Tmp__=[];
+ for I__=1:Mixlength(OutkL__)
+ Tmp2__=Mixop(I__,OutkL__);
+ Tmp3__=Mixop(I__,Tmp1__);
+ Tmp4__=[];
+ for J__=1:length(Tmp3__)
+ Tmp5__=Tmp2__(Tmp3__(J__),:);
+ Tmp4__=[Tmp4__;Tmp5__];
+ end;
+ if Tmp4__~=[]
+ Tmp__=Mixadd(Tmp__,Tmp4__);
+ end;
+ end;
+ OutkL__=Tmp__;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.bin
new file mode 100644
index 00000000..4f20be30
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.sci
new file mode 100755
index 00000000..a8221f5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cuspsplitpers.sci
@@ -0,0 +1,176 @@
+// 08.09.21
+// 08.10.10
+// 10.02.16 Eps__
+// 13.11.01 ( __ added to varibles )
+// 14.06.28 debug in the case of no cusp
+
+function OutkL__=Cuspsplitpers(varargin);
+ global CUSPSPLITPT;
+ Nargs__=length(varargin);
+ Gdxy__=varargin(1);
+ if Mixtype(Gdxy__)==1
+ Gdxy__=Mix(Gdxy__);
+ end;
+ Fd__=varargin(2);
+ FdL__=Fullformfunc(Fd__);
+ Eps__0=10^(-5);
+ Eps__=0.05;
+ if Nargs__>2 Eps__=varargin(3); end;
+ if length(Eps__)>1 //
+ Eps__=Eps__(1);
+ end; //
+ Fxy__=Mixop(1,FdL__); N=2;
+ Tmp__1=Mixop(2,FdL__);
+ Tmp__2=Mixop(3,FdL__);
+ Tmp__3=Mixop(4,FdL__);
+ Xyzstr__=[Tmp__1,Tmp__2,Tmp__3];
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ CUSPSPLITPT=[];
+ OutkL__=[];
+ for Ng__=1:Mixlength(Gdxy__)
+ PtxyL__=Mixop(Ng__,Gdxy__);
+ PtkL__=[];
+ PthL__=[];
+ for I__=1:size(PtxyL__,1)
+ Tmp__=PtxyL__(I__,:);
+ Tmp__1=Uname__+'='+string(Tmp__(1));
+ execstr(Tmp__1);
+ Tmp__1=Vname__+'='+string(Tmp__(2))
+ execstr(Tmp__1);
+ Tmp__2=evstr(Xyzstr__);
+ Tmp__3=Perspt(Tmp__2);
+ if I__==1
+ PtkL__=[Tmp__2];
+ PthL__=[Tmp__3];
+ else
+ Tmp__4=PthL__(size(PthL__,1),:);
+ if norm(Tmp__3-Tmp__4)>Eps__0
+ PtkL__=[PtkL__;Tmp__2];
+ PthL__=[PthL__;Tmp__3]
+ end;
+ end;
+ end;
+ if size(PthL__,1)==0 then // from 20140628
+ OutkL__=[];
+ return;
+ end; // upto 20140628
+ Ps__=PthL__(1,:); Pe=PthL__(size(PthL__,1),:);
+ Cflg__=0;
+ if norm(Ps__-Pe)<Eps__ Cflg__=1; end;
+ CuspL__=[];
+ Cva__=cos(10*%pi/180);
+ for I__=1:size(PthL__,1)-1
+ if size(PthL__,1)==2 break; end;
+ Tmp__=PthL__(I__,:);
+ if I__==1
+ if Cflg__==0 continue; end;
+ Tmp__1=PthL__(size(PthL__,1)-1,:);
+ else
+ Tmp__1=PthL__(I__-1,:);
+ end;
+ Tmp__2=PthL__(I__+1,:);
+ V1__=Tmp__-Tmp__1;
+ V2__=Tmp__2-Tmp__;
+ Tmp__3=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp__3=Tmp__3/(norm(V1__)*norm(V2__));
+ Cuspflg__=0;
+ if Tmp__3<Cva__
+ P__=PthL__(I__,:);
+ Kaku__=acos(Tmp__3)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Kaku__=-Kaku__
+ end;
+ Cuspflg__=0;
+ for J__=I__+1:size(PthL__,1)-1
+ if abs(Kaku__)>90
+ Cuspflg__=1;
+ break
+ end;
+ Q__=PthL__(J__,:);
+ if norm(P__-Q__)>Eps__
+ break
+ end;
+ V1__=Q__-PthL__(J__-1,:);
+ V2__=PthL__(J__+1,:)-Q__;
+ Tmp__3=V1__(1)*V2__(1)+V1__(2)*V2__(2);
+ Tmp__3=Tmp__3/(norm(V1__)*norm(V2__));
+ Tmp__=acos(Tmp__3)*180/%pi;
+ if V1__(1)*V2__(2)-V1__(2)*V2__(1)<0
+ Tmp__=-Tmp__
+ end;
+ Kaku__=Kaku__+Tmp__
+ end;
+ if Cuspflg__==1
+ Tmp__=Trunc((I__+J__)*0.5);
+ I__=J__;
+ if length(CuspL__)==0
+ CuspL__=[Tmp__]
+ else
+ CuspL__=[CuspL__,Tmp__];
+ end;
+ end;
+ end;
+ end;
+ if Cflg__==0
+ CuspL__=[1,CuspL__,size(PthL__,1)];
+ elseif length(CuspL__)==0
+ CuspL__=[1,size(PthL__,1)];
+ elseif CuspL__(1)==1
+ CuspL__=[CuspL__,size(PthL__,1)];
+ else
+ Tmp__=CuspL__(1);
+ Tmp__1=size(PthL__,1);
+ PthL__=[PthL__(Tmp__:Tmp__1,:);PthL__(2:Tmp__,:)];
+ PtkL__=[PtkL__(Tmp__:Tmp__1,:);PtkL__(2:Tmp__,:)];
+ CuspL__=CuspL__-Tmp__+1;
+ CuspL__=[CuspL__,size(PthL__,1)];
+ end;
+ if length(CuspL__)==2
+ //Outh__=[plot(PthL__)];
+ Tmp__4=PthL__(size(PthL__,1),:);
+ if size(PtkL__,1)>=2
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp__4);
+ OutkL__=Mixadd(OutkL__,PtkL__);
+ end;
+ continue
+ end;
+ //Outh__=[];
+ Outk__=[];
+ Is__=1;
+ for I__=1:length(CuspL__)-1
+ Tmp__1=CuspL__(Is__); Tmp__2=CuspL__(I__+1);
+ Tmp__3=PthL__(Tmp__1,:); Tmp__4=PthL__(Tmp__2,:);
+ if norm(Tmp__3-Tmp__4)>Eps__
+ //Tmp__h=[op(Tmp__1..Tmp__2,PthL__)];
+ Tmp__k=PtkL__(Tmp__1:Tmp__2,:);
+ //Outh__=[op(Outh__),plot(Tmp__h)];
+ Outk__=Mixadd(Outk__,Tmp__k);
+ CUSPSPLITPT=Mixadd(CUSPSPLITPT,Tmp__4);
+ Is__=I__+1;
+ end;
+ end;
+ OutkL__=Mixjoin(OutkL__,Outk__);
+ end;
+ Tmp__1=Dropnumlistcrv(Projpers(OutkL__),Eps__*0.5);
+ Tmp__=[];
+ for I__=1:Mixlength(OutkL__)
+ Tmp__2=Mixop(I__,OutkL__);
+ Tmp__3=Mixop(I__,Tmp__1);
+ Tmp__4=[];
+ for J__=1:length(Tmp__3)
+ Tmp__5=Tmp__2(Tmp__3(J__),:);
+ Tmp__4=[Tmp__4;Tmp__5];
+ end;
+ if Tmp__4~=[]
+ Tmp__=Mixadd(Tmp__,Tmp__4);
+ end;
+ end;
+ OutkL__=Tmp__;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.bin
new file mode 100644
index 00000000..48b89428
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.sci
new file mode 100755
index 00000000..fa26b319
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Cutsf2d.sci
@@ -0,0 +1,14 @@
+// 08.10.15
+
+function Out=Cutsf2d(Nvec,GL,Flg)
+ global THETA PHI
+ Theta=THETA; Phi=PHI;
+ Tmp=Rotate3data(GL,Nvec,[-1,0,0]);
+ THETA=%pi/2; PHI=0;
+ Out=Projpara(Tmp);
+ if Flg==1
+ Windisp(Out);
+ end;
+ THETA=Theta; PHI=Phi;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.bin
new file mode 100644
index 00000000..b20f8311
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.sci
new file mode 100644
index 00000000..1df8e5e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dashline.sci
@@ -0,0 +1,31 @@
+// 08.05.21
+// 08.07.14
+// 10.01.02 bin remade
+// 10.11.13 Flattenlist used
+
+function Dashline(varargin)
+ global MilliIn
+ Nargs=length(varargin);
+ Nall=Nargs; Sen=1 ; Gap=1;
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1 & Tmp>0
+ Tmp1=varargin(Nall-1);
+ if type(Tmp1)==1 & length(Tmp1)==1 & Tmp1>0
+ Sen=Tmp1; Gap=Tmp;
+ Nall=Nall-2;
+ else
+ Sen=Tmp; Gap=Sen;
+ Nall=Nall-1;
+ end
+ end
+ Sen=1000/2.54/MilliIn*Sen;
+ Gap=1000/2.54/MilliIn*Gap;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Fdata=Flattenlist(Tmp);
+ for I=1:length(Fdata);
+ Figdata=Fdata(I);
+ Makehasen(Figdata,Sen,Gap,0);
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.bin
new file mode 100644
index 00000000..fc463260
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.sci
new file mode 100755
index 00000000..82e9ac48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dataindex.sci
@@ -0,0 +1,24 @@
+//
+// 08.05.31
+
+function Ndm=Dataindex(P)
+ // %inf;%inf -> end
+ Ndm=[];
+ if P==[] return; end
+ N1=1;
+ Flg=0;
+ for J=1:size(P,1)
+ if P(J,1)==%inf
+ Ndm=[Ndm;N1,J-1];
+ N1=J+1;
+ if P(N1,1)==%inf
+ Flg=1;
+ break;
+ end
+ end
+ end
+ if Flg==0
+ Ndm=[Ndm;N1,size(P,1)];
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.bin
new file mode 100644
index 00000000..5069d551
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.sci
new file mode 100644
index 00000000..b06ac44b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Definecolor.sci
@@ -0,0 +1,23 @@
+// 15.05.04
+
+function Definecolor(Name,Data)
+ Tmp1=size(Data,2);
+ if Tmp1<3 | Tmp1>4
+ disp("Size of data should be 3 or 4.");
+ return;
+ end;
+ if Tmp1==4
+ Tp="cmyk"
+ else
+ Tp="rgb"
+ end;
+ Tmp="";
+ for J=1:Tmp1
+ Tmp=Tmp+string(Data(J));
+ if J<Tmp1
+ Tmp=Tmp+",";
+ end;
+ end
+ Tmp="\definecolor{"+Name+"}{"+Tp+"}{"+Tmp+"}";
+ Texcom(Tmp);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.bin
new file mode 100644
index 00000000..1935267f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.sci
new file mode 100755
index 00000000..43d8ea6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Deqplot.sci
@@ -0,0 +1,195 @@
+
+// 08.09.22
+// 09.03.10
+// 09.10.09 ( ` and order )
+// 09.10.09b ( system )
+// 09.11.12 ( debug for x<0 )
+// 13.10.19 ( __ added to variables )
+// 15.11.16 N changed to number of intervals
+// 15.12.08 bug of optiion ( __ ) fixed
+
+function P__=Deqplot(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs__=length(varargin);
+ Eps__=10^(-5);
+ Fnstr__=varargin(1);
+ Fnstr__=strsubst(Fnstr__,Prime(),'`');
+ K__=mtlb_findstr(Fnstr__,'=');
+ Str__=part(Fnstr__,1:(K__-1));
+ Fnstr__=part(Fnstr__,(K__+1):length(Fnstr__));
+ JL__=mtlb_findstr(Str__,'`');
+ Yname__=part(Str__,1:(JL__(1)-1));
+ Yname__=strsubst(Yname__,',',';');
+ Tmp__=mtlb_findstr(Yname__,';');
+ if length(Tmp__)>0
+ Dim__=length(Tmp__)+1;
+ Order__=1;
+ Fnstr__=strsubst(Fnstr__,',',';');
+ else
+ Dim__=1;
+ Order__=length(JL__);
+ end;
+ Rgstr__=varargin(2);
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Xname__=part(Rgstr__,1:K__-1);
+ Rng__=evstr(part(Rgstr__,K__+1:length(Rgstr__)));
+ else
+ Xname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end;
+ X0__=varargin(3);
+ Y0__=varargin(4);
+ if size(Y0__,2)>1
+ Y0__=Y0__';
+ end;
+ N__=50;
+ if Nargs__>=5
+ Tmp__=varargin(5);
+ Tmp__=strsubst(Tmp__,"=","__="); // 15.12.08
+ Tmp__=strsubst(Tmp__,"____","__");
+ execstr(Tmp__);
+ end;
+ X1__=Rng__(1); X2__=Rng__(2);
+ dX__=(X2__-X1__)/(N__-1);
+ dX__=(X2__-X1__)/(N__); // 15.11.16
+ if Dim__>1
+ Tmp__=mtlb_findstr(Yname__,'[');
+ Data__=part(Yname__,Tmp__+1:length(Yname__));
+ Tmp__=mtlb_findstr(Data__,']');
+ Data__=part(Data__,1:Tmp__-1);
+ Data__=';'+Data__+';';
+ NL__=mtlb_findstr(Data__,';');
+ NameL__=list();
+ for I__=1:length(NL__)-1
+ Tmp__=part(Data__,NL__(I__)+1:NL__(I__+1)-1);
+ NameL__(I__)=Tmp__;
+ end;
+ Fnrep__=Fnstr__;
+ for I__=1:length(NameL__)
+ Tmp__=NameL__(I__);
+ Fnrep__=strsubst(Fnrep__,Tmp__,'Pt('+string(I__)+')');
+ end;
+ Tmp1__='Outf=Dfp__('+Xname__+',Pt)';
+ Tmp2__='Outf='+Fnrep__;
+ deff(Tmp1__,Tmp2__);
+ Y0p__=Y0__;
+ Tmp1__='Outf=Dfn__('+Xname__+',Pt)';
+ Tmp2__='Outf=-('+Fnrep__+')';
+ deff(Tmp1__,Tmp2__);
+ Y0n__=Y0__;
+ else
+ YL__=mtlb_findstr(Fnstr__,Yname__);
+ Fnrep__=part(Fnstr__,1:YL__(1)-1);
+ for I__=1:length(YL__)
+ Py__=YL__(I__);
+ J__=1;
+ K__=Py__+1;
+ while part(Fnstr__,K__:K__)=='`'
+ J__=J__+1; K__=K__+1;
+ end;
+ Fnrep__=Fnrep__+Yname__+'('+string(J__)+')';
+ if I__==length(YL__)
+ Fnrep__=Fnrep__+part(Fnstr__,K__:length(Fnstr__));
+ else
+ J__=YL__(I__+1)-1;
+ if J__>=K__
+ Fnrep__=Fnrep__+part(Fnstr__,K__:J__);
+ end;
+ end;
+ end;
+ Eqvec__='[';
+ for I__=1:Order__-1
+ Eqvec__=Eqvec__+Yname__+'('+string(I__+1)+');';
+ end;
+ Eqvec__=Eqvec__+Fnrep__+']';
+ Tmp1__='Outf=Dfp__('+Xname__+','+Yname__+')';
+ Tmp2__='Outf='+Eqvec__;
+ deff(Tmp1__,Tmp2__);
+ Y0p__=Y0__;
+ YL__=mtlb_findstr(Fnstr__,Yname__);
+ Fnrep__=part(Fnstr__,1:YL__(1)-1);
+ for I__=1:length(YL__)
+ Py__=YL__(I__);
+ J__=1;
+ K__=Py__+1;
+ while part(Fnstr__,K__:K__)=='`'
+ J__=J__+1; K__=K__+1;
+ end;
+ if modulo(J__,2)==1
+ Fnrep__=Fnrep__+Yname__+'('+string(J__)+')';
+ else
+ Fnrep__=Fnrep__+'(-'+Yname__+'('+string(J__)+'))';
+ end;
+ if I__==length(YL__)
+ Fnrep__=Fnrep__+part(Fnstr__,K__:length(Fnstr__));
+ else
+ J__=YL__(I__+1)-1;
+ if J__>=K__
+ Fnrep__=Fnrep__+part(Fnstr__,K__:J__);
+ end;
+ end;
+ end;
+ if modulo(Order__,2)==1
+ Fnrep__='-('+Fnrep__+')';
+ end;
+ Fnrep__=strsubst(Fnrep__,Xname__,'(-'+Xname__+')'); // 09.11.12
+ Eqvec__='[';
+ for I__=1:Order__-1
+ Eqvec__=Eqvec__+Yname__+'('+string(I__+1)+');';
+ end;
+ Eqvec__=Eqvec__+Fnrep__+']';
+ Tmp1__='Outf=Dfn__('+Xname__+','+Yname__+')';
+ Tmp2__='Outf='+Eqvec__;
+ deff(Tmp1__,Tmp2__);
+ Y0n__=[];
+ for I__=1:size(Y0__,1)
+ Y0n__=[Y0n__;(-1)^(I__-1)*Y0__(I__)];
+ end;
+ end;
+ if X0__<=X1__
+ X__=X1__:dX__:X2__;
+ Y__=ode(Y0p__,X0__,X__,Dfp__);
+ M__=min(size(X__,2),size(Y__,2));
+ if Dim__>1
+ PL__=Y__';
+ P__=PL__(1:M__,:);
+ else
+ P__=[X__(:,1:M__);Y__(1,1:M__)]';
+ end;
+ return;
+ end;
+ if X2__<=X0__
+ X__=(-X2__):dX__:(-X1__);
+ Y__=ode(Y0n__,-X0__,X__,Dfn__);
+ X__=-X__;
+ M__=min(size(X__,2),size(Y__,2));
+ if Dim__>1
+ PL__=Y__';
+ P__=PL__(1:M__,:);
+ else
+ P__=[X__(:,1:M__);Y__(1,1:M__)]';
+ end;
+ return;
+ end;
+ XP__=X0__:dX__:X2__;
+ YP__=ode(Y0p__,X0__,XP__,Dfp__);
+ M__=min(size(XP__,2),size(YP__,2));
+ XP__=XP__(:,1:M__);
+ YP__=YP__(:,1:M__);
+ XN__=(-X0__)+dX__:dX__:(-X1__);
+ YN__=ode(Y0n__,-X0__,XN__,Dfn__);
+ M__=min(size(XN__,2),size(YN__,2));
+ XN__=XN__(:,1:M__);
+ YN__=YN__(:,1:M__);
+ XN__=-XN__;
+ XN__=XN__(length(XN__):-1:1);
+ YN__=YN__(:,size(YN__,2):-1:1);
+ if Dim__>1
+ P__=[YN__';YP__']
+ else
+ X__=[XN__,XP__];
+ Y__=[YN__(1,:),YP__(1,:)];
+ P__=[X__;Y__]';
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.bin
new file mode 100644
index 00000000..b4f3edb7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.sci
new file mode 100755
index 00000000..cbffc3d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Derivative.sci
@@ -0,0 +1,64 @@
+// 09.10.04
+// 09.10.05
+// 09.10.06
+// 14.10.24 numderivative used after 5.5
+
+function Out=Derivative(varargin)
+ Nargs=length(varargin);
+ Out=[];
+ Fs=varargin(1);
+ Vv=varargin(2);
+ Np=3;
+ if type(Vv)==10
+ Prstr=strsubst(Vv,'[','(');
+ Prstr=strsubst(Prstr,']',')');
+ Tmp=part(Prstr,1);
+ if Tmp~='('
+ Prstr='('+Prstr+')';
+ end;
+ deff('Out=Tmpfun'+Prstr,'Out='+Fs);
+ Fs='Tmpfun'+Prstr;
+ Vv=varargin(Np);
+ Np=Np+1;
+ end;
+ Nd=[];
+ if Np<=Nargs
+ Nd=varargin(Np);
+ end;
+ Js=mtlb_findstr(Fs,'(');
+ JL=mtlb_findstr(Fs,',');
+ Je=mtlb_findstr(Fs,')');
+ Sep=[Js(1),JL,Je];
+ Fse=Fs;
+ for I=1:length(Vv)
+ J1=Sep(I)+1;
+ J2=Sep(I+1)-1;
+ Tmp1=part(Fs,J1:J2);
+ Tmp2='X_'+string(I);
+ Fse=strsubst(Fse,Tmp1,Tmp2);
+ end;
+ function Ans=Tmpf(W)
+ X1=W(1);
+ if length(W)>1
+ X2=W(2);
+ else;
+ X2=%inf;
+ end;
+ if length(W)>2
+ X3=W(3);
+ else
+ X3=%inf;
+ end;
+ Tmp=Assign(Fse,'X_1',X1,'X_2',X2,'X_3',X3);
+ Ans=evstr(Tmp)';
+ endfunction;
+ Tmp1=getversion("scilab");
+ if Tmp1(1)*10+Tmp1(2)>=55 then
+ Out=numderivative(Tmpf,Vv')';
+ else
+ Out=derivative(Tmpf,Vv')';
+ end
+ if Nd~=[]
+ Out=Out(Nd,:)
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.bin
new file mode 100644
index 00000000..8854f5a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.sci
new file mode 100644
index 00000000..b6a53b62
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Diagcelldata.sci
@@ -0,0 +1,15 @@
+// 10.03.28
+
+function Out=Diagcelldata(Tb,Nc,Nr)
+ Tmp=Findcell(Tb,Nc,Nr);
+ C=Tmp(1);
+ Dx=Tmp(2);
+ Dy=Tmp(3);
+ Pne=C+[Dx,Dy];
+ Pnw=C+[-Dx,Dy];
+ Psw=C+[-Dx,-Dy];
+ Pse=C+[Dx,-Dy];
+ Tmp1=Listplot(Pnw,Pse);
+ Tmp2=Listplot(Pne,Psw);
+ Out=list(Tmp1,Tmp2);
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.bin
new file mode 100644
index 00000000..91415a88
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.sci
new file mode 100755
index 00000000..be16b473
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividegraphics.sci
@@ -0,0 +1,20 @@
+// 08.05.31
+// 10.01.01
+// 11.01.07
+
+function OutL=Dividegraphics(Pd)
+ if length(Pd)==0
+ OutL=Pd;
+ return;
+ end;
+ DtL=Flattenlist(Pd);
+ OutL=list();
+ for J=1:length(DtL)
+ Dt= DtL(J);
+ Ndm=Dataindex(Dt);
+ for I=1:size(Ndm,1)
+ Fd=Dt(Ndm(I,1):Ndm(I,2),:);
+ OutL($+1)=Fd;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.bin
new file mode 100644
index 00000000..7b1b6ff3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.sci
new file mode 100644
index 00000000..36531da2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dividetable.sci
@@ -0,0 +1,9 @@
+// 13.05.03
+
+function Out=Dividetable(Tb)
+ G=Tb(1);
+ Gw=G(1);
+ Gt=Mixsub(Tb(2),G);
+ Gy=Mixsub(Tb(3),G);
+ Out=list(Gw,Gt,Gy)
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.bin
new file mode 100644
index 00000000..c7f08dda
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.sci
new file mode 100755
index 00000000..5054faf2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Doscaling.sci
@@ -0,0 +1,14 @@
+// 09.12.25
+
+function Out=Doscaling(G)
+ global LOGX LOGY SCALEX SCALEY;
+ GLg=G;
+ if LOGX==1
+ GLg=[log10(G(:,1)),GLg(:,2)];
+ end;
+ if LOGY==1
+ GLg=[GLg(:,1),log10(G(:,2))];
+ end;
+ Out=[SCALEX*GLg(:,1),SCALEY*GLg(:,2)];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.bin
new file mode 100644
index 00000000..489764ae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.sci
new file mode 100755
index 00000000..fc2847c7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotfilldata.sci
@@ -0,0 +1,186 @@
+// 08.05.31
+// 10.01.01
+// 10.03.07 (Kosa )
+
+function ShaL=Dotfilldata(varargin)
+ global XMIN XMAX YMIN YMAX MilliIn;
+ Nargs=length(varargin);
+ ShaL=[];
+ Eps=0.01;
+ Kakudo=45;
+ Kosa=0.5;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xmn=Tmp(1); Ymn=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ Xmx=Tmp(1); Ymx=Tmp(2);
+ for N=Nargs:-1:1
+ Tmp=varargin(N);
+ if Mixtype(Tmp)~=1
+ break
+ end
+ end
+ if N<Nargs
+ Kosa=varargin(N+1);
+ end
+// Kosa=min(Kosa,1); // 100307
+ Tmp=1/(2*Kosa);
+ Kankaku=Tmp*0.100*1000/2.54/MilliIn;
+ NaitenL=varargin(1);
+ if Mixtype(NaitenL)==1
+ NaitenL=list(NaitenL);
+ end
+ Ns=2;
+ StartP=Op(1,NaitenL);
+ if type(StartP)==10
+ StartP=[(XMIN+XMAX)/2,(YMIN+YMAX)/2];
+ else
+ StartP=Doscaling(StartP);
+ end;
+ Tmp=varargin(2);
+ if Mixtype(Tmp)==1
+ StartP=Doscaling(Tmp);
+ Ns=3;
+ end
+ Tmp=[];
+ for I=Ns:N
+ Tmp=Mixjoin(Tmp,list(varargin(I)));
+ end
+ Bdy=Kyoukai(Tmp);
+ Bdys=list();
+ for I=1:length(Bdy)
+ Tmp1=Bdy(I);
+ Tmp2=Doscaling(Tmp1);
+ Bdys=Mixjoin(Bdys,list(Tmp2))
+ end;
+ Bdy=Bdys;
+ PtnL=[];
+ for I=1:length(NaitenL)
+ Tmp=Op(I,NaitenL);
+ if type(Tmp)==1
+ Tmp1=Naigai(Tmp,Bdy)
+ PtnL=Mixjoin(PtnL,list(Tmp1));
+ else
+ if type(Tmp)~=10
+ disp('Type Error');
+ return;
+ end
+ Ptn=[];
+ for J=1:length(Tmp)
+ if Op(J,Tmp)=='i'
+ Ptn=[Ptn,1];
+ else
+ Ptn=[Ptn,0];
+ end
+ end
+ PtnL=Mixjoin(PtnL,list(Ptn));
+ end
+ end
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ if Member(Ptn,PtnL)
+ Wn=Doscaling(Framedata());
+ Bdy=Mixjoin(Bdy,list(Wn));
+ Tmp=[];
+ for I=1:Mixlength(PtnL)
+ Tmp1=[Op(I,PtnL),1];
+ Tmp=Mixjoin(Tmp,list(Tmp1));
+ end
+ PtnL=Tmp;
+ end
+ V=[cos(Kakudo*%pi/180),sin(Kakudo*%pi/180)];
+ Vm=[-sin(Kakudo*%pi/180),cos(Kakudo*%pi/180)];
+ Tmp=Op(1,NaitenL);
+ if type(Tmp)==1 & size(Tmp,2)>1
+ Delta=Tmp-StartP;
+ K=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ PA=StartP+K*Kankaku*Vm;
+ P=PA;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ I=1;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ P=PA+I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ I=I+1;
+ end
+ P=PA-Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ I=2;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ P=PA-I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ I=I+1;
+ end
+ else
+ Delta=[Xmn,Ymn]-StartP;
+ K1=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmx,Ymn]-StartP;
+ K2=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmx,Ymx]-StartP;
+ K3=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ Delta=[Xmn,Ymx]-StartP;
+ K4=Trunc(Dotprod(Delta,Vm)/Kankaku);
+ IM=max(K1,K2,K3,K4);
+ Im=min(K1,K2,K3,K4);
+ for I=Im:IM
+ P=StartP+I*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,P,V,Bdy);
+ Sha=Dividegraphics(Sha);
+ if length(Sha)>0
+ for J=1:length(Sha)
+ Tmp=Op(J,Sha);
+ Q=Tmp(1,:);
+ R=Tmp(2,:);
+ Tmp=Dotprod(Q-P,V)/Kankaku;
+ K1=ceil(Tmp);
+ if abs(K1-Tmp)<Eps K1=K1+1; end
+ Tmp=Dotprod(R-P,V)/Kankaku;
+ K2=floor(Tmp);
+ if abs(Tmp-K2)<Eps K2=K2-1; end
+ for K=K1:K2
+ Tmp1=Pointdata(P+K*Kankaku*V)
+ ShaL=Mixjoin(ShaL,list(Tmp1));
+ end
+ end
+ end
+ end
+ end
+ ShaLs=list();
+ for I=1:length(ShaL)
+ Tmp=ShaL(I);
+ Tmp1=Unscaling(Tmp);
+ ShaLs=Mixjoin(ShaLs,Tmp1);
+ end;
+ ShaL=ShaLs
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.bin
new file mode 100644
index 00000000..fe44d95c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.sci
new file mode 100755
index 00000000..dc35fde5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dotprod.sci
@@ -0,0 +1,6 @@
+// 09.10.03
+
+function Out=Dotprod(a,b)
+ Out=a*b';
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.bin
new file mode 100644
index 00000000..a678c346
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.sci
new file mode 100755
index 00000000..7e4ea8a1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedline.sci
@@ -0,0 +1,133 @@
+// 08.05.21
+// 08.11.26
+// 09.12.24 (Revised)
+// 09.12.29
+// 10.01.02
+
+function Dottedline(varargin)
+ global Wfile FID MilliIn PenThick PenThickInit
+ Nall=length(varargin);
+ Nagasa=0.1;
+ Ookisa=PenThick;
+ I=Nall;
+ Tmp=varargin(I);
+ while type(Tmp)==1 & length(Tmp)==1
+ I=I-1;
+ Tmp=varargin(I);
+ end
+ if I==Nall-1
+ Nagasa=Nagasa*varargin(Nall);
+ Nall=Nall-1;
+ end
+ if I==Nall-2
+ Nagasa=Nagasa*varargin(Nall-1);
+ Ookisa=round(Ookisa*varargin(Nall));
+ Nall=Nall-2;
+ end
+ Nagasa=1000/2.54/MilliIn*Nagasa;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Pdata=Flattenlist(Tmp); //
+ for II=1:Mixlength(Pdata)
+ Clist=MakeCurves(Op(II,Pdata));
+ DinM=Dataindex(Clist);
+ for n=1:size(DinM,1)
+ Tmp=DinM(n,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Len=0;
+ Lenlist=[0];
+ for I=2:size(Data,1)
+ Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
+ Lenlist=[Lenlist,Len];
+ end
+ Lenall=Lenlist(length(Lenlist));
+ if Lenall==0
+ continue
+ end
+ Naga=Nagasa;
+ Nten=round(Lenall/Naga)+1;
+ if Nten>1
+ Seg=Lenall/(Nten-1);
+ else
+ Seg=Lenall;
+ end
+ Eps=10^(-6)*Seg;
+ PPd=[];
+ Hajime=1;
+ for I=0:Nten-1
+ Len=Seg*I;
+ if I>0
+ J=Hajime;
+ while Len>=Lenlist(J)+Eps
+ J=J+1;
+ end
+ Hajime=J-1;
+ end
+ T=(Len-Lenlist(Hajime))...
+ /(Lenlist(Hajime+1)-Lenlist(Hajime));
+ P=Data(Hajime,:)+T*(Data(Hajime+1,:)...
+ -Data(Hajime,:));
+ PPd=[PPd;P];
+ if I==Nten-1
+ if norm(P-Data(1,:))<Eps
+ continue
+ end
+ end
+ end
+ Str='\special{pn '+string(Ookisa)+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ for I=1:size(PPd,1)
+ P=PPd(I,:);
+ if size(PPd,1)==1
+ V=[1,0];
+ elseif I==1
+ Tmp=PPd(I+1,:)-P;
+ V=1/norm(Tmp)*Tmp;
+ elseif I==size(PPd,1)
+ Tmp= P-PPd(I-1,:);
+ V=1/norm(Tmp)*Tmp;
+ else
+ Tmp1=PPd(I+1,:)-P;
+ Tmp2=P-PPd(I-1,:);
+ Tmp3=1/norm(Tmp1)*Tmp1+1/norm(Tmp2)*Tmp2;
+ V=1/norm(Tmp3)*Tmp3;
+ end;
+ Tmp=round(MilliIn*P(1)-1/2*Ookisa*V(1));
+ X=string(Tmp);
+ Tmp=-round(MilliIn*P(2)-1/2*Ookisa*V(2));
+ Y=string(Tmp);
+ Str='\special{pa '+X+' '+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Tmp=round(MilliIn*P(1)+1/2*Ookisa*V(1));
+ X=string(Tmp);
+ Tmp=-round(MilliIn*P(2)+1/2*Ookisa*V(2));
+ Y=string(Tmp);
+ Str='\special{pa '+X+' '+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ mprintf('%s','\special{fp}');
+ if modulo(I,2)==0
+ mprintf('%s\n','%');
+ end;
+ else
+ mfprintf(FID,'%s',Str);
+ mfprintf(FID,'%s','\special{fp}');
+ if modulo(I,2)==0
+ mfprintf(FID,'%s\n','%');
+ end;
+ end
+ end
+ end
+ end;
+ end;
+ Tmp=PenThick/PenThickInit;
+ Setpen(Tmp);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.bin
new file mode 100644
index 00000000..5871fcc7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.sci
new file mode 100755
index 00000000..c4d9b86a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dottedlineold.sci
@@ -0,0 +1,115 @@
+// 08.05.21
+// 08.11.26
+
+function Dottedline(varargin)
+ global Wfile FID MilliIn;
+ Nall=length(varargin);
+ Nagasa=0.1;
+ Ookisa=0.02*0.5;
+ I=Nall;
+ Tmp=varargin(I);
+ while type(Tmp)==1 & length(Tmp)==1
+ I=I-1;
+ Tmp=varargin(I);
+ end
+ if I==Nall-1
+ Nagasa=Nagasa*varargin(Nall);
+ Nall=Nall-1;
+ end
+ if I==Nall-2
+ Nagasa=Nagasa*varargin(Nall-1);
+ Ookisa=Ookisa*varargin(Nall);
+ Nall=Nall-2;
+ end
+ Nagasa=1000/2.54/MilliIn*Nagasa;
+ Ookisa=1000/2.54/MilliIn*Ookisa;
+ CL=[];
+ Nk=4;
+ Tmp=Framedata([0,0],Ookisa/2);
+ CL=Tmp;
+ for N=1:Nall
+ Pdata=varargin(N);
+ if Mixtype(Pdata)==1
+ Pdata=MixS(Pdata);
+ end
+ for II=1:Mixlength(Pdata)
+ Clist=MakeCurves(Op(II,Pdata));
+ DinM=Dataindex(Clist);
+ for n=1:size(DinM,1)
+ Tmp=DinM(n,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Len=0;
+ Lenlist=[0];
+ for I=2:size(Data,1)
+ Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
+ Lenlist=[Lenlist,Len];
+ end
+ Lenall=Lenlist(length(Lenlist));
+ if Lenall==0
+ continue
+ end
+ Naga=Nagasa;
+ Nten=round(Lenall/Naga)+1;
+ if Nten>1
+ Seg=Lenall/(Nten-1);
+ else
+ Seg=Lenall;
+ end
+ Eps=10^(-6)*Seg;
+ Hajime=1;
+ for I=0:Nten-1
+ Len=Seg*I;
+ if I>0
+ J=Hajime;
+ while Len>=Lenlist(J)+Eps
+ J=J+1;
+ end
+ Hajime=J-1;
+ end
+ T=(Len-Lenlist(Hajime))...
+ /(Lenlist(Hajime+1)-Lenlist(Hajime));
+ P=Data(Hajime,:)+T*(Data(Hajime+1,:)...
+ -Data(Hajime,:));
+ if I==Nten-1
+ if Vecnagasa(P-Data(1,:))<Eps
+ continue
+ end
+ end
+ PL=[];
+ for J=1:size(CL,1)
+ PL=[PL;P+CL(J,:)];
+ end
+ Mojisu=0;
+ for J=1:size(PL,1)
+ Q=PL(J,:);
+ X=round(MilliIn*Q(1));
+ X=string(X);
+ Y=-round(MilliIn*Q(2));
+ Y=string(Y);
+ Str='\special{pa '+X+" "+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ Str='\special{sh 1}'+'\special{fp}%'
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ end
+ end
+ end
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.bin
new file mode 100644
index 00000000..9777c32b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.sci
new file mode 100755
index 00000000..3a06be00
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Dropnumlistcrv.sci
@@ -0,0 +1,34 @@
+// 08.09.10
+// 08.09.15
+// 08.10.10
+// 10.09.03
+
+function OutL=Dropnumlistcrv(QdL,Eps)
+ Eps0=10^(-6); //
+ if Mixtype(QdL)==1
+ PdL=list(QdL);
+ else
+ PdL=QdL;
+ end;
+ OutL=[];
+ for I=1:Mixlength(PdL)
+ Pd=Op(I,PdL);
+ PtL=[1];
+ P=Pd(1,:);
+ for K=2:size(Pd,1)-1 //
+ if norm(P-Pd(K,:))>Eps
+ PtL=[PtL,K];
+ P=Pd(K,:);
+ end;
+ end;
+ // PtL=[PtL,size(Pd,1)];
+ K=size(Pd,1) //
+ if norm(P-Pd(K,:))>Eps0 //
+ PtL=[PtL,K]; //
+ end; //
+ if length(PtL)==1
+ PtL=[];
+ end;
+ OutL=Mixadd(OutL,PtL);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.bin
new file mode 100644
index 00000000..cf57e835
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.sci
new file mode 100755
index 00000000..84fd6daa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Droppoint.sci
@@ -0,0 +1,28 @@
+// 08.10.07
+// 08.10.27
+// 09.06.02
+
+function AnsL=Droppoint(varargin)
+ Nargs=length(varargin);
+ Curve=varargin(1);
+ Eps=0.02;
+ if Nargs>=2
+ Eps=varargin(2);
+ end;
+ AnsL=[%inf,%inf];
+ for I=1:size(Curve,1)
+ P=Curve(I,:);
+ if P(1)~=%inf
+ Tmp=AnsL(size(AnsL,1),:);
+ if norm(P-Tmp)>Eps
+ AnsL=[AnsL;P];
+ end;
+ else
+ AnsL=[AnsL;%inf,%inf];
+ end;
+ end;
+ AnsL=AnsL(2:size(AnsL,1),:);
+ Tmp=Ptend(Curve);
+ AnsL=[AnsL(1:size(AnsL,1)-1,:);Tmp];
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.bin
new file mode 100644
index 00000000..071b7070
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.sci
new file mode 100755
index 00000000..2ec407ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwline.sci
@@ -0,0 +1,71 @@
+// 08.05.21
+
+function Drwline(varargin)
+ global Wfile FID MilliIn PenThick PenThickInit;
+ Nall=length(varargin);
+ Thick=0;
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1
+ Thick=round(varargin(Nall)*PenThickInit);
+ Str='\special{pn '+string(Thick)+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ Nall=Nall-1;
+ end
+ for N=1:Nall
+ Tmp=varargin(N);
+ Pdata=Flattenlist(Tmp);
+ for II=1:length(Pdata)
+ Clist=MakeCurves(Op(II,Pdata));
+ DinM=Dataindex(Clist);
+ for n=1:size(DinM,1)
+ Tmp=DinM(n,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Mojisu=0;
+ for I=1:size(Data,1)
+ Tmp=Data(I,:);
+ X=round(MilliIn*Tmp(1));
+ X=string(X);
+ Y=-round(MilliIn*Tmp(2));
+ Y=string(Y);
+ Str='\special{pa '+X+" "+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%c\n','%');
+ else
+ mfprintf(FID,'%c\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ if Mojisu~=0
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end;
+ if Wfile=='default'
+ mprintf('%s\n','\special{fp}%');
+ else
+ mfprintf(FID,'%s\n','\special{fp}%');
+ end
+ end
+ end
+ end;
+ Str='%';
+ if Thick>0
+ Tmp=PenThick/PenThickInit; // modified
+ Setpen(Tmp);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.bin
new file mode 100644
index 00000000..198c0c88
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.sci
new file mode 100755
index 00000000..5cb45c6f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwpt.sci
@@ -0,0 +1,75 @@
+//
+// 08.05.31
+// 09.12.25
+// 10.01.01
+
+function Drwpt(varargin)
+ global Wfile FID TenSize TenSizeInit MilliIn;
+ Nargs=length(varargin);
+ if TenSize>TenSizeInit
+ N=round(6*sqrt(TenSize/TenSizeInit));
+ else
+ N=4
+ end
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1
+ if length(Tmp)>1
+ Kosa=1; All=Nargs;
+ else
+ Kosa=Tmp; All=Nargs-1;
+ end;
+ elseif type(Tmp)==15
+ Kosa=1; All=Nargs;
+ end;
+ CL=[];
+ for J=0:N
+ Tmp=TenSize*0.5*1000/2.54/MilliIn;
+ Tmp=Tmp*[cos(%pi/4+J*2*%pi/N),sin(%pi/4+J*2*%pi/N)];
+ CL=[CL;Tmp];
+ end
+ for II=1:All
+ Tmp=varargin(II);
+ MS=Flattenlist(Tmp); // 11.05.29
+ for I=1:length(MS);
+ P=Op(I,MS);
+ if InWindow(P)~='i'
+ continue
+ end
+ P=Doscaling(P);
+ PL=[];
+ for J=0:N
+ PL=[PL;P+CL(J+1,:)];
+ end;
+ Mojisu=0;
+ for J=1:size(PL,1)
+ Q=PL(J,:);
+ X=string(round(MilliIn*Q(1)));
+ Y=string(-round(MilliIn*Q(2)));
+ Str='\special{pa '+X+' '+Y+'}'
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ Mojisu=0;
+ end
+ end;
+ Str1='\special{sh '+string(Kosa)+'}';
+ Str2='\special{fp}%';
+ if Wfile=='default'
+ mprintf('%s',Str1);
+ mprintf('%s\n',Str2);
+ else
+ mfprintf(FID,'%s',Str1);
+ mfprintf(FID,'%s\n',Str2);
+ end
+ end
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.bin
new file mode 100644
index 00000000..42407401
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.sci
new file mode 100755
index 00000000..b091754f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Drwxy.sci
@@ -0,0 +1,17 @@
+function Drwxy(varargin)
+ global XMIN XMAX YMIN YMAX GENTEN ARROWSIZE
+ global ZIKU XNAME XPOS YNAME YPOS ONAME OPOS ULEN;
+ Nargs=length(varargin)
+ Tmp=mtlb_findstr(ZIKU,'arrow');
+ if Tmp~=[]
+ Arrowline([XMIN,GENTEN(2)],[XMAX,GENTEN(2)],ARROWSIZE);
+ Arrowline([GENTEN(1),YMIN],[GENTEN(1),YMAX],ARROWSIZE);
+ else
+ Drwline(Listplot([XMIN,GENTEN(2)],[XMAX,GENTEN(2)]));
+ Drwline(Listplot([GENTEN(1),YMIN],[GENTEN(1),YMAX]));
+ end;
+ Letter([XMAX,GENTEN(2)],XPOS,XNAME);
+ Letter([GENTEN(1),YMAX],YPOS,YNAME);
+ Letter(GENTEN,OPOS,ONAME);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.bin
new file mode 100644
index 00000000..dd1bf063
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.sci
new file mode 100755
index 00000000..9b67e366
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Embed.sci
@@ -0,0 +1,41 @@
+// 09.09.25
+// 09.11.21
+// 09.11.26
+
+function Out=Embed(varargin)
+ Nargs=length(varargin);
+ Pd3=varargin(1);
+ if Mixtype(Pd3)==1
+ Pd3=list(Pd3);
+ elseif Mixtype(Pd3)==3
+ Tmp=list();
+ for I=1:length(Pd3)
+ Tmp=Mixjoin(Tmp,Pd3(I));
+ end;
+ Pd3=Tmp;
+ end;
+ Tmpf=varargin(2);
+ if type(Tmpf)==10
+ Tmp=varargin(3);
+ Tmp1=strsubst(Tmp,'[','(');
+ Vstr=strsubst(Tmp1,']',')');
+ deff('Z=Tmpfn'+Vstr,'Z='+Tmpf);
+ else
+ Tmpfn=Tmpf;
+ end;
+ Out=list();
+ for I=1:length(Pd3)
+ PD=Pd3(I);
+ Ans=[];
+ for J=1:size(PD,1)
+ P=PD(J,:);
+ Tmp=Tmpfn(P(1),P(2));
+ Ans=[Ans;Tmp];
+ end;
+ Out($+1)=Ans;
+ end;
+ if length(Out)==1
+ Out=Out(1);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.bin
new file mode 100644
index 00000000..d9d9c1bf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.sci
new file mode 100755
index 00000000..bfc191b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Enclosing.sci
@@ -0,0 +1,23 @@
+// 08.05.31
+// 10.12.04
+// 16.12.05 to make it a closed curve
+
+function AnsL=Enclosing(varargin)
+ global MilliIn;
+ Eps=10^(-7); // 12.05
+ Nargs=length(varargin);
+ P=varargin(1);
+ if Mixtype(P)==2
+ Tmp=Op(1,P);
+ if type(Tmp)~=1 | length(Tmp)~=1
+ AnsL=EnclosingS(P,varargin(2:Nargs));
+ AnsL=Joincrvs(AnsL) // 10.12.04
+ end
+ end;
+ Tmp1=Op(1,AnsL);
+ Tmp2=Op(size(AnsL,1),AnsL);
+ if norm(Tmp2-Tmp1)>Eps then // 12.05
+ AnsL=[AnsL;Tmp1];
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.bin
new file mode 100644
index 00000000..6e120c8d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.sci
new file mode 100755
index 00000000..cded7ef2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/EnclosingS.sci
@@ -0,0 +1,126 @@
+// 08.05.31
+// 08.11.12
+// 09.10.12
+// 09.10.14
+// 15.04.10
+
+function AnsL=EnclosingS(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ AnsL=[];
+ PdataL=varargin(1);
+ Nall=length(PdataL);
+ Eps=10^(-3);
+ EEps=0.1;
+ S=[];
+ Flg=0;
+ for I=2:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1 & size(Tmp,1)==1 & size(Tmp,2)>1
+ S=Tmp;
+ end
+ if type(Tmp)==1 & length(Tmp)==1
+ if Flg==0
+ Eps=Tmp;
+ Flg=Flg+1
+ else
+ EEps=Tmp
+ end
+ end
+ end
+ F=Op(1,PdataL); G=Op(Nall,PdataL);
+ KL=IntersectcrvsPp(F,G);
+ if length(KL)==1
+ Tmp=Op(1,KL);
+ P=Op(1,Tmp);
+ T1=Op(2,Tmp);
+ end
+ if length(KL)==0
+ if Numptcrv(F)>Numptcrv(G)
+ Tmp=Nearestpt(F,G);
+ P=Op(1,Tmp);
+ T1=Op(2,Tmp);
+ else
+ Tmp=Nearestpt(G,F);
+ P=Op(3,Tmp);
+ T1=Op(4,Tmp);
+ end
+ end
+ if length(KL)>1 // 15.04.10
+ if S==[]
+ disp('No Start Point');
+ return
+ end;
+ Tmp=Op(1,KL);
+ P=Op(1,Tmp);
+ T1=Op(2,Tmp);
+ Tmp=norm(P-S);
+ for I=2:length(KL)
+ Tmp1=Op(1,Op(I,KL));
+ Tmp2=norm(Tmp1-S);
+ if Tmp2<Tmp
+ P=Tmp1;
+ T1=Op(2,Op(I,KL));
+ Tmp=Tmp2;
+ end
+ end
+ end
+ S=P;
+ AnsL=[];
+ for N=1:Nall
+ F=Op(N,PdataL);
+ if N>1 P=Q;end
+ if N==Nall
+ Q=S;
+ else
+ Flg=0;
+ G=Op(N+1,PdataL);
+ KL=IntersectcrvsPp(G,F);
+ if length(KL)==1
+ Tmp=Op(1,KL);
+ Q=Op(1,Tmp);
+ T3=Op(2,Tmp);
+ Flg=10;
+ end
+ if length(KL)==0 Flg=1; end
+ if length(KL)>=2 // Maple bug?
+ Tmp1=Op(1,Op(1,KL));
+ Tmp2=Op(1,Op(2,KL));
+ Tmp=norm(Tmp1-Tmp2);
+ if Tmp<Eps*10 Flg=1; end
+ end
+ if Flg==1
+ if Numptcrv(F)>Numptcrv(G)
+ Tmp=Nearestpt(F,G);
+ Q=Op(1,Tmp);
+ T3=Op(4,Tmp);
+ Flg=10;
+ else
+ Tmp=Nearestpt(G,F);
+ Q=Op(3,Tmp);
+ T3=Op(2,Tmp);
+ Flg=10;
+ end
+ end
+ if Flg<10
+ T2=%inf;
+ for I=1:length(KL)
+ Dt=Op(I,KL);
+ Tmp1=Op(1,Dt);
+ Tmp=Op(3,Dt);
+ Tmp2=Paramoncrv(Tmp1,Tmp,F);
+ Tmp3=Op(2,Dt);
+ if (Tmp2>T1+Eps) & (Tmp2<T2+Eps)
+ Q=Tmp1;
+ T2=Tmp2;
+ T3=Tmp3;
+ end
+ end
+ end
+ end
+ Tmp=Partcrv(P,Q,F);
+ T1=T3;
+ AnsL=Mixadd(AnsL,Tmp);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.bin
new file mode 100644
index 00000000..36e0755f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.sci
new file mode 100755
index 00000000..ff4a3c43
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Endpicture.sci
@@ -0,0 +1,11 @@
+// 08.05.22
+
+function Endpicture(varargin)
+ if length(varargin)==0
+ Flg=1
+ else
+ Flg=varargin(1);
+ end
+ Closepicture(Flg)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.bin
new file mode 100644
index 00000000..027661d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.sci
new file mode 100755
index 00000000..b9c86eef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepara.sci
@@ -0,0 +1,79 @@
+// 08.09.10
+// 13.10.21 ( __ added to varibles )
+// 17.05.21 Mdv, Ndv changed to division number
+
+function [Zval__,Xval__,Yval__]=Evlptablepara(MS__)
+ Nargs__=Mixlength(MS__);
+ Eps__=10^(-3);
+ Tmp__=Mixop(1,MS__);
+ FdL__=Fullformfunc(Tmp__);
+ Mdv=50;
+ Ndv__=50;
+ if Nargs__>=2
+ Tmp__=Mixop(2,MS__);
+ if Mixtype(Tmp__)~=1 Tmp__=Mixop(1,Tmp__); end;
+ if length(Tmp__)>1
+ Mdv__=Tmp__(1,1);
+ Ndv__=Tmp__(1,2);
+ else
+ Mdv__=Tmp__
+ if Nargs__==2
+ Ndv__=Mdv__
+ else
+ Tmp1__=Mixop(3,MS__);
+ if type(Tmp1__)==1 & length(Tmp1__)==1
+ Ndv__=Tmp1__;
+ else
+ Ndv__=Mdv__;
+ end
+ end
+ end
+ end;
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ U1__=Urange__(1); U2__=Urange__(2);
+ V1__=Vrange__(1); V2__=Vrange__(2);
+ Du__=(U2__-U1__)/(Mdv__); //17.05.21
+ Dv__=(V2__-V1__)/(Ndv__); //17.05.21
+ Xyzstr__=[Mixop(2,FdL__),Mixop(3,FdL__),Mixop(4,FdL__)];
+ I__=1;
+ Zval__=[];
+ for v__=V1__:Dv__:V2__
+ v1__=v__-Eps__/2; v2__=v__+Eps__/2;
+ ZuL__=[];
+ for u__=U1__:Du__:U2__;
+ u1__=u__-Eps__/2; u2__=u__+Eps__/2;
+ Tmpv__=strsubst(Xyzstr__,Vname__,'v__');
+ Tmp__=strsubst(Tmpv__,Uname__,'u1__');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmpv__,Uname__,'u2__');
+ P2__=evstr(Tmp__);
+ Tmp1__=Parapt(P1__);
+ Tmp2__=Parapt(P2__);
+ Dxu__=(Tmp2__(1)-Tmp1__(1))/Eps__;
+ Dyu__=(Tmp2__(2)-Tmp1__(2))/Eps__;
+ u1__=u__-Eps__/2; u2__=u__+Eps__/2;
+ Tmpu__=strsubst(Xyzstr__,Uname__,'u__');
+ Tmp__=strsubst(Tmpu__,Vname__,'v1__');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmpu__,Vname__,'v2__');
+ P2__=evstr(Tmp__);
+ Tmp1__=Parapt(P1__);
+ Tmp2__=Parapt(P2__);
+ Dxv__=(Tmp2__(1)-Tmp1__(1))/Eps__;
+ Dyv__=(Tmp2__(2)-Tmp1__(2))/Eps__;
+ Tmp__=Dxu__*Dyv__-Dxv__*Dyu__;
+ ZuL__=[ZuL__,Tmp__];
+ end;
+ Zval__=[Zval__;ZuL__];
+ end;
+ Yval__=V1__:Dv__:V2__;
+ Xval__=U1__:Du__:U2__;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.bin
new file mode 100644
index 00000000..d5745d92
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.sci
new file mode 100755
index 00000000..15ddd0a8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Evlptablepers.sci
@@ -0,0 +1,77 @@
+// 08.09.21
+// 13.11.01 ( __ added to varibles )
+
+function [Zval__,Xval__,Yval__]=Evlptablepers(MS__)
+ Nargs__=Mixlength(MS__);
+ Eps__=10^(-3);
+ Tmp__=Mixop(1,MS__);
+ FdL__=Fullformfunc(Tmp__);
+ Mdv__=50;
+ Ndv__=50;
+ if Nargs__>=2
+ Tmp__=Mixop(2,MS__);
+ if Mixtype(Tmp__)~=1 Tmp__=Mixop(1,Tmp__); end;
+ if length(Tmp__)>1
+ Mdv__=Tmp__(1,1);
+ Ndv__=Tmp__(1,2);
+ else
+ Mdv__=Tmp__
+ if Nargs__==2
+ Ndv__=Mdv__
+ else
+ Tmp__1=Mixop(3,MS__);
+ if type(Tmp__1)==1 & length(Tmp__1)==1
+ Ndv__=Tmp__1;
+ else
+ Ndv__=Mdv__;
+ end
+ end
+ end
+ end;
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrange__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ U1__=Urange__(1); U2__=Urange__(2);
+ V1__=Vrange__(1); V2__=Vrange__(2);
+ Du__=(U2__-U1__)/(Mdv__-1);
+ Dv__=(V2__-V1__)/(Ndv__-1);
+ Xyzstr__=[Mixop(2,FdL__),Mixop(3,FdL__),Mixop(4,FdL__)];
+ I__=1;
+ Zval__=[];
+ for v__=V1__:Dv__:V2__
+ v__1=v__-Eps__/2; v__2=v__+Eps__/2;
+ ZuL__=[];
+ for u__=U1__:Du__:U2__;
+ u__1=u__-Eps__/2; u__2=u__+Eps__/2;
+ Tmp__v=strsubst(Xyzstr__,Vname__,'v__');
+ Tmp__=strsubst(Tmp__v,Uname__,'u__1');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmp__v,Uname__,'u__2');
+ P2__=evstr(Tmp__);
+ Tmp__1=Perspt(P1__);
+ Tmp__2=Perspt(P2__);
+ Dxu__=(Tmp__2(1)-Tmp__1(1))/Eps__;
+ Dyu__=(Tmp__2(2)-Tmp__1(2))/Eps__;
+ u__1=u__-Eps__/2; u__2=u__+Eps__/2;
+ Tmp__u=strsubst(Xyzstr__,Uname__,'u__');
+ Tmp__=strsubst(Tmp__u,Vname__,'v__1');
+ P1__=evstr(Tmp__);
+ Tmp__=strsubst(Tmp__u,Vname__,'v__2');
+ P2__=evstr(Tmp__);
+ Tmp__1=Perspt(P1__);
+ Tmp__2=Perspt(P2__);
+ Dxv__=(Tmp__2(1)-Tmp__1(1))/Eps__;
+ Dyv__=(Tmp__2(2)-Tmp__1(2))/Eps__;
+ Tmp__=Dxu__*Dyv__-Dxv__*Dyu__;
+ ZuL__=[ZuL__,Tmp__];
+ end;
+ Zval__=[Zval__;ZuL__];
+ end;
+ Yval__=V1__:Dv__:V2__;
+ Xval__=U1__:Du__:U2__;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.bin
new file mode 100644
index 00000000..a18f4f27
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.sci
new file mode 100644
index 00000000..2a4d1491
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Execmd.sci
@@ -0,0 +1,8 @@
+// 10.01.16
+// 10.02.24
+
+function Execmd(StrL)
+ for I=1:length(StrL)
+ execstr(Op(I,StrL))
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.bin
new file mode 100644
index 00000000..b714247e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.sci
new file mode 100755
index 00000000..5b9df24b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Expr.sci
@@ -0,0 +1,100 @@
+//
+// 09.12.25
+
+function Expr(varargin)
+ global Wfile FID MEMORI;
+ Nargs=length(varargin);
+ for I=1:3:Nargs
+ Tmp=varargin(I);
+ P=Doscaling(Tmp);
+ X=P(1);
+ Y=P(2);
+ Houkou=varargin(I+1);
+ Mojiretu='$'+varargin(I+2)+'$';
+ Hset=Houkou;
+ Vhoko='c';
+ if mtlb_findstr(Hset,'n')~=[]
+ Vhoko='n'; Y=Y+MEMORI;
+ end
+ if mtlb_findstr(Hset,'s')~=[]
+ Vhoko='s'; Y=Y-MEMORI;
+ end
+ Hhoko='c';
+ if mtlb_findstr(Hset,'e')~=[]
+ Hhoko='e'; X=X+MEMORI;
+ end
+ if mtlb_findstr(Hset,'w')~=[]
+ Hhoko='w'; X=X-MEMORI;
+ end
+ Hoko=Vhoko+Hhoko;
+ Suu='+-.0123456789';
+ SuuL=Suu;
+ Hcode=ascii(Houkou);
+ J=1; Dstr='';
+ while J<=length(Houkou)
+ Tmp=char(Hcode(J));
+ if mtlb_findstr(SuuL,Tmp)~=[]
+ if Dstr==''
+ Hk=char(Hcode(J-1));
+ end
+ Dstr=Dstr+Tmp;
+ else
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ Dstr='';
+ end
+ end
+ J=J+1;
+ end
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ end
+ CalcWidth(Hoko,Mojiretu);
+ CalcHeight(Hoko,Mojiretu);
+ Tmp='){\hspace*{\Width}';
+ Str=Tmp+'\raisebox{\Height}{'+Mojiretu+'}}';
+ if Wfile=='default'
+ mprintf('%s','\put(');
+ mprintf('%6.4f%s%6.4f',X,',',Y);
+ mprintf('%s%s\n',Str,'%');
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s','\put(');
+ mfprintf(FID,'%6.4f%s%6.4f',X,',',Y);
+ mfprintf(FID,'%s%s\n',Str,'%');
+ mfprintf(FID,'%s\n','%');
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.bin
new file mode 100644
index 00000000..ea7beb15
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.sci
new file mode 100755
index 00000000..d51dfa91
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Exprrot.sci
@@ -0,0 +1,36 @@
+// 08.05.31
+// 08.08.24
+// 09.12.25
+
+function Exprrot(varargin)
+ global MEMORI;
+ P=varargin(1);
+ V=varargin(2); N=3;
+ P=Doscaling(P);
+ V=Doscaling(V);
+ Tmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1
+ Tmov=Tmp; N=N+1;
+ end
+ Nmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1 then
+ Nmov=Tmp; N=N+1;
+ end
+ Mojiretu='$'+varargin(N)+'$';
+ Tv=1/norm(V)*V;
+ Nv=[-Tv(2),Tv(1)];
+ P=P+MEMORI*Tmov*Tv+MEMORI*Nmov*Nv;
+ Tmp=acos(V(1)/norm(V));
+ Theta=round(Tmp*180/%pi);
+ if V(2)>=0
+ Units='';
+ else
+ Units='units=-360,';
+ end
+ Tmp='\rotatebox['+Units+'origin=c]{'+string(Theta);
+ Tmp=Tmp+'}{'+Mojiretu+'}';
+ Letter(P,"c",Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.bin
new file mode 100644
index 00000000..9c11aaad
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.sci
new file mode 100755
index 00000000..ae0bea54
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata.sci
@@ -0,0 +1,78 @@
+// 09.10.29
+// 10.02.07 debugged
+
+function NohiddenL=Faceremovaldata(FL,CLadd,PT)
+ global PHHIDDENDATA VELNO VELHI;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CLadd)//
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ VELNO=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ Ntmp=length(VELNO); //
+ VELNO(Ntmp+1)=list(Edge,0,Ntmp+1); //
+ end;
+ end;
+ VELHI=list();
+ Out=MakeveLfaceL(FL);
+ FaceL=Out(2);
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi2(Face,Nf,Ptype);
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ for I=1:length(VELHI)
+ Edge=Op(1,VELHI(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ PHHIDDENDATA=HiddenL;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.bin
new file mode 100644
index 00000000..d32b2b3d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.sci
new file mode 100755
index 00000000..7dc8bef1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Faceremovaldata0.sci
@@ -0,0 +1,81 @@
+// NEW
+// Faceremovaldata
+// 09.10.24
+// 09.10.26
+// 09.10.27
+
+function NohiddenL=Faceremovaldata(FL,CLadd,PT)
+ global PHHIDDENDATA VELNO VELHI;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CL)
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ VELNO=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ VELNO($+1)=list(Edge,0);
+ end;
+ end;
+ VELHI=list();
+ Out=MakeveLfaceL(FL);
+ FaceL=Out(2);
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi(Face,Nf,Ptype);
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ for I=1:length(VELHI)
+ Edge=Op(1,VELHI(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ PHHIDDENDATA=HiddenL;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.bin
new file mode 100644
index 00000000..10b573ba
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.sci
new file mode 100755
index 00000000..0ed2f249
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata.sci
@@ -0,0 +1,154 @@
+/////////
+// 09.10.29
+// 11.01.13 (HiddenL) remodified 110122
+// 13.03.30 (HiddenL) debugged 140330
+
+function NohiddenL=Facesdata(varargin)
+ global PHHIDDENDATA VELNO VELHI;
+ Nargs=length(varargin);
+ FL=varargin(1);
+ PT=varargin($);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if Nargs==2
+ CLadd=list();
+ else
+ CLadd=varargin(2);
+ end;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CL)
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ Out=MakeveLfaceL(FL);
+ VELNO=Out(1);
+ VELHI=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ Ntmp=length(VELNO); //
+ VELNO(Ntmp+1)=list(Edge,0,Ntmp+1); //
+ end;
+ end;
+ FaceL=Out(2);
+ if mtlb_findstr(PT,'raw')==[]
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi2(Face,Nf,Ptype);
+ end;
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ EdgeL=list(); // from 13.03.30
+ for K=1:length(VELHI)
+ Edge=Op(1,VELHI(K));
+ P=Edge(1); Q=Edge(2);
+ if norm(P-Q)>Eps then
+ EdgeL($+1)=Edge;
+ end
+ end
+ for K=1:length(EdgeL)
+ Edge=EdgeL(K); //
+ P=Edge(1); Q=Edge(2);
+ Cflg=0;
+ for J=K+1:length(EdgeL)
+ Ej=EdgeL(J); //
+ Pj=Ej(1); Qj=Ej(2);
+ if norm(Crossprod(Q-P,Qj-Pj))>Eps then
+ continue
+ end
+ if norm(Q-Pj)<Eps then
+ EdgeL(J)=list(P,Qj);
+ Cflg=1;
+ break;
+ end
+ if norm(P-Qj)<Eps then
+ EdgeL(J)=list(Q,Pj)
+ Cflg=1;
+ break;
+ end;
+ end
+ if Cflg==0 then
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end; // upto 14.03.30
+
+// L=1:length(VELHI); // from 11.01.13
+// while length(L)>0
+// Lr=[];
+// Edge=Op(1,VELHI(L(1))); //
+// P=Edge(1);
+// Q=Edge(2);
+//
+// disp([293,P,Q])
+//
+// if norm(P-Q)>Eps
+// for J=2:length(L)
+// Rflg=0;
+// Ej=Op(1,VELHI(L(J))); //
+// Pj=Ej(1);
+// Qj=Ej(2);
+// if norm(Crossprod(Q-P,Qj-Pj))>Eps
+// Lr=[Lr,J];
+// continue;
+// end;
+// if norm(Q-Pj)<Eps
+// Edge(2)=Qj;
+// Rflg=1;
+// elseif norm(P-Qj)<Eps
+// Edge(1)=Pj;
+// Rflg=1;
+// end;
+// if Rflg==0
+// Lr=[Lr,J];
+// end;
+// end;
+// else
+// Lr=L(2:length(L));
+// end;
+// L=Lr; // upto 11.01.13
+// HiddenL($+1)=Spaceline(Edge);
+// end;
+ PHHIDDENDATA=HiddenL;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.bin
new file mode 100644
index 00000000..8af8ea49
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.sci
new file mode 100755
index 00000000..c300cf6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Facesdata0.sci
@@ -0,0 +1,88 @@
+// 09.10.27
+
+function NohiddenL=Facesdata(varargin)
+ global PHHIDDENDATA VELNO VELHI;
+ Nargs=length(varargin);
+ FL=varargin(1);
+ PT=varargin($);
+ if mtlb_findstr(PT,'para')~=[]
+ Ptype=1; //para
+ else
+ Ptype=-1; //pers
+ end;
+ if Nargs==2
+ CLadd=list();
+ else
+ CLadd=varargin(2);
+ end;
+ NohiddenL=list();
+ HiddenL=list();
+ Eps=10^(-4);
+ if length(CLadd)>0
+ if type(CLadd)==1
+ C=list();
+ if size(CLadd,1)>1
+ for I=1:size(CLadd,1)
+ C($+1)=CLadd(I,:);
+ end;
+ else
+ for I=1:3:size(CLadd,2)
+ C($+1)=CLadd(1,I:I+2);
+ end;
+ end;
+ CrvL=list(C);
+ elseif type(CLadd(1))==1
+ CrvL=list();
+ for J=1:length(CL)
+ Ctmp=CLadd(J);
+ C=list();
+ if size(Ctmp,1)>1
+ for I=1:size(Ctmp,1)
+ C($+1)=Ctmp(I,:);
+ end;
+ else
+ for I=1:3:size(Ctmp,2)
+ C($+1)=Ctmp(1,I:I+2);
+ end;
+ end;
+ CrvL($+1)=C;
+ end;
+ else
+ CrvL=CLadd;
+ end;
+ else
+ CrvL=list();
+ end;
+ Out=MakeveLfaceL(FL);
+ VELNO=Out(1);
+ VELHI=list();
+ for I=1:length(CrvL)
+ Tmp=CrvL(I);
+ for J=1:length(Tmp)-1
+ Edge=list(Tmp(J),Tmp(J+1));
+ VELNO($+1)=list(Edge,0);
+ end;
+ end;
+ FaceL=Out(2);
+ if mtlb_findstr(PT,'raw')==[]
+ for Nf=1:length(FaceL)
+ Face=FaceL(Nf);
+ Menkakusi(Face,Nf,Ptype);
+ end;
+ end;
+ for I=1:length(VELNO)
+ Edge=Op(1,VELNO(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ NohiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ for I=1:length(VELHI)
+ Edge=Op(1,VELHI(I));
+ if norm(Edge(1)-Edge(2))>Eps
+ HiddenL($+1)=Spaceline(Edge);
+ end;
+ end;
+ PHHIDDENDATA=HiddenL;
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.bin
new file mode 100644
index 00000000..513db3d6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.sci
new file mode 100755
index 00000000..062fcc5c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Findcell.sci
@@ -0,0 +1,127 @@
+// 09.11.26
+// 09.12.06
+// 09.12.14
+// 10.01.12
+// 10.01.13
+// 10.01.14
+
+function Out=Findcell(varargin)//TbL,Nrg,Mrg
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ Ag=varargin(2);
+ Alpha='-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ if type(Ag)==10
+ Clm=[];
+ Rstr='';
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp-1];
+ else
+ Rstr=Rstr+C;
+ end;
+ end;
+ Nrg=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg=Nrg+Tmp*26^Tmp1;
+ end;
+ Mrg=eval(Rstr);
+ if Nargs>=3
+ Ag=varargin(3);
+ Clm=[];
+ Rstr='';
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp];
+ else
+ Rstr=Rstr+C;
+ end;
+ end;
+ Nrg2=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg2=Nrg2+Tmp*26^Tmp1;
+ end;
+ Nrg=[Nrg,Nrg2];
+ Mrg=[Mrg,eval(Rstr)];
+ end;
+ else
+ Nrg=varargin(2);
+ Mrg=varargin(3);
+ end;
+ if length(Mrg)==1
+ m1=Mrg; m2=m1+1;
+ else
+ m1=Mrg(1); m2=Mrg(2);
+ end;
+ if length(Nrg)==1
+ n1=Nrg; n2=n1+1;
+ else
+ n1=Nrg(1); n2=Nrg(2);
+ end;
+ n1=n1+1; n2=n2+1;
+ m1=m1+1; m2=m2+1;
+ Hind=TbL(2);
+ Vind=TbL(3);
+ HL=Mixsub(TbL(2),TbL(1));
+ Tmp1=Op(1,TbL(4));
+ Tmp2=Op(2,TbL(4));
+ HL=Mixjoin(list(Tmp1),HL,list(Tmp2));
+ VL=Mixsub(TbL(3),TbL(1));
+ Tmp1=Op(1,TbL(5));
+ Tmp2=Op(2,TbL(5));
+ VL=Mixjoin(list(Tmp1),VL,list(Tmp2));
+ Tmp=TbL(6);
+ Tmp1=Listplot([Ptsw(Tmp),Ptnw(Tmp)]);
+ Tmp2=Listplot([Ptse(Tmp),Ptne(Tmp)]);
+ HL=Mixjoin(list(Tmp1),HL,list(Tmp2));
+ Tmp1=Listplot([Ptnw(Tmp),Ptne(Tmp)]);
+ Tmp2=Listplot([Ptsw(Tmp),Ptse(Tmp)]);
+ VL=Mixjoin(list(Tmp1),VL,list(Tmp2));
+ Tmp=HL(n1);
+ if type(Tmp)==1
+ H1=Tmp(1,1);
+ else
+ Tmp1=Tmp(1);
+ H1=Tmp1(1,1);
+ end;
+ Tmp=HL(n2);
+ if type(Tmp)==1
+ H2=Tmp(1,1);
+ else
+ Tmp1=Tmp(1);
+ H2=Tmp1(1,1);
+ end;
+ Tmp=VL(m1);
+ if type(Tmp)==1
+ V1=Tmp(1,2);
+ else
+ Tmp1=Tmp(1);
+ V1=Tmp1(1,2);
+ end;
+ Tmp=VL(m2);
+ if type(Tmp)==1
+ V2=Tmp(1,2);
+ else
+ Tmp1=Tmp(1);
+ V2=Tmp1(1,2);
+ end;
+ Pt=[(H1+H2)/2,(V1+V2)/2];
+ High=(V1-V2)/2;
+ Wide=(H2-H1)/2;
+ Out=list(Pt,Wide,High);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.bin
new file mode 100644
index 00000000..54c4fa4b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.sci
new file mode 100644
index 00000000..903679ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Flattenlist.sci
@@ -0,0 +1,17 @@
+// 10.11.13
+
+function Out=Flattenlist(varargin)
+ Out=list();
+ for N=1:length(varargin)
+ D=varargin(N);
+ if type(D)~=15
+ Out($+1)=D;
+ else
+ for I=1:length(D)
+ Ds=D(I);
+ Tmp=Flattenlist(Ds);
+ Out=lstcat(Out,Tmp);
+ end;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.bin
new file mode 100644
index 00000000..e1a1d3b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.sci
new file mode 100755
index 00000000..218b599f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fontsize.sci
@@ -0,0 +1,54 @@
+function Fontsize(Ookisa)
+ global Wfile FID;
+ Str='%';
+ Ucode=ascii(Ookisa);
+ S=char(Ucode(1));
+ if S=='n'
+ Str='\normalsize%';
+ end
+ if S=='s'
+ if length(Ucode)==1
+ Tmp='';
+ else
+ Tmp=char(Ucode(2));
+ end
+ if Tmp=='s'
+ Str='\scriptsize%';
+ else
+ Str='\small%';
+ end
+ end
+ if S=='f'
+ Str='\footnotesize%';
+ end
+ if S=='t'
+ Str='\tiny%';
+ end
+ if S=='l'
+ Str='\large%';
+ end
+ if S=='L'
+ if length(Ucode)==1
+ Tmp='a';
+ else
+ Tmp=char(Ucode(2));
+ end
+ if Tmp=='a'
+ Str='\Large%';
+ else
+ Str='\LARGE%';
+ end
+ end
+ if S=='h'
+ Str='\huge%';
+ end
+ if S=='H'
+ Str='\Huge%';
+ end
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.bin
new file mode 100644
index 00000000..de2203fe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.sci
new file mode 100755
index 00000000..af259244
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriercoeff.sci
@@ -0,0 +1,21 @@
+// 09.03.13
+
+function Out=Fouriercoeff(Fn,T,Ch,K)
+ Eps=10^(-5);
+ L=T/2;
+ Tmp1='Out=FUNC(x)';
+ if Ch=='c'
+ Tmp2='Out=Fn(10*L*x)*cos('+string(K)+'*%pi*x*10)';
+ else
+ Tmp2='Out=Fn(10*L*x)*sin('+string(K)+'*%pi*x*10)';
+ end;
+ deff(Tmp1,Tmp2);
+ Out=10*intg(-0.1,0.1,FUNC);
+ if K==0
+ Out=Out/2;
+ end;
+ if abs(Out)<Eps
+ Out=0;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.bin
new file mode 100644
index 00000000..cc5d39c4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.sci
new file mode 100755
index 00000000..2d0d840b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/FouriercoeffL.sci
@@ -0,0 +1,18 @@
+// 09.03.12
+
+function Out=FouriercoeffL(Fn,T,Upto)
+ Out=Mix(Fouriercoeff(Fn,T,'c',0));
+ CL=[];
+ for K=1:Upto
+ Tmp=Fouriercoeff(Fn,T,'c',K);
+ CL=[CL,Tmp];
+ end;
+ Out=Mixadd(Out,CL);
+ CL=[];
+ for K=1:Upto
+ Tmp=Fouriercoeff(Fn,T,'s',K);
+ CL=[CL,Tmp];
+ end;
+ Out=Mixadd(Out,CL);
+ Out=Mixadd(Out,T);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.bin
new file mode 100644
index 00000000..91dee3ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.sci
new file mode 100755
index 00000000..6182f4a7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fouriersum.sci
@@ -0,0 +1,15 @@
+// 09.03.12
+
+function Out=Fouriersum(COEFF,x)
+ C=Mixop(1,COEFF);
+ A=Mixop(2,COEFF);
+ B=Mixop(3,COEFF);
+ T=Mixop(4,COEFF);
+ Upto=size(A,2);
+ L=T/2;
+ K=1:Upto;
+ Tmp1=sum(A(K).*cos(K*%pi*x/L));
+ Tmp2=sum(B(K).*sin(K*%pi*x/L));
+ Out=C+Tmp1+Tmp2;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.bin
new file mode 100644
index 00000000..4cc02afc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.sci
new file mode 100755
index 00000000..437ff122
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fracform.sci
@@ -0,0 +1,18 @@
+// 09.08.23
+
+function Out=Fracform(X)
+ [N,D]=rat(X);
+ Out=[];
+ for I=1:size(X,1)
+ for J=1:size(X,2)
+ Tmp1=N(I,J);
+ Tmp2=D(I,J);
+ if Tmp2==1
+ Out(I,J)=string(Tmp1);
+ else
+ Out(I,J)=string(Tmp1)+'/'+string(Tmp2);
+ end;
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.bin
new file mode 100644
index 00000000..828acf25
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.sci
new file mode 100755
index 00000000..071f7381
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Framedata.sci
@@ -0,0 +1,36 @@
+// 2011.12.18 ( available for list )
+
+function P=Framedata(varargin)
+ global XMIN XMAX YMIN YMAX
+ VaL=Flattenlist(varargin);
+ N=length(VaL);
+ if N<=1
+ H=1.0*10^(-4);
+ PA=[XMIN+H,YMIN+H];
+ PB=[XMAX-H,YMIN+H];
+ PC=[XMAX-H,YMAX-H];
+ PD=[XMIN+H,YMAX-H];
+ else
+ Tmp=VaL(N);
+ if type(Tmp)==1 & length(Tmp)==1
+ Dy=Tmp;
+ Dx=Dy;
+ Tmp=VaL(N-1);
+ if type(Tmp)==1 & length(Tmp)==1
+ Dx=Tmp;
+ end;
+ Tmp=VaL(1);
+ X=Tmp(1); Y=Tmp(2);
+ X1=X-Dx; X2=X+Dx;
+ Y1=Y-Dy; Y2=Y+Dy;
+ else
+ Tmp=VaL(1);
+ X1=Tmp(1); X2=Tmp(2);
+ Tmp=VaL(2);
+ Y1=Tmp(1); Y2=Tmp(2);
+ end;
+ PA=[X1,Y1]; PB=[X2,Y1];
+ PC=[X2,Y2]; PD=[X1,Y2];
+ end;
+ P=Listplot(PA,PB,PC,PD,PA)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.bin
new file mode 100644
index 00000000..5e765044
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.sci
new file mode 100755
index 00000000..97ddae5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Fullformfunc.sci
@@ -0,0 +1,79 @@
+// 08.08.16
+// 08.09.16
+// 09.11.14
+// 10.08.19
+// 13.10.22 ( __ added to varibles )
+
+function Out__=Fullformfunc(FdL__)
+ Out__=MixS(Mixop(1,FdL__));
+ N__=Mixlength(FdL__);
+ for Jrg__=1:N__
+ Tmp__=Mixop(Jrg__,FdL__);
+ if part(Tmp__,length(Tmp__))==']'
+ break
+ end;
+ end;
+ Urg__=Mixop(Jrg__,FdL__);
+ K__=mtlb_findstr(Urg__,'=');
+ Uname__=stripblanks(part(Urg__,1:K__-1));
+ Tmp__=part(Urg__,K__+1:length(Urg__)); // 2013.10.22
+ Tmp1__=evstr(Tmp__);
+ Urg__=Uname__+"=["+string(Tmp1__(1))+","+string(Tmp1__(2))+"]";
+ Vrg__=Mixop(Jrg__+1,FdL__);
+ K__=mtlb_findstr(Vrg__,'=');
+ Vname__=stripblanks(part(Vrg__,1:K__-1));
+ Tmp__=part(Vrg__,K__+1:length(Vrg__));
+ Tmp1__=evstr(Tmp__);
+ Vrg__=Vname__+"=["+string(Tmp1__(1))+","+string(Tmp1__(2))+"]"; //
+ if Jrg__==2
+ Tmp__=Mixop(1,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=MixS(Uname__,Vname__,Zf__,Urg__,Vrg__);
+ Out__=Mixjoin(Out__,Tmp__);
+ elseif Jrg__==4
+ Tmp__=Mixop(1,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(2,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=stripblanks(part(Tmp__,1:K__-1));
+ Xf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(3,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=stripblanks(part(Tmp__,1:K__-1));
+ Yf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=strsubst(Zf__,Xname__,'('+Xf__+')');
+ Zf__=strsubst(Tmp__,Yname__,'('+Yf__+')');
+ Tmp__=MixS(Xf__,Yf__,Zf__,Urg__,Vrg__);
+ Out__=Mixjoin(Out__,Tmp__);
+ else
+ Tmp__=Mixop(2,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(3,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=Mixop(4,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zf__=part(Tmp__,K__+1:length(Tmp__));
+ Tmp__=MixS(Xf__,Yf__,Zf__,Urg__,Vrg__);
+ Out__=Mixjoin(Out__,Tmp__);
+ end;
+ DrwS__='enws';
+ BdyL__=[];
+ for I__=Jrg__+2:Mixlength(FdL__)
+ Tmp__=Mixop(I__,FdL__);
+ if type(Tmp__)==10
+ if length(Tmp__)==0 //
+ Tmp__=' ';
+ end;
+ DrwS__=Tmp__;
+ end;
+ if type(Tmp__)==1 & size(Tmp__,2)>1
+ BdyL__=Tmp__;
+ end;
+ end;
+ Tmp__=MixS(DrwS__,BdyL__);
+ Out__=Mixjoin(Out__,Tmp__);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.bin
new file mode 100644
index 00000000..ba4a0779
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.sci
new file mode 100755
index 00000000..3d17995e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gaiseki.sci
@@ -0,0 +1,11 @@
+function G=Gaiseki(a,b)
+ if length(a)==3
+ Tmp=[a(2)*b(3)-a(3)*b(2),...
+ a(3)*b(1)-a(1)*b(3),...
+ a(1)*b(2)-a(2)*b(1)];
+ else
+ Tmp=a(1)*b(2)-a(2)*b(1);
+ end;
+ G=Tmp;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.bin
new file mode 100644
index 00000000..a66e7b20
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.sci
new file mode 100755
index 00000000..ca4e0d2a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Getcounter.sci
@@ -0,0 +1,7 @@
+// 09.09.10
+
+function Out=Getcounter()
+ global GCOUNTER;
+ Out=GCOUNTER;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.bin
new file mode 100644
index 00000000..d0751e37
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.sci
new file mode 100755
index 00000000..5395d885
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Gettrace.sci
@@ -0,0 +1,7 @@
+// 09.09.10
+
+function Out=Gettrace();
+ global TRACEDATA;
+ Out=TRACEDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.bin
new file mode 100644
index 00000000..4e13bb0c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci
new file mode 100755
index 00000000..236287ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hatchdata.sci
@@ -0,0 +1,141 @@
+// 08.05.21
+// 09.10.05
+// 09.12.25
+// 10.01.20
+// 10.02.01
+// 10.11.04 ( debugged 83 )
+
+function ShaLs=Hatchdata(varargin)
+ global XMIN XMAX YMIN YMAX MilliIn;
+ ShaL=[];
+ Nargs=length(varargin);
+ Kakudo=45;
+ Kankaku=0.125*1000/2.54/MilliIn;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xmn=Tmp(1); Ymn=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ Xmx=Tmp(1); Ymx=Tmp(2);
+ for N=Nargs:-1:1
+ Tmp=varargin(N);
+ if Mixtype(Tmp)~=1
+ break
+ end
+ end
+ if N<Nargs
+ Kakudo=varargin(N+1);
+ if N==Nargs-2
+ Kankaku=0.125*varargin(Nargs);
+ end
+ end
+ NaitenL=varargin(1);
+ if Mixtype(NaitenL)==1
+ NaitenL=list(NaitenL);
+ end
+ Ns=2;
+ StartP=Op(1,NaitenL);
+ if type(StartP)==10
+ StartP=[(Xmn+Xmx)/2,(Ymn+Ymx)/2];
+ end
+ if Mixtype(varargin(2))==1
+ StartP=varargin(2);
+ StartP=Doscaling(StartP);
+ Ns=3;
+ end
+ Tmp=list();
+ for I=Ns:N
+ Tmp1=list(varargin(I));
+ Tmp=Mixjoin(Tmp,Tmp1);
+ end
+ Bdy=Kyoukai(Tmp);
+ Bdys=list();
+ for I=1:length(Bdy)
+ Tmp1=Bdy(I);
+ Tmp2=Doscaling(Tmp1);
+ Bdys=Mixjoin(Bdys,list(Tmp2));
+ end;
+ Bdy=Bdys;
+ PtnL=list();
+ for I=1:length(NaitenL)
+ Tmp=Op(I,NaitenL);
+ if type(Tmp)==1
+ Tmp1=Naigai(Tmp,Bdy);
+ PtnL=Mixjoin(PtnL,list(Tmp1));
+ else
+ if type(Tmp)~=10
+ disp('Type Error');
+ return
+ end
+ Ptn=[];
+ for J=1:length(Tmp)
+ if Op(J,Tmp)=='i'
+ Ptn=[Ptn,1];
+ else
+ Ptn=[Ptn,0];
+ end
+ end
+ PtnL=Mixjoin(PtnL,list(Ptn));
+ end
+ end
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ if Member(Ptn,PtnL)
+ Wn=Doscaling(Framedata());
+ Bdy=Mixjoin(Bdy,list(Wn));
+ Tmp=list();
+ for I=1:length(PtnL)
+ Tmp1=[Op(I,PtnL),1];
+ Tmp=Mixjoin(Tmp,Tmp1); // 10.11.04
+ end
+ PtnL=Tmp;
+ end
+ V=[cos(Kakudo*%pi/180),sin(Kakudo*%pi/180)];
+ Vm=[-sin(Kakudo*%pi/180),cos(Kakudo*%pi/180)];
+ Tmp=Op(1,NaitenL);
+ if type(Tmp)==1 & size(Tmp,2)==2
+ Tmp=Doscaling(Tmp);
+ Delta=Tmp-StartP;
+ K=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ PA=StartP+K*Kankaku*Vm;
+ Sha=Makeshasen(PtnL,PA,V,Bdy);
+ I=1;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ ShaL=Mixadd(ShaL,Sha(J));
+ end;
+ Sha=Makeshasen(PtnL,PA+I*Kankaku*Vm,V,Bdy);
+ I=I+1;
+ end
+ Sha=Makeshasen(PtnL,PA-Kankaku*Vm,V,Bdy);
+ I=2;
+ while length(Sha)~=0
+ for J=1:length(Sha)
+ ShaL=Mixjoin(ShaL,list(Sha(J)));
+ end;
+ Sha=Makeshasen(PtnL,PA-I*Kankaku*Vm,V,Bdy);
+ I=I+1;
+ end
+ else
+ Delta=[Xmn,Ymn]-StartP;
+ K1=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmx,Ymn]-StartP;
+ K2=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmx,Ymx]-StartP;
+ K3=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ Delta=[Xmn,Ymx]-StartP;
+ K4=Trunc((Delta(1)*Vm(1)+Delta(2)*Vm(2))/Kankaku);
+ IM=max(K1,K2,K3,K4);
+ Im=min(K1,K2,K3,K4);
+ for I=Im:IM
+ Sha=Makeshasen(PtnL,StartP+I*Kankaku*Vm,V,Bdy);
+ for J=1:length(Sha)
+ ShaL=Mixjoin(ShaL,list(Sha(J)));
+ end
+ end
+ end
+ ShaLs=list();
+ for I=1:length(ShaL)
+ Tmp=ShaL(I);
+ Tmp1=Unscaling(Tmp);
+ ShaLs=Mixjoin(ShaLs,list(Tmp1));
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.bin
new file mode 100644
index 00000000..b7f91dc9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.sci
new file mode 100644
index 00000000..7bc05ed9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Hexahedrondata.sci
@@ -0,0 +1,15 @@
+// s : 2014.06.22
+
+function Out=Hexahedrondata(A,V1,V2,V3)
+ Tmp=det([V1;V2;V3]);
+ if Tmp<0 then
+ Tmp1=V1;
+ V1=V2;
+ V2=Tmp1
+ end
+ B=A+V1; C=A+V1+V2; D=A+V2;
+ E=A+V3; F=B+V3; G=C+V3; H=D+V3;
+ VL=list(A,B,C,D,E,F,G,H);
+ FL=list([1,4,3,2],[5,6,7,8],[1,2,6,5],[2,3,7,6],[3,4,8,7],[1,5,8,4]);
+ Out=list(VL,FL)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.bin
new file mode 100644
index 00000000..d4296e92
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.sci
new file mode 100755
index 00000000..2ead122d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/HiddenWireData.sci
@@ -0,0 +1,7 @@
+// 08.09.15
+
+function Out=HiddenWireData()
+ global HIDDENWIREDATA
+ Out=HIDDENWIREDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.bin
new file mode 100644
index 00000000..65df35b0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.sci
new file mode 100644
index 00000000..ab8a54b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Htickmark.sci
@@ -0,0 +1,144 @@
+// 08.05.17 Debugged
+// 09.12.25
+// 11.04.13 debugged ( [a,b] )
+// 14.03.05 MARKLEN
+
+function Htickmark(varargin)
+ global Wfile FID MARKLEN GENTEN XMIN XMAX;
+ Nargs=length(varargin);
+ ArgsL=list(varargin(1:Nargs));
+ if type(Op(1,ArgsL))==10
+ Str=Op(1,ArgsL);
+ Tmp=mtlb_findstr(Str,'m');
+ if Tmp~=[]
+ I=Tmp(1);
+ else
+ I=0;
+ end
+ Tmp=mtlb_findstr(Str,'n');
+ if Tmp~=[]
+ J=Tmp(1);
+ else
+ J=0;
+ end
+ Tmp=mtlb_findstr(Str,'r');
+ if Tmp~=[]
+ K=Tmp(1);
+ else
+ K=0;
+ end;
+ if K>0
+ Tmp=ascii(Str);
+ S=char(Tmp(K+1:length(Tmp)));
+ R=msscanf(S,'%f');
+ if length(R)==0
+ R=1;
+ end
+ else
+ R=1;
+ K=length(Str)+1;
+ end
+ if J>0 then
+ Tmp=ascii(Str);
+ S=char(Tmp(J+1:K-1));
+ if S==[]
+ S='';
+ end;
+ Dn=msscanf(S,'%d');
+ if length(Dn)==0
+ Dn=1;
+ end
+ else
+ Dn=1000;
+ J=length(Str)+1;
+ end
+ Tmp=ascii(Str);
+ S=char(Tmp(I+1:J-1));
+ if S==[]
+ S='';
+ end
+ Dm=msscanf(S,'%f');
+ if length(Dm)==0
+ Dm=1;
+ end
+ ArgsL=list();
+ for I=1:floor((XMAX-GENTEN(1))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(Tmp(1:k-1));
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ for I=-1:-1:ceil((XMIN-GENTEN(1))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(1:K-1);
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ end
+ MemoriList=list();
+ Memori=list();
+ for N=1:length(ArgsL)
+ Dt=ArgsL(N);
+ if type(Dt)==1 & length(Dt)>1
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(Dt(1),Dt(2));
+ continue
+ end
+ if type(Dt)==10
+ Memori($+1)=Dt;
+ else
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(Dt,GENTEN(2));
+ end
+ end
+ MemoriList($+1)=Memori;
+ for N=1:length(MemoriList)
+ Dt=MemoriList(N);
+ Ndt=length(Dt);
+ X=Op(1,Dt);
+ Y=Op(2,Dt);
+ Tmp=Doscaling([X,Y]);
+ X=Tmp(1);
+ Y=Tmp(2);
+ Moji=Op(Ndt,Dt);
+ Tmp1=Unscaling([X,Y+MARKLEN]);
+ Tmp2=Unscaling([X,Y-MARKLEN]);
+ Fd=Listplot([Tmp1,Tmp2]);
+ Drwline(Fd);
+ if Ndt==3
+ Tmp=Unscaling([X,Y-MARKLEN]);
+ Expr(Tmp,'s',Moji);
+ end
+ if Ndt==4
+ Houkou=Op(3,Dt);
+ if mtlb_findstr(Houkou,'s')~=[]
+ Tmp=Unscaling([X,Y-MARKLEN]);
+ Expr(Tmp,Houkou,Moji);
+ else
+ Tmp=Unscaling([X,Y+MARKLEN]);
+ Expr(Tmp,Houkou,Moji);
+ end
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.bin
new file mode 100644
index 00000000..39861c63
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.sci
new file mode 100755
index 00000000..ae02fee1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ImplicitData.sci
@@ -0,0 +1,9 @@
+// 08.09.10
+// 08.09.16
+// 08.10.10 (Name)
+
+function Out=ImplicitData()
+ global IMPLICITDATA
+ Out=IMPLICITDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.bin
new file mode 100644
index 00000000..875a82b3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.sci
new file mode 100755
index 00000000..b0715484
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Implicitplot.sci
@@ -0,0 +1,61 @@
+// 08.09.09
+// 08.09.20
+// 13.10.19 ( __ added to variables )
+
+function Out__=Implicitplot(varargin)
+ Eps__=10^(-4);
+ Nargs__=length(varargin);
+ Fstr__=varargin(1);
+ if Mixtype(Fstr__)~=1
+ MS__=Fstr__;
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ elseif type(Fstr__)==10
+ MS__=[];
+ for I__=1:Nargs__
+ MS__=Mixadd(MS__,varargin(I__));
+ end;
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ else
+ Zval__=varargin(1);
+ Xval__=varargin(2);
+ Yval__=varargin(3);
+ end;
+ Out__=[];
+ for J__=1:length(Yval__)-1
+ for I__=1:length(Xval__)-1
+ a1__=Xval__(I__);b1__=Yval__(J__);c1__=Zval__(J__,I__);
+ a2__=Xval__(I__+1);b2__=Yval__(J__);c2__=Zval__(J__,I__+1);
+ a3__=Xval__(I__+1);b3__=Yval__(J__+1);c3__=Zval__(J__+1,I__+1);
+ a4__=Xval__(I__);b4__=Yval__(J__+1);c4__=Zval__(J__+1,I__);
+ PL__=[a1__,b1__;a2__,b2__;a3__,b3__;a4__,b4__;a1__,b1__];
+ VL__=[c1__,c2__,c3__,c4__,c1__];
+ QL__=[];
+ for K__=1:4
+ if abs(VL__(K__))<=Eps__
+ QL__=[QL__;PL__(K__,:)];
+ elseif VL__(K__)>Eps__
+ if VL__(K__+1)<-Eps__
+ Tmp__=1/(VL__(K__)-VL__(K__+1))*(-VL__(K__+1)*PL__(K__,:)...
+ + VL__(K__)*PL__(K__+1,:));
+ QL__=[QL__;Tmp__];
+ end
+ else
+ if VL__(K__+1)>Eps__
+ Tmp__=1/(-VL__(K__)+VL__(K__+1))*(VL__(K__+1)*PL__(K__,:)...
+ - VL__(K__)*PL__(K__+1,:));
+ QL__=[QL__;Tmp__];
+ end;
+ end;
+ end;
+ if size(QL__,1)==2
+ Out__=[Out__;%inf,%inf;QL__(1,:);QL__(2,:)];
+ end;
+ end;
+ end;
+ Out__=Out__(2:size(Out__,1),:);
+ if size(Out__,1)>0
+ Out__=Connectseg(Out__);
+ else
+ Out__=[];
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.bin
new file mode 100644
index 00000000..37882bfa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.sci
new file mode 100755
index 00000000..9dacd30c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/InWindow.sci
@@ -0,0 +1,11 @@
+function Rx=InWindow(PA)
+ global XMIN XMAX YMIN YMAX
+ Eps=10.0^(-6);
+ X=PA(1); Y=PA(2);
+ if X>XMIN-Eps & X<XMAX+Eps & Y>YMIN-Eps & Y<YMAX+Eps
+ Rx='i'
+ else
+ Rx='o'
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.bin
new file mode 100644
index 00000000..80050aeb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.sci
new file mode 100755
index 00000000..d5e09ff4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Initangle.sci
@@ -0,0 +1,8 @@
+// 08.07.11
+
+function Initangle()
+ global PHI THETA;
+ PHI=30*%pi/180;
+ THETA=60*%pi/180;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.bin
new file mode 100644
index 00000000..cca9ea76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.sci
new file mode 100755
index 00000000..abd3377f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Integrate.sci
@@ -0,0 +1,25 @@
+// 09.10.09
+// 09.10.21 Es, Er
+
+function Out=Integrate(varargin);
+ Nargs=length(varargin);
+ Fs=varargin(1);
+ Vs=varargin(2);
+ Itv=varargin(3);
+ Es=1d-10;
+ if Nargs>3
+ Es=varargin(4);
+ end;
+ Er=1d-8;
+ if Nargs>4
+ Er=varargin(5);
+ end;
+ Out=0;
+ Na=1;
+ while Na<length(Itv)
+ A=Itv(Na); B=Itv(Na+1);
+ Out=Out+integrate(Fs,Vs,A,B,Es,Er);
+ Na=Na+1;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.bin
new file mode 100644
index 00000000..9c865940
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.sci
new file mode 100755
index 00000000..59b4fdcc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvs.sci
@@ -0,0 +1,34 @@
+// 08.05.18 Koshikawa
+// 08.05.19 Changed
+// 08.06.03
+// 09.11.12
+// 09.11.14 debug
+
+function PL=Intersectcrvs(varargin)
+ Nargs=length(varargin);
+ Eps=10^(-4);
+ Tmp=varargin(Nargs);
+ if type(Tmp)==1 & length(Tmp)==1
+ Eps=Tmp;
+ end
+ G1=varargin(1);
+ if Mixtype(G1)==1
+ G1=list(G1);
+ end;
+ G2=varargin(2);
+ if Mixtype(G2)==1
+ G2=list(G2); //
+ end;
+ PL=list();
+ for N=1:length(G1)
+ for M=1:length(G2)
+ KL=IntersectcrvsPp(G1(N),G2(M),Eps);
+ for I=1:length(KL)
+ Tmp=KL(I);;
+ P=Tmp(1);
+ PL($+1)=P;
+ end;
+ end;
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.bin
new file mode 100644
index 00000000..806ccfa3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.sci
new file mode 100755
index 00000000..a1218d06
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectcrvsPp.sci
@@ -0,0 +1,101 @@
+// 08.05.18 Koshikawa
+// 08.05.19 Changed
+// 08.00.04
+// 09.11.07 for the same curve
+
+function KL=IntersectcrvsPp(varargin) // Modified
+ Nargs=length(varargin);
+ G1=varargin(1); G2=varargin(2);
+ Eps=10.0^(-4);
+ if Nargs>2
+ Eps=varargin(3)
+ end
+ SqEps=10.0^(-10);
+ Eps2=0.1;
+ if Nargs>3
+ Eps2=varargin(4)
+ end
+ Data1=G1;
+ Data2=G2;
+ if size(Data1,1)==size(Data2,1)
+ Tmp1=Data2(size(Data2,1):-1:1,:); // 09.11.07
+ Eps0=10^(-6);
+ Tmp2=norm(Data1-Data2);
+ Tmp3=norm(Data1-Tmp1);
+ if Tmp2<Eps0|Tmp3<Eps0
+ KL=list();
+ return;
+ end; //
+ end;
+ KL1=[];
+ KL2=[];
+ for I=1:size(Data1,1)-1
+ A=Data1(I,:);
+ B=Data1(I+1,:);
+ for J=1:size(Data2,1)-1
+ P=Data2(J,:); Q=Data2(J+1,:);
+ Tmp=Koutenseg(A,B,P,Q,Eps,Eps2);
+ if Tmp~=[%inf,-%inf]
+ if Op(3,Tmp)==0
+ Tmp1=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL1=Mixadd(KL1,Tmp1);
+ else
+ Tmp2=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL2=Mixadd(KL2,Tmp2);
+ end
+ end
+ end
+ end
+ KL=[];
+ if Mixlength(KL1)>0
+ Tmp=Op(1,KL1);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ Tmp=MixS(P,I+T,J);
+ KL=MixL(Tmp);
+ end
+ for N=2:Mixlength(KL1)
+ Tmp=Op(N,KL1);
+ P=Op(1,Tmp);
+ Flg=0;
+ for K=1:Mixlength(KL)
+ Tmp=Op(K,KL);
+ if Vecnagasa2(P-Op(1,Tmp))<SqEps
+ Flg=1;
+ break
+ end
+ end
+ if Flg==0
+ Tmp=Op(N,KL1);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ Tmp=MixS(P,I+T,J);
+ KL=Mixadd(KL,Tmp);
+ end
+ end
+ for N=1:Mixlength(KL2)
+ Tmp=Op(N,KL2);
+ P=Op(1,Tmp);
+ Flg=0;
+ for K=1:Mixlength(KL)
+ Tmp=Op(K,KL);
+ if Vecnagasa2(P-Op(1,Tmp))<SqEps
+ Flg=1;
+ break
+ end
+ end
+ if Flg==0
+ Tmp=Op(N,KL2);
+ T=Op(2,Tmp);
+ T=min(max(T,0),1);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ Tmp=MixS(P,I+T,J);
+ KL=Mixadd(KL,Tmp);
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.bin
new file mode 100644
index 00000000..fd6bbac1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.sci
new file mode 100755
index 00000000..2a2e5b6c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectcrvsf.sci
@@ -0,0 +1,47 @@
+// 08.10.26
+// 10.02.16
+
+function Out=Intersectcrvsf(varargin)
+ Nargs=length(varargin);
+ Eps0=10^(-4);
+ Crv=varargin(1);
+ Fd=varargin(2);
+ N=3;Uveq=1;
+ if Nargs>=3
+ Tmp=varargin(3);
+ if type(Tmp)==10
+ Uveq=Tmp;
+ N=4;
+ end;
+ end;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Out=[];
+ for I=1:Numptcrv(Crv)-1
+ PtA=Ptcrv(I,Crv);
+ PtB=Ptcrv(I+1,Crv);
+ if norm(PtB-PtA)<Eps0
+ continue;
+ end;
+ PL=Meetpoints(PtA,PtB,Fd,Uveq,Np,Eps(1));
+ for J=1:Mixlength(PL)
+ Pt=Mixop(J,PL);
+ Tmp=norm(Pt-PtA)/norm(PtB-PtA);
+ Tmp=min(max(Tmp,0),1);
+ Out=Mixadd(Out,[Pt,I+Tmp]);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.bin
new file mode 100644
index 00000000..12e2536d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.sci
new file mode 100755
index 00000000..ed92a5aa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Intersectlines.sci
@@ -0,0 +1,22 @@
+// 09.10.11
+// 09.10.12
+
+function Out=Intersectlines(L1,L2)
+ Eps0=10^(-6);
+ P=Ptstart(L1);
+ a1=P(1); a2=P(2);
+ V=Ptend(L1)-P;
+ b1=V(1); b2=V(2);
+ P=Ptstart(L2);
+ c1=P(1); c2=P(2);
+ V=Ptend(L2)-P;
+ d1=V(1); d2=V(2);
+ Den=b1*d2-d1*b2;
+ if abs(Den)<Eps0
+ Out=[];
+ return;
+ end;
+ x=-(d1*b2*a1-c1*b1*d2-d1*a2*b1+d1*b1*c2)/Den;
+ y=-(-a2*b1*d2+b2*a1*d2-b2*c1*d2+c2*d1*b2)/Den;
+ Out=[x,y];
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.bin
new file mode 100644
index 00000000..12429fff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.sci
new file mode 100755
index 00000000..4b246e95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/IntersectselfPp.sci
@@ -0,0 +1,95 @@
+// 09.05.27
+// 09.06.03
+// 09.06.05
+
+function KL=IntersectselfPp(varargin)
+ Nargs=length(varargin);
+ G1=varargin(1);
+ Eps=10.0^(-4);
+ if Nargs>1
+ Eps=varargin(2)
+ end
+ Eps0=10.0^(-5);
+ Eps2=0.01;
+// if Nargs>2
+// Eps2=varargin(3)
+// end;
+ Data1=G1;
+ KL1=[];
+ KL2=[];
+ for I=1:size(Data1,1)-2
+ A=Data1(I,:);
+ B=Data1(I+1,:);
+ Is=I+2;
+ Tmp=Data1(Is,:);
+ while norm(Tmp-B)<Eps & Is<size(Data1,1);
+ Is=Is+1;
+ Tmp=Data1(Is,:);
+ end;
+ for J=Is:size(Data1,1)-1
+ P=Data1(J,:); Q=Data1(J+1,:);
+ Tmp=Koutenseg(A,B,P,Q,Eps,Eps2);
+ if Tmp~=[%inf,-%inf]
+ if Op(3,Tmp)==0
+ Tmp1=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL1=Mixadd(KL1,Tmp1);
+ else
+ Tmp2=MixS(Op(1,Tmp),Op(2,Tmp),I,J);
+ KL2=Mixadd(KL2,Tmp2);
+ end
+ end
+ end
+ end
+ KL=[];
+ if Mixlength(KL1)>0
+ Tmp=Op(1,KL1);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ S=ParamonCurve(P,J,Data1);
+ Tmp=MixS(P,I+T,J);
+ Tmp2=MixS(P,S,I);
+ KL=MixL(Tmp);
+ KL=Mixadd(KL,Tmp2);
+ end;
+ for N=2:Mixlength(KL1)
+ Tmp=Op(N,KL1);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ S=ParamonCurve(P,J,Data1);
+ Tmp=MixS(P,I+T,J);
+ Tmp1=MixS(P,S,I);
+ KL=Mixadd(KL,Tmp);
+ KL=Mixadd(KL,Tmp1);
+ end
+ for N=1:Mixlength(KL2)
+ Tmp=Op(N,KL2);
+ P=Op(1,Tmp);
+ T=Op(2,Tmp);
+ T=min(max(T,0),1);
+ I=Op(3,Tmp);
+ J=Op(4,Tmp);
+ S=ParamonCurve(P,J,Data1);
+ Flg=0;
+ for K=1:Mixlength(KL)
+ Tmp=Op(K,KL);
+ if norm(P-Op(1,Tmp))<Eps
+ Tmp1=Op(2,Tmp);
+ if abs(I+T-Tmp1)<Eps
+ Flg=1;
+ break;
+ end;
+ end;
+ end;
+ if Flg==0
+ Tmp=MixS(P,I+T,J);
+ Tmp1=MixS(P,S,I);
+ KL=Mixadd(KL,Tmp);
+ KL=Mixadd(KL,Tmp1);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.bin
new file mode 100644
index 00000000..a247d3a0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.sci
new file mode 100644
index 00000000..bf6f976f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invdashline.sci
@@ -0,0 +1,29 @@
+// 10.11.13 ( Flattenlist used
+// 13.10.19 debugged
+
+function Invdashline(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Nall=Nargs; Sen=1 ; Gap=1;
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1 & Tmp>0 // 2013.10.19
+ Tmp1=varargin(Nall-1);
+ if type(Tmp1)==1 & length(Tmp1)==1 & Tmp1>0 // 2013.10.19
+ Sen=Tmp1; Gap=Tmp;
+ Nall=Nall-2;
+ else
+ Sen=Tmp; Gap=Sen;
+ Nall=Nall-1;
+ end
+ end
+ Sen=1000/2.54/MilliIn*Sen;
+ Gap=1000/2.54/MilliIn*Gap;
+ for N=1:Nall
+ Tmp=varargin(N);
+ Fdata=Flattenlist(Tmp);
+ for I=1:length(Fdata);
+ Figdata=Fdata(I);
+ Makehasen(Figdata,Sen,Gap,1);
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.bin
new file mode 100644
index 00000000..ab928c50
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.sci
new file mode 100755
index 00000000..9f9f9d95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invert.sci
@@ -0,0 +1,6 @@
+// 08.05.31
+
+function OutL=Invert(Pd)
+ OutL=Pd(size(Pd,1):-1:1,:);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.bin
new file mode 100644
index 00000000..b5f41832
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci
new file mode 100755
index 00000000..4d7863b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invparapt.sci
@@ -0,0 +1,50 @@
+// 08.07.11
+// 08.08.17
+// 09.10.31
+// 09.11.12
+
+function Out=Invparapt(varargin)
+ Eps=10^(-4);
+ Fk=varargin($);
+ NFk=Numptcrv(Fk)
+ Tmp=varargin(1);
+ if type(Tmp)==1 & size(Tmp)==1
+ Ph=Tmp;
+ Fh=varargin(2);
+ else
+ Fh=Projpara(Fk);
+ if NFk>2
+ Tmp1=Nearestpt(Tmp,Fh);
+ Ph=Tmp1(2);
+ else
+ Ah=Ptcrv(1,Fh); Bh=Ptcrv(2,Fh);
+ V1=Tmp-Ah; V2=Bh-Ah;
+ Tmp1=Crossprod(V1,V2);
+ if abs(Tmp1)>Eps
+ disp('Not on the line');
+ Out=[];
+ return;
+ else
+ Ph=Dotprod(V1,V2)/norm(V2)^2+1; // 09.11.12
+ end;
+ end;
+ end;
+ if NFk>2
+ N=Trunc(Ph);
+ S0=Ph-N;
+ if Ph>Numptcrv(Fh)-Eps
+ Out=list(Ptend(Fk),Numptcrv(Fh));
+ return;
+ end;
+ else
+ N=1;
+ S0=Ph-1; // 09.11.12
+ end;
+ Ak=Ptcrv(N,Fk); Bk=Ptcrv(N+1,Fk);
+ Ah=Ptcrv(N,Fh); Bh=Ptcrv(N+1,Fh);
+ Ph=(1-S0)*Ah+S0*Bh;
+ T2=S0;
+ Pk=(1-T2)*Ak+T2*Bk;
+ Out=list(Pk,N+T2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.bin
new file mode 100644
index 00000000..10fe9aa7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.sci
new file mode 100755
index 00000000..c2c35355
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Invperspt.sci
@@ -0,0 +1,65 @@
+// 08.08.12
+// 09.10.31
+// 09.11.12
+
+function Out=Invperspt(varargin)
+ global FocusPoint EyePoint;
+ Eps=10^(-4);
+ Fk=varargin($);
+ NFk=Numptcrv(Fk)
+ Tmp=varargin(1);
+ if type(Tmp)==1 & length(Tmp)==1
+ Ph=varargin(1);
+ Fh=varargin(2);
+ else
+ Fh=Projpers(Fk);
+ if NFk>2
+ Tmp1=Nearestpt(Tmp,Fh);
+ Ph=Tmp1(2);
+ else
+ Ah=Ptcrv(1,Fh); Bh=Ptcrv(2,Fh);
+ V1=Tmp-Ah; V2=Bh-Ah;
+ Tmp1=Crossprod(V1,V2);
+ if abs(Tmp1)>Eps
+ disp('Not on the line');
+ Out=[];
+ return;
+ else
+ Ph=Dotprod(V1,V2)/norm(V2)^2+1; // 09.11.12
+ end;
+ end;
+ end;
+ if NFk>2
+ N=Trunc(Ph);
+ S0=Ph-N;
+ if Ph>Numptcrv(Fh)-Eps
+ Out=list(Ptend(Fk),Numptcrv(Fh));
+ return;
+ end;
+ else
+ N=1;
+ S0=Ph-1; // 09.11.12
+ end;
+ Ak=Ptcrv(N,Fk); Bk=Ptcrv(N+1,Fk);
+ Ah=Ptcrv(N,Fh); Bh=Ptcrv(N+1,Fh);
+ Ph=(1-S0)*Ah+S0*Bh;
+ Phc=Cancoordpers([Ph,0]);
+ Ahc=Cancoordpers([Ah,0]);
+ Bhc=Cancoordpers([Bh,0]);
+ Vp=Phc-EyePoint;
+ Va=Ak-EyePoint;
+ AB=Bk-Ak;
+ Cp=Crossprod(Vp,AB);
+ Nmr=Crossprod(Va,Vp);
+ Mx=max(abs(Cp));
+ if abs(Cp(1))==Mx
+ T2=Nmr(1)/Cp(1);
+ elseif abs(Cp(2))==Mx
+ T2=Nmr(2)/Cp(2);
+ else
+ T2=Nmr(3)/Cp(3);
+ end;
+ Pk=(1-T2)*Ak+T2*Bk;
+ Out=list(Pk,N+T2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.bin
new file mode 100644
index 00000000..13bbbe42
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.sci
new file mode 100755
index 00000000..04aaf4eb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joincrvs.sci
@@ -0,0 +1,51 @@
+// 08.05.31
+// 08.08.22
+// 08.09.14
+// 08.09.20
+// 08.10.27
+// 11.06.25
+
+function PtL=Joincrvs(varargin)
+ Nall=length(varargin);
+ Eps=10^(-4);
+ Tmp=varargin(Nall);
+ if type(Tmp)==1 & length(Tmp)==1
+ Eps=Tmp;
+ Nall=Nall-1;
+ end;
+ QdL=list();
+ for I=1:Nall
+ QdL($+1)=varargin(I); // 11.06.25
+ end;
+ QdL=Flattenlist(QdL); // 11.06.25
+ if length(QdL)==0
+ PtL=[];
+ return;
+ end;
+ PtL=[Mixop(1,QdL)];
+ for I=2:Mixlength(QdL)
+ Qd=QdL(I);
+ if Numptcrv(Qd)<=1 // 11.06.25
+ continue;
+ end;
+ P=Ptend(PtL)
+ S=Ptstart(PtL);
+ Q=Ptstart(Qd);
+ R=Ptend(Qd);
+ MN=min(norm(P-Q),norm(P-R),norm(S-Q),norm(S-R));
+ if MN==norm(P-R)
+ Qd=Invert(Qd);
+ elseif MN==norm(S-Q)
+ PtL=Invert(PtL);
+ elseif MN==norm(S-R);
+ PtL=Invert(PtL);
+ Qd=Invert(Qd);
+ end;
+ if MN>Eps
+ PtL=[PtL;Qd];
+ else
+ PtL=[PtL;Qd(2:size(Qd,1),:)];
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.bin
new file mode 100644
index 00000000..5baec784
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.sci
new file mode 100755
index 00000000..78cd46e5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Joingraphics.sci
@@ -0,0 +1,26 @@
+// 11.11.02 (for list structure)
+
+function P=Joingraphics(varargin)
+ Ls=Flattenlist(varargin);
+ N=length(Ls);
+ Tp=Ls(N);
+ Listflg=0;
+ if type(Tp)==10
+ Tmp=part(Tp,1);
+ if Tmp=="L"|Tmp=="l"
+ Listflg=1
+ end;
+ N=N-1;
+ Ls=Mixsub(1:N,Ls);
+ end;
+ if Listflg==1
+ P=Ls
+ else
+ P=[];
+ for I=1:N
+ Tmp=Ls(I);
+ P=[P;%inf,%inf;Tmp];
+ end;
+ P=P(2:size(P,1),:)
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.bin
new file mode 100644
index 00000000..5d029c80
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.sci
new file mode 100755
index 00000000..bbe02e62
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ketinit.sci
@@ -0,0 +1,57 @@
+// 08.07.08 PHI,THETA,FocusPoint,EyePoint;
+// 08.08.08
+// 08.08.31
+// 08.09.18
+// 09.10.09 ASSIGNLIST
+// 09.12.25 SCALING
+// 10.04.16 TEXFOR
+// 13.05.19 funcprot(0)
+// 13.03.05 MARKLEN instead of MEMORI
+
+function Ketinit()
+ global THISVERSION
+ global TenSize TenSizeInit Wfile XMIN XMAX YMIN YMAX
+ global XNAME XPOS YNAME YPOS ONAME OPOS ARROWSIZE
+ global ULEN MilliIn PenThick PenThickInit ZIKU
+ global MEMORI MEMORIInit MEMORINow GENTEN
+ global MARKLEN MARKLENInit MARKLENNow
+ global YaSize YaAngle YaPosition YaThick YaStyle
+ global PHI THETA FocusPoint EyePoint ASSIGNLIST
+ global SCALEX SCALEY LOGX LOGY TEXFORLEVEL TEXFORLAST
+ funcprot(0); // 2013.05.19
+ Setversion();
+ XMIN=-5 ;XMAX=5;
+ YMIN=-5 ; YMAX=5;
+ ZIKU='line'; ARROWSIZE=1;
+ XNAME='$x$' ; XPOS='e';
+ YNAME='$y$' ; YPOS='n';
+ ONAME='O' ; OPOS='sw';
+ ULEN='1cm';
+ MilliIn=1/2.54*1000;
+ PenThick=round(MilliIn*0.02);
+ PenThickInit=PenThick;
+ TenSizeInit=0.02;
+ TenSize=TenSizeInit;
+ Wfile='default';
+ MEMORI=0.05;
+ MEMORIInit=MEMORI;
+ MEMORINow=MEMORI;
+ MARKLEN=0.05;
+ MARKLENInit=MARKLEN;
+ MARKLENNow=MARKLEN;
+ GENTEN=[0,0];
+ YaSize=1; YaAngle=18; YaPosition=1;
+ YaThick=1; YaStyle='tf';
+ PHI=30*%pi/180;
+ THETA=60*%pi/180;
+ FocusPoint=[0,0,0];
+ EyePoint=[5,5,5];
+ ASSIGNLIST=list('`',char(39));
+ SCALEX=1;
+ SCALEY=1;
+ LOGX=0;
+ LOGY=0;
+ TEXFORLEVEL=0;
+ TEXFORLAST=list();
+ endfunction;
+ \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.bin
new file mode 100644
index 00000000..2f1c2398
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.sci
new file mode 100755
index 00000000..c12b721e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kouten.sci
@@ -0,0 +1,31 @@
+// 08.05.18
+// 08.05.19
+// 09.06.01 (same as 05.19)
+
+function Out=Kouten(PA,V,P,Q);
+ Eps=10.0^(-6);
+ A1=PA(1); A2=PA(2);
+ V1=V(1); V2=V(2);
+ P1=P(1); P2=P(2);
+ U1=Q(1)-P1; U2=Q(2)-P2;
+ Tmp=norm(P-Q)*norm(V);
+ if Tmp==0
+ Out=[%inf,-%inf];
+ return
+ end
+ D=U1*V2-U2*V1;
+ if abs(D)/Tmp<Eps
+ Out=[%inf,-%inf];
+ return
+ end
+ S=((-A2+P2)*V1+(A1-P1)*V2)/D;
+ if S>1+Eps | S<-Eps
+ Out=[%inf,-%inf];
+ return
+ end
+ T=((-A2+P2)*U1+(A1-P1)*U2)/D;
+ Tmp=PA+T*V;
+ Out=MixS(T,Tmp,sign(D));
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.bin
new file mode 100644
index 00000000..ffe8ecfe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.sci
new file mode 100755
index 00000000..82cf1e2c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/KoutenList.sci
@@ -0,0 +1,51 @@
+// 08.05.18
+// 08.05.20
+// 08.06.02
+
+function TenL=KoutenList(PA,V,Bdy)
+ Eps=10.0^(-6);
+ TenL=[];
+ for N=1:Mixlength(Bdy)
+ KL=Op(N,Bdy);
+ for K=1:size(KL,1)-1
+ P=KL(K,:); Q=KL(K+1,:);
+ if P~='/' & Q~='/'
+ Tmp=Kouten(PA,V,P,Q);
+ if Tmp~=[%inf,-%inf]
+ Ten=Mixadd(Tmp,N);
+ Flg=0;
+ NN=Mixlength(TenL);
+ I=1;
+ while Flg==0 & I<=NN
+ Tmp=Op(I,TenL);
+ if Op(1,Ten)<Op(1,Tmp)-Eps
+ Tmp=Mixsub(1:I-1,TenL);
+ Tmp1=Mixadd(Tmp,Ten);
+ Tmp2=Mixsub(I:Mixlength(TenL),TenL);
+ TenL=Mixjoin(Tmp1,Tmp2);
+ Flg=1;
+ elseif Op(1,Ten)<Op(1,Tmp)+Eps
+ if Op(4,Ten)~=Op(4,Tmp)
+ Tmp=Mixsub(1:I-1,TenL);
+ Tmp1=Mixadd(Tmp,Ten);
+ Tmp2=Mixsub(I:Mixlength(TenL),TenL);
+ TenL=Mixjoin(Tmp1,Tmp2);
+ Flg=1;
+ elseif Op(3,Ten)~=Op(3,Tmp)
+ Tmp1=Mixsub(1:I-1,TenL);
+ Tmp2=Mixsub(I+1:Mixlength(TenL),TenL);
+ TenL=Mixjoin(Tmp1,Tmp2);
+ end
+ Flg=1;
+ end
+ I=I+1;
+ end
+ if Flg==0
+ TenL=Mixadd(TenL,Ten);
+ end
+ end
+ end
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.bin
new file mode 100644
index 00000000..f7e0a110
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.sci
new file mode 100755
index 00000000..371807fa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Koutenseg.sci
@@ -0,0 +1,105 @@
+//
+// 08.05.19
+// 09.12.05
+
+function Out=Koutenseg(varargin)
+ //pointdata on AB at which AB intersects CD
+ Nargs=length(varargin);
+ Eps0=10^(-4);
+ A=varargin(1); V=varargin(2)-A;
+ Sv2=V(1)^2+V(2)^2;
+ if Sv2<10^(-6)
+ Out=[%inf,-%inf];
+ return
+ end
+ P=varargin(3)-A; Q=varargin(4)-A;
+ Eps=10.0^(-3);
+ if Nargs>=5
+ Eps=varargin(5);
+ end
+ Eps2=0.2;
+ if Nargs>=6
+ Eps2=varargin(6);
+ end
+ Eps=min(Eps2,Eps/sqrt(Sv2));
+ P1=(P(1)*V(1)+P(2)*V(2))/Sv2;
+ P2=(-P(1)*V(2)+P(2)*V(1))/Sv2;
+ Q1=(Q(1)*V(1)+Q(2)*V(2))/Sv2;
+ Q2=(-Q(1)*V(2)+Q(2)*V(1))/Sv2;
+ m1=-Eps; M1=1+Eps;
+ m2=-Eps; M2=Eps;
+ if (max(P1,Q1)<m1) | (min(P1,Q1)>M1)
+ Out=[%inf,-%inf];
+ return
+ end
+ if (max(P2,Q2)<m2) | (min(P2,Q2)>M2)
+ Out=[%inf,-%inf];
+ return
+ end
+ if P2*Q2<0
+ T=P1-(Q1-P1)/(Q2-P2)*P2;
+ if (T>m1) & (T<M1)
+ if (T>-Eps0) & (T<1+Eps0)
+ Tmp1=A+T*V;
+ Tmp2=min(max(T,0),1);
+ Out=MixS(Tmp1,Tmp2,0);
+ else
+ Tmp1=A+T*V;
+ Tmp2=min(max(T,0),1);
+ Out=MixS(Tmp1,Tmp2,1);
+ end
+ return
+ end
+ if P1<m1 | P1>M1 | P2<m2 | P2>M2
+ if Q1<m1 | Q1>M1 | Q2<m2 | Q2>M2
+ Out=[%inf,-%inf];
+ return
+ end
+ T=min(max(Q1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ T=min(max(P1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ if P1 > -Eps0 & P1 < 1 + Eps0 & P2 > -Eps0 & P2 < Eps0
+ T= P1;
+ Tmp=A+T*V;
+ Out= MixS(Tmp, T, 0);
+ return
+ end
+ if Q1 > -Eps0 & Q1 < 1 + Eps0 & Q2 > -Eps0 & Q2 < Eps0
+ T= Q1;
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,0);
+ return
+ end
+ if P1<m1 | P1>M1 | P2<m2 | P2>M2
+ if Q1<m1 | Q1>M1 | Q2<m2 | Q2>M2
+ Out=[%inf,-%inf];
+ return
+ end
+ T=min(max(Q1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ if Q1<m1 | Q1>M1 | Q2<m2 | Q2>M2
+ T=min(max(P1,0),1);
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+ return
+ end
+ if abs(P2)<abs(Q2)
+ T=min(max(P1,0),1);
+ else
+ T=min(max(Q1,0),1);
+ end
+ Tmp=A+T*V;
+ Out=MixS(Tmp,T,1);
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.bin
new file mode 100644
index 00000000..70d72423
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.sci
new file mode 100755
index 00000000..0e38dae7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukannozoku.sci
@@ -0,0 +1,45 @@
+// 08.07.13
+// 08.10.16
+
+function Res=Kukannozoku(Jokyo,KukanL)
+ Eps=10^(-6);
+ N=size(KukanL,1);
+ T1=Jokyo(1); T2=Jokyo(2);
+ Tmp=KukanL(1,:);
+ T1=max(T1,Tmp(1));
+ Tmp=KukanL(N,:);
+ T2=min(T2,Tmp(2));
+ Res=[];
+ Flg=0;
+ for I=1:N
+ Ku=KukanL(I,:);
+ if Flg==0
+ if Ku(2)<T1
+ Res=[Res;Ku];
+ else
+ Flg=1;
+ if Ku(1)<T1-Eps
+ Tmp=[Ku(1),T1];
+ Res=[Res;Tmp];
+ end;
+ if Ku(2)>T2+Eps
+ Tmp=[T2,Ku(2)];
+ Res=[Res;Tmp];
+ end;
+ end;
+ elseif Flg==1
+ if Ku(2)<T2
+ continue;
+ else
+ Flg=2;
+ if Ku(1)<T2-Eps
+ Ku=[T2,Ku(2)];
+ end;
+ Res=[Res;Ku];
+ end;
+ else
+ Res=[Res;Ku];
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.bin
new file mode 100644
index 00000000..0d78251c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.sci
new file mode 100755
index 00000000..4e38175f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kukeiwake.sci
@@ -0,0 +1,62 @@
+// 08.05.30
+
+function Out=Kukeiwake(PL)
+ global XMIN XMAX YMIN YMAX;
+ Eps=10.0^(-6);
+ NW=[XMIN,YMAX]; SW=[XMIN,YMIN];
+ SE=[XMAX,YMIN]; NE=[XMAX,YMAX];
+ Sikaku=[NW;SW;SE;NE;NW];
+ Kt=IntersectcrvsPp(PL,Sikaku);
+ if Mixlength(Kt)~=2
+ disp('not two points')
+ return
+ end
+ Tmp=Op(1,Kt);
+ Pt1=Op(1,Tmp);
+ N1=Trunc(Op(2,Tmp));
+ M1=Op(3,Tmp);
+ Tmp=Op(2,Kt);
+ Pt2=Op(1,Tmp);
+ N2=Trunc(Op(2,Tmp));
+ M2=Op(3,Tmp);
+ T1=ParamonCurve(Pt1,M1,Sikaku);
+ T2=ParamonCurve(Pt2,M2,Sikaku);
+ QL=[];
+ if Vecnagasa(Pt1,PL(N1+1,:))>Eps
+ QL=[Pt1];
+ end
+ QL=[QL;PL(N1+1:N2,:)];
+ if Vecnagasa(Pt2,PL(N2,:))>Eps
+ QL=[QL;Pt2];
+ end
+ HidariL=QL;
+ Ms=M2+1; Me=M1;
+ if T1<T2+Eps Me=M1+4; end
+ for M=Ms:Me
+ Tmp=HidariL(size(HidariL,1),:);
+ P=Sikaku(modulo(M-1,4)+1,:);
+ if Vecnagasa(Tmp,P)>Eps
+ HidariL=[HidariL;P];
+ end
+ end
+ Tmp=HidariL(size(HidariL,1),:);
+ if Vecnagasa(Tmp,Pt1)>Eps
+ HidariL=[HidariL;Pt1];
+ end
+ MigiL=QL;
+ Ms=M2; Me=M1+1;
+ if T1>T2-Eps Me=Me-4; end;
+ for M=Ms:-1:Me
+ Tmp=MigiL(size(MigiL,1),:);
+ P=Sikaku(modulo(M-1,4)+1,:);
+ if Vecnagasa(Tmp,P)>Eps
+ MigiL=[MigiL;P]
+ end
+ end
+ Tmp=MigiL(size(MigiL,1),:);
+ if Vecnagasa(Tmp,Pt1)>Eps
+ MigiL=[MigiL;Pt1];
+ end
+ Out=MixS(HidariL,MigiL);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.bin
new file mode 100644
index 00000000..fdf86c27
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.sci
new file mode 100755
index 00000000..a07a89d1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyorihensuu.sci
@@ -0,0 +1,30 @@
+function Kyorihensuu(varargin)
+ if length(varargin)==0
+ FL='default';
+ else
+ FL=varargin(1);
+ if FL==''
+ FL='tmp.tex'
+ end
+ end
+ StrM=[...
+ '\newlength{\Width}%',...
+ '\newlength{\Height}%',...
+ '\newlength{\Depth}%'...
+ ];
+ if FL~='default'
+ Fid=mopen(FL,'w');
+ mprintf('%s\n\n','Writing to '+FL);
+ end;
+ for I=1:size(StrM,2)
+ Str=StrM(I);
+ mprintf('%s\n',Str);
+ if FL~='default'
+ mfprintf(Fid,'%s\n',Str);
+ end
+ end
+ if FL~='default'
+ mclose(Fid)
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.bin
new file mode 100644
index 00000000..fcb5da5c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.sci
new file mode 100755
index 00000000..4090c2da
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Kyoukai.sci
@@ -0,0 +1,144 @@
+// 08.05.18
+// 08.05.19
+// 08.05.20
+// 08.05.30
+// 08.09.19
+// 08.10.26
+// 09.01.15 "e"
+// 09.05.18
+// 09.12.05
+// 16.11.03 Eps=10^(-5)
+// 16.12.05 Eps=10^(-7)
+
+function PLall=Kyoukai(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ Eps0=10^(-7);
+ DataL=[];
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if Mixtype(Tmp)==1
+ Tmp1=MixS(Tmp);
+ DataL=Mixadd(DataL,Tmp1);
+ end
+ if Mixtype(Tmp)==2
+ DataL=Mixadd(DataL,Tmp);
+ end
+ if Mixtype(Tmp)==3
+ DataL=Mixjoin(DataL,Tmp);
+ end
+ end;
+ Eps=10.0^(-4);
+ PLall=[];
+ Sflg=0;
+ N=Mixlength(DataL);
+ for I=1:N
+ Data=Op(I,DataL);
+ Tmp=Op(Mixlength(Data),Data);
+ if type(Tmp)==1 & size(Tmp,1)==1 & size(Tmp,2)>1
+ Rg=Tmp ; Nd=Mixlength(Data)-1;
+ elseif type(Tmp)==10
+ Rg=Tmp ; Nd=Mixlength(Data)-1;
+ else
+ Rg='c' ; Nd=Mixlength(Data);
+ end;
+ for J=1:Nd
+ Tmp=Op(J,Data);
+ if type(Tmp)==10
+ Rg=Tmp;
+ continue
+ end
+ Points=Tmp;
+ P1=Ptstart(Points);
+ P2=Ptend(Points);
+ if J==1
+ PL=Points;
+ Pfirst=P1;
+ Plast=P2;
+ if Nd>=2
+ Tmp=Op(2,Data);
+ P=Ptstart(Tmp);
+ Q=Ptend(Tmp);
+ if norm(P2-P)>Eps & norm(P2-Q)>Eps
+ Tmp=size(PL,1);
+ PL=PL(Tmp:-1:1,:);
+ Pfirst=Ptstart(PL);
+ Plast=Ptend(PL);
+ end;
+ end
+ else
+ if norm(P1-Plast)<Eps
+ Stp=1; Ks=2; Ke=size(Points,1);
+ elseif norm(P2-Plast)<Eps
+ Stp=-1; Ks=size(Points,1)-1; Ke=1;
+ else
+ PL=[PL;%inf,%inf;Points];
+ Sflg=1;
+ Pfirst=P1;
+ Plast=P2;
+ Stp=1; Ks=size(Points,1)-1; Ke=1;
+ end
+ for K=Ks:Stp:Ke
+ PL=[PL;Points(K,:)];
+ end
+ Plast=Points(Ke,:);
+ end
+ end
+ if norm(Pfirst-Plast)>Eps
+ Np=size(PL,1);
+ if Rg=='c'
+ PL=[PL;Pfirst];
+ elseif Rg=='s'
+ Tmp=[PL(1:Np,2);YMIN];
+ Y=min(Tmp)-1;
+ P=[Plast(1),Y]; Q=[Pfirst(1),Y];
+ PL=[PL;P;Q;Pfirst];
+ elseif Rg=='n'
+ Tmp=[PL(1:Np,2);YMAX];
+ Y=max(Tmp)+1;
+ P=[Plast(1),Y]; Q=[Pfirst(1),Y];
+ PL=[PL;P;Q;Pfirst];
+ elseif Rg=='w'
+ Tmp=[PL(1:Np,1);XMIN];
+ X=min(Tmp)-1;
+ P=[X,Plast(2)]; Q=[X,Pfirst(2)];
+ PL=[PL;P;Q;Pfirst];
+ elseif Rg=='e'
+ Tmp=[PL(1:Np,1);XMAX];
+ X=max(Tmp)+1;
+ P=[X,Plast(2)]; Q=[X,Pfirst(2)];
+ PL=[PL;P;Q;Pfirst];
+ elseif type(Rg)==1 & size(Rg,1)==1 & size(Rg,2)>1
+ Tmp=Kukeiwake(PL); //Modified from here
+ Tmp1=Op(1,Tmp);
+ Tmp2=Naigai(Rg,Mix(Tmp1));
+ if Tmp2==[1]
+ PL=Op(1,Tmp);
+ else
+ PL=Op(2,Tmp); // to here
+ end
+ end
+ end
+ Tmp=[Ptstart(PL)];
+ for J=2:size(PL,1)
+ P=PL(J,:);
+ Q=Tmp(size(Tmp,1),:);
+ if norm(P-Q)>Eps then
+ Tmp=[Tmp;P];
+ end
+ end
+ PL=Tmp;
+ PLall=Mixadd(PLall,PL);
+ end
+ if Mixlength(PLall)==1 & Sflg==0
+ Tmp=Op(1,PLall);
+// Tmp=Op(1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))>Eps0
+ Tmp=[Tmp;Ptstart(Tmp)];
+ PLall=MixS(Tmp);
+ end
+ end;
+endfunction;
+
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.bin
new file mode 100644
index 00000000..7949b7bf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.sci
new file mode 100755
index 00000000..7a7a4b78
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letter.sci
@@ -0,0 +1,100 @@
+//
+// 09.12.25
+
+function Letter(varargin)
+ global Wfile FID MEMORI;
+ Nargs=length(varargin);
+ for I=1:3:Nargs
+ Tmp=varargin(I);
+ P=Doscaling(Tmp);
+ X=P(1);
+ Y=P(2);
+ Houkou=varargin(I+1);
+ Mojiretu=varargin(I+2);
+ Hset=Houkou;
+ Vhoko='c';
+ if mtlb_findstr(Hset,'n')~=[]
+ Vhoko='n'; Y=Y+MEMORI;
+ end
+ if mtlb_findstr(Hset,'s')~=[]
+ Vhoko='s'; Y=Y-MEMORI;
+ end
+ Hhoko='c';
+ if mtlb_findstr(Hset,'e')~=[]
+ Hhoko='e'; X=X+MEMORI;
+ end
+ if mtlb_findstr(Hset,'w')~=[]
+ Hhoko='w'; X=X-MEMORI;
+ end
+ Hoko=Vhoko+Hhoko;
+ Suu='+-.0123456789';
+ SuuL=Suu;
+ Hcode=ascii(Houkou);
+ J=1; Dstr='';
+ while J<=length(Houkou)
+ Tmp=char(Hcode(J));
+ if mtlb_findstr(SuuL,Tmp)~=[]
+ if Dstr==''
+ Hk=char(Hcode(J-1));
+ end
+ Dstr=Dstr+Tmp;
+ else
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ Dstr='';
+ end
+ end
+ J=J+1;
+ end
+ if Dstr~=''
+ Nmbr=msscanf(Dstr,'%f');
+ D=Nmbr*MEMORI;
+ if Hk=='n'
+ Y=Y+D;
+ end
+ if Hk=='s'
+ Y=Y-D;
+ end
+ if Hk=='e'
+ X=X+D;
+ end
+ if Hk=='w'
+ X=X-D;
+ end
+ end
+ CalcWidth(Hoko,Mojiretu);
+ CalcHeight(Hoko,Mojiretu);
+ Tmp='){\hspace*{\Width}';
+ Str=Tmp+'\raisebox{\Height}{'+Mojiretu+'}}';
+ if Wfile=='default'
+ mprintf('%s','\put(');
+ mprintf('%6.4f%s%6.4f',X,',',Y);
+ mprintf('%s%s\n',Str,'%');
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s','\put(');
+ mfprintf(FID,'%6.4f%s%6.4f',X,',',Y);
+ mfprintf(FID,'%s%s\n',Str,'%');
+ mfprintf(FID,'%s\n','%');
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.bin
new file mode 100644
index 00000000..dc1116b4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.sci
new file mode 100755
index 00000000..f99917cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Letterrot.sci
@@ -0,0 +1,36 @@
+// 08.05.31
+// 08.08.24
+// 09.12.25
+
+function Letterrot(varargin)
+ global MEMORI;
+ P=varargin(1);
+ V=varargin(2); N=3;
+ P=Doscaling(P);
+ V=Doscaling(V);
+ Tmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1
+ Tmov=Tmp; N=N+1;
+ end
+ Nmov=0;
+ Tmp=varargin(N);
+ if type(Tmp)==1 then
+ Nmov=Tmp; N=N+1;
+ end
+ Mojiretu=varargin(N);
+ Tv=1/Vecnagasa(V)*V;
+ Nv=[-Tv(2),Tv(1)];
+ P=P+MEMORI*Tmov*Tv+MEMORI*Nmov*Nv;
+ Tmp=acos(V(1)/Vecnagasa(V));
+ Theta=round(Tmp*180/%pi);
+ if V(2)>=0
+ Units='';
+ else
+ Units='units=-360,';
+ end
+ Tmp='\rotatebox['+Units+'origin=c]{'+string(Theta);
+ Tmp=Tmp+'}{'+Mojiretu+'}';
+ Letter(P,"c",Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.bin
new file mode 100644
index 00000000..b8e9311a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.sci
new file mode 100755
index 00000000..bc44c2e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Lineplot.sci
@@ -0,0 +1,44 @@
+// 09.10.09
+// 09.10.12
+// 09.11.01
+// 09.11.12
+// 09.12.06
+// 10.12.04
+
+function Out=Lineplot(varargin)
+ Nargs=length(varargin);
+ A=varargin(1);
+ if type(A)==1 // 09.11.12 from
+ Tmp=length(A);
+ if Tmp>3
+ B=A(Tmp/2+1:Tmp);
+ A=A(1:Tmp/2);
+ Is=2;
+ else
+ B=varargin(2);
+ Is=3;
+ end;
+ else
+ B=A(2);
+ A=A(1);
+ Is=2;
+ end; // upto
+ Mag=100; Semi='';
+ for I=Is:Nargs
+ Tmp=varargin(I);
+ select type(Tmp)
+ case 1
+ Mag=Tmp;
+ case 10
+ Semi=Tmp;
+ end;
+ end;
+ V= Mag/norm(B-A)*(B-A) // 10.12.04 from here
+ if Semi==""
+ Out=Listplot(A-V,A+V)
+ elseif Semi=="+"
+ Out=Listplot(A,A+V)
+ else
+ Out=Listplot(A-V,A)
+ end // 10.12.04 to here
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.bin
new file mode 100644
index 00000000..5f1081ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.sci
new file mode 100755
index 00000000..0bc9f736
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Listplot.sci
@@ -0,0 +1,24 @@
+//
+// 08.07.13
+// 09.06.13
+
+function Z=Listplot(varargin)
+ Z=[];
+ for I=1:length(varargin)
+ Data=varargin(I);
+ if Mixtype(Data)==1
+ if size(Data,1)==1
+ Tmp=matrix(Data,2,size(Data,2)/2);
+ Z=[Z;Tmp'];
+ else
+ Z=[Z;Data];
+ end;
+ else
+ for J=1:Mixlength(Data)
+ Tmp=Mixop(J,Data);
+ Z=[Z;Tmp];
+ end
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.bin
new file mode 100644
index 00000000..e44f369d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci
new file mode 100755
index 00000000..27e70d48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeBowdata.sci
@@ -0,0 +1,49 @@
+//
+// 08.08.24
+// 10.01.02
+
+function Out=MakeBowdata(PA,PB,H)
+ global BOWSTART BOWEND
+ BOWSTART=PA;
+ BOWEND=PB;
+ Eps=10^(-5);
+ D=1/2*Vecnagasa(PB-PA);
+ R=(H^2+D^2)/(2*H);
+ A1=PA(1); A2=PA(2);
+ B1=PB(1); B2=PB(2);
+ if abs(A2-B2)>Eps
+ x=poly(0,'X');
+ y=-(A1-B1)*x/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2);
+ Eq1=(A1-x)^2+(A2-y)^2-R^2;
+ Tmp=coeff(Eq1);
+ C0=Tmp(1); C1=Tmp(2); C2=Tmp(3);
+ Det=sqrt(C1^2-4*C0*C2);
+ Ansx1=(-C1+Det)/(2*C2);
+ Ansx2=(-C1-Det)/(2*C2);
+ Tmp=horner(y,Ansx1);
+ PC=[Ansx1,Tmp];
+ Tmp=horner(y,Ansx2);
+ PC2=[Ansx2,Tmp];
+ else
+ Tmp=0.5*(PA+PB);
+ PC=Tmp+[0,R-H];
+ PC2=Tmp-[0,R-H];
+ end;
+ VA=PA-PC;
+ VB=PB-PC;
+ if VA(1)*VB(2)-VA(2)*VB(1)<0
+ PC=PC2;
+ end
+ AngA=acos((PA(1)-PC(1))/R);
+ if PA(2)-PC(2)<0
+ AngA=-AngA;
+ end
+ AngB=acos((PB(1)-PC(1))/R);
+ if PB(2)-PC(2)<0
+ AngB=-AngB;
+ end
+ if AngA>AngB
+ AngB=AngB+2*%pi;
+ end
+ Out=Mixmake(PC,R,AngA,AngB);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.bin
new file mode 100644
index 00000000..f1333732
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.sci
new file mode 100755
index 00000000..f3bbd3ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeCurves.sci
@@ -0,0 +1,62 @@
+//
+// 09.12.25
+// 10.01.01
+// 10.12.02 ( debugged for norm()==0 )
+
+function Outdata=MakeCurves(varargin)
+ Figdata=varargin(1);
+ Ptout=1;
+ if length(varargin)>=2
+ Ptout=varargin(2);
+ end
+ Eps=10.0^(-6);
+ IndM=Dataindex(Figdata);
+ Atos=[];
+ for Nd=1:size(IndM,1)
+ Tmp=IndM(Nd,:);
+ Motos=Figdata(Tmp(1):Tmp(2),:);
+ All=size(Motos,1);
+ if size(Motos,1)==1
+ if InWindow(Motos)=='o'
+ continue;
+ end;
+ if Ptout==1
+ Drwpt(Motos(1,:));
+ else
+ Atos=[Atos;%inf,%inf;Doscaling(Motos)];
+ end
+ continue
+ end
+ Crv=[];
+ for I=2:All
+ P=Motos(I-1,:);
+ Q=Motos(I,:);
+ Snbn=MeetWindow(P,Q);
+ if Snbn==[]
+ if Crv~=[]
+ Atos=[Atos;%inf,%inf;Doscaling(Crv)];
+ Crv=[];
+ end
+ else
+ if norm(Snbn(1,:)-Snbn(2,:))<Eps // 10.12.02
+ continue;
+ end;
+ if Crv==[]
+ Crv=Snbn
+ else
+ Tmp=Crv(size(Crv,1),:);
+ if norm(Tmp-Snbn(1,:))<Eps
+ Crv=[Crv;Snbn(2,:)];
+ else
+ Atos=[Atos;%inf,%inf;Doscaling(Crv)];
+ Crv=Snbn;
+ end
+ end
+ end
+ end
+ if size(Crv,1)>=2
+ Atos=[Atos;%inf,%inf;Doscaling(Crv)];
+ end
+ end
+ Outdata=Atos(2:size(Atos,1),:);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.bin
new file mode 100644
index 00000000..1c1d8d80
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.sci
new file mode 100755
index 00000000..81b0492f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakecutbycrvL.sci
@@ -0,0 +1,45 @@
+// 08.09.19
+// 08.10.15
+// 08.12.21
+
+function AnsL=MakecutbycrvL(Out1,CutuvL,Uveqstr,Uname,Vname,Eps)
+ if CutuvL==[]
+ if Mixtype(Out1)==1
+ AnsL=Mix(Out1);
+ else
+ AnsL=Out1;
+ end;
+ return;
+ end;
+ AnsL=[];
+ ParL=Partitionseg(Out1,CutuvL,Eps);
+ Flg=0;
+ for J=1:length(ParL)-1
+ Tmp=(ParL(J)+ParL(J+1))*0.5;
+ Tmp=PointonCurve(Tmp,Out1);
+ Tmp1='('+string(Tmp(1))+')';
+ Tmp2='('+string(Tmp(2))+')';
+ Tmp=strsubst(Uveqstr,Uname,Tmp1);
+ Tmp=strsubst(Tmp,Vname,Tmp2);
+ Tmp=evstr(Tmp);
+ if Tmp>0
+ if Flg==0
+ P1=ParL(J);
+ end;
+ Flg=1
+ else
+ if Flg==1
+ P2=ParL(J);
+ Tmp=Partcrv(P1,P2,Out1);
+ AnsL=Mixadd(AnsL,Tmp);
+ end;
+ Flg=0
+ end;
+ end;
+ if Flg==1
+ P2=ParL(length(ParL));
+ Tmp=Partcrv(P1,P2,Out1);
+ AnsL=Mixadd(AnsL,Tmp);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.bin
new file mode 100644
index 00000000..eb542783
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.sci
new file mode 100755
index 00000000..9cf82362
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makehasen.sci
@@ -0,0 +1,119 @@
+function Makehasen(Figdata,Sen,Gap,Ptn)
+ global Wfile FID;
+ Eps=10.0^(-6);
+ Clist=MakeCurves(Figdata);
+ DinM=Dataindex(Clist);
+ for N=1:size(DinM,1)
+ Tmp=DinM(N,:);
+ Data=Clist(Tmp(1):Tmp(2),:);
+ Dtall=size(Data,1);
+ Len=0;
+ Lenlist=[0];
+ for I=2:Dtall
+ Len=Len+Vecnagasa(Data(I,:)-Data(I-1,:));
+ Lenlist=[Lenlist,Len];
+ end
+ Lenall=Lenlist(Dtall);
+ if Lenall==0
+ continue
+ end
+ Kari=(Sen+Gap)*0.1;
+ Naga=Sen*0.1;
+ Tobi=Gap*0.1;
+ if Vecnagasa(Data(1,:)-Data(Dtall,:))<Eps
+ Nsen=max(ceil(Lenall/Kari),3);
+ SegUnit=Lenall/Nsen;
+ Naga=SegUnit*Sen/(Sen+Gap);
+ Tobi=SegUnit*Gap/(Sen+Gap);
+ SegList=[0:SegUnit:(Nsen-1)*SegUnit];
+ else
+ if Ptn==0
+ Nsen=max(ceil((Lenall+Tobi)/Kari),3);
+ SegUnit=Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap);
+ Naga=SegUnit*Sen/(Sen+Gap);
+ Tobi=SegUnit*Gap/(Sen+Gap);
+ SegList=[0:SegUnit:(Nsen-1)*SegUnit];
+ else
+ Nsen=max(ceil((Lenall+Naga)/Kari),3);
+ SegUnit=Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap);
+ Naga=SegUnit*Sen/(Sen+Gap);
+ Tobi=SegUnit*Gap/(Sen+Gap);
+ SegList=[Tobi:SegUnit:Tobi+(Nsen-2)*SegUnit];
+ end
+ end
+ Hajime=1; Owari=1;
+ Mojisu=0;
+ for I=1:length(SegList)
+ Len=SegList(I);
+ J=Owari;
+ while Len>=Lenlist(J)-Eps
+ if J==Dtall
+ break
+ end
+ J=J+1;
+ end
+ Hajime=J-1;
+ J=Hajime;
+ while Len+Naga>Lenlist(J)-Eps
+ if J==Dtall
+ break
+ end
+ J=J+1
+ end
+ Owari=J-1;
+ T=(Len-Lenlist(Hajime))...
+ /(Lenlist(Hajime+1)-Lenlist(Hajime));
+ P=Data(Hajime,:)+T*(Data(Hajime+1,:)-Data(Hajime,:));
+ X=string(round(MilliIn*P(1)));
+ Y=string(-round(MilliIn*P(2)));
+ Str='\special{pa '+X+' '+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end;
+ Mojisu=Mojisu+length(Str);
+ for J=Hajime+1:Owari
+ P=Data(J,:);
+ X=string(round(MilliIn*P(1)));
+ Y=string(-round(MilliIn*P(2)));
+ Str='\special{pa '+X+' '+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end;
+ Mojisu=Mojisu+length(Str);
+ end
+ T=(Len+Naga-Lenlist(Owari))...
+ /(Lenlist(Owari+1)-Lenlist(Owari));
+ P=Data(Owari,:)+T*(Data(Owari+1,:)-Data(Owari,:));
+ X=string(round(MilliIn*P(1)));
+ Y=string(-round(MilliIn*P(2)));
+ Str1='\special{pa '+X+' '+Y+'}';
+ Str2='\special{fp}';
+ if Wfile=='default'
+ mprintf('%s',Str1);
+ mprintf('%s',Str2);
+ else
+ mfprintf(FID,'%s',Str1);
+ mfprintf(FID,'%s',Str2);
+ end;
+ Mojisu=Mojisu+length(Str1)+length(Str2);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end;
+ Mojisu=0;
+ end
+ end
+ end
+ if Wfile=='default'
+ mprintf('%s\n%s\n','%','%');
+ else
+ mfprintf(FID,'%s\n%s\n','%','%');
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.bin
new file mode 100644
index 00000000..ec29163f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.sci
new file mode 100755
index 00000000..e9915e1b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeliststr.sci
@@ -0,0 +1,41 @@
+// 09.10.21
+
+function Out=Makeliststr(L)
+ Out='list(';
+ for I=1:length(L)
+ Dt=L(I);
+ if type(Dt)==1
+ if length(Dt)==1
+ Dts=string(Dt);
+ else
+ Dts='[';
+ for J=1:size(Dt,1)
+ for K=1:size(Dt,2)
+ Dts=Dts+string(Dt(J,K));
+ if K<size(Dt,2)
+ Dts=Dts+',';
+ end;
+ end;
+ if J<size(Dt,1)
+ Dts=Dts+';';
+ else
+ Dts=Dts+']';
+ end;
+ end;
+ end;
+ end;
+ if type(Dt)==10
+ Dts=Prime()+Dt+Prime();
+ end;
+ if type(Dt)==15
+ Dts=Makeliststr(Dt);
+ end;
+ Out=Out+Dts;
+ if I<length(L)
+ Out=Out+',';
+ else
+ Out=Out+')';
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.bin
new file mode 100644
index 00000000..a5b313ff
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.sci
new file mode 100755
index 00000000..e24525e1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makesfcutoffdata.sci
@@ -0,0 +1,345 @@
+// 08.09.19
+// 08.09.24
+// 08.10.09
+// 08.10.10
+// 08.10.15
+// 08.12.06
+// 08.12.21
+// 08.12.31
+// 10.02.16 Eps__ ( And Mislength, Mixop replaced )
+// 13.10.21 ( __ added to varibles )
+
+function FsL__=Makesfcutoffdata(MS__)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT
+ global BORDERPT OTHERPARTITION PARTITIONPT
+ global HIDDENDATA BORDERHIDDENDATA;
+ timer();
+ Nargs__=length(MS__);
+ HT__=Op(1,MS__);
+ PT__=Op(2,MS__);
+ Fd__=Op(3,MS__);
+ CutD__=Op(4,MS__);
+ Np__=[50,50];
+ Eps__=[0.05,1]; //
+ Eps__2=0.2;
+ Sgnstr__='+';
+ K__=0;
+ for I__=5:Nargs__
+ Tmp__=Op(I__,MS__);
+ if type(Tmp__)==10
+ Sgnstr__=Tmp__;
+ end;
+ if type(Tmp__)==1 // from
+ K__=K__+1;
+ if K__==1
+ Np__=Tmp__;
+ if length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ if K__==2
+ Eps__=Tmp__;
+ if length(Eps__)==1
+ Eps__=[Eps__,1];
+ end;
+ end;
+ if K__==3
+ Eps__2=Tmp__;
+ end;
+ end; // upto
+ end;
+ Tmp__=Op(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Op(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Op(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Op(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ Fd__L=Fullformfunc(Fd__);
+ Fxy__=Op(1,Fd__L);
+ Xf__=Op(2,Fd__L);
+ Yf__=Op(3,Fd__L);
+ Zf__=Op(4,Fd__L);
+ DrwS__=Op(7,Fd__L);
+ Tmp__=Op(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Op(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); Umax__=Urg__(2);
+ Vmin__=Vrg__(1); Vmax__=Vrg__(2);
+ Fugou__=1;
+ if Sgnstr__=='-' | Sgnstr__=='n'
+ Fugou__=-1;
+ end;
+ if Mixtype(CutD__)~=1
+ V1__=Op(1,CutD__);
+ Tmp__=Op(2,CutD__);
+ if length(Tmp__)>1
+ D__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ D__=Tmp__;
+ end;
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'-';
+ Eq__=Tmp__+string(D__);
+ elseif type(CutD__)==1
+ V1__=CutD__(1:3);
+ D__=CutD__(4);
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'+';
+ Eq__=Tmp__+string(D__);
+ else
+ K__=mtlb_findstr(CutD__,'=');
+ if K__>0
+ Tmp__1=part(CutD__,1:K__-1);
+ Tmp__2=part(CutD__,K__+1:length(CutD__));
+ Eq__=Tmp__1+'-('+Tmp__2+')';
+ else
+ Eq__=CutD__;
+ end;
+ end;
+ Eq__='('+string(Fugou__)+')*('+Eq__+')';
+ Tmp__=strsubst(Eq__,Xname__,'('+Xf__+')');
+ Tmp__=strsubst(Tmp__,Yname__,'('+Yf__+')');
+ Uveq__=strsubst(Tmp__,Zname__,'('+Zf__+')');
+ Tmp__1=Op(5,Fd__L);
+ Tmp__2=Op(6,Fd__L);
+ CutuvL__=Implicitplot(Uveq__,Tmp__1,Tmp__2,Np__);
+ EkL__=[];
+ for I__=1:length(CutuvL__)
+ Out__1=Op(I__,CutuvL__);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'e');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[Umax__,T]','T=[Vmin__,Vmax__]','N='+string(Np__(2)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'n');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[T,Vmax__]','T=[Umin__,Umax__]','N='+string(Np__(1)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'w');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[Umin__,T]','T=[Vmin__,Vmax__]','N='+string(Np__(2)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Tmp__=mtlb_findstr(DrwS__,'s');
+ if length(Tmp__)~=0
+ Tmp__=Paramplot('[T,Vmin__]','T=[Umin__,Umax__]','N='+string(Np__(1)));
+ Tmp__L=MakecutbycrvL(Tmp__,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for I__=1:length(Tmp__L)
+ Out__1=Op(I__,Tmp__L);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixjoin(EkL__,list(Tmp__));
+ end
+ end;
+ Fbdxy__=[];
+ for I__=1:length(EkL__)
+ Out__1=Op(I__,EkL__);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__=Out__1(J__,1:2);
+ Out__2=[Out__2,Tmp__];
+ end;
+ Tmp__=Listplot(Out__2);
+ Fbdxy__=Mixjoin(Fbdxy__,list(Tmp__));
+ end;
+ if PT__=='pers'
+ [Zval__,Xval__,Yval__]=Evlptablepers(Mix(Fd__,Np__));
+ end;
+ if PT__=='para'
+ [Zval__,Xval__,Yval__]=Evlptablepara(Mix(Fd__,Np__));
+ end;
+ Mixdisp(Mix('Ridge Equation obtained ',timer()));
+ Out__2=Implicitplot(Zval__,Xval__,Yval__);
+ IMPLICITDATA=Out__2;
+ Tmp__L=[];
+ for I__=1:length(Out__2)
+ Tmp__1=Op(I__,Out__2);
+ Tmp__=MakecutbycrvL(Tmp__1,CutuvL__,Uveq__,Uname__,Vname__,Eps__(1));
+ for J__=1:length(Tmp__)
+ Tmp__L=Mixjoin(Tmp__L,Op(J__,Tmp__));
+ end;
+ end;
+ Out__3=Tmp__L;
+ IMPLICITDATA=Out__3;
+ Mixdisp(Mix('ImplicitData obtained ',timer()));
+ if PT__=='pers'
+ Out__4=Cuspsplitpers(Out__3,Fd__,Eps__(1));
+ end;
+ if PT__=='para'
+ Out__4=Cuspsplitpara(Out__3,Fd__,Eps__(1));
+ end;
+ CUSPDATA=Out__4;
+ CUSPT=CUSPSPLITPT;
+ Mixdisp(Mix('CuspData obtained ',timer()));
+ FkL__=Mixjoin(EkL__,Out__4);
+ if PT__=='pers'
+ Fall__=Projpers(FkL__);
+ end;
+ if PT__=='para'
+ Fall__=Projpara(FkL__);
+ end;
+ if HT__=='raw'
+ Mixdisp(Mix('BorderData obtained ',timer()));
+ FsL__=FkL__;
+ return;
+ end;
+ BORDERPT=[];
+ Tmp__=[];
+ for I__=1:length(Fall__)
+ Tmp__=Mixjoin(Tmp__,list([]));
+ end;
+ OTHERPARTITION=Tmp__;
+ FsL__=[];
+ BORDERHIDDENDATA=[];
+ for I__=1:length(Fall__)
+ if PT__=='pers'
+ Tmp__=Projpers(Op(I__,FkL__));
+ end;
+ if PT__=='para'
+ Tmp__=Projpara(Op(I__,FkL__));
+ end;
+ ParL__=Partitionseg(Tmp__,Fall__,Eps__(1),Eps__2,I__);
+ if length(PARTITIONPT)>2
+ Tmp__=length(PARTITIONPT)-1;
+ Tmp__1=BORDERPT;
+ for J__=2:Tmp__
+ Tmp__2=Op(J__,PARTITIONPT);
+ Tmp__1=Mixjoin(Tmp__1,list(Tmp__2));
+ end;
+ BORDERPT=Tmp__1;
+ end;
+ if PT__=='pers'
+ if Fxy__=='p'
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpers2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+ else
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpers2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+// Tmp__2=Mix(Fxy__,Fbdxy__,Xname__,Yname__);
+// Tmp__=Nohiddenpers(ParL__,Tmp__1,Tmp__2);
+ end;
+ else
+ if Fxy__=='p'
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpara2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+ else
+ Tmp__1=Op(I__,FkL__);
+ Tmp__=Nohiddenpara2(ParL__,Tmp__1,Fd__,Uveq__,Np__,Eps__);
+// Tmp__2=Mix(Fxy__,Fbdxy__,Xname__,Yname__);
+// Tmp__=Nohiddenpara(ParL__,Tmp__1,Tmp__2);
+ end;
+ end;
+ BORDERHIDDENDATA=Mixjoin(BORDERHIDDENDATA,HIDDENDATA);
+ FsL__=Mixjoin(FsL__,Tmp__);
+ end;
+ Mixdisp(Mix('BorderData obtained ',timer()));
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.bin
new file mode 100644
index 00000000..04b49b15
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.sci
new file mode 100755
index 00000000..443751be
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeshasen.sci
@@ -0,0 +1,41 @@
+// 08.05.20
+// 09.10.05
+// 10.01.20
+// 10.02.01
+
+function Out=Makeshasen(PtnL,PA,V,Bdy)
+ Eps=10.0^(-6);
+ TenL=KoutenList(PA,V,Bdy);
+ Nten=length(TenL);
+ Call=length(Bdy);
+ Ptn=zeros(1,Call);
+ Out=list();
+ GL=[]
+ Te=-10.0^6;
+ for I=1:Nten-1
+ TenP=Op(I,TenL); TenQ=Op(I+1,TenL);
+ Ts=Op(1,TenP);
+ P=Op(2,TenP); Q=Op(2,TenQ);
+ NC=Op(4,TenP);
+ Tmp=modulo(Ptn(NC)+1,2);
+ Ptn(1,NC)=Tmp;
+ if Op(1,TenQ)-Ts>Eps
+ if Member(Ptn,PtnL)
+ if abs(Te-Ts)>Eps
+ if GL~=[]
+ J=length(Out);
+ Out(J+1)=GL;
+ end;
+ Tmp=Listplot(P,Q);
+ GL=Tmp;
+ else
+ GL=[GL;Q];
+ end
+ Te=Op(1,TenQ);
+ end
+ end
+ end
+ if size(GL,1)>0
+ Out=Mixjoin(Out,list(GL))
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.bin
new file mode 100644
index 00000000..ae09526a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.sci
new file mode 100755
index 00000000..99ad5910
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletondata.sci
@@ -0,0 +1,171 @@
+// 08.07.13
+// 08.10.16
+// 09.03.05
+// 09.05.12
+// 10.05.09
+// 14.07.05
+// 16.12.24 ( when kukanL=[] )
+
+function Allres=Makeskeletondata(Obj2L,Plt2L,R0,Eps2)
+ Eps=10.0^(-3);
+ Dmat=[];
+ Dind=[];
+ for I=1:Mixlength(Plt2L)
+ Dt=Mixop(I,Plt2L);
+ N1=size(Dmat,1)+1;
+ Dmat=[Dmat;Dt];
+ N2=size(Dmat,1);
+ Dind=[Dind;N1,N2];
+ end;
+ Nind=size(Dind,1);
+ Allres=[];
+ for Nobj=1:Mixlength(Obj2L)
+ Plt2=Mixop(Nobj,Obj2L);
+ PhL=Plt2(:,1:2);
+ ClipL=[];
+ for Ns=1:size(PhL,1)-1
+ P1=PhL(Ns:Ns+1,:);
+ for I=1:size(Dind,1)
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ P2=Tmp(:,1:2);
+ KC=IntersectcrvsPp(P1,P2,Eps);
+ if Mixlength(KC)>0
+ for J=1:Mixlength(KC)
+ P=Mixop(1,Mixop(J,KC));
+ Tmp=Mixop(2,Mixop(J,KC));
+ if Tmp<1+Eps & Ns==1 // 2010.05.09
+ continue;
+ end;
+ if Tmp>Numptcrv(P1)-Eps & Ns==size(PhL,1)-1
+ continue;
+ end; //
+ N1=Ns;
+ N2=Mixop(3,Mixop(J,KC));
+ Pa=Plt2(N1,1:2);
+ Za=Plt2(N1,3);
+ Pb=Plt2(N1+1,1:2);
+ Zb=Plt2(N1+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T1=norm(Pa-P)/norm(Pa-Pb);
+ Z1=(1-T1)*Za+T1*Zb;
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ Pa=Tmp(N2,1:2);
+ Za=Tmp(N2,3);
+ Pb=Tmp(N2+1,1:2);
+ Zb=Tmp(N2+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T2=norm(Pa-P)/norm(Pa-Pb);
+ Z2=(1-T2)*Za+T2*Zb;
+ if Z1<Z2-Eps2
+ if ClipL==[] // corrected from here
+ Tmp=1;
+ else
+ Tmp1=ClipL(:,1)-P(1);
+ Tmp2=ClipL(:,2)-P(2);
+ Tmp3=Tmp1.^2+Tmp2.^2; // 20140705
+ Tmp=min(Tmp3);
+ end; // upto here
+ if Tmp>Eps^2
+ Tmp1=P1(2,:)-P1(1,:);
+ Tmp2=Pb-Pa;
+ Tmp3=Naiseki(Tmp1,Tmp2);
+ Tmp3=Tmp3/norm(Tmp1)/norm(Tmp2);
+ Tmp=1-0.5*Tmp3^2;
+ ClipL=[ClipL;P,N1,T1,R0/Tmp];
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ Te=size(Plt2,1);
+ KukanL=[1.0,Te];
+ P1=PhL;
+ if size(ClipL,1)>0
+ for I=1:size(ClipL,1)
+ P=ClipL(I,1:2);
+ NN=ClipL(I,3);
+ T=NN+ClipL(I,4);
+ R=ClipL(I,5);
+ Flg=0;
+ for J=NN:-1:1
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T1=1;
+ else
+ T1=J; T2=T;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T2=T2-H;
+ else
+ T1=T1+H;
+ end;
+ end;
+ end;
+ Ku=[T1];
+ Flg=0;
+ for J=NN+1:Te
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end;
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T2=Te;
+ else
+ T1=T; T2=J;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T1=T1+H;
+ else
+ T2=T2-H;
+ end;
+ end;
+ end;
+ Ku=[Ku,T2];
+ if size(KukanL,2)==0 then
+ break;
+ end;
+ KukanL=Kukannozoku(Ku,KukanL);
+ end;
+ end;
+ Res=[];
+ for I=1:size(KukanL,1)
+ T1=KukanL(I,1); N1=Trunc(T1);
+ T2=KukanL(I,2); N2=Trunc(T2);
+ PtL=[];
+ if T1-N1<1-Eps
+ Tmp=PointonCurve(T1,P1);
+ PtL=MixS(Tmp);
+ end;
+ for J=N1+1:N2
+ Tmp=PointonCurve(J,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ if T2-N2>Eps
+ Tmp=PointonCurve(T2,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ Res=Mixadd(Res,Listplot(PtL));
+ end;
+ Allres=Mixjoin(Allres,Res);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.bin
new file mode 100644
index 00000000..76247746
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.sci
new file mode 100755
index 00000000..4838d658
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makeskeletonpersdata.sci
@@ -0,0 +1,188 @@
+// 08.08.14
+// 08.10.16
+// 09.05.12
+// 09.09.25
+// 10.05.09
+// 10.08.17
+// 14.07.05
+
+function Allres=Makeskeletonpersdata(Obj2L,Plt2L,R0,Eps2)
+ Eps=10.0^(-3);
+ Dmat=[];
+ Dind=[];
+ for I=1:Mixlength(Plt2L)
+ Dt=Mixop(I,Plt2L);
+ N1=size(Dmat,1)+1;
+ Dmat=[Dmat;Dt];
+ N2=size(Dmat,1);
+ Dind=[Dind;N1,N2];
+ end;
+ Nind=size(Dind,1);
+ Allres=[];
+ for Nobj=1:Mixlength(Obj2L)
+ Plt2=Mixop(Nobj,Obj2L);
+ PhL=Plt2(:,1:2);
+ ClipL=[];
+ for Ns=1:size(PhL,1)-1
+ P1=PhL(Ns:Ns+1,:);
+ for I=1:size(Dind,1)
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ P2=Tmp(:,1:2);
+ KC=IntersectcrvsPp(P1,P2,Eps);
+ if Mixlength(KC)>0
+ for J=1:Mixlength(KC)
+ P=Mixop(1,Mixop(J,KC));
+ Tmp=Mixop(2,Mixop(J,KC));
+ if Tmp<1+Eps & Ns==1 // 2010.05.09
+ continue;
+ end;
+ if Tmp>Numptcrv(P1)-Eps & Ns==size(PhL,1)-1
+ continue;
+ end; //
+ N1=Ns;
+ N2=Mixop(3,Mixop(J,KC));
+ Pa=Plt2(N1,1:2);
+ Za=Plt2(N1,3);
+ Pb=Plt2(N1+1,1:2);
+ Zb=Plt2(N1+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T1=norm(Pa-P)/norm(Pa-Pb);
+ Pka=Cancoordpers([Pa(1),Pa(2),Za]);
+ Pkb=Cancoordpers([Pb(1),Pb(2),Zb]);
+ if T1>1-Eps
+ Pk=Pkb;
+ else
+ Tmp1=Listplot([Pa,Pb]);
+ Tmp2=Spaceline([Pka,Pkb]);
+ Tmp=Invperspt(1+T1,Tmp1,Tmp2);
+ Pk=Mixop(1,Tmp);
+ end;
+ Z1=Zperspt(Pk);
+ Tmp=Dmat(Dind(I,1):Dind(I,2),:);
+ Pa=Tmp(N2,1:2);
+ Za=Tmp(N2,3);
+ Pb=Tmp(N2+1,1:2);
+ Zb=Tmp(N2+1,3);
+ if norm(Pa-Pb)<Eps // added from here
+ continue;
+ end; // upto here
+ T2=norm(Pa-P)/norm(Pa-Pb);
+ Pka=Cancoordpers([Pa(1),Pa(2),Za]);
+ Pkb=Cancoordpers([Pb(1),Pb(2),Zb]);
+ if T2>1-Eps
+ Pk=Pkb;
+ else
+ Tmp1=Listplot([Pa,Pb]);
+ Tmp2=Spaceline([Pka,Pkb]);
+ Tmp=Invperspt(1+T2,Tmp1,Tmp2);
+ Pk=Mixop(1,Tmp);
+ end
+ Z2=Zperspt(Pk);
+ if Z1<Z2-Eps2
+ if ClipL==[] // corrected from here
+ Tmp=1;
+ else
+ Tmp1=ClipL(:,1)-P(1);
+ Tmp2=ClipL(:,2)-P(2);
+ Tmp3=Tmp1.^2+Tmp2.^2; // 20140705
+ Tmp=min(Tmp3);
+ end; // upto here
+ if Tmp>Eps^2
+ Tmp1=P1(2,:)-P1(1,:);
+ Tmp2=Pb-Pa;
+ Tmp3=Naiseki(Tmp1,Tmp2);
+ Tmp3=Tmp3/norm(Tmp1)/norm(Tmp2);
+ Tmp=1-0.5*Tmp3^2;
+ ClipL=[ClipL;P,N1,T1,R0/Tmp];
+ end;
+ end;
+ end;
+ end;
+ end;
+ end;
+ Te=size(Plt2,1);
+ KukanL=[1.0,Te];
+ P1=PhL;
+ if size(ClipL,1)>0
+ for I=1:size(ClipL,1)
+ P=ClipL(I,1:2);
+ NN=ClipL(I,3);
+ T=NN+ClipL(I,4);
+ R= ClipL(I,5); // 10.08.17
+ Flg=0;
+ for J=NN:-1:1
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T1=1;
+ else
+ T1=J; T2=T;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T2=T2-H;
+ else
+ T1=T1+H;
+ end;
+ end;
+ end;
+ Ku=[T1];
+ Flg=0;
+ for J=NN+1:Te
+ Q=PointonCurve(J,P1);
+ if norm(P-Q)<R
+ continue;
+ end;
+ Flg=1;
+ break;
+ end;
+ if Flg==0
+ T2=Te;
+ else
+ T1=T; T2=J;
+ H=T2-T1;
+ for N=1:10
+ H=H*0.5;
+ Q=PointonCurve(T1+H,P1);
+ if norm(P-Q)<R
+ T1=T1+H;
+ else
+ T2=T2-H;
+ end;
+ end;
+ end;
+ Ku=[Ku,T2];
+ KukanL=Kukannozoku(Ku,KukanL);
+ end;
+ end;
+ Res=[];
+ for I=1:size(KukanL,1)
+ T1=KukanL(I,1); N1=Trunc(T1);
+ T2=KukanL(I,2); N2=Trunc(T2);
+ PtL=[];
+ if T1-N1<1-Eps
+ Tmp=PointonCurve(T1,P1);
+ PtL=MixS(Tmp);
+ end;
+ for J=N1+1:N2
+ Tmp=PointonCurve(J,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ if T2-N2>Eps
+ Tmp=PointonCurve(T2,P1);
+ PtL=Mixadd(PtL,Tmp);
+ end;
+ Res=Mixadd(Res,Listplot(PtL));
+ end;
+ Allres=Mixjoin(Allres,Res);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.bin
new file mode 100644
index 00000000..e8a0ce7a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.sci
new file mode 100755
index 00000000..dc917f30
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makevaltable.sci
@@ -0,0 +1,79 @@
+// 08.09.09
+// 08.10.08
+// 08.12.06
+// 08.12.30
+// 09.06.03
+// 13.10.19 ( __ added to variables )
+
+function [Zval__,Xval__,Yval__]=Makevaltable(MS__)
+ Eps__=10^(-6);
+ Nargs__=Mixlength(MS__);
+ Fstr__=Mixop(1,MS__);
+ Tmp__=Mixop(2,MS__);
+ Tmp1__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,Tmp1__-1);
+ Xrange__=evstr(part(Tmp__,Tmp1__+1:length(Tmp__)));
+ Tmp__=Mixop(3,MS__);
+ Tmp1__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,Tmp1__-1);
+ Yrange__=evstr(part(Tmp__,Tmp1__+1:length(Tmp__)));
+ Tmp__=strsubst(Fstr__,Xname__,'x');
+ Fstr__=strsubst(Tmp__,Yname__,'y');
+ Tmp__=mtlb_findstr(Fstr__,Xname__);
+ if length(Tmp__)==0
+ Fstr__=Fstr__+'+0*x';
+ end;
+ Mdv__=50;
+ Ndv__=50;
+ if Nargs__>=4
+ Tmp__=Mixop(4,MS__);
+ if length(Tmp__)>1
+ Mdv__=Tmp__(1,1);
+ Ndv__=Tmp__(1,2);
+ else
+ Mdv__=Tmp__
+ if Nargs__==4
+ Ndv__=Mdv__
+ else
+ Tmp1__=Mixop(5,MS__);
+ if type(Tmp1__)==1 & length(Tmp1__)==1
+ Ndv__=Tmp1__;
+ else
+ Ndv__=Mdv__;
+ end
+ end
+ end
+ end
+ X1__=Xrange__(1); X2__=Xrange__(2);
+ Y1__=Yrange__(1); Y2__=Yrange__(2);
+ Dx__=(X2__-X1__)/(Mdv__-1);
+ Dy__=(Y2__-Y1__)/(Ndv__-1);
+ Xval__=[];
+ Tmp__=X1__;
+ while Tmp__<X2__+Eps__
+ Xval__=[Xval__,Tmp__];
+ Tmp__=Tmp__+Dx__;
+ end;
+ Yval__=[];
+ Tmp__=Y1__;
+ while Tmp__<Y2__+Eps__
+ Yval__=[Yval__,Tmp__];
+ Tmp__=Tmp__+Dy__;
+ end;
+ I__=1;
+// x=Xval;
+// for y=Yval
+// Tmp=evstr(Fstr);
+// Zval(I,:)=Tmp;
+// I=I+1;
+// end;
+ for y=Yval__
+ J__=1;
+ for x=Xval__
+ Zval__(I__,J__)=evstr(Fstr__);
+ J__=J__+1;
+ end;
+ I__=I__+1;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.bin
new file mode 100644
index 00000000..36526d8e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.sci
new file mode 100755
index 00000000..a16a5a4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MakeveLfaceL.sci
@@ -0,0 +1,68 @@
+// 08.08.22
+// 09.10.25
+// 09.10.26
+// 09.10.27
+// 09.10.29
+
+function Out=MakeveLfaceL(VfL)
+ // Out format
+ // VeL Edge, Face num(as numlist), VeL num
+ // FL Face (Vertexs)
+ Eps=10^(-4);
+ Tmp=VfL($);
+ Tmp1=Tmp(1);
+ if type(Tmp1)==1
+ FvL=list(VfL);
+ else
+ FvL=VfL;
+ end;
+ EL=list(); FL=list();
+ for Nn=1:length(FvL)
+ Tmp=FvL(Nn);
+ VL=Tmp(1);
+ if length(VL)>0
+ FnL=Tmp(2);
+ FaceL=list();
+ for I=1:length(FnL)
+ Tmp1=FnL(I);
+ PtL=list();
+ for J=1:length(Tmp1)
+ Tmp2=Tmp1(J);
+ PtL(J)=VL(Tmp2);
+ end;
+ FaceL(I)=PtL;
+ end;
+ else
+ FaceL=list(Tmp(2));
+ end;
+ for I=1:length(FaceL)
+ Face=FaceL(I);
+ Face($+1)=Face(1);
+ FL($+1)=Face;
+ for J=1:length(Face)-1
+ Edge=list(Face(J),Face(J+1));
+ Flg=0;
+ for K=1:length(EL)
+ Tmp=EL(K);
+ Tmp1=Tmp(1);
+ Tmp2=norm(Edge(1)-Tmp1(1))+norm(Edge(2)-Tmp1(2));
+ Tmp3=norm(Edge(1)-Tmp1(2))+norm(Edge(2)-Tmp1(1));
+ if Tmp2<Eps | Tmp3<Eps
+ Tmp=EL(K);
+ Tmp1=Tmp(1);
+ Tmp2=[Tmp(2),length(FL)];
+ EL(K)=list(Tmp1,Tmp2,K);
+ Flg=1;
+ break;
+ end;
+ end;
+ if Flg==0
+ Ntmp=length(EL);
+ EL(Ntmp+1)=list(Edge,[length(FL)],Ntmp+1);
+ end;
+ end;
+ end;
+ end;
+ Out=list(EL,FL);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.bin
new file mode 100644
index 00000000..e1c2db72
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.sci
new file mode 100644
index 00000000..fb8aa27b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Makexybdy.sci
@@ -0,0 +1,111 @@
+// 08.09.13
+// 08.09.16
+// 08.10.11
+// 08.10.27
+// 14.07.07 debug ( Kitahara )
+
+function EhL=Makexybdy(Fd,Np)
+ Eps0=10^(-4);
+ FdL=Fullformfunc(Fd);
+ Tmp1=Mixop(2,FdL);
+ Tmp2=Mixop(3,FdL);
+ Xystr=[Tmp1,Tmp2];
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ DrwS=Mixop(7,FdL);
+ Cflg=0;
+ EhL=[];
+ Tmp=mtlb_findstr(DrwS,'e');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Uname,'('+string(Umax)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ Tmp=mtlb_findstr(DrwS,'n');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Vname,'('+string(Vmax)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if Cflg~=0 // 140707 Kitahara
+ Tmp1=Mixop(Mixlength(EhL),EhL);
+ Tmp=Joincrvs(Tmp1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ Tmp1=Mixsub(1:Mixlength(EhL)-1,EhL);
+ EhL=Mixadd(Tmp1,Tmp);
+ else
+ Cflg=0;
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ end;
+ Tmp=mtlb_findstr(DrwS,'w');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Uname,'('+string(Umin)+')');
+ Tmp2=Mixop(6,FdL);
+ Tmp3='N='+string(Np(2));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if Cflg~=0 //if Cflg==0
+ Tmp1=Mixop(Mixlength(EhL),EhL);
+ Tmp=Joincrvs(Tmp1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ Tmp1=Mixsub(1:Mixlength(EhL)-1,EhL);
+ EhL=Mixadd(Tmp1,Tmp);
+ else
+ Cflg=0;
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ end;
+ Tmp=mtlb_findstr(DrwS,'s');
+ if length(Tmp)~=0
+ Tmp1=strsubst(Xystr,Vname,'('+string(Vmin)+')');
+ Tmp2=Mixop(5,FdL);
+ Tmp3='N='+string(Np(1));
+ Tmp=Paramplot(Tmp1,Tmp2,Tmp3);
+ if Cflg~=0 //if Cflg==0
+ Tmp1=Mixop(Mixlength(EhL),EhL);
+ Tmp=Joincrvs(Tmp1,Tmp);
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ Tmp1=Mixsub(1:Mixlength(EhL)-1,EhL);
+ EhL=Mixadd(Tmp1,Tmp);
+ else
+ Cflg=0;
+ if norm(Ptstart(Tmp)-Ptend(Tmp))<Eps0
+ Cflg=1;
+ Tmp(size(Tmp,1),:)=Tmp(1,:);
+ end;
+ EhL=Mixadd(EhL,Tmp);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.bin
new file mode 100644
index 00000000..8f3c4b69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.sci
new file mode 100755
index 00000000..11b02c63
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mawarikomi.sci
@@ -0,0 +1,39 @@
+function Mawarikomi(varargin)
+ FL='default';
+ haba='10cm';
+ Nargs=length(varargin);
+ if Nargs>0
+ haba=varargin(1);
+ if Nargs>=2
+ FL=varargin(2);
+ if FL==''
+ FL='tmp.tex'
+ end
+ end
+ end
+ StrM=[
+ '\begin{mawarikomi}%',...
+ '%<1>[5](0,0)%',...
+ '{'+haba+'}{%',...
+ '',...
+ '}',...
+ '',...
+ '',...
+ '\end{mawarikomi}'...
+ ];
+ if FL~='default'
+ Fid=mopen(FL,'w');
+ mprintf('%s\n\n','Writing to '+FL);
+ end;
+ for I=1:size(StrM,2)
+ Str=StrM(I);
+ mprintf('%s\n',Str);
+ if FL~='default'
+ mfprintf(Fid,'%s\n',Str);
+ end
+ end
+ if FL~='default'
+ mclose(Fid);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.bin
new file mode 100644
index 00000000..1bc9eef3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.sci
new file mode 100755
index 00000000..65f543ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MeetWindow.sci
@@ -0,0 +1,91 @@
+//
+// 08.05.30 debugged
+// 08.08.14 (horner)
+// 09.12.31 (gsort)
+// 15.10.23 ( horner not used )
+// 16.12.29 (msprintf("%3.10f",..) used )
+
+function R=MeetWindow(PA,PB)
+ global XMIN XMAX YMIN YMAX
+ if InWindow(PA)=='i' & InWindow(PB)=='i'
+ R=[PA;PB];
+ return
+ end;
+ Eps=10.0^(-6);
+ t=poly(0,'T');
+ PT="(1-(t))*PA+(t)*PB";
+ Txm=-1; TxM=-1; Tym=-1; TyM=-1;
+ if PA(1)~=PB(1)
+ Txm=(XMIN-PA(1))/(PB(1)-PA(1));
+ TxM=(XMAX-PA(1))/(PB(1)-PA(1));
+ end
+ if PA(2)~=PB(2)
+ Tym=(YMIN-PA(2))/(PB(2)-PA(2));
+ TyM=(YMAX-PA(2))/(PB(2)-PA(2));
+ end;
+// Tmp=horner(PT(2),Txm);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",Txm));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(2);
+ if Tmp<YMIN-Eps | Tmp>YMAX+Eps
+ Txm=-1;
+ end
+// Tmp=horner(PT(2),TxM);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",TxM));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(2);
+ if Tmp<YMIN-Eps | Tmp>YMAX+Eps
+ TxM=-1
+ end
+// Tmp=horner(PT(1),Tym);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",Tym));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(1);
+ if Tmp<XMIN-Eps | Tmp>XMAX+Eps
+ Tym=-1
+ end
+// Tmp=horner(PT(1),TyM);
+ Tmp1=strsubst(PT,"t",msprintf("%3.10f",TyM));
+ Tmp1=evstr(Tmp1)
+ Tmp=Tmp1(1);
+ if Tmp<XMIN-Eps | Tmp>XMAX+Eps
+ TyM=-1
+ end
+ Tmp=gsort([Txm,TxM,Tym,TyM]);
+ Tans=Tmp(length(Tmp):-1:1);
+ Tmp=[];
+ for I=1:length(Tans)
+ Tmp1=Tans(I);
+ if Tmp1>-Eps & Tmp1<1+Eps
+ if length(Tmp)==0
+ Tmp=[Tmp1];
+ elseif abs(Tmp(length(Tmp))-Tmp1)>Eps
+ Tmp=[Tmp,Tmp1]
+ end
+ end
+ end
+ Tans=Tmp;
+ if length(Tans)==0
+ R=[];
+ return;
+ end
+ if length(Tans)==1
+// Ten1=horner(PT,Tans(1));
+ Tmp1=strsubst(PT,"t",string(Tans(1)));
+ Ten1=evstr(Tmp1)
+ if InWindow(PA)=='i'
+ R=[PA;Ten1];
+ return;
+ else
+ R=[Ten1;PB];
+ return
+ end
+ end
+// Ten1=horner(PT,Tans(1));
+ Tmp1=strsubst(PT,"t",string(Tans(1)));
+ Ten1=evstr(Tmp1)
+// Ten2=horner(PT,Tans(2));
+ Tmp1=strsubst(PT,"t",string(Tans(2)));
+ Ten2=evstr(Tmp1)
+ R=[Ten1;Ten2];
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.bin
new file mode 100644
index 00000000..0392c6b0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.sci
new file mode 100755
index 00000000..65ba1166
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Meetpoints.sci
@@ -0,0 +1,169 @@
+// 08.10.24
+// 08.10.25
+// 08.10.26
+// 09.12.31 (gsort)
+// 13.10.22 ( __ added to varibles )
+// 13.12.02 debugged
+
+function PtL__=Meetpoints(PtA__,PtB__,Fd__,Uveq__,Np__,Eps__)
+ Eps__0=10^(-4);
+ Vec__=PtB__-PtA__;
+ Out__=[];
+ PtL__=[];
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Mixop(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ Fd__L=Fullformfunc(Fd__);
+ Xf__=Mixop(2,Fd__L);
+ Yf__=Mixop(3,Fd__L);
+ Zf__=Mixop(4,Fd__L);
+ Tmp__=Mixop(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); UMax__=Urg__(2);
+ Vmin__=Vrg__(1); VMax__=Vrg__(2);
+ V1__='('+string(Vec__(1))+')';
+ V2__='('+string(Vec__(2))+')';
+ V3__='('+string(Vec__(3))+')';
+ Xstr__='(('+Xf__+')-('+string(PtA__(1))+'))';
+ Ystr__='(('+Yf__+')-('+string(PtA__(2))+'))';
+ Zstr__='(('+Zf__+')-('+string(PtA__(3))+'))';
+ Urg__str=Mixop(5,Fd__L);
+ Vrg__str=Mixop(6,Fd__L);
+ if abs(Vec__(2))>Eps__0 | abs(Vec__(1))>Eps__0
+ Eq__=V2__+'*'+Xstr__+'-'+V1__+'*'+Ystr__;
+ else
+ Eq__=Xstr__;
+ end;
+ MS__=Mix(Eq__,Urg__str,Vrg__str,Np__);
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ for J=1:length(Yval__)-1
+ for I=1:length(Xval__)-1
+ a1__=Xval__(I);b1__=Yval__(J);c1__=Zval__(J,I);
+ a2__=Xval__(I+1);b2__=Yval__(J);c2__=Zval__(J,I+1);
+ a3__=Xval__(I+1);b3__=Yval__(J+1);c3__=Zval__(J+1,I+1);
+ a4__=Xval__(I);b4__=Yval__(J+1);c4__=Zval__(J+1,I);
+ PL__=[a1__,b1__;a2__,b2__;a3__,b3__;a4__,b4__;a1__,b1__];
+ VL__=[c1__,c2__,c3__,c4__,c1__];
+ QL__=[];
+ for K__=1:4
+ P1__=PL__(K__,:); P2__=PL__(K__+1,:);
+ M1__=VL__(K__); M2__=VL__(K__+1);
+ if M1__>=Eps__0 & M2__>=Eps__0
+ continue;
+ end;
+ if M1__<=-Eps__0 & M2__<=-Eps__0
+ continue;
+ end;
+ if abs(M1__)<Eps__0
+ Tmp__=P1__;
+ elseif abs(M2__)<Eps__0
+ continue;
+ else
+ Tmp__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ end;
+ QL__=[QL__;Tmp__];
+ end;
+ if size(QL__,1)==2
+ Puv__1=QL__(1,:); Puv__2=QL__(2,:);
+ Tmp__1=Puv__1(1);
+ Tmp__2=Puv__1(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__); // 13.12.02
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P1__=[Xv__,Yv__,Zv__];
+ Tmp__1=Puv__2(1);
+ Tmp__2=Puv__2(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P2__=[Xv__,Yv__,Zv__];
+ V1__=Vec__(1); V2__=Vec__(2); V3__=Vec__(3);
+ if abs(V1__)>Eps__0
+ M1__=PtA__(3)+V3__/V1__*(P1__(1)-PtA__(1))-P1__(3);
+ M2__=PtA__(3)+V3__/V1__*(P2__(1)-PtA__(1))-P2__(3);
+ elseif abs(V2__)>Eps__0
+ M1__=PtA__(3)+V3__/V2__*(P1__(2)-PtA__(2))-P1__(3);
+ M2__=PtA__(3)+V3__/V2__*(P2__(2)-PtA__(2))-P2__(3);
+ else
+ M1__=PtA__(2)-P1__(2);
+ M2__=PtA__(2)-P2__(2);
+ end;
+ if M1__*M2__>=0
+ if (M1__>Eps__0 & M2__>Eps__0) | (M1__<-Eps__0 & M2__<-Eps__0)
+ continue;
+ end;
+ if abs(M1__)<=Eps__0
+ Pt__=P1__; Ptuv__=Puv__1;
+ else
+ Pt__=P2__; Ptuv__=Puv__2;
+ end;
+ else
+ Pt__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ Ptuv__=1/(M1__-M2__)*(-M2__*Puv__1+M1__*Puv__2);
+ end;
+ if type(Uveq__)==10
+ Tmp__1='('+string(Ptuv__(1))+')';
+ Tmp__2='('+string(Ptuv__(2))+')';
+ Tmp__=strsubst(Uveq__,Uname__,Tmp__1);
+ Tmp__=strsubst(Tmp__,Vname__,Tmp__2);
+ Tmp__=evstr(Tmp__);
+ if Tmp__<-Eps__0
+ continue;
+ end;
+ end;
+ Tmp__1=Naiseki(Pt__-PtA__,Vec__);
+ Tmp__1=Tmp__1/norm(Vec__)^2;
+ if Tmp__1>-Eps__0 & Tmp__1<1+Eps__0
+ Out__=[Out__,Tmp__1];
+ end;
+ end;
+ end;
+ end;
+ if length(Out__)>0
+ Out__=gsort(Out__);
+ Out__=Out__(length(Out__):-1:1);
+ Tmp__=[Out__(1)];
+ for I__=2:length(Out__)
+ Tmp__1=(Out__(I__)-Tmp__(length(Tmp__)))*Vec__;
+ Tmp__1=norm(Tmp__1);
+ if Tmp__1>Eps__
+ Tmp__=[Tmp__,Out__(I__)];
+ end;
+ end;
+ Out__=Tmp__;
+ for I__=1:length(Out__)
+ Tmp__=PtA__+Out__(I__)*Vec__;
+ PtL__=Mixadd(PtL__,Tmp__);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.bin
new file mode 100644
index 00000000..61d508ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.sci
new file mode 100755
index 00000000..79826f90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Member.sci
@@ -0,0 +1,21 @@
+// 08.05.18
+
+// Structure changed
+// 09.10.11
+
+function TF=Member(A,L)
+ if Mixtype(L)>1
+ N=Mixlength(L);
+ else
+ N=length(L);
+ end
+ for I=1:N
+ Tmp=Op(I,L);
+ if A==Tmp
+ TF=%t
+ return
+ end
+ end
+ TF=%f
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.bin
new file mode 100644
index 00000000..2bc985c7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.sci
new file mode 100755
index 00000000..de8d4b0d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi.sci
@@ -0,0 +1,206 @@
+// 08.08.21
+// 09.10.24
+// 09.10.26
+
+function Menkakusi(Face,Nf,Ptype)
+ global THETA PHI EyePoint FocusPoint VELNO VELHI;
+ Eps0=10^(-6);
+ Eps=10^(-4);
+ Tmp1=Face(1)-Face(2);
+ Tmp2=Face(3)-Face(2);
+ if norm(Tmp1)<Eps | norm(Tmp2)<Eps
+ return;
+ end;
+ Vec=1/norm(Tmp1)/norm(Tmp2)*Crossprod(Tmp1,Tmp2);
+ if norm(Vec)<Eps
+ return;
+ end;
+ if Ptype==-1
+ W=EyePoint;
+ Tmp=Dotprod(Vec,W-Face(1));
+ else
+ W=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ W=100*W;
+ Tmp=Dotprod(Vec,W-Face(1));
+ end;
+ if abs(Tmp)<Eps
+ return;
+ end;
+ if Tmp<-Eps
+ Vec=-Vec;
+ end;
+ if Ptype==-1
+ G1=Projpers(Spaceline(Face));
+ else
+ G1=Projpara(Spaceline(Face))
+ end;
+ VL=list();
+ for I=1:Numptcrv(G1)
+ VL(I)=Ptcrv(I,G1);
+ end;
+ Out1L=list();
+ Out2L=VELHI;
+ for N=1:length(VELNO)
+ Tmp=VELNO(N);
+ Edge=Tmp(1);
+ Ne=Tmp(2);
+ Nenm=Tmp(3);
+ if Member(Nf,Ne)
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ continue;
+ end;
+ if Ptype==-1
+ P=Perspt(Edge(1));
+ Q=Perspt(Edge(2));
+ else
+ P=Parapt(Edge(1));
+ Q=Parapt(Edge(2));
+ end;
+ if norm(P-Q)<Eps
+ continue;
+ end;
+ Tmp=Kyoukai(Mix(G1));
+ Tmp1=Naigai(P,Tmp);
+ Ng1=Tmp1(1);
+ Tmp1=Naigai(Q,Tmp);
+ Ng2=Tmp1(1);
+ KL=IntersectcrvsPp(Listplot([P,Q]),G1);
+ if Mixlength(KL)==0
+ if Ng1==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=(Edge(1)+Edge(2))*0.5-Face(1);
+ Tmp=Dotprod(Tmp1,Vec)/norm(Tmp1);
+ if Tmp>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out2L($+1)=list(Edge,Ne,Nenm);
+ end;
+ end;
+ continue;
+ end;
+ Flg=0;
+ for I=1:Mixlength(VL)-1
+ Tmp=VL(I+1)-VL(I);
+ if norm(Tmp)<Eps continue; end;
+ Tmp1=Crossprod(Tmp,Q-P)/norm(Tmp)/norm(Q-P);
+ if abs(Tmp1)<Eps
+ Flg=1;
+ break;
+ end;
+ end;
+ if Flg==1
+ Tmp=Mixop(I,VL)-P;
+ if norm(Tmp)<Eps
+ Tmp1=0;
+ else
+ Tmp1=Crossprod(Tmp,Q-P)/norm(Tmp)/norm(Q-P);
+ end;
+ if abs(Tmp1)<Eps then
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ continue;
+ end;
+ end;
+ if Mixlength(KL)==1
+ Tmp=KL(1);
+ Tmp=Tmp(2)-1;
+ if Tmp<Eps
+ if Ng2==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=Edge(2)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out2L($+1)=list(Edge,Ne,Nenm);
+ end;
+ end;
+ continue;
+ end;
+ if Tmp>1-Eps
+ if Ng1==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=Edge(1)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out2L($+1)=list(Edge,Ne,Nenm);
+ end;
+ end;
+ continue;
+ end;
+ if Ng1==0 & Ng2==0
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp1=KL(1);
+ Tmp1=Tmp1(1);
+ if Ptype==-1
+ Tmp=Invperspt(Tmp1,Spaceline(Edge));
+ else
+ Tmp=Invparapt(Tmp1,Spaceline(Edge))
+ end;
+ Ak=Tmp(1);
+ if Ng1==1
+ Tmp1=Edge(1)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp2=list(Ak,Edge(2));
+ Out1L($+1)=list(Tmp2,Ne,Nenm);
+ Tmp2=list(Edge(1),Ak);
+ Out2L($+1)=list(Tmp2,Ne,Nenm);
+ end;
+ end;
+ if Ng2==1
+ Tmp1=Edge(2)-Face(1);
+ Tmp1=Dotprod(Tmp1,Vec);
+ if Tmp1>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Tmp2=list(Edge(1),Ak);
+ Out1L($+1)=list(Tmp2,Ne,Nenm);
+ Tmp2=list(Ak,Edge(2));
+ Out2L($+1)=list(Tmp2,Ne,Nenm);
+ end;
+ end;
+ end;
+ end;
+ if Mixlength(KL)==2
+ Tmp1=KL(1);
+ Tmp1=Tmp1(2);
+ Tmp2=KL(2);
+ Tmp2=Tmp2(2);
+ if Tmp1>Tmp2
+ KL=list(KL(2),KL(1));
+ end;
+ Tmp=Spaceline(Edge);
+ Tmp1=KL(1);
+ Tmp1=Tmp1(1);
+ Tmp2=KL(2);
+ Tmp2=Tmp2(1);
+ if Ptype==-1
+ Ak=Mixop(1,Invperspt(Tmp1,Tmp));
+ Bk=Mixop(1,Invperspt(Tmp2,Tmp))
+ else
+ Ak=Mixop(1,Invparapt(Tmp1,Tmp));
+ Bk=Mixop(1,Invparapt(Tmp2,Tmp))
+ end;
+ Tmp1=(Ak+Bk)*0.5-Face(1);
+ Tmp=Dotprod(Tmp1,Vec);
+ if Tmp>-Eps
+ Out1L($+1)=list(Edge,Ne,Nenm);
+ else
+ Out1L($+1)=list(list(Edge(1),Ak),Ne,Nenm);
+ Out1L($+1)=list(list(Bk,Edge(2)),Ne,Nenm);
+ Out2L($+1)=list(list(Ak,Bk),Ne,Nenm);
+ end;
+ end;
+ end;
+ VELNO=Out1L;
+ VELHI=Out2L;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.bin
new file mode 100644
index 00000000..bcb9509f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.sci
new file mode 100755
index 00000000..43eab74b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Menkakusi2.sci
@@ -0,0 +1,186 @@
+// 09.10.29
+// 09.11.15
+// 10.08.17 debug (line 66)
+
+function Menkakusi2(Face,Nf,Ptype)
+ global THETA PHI EyePoint FocusPoint VELNO VELHI;
+ Eps0=10^(-6);
+ Eps=10^(-4);
+ Tmp1=Face(1)-Face(2);
+ Tmp2=Face(3)-Face(2);
+ if norm(Tmp1)<Eps | norm(Tmp2)<Eps
+ return;
+ end;
+ Vec=1/norm(Tmp1)/norm(Tmp2)*Crossprod(Tmp1,Tmp2);
+ if norm(Vec)<Eps
+ return;
+ end;
+ if Ptype==-1
+ W=EyePoint;
+ Tmp=Dotprod(Vec,W-Face(1));
+ else
+ W=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ W=100*W;
+ Tmp=Dotprod(Vec,W-Face(1));
+ end;
+ if abs(Tmp)<Eps
+ return;
+ end;
+ if Tmp<-Eps
+ Vec=-Vec;
+ end;
+ if Ptype==-1
+ G1=Projpers(Spaceline(Face));
+ else
+ G1=Projpara(Spaceline(Face))
+ end;
+ VL=list();
+ for I=1:Numptcrv(G1)
+ VL(I)=Ptcrv(I,G1);
+ end;
+ Out1L=list();
+ Out2L=VELHI;
+ for N=1:length(VELNO)
+ Out1=list();
+ Out2=list();
+ Tmp=VELNO(N);
+ Edge=Tmp(1);
+ Ne=Tmp(2);
+ NNe=Tmp(3);
+ if Member(Nf,Ne)
+ Out1L($+1)=list(Edge,Ne,NNe);
+ continue;
+ end;
+ if Ptype==-1
+ PtA=Perspt(Edge(1));
+ PtB=Perspt(Edge(2));
+ else
+ PtA=Parapt(Edge(1));
+ PtB=Parapt(Edge(2));
+ end;
+ if norm(PtA-PtB)<Eps continue; end;
+ Bdy=list(G1);
+ V=PtB-PtA;
+ TenL=KoutenList(PtA,V,Bdy);
+ Nten=length(TenL);
+ if Nten==0 // 10.08.17
+ Out1L($+1)=list(Edge,Ne,NNe);
+ continue;
+ end;
+ Te=0;
+ Pe3=Edge(1);
+ if Ptype==-1
+ Tmp1=Perspt(Pe3);
+ Tmp=Invperspt(Tmp1,Spaceline(Face));
+ else
+ Tmp1=Parapt(Pe3);
+ Tmp=Invparapt(Tmp1,Spaceline(Face));
+ end;
+ Qe3=Tmp(1);
+ Flg=0;
+ for I=1:Nten
+ TenP=TenL(I);
+ Ts=TenP(1);
+ P=TenP(2);
+ if Ts<-Eps
+ continue;
+ end;
+ Eline=Spaceline(Edge);
+ if Ptype==-1
+ Tmp=Invperspt(P,Eline);
+ Tmp1=Invperspt(P,Spaceline(Face));
+ else
+ Tmp=Invparapt(P,Eline)
+ Tmp1=Invparapt(P,Spaceline(Face));
+ end;
+ P3=Tmp(1); Q3=Tmp1(1);
+ if Ts>1-Eps // P3, Q3 are necessary
+ Flg=I;
+ break;
+ end;
+ if abs(Te-Ts)>Eps0 //
+ if modulo(I,2)==1
+ Out1($+1)=list(Pe3,P3);
+ else
+ if Qe3==[]
+ Tmp=Op(2,TenL(I-1));
+ if Ptype==-1
+ Tmp1=Invperspt(Tmp,Spaceline(Face));
+ else
+ Tmp1=Invparapt(Tmp,Spaceline(Face));
+ end;
+ Qe3=Tmp1(1);
+ end;
+ PM=0.5*(Pe3+P3); QM=0.5*(Qe3+Q3);
+ if Ptype==-1
+ Z1=Zperspt(PM); Z2=Zperspt(QM);
+ else
+ Z1=Zparapt(PM); Z2=Zparapt(QM);
+ end;
+ if Z1>Z2
+ Out1($+1)=list(Pe3,P3);
+ else
+ Out2($+1)=list(Pe3,P3);
+ end;
+ end;
+ end;
+ Te=Ts; Pe3=P3; Qe3=Q3;
+ end;
+ if Flg==0
+ if norm(Pe3-Edge(2))>Eps0
+ Out1($+1)=list(Pe3,Edge(2));
+ end;
+ else
+ if modulo(Flg,2)==1
+ Out1($+1)=list(Pe3,Edge(2));
+ else
+ PM=0.5*(Pe3+P3); QM=0.5*(Qe3+Q3);
+ if Ptype==-1
+ Z1=Zperspt(PM); Z2=Zperspt(QM);
+ else
+ Z1=Zparapt(PM); Z2=Zparapt(QM);
+ end;
+ if Z1>Z2
+ Out1($+1)=list(Pe3,Edge(2));
+ else
+ Out2($+1)=list(Pe3,Edge(2));
+ end;
+ end;
+ end;
+ for I=1:length(Out1)
+ Tmp=Out1(I);
+ if I==1
+ SeL=Tmp;
+ else
+ if norm(SeL(2)-Tmp(1))<Eps0
+ SeL(2)=Tmp(2);
+ else
+ Out1L($+1)=list(SeL,Ne,NNe);
+ SeL=Tmp;
+ end;
+ end;
+ end;
+ if length(Out1)>0
+ Out1L($+1)=list(SeL,Ne,NNe);
+ end;
+ for I=1:length(Out2)
+ Tmp=Out2(I);
+ if I==1
+ SeL=Tmp;
+ else
+ if norm(SeL(2)-Tmp(1))<Eps0
+ SeL(2)=Tmp(2);
+ else
+ Out2L($+1)=list(SeL,Ne,NNe);
+ SeL=Tmp;
+ end;
+ end;
+ end;
+ if length(Out2)>0
+ Out2L($+1)=list(SeL,Ne,NNe);
+ end;
+ end;
+ VELNO=Out1L;
+ VELHI=Out2L;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.bin
new file mode 100644
index 00000000..5b35bcb9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.sci
new file mode 100755
index 00000000..4f06c437
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mix.sci
@@ -0,0 +1,15 @@
+// 08.05.20
+// 08.08.08
+
+// Structure changed
+// 09.10.11
+
+function M=Mix(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Da=varargin(I);
+ M(I)=Da;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.bin
new file mode 100644
index 00000000..92d14b2c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.sci
new file mode 100755
index 00000000..daf5a2d9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixL.sci
@@ -0,0 +1,14 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+
+function M=MixL(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Da=varargin(I);
+ M(I)=Da;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.bin
new file mode 100644
index 00000000..5a0d9b25
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.sci
new file mode 100755
index 00000000..623af493
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/MixS.sci
@@ -0,0 +1,15 @@
+// 08.05.19
+
+//Structure Changed
+
+// 09.10.11
+
+function M=MixS(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Da=varargin(I);
+ M(I)=Da;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.bin
new file mode 100644
index 00000000..cb5b4953
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.sci
new file mode 100755
index 00000000..8d45fea1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixadd.sci
@@ -0,0 +1,23 @@
+// 05.14 Data Structure
+// 05.16 List of MixList
+// 05.19 use:MixS, MixL, Mixtype
+// 08.08.17
+
+// Structure changed
+// 09.10.11
+
+function M=Mixadd(varargin)
+ Nargs=length(varargin);
+ M=list();
+ Tmp=varargin(1);
+ if length(Tmp)==0
+ M(1)=varargin(2);
+ else
+ M=Tmp;
+ M($+1)=varargin(2);
+ end;
+ for I=3:Nargs
+ M($+1)=varargin(I);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.bin
new file mode 100644
index 00000000..c15a987e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.sci
new file mode 100755
index 00000000..2fed1197
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixdisp.sci
@@ -0,0 +1,14 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+// 10.01.02
+
+function Mixdisp(L)
+ if Mixtype(L)==1
+ disp(L)
+ return;
+ end;
+ Str=Makeliststr(L);
+ disp(Str)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.bin
new file mode 100644
index 00000000..3666302f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.sci
new file mode 100755
index 00000000..d6e49c14
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixjoin.sci
@@ -0,0 +1,29 @@
+// 08.05.18
+// 08.05.19 Changed
+// 08.08.15
+
+// Structure changed
+// 09.10.11
+
+function M=Mixjoin(varargin)
+ Nargs=length(varargin);
+ M=list();
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if length(Tmp)==0
+ continue;
+ end;
+ if Mixtype(Tmp)==1
+ Tmp=list(Tmp);
+ end;
+ if length(M)==0
+ M=Tmp;
+ else
+ M=lstcat(M,Tmp);
+ end;
+ end;
+ if length(M)==0
+ M=[];
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.bin
new file mode 100644
index 00000000..d9515fd8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.sci
new file mode 100755
index 00000000..6fd31749
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixlength.sci
@@ -0,0 +1,18 @@
+// 08.05.14 Data Structure
+// 08.05.23 Debugged
+
+// Structure changed
+// 09.10.11
+
+function Out=Mixlength(PL)
+ if PL==[]
+ Out=0;
+ return
+ end
+ if Mixtype(PL)==1
+ Out=size(PL,1);
+ else
+ Out=length(PL);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.bin
new file mode 100644
index 00000000..b85a4f1a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.sci
new file mode 100755
index 00000000..7f05a2ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixmake.sci
@@ -0,0 +1,14 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+
+function PL=Mixmake(varargin)
+ PL=list();
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ PL=Mixadd(PL,Tmp);
+ end
+endfunction
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.bin
new file mode 100644
index 00000000..f5ff95b4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.sci
new file mode 100755
index 00000000..10c846dc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixop.sci
@@ -0,0 +1,22 @@
+// 08.05.14 Data Structure
+// 08.04.15 List ex N=1:3
+// 08.05.16 List of MixL
+// 08.05.18 Debugged
+// 08.05.19 Changed
+// 08.08.17
+
+// Structure changed
+// 09.10.11
+
+function D=Mixop(N,PL)
+ D=[];
+ if Mixtype(PL)==1
+ D=PL;
+ return;
+ end;
+ if type(N)~=1 | length(N)>1 | N>Mixlength(PL)
+ return
+ end;
+ D=PL(N);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.bin
new file mode 100644
index 00000000..116f9ae6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.sci
new file mode 100755
index 00000000..e3e281f3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixsub.sci
@@ -0,0 +1,18 @@
+// 08.05.19
+// 08.05.20 debugged
+// 08.06.02
+
+// Structure changed
+// 09.10.11
+
+function M=Mixsub(Rg,PL)
+ M=list();
+ N=Mixlength(PL);
+ for I=Rg
+ if I>N
+ return;
+ end;
+ M($+1)=PL(I);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.bin
new file mode 100644
index 00000000..bd65bd09
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.sci
new file mode 100755
index 00000000..b336c763
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Mixtype.sci
@@ -0,0 +1,19 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+
+function T=Mixtype(D)
+ if type(D)~=15
+ T=1;
+ return;
+ end;
+ for I=1:length(D)
+ if type(D(I))==15
+ T=3;
+ return;
+ end;
+ end;
+ T=2;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.bin
new file mode 100644
index 00000000..23f75fa2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.sci
new file mode 100755
index 00000000..8a4f0557
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naigai.sci
@@ -0,0 +1,18 @@
+// 08.05.18
+// 08.05.20
+
+function Ptn=Naigai(A,Bdy)
+ V=[1,1];
+ Call=Mixlength(Bdy);
+ KL=KoutenList(A,V,Bdy);
+ Ptn=zeros(1,Call);
+ for K=1:Mixlength(KL)
+ Ten=Op(K,KL);
+ T=Op(1,Ten); NC=Op(4,Ten);
+ if T<0
+ Tmp=modulo(Ptn(NC)+1,2);
+ Ptn(1,NC)=Tmp;
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.bin
new file mode 100644
index 00000000..cc184ed1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.sci
new file mode 100755
index 00000000..193ad384
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Naiseki.sci
@@ -0,0 +1,4 @@
+function N=Naiseki(a,b)
+ N=a*b';
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.bin
new file mode 100644
index 00000000..70999c76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.sci
new file mode 100755
index 00000000..a404370a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nearestpt.sci
@@ -0,0 +1,53 @@
+// 08.05.31
+// 08.06.03
+// 08.10.07
+
+function Ans=Nearestpt(varargin)
+ Nargs=length(varargin);
+ PL1=varargin(1);
+ if size(PL1,1)==1
+ Flg=0;
+ else
+ Flg=1
+ end
+ Eps=10.0^(-6);
+// Fig=varargin(2);
+ PL=varargin(2);
+ Ans=MixS(PL1(1,:),1,PL(1,:),1,norm(PL1(1,:)-PL(1,:)));
+ for N=1:size(PL1,1)
+ PA=PL1(N,:);
+ Pm=PL(1,:);
+ Im=1;
+ Sm=norm(Pm-PA);
+ for I=1:size(PL,1)-1
+ A1=PL(I,1); A2=PL(I,2);
+ B1=PL(I+1,1); B2=PL(I+1,2);
+ V1=B1-A1; V2=B2-A2;
+ X1=PA(1); X2=PA(2);
+ Tmp=V2^2+V1^2;
+ if abs(Tmp)<Eps
+ continue;
+ end;
+ T=(-A2*V2-V1*A1+V1*X1+X2*V2)/Tmp;
+ if T<-Eps
+ P=[A1,A2];
+ elseif T>1+Eps
+ P=[B1,B2];
+ else
+ P=[A1+T*V1,A2+T*V2];
+ end
+ S=norm(P-PA);
+ if S<Sm-Eps
+ Tmp=ParamonCurve(P,I,PL);
+ Pm=P; Im=Tmp; Sm=S;
+ end
+ end
+ if Sm<Op(5,Ans)
+ Ans=MixS(PA,N,Pm,Im,Sm);
+ end
+ end
+ if Flg==0
+ Ans=Mixsub(3:5,Ans);
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.bin
new file mode 100644
index 00000000..b3417b7a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.sci
new file mode 100755
index 00000000..9e0227e8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Newlength.sci
@@ -0,0 +1,9 @@
+function Newlength(varargin)
+ if length(varargin)==0
+ Kyorihensuu();
+ else
+ FL=varargin(1);
+ Kyorihensuu(FL);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.bin
new file mode 100644
index 00000000..a7c43a91
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci
new file mode 100755
index 00000000..3826b281
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara.sci
@@ -0,0 +1,254 @@
+// 08.09.13
+// 09.12.31 (gsort)
+
+function FigkL=Nohiddenpara(varargin)
+ global HIDDENDATA THETA PHI;
+ Eps=0.001;
+ PaL=varargin(1);
+ Fk=varargin(2);
+ FuncdL=varargin(3);
+ Tmp=Mixop(1,FuncdL);
+ Fxy=Mixop(1,Tmp);
+ K=mtlb_findstr(Fxy,'=');
+ Fxy=part(Fxy,K+1:length(Fxy));
+ Fbdxy=Mixop(2,FuncdL);
+ Tmp=Mixop(3,FuncdL);
+ Xname=Mixop(1,Tmp);
+ Tmp=Mixop(4,FuncdL);
+ Yname=Mixop(1,Tmp);
+ FigkL=[];
+ if Fbdxy==[]
+ return;
+ end;
+ Bdy=Kyoukai(Fbdxy);
+ Ptn=0;
+ Fh=Projpara(Fk);
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ P=PointonCurve(S,Fh);
+ Tmp=Invparapt(S,Fh,Fk)
+ Pk=Mixop(1,Tmp);
+ Qk=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ Flg=zeros(1,Mixlength(Fbdxy));
+ for I=1:1000
+ Tmp=Pk+I*10*Qk;
+ Tmp1=Naigai(Tmp(1:2),Bdy);
+ if Tmp1==Flg
+ Flg=1;
+ Qk=Tmp;
+ break;
+ end;
+ end;
+ if Flg~=1
+ disp('Bad EyePoint');
+ return;
+ end;
+ T=poly(0,'t');
+ P0=(1-T)*Pk+T*Qk;
+ X0str='('+pol2str(P0(1))+')';
+ Y0str='('+pol2str(P0(2))+')';
+ Z0str='('+pol2str(P0(3))+')';
+ Tmp=strsubst(Fxy,Xname,X0str);
+ Tmp=strsubst(Tmp,Yname,Y0str);
+ Efn=Z0str+'-('+Tmp+')';
+ t=0;
+ Tmp=evstr(Efn);
+ Eps=max(Eps,abs(Tmp));
+ Tmp1=evstr([X0str,Y0str]);
+ t=1;
+ Tmp2=evstr([X0str,Y0str]);
+ Seg=Listplot([Tmp1,Tmp2]);
+ Tmp=[];
+ for I=1:Mixlength(Fbdxy)
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=IntersectcrvsPp(Seg,Tmp2,Eps);
+ if Mixlength(Tmp1)>0
+ Tmp2=[];
+ for J=1:Mixlength(Tmp1)
+ Tmp3=Mixop(J,Tmp1);
+ Tmp3=Mixop(2,Tmp3)-1;
+ Tmp2=[Tmp2,Tmp3];
+ end;
+ Tmp=[Tmp,Tmp2];
+ else
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=Nearestpt(Tmp2,Seg);
+ Tmp3=Mixop(5,Tmp1);
+ if Tmp3<Eps
+ Tmp4=Mixop(4,Tmp1);
+ Tmp=[Tmp,Tmp4-1];
+ end;
+ end;
+ end;
+ if length(Tmp)==0
+ SeL=[SeL,N];
+ continue;
+ end;
+ Tmp=gsort(Tmp);
+ Tmp=Tmp(length(Tmp):-1:1);
+ ParamL=[0];
+ for I=1:length(Tmp)
+ Tmp1=Tmp(I);
+ Tmp2=ParamL(length(ParamL));
+ if Tmp1-Tmp2>Eps
+ ParamL=[ParamL,Tmp1];
+ end;
+ end;
+ Nhdflg=0;
+ for M=1:length(ParamL)-1
+ TL=[ParamL(M),ParamL(M+1)];
+ t=TL(1);
+ Tmp1=evstr([X0str,Y0str]);
+ t=TL(2);
+ Tmp2=evstr([X0str,Y0str]);
+ Tmp=Naigai(0.5*(Tmp1+Tmp2),Bdy);
+ Tmp=modulo(sum(Tmp),2);
+ if Tmp==Ptn continue; end;
+ Ik=max(ceil(log((TL(2)-TL(1))/Eps)/log(2)),6);
+ t=TL(1);
+ Tmp1=evstr(Efn);
+ t=TL(2);
+ Tmp2=evstr(Efn);
+ if abs(Tmp1)<=Eps
+ if M>1
+ Nhdflg=-10;
+ break;
+ end;
+ end;
+ if abs(Tmp2)<=Eps
+ Nhdflg=-10;
+ break;
+ end;
+ if Tmp2>Eps
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=min(VL);
+ if Tmp1<=-Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ else
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=max(VL);
+ if Tmp1>Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ end;
+ end;
+ if Nhdflg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.bin
new file mode 100644
index 00000000..4bb581d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.sci
new file mode 100755
index 00000000..996559db
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpara2.sci
@@ -0,0 +1,131 @@
+// 08.10.10
+// 08.10.15
+// 09.06.24
+// 10.02.16 Eps
+
+function FigkL=Nohiddenpara2(PaL,Fk,Fd,Uveq,Np,Eps)
+ global HIDDENDATA THETA PHI TMP;
+ Eps0=10^(-5);
+ Fh=Projpara(Fk);
+ P1=Ptstart(Fh);
+ P2=Ptend(Fh);
+ Csp=CuspPt();
+ Cspflg=1;
+ for I=1:Mixlength(Csp)
+ Tmp=Mixop(I,Csp);
+ if norm(Tmp-P1)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=2,
+ case 3 then Cspflg=6;
+ end;
+ continue;
+ end;
+ if norm(Tmp-P2)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=3,
+ case 2 then Cspflg=6;
+ end;
+ continue;
+ end;
+ end;
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ Tmp=Invparapt(S,Fh,Fk);
+ PtA=Mixop(1,Tmp);
+ PtAp=Parapt(PtA);
+ Vec=[sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)];
+ Epstmp=Eps;
+ if N==1 & modulo(Cspflg,2)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptstart(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ if N==length(PaL)-1 & modulo(Cspflg,3)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptend(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ Flg=PthiddenQ(PtA,Vec,Fd,Uveq,Np,Epstmp);
+ if Flg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ Tmp=Invparapt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invparapt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.bin
new file mode 100644
index 00000000..47aea6f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.sci
new file mode 100755
index 00000000..140516b1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers.sci
@@ -0,0 +1,253 @@
+// 08.09.21
+// 09.12.31 (gsort)
+
+function FigkL=Nohiddenpers(varargin)
+ global EyePoint FocusPoint HIDDENDATA;
+ Eps=0.001;
+ PaL=varargin(1);
+ Fk=varargin(2);
+ FuncdL=varargin(3);
+ Tmp=Mixop(1,FuncdL);
+ Fxy=Mixop(1,Tmp);
+ K=mtlb_findstr(Fxy,'=');
+ Fxy=part(Fxy,K+1:length(Fxy));
+ Fbdxy=Mixop(2,FuncdL);
+ Tmp=Mixop(3,FuncdL);
+ Xname=Mixop(1,Tmp);
+ Tmp=Mixop(4,FuncdL);
+ Yname=Mixop(1,Tmp);
+ FigkL=[];
+ if Fbdxy==[]
+ return;
+ end;
+ Bdy=Kyoukai(Fbdxy);
+ Ptn=0;
+ Fh=Projpers(Fk);
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ P=PointonCurve(S,Fh);
+ Tmp=Invperspt(S,Fh,Fk)
+ Pk=Mixop(1,Tmp);
+ Flg=zeros(1,Mixlength(Fbdxy));
+ for I=1:1000
+ Tmp=Pk+I*(EyePoint-Pk);
+ Tmp1=Naigai(Tmp(1:2),Bdy);
+ if Tmp1==Flg
+ Flg=1;
+ Qk=Tmp;
+ break;
+ end;
+ end;
+ if Flg~=1
+ disp('Bad EyePoint');
+ return;
+ end;
+ T=poly(0,'t');
+ P0=(1-T)*Pk+T*Qk;
+ X0str='('+pol2str(P0(1))+')';
+ Y0str='('+pol2str(P0(2))+')';
+ Z0str='('+pol2str(P0(3))+')';
+ Tmp=strsubst(Fxy,Xname,X0str);
+ Tmp=strsubst(Tmp,Yname,Y0str);
+ Efn=Z0str+'-('+Tmp+')';
+ t=0;
+ Tmp=evstr(Efn);
+ Eps=max(Eps,abs(Tmp));
+ Tmp1=evstr([X0str,Y0str]);
+ t=1;
+ Tmp2=evstr([X0str,Y0str]);
+ Seg=Listplot([Tmp1,Tmp2]);
+ Tmp=[];
+ for I=1:Mixlength(Fbdxy)
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=IntersectcrvsPp(Seg,Tmp2,Eps);
+ if Mixlength(Tmp1)>0
+ Tmp2=[];
+ for J=1:Mixlength(Tmp1)
+ Tmp3=Mixop(J,Tmp1);
+ Tmp3=Mixop(2,Tmp3)-1;
+ Tmp2=[Tmp2,Tmp3];
+ end;
+ Tmp=[Tmp,Tmp2];
+ else
+ Tmp2=Mixop(I,Fbdxy);
+ Tmp1=Nearestpt(Tmp2,Seg);
+ Tmp3=Mixop(5,Tmp1);
+ if Tmp3<Eps
+ Tmp4=Mixop(4,Tmp1);
+ Tmp=[Tmp,Tmp4-1];
+ end;
+ end;
+ end;
+ if length(Tmp)==0
+ SeL=[SeL,N];
+ continue;
+ end;
+ Tmp=gsort(Tmp);
+ Tmp=Tmp(length(Tmp):-1:1);
+ ParamL=[0];
+ for I=1:length(Tmp)
+ Tmp1=Tmp(I);
+ Tmp2=ParamL(length(ParamL));
+ if Tmp1-Tmp2>Eps
+ ParamL=[ParamL,Tmp1];
+ end;
+ end;
+ Nhdflg=0;
+ for M=1:length(ParamL)-1
+ TL=[ParamL(M),ParamL(M+1)];
+ t=TL(1);
+ Tmp1=evstr([X0str,Y0str]);
+ t=TL(2);
+ Tmp2=evstr([X0str,Y0str]);
+ Tmp=Naigai(0.5*(Tmp1+Tmp2),Bdy);
+ Tmp=modulo(sum(Tmp),2);
+ if Tmp==Ptn continue; end;
+ Ik=max(ceil(log((TL(2)-TL(1))/Eps)/log(2)),6);
+ t=TL(1);
+ Tmp1=evstr(Efn);
+ t=TL(2);
+ Tmp2=evstr(Efn);
+ if abs(Tmp1)<=Eps
+ if M>1
+ Nhdflg=-10;
+ break;
+ end;
+ end;
+ if abs(Tmp2)<=Eps
+ Nhdflg=-10;
+ break;
+ end;
+ if Tmp2>Eps
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=min(VL);
+ if Tmp1<=-Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ else
+ if Tmp1<-Eps
+ Nhdflg=-10;
+ break;
+ end;
+ for I=1:Ik
+ AddL=[];
+ VL=[];
+ for J=1:length(TL)-1
+ Tmp=(TL(J)+TL(J+1))*0.5;
+ AddL=[AddL,Tmp];
+ t=Tmp;
+ Tmp1=evstr(Efn);
+ VL=[VL,Tmp1];
+ end;
+ Tmp1=max(VL);
+ if Tmp1>Eps*2
+ Nhdflg=-10;
+ break;
+ end;
+ TL=gsort([TL,AddL]);
+ end;
+ if Nhdflg~=0 break; end;
+ end;
+ end;
+ if Nhdflg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.bin
new file mode 100644
index 00000000..65217043
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.sci
new file mode 100644
index 00000000..d49bce91
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Nohiddenpers2.sci
@@ -0,0 +1,134 @@
+// 08.10.11
+// 08.10.12
+// 08.10.15
+// 09.06.24
+// 10.02.16 Eps
+// 11.04.12 Eps0 (bug)
+// 13.11.02 bug
+
+function FigkL=Nohiddenpers2(PaL,Fk,Fd,Uveq,Np,Eps)
+ global EyePoint FocusPoint HIDDENDATA;
+ Eps0=10^(-5); // 11.04.12
+ Fh=Projpers(Fk);
+ P1=Ptstart(Fh);
+ P2=Ptend(Fh);
+ Csp=CuspPt();
+ Cspflg=1;
+ for I=1:Mixlength(Csp)
+ Tmp=Mixop(I,Csp);
+ if norm(Tmp-P1)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=2,
+ case 3 then Cspflg=6;
+ end;
+ continue;
+ end;
+ if norm(Tmp-P2)<Eps0
+ select Cspflg,
+ case 1 then Cspflg=3,
+ case 2 then Cspflg=6;
+ end;
+ continue;
+ end;
+ end;
+ SeL=[];
+ for N=1:length(PaL)-1
+ S=(PaL(N)+PaL(N+1))/2;
+ Tmp=Invperspt(S,Fh,Fk)
+ PtA=Mixop(1,Tmp);
+ PtAp=Perspt(PtA);
+// Vec=EyePoint-FocusPoint;
+ Vec=EyePoint-PtA; // 2013.11.02
+ Epstmp=Eps; // 2011.04.12
+ if N==1 & modulo(Cspflg,2)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptstart(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ if N==length(PaL)-1 & modulo(Cspflg,3)==0
+ Tmp=min(Eps(1)*norm(PtAp-Ptend(Fh)),Eps(1)); //
+ Epstmp=[Tmp,Eps(2)]; //
+ end;
+ Flg=PthiddenQ(PtA,Vec,Fd,Uveq,Np,Epstmp);
+ if Flg==0
+ SeL=[SeL,N];
+ end;
+ end;
+ FigL=[];
+ FigkL=[];
+ for I=1:length(SeL)
+ Tmp1=PointonCurve(PaL(SeL(I)),Fh);
+ Tmp2=PointonCurve(PaL(SeL(I)+1),Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ FigL=Mixadd(FigL,Partcrv(SP,SQ,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ Tmp4=Partcrv3(TP,TQ,Fk)
+ FigkL=Mixadd(FigkL,Tmp4);
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ FigL=Mixadd(FigL,Partcrv(P,Q,Fh));
+ Tmp3=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp3);
+ Tmp3=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp3);
+ FigkL=Mixadd(FigkL,Partcrv3(TP,TQ,Fk));
+ else
+ FigL=Mixadd(FigL,Fh);
+ FigkL=Mixadd(FigkL,Fk);
+ end;
+ end;
+ Tmp=[];
+ for I=1:length(PaL)-1
+ if ~Member(I,SeL)
+ Tmp=[Tmp,I];
+ end;
+ end;
+ SeL=Tmp;
+ HIDDENDATA=[];
+ for I=1:length(SeL)
+ Tmp=PaL(SeL(I));
+ Tmp1=PointonCurve(Tmp,Fh);
+ Tmp=PaL(SeL(I)+1);
+ Tmp2=PointonCurve(Tmp,Fh);
+ if I==1
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ if Member(SeL(I)-1,SeL)
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ else
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ P=Tmp1; SP=PaL(SeL(I));
+ Q=Tmp2; SQ=PaL(SeL(I)+1);
+ end;
+ end;
+ end;
+ if length(SeL)>0
+ if norm(P-Q)>Eps(1) //
+ Tmp=Invperspt(SP,Fh,Fk);
+ TP=Mixop(2,Tmp);
+ Tmp=Invperspt(SQ,Fh,Fk);
+ TQ=Mixop(2,Tmp);
+ HIDDENDATA=Mixadd(HIDDENDATA,Partcrv3(TP,TQ,Fk));
+ else
+ HIDDENDATA=Mixadd(HIDDENDATA,Fk);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.bin
new file mode 100644
index 00000000..6093f704
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.sci
new file mode 100755
index 00000000..dad4f4ef
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Numptcrv.sci
@@ -0,0 +1,4 @@
+function N=Numptcrv(Fig)
+ N=size(Fig,1)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.bin
new file mode 100644
index 00000000..1720cf7c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.sci
new file mode 100644
index 00000000..20a86640
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objcurve.sci
@@ -0,0 +1,115 @@
+// s : 2014.06.22
+// 2014.08.26 debugged 1,-1 => "+","-"
+// 2014.09.07 Objjoin added
+// 2016.10.09 Np in Spacecurve changed
+
+function Out=Objcurve(varargin)
+ global OBJFIGNO OBJJOIN
+ Eps=10^(-6);
+ Args=varargin;
+ Nargs=length(Args)
+ Tmp=Args(1);
+ PtL=Flattenlist(Tmp);
+ PL=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL=lstcat(PL,list(Tmp(K,:)))
+ end;
+ end;
+ Closed=norm(PL(length(PL))-PL(1))<Eps
+ Pstr="xy";
+ Tmp=Args(Nargs)
+ if type(Tmp)==10 then
+ Pstr=Tmp;
+ Nargs=Nargs-1
+ end;
+ Sz=0.1;
+ Np=4;
+ if Nargs>=2 then
+ Sz=Args(2)
+ end;
+ if Nargs>=3 then
+ Np=Args(3)
+ end;
+ Assign("Sz",Sz)
+ if Pstr=="xy" then
+ Vz=[0,0,1];
+ Fs=Assign("[Sz*cos(t),Sz*sin(t),0]")
+ end;
+ if Pstr=="yz" then
+ Vz=[1,0,0];
+ Fs=Assign("[0,Sz*cos(t),Sz*sin(t)]")
+ end;
+ if Pstr=="zx" then
+ Vz=[0,1,0];
+ Fs=Assign("[Sz*sin(t),0,Sz*cos(t)]")
+ end;
+ Gc0=Spacecurve(Fs,"t=[0,2*%pi]","N="+string(Np));//16.10.09
+ P=PL(1); Q=PL(2); R=PL(length(PL)-1);
+ PQ1=Q-P;
+ if ~Closed then
+ PQ2=PQ1
+ else
+ PQ2=P-R
+ end;
+ Vp=PQ1/norm(PQ1)+PQ2/norm(PQ2);
+ Vp1=Vp/norm(Vp);
+ Theta=acos(min(Dotprod(Vz,Vp1),1));
+ Vj=Crossprod(Vz,Vp1);
+ if norm(Vj)<Eps then
+ Vj=Vz
+ end;
+ Gc1=Rotate3data(Gc0,Vj,Theta);
+ CL=list(Translate3data(Gc1,P));
+ for J=2:(length(PL)-1)
+ P=PL(J); Q=PL(J+1);
+ PQ2=Q-P;
+ if norm(PQ2)<Eps then
+ continue
+ end;
+ Vp=PQ1/norm(PQ1)+PQ2/norm(PQ2);
+ Vp2=Vp/norm(Vp);
+ Theta=acos(min(Dotprod(Vp1,Vp2),1));
+ Vj=Crossprod(Vp1,Vp2);
+ if norm(Vj)<Eps then
+ Vj=Vp1
+ end;
+ Gc2=Rotate3data(Gc1,Vj,Theta);
+ CL=lstcat(CL,list(Translate3data(Gc2,P)));
+ PQ1=PQ2;
+ Vp1=Vp2;
+ Gc1=Gc2;
+ end;
+ if ~Closed then
+ Vp2=(Q-P)/norm(Q-P);
+ Theta=acos(min(Dotprod(Vp1,Vp2),1));
+ Vj=Crossprod(Vp1,Vp2);
+ if norm(Vj)<Eps then
+ Vj=Vp1
+ end;
+ Gc3=Rotate3data(Gc1,Vj,Theta);
+ CL=lstcat(CL,list(Translate3data(Gc3,Q)))
+ end;
+ Objname(); // from 140907
+ Join=Objjoin();
+ Objjoin(1); // upto
+ GL1=CL(1);
+ for J=2:length(CL)
+ GL2=CL(J);
+ Dt=Objrecs(GL1,GL2,"-");
+ GL1=Dt(2);
+ if J==2 then
+ GL0=Dt(1)
+ end;
+ end;
+ if ~Closed then
+ Objpolygon(CL(1),"-");
+ N=length(CL);
+ Objpolygon(CL(N),"+")
+ else
+ Objrecs(GL1,GL0,"-")
+ end;
+ Out=CL
+ OBJJOIN=Join; // 140907
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.bin
new file mode 100644
index 00000000..1691debf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.sci
new file mode 100644
index 00000000..e8a80ff3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objjoin.sci
@@ -0,0 +1,9 @@
+// s: 2014.09.07
+
+function Out=Objjoin(varargin)
+ global OBJJOIN
+ if length(varargin)>0
+ OBJJOIN=abs(sign(varargin(1)))
+ end;
+ Out=OBJJOIN
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.bin
new file mode 100644
index 00000000..c6d194f0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.sci
new file mode 100644
index 00000000..6c523fc2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objname.sci
@@ -0,0 +1,11 @@
+// s: 2014.09.07
+
+function Objname()
+ global OBJFIGNO OBJJOIN
+ if OBJJOIN==0 then
+ OBJFIGNO=OBJFIGNO+1;
+ Gname="ketfig"+string(OBJFIGNO);
+ Printobjstr("# "+Gname);
+ Printobjstr("g "+Gname);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.bin
new file mode 100644
index 00000000..d9a85501
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.sci
new file mode 100644
index 00000000..ba5b346a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolygon.sci
@@ -0,0 +1,65 @@
+// s : 2014.06.22
+// 14.09.07 Objjoin added
+
+function Out=Objpolygon(varargin)
+ global OBJFIGNO OBJJOIN
+ Eps=10^(-6);
+ Args=varargin;
+ Nargs=length(Args);
+ Tmp=Args(1);
+ PtL=Flattenlist(Tmp);
+ PL=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL=lstcat(PL,list(Tmp(K,:)))
+ end;
+ end;
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Objname(); // 140907
+ for J=1:length(PL)
+ P=PL(J);
+ if (length(P)<4) | (P(4)==0) then
+ Np=Writeobjpoint(P);
+ PL(J)=[P(1:3),Np]
+ end;
+ end;
+ if Nargs==1 then
+ Tmp=PL(1);
+ Cen=Tmp(1:3);
+ Nc=Tmp(4)
+ else
+ Tmp=Args(2);
+ if length(Tmp)==1 then
+ Tmp1=PL(Tmp);
+ Cen=Tmp1(1:3);
+ Nc=Tmp(4)
+ else
+ Cen=Tmp;
+ Nc=Writeobjpoint(Cen)
+ end;
+ end;
+ for J=1:length(PL)
+ if J<length(PL) then
+ Je=J+1
+ else
+ Je=1
+ end;
+ Pt1=Cen;
+ PLj=PL(J); PLje=PL(Je);
+ Pt2=PLj(1:3); Pt3=PLje(1:3);
+ if norm(Crossprod(Pt2-Pt1,Pt3-Pt1))<Eps then
+ continue
+ end;
+ P1=sprintf("%1d",Nc);
+ P2=sprintf("%1d",PLj(4))
+ P3=sprintf("%1d",PLje(4))
+ if Sel=="+" then // 6.22
+ Str="f "+P1+" "+P2+" "+P3+" "
+ else
+ Str="f "+P1+" "+P3+" "+P2+" "
+ end;
+ Printobjstr(Str)
+ end;
+ Out=PL
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.bin
new file mode 100644
index 00000000..fed77a7d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.sci
new file mode 100644
index 00000000..c33e23a8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objpolyhedron.sci
@@ -0,0 +1,25 @@
+// s : 2014.06.22
+// 14.09.07 Objjoin added
+
+function Out=Objpolyhedron(Vertex,Face)
+ global NPOINT OBJFIGNO;
+ OBJFIGNO=OBJFIGNO+1;
+ Ninit=NPOINT;
+ Objname(); // 140907
+ for N=1:length(Vertex)
+ P=Vertex(N);
+ Np=Writeobjpoint(P);
+ Vertex(N)=[P(1:3),Np]
+ end;
+ for N=1:length(Face)
+ F=Face(N)+Ninit;
+ Face(N)=F;
+ Str="f"
+ for J=1:length(F)
+ P=sprintf("%1d",F(J));
+ Str=Str+" "+P
+ end;
+ Printobjstr(Str)
+ end;
+ Out=list(Vertex,Face)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.bin
new file mode 100644
index 00000000..2a419206
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.sci
new file mode 100644
index 00000000..d8775fb3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objrecs.sci
@@ -0,0 +1,87 @@
+// s : 2014.06.22
+// 2014.09.07 Objjoin added
+
+function Out=Objrecs(varargin)
+ global OBJFIGNO OBJJOIN
+ Eps=10^(-6);
+ Args=varargin;
+ Nargs=length(Args);
+ Tmp=Args(1);
+ PtL=Flattenlist(Tmp);
+ PL1=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL1=lstcat(PL1,list(Tmp(K,:)))
+ end;
+ end;
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Objname(); // // 140907
+ for J=1:length(PL1)
+ P=PL1(J)
+ if (length(P)<4) | (P(4)==0) then
+ Np=Writeobjpoint(P);
+ PL1(J)=[P(1:3),Np];
+ end;
+ end;
+ Tmp=Args(2);
+ if (type(Tmp)==1) & (size(Tmp,1)==1) then
+ Drv=Tmp;
+ Len=norm(Drv);
+ PL2=list();
+ for J=1:length(PL1)
+ Tmp=PL1(J);
+ P=Tmp(1:3)+Drv;
+ Np=Writeobjpoint(P);
+ PL2=lstcat(PL2,list([P(1:3),Np]));
+ if J<length(PL1) then
+ Vec=PL1(J+1)-PL1(J);
+ if norm(Vec)>Eps then
+ Tmp1=Crossprod(Drv,Vec);
+ Tmp2=Crossprod(Tmp1,Vec);
+ Tmp3=Dotprod(Tmp2,Drv);
+ if Tmp3<-Eps then
+ Tmp2=-Tmp2
+ end;
+ Drv=Len/norm(Tmp2)*Tmp2
+ end
+ end
+ end
+ else
+ PtL=Flattenlist(Tmp);
+ PL2=list();
+ for J=1:length(PtL)
+ Tmp=PtL(J);
+ for K=1:size(Tmp,1)
+ PL2=lstcat(PL2,list(Tmp(K,:)))
+ end;
+ end;
+ for J=1:length(PL2)
+ P=PL2(J);
+ if (length(P)<4) | (P(4)==0) then
+ Np=Writeobjpoint(P);
+ PL2(J)=[P(1:3),Np]
+ end;
+ end;
+ end;
+ Printobjstr("vt 0 0");
+ Printobjstr("vt 1 0");
+ Printobjstr("vt 1 1");
+ Printobjstr("vt 0 1");
+ for J=2:length(PL1)
+ P1=sprintf("%1d",Op(4,PL1(J-1)));
+ P2=sprintf("%1d",Op(4,PL2(J-1)));
+ P3=sprintf("%1d",Op(4,PL2(J)));
+ P4=sprintf("%1d",Op(4,PL1(J)));
+ N1=""; N2=""; N3=""; N4="";
+ if Sel=="+" then // 6.22
+ Str="f "+P1+"/1/"+N1+" "+P2+"/2/"+N2+" ";
+ Str=Str+P3+"/3/"+N3+" "+P4+"/4/"+N4;
+ else
+ Str="f "+P1+"/1/"+N1+" "+P4+"/4/"+N4+" ";
+ Str=Str+P3+"/3/"+N3+" "+P2+"/2/"+N2;
+ end;
+ Printobjstr(Str)
+ end;
+ Out=list(PL1,PL2)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.bin
new file mode 100644
index 00000000..99ec2207
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.sci
new file mode 100644
index 00000000..15543b8a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsurf.sci
@@ -0,0 +1,114 @@
+// s : 2014.06.22
+// e : 2014.07.18
+// Objsurf, Objthicksurf : Range argments changed
+// 2014.09.07 Objjoin added
+
+function Out=Objsurf(varargin)
+ global OBJFIGNO OBJJOIN
+ Args=varargin;
+ Nargs=length(Args);
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Rf=Args(1);
+ N=2;
+ Mg=0; Ng=0;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ U=Args(N);
+ Mg=length(U)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ else
+ Ag=Args(N); Bg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ end;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ V=Args(N);
+ Ng=length(V)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ else
+ Cg=Args(N); Dg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ end;
+ if Mg==0 then
+ Mg=Args(N);
+ N=N+1;
+ U=[];
+ for J=1:(Mg+1)
+ U=[U,Ag+(J-1)/Mg*(Bg-Ag)];
+ end;
+ end;
+ if Ng==0 then
+ Ng=Args(N);
+ V=[];
+ for K=1:(Ng+1)
+ V=[V,Cg+(K-1)/Ng*(Dg-Cg)];
+ end;
+ end;
+ Objname(); // // 140907
+ PL=list();
+ for J=1:(Mg+1)
+ for K=1:(Ng+1)
+ P=Rf(U(J),V(K));
+ Np=Writeobjpoint(P)
+ PL=lstcat(PL,list([P,Np]));
+ end;
+ end;
+ Idx=1:(Ng+1):(Ng+1)*Mg+1;
+ Pus=Mixsub(Idx,PL);
+ Idx=(Ng+1):(Ng+1):(Ng+1)*(Mg+1);
+ Pue=Mixsub(Idx,PL);
+ Idx=1:1:Ng+1;
+ Pvs=Mixsub(Idx,PL);
+ Idx=(Ng+1)*Mg+1:1:(Ng+1)*(Mg+1);
+ Pve=Mixsub(Idx,PL);
+ Printobjstr("vt 0 0");
+ Printobjstr("vt 1 0");
+ Printobjstr("vt 1 1");
+ Printobjstr("vt 0 1");
+ for J=1:Mg
+ for K=1:Ng
+ P1=sprintf("%1d",Op(4,PL((Ng+1)*(J-1)+K)))
+ P2=sprintf("%1d",Op(4,PL((Ng+1)*J+K)))
+ P3=sprintf("%1d",Op(4,PL((Ng+1)*J+K+1)))
+ P4=sprintf("%1d",Op(4,PL((Ng+1)*(J-1)+K+1)))
+ N1=""; N2=""; N3=""; N4="";
+ if Sel=="+" then // 6.22
+ Str="f "+P1+"/1/"+N1+" "+P2+"/2/"+N2+" ";
+ Str=Str+P3+"/3/"+N3+" "+P4+"/4/"+N4;
+ else
+ Str="f "+P1+"/1/"+N1+" "+P4+"/4/"+N4+" ";
+ Str=Str+P3+"/3/"+N3+" "+P2+"/2/",N2;
+ end;
+ Printobjstr(Str)
+ end;
+ end;
+ Out=list(U,V,Pus,Pue,Pvs,Pve)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.bin
new file mode 100644
index 00000000..09306fec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.sci
new file mode 100644
index 00000000..808924a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objsymb.sci
@@ -0,0 +1,7 @@
+// s : 2014.08.25
+
+function Objsymb(Symb,Thick,Face,Dir)
+ for J=1:length(Symb)
+ Objcurve(Symb(J),Thick,Face,Dir);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.bin
new file mode 100644
index 00000000..b73e2b6a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.sci
new file mode 100644
index 00000000..42fde6a5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Objthicksurf.sci
@@ -0,0 +1,123 @@
+// s : 2014.06.22
+// e : 2014.07.18
+// Objsurf, Objthicksurf : Range argments changed
+// 14.09.07 Objjoin added
+
+function Out=Objthicksurf(varargin)
+ global OBJJOIN
+ Args=varargin;
+ Nargs=length(Args)
+ Sel=Args(Nargs); Nargs=Nargs-1;
+ Selsurf=part(Sel,1); // from 6.22
+ Selside=["0","0","0","0"]; // wesn
+ Tmp=mtlb_findstr(Sel,"w");
+ if length(Tmp)>0 then
+ Selside(1)=part(Sel,Tmp+1)
+ end;
+ Tmp=mtlb_findstr(Sel,"e");
+ if length(Tmp)>0 then
+ Selside(2)=part(Sel,Tmp+1)
+ end;
+ Tmp=mtlb_findstr(Sel,"s");
+ if length(Tmp)>0 then
+ Selside(3)=part(Sel,Tmp+1)
+ end;
+ Tmp=mtlb_findstr(Sel,"n");
+ if length(Tmp)>0 then
+ Selside(4)=part(Sel,Tmp+1)
+ end;
+ Nfth=Args(Nargs-2);
+ Thick1=Args(Nargs-1);
+ Thick2=Args(Nargs);
+ Nargs=Nargs-3; // upto 6.22
+ Rfth=Args(1); // 6.22
+ N=2;
+ Mg=0; Ng=0;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ U=Args(N);
+ Mg=length(U)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ else
+ Ag=Args(N); Bg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Ag=Intab(1); Bg=Intab(2);
+ N=N+1;
+ end;
+ if type(Args(N))==1 then
+ if length(Args(N))>2 then
+ V=Args(N);
+ Ng=length(V)-1;
+ N=N+1;
+ elseif length(Args(N))==2 then
+ Intab=Args(N);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ else
+ Cg=Args(N); Dg=Args(N+1);
+ N=N+2;
+ end;
+ else // when type(Args(N))==10
+ Tmp0=Args(N);
+ Tmp=mtlb_findstr("=",Tmp0);
+ if length(Tmp)>0 then
+ Tmp0=part(Tmp0,(Tmp+1):length(Tmp0));
+ end;
+ Intab=evstr(Tmp0);
+ Cg=Intab(1); Dg=Intab(2);
+ N=N+1;
+ end;
+ if Mg==0 then
+ Mg=Args(N);
+ N=N+1;
+ U=[];
+ for J=1:(Mg+1)
+ U=[U,Ag+(J-1)/Mg*(Bg-Ag)];
+ end;
+ end;
+ if Ng==0 then
+ Ng=Args(N);
+ V=[];
+ for K=1:(Ng+1)
+ V=[V,Cg+(K-1)/Ng*(Dg-Cg)];
+ end;
+ end;
+ Objname(); // 140907 from
+ Join=OBJJOIN;
+ OBJJOIN=1; // upto
+ deff("Out=F1(u,v)","Out=Rfth(u,v)+Thick1*Nfth(u,v)");
+ deff("Out=F2(u,v)","Out=Rfth(u,v)+Thick2*Nfth(u,v)");
+ Dt1=Objsurf(F1,U,V,Selsurf);
+ if Selsurf=="+" then Tmp="-"; else Tmp="+"; end;
+ Dt2=Objsurf(F2,U,V,Tmp);
+ Out=list(Dt1,Dt2); //from 06.22
+ if Selside(1)~="0" then
+ Dt=Objrecs(Dt1(3),Dt2(3),Selside(1));
+ Out=lstcat(Out,list(Dt));
+ end
+ if Selside(2)~="0" then
+ Dt=Objrecs(Dt1(4),Dt2(4),Selside(2));
+ Out=lstcat(Out,list(Dt));
+ end
+ if Selside(3)~="0" then
+ Dt=Objrecs(Dt1(5),Dt2(5),Selside(3));
+ Out=lstcat(Out,list(Dt));
+ end
+ if Selside(4)~="0" then
+ Dt=Objrecs(Dt1(6),Dt2(6),Selside(4));
+ Out=lstcat(Out,list(Dt));
+ end; // upto 6.22
+ OBJJOIN=Join // 140907
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.bin
new file mode 100644
index 00000000..fde60066
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.sci
new file mode 100755
index 00000000..519bc9da
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Op.sci
@@ -0,0 +1,35 @@
+// 08.05.19
+
+// Structure changed
+// 09.10.11
+// 10.01.10 available for plotdata
+// 10.01.12 available for Dataindexed
+// 10.01.16
+
+function C=Op(N,Data)
+ C=[];
+ if Mixtype(Data)>1
+ C=Mixop(N,Data);
+ return;
+ end;
+ if type(Data)==10
+ if size(Data,2)==1
+ C=part(Data,N:N);
+ else
+ C=Data(N)
+ end;
+ return;
+ end;
+ if type(Data)==1
+ if size(Data,1)==1
+ C=Data(N);
+ else
+ Din=Dataindex(Data);
+ if size(Din,1)==1
+ C=Data(N,:);
+ else
+ C=Data(Din(N,1):Din(N,2),:);
+ end;
+ end;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.bin
new file mode 100644
index 00000000..aaf01a9b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.sci
new file mode 100755
index 00000000..4007e1b3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openfile.sci
@@ -0,0 +1,106 @@
+
+//
+// 10.01.10 filename written
+// 13.05.20 openfile error tackled
+// creator and date recorded
+// 13.11.01 Beginpicture joined optionally
+
+function Openfile(varargin)
+ global Wfile FID;
+
+ function Out=Datecount(F)
+ Tmp1=fileinfo(F);
+ Tmp=getdate(Tmp1(7));
+ Year=Tmp(1);
+ Sec=((Tmp(4)-1)*24+Tmp(7))*3600+Tmp(8)*60+Tmp(9);
+ Out=[Year,Sec];
+ endfunction
+
+ function Out=Datestr(F)
+ if F~="" then
+ Tmp1=fileinfo(F);
+ Tmp=getdate(Tmp1(7));
+ else
+ Tmp=getdate();
+ end;
+ Year=Tmp(1);
+ Month=Tmp(2);
+ Day=Tmp(6);
+ Hour=Tmp(7);
+ Min=Tmp(8);
+ D=string(Year)+"-"+string(Month)+"-"+string(Day);
+ T=string(Hour)+":"+string(Min);
+ Out=D+" "+T;
+ endfunction
+
+ File=varargin(1);
+ Bflg=0;
+ Creator='';
+ Cflg=0;
+ Nargs=length(varargin);
+ for N=2:Nargs
+ Tmp=varargin(N);
+ K=mtlb_findstr(Tmp,"=");
+ if length(K)>0 then
+ Creator=part(Tmp,(K+1):length(Tmp));
+ Cflg=1;
+ else
+ Bflg=1;
+ Unitstr=Tmp
+ end
+ end;
+ Recentf='';
+ Tmp1=dir("*.sce");
+ Files=Tmp1(2);
+ if size(Files,1)>0 then
+ Recentf=Files(1,:);
+ Dt=Datecount(Recentf);
+ for J=2:size(Files,1)
+ F=Files(J,:);
+ D=Datecount(F);
+ if D(1)~=Dt(1) then
+ if D(1)>Dt(1) then
+ Recentf=F;
+ Dt=D;
+ end
+ continue
+ end
+ if D(2)>Dt(2) then
+ Recentf=F;
+ Dt=D;
+ end
+ end;
+ end;
+ StrW="%%% "+File+" "+Datestr("")
+ StrC="%%% "+Creator;
+ if Cflg==0 then
+ if Recentf~="" then
+ StrC=StrC+Recentf+" "+Datestr(Recentf);
+ end
+ end
+ if File =='' then
+ Wfile='default';
+ else
+// errcatch(4,"continue"); // 2017.02.18 from
+// Tmp=FID;
+// if iserror(4) then
+// FID=[];
+// errclear(4);
+// end;
+// if FID~=[] then
+// mclose(FID);
+// FID=[];
+// end
+// errcatch(4,"kill"); // 2017.02.18 upto
+ FID=mopen(File,'w');
+ Wfile=File;
+ end
+ if Wfile=='default'
+ mprintf('%s\n%s\n',StrW,StrC);
+ else
+ mfprintf(FID,'%s\n%s\n',StrW,StrC);
+ end
+ if Bflg==1 then
+ Beginpicture(Unitstr)
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.bin
new file mode 100644
index 00000000..0562b2b2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.sci
new file mode 100644
index 00000000..e902ce5d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openobj.sci
@@ -0,0 +1,33 @@
+// s : 2014.06.22
+// e : 14.09.07
+
+function Out=Openobj(Fnm)
+ global OBJFMT NPOINT NNORM OBJSCALE OBJFIGNO Wfile FID OBJJOIN
+ OBJFMT= "%7.4f";
+ NPOINT= 0;
+ NNORM=0;
+ OBJSCALE=1;
+ OBJFIGNO=0;
+ OBJJOIN=0; // 140906
+ if Fnm =='' then
+ Wfile='default';
+ else
+// errcatch(4,"continue"); //17.02.18from
+// Tmp=FID;
+// if iserror(4) then
+// FID=[];
+// errclear(4);
+// end;
+// if FID~=[] then
+// mclose(FID);
+// FID=[];
+// end
+// errcatch(4,"kill"); //17.02.18upto
+ if length(mtlb_findstr(Fnm,".obj"))==0
+ Fnm=Fnm+".obj";
+ end;
+ FID=mopen(Fnm,'w');
+ Wfile=Fnm;
+ Out=Wfile;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.bin
new file mode 100644
index 00000000..4fad25f8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.sci
new file mode 100755
index 00000000..a3056f66
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpar.sci
@@ -0,0 +1,29 @@
+// 08.05.31
+
+function Openpar(varargin)
+ global Wfile FID;
+ Nargs=length(varargin);
+ Tmp=varargin(1);
+ Tmp1=Strop(1,Tmp);
+ if Tmp1=='\' | Tmp1=='Â¥'
+ Namestr=Tmp;
+ N=2;
+ else
+ Namestr='\tmp';
+ N=1;
+ end
+ Habastr=varargin(N);
+ if Nargs>N
+ Posstr='['+varargin(N+1)+']';
+ else
+ Posstr='[c]'
+ end
+ Openphr(Namestr);
+ S='\begin{minipage}'+Posstr+'{'+Habastr+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',S);
+ else
+ mfprintf(FID,'%s\n',S);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.bin
new file mode 100644
index 00000000..3324d29e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.sci
new file mode 100755
index 00000000..461549e9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openphr.sci
@@ -0,0 +1,12 @@
+// 08.05.31
+
+function Openphr(Str)
+ global Wfile FID
+ S='\def'+Str+'{%';
+ if Wfile=='default'
+ mprintf('%s\n',S);
+ else
+ mfprintf(FID,'%s\n',S);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.bin
new file mode 100644
index 00000000..6f58ed83
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.sci
new file mode 100755
index 00000000..edf043ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Openpicture.sci
@@ -0,0 +1,92 @@
+//
+// 09.12.25
+// 11.05.25
+// 14.03.05 MARKLEN
+// 17.03.19 VL=[] => VL="";
+
+function Openpicture(ul)
+ global Wfile FID XMIN XMAX YMIN YMAX ULEN
+ global MilliIn MARKLEN MARKLENNow PenThickInit;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xm=Tmp(1);
+ Ym=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ XM=Tmp(1);
+ YM=Tmp(2);
+ Dx=XM-Xm;
+ Dy=YM-Ym;
+ Sym='.0123456789 +-*/';
+ Tmp=ascii(Sym);
+ SL=Sym;
+ OL='+-*/';
+ if ul~=''
+ ULEN=ul;
+ end
+ Is=1;
+ VL=""; // 17.03.19
+ Ucode=ascii(ULEN);
+ for I=1:length(Ucode)
+ C=char(Ucode(I));
+ if mtlb_findstr(SL,C)~=[]
+ if mtlb_findstr(OL,C)~=[]
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str+C;
+ Is=I+1;
+ end
+ else
+ Unit=char(Ucode(I:(I+1)));
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str;
+ break;
+ end;
+ end;
+ Valu=evstr(VL);
+ Str=string(Valu);
+ ULEN=Str+Unit;
+ if Unit=='cm'
+ MilliIn=1000/2.54*Valu;
+ end
+ if Unit=='mm'
+ MilliIn=1000/2.54*Valu/10;
+ end
+ if Unit=='in'
+ MilliIn=1000*Valu;
+ end
+ if Unit=='pt'
+ MilliIn=1000/72.27*Valu;
+ end
+ if Unit=='pc'
+ MilliIn=1000/6.022*Valu;
+ end
+ if Unit=='bp'
+ MilliIn=1000/72*Valu;
+ end
+ if Unit=='dd'
+ MilliIn=1000/1238/1157/72.27*Valu;
+ end
+ if Unit=='cc'
+ MilliIn=1000/1238/1157/72.27*12*Valu;p
+ end
+ if Unit=='sp'
+ MilliIn=1000/72.27/65536*Valu/10;
+ end
+ MARKLEN=MARKLENNow*1000/2.54/MilliIn;
+ if Wfile=='default'
+ mprintf('%s%s%s\n','{\unitlength=',ULEN,'%');
+ mprintf('%s\n','\begin{picture}%');
+ mprintf('%c%10.5f%c%10.5f%2s%10.5f%c%10.5f%2s\n',...
+ '(',Dx,',',Dy,')(',Xm,',',Ym,')%');
+ Str='\special{pn '+string(PenThickInit)+'}%';
+ mprintf('%s\n',Str);
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s%s%s\n','{\unitlength=',ULEN,'%');
+ mfprintf(FID,'%s\n','\begin{picture}%');
+ mfprintf(FID,'%c%10.5f%c%10.5f%2s%10.5f%c%10.5f%2s\n',...
+ '(',Dx,',',Dy,')(',Xm,',',Ym,')%'); //11.05.25
+ Str='\special{pn '+string(PenThickInit)+'}%';
+ mfprintf(FID,'%s\n',Str);
+ mfprintf(FID,'%s\n','%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.bin
new file mode 100644
index 00000000..75982c37
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.sci
new file mode 100644
index 00000000..8889de32
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovalbox.sci
@@ -0,0 +1,42 @@
+function Ovalbox(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ Pos=varargin(1);
+ Dr=varargin(2);
+ StrV=varargin(3);
+ R=0.2;
+ NDflg=0;
+ for I=4:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ R=Tmp;
+ else
+ if part(Tmp,1)=='-'
+ NDflg=1;
+ Tmp1=part(Tmp,2:length(Tmp));
+ Cmdstr=strsubst(Tmp1,'*','G1');
+ end;
+ end;
+ end;
+ Xr=[XMIN,XMAX];
+ Yr=[YMIN,YMAX];
+ Uv=0.6; Uh=0.8;
+ N=length(StrV);
+ W=Uh; H=Uv*N;
+ Setwindow([-W/2,W/2],[-H,0]);
+ G1=Ovaldata([0,-H/2],W/2,H/2,R);
+ Openphr('\ketpictmp');
+ Beginpicture('1cm');
+ if NDflg==0
+ Drwline(G1);
+ else
+ execstr(Cmdstr);
+ end;
+ for I=1:N
+ Letter([0,Uv/2-Uv*I],'c',Op(I,StrV))
+ end;
+ Endpicture(0);
+ Closephr();
+ Setwindow(Xr,Yr);
+ Letter(Pos,Dr,'\ketpictmp');
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.bin
new file mode 100644
index 00000000..c39ee4b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.sci
new file mode 100644
index 00000000..823fc8c4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ovaldata.sci
@@ -0,0 +1,31 @@
+// e : 2015.11.15
+function Out=Ovaldata(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ if Nargs<=1
+ Eps=1.0*10^(-4);
+ C=[(XMIN+XMAX)/2,(YMIN+YMAX)/2];
+ Dx=XMAX-C(1)-Eps;
+ Dy=YMAX-C(2)-Eps;
+ N=1;
+ else
+ C=varargin(1);
+ Dx=varargin(2);
+ Dy=varargin(3);
+ N=4;
+ end;
+ Rc=0.2;
+ if N<=Nargs
+ Rc=varargin(N)*Rc; // 15.11.15
+ end;
+ Out=[];
+ P=C+[Dx-Rc,Dy-Rc];
+ Tmp1=Circledata(P,Rc,'R=[0,%pi/2]','N=10');
+ Tmp2=Listplot(C+[Dx-Rc,Dy],C+[0,Dy]);
+ Tmp3=Listplot(C+[Dx,0],C+[Dx,Dy-Rc]);
+ G=Joincrvs(Tmp3,Tmp1,Tmp2);
+ Tmp=Reflectdata(G,[C,C+[0,1]]);
+ G=Joincrvs(G,Tmp);
+ Tmp=Reflectdata(G,[C,C+[1,0]]);
+ Out=Joincrvs(G,Tmp);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.bin
new file mode 100644
index 00000000..9695687c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.sci
new file mode 100755
index 00000000..82ac7c4f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramark.sci
@@ -0,0 +1,20 @@
+// 08.06.18
+
+function P=Paramark(varargin)
+ Nargs=length(varargin);
+ PA=varargin(1);
+ PB=varargin(2);
+ PC=varargin(3);
+ R=0.5;
+ if Nargs>=4
+ R=varargin(4)*R;
+ end
+ U=R*(PA-PB)/Vecnagasa(PA,PB);
+ V=R*(PC-PB)/Vecnagasa(PC,PB);
+ if Gaiseki(PA-PB,PC-PB)~=0
+ P=Listplot([PB+U,PB+U+V,PB+V]);
+ else
+ P=[];
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.bin
new file mode 100644
index 00000000..323d0fcd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.sci
new file mode 100755
index 00000000..ce7e0d76
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ParamonCurve.sci
@@ -0,0 +1,18 @@
+// 08.05.30
+
+function Out=ParamonCurve(P,N,PtL)
+// PtL=Plt;
+ if N==size(PtL,1)
+ Out=N;
+ else
+ Pa=PtL(N,:);
+ Pb=PtL(N+1,:);
+ V=Pb-Pa;
+ W=P-Pa;
+ D2=V(1)^2+V(2)^2;
+ S=(V(1)*W(1)+V(2)*W(2))/D2;
+ S=min(max(S,0),1);
+ Out=N+S;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.bin
new file mode 100644
index 00000000..14f251f7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.sci
new file mode 100755
index 00000000..83661787
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramoncrv.sci
@@ -0,0 +1,35 @@
+// 09.10.03
+
+function Out=Paramoncrv(varargin)
+ Eps=10^(-8);
+ Nargs=length(varargin);
+ P=varargin(1);
+ Gdata=varargin(Nargs);
+ if size(P,1)>1
+ Tmp=P; P=Gdata; Gdata=Tmp;
+ end;
+ if Nargs==2
+ Tmp=Nearestpt(P,Gdata);
+ Out=Mixop(2,Tmp);
+ return;
+ end;
+ N=varargin(2);
+ PtL=Gdata;
+ if N==size(PtL,1)
+ Out=N;
+ else
+ Pa=PtL(N,:);
+ Pb=PtL(N+1,:);
+ V=Pb-Pa;
+ W=P-Pa;
+ D2=norm(V)^2;
+ if D2<Eps
+ Out=0;
+ return;
+ end;
+ S=Dotprod(V,W)/D2;
+ S=min(max(S,0),1);
+ Out=N+S;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.bin
new file mode 100644
index 00000000..fc163602
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.sci
new file mode 100755
index 00000000..4e3effdc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Paramplot.sci
@@ -0,0 +1,140 @@
+// 08.06.18 (N)
+// 08.12.18
+// 09.03.12
+// 09.12.31 (gsort)
+// 13.10.19 ( __ added to variables )
+// 14.10.24 N,D,E => N__, etc
+// 14.12.11 Assign used
+// 15.11.16 N changed to number of intervals
+// 16.12.13 in case of T1=T2
+
+function P__=Paramplot(varargin)
+ Eps__=10^(-5);
+ Nargs__=length(varargin);
+ if type(varargin(1))==13
+ Fnflg__=1;
+ Fnx__=varargin(1);
+ Fny__=varargin(2); Is__=3;
+ if type(varargin(Is__))==13
+ Fnflg__=Fnflg__+1;
+ Fnargx__=varargin(Is__);
+ Fnargy__=varargin(Is__+1);
+ Is__=Is__+2;
+ end;
+ else
+ Fnflg__=0;
+ Fnstr__=varargin(1); Is__=2;
+ end;
+ Rgstr__=varargin(Is__); Is__=Is__+1;
+ Range__=[0,2*%pi];
+ N__=50; // Numpoints
+ E__=[]; // Exclusions
+ D__=%inf; // Discont
+ for I__=Is__:Nargs__
+ Tmp__=varargin(I__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Tmp1__=strsplit(Tmp__,[K__-1,K__]);
+ Tmp2__=ascii(Tmp1__(1,1));
+ Lhs__=char(Tmp2__(1));
+ Str__=Lhs__+'__='+Tmp1__(3,1);
+ execstr(Str__);
+ end;
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Tmp__=strsplit(Rgstr__,[K__-1,K__]);
+ Vname__=Tmp__(1,1);
+ Rng__=evstr(Tmp__(3,1));
+ else
+ Vname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end
+ T1__=Rng__(1); T2__=Rng__(2);
+// Dt__=(T2__-T1__)/(N__-1);
+ Dt__=(T2__-T1__)/(N__); // 15.11.16
+ if Fnflg__==0
+ Str__=Assign(Fnstr__,Vname__,'t__');
+ end;
+ if abs(Dt__)<Eps__ then // 16.12.13
+ t__=T1__;
+ P__=evstr(Str__);
+ return;
+ end;
+ P__=[];
+ E__=gsort(E__);
+ E__=E__(length(E__):-1:1);
+ E__=[E__,%inf];
+ Tmp__=gsort(E__);
+ E__=Tmp__(length(Tmp__):-1:1);
+ Ke__=1;
+ for t__=T1__:Dt__:T2__
+ Pa__=[];
+ if t__-E__(Ke__)<-Eps__
+ if Fnflg__==0
+ Pa__=evstr(Str__);
+ else
+ if Fnflg__==1
+ Pa__=[Fnx__(t__),Fny__(t__)];
+ else
+ if type(Fnargx__)==1
+ Tmp1__=Fnx__(t__);
+ else
+ Tmp1__=Fnx__(Fnargx__,t__);
+ end;
+ if type(Fnargy__)==1
+ Tmp2__=Fny__(t__);
+ else
+ Tmp2__=Fny__(Fnargy__,t__);
+ end;
+ Pa__=[Tmp1__,Tmp2__];
+ end;
+ end;
+ end
+ if abs(t__-E__(Ke__))<=Eps__
+ if P__~=[] & P__(size(P__,1),:)~=[%inf,%inf]
+ Pa__=[%inf,%inf];
+ end
+ end
+ if t__-E__(Ke__)>Eps__
+ if Fnflg__==0
+ Pa__=evstr(Str__);
+ else
+ if Fnflg__==1
+ Pa__=[Fnx__(t__),Fny__(t__)];
+ else
+ if type(Fnargx__)==1
+ Tmp1__=Fnx__(t__);
+ else
+ Tmp1__=Fnx__(Fnargx__,t__);
+ end;
+ if type(Fnargy__)==1
+ Tmp2__=Fny__(t__);
+ else
+ Tmp2__=Fny__(Fnargy__,t__);
+ end;
+ Pa__=[Tmp1__,Tmp2__];
+ end;
+ end;
+ Ke__=Ke__+1;
+ end
+ if Pa__~=[]
+ if Pa__(1)==%inf
+ P__=[P__; Pa__]
+ elseif P__==[]
+ P__=[Pa__];
+ else
+ Tmp__=P__(size(P__,1),:);
+ if Tmp__(1)==%inf
+ P__=[P__;Pa__];
+ elseif norm(Tmp__-Pa__)<D__
+ P__=[P__;Pa__];
+ else
+ P__=[P__;%inf,%inf;Pa__];
+ end
+ end
+ end
+ end;
+ Tmp__=size(P__,1);
+ if P__(Tmp__,1)==%inf
+ P__=P__(1:Tmp__-1,:);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.bin
new file mode 100644
index 00000000..092914d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.sci
new file mode 100755
index 00000000..5adb4837
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Parapt.sci
@@ -0,0 +1,12 @@
+// 08.07.11
+// 10.01.02
+
+function Out=Parapt(P)
+ global PHI THETA
+ x=P(1);
+ y=P(2);
+ z=P(3);
+ Xz=-x*sin(PHI)+y*cos(PHI);
+ Yz=-x*cos(PHI)*cos(THETA)-y*sin(PHI)*cos(THETA)+z*sin(THETA);
+ Out=[Xz,Yz];
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.bin
new file mode 100644
index 00000000..73386a71
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.sci
new file mode 100755
index 00000000..0b4844df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv.sci
@@ -0,0 +1,42 @@
+// 08.05.31
+// 09.03.06
+
+function Ans=Partcrv(A,B,PkL)
+ Eps=10.0^(-3);
+ if type(A)==1 & length(A)==1
+ // new part from
+ if A>B+Eps
+ Npt=Numptcrv(PkL);
+ Out1=Partcrv(A,Npt,PkL);
+ Out2=Partcrv(1,B,PkL);
+ Tmp=Ptstart(PkL)-Ptend(PkL);
+ if norm(Tmp)<Eps
+ Ans=Joincrvs(Out1,Out2);
+ else
+ Ans=Mix(Out1,Out2);
+ end;
+ return;
+ end;
+ // to here
+ Is=ceil(A);
+ Ie=floor(B);
+ PL=[];
+ if A<Is-Eps
+ P=(Is-A)*PkL(Is-1,:)+(1-Is+A)*PkL(Is,:);
+ PL=[P];
+ end
+ PL=[PL;PkL(Is:Ie,:)];
+ if B>Ie+Eps
+ P=(1-B+Ie)*PkL(Ie,:)+(B-Ie)*PkL(Ie+1,:);
+ PL=[PL;P]
+ end
+ Ans=PL;
+ return
+ end;
+ Tmp=Nearestpt(A,PkL);//
+ Ta=Op(2,Tmp);//
+ Tmp=Nearestpt(B,PkL);//
+ Tb=Op(2,Tmp);//
+ Ans=Partcrv(Ta,Tb,PkL);//
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.bin
new file mode 100644
index 00000000..5d9d9e2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.sci
new file mode 100755
index 00000000..5b3cd178
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partcrv3.sci
@@ -0,0 +1,34 @@
+// 08.09.13
+// 09.03.06
+
+function PL=Partcrv3(T1,T2,Fk)
+ Eps=10^(-4);
+// Tmp=Mixop(1,Fk);
+ // new part from
+ if T1>T2+Eps
+ Npt=size(Fk,1);
+ Out1=Partcrv3(T1,Npt,Fk);
+ Out2=Partcrv3(1,T2,Fk);
+ Tmp=Fk(1,:)-Fk(Npt,:);
+ if norm(Tmp)<Eps
+ PL=Joincrvs(Out1,Out2);
+ else
+ PL=Mix(Out1,Out2);
+ end;
+ return;
+ end;
+ // to here
+ Is=ceil(T1);
+ Ie=floor(T2);
+ PL=[];
+ if T1<Is-Eps
+ P=(Is-T1)*Fk(Is-1,:)+(1-Is+T1)*Fk(Is,:);
+ PL=[P]
+ end;
+ PL=[PL;Fk(Is:Ie,:)];
+ if T2>Ie+Eps
+ P=(1-T2+Ie)*Fk(Ie,:)+(T2-Ie)*Fk(Ie+1,:);
+ PL=[PL;P]
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.bin
new file mode 100644
index 00000000..bf10f26e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.sci
new file mode 100644
index 00000000..a8581b1b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partframe.sci
@@ -0,0 +1,27 @@
+// 13.05.03
+
+function Out=Partframe(Tb,St,Ed)
+ G=Dividetable(Tb);
+ Gw=G(1);
+ Gt=G(2);
+ Gy=G(3);
+ Gwt=Tb(4);
+ Gwy=Tb(5);
+ Gat=lstcat(list(Gwt(1)),Gt,list(Gwt(2)));
+ Gay=lstcat(list(Gwy(1)),Gy,list(Gwy(2)));
+ Tmp1=Ptstart(Gat(St(1)));
+ Tmp2=Ptstart(Gay(St(2)));
+ Ps=[Tmp1(1),Tmp2(2)];
+ Tmp1=Ptstart(Gat(Ed(1)));
+ Tmp2=Ptstart(Gay(Ed(2)));
+ Pe=[Tmp1(1),Tmp2(2)];
+ Pars=Paramoncrv(Ps,Gw);
+ Pare=Paramoncrv(Pe,Gw);
+ if Pars<Pare then
+ Out=Partcrv(Pars,Pare,Gw);
+ else
+ Tmp1=Partcrv(Pars,Numptcrv(Gw),Gw);
+ Tmp2=Partcrv(1,Pare,Gw);
+ Out=Joincrvs(Tmp1,Tmp2);
+ end
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.bin
new file mode 100644
index 00000000..badede95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.sci
new file mode 100755
index 00000000..15d74ec4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PartitionPt.sci
@@ -0,0 +1,7 @@
+// 08.09.13
+
+function Out=PartitionPt()
+ global PARTITIONPT;
+ Out=PARTITIONPT;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.bin
new file mode 100644
index 00000000..b732c600
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.sci
new file mode 100755
index 00000000..39c23c45
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Partitionseg.sci
@@ -0,0 +1,100 @@
+// 08.09.13
+// 08.10.17
+// 09.05.27
+// 09.12.31 (gsort)
+
+function Out=Partitionseg(varargin)
+ global PARTITIONPT OTHERPARTITION;
+ Nargs=length(varargin);
+ Fig=varargin(1);
+ GL=varargin(2); N=3;
+ Eps0=10^(-5);
+ Eps=0.05;
+ if Nargs>2
+ Eps=varargin(3);
+ end;
+ Eps2=0.2;
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ if Nargs>4
+ Ns=varargin(5);
+ Other=Mixop(Ns,OTHERPARTITION);
+ else
+ Ns=1;
+ Other=[];
+ OTHERPARTITION=[];
+ for N=1:Mixlength(GL)
+ OTHERPARTITION=Mixadd(OTHERPARTITION,[]);
+ end;
+ end;
+ Npt=size(Fig,1);
+ ParL=[1,Npt,Other];
+ for N=Ns:Mixlength(GL)
+ G=Mixop(N,GL);
+ if Fig==G
+ KouL=IntersectselfPp(Fig,Eps,Eps2);
+ else
+ KouL=IntersectcrvsPp(Fig,G,Eps,Eps2);
+ Tmp=Nearestpt(Ptstart(Fig),G);
+ Tmp1=Mixop(1,Tmp);
+ Tmp2=Mixop(2,Tmp);
+ Tmp3=Mixop(3,Tmp);
+ if Tmp3>Eps0 & Tmp3<Eps
+ Tmp1=Mix(Tmp1,1,floor(Tmp2));
+ KouL=Mixadd(KouL,Tmp1);
+ end;
+ Tmp=Nearestpt(Ptend(Fig),G);
+ Tmp1=Mixop(1,Tmp);
+ Tmp2=Mixop(2,Tmp);
+ Tmp3=Mixop(3,Tmp);
+ if Tmp3>Eps0 & Tmp3<Eps
+ Tmp1=Mix(Tmp1,Numptcrv(Fig),floor(Tmp2));
+ KouL=Mixadd(KouL,Tmp1);
+ end;
+ end;
+ for I=1:Mixlength(KouL)
+ Tmp=Mixop(I,KouL);
+ P=Mixop(1,Tmp);
+ S=Mixop(2,Tmp);
+ ParL=[ParL,S];
+ K=Mixop(3,Tmp);
+ S=ParamonCurve(P,K,G);
+ Tmp=Mixop(N,OTHERPARTITION);
+ Tmp1=gsort([Tmp,S]);
+ Tmp1=Tmp1(length(Tmp1):-1:1);
+ Tmp2=[];
+ for J=1:Mixlength(OTHERPARTITION)
+ Tmp3=Mixop(J,OTHERPARTITION);
+ if J~=N
+ Tmp2=Mixadd(Tmp2,Tmp3);
+ else
+ Tmp2=Mixadd(Tmp2,Tmp1);
+ end;
+ end;
+ OTHERPARTITION=Tmp2;
+ end;
+ end;
+ ParL=gsort(ParL);
+ ParL=ParL(length(ParL):-1:1);
+ ParL(1)=1;
+ Out=[ParL(1)];
+ P=PointonCurve(ParL(1),Fig);
+ PARTITIONPT=Mix(P);
+ for I=1:length(ParL)
+ Tmp=ParL(I);
+ P=PointonCurve(Tmp,Fig);
+ Tmp1=Out(length(Out));
+ Q=PointonCurve(Tmp1,Fig);
+ if norm(P-Q)>Eps
+ Out=[Out,Tmp];
+// P=PointonCurve(Tmp,Fig);
+ PARTITIONPT=Mixadd(PARTITIONPT,P);
+ end;
+ end;
+ if Out(length(Out))~=Npt
+ Out=[Out(1:length(Out)-1),Npt];
+ end;
+ if length(Out)==1 Out=[1,Npt]; end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.bin
new file mode 100644
index 00000000..e48ca436
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.sci
new file mode 100755
index 00000000..eb689ffe
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Perspt.sci
@@ -0,0 +1,21 @@
+// 08.08.12
+
+function Out=Perspt(P)
+ global FocusPoint EyePoint;
+ Tmp=P-FocusPoint;
+ X1=Tmp(1); Y1=Tmp(2); Z1=Tmp(3);
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ X2=X1*Ca+Y1*Sa; Y2=-X1*Sa+Y1*Ca; Z2=Z1;
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ X3=X2*Cb+Z2*Sb; Y3=Y2; Z3=-X2*Sb+Z2*Cb;
+ E3=E2*Cb+G2*Sb; F3=F2; G3=-E2*Sb+G2*Cb;
+ Yz=E3/(E3-X3)*Y3;
+ Zz=E3/(E3-X3)*Z3;
+ Out=[Yz,Zz];
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.bin
new file mode 100644
index 00000000..6c1648ab
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.sci
new file mode 100755
index 00000000..ea2c8e28
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhFaceL.sci
@@ -0,0 +1,7 @@
+// 08.08.17
+
+function Out=PhFaceL()
+ global PHCUTPOINTL PHVERTEXL PHFACEL;
+ Out=PHFACEL;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.bin
new file mode 100644
index 00000000..a76d1351
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.sci
new file mode 100755
index 00000000..d5333cd1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+
+function Out=PhHiddenData()
+ global PHHIDDENDATA;
+ Out=PHHIDDENDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.bin
new file mode 100644
index 00000000..6f261d0b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.sci
new file mode 100755
index 00000000..1eae4bc9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PhVertexL.sci
@@ -0,0 +1,7 @@
+// 08.08.17
+
+function Out=PhVertexL()
+ global PHCUTPOINTL PHVERTEXL PHFACEL;
+ Out=PHVERTEXL;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.bin
new file mode 100644
index 00000000..c447109d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.sci
new file mode 100755
index 00000000..9c7806f5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutdata.sci
@@ -0,0 +1,173 @@
+// 08.08.17
+// 08.09.16
+// 10.01.02
+// 13.10.21 ( __ added to varibles )
+// 14.06.09 ( debugged -- the cause unknown )
+
+function Out__=Phcutdata(VL__,FaceL__,PlaneD__)
+ global PHCUTPOINTL
+ Out__=[];
+ EL__=[];
+ Eps__=10^(-4);
+ for I__=1:Mixlength(FaceL__)
+ Face__=Mixop(I__,FaceL__);
+ for J__=1:length(Face__)
+ Nj__=J__+1;
+ if J__==length(Face__)
+ Nj__=1;
+ end;
+ N1__=Face__(J__); N2__=Face__(Nj__);
+ Tmp__=[N1__,N2__];
+ Flg__=0;
+ for K__=1:Mixlength(EL__)
+ Tmp1__=Mixop(K__,EL__);
+ Tmp2__=[Tmp1__(2),Tmp1__(1)];
+ if Tmp__==Tmp1__ | Tmp__==Tmp2__
+ Flg__=1;
+ break;
+ end
+ end;
+ if Flg__==0
+ EL__=Mixadd(EL__,Tmp__);
+ end;
+ end;
+ end;
+ Out0__=[];
+ for I__=1:Mixlength(EL__)
+ Tmp__=Mixop(I__,EL__);
+ Tmp1__=Mixop(Tmp__(1),VL__);
+ Tmp2__=Mixop(Tmp__(2),VL__);
+ Out0__=Mixadd(Out0__, Spaceline([Tmp1__,Tmp2__]));
+ end;
+ if Mixtype(PlaneD__)~=1
+ V1__=Mixop(1,PlaneD__);
+ Tmp__=Mixop(2,PlaneD__);
+ if length(Tmp__)>1
+ d__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ d__=Tmp__;
+ end;
+ elseif type(PlaneD__)==1
+ V1__=PlaneD__(1:3);
+ d__=PlaneD__(4);
+ else
+ K__=mtlb_findstr(PlaneD__,'=');
+ if K__>0
+ Tmp1__=part(PlaneD__,1:K__-1);
+ Tmp2__=part(PlaneD__,K__+1:length(PlaneD__));
+ PlaneD__=Tmp1__+'-('+Tmp2__+')';
+ end;
+ x=0; y=0; z=0;
+ d__=-evstr(PlaneD__);
+ x=1; y=0; z=0;
+ Tmp1__=evstr(PlaneD__)+d__;
+ x=0; y=1; z=0;
+ Tmp2__=evstr(PlaneD__)+d__;
+ x=0; y=0; z=1;
+ Tmp3__=evstr(PlaneD__)+d__;
+ V1__=[Tmp1__,Tmp2__,Tmp3__];
+ end;
+ if V1__==[0,0,0]
+ Out__=Out0__;
+ return;
+ end;
+ V3__=[1,0,0];
+ Out1__=Rotate3data(Out0__,V1__,V3__);
+// x=poly(0,'X');
+ Tmp2__=Rotate3pt([1,0,0],V3__,V1__);
+ Tmp__=V1__(1)*Tmp2__(1)+V1__(2)*Tmp2__(2)+V1__(3)*Tmp2__(3);
+ x0__=d__/Tmp__;
+ t__=poly(0,'T');
+ PtL__ =[];
+ for I__=1:Mixlength(Out1__)
+ Tmp__=Mixop(I__,Out1__);
+ Tmp1__=Tmp__(1,:); Tmp2__=Tmp__(2,:);
+ P__=Tmp1__+t__*(Tmp2__-Tmp1__);
+ Tmp__=Tmp1__(1)+t__*(Tmp2__(1)-Tmp1__(1));
+ if abs(coeff(Tmp__,1))<Eps__
+ Tmp__=[];
+ else
+ Tmp1__=coeff(Tmp__,1);
+ Tmp2__=x0__-coeff(Tmp__,0);
+ Tmp__=[Tmp2__/Tmp1__];
+ end;
+ if length(Tmp__)>0
+ Tmp__=Tmp__(1);
+ if (Tmp__>-Eps__) & (Tmp__<1+Eps__)
+ Tmp3__=horner(P__,Tmp__);
+ Tmp3__=Rotate3pt(Tmp3__,V3__,V1__);
+ if Tmp__<Eps__
+ Tmp1__=Mixop(I__,EL__);
+ Tmp1__=Tmp1__(1);
+ Tmp4__=MixS([Tmp1__,Tmp1__],Tmp3__);
+ else
+ if Tmp__>1-Eps__ then
+ Tmp1__=Mixop(I__,EL__);
+ Tmp1__=Tmp1__(2);
+ Tmp4__=MixS([Tmp1__,Tmp1__],Tmp3__);
+ else
+ Tmp4__=MixS(Mixop(I__,EL__),Tmp3__);
+ end;
+ end;
+ Flg__=0;
+ for J__=1:Mixlength(PtL__)
+ Tmp__=Mixop(J__,PtL__);
+ Tmp__=Mixop(2,Tmp__);
+ if norm(Tmp3__-Tmp__)<Eps__ then
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ PtL__=Mixadd(PtL__,Tmp4__);
+ end;
+ end;
+ end;
+ end;
+ if Mixlength(PtL__)==0
+ Out__=Out0__;
+ return
+ end;
+ PL__=Mix(Mixop(1,PtL__));
+ QL__=Mixsub(2:Mixlength(PtL__),PtL__);
+ N__=Mixlength(QL__);
+ for I__=2:N__+1
+ Tmp1__=Mixop(Mixlength(PL__),PL__);
+ Tmp1__=Mixop(1,Tmp1__);
+ for J__=1:Mixlength(QL__)
+ Tmp2__=Mixop(J__,QL__);
+ Tmp2__=Mixop(1,Tmp2__);
+ Flg__=0;
+ for K__=1:Mixlength(FaceL__)
+ Tmp3__=Mixop(K__,FaceL__);
+ if Member(Tmp1__(1),Tmp3__) & Member(Tmp1__(2),Tmp3__) & Member(Tmp2__(1),Tmp3__) & Member(Tmp2__(2),Tmp3__)
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==1
+ break;
+ end;
+ end;
+ J__=min(J__, Mixlength(QL__));
+ PL__=Mixadd(PL__,Mixop(J__,QL__));
+ Tmp1__=Mixsub(1:J__-1,QL__);
+ Tmp2__=Mixsub(J__+1:Mixlength(QL__),QL__);
+ QL__=Mixjoin(Tmp1__,Tmp2__);
+ if Mixlength(QL__)==0
+ break;
+ end;
+ end;
+ PHCUTPOINTL=PL__;
+ Tmp__=[];
+ for J__=1:Mixlength(PL__);
+ Tmp1__=Mixop(J__,PL__);
+ Tmp1__=Mixop(2,Tmp1__);
+ Tmp__=Mixadd(Tmp__,Tmp1__);
+ end;
+ Tmp1__=Mixop(1,PL__);
+ Tmp1__=Mixop(2,Tmp1__);
+ Tmp__=Mixadd(Tmp__,Tmp1__);
+ Out2__=Spaceline(Tmp__);
+ Out__=Mixadd(Out0__,Out2__);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.bin
new file mode 100644
index 00000000..9e24e48d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.sci
new file mode 100755
index 00000000..879067ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phcutoffdata.sci
@@ -0,0 +1,184 @@
+// 08.08.17
+// 10.08.15 near line 25 or so
+// 13.10.21 ( __ added to varibles )
+
+function Out2__=Phcutoffdata(varargin)
+ global PHCUTPOINTL PHVERTEXL PHFACEL;
+ Eps__=10^(-4);
+ Out2__=[];
+ VL__=varargin(1);
+ FaceL__=varargin(2);
+ PlaneD__=varargin(3);
+ Sgnstr__=varargin(4);
+ Fugou__=1;
+ if Sgnstr__=='-' | Sgnstr__=='n' Fugou__=-1; end;
+ Out0__=Phcutdata(VL__,FaceL__,PlaneD__);
+ PtL__=PHCUTPOINTL;
+ PHVERTEXL=VL__;
+ PHFACEL=FaceL__;
+ if PtL__==[]
+ Out2__=Out0__;
+ return;
+ end;
+ N1__=Mixlength(VL__);
+ Face__=[];
+ for I__=1:Mixlength(PtL__);
+ Tmp__=Mixop(I__,PtL__);
+ Tmp3__=Mixop(1,Tmp__); // 2010.08.15
+ Tmp1__=Tmp3__(1); Tmp2__=Tmp3__(2); // 2010.08.15
+ if Tmp1__~=Tmp2__
+ VL__=Mixadd(VL__,Mixop(2,Tmp__));
+ N1__=N1__+1;
+ Tmp1__=N1__;
+ end;
+ Face__=[Face__,Tmp1__];
+ PtL__(I__)=list(Mixop(1,Tmp__),Tmp1__); // 2010.08.15
+// Tmp2__=Mixsub(1:I__-1,PtL__);
+// Tmp2__=Mixadd(Tmp2__,Mix(Mixop(1,Tmp__),Tmp1__));
+// Tmp3__=Mixsub(I__+1:Mixlength(PtL__),PtL__);
+// PtL__=Mixjoin(Tmp2__,Tmp3__);
+ end;
+ OutfL__=MixS(Face__);
+ if Mixtype(PlaneD__)~=1
+ V1__=Mixop(1,PlaneD__);
+ Tmp__=Mixop(2,PlaneD__);
+ if length(Tmp__)>1
+ d__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ d__=Tmp__;
+ end;
+ elseif type(PlaneD__)==1
+ V1__=PlaneD__(1:3);
+ d__=PlaneD__(4);
+ else
+ K__=mtlb_findstr(PlaneD__,'=');
+ if K__>0
+ Tmp1__=part(PlaneD__,1:K__-1);
+ Tmp2__=part(PlaneD__,K__+1:length(PlaneD__));
+ PlaneD__=Tmp1__+'-('+Tmp2__+')';
+ end;
+ x=0; y=0; z=0;
+ d__=-evstr(PlaneD__);
+ x=1; y=0; z=0;
+ Tmp1__=evstr(PlaneD__)+d__;
+ x=0; y=1; z=0;
+ Tmp2__=evstr(PlaneD__)+d__;
+ x=0; y=0; z=1;
+ Tmp3__=evstr(PlaneD__)+d__;
+ V1__=[Tmp1__,Tmp2__,Tmp3__];
+ end;
+ for I__=1:Mixlength(FaceL__)
+ Face__=Mixop(I__,FaceL__);
+ TmpL__=[];
+ for J__=1:length(Face__)
+ N1__=Face__(J__);
+ if J__==length(Face__)
+ N2__=Face__(1);
+ else
+ N2__=Face__(J__+1);
+ end;
+ for K__=1:Mixlength(PtL__)
+ Pd__=Mixop(K__,PtL__);
+ Tmp__=Mixop(1,Pd__);
+ if Tmp__(1)==Tmp__(2)
+ if Tmp__(1)==N1__
+ TmpL__=Mixadd(TmpL__,Mix(J__,[N1__,N2__],Mixop(2,Pd__)));
+ end
+ else
+ if Tmp__==[N1__,N2__] | Tmp__==[N2__,N1__]
+ TmpL__=Mixadd(TmpL__,Mix(J__,[N1__,N2__],Mixop(2,Pd__)));
+ end;
+ end;
+ end;
+ end;
+ if Mixlength(TmpL__)<2
+ Flg__=0;
+ for J__=1:length(Face__)
+ Tmp__=Mixop(Face__(J__),VL__);
+ Tmp1__=Fugou__*(Naiseki(V1__,Tmp__)-d__);
+ if Tmp1__<-Eps__
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ OutfL__=Mixadd(OutfL__,Face__);
+ end;
+ continue;
+ end;
+ Pd__=Mixop(1,TmpL__);
+ Qd__=Mixop(2,TmpL__);
+ Outf1__=[Mixop(3,Pd__)];
+ Nf__=Mixop(1,Pd__)+1;
+ Tmp__=Mixop(2,Pd__);
+ JJ__=0;
+ while Tmp__~=Mixop(2,Qd__)
+ JJ__=JJ__+1;
+ if JJ__>20
+ disp('bug');
+ return;
+ end;
+ Tmp1__=Tmp__(2);
+ if Outf1__(length(Outf1__))~=Tmp1__
+ Outf1__=[Outf1__,Tmp1__];
+ end;
+ Tmp__=[Face__(Nf__)];
+ Nf__=Nf__+1;
+ if Nf__>length(Face__) Nf__=1; end;
+ Tmp__=[Tmp__,Face__(Nf__)];
+ end;
+ Tmp1__=Mixop(3,Qd__);
+ if Outf1__(length(Outf1__))~=Tmp1__
+ Outf1__=[Outf1__,Tmp1__];
+ end;
+ Outf2__=[Mixop(3,Pd__)];
+ Nf__=Mixop(1,Pd__);
+ Tmp__=Mixop(2,Pd__);
+ JJ__=0;
+ while Tmp__~=Mixop(2,Qd__)
+ JJ__=JJ__+1;
+ if JJ__>20
+ disp('bug');
+ return;
+ end;
+ Tmp1__=Tmp__(1);
+ if Outf2__(length(Outf2__))~=Tmp1__
+ Outf2__=[Outf2__,Tmp1__]
+ end;
+ Tmp__=[Face__(Nf__)];
+ Nf__=Nf__-1;
+ if Nf__<1 Nf__=length(Face__); end;
+ Tmp__=[Face__(Nf__),Tmp__];
+ end;
+ Tmp1__=Mixop(3,Qd__);
+ if Outf2__(length(Outf2__))~=Tmp1__
+ Outf2__=[Outf2__,Tmp1__]
+ end;
+ if length(Outf1__)<3 | length(Outf2__)<3
+ Face__=Outf1__;
+ if length(Outf1__)<length(Outf2__) Face__=Outf2__; end;
+ Flg__=0;
+ for J__=1:length(Face__)
+ Tmp__=Mixop(Face__(J__),VL__);
+ Tmp1__=Fugou__*(Naiseki(V1__,Tmp__)-d__);
+ if Tmp1__<-Eps__
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ OutfL__=Mixadd(OutfL__,Face__);
+ end;
+ else
+ Tmp__=Mixop(Outf1__(2),VL__);
+ Tmp1__=Outf1__;
+ Tmp2__=Fugou__*(Naiseki(V1__,Tmp__)-d__);
+ if Tmp2__<0 Tmp1__=Outf2__; end;
+ OutfL__=Mixadd(OutfL__,Tmp1__);
+ end;
+ end;
+ PHVERTEXL=VL__;
+ PHFACEL=OutfL__;
+ Out2__=Phcutdata(VL__,OutfL__,[0,0,0,0]);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.bin
new file mode 100644
index 00000000..4105b83f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.sci
new file mode 100755
index 00000000..02fe98a5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phidegree.sci
@@ -0,0 +1,7 @@
+// 08.07.11
+
+function Ang=Phidegree()
+ global PHI;
+ Ang=PHI*180/%pi;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.bin
new file mode 100644
index 00000000..8e0c2f4b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.sci
new file mode 100755
index 00000000..835c173e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Out=Phparadata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'para');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.bin
new file mode 100644
index 00000000..bd4d18f5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.sci
new file mode 100755
index 00000000..e422b6fc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phpersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Out=Phpersdata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'pers');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.bin
new file mode 100644
index 00000000..83ccabf1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.sci
new file mode 100755
index 00000000..c4c79c26
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Out=Phrawparadata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'rawpara');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.bin
new file mode 100644
index 00000000..c2072a26
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.sci
new file mode 100755
index 00000000..29870630
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phrawpersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.21
+// 09.10.27
+
+function Phrawpersdata(VL,FaceL)
+ Out=Facesdata(list(VL,FaceL),'rawpers');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.bin
new file mode 100644
index 00000000..4a5a308d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.sci
new file mode 100755
index 00000000..3c8018e3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Out=Phsparadata(Fdata)
+ Out=Facesdata(Fdata,'para')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.bin
new file mode 100644
index 00000000..9d90d190
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.sci
new file mode 100755
index 00000000..58ab8101
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phspersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Out=Phspersdata(Fdata)
+ Out=Facesdata(Fdata,'pers')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.bin
new file mode 100644
index 00000000..ef215643
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.sci
new file mode 100755
index 00000000..6928d928
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawparadata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Out=Phsrawparadata(Fdata)
+ Out=Facesdata(Fdata,'rawpara')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.bin
new file mode 100644
index 00000000..b571d4dd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.sci
new file mode 100755
index 00000000..21677841
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Phsrawpersdata.sci
@@ -0,0 +1,7 @@
+// 08.08.22
+// 09.10.27
+
+function Phsrawpersdata(Fdata)
+ Out=Facesdata(Fdata,'rawpers')
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.bin
new file mode 100644
index 00000000..fb253985
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.sci
new file mode 100755
index 00000000..fc548f28
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Plotdata.sci
@@ -0,0 +1,138 @@
+//
+// 08.06.18 (N)
+// 08.08.24
+// 08.10.05
+// 08.12.18
+// 09.03.12
+// 09.12.31 (gsort)
+// 13.10.19 (__ added to variables)
+// 14.10.24 N,D,E => N__ ,...
+// 14.12.11 Assign used, and debugged (Exfun )
+// 15.11.16 N changed to number of intervals
+// 16.12.13 in case of X1=X2
+
+function P__=Plotdata(varargin)
+ global XMIN XMAX YMIN YMAX
+ Eps__=10^(-5);
+ Fnstr__=varargin(1); Is__=2;
+ if type(Fnstr__)==13
+ Fnflg__=1;
+ Fnarg__=varargin(Is__);
+ if type(Fnarg__)==13
+ Fnflg__=Fnflg__+1;
+ Is__=Is__+1;
+ end;
+ else
+ Fnflg__=0;
+ end;
+ Rgstr__=varargin(Is__); Is__=Is__+1;
+ K__=mtlb_findstr(Rgstr__,'=');
+ if length(K__)>0
+ Tmp__=strsplit(Rgstr__,[K__-1,K__]);
+ Vname__=Tmp__(1,1);
+ Rng__=evstr(Tmp__(3,1));
+ else
+ Vname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end;
+ N__=50; // Numpoints
+ E__=[]; // Exclusions
+ Exfun__=''; // Exclusion function
+ D__=%inf; // Discont
+ for I__=Is__:length(varargin)
+ Tmp__=varargin(I__);
+ Lhs__=part(Tmp__,1);
+ K__=mtlb_findstr(Tmp__,'=');
+ Tmp1__=part(Tmp__,K__+1:length(Tmp__));
+ if mtlb_findstr(Tmp__,Vname__)==[]
+ Str__=Lhs__+'__='+Tmp1__;
+ execstr(Str__);
+ else
+ Exfun__=Tmp1__;
+ end;
+ end;
+ X1__=Rng__(1); X2__=Rng__(2);
+// dx__=(X2__-X1__)/(N__-1);
+ dx__=(X2__-X1__)/(N__); // 15.11.16
+ if Fnflg__==0
+ Str__=Assign(Fnstr__,Vname__,'x__');
+ end;
+ if abs(dx__)<Eps__ then // 16.12.13
+ x__=X1__;
+ P__=[X1__,evstr(Str__)];
+ return;
+ end;
+ Exfun__=Assign(Exfun__,Vname__,'x__');
+ if length(Exfun__)>0 then // 14.12.11
+ Tmp__=mtlb_findstr(Exfun__,"x__");
+ if length(Tmp__)==0 then
+ E__=evstr(Exfun__);
+ Exfun__="";
+ end
+ end
+ P__=[];
+ E__=gsort(E__);
+ E__=E__(length(E__):-1:1);
+ E__=[E__,%inf];
+ Tmp__=gsort(E__);
+ E__=Tmp__(length(Tmp__):-1:1);
+ Ke__=1;
+ for x__=X1__:dx__:X2__
+ if Exfun__~=''
+ Tmp__=evstr(Exfun__);
+ if abs(Tmp__)<Eps__
+ P__=[P__;%inf,%inf];
+ continue;
+ end;
+ end;
+ Pa__=[];
+ if x__-E__(Ke__)<-Eps__
+ if Fnflg__==0
+ Pa__=[x__,evstr(Str__)];
+ else
+ if Fnflg__==1
+ Pa__=[x__,Fnstr__(x__)];
+ else
+ Pa__=[x__,Fnstr__(Fnarg__,x__)];
+ end;
+ end;
+ end;
+ if abs(x__-E__(Ke__))<=Eps__
+ if P__~=[] & P__(size(P__,1),:)~=[%inf,%inf]
+ Pa__=[%inf,%inf];
+ end
+ end
+ if x__-E__(Ke__)>Eps__
+ if Fnflg__==0
+ Pa__=[x__,evstr(Str__)];
+ else
+ if Fnflg__==1
+ Pa__=[x__,Fnstr(x__)];
+ else
+ Pa__=[x__,Fnstr__(Fnarg__,x__)];
+ end;
+ end;
+ Ke__=Ke__+1;
+ end
+ if Pa__~=[]
+ if Pa__(1)==%inf
+ P__=[P__;Pa__]
+ elseif P__==[]
+ P__=[Pa__];
+ else
+ Tmp__=P__(size(P__,1),:);
+ if Tmp__(1)==%inf
+ P__=[P__;Pa__];
+ elseif norm(Tmp__-Pa__)<D__
+ P__=[P__;Pa__];
+ else
+ P__=[P__;%inf,%inf;Pa__];
+ end
+ end
+ end
+ end;
+ Tmp__=size(P__,1);
+ if P__(Tmp__,1)==%inf
+ P__=P__(1:Tmp__-1,:);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.bin
new file mode 100644
index 00000000..1a7c1121
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.sci
new file mode 100755
index 00000000..35e2347e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointdata.sci
@@ -0,0 +1,25 @@
+//
+// 08.05.23
+// 09.09.18
+// 13.05.03 list of points is outputted
+
+function PL=Pointdata(varargin)
+ Nargs=length(varargin);
+ PL=list();
+ for I=1:Nargs
+ DL=varargin(I);
+ DL=Flattenlist(DL);
+ for K=1:length(DL);
+ Dt=DL(K);
+ for J=1:size(Dt,1)
+ Tmp=Dt(J,:);
+ if Tmp(1)~=%inf then
+ PL($+1)=Tmp;
+ end
+ end
+ end;
+ end;
+ if length(PL)==1
+ PL=PL(1);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.bin
new file mode 100644
index 00000000..181d1354
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.sci
new file mode 100755
index 00000000..fd2a35d0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PointonCurve.sci
@@ -0,0 +1,15 @@
+// 08.05.30
+
+function Out=PointonCurve(T,PtL)
+ Eps=10^(-4);
+ N=Trunc(T+Eps);
+ S=max(T-N,0);
+// PtL=Plt;
+ if N==size(PtL,1)
+ Out=PtL(N,:);
+ else
+ Pa=PtL(N,:);;
+ Pb=PtL(N+1,:);
+ Out=(1-S)*Pa+S*Pb;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.bin
new file mode 100644
index 00000000..16b3b587
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.sci
new file mode 100755
index 00000000..c39cdadc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Pointoncrv.sci
@@ -0,0 +1,21 @@
+// 09.10.03
+
+function Out=Pointoncrv(varargin)
+ Eps=10^(-4);
+ T=varargin(1);
+ Gdata=varargin(2);
+ if size(T,1)>1
+ Tmp=T; T=Gdata; Gdata=Tmp;
+ end;
+ PtL=Gdata;
+ N=Trunc(T+Eps);
+ S=max(T-N,0);
+ if N==size(PtL,1)
+ Out=PtL(N,:);
+ else
+ Pa=PtL(N,:);;
+ Pb=PtL(N+1,:);
+ Out=(1-S)*Pa+S*Pb;
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.bin
new file mode 100644
index 00000000..337e76a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.sci
new file mode 100755
index 00000000..b23dfdc8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Powersum.sci
@@ -0,0 +1,17 @@
+// 09.03.12
+
+function Out=Powersum(varargin)
+ Nargs=length(varargin);
+ COEFF=varargin(1);
+ x=varargin(2);
+ if Nargs>2
+ x=x-varargin(3);
+ end;
+ NL=Mixop(1,COEFF);
+ A=Mixop(2,COEFF);
+ Upto=min(size(NL,2),size(A,2));
+ NL=NL(1:Upto);
+ A=A(1:Upto);
+ Out=sum(A.*x^NL);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.bin
new file mode 100644
index 00000000..8a75cbf0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.sci
new file mode 100755
index 00000000..bc866928
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Prime.sci
@@ -0,0 +1,10 @@
+// 09.08.23
+
+function Out=Prime(varargin)
+ if length(varargin)==0
+ Out=char(39);
+ else
+ Out=varargin(1)+char(39);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.bin
new file mode 100644
index 00000000..a4c6dba6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.sci
new file mode 100644
index 00000000..bf137751
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Printobjstr.sci
@@ -0,0 +1,10 @@
+// s : 2014.06.22
+
+function Printobjstr(Str)
+ global Wfile FID;
+ if Wfile=='default' then
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.bin
new file mode 100644
index 00000000..5adfea2f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.sci
new file mode 100755
index 00000000..bbe28c12
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjCurve.sci
@@ -0,0 +1,32 @@
+// 08.07.11
+// 08.10.07
+// 09.06.02
+// 09.08.23
+
+function AnsL=ProjCurve(Curve)
+ global PHI THETA;
+ Eps=10^(-6);
+ AnsL=[]; // Added
+ SP=sin(PHI); CP=cos(PHI);
+ ST=sin(THETA); CT=cos(THETA);
+ for I=1:size(Curve,1)
+ P=Curve(I,:);
+ x=P(1); y=P(2); z=P(3);
+ if x~=%inf
+ Xz=-x*SP+y*CP;
+ Yz=-x*CP*CT-y*SP*CT+z*ST;
+ Tmp=[Xz,Yz];
+ if I==1
+ AnsL=[Tmp];
+ else
+ Tmp1=AnsL(size(AnsL,1),:);
+ if Tmp1(1)==%inf | norm(Tmp-Tmp1)>Eps
+ AnsL=[AnsL;Tmp];
+ end;
+ end;
+ else
+ AnsL=[AnsL;%inf,%inf];
+ end;
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.bin
new file mode 100644
index 00000000..8b17d615
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.sci
new file mode 100755
index 00000000..74c552a6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ProjcoordCurve.sci
@@ -0,0 +1,18 @@
+// 08.07.11
+// 08.10.16
+
+function Out=ProjcoordCurve(Curve)
+ global PHI THETA;
+ SP=sin(PHI); CP=cos(PHI);
+ ST=sin(THETA); CT=cos(THETA);
+ Out=[];
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ x=P(1); y=P(2); z=P(3);
+ Xz=-x*SP+y*CP;
+ Yz=-x*CP*CT-y*SP*CT+z*ST;
+ Zz=x*CP*ST+y*SP*ST+z*CT;
+ Out=[Out;Xz,Yz,Zz];
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.bin
new file mode 100644
index 00000000..0ce6a992
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.sci
new file mode 100755
index 00000000..82feeff2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpara.sci
@@ -0,0 +1,41 @@
+// 08.07.11
+// 08.07.15
+// 08.08.12
+// 08.10.28
+
+function CL=Projpara(varargin)
+ Nargs=length(varargin);
+ Flg=0;
+ if Nargs==1 & Mixtype(varargin(1))==1
+ Flg=1;
+ end;
+ CL=[];
+ for N=1:Nargs
+ Crv=varargin(N);
+ if Mixtype(Crv)==1
+ Tmp=ProjCurve(Crv);
+ CL=Mixadd(CL,Tmp);
+ else
+ if Mixtype(Crv)==3
+ ObjL=[];
+ for I=1:Mixlength(Crv)
+ Tmp1=Mixop(I,Crv);
+ if Mixtype(Tmp1)==1
+ ObjL=Mixadd(ObjL,Tmp1);
+ else
+ ObjL=Mixjoin(ObjL,Tmp1);
+ end;
+ end;
+ Crv=ObjL;
+ end;
+ for J=1:Mixlength(Crv)
+ Tmp=ProjCurve(Mixop(J,Crv));
+ CL=Mixadd(CL,Tmp);
+ end
+ end
+ end
+ if Mixlength(CL)==1 & Flg==1
+ CL=Mixop(1,CL);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.bin
new file mode 100644
index 00000000..7594630e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.sci
new file mode 100755
index 00000000..b43451a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Projpers.sci
@@ -0,0 +1,39 @@
+// 08.08.12
+// 08.10.28
+
+function CL=Projpers(varargin)
+ Nargs=length(varargin);
+ Flg=0;
+ if Nargs==1 & Mixtype(varargin(1))==1
+ Flg=1;
+ end;
+ CL=[];
+ for N=1:Nargs
+ Crv=varargin(N);
+ if Mixtype(Crv)==1
+ Tmp=CameraCurve(Crv);
+ CL=Mixadd(CL,Tmp);
+ else
+ if Mixtype(Crv)==3
+ ObjL=[];
+ for I=1:Mixlength(Crv)
+ Tmp1=Mixop(I,Crv);
+ if Mixtype(Tmp1)==1
+ ObjL=Mixadd(ObjL,Tmp1);
+ else
+ ObjL=Mixjoin(ObjL,Tmp1);
+ end;
+ end;
+ Crv=ObjL;
+ end;
+ for J=1:Mixlength(Crv)
+ Tmp=CameraCurve(Mixop(J,Crv));
+ CL=Mixadd(CL,Tmp);
+ end
+ end
+ end
+ if Mixlength(CL)==1 & Flg==1
+ CL=Mixop(1,CL);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.bin
new file mode 100644
index 00000000..b042e991
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.sci
new file mode 100755
index 00000000..78776d7b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptcrv.sci
@@ -0,0 +1,4 @@
+function P=Ptcrv(N,Fig)
+ P=Fig(N,:)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.bin
new file mode 100644
index 00000000..51257705
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.sci
new file mode 100755
index 00000000..d16ebf80
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptend.sci
@@ -0,0 +1,4 @@
+function P=Ptend(Fig)
+ P=Fig(size(Fig,1),:)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.bin
new file mode 100644
index 00000000..b86773c2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.sci
new file mode 100755
index 00000000..98f2ca94
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PthiddenQ.sci
@@ -0,0 +1,250 @@
+// 08.10.10
+// 08.10.12
+// 08.10.15
+// 08.10.26
+// 09.06.05
+// 09.09.10
+// 09.10.12 debug
+// 09.11.07 debugged
+// 10.02.16 Eps__
+// 13.10.22 ( __ added to variables )
+
+function Out__=PthiddenQ(PtA__,Vec__,Fd__,Uveq__,Np__,EPS__)
+// Out__=1 : hidden
+// SL__ : List of segments near PtA__+Vec__
+ Eps__0=10^(-4)*(Xmax()-Xmin())/10;
+ Eps__=EPS__(1)*(Xmax()-Xmin())/10; //
+ Out__=0;
+ Vec__1=1/norm(Vec__)*Vec__;
+ PtL__=[];
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Mixop(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ FdL__=Fullformfunc(Fd__);
+ Xf__=Mixop(2,FdL__);
+ Yf__=Mixop(3,FdL__);
+ Zf__=Mixop(4,FdL__);
+ Tmp__=Mixop(5,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); UMax__=Urg__(2);
+ Vmin__=Vrg__(1); VMax__=Vrg__(2);
+ V1__='('+string(Vec__(1))+')';
+ V2__='('+string(Vec__(2))+')';
+ V3__='('+string(Vec__(3))+')';
+ Xstr__='(('+Xf__+')-('+string(PtA__(1))+'))';
+ Ystr__='(('+Yf__+')-('+string(PtA__(2))+'))';
+ Zstr__='(('+Zf__+')-('+string(PtA__(3))+'))';
+ Urg__str=Mixop(5,FdL__);
+ Vrg__str=Mixop(6,FdL__);
+ if abs(Vec__(2))>Eps__0 | abs(Vec__(1))>Eps__0
+ Eq__=V2__+'*'+Xstr__+'-'+V1__+'*'+Ystr__;
+ else
+ Eq__=Xstr__;
+ end;
+ MS__=Mix(Eq__,Urg__str,Vrg__str,Np__);
+ [Zval__,Xval__,Yval__]=Makevaltable(MS__);
+ SL__=[];
+ for J__=1:length(Yval__)-1
+ for I__=1:length(Xval__)-1
+ a1__=Xval__(I__);b1__=Yval__(J__);c1__=Zval__(J__,I__);
+ a2__=Xval__(I__+1);b2__=Yval__(J__);c2__=Zval__(J__,I__+1);
+ a3__=Xval__(I__+1);b3__=Yval__(J__+1);c3__=Zval__(J__+1,I__+1);
+ a4__=Xval__(I__);b4__=Yval__(J__+1);c4__=Zval__(J__+1,I__);
+ PL__=[a1__,b1__;a2__,b2__;a3__,b3__;a4__,b4__;a1__,b1__];
+ VL__=[c1__,c2__,c3__,c4__,c1__];
+ QL__=[];
+ for K__=1:4
+ P1__=PL__(K__,:); P2__=PL__(K__+1,:);
+ M1__=VL__(K__); M2__=VL__(K__+1);
+ if M1__>=Eps__0 & M2__>=Eps__0
+ continue;
+ end;
+ if M1__<=-Eps__0 & M2__<=-Eps__0
+ continue;
+ end;
+ if abs(M1__)<Eps__0
+ Tmp__=P1__;
+ elseif abs(M2__)<Eps__0
+ continue;
+ else
+ Tmp__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ end;
+ QL__=[QL__;Tmp__];
+ end;
+ if size(QL__,1)==2
+ Puv1__=QL__(1,:); Puv2=QL__(2,:);
+ Tmp__1=Puv1__(1);
+ Tmp__2=Puv1__(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P1__=[Xv__,Yv__,Zv__];
+ Tmp__1=Puv2(1);
+ Tmp__2=Puv2(2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ P2__=[Xv__,Yv__,Zv__];
+ if norm(P1__-P2__)<Eps__0 // 09.11.07
+ continue;
+ end; //
+ Tmp__1=norm(P1__-PtA__);
+ Tmp__2=Naiseki(P1__-PtA__,Vec__1);
+ Tmp__3=sqrt(abs(Tmp__1^2-Tmp__2^2));
+ Tmp__4=norm(P2__-PtA__);
+ Tmp__5=Naiseki(P2__-PtA__,Vec__1);
+ Tmp__6=sqrt(abs(Tmp__4^2-Tmp__5^2));
+ if Tmp__2<Tmp__5
+ Tmp__=P1__; P1__=P2__; P2__=Tmp__;
+ Tmp__=Tmp__2; Tmp__2=Tmp__5; Tmp__5=Tmp__;
+ Tmp__=Tmp__3; Tmp__3=Tmp__6; Tmp__6=Tmp__;
+ end;
+ if Tmp__3<EPS__(2)*Eps__ & Tmp__6<EPS__(2)*Eps__ //
+ if Tmp__2>-Eps__0
+ if Tmp__5<-Eps__0
+ SL__=[SL__;P1__,P2__,-1];
+ else
+ SL__=[SL__;P1__,P2__,1];
+ end;
+ end;
+ end;
+ V1__=Vec__1(1); V2__=Vec__1(2); V3__=Vec__1(3);
+ if abs(V1__)>Eps__0
+ M1__=PtA__(3)+V3__/V1__*(P1__(1)-PtA__(1))-P1__(3);
+ M2__=PtA__(3)+V3__/V1__*(P2__(1)-PtA__(1))-P2__(3);
+ elseif abs(V2__)>Eps__0
+ M1__=PtA__(3)+V3__/V2__*(P1__(2)-PtA__(2))-P1__(3);
+ M2__=PtA__(3)+V3__/V2__*(P2__(2)-PtA__(2))-P2__(3);
+ else
+ M1__=PtA__(2)-P1__(2);
+ M2__=PtA__(2)-P2__(2);
+ end;
+ if M1__*M2__>=0
+ if (M1__>Eps__0 & M2__>Eps__0) | (M1__<-Eps__0 & M2__<-Eps__0)
+ continue;
+ end;
+ if abs(M1__)<=Eps__0
+ Pt__=P1__; Ptuv__=Puv1__;
+ else
+ Pt__=P2__; Ptuv__=Puv2;
+ end;
+ else
+ Pt__=1/(M1__-M2__)*(-M2__*P1__+M1__*P2__);
+ Ptuv__=1/(M1__-M2__)*(-M2__*Puv1__+M1__*Puv2);
+ end;
+ if type(Uveq__)==10
+ Tmp__1='('+string(Ptuv__(1))+')';
+ Tmp__2='('+string(Ptuv__(2))+')';
+ Tmp__=strsubst(Uveq__,Uname__,Tmp__1);
+ Tmp__=strsubst(Tmp__,Vname__,Tmp__2);
+ Tmp__=evstr(Tmp__);
+ if Tmp__<-Eps__0
+ continue;
+ end;
+ end;
+ Tmp__1=Dotprod(Pt__-PtA__,Vec__1);
+ Tmp__2=abs(Tmp__1);
+ Tmp__3=Dotprod(P1__-P2__,Vec__1);
+ Tmp__4=norm(P1__-P2__);
+ Tmp__6=Tmp__3/Tmp__4;
+ if Tmp__1>Eps__0
+ if abs(Tmp__6)>0.75 // from
+ PtL__=[PtL__;Pt__,P2__];
+ continue;
+ end; // upto
+ if Tmp__2>Eps__
+ Out__=1;
+ return
+ end;
+ if Tmp__2<2*Eps__
+ continue;
+ end;
+ end;
+ end;
+ end;
+ end;
+ if PtL__==[]
+ return;
+ end;
+ for I__=1:size(SL__,1)
+ P2__=SL__(I__,4:6);
+ Flg__=0;
+ for J__=1:size(SL__,1)
+ P=SL__(J__,1:3);
+ if norm(P-P2__)<Eps__0
+ SL__(I__,7)=J__;
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0 & SL__(I__,7)>0
+ SL__(I__,7)=-2;
+ end;
+ end;
+ for I__=1:size(PtL__,1)
+ P__=PtL__(I__,4:6);
+ Flg__=0;
+ for J__=1:size(SL__,1)
+ P1__=SL__(J__,1:3);
+ if norm(P1__-P__)<Eps__0
+ Flg__=1;
+ break;
+ end;
+ end;
+ if Flg__==0
+ Pt__=PtL__(I__,1:3); // from
+ Tmp__0=norm(P__-Pt__);
+ Tmp__1=abs(Dotprod(P__-Pt__,Vec__1));
+ Tmp__2=sqrt(abs(Tmp__0^2-Tmp__1^2));
+ Tmp__3=Tmp__2*norm(Pt__-PtA__)/Tmp__0; // should to be changed 10.02.16
+ if Tmp__3>Eps__/5
+ Out__=1;
+ return;
+ else
+ continue;
+ end; // upto
+ end;
+ Nxt__=SL__(J__,7);
+ while Nxt__>0
+ P__=SL__(Nxt__,4:6);
+ Nxt__=SL__(Nxt__,7);
+ end;
+ if Nxt__==-2
+ Out__=1;
+ return;
+ else
+ Out__=0;
+ end;
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.bin
new file mode 100644
index 00000000..97796c60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.sci
new file mode 100755
index 00000000..f6452897
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptne.sci
@@ -0,0 +1,14 @@
+//
+// 10.01.13
+
+function Out=Ptne(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMAX,YMAX];
+ else
+ G=varargin(1);
+ XM=max(G(:,1));
+ YM=max(G(:,2));
+ Out=[XM,YM];
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.bin
new file mode 100644
index 00000000..1d290957
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.sci
new file mode 100755
index 00000000..e3cd5ebc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptnw.sci
@@ -0,0 +1,14 @@
+//
+// 10.01.13
+
+function Out=Ptnw(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMIN,YMAX];
+ else
+ G=varargin(1);
+ Xm=min(G(:,1));
+ YM=max(G(:,2));
+ Out=[Xm,YM];
+ end;
+ endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.bin
new file mode 100644
index 00000000..09489c68
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.sci
new file mode 100755
index 00000000..fe5e52b9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptse.sci
@@ -0,0 +1,14 @@
+//
+// 10.01.13
+
+function Out=Ptse(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMAX,YMIN];
+ else
+ G=varargin(1);
+ XM=max(G(:,1));
+ Ym=min(G(:,2));
+ Out=[XM,Ym];
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.bin
new file mode 100644
index 00000000..c662aeb8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.sci
new file mode 100755
index 00000000..f94437cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptstart.sci
@@ -0,0 +1,4 @@
+function P=Ptstart(Fig)
+ P=Fig(1,:)
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.bin
new file mode 100644
index 00000000..3cd0fa20
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.sci
new file mode 100755
index 00000000..5b0a3474
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ptsw.sci
@@ -0,0 +1,13 @@
+// 10.01.13
+
+function Out=Ptsw(varargin)
+ global XMIN XMAX YMIN YMAX
+ if length(varargin)==0
+ Out=[XMIN,YMIN];
+ else
+ G=varargin(1);
+ Xm=min(G(:,1));
+ Ym=min(G(:,2));
+ Out=[Xm,Ym];
+ end;
+endfunction \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.bin
new file mode 100644
index 00000000..d31053f9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.sci
new file mode 100755
index 00000000..e0020f0b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcell.sci
@@ -0,0 +1,72 @@
+// 09.11.26
+// 09.12.06
+// 09.12.25
+// 09.12.29
+
+function Putcell(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ Str=varargin(Nargs);
+ if type(Str)==1
+ Str=string(Str);
+ end;
+ Pos=varargin(Nargs-1);
+ Nrg=varargin(2);
+ if type(Nrg)==10
+ if Nargs==4
+ Cell=Findcell(TbL,Nrg);
+ else
+ Mrg=varargin(3);
+ Cell=Findcell(TbL,Nrg,Mrg);
+ end;
+ else
+ Mrg=varargin(3);
+ Cell=Findcell(TbL,Nrg,Mrg);
+ end;
+ Pt=Cell(1); Dr='c';
+ Posh=part(Pos,1);
+ Post=part(Pos,2:length(Pos));
+ if (Posh=='r')|(Posh=='R')
+ Pt=Pt+[Cell(2),0];
+ if length(Post)==0
+ Dr='w1';
+ else
+ Dr='w'+Post;
+ end;
+ end;
+ if (Posh=='l')|(Posh=='L')
+ Pt=Pt-[Cell(2),0];
+ if length(Post)==0
+ Dr='e1';
+ else
+ Dr='e'+Post;
+ end;
+ end;
+ if (Posh=='u')|(Posh=='U')
+ Pt=Pt+[0,Cell(3)];
+ if length(Post)==0
+ Dr='s1';
+ else
+ Dr='s'+Post;
+ end;
+ end;
+ if (Posh=='d')|(Posh=='D')
+ Pt=Pt-[0,Cell(3)];
+ if length(Post)==0
+ Dr='n1';
+ else
+ Dr='n'+Post;
+ end;
+ end;
+ if (Posh=='b')|(Posh=='B')
+ Pt=Pt-[0,Cell(3)];
+ if length(Post)==0
+ Dr='n1';
+ else
+ Dr='n'+Post;
+ end;
+ Str='$\mathstrut$'+Str;
+ end;
+ Letter(Pt,Dr,Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.bin
new file mode 100644
index 00000000..f834f86d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.sci
new file mode 100755
index 00000000..63bc151f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putcirmark.sci
@@ -0,0 +1,18 @@
+// 09.11.26
+
+function Putcirmark(TbL,Nrg,Mrg,Dt)
+ if type(Dt)==10
+ N=1; Pos=Dt; Str='';
+ else
+ N=length(Dt); Pos='l'; Str='\hspace*{2mm}';
+ end;
+ for I=1:N
+ Tmp1=Dt(I);
+ Str=Str+'\cirmark';
+ if I<N
+ Str=Str+'\hspace{3mm}';
+ end;
+ end;
+ Putcell(TbL,Nrg,Mrg,Pos,Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.bin
new file mode 100644
index 00000000..1b37ca31
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.sci
new file mode 100755
index 00000000..41b9a1b6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoL.sci
@@ -0,0 +1,65 @@
+// 09.12.06
+// 10.01.26
+
+function PutcoL(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Ag=varargin(2);
+ if type(Ag)==1
+ CoL=Ag;
+ else
+ Alpha='-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ Clm=[];
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp-1];
+ end;
+ end;
+ Nrg=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg=Nrg+Tmp*26^Tmp1;
+ end;
+ CoL=Nrg;
+ end;
+ Nr=length(TbL(3))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Putcell(TbL,CoL,K,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str=Dt(N);
+ Rrng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Rrng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,CoL,Rrng,Pos,Str)
+ K=Rrng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.bin
new file mode 100644
index 00000000..7a5123d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.sci
new file mode 100644
index 00000000..0e2f9d0a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLexpr.sci
@@ -0,0 +1,65 @@
+// 10.04.01
+
+function PutcoLexpr(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Ag=varargin(2);
+ if type(Ag)==1
+ CoL=Ag;
+ else
+ Alpha='-ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+ Clm=[];
+ for I=1:length(Ag)
+ C=part(Ag,I:I);
+ Tmp=ascii(C);
+ if Tmp>=96
+ C=char(Tmp-32);
+ end;
+ Tmp=mtlb_findstr(C,Alpha)
+ if length(Tmp)>0
+ Clm=[Clm,Tmp-1];
+ end;
+ end;
+ Nrg=0;
+ for I=length(Clm):-1:1
+ Tmp=Clm(I);
+ Tmp1=length(Clm)-I;
+ Nrg=Nrg+Tmp*26^Tmp1;
+ end;
+ CoL=Nrg;
+ end;
+ Nr=length(TbL(3))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Dt='$'+Dt+'$';
+ Putcell(TbL,CoL,K,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str='$'+Dt(N)+'$';
+ Rrng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Rrng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,CoL,Rrng,Pos,Str)
+ K=Rrng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.bin
new file mode 100644
index 00000000..c4cecfc7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.sci
new file mode 100755
index 00000000..b993ffa9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/PutcoLstr.sci
@@ -0,0 +1,34 @@
+// 10.01.02 for v5
+
+function PutcoLstr(varargin)
+ Tb=varargin(1);
+ Nr=varargin(2);
+ Pos=varargin(3);
+ Str=varargin(4);
+ Sep='';
+ if length(varargin)>4
+ Sep=varargin(5);
+ end;
+ if Sep==''
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ Putcell(Tb,Nr,I,Pos,Tmp);
+ end;
+ else
+ Ltr='';
+ K=1;
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ if Tmp==Sep
+ Putcell(Tb,Nr,K,Pos,Ltr);
+ K=K+1;
+ Ltr='';
+ else
+ Ltr=Ltr+Tmp;
+ end;
+ end;
+ if Ltr~=''
+ Putcell(Tb,Nr,K,Pos,Ltr);
+ end;
+ end;
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.bin
new file mode 100644
index 00000000..5fc7bc24
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.sci
new file mode 100755
index 00000000..8d732a9d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putdashmark.sci
@@ -0,0 +1,18 @@
+// 09.11.26
+
+function Putdashmark(TbL,Nrg,Mrg,Dt)
+ N=length(Dt);
+ Str='\hspace*{2mm}';
+ for I=1:N
+ Tmp1=Dt(I);
+ if type(Tmp1)==1
+ Tmp1=string(Tmp1);
+ end;
+ Str=Str+'\dashmark{'+Tmp1+'}';
+ if I<N
+ Str=Str+'\hspace{3mm}';
+ end;
+ end;
+ Putcell(TbL,Nrg,Mrg,'l',Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.bin
new file mode 100644
index 00000000..1910dfd9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.sci
new file mode 100755
index 00000000..ce63e542
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrecmark.sci
@@ -0,0 +1,17 @@
+// 09.11.26
+
+function Putrecmark(TbL,Nrg,Mrg,Dt)
+ if type(Dt)==10
+ N=1; Pos=Dt; Str='';
+ else
+ N=length(Dt); Pos='l'; Str='\hspace*{2mm}';
+ end;
+ for I=1:N
+ Str=Str+'\recmark';
+ if I<N
+ Str=Str+'\hspace{3mm}';
+ end;
+ end;
+ Putcell(TbL,Nrg,Mrg,Pos,Str);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.bin
new file mode 100644
index 00000000..9085bc24
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.sci
new file mode 100755
index 00000000..0c2c209a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrow.sci
@@ -0,0 +1,41 @@
+// 09.12.06
+// 10.01.26
+
+function Putrow(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Row=varargin(2);
+ Nr=length(TbL(2))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Putcell(TbL,K,Row,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str=Dt(N);
+ Crng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Crng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,Crng,Row,Pos,Str)
+ K=Crng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.bin
new file mode 100644
index 00000000..83b428d4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.sci
new file mode 100644
index 00000000..0a3158cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowexpr.sci
@@ -0,0 +1,41 @@
+// 10.04.01
+
+function Putrowexpr(varargin)
+ Nargs=length(varargin);
+ TbL=varargin(1);
+ if type(TbL)~=15
+ disp('Tabledata missing')
+ return;
+ end;
+ Row=varargin(2);
+ Nr=length(TbL(2))+1;
+ K=1;
+ Dpos=varargin(3);
+ for I=4:Nargs
+ if I-3>Nr
+ break;
+ end;
+ Dt=varargin(I);
+ if type(Dt)~=15
+ Dt='$'+Dt+'$';
+ Putcell(TbL,K,Row,Dpos,Dt);
+ K=K+1;
+ else
+ N=length(Dt);
+ Str='$'+Dt(N)+'$';
+ Crng=[K,K+1];
+ Pos=Dpos;
+ for J=1:(N-1)
+ Tmp=Dt(J);
+ if type(Tmp)==1
+ Crng=[K,K+Tmp];
+ end;
+ if type(Tmp)==10
+ Pos=Tmp;
+ end;
+ end;
+ Putcell(TbL,Crng,Row,Pos,Str)
+ K=Crng(2);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.bin
new file mode 100644
index 00000000..02bd62fd
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.sci
new file mode 100755
index 00000000..d006f3ec
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Putrowstr.sci
@@ -0,0 +1,34 @@
+// 10.01.02 for v5
+
+function Putrowstr(varargin)
+ Tb=varargin(1);
+ Nr=varargin(2);
+ Pos=varargin(3);
+ Str=varargin(4);
+ Sep='';
+ if length(varargin)>4
+ Sep=varargin(5);
+ end;
+ if Sep==''
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ Putcell(Tb,I,Nr,Pos,Tmp);
+ end;
+ else
+ Ltr='';
+ K=1;
+ for I=1:length(Str)
+ Tmp=part(Str,I);
+ if Tmp==Sep
+ Putcell(Tb,K,Nr,Pos,Ltr);
+ K=K+1;
+ Ltr='';
+ else
+ Ltr=Ltr+Tmp;
+ end;
+ end;
+ if Ltr~=''
+ Putcell(Tb,K,Nr,Pos,Ltr);
+ end;
+ end;
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.bin
new file mode 100644
index 00000000..cfb497e7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.sci
new file mode 100755
index 00000000..a4f1ad89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Puttrace.sci
@@ -0,0 +1,7 @@
+// 09.09.10
+
+function Puttrace(Dt);
+ global TRACEDATA;
+ TRACEDATA=Dt;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.bin
new file mode 100644
index 00000000..116083a4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.sci
new file mode 100644
index 00000000..839452f6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ratiocmyk.sci
@@ -0,0 +1,87 @@
+// 11.05.28
+// 15.05.03
+
+function R=Ratiocmyk(Color)
+ if type(Color)==1 then
+ R=Color;
+ return;
+ end;
+ Tmp=grep(Color,',');
+ if length(Tmp)>0
+ R=evstr(Tmp);
+ return;
+ end;
+ select Color
+ case 'greenyellow' then R=[0.15,0,0.69,0],
+ case 'yellow' then R=[0,0,1,0],
+ case 'goldenrod' then R=[0,0.1,0.84,0],
+ case 'dandelion' then R=[0,0.29,0.84,0],
+ case 'apricot' then R=[0,0.32,0.52,0],
+ case 'peach' then R=[0,0.5,0.7,0],
+ case 'melon' then R=[0,0.46,0.5,0],
+ case 'yelloworange' then R=[0,0.42,1,0],
+ case 'orange' then R=[0,0.61,0.87,0],
+ case 'burntorange' then R=[0,0.51,1,0],
+ case 'bittersweet' then R=[0,0.75,1,0.24],
+ case 'redorange' then R=[0,0.77,0.87,0],
+ case 'mahogany' then R=[0,0.85,0.87,0.35],
+ case 'maroon' then R=[0,0.87,0.68,0.32],
+ case 'brickred' then R=[0,0.89,0.94,0.28],
+ case 'red' then R=[0,1,1,0],
+ case 'orangered' then R=[0,1,0.5,0],
+ case 'rubinered' then R=[0,1,0.13,0],
+ case 'wildstrawberry' then R=[0,0.96,0.39,0],
+ case 'salmon' then R=[0,0.53,0.38,0],
+ case 'carnationpink' then R=[0,0.63,0,0],
+ case 'magenta' then R=[0,1,0,0],
+ case 'violetred' then R=[0,0.81,0,0],
+ case 'rhodamine' then R=[0,0.82,0,0],
+ case 'mulberry' then R=[0.34,0.9,0,0.02],
+ case 'redviolet' then R=[0.07,0.9,0,0.34],
+ case 'fuchsia' then R=[0.47,0.91,0,0.08],
+ case 'lavender' then R=[0,0.48,0,0],
+ case 'thistle' then R=[0.12,0.59,0,0],
+ case 'orchid' then R=[0.32,0.64,0,0],
+ case 'darkorchid' then R=[0.4,0.8,0.2,0],
+ case 'purple' then R=[0.45,0.86,0,0],
+ case 'plum' then R=[0.5,1,0,0],
+ case 'violet' then R=[0.79,0.88,0,0],
+ case 'royalpurple' then R=[0.75,0.9,0,0],
+ case 'blueviolet' then R=[0.86,0.91,0,0.04],
+ case 'periwinkle' then R=[0.57,0.55,0,0],
+ case 'cadetblue' then R=[0.62,0.57,0.23,0],
+ case 'cornflowerblue' then R=[0.65,0.13,0,0],
+ case 'midnightblue' then R=[0.98,0.13,0,0.43],
+ case 'navyblue' then R=[0.94,0.54,0,0],
+ case 'royalblue' then R=[1,0.5,0,0],
+ case 'blue' then R=[1,1,0,0],
+ case 'cerulean' then R=[0.94,0.11,0,0],
+ case 'cyan' then R=[1,0,0,0],
+ case 'processblue' then R=[0.96,0,0,0],
+ case 'skyblue' then R=[0.62,0,0.12,0],
+ case 'turquoise' then R=[0.85,0,0.2,0],
+ case 'tealblue' then R=[0.86,0,0.34,0.02],
+ case 'aquamarine' then R=[0.82,0,0.3,0],
+ case 'bluegreen' then R=[0.85,0,0.33,0],
+ case 'emerald' then R=[1,0,0.5,0],
+ case 'junglegreen' then R=[0.99,0,0.52,0],
+ case 'seagreen' then R=[0.69,0,0.5,0],
+ case 'green' then R=[1,0,1,0],
+ case 'forestgreen' then R=[0.91,0,0.88,0.12],
+ case 'pinegreen' then R=[0.92,0,0.59,0.25],
+ case 'limegreen' then R=[0.5,0,1,0],
+ case 'yellowgreen' then R=[0.44,0,0.74,0],
+ case 'springgreen' then R=[0.26,0,0.76,0],
+ case 'olivegreen' then R=[0.64,0,0.95,0.4],
+ case 'rawsienna' then R=[0,0.72,1,0.45],
+ case 'sepia' then R=[0,0.83,1,0.7],
+ case 'brown' then R=[0,0.81,1,0.6],
+ case 'tan' then R=[0.14,0.42,0.56,0],
+ case 'gray' then R=[0,0,0,0.5],
+ case 'black' then R=[0,0,0,1],
+ case 'white' then R=[0,0,0,0],
+ else
+ disp(Color+' may be user-defined');
+ R=Color; // 15.05.03
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.bin
new file mode 100644
index 00000000..22d88c39
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.sci
new file mode 100644
index 00000000..c1656b15
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadOutData.sci
@@ -0,0 +1,92 @@
+// 14.10.10
+// 14.12.14 for 3d
+// 15.01.03 changed ("start","end")
+// 15.10.24 in case of list-length==1
+
+function Out=ReadOutData(varargin)
+ global Fnameout
+ if length(varargin)==0 then
+ Fname=Rnameout;
+ else
+ Fname=varargin(1);
+ end
+ Fid=mopen(Fname,"rb");
+ Gstr=[];
+ Str="";
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ while 1==1
+ if Tmp=="" then
+ break;
+ end;
+ C=ascii(Tmp);
+ if Tmp=="/"|C==13|C==10 then// / CR,LF
+ if Flg==1 then
+ if part(Str,1:5)=="start" then
+ Str="Tmp=[];";
+ else
+ if part(Str,1:3)=="end" then
+ if Flg3d==0 then // 2014.12.14
+ Str=Varname+"($+1)=Listplot(Tmp);";
+ else
+ Str=Varname+"($+1)=Spaceline(Tmp);";
+ end
+ else
+ if part(Str,1:2)=="[[" then
+ Str="Tmp=[Tmp,"+Str+"];";
+ else
+ Varname=Str;
+ Str=Varname+"=list();"
+ Flg3d=-1;
+ end;
+ end;
+ end;
+ if Flg3d==-1 then // 2014.12.14
+ Tmp1=mtlb_findstr(Str,"[[");
+ if length(Tmp1)>0 then
+ Tmp2=mtlb_findstr(Str,"]");
+ Tmp3=part(Str,Tmp1:Tmp2(1));
+ Tmp4=mtlb_findstr(Tmp3,",")
+ if length(Tmp4)==2 then
+ Flg3d=1;
+ else
+ Flg3d=0;
+ end
+ end
+ end
+ Gstr=[Gstr;Str];
+ Str="";
+ Flg=0;
+ end;
+ else
+ Str=Str+Tmp;
+ Flg=1;
+ end;
+ Tmp=mgetstr(1,Fid);
+ end;
+ mclose(Fid);
+ Out=[]; // 15.10.24 from
+ Var="";
+ Ctr=0;
+ for J=1:size(Gstr,1)
+ St=Gstr(J,1);
+ Out=[Out;St];
+ Tmp=strsplit(St,"=");
+ Tmp1=Tmp(1,1);
+ Tmp2=Tmp(2,1);
+ if grep(Tmp2,"list()") then
+ if Ctr==1 then
+ Out=[Out;Var+"="+Var+"(1)"];
+ end;
+ Var=Tmp1;
+ Ctr=0;
+ end;
+ if grep(Tmp1,"$") then
+ Ctr=Ctr+1;
+ end;
+ end
+ if Ctr==1 then
+ Out=[Out;Var+"="+Var+"(1)"];
+ end; // 15.10.24 upto
+ Out;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.bin
new file mode 100644
index 00000000..9f2e42ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.sci
new file mode 100644
index 00000000..eaf9f6df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ReadfromCindy.sci
@@ -0,0 +1,38 @@
+// s:2014,09.08
+// e:2014.09.26
+// e:2014.10.07 debugged, code changed
+// e:2014.10.08 CR | LF
+
+function Out=ReadfromCindy(Fname)
+ Fid=mopen(Fname,"rb");
+ Gline=list();
+ Gpt=list();
+ Gstr=[];
+ Str="";
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ while 1==1
+ if Tmp=="" then
+ if Flg==1 then
+ Gstr=[Gstr;Str];
+ Str="";
+ Flg=1;
+ end;
+ break;
+ end
+ C=ascii(Tmp);
+ if C==13|C==10 then// CR,LF
+ if Flg==1 then
+ Gstr=[Gstr;Str];
+ Str="";
+ Flg=0;
+ end;
+ else
+ Str=Str+Tmp;
+ Flg=1;
+ end;
+ Tmp=mgetstr(1,Fid);
+ end;
+ mclose(Fid);
+ Out=Gstr;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.bin
new file mode 100644
index 00000000..4a58106b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.sci
new file mode 100755
index 00000000..7109f789
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Readtextdata.sci
@@ -0,0 +1,160 @@
+// 08.05.22
+// 08.05.23
+// 08.05.26
+// 08.05.28
+// 10.04.25
+// 11.01.05
+// 13.10.06 format, debug
+// 14.01.20 debugged (Big data)
+
+function OutL=Readtextdata(varargin)
+ OutL=[];
+ Nargs=length(varargin);
+ Fname=varargin(1);
+ Suuji='0123456789.+-';
+ Sep='';
+ Hajime=[1,1];
+ N=%inf;
+ R=%inf;
+ D=-%inf; // 11.01.04
+ Fmt="%lf"; // 13.10.06
+ Flg=0;
+ for I=2:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ if Flg==0
+ Hajime=Tmp;
+ Flg=1
+ else
+ Owari=Tmp;
+ end
+ elseif mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ else
+ if part(Tmp,1)=="%" // 13.10.06
+ Fmt=Tmp
+ else
+ Sep=Tmp;
+ if Tmp=='s' Sep=' '; end
+ if Tmp==',' Sep=','; end
+ if Tmp=='t' Sep=char(9); end
+ end
+ end
+ end
+ Owari=Hajime+[N-1,R-1];
+ Fid=mopen(Fname,'rb');
+ SL=[];
+ S='';
+ Lsp=0;
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ while 1==1 // 2014.01.20
+ if Tmp=='' break; end
+ C=ascii(Tmp);
+ if C>=32 | C==9
+ if C==32
+ if Flg==1
+ Tmp='';
+ end
+ Flg=1
+ else
+ Flg=0;
+ end
+ S=S+Tmp;
+ Tmp=mgetstr(1,Fid);
+ else
+ SL=[SL;S];
+ S='';
+ Flg=1;
+ Tmp=mgetstr(1,Fid);
+ if Lsp==0
+ if C==10 // LF
+ Lsp=1;
+ elseif C==13
+ if ascii(Tmp)==10
+ Lsp=3; // CR LF
+ Tmp=mgetstr(1,Fid);
+ else
+ Lsp=2; // CR
+ end
+ else
+ break;
+ end
+ else
+ if C==10 | C==13
+ if Lsp==3
+ Tmp=mgetstr(1,Fid);
+ end
+ else
+ break
+ end
+ end
+ end
+ end
+ mclose(Fid);
+ if length(S)>0 then // 2013.10.06
+ SL=[SL;S]
+ end
+ for I=1:size(SL,1)
+ S=SL(I,1);
+ if S=='' continue; end
+ if mtlb_findstr(Suuji,Strop(1,S))~=[]
+ break
+ end
+ end
+ Hajime(1,1)=max(Hajime(1,1),I);
+ S=SL(Hajime(1),1);
+ if Sep==''
+ if length(mtlb_findstr(S,char(9)))~=0
+ Sep=char(9);
+ elseif length(mtlb_findstr(S,','))~=0
+ Sep=',';
+ else
+ Sep=' ';
+ end
+ end
+ Tmp=mtlb_findstr(S,Sep);
+ J=length(Tmp);
+ if Tmp(J)~=length(S)
+ J=J+1;
+ end
+ Owari(1,1)=min(size(SL,1),Owari(1));
+ Owari(1,2)=min(J,Owari(2));
+ S=SL(Owari(1),1);
+ while S==''
+ Owari(1,1)=Owari(1,1)-1;
+ S=SL(Owari(1),1);
+ end
+ OutL=[];
+ for J=Hajime(1):Owari(1)
+ S=SL(J,1);
+ if S==''
+ Tmp=%inf*ones(1,Owari(2)-Hajime(2)+1);
+ OutL=[OutL;Tmp];
+ continue
+ end
+ Tmp=Strop(1,S);
+ if mtlb_findstr(Suuji+Sep,Tmp)==[]
+ continue
+ end
+ SpL=[0,mtlb_findstr(S,Sep),length(S)+1];
+ Data=[];
+ for K=Hajime(2):Owari(2)
+ Tmp=Strop(SpL(K)+1:SpL(K+1)-1,S);
+ Tmp1=msscanf(Tmp,Fmt); // 13.10.06
+ Data=[Data,Tmp1];
+ end
+ OutL=[OutL;Data];
+ end;
+ if D~=-%inf // 11.01.04
+ Data=[];
+ for I=1:size(OutL,1)
+ Tmp=OutL(I,:);
+ if Tmp(1)<=D // 11.01.04
+ Tmp=[%inf,%inf];
+ end;
+ Data=[Data;Tmp];
+ end;
+ OutL=Data;
+ end; //
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.bin
new file mode 100644
index 00000000..d9cd1315
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci
new file mode 100755
index 00000000..837a5727
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Reflectdata.sci
@@ -0,0 +1,51 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Reflectdata(varargin)
+ Nargs=length(varargin)
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ if Nargs==1
+ PtA=[0,0];PtB=PtA;
+ else
+ Pts=varargin(2);
+ if length(Pts)==2
+ PtA=Pts; PtB=PtA;
+ else
+ PtA=Pts(1,1:2); PtB=Pts(1,3:4);
+ end
+ end
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ if PtA==PtB
+ X2=2*PtA(1)-X1;
+ Y2=2*PtA(2)-Y1;
+ else
+ U=PtB(1)-PtA(1);
+ V=PtB(2)-PtA(2);
+ A=PtA(1);
+ B=PtA(2);
+ X2=(U^2-V^2)/(U^2+V^2)*X1+2*U*V/(U^2+V^2)*Y1-2*V*(U*B-V*A)/(U^2+V^2);
+ Y2=2*U*V/(U^2+V^2)*X1-(U^2-V^2)/(U^2+V^2)*Y1+2*U*(U*B-V*A)/(U^2+V^2);
+ end
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.bin
new file mode 100644
index 00000000..66f6a956
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.sci
new file mode 100644
index 00000000..facea4d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rmmember.sci
@@ -0,0 +1,20 @@
+// 11.01.14 New
+
+function Out=Rmmember(L,Rm)
+ if type(L)==1
+ Out=[];
+ end;
+ if type(L)==15
+ Out=list();
+ end;
+ for J=1:length(L)
+ Tmp=L(J);
+ if ~Member(Tmp,Rm)
+ Out($+1)=Tmp;
+ end;
+ end;
+ if type(L)==1 & size(L,1)==1
+ Out=Out';
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.bin
new file mode 100644
index 00000000..e8683dd9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.sci
new file mode 100755
index 00000000..9082290d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3data.sci
@@ -0,0 +1,40 @@
+// 08.08.15
+// 14.03.23 debugged "center"
+// 15.04.12
+
+function Out=Rotate3data(varargin)
+// Eps=10^(-4);
+ Nargs=length(varargin);
+ Pd3=varargin(1);
+ Pd3=Flattenlist(Pd3); // 15.04.12
+ W1=varargin(2);
+ W2=varargin(3);
+ C=[0,0,0];
+ if Nargs>=4
+ C=varargin(4);
+ end;
+// if Mixtype(Pd3)==1 // 15.04.12 from
+// Pd3=MixS(Pd3);
+// elseif Mixtype(Pd3)==3
+// Tmp=[];
+// for I=1:Mixlength(Pd3)
+// Tmp=Mixjoin(Tmp,Mixop(I,Pd3));
+// end;
+// Pd3=Tmp;
+// end;
+ Out=[];
+ for I=1:length(Pd3)
+ PD=Op(I,Pd3);
+ Ans=[];
+ for J=1:size(PD,1)
+ P=PD(J,:);
+ Tmp=Rotate3pt(P,W1,W2,C); // 14.03.23
+ Ans=[Ans;Tmp];
+ end;
+ Out=Mixadd(Out,Ans);
+ end;
+ if length(Out)==1
+ Out=Op(1,Out);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.bin
new file mode 100644
index 00000000..bc806d95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.sci
new file mode 100755
index 00000000..910aa734
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotate3pt.sci
@@ -0,0 +1,75 @@
+// 08.08.15
+
+function Ans=Rotate3pt(varargin)
+ Eps=10^(-4);
+ Nargs=length(varargin);
+ P=varargin(1);
+ W1=varargin(2);
+ W2=varargin(3);
+ C=[0,0,0];
+ if Nargs>=4
+ C=varargin(4);
+ end;
+ if type(W2)==1 & length(W2)==1
+ Ct=cos(W2);
+ St=sin(W2);
+ V3=1/norm(W1)*W1;
+ if V3(1)==0
+ Tmp=[1,0,0];
+ else
+ Tmp=[0,1,0];
+ end;
+ W1=[Tmp(2)*V3(3)-Tmp(3)*V3(2),Tmp(3)*V3(1)-Tmp(1)*V3(3),Tmp(1)*V3(2)-Tmp(2)*V3(1)];
+ V1=1/norm(W1)*W1;
+ V2=[V3(2)*V1(3)-V3(3)*V1(2),V3(3)*V1(1)-V3(1)*V1(3),V3(1)*V1(2)-V3(2)*V1(1)];
+ else
+ Tmp=[W1(2)*W2(3)-W1(3)*W2(2),W1(3)*W2(1)-W1(1)*W2(3),W1(1)*W2(2)-W1(2)*W2(1)];
+ if norm(Tmp)<Eps
+ Ans=P;
+ return;
+ end;
+ V1=1/norm(W1)*W1;
+ Ns=V1(1)*W2(1)+V1(2)*W2(2)+V1(3)*W2(3);
+ Tmp=W2-Ns*V1;
+ V2=1/norm(Tmp)*Tmp;
+ Tmp=[V1(2)*V2(3)-V1(3)*V2(2),V1(3)*V2(1)-V1(1)*V2(3),V1(1)*V2(2)-V1(2)*V2(1)];
+ V3=1/norm(Tmp)*Tmp;
+ Ct=Ns/norm(W2);
+ St=sqrt(1-Ct^2);
+ end;
+ if norm(Tmp)<Eps
+ Ans=P;
+ return;
+ end;
+ V1x=V1(1); V1y=V1(2); V1z=V1(3);
+ V2x=V2(1); V2y=V2(2); V2z=V2(3);
+ V3x=V3(1); V3y=V3(2); V3z=V3(3);
+ if Mixtype(P)~=1
+ PtL=P;
+ else
+ PtL=MixS(P);
+ end;
+ Ans=[];
+ for N=1:Mixlength(PtL)
+ P=Mixop(N,PtL);
+ if P(1)==%inf
+ Ans=Mixadd(Ans,[%inf,%inf,%inf]);
+ continue;
+ end;
+ x=P(1)-C(1); y=P(2)-C(2); z=P(3)-C(3);
+ X=((V1x*Ct+V2x*St)*V1x+(-V1x*St+V2x*Ct)*V2x+V3x^2)*x;
+ X=X+((V1x*Ct+V2x*St)*V1y+(-V1x*St+V2x*Ct)*V2y+V3x*V3y)*y;
+ X=X+((V1x*Ct+V2x*St)*V1z+(-V1x*St+V2x*Ct)*V2z+V3x*V3z)*z;
+ Y=((V1y*Ct+V2y*St)*V1x+(-V1y*St+V2y*Ct)*V2x+V3x*V3y)*x;
+ Y=Y+((V1y*Ct+V2y*St)*V1y+(-V1y*St+V2y*Ct)*V2y+V3y^2)*y;
+ Y=Y+((V1y*Ct+V2y*St)*V1z+(-V1y*St+V2y*Ct)*V2z+V3y*V3z)*z;
+ Z=((V1z*Ct+V2z*St)*V1x+(-V1z*St+V2z*Ct)*V2x+V3x*V3z)*x;
+ Z=Z+((V1z*Ct+V2z*St)*V1y+(-V1z*St+V2z*Ct)*V2y+V3y*V3z)*y;
+ Z=Z+((V1z*Ct+V2z*St)*V1z+(-V1z*St+V2z*Ct)*V2z+V3z^2)*z;
+ Ans=Mixadd(Ans,C+[X,Y,Z]);
+ end;
+ if Mixlength(Ans)==1
+ Ans=Mixop(1,Ans);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.bin
new file mode 100644
index 00000000..fc876c55
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.sci
new file mode 100755
index 00000000..845cac17
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Rotatedata.sci
@@ -0,0 +1,39 @@
+// 08.05.23 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Rotatedata(varargin)
+ Nargs=length(varargin);
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ Theta=varargin(2);
+ if Nargs==2,
+ Pt=[0,0]
+ else
+ Pt=varargin(3);
+ end
+ Cx=Pt(1);Cy=Pt(2);
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ X2=Cx+(X1-Cx)*cos(Theta)-(Y1-Cy)*sin(Theta);
+ Y2=Cy+(X1-Cx)*sin(Theta)+(Y1-Cy)*cos(Theta);
+ end;
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.bin
new file mode 100644
index 00000000..f55e05bc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.sci
new file mode 100644
index 00000000..d14f3b3a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Roundstr.sci
@@ -0,0 +1,7 @@
+// 10.11.04
+
+function Out=Roundstr(X,Ni,Nf)
+ Na=Ni+1+Nf;
+ Fmt='%'+string(Na)+'.'+string(Nf)+'f';
+ Out=sprintf(Fmt,X);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.bin
new file mode 100644
index 00000000..025c430a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.sci
new file mode 100755
index 00000000..7e563f4b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Scaledata.sci
@@ -0,0 +1,39 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Scaledata(varargin)
+ Nargs=length(varargin);
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ A=varargin(2);
+ B=varargin(3);
+ if Nargs==3
+ Pt=[0,0];
+ else
+ Pt=varargin(4);
+ end
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ X2=Pt(1)+A*(X1-Pt(1));
+ Y2=Pt(2)+B*(Y1-Pt(2));
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.bin
new file mode 100644
index 00000000..60750005
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.sci
new file mode 100755
index 00000000..e918e475
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sectionview.sci
@@ -0,0 +1,14 @@
+// 09.09.10
+// 09.10.12 remove:Uveq, add:Glist
+
+function Out=Sectionview(PtA,Vec,Fd,Glist,Np,Eps)
+ Uv=1/norm(Vec)*Vec;
+ Nv=[Uv(2),-Uv(1),0];
+ G1=Sfcutdata(Fd,Mix(Nv,PtA),Np);
+ G2=Spaceline([PtA,PtA+10*Uv]);
+ Tmp=Mixjoin(G1,G2,Glist);
+ Tmp1=Viewfrom(Nv,Tmp);
+ Out=Tmp;
+endfunction;
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.bin
new file mode 100644
index 00000000..e70977ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.sci
new file mode 100755
index 00000000..2a4a3c95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setangle.sci
@@ -0,0 +1,17 @@
+// 08.07.11
+// 08.08.12
+// 09.02.27
+
+function Setangle(varargin)
+ global PHI THETA;
+ Nargs=length(varargin);
+ if Nargs<2
+ Mixdisp(Mix('theta=',THETA*180/%pi));
+ Mixdisp(Mix('phi=',PHI*180/%pi));
+ return;
+ else
+ PHI=varargin(2)*%pi/180;
+ THETA=varargin(1)*%pi/180;
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.bin
new file mode 100644
index 00000000..63725d0f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.sci
new file mode 100755
index 00000000..8f9d6053
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setarrow.sci
@@ -0,0 +1,35 @@
+// 08.05.31
+// 09.02.27
+
+function Setarrow(varargin)
+ global YaSize YaAngle YaPosition YaThick YaStyle;
+ Nargs=length(varargin);
+ if Nargs==0
+ Mixdisp(Mix('Size=',YaSize));
+ Mixdisp(Mix('Angle=',YaAngle));
+ Mixdisp(Mix('Position=',YaThick));
+ Mixdisp(Mix('Style=',YaStyle));
+ return;
+ end;
+ Flg=0;
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ Flg=Flg+1;
+ if Flg==1 YaSize=Tmp; end
+ if Flg==2
+ if Tmp<5
+ YaAngle=18*Tmp;
+ else
+ YaAngle=Tmp;
+ end
+ end
+ if Flg==3 YaPosition=Tmp; end
+ if Flg==4 YaThick=Tmp; end
+ end
+ if type(Tmp)==10
+ YaStyle=Tmp
+ end
+ end
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.bin
new file mode 100644
index 00000000..6a258c98
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.sci
new file mode 100755
index 00000000..5fab30e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setax.sci
@@ -0,0 +1,102 @@
+// 08.08.08
+// 09,02.27
+
+function Out=Setax(varargin)
+ global ZIKU XNAME XPOS YNAME YPOS ONAME OPOS ARROWSIZE;
+ Nargs=length(varargin);
+ if Nargs==0
+ if ZIKU=='line'
+ Tmp=','
+ else
+ Tmp='(Arrowsize='+string(ARROWSIZE)+'),'
+ end;
+ Str=...
+ ZIKU+Tmp+...
+ XNAME+','+XPOS+','+YNAME+','+...
+ YPOS+','+ONAME+','+OPOS;
+ Out=Str;
+ disp(Str);
+ return;
+ end;
+ ArgL=[];
+ Is=1;
+ Tmp=varargin(1);
+ if type(Tmp)==1 & length(Tmp)==1
+ Is=varargin(1);
+ ArgL=[];
+ for I=1:Is-1
+ ArgL=[ArgL,''];
+ end
+ for I=2:Nargs
+ ArgL=[ArgL,varargin(I)];
+ end
+ else
+ if Nargs==1
+ ArgL=[varargin(1)];
+ else
+ Tmp=varargin(2);
+ if type(Tmp)==1 & length(Tmp)==1
+ ARROWSIZE=Tmp;
+ ArgL=[varargin(1)];
+ for I=3:Nargs
+ ArgL=[ArgL,varargin(I)];
+ end;
+ else
+ ArgL=[];
+ for I=1:Nargs
+ ArgL=[ArgL,varargin(I)];
+ end;
+ end
+ end
+ end
+ for I=size(ArgL,2)+1:7
+ ArgL=[ArgL,''];
+ end
+ Zk=ArgL(1);
+ if Zk~=''
+ ZL=msscanf(Zk,'%c%f');
+ Zk=ZL(1);
+ if length(ZL)>1 // modified at 080807
+ ARROWSIZE=ZL(2);
+ end
+ end
+ Xn=ArgL(2); Xp=ArgL(3);
+ Yn=ArgL(4); Yp=ArgL(5);
+ Genn=ArgL(6); Genp=ArgL(7);
+ if Zk~=''
+ C=Zk;
+ if C=='a'
+ ZIKU='arrow';
+ else
+ ZIKU='line';
+ end
+ end
+ if Xn~=''
+ XNAME='$'+Xn+'$'
+ end
+ if Xp~=''
+ XPOS=Xp
+ end
+ if Yn~=''
+ YNAME='$'+Yn+'$'
+ end
+ if Yp~=''
+ YPOS=Yp
+ end
+ if Genn~=''
+ ONAME=Genn
+ end
+ if Genp~=''
+ OPOS=Genp
+ end
+ if ZIKU=='line'
+ Tmp=','
+ else
+ Tmp='(Arrowsize='+string(ARROWSIZE)+'),'
+ end;
+ Str=...
+ ZIKU+Tmp+...
+ XNAME+','+XPOS+','+YNAME+','+...
+ YPOS+','+ONAME+','+OPOS;
+ Out=Str;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.bin
new file mode 100644
index 00000000..cb6ec45d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.sci
new file mode 100644
index 00000000..51b8e0c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcolor.sci
@@ -0,0 +1,36 @@
+// 11.05.28
+// 11.08.24
+// 15.05.03
+
+function Setcolor(varargin)
+ global Wfile FID;
+ Nargs=length(varargin);
+ Color='black';
+ Kosa=1;
+ Color=varargin(1);
+ if length(varargin)>1
+ Kosa=varargin(2);
+ end;
+ Iro=Ratiocmyk(Color);
+ if type(Iro)==10
+ Str='\color{'+Iro+"}%";
+ else
+ if size(Iro,2)>3
+ Str='\color[cmyk]{';
+ else
+ Str='\color[rgb]{';
+ end;
+ for J=1:size(Iro,2)
+ Str=Str+string(Kosa*Iro(J));
+ if J<size(Iro,2)
+ Str=Str+',';
+ end;
+ end;
+ Str=Str+'}%';
+ end;
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.bin
new file mode 100644
index 00000000..7bcd0094
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.sci
new file mode 100755
index 00000000..4b8b932b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setcounter.sci
@@ -0,0 +1,13 @@
+// 09.09.10
+
+function Setcounter(varargin)
+ global GCOUNTER;
+ Nargs=length(varargin);
+ if Nargs==0
+ N=1;
+ else
+ N=varargin(1);
+ end;
+ GCOUNTER=N;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.bin
new file mode 100644
index 00000000..b8a538c3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.sci
new file mode 100755
index 00000000..ae713f4e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmark.sci
@@ -0,0 +1,43 @@
+// 09.11.26
+// 09.12.06
+
+function Setmark();
+ Xminnow=Xmin(); Xmaxnow=Xmax();
+ Yminnow=Ymin(); Ymaxnow=Ymax();
+ Setwindow([-1.5,1.5],[-2.3,2.3]);
+ F1=Framedata();
+ F2=Paramplot('[1.5*cos(t),2.3*sin(t)]','t=[0,2*%pi]','N=25');
+ Texcom('\def\recmark{');
+ Texcom('\begin{minipage}[c]{3mm}');
+ Beginpicture('1mm');
+ Shade(F1);
+ Drwline(F1);
+ Endpicture(0);
+ Texcom('');
+ Texcom('\end{minipage}');
+ Texcom('}');
+
+ Texcom('\def\cirmark{');
+ Texcom('\begin{minipage}[c]{3mm}');
+ Beginpicture('1mm');
+ Shade(F2);
+ Drwline(F2);
+ Endpicture(0);
+ Texcom('');
+ Texcom('\end{minipage}');
+ Texcom('}');
+
+ Texcom('\def\dashmark#1{');
+ Texcom('\begin{minipage}[c]{3mm}');
+ Beginpicture('1mm');
+ Setpen(0.5);
+ Dashline(F2,0.5,0.5);
+ Fontsize('ss');
+ Letter([0,0],'c','#1');
+ Endpicture(0);
+ Texcom('');
+ Texcom('\end{minipage}');
+ Texcom('}');
+ Setwindow([Xminnow,Xmaxnow],[Yminnow,Ymaxnow]);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.bin
new file mode 100644
index 00000000..6822b346
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.sci
new file mode 100755
index 00000000..a17c9e95
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setmarklen.sci
@@ -0,0 +1,17 @@
+//
+// 09.02.27
+// 14.03.05 MARKLEN
+
+function Setmarklen(varargin)
+ global MARKLEN MARKLENInit MARKLENNow;
+ Nargs=length(varargin);
+ if Nargs==0
+ Tmp=MARKLEN/MARKLENInit;
+ Tmp=round(Tmp*100)/100;
+ disp(Tmp);
+ return;
+ end;
+ Size=varargin(1);
+ MARKLEN=MARKLENInit*Size;
+ MARKLENNow=MARKLEN;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.bin
new file mode 100644
index 00000000..a8591c05
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.sci
new file mode 100644
index 00000000..2ee06cbb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjdecimals.sci
@@ -0,0 +1,8 @@
+// s : 2014.06.22
+
+function Setobjdecimals(n)
+ global OBJFMT;
+ s1=string(n);
+ s2=string(n+3);
+ OBJFMT="%"+s2+"."+s1+"f";
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.bin
new file mode 100644
index 00000000..71df5ec2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.sci
new file mode 100644
index 00000000..22f13c4d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setobjscale.sci
@@ -0,0 +1,6 @@
+// s : 2014.06.22
+
+function Setobjscale(scale)
+ global OBJSCALE;
+ OBJSCALE=scale;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.bin
new file mode 100644
index 00000000..91bbc8da
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.sci
new file mode 100755
index 00000000..62a1f624
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setorigin.sci
@@ -0,0 +1,14 @@
+//
+// 09.02.27
+
+function Setorigin(varargin)
+ global GENTEN;
+ Nargs=length(varargin);
+ if Nargs==0
+ disp(GENTEN);
+ return;
+ end;
+ Pt=varargin(1);
+ GENTEN=Pt;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.bin
new file mode 100644
index 00000000..d5934c6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.sci
new file mode 100755
index 00000000..500ef7f9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpen.sci
@@ -0,0 +1,11 @@
+function Setpen(Width)
+ global Wfile FID PenThick PenThickInit;
+ PenThick=round(PenThickInit*Width);
+ Str='\special{pn '+string(PenThick)+'}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.bin
new file mode 100644
index 00000000..c628c2f0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.sci
new file mode 100755
index 00000000..455551bb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpers.sci
@@ -0,0 +1,16 @@
+// 08.08.12
+// 08.08.15
+
+function Setpers(varargin)
+ global FocusPoint EyePoint;
+ Nargs=length(varargin);
+ if Nargs==0
+ Mixdisp(Mix('FocusPoints=',FocusPoint));
+ Mixdisp(Mix('EyePoint=',EyePoint));
+ return;
+ else
+ FocusPoint=varargin(1);
+ EyePoint=varargin(2);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.bin
new file mode 100644
index 00000000..b36a2407
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.sci
new file mode 100755
index 00000000..a3b86b01
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setpt.sci
@@ -0,0 +1,16 @@
+//
+// 09.02.27
+
+function Setpt(varargin)
+ global TenSize TenSizeInit;
+ Nargs=length(varargin);
+ if Nargs==0
+ Tmp=TenSize/TenSizeInit;
+ Tmp=round(Tmp*100)/100;
+ disp(Tmp);
+ return;
+ end;
+ Size=varargin(1);
+ TenSize=TenSizeInit*Size;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.bin
new file mode 100644
index 00000000..d3561ee9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.sci
new file mode 100755
index 00000000..1d4868c9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setscaling.sci
@@ -0,0 +1,28 @@
+function Out=Setscaling(varargin)
+ global LOGX LOGY SCALEX SCALEY;
+ Nargs= length(varargin)
+ if Nargs==0
+ Out=[SCALEY,LOGX,LOGY];
+ return;
+ end;
+ for I=1:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)==1
+ SCALEY=Tmp;
+ end;
+ if type(Tmp)==10
+ if Tmp=="l"
+ LOGX=0;
+ LOGY=1;
+ elseif Tmp=="ll"
+ LOGX=1
+ LOGY=1
+ else
+ LOGX=0
+ LOGY=0
+ end;
+ end;
+ end;
+ Out=[SCALEY,LOGX,LOGY];
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.bin
new file mode 100644
index 00000000..cba724b8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.sci
new file mode 100755
index 00000000..cb6c79ae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoL.sci
@@ -0,0 +1,12 @@
+// 08.08.12
+// 08.09.21
+// 09.03.09
+
+function SetstereoL(R,T,P,H)
+ X=R*sin(T*%pi/180)*cos(P*%pi/180);
+ Y=R*sin(T*%pi/180)*sin(P*%pi/180);
+ Z=R*cos(T*%pi/180);
+ Eye=[X+H/2*Y/(X^2+Y^2),Y-H/2*X/(X^2+Y^2),Z];
+ Setpers([0,0,0],Eye);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.bin
new file mode 100644
index 00000000..7f82c6ee
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.sci
new file mode 100755
index 00000000..ff9de892
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/SetstereoR.sci
@@ -0,0 +1,10 @@
+// 08.08.12
+
+function SetstereoR(R,T,P,H)
+ X=R*sin(T*%pi/180)*cos(P*%pi/180);
+ Y=R*sin(T*%pi/180)*sin(P*%pi/180);
+ Z=R*cos(T*%pi/180);
+ Eye=[X-H/2*Y/(X^2+Y^2),Y+H/2*X/(X^2+Y^2),Z];
+ Setpers([0,0,0],Eye);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.bin
new file mode 100644
index 00000000..23ded039
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.sci
new file mode 100755
index 00000000..84ea4d60
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setunitlen.sci
@@ -0,0 +1,78 @@
+// 08.12.06
+// 08.12.18
+// 09.02.20
+// 09.02.27
+// 14.03.05 MARKLEN
+// 17.03.19 VL=[] => VL="";
+
+function Out=Setunitlen(varargin)
+ global FID XMIN XMAX YMIN YMAX ULEN
+ global MilliIn MARKLEN MARKLENNow PenThickInit;
+ if length(varargin)==0
+ Out=ULEN;
+ disp(ULEN);
+ return;
+ end;
+ Ul=varargin(1);
+ Dx=XMAX-XMIN;
+ Dy=YMAX-YMIN;
+ Sym='.0123456789 +-*/';
+ Tmp=ascii(Sym);
+ SL=Sym;
+ OL='+-*/';
+ if Ul~=''
+ ULEN=Ul;
+ end;
+ Out=ULEN;
+ Is=1;
+ VL=""; // 17.03.19
+ Ucode=ascii(ULEN);
+ for I=1:length(Ucode)
+ C=char(Ucode(I));
+ if mtlb_findstr(SL,C)~=[]
+ if mtlb_findstr(OL,C)
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str+C;
+ Is=I+1;
+ end
+ else
+ Unit=char(Ucode(I:(I+1)));
+ Str=char(Ucode(Is:(I-1)));
+ VL=VL+Str;
+ break;
+ end;
+ end;
+ Valu=evstr(VL);
+ Str=string(Valu);
+ ULEN=Str+Unit;
+ Out=ULEN;
+ if Unit=='cm'
+ MilliIn=1000/2.54*Valu;
+ end
+ if Unit=='mm'
+ MilliIn=1000/2.54*Valu/10;
+ end
+ if Unit=='in'
+ MilliIn=1000*Valu;
+ end
+ if Unit=='pt'
+ MilliIn=1000/72.27*Valu;
+ end
+ if Unit=='pc'
+ MilliIn=1000/6.022*Valu;
+ end
+ if Unit=='bp'
+ MilliIn=1000/72*Valu;
+ end
+ if Unit=='dd'
+ MilliIn=1000/1238/1157/72.27*Valu;
+ end
+ if Unit=='cc'
+ MilliIn=1000/1238/1157/72.27*12*Valu;p
+ end
+ if Unit=='sp'
+ MilliIn=1000/72.27/65536*Valu/10;
+ end
+ MARKLEN=MARKLENNow*1000/2.54/MilliIn;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.bin
new file mode 100644
index 00000000..992a793c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.sci
new file mode 100755
index 00000000..92883d5a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setversion.sci
@@ -0,0 +1,182 @@
+//
+// 08.11.12 V3.0.2b
+// 08.11.26 V3.0.2c
+// 08.12.08 V3.0.2d
+// 08.12.11 v3.0.2e
+// 08.12.17 v3.0.3a
+// 08.12.21 v3.0.3b
+// 08.12.30 v3.0.3c
+// 09.01.15 v3.0.3d
+// 09.02.20 v3.0.3e
+// 09.02.27 v3.0.4a
+// 09.02.27 v3.0.4b
+// 09.03.06 v3.0.4c
+// 09.03.09 v3.0.4d
+// 09.03.10 v3.0.4e
+// 09.03.12 v3.0.5a
+// 09.05.12 v3.0.5b
+// 09.05.18 v3.0.5c
+// 09.05.27 v3.0.6a
+// 09.06.01 v3.0.6b
+// 09.06.05 v3.0.6c
+// 09.06.13 v3.0.6d
+// 09.06.24 v3.0.6e
+// 09.08.12 v3.0.7a
+// 09.08.13 v3.0.7b
+// 09.08.23 v3.0.8a
+// 09.09.10 v3.0.9a
+// 09.09.18 v3.1.0a
+// 09.09.21 v3.1.0b
+// 09.09.25 v3.1.1a
+// 09.09.25 v3.1.1b
+// 09.10.01 v3.1.1c
+// 09.10.03 v3.1.2a
+// 09.10.04 v3.1.3a
+// 09.10.05 v3.1.3b
+// 09.10.08 v3.1.3c
+// 09.10.09 v3.1.4a
+// 09.10.11 v3.1.5a
+
+// Structure changed
+// 09.10.11 v3.2.0beta
+// 09.10.31 v3.2.0beta1031
+
+// 09.11.01 v3.2.0a
+// 09.11.04 v3.2.1a
+// 09.11.12 v3.2.1b
+// 09.11.14 v3.2.1c
+// 09.11.14 v3.2.1d
+// 09.11.21 v3.2.1e
+// 09.11.26 v3.2.2a
+// 09.12.05 v3.2.2b
+// 09.12.06 v3.2.3a
+// 09.12.17 v3.2.3b
+// 09.12.24 v3.2.3c
+// 09.12.25 v3.3.1a
+// 09.12.26 v3.3.1b
+// 09.12.28 v3.3.1c
+// 09.12.31 v3.3.1d ( for v5.2.0)
+// 10.01.01 v3.4.0alpha
+// 10.01.05 v3.4.0beta
+// 10.01.10 v3.4.1a
+// 10.01.12 v3.4.1b
+// 10.01.16 v3.4.1c
+// 10.01.21 v3.4.2a
+// 10.02.01 v3.4.2b
+// 10.02.07 v3.4.2c
+// 10.02.12 v3.4.2d
+// 10.02.14 v3.4.2e
+// 10.02.16 v3.4.3a
+// 10.02.20 v3.4.3b Windisp
+// 10.02.24 v3.4.3c Execmd
+// 10.03.07 v3.4.3d
+// 10.03.28 v3.4.4a
+// 10.03.28 v3.4.4b
+// 10.04.03 v3.4.5a
+// 10.04.10 v3.4.5b
+// 10.04.16 v3.4.6a
+// 10.04.24 v3.4.6b
+// 10.04.24 v3.4.6b1
+// 10.04.27 v3.4.7a
+// 10.05.03 v3.4.7b
+// 10.05.09 v3.4.7c Makeskeletondata, Makeskeletonpersdata
+// 10.05.12 v3.4.7d Texfor
+// 10.05.15 v3.4.8a Texctr
+// 10.08.15 v3.5.0a Phcutoffdata
+// 10.09.02 Dropnumlistcrv
+// 10.10.20 Texfor
+// 10.11.04 Hatchdata, Roundstr
+// 10.11.13 v3.5.0b Flattenlist added. Dashline, Invdashline changed
+// 10.12.02 v3.5.0c Lineplot changed
+// Makecurves debugged
+// Enclosing changed (Output )
+// 11.01.07 v3.5.1a Readtextdata is changed
+// Dividegraphiics, Splinedata are changed
+// Facesdata is debugged (HiddenL)
+// Rmmember added
+// 11.04.13 Nohiddenpers2, Htickmark, Vtickmark are debugged
+// 11.05.29 v4.0.0a ketpict2e released, too
+// Setcolor, Ratiocmyk
+// 11.11.02 v4.0.0b Joingraphics changed
+// 11.12.12 v4.0.0c Skeletonparadata... changed (for various list )
+// 11.12.18 Framedata (compliant for list )
+// 12.01.07 v4.0.1a Arrowline, Arrowhead ( kirikomi )
+// 12.04.16 v4.0.1b Arrowhead debugged
+// 12.08.26 v4.0.1c Arrowline debugged
+// 13.05.03 v4.2a Tabledata, Pointdata changed
+// Dividetable, Partframe added
+// 13.05.17 v4.2_1a Arrowhead debugged
+// Openfile, Closefile, Ketinit() changed
+// 13.08.13 v4.2_2 Cancoordpara added
+// 13.10.06 v4.2_2a Readtextdata debugged and changed (Format)
+// 13.11.02 v4.3_0 __ added to local variables
+// Openfile, Closefile changed
+// 13.11.02 v4.3_0a Closefile debugged
+// 13.11.13 v4.3_0b Arrowhead, Arrowheaddata debugged
+// 13.12.03 v4.3_1 Bowname changed, Meetpoint debugged
+// 14.01.10 v4.3_1a Readtextdata debugged (Big data)
+// 14.03.05 v4.3_1b MARKLEN separated from MEMORI
+// 14.03.23 Rotate3data debugged
+// 14.03.30 v43_1c Facesdata debugged
+// 14.06.09 v43_2a Phcutdata debugged (cause unknown )
+// 14.06.22 v5_0_1a Obj macros added
+// 14.06.28 v5_0_1b debug cuspsplit (para, pers)
+// 14.07.05 v5_0_1c debug (warning ) Makeskeletondata, Makeskeletonpersdata
+// debug Makexybdy (by Kitahara)
+// 14.07.18 v5_0_1d Objsurf, Objthicksurf changed ( input argument )
+// 14.08.26 V5_1_0a Symbdata, Symb3data, Objsymb added
+// Objcurve debugged
+// 14.09.07 v5_1_0b Objjoin added
+// 14.09,08 v5_1_1a ReadfromCindy added
+// 14.09.16 v5_1_1b WritetoCindy added
+// 14.09.26 v5_1_1c Derivative changed ( to numderivative)
+// 14.09.30 v5_1_1d Assignrep changed
+// 14.10.08 v5_1_1e ReadfromCindy debugged
+// 14.10.08 v5_1_1f ReadfromCindy supported CF|LF
+// 14.10.10 v5_1_2a ReadOutdata, WritOutData added
+// 14.10.24 v5_1_2b Derivative changed ( derivative or numderivative used a.t scilab version)
+// Plotdata,Paramplot,Circledata changed ( N,D,E,R => N__, ... )
+// 14.12.11 v5_1_3a Assign changed (replaced only variable name )
+// Plotdata changed (and debugged ), Paramplot changed
+// 12.14 WriteOutData,ReadOutData changed ( for 3d )
+// 14.12.28 v5_1_3b Assign debugged
+// 15.01.01 v5_1_4a Bezierpt,Bezier added
+// 15.01.03 v5_1_4b ReadOutData changed ("start","end")
+// 15.02.08 v5_1_5a Bezier pt changed (available for 3d)
+// 15.02.18 v5_1_5b Assign debugged
+// 15.02.19 v5_1_5c Assign again debugged
+// 15.04.10 v5_1_5d EnclosingS debugged
+// Translatedata, Rotatedata, Reflectdata, Scaledate changed (Flattenlist)
+// 15.04.18 v5_1_5e Assign debugged
+// 15.05.03 v5_1_6a Setcolor,Ratiocmyk changed ( for cmyk, rgb, mycolor )
+// 15.05.04 Definecolor added
+// 15.06.11 v5_1_6b Arrowline, Arrowhead debugged
+// 15.06.14 v5_1_6c Skeletonpara3data debugged
+// Arrowhead changed (0.2 -> 0.1 )
+// 15.10.19 v5_1_6d Skeletonpara3data debugged
+// 15.10.23 v5_1_6e ReadOutData changed ( for the lenth of PD is 1 )
+// 15.10.23 Meetwindow changed ( horner non used )
+// 15.10.24 Arrowline debugged
+// 15.10.23 v5_1_6f WriteOutData changed ( endmark //// )
+// 15.11.05 v5_1_6g WriteOutData changed
+// 15.11.16 v5_2_1 Ovaldata changed ( Rc )
+// Plotdata, Paramplot, Deqplot
+// number of points changed to number of intervals
+// 15.12.08 v5_2_2 Deqplot debugged ( option __)
+// 16.08.20 v5_2_3 Spacecurve debugged ( N )
+// 16.10.09 v5_2_3a Objcurve changed ( N of Sapcecurve)
+// 16.10.09 v5_2_3b Kyoukai changed ( Eps =>10^(-4))
+// 16.10.09 v5_2_3c Enclosing, Kyoukai changed ( to make it a closed curve))
+// 16.12.13 v5_2_3d Plotdata,Paramplot,Spacecurve changed ( for only one point)
+// 16.12.24 v5_2_3e Makeskeletondata debugged ( for nul interval)
+// 16.12.29 v5_2_3f Anglemark, MeetWindow debugged ( for nul interval)
+// 16.12.29 v5_2_3g Shade changed (for colorname or colorcode)
+// 17.03.19 v5_2_3h Openpicture,Setunitlen debugged ( for 6 )
+// 17.05.21 v5_2_3i Evlptablepara changed (division number)
+
+
+function Setversion()
+ global THISVERSION;
+ THISVERSION='v5_2_3i';
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.bin
new file mode 100644
index 00000000..5ab2b0d2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.sci
new file mode 100755
index 00000000..fb72097b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Setwindow.sci
@@ -0,0 +1,44 @@
+//
+// 09.02.27
+// 10.04.25
+
+function Out=Setwindow(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs=length(varargin);
+ if Nargs==0
+ Out=[XMIN,XMAX,YMIN,YMAX];
+ disp(Out);
+ return;
+ end;
+ if Nargs==1
+ Dt=varargin(1);
+ if type(Dt)==1
+ Dt=list(Dt);
+ end;
+ Xm=%inf; XM=-%inf;
+ Ym=%inf; YM=-%inf;
+ for I=1:length(Dt)
+ GL=Dividegraphics(Dt(I));
+ for J=1:length(GL)
+ G=GL(J);
+ Tmp=min(G(:,1)); Xm=min(Xm,Tmp);
+ Tmp=max(G(:,1)); XM=max(XM,Tmp);
+ Tmp=min(G(:,2)); Ym=min(Ym,Tmp);
+ Tmp=max(G(:,2)); YM=max(YM,Tmp);
+ end;
+ end;
+ XMIN=Xm; XMAX=XM;
+ YMIN=Ym; YMAX=YM;
+ end;
+ if Nargs==2
+ RgX=varargin(1);
+ RgY=varargin(2);
+ XMIN=RgX(1); XMAX=RgX(2);
+ YMIN=RgY(1); YMAX=RgY(2);
+ end
+ if Nargs==4
+ XMIN=varargin(1); XMAX=varargin(2);
+ YMIN=varargin(3); YMAX=varargin(4);
+ end;
+ Out=[XMIN,XMAX,YMIN,YMAX];
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.bin
new file mode 100644
index 00000000..623920c5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.sci
new file mode 100755
index 00000000..9c20a13b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sf3data.sci
@@ -0,0 +1,62 @@
+// 08.08.16
+// 08.10.10
+// 13.10.21 ( __ added to varibles )
+
+function PL__=Sf3data(varargin)
+ Nargs__=length(varargin);
+ FdL__=Fullformfunc(varargin(1));
+ F__=Mixop(1,FdL__);
+ Xf__=Mixop(2,FdL__);
+ Yf__=Mixop(3,FdL__);
+ Zf__=Mixop(4,FdL__);
+ Urg__=Mixop(5,FdL__);
+ Vrg__=Mixop(6,FdL__);
+ K__=mtlb_findstr(Urg__,'=');
+ U__=part(Urg__,1:K__-1);
+ Tmp__=part(Urg__,K__+1:length(Urg__));
+ Tmp__=evstr(Tmp__);
+ Umin__=Tmp__(1); Umax__=Tmp__(2);
+ K__=mtlb_findstr(Vrg__,'=');
+ V__=part(Vrg__,1:K__-1);
+ Tmp__=part(Vrg__,K__+1:length(Vrg__));
+ Tmp__=evstr(Tmp__);
+ Vmin__=Tmp__(1); Vmax__=Tmp__(2);
+ Ndu__=25 ; Ndv__=25; Np__=[50,50];
+ if Nargs__>=3
+ Ndu__=varargin(2);
+ Ndv__=varargin(3);
+ end;
+ if Nargs__>=4
+ Np__=varargin(4);
+ if type(Np__)==1 & length(Np__)==1
+ Np__=[Np__,Np__];
+ end;
+ end;
+ Du__=(Umax__-Umin__)/Ndu__;
+ Dv__=(Vmax__-Vmin__)/Ndv__;
+ PL__ = [];
+ for I__=0:Ndu__
+ U0__ ='('+string(Umin__+I__*Du__)+')';
+ Tmp__=strsubst(Xf__,U__,U0__);
+ Tmp1__=strsubst(Tmp__,V__,'t');
+ Tmp__=strsubst(Yf__,U__,U0__);
+ Tmp2__=strsubst(Tmp__,V__,'t');
+ Tmp__=strsubst(Zf__,U__,U0__);
+ Tmp3__=strsubst(Tmp__,V__,'t');
+ Tmp__='['+Tmp1__+','+Tmp2__+','+Tmp3__+']';
+ PD__=Spacecurve(Tmp__,'t=[Vmin__,Vmax__]','N='+string(Np__(2)));
+ PL__=Mixadd(PL__,PD__);
+ end;
+ for J__=0:Ndv__
+ V0__='('+string(Vmin__+J__*Dv__)+')';
+ Tmp__=strsubst(Xf__,V__,V0__);
+ Tmp1__=strsubst(Tmp__,U__,'t');
+ Tmp__=strsubst(Yf__,V__,V0__);
+ Tmp2__=strsubst(Tmp__,U__,'t');
+ Tmp__=strsubst(Zf__,V__,V0__);
+ Tmp3__=strsubst(Tmp__,U__,'t');
+ Tmp__='['+Tmp1__+','+Tmp2__+','+Tmp3__+']';
+ PD__=Spacecurve(Tmp__,'t=[Umin__,Umax__]','N='+string(Np__(1)));
+ PL__=Mixadd(PL__,PD__);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.bin
new file mode 100644
index 00000000..183f7fda
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.sci
new file mode 100755
index 00000000..7a759f69
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdparadata.sci
@@ -0,0 +1,39 @@
+// 08.09.13
+// 10.02.16 Eps => [Eps, Epsmag]
+
+function Out5=Sfbdparadata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=4
+ Eps2=varargin(4);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepara(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ IMPLICITDATA=Out3;
+ Mixdisp(Mix('ImplicitData obtained ',timer()));
+ Out4=Cuspsplitpara(Out3,Fd,Eps(1)); //
+ CUSPDATA=Out4;
+ CUSPPT=CUSPSPLITPT;
+ Mixdisp(Mix('CuspData obtained ',timer()));
+ Out5=Borderparadata(Out4,Fd,Np,Eps,Eps2);
+ Mixdisp(Mix('BorderData obtained ',timer()));
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.bin
new file mode 100644
index 00000000..5f77179e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.sci
new file mode 100755
index 00000000..9833a7f4
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdpersdata.sci
@@ -0,0 +1,42 @@
+
+// 08.09.21
+// 10.02.16 Eps => [Eps, Epsmag]
+// 13.11.02 bug
+
+function Out5=Sfbdpersdata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=[0.05,1]; //
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ if length(Eps)==1 //
+ Eps=[Eps,1]; //
+ end; //
+ Eps2=0.2;
+ if Nargs>=4
+ Eps2=varargin(4);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepers(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ IMPLICITDATA=Out3;
+ Mixdisp(Mix('ImplicitData obtained ',timer()));
+ Out4=Cuspsplitpers(Out3,Fd,Eps(1)); // 13.11.02
+ CUSPDATA=Out4;
+ CUSPPT=CUSPSPLITPT;
+ Mixdisp(Mix('CuspData obtained ',timer()));
+ Out5=Borderpersdata(Out4,Fd,Np,Eps,Eps2);
+ Mixdisp(Mix('BorderData obtained ',timer()));
+endfunction;
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.bin
new file mode 100644
index 00000000..66da5cea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.sci
new file mode 100755
index 00000000..082ccec3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawparadata.sci
@@ -0,0 +1,33 @@
+// 08.09.10
+// 08.09.13
+
+function Out5=Sfbdrawparadata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=0.05;
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepara(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ BdyL=Mixop(8,FdL);
+ if BdyL~=[]
+ Out3=Clipindomain(Out3,BdyL)
+ end;
+ IMPLICITDATA=Out3;
+ Out4=Cuspsplitpara(Out3,Fd,Eps);
+ CUSPDATA=Out4;
+ CCUSPPT=CUSPSPLITPT;
+ Out5=Borderrawdata(Out4,Fd,Np,Eps);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.bin
new file mode 100644
index 00000000..cd42fdf6
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.sci
new file mode 100755
index 00000000..cde6870f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfbdrawpersdata.sci
@@ -0,0 +1,31 @@
+// 08.09.21
+
+function Out5=Sfbdrawpersdata(varargin)
+ global IMPLICITDATA CUSPDATA CUSPPT CUSPSPLITPT;
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ FdL=Fullformfunc(Fd);
+ Np=[50,50];
+ if Nargs>=2
+ Np=varargin(2);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end;
+ Eps=0.05;
+ if Nargs>=3
+ Eps=varargin(3);
+ end;
+ Ts=timer();
+ [Zval,Xval,Yval]=Evlptablepers(Mix(Fd,Np));
+ Out3=Implicitplot(Zval,Xval,Yval);
+ BdyL=Mixop(8,FdL);
+ if BdyL~=[]
+ Out3=Clipindomain(Out3,BdyL)
+ end;
+ IMPLICITDATA=Out3;
+ Out4=Cuspsplitpers(Out3,Fd,Eps);
+ CUSPDATA=Out4;
+ CCUSPPT=CUSPSPLITPT;
+ Out5=Borderrawdata(Out4,Fd,Np,Eps);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.bin
new file mode 100644
index 00000000..c7f1f6f1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.sci
new file mode 100755
index 00000000..5a15d61c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutdata.sci
@@ -0,0 +1,105 @@
+// 08.09.09
+// 08.09.19
+// 08.09.20
+// 08.09.24
+// 08.10.09
+// 08.10.10
+// 13.10.21 ( __ added to varibles )
+
+function EkL__=Sfcutdata(varargin)
+ Nargs__=length(varargin);
+ Fd__=varargin(1);
+ CutD__=varargin(2);
+ Np__=[50,50];
+ if Nargs__>=3
+ Tmp__=varargin(3);
+ if type(Tmp__)==1 & length(Tmp__)==1
+ Np__=[Tmp__,Tmp__];
+ end;
+ end;
+ Tmp__=Mixop(2,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Xname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(3,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Yname__=part(Tmp__,1:K__-1);
+ Tmp__=Mixop(1,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ if K__~=[]
+ Zname__=part(Tmp__,1:K__-1);
+ else
+ Tmp__=Mixop(4,Fd__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Zname__=part(Tmp__,1:K__-1);
+ end;
+ Fd__L=Fullformfunc(Fd__);
+ Xf__=Mixop(2,Fd__L);
+ Yf__=Mixop(3,Fd__L);
+ Zf__=Mixop(4,Fd__L);
+ Tmp__=Mixop(5,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Uname__=part(Tmp__,1:K__-1);
+ Urg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Tmp__=Mixop(6,Fd__L);
+ K__=mtlb_findstr(Tmp__,'=');
+ Vname__=part(Tmp__,1:K__-1);
+ Vrg__=evstr(part(Tmp__,K__+1:length(Tmp__)));
+ Umin__=Urg__(1); Umax=Urg__(2);
+ Vmin__=Vrg__(1); Vmax=Vrg__(2);
+ if Mixtype(CutD__)~=1
+ V1__=Mixop(1,CutD__);
+ Tmp__=Mixop(2,CutD__);
+ if length(Tmp__)>1
+ D__=V1__(1)*Tmp__(1)+V1__(2)*Tmp__(2)+V1__(3)*Tmp__(3);
+ else
+ D__=Tmp__;
+ end;
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'-';
+ Eq__=Tmp__+string(D__);
+ elseif type(CutD__)==1
+ V1__=CutD__(1:3);
+ D__=CutD__(4);
+ Tmp__=string(V1__(1))+'*'+Xname__+'+';
+ Tmp__=Tmp__+string(V1__(2))+'*'+Yname__+'+';
+ Tmp__=Tmp__+string(V1__(3))+'*'+Zname__+'+';
+ Eq__=Tmp__+string(D__);
+ else
+ K__=mtlb_findstr(CutD__,'=');
+ if K__>0
+ Tmp__1=part(CutD__,1:K__-1);
+ Tmp__2=part(CutD__,K__+1:length(CutD__));
+ Eq__=Tmp__1+'-('+Tmp__2+')';
+ else
+ Eq__=CutD__;
+ end;
+ end;
+ Tmp__=strsubst(Eq__,Xname__,'('+Xf__+')');
+ Tmp__=strsubst(Tmp__,Yname__,'('+Yf__+')');
+ Uveq__=strsubst(Tmp__,Zname__,'('+Zf__+')');
+ Tmp__1=Mixop(5,Fd__L);
+ Tmp__2=Mixop(6,Fd__L);
+ CutuvL__=Implicitplot(Uveq__,Tmp__1,Tmp__2,Np__);
+ EkL__=[];
+ for I__=1:Mixlength(CutuvL__)
+ Out__1=Mixop(I__,CutuvL__);
+ Out__2=[];
+ for J__=1:size(Out__1,1)
+ Tmp__1=Out__1(J__,1);
+ Tmp__2=Out__1(J__,2);
+ Tmp__=strsubst(Xf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Xv__=evstr(Tmp__);
+ Tmp__=strsubst(Yf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Yv__=evstr(Tmp__);
+ Tmp__=strsubst(Zf__,Uname__,'('+string(Tmp__1)+')');
+ Tmp__=strsubst(Tmp__,Vname__,'('+string(Tmp__2)+')');
+ Zv__=evstr(Tmp__);
+ Out__2=[Out__2,[Xv__,Yv__,Zv__]];
+ end;
+ Tmp__=Spaceline(Out__2);
+ EkL__=Mixadd(EkL__,Tmp__);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.bin
new file mode 100644
index 00000000..b6341637
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.sci
new file mode 100755
index 00000000..0e4c6a5b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffparadata.sci
@@ -0,0 +1,12 @@
+// 08.09.1
+// 10.02.17
+
+function Out=Sfcutoffparadata(varargin)
+ Ms=list('hidden','para');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.bin
new file mode 100644
index 00000000..636f24b3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.sci
new file mode 100755
index 00000000..c10cdb8d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffpersdata.sci
@@ -0,0 +1,12 @@
+// 08.09.21
+// 10.02.17
+
+function Out=Sfcutoffpersdata(varargin)
+ Ms=list('hidden','pers');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.bin
new file mode 100644
index 00000000..2b4fd676
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.sci
new file mode 100755
index 00000000..546f66d8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawparadata.sci
@@ -0,0 +1,12 @@
+// 08.09.19
+// 10.02.17
+
+function Out=Sfcutoffrawparadata(varargin)
+ Ms=list('raw','para');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.bin
new file mode 100644
index 00000000..08ac4249
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.sci
new file mode 100755
index 00000000..e5a387f5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfcutoffrawpersdata.sci
@@ -0,0 +1,12 @@
+// 08.09.21
+// 10.02.17
+
+function Out=Sfcutoffrawpersdata(varargin)
+ Ms=list('raw','pers');
+ for I=1:length(varargin)
+ Tmp=varargin(I);
+ Ms=Mixjoin(Ms,list(Tmp));
+ end;
+ Out=Makesfcutoffdata(Ms);
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.bin
new file mode 100644
index 00000000..f1b9d960
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.sci
new file mode 100755
index 00000000..5aa4e5e5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfparadata.sci
@@ -0,0 +1,17 @@
+// 08.08.16
+
+function Out=Sfparadata(varargin)
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ Ndu=25 ; Ndv=25; Np=[50,50];
+ if Nargs>=3
+ Ndu=varargin(2);
+ Ndv=varargin(3);
+ end;
+ if Nargs>=4
+ Np=varargin(4);
+ end;
+ Tmp=Sf3data(Fd,Ndu,Ndv,Np);
+ Out=Projpara(Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.bin
new file mode 100644
index 00000000..bea54bf3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.sci
new file mode 100755
index 00000000..ecc63e41
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sfpersdata.sci
@@ -0,0 +1,17 @@
+// 08.08.15
+
+function Out=Sfpersdata(varargin)
+ Nargs=length(varargin);
+ Fd=varargin(1);
+ Ndu=25 ; Ndv=25; Np=[50,50];
+ if Nargs>=3
+ Ndu=varargin(2);
+ Ndv=varargin(3);
+ end;
+ if Nargs>=4
+ Np=varargin(4);
+ end;
+ Tmp=Sf3data(Fd,Ndu,Ndv,Np);
+ Out=Projpers(Tmp);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.bin
new file mode 100644
index 00000000..48ba5b55
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.sci
new file mode 100755
index 00000000..ec4fa716
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Shade.sci
@@ -0,0 +1,93 @@
+//
+// 08.05.22
+// 09.12.25
+// 17.01.09 (available colorname or colorcode as 2nd arg)
+
+function Shade(varargin)
+ global Wfile FID MilliIn;
+ Nargs=length(varargin);
+ Iroflg=0;
+ Kosa=1;
+ if Nargs>1
+ Iro=varargin(Nargs);
+ if type(Iro)==10
+ Iroflg=1;
+ if length(strchr(Iro,"{"))>0
+ Str="{\color"+Iro;
+ else
+ Str="{\color{"+Iro+"}";
+ end;
+ else
+ if length(Iro)==1
+ Kosa=Iro;
+ else
+ Iroflg=1;
+ if length(Iro)==4
+ Str='{\color[cmyk]{';
+ else
+ if length(Iro)==3
+ Str='{\color[rgb]{';
+ end;
+ end;
+ for J=1:length(Iro)
+ Str=Str+string(Iro(J));
+ if J<length(Iro)
+ Str=Str+',';
+ end
+ end
+ Str=Str+'}';
+ end;
+ end;
+ if Iroflg==1
+ if Wfile=='default'
+ mprintf('%s\n',Str+'%');
+ else
+ mfprintf(FID,'%s\n',Str+'%');
+ end;
+ end;
+ end;
+ Tmp=varargin(1);
+ Data=Kyoukai(Tmp);
+ for I=1:length(Data)
+ PL=Op(I,Data);
+ Mojisu=0;
+ for J=1:size(PL,1)
+ P=Doscaling(PL(J,:));
+ X=string(round(MilliIn*P(1)));
+ Y=string(-round(MilliIn*P(2)));
+ Str='\special{pa '+X+' '+Y+'}';
+ if Wfile=='default'
+ mprintf('%s',Str);
+ else
+ mfprintf(FID,'%s',Str);
+ end
+ Mojisu=Mojisu+length(Str);
+ if Mojisu>80
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ Mojisu=0;
+ end
+ end
+ Str1='\special{sh '+string(Kosa)+'}';
+ Str2='\special{ip}%';
+ if Wfile=='default'
+ mprintf('%s',Str1);
+ mprintf('%s\n',Str2);
+ else
+ mfprintf(FID,'%s',Str1);
+ mfprintf(FID,'%s\n',Str2);
+ end
+ end
+ if Iroflg==1
+ Str='}%';
+ Fmt='%s\n';
+ if Wfile=='default'
+ mprintf(Fmt,Str);
+ else
+ mfprintf(FID,Fmt,Str);
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.bin
new file mode 100644
index 00000000..e93fdf6e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.sci
new file mode 100755
index 00000000..4eec31cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeleton2data.sci
@@ -0,0 +1,71 @@
+// 08.08.14
+// 08.10.16
+// 09.06.13
+
+function Out=Skeleton2data(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ Tmp=varargin(1);
+ if Mixtype(Tmp)==1
+ ObjL=MixS(Tmp);
+ elseif Mixtype(Tmp)==2
+ ObjL=Tmp;
+ else
+ ObjL=[];
+ for I=1:Mixlength(Tmp)
+ Tmp1=Mixop(I,Tmp);
+ if Mixtype(Tmp1)==1
+ ObjL=Mixadd(ObjL,Tmp1);
+ else
+ ObjL=Mixjoin(ObjL,Tmp1);
+ end;
+ end;
+ end;
+ Tmp=varargin(2);
+ if Mixtype(Tmp)==1
+ PltL=MixS(Tmp);
+ elseif Mixtype(Tmp)==2
+ PltL=Tmp
+ else
+ PltL=[];
+ for I=1:Mixlength(Tmp)
+ Tmp1=Mixop(I,Tmp);
+ if Mixtype(Tmp1)==1
+ PltL=Mixadd(PltL,Tmp1);
+ else
+ PltL=Mixjoin(PltL,Tmp1);
+ end;
+ end;
+ end;
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.01;
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Obj2L=[];
+ for I=1:Mixlength(ObjL)
+ Curve=Mixop(I,ObjL);
+ Obj2=[];
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ Obj2=[Obj2;P,-1];
+ end;
+ Obj2L=Mixadd(Obj2L,Obj2);
+ end;
+ Plt2L=[]
+ for I=1:Mixlength(PltL)
+ Curve=Mixop(I,PltL);
+ Plt2=[];
+ for J=1:size(Curve,1)
+ P=Curve(J,:);
+ Plt2=[Plt2;P,0];
+ end;
+ Plt2L=Mixadd(Plt2L,Plt2);
+ end;
+ Out=Makeskeletondata(Obj2L,Plt2L,R,Eps2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.bin
new file mode 100644
index 00000000..1d3bd14f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.sci
new file mode 100755
index 00000000..5914d47a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpara3data.sci
@@ -0,0 +1,48 @@
+// 09.09.25
+// 11.12.12
+// 15.06.14
+// 15.10.19
+
+function Out=Skeletonpara3data(varargin)
+ global MilliIn;
+ Eps=10^(-4); // 15.06.14
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Plt2L=list();
+ for I=1:Mixlength(Plt3L)
+ Plt2L($+1)=ProjcoordCurve(Plt3L(I));
+ end;
+ Out=list();
+ for I=1:length(ObjL)
+ Obj3=ObjL(I);
+ Tmp=ProjcoordCurve(Obj3);
+ Data=Makeskeletondata(Mix(Tmp),Plt2L,R,Eps2);
+ for J=1:length(Data)
+ Gd=Data(J);
+ if size(Gd,1)==1 // 15.10.19
+ continue;
+ end;
+ if norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))<Eps // 15.06.14
+ continue
+ end;
+ PtD=[];
+ for J=1:size(Gd,1)
+ Tmp=Gd(J,:);
+ Tmp1=Invparapt(Tmp,Obj3);
+ Tmp1=Mixop(1,Tmp1);
+ PtD=[PtD;Tmp1];
+ end;
+ Out($+1)=PtD;
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.bin
new file mode 100644
index 00000000..f0879401
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.sci
new file mode 100755
index 00000000..1270f789
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonparadata.sci
@@ -0,0 +1,29 @@
+// 08.07.13
+// 08.08.08
+// 08.10.16
+// 11.12.12 (Flattenlist)
+
+function Out=Skeletonparadata(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Obj2L=list();
+ for I=1:length(ObjL)
+ Obj2L($+1)=ProjcoordCurve(ObjL(I));
+ end;
+ Plt2L=list();
+ for I=1:length(Plt3L)
+ Plt2L($+1)=ProjcoordCurve(Plt3L(I));
+ end;
+ Out=Makeskeletondata(Obj2L,Plt2L,R,Eps2);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.bin
new file mode 100644
index 00000000..d382a6b0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.sci
new file mode 100755
index 00000000..57dde938
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpers3data.sci
@@ -0,0 +1,41 @@
+// 09.09.25
+// 11.12.12
+
+function Out=Skeletonpers3data(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Plt2L=[];
+ for I=1:Mixlength(Plt3L)
+ Tmp=CameracoordCurve(Mixop(I,Plt3L));
+ Plt2L=Mixadd(Plt2L,Tmp);
+ end;
+ Out=list();
+ for I=1:length(ObjL)
+ Obj3=ObjL(I);
+ Tmp=CameracoordCurve(Obj3);
+ Data=Makeskeletonpersdata(Mix(Tmp),Plt2L,R,Eps2);
+ for J=1:length(Data)
+ Gd=Data(J);
+ PtD=[];
+ for J=1:size(Gd,1)
+ Tmp=Gd(J,:);
+ Tmp1=Invperspt(Tmp,Obj3);
+ Tmp1=Mixop(1,Tmp1);
+ PtD=[PtD;Tmp1];
+ end;
+ Out($+1)=PtD;
+ end;
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.bin
new file mode 100644
index 00000000..03417429
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.sci
new file mode 100755
index 00000000..c91e73cf
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Skeletonpersdata.sci
@@ -0,0 +1,29 @@
+// 08.08.14
+// 08.10.16
+// 11.12.12
+
+function Out=Skeletonpersdata(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Out=[];
+ ObjL=Flattenlist(varargin(1));
+ Plt3L=Flattenlist(varargin(2));
+ R=0.075*1000/2.54/MilliIn;
+ if Nargs>2
+ R=R*varargin(3);
+ end;
+ Eps2=0.05; // changed at 08.10.16
+ if Nargs>3
+ Eps2=varargin(4);
+ end;
+ Obj2L=list();
+ for I=1:length(ObjL)
+ Obj2L($+1)=CameracoordCurve(ObjL(I));
+ end;
+ Plt2L=list();
+ for I=1:length(Plt3L)
+ Plt2L($+1)=CameracoordCurve(Plt3L(I));
+ end;
+ Out=Makeskeletonpersdata(Obj2L,Plt2L,R,Eps2);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.bin
new file mode 100644
index 00000000..bacaa702
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.sci
new file mode 100755
index 00000000..077a88cb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spacecurve.sci
@@ -0,0 +1,83 @@
+// 08.07.11
+// 09.05.27
+// 09.06.02
+// 09.12.31 (gsort)
+// 13.10.21 ( __ added to varibles )
+// 16.08.20 (N changed to devided number )
+// 16.12.13 ( in case of T1=T2)
+
+function P__=Spacecurve(varargin)
+ Eps__=10^(-5);
+ Nargs__=length(varargin);
+ Fnstr__=varargin(1);
+ Rgstr__=varargin(2);
+ Range__=[0,2*%pi];
+ N=50; // Numpoints
+ E=[]; // Exclusions
+ D=%inf; // Discont (Changed)
+ for I__=3:Nargs__
+ Tmp__=varargin(I__);
+ K__=mtlb_findstr(Tmp__,'=');
+ Tmp1__=strsplit(Tmp__,[K__-1,K__]);
+ Tmp2__=ascii(Tmp1__(1,1));
+ Lhs__=char(Tmp2__(1));
+ Str__=Lhs__+'='+Tmp1__(3,1);
+ execstr(Str__);
+ end;
+ K__=mtlb_findstr(Rgstr__,'=');
+ if K__~=[]
+ Tmp__=strsplit(Rgstr__,[K__-1,K__]);
+ Vname__=Tmp__(1,1);
+ Rng__=evstr(Tmp__(3,1));
+ else
+ Vname__=Rgstr__;
+ Rng__=[XMIN,XMAX];
+ end
+ T1__=Rng__(1); T2__=Rng__(2);
+ Dt__=(T2__-T1__)/N; // 16.08.20
+ Str__=mtlb_strrep(Fnstr__,Vname__,'t__');
+ if abs(Dt__)<Eps__ then // 16.12.13
+ t__=T1__;
+ P__=evstr(Str__);
+ return;
+ end;
+ P__=[];
+ E=gsort(E);
+ E=E(length(E):-1:1);
+ E=[E,%inf];
+ Tmp__=gsort(E);
+ E=Tmp__(length(Tmp__):-1:1);
+ Ke__=1;
+ for t__=T1__:Dt__:T2__
+ Pa__=[];
+ if t__-E(Ke__)<-Eps__
+ Pa__=evstr(Str__);
+ end
+ if abs(t__-E(Ke__))<=Eps__
+ if P__~=[] & P__(size(P__,1),:)~=[%inf,%inf,%inf]
+ Pa__=[%inf,%inf,%inf];
+ end
+ end
+ if t__-E(Ke__)>Eps__
+ Pa__=evstr(Str__);
+ Ke__=Ke__+1;
+ end
+ if Pa__~=[]
+ if Pa__(1)==%inf
+ P__=[P__;Pa__]
+ elseif P__==[]
+ P__=[Pa__];
+ else
+ Tmp__=P__(size(P__,1),:);
+ if Tmp__(1)==%inf
+ P__=[P__;Pa__];
+ elseif norm(Tmp__-Pa__)<D
+ P__=[P__;Pa__];
+ else
+ P__=[P__;%inf,%inf,%inf;Pa__];
+ end
+ end
+ end
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.bin
new file mode 100644
index 00000000..b5252573
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.sci
new file mode 100755
index 00000000..9fe33c06
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Spaceline.sci
@@ -0,0 +1,27 @@
+// 08.07.11
+
+function Z=Spaceline(varargin)
+ Z=[];
+ for I=1:length(varargin)
+ Data=varargin(I);
+ if Mixtype(Data)==1
+ for J=1:3:size(Data,2)
+ Tmp=Data(J:J+2);
+ Z=[Z;Tmp];
+ end;
+ continue;
+ end;
+ if Mixtype(Data)==3
+ Tmp=[];
+ for I=1:Mixlength(Data);
+ Tmp=Mixjoin(Tmp,Mixop(I,Data));
+ end;
+ Data=Tmp;
+ end;
+ for J=1:Mixlength(Data)
+ Tmp=Mixop(J,Data);
+ Z=[Z;Tmp];
+ end;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.bin
new file mode 100644
index 00000000..c9477a3a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.sci
new file mode 100755
index 00000000..a4de85ea
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Splinedata.sci
@@ -0,0 +1,108 @@
+// 08.05.28
+// 08.05.29
+// 09.06.13
+// 10.04.24
+// 10.04.25
+// 11.01.07 ( major changed )
+
+function OutL=Splinedata(varargin)
+ global SplinePt;
+ Nargs=length(varargin);
+ Eps=10^(-3);
+ PL=varargin(1);
+ if type(PL)==10 // 100425
+ Fname=PL;
+ PL=Readtextdata(Fname);
+ else
+ if size(PL,1)==1
+ PL=matrix(PL,2,length(PL)/2);
+ PL=PL';
+ end;
+ end;
+ if size(PL,2)==3
+ Flg3=1;
+ else
+ Flg3=0;
+ end;
+ PLL=Dividegraphics(PL);
+ N=50;
+ C=[];
+ for I=2:Nargs
+ Tmp=varargin(I);
+ if type(Tmp)~=10 continue; end
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ else
+ Tmp1=Strop(1,Tmp);
+ if Tmp1=='C' | Tmp1=='c'
+ C=1:length(PLL);
+ end;
+ end;
+ end;
+ Cflg=zeros(1,length(PLL));
+ for J=1:length(C)
+ K=C(J);
+ Cflg(K)=1;
+ end;
+ if length(N)>1
+ if type(Nj)==1
+ Nj=N;
+ else
+ Nj=[];
+ for J=1:length(N)
+ Nj(J)=N(J);
+ end;
+ end;
+ else
+ Tmp1=[];
+ for J=1:length(PLL)
+ Tmp1(J)=size(PLL(J),1);
+ end;
+ MxP=max(Tmp1);
+ Nj=[];
+ for J=1:length(PLL)
+ Tmp=size(PLL(J),1);
+ Tmp1=round(N/MxP*(Tmp-1));
+ Nj(J)=Tmp1;
+ end;
+ end;
+ OutL=list();
+ for J=1:length(PLL) //
+ PL=PLL(J);
+ if Cflg(J)==1
+ if norm(PL(1,:)-PL(size(PL,1),:))>Eps
+ PL=[PL;PL(1,:)];
+ Nj(J)=round(N/MxP*size(PL,1));
+ else
+ PL(size(PL,1),:)=PL(1,:);
+ end
+ end;
+ SplinePt=PL;
+ Tn=1:size(PL,1);
+ Xn=PL(:,1)';
+ Yn=PL(:,2)';
+ if Flg3==1 Zn=PL(:,3)';end;
+ if Cflg(J)==0
+ Dxn=splin(Tn,Xn);
+ Dyn=splin(Tn,Yn);
+ if Flg3==1 Dzn=splin(Tn,Zn); end;
+ else
+ Dxn=splin(Tn,Xn,'periodic');
+ Dyn=splin(Tn,Yn,'periodic');
+ if Flg3==1 Dzn=splin(Tn,Zn,'periodic'); end;
+ end
+ T=linspace(1,size(PL,1),Nj(J));
+ X=interp(T,Tn,Xn,Dxn);
+ Y=interp(T,Tn,Yn,Dyn);
+ if Flg3==1 Z=interp(T,Tn,Zn,Dzn); end;
+ if Flg3==1
+ Out=[X',Y',Z'];
+ else
+ Out=[X',Y'];
+ end;
+ OutL($+1)=Out;
+ end;
+ if length(OutL)==1
+ OutL=OutL(1);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.bin
new file mode 100644
index 00000000..e8876298
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.sci
new file mode 100755
index 00000000..8f4da94d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Strop.sci
@@ -0,0 +1,11 @@
+function C=Strop(Num,Str)
+ N=length(Num);
+ L=ascii(Str);
+ C='';
+ for I=1:N
+ K=Num(I);
+ Tmp=char(L(K));
+ C=C+Tmp;
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.bin
new file mode 100644
index 00000000..5f1b02bc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.sci
new file mode 100755
index 00000000..785b605c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Subs.sci
@@ -0,0 +1,21 @@
+//
+// 08.06.04
+
+function V=Subs(SbstrL,StrF)
+ Str=StrF;
+ if type(StrF)==2
+ Str=pol2str(StrF);
+ end
+ V=StrF;
+ for N=1:size(SbstrL,2)
+ Sbstr=SbstrL(1,N);
+ I=mtlb_findstr(Sbstr,'=');
+ Tmp=strsplit(Sbstr,I);
+ SbA=Tmp(1);
+ SbA=Op(1:length(SbA)-1,SbA);
+ SbB=Tmp(2);
+ V=strsubst(V,SbA,SbB);
+ end
+ V=evstr(V);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.bin
new file mode 100644
index 00000000..cd35f9cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.sci
new file mode 100755
index 00000000..55fdfd0f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Sumfun.sci
@@ -0,0 +1,65 @@
+// 08.05.30
+// 08.05.31
+// 08.06.03
+// 13.10.21 (__ added to variables )
+
+function PL__=Sumfun(varargin)
+ global XMIN XMAX YMIN YMAX
+ Nargs__=length(varargin);
+ Const__=0;
+ Addstr__='A__=0';
+ J__=1;
+ Tmp__=varargin(1);
+ if type(Tmp__)==1
+ Const__=Tmp__;
+ J__=J__+1;
+ end
+ if type(Tmp__)==10
+ Tmp1__=Strop(length(Tmp__),Tmp__);
+ if Tmp1__=='+'
+ Addstr__='A__='+Strop(1:length(Tmp__)-1,Tmp__);
+ J__=J__+1
+ end
+ end
+ Fnstr__=varargin(J__);
+ Krange__=varargin(J__+1);
+ Xrange__=varargin(J__+2);
+ N=50;
+ for I__=J__+3:Nargs__
+ Tmp__=varargin(I__);
+ execstr(Tmp__);
+ end
+ Tmp__=mtlb_findstr(Krange__,'=');
+ Kname__=Strop(1:Tmp__-1,Krange__);
+ Tmp1__=Strop(Tmp__+1:length(Krange__),Krange__);
+ Tmp1__='Krg__='+Tmp1__;
+ execstr(Tmp1__);
+ Tmp__=mtlb_findstr(Xrange__,'=');
+ if Tmp__==[]
+ Xname__=Xrange__;
+ Xrg__=[XMIN,XMAX];
+ else
+ Xname__=Strop(1:Tmp__-1,Xrange__);
+ Tmp1__=Strop(Tmp__+1:length(Xrange__),Xrange__);
+ Tmp1__='Xrg__='+Tmp1__;
+ execstr(Tmp1__);
+ end
+ Dx__=(Xrg__(2)-Xrg__(1))/N;
+ PL__=[];
+ I__=0;
+ while I__<=N
+ Tmp__=Xname__+'=Xrg__(1)+I__*Dx__';
+ execstr(Tmp__);
+ J__=Krg__(1);
+ execstr(Addstr__);
+ Y__=Const__+A__;
+ while J__<=Krg__(length(Krg__))
+ Tmp__=Kname__+'=J__';
+ execstr(Tmp__);
+ execstr('Y__=Y__+'+Fnstr__);
+ J__=J__+1;
+ end
+ PL__=[PL__;Xrg__(1)+I__*Dx__,Y__];
+ I__=I__+1;
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.bin
new file mode 100644
index 00000000..7abbf37d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.sci
new file mode 100644
index 00000000..0d649872
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symb3data.sci
@@ -0,0 +1,30 @@
+// s : 2014.08.25
+
+function Out=Symb3data(Moji,Size,Kaiten,NV,Pos)
+ if type(Moji)==10 then
+ Tmp=Symbdata(Moji);
+ GY1=Tmp(2)
+ else
+ GY1=Moji
+ end
+ GY1=Scaledata(GY1,Size,Size);
+ GY1=Rotatedata(GY1,Kaiten*%pi/180);
+ A=NV(1); B=NV(2); C=NV(3);
+ if A^2+B^2==0 then
+ E1=[1,0,0];
+ E2=[0,1,0];
+ else
+ E1=[B,-A,0];
+ E2=[-A*C,-B*C,A^2+B^2];
+ D=det([E1;E2;NV]);
+ if D<0 then
+ E1=-E1
+ end
+ E1=E1/norm(E1);
+ E2=E2/norm(E2);
+ end
+ deff("Out=Em(X,Y)","Out=[E1(1)*X+E2(1)*Y,E1(2)*X+E2(2)*Y,E1(3)*X+E2(3)*Y]");
+ GY1=Embed(GY1,Em);
+ GY1=Translate3data(GY1,Pos);
+ Out=Flattenlist(GY1);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.bin
new file mode 100644
index 00000000..ebda20ac
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.sci
new file mode 100644
index 00000000..d63a3470
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Symbdata.sci
@@ -0,0 +1,67 @@
+// s : 2014.08.25
+// 14.09.07
+
+function Out=Symbdata(Moji)
+ ML=list(); Sp=[]; CC=[];
+ if Moji=="x" then
+ M1=[-0.042,0.035;-0.027,0.045;-0.01,0.045;0.004,0.03;0.00,0.00;...
+ -0.004,-0.03;0.01,-0.045;0.027,-0.045;0.042,-0.035];
+ M2=[0.055,0.035;0.043,0.045;0.027,0.045;0.01,0.03;0.00,0.00;...
+ -0.01,-0.03;-0.027,-0.045;-0.043,-0.045;-0.055,-0.035];
+ ML=list(M1,M2);
+ Sp=[100,100];
+ CC=[0,0];
+ end;
+ if Moji=="y" then
+ M1=[-0.06,0.06;...
+ -0.045,0.080;...
+ -0.03,0.080;...
+ -0.022,0.065;...
+ -0.032,0.035;...
+ -0.035,-0.01;...
+ 0.007,-0.008;...
+ 0.037,0.04;...
+ 0.05,0.09];
+ M2=[0.05,0.09;...
+ 0.037,0.04;...
+ 0.025,-0.00;...
+ 0.015,-0.035;...
+ -0.000,-0.055;...
+ -0.025,-0.062;...
+ -0.05,-0.045];
+ ML=list(M1,M2);
+ Sp=[100,100];
+ CC=[0,0];
+ end
+ if Moji=="z" then
+ M1=[-0.035,0.035;-0.023,0.045;-0.01,0.045;...
+ 0.01,0.04;0.035,0.04;0.042,0.045];
+ M2=[0.042,0.045;0.00,0.00;-0.042,-0.045];
+ M3=[-0.042,-0.045;-0.035,-0.04;-0.01,-0.04;...
+ 0.01,-0.045;0.023,-0.045;0.035,-0.035];
+ ML=list(M1,M2,M3);
+ Sp=[100,0,100];
+ CC=[0,0,0];
+ end
+ Out1=list()
+ Out2=list()
+ for J=1:length(ML)
+ M=ML(J);
+ N=Sp(J);
+ for K=1:size(M,1)
+ P=M(K,:)
+ Out1($+1)=P
+ end
+ if N>0 then
+ if CC(J)==0 then
+ S=Splinedata(M,"N="+string(N))
+ else
+ S=Splinedata(M,"N="+string(N),"C")
+ end
+ else
+ S=M
+ end;
+ Out2($+1)=S
+ end
+ Out=list(Out1,Out2)
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.bin
new file mode 100644
index 00000000..57730f7f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.sci
new file mode 100755
index 00000000..621f6256
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tabledata.sci
@@ -0,0 +1,130 @@
+// 09.11.26
+// 09.12.06
+// 09.12.25
+// 10.01.12
+// 10.01.13
+// 10.03.28
+// 10.03.30
+// 13.05.03 Domain can be omitted
+
+function Out=Tabledata(varargin)
+// 2013.05.01 Domain is optional.
+ Eps=0.001;
+ Tmp=varargin(1); // 130502 from
+ if type(Tmp)==1
+ Domain=varargin(1);
+ VL=varargin(2);
+ HL=varargin(3);
+ else
+ Domain=[-1,-1];
+ VL=varargin(1);
+ HL=varargin(2);
+ end; // 130502 upto
+ Hsize=Domain(1);
+ SvL=list(0);
+ S=0;
+ for I=1:length(VL)
+ Tmp=VL(I);
+ S=S+Tmp(1);
+ Tmp(1)=S;
+ SvL($+1)=Tmp;
+ end;
+ if Hsize>S
+ SvL($+1)=Hsize;
+ end;
+ Hsize=Op(1,SvL(length(SvL)));
+ Vsize=Domain(2);
+ ShL=list(0);
+ S=0;
+ for I=1:length(HL)
+ Tmp=HL(I);
+ S=S+Tmp(1);
+ Tmp(1)=S;
+ ShL($+1)=Tmp;
+ end;
+ if Vsize>S
+ ShL($+1)=Vsize;
+ end;
+ Vsize=Op(1,ShL(length(ShL)));
+ Marw=0; Mare=0; Mars=0; Marn=0;
+ if length(Domain)>2
+ Marw=Domain(3);
+ Mare=Domain(4);
+ end;
+ if length(Domain)>4
+ Marn=Domain(5);
+ Mars=Domain(6);
+ end;
+ Setwindow([-Marw,Hsize+Mare],[-Mars,Vsize+Marn]);
+ Tmp=Framedata([Eps,Hsize-Eps],[Eps,Vsize-Eps]);
+ Gdata=list(Tmp);
+ Tmp=-Marw;
+ Hdata=list(Listplot([[Tmp,-Mars],[Tmp,Vsize+Marn]]));
+ for I=1:length(SvL) // 10.03.30
+ Data=SvL(I);
+ X=Data(1);
+ if length(Data)==1
+ Y1=0;
+ Y2=Vsize;
+ G=Listplot([X,Y1],[X,Y2]);
+ else
+ G=[];
+ for J=2:2:length(Data)
+ Y1=Vsize-Op(1,ShL(Data(J))); // 10.03.30
+ Y2=Vsize-Op(1,ShL(Data(J+1)));
+ Tmp=Listplot([[X,Y1],[X,Y2]]);
+ G=[G;%inf,%inf;Tmp];
+ end;
+ G=G(2:size(G,1),:);
+ end;
+ Hdata($+1)=G;
+ end;
+ Tmp=Hsize+Mare;
+ Tmp1=Listplot([[Tmp,-Mars],[Tmp,Vsize+Marn]]);
+ Hdata($+1)=Tmp1;
+ Tmp=Vsize+Marn;
+ Vdata=list(Listplot([[-Marw,Tmp],[Hsize+Mare,Tmp]]));
+ for I=1:length(ShL)
+ Data=ShL(I);
+ Y=Vsize-Data(1);
+ if length(Data)==1
+ X1=0;
+ X2=Hsize;
+ G=Listplot([X1,Y],[X2,Y]);
+ else
+ G=[];
+ for J=2:2:length(Data)
+ X1=Op(1,SvL(Data(J))); // 10.03.30
+ X2=Op(1,SvL(Data(J+1)));
+ Tmp=Listplot([X1,Y],[X2,Y]);
+ G=[G;%inf,%inf;Tmp];
+ end;
+ G=G(2:size(G,1),:);
+ end;
+ Vdata($+1)=G;
+ end;
+ Tmp=Listplot([[-Marw,-Mars],[Hsize+Mare,-Mars]]);
+ Vdata($+1)=Tmp;
+ Tmp1=Mixsub(3:(length(Hdata)-2),Hdata);
+ Tmp2=Mixsub(3:(length(Vdata)-2),Vdata);
+ Gdata=Mixjoin(Gdata,Tmp1,Tmp2);
+ Hind=2:(1+length(Tmp1));
+ Vind=(2+length(Tmp1)):(1+length(Tmp1)+length(Tmp2));
+ G=Gdata(1);
+ P1=Ptsw(G); P2=Ptnw(G);
+ Q1=Ptse(G); Q2=Ptne(G);
+ Tmp1=list(Listplot([P1,P2]),Listplot([Q1,Q2]));
+ P1=Ptnw(G); P2=Ptne(G);
+ Q1=Ptsw(G); Q2=Ptse(G);
+ Tmp2=list(Listplot([P1,P2]),Listplot([Q1,Q2]));
+ Tmp3=Framedata();
+ Out=list(Gdata,Hind,Vind,Tmp1,Tmp2,Tmp3);
+endfunction;
+
+function Out=Dividetable(Tb)
+ G=Tb(1);
+ Gw=G(1);
+ Gt=Mixsub(Tb(2),G);
+ Gy=Mixsub(Tb(3),G);
+ Out=list(Gw,Gt,Gy)
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.bin
new file mode 100644
index 00000000..c702d4e8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.sci
new file mode 100755
index 00000000..9b848315
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texcom.sci
@@ -0,0 +1,41 @@
+//
+// 09,12.05
+// 09.12.06
+// 09.12.07
+// 09.12.20
+
+function Texcom(Meirei)
+ global Wfile FID;
+ if Meirei=='\thinlines'
+ Setpen(1);
+ return
+ end
+ if Meirei=='\thicklines'
+ Setpen(2);
+ return
+ end
+ if Meirei=='\Thicklines'
+ Setpen(3);
+ return
+ end;
+
+ if Meirei=='' // 09.12.07
+ Tmp=[];
+ else
+ Tmp=mtlb_findstr(Meirei,'newline');
+ end;
+ if length(Tmp)>0
+ if Wfile=='default'
+ mprintf('%s\n','');
+ else
+ mfprintf(FID,'%s\n','');
+ end;
+ return;
+ end;
+ if Wfile=='default'
+ mprintf('%s%s\n',Meirei,'%');
+ else
+ mfprintf(FID,'%s%s\n',Meirei,'%');
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.bin
new file mode 100644
index 00000000..3f2db49a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.sci
new file mode 100644
index 00000000..2a8b08ca
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texctr.sci
@@ -0,0 +1,15 @@
+//
+// 2010.05.15
+
+function Out=Texctr(N)
+ if type(N)==1
+ Alpha='abcdefghijklmnopqrstuvwxyz';
+ Out='ketpicctr'+part(Alpha,N);
+ else
+ if part(N,1)=='\'
+ Out=part(N,2:length(N));
+ else
+ Out=N;
+ end;
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.bin
new file mode 100644
index 00000000..4bd0517d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.sci
new file mode 100644
index 00000000..8ef93556
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texelse.sci
@@ -0,0 +1,7 @@
+// 10.04.16
+// 10.04.18
+
+function Texelse()
+ Texcom('');
+ Texcom('\else');
+endfunction; \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.bin
new file mode 100644
index 00000000..322cde18
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.sci
new file mode 100644
index 00000000..a3139873
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texend.sci
@@ -0,0 +1,5 @@
+// 01.10.21
+
+function Texend()
+ Closephr();
+endfunction \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.bin
new file mode 100644
index 00000000..ea787159
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.sci
new file mode 100644
index 00000000..ecb7b788
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendfor.sci
@@ -0,0 +1,12 @@
+// 10.04.16
+
+function Texendfor(I)
+ global TEXFORLEVEL TEXFORLAST
+ Last=TEXFORLAST(TEXFORLEVEL);
+ Texcom('');
+ Texcom('\ifnum'+Texthectr(I)+'<'+Last);
+ Texcom('\repeat');
+ Texcom('}');
+ TEXFORLEVEL=TEXFORLEVEL-1;
+ TEXFORLAST=Mixsub(1:(length(TEXFORLAST)-1),TEXFORLAST);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.bin
new file mode 100644
index 00000000..43440fc9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.sci
new file mode 100644
index 00000000..97d32d85
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texendif.sci
@@ -0,0 +1,8 @@
+// 10.04.16
+// 10.04.18
+
+function Texendif()
+ Texcom(''); //
+ Texcom('\fi');
+ Texcom('}');
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.bin
new file mode 100644
index 00000000..69956280
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.sci
new file mode 100644
index 00000000..0c239842
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texfor.sci
@@ -0,0 +1,15 @@
+// 10.04.16
+// 10.05.12
+// 10.10.20 ( available for numeric )
+
+function Texfor(I,First,Last)
+ global TEXFORLEVEL TEXFORLAST
+ TEXFORLEVEL=TEXFORLEVEL+1;
+ Texsetctr(I,'0');
+ Texsetctr(I,string(First)+'-1');
+ Texcom('');
+ Texcom('{');
+ Texcom('\loop');
+ Texsetctr(I,'+1');
+ TEXFORLAST($+1)=string(Last);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.bin
new file mode 100644
index 00000000..66fe8e3c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.sci
new file mode 100644
index 00000000..f661c649
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texforinit.sci
@@ -0,0 +1,7 @@
+// 10.04.18
+
+function Texforinit()
+ global TEXFORLEVEL TEXFORLAST
+ TEXFORLEVEL=0;
+ TEXFORLAST=list();
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.bin
new file mode 100644
index 00000000..52222c34
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.sci
new file mode 100644
index 00000000..8cbae5dc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texif.sci
@@ -0,0 +1,19 @@
+// 10.04.16
+// 10.04.18
+// 10.05.03
+
+function Texif(varargin)
+ Condstr=varargin(1);
+ Tp=0;
+ if length(varargin)>1
+ Tp=varargin(2);
+ end;
+ Texcom('');
+ Texcom('{');
+ if Tp==0
+ Texcom('\ifnum ');
+ else
+ Texcom('\ifdim ');
+ end;
+ Texcom(Condstr+' ');
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.bin
new file mode 100644
index 00000000..d95b41da
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.sci
new file mode 100755
index 00000000..f83cc8c8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texletter.sci
@@ -0,0 +1,44 @@
+// 10.01.07
+
+function Texletter(varargin)
+ global Wfile FID MEMORI;
+ Nargs=length(varargin);
+ for I=1:3:Nargs
+ P=varargin(I);
+ X=P(1);
+ if type(X)==1
+ X=string(X);
+ end;
+ Y=P(2);
+ if type(Y)==1
+ Y=string(Y);
+ end;
+ Houkou=varargin(I+1);
+ Mojiretu=varargin(I+2);
+ Hset=Houkou;
+ Vhoko='c';
+ if mtlb_findstr(Hset,'n')~=[]
+ Vhoko='n';
+ end
+ if mtlb_findstr(Hset,'s')~=[]
+ Vhoko='s';
+ end
+ Hhoko='c';
+ if mtlb_findstr(Hset,'e')~=[]
+ Hhoko='e';
+ end
+ if mtlb_findstr(Hset,'w')~=[]
+ Hhoko='w';
+ end
+ Hoko=Vhoko+Hhoko;
+ CalcWidth(Hoko,Mojiretu);
+ CalcHeight(Hoko,Mojiretu);
+ Tmp='\put('+X+','+Y+'){\hspace*{\Width}';
+ Str=Tmp+'\raisebox{\Height}{'+Mojiretu+'}}%';
+ if Wfile=='default'
+ mprintf('%s\n',Str);
+ else
+ mfprintf(FID,'%s\n',Str);
+ end
+ end
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.bin
new file mode 100644
index 00000000..eec32b1e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.sci
new file mode 100644
index 00000000..b3b9a417
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewcmd.sci
@@ -0,0 +1,20 @@
+// 10.01.21
+
+function Texnewcmd(varargin)
+ Nargs=length(varargin);
+ Str=varargin(1);
+ S='\newcommand{'+Str+'}';
+ if Nargs>1
+ Tmp=string(varargin(2));
+ S=S+'['+Tmp+']';
+ end;
+ if Nargs>2
+ Tmp=varargin(3);
+ if type(Tmp)==1
+ Tmp=string(Tmp);
+ end;
+ S=S+'['+Tmp+']';
+ end;
+ S=S+'{';
+ Texcom(S);
+endfunction \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.bin
new file mode 100644
index 00000000..c724a1fa
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.sci
new file mode 100644
index 00000000..03cabf81
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texnewctr.sci
@@ -0,0 +1,13 @@
+// 10.01.21
+
+function Texnewctr(N)
+ if type(N)==10
+ Str='\newcounter{'+N+'}';
+ Texcom(Str);
+ else
+ for I=N
+ Str='\newcounter{'+Texctr(I)+'}';
+ Texcom(Str);
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.bin
new file mode 100644
index 00000000..a19894a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.sci
new file mode 100644
index 00000000..b8926589
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texrenewcmd.sci
@@ -0,0 +1,20 @@
+// 10.01.21
+
+function Texrenewcmd(varargin)
+ Nargs=length(varargin);
+ Str=varargin(1);
+ S='\renewcommand{'+Str+'}';
+ if Nargs>1
+ Tmp=string(varargin(2));
+ S=S+'['+Tmp+']';
+ end;
+ if Nargs>2
+ Tmp=varargin(3);
+ if type(Tmp)==1
+ Tmp=string(Tmp);
+ end;
+ S=S+'['+Tmp+']';
+ end;
+ S=S+'{';
+ Texcom(S);
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.bin
new file mode 100644
index 00000000..6b59198a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.sci
new file mode 100644
index 00000000..166af676
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texsetctr.sci
@@ -0,0 +1,70 @@
+// 10.01.21
+
+function Texsetctr(Nctr,Opstr)
+ Ctr=Texctr(Nctr);
+ Opstr=Opstr+'%';
+ OperL='+-*/%';
+ Oper='';
+ Va='';
+ Evflg=0;
+ Paflg=0;
+ for I=1:length(Opstr)
+ Tmp=part(Opstr,I);
+ if Tmp=='('
+ Paflg=1;
+ if length(Va)>0
+ Evflg=1;
+ Va=Va+Tmp;
+ end;
+ continue;
+ end;
+ if Tmp==')'
+ Paflg=0;
+ if Evflg>0
+ Va=Va+Tmp;
+ end;
+ continue;
+ end;
+ if Paflg>0
+ Va=Va+Tmp;
+ continue;
+ end;
+ if length(mtlb_findstr(Tmp,OperL))==0
+ Va=Va+Tmp;
+ else
+ if Evflg>0
+ Tmp1=evstr(Va);
+ Va='\value{'+Tmp1+'}';
+ Evflg=0;
+ end;
+ if Oper==''
+ if length(Va)>0
+ Str='\setcounter{'+Ctr+'}{'+Va+'}';
+ Texcom(Str);
+ end;
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='+'
+ Str='\addtocounter{'+Ctr+'}{'+Va+'}';
+ Texcom(Str);
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='-'
+ Str='\addtocounter{'+Ctr+'}{-'+Va+'}';
+ Texcom(Str);
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='*'
+ Str='\multiply\value{'+Ctr+'} by '+Va;
+ Texcom(Str);
+ Oper=Tmp;
+ Va='';
+ elseif Oper=='/'
+ Str='\divide\value{'+Ctr+'} by '+Va;
+ Texcom(Str);
+ Oper=Tmp;
+ Va=''
+ end;
+ end;
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.bin
new file mode 100644
index 00000000..7a1b6b04
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.sci
new file mode 100644
index 00000000..469da91a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texthectr.sci
@@ -0,0 +1,5 @@
+// 2010.02.12
+
+function Out=Texthectr(N)
+ Out='\the'+Texctr(N);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.bin
new file mode 100644
index 00000000..71c3785e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.sci
new file mode 100644
index 00000000..96d1c734
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvalctr.sci
@@ -0,0 +1,5 @@
+// 2010.02.12
+
+function Out=Texvalctr(N)
+ Out='\value{'+Texctr(N)+'}';
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.bin
new file mode 100644
index 00000000..0da12c0f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.sci
new file mode 100644
index 00000000..fc443411
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Texvctr.sci
@@ -0,0 +1,6 @@
+// 10.01.21
+
+function Out=Texvctr(N)
+ Out='\value{'+Texctr(N)+'}';
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.bin
new file mode 100644
index 00000000..8f036e77
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.sci
new file mode 100755
index 00000000..c6ceff89
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Thetadegree.sci
@@ -0,0 +1,7 @@
+// 08.07.11
+
+function Ang=Thetadegree()
+ global THETA;
+ Ang=THETA*180/%pi;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.bin
new file mode 100644
index 00000000..43d2d234
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.sci
new file mode 100755
index 00000000..a7a3fc2d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/ThisVersion.sci
@@ -0,0 +1,5 @@
+function Y=ThisVersion()
+ global THISVERSION
+ Y=THISVERSION
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.bin
new file mode 100644
index 00000000..5e7b9411
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.sci
new file mode 100755
index 00000000..8ef53bd5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Tolist.sci
@@ -0,0 +1,8 @@
+// 10.01.02
+
+function Out=Tolist(LG)
+ Out=list();
+ for I=1:length(LG)
+ Out($+1)=LG(I);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.bin
new file mode 100644
index 00000000..43315b47
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.sci
new file mode 100755
index 00000000..98d69544
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translate3data.sci
@@ -0,0 +1,36 @@
+// 08.08.15
+// 15.04.12
+
+function Out=Translate3data(varargin)
+ Nargs=length(varargin);
+ Pd3=varargin(1);
+ Pd3=Flattenlist(Pd3); // 15.04.12
+ Mv=varargin(2);
+ if type(Mv)==1 & length(Mv)==1
+ Mv=[varargin(2),varargin(3),varargin(4)];
+ end;
+// if Mixtype(Pd3)==1 // 15.04.12 from
+// Pd3=MixS(Pd3);
+// elseif Mixtype(Pd3)==3
+// Tmp=[];
+// for I=1:Mixlength(Pd3)
+// Tmp=Mixjoin(Tmp,Mixop(I,Pd3));
+// end;
+// Pd3=Tmp;
+// end;
+ Out=[];
+ for I=1:length(Pd3)
+ PD=Op(I,Pd3);
+ Ans=[];
+ for J=1:size(PD,1)
+ P=PD(J,:);
+ Tmp=P+Mv;;
+ Ans=[Ans;Tmp];
+ end;
+ Out=Mixadd(Out,Ans);
+ end;
+ if length(Out)==1
+ Out=Op(1,Out);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.bin
new file mode 100644
index 00000000..9b27594a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.sci
new file mode 100755
index 00000000..a2e31085
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Translatedata.sci
@@ -0,0 +1,42 @@
+// 08.05.25 Koshikawa
+// 08.09.20
+// 15.04.12
+
+function OutL=Translatedata(varargin)
+ Nargs=length(varargin);
+ ML=varargin(1);
+ ML=Flattenlist(ML);
+ Tmp=varargin(2);
+ if type(Tmp)==1 & length(Tmp)>1
+ A=Tmp(1); B=Tmp(2);
+ else
+ A=Tmp;
+ if Nargs>=3
+ B=varargin(3);
+ else
+ B=0;
+ end;
+ end;
+ OutL=[];
+ for N=1:length(ML)
+ GL=Op(N,ML);
+ Out=[];
+ for I=1:size(GL,1)
+ Tmp=GL(I,:);
+ X1=Tmp(1);
+ Y1=Tmp(2);
+ if Tmp==[%inf,%inf]
+ X2=X1;
+ Y2=Y1;
+ else
+ X2=X1+A;
+ Y2=Y1+B;
+ end
+ Out=[Out;X2,Y2];
+ end;
+ OutL=Mixadd(OutL,Out);
+ end;
+ if length(OutL)==1
+ OutL=Op(1,OutL);
+ end;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.bin
new file mode 100644
index 00000000..838fdc91
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.sci
new file mode 100755
index 00000000..b4705593
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Trunc.sci
@@ -0,0 +1,10 @@
+// 08.05.20
+
+function N=Trunc(X)
+ if X>=0
+ N=floor(X)
+ else
+ N=ceil(X)
+ end
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.bin
new file mode 100644
index 00000000..60e56331
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.sci
new file mode 100755
index 00000000..74910ceb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Unscaling.sci
@@ -0,0 +1,12 @@
+function Out=Unscaling(G)
+ global LOGX LOGY SCALEX SCALEY;
+ GLg=[G(:,1)/SCALEX,G(:,2)/SCALEY];
+ Out=GLg;
+ if LOGX==1
+ Out=[10^(GLg(:,1)),GLg(:,2)];
+ end;
+ if LOGY==1
+ Out=[GLg(:,1),10^(GLg(:,2))];
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.bin
new file mode 100644
index 00000000..b6a902cc
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.sci
new file mode 100755
index 00000000..4bc7684c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa.sci
@@ -0,0 +1,11 @@
+function L=Vecnagasa(varargin)
+ PA=varargin(1);
+ if length(varargin)>1
+ PB=varargin(2);
+ else
+ PB=zeros(1,length(PA));
+ end
+ Tmp=PB-PA;
+ L=sqrt(Tmp*Tmp');
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.bin
new file mode 100644
index 00000000..3118062d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.sci
new file mode 100755
index 00000000..527d3834
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vecnagasa2.sci
@@ -0,0 +1,11 @@
+function L=Vecnagasa2(varargin)
+ PA=varargin(1);
+ if length(varargin)>1
+ PB=varargin(2);
+ else
+ PB=[0,0];
+ end
+ Tmp=PB-PA;
+ L=Tmp*Tmp';
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.bin
new file mode 100644
index 00000000..1692f2d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.sci
new file mode 100755
index 00000000..44bde517
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Viewfrom.sci
@@ -0,0 +1,21 @@
+// 08.10.26
+
+function Out=Viewfrom(varargin)
+ global THETA PHI
+ Nargs=length(varargin);
+ Nvec=varargin(1);
+ GL=varargin(2);
+ Flg=1;
+ if Nargs>=3
+ Flg=varargin(3);
+ end;
+ Theta=THETA; Phi=PHI;
+ Tmp=Rotate3data(GL,Nvec,[-1,0,0]);
+ THETA=%pi/2; PHI=0;
+ Out=Projpara(Tmp);
+ if Flg==1
+ Windisp(Out);
+ end;
+ THETA=Theta; PHI=Phi;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.bin
new file mode 100644
index 00000000..8410cc5f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.sci
new file mode 100644
index 00000000..de320918
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Vtickmark.sci
@@ -0,0 +1,144 @@
+// 08.05.26 Debugged
+// 09.12.25
+// 11.04.13 debugged ( [a,b] )
+// 14.03.05 MARKLEN
+
+function Vtickmark(varargin)
+ global Wfile FID MARKLEN GENTEN YMIN YMAX;
+ Nargs=length(varargin);
+ ArgsL=list(varargin(1:Nargs));
+ if type(Op(1,ArgsL))==10
+ Str=Op(1,ArgsL);
+ Tmp=mtlb_findstr(Str,'m');
+ if Tmp~=[]
+ I=Tmp(1);
+ else
+ I=0;
+ end
+ Tmp=mtlb_findstr(Str,'n');
+ if Tmp~=[]
+ J=Tmp(1);
+ else
+ J=0;
+ end
+ Tmp=mtlb_findstr(Str,'r');
+ if Tmp~=[]
+ K=Tmp(1);
+ else
+ K=0;
+ end;
+ if K>0
+ Tmp=ascii(Str);
+ S=char(Tmp(K+1:length(Tmp)));
+ R=msscanf(S,'%f');
+ if length(R)==0
+ R=1;
+ end
+ else
+ R=1;
+ K=length(Str)+1;
+ end
+ if J>0 then
+ Tmp=ascii(Str);
+ S=char(Tmp(J+1:K-1));
+ if S==[]
+ S='';
+ end;
+ Dn=msscanf(S,'%d');
+ if length(Dn)==0
+ Dn=1;
+ end
+ else
+ Dn=1000;
+ J=length(Str)+1;
+ end
+ Tmp=ascii(Str);
+ S=char(Tmp(I+1:J-1));
+ if S==[]
+ S='';
+ end
+ Dm=msscanf(S,'%f');
+ if length(Dm)==0
+ Dm=1;
+ end
+ ArgsL=list();
+ for I=1:floor((YMAX-GENTEN(2))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(Tmp(1:k-1));
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ for I=-1:-1:ceil((YMIN-GENTEN(2))/Dm)
+ ArgsL($+1)=I*Dm;
+ if I-floor(I/Dn)*Dn==0
+ Str=string(I*Dm*R);
+ K=length(Str);
+ Tmp=ascii(Str);
+ if char(Tmp(K))=='.'
+ Str=char(1:K-1);
+ end
+ ArgsL($+1)=Str;
+ end
+ end
+ end
+ MemoriList=list();
+ Memori=list();
+ for N=1:length(ArgsL)
+ Dt=Op(N,ArgsL);
+ if type(Dt)==1 & length(Dt)>1
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(Dt(1),Dt(2));
+ continue
+ end
+ if type(Dt)==10
+ Memori($+1)=Dt;
+ else
+ if length(Memori)>0
+ MemoriList($+1)=Memori;
+ end
+ Memori=list(GENTEN(1),Dt);
+ end
+ end
+ MemoriList($+1)=Memori;
+ for N=1:length(MemoriList)
+ Dt=MemoriList(N);
+ Ndt=length(Dt);
+ X=Op(1,Dt);
+ Y=Op(2,Dt);
+ Tmp=Doscaling([X,Y]);
+ X=Tmp(1);
+ Y=Tmp(2);
+ Moji=Op(Ndt,Dt);
+ Tmp1=Unscaling([X+MARKLEN,Y]);
+ Tmp2=Unscaling([X-MARKLEN,Y]);
+ Fd=Listplot([Tmp1,Tmp2]);
+ Drwline(Fd);
+ if Ndt==3
+ Tmp=Unscaling([X-MARKLEN,Y]);
+ Expr(Tmp,'w',Moji);
+ end
+ if Ndt==4
+ Houkou=Op(3,Dt);
+ if mtlb_findstr(Houkou,'w')~=[]
+ Tmp=Unscaling([X-MARKLEN,Y]);
+ Expr(Tmp,Houkou,Moji);
+ else
+ Tmp=Unscaling([X+MARKLEN,Y]);
+ Expr(Tmp,Houkou,Moji);
+ end
+ end
+ if Wfile=='default'
+ mprintf('%s\n','%');
+ else
+ mfprintf(FID,'%s\n','%');
+ end
+ end
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.bin
new file mode 100644
index 00000000..cfd85f0b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.sci
new file mode 100755
index 00000000..baa03e73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Windisp.sci
@@ -0,0 +1,110 @@
+// 08.05.16 Point style
+// 08.05.17 MixL
+// 08.05.19 Changed
+// 08.05.21 Eps=0.1
+// 08.08.16 square
+// 09.11.04 window option
+// 09.11.07 gcf used
+// 09.12.25
+// 10.01.01
+// 10.01.09 ' '
+// 10.01.10 drw one by one
+// 10.02.08 revised for the case "a"
+// 10.02.13 square debugged
+// 10.02.21 square debugged (2)
+// 10.02.23 case of mixlength=3
+// 10.04.10 Origin bug
+// 11.05.29 Flattenlist used
+
+function Windisp(varargin)
+ global XMIN XMAX YMIN YMAX GENTEN
+ Nargs=length(varargin);
+ Tp=varargin(Nargs);
+ Ch='';
+ if type(Tp)~=10
+ scf();
+ else
+ Ch=part(Tp,1);
+ Nargs=Nargs-1;
+ select Ch;
+ case 'N' then scf();
+ case 'n' then scf();
+ case 'C' then Tmp=gcf();clf('clear');
+ case 'c' then Tmp=gcf();clf('clear');
+ case 'A' then Tmp=gcf();
+ case 'a' then Tmp=gcf();
+ else
+ Tmp1=part(Tp,length(Tp));
+ Tmp2=part(Tp,1:length(Tp)-1);
+ Tmp3=evstr(Tmp2);
+ scf(Tmp3);
+ if Tmp1=='C'|Tmp1=='c'
+ clf('clear');
+ end;
+ end;
+ end;
+ Eps=0.1;
+ Tmp=Doscaling([XMIN,YMIN]);
+ Xm=Tmp(1); Ym=Tmp(2);
+ Tmp=Doscaling([XMAX,YMAX]);
+ XM=Tmp(1); YM=Tmp(2);
+ C=[(Xm+XM)/2,(Ym+YM)/2];
+ H=max(XM-Xm,YM-Ym)/2;
+ R1=C-H; R2=C+H;
+ R1=Unscaling(R1);
+ R2=Unscaling(R2);
+ if (Ch~='A')&(Ch~='a')
+ Tmp1=R1(1);
+ Tmp2=R2(1);
+ Tmp3=R1(2);
+ Tmp4=R2(2);
+ square(Tmp1,Tmp3,Tmp2,Tmp4);//
+ P=Framedata([XMIN,XMAX],[YMIN,YMAX]);
+ Tmp1=P(:,1)';
+ Tmp2=P(:,2)';
+ plot2d(Tmp1,Tmp2);
+ PtO=GENTEN; // 10.04.10
+ if (PtO(2)>=YMIN) & (PtO(2)<=YMAX) //
+ P=Listplot([XMIN,PtO(2)],[XMAX,PtO(2)]);
+ Tmp1=P(:,1)';
+ Tmp2=P(:,2)';
+ plot2d(Tmp1,Tmp2,style=[3]);
+ end;
+ if (PtO(1)>=XMIN) & (PtO(1)<=XMAX)
+ P=Listplot([PtO(1),YMIN],[PtO(1),YMAX]);
+ Tmp1=P(:,1)';
+ Tmp2=P(:,2)';
+ plot2d(Tmp1,Tmp2,style=[3]);
+ end;
+ end;
+ for I=1:Nargs
+ Tmp=varargin(I);
+ Pdata=Flattenlist(Tmp); //
+ for II=1:length(Pdata)
+ Tmp=Op(II,Pdata);
+ P=MakeCurves(Tmp,0);
+ P=Unscaling(P);
+ Ndm=Dataindex(P);
+ for J=1:size(Ndm,1)
+ Q=P(Ndm(J,1):Ndm(J,2),:)
+ if size(Q,1)==1
+ for K=1:2:length(Q)
+ plot2d(Q(K),Q(K+1),style=[-3]);
+ end
+ else
+ Tmp1=Q(:,1)';
+ Tmp2=Q(:,2)';
+ plot2d(Tmp1,Tmp2);
+ end
+ end
+ end
+// for II=2:length(Pdata)
+// Tmp=Op(II,Pdata);
+// Windisp(Tmp,'a');
+// end;
+ end
+ for I=2:Nargs
+ Pdata=varargin(I);
+ Windisp(Pdata,'a');
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.bin
new file mode 100644
index 00000000..329b7bae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.sci
new file mode 100755
index 00000000..24920661
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WireHiddenData.sci
@@ -0,0 +1,7 @@
+// 08.12.11
+
+function Out=WireHiddenData()
+ global HIDDENWIREDATA
+ Out=HIDDENWIREDATA;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.bin
new file mode 100644
index 00000000..cd12acae
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.sci
new file mode 100755
index 00000000..d62acaf3
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WirePt.sci
@@ -0,0 +1,8 @@
+// 08.09.15
+// 09.09.10 registered
+
+function Out=WirePt()
+ global WIREPT
+ Out=WIREPT;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.bin
new file mode 100644
index 00000000..74ac71e0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.sci
new file mode 100755
index 00000000..b46e359c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wireparadata.sci
@@ -0,0 +1,120 @@
+// 08.09.15
+// 08.10.10
+// 08.10.11
+// 08.10.15
+// 08.10.21
+// 08.10.25
+// 09.09.10
+// 10.02.16 Eps
+// 17.05.07 Eps changed
+
+function FsL=Wireparadata(varargin)
+ global WIREPT PARTITIONPT HIDDENDATA HIDDENWIREDATA
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpara(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=[0.05,1]; //
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DuL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ WIREPT=[];
+ HIDDENWIREDATA=[];
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(2)');//17.05.07
+ FkL=Cuspsplitpara(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(1)');//17.05.07
+ FkL=Cuspsplitpara(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpara(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpara2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.bin
new file mode 100644
index 00000000..7ac1f185
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.sci
new file mode 100755
index 00000000..11def80c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirepersdata.sci
@@ -0,0 +1,120 @@
+// 08.09.21
+// 08.10.10
+// 08.10.11
+// 08.10.15
+// 08.10.21
+// 08.10.25
+// 09.09.10
+// 10.02.16 Eps
+// 17.05.07 Eps changed
+
+function FsL=Wirepersdata(varargin)
+ global WIREPT PARTITIONPT HIDDENDATA HIDDENWIREDATA
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpers(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=[0.05,1]; //
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Tmp=Mixop(2,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Xname=part(Tmp,1:K-1);
+ Tmp=Mixop(3,Fd);
+ K=mtlb_findstr(Tmp,'=');
+ Yname=part(Tmp,1:K-1);
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DuL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ WIREPT=[];
+ HIDDENWIREDATA=[];
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(2)');//17.05.07
+ FkL=Cuspsplitpers(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(1)');
+ FkL=Cuspsplitpers(Tmp,Fd,Eps(1)); //
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ Tmp=Projpers(Fk);
+ Par=Partitionseg(Tmp,Fbdy,Eps(1),Eps2); //17.05.07
+ if Mixlength(PARTITIONPT)>2
+ for K=2:Mixlength(PARTITIONPT)
+ Tmp1=Mixop(K,PARTITIONPT);
+ WIREPT=Mixadd(WIREPT,Tmp1);
+ end;
+ end;
+ Fs=Nohiddenpers2(Par,Fk,Fd,1,Np,Eps);
+ HIDDENWIREDATA=Mixjoin(HIDDENWIREDATA,HIDDENDATA);
+ FsL=Mixjoin(FsL,Fs);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.bin
new file mode 100644
index 00000000..646215a8
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.sci
new file mode 100755
index 00000000..59c5ba54
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawparadata.sci
@@ -0,0 +1,86 @@
+// 08.09.15
+// 08.10.10
+// 08.10.21
+// 09.09.10
+
+function FsL=Wirerawparadata(varargin)
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpara(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=0.05;
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DuL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(1)');
+ FkL=Cuspsplitpara(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(2)');
+ FkL=Cuspsplitpara(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.bin
new file mode 100644
index 00000000..28eecf7a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.sci
new file mode 100755
index 00000000..d168b4f7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Wirerawpersdata.sci
@@ -0,0 +1,86 @@
+// 08.09.21
+// 08.10.10
+// 08.10.21
+// 09.09.10
+
+function FsL=Wirerawpersdata(varargin)
+ timer();
+ Nargs=length(varargin);
+ Fbdy=Projpers(varargin(1));
+ Fd=varargin(2); N=3;
+ FdL=Fullformfunc(Fd);
+ Fxy=Mixop(1,FdL);
+ Tmp=Mixop(5,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Uname=part(Tmp,1:K-1);
+ Urg=evstr(part(Tmp,K+1:length(Tmp)));
+ Tmp=Mixop(6,FdL);
+ K=mtlb_findstr(Tmp,'=');
+ Vname=part(Tmp,1:K-1);
+ Vrg=evstr(part(Tmp,K+1:length(Tmp)));
+ DuL=varargin(N);
+ DvL=varargin(N+1);
+ N=N+2;
+ Np=[50,50];
+ if Nargs>=N
+ Np=varargin(N);
+ if type(Np)==1 & length(Np)==1
+ Np=[Np,Np];
+ end;
+ end
+ Eps=0.05;
+ if Nargs>=N+1
+ Eps=varargin(N+1);
+ end;
+ Eps2=0.2;
+ if Nargs>=N+2
+ Eps2=varargin(N+2);
+ end;
+ Umin=Urg(1); Umax=Urg(2);
+ Vmin=Vrg(1); Vmax=Vrg(2);
+ if type(DuL)==10
+ DuL=evstr(DuL);
+ elseif length(DvL)==1
+ Tmp=(Umax-Umin)/(DuL+1);
+ Tmp1=Umin+Tmp;
+ Tmp2=Umin+DuL*Tmp
+ DuL=[Tmp1:Tmp:Tmp2];
+ end;
+ if type(DvL)==10
+ DvL=evstr(DvL);
+ elseif length(DvL)==1
+ Tmp=(Vmax-Vmin)/(DvL+1);
+ Tmp1=Vmin+Tmp;
+ Tmp2=Vmin+DvL*Tmp
+ DvL=[Tmp1:Tmp:Tmp2];
+ end;
+ Fbdxy=Makexybdy(Fd,Np);
+ FsL=[];
+ for I=1:length(DuL)
+ U=DuL(I);
+ Tmp=Paramplot('[U,V]','V=[Vmin,Vmax]','N=Np(1)');
+ FkL=Cuspsplitpers(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Nx=Mixlength(FsL);
+ if Nx>0
+ Mixdisp(Mix(Uname,'-data=',1,':',Nx,' Time=',timer()));
+ end;
+ for I=1:length(DvL)
+ V=DvL(I);
+ Tmp=Paramplot('[U,V]','U=[Umin,Umax]','N=Np(2)');
+ FkL=Cuspsplitpers(Tmp,Fd,Eps);
+ for J=1:Mixlength(FkL)
+ Fk=Mixop(J,FkL);
+ FsL=Mixadd(FsL,Fk);
+ end;
+ end;
+ Ny=Mixlength(FsL)-Nx;
+ if Ny>0
+ Mixdisp(Mix(Vname,'-data=',Nx+1,':',Nx+Ny,' Time=',timer()));
+ end;
+endfunction;
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.bin
new file mode 100644
index 00000000..baa9001a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.sci
new file mode 100644
index 00000000..059ac6d5
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WriteOutData.sci
@@ -0,0 +1,55 @@
+// s:2014.10.10
+// e:2014.12.14 ( for 3d )
+// e:2015.10.29 ( endmark //// )
+
+function WriteOutData(varargin)
+ global Fnameout
+ Nargs=length(varargin);
+ if modulo(Nargs,2)==0 then
+ Fname=Fnameout;
+ Nst=1;
+ else
+ Fname=varargin(1);
+ Nst=2;
+ end;
+ Fid=mopen(Fname,'w');
+ for N=Nst:2:Nargs
+ Gname=varargin(N);
+ mfprintf(Fid,'%s\n',Gname+"//");
+ Gdata=varargin(N+1);
+ Gdata=Flattenlist(Gdata);
+ for K=1:length(Gdata)
+ GL=Dividegraphics(Gdata(K));
+ for J=1:length(GL)
+ mfprintf(Fid,'%s\n',"start//");
+ Str="";
+ for I=1:Numptcrv(GL(J))
+ Pt=Ptcrv(I,GL(J));
+ if length(Str)>0 then
+ Str=Str+","
+ end;
+ if length(Pt)<3 // 2014.12.14
+ Str=Str+msprintf("[%5.4f,%5.4f]",Pt(1),Pt(2));
+ else
+ Str=Str+msprintf("[%5.4f,%5.4f,%5.4f]",Pt(1),Pt(2),Pt(3));
+ end;
+ if length(Str)>80 then
+ mfprintf(Fid,'%s\n',"["+Str+"]//");
+ Str="";
+ end
+ end
+ if length(Str)>0 then
+ mfprintf(Fid,'%s\n',"["+Str+"]//");
+ end
+ if N==Nargs-1 & K==length(Gdata) & J==length(GL) then // 15.10.29
+// mfprintf(Fid,'%s\n',"end////");
+ mfprintf(Fid,'%s\n',"end//");
+ else
+ mfprintf(Fid,'%s\n',"end//");
+ end;
+ end
+ end
+ end
+ mfprintf(Fid,'%s\n',"//");
+ mclose(Fid);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.bin
new file mode 100644
index 00000000..734a3c14
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.sci
new file mode 100644
index 00000000..ae51bf8b
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writeobjpoint.sci
@@ -0,0 +1,12 @@
+// s : 2014.06.22
+
+function Out=Writeobjpoint(P)
+ global OBJFMT OBJSCALE NPOINT;
+ X=sprintf(OBJFMT,P(1)*OBJSCALE);
+ Y=sprintf(OBJFMT,P(2)*OBJSCALE);
+ Z=sprintf(OBJFMT,P(3)*OBJSCALE);
+ Str="v "+X+" "+Y+" "+Z;
+ Printobjstr(Str)
+ NPOINT=NPOINT+1
+ Out=NPOINT;
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.bin
new file mode 100644
index 00000000..5e4a47e2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.sci
new file mode 100644
index 00000000..51a13884
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Writetextdata.sci
@@ -0,0 +1,47 @@
+// 2010.04.27
+
+function Writetextdata(varargin)
+ Fname=varargin(1);
+ Mt=varargin(2);
+ D=-1;
+ for I=3:length(varargin)
+ Tmp=varargin(I);
+ if mtlb_findstr(Tmp,'=')~=[]
+ execstr(Tmp);
+ end;
+ end;
+ Str='';
+ for J=1:size(Mt,2)
+ Str=Str+'x'+string(J);
+ if J<size(Mt,2)
+ Str=Str+',';
+ end;
+ end;
+ if Fname~=''
+ Fid=mopen(Fname,'w');
+ mfprintf(Fid,'%s\n',Str);
+ else
+ mprintf('%s\n',Str);
+ end;
+ for I=1:size(Mt,1)
+ Str='';
+ for J=1:size(Mt,2)
+ Dt=Mt(I,J);
+ if Dt==%inf
+ Dt=D;
+ end;
+ Str=Str+string(Dt);
+ if J<size(Mt,2)
+ Str=Str+',';
+ end;
+ end;
+ if Fname~=''
+ mfprintf(Fid,'%s\n',Str);
+ else
+ mprintf('%s\n',Str);
+ end;
+ end;
+ if Fname~=''
+ mclose(Fid);
+ end;
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.bin
new file mode 100644
index 00000000..4b55a62a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.sci
new file mode 100644
index 00000000..60d73ef7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/WritetoCindy.sci
@@ -0,0 +1,42 @@
+// s:2014.09.16
+
+function WritetoCindy(varargin)
+ global Fnametxt
+ GnameV=list();
+ for J=1:length(varargin)
+ Tmp=varargin(J);
+ for K=1:size(Tmp,2)
+ GnameV($+1)=Tmp(1,K);
+ end
+ end;
+ Fid=mopen(Fnametxt,'w');
+ for Nv=1:length(GnameV)
+ Gname=GnameV(Nv);
+ Tmp=evstr(Gname);
+ GL=Dividegraphics(Tmp);
+ Lnst="";
+ for J=1:length(GL)
+ G=GL(J);
+ Gn=Gname+"No"+string(J);
+ mfprintf(Fid,'%s\n',Gn+"=[];//");
+ for K=1:Numptcrv(G)
+ Pt=Ptcrv(K,G);
+ if length(Lnst)==0
+ Lnst=Gn+"=concat("+Gn+",[";
+ end;
+ Tmp=msprintf("[%6.4f,%6.4f]",Pt(1),Pt(2));
+ Lnst=Lnst+Tmp;
+ if length(Lnst)>80 | K==Numptcrv(G)
+ Lnst=Lnst+"]);//";
+ mfprintf(Fid,'%s\n',Lnst);
+ Lnst="";
+ else
+ Lnst=Lnst+",";
+ end;
+ end;
+ Str="Goutdatalist=Append(Goutdatalist,"+Gn+");//";
+ mfprintf(Fid,'%s\n',Str);
+ end;
+ end;
+ mclose(Fid);
+endfunction;
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.bin
new file mode 100644
index 00000000..42261931
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.sci
new file mode 100755
index 00000000..28ab28ce
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmax.sci
@@ -0,0 +1,5 @@
+function Y=Xmax()
+ global XMAX
+ Y=XMAX;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.bin
new file mode 100644
index 00000000..aff6ce0e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.sci
new file mode 100755
index 00000000..e18e83d7
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xmin.sci
@@ -0,0 +1,5 @@
+function Y=Xmin()
+ global XMIN
+ Y=XMIN;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.bin
new file mode 100644
index 00000000..c10e835a
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.sci
new file mode 100755
index 00000000..b2118c90
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzax3data.sci
@@ -0,0 +1,14 @@
+// 08.07.11
+
+function Out=Xyzax3data(Xrange,Yrange,Zrange)
+ J=mtlb_findstr(Xrange,'=');
+ Tmp=evstr(part(Xrange,J+1:length(Xrange)));
+ Px=[Tmp(1),0,0]; Qx=[Tmp(2),0,0];
+ J=mtlb_findstr(Yrange,'=');
+ Tmp=evstr(part(Yrange,J+1:length(Yrange)));
+ Py=[0,Tmp(1),0]; Qy=[0,Tmp(2),0];
+ J=mtlb_findstr(Zrange,'=');
+ Tmp=evstr(part(Zrange,J+1:length(Zrange)));
+ Pz=[0,0,Tmp(1)]; Qz=[0,0,Tmp(2)];
+ Out=MixS(Spaceline([Px,Qx]),Spaceline([Py,Qy]),Spaceline([Pz,Qz]));
+endfunction
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.bin
new file mode 100644
index 00000000..58069271
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.sci
new file mode 100755
index 00000000..b833802d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxparaname.sci
@@ -0,0 +1,71 @@
+// 08.07.11
+// 09.09.18
+
+function Kekka=Xyzaxparaname(varargin)
+ global MilliIn;
+ Nargs=length(varargin);
+ Eps=10.0^(-6);
+ Dr=0.19*1000/2.54/MilliIn;
+ Tmp=varargin(Nargs);
+ if Nargs>1 & type(Tmp)==1
+ Dr=Dr*Tmp;
+ Nargs=Nargs-1;
+ end;
+ if type(varargin(1))==10
+ Xrange=varargin(1); Yrange=varargin(2); Zrange=varargin(3);
+ J=mtlb_findstr(Xrange,'=');
+ Xname=part(Xrange,1:J-1);
+ Tmp=evstr(part(Xrange,J+1:length(Xrange)));
+ Px=[Tmp(1),0,0]; Qx=[Tmp(2),0,0];
+ J=mtlb_findstr(Yrange,'=');
+ Yname=part(Yrange,1:J-1);
+ Tmp=evstr(part(Yrange,J+1:length(Yrange)));
+ Py=[0,Tmp(1),0]; Qy=[0,Tmp(2),0];
+ J=mtlb_findstr(Zrange,'=');
+ Zname=part(Zrange,1:J-1);
+ Tmp=evstr(part(Zrange,J+1:length(Zrange)));
+ Pz=[0,0,Tmp(1)]; Qz=[0,0,Tmp(2)];
+ else
+ Data=varargin(1);
+ Xname='x'; Yname='y'; Zname='z';
+ if Nargs>1
+ if varargin(2)~=''
+ Xname=varargin(2);
+ end;
+ if varargin(3)~=''
+ Yname=varargin(3);
+ end;
+ if varargin(4)~=''
+ Zname=varargin(4);
+ end;
+ end;
+ Tmp=Mixop(1,Data);
+ Px=Tmp(1,:); Qx=Tmp(2,:);
+ Tmp=Mixop(2,Data);
+ Py=Tmp(1,:) ;
+ Qy=Tmp(2,:);
+ Tmp=Mixop(3,Data);
+ Pz=Tmp(1,:);
+ Qz=Tmp(2,:);
+ end;
+ Ph=Parapt(Px); Qh=Parapt(Qx); R=Vecnagasa(Ph,Qh);
+ Kekka=[];
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Xname);
+ end
+ Ph=Parapt(Py); Qh=Parapt(Qy); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Yname);
+ end;
+ Ph=Parapt(Pz); Qh=Parapt(Qz); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Zname);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.bin
new file mode 100644
index 00000000..9bafd8a9
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.sci
new file mode 100755
index 00000000..d9c1c7df
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Xyzaxpersname.sci
@@ -0,0 +1,72 @@
+// 08.08.14
+// 08.08.15
+// 09.09.18
+
+function Kekka=Xyzaxpersname(varargin)
+ global MilliIn;
+ Eps=10.0^(-6);
+ Nargs=length(varargin);
+ Dr=0.19*1000/2.54/MilliIn;
+ Tmp=varargin(Nargs);
+ if Nargs>1 & type(Tmp)==1
+ Dr=Dr*Tmp;
+ Nargs=Nargs-1;
+ end;
+ if type(varargin(1))==10
+ Xrange=varargin(1); Yrange=varargin(2); Zrange=varargin(3);
+ J=mtlb_findstr(Xrange,'=');
+ Xname=part(Xrange,1:J-1);
+ Tmp=evstr(part(Xrange,J+1:length(Xrange)));
+ Px=[Tmp(1),0,0]; Qx=[Tmp(2),0,0];
+ J=mtlb_findstr(Yrange,'=');
+ Yname=part(Yrange,1:J-1);
+ Tmp=evstr(part(Yrange,J+1:length(Yrange)));
+ Py=[0,Tmp(1),0]; Qy=[0,Tmp(2),0];
+ J=mtlb_findstr(Zrange,'=');
+ Zname=part(Zrange,1:J-1);
+ Tmp=evstr(part(Zrange,J+1:length(Zrange)));
+ Pz=[0,0,Tmp(1)]; Qz=[0,0,Tmp(2)];
+ else
+ Data=varargin(1);
+ Xname='x'; Yname='y'; Zname='z';
+ if Nargs>1
+ if varargin(2)~=''
+ Xname=varargin(2);
+ end;
+ if varargin(3)~=''
+ Yname=varargin(3);
+ end;
+ if varargin(4)~=''
+ Zname=varargin(4);
+ end;
+ end;
+ Tmp=Mixop(1,Data);
+ Px=Tmp(1,:); Qx=Tmp(2,:);
+ Tmp=Mixop(2,Data);
+ Py=Tmp(1,:) ;
+ Qy=Tmp(2,:);
+ Tmp=Mixop(3,Data);
+ Pz=Tmp(1,:);
+ Qz=Tmp(2,:);
+ end;
+ Ph=Perspt(Px); Qh=Perspt(Qx); R=Vecnagasa(Ph,Qh);
+ Kekka=[];
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Xname);
+ end
+ Ph=Perspt(Py); Qh=Perspt(Qy); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Yname);
+ end;
+ Ph=Perspt(Pz); Qh=Perspt(Qz); R=Vecnagasa(Ph,Qh);
+ if R>Eps
+ Ch=Qh+Dr/R*(Qh-Ph);
+ Kekka=Mixadd(Kekka,Pointdata(Ch));
+ Expr(Ch,'c',Zname);
+ end;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.bin
new file mode 100644
index 00000000..dd606856
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.sci
new file mode 100755
index 00000000..0a835534
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymax.sci
@@ -0,0 +1,5 @@
+function Y=Ymax()
+ global YMAX
+ Y=YMAX;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.bin
new file mode 100644
index 00000000..e990681f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.sci
new file mode 100755
index 00000000..73d0d261
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Ymin.sci
@@ -0,0 +1,5 @@
+function Y=Ymin()
+ global YMIN
+ Y=YMIN;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.bin
new file mode 100644
index 00000000..acd2edd0
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.sci
new file mode 100755
index 00000000..5c237179
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zparapt.sci
@@ -0,0 +1,8 @@
+// 08.07.11
+
+function Out=Zparapt(P)
+ global PHI THETA;
+ x=P(1); y=P(2); z=P(3);
+ Out=x*cos(PHI)*sin(THETA)+y*sin(PHI)*sin(THETA)+z*cos(THETA);
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.bin b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.bin
new file mode 100644
index 00000000..76e4408e
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.bin
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.sci b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.sci
new file mode 100755
index 00000000..13601556
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/Zperspt.sci
@@ -0,0 +1,20 @@
+// 08.08.12
+// 10.01.02
+
+function X3=Zperspt(P)
+
+ global FocusPoint EyePoint
+
+ Tmp=P-FocusPoint;
+ X1=Tmp(1); Y1=Tmp(2); Z1=Tmp(3);
+ Tmp=EyePoint-FocusPoint;
+ E1=Tmp(1); F1=Tmp(2); G1=Tmp(3);
+ Ca=E1/sqrt(E1^2+F1^2);
+ Sa=F1/sqrt(E1^2+F1^2);
+ X2=X1*Ca+Y1*Sa; Y2=-X1*Sa+Y1*Ca; Z2=Z1;
+ E2=E1*Ca+F1*Sa; F2=-E1*Sa+F1*Ca; G2=G1;
+ Cb=E2/sqrt(E2^2+G2^2);
+ Sb=G2/sqrt(E2^2+G2^2);
+ X3=X2*Cb+Z2*Sb;
+endfunction
+
diff --git a/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/lib b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/lib
new file mode 100644
index 00000000..3083cb73
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/ketpicscifiles6/lib
@@ -0,0 +1,344 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<scilablib name="ketpicsciL6">
+ <macro name="Addcounter" file="Addcounter.bin" md5="f7a17da511ba9fdd3cf4cdaf83f3d78c"/>
+ <macro name="Anglemark" file="Anglemark.bin" md5="0e984414d47cb604faef41ae93390dcb"/>
+ <macro name="Arrowdata" file="Arrowdata.bin" md5="b39db1a6340e09c9dfaa3fbb4c3777f1"/>
+ <macro name="Arrowhead" file="Arrowhead.bin" md5="0b0bc5478ce8afeb47770d9add192560"/>
+ <macro name="Arrowheaddata" file="Arrowheaddata.bin" md5="3c06f276e57945b3d54e11e39a9e9435"/>
+ <macro name="Arrowline" file="Arrowline.bin" md5="e15854f9c5c640cee8667f6128023620"/>
+ <macro name="Assign" file="Assign.bin" md5="c8d1390433c0a317d199f5491669e988"/>
+ <macro name="Assignadd" file="Assignadd.bin" md5="d24d31a4cfd1dc707c51c51ff9cdf364"/>
+ <macro name="Assignrep" file="Assignrep.bin" md5="e81413f3bc64c05ae0821b56fd63e5ef"/>
+ <macro name="Assignset" file="Assignset.bin" md5="6a6dad9e5a35cdddb0ac069ec601c061"/>
+ <macro name="Beginpicture" file="Beginpicture.bin" md5="9fd24a768a0d6548b1f458d51e1bb202"/>
+ <macro name="Bezier" file="Bezier.bin" md5="f23aa1069913d825c6f8040b3de17e7d"/>
+ <macro name="Bezierpt" file="Bezierpt.bin" md5="f09183e61d71f55243937a28ef90fb06"/>
+ <macro name="BorderHiddenData" file="BorderHiddenData.bin" md5="67622b4dca726e7aff9b4e92d411edcd"/>
+ <macro name="BorderPt" file="BorderPt.bin" md5="e482d76b67ceb360021f9cef448abc73"/>
+ <macro name="Borderparadata" file="Borderparadata.bin" md5="1bf108993d36707c45e3a25770ca2869"/>
+ <macro name="Borderpersdata" file="Borderpersdata.bin" md5="d46e7fdcf42a61c354a540359dcd9f5f"/>
+ <macro name="Borderrawdata" file="Borderrawdata.bin" md5="0228890cf35b6929fc3bb083b1211da6"/>
+ <macro name="Bowdata" file="Bowdata.bin" md5="1f5f1c65d0448af83143e14f53565393"/>
+ <macro name="Bowmiddle" file="Bowmiddle.bin" md5="0a765efd6dae8c6fbd0d075ef0ff8b3c"/>
+ <macro name="Bowname" file="Bowname.bin" md5="e8ab45879c83d386dcf5e086fe71e1a4"/>
+ <macro name="Bownamerot" file="Bownamerot.bin" md5="ce9e45bf14fca7b62fa56b6d0b3baaef"/>
+ <macro name="CalcHeight" file="CalcHeight.bin" md5="f535ff3dcd86bc6552b54894e5865673"/>
+ <macro name="CalcWidth" file="CalcWidth.bin" md5="cf0f3d22a9dd2ffdb077a4be5bf1219f"/>
+ <macro name="Calcfun" file="Calcfun.bin" md5="618d36dbe48f68b4a3e2664b5df8cad2"/>
+ <macro name="CameraCurve" file="CameraCurve.bin" md5="b8acf2da07c09553106c10b4cc29d9e7"/>
+ <macro name="CameracoordCurve" file="CameracoordCurve.bin" md5="91ad20f64500117414f16a1cce2c344f"/>
+ <macro name="Cancoordpara" file="Cancoordpara.bin" md5="61afc19fb49f4b16d48a3cc54c6c6650"/>
+ <macro name="Cancoordpers" file="Cancoordpers.bin" md5="3a82d9864deed9b050795decae25d8bb"/>
+ <macro name="Circledata" file="Circledata.bin" md5="a5a1cf644e81417a9065d80f71b24d8d"/>
+ <macro name="Clipindomain" file="Clipindomain.bin" md5="773133bed55b7003b0248ffb670e3685"/>
+ <macro name="Closefile" file="Closefile.bin" md5="d29119f97c49373729d10b0cfba746e4"/>
+ <macro name="Closeobj" file="Closeobj.bin" md5="18df14cfd19b6a7911f9a3748572c02c"/>
+ <macro name="Closepar" file="Closepar.bin" md5="b8f58e851efa7f12560401c5b0760ecf"/>
+ <macro name="Closephr" file="Closephr.bin" md5="f53a01c653931c16bd3c493950798acf"/>
+ <macro name="Closepicture" file="Closepicture.bin" md5="32f401713757a349111cfaf0adcf199d"/>
+ <macro name="Connectseg" file="Connectseg.bin" md5="439d9f55197c09cd7b54e98cc7151208"/>
+ <macro name="Crossprod" file="Crossprod.bin" md5="536992b625b66d009e88e73a21a354d6"/>
+ <macro name="Crv3onsfHiddenData" file="Crv3onsfHiddenData.bin" md5="716dedc06dea644e6aadecf58ab050f4"/>
+ <macro name="Crv3onsfparadata" file="Crv3onsfparadata.bin" md5="e0d51c785077d687bfc222837fd8593b"/>
+ <macro name="Crv3onsfpersdata" file="Crv3onsfpersdata.bin" md5="63bcd579f64f40cc04e50094782e09e0"/>
+ <macro name="CrvonsfHiddenData" file="CrvonsfHiddenData.bin" md5="009a9889bf1f2a3a05f38918b579b7cb"/>
+ <macro name="Crvonsfparadata" file="Crvonsfparadata.bin" md5="6d5468227fd75007c1dfe4572c1c189c"/>
+ <macro name="Crvonsfpersdata" file="Crvonsfpersdata.bin" md5="de082902912599535a629ed08e56fb6c"/>
+ <macro name="CrvsfHiddenData" file="CrvsfHiddenData.bin" md5="f8d158838c95df89a67bf8233e541a09"/>
+ <macro name="Crvsfparadata" file="Crvsfparadata.bin" md5="885de6d7639a403dd01a2761e39a6ad1"/>
+ <macro name="Crvsfpersdata" file="Crvsfpersdata.bin" md5="3a660a01512f537e270f611d45512032"/>
+ <macro name="CuspData" file="CuspData.bin" md5="0958a008a4c59305d62522f9b80028da"/>
+ <macro name="CuspPt" file="CuspPt.bin" md5="08b55dc8b3e2d0ee1fea47b71825af92"/>
+ <macro name="CuspSplitPt" file="CuspSplitPt.bin" md5="0ff09f7f3d56080bbad1a1a26260f254"/>
+ <macro name="Cuspsplitpara" file="Cuspsplitpara.bin" md5="e54d63f2224cff696951a50800d0c4d4"/>
+ <macro name="Cuspsplitpers" file="Cuspsplitpers.bin" md5="ebf6aef58ed839a05d27771eeb0fc60c"/>
+ <macro name="Cutsf2d" file="Cutsf2d.bin" md5="adc0dd43b75ee65d181c56c5eeef3b0a"/>
+ <macro name="Dashline" file="Dashline.bin" md5="4d0497d9013039e15ff2b287b2c0988b"/>
+ <macro name="Dataindex" file="Dataindex.bin" md5="f0b3b146c9ee16cde54ecd4937acb0b9"/>
+ <macro name="Definecolor" file="Definecolor.bin" md5="337b7001704f8c604b555e35721973d6"/>
+ <macro name="Deqplot" file="Deqplot.bin" md5="43a868bfe9d41dc2389116b15d18df80"/>
+ <macro name="Derivative" file="Derivative.bin" md5="f0b451a2b43c69168ac088e8443f6961"/>
+ <macro name="Diagcelldata" file="Diagcelldata.bin" md5="efc679b9d0239e2669c6a0929a4e242b"/>
+ <macro name="Dividegraphics" file="Dividegraphics.bin" md5="b2c065a1249613d3cf7f6ba80ec816a4"/>
+ <macro name="Dividetable" file="Dividetable.bin" md5="af1d4f7f854da91ce2b4cec13ff44bc5"/>
+ <macro name="Doscaling" file="Doscaling.bin" md5="86184ec15f528517d5e37e8b5baa3754"/>
+ <macro name="Dotfilldata" file="Dotfilldata.bin" md5="80a560945fc679f1f036778833dd59a7"/>
+ <macro name="Dotprod" file="Dotprod.bin" md5="e1a7afad315e324245ec76499b5dfb6c"/>
+ <macro name="Dottedline" file="Dottedline.bin" md5="fc23c9d6f73b41f120a39590dd4eeeb0"/>
+ <macro name="Dropnumlistcrv" file="Dropnumlistcrv.bin" md5="1875178bc5c363af0d15f8276503be4a"/>
+ <macro name="Droppoint" file="Droppoint.bin" md5="c25e16076a319350b8763f48476b4ec6"/>
+ <macro name="Drwline" file="Drwline.bin" md5="8b3116566aee206aa64fe0f162963ae3"/>
+ <macro name="Drwpt" file="Drwpt.bin" md5="2da954a103d3d925b661e23b34c3e2f4"/>
+ <macro name="Drwxy" file="Drwxy.bin" md5="c17d9f6608390f019c87d6e1e181e8a3"/>
+ <macro name="Embed" file="Embed.bin" md5="7cc5c0ccfeb87763b205b3fcf0dc67b4"/>
+ <macro name="Enclosing" file="Enclosing.bin" md5="457c453795c3b3224be70e1721385cb1"/>
+ <macro name="EnclosingS" file="EnclosingS.bin" md5="13de130f31f7932194fd173f977ff896"/>
+ <macro name="Endpicture" file="Endpicture.bin" md5="9b3ce661a450d798d55889be6ffd31ac"/>
+ <macro name="Evlptablepara" file="Evlptablepara.bin" md5="06e669cba02eb0218f852fdf46b1cae5"/>
+ <macro name="Evlptablepers" file="Evlptablepers.bin" md5="6cc6897a677911ce2629157f932f32c5"/>
+ <macro name="Execmd" file="Execmd.bin" md5="c3a30b0fae6f2a8ce6593607ed0d2ed8"/>
+ <macro name="Expr" file="Expr.bin" md5="c3e260bc0fd7af5a7231431ef9033f5c"/>
+ <macro name="Exprrot" file="Exprrot.bin" md5="6fc71ff18629fc512e5fed1218433619"/>
+ <macro name="Faceremovaldata" file="Faceremovaldata.bin" md5="90e9f3a860839349b2486df6fff7adb4"/>
+ <macro name="Facesdata" file="Facesdata.bin" md5="0c43ae73a08dcfce906c075f17eec59a"/>
+ <macro name="Findcell" file="Findcell.bin" md5="9b9cc86ef6f67a8d539d30ec58ad9005"/>
+ <macro name="Flattenlist" file="Flattenlist.bin" md5="d4b4a78c9e9760a4cbeda97f54592acb"/>
+ <macro name="Fontsize" file="Fontsize.bin" md5="3620d8e64b61ab17778776195acec82a"/>
+ <macro name="Fouriercoeff" file="Fouriercoeff.bin" md5="83dfcd5c4a1d0f7ccb711d89b0a8003c"/>
+ <macro name="FouriercoeffL" file="FouriercoeffL.bin" md5="29b8c2c57c53796531cb8316630e87ee"/>
+ <macro name="Fouriersum" file="Fouriersum.bin" md5="3cf167292e587148fe7d3a9d2e34eab0"/>
+ <macro name="Fracform" file="Fracform.bin" md5="6dfc4e723a0a2d55ef9e2e9028e5a0b1"/>
+ <macro name="Framedata" file="Framedata.bin" md5="712be5ee4fdd60fe132b951022f7f5e1"/>
+ <macro name="Fullformfunc" file="Fullformfunc.bin" md5="ebc5473763f9884c091aa9863062702b"/>
+ <macro name="Gaiseki" file="Gaiseki.bin" md5="36a6b9567ed081b46107ed3374562196"/>
+ <macro name="Getcounter" file="Getcounter.bin" md5="45f7aec5f0936f4abe6e65296634a847"/>
+ <macro name="Gettrace" file="Gettrace.bin" md5="bb84c353b0e3af593e903273160d9bd9"/>
+ <macro name="Hatchdata" file="Hatchdata.bin" md5="e05c42f885a108c41a75bf1b607b509b"/>
+ <macro name="Hexahedrondata" file="Hexahedrondata.bin" md5="86efcd2c370b4e76adfeea3b75639d31"/>
+ <macro name="HiddenWireData" file="HiddenWireData.bin" md5="a080bcb1dcc97c1205fff04562d694fd"/>
+ <macro name="Htickmark" file="Htickmark.bin" md5="bdafbfedbc2441fe5cd989910852c79e"/>
+ <macro name="ImplicitData" file="ImplicitData.bin" md5="24a9ea9eb043677084250a30d6c6db00"/>
+ <macro name="Implicitplot" file="Implicitplot.bin" md5="7d1075882d5446646c2304e00e70ad6d"/>
+ <macro name="InWindow" file="InWindow.bin" md5="cf3f449e5189b8d40a3d3a4c219a92ea"/>
+ <macro name="Initangle" file="Initangle.bin" md5="c6902d32536d434af7f28c28b45290ab"/>
+ <macro name="Integrate" file="Integrate.bin" md5="6f255339baf16af41b20d9b2d86adb50"/>
+ <macro name="Intersectcrvs" file="Intersectcrvs.bin" md5="68b875e1418a8a231095155ca2482cbc"/>
+ <macro name="IntersectcrvsPp" file="IntersectcrvsPp.bin" md5="5c05582df9fa8f9a05fa42ef1cf799ae"/>
+ <macro name="Intersectcrvsf" file="Intersectcrvsf.bin" md5="89b1b7d500237aebbd41f1094560609b"/>
+ <macro name="Intersectlines" file="Intersectlines.bin" md5="5a4837581398e0f6299d83805b325fd6"/>
+ <macro name="IntersectselfPp" file="IntersectselfPp.bin" md5="d10bc970ff6540655fedece748a0f1d7"/>
+ <macro name="Invdashline" file="Invdashline.bin" md5="d72a1842fe88eb719dd85ce45caafc96"/>
+ <macro name="Invert" file="Invert.bin" md5="7018f80081bca2cb147e81ea435ba287"/>
+ <macro name="Invparapt" file="Invparapt.bin" md5="b58cfbc854e7b14d076b1f1676c3f54b"/>
+ <macro name="Invperspt" file="Invperspt.bin" md5="c8500cf469fd4a4c8399e5e093f49126"/>
+ <macro name="Joincrvs" file="Joincrvs.bin" md5="41981f483c2cfacab95b25356ee5a7d1"/>
+ <macro name="Joingraphics" file="Joingraphics.bin" md5="e525e21001a3408e5bb3587d24ca4916"/>
+ <macro name="Ketinit" file="Ketinit.bin" md5="bd9d49f1927a921db621d419da386e1d"/>
+ <macro name="Kouten" file="Kouten.bin" md5="b0fbbe27e4961ef9a8d0652b1d9edfaf"/>
+ <macro name="KoutenList" file="KoutenList.bin" md5="ca822b6e42d545a627a7129d02b91cb2"/>
+ <macro name="Koutenseg" file="Koutenseg.bin" md5="2424557c72db63186699b8ab8fb4ef64"/>
+ <macro name="Kukannozoku" file="Kukannozoku.bin" md5="40cef25e80745039eb34c5066dfe2d14"/>
+ <macro name="Kukeiwake" file="Kukeiwake.bin" md5="2e42c3fdef9ac1f7aaca550ff11307c3"/>
+ <macro name="Kyorihensuu" file="Kyorihensuu.bin" md5="3f313b70f962d573d0db9a548ed4ebc4"/>
+ <macro name="Kyoukai" file="Kyoukai.bin" md5="630a8517e9e9ae8ecb2a5372c87193fd"/>
+ <macro name="Letter" file="Letter.bin" md5="a587d241a5c2f1c69b0904632af16a26"/>
+ <macro name="Letterrot" file="Letterrot.bin" md5="1ce92bf2c945ee12d0746ae7f2fe6b5d"/>
+ <macro name="Lineplot" file="Lineplot.bin" md5="d2b8a90dd16c873622ffc291b7c9ed64"/>
+ <macro name="Listplot" file="Listplot.bin" md5="1575fd89b2e6c3c96b90b6889006370f"/>
+ <macro name="MakeBowdata" file="MakeBowdata.bin" md5="ab5ea1d8c5cc092ea13021c3fb255613"/>
+ <macro name="MakeCurves" file="MakeCurves.bin" md5="a1d7968df6f80673bab58af5762640a4"/>
+ <macro name="MakecutbycrvL" file="MakecutbycrvL.bin" md5="8ddeb50d60ce53392a6d6ec76fad7bee"/>
+ <macro name="Makehasen" file="Makehasen.bin" md5="198b502dc227e2fb5fb9d945fa3b6a27"/>
+ <macro name="Makeliststr" file="Makeliststr.bin" md5="bf4e86417206108a51e2b0210b990557"/>
+ <macro name="Makesfcutoffdata" file="Makesfcutoffdata.bin" md5="7b61d0f517b18505225edbac83729b6f"/>
+ <macro name="Makeshasen" file="Makeshasen.bin" md5="878e44c4780cdac427a7d55f551373a2"/>
+ <macro name="Makeskeletondata" file="Makeskeletondata.bin" md5="6c918f7f13736227cc0ac351c6fd7a54"/>
+ <macro name="Makeskeletonpersdata" file="Makeskeletonpersdata.bin" md5="72dd47219b4e6689c54c69eed62f06dc"/>
+ <macro name="Makevaltable" file="Makevaltable.bin" md5="c279f90b73efc06d235c983bd08ce47b"/>
+ <macro name="MakeveLfaceL" file="MakeveLfaceL.bin" md5="1afea9c44a3dbe277e601b02d38be3cc"/>
+ <macro name="Makexybdy" file="Makexybdy.bin" md5="6eca03d530a515cdfe0b98d33fee2b67"/>
+ <macro name="Mawarikomi" file="Mawarikomi.bin" md5="61b967de5ef56e29016932c9f77c561a"/>
+ <macro name="MeetWindow" file="MeetWindow.bin" md5="ae7f015eebc2250c20ad876d1d3ec9e4"/>
+ <macro name="Meetpoints" file="Meetpoints.bin" md5="ffeccee8bfbebd44a45abdfe91c3cca1"/>
+ <macro name="Member" file="Member.bin" md5="6c29ab2fdbbc61889c95b45d820d317d"/>
+ <macro name="Menkakusi" file="Menkakusi.bin" md5="53d3fee4c99b28d7aac10f8114fe2524"/>
+ <macro name="Menkakusi2" file="Menkakusi2.bin" md5="eedabe7e3dd93f6af4fe225a6aa4b2ed"/>
+ <macro name="Mix" file="Mix.bin" md5="f9f822bf34f04f9dc5401f492b8dc76b"/>
+ <macro name="MixL" file="MixL.bin" md5="e80cd4b09be7c0a9b88cfaea7bcf802a"/>
+ <macro name="MixS" file="MixS.bin" md5="d60abae70f94ff28b184306e971d1102"/>
+ <macro name="Mixadd" file="Mixadd.bin" md5="51da5be70ce2e556dd75d812715faad4"/>
+ <macro name="Mixdisp" file="Mixdisp.bin" md5="b2b5187462a54615cca28f272232b61f"/>
+ <macro name="Mixjoin" file="Mixjoin.bin" md5="f9df8699f8cb95ca2b657403a94a9d8f"/>
+ <macro name="Mixlength" file="Mixlength.bin" md5="ee9cee8e9c916ea42ed8e1e8ad70e321"/>
+ <macro name="Mixmake" file="Mixmake.bin" md5="b84d74ef8def9658fa2d8f34cc8424f5"/>
+ <macro name="Mixop" file="Mixop.bin" md5="8c5f9a72e8838aa4b9c9f45013000670"/>
+ <macro name="Mixsub" file="Mixsub.bin" md5="f2a14687cf8a0c6daaede12d0b730dd5"/>
+ <macro name="Mixtype" file="Mixtype.bin" md5="0a0931265b0666b53416685a35897f82"/>
+ <macro name="Naigai" file="Naigai.bin" md5="6e97fdbd9f1feabfb09b2247518c4399"/>
+ <macro name="Naiseki" file="Naiseki.bin" md5="8f33757e011f07a03a144414296c3190"/>
+ <macro name="Nearestpt" file="Nearestpt.bin" md5="7b392fdb66cdafb6ccf4e3f083967ba2"/>
+ <macro name="Newlength" file="Newlength.bin" md5="ea7efdb86cdb3345f0b3e43427cb2c48"/>
+ <macro name="Nohiddenpara" file="Nohiddenpara.bin" md5="b46886584a10d67fbdb7816c5c739fb8"/>
+ <macro name="Nohiddenpara2" file="Nohiddenpara2.bin" md5="be95c5d2791c7b05e25c1def88f2bdc6"/>
+ <macro name="Nohiddenpers" file="Nohiddenpers.bin" md5="1e867c6479823f428d90911b099cdbcf"/>
+ <macro name="Nohiddenpers2" file="Nohiddenpers2.bin" md5="f96bfe5e316b4b771ab3d26b27b73615"/>
+ <macro name="Numptcrv" file="Numptcrv.bin" md5="5bf4461504105054dd993bff3b35f370"/>
+ <macro name="Objcurve" file="Objcurve.bin" md5="3f7684be52bce1b1458d378be0849229"/>
+ <macro name="Objjoin" file="Objjoin.bin" md5="74a96fb8ed5d88ff1008156f27738f5a"/>
+ <macro name="Objname" file="Objname.bin" md5="74d2732da725b97cb3c0eb443a6f5ed9"/>
+ <macro name="Objpolygon" file="Objpolygon.bin" md5="56d22a5ae20dcfc9a0cd4b8a440385e6"/>
+ <macro name="Objpolyhedron" file="Objpolyhedron.bin" md5="ff92bd278e558ead5df19970d6d01546"/>
+ <macro name="Objrecs" file="Objrecs.bin" md5="e8ca7cd5993fb7ce8e5b509dce42e46b"/>
+ <macro name="Objsurf" file="Objsurf.bin" md5="f3017f49c709447a7024d16edb01580d"/>
+ <macro name="Objsymb" file="Objsymb.bin" md5="ef3fbae27f502a20ff4df575638d4e52"/>
+ <macro name="Objthicksurf" file="Objthicksurf.bin" md5="07f9c70cedf719587412c848812c7704"/>
+ <macro name="Op" file="Op.bin" md5="cb2e0935be6b77b1c0bc4f2c7071a1cb"/>
+ <macro name="Openfile" file="Openfile.bin" md5="bfccc88e9e9abcd83236dd4dd5da2cb4"/>
+ <macro name="Openobj" file="Openobj.bin" md5="c60578368dceeb4ab79f74e6de774ffd"/>
+ <macro name="Openpar" file="Openpar.bin" md5="39554dc8c76d98179e21e6878af691c5"/>
+ <macro name="Openphr" file="Openphr.bin" md5="a086531ca6cf4e112742d5aef90943cf"/>
+ <macro name="Openpicture" file="Openpicture.bin" md5="e7b76f0bb2132c86350d0f1293a31069"/>
+ <macro name="Ovalbox" file="Ovalbox.bin" md5="d22bdac24b70c1d6b1625dcf3a8ce007"/>
+ <macro name="Ovaldata" file="Ovaldata.bin" md5="0facfbd0760cec3d8fa762f7dea098f2"/>
+ <macro name="Paramark" file="Paramark.bin" md5="644e9aa93430fd35f3639875d6759584"/>
+ <macro name="ParamonCurve" file="ParamonCurve.bin" md5="910c0b77eb025faf243e2d2cb7ebd043"/>
+ <macro name="Paramoncrv" file="Paramoncrv.bin" md5="48c6dc127d039740c0a11def8a18fe8a"/>
+ <macro name="Paramplot" file="Paramplot.bin" md5="09b2750fc9950bbc258a881a2c12a97b"/>
+ <macro name="Parapt" file="Parapt.bin" md5="e130c84b03164202cf8e25ea27558859"/>
+ <macro name="Partcrv" file="Partcrv.bin" md5="819797d94d68bf7df7c29b01717525a6"/>
+ <macro name="Partcrv3" file="Partcrv3.bin" md5="c87d37f9f00aff9ce05a3a3879c6ea5a"/>
+ <macro name="Partframe" file="Partframe.bin" md5="8df2a78e61362e18cf3b71779ffffbd4"/>
+ <macro name="PartitionPt" file="PartitionPt.bin" md5="a4afd33aca16e70df0984f7cf05371ce"/>
+ <macro name="Partitionseg" file="Partitionseg.bin" md5="c0ce6ccd18ea9794f55a9e6926328ea1"/>
+ <macro name="Perspt" file="Perspt.bin" md5="5415e8696ae175005b59936b2e164bac"/>
+ <macro name="PhFaceL" file="PhFaceL.bin" md5="b8748ee001a1357e2820b304083ce09e"/>
+ <macro name="PhHiddenData" file="PhHiddenData.bin" md5="6a0ab5d6aeb7d4c66b31ab86ac5afdae"/>
+ <macro name="PhVertexL" file="PhVertexL.bin" md5="9d7e1d653e88fc9b98f783ec57ebe8ca"/>
+ <macro name="Phcutdata" file="Phcutdata.bin" md5="bed83bc88efc277012bab8ba47b9d810"/>
+ <macro name="Phcutoffdata" file="Phcutoffdata.bin" md5="2ca3881c7cdfe2fee62aa3e64af34157"/>
+ <macro name="Phidegree" file="Phidegree.bin" md5="5d1ac461a2fee60c6c2dda978a262428"/>
+ <macro name="Phparadata" file="Phparadata.bin" md5="cbc40d5c2c508a72e51adac3ffecdd4c"/>
+ <macro name="Phpersdata" file="Phpersdata.bin" md5="51601f80ae1578cf4aa0d6f244ba5027"/>
+ <macro name="Phrawparadata" file="Phrawparadata.bin" md5="371b244204a19e6a12e70773cb118f21"/>
+ <macro name="Phrawpersdata" file="Phrawpersdata.bin" md5="f2371fdb24326f6c7a209f9b70d07ce1"/>
+ <macro name="Phsparadata" file="Phsparadata.bin" md5="762751108de07b4e5a1e6264e16d487c"/>
+ <macro name="Phspersdata" file="Phspersdata.bin" md5="acf5af0f78c134ae893fd057e408dd3e"/>
+ <macro name="Phsrawparadata" file="Phsrawparadata.bin" md5="2aebf882e1d6cd11e44cb2815fd186fd"/>
+ <macro name="Phsrawpersdata" file="Phsrawpersdata.bin" md5="b90465806262e6016d26450f6654194d"/>
+ <macro name="Plotdata" file="Plotdata.bin" md5="676695f9f9b9a91cfea1ee426d7185ce"/>
+ <macro name="Pointdata" file="Pointdata.bin" md5="eb131a9f0a6687722dc491cedb732ade"/>
+ <macro name="PointonCurve" file="PointonCurve.bin" md5="168183930f3fce712571ad5b737f7004"/>
+ <macro name="Pointoncrv" file="Pointoncrv.bin" md5="a0a2cd4d7f51bec560eb26fef054d835"/>
+ <macro name="Powersum" file="Powersum.bin" md5="29a72b2125d2f95cfd9bdd742a4e106b"/>
+ <macro name="Prime" file="Prime.bin" md5="35045b439a59fabbe9a4127d12706fb6"/>
+ <macro name="Printobjstr" file="Printobjstr.bin" md5="2b4d610c4a39dcab5cfb5c93f7dff5ea"/>
+ <macro name="ProjCurve" file="ProjCurve.bin" md5="7d548512c30e79cd098aa7b2f96a4ebf"/>
+ <macro name="ProjcoordCurve" file="ProjcoordCurve.bin" md5="ddf1fa0e05421feaa482038b26925ab5"/>
+ <macro name="Projpara" file="Projpara.bin" md5="98da96de9ea67f2db4111877d7ff785e"/>
+ <macro name="Projpers" file="Projpers.bin" md5="7820810b8c0861b22e8dcdc23f1c0864"/>
+ <macro name="Ptcrv" file="Ptcrv.bin" md5="d353fd7e1af4fac1533c7e0ddebf996e"/>
+ <macro name="Ptend" file="Ptend.bin" md5="5b30f64ef0920f13b540db8eb5f93e5a"/>
+ <macro name="PthiddenQ" file="PthiddenQ.bin" md5="c1e31cee1140bf7942b7e1c83514d790"/>
+ <macro name="Ptne" file="Ptne.bin" md5="833e0e4b3ced75d740eaaab4c1fc88bd"/>
+ <macro name="Ptnw" file="Ptnw.bin" md5="8415bd27db46c35cec56e67d2ca9734f"/>
+ <macro name="Ptse" file="Ptse.bin" md5="f5180a6df918355d3a588786e7be8cf4"/>
+ <macro name="Ptstart" file="Ptstart.bin" md5="f0e4baaf1f46e6b379571e9414a83812"/>
+ <macro name="Ptsw" file="Ptsw.bin" md5="c30adf43aa5f3c9a0961402ab3b8ddc9"/>
+ <macro name="Putcell" file="Putcell.bin" md5="da158190a8848db850d3d34a16d36dc8"/>
+ <macro name="Putcirmark" file="Putcirmark.bin" md5="9f1b9f829d10c8d29f3c2ea6d316383b"/>
+ <macro name="PutcoL" file="PutcoL.bin" md5="d8f49a7b534060301063804207669228"/>
+ <macro name="PutcoLexpr" file="PutcoLexpr.bin" md5="d35417b4b818f80c7b96f99118795d48"/>
+ <macro name="PutcoLstr" file="PutcoLstr.bin" md5="32c9d7d6751b5c85adca1c384ec98c10"/>
+ <macro name="Putdashmark" file="Putdashmark.bin" md5="03b76cd3bbc9e52df76c2be30c42570b"/>
+ <macro name="Putrecmark" file="Putrecmark.bin" md5="a5c20a30353d0c79c0dcea3cf39c54e3"/>
+ <macro name="Putrow" file="Putrow.bin" md5="0a9adbebc80444ab1495a302265920e6"/>
+ <macro name="Putrowexpr" file="Putrowexpr.bin" md5="4a32c3441cd9ad7c23656ab97e65d352"/>
+ <macro name="Putrowstr" file="Putrowstr.bin" md5="92ee0311a5e4bb7995a9d44bfbc1460d"/>
+ <macro name="Puttrace" file="Puttrace.bin" md5="08b64f48285a49c1cb6138fe1491c8fe"/>
+ <macro name="Ratiocmyk" file="Ratiocmyk.bin" md5="54098c052d304f2b329cc4fd2bd23bc1"/>
+ <macro name="ReadOutData" file="ReadOutData.bin" md5="0198ca044595d75779d267e425e5380a"/>
+ <macro name="ReadfromCindy" file="ReadfromCindy.bin" md5="1fed87229911382502d7e7cfd359f4c1"/>
+ <macro name="Readtextdata" file="Readtextdata.bin" md5="4acbbc591808404b6814db3175c2ffed"/>
+ <macro name="Reflectdata" file="Reflectdata.bin" md5="51d5020a418590fe64cbf4883da76562"/>
+ <macro name="Rmmember" file="Rmmember.bin" md5="31ade9c8802d46438ace1e53bb769b86"/>
+ <macro name="Rotate3data" file="Rotate3data.bin" md5="5aaab016d1fed7a61f270e3b4ad84316"/>
+ <macro name="Rotate3pt" file="Rotate3pt.bin" md5="7feea2dd66e7a02b96c384011d818a0e"/>
+ <macro name="Rotatedata" file="Rotatedata.bin" md5="f7c7aa1bd5b2d2d99b66bb3bd711de19"/>
+ <macro name="Roundstr" file="Roundstr.bin" md5="dd261bcd78d1110bfd9fd775efcf5a4e"/>
+ <macro name="Scaledata" file="Scaledata.bin" md5="fac166fc1de490a64dd7f7a8f46164a9"/>
+ <macro name="Sectionview" file="Sectionview.bin" md5="db370ec400c90c7865f7c626572e39f7"/>
+ <macro name="Setangle" file="Setangle.bin" md5="57190782b3c5c0ace7f2adecb18e4aed"/>
+ <macro name="Setarrow" file="Setarrow.bin" md5="e7baa60ca4f593de15c7cb8b56be800a"/>
+ <macro name="Setax" file="Setax.bin" md5="ef281e109b01e3b65d1842e0d2a03873"/>
+ <macro name="Setcolor" file="Setcolor.bin" md5="b0adb12d43ae4da2815331389b85f944"/>
+ <macro name="Setcounter" file="Setcounter.bin" md5="e38d212ffa114288c73ccdb613c9cb9d"/>
+ <macro name="Setmark" file="Setmark.bin" md5="d4cb68ac16edcd28a86ba2a0563b9597"/>
+ <macro name="Setmarklen" file="Setmarklen.bin" md5="ec3870c326393f15a29d77cf476618cf"/>
+ <macro name="Setobjdecimals" file="Setobjdecimals.bin" md5="823bc64fbdda67813d1e3c3bf592a0e3"/>
+ <macro name="Setobjscale" file="Setobjscale.bin" md5="a2cdb49a13b0dc89328a7194f34eeeab"/>
+ <macro name="Setorigin" file="Setorigin.bin" md5="fe236fa677bab1dd24e53cfc28022826"/>
+ <macro name="Setpen" file="Setpen.bin" md5="31370146f7f7aac59de13ffbc2c0172d"/>
+ <macro name="Setpers" file="Setpers.bin" md5="830fe8254a07765e703077b456353070"/>
+ <macro name="Setpt" file="Setpt.bin" md5="cbfbda69ce4184fc0ad59bfbe01943a6"/>
+ <macro name="Setscaling" file="Setscaling.bin" md5="263333f56ad33907534fdb460e54da9b"/>
+ <macro name="SetstereoL" file="SetstereoL.bin" md5="2711aa6a1541336aec852ac1437155ac"/>
+ <macro name="SetstereoR" file="SetstereoR.bin" md5="bd74d871d1bc79ed8c01a13a569eb7bb"/>
+ <macro name="Setunitlen" file="Setunitlen.bin" md5="1e245724b987e84c413bf37a30bb5dd3"/>
+ <macro name="Setversion" file="Setversion.bin" md5="d6dbab1ce7bb18b2c773bae647e4ac5d"/>
+ <macro name="Setwindow" file="Setwindow.bin" md5="e781a89da1ce77fbc46f713553523c51"/>
+ <macro name="Sf3data" file="Sf3data.bin" md5="095b6c0f2bf25f7b9ed5f5d8d3a8915d"/>
+ <macro name="Sfbdparadata" file="Sfbdparadata.bin" md5="f9c0c54671a68458f4bcb1936fa402ec"/>
+ <macro name="Sfbdpersdata" file="Sfbdpersdata.bin" md5="aa08f921566b64c11e888ee34429eca5"/>
+ <macro name="Sfbdrawparadata" file="Sfbdrawparadata.bin" md5="fae8431fd5fe5ead8ff2f85d45e144c1"/>
+ <macro name="Sfbdrawpersdata" file="Sfbdrawpersdata.bin" md5="1cafbda088573fad0d85f2bb2a165178"/>
+ <macro name="Sfcutdata" file="Sfcutdata.bin" md5="4dff7dff641c5e51588e8f27c2068396"/>
+ <macro name="Sfcutoffparadata" file="Sfcutoffparadata.bin" md5="d5089ce276ce8329a5e25772eda825ad"/>
+ <macro name="Sfcutoffpersdata" file="Sfcutoffpersdata.bin" md5="8f232600533c8c553d279fb7999a9aef"/>
+ <macro name="Sfcutoffrawparadata" file="Sfcutoffrawparadata.bin" md5="b530fdec88ecac05548dcbc183fac672"/>
+ <macro name="Sfcutoffrawpersdata" file="Sfcutoffrawpersdata.bin" md5="c7dc8aec4aedc1a9e3b88a423b4e4091"/>
+ <macro name="Sfparadata" file="Sfparadata.bin" md5="636205ff5e7fa28c188beb8a788ec30f"/>
+ <macro name="Sfpersdata" file="Sfpersdata.bin" md5="2c198aaa68180b41eb0dd81812668a52"/>
+ <macro name="Shade" file="Shade.bin" md5="09675938f324e2c22fe2b6e5dd0db554"/>
+ <macro name="Skeleton2data" file="Skeleton2data.bin" md5="046308bb7c2d18186a5db1abf5724ace"/>
+ <macro name="Skeletonpara3data" file="Skeletonpara3data.bin" md5="8b00d1898174de20f097983ad72f96d9"/>
+ <macro name="Skeletonparadata" file="Skeletonparadata.bin" md5="6368394d29bd3e34c9dadbc54dd49755"/>
+ <macro name="Skeletonpers3data" file="Skeletonpers3data.bin" md5="62a627cd77291d934150cbe175d9ec06"/>
+ <macro name="Skeletonpersdata" file="Skeletonpersdata.bin" md5="63663e9c381325970209a62a00877361"/>
+ <macro name="Spacecurve" file="Spacecurve.bin" md5="e06c5eb2ae8623cee4fe135d6ed8d2a5"/>
+ <macro name="Spaceline" file="Spaceline.bin" md5="bcdf09d58fde1a3071968c7600cbcadc"/>
+ <macro name="Splinedata" file="Splinedata.bin" md5="c8cac41f49166b548f6bb20eb765f513"/>
+ <macro name="Strop" file="Strop.bin" md5="b3e20bfeaaf10aa827ec9be26865547b"/>
+ <macro name="Subs" file="Subs.bin" md5="daa0438a2d34af2d043c50b3d2a00a01"/>
+ <macro name="Sumfun" file="Sumfun.bin" md5="0a785d3c30c763778e1f92d3b8fb785e"/>
+ <macro name="Symb3data" file="Symb3data.bin" md5="ba72252ea118f44b847927d0de9b9892"/>
+ <macro name="Symbdata" file="Symbdata.bin" md5="53c196c0ca5f9026e4cd441e0d6586ed"/>
+ <macro name="Tabledata" file="Tabledata.bin" md5="b79bdcd7c171ab768e763d26d9b4f6a1"/>
+ <macro name="Texcom" file="Texcom.bin" md5="dc0139e9541acb939d1c3839a0fc11f6"/>
+ <macro name="Texctr" file="Texctr.bin" md5="5f23e09b23191bec07cb10b070d5c66b"/>
+ <macro name="Texelse" file="Texelse.bin" md5="f8b67c8497e8dd9ac1dbcc5a90fc930c"/>
+ <macro name="Texend" file="Texend.bin" md5="351105e6dd3c5c171f0944030fba69c4"/>
+ <macro name="Texendfor" file="Texendfor.bin" md5="7d1005515ed98a776c7c9a00a2a970d8"/>
+ <macro name="Texendif" file="Texendif.bin" md5="6323c9cf98ac4c1d6e01bef2dadc6614"/>
+ <macro name="Texfor" file="Texfor.bin" md5="0ade87f95e63dadbdbfe35efbca00e86"/>
+ <macro name="Texforinit" file="Texforinit.bin" md5="6e96556a978535b632dba9e33b9551b3"/>
+ <macro name="Texif" file="Texif.bin" md5="db3af265fced379c5bc2a35dcd661aef"/>
+ <macro name="Texletter" file="Texletter.bin" md5="7a7ebe58bae97a3a17d646d1c7a9e1da"/>
+ <macro name="Texnewcmd" file="Texnewcmd.bin" md5="b4f314f440314e77d8c93385172eb5e1"/>
+ <macro name="Texnewctr" file="Texnewctr.bin" md5="86756d50c10bcf8359c1a924e6e1004d"/>
+ <macro name="Texrenewcmd" file="Texrenewcmd.bin" md5="90e63f10dd735a7263da2cb8661692c7"/>
+ <macro name="Texsetctr" file="Texsetctr.bin" md5="8d9cd50bcb9304e25e27ac7818c9b047"/>
+ <macro name="Texthectr" file="Texthectr.bin" md5="b74d5106ff432a8c84dfd3e8baf9402f"/>
+ <macro name="Texvalctr" file="Texvalctr.bin" md5="6a789e4941c736527f57d75d1ba26123"/>
+ <macro name="Texvctr" file="Texvctr.bin" md5="05e1f689e4002ca0b53c1b7674d814e0"/>
+ <macro name="Thetadegree" file="Thetadegree.bin" md5="0ff4846aaeb83b20683ec4d4b60ed98f"/>
+ <macro name="ThisVersion" file="ThisVersion.bin" md5="5d9fc94c56eb694d62a16b1f7a6a9d04"/>
+ <macro name="Tolist" file="Tolist.bin" md5="65c83ab06c83674c70f46e0f402d3580"/>
+ <macro name="Translate3data" file="Translate3data.bin" md5="38c5bcaf8d3659c75cd7cf335d26196b"/>
+ <macro name="Translatedata" file="Translatedata.bin" md5="17b85cc7ed17d1f260cf758ead8dc0ab"/>
+ <macro name="Trunc" file="Trunc.bin" md5="7a6a605bcba822854e4c917fe41db659"/>
+ <macro name="Unscaling" file="Unscaling.bin" md5="08ee317471c47d086c9404e47955b17b"/>
+ <macro name="Vecnagasa" file="Vecnagasa.bin" md5="aaeae5f1a186bba7b2c357a2c77ce2a1"/>
+ <macro name="Vecnagasa2" file="Vecnagasa2.bin" md5="41c4c41904d6b87a9844d20fd860a6cb"/>
+ <macro name="Viewfrom" file="Viewfrom.bin" md5="fe4685d5db0abf45a31b2b643b20c23f"/>
+ <macro name="Vtickmark" file="Vtickmark.bin" md5="375b4bc294d26ab3b7d30f8fbd4bfad7"/>
+ <macro name="Windisp" file="Windisp.bin" md5="1e48a32bf2ea244b701fb5bb63ea18f4"/>
+ <macro name="WireHiddenData" file="WireHiddenData.bin" md5="7fb2be220f2c6dfefea57e5a9acf9145"/>
+ <macro name="WirePt" file="WirePt.bin" md5="0936e8dd2f3ca890efaf0b274aa64d96"/>
+ <macro name="Wireparadata" file="Wireparadata.bin" md5="60a5c112230c8cb7ebd803304b1b17b7"/>
+ <macro name="Wirepersdata" file="Wirepersdata.bin" md5="b2696b1685c9456c6857fbdd1424256a"/>
+ <macro name="Wirerawparadata" file="Wirerawparadata.bin" md5="e770b9a2bce4c8804fc62a5191be1545"/>
+ <macro name="Wirerawpersdata" file="Wirerawpersdata.bin" md5="f254f9cad0b02b01e7388fbbb433bcc4"/>
+ <macro name="WriteOutData" file="WriteOutData.bin" md5="55682f0605917544dd41d2c25f24786c"/>
+ <macro name="Writeobjpoint" file="Writeobjpoint.bin" md5="24c598f95cc38899d5cf5d3048a9e263"/>
+ <macro name="Writetextdata" file="Writetextdata.bin" md5="b1da333518052fedb658e0827833a54f"/>
+ <macro name="WritetoCindy" file="WritetoCindy.bin" md5="c8a05614d69d73bd4aa3c562cf479872"/>
+ <macro name="Xmax" file="Xmax.bin" md5="87038803908d553ab8de412b410887dd"/>
+ <macro name="Xmin" file="Xmin.bin" md5="eae15ed2438d2805a6ad488cf22b75e8"/>
+ <macro name="Xyzax3data" file="Xyzax3data.bin" md5="633e040e19b435e55bb66dbc4f231117"/>
+ <macro name="Xyzaxparaname" file="Xyzaxparaname.bin" md5="8fa701d6b92b478a97ed8b4e263c9a18"/>
+ <macro name="Xyzaxpersname" file="Xyzaxpersname.bin" md5="1e9573e9452267842a7907f30661e902"/>
+ <macro name="Ymax" file="Ymax.bin" md5="4ab8eccdba393b4c41a45d38f97faf88"/>
+ <macro name="Ymin" file="Ymin.bin" md5="5dedfdfc18e01299ea069b578be8b697"/>
+ <macro name="Zparapt" file="Zparapt.bin" md5="e16dd6e761c2e8ec7eb31da49d7a3b96"/>
+ <macro name="Zperspt" file="Zperspt.bin" md5="b04d5677e9ee74a1cbff3ad73c9d2a20"/>
+</scilablib>
diff --git a/texmf-dist/scripts/ketpic/ketlib/maximaL/fourier_sec.max b/texmf-dist/scripts/ketpic/ketlib/maximaL/fourier_sec.max
new file mode 100644
index 00000000..c70f7f46
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/maximaL/fourier_sec.max
@@ -0,0 +1,260 @@
+/*
+Package fourier_sec, to study piecewise defined functions
+(sectionally defined, hence the name).
+
+Author: Jose A. Vallejo
+ Faculty of Sciences
+ Universidad Autonoma de San Luis Potosi (Mexico)
+ http://galia.fc.uaslp.mx/~jvallejo
+
+It is assumed that the functions are defined using the format
+ if ... then ... else ...
+as, for example,
+(%i1) absolute(x):=if (x<=0) then -x elseif (x>0) then x$
+(it will not work with 'abs').
+It provides three functions:
+1. 'paritycheck', to check if a given piecewise defined
+ function is even or odd (or none). For instance,
+ (%i2) paritycheck(absolute(x),x);
+ (%o2) 0
+ A '0' means 'even', '1' is 'odd', and '-1' is 'none'
+2. 'fourier_sec_coeff', to compute the Fourier sine and cosine
+ coefficients. The function must have compact support.For
+ instance, for the unit step we have:
+ (%i3) h(x):=if (-%pi<=x and x<0) then 0 elseif (0<=x and x<=%pi) then 1$
+ (%i4) fourier_sec_coeff(h(x),x);
+ (%o4) [1/2,0,-((-1)^n-1)/(%pi*n)]
+3. 'fourier_sec_series', to compute the Fourier series, truncated
+ or not. The series for the unit step to the 10th order:
+ (%i5) fourier_sec_series(h(x),x,10);
+ (%o5) (2*sin(9*x))/(9*%pi)+(2*sin(7*x))/(7*%pi)+(2*sin(5*x))/(5*%pi)+(2*sin(3*x))/(3*%pi)+(2*sin(x))/%pi+1/2
+ and the whole Fourier series
+ (%i6) fourier_sec_series(h(x),x,inf);
+ (%o6) (sum(((1/n-(-1)^n/n)*sin(n*x))/%pi,n,1,inf))+1/2
+*/
+
+
+load(fourie)$
+
+load(simplify_sum)$
+
+paritycheck(funvar,x):=block([subintervals,subvalues,tmp1,tmp2,token1,token0,tmp3,
+ subvalues_list,subintervals_list,icentral:0,middle,minusmiddle,token2,
+ side_subintervals_list,L,side_subvalues_list,
+ zero_subintervals,tmp4,tmp5,non_zero_side_subvalues_list,
+ non_zero_side_subintervals_list,LL,token3,expr1,expr2],
+ local(M,N,P,Q,count1,count2,count3,count4),
+ subintervals:makelist(part(funvar,i),i,makelist(2*k-1,k,1,(length(funvar)-2)/2)),
+ subvalues:makelist(part(funvar,i),i,makelist(2*k,k,1,(length(funvar)-2)/2)),
+ for j:1 thru length(subintervals) do (if operatorp(subintervals[j],["<",">","<=",">="]) then tmp1[j]:1 else tmp1[j]:0),
+ tmp1:makelist(tmp1[j],j,1,length(subintervals)),
+ tmp2:sublist_indices(tmp1,lambda([x],x=1)),
+
+ /* if length(tmp2)=0 all the subintervals in the domain of funvar are bounded! */
+
+ if is(equal(length(tmp2),0)) then
+ (
+ subvalues_list:copylist(subvalues),
+ tmp3:copylist(subintervals),
+ for j:1 thru length(tmp3) do
+ (
+ M[j]:makelist(part(tmp3[j],k),k,1,length(tmp3[j])),
+ for m:1 thru 2 do N[j,m]:makelist(part(M[j],m,n),n,1,length(M[j])),
+ P[j]:append(N[j,1],N[j,2]),Q[j]:sort(delete(x,P[j]),"<")
+ ),
+ subintervals_list:makelist(Q[j],j,1,length(tmp3)),
+ for i:1 thru length(subintervals_list) do (if is(lmin(subintervals_list[i])*lmax(subintervals_list[i])<0) then icentral:i),
+ if is(icentral>0) then middle:subvalues_list[icentral],
+ if is(icentral>0) then
+ (if evenfunp(middle,x) then token2:0 elseif oddfunp(middle,x) then token2:1 else return(-1))
+ else
+
+ /* now we analyze what happens if icentral=0, so there are only side intervals */
+
+ (
+ /* as before, there must be an even number of symmetric intervals, otherwise -1 */
+ side_subintervals_list:copylist(subintervals_list),
+ if not(evenp(length(side_subintervals_list))) then return(-1),
+ L:length(side_subintervals_list)/2,
+ for k:1 thru L do count1[k]:charfun(is(equal(side_subintervals_list[k],reverse(map("-",side_subintervals_list[2*L+1-k]))))),
+ if sum(count1[j],j,1,L)#L then return(-1),
+ side_subvalues_list:copylist(subvalues_list),
+ for k:1 thru L do count2[k]:charfun(is(equalp(side_subvalues_list[k],ratsubst(-x,x,side_subvalues_list[2*L+1-k])))),
+ if is(equal(sum(count2[j],j,1,L),L)) then token3:0,
+ for k:1 thru L do count3[k]:charfun(is(equalp(side_subvalues_list[k],-ratsubst(-x,x,side_subvalues_list[2*L+1-k])))),
+ if is(equal(sum(count3[j],j,1,L),L)) then token3:1,
+ if is(not(equalp(token3,0)) and not(equalp(token3,1))) then return(-1) ,
+ return(token3)
+ ),
+
+ /* and what happens if icentral#0 */
+
+ side_subintervals_list:delete(subintervals_list[icentral],subintervals_list),
+ if is(equal(length(side_subintervals_list),0)) then (if is(equal(token1,token2)) then return(token1*token2) else return(-1)),
+ if not(evenp(length(side_subintervals_list))) then return(-1),
+ L:length(side_subintervals_list)/2,
+ for k:1 thru L do count1[k]:charfun(is(equal(side_subintervals_list[k],reverse(map("-",side_subintervals_list[2*L+1-k]))))),
+ if sum(count1[j],j,1,L)#L then return(-1),
+ side_subvalues_list:delete(subvalues_list[icentral],subvalues_list),
+
+ /* remove those subintervals in which funvar vanishes */
+
+ zero_subintervals:sublist_indices(side_subvalues_list,lambda([x],x=0)),
+ tmp4:copylist(side_subintervals_list),
+ for j:1 thru length(zero_subintervals) do
+ (tmp4:delete(side_subintervals_list[zero_subintervals[j]],tmp4)),
+ non_zero_side_subintervals_list:tmp4,
+ tmp5:copylist(side_subvalues_list),
+ for j:1 thru length(zero_subintervals) do
+ (tmp5:delete(side_subvalues_list[zero_subintervals[j]],tmp5)),
+ non_zero_side_subvalues_list:tmp5,
+
+ /* if length(non_zero_side_subintervals_list)=0 then we are done just with token2 */
+
+ if is(equal(length(non_zero_side_subintervals_list),0)) then return(token2),
+
+ /* otherwise, we must also take into account token3 */
+ LL:length(non_zero_side_subintervals_list)/2,
+ for k:1 thru LL do count2[k]:charfun(is(equalp(non_zero_side_subvalues_list[k],ratsubst(-x,x,non_zero_side_subvalues_list[2*LL+1-k])))),
+ if is(equal(sum(count2[j],j,1,LL),LL)) then token3:0,
+ for k:1 thru LL do count3[k]:charfun(is(equalp(non_zero_side_subvalues_list[k],-ratsubst(-x,x,non_zero_side_subvalues_list[2*LL+1-k])))),
+ if is(equal(sum(count3[j],j,1,LL),LL)) then token3:1,
+ if is(not(equal(token3,0) or equal(token3,1))) then return(-1) elseif
+ is(token2#token3) then return(-1)
+ elseif is(equal(token2,0)) then return(0)
+ elseif is(equal(token2,1)) then return(1)
+
+ ),
+
+ /* we continue here with unbounded intervals */
+
+ expr1:subvalues[tmp2[1]],
+ expr2:ratsubst(-x,x,subvalues[tmp2[2]]),
+ if is(equalp(expr1,expr2)) then token1:0
+ elseif is(equalp(expr1,-expr2)) then token1:1
+ else return(-1),
+
+ /* the problem when defining token1 is that if the asymptotic value is 0, then it is always token1:0 */
+ /* although the function could be odd. To cope with this, we define token0 below */
+
+ tmp3:makelist(subintervals[i],i,sublist_indices(tmp1,lambda([x],x=0))),
+ if is(equal(length(tmp3),0)) then return(token1),
+ subvalues_list:makelist(subvalues[i],i,sublist_indices(tmp1,lambda([x],x=0))),
+ token0:if member(0,makelist(subvalues[i],i,tmp2)) then 0 else 7,
+ for j:1 thru length(tmp3) do
+ (
+ M[j]:makelist(part(tmp3[j],k),k,1,length(tmp3[j])),
+ for m:1 thru 2 do N[j,m]:makelist(part(M[j],m,n),n,1,length(M[j])),
+ P[j]:append(N[j,1],N[j,2]),Q[j]:sort(delete(x,P[j]),"<")
+ ),
+ subintervals_list:makelist(Q[j],j,1,length(tmp3)),
+ for i:1 thru length(subintervals_list) do (if is(lmin(subintervals_list[i])*lmax(subintervals_list[i])<0) then icentral:i),
+ if is(icentral>0) then middle:subvalues_list[icentral],
+ if is(icentral>0) then
+ (if evenfunp(middle,x) then token2:0 elseif oddfunp(middle,x) then token2:1 else return(-1))
+ else
+
+ /* now we analyze what happens if icentral=0, so there are only non-bounded intervals and side intervals */
+
+ (
+ /* as before, there must be an even number of symmetric intervals, otherwise -1 */
+ side_subintervals_list:copylist(subintervals_list),
+ if not(evenp(length(side_subintervals_list))) then return(-1),
+ L:length(side_subintervals_list)/2,
+ for k:1 thru L do count1[k]:charfun(is(equal(side_subintervals_list[k],reverse(map("-",side_subintervals_list[2*L+1-k]))))),
+ if sum(count1[j],j,1,L)#L then return(-1),
+ side_subvalues_list:copylist(subvalues_list),
+ for k:1 thru L do count2[k]:charfun(is(equalp(side_subvalues_list[k],ratsubst(-x,x,side_subvalues_list[2*L+1-k])))),
+ if is(equal(sum(count2[j],j,1,L),L)) then token3:0,
+ for k:1 thru L do count3[k]:charfun(is(equalp(side_subvalues_list[k],-ratsubst(-x,x,side_subvalues_list[2*L+1-k])))),
+ if is(equal(sum(count3[j],j,1,L),L)) then token3:1,
+ if is(not(equal(token3,0)) and not(equal(token3,1))) then return(-1) elseif
+ is(not(equal(token1,token3)) and not(equal(token0,0))) then return(-1)
+ elseif is( equal(token0,0) and equal(token3,0)) then return(0)
+ elseif is( equal(token0,0) and equal(token3,1)) then return(1)
+ elseif is(not(equal(token0,0)) and equal(token1,token3)) then return(token3)
+ elseif is(not(equal(token0,0)) and not(equal(token1,token3))) then return(-1)
+ ),
+
+ /* and what happens if icentral#0 */
+
+ side_subintervals_list:delete(subintervals_list[icentral],subintervals_list),
+ if is(equal(length(side_subintervals_list),0)) then (if is(equal(token1,token2)) then return(token1*token2) else return(-1)),
+ if not(evenp(length(side_subintervals_list))) then return(-1),
+ L:length(side_subintervals_list)/2,
+ for k:1 thru L do count1[k]:charfun(is(equal(side_subintervals_list[k],reverse(map("-",side_subintervals_list[2*L+1-k]))))),
+ if sum(count1[j],j,1,L)#L then return(-1),
+ side_subvalues_list:delete(subvalues_list[icentral],subvalues_list),
+
+ /* remove those subintervals in which funvar vanishes */
+
+ zero_subintervals:sublist_indices(side_subvalues_list,lambda([x],x=0)),
+ tmp4:copylist(side_subintervals_list),
+ for j:1 thru length(zero_subintervals) do
+ (tmp4:delete(side_subintervals_list[zero_subintervals[j]],tmp4)),
+ non_zero_side_subintervals_list:tmp4,
+ tmp5:copylist(side_subvalues_list),
+ for j:1 thru length(zero_subintervals) do
+ (tmp5:delete(side_subvalues_list[zero_subintervals[j]],tmp5)),
+ non_zero_side_subvalues_list:tmp5,
+
+ /* if length(non_zero_side_subintervals_list)=0 then we are done just with token1 and token2 */
+
+ if is(equal(length(non_zero_side_subintervals_list),0)) then (if is(equal(token1,token2)) then return(token1*token2) else return(-1)),
+
+ /* otherwise, we must also take into account token3 */
+ LL:length(non_zero_side_subintervals_list)/2,
+ for k:1 thru LL do count2[k]:charfun(is(equalp(non_zero_side_subvalues_list[k],ratsubst(-x,x,non_zero_side_subvalues_list[2*LL+1-k])))),
+ if is(equal(sum(count2[j],j,1,LL),LL)) then token3:0,
+ for k:1 thru LL do count3[k]:charfun(is(equalp(non_zero_side_subvalues_list[k],-ratsubst(-x,x,non_zero_side_subvalues_list[2*LL+1-k])))),
+ if is(equal(sum(count3[j],j,1,LL),LL)) then token3:1,
+ if is(not(equal(token0,0)) and is(not(equal(token1,token2)) or not(equal(token1,token3)) or not(equal(token2,token3))) ) then return(-1)
+ elseif is(not(equal(token0,0)) and is(equal(token1,0)) ) then return(0)
+ elseif is(not(equal(token0,0)) and is(equal(token1,1)) ) then return(1)
+ elseif is( equal(token0,0) and equal(token3,0) and equal(token2,0)) then return(0)
+ elseif is( equal(token0,0) and equal(token3,1) and equal(token2,1)) then return(1)
+ else return(-1)
+
+)$
+
+fourier_sec_coeff(fuvar,x):=
+block([pp,LL,lm,a0,coeff],
+ local(a,b,n,MM,NN,PP,QQ),
+ declare(n,integer),
+ pp:((length(fuvar)/2)-1),
+ LL:makelist(part(fuvar,i),i,makelist(2*s-1,s,1,pp)),
+ for j:1 thru length(LL) step 1 do
+ (
+ MM[j]:makelist(part(LL[j],r),r,1,length(LL[j])),
+ for r:1 thru 2 do NN(j,r):=makelist(part(MM[j],r,k),k,1,length(MM[j])),
+ PP[j]:append(NN(j,1),NN(j,2)),QQ[j]:delete(x,PP[j])
+ ),
+ for i:1 thru pp step 1 do partsums[i]:sort(QQ[i],"<"),
+ for i:1 thru pp step 1 do partfunc[i]:part(fuvar,2*i),
+ lm:lmax(unique(flatten(makelist(QQ[q],q,1,length(LL))))),
+ a0:(1/(2*lm))*sum(integrate(partfunc[i],x,partsums[i][1],partsums[i][2]),i,1,pp),
+ if is(equal(paritycheck(fuvar,x),1)) then a(n):=0 else a(n):=(1/lm)*sum(adefint(partfunc[i]*cos(%pi*n*x/lm),x,partsums[i][1],partsums[i][2]),i,1,pp),
+ if is(equal(paritycheck(fuvar,x),0)) then b(n):=0 else b(n):=(1/lm)*sum(adefint(partfunc[i]*sin(%pi*n*x/lm),x,partsums[i][1],partsums[i][2]),i,1,pp),
+ coeff:[a0,simplify_sum(a(n)),simplify_sum(b(n))],
+ factor(ratsimp(coeff))
+)$
+
+fourier_sec_series(fuvar,x,u):=
+block([pp,LL,lm,a0,coeff],
+ local(a,b,n,MM,NN,PP,QQ),
+ declare(n,integer),
+ pp:((length(fuvar)/2)-1),
+ LL:makelist(part(fuvar,i),i,makelist(2*s-1,s,1,pp)),
+ for j:1 thru length(LL) step 1 do
+ (
+ MM[j]:makelist(part(LL[j],r),r,1,length(LL[j])),
+ for r:1 thru 2 do NN(j,r):=makelist(part(MM[j],r,k),k,1,length(MM[j])),
+ PP[j]:append(NN(j,1),NN(j,2)),QQ[j]:delete(x,PP[j])
+ ),
+ for i:1 thru pp step 1 do partsums[i]:sort(QQ[i],"<"),
+ for i:1 thru pp step 1 do partfunc[i]:part(fuvar,2*i),
+ lm:lmax(unique(flatten(makelist(QQ[q],q,1,length(LL))))),
+ a0:(1/(2*lm))*sum(integrate(partfunc[i],x,partsums[i][1],partsums[i][2]),i,1,pp),
+ if is(equal(paritycheck(fuvar,x),1)) then a(n):=0 else a(n):=(1/lm)*sum(adefint(partfunc[i]*cos(%pi*n*x/lm),x,partsums[i][1],partsums[i][2]),i,1,pp),
+ if is(equal(paritycheck(fuvar,x),0)) then b(n):=0 else b(n):=(1/lm)*sum(adefint(partfunc[i]*sin(%pi*n*x/lm),x,partsums[i][1],partsums[i][2]),i,1,pp),
+ a0+intosum(sum(a(n)*cos(%pi*n*x/lm),n,1,u))+intosum(sum(b(n)*sin(%pi*n*x/lm),n,1,u)))$ \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/maximaL/matoperation.max b/texmf-dist/scripts/ketpic/ketlib/maximaL/matoperation.max
new file mode 100644
index 00000000..512a9ffb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/maximaL/matoperation.max
@@ -0,0 +1,47 @@
+/* Maxima tips http://www.cymric.jp/maxima/tips.html */
+
+rowmult(X, n, c) := block([M],
+ M:matrix(),
+ for i:1 thru length(X) do
+ if i=n then M:addrow(M, c*row(X, i))
+ else M:addrow(M, row(X, i)),
+ M
+);
+rowadd(X, n, m, c) := block([M],
+ M:matrix(),
+ for i:1 thru length(X) do
+ if i=n then M:addrow(M, c * row(X, m) + row(X, i))
+ else M:addrow(M, row(X, i)),
+ M
+);
+rowch(X, m, n) := block([M],
+ M:matrix(),
+ for i:1 thru length(X) do
+ if i=m then M:addrow(M, row(X, n))
+ else if i=n then M:addrow(M, row(X, m))
+ else M:addrow(M, row(X, i)),
+ M
+);
+
+colmult(X, n, c) := block([M],
+ M:matrix(),
+ for i:1 thru length(transpose(X)) do
+ if i=n then M:addcol(M, c*col(X, i))
+ else M:addcol(M, col(X, i)),
+ M
+);
+coladd(X, n, m, c) := block([M],
+ M:matrix(),
+ for i:1 thru length(transpose(X)) do
+ if i=n then M:addcol(M, c * col(X, m) + col(X, i))
+ else M:addcol(M, col(X, i)),
+ M
+);
+colch(X, m, n) := block([M],
+ M:matrix(),
+ for i:1 thru length(transpose(X)) do
+ if i=m then M:addcol(M, col(X, n))
+ else if i=n then M:addcol(M, col(X, m))
+ else M:addcol(M, col(X, i)),
+ M
+);
diff --git a/texmf-dist/scripts/ketpic/ketlib/maximaL/poincare.mac b/texmf-dist/scripts/ketpic/ketlib/maximaL/poincare.mac
new file mode 100644
index 00000000..aefab3a2
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/maximaL/poincare.mac
@@ -0,0 +1,71 @@
+/* Poincare.mac is a set of routines for the computation
+of Poincare surfaces of sections of Hamiltonian systems */
+
+/* Author: Jose A Vallejo
+Universidad Autonoma de San Luis Potosi (Mexico)
+josanv@gmail.com */
+
+/* To avoid messages when loading draw, execute
+with_stdout("/dev/null",load(draw))$ (in Linux)
+with_stdout("NUL",load(draw))$ (in Windows) */
+
+/* Poincare.mac requires a compiled version of
+rkfun.lisp, a LISP implementation of the RK4
+algorithm due to Richard Fateman. The original
+code can be downloaded from
+https://people.eecs.berkeley.edu/~fateman/lisp/rkfun.lisp */
+
+/*load("rkfun.fasl");*/
+/*load("rkfun.lisp");*/
+
+
+hameqs(H,name):=block(
+[vv,t,tvv,n,Q,P,eqq,eqp,eqs],
+vv:args(lhs(apply(fundef,[H]))),
+tvv:cons(t,vv),
+n:length(vv)/2,
+Q:makelist(vv[2*j-1],j,1,n),
+P:makelist(vv[2*k],k,1,n),
+eqq:makelist(float(diff(apply(H,vv),P[j])),j,1,n),
+eqp:makelist(float(-diff(apply(H,vv),Q[j])),j,1,n),
+eqs:join(eqq,eqp),
+for j:1 thru 2*n do define(funmake(concat(name,j),tvv),block([],mode_identity(float,vv),eqs[j])),
+apply(compile,makelist(concat(name,j),j,1,2*n)),
+[makelist(apply(concat(name,j),tvv),j,1,2*n),vv,makelist(concat(name,j),j,1,2*n)]
+)$
+
+lextract(ll,n):=block([l,a,b],
+l:length(ll),
+a:rest(ll,n),
+b:rest(ll,n-l-1),
+append(b,a)
+)$
+
+poincare3d(H,name,inicond,timestep,coord):=block(
+[heq,vars,tvars,hfuns,c,sol],
+heq:hameqs(H,name),
+vars:heq[2],
+tvars:cons(t,vars),
+hfuns:heq[3],
+c:first(sublist_indices(vars,lambda([x],x=coord))),
+sol:rkfun(hfuns,tvars,float(inicond),timestep),
+map(lambda([x],lextract(x,c)),map(lambda([x],rest(x)),sol))
+)$
+
+poincare2d(H,name,inicond,timestep,scene):=block(
+[heq,vars,tvars,hfuns,solu,c,soluc,sola,solb,subind,sol,e,f],
+heq:hameqs(H,name),
+vars:heq[2],
+tvars:cons(t,vars),
+hfuns:heq[3],
+solu:rkfun(hfuns,tvars,float(inicond),timestep),
+c:first(sublist_indices(vars,lambda([x],x=first(scene)))),
+soluc:map(lambda([x],x[c+1]),solu),
+sola:rest(soluc,-1)-second(scene),
+solb:rest(soluc)-second(scene),
+subind:sublist_indices(sola*solb,lambda([x],is(x < 0))),
+sol:makelist(solu[k],k,subind),
+e:first(sublist_indices(vars,lambda([x],x=third(scene))))+1,
+f:first(sublist_indices(vars,lambda([x],x=fourth(scene))))+1,
+makelist([j[e],j[f]],j,sol)
+)$ \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/maximaL/rkfun.lisp b/texmf-dist/scripts/ketpic/ketlib/maximaL/rkfun.lisp
new file mode 100644
index 00000000..70aafc7f
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/maximaL/rkfun.lisp
@@ -0,0 +1,99 @@
+;; variation on runge-kutta (rk) routine in complex_dynamics.lisp by villate@fe.up.pt
+;; this one with changed by fateman@berkeley.edu
+
+#| rkfun may be much faster than rk because it calls compiled programs.
+ rkfun (this file) should also be compiled to speed it up.
+ how to use:
+
+
+ first, read and understand the documentation for rk().
+ next, define the ODE right hand sides as functions as shown below
+
+fun1(y,x,x0):= x0$
+fun2(y,x,x0):= block([], mode_declare([y, x0,x],float),(1-x^2)*x0-x);
+compile(fun1)$
+compile(fun2)$
+showtime:all$
+
+last(rkfun([fun1,fun2],[x,xdot],[0.0,0.6],[t,0,50,0.01]));
+
+/* which is, in one test, 18 times faster than */
+
+last(rk([xdot,(1-x^2)*xdot -x],[x,xdot],[0.0,0.6],[t,0,50,0.01]));
+
+|#
+
+(defun $rkfun (funs vars initial domain ;; taken from complex_dynamics.lisp
+ &aux d u funlist k1 k2 k3 k4 r1 r2 r3 traj r
+ (it (mapcar #'coerce-float (cddr domain))))
+ (unless ($listp funs) (setq funs `((mlist) ,funs)))
+ (unless ($listp initial) (setq initial `((mlist) ,initial)))
+ (unless ($listp vars) (setq vars `((mlist) ,vars)))
+ (dolist (var (cdr vars))
+ (unless (symbolp var)
+ (merror (intl:gettext "rk: variable name expected; found: ~M") var)))
+ (unless (symbolp (cadr domain))
+ (merror (intl:gettext "rk: variable name expected; found: ~M")
+ (cadr domain)))
+ (setq vars (append '((mlist)) (list (cadr domain)) (cdr vars)))
+ (setq r (append `(,(car it)) (mapcar #'coerce-float (cdr initial))))
+ (setq funlist (cdr funs))
+
+ (setq d (/ (- (cadr it) (car it)) (caddr it)))
+ (setq traj (list (cons '(mlist) r)))
+ (do ((m 1 (1+ m))) ((> m d))
+ (progn ;;; was ignore-errors
+ (setq k1 (mapcar #'(lambda (x) (apply x r)) funlist))
+ (setq r1 (map 'list #'+ (cdr r) (mapcar #'(lambda (x) (* 0.5d0 (caddr it) x)) k1)))
+ (push (+ (car r) (/ (caddr it) 2)) r1)
+ (setq k2 (mapcar #'(lambda (x) (apply x r1)) funlist))
+ (setq r2 (map 'list #'+ (cdr r) (mapcar #'(lambda (x) (* 0.5d0(caddr it) x)) k2)))
+ (push (+ (car r) (/ (caddr it) 2)) r2)
+ (setq k3 (mapcar #'(lambda (x) (apply x r2)) funlist))
+ (setq r3 (map 'list #'+ (cdr r) (mapcar #'(lambda (x) (* (caddr it) x)) k3)))
+ (push (+ (car r) (caddr it)) r3)
+ (setq k4 (mapcar #'(lambda (x) (apply x r3)) funlist))
+ (setq u (map 'list #'+
+ (mapcar #'(lambda (x) (* #.(/ 1.0 6.0d0) x)) k1)
+ (mapcar #'(lambda (x) (* #.(/ 1.0 3.0d0) x)) k2)
+ (mapcar #'(lambda (x) (* #.(/ 1.0 3.0d0) x)) k3)
+ (mapcar #'(lambda (x) (* #.(/ 1.0 6.0d0) x)) k4)))
+ (setq r
+ (append
+ `(,(+ (car it) (* m (caddr it))))
+ (map 'list #'+ (cdr r) (mapcar #'(lambda (x) (* (caddr it) x)) u))))
+ (push (cons '(mlist) r) traj)))
+ (when (< (car r) (cadr it))
+ (let ((s (- (cadr it) (car r))) )
+ (declare(double-float s)(special s)(optimize (speed 3)(safety 0)))
+ (progn ;; was ignore-errors
+ (setq k1 (mapcar #'(lambda (x) (mapply x r nil)) funlist))
+ (setq r1 (map 'list #'+ (cdr r) (mapcar #'(lambda (x)
+ (declare(double-float x))
+ (* s 0.5d0 x)) k1)))
+ (push (+ (car r) (* 0.5d0 s)) r1)
+ (setq k2 (mapcar #'(lambda (x) (mapply x r1 nil)) funlist))
+ (setq r2 (map 'list #'+ (cdr r) (mapcar #'(lambda (x)(declare(double-float x))
+ (* s 0.5d0 x)) k2)))
+ (push (+ (car r) (* 0.5d0 s)) r2)
+ (setq k3 (mapcar #'(lambda (x) (mapply x r2 nil)) funlist))
+ (setq r3 (map 'list #'+ (cdr r) (mapcar #'(lambda (x)(declare(double-float x))
+ (* s x)) k3)))
+ (push (+ (car r) s) r3)
+ (setq k4 (mapcar #'(lambda (x) (mapply x r3 nil)) funlist))
+ (setq u (map 'list #'+
+ (mapcar #'(lambda (x)(declare(double-float x))
+ (* #.(/ 1.0d0 6.0d0) x)) k1)
+ (mapcar #'(lambda (x)(declare(double-float x))
+ (* #.(/ 1.0d0 3.0d0) x)) k2)
+ (mapcar #'(lambda (x) (declare(double-float x))
+ (* #.(/ 1.0d0 3.0d0) x)) k3)
+ (mapcar #'(lambda (x)(declare(double-float x))
+ (* #.(/ 1.0d0 6.0d0) x)) k4)))
+ (setq r
+ (append
+ `(,(cadr it))
+ (map 'list #'+ (cdr r) (mapcar #'(lambda (x)(declare(double-float x))
+ (* s x)) u))))
+ (push (cons '(mlist) r) traj))))
+ (cons '(mlist) (nreverse traj))) \ No newline at end of file
diff --git a/texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.pdf b/texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.pdf
new file mode 100644
index 00000000..d3d06401
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.pdf
Binary files differ
diff --git a/texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.rr b/texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.rr
new file mode 100644
index 00000000..badddccb
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlib/oshima/os_muldif.rr
@@ -0,0 +1,18855 @@
+/* The latest version will be at ftp://akagi.ms.u-tokyo.ac.jp/pub/math/muldif
+ scp os_muldif.[dp]* ${USER}@lemon.math.kobe-u.ac.jp:/home/web/OpenXM/Current/doc/other-docs
+*/
+#define USEMODULE 1
+/* #undef USEMODULE */
+
+/* os_muldif.rr (Library for Risa/Asir)
+ * Toshio Oshima (Nov. 2007 - June 2017)
+ *
+ * For polynomials and differential operators with coefficients
+ * in rational funtions (See os_muldif.pdf)
+ *
+ * "Tab = 4 column" is best
+ */
+
+ord([zz,dz,dy,dx])$
+
+#ifdef USEMODULE
+module os_md;
+static Muldif.rr$
+static TeXEq$
+static TeXLim$
+static DIROUT$
+static DIROUTD$
+static DVIOUTL$
+static DVIOUTA$
+static DVIOUTB$
+static DVIOUTH$
+static DVIOUTF$
+static LCOPT$
+static COLOPT$
+static LPOPT$
+static LFOPT$
+static ErMsg$
+static FLIST$
+static IsYes$
+static XYPrec$
+static XYcm$
+static TikZ$
+static XYLim$
+static Canvas$
+static ID_PLOT$
+static Rand$
+static LQS$
+localf spType2$
+localf erno$
+localf chkfun$
+localf makev$
+localf shortv$
+localf makenewv$
+localf vweyl$
+localf mycat$
+localf mycat0$
+localf fcat$
+localf findin$
+localf countin$
+localf mycoef$
+localf mydiff$
+localf myediff$
+localf m2l$
+localf m2ll$
+localf mydeg$
+localf pfctr$
+localf mymindeg$
+localf m1div$
+localf mulsubst$
+localf cmpsimple$
+localf simplify$
+localf monotos$
+localf minustos$
+localf monototex$
+localf vnext$
+localf ldict$
+localf ndict$
+localf nextsub$
+localf nextpart$
+localf transpart$
+localf trpos$
+localf sprod$
+localf sinv$
+localf slen$
+localf sord$
+localf vprod$
+localf dvangle$
+localf dvprod$
+localf dnorm$
+localf mulseries$
+localf pluspower$
+localf vtozv$
+localf dupmat$
+localf matrtop$
+localf mytrace$
+localf mydet$
+localf mperm$
+localf mtranspose$
+localf mtoupper$
+localf mydet2$
+localf myrank$
+localf meigen$
+localf transm$
+localf vgen$
+localf mmc$
+localf lpgcd$
+localf mdivisor$
+localf mdsimplify$
+localf m2mc$
+localf easierpol$
+localf paracmpl$
+localf mykernel$
+localf myimage$
+localf mymod$
+localf mmod$
+localf ladd$
+localf lchange$
+localf llsize$
+localf llbase$
+localf lsort$
+localf lmax$
+localf lmin$
+localf lgcd$
+localf llcm$
+localf ldev$
+localf lsol$
+localf lnsol$
+localf l2p$
+localf m2v$
+localf lv2m$
+localf m2lv$
+localf s2m$
+localf c2m$
+localf m2diag$
+localf myinv$
+localf madjust$
+localf mpower$
+localf mrot$
+localf texlen$
+localf isdif$
+localf fctrtos$
+localf texlim$
+localf fmult$
+localf radd$
+localf getel$
+localf ptol$
+localf rmul$
+localf mtransbys$
+localf drawopt$
+localf execdraw$
+localf execproc$
+localf myswap$
+localf mysubst$
+localf evals$
+localf myval$
+localf myeval$
+localf mydeval$
+localf myfeval$
+localf myf2eval$
+localf myf3eval$
+localf myfdeval$
+localf myf2deval$
+localf myf3deval$
+localf myexp$
+localf mycos$
+localf mysin$
+localf mytan$
+localf myarg$
+localf myasin$
+localf myacos$
+localf myatan$
+localf mylog$
+localf mypow$
+localf scale$
+localf arg$
+localf sqrt$
+localf gamma$
+localf lngamma$
+localf digamma$
+localf dilog$
+localf zeta$
+localf eta$
+localf jell$
+localf frac$
+localf erfc$
+localf fouriers$
+localf todf$
+localf f2df$
+localf df2big$
+localf compdf$
+localf fzero$
+localf fmmx$
+localf flim$
+localf fcont$
+localf fresidue$
+localf mmulbys$
+localf appldo$
+localf appledo$
+localf muldo$
+localf jacobian$
+localf hessian$
+localf wronskian$
+localf adj$
+localf laplace1$
+localf laplace$
+localf mce$
+localf mc$
+localf rede$
+localf ad$
+localf add$
+localf vadd$
+localf addl$
+localf cotr$
+localf rcotr$
+localf muledo$
+localf mulpdo$
+localf transpdosub$
+localf transpdo$
+localf translpdo$
+localf rpdiv$
+localf mygcd$
+localf mylcm$
+localf sftpexp$
+localf applpdo$
+localf tranlpdo$
+localf divdo$
+localf qdo$
+localf sqrtdo$
+localf ghg$
+localf ev4s$
+localf b2e$
+localf sftpow$
+localf sftpowext$
+localf polinsft$
+localf pol2sft$
+localf polroots$
+localf fctri$
+localf binom$
+localf expower$
+localf seriesHG$
+localf seriesMc$
+localf seriesTaylor$
+localf evalred$
+localf toeul$
+localf fromeul$
+localf sftexp$
+localf fractrans$
+localf soldif$
+localf chkexp$
+localf sqrtrat$
+localf getroot$
+localf expat$
+localf polbyroot$
+localf polbyvalue$
+localf pcoef$
+localf prehombf$
+localf prehombfold$
+localf sub3e$
+localf fuchs3e$
+localf okubo3e$
+localf eosub$
+localf even4e$
+localf odd5e$
+localf extra6e$
+localf rigid211$
+localf solpokuboe$
+localf stoe$
+localf dform$
+localf polinvsym$
+localf polinsym$
+localf tohomog$
+localf substblock$
+localf okuboetos$
+localf heun$
+localf fspt$
+localf abs$
+localf calc$
+localf isint$
+localf israt$
+localf iscrat$
+localf isalpha$
+localf isnum$
+localf isalphanum$
+localf isdecimal$
+localf isvar$
+localf isyes$
+localf isall$
+localf iscoef$
+localf iscombox$
+localf sproot$
+localf spgen$
+localf chkspt$
+localf cterm$
+localf terms$
+localf polcut$
+localf redgrs$
+localf cutgrs$
+localf mcgrs$
+localf mc2grs$
+localf mcmgrs$
+localf anal2sp$
+localf delopt$
+localf str_char$
+localf str_pair$
+localf str_cut$
+localf str_str$
+localf str_subst$
+localf str_times$
+localf str_tb$
+localf strip$
+localf i2hex$
+localf sjis2jis$
+localf jis2sjis$
+localf s2os$
+localf l2os$
+localf r2os$
+localf s2euc$
+localf s2sjis$
+localf r2ma$
+localf evalma$
+localf ssubgrs$
+localf verb_tex_form$
+localf tex_cuteq$
+localf my_tex_form$
+localf texket$
+localf smallmattex$
+localf divmattex$
+localf dviout0$
+localf myhelp$
+localf isMs$
+localf showbyshell$
+localf readcsv$
+localf tocsv$
+localf getbyshell$
+localf show$
+localf dviout$
+localf rtotex$
+localf mtotex$
+localf ltotex$
+localf texbegin$
+localf texcr$
+localf texsp$
+localf getbygrs$
+localf mcop$
+localf shiftop$
+localf conf1sp$
+localf pgen$
+localf diagm$
+localf mgen$
+localf madj$
+localf newbmat$
+localf unim$
+localf pfrac$
+localf cfrac$
+localf cfrac2n$
+localf sqrt2rat$
+localf s2sp$
+localf sp2grs$
+localf fimag$
+localf trig2exp$
+localf intpoly$
+localf integrate$
+localf simplog$
+localf fshorter$
+localf isshortneg$
+localf intrat$
+localf powsum$
+localf bernoulli$
+localf lft01$
+localf linfrac01$
+localf nthmodp$
+localf issquaremodp$
+localf rootmodp$
+localf rabin$
+localf primroot$
+localf varargs$
+localf ptype$
+localf pfargs$
+localf average$
+localf sint$
+localf frac2n$
+localf xyproc$
+localf xypos$
+localf xyput$
+localf xybox$
+localf xyline$
+localf xylines$
+localf xycirc$
+localf xybezier$
+localf lbezier$
+localf draw_bezier$
+localf tobezier$
+localf velbezier$
+localf ptbezier$
+localf cutf$
+localf fsum$
+localf fint$
+localf periodicf$
+localf cmpf$
+localf areabezier$
+localf saveproc$
+localf xygraph$
+localf xy2graph$
+localf xyarrow$
+localf xyarrows$
+localf xyang$
+localf xyoval$
+localf ptcommon$
+localf ptcopy$
+localf ptaffine$
+localf ptlattice$
+localf ptpolygon$
+localf ptwindow$
+localf ptbbox$
+localf lninbox$
+localf ptcombezier$
+localf ptcombz$
+localf lchange$
+localf init$
+localf powprimroot$
+localf distpoint$
+localf ntable$
+localf keyin$
+localf mqsub$
+localf msort$
+#else
+extern Muldif.rr$
+extern TeXEq$
+extern TeXLim$
+extern DIROUT$
+extern DIROUTD$
+extern DVIOUTL$
+extern DVIOUTA$
+extern DVIOUTB$
+extern DVIOUTH$
+extern DVIOUTF$
+static LCOPT$
+static COLOPT$
+static LPOPT$
+static LFOPT$
+extern TikZ$
+extern ErMsg$
+extern FLIST$
+extern IsYes$
+extern XYPrec$
+extern XYcm$
+extern TikZ$
+extern XYLim$
+extern Canvas$
+extern ID_PLOT$
+extern Rand$
+extern LQS$
+#endif
+static S_Fc,S_Dc,S_Ic,S_Ec,S_EC,S_Lc$
+static S_FDot$
+extern AMSTeX$
+Muldif.rr="00170612"$
+AMSTeX=1$
+TeXEq=5$
+TeXLim=80$
+TikZ=0$
+XYcm=0$
+XYPrec=3$
+XYLim=4$
+Rand=0$
+DIROUT="%HOME%\\tex"$
+DVIOUTL="%ASIRROOT%\\bin\\risatex0.bat"$
+DVIOUTA="%ASIRROOT%\\bin\\risatex.bat"$
+DVIOUTB="%ASIRROOT%\\bin\\risatex1%TikZ%.bat"$
+DVIOUTH="start dviout -2 -hyper=0x90 \"%ASIRROOT%\\help\\os_muldif.dvi\" #%LABEL%"$
+DVIOUTF=0$
+LCOPT=["red","green","blue","yellow","cyan","magenta","black","white","gray"]$
+COLOPT=[0xff,0xff00,0xff0000,0xffff,0xffff00,0xff00ff,0,0xffffff,0xc0c0c0]$
+LPOPT=["above","below","left","right"]$
+LFOPT=["very thin","thin","dotted","dashed"]$
+Canvas=[400,400]$
+LQS=[[1,0]]$
+
+ErMsg = newvect(3,[
+ "irregal argument", /* 0 */
+ "too big size", /* 1 */
+ "irregal option" /* 2 */
+])$
+FLIST=0$
+IsYes=[]$
+ID_PLOT=-1$
+
+def erno(N)
+{
+ /* extern ErMsg; */
+ print(ErMsg[N]);
+}
+
+def chkfun(Fu, Fi)
+{
+ /* extern FLIST; */
+ /* extern Muldif.rr; */
+
+ if(type(Fu) <= 1){
+ if(Fu==1)
+ mycat(["Loaded os_muldif Ver.", Muldif.rr, "(Toshio Oshima)"]);
+ else
+ mycat(["Risa/Asir Ver.", version()]);
+ return 1;
+ }
+ if(type(FLIST) < 4)
+ FLIST = flist();
+ if(type(Fu) == 4){
+ for(; Fu != [] ;Fu = cdr(Fu))
+ if(chkfun(car(Fu),Fi) == 0) return 0;
+ return 1;
+ }
+ if(findin(Fu, FLIST) >= 0)
+ return 1;
+ FLIST = flist();
+ if(findin(Fu, FLIST) >= 0)
+ return 1;
+ if(type(Fi)==7){
+ mycat0(["load(\"", Fi,"\") -> try again!\n"],1);
+ load(Fi);
+ }
+ return 0;
+/*
+ if(type(Fi) == 7)
+ Fi = [Fi];
+ for( ; Fi != []; Fi = cdr(Fi))
+ load(car(Fi));
+ FLIST = flist();
+ return (findin(Fu,FLIST)>=0)?1:0;
+*/
+}
+
+def makev(L)
+{
+ S = "";
+ Num=getopt(num);
+ while(length(L) > 0){
+ VL = car(L); L = cdr(L);
+ if(type(VL) == 7)
+ S = S+VL;
+ else if(type(VL) == 2 || VL < 10)
+ S = S+rtostr(VL);
+ else if(VL<46 && Num!=1)
+ S = S+asciitostr([VL+87]);
+ else
+ S = S+rtostr(VL);
+ }
+ return strtov(S);
+}
+
+def makenewv(L)
+{
+ if((V=getopt(var))<2) V="z_";
+ else if(isvar(V)) V=rtostr(V);
+ if(type(N=getopt(num))!=1) N=0;
+ Var=vars(L);
+ for(Va=Var;Va!=[];Va=cdr(Va))
+ if(vtype(car(Va))==2) Var=append(vars(args(car(Va))),Var);
+ for(XX=[],I=J=0;;I++){
+ X=strtov(V+rtostr(I));
+ if(findin(X,Var)<0){
+ XX=cons(X,XX);
+ if(++J>N) return X;
+ else if(J==N) return reverse(XX);
+ }
+ }
+}
+
+def shortv(P,L)
+{
+ V=vars(P);
+ if(type(T=getopt(top))==2) T=strtoascii(rtostr(T))[0]-87;
+ else T=10;
+ for(;L!=[];L=cdr(L)){
+ for(J=0;J<36;J++){
+ if(findin(X=makev([car(L),J]|num=1),V)>=0){
+ while(findin(Y=makev([T]),V)>=0) T++;
+ if(T>35) return P;
+ P=subst(P,X,Y);
+ T++;
+ }else if(J>0) break;
+ }
+ }
+ return P;
+}
+
+def vweyl(L)
+{
+ if(type(L) == 4){
+ if(length(L) == 2)
+ return L;
+ else
+ return [L[0],makev(["d",L[0]])];
+ }
+ /* else if(type(L)<2) return L; */
+ return [L,makev(["d", L])];
+}
+
+def mycat(L)
+{
+ if(type(L) != 4){
+ print(L);
+ return;
+ }
+ Opt = getopt(delim);
+ Del = (type(Opt) >= 0)?Opt:" ";
+ Opt = getopt(cr);
+ CR = (type(Opt) >= 0)?0:1;
+ while(L != []){
+ if(Do==1)
+ print(Del,0);
+ print(car(L),0);
+ L=cdr(L);
+ Do = 1;
+ }
+ if(CR) print("");
+}
+
+def fcat(S,X)
+{
+ if(type(S)!=7){
+ T="fcat";
+ if(S>=2&&S<=9) T+=rtostr(S);
+ T=DIROUTD+T+".txt";
+ if(S==-1) return T;
+ if(S!=0&&access(T)) remove_file(T);
+ S=T;
+ }
+ output(S);
+ print(X);
+ output();
+ if(getopt(exe)==1) shell("\""+S+"\"");
+}
+
+def mycat0(L,T)
+{
+ Opt = getopt(delim);
+ Del = (type(Opt) >= 0)?Opt:"";
+ while(L != []){
+ if(Do==1)
+ print(Del,0);
+ print(car(L),0);
+ L=cdr(L);
+ Do = 1;
+ }
+ if(T) print("");
+}
+
+def findin(M,L)
+{
+ if(type(L)==4){
+ for(I = 0; L != []; L = cdr(L), I++)
+ if(car(L) == M) return I;
+ }else if(type(L)==5){
+ K=length(L);
+ for(I = 0; I < K; I++)
+ if(L[I] == M) return I;
+ }else return -2;
+ return -1;
+}
+
+def countin(S,M,L)
+{
+ Step=getopt(step);
+ if(type(Step)==1){
+ N=(Step>0)?Step:-Step;
+ if(type(L)==5) L=vtol(L);
+ L=qsort(L);
+ while(car(L)<S&&L!=[]) L=cdr(L);
+ S+=M;
+ for(R=[],C=I=0;L!=[];){
+ if(car(L)<S||(Step>0&&car(L)==S)){
+ C++;
+ L=cdr(L);
+ }else{
+ R=cons(C,R);C=0;S+=M;
+ if(N>1&&++I>=N) break;
+ }
+ }
+ if(C>0) R=cons(C,R);
+ if(N>1&&(N-=length(R))>0) while(N-->0) R=cons(0,R);
+ return reverse(R);
+ }
+ if(type(L)==4){
+ for(N=0; L!=[]; L=cdr(L))
+ if(car(L)>=S && car(L)<=M) N++;
+ }else if(type(L)==5){
+ K=length(L);
+ for(I = 0; I < K; I++)
+ if(L[I]>=S && L[I]<=M) N++;
+ }else return -2;
+ return N;
+}
+
+def mycoef(P,N,X)
+{
+ if(type(P)<3 && type(N)<3)
+ return coef(P,N,X);
+ if(type(P) >= 4)
+#ifdef USEMODULE
+ return map(os_md.mycoef,P,N,X);
+#else
+ return map(mycoef,P,N,X);
+#endif
+ if(type(N)==4){
+ for(;N!=[];N=cdr(N),X=cdr(X))
+ P=mycoef(P,car(N),car(X));
+ return P;
+ }
+ if(deg(dn(P), X) > 0){
+ P = red(P);
+ if(deg(dn(P), X) > 0)
+ return 0;
+ }
+ return red(coef(nm(P),N,X)/dn(P));
+}
+
+def mydiff(P,X)
+{
+ if(X == 0)
+ return 0;
+ if(type(P)<3 && type(X)<3)
+ return diff(P,X);
+ if(type(P) >= 4)
+#ifdef USEMODULE
+ return map(os_md.mydiff,P,X);
+#else
+ return map(mydiff,P,X);
+#endif
+ if(type(X)==4){
+ for(;X!=[];X=cdr(X)) P=mydiff(P,car(X));
+ return P;
+ }
+ if(deg(dn(P),X) == 0)
+ return red(diff(nm(P),X)/dn(P));
+ return red(diff(P,X));
+}
+
+def myediff(P,X)
+{
+ if(X == 0)
+ return 0;
+ if(type(P) < 3)
+ return ediff(P,X);
+ if(type(P) >= 4)
+#ifdef USEMODULE
+ return map(os_md.myediff,P,X);
+#else
+ return map(myediff,P,X);
+#endif
+ if(deg(dn(P),X) == 0)
+ return red(ediff(nm(P),X)/dn(P));
+ return red(X*diff(P,X));
+}
+
+def m2l(M)
+{
+ if(type(M) < 4)
+ return [M];
+ if(type(M) == 4){
+ if(type(car(M))==4 && getopt(flat)==1){
+ for(MM = []; M!=[]; M=cdr(M))
+ MM = append(MM,car(M));
+ return MM;
+ }
+ return M;
+ }
+ if(type(M) == 5)
+ return vtol(M);
+ S = size(M);
+ for(MM = [], I = S[0]-1; I >= 0; I--)
+ MM = append(vtol(M[I]), MM);
+ return MM;
+}
+
+def mydeg(P,X)
+{
+ if(type(P) < 3)
+ return deg(P,X);
+ II = -1;
+ Opt = getopt(opt);
+ if(type(P) >= 4){
+ S=(type(P) == 6)?size(P)[0]:0;
+ P = m2l(P);
+ for(I = 0, Deg = -3; P != []; P = cdr(P), I++){
+ if( (DT = mydeg(car(P),X)) == -2)
+ return -2;
+ if(DT > Deg){
+ Deg = DT;
+ II = I;
+ }
+ }
+ return (Opt==1)?([Deg,(S==0)?II:[idiv(II,S),irem(II,S)]]):Deg;
+ }
+ P = red(P);
+ if(deg(dn(P),X) == 0)
+ return deg(nm(P),X);
+ return -2;
+}
+
+def pfctr(P,X)
+{
+ P=red(P);
+ if((T=ptype(P,X))>3) return [];
+ if(T==3){
+ G=pfctr(dn(P),X);
+ F=pfctr(nm(P),X);
+ R=[[car(F)[0]/car(G)[0],1]];
+ for(F=cdr(F);F!=[];F=cdr(F)) R=cons(car(F),R);
+ for(G=cdr(G);G!=[];G=cdr(G)) R=cons([car(G)[0],-car(G)[1]],R);
+ return reverse(R);
+ }
+ F=fctr(nm(P));
+ for(R=[],C=1/dn(P);F!=[];F=cdr(F))
+ if(mydeg(car(F)[0],X)>0) R=cons(car(F),R);
+ else C*=car(F)[0]^car(F)[1];
+ return cons([C,1],reverse(R));
+}
+
+def mymindeg(P,X)
+{
+ if(type(P) < 3)
+ return mindeg(P,X);
+ II = -1;T=60;
+ Opt = getopt(opt);
+ if(type(P) >= 4){
+ S=(type(P) == 6)?size(P)[0]:0;
+ P = m2l(P);
+ for(I = 0, Deg = -3; P != []; P = cdr(P), I++){
+ if(car(P) == 0)
+ continue;
+ if( (DT = mydeg(car(P),X)) == -2)
+ return -2;
+ if(DT < Deg || Deg == -3){
+ if(DT==0){
+ if(type(car(P))>=T) continue;
+ T=type(car(P));
+ }
+ Deg = DT;
+ II = I;
+ }
+ }
+ return (Opt==1)?([Deg,(S==0)?II:[idiv(II,S),irem(II,S)]]):Deg;
+ }
+ P = red(P);
+ if(deg(dn(P),X) == 0)
+ return mindeg(nm(P),X);
+ return -2;
+}
+
+def m1div(M,N,L)
+{
+ L = (type(L) <= 3)?[0,L]:vweyl[L];
+ DX = L[1]; X = L[0];
+ if(mydeg(N,DX) != 0)
+ return 0;
+ DD = mydeg(M,DX);
+ MM = M;
+ while( (Deg=mydeg(MM,DX)) > 0){
+ MC = mycoef(MM,Deg,DX)*DX^(Deg-1);
+ MS = radd(MC, MS);
+ MM = radd(MM, muldo(MC,radd(-DX,N),L));
+ }
+ return [MM, MS];
+}
+
+
+def mulsubst(F,L)
+{
+ N = length(L);
+ if(N == 0)
+ return F;
+ if(type(L[0])!=4) L=[L];
+ if(getopt(inv)==1){
+ for(R=[];L!=[];L=cdr(L)) R=cons([car(L)[1],car(L)[0]],R);
+ L=reverse(R);
+ }
+ if(length(L)==1) return mysubst(F,L);
+ L1 = newvect(N);
+ for(J = 0; J < N ; J++)
+ L1[J] = uc();
+ L2 = newvect(N);
+ for(J = 0; J < N; J++){
+ S = L[J][1];
+ for(I = 0; I < N; I++)
+ S = mysubst(S,[L[I][0],L1[I]]);
+ L2[J] = S;
+ }
+ for(J = 0; J < N; J++)
+ F = mysubst(F, [L[J][0],L2[J]]);
+ for(J = 0; J < N; J++)
+ F = mysubst(F, [L1[J],L[J][0]]);
+ return F;
+}
+
+def cmpsimple(P,Q)
+{
+ T = getopt(comp);
+ if(P == Q)
+ return 0;
+ D = 0;
+ if(type(T) < 0)
+ T = 7;
+ if(iand(T,1))
+ D = length(vars(P)) - length(vars(Q));
+ if(!D && iand(T,2))
+ D = nmono(P) - nmono(Q);
+ if(!D && iand(T,4))
+ D = str_len(rtostr(P)) - str_len(rtostr(Q));
+ if(!D){
+ if(P > Q) D++;
+ else D--;
+ }
+ return D;
+}
+
+def simplify(P,L,T)
+{
+ if(type(P) > 3)
+#ifdef USEMODULE
+ return map(os_md.simplify,P,L,T);
+#else
+ return map(simplify,P,L,T);
+#endif
+ if(type(L[0]) == 4){
+ if(length(L[0]) > 1)
+#if USEMODULE
+ return fmult(os_md.simplify,P,L,[T]);
+#else
+ return fmult(simplify,P,L,[T]);
+#endif
+ L = L[0];
+ }
+ if(type(Var=getopt(var)) == 4 && Var!=[]){
+ if(type(P) == 3)
+ return simplify(nm(P),P,L,T|var=Var)/simplify(dn(P),P,L,T|var=Var);
+ V = car(Var);
+ if((I = mydeg(P,V)) > 0){
+ Var = cdr(Var);
+ for(Q=0; I>=0 ; I--)
+ Q += simplify(mycoef(P,I,V), L, T|var=Var)*V^I;
+ return Q;
+ }
+ }
+ if(length(L) == 1){
+ L = car(L);
+ for(V = vars(L); V != []; V = cdr(V)){
+ VT = car(V);
+ if(deg(L,VT) != 1) continue;
+ P = simplify(P, [VT, -red(coef(L,0,VT)/coef(L,1,VT))], T);
+ }
+ return P;
+ }
+ Q = mysubst(P,[L[0],L[1]]);
+ return (cmpsimple(P,Q|comp=T) <= 0)?P:Q;
+}
+
+def monotos(P)
+{
+ if(nmono(P) <= 1)
+ return rtostr(P);
+ return "("+rtostr(P)+")";
+}
+
+
+def monototex(P)
+{
+ Q=my_tex_form(P);
+ if(nmono(P)<2 && (getopt(minus)!=1 || str_str(Q,"-"|top=0,end=0)<0))
+ return Q;
+ return "("+Q+")";
+}
+
+def minustos(S)
+{
+ if(str_str(S,"-"|top=0,end=0)<0) return S;
+ return "("+S+")";
+}
+
+def vnext(V)
+{
+ S = length(V);
+ for(I = S-1; I > 0; I--){
+ if(V[I-1] < V[I]){
+ V0 = V[I-1];
+ for(J = I+1; J < S; J++)
+ if(V0 >= V[J]) break;
+ V[I-1] = V[--J];
+ V[J] = V0;
+ for(J = S-1; I < J; I++, J--){
+ V0 = V[I];
+ V[I] = V[J];
+ V[J] = V0;
+ }
+ return 1;
+ }
+ }
+ return 0;
+}
+
+def ldict(N, M)
+{
+ Opt = getopt(opt);
+ R = S = [];
+ for(I = 2; N > 0; I++){
+ R = cons(irem(N,I), R);
+ N = idiv(N,I);
+ }
+ L = LL = length(R);
+ T=newvect(LL+1);
+ while(L-- > 0){
+ V = car(R); R = cdr(R);
+ for(I = J = 0; J <= V ; I++){
+ if(T[I] == 0)
+ J++;
+ }
+ T[I-1] = 1;
+ S = cons(LL-I+1, S);
+ }
+ for(I = 0; I <= LL; I++){
+ if(T[I] == 0){
+ S = cons(LL-I, S);
+ break;
+ }
+ }
+ if(M == 0)
+ return S;
+ if(M <= LL){
+ print("too small size");
+ return 0;
+ }
+ T = [];
+ for(I = --M; I > LL; I--)
+ T = cons(I,T);
+ S = append(S,T);
+ if(Opt == 2 || Opt == 3)
+ S = reverse(S);
+ if(Opt != 1 && Opt != 3)
+ return S;
+ for(T = []; S != []; S = cdr(S))
+ T = cons(M-car(S),T);
+ return T;
+}
+
+def ndict(L)
+{
+ Opt = getopt(opt);
+ R = [];
+ if(Opt != 1 && Opt != 2)
+ L = reverse(L);
+ T = (Opt == 1 || Opt == 3)?1:0;
+ for( ; L != []; L = cdr(L)){
+ for(I = 0, V = car(L), LT = cdr(L); LT != []; LT = cdr(LT))
+ if(T == 0){
+ if(V < car(LT)) I++;
+ }else if (V > car(LT)) I++;
+ R = cons(I, R);
+ }
+ R = reverse(R);
+ for(V = 0, I = length(R); I > 0; R = cdr(R), I--)
+ V = V*I + car(R);
+ return V;
+}
+
+def nextsub(L,N)
+{
+ if(type(L) == 1){
+ for(LL = [], I = L-1; I >= 0; I--)
+ LL = cons(I,LL);
+ return LL;
+ }
+ M = length(L = ltov(L));
+ K = N-M;
+ for(I = M-1; I >= 0; I--)
+ if(L[I] < I+K) break;
+ if(I < 0)
+ return 0;
+ for(J = L[I]+1; I < M; I++, J++)
+ L[I] = J;
+ return vtol(L);
+}
+
+def nextpart(L)
+{
+ if(car(L) <= 1)
+ return 0;
+ for(I = 0, L = reverse(L); car(L) == 1; L=cdr(L))
+ I++;
+ I += (K = car(L));
+ R = irem(I,--K);
+ R = (R==0)?[]:[R];
+ for(J = idiv(I,K); J > 0; J--)
+ R = cons(K,R);
+ L = cdr(L);
+ while(L!=[]){
+ R = cons(car(L), R);
+ L = cdr(L);
+ }
+ return R;
+}
+
+def transpart(L)
+{
+ L = reverse(L);
+ for(I=1, R=[]; L!= []; I++){
+ R = cons(length(L), R);
+ while(L != [] && car(L) <= I)
+ L = cdr(L);
+ }
+ return reverse(R);
+}
+
+def trpos(A,B,N)
+{
+ S = newvect(N);
+ for(I = 0; I < N; I++)
+ S[I]=(I==A)?B:((I==B)?A:I);
+ return S;
+}
+
+def sprod(S,T)
+{
+ L = length(S);
+ V = newvect(L);
+ while(--L >= 0)
+ V[L] = S[T[L]];
+ return V;
+}
+
+def sinv(S)
+{
+ L = length(S);
+ V = newvect(L);
+ while(--L >= 0)
+ V[S[L]] = L;
+ return V;
+}
+
+def slen(S)
+{
+ L = length(S);
+ for(V = 0, J = 2; J < L; i++){
+ for(I = 0; I < J; I++)
+ if(S[I] > S[J]) V++;
+ }
+ return V;
+}
+
+def sord(W,V)
+{
+ L = length(W);
+ W0 = nevect(L);
+ V0 = newvect(L);
+ for(I = F = C = 0; I < L; I++){
+ C = 0;
+ if( (W1 = W[I]) > (V1 = V[I]) ){
+ if(F < 0) C = 1;
+ else if(F==0) F = 1;
+ }else if(W1 < V1){
+ if(F > 0) C = 1;
+ else if(F==0) F = -1;
+ }
+ for(J = I;--J >= 0 && W0[J] > W1; ) W0[J+1] = W0[J];
+ W0[J+1] = W1;
+ for(J = I;--J >= 0 && V0[J] > V1; ) V0[J+1] = V0[J];
+ V0[J+1] = V1;
+ if(C){
+ for(J = I; J >= 0; J--){
+ if((W1=W0[J]) == (V1=V0[J])) continue;
+ if(W1 > V1){
+ if(F < 0) return 2;
+ }
+ else if(F > 0) return 2;
+ }
+ }
+ }
+ return F;
+}
+
+def vprod(V1,V2)
+{
+ for(R = 0, I = length(V1)-1; I >= 0; I--)
+ R = radd(R, rmul(V1[I], V2[I]));
+ return R;
+}
+
+def dnorm(V)
+{
+ if(type(V)<2) return dabs(V);
+ R=0;
+ if(type(V)!=4)
+ for (I = length(V)-1; I >= 0; I--) R+= V[I]^2;
+ else{
+ if(type(V[0])>3){
+ V=ltov(V[0])-ltov(V[1]);
+ return dnorm(V);
+ }
+ for(;V!=[]; V=cdr(V)) R+=car(V)^2;
+ }
+ return dsqrt(R);
+}
+
+def dvprod(V1,V2)
+{
+ if(type(V1)<2) return V1*V2;
+ R=0;
+ if(type(V1)!=4)
+ for(I = length(V1)-1; I >= 0; I--)
+ R += V1[I]*V2[I];
+ else{
+ for(; V1!=[]; V1=cdr(V1),V2=cdr(V2))
+ R+=car(V1)*car(V2);
+ }
+ return R;
+}
+
+def dvangle(V1,V2)
+{
+ if(V2==0 && type(V1)==4 && length(V1)==3 &&
+ (type(V1[0])==4 || type(V1[0])==5 || type(V1[1])==4 || type(V1[1])==5 ||
+ type(V1[2])==4 || type(V1[2])==5) ){
+ if(V1[0]==0 || V1[1]==0 || V1[2]==0) return 1;
+ PV2=V1[1];
+ if(type(PV2)==4){
+ PV2=ltov(PV2);
+ return dvangle(PV2-ltov(V1[0]),ltov(V1[2])-PV2);
+ }else
+ return dvangle(PV2-V1[0],V1[2]-PV2);
+ }
+ if((L1=dnorm(V1))==0 || (L2=dnorm(V2))==0) return 1;
+ return dvprod(V1,V2)/(L1*L2);
+}
+
+def mulseries(V1,V2)
+{
+ L = length(V1);
+ if(size(V2) < L)
+ L = size(V2);
+ VV = newvect(L);
+ for(J = 0; J < L; J++){
+ for(K = R = 0; K <= J; K++)
+ R = radd(R,rmul(V1[K],V2[J-K]));
+ VV[J] = R;
+ }
+ return VV;
+}
+
+def scale(L)
+{
+ T=0;LS=1;
+ if(type(L)!=4){
+ if(L==2){
+ L=[[[1,2,1/20],[2,5,1/10],[5,10,1/5], [10,20,1/2],[20,50,1],[50,100,2]],
+ [[1,2,1/10],[2,5,1/2], [10,20,1],[20,50,5]],
+ [[1,2,1/2],[2,10,1], [10,20,5],[20,100,10]]];
+ LS=2;
+ }else if(L==3){
+ L=[[[1,2,1/20],[2,5,1/10],[5,10,1/5], [10,20,1/2],[20,50,1],[50,100,2],
+ [100,200,5],[200,500,10],[500,1000,20]],
+ [[1,2,1/10],[2,5,1/2], [10,20,1],[20,50,5], [100,200,10],[200,500,50]],
+ [[1,2,1/2],[2,10,1], [10,20,5],[20,100,10], [100,200,50],[200,1000,100]]];
+ LS=3;
+ }else{
+ L=[[[1,2,1/50],[5,10,1/2],[5,10,1/10]],[[1,5,1/10],[5,10,1/2]],
+ [[1,5,1/2],[5,10,1]]];
+ }
+ }else if(type(L[0])!=4){
+ L=[L];
+ if(length(L)!=3||L[0]+L[2]>L[1]) T=L;
+ }
+ if(T==0){
+ if(type(L[0][0])!=4) L=[L];
+ for(R=[];L!=[];L=cdr(L)){
+ for(RR=[],LT=car(L);LT!=[];LT=cdr(LT))
+ for(I=car(LT)[0];I<=car(LT)[1];I+=car(LT)[2]) RR=cons(I,RR);
+ RR=lsort(RR,[],1);
+ R=cons(RR,R);
+ }
+ R=reverse(R);
+ for(T=[];R!=[];R=cdr(R)){
+ if(length(R)>1) T=cons(lsort(R[0],R[1],"setminus"),T);
+ else T=cons(R[0],T);
+ }
+ }
+ V0=dlog(10);
+ S0=S1=1;D0=D1=0;
+ SC=getopt(scale);
+ if(type(SC)==4){
+ S0=SC[0];S1=SC[1];
+ }else if(type(S)==1){
+ S0=S;S1=0;
+ }else return T;
+ if(type(D=getopt(shift))==4){
+ D0=D[0];D1=D[1];
+ }
+ if(type(F=getopt(f))>1) F=f2df(F);
+ else F=0;
+ for(M=[],I=length(T);T!=[];T=cdr(T),I--){
+ for(S=car(T);S!=[];S=cdr(S)){
+ V=((!F)?dlog(car(S))/dlog(10)/LS:myfdeval(F,car(S)))*S0;
+ if(S1!=0){
+ M=cons([V+D0,D1],M);
+ M=cons([V+D0,I*((length(SC)>2)?SC[I]:S1)+D1],M);
+ M=cons(0,M);
+ }else M=cons(V+D0,M);
+ }
+ }
+ if(S1!=0) M=cdr(M);
+ M=reverse(M);
+ if(getopt(TeX)==1){
+ if(type(U=getopt(line))==4)
+ M=cons([U[0]+D0,D1],cons([U[1]+D0,D1],cons(0,M)));
+ S=xylines(M);
+ if(type(Mes=getopt(mes))==4){
+ S3=car(Mes);
+ V=car(scale(cdr(Mes)));
+ if(!F) Mes=scale(cdr(Mes)|scale=[S0/LS,0],shift=[D0,D1]);
+ else Mes=scale(cdr(Mes)|f=F,scale=[S0,0],shift=[D0,D1]);
+ for(M=Mes;M!=[];M=cdr(M),V=cdr(V))
+ S+=xyput([car(M),S3,deval(car(V))]);
+ }
+ return S;
+ }
+ return M;
+}
+
+def pluspower(P,V,N,M)
+{
+ RR = 1;
+ for(K = R = 1; K < M-1; I++){
+ R = R*(N-K+1)*P/K;
+ RR = radd(RR,R);
+ }
+ VV = newvect(M);
+ for(K = 0; K < M-1; K++)
+ VV[K] = red(mycoef(RR,K,V));
+}
+
+def vtozv(V)
+{
+ if(type(V)<4) V=newvect(1,[V]);
+ S = length(V);
+ VV = newvect(S);
+ Lcm = 1;
+ for(K = 0; K < S; K++){
+ VV[K] = red(V[K]);
+ Lcm = lcm(Lcm,dn(VV[K]));
+ C = ptozp(nm(VV[K])|factor=0);
+ if(K == 0){
+ Dn = dn(C[1]);
+ Nm = nm(C[1]);
+ PNm = nm(C[0]);
+ }else{
+ Dn = ilcm(Dn,dn(C[1]));
+ Nm = igcd(Nm,nm(C[1]));
+ PNm = gcd(PNm,nm(C[0]));
+ }
+ }
+ if(!(M=Nm*PNm)) return [VV,0];
+ Mul = (Lcm*Dn)/M;
+ for(K = 0; K < S; K++)
+ VV[K] = rmul(VV[K],Mul);
+ return [VV,Mul];
+}
+
+def dupmat(M)
+{
+ if(type(M) == 6){
+ Size = size(M);
+ MM = newmat(Size[0],Size[1]);
+ for(I = 0; I < Size[0]; I++){
+ for(J = 0; J < Size[1]; J++)
+ MM[I][J] = M[I][J];
+ }
+ return MM;
+ }
+ if(type(M) == 5)
+ return ltov(vtol(M));
+ return M;
+}
+
+def matrtop(M)
+{
+ S = size(M);
+ MM = dupmat(M);
+ Lcm = newvect(S[0]);
+ for(J = 0; J < S[0]; J++){
+ U = vtozv(M[J]);
+ for(K = -1, I = 0; I < S[1]; I++)
+ MM[J][I] = U[0][I];
+ Lcm[J] = U[1];
+ }
+ return [MM,Lcm];
+}
+
+def mytrace(M)
+{
+ S=size(M);
+ if(S[0]!=S[1]) return 0;
+ for(I=V=0; I<S[0]; I++){
+ V+=M[I][I];
+ }
+ return V;
+}
+
+def mydet(M)
+{
+ MM = matrtop(M);
+ if(type(MM[0]) == 6){
+ S = size(M);
+ for(Dn = 1, I = 0; I < S[0]; I++)
+ Dn *= MM[1][I];
+ return (!Dn)?0:red(det(MM[0])/Dn);
+ }
+}
+
+def mperm(M,P,Q)
+{
+ if(type(M) == 6){
+ S = size(M);
+ if(type(P) <= 1)
+ P=(P==1)?Q:trpos(0,0,S[0]);
+ if(type(P) > 3 && type(P[0]) >= 4)
+ P = trpos(P[0][0],P[0][1],S[0]);
+ else if(type(P) == 4){
+ if(length(P)==2 && type(P[1])==4){
+ P0=P[0];P1=car(P[1]);P=newvect(P1);
+ for(I=0;I<P1;I++) P[I]=P0+I;
+ }else P = ltov(P);
+ }
+ if(type(Q) <= 1)
+ Q=(Q==1)?P:trpos(0,0,S[1]);
+ if(type(Q) > 3 && type(Q[0]) >= 4)
+ Q = trpos(Q[0][0],Q[0][1],S[1]);
+ if(type(Q) == 4){
+ if(length(Q)==2 && type(Q[1])==4){
+ P0=Q[0];P1=car(Q[1]);Q=newvect(P1);
+ for(I=0;I<P1;I++) Q[I]=P0+I;
+ }else Q = ltov(Q);
+ }
+ MM = newmat(S0=length(P),S1=length(Q));
+ for(I = 0; I < S0; I++){
+ MMI = MM[I]; MPI = M[P[I]];
+ for(J = 0; J < S1; J++)
+ MMI[J] = MPI[Q[J]];
+ }
+ return MM;
+ }
+ if((type(M) == 5 || type(M) == 4) && type(P) >= 4){
+ if(length(P) == 1 && type(car(P)) == 4)
+ P = trpos(car(P)[0],car(P)[1],length(M));
+ MM = newvect(S = length(P));
+ for(I = 0; I < S; I++)
+ MM[I] = M[P[I]];
+ if(type(M) == 4)
+ MM = vtol(MM);
+ return MM;
+ }
+ return M;
+}
+
+def mtranspose(M)
+{
+ if(type(M)==4){
+ MV=ltov(M);
+ II=length(MV);
+ for(I=L=0; I<II; I++){
+ if(type(MV[I])!=4) return M;
+ MV[I]=ltov(MV[I]);
+ }
+ for(R=[],J=0; ;J++){
+ for(T=[],I=F=0; I<II; I++){
+ if(length(MV[I])>J){
+ F=1;
+ T=cons(MV[I][J],T);
+ }
+ }
+ if(F==0) return reverse(R);
+ if(F==1) R=cons(reverse(T),R);
+ }
+ }
+ if(type(M) != 6)
+ return M;
+ S = size(M);
+ MM = newmat(S[1],S[0]);
+ for(I = 0; I < S[0]; I++){
+ for(J = 0; J < S[1]; J++)
+ MM[J][I] = M[I][J];
+ }
+ return MM;
+}
+
+def mtoupper(MM, F)
+{
+ TeXs=["\\ -=\\ ","\\ +=\\ "];
+ Lins=[" -= line"," += line"];
+ Assume=["If","Assume"];
+ if(type(St = getopt(step))!=1) St=0;
+ Opt = getopt(opt);
+ if(type(Opt)!=1) Opt=0;
+ TeX=getopt(dviout);
+ if(type(Tab=getopt(tab))!=1 && Tab!=0) Tab=2;
+ Line="\\text{line}";
+ if(type(TeX)!=1 || !St) TeX=0;
+ Size = size(MM);
+ if(F==-1){
+ M = newmat(Size[0], Size[1]+1);
+ for(I = 0; I < Size[0]; I++){
+ for(J = 0; J < Size[1]; J++)
+ M[I][J] = MM[I][J];
+ M[I][Size[1]] = zz^I;
+ }
+ Size = size(M);
+ F = 1;
+ }else if(F<0){
+ F=Size[0];
+ M = newbmat(1,2,[[MM,mgen(F,0,[1],0)]]);
+ Size=[Size[0],F+Size[1]];
+ }else
+ M = dupmat(MM);
+ if(St){
+ if(TeX) Lout=[[dupmat(M)]];
+ else mycat0([M,"\n\n"],0);
+ }
+ Top="";
+ if(Opt>3){
+ for(I=Opt; I>4; I--)
+ Top+=(TeX)?"\\ ":" ";
+ }
+ PC=IF=1;
+ for(K = JJ = 0; K < Size[1] - F; K++){
+ for(J = JJ; J < Size[0]; J++){
+ if(M[J][K] != 0){ /* search simpler element */
+ if(Opt>2 && (Mul=M[J][K])!=1){
+ for(FF=0,JT=J; JT<Size[0]; JT++){
+ if((Val=M[JT][K])==1){ /* 1 */
+ Mul=1;J=JT; break;
+ }
+ if(Val==0 || type(Val)>type(Mul)) continue;
+ if(type(Val)<type(Mul) || (Val==-1 && Mul!=-1)){
+ Mul=Val; J=JT; /* smaller type */
+ }
+ else if(Opt>3){
+ if(isint(Val)==1){ /* integer elememt */
+ if(isint(Mul)!=1){
+ Mul=Val; J=JT; /* integer */
+ }
+ if(FF<3||(FF==3&&Val>0)){
+ for(JK=K+1;;){
+ if(JK>=Size[1]-F){
+ J=JT;
+ FF=((Mul=Val)>0)?4:3;
+ break; /* divisible int => 4: pos_int 3: neg_int */
+ }
+ if(isint(M[JT][JK++]/Val)!=1) break;
+ }
+ }
+ }else if(!FF){
+ for(JK=K+1; JK<Size[1]-F; JK++){
+ if(isint(M[JT][JK]/Val)!=1) break;
+ J=JT; FF=1; /* divisible => 1: non integer */
+ }
+ }
+ }
+ }
+ if(FF==0 && Opt>3 && Mul!=1 && Mul!=-1){ /* FF > 0 => divisible */
+ for(FF=0,J0=J; J0<Size[0]-1 && FF!=9; J0++){
+ VV0=M[J0][K];
+ if(VV0==0 || isint(VV0)==0) continue;
+ for(J1=J0+1;J1<Size[0] && FF!=9; J1++){
+ VV1=M[J1][K];
+ if(VV1==0 || isint(VV1)==0) continue;
+ for(C=FT=0,V0=VV0,V1=VV1; C<2 && FF!=10; C++,V1=V0,V0=VV1){
+ for(CC=0,RC=ceil(V0/V1);CC<2;CC++,RC--){
+ if((CD=V0-RC*V1)==0 && (RC==1 || RC==-1)){
+ FT=1; FF=10; /* 10: vanish by +- */
+ }else if(CD==1){
+ FV=(vars(M[J0])==[]&&vars(M[J1])==[])?1:0;
+ if((RC==1 || RC==-1) && FF<8+FV){
+ FT=1; FF=8+FV; /* 8/9: 1 by +- */
+ }else if(FF<6+VF){
+ FT=1; FF=6+FV; /* 6/7: 1 by times */
+ }
+ }else if(CD==-1){
+ FV=(vars(M[J0])==[]&&vars(M[J1])==[])?1:0;
+ if((RC==1 || RC==-1) && FF<4+FV){
+ FT=1; FF=4+FV; /* 4/5: 1 by +- */
+ }else if(FF<2+VF){
+ FT=1; FF=2+FV; /* 2/3: 1 by times */
+ }
+ }
+ if(FT==1){
+ FT=0; KRC=RC;
+ if(C==0){
+ KJ0=J0; KJ1=J1;
+ }else{
+ KJ0=J1; KJ1=J0;
+ }
+ }
+ }
+ }
+ }
+ }
+ if(FF>0){
+ for(I=K;I<Size[1];I++)
+ M[KJ0][I]=radd(M[KJ0][I],rmul(M[KJ1][I],-KRC));
+ if(KRC<0){
+ KRC=-KRC;Sgn=1;
+ }else
+ Sgn=0;
+ if(St){
+ if(TeX){
+ if(KRC==1)
+ Lout=cons([Top+"\\xrightarrow{", Line,KJ0+1,TeXs[Sgn],
+ Line,KJ1+1,"}",dupmat(M)],Lout);
+ else
+ Lout=cons([Top+"\\xrightarrow{", Line,KJ0+1,TeXs[Sgn],
+ Line,KJ1+1,"\\times\\left(",KRC,"\\right)}",
+ dupmat(M)],Lout);
+
+ }else{
+ if(KRC==1)
+ mycat([Top+"line",KJ0+1,Lins[Sgn],KJ1+1,"\n",M,"\n"]); else
+ mycat([Top+"line",KJ0+1,Lins[Sgn],KJ1+1," * (",KRC,")\n",M,"\n"]);
+ }
+ }
+ Mul=M[KJ0][K]; J=KJ0;
+ if(FF==10){
+ J--; continue;
+ }
+ }
+ }
+ }
+ /* a parameter Var */
+ Var=0;
+ if(St && Opt>4 && length(Var=vars(nm(M[J][K])))==1){
+ J0=J;Jv=mydeg(nm(M[J0][K]),car(Var));
+ for(I=JJ;I<Size[0]; I++){
+ if((MIK=M[I][K])==0) continue;
+ if((T=vars(MIK=nm(MIK)))==[]){ /* 1/poly */
+ J=I;Var=[]; break;
+ }
+ if(length(T)>1) continue;
+ if(mydeg(MIK,T[0])<Jv){
+ J0=I;Jv=mydeg(MIK);Var=T; /* search minimal degree */
+ }
+ }
+ if(length(Var)==1){
+ Var=car(Var);
+ Q=nm(M[J0][K]);
+ for(I=JJ; I<Size[0]; I++){
+ if(I==J0 || mydeg(nm(M[I][K]),Var)<0) continue;
+ T=rpdiv(nm(M[I][K]),Q,Var);
+ if(T[0]!=0 && (vars(T)==[] || vars(T)==[Var])) break; /* dec. deg */
+ }
+ }
+ }
+ if(type(Var)==2){ /* 1 variable */
+ if(I==Size[0]){
+ for(QF=0,Q0=1,QR=getroot(Q,Var|mult=1);QR!=[];QR=cdr(QR)){
+ if(deg(T=QR[0][1],Var)>0){
+ QF=1;Q0*=T; continue;
+ }
+ if(subst(PC,Var,T)==0) continue;
+ Q0*=(Var-(T=QR[0][1]));
+ if(type(T)<2){
+ M0=subst(M,Var,T);
+ if(TeX){
+ Lout=cons(["\\hspace{",Tab*(St-3)-1,"mm}\\text{If }",
+ Var,"=",T,","] ,Lout);
+ Lout=append(mtoupper(M0,F|step=St+1,opt=Opt,dviout=-2,tab=Tab),Lout);
+ }else{
+ mycat([str_times(" ",St-1)+"If",Var,"=",T,","]);
+ mtoupper(M0,F|step=St+1,opt=Opt);
+ }
+ }
+ }
+ if(Q0!=1){
+ if(TeX)
+ Lout=cons(["\\hspace{",Tab*(St-3)-1,"mm}\\text{"+Assume[QF]+" }",
+ Q0/=fctr(Q0)[0][0],"\\ne0,"],Lout);
+ else
+ mycat([str_times(" ",St-1)+Assume[QF],Q0,"!=0,"]);
+ PC*=Q0;
+ }
+ IF=0;St++;
+ }else{
+ KRC=-red((T[2]*dn(M[J0][K]))/(T[1]*dn(M[I][K])));
+ for(II=K;II<Size[1];II++)
+ M[I][II]=radd(M[I][II],rmul(M[J0][II],KRC));
+ if(TeX)
+ Lout=cons([Top+"\\xrightarrow{", Line,I+1,"\\ +=\\ ",Line,
+ J0+1,"\\times\\left(",KRC,"\\right)}",dupmat(M)],Lout);
+ else
+ mycat([Top+"line",I+1,"+=",Line,J0+1," * (",KRC,")\n",M,"\n"]);
+ J=JJ-1;
+ continue;
+ }
+ }
+ if(J != JJ){
+ for(I = K; I < Size[1]; I++){
+ Temp = M[JJ][I];
+ M[JJ][I] = M[J][I];
+ M[J][I] = (Opt>=2)?Temp:-Temp;
+ }
+ if(St){
+ if(TeX)
+ Lout=cons([Top+"\\xrightarrow{",Line,JJ+1,"\\ \\leftrightarrow\\ ",
+ Line,J+1,"}",dupmat(M)],Lout);
+ else
+ mycat0([Top+"line",JJ+1," <-> line",J+1,"\n",M,"\n\n"],0);
+ }
+ }
+ /* Assume PC != 0 */
+ if(Opt>1){
+ Mul = M[JJ][K];
+ if(Opt > 5 && St && IF && (Var=vars(MIK=nm(Mul)))!=[]){
+ TF=fctr(MIK);
+ for(FF=0,Q0=1,TP=cdr(TF);TP!=[];TP=cdr(TP)){
+ if(type(dn(red(PC/(TP0=car(car(TP))))))<2) continue; /* divisible */
+ Q0*=TP0;
+ for(Var=vars(TP0);Var!=[];Var=cdr(Var)){
+ if(mydeg(TP0,X=car(Var))==1 && type(dn(red(PC/mycoef(TP0,1,X))))<2){
+ /* TP0=A*X+B with non-vanishing A */
+ T=red(-mycoef(TP0,0,X)/mycoef(TP0,1,X));
+ M0=mysubst(M,[X,T]);
+ if(TeX){
+ Lout=cons(["\\hspace{",Tab*(St-3)-1,"mm}\\text{If }",
+ X,"=",T,","] ,Lout);
+ Lout=append(mtoupper(M0,F|step=St+1,opt=Opt,dviout=-2,tab=Tab),
+ Lout);
+ }else{
+ mycat([str_times(" ",St-1)+"If",X,"=",T,","]);
+ mtoupper(M0,F|step=St+1,opt=Opt);
+ }
+ break;
+ }
+ }
+ if(Var==[] && Opt>6){
+ for(Var=vars(TP0);Var!=[];Var=cdr(Var)){
+ if(mydeg(TP0,X=car(Var))==1){
+ /* TP0=A*X+B, A is a poly of X0 with rational funct */
+ T=nm(mycoef(TP0,1,X));
+ for(Var0=vars(T);Var0!=[]; Var0=cdr(Var0)){
+ X0=car(Var0);
+ if(type(dn(red(PC/type(mycoef(T,mydeg(T,X0),X0)))))>1) continue;
+ TR=getroot(T,X0|mult=1);
+ if(findin(X0,vars(TR))<0) break;
+ }
+ if(Var0==[]) continue;
+ for(;TR!=[0];TR=cdr(TR)){
+ if(TR==[]){
+ TR=[0,0];
+ T0=-mycoef(TP0,0,X)/mycoef(TP0,1,X);
+ X0=X;
+ }else T0=car(TR)[1];
+ M0=mysubst(M,[X0,T0]);
+ if(TeX){
+ Lout=cons(["\\hspace{",Tab*(St-3)-1,"mm}\\text{If }",
+ X0,"=",T0,","] ,Lout);
+ Lout=append(mtoupper(M0,F|step=St+1,opt=Opt,dviout=-2,tab=Tab),
+ Lout);
+ }else{
+ mycat([str_times(" ",St-1)+"If",X0,"=",T0,","]);
+ mtoupper(M0,F|step=St+1,opt=Opt);
+ }
+ }
+
+ }
+ break;
+ }
+ }
+ if(Var==[]){
+ FF=1;
+ }
+ }
+ if(Q0!=1){
+ if(FF) FF=1;
+ if(TeX) Lout=cons(["\\hspace{",Tab*(St-3)-1,"mm}\\text{"+Assume[FF]+" }",Q0/=fctr(Q0)[0][0],"\\ne0,"],
+ Lout);
+ else mycat([str_times(" ",St-1)+Assume[FF],Q0,"!=0,"]);
+ PC*=Q0;St++;
+ }
+ }
+ IF=M[JJ][K]=1;
+ if(Mul!=1){
+ for(L=K+1; L<Size[1]; L++)
+ M[JJ][L]=red(M[JJ][L]/Mul);
+ if(St){
+ if(TeX)
+ Lout=cons([Top+"\\xrightarrow{",Line,JJ+1,
+ "\\ \\times=\\ \\left(",red(1/Mul),"\\right)}",
+ dupmat(M)],Lout);
+ else
+ mycat0([Top+"line",JJ+1, " *= (",red(1/Mul), ")\n",M,"\n\n"],0);
+ }
+ }
+
+ }
+ for(J = (Opt>0)?0:(JJ+1); J < Size[0]; J++){
+ if(J == JJ)
+ continue;
+ Mul = -M[J][K];
+ if(Mul!=0){
+ if(Opt!=2) Mul=rmul(Mul,1/M[JJ][K]);
+ for(I = K+1; I < Size[1]; I++)
+ M[J][I] = radd(M[J][I],rmul(M[JJ][I],Mul));
+ M[J][K] = 0;
+ if(St){
+ if(Mul<0){
+ Mul=-Mul;Sgn=0;
+ }else Sgn=1;
+ if(TeX){
+ if(Mul==1)
+ Lout=cons([Top+"\\xrightarrow{", Line,J+1,TeXs[Sgn],Line,JJ+1,
+ "}",dupmat(M)],Lout);
+ else Lout=cons([Top+"\\xrightarrow{", Line,J+1,TeXs[Sgn],Line,JJ+1,
+ "\\times\\left(",Mul,"\\right)}",dupmat(M)],Lout);
+ }else{
+ if(Mul==1)
+ mycat0([Top+"line",J+1, Lins[Sgn],JJ+1,"\n",M,"\n\n"],0);
+ else
+ mycat0([Top+"line",J+1, Lins[Sgn],JJ+1," * (",Mul,")\n",M,"\n\n"],0);
+ }
+ }
+ }
+ }
+ JJ++;
+ }
+ }
+ }
+ if(TeX){
+ if(TeX==-2) return Lout;
+ Lout=reverse(Lout);
+ Br="\\allowdisplaybreaks";
+ Cr="\\\\\n &";
+ if(getopt(pages)==1) Cr=Br+Cr;
+ if(type(S=getopt(cr))==7) Cr=S;
+ if(type(Lim=getopt(lim))==1){
+ if(Lim>0){
+ if(Lim<30) Lim=TeXLim;
+ Lim*=2;
+ }
+ }else Lim=0;
+ Out = ltotex(Lout|opt=["cr","spts0"],str=1,cr=Cr,lim=Lim);
+ if(TeX<0) return Out;
+ dviout(Out|eq=(str_str(Cr,Br)>=0)?6:5,keep=(TeX==1)?0:1);
+ }
+ return M;
+}
+
+def mydet2(M)
+{
+ S = size(M);
+ Det = 1;
+ MM = mtoupper(M,0);
+ for(I = 0; I < S[0]; I++)
+ Det = rmul(Det,MM[I][I]);
+ return Det;
+}
+
+def myrank(MM)
+{
+ S = size(MM);
+ M = dupmat(MM);
+ M = mtoupper(M,0);
+ C = 0;
+ for(I = K = 0; I < S[0]; I++){
+ for(J = K; J < S[1]; J++){
+ if(M[I][J] != 0){
+ C++; K++;
+ break;
+ }
+ }
+ }
+ return C;
+}
+
+def meigen(M)
+{
+ F = getopt(mult);
+ if(type(M)==4 || type(M)==5){
+ II=length(M);
+ for(R=[],I=II-1; I>=0; I--){
+ if(F==1)
+ R=cons(meigen(M[I]|mult=1),R);
+ else
+ R=cons(meigen(M[I]),R);
+ }
+ return R;
+ }
+ S = size(M)[0];
+ P = mydet2(mgen(S,0,[zz],0)-M);
+ return (F==1)?getroot(P,zz|mult=1):getroot(P,zz);
+}
+
+def transm(M)
+{
+ if(type(M)!=6) M=s2m(M);
+ if(type(M)!=6){
+ errno(0);
+ return 0;
+ }
+ L=[M];TeX="";
+ Line=["\\text{line}","\\text{col}"];
+ if((DVI=getopt(dviout)) !=1) DVI=0;
+ else dviout(M);
+ for(;;){
+ print(L0=dupmat(car(L)));
+ Sz=size(L0);
+ S=keyin("? ");
+ N=0;
+ if(str_len(S)<=1){
+ if(S=="q") return L;
+ if(S=="t"){
+ N=mtranspose(L0);
+ TeX=["\\text{transpose}"];
+ }
+ else if(S=="f"){
+ if(length(L)>1){
+ if(LF!=0) TeX="";
+ L=cdr(L);LF=L0;
+ if(DVI){
+ dviout0(-1);
+ dviout(" ");
+ }
+ }
+ }else if(S=="g"){
+ if(LF!=0) N=LF;
+ }else if(S=="0"){
+ N=M;L=[];TeX=[];
+ }else if(S=="a"||S=="A"){
+ if(DVI&&S=="A") mtoupper(L0,0|step=1,opt=10,dviout=1);
+ else mtoupper(L0,0|step=1,opt=10);
+ }else{
+ mycat0([
+ "2,5 : line2 <-> line5",
+ "2,5,-2 ; line2 += (-2)*line5",
+ "2,2,-2 : line2 *= -2",
+ "2,5,0 : line2 += (?)*line5 for reduction",
+ "r,2,5 : raw2 <-> raw5 (r,2,5,-2 etc.)",
+ "s,x,2 : subst(*,x,2)",
+ "t : transpose",
+ "0 : first matrix",
+ "f : previous matrix",
+ "g : next matrix (only after f)",
+ "A : auto (a : without TeX)",
+ "q : quit"
+ ],1|delim="\n");
+ }
+ }else{
+ FR=0;
+ S=evals(S|del=",");
+ if(S[0]==r){
+ FR=1; S=cdr(S);
+ }
+ if((LL=length(S))>=2){
+ S0=S[0]-1;S1=S[1]-1;
+ if(S[0]==s){
+ if(length(S)==3) N=subst(L0,S[1],S[2]);
+ if(DVI) TeX=[S[1],"\\mapsto",S[2]];
+ }else if(FR==0){
+ if(S0<0 || S0>=Sz[0] || S1<0 || S1>=Sz[0]) continue;
+ if(LL==2){
+ N=rowx(L0,S0,S1);
+ if(DVI) TeX=[Line[0],S[0],"\\ \\leftrightarrow\\ ",Line[0],S[1]];
+ }else{
+ S2=S[2];
+ if(S0==S1){
+ N=rowm(L0,S0,S2);
+ if(DVI) TeX=[Line[0],S[0],"\\ \\times=\\ ",S2];
+ }else{
+ if(S2==0){
+ for(J=0;J<Sz[1] && L0[S1][J]==0;J++);
+ if(J<Sz[1]) S2=-L0[S0][J]/L0[S1][J];
+ }
+ if(S2!=0){
+ N=rowa(L0,S0,S1,S2);
+ if(DVI) TeX=[Line[0],S[0],"\\ +=\\ ",Line[0],
+ S[1],"\\ \\times\\ (",S2,")"];
+ }
+ }
+ }
+ }else{
+ if(S0<0 || S0>=Sz[1] || S1<0 && S1>=Sz[1]) continue;
+ if(LL==2){
+ N=colx(L0,S0,S1);
+ if(DVI) TeX=[Line[1],S[0],"\\ \\leftrightarrow\\ ",Line[1],S[1]];
+ }else{
+ S2=S[2];
+ if(S0==S1){
+ N=colm(L0,S0,S2);
+ if(DVI) TeX=[Line[1],S[0],"\\ \\times=\\ ",S[2]];
+ }else{
+ if(S2!=0){
+ for(J=0; I1<Sz[0] && L0[I1][J]==0; J++);
+ if(J<Sz[0]) S2=-L0[J][S0]/L0[J][S1];
+ }if(S2!=0){
+ N=cola(L0,S0,S1,S2);
+ if(DVI) TeX=[Line[1],S[0],"\\ +=\\ ",Line[1],
+ S[1],"\\ \\times\\ (",S2,")"];
+ }
+ }
+ }
+ }
+ }
+ }
+ if(N!=0){
+ LF=0;L=cons(N,L);
+ if(DVI) dviout("\\xrightarrow{"+ltotex(TeX|opt="spts0",str=1)+"}"+mtotex(N)|eq=8);
+ }
+ }
+}
+
+def vgen(V,W,S)
+{
+ IM=length(V);
+ I=(getopt(opt)==0)?IM:0;
+ for(SS=0; I<IM && (SS==0 || V[I]<=W[I]); I++)
+ SS += W[I];
+ if(I<IM){
+ W[I]++;
+ SS--;
+ }else
+ SS=S;
+ for(J=0;J<I;J++){
+ W[J] = (SS<=V[J])?SS:V[J];
+ SS -= W[J];
+ }
+ if(SS>0)
+ return -1;
+ return(I==IM)?0:I;
+}
+
+def mmc(M,X)
+{
+ Mt=getopt(mult);
+ if(type(M)==7) M=os_md.s2sp(M);
+ if(type(M)!=4||type(M[0])!=6) return 0;
+ if(type(M[0])!=6){ /* spectre type -> GRS */
+ G=s2sp(M|std=1);
+ L=length(G);
+ for(V=[],I=L-2;I>=0;I--) V=cons(makev([I+10]),V);
+ V=cons(makev([L+9]),V);
+ G=sp2grs(G,V,[1,length(G[0]),-1]|mat=1);
+ if(getopt(short)!=0){
+ V=append(cdr(V),[V[0]]);
+ G=shortv(G,V);
+ }
+ R=chkspt(G|mat=1);
+ if(Mt!=1) Mt=0;
+ if(R[2]!=2 || R[3]!=0 || !(R=getbygrs(G,1|mat=1))) return 0;
+ MZ=newmat(1,1);
+ SS=length(G);
+ if(Mt==1) SS=SS*(SS-1)/2;
+ for(M=[],I=0;I<SS;I++) M=cons(MZ,M);
+ for(RR=R; RR!=[]; RR=cdr(RR)){
+ RT=car(RR)[0];
+ if(type(RT)==4){
+ if(RT[0]!=0) M=mmc(M,[RT[0]]|simplify=Simp);
+ M=mmc(M,[cdr(RT)]);
+ }
+ }
+/* for(R=cdr(R);R!=[];R=cdr(R)) M=mmc(M,[car(R)[0]]|mult=Mt); */
+ }
+ if(X==0) return M;
+ L=length(M);
+ if((L>=6 && Mt!=0)||(L==3&&Mt==1)){
+ for(SS=2,I=3; I<L; I+=(++SS));
+ if(I!=L) return -1;
+ Mt=1;
+ }else{
+ SS=L;Mt=0;
+ }
+ if(length(X)==SS+1){
+ if(car(X)!=0&&(M=mmc(M,[car(X)]|mult=Mt))==0) return M;
+ return mmc(M,cdr(X)|mult=Mt);
+ }
+ for(I=X;I!=[];I=cdr(I)) if(I[0]!=0) break;
+ if(I==[]) return M;
+ Simp=getopt(simplify);
+ if(Simp!=0 && type(Simp)!=1) Simp=2;
+ N=newvect(L);
+ for(I=0;I<L;I++) N[I]=dupmat(M[I]);
+ S=size(N[0])[0];
+ if(type(X)==4&&length(X)>SS){ /* addition */
+ for(I=0;I<SS;I++,X=cdr(X)) if(X[I] != 0) N[I] = radd(N[I],car(X));
+ }
+ if(length(X)!=1) return 0;
+ X=X[0];
+ MZ = newmat(S,S);
+ MM = newvect(L);
+ for(M1=J=0; J<SS; J++){
+ for(R=[],I=SS-1; I>=0; I--){
+ if(I==J){
+ for(RR=[],K=SS-1; K>=0; K--)
+ RR=cons((K==I)?N[K]+diagm(S,[X]):N[K],RR);
+ R=cons(RR,R);
+ }else R=cons([MZ],R);
+ }
+ MM[J]=newbmat(SS,SS,R);
+ if(J==0) M1=MM[0];
+ else M1=radd(M1,MM[J]);
+ }
+ /* middle convolution */
+ for(P=0,Q=1;J<L;J++){ /* A_{P,Q} */
+ for(R=[],I=SS-1; I>=0; I--){
+ for(RR=[],K=SS-1;K>=0;K--){
+ MT=MZ;
+ if(I==K){
+ MT=N[J];
+ if(I==P) MT-=N[Q];
+ else if(I==Q) MT-=N[P];
+ }else if(I==P && K==Q) MT=N[Q];
+ else if(I==Q && K==P) MT=N[P];
+ RR=cons(MT,RR);
+ }
+ R=cons(RR,R);
+ }
+ MM[J]=newbmat(SS,SS,R);
+ if(++Q==SS){
+ P++;Q=P+1;
+ }
+ }
+ for(R=[],I=SS-1; I>=0; I--){
+ for(RR=[N[I]],J=0; J<I; J++) RR=cons(MZ,RR);
+ R=cons(RR,R);
+ }
+ M0 = newbmat(SS,SS,R);
+ KE = append(mykernel(M0|opt=1),mykernel(M1|opt=1));
+ if(length(KE) == 0) return MM;
+ KK = mtoupper(lv2m(KE),0);
+ for(I=0;I<L;I++) MM[I] = mmod(MM[I],KK);
+ if(Simp!=0) MM = mdsimplify(MM|type=Simp);
+ return MM;
+}
+
+def lpgcd(L)
+{
+ for(F=[]; L!=[]; L=cdr(L)){
+ if((P=car(L))==0) continue;
+ if(F==[]){
+ F=fctr(P);
+ S=length(F);
+ S--;
+ V=newvect(S);
+ M=newvect(S);
+ for(I=0; I<S; I++){
+ M[I] = F[I+1][1];
+ V[I] = F[I+1][0];
+ }
+ N=nm(ptozp(P|factor=1)[1]);
+ continue;
+ }
+ N=igcd(ptozp(P|factor=1)[1],N);
+ for(I=0; I<S; I++){
+ for(Q=P,CT=0; CT<M[I]; CT++)
+ if((Q=tdiv(Q,V[I])) == 0) break;
+ if(CT<M[I]) M[I]=CT;
+ }
+ }
+ if(F==[]) return 0;
+ for(Q=N,I=0;I<S; I++){
+ while(M[I]>0){
+ Q *= V[I];
+ M[I]--;
+ }
+ }
+ return Q;
+}
+
+def mdivisor(M,X)
+{
+ S=size(M=dupmat(M));
+ XX=(type(X)==4||X==0)?X:[0,X];
+ S0=S[0]; S1=S[1];
+ if((Tr=getopt(trans))==1||Tr==2){
+ Tr0=1;
+ GR=mgen(S0,0,1,0); GC=mgen(S1,0,1,0);
+ }else Tr=Tr0=0;
+ /* 0,a,b : (a,b)->(1,1)
+ 1 : (1,1) invertible
+ 2,i,M : line 0,i by M
+ 3,j,M : col 0,j by M
+ 4,j : col 1 += col j
+ 5,j,T : line j by T
+ 6,j,T : col 1 += col j by T (non-com)
+ 7,j : line 2<->j (non-com)
+ */
+ if(type(V=getopt(dviout))==1){
+ if(type(XX)==4 && type(XX[0])>1) Var=[XX[1],"\\partial"];
+ else Var=0;
+ Tr=(abs(V)==3)?0:1;
+ MM=dupmat(M);
+ II=((S[0]>S[1])?S[1]:S[0])+1;
+ if(abs(V)>1){
+ Is1=Js1=S[0]+S[1];
+ Is=Js=[0,[Is1]];
+ }else{
+ Is=[0,[Is1=S[0]]];Js=[0,[Js1=S[1]]];
+ }
+ VV=V;
+ V=newvect(II);
+ for(I=0;I<II;I++) V[I]=[];
+ N=newbmat(2,2,[[M,mgen(S[0],0,[1],0)],[mgen(S[1],0,[1],0)]]);
+ mdivisor(M,X|step=1,dviout=V);
+ L=S[0]+S[1];
+ if(Tr){
+ NN=mperm(N,Is1,Js1);
+ for(K=S[0];K<Is1;K++){
+ for(L=S[1];L<Js1;L++)
+ NN[K][L]=" ";
+ }
+ Out=[[mperm(NN,Is,Js)]];
+ }
+ for(I=1;I<II;I++){
+ I0=I-1;
+ if(V[I]==[]) continue;
+ for(T=reverse(V[I]);T!=[];T=cdr(T)){
+ St=[];
+ C=car(R=car(T));
+ if(C==0){
+ N=mperm(N,(R[1]==0)?0:[[R[1]+I0,I0]],(R[2]==0)?0:[[R[2]+I0,I0]]);
+
+ if(Tr){
+ if(R[2]!=0) St=append(["C",I,"\\leftrightarrow C",R[2]+I],St);
+ if(R[1]!=0){
+ if(R[2]!=0) St=cons(",\\ ",St);
+ St=append(["L",I,"\\leftrightarrow L",R[1]+I],St);
+ }
+ Out=cons(St,Out);
+ }
+ }else if(C==1){
+ P=1/N[I0][I0];N[I0][I0]=1;
+ if(P!=1){
+ for(J=I;J<L;J++)
+ N[I0][J]=muldo(P,N[I0][J],XX);
+
+ if(Tr){
+ St=append(["L",I,"\\leftarrow(",P,")","\\times L",I],St);
+ Out=cons(St,Out);
+ NN=mperm(N,Is1,Js1);
+ for(K=S[0];K<Is1;K++){
+ for(L=S[1];L<Js1;L++)
+ NN[K][L]=" ";
+ }
+ Out=cons(["\\to",mperm(NN,Is,Js)],Out);
+ }
+ }
+ for(F=0,J=I;J<S[0];J++){
+ if((P=N[J][I0])==0) continue;
+ F++;
+ N[J][I0]=0;
+ for(K=I;K<L;K++)
+ N[J][K]=red(N[J][K]-muldo(P,N[I0][K],XX));
+
+ }
+ if(F){
+ if(Tr){
+ Out=cons(["Li\\ -\\!=\\ \\circ\\times L",I,"\\quad(i>",I,")"],Out);
+ NN=mperm(N,Is1,Js1);
+ for(K=S[0];K<Is1;K++){
+ for(L=S[1];L<Js1;L++)
+ NN[K][L]=" ";
+ }
+ Out=cons(["\\to",mperm(NN,Is,Js)],Out);
+ }
+ }
+ for(F=0,J=I;J<S[1];J++){
+ if((P=N[I0][J])==0) continue;
+ F++;
+ N[I0][J]=0;
+ for(K=I;K<L;K++)
+ N[K][J]=red(N[K][J]-muldo(N[K][I0],P,XX));
+ }
+ if(F&&Tr) Out=cons(["Cj\\ -\\!=\\ C",I,"\\times\\circ\\quad(j>",I,")"],Out);
+ else continue;
+ }else if(C==2){
+ C=mat(N[I0],N[R[1]+I0]);C=muldo(R[2],C,XX);
+ for(J=0;J<L;J++){
+ N[I0][J]=C[0][J];N[R[1]+I0][J]=C[1][J];
+ }
+ if(Tr) Out=cons([dupmat(R[2]),"\\begin{pmatrix}L",I,"\\\\L",R[1]+I,
+ "\\end{pmatrix}"],Out);
+ }else if(C==3){
+ C=newmat(L,2);
+ for(J=0;J<L;J++){
+ C[J][0]=N[J][I0];C[J][1]=N[J][R[1]+I0];
+ }
+ C=muldo(C,R[2],XX);
+ for(J=0;J<L;J++){
+ N[J][I0]=C[J][0];N[J][R[1]+I0]=C[J][1];
+ }
+ if(Tr) Out=cons(["\\begin{pmatrix}C",I,"&C",R[1]+I,"\\end{pmatrix}",
+ dupmat(R[2])],Out);
+ }else if(C==4){
+ for(J=0;J<L;J++)
+ N[J][I0]=red(N[J][I0]+N[J][R[1]+I0]);
+ if(Tr) Out=cons(["C",I,"\\ +\\!=\\ C",R[1]+I],Out);
+ }else if(C==5){
+ for(J=0;J<L;J++)
+ N[I0+R[1]][J]=red(R[2]*N[I0+R[1]][J]);
+ if(Tr) Out=cons(["L",I+R[1],"\\leftarrow(", R[2],")\\times L",I+R[1]],
+ Out);
+ }else if(C==6){
+ for(J=0;J<L;J++)
+ N[J][I0]=N[J][I0]+muldo(N[J][I0+R[1]],R[2],XX);
+ if(Tr) Out=cons(["C",I,"\\ +\\!=\\ C",I+R[1],"\\times(", R[2],")"],
+ Out);
+ }else if(C==7){
+ mycat(["line",I+1,"\\leftrightarrow",R[1]+I]);
+ for(J=0;J<L;J++){
+ C=N[I][J];N[I][J]=N[R[1]+I0][J];N[R[1]+I0][J]=C;
+ }
+ if(Tr) Out=cons(["L",I+1,"\\leftrightarrow L",R[1]+I],Out);
+ }
+ if(Tr){
+ NN=mperm(N,Is,Js);
+ for(K=S[0];K<Is1;K++){
+ for(L=S[1];L<Js1;L++)
+ NN[K][L]=" ";
+ }
+ Out=cons(["\\to",NN],Out);
+ }
+ }
+ }
+ if(!Tr){
+ NN=mperm(N,Is,Js);
+ Out=[];
+ }
+ if(S[0]+S[1]==Is1){
+ N1=mperm(NN,[0,[S[0]]],[S[1],[S[0]]]);
+ N2=mperm(NN,[S[0],[S[1]]],[0,[S[1]]]);
+ N3=mperm(NN,[0,[S[0]]],[0,[S[1]]]);
+ R1=mdivisor(N1,X|trans=1)[1];
+ R2=mdivisor(N2,X|trans=1)[1];
+ if(Tr){
+ Out=cons(["\\text{As a result,}"],Out);
+ Out=cons([N3,"=",N1,MM,N2],Out);
+ if(S[0]==S[1] && N3==mgen(S[0],0,1,0)){
+ Out=cons(["=",muldo(N2,N1,XX),MM,"."],Out);
+ }else{
+ Out=cons([N1,"^{-1}=",R1,","],Out);
+ Out=cons([N2,"^{-1}=",R2,"."],Out);
+ }
+ }else{
+ Out=cons([N3,"=P",MM,"Q,"],Out);
+ Out=cons(["P=",N1,"=",R1,"^{-1},"],Out);
+ Out=cons(["Q=",N2,"=",R2,"^{-1}."],Out);
+ }
+ }
+ Out = ltotex(reverse(Out)|opt=["cr","spts0"],str=1,cr=15,var=Var);
+ if(S[0]+S[1]==Is1)
+ Out=str_subst(Out,"\\texttt{ }","");
+ if(VV>0){
+ dviout(Out|eq=6);
+ return NN;
+ }
+ return Out;
+ }else if(type(V)!=5) V=0;
+
+ if(type(St=getopt(step))!=1) St=0;
+ for(FF=": start";;){
+ if(St && V==0){
+ if(Tr){
+ mycat0([St,FF,"\n"],0);
+ mycat([GR,"\n"]);mycat([M,"\n"]);mycat([GC,"\n"]);
+ }
+ else mycat0([St,FF,"\n",M,"\n"],0);
+ }
+ if(X==0||X==[0,0]){ /* search minimal non-zero element */
+ for(K=F=I=0; I<S0; I++){
+ for(J=0; J<S1; J++){
+ if((P=abs(M[I][J]))!=0 && (K>P || K==0)){
+ K=P; R=[I,J];
+ }
+ }
+ }
+ R=cons(K-1,[R]);
+ }
+ else R=mymindeg(M,XX[1]|opt=1);
+ if(R[0]<0){ /*zero matrix */
+ if(Tr) return [[],mgen(S0,0,1,0),mgen(S1,0,1,0)];
+ return [];
+ }
+ R0=R[1][0];R1=R[1][1];
+ if(R0!=0){
+ M=rowx(M,0,R0);
+ if(Tr) GR=rowx(GR,0,R0);
+ }
+ if(R1!=0){
+ M=colx(M,0,R1);
+ if(Tr) GC=colx(GC,0,R1);
+ }
+ if(St>0 && (R0!=0 || R1!=0))
+ if(type(V)==5) V[St]=cons([0,R0,R1],V[St]);
+ else if(Tr){
+ mycat0([St,": (",R0+1,",",R1+1,") -> (1,1)\n"],0);
+ mycat([GR,"\n"]);mycat([M,"\n"]);mycat([GC,"\n"]);
+ }else mycat0([St,": (",R0+1,",",R1+1,") -> (1,1)\n",M,"\n"],0);
+ if(R[0]==0){ /* (1,1) : invertible */
+ if(type(V)==5) V[St]=cons([1],V[St]);
+ P=M[0][0]; M[0][0]=1;
+ for(J=0;J<S1;J++){ /* (1,1) -> 1 */
+ if(J>0) M[0][J]= red(M[0][J]/P);
+ if(Tr) GR[0][J]=red(GR[0][J]/P);
+ }
+ if(S0>1 && S1>1) N=newmat(S0-1,S1-1);
+ else N=0;
+ for(I=1;I<S0;I++){
+ P=M[I][0]; M[I][0]=0;
+ for(J=1;J<S1;J++)
+ N[I-1][J-1]=M[I][J]=red(M[I][J] - muldo(P,M[0][J],XX));
+ if(Tr){
+ for(J=0;J<S0;J++)
+ GR[I][J] = red(GR[I][J] -muldo(P,GR[0][J],XX));
+ }
+ }
+ if(Tr){
+ for(J=1;J<S1; J++){
+ for(I=0;I<S1;I++) GC[I][J]=red(GC[I][J]-muldo(GC[I][0],M[0][J],XX));
+ M[0][J]=0;
+ }
+ }
+ if(St>0 && V==0){
+ if(Tr){
+ mycat0([St,": unit\n"],0);
+ mycat([GR,"\n"]);mycat([M,"\n"]);mycat([GC,"\n"]);
+ }
+ else mycat0([St,": unit\n",M,"\n"],0);
+ }
+ if(N==0){
+ if(!Tr) return [1];
+ if(Tr==2){
+ GR0=mdivisor(GR,X|trans=1)[1];
+ GC0=mdivisor(GC,X|trans=1)[1];
+ return [[1],GR,GC,GR0,GC0];
+ }
+ return [[1],GR,GC];
+ }
+ R=mdivisor(N,XX|dviout=V,trans=Tr0,step=(St>0)?St+1:St);
+ if(!Tr) return cons(1,R);
+ GR=muldo(newbmat(2,2,[[1],[0,R[1]]]),GR,XX);
+ GC=muldo(GC,newbmat(2,2,[[1],[0,R[2]]]),XX);
+ if(S0==S1 && countin(1,1,R[0])==S0-1){
+ GR=muldo(GC,GR,XX); GC=mgen(S0,0,1,0);
+ }
+ if(Tr==2){
+ GR0=mdivisor(GR,X|trans=1)[1];
+ GC0=mdivisor(GC,X|trans=1)[1];
+ return [cons(1,R[0]),GR,GC,GR0,GC0];
+ }
+ return [cons(1,R[0]),GR,GC];
+ }
+ for(I=1;I<S0;I++){
+ if(M[I][0]!=0){
+/* Error! when mygcd(A,B,0) with A<=0 or B<=0 */
+ R=mygcd(M[I][0],M[0][0],XX); /* R[0]=R[1]*M[I][0]+R[2]*M[0][0] */
+ M[0][0]=R[0]; M[I][0]=0; /* 0=R[3]*M[I][0]+R[4]*M[0][0] */
+ for(J=1;J<S1;J++){
+ T=red(muldo(R[1],M[I][J],XX)+muldo(R[2],M[0][J],XX));
+ M[I][J]=red(muldo(R[3],M[I][J],XX)+muldo(R[4],M[0][J],XX));
+ M[0][J]=T;
+ }
+ if(Tr){
+ for(J=0;J<S0;J++){
+ T=red(muldo(R[1],GR[I][J],XX)+muldo(R[2],GR[0][J],XX));
+ GR[I][J]=red(muldo(R[3],GR[I][J],XX)+muldo(R[4],GR[0][J],XX));
+ GR[0][J]=T;
+ }
+ }
+ if(St && V==0){
+ mycat([" [",R[2],R[1],"]*"]);
+ mycat([" [",R[4],R[3],"]"]);
+ }
+ if(type(V)==5) V[St]=cons([2,I,mat([R[2],R[1]],[R[4],R[3]])],V[St]);
+ FF=": line 1 & "+rtostr(I+1); I=S0;
+ }
+ }
+ if(I>S0) continue;
+ for(J=1;J<S1;J++){
+ if(M[0][J]!=0){
+ R=mygcd(M[0][J],M[0][0],XX|rev=1); /* R[0]=M[0][J]*R[1]+M[0][0]*R[2] */
+ M[0][0]=R[0]; M[0][J]=0; /* 0=M[0][J]*R[3]+M[0][0]*R[4] */
+ for(I=1;I<S0;I++){
+ T=red(muldo(M[I][J],R[1],XX)+muldo(M[I][0],R[2],XX));
+ M[I][J]=red(muldo(M[I][J],R[3],XX)+muldo(M[I][0],R[4],XX));
+ M[I][0]=T;
+ }
+ if(Tr){
+ for(I=0;I<S1;I++){
+ T=red(muldo(GC[I][J],R[1],XX)+muldo(GC[I][0],R[2],XX));
+ GC[I][J]=red(muldo(GC[I][J],R[3],XX)+muldo(GC[I][0],R[4],XX));
+ GC[I][0]=T;
+ }
+ }
+ if(type(V)==5) V[St]=cons([3,J,mat([R[2],R[4]],[R[1],R[3]])],V[St]);
+ FF=": column 1 & "+rtostr(J+1);J=S1;
+ if(St && V==0){
+ mycat([" *[",R[2],R[4],"]"]);
+ mycat([" [",R[1],R[3],"]"]);
+ }
+ }
+ }
+ if(J>S1) continue;
+ if(S0==1 || S1==1){
+ P=M[0][0];
+ if(X==0){
+ if(P<0){
+ P=-P;
+ if(Tr) for(J=0;J<S0;J++) GR[0][J]=-GR[0][J];
+ if(type(V)==5) V[St]=cons([5,0,-1],V[St]);
+ }
+ }else{
+ P=nm(P);
+ if((R=fctr(P)[0][0])!=1){
+ P/=R;
+ if(Tr) for(J=0;J<S0;J++) GR[0][J]/=R;
+ if(type(V)==5) V[St]=cons([5,0,1/R],V[St]);
+ }
+ }
+ if(!Tr) return [P];
+ if(Tr==2){
+ GR0=mdivisor(GR,X|trans=1)[1];
+ GC0=mdivisor(GC,X|trans=1)[1];
+ return [[P],GR,GC,GR0,GC0];
+ }
+ return [[P],GR,GC];
+ }
+ if(XX==0 || (type(XX)==4 && XX[0]==0)){ /* commutative case */
+ P=M[0][0];
+ for(I=1; I<S0; I++){
+ for(J=1; J<S1; J++)
+ if(divdo(M[I][J],P,XX)[1]!=0) break;
+ if(J<S1){
+ if(type(V)==5) V[St]=cons([4,J],V[St]);
+ FF=": column 1 += col"+rtostr(J+1);
+ for(I=1;I<S0;I++) M[I][0]=M[I][J];
+ if(Tr) for(I=0;I<S1;I++) GC[I][0]=red(GC[I][0]+GC[I][J]);
+ break;
+ }
+ }
+ if(J<S1) continue;
+ N=newmat(S0-1,S1-1);
+ for(I=1;I<S0;I++)
+ for(J=1;J<S1;J++) N[I-1][J-1]=red(M[I][J]/P);
+ if(X==0){
+ if(P<0) P=-P;
+ if(Tr) for(J=0;J<S0;J++) GR[0][J]=-GR[0][J];
+ }else{
+ P=M[0][0];
+ P=nm(P);
+ P/=fctr(P)[0][0];
+ if(Tr) for(J=0;J<S0;J++) GR[0][J]/=fctr(P)[0][0];
+ }
+ R=mdivisor(N,XX|dviout=V,trans=Tr0,step=(St>0)?St+1:St);
+ RT=(Tr)?R[0]:R;
+ for(RR=[],L=reverse(RT);L!=[];L=cdr(L))
+ RR=cons(red(P*car(L)),RR);
+ RR=cons(P,RR);
+ if(!Tr) return RR;
+ GR=muldo(newbmat(2,2,[[1],[0,R[1]]]),GR,XX);
+ GC=muldo(GC,newbmat(2,2,[[1],[0,R[2]]]),XX);
+ if(S0==S1 && countin(1,1,RR)==S0){
+ GR=muldo(GC,GR,XX); GC=mgen(S0,0,1,0);
+ }
+ if(Tr==2){
+ GR0=mdivisor(GR,X|trans=1)[1];
+ GC0=mdivisor(GC,X|trans=1)[1];
+ return [RR,GR,GC,GR0,GC0];
+ }
+ return [RR,GR,GC];
+ } /* End of commutative case */
+ for(I=1; I<S0; I++){
+ for(J=1; J<S1; J++){
+ if(M[I][J] != 0){
+ for(T=1;I<S0;T*=XX[0]){
+ R=divdo(muldo(M[I][J],T,XX),M[0][0],XX);
+ if(R[1]!=0){
+ if(type(V)==5) V[St]=cons([6,J,T],V[St]);
+ FF=": column 1 += col"+rtostr((J+1)*T);
+ if(I>1){
+ M=rowx(M,1,I);
+ if(Tr) GR=rowx(GR,1,I);
+ if(type(V)==5) V[St]=cons([7,I],V[St]);
+ FF+=", line 2<->"+rtostr(I+1);
+ }
+ for(I=1;I<S0;I++) M[I][0]=muldo(M[I][J],T,XX);
+ if(Tr)
+ for(I=1;I<S1;I++) GC[I][0]=red(GC[I][0]+muldo(GC[I][J],T,XX));
+ I=S0+1; J=S1;
+ break;
+ }
+ }
+ }
+ }
+ if(I>S0) break;
+ }
+ if(I==S0) return []; /* zero matrix : never happen */
+ }
+}
+
+def mdsimplify(L)
+{
+ T=getopt(type);
+ SS=0;
+ if(type(L)==6){
+ L=[L]; SS=1;
+ }
+ if(type(L)==5){
+ SS=2;
+ L = vtol(L);
+ }
+ M=car(L);
+ S=size(M)[0];
+#if 0
+ MN=newmat(S,S);
+ MD=newmat(S,S);
+ for(I=0;I<S;I++){
+ for(J=0;J<S;J++){
+ TN=0;TD=1;
+ for(PL=L;PL!=[];PL=cdr(PL)){
+ TM=red(car(PL)[I][J]);
+ TN=lgcd([TN,nm(TM)]|pol=1);
+ TD=llcm([TD,dn(TM)]|pol=1);
+ }
+ MN[I][J]=TM;
+ MD[I][J]=TN;
+ }
+ }
+ for(I=0;I<S;I++){
+ for(J=0;J<S;J++){
+ if(I==J||type(TD[I][J])<2||type(TN[J][I])<2) continue;
+ for(FC=cdr(fctr(TD[I][J]));FC!=[];){
+ TFC=car(FC);
+ if(type(red(TN[J][I]/TFC[0]))>2) continue;
+ }
+ }
+ }
+#endif
+ DD=newvect(S);
+ for(I=0; I<S; I++){
+ LN=RN=[];
+ LD=RD=1;
+ for(LL=L; LL!=[]; LL=cdr(LL)){
+ M = car(LL);
+ for(J=0; J<S; J++){
+ if(J==I) continue;
+ if((MM=M[I][J]) != 0){
+ LN = cons(nm(MM),LN);
+ if(type(MM)==3 && tdiv(LD,P=dn(MM))==0)
+ LD=tdiv(LD*P,gcd(LD,P));
+ }
+ if((MM=M[J][I]) != 0){
+ RN = cons(nm(MM),RN);
+ if(type(MM)==3 && tdiv(RD,P=dn(MM))==0)
+ RD=tdiv(RD*P,gcd(RD,P));
+ }
+ }
+ }
+ if(T==1 || T==3) LQ=RD;
+ else{
+ P=lpgcd(LN);
+ LQ=gcd(P,RD);
+ if(P!=0) LQ *= nm(fctr(P)[0][0]);
+ }
+ if(T==1 || T==2) RQ=LD;
+ else{
+ P=lpgcd(RN);
+ RQ=gcd(P,LD);
+ if(P!=0) RQ *= nm(fctr(P)[0][0]);
+ }
+ if((P=gcdz(LQ,RQ))!=1){
+ LQ = red(LQ/P); RQ=red(RQ/P);
+ }
+ DD[I]=red(LQ/RQ);
+ if(LQ!=1 || RQ!=1){
+ for(LA=[],LL=L; LL!=[]; LL=cdr(LL)){
+ M = car(LL);
+ for(J=0; J<S; J++){
+ if(I!=J){
+ if(LQ!=1){
+ M[I][J] = red(M[I][J]/LQ);
+ M[J][I] = red(M[J][I]*LQ);
+ }
+ if(RQ!=1){
+ M[J][I] = red(M[J][I]/RQ);
+ M[I][J] = red(M[I][J]*RQ);
+ }
+ }
+ }
+ }
+ }
+ }
+ if(SS==2) L=ltov(L);
+ if(SS==1) L=L[0];
+ if(getopt(show)==1) L=[L,DD];
+ return L;
+}
+
+def m2mc(M,X)
+{
+ if(type(M)<2){
+ mycat([
+"m2mc(m,t) or m2mc(m,[t,s])\t Calculation of Pfaff system of two variables\n",
+" m : list of 5 residue mat. or GRS/spc for rigid 4 singular points\n",
+" t : [a0,ay,a1,c], swap, GRS, GRSC, sp, irreducible, pair, pairs, Pfaff, All\n",
+" s : TeX, dviout, GRSC\n",
+" option : swap, small, simplify, operator, int\n",
+" Ex: m2mc(\"21,21,21,21\",\"All\")\n"
+]);
+ return 0;
+ }
+ if(type(M)==7) M=s2sp(M);
+ if(type(X)==7) X=[X];
+ Simp=getopt(simplify);
+ if(Simp!=0 && type(Simp)!=1) Simp=2;
+ Small=(getopt(small)==1)?1:0;
+ if(type(M[0])==4){
+ if(type(M[0][0])==1){ /* spectral type */
+ XX=getopt(dep);
+ if(type(XX)!=4 || type(XX[0])>1) XX=[1,length(M[0])];
+ M=sp2grs(M,[d,a,b,c],[XX[0],XX[1],-2]|mat=1);
+ if(XX[0]>1 && XX[1]<2) XX=[XX[0],2];
+ if(getopt(int)!=0){
+ T=M[XX[0]-1][XX[1]-1][1];
+ for(V=vars(T);V!=[];V=cdr(V)){
+ F=coef(T,1,car(V));
+ if(type(F)==1 && dn(F)>1)
+ M = subst(M,car(V),dn(F)*car(V));
+ }
+ }
+ V=vars(M);
+ if(findin(d1,V)>=0 && findin(d2,V)<0 && findin(d3,V)<0)
+ M=subst(M,d1,d);
+ }
+ RC=chkspt(M|mat=1);
+ if(RC[2] != 2 || RC[3] != 0){ /* rigidity idx and Fuchs cond */
+ erno(0);return 0;
+ }
+ R=getbygrs(M,1|mat=1);
+ if(getopt(anal)==1) return R; /* called by mc2grs() */
+ Z=newmat(1,1,[[0]]);
+ N=[Z,Z,Z,Z,Z];
+ for(RR=R; RR!=[]; RR=cdr(RR)){
+ RT=car(RR)[0];
+ if(type(RT)==4){
+ if(RT[0]!=0) N=m2mc(N,RT[0]|simplify=Simp);
+ N=m2mc(N,[RT[1],RT[2],RT[3]]|simplify=Simp);
+ }
+ }
+ if(type(X)==4 && type(X[0])==7)
+ return m2mc(N,X|keep=Keep,small=Small);
+ return N;
+ }
+ if(type(X)==4 && type(X[0])==7){
+ Keep=(getopt(keep)==1)?1:0;
+ if(X[0]=="All"){
+ dviout("Riemann scheme"|keep=1);
+ m2mc(M,[(findin("GRSC",X)>=0)?"GRSC":"GRS","dviout"]|keep=1);
+ dviout("Spectral types : "|keep=1);
+ m2mc(M,["sp","dviout"]|keep=1);
+ dviout("\\\\\nBy the decompositions"|keep=1);
+ R=m2mc(M,["pairs","dviout"]|keep=1);
+ for(R0=R1=[],I=1; R!=[]; I++, R=cdr(R)){
+ for(S=0,RR=car(R)[1][0];RR!=[]; RR=cdr(RR)) S+=RR[0];
+ if(S==0) R0=cons(I,R0);
+ else if(S<0) R1=cons(I,R1);
+ }
+ S="irreducibility\\ $"+((length(R0)==0)?"\\Leftrightarrow":"\\Leftarrow")
+ +"\\ \\emptyset=\\mathbb Z\\cap$";
+ dviout(S|keep=1);
+ m2mc(M,["irreducible","dviout"]|keep=1);
+ if(R0!=[])
+ dviout(ltotex(reverse(R0))|eq=0,keep=1,
+ title="The following conditions may not be necessary for the irreducibility.");
+ if(R1!=[])
+ dviout(ltotex(reverse(R1))|eq=0,keep=1,title="The following conditions can be omitted.");
+ if(getopt(operator)!=0){
+ dviout("The equation in a Pfaff form is"|keep=1);
+ m2mc(M,["Pfaff","dviout"]|keep=Keep,small=Small);
+ }
+ else if(Keep!=1) dviout(" ");
+ return M;
+ }
+ Show=0;
+ if(length(X)>1){
+ if(X[1]=="dviout") Show=2;
+ if(X[1]=="TeX") Show=1;
+ }
+ if(X[0]=="GRS"||X[0]=="GRSC"||X[0]=="sp"){
+ Y=radd(-M[0],-M[1]-M[2]);
+ if(X[0]!="GRSC"){
+ L=meigen([M[0],M[1],M[2],M[3],M[4],Y,radd(-M[1],-M[3]-M[4]),radd(Y,-M[3]-M[4])]|mult=1);
+ if(X[0]=="sp"){
+ L=chkspt(L|opt="sp");
+ V=[L[1],L[0],L[2],L[5]]; W=[L[1],L[3],L[4],L[6]];
+ if(Show==2) dviout(s2sp(V)+" : "+s2sp(W)|keep=Keep);
+ return [V,W];
+ }
+ S="x=0&x=y&x=1&y=0&y=1&x=\\infty&y=\\infty&x=y=\\infty\\\\\n";
+ }else{
+ L=meigen([M[0],M[1],M[2],M[3],M[4],Y,radd(-M[1],-M[3]-M[4]),radd(Y,-M[3]-M[4]),
+ radd(M[0],M[1]+M[3]),radd(M[1],M[2]+M[4])]|mult=1);
+ S="x=0&x=y&x=1&y=0&y=1&x=\\infty&y=\\infty&x=y=\\infty&x=y=0&x=y=1\\\\\n";
+ }
+ T=ltotex(L|opt="GRS",pre=S,small=Small);
+ if(Show==2) dviout(T|eq=0,keep=Keep);
+ if(Show==1) L=T;
+ return L;
+ }
+ if(X[0]=="Pfaff"){
+ S=ltotex(M|opt=["Pfaff",u,x,x-y,x-1,y,y-1],small=Small);
+ if(Show==2) dviout(S|eq=0,keep=Keep);
+ return S;
+ }
+ if(X[0]=="irreducible"){
+ L=meigen([M[0],M[1],M[2],radd(-M[0],-M[1]-M[2])]|mult=1);
+ S=getbygrs(L,10|mat=1);
+ if(Show==2) dviout(ltotex(S)|eq=0,keep=Keep);
+ return S;
+ }
+ if(X[0]=="pairs"||X[0]=="pair"){
+ L=meigen([M[0],M[1],M[2],radd(-M[0],-M[1]-M[2])]|mult=1);
+ S=chkspt(L|opt=0);
+ V=(Show==2)?1:0;
+ S=sproot(L,X[0]|dviout=V,keep=Keep);
+ return S;
+ }
+ if(X[0]=="swap"){
+ Swap=getopt(swap);
+ if(type(Swap)<1 || Swap==1)
+ return newvect(5,[M[3],M[1],M[4],M[0],M[2]]);
+ if(Swap==2)
+ return newvect(5,[radd(M[0],M[1]+M[3]),M[4],M[2],radd(-M[1],-M[3]-M[4]),M[1]]);
+ if(type(Swap)==4 && length(Swap)==3){
+ MX=radd(-M[0],-M[1]-M[2]); MY=radd(-M[3],-M[1]-M[4]);
+ if(Swap[0]==1){
+ MX0=M[2];MY0=M[4];
+ }
+ else if(Swap[0]==2){
+ MX0=MX;MY0=MY;
+ }else{
+ MX0=M[0];MY0=M[3];
+ }
+ if(Swap[1]==1){
+ MX1=M[2];MY1=M[4];
+ }
+ else if(Swap[1]==2){
+ MX1=MX;MY1=MY;
+ }else{
+ MX1=M[0];MY1=M[3];
+ }
+ return newvect(5,MX0,M[1],MX1,MY0,MY1);
+ }
+ }
+ return 0;
+ }
+ if(getopt(swap)==1)
+ return m2mc(m2mc(m2mc(M,"swap"),X),"swap");
+ N=newvect(5);
+ for(I=0;I<5;I++)
+ N[I]=M[I];
+ S=size(N[0])[0];
+ if(type(X)==4){
+ for(I=0;I<3;I++){
+ if(X[I] != 0)
+ N[I] = radd(N[I],X[I]);
+ }
+ if(length(X)==3) return N;
+ X=X[3];
+ }
+ MZ = newmat(S,S);
+ ME = mgen(S,0,[X],0);
+ MM = newvect(5);
+ MM[0] = newbmat(3,3, [[N[0]+ME,N[1],N[2]], [MZ], [MZ]]);
+ MM[1] = newbmat(3,3, [[MZ], [N[0],N[1]+ME,N[2]], [MZ]]);
+ MM[2] = newbmat(3,3, [[MZ], [MZ], [N[0],N[1],N[2]+ME]]);
+ MM[3] = newbmat(3,3, [[N[3]+N[1],-N[1]], [-N[0],radd(N[0],N[3])], [MZ,MZ,N[3]]]);
+ MM[4] = newbmat(3,3, [[N[4]], [MZ,N[4]+N[2],-N[2]], [MZ,-N[1],radd(N[4],N[1])]]);
+ M0 = newbmat(3,3, [[N[0]], [MZ,N[1]], [MZ,MZ,N[2]]]);
+ M1 = radd(MM[0],MM[1]+MM[2]);
+ KE = append(mykernel(M0|opt=1),mykernel(M1|opt=1));
+ if(length(KE) == 0) return MM;
+ KK = mtoupper(lv2m(KE),0);
+ for(I=0;I<5;I++)
+ MM[I] = mmod(MM[I],KK);
+ if(Simp!=0) MM = mdsimplify(MM|type=Simp);
+ return MM;
+}
+
+def easierpol(P,X)
+{
+ if(type(X) == 4){
+ for( Y = [] ; X != []; X = cdr(X) )
+ Y = cons([0,car(X)], Y);
+ }else
+ Y = [0,X];
+ return rede(P,Y);
+}
+
+def l2p(L,V)
+{
+ if(type(L)==4){
+ for(S=I=0;L!=[];L=cdr(L),I++)
+ S+=car(L)*V^I;
+ return S;
+ }else if(type(L)==5){
+ for(S=0,I=size(L)-1;I>=0;I--)
+ S+=L[I]*V^I;
+ return S;
+ }else{
+ if(type(D=getopt(size))==1) D--;
+ else D=mydeg(L,V);
+ for(S=[];D>=0;D--)
+ S=cons(mycoef(L,D,V),S);
+ return S;
+ }
+}
+
+def paracmpl(L,V)
+{
+ if(type(L)==4) L=ltov(L);
+ S=length(L);
+ Lim=getopt(lim);Low=getopt(low);
+ if((F=type(L[0]))>3){
+ SV=length(L[0]);
+ V0=makenewv(L);
+ for(LL=[];S>0;S--)
+ LL=cons(l2p(L[S-1],V0),LL);
+ G=paracmpl(LL,V|option_list=getopt());
+ H=(Lim==1)?G:G[0];
+ for(HH=[];H!=[];H=cdr(H)){
+ HT=l2p(car(H),V0|size=SV);
+ if(F==5) HT=ltov(HT);
+ HH=cons(HT,HH);
+ }
+ H=reverse(HH);
+ return (Lim==1)?H:[H,G[1]];
+ }
+ H=newvect(S);D=newvect(S);
+ for(Dn=1,I=0;I<S;I++){
+ P=dn(L[I]=red(L[I]));
+ Dn=red(Dn*P/gcd(Dn,P));
+ }
+ if(Dn!=1){
+ for(I=0;I<S;I++) L[I]=red(Dn*L[I]);
+ }
+ G=diagm(S,[1]);
+ if(type(V)<4) V=[V];
+ VV=lsort(vars(L),V,1);
+ V=car(V);
+ for(I=0;I<S;I++){
+ P=L[I];
+ for(J=0,C=P;J<I;J++){
+ if(D[J]!=[]){
+ C=mycoef(C,DT,VV);
+ P-=C*H[J];
+ G=cola(G,I,J,-C);
+ }
+ }
+ if(P==0){
+ D[I]=[];continue;
+ }
+ P0=nm(red(P));
+ K=mymindeg(P0,V);
+ C=mycoef(P0,K,V);
+ if(K>0){
+ P=red(P/V^K);
+ G=colm(G,I,1/V^K);
+ }
+ for(DT=[],VT=VV;VT!=[];VT=cdr(VT)){
+ K=(Low==1)?mymindeg(C,car(VT)):mydeg(C,car(VT));
+ C=mycoef(C,K,car(VT));
+ DT=cons(K,DT);
+ }
+ D[I]=DT=reverse(DT);
+ for(C=P,VT=VV;VT!=[];VT=cdr(VT),DT=cdr(DT))
+ C=mycoef(C,car(DT),car(VT));
+ H[I]=P=red(P/C);
+ G=colm(G,I,1/C);
+ }
+ if(Dn!=1){
+ for(I=0;I<S;I++){
+ TH=red(H[I]/Dn);
+ F=fctr(dn(TH));F=cdr(F);
+ if(Lim!=1||subst(Dn,V,0)==0){
+ for(;F!=[];F=cdr(F)){
+ if(lsort(vars(car(F)[0]),VV,2)==[]){
+ C=car(F)[0]^car(F)[1];
+ TH=red(TH*C);
+ G=colm(G,I,C);
+ }
+ }
+ }
+ H[I]=TH;
+ }
+ }
+ H=vtol(H);
+ if(Lim==1){
+ H=subst(H,V,0);
+ return map(red,H);
+ }
+ return [H,map(red,G)];
+}
+
+def mykernel(M)
+{
+ if(getopt(opt) == 1)
+ M = mtranspose(M);
+ S = size(M);
+ R = [];
+ MM = mtoupper(M,-1);
+ for(I = S[0]-1; I >= 0; I--){
+ for(J = S[1]-1; J >= 0; J--){
+ if(MM[I][J] != 0)
+ return R;
+ }
+ P = easierpol(MM[I][S[1]],zz);
+ RR = newvect(S[0]);
+ for(J = 0; J < S[0]; J++)
+ RR[J] = mycoef(P,J,zz);
+ R = cons(RR,R);
+ }
+ return R;
+}
+
+def myimage(M)
+{
+ if(getopt(opt) == 1)
+ M = mtranspose(M);
+ S = size(M);
+ V = [];
+ M0 = newvect(S[1]);
+ M = mtoupper(M,0|opt=1);
+ for(I = S[0]-1; I >= 0; I--)
+ if(M0 != M[I])
+ V = cons(vtozv(M[I])[0], V);
+ return V;
+}
+
+def mymod(V,L)
+{
+ Opt = getopt(opt);
+ S = length(V);
+ VP = newvect(S);
+ if(type(L)==6)
+ L=m2lv(L);
+ CT = length(L);
+ for(LT = L; LT != []; LT = cdr(LT)){
+ for(VT = car(LT), I = 0; I < S; I++)
+ if(VT[I] != 0) break;
+ if(I >= S){
+ CT--;
+ continue;
+ }
+ VP[I] = 1;
+ MI = -red(V[I]/VT[I]);
+ if(MI != 0)
+ V = radd(V,rmul(MI,VT));
+ }
+ if(Opt==1){
+ for(I = 0; I < S; I++)
+ if(V[I] != 0)
+ return 1;
+ return 0;
+ }
+ if(Opt==2){
+ W=newvect(S-CT);
+ for(CC = I = 0; I < S; I++){
+ if(VP[I]==0) W[CC++] =V[I];
+ }
+ return W;
+ }
+ return V;
+}
+
+def mmod(M,L)
+{
+ S=size(M)[1];
+ MM=mtranspose(M);
+ VP = newvect(S);
+ if(type(L)==6)
+ L=m2lv(L);
+ for(CT = 0, LT = L; LT != []; LT = cdr(LT)){
+ for(VT = car(LT), I = 0; I < S; I++){
+ if(VT[I] != 0){
+ VP[I] = 1;
+ break;
+ }
+ }
+ }
+ if(getopt(opt)==1)
+ NE=1;
+ for(D=I=0; I<S; I++){
+ if(NE != 1 && VP[I] == 1) continue;
+ T = mymod(MM[I],L|opt=2);
+ if(D==0){
+ K=length(T);
+ MN=newmat((NE==1)?S:K,K);
+ }
+ for(J=0;J<K;J++)
+ MN[J][D]=T[J];
+ D++;
+ }
+ return MN;
+}
+
+def llsize(V)
+{
+ for(I=J=0;V!=[];V=cdr(V),I++)
+ if(length(car(V))>J) J=length(car(V));
+ return [I,J];
+}
+
+def llbase(VV,L)
+{
+ S = length(VV);
+ V = dupmat(VV);
+ if(type(V) == 4)
+ V = ltov(V);
+ T = length(L);
+ for(I = 0; I < S; I++)
+ V[I] = nm(red(V[I]));
+ LV = 0;
+ for(J = 0; J < T; J++){
+ X = var(L[J]); N = deg(L[J],X);
+ for(I = LV; I < S; I++){
+ if((C2=coef(V[I],N,X)) != 0){
+ if(I > LV){
+ Temp = V[I];
+ V[I] = V[LV];
+ V[LV] = Temp;
+ }
+ for(I = 0; I < S; I++){
+ if(I == LV || (C1 = coef(V[I],N,X)) == 0)
+ continue;
+ Gcd = gcd(C1,C2);
+ V[I] = V[I]*tdiv(C2,Gcd)-V[LV]*tdiv(C1,Gcd);
+ }
+ LV++;
+ }
+ }
+ }
+ return V;
+}
+
+def lsort(L1,L2,T)
+{
+ C1=getopt(c1);C2=getopt(c2);
+ if(type(T)==4){
+ K=T;
+ if(length(T)>0){
+ T=K[0];
+ K=cdr(K);
+ }else T=0;
+ }else K=0;
+ if(type(TT=T)==7)
+ T = findin(T,["cup","setminus","cap","reduce","sum","subst"]);
+ if(type(L2)==7&&T<0)
+ T=findin(TT,["put","get","sub"]);
+ if(K){ /* [[..],..] */
+ if(K!=[]) KN=K[0];
+ if(L2==[]||L2=="sort"){ /* sort or deduce duplication */
+ if((T!=0&&T!=3)||length(K)!=1) return L1;
+ if(KN<0){
+ KN=-KN-1;
+ F=-1;
+ }else F=1;
+ L1=msort(L1,[F,0,KN]);
+ if(T==3){
+ R=[car(L1)];L1=cdr(L1);
+ for(;L1!=[];L1=cdr(L1)){
+ if(car(L1)[KN]!=car(R)[KN]) R=cons(car(L1),R);
+ }
+ L1=reverse(R);
+ }
+ return L1;
+ }else if((L2==0||L2=="col")&&type(C1)==4){
+ if(T==0||T==1){ /* extract or delete columns */
+ for(R=[];L1!=[];L1=cdr(L1)){
+ if(T==1&&C1==[0]){ /* delete top column */
+ R=cons(cdr(car(L1)),R);
+ continue;
+ }
+ LT=car(L1);RT=[];
+ if(T==0){
+ for(CT=C1;CT!=[];CT=cdr(CT)) RT=cons(LT[car(CT)],RT);
+ }else{
+ for(I=0;LT!=[];I++,LT=cdr(LT))
+ if(findin(I,C1)<0) RT=cons(car(LT),RT);
+ RT=reverse(RT);
+ }
+ R=cons(RT,R);
+ }
+ return reverse(R);
+ }
+ }else if(type(L2)==1||type(L2)==7){
+ if(L2==1||L2=="num"){
+ if(T==4) T=3;
+ I=(length(K)<2)?(-1):K[1];
+ if(T==0||T==1||T==2||T==3){
+ S=F=CT=0;R=[];
+ if(K==[] || type((S=K[0]))==1 || S==0){
+ if(T==0||T==1||T==2){
+ for(J;L1!=[];L1=cdr(L1),J++){
+ if(T==0) R=cons(cons(J+S,car(L1)),R);
+ else if(T==1){
+ for( ;C1!=[]; C1=cdr(C1))
+ R=cons(L1[car(C1)],R);
+ }else{
+ if(findin(J,C1)<0) R=cons(car(L1),R);
+ }
+ }
+ return reverse(R);
+ }else if(T==3) return length(L1);
+ }else{
+ if(type(S)==2&&vtype(S)>2) F=1;
+ else if(type(S)==4) F=2;
+ else if(S=="+") F=3;
+ else return L1;
+ }
+ for(R=[];L1!=[];L1=cdr(L1)){
+ L1T=car(L1);
+ if(F==1) V=call(S,(I<0)?L1T:L1T[I]);
+ else if(F==2) V=calc((I<0)?L1T:L1T[I],S);
+ else if(F==3){
+ for(C=C1,V=0;C!=[];C=cdr(C))
+ if(type(X=L1T[car(C)])==1) V+=X;
+ }
+ if(T==0) R=cons(cons(V,L1T),R);
+ else if(T==1){
+ if(V) R=cons(L1T,R);
+ }else if(T==2){
+ if(!V) R=cons(L1T,R);
+ }else if(T==3){
+ if(F==3) CT+=V;
+ else if(V) CT++;
+ }
+ }
+ return (T==3)?CT:reverse(R);
+ }else if(TT=="col"){
+ J=(length(K)>0)?car(K):0;
+ I=length(car(L1))+J;
+ for(V=[];I>J;)
+ V=cons(--I,V);
+ return cons(V,L1);
+ }
+ }else if(L2=="transpose") return mtranspose(L1);
+ else if(L2=="subst"||L2=="adjust"){
+ Null=(!K)?"":car(K);
+ if(L2=="adjust") C1=[];
+ R=lv2m(L1|null="");
+ for(;C1!=[];C1=cdr(C1)) R[car(C1)[0]][car(C1)[1]]=car(C1)[2];
+ return m2ll(R);
+ }
+ return L1;
+ }else{ /* [[..],..], [[..],..] */
+ if(type(L2[0])<4){
+ for(R=[];L2!=[];L2=cdr(L2)) R=cons([car(L2)],R);
+ L2=reverse(R);
+ }
+ if(TT=="sum") T=3;
+ if(TT=="over") T=4;
+ if(findin(T,[0,1,2,3,4,5])<0) return L1;
+ if(T==4||T==5){
+ if(type(C1)<2) C1=[C1];
+ if(type(C2)<2) C2=[C2];
+ }
+ if(type(car(L2))!=4){
+ for(R=[];L2!=[];L2=cdr(L2)) R=cons([car(L2)],R);
+ R=reverse(R);
+ if(length(K)==1) K=[K[0],0];
+ C2=0;
+ }
+ L1=lsort(L1,"num",["put",0]); /* insert number */
+ K0=(length(K)>0)?K[0]+1:1;
+ K1=(length(K)>1)?K1=K[1]:0;
+ L1=lsort(L1,"sort",[0,K0]);
+ if(T<4&&type(C2)==4&&length(L2[0])>1){
+ L2=lsort(L2,"col",["put"]|c1=cons(K1,C2)); /* add key and extract columns */
+ C2=0;K1=0;
+ }
+ L2=lsort(L2,"sort",[0,K1]);
+ for(R0=[],S=S1=length(L1[0]);S>0;S--) R0=cons("",R0);
+ for(R1=[],S=length(L2[0]);S>0;S--) R1=cons("",R1);
+ if(!K1&&T!=3) R1=cdr(R1);
+ for(R=[];L1!=[];L1=cdr(L1)){
+ while(L2!=[]&&car(L1)[K0]>car(L2)[K1]){
+ if(T==3) R=cons(append(R0,car(L2)),R);
+ L2=cdr(L2);
+ }
+ if(L2==[]||car(L1)[K0]<car(L2)[K1]){
+ if(T!=2) R=cons((T==1||T>3||R1==[])?car(L1):append(car(L1),R1),R);
+ }else if(T==0||T==2||T==3){
+ if(R0==[]) R=append(car(L1),R);
+ else R=cons(append(car(L1),(!K1&&T!=3)?cdr(car(L2)):car(L2)),R);
+ L2=cdr(L2);
+ }else if(T==4||T==5){
+ V1=ltov(car(L1));V2=ltov(car(L2));
+ for(D1=C1,D2=C2;D1!=[];D1=cdr(D1),D2=cdr(D2))
+ if((I=V2[car(D2)])!=""||T==4) V1[car(D1)+1]=I;
+ R=cons(vtol(V1),R);
+ }
+ }
+ if(T==3){
+ while(L2!=[]){
+ R=cons(append(R0,car(L2)),R);
+ L2=cdr(L2);
+ }
+ }
+ R=lsort(R,"sort",["put",0]); /* original order */
+ D=(((T==0||T==2)&&!K1)||T==3)?[0]:[0,S1+K1];
+ R=lsort(R,0,[1]|c1=D); /* delete */
+ if(type(C1)!=4||T==1||T==4||T==5) return R;
+ C=[];S0=size(L1[0]);
+ for(;C1!=[];C1=cdr(C1)) C=cons(car(C1),C);
+ for(I=0;I<S0-S1;I++) C=cons(I+S1,C);
+ C=reverse(C);
+ return lsort(R,"col",[1]|c1=C);
+ }
+ }
+ if(L2 == []){ /* [...] */
+ if(T==8||TT=="count") return [length(L1),length(lsort(L1,[],1))];
+ if(T==7||TT=="cut"){
+ K=length(L1);
+ if(C1<0) C1=K+C1;
+ for(R=[],I=0;I<C1&&L1!=[];I++,L1=cdr(L1))
+ R=cons(car(L1),R);
+ for(S=[];L1!=[];L1=cdr(L1))
+ S=cons(car(L1),S);
+ return [reverse(R),reverse(S)];
+ }
+ if(T==2) return L2;
+ if(T==3) return [L1,L2];
+ L1 = ltov(L1); qsort(L1);
+ if(T != 1)
+ return vtol(L1);
+ L3 = [];
+ for(I = length(L1)-1; I >= 0; I--){
+ if(I > 0 && L1[I] == L1[I-1])
+ continue;
+ L3 = cons(L1[I], L3);
+ }
+ return L3;
+ }
+ if(T==8||TT=="count"){
+ K=length(lsort(L1,L2,3)[0]);
+ R=[length(L2),length(L1)];
+ L1 = lsort(L1,[],1);
+ L2 = lsort(L2,[],1);
+ R=append([length(L2),length(L1)],R);
+ R=cons(length(lsort(L1,L2,2)),R);
+ return reverse(cons(K,R));
+ }
+ if((T==9||TT=="cons")&&type(car(L1))==4){
+ if(type(L2)!=4) L2=[L2];
+ for(R=[];L1!=[];L1=cdr(L1)){
+ R=cons(cons(car(L2),car(L1)),R);
+ if(length(L2)>1) L2=cdr(L2);
+ }
+ return reverse(R);
+ }
+ if(T==10||TT=="cmp"){
+ if(length(L1)!=length(L2)){
+ mycat("Different length!");
+ return 1;
+ }
+ R=[];
+ if(type(car(L1))==4){
+ for(U=[],I=0;L1!=[];I++,L1=cdr(L1),L2=cdr(L2)){
+ if(length(S=car(L1))!=length(T=car(L2))){
+ mycat(["Different size : line ",I]);
+ return 0;
+ }
+ for(J=0;S!=[];S=cdr(S),T=cdr(T),J++)
+ if(car(S)!=car(T)) U=cons([[I,J],car(S),car(T)],U);
+ }
+ if(U!=[]) R=cons(reverse(U),R);
+ }else{
+ for(I=0;L1!=[];L1=cdr(L1),L2=cdr(L2),I++)
+ if(car(L1)!=car(L2)) R=cons([I,car(L1),car(L2)],R);
+ }
+ return reverse(R);
+ }
+ if(T==11||TT=="append"){
+ if(type(car(L1))!=4) return append(L1,L2);
+ for(R=[];L1!=[];L1=cdr(L1),L2=cdr(L2))
+ R=cons(append(car(L1),car(L2)),R);
+ return reverse(R);
+ }
+ if(T == 1 || T == 2){
+ L1 = lsort(L1,[],1);
+ L2 = lsort(L2,[],1);
+ L3 = [];
+ if(T == 1){
+ while(L1 != []){
+ if(L2 == [] || car(L1) < car(L2)){
+ L3 = cons(car(L1), L3);
+ L1 = cdr(L1);
+ continue;
+ }
+ if(car(L1) > car(L2)){
+ L2 = cdr(L2);
+ continue;
+ }
+ L1 = cdr(L1); L2 = cdr(L2);
+ }
+ return reverse(L3);
+ }
+ if(T==2){
+ while(L1 != [] && L2 != []){
+ if(car(L1) != car(L2)){
+ if(car(L1) <= car(L2))
+ L1 = cdr(L1);
+ else L2 = cdr(L2);
+ continue;
+ }
+ while(car(L1) == car(L2))
+ L1 = cdr(L1);
+ L3 = cons(car(L2), L3);
+ }
+ return reverse(L3);
+ }
+ }
+ if(T==3){
+ L1 = qsort(L1); L2 = qsort(L2);
+ L3 = L4 = [];
+ while(L1 != [] && L2 != []){
+ if(car(L1) == car(L2)){
+ L1 = cdr(L1); L2 = cdr(L2);
+ }else if(car(L1) < car(L2)){
+ L3 = cons(car(L1),L3);
+ L1 = cdr(L1);
+ }else{
+ L4 = cons(car(L2), L4);
+ L2 = cdr(L2);
+ }
+ }
+ L4 = append(reverse(L4),L2);
+ L3 = append(reverse(L3),L1);
+ return [L3,L4];
+ }
+ L1 = append(L1,L2);
+ return lsort(L1,[],1);
+}
+
+def mqsub(X,Y)
+{
+ for(L=LQS;L!=[];L=cdr(L)){
+ F=(T=car(L))[0];M=(T=cdr(T))[0];
+ X0=X;Y0=Y;
+ for(T=cdr(T);T!=[];T=cdr(T)){
+ X0=X0[car(T)];Y0=Y0[car(T)];
+ }
+ if(type(M)==1){
+ if(M==3){
+ X0=type(X0);Y0=type(Y0);
+ }else if(M==4&&type(X0)<2&&type(Y0)<2){
+ X0=abs(X0);Y0=abs(Y0);
+ }else if(M==5){
+ X0=str_len(rtostr(X0));Y0=str_len(rtostr(Y0));
+ }else if(type(X0)==type(Y0)&&type(X0)>3&&type(X0)<7){
+ if(M==1){
+ X0=length(X0);Y0=length(Y0);
+ }else if(M==2){
+ LX=length(X0);LY=length(Y0);
+ L0=(LX<LY)?LX:LY;
+ for(I=0;;I++){
+ if(I==L0){
+ X0=LX;Y0=LY;break;
+ }
+ if(X0[I]==Y0[I]) continue;
+ X0=X0[I];Y0=Y0[I];break;
+ }
+ }
+ }
+ }else if(type(M)==2){
+ X0=(*M)(X0,Y0);Y0=0;
+ }else if(type(M)==4&&length(M)==1){
+ X0=(*car(M))(X0);Y0=(*car(M))(Y0);
+ }
+ if(X0==Y0) continue;
+ return (X0<Y0)?-F:F;
+ }
+ return 0;
+}
+
+def msort(L,S)
+{
+ if(type(S)!=4) return qsort(L);
+ if(type(S[0])!=4) S=[S];
+ LQS=S;
+ return qsort(L,os_md.mqsub);
+}
+
+def lmax(L)
+{
+ if(type(L)==4){
+ V=car(L);
+ while((L=cdr(L))!=[])
+ if(V < car(L)) V=car(L);
+ return V;
+ }else if(type(L)==5||type(L)==6)
+ return lmax(m2l(L));
+ return [];
+}
+
+def lmin(L)
+{
+ if(type(L)==4){
+ V=car(L);
+ while((L=cdr(L))!=[])
+ if(V > car(L)) V=car(L);
+ return V;
+ }else if(type(L)==5||type(L)==6)
+ return lmin(m2l(L));
+ return [];
+}
+
+def lgcd(L)
+{
+ if(type(L)==4){
+ F=getopt(poly);
+ V=car(L);
+ while((L=cdr(L))!=[]&&V!=1){
+ if(V!=0)
+ V=(F==1)?gcd(V,car(L)):igcd(V,car(L));
+ }
+ return V;
+ }else if(type(L)==5||type(L)==6)
+ return lgcd(m2l(L)|option_list=getopt());
+ return [];
+}
+
+def llcm(L)
+{
+ if(type(L)==4){
+ F=getopt(poly);
+ V=car(L);
+ while((L=cdr(L))!=[]){
+ if(V!=0){
+ if((V0=car(L))!=0)
+ V=(F==1)?red(V*V0/gcd(V,V0)):ilcm(V,V0);
+ }
+ else V=car(L);
+ }
+ if(F!=1&&V<0) V=-V;
+ return V;
+ }
+ else if(type(L)==5||type(L)==6)
+ return llcm(m2l(L)|option_list=getopt());
+ return [];
+}
+
+def ldev(L,S)
+{
+ M=abs(lmax(L));N=abs(lmin(L));
+ if(M<N) M=N;
+ for(C=0,LT=L;;C++){
+ LT=ladd(LT,S,1);
+ MT=abs(lmax(LT));NT=abs(lmin(LT));
+ if(MT<NT) MT=NT;
+ if(MT>=M) break;
+ M=MT;
+ }
+ if(!C){
+ for(C=0,LT=L;;C--){
+ LT=ladd(LT,S,-1);
+ MT=abs(lmax(LT));NT=abs(lmin(LT));
+ if(MT<NT) MT=NT;
+ if(MT>=M) break;
+ M=MT;
+ }
+ }
+ return [C,ladd(L,S,C)];
+}
+
+def lchange(L,P,V)
+{
+ if(getopt(flat)==1&&type(P)==4){
+ for(L=ltov(L);P!=[];P=cdr(P),V=cdr(V))
+ L[car(P)]=car(V);
+ return vtol(L);
+ }
+ if(type(P)==4){
+ IP=car(P); P=cdr(P);
+ }else{
+ IP=P; P=[];
+ }
+ for(I=0, LL=[], LT=L; LT!=[]; I++,LT=cdr(LT)){
+ if(I==IP){
+ LL=cons((P==[])?V:lchange(car(LT),P,V),LL);
+ }else
+ LL=cons(car(LT),LL);
+ }
+ return reverse(LL);
+}
+
+def lsol(VV,L)
+{
+ if(type(VV)<4 && type(L)==2)
+ return red(L-VV/mycoef(VV,1,L));
+ S = length(VV);
+ T = length(L);
+ V = llbase(VV,L);
+ for(J = K = 0; J < T; J++){
+ X = var(L[J]); N = deg(L[J],X);
+ for(I = K; I < S; I++){
+ if((C=mycoef(V[I], N, X)) != 0){
+ V[I] = [L[J],red(X^N-V[I]/C)];
+ K++;
+ break;
+ }
+ }
+ }
+ return V;
+}
+
+def lnsol(VV,L)
+{
+ LL=lsort(vars(VV),L,1);
+ VV=ptol(VV,LL|opt=0);
+ return lsol(VV,L);
+}
+
+
+def ladd(X,Y,M)
+{
+ if(type(X)==4) X=ltov(X);
+ if(type(Y)==4) Y=ltov(Y);
+ return vtol(X+M*Y);
+}
+
+def mrot(X)
+{
+ if(getopt(deg)==1) X=@pi*X/180;
+ X=deval(X);
+ return mat([dcos(X),dsin(X)],[-dsin(X),dcos(X)]);
+}
+
+def m2v(M)
+{
+ S = size(M);
+ V = newvect(S[0]*S[1]);
+ for(I = C = 0; I < S[0]; I++){
+ MI = M[I];
+ for(J = 0; J < S[1]; J++)
+ V[C++] = MI[J];
+ }
+ return V;
+}
+
+def lv2m(L)
+{
+ if(type(L)==5) L=vtol(L);
+ II=length(L);
+ for(J=1,T=L; T!=[]; T=cdr(T))
+ if(length(car(T))>JJ) JJ=length(car(T));
+ M = newmat(II,JJ);
+ N = getopt(null);
+ if(type(N)<0) N=0;
+ for(I=0; I<II; I++){
+ V=car(L); L=cdr(L);
+ for(J=length(V);--J>=0;)
+ M[I][J] = V[J];
+ if(N!=0){
+ for(J=length(V); J<JJ; J++)
+ M[I][J]=N;
+ }
+ }
+ return M;
+}
+
+def m2lv(M)
+{
+ I=size(M)[0];
+ for(N=[],I=size(M)[0];I-->0;)
+ N=cons(M[I],N);
+ return N;
+}
+
+def s2m(S)
+{
+ if(type(S)==6) return S;
+ if(type(S)==7){
+ if(str_chr(S,0,"[")!=0) S=s2sp(S);
+ else if(str_chr(S,0,",")>=0) return eval_str(S);
+ else{
+ for(L=LL=[],I=0; ; ){
+ II=str_chr(S,I+2,"]");
+ if(II<0) return 0;
+ J=str_chr(S,I+2," ");
+ while(str_chr(S,J+1," ")==J+1) J++;
+ if(J>II-2 || J<0) J=II;
+ V=eval_str(sub_str(S,I+1,J-1));
+ L=cons(V,L);
+ I=J;
+ if(J==II){
+ LL=cons(ltov(reverse(L)),LL);
+ L=[];
+ if((I=str_chr(S,II+1,"["))<0)
+ return lv2m(reverse(LL));
+ }
+ }
+ }
+ }
+ if(type(S)==5) S=vtol(S);
+ if(type(S[0])==5) return lv2m(S);
+ I=length(S);
+ for(J=1,T=S; T!=[]; T=cdr(T))
+ if(length(car(T))>J) J=length(car(T));
+ return newmat(I,J,S);
+}
+
+def c2m(L,V)
+{
+ if(type(Pow=getopt(pow))!=1){
+ if(isvar(V)==1){
+ for(Pow=0,LT=L;LT!=[];LT=cdr(LT)){
+ if(mydeg(car(LT),V)>JJ) Pow=mydeg(car(LT),V);
+ }
+ JJ=Pow+1;
+ }else{
+ Pow=-1;
+ JJ=length(V);
+ }
+ }else JJ=Pow+1;
+ M=newmat(length(L),JJ);
+ for(I=0;L!=[];L=cdr(L),I++){
+ for(J=0;J<JJ;J++){
+ LT=car(L);
+ M[I][J]=(Pow>=0)?mycoef(LT,J,V):mycoef(LT,1,V[J]);
+ }
+ }
+ return M;
+}
+
+#if 0
+def m2diag(M,N)
+{
+ S = size(M);
+ MM = mtoupper(M,N);
+ for(I = S[0]-1; I >= 0; I--){
+ for(J = 0; I < S[1]-N; I++){
+ if(MM[I][J] != 0){
+ P = MM[I][J];
+ for(K = 0; K < I; K++){
+ Q = -rmul(MM[K][J],1/P);
+ MM[K][J] = 0;
+ if(Q != 0){
+ for(L = J+1; L < S[1]; L++){
+ if(MM[I][L] != 0)
+ MM[K][L] = radd(MM[K][L], rmul(MM[I][L],Q));
+ }
+ }
+ }
+ }
+ }
+ }
+ return MM;
+}
+#endif
+
+def myinv(M)
+{
+ S = size(M);
+ if((T=S[0]) != S[1])
+ return 0;
+ MM = mtoupper(M,-T|opt=2);
+ if(MM[T-1][T-1] != 1) return 0;
+ return mperm(MM,0,[T,[T]]);
+}
+
+def madj(G,M)
+{
+ H=myinv(G);
+ if(type(M)==6)
+ return rmul(rmul(G,M),H);
+ if(type(M)==4||type(M)==5){
+ L=length(M);
+ N=newvect(L);
+ for(I=0;I<L;I++){
+ N[I]=rmul(rmul(G,M[I]),H);
+ }
+ if(type(N)==4) N=vtol(N);
+ return N;
+ }
+ return -1;
+}
+
+def mpower(M,N)
+{
+ if(type(M)<=3) return (red(M))^N;
+ S = size(M);
+ if(S[0] != S[1])
+ return 0;
+ if(N == 0) return mgen(S[0],0,[1],0);
+ if(N < 0)
+ return(mpower(myinv(M), -N));
+ R = dupmat(M);
+ V=1;
+ for(V=1;;){
+ if(iand(N,1)){
+ V=map(red,R*V);
+ N--;
+ }
+ if((N/=2)==0) break;
+ R=map(red,R*R);
+ }
+ return V;
+}
+
+def texlen(S)
+{
+ if(type(S)!=7) return 0;
+ LF=I=J=0;
+ LM=str_len(S);
+ while((I=str_str(S,"\\frac{"|top=J))>=0){
+ if(I>J) LF+=texlen(str_cut(S,J,I-1));
+ I+=6;
+ for(F=L=0,J=I;F<2 && J<LM-1;F++){
+ for(C=1;C>0 && J<LM;){
+ if((K0=str_char(S,J,"}"))<0) K0=LM;
+ if((K1=str_char(S,J,"{"))<0) K1=LM;
+ if(K0<0 && K1<0){
+ J = str_len(S)-1;
+ break;
+ }
+ if(K0<K1){
+ J=K0+1; C--;
+ }else{
+ J=K1+1; C++;
+ }
+ }
+ T=str_cut(S,I,J-1);
+ if(F==0){
+ I=J=K1+1;C=1;
+ }else J=K0+1;
+ if(type(T)==7 && (LL=texlen(T))>L) L=LL;
+ }
+ LF+=L;
+ }
+ if(J>0) S=str_cut(S,J,str_len(S)-1);
+ if(S==0) return LF;
+ S=ltov(strtoascii(S));
+ L=LL=length(S);
+ for(I=F=0; I<L; I++){
+ if(S[I]==92) F=1;
+ else if(F==1){
+ if((S[I]>96 && S[I]<123)||(S[I]>64 && S[I]<91)) LL--;
+ else F=0;
+ }
+ if(S[I]<=32||S[I]==123||S[I]==125||S[I]==94||S[I]==38) LL--; /* {}^& */
+ else if(S[I]==95){
+ LL--;
+ if(I+2<L && S[I+2]==94) LL--; /* x_2^3 */
+ else if(I+6<L && S[I+1]==123 && S[I+4]==125){ /* x_{11}^2 */
+ if(S[I+5]==94 || (S[I+5]==125 && S[I+6]==94)) LL-- ; /* x_{11}}^2 */
+ }
+ }
+ }
+ return LL+LF;
+}
+
+def isdif(P)
+{
+ if(type(P)<1 || type(P)>3) return 0;
+ for(Var=[],R=vars(P);R!=[];R=cdr(R)){
+ V0=rtostr(car(R));
+ if(V0>"d" && V0<"e"){
+ V=sub_str(V0,1,str_len(V0)-1);
+ if(V>="a" && V<"{") Var=cons([strtov(V),strtov(V0)],Var);
+ }
+ }
+ if(Var==[]) return 0;
+ for(V=Var; V!=[]; V=cdr(V))
+ if(ptype(P,car(V)[1])==3) return 0;
+ return Var;
+}
+
+def texsp(P)
+{
+ Q=strtoascii(P);
+ if((J=str_char(Q,0,92))<0 || (C=Q[L=str_len(P)-1])==32||C==41||C==125)
+ return P;
+ for(;;){
+ if((I=str_char(Q,J+1,92))<0) break;
+ J=I;
+ };
+ for(I=J+1;I<L&&isalpha(Q[I]);I++);
+ return(I==L)?P+" ":P;
+}
+
+def fctrtos(P)
+{
+ /* extern TeXLim; */
+
+ if(!chkfun("write_to_tb", "names.rr"))
+ return 0;
+
+ TeX = getopt(TeX);
+ if(TeX != 1 && TeX != 2 && TeX != 3)
+ TeX = 0;
+ if((Dvi=getopt(dviout)==1) && TeX<2) TeX=3;
+ if(TeX>0){
+ Lim=getopt(lim);
+ if(Lim!=0 && TeX>1 && (type(Lim)!=1||Lim<30)) Lim=TeXLim;
+ else if(type(Lim)!=1) Lim=0;
+ CR=(TeX==2)?"\\\\\n":"\\\\\n&";
+ if(TeX==1 || Lim==0) CR="";
+ else if((Pages=getopt(pages))==1) CR="\\allowdisplaybreaks"+CR;
+ if(!chkfun("print_tex_form", "names.rr"))
+ return 0;
+ Small=getopt(small);
+ }
+ Dif=getopt(dif);
+ Var=getopt(var);
+ if(Lim>0 && type(Var)<2 && TeX!=1) Var=[strtov("0"),""];
+ Dif=0;
+ if(Var=="dif"){
+ Dif=DV=1;
+ }else if (Var=="dif0") Dif=1;
+ else if(Var=="dif1") Dif=2;
+ else if(Var=="dif2") Dif=3;
+ if(Dif>0){
+ for(Var=[],R=vars(P);R!=[];R=cdr(R)){
+ V=rtostr(car(R));
+ if(V>"d" && V<"e"){
+ V=sub_str(V,1,str_len(V)-1);
+ if(V>="a" && V<"{"){
+ if(TeX>0){
+ V=my_tex_form(strtov(V));
+ if(Dif>=1){
+ if(Dif==1){
+ if(str_len(V)==1) V="\\partial_"+V;
+ else V="\\partial_{"+V+"}";
+ }
+ Var=cons([car(R),V],Var);
+ }
+ else Var=cons([car(R)],Var);
+ }else Var=cons([car(R)],Var);
+ }
+ }
+ }
+ if(TeX>0){
+ if(length(Var)==1){
+ if(DV==1 && str_len(Var[0][1])==10) Var=[[Var[0][0],"\\partial"]];
+ }else if(DV==1){
+ for(V=Var;V!=[];V=cdr(V)){
+ VV=rtostr(car(V)[0]);
+ if(VV<"dx0" || VV>= "dx:" || str_len(VV)>4) break;
+ }
+ if(V==[]){
+ for(VT=[],V=Var;V!=[];V=cdr(V)){
+ VV=str_cut(rtostr(car(V)[0]),2,3);
+ if(str_len(VV)==1) VT=cons([car(V)[0],"\\partial_"+VV],VT);
+ else VT=cons([car(V)[0],"\\partial_{"+VV+"}"],VT);
+ }
+ Var=reverse(VT);
+ }
+ }else
+ if(Dif==2 && length(Var)>1) Dif=3;
+ }
+ if(Dif>0) Dif--;
+ }
+ if(type(Var)>1 && Var!=[]){ /* as a polynomial of Var */
+ Add=getopt(add);
+ if(type(Add)>0){
+ if(type(Add)!=7){
+ Add=my_tex_form(Add);
+ if(str_char(Add,0,"-")>=0 || str_char(Add,0,"+")>=0) Add="("+Add+")";
+ }
+ if(str_char(Add,0,"(")!=0) Add = " "+Add;
+ }else Add=0;
+ if(type(Var)!=4) Var=[Var];
+ if(length(Var)==2 && type(Var[1]) == 7)
+ Var = [Var];
+ for(VV=VD=[]; Var!=[];Var=cdr(Var)){
+ VT=(type(car(Var))==4)?car(Var):[car(Var)];
+ VT0=var(car(VT));
+ VV=cons(VT0,VV);
+ if(length(VT)==1){
+ VD=cons((TeX>=1)?my_tex_form(VT0):rtostr(VT0),VD);
+ }else VD=cons(VT[1],VD);
+ }
+ VV=reverse(VV);VD=reverse(VD);
+ Rev=(getopt(rev)==1)?1:0;
+ Dic=(getopt(dic)==1)?1:0;
+ TT=terms(P,VV|rev=Rev,dic=Dic);
+ if(TeX==0){
+ Pre="("; Post=")";
+ }else{
+ Pre="{"; Post="}";
+ }
+ Out = string_to_tb("");
+ for(L=C=0,Tm=TT;Tm!=[];C++,Tm=cdr(Tm)){
+ for(I=0,PC=P,T=cdr(car(Tm)),PW="";T!=[];T=cdr(T),I++){
+ PC=mycoef(PC,D=car(T),VV[I]);
+ if(PC==0) continue;
+ PT="";
+ if(D!=0 && VD[I]!=""){
+ if(TeX==0 && PW!="") PW+="*";
+ if(D>1){
+ if(D>9) PT="^"+Pre+rtostr(D)+Post;
+ else PT="^"+rtostr(D);
+ }
+ if(Dif>0) PW+=(Dif==1)?"d":"\\partial ";
+ PW+=VD[I]+PT;
+ }
+ }
+ D=car(Tm)[0];
+ if(Dif>0 && D>0){
+ Op=(Dif==1)?"\\frac{d":"\\frac{\\partial";
+ if(D>1) Op+="^"+((D>9)?(Pre+rtostr(D)+Post):rtostr(D));
+ PW=Op+Add+"}{"+PW+"}";
+ }else if(Add!=0) PW=PW+Add;
+ if(TeX>=1){
+ if(type(PC)==1 && ntype(PC)==0 && PC<0)
+ OC="-"+my_tex_form(-PC);
+ else OC=fctrtos(PC|TeX=1,br=1);
+ }else OC=fctrtos(PC|br=1);
+ if(PW!=""){
+ if(OC == "1") OC = "";
+ else if(OC == "-1") OC = "-";
+ }
+ if(TeX==0 && D!=0 && OC!="" && OC!="-") PW= "*"+PW;
+ if((TOC=type(OC)) == 4){ /* rational coef. */
+ if(Lim>0 && (texlen(OC[0])>Lim || texlen(OC[0])>Lim)){
+ OC = (Small==1)?"("+OC[0]+")/("+OC[1]+")"
+ :"\\Bigl("+OC[0]+"\\Bigr)\\Bigm/\\Bigl("+OC[1]+"\\Bigr)";
+ TOC = 7;
+ }else{
+ if(str_char(OC[0],0,"-")==0){
+ OC = fctrtos(-PC|TeX=1,br=1);
+ OC = "-\\frac{"+OC[0]+"}{"+OC[1]+"}";
+ }
+ else
+ OC = "\\frac{"+OC[0]+"}{"+OC[1]+"}";
+ }
+ }
+ if(Lim>0){
+ LL=texlen(OC)+texlen(PW);
+ if(LL+L>=Lim){
+ if(L>0) str_tb(CR,Out);
+ if(LL>Lim){
+ if(TOC==7) OC=texlim(OC,Lim|cut=CR);
+ PW+=CR; L=0;
+ }else L=LL;
+ }else L+=LL;
+ }else if(length(Tm)!=1) PW += CR; /* not final term */
+ if(TeX) OC=texsp(OC);
+ if(str_chr(OC,0,"-") == 0 || C==0) str_tb([OC,PW], Out);
+ else{
+ str_tb(["+",OC,PW],Out);
+ if(LL<=Lim) L++;
+ }
+ }
+ S=str_tb(0,Out);
+ if(S=="") S="0";
+ }else{ /* Var is not specified */
+ if((TP=type(P)) == 3){ /* rational function */
+ P = red(P); Nm=nm(P); Dn=dn(P);
+ Q=dn(ptozp(Nm|factor=1)[1]);
+ if(Q>1){
+ Nm*=Q;Dn*=Q;
+ }
+ if(TeX>0){
+ return (TeX==2)?
+ "\\frac\{"+fctrtos(Nm|TeX=1)+"\}\{"+fctrtos(Dn|TeX=1)+"\}"
+ :[fctrtos(Nm|TeX=1),fctrtos(Dn|TeX=1)];
+ }
+ else{
+ S=fctrtos(Nm);
+ if(nmono(Nm)>1) S="("+S+")";
+ return S+"/("+fctrtos(Dn)+")";
+ }
+ }
+ if(imag(P)==0) P = fctr(P); /* usual polynomial */
+ else P=[[P,1]];
+ S = str_tb(0,0);
+ for(J = N = 0; J < length(P); J++){
+ if(type(P[J][0]) <= 1){
+ if(P[J][0] == -1){
+ write_to_tb("-",S);
+ if(length(P) == 1)
+ str_tb("1", S);
+ }else if(P[J][0] != 1){
+ str_tb((TeX>=1)?my_tex_form(P[J][0]):rtostr(P[J][0]), S);
+ N++;
+ }else if(length(P) == 1)
+ str_tb("1", S);
+ else if(getopt(br)!=1 && length(P) == 2 && P[1][1] == 1){
+ str_tb((TeX>=1)?my_tex_form(P[1][0]):rtostr(P[1][0]), S);
+ J++;
+ }
+ continue;
+ }
+ if(N > 0 && TeX != 1 && TeX != 2 && TeX != 3)
+ write_to_tb("*", S);
+ SS=(TeX>=1)?my_tex_form(P[J][0]):rtostr(P[J][0]);
+ N++;
+ if(P[J][1] != 1){ /* (log(x))^2 */
+ if(nmono(P[J][0])>1||
+ (!isvar(P[J][0])||vtype(P[J][0]))&&str_len(SS)>1) SS="("+SS+")";
+ write_to_tb(SS,S);
+ str_tb(["^", (TeX>1)?rtotex(P[J][1]):monotos(P[J][1])],S);
+ }else{
+ if(nmono(P[J][0])>1) SS="("+SS+")";
+ write_to_tb(SS,S);
+ }
+ }
+ S = str_tb(0,S);
+ if((Lim>0 || TP!=2) && CR!="") S=texlim(S,Lim|cut=CR);
+ }
+ if(TeX>0){
+ if(Small==1) S=str_subst(S,"\\frac{","\\tfrac{");
+ if(Dvi==1){
+ dviout(strip(S,"(",")")|eq=(Pages==1)?6:0); S=1;
+ }
+ }
+ return S;
+}
+
+def strip(S,S0,S1)
+{
+ SS=strtoascii(S);
+ if(length(SS)>1){
+ if(SS[0]==40&&SS[length(SS)-1]==41&&str_pair(SS,1,S0,S1)==length(SS)-1)
+ S=str_cut(SS,1,length(SS)-2);
+ }
+ return S;
+}
+
+def texlim(S,Lim)
+{
+ /* extern TeXLim; */
+ if(S==1 && Lim>10){
+ TeXLim=Lim;
+ mycat(["Set TeXLim =",Lim]);
+ return 1;
+ }
+ if(type(Out=getopt(cut))!=7) Out="\\\\\n&";
+ if(type(Del=getopt(del))!=7) Del=Out;
+ if(Lim<30) Lim=TeXLim;
+ S=ltov(strtoascii(S));
+ for(L=[0],I=F=0;F==0; ){
+ II=str_str(S,Del|top=I)+2;
+ if(II<2){
+ F++;II=/* str_len(S) */ length(S)-1;
+ }
+ for(J=JJ=I+1;;JJ=K+1){
+ K=str_char(S,JJ,43); /* + */
+ if((K1=str_char(S,JJ,45))>2 && K1<K){ /* - */
+ if(S[K1-1]!=123 && S[K1-1]!=40) K=K1; /* {, ( */
+ }
+ if((K1=str_char(S,JJ,40))>0 && K1-JJ>6 && K1<K && S[K1-1]!=43 && S[K1-1]!=45){ /* ( */
+ T=str_char(S,K1-6,"\\"); /* \Big*(, \big*( */
+ if((T==K1-6 || T==K1-5)
+ && (str_str(S,"big"|top=T+1,end=T+1)>0 || str_str(S,"Big"|top=T+1,end=T+1)>0))
+ K=T;
+ else if(K1>0 && K1<K) K=K1;
+ }
+ if(K<0 || K>II) break;
+ if(K-J>Lim && texlen(str_cut(S,J,K-1))>=Lim){
+ J=K+1; L=cons(JJ-1,L); SL=0;
+ }
+ }
+ I=II;
+ }
+ SS=str_tb(0,0);
+ L=cons(length(S),L);
+ L=reverse(L);
+ for(I=0; L!=[]; I=J,L=cdr(L)){
+ str_tb((I==0)?"":Out,SS);
+ J=car(L);
+ str_tb(str_cut(S,I,J-1),SS);
+ }
+ return str_tb(0,SS);
+}
+
+def fmult(FN,M,L,N)
+{
+ Opt=getopt();
+ for(I = 0; I < length(M); I++)
+ M = call(FN, cons(M,cons(L[I],N))|option_list=Opt);
+ return M;
+}
+
+def radd(P,Q)
+{
+ if(type(P) <= 3 || type(Q) <= 3){
+ if(type(P) >= 5)
+ return radd(Q,P);
+ if(type(Q) >= 5){
+ R = dupmat(Q);
+ if(P == 0)
+ return R;
+ if(type(Q) == 6){
+ S = size(Q);
+ if(S[0] != S[1])
+ return 0;
+ for(I = 0; I < S[0]; I++)
+ R[I][I] = radd(R[I][I], P);
+ }else{
+ for(I = length(R)-1; I >= 0; I--)
+ R[I] = radd(R[I],P);
+ }
+ return R;
+ }
+ /* P=red(P);Q=red(Q); */
+ if((P1=dn(P)) == (Q1=dn(Q))){
+ if(P1==1) return P+Q;
+ return red((nm(P)+nm(Q))/P1);
+ }
+ R=gcd(P1,Q1);S=tdiv(P1,R);
+ return red((nm(P)*tdiv(Q1,R)+nm(Q)*S)/(S*Q1));
+ }
+ if(type(P) == 5){
+ S = length(P);
+ R = newvect(S);
+ for(I = 0; I < S; I++)
+ R[I] = radd(P[I],Q[I]);
+ return R;
+ }
+ if(type(P) == 6){
+ S = size(P);
+ R = newmat(S[0],S[1]);
+ for(I = 0; I < S[0]; I++){
+ for(J = 0; J < S[1]; J++)
+ R[I][J] = radd(P[I][J],Q[I][J]);
+ }
+ return R;
+ }
+ erno(0);
+}
+
+def getel(M,I)
+{
+ if(type(M) >= 4 && type(M) <= 6 && type(I) <= 1)
+ return M[I];
+ if(type(M) == 6 && type(I) == 5)
+ return M[I][J];
+ return M;
+}
+
+def ptol(P,X)
+{
+ F=(getopt(opt)==0)?0:1;
+ if(type(P) <= 3)
+ P = [P];
+ if(type(X) == 4){
+ for( ; X != []; X = cdr(X))
+ P=ptol(P,car(X)|opt=F);
+ return P;
+ }
+ P = reverse(P);
+ for(R=[]; P != []; P = cdr(P)){
+ Q = car(P);
+ for(I = mydeg(Q,X); I >= 0; I--){
+ S=mycoef(Q,I,X);
+ if(F==1 || S!=0) R = cons(S,R);
+ }
+ }
+ return R;
+}
+
+def rmul(P,Q)
+{
+ if(type(P) <= 3 && type(Q) <= 3){
+ P=red(P);Q=red(Q);
+ P1=dn(P);P2=nm(P);Q1=dn(Q);Q2=nm(Q);
+ if(P1==1 && Q1==1)
+ return P*Q;
+ if((R=gcd(P1,Q2)) != 1){
+ P1=tdiv(P1,R);Q2=tdiv(Q2,R);
+ }
+ if((R=gcd(Q1,P2)) != 1){
+ Q1=tdiv(Q1,R);P2=tdiv(P2,R);
+ }
+ return P2*Q2/(P1*Q1);
+ }
+#ifdef USEMODULE
+ return mmulbys(os_md.rmul,P,Q,[]);
+#else
+ return mmulbys(rmul,P,Q,[]);
+#endif
+}
+
+def mtransbys(FN,F,LL)
+{
+ Opt=getopt();
+ if(type(F) == 4){
+ F = ltov(F);
+ S = length(F);
+ R = newvect(S);
+ for(I = 0; I < S; I++)
+ R[I] = mtransbys(FN,F[I],LL|option_list=Opt);
+ return vtol(R);
+ }
+ if(type(F) == 5){
+ S = length(F);
+ R = newvect(S);
+ for(I = 0; I < S; I++)
+ R[I] = mtransbys(FN,F[I],LL|option_list=Opt);
+ return R;
+ }
+ if(type(F) == 6){
+ S = size(F);
+ R = newmat(S[0],S[1]);
+ for(I = 0; I < S[0]; I++){
+ for(J = 0; J < S[1]; J++)
+ R[I][J] = mtransbys(FN,F[I][J],LL|option_list=Opt);
+ }
+ return R;
+ }
+ if(type(F) == 7) return F;
+ return call(FN, cons(F,LL)|option_list=Opt);
+}
+
+def drawopt(S,T)
+{
+ if(type(S)!=7) return -1;
+ if(T==0||T==1){
+ for(I=0,R=LCOPT;I<7;I++,R=cdr(R))
+ if(str_str(S,car(R))>=0) return(T==0)?COLOPT[I]:car(R);
+ return -1;
+ }
+ if(T==2){
+ V0=V1=0;
+ for(I=0,R=LPOPT;R!=[];I++,R=cdr(R)){
+ if(str_str(S,car(R))>=0){
+ if(I==0) V1++;
+ else if(I==1) V1--;
+ else if(I==2) V0--;
+ else V0++;
+ }
+ }
+ if(V0==0&&V1==0) return -1;
+ return [V0,V1];
+ }
+ if(T==3){
+ V=0;
+ for(I=1,R=LFOPT;R!=[];R=cdr(R),I*=2){
+ if(str_str(S,car(R))>=0) V+=I;
+ }
+ return (V==0)?-1:V;
+ }
+ return -1;
+}
+
+def execdraw(L,P)
+{
+ if((Proc=getopt(proc))!=1) Proc=0;
+ if(type(P)<2) P=[P];
+ if(L!=[]&&type(L[0])!=4) L=[L];
+ /* special command */
+ if(P[0]<0){
+ if(length(P)==1&&(P[0]==-1||P[0]==-2||P[0]==-3)){ /* Bounding Box */
+ W=WS=N=LS=0;
+ for(LL=L;LL!=[];LL=cdr(LL)){
+ T=car(LL);
+ if(P[0]!=-3 && T[0]==0){
+ if(length(T)>3) S=" by "+rtostr(T[3])+" cm";
+ else S="";
+ if(P[0]==-1){
+ mycat(["Windows : ",T[1][0],"< x <",T[1][1],", ",
+ T[2][0],"< y <",T[2][1],S]);
+ if(length(T)>4 && type(T[4])==4) mycat(["ext :",T[4]]);
+ if(length(T)>5) mycat(["shift :",T[5]]);
+ }
+ return cdr(T);
+ }
+ if(type(T[0])==1){
+ if(T[0]==1){
+ for(TT=cdr(cdr(T));TT!=[];TT=cdr(TT)){
+ D=car(TT);
+ if(type(D[0][0])==4){
+ for(DT=D;DT!=[];DT=cdr(DT)){
+ if(N++==0) W=ptbbox(car(DT));
+ else W=ptbbox(car(DT)|box=W);
+ }
+ }else{
+ if(N++==0) W=ptbbox(D);
+ else W=ptbbox(D|box=W);
+ }
+ }
+ }else if(T[0]==2){
+ V=T[2];
+ if(type(V[0])>1||type(V[1])>1) continue; /* not supported */
+ if((Sc=delopt(T[1],"scale"|inv=1))!=[]){
+ Sc=car(Sc)[1];
+ if(type(Sc)==1) V=[Sc*V[0],Sc*V[1]];
+ else V=[Sc[0]*V[0],Sc[1]*V[1]];
+ }
+ if(LS==0) WS=ptbbox([V]);
+ else WS=ptbbox([V]|box=WS);
+ if(length(T)>4) S=T[4];
+ else if(type(S=T[3])==4){
+ S=S[0];
+ if(type(S)==4) S=S[length(S)-1];
+ S=rtostr(S);
+ }
+ if(str_len(S)>LS) LS=str_len(S);
+ }else if(T[0]==3||T[0]==4){
+ if(N++==0) W=ptbbox(cdr(cdr(T)));
+ else W=ptbbox(cdr(cdr(T))|box=W);
+ }
+ }
+ }
+ if(W!=0&&WS!=0) W=ptbbox([W,WS]|box=1);
+ return (P[0]==-3)?[W,LS,WS]:W;
+ }else if(length(P)>1&&P[0]==-1){ /* set Bounding Box */
+ P=cons(0,cdr(P));
+ Ex=Sft=[0,0];
+ if(type(X=getopt(ext))==4) Ex=X;
+ if(type(X=getopt(shift))==4) Sft=X;
+ if(Ex!=Sft||Ex!=[0,0]){
+ if(Sft==[0,0]) Sft=[Ex];
+ else Sft=[Ex,Sft];
+ if(length(P)==3) Sft=cons(1,Sft);
+ if(length(P)==3||length(P)==4) P=append(P,Sft);
+ }
+ return cons(P,delopt(L,0));
+ }
+ if(P[0]==-4){
+ for(N=0,LT=L;LT!=[];LT=cdr(LT)){ /* count coord. */
+ T=car(LT);
+ if(T[0]==1){
+ for(T=cdr(cdr(T));T!=[];T=cdr(T)){
+ if(type((S=car(T))[0][0])==4) N+=length(S);
+ else for(;S!=[];S=cdr(S)) if(type(car(S))==4) N++;
+ }
+ }else if(T[0]==2) N++;
+ else if(T[0]==3||T[0]==4) N+=2;
+ }
+ return N;
+ }
+ if(P[0]==-5){ /* functions */
+ for(N=0,R=[],LT=L;LT!=[];LT=cdr(LT)){
+ T=car(LT);
+ if(T[0]==0) N=ior(N,1);
+ else if(type(T[0])==1){
+ if(T[0]>0) N=ior(N,2^T[0]);
+ }
+ else if(Type(T[0])==2){
+ if(findin(T[0],R)<0) R=cons(T[0],R);
+ }
+ }
+ for(I=5;I>=0;I--) if(iand(N,2^I)) R=cons(I,R);
+ return R;
+ }
+ return 0;
+ }
+
+ if(length(P)>1){
+ if(type(P[1])==6||(type(P[1])<2&&P[1]>0)) M=P[1];
+ else if(type(P[1])==4&&length(P[1])==2) M=diagm(2,P[1]);
+ }
+ if(length(P)>2&&type(P[2])==4){
+ Org=[["shift",P[2]]];
+ if(M==0) M=1;
+ }else Org=[];
+ if(P[0]==0||(type(P[0])==4&&P[0][0]==0)){ /* Risa/Asir */
+ PP=car(P);PPP=0;
+ if(type(PP)!=4) PP=[PP];
+ if(length(PP)<3){
+ if(length(PP)==1 || type(PP[1])==4){
+ if(ID_PLOT<0) ID_PLOT=ox_launch_nox(0,"ox_plot");
+ Id=ID_PLOT;
+ if(length(PP)==1&&type(Canvas)==4&&length(Canvas)==2)
+ PP=cons(PP[0],[Canvas]);
+ if(length(PP)>1){
+ PPP=PP[1][0];
+ PPQ=(length(PP[1])==2)?PP[1][1]:PPP;
+ open_canvas(Id,[PPP,PPQ]);
+ }else open_canvas(Id);
+ Ind=ox_pop_cmo(Id);
+ }else{
+ Ind=PP[1];
+ if(getopt(cl)==1) clear_canvas(Id,Ind);
+ }
+ }else{
+ Id=PP[1];Ind=PP[2];
+ if(length(PP)>3 && type(PP[3])==1) PPP=PP[3];
+ if(length(PP)>4 && type(PP[4])==1) PPQ=PP[4];
+ if(getopt(cl)==1) clear_canvas(Id,Ind);
+ }
+ if(L==[]) return (PPP>0)? [0,Id,Ind,PPP,PPQ]:[0,Id,Ind];
+ Ex0=Ex0;Sft=[0,0];
+ if(length(P)>1&&P[1]==0&&length(P)<4){
+ R=execdraw(L,-3);
+ Ex0=Ex1=Ex2=10;
+ if((U=R[1])>0){ /* string */
+ if(U>20) U=16; /* adj 16,8,2,7,15 */
+ if(R[0][0][0]>R[2][0][0]-(R[0][0][1]-R[0][0][0])/256) Ex0+=8*U; /* adj 256 */
+ else Ex0+=2*U;
+ if(R[0][0][1]<R[2][0][1]+(R[0][0][1]-R[0][0][0])/256) Ex1+=7*U;
+ else Ex1+=2*U;
+ if(R[0][1][1]<R[2][1][1]+(R[0][1][1]-R[0][1][0])/256) Ex2+=15;
+ }
+ R=[R[0][0],R[0][1],0,[Ex0,Ex1],[0,-Ex2]];
+ if(length(P)>2 && P[2]==1)
+ mycat0(["Box:",[R[0],R[1]], ", ext=",R[3],", shift=",R[4]],1);
+ }else R=execdraw((length(P)>3)?P[3]:L,-2); /* Windows */
+ XW=R[0];YW=R[1];
+ if(length(R)>3){
+ if(R[3]!=0 && R[3]!=[0,0]) Ex=R[3];
+ if(length(R)>4) Sft=R[4];
+ }
+ if(type(X=getopt(ext))==4)
+ Ex=(Ex0)?[X[0]+Ex[0],X[1]+Ex[1]]:X;
+ if(type(M)<2){
+ if(length(P)>1&&type(P[1])==1) M=P[1];
+ else if((length(P)==1||P[1]==0||P[1]==1)&& PPP>0) M=PPP;
+ if(M<2) M=400;
+ if(Ex!=0 && type(Ex)==4){
+ M-=Ex[0]+Ex[1];
+ }
+ M=(M/(XW[1]-XW[0]))*diagm(2,[1,-1]);
+ }
+ if(type(X=getopt(shift))==4) Sft=(Ex0)?[Sft[0]+X[0],Sft[1]+X[1]]:X;
+ if(type(Sft)==4) Sft=[Sft[0],-Sft[1]];
+ if(Ex!=0) Sft=[Sft[0]+Ex[0],Sft[1]];
+ Org=[["shift",ptaffine(M,[-XW[0],-YW[1]]|shift=Sft)]];
+ for(CT=0;CT<2;CT++){
+ for(LT=L;LT!=[];LT=cdr(LT)){
+ T=car(LT);
+ if(!CT && T[0]!=2) continue;
+ if(CT && T[0]==2) continue;
+ if(T[0]==1){
+ for(TT=cdr(cdr(T));TT!=[];TT=cdr(TT)){
+ D=car(TT);
+ if(type(D[0][0])==4){
+ for(DT=D;DT!=[];DT=cdr(DT)){
+ V=car(DT);
+ if(M) V=ptaffine(M,V|option_list=Org);
+ draw_bezier(Id,Ind,V|option_list=T[1]);
+ }
+ }else{
+ if(M) D=ptaffine(M,D|option_list=Org);
+ draw_bezier(Id,Ind,D|option_list=T[1]);
+ }
+ }
+ }else if(T[0]==2){ /* put */
+ if(length(T)<4) continue;
+ V=T[2];
+ if(type(VLB)==4&&V[0]=="_") V=VLB;
+ else if(type(V[0])>1||type(V[1])>1) continue; /* not supported */
+ if(length(T)>3&&type(T[3])==4&&length(T[3])>1&&T[3][1]==1) VLB=V;
+ F++;MM=M;
+ if((Sc=delopt(T[1],"scale"|inv=1))!=[]){
+ if(!MM) MM=1;
+ Sc=car(Sc)[1];
+ if(type(Sc)==1) MM=MM*Sc;
+ else if(type(Sc)==6) MM=MM*diagm(2,Sc);
+ }
+ if(MM) V=ptaffine(MM,V|option_list=Org);
+ if(type(S=S0=T[3])==4) S=S0[0];
+ if(length(T)>4) S=T[4]; /* subst. string */
+ if(type(S0)==4&&type(S0[0])==4){
+ if((Col=drawopt(S0[0][0],0))<0) Col=0; /* attrib. */
+ if(type(S)!=7) S=rtostr(S0[0][1]);
+ S=str_subst(S,[["$\\bullet$","*"],["$\\times$","x"],["$",""]],0);
+ if(type(Pos=drawopt(S0[0][0],2))==4)
+ V=[V[0]+4*str_len(S)*Pos[0],V[1]-10*Pos[1]]; /* adjustable */
+ }else S=str_subst(rtostr(S),[["$\\bullet$","*"],["$\\times$","x"],["$",""]],0);
+ V=[V[0]-str_len(S)*4,V[1]-8]; /* adjustable */
+ draw_string(Id,Ind,V,S,Col);
+ }else if(T[0]==3){ /* arrow */
+ F++;
+ T1=T[2];T2=T[3];
+ if(M){
+ T1=ptaffine(M,T1|option_list=Org);
+ T2=ptaffine(M,T2|option_list=Org);
+ }
+ draw_bezier(Id,Ind,[T1,T2]|option_list=T[1]);
+ }else if(T[0]==4){ /* line */
+ F++;
+ T1=T[2];T2=T[3];
+ if(M){
+ T1=ptaffine(M,T1|option_list=Org);
+ T2=ptaffine(M,T2|option_list=Org);
+ }
+ V=delopt(T1=T[1],"opt"|inv=1);
+ if(V!=[]&&str_str(V[1],".")>=0)
+ T1=cons(["opt",cons("dotted,",V[1])],delopt(T1,"opt"));
+ draw_bezier(Id,Ind,[T1,T2]|option_list=T1);
+ }else if(T[0]==5){ /* TeX */
+ mycat(rtostr(T[2]));
+ if(F){
+ S=str_tb(0,Out);
+ Out=str_tb(0,0);
+ F=0;
+ if(S!=""){
+ if(P[0]==2) dviout(xyproc(S)|keep=1);
+ else LOut=cons(xyproc(S),LOut);
+ }
+ if(P[0]==2) dviout(T[2]|option_list=T[1]);
+ else{
+ LOut=cons(T[2],Out);
+ }
+ }
+ }else if(Proc==1&&type(T[0])==2){
+ if(length(T)<3) call(T[0],T[1]);
+ else call(T[0],T[1]|option_list=T[2]);
+ }
+ }
+ }
+ S=(PPP>0)? [0,Id,Ind,PPP,PPQ]:[0,Id,Ind];
+ if(Ex==0&&Sft!=[0,0]) Ex=[0,0];
+ return (Ex!=0&&length(P)>2&&P[2]==-1)?
+ [S,0,0,[0,R[0],R[1],0,Ex,[Sft[0]-Ex[0],-Sft[1]]]]:S;
+ }
+ if(P[0]==1||P[0]==2){ /* TeX */
+ Out=str_tb(0,0);LOut=[];F=0;
+ if(getopt(cl)==1) dviout0(0);
+ for(;L!=[];L=cdr(L)){
+ T=car(L);Opt=T[1];
+ if(type(T[0])>=2) continue;
+ if(T[0]==0){
+ XW=T[1];YW=T[2];
+ if(length(P)>1&&type(P[1])==1&&P[1]<0)
+ M=-P[1]/(XW[0]-XW[1]);
+ }else if(T[0]==1){
+ F++;
+ for(TT=cdr(cdr(T));TT!=[];TT=cdr(TT)){
+ D=car(TT);
+ if(type(D[0][0])==4){
+ for(DT=D;DT!=[];DT=cdr(DT)){
+ V=car(DT);
+ if(M) V=ptaffine(M,V|option_list=Org);
+ str_tb(xybezier(V|option_list=Opt),Out);
+ }
+ }else{
+ if(M) D=ptaffine(M,D|option_list=Org);
+ str_tb(xybezier(D|option_list=Opt),Out);
+ }
+ }
+ }else if(T[0]==2){
+ F++;V=T[2];
+ Opt=delopt(Opt,"scale"|inv=1);
+ MM=M;
+ if(Opt!=[]){
+ Opt=car(Opt)[1];
+ if(type(Opt)==1) Opt=[Opt,Opt];
+ if(Opt!=[1,1]){
+ if(!MM) MM=1;
+ MM=MM*diagm(2,[Opt[0],Opt[1]]);
+ }
+ }
+ if(MM) V=ptaffine(MM,V|option_list=Org);
+ if(length(T)>3) V=append(V,T[3]);
+ str_tb(xyput(V),Out);
+ }else if(T[0]==3){
+ F++;
+ T1=T[2];T2=T[3];
+ if(M){
+ T1=ptaffine(M,T1|option_list=Org);
+ T2=ptaffine(M,T2|option_list=Org);
+ }
+ str_tb(xyarrow(T1,T2|option_list=Opt),Out);
+ }else if(T[0]==4){
+ F++;
+ T1=T[2];T2=T[3];
+ if(M){
+ T1=ptaffine(M,T1|option_list=Org);
+ T2=ptaffine(M,T2|option_list=Org);
+ }
+ str_tb(xyline(T1,T2|option_list=Opt),Out);
+ }else if(T[0]==5){
+ if(F){
+ S=str_tb(0,Out);
+ Out=str_tb(0,0);
+ F=0;
+ if(S!=""){
+ if(P[0]==2) dviout(xyproc(S)|keep=1);
+ else LOut=cons(xyproc(S),LOut);
+ }
+ if(P[0]==2) dviout(T[2]|option_list=T[1]);
+ else LOut=cons(T[2],Out);
+ }
+ }else if(T[0]==-2)
+ str_tb(["%",T[1],"\n"],Out);
+ else if(Proc==1&&type(T[0])==2){
+ if(length(T)<3) call(T[0],T[1]);
+ else call(T[0],T[1]|option_list=T[2]);
+ }
+ }
+ S=str_tb(0,Out);
+ if(P[0]==1){
+ if(F) LOut=cons(xyproc(S),LOut);
+ Out=str_tb(0,0);
+ for(L=reverse(LOut);L!=[];L=cdr(L))
+ str_tb(car(L),Out);
+ return str_tb(0,Out);
+ }
+ if(F) dviout(xyproc(S));
+ else dviout(" ");
+ }
+}
+
+def execproc(L)
+{
+ if(type(N=getopt(var))!=1&&N!=0) N=2;
+ for(R=[];L!=[];L=cdr(L)){
+ P=car(L);
+ if(type(P[0])==2&&vtype(P[0])==3){
+ if((VS=vars(cdr(P)))!=[]){
+ for(I=0;I<N;I++){
+ V=makev(["v",I+1]);
+ if(findin(V,VS)>=0) P=mysubst(P,[V,R[I]]);
+ }
+ }
+ if(length(P)<3) R=cons(call(P[0],P[1]),R);
+ else R=cons(call(P[0],P[1]|option_list=P[2]),R);
+ }
+ }
+ return (getopt(all)==1)?R:car(R);
+}
+
+def myswap(P,L)
+{
+ X=makenewv(P);
+ for(L=reverse(L);length(L)>1;L=cdr(L))
+ P=subst(P,L[0],X,L[1],L[0],X,L[1]);
+ return P;
+}
+
+def mysubst(P,L)
+{
+ if(P==0) return 0;
+ Inv=getopt(inv);
+ if(type(L[0]) == 4){
+ while((L0 = car(L))!=[]){
+ P = mysubst(P,(Inv==1)?[L0[1],L0[0]]:L0);
+ L = cdr(L);
+ }
+ return P;
+ }
+ if(Inv==1) L=[L[1],L[0]];
+ if(type(P) > 3){
+ if(type(P)==7) return P;
+ if(type(P)>7)
+ return subst(P,L[0],L[1]);
+#ifdef USEMODULE
+ return mtransbys(os_md.mysubst,P,[L]);
+#else
+ return mtransbys(mysubst,P,[L]);
+#endif
+ }
+ P = red(P);
+ if(type(P) == 3){
+ A=mysubst(nm(P),L);B=mysubst(dn(P),L);
+ return red(nm(A)/nm(B))*red(dn(B)/dn(A));
+ }
+ L1=(type(L[1])==3)?red(L[1]):L[1];X=L[0];
+ if(ptype(L1,X)==3){
+ LN=nm(L1);LD=dn(L1);
+ Deg=mydeg(P,X);
+ if(Deg <= 0) return P;
+ V = newvect(Deg+1);
+ for(V[I=Deg]=1;I >= 1;I--)
+ V[I-1]=V[I]*LD;
+ for(R = 0, I = Deg; I >= 0; I--)
+ R = R*LN + mycoef(P,I,X)*V[I];
+ return red(R/V[0]);
+ }
+ return subst(P,X,L1);
+}
+
+def mmulbys(FN,P,F,L)
+{
+ Opt=getopt();
+ if(type(F) <= 3){
+ if(type(P) <= 3)
+ return call(FN, cons(P,cons(F,L))|option_list=Opt);
+ if(type(P) == 5){
+ S = length(P);
+ R = newvect(S);
+ for(I = 0; I < S; I++)
+ R[I] = call(FN, cons(P[I],cons(F,L))|option_list=Opt);
+ return R;
+ }else if(type(P) == 6){
+ S = size(P);
+ R = newmat(S[0],S[1]);
+ for(I = 0; I < S[0]; I++){
+ for(J = 0; J < S[1]; J++)
+ R[I][J] = call(FN, cons(P[I][J],cons(F,L))|option_list=Opt);
+ }
+ return R;
+ }
+ }
+ if(type(F) == 5){
+ S = length(F);
+ if(type(P) <= 3){
+ R = newvect(S);
+ for(I = 0; I < S; I++)
+ R[I] = call(FN, cons(P,cons(F[I],L))|option_list=Opt);
+ return R;
+ }
+ if(type(P) == 5){
+ for(J=R=0; J<S; J++)
+ R = radd(R, call(FN, cons(P[J],cons(F[J],L)))|option_list=Opt);
+ return R;
+ }
+ T = size(P);
+ R = newvect(T[0]);
+ for(I = 0; I < T[0]; I++){
+ for(J = 0; J < S; J++)
+ R[I] = radd(R[I], call(FN, cons(P[I][J],cons(F[J],L))|option_list=Opt));
+ }
+ return R;
+ }
+ if(type(F) == 6){
+ S = size(F);
+ if(type(P) <= 3){
+ R = newmat(S[0],S[1]);
+ for(I = 0; I < S[0]; I++){
+ for(J = 0; J < S[1]; J++)
+ R[I][J] = call(FN, cons(P,cons(F[I][J],L))|option_list=Opt);
+ }
+ return R;
+ }
+ if(type(P) == 5){
+ R = newvect(S[1]);
+ for(J = 0; J < S[1]; J++){
+ for(K = U = 0; K < S[0]; K++)
+ U = radd(U, call(FN, cons(P[K],cons(F[K][J],L))|option_list=Opt));
+ R[J] = U;
+ }
+ return R;
+ }
+ T = size(P);
+ R = newmat(T[0],S[1]);
+ for(I = 0; I < T[0]; I++){
+ for(J = 0; J < S[1]; J++){
+ for(K = U = 0; K < S[0]; K++)
+ U = radd(U, call(FN, cons(P[I][K],cons(F[K][J],L)|option_list=Opt)));
+ R[I][J] = U;
+ }
+ }
+ return R;
+ }
+ erno(0);
+ return 0;
+}
+
+def appldo(P,F,L)
+{
+ if(type(F) <= 3){
+ if(type(L) == 4 && type(L[0]) == 4)
+ return applpdo(P,F,L);
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ J = mydeg(P,DX);
+ for(I = R = 0; I <= J; I++){
+ if(I > 0)
+ F = mydiff(F,X);
+ R = radd(R,mycoef(P,I,DX)*F);
+ }
+ return R;
+ }
+#ifdef USEMODULE
+ return mmulbys(os_md.appldo,P,F,[L]);
+#else
+ return mmulbys(appldo,P,F,[L]);
+#endif
+}
+
+def appledo(P,F,L)
+{
+ if(type(F) <= 3){
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ J = mydeg(P,DX);
+ for(I = R = 0; I <= J; I++){
+ if(I > 0)
+ F = myediff(F,X);
+ R = radd(R,mycoef(P,I,DX)*F);
+ }
+ return R;
+ }
+#ifdef USEMODULE
+ mmulbys(os_md.appledo,P,F,[L]);
+#else
+ mmulbys(appledo,P,F,[L]);
+#endif
+}
+
+def muldo(P,Q,L)
+{
+ if(type(Lim=getopt(lim))!=1) Lim=100;
+ if(type(Q) <= 3){
+ if(type(L) == 4 && type(L[0]) == 4)
+ return mulpdo(P,Q,L|lim=Lim); /* several variables */
+ R = rmul(P,Q);
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ if(X != 0){
+ for(I = F = 1; ; I++){
+ P = mydiff(P,DX);
+ if(I>Lim){
+ mycat(["Over", Lim,"derivations!"]);
+ break;
+ }
+ if(P == 0)
+ break;
+ Q = mydiff(Q,X);
+ if(Q == 0)
+ break;
+ F *= I;
+ R = radd(R,P*Q/F);
+ }
+ }
+ return R;
+ }
+#ifdef USEMODULE
+ return mmulbys(os_md.muldo,P,Q,[L]);
+#else
+ return mmulbys(muldo,P,Q,[L]);
+#endif
+}
+
+def jacobian(F,X)
+{
+ F=ltov(F);X=ltov(X);
+ N=length(F);
+ M=newmat(N,N);
+ for(I=0;I<N;I++)
+ for(J=0;J<N;J++) M[I][J]=red(diff(F[I],X[J]));
+ if(getopt(mat)==1) return M;
+ return mydet(M);
+}
+
+def hessian(F,X)
+{
+ X=ltov(X);
+ N=length(X);
+ M=newmat(N,N);
+ for(I=0;I<N;I++){
+ G=red(diff(F,X[I]));
+ for(J=0;J<N;J++) M[I][J]=red(diff(G,X[J]));
+ }
+ if(getopt(mat)==1) return M;
+ return mydet(M);
+}
+
+def wronskian(F,X)
+{
+ N=length(F);
+ M=newmat(N,N);
+ for(I=0;F!=[];F=cdr(F),I++){
+ M[I][0]=car(F);
+ for(J=1;J<N;J++) M[I][J]=red(diff(M[I][J-1],X));
+ }
+ if(getopt(mat)==1) return M;
+ return mydet(M);
+}
+
+def adj(P,L)
+{
+ if(type(P) == 4)
+#ifdef USEMODULE
+ return map(os_md.adj,mtranspose(P),L);
+#else
+ return map(adj,mtranspose(P),L);
+#endif
+ if(type(L) == 4 && type(L[0]) == 4)
+#ifdef USEMODULE
+ return fmult(os_md.adj,P,L,[]);
+#else
+ return fmult(adj,P,L,[]);
+#endif
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ P = R = subst(P, DX, -DX);
+ for(I = 1; (R = mydiff(mydiff(R, X), DX)/I) != 0 && I < 100; I++)
+ P = radd(P,R);
+ return P;
+}
+
+def laplace1(P,L)
+{
+ if(type(L) == 4 && type(L[0]) == 4)
+#ifdef USEMODULE
+ return fmult(os_md.laplace,P,L,[]);
+#else
+ return fmult(laplace,P,L,[]);
+#endif
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ P = adj(P, L);
+ return subst(P,X,o_1,DX,X,o_1,DX);
+}
+
+def laplace(P,L)
+{
+ if(type(L) == 4 && type(L[0]) == 4)
+#ifdef USEMODULE
+ return fmult(os_md.laplace1,P,L,[]);
+#else
+ return fmult(laplace1,P,L,[]);
+#endif
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ P = adj(P, L);
+ return subst(P,X,o_1,DX,-X,o_1,-DX);
+}
+
+def mce(P,L,V,R)
+{
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ P = sftexp(laplace1(P,L),L,V,R);
+ return laplace(P,L);
+}
+
+def mc(P,L,R)
+{
+ return mce(P,L,0,R);
+}
+
+def rede(P,L)
+{
+ Q = ltov(fctr(nm(red(P))));
+ P = 1;
+ if(type(L) < 4)
+ L = [L];
+ if(type(L[0]) < 4)
+ L = [L];
+ for( ; L != []; L = cdr(L)){
+ DX = vweyl(car(L))[1];
+ for(I = 1; I < length(Q); I++){
+ if(mydeg(Q[I][0],DX) > 0){
+ P *= (Q[I][0])^(Q[I][1]);
+ Q[I]=[1,0];
+ }
+ }
+ }
+ return P;
+}
+
+def ad(P,L,R)
+{
+ L = vweyl(L);
+ DX = L[1];
+ K = mydeg(P,DX);
+ S = mycoef(P,0,DX);
+ Q = 1;
+ for(I=1; I <= K;I++){
+ Q = muldo(Q,DX-R,L);
+ S = radd(S,mycoef(P,I,DX)*Q);
+ }
+ return S;
+}
+
+def add(P,L,R)
+{
+ return rede(ad(P,L,R),L);
+}
+
+
+def vadd(P,L,R)
+{
+ L = vweyl(L);
+ if(type(R) != 4)
+ return 0;
+ N = length(R);
+ DN = 1; Ad = PW = 0;
+ for( ; R != []; R = cdr(R), PW++){
+ DN *= (T=1-car(R)[0]*L[0]);
+ Ad = Ad*T-car(R)[1]*x^PW;
+ }
+ Ad /= DN;
+ return add(P,L,Ad);
+}
+
+def addl(P,L,R)
+{
+ return laplace1(add(laplace(P,L),L,R),L);
+}
+
+def cotr(P,L,R)
+{
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ T = 1/mydiff(P,DX);
+ K = mydeg(P,DX);
+ S = mysubst(mycoef(P,0,DX), [X, R]);
+ Q = 1;
+ for(I = 1; I <= K; I++){
+ Q = muldo(Q, K*DX, L);
+ S = radd(S,mysubst(mycoef(P,I,DX), [X, R])*Q);
+ }
+}
+
+def rcotr(P,L,R)
+{
+ return rede(cotr(P,L,R), L);
+}
+
+def muledo(P,Q,L)
+{
+ if(type(Q)>3)
+#ifdef USEMODULE
+ return mmulbys(os_md.muledo,P,Q,[L]);
+#else
+ return mmulbys(muledo,P,Q,[L]);
+#endif
+ R = P*Q;
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ for(I = F = 1; I < 100; I++){
+ P = mydiff(P,DX);
+ if(P == 0)
+ break;
+ Q = myediff(Q,X);
+ if(Q == 0)
+ break;
+ F = rmul(F,I);
+ R = radd(R,P*Q/F);
+ }
+ return R;
+}
+
+
+#if 1
+def mulpdo(P,Q,L)
+{
+ if(type(Q)>3)
+#ifdef USEMODULE
+ return mmulbys(os_md.mulpdo,P,Q,[L]);
+#else
+ return mmulbys(mulpdo,P,Q,[L]);
+#endif
+ if(type(Lim=getopt(lim))!=1) Lim=100;
+ M = vweyl(car(L)); X= M[0]; DX = M[1];
+ L = cdr(L);
+ R = 0;
+ for(I = 0; Q != 0 && I <= Lim; I++){
+ if(I>Lim){
+ mycat(["Over", Lim,"derivations!"]);
+ break;
+ }
+ if(I > 0)
+ P /= I;
+ if(length(L)==0)
+ R = radd(R,P*Q);
+ else
+ R = radd(R,mulpdo(P,Q,L));
+ if(X==0) break;
+ P = mydiff(P,DX);
+ if(P == 0)
+ break;
+ Q = mydiff(Q,X);
+ }
+ if(I>Lim) mycat(["Over", Lim,"derivations!"]);
+ return R;
+}
+
+#else
+def mulpdo(P,Q,L);
+{
+ if(type(Q)>3)
+#ifdef USEMODULE
+ return mmulbys(os_md.mulpdo,P,Q,[L]);
+#else
+ return mmulbys(mulpdo,P,Q,[L]);
+#endif
+ if(type(Lim=getopt(lim))!=1) Lim=100;
+ N = length(L);
+ VO = newvect(2*N);
+ VN = newvect(2*N);
+ for(I = J = 0; I < N; J += 2, I++){
+ M = vweyl(L[I]);
+ P = subst(P, VO[J]=M[0], VN[J]=strtov("o_"+rtostr(V[J])),
+ VO[J+1]=M[1], VN[J+1] = strtov("o_"+rtostr(V[J+1])));
+ }
+ for(PQ = P*Q, I = 0; I < 2*N; I += 2){
+ for(R = PQ, J = 1; J < Lim; J++){
+ R = mydiff(R, VN[I+1])/J;
+ if(R == 0)
+ break;
+ R = mydiff(R, VO[I]);
+ if(R == 0)
+ break;
+ PQ = radd(PQ,R);
+ }
+ if(I==Lim) mycat(["Over", Lim,"derivations!"]);
+ PQ = red(subst(PQ,VN[I],VO[I],VN[I+1],VO[I+1]));
+ }
+}
+#endif
+
+def transpdosub(P,LL,K)
+{
+ Len = length(K)-1;
+ if(Len < 0 || P == 0)
+ return P;
+ KK=K[Len];
+ if(type(KK)==4){
+ KK0=KK[0]; KK1=KK[1];
+ }else{
+ L = vweyl(LL[Len]);
+ KK0=L[1]; KK1=K[Len];
+ }
+ Deg = mydeg(P,KK0);
+ K1 = reverse(cdr(reverse(K)));
+ R = transpdosub(mycoef(P,0,KK0),LL,K1);
+ for(I = M = 1; I <= Deg ; I++){
+ M = mulpdo(M,KK1,LL);
+ S = mycoef(P,I,KK0);
+ if(Len > 0)
+ S = transpdosub(S,LL,K1);
+ R = radd(R,mulpdo(S,M,LL));
+ }
+ return R;
+}
+
+def transpdo(P,LL,K)
+{
+ if(type(K[0]) < 4)
+ K = [K];
+ Len = length(K)-1;
+ K1=K2=[];
+ if(type(LL)!=4) LL=[LL];
+ if(type(LL[0])!=4) LL=[LL];
+ if(getopt(ex)==1){
+ for(LT=LL, KT=K; KT!=[]; LT=cdr(LT), KT=cdr(KT)){
+ L = vweyl(LL[J]);
+ K1=cons([L[0],car(KT)[0]],K1);
+ K2=cons([L[1],car(KT)[1]],K2);
+ }
+ K2=append(K1,K2);
+ }else{
+ for(J = length(K)-1; J >= 0; J--){
+ L = vweyl(LL[J]);
+ if(L[0] != K[J][0])
+ K1 = cons([L[0],K[J][0]],K1);
+ K2 = cons(K[J][1],K2);
+ }
+ P = mulsubst(P, K1);
+ }
+ return transpdosub(P,LL,K2);
+}
+
+def translpdo(P,LL,M)
+{
+ S=length(LL);
+ L0=newvect(S);L1=newvect(S);
+ K=newvect(S);
+ for(J=0;J<S;J++){
+ L = vweyl(LL[J]);
+ L0[J]=L[0];
+ L1[J]=L[1];
+ }
+ K=rmul(M,L0);
+ for(T=[],J=0;J<S;J++)
+ T=cons([L0[J],K[J]],T);
+ P=mulsubst(P,T);
+ K=rmul(myinv(M),L1);
+ for(T=[],J=0;J<S;J++)
+ T=cons([L1[J],K[J]],T);
+ return mulsubst(P,T);
+}
+
+/*
+ return [R, M, S] : R = M*P - S*Q
+ deg(R,X) < deg(Q,X)
+*/
+def rpdiv(P,Q,X)
+{
+ if(P == 0)
+ return [0,1,0];
+ DQ = mydeg(Q,X);
+ CO = mycoef(Q,DQ,X);
+ S = 0;
+ while((DP = mydeg(P,X)) >= DQ){
+ R = mycoef(P,DP,X)/CO;
+ S = radd(S,R*X^(DP-DQ));
+ P = radd(P, -R*Q*X^(DP-DQ));
+ }
+ Lcm = lcm(dn(S),dn(P));
+ Gcd = gcd(nm(S),nm(P));
+ return [red(P*Lcm/Gcd), red(Lcm/Gcd),red(S*Lcm/Gcd)];
+}
+
+def texbegin(T,S)
+{
+ if(type(Opt=getopt(opt))==7) Opt="["+Opt+"]\n";
+ else Opt="\n";
+ return "\\begin{"+T+"}"+Opt+S+"%\n\\end{"+T+"}\n";
+}
+
+def mygcd(P,Q,L)
+{
+ if((Dvi=getopt(dviout))==3 || Dvi==-3){ /* dviout=3 */
+ if((Rev=getopt(rev))!=1) Rev=0;
+ R=mygcd(P,Q,L|rev=Rev);
+ if(type(L)<2) Var=0;
+ else if(type(L)==2){
+ Val=L;L=[0,L];
+ }else if(type(L)==4){
+ L=vweyl(L);
+ Var=[[L[1],"\\partial"]];
+ }
+ S=mat([P],[Q]);T=mat([R[0]],[0]);
+ M=mat([R[1],R[2]],[R[3],R[4]]);
+ if(type(Val)==4)
+ N=mdivisor(M,L|trans=1)[1];
+ else N=myinv(M);
+ Tb=str_tb(mtotex(S|var=Var),0);
+ str_tb("&="+mtotex(N|var=Var)+mtotex(T|var=Var)+",\\\\\n",Tb);
+ str_tb(mtotex(T|var=Var),Tb);
+ str_tb("&="+mtotex(M|var=Var)+mtotex(S|var=Var)+".",Tb);
+ Out=str_tb(0,Tb);
+ if(Dvi<0) return Out;
+ dviout(Out|eq="align*");
+ return 1;
+ }
+ if((type(Dvi)==1||Dvi==0) && getopt(rev)!=1) V=[[P,Q]];
+ else V=0;
+ if(L==0){ /* integer case */
+ if(type(P) > 1 || type(Q) > 1 || Q==0 /* P <= 0 || Q <= 0 */
+ || dn(P) > 1 || dn(Q) > 1)
+ return 0;
+ CPP = CQQ = 1; CQP = CPQ = 0;
+ P1 = P; Q1 = Q;
+ /* P1 = CPP*P + CPQ*Q
+ Q1 = CQP*P + CQQ*Q */
+ while(Q1 != 0){
+ Div1 = idiv(P1,Q1); Div2 = irem(P1,Q1);
+ if(type(V)==4) V=cons([Div1,Div2],V);
+ P1 = Q1 ; Q1 = Div2;
+ TP = CQP; TQ = CQQ;
+ CQP = CPP-Div1*CQP;
+ CQQ = CPQ-Div1*CQQ;
+ CPP = TP; CPQ = TQ;
+ }
+ if(V!=0){
+ V=reverse(V);
+ if((DVI=abs(Dvi))==0) return V;
+ PT=P;QT=Q;
+ if(DVI==1 || DVI==2){
+ Tb=str_tb(0,0);
+ for(C=0,V=cdr(V);V!=[];V=cdr(V)){
+ T=car(V);
+ if(C++) str_tb(texcr(11),Tb);
+ if(DVI==1){
+ Qs=rtostr(QT);
+ if(QT<0) Qs="("+Qs+")";
+ if(T[1]>0) Qs=Qs+"+";
+ if(T[1]!=0) Qs=Qs+rtostr(T[1]);
+ str_tb(rtostr(PT)+"&="
+ +rtostr(T[0])+"\\times"+Qs,Tb);
+ }else{
+ N=mat([T[0],1],[1,0]);
+ if(C==1){
+ str_tb(S0=mtotex(mat([PT],[QT])),Tb);
+ M=N;
+ }
+ str_tb("&=",Tb);
+ if(C>1) str_tb(mtotex(M),Tb);
+ str_tb(mtotex(N),Tb);
+ str_tb(S=mtotex(mat([QT],[T[1]])),Tb);
+ if(C>1){
+ str_tb("=",Tb);
+ str_tb(mtotex(M=M*N),Tb);
+ str_tb(S,Tb);
+ }
+ }
+ PT=QT;QT=T[1];
+ }
+ if(DVI==2){
+ str_tb(texcr(43)+S+"&=",Tb);
+ str_tb(mtotex(myinv(M)),Tb);
+ str_tb(S0,Tb);
+ }
+ Out=str_tb(0,Tb);
+ if(Dvi>0){
+ dviout(Out|eq="align*");
+ return 1;
+ }
+ return Out;
+ }
+ }
+ if(P1<0) return [-P1,-CPP,-CPQ,CQP,CQQ];
+ return [P1, CPP, CPQ, CQP, CQQ];
+ }
+ if(type(L) == 2) /* polynomical case */
+ L = [0,L];
+ if(getopt(rev)==1 && L[0]!=0){
+ R=mygcd(adj(P,L),adj(Q,L),L);
+ return [adj(R[0],L),adj(R[1],L),adj(R[2],L),adj(R[3],L),adj(R[4],L)];
+ }
+ if(type(P) == 3)
+ P = red(P);
+ if(type(Q) == 3)
+ Q = red(Q);
+ CP=newvect(2,[1/dn(P),0]); CQ=newvect(2,[0,1/dn(Q)]);
+ P=PT=nm(P); Q =QT=nm(Q);
+ L = vweyl(L);
+ while(Q != 0){
+ R = divdo(P,Q,L);
+ if(type(V)==4) V=cons(R,V);
+/* R[1] = R[2]*P - R[0]*Q
+ = R[2]*(CP[0]*P0+CP[1]*Q0) - R[0]*(CQ[0]*P0+CQ[1]*Q0) */
+/*
+ P(n) |0 1 | P(n-1)
+ = | |
+ R[1] |R[2] -R[0]| P(n)
+ P(n+1) = R[1], P(n) = P, P(n-1) = Q
+*/
+ P = Q;
+ Q = R[1];
+ {
+ CT = dupmat(CQ);
+ CQ = [R[2]*CP[0]-muldo(R[0],CQ[0],L),
+ R[2]*CP[1]-muldo(R[0],CQ[1],L)];
+ CP = CT;
+ }
+ }
+ if(V!=0){
+ V=reverse(V);
+ if((DVI=abs(Dvi))==0) return V;
+ if(type(L[0])<1) Var=L[1];
+ else Var=[L[1],"\\partial"];
+ if(DVI==1 || DVI==2){
+ Tb=str_tb(0,0);
+ PT=car(V)[0];QT=car(V)[1];
+ for(C=0,V=cdr(V);V!=[];V=cdr(V)){
+ T=car(V);
+ if(C++) str_tb(texcr(11),Tb);
+ if(DVI==1){
+ if(T[2]!=1){
+ str_tb(monototex(T[2]),Tb);
+ str_tb("(",Tb);
+ str_tb(fctrtos(PT|var=Var,TeX=2),Tb);
+ str_tb(")&=",Tb);
+ }else{
+ str_tb(fctrtos(PT|var=Var,TeX=2),Tb);
+ str_tb("&=",Tb);
+ }
+ str_tb("(",Tb);
+ str_tb(fctrtos(T[0]|var=Var,TeX=2),Tb);
+ str_tb(")(",Tb);
+ str_tb(fctrtos(QT|var=Var,TeX=2),Tb);
+ if(T[1]!=0){
+ str_tb(")+(",Tb);
+ str_tb(fctrtos(T[1]|var=Var,TeX=2),Tb);
+ }
+ str_tb(")",Tb);
+ }else{
+ N=mat([red(T[0]/T[2]),1],[1,0]);
+ if(C==1){
+ str_tb(S0=mtotex(mat([PT],[QT])|var=Var),Tb);
+ M=N;
+ }
+ str_tb("&=",Tb);
+ if(C>1) str_tb(mtotex(M),Tb);
+ str_tb(mtotex(N|var=Var),Tb);
+ str_tb(S=mtotex(mat([QT],[T[1]])|var=Var),Tb);
+ if(C>1){
+ str_tb("=",Tb);
+ str_tb(mtotex(M=muldo(M,N,L)|var=Var),Tb);
+ str_tb(S,Tb);
+ }
+ }
+ PT=QT;QT=T[1];
+ }
+ if(DVI==2){
+ FT=fctr(PT);
+ for(R=1;FT!=[];FT=cdr(FT)){
+ if(mydeg(car(FT)[0],L[1])<1)
+ for(J=car(FT)[1];J>0;J--) R*=car(FT)[0];
+ }
+ if(R!=1){
+ str_tb(texcr(79),Tb);
+ M=muldo(M,mat([R,0],[0,1]),L);
+ str_tb(mtotex(M|var=Var),Tb);
+ str_tb(S=mtotex(mat([PT/R],[QT])|var=Var),Tb);
+ }
+ str_tb(texcr(43)+S+"&=",Tb);
+ if(type(Var)==4){
+ N=mdivisor(M,L|trans=1);
+ N=N[1];
+ }else
+ N=myinv(M);
+ str_tb(mtotex(N|var=Var),Tb);
+ str_tb(S0,Tb);
+ }
+ Out=str_tb(0,Tb);
+ if(Dvi>0){
+ dviout(Out|eq="align*");
+ return 1;
+ }
+ return Out;
+ }
+ }
+ Q = rede(P,L);
+ R = red(P/Q);
+ return [Q,red(CP[0]/R),red(CP[1]/R),red(CQ[0]/R),red(CQ[1]/R)];
+}
+
+def mylcm(P,Q,L)
+{
+ Rev=(getopt(rev)==1)?1:0;
+ if(Rev==1){
+ P=adj(P); Q=adj(Q);
+ }
+ R = mygcd(P,Q,L);
+ S=(type(L)<=2)?R[3]*P:muldo(R[3],P,L);
+ S = nm(S);
+ if(type(S) <= 1 && type(L) <= 1){
+ if(S<0) S = -S;
+ return S;
+ }
+ if(type(L) == 2)
+ return easierpol(S,L);
+ S=rede(easierpol(S,L[1]),L);
+ return (Rev==1)?adj(S):S;
+}
+
+def sftpexp(P,LL,F,Q)
+{
+ if(type(LL[0]) < 4)
+ LL = [LL];
+ for(L0=L1=[],LT=LL;LT!=[];LT=cdr(LT)){
+ W=vweyl(car(LT));
+ L0=cons(W,L0);
+ D=mydiff(F,W[0]);
+ if(D!=0) L1=cons(W[1]+Q*D/F,L1);
+ else L1=cons(W[1],L1);
+ }
+ return rede(transpdosub(P,L0,L1),L0);
+}
+
+def applpdo(P,F,LL)
+{
+ if(type(F)>3)
+#ifdef USEMODULE
+ return mmulbys(os_md.applpdo,P,F,[LL]);
+#else
+ return mmulbys(applpdo,P,F,[LL]);
+#endif
+ L = vweyl(LL[0]);
+ LL = cdr(LL);
+ Deg = deg(P,L[1]);
+ S = F;
+ for(I = R = 0; I <= Deg ; I++){
+ if(I > 0)
+ S = mydiff(S,L[0]);
+ if(LL == [])
+ R = radd(R,mycoef(P,I,L[1])*S);
+ else
+ R = radd(R,applpdo(mycoef(P,I,L[1]), S, LL));
+ }
+ return R;
+}
+
+def tranlpdo(P,L,M)
+{
+ N = length(L);
+ R = size(M);
+ if(R[0] != N || R[1] != N){
+ print("Strange size");
+ return;
+ }
+ InvM = M;
+ if(InvM[1] == 0){
+ print("Not invertible");
+ return;
+ }
+ XL = newvector(N);
+ DL = newvector(N);
+ for(I = 0; I < 0; I++){
+ R = vweyl(L[I]);
+ XL[I] = R[0];
+ DL[I] = R[1];
+ }
+ for(I = 0; I < N; I++){
+ for(J = XX = D0 = 0; J < N; J++){
+ XX = radd(XX,M[I][J]*XL[J]);
+ DD = radd(DD, red(InvM[0][I][J]/InvM[1])*DL[J]);
+ P = mysubst(P,[[XL[I],XX],[DL[I],DD]]);
+ }
+ }
+ return P;
+}
+
+def divdo(P,Q,L)
+{
+ if(L==0){
+ R=P-idiv(P,Q)*Q;
+ if(R<0){
+ if(Q>0) R+=Q;
+ else R-=Q;
+ }
+ return [(P-R)/Q,R,1];
+ }
+ L = vweyl(L);
+ if(getopt(rev)==1){
+ R=divdo(adj(P,L),adj(Q,L),L);
+ return [adj(R[0],L),adj(R[1],L),R[2]];
+ }
+ X = L[0]; DX = L[1];
+ S = 0;
+ M = 1;
+ I = mydeg(Q,DX);
+ CQ = mycoef(Q,I,DX);
+ while((J=mydeg(P,DX)) >= I){
+ C = mycoef(P,J,DX);
+ SR = red(C/CQ);
+ if(dn(SR) != 1){
+ M *= dn(SR);
+ P *= dn(SR);
+ S *= dn(SR);
+ SR = nm(SR);
+ }
+ P -= muldo(SR*(DX)^(J-I),Q,L);
+ S += SR*(DX)^(J-I);
+ }
+ return [S,P,M];
+}
+
+def qdo(P,Q,L)
+{
+ L = vweyl(L); DX = L[1]; OD = deg(P,DX);
+ V = newvect(OD+1);
+ for(I = 0; I <= OD; I++){
+ if(I)
+ Q = muldo(DX,Q,L);
+ S = divdo(Q,P,L);
+ V[I] = S[1]*DX-S[2]*zz^I;
+ }
+ for(K = [], I = OD; I >= 0; I--)
+ K = cons(DX^(I+1), K);
+ R = lsol(V,K);
+ S = length(R);
+ for(I = P1 = 0; I < S; I++){
+ if(type(R[I]) < 4 && mydeg(R[I],DX) == 0 && R[I] != 0
+ && (mydeg(R[I],zz) <= mydeg(P,DX)))
+ P1 = R[I];
+ else if(type(R[I]) == 4 && R[I][0] == DX)
+ P2 = R[I][1];
+ }
+ T=fctr(P1);
+ for(I=0, S=length(T), P1=1; I<S; I++){
+ if(mydeg(T[I][0],zz) > 0)
+ P1 *= T[I][0]^(T[I][1]);
+ }
+ return subst([P1,P2],zz,DX);
+}
+
+def sqrtdo(P,L)
+{
+ L = vweyl(L);
+ P = toeul(P,L,0);
+ V = -1;
+ for(R = 0, Ord = mydeg(P,L[1]); Ord >= 0; Ord--){
+ Q = coef(P,Ord,L[1]);
+ M = mydeg(Q,L[0]);
+ N = mymindeg(Q,L[0]);
+ if(V < 0)
+ V = M+N;
+ else if(V != M+N){
+ print("Cannot be transformed!");
+ return;
+ }
+ Q = tohomog(red(Q/L[0]^N), [L[0]], z_z);
+ if(irem(Ord,2))
+ B = x-z_z;
+ else
+ B = x+z_z;
+ Q = substblock(Q,x,B,z_zz);
+ if(mydeg(Q,x) > 0){
+ print("Cannot be transformed!");
+ return;
+ }
+ R += mysubst(Q,[z_zz,x])*L[1]^Ord;
+ }
+ return fromeul(R,L,0);
+}
+
+def ghg(A,B)
+{
+ R = dx;
+ while(length(B)>0){
+ R = muldo(x*dx+car(B),R,[x,dx]);
+ B = cdr(B);
+ }
+ T = 1;
+ while(length(A)>0){
+ T = muldo(x*dx+car(A),T,[x,dx]);
+ A = cdr(A);
+ }
+ return R-T;
+}
+
+def ev4s(A,B,C,S,T)
+{
+ R4 = x^2*(x-1)^2;
+ R3 = x*(x-1)*((2*A-2*B-8)*x-2*A+5);
+ R2 = (-3/2*(A^2+B^2)+3*A*B+9*A-9*B-29/2+1/4*(S^2+T^2))*x^2
+ +(5*A^2/2-13*A-3*A*B+B^2/2+7*B-C^2+C+35/2 - 1/4*(S^2+T^2))*x
+ - (2*A+2*C-5)*(2*A-2*C-3)/4;
+ R1 = 1/4*(A-B-2)*(2*A^2-4*A*B-8*A+2*B^2+8*B+10-S^2-T^2)*x
+ +15/4+3*B^2/4-C^2/2+11*A^2/4 - 11*A/2+3*B+B*C-7*A*B/2+C/2-A*B^2/2
+#if 1
+ + A^2*B
+#endif
+ - B*C^2 - A^3/2+(2*A-3)*(S^2+T^2)/8;
+/* OK? for the above term added */
+ R0 = -(A-B-1-S)*(A-B-1+S)*(A-B-1-T)*(A-B-1+T)/16;
+ return (R4*dx^4-R3*dx^3-R2*dx^2-R1*dx-R0);
+}
+
+def b2e(A,B,C,S,T)
+{
+ R4 = x^2*(x-1)^2;
+ R3 = x*(x-1)*(2*x-1)*(2*c-5);
+ R2 = (-6*C^2+24*C-25+1/2*S^2+1/2*T^2)*x^2
+ +(6*C^2-24*C+25-1/2*S^2-1/2*T^2-A^2+B^2+A-B)*x
+ +A^2-C^2-A+4*C-15/4;
+ R1 = (2*C-3)*(2*C^2-6*C+5-1/2*S^2-1/2*T^2)*x
+ +(2*C-3)*(-C^2+3*C+1/2*A^2-1/2*B^2+1/2*B-1/2*A-5/2+1/4*S^2+1/4*T^2);
+ R0 = -(2-2*C+S+T)*(2-2*C-S-T)*(2-2*C+S-T)*(2-2*C-S+T)/16;
+ return (R4*dx^4-R3*dx^3-R2*dx^2-R1*dx-R0);
+}
+
+
+/*
+ T^m = T(T-1)....(T-m+1)
+ f(t) -> g(t)
+
+ f(t) = a_mt^m + ... + a_1t+a_0
+ g(x*dx) = a_m*x^m*dx^m + ... + a_1*x*dx+a_0
+
+ ret: x(x-1)...(x-i+1)
+ */
+def sftpow(X,I)
+{
+ R = 1;
+ for(J=0;J<I;J++)
+ R *= X-J;
+ return(R);
+}
+
+/*
+ ret: x(x+K)(x+2*k)...(x+(i-1)*k)
+*/
+def sftpowext(X,I,K)
+{
+ R = 1;
+ for(J=0;J<I;J++)
+ R *= X+K*J;
+ return(R);
+}
+
+def polinsft(F,A)
+{
+ R = 0;
+ while(F != 0){
+ D = mydeg(F,A);
+ C = mycoef(F,D,A);
+ R += C*A^D;
+ F -= C*sftpow(A,D);
+ }
+ return R;
+}
+
+def pol2sft(F,A)
+{
+ S=getopt(sft);
+ if(type(S)<0 || type(S)>2) S=1;
+ R = 0;
+ for(I = mydeg(F,A); I >= 0; I--)
+ R = R*(A-I*S) + mycoef(F,I,A);
+ return R;
+}
+
+def binom(P,N)
+{
+ if(type(N)!=1 || N<0) return 1;
+ for(S=1;N>0;N--,P-=1) S*=P/N;
+ return red(S);
+}
+
+def expower(P,R,N)
+{
+ if(type(N)!=1 || N<0) return 0;
+ for(S=S0=K=1;K<=N;K++,R-=1){
+ S0*=P*R/K;S+=S0;
+ }
+ return red(S);
+}
+
+def seriesHG(A,B,X,N)
+{
+ if(type(N)!=1 || N<0) return 0;
+ if(type(X)<4){
+ for(K=0,S=S0=1;K<N;K++){
+ for(T=A; T!=[]; T=cdr(T)) S0*=car(T)+K;
+ for(T=B; T!=[]; T=cdr(T)) S0/=car(T)+K;
+ S0=red(S0*X/(K+1));
+ DN=dn(S0);
+ S=red((red(S*DN)+nm(S0))/DN);
+ }
+ return S;
+ }
+ S=0;
+ for(K=0;K<=N;K++){
+ for(I=0;I<=N-K;I++){
+ C=1/sftpowext(1,I,1)/sftpowext(1,J,1);
+ for(T=A[0];T!=[];T=cdr(T)) C*=sftpowext(car(T),I+K,1);
+ for(T=A[1];T!=[];T=cdr(T)) C*=sftpowext(car(T),I,1);
+ for(T=A[2];T!=[];T=cdr(T)) C*=sftpowext(car(T),K,1);
+ for(T=B[0];T!=[];T=cdr(T)) C/=sftpowext(car(T),I+K,1);
+ for(T=B[1];T!=[];T=cdr(T)) C/=sftpowext(car(T),I,1);
+ for(T=B[2];T!=[];T=cdr(T)) C/=sftpowext(car(T),K,1);
+ S+=red(C*X[0]^I*X[1]^K);
+ }
+ }
+ return S;
+}
+
+def evalred(F)
+{
+ Opt=getopt(opt);
+ if(type(Opt)!=4){
+ Opt=[];
+ }else if(length(Opt)==2 && type(Opt[0])!=4) Opt=[Opt];
+ for(;;){
+ G=mysubst(F,[[tan(0),0],[asin(0),0],[atan(0),0],[sinh(0),0],[tanh(0),0],
+ [log(1),0],[cosh(0),1],[exp(0),1]]);
+ for(Rep=Opt; Rep!=[]; Rep=cdr(Rep))
+ G=subst(G,car(Rep)[0],car(Rep)[1]);
+ Var=vars(G);
+ for(V=Var; V!=[]; V=cdr(V)){
+ if(!(VV=args(CV=car(V)))) continue;
+ if((functor(CV)==sin||functor(CV)==cos)){
+ P=2*red(VV[0]/@pi);
+ if(functor(CV)==sin) P=1-P;
+ if(isint(P)){
+ if(iand(P,1)) G=subst(G,CV,0);
+ else if(!iand(P,3)) G=subst(G,CV,1);
+ else G=subst(G,CV,-1);
+ continue;
+ }
+ if(isint(P*=3/2)){
+ if(iand(P,3)==1) G=subst(G,CV,1/2);
+ else G=subst(G,CV,-1/2);
+ }
+ }
+ for(;VV!=[];VV=cdr(VV))
+ if(car(VV)!=(TV=evalred(car(VV)))) G=subst(G,car(VV),TV);
+ if(functor(CV)!=pow || (args(CV)[0])!=1) continue;
+ G=subst(G,CV,1);
+ }
+ if(G==F) return F;
+ F=G;
+ }
+}
+
+def seriesMc(F,N,V)
+{
+ if(type(V)<4) V=[V];
+ V=reverse(V);
+ L=length(V);
+ if(type(Opt=getopt(evalopt))!=4) Opt=[];
+ P=newvect(L);
+ G=newvect(L+1);
+ G[0]=F;
+ for(I=0;I<L;I++)
+ G[I+1]=eval(evalred(subst(G[I],V[I],0)|opt=Opt));
+ R=G[L];
+ for(;;){
+ for(M=0,I=0;I<L;I++){
+ M+=P[I];
+ if(M==N) break;
+ }
+ if(M<N){
+ P[L-1]++;
+ G[L-1]=mydiff(G[L-1],V[L-1]);
+ G[L]=eval(evalred(mysubst(G[L-1],[V[L-1],0])|opt=Opt));
+ }else{
+ if(I--==0) break;
+ P[I]++;
+ G[I]=mydiff(G[I],V[I]);
+ while(I++<L){
+ G[I]=eval(evalred(mysubst(G[I-1],[V[I-1],0])|opt=Opt));
+ if(I<L) P[I]=0;
+ }
+ }
+ K=1;
+ for(I=0;I<L;I++) K*=V[I]^P[I]/fac(P[I]);
+ R+=G[L]*K;
+ }
+ return R;
+}
+
+def seriesTaylor(F,N,V)
+{
+ G=F;
+ if(isvar(V)) V=[V];
+ if(length(V)==2 && type(car(V))!=4 && !isvar(V[1])) V=[V];
+ for(V0=V1=[];V!=[];V=cdr(V)){
+ if(type(T=car(V))!=4) T=[T];
+ V0=cons(X=car(T),V0);
+ if(length(T)==1 || T[1]==0){
+ V1=cons(X,V1);continue;
+ }
+ S=my_tex_form(-T[1]);
+ if(str_char(S,0,"-")!=0) S="+"+S;
+ S="("+my_tex_form(X)+S+")";
+ V1=cons([X,S],V1);
+ F=red(subst(F,T[0],T[0]+T[1]));
+ }
+ V0=reverse(V0);V1=reverse(V1);
+ F=seriesMc(F,N,V0|option_list=getopt());
+ if(getopt(frac)==0) F=frac2n(F);
+ T=getopt(dviout);
+ if(type(T)!=1) T=0;
+ F=fctrtos(F|var=V1,rev=1,TeX=(T==0||T==2)?2:3);
+ if(getopt(small)==1) F=str_subst(F,"\\frac{","\\tfrac{");
+ if(T<0 || T==1) F="\\begin{align}\\begin{split}\n"+
+ my_tex_form(G)+"&="+F+"+\\cdots\n\\end{split}\\end{align}\n";
+ if(T==1) dviout(F);
+ else if(T==1) dviout(F|eq=4);
+ return F;
+}
+
+def toeul(F,L,V)
+{
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ I = mydeg(F,DX);
+ if(V == "infty"){
+ for(II=I; II>=0; II--){
+ J = mydeg(P=mycoef(F,I,DX),X);
+ if(II==I) S=II-J;
+ else if(P!=0 && II-J>S) S=II-J;
+ }
+ F *= X^S;
+ R = 0;
+ for( ; I >= 0; I--)
+ R += red((mysubst(mycoef(F,I,DX),[X,1/X])*(x*DX)^I));
+ return(subst(pol2sft(R,DX),DX,-DX));
+ }
+ F = subst(F,X,X+V);
+ for(II=I; II>=0; II--){
+ J = mymindeg(P=mycoef(F,II,DX),X);
+ if(II==I) S=II-J;
+ else if(P!=0 && II-J>S) S=II-J;
+ }
+ F *= X^S;
+ R = 0;
+ for( ; I >= 0; I--)
+ R += (red(mycoef(F,I,DX)/X^I))*DX^I;
+ return pol2sft(R,DX);
+}
+
+/*
+def topoldif(P,F,L)
+{
+ L = vweyl(L);
+ P = nm(red(P));
+ while(deg(P,L[1]) > 0){
+ R = coef(P,0,L[0]);
+ Q = red((P-R)/(F*L[0]);
+ P = nm(Q)*zz+F*R*dn(Q);
+ }
+}
+*/
+
+def fromeul(P,L,V)
+{
+ if(P == 0)
+ return 0;
+ L = vweyl(L);
+ X = L[0]; DX = L[1];
+ I = mydeg(P,DX);
+ if(V == "infty"){
+ P = subst(P,DX,-DX);
+ J = mydeg(P,X);
+ P = red(mysubst(P,[X,1/X])*X^J);
+ }
+ R = mycoef(P,0,DX);
+ S = 1;
+ for(S = J = 1; J <= I; J++){
+ S = DX*(S*X + mydiff(S,DX));
+ R += mycoef(P,J,DX)*S;
+ }
+ while(mycoef(R,0,X) == 0)
+ R = tdiv(R,X);
+ if(V != "infty" && V != 0)
+ R = mysubst(R,[X,X-V]);
+ return R;
+}
+
+def sftexp(P,L,V,N)
+{
+ L = vweyl(L); DX = L[1];
+ P = mysubst(toeul(P,L,V),[DX,DX+N]);
+ return fromeul(P,L,V);
+}
+
+
+def fractrans(P,L,N0,N1,N2)
+{
+ L = vweyl(L);
+ if(N2 != "infty"){
+ if(N0 == "infty")
+ N0 = 0;
+ else
+ N0 = red(1/(N0-N2));
+ if(N1 == "infty")
+ N1 = 0;
+ else
+ N1 = red(1/(N1-N2));
+ P = mysubst(P,[L[0],L[0]+N2]);
+ P = fromeul(toeul(P,L,"infty"),L,0);
+ }
+ if(N0 != 0){
+ P = mysubst(P,[L[0],L[0]+N0]);
+ N1 -= N0;
+ }
+ if(N1 != 1)
+ P = mysubst(P,[[L[0],L[0]/N1],[L[1],L[1]*N1]]);
+ return P;
+}
+
+def soldif(P,L,V,Q,N)
+{
+ L = vweyl(L); X = L[0]; DX = L[1];
+ P = mysubst(toeul(P,L,V),[DX,DX+Q]);
+ DEG = mydeg(P,X);
+ P0 = newvect(DEG+1);
+ for(I = 0; I <= DEG; I++)
+ P0[I] = coef(P,I,X);
+ if(P0[0] == 0)
+ return 0;
+ if(subst(P0[0],DX,0) != 0){
+ mycat([Q,"is not the exponent at", V])$
+ return 0;
+ }
+ R = newvect(N+1);
+ R[0] = 1;
+ for(I = 1; I <= N; I++){
+ for(S = 0, K = 1; K <= DEG && K <= I; K++)
+ S += mysubst(P0[K],[DX,I-K])*R[I-K];
+ S = red(S);
+ M = mysubst(P0[0],[DX,I]);
+ if(M != 0){
+ R[I] = -red(S/M);
+ if(R1 != 0){
+ for(S = 0, K = 1; K <= DEG && K <= I; K++)
+ S += mysubst(P0[K],[DX,I-K])*R1[I-K] +
+ mysubst(P1[K],[DX,I-K])*R[I-K];
+ R1[I] = -red(S/M);
+ }
+ }else{
+ if(S == 0){
+ if(R1 != 0){
+ for(S = 0, K = 1; K <= DEG && K <= I; K++)
+ S += mysubst(P0[K],[DX,I-K])*R1[I-K] +
+ mysubst(P1[K],[DX,I-K])*R[I-K];
+ }
+ if(S == 0)
+ continue;
+ }
+ R1 = newvect(N+1);
+ for(K = 0; K < I; K++){
+ R1[K] = R[K];
+ R[K] = 0;
+ }
+ R1[I] = 0;
+ P1 = newvect(DEG);
+ for(K = 0; K <= DEG; K++)
+ P1[K] = mydiff(P0[K], DX);
+ M = mysubst(P1[0],[DX,I]);
+ if(M == 0){
+ cat(["multiple log at ", I])$
+ return 0;
+ }
+ R[I] = -red(S/M);
+ }
+ }
+ if(R1 != 0)
+ return [R1, R];
+ else
+ return R;
+}
+
+def chkexp(P,L,V,Q,N)
+{
+ L = vweyl(L); X = L[0]; DX = L[1];
+ P = mysubst(toeul(P,L,V),[DX,DX+Q]);
+ P = fromeul(P,L,0);
+ D = mydeg(P,DX);
+ Z = mindeg(mycoef(P,D,DX), X) - (D-N);
+ R = [];
+ for(I = 0; I < Z; I++){
+ S = mycoef(P,I,X);
+ if(S != 0){
+ for(J = mydeg(S,DX); J >= 0; J--){
+ T = mycoef(S,J,DX);
+ if(T != 0)
+ R = cons(T,R);
+ }
+ }
+ }
+ return R;
+}
+
+
+def sqrtrat(P)
+{
+ if(P==0) return 0;
+ if(type(P)==3||type(P)==2){
+ P=red(P);
+ if(imag(dn(P))!=0||imag(nm(P))!=0){
+ if(imag(dn(P))==0&&real(P)!=0){
+ F=red(imag(P)/real(P));
+ if(F==3^(1/2)||F==-3^(1/2)){
+ if(eval(real(P))<0)
+ return -real(P)+imag(P)*@i;
+ else{
+ if(eval(imag(P))>0) return imag(P)+real(P)*@i;
+ else return -imag(P)-real(P)*@i;
+ }
+ }
+ }
+ return [];
+ }
+ F=fctr(dn(P));
+ R=sqrtrat(car(F)[0]);
+ for(F=cdr(F);F!=[];F=cdr(F)){
+ if(!iand(car(F)[1],1)) R*=car(F)[0]^(car(F)[1]/2);
+ else return [];
+ }
+ F=fctr(nm(P));
+ R=sqrtrat(car(F)[0])/R;
+ for(F=cdr(F);F!=[];F=cdr(F)){
+ if(!iand(car(F)[1],1)) R*=car(F)[0]^(car(F)[1]/2);
+ else return [];
+ }
+ return R;
+ }
+ if(ntype(P)==4){
+ P0=real(P);P1=imag(P)/2;
+ X=makenewv(P);
+ for(R=fctr(X^4-P0*X^2-P1^2);R!=[];R=cdr(R)){
+ RT=car(R)[0];
+ if(deg(RT,X)==1){
+ X=-mycoef(RT,0,X)/mycoef(RT,1,X);
+ return X+P1/X*@i;
+ }
+ if(deg(RT,X)==2){
+ if((D=mycoef(RT,1,X)^2-4*mycoef(RT,2,X)*mycoef(RT,0,X))<0) continue;
+ X=(-mycoef(RT,1,X)+sqrtrat(D))/(2*mycoef(RT,2,X));
+ return X+P1*sqrt2rat(1/X)*@i;
+ }
+ }
+ D=P0^2+4*P1^2;
+ if(P1>0) return ((sqrtrat(D)+P0)/2)^(1/2)+((sqrtrat(D)-P0)/2)^(1/2)*@i;
+ return ((sqrtrat(D)+P0)/2)^(1/2)-((sqrtrat(D)-P0)/2)^(1/2)*@i;
+ }else if(ntype(P)!=0) return [];
+ if(P==1) return P;
+ Dn=dn(P);Nm=nm(P);C=R=1;
+ N=pari(factor,Dn);
+ if(N){
+ for(II=car(size(N))-1;II>=0;II--){
+ if(iand(K=N[II][1],1)){
+ R*=N[II][0];
+ K++;
+ }
+ C/=N[II][0]^(K/2);
+ }
+ }
+ N=pari(factor,Nm);
+ if(N){
+ for(II=car(size(N))-1;II>=0;II--){
+ if(N[II][0]==-1){
+ C*=@i;
+ continue;
+ }
+ K=N[II][1];
+ if(iand(K,1)){
+ R*=N[II][0];
+ K--;
+ }
+ if(K!=0) C*=N[II][0]^(K/2);
+ }
+ }
+ if(R!=1) C*=R^(1/2);
+ return C;
+}
+
+def fctri(F)
+{
+ R=(iscoef(F,os_md.israt))?fctr(F):[[1,1],[F,1]];
+ if(!iscoef(F,os_md.iscrat)||chkfun("af_noalg",0)==0) return R;
+ X=makenewv(vars(F));
+ for(S=[];R!=[];R=cdr(R)){
+ if(length(Var=vars(R0=car(R)[0])) == 1 && (D=mydeg(R0,Var=car(Var))) > 0){
+ if(imag(T=mycoef(R0,D,Var))!=0) R0/=T;
+ T=af_noalg(real(R0)+imag(R0)*X,[[X,X^2+1]]);
+ if(length(T)>1||T[0][1]>1){
+ T=subst(T,X,@i);
+ for(; T!=[];T=cdr(T)){
+ if(vars(T[0])!=[])
+ S=cons([car(T)[0],car(T)[1]*car(R)[1]],S);
+ }
+ continue;
+ }
+ }
+ S=cons(R[0],S);
+ }
+ return reverse(S);
+}
+
+def getroot(F,X)
+{
+ S=[];
+ if(type(Cpx=getopt(cpx))!=1) Cpx=0;
+ M=getopt(mult);
+ if(type(F) == 3)
+ F = nm(red(F));
+ for(R=fctri(F); length(R)>0; R = cdr(R)){
+ T=car(R);
+ P=car(T);
+ I=car(cdr(T));
+ if(mydeg(P,X)>0){
+ if(mydeg(P,X)==1){
+ C = mycoef(P,1,X);
+ P = X - red(P/C);
+ }else if(mydeg(P,X)==2 && Cpx>0){
+ C2=mycoef(P,2,X);C1=mycoef(P,1,X);C0=mycoef(P,0,X);
+ C=sqrt2rat(C1^2-4*C0*C2);
+ C0=[];
+ if(type(C)==0&&ntype(C)==0&&pari(issquare,-C)) C0=sqrt(C);
+ else if(Cpx>1) C0=sqrtrat(C);
+ if(C0==[]&&Cpx>2) C0=C^(1/2);
+ if(C0!=[]){
+ if(M==1)
+ S=cons([I,sqrt2rat((-C1+C0)/(2*C2))],S);
+ else{
+ for(II=I; II>0; II--)
+ S=cons(sqrt2rat((-C1+C0)/(2*C2)),S);
+ }
+ P=sqrt2rat((-C1-C0)/(2*C2));
+ }
+ }else if(mydeg(P,X)==3 && Cpx>1){
+ Omg=(-1+3^(1/2)*@i)/2;
+ PP=P/mycoef(P,3,X);
+ C2=mycoef(PP,2,X)/3;
+ PP=subst(PP,X,X-C2);
+ if((C1=mycoef(PP,1,X))==0){
+ C0=mycoef(PP,0,X);
+ if(real(C0)==0||imag(C0)==0){
+ if(real(C0)==0){
+ PP=getroot(X^3+imag(C0),X);
+ if(length(PP)==3){
+ for(;PP!=[];PP=cdr(PP)){
+ if(imag(PP[0])==0){
+ C0=PP[0]*@i;
+ break;
+ }
+ }
+ if(PP==[]) C0=0;
+ }
+ }else{
+ if(C0>0) C0=C0^(1/3);
+ else C0=-(-C0)^(1/3);
+ }
+ if(C0!=0){
+ if(M==1){
+ S=cons([I,C0-C2],S);
+ S=cons([I,C0*Omg-C2],S);
+ S=cons([I,C0*(-1-Omg)-C2],S);
+ }else{
+ for(II=I; II>0; II--){
+ S=cons(C0-C2,S);
+ S=cons(C0*Omg-C2,S);
+ S=cons(C0*(-1-Omg)-C2,S);
+ }
+ }
+ continue;
+ }
+ }
+ }
+ if(Cpx>2){
+ Q=X^2+(mycoef(PP,1,X)/3)*X+mycoef(PP,0,X)^3;
+ SQ=getroot(Q,X|cpx=2);
+ SQ=SQ[0]^(1/3);SQ2=mycoef(PP,0,X)/SQ;
+ if(M==1){
+ S=cons([I,SQ+SQ2-C2],S);
+ S=cons([I,SQ*Omg+SQ2*(-1-Omg)-C2],S);
+ S=cons([I,SQ*(-1-Omg)+SQ2*Omg-C2],S);
+ }else{
+ for(II=I; II>0; II--){
+ S=cons(SQ+SQ2-C2,S);
+ S=cons(SQ*Omg+SQ2*(-1-Omg)-C2,S);
+ S=cons(SQ*(-1-Omg)+SQ2*Omg-C2,S);
+ }
+ }
+ continue;
+ }
+ }else if(mydeg(P,X)==4 && Cpx>0){
+ C2=mycoef(P,3,X)/(4*mycoef(P,4,X));
+ PP=subst(P,X,X-C2);
+ if(mycoef(PP,1,X)==0){
+ PP=mycoef(PP,4,X)*X^2+mycoef(PP,2,X)*X+(SQ2=mycoef(PP,0,X));
+ SQ=getroot(PP,X|cpx=2);
+ if(length(SQ)==2){
+ if((C0=sqrtrat(SQ[0]))==[]){
+ if(mycoef(PP,1,X)==0){
+ if(SQ2<0) C0=(-SQ2)^(1/4);
+ else C0=SQ2^(1/4)*(1+@i)/2;
+ }
+ else if(Cpx>2) C0=SQ[0]^(1/2);
+ else C0=0;
+ }
+ if((C1=sqrtrat(SQ[1]))==[]){
+ if(mycoef(PP,1,X)==0) C1=-C0;
+ else C1=SQ[1]^(1/2);
+ }
+ if(C0!=0){
+ if(M==1)
+ S=append([[I,C0-C2],[I,-C0-C2],[I,C1-C2],[I,-C1-C2]],S);
+ else{
+ for(II=I; II>0; II--)
+ S=append([C0-C2,-C0-C2,C1-C2,-C1-C2],S);
+ }
+ continue;
+ }
+ }
+ }else{
+ PP/=mycoef(PP,4,X);
+ CC=mycoef(PP,2,X);C1=mycoef(PP,1,X);C0=mycoef(PP,0,X);
+ SQ=getroot(X*(CC+X)^2-4*C0*X-C1^2,X|cpx=Cpx);
+ if(length(SQ)>1){
+ SQ=sqrt2rat(SQ[0]);
+ SQ2=getroot(X^2-SQ,X|cpx=Cpx);
+ if(length(SQ2)>1){
+ C1=SQ2[0]*X-C1/SQ2[0]/2;
+ C0=getroot(X^2+CC/2+SQ/2+C1,X|cpx=Cpx);
+ C1=getroot(X^2+CC/2+SQ/2-C1,X|cpx=Cpx);
+ if(length(C0)>1&&length(C1)>1){
+ C0=[sqrt2rat(C0[0]-C2),sqrt2rat(C0[1]-C2),
+ sqrt2rat(C1[0]-C2),sqrt2rat(C1[1]-C2)];
+ if(M==1) for(II=0;II<4;II++) S=cons([I,C0[II]],S);
+ else for(II=I; II>0; II--) S=append(C0,S);
+ continue;
+ }
+ }
+ }
+ }
+ }
+ if(M==1)
+ S=cons([I,P],S);
+ else for( ; I>0; I--) S=cons(P,S);
+ }
+ }
+ S=qsort(S);
+ if(M==1) S=reverse(S);
+ return S;
+}
+
+def expat(F,L,V)
+{
+ L = vweyl(L);
+ if(V == "?"){
+ Ans = [];
+
+ F = nm(red(F));
+ S = fromeul(toeul(F,L,"infty"),L,0);
+ S = mycoef(S,mydeg(S,L[1]),L[1]);
+ if(mydeg(S,L[0]) > 0)
+ Ans = cons(["infty", expat(F,L,"infty")],Ans);
+
+ S = mycoef(F,mydeg(F,L[1]), L[1]);
+ R = getroot(S,L[0]);
+ for(I = 0; I < length(R); I++){
+ if(I > 0 && R[I-1] == R[I])
+ continue;
+ if(mydeg(R[I], L[0]) <= 0)
+ Ans = cons([R[I], expat(F,L,R[I])], Ans);
+ else
+ Ans = cons([R[I]], Ans);
+ }
+ return Ans;
+ }
+ return getroot(subst(toeul(F,L,V),L[0],0),L[1]);
+}
+
+def polbyroot(P,X)
+{
+ R = 1;
+ while(length(P)){
+ R *= X-car(P);
+ if(type(R)>2) R = red(R);
+ P = cdr(P);
+ }
+ return R;
+}
+
+def polbyvalue(P,X)
+{
+ R = 1; S = 0;
+ while(length(P)){
+ T = car(P);
+ V0 = T[1] - mysubst(S,[X,T[0]]);
+ if(V0 != 0){
+ if(type(R) > 2) R = red(R);
+ V1 = mysubst(R,[X,T[0]]);
+ if(V1 == 0){
+ erno(0);
+ return 0;
+ }
+ S += (V0/V1)*R;
+ if(type(S) > 2) S = red(S);
+ }
+ R *= X - T[0];
+ P = cdr(P);
+ }
+ return S;
+}
+
+
+def pcoef(P,L,Q)
+{
+ if(L==0)
+ return 1;
+ Coef=TP=0;
+ if(type(Q)>=4){
+ TP=1;
+ V=Q[0];
+ if(type(V)==4)
+ V=ltov(V);
+ else V=dupmat(V);
+ N=length(V);
+ if(type(Q[1])==5) MR=dupmat(Q[1]);
+ else{
+ MR=newvect(N);
+ for(K=Q[1], I=0; I< N; I++){
+ MR[I] = car(K);
+ K = cdr(K);
+ }
+ }
+ }else{
+ V=ltov(vars(P));
+ N=length(V);
+ MR=newvect(N);
+ for(I=0;I<N;I++){
+ MR[I]=mydeg(Q,V[I]);
+ Q=mycoef(Q,MR[I],V[I]);
+ }
+ if(type(Q)>1) return 0;
+ }
+ if(L==1){
+ for(I=0;I<N;I++)
+ P=mycoef(P,MR[I],V[I]);
+ return P;
+ }
+ for(I=1;I<N;I++){ /* sorted by required degrees */
+ for(K1=MR[I],K2=V[I],J=I-1; J>=0 && MR[J]<K1; J--);
+ for(II=I-1;II>J;II--){
+ MR[II+1]=MR[II];V[II+1]=V[II];
+ }
+ MR[II+1]=K1;V[II+1]=K2;
+ }
+ for(NN=N; N>0 && MR[N-1]==0; N--);
+ Mon=[];Coe=[];Q=P;
+ while(Q!=0){
+ M=newvect(N);
+ for(R=Q,F=I=0,MT=1;I<NN;I++){
+ K=mydeg(R,V[I]);
+ R=mycoef(R,K,V[I]);
+ if(I<N) M[I]=K;
+ if(K>0) MT*=V[I]^K;
+ if(K>MR[I]) F=1;
+ }
+ Q -= R*MT;
+ if(F==0){
+ Mon=cons(M,Mon);
+ Coe=cons(R,Coe);
+ }
+ }
+ Mon=ltov(reverse(Mon));
+ Coe=ltov(reverse(Coe));
+ Len=length(Mon);
+ S=newvect(Len);
+ for(JL=0; JL<Len;JL++){
+ if(L*Mon[JL][0]<MR[0]) break;
+ }
+ S[0]=L;
+
+ K0=Mon[0][0];
+ K=L*K0-MR[0];
+ for(I=II=0;II<Len && K>=0;II++){
+ if((K1=K0-Mon[0][II])>0){
+ while(K>K1 && S[I]>0){
+ S[I]--;S[II]++;
+ K-=K1;
+ I=II;
+ K0=Mon[0][II];
+ }
+ }else break;
+ }
+
+ I=0;
+ while(1){
+ for(T=T0=J=JP=0; J<Len; J++){
+ if(S[J]!=0){
+ if(T0==0 && J>=JL) return Coef;
+ JP=J;T0=1;
+ T+=S[J]*Mon[J][I];
+ }
+ }
+ if(T==MR[I]){
+ if(++I<N) continue;
+ for(TT=1,J=1; J<=L; J++) /* find a solution */
+ TT*=J;
+ for(J=0;J<Len;J++){
+ if(S[J]!=0){
+ TT*=Coe[J]^S[J];
+ for(II=S[J]; II>1; II--)
+ TT/=II;
+ }
+ }
+ Coef+=TT;
+ if(TP==1 && type(Coef)==3) Coef=red(Coef);
+ if(JP<Len-2 && S[JP]>1){
+ S[JP]-=2;S[JP+1]++;S[JP+2]++;
+ }else{
+ for(JT=JP-1;JT>=0&&S[JT]==0;JT--);
+ if(JT<0) break;
+ if(JT==JP-1){
+ S[JT]--;
+ if(JP<Len-1)
+ S[JP+1]++;
+ else
+ S[JP]++;
+ }else{
+ S[JT]--;
+ S[JT+1]+=S[JP]+1;
+ S[JP]=0;
+ }
+ }
+ I=0;
+ continue;
+ }
+ if(JP<Len-1){
+ for(JP1=JP+1;JP1<Len-1;JP1++){
+ if(Mon[JP1][I]!=Mon[JP][I]) break;
+ }
+
+ if(I>0 && Mon[JP1][0] < Mon[JP][0]){
+ S[JP]--;S[Len-1]++;JP=JP-1;
+ }else{
+
+ S[JP]--;
+ if(JP1<Len){
+ S[JP1]++;
+ }else{
+ S[JP1-1]++;
+ }
+ }
+ }
+ if(JP==Len-1){
+ for(JT=JP-1;JT>=0 && S[JT]==0;JT--);
+ if(JT<0) break;
+ S[JT]--;
+ if(JT==JP-1){
+ S[JP]++;
+ }else{
+ S[JT+1]+=S[JP]+1;
+ S[JP]=0;
+ }
+ }
+ I=0;
+ }
+ return Coef;
+}
+
+def prehombf(P,Q)
+{
+ if((Mem=getopt(mem))!=1 && Mem!=-1)
+ return prehombfold(P,Q);
+ if(Q==0) Q=P;
+ V=ltov(vars(P));
+ N=length(V);
+ for(I=1;I<N;I++){ /* sorted by required degrees */
+ for(K=mydeg(P,V[I]),K1=V[I],J=I-1; J>=0 && mydeg(P,V[J])<K; J--);
+ for(II=I-1;II>J;II--) V[II+1]=V[II];
+ V[II+1]=K1;
+ }
+ S=newvect(N);T=newvect(N);U=newvect(N);
+ for(R=P,M=1,Deg=I=0;I<N;I++){ /* extreme vector */
+ Deg+=(S[I]=mydeg(R,V[I]));
+ R=mycoef(R,S[I],V[I]);
+ }
+ DR=[[-1,0]];
+ if((R1=N/Deg)!=1){
+ DR=cons([-R1,0],DR);
+ Sft=1;
+ }else Sft=0;
+ if(Deg%2==0) Sg=1;
+ else Sg=-1;
+ for(I=0,R=R2=1,QQ=Q; 2*I+Sft < Deg; I++){
+ if(Mem==-1){
+ print(I+1,0);print("/",0);print(idiv(Deg-Sft+1,2),0);print(" ",2);
+ }
+ Coef=0;
+ Q=QQ;
+ while(Q!=0){
+ for(R=Q,J=0,RR=1;J<N;J++){
+ T[J]=mydeg(R,V[J]);
+ R=mycoef(R,T[J],V[J]);
+ if(T[J]>0) RR*=V[J]^T[J];
+ }
+ Q-=R*RR;
+ for(J=0,CC=R;J<N;J++){
+ U[J]=I*S[J]+T[J];
+ for(II=0; II<T[J]; II++)
+ CC*=(U[J]-II);
+ }
+ CC*=pcoef(P,I+1,[V,U]);
+ if(Mem==-1) print("*",2);
+ Coef+=CC;
+ }
+ DR=cons([I,Coef],DR);
+ DR=cons([-R1-1-I,Sg*Coef],DR);
+ if(Mem==-1) print("");
+ }
+ P = polbyvalue(DR,s);
+ return fctr(P);
+}
+
+def prehombfold(P,Q)
+{
+ V = vars(P);
+ if(Q==0) Q=P;
+ for(Deg=0, R=P, V1=V, DD=[]; V1!=[]; V1=cdr(V1)){
+ VT = car(V1);
+ D = mydeg(R,VT);
+ R = mycoef(R,D,VT);
+ Deg += D;
+ X = makev(["d",VT]);
+ Q = subst(Q,VT,X);
+ DD=cons([VT,X],DD);
+ }
+ DR=[[-1,0]];
+ NV=length(V);
+ if((R1=NV/Deg)!=1){
+ DR=cons([-R1,0],DR);
+ Sft=1;
+ }else
+ Sft=0;
+ if(Deg%2==0)
+ Sg=1;
+ else Sg=-1;
+ for(I = 0, R=R2=1; 2*I+Sft < Deg; I++){
+ R = R2;
+ R2 = R*P;
+ S = appldo(Q,R2,DD);
+ QQ = sdiv(S,R);
+ DR=cons([I,QQ],DR);
+ DR=cons([-R1-1-I,Sg*QQ],DR);
+ }
+ P = polbyvalue(DR,s);
+ return fctr(P);
+}
+
+def sub3e(P0,P1,P2,N0,N1,N)
+{
+ R = x^N0*(x-1)^N1*dx^N;
+ for(V = I = 1, J = 1; I <= N; I++){
+ S = 0;
+ M = N-I;
+ if(I <= N0){
+ T = mycoef(P0,N0-I,x);
+ S += T;
+ R += T*x^(N0-I)*(x-1)^N1*dx^M;
+ K1 = N0-I+1;
+ }else
+ K1 = 0;
+ if(I <= N1){
+ T = mycoef(P1,N1-I,x);
+ S += T;
+ R += T*x^N0*(x-1)^(N1-I)*dx^M;
+ K2 = N0-1;
+ }else
+ K2 = N-I;
+ for(K = K1; K <= K2; K++){
+ if(K == K2){
+ R += (mycoef(P2,N-I,x)-S)*x^K*(x-1)^(M-K)*dx^M;
+ continue;
+ }
+ R += strtov("r"+rtostr(V))*x^K*(x-1)^(M-K)*dx^M;
+ S += strtov("r"+rtostr(V++));
+ }
+ }
+ if(V > 1)
+ mycat([V-1, "accessory parameters: r1,r2,..."]);
+ return R;
+}
+
+def fuchs3e(P,Q,R)
+{
+ return getbygrs([R,P,Q],3);
+}
+
+def okubo3e(P,Q,R)
+{
+ if(getopt(opt)==1){
+ N=length(R);
+ M1=N-length(P);M2=N-length(Q);
+ V=(M1-1)*(M2-1);
+ if(V>0) mycat([V, "accessory parameters"]);
+ return getbygrs([R,cons([M1,0],P),cons([M2,0],Q)],3);
+ }
+ S = 0;
+ V = -1;
+ L = newvect(3,[[],[],[]]);
+ N = newvect(3,[0,0,0]);
+ if(type(R) < 4){
+ I = -1;
+ V = 3;
+ }else{
+ I = 2;
+ V = -1;
+ }
+ for( ; I >= 0; I--){
+ if(I == 2)
+ U = R;
+ else if(I == 1)
+ U = Q;
+ else
+ U = P;
+ for( ; length(U); U = cdr(U)){
+ T = car(U);
+ if( T == "?"){
+ if(V < 0)
+ V = I;
+ else
+ return 0;
+ }else{
+ if(I == 2)
+ L[I] = cons(-T, L[I]);
+ else
+ L[I] = cons(T, L[I]);
+ S += T;
+ }
+ N[I]++;
+ }
+ }
+ if(V == 3){
+ N[2] = N[0] + N[1];
+ P2 = x^N;
+ for(I = 1; I <= N; I++)
+ P2 += makev([R,I])*x^(N-I);
+ }else{
+ if(N[0]+N[1] != N[2]){
+ print("Number of exponents are wrong",0);
+ return -1;
+ }
+ S -= N[0]*N[1];
+ if(V < 0){
+ if(S != 0){
+ mycat(["Viorate Fuchs relation ->",S]);
+ return -2;
+ }
+ }else{
+ if(V != 2)
+ S = -S;
+ L[V] = cons(S, L[V]);
+ }
+ P2 = polinsft(polbyroot(L[2],x),x);
+ }
+ P0 = polinsft(mysubst(polbyroot(L[0],x),[x,x+N[1]]),x);
+ P1 = polinsft(mysubst(polbyroot(L[1],x),[x,x+N[0]]),x);
+ return sub3e(P0,P1,P2,N[0],N[1],N[2]);
+}
+
+/* N = 2*M (N-M = M) or 2*M+1 (N-M = M+1)
+ 0 : 0 1 ..... M-1 B B+1 ... B+N-M-2 A
+ 1 : C C+1 ... C+M-1 0 1 .... N-M-2 N-M-1
+ */
+def eosub(A,B,C,N)
+{
+ M = N%2;
+ P = [];
+ Q = [];
+ P = cons(A,P);
+ for(I = 0; I < N-M-1; I++)
+ P = cons(B+I,P);
+ for(I = 0; I < M; I++)
+ Q = cons(C+I,Q);
+ P = okubo3e(P,Q,s);
+
+ C = newvect(2);
+ L = newvect(2);
+ C[1] = chkexp(P,[x,dx],0,b,N-M-1);
+ C[0] = chkexp(P,[x,dx],1,c,M);
+ for(LL = K = 0; K < 2; K++){
+ L[K] = length(C[K]);
+ C[K] = ltov(C[K]);
+ if(L[K] > LL)
+ LL = L[K];
+ }
+ JJ = 0;
+
+ for(I = 1; Do; I++){
+ Do = 0;
+ S = makev(["r",I]);
+ for(J = JJ; J < LL; J++){
+ JJ = LL;
+ for(K = 0; K < 2; K++){
+ if(J >= L[K] || C[K][J] == 0)
+ continue;
+ if(J < JJ)
+ JJ = J;
+ if(Do == 1){
+ CC = C[K];
+ CC[J] = mysubst(CC[J], [S, Var]);
+ continue;
+ }
+ if(mydeg(C[K][J]) >= 1){
+ if(mydeg(C[K][J]) > 1){
+ print("Internal error");
+ return;
+ }
+ Var = getroot(C[K][J],S);
+ Var = Var[0];
+ CC = C[K];
+ CC[J] = 0;
+ P = mysubst(P, [S, Var]);
+ Do = 1;
+ J = JJ - 1;
+ K++;
+ }
+ }
+ }
+ }
+ if(JJ != L){
+ print("Internal error (non Rigid)");
+ return;
+ }
+ return P;
+}
+
+def even4e(X,Y){
+ if(length(X) != 4 || length(Y) != 2){
+ print("Usage: even4e([a,b,c,d],[e,f])");
+ print("0: 0 1 e f");
+ print("1; 0 1 * *+1");
+ print("infty: a b c d");
+ return;
+ }
+ S = -3;
+ for(I = 0; I < 4; I++){
+ S += X[I];
+ if(I < 2)
+ S += Y[I];
+ }
+ S = -S/2;
+ P = okubo3e(Y,[S,"?"],X);
+ T = chkexp(P,x,1,S,2);
+ T = getroot(T[0],r1);
+ return mysubst(P,[r1,T[0]]);
+}
+
+def odd5e(X,Y)
+{
+ if(length(X) != 5 || length(Y) != 2){
+ print("Usage: spec6e([a,b,c,d,e],[f,g])");
+ print("0: 0 1 f g g+1");
+ print("1: 0 1 2 * *+1");
+ print("infty: a b c d e");
+ return;
+ }
+ S = -4;
+ for(I = 0; I < 5; I++){
+ S += X[I];
+ if(I < 2)
+ S += Y[I];
+ }
+ S = -(S + Y[1])/2;
+ P = okubo3e([Y[0],Y[1],Y[1]+1],[S,"?"],X);
+ T = chkexp(P,x,1,S,2);
+ T = getroot(T[0],r1);
+ P = mysubst(P,[r1,T[0]]);
+ T = chkexp(P,x,0,Y[1],2);
+ T = getroot(T[0],r2);
+ return mysubst(P,[r2,T[0]]);
+}
+
+def extra6e(X,Y)
+{
+ if(length(X) != 6 || length(Y) != 2){
+ print("Usage: extra6e([a,b,c,d,e,f],[g,h])");
+ print("0: 0 1 g g+1 h h+1");
+ print("1: 0 1 2 3 * *+1");
+ print("infty: a b c d e f");
+ return;
+ }
+ S = -5;
+ for(I = 0; I < 6; I++){
+ S += X[I];
+ if(I < 2)
+ S += 2*Y[I];
+ }
+ S = -S/2;
+ P = okubo3e([Y[0],Y[0]+1,Y[1],Y[1]+1],[S,"?"],X);
+ T = chkexp(P,x,1,S,2);
+ T = getroot(T[0],r1);
+ P = mysubst(P,[r1,T[0]]);
+ T = chkexp(P,x,0,Y[0],2);
+ T = getroot(T[0],r3);
+ P = mysubst(P,[r3,T[0]]);
+ T = chkexp(P,x,0,Y[1],2);
+ T = getroot(T[0],r2);
+ return mysubst(P,[r2,T[0]]);
+}
+
+def rigid211(X,Y,Z)
+{
+ if(length(X) != 2 || length(Y) != 2 || length(Z) != 2){
+ print("Usage: rigid211([a,b],[c,d],[e,f])");
+ print("0: 0 1 a b");
+ print("1: 0 1 c d");
+ print("infty: e e+1 f *");
+ return;
+ }
+ P = okubo3e(X,Y,[Z[0],Z[0]+1,Z[1],"?"]);
+ T = chkexp(P,x,"infty",Z[0],2);
+ T = getroot(T[0],r1);
+ return mysubst(P,[r1,T[0]]);
+}
+
+def solpokuboe(P,L,N)
+{
+ if(type(N) > 1 || ntype(N) != 0 || dn(N) != 1){
+ mycat(["Irrigal argument :", N]);
+ return 0;
+ }
+ L = vweyl(L);
+ DD=N+1;
+ for(U = S = L[0]^N; U != 0; ){
+ D = mydeg(U,L[0]);
+ if(D>=DD){
+ mycat(["Internal Error",D,DD]);
+ return -1;
+ }
+ DD=D;
+ UU = L[0]^D;
+ R = appldo(P,UU,L);
+ if(mydeg(R,L[0]) > D){
+ printf("Bad operator\n");
+ return 0;
+ }
+ CC = mycoef(R,D,L[0]);
+ if(D == N){
+ P -= (E = CC);
+ U = R-E*U;
+ continue;
+ }
+ if(CC == 0){
+ printf("No polynomial\n");
+ return 0;
+ }
+ CC= mycoef(U,D,L[0])/CC;
+ S = red(S - UU*CC);
+ U = red(U - R*CC);
+ }
+ return [nm(S),E];
+}
+
+def stoe(M,L,N)
+{
+ L = vweyl(L);
+ Size = size(M);
+ S = Size[0];
+ NN = 0;
+ if(type(N) == 4){
+ NN=N[0]; N=N[1];
+ }else if(N < 0){
+ NN=-N; N=0;
+ }
+ if(S != Size[1] || N >= S || NN >= S)
+ return;
+ D = newmat(S+1,S+1);
+ MN = dupmat(M);
+ MD = newmat(S,S);
+ DD = D[0];
+ DD[N] = 1; DD[S] = 1;
+ for(Lcm = I = 1; ; ){
+ DD = D[I];
+ MM = MN[N];
+ for(J = 0; J < S; J++){
+ DD[J] = MM[J];
+ Lcm = lcm(dn(DD[J]),Lcm);
+ }
+ DD[S] = L[1]^I;
+ for(J = 0; J <= S; J++)
+ DD[J] = red(DD[J]*Lcm);
+ if(I++ >= S)
+ break;
+ if(I==S && NN>0){
+ DD = D[I];
+ DD[0]=-z_zz; DD[NN]=1;
+ break;
+ }
+ Mm = dupmat(MN*M);
+ for(J = 0; J < S; J++){
+ for(K = 0; K < S; K++)
+ MN[J][K] = red(diff(MN[J][K],L[0])+Mm[J][K]);
+ }
+ }
+#if 0
+ P = fctr(mydet2(D));
+#else
+ P = fctr(det(D));
+#endif
+ for(I = R = 1; I < length(P); I++){
+ if(mydeg(P[I][0],L[1]) > 0)
+ R *= P[I][0]^P[I][1];
+ }
+ if(NN > 0)
+ R = -red(coef(R,0,z_zz)/coef(R,1,z_zz));
+ return R;
+}
+
+def dform(L,X)
+{
+ if(type(X)==2) X=[X];
+ if(type(L[0])!=4) L=[L];
+ if(type(X)==4) X=ltov(X);
+ M=length(X);
+ if(length(car(L))==2){
+ R=newvect(M);
+ for(LL=L; LL!=[]; LL=cdr(LL)){
+ for(I=0; I<M; I++){
+ RT=rmul(car(LL)[0],mydiff(car(LL)[1],X[I]));
+ R[I] = (R[I]==0)?RT:radd(R[I],RT);
+ }
+ }
+ Dif=getopt(dif);
+ for(RR=[], I=M-1; I>=0; I--){
+ if(Dif==1) RR=cons([1,R[I],X[I]],RR);
+ else RR=cons([R[I],X[I]],RR);
+ }
+ if(Dif==1) RR=dform(RR,X);
+ return RR;
+ }else if(length(car(L))!=3) return L;
+ N=M*(M-1)/2;
+ R=newvect(N);
+ S=newvect(N);
+ for(LL=L; LL!=[]; LL=cdr(LL)){
+ for(I=K=0; I<M; I++){
+ for(J=I+1; J<M; J++, K++){
+ if(LL==L) S[K]=[X[I],X[J]];
+ LT=car(LL);
+ R1=mydiff(LT[2],X[J]);
+ R2=mydiff(-LT[2],X[I]);
+ if(R2==0){
+ if(R1==0) continue;
+ R1=rmul(mydiff(LT[1],X[I]),R1);
+ }else if(R1==0){
+ R1=rmul(mydiff(LT[1],X[J]),R2);
+ }else
+ R1=rmul(mydiff(LT[1],X[I]),R1)+rmul(mydiff(LT[1],X[J]),R2);
+ R1=rmul(LT[0],R1);
+ R[K] = (R[K]==0)?R1:radd(R[K],R1);
+ }
+ }
+ }
+ for(RR=[],I=N-1; I>=0; I--)
+ RR=cons([R[I],S[I][0],S[I][1]],RR);
+ return RR;
+}
+
+def polinvsym(P,Q,Sym)
+{
+ N = length(Q);
+ T = polbyroot(Q,zz);
+ for(I = 1; I <= N; I++){
+ P = mysubst(P,[makev([Sym,I]), (-1)^I*coef(T,N-I,zz)]);
+ }
+ return P;
+}
+
+def polinsym(P,Q,Sym)
+{
+ if(type(P) == 3){
+ P = red(P);
+ if(type(P) == 3){
+ D = polinsym(dn(P),Q,Sym);
+ if(D == 0)
+ return 0;
+ return polinsym(nm(P),Q,Sym)/D;
+ }
+ }
+ N = length(Q);
+ V = newvect(N+1);
+ S = newvect(N+1);
+ E = newvect(N+1);
+ E0 = newvect(N+1);
+ T = polbyroot(Q,zzz);
+ for(J = 1; J <= N; J++){
+ K = coef(T,N-J,zzz);
+ if(J % 2)
+ K = -K;
+ S[J] = K;
+ V[J] = makev([Sym,J]);
+ }
+ K = deg(P,Q[0]);
+ for(J = 0; J <= N; J++)
+ E0[J] = K+1;
+ E[0] = K+1;
+ while(deg(P,Q[0]) > 0){
+ for(P0 = P, J = 1; J <= N; J++){
+ E[J] = deg(P0,Q[J-1]);
+ P0 = coef(P0,E[J],Q[J-1]);
+ }
+ /* P0*Q[0]^E[1]*Q[1]^E[2]*... E[1] >= E[2} >= ... */
+ for(J = 1; J <= N; J++){
+ if(E[J] < E0[J])
+ break;
+ if(E[J-1] < E[J])
+ J = N;
+ }
+ if(J > N){
+ print("Not symmetric");
+ return 0;
+ }
+ for(J = 1; J <= N; J++)
+ E0[J] = E[J];
+ for(J = N; J > 1; J--){
+ if(E[J] != 0)
+ for(K = 1; K < J; K++)
+ E[K] -= E[J];
+ }
+ for(R0 = P0, K = 1; K <= N; K++){
+ if(E[K] > 0)
+ P0 *= S[K]^E[K];
+ R0 *= V[K]^E[K];
+ }
+ P += R0 - P0;
+ }
+ return P;
+}
+
+def tohomog(P,L,V)
+{
+ while(length(L)>0){
+ P = mysubst(P,[car(L),car(L)/V]);
+ L = cdr(L);
+ }
+ P = red(P);
+ N = mindeg(dn(P),V);
+ if(N > 0)
+ P = red(P*V^N);
+ N = mindeg(dn(P),V);
+ if(N > 0)
+ P = red(P/(V^N));
+ return P;
+}
+
+def substblock(P,X,Q,Y)
+{
+ P = red(P);
+ if(deg(dn(P),X) > 0)
+ return substblock(nm(P),X,Q,Y)/substblock(dn(P),X,Q,Y);
+ N = mydeg(Q,X);
+ if(N < 1)
+ return P;
+ R = mycoef(Q,N,X);
+ while(M = mydeg(P,X), M >= N)
+ P = red(P - mycoef(P,M,X)*(Q-Y)*X^(M-N)/R);
+ return P;
+}
+
+def okuboetos(P,L)
+{
+ L = vweyl(L); X = L[0]; DX = L[1];
+ N = mydeg(P,DX);
+ C = mycoef(P,N,DX);
+ K = mydeg(C,X);
+ if(K > N){
+ print("Irregular singularity at infinity")$
+ return 0;
+ }
+ if(N > K)
+ P *= x^(N-K);
+
+ L = getroot(mycoef(P,N,DX),x);
+ L = ltov(reverse(L));
+ if(length(L) != N || N == 0){
+ print("Cannot get exponents")$
+ return 0;
+ }
+ if( type(LL = getopt(diag)) == 4 ){
+ LL = ltov(LL);
+ if(length(LL) != N){
+ mycat(["Length of the option should be", N]);
+ return 0;
+ }
+ Tmp = newvect(N);
+ for(I = N-1; I >= 0; I--){
+ for(LLT = LL[I], J = N-1; J >=0 ; J--){
+ if(LLT == L[J] && Tmp[J] == 0){
+ Tmp[J] = 1;
+ break;
+ }
+ }
+ if(J < 0){
+ print("option is wrong");
+ return 0;
+ }
+ }
+ L = LL;
+ }
+ P /= mycoef(C,N,X);
+ A = newmat(N,N);
+ AT = newmat(N+1,N+1);
+ Phi= newvect(N+1);
+ Phi[0] = 1;
+ for(J = 0; J < N; J++)
+ Phi[J+1] = Phi[J]*(X-L[J]);
+ for(ATT = AT[N], J = 0; J < N; J++)
+ ATT[J] = mycoef(P,J,DX);
+
+ for(K = 1; K <= N; K++){
+ for(J = N; J >= K; J--){
+ Aj = A[J-1];
+ SIG = AT[J][J-K];
+ for(I = 0; I <= K-2; I++)
+ SIG += Aj[J-I-1]*AT[J-I-1][J-K];
+ if(K == 1)
+ DAT = mydiff(Phi[J-1],X);
+ else
+ DAT = mydiff(AT[J-1][J-K],X);
+ Aj[J-K] = -SIG+(X-L[J-1])*DAT;
+ Aj[J-K] /= Phi[J-K];
+ Aj[J-K] = mysubst(Aj[J-K],[X,L[J-1]]);
+ if(J < K+1) continue;
+ ATj = AT[J-1];
+ ATj[J-K-1] = SIG+Aj[J-K]*Phi[J-K];
+ ATj[J-K-1] /= (X - L[J-1]);
+ ATj[J-K-1] = red(ATj[J-K-1]-DAT);
+ }
+ }
+
+ ATT = newmat(N,N);
+ for(J = 0; J < N; J++){
+ for(K = 0; K < N; K++){
+ ATj = ATT[J];
+ ATj[K] = AT[J][K];
+ }
+ ATj[J] = Phi[J];
+ if(J < N-1){
+ ATj = A[J];
+ ATj[J+1] = 1;
+ }
+ }
+ return [L,A,ATT];
+}
+
+def heun(X,P,R)
+{
+ if(type(X) != 4 || length(X) != 5){
+ print("Usage: huen([a,b,c,d,e],p,r)");
+ print("0: 0 c");
+ print("1: 0 d");
+ print("p: 0 e");
+ print("infty: a b");
+ print("Fuchs relation: a+b+1 = c+d+e");
+ return;
+ }
+ S = 1;
+ V = -1;
+ X = ltov(X);
+ for(I = 0; I < 5; I++){
+ if(X[I] == "?"){
+ if(V >= 0)
+ return;
+ V = I;
+ }else if(I < 2){
+ S += X[I];
+ }else
+ S -= X[I];
+ }
+ if(V >= 0){
+ if(V < 2)
+ X[V] = -S;
+ else
+ X[V] = S;
+ }else if(S != 0){
+ mycat(["Fuch relation:", S,"should be zero!"]);
+ return;
+ }
+ return
+ x*(x-1)*(x-P)*dx^2
+ + (X[2]*(x-1)*(x-P)+X[3]*x*(x-P)+X[4]*x*(x-1))*dx
+ + X[0]*X[1]*(x-R);
+}
+
+def fspt(M,T)
+{
+ if(type(M)==7) M=s2sp(M);
+ if(T == 3) /* 3: cut 0 */
+ return cutgrs(M);
+ if(T == 4 || T== 5){ /* 4: short 5: long */
+ for(MN = [] ; M != []; M = cdr(M)){
+ MT = car(M);
+ for(MNT = []; MT != []; MT = cdr(MT)){
+ if(type(car(MT)) <= 3){
+ if(T == 4) MNT = cons(car(MT),MNT);
+ else MNT = cons([1,car(MT)],MNT);
+ }else{
+ if(T == 5 || car(MT)[0] > 1) MNT = cons(car(MT),MNT);
+ else if(car(MT)[0] == 1) MNT = cons(car(MT)[1],MNT);
+ }
+ }
+ MN = cons(reverse(MNT), MN);
+ }
+ return reverse(MN);
+ }
+ if(type(M[0][0]) == 4){
+ for(MN = [] ; M != []; M = cdr(M)){
+ MT = car(M);
+ for(MNT = []; MT != []; MT = cdr(MT))
+ MNT = cons(car(MT)[0], MNT);
+ MN = cons(reverse(MNT), MN);
+ }
+ return fspt(reverse(MN),T);
+ }
+ if(T == 0) /* 0: sp */
+ return M;
+ for(MN = [] ; M != []; M = cdr(M)){
+ MT = qsort(ltov(car(M)));
+ L = length(MT);
+ for(MNT = [], I = 0; I < L; I++)
+ MNT = cons(MT[I], MNT);
+ MN = cons(MNT, MN);
+ }
+ MN = reverse(MN);
+ if(T==6) return MN; /* 7: sort */
+ L = length(MN);
+ for(M = MN; M != []; M = cdr(M)){
+ for(I = 0, MT = car(M); MT != []; MT = cdr(MT))
+ I += car(MT);
+ if(OD == 0)
+ OD = I;
+ else if(OD != I || OD == 0)
+ return 0;
+ }
+ ALL = [MN];
+ RD=[];
+ while(OD > 0){
+ for(S = 0, MT = MN; MT != []; MT = cdr(MT))
+ S += car(MT)[0];
+ S -= (L-2)*OD;
+ if(S <= 0){
+ if(T==7) return [ALL[0],ALL[length(ALL)-1],RD];
+ return (T==1)?MN:ALL;
+ }
+ RD=cons([S,0,0],RD);
+ for(NP=0, M = [], MT = MN; MT != []; NP++, MT = cdr(MT)){
+ MTT = car(MT);
+ I = MTT[0] - S;
+ if(I < 0){
+ if(I+OD!=0) return 0;
+ if(T==7) return [ALL[0],ALL[length(ALL)-1],cdr(RD)];
+ return (T==1)?MN:ALL;
+ }
+ MTT = cdr(MTT);
+ NC=1; DO=0;
+ for(MNT = []; MTT != []; MTT = cdr(MTT)){
+ if(MTT[0] > I){
+ if(DO==0) RD=cons([MTT[0]-I,NP,NC++],RD);
+ MNT = cons(MTT[0], MNT);
+ }
+ else if(MTT[0] <= I && I != 0){
+ DO=1;
+ MNT = cons(I, MNT);
+ I = 0;
+ if(MTT[0] > 0)
+ MNT = cons(MTT[0], MNT);
+ }
+ }
+ if(I > 0)
+ MNT = cons(I,MNT);
+ M = cons(reverse(MNT), M);
+ }
+ MN = reverse(M);
+ ALL = cons(MN,ALL);
+ OD -= S;
+ }
+}
+
+def abs(X)
+{
+ if(vars(X)!=[]) return todf(os_md.abs,[X]);
+ if(type(X)==4){
+ P=X[1];X=X[0];
+ }else P=0;
+ if(type(X)==1){
+ if((T=ntype(X))<2 || T==3){
+ if(X<0) X=-X;
+ }else if(T==4) X=P?pari(abs,X,P):pari(abs,X);
+ }
+ return X;
+}
+
+def calc(X,L)
+{
+ if(type(X)<4||type(X)==7){
+ if(type(L)==4||type(L)==7){
+ V=L[1];
+ if(type(X)!=7){
+ if((L0=L[0])=="+") X+=V;
+ else if(L0=="-") X-=V;
+ else if(L0=="*") X*=V;
+ else if(L0=="/") X/=V;
+ else if(L0=="^") X^=V;
+ }
+ if((L0=L[0])==">") X=(X>V);
+ else if(L0=="<") X=(X<V);
+ else if(L0=="=") X=(X==V);
+ else if(L0==">=") X=(X>=V);
+ else if(L0=="<=") X=(X<=V);
+ else if(L0=="!=") X=(X!=V);
+ }else if(type(L)==7&&type(X)<4){
+ if(L=="neg") X=-X;
+ else if(L=="abs") X=abs(X);
+ else if(L=="neg") X=-X;
+ else if(L=="sqr") X*=X;
+ else if(L=="inv") X=1/X;
+ else if(L=="sgn"){
+ if(X>0)X=1;
+ else if(X<0) X=-1;
+ }
+ }
+ }
+ return X;
+}
+
+def isint(X)
+{
+ if(X==0||(type(X)==1 && ntype(X)==0 && dn(X)==1)) return 1;
+ return 0;
+}
+
+def israt(X)
+{
+ if(X==0||(type(X)==1 && ntype(X)==0)) return 1;
+ return 0;
+}
+
+def iscrat(X)
+{
+ if(X==0 || (type(X)==1 && israt(real(X)) && israt(imag(X)))) return 1;
+ return 0;
+}
+
+def isalpha(X)
+{
+ return ((X>64&&X<91)||(X>96&&X<123))?1:0;
+}
+
+def isnum(X)
+{
+ return (X>47&&X<58)?1:0;
+}
+
+def isalphanum(X)
+{
+ return (isalpha(X)||isnum(X))?1:0;
+}
+
+def isdecimal(X)
+{
+ if(type(X)!=7) return 0;
+ F=S=0;
+ L=strtoascii(X);
+ while(L!=[]&&car(L)==32) L=cdr(L);
+ if(L!=[]&&car(L)==45) L=cdr(L); /* - */
+ while(L!=[]&&isnum(car(L))){
+ F=1; L=cdr(L);
+ }
+ while(L!=[]&&car(L)<33){
+ S=1;L=cdr(L);
+ }
+ if(L==[]) return F;
+ else if(S||car(L)!=46) return 0; /* . */
+ L=cdr(L);F=0;
+ while(L!=[]&&isnum(car(L))){
+ F=1; L=cdr(L);
+ }
+ while(L!=[]&&car(L)<33) L=cdr(L);
+ return (L==[])?F:0;
+}
+
+def isvar(X)
+{
+ return ([X]==vars(X)&&vtype(X)<3)?1:0;
+}
+
+def isyes(F)
+{
+ if((CC=getopt(set))==1){
+ IsYes=(type(F[0])==4)?F:[F];
+ return 1;
+ }else if(CC==0) return(IsYes);
+ if(type(CC)!=7)
+ CC=IsYes;
+ for(;CC!=[]; CC=cdr(CC)){
+ C=car(CC);
+ V=call(C[0],cons(F,C[1]));
+ if(type(C[2])!=4){
+ if(V!=C[2]) break;
+ }else{
+ if(C[2][0]!="" && V<C[2][0]) break;
+ if(C[2][1]!="" && V>C[2][1]) break;
+ }
+ }
+ return (CC==[])?1:0;
+}
+
+def isall(FN,M)
+{
+ if(type(M)<4 || type(M)>6) return ((*FN)(M)==0)?0:1;
+ if(type(M)==4){
+ for(;M!=[];M=cdr(M))
+ if((*FN)(car(M))==0) return 0;
+ }else if(type(M)==5){
+ K=length(M);
+ for(I=0;I<K;I++)
+ if((*FN)(M[I])==0) return 0;
+ }else if(type(M)==6){
+ K=size(M)[0];
+ for(I=0;I<K;I++)
+ if (isall(FN,M[I])==0) return 0;
+ }
+ return 1;
+}
+
+def sproot(MP,T)
+{
+ if((I=str_chr(T,0,","))>0){
+ if(type(MP)==7) M=s2sp(MP);
+ else M=chkspt(MP|opt=0);
+ if(I==length(M[0])){
+ N=s2sp(T);S=SM=SN=K=0;
+ for(MM=M,NN=N;MM!=[];MM=cdr(MM),NN=cdr(NN),K++){
+ for(MT=car(MM),NT=car(NN);MT!=[];MT=cdr(MT),NT=cdr(NT)){
+ S+=car(MT)*car(NT);
+ if(K==0){
+ SM+=car(MT);SN+=car(NT);
+ }
+ }
+ }
+ return S-(length(M)-2)*SM*SN;
+ }
+ }
+ MM=chkspt(MP|opt=7);
+ if(T=="base") return MM;
+ Keep=(getopt(keep)==1)?1:0;
+ Null=getopt(null);
+ Only=getopt(only);
+ if(type(Only)!=1) Only=7;
+ M0=MM[0];
+ M1=MM[1];
+ M=MM[2];
+ if(T=="length") return length(M);
+ if(T=="height"){
+ for(J=2,S=M1[0][0],M2=M1; M2!=[]; M2=cdr(M2)){
+ for(MT=cdr(car(M2)); MT!=[]; J++, MT=cdr(MT)){
+ S+= J*car(MT);
+ }
+ J=1;
+ }
+ return S;
+ }
+ for(OD=0, MT=M1[0]; MT!=[]; MT=cdr(MT)) OD+=car(MT);
+ if(T=="type"){
+ R=newvect(OD+1);
+ for(MT=M; MT!=[]; MT=cdr(MT)) R[MT[0][0]]++;
+ for(RR=[],I=OD; I>0; I--)
+ if(R[I]>0) RR=cons([R[I],I],RR);
+ return RR;
+ }
+ if(T=="part"||T=="pair"||T=="pairs"){
+ NP=length(M1);
+ LM=newvect(NP);
+ R=newvect(length(M));
+ for(K=0; K<NP; K++) LM[K]=length(M1[K]);
+ for(I=0,TM=M; TM!=[]; I++, TM=cdr(TM)){
+ V=newvect(NP);
+ for(K=0; K<NP; K++) V[K]=newvect(LM[K]);
+ TP=car(TM);
+ if(TP[2]==0){
+ for(K=0;K<NP;K++) V[K][0]=1;
+ for(J=0; J<I; J++){
+ VJ=R[J][1];
+ for(S=K=0;K<NP;K++) S+=VJ[K][0];
+ for(OD=0,K=0;K<LM[0];K++) OD+=VJ[0][K];
+ S-=(NP-2)*OD;
+ for(K=0;K<NP;K++) VJ[K][0]-=S;
+ }
+ }else{
+ K=TP[1]; P=TP[2];
+ V[K][P-1]=-1; V[K][P]=1;
+ for(J=0; J<I; J++){
+ VJ=R[J][1];
+ S=VJ[K][P]; VJ[K][P]=VJ[K][P-1]; VJ[K][P-1]=S;
+ }
+ }
+ R[I]=[TP[0],V];
+ }
+ if(T=="pair"||T=="pairs"){
+ MV=ltov(M1);
+ for(K=0; K<NP; K++) MV[K] = ltov(MV[K]);
+ for(RR=UU=SS=[],I=0; I<length(M); I++){
+ V=newvect(NP); W=newvect(NP); U=newvect(NP);
+ for(K=0; K<NP; K++){
+ U[K]=newvect(LM[K]); V[K]=newvect(LM[K]); W[K]=newvect(LM[K]);
+ }
+ S=R[I][0];
+ for(K=0; K<NP; K++){
+ for(Q=J=0; J<LM[K]; J++){
+ V[K][J] = S*(U[K][J] = R[I][1][K][J]);
+ Q+=(W[K][J] = MV[K][J] - V[K][J]);
+ }
+ }
+ if(Q>0 && iand(Only,1)==0) continue;
+ if(Q==0 && iand(Only,2)==0) continue;
+ if(Q<0 && iand(Only,4)==0) continue;
+ for(K=0; K<NP; K++){
+ V[K] = vtol(V[K]); W[K] = vtol(W[K]); U[K]=vtol(U[K]);
+ }
+ V=vtol(V); W=vtol(W);U=vtol(U);
+ if(Q<0) S=-S;
+ RR = cons([V,W], RR); UU = cons(U,UU); SS=cons(S,SS);
+ }
+ RR = reverse(RR); UU=reverse(UU); SS=reverse(SS);
+ if(getopt(dviout)==1 && (Null!=1 || RR!=[])){
+ Out=string_to_tb("\\begin{align}\\begin{split}"+s2sp(M1)+"&=");
+ for(I=0,R=RR, U=UU; R!=[]; I++, R=cdr(R), U=cdr(U)){
+ if(I>0) str_tb("\\\\\n &=",Out);
+ if(T=="pairs"){
+ if((S=SS[I])<0) S=-S;
+ if(S>1) str_tb([my_tex_form(S),"("],Out);
+ str_tb(s2sp(car(U)),Out);
+ if(S>1) str_tb(")",Out);
+ str_tb(" \\oplus ",Out);
+ if(SS[I]<0){
+#ifdef USEMODULE
+ str_tb(["-(",s2sp(mtransbys(os_md.abs,car(R)[1],[])),")"],Out);
+#else
+ str_tb(["-(",s2sp(mtransbys(abs,car(R)[1],[])),")"],Out);
+#endif
+ }else
+ str_tb(s2sp(car(R)[1]),Out);
+ }else
+ str_tb([s2sp(car(R)[0])," \\oplus ",s2sp(car(R)[1])],Out);
+ }
+ str_tb("\n\\end{split}\\end{align}",Out);
+ dviout(str_tb(0,Out)|keep=Keep);
+ }
+ return RR;
+ }
+ for(I=0; I<length(M); I++){
+ for(K=0; K<NP; K++) R[I][1][K] = vtol(R[I][1][K]);
+ R[I] = [R[I][0],vtol(R[I][1])];
+ }
+ R = vtol(R);
+ return [M0,M1,R];
+ }
+}
+
+def spgen(MO)
+{
+ Eq=(getopt(eq)==1)?1:0;
+ Sp=getopt(sp);
+ if(type(Sp)==7) Sp=s2sp(Sp);
+ St=getopt(str);
+ LP=getopt(pt);
+ F=getopt(std);
+ if(F!=1&&F!=-1) F=0;
+ if(type(LP)==4){
+ L0=LP[0]; L1=LP[1];
+ }else{
+ L0=0; L1=MO+1;
+ }
+ if(MO<=0){
+ MO=-MO;
+ if(iand(MO,1)==1) return [];
+ if(MO>1){
+ if(isMs()==0) return [];
+ Cmd="okubo "+rtostr(-MO);
+ MO/=2;
+ if(L1>0) Cmd=Cmd+"+"+rtostr(L0)+"-"+rtostr(L1);
+ else L1=MO+4;
+ Cmd=Cmd+" B";
+ Id=getbyshell(Cmd);
+ if(Id<0) return [];
+ B=[];
+ while((S=get_line(Id)) !=0){
+ P0=str_chr(S,1,":")+1;
+ if(P0>1){
+ P1=str_chr(S,P,"\n");
+ if(P1<0) P1=str_len(S);
+ B=cons(sub_str(S,P0,P1-1),B);
+ }
+ }
+ close_file(Id);
+ }else{
+ MO/=2;
+ if(L1<=1) L1=MO+4;
+BB=[
+["11,11,11,11","111,111,111","1^4,1^4,22","1^6,222,33"],
+["11,11,11,11,11","1^4,1^4,211","211,22,22,22","1^6,2211,33",
+"2211,222,222","22211,2^4,44","2^511,444,66","1^4,22,22,31",
+"2^5,3331,55","1^5,1^5,32","1^8,332,44","111,111,21,21","1^5,221,221"],
+["11,11,11,11,11,11","1^4,1^4,1^4","1^4,22,22,22","111,111,111,21",
+"1^6,21^4,33","21^4,222,222","221^4,2^4,44","2^41^4,444,66",
+"1^5,1^5,311","1^8,3311,44","1^6,222,321","321,33,33,33",
+"3321,333,333","33321,3^4,66","3^721,666,99","2^5,3322,55",
+"1^6,1^6,42","222,33,33,42","1^a,442,55","1^6,33,33,51",
+"222,222,33,51","1^9,333,54","2^7,554,77","1^5,2111,221",
+"2^41,333,441","1^7,2221,43","211,211,22,22","2211,2211,222",
+"22211,22211,44","1^4,211,22,31","2^411,3331,55","1^4,1^4,31,31",
+"22,22,22,31,31","1^7,331,331","2221,2221,331","111,21,21,21,21"],
+["11,11,11,11,11,11,11","111,111,111,111","1^6,1^6,33",
+"1^6,222,222","222,33,33,33","1^5,1^5,221",
+"1^4,211,22,22","1^4,1^4,22,31","22,22,22,22,31",
+"111,111,21,21,21","21^6,2^4,44","2221^6,444,66",
+"1^6,222,3111","3111,33,33,33","33111,333,333",
+"333111,3^4,66","3^5111,666,99","2^5,33211,55",
+"1^8,3221,44","3222,333,333","33222,3^4,66",
+"3^4222,666,99","1^6,1^6,411","222,33,33,411",
+"1^a,4411,55","2^4,2^4,431","431,44,44,44",
+"2^6,4431,66","4431,444,444","44431,4^4,88",
+"4^531,888,cc","1^a,433,55","1^7,1^7,52",
+"1^c,552,66","3^4,444,552","1^8,2^4,53",
+"1^8,44,44,71","3^5,555,771","21^4,2211,222",
+"221^4,22211,44","2221^4,3331,55","1^6,2211,321",
+"2^411,3322,55","1^7,322,331","2211,33,33,42",
+"3^42,4442,77","2211,222,33,51","3^51,5551,88",
+"2^611,554,77","2221,2221,322","2^41,2^41,54",
+"1^5,2111,2111","222111,333,441","1^7,22111,43",
+"1^5,1^5,41,41","1^9,441,441","22111,2221,331",
+"1^5,221,32,41","221,221,221,41","211,211,211,22",
+"2211,2211,2211","1^4,211,211,31","211,22,22,31,31",
+"1^4,22,31,31,31","1^5,32,32,32","221,221,32,32","21,21,21,21,21,21"],
+["11,11,11,11,11,11,11,11","1^4,1^4,22,22","1^8,2^4,44",
+"1^6,2211,222","2211,33,33,33","111,111,111,21,21",
+"1^5,1^5,2111","1^4,211,211,22","1^4,1^4,211,31",
+"211,22,22,22,31","1^4,22,22,31,31","111,21,21,21,21,21",
+"221^8,444,66","2^5,331^4,55","1^8,32111,44",
+"32211,333,333","332211,3^4,66","3^42211,666,99",
+"2^5,32221,55","1^7,1^7,511","1^c,5511,66",
+"3^4,444,5511","541,55,55,55","5541,555,555",
+"55541,5^4,aa","5^541,aaa,ff","1^8,1^8,62",
+"1^a1^4,662,77","1^a,55,55,91","2^71,555,87",
+"21^6,22211,44","221^6,3331,55","1^6,2211,3111",
+"2^411,33211,55","1^7,3211,331","2211,33,33,411",
+"3^42,44411,77","22211,2^4,431","2^511,4431,66",
+"1^8,332,431","3^42,4433,77","1^8,22211,53",
+"2221,2221,3211","221^5,333,441","1^7,21^5,43",
+"1^b,443,65","21^5,2221,331","2^51,3332,65",
+"21^4,21^4,222","221^4,221^4,44","1^6,21^4,321",
+"2221^4,3322,55","21^4,33,33,42","21^4,222,33,51",
+"2^51^4,554,77","2^4,3311,3311","3^411,4442,77",
+"321,321,33,33","3321,3321,333","33321,33321,66",
+"222,321,33,42","1^6,321,33,51","222,222,321,51",
+"1^9,3321,54","1^7,322,322","3^422,5551,88",
+"1^6,33,42,42","1^6,222,42,51","33,33,33,42,51",
+"1^6,1^6,51,51","222,33,33,51,51","1^b,551,551",
+"1^5,221,311,41","2^41,3321,441","22111,2221,322",
+"2^51,443,551","222111,2^41,54","21^4,2211,2211",
+"1^5,311,32,32","3331,3331,442","2211,2211,33,51",
+"221,221,311,32","22111,22111,331","1^5,2111,32,41",
+"2111,221,221,41","2111,221,32,32","211,211,211,211",
+"211,211,22,31,31","1^4,211,31,31,31","22,22,31,31,31,31"],
+["11,11,11,11,11,11,11,11,11","1^5,1^5,1^5","2^5,2^5,55",
+"111,111,111,111,21","2^41,333,333","1^4,1^4,211,22",
+"211,22,22,22,22","1^8,22211,44","1^4,1^4,1^4,31",
+"1^4,22,22,22,31","1^7,1^7,43","1^7,2221,331",
+"2221,2221,2221","1^6,21^4,222","21^4,33,33,33",
+"1^6,1^6,321","222,321,33,33","1^6,33,33,42",
+"222,222,33,42","1^6,222,33,51","222,222,222,51",
+"33,33,33,33,51","1^6,2211,2211","111,111,21,21,21,21",
+"1^5,1^5,32,41","1^5,221,221,41","1^5,221,32,32",
+"221,221,221,32","1^4,211,211,211","211,211,22,22,31",
+"1^4,211,22,31,31","1^4,1^4,31,31,31","22,22,22,31,31,31",
+"21,21,21,21,21,21,21","21^a,444,66","1^8,31^5,44",
+"321^4,333,333","3321^4,3^4,66","3^421^4,666,99",
+"2^5,322111,55","32^41,3^4,66","3332^41,666,99",
+"1^8,1^8,611","2^4,44,44,611","1^d,6611,77",
+"4^5,66611,aa","2^6,444,651","3^4,3^4,651",
+"651,66,66,66","3^6,6651,99","6651,666,666",
+"66651,6^4,cc","6^551,ccc,ii","2^8,655,88",
+"1^9,1^9,72","1^g,772,88","1^c,444,75",
+"2^6,3^4,75","1^c,66,66,b1","3^4,444,66,b1",
+"3^7,777,ba","1^7,2221,4111","2^41,333,4311",
+"1^9,2^41,63","21^8,3331,55","2^411,331^4,55",
+"1^7,31^4,331","2^411,32221,55","22211,2^4,422",
+"2^511,4422,66","1^8,332,422","2^5,3331,541",
+"22211,44,44,62","2^411,2^5,64","2^711,664,88",
+"1^a,3331,64","2221,2221,31^4","21^7,333,441",
+"333,333,441,81","2^6111,555,87","21^6,221^4,44",
+"221^6,3322,55","2^41^6,554,77","1^6,21^4,3111",
+"3111,321,33,33","33111,3321,333","333111,33321,66",
+"222,3111,33,42","1^6,3111,33,51","222,222,3111,51",
+"1^9,33111,54","2221^4,33211,55","1^7,3211,322",
+"3^4211,5551,88","2^4,3221,3311","333221,4442,77",
+"3222,3321,333","33222,33321,66","1^9,3222,54",
+"21^4,33,33,411","3^411,44411,77","222,321,33,411",
+"1^6,33,411,42","1^6,222,411,51","33,33,33,411,51",
+"221^4,2^4,431","2^41^4,4431,66","1^8,3311,431",
+"3^411,4433,77","33321,444,552","1^8,221^4,53",
+"3311,44,44,53","4^42,5553,99","2^4,3311,44,71",
+"3^421,555,771","4^52,7771,bb","3^611,776,aa",
+"2^41,33111,441","22111,2221,3211","2^41,3222,441",
+"2^61,4441,76","3331,3331,4411","22211,22211,431",
+"3331,3331,433","3^41,3^41,76","1^7,1^7,61,61",
+"1^d,661,661","21^5,2221,322","221^5,2^41,54",
+"2^51,33311,65","21^5,22111,331","3^41,4441,661",
+"1^7,331,43,61","2221,2221,43,61","2221,331,331,61",
+"21^4,21^4,2211","21^4,2211,33,51","22211,3311,3311",
+"1^5,311,311,32","2211,321,33,42","2211,222,321,51",
+"3322,3331,442","2211,222,42,42","2^411,442,442",
+"1^6,2211,42,51","2211,33,33,51,51","221,221,311,311",
+"1^5,2111,311,41","222111,3321,441","22111,22111,322",
+"222111,222111,54","2111,221,311,32","2111,2111,221,41",
+"1^5,221,41,41,41","2221,43,43,43","1^5,32,32,41,41",
+"331,331,43,43","221,221,32,41,41","221,32,32,32,41",
+"211,211,211,31,31","211,22,31,31,31,31","1^4,31,31,31,31,31"]];
+ B=BB[MO];
+ }
+ if(St!=1){
+ for(R=[]; B!=[]; B=cdr(B)){
+ RT=F?s2sp(car(B)|std=F):s2sp(car(B));
+ if(length(RT)<L0 || length(RT)>L1) continue;
+ R=cons(RT,R);
+ }
+ return reverse(R);
+ }else{
+ if(L0<=3 && L1>=MO+4) return B;
+ for(R=[]; B!=[]; B=cdr(B)){
+ RT=s2sp(T=car(B));
+ if(length(RT)<L0 || length(RT)>L1) continue;
+ if(F) T=s2sp(s2sp(T|std=K));
+ R=cons(T,R);
+ }
+ return reverse(R);
+ }
+ }
+ MP=(L1<MO+1)?L1:MO+1;
+ LL=newvect(MO+1);
+ R=newvect(MP+2);
+ R0=newvect(MP+2);
+ for(I=1; I<=MO; I++) LL[I]=[];
+ if(type(Sp)==4){
+ if(getopt(basic)==1) Sp=chkspt(Sp[6]);
+ R=chkspt(Sp);
+ if(R[1]>MO) return 0;
+ LL[R[1]]=R;
+ K=R[1];
+ }
+ if(K==1||type(Sp)!=4){
+ LL[1]=[[[1]]];
+ for(I=2; I<=MO && I<MP;I++){
+ for(T=[], J=0; J<I+1; J++)
+ T=cons([I-1,1],T);
+ LL[I]=cons(T,LL[I]);
+ }
+ K=2;
+ }
+ for(OD=K; OD<MO; OD++){
+ for(LT=LL[OD]; LT!=[]; LT=cdr(LT)){
+ for(II=0,L=car(LT); L!=[]; II++, L=cdr(L)){
+ R0[II]=R[II]=car(L);
+ }
+ for(; ;){
+ for(S=-2*OD, I=0; I<II; I++){
+ S += OD;
+ if(R[I]!=[]) S-=car(R[I]);
+ }
+ --I;
+ for(;S+OD<=MO && I<=MP;S+=OD,I++){
+ if(S<=0) continue;
+ for(J=0;J<=I;J++){
+ if(J>=II){
+ if(S<OD) break;
+ }else
+ if(S+((R[J]==[])?0:car(R[J]))<car(R0[J])) break;
+ }
+ if(--J>=I){
+ V=newvect(I);
+ RRR=[];
+ for(;J>=0;J--){
+ if(J>=II) RR=[OD,S];
+ else{
+ K=length(R[J]);
+ RR=[S+((K==0)?0:car(R[J]))];
+ K=length(R0[J])-K;
+ for(RT=R0[J]; RT!=[]; K--,RT=cdr(RT)){
+ if(K!=0) RR=cons(car(RT),RR);
+ }
+ }
+ RRR=cons(reverse(RR),RRR);
+ }
+ RRR=qsort(reverse(RRR));
+ if(findin(RRR,LL[S+OD])<0)
+ LL[S+OD]=cons(RRR,LL[S+OD]);
+ }
+ }
+ for(K=0; K<II; K++){
+ if(R[K]!=[]){
+ S=car(R[K]);
+ while((R[K]=cdr(R[K]))!=[] && car(R[K])==S);
+ break;
+ }else R[K]=R0[K];
+ }
+ if(K>=II) break;
+ }
+ }
+ }
+ if(L0>0 || L1<MO+1 || St==1 || F){
+ for(J=1; J<=MO; J++){
+ for(RT=[],R=LL[J];R!=[];R=cdr(R)){
+ L=length(T=car(R));
+ if(L<L0 || L>L1) continue;
+ if(F) T=s2sp(T|std=F);
+ RT=cons((St==1)?s2sp(T):T,RT);
+ }
+ LL[J] = reverse(RT);
+ }
+ }
+ if(Eq==1) return LL[MO];
+ return LL;
+}
+
+def spType2(L)
+{
+ C=0;R=[];
+ for(LT=L;LT!=[];LT=cdr(LT)){
+ D=-1;LP=car(LT);
+ for(LPT=LP;LPT!=[];LPT=cdr(LPT)){
+ if(D==-1) D=car(LPT);
+ else D=igcd(D,car(LPT));
+ if(D==1){
+ C++;break;
+ }
+ }
+ if(C==2) return 0;
+ R=cons(D,R);
+ }
+ if(C==0) return L;
+ if(C==1){
+ for(K=length(R)-1;R[K]!=1;K--);
+ D=-1;
+ for(I=length(R)-1;I>=0;I--){
+ if(I==K) continue;
+ if(D==-1) D=R[I];
+ else D=igcd(D,R[I]);
+ if(D==1) return 0;
+ }
+ }
+ return L;
+}
+
+
+/* ret [#points, order, idx, Fuchs, reduction order, reduction exponents, fund] */
+def chkspt(M)
+{
+ Opt= getopt(opt);
+ Mat= getopt(mat);
+ if(type(M)==7) M=s2sp(M);
+ if(type(Opt) >= 0){
+ if(type(Opt) == 7)
+ Opt = findin(Opt, ["sp","basic","construct","strip","short","long","sort","root"]);
+ if(Opt < 0){
+ erno(2);
+ return 0;
+ }
+ return fspt(M,Opt);
+ }
+ MR = fspt(M,1);
+ P = length(M);
+ OD = -1;
+ XM = newvect(P);
+ Fu = 0;
+ for( I = SM = SSM = 0; I < P; I++ ){
+ LJ = length(M[I]);
+ JM = JMV = 0;
+ for(J = SM = 0; J < LJ; J++){
+ MV = M[I][J];
+ if(type(MV) == 4){
+ Fu += MV[0]*MV[1];
+ MV = MV[0];
+ }
+ if(MV > JMV){
+ JM = J; JMV = MV;
+ }
+ SM += MV;
+ SSM += MV^2;
+ }
+ if(OD < 0)
+ OD = SM;
+ else if(OD != SM){
+ print("irregal partitions");
+ return 0;
+ }
+ XM[I] = JM;
+ }
+ SSM -= (P-2)*OD^2;
+ for(I = SM = JM = 0; I < P; I++){
+ MV = M[I][XM[I]];
+ if(type(MV) == 4){
+ MV = MV[0]; JM = 1;
+ }
+ if(I == 0)
+ SMM = MV;
+ else if(SMM > MV)
+ SMM = MV;
+ SM += MV;
+ }
+ SM -= (P-2)*OD;
+ if(SM > SMM && SM != 2*OD){
+ print("not realizable");
+ return -1;
+ }
+ if(JM==1 && Mat!=1)
+ Fu -= OD - SSM/2;
+ return [P, OD, SSM, Fu, SM, XM, MR];
+}
+
+def cterm(P)
+{
+ V = getopt(var);
+ if(type(V) != 4)
+ V=vars(P);
+ for(; V !=[]; V = cdr(V))
+ P = mycoef(P,0,car(V));
+ return P;
+}
+
+def terms(P,L)
+{
+ Lv=getopt(level);
+ if(type(Lv)!=1) Lv=0;
+ V=car(L);L=cdr(L);
+ for(R=[],D=mydeg(P,V);D>=0; D--){
+ if((Q=mycoef(P,D,V))==0) continue;
+ if(L!=[]){
+ R0=terms(Q,L|level=Lv+1);
+ for(;R0!=[];R0=cdr(R0)) R=cons(cons(D,car(R0)),R);
+ }else R=cons([D],R);
+ }
+ if(Lv>0) return R;
+ R=qsort(R);
+ Rev = getopt(rev); Dic=getopt(dic);
+ if(Dic==1 && Rev==1) R=reverse(R);
+ for(R0=[];R!=[];R=cdr(R)){
+ for(RT=car(R),S=0;RT!=[];RT=cdr(RT)) S+=car(RT);
+ R0=cons(cons(S,car(R)),R0);
+ }
+ if(Dic==1) return R0;
+ if(Rev==1){
+ for(R=[];R0!=[];R0=cdr(R0)){
+ T=car(R0);
+ R=cons(cons(-car(T),cdr(T)),R);
+ }
+ R0=R;
+ }
+ R0=qsort(R0);
+ if(Rev==1){
+ for(R=[];R0!=[];R0=cdr(R0)){
+ T=car(R0);
+ R=cons(cons(-car(T),cdr(T)),R);
+ }
+ R0=R;
+ }
+ return (Rev==1)?R0:reverse(R0);
+}
+
+def polcut(P,N,L)
+{
+ if(type(L)==2) L=[L];
+ M=getopt(top);
+ if(type(M)!=1) M=0;
+ T=terms(P,L);
+ for(S=0;T!=[];T=cdr(T)){
+ LT=car(T);
+ if(LT[0]<M || LT[0]>N) continue;
+ for(PW=1,LT=cdr(LT),V=L,Q=P;LT!=[];LT=cdr(LT),V=cdr(V)){
+ Q=mycoef(Q,car(LT),car(V));PW*=car(V)^car(LT);
+ }
+ S+=Q*PW;
+ }
+ return S;
+}
+
+def redgrs(M)
+{
+ Mat = getopt(mat);
+ if(Mat!=1) Mat=0;
+ R = chkspt(M|mat=Mat);
+ if(type(R) < 4)
+ return -1;
+ if(R[4] <= 0)
+ return 1-R[4];
+ if(R[4] == 2*R[1])
+ return 0;
+ V = newvect(R[0]);
+ Type = type(M[0][0]);
+ if(Type > 3){
+ Mu = Mat-1;
+ for(I = 0; I < R[0]; I++)
+ Mu += M[I][R[5][I]][1];
+ }
+ for(I = 0; I < R[0]; I++){
+ IR = R[5][I]; L = []; MI = M[I]; MIE=MI[IR];
+ for(J = length(MI)-1; J >= 0; J--){
+ if(Type <= 3){
+ VM = MI[J];
+ if(J == IR){
+ VM -= R[4];
+ if(VM < 0) return -1;
+ }
+ L = cons(VM, L);
+ }else{
+ VM = MI[J][0];
+ if(J == IR){
+ VM -= R[4];
+ if(VM < 0)
+ return -1;
+ if(I == 0)
+ EV = 1-Mat-Mu;
+ else
+ EV = 0;
+ }else{
+ if(I == 0)
+ EV = MI[J][1] - M[0][R[5][0]][1] + 1-Mat; /* + MX - Mu; */
+ else
+ EV = MI[J][1] - MIE[1] + Mu;
+ }
+ L = cons([VM,EV], L);
+/*
+ if(R[2] >= 2){ */ /* digid */
+/* P = dx^(R[1]);
+ } */
+ }
+ }
+ V[I] = L;
+ }
+ return [R[5], vtol(V)];
+}
+
+def cutgrs(A)
+{
+ for(AL=[] ; A!=[]; A=cdr(A)){ /* AT: level 2 */
+ for(ALT=[], AT=car(A); AT!=[]; AT=cdr(AT)){
+ M = (type(car(AT)) < 4)?car(AT):car(AT)[0];
+ if(M > 0)
+ ALT = cons(car(AT), ALT); /* ALT: level 2 */
+ }
+ AL = cons(reverse(ALT), AL); /* AL: level 3 */
+ }
+ return reverse(AL);
+}
+
+def mcgrs(G, R)
+{
+ NP = length(G);
+ Mat = (getopt(mat)==1)?0:1;
+ for(R = reverse(R) ; R != []; R = cdr(R)){
+ GN = [];
+ L = length(G)-1;
+ RT = car(R);
+ if(type(RT) == 4){
+ RT = reverse(RT); S = 0;
+ for(G = reverse(G); G != []; G = cdr(G), L--){
+ AD = car(RT); RT = cdr(RT);
+ if(L > 0)
+ S += AD;
+ else
+ AD = -S;
+ for(GTN = [], GT = reverse(car(G)); GT != []; GT = cdr(GT))
+ GTN = cons([car(GT)[0],car(GT)[1]+AD], GTN);
+ GN = cons(GTN, GN);
+ }
+ G = GN;
+ continue;
+ }
+ VP = newvect(L+1); GV = ltov(G);
+ for(I = S = OD = 0; I <= L; I++){
+ RTT = (I==0)?(Mat-RT):0;
+ VP[I] = -1;
+ for(J = M = 0, GT = GV[I]; GT != []; GT = cdr(GT), J++){
+ if(I == 0)
+ OD += car(GT)[0];
+ if(car(GT)[1] == RTT && car(GT)[0] > M){
+ S += car(GT)[0]-M;
+ VP[I] = J;
+ }
+ }
+ S -= (L-1)*OD;
+ for(GN = [] ; L >= 0; L--){
+ GT = GV[L];
+ RTT = (L==0)?(-RT):RT;
+ FTN = (VP[L] >= 0 || S == 0)?[]:[-S,(L==0)?(Mat-RT):0];
+ for(J = 0; GT != []; GT = cdr(GT), J++){
+ if(J != VP[L]){
+ GTN = cons([car(GT)[0],car(GT)[1]+RTT], GTN);
+ continue;
+ }
+ K = car(GT)[0] - S;
+ if(K < 0){
+ print("Not realizable");
+ return;
+ }
+ GTN = cons([K,(L==0)?(Mat-RT):0], GTN);
+ }
+ GN = cons(reverse(GTN), GN);
+ }
+ }
+ G = cutgrs(GN);
+ }
+ return G;
+}
+
+/*
+ F=0 : unify
+ F=["add",S] :
+ F=["sub",S] :
+ F=["+",A,B] :
+ F=["*",A,B] :
+ F=["mul",K];
+ F=["get",F,V] :
+ F=["put",F,V] :
+ F=["get1",F,V] :
+ F=["put1",F,V] :
+ F=["put1"] :
+ F=["val",F];
+ F=["swap"];
+ */
+def anal2sp(R,F)
+{
+ if(type(F)==4&&type(F[0])==4){ /* multiple commands */
+ for(;F!=[];F=cdr(F)) R=anal2sp(R,car(F));
+ return R;
+ }
+ if(type(F)==7) F=[F];
+ if(F==0){ /* unify */
+ R=ltov(R);
+ L=length(R);
+ for(J=1;J<L;J++){
+ for(I=0;I<J;I++){
+ if(cdr(R[I])==cdr(R[J])){
+ R[I]=cons(R[I][0]+R[J][0],cdr(R[I]));
+ R[J]=cons(0,cdr(R[J]));
+ break;
+ }
+ }
+ }
+ for(G=[],I=L-1;I>=0;I--)
+ if(R[I][0]!=0) G=cons(R[I],G);
+ if(length(G[0])==2){ /* sort by multiplicity */
+ R=ltov(G);
+ L=length(R);
+ for(I=1;I<L;I++){
+ for(J=I;J>0;J--){
+ if(R[J-1][0]>R[J][0]) break;
+ if(R[J-1][0]==R[J][0]){
+ S1=rtostr(R[J-1][1]);S2=rtostr(R[J][1]);
+ if((K=str_len(S1)-str_len(S2))<0) break;
+ if(!K&&S1<S2) break;
+ }
+ S=R[J-1];R[J-1]=R[J];R[J]=S;
+ }
+ }
+ G=vtol(R);
+ }
+ return G;
+ }
+ if(F[0]=="add") return append(R,F[1]);
+ R=reverse(R);
+ if(F[0]=="sub"){
+ for(S=F[1];S!=[];S=cdr(S))
+ R=cons(cons(-car(S)[0],cdr(car(S))),R);
+ return reverse(R);
+ }
+ if(F[0]=="swap"){
+ for(G=[];R!=[];R=cdr(R))
+ G=cons([car(R)[0],car(R)[2],car(R)[1]],G);
+ return G;
+ }
+ if(F[0]=="+"){
+ for(G=[];R!=[];R=cdr(R))
+ G=cons([car(R)[0],car(R)[1]+F[1],car(R)[2]+F[2]],G);
+ return G;
+ }
+ if(F[0]=="*"){
+ for(G=[];R!=[];R=cdr(R))
+ G=cons([car(R)[0],car(R)[1]*F[1]+car(R)[2]*F[2]],G);
+ return G;
+ }
+ if(F[0]=="mult"){
+ K=F[1];
+ for(G=[];R!=[];R=cdr(R)) G=cons(cons(K*car(R)[0],cdr(car(R))),G);
+ return G;
+ }
+ if(F[0]=="get"){
+ for(G=[];R!=[];R=cdr(R))
+ if(car(R)[F[1]]==F[2]) G=cons(car(R),G);
+ return G;
+ }
+ if(F[0]=="put"){
+ if(F[1]==1){
+ for(G=[];R!=[];R=cdr(R)) G=cons([car(R)[0],F[2],car(R)[2]],G);
+ }else{
+ for(G=[];R!=[];R=cdr(R)) G=cons([car(R)[0],car(R)[1],F[2]],G);
+ }
+ return G;
+ }
+ if(F[0]=="get1"){
+ if(length(F)==2){
+ for(G=[];R!=[];R=cdr(R)) G=cons([R[0][0],car(R)[F[1]]],G);
+ return G;
+ }
+ for(G=[];R!=[];R=cdr(R))
+ if(car(R)[F[1]]==F[2]) G=cons([R[0][0],car(R)[3-F[1]]],G);
+ return G;
+ }
+ if(F[0]=="put1"){
+ if(length(F)==1)
+ for(G=[];R!=[];R=cdr(R)) G=cons([car(R)[0],car(R)[1],car(R)[1]],G);
+ else if(F[1]==1)
+ for(G=[];R!=[];R=cdr(R)) G=cons([car(R)[0],F[2],car(R)[1]],G);
+ else{
+ for(G=[];R!=[];R=cdr(R)) G=cons([car(R)[0],car(R)[1],F[2]],G);
+ }
+ return G;
+ }
+ if(F[0]=="val"){
+ V=(length(F)==1)?1:F[1];
+ for(I=J=0;R!=[];R=cdr(R)){
+ I+=car(R)[0];
+ J+=car(R)[0]*car(R)[V];
+ }
+ return [I,J];
+ }
+ return 0;
+}
+
+/*
+ G=0 get trivial common spct
+ G="..,..," spectre type of 4 singular points
+ P=["get"] all spct
+ P=["get",L]
+ L=n for variable x_n
+ L=[m,n] for residue [m,n]
+ L=[[m,n],[m',n']] for common spct
+ P=["get0",[m,n],[m',n']] for the sum of residues
+ P=["swap",[m,n]] for symmetry
+ P=["perm",[...]] for symmetry
+ P=["deg"]
+ P=["homog"]
+ P=["sort"]
+ P=[[[m,n],c],...] for addition
+ P=[c] or [[c],...] for middle convolution wrt 0
+ P=[m,c] or [[m,c],...] for general middle convolution
+ P=[[a,b,c]] for special additions
+ P=[[d,a,b,c]] for middle convotution and additions
+ P=["multi",...] multiple commands
+ P=0,1,3 : return sim. spectre of 4 singular points
+*/
+def mc2grs(G,P)
+{
+ if(G==0){
+ G=[];
+ for(I=4;I>=0;I--){
+ V=lsort([0,1,2,3,4],[I],1);
+ for(J=1;J<4;J++){
+ for(T=[],K=3;K>0;K--)
+ if(K!=J) T=cons(V[K],T);
+ G=cons([[[V[0],V[J]],T],[1,0,0]],G);
+ }
+ }
+ G=mc2grs(G,"sort");
+ }else if(type(G)==7||(type(G)==4&&length(G)==4)){
+ if(type(G)==7) G=s2sp(G);
+ F=(getopt(top)==0)?1:0;
+ K=[];
+ if(type(P)==1&&iand(P,1)&&type(G[0][0])<4){
+ G=s2sp(G|std=1);
+ if(F) G=[G[1],G[2],G[3],G[0]];
+ G=sp2grs(G,[d,c,b,a],[1,length(G[0]),-1]|mat=1);
+ G=reverse(G);
+ if(iand(P,3)==3){
+ V=vars(G);
+ for(H=L=[a,b,c,d];H!=[];H=cdr(H))
+ if(findin(car(H),V)>=0) G=subst(G,car(H),makev([car(H),1]));
+ G=shortv(G,[a,b,c,d]);
+ V=vars(G);
+ for(H=G[3];H!=[];H=cdr(H)){
+ T=car(H)[1];
+ if(type(T)>1&&!isvar(T)){
+ K=[car(H)[0],T];
+ break;
+ }
+ }
+ }
+ F=1;
+ }
+ if(F) G=[G[3],G[0],G[1],G[2]];
+ S=cons(["anal",1],getopt());
+ if(!(R=m2mc(G,0|option_list=S))) return R;
+ for(G=0,R=cdr(R);R!=[];R=cdr(R)){
+ TR=car(R)[0];
+ if(TR[0]) G=mc2grs(G,[[TR[0]]]);
+ G=mc2grs(G,[cdr(TR)]);
+ }
+ if(type(P)==1&&K!=[]){
+ for(T=10;T<36;T++){
+ if(findin(X=makev([T]),V)>=0) continue;
+ F=K[0]*(X-K[1]);
+ return [F,simplify(G,[F],4)];
+ }
+ }
+ }
+ if(type(P)<2) return G;
+ F=0;
+ if(type(P)==7||(type(P)==4&&type(P[0])<4)) P=[P];
+ if((Dvi=getopt(dviout))!=1&&Dvi!=2&&Dvi!=-1) Dvi=0;
+ Keep=(Dvi==2)?1:0;
+ if(type(P)==4&&type(F=car(P))==7){
+ if(F=="mult"){
+ for(P=cdr(P);P!=[];P=cdr(P)) G=mc2grs(G,car(P)|option_list=getopt());
+ return G;
+ }
+ if(F=="show"){
+ for(R=str_tb(0,0);G!=[];){
+ L=car(G);
+ I=L[0][0];J=L[0][1];
+ str_tb("[A_{"+rtostr(I[0])+rtostr(I[1])+"}:A_{"+rtostr(J[0])+rtostr(J[1])
+ +"}]&=\\left\\{",R);
+ for(L=cdr(L);;){
+ S=car(L);
+ str_tb("["+my_tex_form(S[1])+":"+my_tex_form(S[2])+"]",R);
+ if(S[0]!=1) str_tb("_{"+rtostr(S[0])+"}",R);
+ if((L=cdr(L))==[]) break;
+ str_tb(",\\,",R);
+ }
+ str_tb("\\right\\}",R);
+ if((G=cdr(G))==[]) break;
+ str_tb(",\\\\\n",R);
+ }
+ R=texbegin("align*",str_tb(0,R));
+ if(Dvi!=-1) dviout(R|keep=Keep);
+ return R;
+ }
+ if(F=="show0"){
+ for(S="",L=[];G!=[];G=cdr(G)){
+ for(TL=[],TG=cdr(car(G));TG!=[];TG=cdr(TG)) TL=cons(car(TG)[0],TL);
+ TL=msort(TL,[-1,0]);
+ if(Dvi){
+ if(S!="") S=S+",";
+ for(I=J=0,T=append(TL,[[0]]);T!=[];T=cdr(T)){
+ if(car(T)==I) J++;
+ else{
+ if(I>0&&J>0){
+ if(I>9) S=S+"("+rtostr(I)+")";
+ else S=S+rtostr(I);
+ if(J>1){
+ if(J>9) S=S+"^{"+rtostr(J)+"}";
+ else S=S+"^"+rtostr(J);
+ }
+ }
+ I=car(T);J=1;
+ }
+ }
+ }
+ L=cons(TL,L);
+ }
+ if(Dvi){
+ if(Dvi!=-1) dviout(S|eq=0);
+ return S;
+ }
+ return reverse(L);
+ }
+ if(F=="sort"){
+ G=ltov(G);L=length(G);
+ for(I=0;I<L;I++){
+ S=G[I][0];
+ if(S[0][0]>S[0][1]) S=[[S[0][1],S[0][0]],S[1]];
+ if(S[1][0]>S[1][1]) S=[S[0],[S[1][1],S[1][0]]];
+ if(S[0]>S[1]){
+ F=0;S=[S[1],S[0]];
+ }
+ if(S!=G[I][0]){
+ if(F==0) G[I]=cons(S,anal2sp(cdr(G[I]),"swap"));
+ else G[I]=cons(S,cdr(G[I]));
+ }
+ for(J=I;J>0;J--){
+ if(G[J-1][0]<G[J][0]) break;
+ S=G[J-1];G[J-1]=G[J];G[J]=S;
+ }
+ }
+ return vtol(G);
+ }
+ if(F=="get"||F=="get0"){
+ if(Dvi!=0) F="get";
+ if(length(P)==1||type(P[1])<2){
+ L=[];
+ if(length(P)==1){
+ for(I=3;I>=0;I--){
+ for(J=4;J>I;J--) L=cons(mc2grs(G,[F,[I,J]]),L);
+ }
+ }else{
+ for(I=P[1],J=4;J>=0;J--){
+ if(I==J) continue;
+ L=cons(mc2grs(G,[F,(I<J)?[I,J]:[J,I]]),L);
+ }
+ }
+ if(Dvi){
+ if(length(L)==10){
+ R=ltov(L);
+ if(R[6][0]==[1,4]){
+ S=R[6];R[6]=R[7];R[7]=S;
+ L=vtol(R);
+ }
+ }
+ for(R=S=[],L=reverse(L);L!=[];L=cdr(L)){
+ T=car(L);
+ R=cons(cdr(T),R);
+ if(S==[]) S="A_{"+rtostr(T[0][0])+rtostr(T[0][1])+"}\\\\\n";
+ else S="A_{"+rtostr(T[0][0])+rtostr(T[0][1])+"}&"+S;
+ }
+ L=ltotex(R|opt="GRS",pre=S);
+ if(Dvi>0) dviout(L|eq=0,keep=Keep);
+ }
+ return L; /* get all spct */
+ }
+ if(type(T=P[1])==4){
+ if(F=="get0"&&length(P)==3&&type(I=P[1])==4&&type(J=P[2])==4){
+ if(I[0]>I[1]) I=[I[1],I[0]];
+ if(J[0]>J[1]) J=[J[1],J[0]];
+ if(I[0]>I[0]){S=I;I=J;J=S;};
+ K=lsort(I,J,0);
+ if(length(K)==4){
+ S=sp2grs(G,["get0",[I,J]]);
+ return anal2sp(S,[["*",1,1],0]);
+ }
+ I=lsort(K,lsort(I,J,2),1);
+ S=lsort([0,1,2,3,4],K,1);
+ D=sp2grs(G,"deg");
+ if(findin(4,S)<0) D=-D;
+ J=sp2grs(G,["get0",[I,S]]);
+ if(I[0]>S[0]) J=sp2grs(J,"swap");
+ return anal2sp(J,[["+",0,D],["*",-1,1]]);
+ }
+ if(type(car(T))==4){
+ if(T[0][0]>T[0][1]) T=[[T[0][1],T[0][0]],T[1]];
+ if(T[1][0]>T[1][1]) T=[T[0],[T[1][1],T[1][0]]];
+ if(T[0][0]>T[1][0]) T=[T[1],T[0]];
+ for(PG=G;PG!=[];PG=cdr(PG))
+ if(car(PG)[0]==T) return (F=="get")?car(PG):cdr(car(PG));
+ return []; /* get common spct */
+ }
+ if(T[0]>T[1]) T=[T[1],T[0]];
+ for(FT=0,PG=G;PG!=[];PG=cdr(PG)){
+ if(car(PG)[0][0]==T){
+ FT=1;break;
+ }
+ if(car(PG)[0][1]==T){
+ FT=2;break;
+ }
+ }
+ if(!FT) return [];
+ L=anal2sp(cdr(car(PG)),[["get1",FT],0]);
+ return (F=="get")?cons(T,L):L;
+ }
+ }
+ if(F=="deg"){
+ for(S=I=0;I<3;I++){
+ for(J=I+1;J<4;J++){
+ L=mc2grs(G,["get0",[I,J]]);
+ L=anal2sp(L,"val");
+ S+=L[1];
+ }
+ }
+ return S/L[0];
+ }
+ if(F=="spct"){
+ G=mc2grs(G,"get");
+ M=newmat(5,5);
+ for(;G!=[];G=cdr(G)){
+ GT=car(G);I=GT[0][0];J=GT[0][1];
+ for(S=0,L=[],GT=cdr(GT);GT!=[];GT=cdr(GT)){
+ L=cons(car(GT)[0],L);
+ }
+ L=reverse(qsort(L));
+ M[I][J]=M[J][I]=L;
+ }
+ for(D=0,GT=M[0][1];GT!=[];GT=cdr(GT)) D+=car(GT);
+ for(I=0;I<5;I++){
+ S=-2*D^2;
+ for(J=0;J<5;J++){
+ if(I==J) continue;
+ for(L=M[I][J];L!=[];L=cdr(L)) S+=car(L)^2;
+ }
+ M[I][I]=S;
+ }
+ if(Dvi){
+ S=[];
+ for(I=4;I>=0;I--){
+ L=[M[I][I]];
+ for(J=4;J>=0;J--){
+ if(I==J) L=cons("",L);
+ else L=cons(s2sp([M[I][J]]),L);
+ }
+ S=cons(L,S);
+ }
+ S=cons([x0,x1,x2,x3,x4,"idx"],S);
+ M=ltotex(S|opt="tab",hline=[0,1,z],vline=[0,1,z-1,z],left=["","$x_0$","$x_1$","$x_2$","$x_3$","$x_4$"]);
+ if(Dvi>0) dviout(M|keep=Keep);
+ }
+ return M;
+ }
+ if(F=="swap"||F=="perm"){
+ if(F=="perm") TR=P[1];
+ else{
+ TR=newvect(5,[0,1,2,3,4]);
+ K=P[1][0];L=P[1][1];
+ TR[K]=L;TR[L]=K;
+ if(TR[4]!=4) G=mc2grs(G,"deg");
+ }
+ V=newvect(2);
+ for(L=[],T=G;T!=[];T=cdr(T)){
+ TP=car(T)[0];
+ for(TQ=[],I=1;I>=0;I--){
+ V=[TR[TP[I][0]],TR[TP[I][1]]];
+ if(V[0]>V[1]) V=[V[1],V[0]];
+ TQ=cons(V,TQ);
+ }
+ if(TQ[0][0]<TQ[1][0]){
+ L=cons(cons(TQ,cdr(car(T))),L);
+ continue;
+ }
+ TQ=[[TQ[1],TQ[0]]];
+ for(TP=cdr(car(T));TP!=[];TP=cdr(TP))
+ TQ=cons([car(TP)[0],car(TP)[2],car(TP)[1]],TQ);
+ L=cons(reverse(TQ),L);
+ }
+ return mc2grs(L,"sort");
+ }
+ if(F=="homog"){
+ V=mc2grs(G,"deg");
+ return mc2grs(G,[[[2,3],-V]]);
+ }else if(F=="deg"){
+ R=mc2grs(G,4);
+ for(V=0;R!=[];R++){
+ for(TR=cdr(R);TR!=[];TR=cdr(TR))
+ V+=car(TR)[0]*car(TR)[1];
+ }
+ return -V;
+ }
+ }
+ if(type(F)!=4) return 0;
+ if(type(P[0])!=4) P=[P];
+ for(;P!=[];P=cdr(P)){
+ if(type((S=P[0])[0])==4){ /* addition */
+ T=P[0][0];
+ if(T[0]>T[1]) T=[T[1],T[0]];
+ T1=[T[0],4];T2=[T[1],4];
+ for(L=[],PG=reverse(G);PG!=[];PG=cdr(PG)){
+ R=car(PG);R0=R[0];F=0;K=P[0][1];
+ if(R0[0]==T) F=1;
+ else if(R0[1]==T) F=2;
+ else if(getopt(unique)!=1){
+ K=-K;
+ if(R0[0]==T1||R0[0]==T2) F=1;
+ else if(R0[1]==T1||R0[1]==T2) F=2;
+ }
+ if(F==0) L=cons(R,L);
+ else{
+ R1=anal2sp(cdr(R),(F==1)?["+",K,0]:["+",0,K]);
+ L=cons(cons(R0,R1),L);
+ }
+ }
+ G=L;
+ }else if(type(S[0])<4){
+ if(length(S)==1){ /* mc wrt0 4:cases */
+ U=mc2grs(G,"deg");
+ C=P[0][0];
+ L=[];
+ /* [[0,1],[2,3]] : [K=[0,k],J=[i,j]], S=[k,4] : 3 cases */
+ for(K=1;K<4;K++){
+ J=lsort([1,2,3],[K],1);
+ K4=[K,4];K0=[0,K];
+ G0=mc2grs(G,["get0",[K0,J]]);
+ LT=anal2sp(G0,["+",C,0]);
+ G0=mc2grs(G,["get0",J]);
+ L0=anal2sp(G0,["put1",1,0]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mc2grs(G,["get0",K4]);
+ L0=anal2sp(G0,[["put1",1,0],["+",0,U]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mc2grs(G,["get0",[[0,J[0]],K4]]);
+ L0=anal2sp(G0,[["get",1,0],["+",0,U]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,J[1]],K4]]);
+ L0=anal2sp(G0,[["get",1,0],["+",0,U]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[K0,J]]);
+ L0=anal2sp(G0,[["get",1,0],["+",C,0]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,4],J]]);
+ L0=anal2sp(G0,[["+",-C,0],["get",1,0]]);
+ LT=anal2sp(LT,[["sub",L0],0]);
+ L=cons(cons([K0,J],LT),L);
+ }
+ /* [[0,1],[2,4]] : [K,I]=[[0,k],[i,4]] S=[j,k] : 6 cases */
+ for(K=1;K<4;K++){
+ for(I=1;I<4;I++){
+ if(I==K) continue;
+ for(J=1;J<4;J++) if(J!=I&&J!=K) break;
+ I4=[I,4];S=(J<K)?[J,K]:[K,J];K0=[0,K];
+ G0=cdr(mc2grs(G,["get",[K0,I4]]));
+ LT=anal2sp(G0,["+",C,0]);
+ G0=cdr(mc2grs(G,["get",I4]));
+ L0=anal2sp(G0,["put1",1,0]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=cdr(mc2grs(G,["get",S]));
+ L0=anal2sp(G0,[["put1",1,0],["+",0,-C-U]]);
+ LT=anal2sp(LT,["add",L0]);
+
+ G0=cdr(mc2grs(G,["get",[[0,I],S]]));
+ L0=anal2sp(G0,[["get",1,0],["+",0,-C-U]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=cdr(mc2grs(G,["get",[[0,J],I4]]));
+ L0=anal2sp(G0,["get",1,0]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=cdr(mc2grs(G,["get",[K0,I4]]));
+ L0=anal2sp(G0,[["get",1,0],["+",C,0]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=cdr(mc2grs(G,["get",[[0,4],S]]));
+ L0=anal2sp(G0,[["get",1,C],["+",-C,-C-U]]);
+ LT=anal2sp(LT,[["sub",L0],0]);
+ L=cons(cons([K0,I4],LT),L);
+ }
+ }
+ /* [[0,4],[2,3]] : [[0,4],J]=[[0,4],[i,j]] 3 cases */
+ for(K=3;K>0;K--){
+ J=lsort([1,2,3],[K],1);
+ G0=mc2grs(G,["get0",[[0,4],J]]);
+ LT=anal2sp(G0,["+",-C,0]);
+ G0=mc2grs(G,["get0",J]);
+ L0=anal2sp(G0,["put1",1,-C]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mc2grs(G,["get0",[K,4]]);
+ L0=anal2sp(G0,[["put1",1,-C],["+",0,U]]);
+ LT=anal2sp(LT,["add",L0]);
+
+ G0=mc2grs(G,["get0",[[0,J[0]],[K,4]]]);
+ L0=anal2sp(G0,[["get",1,0],["+",-C,U]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,J[1]],[K,4]]]);
+ L0=anal2sp(G0,[["get",1,0],["+",-C,U]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,K],J]]);
+ L0=anal2sp(G0,[["get",1,0],["+",-C,0]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,4],J]]);
+ L0=anal2sp(G0,[["get",1,C],["put",1,0]]);
+ LT=anal2sp(LT,[["sub",L0],0]);
+ L=cons(cons([[0,4],J],LT),L);
+ }
+ /* [[1,2],[3,4]] : [J,K]=[[i,j],[k,4]] 3 cases */
+ for(K=3;K>0;K--){
+ J=lsort([1,2,3],[K],1);
+ if(K>1)
+ LT=mc2grs(G,["get0",[J,[K,4]]]);
+ else{
+ LT=mc2grs(G,["get0",[[K,4],J]]);
+ LT=anal2sp(LT,"swap");
+ }
+ G0=mc2grs(G,["get0",J]);
+ L0=anal2sp(G0,[["put1"],["+",0,-C-U]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mc2grs(G,["get0",[K,4]]);
+ L0=anal2sp(G0,[["put1"],["+",U,0]]);
+ LT=anal2sp(LT,["add",L0]);
+
+ G0=mc2grs(G,["get0",[[0,J[0]],[K,4]]]);
+ L0=anal2sp(G0,[["get1",1,0],["put1"],["+",U,0]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,J[1]],[K,4]]]);
+ L0=anal2sp(G0,[["get1",1,0],["put1"],["+",U,0]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,K],J]]);
+ L0=anal2sp(G0,[["get1",1,0],["put1"],["+",0,-C-U]]);
+ LT=anal2sp(LT,["sub",L0]);
+ G0=mc2grs(G,["get0",[[0,4],J]]);
+ L0=anal2sp(G0,[["get1",1,C],["put1"],["+",0,-C-U]]);
+ LT=anal2sp(LT,[["sub",L0],0]);
+ if(K==1){
+ LT=anal2sp(LT,"swap");
+ L=cons(cons([[K,4],J],LT),L);
+ }else L=cons(cons([J,[K,4]],LT),L);
+ }
+ G=L;
+ }else if(length(S)==2){ /* general mc */
+ if(S[1]!=0){
+ I=S[0];
+ if(I!=0) G=mc2grs(G,["swap",[0,I]]);
+ G=mc2grs(G,[S[1]]);
+ if(I!=0) G=mc2grs(G,["swap",[0,I]]);
+ }
+ }else if(length(S)==3||length(S)==4){ /* addition */
+ for(I=1;I<4;I++,S=cdr(S))
+ if(S[0]) G=mc2grs(G,[[[0,I],S[0]]]);
+ if(length(S)==1 && S[0]) /* mc */
+ G=mc2grs(G,[S[0]]);
+ }
+ }
+ }
+ return mc2grs(G,"sort");
+}
+
+def mcmgrs(G,P)
+{
+ if(type(G)<2){
+ if(G>1){
+ N=G+2;G=[];
+ for(I=1;I<=N;I++){
+ for(J=1;J<N;J++){
+ if(I==J) continue;
+ for(K=J+1;K<=N;K++){
+ if(I==K) continue;
+ G=cons([[[0,I],[J,K]],[1,0,0]],G);
+ }
+ }
+ }
+ for(I=1;I<=N;I++){
+ for(J=1;J<I;J++) G=cons([[[0,I],[0,J,I]],[1,0,0]],G);
+ for(J=I+1;J<=N;J++) G=cons([[[0,I],[0,I,J]],[1,0,0]],G);
+ }
+ return reverse(G);
+ }
+ return 0;
+ }
+ if(type(G)==7) G=os_md.s2sp(G);
+ if(type(G)!=4||type(G[0])!=4) return 0;
+ if(type(G[0][0])!=4){ /* spectre type -> GRS */
+ G=s2sp(G|std=1);
+ L=length(G);
+ for(V=[],I=L-2;I>=0;I--) V=cons(makev([I+10]),V);
+ V=cons(makev([L+9]),V);
+ G=sp2grs(G,V,[1,length(G[0]),-1]|mat=1);
+ if(getopt(short)!=0){
+ V=append(cdr(V),[V[0]]);
+ G=shortv(G,V);
+ }
+ R=chkspt(G|mat=1);
+ if(R[2] != 2 || R[3] != 0 || !(R=getbygrs(G,1|mat=1))) return 0;
+ if(getopt(anal)==1) return R; /* called by mcmgrs() */
+ if(!(G=mcmgrs(L-2,0))) return 0;
+ for(R=cdr(R);R!=[];R=cdr(R)){
+ TR=car(R)[0];
+ if(TR[0]) G=mcmgrs(G,[[TR[0]]]);
+ G=mcmgrs(G,[cdr(TR)]);
+ }
+ }
+ L=length(G);
+ for(N=4;N<25;N++){
+ K=N^2*(N-1)/2;
+ if(K>L) return 0;
+ if(K==L) break;
+ }
+ if(type(P)<2) return G;
+ F=0;
+ if(type(P)==7||(type(P)==4&&type(P[0])<4)) P=[P];
+ if((Dvi=getopt(dviout))!=1&&Dvi!=2&&Dvi!=-1) Dvi=0;
+ Keep=(Dvi==2)?1:0;
+ if(type(P)==4 && type(F=car(P))==7){
+ if(F=="mult"){
+ for(P=cdr(P);P!=[];P=cdr(P)) G=os_md.mc2grs(G,car(P)|option_list=getopt());
+ return G;
+ }
+ if(F=="get"||F=="get0"){
+ if(Dvi!=0) F="get";
+ if(length(P)==2){
+ if(type(P[1])==4){
+ if(type(P[1][1])==4){ /* [[,],[,]] */
+ for(PG=reverse(G);PG!=[];PG=cdr(PG)){
+ TP=car(PG);
+ if(TP[0]==P[1]) return (F=="get")?TP:cdr(TP);
+ }
+ return [];
+ }
+ if(P[1][0]==0){
+ if(length(P[1])==2){ /* [0,] */
+ for(J=1;J<=N;J++) if(J!=P[1][1]) break;
+ for(K=J+1;K<=N;K++) if(K!=P[1][1]) break;
+ L=mcmgrs(G,["get0",[P[1],[J,K]]]);
+ L=anal2sp(L,["get1",1]);
+ }else{ /* [0,*,*] */
+ L=mcmgrs(G,["get0",[[P[1][0],P[1][1]],P[1]]]);
+ L=anal2sp(L,["get1",2]);
+ }
+ }else{ /* [,] */
+ for(J=1;J<=N;J++) if(J!=P[1][0]&&J!=P[1][1]) break;
+ L=mcmgrs(G,["get0",[[0,J],P[1]]]);
+ L=anal2sp(L,["get1",2]);
+ }
+ L=anal2sp(L,0);
+ if(F=="get") L=cons(P[1],L);
+ return L;
+ }else{ /* I */
+ for(L=[],I=P[1],J=0;J<=N;J++){
+ if(I==J) continue;
+ II=(I<J)?[I,J]:[J,I];
+ L=cons(mcmgrs(G,[F,II]),L);
+ }
+ }
+ }else{
+ for(L=[],I=0;I<N;I++){
+ for(J=I+1;J<=N;J++) L=cons(mcmgrs(G,[F,[I,J]]),L);
+ }
+ }
+ if(Dvi){
+ for(R=S=[];L!=[];L=cdr(L)){
+ T=car(L);
+ R=cons(cdr(T),R);
+ if(S==[]) S="A_{"+rtostr(T[0][0])+rtostr(T[0][1])+"}\\\\\n";
+ else S="A_{"+rtostr(T[0][0])+rtostr(T[0][1])+"}&"+S;
+ }
+ L=ltotex(R|opt="GRS",pre=S);
+ if(type(V=getopt(div))!=4) V=[];
+ if(V==[]&&(K=length(R))>10)
+ for(I=9;I<K;I+=9) V=cons(I,V);
+ V=reverse(V);
+ if(V!=[]) L=divmattex(L,V);
+ if(Dvi>0){
+ if(V!=[]) dviout(L|keep=Keep);
+ else dviout(L|eq=0,keep=Keep);
+ }
+ }else L=reverse(L);
+ return L;
+ }
+ if(F=="show"){
+ for(R=str_tb(0,0);G!=[];){
+ L=car(G);
+ I=L[0][0];J=L[0][1];
+ str_tb("[A_{"+rtostr(I[0])+rtostr(I[1])+"}:A_{"+rtostr(J[0])+rtostr(J[1]),R);
+ if(length(J)==3) str_tb(rtostr(J[2]),R);
+ str_tb("}]&=\\left\\{",R);
+ for(L=cdr(L);;){
+ S=car(L);
+ str_tb("["+my_tex_form(S[1])+":"+my_tex_form(S[2])+"]",R);
+ if(S[0]!=1) str_tb("_{"+rtostr(S[0])+"}",R);
+ if((L=cdr(L))==[]) break;
+ str_tb(",\\,",R);
+ }
+ str_tb("\\right\\}",R);
+ if((G=cdr(G))==[]) break;
+ str_tb(texcr(43),R);
+ }
+ R=texbegin("align*",str_tb(0,R));
+ if(Dvi!=-1) dviout(R|keep=Keep);
+ return R;
+ }
+ if(F=="show0"){
+ for(C=N*(N-1)*(N-2)/2,S="",L=[];G!=[];G=cdr(G)){
+ for(TL=[],TG=cdr(car(G));TG!=[];TG=cdr(TG)) TL=cons(car(TG)[0],TL);
+ TL=msort(TL,[-1,0]);
+ if(Dvi){
+ if(S!=""){
+ if(--C==0) S=S+";";
+ else S=S+",";
+ }
+ for(I=J=0,T=append(TL,[[0]]);T!=[];T=cdr(T)){
+ if(car(T)==I) J++;
+ else{
+ if(I>0&&J>0){
+ if(I>9) S=S+"("+rtostr(I)+")";
+ else S=S+rtostr(I);
+ if(J>1){
+ if(J>9) S=S+"^{"+rtostr(J)+"}";
+ else S=S+"^"+rtostr(J);
+ }
+ }
+ I=car(T);J=1;
+ }
+ }
+ }
+ L=cons(TL,L);
+ }
+ if(Dvi){
+ if(Dvi!=-1) dviout(S|eq=0);
+ return S;
+ }
+ return reverse(L);
+ }
+ if(F=="spct"){
+ G=mcmgrs(G,"get");
+ M=newmat(N+1,N+1);
+ for(;G!=[];G=cdr(G)){
+ GT=car(G);I=GT[0][0];J=GT[0][1];
+ for(S=0,L=[],GT=cdr(GT);GT!=[];GT=cdr(GT)){
+ L=cons(car(GT)[0],L);
+ }
+ L=reverse(qsort(L));
+ M[I][J]=M[J][I]=L;
+ }
+ for(D=0,GT=M[0][1];GT!=[];GT=cdr(GT)) D+=car(GT);
+ for(I=0;I<=N;I++){
+ S=-(N-2)*D^2;
+ for(J=0;J<=N;J++){
+ if(I==J) continue;
+ for(L=M[I][J];L!=[];L=cdr(L)) S+=car(L)^2;
+ }
+ M[I][I]=S;
+ }
+ if(Dvi){
+ S=[];
+ for(LS=[],I=N;I>=0;I--){
+ L=[M[I][I]];
+ for(J=N;J>=0;J--){
+ if(I==J) L=cons("",L);
+ else L=cons(s2sp([M[I][J]]),L);
+ }
+ S=cons(L,S);
+ LS=cons("$x_"+rtostr(I)+"$",LS);
+ }
+ S=cons(append(LS,["idx"]),S);
+ M=ltotex(S|opt="tab",hline=[0,1,z],vline=[0,1,z-1,z],left=cons("",LS));
+ if(Dvi>0) dviout(M|keep=Keep);
+ }
+ return M;
+ }
+ if(F=="deg"){
+ for(S=I=0;I<N-1;I++){
+ for(J=I+1;J<N;J++){
+ L=mcmgrs(G,["get0",[I,J]]);
+ L=anal2sp(L,"val");
+ S+=L[1];
+ }
+ }
+ return S/L[0];
+ }
+ }
+ L=[];
+ if(type(F)!=4) return 0;
+ if(type(P[0])!=4||length(P[0])==2) P=[P];
+ for(;P!=[];P=cdr(P)){
+ if(type(T=(S=car(P))[0])==4){ /* addition */
+ if((K=P[0][1])!=0){
+ if(T[0]>T[1]) T=[T[1],T[0]];
+ T1=[T[0],N];T2=[T[1],N];
+ T01=cons(0,T1);T02=cons(0,T2);
+ for(PG=G;PG!=[];PG=cdr(PG)){
+ R=car(PG);R0=R[0];K1=K2=0;
+ TP=R0[0];
+ if(TP==T) K1=K;
+ else if(TP==T1||TP==T2) K1=-K;
+ if(length(TP=R0[1])==2){
+ if(TP==T) K2=K;
+ else if(TP==T1||TP==T2) K2=-K;
+ }else{
+ S=0;
+ if(findin(T[0],TP)>=0) S++;
+ if(findin(T[1],TP)>=0) S++;
+ if(S>0&&TP[2]==N) K2=-K;
+ else if(S==2) K2=K;
+ }
+ R1=anal2sp(cdr(R),["+",K1,K2]);
+ L=cons(cons(R0,R1),L);
+ }
+ G=reverse(L);
+ }
+ }else if(length(S)==1){ /* middle convolution */
+ C=S[0];L=[];
+ for(I=1;I<=N;I++){
+ for(J=1;J<=N;J++){
+ if(I==J) continue;
+ for(K=J+1;K<=N;K++){ /* [[0,I],[J,K]] */
+ if(I==K)continue;
+ T=[[0,I],JK=[J,K]];
+ if(I==N){
+ LT=mcmgrs(G,["get0",T]);
+ G0=mcmgrs(G,["get0",JK]);
+ L0=anal2sp(G0,[["put1",1,0],["mult",N-3]]);
+ G0=mcmgrs(G,["get0",[0,J,K]]);
+ LT=anal2sp(LT,["add",L0]);
+ L0=anal2sp(G0,["put1",1,0]);
+ LT=anal2sp(LT,["add",L0]);
+ for(V=1;V<=N;V++){
+ if(V==I){
+ G0=mcmgrs(G,["get0",T]);
+ L0=anal2sp(G0,["get",1,C]);
+ }else if(V==J||V==K){
+ G0=mcmgrs(G,["get0",[[0,V],[0,J,K]]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }else{
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }
+ LT=anal2sp(LT,["sub",L0]);
+ }
+ LT=anal2sp(LT,["+",-C,0]);
+ }else if(K==N){
+ LT=mcmgrs(G,["get0",T]);
+ LT=anal2sp(LT,["+",C,0]);
+ G0=mcmgrs(G,["get0",JK]);
+ L0=anal2sp(G0,[["put1",1,0],["mult",N-3]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mcmgrs(G,["get0",[0,J,K]]);
+ L0=anal2sp(G0,[["put1",1,0],["+",0,-C]]);
+ LT=anal2sp(LT,["add",L0]);
+ for(V=1;V<=N;V++){
+ if(V==I){
+ G0=mcmgrs(G,["get0",T]);
+ L0=anal2sp(G0,[["get",1,0],["+",C,0]]);
+ }else if(V==J){
+ G0=mcmgrs(G,["get0",[[0,V],[0,J,K]]]);
+ L0=anal2sp(G0,[["get",1,0],["+",0,-C]]);
+ }else if(V==N){
+ G0=mcmgrs(G,["get0",[[0,V],[0,J,K]]]);
+ L0=anal2sp(G0,[["get",1,C],["+",-C,-C]]);
+ }else{
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }
+ LT=anal2sp(LT,["sub",L0]);
+ }
+ }else{
+ G0=mcmgrs(G,["get0",T]);
+ LT=anal2sp(G0,["+",C,0]);
+ G0=mcmgrs(G,["get0",JK]);
+ L0=anal2sp(G0,[["put1",1,0],["mult",N-3]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mcmgrs(G,["get0",[0,J,K]]);
+ L0=anal2sp(G0,["put1",1,0]);
+ LT=anal2sp(LT,["add",L0]);
+ for(V=1;V<=N;V++){
+ if(V==I){
+ G0=mcmgrs(G,["get0",T]);
+ L0=anal2sp(G0,[["get",1,0],["+",C,0]]);
+ }else if(V==J||V==K){
+ G0=mcmgrs(G,["get0",[[0,V],[0,J,K]]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }else if(V==N){
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,[["get",1,C],["+",-C,0]]);
+ }else{
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }
+ LT=anal2sp(LT,["sub",L0]);
+ }
+ }
+ LT=anal2sp(LT,0);
+ L=cons(cons(T,LT),L);
+ }
+ T=[[0,I],(I<J)?[0,I,J]:[0,J,I]]; /* [0,I], [0,I,J] */
+ JK=(I<J)?[I,J]:[J,I];
+ if(I==N){
+ G0=mcmgrs(G,["get0",T]);
+ LT=anal2sp(G0,["+",-C,0]);
+ G0=mcmgrs(G,["get0",JK]);
+ L0=anal2sp(G0,[["put1",1,-C],["mult",N-3]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mcmgrs(G,["get0",T[1]]);
+ L0=anal2sp(G0,["put1",1,-C]);
+ LT=anal2sp(LT,["add",L0]);
+ for(V=1;V<=N;V++){
+ if(V==J){
+ G0=mcmgrs(G,["get0",T]);
+ L0=anal2sp(G0,[["get",1,0],["+",-C,0]]);
+ }else if(V==N){
+ G0=mcmgrs(G,["get0",[[0,V],T[1]]]);
+ L0=anal2sp(G0,[["get",1,C],["+",-C,0]]);
+ }else{
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,[["get",1,0],["+",-C,0]]);
+ }
+ LT=anal2sp(LT,["sub",L0]);
+ }
+ LT=anal2sp(LT,["+",0,C]);
+ }else if(J==N){
+ G0=mcmgrs(G,["get0",T]);
+ LT=anal2sp(G0,["+",C,0]);
+ G0=mcmgrs(G,["get0",T[0]]);
+ L0=anal2sp(G0,[["put1",1,0],["mult",N-3]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mcmgrs(G,["get0",T[1]]);
+ L0=anal2sp(G0,["put1",1,0]);
+ LT=anal2sp(LT,["add",L0]);
+ for(V=1;V<=N;V++){
+ if(V==I){
+ G0=mcmgrs(G,["get0",T]);
+ L0=anal2sp(G0,[["get",1,0],["+",C,0]]);
+ }else if(V==N){
+ G0=mcmgrs(G,["get0",[[0,V],T[1]]]);
+ L0=anal2sp(G0,[["get",1,C],["+",-C,0]]);
+ }else{
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }
+ LT=anal2sp(LT,["sub",L0]);
+ }
+ LT=anal2sp(LT,["+",0,-C]);
+ }else{
+ G0=mcmgrs(G,["get0",T]);
+ LT=anal2sp(G0,["+",C,C]);
+ G0=mcmgrs(G,["get0",JK]);
+ L0=anal2sp(G0,[["put1",1,0],["mult",N-3]]);
+ LT=anal2sp(LT,["add",L0]);
+ G0=mcmgrs(G,["get0",T[1]]);
+ L0=anal2sp(G0,[["put1",1,0],["+",0,C]]);
+ LT=anal2sp(LT,["add",L0]);
+ for(V=1;V<=N;V++){
+ if(V==I){
+ G0=mcmgrs(G,["get0",T]);
+ L0=anal2sp(G0,[["get",1,0],["+",C,C]]);
+ }else if(V==J){
+ G0=mcmgrs(G,["get0",[[0,V],T[1]]]);
+ L0=anal2sp(G0,[["get",1,0],["+",0,C]]);
+ }else if(V==N){
+ G0=mcmgrs(G,["get0",[[0,V],JK]]); L0=anal2sp(G0,[["get",1,C],["+",-C,0]]);
+ }else{
+ G0=mcmgrs(G,["get0",[[0,V],JK]]);
+ L0=anal2sp(G0,["get",1,0]);
+ }
+ LT=anal2sp(LT,["sub",L0]);
+ }
+ }
+ LT=anal2sp(LT,0);
+ L=cons(cons(T,LT),L);
+ }
+ }
+ for(G0=G=[];L!=[];L=cdr(L)){
+ if(length(car(L)[0][1])==2) G0=cons(car(L),G0);
+ else G=cons(car(L),G);
+ }
+ G=append(G0,G);
+ }else{
+ if(length(S)==N-1||length(S)==N){ /* [a_1,...,a_{N-1},c] */
+ for(I=1;I<N;S=cdr(S),I++) G=mcmgrs(G,[[0,I],car(S)]);
+ if(length(S)==1) G=mcmgrs(G,[S[0]]);
+ }else return 0;
+ }
+ }
+ return G;
+}
+
+
+def delopt(L,S)
+{
+ if((Inv=getopt(inv))!=1) Inv=0;
+ for(R=[];L!=[];L=cdr(L)){
+ if(type(car(L))!=4) F=0;
+ else if(type(S)==4) F=(findin(car(L)[0],S)<0)?0:1;
+ else F=(car(L)[0]==S)?1:0;
+ if(F==Inv) R=cons(car(L),R);
+ }
+ return reverse(R);
+}
+
+def str_char(S,N,L)
+{
+ if(type(S)==7){
+ if(type(L)==1) L=asciitostr([L]);
+ return str_chr(S,N,L);
+ }
+ if(type(L)==7) L=strtoascii(L)[0];
+ if(type(S)==4){
+ M=N;
+ while(M-->0) S=cdr(S);
+ M=findin(L,S);
+ return (M>=0)?findin(L,S)+N:-1;
+ }else if(type(S)==5){
+ K=length(S);
+ for(I=N;I<K;I++)
+ if(S[I]==L) return I;
+ }
+ return -1;
+}
+
+def str_pair(S,N,I,J)
+{
+ if(type(I)==7) I=(II=strtoascii(I))[0];
+ if(type(J)==7) J=(JJ=strtoascii(J))[0];
+ if(type(S)==7) S=strtoascii(S);
+ if(getopt(inv)==1){
+ if(II!=0){
+ I=asciitostr(reverse(II));
+ IL=length(II);
+ }else IL=1;
+ if(JJ!=0) J=asciitostr(reverse(JJ));
+ R=str_pair(reverse(S),length(S)-N-1,J,I);
+ if(R>=0) R=length(S)-IL-R;
+ return R;
+ }
+ if((SJIS=getopt(sjis))!=1) SJIS=0;
+ if((II!=0&&length(II)>1)||(JJ!=0&&length(JJ)>1)){
+ for(;;){
+ MJ=str_str(S,N|top=JJ,sjis=SJIS);
+ if(MJ>=0){
+ MI=str_str(S,II|top=N,sjis=SJIS);
+ if(MI<0 || MI>MJ){
+ if(C==0) return MJ;
+ C--; N=MJ+length(II);
+ }else if(MI>=0){
+ C++; N=MI+length(JJ);
+ }
+ }
+ return -1;
+ }
+ }
+ if(type(S)==4){
+ M=N;
+ while(M-->0) S=cdr(S);
+ while(S!=[]){
+ if(car(S)==I) C++;
+ else if(car(S)==J){
+ if(C==0) return N;
+ C--;
+ }
+ S=cdr(S);N++;
+ }
+ }else if(type(S)==5){
+ K=length(S);
+ for(T=N;T<K && C>=0;T++){
+ if(S[T]==I) C++;
+ else if(S[T]==J){
+ if(C==0) return T;
+ C--;
+ }
+ }
+ }
+ return -1;
+}
+
+
+def str_cut(S,I,J)
+{
+ if(type(S)==7) return sub_str(S,I,J);
+ if((JJ=length(S))<=J) J=JJ-1;
+ if(type(S)==5){
+ for(L=[],K=J; K>=I; K--) L=cons(S[K],L);
+ }else if(type(S)==4){
+ J-=I;
+ while(I-->0) S=cdr(S);
+ for(L=[];J-->=0;S=cdr(S)) L=cons(car(S),L);
+ L=reverse(L);
+ }
+ return asciitostr(L);
+}
+
+def str_str(S,T)
+{
+ if(S==0) return -1;
+ if(type(S) == 7)
+ S = strtoascii(S);
+ if(type(J=getopt(top))!=1 || J<0) J=0;
+ LS=length(S);
+ if(LS-J<1) return -1;
+ if(type(S)==4){
+ LS-=(J0=J);
+ for( ; J>0 && S!=[]; S=cdr(S),J--);
+ }
+ if(type(JJ=getopt(end))!=1 && JJ!=0) JJ=LS;
+ else JJ-=J0;
+ if((SJIS=getopt(sjis))!=1) SJIS=0;
+ if(JJ-J<0) return -1;
+ /* search from J-th to JJ-th */
+ if(type(T)==1) T=[T];
+ else if(type(T)==7) T = strtoascii(T);
+ else if(type(T)==4 && type(T[0])>3){
+ for(K=(KF=-1)-J0; T!=[]; F++,T=cdr(T)){
+ JK=str_str(S,car(T)|top=J,end=JJ,sjis=SJIS);
+ if(JK>=0){
+ JJ=(K=JK)-1; KF=F;
+ if(J>JJ) break;
+ }
+ }
+ return [KF,J0+K];
+ }
+ if(type(T)==4) T=ltov(T);
+ LT = length(T);
+ if(LT>0){
+ LE = LS-LT;
+ LP = T[0];
+ if(JJ==0 ||(type(JJ)==1 && JJ<LE)) LE=JJ;
+ if(type(S)==5){
+ for(; J <= LE; J++){
+ if(S[J] != LP){
+ if(SJIS && (V=S[J])>128){
+ if(V<160 || (V>223 && V<240)) J++;
+ }
+ continue;
+ }
+ for(I = 1; I < LT && S[I+J] == T[I]; I++);
+ if(I >= LT) return J;
+ }
+ }else if(type(S)==4){
+ for(; J<=LE; S=cdr(S),J++){
+ if(car(S) != LP){
+ if(SJIS && (V=S[J])>128){
+ if(V<160 || (V>223 && V<240)) J++;
+ }
+ continue;
+ }
+ for(ST=cdr(S), I = 1; I < LT && car(ST) == T[I]; I++, ST=cdr(ST));
+ if(I >= LT) return J0+J;
+ }
+ }
+ }
+ return -1;
+}
+
+def str_times(S,N)
+{
+ if(!isint(N)) return "";
+ if(type(S)==7){
+ for(Tb=str_tb(0,0);N-->0;)
+ str_tb(S,Tb);
+ return str_tb(0,Tb);
+ }
+ if(type(S)==4){
+ for(LT=[],I=0;I<N;I++){
+ if(type(car(S))==7){
+ LT=cons(car(S),LT);
+ S=cdr(S);
+ if(S==[]) S=[[""]];
+ }else if(type(car(S))==4){
+ ST=car(S);
+ for(J=0;I<N;I++){
+ if(J==length(ST)) J=0;
+ LT=cons(ST[J++],LT);
+ }
+ }
+ }
+ return reverse(LT);
+ }
+ return S;
+}
+
+def ssubgrs(M,L)
+{
+ if(type(L)==7) L=s2sp(L);
+ for(S=0, L=L, M=M; L!=[]; L=cdr(L), M=cdr(M)){
+ for(LT=car(L), MT=car(M); LT!=[]; LT=cdr(LT), MT=cdr(MT)){
+ S += car(LT)*car(MT)[1];
+ }
+ }
+ return S;
+}
+
+def s2os(S)
+{
+ return str_subst(S,[["\\","\\\\"],["\"","\\\""]],0);
+}
+
+def l2os(S)
+{
+ if(type(S)==6)
+ S=m2ll(S);
+ else if(type(S)==5)
+ S=vtol(S);
+ else if(type(S)==7) return "\""+s2os(S)+"\"";
+ else if(type(S)<4) return rtostr(S);
+ if(type(S)==4){
+ for(F=0,Tb=str_tb("[",0);S!=[];S=cdr(S)){
+ if(F++) str_tb(", ",Tb);
+ str_tb(l2os(car(S)),Tb);
+ }
+ str_tb("]",Tb);
+ return str_tb(0,Tb);
+ }
+ return 0;
+}
+
+def r2os(S)
+{
+ if(type(S)==6){
+ for(T="",S=m2ll(S);S!=[];S=cdr(S)){
+ if(T!="") T=T+","+r2os(car(S));
+ else T=r2os(car(S));
+ }
+ return "mat("+T+")\n";
+ }else if(type(S)==5){
+ for(T="",S=v2l(S);S!=[];S=cdr(S)){
+ if(T!="") T=T+","+r2os(car(S));
+ else T=r2os(car(S));
+ }
+ return "vect("+T+")\n";
+ }else if(type(S)<4) return rtostr(S);
+ else if(type(S)==4){
+ for(T="";S!=[];S=cdr(S)){
+ if(T!="") T=T+","+r2os(car(S));
+ else T=r2os(car(S));
+ }
+ return "["+T+"]";
+ }else if(type(S)==7) return "\""+s2os(S)+"\"";
+ return "";
+}
+
+def s2euc(S)
+{
+ for(R=[],CR=0,L=strtoascii(S);L!=[];L=cdr(L)){
+ if((C=car(L)) == 0x1b && length(L)>1) {
+ if((C=car(L=cdr(L)))==0x24 && length(L)>1){ /* $ */
+ if((C = car(L=cdr(L))) == 0x40 || C == 0x42) { /* @, B */
+ Mode = 1;
+ } else return 0;
+ }else if(C == 0x28 && length(L)>1) { /* ( */
+ if((C = car(L=cdr(L)))== 0x42 || C == 0x4a) { /* B, J */
+ Mode = 0;
+ }else if(C == 0x49) { /* I */
+ Mode = 2;
+ }else{
+ R=cons(0x1b,R);R=cons(0x28,R);R=cons(C,R);
+ }
+ }else if (C == 0x26 && length(L)>1 && car(cdr(L))==0x1b) { /* & ESC */
+ L=cdr(L);
+ }else{
+ R=cons(0x1b,R);R=cons(C,R);
+ }
+ }else if(C == 0x0e) {
+ Mode = 2;
+ }else if(C == 0x0f) {
+ Mode = 0;
+ }else if(Mode == 1 && C>0x20 && C<0x7f && length(L)>1) { /* JIS KANJI */
+ D=car(L=cdr(L));
+ if(D>0x20 && D<0x7f) {
+ R=cons(ior(C,0x80),R);R=cons(ior(D,0x80),R);
+ } else return 0;
+ }else if(Mode == 2 && C > 0x1f && C < 0x60) { /* JIS KANA */
+ R=cons(0x8e,R); R=cons(ior(C,0x80),R);
+ }else if(((C>0x80 && C<0xa0) || (C>0xdf && C<0xf0)) && length(L)>1) { /* ShiftJIS */
+ D=car(L=cdr(L));
+ if(D>0x3f && D<0xfd && D!=0x7f) {
+ T=sjis2jis([C,D]);
+ R=cons(ior(T[0],0x80),R); R=cons(ior(T[1],0x80),R);
+ }else return 0;
+ }else if(C>0x9f && C<0xe0) { /* HanKana */
+ R=cons(0x8e,R); R=cons(C,R);
+ }else if(C == 0x0a){
+ CR++;
+ }else if(C == 0x0d){
+ R=cons(0x0d,R);
+ CR=0;
+ }else{
+ while(CR-->0) R=cons(0x0d,R);
+ R=cons(C,R);
+ }
+ }
+ while(CR-->0) R=cons(0x0d,R);
+ return asciitostr(reverse(R));
+}
+
+def s2sjis(S)
+{
+ for(R=[],CR=0,L=strtoascii(S);L!=[];L=cdr(L)){
+ if((C=car(L)) == 0x1b && length(L)>1) {
+ if((C=car(L=cdr(L)))==0x24 && length(L)>1){ /* $ */
+ if((C = car(L=cdr(L))) == 0x40 || C == 0x42) { /* @, B */
+ Mode = 1;
+ } else return 0;
+ }else if(C == 0x28 && length(L)>1) { /* ( */
+ if((C = car(L=cdr(L)))== 0x42 || C == 0x4a) { /* B, J */
+ Mode = 0;
+ }else if(C == 0x49) { /* I */
+ Mode = 2;
+ }else{
+ R=cons(0x1b,R);R=cons(0x28,R);R=cons(C,R);
+ }
+ }else if (C == 0x26 && length(L)>1 && car(cdr(L))==0x1b) { /* & ESC */
+ L=cdr(L);
+ }else{
+ R=cons(0x1b,R);R=cons(C,R);
+ }
+ }else if(C == 0x0e) {
+ Mode = 2;
+ }else if(C == 0x0f) {
+ Mode = 0;
+ }else if(Mode == 1 && C>0x20 && C<0x7f && length(L)>1) { /* JIS KANJI */
+ D=car(L=cdr(L));
+ if(D>0x20 && D<0x7f) {
+ T=jis2sjis([C,D]);
+ R=cons(T[0],R);R=cons(T[1],R);
+ } else return 0;
+ }else if(Mode == 2 && C > 0x1f && C < 0x60) { /* JIS KANA */
+ R=cons(ior(C,0x80),R);
+ }else if(C>0xa0 && C<0xff && length(L)>1) { /* EUC */
+ D=car(L=cdr(L));
+ if(D>0xa0 && D<0xff) {
+ T=jis2sjis([iand(C,0x7f),iand(D,0x7f)]);
+ R=cons(T[0],R);R=cons(T[1],R);
+ }else return 0;
+ }else if(C == 0x0a){
+ CR++;
+ }else if(C == 0x0d){
+ R=cons(0x0a,R);R=cons(0x0d,R);
+ CR=0;
+ }else{
+ while(CR-->0){
+ R=cons(0x0a,R);R=cons(0x0d,R);
+ }
+ R=cons(C,R);
+ }
+ }
+ while(CR-->0){
+ R=cons(0x0a,R);R=cons(0x0d,R);
+ }
+ return asciitostr(reverse(R));
+}
+
+def r2ma(S)
+{
+ return evalma(S|inv=1);
+}
+
+def evalma(S)
+{
+ L0=["\n","\d","{","}","[","]","Log","Exp","Sinh","Cosh","Tanh","Sin","Cos","Tan",
+ "ArcSin","ArcCos","ArcTan"];
+ L1=["", "" ,"[","]","(",")","log","exp","sinh","cosh","tanh","sin","cos","tan",
+ "asin", "acos", "atan"];
+ if(getopt(inv)==1){
+ if(type(S)==6) S=m2ll(S);
+ else if(type(S)==5) S=vtol(S);
+ if(type(S)==4){
+ for(L=[];S!=[];S=cdr(S)){
+ if(type(car(S))==6) L=cons(m2ll(car(S)),L);
+ else if(type(car(S))==5) L=cons(vtol(car(S)),L);
+ else L=cons(car(S),L);
+ }
+ S=reverse(L);
+ }else return 0;
+ return str_subst(rtostr(S),cdr(cdr(L1)),cdr(cdr(L0)));
+ }
+ if(S==0){
+ print("Mathematica text (terminated by ;) ?");
+ purge_stdin();
+ Tb=str_tb(0,0);
+ for(;;){
+ S=get_line();
+ str_tb(S,Tb);
+ if(str_char(S,0,";")>=0) break;
+ }
+ S=str_tb(0,Tb);
+ }
+/*
+ while((P=str_chr(S,0,";"))>=0){
+ V0=evalma(str_cut(S,0,P+1));
+ S=str_cut(S,P+1,length(S));
+ }
+ if((P=str_char(S,0,"="))>=0){
+ X=strtoascii(str_cut(S,0,P));
+ L=length(X);
+ for(P0=P1=-1,I=0;I<L;I++){
+ if(L(I)<=32) continue;
+ if(isalphanum(L[I])){
+ if(P0<0){
+ if(isnum(L[I])) break;
+ P0=I;
+ }
+ else if(P1!=I+1) break;
+ P1=I;
+ }
+ }
+ if(I==L && P0>=0){
+ for(I==P0;I-->0;) X=cdr(X);
+ if((X0=car(X))>96) X0-=32;
+ Y=[X0];X=cdr(X);
+ for(I=P1-P0;I-->0;X=cdr(X))
+ Y=cons(car(X),Y);
+ Y=cons(61,Y);
+ Var=asciitostr(reverse(Y));
+ S=str_cut(S,P,length(S));
+ }
+ }
+*/
+ S=eval_str(str_subst(S,L0,L1));
+ if(type(S)==4){
+ for(L=-1,T=S;T!=[];T=cdr(T)){
+ if(type(T0=car(T))>4) break;
+ if(type(T0)<4){
+ if(L>=0) break;
+ L=-2;continue;
+ }
+ if(L<-2) break;
+ if(L==-1) L=length(T0);
+ else if(L!=length(T0)) break;
+ }
+ if(T==[]){
+ if(L>0) S=s2m(S);
+ else S=ltov(S);
+ }
+ }
+/*
+ if(S==0 && V0!=0) return V0;
+ if(type(Var)==7){
+ T=rtostr(S);
+ if(type(S)==7) T="\""+T+"\"";
+ S=eval_str(Var+T);
+ mycat(["Define",Var]);
+ }
+*/
+ return S;
+}
+
+def i2hex(N)
+{
+ Opt=getopt();
+ if(type(N)==4 && isint(car(N))){
+#ifdef USEMODULE
+ L=mtransbys(os_md.i2hex,N,[]|option_list=Opt);
+#else
+ L=mtransbys(i2hex,N,[]|option_list=Opt);
+#endif
+ return rtostr(L);
+ }
+ if(!isint(N) || N<0) return 0;
+ if(!N) L=[];
+ else{
+ Cap=(getopt(cap)==1)?32:0;
+ for(L=[];N!=0;N=ishift(N,4)){
+ J=iand(N,15);
+ L=cons(((J>9)?(87-Cap):48)+J,L);
+ }
+ }
+ if(!isint(Min=getopt(min))) Min=2;
+ for(Min-=length(L);Min-->0;)
+ L=cons(48,L);
+ if(getopt(num)==1){
+ L=cons(120,L);L=cons(48,L);
+ }
+ return asciitostr(L);
+}
+
+def sjis2jis(L)
+{
+ L1=L[1];
+ if((L0=L[0])<=0x9f){
+ if(L1<0x9f) L0=L0*2-0xe1;
+ else L0=(L0*2)-0xe0;
+ }else{
+ if(L1<0x9f) L0=L0*2-0x161;
+ else L0=L0*2-0x160;
+ }
+ if(L1<0x7f) return [L0,L1-0x1f];
+ else if(L1<0x9f) return [L0,L1-0x20];
+ return [L0,L1-0x7e];
+}
+
+def jis2sjis(L)
+{
+ L1=L[1];
+ if(iand(L0=L[0],1)){
+ if(L1<0x60) L=[L1+0x1f];
+ else L=[L1+0x20];
+ }else L=[L1+0x7e];
+ if(L0<0x5f) return cons(ishift(L0+0xe1,1),L);
+ return cons(ishift(L0+0x161,1),L);
+}
+
+def verb_tex_form(P)
+{
+ L = reverse(strtoascii(rtostr(P)));
+ for(SS = []; L != []; L = cdr(L)){
+ Ch = car(L); /* ^~\{} */
+ if(Ch == 92 || Ch == 94 || Ch == 123 || Ch == 125 || Ch == 126){
+ SS = append([92,Ch,123,125],SS); /* \Ch{} */
+ if(Ch != 94 && Ch != 126) /* \char` */
+ SS = append([92,99,104,97,114,96],SS);
+ continue;
+ }
+ SS = cons(Ch, SS);
+ if((Ch >= 35 && Ch <= 38) || Ch == 95) /* #$%&_ */
+ SS = cons(92, SS); /* \Ch */
+ }
+ return asciitostr(SS);
+}
+
+def tex_cuteq(S,P)
+{
+ if(P==0) return 0;
+ if(S[P]==125){ /* } */
+ if((Q=str_pair(S,P-1,"{","}"|inv=1))<0) return -1;
+ if(Q<2||S[Q-1]!=95) return Q;
+ return tex_cuteq(S,Q-2);
+ }
+ if(!isalphanum(S[Q=P--])) return -1;
+ while(P>0&&isalphanum(S[P])) P--;
+ if(S[P]==92){ /* \ */
+ if(P==0) return P;
+ else P--;
+ }
+ if(S[P]!=95||P==0) return Q; /* _ */
+ return tex_cuteq(S,P-1);
+}
+
+
+def texket(S)
+{
+ if(!isint(F=getopt(all))) F=0;
+ if(type(S)==7){
+ L=str_len(S);
+ SS=strtoascii(S);
+ }else{
+ L=length(S);
+ SS=S;
+ }
+ for(T="",I=I0=0;I<L-1;){
+ J=str_char(SS,I,"(");
+ if(J<0) break;
+ if(J<L-1 && J>4 && str_str(SS,"\\left"|top=J-5,end=J-1)>=0){
+ I=J+1;continue;
+ }
+ if((K=str_pair(SS,J+1,"(",")"))>=0){
+ KK=str_char(SS,J+2,"(");
+ if(KK>K||KK<0){
+ if(F!=1){
+ if(!F){
+ for(N=J+1;N<K;N++) /* + - _ { } */
+ if(!isalphanum(P=SS[N])&&findin(P,[32,43,45,95,123,125])<0) break;
+ }else N=K;
+ if(N==K){
+ I=K+1;continue;
+ }
+ }
+ T=T+str_cut(SS,I0,J-1)+"\\left"+str_cut(SS,J,K-1)+"\\right)";
+ I0=I=K+1;
+ }else{
+ T=T+str_cut(SS,I0,J-1)+"\\left("+texket(str_cut(SS,J+1,K-1)|all=F) +"\\right)";
+ I0=I=K+1;
+ }
+ }else break;
+ }
+ return T+str_cut(SS,I0,L);
+}
+
+
+def my_tex_form(S)
+{
+ if(getopt(skip) != 1){
+ if(type(S)==1 && S<0) return "-"+print_tex_form(-S);
+ if(type(S)==6) return mtotex(S);
+ S = print_tex_form(S);
+ for(F=Top=0;(L=str_str(S,"\\verb`"|top=Top))>=0;Top=LV+1){
+ F++;
+ if(Top==0) Tb = string_to_tb("");
+ LV = str_chr(S, L+6, "`");
+ if(LV<0) LV=str_len(S);
+ str_tb([my_tex_form(sub_str(S, Top, L-1)|skip=1), "\\texttt{"], Tb);
+ str_tb([verb_tex_form(sub_str(S,L+6, LV-1)),"}"], Tb);
+ Top=LV+1;
+ }
+ if(F>0){
+ str_tb(my_tex_form(sub_str(S, Top,str_len(S)-1)|skip=1), Tb);
+ return tb_to_string(Tb);
+ }
+ }
+ if(S==0) return "";
+ S = ltov(strtoascii(S));
+ L = length(S)-1;
+ while(L >= 1 && S[L] == 10)
+ L--;
+ if((Fr=getopt(frac))!=0 && Fr!=1) Fr=2;
+ for(I = L+1, T = K = 0, SS = []; --I >= 0; ){
+ if(S[I] == 32 && I!=L){
+ if(I==L) continue;
+ if(findin(S[I+1], [32,40,41,43,45,123,125]) >= 0 /* " ()+-{}" */
+ || (S[I+1] >= 49 && S[I+1] <= 57)) /* 1 - 9 */
+ if(I == 0 || S[I-1] >= 32) continue;
+ }
+ if(Fr && S[I]>=48 && S[I]<=57){ /* 2/3 -> \tfrac{2}{3} */
+ for(K=0,II=I; II>=0; II--){
+ if(S[II]>=48 && S[II]<=57) continue;
+ if(S[II]==47){ /* / */
+ if(K>0) break;
+ K=II;
+ }else break;
+ }
+ if(K>II+1){
+ SS=cons(125,SS);
+ for(J=I; J>K; J--) SS=cons(S[J],SS);
+ if(AMSTeX){
+ SS=cons(123,SS);SS=cons(125,SS);
+ }else{
+ for(J=[114,101,118,111,92];J!=[];J=cdr(J)) /* \over */
+ SS=cons(car(J),SS);
+ }
+ for(J=K-1;J>II;J--) SS=cons(S[J],SS);
+ SS=cons(123,SS);
+ if(AMSTeX){
+ J=(Fr==2)?[99,97,114,102,116,92]:[99,97,114,102,92];
+ for(;J!=[];J=cdr(J)) /* \tfrac */
+ SS=cons(car(J),SS);
+ }
+ I=II+1;
+ }else{
+ for(;I>II;I--) SS = cons(S[I], SS);
+ I++;
+ }
+ continue;
+ }
+ SS = cons(S[I], SS);
+ }
+ SS=str_subst(SS,"\\\\\n\\end{pmatrix}","\n\\end{pmatrix}"|raw=1);
+ Subst=getopt(subst);
+ Sub0=["{asin}","{acos}","{atan}"];
+ Sub1=["\\arcsin ","\\arccos","\\arctan "];
+ if(type(Subst) == 4){
+ Sub0=append(Sub0,Subst[0]);Sub1=append(Sub1,Subst[1]);
+ }
+ SS = str_subst(SS,Sub0,Sub1|raw=1);
+ S = ltov(SS);
+ L = length(S);
+ SS = [];
+ while(--L >= 0){
+ if(S[I=L] == 125){
+ while(--I >= 0 && S[I] == 125);
+ J = 2*I - L;
+ if(J >= 0 && S[I] != 123){
+ for(K = J; K < I && S[K] == 123; K++);
+ if(K == I){
+ if(J-- <= 0 || S[J] < 65 || S[J] > 122 || (S[J] > 90 && S[J] < 97)){
+ SS = cons(S[I],SS);
+ L = J+1;
+ continue;
+ }
+ }
+ }
+ }
+ SS = cons(S[L],SS);
+ }
+ RT=getopt(root);
+ for(Top=0;;Top++){ /* ((x+1))^{y} , 1/y=2,3,...,9 */
+#if 1
+ P=str_str(SS,["))^","^{\\tfrac{1}"]|top=Top);
+ if(P[0]<0) break;
+ Sq=0;
+ if(P[0]==0){
+ P=P[1];
+ if((Q=str_pair(SS,P,"(",")"|inv=1))<0||SS[Q+1]!=40) continue;
+ if((RT==2||(RT!=0 && P-Q<33)) && str_str(SS,"{\\tfrac{1}"|top=P+3,end=P+3)==P+3
+ && SS[P+14]==125){
+ if((Sq=SS[P+13]-48)<2||Sq>9) Sq=0;
+ }
+ F=2;
+ }else{
+ P=P[1];
+ if(SS[P+12]!=125||(Sq=(SS[P+11]-48))<2||Sq>9) break;
+ if(SS[P-1]==125){
+ if((Q=str_pair(SS,P-2,"{","}"|inv=1))<0) break;
+ if(Q>1&&SS[Q-1]==95){
+ if((Q=tex_cuteq(SS,Q-2))<0) break;
+ F=0;
+ }else F=1;
+ }else{
+ if(!isalphanum(SS[Q=P-1]) || (Q=tex_cuteq(SS,Q))<0) break;
+ F=0;
+ }
+ if(RT!=2&&P-Q>32) break;
+ }
+#else
+ if((P=str_str(SS,"))^"|top=Top))<0 || (Q=str_pair(SS,P,"(",")"|inv=1))<0) break;
+ else F=2;
+ Sq=0;
+ if((RT==2||(RT!=0 && P-Q<33)) && str_str(SS,"{\\tfrac{1}"|top=P+3,end=P+3)==P+3
+ && SS[P+14]==125){
+ if((Sq=SS[P+13]-48)<2||Sq>9) Sq=0;
+ }
+#endif
+ for(I=0,S=[];SS!=[];SS=cdr(SS),I++){
+ if(I==Q){
+ if(Sq){
+ S=append([116,114,113,115,92],S);
+ if(Sq>2) S=append([93,Sq+48,91],S);
+ S=cons(123,S);
+ if(F==2) SS=cdr(SS);
+ else if(F==0) S=cons(car(SS),S);
+ }else if(F==2&&P-Q==3){ /* (2)^x -> 2^x*/
+ SS=cdr(SS);SS=cdr(SS);
+ S=cons(123,S);S=cons(car(SS),S);S=cons(125,S);
+ SS=cdr(SS);SS=cdr(SS);
+ I+=3;
+ }
+ continue;
+ }else if(I==P){
+ if(Sq){
+ if(F>0) S=cdr(S);
+ S=cons(125,S);
+ if(F==2) SS=cdr(SS);
+ for(J=0;J<12;J++) SS=cdr(SS);
+ }
+ continue;
+ }
+ S=cons(car(SS),S);
+ }
+ SS=reverse(S);
+ Top=P;
+ }
+ S=asciitostr(SS);
+ if((K=getopt(ket))==1) S=texket(S);
+ else if(K==2) S=texket(S|all=1);
+ return S;
+}
+
+def smallmattex(S)
+{
+ return str_subst(S,[["\\begin{pmatrix}","\\left(\\begin{smallmatrix}"],
+ ["\\end{pmatrix}","\\end{smallmatrix}\\right)"],
+ ["\\begin{Bmatrix}","\\left\\{\\begin{smallmatrix}"],
+ ["\\end{Bmatrix}","\\end{smallmatrix}\\right\\}"],
+ ["\\begin{bmatrix}","\\left[{\\begin{smallmatrix}"],
+ ["\\end{bmatrix}","\\end{smallmatrix}\\right]"],
+ ["\\begin{vmatrix}","\\left|\\begin{smallmatrix}"],
+ ["\\end{vmatrix}","\\end{smallmatrix}\\right|"],
+ ["\\begin{Vmatrix}","\\left\\|\\begin{smallmatrix}"],
+ ["\\end{Vmatrix}","\\end{smallmatrix}\\right\\|"],
+ ["\\begin{matrix}","\\begin{smallmatrix}"],
+ ["\\end{matrix}","\\end{smallmatrix}"]],0);
+}
+
+
+def divmattex(S,T)
+{
+ TF=["matrix","pmatrix","Bmatrix","bmatrix","vmatrix","Vmatrix"];
+ TG=[0,"(","\\{","[","|","\\|"];
+ TH=[0,")","\\}","]","|","\\|"];
+ if(type(S)!=7) S=mtotex(S);
+ S=strtoascii(S0=S);
+ if((P0=str_str(S,"\\begin{"))<0 || (P1=str_str(S,"}"|top=P0+7))<0)
+ return S0;
+ F=str_cut(S,P0+7,P1-1);
+ if((K=findin(F,TF))<0) return S0;
+ Q=str_str(S,"\\end{"+F+"}");
+ if(Q<0) return S0;
+ for(J=P1+1;S[J]<33;J++);
+ for(L0=L=[],I=J;J<Q;J++){
+ if(S[J]==38){ /* & */
+ if(I>=J) L0=cons(0,L0);
+ else L0=cons(str_cut(S,I,J-1),L0);
+ I=J+1;
+ }
+ if(S[J]==92&&S[J+1]==92){ /* \\ */
+ if(I>=J) L0=cons(0,L0);
+ else L0=cons(str_cut(S,I,J-1),L0);
+ L=cons(reverse(L0),L);
+ L0=[];
+ J++;
+ for(I=J+1;S[I]<33;I++);
+ }
+ }
+ J--;
+ if(S[J]<33) J--;
+ if(I<=J) L0=cons(str_cut(S,I,J),L0);
+ if(length(L0)>0) L=cons(reverse(L0),L);
+ L=lv2m(reverse(L)); /* get matrix */
+ if(T==0) return L;
+ Size=size(L);S0=Size[0];
+ if(type(T[0])!=4){
+ S1=Size[1];
+ T=append(T,[S1]);
+ for(TT=[],I=0;T!=[];T=cdr(T)){
+ J=car(T);
+ if(J>S1) J=S1;
+ for(T0=[];J>I;J--) T0=cons(J-1,T0);
+ if(T0!=[]) TT=cons(T0,TT);
+ I=car(T);
+ }
+ T=reverse(TT);
+ }
+ SS=length(T);
+ St=str_tb(0,0);
+ if(SS==1) St=str_tb("\\begin{"+F+"}\n",St);
+ else{
+ if(K>0) St=str_tb("&\\left"+TG[K],St);
+ St=str_tb("\\begin{matrix}\n",St);
+ }
+ for(;T!=[];T=cdr(T)){
+ for(I=0;I<S0;I++){
+ for(J=0,TT=car(T);TT!=[];TT=cdr(TT),J++){
+ if(J>0) St=str_tb("&",St);
+ if(L[I][car(TT)]!=0) St=str_tb(L[I][car(TT)],St);
+ }
+ if(I<S0-1) St=str_tb("\\\\",St);
+ St=str_tb("\n",St);
+ }
+ if(length(T)>1)
+ St=str_tb("\\end{matrix}\\right.\\\\\n&\\quad\\left.\\begin{matrix}\n",St);
+ else{
+ if(SS==1) St=str_tb("\\end{"+F+"}\n",St);
+ else St=str_tb("\\end{matrix}\\right"+TH[K]+"\n",St);
+ }
+ }
+ S=str_tb(0,St);
+ if(SS==1) return S;
+ return texbegin("align*",S);
+}
+
+def str_subst(S, L0, L1)
+{
+ if(type(S) == 7)
+ S = strtoascii(S);
+ if(type(S) == 4)
+ S = ltov(S);
+ SE = length(S);
+ if(L1 == 0){
+ for(L1 = L = [], L0 = reverse(L0); L0 != []; L0 = cdr(L0)){
+ L = cons(car(L0)[0], L);
+ L1 = cons(car(L0)[1], L1);
+ }
+ L0 = L;
+ }
+ if(type(L0)==7) L0 = [strtoascii(L0)];
+ else{
+ for(LT = []; L0 != []; L0 = cdr(L0))
+ LT = cons(strtoascii(car(L0)), LT);
+ L0 = ltov(LT);
+ }
+ E0 = length(L0);
+ if(type(L1)==7) L1 = [strtoascii(L1)];
+ else{
+ for(LT = []; L1 != []; L1 = cdr(L1))
+ LT = cons(strtoascii(car(L1)), LT);
+ L1 = ltov(LT);
+ }
+ if(getopt(inv)==1){
+ L2=L0;L0=L1;L0=L2;
+ }
+ if((SJIS=getopt(sjis))!=1) SJIS=0;
+ for(J = JJ = 0, ST = []; J < SE; J++){
+ SP = S[J];
+ for(I = E0-1; I >= 0; I--){
+ if(SP != L0[I][0] || J + (K = length(L0[I])) > SE)
+ continue;
+ while(--K >= 1)
+ if(L0[I][K] != S[J+K]) break;
+ if(K > 0) continue;
+ for(KE = length(L1[I]), K = 0 ;K < KE; K++)
+ ST = cons(L1[I][K],ST);
+ J += length(L0[I])-1;
+ break;
+ }
+ if(I < 0){
+ ST = cons(S[J],ST);
+ if(SJIS && (V=S[J])>128){
+ if(V<160 || (V>223 && V<240)) ST = cons(S[J++],ST);
+ }
+ }
+ }
+ if(getopt(raw)==1) return reverse(ST);
+ return asciitostr(reverse(ST));
+}
+
+def dviout0(L)
+{
+ Cmd=["TikZ","TeXLim","TeXEq","DVIOUT","XYPrec","XYcm","XYLim","Canvas"];
+ if(type(Opt=getopt(opt))==7){
+ if((F=findin(Opt,Cmd)) < 0) return -1;
+ if(L==-1){
+ if(F<=3){
+ if(F==0) V=TikZ;
+ else if(F==1) V=TeXLim;
+ else if(F==2) V=TeXEq;
+ else V=iand(DVIOUTF,1);
+ }else{
+ if(F==4) V=XYPrec;
+ else if(F==5) V=XYcm;
+ else if(F==6) V=XYLim;
+ else V=Canvas;
+ }
+ return V;
+ }
+ if(F==0) TikZ=L;
+ else if(F==2) TeXEq=L;
+ else if(F==3){
+ if(iand(DVIOUTF,1)==L)
+ mycat0(["DVIOUTA=\"", DVIOUTA,"\""],1);
+ else dviout0(4);
+ return 1;
+ }else if(F==7&&type(L)==4)
+ Canvas=L;
+ else if(L>0){
+ if(F==1) TeXLim=L;
+ else if(F==4) XYPrec=L;
+ else if(F==5) XYcm=L;
+ else if(F==6) XYLim=L;
+ }
+ mycat0([Cmd[F],"=",L],1);
+ return 1;
+ }
+ if(type(L) == 4){
+ for( ; L != []; L = cdr(L)) dviout0(car(L));
+ return 1;
+ }
+ if(type(L) == 7){
+ if(L=="") dviout(" \n"|keep=1);
+ else if(L=="cls") dviout0(0);
+ else if(L=="show") dviout(" ");
+ else if(L=="?") dviout0(3);
+ else dviout("\\"+L+"\n"|keep=1);
+ return 1;
+ }
+ if(L == 0)
+ dviout(" "|keep=1,clear=1);
+ else if(L == 1)
+ dviout(" ");
+ else if(L == 2)
+ dviout(" "|clear=1);
+ else if(L>10)
+ dviout("\\setcounter{MaxMatrixCols}{"+rtostr(L)+"}%"|keep=1);
+ else if(L < 0)
+ dviout(" "|delete=-L,keep=1);
+ else if(L == 3){
+ mycat0(["DIROUT =\"", DIROUT,"\""],1);
+ mycat0(["DVIOUTH=\"", DVIOUTH,"\""],1);
+ mycat0(["DVIOUTA=\"", DVIOUTA,"\""],1);
+ mycat0(["DVIOUTB=\"", DVIOUTB,"\""],1);
+ mycat0(["DVIOUTL=\"", DVIOUTL,"\""],1);
+ mycat(["Canvas =", Canvas]);
+ mycat(["TeXLim =", TeXLim]);
+ mycat(["TeXEq =", TeXEq]);
+ mycat(["AMSTeX =", AMSTeX]);
+ mycat(["TikZ =", TikZ]);
+ mycat(["XYPrec =", XYPrec]);
+ mycat(["XYcm =", XYcm]);
+ mycat(["XYLim =", XYLim]);
+ }else if(L==4){
+ Tmp=DVIOUTA; DVIOUTA=DVIOUTB; DVIOUTB=Tmp;
+ mycat0(["DVIOUTA=\"", DVIOUTA,"\""],1);
+ DVIOUTF++;
+ }else if(L==5){
+ if(!iand(DVIOUTF,1)) dviout0(4);
+ }else if(L==6){
+ TikZ=1;mycat("TikZ=1");
+ }else if(L==7){
+ TikZ=0;mycat("TikZ=0");
+ }
+ return 1;
+}
+
+def myhelp(T)
+{
+ /* extern DVIOUT; */
+ /* extern HDVI; */
+ /* extern DVIOUTH; */
+
+ if(type(T)==2){
+ if(T==getbygrs){
+ getbygrs(0,0);
+ return 0;
+ }
+ else if(T==m2mc){
+ m2mc(0,0);
+ return 0;
+ }
+ else if(T==mgen){
+ mgen(0,0,0,0);
+ return 0;
+ }
+ else T=rtostr(T);
+ }
+ if(type(T)==4 && typeT[0]==7){
+ if(length(T)==2 && type(T[1])==1){
+ DVIOUTH="start "+T[0]+" -"+rtostr(T[1])+"-hyper:0x90 \"%ASIRROOT%\\help\\os_muldif.dvi\" #r:%LABEL%";
+ }else if(str_len(T[0])>2) DVIOUTH=T[0];
+ mycat(["DVIOUTH="+DVIOUTH,"\nmyhelp(fn) is set!"]);
+ return 0;
+ }
+ if(T==0){
+ mycat([
+ "myhelp(t) : show help\n",
+#ifdef USEMODULE
+ " t : -1 (dvi), 1 (pdf) or os_md.getbygrs, os_md.m2mc, os_md.mgen\n",
+#else
+ " t : -1 (dvi), 1 (pdf) or getbygrs, m2mc, mgen\n",
+#endif
+ " \"fn\" : Help of the function fn\n",
+ " [path,n] : path of dviout, n = # dviout\n",
+ " [DVIOUTH] : Way to jump to the help of a function\n",
+ " default: start dviout -2 \"%ASIRTOOT%\\help\\os_muldif.dvi\" #r:%LABEL%"
+ ]);
+ return 0;
+ }
+ if(type(T)==7){
+ if(str_str(T,"os_md.")==0) T=str_cut(T,6,str_len(T)-1);
+ Dr=str_subst(DVIOUTH,["%ASIRROOT%","%LABEL%"],[get_rootdir(),"r:"+str_subst(T,"_","")]);
+ shell(Dr);
+ return 0;
+ }
+ Dr=get_rootdir();
+ if(T==-1) Dr+="\\help\\os_muldif.dvi";
+ else Dr+="\\help\\os_muldif.pdf";
+ if(!isMs()) Dr=str_subst(Dr,"\\","/");
+ shell(Dr);
+ return 0;
+}
+
+def isMs()
+{
+ if(type(Tmp=getenv("TEMP"))!=7) {
+ if (type(Tmp=getenv("TMP")) != 7) Tmp=getenv("HOME");
+ }
+ if(type(Tmp)==7 && str_chr(Tmp,0,"\\")==2) return 1;
+ else return 0;
+}
+
+def tocsv(L)
+{
+ if(type(L)==6) L=m2ll(L);
+ else if(type(L)==5) L=vtol(L);
+ Null=getopt(null);
+ Tb=str_tb(0,0);
+ for(LL=L; LL!=[]; LL=cdr(LL)){
+ LT=car(LL);
+ if(type(LT)==5) LT=vtol(LT);
+ if(type(LT)<4) LT=[LT];
+ for(N=0; LT!=[]; LT=cdr(LT),N++){
+ if(N) str_tb(", ",Tb);
+ if((T=car(LT))==Null) continue;
+ if(type(T)==7){
+ K=str_len(T);
+ T=str_subst(T,["\""],["\"\""]);
+ if(str_len(T)>K||str_char(T,0,",")>=0) T="\""+T+"\"";
+ str_tb(T,Tb);
+ }else str_tb(rtostr(T),Tb);
+ }
+ str_tb("\n",Tb);
+ }
+ S=str_tb(0,Tb);
+ if(type(EXE=getopt(exe))!=1&&EXE!=0&&type(EXE)!=7) return S;
+ if(type(F)!=7){
+ F="risaout";
+ if(EXE>=2&&EXE<=9) F+=rtostr(EXE);
+ F=DIROUTD+F+".csv";
+ }else F=S;
+ if(EXE!=0 && access(F)) remove_file(F);
+ fcat(F,S|exe=1);
+ return 1;
+}
+
+def readcsv(F)
+{
+ if((ID=open_file(F))<0) return -1;
+ SJIS=isMs();
+ L=[];
+ if(type(V=getopt(eval))!=4){
+ if(V=="all") V=1;
+ else if(type(V)==1) V=[V];
+ else V=[];
+ }
+ Eq=getopt(eq);
+ Sp=getopt(sp);
+ if(type(T=getopt(col))!=1) T=0;
+ Null=getopt(null);
+ if(type(Null)<0) Null=(Eq==1)?0:"";
+ while((S=get_line(ID))!=0){
+ S=strtoascii(S);
+ N=length(S);
+ for(I=J=F=0,LL=LT=[];I<N;I++){
+ C=S[I];
+ if(F==0){
+ if(C<=32) continue;
+ if(C==34){F=2;continue;}
+ F=1;
+ }
+ if(F==2 && C==34){
+ if(I<N-1&& S[I+1]==34){
+ LT=cons(34,LT);I++;continue;
+ }
+ F=-2;
+ }
+ if(F==1){
+ if((C==44&&Sp!=1)||(C<=32&&Sp==1)) F=-1;
+ else if(C<32 && C!=9) continue;
+ }
+ if(SJIS && I<N-1 && ((C>128 && C<160)||(C>223 && C<240))){
+ LT=cons(C,LT);LT=cons(S[++I],LT);continue;
+ }
+ if(F>0){
+ LT=cons(C,LT);continue;
+ }
+ LS=asciitostr(reverse(LT));
+ if(V==1||findin(++J,V)>=0){
+ if(Eq==1) LS=(LS=="")?Null:eval_str(LS);
+ else LS=(isdecimal(LS))?eval_str(LS):((LS=="")?Null:LS);
+ }
+ if(!T || T==J) LL=cons(LS,LL);
+ if(F==-2) while(++I<N && Sp!=1 && S[I]!=44);
+ F=0;LT=[];
+ }
+ if(I<=N && (Sp!=1 || length(LT)>0)){ /* lastline */
+ LS=asciitostr(reverse(LT));
+ if(V==1||findin(++J,V)>=0){
+ if(Eq==1) LS=(LS=="")?Null:eval_str(LS);
+ else LS=(isdecimal(LS))?eval_str(LS):((LS=="")?Null:LS);
+ }
+ if(!T || T==J) LL=cons(LS,LL);
+ }
+ L=cons(reverse(LL),L);
+ }
+ close_file(ID);
+ if(T) L=m2l(L|flat=1);
+ L=reverse(L);
+ return L;
+}
+
+def showbyshell(S)
+{
+ Id = getbyshell(S);
+ if(Id<0) return Id;
+ while((S=get_line(Id))!=0) print(S,2);
+ return close_file(Id);
+}
+
+
+def getbyshell(S)
+{
+ /* extern DIROUT; */
+
+ Home=getenv("HOME");
+ if(type(Home)!=7) Home="";
+ if(type(Tmp=getenv("TEMP"))!=7 && type(Tmp=getenv("TMP")) != 7)
+ Tmp=str_subst(DIROUT,["%HOME%","%ASIRROOT%"],[Home,get_rootdir()]);
+ Sep=isMs()?"\\":"/";
+ F=Tmp+Sep+"muldif.tmp";
+ if(type(S)<=1 && S>=0) close_file(S);
+ remove_file(F);
+ if(type(S)<=1) return -1;
+ shell(S+" > \""+F+"\"");
+ return open_file(F);
+}
+
+def show(P)
+{
+ T=type(P);
+ S=P;
+ Var=getopt(opt);
+ if(Var=="verb"){
+ dviout("{\\tt"+verb_tex_form(T)+"}\n\n");
+ return;
+ }
+ if(type(Var)<0) Var=getopt(var);
+ if(T==6){
+ if((Sp=getopt(sp))==1 || Sp==2)
+ S=mtotex(P|lim=1,small=2,sp=Sp,null=1,mat="B");
+ else if(type(Var)==4 || type(Var)==7)
+ S=mtotex(P|lim=1,small=2,var=Var);
+ else
+ S=mtotex(P|lim=1,small=2);
+ Size=size(P);
+ Size=(Size[0]>Size[1])?Size[0]:Size[1];
+ if(Size>10) dviout0(Size);
+ }else if(T<=3){
+ X=0;
+ if(Var=="pfrac") X=var(P);
+ else X=getopt(pfrac);
+ if(isvar(X)){
+ pfrac(P,X|dviout=1);
+ return;
+ }
+ Opt=cons(["dviout",1],getopt());
+ if(type(Var)==2||type(Var)==4||type(Var)==7) fctrtos(P|option_list=Opt);
+ else{
+ if(isdif(P)!=0) Opt=cons(["var","dif"],Opt);
+ else Opt=cons(["br",1],Opt);
+ fctrtos(P|option_list=Opt);
+ }
+ return;
+ }else if(T==4){
+ if(type(Var)==4 || type(Var)==7){
+ S=ltotex(P|option_list=getopt());
+ if(Var=="text"){
+ dviout(S);
+ return;
+ }
+ }else{
+ for(F=0,L=P;L!=[] && F!=-1;L=cdr(L)){
+ LL=car(L);
+ if(type(LL)==4){
+ if(F==0){
+ T=type(LL[0]);
+ if(T==4) F=2; /* [[[? */
+ else if(T==1 || T==0) F=1; /* [[num,.. */
+ }
+ if(F==1){
+ if(length(LL)!=2 || !isint(LL[0]) || LL[0]<0 || type(LL[1])>3)
+ F=-1; /* [[num,rat],[num,rat],...] */
+ }else if(F==2){
+ for(LLT=LL; LLT!=[] && F!=-1; LLT=cdr(LLT)){
+ LLL=car(LLT); /* [[[num,rat],[num,rat],...],[[..],..]],....] */
+ if(length(LLL)!=2 || !isint(LLL[0]) || LLL[0]<0 || type(LLL[1])>3)
+ F=-1;
+ }
+ }
+ }else if((F==0 || F==7) && type(LL)==7){
+ F=7;
+ }else F=-1;
+ }
+ if(F==1) S=ltotex(P|opt="spt");
+ else if(F==2){
+ M=mtranspose(lv2m(S));
+ show(M|sp=1); /* GRS */
+ return;
+ }else if(F==7) S=ltotex(P|opt="spts");
+ else{
+ for(F=0,L=P;L!=[] && F!=-1;L=cdr(L)){
+ LL=car(L);
+ if(type(LL)!=4){
+ F=-1; break;
+ }
+ for(LLT=LL; LLT!=[] && F!=-1; LLT=cdr(LLT)){
+ T=type(LLL=car(LLT));
+ if(T<7 && T!=4) F0++;
+ else if(T==7){
+ if(str_char(LLL,0,"\\")<0) F1++;
+ else F2++;
+ }else F=-1;
+ }
+ }
+ }
+ if(F==0 && F0>0 && (F1+F2)>0){ /* list of list of eq and str */
+ if(F2>0) S=ltotex(P|opt=["cr","spts0"],str=1);
+ else S=ltotex(P|opt=["cr","spts"]);
+ }else{
+ for(S="[";;){
+ S+=my_tex_form(car(P));
+ if((P=cdr(P))==[]){
+ S+="]";break;
+ }
+ S+=",";
+ }
+ }
+ }
+ }else if(T==7){
+ if(Var=="raw" ||
+ (Var !="eq" && str_chr(P,0,"\\")<0 && str_char(P,0,"^")<0 && str_char(P,0,"_")<0
+ && str_char(P,0,"&")<0)){
+ dviout(P+"\n\n");
+ return;
+ }
+ }
+ dviout(S|eq=5);
+}
+
+
+/* options : eq = 1 - 8, clear=1, keep=1, delete=1, title=s,
+ fctr=1, begin=s */
+def dviout(L)
+{
+ /* extern AMSTeX, TeXEq, DIROUT, DVIOUTA, DVIOUTB, DVIOUTL; */
+
+ MyEq = [
+ ["\\[\n ","\\]"],
+ ["\\begin{align}\n","\\end{align}"],
+ ["\\begin{gather}\n ","\\end{gather}"],
+ ["\\begin{multline}\n ","\\\\[-15pt]\\end{multline}"],
+ ["\\begin{align}\\begin{split}\n &","\\end{split}\\end{align}"],
+ ["\\begin{align*}\n &","\\end{align*}"],
+ ["\\begin{gather*}\n ","\\end{gather*}"],
+ ["\\begin{equation}\n ","\\end{equation}"]
+ ];
+ if(!chkfun("print_tex_form", "names.rr"))
+ return 0;
+ Home=getenv("HOME");
+ if(type(Home)!=7) Home="";
+ Dir=str_subst(DIROUT,["%HOME%","%ASIRROOT%","\\"],[Home,get_rootdir(),"/"]);
+ Dirout=Dir+(AMSTeX?"/out.tex":"/out0.tex");
+ Risaout=(AMSTeX)?"risaout":"risaout0";
+ Dirisa=Dir+"/"+Risaout+".tex";
+ Viewer="dviout";
+ SV=["c:/w32tex/dviout","c:/dviout"];
+ Risatex=str_subst(AMSTeX?DVIOUTA:DVIOUTL,
+ ["%HOME%","%ASIRROOT%","%TikZ%"],[Home,get_rootdir(),rtostr(TikZ)]);
+ if(isMs() && !access(Risatex)){
+ for(TV=SV; TV!=[]; TV=cdr(TV)){
+ VV=car(TV)+"/dviout.exe";
+ if(access(VV)){
+ Viewer=str_subst(VV,"/","\\");
+ break;
+ }
+ }
+ output(Risatex);
+ print("cd \""+str_subst(Dir,"/","\\")+"\"");
+ print("latex -src=cr,display,hbox,math,par "+Risaout);
+ print("start "+Viewer+" -1 \""+Dr+"\\tex\\"+Risaout+"\" 1000");
+ output();
+ }
+ if(access(Dirisa) == 0){
+ D0="\""+(isMs()?str_subst(Dir,"/","\\")+"\"":Dir);
+ shell("mkdir "+D0);
+ output(Dirisa);
+ if(AMSTeX){
+ print("\\documentclass[a4paper]{amsart}");
+ print("\\usepackage{amsmath,amssymb,amsfonts}");
+ }else
+ print("\\documentclass[a4paper]{article}");
+ print("\\pagestyle{empty}\n\\begin{document}\n\\thispagestyle{empty}");
+ print(AMSTeX?"\\input{out}\n\\end{document}":"\\input{out0}\n\\end{document}");
+ output();
+ }
+ if((K = getopt(delete)) >= 1){ /* delete */
+ LC = 0;
+ if(type(K) == 1 && K > 10) K = 10;
+ if(type(K) == 4){
+ K = qsort(K);
+ LC = 1; /* specific lines */
+ }
+ Done = 1;
+ Id = open_file(Dirout);
+ if(Id >= 0){
+ Buf = Buf0 = Buf1 = Key = "";
+ PE = 0;
+ if(type(K) == 1)
+ BufE = newvect(K--);
+ Dout = Dirout+"0";
+ remove_file(Dout);
+ output(Dout);
+ while((S = get_line(Id)) != 0){
+ if(LC){
+ while(K != [] && car(K) < LC)
+ K = cdr(K);
+ if(K == [] || car(K) > LC)
+ output(S);
+ }
+ if(Key == ""){
+ if((P0 = str_str(S,"\\begin{")) == 0){
+ Key = sub_str(S,7,str_str(S,"}")-1);
+ if(findin(Key,["align", "gather","multline", "equation","align*"]) < 0)
+ Key = "";
+ else{
+ Key = "\\end{"+Key+"}";
+ if(!LC){
+ if(Buf != ""){
+ if(PE < K)
+ BufE[PE++] = Buf1+Buf;
+ else{
+ if(K > 0){
+ print(BufE[0]);
+ for(I = 1; I < K; I++)
+ BufE[I-1]=BufE[I];
+ BufE[K-1] = Buf1+Buf;
+ }else
+ print(Buf1+Buf);
+ Done = 0;
+ }
+ Buf1 = Buf0;
+ Buf = Buf0 ="";
+ }
+ }
+ }
+ }
+ if(Key == "" && !LC) Buf0 += S;
+ }
+ if(Key != ""){
+ if(!LC) Buf += S;
+ if(str_str(S,Key) >= 0){
+ Key = "";
+ if(LC) LC++;
+ }
+ }
+ }
+ output();
+ close_file(Id);
+ }
+ if(Done==0){
+ Id = open_file(Dout);
+ if(Id >= 0){
+ remove_file(Dirout);
+ output(Dirout);
+ while((S = get_line(Id)) != 0)
+ print(S,0);
+ output();
+ close_file(Id);
+ }
+ remove_file(Dout);
+ }else L=" ";
+ }
+ if(getopt(clear) == 1 || Done == 1){ /* clear */
+ remove_file(Dirout);
+ if(L == "" || L == " "){
+ output(Dirout);
+ print("\\centerline{Risa/Asir}");
+ output();
+ }
+ }
+ if(L != " "){
+ Eq=1;
+ Eqo = getopt(eq);
+ Fc = getopt(fctr);
+ if(Fc == 1 && (type(L) == 2 || type(L) == 3)){
+ L = fctrtos(L|TeX=1);
+ if(type(L) == 4)
+ L = "\\fact{"+L[0]+"}{"+L[1]+"}";
+ if(type(Eqo) != 0 && type(Eqo) !=7){
+ Eqo=0;
+ }
+ }
+ if(type(L) != 4 || getopt(mult) != 1)
+ L = [L];
+ if(type(Eqo)!=7 && (Eqo<1 || Eqo>8))
+ Eqo = (AMSTeX==1)?TeXEq:1;
+ Title = getopt(title);
+ if(type(Title) == 7){
+ output(Dirout);
+ print(Title);
+ output();
+ }
+ Sb = getopt(subst);
+ for( ; L != []; L = cdr(L)){
+ Eq = 1;
+ if(type(LT=car(L)) != 7 && type(LT) != 21)
+ LT = my_tex_form(LT);
+ else if(type(getopt(eq)) < 0)
+ Eq = 0;
+ if(type(Sb) == 4)
+ LT = str_subst(LT,Sb[0],Sb[1]);
+ output(Dirout);
+ if(Eq == 1){
+ if(type(Eqo)==7)
+ print(texbegin(Eqo,LT));
+ else if(Eqo >= 1 && Eqo <= 8){
+ mycat0([MyEq[Eqo-1][0],LT,"%"],1);
+ print(MyEq[Eqo-1][1]);
+ }else print(LT);
+ }else print(LT);
+ output();
+ }
+ }
+ if(str_char(Risatex,0," ")>=0 && str_char(DVIOUTA,0," ")<0 && str_char(DVIOUTB,0," ")<0
+ && str_char(DVIOUTL,0," ")<0)
+ Risatex="\""+Risatex+"\"";
+ if(getopt(keep) != 1) shell(Risatex);
+ return 1;
+}
+
+def rtotex(P)
+{
+ S = my_tex_form(P);
+ return (str_len(S) == 1)?S:"{"+S+"}";
+}
+
+def mtotex(M)
+{
+ /* extern TexLim; */
+
+ MB=mat(["(",")","p"],["\\{","\\}","B"],["[","]","b"],["|","|","v"],
+ ["\\|","\\|","V"], [".",".",""]);
+ if(type(MT=getopt(mat))==7){
+ MT=findin(MT,["p","B","b","v","V",""]);
+ if(MT<0) MT=0;
+ }
+ else MT=0;
+ MT=MB[MT];
+ if((F=getopt(small))!=1 && F!=2) F=0;
+ Lim=getopt(lim);
+ if(type(Lim)==1){
+ if(Lim<30 && Lim!=0) Lim = TexLim;
+ }else Lim=0;
+ FL=getopt(len);
+ Rw=getopt(raw);
+ Sp=getopt(sp);
+ Idx=getopt(idx);
+ if(type(Idx)==4) Idx=ltov(Idx);
+ if(type(Idx)==6 && length(Idx)==0) Idx=-1;
+ Var=getopt(var);
+ if(Lim>0) FL=1;
+ Null=getopt(null);
+ if(Null!=1 && Null!=2) Null=0;
+ if(type(M)==5) M=lv2m([V]);
+ else if(type(M)!=6) return monototex(M);
+ S=size(M);
+ if(FL==1){
+ L=newmat(S[0],S[1]); LL=newvect(S[1]);
+ }
+ SS=newmat(S[0],S[1]);
+ for(I=0; I<S[0]; I++){
+ for(J=0; J<S[1]; J++){
+ if(type(P=M[I][J])<=3){
+ if(P!=0 || Null == 0 || (Null==2 && I==J)){
+ SS[I][J]=(type(Var)>1)?fctrtos(P|TeX=2,lim=0,var=Var):fctrtos(P|TeX=2,lim=0);
+ if(type(P)==1 && str_str(SS[I][J],"\\frac{-"|end=0)==0)
+ SS[I][J]="-\\frac{"+str_cut(SS[I][J],7,100000);
+ }
+ }else if(type(P)==6){
+ ST= mtotex(P|small=1,len=1);
+ SS[I][J]=ST[0];
+ L[I][J]=ST[1];
+ }else if(type(P)==7){
+ if(Rw==1) SS[I][J]=P;
+ else SS[I][J]="\\text{"+P+"\}";
+ }else if(type(P)==4 && length(P)==2 && P[0]>0 && (Sp==1 || Sp==2)){
+ if(P[0]==1){
+ SS[I][J]=fctrtos(P[1]|TeX=2,lim=0);
+ }else{
+ ST=my_tex_form(P[0]);
+ if(Sp==2) ST="("+ST+")";
+ SS[I][J]="["+fctrtos(P[1]|TeX=2,lim=0)+"]_";
+ if(str_len(ST)<2) SS[I][J]+=ST;
+ else SS[I][J]+="{"+ST+"}";
+ }
+ }else
+ SS[I][J]=my_tex_form(P);
+ if(FL==1) L[I][J]=texlen(SS[I][J]);
+ }
+ }
+ if(Lim>0 || FL==1){
+ for(LLL=J=0; J<S[1];J++){
+ for(I=K=0; I<S[0];I++){
+ if(K<L[I][J]) K=L[I][J];
+ }
+ LLL+=(LL[J]=K);
+ }
+ }
+ if(Lim>0){
+ if(F==2 && LLL>Lim-2*S[1]-2) F=1;
+ if(F==1)
+ Lim=idiv(Lim*6,5);
+ if(LLL<=Lim-(2-F)*S[I]-2) Lim=0;
+ }
+ Mat=(F==1)?"smallmatrix}":"matrix}";
+ if(F==1) Out=str_tb("\\left"+MT[0]+"\\begin{",0);
+ else Out=str_tb((Lim==0)?"\\begin{"+MT[2]:"\\left"+MT[0]+"\\begin{",0);
+ Out = str_tb(Mat,Out);
+ for(I=II=LT=0; II<=S[0]; II++){
+ if(Lim==0) II=S[0];
+ if(II<S[0]){
+ K=LL[II]+(2-F);
+ if(I==II){
+ LT+=K;
+ continue;
+ }
+ if(LT+K<Lim-2) continue;
+ LT=K;
+ }
+ for(I0=I; I<II; I++){
+ if(I==I0){
+ str_tb((I==0)?
+ "\n ":
+ "\\right.\\\\\n \\allowdisplaybreaks\\\\\n &\\ \\left.\\begin{"+Mat+"\n ", Out);
+ if(Idx==1||Idx==0||type(Idx)==5){
+ for(J=I; J<II; J++){
+ if(type(Idx)!=4)
+ str_tb("("+rtostr(J+Idx)+")",Out);
+ else{
+ JJ=length(Idx)-1;
+ if(J<JJ) JJ=J;
+ str_tb(my_tex_form(Idx[JJ]),Out);
+ }
+ if(J<II) str_tb(" & ",Out);
+ }
+ str_tb("\\\\\n ",Out);
+ }
+ }
+ else str_tb("\\\\\n ",Out);
+ for(J=0; J<S[1]; J++){
+ if(J!=0) str_tb(" & ",Out);
+ if(type(SS[I][J])==7) str_tb(SS[I][J],Out);
+ }
+ }
+ Out=str_tb("\n\\end{", Out);
+ if(II==S[0]) Out=str_tb((Lim==0&&F!=1)?MT[2]+Mat:Mat+"\\right"+MT[1],Out);
+ else Out=str_tb(Mat+"\\right.",Out);
+ }
+ SS = str_tb(0,Out);
+ if(FL!=1) return SS;
+ if(F==1) LLL=idiv((LLL+S[1])*5+13,6);
+ else LLL+=2*(1+S[1]);
+ return [SS,LLL];
+}
+
+def sint(N,P)
+{
+ if( type(N)==1 || N==0 ) {
+ NT=ntype(N);
+ if((type(Opt=getopt(str))==1 || Opt==0) && Opt>=0 && P>=0){
+ if(Opt==2 || Opt==4 || Opt==0){
+ if(N==0) return (Opt>0)?"0":0;
+ Pw=0;
+ if(NT==4){
+ NN=abs(real(N));N1=abs(imag(N));
+ if(NN<N1) NN=N1;
+ }else NN=abs(N);
+ while(NN<1 && NN>-1){
+ Pw--;
+ N*=10;NN*=10;
+ }
+ while(N>=10 || N<=-10){
+ Pw++;
+ N/=10;NN/=10;
+ }
+ if(Opt==0) return sint(N*10^Pw,P-Pw-1);
+ S=(getopt(sqrt)==1)?sint(N,P|str=(Opt==4)?3:1,sqrt=1):sint(N,P|str=(Opt==4)?3:1);
+ if(Pw==0) return S;
+ if(NT==4)
+ S="("+S+")";
+ if(Pw==1){
+ if(Opt==2)
+ return S+"*10";
+ else
+ return S+"\\times10";
+ }
+ if(Opt==2)
+ return S+"*10^("+rtostr(Pw)+")";
+ else
+ return S+"\\times10^{"+rtostr(Pw)+"}";
+ }
+ if(NT==4){
+ NN=real(N);
+ if(NN!=0){
+ S=sint(NN,P|str=1);
+ if(imag(N)>0) S=S+"+";
+ }
+ else S="";
+ S=S+sint(imag(N),P|str=1)+((Opt==3)?((getopt(sqrt)==1)?"\\sqrt{-1}":"i"):"@i");
+ return S;
+ }
+ if(N<0){
+ N=-N;
+ Neg="-";
+ }else Neg="";
+ N=rint(N*10^P)/10^P;
+ NN=floor(N);
+ NV=(N-NN+1)*10^P;
+ NS=rtostr(NN);
+ if(P<=0) return Neg+NS;
+ if(NN==0 && getopt(zero)==0) NS="";
+ return Neg+NS+"."+str_cut(rtostr(NV),1,P);
+ }
+ if(NT==4)
+ return sint(real(N),P)+sint(imag(N),P)*@i;
+ X = rint( N*10^P );
+ return deval(X/10^P);
+ }
+ if( (type(N)==2) || (type(N)==3) ){
+ NN = eval(N);
+ if( type(NN)==1 )
+ return sint(NN,P|option_list=getopt());
+ else return N;
+ }
+ if( type(N)>3 && type(N) < 7)
+#ifdef USEMODULE
+ return mtransbys(os_md.sint,N,[P]|option_list=getopt());
+#else
+ return mtransbys(sint,N,[P]|option_list=getopt()));
+#endif
+ return N;
+}
+
+def frac2n(N)
+{
+ if((T=type(N))<0) return N;
+ E=(getopt(big)==1)?eval(@e):0.1;
+ if(T==1){
+ if(ntype(N)==0) return (E*N)/E;
+ else if(ntype(N)!=4) return N;
+ else return (E*(1+@i)*N)/(E*(1+@i));
+ }
+ if(T==3||T==2){
+ N=red(N);
+ Nm=nm(N);Var=vars(Nm);V=car(Var);K=length(Var);
+ for(S=0,I=mydeg(Nm,V);I>=0;I--) S+=frac2n(mycoef(Nm,I,V))*V^I;
+ return S/dn(N);
+ }
+ if(T<4) return (E*N)/E;
+#ifdef USEMODULE
+ return mtransbys(os_md.frac2n,N,[]|option_list=getopt());
+#else
+ return mtransbys(frac2n,N,[]|option_list=getopt());
+#endif
+}
+
+def xyproc(F)
+{
+ if(type(Opt=getopt(opt))!=7) Opt="";
+ if(type(Env=getopt(env))!=7)
+ Env=(!TikZ)?"xy":"tikzpicture";
+ if(F==1)
+ return(Opt=="")?"\\begin{"+Env+"}\n":"\\begin{"+Env+"}["+Opt+"]\n";
+ if(F==0) return "\\end{"+Env+"}\n";
+ if(type(F)==7){
+ F=xyproc(1|opt=Opt,env=Env)+F+xyproc(0|env=Env);
+ if(getopt(dviout)==1) dviout(F);
+ else return F;
+ }
+}
+
+def xypos(P)
+{
+ if(type(P[0])==7){
+ if(P[0]=="") S="";
+ else S=(!TikZ)?"\""+P[0]+"\"":"("+P[0]+")";
+ }
+ else{
+ if(TikZ==0 && XYcm==1){
+ X=sint(P[0]*10,XYPrec); Y=sint(P[1]*10,XYPrec);
+ }else{
+ X=sint(P[0],XYPrec); Y=sint(P[1],XYPrec);
+ }
+ S="("+rtostr(X)+","+rtostr(Y)+")";
+ }
+ if(!TikZ){
+ if(length(P)>2 && (PP=P[2])!=""){
+ S=S+" *";
+ if(type(PP)==4 && length(PP)==2 && type(PP[0])==7){
+ S=S+PP[0];
+ PP=PP[1];
+ }
+ if(type(PP)==7){
+ L=str_len(PP);
+ if(str_chr(PP,0,"$")==0 && str_chr(PP,L-1,"$")==L-1){
+ PP=str_cut(PP,1,L-2);
+ }else S+="\\txt";
+ }
+ else PP=my_tex_form(PP);
+ S=S+"{"+PP+"}";
+ }
+ if(length(P)>3){
+ if(type(P[3])==7 && P[3]!="") S=S+"=\""+P[3]+"\"";
+ if(length(P)>4 && type(P[4])==7) S=S+P[4];
+ }
+ }else{
+ T="";
+ if(length(P)>2 && (PP=P[2])!=""){
+ F=1;
+ if(type(PP)==4){
+ if(length(PP)==2 && type(PP[0])==7){
+ T="["+PP[0]+"]";
+ PP=PP[1];
+ }
+ }
+ if(type(PP)!=7) PP="$"+my_tex_form(PP)+"$";
+ S=S+"{"+PP+"}";
+ }else F=0;
+ if(length(P)>3){
+ if(type(P[3])==7 && P[3]!="") T=T+"("+P[3]+")";
+ else if(P[3]==1) T=T+"(_)";
+ if(length(P)>4 && type(P[4])==7) S=S+P[4];
+ }
+ if(length(P)>2){
+ if(F) S="node"+T+" at"+S;
+ else S="coordinate"+T+" at"+S;
+ }
+ }
+ return S;
+}
+
+def xyput(P)
+{
+ if((type(Sc=getopt(scale))==1 && Sc!=1) || type(Sc)==4){
+ if(type(Sc)==1) Sc=[Sc,Sc];
+ Sx=Sc[0];Sy=Sc[1];
+ if(length(P)>2)
+ P1=cons(Sy*P[1],cdr(cdr(P)));
+ else P1=[Sy*P[1]];
+ P=cons((type(P[0])==7)?P[0]:(Sx*P[0]),P1);
+ }
+ if(!TikZ) return "{"+xypos(P)+"};\n";
+ return "\\"+xypos(P)+";\n";
+}
+
+def xyline(P,Q)
+{
+ if(!TikZ) return "{"+xypos(P)+" \\ar@{-} "+xypos(Q)+"};\n";
+ if(type(T=getopt(opt))!=7) T="";
+ else T="["+T+"]";
+ if(length(P)<3 && length(Q)<3)
+ return "\\draw"+T+xypos(P)+"--"+xypos(Q)+";\n";
+ if(length(P)==2) P=[P[0],P[1],"","_0"];
+ else if(length(P)==3 || (length(P)==4 && P[3]==""))
+ P=[P[0],P[1],P[2],"_0"];
+ else if(length(P)>4 && P[3]=="")
+ P=[P[0],P[1],P[2],"_0",P[4]];
+ if(length(Q)==2) Q=[Q[0],Q[1],"","_1"];
+ else if(length(Q)==3 || (length(Q)==4 && Q[3]==""))
+ Q=[Q[0],Q[1],Q[2],"_1"];
+ else if(length(Q)>4 && Q[3]=="")
+ Q=[Q[0],Q[1],Q[2],"_1",Q[4]];
+ return "\\draw "+T+xypos(P)+" "+xypos(Q)+"("+P[3]+")--("+Q[3]+");\n";
+}
+
+def xylines(P)
+{
+/* mycat([P,getopt()]); */
+ Lf=getopt(curve);
+ if(type(Lf)!=1) Lf=0;
+ SS=getopt(opt);
+ SF=(SS==0)?1:0;
+ if((Proc=getopt(proc))==1||Proc==2||Proc==3){
+ OL=cons(["opt",0],delopt(getopt(),["opt","proc"]));
+ R=xylines(P|option_list=OL);
+ OP=(type(SS)<0)?[]:((type(SS)==4)?[["opt",SS[0]],["cmd",SS[1]]]:[["opt",SS]]);
+ return [1,OP,R];
+ }
+ if(type(SS)!=7 && type(SS)!=4){
+ if(Lf==0 && !TikZ) SS="@{-}";
+ else SS="";
+ }
+ if(type(Sc=getopt(scale))==1 || type(Sc)==4){
+ if(type(Sc)==1) Sc=[Sc,Sc];
+ Sx=Sc[0];Sy=Sc[1];
+ if(Sx!=1 || Sy!=1){
+ for(PP=[], P0=P; P0!=[]; P0=cdr(P0)){
+ PT=car(P0);
+ if((type(PT)!=4 && type(PT)!=5) || (type(PT[0])!=1 && PT[0]!=0))
+ PP=cons(PT,PP);
+ else{
+ if(length(PT)>2 && type(PT)==4)
+ P1=cons(Sy*PT[1],cdr(cdr(PT)));
+ else P1=[Sy*PT[1]];
+ PP=cons(cons(Sx*PT[0],P1),PP);
+ }
+ }
+ P=reverse(PP);
+ }
+ }
+ if(type(Cl=CL0=getopt(close))!=1) Cl=0;
+ if((Vb=getopt(verb))!=1&&type(Vb)!=4) Vb=0;
+ if(type(Lf)!=1 || Lf==0){ /* lines */
+ if(TikZ||SF){
+ for(L=[],F=0,PT=P;PT!=[];PT=cdr(PT)){
+ if(type(car(PT))<4){
+ L=cons(car(PT),L);
+ F=0;
+ }else{
+ if(F++>1) L=cons(1,L);
+ L=cons(car(PT),L);
+ }
+ }
+ if(Cl==1){
+ L=cons(1,L);L=cons(-1,L);
+ }
+ if(L) L=reverse(L);
+ if(SF) return L;
+ if(type(SS)!=4) S=xybezier(L|opt=SS);
+ else S=xybezier(L|opt=SS[0],cmd=SS[1]);
+
+ }else{
+ Out = str_tb(0,0);
+ for(PT=P; PT!=[]; ){
+ PS1=car(PT);
+ PT=cdr(PT);
+ if(PT==[]){
+ if(Cl==1) PS2=car(P);
+ else PS2=0;
+ }else PS2=car(PT);
+ str_tb(xyarrow(PS1,PS2|opt=SS),Out);
+ }
+ S=str_tb(0,Out);
+ }
+ }else if(Lf==2){ /* B-spline */
+ if(SF) return P;
+ if(!TikZ){
+ Out = str_tb("{\\curve{",0);
+ for(PT=P;PT!=[];PT=cdr(PT)){
+ if(car(PT)==0){
+ str_tb("}};\n{\\curve{",Out);
+ continue;
+ }
+ if(PT!=P) str_tb("&",Out);
+ str_tb(xypos([car(PT)[0],car(PT)[1]]),Out);
+ }
+ str_tb("}};\n",Out);
+ S=str_tb(0,Out);
+ }else Out=str_tb(xybezier(P|opt=SS),0);
+ for(I=0;I<2;I++){
+ Q=car(P);
+ if(length(Q)>2)
+ str_tb(xyput(Q),Out);
+ P=reverse(P);
+ }
+ S=str_tb(0,Out);
+ }else{ /* extended Bezier */
+ RTo=getopt(ratio);
+ if(type(Acc=getopt(Acc))!=1) Acc=0;
+ if(type(RTo)!=1 || RTo>1.5 || RTo<0.001) RTo=0;
+ if(Cl==1){
+ PR=reverse(P);
+ PT=car(PR);
+ PR=cons(P[0],PR);
+ PR=cons(P[1],PR);
+ P=cons(PT,reverse(PR));
+ }else if(Cl==-1) Cl=1;
+ for(L=P2=P3=0,PT=P;;){
+ P1=P2;P2=P3;P3=P4;
+ P4=(PT==[])?0:car(PT);
+ if(PT==[] && (Cl==1 || P3==0)) break;
+ PT=cdr(PT);
+ if(P3==0) str_tb("%\n", Out);
+ if(P2==0 || P3==0 || (Cl==1 && P1==0)) continue;
+ if(L!=0){
+ if(car(L)==P2)
+ L=cons(1,L);
+ else{
+ L=cons(0,L); L=cons(P2,L);
+ }
+ }else L=[P2];
+ X=P3[0]-P2[0];Y=P3[1]-P2[1];
+ DL1=DL2=0;DL=Acc?sqrt(X^2+Y^2):dsqrt(X^2+Y^2);
+ if(P4!=0){
+ XD1=P4[0]-P2[0];YD1=P4[1]-P2[1];DL1=Acc?sqrt(XD1^2+YD1^2):dsqrt(XD1^2+YD1^2);
+ }
+ if(P1!=0){
+ XD2=P3[0]-P1[0];YD2=P3[1]-P1[1];DL2=Acc?sqrt(XD2^2+YD2^2):dsqrt(XD2^2+YD2^2);
+ }
+ if(RTo!=0)
+ R=RTo;
+ else if(DL1>0 && DL2>0){
+ Cos=(XD1*XD2+YD1*YD2)/(DL1*DL2);
+ RT=4/(3*(Acc?sqrt((1+Cos)/2):dsqrt((1+Cos)/2))+3);
+ R=DL*RT/(DL1+DL2);
+ }else if(DL1!=0)
+ R=DL/(2*DL1);
+ else if(DL2!=0)
+ R=DL/(2*DL2);
+ if(DL2!=0) L=cons([P2[0]+R*XD2,P2[1]+R*YD2],L);
+ if(DL1!=0) L=cons([P3[0]-R*XD1,P3[1]-R*YD1],L);
+ L=cons([P3[0],P3[1]],L);
+ }
+ if(CL0==1) L=cons(-1,cdr(L));
+ if(L!=0) L=reverse(L);
+ if(SF) return L;
+ if(type(SS)==4)
+ S=xybezier(L|opt=SS[0],cmd=SS[1],verb=Vb);
+ else
+ S=xybezier(L|opt=SS,verb=Vb);
+ }
+ if(getopt(dviout)!=1) return S;
+ xyproc(S|dviout=1);
+}
+
+def saveproc(S,Out)
+{
+ if(type(Out)==4){
+ Out=cons(S,Out);
+ return Out;
+ }else{
+ str_tb(S,Out);
+ return Out;
+ }
+}
+
+def xy2graph(F0,N,Lx,Ly,Lz,A,B)
+{
+ /* (x,y,z) -> ( -x sin A + y cos A, z cos B - x cos A sin B - y sin A sin B) */
+ if((Proc=getopt(proc))==1||Proc==2){
+ OPT0=[["proc",3]];
+ }else{
+ Proc=0;OPT0=[];
+ }
+ if(type(DV=getopt(dviout))==4){
+ S=["ext","shift","cl","dviout"];
+ OL=delopt(getopt(),S);
+ OL=cons(["proc",1],OL);
+ R=xy2graph(F0,N,Lx,Ly,Lz,A,B|option_list=OL);
+ OL=delopt(getopt(),S|inv=1);
+ return execdraw(R,DV|optilon_list=OL);
+ }
+ if(N==0 || N>100 || N<-100) N=-16;
+ if(N<0){
+ N=-N;N1=-1;N2=NN+1;
+ }else{
+ N1=0;N2=NN=N;
+ }
+
+ Ratio=Ratio2=1;
+ if(type(Sc=Sc0=getopt(scale))!=1 && type(Sc)!=4) Sc=1;
+ if(type(Sc)==4){
+ Ratio=Sc[1]/Sc[0];
+ if(length(Sc)>2) Ratio2=Sc[2]/Sc[0];
+ Sc=Sc[0];
+ }
+ if(type(Vw=getopt(view))!=1) Vw=0;
+ if(type(Raw=getopt(raw))!=1) Raw=0;
+ if(type(M1=getopt(dev))==1) M2=M1;
+ else if(type(M1)==4){
+ M2=M1[1];M1=M1[0];
+ }else M1=0;
+ if(type(M3=getopt(acc))!=1 || (M3<0.5 && M3>100)) M3=1;
+ if(M1<=0) M1=16;
+ if(M2<=0) M2=16;
+ OL=[["para",1],["scale",Sc]];
+ if(Raw==1) OL=cons(["raw",1],OL);
+ if(type(Prec=getopt(prec))>=0) OL=cons(["prec",Prec],OL);
+ L=newvect(4,[[Lx[1],Ly[0]],[Lx[1],Ly[1]],[Lx[0],Ly[1]],[Lx[0],Ly[0]]]);
+ Lx=[deval(Lx[0]),deval(Lx[1])];
+ Ly=[deval(Ly[0]),deval(Ly[1])];
+ Lz=[deval(Lz[0]),deval(Lz[1])];
+ A=(A0=A)%360;
+ F00=F0;
+ if(type(F0)<4){
+ FC=f2df(F0);
+ if(findin(z,Vars=vars(FC))>=0 && findin(x,Vars)<0 && findin(y,Vars)<0)
+ F0=[w,[z,0,x+y*@i],[w,os_md.abs,FC]];
+ }
+ if(type(Org=getopt(org))==4){ /* shift origin */
+ Lx=[Lx[0]-Org[0],Lx[1]-Org[0]];
+ Ly=[Ly[0]-Org[1],Ly[1]-Org[1]];
+ Lz=[Lz[0]-Org[2],Lz[1]-Org[2]];
+ F0=mysubst(F0,[[x,x+Org[0]],[y,y+Org[1]]]);
+ if(type(F0)==4){
+ F0=cons(F0[0]-Org[2],cdr(F0));
+ }
+ else F0-=Org[2];
+ }else Org=[0,0,0];
+ Cpx=getopt(cpx);
+ if(type(Cpx)<0){
+ if(str_str(rtostr(F0),"@i")>=0) Cpx=1;
+ else Cpx=0;
+ }
+ if(A<0) A+=360;
+ if(A<90){
+ Sh=1;F1=F0;Cx=x-Org[0];Cy=y-Org[1];
+ }else if(A<180){ /* x -> y, y -> -x */
+ Sh=2;A-=90; F1=mulsubst(F0,[[x,-y],[y,x]]);
+ LL=Ly;Ly=[-Lx[1],-Lx[0]];Lx=LL;Cx=y-Org[1];Cy=-x+Org[0];
+ }else if(A<270){
+ Sh=3;A-=180; F1=subst(F0,[[x,-x],[y,-y]]);
+ Lx=[-Lx[1],-Lx[0]];Ly=[-Ly[1],-Ly[0]];Cx=-x+Org[0];Cy=-y+Org[1];
+ }else{
+ Sh=4;A-=270;F1=mulsubst(F0,[[x,y],[y,-x]]);
+ LL=Lx;Lx=[-Ly[1],-Ly[0]];Ly=LL;Cx=-y+Org[1];Cy=x-Org[0];
+ }
+ A=@pi*A/180; B=@pi*B/180;
+ if(A==0) A=@pi/3;
+ if(B==0) B=@pi/12;
+ NN=N*M2;
+ Ac=dcos(deval(A)); As=dsin(deval(A));
+ if(Ac<=0.087 || As<=0.087){
+ mycat(["Unsuitable angle",A0,"(6-th argument)!"]);
+ return -1;
+ }
+ Bc=Ratio*dcos(deval(B)); Bs=dsin(deval(B));
+ if(Bc<0){
+ mycat("Unsuitable angle (7-th argument)!");
+ return -1;
+ }
+ /*
+ z = f(x,y) => X=-As*x+Ac*y, Y= Bc*f(x,y)-Bsc*x-Bss*y
+ Out X-coord is in [X0,X1], dvided by Dev segments
+ J-th segment of Y-coord : ZF[J]==1 => [Z0[0],Z1[J]]
+ */
+ Bsc=Bs*Ac;Bss=Bs*As;
+ if(Ratio2!=1){
+ if(Sh%2==1){
+ Ac*=Ratio2;Bss*=Ratio2;
+ }else{
+ As*=Ratio2;Bsc*=Ratio2;
+ }
+ }
+ CX=-As*Cx+Ac*Cy;CY=Bc*(z-Org[2])-Bsc*Cx-Bss*Cy;
+ if(type(Dvi=getopt(dviout))!=1 && getopt(trans)==1) return [CX*Sc,CY*Sc];
+ if(type(N1=getopt(inf))==1){
+ if(Proc) Dvi=N1;
+ else if(Dvi<=0) Dvi=-N1;
+ }
+ X0=-As*Lx[1]+Ac*Ly[0];X1=-As*Lx[0]+Ac*Ly[1];
+ F1=mysubst(F1,[@pi,deval(@pi)]);
+ Tf=type(F1=f2df(F1|opt=0));
+ if(Tf!=4) F=Bc*F1-Bsc*x-Bss*y;
+ else F=append([Bc*F1[0]-Bsc*x-Bss*y],cdr(F1));
+ Dx=(Lx[1]-Lx[0])/NN; Dy=(Ly[1]-Ly[0])/NN;
+ if(type(Err=getopt(err))==1)
+ F=mysubst(F,[[x,x+Err*Dx/1011.23],[y,y+Err*Dy/1101.34]]);
+ Out=(Proc)?[]:str_tb(0,0);
+ Dev=N*M1;
+ XD=(X1-X0)/Dev;
+ OLV=newvect(2,[OL,OL]);
+ if(type(Ura=getopt(opt))==4 || type(Ura)==7){
+ if(type(Ura)==7) Ura=[Ura,Ura];
+ else{
+ OLV[0]=cons(["opt",Ura[0]],OL);
+ OLV[1]=cons(["opt",Ura[1]],OL);
+ }
+ }
+ for(KC=0; KC<=1; KC++){ /* draw curves */
+ Z0=newvect(Dev+1); Z1=newvect(Dev+1); ZF=newvect(Dev+1);
+ for(I=0; I<=NN; I++){
+ FV=I%M2;
+ if(KC==0){
+ X=x; Y=Ly[1]-I*Dy; LX=Lx; DD=Dx; G=mysubst(F,[y,Y]);
+ if(!FV){
+ if(!Proc) str_tb(["%y=",rtostr(Y),"\n"],Out);
+ else Out=cons([-2,"y="+rtostr(Y)],Out);
+ }
+ }else{
+ X=Lx[1]-I*Dx; Y=x; LX=Ly; DD=Dy; G=mysubst(F,[[x,X],[y,Y]]);
+ if(!FV){
+ if(!Proc) str_tb(["%x=",rtostr(X),"\n"],Out);
+ else Out=cons([-2,"x="+rtostr(X)],Out);
+ }
+ }
+ XX=-As*X+Ac*Y; A1=coef(XX,1,x); A0=coef(XX,0,x); /* XX = A1*x + A0, x = (XX-A0)/A1 */
+ if(!FV && Vw==1){
+ if(Proc) Out=cons(xygraph([XX,G],N,LX,[X0,X1],Lz|scale=Sc,para=1,proc=3),Out);
+ else str_tb(xygraph([XX,G],N,LX,[X0,X1],Lz|scale=Sc,para=1),Out);
+ continue;
+ }
+ V=VT=LX[1];
+ J0=(subst(XX,x,LX[0])-X0)/XD; J1=(subst(XX,x,LX[1])-X0)/XD;
+ if(J0<J1){
+ J0=ceil(J0); J1=floor(J1); JD=1; /* fixed x: y: dec => (x,z):(dec,inc) */
+ }else{
+ J0=floor(J0); J1=ceil(J1); JD=-1; /* fixed y: x: dec => (x,z):(inc,inc) */
+ }
+ for(FF=1,J=J1;;J-=JD){
+ V1=VT;
+ VT=(X0+J*XD-A0)/A1;GG=mysubst(G,[x,VT]);
+ if(Cpx>=1) VV=myeval(GG);
+ else VV=(Tf==4)? mydeval(GG):deval(GG); /* J -> V */
+ if(ZF[J]==0 || VV<=Z0[J] || VV>=Z1[J]){ /* visible */
+ if(FF==0){
+ V0=(VT+V1)/2;
+ if(!FV && Vw==-1 && Raw!=1){ /* draw doted line */
+ K=ceil(M3*(V-V0)/(M2*DD));
+ if(N1<0) K=-K;
+ OPT=append(OPT0,[["opt",(TikZ)?"dotted":"~*=<3pt>{.}"],["scale",Sc],["para",1]]);
+ Out=saveproc(xygraph([XX,G],K,[V0,V],[X0-1,X1+1],Lz|
+ option_list=OPT),Out);
+ }
+ V=V0;
+ }
+ if(ZF[J]==0){
+ ZF[J]=1; Z0[J]=Z1[J]=VV;
+ }else if(VV<=Z0[J]) Z0[J]=VV;
+ else Z1[J]=VV;
+
+ if(VV>=Z1[J]) FF=1;
+ else if(VV<=Z0[J]) FF=-1;
+ }else{
+ if(FF!=0){
+ V0=(VT+V1)/2;
+ K=ceil(M3*(V-V0)/(M2*DD));
+ if(N1<0) K=-K;
+ if(!FV){
+ OPT=append(OPT0,OLV[(1-FF)/2]);
+ Out=saveproc(xygraph([XX,G],K,[V0,V],[X0-1,X1+1],Lz|option_list=OPT),Out);
+ }
+ V=V0;
+ }
+ FF=0;
+ }
+ if(J==J0) break;
+ }
+ if(FV) continue;
+ V0=LX[0];K=ceil(M3*(V-V0)/(M2*DD));
+ if(N1<0) K=-K;
+ if(FF!=0){
+ if(Raw!=1){
+ OPT=append(OPT0,OLV[(1-FF)/2]);
+ Out=saveproc(xygraph([XX,G],K,[V0,V],[X0-1,X1+1],Lz|option_list=OPT),Out);
+ }else if(Vw==-1 && Raw!=1){
+ OPT=append(OPT0,[["opt",(TikZ)?"dotted":"~*=<3pt>{.}"]]);
+ Out=saveproc(xygraph([XX,G],K,[V0,V],[X0-1,X1+1],Lz|option_list=OPT),Out);
+ }
+ }
+ }
+ }
+ OptSc=(Sc==1)?[]:[["scale",Sc]];
+ if(type(LZ=getopt(ax))==4){ /* draw box */
+ FC=0;
+ if(length(LZ)==3) FC=LZ[2];
+ P0=newvect(2,[-As*Lx[1]+Ac*Ly[1],Bc*(LZ[0]-Org[0])-Bsc*Lx[1]-Bss*Ly[1]]);
+ Vx=newvect(2,[As*(Lx[1]-Lx[0]),Bsc*(Lx[1]-Lx[0])]);
+ Vy=newvect(2,[Ac*(Ly[0]-Ly[1]),Bss*(Ly[1]-Ly[0])]);
+ Vz=newvect(2,[0,Bc*(LZ[1]-LZ[0])]);
+ OL=OL0=append(OPT0,OL);
+ if(TikZ && type(Ura)==4 && length(Ura)>2) OL0=cons(["opt",Ura[2]],OL);
+ LL=[[P0+Vz,P0+Vx+Vz],[P0,P0+Vx]];
+ if(Bs>0){
+ LL=cons([P0+Vy+Vz,Pz=P0+Vx+Vy+Vz],LL);
+ LL=cons([P0+Vx+Vz,Pz],LL);
+ PP=Pz-Vz;
+ }
+ else{
+ LL=cons([P0+Vy,Pz=P0+Vx+Vy+Vz],LL);
+ LL=cons([P0+Vx,Pz],LL);
+ PP=Pz+Vz;
+ }
+ J=ceil((PP[0]-X0)/XD+0.5);
+ LL=append([[P0+Vy,P0+Vy+Vz],[P0+Vy,P0+Vy+Vz],[P0+Vx,P0+Vx+Vz],[P0,P0+Vz],
+ [P0+Vz,P0+Vy+Vz],[P0,P0+Vy]],LL);
+ for(LL=reverse(LL);LL!=[];LL=cdr(LL)) Out=saveproc(xylines(car(LL)|option_list=OL0),Out);
+ if(Dev>4) Dev2=ceil(Dev/2);
+ if(FC<0 && Raw!=1){
+ if(TikZ){
+ if(type(Ura)==4 && length(Ura)>2)
+ OL1=cons(["opt",Ura[2]+",dotted"],OL);
+ else OL1=cons(["opt","dotted"],OL);
+ }else OL1=cons(["opt","@{.}"],OL);
+ if(FC==-8) FC=0;
+ }
+ for(I=0;I<3;I++){ /* box with hidden part */
+ if(I==1) Pz=PP-Vx;
+ else if(I==2) Pz=PP-Vy;
+ LP=Pz-PP;
+ for(FV=-1,K=0;K<=Dev2; K++){
+ PPx=PP[0]+(K/Dev2)*LP[0]; PPy=PP[1]+(K/Dev2)*LP[1];
+ J=ceil((PPx-X0)/XD);
+ if(K!=Dev2 && (J<0||J>Dev)) continue;
+ if(K!=Dev2 && (ZF[J]==0 || PPy<Z0[J] || PPy>Z1[J])){ /* visible */
+ if(FV!=1){
+ FV=1;
+ PPP=[PPx,PPy];
+ }
+ }else{
+ if(FV!=0){
+ if(FV==1) Out=saveproc(xylines([PPP,[PPx,PPy]]|option_list=OL1),Out);
+ FV=0;
+ }
+ }
+ }
+ }
+ if(FC!=0 && Raw!=1){ /* show coordinate*/
+ if(iand(FC,4)){
+ Sub=1;
+ if(TikZ){
+ S0="\\scriptsize";S1="";
+ }else{
+ S0="{}_{"; S1="}";
+ }
+ }else Sub=0;
+ if(iand(FC,2))
+ LLL=[[1,0,P0+Vx,(TikZ)?"right":"+!L"],[3,0,P0+Vy,(TikZ)?"left":"+!R"]];
+ else LL=[];
+ if(Bs>0){
+ LLL=cons([0,0,P0,(TikZ)?"below":"+!U"],LLL);
+ LLL=cons([2,1,P0+Vx+Vy+Vz,(TikZ)?"above":"+!D"],LLL);
+ }else{
+ LLL=cons([2,0,P0+Vx+Vy,(TikZ)?"below":"+!U"],LLL);
+ LLL=cons([0,1,P0+Vz,(TikZ)?"above":"+!D"],LLL);
+ }
+ for(TLL=LLL;TLL!=[];TLL=cdr(TLL)){
+ TL=car(TLL);LL=L[(Sh+TL[0])%4];
+ if(Cpx==0 || Cpx==3){
+ S=ltotex([LL[0],LL[1],LZ[TL[1]]]|opt="coord");
+ SS="("+rtostr(LL[0]) +","+rtostr(LL[1])+","+rtostr(LZ[TL[1]])+")";
+ }else{
+ S=ltotex([LL[0]+LL[1]*@i,LZ[TL[1]]]|opt="coord",cpx=Cpx);
+ SS="("+rtostr(LL[0])+"+"+rtostr(LL[1])+"i,"+ rtostr(LZ[TL[1]])+")";
+ }
+ if(TikZ) S="$"+S+"$";
+ if(Sub) S=S0+S+S1;
+ if(!TikZ) S="$"+S+"$";
+ if(Proc) Out=cons([2,OptSc,[TL[2][0],TL[2][1]],[[TL[3],S]],SS],Out);
+ else str_tb(xyput([TL[2][0],TL[2][1],[TL[3],S]]|option_list=OptSc),Out);
+ }
+ }
+ }
+ if(type(Pt=getopt(pt))==4){ /* option pt=[] */
+ if(type(Pt[0])<4) Pt=[[Pt]];
+ if(length(Pt)>1&&type(Pt[1])!=4) Pt=[Pt];
+ for(PT=Pt;PT!=[];PT=cdr(PT)){
+ PP=car(PT);
+ if(type(PP)==4 && length(PP)==3 && type(PP[0])<2 && type(PP[2])<2) PP=[PP];
+ P=car(PP);
+ if(type(P)==7) Q=[P,0];
+ else if(P==1) Q=["_",0];
+ else Q=mysubst([CX,CY],[[x,deval(P[0])],[y,deval(P[1])],[z,deval(P[2])]]);
+ if(length(PP)>1 && type(PP[1])==4 && length(PP[1])==3){ /* draw line */
+ PP=cdr(PP);P=car(PP);
+ if(type(P)==7) Q1=P;
+ else if(P==1) Q="_";
+ else Q1=mysubst([CX,CY],[[x,deval(P[0])],[y,deval(P[1])],[z,deval(P[2])]]);
+ if(length(PP)<2 || PP[1]==0 || iand(PP[1],1)) OL2="";
+ else OL2=(TikZ)?"dotted":"@{.}";
+ if(length(PP)>2 && type(PP[2])==7){
+ if(OL2=="") OL2=PP[2];
+ else{
+ if(TikZ) OL2=OL2+",";
+ OL2=OL2+PP[2];
+ }
+ }
+ OL1=OL;
+ if(OL2!="") OL1=cons(["opt",OL2],OL1);
+ if(length(PP)<2 || PP[1]>=0)
+ Out=saveproc(xylines([Q,Q1]|option_list=OL1),Out);
+ else{
+ LP0=Q1[0]-Q[0];LP1=Q1[1]-Q[1];
+ for(FV=-1,K=0;K<=Dev2; K++){
+ PPx=Q[0]+(K/Dev2)*LP0; PPy=Q[1]+(K/Dev2)*LP1;
+ J=ceil((PPx-X0)/XD);
+ if(K!=Dev2 && (J<0 || J>Dev || ZF[J]==0 || PPy<Z0[J] || PPy>Z1[J])){
+ /* visible */
+ if(FV!=1){
+ FV=1;
+ PPP=[PPx,PPy];
+ }
+ }else{
+ if(FV!=0){
+ if(FV==1) Out=saveproc(xylines([PPP,[PPx,PPy]]|option_list=OL1),Out);
+ FV=0;
+ }
+ }
+ }
+ }
+ continue;
+ }
+ if(length(PP)==1) S="$\\bullet$";
+ else if(type(PP[1])==7) S=PP[1];
+ else if(type(PP[1])==4){
+ if(length(PP[1])>1 && type(PP[1][1])!=7)
+ S=cons(car(PP),cons("$\\bullet$",cdr(cdr(PP))));
+ else S=PP[1];
+ }else S="$\\bullet$";
+ if(length(PP)<=2){
+ if(Proc) Out=cons([2,OptSc,[Q[0],Q[1]],[S]],Out);
+ else str_tb(xyput([Q[0],Q[1],S]|option_list=OptSc),Out);
+ }else if(!TikZ){
+ if(Proc) Out=cons([2,OptSc,[Q[0],Q[1]],[S,"",PP[2]]],Out);
+ else str_tb(xyput([Q[0],Q[1],S,"",PP[2]]|option_list=OptSc),Out);
+ }else{
+ if(Proc) Out=cons([2,OptSc,[Q[0],Q[1]],cons(S,cdr(cdr(PP)))],Out);
+ else str_tb(xyput(append([Q[0],Q[1],S],cdr(cdr(PP)))|option_list=OptSc),Out);
+ }
+ }
+ }
+ if(Proc){
+ S=reverse(Out);
+ if(Proc==1||Proc==3){
+ for(W=[],I=0;I<2;I++) for(J=0;J<2;J++) for(K=0;K<2;K++)
+ W=cons(mysubst([CX*Sc,CY*Sc],[[x,Lx[I]],[y,Ly[J]],[z,Lz[K]]]),W);
+ W=ptbbox(W);
+ S=cons([0,W[0],W[1],(TikZ)?1:1/10],S);
+ }
+ }else S=str_tb(0,Out);
+ if(type(Dvi)!=1||(Proc&&abs(Dvi)<2)) return S;
+ Lout=[];
+ if(abs(Dvi)>=2){
+ /* show title */
+ L0=[];
+ Title=getopt(title);
+ if(type(Title)!=7)
+ Title=(type(F00)==4)?("\\texttt{"+verb_tex_form(F00)+"}"):my_tex_form(F00);
+ if(type(Title)==7){
+ T=my_tex_form(L[3][0])+"\\le x\\le "+my_tex_form(L[1][0])+",\\,"+
+ my_tex_form(L[3][1])+"\\le y\\le "+my_tex_form(L[1][1])+")";
+ if(Proc){
+ if(Cpx>=1) L0=[[5,[["eq",1]],"|"+Title+"|\\quad(z=x+yi,\\ "+T]];
+ else L0=[[5,[["eq",1]],"z="+Title+"\\ \\ ("+T]];
+ }else{
+ if(Cpx>=1) dviout("|"+Title+"|\\quad(z=x+yi,\\ "+T|eq=1,keep=1);
+ else dviout("z="+Title+"\\ \\ ("+T|eq=1,keep=1);
+ }
+ }
+ A=rint(deval(180*A/@pi))+90*(Sh-1);
+ if(A>=180) A-=180;
+ B=rint(deval(180*B/@pi));
+ if(abs(Dvi)>=3){
+ T="\\text{angle } ("+my_tex_form(A)+"^\\circ,"+my_tex_form(B)+"^\\circ)";
+ if(Ratio!=1 || Ratio2!=1) T=T+"\\quad\\text{ratio }1:"
+ +my_tex_form(sint(Ratio2,2))+":"+my_tex_form(sint(Ratio,2));
+ if(Proc) L0=cons([5,[["eq",1]],T],L0);
+ else dviout(T|eq=1,keep=1);
+ }
+ SS="% range "+rtostr([L[3][0],L[1][0]])+"x"+rtostr([L[3][1],L[1][1]])+
+ " angle ("+ rtostr(A) +","+ rtostr(B)+") dev=";
+ if(M1==M2) SS=SS+rtostr(M1);
+ else SS=SS+rtostr([M1,M2]);
+ if(M3!=1) SS=SS+" acc="+rtostr(M3);
+ if(type(Sc0)>=0) SS=SS+" scale="+rtostr(Sc0);
+ if(Proc){
+ S=cons([5,[],SS],S);
+ for(;L0!=[];L0=cdr(L0)) S=cons(car(L0),S);
+ return S;
+ }
+ if(Dvi>0){
+ dviout(SS|keep=1);
+ dviout(xyproc(S)|eq=8);
+ }else Lout=[SS,S];
+ }else{
+ if(Dvi>0) dviout(xyproc(S));
+ else Lout=[S];
+ }
+ if(getopt(trans)==1) return cons([CX*Sc,CY*Sc],Lout);
+ if(Dvi<0) return Lout;
+}
+
+def fouriers(A,B,X)
+{
+ if(A!=[]&&type(car(A))>1){
+ for(C=[],I=A[1];I>=0;I--) C=cons(myfeval(car(A),I),C);
+ A=C;
+ }
+ if(B!=[]&&type(car(B))>1){
+ for(C=[],I=B[1];I>0;I--) C=cons(myfeval(car(B),I),C);
+ B=C;
+ }
+ R=0;
+ if(getopt(cpx)==1){
+ if(type(X=eval(X))>1) return todf([os_md.fouriers,[["cpx",1]]],[[A],[B],[X]]);
+ V=dexp(@i*X);
+ for(C=A,P=1,I=0;C!=[];C=cdr(C),I++){
+ R+=car(C)*P;
+ P*=V;
+ }
+ V=dexp(-@i*X);
+ for(C=B,P=1,I=0;C!=[];C=cdr(C),I++){
+ P*=V;
+ R+=car(C)*P;
+ }
+ return R;
+ }
+ if(type(X=eval(X))>1) return todf(os_md.fouriers,[[A],[B],[X]]);
+ for(C=A,I=0;C!=[];C=cdr(C),I++)
+ R+=car(C)*mycos(I*X);
+ for(C=B,I=1;C!=[];C=cdr(C),I++)
+ R+=car(C)*mysin(I*X);
+ return R;
+}
+
+
+def myexp(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.myexp,[Z]);
+ if((Im=imag(Z))==0) return dexp(Z);
+ return dexp(real(Z))*(dcos(Im)+@i*dsin(Im));
+}
+
+def mycos(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.mycos,[Z]);
+ if((Im=imag(Z))==0) return dcos(Z);
+ V=myexp(Z*@i);
+ return (V+1/V)/2;
+}
+
+def mysin(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.mysin,[Z]);
+ if((Im=imag(Z))==0) return dsin(Z);
+ V=myexp(Z*@i);
+ return (1/V-V)*@i/2;
+}
+
+def mytan(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.mytan,[Z]);
+ if((Im=imag(Z))==0) return dtan(Z);
+ V=myexp(2*Z*@i);
+ return @i*(1-V)/(1+V);
+}
+
+def mylog(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.mylog,[Z]);
+ if((Im=imag(Z))==0) return dlog(Z);
+ return dlog(dabs(Z))+@i*myarg(Z);
+}
+
+def mypow(Z,R)
+{
+ if(type(Z=eval(Z))>1||type(R=eval(R))>1) return todf(os_md.mypow,[Z,R]);
+ if(Z==0) return 0;
+ if(isint(2*R)){
+ if(R==0) return 1;
+ if(isint(R)) return Z^R;
+ V=dsqrt(Z);
+ if(R==1/2) return V;
+ return Z^(R-1/2)*V;
+ }
+ return myexp(R*mylog(Z));
+}
+
+def myarg(Z)
+{
+ if(type(Z=map(eval,Z))==4){
+ if(length(Z)!=2) return todf(os_md.myarg,[Z]);
+ Re=Z[0];Im=Z[1];
+ }else if(type(Z)>1){
+ return todf(os_md.myarg,[Z]);
+ }else {
+ Im=imag(Z);Re=real(Z);
+ }
+ if(Re==0) return (Im<0)?-deval(@pi)/2:deval(@pi)/2;
+ V=datan(Im/Re);
+ if(Re>0) return V;
+ return (V>0)?(V-deval(@pi)):(V+deval(@pi));
+}
+
+def myatan(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.myatan,[Z]);
+ if((Im=imag(Z))==0) return datan(Z);
+ mylog((1-Z*@i)/(1+Z*@i))*@i/2;
+}
+
+def myasin(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.myasin,[Z]);
+ return deval(@pi/2)-myacos(Z);
+}
+
+def frac(X)
+{
+ if(type(X=eval(X))>1) return todf(os_md.frac,[X]);
+ return (ntype(X)==3)? pari(frac,X):(X-floor(X));
+}
+
+def myacos(Z)
+{
+ if(type(Z=eval(Z))>1) return todf(os_md.myacos,[Z]);
+ if(imag(Z)==0 && Z<=1 && Z>=-1) return dacos(Z);
+ return mylog(Z-dsqrt(Z^2-1))*@i;
+}
+
+def arg(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.arg,[Z]);
+ return (type(Z)==4)?pari(arg,Z[0],Z[1]):arg(sqrt,Z);
+}
+
+def sqrt(Z){
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.sqrt,[Z]);
+ R=(type(Z)==4)?Z[1]:Z;
+ if(ntype(R)==0){
+ if(R==0) return 0;
+ if(R>0){
+ if(pari(issquare,R)) return pari(isqrt,nm(R))/pari(isqrt,dn(R));
+ }else{
+ R=-R;
+ if(pari(issquare,R)) return pari(isqrt,nm(R))/pari(isqrt,dn(R))*@i;
+ }
+ }
+ return (type(Z)==4)?pari(sqrt,Z[0],Z[1]):pari(sqrt,Z);
+}
+
+def gamma(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.gamma,[Z]);
+ return (type(Z)==4)?pari(gamma,Z[0],Z[1]):pari(gamma,Z);
+}
+
+def lngamma(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.lngamma,[Z]);
+ return (type(Z)==4)?pari(lngamma,Z[0],Z[1]):pari(lngamma,Z);
+}
+
+def digamma(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.digamma,[Z]);
+ return (type(Z)==4)?pari(digamma,Z[0],Z[1]):pari(digamma,Z);
+}
+
+def dilog(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.dilog,[Z]);
+ return (type(Z)==4)?pari(dilog,Z[0],Z[1]):pari(dilog,Z);
+}
+
+def erfc(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.erfc,[Z]);
+ return (type(Z)==4)?pari(erfc,Z[0],Z[1]):pari(erfc,Z);
+}
+
+def zeta(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.zeta,[Z]);
+ return (type(Z)==4)?pari(zeta,Z[0],Z[1]):pari(zeta,Z);
+}
+
+def eta(Z)
+{
+ if(vars(Z=map(eval,Z))!=[]) return todf(os_md.eta,[Z]);
+ return (type(Z)==4)?pari(eta,Z[0],Z[1]):pari(eta,Z);
+}
+
+def jell(Z)
+{
+ if(vars(Z=map(eval,V))>1) return todf(os_md.jell,[Z]);
+ return (type(Z)==4)?pari(jell,Z[0],Z[1]):jell(jell,Z);
+}
+
+def evals(F)
+{
+ if(type(F)==7){
+ if(type(Del=getopt(del))!= 7) return eval_str(F);
+ S=strtoascii(Del);K=length(S);
+ if(K==0) return [eval_str(F)];
+ Raw=getopt(raw);
+ F=strtoascii(F);L=[];T1=0;
+ do{
+ T2=str_str(F,S|top=T1);
+ if(T2<0) T2=10000;
+ FT=str_cut(F,T1,T2-1);
+ L=cons((Raw==1)?FT:evals(FT),L);
+ T1=T2+K;
+ }while(T2!=10000);
+ return reverse(L);
+ }
+ if(type(F)==4){
+ if(type(S=car(F))==7){
+ S+="(";
+ for(I=0,FT=cdr(F); FT!=[]; I++,FT=cdr(FT)){
+ if(type(ST=car(FT))!=7) ST=rtostr(ST);
+ if(I>0) S=S+","+ST;
+ else S=S+ST;
+ }
+ S=S+")";
+ return eval_str(S);
+ }else return call(S,cdr(F));
+ }
+ return F;
+}
+
+def myval(F)
+{
+ if(type(F)!=4){
+ F=f2df(sqrt2rat(F));
+ if(type(F)!=4) return F;
+ };
+ if(length(F)==1) V=car(F);
+ else for(V=car(F),F=cdr(F); F!=[];){
+ FT=car(F);
+ if(type(G=FT[1])==2){
+ if(length(FT)>2){
+ FT2=myval(FT[2]);
+ if(length(FT)>3) FT3=myval(FT[3]);
+ };
+ X=red(FT2/@pi);Vi=-red(FT2*@i/@pi);W=red(FT2/@e);
+ if(G==os_md.mypow && FT3==1/2){
+ G=os_md.sqrt;
+ FT=[FT[0],G,FT[2]];
+ }
+ if((T=findin(G,
+ [sin,os_md.mysin,cos,os_md.mycos,tan,os_md.mytan]))>=0
+ &&(isint(6*X)||isint(4*X))){
+ if(T==2||T==3){
+ T=0;X=1/2-X;
+ }
+ X=X-floor(X/2)*2;
+ if(T==0||T==1){
+ if(X>1){
+ S=-1;X-=1;
+ }else S=1;
+ if(X>1/2) X=1-X;
+ if(X==0) R=0;
+ else if(X==1/6) R=1/2;
+ else if(X==1/4) R=2^(1/2)/2;
+ else if(X==1/3) R=3^(1/2)/2;
+ else R=1;
+ R*=S;
+ }else{
+ if(X>1) X-=1;
+ if(X>1/2){
+ S=-1;V=1-X;
+ }else S=1;
+ if(X==0) R=0;
+ else if(X==1/6) R=3^(1/2)/3;
+ else if(X==1/4) R=1;
+ else if(X==1/3) R=3^(1/2);
+ else R=2^512;
+ R*=S;
+ }
+ }else if((G==exp||G==os_md.myexp)&&(isint(FT2)||isint(6*Vi)||isint(4*Vi))){
+ if(isint(FT2)) R=@e^FT2;
+ else R=myval([z+w*@i,[z,cos,Vi*@pi],[w,sin,Vi*@pi]]);
+ }else if((G==pow||G==os_md.mypow) && (isint(FT3)||FT2==1||FT2==0)){
+ if(FT2==0) R=0;
+ else if(FT2==1) R=1;
+ else R=FT2^FT3;
+ }else if(G==os_md.abs&&ntype(P=eval(FT2))<4){
+ R=FT2;
+ if(P<0) R=-R;
+ }else if((G==os_md.sqrt||G==dsqrt)&&type(FT2)<2&&ntype(FT2)==0)
+ R=sqrtrat(FT2);
+ else if((G==os_md.mylog||G==dlog)&&(FT2==@e||FT2==1))
+ R=(FT2==1)?0:1;
+ else if(length(FT)==3) R=eval((*G)(myeval(FT2)));
+#ifdef USEMODULE
+ else R=call(G,map(os_md.myeval,cdr(cdr(FT))));
+#else
+ else R=call(G,map(myeval,cdr(cdr(FT))));
+#endif
+ }
+ else if(G==0) R=FT[2];
+#ifdef USEMODULE
+ else R=eval(call(G[0],map(os_md.myeval,cdr(cdr(FT)))|option_list=G[1]));
+#else
+ else R=eval(call(G[0],map(myeval,cdr(cdr(FT)))|option_list=G[1]));
+#endif
+ V=mysubst(V,[FT[0],R]);
+ F=mysubst(cdr(F),[FT[0],R]);
+ }
+ if(type(V)<4 && !iscoef(V,os_md.iscrat)) V=eval(V);
+#if 0
+ return (type(V)<4)?myeval(V):mtransbys(os_md.myeval,V,[]);
+#else
+ return V;
+#endif
+}
+
+/* -1:‹ó 0:®” 1:—L—” 2:Gauss®” 3:Gauss—L—” 4:‚»‚êˆÈŠO‚Ì•¡‘f” */
+/* def vntype(F)
+{
+ if((T=type(F))<2){
+ if(T<0) return -1;
+ if((Tn=ntype(F))==0){
+ return (isint(F))?0:1;
+ }
+ if(Tn==4){
+ if(ntype(real(F))==0&&ntype(real(F))==0)
+ return (isint(F)&&isint(F))?2:3;
+ return 4;
+ }
+ }
+ if(T==2){
+ V=vars(F);
+ if((VV=lsort(V,[@e,@pi],1))==[]){
+ FT=mycoef(
+ }else{
+ if(length(VV)==1){
+ }else
+ }
+ }else if(T==3){
+
+ }
+}
+*/
+
+
+def myeval(F)
+{
+ if(type(F)!=4) V=F;
+ else if(length(F)==1) V=car(F);
+ else for(V=car(F),F=cdr(F); F!=[];){
+ FT=car(F);
+ if(type(G=FT[1])==2){
+ if(length(FT)==3) R=(*G)(myeval(FT[2]));
+#ifdef USEMODULE
+ else R=call(G,map(os_md.myeval,cdr(cdr(FT))));
+#else
+ else R=call(G,map(myeval,cdr(cdr(FT))));
+#endif
+ }
+ else if(G==0) R=myeval(FT[2]);
+#ifdef USEMODULE
+ else R=call(G[0],map(os_md.myeval,cdr(cdr(FT)))|option_list=G[1]);
+#else
+ else R=call(G[0],map(myeval,cdr(cdr(FT)))|option_list=G[1]);
+#endif
+ V=mysubst(V,[FT[0],R]);
+ F=mysubst(cdr(F),[FT[0],R]);
+ }
+ return (type(V)<4)?eval(V):mtransbys(eval,V,[]);
+}
+
+def mydeval(F)
+{
+ if(type(F)!=4) V=F;
+ else if(length(F)==1) V=car(F);
+ else for(V=car(F),F=cdr(F); F!=[]; ){
+ FT=car(F);
+ if(type(G=FT[1])==2){
+ if(length(FT)==3) R=(*G)(myeval(FT[2]));
+#ifdef USEMODULE
+ else R=call(G,map(os_md.mydeval,cdr(cdr(FT))));
+#else
+ else R=call(G,map(mydeval,cdr(cdr(FT))));
+#endif
+ }
+ else if(G==0) R=mydeval(FT[2]);
+#ifdef USEMODULE
+ else R=call(G[0],map(os_md.mydeval,cdr(cdr(FT)))|option_list=G[1]);
+#else
+ else R=call(G[0],map(mydeval,cdr(cdr(FT)))|option_list=G[1]);
+#endif
+ V=mysubst(V,[FT[0],R]);
+ F=mysubst(cdr(F),[FT[0],R]);
+ }
+ return (type(V)<4)?deval(V):mtransbys(deval,V,[]);
+}
+
+def myfeval(F,X)
+{
+ if(type(X)==4){
+ if(isvar(X[0])&&length(X)==2)
+ return mydeval(mysubst(F,[X[0],X[1]]));
+ if(type(X[0])==4&&isvar(X[0][0])&&length(X[0])==2){
+ for(Y=X;Y!=[];Y=cdr(Y))
+ F=mysubst(F,[car(Y)[0],car(Y)[1]]);
+ return myeval(F);
+ }
+ }
+ return myeval(mysubst(F,[x,X]));
+}
+
+def myf2eval(F,X,Y)
+{
+ return myeval(mysubst(F,[[x,X],[y,Y]]));
+}
+
+def myf3eval(F,X,Y,Z)
+{
+ return myeval(mysubst(F,[[x,X],[y,Y],[z,Z]]));
+}
+
+def myfdeval(F,X)
+{
+ if(type(X)==4){
+ if(isvar(X[0])&&length(X)==2)
+ return mydeval(mysubst(F,[X[0],X[1]]));
+ if(type(X[0])==4&&isvar(X[0][0])&&length(X[0])==2){
+ for(Y=X;Y!=[];Y=cdr(Y))
+ F=mysubst(F,[car(Y)[0],car(Y)[1]]);
+ return mydeval(F);
+ }
+ }
+ return mydeval(mysubst(F,[x,X]));
+}
+
+def myf2deval(F,X,Y)
+{
+ return mydeval(mysubst(F,[[x,X],[y,Y]]));
+}
+
+def myf3deval(F,X,Y,Z)
+{
+ return mydeval(mysubst(F,[[x,X],[y,Y],[z,Z]]));
+}
+
+def df2big(F)
+{
+ AG=[[os_md.mysin,sin],[os_md.mycos,cos],[os_md.mytan,tan],[os_md.myasin,asin],
+ [os_md.acos,acos],[os_md,atan,atan],[os_md.myexp,exp],[os_md.mylog,log],[os_md.mypow,pow]];
+ if(getopt(inv)!=1) return mysubst(F,AG);
+ else return mysubst(F,AG|inv=1);
+
+}
+
+def f2df(F)
+{
+ if(type(Opt=getopt(opt))!=1) Opt=0;
+ if(iand(Opt,1)){
+ if(Opt>0) F=map(eval,F);
+ else F=map(deval,F);
+ }
+ Cpx=getopt(cpx);
+ if(type(F)==4 && iand(Opt,2)==0) return F;
+ K=getopt(level);
+ if(type(K)!=1) K=0;
+ AG=[sin,cos,tan,asin,acos,atan,exp,sinh,cosh,tanh,log,pow];
+ AGd=[os_md.mysin,os_md.mycos,os_md.mytan,os_md.myasin,os_md.myacos,
+ os_md.myatan,os_md.myexp,os_md.myexp,os_md.myexp,os_md.myexp,
+ os_md.mylog,os_md.sqrt,os_md.myexp];
+ for(R=[],I=0,Arg=vars(F);Arg!=[];Arg=cdr(Arg)){
+ Fn=functor(car(Arg));
+ if(vtype(Fn)!=3) continue;
+ V=args(car(Arg));
+ for(PAG=AG,PAGd=AGd;PAG!=[];PAG=cdr(PAG),PAGd=cdr(PAGd)){
+ if(Fn==car(PAG)){
+ if(K==0) L="z__";
+ else L="z"+rtostr(K)+"__";
+ if(I==0) VC=makev([L]);
+ else VC=makev([L,I]);
+ I++;
+ VC0=VC;
+ if(Fn==sinh || Fn==cosh || Fn==tanh){
+ VC=makev([L,I++]);
+ if(Fn==sinh)
+ R=cons([VC0,0,(VC^2-1)/(2*VC)],R);
+ else if(Fn==cosh)
+ R=cons([VC0,0,(VC^2+1)/(2*VC)],R);
+ else
+ R=cons([VC0,0,(VC^2-1)/(VC^2+1)],R);
+ }
+ if(Fn==pow && (V[1]!=1/2||Cpx==1)){
+#if 0
+ R0=f2df(V[1]*((type(V[0])==1)?dlog(V[0]):log(V[0]))|level=K+1);
+ PAGd=cdr(PAGd);
+#else
+ R=cons([VC,os_md.mypow,V[0],V[1]],R);
+ F=mysubst(F,[car(Arg),VC0]);
+ Arg=cons(0,vars(F));
+ break;
+#endif
+ }else R0=f2df(V[0]|level=K+1);
+ R=cons([VC,car(PAGd),R0],R);
+ F=mysubst(F,[car(Arg),VC0]);
+ Arg=cons(0,vars(F));
+ break;
+ }
+ }
+ }
+ if(R==[]) return F;
+ if(Cpx==1){
+ for(PAG=P,PAGd=AGd;PAG!=[];PAG=cdr(PAG),PAGd=cdr(PAGd))
+ R=mysubst(R,[car(PADd),car(PAG)]);
+ }
+ return cons(F,reverse(R));
+}
+
+def todf(F,V)
+{
+ if(type(V)!=4) V=[V];
+ for(R=[];V!=[];V=cdr(V)){
+ R=cons(f2df(car(V)),R);
+ }
+ V=reverse(R);
+ Z=makenewv([F,V]);
+ return [Z,cons(Z,cons(F,V))];
+}
+
+def compdf(F,V,G)
+{
+ FL=["abs","floor","rint","zeta","gamma","arg","real","imag","conj"];
+ FS=[os_md.abs,floor,rint,os_md.zeta,os_md.gamma,os_md.myarg,real,imag,conj];
+ if(type(V)==4){
+ for(;V!=[];V=cdr(V),G=cdr(G)) F=compdf(F,car(V),car(G));
+ return F;
+ }
+ if(type(F)==7){
+ if(str_str(F,"|")==0){
+ F="abs("+str_cut(F,1,str_len(F)-2)+")";
+ }else if(str_str(F,"[")==0){
+ F="floor("+str_cut(F,1,str_len(F)-2)+")";
+ }
+ I=str_str(F,"(");
+ Var=x;
+ if(I>0){
+ J=str_pair(F,I+1,"(",")");
+ if(J<0) return 0;
+ Var=eval_str(str_cut(F,I+1,J-1));
+ Var=f2df(Var);
+ F0=str_cut(F,0,I-1);
+ }
+ if((I=findin(F0,FL))<0&&(I=findin(F,FL))<0) F=f2df(eval_str(F));
+ else F=[z__,[z__,FS[I],Var]];
+ }
+ if(type(F)!=4) F=f2df(F);
+ if(type(G)!=4) G=f2df(G);
+ VF=vars(F);VG=vars(G);
+ for(E=I=0;I<30;I++){
+ for(J=0;J<30;J++){
+ X=makev(["z__",I,J]);
+ if(findin(X,VF)<0 && findin(X,VG)<0){
+ E=1;break;
+ }
+ }
+ if(E) break;
+ }
+ if(!E) return 0;
+ if(V==G) return F; /* subst(F(V),V,G) */
+ if(type(G)<4) return mysubst(F,[V,G]);
+ if(type(F)<4) F=[F]; /* return compdf([X,[X,0,F]],V,G); */
+ F=mysubst(F,[V,X]);
+ if(isvar(G[0])){
+ G=mysubst(G,[G[0],X]);
+ if(length(G)==2&&type(G[1])==4&&G[1][0]==X) G=G[1];
+ G=cons(G,cdr(F));
+ }
+ else G=cons([X,0,G],cdr(F));
+ return cons(car(F),G);
+}
+
+def fzero(F,LX)
+{
+ if(length(LX)==3){
+ V=LX[0];LX=cdr(LX);
+ }else V=x;
+ LX1=eval(LX[0]);LX2=eval(LX[1]);
+ if(getopt(zero)==1){
+ if(getopt(cont)==1) CT=1;
+ else CT=0;
+ if(getopt(trans)!=1 && type(F)<4) F=f2df(F);
+ F=mysubst(F,[[@pi,deval(@pi)],[@e,deval(@e)]]);
+ if(type(Dev=getopt(dev))!=1 || Dev<2) Dev=16;
+ V1=myeval(mysubst(F,[V,X1=LX1]));
+ V2=myeval(mysubst(F,[V,X2=LX2]));
+ if(V1>0){
+ V0=V1;V1=V2;V2=V0;
+ X0=X1;X1=X2;X2=X0;
+ }
+ if(V1<0 && V2>0){
+ D=(V2-V1)*1024;
+ for(I=0; I<Dev; I++){
+/* mycat([D,X1,V1,X2,V2]) ; */
+ if(iand(I,1)) X0=(X1+X2)/2;
+ else X0=(V2*X1-V1*X2)/(V2-V1);
+ V0=myeval(mysubst(F,[V,X0]));
+ if(V0==0||V0==V1||V0==V2) return [X0,V0];
+ if(V0<0){
+ if(!CT && V0+D<0) return [];
+ V1=V0;X1=X0;
+ }else{
+ if(!CT && V0>D) return [];
+ V2=V0;X2=X0;
+ }
+ }
+ X0=(V2*X1-V1*X2)/(V2-V1);
+ return [X0,myeval(mysubst(F,[V,X0]))];
+ }
+ if(V0==0) return [X0,V0];
+ if(V1==0) return [X1,V1];
+ return [];
+ }
+ if(type(F)<4) F=f2df(F);
+ F=mysubst(F,[[@pi,deval(@pi)],[@e,deval(@e)]]);
+ L=[];
+ if(type(F)<4){
+ if(type(F)==3) F=nm(red(F));
+ if((Deg=deg(F,V))<=2){
+ if(Deg==2){
+ D=(C1=coef(F,1,V))^2-4*(C2=coef(F,2,V))*coef(F,0,V);
+ if(D>=0){
+ R=dsqrt(D);
+ if((S=(-C1+R)/(2*C2))>=LX1&&S<=LX2) L=[[S,mysubst(F,[V,S])]];
+ if(D!=0 && (S=(-C1-R)/(2*C2))>=LX1&&S<=LX2) L=cons([S,mysubst(F,[V,S])],L);
+ }
+ L=qsort(L);
+ }else if(Deg==1&&(S=-coef(F,0,V)/coef(F,1,V))>=LX1&&S<=LX2)
+ L=[[S,mysubst(F,[V,S])]];
+ return L;
+ }
+ for(L=[];S!=[];S=cdr(S))
+ if(car(S)>=LX1&&car(S)<=LX2) L=cons([car(S),mysubst(F,[V,car(S)])],L);
+ return qsort(L);
+ }
+ if(type(Div=getopt(mesh))!=1 || Div<=0)
+ Div = 2^(10);
+ W=(LX2-LX1)/Div;
+ for(I=V2=0;I<=Div;I++){
+ X1=X2;X2=LX1+I*W;V1=V2;
+ if((V2=myeval(mysubst(F,[V,X2])))==0)
+ L=cons([X2,V2],L);
+ if(V1*V2<0){
+ L0=fzero(F,[V,X1,X2]|zero=1,trans=1);
+ if(L0!=[]) L=cons(L0,L);
+ }
+ }
+ return reverse(L);
+}
+
+def fmmx(F,LX)
+{
+ if(length(LX)==3){
+ V=LX[0];LX=cdr(LX);
+ }else V=x;
+ LX1=eval(LX[0]);LX2=eval(LX[1]);
+ FT=F;
+ if(getopt(trans)!=1 && type(F)<4) FT=f2df(FT);
+ FT=mysubst(FT,[[@pi,eval(@pi)],[@e,eval(@e)]]);
+ if(type(G=getopt(dif))>=1){
+ if(G==1) G=os_md.mydiff(F,V);
+ L=fzero(G,[V,LX1,LX2]|option_list=getopt());
+ R=[[LX1,myeval(mysubst(FT,[V,LX1]))]];
+ for(I=0;L!=[];L=cdr(L),I++){
+ X=car(L)[0];
+ if(X==LX1) continue;
+ R=cons([X,myeval(mysubst(FT,[V,X]))],R);
+ }
+ if(X!=LX2) R=cons([LX2,myeval(mysubst(FT,[V,LX2]))],R);
+ if(getopt(mmx)!=1) return reverse(R);
+ for(Mi=Ma=car(R);R!=[];R=cdr(R)){
+ if(car(R)[1]>Ma[1]) Ma=car(R);
+ else if(car(R)[1]<Mi[1]) Mi=car(R);
+ }
+ return [Mi,Ma];
+ }
+ if(type(Div=getopt(mesh))!=1 || Div<=0)
+ Div = 2^(10);
+ if(type(Dev=getopt(dev))!=1 || Dev<2) Dev=16;
+ W=(LX2-LX1)/Div;
+ for(I=V2=V3=0;I<=Div;I++){
+ X1=X2;X2=X3;X3=LX1+I*W;V1=V2;V2=V3;
+ V3=myeval(mysubst(FT,[V,X3]));
+ if(I==0) L=[[X3,V3]];
+ if(I<2) continue;
+ if((V1-V2)*(V2-V3)<0){
+ X02=X2;V02=V2;X03=X3;V03=V3;
+ for(J=0; J<Dev && X1!=X3; J++){
+ X12=(X1+X2)/2;V12=myeval(mysubst(FT,[V,X12]));
+ if((V1-V12)*(V12-V2)<=0){
+ X3=X2;V3=V2;X2=X12;V2=V12;continue;
+ }
+ X23=(X2+X3)/2;V23=myeval(mysubst(FT,[V,X23]));
+ if((V12-V2)*(V2-V23)<=0){
+ X1=X12;V1=V12;X3=X23;V3=V23;continue;
+ }
+ if((V2-V23)*(V23-V3)<=0){
+ X1=X2;V1=V2;X2=X23;V2=V23;continue;
+ }
+ }
+ L=cons([X2,V2],L);
+ X2=X02;V2=V02;X3=X03;V3=V03;
+ }
+ }
+ L=cons([LX2,myeval(mysubst(FT,[V,LX2]))],L);
+ if(getopt(mmx)!=1) return L;
+ for(Mi=Ma=car(L);L!=[];L=cdr(L)){
+ if(car(L)[1]>Ma[1]) Ma=car(L);
+ else if(car(L)[1]<Mi[1]) Mi=car(L);
+ }
+ return [Mi,Ma];
+}
+
+def flim(F,L)
+{
+ FD=f2df(F);
+ Lim0=4;Lim=12;FS=1;
+ if(type(Pc=getopt(prec))==1){
+ if((Pc>1&&Pc<31)||Pc>-5) Lim+=Pc;
+ }
+ if(type(Pc=getopt(init))==1 && Pc>0) FS*=Pc;
+ if(type(L)==7) L=[L];
+ else if(type(L)<2){
+ K=flim(F,["+",L]|option_list=getopt());
+ if(K=="") return K;
+ K1=flim(F,["-",L]|option_list=getopt());
+ if(K1=="") return K1;
+ if(type(K)==7||type(K1)==7){
+ if(K!=K1) return "";
+ return K;
+ }
+ if(abs(K)<10^(-5)){
+ if(abs(K1)<10^(-5)) return (K1+K)/2;
+ else return "";
+ }
+ if(abs((K1-K)/K)<10^(-4)) return (K1+K)/2;
+ return "";
+ }
+ if(type(L)!=4||type(L[0])!=7) return "";
+ if(L[0]=="-"||L[0]=="-infty"){
+ FS=-FS;
+ }else if(L[0]!="+"&&L[0]!="infty") return "";
+ FI=(length(L)==1)?1:0;
+ for(Inf=0,I=Lim0;I<Lim;I++){
+ D1=FS*8^I;D2=8*D1;
+ if(FI==0){
+ D1=1/D1;D2=1/D2;
+ }
+ if(D1>D2){
+ D=D1;D1=D2;D1=D;
+ X1=D1;X2=D2;
+ }
+ if(FI==0){
+ D1+=L[1];D2+=L[1];
+ }
+ K=fmmx(FD,[D1,D2]|mmx=1,mesh=16,dev=4);
+ if(I>Lim0){
+ if(DF<K[1][1]-K[0][1]&&DF>10^(-8)&&DF<10^7){
+ if(I>Lim0+1){
+ if(Inf==0) return "";
+ }else Inf=1;
+ }else if(Inf==1) return "";
+ }
+ DF=K[1][1]-K[0][1];
+ }
+ if(Inf==1){
+ if(K[0][1]>10^8) return "+";
+ else if(K[1][1]<-10^8) return "-";
+ return "";
+ }
+ V=(myfeval(FD,D1)+1.0)-1.0;
+ if(V!=0 && abs(V)<10^(-9)) return 0;
+ return V;
+}
+
+def fcont(F,LX)
+{
+ if(length(LX)==3){
+ V=LX[0];LX=cdr(LX);
+ }else V=x;
+ LX1=eval(LX[0]);LX2=eval(LX[1]);
+ if(getopt(trans)!=1 && type(F)<4) FT=f2df(F);
+ if(type(Div=getopt(mesh))!=1 || Div<=0)
+ Div = 2^(10);
+ if(type(Dev=getopt(dev))!=1 || Dev<2) Dev=16;
+ W=(LX2-LX1)/Div;
+ if((Df=getopt(dif))!=1){
+ Df=0;
+ }else{
+ if(Dev==16) Dev=6;
+ WD=W/2^(Dev+1);
+ }
+ F=FT;
+ C=2;
+ for(I=V2=V3=0;I<=Div;I++){
+ X1=X2;X2=X3;X3=LX1+I*W;V1=V2;V2=V3;
+ V3=myeval(mysubst(F,[V,X3]));
+ if(Df){
+ if(I==Div) break;
+ V3=(myeval(mysubst(F,[V,X3+WD]))-V3)/WD;
+ }
+ if(I==0) L=[[X3,V3]];
+ if(I<2) continue;
+ if(C*dabs(2*V2-V1-V3) > dabs(V1-V3)){
+ X01=X1;V01=V1;X02=X2;V02=V2;X03=X3;V03=V3;
+ for(J=0; X01!=X03; J++){
+ if(dabs(V01-V02)>dabs(V02-V03)){
+ X03=X02;V03=V02;
+ }else{
+ X01=X02;V01=V02;
+ }
+ if(J==Dev) break;
+ X02=(X01+X02)/2;
+ V02=myeval(mysubst(F,[V,X02]));
+ if(Df) V02=(myeval(mysubst(F,[V,WD]))-V02)/WD;
+ if(C*dabs(2*V02-V01-V03) < dabs(V01-V03)) break;
+ }
+ if(J==Dev||X01==X03) L=cons([X01,X03,V03-V01],L);
+ }
+ }
+ return reverse(L);
+}
+
+def xygraph(F,N,LT,LX,LY)
+{
+ if((Proc=getopt(proc))!=1&&Proc!=2&&Proc!=3) Proc=0;
+ if(type(DV=getopt(dviout))==4){
+ OL=delopt(getopt(),["dviout","shift","ext","cl"]);
+ OL=cons(["proc",1],OL);
+ R=xygraph(F,N,LT,LX,LY|option_list=OL);
+ OL=delopt(getopt(),["shift","ext","cl"]|inv=1);
+ return execdraw(R,DV|optilon_list=OL);
+ }
+ if(N==0) N=32;
+ if(N<0){
+ N=-N;
+ N1=-1; N2=N+1;
+ }else{
+ N1=0; N2=N;
+ }
+ if(length(LT)==3 && isvar(LT[0])==1){
+ TT=LT[0]; LT=cdr(LT);
+ F=mysubst(F,[TT,x]);
+ }
+ if(LX==0) LX=LT;
+ if((Acc=getopt(Acc))!=1) Acc=0;
+ if(Acc){
+ LX=[eval(LX[0]),eval(LX[1])];
+ LY=[eval(LY[0]),eval(LY[1])];
+ LT=[eval(LT[0]),eval(LT[1])];
+ }else{
+ LX=[deval(LX[0]),deval(LX[1])];
+ LY=[deval(LY[0]),deval(LY[1])];
+ LT=[deval(LT[0]),deval(LT[1])];
+ }
+ TD=(LT[1]-LT[0])/N;
+ if(type(Mul=getopt(scale))!=1){
+ if(type(Mul)==4){
+ MulX=Mul[0]; MulY=Mul[1];
+ }else MulX=MulY=1;
+ }else MulX=MulY=Mul;
+ if(type(Org=getopt(org))==4){
+ Orgx=Org[0];Orgy=Org[1];
+ }else Orgx=Orgy=0;
+ if(type(F)!=4 || (getopt(para)!=1 && length(F)>1 && type(F[0])<4 && type(F[1])==4)) {
+ if(getopt(rev)!=1){
+ F1=x; /* LX[0]+(LX[1]-LX[0])*(x-LT[0])/(TD*N); */
+ F2=F;
+ }else{
+ F1=F;
+ F2=x; /* LY[0]+(LY[1]-LY[0])*(x-LT[0])/(TD*N); */
+ }
+ }else{
+ F1=F[0]; F2=F[1];
+ }
+ if(F1==0 || F2==0) LT=[];
+ if(length(LT)==2){
+ if(Acc){
+ for(LTT=[],I=N2;I>=N1;I--)
+ LTT=cons(eval(LT[0]+I*(LT[1]-LT[0])/N),LTT);
+ }else{
+ for(LTT=[],I=N2;I>=N1;I--)
+ LTT=cons(deval(LT[0]+I*(LT[1]-LT[0])/N),LTT);
+ }
+ LT=LTT;
+ }
+ Cpx=getopt(cpx);
+ if(Cpx!=1 && (str_str(rtostr(F1),"@i")>=0 || str_str(rtostr(F2),"@i")>=0))
+ Cpx=1;
+ if(type(Cpx)<0) Cpx=0;
+ if(!Acc){
+ if(type(F1)<4) F1=f2df(F1);
+ if(type(F2)<4) F2=f2df(F2);
+ }
+ if(type(Err=getopt(err))==1){
+ F1=mysubst(F1,[x,x+Err*TD/1001.23]);
+ F2=mysubst(F2,[x,x+Err*TD/1001.23]);
+ }
+ if(type(F1)==4 || type(F2)==4){
+ Dn=1;
+ }else Dn=dn(F1)*dn(F2);
+ for(V=[],PT=LT;PT!=[]; PT=cdr(PT)){
+ T=car(PT);
+ if(myfeval(Dn,T)==0){
+ V=cons(0,V); continue;
+ }
+ if(Cpx>0||Acc){
+ X=myfeval(F1,T);Y=myfeval(F2,T);
+ }else{
+ X=myfdeval(F1,T);Y=myfdeval(F2,T);
+ }
+ if((N1==0||(PT!=LT&&length(PT)!=1)) && (X<LX[0]||X>LX[1]||Y<LY[0]||Y>LY[1]))
+ V=cons(0,V);
+ else
+ V=cons([MulX*(X-Orgx),MulY*(Y-Orgy)],V);
+ }
+ V=reverse(V);
+ Gap0=Gap=Arg=0;
+ if(type(Prec=getopt(prec))<0)
+ Level=0;
+ else if(Prec==0) Level=4;
+ else if(type(Prec)==1){
+ Level=Prec;
+ if(Level<0){
+ Level=-Level;
+ Gap0=1;
+ }
+ }else if(type(Prec)==4){
+ Level=Prec[0];
+ if(length(Prec)>1) Arg=Prec[1];
+ if(length(Prec)>2) Gap0=Prec[2];
+ }
+ if(Level>0){
+ if(Level>16) Level=16;
+ if(Arg<=0) Arg=30;
+ else if(Arg>120) Arg=120;
+ Arg=Acc?eval(@pi*Arg/180):deval(@pi*Arg/180);
+ SL=dcos(Arg);
+ }
+ if(Gap0>0){
+ if(Gap0<2) Gap0=16;
+ else if(Gap0>512) Gap0=512;
+ Gap=((MulX*(LX[1]-LX[0]))^2+(MulY*(LY[1]-LY[0]))^2)/(Gap0^2);
+ }
+ for(I=0;I<Level;I++){
+ for(F=K=G=0,NV=NLT=[],PLT=LT,PV=V;PLT!=[];K++,PLT=cdr(PLT),PV=cdr(PV)){
+ TG=0;D0=D1;CLT0=CLT;CV0=CV;CV=car(PV);CLT=car(PLT);
+ if(length(PV)>1){
+ if((CV1=car(cdr(PV)))!=0 && CV!=0)
+ D1=[CV[0]-CV1[0],CV[1]-CV1[1]];
+ else D1=0;
+ }else K=-1; /* ? */
+ if(K>0 &&(((D1==0||D0==0)&&(CV0!=0||CV!=0||CV1!=0)) || dvangle(D0,D1)<SL ||
+ (Gap>0 && type(D0)==4 && (TG=(D0[0]^2+D0[1]^2-Gap)>0)))){
+ G++;T1=(CLT0+CLT)/2;
+ if(F==0 && (CV0!=0 || CV!=0)){
+ if(myfdeval(Dn,T1)==0){
+ NV=cons(0,NV); NLT=cons(T1,NLT);
+ }
+ if(Cpx>0||Acc){
+ X=myfeval(F1,T1);Y=myfeval(F2,T1);
+ }else{
+ X=myfdeval(F1,T1);Y=myfdeval(F2,T1);
+ }
+ if(K==1 && N1<0){
+ NV=[];NLT=[];
+ }
+ if((K>1||N1==0)&&(X<LX[0]||X>LX[1]||Y<LY[0]||Y>LY[1])){
+ NV=cons(0,NV);NLT=cons(T1,NLT);F=0;
+ }else{
+ NV=cons([MulX*(X-Orgx),MulY*(Y-Orgy)],NV);NLT=cons(T1,NLT);
+ }
+ }
+ NV=cons(CV,NV);NLT=cons(CLT,NLT);
+ if(!TG&&(CV0!=0||CV1!=0)){
+ T2=(car(cdr(PLT))+CLT)/2;
+ if(myfdeval(Dn,T2)==0){
+ NV=cons(0,NV); NLT=cons(CLT,NLT);
+ }
+ if(Cpx>0||Acc){
+ X=myfeval(F1,T2);Y=myfeval(F2,T2);
+ }else{
+ X=myfdeval(F1,T2);Y=myfdeval(F2,T2);
+ }
+ if((N1==0||length(PV)!=2)&&(X<LX[0]||X>LX[1]||Y<LY[0]||Y>LY[1])){
+ NV=cons(0,NV);NLT=cons(T1,NLT);
+ }else{
+ NV=cons([MulX*(X-Orgx),MulY*(Y-Orgy)],NV);NLT=cons(T2,NLT);
+ }
+ }
+ if(length(PV)==2 && N1==-1) break;
+ F=1;
+ }else{
+ F=0;NV=cons(CV,NV);NLT=cons(CLT,NLT);
+ }
+ }
+ V=reverse(NV);LT=reverse(NLT);
+ if(G==0) break;
+ }
+ if(Gap>0){
+ for(NV=[],PV=V;PV!=[];PV=cdr(PV)){
+ NV=cons(P0=car(PV),NV);
+ if(length(PV)>1 && P0!=0 && PV[1]!=0
+ && (P0[0]-PV[1][0])^2+(P0[1]-PV[1][1])^2>Gap) NV=cons(0,NV);
+ }
+ V=reverse(NV);
+ }
+ if(getopt(raw)==1) return V;
+ OL=[["curve",1]];OLP=[];
+ if(type(C=getopt(ratio))==1){
+ OL=cons(["ratio",C],OL);OLP=cons(["ratio",C],OLP);
+ }
+ if(Acc==1) OL=cons(["Acc",1],OL);
+ if(N1<0) OL=cons(["close",-1],OL);
+ if(type(Opt=getopt(opt))!=7 && type(Opt)!=4){
+ if(Opt==0) return xylines(V|option_list=cons(["opt",0],OL));
+ }
+ OL=cons(["opt",(Proc)?0:Opt],OL);
+ if(type(Opt)>=0) OLP=cons(["opt",Opt],OLP);
+ if(type(Vb=getopt(verb))==1||type(Vb)==4){
+ OL=cons(["verb",Vb],OL);OLP=cons(["verb",Vb],OL);
+ }
+ if(Proc){
+ S=(Proc==1)?
+ [[0,[MulX*(LX[0]-Orgx),MulX*(LX[1]-Orgx)],[MulY*(LY[0]-Orgy),MulY*(LY[1]-Orgy)],
+ (TikZ)?1:1/10]]:[];
+ S=cons([1,OLP,xylines(V|option_list=OL)],S);
+ if(Proc==3) return car(S);
+ }else S=xylines(V|option_list=OL);
+ if(type(Pt=getopt(pt))==4){
+ if(type(Pt[0])!=4) Pt=[Pt];
+ if(length(Pt)>1 && type(Pt[1])!=4) Pt=[Pt];
+ for(PT=Pt;PT!=[];PT=cdr(PT)){
+ PP=car(PT);
+ if(type(PP[0])!=4) PP=[PP];
+ P=car(PP);PP=cdr(PP);
+ Qx=MulX*(P[0]-Orgx);Qy=MulY*(P[1]-Orgy);
+ if(length(PP)>0 && type(PP[0])==4){ /* draw line */
+ P=car(PP);
+ Q1x=MulX*(P[0]-Orgx);Q1y=MulY*(P[1]-Orgy);
+ if(length(PP)<1 || car(PP)==0 || iand(car(PP),1))
+ OL=["opt",(TikZ)?"-":"@{-}"];
+ else OL=["opt",(TikZ)?".":"@{.}"];
+ if(Proc) S=cons([1,OL,[[Qx,Qy],[Q1x,Q1y]]],S);
+ else S=S+xylines([[Qx,Qy],[Q1x,Q1y]]|optilon_list=OL);
+ continue;
+ }
+ if(length(PP)==0 || type(car(PP))!=7) SS="$\\bullet$";
+ else SS=car(PP);
+ if(length(PP)<=1){
+ if(Proc) S=cons([2,[],[Qx,Qy],[SS]],S);
+ else S=S+xyput([Qx,Qy,SS]);
+ }else{
+ if(Proc) S=cons([2,[],[Qx,Qy],[[SS],"",PP[1]]],S);
+ S=S+xyput([Qx,Qy,SS,"",PP[1]]);
+ }
+ }
+ }
+ if(type(Ax=getopt(ax))==4){ /* draw axis */
+ Adx0=Ady0=0; Adx1=Ady1=0.1;
+ if(!TikZ){
+ if(!XYcm) Adx1=Ady1=1;
+ LOp="@{-}"; LxOp="+!U"; LyOp="+!R";
+ }else{
+ LOp="-"; LxOp="below"; LyOp="left";
+ }
+ LOp0=LOp1=LOp;
+ LxOO=(Ax[1]==LY[0])?LxOp:(TikZ)?"below left":"+!UR";
+ if(type(AxOp=getopt(axopt))>0){
+ if(type(AxOp)==1){
+ if(AxOp>0) Adx1=Ady1=AxOp;
+ else if(AxOp<0){
+ Adx1=Ady1=0; Adx0=Ady0=AxOp;
+ }
+ }else if(type(AxOp)==4){
+ if(type(T=car(AxOp))==4 && length(AxOp)>1){
+ if(type(T)==7){
+ LxOp=T; LyOp=AxOp[1];
+ }else if(type(T)==4){
+ Ay0=T[0]; Ay1=T[1]; Ax0=AxOp[1][0]; Ax1=AxOp[1][1];
+ if(length(T)>2) LxOp=T[2];
+ if(length(AxOp[1])>2) LyOp=AxOp[1][2];
+ }
+ }
+ if(length(AxOp)>2 && type(AxOp[2])==7) LxOO=AxOp[2];
+ if(length(AxOp)>3 && type(AxOp[3])==7) LOp0=AxOp[3];
+ if(length(AxOp)>4 && type(AxOp[4])==7) LOp1=AxOp[4];
+ }
+ if(type(AxOp)==7) LOp0=AxOp;
+ }
+ if(Ax[0]>=LX[0] && Ax[0]<=LX[1]){ /* draw marks on x-axis */
+ if(Proc) S=cons([3,(type(LOp0)>=0)?[["opt",LOp0]]:[],
+ [MulX*(Ax[0]-Orgx),MulY*(LY[0]-Orgy)],[MulX*(Ax[0]-Orgx),MulY*(LY[1]-Orgy)]],S);
+ else S=S+xyarrow([MulX*(Ax[0]-Orgx),MulY*(LY[0]-Orgy)],
+ [MulX*(Ax[0]-Orgx),MulY*(LY[1]-Orgy)]|opt=LOp0);
+ if(length(Ax)>2){
+ D=Ax[2];
+ if(type(D)==1 && D>0){
+ I0=ceil((LX[0]-Ax[0])/D); I1=floor((LX[1]-Ax[0])/D);
+ for(DD=[],I=I0; I<=I1; I++){
+ if(length(Ax)<5) DD=cons(I*D,DD);
+ else if(Ax[4]==0) DD=cons([I*D,I*D+Ax[0]],DD);
+ else if(Ax[4]==1) DD=cons([I*D,I*D],DD);
+ else if(Ax[4]==2) DD=cons([I*D,I],DD);
+ }
+ D=DD;
+ }
+ if(type(D)==4){
+ for(;D!=[]; D=cdr(D)){
+ T=car(D);
+ if(type(T)==4) T=car(T);
+ X=MulX*(T+Ax[0]-Orgx); Y=MulY*(Ax[1]-Orgy);
+ if(T!=0){
+ if(Proc) S=cons([3,(type(LOp1)>=0)?[["opt",LOp1]]:[],[X,Y+Ady0],[X,Y+Ady1]],S);
+ else S=S+xyarrow([X,Y+Ady0],[X,Y+Ady1]|opt=LOp1);
+ }
+ if(type(car(D))==4){
+ Arg=[(T==0)?LxOO:LxOp,D[0][1]];
+ if(Proc) S=cons([2,[],[X,Y+Ady0],[Arg]],S);
+ else S=S+xyput([X,Y+Ady0,Arg]);
+ }
+ }
+ }
+ }
+ }
+ if(Ax[1]>=LY[0] && Ax[1]<=LY[1]){ /* draw marks on y-axis */
+ if(Proc) S=cons([3,[["opt",LOp0]],
+ [MulX*(LX[0]-Orgx),MulY*(Ax[1]-Orgy)],
+ [MulX*(LX[1]-Orgx),MulY*(Ax[1]-Orgy)]],S);
+ else S=S+xyarrow([MulX*(LX[0]-Orgx),MulY*(Ax[1]-Orgy)],
+ [MulX*(LX[1]-Orgx),MulY*(Ax[1]-Orgy)]|opt=LOp0);
+ if(length(Ax)>3){
+ D=Ax[3];
+ if(type(D)==1 && D>0){
+ I0=ceil((LY[0]-Ax[1])/D); I1=floor((LY[1]-Ax[0])/D);
+ for(DD=[],I=I0; I<=I1; I++){
+ if(length(Ax)<5) DD=cons(I*D,DD);
+ else if(I!=0){
+ if(Ax[4]==0) DD=cons([I*D,I*D+Ax[1]],DD);
+ if(Ax[4]==1) DD=cons([I*D,I*D],DD);
+ if(Ax[4]==2) DD=cons([I*D,I],DD);
+ }
+ }
+ D=DD;
+ }
+ if(type(D)==4){
+ for(;type(D)==4&&D!=[]; D=cdr(D)){
+ T=car(D);
+ if(type(T)==4) T=car(T);
+ X=MulX*(Ax[0]-Orgx); Y=MulY*(T+Ax[1]-Orgy);
+ if(T!=0){
+ if(Proc) S=cons([3,(type(LOp0)>=0)?[["opt",LOp1]]:[],
+ [X+Adx0,Y],[X+Adx1,Y]],S);
+ else S=S+xyarrow([X+Adx0,Y],[X+Adx1,Y]|opt=LOp1);
+ }
+ if(type(car(D))==4){
+ if(Proc) S=cons([2,[],[X,Y+Ady0],[[LyOp,D[0][1]]]],S);
+ else S=S+xyput([X,Y+Ady0,[LyOp,D[0][1]]]);
+ }
+ }
+ }
+ }
+ }
+ }
+ if(Proc) return reverse(S);
+ if(getopt(dviout)!=1) return S;
+ xyproc(S|dviout=1);
+}
+
+def xyarrow(P,Q)
+{
+ Cmd = ["fill","filldaw","shade","shadedraw","clip ","pattern","path ","node","coordinate"];
+ if(type(P)<4) return "%\n";
+ SS=getopt(opt);
+ if(!TikZ){
+ if(type(Q)<4) return "";
+ S="{"+xypos(P)+" \\ar";
+ if(type(SS)==7) S=S+SS;
+ return S+" "+xypos(Q)+"};\n";
+ }
+ if(type(SS)==4 && length(SS)>1){
+ if(length(SS)>2) SU=SS[2];
+ ST=SS[1];
+ SS=SS[0];
+ }
+ if(type(SS)!=7) SS="->";
+ if(type(ST)!=7) ST=" -- ";
+ if(type(SU)!=7) SU="";
+ if(type(S=getopt(cmd))==7) S="\\"+S;
+ else S="\\draw";
+ if(type(Q)!=4){
+ if(Q>0 && Q<=length(Cmd)) S="\\"+Cmd[Q-1]+"";
+ if(SS!="-") S=S+"["+SS+"]";
+ if(SU!="") SU="["+SU+"]";
+ return S+xypos(P)+ST+SU+";\n";
+ }
+ if(SS!="-"&&SS!="") S=S+"["+SS+"]";
+ if(length(P)<3 && length(Q)<3)
+ return S+xypos(P)+ST+xypos(Q)+SU+";\n";
+ if(length(P)==2) P=[P[0],P[1],"","_0"];
+ else if(length(P)==3 || (length(P)==4 && P[3]==""))
+ P=[P[0],P[1],P[2],"_0"];
+ else if(P[3]=="")
+ P=[P[0],P[1],P[2],"_0",P[4]];
+ if(length(Q)==2) Q=[Q[0],Q[1],"","_1"];
+ else if(length(Q)==3 || (length(Q)==4 && Q[3]==""))
+ Q=[Q[0],Q[1],Q[2],"_1"];
+ else if(Q[3]=="")
+ Q=[Q[0],Q[1],Q[2],"_1",Q[4]];
+ return S+xypos(P)+" "+xypos(Q)+"("+P[3]+")"+ST+"("+Q[3]+")"+SU+";\n";
+}
+
+def xyarrows(P,Q,R)
+{
+ PQ=newvect(4);
+ PQ[0]=(type(P[0])!=4)?f2df(P[0]):P[0];
+ PQ[1]=(type(P[1])!=4)?f2df(P[1]):P[1];
+ PQ[2]=(type(Q[0])!=4)?f2df(Q[0]):Q[0];
+ PQ[3]=(type(Q[1])!=4)?f2df(Q[1]):Q[1];
+ if(type(R[0])!=4) R=[R];
+ TR=R[0];NX=TR[2];X=X0=TR[0];DX=(TR[1]-TR[0])/NX;
+ if(length(R)==2){
+ TR=R[1];NY=TR[2];Y=TR[0];DY=(TR[1]-TR[0])/NY;
+ }else{
+ NY=1;Y=DY=0;
+ }
+ if(type(L=getopt(abs))!=1) L=0;
+ if(type(Sc=getopt(scale))!=1) Sc=0;
+ OL=[];
+ if(type(Opt=getopt(opt))==7) OL=cons(["opt",Opt],OL);
+ Tb=str_tb(0,0);
+ for(J=0;J<NY;Y+=DY,J++){
+ for(I=0,X=X0;I<NX;I++,X+=DX){
+ PX=myf2eval(PQ[0],X,Y);PY=myf2eval(PQ[1],X,Y);
+ VX=myf2eval(PQ[2],X,Y);VY=myf2eval(PQ[3],X,Y);
+ if(L>0){
+ C=dnorm([VX,VY]);
+ if(C!=0){
+ VX*=L/C;VY*=L/C;
+ }
+ }
+ if(Sc){
+ VX*=Sc;VY*=Sc;
+ }
+ if(VX||VY) str_tb(xyarrow([PX,PY],[PX+VX,PY+VY]|optilon_list=OL),Tb);
+ }
+ }
+ return str_tb(0,Tb);
+}
+
+def polroots(L,V)
+{
+ INIT=1;
+ if(type(CF=getopt(comp))!=1) CF=0;
+ OL=getopt();
+ if(CF>32){
+ CF-=64;
+ INIT=0;
+ }else OL=cons(["comp",CF+64],delopt(OL,"comp"));
+ if(type(V)==4&&length(V)==1){
+ L=L[0];V=V[0];
+ }
+ Lim=Lim2=[];
+ if(type(L)<4){
+ if(type(Lim=getopt(lim))==4){
+ if(type(Lim[0])!=4){
+ if(!isvar(Lim[0])) Lim=cons(V,[Lim]);
+ Lim=[Lim];
+ }
+ if(!isvar(Lim[0][0])) Lim=[cons(V,Lim)];
+ Lim=delopt(Lim,V|inv=1);
+ if(Lim!=[]){
+ Lim=Lim[0];
+ if(length(Lim)==3) Lim2=Lim[2];
+ Lim=Lim[1];
+ }
+ }else{
+ Lim=Lim2=[];
+ }
+ if((CF==-2||CF==-1||CF==2)&&iscoef(L,os_md.israt)){ /* Rat+Comp, Rat+Real or Rat */
+ S=(CF==-1)?getroot(L,V|cpx=1):getroot(L,V);
+ for(RR=[],F=x;S!=[];S=cdr(S)){
+ if(findin(V,vars(C=car(S)))<0){ /* Rational solution */
+ if(type(C)<2){
+ if(Lim!=[]&&(real(C)<Lim[0]||real(C)>Lim[1])) continue;
+ if(Lim2!=[]&&(imag(C)<Lim2[0]||imag(C)>Lim2[1])) continue;
+ }
+ if(F!=C) RR=cons(F=C,RR);
+ }else if(CF<0){ /* Irrational solution */
+ if((R=pari(roots,mysubst(C,[V,x])))!=0){
+ for(R=vtol(R);R!=[];R=cdr(R))
+ if((C=car(R))!=F && ntype(C)<CF+6){
+ if(Lim!=[]&&(real(C)<Lim[0]||real(C)>Lim[1])) continue;
+ if(Lim2!=[]&&(imag(C)<Lim2[0]||imag(C)>Lim2[1])) continue;
+ RR=cons(F=C,RR);
+ }
+ }
+ }
+ }
+ return qsort(RR);
+ }
+ R=pari(roots,subst(L,V,x));
+ if(R==0){
+ R=[0];
+ if(CF==1){
+ for(R=[0],I=mydeg(L,V);I>1; I--)
+ R=cons(0,R);
+ }
+ return R;
+ }
+ if(CF==1){ /* Complex */
+ if(Lim==[]&&Lim2==[]) return vtol(R);
+ for(L=[],I=length(R)-1;I>=0;I--){
+ C=R[I];
+ if(Lim!=[]&&(real(C)<Lim[0]||real(C)>Lim[1])) continue;
+ if(Lim2!=[]&&(imag(C)<Lim2[0]||imag(C)>Lim2[1])) continue;
+ L=cons(C,L);
+ }
+ return L;
+ }
+ for(L=[],F=x,I=length(R)-1;I>=0;I--){ /* Real */
+ if(ntype(R[I])<4 && F!=R[I]){
+ if(Lim!=[] && (R[I]<Lim[0]||R[I]>Lim[1])) continue;
+ L=cons(F=R[I],L);
+ }
+ }
+ return qsort(L);
+ }
+ if(SS==0&&INIT==1){
+ SS=polroots(L,V|option_list=OL);
+ if(SS!=0) return SS;
+ for(C=0;SS==0&&C<4;C++){
+ I=(C==0)?1:(iand(random(),0xff)-0x80);
+ for(LL=[],K=length(L)-1;K>=0;K--){
+ for(Q=0,J=length(L)-1;J>=0;J--)
+ Q+=L[J]*(I+K)^J;
+ LL=cons(Q,LL);
+ }
+ SS=polroots(LL,V|option_list=OL);
+ if(SS!=0) return SS;
+ }
+ return SS;
+ }
+ C=2^(-32);
+ if(type(getopt(err))==1) C=err;
+ if((N=length(V))!=length(L)) return [];
+ if(N==1) return polroots(L[0],V[0]|option_list=OL);
+ for(L1=[],I=1;I<N;I++){
+ Res=res(V[0],L[I-1],L[I]);
+ if(type(Res)<2) return Res;
+ L1=cons(res(V[0],L[I-1],L[I]),L1);
+ }
+ R=polroots(L1,V1=cdr(V)|option_list=OL);
+ if(type(R)<2) return R;
+ for(SS=[];R!=[];R=cdr(R)){
+ RS=(N==2)?[car(R)]:car(R);
+ for(I=0,L0=L[0];I<N-1;I++) L0=mysubst(L0,[V1[I],RS[I]]);
+ if(L0==0) return 0;
+ S0=polroots(L0,V[0]|option_list=OL);
+ if(type(S0)<2) return S0;
+ for(S=S0;S!=[];S=cdr(S)){
+ S0=cons(car(S),RS);
+ for(LT=cdr(L);LT!=[];LT=cdr(LT)){
+ for(I=0,TV=car(LT);I<N;I++) TV=mysubst(TV,[V[I],S0[I]]);
+ if(abs(TV)>C) break;
+ }
+ if(LT==[]) SS=cons(S0,SS);
+ }
+ }
+ return reverse(SS);
+}
+
+def ptcommon(X,Y)
+{
+ if(length(X)!=2 || length(Y)!=2) return 0;
+ if(type(X[1])==4){ /* X is a line */
+ if((In=getopt(in))==-1||In==-2||In==-3){
+ X0=(X[0][0]+X[1][0])/2;X1=(X[0][1]+X[1][1])/2;
+ X=[[X0,X1],[X0+X[1][1]-X[0][1],X1-X[1][0]+X[0][0]]];
+ if(In==-1&&type(Y[1])==4) return ptcommon(Y,X|in=-2);
+ /* for the second line */
+ if(In==-3) In=1;
+ else In=0;
+ }else if(In==2||In==3){
+ X=(X[1][0]-X[0][0])+(X[1][1]-X[0][1])*@i;
+ if(X==0) return 0;
+ Y=(Y[1][0]-Y[0][0])+(Y[1][1]-Y[0][1])*@i;
+ X=myarg(Y/X);
+ return (In==2)?X:(X*180/deval(@pi));
+ }else if(In!=1) In=0;
+ if(type(Y[0])<=3){
+ if(In==1){
+ return [(Y[1]*X[0][0]+Y[0]*X[1][0])/(Y[0]+Y[1]),
+ (Y[1]*X[0][1]+Y[0]*X[1][1])/(Y[0]+Y[1])];
+ }
+ XX=X[1][0]-X[0][0];YY=X[1][1]-X[0][1];
+ Arg=(length(Y)<2)?0:Y[1];
+ Arg=deval(Arg);
+ if(Arg!=0){
+ S=dcos(Arg)*XX-dsin(Arg)*YY;
+ YY=dsin(Arg)*XX+dcos(Arg)*YY;
+ XX=S;
+ }
+ S=dnorm([XX,YY]);
+ if(S!=0){
+ XX*=Y[0]/S;YY*=Y[0]/S;
+ }
+ return [X[1][0]+XX,X[1][1]+YY];
+ }
+ S=[X[0][0]+(X[1][0]-X[0][0])*x_,X[0][1]+(X[1][1]-X[0][1])*x_];
+ if(type(Y[1])==4){ /* Y is a line */
+ T=[Y[0][0]+(Y[1][0]-Y[0][0])*y_-S[0],
+ Y[0][1]+(Y[1][1]-Y[0][1])*y_-S[1]];
+ R=lsol(T,[x_,y_]);
+ if(type(R[0])==4&&type(R[1])==4&&R[0][0]==x_&&R[1][0]==y_){
+ if(!In || (R[0][1]>=0&&R[0][1]<=1&&R[1][1]>=0&&R[1][1]<=1) )
+ return subst(S,x_,R[0][1],y_,R[1][1]);
+ }
+ if((type(R[0])>0&&type(R[0])<4)||(type(R[1])>0&&type(R[1])<4)) return 0;
+ if(!In) return 1;
+ I=(X[0][0]==X[1][0]&&Y[0][0]==Y[1][0]&&X[0][0]==Y[0][0])?1:0;
+ if(X[0][I]<=X[1][I]){
+ X0=X[0][I];X1=X[1][I];
+ }else{
+ X1=X[0][I];X0=X[1][I];
+ }
+ return ((Y[0][I]<X0 && Y[1][I]<X0)||(Y[0][I]>X1&&Y[1][I]>X1))?0:1;
+ }else if(Y[1]==0){ /* orth */
+ T=[Y[0][0]+(X[1][1]-X[0][1])*y_-S[0],
+ Y[0][1]-(X[1][0]-X[0][0])*y_-S[1]];
+ R=lsol(T,[x_,y_]);
+ if(type(R[0])==4&&type(R[1])==4&&R[0][0]==x_&&R[1][0]==y_){
+ if(!In||(R[0][1]>=0&&R[0][1]<=1))
+ return subst(S,x_,R[0][1],y_,R[1][1]);
+ }
+ return (X[0]==X[1])?0:1;
+ }else if(type(Y[1])==1 && Y[1]>0){ /* circle */
+ T=(S[0]-Y[0][0])^2+(S[1]-Y[0][1])^2-Y[1]^2;
+ D=mycoef(T,1,x_)^2-4*mycoef(T,0,x_)*mycoef(T,2,x_);
+ if(D==0){
+ V=mycoef(T,1,x_)/(2*mycoef(T,2,x_));
+ if(!in||(V>=0&&V<=1)) return [subst(S,x_,V)];
+ }
+ else if((type(D)==1&&D>0)){
+ D=dsqrt(D);
+ V=-(mycoef(T,1,x_)+D)/(2*mycoef(T,2,x_));
+ if(!In||(V>=0&&V<=1)) L=[subst(S,x_,V)];
+ else L=[];
+ V=(D-mycoef(T,1,x_))/(2*mycoef(T,2,x_));
+ if(!In||(V>=0&&V<=1)) L=cons(subst(S,x_,V),L);
+ if(length(L)>0) return L;
+ }
+ }
+ return 0;
+ }
+ if(type(Y[1])==4 || X[1]==0) return ptcommon(Y,X);
+ /* X is a circle */
+ if(Y[1]==0){ /* tangent line */
+ if(Y[0][0]==X[0][0]+X[1] || Y[0][0]==X[0][0]-X[1]) L=[[Y[0][0],X[0][1]]];
+ else L=[];
+ P=(Y[0][0]+x_-X[0][0])^2+(Y[0][1]+x_*y_-X[0][1])^2-X[1]^2;
+ Q=mycoef(P,1,x_)^2-4*mycoef(P,2,x_)*mycoef(P,0,x_);
+ for(R=polroots(Q,y_);R!=[];R=cdr(R)){
+ X0=-subst(mycoef(P,1,x_)/(2*mycoef(P,2,x_)),y_,car(R));
+ L=cons([Y[0][0]+X0,Y[0][1]+car(R)*X0],L);
+ }
+ }else{ /* Y is a circle */
+ P=(x_-X[0][0])^2+(y_-X[0][1])^2-X[1]^2;
+ Q=(x_-Y[0][0])^2+(y_-Y[0][1])^2-Y[1]^2;
+ V=(X[0][0]!=Y[0][0])?[x_,y_]:[y_,x_];
+ R=subst(P,V[0],T=lsol(P-Q,V[0]));
+ if(type(T[0])<4) return (T[0]==0)?1:0;
+ S=polroots(R,V[1]);
+ for(L=[];S!=[];S=cdr(S)){
+ R=subst(T,V[1],car(S));
+ if(V[0]==x_) L=cons([R,car(S)],L);
+ else L=cons([S,R],L);
+ }
+ }
+ if(length(L)!=0) return L;
+ return 0;
+}
+
+def tobezier(L)
+{
+ if((Div=getopt(div))==1||Div==2){
+ if(length(L)!=4) return [tobezier(L|inv=[0,1/2]),tobezier(L|inv=[1/2,1])];
+ if(type(L)==4) L=ltov(L);
+ if(type(L[0])==4)
+ L=[ltov(L[0]),ltov(L[1]),ltov(L[2]),ltov(L[3])];
+ S=[(L[0]+3*L[1]+3*L[2]+L[3])/8];
+ T=[L[3]];
+ S=cons((L[0]+2*L[1]+L[2])/4,S);
+ T=cons((L[2]+L[3])/2,T);
+ S=cons((L[0]+L[1])/2,S);
+ T=cons((L[1]+2*L[2]+L[3])/4,T);
+ S=cons(L[0],S);
+ T=cons((L[0]+3*L[1]+3*L[2]+L[3])/8,T);
+ return [S,T];
+ }
+ if(Div>2&&Div<257){
+ L=tobezier(L);
+ for(R=[],I=Div-1;I>=0;I--)
+ R=cons(tobezier(L|inv=[I/Div,(I+1)/Div]),R);
+ return R;
+ }
+ if((V=getopt(inv))==1 || type(V)>3){
+ if(type(L[0])>3 && type(V)>3) L=tobezier(L);
+ if(type(V)>3 && length(V)>2) V2=V[2];
+ if(type(V2)!=2) V2=t;
+ if(type(V)>3) L=subst(L,V2,(V[1]-V[0])*V2+V[0]);
+ N=mydeg(L,V2);
+ for(R=[],I=0;I<=N;I++){
+ RT=mycoef(L,I,V2);
+ R=cons(RT/binom(N,I),R);
+ L-=RT*V2^I*(1-V2)^(N-I);
+ }
+ return reverse(R);
+ };
+ N=length(L)-1;
+ V=newvect(2);
+ for(I=0;I<=N;I++,L=cdr(L)){
+ if(type(X=car(L))==4) X=ltov(X);
+ V+=X*binom(N,I)*t^I*(1-t)^(N-I);
+ }
+ return V;
+}
+
+def cutf(F,X,VV)
+{
+ if(type(car(V=VV))==2){
+ Y=[car(V),X];
+ V=cdr(V);
+ }else Y=X;
+ if(type(X)>1){
+ Y=(type(Y)==4)?Y[0]:x;
+ V1=makenewv(F);
+ if(X==Y||Y==x){
+ V2=makenewv([F,V1]);
+ F=mysubst(F,[Y,V2]);
+ V=cons(V2,V);
+ }
+ return [V1,[V1,os_md.cutf,[F],X,[V]]];
+ }
+ if(car(V)!=[] && X<car(V)[0]) return myfeval(car(V)[1],Y);
+ for(V=cdr(V); ;V=R){
+ if((R=cdr(V))==[]){
+ if(car(V)!=[] && car(V)[0]<X) return myfeval(car(V)[1],Y);
+ return myfeval(F,Y);
+ }
+ if(X>car(V)[0]) continue;
+ if(X==car(V)[0]) return car(V)[1];
+ return myfeval(F,Y);
+ }
+}
+
+def fsum(F,L)
+{
+ if(getopt(df)==1){
+ F=f2df(F);
+ }else Sub=getopt(subst);
+ if(type(L[0])==2){
+ X=L[0];
+ L=cdr(L);
+ }else X=0;
+ V=(length(L)>2)?L[2]:1;
+ for(R=0,I=L[0];;I+=V){
+ if(V==0||(I-L[1])*V>0) return R;
+ R+=(Sub==1)?subst(F,X?X:x,I):os_md.myfeval(F,X?[X,I]:I);
+ }
+}
+
+def periodicf(F,L,X)
+{
+ if(type(L)==4) L=[eval(L[0]),eval(L[1])];
+ else L=eval(L);
+ if(isvar(X)){
+ Y=makenewv([X,V]);
+ Z=makenewv([X,Y,V]);
+ return [Z,[Z,os_md.periodicf,[mysubst(F,[x,Y])],(type(L)==4)?[L]:L,[[Y,X]]]];
+ }
+ if(type(X)==4){
+ V=X[0];
+ X=X[1];
+ }else V=x;
+ if(type(F)==5){
+ X=eval(X);
+ return myfeval(F[floor(X/L)%length(F)],[V,X-floor(X/L)*L]);
+ }
+ if(type(L)==4){
+ X-=floor((X-L[0])/(L[1]-L[0]))*(L[1]-L[0]);
+ return myfeval(F,[V,X]);
+ }
+}
+
+def cmpf(X)
+{
+ if(type(X)>3){
+ if(type(L)==7) return [S_Fc,Dx,S_Ic,S_Ec,S_EC,S_Lc];
+ S_Lc=0;
+ if(type(S_Fc=X[0])!=4) S_Fc=f2df(S_Fc);
+ S_Ic=X[1];
+ if(length(S_Ic)>2){
+ S_Fc=mysubst(S_Fc,[S_Ic[0],x]);
+ S_Ic=cdr(S_Ic);
+ }
+ S_Dc=(type(S_Ic[0])==7)?1:0;
+ if(type(S_Ic[1])==7) S_Dc=ior(S_Dc,2);
+ if(type(S_Ec=getopt(exp))!=1) S_Ec=0;
+ if(S_Ec<=0){
+ S_EC=-S_Ec;
+ if(S_EC==0) S_EC=1;
+ if(S_Dc==3) S_EC*=2;
+ else S_EC/=4;
+ if(type(F=X[0])==3&&vars(F)==[x]&&(D=deg(nm(F),x))==deg(dn(F),x)-2){
+ S_Lc=S_EC*coef(nm(F),D,x)/coef(dn(F),D+2,x);
+ }
+ }else{
+ S_EC=S_Ec;
+ if(S_Dc==3) S_EC*=12;
+ else S_EC/=6;
+ }
+ if(type(S_Fc)==3) S_Fc=red(S_Fc);
+ S_EC=1/S_EC;
+ return [z_,[z_,os_md.cmpf,x]];
+ }
+ if(X<=0 && iand(S_Dc,1)) return S_Lc;
+ if(X>=1 && iand(S_Dc,2)) return S_Lc;
+ if(S_Dc==3){
+ if(S_Ec>0){
+ Y0=dexp(1/X)*S_EC;
+ Y1=dexp(1/(1-X))*S_EC;
+ return myfeval(S_Fc,Y1-Y0)*(Y0/X^2+Y1/(1-X)^2);
+ }
+ return myfeval(S_Fc,S_EC/(1-X)-S_EC/X)*(S_EC/(1-X)^2+S_EC/X^2);
+ }
+ if(S_Dc==1){
+ if(S_Ec>0){
+ Y=dexp(1-1/X);
+ R=myfeval(S_Fc,S_EC*(Y-1)+I[1])*Y;
+ }
+ else R=myfeval(S_Fc,I[1]+(1-1/X)*S_EC);
+ return R*S_EC/X^2;
+ }
+ if(S_Dc==2){
+ if(S_Ec>0){
+ Y=dexp(X/(1-X));
+ R=myfeval(S_Fc,S_EC*(Y-1)+S_Ic[0])*Y;
+ }else R=myfeval(S_Fc,S_EC*X/(1-X)+S_Ic[0]);
+ return R*S_EC/(1-X)^2;
+ }
+ X=S_Ic[0]+(S_Ic[1]-S_Ic[0])*X;
+ return myfeval(S_Fc,X)/(S_Ic[1]-Ic[0]);
+}
+
+def fresidue(P,Q)
+{
+ if(iscoef(Q,os_md.israt)) S=fctr(Q);
+ else S=[[Q,1]];
+ for(R=[];S!=[];S=cdr(S)){
+ T=car(S);
+ if((D=mydeg(T[0],z))==0) continue;
+ L=[];
+ if(iscoef(T[0],os_md.iscrat)) L=getroot(T[0],z|cpx=2);
+ if(findin(z,vars(L))>=0) L=[];
+ if(L==[]) L=polroots(T[0],z|comp=-1);
+ for(;L!=[];L=cdr(L)){
+ QQ=Q;
+ for(I=T[1]; I>1;I--) QQ=mydiff(QQ,z);
+ for(U=0,W=I=T[1];I>0;I--,W++){
+ QQ=diff(QQ,z);
+ U+=subst(QQ,z,L[0])*(z-L[0])^(W-T[1])/fac(W);
+ }
+ UD=mydiff(U,z);
+ for(I=T[1],K=1,PP=P; I>1;I--,K++)
+ PP=diff(PP,z)*U-K*PP*UD;
+ QQ=subst(PP,z,L[0])/subst(U,z,L[0])^K;
+/* if(D==2) QQ=sqrt2rat(QQ); */
+ R=cons([L[0],sqrt2rat(QQ)],R);
+ }
+ }
+ if(type(L=getopt(cond))==4){
+ for(S=[];R!=[];R=cdr(R)){
+ Z=car(R);
+ for(LL=L;LL!=[];LL=cdr(LL)){
+ X=real(car(Z));Y=imag(car(Z));
+ if(myf3eval(car(LL),X,Y,car(Z))<=0) break;
+ }
+ if(LL==[]) S=cons(Z,S);
+ }
+ R=reverse(S);
+ }
+ if((Sum=getopt(sum))==1||Sum==2){
+ for(S=0;R!=[];R=cdr(R)) S+=car(R)[1];
+ if(Sum==2) S*=2*@pi*@i;
+ return sqrt2rat(S);
+ }
+ return R;
+}
+
+def fint(F,D,V)
+{
+ if(((L=length(V))==2 || (L==3&&isvar(V[0])<3))
+ && (type(V[L-1])==7||(type(V[L-1])<3&&type(eval(V[L-1]))<2)))
+ /* real integral */
+ return areabezier([F,D,V]|option_list=getopt());
+ /* complex integral */
+ if(L>1&&type(V[1])==4&&type(V[1][1])<4){
+ if(type(V[0])==4&&type(V[0][0])<2){
+ for(R=[],VT=car(V),VV=cdr(V);VV!=[];VV=cdr(VV),VT=VU){
+ if((VU=car(VV))==-1) VU=car(V);
+ R=cons([ptcommon([VT,VU],[t,1-t]|in=1),[0,1]],R);
+ }
+ V=reverse(R);
+ }
+ else if(L==2) V=[V];
+ }
+ Opt=cons(["cpx",1],getopt());
+ for(R=0;V!=[];V=cdr(V)){
+ VT=car(V);
+ X=car(VT)[0];XD=red(diff(X,t));
+ Y=car(VT)[1];YD=red(diff(Y,t));
+ F=mysubst(F,[[x,X],[y,Y],[z,X+@i*Y]]);
+ if(type(F)==4)
+ FF=cons(F[0]*(XD+@i*YD),cdr(F));
+ else FF=red(F*(XD+@i*YD));
+ R+=areabezier([FF,D,cons(t,VT[1])]|option_list=Opt);
+ }
+ return R;
+}
+
+def areabezier(V)
+{
+ if(getopt(cpx)==1){
+ Opt=delopt(getopt(),"cpx");
+ F=V[0];
+ if(!isvar(Var=V[2][0])) Var=x;
+ if(type(F)==3 && vars(F)==[Var] && imag(dn(F))!=0){
+ F=(nm(F)*conj(dn(F)))/(dn(F)*conj(dn(F)));
+ V0=red(real(nm(F))/dn(F));
+ R=areabezier([V0,V[1],V[2]]|option_list=Opt);
+ V0=red(imag(nm(F))/dn(F));
+ return R+@i*areabezier([V0,V[1],V[2]]|option_list=Opt);
+ }
+ if(getopt(Acc)!=1) F=f2df(F);
+ V0=compdf([o,[o,real,o_]],o_,F);
+ R=areabezier([V0,V[1],V[2]]|option_list=Opt);
+ V0=compdf([o,[o,imag,o_]],o_,F);
+ return R+@i*areabezier([V0,V[1],V[2]]|option_list=Opt);
+ }
+ if(type(V[0])!=4 || vars(V[0][0])!=0){
+ Mx=[-2.0^(512),2.0^(512)];
+ I=length(V[2]);
+ if(type(V[2][I-1])==7||type(V[2][I-2])==7){ /* infinite interval */
+ if(type(Ec=getopt(exp))==1) R=cmpf([V[0],V[2]]|exp=Ec);
+ else R=cmpf([V[0],V[2]]);
+ V=[R,V[1],[0,1]];
+ }
+ if(type((Int=getopt(int)))==1 && type(V[0])<4 && (V1=V[1])>=0){
+ if(Int==2&&iand(V1,1)) V1++;
+ if(!V1) V1=32;
+ Opt=cons(["raw",1],getopt());
+ W=xygraph(V[0],V[1],V[2],Mx,Mx|option_list=Opt);
+ SS=W[0][1];
+ for(S0=S1=0,I=0,L=W;L!=[] && I<=V1;I++, L=cdr(L)){
+ if(iand(I,1)) S1+=car(L)[1];
+ else S0+=car(L)[1];
+ if (I==V1) SS+=car(L)[1];
+ }
+ VV=deval(V[2][1]-V[2][0]);
+ if(Int==2)
+ return (2*S0+4*S1-SS)*VV/(3*V1);
+ else
+ return (2*S0+2*S1-SS)*VV/(2*V1);
+ }
+ Opt=cons(["opt",0],getopt());
+ V=xygraph(V[0],V[1],V[2],Mx,Mx|option_list=Opt);
+ }
+ if(type(V[0][0])!=4) V=os_md.lbezier(V);
+ for(S=0; V!=[]; V=cdr(V)){
+ B=tobezier(car(V));
+ P=intpoly(B[1]*diff(B[0],t),t);
+ S+=mysubst(P,[t,1]);
+ }
+ return S;
+}
+
+def velbezier(V,L)
+{
+ if(L==0) L=[t,0,1];
+ else L=[(length(L)==3)?L[2]:t,L[0],L[1]];
+ for(R=[],II=length(V)-1;II>=0;II--){
+ S=fmmx(diff(V[II],L[0]|dif=1),L|dif=1);
+ for(U=0;S!=[];S=cdr(S)) if((T=abs(car(S)[1]))>U) U=T;
+ R=cons(U,R);
+ }
+ return R;
+}
+
+def ptbezier(V,L)
+{
+ if(type(V[0])==4&&type(V[0][0])!=4) V=lbezier(V);
+ K=length(V);
+ if(type(L)<2){
+ if(L<0) return K;
+ if(L>=K-1) L=[K-1,1];
+ else{
+ L0=floor(L);
+ if(L0>=K-1) L0=K-1;
+ L=[L0,L-L0];
+ }
+ }
+ if(L[0]>=0) B=V[L[0]];
+ else B=V[K+L[0]];
+ B=tobezier(B);
+ BB=[diff(B[0],t),diff(B[1],t)];
+ return [subst(B,t,L[1]),subst(BB,t,L[1])];
+}
+
+def ptcombezier(P,Q,T)
+{
+ if(type(T)<2){
+ if(T<2) T=20; /* default */
+ return ptcombezier(P,Q,[0,0,1,T]);
+ }
+ V=T[2]/2;;
+ PB=tobezier(P|div=1);
+ PP=[ptbbox(PB[0]),ptbbox(PB[1])];
+ QB=tobezier(Q|div=1);
+ QQ=[ptbbox(QB[0]),ptbbox(QB[1])];
+ for(L=[],I=0;I<2;I++){
+ for(J=0;J<2;J++){
+ if(!iscombox(PP[I],QQ[J])) continue;
+ if(T[3]<=1) return
+ [[T[0]+(I+0.5)*V,T[1]+(J+0.5)*V,
+ [(PP[I][0][0]+PP[I][0][1])/2,(PP[I][1][0]+PP[I][1][1])/2]]];
+ else{
+#if 0
+ U=PB[I][0];V=PB[I][length(PB[I])-1];
+ if(abs(A=(U[0]-V[0]))>abs(B=(U[1]-V[I])))
+ M=mat([1,0],[-B/A,1]);
+ else if(U!=V)
+ M=mat([1,-A/B],[0,1]);
+ else continue;
+ if(!iscombox(ptbox(ptaffine(M,PB[I])),ptbox(ptaffine(M,QB[J])))) continue;
+#endif
+
+ LN=ptcombezier(PB[I],QB[J],[T[0]+I*V,T[1]+J*V,V,T[3]-1]);
+#if 0
+ L=append(LN,L);
+#else
+ if(LN!=[]){
+ if(L==[]) L=LN;
+ else for(VV=3*V/2^T[3];LN!=[];LN=cdr(LN)){
+ for(LT=L;LT!=[];LT=cdr(LT)){
+ if(abs(car(LN)[0]-car(LT)[0])<VV&&abs(car(LN)[1]-car(LT)[1])<VV) break;
+ }
+ }
+ }
+ if(length(L)>32){ /* Too many points */
+ I=J=2;
+ }
+#endif
+ }
+ }
+ }
+ return L;
+}
+
+
+def ptcombz(P,Q,T)
+{
+ if(P==Q) Q=0;
+ if(type(P[0][0])!=4) P=P0=lbezier(P);
+ if(Q==0){
+ Q=P;F=1;
+ }
+ else if(type(Q[0][0])!=4) Q=lbezier(Q);
+ for(R=[],I=0,Q0=Q;P!=[];P=cdr(P),I++){
+ for(J=0,Q=Q0;Q!=[];Q=cdr(Q),J++){
+ if(F==1&&I<J+2) break;
+ if((RT=ptcombezier(car(P),car(Q),T))!=[]){
+ RT=cons([I,J],RT);
+ R=cons(RT,R);
+ }
+ }
+ }
+ if((Red=getopt(red))==1||Red==2){
+ if(type(M=getopt(prec))!=1) M=12;
+ for(F=0,T=P0;T!=[];T=cdr(T)){
+ for(S=car(T);S!=[];S=cdr(S)){
+ if(type(ST=car(S))==4 && type(ST[0])<2){
+ if(F++==0){
+ X0=X1=ST[0];Y0=Y1=ST[1];
+ }else{
+ if(ST[0]<X0) X0=ST[0];
+ if(ST[0]>X1) X1=ST[0];
+ if(ST[1]<Y0) Y0=ST[1];
+ if(ST[1]>Y1) Y1=ST[1];
+ }
+ }
+ }
+ }
+ V0=(X1-X0)/2^M;V1=(Y1-Y2)/2^M;
+ for(RR=[],RT=R;RT!=[];RT=cdr(RT))
+ for(S=cdr(car(RT));S!=[];S=cdr(S)) RR=cons(car(S)[2],RR);
+ RR=ltov(RR);L=length(RR);
+ for(I=0;I<L;I++)
+ for(K=1,J=I+1;K!=0&&J<L;J++)
+ if(abs(RR[I][0]-RR[J][0])<V0 && abs(RR[I][1]-RR[J][1])<V1) RR[I]=K=0;
+ R0=[];
+ I=L-1;
+ if(Red==2){
+ for(;I>=0;I--) if(RR[I]!=0) R0=cons(RR[I],R0);
+ }else{
+ for(RT=R;RT!=[];RT=cdr(RT)){
+ R00=[car(RT)[0]];
+ for(S=cdr(car(RT));S!=[];S=cdr(S),I--)
+ if(RR[L-I-1]!=0) R00=cons(car(S),R00);
+ if(length(R00)>1) R0=cons(reverse(R00),R0);
+ }
+ }
+ return R0;
+ }
+ return reverse(R);
+}
+
+def draw_bezier(ID,IDX,B)
+{
+ if(getopt(init)==1){
+ S_FDot=0;
+ return;
+ }
+ if(type(Col=getopt(col))!=1&&Col!=0) Col=0;
+ Dot=0;
+ if(type(Opt=getopt(opt))==7){
+ if(!Col){
+ Col=drawopt(Opt,0);
+ if(Col==-1) Col=0;
+ }
+ T=drawopt(Opt,3);
+ if(iand(T,2)){
+ M=iand(T,1)?1/8:1/4;
+ for(C=Col,Col=I=0;I<20;I+=8)
+ Col+=ishift(0xff-(floor((0xff-iand(0xff,ishift(C,I)))*M)),-I);
+ }
+ if(iand(T,4)) Dot=2; /* 2 or 3 or 4 or 6 */
+ else if(iand(T,8)) Dot=4;
+ }
+ if(type(B)==4 && (type(B[0])==4||type(B[0])==5) && type(B[0][0])<2) B=lbezier(B);
+ else if(type(B)==5) B=[vtol(B)];
+ for(;B!=[];B=cdr(B)){
+ if(vars(F=car(B))==[]){
+#if 1
+ if(length(F)<3&&!Dot){ /* line or point */
+ if(length(F)>0){
+ G=[rint(F[0][0]),rint(F[0][1])];
+ if(length(F)==1) draw_obj(ID,IDX,G,Col);
+ else{
+ G=[G[0],G[1],rint(F[1][0]),rint(F[1][1])];
+ draw_obj(ID,IDX,G,Col);
+ }
+ }
+ continue;
+ }
+#endif
+ if(length(F)<2) continue;
+ F=tobezier(F);
+ }
+ N=velbezier(F,0);
+ N=(N[0]>N[1])?N[0]:N[1];
+ if(!N) N=1;
+ for(I=0;I<=N;I++,S_FDot++){
+ if(Dot!=iand(S_FDot,Dot)) continue;
+ G=subst(F,t,I/N);
+ G=[rint(G[0]),rint(G[1])];
+ if(G!=G0){
+ draw_obj(ID,IDX,G,Col);
+ G0=G;
+ }
+ }
+ }
+ if(S_FDot-->=2^32) S_FDot=0;
+ return 0;
+}
+
+def lbezier(L)
+{
+ if((In=getopt(inv))==1||In==2||In==3){
+ for(F=0,R=[];L!=[];L=cdr(L)){
+ LT=car(L);
+ if(F==car(LT)) R=cons(1,R);
+ else{
+ if(R!=[]&&F!=0) R=cons(0,R);
+ R=cons(G=car(LT),R);
+ if(In==3) In==2;
+ }
+ for(LT=cdr(LT);LT!=[];LT=cdr(LT))
+ R=cons(car(LT),R);
+ if((F=car(R))==G&&In==1){
+ R=cons(-1,cdr(R));
+ F=0;
+ }
+ }
+ if(In==3 && car(R)==G) R=cons(-1,cdr(R));
+ return reverse(R);
+ }
+ for(F=0,RT=R=[];L!=[];L=cdr(L)){
+ if(type(T=car(L))==4||type(T)==5){
+ if(F==0){
+ FT=T;F=1;
+ }
+ RT=cons(T,RT);
+ }else if(T==0){
+ if(RT==[]) R=cons(reverse(RT),R);
+ RT=[];F=0;
+ }else if(T==1){
+ if(RT!=[]){
+ R=cons(reverse(RT),R);
+ RT=[car(RT)];
+ }else{
+ RT=[];F=0;
+ }
+ }else if(T==-1){
+ RT=cons(FT,RT);
+ R=cons(reverse(RT),R);
+ RT=[];F=0;
+ }
+ }
+ if(RT!=[]) R=cons(reverse(RT),R);
+ return reverse(R);
+}
+
+
+def xybezier(L)
+{
+ if(L==0 || (LS=length(L))==0) return "";
+ Out=str_tb(0,0);
+ if(type(VF=getopt(verb))==4){
+ if(type(car(VF))>3){
+ VFS=VF;VF=1;
+ }else{
+ VFS=cdr(VF);VF=car(VF);
+ }
+ }else VFS=["$\\bullet$","$\\times$"];
+ if(VF!=1 && VF!=2) VF=0;
+ if(!TikZ){
+ if(VF) Ob=str_tb(0,0);
+ T="\n**\\crv{";
+ if(type(Opt=getopt(opt))==7 && Opt!="") T=T+Opt;
+ L00=Q=L[I0=0];S=S1="";
+ for(F=0,I=1;I<=LS;I++){
+ P=Q;Q=(I==LS)?0:L[I];
+ if(type(Q)==4){
+ if(F==0){
+ S1="";L0=P;F=1;
+ continue;
+ }else if(F==1)
+ F=2;
+ else if(F==2){
+ S1=S1+"&";
+ }
+ S1=S1+xypos(P);
+ if(VF&&length(VFS)>1) str_tb(xyput([P[0],P[1],VFS[1]]),Ob);
+ }else{
+ if(Q==0){
+ if(F>0){
+ str_tb("{"+xypos(L0)+";"+xypos(P)+T+S1+"}};\n",Out);
+ if(VF){
+ str_tb(xyput([L[0][0],L[0][1],VFS[0]]),Ob);
+ if(VF==1) str_tb(xyput([P[0],P[1],VFS[0]]),Ob);
+ }
+ F=0;
+ }
+ }else if(Q==1){
+ str_tb("{"+xypos(L0)+";"+xypos(P)+T+S1+"}};\n",Out);
+ if(VF){
+ str_tb(xyput([L[0][0],L[0][1],VFS[0]]),Ob);
+ if(VF==1) str_tb(xyput([P[0],P[1],VFS[0]]),Ob);
+ }
+ F=1;
+ }else if(Q==-1){
+ if(F==2)
+ S1=S1+"&";
+ str_tb("{"+xypos(L0)+";"+xypos(L00)+T+S1+xypos(P)+"}};\n",Out);
+ if(VF) str_tb(xyput([L[0][0],L[0][1],VFS[0]]),Ob);
+ F=0;
+ }
+ if(F==1){
+ if(I<LS-1 && type(L[I+1])<2){
+ if(L[I+1]==-1){
+ str_tb("{"+xypos(P)+";"+xypos(L00)+T+"}};\n",Out);
+ }
+ if(VF) str_tb(xyput([P[0][0],P[0][1],VFS[0]]),Ob);
+ F=0;
+ }
+ }
+ while(++I<LS && type(L[I])<2);
+ if(I>=LS) break;
+ if(F==1){
+ Q=P;I--;F=0;
+ }else L00=Q=L[I];
+ }
+ }
+ }else{
+ if(type(T=getopt(cmd))==7){
+ if(T!="") T="\\"+T;
+ }else T="\\draw";
+ if((Rel=getopt(relative))==1) VF=0;
+ if(VF) Ob=str_tb(0,0);
+ if(type(Opt=getopt(opt))==7 && Opt!="") T=T+"["+Opt+"]";
+ Out=str_tb(T,0);
+ Q=L[0];
+ for(F=M=0,I=1;I<=LS;I++){
+ P=Q; Q=(I==LS)?0:L[I];
+ if(++M>XYLim){
+ str_tb("\n",Out);M=1;
+ }
+ if(type(Q)==4 || type(Q)==5 || type(Q)==7){
+ if(F==0){
+ str_tb(" ",Out);
+ F=1;
+ }else if(F==1){
+ str_tb(" .. controls ",Out);
+ F=2;
+ }else if(F==2){
+ str_tb(" and ",Out);
+ F=2;
+ }
+ PP=xypos(P);
+ if(Rel==1 && F==2) PP="+"+PP;
+ str_tb(PP,Out);
+ if(VF&&((F<2)||length(VFS)>1))
+ str_tb(xyput([P[0],P[1],(F<2)?VFS[0]:VFS[1]]),Ob);
+ }else{
+/* if(I<LS-1) VF=0; */
+ if(Q==0||Q==1){
+ PP=xypos(P);
+ if(Rel==1) PP="+"+PP;
+ str_tb(((F==0)?" ":((F==1)?" -- ":" .. "))+PP,Out);
+ if(VF) str_tb(xyput([P[0],P[1],VFS[0]]),Ob);
+ F=Q;
+ }else if(Q==-1){
+ PP=xypos(P);
+ if(Rel==1) PP="+"+PP;
+ if(F==1)
+ str_tb("..controls "+PP+" .. cycle",Out);
+ else if(F==2)
+ str_tb(" and "+PP+" .. cycle",Out);
+ if(VF&&length(VFS)>1) str_tb(xyput([P[0],P[1],VFS[1]]),Ob);
+ F=0;
+ }
+ if(F==1){
+ if(I<LS-1){
+ if(L[I+1]==-1){
+ str_tb(" -- cycle",Out);
+ I=I+1;
+ F=0;
+ }
+ else if(type(L[I+1])<2) F=0;
+ }
+ }
+ while(++I<LS && type(L[I])<2);
+ if(I>=LS) break;
+ Q=L[I];
+ }
+ }
+ str_tb(";\n",Out);
+ }
+ if(VF) str_tb(str_tb(0,Ob),Out);
+ return str_tb(0,Out);
+}
+
+def xybox(L)
+{
+ K=length(L);
+ P=L[0];Q=L[1];
+ if(K==2)
+ LL=[ P, [P[0],Q[1]], Q, [Q[0],P[1]] ];
+ else{
+ R=L[2];
+ LL=[ P, R, Q, [P[0]+Q[0]-R[0],P[1]+Q[1]-R[1]] ];
+ }
+ Opt=getopt();
+ SS=getopt(opt);
+ FL=getopt(color);
+ if(TikZ&&type(SS)<1&&K==2){
+ if(type(FL)==4){
+ F=FL[0];
+ if(length(FL)>1) CMD=FL[1];
+ }else if(type(FL)==7) F=FL;
+ else F="";
+ F=cons(F,["rectangle"]);
+ if(CMD) return xyarrow(P,Q|opt=F,cmd=CMD);
+ else return xyarrow(P,Q|opt=F);
+ }
+ if(type(SS)!=7&&!TikZ) Opt=cons(["opt","@{-}"],Opt);
+ Opt=cons(["close",1],Opt);
+ return xylines(LL|option_list=Opt);
+}
+
+def xyang(S,P,Q,R)
+{
+ Opt=getopt();
+ if(type(Prec=getopt(prec))!=1) Prec=0;
+ if(type(Q)>2){
+ if(R==1||R==-1){ /* ’¼Šp */
+ P1=ptcommon([Q,P],[-S,0]);
+ S*=R;
+ P2=ptcommon([P,P1],[S,@pi/2]);
+ P3=ptcommon([P1,P2],[S,@pi/2]);
+ return xylines([P1,P2,P3]|option_list=Opt);
+ }else if((AR=abs(R))==0||AR==2||AR==3||AR==4){ /* –îˆó */
+ Ang=myarg([Q[0]-P[0],Q[1]-P[1]]);
+ if(R<0) Ang+=3.14159;
+ ANG=[0.7854,0.5236,1.0472];
+ X=(AR==0)?1.5708:ANG[AR-2];
+ U=[P[0]+S*dcos(Ang+X),P[1]+S*dsin(Ang+X)];
+ V=[P[0]+S*dcos(Ang-X),P[1]+S*dsin(Ang-X)]; /* –îæ */
+ V=(X==0)?[U,V]:[U,P,V];
+ if(getopt(ar)==1) V=append([Q,P,0],V); /* S–_ */
+ return xylines(V|option_list=Opt);
+ }else if(AR>4&&AR<9){
+ Ang=myarg([Q[0]-P[0],Q[1]-P[1]]);
+ ANG=[0.7854,0.5236,0.3927,0.2618];
+ X=ANG[AR-5];
+ U=[P[0]+S*dcos(Ang+X),P[1]+S*dsin(Ang+X)];
+ V=[P[0]+S*dcos(Ang-X),P[1]+S*dsin(Ang-X)];
+ W=ptcommon([P,U],[P,Q]|in=-2);
+ W1=[(U[0]+P[0]+W[0])/3,(U[1]+P[1]+W[1])/3];
+ W2=[(V[0]+P[0]+W[0])/3,(V[1]+P[1]+W[1])/3];
+ L=[U,W1,P,1,W2,V];
+ if(getopt(ar)==1) L=append([Q,P,0],L);
+ if(type(Sc=getopt(scale))>0){
+ if(type(Sc)==1) Sc=[Sc,Sc];
+ L=ptaffine(diagm(2,Sc),L);
+ }
+ Opt=getopt(opt);
+ if(type(Opt)>0) OL=[["opt",Opt]];
+ else OL=[];
+ if(getopt(proc)==1) return append([2,OL],L);
+ S=xybezier(L|optilon_list=OL);
+ if(getopt(dviout)!=1) return S;
+ dviout(S);
+ return 1;
+ }
+ }
+ if(type(Q)<3){
+ X=deval(Q); Y=deval(R);
+ }else{
+ X=myarg([Q[0]-P[0],Q[1]-P[1]]);
+ Y=myarg([R[0]-P[0],R[1]-P[1]]);
+ }
+ if(Prec>2) N=8;
+ else if(Prec==2) N=6;
+ else if(Prec==1) N=4;
+ else N=3;
+ U=deval(@pi)*2/N;
+ if(X==Y||Y-X>6.28318){
+ for(L=[],I=N-1;I>=0;I--) L=cons([P[0]+S*dcos(I*U),P[1]+S*dsin(I*U)],L);
+ return xylines(L|option_list=append([["curve",1],["close",1]],Opt));
+ }
+ for(M=1;(Y-X)/M>U;M++);
+ for(L=[],I=M+1;I>-2;I--){
+ Ang=X+(Y-X)*I/M;
+ L=cons([P[0]+S*dcos(Ang),P[1]+S*dsin(Ang)],L);
+ }
+ if(getopt(ar)!=1) return xylines(L|option_list=append([["curve",1],["close",-1]],Opt));
+ OL=delopt(Opt,["dviout","opt","proc"]);
+ S=xylines(L|option_list=append([["curve",1],["close",-1],["opt",0]],OL));
+ T=xylines([P,L[1]]|option_list=cons(["opt",0],OL));
+ S=ptaffine("close",[S,T]); /* connect curves */
+ if(getopt(opt)==0) return S;
+ OL=(type(SS=getopt(opt))>1)?[["opt",SS]]:[];
+ if(type(T=getopt(proc))==1 && T>=1 && T<=3) return [1,OL,S];
+ if(OL==[]) S=xybezier(S);
+ else S=(type(SS)==7)? xybezier(S|opt=SS):xybezier(S|opt=SS[0],cmd=SS[1]);
+ if(getopt(dviout)==1) return xyproc(S|dviout=1);
+ return S;
+}
+
+def xyoval(P,L,R)
+{
+ if(type(Arg=getopt(arg))!=4 && type(Arg=getopt(deg))==4){
+ if(length(Arg)>2)
+ Arg=[@pi*Arg[0]/180,@pi*Arg[1]/180,@pi*Arg[2]/180];
+ else
+ Arg=[@pi*Arg[0]/180,@pi*Arg[1]/180];
+ }
+ if(type(Arg)==4){
+ Arg0=deval(Arg[0]); Arg1=deval(Arg[1]);
+ if(length(Arg)>2) Arg2=deval(Arg[2]);
+ if(Arg1<Arg0 || Arg0<-7) return 0;
+ }
+ if(type(Prec=getopt(prec))!=0) Prec=0;
+ if((Ar=getopt(ar))!=1) Ar=0;
+ L=xyang(L,[0,0],Arg0,Arg1|prec=Prec,opt=0,ar=Ar);
+ Sc=getopt(scale);
+ if(type(Sc=getopt(scale))<1) Sc=[1,1];
+ else if(type(Sc)==1) Sc=[Sc,Sc];
+ M=mat([1,0],[0,R]);
+ L=ptaffine(M,L|shift=P);
+ M=mat([Sc[0],0],[0,Sc[1]]);
+ L=ptaffine(M,L|arg=Arg2);
+ if((Opt=getopt(opt))==0) return L;
+ Opt=(type(Opt)>1)? [["opt2",Opt]]:[];
+ if(getopt(proc)==1) return [1,Opt,L];
+ S=xybezier(L|option_list=getopt());
+ if(getopt(dviout)==1){
+ xyproc(S|dviout=1);
+ return 1;
+ }
+ return S;
+}
+
+def xycirc(P,R)
+{
+ ST=getopt(opt);
+ if(type(ST)<0) ST="";
+ if(type(Arg=getopt(arg))!=4 && type(Arg=getopt(deg))==4){
+ Arg=[@pi*Arg[0]/180,@pi*Arg[1]/180];
+ }
+/* Is it OK?
+ if(TikZ==0 && XYcm==1){
+ R*=10; P=[P[0]*10,P[1]*10];
+ }
+*/
+ if(type(Arg)==4){
+ Arg0=deval(Arg[0]); Arg1=deval(Arg[1]);
+ if(Arg1<=Arg0 || Arg0<-7 || Arg1-Arg0>7) return 0;
+ if(type(ST)==7)
+ S=xygraph([R*cos(x)+P[0],R*sin(x)+P[1]],-4,[Arg0,Arg1],[P[0]-R-1,P[0]+R+1],
+ [P[1]-R-1,P[1]+R+1]|opt=ST);
+ else
+ S=xygraph([R*cos(x)+P[0],R*sin(x)+P[1]],-4,[Arg0,Arg1],[P[0]-R-1,P[0]+R+1],
+ [P[1]-R-1,P[1]+R+1]);
+ if(getopt(close)==1){
+ S=S+xyline([0,0],
+ [deval(subst(R*cos(x)+P[0],x,Arg0)),deval(subst(R*sin(x)+P[0],x,Arg0))]);
+ S=S+xyline([0,0],
+ [deval(subst(R*cos(x)+P[0],x,Arg1)),deval(subst(R*sin(x)+P[0],x,Arg1))]);
+ }
+ return S;
+ }
+ if(TikZ){
+ SP="";
+ if(length(P)>2) SP=P[2];
+ if(type(SP)!=7) SP="$"+my_tex_form(SP)+"$";
+ if(R==0){
+ if(ST!="") ST=ST+",";
+ return "\\node ["+ST+"circle,draw]"+xypos([P[0],P[1]])+ "{"+SP+"};\n";
+ }
+ if(type(R)!=7) R=rtostr(deval(R));
+ if(ST!="") ST="["+ST+"]";
+ S="\\draw "+ST+xypos([P[0],P[1]])+" circle [radius="+R+"]";
+ if(SP!="") S=S+" node at"+xypos([P[0],P[1]])+" {"+SP+"}";
+ return S+";\n";
+ }
+ S="{"+xypos([P[0],P[1]]);
+ if(length(P)>2){
+ SP=P[2];
+ if(type(P)!=7) SP=my_tex_form(SP);
+ S=S+" *+{"+SP+"}";
+ }
+ S =S+" *\\cir";
+ if(R!=0){
+ R=deval(R);
+ S=S+"<"+rtostr(R)+((XYcm)?"cm>":"mm>");
+ }
+ S = S+"{";
+ if(type(ST)==7) S=S+ST;
+ return S+"}};\n";
+}
+
+def ptaffine(M,L)
+{
+ if(type(L)!=4&&type(L)!=5){
+ erno(0);return L;
+ }
+ if(type(M)==7){ /* connect lists */
+ if(M=="reverse"){
+ for(LO=LR=[],F=0,LT=L; LT!=[]; LT=cdr(LT)){
+ if(type(P=car(LT))==4 || type(P)==7){
+ LR=cons(P,LR);
+ continue;
+ }else{
+ if(P==-1){
+ LL=reverse(LR);
+ LO=append(reverse(cons(-1,cdr(LL))),LO);
+ LO=cons(car(LL),LO);
+ LR=[];
+ }else if(P==1){
+ LR=cons(car(LR),cons(1,cdr(LR)));
+ }else if(P==0 || length(LT)==1){
+ if(LO!=[] && car(LO)!=0 && (type(car(LO))==4 || car(LO)==1))
+ LO=cons(0,LO);
+ LO=append(LR,LO);
+ if(length(LT)>1&&length(LO)>0&&car(LO)!=0) LO=cons(0,LO);
+ LR=[];
+ }
+ }
+ }
+ return append(LR,LO);
+ }
+ if(type(L[0][0])!=4) L=[L];
+ LO=[];
+ if(M=="connect" || M=="close" || M=="loop"){
+ Top=car(car(L));
+ for(K=1,LL=L; LL!=[]; LL=cdr(LL)){
+ for(F=0,LT=car(LL); LT!=[]; LT=cdr(LT),F++){
+ if((LTT=car(LT))==0) LTT=1;
+ if(F==0 && LO!=[]){
+ LO0=car(LO);
+ if(car(LO)!=1&&length(LO)>1) LO=cons(1,LO);
+ if(LTT==LO0) continue;
+ else LO=cons(1,cons(LTT, LO));
+ }else LO=cons(LTT, LO);
+ }
+ }
+ if(M!="connect"){
+ if(Top==car(LO) || car(LO)==1 || M=="loop")
+ LO=cons(-1,cdr(LO));
+ else
+ LO=cons(-1,cons(1,LO));
+ }
+ return reverse(LO);
+ }
+ if(M=="union"){
+ for(LL=reverse(L); LL!=[]; LL=cdr(LL)){
+ if(LO!=[]) LO=cons(0,LO);
+ LO=append(car(LL),LO);
+ }
+ L=LO;
+ }
+ return L;
+ }
+ if(type(Arg=getopt(deg))==1)
+ Arg=@pi*Arg/180;
+ else Arg=getopt(arg);
+ if(type(Arg)==2) Arg=deval(Arg);
+ if(type(Arg)==1)
+ M=M*mat([dcos(Arg),-dsin(Arg)],[dsin(Arg),dcos(Arg)]);
+ if(type(Sft=getopt(org))==4){
+ Sft=ltov(Sft);
+ Sft-=M*Sft;
+ }else Sft=ltov([0,0]);
+ if(type(V=getopt(shift))==4)
+ Sft+=ltov(V);
+ if(getopt(proc)==1){
+ if(Sft!=0&&ltov(Sft)!=[0,0]) Sft=[["shift",vtol(Sft)]];
+ else Sft=[];
+ for(LO=[],LT=L;LT!=[];LT=cdr(LT)){
+ if(type(car(T=car(LT)))<2){
+ if((P=car(T))==0){ /* exedraw 0 */
+ V=[[T[1][0],T[2][0]],[T[1][0],T[2][1]],[T[1][1],T[2][0]],[T[1][1],T[2][1]]];
+ V=ptbbox(ptaffine(M,V|option_list=Sft));
+ L1=cdr(cdr(cdr(T)));
+ LO=cons(append([0,V[0],V[1]],L1),LO);
+ continue;
+ }else if(P==1){ /* exedraw 1 */
+ L1=[];
+ for(TT=cdr(cdr(T));TT!=[];TT=cdr(TT)){
+ D=car(TT);
+ if(type(D[0][0])==4){
+ for(L2=[],DT=D;DT!=[];DT=cdr(DT))
+ L2=cons(ptaffine(M,car(DT)|option_list=Sft),L2);
+ L1=cons(reverse(L2),L1);
+ }else L1=cons(ptaffine(M,D|option_list=Sft),L1);
+ }
+ LO=cons(append([1,T[1]],reverse(L1)),LO);
+ continue;
+ }else if(P>=2 && P<=5){
+ L1=ptaffine(M,cdr(cdr(T))|optilon_list=Sft);
+ LO=cons(append([P,T[1]],L1),LO);
+ continue;
+ }
+ }
+ LO=cons(T,LO);
+ }
+ return reverse(LO);
+ }
+ F=0;
+ if(type(L)==4){
+ for(LT=L; LT!=[]; LT=cdr(LT)){
+ if((T=type(car(LT)))==4||T==5){
+ F=1; break;
+ }
+ }
+ }
+ if(F==0) return (Sft==0)?ptaffine(M,[L])[0]:ptaffine(M,[L]|shift=vtol(Sft))[0];
+ for(LO=[],LT=L; LT!=[]; LT=cdr(LT)){
+ if(((T=type(P=car(LT)))!=4 && T!=5)||type(P[0])>3) LO=cons(P,LO);
+ else{
+ if(T==4) P=ltov(P);
+ V=M*P;
+ if(Sft!=0) V+=Sft;
+ if(T==4) V=vtol(V);
+ LO=cons(V,LO);
+ }
+ }
+ return reverse(LO);
+}
+
+def ptlattice(M,N,X,Y)
+{
+ if(type(S=getopt(scale))!=1) S=1;
+ if(type(Cond=getopt(cond))!=4) Cond=[];
+ Line=getopt(line);
+ if(Line==1 || Line==2) F=newmat(M,N);
+ else Line=0;
+ if(type(Org=getopt(org))==4) Org=ltov(Org);
+ else Org=newvect(length(X));
+ X=ltov(X); Y=ltov(Y);
+ for(L=[],I=M-1;I>=0;I--){
+ for(P0=P1=0,J=N-1;J>=0;J--){
+ P=Org+I*X+J*Y;
+ for(C=Cond; C!=[]; C=cdr(C))
+ if(subst(car(C),x,P[0],y,P[1])<0) break;
+ if(C!=[]) continue;
+ if(Line) F[I][J]=1;
+ else L=cons(vtol(S*P),L);
+ }
+ }
+ if(Line==0) return L;
+ for(I=M-1;I>=0;I--){
+ for(T0=0,T1=J=N-1;J>=0;J--){
+ if((K=F[I][J])!=0){
+ if(T0==0) T0=J;
+ else T1=J;
+ }
+ if(K==0 || T1==0){
+ if(T1<T0){
+ L=cons(vtol(S*(Org+I*X+T0*Y)), L);
+ L=cons(vtol(S*(Org+I*X+T1*Y)), L);
+ L=cons(0,L);
+ }
+ T0=0; T1=N-1;
+ }
+ }
+ }
+ for(J=N-1;J>=0;J--){
+ for(T0=0,T1=I=M-1;I>=0;I--){
+ if((K=F[I][J])!=0){
+ if(T0==0) T0=I;
+ else T1=I;
+ }
+ if(K==0 || T1==0){
+ if(T1<T0){
+ L=cons(vtol(S*(Org+T0*X+J*Y)), L);
+ L=cons(vtol(S*(Org+T1*X+J*Y)), L);
+ L=cons(0,L);
+ }
+ T0=0; T1=M-1;
+ }
+ }
+ }
+ return cdr(L);
+}
+
+def ptpolygon(N,R)
+{
+ if(type(S=getopt(scale))!=1) S=1;
+ if(type(Org=getopt(org))!=4) Org=[0,0];
+ Pi=deval(@pi);
+ if(type(Arg=getopt(deg))==1)
+ Arg=Pi*Arg/180;
+ else Arg=getopt(arg);
+ if(type(Arg)==2) Arg=deval(Arg);
+ if(type(Arg)!=1) Arg=0;
+ Arg -= Pi*(1/2+1/N);
+ D=Pi*2/N;
+ for(L=[],I=N-1; I>=0; I--)
+ L=cons([S*(Org[0]+R*dcos(Arg+I*D)),S*(Org[1]+R*dsin(Arg+I*D))],L);
+ return L;
+}
+
+def ptwindow(L,X,Y)
+{
+ if(type(S=getopt(scale))==1){
+ X=[S*X[0],S*X[1]]; Y=[S*Y[0],S*Y[1]];
+ }
+ for(R=[],LT=L;LT!=[];LT=cdr(LT)){
+ P=car(LT);
+ if(P[0]<X[0] || P[0]>X[1] || P[1]<Y[0] || P[1]>Y[1])
+ R=cons(0,R);
+ else R=cons(P,R);
+ }
+ return reverse(R);
+}
+
+def lninbox(L,W)
+{
+ if(L[0]==L[1]) return 0;
+ R=newvect(2);C=newvect(2);
+ for(J=0;J<2;J++){
+ C[J]=L[1][J]-L[0][J];
+ if(C[J]!=0){
+ R[J]=[(W[J][0]-L[0][J])/C[J],(W[J][1]-L[0][J])/C[J]];
+ if(R[J][0]>R[J][1]) R[J]=[R[J][1],R[J][0]];
+ }
+ }
+ if(R[0]==0) R[0]=R[1];
+ if(R[1]==0) R[1]=R[0];
+ S0=(R[0][0]<R[1][0])?R[1][0]:R[0][0];
+ S1=(R[0][1]<R[1][1])?R[0][1]:R[1][1];
+ if(getopt(in)==1){
+ if(S0<0) S0=0;
+ if(S1>1) S1=1;
+ }
+ if(S0>S1) return 0;
+ return [[L[0][0]+C[0]*S0,L[0][1]+C[1]*S0],[L[0][0]+C[0]*S1,L[0][1]+C[1]*S1]];
+}
+
+def ptbbox(L)
+{
+ J=length(L[0]);
+ if((Box=getopt(box))==1){
+ for(R=[],I=0;I<J;I++){
+ P=car(LT=L)[I][0];Q=car(LT)[I][1];
+ for(;LT!=[];LT=cdr(LT)){
+ if((type(T=car(LT))==4 || type(T)==5) && length(T)==J){
+ if(T[I][0]<P) P=T[I][0];
+ if(T[I][1]>Q) Q=T[I][1];
+ }
+ }
+ R=cons([P,Q],R);
+ }
+ }else if(type(Box)==4) return ptbbox([ptbbox(L),Box]|box=1);
+ else{
+ for(R=[],I=0;I<J;I++){
+ P=Q=car(LT=L)[I];LT=cdr(LT);
+ for(;LT!=[];LT=cdr(LT)){
+ if((type(T=car(LT))==4||type(T)==5) && type(T[0])<2 && length(T)==J){
+ if((V=T[I])<P) P=V;
+ else if(V>Q) Q=V;
+ }
+ }
+ R=cons([P,Q],R);
+ }
+ }
+ return reverse(R);
+}
+
+def iscombox(S,T)
+{
+ for(;S!=[];S=cdr(S),T=cdr(T))
+ if(car(S)[0]>car(T)[1] || car(S)[1]<car(T)[0]) return 0;
+ return 1;
+}
+
+def ptcopy(L,V)
+{
+ if(type(V[0])!=4) V=[V];
+ for(F=0,LL=[]; V!=[]; V=cdr(V)){
+ if(F) LL=append(LL,[0]);
+ F++;
+ LL=append(LL,ptaffine(1,L|shift=car(V)));
+ }
+}
+
+def average(L)
+{
+ L=os_md.m2l(L|flat=1);
+ M0=M1=car(L);
+ for(I=SS=0, LT=L; LT!=[]; LT=cdr(LT), I++){
+ S+=(V=car(LT));
+ SS+=V^2;
+ if(V<M0) M0=V;
+ else if(V>M1) M1=V;
+ }
+ SS=dsqrt(SS/I-S^2/I^2);
+ S=[deval(S/I),SS,I,M0,M1];
+ if(isint(N=getopt(sint))) S=sint(S,N);
+ return S;
+}
+
+def m2ll(M)
+{
+ for(R=[],I=size(M)[0]-1; I>=0; I--)
+ R=cons(vtol(M[I]),R);
+ return R;
+}
+
+def madjust(M,W)
+{
+ if(type(Null=getopt(null))<0) Null=0;
+ if(type(M)==4 && type(M[0])==4){
+ M=lv2m(M|null=Null);
+ return m2ll(madjust(M,W|null=Null));
+ }
+ S=size(M);
+ if(W<0){
+ W=-W;
+ T0=ceil(S[0]/W);
+ T1=S[1]*W;
+ N=newmat(T0,T1);
+ for(I=0; I<T0; I++){
+ for(K=0; K<W; K++){
+ II=K*T0+I;
+ for(J=0; J<S[1]; J++)
+ N[I][S[1]*K+J]=(II<S[0])?M[II][J]:Null;
+ }
+ }
+ }else{
+ T1=W;
+ T0=S[0]*(D=ceil(S[1]/T1));
+ N=newmat(T0,T1);
+ for(K=0; K<D; K++){
+ for(J=0; J<W;J++){
+ JJ=W*K+J;
+ for(I=0; I<S[0]; I++)
+ N[S[0]*K+I][J]=(JJ<S[1])?M[I][JJ]:Null;
+ }
+ }
+ }
+ return N;
+}
+
+def texcr(N)
+{
+ if(!isint(N) || N<0 || N>127) return N;
+ S=(iand(N,8))? "\\allowdisplaybreaks":"";
+ if(iand(N,2)) S=S+"\\\\";
+ if(iand(N,16)) S=S+"\\pause";
+ if(iand(N,1)) S=S+"\n";
+ if(iand(N,4)) S=S+"& ";
+ else if(!iand(N,1)) S=S+" ";
+ if(iand(N,64)) S=S+"=";
+ if(iand(N,32)) S=","+S;
+ return S;
+}
+
+def ltotex(L)
+{
+ /* extern TeXLim; */
+
+ if(type(L)==5)
+ L = vtol(L);
+ if(type(L) != 4)
+ return my_tex_form(L);
+ Opt=getopt(opt);
+ Pre=getopt(pre);
+ if(type(Var=getopt(var))<1) Var=0;
+ Cr2="\n";
+ if(type(Cr=getopt(cr))==4){
+ Cr2=Cr[1];Cr=Cr[0];
+ }
+ if(isint(Cr)) Cr=texcr(Cr);
+ if(type(Cr)!=7) Cr="\\\\\n & "; /* Cr=7 */
+ if(type(Opt)==7) Opt=[Opt];
+ if(type(Opt)!=4)
+ Op = -1;
+ else{
+ Op=findin(Opt[0],["spt","GRS","Pfaff","Fuchs","vect","cr","text","spts","spts0",
+ "dform","tab", "graph","coord"]);
+ Opt=cdr(Opt);
+ }
+ if(Op==0){ /* spt */
+ Out = str_tb("\\left\\{\n ",0);
+ for(CC=0; L!=[]; L=cdr(L), CC++){
+ if(CC>0) str_tb(",\\, ",Out);
+ TP=car(L);
+ if(Op!=0)
+ str_tb(my_tex_form(TP),Out);
+ else if(TP[0]==1)
+ str_tb(my_tex_form(TP[1]),Out);
+ else
+ str_tb(["[", my_tex_form(TP[1]), "]_", rtotex(TP[0])],Out);
+ }
+ str_tb("%\n\\right\\}\n",Out);
+ }else if(Op==1){ /* GRS */
+ Out = string_to_tb("\\begin{Bmatrix}\n");
+ if(type(Pre)==7) str_tb(Pre,Out);
+ MC=length(M=ltov(L));
+ for(ML=0, I=length(M); --I>=0; ){
+ if(length(M[I]) > ML) ML=length(M[I]);
+ }
+ for(I=0; I<ML; I++){
+ for(CC=J=0; J<MC; J++, CC++){
+ if(length(M[J]) <= I){
+ if(CC > 0) str_tb(" & ",Out);
+ }else if(M[J][I][0] <= 1){
+ if(M[J][I][0] == 0) str_tb(" & ",Out);
+ else
+ str_tb([(!CC)?" ":" & ", my_tex_form(M[J][I][1])], Out);
+ }else
+ str_tb([((!CC)?" [":" & ["), my_tex_form(M[J][I][1]), "]_",
+ rtotex(M[J][I][0])], Out);
+ }
+ str_tb((I<ML-1)?"\\\\\n":"\n", Out);
+ }
+ str_tb("\\end{Bmatrix}",Out);
+ }else if(Op==2){ /* Pfaff */
+ V=monototex(Opt[0]);
+ Out = string_to_tb("d"+V+"= \\Biggl(");
+ Opt=cdr(Opt);
+ II=length(Opt);
+ for(I=0; I<II; I++){
+ str_tb([(I>0)?" + ":" ",mtotex(L[I]),"\\frac{d",monototex(Opt[I]),"}{",
+ my_tex_form(Opt[I]),(I==II-1)?"}\n":"}\n\\\\&\n"],Out);
+ }
+ str_tb(["\\Biggr)",V,"\n"],Out);
+ }else if(Op==3){ /* Fuchs */
+ Out = string_to_tb("\\frac{d");
+ V=my_tex_form(Opt[0]);
+ str_tb([V,"}{d",my_tex_form(Opt[1]),"}="] ,Out);
+ Opt=cdr(Opt); Opt=cdr(Opt);
+ II=length(Opt);
+ for(I=0; I<II; I++){
+ str_tb([(I>0)?" +":"\\Biggl(", " \\frac{",
+ my_tex_form(L[I]),"}{", my_tex_form(Opt[I]),"}\n"],Out);
+ }
+ str_tb(["\\Biggr)",V,"\n"],Out);
+ }else if(Op==4){ /* vect */
+ Out=str_tb(mtotex(matc(L)|lim=0,var=Var),0);
+ }else if(Op==5 || Op==6){ /* cr or text */
+ Out = str_tb(0,0);
+ if(type(Lim=getopt(lim))!=1) Lim=0;
+ else if(Lim<30&&Lim>0) Lim=TeXLim;
+ Str=getopt(str);
+ if(length(Opt)==1 && (car(Opt)=="spts" || car(Opt)=="spts0") && type(Str)!=1)
+ Str=2;
+ for(K=I=0; L!=[]; I++, L=cdr(L)){
+ LT=car(L);
+ if((!Lim||Op==6)&&I>0) str_tb((Op==5)?Cr:"\n",Out);
+ if(Op==6){
+ if(type(LT)==7){
+ str_tb([LT," "],Out);
+ I=-1;
+ continue;
+ }
+ str_tb("$",Out);
+ }
+ KK=0;
+ if(Str>0 && type(LT)==4 && Opt!=[])
+ S=ltotex(LT|opt=car(Opt),lim=0,str=Str,cr=Cr2,var=Var);
+ else if(type(LT)==6){
+ if(Lim>0){
+ S=mtotex(LT|var=Var,lim=0,len=1);
+ KK=S[1];
+ S=S[0];
+ }else S=mtotex(LT|var=Var,lim=0);
+ }else if(type(LT)==3 || type(LT)==2)
+ S=fctrtos(LT|TeX=2,lim=0,var=Var);
+ else S=my_tex_form(LT);
+ if(Op!=6&&I>0&&Lim){
+ if(Lim<0){
+ if(I%(-Lim)==0)
+ str_tb((Op==5)?Cr:"\n",Out);
+ }else if((K+=(KK=(KK)?KK:texlen(S)))>Lim){
+ str_tb((Op==5)?Cr:"\n",Out);
+ K=KK;
+ }
+ }
+ str_tb(S,Out);
+ if(Op==6) str_tb("$",Out);
+ }
+ }else if(Op==7||Op==8){ /* spts, spts0 */
+ if(type(Lim=getopt(lim))!=1 || (Lim<30 && Lim!=0))
+ Lim=TeXLim;
+ Str=getopt(str);
+ Out = str_tb(0,0);
+ for(K=0; L!=[]; L=cdr(L)){
+ LT=car(L);
+ KK=0;
+ if(type(LT)==7 && Str==1) S=LT;
+ else if(type(LT)==3 || type(LT)==2)
+ S=fctrtos(LT|TeX=2,lim=0,var=Var);
+ else if(type(LT)==6){
+ if(Lim){
+ S=mtotex(LT|var=Var,lim=0,len=1);
+ KK=S[1];
+ S=S[0];
+ }else S=mtotex(LT|var=Var,lim=0);
+ }else
+ S=my_tex_form(LT);
+ if(Lim!=0){
+ if(!KK) KK=texlen(S);
+ if(K>0 && K+KK>Lim){
+ str_tb(Cr,Out);
+ K=0;
+ }
+ }
+ if(K>0){
+ str_tb((Op==7)?"\\ ":" ",Out);
+ if(type(LT)>3 && type(LT)<7) str_tb("%\n",Out);
+ }
+ str_tb(S,Out);
+ K+=KK;
+ if(OP==7) K++;
+ }
+ }else if(Op==9){ /* dform */
+ Out=str_tb(0,0);
+ for(I=0;L!=[];L=cdr(L),I++){
+ for(J=0,LT=car(L); LT!=[]; LT=cdr(LT),J++){
+ if(J==0){
+ if((V=car(LT))==0) continue;
+ if(I>0){
+ if(type(V)==1){
+ if(V<0){
+ str_tb("-",Out);
+ V=-V;
+ }
+ else str_tb("+",Out);
+ if(V==1 && length(LT)>1) continue;
+ str_tb(monototex(V),Out);
+ continue;
+ }
+ else str_tb("+",Out);
+ }
+ }else if(J>0) str_tb((J>1)?"\\wedge d":"\\,d",Out);
+ V=monototex(car(LT));
+ if(V<"-" || V>=".") str_tb(V,Out);
+ else str_tb(["(",V,")"],Out);
+ }
+ }
+ }else if(Op==10 && type(L)==4 && type(car(L))==4){ /* tab */
+ if(type(Null=getopt(null))<0) Null="";
+ if(getopt(vert)==1){
+ M=lv2m(L|null=Null);
+ L=m2ll(mtranspose(M));
+ }
+ if(type(W=getopt(width))==1)
+ L=madjust(L,W|null=Null);
+ LV=ltov(L);
+ S=length(LV);
+#if 1
+ if(type(T=getopt(left))==4){
+ T=str_times(T,S);
+ for(L=[],I=0;I<S;I++){
+ L=cons(cons(car(T),LV[I]),L);
+ T=cdr(T);
+ }
+ LV=reverse(L);
+ }
+ if(type(T=getopt(right))==4){
+ T=str_times(T,S);
+ for(L=[],I=0;I<S;I++){
+ L=cons(append(LV[I],[car(T)]),L);
+ T=cdr(T);
+ }
+ LV=reverse(L);
+ }
+ for(I=CS=0; I<S; I++)
+ if(length(LV[I])>CS) CS=length(LV[I]);
+ if(type(T=getopt(top))==4){
+ LV=cons(str_times(T,CS),vtol(LV));
+ S++;
+ }
+ if(type(T=getopt(last))==4){
+ LV=append(vtol(LV),[str_times(T,CS)]);
+ S++;
+ }
+#else
+ for(I=CS=0; I<S; I++)
+ if(length(LV[I])>CS) CS=length(LV[I]);
+#endif
+ if(type(Title=getopt(title))!=7) Title="";
+ if(type(Vline=getopt(vline))!=4) Vline=[0,CS];
+ else Vline=subst(Vline,z,CS);
+ for(VV=[],VT=Vline;VT!=[];VT=cdr(VT)){
+ if(type(T=car(VT))==4 && T[1]>0){
+ for(I=T[0];I<=CS;I+=T[1]) VV=cons(I,VV);
+ }else VV=cons(T,VV);
+ }
+ Vline=qsort(VV);
+ Out=str_tb("\\begin{tabular}{",0);
+ if(type(Al=getopt(align))==7 && str_len(Al)>1){
+ str_tb(Al,Out);
+ }else{
+ if(type(Al)!=7 || str_len(Al)<1) Al="r";
+ for(I=0;I<=CS;I++){
+ if(I!=0) str_tb(Al,Out);
+ while(Vline!=[] && car(Vline)==I){
+ str_tb("|",Out);
+ Vline=cdr(Vline);
+ }
+ }
+ }
+ str_tb("}",Out);
+ if(Title!="")
+ str_tb("\n\\multicolumn{"+rtostr(CS)+"}{c}{"+Title+"}\\\\",Out);
+ if(type(Hline=getopt(hline))!=4) Hline=[0,S];
+ else Hline=subst(Hline,z,S);
+ for(VV=[],VT=Hline;VT!=[];VT=cdr(VT)){
+ if(type(T=car(VT))==4 && T[1]>0){
+ for(I=T[0];I<=S;I+=T[1]) VV=cons(I,VV);
+ }else VV=cons(T,VV);
+ }
+ Hline=qsort(VV);
+ while(Hline!=[] && car(Hline)==0){
+ str_tb(" \\hline\n",Out);
+ Hline=cdr(Hline);
+ }
+/*
+ if(type(getopt(left))==4) CS++;
+ if(type(getopt(right))==4) CS++;
+ if(type(T=getopt(top))==4){
+ LV=cons(str_times(T,CS),vtol(LV));
+ S++;
+ }
+ if(type(T=getopt(last))==4){
+ LV=append(vtol(LV),[str_times(T,CS)]);
+ S++;
+ }
+ if(type(T=getopt(left))==4){
+ T=str_times(T,S);
+ for(L=[],I=0;I<S;I++){
+ L=cons(cons(car(T),LV[I]),L);
+ T=cdr(T);
+ }
+ LV=reverse(L);
+ }
+ if(type(T=getopt(right))==4){
+ T=str_times(T,S);
+ for(L=[],I=0;I<S;I++){
+ L=cons(append(LV[I],[car(T)]),L);
+ T=cdr(T);
+ }
+ LV=reverse(L);
+ }
+*/
+ for(I=0; I<S; I++){
+ for(C=0,LT=LV[I];C<CS; C++){
+ if(LT!=[]){
+ P=car(LT);
+ if(type(P)!=7) P="$"+my_tex_form(P)+"$";
+ if(P!="") str_tb(P,Out);
+ LT=cdr(LT);
+ }
+ if(C<CS-1) str_tb("& ",Out);
+ }
+ str_tb("\\\\",Out);
+ while(Hline!=[] && car(Hline)==I+1){
+ str_tb(" \\hline",Out);
+ Hline=cdr(Hline);
+ }
+ str_tb("\n",Out);
+ }
+ str_tb("\\end{tabular}\n",Out);
+ }else if(Op==11){ /* graph */
+ if(type(Strip=getopt(strip))!=1) Strip=0;
+ if(type(MX=getopt(max))!=1) MX=0;
+ if(type(ML=getopt(mult))!=1) ML=0;
+ if((REL=getopt(relative))!=1) REL=0;
+ CL=getopt(color);
+ OL=delopt(getopt(),["color","strip","mult"]);
+ if(ML==1&&type(CL)==4){
+ LL=L[1];L=L[0];K=length(L);S=T="";
+ if(!MX){
+ MX=vector(length(L[0]));
+ for(LT=L;LT!=[];LT=cdr(LT)){
+ for(I=0,LTT=car(LT);LTT!=[];I++,LTT=cdr(LTT)){
+ if(REL==1) MX[I]+=car(LTT);
+ else if(MX[I]<car(LTT)) MX[I]=car(LTT);
+ }
+ }
+ MX=lmax(MX);
+ OL=cons(["max",MX],OL);
+ }
+ if(REL==1) MX=newvect(length(L[0]));
+ for(I=0;I<K;I++){
+ for(R=[],J=length(L[I]);--J>=0;){
+ if(REL==1){
+ R=cons([MX[J],V=MX[J]+L[I][J]],R);
+ MX[J]=V;
+ }else R=cons([(!I)?0:L[I-1][J],L[I][J]],R);
+ }
+ OP=cons(["color",CL[I]],OL);
+ S+=ltotex([R,LL]|option_list=cons(["value",0],cons(["strip",(!I)?1:2],OP)));
+ T+=ltotex([R,LL]|option_list=cons(["strip",3],OP));
+ }
+ return(!Strip)?xyproc(S+T):(S+T);
+ }else if(!TikZ) CL=0;
+ if(type(Line=getopt(line))!=1){
+ if(type(Line)==4){
+ if(type(Line[0])==1 && (type(Line[1])==7 || type(Line[1])==1)){
+ Opt=Line[1]; Line=Line[0];
+ }else if(ML==1){
+ OL=delopt(OL,"line");
+ LL=L[1];L=L[0];K=length(L);S="";
+ if(!MX){
+ MX=newvect(length(L[0]));
+ for(LT=L;LT!=[];LT=cdr(LT)){
+ for(I=0,LTT=car(LT);LTT!=[];I++,LTT=cdr(LTT)){
+ if(REL==1) MX[I]+=car(LTT);
+ else if(MX[I]<car(LTT)) MX[I]=car(LTT);
+ }
+ }
+ MX=lmax(MX);
+ OL=cons(["max",MX],OL);
+ }
+ for(I=0;I<K;I++)
+ S+=ltotex([L[I],LL]|option_list
+ =cons(["line",Line[I]],cons(["strip",(!I)?1:2],OL)));
+ return(!Strip)?xyproc(S):S;
+ }
+ }else Line=0;
+ }else Opt="@{-}";
+ Width=8; Hight=3; WRet=1/2; HMerg=(getopt(horiz)==1)?0.3:0.2;
+ if(!TikZ){
+ Width*=10; Hight*=10; HMerg*=10;
+ }
+ VMerg=HMerg;
+ if(type(Shift=getopt(shift))!=1)
+ Shift=0;
+ if(type(V=getopt(size))==4){
+ Width=V[0];Hight=V[1];
+ if(length(V)>2) WRet=V[2];
+ if(length(V)>3) VMerg=VMerg=V[3];
+ if(length(V)>4) HMerg=V[4];
+ }
+ Val=getopt(value);
+ if(!isint(Val)) Val=-1;
+ if(type(Line=getopt(line))!=1){
+ if(type(Line)==4 && type(Line[0])==1 && (type(Line[1])==7 || type(Line[1])==1)){
+ Opt=Line[1]; Line=Line[0];
+ }else Line=0;
+ }else Opt="@{-}";
+ if(type(car(L))==4){
+ LL=L[1]; L=L[0];
+ }else LL=[];
+ if(Line==-1){
+ for(Sum=0, LT=L; LT!=[]; LT=cdr(LT)){
+ if((S=car(LT))<=0) return 0;
+ Sum+=S;
+ }
+ for(R=[],LT=L;LT!=[];LT=cdr(LT)) R=cons(car(LT)/Sum,R);
+ R=reverse(R);
+ Opt0=Opt*2/3;
+ Out=str_tb((Strip>0)?0:xyproc(1),0);
+ if(type(CL)!=4) str_tb(xylines(ptpolygon(6,Opt)|close=1,curve=1),Out);
+ for(S=0,RT=R,LT=LL;RT!=[];RT=cdr(RT)){
+ SS=S+RT[0];
+ if(type(CL)==4){
+ str_tb(xyang(Opt,[0,0],(0.25-SS)*6.2832,(0.25-S)*6.2832|ar=1,opt=car(CL)),Out);
+ if(length(CL)>0) CL=cdr(CL);
+ }else str_tb(xyline([0,0],[Opt*dsin(S*6.2832),Opt*dcos(S*6.2832)]),Out);
+ T=(S+SS)/2;
+ S=SS;
+ if(LT!=[]){
+ str_tb(xyput([Opt0*dsin(T*6.2832),Opt0*dcos(T*6.2832),car(LT)]),Out);
+ LT=cdr(LT);
+ }
+ }
+ if(!Strip) str_tb(xyproc(0),Out);
+ return str_tb(0,Out);
+ }
+ if(MX==0){
+ for(MX=0,LT=L; LT!=[]; LT=cdr(LT))
+ if(car(LT)>MX) MX=car(LT);
+ }
+ MX-=Shift;
+ S=length(L);
+ WStep=Width/S;
+ WWStep=WStep*WRet;
+ HStep=(Hight<0)?-Hight:Hight/MX;
+ if(LL!=[]&&length(LL)==S-1) WS2=WStep/2;
+ else WS2=0;
+ Out=str_tb((Strip>0)?0:xyproc(1),0);
+ Hori=getopt(horiz);
+ if(Strip<2){
+ if(Hori==1) str_tb(xyline([0,0],[0,Width-WStep+WWStep]),Out);
+ else str_tb(xyline([0,0],[Width-WStep+WWStep,0]),Out);
+ }
+ for(I=0,LT=L;LT!=[]; LT=cdr(LT),I++){
+ XP=WStep*I; XPM=XP+WWStep/2;
+ if(type(LTT=car(LT))==4){
+ YP0=(car(LTT)-Shift)*HStep;YP=(LTT[1]-Shift)*HStep;
+ VL=LTT[1];
+ if(REL) VL-=LTT[0];
+ }else{
+ YP0=0;YP=(LTT-Shift)*HStep;VL=LTT;
+ }
+ if(Hori==1){
+ if(Line!=0){
+ if(I>0)
+ str_tb(xyarrow([XPM,YP],[XPM-WStep,YPP]|opt=Opt),Out);
+ if(Val!=0)
+ str_tb(xyput([YP+HMerg, XPM,car(LT)]),Out);
+ if(Line==2)
+ str_tb(xyput([YP,XPM,"$\\bullet$"]),Out);
+ YPP=YP;
+ }else if(YP!=0 || Val==1){
+ if(Strip!=3){
+ if(CL) str_tb(xybox([[YP,XP+WWStep], [YP0,XP]]|color=CL),Out);
+ else str_tb(xybox([[YP,XP+WWStep],[YP0,XP]]),Out);
+ }
+ if(Val!=0) str_tb(xyput([(YP<0||REL==1)?(YP-HMerg):(YP+HMerg),XPM,VL]),Out);
+ }
+ if(LL!=[]&&I<length(LL)&&Strip<2) str_tb(xyput([-VMerg,XPM+WS2,LL[I]]),Out);
+ }else{
+ if(Line!=0){
+ if(I>0)
+ str_tb(xyarrow([XPM-WStep,YPP],[XPM,YP]|opt=Opt),Out);
+ if(Val!=0)
+ str_tb(xyput([XPM,YP+HMerg,car(LT)]),Out);
+ if(Line==2)
+ str_tb(xyput([XPM,YP,"$\\bullet$"]),Out);
+ YPP=YP;
+ }else if(YP!=0 || Val==1){
+ if(Strip!=3){
+ if(CL) str_tb(xybox([[XP,YP0],[XP+WWStep,YP]]|color=CL),Out);
+ else str_tb(xybox([[XP,YP0],[XP+WWStep,YP]]),Out);
+ }
+ if(Val!=0) str_tb(xyput([XPM,(YP<0||REL==1)?(YP-HMerg):(YP+HMerg),VL]),Out);
+ }
+ if(LL!=[]&&I<length(LL)&&Strip<2) str_tb(xyput([XPM+WS2,-VMerg,LL[I]]),Out);
+ }
+ }
+ if(!Strip)str_tb(xyproc(0),Out);
+ }else if(Op==12){ /* coord */
+ Out=str_tb("(",0);
+ for(LT=L;;){
+ X=car(LT);
+ if(type(X)>3 || imag(X)==0) str_tb(my_tex_form(X),Out);
+ else{
+ XR=real(X);XI=imag(X);
+ S=monototex(imag(X));
+ if(S=="1") S="";
+ else if(S=="- 1") S="-";
+ if(getopt(cpx)==2) S=S+"\\sqrt{-1}";
+ else S=S+"i";
+ if(XR!=0){
+ if(str_char(S,0,"-")==0) S=monototex(XR)+S;
+ else S=monototex(XR)+"+"+S;
+ }
+ str_tb(S,Out);
+ }
+ if((LT=cdr(LT))==[]) break;
+ else str_tb(",",Out);
+ }
+ str_tb(")",Out);
+ }
+ else return my_tex_form(L);
+ S = str_tb(0,Out);
+ return (getopt(small)==1)?smallmattex(S):S;
+}
+
+
+def str_tb(L,TB)
+{
+ if(type(TB) == 0) TB = "";
+ if(L == 0)
+ return (type(TB) == 7)?string_to_tb(TB):tb_to_string(TB);
+ if(type(L) == 7)
+ L = [L];
+ else if(type(L) != 4){
+ erno(0);
+ return 0;
+ }
+ if(type(TB) <= 7)
+ TB = string_to_tb((type(TB)==7)?TB:"");
+ for(; L != []; L = cdr(L))
+ write_to_tb(car(L), TB);
+ return TB;
+}
+
+/*
+def redgrs(M,T)
+{
+ L = [zzz];
+ for(I=S=0,Eq=[],MT=M; MT!=[]; I++, MT=cdr(MT)){
+ for(J=LS=0, N=car(MT); N!=[]; N=cdr(N)){
+ X = makev([z,I,z,J]);
+ L=cons(X,L);
+ LS += X;
+ S += car(N)[1]*X;
+ }
+ Eq = cons(LS-zzz,Eq);
+ }
+ Eq = cons(S-T,Eq);
+ Sol= lnsol(Eq,L);
+ for(LS=[],S=Sol; S!=[]; S=cdr(S)){
+ T=car(S);
+ if(type(S)!=4) return 0;
+ LS=cons(car(S)[0],LS);
+ }
+}
+*/
+
+/* T=0 : all reduction
+ =1 : construction procedure
+ =2 : connection coefficient
+ =3 : operator
+ =4 : series expansion
+ =5 : expression by TeX
+ =6 : Fuchs relation
+ =7 : All
+ =8 : basic
+ =9 : ""
+ =10: irreducible
+ =11: recurrence */
+def getbygrs(M, TT)
+{
+ /* extern TeXEq; */
+
+ if(type(M)==7) M=s2sp(M);
+ if(type(M) != 4 || TT =="help"){
+ mycat(
+["getbygrs(m,t) or getbygrs(m,[t,s_1,s_2,...]|perm=?,var=?,pt=?,mat=?)\n",
+" m: generalized Riemann scheme or spectral type\n",
+" t: reduction, construct, connection, series, operator, TeX, Fuchs, irreducible, basic, recurrence,\n",
+" All\n",
+" s: TeX dviout simplify short general operator irreducible top0 x1 x2 sft\n",
+"Ex: getbygrs(\"111,21,111\", [\"All\",\"dviout\",\"operator\",\"top0\"])\n"]);
+ return 0;
+ }
+ if(type(TT) == 4){
+ T = TT[0];
+ T1 = cdr(TT);
+ }else{
+ T = TT;
+ T1 = [];
+ }
+ if(type(T) == 7)
+ T = findin(T,["reduction","construct","connection", "operator", "series",
+ "TeX", "Fuchs", "All", "basic", "", "irreducible", "recurrence"]);
+ TeX = findin("TeX", T1);
+ Simp = findin("simplify", T1);
+ Short = findin("short", T1);
+ Dviout= findin("dviout", T1);
+ General=findin("general", T1);
+ Op =findin("operator", T1);
+ Irr =findin("irreducible", T1);
+ Top0 =findin("top0",T1);
+ X1 =findin("x1",T1);
+ X2 =findin("x2",T1);
+ Sft =findin("sft",T1);
+ Title = getopt(title);
+ Mat = getopt(mat);
+ if(Mat!=1 || T<0 ||(T!=0&&T!=1&&T!=5&&T!=6&&T!=8&&T!=10&&T!=9)) Mat = 0;
+ if(findin("keep",T1) >= 0)
+ Keep = Dviout = 1;
+ else Keep = 0;
+ if(Dviout >= 0 || T == 5) TeX = 1;
+ for(J = 0, MM = M; J == 0 && MM != []; MM = cdr(MM)){
+ for(MI = car(MM); MI != []; MI = cdr(MI)){
+ if(type(car(MI)) != 1 || car(MI) <= 0){
+ J = 1; break;
+ }
+ }
+ }
+
+ /* spectral type -> GRS */
+ if(J == 0){
+ for(R = [], S = J = 0, MM = M; MM != []; MM = cdr(MM), J++){
+ MT = qsort(car(MM));
+ R = cons(reverse(MT), R);
+ if(J == 1){
+ S = length(MT)-1;
+ if(MT[S] > MT[0]) S = 0;
+ }
+ }
+ M = reverse(R);
+ R = getopt(var);
+ if(type(R)<1){
+ for(R = [], I = J-1; I >= 0; I--)
+ R = cons(asciitostr([97+I]), R);
+ }
+ Sft=(Sft>=0)?1:0;
+ if(General < 0)
+ Sft=-Sft-1;
+ M = sp2grs(M,R,Sft|mat=Mat);
+ }
+ for(M0=[],MM=M;MM!=[];MM=cdr(MM)){ /* change "?" -> z_z */
+ for(M1=[],Mm=car(MM);Mm!=[];Mm=cdr(Mm)){
+ Mt=car(Mm);
+ if(type(Mt)==4 && Mt[1]=="?"){
+ M1=cons([Mt[0],z_z],M1);
+ continue;
+ }else if(type(Mt)==7 && Mt=="?"){
+ M1=cons(z_z,M1);
+ continue;
+ }
+ M1=cons(Mt,M1);
+ }
+ M0=cons(reverse(M1),M0);
+ }
+ M = fspt(reverse(M0),5); /* short -> long */
+ if(findin(z_z,vars(M))>=0)
+ M=subst(M,z_z,lsol(chkspt(M|mat=Mat)[3],z_z)); /* Fuchs relation */
+ NP = length(M);
+ Perm = getopt(perm);
+ if(type(Perm) == 4)
+ M = mperm(M,Perm,0);
+ if(T == 9){ /* "" */
+ if(Short >= 0)
+ M = chkspt(M|opt=4,mat=Mat);
+ return M;
+ }
+ R = [0,M];
+ ALL = [R];
+
+ while(type(R = redgrs(R[1]|mat=Mat)) == 4)
+ ALL = cons(R, ALL);
+ if(R < 0)
+ return 0;
+
+ /* TeX */
+ if(TeX >= 0 && !chkfun("print_tex_form", "names.rr"))
+ return 0;
+ if(Dviout >= 0 && type(Title) == 7)
+ dviout(Title|keep=1);
+ if(T == 7 && Dviout >= 0){
+ S=["keep","simplify"];
+ if(Top0 >= 0)
+ S = cons("top0",S);
+ getbygrs(M,cons(5,S)|title="\\noindent Riemann Scheme",mat=Mat);
+ Same = 0;
+ if(R > 0){
+ MM = getbygrs(M,8|mat=Mat); /* basic GRS */
+ MS = chkspt(MM|opt=0,mat=Mat); /* spectral type */
+ if(M != MM)
+ getbygrs(MM,cons(5,S)|title="Basic Riemann Scheme",mat=Mat);
+ else{
+ dviout("This is a basic Riemann Scheme.\n\n\\noindent"|keep=1);
+ Same = 1;
+ }
+ dviout(MS|keep=1);
+ }
+ if(chkspt(ALL[0][1]|mat=Mat)[3] != 0)
+ getbygrs(M,cons(6,S)|title="Fuchs condition",mat=Mat);
+ if(Same == 0){
+ M1 = M[1];
+ if(M1[length(M1)-1][0]==1 && Mat!=1){
+ M1=M[2];
+ if(M1[length(M1)-1][0] == 1){
+ getbygrs(M,cons(2,S)|title="Connection formula");
+ if(M1[length(M[0][0])-1][0] == 1 && R==0)
+ getbygrs(M,cons(11,S)|title="Recurrence relation shifting the last exponents at $\\infty$, 0, 1");
+ }
+ getbygrs(M,cons(1,S)|title="Integral representation");
+ getbygrs(M,cons(4,S)|title="Series expansion");
+ }
+ if(Irr < 0){
+ TI="Irreduciblity $\\Leftrightarrow$ any value of the following linear forms $\\notin\\mathbb Z$";
+ if(R > 0)
+ TI += " + fundamental irreducibility";
+ getbygrs(M,cons(10,S)|title=TI,mat=Mat);
+ dviout("which coorespond to the decompositions"|keep=1);
+ sproot(chkspt(M|opt=0),"pairs"|dviout=1,keep=1);
+ }
+ }
+ if(Op >= 0 && Mat!=1) getbygrs(M,cons(3,S)|title="Operator");
+ dviout(" ");
+ return 1;
+ }
+ if(T == 0 && TeX >= 0){
+ T = 1; TeX = 16;
+ }
+/* Fuchs */
+ Fuc = chkspt(ALL[0][1]|Mat=mat)[3];
+ if(Fuc == 0) Simp = -1;
+ if(type(Fuc) == 1){
+ print("Violate Fuchs condition");
+ return 0;
+ }
+ if(T == 6){
+ if(Dviout >= 0) dviout(Fuc|eq=0,keep=Keep);
+ return (TeX >= 0)?my_tex_form(Fuc):Fuc;
+ }
+ Fuc = [Fuc];
+/* Generelized Riemann scheme */
+ if(T == 5){
+ M = ltov(M);
+ for(ML=0, I=0; I<NP; I++){
+ L = length(M[I]);
+ if(L > ML) ML = L;
+ }
+ Out = string_to_tb("P\\begin{Bmatrix}\nx=");
+ if(Top0 < 0)
+ write_to_tb("\\infty & ",Out);
+ Pt = getopt(pt);
+ if(type(Pt) == 4){
+ for(J = 3; J < NP; J++){
+ str_tb(["& ",rtotex(car(Pt))],Out);
+ Pt = cdr(Pt);
+ }
+ }
+ else if(X2>=0)
+ str_tb("0 & x_2",Out);
+ else
+ str_tb((X1>=0)?"x_1 & x_2":"0 & 1",Out);
+ for(J = 3; J < NP; J++)
+ str_tb(["& x_",rtotex(J)],Out);
+ if(Top0 >= 0)
+ write_to_tb("& \\infty",Out);
+ write_to_tb("\\\\\n",Out);
+ for(I = 0; I < ML; I++){
+ for(CC = 0, J = (Top0 >= 0)?1:0; ; J++, CC++){
+ if(J == NP){
+ if(Top0 < 0) break;
+ J = 0;
+ }
+ if(length(M[J]) <= I){
+ if(CC > 0) write_to_tb(" & ",Out);
+ }else if(M[J][I][0] <= 1){
+ if(M[J][I][0] == 0) str_tb(" & ",Out);
+ else
+ str_tb([(!CC)?" ":" & ", my_tex_form(M[J][I][1])], Out);
+ }else{
+ str_tb([((!CC)?"[":" & ["), my_tex_form(M[J][I][1]),
+ (Mat==1)?"]_{":"]_{("],Out);
+ str_tb([my_tex_form(M[J][I][0]),(Mat==1)?"}":")}"],Out);
+ }
+ if(Top0 >= 0 && J == 0)
+ break;
+ }
+ if(I == 0)
+ str_tb("&\\!\\!;x",Out);
+ str_tb("\\\\\n",Out);
+ }
+ str_tb("\\end{Bmatrix}",Out);
+ Out = str_tb(0,Out);
+ if(Dviout >= 0)
+ dviout(Out|eq=0,keep=Keep);
+ return Out;
+ }
+
+/* Reduction */
+ if(T == 0){
+ if(Simp >= 0)
+ ALL = simplify(ALL,Fuc,4);
+ return reverse(ALL);
+ }
+ LA = length(ALL) - 1;
+ NP = length(ALL[0][1]);
+
+/* irreducible */
+ if(T == 10){
+ for(IR=[], I = 0; I < LA; I++){
+ AI = ALL[I]; AIT = AI[1];
+ K = AI[0][0];
+ P = -AIT[0][K][1];
+ P -= cterm(P);
+ IR = cons(P, IR);
+ for(J = 0; J < NP; J++){
+ K = AI[0][J];
+ for(L = length(AIT[J]) - 1; L >= 0 ; L--){
+ if(L == K || AIT[J][L][0] <= AIT[J][K][0])
+ continue;
+ P = AIT[J][L][1] - AIT[J][K][1];
+ Q = cterm(P);
+ if(dn(Q)==1)
+ P -= Q;
+ IR = cons(P,IR);
+ }
+ }
+ }
+ P=Fuc[0];
+ Q=cterm(P);
+ if(type(Q)==1 && dn(Q)==1){
+ for(F=0,V=vars(P);V!=[];V=cdr(V)){
+ R=mycoef(P,1,car(V));
+ if(type(R)!=1 || Q%R!=0){
+ F=1; break;
+ }
+ }
+ if(F==0){
+ P-=Q;
+ Simp=0;
+ }
+ }
+ if(Simp >= 0){
+ IR=simplify(IR,[P],4);
+ for(R=[]; IR!=[]; IR=cdr(IR)){
+ P=car(IR);
+ Q=cterm(P);
+ if(dn(Q)==1) P-=Q;
+ R=cons(P,R);
+ }
+ IR=R;
+ }
+ for(R=[]; IR!=[]; IR=cdr(IR)){
+ P=car(IR);
+ if(str_len(rtostr(P)) > str_len(rtostr(-P)))
+ P = -P;
+ R = cons(P,R);
+ }
+ R = ltov(R);
+#ifdef USEMODULE
+ R = qsort(R,os_md.cmpsimple);
+#else
+ R = qsort(R,cmpsimple);
+#endif
+ R = vtol(R);
+ if(TeX >= 0){
+ Out = string_to_tb("");
+ for(I=L=K=0; R!=[]; R=cdr(R),I++){
+ K1 = K;
+ RS = my_tex_form(car(R));
+ K = nmono(car(R));
+ L += K;
+ if(I){
+ if(K1 == K && L < 30)
+ str_tb("\\quad ",Out);
+ else{
+ L = K;
+ str_tb((TeXEq==5)?["\\\\%\n &"]:["\\\\%\n "],Out);
+ }
+ }
+ str_tb(RS,Out);
+ }
+ R = Out;
+ if(Dviout>=0){
+ dviout(R|eq=0,keep=Keep);
+ return 1;
+ }
+ }
+ return R;
+ }
+
+ AL = []; SS = 0;
+ for(I = 0; I <= LA; I++){
+ AI = ALL[I]; AIT = AI[1]; /* AIT: GRS */
+ if(I > 0){
+ for(S = J = 0; J < NP; J++){
+ GE = AIT[J][AI0[J]][1];
+ S += GE;
+ if(J == 0)
+ SS = [];
+ else
+ SS = cons(GE,SS);
+ }
+ SS = cons(1-Mat-S, reverse(SS));
+ }
+ AI0 = AI[0];
+ AL = cons([SS, cutgrs(AIT)], AL);
+ }
+ AL = reverse(AL);
+ AD = newvect(NP);
+ ALT = AL[0][1];
+ for(J = 1; J < NP; J++){
+ /* AD[J] = ALT[J][0][1]; [J][?][1] <- [J][?][0]: max */
+ for(MMX=0, K = KM = length(ALT[J])-1; K >= 0; K--){
+ if(MMX <= ALT[J][K][0]){
+ if(J == 1 && MMX == ALT[J][K][0])
+ continue;
+ KM = K;
+ MMX = ALT[J][K][0];
+ }
+ }
+ AD[J] = ALT[J][KM][1];
+ }
+ AL = cdr(AL);
+ AL = cons([vtol(AD), ALT], AL);
+ AL = cons([0, mcgrs(ALT, [vtol(-AD)]|mat=Mat)], AL);
+ if(Simp >= 0 && T != 3)
+ AL = simplify(AL,Fuc,4);
+/* Basic */
+ if(T == 8){
+ ALT = AL[0][1];
+ if(TeX >= 0){
+ if(Dviout >= 0){
+ return getbygrs(ALT,["TeX","dviout","keep"]);
+ }
+ return getbygrs(ALT,"TeX");
+ }
+ if(Short >= 0)
+ ALT = chkspt(ALT|opt=4);
+ return ALT;
+ }
+
+/* Construct */
+ if(T == 1){
+ if(TeX >= 0){
+ L = length(AL);
+ I = Done = 0; Out0=Out1=""; NM = DN = [];
+ if(TeX != 16){
+ AL11=AL[L-1][1][1];
+ AT = AL11[length(AL11)-1];
+ if(type(AT) == 4){
+ PW = (AT[0] > 1)?"":AT[1];
+ }else PW = AT;
+ }
+ Out = string_to_tb("");
+ while(--L >= 0){
+ if(TeX == 16){
+ if(Done)
+ write_to_tb(":\\ ", Out);
+ write_to_tb(getbygrs(AL[L][1],(Top0>=0)?["TeX", "top0"]:"TeX"|mat=Mat), Out);
+ Done = 1;
+ if(L != 0) write_to_tb((TeXEq==5)?
+ "\\\\%\n&\\leftarrow ":"\\\\%\n\\leftarrow ", Out);
+ }
+ ALT = AL[L][0];
+ if(TeX != 16){
+ V1 = (I==0)?"x":V2;
+ V2 = /* (I==0 && L<=2)?"s": */
+ "s_"+rtotex(I);
+ }else V1=V2="x";
+ JJ = (type(ALT) == 4)?length(ALT):0;
+ if(I > 0 && L > 0)
+ write_to_tb("\n ", Out);
+ for(Outt = "", J = 1; J < JJ; J++){
+ if(ALT[J] == 0) continue;
+ if(J == 1) Outt += V1;
+ else if(J == 2) Outt += "(1-"+V1+")";
+ else Outt += "(x_"+rtotex(J)+"-"+V1+")";
+ Outt += "^"+ rtotex(ALT[J]);
+ }
+ if(TeX != 16) write_to_tb(Outt, Out);
+ else if(Outt != "")
+ str_tb(["\\mathrm{Ad}\\Bigl(",Outt,"\\Bigr)"], Out);
+ if(JJ == 0){
+ if(I != 0)
+ Out1 = "ds_"+rtotex(I-1)+Out1;
+ continue;
+ }
+ if(ALT[0] == 0) continue;
+ Out0 += "\\int_p^{"+V1+"}";
+ if(TeX == 16)
+ str_tb(["mc_",rtotex(ALT[0])], Out);
+ else{
+ str_tb(["(",V1,"-",V2,")^",rtotex(-1+ALT[0])], Out);
+ AL11=AL[L-1][1][1];
+ AT = AL11[length(AL11)-1];
+ if(type(AT) == 4) AT = AT[1];
+ DN = cons(ALT[0]+AT+1,DN);
+ NM = cons(AT+1,cons(ALT[0],NM));
+ }
+ if(L != 2) Out1 += "d"+V2;
+ I++;
+ }
+ if(R){
+ if(I == 0) Ov = "x";
+ else Ov = "s_"+rtotex(I-1);
+ Out1 = "u_B("+Ov+")"+Out1;
+ }
+ if(TeX != 16){
+ Out0 = string_to_tb(Out0);
+ str_tb([Out, Out1], Out0);
+ Out = Out0;
+ NM = simplify(NM, Fuc, 4);
+ DN = simplify(DN, Fuc, 4);
+ DNT = lsort(NM,DN,"reduce");
+ NMT = DNT[0]; DNT = DNT[1];
+ if(NMT != [] && PW != ""){
+ write_to_tb((TeXEq==5)?"\\\\\n &\\sim\\frac{\n"
+ :"\\\\\n \\sim\\frac{\n", Out);
+ for(PT = NMT; PT != []; PT = cdr(PT))
+ str_tb([" \\Gamma(",my_tex_form(car(PT)), ")\n"], Out);
+ write_to_tb(" }{\n", Out);
+ for(PT = DNT; PT != []; PT = cdr(PT))
+ write_to_tb(" \\Gamma("+my_tex_form(car(PT))+")\n", Out);
+ write_to_tb(" }", Out);
+ if(R > 0) write_to_tb("C_0", Out);
+ write_to_tb("x^"+rtotex(PW) +"\\ \\ (p=0,\\ x\\to0)", Out);
+ }
+ }else
+ Out = str_tb(0, Out);
+ if(Dviout >= 0){
+ dviout(Out|eq=0,keep=Keep);
+ return 1;
+ }
+ return O;
+ }
+ if(Short >= 0){
+ for(ALL = [] ; AL != []; AL = cdr(AL)){
+ AT = car(AL);
+ ALL = cons([AT[0], chkspt(AT[1]|opt=4)], ALL);
+ }
+ AL = reverse(ALL);
+ }
+ return AL; /* AL[0][1] : reduced GRS, R==0 -> rigid */
+ }
+
+ if(T == 2 || T == 4 || T == 11){
+ for(I = (T==2)?2:1; I >= (T==11)?0:1; I--){
+ ALT = M[I];
+ if(ALT[length(ALT)-1][0] != 1){
+ mycat(["multiplicity for",I,":",ALT[length(ALT)-1][1],
+ "should be 1"]);
+ return;
+ }
+ }
+ }
+ LA++;
+ NM = DN = [];
+
+/* Three term relation */
+ if(T == 11){
+ if(R > 0){
+ print("This is not rigid\n");
+ return 0;
+ }
+ for(I = 0; I <= LA; I++){
+ if(I > 0){
+ AI = AL[I][0]; /* operation */
+ if(AI[0] != 0){
+ DN = cons(simplify(AI1+1,Fuc,4),DN);
+ NM = cons(simplify(AI1+AI[0]+1,Fuc,4),NM);
+ }
+ }
+ ALT = AL[I][1][1]; AI1 = ALT[length(ALT)-1][1];
+ }
+ DNT = lsort(NM,DN,"reduce");
+ if(TeX < 0) return DNT;
+ NMT = DNT[0]; DNT = DNT[1];
+ Out = str_tb("u_{0,0,0}-u_{+1,0,-1}=\\frac{","");
+ for(PT = NMT; PT != []; PT = cdr(PT))
+ str_tb(["(",my_tex_form(car(PT)),")"], Out);
+ str_tb(["}\n{"],Out);
+ for(PT = DNT; PT != []; PT = cdr(PT))
+ str_tb(["(",my_tex_form(car(PT)),")"], Out);
+ write_to_tb("}u_{0,+1,-1}",Out);
+ if(Dviout >= 0){
+ dviout(Out|eq=0,keep=Keep);
+ return 1;
+ }
+ return Out;
+ }
+
+ AD=newvect(NP);
+ for(I = 0; I <= LA; I++){
+ if(I > 0){
+ AI = AL[I][0]; /* operation */
+ if(T == 2 && AI[0] != 0){
+ DN = cons(simplify(-AI2,Fuc,4), cons(simplify(AI1+1,Fuc,4),DN));
+ NM = cons(simplify(-AI2-AI[0],Fuc,4), cons(simplify(AI1+AI[0]+1,Fuc,4),
+ NM));
+ }
+ for(J = 1; J < NP; J++)
+ AD[J] += simplify(AI[J],Fuc,4);
+ }
+ if(T == 2){
+ ALT = AL[I][1][1]; AI1 = ALT[length(ALT)-1][1];
+ ALT = AL[I][1][2]; AI2 = ALT[length(ALT)-1][1];
+ if(I == 0){
+ C3 = AI1; C4 = AI2;
+ }
+ }
+ }
+
+/* Connection */
+ if(T == 2){
+ DNT = lsort(NM,DN,"reduce");
+ NMT = DNT[0]; DNT = DNT[1];
+ if(TeX < 0) return [NMT,DNT,AD];
+ C0 = M[1][length(M[1])-1][1];
+ C1 = M[2][length(M[2])-1][1];
+ M = AL[0][1];
+ C3 = M[1][length(M[1])-1][1];
+ C4 = M[2][length(M[2])-1][1];
+ Out = str_tb(["c(0\\!:\\!", my_tex_form(C0),
+ " \\rightsquigarrow 1\\!:\\!", my_tex_form(C1),")"], "");
+ if(R > 0 && AMSTeX == 1 && (TeXEq == 4 || TeXEq == 5)){
+ write_to_tb("\\\\\n", Out);
+ if(TeXEq == 5) write_to_tb(" &", Out);
+ }
+ write_to_tb("=\\frac{\n",Out);
+ for(PT = NMT; PT != []; PT = cdr(PT))
+ write_to_tb(" \\Gamma("+my_tex_form(car(PT))+")\n", Out);
+ write_to_tb(" }{\n",Out);
+ for(PT = DNT; PT != []; PT = cdr(PT))
+ write_to_tb(" \\Gamma("+my_tex_form(car(PT))+")\n",Out);
+ write_to_tb(" }", Out);
+ for(J = 3; J < length(AD); J++){
+ if(AD[J] == 0) continue;
+ str_tb(["\n (1-x_", rtotex(J), "^{-1})^", rtotex(AD[J])], Out);
+ }
+ if(R != 0)
+ str_tb(["\n c_B(0\\!:\\!", my_tex_form(C3),
+ " \\rightsquigarrow 1\\!:\\!", my_tex_form(C4), ")"], Out);
+ Out = tb_to_string(Out);
+ if(Dviout >= 0){
+ dviout(Out|eq=0,keep=Keep);
+ return 1;
+ }
+ return Out;
+ }
+
+/* Series */
+ if(T == 4){
+ AL11 = AL[0][1][1];
+ V = AL11[length(AL11)-1][1];
+ S00 = -V; S01 = (R==0)?[]:[[0,0]];
+ S1 = S2 = [];
+ for(Ix = 1, ALL = cdr(AL); ALL != []; ){
+ ALT = ALL[0][0];
+ if(ALT[0] != 0){ /* mc */
+ for(Sum = [], ST = S01; ST != []; ST = cdr(ST))
+ Sum = cons(car(ST)[0], Sum);
+ S1 = cons(cons(S00+1,Sum), S1);
+ S2 = cons(cons(S00+1+ALT[0],Sum),S2);
+ S00 += ALT[0];
+ }
+ ALL = cdr(ALL);
+ for(I = 1; I < length(ALT); I++){ /* addition */
+ if(I == 1){
+ S00 += ALT[1];
+ if(ALL == [])
+ S00 = [S00];
+ }else{
+ if(ALT[I] == 0)
+ continue;
+ if(ALL != []){
+ S1 = cons([-ALT[I],Ix],S1);
+ S2 = cons([1,Ix],S2);
+ S01= cons([Ix,I],S01);
+ Ix++;
+ }else
+ S00 = cons([ALT[I],I],S00);
+ }
+ }
+ }
+ S00 = reverse(S00);
+ S01 = qsort(S01); S1 = qsort(S1); S2 = qsort(S2);
+ if(Simp >= 0){
+ S00 = simplify(S00,Fuc,4);
+ S01 = simplify(S01,Fuc,4);
+ S1 = simplify(S1,Fuc,4);
+ S2 = simplify(S2,Fuc,4);
+ SS = lsort(S1,S2,"reduce");
+ S1 = SS[0]; S2 = SS[1];
+ }
+
+ if(TeX >= 0){
+ /* Top linear power */
+ TOP = Ps = Sm = "";
+ for(TOP = Ps = Sm = "", ST = cdr(S00); ST != []; ST = cdr(ST)){
+ SP = car(ST);
+ if(SP[0] != 0){
+ if(SP[1] == 2)
+ TOP += "(1-x)^"+rtotex(SP[0]);
+ else
+ TOP += "(1-x/x_"+rtotex(SP[1])+")^"+rtotex(SP[0]);
+ }
+ }
+ /* Top power */
+ PW = my_tex_form(car(S00));
+ if(PW == "0")
+ PW = "";
+ NP = length(AL[0][1]);
+ PWS = newvect(NP);
+ for(I = 0; I < NP; I++)
+ PWS[I] = "";
+ for(S = S01, I = 0; S != []; S = cdr(S), I++){
+ SI = rtotex(car(S)[0]);
+ if(I > 0) Sm += ",\\ ";
+ Sm += "n_"+SI+"\\ge0";
+ if(PW != "")
+ PW += "+";
+ PW += "n_"+SI;
+ if(car(S)[1] > 2)
+ PWS[car(S)[1]] += "-n_"+rtotex(car(S)[0]);
+ else if(car(S)[1] == 0)
+ Ps = "C_{n_0}"+Ps;
+ }
+ for(I = 3; I < NP; I++){
+ if(PWS[I] != "")
+ Ps += "x_"+rtotex(I)+"^{"+PWS[I]+"}";
+ }
+ Out = str_tb([TOP, Ps, "x^{", PW, "}"], "");
+ /* Gamma factor */
+ for(I = 0, SS = S1; I <= 1; I++, SS = S2){
+ PW = string_to_tb("");
+ for(PW1=""; SS != [] ; SS = cdr(SS)){
+ for(J = 0, SST = car(SS); SST != []; SST = cdr(SST), J++){
+ if(J == 0){
+ JJ = (car(SST) == 1)?((length(SST)==2)?(-1):0):1;
+ if(JJ > 0)
+ str_tb(["(", my_tex_form(car(SST)), ")_{"], PW);
+ else if(JJ == 0)
+ PW1 = "(";
+ }else{
+ if(JJ > 0){
+ if(J > 1) write_to_tb("+", PW);
+ str_tb(["n_", rtotex(car(SST))], PW);
+ }else{
+ if(J > 1) PW1 += "+";
+ PW1 += "n_"+rtotex(car(SST));
+ }
+ }
+ }
+ if(JJ > 0) write_to_tb("}", PW);
+ else PW1 += (JJ == 0)?")!":"!";
+ }
+ if(I == 0)
+ Out0 = "\\frac";
+ Out0 += "{"+tb_to_string(PW)+PW1+"}";
+ PW = string_to_tb(""); PW1 = "";
+ }
+ if(Out0 == "\\frac{}{}")
+ Out0 = "";
+ Out = "\\sum_{"+Sm+"}"+Out0 + Top + tb_to_string(Out);
+ if(length(S01) == 1){
+ Out = str_subst(Out, "{n_"+SI+"}", "n");
+ Out = str_subst(Out, "n_"+SI, "n");
+ }
+ if(Dviout >= 0)
+ dviout(Out|eq=0,keep=Keep);
+ return Out;
+ }
+ return [cons(S00, S01), S1, S2];
+ }
+
+/* Operator */
+ if(T==3){
+ Fuc0 = car(Fuc);
+ if(Fuc0 != 0){ /* Kill Fuchs relation */
+ for(V = vars(Fuc0); V != []; V = cdr(V)){
+ VT = car(V);
+ if(deg(Fuc0,VT) == 1){
+ AL = mysubst(AL, [VT, -red(coef(Fuc0,0,VT)/coef(Fuc0,1,VT))]);
+ break;
+ }
+ }
+ if(V == []){
+ print("Fuchs condition has no variable with degree 1");
+ return 0;
+ }
+ }
+ L = newvect(NP);
+ Pt = getopt(pt);
+ for(I = NP-1; I >= 1; I--){
+ if(type(Pt) == 4)
+ L[I] = Pt[I-1];
+ else if(I >= 3 || X1 >= 0 || (X2 >= 0 && I >= 2))
+ L[I] = makev(["x_", I]);
+ else L[I] = I-1;
+ }
+ if(R){ /* non-rigid basic */
+ MM = AL[0][1]; /* Riemann scheme */
+ for(OD = 0, MT = car(MM); MT != []; MT = cdr(MT))
+ OD += car(MT)[0];
+ for(V = DN = [], M = MM; M != []; M = cdr(M)){
+ MT = car(M); /* exponents */
+ for(K = KM = 0, NT = []; ; K++){
+ for(J = 0, P = 1, MTT = MT; MTT != []; MTT = cdr(MTT)){
+ if(J == 0 && car(MTT)[1] == 0)
+ KM = car(MTT)[0];
+ for(KK = car(MTT)[0] - K -1; KK >= 0; KK--)
+ P *= (dx-car(MTT)[1]-KK);
+ }
+ if(P == 1) break;
+ NT = cons(P,NT);
+ }
+ V = cons(reverse(NT), V);
+ DN = cons(KM, DN);
+ }
+ V = ltov(reverse(V)); /* conditions for GRS */
+ DN = ltov(reverse(DN)); /* dims of local hol. sol. */
+ for(J = OD; J >= 0; J--){
+ for(I = Q = 1; I < NP; I++){
+ if(J > DN[I])
+ Q *= (x-L[I])^(J-DN[I]);
+ }
+ K = mydeg(Q,x);
+ if(J == OD){
+ P = Q*dx^J;
+ DM = K;
+ }else{
+ for(I = DM-OD+J-K; I >= 0; I--){
+ X = makev(["r",J,"_",I]);
+ P += Q*x^I*X*dx^J;
+ }
+ }
+ }
+ for(R = [], I = 0; I < NP; I++){
+ Q = toeul(P, [x,dx], (I==0)?"infty":L[I]); /* Euler at I-th pt */
+ for(VT = V[I], J=0; VT != [] ; VT = cdr(VT), J++){
+ if(car(VT) != 0)
+ R = cons(rpdiv(coef(Q,J,x), car(VT), dx)[0], R); /* equations */
+ }
+ }
+ for(RR = RRR = [], I = OD-1; I>=0; I--){
+ RR = [];
+ for(RT = R; RT != [] ; RT = cdr(RT)){
+ if( (VT = mycoef(car(RT), I, dx)) != 0)
+ RR = cons(VT, RR); /* real linear eqs */
+ }
+ J = mydeg(mycoef(P,I,dx),x);
+ for(S = 0, VVV = []; J >= 0; J--){
+ X = makev(["r",I,"_",J]);
+ VVV = cons(X, VVV); /* unknowns */
+ }
+ RR = lsol(RR,VVV);
+ LN = length(RR);
+ for(K=0; K<LN; K++){
+ RRT = RR[K];
+ if(type(RRT) != 4) continue;
+ R = mysubst(R,RRT);
+ P = mysubst(P,RRT);
+ }
+ }
+ }else /* Rigid case */
+ P = dx^(AL[0][1][0][0][0]);
+ /* additions and middle convolutions */
+ for(ALT = AL; ALT != []; ALT = cdr(ALT)){
+ AI = car(ALT)[0];
+ if(type(AI) != 4) continue;
+ V = ltov(AI);
+ if(V[0] != 0) P = mc(P,x,V[0]);
+ for(I = 1; I < NP; I++){
+ if(V[I] != 0)
+ P = sftexp(P,x,L[I],-V[I]);
+ }
+ }
+ P = (Simp>=0)? simplify(P,Fuc,4|var=[dx]):simplify(P,Fuc,4);
+ if(TeX >= 0){
+ Val = 1;
+ if(mydeg(P,dx) > 2 && AMSTeX == 1 && TeXEq > 3)
+ Val = (TeXEq==5)?3:2;
+ Out = fctrtos(P|var=[dx,"\\partial"],TeX=Val);
+ if(Dviout < 0) return Out;
+ dviout(Out|eq=0,keep=Keep);
+ return 1;
+ }
+ return P;
+ }
+ return 0;
+}
+
+def mcop(P,M,S)
+{
+ for(V=[],ST=S;ST!=[];ST=cdr(ST))
+ if(isvar(VT=car(ST))) V=cons(vweyl(VT),V);
+ V=reverse(V);
+ N=length(V);
+ for(MT=M;MT!=[];MT=cdr(MT)){
+ T=car(MT);
+ if(T[0]!=0)
+ P=mc(P,V[0],T[0]);
+ for(TT=cdr(T),ST=cdr(S);ST!=[];TT=cdr(TT),ST=cdr(ST))
+ if(car(TT)!=0) P=sftpexp(P,V,S[0]-ST[0],-car(TT));
+ }
+ return P;
+}
+
+/* option: zero, all, raw */
+def shiftop(M,S)
+{
+ if(type(M)==7) M=s2sp(M);
+ if(type(S)==7) S=s2sp(S);
+ Zero=getopt(zero);
+ NP=length(M);
+ for(V=L=[],I=NP-1; I>=0; I--){
+ V=cons(strtov(asciitostr([97+I])),V);
+ if(I>2) L=cons(makev(["y_", I-1]),L);
+ else L=cons(I-1,L);
+ }
+ if(type(M[0][0])==4){
+ F=1;RS=M;SS=S;
+ R=chkspt(M);
+ if(R[2]!=2 || R[3]!=0){
+ mycat("GRS is not valid!");return 0;
+ }
+ for(; S!=[]; S=cdr(S)){
+ if(nmono(S[0][0])!=1) break;
+ if(isint(S[0][1]-S[0][0])==0) break;
+ }
+ if(S!=[]){
+ mycat("Error in shift!"); return 0;
+ }
+ }else{
+ F=0;
+ RS=sp2grs(M,V,[1,length(M[0]),1]);
+ for(SS=S0=[],I=0; I<NP; I++){
+ for(J=F=0; J<length(M[I]); J++){
+ if(I==0 && J==length(M[0])-1) break;
+ if((U=S[I][J])!=0){
+ if(isint(U)!=1){
+ mycat("Error in shift!"); return 0;
+ }
+ VT=RS[I][J][1];
+ SS=cons([VT,VT+U],SS);
+ }else if(I>0 && Zero==1 && F==0){
+ RS=mysubst(RS,[RS[I][J][1],0]);
+ F=J+1;
+ }
+ }
+ if((F>0 && J==2) || (I==0 && J==1)){
+ J=(I==0)?0:2-F; VT=RS[I][J][1];
+ S0=cons([VT,strtov(asciitostr([strtoascii(rtostr(VT))[0]]))],S0);
+ }
+ }
+ }
+ RS1=mysubst(RS,SS);
+ if(F==1){
+ R=chkspt(RS1);
+ if(R[2]!=2 || R[3]!=0){
+ mycat("Error in shift!");
+ return 0;
+ }
+ }
+ R=getbygrs(RS,1); R1=getbygrs(RS1,1);
+ RT=R[0][1][0];
+ if(length(RT)!=1 || RT[0][0]!=1){
+ mycat("Not rigid!");
+ return 0;
+ }
+ P=dx;Q=Q1=1;
+ for(RT = R, RT1=R1; RT != []; RT = cdr(RT), RT1=cdr(RT1)){
+ V=car(RT)[0]; V1=car(RT1)[0];
+ if(type(V) != 4) continue;
+
+ if(V[0] != 0){
+ P = mc(P,x,V[0]); /* middle convolution */
+ QT = mc(Q,x,V[0]);
+ }else QT=Q;
+ D0=mydeg(Q,dx);D0T=mydeg(QT,dx);
+ C0=red(mycoef(Q,D0,dx)/mycoef(QT,D0T,dx));
+ if(C0!=1) QT=red(C0*QT);
+
+ if(V1[0] != 0) Q1T = mc(Q1,x,V1[0]);
+ else Q1T=Q1;
+ D1=mydeg(Q1,dx);D1T=mydeg(Q1T,dx);
+ C1=red(mycoef(Q1,D1,dx)/mycoef(Q1T,D1T,dx));
+ if(C1!=1) Q1T=red(C1*Q1T);
+ DD=(V[0]-V1[0])+(D0-D0T)-(D1-D1T);
+ if(DD>0){
+ QT=muldo(dx^DD,QT,[x,dx]);
+ D0T+=DD;
+ }else if(DD<0){
+ Q1T=muldo(dx^(-DD),Q1T,[x,dx]);
+ D1T-=DD;
+ }
+ C=mylcm(dn(QT),dn(Q1T),x);
+ if(C!=1){
+ QT=red(C*QT); Q1T=red(C*Q1T);
+ }
+ Q=QT;Q1=Q1T;
+ for(I = 1; I < NP; I++){
+ if(V[I]!=0){
+ P = sftexp(P,x,L[I],-V[I]); /* addition u -> (x-L[I])^V[I]u */
+ QT = sftexp(QT,x,L[I],-V[I]);
+ }
+ if(V1[I]!=0)
+ Q1T = sftexp(Q1T,x,L[I],-V1[I]);
+ }
+ C=red(mycoef(QT,D0T,dx)*mycoef(Q1,D1T,dx)/(mycoef(Q,D0T,dx)*mycoef(Q1T,D1T,dx)));
+ Q=red(dn(C)*QT);Q1=red(nm(C)*Q1T);
+ for(I = 1; I < NP; I++){
+ if((J=V[I]-V1[I])!=0){
+ if(J>0) Q1*=(x-L[I])^J;
+ else Q*=(x-L[I])^(-J);
+ }
+ while((QT=tdiv(Q,x-L[I]))!=0){
+ if((Q1T=tdiv(Q1,x-L[I]))!=0){
+ Q=QT;Q1=Q1T;
+ }else break;
+ }
+ }
+ }
+ P1=mysubst(P,SS);
+ if(type(S0)==4 && S0!=[]){
+ P=mysubst(P,S0); Q=mysubst(Q,S0);
+ P1=mysubst(P1,S0); Q1=mysubst(Q1,S0);
+ RS=mysubst(RS,S0); RS1=mysubst(RS1,S0);
+ }
+ R=mygcd(Q1,P1,[x,dx]);
+ if(findin(dx,vars(R[0]))>=0){
+ mycat("Some error!");
+ return 0;
+ }
+ Q=muldo(R[1]/R[0],Q,[x,dx]);
+ R=divdo(Q,P,[x,dx]);
+ Q=red(R[1]/R[2]);
+ R=fctr(nm(Q));
+ QQ=Q/R[0][0];
+ R1=fctr(dn(QQ));
+ for(RR=cdr(R1); RR!=[]; RR=cdr(RR)){
+ VT=vars(car(RR)[0]);
+ if(findin(x,VT)<0 && findin(dx,VT)<0){
+ for(I=car(RR)[1];I>0;I--) QQ=red(QQ*car(RR)[0]);
+ }
+ }
+ Raw=getopt(raw);
+ Dviout=getopt(dviout);
+ if(Dviout==1) Raw=4;
+ if(Raw!=1){
+ for(RR=cdr(R); RR!=[]; RR=cdr(RR)){
+ VT=vars(car(RR)[0]);
+ if(findin(x,VT)<0 && findin(dx,VT)<0){
+ for(I=car(RR)[1];I>0;I--) QQ=red(QQ/car(RR)[0]);
+ }
+ }
+ }
+ if(Raw==2||Raw==3||Raw==4){
+ R=mygcd(QQ,P,[x,dx]); /* R[0]=R[1]*QQ + R[2]*P */
+ Q1=red(R[0]/R[2]);
+ for(Q=1,RR=cdr(fctr(nm(Q1))); RR!=[]; RR=cdr(RR)){
+ VT=vars(car(RR)[0]);
+ if(findin(x,VT)<0){
+ for(I=car(RR)[1];I>0;I--) Q*=car(RR)[0];
+ }
+ }
+ if(Raw==3) QQ=[QQ,Q];
+ else if(Raw==4) /* Q=Q*R[1]/R[0]*QQ+Q/R[0]*P */
+ QQ=[QQ,Q,red(R[1]*Q/R[0])];
+ else QQ=Q;
+ }
+ F=getopt(all);
+ if(Dviout==1){
+ Pre = " x=\\infty & 0 & 1";
+ for(I=3; I<NP; I++) Pre = Pre+"& "+rtostr(L[I]);
+ Pre = Pre+"\\\\\n";
+ PW=str_tb(ltotex(RS|opt="GRS",pre=Pre),0);
+ str_tb(
+"=\\{u\\mid Pu=0\\}\\\\\n&\\underset{Q_2}{\\overset{Q_1}{\\rightleftarrows}}\n",PW);
+ str_tb([ltotex(RS1|opt="GRS",pre=Pre),"\\\\\n"],PW);
+ R=fctrtos(QQ[0]|TeX=3,var=[dx,"\\partial"]);
+ if(type(R)==4) R="\\frac1{"+R[1]+"}"+R[0];
+ str_tb(["Q_1&=",R,"\\\\\n"],PW);
+ R=fctrtos(QQ[2]|TeX=3,var=[dx,"\\partial"]);
+ if(type(R)==4) R="\\frac1{"+R[1]+"}"+R[0];
+ str_tb(["Q_2&=",R,"\\\\\n"],PW);
+ str_tb(["Q_2Q_1&\\equiv ",fctrtos(QQ[1]|TeX=3),"\\mod W(x)P"],PW);
+ if(F==1)
+ str_tb(["\\\\\nP&=",fctrtos(P|TeX=3,var=[dx,"\\partial"])],PW);
+ dviout(str_tb(0,PW)|eq=0,title="Shift Operator");
+ }
+ if(F==1) return [QQ,P,RS,P1,RS1];
+ else if(F==0) return QQ;
+ return [QQ,P,RS];
+}
+
+def conf1sp(M)
+{
+ if(type(M)==7) M=s2sp(M);
+ L0 = length(M);
+ L1 = length(M[L0-1]);
+ X2 = getopt(x2);
+ Conf= getopt(conf);
+ if(Conf != 0)
+ Conf = -1;
+ if((X2==1 || X2==-1) && Conf != 0){
+ X1 = 0;
+ X = x_1;
+ }else{
+ X1 = 1;
+ X = x_2;
+ }
+ G = sp2grs(M,a,[L0,L1]);
+ for(I = 0; I < L0-1; I++){
+ V = makev([a,I-Conf,0]);
+ G = subst(G,V,0);
+ }
+ L2 = length(M[1]);
+ for(I=J=S0=S1=0; I < L2; I++){
+ S1 += G[1][I][0];
+ while(S0 < S1){
+ S0 += G[0][J][0];
+ if((V=G[0][J][1]) != 0)
+ G = mysubst(G,[V,V-G[1][I][1]]);
+ J++;
+ }
+ if(S0 > S1){
+ print("Error in data!");
+ return 0;
+ }
+ }
+ if(Conf==0){
+ for(L=[], I=L0-2; I>=0; I--)
+ L=cons(I,L);
+ L=cons(L0-1,L);
+ P = getbygrs(G,["operator","x2"]|perm=L);
+ }else if(X1)
+ P = getbygrs(mperm(G,[[1,2]],[]), ["operator","x2"]);
+ else
+ P = getbygrs(G,["operator","x1"]);
+ if(Conf==0)
+ P=nm(mysubst(P,[X,c]));
+ else{
+ P = nm(mysubst(P,[X,1/c]));
+ if(X2==-1){
+ for(I=2; I<L0; I++){
+ V=makev(["x_",I]); VC=makev([c,I]);
+ P = nm(mysubst(P,[V,1/VC]));
+ }
+ }
+ }
+ for(I = 1; I < L2; I++){
+ X = G[1][I][1];
+ P = nm(mysubst(P,[X,X/c]));
+ }
+ VS = vars(P);
+ while(VS!=[]){
+ V = car(VS);
+ if(str_chr(rtostr(V),0,"r")==0){
+ CV = mycoef(P,1,V);
+ D = mymindeg(CV,c);
+ if(D > 0) P = mysubst(P,[V,V/c^D]);
+ CV = mycoef(P,1,V);
+ DD = mydeg(CV,dx);
+ CVV = mycoef(CV,DD,dx);
+ CD1 = mydeg(CVV,x);
+ CD = (X==x1)?0:CD1;
+ while(CD>=0 && CD<=CD1){
+ CC = mycoef(CVV,CD,x);
+ if(type(CC)==1){
+ VT = mycoef(mycoef(mycoef(P,DD,dx),CD,x),0,V)/CC;
+ if(VT != 0) P = mysubst(P,[V,V-VT]);
+ break;
+ }
+ if(X==x1) CD++;
+ else CD--;
+ }
+ while(subst(P,c,0,V,0) == 0)
+ P = red(mysubst(P,[V,c*V])/c);
+ }
+ VS =cdr(VS);
+ }
+ return P;
+}
+
+def pgen(L,VV)
+{
+ if(type(L[0])<4) L=[L];
+ if(type(L)==4) L=ltov(L);
+ K=length(L);
+ V=newvect(K);
+ if(type(Sum=getopt(sum))!=1) Sum=0;
+ if((Num=getopt(num))!=1) Num=0;
+ if((Sep=getopt(sep))!=1) Sep=0;
+ if(type(Shift=getopt(shift))!=1) Shift=0;
+ for(;;){
+ for(PP=1,R=[],II=K-1; II>=0; II--){
+ R=cons(V[II]+Shift,R);
+ if(II>0 && Sep==1) R=cons("_",R);
+ PP*=L[II][0]^V[II];
+ }
+ P+=makev(cons(VV,R)|num=Num)*PP;
+ for(I=0;I<K;){
+ if(++V[I]<=L[I][1]){
+ if(Sum>0){
+ for(S=II=0;II<K;) S+=V[II++];
+ if(S>Sum){
+ V[I++]=0;
+ continue;
+ }
+ }
+ }else{
+ V[I++]=0;
+ continue;
+ }
+ break;
+ }
+ if(I>=K) return P;
+ }
+}
+
+def diagm(M,A)
+{
+ return mgen(M,0,A,1);
+}
+
+def mgen(M,N,A,S)
+{
+ if(M==0 && N==0){
+ mycat([
+"mgen(m,n,a,s|sep=1) : generate a matrix of size m x n\n",
+" n : a number or \"diagonal\", \"highdiag\", \"lowdiag\",\"skew\",\"symmetric\",\"perm\" = 0,-1,-2,..\n",
+" a : a symbol or list (ex. a, [a], [a,b,c], [1,2,3])\n",
+" s : 0 or 1 (shift of suffix)\n"
+ ]);
+ return 0;
+ }
+ if(type(N)==7) N=-findin(N,["diag","highdiag","lowdiag","skew","symmetric","perm"]);
+ Sep=(getopt(sep)==1)?1:0;
+ if(S < 0 || S > 2)
+ S = 0;
+ if(M+S > 30 || N+S > 30){
+ erno(1);
+ return;
+ }
+ if(N==-5){
+ NM=newmat(M,M);
+ for(I=0;I<M;I++,A=cdr(A)) NM[I][car(A)-S]=1;
+ return NM;
+ }
+ if(type(A) == 4)
+ L = length(A)-1;
+ else
+ L = -1;
+ if(N <= 0 && N >= -2){
+ MM = newmat(M,M);
+ J = K = 0;
+ if(N == -1){
+ K = 1; M--;
+ }else if(N == -2){
+ J = 1; M--;
+ }
+ for(I = 0; I < M; I++){
+ if(L >= 0)
+ MM[I+J][I+K] = A[(I > L)?L:I];
+ else if(type(A)==7 || isvar(A))
+ MM[I+J][I+K] = makev([A,S+I]|sep=Sep);
+ else
+ MM[I+J][I+K] = A;
+ }
+ return MM;
+ }
+ K = N;
+ if(K < 0) N = M;
+ MM = newmat(M,N);
+ for(I = 0; I < M; I++){
+ if(L >= 0)
+ AA = rtostr(A[(I > L)?L:I]);
+ else
+ AA = rtostr(A)+rtostr(I+S);
+ if(AA>="0" && AA<=":"){
+ erno(0); return;
+ }
+ for(J = 0; J < N; J++){
+ if(K < 0){
+ if(I > J) continue;
+ if(K == -3 && I == J) continue;
+ }
+ MM[I][J] = makev([AA,J+S]|sep=Sep);
+ }
+ }
+ if(K < 0){
+ for(I = 0; I < M; I++){
+ for(J = 0; J < I; J++)
+ MM[I][J] = (K == -4)?MM[J][I]:-MM[J][I];
+ }
+ }
+ return MM;
+}
+
+def newbmat(M,N,R)
+{
+ S = newvect(M);
+ T = newvect(N);
+ IM = length(R);
+ for(I = 0; I < IM; I++){
+ RI = R[I];
+ JM = length(RI);
+ for(J = 0; J < JM; J++){
+ RIJ = RI[J];
+ if(type(RIJ) == 6){
+ S[I] = size(RIJ)[0];
+ T[J] = size(RIJ)[1];
+ }
+ }
+ }
+ for(I = K = 0; I < M; I++){
+ if(S[I] == 0)
+ S[I] = 1;
+ K += S[I];
+ }
+ for(J = L = 0; J < N; J++){
+ if(T[J] == 0)
+ T[J] = 1;
+ L += T[J];
+ }
+ M = newmat(K,L);
+ if(type(Null=getopt(null))>0){
+ for(I=0;I<K;I++){
+ for(J=0;J<L;J++) M[I][J]=Null;
+ }
+ }
+ for(I0 = II = 0; II < IM; I0 += S[II++]){
+ RI = R[II];
+ JM = length(RI);
+ for(J0 = JJ = 0; JJ < JM; J0 += T[JJ++]){
+ if((RIJ = RI[JJ]) == 0)
+ continue;
+ Type = type(RIJ);
+ for(I = 0; I < S[II]; I++){
+ for(J = 0; J < T[JJ]; J++){
+ if(Type == 6)
+ M[I0+I][J0+J] = RIJ[I][J];
+ else if(Type == 4 || Type == 5)
+ M[I0+I][J0+J] = (I>0)?RIJ[I]:RIJ[J];
+ else
+ M[I0+I][J0+J] = RIJ;
+ }
+ }
+ }
+ }
+ return M;
+}
+
+def unim(S)
+{
+ if(!Rand++) random(currenttime());
+ if(!isint(Wt=getopt(wt))||Wt<0||Wt>10) Wt=2;
+ if(!isint(Xa=getopt(abs)) || Xa<1)
+ Xa=9;
+ if((Xaa=Xa)>10) Xaa=10;
+ if(Xaa%2) Xaa++;
+ Xh=Xaa/2;
+ if(type(S0=SS=S)==4){
+ Int=(getopt(int)==1)?1:0;
+ U=[1,1,1,1,1,1,1,1,1,1,1,1,2,2,3,4];
+ M=newmat(S[0],S[1]);
+ SS=cdr(S);SS=cdr(SS);
+ if(Rk=length(SS)) L=SS;
+ else{
+ L=[0];
+ I=(S[0]>S[1])?S[1]:S[0];
+ if(I<=2) return 0;
+ if(!isint(Rk=getopt(rank))||Rk<1||Rk>S[0]||Rk>S[1])
+ Rk=random()%(I-1)+2;
+ for(I=1;I<Rk;){
+ P=random()%(S[1]+Wt)-Wt;
+ if(P<=0) P=1;
+ if(findin(P,L)!=0){
+ L=cons(P,L);
+ I++;
+ }
+ }
+ }
+ L=ltov(qsort(L));
+ M[0][L[0]]=1;
+ for(I=1;I<Rk;I++){
+ P=Int?1:U[random()%length(U)];
+ if(P>Xa) P=Xa;
+ M[I][L[I]]=(random()%2)?P:(-P);
+ }
+ for(I=0;I<Rk;I++){
+ if(I!=0&&abs(M[I][L[I]])>1) M[K=random()%I][KK=L[I]]=1;
+ I0=(I==0)?1:L[I]+1;
+ I1=(I==Rk-1)?S[1]:L[I+1];
+ for(J=I0;J<I1;J++){
+ for(K=1;K<=Xa;K++){
+ P=random()%(I+1);
+ if((random()%2)==1) M[P][J]++;
+ else M[P][J]--;
+ }
+ }
+ }
+ S=M;
+ Res=(getopt(res)==1)?dupmat(S):0;
+ }
+ Conj=0;
+ if(type(S)<2){
+ if(S<2||S>20) return 0;
+ if(getopt(conj)==1){
+ M=S+Wt;
+ if(M>15) M=10;
+ M0=floor((M-1)/2);
+ for(R=[],I=0;I<S;I++) R=cons(random()%M-M0,R);
+ R=qsort(R);
+ M=diagm(S,R);
+ if(getopt(diag)!=1){
+ for(I=1;I<S;I++)
+ if(M[I-1][I-1]==M[I][I] && random()%2) M[I-1][I]=1;
+ }
+ if(M[0][0]==M[S-1][S-1]){
+ for(I=1;I<S;I++) if(M[I-1][I]==1) break;
+ if(I==S){
+ if(M[0][0]>0) M[0][0]--;
+ else M[S-1][S-1]++;
+ }
+ }
+ if(getopt(res)==1) RR=diagm(S,[1]);
+ S1=S;
+ Res=dupmat(S=M);
+ if(isint(I=getopt(int))&&I>1&&random()%I==0){
+ K=S[0][0];L=K+1;
+ for(I=1;I<S1;I++){
+ if(S[I][I]>L && S[I-1][I]==0 && (I==S1-1||S[I][I+1]==0)){
+ L=S[I][I];
+ if(RR){
+ RR[I][I]=L-K;RR[0][I]=1;
+ }
+ S[0][I]=1;
+ if(!(random()%3)) break;
+ }
+ }
+ if(random()%3==0){
+ for(I=0;I<S1-1;I++){
+ if(iand(S[I][I],1)&&S[I][I+1]==1){
+ for(J=I+2;J<S1&&S[I][J]==0;J++);
+ if(J<S1) continue;
+ for(J=I-1;J>=0&&S[J][I]==0;J--);
+ if(J>=0) continue;
+ S[I][I+1]=2;
+ for(J=0;J<S1;J++) RR[I][J]*=2;
+ break;
+ }
+ }
+ }
+ }
+ }else{
+ M=diagm(S,[1]);
+ S1=S;
+ }
+ }
+ if(type(S)==6){
+ M=dupmat(S);
+ S=size(S);
+ S1=S[1];S=S[0];
+ Nt=1;
+ if(getopt(conj)==1&&S==S1) Conj=1;
+ }
+ if(!isint(Ct=getopt(time)))
+ Ct=(S>3||S1>3)?100:200;
+ if(getopt(both)==1){
+ OL=delopt(getopt(),"both");
+ M=unim(mtranspose(M)|option_list=OL);
+ M=mtranspose(M);
+ }
+ Mx=20;
+ for(I=K=LL=0;I<Ct+Mx;I++){
+ P=random()%S;Q=random()%S;
+ if(3*K>Ct) T=random()%Xaa-Xh;
+ else if(5*K<Ct) T=random()%2-1;
+ else T=random()%4-2;
+ if(T>=0) T++;
+ if(P==Q) continue;
+ for(G=0,J=S1-1;J>=0;J--){
+ if((H=abs(M[Q][J]+M[P][J]*T))>Xa&&(!Conj||J!=P)) break;
+ if(K<Mx&&!Conj) G=igcd(G,H);
+ }
+ if(K<Mx && G>1) J=1;
+ if(J>0) continue;
+ if(J<0&&Conj==1){
+ for(J=S1-1;J>=0;J--)
+ if(J!=Q&&abs(M[J][P]-M[J][Q]*T)>Xa) break;
+ if(J<0&&abs(M[Q][P]-M[Q][Q]*T+M[P][P]*T-M[P][Q]*T^2)>Xa) J=1;
+ if(J<0&&M[P][P]==M[Q][Q]){
+ LF=0;
+ for(L=S1-1;J>=0;J--) if(L!=Q&&M[J][Q]!=0) LF++;
+ for(L=S1-1;J>=0;J--) if(L!=P&&M[P][J]!=0) LF++;
+ if(!LF) J=1;
+ }
+ }
+ if(J<0){
+ for(J=S1-1;J>=0;J--)
+ M[Q][J]+=M[P][J]*T;
+ if(Conj==1)
+ for(J=S1-1;J>=0;J--) M[J][P]-=M[J][Q]*T;
+ if(RR) for(J=S1-1;J>=0;J--) RR[Q][J]+=RR[P][J]*T;
+ K++;
+ }
+ if(K%5==0){
+ if(!Nt) M=mtranspose(M);
+ else if(!Conj&&K%2==0){
+ for(F=0;F<S;F++){
+ if((V=lgcd(M[F]))>1){
+ for(L=0;L<S1;L++) M[F][L]/=V;
+ }
+ }
+ }
+ }
+ if(I>Ct){
+ for(L=S-1;L>=0;L--){
+ for(F=0,J=S1-1;J>=0;J--)
+ if(M[L][J]!=0) F++;
+ if(F<2){
+ F=-1;break;
+ }
+ else F=0;
+ }
+ if(F<0 && LL++<5){
+ I=(CT-CT%2)/2;K=1;
+ }
+ if(I>Ct) break;
+ }
+ }
+ if(RR){
+ for(I=F=0;I<S1;I++){
+ V=Res[I][I];
+ for(J=I+1;J<S1;J++){
+ if(Res[J][J]!=V) break;
+ for(LP=0;LP<2;LP++){
+ if(J==S1-1||Res[J][J+1]==0){
+ if(I==0||Res[I-1][I]==0){
+ for(VL=VS=[],K=0;K<S1;K++){
+ VL=cons(RR[K][J],VL);VS=cons(RR[K][I],VS);
+ }
+ VR=ldev(VL,VS);
+ if(VR[0]){
+ for(K=S1-1,VN=VR[1];K>=0;K--,VN=cdr(VN))
+ RR[K][J]=car(VN);
+ F=1;
+ }
+ }
+ }
+ K=I;I=J;J=K;
+ }
+ }
+ if(F&&I==S1-1){
+ F=0;I=-1;
+ }
+ }
+ if(getopt(int)==1){
+ N=mtranspose(M);
+ for(F=I=0;I<S1;I++) if(lgcd(M[I])>1||lgcd(N[I])>1) F++;
+ if(F){
+ for(F=I=0;I<S1;I++){
+ if(Res[I][I]==-1) F=ior(F,1);
+ else if(Res[I][I]==1) F=ior(F,2);
+ }
+ C=0;
+ if(!iand(F,1)) C=1;
+ else if(!iand(F,2)) C=-1;
+ if(C){
+ for(I=0;I<S1;I++){
+ M[I][I]+=C;Res[I][I]+=C;
+ }
+ }
+ }
+ }
+ if(getopt(rep)!=1){
+ for(Lp=0;Lp<5;Lp++){
+ F=(M==Res||abs(lmax(RR))>Xa*10||abs(lmin(RR))>Xa*10)?1:0;
+ for(I=0;!F&&I<S1&&Lp<4;I++){
+ for(K=L=J=0;J<S1;J++){
+ if(M[I][J]) K++;
+ if(M[J][I]) L++;
+ }
+ if(K<2||L<2) F=1;
+ }
+ if(!F) break;
+ R=unim(S0|option_list=cons(["rep",1],getopt()));
+ M=R[0];Res=R[1];RR=R[3];
+ }
+ }
+ }
+ if(Res==0) return M;
+ if(RR){
+ for(I=K=V=0;I<S1;I++){
+ for(J=0;J<S1;J++){
+ if(RR[J][I]>0) V++;
+ else if(RR[J][I]<0) V--;
+ }
+ if(I<S1-1&&Res[I][I+1]!=0) continue;
+ if(V<0){
+ for(;K<=I;K++) RR=colm(RR,K,-1);
+ }
+ K=I+1;V=0;
+ }
+ }
+ if(getopt(rep)!=1){
+ if((F=getopt(dviout))==1){
+ if(getopt(conj)==1){
+ if(RR) show([Res,"=",myinv(RR),M,RR]|opt="spts0",str=1,lim=200);
+ }else{
+ if(type(Lim=getopt(lim))==1)
+ mtoupper(M,0|step=1,opt=7,dviout=1,pages=1,lim=Lim);
+ else mtoupper(M,0|step=1,opt=7,dviout=1,pages=1);
+ }
+ }else if(F==-1){
+ if(getopt(conj)==1){
+ if(RR) return ltotex([Res,"=",myinv(RR),M,RR]|opt="spts0",str=1,lim=200);
+ }else{
+ if(type(Lim=getopt(lim))==1)
+ return mtoupper(M,0|step=1,opt=7,pages=1,lim=Lim,dviout=-1);
+ else return mtoupper(M,0|step=1,opt=7,pages=1,dviout=-1);
+ }
+ }
+ }
+ if(RR==0) return[M,Res];
+ return [M,Res,myinv(RR),RR];
+}
+
+def pfrac(F,X)
+{
+ F = red(F);
+ FN = nm(F);
+ FD = dn(F);
+ if(mydeg(FD,X) == 0)
+ return [[F,1,1]];
+ R = rpdiv(FN,FD,X);
+ FN = R[0]/R[1];
+ R0 = R[2]/R[1];
+ FC = fctr(FD);
+ RT=[];
+ if(getopt(root)==2){
+ for(FE=[],FT=FC;FT!=[];FT=cdr(FT)){
+ if(mydeg(P=car(FT)[0],X)==4 && vars(P)==[X] && pari(issquare,C=mycoef(P,4,X))){
+ if((S=mycoef(P,3,X)/4/C)!=0) P=subst(P,X,X-S);
+ if(mycoef(P,1,X)==0 && pari(issquare,C0=mycoef(P,0,X))){
+ C=sqrtrat(C);C0=sqrtrat(C0);C1=2*C*C0-mycoef(P,2,X);
+ if(C1>0){
+ FE=cons([C*(X+S)^2-C1^(1/2)*(X+S)+C0,car(FT)[1]],FE);
+ FE=cons([C*(X+S)^2+C1^(1/2)*(X+S)+C0,car(FT)[1]],FE);
+ RT=cons(C1,RT);
+ continue;
+ }
+ }
+ }
+ FE=cons(car(FT),FE);
+ }
+ FC=reverse(FE);
+ }
+ N = Q = 0;
+ L = [];
+ for(I = length(FC)-1; I >= 0; I--){
+ if((D = mydeg(FC[I][0],X)) == 0) continue;
+ for(K=1; K<=FC[I][1]; K++){
+ for(J=P=0; J < D; J++){
+ V = makev(["zz_",++N]);
+ P = P*X + V;
+ L = cons(V,L);
+ }
+ Q += P/(FC[I][0]^K);
+ Q = red(Q);
+ }
+ }
+ L=reverse(L);
+ Q = nm(red(red(Q*FD)-FN));
+ Q = ptol(Q,X);
+ S = lsol(Q,L);
+ R = (R0==0)?[]:[[R0,1,1]];
+ for(N=0,I=length(FC)-1; I >= 0; I--){
+ if((D = mydeg(FC[I][0],X)) == 0) continue;
+ for(K=1; K<=FC[I][1]; K++){
+ for(P=J=0; J < D; N++,J++)
+ P = P*X + S[N][1];
+ if(P!=0) R = cons([P,FC[I][0],K],R);
+ }
+ }
+ for(;RT!=[];RT=cdr(RT)){
+ RTT=car(RT);
+ R=mtransbys(os_md.substblock,R,[RTT^(1/2),(RTT^(1/2))^2,RTT]);
+ }
+ TeX=getopt(TeX);
+ if((Dvi=getopt(dviout))==1||TeX==1){
+ V=strtov("0");
+ for(S=L=0,RR=R;RR!=[];RR=cdr(RR),L++){
+ RT=car(RR);
+ S+=(RT[0]/RT[1]^RT[2])*V^L;
+ }
+ if(TeX!=1) fctrtos(S|var=[V,""],dviout=1);
+ else return fctrtos(S|var=[V,""],TeX=3);
+ }
+ return reverse(R);
+}
+
+def cfrac(X,N)
+{
+ F=[floor(X)];
+ if(N<0){
+ Max=N=-N;
+ }
+ X-=F[0];
+ if(Max!=1)
+ M=mat([F[0],1],[1,0]);
+ for(;N>0 && X!=0;N--){
+ X=1/X;
+ F=cons(Y=floor(X),F);
+ X-=Y;
+ if(Max){
+ M0=M[0][0];M1=M[1][0];
+ M=M*mat([Y,1],[1,0]);
+ if(M[0][0]>Max) return M0/M1;
+ }
+ }
+ return (Max==0)?reverse(F):M[0][0]/M[1][0];
+}
+
+def sqrt2rat(X)
+{
+ if(type(X)>3) return X;
+ X=red(X);
+ if(getopt(mult)==1){
+ for(V=vars(X);V!=[];V=cdr(V)){
+ T=funargs(F=car(V));
+ if(type(T)==4&&length(T)>1){
+ Y=T[1];
+ Z=sqrt2rat(Y);
+ if(Y!=Z){
+ if(length(T)==2){
+ T0=T[0];
+ X=subst(X,F,T0(Z));
+ }else if(T[0]==pow)
+ X=subst(X,F,Y^T[2]);
+ }
+ }
+ }
+ }
+ for(V=vars(X);V!=[];V=cdr(V)){ /* r(x)^(1/2+n) -> r(x)^n*r(x)^(1/2) */
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&T[1]!=1/2&&isint(T2=2*T[1])){
+ if(iand(T2,1)){
+ R=(T[0])^(1/2);T2--;
+ }else R=1;
+ R*=T[0]^(T2/2);
+ X=red(subst(X,Y,R));
+ }
+ }
+ D=dn(X);N=nm(X);
+ if(imag(D)!=0){
+ N*=conj(D);
+ D*=conj(D);
+ return sqrt2rat(N/D);
+ }
+ for(V=vars(N);V!=[];V=cdr(V)){ /* (r(x)^(n/m))^k */
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&(T[1]==0||(type(T[1])==1&&ntype(T[1])==0))){
+ Dn=dn(T[1]);Nm=nm(T[1]);
+ N=substblock(N,Y,Y^Dn,T[0]^Nm);
+ }
+ }
+ for(V=vars(D);V!=[];V=cdr(V)){
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&(T[1]==0||(type(T[1])==1&&ntype(T[1])==0))){
+ Dn=dn(T[1]);Nm=nm(T[1]);
+ D=substblock(D,Y,Y^Dn,T[0]^Nm);
+ }
+ }
+ for(V=vars(D);V!=[];V=cdr(V)){
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&T[1]==1/2&&mydeg(D,Y)==1){
+ N*=mycoef(D,0,Y)-mycoef(D,1,Y)*Y;
+ N=mycoef(N,0,Y)+mycoef(N,1,Y)*Y+mycoef(N,2,Y)*T[0];
+ D=mycoef(D,0,Y)^2-mycoef(D,1,Y)^2*T[0];
+ X=red(N/D);
+ D=dn(X);N=nm(X);
+ break;
+ }
+ }
+ X=red(N/D);
+ D=dn(X);N=nm(X);
+ for(V=vars(D);V!=[];V=cdr(V)){
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&T[1]==1/2)
+ D=substblock(D,T[0]^T[1],(T[0]^T[1])^2,T[0]);
+ }
+ for(V=vars(N);V!=[];V=cdr(V)){
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&T[1]==1/2)
+ N=substblock(N,T[0]^T[1],(T[0]^T[1])^2,T[0]);
+ }
+ for(V=vars(N);V!=[];V=cdr(V)){
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&T[1]==1/2){
+ Ag=T[0];
+ R=S=1;
+ An=fctr(nm(Ag));
+ CA=An[0][0];
+ if(CA<0){
+ CA=-CA;R=-1;
+ }
+ if(type(I=sqrtrat(CA))<2) S=I;
+ else R*=CA;
+ for(An=cdr(An);An!=[];An=cdr(An)){
+ Pw=car(An)[1];I=iand(Pw,1);
+ if(I) R*=car(An)[0];
+ if((Q=(Pw-I)/2)>0) S*=car(An)[0]^Q;
+ }
+ for(An=fctr(dn(Ag));An!=[];An=cdr(An)){
+ Pw=car(An)[1];I=iand(Pw,1);
+ if(I) R/=car(An)[0]^I;
+ if((Q=(Pw-I)/2)>0) S/=car(An)[0]^Q;
+ }
+ if(S!=1) N=subst(N,Y,R^(1/2)*S);
+ }
+ }
+ for(V=vars(N);V!=[];V=cdr(V)){
+ T=args(Y=car(V));
+ if(functor(Y)==pow&&T[1]==1/2){
+ C=mycoef(N,1,Y);
+ for(VC=vars(C);VC!=[];VC=cdr(VC)){
+ TC=args(YC=car(VC));
+ if(functor(YC)==pow&&TC[1]==1/2){
+ Ag=red(T[0]*TC[0]);
+ R=S=1;
+ An=fctr(nm(Ag));
+ CA=An[0][0];
+ if(CA<0){
+ CA=-CA;R=-1;
+ }
+ if(type(I=sqrtrat(CA))<2) S=I;
+ else R*=CA;
+ for(An=cdr(An);An!=[];An=cdr(An)){
+ Pw=car(An)[1];I=iand(Pw,1);
+ if(I) R*=car(An)[0];
+ if((Q=(Pw-I)/2)>0) S*=car(An)[0]^Q;
+ }
+ for(An=fctr(dn(Ag));An!=[];An=cdr(An)){
+ Pw=car(An)[1];I=iand(Pw,1);
+ if(I) R/=car(An)[0]^I;
+ if((Q=(Pw-I)/2)>0) S/=car(An)[0]^Q;
+ }
+ CC=mycoef(C,1,YC);
+ N=N-CC*YC*Y+CC*R^(1/2)*S;
+ }
+ }
+ }
+ }
+ return red(N/D);
+}
+
+def cfrac2n(X)
+{
+ if(type(L=getopt(loop))==1&&L>0)
+ C=x;
+ else{
+ C=0;L=0;
+ }
+ if(L>1){
+ for(Y=[];L>1;L--){
+ Y=cons(car(X),Y);
+ X=cdr(X);
+ }
+ if(X!=[]){
+ P=cfrac2n(X|loop=1);
+ for(V=P,Y=reverse(Y);Y!=[];Y=cdr(Y))
+ V=sqrt2rat(car(Y)+1/V);
+ return V;
+ }else{
+ C=0;X=reverse(Y);
+ }
+ }
+ for(V=C,X=reverse(X);X!=[];X=cdr(X)){
+ if(V!=0) V=1/V;
+ V+=car(X);
+ }
+ if(C!=0){
+ V=red(V);P=dn(V)*x-nm(V);
+ S=getroot(P,x|cpx=2);
+ T=map(eval,S);
+ V=(T[0]>0)?S[0]:S[1];
+ }
+ return V;
+}
+
+def s2sp(S)
+{
+ if(getopt(short)==1){
+ if(type(F=getopt(std))==1) S=s2sp(S|std=F);
+ if(type(S)!=7) S=s2sp(S);
+ L=strtoascii(S);
+ for(LS=[],F=C=0;L!=[];L=cdr(L)){
+ if((G=car(L))!=F){
+ LS=cons(G,LS);C=0;
+ }else if(C<3){
+ LS=cons(G,LS);
+ }else if(C==3){
+ LS=cdr(LS);LS=cdr(LS);
+ LS=cons(94,LS);LS=cons(52,LS);
+ }else if(C==9){
+ LS=cdr(LS);LS=cons(97,LS);
+ }else{
+ K=car(LS);LS=cdr(LS);LS=cons(K+1,LS);
+ }
+ C++;F=G;
+ }
+ return asciitostr(reverse(LS));
+ }
+ if(type(F=getopt(std))==1){
+ F=(F>0)?1:-1;
+ if(type(S)==7) S=s2sp(S);
+ for(L=[];S!=[];S=cdr(S))
+ L=cons(os_md.msort(car(S),[-1,0]),L);
+ return os_md.msort(L,[F,2]);
+ }
+ if(type(S)==7){
+ S = strtoascii(S);
+ if(type(S) == 5) S = vtol(S);
+ for(N=0,R=TR=[]; S!=[]; S=cdr(S)){
+ if(car(S)==45) /* - */
+ N=1;
+ else if(car(S)==47) /* / */
+ N=2;
+ if(N>0){
+ while(car(S)<48&&car(S)!=40) S=cdr(S);
+ }
+ if((T=car(S))>=48 && T<=57) TR=cons(T-48,TR);
+ else if(T>=97) TR=cons(T-87,TR);
+ else if(T>=65 && T<=90) TR=cons(T-29,TR); /* A-Z */
+ else if(T==44){
+ R=cons(reverse(TR),R);
+ TR=[];
+ }else if(T==94){ /* ^ */
+ S=cdr(S);
+ if(car(S)==40){ /* ( */
+ S=cdr(S);
+ for(T=0; car(S)!=41 && S!=[]; S=cdr(S)){
+ V=car(S)-48;
+ if(V>=10) V-=39;
+ T=10*T+V;
+ }
+ }else{
+ while(car(S)<48) S=cdr(S);
+ T=car(S)-48;
+ if(T>=10) T-=39;
+ }
+ while(--T>=1) TR=cons(car(TR),TR);
+ }else if(T==40){ /* ( */
+ S=cdr(S);
+ if(N==1){
+ N=0; NN=1;
+ }else NN=0;
+ if(car(S)==45){ /* - */
+ S=cdr(S);
+ NN=1-NN;
+ }
+ for(I=0; I<2; I++){
+ for(V=0; (SS=car(S))!=41 && SS!=47 && S!=[]; S=cdr(S)){
+ T=SS-48;
+ if(T>=10) T-=39;
+ V=10*V+T;
+ }
+ if(NN==1){
+ V=-V; NN=0;
+ }
+ TR=cons(V,TR);
+ if(SS!=47) break;
+ else{
+ N=2; S=cdr(S);
+ }
+ }
+ }else if(T==60){
+ for(V=[],S=cdr(S);S!=[]&&car(S)!=62;S=cdr(S))
+ V=cons(car(S),V);
+ if(car(S)!=62) continue;
+ TR=cons(eval_str(asciitostr(reverse(V))),TR);
+ }else if(T<48) continue;
+ if(N==1){
+ T = car(TR);
+ TR=cons(-T,cdr(TR));
+ N=0;
+ }else if(N==2){
+ T=car(TR); TR=cdr(TR);
+ TR=cons(car(TR)/T,cdr(TR));
+ N=0;
+ }
+ }
+ return reverse(cons(reverse(TR),R));
+ }else if(type(S)==4){
+ Num=getopt(num);
+ for(R=[]; ; ){
+ if(type(TS=car(S))!=4) return;
+ for(; TS!=[]; TS=cdr(TS)){
+ V=car(TS);
+ if(type(V)>1||(type(V)==1&&ntype(V)>0)){
+ V="<"+rtostr(V)+">";
+ R=append(reverse(strtoascii(V)),R);
+ continue;
+ }
+ if(dn(V)>1){
+ P=reverse(strtoascii(rtostr(V)));
+ R=append(P,cons(40,R));
+ R=cons(41,R);
+ continue;
+ }
+ if(V<0 && V>-10){
+ V=-V;
+ R=cons(45,R);
+ }
+ if(V<0 || V>35 || (V>9 && Num==1)){
+ P=reverse(strtoascii(rtostr(V)));
+ R=append(P,cons(40,R));
+ V=41;
+ }else if(V<10) V+=48;
+ else V+=87;
+ R=cons(V,R);
+ }
+ if((S=cdr(S))==[]) break;
+ R=cons(44,R);
+ }
+ return asciitostr(reverse(R));
+ }
+ return 0;
+}
+
+def sp2grs(M,A,L)
+{
+ MM = [];
+ T0 = 0;
+ Mat=getopt(mat);
+ if(Mat!=1) Mat=0;
+ if(type(M)==7) M=s2sp(M);
+ if((LM = length(M)) > 10 && type(A) < 4)
+ CK = 1;
+ Sft = (type(L)==1)?L:0;
+ if(type(L)==4 && length(L)>=3)
+ Sft = L[2];
+ if(Sft < 0){
+ T0 = 1;
+ Sft = -Sft-1;
+ }
+ for(I = LM-1; I >= 0; I--){
+ MI = M[I]; MN = [];
+ if(CK == 1 && length(MI) > 10){
+ erno(1);
+ return;
+ }
+ if(type(A) == 4)
+ AA = rtostr(A[I]);
+ else
+ AA = rtostr(A)+rtostr(I);
+ for(J = LM = length(MI)-1; J >= 0; J--){
+ V = MI[J];
+ if(type(V) > 3)
+ V = V[0];
+ if(T0 == 0 || I == 0)
+ MN = cons([V, makev([AA,J+Sft])], MN);
+ else{
+ if(LM == 1)
+ MN = cons([V, (J==0)?0:makev([AA])], MN);
+ else if(I == 1 && Mat == 0)
+ MN = cons([V, (J==length(MI)-1)?0:makev([AA,J+Sft])], MN);
+ else
+ MN = cons([V, (J==0)?0:makev([AA,J])], MN);
+ }
+ }
+ MM = cons(MN, MM);
+ }
+ if(type(L) == 4 && length(L) >= 2){
+ R = chkspt(MM|mat=Mat); /* R[3]: Fuchs */
+ AA = var(MM[L[0]-1][L[1]-1][1]);
+ if(AA==0) AA=var(R[3]);
+ if(AA!=0 && (P = mycoef(R[3],1,AA))!=0){
+ P = -mycoef(R[3], 0, AA)/P;
+ MM = mysubst(MM,[AA,P]);
+ }
+ }
+ return MM;
+}
+
+def intpoly(F,X)
+{
+ if((T=ptype(F,X))<4){
+ if(T<3){ /* polynomial */
+ if(type(C=getopt(cos))>0){
+ V=vars(F);
+ Z=makenewv(V);
+ W=makenewv(cons(Z,V));
+ Q=intpoly(F,X|exp=Z);
+ Q=(subst(Q,Z,@i*C)*(Z+@i*W)+subst(Q,Z,-@i*C)*(Z-@i*W))/2;
+ return [mycoef(Q,1,Z),mycoef(Q,1,W)];
+ }
+ if(type(C=getopt(sin))>0){
+ Q=intpoly(F,X|cos=C);
+ return [-Q[1],Q[0]];
+ }
+ if(type(C=getopt(log))>0){
+ Q=intpoly(F,X);
+ if(C[0]==0) return [Q,0];
+ if(length(C)<3) C=[C[0],C[1],1];
+ Q-=subst(Q,X,-C[1]/C[0]);
+ if(iscoef(Q,os_md.israt)) Q=red(Q);
+ if(C[2]==0) return [Q];
+ S=subst(-Q*C[0]*C[2],X,X-C[1]/C[0]);
+ for(R=0,D=mydeg(S,X);D>0;D--) R+=mycoef(S,D,X)*X^(D-1);
+ R=subst(R,X,X+C[1]/C[0]);
+ return cons(Q,intpoly(R,X|log=[C[0],C[1],C[2]-1]));
+ }
+ if(type(C=getopt(exp))>0){
+ D = mydeg(F,X);
+ for(P=Q=F/C;D>=0;D--){
+ Q=-mydiff(Q,X)/C;
+ P+=Q;
+ }
+ return P;
+ }
+ for(P=0,I=mydeg(F,X);I >= 0;I--)
+ P += mycoef(F,I,X)*X^(I+1)/(I+1);
+ return P;
+ }
+ R=pfrac(F,X|root=2); /* rational */
+ for(P=0;R!=[];R=cdr(R)){
+ if(type(V=getopt(dumb))==5){
+ for(PF=[],RR=R;RR!=[];RR=cdr(RR))
+ PF=cons(RR[0][0]/RR[0][1]^RR[0][2],PF);
+ PF=[cons(X,reverse(PF))];
+ if(P) PF=cons([1,P],PF);
+ V[0]=cons(PF,V[0]);
+ }
+ RT=car(R);
+ if(mydeg(RT[1],X)==0) P+=intpoly(RT[0]*RT[2],X);
+ else if((Deg=mydeg(RT[1],X))==1){
+ if(RT[2]>1) P+=RT[0]*RT[1]^(1-RT[2])/(1-RT[2])/mycoef(RT[1],1,X);
+ else P+=RT[0]*log(RT[1])/mycoef(RT[1],1,X);
+ P=red(P);
+ }else if(Deg==2){
+ D1=diff(RT[1],X);C1=mycoef(D1,1,X);
+ B=2*C1*mycoef(RT[1],0,X)-mycoef(RT[1],1,X)^2; /* ax^2+bx+c => B=4ac-b^2 */
+ B=sqrt2rat(B);
+ N=RT[0];
+ for(I=RT[2];I>0&&N!=0;I--){
+ C0=mycoef(N,1,X)/C1;N-=C0*D1;
+ if(C0){
+ if(I>1) P-=C0/RT[1]^(I-1)/(I-1);
+ else P+=C0*log(RT[1]);
+ }
+ if(I>1){
+ BB=B/C1;
+ P+=N*X/RT[1]^(I-1)/(I-1)/BB;
+ N*=(2*I-3)/(I-1)/BB;
+ }else{
+ if(type(BR=sqrtrat(B))>3){
+ mycat(["Cannot obtain sqare root of ",B]);
+ return [];
+ }
+ if(real(nm(BR))!=0){
+ P+=(2*N/BR)*atan(sqrt2rat(D1/BR|mult=1));
+ }else{
+ BR*=@i;BRI=sqrt2rat(1/BR);
+ R1=(-mycoef(RT[1],1,X)+BR)/C1;
+ R2=(-mycoef(RT[1],1,X)-BR)/C1;
+ P+=N*BRI*log( /* sqrt2rat */((x-R1)/(x-R2)));
+ }
+ }
+ P=red(P);
+ }
+ P=sqrt2rat(P);
+ }else{
+ mycat(["Cannot get an indefinite integral of ",F]);
+ return [];
+ }
+ }
+ Q=simplog(P,X);
+ if(type(V)==5&&nmono(P)!=nmono(Q)) V[0]=cons([[1,red(P)]],V[0]);
+ return red(Q);
+ }
+ return [];
+}
+
+def fshorter(P,X)
+{
+ Q=sqrt2rat(P);
+ R=trig2exp(Q,X|inv=1);
+ if(str_len(fctrtos(R))<str_len(fctrtos(Q))) Q=R;
+ Var=pfargs(Q,X|level=1);
+ for(C=F=0,R=1,V=Var;V!=[];V=cdr(V)){
+ if(findin(car(V)[1],[cos,sin,tan])>=0){
+ if(!C){
+ F=car(V)[2];
+ }else{
+ R=red(car(V)[2]/F);
+ if(type(R)!=1) break;
+ F/=dn(R);
+ }
+ C++;
+ }
+ }
+ if(getopt(period)==1) return F;
+ if(!isint(Log=getopt(log))) Log=0;
+ if(V==[]&&F!=0){
+ if(iand(Log,1)){
+ H=append(cdr(fctr(nm(Q))),cdr(fctr(dn(Q))));
+ for(L=0;H!=[];H=cdr(H))
+ L+=str_len(rtostr(car(H)[0]));
+ }else L=str_len(fctrtos(Q));
+ S=trig2exp(P,X);
+ for(T=[sin(F),tan(F),cos(F),sin(F/2),cos(F/2),tan(F/2)];T!=[];T=cdr(T)){
+ R=trig2exp(S,X|inv=car(T));
+ if(iand(Log,1)){
+ H=append(cdr(fctr(nm(R))),cdr(fctr(dn(R))));
+ for(K=0;H!=[];H=cdr(H))
+ K+=str_len(rtostr(car(H)[0]));
+ }else K=str_len(fctrtos(R));
+ if(K<L){
+ Q=R;L=K;
+ }
+ }
+ }
+ return Q;
+}
+
+def isshortneg(P)
+{
+ return(str_len(rtostr(P))>str_len(rtostr(-P)))?1:0;
+}
+
+def simplog(R,X)
+{
+ for(V=[],Var=pfargs(R,X);Var!=[];Var=cdr(Var)){
+ VT=car(Var);
+ if(VT[1]==log && ptype(R,VT[0])==2 && mydeg(R,VT[0])==1)
+ V=cons([VT[0],VT[2],mycoef(R,1,VT[0])],V);
+ }
+ for(;V!=[];V=cdr(V)){
+ VT=car(V);
+ for(V2=cdr(V);V2!=[];V2=cdr(V2)){
+ Dn=1;
+ if((C=red(car(V2)[2]/VT[2]))!=1&&C!=-1){
+ if(getopt(mult)==1&&type(C)==1&&ntype(C)==0){
+ Dn=dn(C);C*=Dn;
+ }else continue;
+ }
+ Log=red(VT[1]^Dn*car(V2)[1]^(Dn*C));
+ L=str_len(rtostr(dn(Log)))-str_len(rtostr(nm(Log)));
+ if(L>0 || (L==0&&isshortneg(VT[2])) ){
+ Dn=-Dn;Log=1/Log;
+ }
+ R=mycoef(R,0,VT[0]);R=mycoef(R,0,car(V2)[0]);
+ return(R+VT[2]*log(Log)/Dn);
+ }
+ }
+ return R;
+}
+
+def integrate(P,X)
+{
+ Dvi=getopt(dviout);
+ if(type(I=getopt(I))==4){
+ if((R=integrate(P,X))==[]) II="?";
+ else if(type(I[0])>3||type(I[1])>3){
+ R=subst(R,X,x);
+ V=flim(R,I[0]);VV=flim(R,I[1]);
+ if(V==""||VV=="") II="?";
+ else if(type(V)==7||type(VV)==7){
+ if(V==VV) II="?";
+ else II=(VV=="+"||V=="-")?"\\infty":"-\\infty";
+ }else{
+ II=VV-V;
+ if(II>10^10) II="\\infty";
+ else if(II<-10^10) II="-\\infty";
+ }
+ }else{
+ V=subst(R,X,I[1])-subst(R,X,I[0]);
+ VV=myval(V);
+ II=(type(VV)>=2||ntype(VV)<1)?VV:evalred(V);
+ }
+ if(type(Dvi)!=1) return II;
+ I=ltov(I);
+ for(J=0;J<2;J++){
+ if(type(I[J])>3){
+ if(type(I[J])==4&&length(I[J])>1) I[J]=I[J][1];
+ else I[J]=(J==0)?"-\\infty":"\\infty";
+ }
+ if(type(I[J])<4) I[J]=my_tex_form(I[J]);
+ }
+ S=(type(II)==7)?II:my_tex_form(II);
+ S="\\int_{"+I[0]+"}^{"+I[1]+"}"+monototex(P)+"\\,d"+my_tex_form(X)+"&="+S;
+ if(Dvi==1) dviout(texbegin("align",S));
+ return S;
+ }
+ if(isint(Dvi)==1){
+ if(Dvi==2||getopt(dumb)==-1){
+ V=newvect(1);V[0]=[];
+ }else V=0;
+ if((RR=integrate(P,X|dumb=V))==[]) return R;
+ S=fshorter(RR,X);
+ VV=[X];
+ if(V!=0){
+ R=cons([[1,RR]],V[0]);
+ if(S!=RR) R=cons([[1,RR=S]],R);
+ for(V=FR=[];R!=[];R=cdr(R))
+ if(car(R)!=FR) V=cons(FR=car(R),V);
+ Var=varargs(V|all=1)[1];
+ for(S0=[x0,x1,x2,x3],S=[t,s,u,v,w];S0!=[]&&S!=[];){
+ if(findin(car(S0),Var)<0){
+ S0=cdr(S0); continue;
+ }
+ if(findin(car(S),Var)>=0){
+ S=cdr(S); continue;
+ }
+ V=subst(V,[car(S0),car(S)]);S0=cdr(S0);S=cdr(S);
+ }
+ if(Dvi==-2) return V;
+ S1="\\,dx&";
+ }else{
+ V=[[],[[1,RR=S]]];
+ S1="\\,dx";
+ }
+ if(type(P)>2){
+ if(type(nm(P))<2){
+ P=P*dx;S1=V?"&":"";
+ }
+ S=fctrtos(P|TeX=2,lim=0);SV0=my_tex_form(P);
+ if(str_len(SV0)<str_len(S)) S=SV0;
+ }else S=monototex(P);
+ if(Dvi!=-2) S="\\int "+S+S1;
+ else S="";
+ for(L=[],V=cdr(V);V!=[];V=cdr(V)){
+ CL=car(V);S0=["="]; /* a line */
+ for(FL=0;CL!=[];CL=cdr(CL),FL++){
+ CT=car(CL); /* a term */
+ if((Y=CT[0])==0){ /* a variable */
+ CT=cdr(CT);
+ if(length(CT)>2) CT=cdr(CT);
+ S0=["\\qquad(",CT[0],"=",CT[1],")"];
+ break;
+ }else{
+ for(FT=0,S2=[],CT=cdr(CT);CT!=[];CT=cdr(CT),FT++){
+ SV=fctrtos(car(CT)|TeX=2,lim=0);SV0=my_tex_form(car(CT));
+ if(str_len(SV0)<str_len(SV)) SV=SV0;
+ if(FL||FT||(F&&type(Y)<2)) SV=minustos(SV);
+ S2=append(["+",SV],S2);
+ }
+ S2=reverse(cdr(S2));
+ if(type(Y)>1){
+ if(length(S2)>1){
+ S1="\\int\\left(";S3="\\right)\\,d";
+ }else{
+ S1="\\int";S3="\\,d";
+ }
+ S2=cons(S1,append(S2,[S3,Y]));
+ if(findin(Y,VV)<0) VV=cons(Y,VV);
+ }
+ if(FL) S0=append(S0,cons("+",S2));
+ else S0=append(S0,S2);
+ }
+ }
+ L=append([S0],L);
+ };
+ V=pfargs(RR,X|level=1);
+ for(Var=[];V!=[];V=cdr(V)) Var=cons(car(V)[0],Var);
+ Var=reverse(Var);
+ if(!isint(J=getopt(frac))) J=0;;
+ if(!iand(J,4)&&(!iand(J,2)||length(Var)==1)&&(iand(J,8)==8||ptype(RR,Var)==2)){
+ F=1;
+ if(iand(J,1)){
+ K=str_len(fctrtos(RR));
+ I=str_len(fctrtos(RR|var=Var));
+ if(I>=K) F=0;
+ }
+ if(F){
+ V=[fctrtos(RR|var=Var,TeX=2)];
+ if(Dvi!=-2) V=cons("=",V);
+ if(length(L)>0) L=cdr(L);
+ L=append([V],L);
+ }
+ }else if(ptype(RR,X)==2){
+ L=cdr(L);
+ V=[fctrtos(RR|var=X,TeX=2)];
+ if(Dvi!=-2) V=cons("=",V);
+ L=append([V],L);
+ }
+ S=texket(S+ltotex(reverse(L)|opt=["cr","spts0"],str=1));
+ if(getopt(log)!=1){
+ for(V=[];VV!=[];VV=cdr(VV))
+ V=cons(strtoascii(my_tex_form(car(VV))),V);
+ S1=strtoascii("\\log");
+ for(F=1;F;){ /* log(log(x)) */
+ F=FT=0;
+ S0=strtoascii(S); /* log(x) -> log|x| */
+ L=length(S0);
+ S2=str_tb(0,0);
+ for(I=0;;){
+ if(I>=L||(J=str_str(S0,S1|top=I+FT))<0){
+ S=str_tb(0,S2)+str_cut(S0,I,100000);
+ break;
+ }
+ if((K=str_str(S0,40|top=J+4))<0
+ ||(K!=J+4&&K!=J+9)||(N=str_pair(S0,K+1,40,41))<0){
+ FT=J-I+4;continue;
+ }
+ FT=0;
+ if(str_str(S0,V|top=K+1,end=N-1)[0]<0) S2=str_tb(str_cut(S0,I,N),S2);
+ else{
+ /* log(a) -> log(a) */
+ F=1;
+ if(N<L-1&&S0[N+1]==94){ /* log(x)^2 -> (log|x|)^2 */
+ S2=str_tb([str_cut(S0,I,J-1),"\\left(",str_cut(S0,J,K-1),
+ "|",str_cut(S0,K+1,N-1),"|\\right)"],S2);
+ }
+ else S2=str_tb([str_cut(S0,I,K-1),"|",str_cut(S0,K+1,N-1),"|"],S2);
+ }
+ I=N+1;
+ }
+ }
+ }
+ if(Dvi>0){
+ dviout(texbegin("align*",S));
+ return 1;
+ }
+ return S;
+ } /* end of dviout */
+ SM=["Cannot integrate",P,"at present"];
+ P=sqrt2rat(P|mult=1);
+ Dumb2=1;Dumb3=0;W=newvect(1);W[0]=[];
+ if(type(Dumb=getopt(dumb))==5){
+ Dumb2=Dumb3=Dumb;D2=W;
+ }else if(!isint(Dumb)) Dumb=0;
+ if(Dumb==-1){
+ Dumb2=Dumb3=-1;
+ }
+ if(type(Dumb)!=5) D2=Dumb2;
+ if(!isint(Mul=getopt(mult))) Mul=0;
+ else Mul++;
+ if(type(VAR=getopt(var))!=4) VAR=[];
+ if(type(P)>4) return [];
+ if(iand(T=ptype(P=red(P),X),63)>3||Mul>4){
+ if(Dumb!=1) mycat(SM);
+ return [];
+ }
+ if(Dumb==-1) mycat(["integrate", P]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[X,P]],Dumb[0]);
+ if(T<4 && (T<3||iscoef(P,os_md.israt))){
+ if(Dumb==-1) mycat(["rational function",P]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[X,P]],Dumb[0]);
+ return intpoly(P,X|dumb=Dumb); /* rational function */
+ }
+ Var=pfargs(P,X);
+ for(F=0,VV=Var;VV!=[];VV=cdr(VV)){
+ /* p(x)*log(x^2-1), @e^x, a^x, f(x)^(m/n) etc.->simplify */
+ V=car(VV);
+ if(V[1]==log && (T=ptype(V[2],X))>1 && T<4){
+ if(mydeg(dn(V[2]),X)>0||mydeg(nm(V[2]),X)>1){
+ FC=pfctr(V[2],X);RV=1;
+ if(length(FC)>2){
+ RR=0;RV=1;
+ if((F0=car(FC)[0])!=1){
+ if(type(F0)!=1 && F0<0){
+ for(FT=cdr(FT);FT!=[];FT=cdr(FT)){
+ if(iand(car(FT)[1],1)){
+ RV=-1;F0=-F0;break;
+ }
+ }
+ }
+ }
+ if(F0!=1) RR=log(F0);
+ for(FC=cdr(FC);FC!=[];FC=cdr(FC)){
+ if(RV==-1&&iand(car(FC)[1],1)==1){
+ RR+=car(FC)[1]*log(-car(FC)[0]);
+ RV=1;
+ }else
+ RR+=car(FC)[1]*log(car(FC)[0]);
+ }
+ P=subst(P,V[0],RR);
+ F=1;
+ }
+ }
+ F=1;
+ }else if(V[1]==pow){
+ if(ptype(V[2],X)==1){
+ F=1;
+ if(V[2]==@e){ /* @e^(f(x)) */
+ P=subst(P,V[0],exp(V[3]));
+ }else P=subst(P,V[0],exp(log(V[2])*V[3]));
+ }else if(type(V[3])<=1 && ntype(V[3])==0){ /* r(x)^(m/n) */
+ if((Pw=floor(V[3]))!=0){
+ R=V[2]^Pw;
+ if((PF=V[3]-Pw)!=0) R*=V[2]^PF;
+ P=subst(P,V[0],R);
+ F=1;
+ V=[V[2]^PF,V[1],V[2],PF];
+ }
+ if(ptype(nm(V[2]),X)<2&&V[3]>0){ /* (1/p(x))^(m/n) */
+ P=subst(P,V[0],V[2]*red(1/V[2])^(1-V[3]));
+ F=0;VV=cons(0,Var=pfargs(P,X));continue;
+ }
+ if(ptype(V[2],X)<4&&(K=dn(V[3]))>1){
+ V2=red(V[2]);
+ DN=mydeg(nm(V2),X);DD=mydeg(dn(V2),X);
+ if(DN+DD>1){
+ VF=pfctr(V2,X);
+ R=car(VF)[0]^(car(VF)[1]);RR=0;
+ for(VF=cdr(VF);VF!=[];VF=cdr(VF)){
+ TV=car(VF);TM=TV[1];
+ while(abs(TM)>=K){
+ RR=1;
+ if(TM>0){
+ TM-=K;
+ RR*=TV[0]^nm(V[3]);
+ }else{
+ TM+=K;
+ RR/=TV[0]^nm(V[3]);
+ }
+ }
+ if(TM!=0) R*=TV[0]^TM;
+ }
+ if(RR){
+ P=subst(P,V[0],RR*red(R)^(V[3]));F=1;
+ F=0;VV=cons(0,Var=pfargs(P,X));continue;
+ }
+ }
+ }
+ }
+ }
+ }
+ if(F){
+ P=sqrt2rat(P|mult=1);
+ Var=pfargs(P=red(P),X);T=ptype(P,X);
+ if(T<4 && (T<3||iscoef(P,os_md.israt))){
+ if(Dumb==-1) mycat(["rational function",P]);
+ else if(type(Dumb)==5){
+ Dumb[0]=cons([[X,P]],Dumb[0]);
+ return intpoly(P,X|dumb=Dumb3);
+ }
+ return intpoly(P,X); /* rational function */
+ }
+ }
+#if 1
+ for(P0=P,V=pfargs(P,X|level=1);V!=[];V=cdr(V)) /* P:tan(x) -> P0:sin(x)/cos(x) */
+ if(car(V)[1]==tan) P0=red(subst(P0,car(V)[0],sin(car(V)[2])/cos(car(V)[2])));
+ if(iand(ptype(P0,X),128)){ /* (log f)'=f'/f */
+ for(Df=cdr(fctr(dn(P0)));Df!=[];Df=cdr(Df)){
+ if(!iand(ptype(car(Df)[0],X),64)) continue;
+ Q=car(Df)[0]^(car(Df)[1]);QQ=red(dn(P0)/Q);
+ DQ=red(diff(Q,X)*QQ);
+ if(type(C=DQ/nm(P0))<2&&C!=0){
+ PP=0;DN=[1];
+ }else for(DN=cdr(fctr(DQ));DN!=[];DN=cdr(DN)){
+ Y=car(DN)[0];
+ if(!iand(ptype(Y,X),64)||(I=mydeg(nm(P0),Y))!=mydeg(DQ,Y)
+ || ptype((C=red(mycoef(nm(P0),I,Y)/mycoef(DQ,I,Y))),X)>1||C==0) continue;
+ PP=red(P0-C*diff(Q,X)/Q);
+ if(nmono(P0)>nmono(PP)) break;
+ }
+ if(DN!=[]){
+ R=C*log(Q);
+ if(PP==0){
+ if(P!=P0&&type(Dumb)==5) Dumb[0]=cons([[X,P0]],Dumb[0]);
+ return R;
+ }
+ W[0]=[];
+ S=integrate(PP,X|dumb=D2);
+ if(S!=[]){
+ if(type(Dumb)==5){
+ Dumb[0]=cons([[X,red(P0-PP),PP]],Dumb[0]);
+ TD=W[0];
+ for(W0=[],TD=reverse(TD);TD!=[];TD=cdr(TD)){
+ if(car(TD)[0][0]){
+ WL=cons([1,R],car(TD));
+ Dumb[0]=cons(WL,Dumb[0]);
+ }
+ else Dumb[0]=cons(car(TD),Dumb[0]);
+ }
+ }
+ return red(R+S);
+ }
+ }
+ }
+ }
+#endif
+ if((length(Var)==1||getopt(exe)==1) && /* p(x)*atan(q(x))^m+r(x), etc */
+ findin((VT=car(Var))[1],[atan,asin,acos,log])>=0 && ptype(P,VT[0])==2 &&
+ (VT[1]!=log||(T!=65&&T!=66)||mydeg(VT[2],X)!=1)){ /* exclude x*log(x+1)^2 */
+ for(R=0,D=mydeg(P,VT[0]);D>=0;D--){
+ Q=S=mycoef(P,D,VT[0]);
+ if(S){
+ if(D>0){
+ if((Q=integrate(S,X|mult=Mul))==[]) return Q;
+ }else{
+ W[0]=[];
+ if((Q=integrate(S,X|dumb=D2,var=VAR,mult=Mul))==[]) return Q;
+ if(type(Dumb)==5){
+ TD=W[0];
+ for(W0=[],TD=reverse(TD);TD!=[];TD=cdr(TD)){
+ if(car(TD)[0][0]){
+ WL=cons([1,R],car(TD));
+ Dumb[0]=cons(WL,Dumb[0]);
+ }
+ else Dumb[0]=cons(car(TD),Dumb[0]);
+ }
+ if(car(Dumb[0])!=[[1,R],[1,Q]])
+ Dumb[0]=cons([[1,R,Q]],Dumb[0]);
+ }
+ return red(R+Q);
+ }
+ }else if(D>0) continue;
+ if(D==0){
+ if(Q!=0&&type(Dumb)==5) Dumb[0]=cons([[1,R,Q]],Dumb[0]);
+ return red(Q+R);
+ }
+ R0=Q*VT[0]^D;
+ P=(P0=P)-S*VT[0]^D-Q*diff(VT[0]^D,X);
+ if(mydeg(P,VT[0])>=D){ /* (x+1)*log(x)/x^2 */
+ if(mydeg(P,VT[0])==D &&
+ ptype(C=red(mycoef(P,D,VT[0])/diff(VT[0],X)),VT[0])<2){
+ P=P0-(S*VT[0]^D+Q*diff(VT[0]^D,X)+C*diff(VT[0]^(D+1),X)/(D+1));
+ R0+=C*VT[0]^(D+1)/(D+1);
+ }else{
+ P=P0;
+ if(Dumb!=1) mycat(SM);
+ return [];
+ }
+ }
+ if(type(Dumb)==5){
+ if(P) Dumb[0]=cons([R?[1,R,R0]:[1,R0],[X,P]],Dumb[0]);
+ else if(R!=0) Dumb[0]=cons([[1,R,R0]],Dumb[0]);
+ }
+ R+=R0;
+ }
+ }
+ if(length(Var)==1 && (VT=car(Var))[1]==pow && mydeg(P,VT[0])==1 && (PT=ptype(VT[2],X))<4){
+ PR=mycoef(P,0,VT[0]);
+ if(RR!=0){
+ RR=integrate(RR,X|dumb=Dumb3,var=Var);
+ if(RR==[]) return RR;
+ }
+ PW=VT[3];
+ if((D=mydeg(nm(V2=VT[2]),X))==2&&PT==2){ /* f(x)*(ax^2+bx+c)^(m/2)+r(x) */
+ if(isint(2*PW)){
+ C2=mycoef(V20=V2,2,X);F=1;
+ if((C21=sqrtrat(C2))==[]) return [];
+ if(imag(C21)!=0){
+ if(real(C21)!=0) return [];
+ C21=C21/@i;F=-1;
+ }
+ if(type(C21)>3) return [];
+ P=subst(P,X,X/C21);VT=mysubst(VT,[X,X/C21]);V2=VT[2];
+ C1=mycoef(V2,1,X)/F/2;
+ if(C1!=0){
+ P=subst(P,X,X-C1);VT=mysubst(VT,[X,X-C1]);V2=VT[2];
+ }
+ C0=mycoef(V2,0,X);
+ if((C01=sqrtrat(C0))==[]) return [];
+ if(imag(nm(C01))!=0){
+ if(real(nm(C01))!=0) return [];
+ C01=C01/@i;G=-1;
+ }else G=1;
+ if(type(C01)>3||(F==-1&&G==-1)) return [];
+ Y=makenewv([P,VAR]|var=x);
+ if(F==-1){ /* (c^2-x^2)^(1/2) */
+ Q=subst(P,VT[0],(C01*cos(Y))^(2*PW),X,YX=C01*sin(Y))
+ *C01*cos(Y)/C21;
+ SY=(C21*X+C1);CY=V20;YY=asin(sqrt2rat((C21*X+C1)/C01|mult=1));
+ }else if(G==-1){ /* (x^2-c^2)^(1/2) */
+ Q=subst(P,VT[0],(C01*sin(Y)/cos(Y))^(2*PW),X,YX=C01/cos(Y))
+ *C01*sin(Y)/cos(Y)^2/C21;
+ SY=V20;CY=1/(C21*X+C1);YY=acos(sqrt2rat(C01*(C21*X+C1)|mult=1));
+ }else{ /* (x^2+c^2)^(1/2) */
+ Q=subst(P,VT[0],(C01/cos(Y))^(2*PW),X,YX=C01*sin(Y)/cos(Y))
+ *C01/cos(Y)^2/C21;
+ CY=V20; YY=atan(sqrt2rat((C21*X+C1)/C01|mult=1));
+ }
+ if(Dumb==-1) mycat([C21*X+C1,"=",YX]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[0,Y,C21*X+C1,YX]],Dumb[0]);
+ Q=sqrt2rat(Q);
+ QQ=red(substblock(nm(Q),sin(Y),sin(Y)^2,1-cos(Y)^2)
+ /substblock(dn(Q),sin(Y),sin(Y)^2,1-cos(Y)^2));
+ if(cmpsimple(QQ,Q|comp=2)<0) Q=QQ;
+ QQ=red(substblock(nm(Q),cos(Y),cos(Y)^2,1-sin(Y)^2)
+ /substblock(dn(Q),cos(Y),cos(Y)^2,1-sin(Y)^2));
+ if(cmpsimple(QQ,Q|comp=2)<0) Q=QQ;
+ if((Q=integrate(Q,Y|dumb=Dumb2,var=cons(X,Var)))==[]) return [];
+ Q=trig2exp(Q,Y|inv=cos(Y));
+ for(V=vars(Q);V!=[];V=cdr(V)){
+ FA=funargs(car(V));
+ if(type(FA)==4&&FA[0]==log){
+ QQ=trig2exp(FA[1],Y|inv=cos(Y));
+ Q=mycoef(Q,0,car(V))+mycoef(Q,1,car(V))*log(QQ);
+ }
+ }
+ if(type(Dumb)==5) Dumb[0]=cons([[1,Q]],Dumb[0]);
+ if(F==-1) Q=subst(Q,sin(Y),SY/C01,cos(Y),CY^(1/2)/C01,Y,YY);
+ else if(G==-1){
+ Q=red(subst(Q,sin(Y),SY^(1/2)*cos(Y)/C01));
+ Q=red(subst(Q,cos(Y),C01*CY,Y,YY));
+ }else{
+ Q=red(subst(Q,sin(Y),(C21*X+C1)*cos(Y)/C01));
+ Nm=substblock(nm(Q),cos(Y),C01^2/CY,cos(Y)^2);
+ Nm=subst(Nm,cos(Y),C01/CY^(1/2));
+ Dn=substblock(dn(Q),cos(Y),C01^2/CY,cos(Y)^2);
+ Dn=subst(Dn,cos(Y),C01/CY^(1/2));
+ Q=red(subst(Nm/Dn,Y,YY));
+ }
+ if(findin(Y,vars(Q))>=0) return [];
+ for(R=[],Var=vars(Q);Var!=[];Var=cdr(Var)){
+ VT=funargs(V=car(Var));
+ if(type(VT)==4&&VT[0]==log&&ptype(VT[1],X)>60&&mydeg(Q,V)==1)
+ R=cons([mycoef(Q,1,V),V],R);
+ }
+ if(length(R)==2 && (R[0][0]==R[1][0]||R[0][0]+R[1][0]==0)){
+ R0=args(R[0][1])[0];R1=args(R[1][1])[0];
+ if(R[0][0]==R[1][0]) S=R0*R1;
+ else S=R1/R0;
+ Q=mycoef(Q,0,R[0][1]);Q=mycoef(Q,0,R[1][1]);
+ Q+=R[1][0]*log(red(S));
+ }
+ for(Var=vars(Q);Var!=[];Var=cdr(Var)){
+ VT=funargs(car(Var));
+ if(type(VT)==4&&VT[0]==log&&ptype(VT[1],X)>60){
+ S=trig2exp(VT[1],X|inv=cos(X),arc=1);
+ if(ptype(dn(S),X)<2 && mydeg(Q,car(Var))==1
+ && ptype(mycoef(Q,1,car(Var)),X)<2){
+ S=nm(S);
+ SF=fctr(S);
+ S/=SF[0][0];
+ }
+ if(cmpsimple(S,-S)>0) S=-S;
+ Q=subst(Q,car(Var),log(S));
+ }
+ } /* x/(1-x^2)^(1/2) */
+ if(type(Q=red(Q+RR))==2&&type(Dumb)!=5) Q-=cterm(Q);
+ if(Dumb==-1) mycat(["->",Q]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,Q]],Dumb[0]);
+ return Q;
+ }
+ }else if(D==1 && mydeg(Dn=dn(V2),X)<2 && type(PW)==1 && ntype(PW)==0 &&
+ (V2!=X||ptype(mycoef(P,1,VT[0]),X)>2)){ /* p(x)((ax+b)/(cx+d))^(m/n) */
+ PN=nm(PW);PD=dn(PW);
+ Y=makenewv([P,VAR]|var=x);Q=Y^PD*Dn-nm(V2);F=-mycoef(Q,0,X)/mycoef(Q,1,X);
+ Q=red(subst(P,VT[0],Y^PN,X,F)*diff(F,Y));
+ if(Dumb==-1) mycat([Y,"=",V2^(1/PD)]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[0,Y,V2^(1/PD)]],Dumb[0]);
+ if((Q=integrate(Q,Y|dumb=Dumb3,var=cons(X,Var)))==[]) return [];
+ Q=red(Q);
+ QN=subst(substblock(nm(Q),Y,Y^PD,V2),Y,V2^(1/PD));
+ QD=subst(substblock(dn(Q),Y,Y^PD,V2),Y,V2^(1/PD));
+ Q=red(QN/QD+RR);
+ if(Dumb==-1) mycat(["->",Q]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,Q]],Dumb[0]);
+ return Q;
+ }
+ }else if(length(Var)==2 && /* r(x,(ax+b)^(1/2),(cx+d)^(1/2)) */
+ (VT=car(Var))[1]==pow && ptype(VT[2],X)==1 && mydeg(VT[2],X)==1 && VT[3]==1/2 &&
+ (VS=car(car(Var)))[1]==pow && ptype(VS[2],X)==1 && mydeg(VS[2],X)==1 && VS[3]==1/2){
+ Y=makenewv([P,VAR]|var=x);R=(Y^2-myceof(VS[0],0,X))/(C=mycoef(VS[0],1,X));
+ if(Dumb==-1) mycat([Y,"=",VS[0]]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[0,Y,VD[0]]],Dumb[0]);
+ R=integrate(subst(P,VS[0],Y,X,R)*2*Y/C,Y|dumb=Dumb3,var=cons(X,Var));
+ if(R!=[]){
+ R=subst(substblock(R,Y,VS[0],Y^2),Y,VS[0]);
+ if(Dumb==-1) mycat(["->",R]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,R]],Dumb[0]);
+ }
+ return R;
+ }
+ if(T==65||T==66){ /* polynomial including sin, exp etc */
+ for(F=0,VT=Var;VT!=[];VT=cdr(VT)){
+ VTT=car(VT);
+ if(ptype(VTT[2],X)>2||mydeg(VTT[2],X)>1) F=ior(F,256); /* compos. or rat. or nonlin. */
+ K=findin(VTT[1],[cos,sin,tan,exp,log,pow]);
+ F=ior(F,2^(K+1)); /* 1:other,2:cos,4:sin,8:tan,16:exp,32:log,64:pow */
+ if((Deg=mydeg(P,VTT[0]))>1&&K!=4) F=ior(F,1024); /* nonlinear */
+ if(K==5 && (ptype(VTT[3],X)!=0 || VTT[2]!=x||Deg>1)) F=ior(F,8192); /* pow */
+ for(;Deg>0;Deg--){ /* coef */
+ if(ptype(mycoef(P,Deg,VTT[0]),X)>2){
+ if(K==4||K==5) F=ior(F,2048); /* exp, log */
+ else F=ior(F,4096);
+ }
+ }
+ }
+ if(!iand(F,1+8+64+256+512+2048+8192)){ /* cos,sin,exp,log^n,x^c */
+ if(iand(F,1024+4096)&&!iand(F,32+64)){ /* cos,sin,exp */
+ if(type(Dumb)==5){
+ S=trig2exp(P,X|inv=1);
+ if(P!=S) Dumb[0]=cons([[X,S]],Dumb[0]);
+ }
+ R=integrate(trig2exp(P,X),X);
+ if(R!=[]) S=trig2exp(R,X|inv=1);
+ R=fshorter(S,X);
+ if(type(Dumb)==5&&R!=S){
+ Dumb[0]=cons([[1,S]],Dumb[0]);
+ }
+ return R;
+ }
+ for(R=0,VT=Var;VT!=[];VT=cdr(VT)){
+ CV=car(VT);
+ C0=mycoef(CV[2],0,X);C1=mycoef(CV[2],1,X);
+ Q=mycoef(P,1,CV[0]);
+ if(CV[1]==sin||CV[1]==cos){
+ TR=(CV[1]==sin)?intpoly(Q,X|sin=C1):intpoly(Q,X|cos=C1);
+ R+=TR[0]*cos(CV[2])+TR[1]*sin(CV[2]);
+ }else if(CV[1]==exp){
+ QT=exp(CV[2]);
+ for(V2=vars(C1);V2!=[];V2=cdr(V2)){ /* exp(2*log(a)*x) => a^(2*x) */
+ if(vtype(VA=car(V2))==2&&functor(VA)==log){
+ if(ptype(C1,VA)!=2||mydeg(C1,VA)==1&&mycoef(C1,0,VA)==0){
+ QT=args(VA)[0]^(red(C1/VA)*X);
+ if(C0!=0) QT*=exp(C0);
+ break;
+ }
+ }
+ }
+ R+=intpoly(Q,X|exp=C1)*QT;
+ }else if(CV[1]==pow)
+ R+=intpoly(Q,X|pow=CV[2])*x^CV[2];
+ else if(CV[1]==log){
+ for(Deg=mydeg(P,CV[0]);Deg>0; Deg--){
+ Q=mycoef(P,Deg,CV[0]);
+ TR=intpoly(Q,X|log=[C1,C0,Deg]);
+ for(I=0;TR!=[];I++,TR=cdr(TR)){
+ if(I==Deg) R+=car(TR)-subst(car(TR),X,0);
+ else R+=car(TR)*CV[0]^(Deg-I);
+ }
+ }
+ }
+ P=mycoef(P,0,CV[0]);
+ }
+ R+=intpoly(P,X);
+ return R;
+ }
+ }
+ for(K=0,VX=[],VT=Var;VT!=[];VT=cdr(VT)){ /* contain only both pow and trig */
+ VTT=car(VT);
+ if(findin(VTT[1],[cos,sin,tan])>=0){
+ if(ptype(VTT[2],X)!=2||mydeg(VTT[2],X)!=1) break;
+ VX=cons(VTT,VX);
+ }else if(VTT[1]==pow) K=1;
+ else break;
+ }
+ if(VT==[]&&K==1&&VX!=[]){
+ D=VX[0][2];
+ if(VX[0][1]==tan) D*=2;
+ for(VT=cdr(VX);VT!=[];VT=cdr(VT)){
+ K=VT[0][2]/D;
+ if(VT[0][1]==tan) K*=2;
+ if(type(K)!=1||ntype(K)!=0) break;
+ D/=dn(K);
+ }
+ if(VT==[]){
+ Y=makenewv([P,VAR]|var=x);
+ for(Q=P,VT=VX;VT!=[];VT=cdr(VT)){
+ VTT=car(VT);
+ if(VTT[1]==cos||VTT[1]==sin){
+ VV=trig2exp(VTT[0],X|inv=cos(D));
+ VV=subst(VV,cos(D),(1-Y^2)/(1+Y^2),sin(D),2*Y/(Y^2+1));
+ }else if(VTT[1]==tan){
+ VV=trig2exp(VTT[0],X|inv=tan(D/2));
+ VV=subst(VV,tan(D),Y);
+ }
+ Q=subst(Q,VTT[0],VV);
+ }
+ Q*=2/(Y^2+1);
+ if(diff(Q,X)==0){
+ if(Dumb==-1) mycat([Y,"=",tan(D/2)]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[0,Y,tan(D/2)]],Dumb[0]);
+ R=integrate(Q,Y|dumb=Dumb2,var=cons(X,Var));
+ if(R!=[]){
+ if(Dumb==-1) mycat(["->",R]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,R]],Dumb[0]);
+ return sqrt2rat(subst(R,Y,tan(D/2))|mult=1);
+ }
+ }
+ }
+ }
+ if(T>65||iand(F,8)){ /* rational for functions or tan */
+ if(findin(X,vars(P))<0){
+ for(XV=XE=0,VT=Var;VT!=[];VT=cdr(VT)){
+ VTT=car(VT);
+ if(mydeg(VTT[2],X)!=1) break;
+ if(VTT[1]==cos||VTT[1]==sin||VTT[1]==tan){
+ K=red(VTT[2]/X);
+ if(type(K)>1||ntype(K)>0) break;
+ if(XV==0) XV=K;
+ else XV/=dn(K/XV);
+ if(VTT[1]==tan) P=red(subst(P,VTT[0],sin(VTT[2])/cos(VTT[2])));
+ }else if(VTT[1]==exp){
+ K=red(VTT[2]/X);
+ if(type(K)>1||ntype(K)>0) break;
+ if(XE==0) XE=K;
+ else XE/=dn(K/XE);
+ }else break;
+ }
+ if(VT==[]&&XE*XV==0){
+ if(XE){
+ if(XE<0) XE=-XE;
+ Y=makenewv([P,VAR]|var=x);
+ for(F=0,VT=Var;VT!=[];VT=cdr(VT),F++){
+ VTT=car(VT);C=red(VTT[2]/X/XE);
+ P=subst(P,VTT[0],Y^C);
+ if(!F){
+ if(Dumb==-1) mycat([Y^C,"=",VTT[0]]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[0,Y^C,VTT[0]]],Dumb[0]);
+ }
+ }
+ P/=XE*Y;
+ Q=integrate(P,Y|dumb=Dumb3,var=cons(X,VAR));
+ if(Q==[]) return [];
+ Q=subst(Q,Y,exp(XE*X));
+ Q=trig2exp(Q,X);
+ if(Dumb==-1) mycat(["->",Q]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,Q]],Dumb[0]);
+ return Q;
+ }
+ P=trig2exp(nm(P),X|inv=cos(XV*X))/trig2exp(dn(P),X|inv=cos(XV*X));
+ Y=makenewv([P,VAR]|var=x);
+ Q=red(subst(P,sin(XV*X),Y*cos(XV*X)));
+ Q=substblock(nm(Q),cos(XV*X),cos(XV*X)^2,1/(Y^2+1))/
+ (substblock(dn(Q),cos(XV*X),cos(XV*X)^2,1/(Y^2+1))*(Y^2+1));
+ Q=red(Q);
+ if(ptype(Q,X)<2){
+ XV*=2;P=Q;
+ }else{
+ P=subst(P,cos(XV*X),(1-Y^2)/(1+Y^2),sin(XV*X),2*Y/(1+Y^2))*2/K/(1+Y^2);
+ P=red(P);
+ }
+ if(Dumb==-1){
+ mycat([Y,"=",tan(XV*X/2)]);
+ mycat(["integrate",P]);
+ }else if(type(Dumb)==5) Dumb[0]=cons([[Y,P]],cons([[0,Y,tan(XV*X/2)]],Dumb[0]));
+ R=intpoly(P,Y|dumb=Dumb);
+ if(R==[]) return R;
+ if(Dumb==-1) mycat(["->",R]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,R]],Dumb[0]);
+ for(Log=1,K=0,Var=pfargs(RR=R,Y);Var!=[];Var=cdr(Var)){
+ VTT=car(Var);
+ if(VTT[1]==log){
+ C=mycoef(R,1,VTT[0]);
+ VT2=VTT[2];
+ if(K==0){
+ K=C;Log=VT2;
+ if(K<0){
+ K=-K;Log=1/Log;
+ }
+ }else{
+ if((V=red(C/K))<0){
+ VT2=1/VT2;V=-V;
+ }
+ if(type(V)>1||ntype(V)>0){
+ Log=1;break;
+ }
+ if(isint(V)) Log*=VT2^V;
+ else{
+ D=dn(V);K/=D;
+ Log=Log^D*VT2^nm(V);
+ }
+ }
+ RR=mycoef(RR,0,VTT[0]);
+ }
+ }
+ if(Log!=1){
+ R=RR;
+ if(type(Dumb)==5){
+ if(RR) Dumb[0]=cons([[1,K*log(Log),RR]],Dumb[0]);
+ else Dumb[0]=cons([[1,K*log(Log)]],Dumb[0]);
+ }
+ Log=red(subst(red(Log),Y,sin(XV*X/2)/cos(XV*X/2)));
+ Log=fshorter(Log,X|log=1); /* log(cos(2*x)+1)=-2*log(cos(x)) */
+ Nm=fctr(nm(Log));
+ for(T=[];Nm!=[];Nm=cdr(Nm)){
+ if(ptype(car(Nm)[0],X)>1) T=cons(car(Nm),T);
+ }
+ Nm=fctr(dn(Log));
+ for(;Nm!=[];Nm=cdr(Nm)){
+ if(ptype(car(Nm)[0],X)>1) T=cons([car(Nm)[0],-car(Nm)[1]],T);
+ }
+ for(I=0,Nm=T;T!=[];T=cdr(T)){
+ if(I=0) I=abs(car(T)[1]);
+ else I=igcd(I,car(T)[1]);
+ }
+ for(Log=1;Nm!=[];Nm=cdr(Nm)) Log*=car(Nm)[0]^(car(Nm)[1]/I);
+ K*=I;
+ if(cmpsimple(nm(Log),dn(Log))<0){
+ K=-K;Log=red(1/Log);
+ }
+ Log=K*log(Log);
+ if(type(Dumb)==5){
+ if(RR) Dumb[0]=cons([[1,Log,RR]],Dumb[0]);
+ else Dumb[0]=cons([[1,Log]],Dumb[0]);
+ }
+ }else Log=0;
+ for(Atan=0,Var=pfargs(RR=R,Y);Var!=[];Var=cdr(Var)){
+ VTT=car(Var);
+ if(VTT[1]==atan){
+ W=subst(VTT[2],Y,sin(XV*X/2)/cos(XV*X/2));
+ W=trig2exp(W,X|inv=1);
+ V2=funargs(dn(W));
+ if(type(V2)==4&&length(V2)==2){
+ V3=V2[1]*mycoef(R,1,VTT[0]);
+ Z=0;
+ if(V2[0]==cos)
+ Z=red(W*cos(V2[1])/sin(V2[1]));
+ else if(V2[0]==sin){
+ Z=red(W*sin(V2[1])/cos(V2[1]));
+ V3=-V3;
+ }
+ if(Z==1){
+ Atan+=V3;W=0;
+ }else if(Z==-1){
+ Atan-=V3;W=0;
+ }
+ }
+ R0=mycoef(R,0,VTT[0]);
+ if(W!=0) Atan+=subst(R-R0,VTT[0],atan(W)); /* atan(W); */
+ R=R0;
+ }
+ }
+ if(R!=0){
+ R=subst(R,Y,sin(XV*X/2)/cos(XV*X/2));
+ R=red(R);
+ R=trig2exp(nm(R),X|inv=1)/trig2exp(dn(R),X|inv=1);
+ }
+ if(type(Dumb)==5){
+ F=0;WL=[];
+ if(R){
+ WL=cons(R,WL);
+ F++;
+ }
+ if(Atan){
+ WL=cons(Atan,WL);
+ F++;
+ }
+ if(Log){
+ WL=cons(Log,WL);
+ F++;
+ }
+ WL=cons(1,WL);
+ if(F>1) Dumb[0]=cons([WL],Dumb[0]);
+ }
+ R=red(R+Log+Atan);
+ if(Dumb==-1) mycat(["->",R]);
+ else if(type(Dumb)==5) Dumb[0]=cons([[1,R]],Dumb[0]);
+ return fshorter(R,X);
+ }
+ }
+ }
+ VT=pfargs(Q=P,X|level=1);
+ V=(iand(ptype(P,X),7)<3)?[X]:[];
+ for(;VT!=[];VT=cdr(VT))
+ if(ptype(P,car(VT)[0])<3) V=cons(car(VT)[0],V);
+ if(length(V)>0){ /* 1/x+tan(x)+... etc.: sums */
+ for(R=0;V!=[];V=cdr(V)){
+ T=mycoef(Q,0,car(V));
+ W[0]=[];
+ S=integrate(TD=red(Q-T),X|dumb=D2,mult=Mul,exe=1);
+ if(S==[]) continue;
+ if(type(Dumb)==5){
+ WL=0;
+ if(T!=0) WL=[[X,TD,T]];
+ if(R!=0) WL=cons([1,R],WL);
+ if(WL) Dumb[0]=cons(WL,Dumb[0]);
+ TD=W[0];
+ if(R!=0||T!=0){
+ for(W0=[],TD=reverse(TD);TD!=[];TD=cdr(TD)){
+ if(car(TD)[0][0]){
+ WL=(!T)?[]:[[X,T]];
+ WL=append(car(TD),WL);
+ if(R!=0) WL=cons([1,R],WL);
+ }else WL=car(TD);
+ Dumb[0]=cons(WL,Dumb[0]);
+ }
+ }else Dumb[0]=append(TD,Dumb[0]);
+ }
+ R+=S;Q=T;
+ if(!Q) return red(R);
+ }
+ W[0]=[];
+ if(P!=Q&&type(S=integrate(Q,X|dumb=D2,mult=Mul))<4){
+ RR=red(R+S);
+ if(type(Dumb)==5){
+ TD=W[0];
+ for(W0=[],TD=reverse(TD);TD!=[];TD=cdr(TD)){
+ if(car(TD)[0][0]){
+ WL=cons([1,R],car(TD));
+ Dumb[0]=cons(WL,Dumb[0]);
+ }
+ else Dumb[0]=append(TD,Dumb[0]);
+ }
+ if(nmono(R)+nmono(S)!=nmono(RR)) Dumb[0]=cons([[1,R,S]],Dumb[0]);
+ }
+ return RR;
+ }
+ }
+ if(Dumb!=1) mycat(SM);
+ return [];
+}
+
+def fimag(P)
+{
+ for(V=vars(P);V!=[];V=cdr(V)){
+ Q=[];
+ if(vtype(VF=car(V))==2){
+ VAA=args(VF);
+ if(VAA==[]) continue;
+ VA=sqrt2rat(VAA[0]);
+ if(functor(VF)==exp){
+ if(imag(VA)!=0){
+ R=(real(VA)!=0)?exp(real(VA)):1;
+ Q=subst(P,VF,R*(cos(imag(VA))+sin(imag(VA))*@i));
+ }
+ }else if(functor(VF)==pow){
+ VA=sqrt2rat(VAA[1]);
+ if(imag(VA)!=0){
+ R=(real(VA)!=0)?VAA[0]^(real(VA)):1;
+ L=(VAA[0]!=@e)?log(VAA[0]):1;
+ Q=subst(P,VAA[0]^(VAA[1]),R*(cos(L*imag(VA))+sin(L*imag(VA))*@i));
+ }else if(VAA[1]!=(V0=fimag(VA)))
+ Q=subst(P,VAA[0]^(VAA[1]),VAA[0]^(V0));
+ }
+ V0=VA;
+ if(length(VAA)==1&&(VAA[0]!=V0||VA!=(V0=fimag(VA))))
+ Q=subst(P,VF,subst(VF,VAA[0],V0));
+ }
+ if(Q!=[]&&P!=Q){
+ P=Q;V=cons(0,vars(P));
+ }
+ }
+ return P;
+}
+
+
+def trig2exp(P,X)
+{
+ if(iand(ptype(P,X),128)){
+ OL=getopt();
+ Nm=trig2exp(nm(P),X|option_list=OL);
+ Dn=trig2exp(dn(P),X|option_list=OL);
+ R=red(Nm/Dn);
+ if(getopt(arc)==1) return sqrt2rat(R);
+ }
+ if((Inv=getopt(inv))==1||type(Inv)==2){
+ for(VT=T=vars(P);T!=[];T=cdr(T)){
+ if(findin(functor(car(T)),[cos,sin,tan])>=0){
+ P=trig2exp(P,X);VT=vars(P);break;
+ }
+ }
+ for(;VT!=[];VT=cdr(VT)){
+ if(functor(CT=car(VT))==exp){
+ if((Re=real(args(CT)[0]))!=0){
+ if(isint(Re)) S=@e^Re;
+ else S=exp(Re);
+ }else S=1;
+ if((Im=imag(args(CT)[0]))!=0){
+ Q=nm(Im);Q=mycoef(Q,mydeg(Q,X),X);
+ if(-Q>Q) S*=cos(-Im)-@i*sin(-Im);
+ else S*=cos(Im)+@i*sin(Im);
+ }
+ P=subst(P,CT,S);
+ }
+ }
+ P=red(P);
+ U=vars(Inv);
+ if(length(U)!=1||((F=functor(car(U)))!=sin&&F!=cos&&F!=tan)) return P;
+ XX=args(car(U))[0];
+ if(mydeg(XX,X)!=1) return P;
+ if(!isvar(XX)) P=subst(P,X,(X-mycoef(XX,0,X))/mycoef(XX,1,X));
+ for(VT=vars(P);VT!=[];VT=cdr(VT)){
+ if(vtype(CT=car(VT))<2) continue;
+ TX=args(CT)[0];
+ if(mydeg(TX,X)!=1) continue;
+ if(!isint(C1=mycoef(TX,1,X))) continue;
+ if((C0=mycoef(TX,0,X))==0){
+ CC=1;CS=0;
+ }else if(vars(C0)==[@pi]){
+ CC=myval(cos(C0));
+ if(CC!=0&&type(CC)==1&&ntype(CC)!=0){
+ CC=cos(C0);CS=sin(C0);
+ }else CS=myval(sin(C0));
+ }else{
+ CC=cos(C0);CS=sin(C0);
+ }
+ K=C1;
+ if(K<0) K=-K;
+ for(CC1=0,I=K;I>=0;I-=2) CC1+=(-1)^((K-I)/2)*binom(K,I)*cos(X)^I*sin(X)^(K-I);
+ for(CS1=0,I=K-1;I>=0;I-=2) CS1+=(-1)^((K-I-1)/2)*binom(K,I)*cos(X)^I*sin(X)^(K-I);
+ if(C1<0) CS1=-CS1;
+ if((TF=functor(CT))==cos) P=subst(P,cos(TX),CC1*CC-CS1*CS);
+ else if(TF==sin) P=subst(P,sin(TX),CS1*CC+CC1*CS);
+ }
+ if(F==sin)
+ P=substblock(P,cos(X),cos(X)^2,1-sin(X)^2);
+ else{
+ P=substblock(P,sin(X),sin(X)^2,1-cos(X)^2);
+ if(F==tan){
+ P=subst(P,sin(X),cos(X)*tan(X));
+ P=substblock(P,cos(X),cos(X)^2,1/(tan(X)^2+1));
+ }
+ }
+ if(!isvar(XX)) P=subst(P,X,XX);
+
+ if(getopt(arc)==1){
+ for(VT=vars(P);VT!=[];VT=cdr(VT)){
+ FA=funargs(car(VT));
+ if(type(FA)==4&&(FA[0]==cos||FA[0]==sin)&&ptype(FA[1],X)>60){
+ VTT=vars(FA[1]);
+ if(type(FA[1])!=2||length(VTT)!=1) break;
+ FB=funargs(VTT[0]);
+ if(type(FB)!=4||(FF=findin(FB[0],[asin,acos,atan]))<0) break;
+ if(!isint(2*(C=mycoef(FA[1],1,VTT[0])))||mycoef(FA[1],0,VTT[0])!=0) break;
+ if(C==1/2){
+ if(FF==1){
+ U=(FA[0]==cos)?(1+FB[1])/2:(1-FB[1])/2;
+ P=subst(P,car(VT),red(U)^(1/2));
+ }else if(FF==2){
+ if(FA[0]==sin){
+ FB1=red(FB[1]);
+ Nm=nm(FB1);CC=fctr(Nm)[0][0];Dn=dn(FB1);
+ if(CC<0) CC=-CC;
+ Nm/=CC;Dn/=CC;
+ NN=Nm^2+Dn^2;
+ P=subst(P,car(VT),((NN)^(1/2)-Dn)/Nm*cos(FA[1]));
+ }
+ }
+ P=red(P);
+ }else if(C==1){
+ if(FF==1){
+ if(FA[0]==cos) P=subst(P,car(VT),FB[1]);
+ else P=subst(P,car(VT),(1-FB[1])^(1/2));
+ }else if(FF==0){
+ if(FA[0]==sin) P=subst(P,car(VT),FB[1]);
+ else P=subst(P,car(VT),(1-FB[1])^(1/2));
+ }
+ P=red(P);
+ }
+ }
+ }
+ P=sqrt2rat(P);
+ }
+ return red(P);
+ }
+ Var=pfargs(P,X);
+ for(VT=Var;VT!=[];VT=cdr(VT)){
+ CT=car(VT);
+ if(CT[1]==cos)
+ P=subst(P,CT[0],exp(CT[2]*@i)/2+exp(-CT[2]*@i)/2);
+ else if(CT[1]==sin)
+ P=subst(P,CT[0],exp(-CT[2]*@i)*@i/2-exp(CT[2]*@i)*@i/2);
+ else if (CT[1]==tan)
+ P=subst(P,CT[0],(exp(-CT[2]*@i)*@i-exp(CT[2]*@i)*@i)/(exp(CT[2]*@i)+exp(-CT[2]*@i)));
+ else if(CT[1]==pow){
+ if(ptype(CT[2],X)>1) continue;
+ if(CT[2]==@e) P=subst(P,CT[0],exp(CT[3]));
+ else P=subst(P,CT[0],exp(log(CT[2])*exp(CT[3])));
+ }
+ }
+ P=red(P);
+ for(PP=1,Lp=(dn(P)==1)?1:0;Lp<2;Lp++){
+ PP=1/PP;
+ U=(Lp==0)?dn(P):nm(P);
+ if(U==1) continue;
+ Var=vars(U);
+ for(R=[],VT=Var;VT!=[];VT=cdr(VT))
+ if(functor(car(VT))==exp) R=cons(car(VT),R);
+ RR=os_md.terms(U,R);
+ for(Q=0,RRT=RR;RRT!=[];RRT=cdr(RRT)){
+ for(S=0,CT=cdr(car(RRT)),CR=R,UT=U;CR!=[];CR=cdr(CR),CT=cdr(CT)){
+ UT=mycoef(UT,car(CT),car(CR));S+=car(CT)*args(car(CR))[0];
+ }
+ if(S==0) Q+=UT;
+ else Q+=UT*exp(S);
+ }
+ PP*=Q;
+ }
+ return PP;
+}
+
+def powsum(N)
+{
+ if (N < 0) return 0;
+ if (N == 0) return x;
+ P = intpoly(N*powsum(N-1),x);
+ C = subst(P,x,1);
+ return P+(1-C)*x;
+}
+
+def bernoulli(N)
+{
+ return mydiff(powsum(N),x) - N*x^(N-1);
+}
+
+/* linfrac01([x,y]) */
+/* linfrac01(newvect(10,[0,1,2,3,4,5,6,7,8,9]) */
+/* 0:x=0, 1:x=y, 2:x=1, 3:y=0, 4:y=1, 5:x=\infty, 6:y=\infty, 7:x=y=0, 8:x=y=1, 9:x=y=\infty
+ 10:y_2=0, 11:y_2=x, 12:y_2=y, 13: y_2=1, 14: y_2=\infty
+ 15:y_3=0, 16:y_3=x, 17:y_3=y, 18: y_3=y_2, 19: y_3=1, 20:y_3=\infty
+ X[0],X[11],X[2],X[10],X[13],X[5],X[14],X[7],X[8],X[9],
+ X[3],X[1],X[12],X[4],X[6]
+
+ T=0 (x_2,x_1,x_3,x_4,...)
+ T=-j (x_1,x_2,..,x_{j-1},x_{j+1},x_j,x_{j+2},...)
+ T=1 (1-x_1,1-x_2,1-x_3,1-x_4,...)
+ T=2 (1/x_1,1/x_2,1/x_3,1/x_4,...)
+ T=3 (x_1,x_1/x_2,x_1/x_3,x_1/x_4,...)
+*/
+
+def lft01(X,T)
+{
+ MX=getopt();
+ if(type(X)==4){
+ K=length(X);
+ if(K>=1) D=1;
+ }
+ if(type(X)==5){
+ K=length(X);
+ for(J=5, F=K-10; F>0; F-=J++);
+ if(F==0) D=2;
+ }
+ if(D==0) return 0;
+ if(T==0){ /* x <-> y */
+ if(D==1){
+ R=cdr(X); R=cdr(R);
+ R=cons(X[0],R);
+ return cons(X[1],R);
+ }
+ R=newvect(K,[X[3],X[1],X[4],X[0],X[2],X[6],X[5]]);
+ for(I=7;I<K;I++) R[I]=X[I];
+ for(I=11,J=5; I<K; I+=J++){
+ R[I]=X[I+1]; R[I+1]=X[I];
+ }
+ return R;
+ }
+ if(T==1){
+ if(D==1){
+ for(R=[];X!=[];X=cdr(X)) R=cons(1-car(X),R);
+ return reverse(R);
+ }
+ R=newvect(K,[X[2],X[1],X[0],X[4],X[3],X[5],X[6],X[8],X[7],X[9]]);
+ for(I=11;I<K;I++) R[I]=X[I];
+ for(I=10, J=5; I<K; I+=J++){
+ R[I]=X[I+J-2]; R[I+J-2]=X[I];
+ }
+ return R;
+ }
+ if(T==2){
+ if(D==1){
+ for(R=[]; X!=[]; X=cdr(X)) R=cons(red(1/car(X)),R);
+ return reverse(R);
+ }
+ R=newvect(K,[X[5],X[1],X[2],X[6],X[4],X[0],X[3],X[9],X[8],X[7]]);
+ for(I=11;I<K;I++) R[I]=X[I];
+ for(I=10,J=5; I<K; I+=J++){
+ R[I]=X[I+J-1]; R[I+J-1]=X[I];
+ }
+ return R;
+ }
+ if(T==3){
+ if(D==1){
+ T=car(X);
+ for(R=[T],X=cdr(X); X!=[]; X=cdr(X))
+ R=cons(red(T/car(X)),R);
+ return reverse(R);
+ }
+ R=newvect(K,[X[7],X[4],X[2],X[6],X[1],X[9],X[3],X[0],X[8],X[5]]);
+ for(I=10,J=5; I<K; I+=J++){
+ R[I]=X[I+J-1]; R[I+1]=X[I+J-2]; R[I+J-2]=X[I+1]; R[I+J-1]=X[I];
+ }
+ return R;
+ }
+ if(T==-1){
+ if(D==1){
+ return append([X[1],X[2],X[0]],cdr(cdr(cdr(X))));
+ }
+ R=newvect(K,[X[0],X[11],X[2],X[10],X[13],X[5],X[14],X[7],X[8],X[9],
+ X[3],X[1],X[12],X[4],X[6]]);
+ for(I=11;I<K;I++) R[I]=X[I];
+ for(I=17,J=5; I<K; I+=J++){
+ R[I]=X[I+1]; R[I+1]=X[I];
+ }
+ return R;
+ }
+ if(T<0){
+ if(D==1){
+ for(R=[],I=0; X!=[]; X=cdr(X),I--){
+ if(I==T){
+ R=cons(X[1],R);
+ R=cons(X[0],R);
+ X=cdr(X);
+ }
+ else R=cons(car(X),R);
+ }
+ return reverse(R);
+ }
+ T=3-T;
+ R=newvect(K);
+ for(I=0;I<K;I++) R[I]=X[I];
+ for(I=10,J=5;J<T;I+=J++);
+ for(II=0; II<J-2; II++){
+ R[I]=X[I+J]; R[I+J]=R[I];
+ }
+ for( ; II<J; II++){
+ R[I]=X[I+J+1]; R[I+J+1]=X[I];
+ }
+ return R;
+ }
+ return 0;
+}
+
+def linfrac01(X)
+{
+ if(type(X)==4) K=length(X)-2;
+ else if(type(X)==5){
+ L=length(X);
+ for(K=0,I=10,J=5; I<L; K++,I+=J++);
+ if(I!=L) return 0;
+ }
+ if(K>3 && getopt(over)!=1) return(-1);
+ II=(K==-1)?3:4;
+ for(CC=C=1,L=[X]; C!=0; CC+=C){
+ for(F=C,C=0,R=L; F>0; R=cdr(R), F--){
+ P=car(R);
+ for(I=-K; I<II; I++){
+ S=lft01(P,I);
+ if(findin(S,L) < 0){
+ C++; L=cons(S,L);
+ }
+ }
+ }
+ }
+ return L;
+}
+
+
+def varargs(P)
+{
+ if((All=getopt(all))!=1) All=0;
+ V=vars(P);
+ for(Arg=FC=[];V!=[];V=cdr(V)){
+ if(vtype(CV=car(V))==0&&All==1){
+ Arg=lsort([CV],Arg,0);
+ }
+ if(vtype(CV)!=2) continue;
+ if(findin(F=functor(CV),FC)<0) FC=cons(F,FC);
+ for(AT=vars(args(CV));AT!=[];AT=cdr(AT)){
+ if(vtype(X=car(AT))<2){
+ if(findin(X,Arg)<0) Arg=cons(X,Arg);
+ }else if(vtype(X)==2){
+ R=varargs(X);
+ if(R[1]!=[]){
+ Arg=lsort(R[1],Arg,0);
+ FC=lsort(R[0],FC,0);
+ }
+ }
+ }
+ }
+ return [FC,Arg];
+}
+
+def pfargs(P,X)
+{
+ if(type(L=getopt(level))!=1) L=0;
+ for(Var=[],V=vars(P);V!=[];V=cdr(V)){
+ if(vtype(car(V))==2){
+ VT=funargs(car(V));
+ if(length(VT)>1){
+ if(L<2 &&(ptype(VT[1],X)>1 || (length(VT)>2 && ptype(VT[2],X)>1)))
+ Var=cons(cons(car(V),VT),Var);
+ if(L!=1 && (R=pfargs(VT[1],X|level=L-1))!=[]) Var=append(R,Var);
+ }
+ }
+ }
+ return reverse(Var);
+}
+
+def ptype(P,L)
+{
+ if((T=type(P))<2 || T>3) return T;
+ if(type(L)!=4) L=[L];
+ F=0;
+ if(lsort(L,varargs(dn(P))[1],2)!=[]) F=128;
+ if(lsort(L,varargs(nm(P))[1],2)!=[]) F+=64;
+ if(lsort(L,vars(dn(P)),2)!=[]) return F+3;
+ return (lsort(L,vars(nm(P)),2)==[])?(F+1):(F+2);
+}
+
+def nthmodp(X,N,P)
+{
+ X=X%P;
+ for(Z=1;;){
+ if((W=iand(N,1))==1) Z=(Z*X)%P;
+ if((N=(N-W)/2)<=0) return Z;
+ X=irem(X*X,P);
+ }
+}
+
+def issquaremodp(X,P)
+{
+ N=getopt(power);
+ if(!isint(N)) N=2;
+ if(P<=1 || !isint(P) || !pari(ispsp,P) || !isint(X) || !isint(N) || N<1){
+ errno(0);
+ return -2;
+ }
+ M=(P-1)/igcd(N,P-1);
+ if((X%=P) == 0) return 0;
+ if(X==1 || M==P-1) return 1;
+ return (nthmodp(X,M,P)==1)?1:-1;
+}
+
+def iscoef(P,F)
+{
+ if(P==0) return 1;
+ if(type(P)==1) return F(P);
+ if(type(P)==2) {
+ X=var(P);
+ for(I=deg(P,X); I>=0; I--){
+ if(!iscoef(mycoef(P,I,X),F)) return 0;
+ }
+ }else if(type(P)==3){
+ if(!iscoef(nm(P),F)||!iscoef(dn(P),F)) return 0;
+ }else if(type(P)==4){
+ for(;P!=[];P=cdr(P)) if(!iscoef(P,F)) return 0;
+ }else if(type(P)>4 && type(P)<7) return iscoef(m2l(PP),F);
+ else return 0;
+ return 1;
+}
+
+def rootmodp(X,P)
+{
+ X%=P;
+ if(X==0) return [0];
+ N=getopt(power);
+ PP=pari(factor,P);
+ P0=PP[0][0]; P1=PP[0][1];
+ P2=pari(phi,P);
+ if(!isint(N)) N=2;
+ N%=P2;
+ if(P0==2 || size(PP)[0]>1){
+ for(I=1,R=[]; I<P2; I++)
+ if(nthmodp(I,N,P)==X) R=cons(I,R);
+ return qsort(R);
+ }
+ Y=primroot(P);
+ if(Y==0) return 0;
+ Z=nthmodp(Y,N,P);
+ G=igcd(N,P2);
+ P3=P2/G;
+ for(I=0, W=1; I<P3;I++){
+ if(W==X) break;
+ W=(W*Z)%P;
+ }
+ if(I==P3) return [];
+ W=nthmodp(Y,I,P);
+ Z=nthmodp(Y,P3,P);
+ for(I=0,R=[];;){
+ R=cons(W,R);
+ if(++I>=G) break;
+ W=(W*Z)%P;
+ }
+ return qsort(R);
+}
+
+def primroot(P)
+{
+ PP=pari(factor,P);
+ P0=PP[0][0]; P1=PP[0][1];
+ S=size(PP);
+ if(S[0]>1 || !isint(P) || P0<=2){
+ print("Not odd prime(power)!");
+ return 0;
+ }
+ if(isint(Ind=getopt(ind))){
+ Ind %= P;
+ if(Ind<=0 || igcd(Ind,P)!=1 || (Z=primroot(P))==0){
+ print("Not exist!");
+ return 0;
+ }
+ P2=P0^(P1-1)*(P0-1);
+ for(I=1,S=1; I<P2; I++)
+ if((S = (S*Z)%P) == Ind) return I;
+ return 0;
+ }
+ if(getopt(all)==1){
+ I=primroot(P);
+ P2=P0^(P1-1)*(P0-1);
+ for(L=[],J=1; J<P2; J++){
+ if(P1>1 && igcd(P0,J)!=1) continue;
+ if(igcd(P0-1,J)!=1) continue;
+ L=cons(nthmodp(I,J,P),L);
+ }
+ return qsort(L);
+ }
+ if(PP[0][1]>1){
+ I=primroot(P0);
+ P2=P0^(P1-2)*(P0-1);
+ if(nthmodp(I,P2,P)==1) I+=P0;
+ return I;
+ }
+ F=pari(factor,P-1);
+ SF=size(F)[0];
+ for(I=2; I<P; I++){
+ for(J=0; J<SF; J++)
+ if(nthmodp(I,(P-1)/F[J][0],P)==1) break;
+ if(J==SF) return I;
+ }
+}
+
+def rabin(P,X)
+{
+ for(M=0,Q=P-1;iand(Q,1)==0;M++,Q/=2);
+ Z=nthmodp(X,Q,P);
+ for(N=M;M>0&&Z!=1&&Z!=P-1;M--,Z=(Z*Z)%P);
+ return (M<N&&(M==0||Z==1))?0:1;
+}
+
+def powprimroot(P,N)
+{
+ if(P<3) P=3;
+ FE=getopt(exp);
+ if(FE!=1) FE=0;
+ if((Log=getopt(log))==1||Log==2) FE=-1;
+ else if(Log==3){
+ FE=-2;
+ for(PP=1, L0=["$r$","$p/a$"];;){
+ PP=pari(nextprime,PP+1);
+ if(PP>=P) break;
+ L0=cons(PP, L0);
+ }
+ L0=reverse(L0);
+ }
+ if(FE==0) All=getopt(all);
+ for(I=0, PP=P, LL=[]; I<N; I++,PP++){
+ PP=pari(nextprime,PP);
+ if(All==1){
+ PR=primroot(PP|all=1);
+ LL=cons(cons(PP,PR),LL);
+ continue;
+ }
+ PR=primroot(PP);
+ if(FE==-2){ /* log=3 */
+ LT=cdr(L0);LT=cdr(L0);
+ for(L=[PP];LT!=[];LT=cdr(LT))
+ L=cons(primroot(PP|ind=car(LT)),L);
+ LL=cons(reverse(L),LL);
+ if(I<N-1) L0=append(L0,[PP]);
+ }else if(FE){
+ for(J=1, L=[PP], K=1; J<PP; J++){
+ if(FE==-1){ /* log=1,2 */
+ K=primroot(PP|ind=J);
+ if(K==0 && Log==2) K=PP-1;
+ }
+ else K=(K*PR)%PP; /* exp=1 */
+ L=cons(K,L);
+ }
+ LL=cons(reverse(L),LL);
+ }else
+ LL=cons([PP,PR],LL); /* default */
+ }
+ LL=reverse(LL);
+ if(!FE) return LL;
+ PP--;
+ if(FE==-2) return append(LL,[L0]);
+ for(I=1,L=["$p$"];I<PP; I++) L=cons(I,L);
+ return cons(reverse(L),LL);
+}
+
+def ntable(F,II,D)
+{
+ F=f2df(F|opt=-1);
+ Df=getopt(dif);
+ Str=getopt(str);
+ if(Df!=1) Df=0;
+ L=[];
+ if(type(D)==4){
+ if(type(II[0])==4){
+ T1=II[0][1]-II[0][0];T2=II[1][1]-II[1][0];
+ for(L0=[],I=0;I<D[0];I++){
+ for(R=[],J=0;J<D[1];J++)
+ R=cons(myf2eval(F,II[0][0]+I*T1/D[0],II[1][0]+J*T2/D[1]),R);
+ L=cons(reverse(R),L);L0=cons(II[0][0]+I*T1/D[0],L0);
+ }
+ }else{
+ for(T=II[1]-II[0],L0=[],I=0;I<D[0];I++){
+ for(R=[],J=0;J<D[1];J++)
+ R=cons(myfdeval(F,II[0]+I*T/D[0]+J*T/D[0]/D[1]),R);
+ L=cons(reverse(R),L);L0=cons(II[0]+I*T/D[0],L0);
+ }
+ }
+ L=reverse(L);L0=reverse(L0);
+ if(type(Str)==4){
+ L0=mtransbys(os_md.sint,L0,[Str[0]]|str=1,zero=0);
+ L=mtransbys(os_md.sint,L,[Str[1]]|str=1,zero=0);
+ if(Df==1){
+ for(DT=[],RT=L,I=0;RT!=[];){
+ for(LT=[],TT=car(RT);TT!=[];TT=cdr(TT)){
+ VV=car(TT);
+ if((J=str_char(VV,0,"."))>=0){
+ if(J==0) VV=str_cut(VV,1,10000);
+ else VV=str_cut(VV,0,J-1)+str_cut(VV,J+1,10000);
+ }
+ V1=eval_str(VV);
+ if(I++) LT=cons(V1-V0,LT);
+ V0=V1;
+ }
+ DT=cons(LT,DT);
+ if((RT=cdr(RT))==[]){
+ VE=rint(myfdeval(F,II[1])*10^Str[1]);
+ DT=cons([VE-V0],DT);
+ }
+ }
+ for(I=0,D=[],TT=DT;TT!=[];TT=cdr(TT)){
+ if(!I++) V=car(TT)[0];
+ else{
+ T1=reverse(cons(V,car(TT)));
+ V=car(T1);
+ if(length(TT)>1) T1=cdr(T1);
+ D=cons(T1,D);
+ }
+ }
+ for(DD=[],TT=D;TT!=[];TT=cdr(TT))
+ DD=cons([os_md.lmin(car(TT)),os_md.lmax(car(TT))],DD);
+ DD=reverse(DD);
+ L=lsort(L,DD,"append");
+ }
+ }
+ L=lsort(L,L0,"cons");
+ if(type(Top=getopt(top))==4||getopt(TeX)==1){
+ if(type(Top)==4){
+ K=length(L[0])-length(Top);
+ if(K>0&&K<4){
+ if(K>1){
+ Top=append(Top,["",""]);
+ K-=2;
+ }
+ if(K) Top=cons("",Top);
+ }
+ L=cons(Top,L);
+ }
+ if(type(H=getopt(hline))!=4) H=[0,1,z];
+ if(type(V=getopt(vline))!=4) V=[0,1,(DF)?z-2:z];
+ if(type(T=getopt(title))!=7) Out=ltotex(L|opt="tab",hline=H,vline=V);
+ else Out=ltotex(L|opt="tab",hline=H,vline=V,title=T);
+ if(Df) Out=str_subst(Out,"\\hline","\\cline{1-"+rtostr(length(L[0])-2)+"}");
+ return Out;
+ }
+ return L;
+ }
+ for(L=[],I=0;I<=D;I++){
+ X=II[0]+I*T/D;
+ L=cons([X,myfdeval(F,X)],L);
+ }
+ if(Df==1){
+ for(LD=[],LL=L;LL!=[];LL=cdr(LL)){
+ if(LD==[]) LD=cons([car(LL)[0],car(LL)[1],0],LD);
+ else LD=cons([car(LL)[0],car(LL)[1],abs(car(LL)[1]-car(LD)[1])],LD);
+ }
+ L=reverse(LD);
+ }
+ if(type(Str)==4){
+ if(length(Str)==1) Str=[Str[0],Str[0]];
+ if(Df==1 && length(Str)==2) Str=[Str[0],Str[1],Str[1]];
+ for(S=Str,Str=[];S!=[];S=cdr(S)){
+ if(type(car(S))!=4) Str=cons([car(S),3],Str);
+ else Str=cons(car(S),Str);
+ }
+ Str=reverse(Str);
+ for(LD=[],LL=L;LL!=[];LL=cdr(LL)){
+ for(K=[],J=length(Str); --J>=0; )
+ K=cons(sint(car(LL)[J],Str[J][0]|str=Str[J][1]),K);
+ LD=cons(K,LD);
+ }
+ L=LD;
+ }else
+ L=reverse(L);
+ if(type(M=getopt(mult))==1){
+ Opt=[["opt","tab"],["vline",[[0,2+Df]]],["width",-M]];
+ if(type(T=getopt(title))==7)
+ Opt=cons(["title",T],Opt);
+ if(type(Tp=getopt(top))==4)
+ Opt=cons(["top",Tp],Opt);
+ L=ltotex(L|option_list=Opt);
+ }
+ return L;
+}
+
+def distpoint(L)
+{
+ L=m2l(L|flat=1);
+ if(getopt(div)==5) Div=5;
+ else Div=10;
+ V=newvect(100/Div);
+ for(LT=L,LL=[],N=0; LT!=[]; LT=cdr(LT)){
+ if(type(K=car(LT))>1||K<0){
+ N++; continue;
+ }
+ LL=cons(K,LL);
+ T=idiv(K,Div);
+ if(Div==10 && T>=9) T=9;
+ else if(Div==5 && T>=19) T=19;
+ V[T]++;
+ }
+ V=vtol(V);
+ if((Opt=getopt(opt))=="data") return V;
+ Title=getopt(title);
+ OpList=[["opt","tab"]];
+ if(type(Title=getopt(title)) == 7)
+ OpList=cons(["title",Title],OpList);
+ if(Opt=="average"){
+ T=isMs()?["•½‹Ï“_","•W€•Î·","Å’á“_","Å‚“_","ŽóŒ±l”"]:
+ ["average","deviation","min","max","examinees"];
+ L=average(LL);
+ L=[sint(L[0],1),sint(L[1],1),L[3],L[4],L[2]];
+ if(N>0){
+ T=append(T,[isMs()?"Œ‡ÈŽÒ":"absentees"]);L=append(L,[N]);
+ }
+ OpList=cons(["align","c"],OpList);
+ return ltotex([T,L]|option_list=OpList);
+ }
+
+ if(getopt(opt)=="graph"){
+ Mul=getopt(size);
+ if(Div==5){
+ V0=["00","05","10","15","20","25","30","35","40","45","50","55",
+ "60","65","70","75","80","85","90","95"];
+ if(type(Mul)!=4){
+ Size = (TikZ)?[12,3,1/2,0.2]:[120,30,1/2,2];
+ }
+ }else{
+ V0=["00-","10-","20-","30-","40-","50-","60-","70-","80-","90-"];
+ if(type(Mul)!=4){
+ Size = (TikZ)?[8,3,1/2,0.2]:[80,30,1/2,2];
+ }
+ }
+ return ltotex([V,V0]|opt="graph",size=Size);
+ }
+ if(Div==5)
+ V0=["00--04","05--09","10--14","15--19", "20--24", "25--29", "30--34", "35-39",
+ "40--44", "45--49","50--54", "55--59","60--64", "65--69",
+ "70--74", "75--79","80--84", "85--89","90--94", "95--100"];
+ else
+ V0=["00--09","10--19","20--29","30--39","40--49","50--59","60--69",
+ "70--79","80--89","90--100"];
+ Title=getopt(title);
+ return ltotex([V0,V]|option_list=OpList);
+}
+
+def keyin(S)
+{
+ print(S,2);
+ purge_stdin();
+ S=get_line();
+ L=length(S=strtoascii(S));
+ if(L==0) return "";
+ return str_cut(S,0,L-2);
+}
+
+def init() {
+ LS=["DIROUT","DVIOUTA","DVIOUTB","DVIOUTH","DVIOUTL","TeXLim","TeXEq","TikZ",
+ "XYPrec","XYcm","Canvas"];
+ if(!access(get_rootdir()+"/help/os_muldif.dvi")||!access(get_rootdir()+"/help/os_muldif.pdf"))
+ mycat(["Put os_muldif.dvi and os_muldif.pdf in", get_rootdir()+(isMs()?"\\help.":"/help.")]);
+ if(!isMs()){
+ DIROUT="%HOME%/asir/tex";
+ DVIOUTA=str_subst(DVIOUTA,[["\\","/"],[".bat",".sh"]],0);
+ DVIOUTB=str_subst(DVIOUTB,[["\\","/"],[".bat",".sh"]],0);
+ DVIOUTL=str_subst(DVIOUTL,[["\\","/"],[".bat",".sh"]],0);
+ DVIOUTH="%ASIRROOT%/help/os_muldif.pdf";
+ }
+ Home=getenv("HOME");
+ if(type(Home)!=7) Home="";
+ for(Id=-7, F=Home; Id<-1;){
+ G = F+"/.muldif";
+ if(access(G)) Id = open_file(G);
+ else Id++;
+ if(Id==-6) F+="/asir";
+ else if(Id==-5) F=get_rootdir();
+ else if(Id==-4) F+="/bin";
+ else if(Id==-3) F=get_rootdir()+"/lib-asir-contrib";
+ }
+ if(Id>=0){
+ while((S=get_line(Id))!=0){
+ if(type(P=str_str(S,LS))==4 && (P0=str_char(S,P[1]+5,"="))>0){
+ if(P[0]<5){
+ P0=str_chr(S,P0+1,"\"");
+ if(P0>0){
+ for(P1=P0;(P2=str_char(S,P1+1,"\""))>0; P1=P2);
+ if(P1>P0+1){
+ SS=str_cut(S,P0+1,P1-1);
+ SS=str_subst(SS,["\\\\","\\\""],["\\","\""]);
+ if(P[0]==0) DIROUT=SS;
+ else if(P[0]==1) DVIOUTA=SS;
+ else if(P[0]==2) DVIOUTB=SS;
+ else if(P[0]==3) DVIOUTH=SS;
+ else if(P[0]==4) DVIOUTL=SS;
+ }
+ }
+ if(P0<0 || P1<P0+2) mycat(["Error! Definiton of", LS[P[0]],
+ "in .muldif"]);
+ }else{
+ SV=eval_str(str_cut(S,P0+1,str_len(S)-1));
+ if(P[0]==5) TeXLim=SV;
+ else if(P[0]==6) TeXEq=SV;
+ else if(P[0]==7) TikZ=SV;
+ else if(P[0]==8) XYPrec=SV;
+ else if(P[0]==9) XYcm=SV;
+ else if(P[0]==10) XYcm=Canvas;
+ }
+ }
+ }
+ close_file(Id);
+ }
+ chkfun(1,0);
+}
+
+#ifdef USEMODULE
+endmodule;
+os_md.init()$
+#else
+init()$
+#endif
+
+end$
diff --git a/texmf-dist/scripts/ketpic/ketlibC/ketcommon.h b/texmf-dist/scripts/ketpic/ketlibC/ketcommon.h
new file mode 100644
index 00000000..bfcbbf23
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlibC/ketcommon.h
@@ -0,0 +1,1559 @@
+int length2(double gdata[][2]);
+int length3(double gdata[][3]);
+int length4(double gdata[][4]);
+int length5(double gdata[][5]);
+int length2i(int gdata[][2]);
+void copyd(int from, int upto, double q[], double p[]);
+void copyi(int from, int upto, int q[], int p[]);
+int addptd2(double gdata[][2], double pt[2]);
+int addptd3(double gdata[][3], double pt[3]);
+int addptd4(double gdata[][4], double pt[4]);
+int addptd5(double gdata[][5], double pt[5]);
+int add2(double gdata[][2], double x, double y);
+int add3(double gdata[][3], double x, double y, double z);
+int push2(double x, double y, double ptL[][2]);
+int push3(double x, double y, double z, double ptL[][3]);
+int push4(double x, double y, double z, double w, double ptL[][4]);
+int push5(double x, double y, double z, double w, double u, double ptL[][5]);
+void pull2(int num, double ptL[][2],double pt[2]);
+void pull3(int num, double ptL[][3],double pt[3]);
+void pull4(int num, double ptL[][4],double pt[4]);
+void pull5(int num, double ptL[][5],double pt[5]);
+int appendd2(int level, int from,int upto, double gdata[][2],double mat[][2]);
+int appendd3(int level, int from,int upto, double gdata[][3],double mat[][3]);
+int prependd2(int from,int upto, double gdata[][2],double mat[][2]);
+int appendd1(double numvec[], double num);
+int appendi1(int numvec[],int num);
+int prependi1(int num, int numvec[]);
+int removei2(int nrmv,int mat[][2]);
+int dataindexi1(int out[],int din[][2]);
+int dataindexd1(double out[],int din[][2]);
+int dataindexd2(int level,double out[][2],int din[][2]);
+int dataindexd3(int level, double out[][3],int din[][2]);
+int dataindexd4(int level, double out[][4],int din[][2]);
+void dispmatd1(int from, int upto, double mat[]);
+void dispmatd2(int from, int upto, double mat[][2]);
+void dispmatd3(int from, int upto, double mat[][3]);
+void dispmatd4(int from, int upto, double mat[][4]);
+void dispmatd5(int from, int upto, double mat[][5]);
+void dispmatd6(int from, int upto, double mat[][6]);
+void dispmati2(int from, int upto, int mat[][2]);
+void dispmati1(int from, int upto, int mat[]);
+int readdata3(const char *fname, double out[][3]);
+int readdata2(const char *fname, double out[][2]);
+int output2(const char *var, const char *fname, int level, double out[][2]);
+void simplesort(double number[]);
+int memberi(int a, int list[]);
+double dotprod(int dim, double p[], double q[]);
+double dist(int dim, double p[], double q[]);
+void pointoncurve(double t, double gdata[][2], double eps, double pt[]);
+int partcrv(double a,double b,double pkL[][2], double pL[][2]);
+int partcrv3(double a,double b,double pkL[][3], double pL[][3]);
+int connectseg(double pdata[][2], double eps, double out[][2]);
+void koutenseg(double a[2], double b[2], double c[2], double d[2],
+ double eps, double eps2, double out[4]);
+double paramoncurve(double p[2], int n, double ptL[][2]);
+void nearestptpt(double pa[2], double pL[][2], double ans[4]);
+int intersectselfPp(double data1[][2],double eps,double eps1s,double kL[][4]);
+int intersectcrvsPp(double data1[][2], double data2[][2],
+ double eps,double eps1s, double kL[][4]);
+int dropnumlistcrv(double qd[][2], double eps1, int out[]);
+int increasept2(double ptL[][2], int nn, double out[][2]);
+int increasept3(double ptL[][3], int nn, double out[][3]);
+void bezierpt(double t, double p0[2], double p3[2],
+ double p1[2], double p2[2], double ptout[2]);
+int bezier(double ptL[][2], double ctrL[][4], int num, double out[][2]);
+int ospline(int level, double ptL[][2], int num, double out[][2]);
+void bezierpt3(double t, double p0[3], double p3[3],
+ double p1[3], double p2[3], double ptout[3]);
+int bezier3(double ptL[][3], double ctrL[][6], int num, double out[][3]);
+int ospline3(int level, double ptL[][3], int num, double out[][3]);
+
+const double Inf=99999;
+const int Infint=30000;
+
+int length2(double gdata[][2]){
+ return floor(gdata[0][0]+0.5);
+}
+
+int length3(double gdata[][3]){
+ return floor(gdata[0][0]+0.5);
+}
+
+int length4(double gdata[][4]){
+ return floor(gdata[0][0]+0.5);
+}
+
+int length5(double gdata[][5]){
+ return floor(gdata[0][0]+0.5);
+}
+
+int length2i(int gdata[][2]){
+ return gdata[0][0];
+}
+
+void copyd(int from, int upto, double q[], double p[]){
+ int i;
+ for(i=from; i<=upto; i++){
+ p[i]=q[i];
+ }
+}
+
+void copyi(int from, int upto, int q[], int p[]){
+ int i;
+ for(i=from; i<=upto; i++){
+ p[i]=q[i];
+ }
+}
+
+int push2(double x, double y, double ptL[][2]){
+ int nall=length2(ptL);
+ nall++;
+ ptL[nall][0]=x; ptL[nall][1]=y;
+ ptL[0][0]=nall;
+ return nall;
+}
+
+int push3(double x, double y, double z, double ptL[][3]){
+ int nall=length3(ptL);
+ nall++;
+ ptL[nall][0]=x; ptL[nall][1]=y; ptL[nall][2]=z;
+ ptL[0][0]=nall;
+ return nall;
+}
+
+int push4(double x, double y, double z, double w, double ptL[][4]){
+ int nall=length4(ptL);
+ nall++;
+ ptL[nall][0]=x; ptL[nall][1]=y;
+ ptL[nall][2]=z; ptL[nall][3]=w;
+ ptL[0][0]=nall;
+ return nall;
+}
+
+int push5(double x, double y, double z, double w, double u, double ptL[][5]){
+ int nall=length5(ptL);
+ nall++;
+ ptL[nall][0]=x; ptL[nall][1]=y;
+ ptL[nall][2]=z; ptL[nall][3]=w; ptL[nall][4]=u;
+ ptL[0][0]=nall;
+ return nall;
+}
+
+void pull3(int num, double ptL[][3],double pt[3]){
+ pt[0]=ptL[num][0]; pt[1]=ptL[num][1]; pt[2]=ptL[num][2];
+}
+
+void pull2(int num, double ptL[][2],double pt[2]){
+ pt[0]=ptL[num][0]; pt[1]=ptL[num][1];
+}
+
+void pull4(int num, double ptL[][4],double pt[4]){
+ pt[0]=ptL[num][0]; pt[1]=ptL[num][1];
+ pt[2]=ptL[num][2]; pt[3]=ptL[num][3];
+}
+
+void pull5(int num, double ptL[][5],double pt[5]){
+ pt[0]=ptL[num][0]; pt[1]=ptL[num][1];
+ pt[2]=ptL[num][2]; pt[3]=ptL[num][3]; pt[4]=ptL[num][4];
+}
+
+int add2(double gdata[][2], double x, double y){
+ int nall;
+ nall=push2(x, y, gdata);
+ return nall;
+}
+
+int add3(double gdata[][3], double x, double y, double z){
+ int nall;
+ nall=push3(x, y, z,gdata);
+ return nall;
+}
+
+int addptd3(double gdata[][3], double pt[3]){
+ int nall;
+ nall=push3(pt[0],pt[1],pt[2],gdata);
+ return nall;
+}
+
+int addptd2(double gdata[][2], double pt[2]){
+ int nall;
+ nall=push2(pt[0],pt[1],gdata);
+ return nall;
+}
+
+int addptd4(double gdata[][4], double pt[4]){
+ int nall;
+ nall=push4(pt[0],pt[1],pt[2],pt[3],gdata);
+ return nall;
+}
+
+int addptd5(double gdata[][5], double pt[5]){
+ int nall;
+ nall=push5(pt[0],pt[1],pt[2],pt[3],pt[4],gdata);
+ return nall;
+}
+
+int appendd2(int level, int from,int upto, double gdata[][2],double mat[][2]){
+ int j, np, nall=length2(mat);
+ np=upto-from+1;
+ if(np<0){np=0;}
+ if(np>0){
+ if(level>0){
+ if(nall>0){
+ nall=add2(mat,Inf, level);
+ }
+ }
+ for(j=1; j<=np; j++){
+ mat[nall+j][0]=gdata[from+j-1][0];
+ mat[nall+j][1]=gdata[from+j-1][1];
+ }
+ }
+ mat[0][0]=nall+np;
+ return nall+np;
+}
+
+int appendd3(int level, int from,int upto, double gdata[][3],double mat[][3]){
+ int j, np, nall=length3(mat);
+ np=upto-from+1;
+ if(np<0){np=0;}
+ if(np>0){
+ if(level>0){
+ if(nall>0){
+ nall=add3(mat,Inf, level, 0);
+ }
+ }
+ for(j=1; j<=np; j++){
+ mat[nall+j][0]=gdata[from+j-1][0];
+ mat[nall+j][1]=gdata[from+j-1][1];
+ mat[nall+j][2]=gdata[from+j-1][2];
+ }
+ }
+ mat[0][0]=nall+np;
+ return nall+np;
+}
+
+int prependd2(int from,int upto, double gdata[][2],double mat[][2]){
+ int j,np, nall=length2(mat);
+ if(from<=upto){
+ np=upto-from+1;
+ for(j=nall; j>=1; j--){
+ mat[np+j][0]=mat[j][0];
+ mat[np+j][1]=mat[j][1];
+ }
+ for(j=1; j<=np; j++){
+ mat[j][0]=gdata[from+j-1][0];
+ mat[j][1]=gdata[from+j-1][1];
+ }
+ }else{
+ np=from-upto+1;
+ for(j=nall; j>=1; j--){
+ mat[np+j][0]=mat[j][0];
+ mat[np+j][1]=mat[j][1];
+ }
+ for(j=1; j<=np; j++){
+ mat[nall+j][0]=gdata[from-j+1][0];
+ mat[nall+j][1]=gdata[from-j+1][1];
+ }
+ }
+ mat[0][0]=nall+np;
+ return nall+np;
+}
+
+int appendd1(double numvec[], double num){
+ int n;
+ n=floor(numvec[0]+0.5);
+ numvec[n+1]=num;
+ numvec[0]=n+1;
+ return n+1;
+}
+
+int appendi1(int numvec[],int num){
+ int n;
+ n=numvec[0];
+ numvec[n+1]=num;
+ numvec[0]=n+1;
+ return n+1;
+}
+
+int prependi1(int num, int numvec[]){
+ int i,n;
+ n=numvec[0];
+ for(i=n; i>=1; i--){
+ numvec[i+1]=numvec[i];
+ }
+ numvec[1]=num;
+ numvec[0]=n+1;
+ return n+1;
+}
+
+int removei2(int nrmv,int mat[][2]){
+ int j,nall=mat[0][0];
+ if(nall>0){
+ for(j=nrmv; j<=nall-1; j++){
+ mat[j][0]=mat[j+1][0];
+ mat[j][1]=mat[j+1][1];
+ }
+ mat[0][0]=nall-1;
+ return nall-1;
+ }
+ else{
+ mat[0][0]=0;
+ return 0;
+ }
+}
+
+int dataindexd1(double out[],int din[][2]){
+ int n1=1, j, ctr=0, nall=floor(out[0]+0.5);
+ if(nall==0){
+ din[0][0]=0;
+ return 0;
+ }
+ for(j=1; j<=nall; j++){
+ if(out[j]>Inf-1){
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=j-1;
+ n1=j+1;
+ }
+ }
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=nall;
+ din[0][0]=ctr;
+ return ctr;
+}
+
+int dataindexd2(int level,double out[][2],int din[][2]){
+ int n1=1, j, ctr=0, nall=length2(out);
+ if(nall==0){
+ din[0][0]=0;
+ return 0;
+ }
+ for(j=1; j<=nall; j++){
+ if(out[j][0]>Inf-1){
+ if((level==0) || (out[j][1]==level)){
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=j-1;
+ n1=j+1;
+ }
+ }
+ }
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=nall;
+ din[0][0]=ctr;
+ return ctr;
+}
+
+int dataindexd3(int level, double out[][3],int din[][2]){
+ int n1=1, j, ctr=0, nall=length3(out);
+ if(nall==0){
+ din[0][0]=0;
+ return 0;
+ }
+ for(j=1; j<=nall; j++){
+ if(out[j][0]>Inf-1){
+ if((level==0) || (out[j][1]==level)){
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=j-1;
+ n1=j+1;
+ }
+ }
+ }
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=nall;
+ din[0][0]=ctr;
+ return ctr;
+}
+
+int dataindexd4(int level, double out[][4],int din[][2]){
+ int n1=1, j, ctr=0, nall=length4(out);
+ if(nall==0){
+ din[0][0]=0;
+ return 0;
+ }
+ for(j=1; j<=nall; j++){
+ if(out[j][0]>Inf-1){
+ if((level==0) || (out[j][1]==level)){
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=j-1;
+ n1=j+1;
+ }
+ }
+ }
+ ctr++;
+ din[ctr][0]=n1;
+ din[ctr][1]=nall;
+ din[0][0]=ctr;
+ return ctr;
+}
+
+int dataindexi1(int out[],int din[][2]){
+ int n1=1, j, ctr=0, nall=out[0], ninfp=0;
+ if(nall==0){
+ din[0][0]=0; din[0][1]=-1;
+ return 0;
+ }
+ for(j=1; j<=nall; j++){
+ if(out[j]==Infint){
+ ctr++;
+ if(j==ninfp+1){
+ din[ctr][0]=0; din[ctr][1]=-1;
+ }
+ else{
+ din[ctr][0]=n1; din[ctr][1]=j-1;
+ }
+ ninfp=j;
+ n1=j+1;
+ }
+ }
+ ctr++;
+ if(out[nall]==Infint){
+ din[ctr][0]=0; din[ctr][1]=0;
+ }
+ else{
+ din[ctr][0]=n1; din[ctr][1]=nall;
+ }
+ din[0][0]=ctr;
+ return ctr;
+}
+
+void dispmatd1(int from, int upto, double mat[]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%d %7.5f\n",i,mat[i]);
+ }
+}
+
+void dispmatd2(int from, int upto, double mat[][2]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %7.5f %7.5f\n",i,mat[i][0],mat[i][1]);
+ }
+}
+
+void dispmatd3(int from, int upto, double mat[][3]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %7.5f %7.5f %7.5f\n",i,mat[i][0],mat[i][1],mat[i][2]);
+ }
+}
+
+void dispmatd4(int from, int upto, double mat[][4]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %7.5f %7.5f ",i,mat[i][0],mat[i][1]);
+ printf("%7.5f %7.5f\n",mat[i][2],mat[i][3]);
+ }
+}
+
+void dispmatd5(int from, int upto, double mat[][5]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %7.5f %7.5f ",i,mat[i][0],mat[i][1]);
+ printf("%7.5f %7.5f %7.5f\n",mat[i][2],mat[i][3],mat[i][4]);
+ }
+}
+
+void dispmatd6(int from, int upto, double mat[][6]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %7.5f %7.5f %7.5f ",i,mat[i][0],mat[i][1],mat[i][2]);
+ printf("%7.5f %7.5f %7.5f\n",mat[i][3],mat[i][4],mat[i][5]);
+ }
+}
+
+void dispmati2(int from, int upto, int mat[][2]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %d %d\n",i,mat[i][0],mat[i][1]);
+ }
+}
+
+void dispmati1(int from, int upto, int mat[]){
+ int i;
+ for(i=from; i<upto+1; i++){
+ printf("%3d %d\n",i,mat[i]);
+ }
+}
+
+int readdata3(const char *fname, double out[][3]){
+ double data[DsizeL][4];
+ int i, j, ndata, nall;
+ FILE *fp;
+ fp=fopen(fname,"r");
+ if(fp==NULL){
+ printf("file not found\n");
+ return 0;
+ }
+ ndata=0;
+ i=1;
+ while( ! feof(fp) && i<DsizeL){
+ for(j=0;j<=3;j++){
+ fscanf(fp,"%lf",&data[i][j]);
+ }
+ i++;
+ ndata++;
+ }
+ ndata--;
+ fclose(fp);
+ out[0][0]=0; nall=0;
+ for(i=1; i<=ndata; i++){
+ nall=add3(out, data[i][1], data[i][2], data[i][3]);
+ }
+ return nall;
+}
+
+int output2(const char *var, const char *fname, int level, double out[][2]){
+ int nall=length2(out), ndin, din[DsizeM][2],i,j;
+ double tmpd[2];
+ FILE *fp;
+ fp=fopen(fname,"w");
+ if (fp == NULL) {
+ printf("cannot open\n");
+ return -1;
+ }
+ ndin=dataindexd2(level, out,din);
+ fprintf(fp,"%s//\n",var);
+ for(i=1; i<=ndin; i++){
+ fprintf(fp,"start//\n");
+ fprintf(fp,"[");
+ for(j=din[i][0]; j<=din[i][1]; j++){
+ pull2(j,out,tmpd);
+ fprintf(fp,"[ %7.5f, %7.5f]",tmpd[0],tmpd[1]);
+ if(j<din[i][1]){
+ fprintf(fp,",");
+ }
+ }
+ fprintf(fp,"]//\n");
+ if(i<ndin){
+ fprintf(fp,"end//\n");
+ }
+ else{
+ fprintf(fp,"end////\n");
+ }
+ }
+ fclose(fp);
+ return 0;
+}
+
+int readdata2(const char *fname, double out[][2]){
+ double data[DsizeL][3];
+ int i, j, ndata, nall;
+ FILE *fp;
+ fp=fopen(fname,"r");
+ if(fp==NULL){
+ printf("file not found\n");
+ return 0;
+ }
+ ndata=0;
+ i=1;
+ while( ! feof(fp) && i<DsizeL){
+ for(j=0;j<=2;j++){
+ fscanf(fp,"%lf",&data[i][j]);
+ }
+ i++;
+ ndata++;
+ }
+ ndata--;
+ fclose(fp);
+ out[0][0]=0; nall=0;
+ for(i=1; i<=ndata; i++){
+ nall=add2(out, data[i][1], data[i][2]);
+ }
+ return nall;
+}
+
+void simplesort(double number[]){
+ int i,j, total=number[0];
+ double tmp;
+ for (i=1; i<=total; i++) {
+ for (j=i+1; j<=total; j++) {
+ if (number[i] > number[j]) {
+ tmp = number[i];
+ number[i] = number[j];
+ number[j] = tmp;
+ }
+ }
+ }
+}
+
+int memberi(int a, int list[]){
+ int i, n=list[0];
+ for(i=1; i<=n; i++){
+ if(a==list[i]){
+ return 1;
+ }
+ }
+ return 0;
+}
+
+double dotprod(int dim, double p[], double q[]){
+ double ans;
+ ans=p[0]*q[0]+p[1]*q[1];
+ if(dim>2){
+ ans=ans+p[2]*q[2];
+ }
+ return ans;
+}
+
+double dist(int dim, double p[], double q[]){
+ double tmp;
+ tmp=pow(q[0]-p[0],2)+pow(q[1]-p[1],2);
+ if(dim>2){
+ tmp=tmp+pow(q[2]-p[2],2);
+ }
+ return sqrt(tmp);
+}
+
+void pointoncurve(double t, double gdata[][2], double eps, double pt[]){
+ double pa[2],pb[2], s;
+ int n, nall;
+ n=floor(t+eps);
+ s=fmax(t-n,0);
+ nall=length2(gdata);
+ if(n>=nall){
+ pull2(nall,gdata,pt);
+// pt[0]=gdata[nall][0]; pt[1]=gdata[nall][1];
+ }
+ else{
+ pull2(n,gdata,pa);
+ pull2(n+1,gdata,pb);
+ pt[0]=(1-s)*pa[0]+s*pb[0];
+ pt[1]=(1-s)*pa[1]+s*pb[1];
+ }
+}
+
+int partcrv(double a,double b,double pkL[][2], double pL[][2]){
+ int i, is, ie, nall;
+ double eps=pow(10,-3.2);
+ is=ceil(a);
+ ie=floor(b);
+ nall=0;
+ if(a<is-eps){
+ nall++;
+ pL[nall][0]=(is-a)*pkL[is-1][0]+(1-is+a)*pkL[is][0];
+ pL[nall][1]=(is-a)*pkL[is-1][1]+(1-is+a)*pkL[is][1];
+ }
+ for(i=is; i<=ie; i++){
+ nall++;
+ pL[nall][0]=pkL[i][0];
+ pL[nall][1]=pkL[i][1];
+ }
+ if(b>ie+eps){
+ nall++;
+ pL[nall][0]=(1-b+ie)*pkL[ie][0]+(b-ie)*pkL[ie+1][0];
+ pL[nall][1]=(1-b+ie)*pkL[ie][1]+(b-ie)*pkL[ie+1][1];
+ }
+ pL[0][0]=nall;
+ return nall;
+}
+
+int partcrv3(double a,double b,double pkL[][3], double pL[][3]){
+ int i, is, ie, nall;
+ double eps=pow(10,-3.2);
+ is=ceil(a);
+ ie=floor(b);
+ nall=0;
+ if(a<is-eps){
+ nall++;
+ pL[nall][0]=(is-a)*pkL[is-1][0]+(1-is+a)*pkL[is][0];
+ pL[nall][1]=(is-a)*pkL[is-1][1]+(1-is+a)*pkL[is][1];
+ pL[nall][2]=(is-a)*pkL[is-1][2]+(1-is+a)*pkL[is][2];
+ }
+ for(i=is; i<=ie; i++){
+ nall++;
+ pL[nall][0]=pkL[i][0];
+ pL[nall][1]=pkL[i][1];
+ pL[nall][2]=pkL[i][2];
+ }
+ if(b>ie+eps){
+ nall++;
+ pL[nall][0]=(1-b+ie)*pkL[ie][0]+(b-ie)*pkL[ie+1][0];
+ pL[nall][1]=(1-b+ie)*pkL[ie][1]+(b-ie)*pkL[ie+1][1];
+ pL[nall][2]=(1-b+ie)*pkL[ie][2]+(b-ie)*pkL[ie+1][2];
+ }
+ pL[0][0]=nall;
+ return nall;
+}
+
+int connectseg(double pdata[][2], double eps, double out[][2]){
+ int din[DsizeM][2], nd, nq, i, j, flg, st, en, ntmp;
+ int nall=length2(pdata), nout=0;
+ double qd[DsizeM][2], ah[2], ao[2], p[2], q[2], tmp[2];
+ out[0][0]=0;
+ nd=dataindexd2(0,pdata,din);
+ qd[0][0]=0;
+ nq=appendd2(0,din[1][0],din[1][1],pdata,qd);
+ nd=removei2(1,din);
+ while(nd>0){
+ pull2(1,qd,ah);
+ pull2(nq,qd,ao);
+ flg=0;
+ for(j=1; j<=nd; j++){
+ st=din[j][0];
+ en=din[j][1];
+ pull2(st,pdata,p);
+ pull2(en,pdata,q);
+ if(dist(2,p,ao)<eps){
+ nq=appendd2(0,st+1,en,pdata,qd);
+ nd=removei2(j,din);
+ flg=1;
+ break;
+ }
+ if(dist(2,q,ao)<eps){
+ nq=appendd2(0,en-1,st,pdata,qd);
+ nd=removei2(j,din);
+ flg=1;
+ break;
+ }
+ if(dist(2,p,ah)<eps){
+ nq=prependd2(en,st+1,pdata,qd);
+ nd=removei2(j,din);
+ flg=1;
+ break;
+ }
+ if(dist(2,q,ah)<eps){
+ nq=prependd2(st,en-1,pdata,qd);
+ nd=removei2(j,din);
+ flg=1;
+ break;
+ }
+ }
+ if(flg==0){
+ nout=appendd2(2,1,nq,qd,out);
+ qd[0][0]=0;
+ nq=appendd2(0,din[1][0],din[1][1],pdata,qd);
+ nd=removei2(1,din);
+ }
+ }
+ if(nq>0){
+ nout=appendd2(2,1,nq,qd,out);
+ }
+ return nout;
+}
+
+void koutenseg(double a[2], double b[2], double c[2], double d[2],
+ double eps, double eps2, double out[4]){
+ double v[2], epss,eps0=Eps, sv2, p1, p2, q1,q2,m1, m2, M1, M2, t;
+ double tmp1d2[2], tmp2d1, p[2], q[2];
+ v[0]=b[0]-a[0]; v[1]=b[1]-a[1];
+ sv2=pow(v[0],2.0)+pow(v[1],2.0);
+ if(sv2<pow(10,-6.0)){
+ out[0]=Inf;
+ return;
+ }
+ p[0]=c[0]-a[0]; p[1]=c[1]-a[1];
+ q[0]=d[0]-a[0]; q[1]=d[1]-a[1];
+ epss=fmin(eps2, eps/sqrt(sv2));
+ p1=(p[0]*v[0]+p[1]*v[1])/sv2;
+ p2=(-p[0]*v[1]+p[1]*v[0])/sv2;
+ q1=(q[0]*v[0]+q[1]*v[1])/sv2;
+ q2=(-q[0]*v[1]+q[1]*v[0])/sv2;
+ m1=-epss; M1=1+epss;
+ m2=-epss; M2=epss;
+ if((fmax(p1,q1)<m1) || (fmin(p1,q1)>M1)){
+ out[0]=Inf;
+ return;
+ }
+ if((fmax(p2,q2)<m2) || (fmin(p2,q2)>M2)){
+ out[0]=Inf;
+ return;
+ }
+ if(p2*q2<0){
+ t=p1-(q1-p1)/(q2-p2)*p2;
+ if((t>m1)&& (t<M1)){
+ if((t>-eps0) && (t<1+eps0)){
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ tmp2d1=fmin(fmax(t,0),1);
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=tmp2d1; out[3]=0;
+ }
+ else{
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ tmp2d1=fmin(fmax(t,0),1);
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=tmp2d1; out[3]=1;
+ }
+ return;
+ }
+ if((p1<m1)||(p1>M1)||(p2<m2)||(p2>M2)){
+ if((q1<m1)||(q1>M1)||(q2<m2)||(q2>M2)){
+ out[0]=Inf;
+ return;
+ }
+ t=fmin(fmax(q1,0),1);
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=1;
+ return;
+ }
+ t=fmin(fmax(p1,0),1);
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=1;
+ return;
+ }
+ if((p1>-eps0)&&(p1<1+eps0)&&(p2>-eps0)&&(p2<eps0)){
+ t= p1;
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=0;
+ return;
+ }
+ if((q1>-eps0)&&(q1<1+eps0)&&(q2>-eps0)&&(q2<eps0)){
+ t= q1;
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=0;
+ return;
+ }
+ if((p1<m1)||(p1>M1)||(p2<m2)||(p2>M2)){
+ if((q1<m1)||(q1>M1)||(q2<m2)||(q2>M2)){
+ out[0]=Inf;
+ return;
+ }
+ t=fmin(fmax(q1,0),1);
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=1;
+ return;
+ }
+ if((q1<m1)||(q1>M1)||(q2<m2)||(q2>M2)){
+ t=fmin(fmax(p1,0),1);
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=1;
+ return;
+ }
+ if(fabs(p2)<fabs(q2)){
+ t=fmin(fmax(p1,0),1);
+ }
+ else{
+ t=fmin(fmax(q1,0),1);
+ }
+ tmp1d2[0]=a[0]+t*v[0]; tmp1d2[1]=a[1]+t*v[1];
+ out[0]=tmp1d2[0]; out[1]=tmp1d2[1];
+ out[2]=t; out[3]=1;
+ return;
+}
+
+double paramoncurve(double p[2], int n, double ptL[][2]){
+ double pa[2], pb[2], v[2], w[2], o[2], d2, s;
+ int nptL=length2(ptL);
+ if(n==nptL){
+ return nptL;
+ }
+ else{
+ pull2(n,ptL,pa);
+ pull2(n+1,ptL,pb);
+ v[0]=pb[0]-pa[0]; v[1]=pb[1]-pa[1];
+ w[0]=p[0]-pa[0]; w[1]=p[1]-pa[1];
+ o[0]=0; o[1]=0;
+ d2=pow(dist(2,v,o),2.0);
+ s=dotprod(2,v,w)/d2;
+ s=fmin(fmax(s,0),1);
+ return n+s;
+ }
+}
+
+void nearestptpt(double pa[2], double pL[][2], double pt[4]){
+ double eps0=pow(10,-6.0), p[2], pm[2], im, sm, s;
+ double ans[7], a1,a2, b1,b2, v1, v2, x1, x2, t, tmpd1;
+ int i, n, npL=length2(pL);
+ ans[0]=pa[0]; ans[1]=pa[1];
+ ans[2]=1;
+ p[0]=pL[1][0]; p[1]=pL[1][1];
+ ans[3]=p[0]; ans[4]=p[1];
+ ans[5]=1; ans[6]=dist(2,pa,p);
+ pm[0]=pL[1][0]; pm[1]=pL[1][1];
+ im=1;
+ sm=dist(2,pm,pa);
+ for(i=1; i<=npL-1; i++){
+ a1=pL[i][0]; a2=pL[i][1];
+ b1=pL[i+1][0]; b2=pL[i+1][1];
+ v1=b1-a1; v2=b2-a2;
+ x1=pa[0]; x2=pa[1];
+ tmpd1=pow(v2,2.0)+pow(v1,2.0);
+ if(fabs(tmpd1)<eps0){
+ continue;
+ }
+ t=(-a2*v2-v1*a1+v1*x1+x2*v2)/tmpd1;
+ if(t<-eps0){
+ p[0]=a1; p[1]=a2;
+ }
+ else if(t>1+eps0){
+ p[0]=b1; p[1]=b2;
+ }
+ else{
+ p[0]=a1+t*v1; p[1]=a2+t*v2;
+ }
+ s=dist(2,p,pa);
+ if(s<sm-eps0){
+ tmpd1=paramoncurve(p,i,pL);
+ pm[0]=p[0]; pm[1]=p[1];
+ im=tmpd1; sm=s;
+ }
+ }
+ if(sm<ans[6]){
+ ans[0]=pa[0]; ans[1]=pa[1];
+ ans[2]=n;
+ ans[3]=pm[0]; ans[4]=pm[1];
+ ans[5]=im; ans[6]=sm;
+ }
+ pt[0]=ans[3]; pt[1]=ans[4];
+ pt[2]=ans[5]; pt[3]=ans[6];
+}
+
+int intersectselfPp(double data1[][2],double eps,double eps1s,double kL[][4]){
+ double a[2], b[2], tmpd2[2], tmpd4[4], tmpd5[5], p[2], q[2], t, s;
+ double eps0=pow(10,-5.0);
+ double tmpd1, tmp1d1, tmp2d1;
+ int i, j, k, n, is, ndata1,nkL, ntmp, ntmp1,flg, closed=0;
+ ndata1=length2(data1);
+ p[0]=data1[1][0]; p[1]=data1[1][1];
+ q[0]=data1[ndata1][0]; q[1]=data1[ndata1][1];
+ if(dist(2,p,q)<Eps){closed=1;}
+ kL[0][0]=0; nkL=0;
+ for(i=1; i<=ndata1; i++){
+ ntmp=0; tmpd1=Inf;
+ pull2(i,data1,a);
+ nearestptpt(a, data1, tmpd4);
+ n=floor(tmpd4[2]+0.5);
+ if(n==i){continue;}
+ if(closed==1){
+ if((i==1)&&(n==ndata1)){continue;}
+ if((i==ndata1)&&(n==1)){continue;}
+ }
+ ntmp1=floor(tmpd4[2]+Eps);
+ if((tmpd4[3]<eps1s)&&(ntmp1!=i)){
+ if(ntmp<ntmp1){
+ ntmp=ntmp1;
+ tmpd1=tmpd4[3];
+ nkL=addptd4(kL,tmpd4);
+ }
+ else if(tmpd4[3]<tmpd1){
+ tmpd1=tmpd4[3];
+ kL[0][0]--;
+ nkL=addptd4(kL,tmpd4);
+ }
+ }
+ }
+ return nkL;
+}
+
+/*
+int intersectcrvsPptest(double data1[][2], double data2[][2],
+ double eps1,double eps2, double kL[][4]){
+ double t, s, a[2], b[2], p[2], q[2];
+ double sqeps=pow(10,-10.0), eps0=pow(10,-2.0);
+ double tmp1d2[2],tmp2d2[2],tmpd4[4],tmp1d4[4],tmpd5[5];
+ double tmpd1,tmp1d1,tmp2d1, kL0[DsizeL][5], ds;
+ int i, j, k, n, is, nkL, nall, ndata1,ndata2,ntmp, ntmp1, flg;
+ ndata1=length2(data1);
+ ndata2=length2(data2);
+ if(ndata1==ndata2){
+ tmp1d1=0; tmp2d1=0;
+ for(i=1; i<=ndata1; i++){
+ tmp1d1=tmp1d1+pow(data1[i][0]-data2[i][0],2.0);
+ tmp1d1=tmp1d1+pow(data1[i][1]-data2[i][1],2.0);
+ tmp2d1=tmp2d1+pow(data1[i][0]-data2[ndata2-i+1][0],2.0);
+ tmp2d1=tmp2d1+pow(data1[i][1]-data2[ndata2-i+1][1],2.0);
+ }
+ tmp1d1=sqrt(tmp1d1); tmp2d1=sqrt(tmp2d1);
+ if((tmp1d1<Eps)||(tmp2d1<Eps)){
+ kL[0][0]=0; nkL=0;
+ return nkL;
+ }
+ }
+ kL0[0][0]=0; nkL=0;
+ for(i=1; i<=ndata1; i++){
+ ntmp=0; tmpd1=Inf;
+ pull2(i,data1,a);
+ nearestptpt(a, data2, tmpd4);
+ tmp1d1=floor(tmpd4[2]+Eps); //17.06.03
+ a[0]=tmpd4[0]; a[1]=tmpd4[1];
+ nearestptpt(a, data1, tmpd4);
+ tmpd5[0]=tmpd4[0]; tmpd5[1]=tmpd4[1];
+ tmpd5[2]=tmpd4[2]; tmpd5[3]=tmp1d1;
+ tmpd5[4]=tmpd4[3];
+ nkL=addptd5(kL0,tmpd5);
+ }
+ kL[0][0]=0; nall=0;
+ p[0]=Inf; p[1]=0;
+ for(i=1; i<=nkL; i++){
+ if(kL0[i][4]<eps2){
+ q[0]=kL0[i][0]; q[1]=kL0[i][1];
+ if(dist(2,p,q)>eps2){
+ nall=push4(kL0[i][0],kL0[i][1],kL0[i][2],kL0[i][3],kL);
+ p[0]=kL0[i][0]; p[1]=kL0[i][1];
+ ds=kL0[i][4];
+ continue;
+ }
+ if(kL0[i][4]<ds){
+ kL[0][0]--;
+ nall=push4(kL0[i][0],kL0[i][1],kL0[i][2],kL0[i][3],kL);
+ p[0]=kL0[i][0]; p[1]=kL0[i][1];
+ ds=kL0[i][4];
+ }
+ }
+ }
+ return nall;
+}
+*/
+
+int intersectcrvsPp(double data1[][2], double data2[][2],
+ double eps,double eps1s, double kL[][4]){
+ double t, s, a[2], b[2], p[2], q[2];
+ double sqeps=pow(10,-10.0), eps0=pow(10,-2.0);
+ double tmp1d2[2],tmp2d2[2],tmpd4[4],tmp1d4[4],tmpd5[5];
+ double tmpd1,tmp1d1,tmp2d1;
+ int i, j, k, n, is, ndata1, ndata2, nkL,nkL1,nkL2,ntmp, ntmp1, flg;
+ ndata1=length2(data1);
+ ndata2=length2(data2);
+ if(ndata1==ndata2){
+ tmp1d1=0; tmp2d1=0;
+ for(i=1; i<=ndata1; i++){
+ tmp1d1=tmp1d1+pow(data1[i][0]-data2[i][0],2.0);
+ tmp1d1=tmp1d1+pow(data1[i][1]-data2[i][1],2.0);
+ tmp2d1=tmp2d1+pow(data1[i][0]-data2[ndata2-i+1][0],2.0);
+ tmp2d1=tmp2d1+pow(data1[i][1]-data2[ndata2-i+1][1],2.0);
+ }
+ tmp1d1=sqrt(tmp1d1); tmp2d1=sqrt(tmp2d1);
+ if((tmp1d1<Eps)||(tmp2d1<Eps)){
+ kL[0][0]=0; nkL=0;
+ return nkL;
+ }
+ }
+ kL[0][0]=0; nkL=0;
+ for(i=1; i<=ndata1;i++){
+ ntmp=0; tmpd1=Inf;
+ pull2(i,data1,a);
+ nearestptpt(a, data2, tmpd4);
+ tmp1d1=floor(tmpd4[2]+Eps); //17.06.03
+ a[0]=tmpd4[0]; a[1]=tmpd4[1];
+ nearestptpt(a, data1, tmpd4);
+ if(tmpd4[3]<eps1s){
+ flg=0;
+ p[0]=tmpd4[0]; p[1]=tmpd4[1];
+ for(j=1; j<=nkL; j++){
+ q[0]=kL[j][0]; q[1]=kL[j][1];
+ if(dist(2,p,q)<eps0){
+ flg=1;
+ break;
+ }
+ }
+ if(flg==1){continue;}
+ ntmp1=floor(tmpd4[2]+Eps);
+ if(ntmp<ntmp1){
+ ntmp=ntmp1;
+ tmpd1=tmpd4[3];
+ tmp1d4[0]=tmpd4[0]; tmp1d4[1]=tmpd4[1];
+ tmp1d4[2]=tmpd4[2]; tmp1d4[3]=tmp1d1;
+ nkL=addptd4(kL,tmp1d4);
+ }
+ else if(tmpd4[3]<tmpd1){
+ tmpd1=tmpd4[3];
+ kL[0][0]--;
+ tmp1d4[0]=tmpd4[0]; tmp1d4[1]=tmpd4[1];
+ tmp1d4[2]=tmpd4[2]; tmp1d4[3]=tmp1d1;
+ nkL=addptd4(kL,tmp1d4);
+ }
+ }
+ }
+ return nkL;
+}
+
+int intersectcrvsPpold(double data1[][2], double data2[][2],
+ double eps,double eps1s, double kL[][4]){
+// 17.05.22
+ double kL1[DsizeL][5], kL2[DsizeL][5];
+ double t, s, a[2], b[2], p[2], q[2];
+ double sqeps=pow(10,-10.0), eps0=pow(10,-6.0);
+ double tmp1d2[2],tmp2d2[2],tmpd4[4],tmpd5[5];
+ double tmpd1,tmp1d1,tmp2d1;
+ int i, j, k, n, is, ndata1, ndata2, nkL,nkL1,nkL2,ntmp,flg;
+ ndata1=length2(data1);
+ ndata2=length2(data2);
+ if(ndata1==ndata2){
+ tmp1d1=0; tmp2d1=0;
+ for(i=1; i<=ndata1; i++){
+ tmp1d1=tmp1d1+pow(data1[i][0]-data2[i][0],2.0);
+ tmp1d1=tmp1d1+pow(data1[i][1]-data2[i][1],2.0);
+ tmp2d1=tmp2d1+pow(data1[i][0]-data2[ndata2-i+1][0],2.0);
+ tmp2d1=tmp2d1+pow(data1[i][1]-data2[ndata2-i+1][1],2.0);
+ }
+ tmp1d1=sqrt(tmp1d1); tmp2d1=sqrt(tmp2d1);
+ if((tmp1d1<eps0)||(tmp2d1<eps0)){
+ kL[0][0]=0; nkL=0;
+ return nkL;
+ }
+ }
+ kL1[0][0]=0; nkL1=0;
+ kL2[0][0]=0; nkL2=0;
+ for(i=1; i<=ndata1-1; i++){
+ pull2(i,data1,a);
+ pull2(i+1,data1,b);
+ for(j=1; j<=ndata2-1; j++){
+ pull2(j, data2, p);
+ pull2(j+1, data2, q);
+ koutenseg(a,b,p,q,eps,eps1s,tmpd4);
+ if(tmpd4[0]<Inf-1){
+ ntmp=floor(tmpd4[3]+Eps);
+ if(ntmp==0){
+ tmpd5[0]=tmpd4[0]; tmpd5[1]=tmpd4[1];
+ tmpd5[2]=tmpd4[2]; tmpd5[3]=i; tmpd5[4]=j;
+ nkL1=addptd5(kL1,tmpd5);
+ }
+ else{
+ tmpd5[0]=tmpd4[0]; tmpd5[1]=tmpd4[1];
+ tmpd5[2]=tmpd4[2]; tmpd5[3]=i; tmpd5[4]=j;
+ nkL2=addptd5(kL2,tmpd5);
+ }
+ }
+ }
+ }
+ kL[0][0]=0; nkL=0;
+ if(nkL1>0){
+ pull5(1,kL1,tmpd5);
+ p[0]=tmpd5[0]; p[1]=tmpd5[1];
+ t=tmpd5[2];
+ i=floor(tmpd5[3]+Eps);
+ j=floor(tmpd5[4]+Eps);
+ tmpd4[0]=p[0]; tmpd4[1]=p[1];
+ tmpd4[2]=i+t; tmpd4[3]=j;
+ nkL=addptd4(kL,tmpd4);
+ }
+ for(n=2; n<=nkL1; n++){
+ pull5(n,kL1,tmpd5);
+ p[0]=tmpd5[0]; p[1]=tmpd5[1];
+ flg=0;
+ for(k=1; k<=nkL; k++){
+ pull4(k,kL,tmpd4);
+ tmp1d2[0]=tmpd4[0]; tmp1d2[1]=tmpd4[1];
+ if(pow(dist(2,p,tmp1d2),2.0)<sqeps){
+ flg=1;
+ break;
+ }
+ }
+ if(flg==0){
+ tmpd4[0]=p[0]; tmpd4[1]=p[1];
+ t=tmpd5[2];
+ i=floor(tmpd5[3]+Eps);
+ j=floor(tmpd5[4]+Eps);
+ tmpd4[2]=t+i; tmpd4[3]=j;
+ nkL=addptd4(kL,tmpd4);
+ }
+ }
+ for(n=1; n<=nkL2; n++){
+ pull5(n,kL2,tmpd5);
+ p[0]=tmpd5[0]; p[1]=tmpd5[1];
+ flg=0;
+ for(k=1; k<=nkL; k++){
+ pull4(k,kL,tmpd4);
+ tmp1d2[0]=tmpd4[0]; tmp1d2[1]=tmpd4[1];
+ if(pow(dist(2,p,tmp1d2),2.0)<sqeps){
+ flg=1;
+ break;
+ }
+ }
+ if(flg==0){
+ tmpd4[0]=p[0]; tmpd4[1]=p[1];
+ t=tmpd5[2];
+ i=floor(tmpd5[3]+Eps);
+ j=floor(tmpd5[4]+Eps);
+ tmpd4[2]=i+t; tmpd4[3]=j;
+ nkL=addptd4(kL,tmpd4);
+ }
+ }
+ return nkL;
+}
+
+int dropnumlistcrv(double qd[][2], double eps1, int out[]){
+ int i,j,k, nout,nall=length2(qd), nd, se, en, npd, nptL;
+ int din[DsizeM][2],ptL[DsizeL];
+ double eps=pow(10.0,-6.0), pd[DsizeL][2], p[2], tmp2d[2];
+ out[0]=0; nout=0;
+ nd=dataindexd2(2,qd,din);
+ for(j=1; j<=nd; j++){
+ se=din[j][0]; en=din[j][1];
+ pd[0][0]=0; npd=0;
+ npd=appendd2(0,se,en,qd,pd);
+ ptL[0]=0; nptL=0;
+ nptL=appendi1(ptL,1);
+ pull2(1,pd,p);
+ for(k=2; k<=npd-1; k++){
+ pull2(k,pd,tmp2d);
+ if(dist(2,p,tmp2d)>eps1){
+ nptL=appendi1(ptL,k);
+ pull2(k,pd,p);
+ }
+ }
+ pull2(npd-1,pd,p);
+ pull2(npd,pd,tmp2d);
+ if(dist(2,p,tmp2d)>eps){ // eps -> eps1 ?
+ nptL=appendi1(ptL,npd);
+ }
+ if(nptL==1){ptL[0]=0; nptL=0;}
+ if(nout>0){
+ nout=appendi1(out,Infint);
+ }
+ for(i=1; i<=nptL; i++){
+ nout=appendi1(out,ptL[i]);
+ }
+ }
+ out[0]=nout;
+ return nout;
+}
+
+int increasept2(double ptL[][2], int nn, double out[][2]){
+ int ii, jj, npt, nall;
+ double tmpd2[2];
+ npt=length2(ptL);
+ out[0][0]=0;
+ for(ii=1; ii<=npt-1; ii++){
+ for(jj=0; jj<nn; jj++){
+ tmpd2[0]=ptL[ii][0]+1.0*jj/nn*(ptL[ii+1][0]-ptL[ii][0]);
+ tmpd2[1]=ptL[ii][1]+1.0*jj/nn*(ptL[ii+1][1]-ptL[ii][1]);
+ addptd2(out,tmpd2);
+ }
+ }
+ nall=appendd2(0,npt,npt,ptL,out);
+ return nall;
+}
+
+int increasept3(double ptL[][3], int nn, double out[][3]){
+ int ii, jj, npt, nall;
+ double tmpd3[3];
+ npt=length3(ptL);
+ out[0][0]=0;
+ for(ii=1; ii<=npt-1; ii++){
+ for(jj=0; jj<nn; jj++){
+ tmpd3[0]=ptL[ii][0]+1.0*jj/nn*(ptL[ii+1][0]-ptL[ii][0]);
+ tmpd3[1]=ptL[ii][1]+1.0*jj/nn*(ptL[ii+1][1]-ptL[ii][1]);
+ tmpd3[2]=ptL[ii][2]+1.0*jj/nn*(ptL[ii+1][2]-ptL[ii][2]);
+ addptd3(out,tmpd3);
+ }
+ }
+ nall=appendd3(0,npt,npt,ptL,out);
+ return nall;
+}
+
+void bezierpt(double t, double p0[], double p3[], double p1[], double p2[],
+ double pout[]){
+ double p4[2], p5[2], p6[2], p7[2], p8[2];
+ int i, flg3=1;
+ if(p2[0]>Inf-1){
+ for(i=0; i<2; i++){
+ p2[i]=p3[i];
+ }
+ flg3=0;
+ }
+ for(i=0; i<2; i++){
+ p4[i]=(1-t)*p0[i]+t*p1[i];
+ }
+ for(i=0; i<2; i++){
+ p5[i]=(1-t)*p1[i]+t*p2[i];
+ }
+ for(i=0; i<2; i++){
+ p6[i]=(1-t)*p2[i]+t*p3[i];
+ }
+ for(i=0; i<2; i++){
+ p7[i]=(1-t)*p4[i]+t*p5[i];
+ }
+ if(flg3==0){
+ for(i=0; i<2; i++){
+ pout[i]=p7[i];
+ }
+ }
+ else{
+ for(i=0; i<2; i++){
+ p8[i]=(1-t)*p5[i]+t*p6[i];
+ }
+ for(i=0; i<2; i++){
+ pout[i]=(1-t)*p7[i]+t*p8[i];
+ }
+ }
+}
+
+int bezier(double ptL[][2], double ctrL[][4], int num, double out[][2]){
+ double p0[2], p3[2], p1[2], p2[2], pt[2], dt=1.0/num;
+ int i, j, n, nall;
+ out[0][0]=0; nall=0;
+ nall=appendd2(0,1,1,ptL,out);
+ n=length2(ptL);
+ for(i=1; i<=n-1; i++){
+ pull2(i,ptL, p0);
+ pull2(i+1,ptL, p3);
+ p1[0]=ctrL[i][0]; p1[1]=ctrL[i][1];
+ p2[0]=ctrL[i][2]; p2[1]=ctrL[i][3];
+ for(j=1; j<=num; j++){
+ bezierpt(j*dt,p0,p3,p1,p2,pt);
+ nall=push2(pt[0],pt[1], out);
+ }
+ }
+ return nall;
+}
+
+int ospline(int level, double ptL[][2], int num, double out[][2]){
+ double ctrlist[DsizeM][4], eps0=pow(10,-6.0), tmp, cc;
+ double p[2], q[2], p0[2], p3[2], p1[2], p2[2], pQ[2], pR[2];
+ double ptlist[DsizeM][2], tmpmd2[DsizeM][2];
+ int nd, i, j, npt, nall, nctr, flg, ndin, closed, din[DsizeM][2], ntmp;
+ out[0][0]=0;
+ if(num==1){
+ npt=length2(ptL);
+ for(i=0; i<=npt; i++){
+ out[i][0]=ptL[i][0]; out[i][1]=ptL[i][1];
+ }
+ nall=length2(out);
+ return nall;
+ }
+ ndin=dataindexd2(level,ptL,din);
+ for(nd=1; nd<=ndin; nd++){
+ ptlist[0][0]=0;
+ npt=appendd2(0,din[nd][0],din[nd][1],ptL,ptlist);
+ if(npt==2){
+ appendd2(2, 1,npt,ptlist,out);
+ continue;
+ }
+ closed=0;
+ pull2(1,ptlist,p);
+ pull2(npt,ptlist,q);
+ if(dist(2,p,q)<eps0){
+ closed=1;
+ }
+ ctrlist[0][0]=0; nctr=0;
+ for(i=1; i<=npt-1; i++){
+ flg=0;
+ pull2(i, ptlist,p1);
+ pull2(i+1, ptlist,p2);
+ if((i==1)||(i==npt-1)){
+ flg=1;
+ if(closed==0){
+ pQ[0]=(p1[0]+2*p2[0])/3.0;
+ pQ[1]=(p1[1]+2*p2[1])/3.0;
+ pR[0]=(2*p1[0]+p2[0])/3.0;
+ pR[1]=(2*p1[1]+p2[1])/3.0;
+ nctr++;
+ ctrlist[nctr][0]=pQ[0]; ctrlist[nctr][1]=pQ[1];
+ ctrlist[nctr][2]=pR[0]; ctrlist[nctr][3]=pR[1];
+ flg=2;
+ }
+ else{
+ if(i==1){
+ pull2(npt-1, ptlist,p0);
+ pull2(i+2, ptlist,p3);
+ }
+ else{
+ pull2(i-1, ptlist, p0);
+ pull2(2, ptlist, p3);
+ }
+ }
+ }
+ if(flg<=1){
+ if(flg==0){
+ pull2(i-1, ptlist, p0);
+ pull2(i+2, ptlist, p3);
+ }
+ p[0]=p2[0]-p0[0]; p[1]=p2[1]-p0[1];
+ q[0]=p3[0]-p1[0]; q[1]=p3[1]-p1[1];
+ tmp=1+sqrt((1+dotprod(2,p,q)/dist(2,p0,p2)/dist(2,p1,p3))/2);
+ cc=4*dist(2,p1,p2)/3/(dist(2,p0,p2)+dist(2,p1,p3))/tmp;
+ pQ[0]=p1[0]+cc*(p2[0]-p0[0]); pQ[1]=p1[1]+cc*(p2[1]-p0[1]);
+ pR[0]=p2[0]+cc*(p1[0]-p3[0]); pR[1]=p2[1]+cc*(p1[1]-p3[1]);
+ nctr++;
+ ctrlist[nctr][0]=pQ[0]; ctrlist[nctr][1]=pQ[1];
+ ctrlist[nctr][2]=pR[0]; ctrlist[nctr][3]=pR[1];
+ }
+ }
+ if(closed==0){
+ p1[0]=ctrlist[2][0]; p1[1]=ctrlist[2][1];
+ pull2(2, ptlist, p2);
+ pQ[0]=p2[0]+(p2[0]-p1[0]); pQ[1]=p2[1]+(p2[1]-p1[1]);
+ ctrlist[1][0]=pQ[0]; ctrlist[1][1]=pQ[1];
+ ctrlist[1][2]=Inf; ctrlist[1][3]=0;
+ p1[0]=ctrlist[nctr-1][2]; p1[1]=ctrlist[nctr-1][3];
+ pull2(nctr,ptlist,p2);
+ pQ[0]=p2[0]+(p2[0]-p1[0]); pQ[1]=p2[1]+(p2[1]-p1[1]);
+ ctrlist[nctr][0]=pQ[0]; ctrlist[nctr][1]=pQ[1];
+ ctrlist[nctr][2]=Inf; ctrlist[1][3]=0;
+ }
+ ctrlist[0][0]=nctr;
+ if(length2(ptlist)>2){
+ ntmp=bezier(ptlist,ctrlist,num, tmpmd2);
+ nall=appendd2(2,1,ntmp,tmpmd2,out);
+ }
+ }
+ return nall;
+}
+
+void bezierpt3(double t, double p0[], double p3[], double p1[], double p2[],
+ double pout[]){
+ double p4[3], p5[3], p6[3], p7[3], p8[3];
+ int i, flg3=1;
+ if(p2[0]>Inf-1){
+ for(i=0; i<3; i++){
+ p2[i]=p3[i];
+ }
+ flg3=0;
+ }
+ for(i=0; i<3; i++){
+ p4[i]=(1-t)*p0[i]+t*p1[i];
+ }
+ for(i=0; i<3; i++){
+ p5[i]=(1-t)*p1[i]+t*p2[i];
+ }
+ for(i=0; i<3; i++){
+ p6[i]=(1-t)*p2[i]+t*p3[i];
+ }
+ for(i=0; i<3; i++){
+ p7[i]=(1-t)*p4[i]+t*p5[i];
+ }
+ if(flg3==0){
+ for(i=0; i<3; i++){
+ pout[i]=p7[i];
+ }
+ }
+ else{
+ for(i=0; i<3; i++){
+ p8[i]=(1-t)*p5[i]+t*p6[i];
+ }
+ for(i=0; i<3; i++){
+ pout[i]=(1-t)*p7[i]+t*p8[i];
+ }
+ }
+}
+
+int bezier3(double ptL[][3], double ctrL[][6], int num, double out[][3]){
+ double p0[3], p3[3], p1[3], p2[3], pt[3], dt=1.0/num;
+ int i, j, n, nall;
+ out[0][0]=0; nall=0;
+ nall=appendd3(0,1,1,ptL,out);
+ n=length3(ptL);
+ for(i=1; i<=n-1; i++){
+ pull3(i,ptL, p0);
+ pull3(i+1,ptL, p3);
+ p1[0]=ctrL[i][0]; p1[1]=ctrL[i][1]; p1[2]=ctrL[i][2];
+ p2[0]=ctrL[i][3]; p2[1]=ctrL[i][4]; p2[2]=ctrL[i][5];
+ for(j=1; j<=num; j++){
+ bezierpt3(j*dt,p0,p3,p1,p2,pt);
+ nall=push3(pt[0],pt[1],pt[2], out);
+ }
+ }
+ return nall;
+}
+
+int ospline3(int level, double ptL[][3], int num, double out[][3]){
+ double ctrlist[DsizeM][6], eps0=pow(10,-6.0), tmp, cc;
+ double p[3], q[3], p0[3], p3[3], p1[3], p2[3], pQ[3], pR[3];
+ double ptlist[DsizeM][3], tmpmd2[DsizeM][3];
+ int nd, i, j, n, npt, nall, nctr, closed, flg, ndin, din[DsizeM][2], ntmp;
+ out[0][0]=0; nall=0;
+ if(num==1){
+ npt=length3(ptL);
+ for(i=0; i<=npt; i++){
+ out[i][0]=ptL[i][0]; out[i][1]=ptL[i][1]; out[i][2]=ptL[i][2];
+ }
+ nall=length3(out);
+ return nall;
+ }
+ ndin=dataindexd3(2,ptL,din);
+ for(nd=1; nd<=ndin; nd++){
+ ptlist[0][0]=0;
+ npt=din[nd][1]-din[nd][0];
+ if(npt<=3){
+ n=appendd3(0, din[nd][0], din[nd][0], ptL, ptlist);
+ for(i=1; i<=npt-1; i++){
+ pull3(din[nd][0]+i,ptL,p);
+ pull3(din[nd][0]+i+1,ptL,q);
+ for(j=1; j<=num; j++){
+ p1[0]=p[0]+1.0*j/num*(q[0]-p[0]);
+ p1[1]=p[1]+1.0*j/num*(q[1]-p[1]);
+ p1[2]=p[2]+1.0*j/num*(q[2]-p[2]);
+ n=addptd3(ptlist,p1);
+ }
+ }
+ nall=appendd3(2, 1,n,ptlist,out);
+ continue;
+ }
+ appendd3(0,din[nd][0],din[nd][1],ptL,ptlist);
+ closed=0;
+ pull3(1,ptlist,p);
+ pull3(npt,ptlist,q);
+ if(dist(3,p,q)<eps0){closed=1;}
+ ctrlist[0][0]=0; nctr=0;
+ for(i=1; i<=npt-1; i++){
+ flg=0;
+ pull3(i, ptlist,p1);
+ pull3(i+1, ptlist,p2);
+ if((i==1)||(i==npt-1)){
+ flg=1;
+ if(closed==0){
+ pQ[0]=(p1[0]+2*p2[0])/3.0;
+ pQ[1]=(p1[1]+2*p2[1])/3.0;
+ pQ[2]=(p1[2]+2*p2[2])/3.0;
+ pR[0]=(2*p1[0]+p2[0])/3.0;
+ pR[1]=(2*p1[1]+p2[1])/3.0;
+ pR[2]=(2*p1[2]+p2[2])/3.0;
+ nctr++;
+ ctrlist[nctr][0]=pQ[0]; ctrlist[nctr][1]=pQ[1]; ctrlist[nctr][2]=pQ[2];
+ ctrlist[nctr][3]=pR[0]; ctrlist[nctr][4]=pR[1]; ctrlist[nctr][5]=pR[2];
+ flg=2;
+ }
+ else{
+ if(i==1){
+ pull3(npt-1, ptlist,p0);
+ pull3(i+2, ptlist,p3);
+ }
+ else{
+ pull3(i-1, ptlist, p0);
+ pull3(2, ptlist, p3);
+ }
+ }
+ }
+ if(flg<=1){
+ if(flg==0){
+ pull3(i-1, ptlist, p0);
+ pull3(i+2, ptlist, p3);
+ }
+ p[0]=p2[0]-p0[0]; p[1]=p2[1]-p0[1]; p[2]=p2[2]-p0[2];
+ q[0]=p3[0]-p1[0]; q[1]=p3[1]-p1[1]; q[2]=p3[2]-p1[2];
+ tmp=1+sqrt((1+dotprod(3,p,q)/dist(3,p0,p2)/dist(3,p1,p3))/2);
+ cc=4*dist(3,p1,p2)/3/(dist(3,p0,p2)+dist(3,p1,p3))/tmp;
+ pQ[0]=p1[0]+cc*(p2[0]-p0[0]); pQ[1]=p1[1]+cc*(p2[1]-p0[1]);
+ pQ[2]=p1[2]+cc*(p2[2]-p0[2]);
+ pR[0]=p2[0]+cc*(p1[0]-p3[0]); pR[1]=p2[1]+cc*(p1[1]-p3[1]);
+ pR[2]=p2[2]+cc*(p1[2]-p3[2]);
+ nctr++;
+ ctrlist[nctr][0]=pQ[0]; ctrlist[nctr][1]=pQ[1]; ctrlist[nctr][2]=pQ[2];
+ ctrlist[nctr][3]=pR[0]; ctrlist[nctr][4]=pR[1]; ctrlist[nctr][5]=pR[2];
+ }
+ }
+ if(closed==0){
+ p1[0]=ctrlist[2][0]; p1[1]=ctrlist[2][1]; p1[2]=ctrlist[2][2];
+ pull3(2, ptlist, p2);
+ pQ[0]=p2[0]+(p2[0]-p1[0]); pQ[1]=p2[1]+(p2[1]-p1[1]);
+ pQ[2]=p2[2]+(p2[2]-p1[2]);
+ ctrlist[1][0]=pQ[0]; ctrlist[1][1]=pQ[1]; ctrlist[1][2]=pQ[2];
+ ctrlist[1][3]=Inf; ctrlist[1][4]=0; ctrlist[1][5]=0;
+ p1[0]=ctrlist[nctr-1][3]; p1[1]=ctrlist[nctr-1][4]; p1[2]=ctrlist[nctr-1][5];
+ pull3(nctr,ptlist,p2);
+ pQ[0]=p2[0]+(p2[0]-p1[0]); pQ[1]=p2[1]+(p2[1]-p1[1]);
+ pQ[2]=p2[2]+(p2[2]-p1[2]);
+ ctrlist[nctr][0]=pQ[0]; ctrlist[nctr][1]=pQ[1]; ctrlist[nctr][2]=pQ[2];
+ ctrlist[nctr][3]=Inf; ctrlist[1][4]=0; ctrlist[1][5]=0;
+ }
+ ctrlist[0][0]=nctr;
+ if(length3(ptlist)>2){
+ ntmp=bezier3(ptlist,ctrlist,num, tmpmd2);
+ nall=appendd3(2,1,ntmp,tmpmd2,out);
+ }
+ }
+ return nall;
+}
diff --git a/texmf-dist/scripts/ketpic/ketlibC/surflib.h b/texmf-dist/scripts/ketpic/ketlibC/surflib.h
new file mode 100644
index 00000000..1b2f6c48
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlibC/surflib.h
@@ -0,0 +1,1888 @@
+// 17.06.16 crvsfparadata changed ( num of devision )
+
+int output3(const char *var, const char *fname, int level, double out[][3]){
+ int nall=floor(out[0][0]+0.5), ndin, din[DsizeM][2],i,j;
+ double tmpd[3];
+ FILE *fp;
+ fp=fopen(fname,"w");
+ if (fp == NULL) {
+ printf("cannot open\n");
+ return -1;
+// exit(1);
+ }
+ ndin=dataindexd3(level, out,din);
+ fprintf(fp,"%s//\n",var); //17.05.29
+// fprintf(fp,"%s3d//\n",var2);
+ for(i=1; i<=ndin; i++){
+ fprintf(fp,"start//\n");
+ fprintf(fp,"[");
+ for(j=din[i][0]; j<=din[i][1]; j++){
+ pull3(j,out,tmpd);
+ fprintf(fp,"[ %7.5f, %7.5f, %7.5f]",tmpd[0],tmpd[1],tmpd[2]);
+ if(j<din[i][1]){
+ fprintf(fp,",");
+ }
+ }
+ fprintf(fp,"]//\n");
+ if(i<ndin){
+ fprintf(fp,"end//\n");
+ }
+ else{
+ fprintf(fp,"end////\n");
+ }
+ }
+ fclose(fp);
+ return 0;
+}
+
+int output3h(const char *var, const char *varh, const char *fname, double out[][3]){
+ // 17.06.09
+ double out1[DsizeLL][3], tmpd[3];
+ int din1[DsizeM][2],ndin2, din2[DsizeM][2], i, j;
+ FILE *fp;
+ fp=fopen(fname,"w");
+ if (fp == NULL) {
+ printf("cannot open\n");
+ return -1;
+ }
+ dataindexd3(3,out,din1);
+ out1[0][0]=0;
+ appendd3(0, din1[1][0],din1[1][1],out,out1);
+ ndin2=dataindexd3(2, out1,din2);
+ fprintf(fp,"%s//\n",var);
+ for(i=1; i<=ndin2; i++){
+ fprintf(fp,"start//\n");
+ fprintf(fp,"[");
+ for(j=din2[i][0]; j<=din2[i][1]; j++){
+ pull3(j,out1,tmpd);
+ fprintf(fp,"[ %7.5f, %7.5f, %7.5f]",tmpd[0],tmpd[1],tmpd[2]);
+ if(j<din2[i][1]){
+ fprintf(fp,",");
+ }
+ }
+ fprintf(fp,"]//\n");
+ fprintf(fp,"end//\n");
+ }
+ out1[0][0]=0;
+ fprintf(fp,"%s//\n",varh); //17.06.16from
+ appendd3(0, din1[2][0],din1[2][1],out,out1);
+ ndin2=dataindexd3(2, out1,din2);
+ for(i=1; i<=ndin2; i++){
+ fprintf(fp,"start//\n");
+ fprintf(fp,"[");
+ for(j=din2[i][0]; j<=din2[i][1]; j++){
+ pull3(j,out1,tmpd);
+ fprintf(fp,"[ %7.5f, %7.5f, %7.5f]",tmpd[0],tmpd[1],tmpd[2]);
+ if(j<din2[i][1]){
+ fprintf(fp,",");
+ }
+ }
+ fprintf(fp,"]//\n");
+// if(i<ndin2){
+ fprintf(fp,"end//\n");
+// }
+// else{
+// fprintf(fp,"end////\n");
+// }
+ }
+ fprintf(fp,"//\n");
+ fclose(fp);
+ return 0;
+}
+
+int writedataC(const char *fname, double out[][3]){
+ int i, nall;
+ FILE *fp;
+ nall=length3(out);
+ fp=fopen(fname,"w");
+ for(i=1; i<=nall; i++){
+ fprintf(fp,"%7.5f %7.5f %7.5f\n",out[i][0],out[i][1],out[i][2]);
+ }
+ fprintf(fp,"%7.5f %7.5f %7.5f\n",Inf,Inf,Inf);
+ fclose(fp);
+ return nall;
+}
+
+int readdataC(const char *fname, double data[][3]){
+ int i, j, ndata=0;
+ FILE *fp;
+ fp=fopen(fname,"r");
+ if(fp==NULL){
+ printf("file not found\n");
+ return 1;
+ }
+ while( ! feof(fp) && ndata<DsizeL){
+ ndata++;
+ for(j=0;j<=2;j++){
+ fscanf(fp,"%lf",&data[ndata][j]);
+ }
+ if(data[ndata][1]==Inf){
+ ndata--;
+ break;
+ }
+ }
+ fclose(fp);
+ data[0][0]=ndata;
+ return ndata;
+}
+
+void parapt(double pt3[3],double pt2[2]){
+ if(fabs(pt3[0])>Inf-1){
+ pt2[0]=pt3[0]; pt2[1]=pt3[1];
+ }
+ else{
+ pt2[0]=-pt3[0]*sin(PHI)+pt3[1]*cos(PHI);
+ pt2[1]=-pt3[0]*cos(PHI)*cos(THETA)-pt3[1]*sin(PHI)*cos(THETA)+pt3[2]*sin(THETA);
+ }
+}
+
+int projpara(double p3[][3], double p2[][2]){
+ double pt3[3], pt2[2];
+ int i, nall, nall2;
+ nall=length3(p3);
+ p2[0][0]=0;
+ for(i=1; i<=nall; i++){
+ pull3(i,p3,pt3);
+ parapt(pt3,pt2);
+ nall2=addptd2(p2,pt2);
+ }
+ return nall2;
+}
+
+double invparapt(double ph, double fh[][2], double fk[][3],double out[3]){
+ int n, nfk=length3(fk), nph=length2(fh);
+ double s0=ph-n, ak[3], bk[3], ah[2], bh[2], pk[3];
+ if(nfk>2){
+ n=trunc(ph);
+ s0=ph-n;
+ if(ph>nph-Eps){
+ out[0]=fk[nfk][0]; out[1]=fk[nfk][1]; out[2]=fk[nfk][2];
+ return nph;
+ }
+ }
+ else{
+ n=1;
+ s0=ph-1;
+ }
+ ak[0]=fk[n][0]; ak[1]=fk[n][1]; ak[2]=fk[n][2];
+ bk[0]=fk[n+1][0]; bk[1]=fk[n+1][1]; bk[2]=fk[n+1][2];
+ ah[0]=fh[n][0]; ah[1]=fh[n][1];
+ bh[0]=fh[n+1][0]; bh[1]=fh[n+1][1];
+ out[0]=(1-s0)*ak[0]+s0*bk[0];
+ out[1]=(1-s0)*ak[1]+s0*bk[1];
+ out[2]=(1-s0)*ak[2]+s0*bk[2];
+ return n+s0;
+}
+
+int surfcurve(int level, double crv[][2], double pdata[][3]){
+ double p2[2], pt[3];
+ int i, n, nall;
+ n=length2(crv);
+ pdata[0][0]=0;
+ for(i=1; i<=n; i++){
+ pull2(i,crv,p2);
+ surffun(p2[0],p2[1],pt);
+ nall=addptd3(pdata,pt);
+ }
+ return nall;
+}
+
+int xyzax3data(double x0, double x1, double y0, double y1, double z0, double z1,
+ double out[][3]){
+ int nall;
+ double pd3[10][3];
+ out[0][0]=0; nall=0;
+ pd3[0][0]=2;
+ pd3[1][0]=x0; pd3[1][1]=0; pd3[1][2]=0;
+ pd3[2][0]=x1; pd3[2][1]=0; pd3[2][2]=0;
+ nall=appendd3(2,1,2,pd3,out);
+ pd3[1][0]=0; pd3[1][1]=y0; pd3[1][2]=0;
+ pd3[2][0]=0; pd3[2][1]=y1; pd3[2][2]=0;
+ nall=appendd3(2,1,2,pd3,out);
+ pd3[1][0]=0; pd3[1][1]=0; pd3[1][2]=z0;
+ pd3[2][0]=0; pd3[2][1]=0; pd3[2][2]=z1;
+ nall=appendd3(2,1,2,pd3,out);
+ return nall;
+}
+
+void evlptablepara(void){
+ int i, j;
+ double u,v,u1,u2,v1,v2,pt1[3],pt2[3],pt2d1[2],pt2d2[2],dxu,dyu,dxv,dyv;
+ double du=(Urng[1]-Urng[0])/Mdv, dv=(Vrng[1]-Vrng[0])/Ndv;
+ for (j= 0; j < Ndv+1; j++) {
+ v=Vrng[0]+j*dv;
+ v1=v-Eps/2; v2=v+Eps/2;
+ for (i = 0; i < Mdv+1; i++) {
+ u=Urng[0]+i*du;
+ u1=u-Eps/2; u2=u+Eps/2;
+ surffun(u1,v,pt1); parapt(pt1,pt2d1);
+ surffun(u2,v,pt2); parapt(pt2,pt2d2);
+ dxu=(pt2d2[0]-pt2d1[0])/Eps;
+ dyu=(pt2d2[1]-pt2d1[1])/Eps;
+ surffun(u,v1,pt1); parapt(pt1,pt2d1);
+ surffun(u,v2,pt2); parapt(pt2,pt2d2);
+ dxv=(pt2d2[0]-pt2d1[0])/Eps;
+ dyv=(pt2d2[1]-pt2d1[1])/Eps;
+ Zval[j][i]=dxu*dyv-dxv*dyu;
+ }
+ }
+ for (i = 0; i < Mdv+1; i++) {
+ Xval[i]=Urng[0]+i*du;
+ }
+ for (j= 0; j < Ndv+1; j++) {
+ Yval[j]=Vrng[0]+j*dv;
+ }
+};
+
+int implicitplot(double out[][2]){
+ int i, j, k, ctrq=0,ctr, nall;
+ double pl[5][2], vl[5], ql[11][2], out2[DsizeM][2];
+ ctr=0;
+ for (j = 0; j < Ndv; j++) {
+ for (i = 0; i < Mdv; i++) {
+ pl[0][0]=Xval[i]; pl[0][1]=Yval[j]; vl[0]=Zval[j][i];
+ pl[1][0]=Xval[i+1]; pl[1][1]=Yval[j]; vl[1]=Zval[j][i+1];
+ pl[2][0]=Xval[i+1]; pl[2][1]=Yval[j+1]; vl[2]=Zval[j+1][i+1];
+ pl[3][0]=Xval[i]; pl[3][1]=Yval[j+1]; vl[3]=Zval[j+1][i];
+ pl[4][0]=Xval[i]; pl[4][1]=Yval[j]; vl[4]=Zval[j][i];
+ ctrq=0;
+ for (k = 0; k < 4; k++) {
+ if(fabs(vl[k])<=Eps){
+ ql[ctrq][0]=pl[k][0];
+ ql[ctrq][1]=pl[k][1];
+ ctrq++;
+ }
+ else if(vl[k]>Eps){
+ if(vl[k+1]< -Eps){
+ ql[ctrq][0]=1/(vl[k]-vl[k+1])*(-vl[k+1]*pl[k][0]+vl[k]*pl[k+1][0]);
+ ql[ctrq][1]=1/(vl[k]-vl[k+1])*(-vl[k+1]*pl[k][1]+vl[k]*pl[k+1][1]);
+ ctrq++;
+ }
+ }
+ else{
+ if(vl[k+1]>Eps){
+ ql[ctrq][0]=1/(-vl[k]+vl[k+1])*(vl[k+1]*pl[k][0]-vl[k]*pl[k+1][0]);
+ ql[ctrq][1]=1/(-vl[k]+vl[k+1])*(vl[k+1]*pl[k][1]-vl[k]*pl[k+1][1]);
+ ctrq++;
+ }
+ }
+ }
+ if(ctrq==2){
+ if(ctr>0){
+ ctr++;
+ out[ctr][0]=Inf;
+ out[ctr][1]=2; // 2 <- 0 ?
+ }
+ ctr++;
+ out[ctr][0]=ql[0][0];
+ out[ctr][1]=ql[0][1];
+ ctr++;
+ out[ctr][0]=ql[1][0];
+ out[ctr][1]=ql[1][1];
+ }
+ }
+ }
+ out[0][0]=ctr;
+ if(ctr>0){
+ nall=connectseg(out, Eps, out2);
+ out[0][0]=0;
+ nall=appendd2(2,1,nall,out2,out);
+ }
+ return nall;
+}
+
+int cuspsplitpara(double pdata[][2], double outkL[][3]){
+ int i, j, ng, n, nd, ndd, ndrop, is, ncusp=0, ncusppt,st, en, npk,nph, cflg;
+ int cusp[DsizeM], cuspflg;
+ int ntmp,ntmp1,ntmp2, ntmpnum, noutkL=0, noutk=0, nout=0;
+ int din[DsizeM][2], dind[DsizeM][2], drop[DsizeL], tmpnum[DsizeM];
+ double eps=pow(10.0,-6.0);
+ double vtmp, vtmp1,kaku,cva, ps[2], pe[2],v1[2],v2[2];
+ double tmp[2],tmp1[2],tmp2[2],pt3d[3],pt2d[2],q3d[3],q2d[2];
+ double ptk[DsizeM][3],pth[DsizeM][2], outk[DsizeM][3];
+ double ptxy[DsizeM][2],tmp3d[DsizeM][3];
+ double tmp3d1[DsizeM][3],tmp3d2[DsizeM][3],tmp2d[DsizeM][2];
+ outkL[0][0]=0;
+ cusp[0]=0;
+ Cuspsplitpt[0][0]=0;
+ nd=dataindexd2(0,pdata,din);
+ for(ng=1; ng<=nd; ng++){
+ ptk[0][0]=0; pth[0][0]=0;
+ st=din[ng][0]; en=din[ng][1];
+ ptxy[0][0]=0;
+ n=appendd2(0,st,en,pdata,ptxy);
+ npk=0; nph=0;
+ for(i=1; i<=en-st+1; i++){
+ pull2(st+i-1,pdata,tmp);
+ surffun(tmp[0],tmp[1],pt3d);
+ parapt(pt3d,pt2d);
+ if(i==1){
+ npk=addptd3(ptk,pt3d);
+ nph=addptd2(pth,pt2d);
+ }
+ else{
+ pull2(nph,pth,tmp1);
+ if(dist(2,tmp1,pt2d)>eps){
+ npk=addptd3(ptk,pt3d);
+ nph=addptd2(pth,pt2d);
+ }
+ }
+ }
+ if(nph==0){
+ npk=0;
+ return 0;
+ };
+ pull2(1,pth,ps);
+ pull2(nph,pth,pe);
+ cflg=0;
+ if(dist(2,ps,pe)<Eps1){cflg=1;}
+ ncusp=0; cusp[0]=0;
+ cva=cos(10*M_PI/180);
+ for(i=1; i<=nph-1; i++){
+ if(nph==2){break;}
+ pull2(i,pth,tmp);
+ tmp[0]=pth[i][0]; tmp[1]=pth[i][1];
+ if(i==1){
+ if(cflg==0){continue;}
+ pull2(nph-1,pth,tmp1);
+ }
+ else{
+ pull2(i-1,pth,tmp1);
+ }
+ pull2(i+1,pth,tmp2);
+ v1[0]=tmp[0]-tmp1[0]; v1[1]=tmp[1]-tmp1[1];
+ v2[0]=tmp2[0]-tmp[0]; v2[1]=tmp2[1]-tmp[1];
+ vtmp=v1[0]*v2[0]+v1[1]*v2[1];
+ tmp[0]=0; tmp[1]=0;
+ vtmp=vtmp/(dist(2,v1,tmp)*dist(2,v2,tmp));
+ cuspflg=0;
+ if(vtmp<cva){
+ pt2d[0]=pth[i][0]; pt2d[1]=pth[i][1];
+ kaku=acos(vtmp)*180/M_PI;
+ if(v1[0]*v2[1]-v1[1]*v2[0]<0){
+ kaku=-kaku;
+ }
+ cuspflg=0;
+ for(j=i+1; j<=nph-1; j++){
+ if(fabs(kaku)>90){
+ cuspflg=1;
+ break;
+ }
+ pull2(j,pth,q2d);
+ if(dist(2,pt2d,q2d)>Eps1){
+ break;
+ }
+ v1[0]=q2d[0]-pth[j-1][0]; v1[1]=q2d[1]-pth[j-1][1];
+ v2[0]=pth[j+1][0]-q2d[0]; v2[1]=pth[j+1][1]-q2d[1];
+ vtmp=v1[0]*v2[0]+v1[1]*v2[1];
+ tmp[0]=0; tmp[1]=0;
+ vtmp=vtmp/(dist(2,v1,tmp)*dist(2,v2,tmp));
+ vtmp=acos(vtmp)*180/M_PI;
+ if(v1[0]*v2[1]-v1[1]*v2[0]<0){
+ vtmp=-vtmp;
+ }
+ kaku=kaku+vtmp;
+ }
+ if(cuspflg==1){
+ ntmp=trunc((i+j)*0.5);
+ i=j;
+ if(cusp[0]==0){
+ ncusp=appendi1(cusp,ntmp);
+ }
+ else{
+ ncusp=appendi1(cusp,ntmp);
+ }
+ }
+ }
+ }
+ if(cflg==0){
+ ncusp=prependi1(1,cusp);
+ ncusp=appendi1(cusp,nph);
+ }
+ else if(ncusp==0){
+ ncusp=prependi1(1,cusp);
+ ncusp=appendi1(cusp,nph);
+ }
+ else if(cusp[1]==1){
+ ncusp=appendi1(cusp,nph);
+ }
+ else{
+ ntmp=cusp[1];
+ ntmp1=nph;
+ tmp2d[0][0]=0;
+ n=appendd2(0,ntmp,ntmp1,pth,tmp2d);
+ n=appendd2(0,2,ntmp,pth,tmp2d);
+ pth[0][0]=0;
+ nph=appendd2(0,1,n,tmp2d,pth);
+ tmp3d[0][0]=0;
+ n=appendd3(0,ntmp,ntmp1,ptk,tmp3d);
+ n=appendd3(0,2,ntmp,ptk,tmp3d);
+ ptk[0][0]=0;
+ npk=appendd3(0,1,n,tmp3d,ptk);
+ for(i=1; i<=cusp[0]; i++){
+ cusp[i]=cusp[i]-ntmp+1;
+ }
+ ncusp=appendi1(cusp,nph);
+ }
+ if(ncusp==2){
+ pull2(nph,pth,tmp);
+ if(npk>=2){
+ ncusppt=addptd2(Cuspsplitpt,tmp);
+ noutkL=appendd3(2,1,npk,ptk,outkL);
+ }
+ continue;
+ }
+ outk[0][0]=0;
+ is=1;
+ for(i=1; i<=ncusp-1; i++){
+ ntmp1=cusp[is]; ntmp2=cusp[i+1];
+ pull2(ntmp1,pth,tmp1);
+ pull2(ntmp2,pth,tmp2);
+ if(dist(2,tmp1,tmp2)>Eps1){
+ tmp3d[0][0]=0;
+ n=appendd3(0,ntmp1,ntmp2,ptk,tmp3d);
+ noutk=appendd3(2,1,n,tmp3d,outk);
+ ncusppt=addptd2(Cuspsplitpt,tmp2);
+ is=i+1;
+ }
+ }
+ noutkL=appendd3(2,1,noutk,outk,outkL);
+ }
+ n=projpara(outkL,tmp2d);
+ ndrop=dropnumlistcrv(tmp2d,Eps1*0.5,drop);
+ nd=dataindexd3(2,outkL,din);
+ ndd=dataindexi1(drop,dind);
+ tmp3d2[0][0]=0; ntmp2=0;
+ for(i=1; i<=nd; i++){
+ tmp3d[0][0]=0; ntmp=0;
+ ntmp=appendd3(0,din[i][0],din[i][1],outkL,tmp3d);
+ tmpnum[0]=0; ntmpnum=0;
+ for(j=dind[i][0]; j<=dind[i][1]; j++){
+ ntmpnum=appendi1(tmpnum,drop[j]);
+ }
+ tmp3d1[0][0]=0; ntmp1=0;
+ for(j=1; j<=ntmpnum; j++){
+ pt3d[0]=tmp3d[tmpnum[j]][0];
+ pt3d[1]=tmp3d[tmpnum[j]][1];
+ pt3d[2]=tmp3d[tmpnum[j]][2];
+ ntmp1=addptd3(tmp3d1,pt3d);
+ }
+ if(ntmp1>0){
+ ntmp2=appendd3(2,1,ntmp1,tmp3d1,tmp3d2);
+ }
+ }
+ outkL[0][0]=0; noutkL=0;
+ noutkL=appendd3(0,1,ntmp2,tmp3d2,outkL);
+ return noutkL;
+}
+
+int makexybdy(double ehL[][2]){
+ int i, nehL, ntmpd2;
+ double ptd3[3],ptd2[2],tmpd2[DsizeM][2],du,dv;
+ ehL[0][0]=0; nehL=0;
+ du=(Urng[1]-Urng[0])/Mdv;
+ dv=(Vrng[1]-Vrng[0])/Ndv;
+ if(DrawE==1){
+ tmpd2[0][0]=0; ntmpd2=0;
+ for(i=0; i<=Ndv; i++){
+ surffun(Urng[1],Vrng[0]+i*dv,ptd3);
+ ntmpd2=push2(ptd3[0],ptd3[1],tmpd2);
+ }
+ nehL=appendd2(2,1,ntmpd2,tmpd2,ehL);
+ }
+ if(DrawN==1){
+ tmpd2[0][0]=0; ntmpd2=0;
+ for(i=0; i<=Mdv; i++){
+ surffun(Urng[0]+i*du,Vrng[1],ptd3);
+ ntmpd2=push2(ptd3[0],ptd3[1],tmpd2);
+ }
+ nehL=appendd2(2,1,ntmpd2,tmpd2,ehL);
+ }
+ if(DrawW==1){
+ tmpd2[0][0]=0; ntmpd2=0;
+ for(i=0; i<=Ndv; i++){
+ surffun(Urng[0],Vrng[0]+i*dv,ptd3);
+ ntmpd2=push2(ptd3[0],ptd3[1],tmpd2);
+ }
+ nehL=appendd2(2,1,ntmpd2,tmpd2,ehL);
+ }
+ if(DrawS==1){
+ tmpd2[0][0]=0; ntmpd2=0;
+ for(i=0; i<=Mdv; i++){
+ surffun(Urng[0]+i*du,Vrng[0],ptd3);
+ ntmpd2=push2(ptd3[0],ptd3[1],tmpd2);
+ }
+ nehL=appendd2(2,1,ntmpd2,tmpd2,ehL);
+ }
+ return nehL;
+}
+
+int partitionseg(double fig[][2],double gL[][2], int ns, double out[]){
+ int nother, ndin, din[DsizeM][2], ndin2, din2[DsizeM][2];
+ int npar,nkouL, nout, ng;
+ int npt=length2(fig), ngL=length2(gL), npp;
+ int i, j, jj, n, k, ntmp1, ntmp2, ntmp3,tmp2i1[DsizeM], flg;
+ double eps0=pow(10,-5.0),tmp1d2[2], tmp2d2[2],tmpd4[4], dtmp, s;
+ double p[2], q[2], pd3[3], ans[4], tmp1d1[DsizeM], tmp2d1[DsizeM], tmp3d1[DsizeM];
+ double other[DsizeM], parL[DsizeM], g[DsizeM][2], kouL[DsizeM][4];
+ if(ns>1){
+ ndin=dataindexd1(Otherpartition,din);
+ other[0]=0; nother=0;
+ for(i=din[ns][0]; i<=din[ns][1]; i++){
+ dtmp=Otherpartition[i];
+ nother++;
+ other[nother]=dtmp;
+ }
+ }
+ else{
+ other[0]=0; nother=0;
+ Otherpartition[0]=0;
+ ndin=dataindexd2(2,gL,din);
+ for(i=1; i<=ndin-1; i++){
+ Otherpartition[i]=Inf; Otherpartition[0]++;
+ }
+ }
+ parL[1]=1; parL[2]=npt;
+ parL[0]=2; npar=2;
+ if(nother>0){
+ for(i=1; i<=nother; i++){
+ npar=appendd1(parL,other[i]);
+ }
+ }
+ ndin=dataindexd2(2,gL,din);
+ for(n=ns; n<=ndin; n++){
+ g[0][0]=0;
+ ng=appendd2(0,din[n][0],din[n][1],gL,g);
+ flg=0;
+ for(i=1; i<=ng; i++){
+ pull2(i,fig,tmp1d2);
+ pull2(i,g,tmp2d2);
+ if(dist(2,tmp1d2,tmp2d2)>Eps){
+ flg=1;
+ break;
+ }
+ }
+ if(flg==0){
+ nkouL=intersectselfPp(fig,Eps1, Eps2,kouL);
+ }
+ else{
+ nkouL=intersectcrvsPp(fig, g, Eps1, Eps2, kouL);
+ pull2(1,fig,tmp1d2);
+ nearestptpt(tmp1d2,g,ans);
+ if((ans[3]>eps0)&&(ans[3]<Eps1)){
+ tmpd4[0]=ans[0]; tmpd4[1]=ans[1];
+ tmpd4[2]=1; tmpd4[3]=floor(ans[2]+Eps);
+ nkouL=addptd4(kouL, tmpd4);
+ }
+ pull2(npt,fig,tmp1d2);
+ nearestptpt(tmp1d2,g, ans);
+ tmpd4[0]=ans[0]; tmpd4[1]=ans[1];
+ tmpd4[2]=ans[2]; tmpd4[3]=ans[3];
+ if((tmpd4[3]>eps0)&&(tmpd4[3]<Eps1)){
+ tmpd4[2]=npt; tmpd4[3]=floor(ans[2]+Eps);
+ nkouL=addptd4(kouL, tmpd4);
+ }
+ }
+ for(i=1; i<=nkouL; i++){
+ p[0]=kouL[i][0]; p[1]=kouL[i][1]; //dim(kouL)=4
+ s=kouL[i][2];
+ npar=appendd1(parL,s);
+ k=floor(kouL[i][3]+Eps);
+ s=paramoncurve(p,k,g);
+ ndin2=dataindexd1(Otherpartition,din2);
+ ntmp1=din2[n][1]-din2[n][0]+1;
+ for(j=1; j<=ntmp1; j++){
+ tmp1d1[j]=Otherpartition[din2[n][0]+j-1];
+ }
+ tmp1d1[0]=ntmp1;
+ ntmp1=appendd1(tmp1d1,s);
+ simplesort(tmp1d1);
+ tmp2d1[0]=0; ntmp2=0;
+ for(j=1; j<=ndin2; j++){
+ tmp3d1[0]=0; ntmp3=0;
+ ndin2=dataindexd1(Otherpartition,din2);
+ for(jj=din2[j][0]; jj<=din2[j][1]; jj++){
+ ntmp3=appendd1(tmp3d1,Otherpartition[jj]);
+ }
+ if(j!=n){
+ for(jj=1; jj<=ntmp3; jj++){
+ ntmp2=appendd1(tmp2d1,tmp3d1[jj]);
+ }
+ }
+ else{
+ for(jj=1; jj<=ntmp1; jj++){
+ ntmp2=appendd1(tmp2d1,tmp1d1[jj]);
+ }
+ }
+ ntmp2=appendd1(tmp2d1,Inf);
+ }
+ ntmp2--;
+ for(j=1; j<=ntmp2; j++){
+ Otherpartition[j]=tmp2d1[j];
+ }
+ Otherpartition[0]=ntmp2;
+ }
+ }
+ simplesort(parL);
+ parL[1]=1;
+ out[1]=parL[1];
+ out[0]=1; nout=1;
+ pointoncurve(parL[1],fig, Eps, p);
+ Partitionpt[0][0]=0;
+ npp=addptd2(Partitionpt, p);
+ for(i=1; i<=npar; i++){
+ pointoncurve(parL[i],fig, Eps, p);
+ dtmp=out[nout];
+ pointoncurve(dtmp,fig, Eps, q);
+ if(dist(2,p,q)>Eps1){
+ nout=appendd1(out,parL[i]);
+ npp=addptd2(Partitionpt,p);
+ }
+ }
+ if(out[nout]!=npt){
+ out[nout]=npt;
+ }
+ if(nout==1){
+ out[1]=1; out[2]=npt;
+ out[0]=2; nout=2;
+ }
+ return nout;
+}
+
+double funpthiddenQ(double u, double v, double pa[3]){
+ double Vec[3]={sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)};
+ double eps0=pow(10,-4.0)*(XMAX-XMIN)/10, pt[3], out;
+ surffun(u, v, pt);
+ if((fabs(Vec[1])>eps0)||(fabs(Vec[0])>eps0)){
+ out=(Vec[1]*(pt[0]-pa[0])-Vec[0]*(pt[1]-pa[1]));
+ }
+ else{
+ out=pt[0]-pa[0];
+ }
+ return out;
+}
+
+void makevaltable(double pta[3]){
+ double eps0=pow(10,-6.0), u, v, du, dv, p[3];
+ int i, j, nx=0, ny=0; ;
+ du=(Urng[1]-Urng[0])/Mdv;
+ dv=(Vrng[1]-Vrng[0])/Ndv;
+ for(j=0; j<=Ndv; j++){
+ v=Vrng[0]+j*dv;
+ for(i=0; i<=Mdv; i++){
+ u=Urng[0]+i*du;
+ Zval[j][i]=funpthiddenQ(u, v, pta);
+ }
+ }
+ for(i=0; i<=Mdv; i++){
+ Xval[i]=Urng[0]+i*du;
+ }
+ for(j=0; j<=Ndv; j++){
+ Yval[j]=Vrng[0]+j*dv;
+ }
+}
+
+int pthiddenQ(double pta[3], int uveq, double eps[2]){
+ int i, j, k, out, nqL, nsL, nptL, flg, nxt;
+ double Vec[3]={sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)};
+ double eps0, epspt, vec1[3], po[3]={0,0,0}, tmpd1, tmp1d1, tmp2d1, m1, m2;
+ double tmp3d1, tmp4d1, tmp5d1, tmp6d1, tmpd3[3], v1, v2, v3;
+ double tmpd2[2], p1[2], p2[2], ptuv[2], puv1[2], puv2[2];
+ double p1d3[3], p2d3[3], ptd3[3];
+ double ptL[DsizeM][6], sL[DsizeM][7], qL[DsizeM][2], pL[5][2], vL[5];
+// Out=1 : hidden
+// SL : List of segments near PtA+Vec
+ eps0=pow(10,-4.0)*(XMAX-XMIN)/10.0;
+ epspt=eps[0]*(XMAX-XMIN)/10.0;
+ out=0;
+ po[0]=0; po[1]=0; po[2]=0;
+ tmpd1=1/dist(3,Vec,po);
+ vec1[0]=tmpd1*Vec[0];
+ vec1[1]=tmpd1*Vec[1];
+ vec1[2]=tmpd1*Vec[2];
+ nptL=0;
+ makevaltable(pta);
+ nsL=0;
+ for(j=0; j<=Ndv-1; j++){
+ for(i=0; i<=Mdv-1; i++){
+ pL[0][0]=Xval[i]; pL[0][1]=Yval[j]; vL[0]=Zval[j][i];
+ pL[1][0]=Xval[i+1]; pL[1][1]=Yval[j]; vL[1]=Zval[j][i+1];
+ pL[2][0]=Xval[i+1]; pL[2][1]=Yval[j+1]; vL[2]=Zval[j+1][i+1];
+ pL[3][0]=Xval[i]; pL[3][1]=Yval[j+1]; vL[3]=Zval[j+1][i];
+ pL[4][0]=Xval[i]; pL[4][1]=Yval[j]; vL[4]=Zval[j][i];
+ qL[0][0]=0; nqL=0;
+ for(k=0; k<=3; k++){
+ p1[0]=pL[k][0]; p1[1]=pL[k][1];
+ p2[0]=pL[k+1][0]; p2[1]=pL[k+1][1];
+ m1=vL[k]; m2=vL[k+1];
+ if((m1>=eps0)&&(m2>=eps0)){
+ continue;
+ }
+ if((m1<=-eps0)&&(m2<=-eps0)){
+ continue;
+ }
+ if(fabs(m1)<eps0){
+ tmpd2[0]=p1[0]; tmpd2[1]=p1[1];
+ }
+ else if(fabs(m2)<eps0){
+ continue;
+ }
+ else{
+ tmpd2[0]=1/(m1-m2)*(-m2*p1[0]+m1*p2[0]);
+ tmpd2[1]=1/(m1-m2)*(-m2*p1[1]+m1*p2[1]);
+ }
+ nqL++;
+ qL[nqL][0]=tmpd2[0]; qL[nqL][1]=tmpd2[1];
+ }
+ if(nqL==2){
+ puv1[0]=qL[1][0]; puv1[1]=qL[1][1];
+ puv2[0]=qL[2][0]; puv2[1]=qL[2][1];
+ surffun(puv1[0],puv1[1],p1d3);
+ surffun(puv2[0],puv2[1],p2d3);
+ if(dist(2,p1d3,p2d3)<eps0){
+ continue;
+ }
+ tmp1d1=dist(3,p1d3,pta);
+ tmpd3[0]=p1d3[0]-pta[0];
+ tmpd3[1]=p1d3[1]-pta[1];
+ tmpd3[2]=p1d3[2]-pta[2];
+ tmp2d1=dotprod(3,tmpd3,vec1);
+ tmp3d1=sqrt(fabs(pow(tmp1d1,2.0)-pow(tmp2d1,2.0)));
+ tmp4d1=dist(3,p2d3, pta);
+ tmpd3[0]=p2d3[0]-pta[0];
+ tmpd3[1]=p2d3[1]-pta[1];
+ tmpd3[2]=p2d3[2]-pta[2];
+ tmp5d1=dotprod(3,tmpd3,vec1);
+ tmp6d1=sqrt(fabs(pow(tmp4d1,2.0)-pow(tmp5d1,2.0)));
+ if(tmp2d1<tmp5d1){
+ tmpd3[0]=p1d3[0]; tmpd3[1]=p1d3[1]; tmpd3[2]=p1d3[2];
+ p1d3[0]=p2d3[0]; p1d3[1]=p2d3[1]; p1d3[2]=p2d3[2];
+ p2d3[0]=tmpd3[0]; p2d3[1]=tmpd3[1]; p2d3[2]=tmpd3[2];
+ tmpd1=tmp2d1; tmp2d1=tmp5d1; tmp5d1=tmpd1;
+ tmpd1=tmp3d1; tmp3d1=tmp6d1; tmp6d1=tmpd1;
+ }
+ if((tmp3d1<eps[1]*epspt)&&(tmp6d1<eps[1]*epspt)){
+ if(tmp2d1>-eps0){
+ if(tmp5d1<-eps0){
+ nsL++;
+ sL[nsL][0]=p1d3[0]; sL[nsL][1]=p1d3[1]; sL[nsL][2]=p1d3[2];
+ sL[nsL][3]=p2d3[0]; sL[nsL][4]=p2d3[1]; sL[nsL][5]=p2d3[2];
+ sL[nsL][6]=-1;
+ }
+ else{
+ nsL++;
+ sL[nsL][0]=p1d3[0]; sL[nsL][1]=p1d3[1]; sL[nsL][2]=p1d3[2];
+ sL[nsL][3]=p2d3[0]; sL[nsL][4]=p2d3[1]; sL[nsL][5]=p2d3[2];
+ sL[nsL][6]=1;
+ }
+ }
+ }
+ v1=vec1[0]; v2=vec1[1]; v3=vec1[2];
+ if(fabs(v1)>eps0){
+ m1=pta[2]+v3/v1*(p1d3[0]-pta[0])-p1d3[2];
+ m2=pta[2]+v3/v1*(p2d3[0]-pta[0])-p2d3[2];
+ }
+ else if(fabs(v2)>eps0){
+ m1=pta[2]+v3/v2*(p1d3[1]-pta[1])-p1d3[2];
+ m2=pta[2]+v3/v2*(p2d3[1]-pta[1])-p2d3[2];
+ }
+ else{
+ m1=pta[1]-p1d3[1];
+ m2=pta[1]-p2d3[1];
+ }
+ if(m1*m2>=0){
+ if(((m1>eps0)&&(m2>eps0))||((m1<-eps0)&&(m2<-eps0))){
+ continue;
+ }
+ if(fabs(m1)<=eps0){
+ ptd3[0]=p1d3[0]; ptd3[1]=p1d3[1]; ptd3[2]=p1d3[2];
+ ptuv[0]=puv1[0]; ptuv[1]=puv1[1];
+ }
+ else{
+ ptd3[0]=p2d3[0]; ptd3[1]=p2d3[1]; ptd3[2]=p2d3[2];
+ ptuv[0]=puv2[0]; ptuv[1]=puv2[1];
+ }
+ }
+ else{
+ ptd3[0]=1/(m1-m2)*(-m2*p1d3[0]+m1*p2d3[0]);
+ ptd3[1]=1/(m1-m2)*(-m2*p1d3[1]+m1*p2d3[1]);
+ ptd3[2]=1/(m1-m2)*(-m2*p1d3[2]+m1*p2d3[2]);
+ ptuv[0]=1/(m1-m2)*(-m2*puv1[0]+m1*puv2[1]);
+ }
+ tmpd3[0]=ptd3[0]-pta[0];
+ tmpd3[1]=ptd3[1]-pta[1];
+ tmpd3[2]=ptd3[2]-pta[2];
+ tmp1d1=dotprod(3,tmpd3,vec1);
+ tmp2d1=fabs(tmp1d1);
+ tmpd3[0]=p1d3[0]-p2d3[0];
+ tmpd3[1]=p1d3[1]-p2d3[1];
+ tmpd3[2]=p1d3[2]-p2d3[2];
+ tmp3d1=dotprod(3,tmpd3,vec1);
+ tmp4d1=dist(3,p1d3,p2d3);
+ tmp6d1=tmp3d1/tmp4d1;
+ if(tmp1d1>eps0){
+ if(fabs(tmp6d1)>0.75){
+ nptL++;
+ ptL[nptL][0]=ptd3[0]; ptL[nptL][1]=ptd3[1]; ptL[nptL][2]=ptd3[2];
+ ptL[nptL][3]=p2d3[0]; ptL[nptL][4]=p2d3[1]; ptL[nptL][5]=p2d3[2];
+ continue;
+ }
+ if(tmp2d1>epspt){
+ return 1;
+ }
+ if(tmp2d1<2*epspt){
+ continue;
+ }
+ }
+ }
+ }
+ }
+ if(nptL==0){
+ return 0;
+ }
+ for(i=1; i<=nsL; i++){
+ p2d3[0]=sL[i][3]; p2d3[1]=sL[i][4]; p2d3[2]=sL[i][5];
+ flg=0;
+ for(j=1; j<=nsL; j++){
+ p1d3[0]=sL[j][0]; p1d3[1]=sL[j][1]; p1d3[2]=sL[j][2];
+ if(dist(3,p1d3,p2d3)<eps0){
+ sL[i][6]=j;
+ flg=1;
+ break;
+ }
+ }
+ if((flg==0)&&(sL[i][6]>0)){
+ sL[i][6]=-2;
+ }
+ }
+ for(i=1; i<=nptL; i++){
+ p2d3[0]=ptL[i][3]; p2d3[1]=ptL[i][4]; p2d3[2]=ptL[i][5];
+ flg=0;
+ for(j=1; j<=nsL; j++){
+ p1d3[0]=sL[j][0]; p1d3[1]=sL[j][1]; p1d3[2]=sL[j][2];
+ if(dist(3,p1d3,p2d3)<eps0){
+ flg=1;
+ break;
+ }
+ }
+ if(flg==0){
+ ptd3[0]=ptL[i][0]; ptd3[1]=ptL[i][1]; ptd3[2]=ptL[i][2];
+ tmpd1=dist(3,p2d3,ptd3);
+ tmpd3[0]=p2d3[0]-ptd3[0];
+ tmpd3[1]=p2d3[1]-ptd3[1];
+ tmpd3[2]=p2d3[2]-ptd3[2];
+ tmp1d1=fabs(dotprod(3,tmpd3,vec1));
+ tmp2d1=sqrt(fabs(pow(tmpd1,2.0)-pow(tmp1d1,2.0)));
+ tmp3d1=tmp2d1*dist(3,ptd3,pta)/tmpd1;
+ if(tmp3d1>epspt/5){
+ return 1;
+ }
+ else{
+ continue;
+ }
+ }
+ nxt=sL[j][6];
+ while(nxt>0){
+ ptd3[0]=sL[nxt][3]; ptd3[1]=sL[nxt][4]; ptd3[2]=sL[nxt][5];
+ nxt=sL[nxt][6];
+ }
+ if(nxt==-2){
+ return 1;
+ }
+ else{
+ out=0;
+ }
+ }
+ return out;
+}
+
+int nohiddenpara2(double paL[], double fk[][3], int uveq, double figkL[][3]){
+ double eps0=pow(10,-5.0), s, p1[2], p2[2], q[2],tmpd1, tmpd2[2], epstmp[2];
+ double fh[DsizeM][2], pta[3], ptap[2], vec[3];
+ double figL[DsizeM][2], tmpmd2[DsizeM][2], tmpmd3[DsizeM][3];
+ double tmp1d2[2], tmp2d2[2], tmp3d2[2], tmpd3[3],tmpd4[4];
+ double pd2[2], qd2[2], pd3[3], qd3[3], sp, sq, tp, tq, dtmp, dtmp1, dtmp2;
+ int ncusp=floor(Cusppt[0][0]+0.5), seL[DsizeM], npaL=floor(paL[0]+0.5);
+ int i, n, nfh, nfk, nfigL, nfigkL, nhidden, cspflg, nseL=0, ntmp, flg, tmpi1[DsizeM];
+ nfk=length3(fk);
+ nfh=projpara(fk, fh);
+ pull2(1,fh,p1);
+ pull2(nfh,fh,p2);
+ cspflg=1;
+ for(i=1; i<=ncusp; i++){
+ pull2(i, Cusppt, tmpd2);
+ if(dist(2,tmpd2,p1)<eps0){
+ if(cspflg==1){
+ cspflg=2;
+ }
+ else if(cspflg==3){
+ cspflg=6;
+ }
+ continue;
+ }
+ if(dist(2,tmpd2,p2)<eps0){
+ if(cspflg==1){
+ cspflg=3;
+ }
+ else if(cspflg==2){
+ cspflg=6;
+ }
+ continue;
+ }
+ }
+ seL[0]=0; nseL=0;
+ for(n=1; n<=npaL-1; n++){
+ s=(paL[n]+paL[n+1])/2.0;
+ ntmp=invparapt(s,fh,fk, pta);
+ parapt(pta,ptap);
+ epstmp[0]=Eps1; epstmp[1]=Eps3;
+ if((n==1)&&(cspflg % 2==0)){
+ pull2(1,fh,p1);
+ dtmp=fmin(Eps1*dist(2,ptap, p1),Eps1);
+ epstmp[0]=dtmp; epstmp[1]=Eps3;
+ }
+ if((n==npaL-1)&&(cspflg % 3==0)){
+ pull2(nfh,fh,p1);
+ dtmp=fmin(Eps1*dist(2, ptap, p1), Eps1);
+ epstmp[0]=dtmp; epstmp[1]=Eps3;
+ }
+ flg=pthiddenQ(pta, uveq, epstmp);
+ if(flg==0){
+ nseL=appendi1(seL,n);
+ }
+ }
+ figL[0][0]=0; nfigL=0;
+ figkL[0][0]=0; nfigkL=0;
+ for(i=1; i<=nseL; i++){
+ pointoncurve(paL[seL[i]], fh, Eps, tmp1d2);
+ pointoncurve(paL[seL[i]+1], fh, Eps, tmp2d2);
+ if(i==1){
+ copyd(0,1,tmp1d2,pd2);
+ sp=paL[seL[i]];
+ copyd(0,1,tmp2d2,qd2);
+ sq=paL[seL[i]+1];
+ }
+ else{
+ if(memberi(seL[i]-1,seL)==1){
+ copyd(0,1,tmp2d2,qd2);
+ sq=paL[seL[i]+1];
+ }
+ else{
+ ntmp=partcrv(sp,sq,fh,tmpmd2);
+ nfigL=appendd2(2,1,ntmp,tmpmd2,figL);
+ tp=invparapt(sp,fh,fk, tmpd3);
+ tq=invparapt(sq,fh,fk,tmpd3);
+ ntmp=partcrv3(tp,tq,fk,tmpmd3);
+ nfigkL=appendd3(2,1,ntmp,tmpmd3,figkL);
+ copyd(0,1,tmp1d2,pd2);
+ sp=paL[seL[i]];
+ copyd(0,1,tmp2d2,qd2);
+ sq=paL[seL[i]+1];
+ }
+ }
+ }
+ if(nseL>0){
+ if(dist(2,pd2,qd2)>Eps1){
+ nearestptpt(pd2,fh,tmpd4);
+ dtmp1=tmpd4[2];
+ nearestptpt(qd2,fh,tmpd4);
+ dtmp2=tmpd4[2];
+ ntmp=partcrv(dtmp1,dtmp2,fh,tmpmd2);
+ nfigL=appendd2(2,1,ntmp,tmpmd2,figL);
+ tp=invparapt(sp,fh,fk,tmpd3);
+ tq=invparapt(sq,fh,fk,tmpd3);
+ ntmp=partcrv3(tp,tq,fk,tmpmd3);
+ nfigkL=appendd3(2,1,ntmp, tmpmd3, figkL);
+ }
+ else{
+ nfigL=appendd2(2,1,nfh, fh, figL);
+ nfigkL=appendd3(2,1,nfk,fk,figkL);
+ }
+ }
+ tmpi1[0]=0; ntmp=0;
+ for(i=1; i<=npaL-1; i++){
+ if(memberi(i,seL)==0){
+ ntmp=appendi1(tmpi1,i);
+ }
+ }
+ copyi(0,ntmp,tmpi1,seL);
+ seL[0]=ntmp; nseL=ntmp;
+ Hiddendata[0][0]=0; nhidden=0;
+ for(i=1; i<=nseL; i++){
+ dtmp=paL[seL[i]];
+ pointoncurve(dtmp,fh,Eps,tmp1d2);
+ dtmp=paL[seL[i]+1];
+ pointoncurve(dtmp,fh,Eps, tmp2d2);
+ if(i==1){
+ copyd(0,1,tmp1d2,pd2);
+ sp=paL[seL[i]];
+ copyd(0,1,tmp2d2,qd2);
+ sq=paL[seL[i]+1];
+ }
+ else{
+ if(memberi(seL[i]-1,seL)==1){
+ copyd(0,1,tmp2d2,qd2);
+ sq=paL[seL[i]+1];
+ }
+ else{
+ tp=invparapt(sp,fh,fk,tmpd3);
+ tq=invparapt(sq,fh,fk,tmpd3);
+ ntmp=partcrv3(tp,tq,fk,tmpmd3);
+ nhidden=appendd3(2,1,ntmp,tmpmd3,Hiddendata);
+ copyd(0,1,tmp1d2,pd2);
+ sp=paL[seL[i]];
+ copyd(0,1,tmp2d2,qd2);
+ sq=paL[seL[i]+1];
+ }
+ }
+ }
+ if(nseL>0){
+ if(dist(2,pd2,qd2)>Eps1){
+ tp=invparapt(sp,fh,fk,tmpd3);
+ tq=invparapt(sq,fh,fk,tmpd3);
+ ntmp=partcrv3(tp,tq,fk,tmpmd3);
+ nhidden=appendd3(2,1,ntmp,tmpmd3,Hiddendata);
+ }
+ else{
+ nhidden=appendd3(2,1,nfk,fk,Hiddendata);
+ }
+ }
+ return nfigkL;
+}
+
+int borderparadata(double fkL[][3], double fsL[][3]){
+ double ekL[DsizeL][3], fall[DsizeL][2], fbdxy[DsizeL][2];
+ double tmpd3[DsizeM][3], tmpd2[DsizeM][2], p[2], p3[3];
+ double figkL[DsizeM][3], du, dv;
+ int i, j, nall, nekL, nfsL, nfkL=length3(fkL), nfall, nfbdxy;
+ int ndin, din[DsizeS][2], ndin2,din2[DsizeM][2];
+ int ntmp, ntmpd3,ntmpd2, npar=0, nfigkL;
+ double par[DsizeM];
+ du=(Urng[1]-Urng[0])/Mdv;
+ dv=(Vrng[1]-Vrng[0])/Ndv;
+ fsL[0][0]=0;
+ ekL[0][0]=0; nekL=0;
+ if(DrawE==1){
+ tmpd2[0][0]=0; nall=0;
+ for(j=0; j<=Ndv; j++){
+ nall=add2(tmpd2, Urng[1], Vrng[0]+j*dv);
+ }
+ nall=surfcurve(2, tmpd2,tmpd3);
+ nekL=appendd3(2,1,nall,tmpd3,ekL);
+ }
+ if(DrawN==1){
+ tmpd2[0][0]=0; nall=0;
+ for(j=0; j<=Mdv; j++){
+ nall=add2(tmpd2, Urng[0]+j*du, Vrng[1]);
+ }
+ nall=surfcurve(2, tmpd2,tmpd3);
+ nekL=appendd3(2,1,nall,tmpd3,ekL);
+ }
+ if(DrawW==1){
+ tmpd2[0][0]=0; nall=0;
+ for(j=0; j<=Ndv; j++){
+ nall=add2(tmpd2, Urng[0], Vrng[0]+j*dv);
+ }
+ nall=surfcurve(2, tmpd2,tmpd3);
+ nekL=appendd3(2,1,nall,tmpd3,ekL);
+ }
+ if(DrawS==1){
+ tmpd2[0][0]=0; nall=0;
+ for(j=0; j<=Mdv; j++){
+ nall=add2(tmpd2, Urng[0]+j*du, Vrng[0]);
+ }
+ nall=surfcurve(2, tmpd2,tmpd3);
+ nekL=appendd3(2,1,nall,tmpd3,ekL);
+ }
+ if(nekL>0){
+ nfkL=appendd3(2,1,nekL,ekL,fkL);
+ }
+ nfall=projpara(fkL,fall);
+ nfbdxy=makexybdy(fbdxy);
+ Otherpartition[0]=0;
+ ndin=dataindexd2(2,fall,din);
+ Borderpt[0][0]=0;
+ for(i=1; i<=ndin-1; i++){
+ Otherpartition[i]=Inf; Otherpartition[0]++;
+ }
+ Borderhiddendata[0][0]=0;
+ ndin=dataindexd2(2,fall,din);
+ ndin2=dataindexd3(2,fkL,din2);
+ for(i=1; i<= ndin2; i++){
+ tmpd3[0][0]=0;
+ ntmpd3=appendd3(0,din2[i][0],din2[i][1],fkL,tmpd3);
+ ntmpd2=projpara(tmpd3,tmpd2);
+ npar=partitionseg(tmpd2,fall, 1,par);
+ if(npar>2){
+ ntmp=npar-1;
+ tmpd2[0][0]=0; ntmpd2=0;
+ for(j=2; j<=ntmp; j++){
+ pull2(j,Partitionpt,p);
+ ntmpd2=addptd2(tmpd2, p);
+ }
+ ntmp=appendd2(0, 1,ntmpd2,tmpd2,Borderpt);
+ }
+ tmpd3[0][0]=0;
+ for(j=din2[i][0]; j<=din2[i][1]; j++){
+ pull3(j,fkL,p3);
+ ntmpd3=addptd3(tmpd3,p3);
+ }
+ nfigkL=nohiddenpara2(par,tmpd3,1, figkL);
+ if(nfigkL>0){
+ nfsL=appendd3(2,1,nfigkL,figkL, fsL);
+ }
+ ntmp=length3(Hiddendata);
+ if(ntmp>0){
+ appendd3(2,1,ntmp,Hiddendata,Borderhiddendata);
+ }
+ }
+ return nfsL;
+}
+
+int sfbdparadata(double outd3[][3]){
+ double pdata[DsizeL][2], pdatad3[DsizeL][3];
+ int nall, n;
+ int cusp[DsizeM]; // remove?
+ evlptablepara();
+ nall=implicitplot(pdata);
+ nall=cuspsplitpara(pdata, pdatad3);
+ n=length2(Cuspsplitpt);
+ Cusppt[0][0]=0;
+ nall=appendd2(0, 1,n,Cuspsplitpt,Cusppt);
+ nall= borderparadata(pdatad3, outd3);
+ push3(Inf,3,0,outd3);
+ nall=appendd3(0,1,length3(Borderhiddendata),Borderhiddendata,outd3);
+ push3(Inf,3,0,outd3);
+ return nall;
+}
+
+void makevaltablemeet(double pa[3], double vec[3], double eps0){
+ double u, v, du, dv, pt[3];
+ int i, j;
+ du=(Urng[1]-Urng[0])/Mdv;
+ dv=(Vrng[1]-Vrng[0])/Ndv;
+ for(j=0; j<=Ndv; j++){
+ v=Vrng[0]+j*dv;
+ for(i=0; i<=Mdv; i++){
+ u=Urng[0]+i*du;
+ surffun(u, v, pt);
+ if((fabs(vec[1])>eps0)||(fabs(vec[0])>eps0)){
+ Zval[j][i]=(vec[1]*(pt[0]-pa[0])-vec[0]*(pt[1]-pa[1]));
+ }
+ else{
+ Zval[j][i]=pt[0]-pa[0];
+ }
+ }
+ }
+ for(i=0; i<=Mdv; i++){
+ Xval[i]=Urng[0]+i*du;
+ }
+ for(j=0; j<=Ndv; j++){
+ Yval[j]=Vrng[0]+j*dv;
+ }
+}
+
+int meetpoints(double pta[3], double ptb[3], double eps, double ptL[][3]){
+ double eps0=pow(10,-4.0), vec[3], out[DsizeM], pL[5][2], vL[5];
+ double qL[DsizeM][2], p1d2[2], p2d2[2], tmpd2[2], puv1d2[2], puv2d2[2];
+ double m1,m2, p1d3[3], p2d3[3], v1, v2, v3, ptd3[3], ptuvd2[2], tmp1d1;
+ double po[3]={0,0,0}, tmpmd1[DsizeM], tmp1d3[3];
+ int nout, nptL, ntmp, nqL, i, j, k;
+ vec[0]=ptb[0]-pta[0]; vec[1]=ptb[1]-pta[1]; vec[2]=ptb[2]-pta[2];
+ out[0]=0; nout=0;
+ ptL[0][0]=0; nptL=0;
+ makevaltablemeet(pta,vec,eps0);
+ for(j=0; j<=Ndv-2; j++){
+ for(i=0; i<=Mdv-2; i++){
+ pL[0][0]=Xval[i]; pL[0][1]=Yval[j]; vL[0]=Zval[j][i];
+ pL[1][0]=Xval[i+1]; pL[1][1]=Yval[j]; vL[1]=Zval[j][i+1];
+ pL[2][0]=Xval[i+1]; pL[2][1]=Yval[j+1]; vL[2]=Zval[j+1][i+1];
+ pL[3][0]=Xval[i]; pL[3][1]=Yval[j+1]; vL[3]=Zval[j+1][i];
+ pL[4][0]=Xval[i]; pL[4][1]=Yval[j]; vL[4]=Zval[j][i];
+ qL[0][0]=0; nqL=0;
+ for(k=0; k<=3; k++){
+ pull2(k,pL,p1d2);
+ pull2(k+1,pL,p2d2);
+ m1=vL[k]; m2=vL[k+1];
+ if((m1>=eps0)&&(m2>=eps0)){
+ continue;
+ }
+ if((m1<=-eps0)&&(m2<=-eps0)){
+ continue;
+ }
+ if(fabs(m1)<eps0){
+ copyd(0,1,p1d2,tmpd2);
+ }
+ else if(fabs(m2)<eps0){
+ continue;
+ }
+ else{
+ tmpd2[0]=1/(m1-m2)*(-m2*p1d2[0]+m1*p2d2[0]);
+ tmpd2[1]=1/(m1-m2)*(-m2*p1d2[1]+m1*p2d2[1]);
+ }
+ nqL=addptd2(qL,tmpd2);
+ }
+ if(nqL==2){
+ pull2(1, qL, puv1d2);
+ pull2(2, qL, puv2d2);
+ surffun(puv1d2[0], puv1d2[1], p1d3);
+ surffun(puv2d2[0], puv2d2[1], p2d3);
+ v1=vec[0]; v2=vec[1]; v3=vec[2];
+ if(fabs(v1)>eps0){
+ m1=pta[2]+v3/v1*(p1d3[0]-pta[0])-p1d3[2];
+ m2=pta[2]+v3/v1*(p2d3[0]-pta[0])-p2d3[2];
+ }
+ else if(fabs(v2)>eps0){
+ m1=pta[2]+v3/v2*(p1d3[1]-pta[1])-p1d3[2];
+ m2=pta[2]+v3/v2*(p2d3[1]-pta[1])-p2d3[2];
+ }
+ else{
+ m1=pta[1]-p1d3[1];
+ m2=pta[1]-p2d3[1];
+ }
+ if(m1*m2>=-eps0){
+ if(((m1>eps0)&&(m2>eps0)) || ((m1<-eps0)&&(m2<-eps0))){
+ continue;
+ }
+ if(fabs(m1)<=eps0){
+ copyd(0,2,p1d3,ptd3);
+ copyd(0,1,puv1d2,ptuvd2);
+ }
+ else{
+ copyd(0,2,p2d3,ptd3);
+ copyd(0,1,puv2d2,ptuvd2);
+ }
+ }
+ else{
+ ptd3[0]=1/(m1-m2)*(-m2*p1d3[0]+m1*p2d3[0]);
+ ptd3[1]=1/(m1-m2)*(-m2*p1d3[1]+m1*p2d3[1]);
+ ptd3[2]=1/(m1-m2)*(-m2*p1d3[2]+m1*p2d3[2]);
+ }
+ tmp1d3[0]=ptd3[0]-pta[0]; tmp1d3[1]=ptd3[1]-pta[1];
+ tmp1d3[2]=ptd3[2]-pta[2];
+ tmp1d1=dotprod(3,tmp1d3,vec);
+ tmp1d1=tmp1d1/pow(dist(3,vec,po),2.0);
+ if((tmp1d1>-eps0)&&(tmp1d1<1+eps0)){
+ nout=appendd1(out,tmp1d1);
+ }
+ }
+ }
+ }
+ if(nout>>0){
+ simplesort(out);
+ tmpmd1[1]=out[1]; ntmp=1;
+ for(i=2; i<=nout; i++){
+ tmp1d3[0]=(out[i]-tmpmd1[ntmp])*vec[0];
+ tmp1d3[1]=(out[i]-tmpmd1[ntmp])*vec[1];
+ tmp1d3[2]=(out[i]-tmpmd1[ntmp])*vec[2];
+ tmp1d1=dist(3,tmp1d3,po);
+ if(tmp1d1>eps){
+ ntmp=appendd1(tmpmd1,out[i]);
+ }
+ }
+ nout=ntmp;
+ copyd(0,ntmp,tmpmd1,out);
+ for(i=1; i<=nout; i++){
+ tmp1d3[0]=pta[0]+out[i]*vec[0];
+ tmp1d3[1]=pta[1]+out[i]*vec[1];
+ tmp1d3[2]=pta[2]+out[i]*vec[2];
+ nptL=addptd3(ptL,tmp1d3);
+ }
+ }
+ return nptL;
+}
+
+int crvsfparadata(double fkL[][3], double fbdkL[][3], int sepflg, double out[][3]){
+ double fbdy[DsizeL][2], fk[DsizeM][3],fkp[DsizeM][3], outh[DsizeL][3];
+ double fh[DsizeM][2], parL[DsizeM], tmpmd3[DsizeM][3];
+ double ptL[DsizeM][3], tmpd2[2], tmpd3[3], tmp1d1, tmp2d1, dt;
+ double po[2]={0,0}, epsd2[2]={Eps1,Eps3}, pa[3], pb[3];
+ int nbor=length3(Borderhiddendata), nfkL,nfbdkL, nfbdy, nfk, nall;
+ int ncshidden, npar, ndin, din[DsizeM][2], ndin2,din2[DsizeS][2];
+ int nn, i, j, k, n, nptL, nout;
+ nfkL=length3(fkL);
+ nfbdy=projpara(fbdkL,fbdy);
+ out[0][0]=0;
+ outh[0][0]=0;
+ ndin=dataindexd3(2,fkL,din);
+ for(nn=1; nn<=ndin; nn++){
+ fkp[0][0]=0;
+ nfk=appendd3(0,din[nn][0],din[nn][1],fkL,fkp);
+ n=fmax(1,floor((fmax(Mdv,Ndv)+1)/(nfk-1)+0.5)); //17.06.16
+ dt=1.0/n;
+ fk[0][0]=0;
+ for(i=1; i<nfk; i++){
+ for(j=0; j<n; j++){
+ tmpd3[0]=fkp[i][0]+(fkp[i+1][0]-fkp[i][0])*j*dt;
+ tmpd3[1]=fkp[i][1]+(fkp[i+1][1]-fkp[i][1])*j*dt;
+ tmpd3[2]=fkp[i][2]+(fkp[i+1][2]-fkp[i][2])*j*dt;
+ addptd3(fk,tmpd3);
+ }
+ }
+ nfk=appendd3(0,nfk,nfk,fkp,fk);
+ nall=projpara(fk,fh);
+ npar=partitionseg(fh, fbdy,1, parL);
+ if(sepflg>=0){
+ for(i=1; i<=nfk-1; i++){
+ pull3(i,fk,pa);
+ pull3(i+1,fk,pb);
+ nptL=meetpoints(pa,pb, Eps2,ptL);
+ for(j=1; j<=nptL; j++){
+ pull3(j,ptL,tmpd3);
+ parapt(tmpd3,tmpd2);
+ tmp1d1=paramoncurve(tmpd2,i,fh);
+ tmp2d1=Inf;
+ for(k=1; k<=npar; k++){
+ tmp2d1=fmin(tmp2d1,fabs(parL[k]-tmp1d1));
+ }
+ tmpd3[0]=pb[0]-pa[0]; tmpd3[1]=pb[1]-pa[1];
+ tmpd3[2]=pb[2]-pa[2];
+ if(tmp2d1*dist(3,tmpd3,po)>Eps1){
+ npar=appendd1(parL,tmp1d1);
+ }
+ }
+ simplesort(parL);
+ }
+ }
+ nohiddenpara2(parL,fk,1, tmpmd3);
+ appendd3(2,1,length3(tmpmd3),tmpmd3,out);
+ appendd3(2,1, length3(Hiddendata),Hiddendata,outh);
+ }
+ push3(Inf,3,0,out); //17.06.17
+ nout=appendd3(0,1,length3(outh),outh,out);
+ push3(Inf,3,0,out); //17.06.17
+ return nout;
+}
+
+int wireparadata(double bdyk[][3], double udv[], double vdv[], int num,
+ double fsL[][3]){
+ double fbdy[DsizeL][2], udiv[DsizeM], vdiv[DsizeM], fbdxy[DsizeM][2];
+ double fs[DsizeL][3], u, v, d, pdata[DsizeM][3], fkL[DsizeM][3];
+ double fsLh[DsizeLL][3];
+ double tmpmd2[DsizeM][2], fk[DsizeM][3], par[DsizeM], p[2];
+ int nfbdy, nd, i, j, k, n, nu, nv, nfbdxy, nfsL, npdata, nfkL, nfk, npar,ntmp;
+ int nwire, ndin, din[DsizeM][2], nfs, ndin2, din2[DsizeM][2];
+ nfbdy=projpara(bdyk, fbdy);
+ Wirept[0][0]=0;
+ udiv[0]=0; nu=0;
+ vdiv[0]=0; nv=0;
+ n=floor(udv[0]+0.5);
+ if(n==-1){
+ nd=floor(udv[1]+0.5);
+ d=(Urng[1]-Urng[0])/(nd+1);
+ for(i=1; i<=nd; i++){
+ u=Urng[0]+i*d;
+ nu=appendd1(udiv,u);
+ }
+ }
+ else{
+ for(i=1; i<=n; i++){
+ nu=appendd1(udiv,udv[i]);
+ }
+ }
+ n=floor(vdv[0]+0.5);
+ if(n==-1){
+ nd=floor(vdv[1]+0.5);
+ d=(Vrng[1]-Vrng[0])/(nd+1);
+ for(i=1; i<=nd; i++){
+ v=Vrng[0]+i*d;
+ nv=appendd1(vdiv,v);
+ }
+ }
+ else{
+ for(i=1; i<=n; i++){
+ nv=appendd1(vdiv,vdv[i]);
+ }
+ }
+ nfbdxy=makexybdy(fbdxy);
+ Wirept[0][0]=0;
+ fsL[0][0]=0; nfsL=0;
+ fsLh[0][0]=0;
+ for(i=1; i<=nu; i++){
+ u=udiv[i];
+ d=(Vrng[1]-Vrng[0])/(num*Ndv);
+ tmpmd2[0][0]=0; ntmp=0;
+ for(j=1;j<=(num*Ndv)+1; j++){
+ v=Vrng[0]+(j-1)*d;
+ p[0]=u; p[1]=v;
+ ntmp=addptd2(tmpmd2,p);
+ }
+ nfkL=cuspsplitpara(tmpmd2, fkL);
+ ndin=dataindexd3(2,fkL,din);
+ for(j=1; j<=ndin; j++){
+ fk[0][0]=0;
+ nfk=appendd3(0, din[j][0], din[j][1], fkL,fk);
+ ntmp=projpara(fk,tmpmd2);
+ npar=partitionseg(tmpmd2, fbdy, 1, par);
+ ntmp=length2(Partitionpt);
+ if(ntmp>2){
+ for(k=2; k<=ntmp; k++){
+ pull2(k, Partitionpt, p);
+ nwire=addptd3(Wirept,p);
+ }
+ }
+ nfs=nohiddenpara2(par,fk,1, fs);
+ n=length3(Hiddendata);
+ ntmp=appendd3(2,1,n, Hiddendata,fsLh);
+ nfsL=appendd3(2,1,nfs,fs,fsL);
+ }
+ }
+ for(i=1; i<= nv; i++){
+ v=vdiv[i];
+ d=(Urng[1]-Urng[0])/(num*Mdv);
+ tmpmd2[0][0]=0; ntmp=0;
+ for(j=1;j<=(num*Mdv)+1; j++){
+ u=Urng[0]+(j-1)*d;
+ p[0]=u; p[1]=v;
+ ntmp=addptd2(tmpmd2,p);
+ }
+ nfkL=cuspsplitpara(tmpmd2, fkL);
+ ndin=dataindexd3(2,fkL,din);
+ for(j=1; j<=ndin; j++){
+ fk[0][0]=0;
+ nfk=appendd3(0, din[j][0], din[j][1], fkL,fk);
+ ntmp=projpara(fk,tmpmd2);
+ npar=partitionseg(tmpmd2, fbdy, 1, par);
+ ntmp=length2(Partitionpt);
+ if(ntmp>2){
+ for(k=2; k<=ntmp; k++){
+ pull2(k, Partitionpt, p);
+ nwire=addptd3(Wirept,p);
+ }
+ }
+ nohiddenpara2(par,fk,1, fs);
+ appendd3(2,1,length3(Hiddendata), Hiddendata,fsLh);
+ appendd3(2,1,length3(fs),fs,fsL);
+ }
+ }
+ push3(Inf,3,0,fsL);
+ nfsL=appendd3(0,1,length3(fsLh),fsLh,fsL);
+ push3(Inf,3,0,fsL);
+ return nfsL;
+}
+
+/*
+double cutfun(int ch, double u, double v){
+ double p[3],val ;
+ surffun(u,v,p);
+ val=p[0]+p[1]-0.5;
+ return val;
+}
+*/
+
+void makevaltablecut(int ch){
+ double eps0=pow(10,-6.0), u, v, du, dv;
+ int i, j, nx=0, ny=0; ;
+ du=(Urng[1]-Urng[0])/Mdv;
+ dv=(Vrng[1]-Vrng[0])/Ndv;
+ for(j=0; j<=Ndv; j++){
+ v=Vrng[0]+j*dv;
+ for(i=0; i<=Mdv; i++){
+ u=Urng[0]+i*du;
+ Zval[j][i]=cutfun(ch, u,v);
+ }
+ }
+ for(i=0; i<=Mdv; i++){
+ Xval[i]=Urng[0]+i*du;
+ }
+ for(j=0; j<=Ndv; j++){
+ Yval[j]=Vrng[0]+j*dv;
+ }
+}
+
+int sfcutdata(int ch, double ekL[][3]){
+ double cutuvL[DsizeL][2], out1[DsizeM][2], out2[DsizeM][3], pt[3];
+ int i, j, nall, ndin, din[DsizeM][2], nekL,nout1,nout2;
+ makevaltablecut(ch);
+ nall=implicitplot(cutuvL);
+ ekL[0][0]=0; nekL=0;
+ ndin=dataindexd2(2,cutuvL,din);
+ for(i=1; i<=ndin; i++){
+ out1[0][0]=0;
+ nout1=appendd2(2,din[i][0],din[i][1],cutuvL,out1);
+ out2[0][0]=0;
+ for(j=1; j<=nout1; j++){
+ surffun(out1[j][0], out1[j][1], pt);
+ nout2=addptd3(out2,pt);
+ }
+ nekL=appendd3(2,1,nout2,out2,ekL);
+ }
+ return nekL;
+}
+
+int crv3onsfparadata(double fk[][3], double fbdyd3[][3], double out[][3]){
+ double fbdy[DsizeL][2], fh[DsizeL][2], tmpmd2[DsizeL][2], par[DsizeM];
+ int n, nall, nfbdy, nfbdxy, npar, nout;
+ out[0][0]=0;
+ nfbdy=projpara(fbdyd3,fbdy);
+// nall=ospline3(2,fk,2,fk1);
+ projpara(fk,fh);
+ partitionseg(fh,fbdy, 1, par);
+ nohiddenpara2(par,fk, 1,out);
+ push3(Inf,3,0,out);
+ nall=appendd3(0,1,length3(Hiddendata),Hiddendata,out);
+ push3(Inf,3,0,out); //17.06.16
+ return nall;
+}
+
+int projcoordcurve(double curve[][3], double out[][3]){
+ double SP=sin(PHI), CP=cos(PHI), ST=sin(THETA), CT=cos(THETA);
+ double pt[3], xz, yz, zz;
+ int i, n, nall;
+ out[0][0]=0;
+ n=length3(curve);
+ for(i=1; i<=n; i++){
+ pull3(i, curve, pt);
+ if(pt[0]>Inf-1){
+ xz=pt[0]; yz=pt[1]; zz=pt[2];
+ }
+ else{
+ xz=-pt[0]*SP+pt[1]*CP;
+ yz=-pt[0]*CP*CT-pt[1]*SP*CT+pt[2]*ST;
+ zz=pt[0]*CP*ST+pt[1]*SP*ST+pt[2]*CT;
+ }
+ nall=push3(xz,yz,zz,out);
+ }
+ return nall;
+}
+
+int kukannozoku(double jokyo[2], double kukanL[][2], double res[][2]){
+ double t1, t2, tmpd2[2], ku[2];
+ int i, j, ii, nn, flg, nres;
+ nn=length2(kukanL);
+ t1=jokyo[0];
+ t2=jokyo[1];
+ pull2(1,kukanL,tmpd2);
+ t1=fmax(t1,tmpd2[0]);
+ pull2(nn,kukanL,tmpd2);
+ t2=fmin(t2,tmpd2[1]);
+ res[0][0]=0; nres=0;
+ flg=0;
+ for(ii=1; ii<=nn; ii++){
+ pull2(ii,kukanL,ku);
+ if(flg==0){
+ if(ku[1]<t1){
+ nres=addptd2(res,ku);
+ }
+ else{
+ flg=1;
+ if(ku[0]<t1-Eps){
+ tmpd2[0]=ku[0]; tmpd2[1]=t1;
+ nres=addptd2(res,tmpd2);
+ }
+ if(ku[1]>t2+Eps){
+ tmpd2[0]=t2; tmpd2[1]=ku[1];
+ nres=addptd2(res,tmpd2);
+ }
+ }
+ }
+ else if(flg==1){
+ if(ku[1]<t2){
+ continue;
+ }
+ else{
+ flg=2;
+ if(ku[0]<t2-Eps){
+ ku[0]=t2;
+ }
+ nres=addptd2(res,ku);
+ }
+ }
+ else{
+ nres=addptd2(res,ku);
+ }
+ }
+ return nres;
+}
+
+int skeletondata3(double data[][3], double r00,
+ double eps1, double eps2, double allres[][3]){
+ double objL[DsizeLL][3], pltL[DsizeLL][3];
+ double clipL[DsizeL][5];
+ double pts1[DsizeL][2],koc[DsizeM][4], koc2[DsizeM][4], kukanL[DsizeL][2];
+ double r0, t1, t2, z1, z2, tt, rr, origin[2], te, hh, ku[2], za, zb, ds[DsizeM],dmin;
+ double pt[2], pta[2], ptb[2], ptq[2];
+ double ptL[DsizeL][3], ptL2[DsizeL][2], res2[DsizeL][2], allres2[DsizeL][2];
+ double obj[DsizeL][3], plt[DsizeL][3];
+ double objp[DsizeL][3], pltp[DsizeL][3];
+ double obj2d[DsizeL][2], plt2d[DsizeL][2];
+ double tmpd1, tmp2d1, tmp3d1, tmp1d2[2], tmp2d2[2],tmpd3[3];
+ double tmpmd2[DsizeL][2], tmpmd3[DsizeL][3], tmpd4[4], tmp1d4[4];
+ int j, ii, jj, nobj, nplt, nall, din1[DsizeM][2], din2[DsizeM][2];
+ int nkoc, nkoc2, nn,nn1,nn2, nclipL, flg, ntmp;
+ char str1[100], str2[100];
+ objL[0][0]=0; pltL[0][0]=0;
+ dataindexd3(3,data,din1);
+ appendd3(0, din1[1][0],din1[1][1],data,objL);
+ appendd3(0, din1[2][0],din1[2][1],data,pltL);
+ allres[0][0]=0;
+ allres2[0][0]=0;
+ dataindexd3(2,objL,din1);
+ dataindexd3(2,pltL,din2);
+ for(nobj=1; nobj<=length2i(din1); nobj++){
+ tmpmd3[0][0]=0;
+ ntmp=appendd3(2,din1[nobj][0],din1[nobj][1],objL,tmpmd3);
+ nn=ceil((fmax(Mdv,Ndv)*2-1)/(ntmp-1));
+ increasept3(tmpmd3,nn,obj);
+ appendd3(0,ntmp,ntmp,tmpmd3,obj);
+ projcoordcurve(obj,objp);
+ obj2d[0][0]=0;
+ for(j=1; j<=length3(objp); j++){
+ push2(objp[j][0],objp[j][1],obj2d);
+ }
+ clipL[0][0]=0; nclipL=0;
+ for(nplt=1; nplt<=length2i(din2); nplt++){
+ tmpmd3[0][0]=0;
+ ntmp=appendd3(2,din2[nplt][0],din2[nplt][1],pltL,tmpmd3);
+ nn=ceil((fmax(Mdv,Ndv)*2-1)/(ntmp-1));
+ increasept3(tmpmd3,nn,plt);
+ appendd3(0,ntmp,ntmp,tmpmd3,plt);
+ projcoordcurve(plt,pltp);
+ plt2d[0][0]=0;
+ for(j=1; j<=length3(pltp); j++){
+ push2(pltp[j][0],pltp[j][1],plt2d);
+ }
+ nkoc2=intersectcrvsPp(obj2d,plt2d,eps1,eps2,koc2);
+ if(nkoc2>0){
+ koc[0][0]=0; nkoc=0;
+ pull2(1,plt2d,pta);
+ pull2(length2(plt2d),plt2d,ptb);
+ for(j=1; j<=nkoc2; j++){
+ pt[0]=koc2[j][0]; pt[1]=koc2[j][1];
+ nearestptpt(pt, plt2d, tmpd4);
+ koc2[j][3]=tmpd4[2];
+ pt[0]=tmpd4[0]; pt[1]=tmpd4[1];
+ nearestptpt(pt, obj2d, tmpd4);
+ koc2[j][0]=tmpd4[0]; koc2[j][1]=tmpd4[1];
+ koc2[j][2]=tmpd4[2];
+ ds[j]=tmpd4[3];
+ }
+ pull4(1,koc2,tmp1d4);
+ dmin=ds[1];
+ for(j=2; j<=nkoc2; j++){
+ if(fabs(koc2[j][2]-tmp1d4[2])<4){
+ if(ds[j]<dmin){
+ pull4(j,koc2,tmp1d4);
+ dmin=ds[j];
+ }
+ }
+ else{
+ addptd4(koc,tmp1d4);
+ pull4(j,koc2,tmp1d4);
+ dmin=ds[j];
+ }
+ }
+ nkoc=addptd4(koc,tmp1d4);
+/*
+ if(tmpd4[3]<2*eps1){
+ if((dist(2,pta,pt)<eps2)&&(tmpd4[2]<0.1*length2(plt2d))){
+ continue;
+ }
+ if((dist(2,ptb,pt)<eps2)&&(tmpd4[2]>0.9*length2(plt2d))){
+ continue;
+ }
+ pull4(j,koc2,tmpd4);
+ nkoc=addptd4(koc,tmpd4);
+ }
+ }
+*/
+ for(jj=1; jj<=nkoc; jj++){
+ pt[0]=koc[jj][0]; pt[1]=koc[jj][1];
+ pta[0]=plt2d[1][0]; pta[1]=plt2d[1][1];
+ ptb[0]=plt2d[length2(plt2d)][0]; ptb[1]=plt2d[length2(plt2d)][1];
+ if((dist(2,pt,pta)<eps2)&&(koc[jj][3]<0.3*length2(plt2d))){
+ continue;
+ }
+ if((dist(2,pt,ptb)<eps2)&&(koc[jj][3]>0.7*length2(plt2d))){
+ continue;
+ }
+ nn1=floor(koc[jj][2]);
+ nn2=koc[jj][3];
+ pta[0]=objp[nn1][0]; pta[1]=objp[nn1][1];
+ za=objp[nn1][2];
+ ptb[0]=objp[nn1+1][0]; ptb[1]=objp[nn1+1][1];
+ zb=objp[nn1+1][2];
+ if(dist(2,pta,ptb)<eps1){
+ continue;
+ }
+ t1=dist(2,pta,pt)/dist(2,pta,ptb);
+ z1=(1-t1)*za+t1*zb;
+ pta[0]=pltp[nn2][0]; pta[1]=pltp[nn2][1];
+ za=tmpmd3[nn2][2];
+ ptb[0]=pltp[nn2+1][0]; ptb[1]=pltp[nn2+1][1];
+ zb=tmpmd3[nn2+1][2];
+ if(dist(2,pta,ptb)<Eps){
+ continue;
+ }
+ t2=dist(2,pta,pt)/dist(2,pta,ptb);
+ z2=(1-t2)*za+t2*zb;
+ if(z1<z2-eps1){
+ if(nclipL==0){
+ tmpd1=1;
+ }
+ }
+ else{
+ tmpd1=Inf;
+ for(j=1; j<=nclipL; j++){
+ tmp2d1=pow(clipL[j][0]-pt[0],2.0);
+ tmp2d1=tmp2d1+pow(clipL[j][1]-pt[1],2.0);
+ tmpd1=fmin(tmpd1,tmp2d1);
+ }
+ }
+ if(tmpd1>pow(Eps,2.0)){
+ pts1[0][0]=0;
+ pointoncurve(nn1,obj2d,Eps,tmp1d2);
+ addptd2(pts1,tmp1d2);
+ pointoncurve(nn1+1,obj2d,Eps,tmp1d2);
+ addptd2(pts1,tmp1d2);
+ tmp1d2[0]=pts1[2][0]-pts1[1][0];
+ tmp1d2[1]=pts1[2][1]-pts1[1][1];
+ tmp2d2[0]=ptb[0]-pta[0];
+ tmp2d2[1]=ptb[1]-pta[1];
+ tmp3d1=dotprod(2,tmp1d2,tmp2d2);
+ origin[0]=0; origin[1]=0;
+ tmp3d1=tmp3d1/dist(2,tmp1d2,origin)/dist(2,tmp2d2,origin);
+ tmpd1=1-0.5*pow(tmp3d1,2.0);
+ r0=0.075*r00;
+ nclipL=push5(pt[0],pt[1], nn1,t1,r0/tmpd1, clipL);
+ }
+ }
+ }
+ }
+ kukanL[0][0]=0;
+ te=length3(obj);
+ push2(1.0,te, kukanL);
+ for(ii=1; ii<=nclipL; ii++){
+ pt[0]=clipL[ii][0]; pt[1]=clipL[ii][1];
+ nn=clipL[ii][2];
+ tt=nn+clipL[ii][3];
+ rr=clipL[ii][4];
+ flg=0;
+ for(jj=nn; jj>=1; jj--){
+ pointoncurve(jj,obj2d,Eps,ptq);
+ if(dist(2,pt,ptq)<rr){
+ continue;
+ }
+ flg=jj;
+ break;
+ }
+ if(flg==0){
+ t1=1;
+ }
+ else{
+ t1=flg; t2=tt;
+ hh=t2-t1;
+ for(j=1; j<=10; j++){
+ hh=hh*0.5;
+ pointoncurve(t1+hh,obj2d,Eps,ptq);
+ if(dist(2,pt,ptq)<rr){
+ t2=t2-hh;
+ }
+ else{
+ t1=t1+hh;
+ }
+ }
+ }
+ ku[0]=t1;
+ flg=0;
+ for(jj=nn+1; jj<=te; jj++){
+ pointoncurve(jj,obj2d,Eps,ptq);
+ if(dist(2,pt,ptq)<rr){
+ continue;
+ }
+ flg=jj;
+ break;
+ }
+ if(flg==0){
+ t2=te;
+ }
+ else{
+ t1=tt; t2=flg;
+ hh=t2-t1;
+ for(j=1; j<=10; j++){
+ hh=hh*0.5;
+ pointoncurve(t1+hh,obj2d,Eps,ptq);
+ if(dist(2,pt,ptq)<rr){
+ t1=t1+hh;
+ }
+ else{
+ t2=t2-hh;
+ }
+ }
+ }
+ ku[1]=t2;
+ ntmp=kukannozoku(ku,kukanL,tmpmd2);
+ kukanL[0][0]=0;
+ appendd2(0,1,ntmp,tmpmd2,kukanL);
+ }
+ for(jj=1; jj<=length2(kukanL); jj++){
+ tmp1d2[0]=kukanL[jj][0]; tmp1d2[1]=kukanL[jj][1];
+ t1=kukanL[jj][0]; nn1=floor(t1);
+ t2=kukanL[jj][1]; nn2=floor(t2);
+ ptL2[0][0]=0;
+ ptL[0][0]=0;
+ if(t1-nn1<1-Eps){
+ pointoncurve(t1,obj2d,Eps,tmp1d2);
+ addptd2(ptL2,tmp1d2);
+ invparapt(t1, obj2d, obj, tmpd3);
+ addptd3(ptL,tmpd3);
+ }
+ for(j=nn1+1; j<=nn2; j++){
+ pointoncurve(j,obj2d,Eps,tmp1d2);
+ addptd2(ptL2,tmp1d2);
+ invparapt(j, obj2d, obj, tmpd3);
+ addptd3(ptL,tmpd3);
+ }
+ if(t2-nn2>Eps){
+ pointoncurve(t2,obj2d,Eps,tmp1d2);
+ addptd2(ptL2,tmp1d2);
+ invparapt(t2, obj2d, obj, tmpd3);
+ addptd3(ptL,tmpd3);
+ }
+ if(length2(ptL2)>1){
+ appendd2(2,1,length2(ptL2),ptL2,allres2);
+ appendd3(2,1,length3(ptL),ptL,allres);
+ }
+ }
+ }
+ return length3(allres);
+}
+
+/*
+void writesfbd(const char *var, const char *fname, const char *fnameh,double sf[][3]){
+ sfbdparadata(sf);
+ output3(var, "", fname,2,sf);
+ output3(var, "h", fnameh,2,Borderhiddendata);
+}
+
+void writecrv(const char *var, const char *fname, const char *fnameh,
+ double crv[][3],double sf[][3]){
+ crvsfparadata(crv, sf, 1,Crvdata);
+ output3(var, "", fname,2,Crvdata);
+ output3(var, "h", fnameh,2,Crvsfhiddendata);
+}
+
+void writewire(const char *var, const char *fname, const char *fnameh,
+ double sf[][3], int num, double udv[], double vdv[]){
+ wireparadata(sf, num, udv,vdv, Wiredata);
+ output3(var, "", fname,2,Wiredata);
+ output3(var, "h", fnameh,2,Hiddenwiredata);
+}
+
+void writesfcut(const char *var, const char *fname, const char *fnameh,
+ double crv[][3], double sf[][3]){
+ sfcutdata(crv);
+ crv3onsfparadata(crv, sf, Crvonsfdata);
+ output3(var, "", fname,2,Crvonsfdata);
+ output3(var, "h", fnameh,2,Crv3onsfhiddendata);
+}
+
+void writecrvonsf(const char *var, const char *fname, const char *fnameh,
+ double crv[][3],double sf[][3]){
+ crv3onsfparadata(crv, sf, Crvonsfdata);
+ output3(var, "", fname,2,Crvonsfdata);
+ output3(var, "h", fnameh,2,Crv3onsfhiddendata);
+}
+*/
+
+
diff --git a/texmf-dist/scripts/ketpic/ketlibC/surflibhead.h b/texmf-dist/scripts/ketpic/ketlibC/surflibhead.h
new file mode 100644
index 00000000..49d2ed4c
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketlibC/surflibhead.h
@@ -0,0 +1,49 @@
+double Xval[DsizeS], Yval[DsizeS], Zval[DsizeS][DsizeS];
+
+double Implicitdata[DsizeL][2];
+double Cuspsplitpt[DsizeL][2];
+double Cusppt[DsizeM][2];
+double Otherpartition [DsizeM];
+double Partitionpt[DsizeM][2];
+double Cuspdata[DsizeM];
+double Wirept[DsizeM][3];
+double Hiddendata[DsizeL][3];
+double Borderpt[DsizeM][2];
+double Borderhiddendata[DsizeL][3];
+double Surf[DsizeL][3];
+double Crvdata[DsizeL][3];
+double Wiredata[DsizeLL][3];
+
+int output3(const char *var, const char *fname, int level, double out[][3]);
+int output3h(const char *var, const char *varh, const char *fname, double out[][3]);
+int writedataC(const char *fname, double out[][3]);
+int readdataC(const char *fname, double data[][3]);
+void parapt(double pt3[3],double pt2[2]);
+int projpara(double p3[][3], double p2[][2]);
+double invparapt(double ph, double fh[][2], double fk[][3],double out[3]);
+int surfcurve(int level, double crv[][2], double pdata[][3]);
+int xyzax3data(double x0, double x1, double y0, double y1, double z0, double z1,
+ double out[][3]);
+void evlptablepara(void);
+int implicitplot(double out[][2]);
+int cuspsplitpara(double pdata[][2], double outkL[][3]);
+int makexybdy(double ehL[][2]);
+int partitionseg(double fig[][2],double gL[][2], int ns, double out[]);
+void makevaltablepth(double pta[3]);
+int pthiddenQ(double pta[3], int uveq, double eps[2]);
+int nohiddenpara2(double paL[], double fk[][3], int uveq, double figkL[][3]);
+int borderparadata(double fkL[][3], double fsL[][3]);
+int sfbdparadata(double outd3[][3]);
+void makevaltablemeet(double pa[3], double vec[3], double eps0);
+int meetpoints(double pta[3], double ptb[3], double eps, double ptL[][3]);
+int crvsfparadata(double fkL[][3], double fbdkL[][3], int sepflg, double out[][3]);
+int sfcutdata(int ch, double ekL[][3]);
+int crv3onsfparadata(double fk[][3], double fbdyd3[][3], double out[][3]);
+int wireparadata(double bdyk[][3], double udv[], double vdv[], int num,
+ double fsL[][3]);
+int projcoordcurve(double curve[][3], double out[][3]);
+int kukannozoku(double jokyo[2], double kukanL[][2], double res[][2]);
+int skeletondata3(double data[][3], double r00, double eps1, double eps2,
+ double allres[][3]);
+
+double cutfun(int ch,double u, double v);
diff --git a/texmf-dist/scripts/ketpic/ketoutset.txt b/texmf-dist/scripts/ketpic/ketoutset.txt
new file mode 100644
index 00000000..7ec66a8d
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/ketoutset.txt
@@ -0,0 +1,54 @@
+if(iswindows(),
+ PathT="C:\kettex\w32texb\bin\platex";
+// PathT="C:\kettex\w32texb\bin\latex";
+// PathT="C:\kettex\w32texb\bin\pdflatex";
+// PathT="C:\w32tex\bin\platex";
+// PathT="C:\texlive\bin\platex";
+ PathS="C:\Program Files\scilab-5.5.2\bin\scilex";
+// PathS="C:\Program Files\scilab-6.6.0\bin\scilex";
+ PathC="C:\MinGW\bin\gcc.exe";
+// PathC="C:\MinGW32\bin\gcc.exe";
+ Pathpdf="C:\Program Files\SumatraPDF\SumatraPDF.exe";
+ PathR="C:\Program Files\R\R-3.2.2\bin";
+ PathA="C:\Program Files\asir\bin\asir";
+ PathM="C:\maxima-5.37.3\bin\maxima.bat";
+ PathV3="C:\Program Files\VCG\MeshLab\meshlab";
+ PathF="C:\cygwin\bin";
+// PathAd="C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe";
+ PathAd="C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe";
+);
+if(ismacosx(),
+ PathT="/Applications/kettex/texlive/bin/x86_64-darwin/platex";
+// PathT="/Applications/kettex/texlive/bin/x86_64-darwin/latex";
+// PathT="/Library/TeX/texbin/platex";
+// PathT="/Library/TeX/texbin/pdflatex";
+// PathT="/Library/TeX/texbin/lualatex";
+// PathT="/Library/TeX/texbin/xelatex";
+// PathT="/usr/texbin/platex";
+// PathS="/Applications/scilab-5.5.2.app/Contents/MacOS/bin/scilab";
+ PathS="/Applications/scilab-6.0.0.app/Contents/MacOS/bin/scilab";
+ Pathpdf="preview";
+ Pathpdf="skim";
+// Pathpdf="/Applications/skim.app/Contents/MacOS/Skim";
+ PathC="gcc";
+ PathR="R";
+// PathR="/Library/Frameworks/R.framework/Versions/3.3/Resources/bin/R";
+ PathA="/Applications/cfep.app/OpenXM/rc/asir";
+ PathM="/Applications/Maxima.app/Contents/Resources/maxima.sh";
+ PathV3="/Applications/meshlab.app/Contents/MacOS/MeshLab";
+ PathF="/Applications/FriCAS.app/Contents/Resources/bin/fricas";
+// PathAd="Adobe Reader";
+ PathAd="/Applications/Adobe Acrobat Reader DC.app/Contents/MacOS/AdobeReader";
+);
+if(islinux(),
+ PathT="/usr/bin/platex";
+ PathS="/usr/bin/scilab";
+ Pathpdf="evince";
+// Pathpdf="/usr/bin/xpdf";
+ PathR="";
+ PathA="";
+ PathM="/usr/bin/maxima";
+ PathV3="";
+ PathF="";
+ PathAd="";
+);
diff --git a/texmf-dist/scripts/ketpic/setketcindy.txt b/texmf-dist/scripts/ketpic/setketcindy.txt
new file mode 100644
index 00000000..0ccc37e1
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/setketcindy.txt
@@ -0,0 +1,74 @@
+// e:2017.05.15
+//Dirhead=getdirhead();
+if(iswindows(),
+ Dirlib=Dirhead+"\ketlib";
+ DirlibC=Dirhead+"\ketlibC";
+ Dirbin=Dirhead+"\ketbin";
+ Dirwork=Dirhead+"\ketwork";
+ Dirwork=replace(Dirwork,"/","\");
+ Libname=Dirlib+"\ketpicsciL5";
+ Batparent="\kc.bat";
+ if(indexof(Shellfile,".")==0,Shellfile=Shellfile+".bat");
+ if(indexof(Shellfile,"/")+indexof(Shellfile,"\")==0 ,
+ Batchild=Dirbin+"\"+Shellfile;
+ ,
+ Batchild=Shellfile;
+ );
+);
+if(ismacosx(),
+ Dirlib=Dirhead+"/ketlib";
+ DirlibC=Dirhead+"/ketlibC";
+ Dirbin=Dirhead+"/ketbin";
+ Dirwork=Dirhead+"/ketwork";
+ Dirwork=replace(Dirwork,"\","/");
+ Libname=Dirlib+"/ketpicsciL5";
+ Shellparent="/kc.sh";
+ if(isstring(Shellfile),
+ if(indexof(Shellfile,".")==0,Shellfile=Shellfile+".sh");
+ if(indexof(Shellfile,"/")==0,
+ Shellchild=Dirbin+"/"+Shellfile;
+ ,
+ Shellchild=Shellfile;
+ );
+ ,
+ Shellfile="";
+ );
+ if(!isexists(Dirwork,""),
+ println(Dirwork+" not exist");
+ ,
+ if(!iskcexists(Dirwork),
+ setdirectory(Dirwork);
+ SCEOUTPUT = openfile(Shellparent);
+ closefile(SCEOUTPUT);
+ println(Shellparent+" generated");
+ );
+ println(setexec(Dirwork,Shellparent));
+ );
+ Mackc="sh";
+// Mackc="open";
+);
+if(islinux(),
+ Dirlib=Dirhead+"/ketlib";
+ DirlibC=Dirhead+"/ketlibC";
+ Dirbin=Dirhead+"/ketbin";
+ Dirwork=Dirhead+"/ketwork";
+ Dirwork=replace(Dirwork,"\","/");
+ Libname=Dirlib+"/ketpicsciL5";
+ Shellparent="/kc.sh";
+ if(indexof(Shellfile,".")==0,Shellfile=Shellfile+".sh");
+ if(indexof(Shellfile,"/")==0,
+ Shellchild=Dirbin+"/"+Shellfile;
+ ,
+ Shellchild=Shellfile;
+ );
+);
+
+setdirectory(Dirlib);
+import("ketcindylibbasic1.cs");
+import("ketcindylibbasic2.cs");
+import("ketcindylibout.cs");
+import("ketcindylib3d.cs");
+import("ketcindylibmv.cs");
+
+setdirectory(Dirhead);
+
diff --git a/texmf-dist/scripts/ketpic/template.cdy b/texmf-dist/scripts/ketpic/template.cdy
new file mode 100755
index 00000000..dccfc7de
--- /dev/null
+++ b/texmf-dist/scripts/ketpic/template.cdy
Binary files differ
diff --git a/texmf-dist/tex/latex/ketpic/ketlayer.sty b/texmf-dist/tex/latex/ketpic/ketlayer.sty
new file mode 100755
index 00000000..45817242
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketlayer.sty
@@ -0,0 +1,2836 @@
+%Copyright (C) 2014 Setsuo Takato, KETpic developer team
+%*
+%* This program is free software: you can redistribute it and/or modify
+%* it under the terms of the GNU General Public License as published by
+%* the Free Software Foundation; either version 3 of the License, or
+%* (at your option) any later version.
+%*
+%* This program is distributed in the hope that it will be useful,
+%* but WITHOUT ANY WARRANTY; without even the implied warranty of
+%* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%* GNU General Public License for more details.
+%*
+%* You should have received a copy of the GNU General Public License
+%* along with this program. If not, see <http://www.gnu.org/licenses/>
+%%% ketlayer.sty 2017-1-13 12:53
+%%% ketlayer170109.sce 2017-1-13 12:53
+% 2017.01.09%
+\newlength{\layercurrentunit}%
+\newcommand{\shadebox}[7][0]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 100.00000, 100.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+{\color{#6}%
+\special{pa 0 0}\special{pa 3937 0}\special{pa 3937 -3937}\special{pa 0 -3937}\special{pa 0 0}%
+\special{sh 1}\special{ip}%
+}%
+\end{picture}}%%
+}%
+%
+{%
+\ifnum %
+#4<10 %
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+{%
+\ifnum %
+#1>0 %
+\boxframese{#2}{#3}{#4}{#5}{}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\shadeboxse}[7][0]{%
+\shadebox[#1]{#2}{#3}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxc}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxe}[7][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxw}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxn}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxs}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxnw}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxne}[7][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxsw}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\shadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\eraser}[5][0]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 100.00000, 100.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 0 0}\special{pa 3937 0}\special{pa 3937 -3937}\special{pa 0 -3937}\special{pa 0 0}%
+\special{sh 0}\special{ip}%
+\end{picture}}%%
+}%
+%
+{%
+\ifnum %
+#4<10 %
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\scalebox{0.#4}[0.#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.#4}[0.#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.#4}[0.#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.#4}[0.#5]{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+{%
+\ifnum %
+#1>0 %
+\boxframese{#2}{#3}{#4}{#5}{}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\eraserse}[5][0]{%
+\eraser[#1]{#2}{#3}{#4}{#5}%
+%
+}%
+\newcommand{\eraserc}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasere}[5][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\eraserw}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasern}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasers}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasernw}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\eraserne}[5][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasersw}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\arrowhead}[4][1]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.00000, 1.23607)( -2.00000, -0.61803)%
+\special{pn 8}%
+%
+\special{pn 4}%
+\special{pa 0 0}\special{pa 79 24}\special{pa 79 -24}\special{pa 0 0}%
+\special{fp}%
+\special{pn 8}%
+\special{pa 0 0}\special{pa 79 24}\special{pa 79 -24}\special{pa 0 0}\special{sh 1}\special{ip}%
+\end{picture}}%%
+}%
+\settowidth{\Width}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}\settodepth{\Depth}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}}%
+%
+}%
+\newcommand{\lineseg}[5][12]{%
+\def\tmpcontents{%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.00200)( 0.00000, -0.00100)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 0}%
+\special{fp}%
+\end{picture}}%%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+%
+{%
+\ifnum %
+#5>0 %
+%
+{%
+\ifnum %
+#5<90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5>-90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\dashlineseg}[5][12]{%
+\def\tmpcontents{%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.00200)( 0.00000, -0.00100)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 20 0}%
+\special{fp}%
+\end{picture}}%%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+%
+{%
+\ifnum %
+#5>0 %
+%
+{%
+\ifnum %
+#5<90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5>-90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+}%
+\def\arrowline#1#2#3#4{%
+\lineseg[12]{#1}{#2}{#3}{#4}%
+\arrowhead{#1}{#2}{#4}%
+%
+}%
+\newcommand{\arrowlineseg}[5][12]{%
+\lineseg[#1]{#2}{#3}{#4}{#5}%
+\arrowhead{#2}{#3}{#5}%
+%
+}%
+\newcommand{\conversion}[1]{%
+\setcounter{ketpicctra}{#1}%
+\multiply\value{ketpicctra} by 3937%
+\divide\value{ketpicctra} by 100%
+\{\theketpicctra\}%
+%
+}%
+\def\drwline#1#2#3#4{%
+\special{pn 8}%
+\special{pa #1 #2}\special{pa #3 #4}%
+\special{fp}%
+%
+}%
+\newcommand{\dispgrid}[2]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 10.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn 12}%
+\special{pa -6 0}\special{pa 6 0}\special{fp}\special{pa 33 0}\special{pa 45 0}\special{fp}%
+\special{pa 73 0}\special{pa 85 0}\special{fp}\special{pa 112 0}\special{pa 124 0}\special{fp}%
+\special{pa 151 0}\special{pa 163 0}\special{fp}\special{pa 191 0}\special{pa 203 0}\special{fp}%
+\special{pa 230 0}\special{pa 242 0}\special{fp}\special{pa 270 0}\special{pa 282 0}\special{fp}%
+\special{pa 309 0}\special{pa 321 0}\special{fp}\special{pa 348 0}\special{pa 360 0}\special{fp}%
+\special{pa 388 0}\special{pa 400 0}\special{fp}\special{pn 8}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\divide\value{ketpicctre} by 10%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\addtocounter{ketpicctrf}{-1}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{0}%
+\addtocounter{ketpicctrd}{-\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+\setcounter{ketpicctrg}{0}%
+\addtocounter{ketpicctrg}{-\value{ketpicctrd}}%
+\settowidth{\Width}{\theketpicctrg}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\theketpicctrg}\settodepth{\Depth}{\theketpicctrg}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\theketpicctrg}}%
+%
+\ifnum\theketpicctra<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrd>-#2 %
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,-#2){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+%
+\fi%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 10.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn 12}%
+\special{pa 0 6}\special{pa 0 -6}\special{fp}\special{pa 0 -33}\special{pa 0 -45}\special{fp}%
+\special{pa 0 -73}\special{pa 0 -85}\special{fp}\special{pa 0 -112}\special{pa 0 -124}\special{fp}%
+\special{pa 0 -151}\special{pa 0 -163}\special{fp}\special{pa 0 -191}\special{pa 0 -203}\special{fp}%
+\special{pa 0 -230}\special{pa 0 -242}\special{fp}\special{pa 0 -270}\special{pa 0 -282}\special{fp}%
+\special{pa 0 -309}\special{pa 0 -321}\special{fp}\special{pa 0 -348}\special{pa 0 -360}\special{fp}%
+\special{pa 0 -388}\special{pa 0 -400}\special{fp}\special{pn 8}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 0.02000)( -0.01000, -0.01000)%
+\special{pn 8}%
+%
+\special{pa 3 -3}\special{pa -3 -3}\special{pa -3 3}\special{pa 3 3}\special{pa 3 -3}%
+\special{sh 1}\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\divide\value{ketpicctre} by 10%
+\addtocounter{ketpicctre}{-1}%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{0}%
+\addtocounter{ketpicctrd}{\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrd,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{-10}%
+%
+\ifnum\theketpicctrb<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrc>-#2 %
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{-#2}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\ifnum\theketpicctrb<\theketpicctrc%
+\repeat%
+}%
+%
+\fi%
+}%
+\setcounter{ketpicctrg}{-#2}%
+\addtocounter{ketpicctrg}{-1}%
+\settowidth{\Width}{\theketpicctrd}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\theketpicctrd}\settodepth{\Depth}{\theketpicctrd}\setlength{\Height}{-\Height}%
+\put(\theketpicctrd,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{\theketpicctrd}}%
+%
+\ifnum\theketpicctra<\theketpicctrf%
+\repeat%
+}%
+%
+}%
+\newcommand{\dispgridneg}[2]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 10.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn 12}%
+\special{pa -6 0}\special{pa 6 0}\special{fp}\special{pa 33 0}\special{pa 45 0}\special{fp}%
+\special{pa 73 0}\special{pa 85 0}\special{fp}\special{pa 112 0}\special{pa 124 0}\special{fp}%
+\special{pa 151 0}\special{pa 163 0}\special{fp}\special{pa 191 0}\special{pa 203 0}\special{fp}%
+\special{pa 230 0}\special{pa 242 0}\special{fp}\special{pa 270 0}\special{pa 282 0}\special{fp}%
+\special{pa 309 0}\special{pa 321 0}\special{fp}\special{pa 348 0}\special{pa 360 0}\special{fp}%
+\special{pa 388 0}\special{pa 400 0}\special{fp}\special{pn 8}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\multiply\value{ketpicctre} by -1%
+\divide\value{ketpicctre} by 10%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\addtocounter{ketpicctrf}{-1}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+\setcounter{ketpicctrg}{0}%
+\addtocounter{ketpicctrg}{-\value{ketpicctrd}}%
+\settowidth{\Width}{\theketpicctrg}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\theketpicctrg}\settodepth{\Depth}{\theketpicctrg}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\theketpicctrg}}%
+%
+\ifnum\theketpicctra<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrd>-#2 %
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,-#2){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+%
+\fi%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 10.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn 12}%
+\special{pa 0 6}\special{pa 0 -6}\special{fp}\special{pa 0 -33}\special{pa 0 -45}\special{fp}%
+\special{pa 0 -73}\special{pa 0 -85}\special{fp}\special{pa 0 -112}\special{pa 0 -124}\special{fp}%
+\special{pa 0 -151}\special{pa 0 -163}\special{fp}\special{pa 0 -191}\special{pa 0 -203}\special{fp}%
+\special{pa 0 -230}\special{pa 0 -242}\special{fp}\special{pa 0 -270}\special{pa 0 -282}\special{fp}%
+\special{pa 0 -309}\special{pa 0 -321}\special{fp}\special{pa 0 -348}\special{pa 0 -360}\special{fp}%
+\special{pa 0 -388}\special{pa 0 -400}\special{fp}\special{pn 8}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 0.02000)( -0.01000, -0.01000)%
+\special{pn 8}%
+%
+\special{pa 3 -3}\special{pa -3 -3}\special{pa -3 3}\special{pa 3 3}\special{pa 3 -3}%
+\special{sh 1}\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\multiply\value{ketpicctre} by -1%
+\divide\value{ketpicctre} by 10%
+\addtocounter{ketpicctre}{-1}%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{0}%
+\addtocounter{ketpicctrd}{\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrc>-#2 %
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{-#2}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\ifnum\theketpicctrb<\theketpicctrc%
+\repeat%
+}%
+%
+\fi%
+}%
+\setcounter{ketpicctrg}{-#2}%
+\addtocounter{ketpicctrg}{1}%
+\settowidth{\Width}{\theketpicctrd}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\theketpicctrd}\settodepth{\Depth}{\theketpicctrd}\setlength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{\theketpicctrd}}%
+%
+\ifnum\theketpicctra<\theketpicctrf%
+\repeat%
+}%
+%
+}%
+\newenvironment{layer}[3][0]{%
+\setlength{\layercurrentunit}{\unitlength}%
+\unitlength=1 mm%
+\vspace{-\baselineskip}%
+\noindent%
+\hspace*{#1 mm}%
+\begin{picture}(#3,0)(0,0)%
+%
+{%
+\ifnum %
+#3>0 %
+\dispgrid{#2}{#3}%
+%
+\fi%
+}%
+%
+{%
+\ifnum %
+#3<0 %
+\dispgridneg{#2}{#3}%
+%
+\fi%
+}%
+}{%
+\end{picture}%
+\setlength{\unitlength}{\layercurrentunit}%
+%
+}%
+\newenvironment{layerv}[3][0]{%
+\setlength{\layercurrentunit}{\unitlength}%
+\unitlength=1 mm%
+\vspace*{-\baselineskip}%
+\vspace*{#2 mm}%
+
+\setcounter{ketpicctrj}{-#2}%
+\noindent%
+\hspace*{#1 mm}%
+\begin{picture}(100,0)(0,0)%
+%
+{%
+\ifnum %
+#3>0 %
+\setlength{\Width}{\textwidth}%
+\addtolength{\Width}{-#1 mm}%
+\setcounter{ketpicctri}{0}%
+\setcounter{ketpicctri}{1}%
+\addtocounter{ketpicctri}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctri}{1}%
+%
+{%
+\ifdim %
+\theketpicctri mm>\Width %
+\addtocounter{ketpicctri}{500}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctri<400%
+\repeat%
+}%
+\addtocounter{ketpicctri}{-500}%
+\addtocounter{ketpicctri}{-1}%
+\dispgrid{\theketpicctri}{#3}%
+%
+\fi%
+}%
+}{%
+\end{picture}%
+\vspace*{\theketpicctrj mm}%
+\setlength{\unitlength}{\layercurrentunit}%
+%
+}%
+\newenvironment{layerg}[2][1]{%
+\setlength{\layercurrentunit}{\unitlength}%
+\unitlength=1 mm%
+\vspace*{-\baselineskip}%
+\ketcalcheight{#2}%
+\setcounter{ketpicctrj}{\value{ketpicctra}}%
+\ketcalcdepth{#2}%
+\addtocounter{ketpicctrj}{\value{ketpicctra}}%
+\vspace*{-\theketpicctrj mm}%
+
+\noindent%
+\begin{picture}(100,0)(0,0)%
+%
+{%
+\ifnum %
+#1>0 %
+\setlength{\Width}{\textwidth}%
+\addtolength{\Width}{-#1 mm}%
+\setcounter{ketpicctri}{0}%
+\setcounter{ketpicctri}{1}%
+\addtocounter{ketpicctri}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctri}{1}%
+%
+{%
+\ifdim %
+\theketpicctri mm>\Width %
+\addtocounter{ketpicctri}{500}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctri<400%
+\repeat%
+}%
+\addtocounter{ketpicctri}{-500}%
+\addtocounter{ketpicctri}{-1}%
+\dispgrid{\theketpicctri}{\theketpicctrj}%
+%
+\fi%
+}%
+}{%
+\end{picture}%
+\vspace*{\theketpicctrj mm}%
+\setlength{\unitlength}{\layercurrentunit}%
+%
+}%
+\newcommand{\putnotec}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotee}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotew}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotes}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-\Height}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnoten}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotene}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotenw}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotese}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-\Height}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotesw}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-\Height}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\ballonr}[5][8]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 4.00000, 3.50000)( -2.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 124 -260}\special{pa 123 -261}\special{pa 120 -262}\special{pa 115 -263}%
+\special{pa 109 -264}\special{pa 101 -266}\special{pa 92 -267}\special{pa 82 -269}%
+\special{pa 71 -271}\special{pa 59 -273}\special{pa 45 -276}\special{pa 32 -279}\special{pa 17 -282}%
+\special{pa 2 -286}\special{pa -14 -290}\special{pa -30 -295}\special{pa -47 -300}%
+\special{pa -63 -306}\special{pa -80 -312}\special{pa -96 -319}\special{pa -112 -327}%
+\special{pa -128 -335}\special{pa -144 -344}\special{pa -159 -354}\special{pa -174 -365}%
+\special{pa -188 -376}\special{pa -201 -388}\special{pa -213 -401}\special{pa -224 -416}%
+\special{pa -234 -431}\special{pa -243 -447}\special{pa -250 -464}\special{pa -256 -482}%
+\special{pa -260 -501}\special{pa -263 -522}\special{pa -264 -544}\special{pa -263 -566}%
+\special{pa -260 -591}\special{pa -265 -595}\special{pa -274 -599}\special{pa -287 -603}%
+\special{pa -302 -607}\special{pa -320 -611}\special{pa -340 -615}\special{pa -360 -620}%
+\special{pa -381 -626}\special{pa -402 -633}\special{pa -423 -641}\special{pa -442 -651}%
+\special{pa -459 -662}\special{pa -473 -675}\special{pa -484 -691}\special{pa -492 -709}%
+\special{pa -496 -728}\special{pa -498 -750}\special{pa -498 -772}\special{pa -496 -794}%
+\special{pa -493 -817}\special{pa -490 -839}\special{pa -487 -860}\special{pa -483 -880}%
+\special{pa -479 -899}\special{pa -472 -918}\special{pa -464 -935}\special{pa -452 -952}%
+\special{pa -437 -969}\special{pa -418 -984}\special{pa -395 -999}\special{pa -370 -1013}%
+\special{pa -342 -1026}\special{pa -312 -1037}\special{pa -280 -1048}\special{pa -248 -1057}%
+\special{pa -216 -1065}\special{pa -184 -1071}\special{pa -152 -1076}\special{pa -122 -1078}%
+\special{pa -95 -1079}\special{pa -69 -1078}\special{pa -47 -1075}\special{pa -37 -1085}%
+\special{pa -26 -1095}\special{pa -15 -1106}\special{pa -1 -1117}\special{pa 13 -1129}%
+\special{pa 29 -1140}\special{pa 47 -1152}\special{pa 67 -1162}\special{pa 90 -1172}%
+\special{pa 114 -1181}\special{pa 142 -1189}\special{pa 172 -1196}\special{pa 205 -1201}%
+\special{pa 242 -1205}\special{pa 282 -1206}\special{pa 324 -1206}\special{pa 368 -1204}%
+\special{pa 411 -1200}\special{pa 454 -1195}\special{pa 494 -1189}\special{pa 531 -1181}%
+\special{pa 565 -1172}\special{pa 594 -1162}\special{pa 619 -1150}\special{pa 642 -1136}%
+\special{pa 662 -1120}\special{pa 680 -1102}\special{pa 697 -1081}\special{pa 712 -1057}%
+\special{pa 726 -1031}\special{pa 738 -1004}\special{pa 748 -975}\special{pa 755 -945}%
+\special{pa 760 -916}\special{pa 762 -886}\special{pa 760 -857}\special{pa 755 -829}%
+\special{pa 745 -803}\special{pa 732 -779}\special{pa 713 -758}\special{pa 690 -740}%
+\special{pa 661 -726}\special{pa 668 -717}\special{pa 675 -706}\special{pa 681 -695}%
+\special{pa 688 -683}\special{pa 694 -670}\special{pa 699 -657}\special{pa 704 -643}%
+\special{pa 708 -629}\special{pa 712 -614}\special{pa 715 -599}\special{pa 718 -583}%
+\special{pa 719 -567}\special{pa 720 -551}\special{pa 719 -534}\special{pa 718 -518}%
+\special{pa 715 -501}\special{pa 712 -484}\special{pa 707 -468}\special{pa 701 -451}%
+\special{pa 693 -435}\special{pa 684 -418}\special{pa 673 -402}\special{pa 661 -387}%
+\special{pa 648 -372}\special{pa 633 -357}\special{pa 617 -343}\special{pa 600 -329}%
+\special{pa 581 -316}\special{pa 560 -304}\special{pa 539 -293}\special{pa 516 -283}%
+\special{pa 491 -273}\special{pa 466 -265}\special{pa 439 -258}\special{pa 410 -252}%
+\special{pa 381 -247}\special{pa 349 -244}\special{pa 317 -242}\special{pa 283 -242}%
+\special{pa 278 -228}\special{pa 273 -215}\special{pa 267 -202}\special{pa 261 -190}%
+\special{pa 255 -178}\special{pa 248 -166}\special{pa 242 -155}\special{pa 235 -144}%
+\special{pa 228 -133}\special{pa 220 -123}\special{pa 213 -114}\special{pa 205 -104}%
+\special{pa 197 -95}\special{pa 189 -87}\special{pa 180 -79}\special{pa 171 -71}\special{pa 162 -63}%
+\special{pa 153 -57}\special{pa 144 -50}\special{pa 134 -44}\special{pa 124 -38}\special{pa 114 -33}%
+\special{pa 104 -28}\special{pa 93 -23}\special{pa 82 -19}\special{pa 71 -15}\special{pa 60 -11}%
+\special{pa 48 -8}\special{pa 37 -6}\special{pa 25 -3}\special{pa 12 -1}\special{pa 0 0}%
+\special{pa 8 -6}\special{pa 15 -12}\special{pa 23 -18}\special{pa 30 -25}\special{pa 37 -31}%
+\special{pa 43 -38}\special{pa 49 -45}\special{pa 55 -52}\special{pa 61 -59}\special{pa 67 -66}%
+\special{pa 72 -73}\special{pa 77 -81}\special{pa 82 -88}\special{pa 86 -96}\special{pa 90 -104}%
+\special{pa 94 -112}\special{pa 98 -120}\special{pa 102 -129}\special{pa 105 -137}%
+\special{pa 108 -146}\special{pa 111 -155}\special{pa 113 -163}\special{pa 115 -172}%
+\special{pa 117 -182}\special{pa 119 -191}\special{pa 121 -200}\special{pa 122 -210}%
+\special{pa 123 -220}\special{pa 123 -229}\special{pa 124 -239}\special{pa 124 -250}%
+\special{pa 124 -260}%
+\special{fp}%
+\settowidth{\Width}{{\begin{minipage}{1.8cm}#5\end{minipage}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\begin{minipage}{1.8cm}#5\end{minipage}}}\settodepth{\Depth}{{\begin{minipage}{1.8cm}#5\end{minipage}}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.5000,1.8000){\hspace*{\Width}\raisebox{\Height}{{\begin{minipage}{1.8cm}#5\end{minipage}}}}%
+%
+%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\scalebox{#4}{\tempcontents}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\scalebox{#4}{\tempcontents}}}\settodepth{\Depth}{{\scalebox{#4}{\tempcontents}}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\scalebox{#4}{\tempcontents}}}}%
+%
+}%
+\newcommand{\ballonl}[5][8]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 2.50000)( -2.50000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa -225 -221}\special{pa -262 -199}\special{pa -296 -180}\special{pa -329 -163}%
+\special{pa -360 -149}\special{pa -390 -138}\special{pa -419 -128}\special{pa -446 -121}%
+\special{pa -473 -116}\special{pa -499 -112}\special{pa -525 -110}\special{pa -550 -109}%
+\special{pa -576 -109}\special{pa -602 -111}\special{pa -628 -113}\special{pa -655 -115}%
+\special{pa -682 -119}\special{pa -709 -124}\special{pa -736 -131}\special{pa -762 -139}%
+\special{pa -786 -151}\special{pa -810 -165}\special{pa -831 -182}\special{pa -851 -202}%
+\special{pa -868 -224}\special{pa -883 -248}\special{pa -895 -274}\special{pa -904 -301}%
+\special{pa -909 -329}\special{pa -912 -357}\special{pa -910 -386}\special{pa -906 -414}%
+\special{pa -898 -441}\special{pa -887 -467}\special{pa -874 -492}\special{pa -857 -515}%
+\special{pa -838 -537}\special{pa -817 -555}\special{pa -793 -572}\special{pa -767 -585}%
+\special{pa -738 -594}\special{pa -708 -600}\special{pa -676 -602}\special{pa -684 -633}%
+\special{pa -688 -663}\special{pa -689 -691}\special{pa -687 -718}\special{pa -681 -743}%
+\special{pa -673 -766}\special{pa -663 -788}\special{pa -650 -808}\special{pa -635 -827}%
+\special{pa -619 -843}\special{pa -601 -858}\special{pa -582 -871}\special{pa -562 -883}%
+\special{pa -541 -892}\special{pa -520 -900}\special{pa -498 -906}\special{pa -476 -911}%
+\special{pa -452 -915}\special{pa -427 -918}\special{pa -401 -920}\special{pa -372 -922}%
+\special{pa -342 -924}\special{pa -311 -926}\special{pa -279 -927}\special{pa -248 -928}%
+\special{pa -217 -927}\special{pa -187 -925}\special{pa -160 -922}\special{pa -136 -918}%
+\special{pa -114 -912}\special{pa -94 -904}\special{pa -77 -894}\special{pa -61 -882}%
+\special{pa -47 -869}\special{pa -35 -853}\special{pa -23 -836}\special{pa -13 -816}%
+\special{pa -3 -794}\special{pa 7 -770}\special{pa 16 -744}\special{pa 25 -715}\special{pa 35 -684}%
+\special{pa 56 -683}\special{pa 76 -680}\special{pa 95 -677}\special{pa 112 -672}%
+\special{pa 128 -667}\special{pa 142 -661}\special{pa 156 -654}\special{pa 169 -646}%
+\special{pa 180 -637}\special{pa 191 -627}\special{pa 202 -616}\special{pa 211 -603}%
+\special{pa 221 -590}\special{pa 230 -576}\special{pa 238 -561}\special{pa 246 -545}%
+\special{pa 253 -528}\special{pa 258 -510}\special{pa 262 -492}\special{pa 264 -473}%
+\special{pa 264 -455}\special{pa 261 -436}\special{pa 257 -417}\special{pa 250 -399}%
+\special{pa 242 -382}\special{pa 232 -365}\special{pa 222 -348}\special{pa 212 -333}%
+\special{pa 202 -320}\special{pa 192 -307}\special{pa 181 -296}\special{pa 170 -285}%
+\special{pa 158 -276}\special{pa 144 -268}\special{pa 130 -260}\special{pa 114 -253}%
+\special{pa 96 -246}\special{pa 77 -241}\special{pa 55 -235}\special{pa 31 -230}\special{pa 4 -225}%
+\special{pa -26 -221}\special{pa -26 -214}\special{pa -26 -208}\special{pa -26 -201}%
+\special{pa -27 -194}\special{pa -26 -187}\special{pa -26 -181}\special{pa -26 -174}%
+\special{pa -26 -167}\special{pa -26 -160}\special{pa -25 -154}\special{pa -25 -147}%
+\special{pa -24 -140}\special{pa -24 -133}\special{pa -23 -126}\special{pa -22 -119}%
+\special{pa -22 -113}\special{pa -21 -106}\special{pa -20 -99}\special{pa -19 -92}%
+\special{pa -18 -85}\special{pa -17 -78}\special{pa -16 -71}\special{pa -14 -64}\special{pa -13 -57}%
+\special{pa -12 -50}\special{pa -10 -43}\special{pa -9 -36}\special{pa -7 -29}\special{pa -5 -21}%
+\special{pa -4 -14}\special{pa -2 -7}\special{pa 0 0}\special{pa -9 -11}\special{pa -17 -21}%
+\special{pa -26 -32}\special{pa -34 -42}\special{pa -42 -52}\special{pa -50 -61}\special{pa -58 -71}%
+\special{pa -66 -80}\special{pa -74 -88}\special{pa -82 -97}\special{pa -89 -105}%
+\special{pa -97 -113}\special{pa -104 -121}\special{pa -111 -129}\special{pa -119 -136}%
+\special{pa -126 -143}\special{pa -133 -150}\special{pa -139 -156}\special{pa -146 -162}%
+\special{pa -153 -168}\special{pa -160 -174}\special{pa -166 -180}\special{pa -172 -185}%
+\special{pa -179 -190}\special{pa -185 -195}\special{pa -191 -199}\special{pa -197 -203}%
+\special{pa -203 -207}\special{pa -208 -211}\special{pa -214 -215}\special{pa -220 -218}%
+\special{pa -225 -221}%
+\special{fp}%
+\settowidth{\Width}{{\begin{minipage}{1.5cm}#5\end{minipage}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\begin{minipage}{1.5cm}#5\end{minipage}}}\settodepth{\Depth}{{\begin{minipage}{1.5cm}#5\end{minipage}}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.8000,1.2000){\hspace*{\Width}\raisebox{\Height}{{\begin{minipage}{1.5cm}#5\end{minipage}}}}%
+%
+%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\scalebox{#4}{\tempcontents}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\scalebox{#4}{\tempcontents}}}\settodepth{\Depth}{{\scalebox{#4}{\tempcontents}}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\scalebox{#4}{\tempcontents}}}}%
+%
+}%
+\newcommand{\lefthand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -1.00000, -0.80000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa -324 274}\special{pa -311 261}\special{pa -296 251}\special{pa -280 243}%
+\special{pa -265 237}\special{pa -249 232}\special{pa -233 228}\special{pa -219 225}%
+\special{pa -204 222}\special{pa -192 218}\special{pa -180 215}\special{pa -170 210}%
+\special{pa -163 204}\special{pa -156 198}\special{pa -150 191}\special{pa -143 184}%
+\special{pa -136 178}\special{pa -127 173}\special{pa -118 169}\special{pa -108 165}%
+\special{pa -99 162}\special{pa -91 160}\special{pa -84 158}\special{pa -80 156}\special{pa -78 154}%
+\special{pa -76 152}\special{pa -76 151}\special{pa -76 149}\special{pa -77 146}\special{pa -78 144}%
+\special{pa -80 142}\special{pa -82 140}\special{pa -85 138}\special{pa -88 137}\special{pa -92 136}%
+\special{pa -97 136}\special{pa -102 136}\special{pa -107 136}\special{pa -112 136}%
+\special{pa -117 137}\special{pa -122 137}\special{pa -126 138}\special{pa -130 138}%
+\special{pa -133 139}%
+\special{fp}%
+\special{pa -165 170}\special{pa -161 166}\special{pa -156 161}\special{pa -149 154}%
+\special{pa -142 147}\special{pa -133 138}\special{pa -123 129}\special{pa -113 119}%
+\special{pa -102 109}\special{pa -91 98}\special{pa -79 88}\special{pa -67 78}\special{pa -55 69}%
+\special{pa -43 60}\special{pa -34 52}\special{pa -25 44}\special{pa -19 38}\special{pa -14 32}%
+\special{pa -10 26}\special{pa -7 22}\special{pa -5 17}\special{pa -3 12}\special{pa -1 8}%
+\special{pa 0 4}\special{pa 0 1}\special{pa -1 -1}\special{pa -3 -3}\special{pa -6 -3}%
+\special{pa -11 -2}\special{pa -17 1}\special{pa -25 5}\special{pa -35 12}\special{pa -47 20}%
+\special{pa -60 30}\special{pa -74 42}\special{pa -90 55}\special{pa -106 68}\special{pa -122 82}%
+\special{pa -137 95}\special{pa -150 106}\special{pa -161 115}\special{pa -168 122}%
+\special{pa -171 124}\special{pa -169 123}\special{pa -161 116}%
+\special{fp}%
+\special{pa -151 107}\special{pa -151 105}\special{pa -150 104}\special{pa -150 102}%
+\special{pa -151 101}\special{pa -151 99}\special{pa -151 98}\special{pa -152 97}%
+\special{pa -153 96}\special{pa -153 94}\special{pa -154 93}\special{pa -155 92}\special{pa -156 92}%
+\special{pa -158 91}\special{pa -159 90}\special{pa -160 89}\special{pa -161 89}\special{pa -163 88}%
+\special{pa -164 88}\special{pa -165 87}\special{pa -167 87}\special{pa -168 86}\special{pa -170 86}%
+\special{pa -171 86}\special{pa -173 85}\special{pa -174 85}\special{pa -176 85}\special{pa -177 85}%
+\special{pa -178 85}\special{pa -179 85}\special{pa -181 85}\special{pa -182 85}\special{pa -183 85}%
+\special{pa -184 85}\special{pa -185 85}\special{pa -185 85}\special{pa -186 85}\special{pa -187 85}%
+\special{fp}%
+\special{pa -198 97}\special{pa -196 96}\special{pa -193 94}\special{pa -192 93}\special{pa -190 91}%
+\special{pa -189 90}\special{pa -188 88}\special{pa -188 87}\special{pa -187 86}\special{pa -187 84}%
+\special{pa -188 83}\special{pa -188 82}\special{pa -189 81}\special{pa -190 80}\special{pa -191 78}%
+\special{pa -192 77}\special{pa -193 76}\special{pa -194 76}\special{pa -195 75}\special{pa -197 74}%
+\special{pa -198 73}\special{pa -199 72}\special{pa -201 72}\special{pa -202 71}\special{pa -204 71}%
+\special{pa -205 70}\special{pa -206 70}\special{pa -207 69}\special{pa -209 69}\special{pa -210 69}%
+\special{pa -211 68}\special{pa -213 68}\special{pa -214 68}\special{pa -215 68}\special{pa -216 68}%
+\special{pa -218 68}\special{pa -219 68}\special{pa -220 68}\special{pa -221 68}\special{pa -222 68}%
+\special{fp}%
+\special{pa -232 80}\special{pa -230 78}\special{pa -228 76}\special{pa -227 75}\special{pa -226 73}%
+\special{pa -225 71}\special{pa -224 69}\special{pa -223 67}\special{pa -223 66}\special{pa -223 64}%
+\special{pa -223 63}\special{pa -224 61}\special{pa -225 60}\special{pa -226 58}\special{pa -227 57}%
+\special{pa -229 55}\special{pa -231 54}\special{pa -233 53}\special{pa -236 53}\special{pa -240 53}%
+\special{pa -244 54}\special{pa -248 56}\special{pa -253 58}\special{pa -259 62}\special{pa -265 67}%
+\special{pa -271 73}\special{pa -277 79}\special{pa -283 86}\special{pa -289 93}\special{pa -294 101}%
+\special{pa -299 110}\special{pa -303 118}\special{pa -307 127}\special{pa -312 137}%
+\special{pa -316 146}\special{pa -321 156}\special{pa -325 165}\special{pa -331 175}%
+\special{pa -336 185}\special{pa -343 194}\special{pa -350 203}\special{pa -358 213}%
+\special{pa -367 221}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\righthand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -0.01000, -0.80000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 324 274}\special{pa 311 261}\special{pa 296 251}\special{pa 280 243}\special{pa 265 237}%
+\special{pa 249 232}\special{pa 233 228}\special{pa 219 225}\special{pa 204 222}\special{pa 192 218}%
+\special{pa 180 215}\special{pa 170 210}\special{pa 163 204}\special{pa 156 198}\special{pa 150 191}%
+\special{pa 143 184}\special{pa 136 178}\special{pa 127 173}\special{pa 118 169}\special{pa 108 165}%
+\special{pa 99 162}\special{pa 91 160}\special{pa 84 158}\special{pa 80 156}\special{pa 78 154}%
+\special{pa 76 152}\special{pa 76 151}\special{pa 76 149}\special{pa 77 146}\special{pa 78 144}%
+\special{pa 80 142}\special{pa 82 140}\special{pa 85 138}\special{pa 88 137}\special{pa 92 136}%
+\special{pa 97 136}\special{pa 102 136}\special{pa 107 136}\special{pa 112 136}\special{pa 117 137}%
+\special{pa 122 137}\special{pa 126 138}\special{pa 130 138}\special{pa 133 139}%
+\special{fp}%
+\special{pa 165 170}\special{pa 161 166}\special{pa 156 161}\special{pa 149 154}\special{pa 142 147}%
+\special{pa 133 138}\special{pa 123 129}\special{pa 113 119}\special{pa 102 109}\special{pa 91 98}%
+\special{pa 79 88}\special{pa 67 78}\special{pa 55 69}\special{pa 43 60}\special{pa 34 52}%
+\special{pa 25 44}\special{pa 19 38}\special{pa 14 32}\special{pa 10 26}\special{pa 7 22}%
+\special{pa 5 17}\special{pa 3 12}\special{pa 1 8}\special{pa 0 4}\special{pa 0 1}%
+\special{pa 1 -1}\special{pa 3 -3}\special{pa 6 -3}\special{pa 11 -2}\special{pa 17 1}%
+\special{pa 25 5}\special{pa 35 12}\special{pa 47 20}\special{pa 60 30}\special{pa 74 42}%
+\special{pa 90 55}\special{pa 106 68}\special{pa 122 82}\special{pa 137 95}\special{pa 150 106}%
+\special{pa 161 115}\special{pa 168 122}\special{pa 171 124}\special{pa 169 123}\special{pa 161 116}%
+\special{fp}%
+\special{pa 151 107}\special{pa 151 105}\special{pa 150 104}\special{pa 150 102}\special{pa 151 101}%
+\special{pa 151 99}\special{pa 151 98}\special{pa 152 97}\special{pa 153 96}\special{pa 153 94}%
+\special{pa 154 93}\special{pa 155 92}\special{pa 156 92}\special{pa 158 91}\special{pa 159 90}%
+\special{pa 160 89}\special{pa 161 89}\special{pa 163 88}\special{pa 164 88}\special{pa 165 87}%
+\special{pa 167 87}\special{pa 168 86}\special{pa 170 86}\special{pa 171 86}\special{pa 173 85}%
+\special{pa 174 85}\special{pa 176 85}\special{pa 177 85}\special{pa 178 85}\special{pa 179 85}%
+\special{pa 181 85}\special{pa 182 85}\special{pa 183 85}\special{pa 184 85}\special{pa 185 85}%
+\special{pa 185 85}\special{pa 186 85}\special{pa 187 85}%
+\special{fp}%
+\special{pa 198 97}\special{pa 196 96}\special{pa 193 94}\special{pa 192 93}\special{pa 190 91}%
+\special{pa 189 90}\special{pa 188 88}\special{pa 188 87}\special{pa 187 86}\special{pa 187 84}%
+\special{pa 188 83}\special{pa 188 82}\special{pa 189 81}\special{pa 190 80}\special{pa 191 78}%
+\special{pa 192 77}\special{pa 193 76}\special{pa 194 76}\special{pa 195 75}\special{pa 197 74}%
+\special{pa 198 73}\special{pa 199 72}\special{pa 201 72}\special{pa 202 71}\special{pa 204 71}%
+\special{pa 205 70}\special{pa 206 70}\special{pa 207 69}\special{pa 209 69}\special{pa 210 69}%
+\special{pa 211 68}\special{pa 213 68}\special{pa 214 68}\special{pa 215 68}\special{pa 216 68}%
+\special{pa 218 68}\special{pa 219 68}\special{pa 220 68}\special{pa 221 68}\special{pa 222 68}%
+\special{fp}%
+\special{pa 232 80}\special{pa 230 78}\special{pa 228 76}\special{pa 227 75}\special{pa 226 73}%
+\special{pa 225 71}\special{pa 224 69}\special{pa 223 67}\special{pa 223 66}\special{pa 223 64}%
+\special{pa 223 63}\special{pa 224 61}\special{pa 225 60}\special{pa 226 58}\special{pa 227 57}%
+\special{pa 229 55}\special{pa 231 54}\special{pa 233 53}\special{pa 236 53}\special{pa 240 53}%
+\special{pa 244 54}\special{pa 248 56}\special{pa 253 58}\special{pa 259 62}\special{pa 265 67}%
+\special{pa 271 73}\special{pa 277 79}\special{pa 283 86}\special{pa 289 93}\special{pa 294 101}%
+\special{pa 299 110}\special{pa 303 118}\special{pa 307 127}\special{pa 312 137}\special{pa 316 146}%
+\special{pa 321 156}\special{pa 325 165}\special{pa 331 175}\special{pa 336 185}\special{pa 343 194}%
+\special{pa 350 203}\special{pa 358 213}\special{pa 367 221}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\leftdownhand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -1.00000, -0.02000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa -324 -274}\special{pa -311 -261}\special{pa -296 -251}\special{pa -280 -243}%
+\special{pa -265 -237}\special{pa -249 -232}\special{pa -233 -228}\special{pa -219 -225}%
+\special{pa -204 -222}\special{pa -192 -218}\special{pa -180 -215}\special{pa -170 -210}%
+\special{pa -163 -204}\special{pa -156 -198}\special{pa -150 -191}\special{pa -143 -184}%
+\special{pa -136 -178}\special{pa -127 -173}\special{pa -118 -169}\special{pa -108 -165}%
+\special{pa -99 -162}\special{pa -91 -160}\special{pa -84 -158}\special{pa -80 -156}%
+\special{pa -78 -154}\special{pa -76 -152}\special{pa -76 -151}\special{pa -76 -149}%
+\special{pa -77 -146}\special{pa -78 -144}\special{pa -80 -142}\special{pa -82 -140}%
+\special{pa -85 -138}\special{pa -88 -137}\special{pa -92 -136}\special{pa -97 -136}%
+\special{pa -102 -136}\special{pa -107 -136}\special{pa -112 -136}\special{pa -117 -137}%
+\special{pa -122 -137}\special{pa -126 -138}\special{pa -130 -138}\special{pa -133 -139}%
+\special{fp}%
+\special{pa -165 -170}\special{pa -161 -166}\special{pa -156 -161}\special{pa -149 -154}%
+\special{pa -142 -147}\special{pa -133 -138}\special{pa -123 -129}\special{pa -113 -119}%
+\special{pa -102 -109}\special{pa -91 -98}\special{pa -79 -88}\special{pa -67 -78}%
+\special{pa -55 -69}\special{pa -43 -60}\special{pa -34 -52}\special{pa -25 -44}\special{pa -19 -38}%
+\special{pa -14 -32}\special{pa -10 -26}\special{pa -7 -22}\special{pa -5 -17}\special{pa -3 -12}%
+\special{pa -1 -8}\special{pa 0 -4}\special{pa 0 -1}\special{pa -1 1}\special{pa -3 3}%
+\special{pa -6 3}\special{pa -11 2}\special{pa -17 -1}\special{pa -25 -5}\special{pa -35 -12}%
+\special{pa -47 -20}\special{pa -60 -30}\special{pa -74 -42}\special{pa -90 -55}\special{pa -106 -68}%
+\special{pa -122 -82}\special{pa -137 -95}\special{pa -150 -106}\special{pa -161 -115}%
+\special{pa -168 -122}\special{pa -171 -124}\special{pa -169 -123}\special{pa -161 -116}%
+\special{fp}%
+\special{pa -151 -107}\special{pa -151 -105}\special{pa -150 -104}\special{pa -150 -102}%
+\special{pa -151 -101}\special{pa -151 -99}\special{pa -151 -98}\special{pa -152 -97}%
+\special{pa -153 -96}\special{pa -153 -94}\special{pa -154 -93}\special{pa -155 -92}%
+\special{pa -156 -92}\special{pa -158 -91}\special{pa -159 -90}\special{pa -160 -89}%
+\special{pa -161 -89}\special{pa -163 -88}\special{pa -164 -88}\special{pa -165 -87}%
+\special{pa -167 -87}\special{pa -168 -86}\special{pa -170 -86}\special{pa -171 -86}%
+\special{pa -173 -85}\special{pa -174 -85}\special{pa -176 -85}\special{pa -177 -85}%
+\special{pa -178 -85}\special{pa -179 -85}\special{pa -181 -85}\special{pa -182 -85}%
+\special{pa -183 -85}\special{pa -184 -85}\special{pa -185 -85}\special{pa -185 -85}%
+\special{pa -186 -85}\special{pa -187 -85}%
+\special{fp}%
+\special{pa -198 -97}\special{pa -196 -96}\special{pa -193 -94}\special{pa -192 -93}%
+\special{pa -190 -91}\special{pa -189 -90}\special{pa -188 -88}\special{pa -188 -87}%
+\special{pa -187 -86}\special{pa -187 -84}\special{pa -188 -83}\special{pa -188 -82}%
+\special{pa -189 -81}\special{pa -190 -80}\special{pa -191 -78}\special{pa -192 -77}%
+\special{pa -193 -76}\special{pa -194 -76}\special{pa -195 -75}\special{pa -197 -74}%
+\special{pa -198 -73}\special{pa -199 -72}\special{pa -201 -72}\special{pa -202 -71}%
+\special{pa -204 -71}\special{pa -205 -70}\special{pa -206 -70}\special{pa -207 -69}%
+\special{pa -209 -69}\special{pa -210 -69}\special{pa -211 -68}\special{pa -213 -68}%
+\special{pa -214 -68}\special{pa -215 -68}\special{pa -216 -68}\special{pa -218 -68}%
+\special{pa -219 -68}\special{pa -220 -68}\special{pa -221 -68}\special{pa -222 -68}%
+\special{fp}%
+\special{pa -232 -80}\special{pa -230 -78}\special{pa -228 -76}\special{pa -227 -75}%
+\special{pa -226 -73}\special{pa -225 -71}\special{pa -224 -69}\special{pa -223 -67}%
+\special{pa -223 -66}\special{pa -223 -64}\special{pa -223 -63}\special{pa -224 -61}%
+\special{pa -225 -60}\special{pa -226 -58}\special{pa -227 -57}\special{pa -229 -55}%
+\special{pa -231 -54}\special{pa -233 -53}\special{pa -236 -53}\special{pa -240 -53}%
+\special{pa -244 -54}\special{pa -248 -56}\special{pa -253 -58}\special{pa -259 -62}%
+\special{pa -265 -67}\special{pa -271 -73}\special{pa -277 -79}\special{pa -283 -86}%
+\special{pa -289 -93}\special{pa -294 -101}\special{pa -299 -110}\special{pa -303 -118}%
+\special{pa -307 -127}\special{pa -312 -137}\special{pa -316 -146}\special{pa -321 -156}%
+\special{pa -325 -165}\special{pa -331 -175}\special{pa -336 -185}\special{pa -343 -194}%
+\special{pa -350 -203}\special{pa -358 -213}\special{pa -367 -221}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\rightdownhand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -0.01000, -0.02000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 324 -274}\special{pa 311 -261}\special{pa 296 -251}\special{pa 280 -243}%
+\special{pa 265 -237}\special{pa 249 -232}\special{pa 233 -228}\special{pa 219 -225}%
+\special{pa 204 -222}\special{pa 192 -218}\special{pa 180 -215}\special{pa 170 -210}%
+\special{pa 163 -204}\special{pa 156 -198}\special{pa 150 -191}\special{pa 143 -184}%
+\special{pa 136 -178}\special{pa 127 -173}\special{pa 118 -169}\special{pa 108 -165}%
+\special{pa 99 -162}\special{pa 91 -160}\special{pa 84 -158}\special{pa 80 -156}\special{pa 78 -154}%
+\special{pa 76 -152}\special{pa 76 -151}\special{pa 76 -149}\special{pa 77 -146}\special{pa 78 -144}%
+\special{pa 80 -142}\special{pa 82 -140}\special{pa 85 -138}\special{pa 88 -137}\special{pa 92 -136}%
+\special{pa 97 -136}\special{pa 102 -136}\special{pa 107 -136}\special{pa 112 -136}%
+\special{pa 117 -137}\special{pa 122 -137}\special{pa 126 -138}\special{pa 130 -138}%
+\special{pa 133 -139}%
+\special{fp}%
+\special{pa 165 -170}\special{pa 161 -166}\special{pa 156 -161}\special{pa 149 -154}%
+\special{pa 142 -147}\special{pa 133 -138}\special{pa 123 -129}\special{pa 113 -119}%
+\special{pa 102 -109}\special{pa 91 -98}\special{pa 79 -88}\special{pa 67 -78}\special{pa 55 -69}%
+\special{pa 43 -60}\special{pa 34 -52}\special{pa 25 -44}\special{pa 19 -38}\special{pa 14 -32}%
+\special{pa 10 -26}\special{pa 7 -22}\special{pa 5 -17}\special{pa 3 -12}\special{pa 1 -8}%
+\special{pa 0 -4}\special{pa 0 -1}\special{pa 1 1}\special{pa 3 3}\special{pa 6 3}%
+\special{pa 11 2}\special{pa 17 -1}\special{pa 25 -5}\special{pa 35 -12}\special{pa 47 -20}%
+\special{pa 60 -30}\special{pa 74 -42}\special{pa 90 -55}\special{pa 106 -68}\special{pa 122 -82}%
+\special{pa 137 -95}\special{pa 150 -106}\special{pa 161 -115}\special{pa 168 -122}%
+\special{pa 171 -124}\special{pa 169 -123}\special{pa 161 -116}%
+\special{fp}%
+\special{pa 151 -107}\special{pa 151 -105}\special{pa 150 -104}\special{pa 150 -102}%
+\special{pa 151 -101}\special{pa 151 -99}\special{pa 151 -98}\special{pa 152 -97}%
+\special{pa 153 -96}\special{pa 153 -94}\special{pa 154 -93}\special{pa 155 -92}\special{pa 156 -92}%
+\special{pa 158 -91}\special{pa 159 -90}\special{pa 160 -89}\special{pa 161 -89}\special{pa 163 -88}%
+\special{pa 164 -88}\special{pa 165 -87}\special{pa 167 -87}\special{pa 168 -86}\special{pa 170 -86}%
+\special{pa 171 -86}\special{pa 173 -85}\special{pa 174 -85}\special{pa 176 -85}\special{pa 177 -85}%
+\special{pa 178 -85}\special{pa 179 -85}\special{pa 181 -85}\special{pa 182 -85}\special{pa 183 -85}%
+\special{pa 184 -85}\special{pa 185 -85}\special{pa 185 -85}\special{pa 186 -85}\special{pa 187 -85}%
+\special{fp}%
+\special{pa 198 -97}\special{pa 196 -96}\special{pa 193 -94}\special{pa 192 -93}\special{pa 190 -91}%
+\special{pa 189 -90}\special{pa 188 -88}\special{pa 188 -87}\special{pa 187 -86}\special{pa 187 -84}%
+\special{pa 188 -83}\special{pa 188 -82}\special{pa 189 -81}\special{pa 190 -80}\special{pa 191 -78}%
+\special{pa 192 -77}\special{pa 193 -76}\special{pa 194 -76}\special{pa 195 -75}\special{pa 197 -74}%
+\special{pa 198 -73}\special{pa 199 -72}\special{pa 201 -72}\special{pa 202 -71}\special{pa 204 -71}%
+\special{pa 205 -70}\special{pa 206 -70}\special{pa 207 -69}\special{pa 209 -69}\special{pa 210 -69}%
+\special{pa 211 -68}\special{pa 213 -68}\special{pa 214 -68}\special{pa 215 -68}\special{pa 216 -68}%
+\special{pa 218 -68}\special{pa 219 -68}\special{pa 220 -68}\special{pa 221 -68}\special{pa 222 -68}%
+\special{fp}%
+\special{pa 232 -80}\special{pa 230 -78}\special{pa 228 -76}\special{pa 227 -75}\special{pa 226 -73}%
+\special{pa 225 -71}\special{pa 224 -69}\special{pa 223 -67}\special{pa 223 -66}\special{pa 223 -64}%
+\special{pa 223 -63}\special{pa 224 -61}\special{pa 225 -60}\special{pa 226 -58}\special{pa 227 -57}%
+\special{pa 229 -55}\special{pa 231 -54}\special{pa 233 -53}\special{pa 236 -53}\special{pa 240 -53}%
+\special{pa 244 -54}\special{pa 248 -56}\special{pa 253 -58}\special{pa 259 -62}\special{pa 265 -67}%
+\special{pa 271 -73}\special{pa 277 -79}\special{pa 283 -86}\special{pa 289 -93}\special{pa 294 -101}%
+\special{pa 299 -110}\special{pa 303 -118}\special{pa 307 -127}\special{pa 312 -137}%
+\special{pa 316 -146}\special{pa 321 -156}\special{pa 325 -165}\special{pa 331 -175}%
+\special{pa 336 -185}\special{pa 343 -194}\special{pa 350 -203}\special{pa 358 -213}%
+\special{pa 367 -221}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\cirscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 621.63538, 724.07834)( 277.81039,2339.74153)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 916 -3691}\special{pa 815 -3685}\special{pa 726 -3696}\special{pa 650 -3725}%
+\special{pa 585 -3768}\special{pa 533 -3824}\special{pa 492 -3891}\special{pa 463 -3966}%
+\special{pa 445 -4049}\special{pa 437 -4137}\special{pa 441 -4228}\special{pa 455 -4321}%
+\special{pa 479 -4413}\special{pa 514 -4503}\special{pa 558 -4588}\special{pa 612 -4664}%
+\special{pa 676 -4729}\special{pa 748 -4780}\special{pa 830 -4813}\special{pa 920 -4825}%
+\special{pa 1016 -4817}\special{pa 1113 -4791}\special{pa 1204 -4750}\special{pa 1285 -4698}%
+\special{pa 1351 -4638}\special{pa 1395 -4572}\special{pa 1416 -4502}\special{pa 1416 -4431}%
+\special{pa 1400 -4358}\special{pa 1369 -4284}\special{pa 1327 -4210}\special{pa 1278 -4137}%
+\special{pa 1225 -4066}\special{pa 1171 -3997}\special{pa 1120 -3932}\special{pa 1074 -3871}%
+\special{pa 1037 -3815}\special{pa 1012 -3765}%
+\special{fp}%
+\special{pa 980 -3765}\special{pa 918 -3783}\special{pa 864 -3802}\special{pa 818 -3820}%
+\special{pa 778 -3839}\special{pa 746 -3859}\special{pa 720 -3880}\special{pa 701 -3903}%
+\special{pa 688 -3928}\special{pa 681 -3956}\special{pa 680 -3986}\special{pa 684 -4020}%
+\special{pa 694 -4058}\special{pa 709 -4099}\special{pa 729 -4143}\special{pa 753 -4189}%
+\special{pa 781 -4234}\special{pa 813 -4276}\special{pa 848 -4314}\special{pa 887 -4346}%
+\special{pa 927 -4371}\special{pa 969 -4387}\special{pa 1009 -4396}\special{pa 1048 -4396}%
+\special{pa 1083 -4386}\special{pa 1114 -4367}\special{pa 1139 -4338}\special{pa 1159 -4302}%
+\special{pa 1173 -4261}\special{pa 1183 -4216}\special{pa 1187 -4171}\special{pa 1187 -4127}%
+\special{pa 1183 -4086}\special{pa 1174 -4046}\special{pa 1163 -4009}\special{pa 1149 -3974}%
+\special{pa 1132 -3940}\special{pa 1115 -3908}\special{pa 1096 -3876}\special{pa 1077 -3846}%
+\special{pa 1059 -3816}\special{pa 1041 -3786}\special{pa 1025 -3756}\special{pa 1012 -3727}%
+\special{fp}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\scirscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 535.76632, 538.46556)( 296.43854,1549.10000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 951 -2440}\special{pa 865 -2450}\special{pa 787 -2470}\special{pa 718 -2499}%
+\special{pa 658 -2535}\special{pa 606 -2577}\special{pa 563 -2624}\special{pa 527 -2675}%
+\special{pa 500 -2728}\special{pa 481 -2781}\special{pa 470 -2835}\special{pa 467 -2889}%
+\special{pa 471 -2941}\special{pa 483 -2991}\special{pa 502 -3039}\special{pa 527 -3083}%
+\special{pa 558 -3124}\special{pa 592 -3160}\special{pa 631 -3191}\special{pa 672 -3218}%
+\special{pa 716 -3241}\special{pa 761 -3259}\special{pa 808 -3273}\special{pa 856 -3283}%
+\special{pa 906 -3288}\special{pa 959 -3287}\special{pa 1013 -3281}\special{pa 1067 -3269}%
+\special{pa 1117 -3251}\special{pa 1162 -3227}\special{pa 1200 -3196}\special{pa 1232 -3160}%
+\special{pa 1258 -3119}\special{pa 1279 -3074}\special{pa 1296 -3025}\special{pa 1306 -2974}%
+\special{pa 1311 -2922}\special{pa 1309 -2868}\special{pa 1300 -2815}\special{pa 1284 -2763}%
+\special{pa 1262 -2712}\special{pa 1233 -2662}\special{pa 1198 -2615}\special{pa 1157 -2571}%
+\special{pa 1109 -2531}\special{pa 1056 -2494}%
+\special{fp}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\triscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 579.38800, 435.04900)( 235.82100, 892.46100)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 909 -2091}\special{pa 893 -2068}\special{pa 877 -2045}\special{pa 861 -2022}%
+\special{pa 845 -2000}\special{pa 829 -1977}\special{pa 813 -1954}\special{pa 797 -1932}%
+\special{pa 782 -1910}\special{pa 766 -1888}\special{pa 750 -1866}\special{pa 735 -1844}%
+\special{pa 719 -1822}\special{pa 704 -1801}\special{pa 688 -1780}\special{pa 673 -1759}%
+\special{pa 658 -1739}\special{pa 643 -1718}\special{pa 628 -1698}\special{pa 613 -1679}%
+\special{pa 598 -1660}\special{pa 584 -1641}\special{pa 569 -1622}\special{pa 555 -1604}%
+\special{pa 541 -1587}\special{pa 527 -1569}\special{pa 513 -1553}\special{pa 499 -1537}%
+\special{pa 486 -1521}\special{pa 472 -1506}\special{pa 459 -1491}\special{pa 446 -1477}%
+\special{pa 433 -1463}\special{pa 420 -1451}\special{pa 408 -1438}\special{pa 395 -1427}%
+\special{pa 383 -1416}\special{pa 371 -1405}%
+\special{fp}%
+\special{pa 371 -1405}\special{pa 379 -1412}\special{pa 388 -1418}\special{pa 399 -1423}%
+\special{pa 410 -1429}\special{pa 423 -1434}\special{pa 437 -1438}\special{pa 452 -1443}%
+\special{pa 468 -1447}\special{pa 486 -1451}\special{pa 504 -1455}\special{pa 523 -1459}%
+\special{pa 544 -1462}\special{pa 565 -1465}\special{pa 587 -1468}\special{pa 610 -1471}%
+\special{pa 634 -1473}\special{pa 659 -1476}\special{pa 685 -1478}\special{pa 711 -1480}%
+\special{pa 738 -1482}\special{pa 766 -1483}\special{pa 795 -1485}\special{pa 824 -1487}%
+\special{pa 854 -1488}\special{pa 884 -1489}\special{pa 915 -1490}\special{pa 947 -1491}%
+\special{pa 979 -1492}\special{pa 1011 -1493}\special{pa 1044 -1494}\special{pa 1077 -1495}%
+\special{pa 1111 -1495}\special{pa 1145 -1496}\special{pa 1179 -1497}\special{pa 1214 -1497}%
+\special{pa 1249 -1498}\special{pa 1284 -1498}%
+\special{fp}%
+\special{pa 1284 -1498}\special{pa 1271 -1513}\special{pa 1259 -1528}\special{pa 1247 -1543}%
+\special{pa 1235 -1558}\special{pa 1223 -1572}\special{pa 1212 -1586}\special{pa 1201 -1601}%
+\special{pa 1190 -1615}\special{pa 1180 -1628}\special{pa 1169 -1642}\special{pa 1159 -1656}%
+\special{pa 1149 -1670}\special{pa 1140 -1683}\special{pa 1130 -1697}\special{pa 1121 -1711}%
+\special{pa 1112 -1724}\special{pa 1103 -1738}\special{pa 1094 -1752}\special{pa 1085 -1765}%
+\special{pa 1076 -1779}\special{pa 1068 -1793}\special{pa 1059 -1807}\special{pa 1051 -1821}%
+\special{pa 1043 -1835}\special{pa 1035 -1849}\special{pa 1026 -1863}\special{pa 1018 -1878}%
+\special{pa 1010 -1892}\special{pa 1002 -1907}\special{pa 994 -1922}\special{pa 986 -1937}%
+\special{pa 978 -1952}\special{pa 970 -1968}\special{pa 962 -1984}\special{pa 954 -2000}%
+\special{pa 946 -2016}\special{pa 938 -2033}%
+\special{fp}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\crosscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 727.79300, 479.77400)( 209.39300, 264.28200)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 839 -1159}\special{pa 847 -1123}\special{pa 855 -1088}\special{pa 862 -1055}%
+\special{pa 870 -1023}\special{pa 877 -992}\special{pa 885 -962}\special{pa 892 -934}%
+\special{pa 899 -907}\special{pa 906 -880}\special{pa 913 -855}\special{pa 920 -831}%
+\special{pa 926 -808}\special{pa 933 -786}\special{pa 939 -764}\special{pa 946 -744}%
+\special{pa 952 -724}\special{pa 958 -705}\special{pa 965 -687}\special{pa 971 -669}%
+\special{pa 977 -652}\special{pa 983 -636}\special{pa 989 -620}\special{pa 995 -604}%
+\special{pa 1001 -589}\special{pa 1007 -575}\special{pa 1013 -560}\special{pa 1019 -547}%
+\special{pa 1025 -533}\special{pa 1031 -520}\special{pa 1037 -506}\special{pa 1043 -493}%
+\special{pa 1049 -481}\special{pa 1055 -468}\special{pa 1061 -455}\special{pa 1067 -442}%
+\special{pa 1073 -429}\special{pa 1079 -416}%
+\special{fp}%
+\special{pa 330 -490}\special{pa 362 -513}\special{pa 394 -536}\special{pa 426 -558}%
+\special{pa 458 -580}\special{pa 490 -602}\special{pa 521 -623}\special{pa 553 -644}%
+\special{pa 584 -664}\special{pa 615 -684}\special{pa 646 -704}\special{pa 676 -724}%
+\special{pa 707 -743}\special{pa 738 -762}\special{pa 768 -780}\special{pa 798 -799}%
+\special{pa 829 -817}\special{pa 859 -835}\special{pa 889 -853}\special{pa 920 -870}%
+\special{pa 950 -888}\special{pa 980 -905}\special{pa 1011 -922}\special{pa 1041 -939}%
+\special{pa 1071 -956}\special{pa 1102 -972}\special{pa 1132 -989}\special{pa 1163 -1006}%
+\special{pa 1194 -1022}\special{pa 1224 -1039}\special{pa 1255 -1055}\special{pa 1286 -1072}%
+\special{pa 1318 -1088}\special{pa 1349 -1105}\special{pa 1380 -1122}\special{pa 1412 -1138}%
+\special{pa 1444 -1155}\special{pa 1476 -1172}%
+\special{fp}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\boxline}[5][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctrc}{-#3}%
+\addtocounter{ketpicctrc}{-#5}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 0 -39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctrc}{#2}%
+\addtocounter{ketpicctrc}{#4}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-#5}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#5%
+\repeat%
+}%
+%
+}%
+\newcommand{\boxlinene}[5][8]{%
+\boxline[#1]{#2}{#3}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinec}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinee}[5][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinew}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinen}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlines}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinenw}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinese}[5][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinesw}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\ketboxframe}[6][8]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\boxline[#1]{#2}{#3}{#4}{#5}%
+%
+}%
+\newcommand{\boxframese}[6][8]{%
+\ketboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\circleline}[4][8]{%
+\settowidth{\Width}{\circlemark[#1]{#4}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\circlemark[#1]{#4}}\settodepth{\Depth}{\circlemark[#1]{#4}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\circlemark[#1]{#4}}}%
+%
+}%
+\newcommand{\hjaggyline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 -39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 -39}\special{pa 39 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vjaggyline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 39 0}\special{pa 0 39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\hjaggylineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 -39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 -39}\special{pa 39 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vjaggylineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 39 0}\special{pa 0 39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\jaggyboxframe}[6][8]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\setcounter{ketpicctrg}{#2}%
+\setcounter{ketpicctrh}{#3}%
+\hjaggylineb[#1]{\theketpicctrg}{\theketpicctrh}{#4}%
+\vjaggylineb[#1]{\theketpicctrg}{\theketpicctrh}{#5}%
+\setcounter{ketpicctrg}{#2}%
+\setcounter{ketpicctrh}{#3}%
+\addtocounter{ketpicctrh}{#5}%
+\hjaggyline[#1]{\theketpicctrg}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{#4}%
+\setcounter{ketpicctrh}{#3}%
+\vjaggyline[#1]{\theketpicctrg}{\theketpicctrh}{#5}%
+%
+}%
+\newcommand{\jaggyboxframese}[6][8]{%
+\jaggyboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\hdialine}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -0.50000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 39 -20}\special{pa 0 0}\special{pa 39 20}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -0.50000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 -20}\special{pa 39 0}\special{pa 0 20}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vdialine}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( -0.50000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa -20 0}\special{pa 0 -39}\special{pa 20 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( -0.50000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa -20 -39}\special{pa 0 0}\special{pa 20 -39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\diaboxframe}[6][4]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\setcounter{ketpicctrh}{#3}%
+\hdialine[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrh}{#3}%
+\addtocounter{ketpicctrh}{#5}%
+\hdialine[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrg}{#2}%
+\vdialine[#1]{\theketpicctrg}{#3}{#5}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{#4}%
+\vdialine[#1]{\theketpicctrg}{#3}{#5}%
+%
+}%
+\newcommand{\diaboxframese}[6][8]{%
+\diaboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\hdashline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 20 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\hdashlineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 20 0}\special{pa 39 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vdashline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 0 -20}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vdashlineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 -20}\special{pa 0 -39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\dashboxframe}[6][4]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\setcounter{ketpicctrh}{#3}%
+\hdashline[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrh}{#3}%
+\addtocounter{ketpicctrh}{#5}%
+\hdashlineb[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrg}{#2}%
+\vdashline[#1]{\theketpicctrg}{#3}{#5}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{#4}%
+\vdashlineb[#1]{\theketpicctrg}{#3}{#5}%
+%
+}%
+\newcommand{\dashboxframese}[6][8]{%
+\dashboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxlinep}[6][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 39 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=0.1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 4 0}%
+\special{fp}%
+\end{picture}}%%
+}%
+{\unitlength=0.1mm%
+\setcounter{ketpicctrc}{-#3}%
+\addtocounter{ketpicctrc}{-#5}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{9}%
+%
+{%
+\ifnum %
+\theketpicctrb>#4 %
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+%
+\else%
+\addtocounter{ketpicctra}{9}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 0 -39}%
+\special{fp}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=0.1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 0 0}\special{pa 0 -4}%
+\special{fp}%
+\end{picture}}%%
+}%
+{\unitlength=0.1mm%
+\setcounter{ketpicctrc}{#2}%
+\addtocounter{ketpicctrc}{#4}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{9}%
+%
+{%
+\ifnum %
+\theketpicctrb>#5 %
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+%
+\else%
+\addtocounter{ketpicctra}{9}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#5%
+\repeat%
+}%
+}%
+%
+}%
+\newcommand{\shadeframep}[6][1]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 100.00000, 100.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+{\color{#1}%
+\special{pa 0 0}\special{pa 3937 0}\special{pa 3937 -3937}\special{pa 0 -3937}\special{pa 0 0}%
+\special{sh 1}\special{ip}%
+}%
+\end{picture}}%%
+}%
+{\unitlength=0.1mm%
+%
+{%
+\ifnum %
+#4<100 %
+%
+{%
+\ifnum %
+#5<100 %
+\settowidth{\Width}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#4<1000 %
+%
+{%
+\ifnum %
+#5<100 %
+\settowidth{\Width}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5<100 %
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}}%
+\setcounter{ketpicctra}{#2}%
+\addtocounter{ketpicctra}{#4}%
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(\theketpicctra,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}}%
+\setcounter{ketpicctra}{#2}%
+\addtocounter{ketpicctra}{#4}%
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(\theketpicctra,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+}%
+%
+}%
+\newcommand{\popframe}[9][8]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#9}%
+\setcounter{ketpicctrh}{\value{ketpicctra}}%
+\ketcalcheight{#9}%
+\setcounter{ketpicctri}{\value{ketpicctra}}%
+\ketcalcdepth{#9}%
+\addtocounter{ketpicctri}{\value{ketpicctra}}%
+\addtocounter{ketpicctrh}{30}%
+\addtocounter{ketpicctri}{30}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\addtocounter{ketpicctrg}{15}%
+\shadeframep[#5]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#5}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\shadeframep[#7]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#7}%
+\boxlinep[#1]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#8}%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctra}{\value{ketpicctri}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrg}{\value{ketpicctra}}%
+\multiply\value{ketpicctrg} by -1%
+\settowidth{\Width}{{#9}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{#9}}\settodepth{\Depth}{{#9}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrf,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{{#9}}}%
+}%
+%
+}%
+\newcommand{\colorframe}[7][8]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#7}%
+\setcounter{ketpicctrh}{\value{ketpicctra}}%
+\ketcalcheight{#7}%
+\setcounter{ketpicctri}{\value{ketpicctra}}%
+\ketcalcdepth{#7}%
+\addtocounter{ketpicctri}{\value{ketpicctra}}%
+\addtocounter{ketpicctrh}{30}%
+\addtocounter{ketpicctri}{30}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\shadeframep[#4]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#5}%
+\boxlinep[#1]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#6}%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctra}{\value{ketpicctri}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrg}{\value{ketpicctra}}%
+\multiply\value{ketpicctrg} by -1%
+\settowidth{\Width}{{#7}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{#7}}\settodepth{\Depth}{{#7}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrf,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{{#7}}}%
+}%
+%
+}%
+\newcommand{\colorframes}[7][8]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#7}%
+\setcounter{ketpicctrh}{\value{ketpicctra}}%
+\ketcalcheight{#7}%
+\setcounter{ketpicctri}{\value{ketpicctra}}%
+\ketcalcdepth{#7}%
+\addtocounter{ketpicctri}{\value{ketpicctra}}%
+\addtocounter{ketpicctrh}{30}%
+\addtocounter{ketpicctri}{30}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\setcounter{ketpicctra}{\value{ketpicctrh}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrf}{-\value{ketpicctra}}%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\shadeframep[#5]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#5}%
+\boxlinep[#1]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#6}%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctra}{\value{ketpicctri}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrg}{\value{ketpicctra}}%
+\multiply\value{ketpicctrg} by -1%
+\settowidth{\Width}{{#7}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{#7}}\settodepth{\Depth}{{#7}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrf,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{{#7}}}%
+}%
+%
+}%
diff --git a/texmf-dist/tex/latex/ketpic/ketlayer2e.sty b/texmf-dist/tex/latex/ketpic/ketlayer2e.sty
new file mode 100644
index 00000000..62d2ad67
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketlayer2e.sty
@@ -0,0 +1,3155 @@
+%Copyright (C) 2014 Setsuo Takato, KETpic developer team
+%*
+%* This program is free software: you can redistribute it and/or modify
+%* it under the terms of the GNU General Public License as published by
+%* the Free Software Foundation; either version 3 of the License, or
+%* (at your option) any later version.
+%*
+%* This program is distributed in the hope that it will be useful,
+%* but WITHOUT ANY WARRANTY; without even the implied warranty of
+%* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%* GNU General Public License for more details.
+%*
+%* You should have received a copy of the GNU General Public License
+%* along with this program. If not, see <http://www.gnu.org/licenses/>%%% ketlayer2e.sty 2017-1-11 8:5
+%%% ketlayer2e170109.sce 2017-1-10 13:47
+% 2017.01.09%
+\newlength{\layercurrentunit}%
+\newcommand{\ketshadebox}[7][0]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 100.00000, 100.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+{\color{#7}
+\polygon*(0.00010,0.00010)(99.99990,0.00010)(99.99990,99.99990)(0.00010,99.99990)%
+(0.00010,0.00010)
+}%
+\end{picture}}%%
+}%
+%
+{%
+\ifnum %
+#4<10 %
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#7}\scalebox{0.#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+{%
+\ifnum %
+#1>0 %
+\boxframese{#2}{#3}{#4}{#5}{}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\shadeboxse}[7][0]{%
+\ketshadebox[#1]{#2}{#3}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxc}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxe}[7][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxw}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxn}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxs}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxnw}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxne}[7][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\shadeboxsw}[7][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\ketshadebox[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}{#7}%
+%
+}%
+\newcommand{\eraser}[5][0]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 100.00000, 100.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+{\color[cmyk]{0,0,0,0}
+\polygon*(0.00010,0.00010)(99.99990,0.00010)(99.99990,99.99990)(0.00010,99.99990)%
+(0.00010,0.00010)
+}%
+\end{picture}}%%
+}%
+%
+{%
+\ifnum %
+#4<10 %
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.0#4}[0.#5]{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5<10 %
+\settowidth{\Width}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.#4}[0.0#5]{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\scalebox{0.#4}[0.#5]{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\scalebox{0.#4}[0.#5]{\tmpcontents}}\settodepth{\Depth}{\scalebox{0.#4}[0.#5]{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\scalebox{0.#4}[0.#5]{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+{%
+\ifnum %
+#1>0 %
+\boxframese{#2}{#3}{#4}{#5}{}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\eraserse}[5][0]{%
+\eraser[#1]{#2}{#3}{#4}{#5}%
+%
+}%
+\newcommand{\eraserc}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasere}[5][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\eraserw}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#4}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasern}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasers}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasernw}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\eraserne}[5][0]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#4}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\erasersw}[5][0]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\eraser[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\arrowhead}[4][1]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.00000, 1.23607)( -2.00000, -0.61803)%
+\linethickness{0.008in}%
+%
+\linethickness{0.004in}%
+\polyline(0.00000,0.00000)(2.00000,-0.61803)(2.00000,0.61803)(0.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(0.00000,0.00000)(2.00000,-0.61803)(2.00000,0.61803)(0.00000,0.00000)\end{picture}}%%
+}%
+\settowidth{\Width}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}\settodepth{\Depth}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#4}{\scalebox{#1}{\tmpcontents}}}}%
+%
+}%
+\newcommand{\lineseg}[5][12]{%
+\def\tmpcontents{%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.00200)( 0.00000, -0.00100)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+%
+{%
+\ifnum %
+#5>0 %
+%
+{%
+\ifnum %
+#5<90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5>-90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\dashlineseg}[5][12]{%
+\def\tmpcontents{%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.00200)( 0.00000, -0.00100)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(0.50000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+%
+{%
+\ifnum %
+#5>0 %
+%
+{%
+\ifnum %
+#5<90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5>-90 %
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\else%
+\settowidth{\Width}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}\settodepth{\Depth}{\rotatebox[origin=c]{#5}{\tmpcontents}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\rotatebox[origin=c]{#5}{\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+}%
+\def\arrowline#1#2#3#4{%
+\lineseg[12]{#1}{#2}{#3}{#4}%
+\arrowhead{#1}{#2}{#4}%
+%
+}%
+\newcommand{\arrowlineseg}[5][12]{%
+\lineseg[#1]{#2}{#3}{#4}{#5}%
+\arrowhead{#2}{#3}{#5}%
+%
+}%
+\newcommand{\conversion}[1]{%
+\setcounter{ketpicctra}{#1}%
+\multiply\value{ketpicctra} by 3937%
+\divide\value{ketpicctra} by 100%
+\{\theketpicctra\}%
+%
+}%
+\newcommand{\dispgrid}[2]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 10.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+\put(0.00000,0.00000){\circle*{0.304800}}\put(1.00000,0.00000){\circle*{0.304800}}%
+\put(2.00000,0.00000){\circle*{0.304800}}\put(3.00000,0.00000){\circle*{0.304800}}%
+\put(4.00000,0.00000){\circle*{0.304800}}\put(5.00000,0.00000){\circle*{0.304800}}%
+\put(6.00000,0.00000){\circle*{0.304800}}\put(7.00000,0.00000){\circle*{0.304800}}%
+\put(8.00000,0.00000){\circle*{0.304800}}\put(9.00000,0.00000){\circle*{0.304800}}%
+\put(10.00000,0.00000){\circle*{0.304800}}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\divide\value{ketpicctre} by 10%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\addtocounter{ketpicctrf}{-1}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{0}%
+\addtocounter{ketpicctrd}{-\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+\setcounter{ketpicctrg}{0}%
+\addtocounter{ketpicctrg}{-\value{ketpicctrd}}%
+\settowidth{\Width}{\theketpicctrg}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\theketpicctrg}\settodepth{\Depth}{\theketpicctrg}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\theketpicctrg}}%
+%
+\ifnum\theketpicctra<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrd>-#2 %
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,-#2){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+%
+\fi%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 10.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+\put(0.00000,0.00000){\circle*{0.304800}}\put(0.00000,1.00000){\circle*{0.304800}}%
+\put(0.00000,2.00000){\circle*{0.304800}}\put(0.00000,3.00000){\circle*{0.304800}}%
+\put(0.00000,4.00000){\circle*{0.304800}}\put(0.00000,5.00000){\circle*{0.304800}}%
+\put(0.00000,6.00000){\circle*{0.304800}}\put(0.00000,7.00000){\circle*{0.304800}}%
+\put(0.00000,8.00000){\circle*{0.304800}}\put(0.00000,9.00000){\circle*{0.304800}}%
+\put(0.00000,10.00000){\circle*{0.304800}}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 0.02000)( -0.01000, -0.01000)%
+\linethickness{0.008in}%
+%
+\put(0.00000,0.00000){\circle*{0.200000}}
+
+\put(0.00000,0.00000){\circle{0.200000}}
+%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\divide\value{ketpicctre} by 10%
+\addtocounter{ketpicctre}{-1}%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{0}%
+\addtocounter{ketpicctrd}{\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrd,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{-10}%
+%
+\ifnum\theketpicctrb<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrc>-#2 %
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{-#2}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\ifnum\theketpicctrb<\theketpicctrc%
+\repeat%
+}%
+%
+\fi%
+}%
+\setcounter{ketpicctrg}{-#2}%
+\addtocounter{ketpicctrg}{-1}%
+\settowidth{\Width}{\theketpicctrd}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\theketpicctrd}\settodepth{\Depth}{\theketpicctrd}\setlength{\Height}{-\Height}%
+\put(\theketpicctrd,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{\theketpicctrd}}%
+%
+\ifnum\theketpicctra<\theketpicctrf%
+\repeat%
+}%
+%
+}%
+\newcommand{\dispgridneg}[2]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 10.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+\put(0.00000,0.00000){\circle*{0.304800}}\put(1.00000,0.00000){\circle*{0.304800}}%
+\put(2.00000,0.00000){\circle*{0.304800}}\put(3.00000,0.00000){\circle*{0.304800}}%
+\put(4.00000,0.00000){\circle*{0.304800}}\put(5.00000,0.00000){\circle*{0.304800}}%
+\put(6.00000,0.00000){\circle*{0.304800}}\put(7.00000,0.00000){\circle*{0.304800}}%
+\put(8.00000,0.00000){\circle*{0.304800}}\put(9.00000,0.00000){\circle*{0.304800}}%
+\put(10.00000,0.00000){\circle*{0.304800}}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\multiply\value{ketpicctre} by -1%
+\divide\value{ketpicctre} by 10%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\addtocounter{ketpicctrf}{-1}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+\setcounter{ketpicctrg}{0}%
+\addtocounter{ketpicctrg}{-\value{ketpicctrd}}%
+\settowidth{\Width}{\theketpicctrg}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\theketpicctrg}\settodepth{\Depth}{\theketpicctrg}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-1,\theketpicctrd){\hspace*{\Width}\raisebox{\Height}{\theketpicctrg}}%
+%
+\ifnum\theketpicctra<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrd>-#2 %
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrc,-#2){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctrf%
+\repeat%
+}%
+%
+\fi%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 10.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+\put(0.00000,0.00000){\circle*{0.304800}}\put(0.00000,1.00000){\circle*{0.304800}}%
+\put(0.00000,2.00000){\circle*{0.304800}}\put(0.00000,3.00000){\circle*{0.304800}}%
+\put(0.00000,4.00000){\circle*{0.304800}}\put(0.00000,5.00000){\circle*{0.304800}}%
+\put(0.00000,6.00000){\circle*{0.304800}}\put(0.00000,7.00000){\circle*{0.304800}}%
+\put(0.00000,8.00000){\circle*{0.304800}}\put(0.00000,9.00000){\circle*{0.304800}}%
+\put(0.00000,10.00000){\circle*{0.304800}}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 0.02000)( -0.01000, -0.01000)%
+\linethickness{0.008in}%
+%
+\put(0.00000,0.00000){\circle*{0.200000}}
+
+\put(0.00000,0.00000){\circle{0.200000}}
+%
+\end{picture}}%%
+}%
+\setcounter{ketpicctre}{#2}%
+\multiply\value{ketpicctre} by -1%
+\divide\value{ketpicctre} by 10%
+\addtocounter{ketpicctre}{-1}%
+\setcounter{ketpicctrf}{#1}%
+\divide\value{ketpicctrf} by 10%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{0}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrd}{0}%
+\addtocounter{ketpicctrd}{\value{ketpicctra}}%
+\multiply\value{ketpicctrd} by 10%
+\setcounter{ketpicctrc}{0}%
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{0}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\addtocounter{ketpicctrc}{10}%
+%
+\ifnum\theketpicctrb<\theketpicctre%
+\repeat%
+}%
+%
+{%
+\ifnum %
+\theketpicctrc>-#2 %
+\setcounter{ketpicctrb}{0}%
+\setcounter{ketpicctrb}{-#2}%
+\addtocounter{ketpicctrb}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\ifnum\theketpicctrb<\theketpicctrc%
+\repeat%
+}%
+%
+\fi%
+}%
+\setcounter{ketpicctrg}{-#2}%
+\addtocounter{ketpicctrg}{1}%
+\settowidth{\Width}{\theketpicctrd}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\theketpicctrd}\settodepth{\Depth}{\theketpicctrd}\setlength{\Height}{\Depth}%
+\put(\theketpicctrd,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{\theketpicctrd}}%
+%
+\ifnum\theketpicctra<\theketpicctrf%
+\repeat%
+}%
+%
+}%
+\newenvironment{layer}[3][0]{%
+\setlength{\layercurrentunit}{\unitlength}%
+\unitlength=1 mm%
+\vspace{-\baselineskip}%
+\noindent%
+\hspace*{#1 mm}%
+\begin{picture}(#3,0)(0,0)%
+%
+{%
+\ifnum %
+#3>0 %
+\dispgrid{#2}{#3}%
+%
+\fi%
+}%
+%
+{%
+\ifnum %
+#3<0 %
+\dispgridneg{#2}{#3}%
+%
+\fi%
+}%
+}{%
+\end{picture}%
+\setlength{\unitlength}{\layercurrentunit}%
+%
+}%
+\newenvironment{layerv}[3][0]{%
+\setlength{\layercurrentunit}{\unitlength}%
+\unitlength=1 mm%
+\vspace*{-\baselineskip}%
+\vspace*{#2 mm}%
+
+\setcounter{ketpicctrj}{-#2}%
+\noindent%
+\hspace*{#1 mm}%
+\begin{picture}(100,0)(0,0)%
+%
+{%
+\ifnum %
+#3>0 %
+\setlength{\Width}{\textwidth}%
+\addtolength{\Width}{-#1 mm}%
+\setcounter{ketpicctri}{0}%
+\setcounter{ketpicctri}{1}%
+\addtocounter{ketpicctri}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctri}{1}%
+%
+{%
+\ifdim %
+\theketpicctri mm>\Width %
+\addtocounter{ketpicctri}{500}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctri<400%
+\repeat%
+}%
+\addtocounter{ketpicctri}{-500}%
+\addtocounter{ketpicctri}{-1}%
+\dispgrid{\theketpicctri}{#3}%
+%
+\fi%
+}%
+}{%
+\end{picture}%
+\vspace*{\theketpicctrj mm}%
+\setlength{\unitlength}{\layercurrentunit}%
+%
+}%
+\newenvironment{layerg}[2][1]{%
+\setlength{\layercurrentunit}{\unitlength}%
+\unitlength=1 mm%
+\vspace*{-\baselineskip}%
+\ketcalcheight{#2}%
+\setcounter{ketpicctrj}{\value{ketpicctra}}%
+\ketcalcdepth{#2}%
+\addtocounter{ketpicctrj}{\value{ketpicctra}}%
+\vspace*{-\theketpicctrj mm}%
+
+\noindent%
+\begin{picture}(100,0)(0,0)%
+%
+{%
+\ifnum %
+#1>0 %
+\setlength{\Width}{\textwidth}%
+\addtolength{\Width}{-#1 mm}%
+\setcounter{ketpicctri}{0}%
+\setcounter{ketpicctri}{1}%
+\addtocounter{ketpicctri}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctri}{1}%
+%
+{%
+\ifdim %
+\theketpicctri mm>\Width %
+\addtocounter{ketpicctri}{500}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctri<400%
+\repeat%
+}%
+\addtocounter{ketpicctri}{-500}%
+\addtocounter{ketpicctri}{-1}%
+\dispgrid{\theketpicctri}{\theketpicctrj}%
+%
+\fi%
+}%
+}{%
+\end{picture}%
+\vspace*{\theketpicctrj mm}%
+\setlength{\unitlength}{\layercurrentunit}%
+%
+}%
+\newcommand{\putnotec}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotee}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotew}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotes}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-\Height}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnoten}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotene}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotenw}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{\Depth}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotese}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-\Height}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\putnotesw}[3]{%
+\settowidth{\Width}{#3}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{#3}\settodepth{\Depth}{#3}\setlength{\Height}{-\Height}%
+\put(#1,-#2){\hspace*{\Width}\raisebox{\Height}{#3}}%
+%
+}%
+\newcommand{\ballonr}[5][8]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 4.00000, 3.50000)( -2.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.31500,0.66000)(0.31187,0.66265)(0.30427,0.66539)(0.29249,0.66830)(0.27679,0.67148)%
+(0.25744,0.67501)(0.23472,0.67898)(0.20890,0.68347)(0.18024,0.68859)(0.14903,0.69440)%
+(0.11553,0.70101)(0.08002,0.70850)(0.04276,0.71695)(0.00403,0.72646)(-0.03590,0.73711)%
+(-0.07675,0.74900)(-0.11826,0.76220)(-0.16016,0.77681)(-0.20216,0.79292)(-0.24401,0.81061)%
+(-0.28543,0.82997)(-0.32614,0.85109)(-0.36587,0.87406)(-0.40436,0.89896)(-0.44133,0.92588)%
+(-0.47651,0.95492)(-0.50963,0.98615)(-0.54041,1.01967)(-0.56858,1.05557)(-0.59388,1.09393)%
+(-0.61602,1.13484)(-0.63475,1.17838)(-0.64978,1.22466)(-0.66084,1.27374)(-0.66767,1.32573)%
+(-0.66998,1.38072)(-0.66752,1.43877)(-0.66000,1.50000)(-0.67265,1.51154)(-0.69581,1.52188)%
+(-0.72792,1.53157)(-0.76744,1.54117)(-0.81283,1.55123)(-0.86253,1.56232)(-0.91500,1.57500)%
+(-0.96870,1.58982)(-1.02207,1.60734)(-1.07358,1.62812)(-1.12167,1.65272)(-1.16480,1.68169)%
+(-1.20143,1.71560)(-1.23000,1.75500)(-1.24947,1.80016)(-1.26077,1.85015)(-1.26535,1.90376)%
+(-1.26462,1.95976)(-1.26003,2.01695)(-1.25302,2.07410)(-1.24500,2.13000)(-1.23692,2.18365)%
+(-1.22772,2.23494)(-1.21582,2.28399)(-1.19966,2.33091)(-1.17768,2.37580)(-1.14832,2.41880)%
+(-1.11000,2.46000)(-1.06166,2.49946)(-1.00422,2.53695)(-0.93909,2.57220)(-0.86769,2.60491)%
+(-0.79143,2.63481)(-0.71173,2.66160)(-0.63000,2.68500)(-0.54766,2.70473)(-0.46612,2.72050)%
+(-0.38680,2.73203)(-0.31111,2.73903)(-0.24047,2.74121)(-0.17630,2.73830)(-0.12000,2.73000)%
+(-0.09460,2.75467)(-0.06709,2.78128)(-0.03698,2.80930)(-0.00373,2.83822)(0.03317,2.86749)%
+(0.07424,2.89659)(0.12000,2.92500)(0.17096,2.95218)(0.22764,2.97761)(0.29056,3.00076)%
+(0.36024,3.02110)(0.43720,3.03811)(0.52194,3.05125)(0.61500,3.06000)(0.71632,3.06396)%
+(0.82363,3.06329)(0.93405,3.05824)(1.04476,3.04912)(1.15288,3.03618)(1.25558,3.01972)%
+(1.35000,3.00000)(1.43396,2.97717)(1.50797,2.95077)(1.57321,2.92024)(1.63085,2.88498)%
+(1.68208,2.84441)(1.72807,2.79794)(1.77000,2.74500)(1.80872,2.68530)(1.84374,2.61981)%
+(1.87426,2.54981)(1.89946,2.47655)(1.91852,2.40132)(1.93064,2.32537)(1.93500,2.25000)%
+(1.93079,2.17646)(1.91719,2.10603)(1.89340,2.03998)(1.85860,1.97958)(1.81197,1.92610)%
+(1.75271,1.88082)(1.68000,1.84500)(1.69733,1.82055)(1.71432,1.79394)(1.73080,1.76532)%
+(1.74658,1.73483)(1.76150,1.70260)(1.77537,1.66877)(1.78801,1.63348)(1.79925,1.59686)%
+(1.80890,1.55905)(1.81680,1.52020)(1.82276,1.48043)(1.82660,1.43988)(1.82815,1.39870)%
+(1.82722,1.35702)(1.82365,1.31498)(1.81725,1.27272)(1.80784,1.23036)(1.79525,1.18806)%
+(1.77929,1.14594)(1.75980,1.10416)(1.73670,1.06286)(1.70998,1.02223)(1.67968,0.98246)%
+(1.64581,0.94374)(1.60838,0.90626)(1.56741,0.87019)(1.52291,0.83572)(1.47491,0.80304)%
+(1.42342,0.77234)(1.36845,0.74381)(1.31002,0.71762)(1.24815,0.69397)(1.18285,0.67303)%
+(1.11414,0.65501)(1.04204,0.64008)(0.96655,0.62842)(0.88771,0.62024)(0.80552,0.61570)%
+(0.72000,0.61500)(0.70658,0.58034)(0.69258,0.54668)(0.67799,0.51401)(0.66281,0.48234)%
+(0.64705,0.45167)(0.63070,0.42199)(0.61377,0.39331)(0.59625,0.36562)(0.57814,0.33894)%
+(0.55945,0.31324)(0.54018,0.28854)(0.52031,0.26484)(0.49986,0.24214)(0.47883,0.22043)%
+(0.45721,0.19972)(0.43500,0.18000)(0.41221,0.16128)(0.38883,0.14355)(0.36486,0.12683)%
+(0.34031,0.11109)(0.31518,0.09636)(0.28945,0.08262)(0.26314,0.06987)(0.23625,0.05812)%
+(0.20877,0.04737)(0.18070,0.03762)(0.15205,0.02886)(0.12281,0.02109)(0.09299,0.01433)%
+(0.06258,0.00855)(0.03158,0.00378)(0.00000,0.00000)(0.01983,0.01518)(0.03902,0.03070)%
+(0.05757,0.04658)(0.07547,0.06281)(0.09272,0.07939)(0.10934,0.09633)(0.12530,0.11361)%
+(0.14062,0.13125)(0.15530,0.14924)(0.16934,0.16758)(0.18272,0.18627)(0.19547,0.20531)%
+(0.20757,0.22471)(0.21902,0.24445)(0.22983,0.26455)(0.24000,0.28500)(0.24952,0.30580)%
+(0.25840,0.32695)(0.26663,0.34846)(0.27422,0.37031)(0.28116,0.39252)(0.28746,0.41508)%
+(0.29312,0.43799)(0.29812,0.46125)(0.30249,0.48486)(0.30621,0.50883)(0.30929,0.53314)%
+(0.31172,0.55781)(0.31351,0.58283)(0.31465,0.60820)(0.31515,0.63393)(0.31500,0.66000)%
+%
+\linethickness{0.008in}%
+\settowidth{\Width}{{\begin{minipage}{1.8cm}#5\end{minipage}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\begin{minipage}{1.8cm}#5\end{minipage}}}\settodepth{\Depth}{{\begin{minipage}{1.8cm}#5\end{minipage}}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(0.5000,1.8000){\hspace*{\Width}\raisebox{\Height}{{\begin{minipage}{1.8cm}#5\end{minipage}}}}%
+%
+%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\scalebox{#4}{\tempcontents}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\scalebox{#4}{\tempcontents}}}\settodepth{\Depth}{{\scalebox{#4}{\tempcontents}}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\scalebox{#4}{\tempcontents}}}}%
+%
+}%
+\newcommand{\ballonl}[5][8]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 5.00000, 2.50000)( -2.50000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(-0.57200,0.56100)(-0.66502,0.50474)(-0.75287,0.45596)(-0.83608,0.41418)%
+(-0.91517,0.37896)(-0.99068,0.34982)(-1.06311,0.32633)(-1.13300,0.30800)(-1.20087,0.29439)%
+(-1.26724,0.28503)(-1.33264,0.27947)(-1.39759,0.27725)(-1.46262,0.27790)(-1.52825,0.28097)%
+(-1.59500,0.28600)(-1.66316,0.29276)(-1.73209,0.30198)(-1.80088,0.31459)(-1.86866,0.33154)%
+(-1.93453,0.35380)(-1.99760,0.38230)(-2.05700,0.41800)(-2.11187,0.46151)(-2.16154,0.51214)%
+(-2.20539,0.56886)(-2.24279,0.63064)(-2.27311,0.69644)(-2.29572,0.76523)(-2.31000,0.83600)%
+(-2.31548,0.90773)(-2.31232,0.97953)(-2.30083,1.05052)(-2.28134,1.11983)(-2.25416,1.18660)%
+(-2.21960,1.24995)(-2.17800,1.30900)(-2.12966,1.36289)(-2.07491,1.41075)(-2.01405,1.45170)%
+(-1.94742,1.48487)(-1.87532,1.50939)(-1.79807,1.52439)(-1.71600,1.52900)(-1.73655,1.60873)%
+(-1.74760,1.68448)(-1.74979,1.75622)(-1.74378,1.82389)(-1.73021,1.88744)(-1.70974,1.94683)%
+(-1.68300,2.00200)(-1.65065,2.05290)(-1.61334,2.09949)(-1.57171,2.14172)(-1.52641,2.17953)%
+(-1.47810,2.21288)(-1.42741,2.24172)(-1.37500,2.26600)(-1.32132,2.28578)(-1.26601,2.30158)%
+(-1.20854,2.31404)(-1.14835,2.32378)(-1.08489,2.33143)(-1.01763,2.33763)(-0.94600,2.34300)%
+(-0.86985,2.34798)(-0.79052,2.35223)(-0.70976,2.35517)(-0.62929,2.35627)(-0.55085,2.35498)%
+(-0.47618,2.35074)(-0.40700,2.34300)(-0.34466,2.33128)(-0.28894,2.31535)(-0.23922,2.29505)%
+(-0.19488,2.27022)(-0.15531,2.24071)(-0.11989,2.20636)(-0.08800,2.16700)(-0.05903,2.12248)%
+(-0.03237,2.07263)(-0.00739,2.01731)(0.01653,1.95634)(0.03998,1.88957)(0.06360,1.81685)%
+(0.08800,1.73800)(0.14258,1.73395)(0.19323,1.72765)(0.24018,1.71905)(0.28370,1.70812)%
+(0.32401,1.69482)(0.36136,1.67913)(0.39600,1.66100)(0.42817,1.64040)(0.45812,1.61730)%
+(0.48608,1.59166)(0.51231,1.56344)(0.53704,1.53262)(0.56052,1.49915)(0.58300,1.46300)%
+(0.60454,1.42421)(0.62448,1.38306)(0.64198,1.33994)(0.65622,1.29521)(0.66636,1.24923)%
+(0.67157,1.20237)(0.67100,1.15500)(0.66413,1.10751)(0.65163,1.06036)(0.63448,1.01405)%
+(0.61367,0.96907)(0.59016,0.92591)(0.56495,0.88505)(0.53900,0.84700)(0.51304,0.81212)%
+(0.48675,0.78032)(0.45955,0.75138)(0.43086,0.72510)(0.40009,0.70124)(0.36666,0.67962)%
+(0.33000,0.66000)(0.28952,0.64218)(0.24465,0.62594)(0.19480,0.61107)(0.13939,0.59735)%
+(0.07784,0.58458)(0.00957,0.57253)(-0.06600,0.56100)(-0.06660,0.54413)(-0.06703,0.52723)%
+(-0.06729,0.51028)(-0.06738,0.49328)(-0.06729,0.47624)(-0.06703,0.45916)(-0.06660,0.44204)%
+(-0.06600,0.42487)(-0.06523,0.40767)(-0.06428,0.39041)(-0.06316,0.37312)(-0.06187,0.35578)%
+(-0.06041,0.33840)(-0.05878,0.32098)(-0.05698,0.30351)(-0.05500,0.28600)(-0.05285,0.26845)%
+(-0.05053,0.25085)(-0.04804,0.23321)(-0.04537,0.21553)(-0.04254,0.19781)(-0.03953,0.18004)%
+(-0.03635,0.16223)(-0.03300,0.14437)(-0.02948,0.12648)(-0.02578,0.10854)(-0.02191,0.09056)%
+(-0.01787,0.07253)(-0.01366,0.05446)(-0.00928,0.03635)(-0.00473,0.01820)(0.00000,0.00000)%
+(-0.02187,0.02752)(-0.04348,0.05440)(-0.06484,0.08063)(-0.08594,0.10622)(-0.10678,0.13116)%
+(-0.12736,0.15546)(-0.14768,0.17912)(-0.16775,0.20212)(-0.18756,0.22449)(-0.20711,0.24621)%
+(-0.22640,0.26729)(-0.24544,0.28772)(-0.26421,0.30751)(-0.28273,0.32665)(-0.30100,0.34515)%
+(-0.31900,0.36300)(-0.33675,0.38021)(-0.35423,0.39677)(-0.37146,0.41269)(-0.38844,0.42797)%
+(-0.40515,0.44260)(-0.42161,0.45659)(-0.43781,0.46993)(-0.45375,0.48262)(-0.46943,0.49468)%
+(-0.48486,0.50609)(-0.50003,0.51685)(-0.51494,0.52697)(-0.52959,0.53644)(-0.54398,0.54527)%
+(-0.55812,0.55346)(-0.57200,0.56100)%
+%
+\linethickness{0.008in}%
+\settowidth{\Width}{{\begin{minipage}{1.5cm}#5\end{minipage}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\begin{minipage}{1.5cm}#5\end{minipage}}}\settodepth{\Depth}{{\begin{minipage}{1.5cm}#5\end{minipage}}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(-0.8000,1.2000){\hspace*{\Width}\raisebox{\Height}{{\begin{minipage}{1.5cm}#5\end{minipage}}}}%
+%
+%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\scalebox{#4}{\tempcontents}}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\scalebox{#4}{\tempcontents}}}\settodepth{\Depth}{{\scalebox{#4}{\tempcontents}}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\scalebox{#4}{\tempcontents}}}}%
+%
+}%
+\newcommand{\lefthand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -1.00000, -0.80000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(-0.82419,-0.69564)(-0.78908,-0.66318)(-0.75158,-0.63725)(-0.71246,-0.61684)%
+(-0.67248,-0.60097)(-0.63240,-0.58865)(-0.59300,-0.57888)(-0.55504,-0.57068)(-0.51928,-0.56304)%
+(-0.48649,-0.55497)(-0.45744,-0.54549)(-0.43288,-0.53361)(-0.41280,-0.51898)(-0.39570,-0.50254)%
+(-0.37987,-0.48534)(-0.36363,-0.46845)(-0.34530,-0.45295)(-0.32358,-0.43973)(-0.29944,-0.42879)%
+(-0.27467,-0.41976)(-0.25107,-0.41230)(-0.23044,-0.40605)(-0.21452,-0.40067)(-0.20374,-0.39585)%
+(-0.19724,-0.39136)(-0.19411,-0.38695)(-0.19341,-0.38238)(-0.19423,-0.37742)(-0.19592,-0.37195)%
+(-0.19858,-0.36627)(-0.20245,-0.36070)(-0.20775,-0.35558)(-0.21472,-0.35126)(-0.22356,-0.34804)%
+(-0.23405,-0.34593)(-0.24580,-0.34478)(-0.25843,-0.34446)(-0.27152,-0.34481)(-0.28469,-0.34568)%
+(-0.29753,-0.34694)(-0.30966,-0.34843)(-0.32067,-0.35001)(-0.33016,-0.35154)(-0.33774,-0.35286)%
+\polyline(-0.41839,-0.43100)(-0.40862,-0.42173)(-0.39536,-0.40850)(-0.37893,-0.39183)%
+(-0.35961,-0.37226)(-0.33771,-0.35032)(-0.31352,-0.32655)(-0.28734,-0.30146)(-0.25947,-0.27560)%
+(-0.23021,-0.24949)(-0.19985,-0.22367)(-0.16898,-0.19861)(-0.13874,-0.17463)(-0.11037,-0.15207)%
+(-0.08509,-0.13123)(-0.06413,-0.11244)(-0.04790,-0.09575)(-0.03554,-0.08081)(-0.02614,-0.06722)%
+(-0.01872,-0.05461)(-0.01239,-0.04261)(-0.00683,-0.03113)(-0.00249,-0.02050)(0.00015,-0.01101)%
+(0.00061,-0.00300)(-0.00156,0.00320)(-0.00679,0.00711)(-0.01539,0.00804)(-0.02769,0.00535)%
+(-0.04401,-0.00164)(-0.06467,-0.01354)(-0.08964,-0.03035)(-0.11867,-0.05169)(-0.15155,-0.07719)%
+(-0.18802,-0.10645)(-0.22772,-0.13897)(-0.26909,-0.17335)(-0.31003,-0.20776)(-0.34845,-0.24036)%
+(-0.38225,-0.26930)(-0.40932,-0.29275)(-0.42756,-0.30887)(-0.43488,-0.31583)(-0.42916,-0.31178)%
+(-0.40831,-0.29489)%
+\polyline(-0.38311,-0.27221)(-0.38240,-0.26776)(-0.38210,-0.26354)(-0.38219,-0.25954)%
+(-0.38266,-0.25575)(-0.38347,-0.25218)(-0.38462,-0.24881)(-0.38607,-0.24564)(-0.38782,-0.24266)%
+(-0.38983,-0.23987)(-0.39209,-0.23727)(-0.39458,-0.23485)(-0.39729,-0.23260)(-0.40018,-0.23051)%
+(-0.40324,-0.22859)(-0.40644,-0.22682)(-0.40978,-0.22521)(-0.41322,-0.22374)(-0.41676,-0.22241)%
+(-0.42036,-0.22122)(-0.42401,-0.22016)(-0.42768,-0.21922)(-0.43137,-0.21840)(-0.43504,-0.21770)%
+(-0.43868,-0.21710)(-0.44227,-0.21661)(-0.44578,-0.21621)(-0.44920,-0.21591)(-0.45251,-0.21569)%
+(-0.45568,-0.21555)(-0.45870,-0.21549)(-0.46155,-0.21551)(-0.46420,-0.21558)(-0.46664,-0.21572)%
+(-0.46884,-0.21591)(-0.47079,-0.21615)(-0.47246,-0.21644)(-0.47384,-0.21676)%
+\polyline(-0.50409,-0.24700)(-0.49723,-0.24301)(-0.49144,-0.23910)(-0.48667,-0.23526)%
+(-0.48284,-0.23151)(-0.47990,-0.22784)(-0.47780,-0.22427)(-0.47648,-0.22078)(-0.47587,-0.21740)%
+(-0.47593,-0.21411)(-0.47658,-0.21093)(-0.47778,-0.20786)(-0.47946,-0.20489)(-0.48156,-0.20204)%
+(-0.48403,-0.19931)(-0.48681,-0.19669)(-0.48984,-0.19420)(-0.49306,-0.19184)(-0.49641,-0.18961)%
+(-0.49984,-0.18751)(-0.50329,-0.18555)(-0.50672,-0.18373)(-0.51014,-0.18205)(-0.51354,-0.18050)%
+(-0.51692,-0.17909)(-0.52029,-0.17782)(-0.52363,-0.17668)(-0.52695,-0.17568)(-0.53025,-0.17481)%
+(-0.53352,-0.17407)(-0.53677,-0.17347)(-0.53998,-0.17300)(-0.54317,-0.17266)(-0.54633,-0.17245)%
+(-0.54946,-0.17237)(-0.55256,-0.17243)(-0.55562,-0.17261)(-0.55864,-0.17291)(-0.56163,-0.17335)%
+(-0.56458,-0.17391)%
+\polyline(-0.58978,-0.20416)(-0.58464,-0.19911)(-0.58011,-0.19420)(-0.57622,-0.18941)%
+(-0.57296,-0.18473)(-0.57035,-0.18018)(-0.56839,-0.17573)(-0.56710,-0.17139)(-0.56647,-0.16715)%
+(-0.56652,-0.16301)(-0.56726,-0.15897)(-0.56868,-0.15502)(-0.57081,-0.15115)(-0.57364,-0.14737)%
+(-0.57718,-0.14366)(-0.58147,-0.14010)(-0.58662,-0.13698)(-0.59277,-0.13468)(-0.60005,-0.13357)%
+(-0.60861,-0.13403)(-0.61859,-0.13643)(-0.63011,-0.14114)(-0.64323,-0.14845)(-0.65761,-0.15822)%
+(-0.67283,-0.17027)(-0.68845,-0.18437)(-0.70404,-0.20032)(-0.71919,-0.21791)(-0.73345,-0.23692)%
+(-0.74652,-0.25717)(-0.75858,-0.27848)(-0.76993,-0.30070)(-0.78085,-0.32369)(-0.79166,-0.34729)%
+(-0.80265,-0.37135)(-0.81410,-0.39571)(-0.82633,-0.42023)(-0.83963,-0.44475)(-0.85430,-0.46912)%
+(-0.87062,-0.49319)(-0.88891,-0.51680)(-0.90946,-0.53981)(-0.93256,-0.56206)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\righthand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -0.01000, -0.80000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.82419,-0.69564)(0.78908,-0.66318)(0.75158,-0.63725)(0.71246,-0.61684)%
+(0.67248,-0.60097)(0.63240,-0.58865)(0.59300,-0.57888)(0.55504,-0.57068)(0.51928,-0.56304)%
+(0.48649,-0.55497)(0.45744,-0.54549)(0.43288,-0.53361)(0.41280,-0.51898)(0.39570,-0.50254)%
+(0.37987,-0.48534)(0.36363,-0.46845)(0.34530,-0.45295)(0.32358,-0.43973)(0.29944,-0.42879)%
+(0.27467,-0.41976)(0.25107,-0.41230)(0.23044,-0.40605)(0.21452,-0.40067)(0.20374,-0.39585)%
+(0.19724,-0.39136)(0.19411,-0.38695)(0.19341,-0.38238)(0.19423,-0.37742)(0.19592,-0.37195)%
+(0.19858,-0.36627)(0.20245,-0.36070)(0.20775,-0.35558)(0.21472,-0.35126)(0.22356,-0.34804)%
+(0.23405,-0.34593)(0.24580,-0.34478)(0.25843,-0.34446)(0.27152,-0.34481)(0.28469,-0.34568)%
+(0.29753,-0.34694)(0.30966,-0.34843)(0.32067,-0.35001)(0.33016,-0.35154)(0.33774,-0.35286)%
+\polyline(0.41839,-0.43100)(0.40862,-0.42173)(0.39536,-0.40850)(0.37893,-0.39183)%
+(0.35961,-0.37226)(0.33771,-0.35032)(0.31352,-0.32655)(0.28734,-0.30146)(0.25947,-0.27560)%
+(0.23021,-0.24949)(0.19985,-0.22367)(0.16898,-0.19861)(0.13874,-0.17463)(0.11037,-0.15207)%
+(0.08509,-0.13123)(0.06413,-0.11244)(0.04790,-0.09575)(0.03554,-0.08081)(0.02614,-0.06722)%
+(0.01872,-0.05461)(0.01239,-0.04261)(0.00683,-0.03113)(0.00249,-0.02050)(-0.00015,-0.01101)%
+(-0.00061,-0.00300)(0.00156,0.00320)(0.00679,0.00711)(0.01539,0.00804)(0.02769,0.00535)%
+(0.04401,-0.00164)(0.06467,-0.01354)(0.08964,-0.03035)(0.11867,-0.05169)(0.15155,-0.07719)%
+(0.18802,-0.10645)(0.22772,-0.13897)(0.26909,-0.17335)(0.31003,-0.20776)(0.34845,-0.24036)%
+(0.38225,-0.26930)(0.40932,-0.29275)(0.42756,-0.30887)(0.43488,-0.31583)(0.42916,-0.31178)%
+(0.40831,-0.29489)%
+\polyline(0.38311,-0.27221)(0.38240,-0.26776)(0.38210,-0.26354)(0.38219,-0.25954)%
+(0.38266,-0.25575)(0.38347,-0.25218)(0.38462,-0.24881)(0.38607,-0.24564)(0.38782,-0.24266)%
+(0.38983,-0.23987)(0.39209,-0.23727)(0.39458,-0.23485)(0.39729,-0.23260)(0.40018,-0.23051)%
+(0.40324,-0.22859)(0.40644,-0.22682)(0.40978,-0.22521)(0.41322,-0.22374)(0.41676,-0.22241)%
+(0.42036,-0.22122)(0.42401,-0.22016)(0.42768,-0.21922)(0.43137,-0.21840)(0.43504,-0.21770)%
+(0.43868,-0.21710)(0.44227,-0.21661)(0.44578,-0.21621)(0.44920,-0.21591)(0.45251,-0.21569)%
+(0.45568,-0.21555)(0.45870,-0.21549)(0.46155,-0.21551)(0.46420,-0.21558)(0.46664,-0.21572)%
+(0.46884,-0.21591)(0.47079,-0.21615)(0.47246,-0.21644)(0.47384,-0.21676)%
+\polyline(0.50409,-0.24700)(0.49723,-0.24301)(0.49144,-0.23910)(0.48667,-0.23526)%
+(0.48284,-0.23151)(0.47990,-0.22784)(0.47780,-0.22427)(0.47648,-0.22078)(0.47587,-0.21740)%
+(0.47593,-0.21411)(0.47658,-0.21093)(0.47778,-0.20786)(0.47946,-0.20489)(0.48156,-0.20204)%
+(0.48403,-0.19931)(0.48681,-0.19669)(0.48984,-0.19420)(0.49306,-0.19184)(0.49641,-0.18961)%
+(0.49984,-0.18751)(0.50329,-0.18555)(0.50672,-0.18373)(0.51014,-0.18205)(0.51354,-0.18050)%
+(0.51692,-0.17909)(0.52029,-0.17782)(0.52363,-0.17668)(0.52695,-0.17568)(0.53025,-0.17481)%
+(0.53352,-0.17407)(0.53677,-0.17347)(0.53998,-0.17300)(0.54317,-0.17266)(0.54633,-0.17245)%
+(0.54946,-0.17237)(0.55256,-0.17243)(0.55562,-0.17261)(0.55864,-0.17291)(0.56163,-0.17335)%
+(0.56458,-0.17391)%
+\polyline(0.58978,-0.20416)(0.58464,-0.19911)(0.58011,-0.19420)(0.57622,-0.18941)%
+(0.57296,-0.18473)(0.57035,-0.18018)(0.56839,-0.17573)(0.56710,-0.17139)(0.56647,-0.16715)%
+(0.56652,-0.16301)(0.56726,-0.15897)(0.56868,-0.15502)(0.57081,-0.15115)(0.57364,-0.14737)%
+(0.57718,-0.14366)(0.58147,-0.14010)(0.58662,-0.13698)(0.59277,-0.13468)(0.60005,-0.13357)%
+(0.60861,-0.13403)(0.61859,-0.13643)(0.63011,-0.14114)(0.64323,-0.14845)(0.65761,-0.15822)%
+(0.67283,-0.17027)(0.68845,-0.18437)(0.70404,-0.20032)(0.71919,-0.21791)(0.73345,-0.23692)%
+(0.74652,-0.25717)(0.75858,-0.27848)(0.76993,-0.30070)(0.78085,-0.32369)(0.79166,-0.34729)%
+(0.80265,-0.37135)(0.81410,-0.39571)(0.82633,-0.42023)(0.83963,-0.44475)(0.85430,-0.46912)%
+(0.87062,-0.49319)(0.88891,-0.51680)(0.90946,-0.53981)(0.93256,-0.56206)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\leftdownhand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -1.00000, -0.02000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(-0.82419,0.69564)(-0.78908,0.66318)(-0.75158,0.63725)(-0.71246,0.61684)%
+(-0.67248,0.60097)(-0.63240,0.58865)(-0.59300,0.57888)(-0.55504,0.57068)(-0.51928,0.56304)%
+(-0.48649,0.55497)(-0.45744,0.54549)(-0.43288,0.53361)(-0.41280,0.51898)(-0.39570,0.50254)%
+(-0.37987,0.48534)(-0.36363,0.46845)(-0.34530,0.45295)(-0.32358,0.43973)(-0.29944,0.42879)%
+(-0.27467,0.41976)(-0.25107,0.41230)(-0.23044,0.40605)(-0.21452,0.40067)(-0.20374,0.39585)%
+(-0.19724,0.39136)(-0.19411,0.38695)(-0.19341,0.38238)(-0.19423,0.37742)(-0.19592,0.37195)%
+(-0.19858,0.36627)(-0.20245,0.36070)(-0.20775,0.35558)(-0.21472,0.35126)(-0.22356,0.34804)%
+(-0.23405,0.34593)(-0.24580,0.34478)(-0.25843,0.34446)(-0.27152,0.34481)(-0.28469,0.34568)%
+(-0.29753,0.34694)(-0.30966,0.34843)(-0.32067,0.35001)(-0.33016,0.35154)(-0.33774,0.35286)%
+\polyline(-0.41839,0.43100)(-0.40862,0.42173)(-0.39536,0.40850)(-0.37893,0.39183)%
+(-0.35961,0.37226)(-0.33771,0.35032)(-0.31352,0.32655)(-0.28734,0.30146)(-0.25947,0.27560)%
+(-0.23021,0.24949)(-0.19985,0.22367)(-0.16898,0.19861)(-0.13874,0.17463)(-0.11037,0.15207)%
+(-0.08509,0.13123)(-0.06413,0.11244)(-0.04790,0.09575)(-0.03554,0.08081)(-0.02614,0.06722)%
+(-0.01872,0.05461)(-0.01239,0.04261)(-0.00683,0.03113)(-0.00249,0.02050)(0.00015,0.01101)%
+(0.00061,0.00300)(-0.00156,-0.00320)(-0.00679,-0.00711)(-0.01539,-0.00804)(-0.02769,-0.00535)%
+(-0.04401,0.00164)(-0.06467,0.01354)(-0.08964,0.03035)(-0.11867,0.05169)(-0.15155,0.07719)%
+(-0.18802,0.10645)(-0.22772,0.13897)(-0.26909,0.17335)(-0.31003,0.20776)(-0.34845,0.24036)%
+(-0.38225,0.26930)(-0.40932,0.29275)(-0.42756,0.30887)(-0.43488,0.31583)(-0.42916,0.31178)%
+(-0.40831,0.29489)%
+\polyline(-0.38311,0.27221)(-0.38240,0.26776)(-0.38210,0.26354)(-0.38219,0.25954)%
+(-0.38266,0.25575)(-0.38347,0.25218)(-0.38462,0.24881)(-0.38607,0.24564)(-0.38782,0.24266)%
+(-0.38983,0.23987)(-0.39209,0.23727)(-0.39458,0.23485)(-0.39729,0.23260)(-0.40018,0.23051)%
+(-0.40324,0.22859)(-0.40644,0.22682)(-0.40978,0.22521)(-0.41322,0.22374)(-0.41676,0.22241)%
+(-0.42036,0.22122)(-0.42401,0.22016)(-0.42768,0.21922)(-0.43137,0.21840)(-0.43504,0.21770)%
+(-0.43868,0.21710)(-0.44227,0.21661)(-0.44578,0.21621)(-0.44920,0.21591)(-0.45251,0.21569)%
+(-0.45568,0.21555)(-0.45870,0.21549)(-0.46155,0.21551)(-0.46420,0.21558)(-0.46664,0.21572)%
+(-0.46884,0.21591)(-0.47079,0.21615)(-0.47246,0.21644)(-0.47384,0.21676)%
+\polyline(-0.50409,0.24700)(-0.49723,0.24301)(-0.49144,0.23910)(-0.48667,0.23526)%
+(-0.48284,0.23151)(-0.47990,0.22784)(-0.47780,0.22427)(-0.47648,0.22078)(-0.47587,0.21740)%
+(-0.47593,0.21411)(-0.47658,0.21093)(-0.47778,0.20786)(-0.47946,0.20489)(-0.48156,0.20204)%
+(-0.48403,0.19931)(-0.48681,0.19669)(-0.48984,0.19420)(-0.49306,0.19184)(-0.49641,0.18961)%
+(-0.49984,0.18751)(-0.50329,0.18555)(-0.50672,0.18373)(-0.51014,0.18205)(-0.51354,0.18050)%
+(-0.51692,0.17909)(-0.52029,0.17782)(-0.52363,0.17668)(-0.52695,0.17568)(-0.53025,0.17481)%
+(-0.53352,0.17407)(-0.53677,0.17347)(-0.53998,0.17300)(-0.54317,0.17266)(-0.54633,0.17245)%
+(-0.54946,0.17237)(-0.55256,0.17243)(-0.55562,0.17261)(-0.55864,0.17291)(-0.56163,0.17335)%
+(-0.56458,0.17391)%
+\polyline(-0.58978,0.20416)(-0.58464,0.19911)(-0.58011,0.19420)(-0.57622,0.18941)%
+(-0.57296,0.18473)(-0.57035,0.18018)(-0.56839,0.17573)(-0.56710,0.17139)(-0.56647,0.16715)%
+(-0.56652,0.16301)(-0.56726,0.15897)(-0.56868,0.15502)(-0.57081,0.15115)(-0.57364,0.14737)%
+(-0.57718,0.14366)(-0.58147,0.14010)(-0.58662,0.13698)(-0.59277,0.13468)(-0.60005,0.13357)%
+(-0.60861,0.13403)(-0.61859,0.13643)(-0.63011,0.14114)(-0.64323,0.14845)(-0.65761,0.15822)%
+(-0.67283,0.17027)(-0.68845,0.18437)(-0.70404,0.20032)(-0.71919,0.21791)(-0.73345,0.23692)%
+(-0.74652,0.25717)(-0.75858,0.27848)(-0.76993,0.30070)(-0.78085,0.32369)(-0.79166,0.34729)%
+(-0.80265,0.37135)(-0.81410,0.39571)(-0.82633,0.42023)(-0.83963,0.44475)(-0.85430,0.46912)%
+(-0.87062,0.49319)(-0.88891,0.51680)(-0.90946,0.53981)(-0.93256,0.56206)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\rightdownhand}[3][16]{%
+\def\tempcontents{%
+{\unitlength=1cm%
+\begin{picture}%
+( 1.01000, 0.82000)( -0.01000, -0.02000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.82419,0.69564)(0.78908,0.66318)(0.75158,0.63725)(0.71246,0.61684)(0.67248,0.60097)%
+(0.63240,0.58865)(0.59300,0.57888)(0.55504,0.57068)(0.51928,0.56304)(0.48649,0.55497)%
+(0.45744,0.54549)(0.43288,0.53361)(0.41280,0.51898)(0.39570,0.50254)(0.37987,0.48534)%
+(0.36363,0.46845)(0.34530,0.45295)(0.32358,0.43973)(0.29944,0.42879)(0.27467,0.41976)%
+(0.25107,0.41230)(0.23044,0.40605)(0.21452,0.40067)(0.20374,0.39585)(0.19724,0.39136)%
+(0.19411,0.38695)(0.19341,0.38238)(0.19423,0.37742)(0.19592,0.37195)(0.19858,0.36627)%
+(0.20245,0.36070)(0.20775,0.35558)(0.21472,0.35126)(0.22356,0.34804)(0.23405,0.34593)%
+(0.24580,0.34478)(0.25843,0.34446)(0.27152,0.34481)(0.28469,0.34568)(0.29753,0.34694)%
+(0.30966,0.34843)(0.32067,0.35001)(0.33016,0.35154)(0.33774,0.35286)%
+\polyline(0.41839,0.43100)(0.40862,0.42173)(0.39536,0.40850)(0.37893,0.39183)(0.35961,0.37226)%
+(0.33771,0.35032)(0.31352,0.32655)(0.28734,0.30146)(0.25947,0.27560)(0.23021,0.24949)%
+(0.19985,0.22367)(0.16898,0.19861)(0.13874,0.17463)(0.11037,0.15207)(0.08509,0.13123)%
+(0.06413,0.11244)(0.04790,0.09575)(0.03554,0.08081)(0.02614,0.06722)(0.01872,0.05461)%
+(0.01239,0.04261)(0.00683,0.03113)(0.00249,0.02050)(-0.00015,0.01101)(-0.00061,0.00300)%
+(0.00156,-0.00320)(0.00679,-0.00711)(0.01539,-0.00804)(0.02769,-0.00535)(0.04401,0.00164)%
+(0.06467,0.01354)(0.08964,0.03035)(0.11867,0.05169)(0.15155,0.07719)(0.18802,0.10645)%
+(0.22772,0.13897)(0.26909,0.17335)(0.31003,0.20776)(0.34845,0.24036)(0.38225,0.26930)%
+(0.40932,0.29275)(0.42756,0.30887)(0.43488,0.31583)(0.42916,0.31178)(0.40831,0.29489)%
+\polyline(0.38311,0.27221)(0.38240,0.26776)(0.38210,0.26354)(0.38219,0.25954)(0.38266,0.25575)%
+(0.38347,0.25218)(0.38462,0.24881)(0.38607,0.24564)(0.38782,0.24266)(0.38983,0.23987)%
+(0.39209,0.23727)(0.39458,0.23485)(0.39729,0.23260)(0.40018,0.23051)(0.40324,0.22859)%
+(0.40644,0.22682)(0.40978,0.22521)(0.41322,0.22374)(0.41676,0.22241)(0.42036,0.22122)%
+(0.42401,0.22016)(0.42768,0.21922)(0.43137,0.21840)(0.43504,0.21770)(0.43868,0.21710)%
+(0.44227,0.21661)(0.44578,0.21621)(0.44920,0.21591)(0.45251,0.21569)(0.45568,0.21555)%
+(0.45870,0.21549)(0.46155,0.21551)(0.46420,0.21558)(0.46664,0.21572)(0.46884,0.21591)%
+(0.47079,0.21615)(0.47246,0.21644)(0.47384,0.21676)%
+\polyline(0.50409,0.24700)(0.49723,0.24301)(0.49144,0.23910)(0.48667,0.23526)(0.48284,0.23151)%
+(0.47990,0.22784)(0.47780,0.22427)(0.47648,0.22078)(0.47587,0.21740)(0.47593,0.21411)%
+(0.47658,0.21093)(0.47778,0.20786)(0.47946,0.20489)(0.48156,0.20204)(0.48403,0.19931)%
+(0.48681,0.19669)(0.48984,0.19420)(0.49306,0.19184)(0.49641,0.18961)(0.49984,0.18751)%
+(0.50329,0.18555)(0.50672,0.18373)(0.51014,0.18205)(0.51354,0.18050)(0.51692,0.17909)%
+(0.52029,0.17782)(0.52363,0.17668)(0.52695,0.17568)(0.53025,0.17481)(0.53352,0.17407)%
+(0.53677,0.17347)(0.53998,0.17300)(0.54317,0.17266)(0.54633,0.17245)(0.54946,0.17237)%
+(0.55256,0.17243)(0.55562,0.17261)(0.55864,0.17291)(0.56163,0.17335)(0.56458,0.17391)%
+\polyline(0.58978,0.20416)(0.58464,0.19911)(0.58011,0.19420)(0.57622,0.18941)(0.57296,0.18473)%
+(0.57035,0.18018)(0.56839,0.17573)(0.56710,0.17139)(0.56647,0.16715)(0.56652,0.16301)%
+(0.56726,0.15897)(0.56868,0.15502)(0.57081,0.15115)(0.57364,0.14737)(0.57718,0.14366)%
+(0.58147,0.14010)(0.58662,0.13698)(0.59277,0.13468)(0.60005,0.13357)(0.60861,0.13403)%
+(0.61859,0.13643)(0.63011,0.14114)(0.64323,0.14845)(0.65761,0.15822)(0.67283,0.17027)%
+(0.68845,0.18437)(0.70404,0.20032)(0.71919,0.21791)(0.73345,0.23692)(0.74652,0.25717)%
+(0.75858,0.27848)(0.76993,0.30070)(0.78085,0.32369)(0.79166,0.34729)(0.80265,0.37135)%
+(0.81410,0.39571)(0.82633,0.42023)(0.83963,0.44475)(0.85430,0.46912)(0.87062,0.49319)%
+(0.88891,0.51680)(0.90946,0.53981)(0.93256,0.56206)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{-#3}%
+\settowidth{\Width}{{\tempcontents}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\tempcontents}}\settodepth{\Depth}{{\tempcontents}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctra){\hspace*{\Width}\raisebox{\Height}{{\tempcontents}}}%
+%
+}%
+\newcommand{\cirscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 621.63538, 724.07834)( 277.81039,2339.74153)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(581.42100,2343.98000)(517.25871,2339.74153)(461.02448,2347.24212)(412.58070,2365.27538)%
+(371.78973,2392.63490)(338.51396,2428.11428)(312.61577,2470.50710)(293.95752,2518.60696)%
+(282.40160,2571.20746)(277.81039,2627.10220)(280.04626,2685.08476)(288.97159,2743.94874)%
+(304.44877,2802.48773)(326.33983,2859.45726)(354.50312,2913.17008)(388.79455,2961.65333)%
+(429.07001,3002.92940)(475.18538,3035.02067)(526.99654,3055.94950)(584.29056,3063.81987)%
+(645.27185,3058.61222)(706.56216,3042.18351)(764.71444,3016.47226)(816.28162,2983.41699)%
+(857.81665,2944.95624)(885.90654,2903.01977)(899.18278,2859.01098)(899.44577,2813.51741)%
+(888.76853,2767.05643)(869.22406,2720.14541)(842.88537,2673.30172)(811.82546,2627.04273)%
+(778.11735,2581.88580)(743.83405,2538.34830)(711.04855,2496.94761)(681.83387,2458.20108)%
+(658.26302,2422.62609)(642.40900,2390.74000)%
+\polyline(622.08000,2390.74000)(583.00266,2402.49652)(548.77013,2414.09750)(519.23649,2425.79318)%
+(494.25586,2437.83376)(473.68232,2450.46947)(457.36999,2463.95054)(445.17295,2478.52717)%
+(436.94531,2494.44961)(432.54116,2511.96806)(431.81461,2531.33275)(434.61976,2552.79389)%
+(440.81070,2576.60172)(450.23717,2602.92167)(462.70610,2631.08618)(478.00010,2659.95493)%
+(495.90151,2688.38216)(516.19267,2715.22212)(538.65591,2739.32904)(563.05305,2759.58189)%
+(588.80104,2775.27493)(615.03072,2786.04698)(640.86425,2791.54730)(665.42380,2791.42518)%
+(687.83153,2785.32986)(707.22241,2772.93278)(723.15440,2754.63757)(735.69523,2731.73029)%
+(744.94296,2705.54955)(750.99569,2677.43394)(753.95148,2648.72206)(753.90950,2620.74666)%
+(751.06452,2594.33214)(745.77971,2569.40718)(738.43537,2545.80933)(729.41181,2523.37610)%
+(719.08936,2501.94502)(707.84831,2481.35362)(696.06898,2461.43943)(684.13168,2442.03997)%
+(672.41672,2422.99277)(661.30441,2404.13536)(651.17507,2385.30526)(642.40900,2366.34000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\scirscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 535.76632, 538.46556)( 296.43854,1549.10000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(603.78400,1549.10000)(549.09950,1555.72780)(499.93413,1568.59203)(456.23153,1586.89332)%
+(417.93533,1609.83230)(384.98918,1636.60958)(357.33669,1666.42580)(334.92151,1698.48158)%
+(317.68727,1731.97755)(305.57594,1766.14560)(298.51789,1800.43565)(296.43854,1834.39046)%
+(299.26329,1867.55317)(306.88798,1899.47041)(318.93045,1929.72197)(334.85626,1957.90583)%
+(354.12938,1983.62013)(376.21735,2006.48478)(400.63359,2026.40258)(426.92367,2043.47418)%
+(454.63379,2057.80428)(483.32821,2069.48943)(512.90936,2078.47342)(543.58006,2084.56434)%
+(575.55355,2087.56556)(609.01674,2087.28028)(643.39940,2083.50671)(677.27873,2076.03742)%
+(709.18644,2064.66465)(737.66856,2049.18630)(761.96761,2029.67427)(782.32209,2006.59228)%
+(799.04710,1980.43418)(812.45557,1951.69401)(822.64859,1920.88299)(829.34059,1888.54374)%
+(832.20486,1855.22221)(830.91512,1821.46418)(825.26103,1787.76328)(815.30455,1754.49078)%
+(801.14666,1722.00039)(782.88837,1690.64582)(760.63067,1660.78079)(734.47454,1632.75900)%
+(704.52099,1606.93416)(670.87100,1583.66000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\triscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 579.38800, 435.04900)( 235.82100, 892.46100)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(577.35500,1327.51000)(567.14266,1313.03444)(556.94693,1298.57080)(546.77105,1284.13099)%
+(536.61828,1269.72692)(526.49187,1255.37053)(516.39507,1241.07373)(506.33113,1226.84844)%
+(496.30330,1212.70658)(486.31483,1198.66006)(476.36899,1184.72081)(466.46901,1170.90075)%
+(456.61814,1157.21179)(446.81965,1143.66586)(437.07678,1130.27487)(427.39279,1117.05074)%
+(417.77092,1104.00540)(408.21442,1091.15076)(398.72656,1078.49874)(389.31057,1066.06126)%
+(379.96972,1053.85024)(370.70724,1041.87760)(361.52641,1030.15526)(352.43045,1018.69513)%
+(343.42264,1007.50914)(334.50621,996.60921)(325.68443,986.00725)(316.96053,975.71519)%
+(308.33779,965.74494)(299.81943,956.10842)(291.40872,946.81756)(283.10891,937.88427)%
+(274.92325,929.32047)(266.85499,921.13808)(258.90739,913.34901)(251.08369,905.96520)%
+(243.38714,898.99856)(235.82100,892.46100)%
+\polyline(235.82100,892.46100)(240.77169,896.42750)(246.54485,900.19895)(253.12099,903.78079)%
+(260.48059,907.17841)(268.60416,910.39725)(277.47218,913.44271)(287.06515,916.32022)%
+(297.36356,919.03519)(308.34792,921.59304)(319.99871,923.99919)(332.29642,926.25905)%
+(345.22156,928.37804)(358.75462,930.36158)(372.87609,932.21508)(387.56647,933.94397)%
+(402.80624,935.55366)(418.57592,937.04957)(434.85598,938.43711)(451.62693,939.72170)%
+(468.86925,940.90877)(486.56345,942.00372)(504.69002,943.01197)(523.22945,943.93895)%
+(542.16224,944.79006)(561.46888,945.57073)(581.12987,946.28637)(601.12569,946.94241)%
+(621.43686,947.54425)(642.04385,948.09731)(662.92717,948.60702)(684.06730,949.07879)%
+(705.44475,949.51803)(727.04001,949.93017)(748.83356,950.32061)(770.80592,950.69479)%
+(792.93757,951.05811)(815.20900,951.41600)%
+\polyline(815.20900,951.41600)(807.14899,961.02180)(799.28294,970.50244)(791.60435,979.86661)%
+(784.10672,989.12298)(776.78356,998.28023)(769.62835,1007.34705)(762.63460,1016.33211)%
+(755.79580,1025.24409)(749.10546,1034.09168)(742.55707,1042.88355)(736.14412,1051.62839)%
+(729.86013,1060.33486)(723.69859,1069.01167)(717.65299,1077.66747)(711.71684,1086.31096)%
+(705.88363,1094.95081)(700.14686,1103.59571)(694.50003,1112.25433)(688.93664,1120.93535)%
+(683.45019,1129.64746)(678.03417,1138.39933)(672.68209,1147.19965)(667.38744,1156.05709)%
+(662.14373,1164.98033)(656.94444,1173.97805)(651.78308,1183.05894)(646.65315,1192.23168)%
+(641.54814,1201.50493)(636.46156,1210.88739)(631.38690,1220.38773)(626.31767,1230.01464)%
+(621.24735,1239.77679)(616.16945,1249.68287)(611.07746,1259.74154)(605.96490,1269.96151)%
+(600.82524,1280.35143)(595.65200,1290.92000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\crosscoremark}[2][20]{%
+\scalebox{#2}{%
+{\unitlength=0.04mm%
+\begin{picture}%
+( 727.79300, 479.77400)( 209.39300, 264.28200)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(532.63100,735.92500)(537.69449,712.99599)(542.66769,690.94870)(547.55386,669.75605)%
+(552.35624,649.39093)(557.07808,629.82627)(561.72263,611.03497)(566.29315,592.98994)%
+(570.79288,575.66409)(575.22507,559.03032)(579.59297,543.06155)(583.89984,527.73068)%
+(588.14892,513.01063)(592.34346,498.87430)(596.48672,485.29460)(600.58193,472.24444)%
+(604.63236,459.69673)(608.64125,447.62437)(612.61185,436.00028)(616.54742,424.79737)%
+(620.45119,413.98854)(624.32643,403.54671)(628.17638,393.44477)(632.00429,383.65565)%
+(635.81342,374.15225)(639.60700,364.90747)(643.38830,355.89423)(647.16056,347.08544)%
+(650.92703,338.45400)(654.69096,329.97283)(658.45560,321.61483)(662.22420,313.35291)%
+(666.00002,305.15998)(669.78629,297.00895)(673.58628,288.87273)(677.40322,280.72422)%
+(681.24038,272.53634)(685.10100,264.28200)%
+\polyline(209.39300,311.04000)(229.97986,325.81197)(250.42730,340.29966)(270.74288,354.51284)%
+(290.93421,368.46126)(311.00886,382.15466)(330.97442,395.60280)(350.83847,408.81544)%
+(370.60861,421.80232)(390.29242,434.57320)(409.89748,447.13783)(429.43138,459.50596)%
+(448.90171,471.68735)(468.31604,483.69175)(487.68198,495.52890)(507.00709,507.20857)%
+(526.29897,518.74050)(545.56520,530.13446)(564.81338,541.40018)(584.05108,552.54742)%
+(603.28588,563.58594)(622.52539,574.52549)(641.77717,585.37581)(661.04883,596.14667)%
+(680.34793,606.84782)(699.68208,617.48900)(719.05884,628.07997)(738.48582,638.63049)%
+(757.97060,649.15029)(777.52075,659.64915)(797.14387,670.13681)(816.84755,680.62301)%
+(836.63936,691.11753)(856.52690,701.63010)(876.51775,712.17048)(896.61949,722.74842)%
+(916.83971,733.37368)(937.18600,744.05600)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\boxline}[5][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctrc}{-#3}%
+\addtocounter{ketpicctrc}{-#5}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(0.00000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctrc}{#2}%
+\addtocounter{ketpicctrc}{#4}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-#5}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#5%
+\repeat%
+}%
+%
+}%
+\newcommand{\boxlinene}[5][8]{%
+\boxline[#1]{#2}{#3}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinec}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinee}[5][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinew}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinen}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlines}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinenw}[5][0.008]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinese}[5][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\boxlinesw}[5][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#5}%
+\addtocounter{ketpicctre}{#3}%
+\boxline[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}%
+%
+}%
+\newcommand{\ketboxframe}[6][8]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\boxline[#1]{#2}{#3}{#4}{#5}%
+%
+}%
+\newcommand{\boxframese}[6][8]{%
+\ketboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\ketboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\circleline}[4][8]{%
+\settowidth{\Width}{\circlemark[#1]{#4}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\circlemark[#1]{#4}}\settodepth{\Depth}{\circlemark[#1]{#4}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{\circlemark[#1]{#4}}}%
+%
+}%
+\newcommand{\hjaggyline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,1.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vjaggyline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,-1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(1.00000,0.00000)(0.00000,-1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\hjaggylineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,1.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vjaggylineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,-1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -1.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(1.00000,0.00000)(0.00000,-1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\jaggyboxframe}[6][8]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\setcounter{ketpicctrg}{#2}%
+\setcounter{ketpicctrh}{#3}%
+\hjaggylineb[#1]{\theketpicctrg}{\theketpicctrh}{#4}%
+\vjaggylineb[#1]{\theketpicctrg}{\theketpicctrh}{#5}%
+\setcounter{ketpicctrg}{#2}%
+\setcounter{ketpicctrh}{#3}%
+\addtocounter{ketpicctrh}{#5}%
+\hjaggyline[#1]{\theketpicctrg}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{#4}%
+\setcounter{ketpicctrh}{#3}%
+\vjaggyline[#1]{\theketpicctrg}{\theketpicctrh}{#5}%
+%
+}%
+\newcommand{\jaggyboxframese}[6][8]{%
+\jaggyboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\jaggyboxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\jaggyboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\hdialine}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -0.50000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(1.00000,0.50000)(0.00000,0.00000)(1.00000,-0.50000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( 0.00000, -0.50000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.50000)(1.00000,0.00000)(0.00000,-0.50000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vdialine}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( -0.50000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(-0.50000,0.00000)(0.00000,1.00000)(0.50000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 1.00000)( -0.50000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(-0.50000,1.00000)(0.00000,0.00000)(0.50000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\setcounter{ketpicctrc}{\value{ketpicctra}}%
+\divide\value{ketpicctrc} by 2%
+\multiply\value{ketpicctrc} by 2%
+%
+{%
+\ifnum %
+\theketpicctrc<\theketpicctra %
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\else%
+\settowidth{\Width}{\tmpcontentsb}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontentsb}\settodepth{\Depth}{\tmpcontentsb}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontentsb}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\diaboxframe}[6][4]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\setcounter{ketpicctrh}{#3}%
+\hdialine[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrh}{#3}%
+\addtocounter{ketpicctrh}{#5}%
+\hdialine[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrg}{#2}%
+\vdialine[#1]{\theketpicctrg}{#3}{#5}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{#4}%
+\vdialine[#1]{\theketpicctrg}{#3}{#5}%
+%
+}%
+\newcommand{\diaboxframese}[6][8]{%
+\diaboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframes}[6][0.008]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\addtocounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\diaboxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\diaboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\hdashline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(0.50000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\hdashlineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.50000,0.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{-1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vdashline}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(0.00000,0.50000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\vdashlineb}[4][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.50000)(0.00000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{1}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+%
+}%
+\newcommand{\dashboxframe}[6][4]{%
+\def\tmpcontents{%
+\setcounter{ketpicctrf}{#4}%
+\addtocounter{ketpicctrf}{-4}%
+\setlength{\Width}{\theketpicctrf\unitlength}%
+\begin{minipage}{\Width}%
+#6%
+\end{minipage}%
+%
+}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{2}%
+\setcounter{ketpicctrh}{-#3}%
+\addtocounter{ketpicctrh}{-2}%
+\settowidth{\Width}{\tmpcontents}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{\tmpcontents}\settodepth{\Depth}{\tmpcontents}\setlength{\Height}{-\Height}%
+\put(\theketpicctrg,\theketpicctrh){\hspace*{\Width}\raisebox{\Height}{\tmpcontents}}%
+\setcounter{ketpicctrh}{#3}%
+\hdashline[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrh}{#3}%
+\addtocounter{ketpicctrh}{#5}%
+\hdashlineb[#1]{#2}{\theketpicctrh}{#4}%
+\setcounter{ketpicctrg}{#2}%
+\vdashline[#1]{\theketpicctrg}{#3}{#5}%
+\setcounter{ketpicctrg}{#2}%
+\addtocounter{ketpicctrg}{#4}%
+\vdashlineb[#1]{\theketpicctrg}{#3}{#5}%
+%
+}%
+\newcommand{\dashboxframese}[6][8]{%
+\dashboxframe[#1]{#2}{#3}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframec}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframee}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframew}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{-#5}%
+\divide\value{ketpicctre} by 2%
+\addtocounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframen}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframes}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\divide\value{ketpicctrd} by 2%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframenw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframene}[6][8]{%
+\setcounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\addtocounter{ketpicctre}{-#5}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\dashboxframesw}[6][8]{%
+\setcounter{ketpicctrd}{-#4}%
+\addtocounter{ketpicctrd}{#2}%
+\setcounter{ketpicctre}{#3}%
+\dashboxframe[#1]{\theketpicctrd}{\theketpicctre}{#4}{#5}{#6}%
+%
+}%
+\newcommand{\boxlinep}[6][8]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=0.1mm%
+\begin{picture}%
+( 1.00000, 0.02000)( 0.00000, -0.01000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(1.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+{\unitlength=0.1mm%
+\setcounter{ketpicctrc}{-#3}%
+\addtocounter{ketpicctrc}{-#5}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{9}%
+%
+{%
+\ifnum %
+\theketpicctrb>#4 %
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+%
+\else%
+\addtocounter{ketpicctra}{9}%
+\setcounter{ketpicctrb}{#2}%
+\addtocounter{ketpicctrb}{\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrb,\theketpicctrc){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#4%
+\repeat%
+}%
+}%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(0.00000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\def\tmpcontentsb{%
+{\unitlength=0.1mm%
+\begin{picture}%
+( 0.02000, 1.00000)( -0.01000, 0.00000)%
+\linethickness{0.008in}%
+%
+%
+{%
+\ifnum %
+#1<10 %
+\linethickness{0.00#1 in}%
+%
+\else%
+\linethickness{0.0#1 in}%
+%
+\fi%
+}%
+\polyline(0.00000,0.00000)(0.00000,1.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+{\unitlength=0.1mm%
+\setcounter{ketpicctrc}{#2}%
+\addtocounter{ketpicctrc}{#4}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\addtocounter{ketpicctrb}{9}%
+%
+{%
+\ifnum %
+\theketpicctrb>#5 %
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontentsb}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontentsb}}\settodepth{\Depth}{{\color{#6}\tmpcontentsb}}\setlength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontentsb}}}%
+%
+\else%
+\addtocounter{ketpicctra}{9}%
+\setcounter{ketpicctrb}{-#3}%
+\addtocounter{ketpicctrb}{-\value{ketpicctra}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(#2,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+\settowidth{\Width}{{\color{#6}\tmpcontents}}\setlength{\Width}{-0.5\Width}%
+\settoheight{\Height}{{\color{#6}\tmpcontents}}\settodepth{\Depth}{{\color{#6}\tmpcontents}}\setlength{\Height}{\Depth}%
+\put(\theketpicctrc,\theketpicctrb){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\tmpcontents}}}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<#5%
+\repeat%
+}%
+}%
+%
+}%
+\newcommand{\shadeframep}[6][white]{%
+\def\tmpcontents{%
+{\unitlength=1mm%
+\begin{picture}%
+( 100.00000, 100.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+{\color{#1}
+\polygon*(0.00010,0.00010)(99.99990,0.00010)(99.99990,99.99990)(0.00010,99.99990)%
+(0.00010,0.00010)
+}%
+\end{picture}}%%
+}%
+{\unitlength=0.1mm%
+%
+{%
+\ifnum %
+#4<100 %
+%
+{%
+\ifnum %
+#5<100 %
+\settowidth{\Width}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.0#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.0#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#4<1000 %
+%
+{%
+\ifnum %
+#5<100 %
+\settowidth{\Width}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.#4}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{0.#4}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\else%
+%
+{%
+\ifnum %
+#5<100 %
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}}%
+\setcounter{ketpicctra}{#2}%
+\addtocounter{ketpicctra}{#4}%
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(\theketpicctra,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.0#5]{\tmpcontents}}}}%
+%
+\else%
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(#2,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}}%
+\setcounter{ketpicctra}{#2}%
+\addtocounter{ketpicctra}{#4}%
+\settowidth{\Width}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Width}{-1\Width}%
+\settoheight{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\settodepth{\Depth}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}\setlength{\Height}{-\Height}%
+\put(\theketpicctra,-#3){\hspace*{\Width}\raisebox{\Height}{{\color{#6}\scalebox{1}[0.#5]{\tmpcontents}}}}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+%
+\fi%
+}%
+}%
+%
+}%
+\newcommand{\popframe}[9][8]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#9}%
+\setcounter{ketpicctrh}{\value{ketpicctra}}%
+\ketcalcheight{#9}%
+\setcounter{ketpicctri}{\value{ketpicctra}}%
+\ketcalcdepth{#9}%
+\addtocounter{ketpicctri}{\value{ketpicctra}}%
+\addtocounter{ketpicctrh}{30}%
+\addtocounter{ketpicctri}{30}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\addtocounter{ketpicctrg}{15}%
+\shadeframep[#5]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#5}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\shadeframep[#7]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#7}%
+\boxlinep[#1]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#8}%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctra}{\value{ketpicctri}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrg}{\value{ketpicctra}}%
+\multiply\value{ketpicctrg} by -1%
+\settowidth{\Width}{{#9}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{#9}}\settodepth{\Depth}{{#9}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrf,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{{#9}}}%
+}%
+%
+}%
+\newcommand{\colorframe}[7][8]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#7}%
+\setcounter{ketpicctrh}{\value{ketpicctra}}%
+\ketcalcheight{#7}%
+\setcounter{ketpicctri}{\value{ketpicctra}}%
+\ketcalcdepth{#7}%
+\addtocounter{ketpicctri}{\value{ketpicctra}}%
+\addtocounter{ketpicctrh}{30}%
+\addtocounter{ketpicctri}{30}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\shadeframep[#4]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#5}%
+\boxlinep[#1]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#6}%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctra}{\value{ketpicctri}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrg}{\value{ketpicctra}}%
+\multiply\value{ketpicctrg} by -1%
+\settowidth{\Width}{{#7}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{#7}}\settodepth{\Depth}{{#7}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrf,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{{#7}}}%
+}%
+%
+}%
+\newcommand{\colorframes}[7][8]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#7}%
+\setcounter{ketpicctrh}{\value{ketpicctra}}%
+\ketcalcheight{#7}%
+\setcounter{ketpicctri}{\value{ketpicctra}}%
+\ketcalcdepth{#7}%
+\addtocounter{ketpicctri}{\value{ketpicctra}}%
+\addtocounter{ketpicctrh}{30}%
+\addtocounter{ketpicctri}{30}%
+\setcounter{ketpicctrf}{#2}%
+\multiply\value{ketpicctrf} by 10%
+\setcounter{ketpicctra}{\value{ketpicctrh}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrf}{-\value{ketpicctra}}%
+\setcounter{ketpicctrg}{#3}%
+\multiply\value{ketpicctrg} by 10%
+\shadeframep[#5]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#5}%
+\boxlinep[#1]{\theketpicctrf}{\theketpicctrg}{\theketpicctrh}{\theketpicctri}{#6}%
+\addtocounter{ketpicctrf}{15}%
+\setcounter{ketpicctra}{\value{ketpicctri}}%
+\divide\value{ketpicctra} by 2%
+\addtocounter{ketpicctrg}{\value{ketpicctra}}%
+\multiply\value{ketpicctrg} by -1%
+\settowidth{\Width}{{#7}}\setlength{\Width}{0\Width}%
+\settoheight{\Height}{{#7}}\settodepth{\Depth}{{#7}}\setlength{\Height}{-0.5\Height}\setlength{\Depth}{0.5\Depth}\addtolength{\Height}{\Depth}%
+\put(\theketpicctrf,\theketpicctrg){\hspace*{\Width}\raisebox{\Height}{{#7}}}%
+}%
+%
+}%
diff --git a/texmf-dist/tex/latex/ketpic/ketmedia.sty b/texmf-dist/tex/latex/ketpic/ketmedia.sty
new file mode 100644
index 00000000..1fb2b95e
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketmedia.sty
@@ -0,0 +1,69 @@
+\newcommand{\inputsound}[3][90]{
+
+% #1:position, #2:dir, #3:file
+
+\vspace{-20mm}
+
+\vfill
+
+\noindent%
+\hspace*{#1mm}\hspace{8mm}%
+\mediabutton[
+mediacommand=#3:playPause,
+overface={\color{blue}\small \strut \fbox{$\oplus\triangleright$}},
+%downface={\color{red}\small\strut Pause/Pause}%
+]{\small\strut \fbox{$\oplus\triangleright$}}%
+\mediabutton[
+mediacommand=#3:rewind,
+overface={\color{blue}\small \strut \fbox{$\ll$}}
+%downface={\color{red}\small\strut Pause/Pause}%
+]{\small\strut \fbox{$\ll$}}%
+%\mediabutton[
+%mediacommand=#3:seek[(15)],
+%overface={\color{blue}\small \strut \fbox{1}}
+%downface={\color{red}\small\strut Pause/Pause}%
+%]{\small\strut \fbox{1}}%
+%\mediabutton[
+%mediacommand=#3:seek[(30)],
+%overface={\color{blue}\small \strut \fbox{2}}
+%%downface={\color{red}\small\strut Pause/Pause}%
+%]{\small\strut \fbox{2}}%
+
+\vspace{-7mm}
+
+\noindent%
+\hspace*{#1mm}%
+\includemedia[
+ label=#3,
+ addresource=#2#3.mp3,
+ activate=pageopen,
+ flashvars={
+ source=#2#3.mp3
+ &autoPlay=true
+ }
+% transparent,
+% passcontext
+]{\color{blue}\fbox{ }}{APlayer.swf}
+
+}
+
+\newcommand{\inputmovie}[3][90]{
+
+\includemedia[
+ label=#3,
+ width=0.8\linewidth,height=0.6\linewidth,
+% width=60mm,height=45mm,
+ activate=pagevisible,
+ addresource=#2#3.mp4,
+ flashvars={
+ source=#2#3.mp4
+% &showloading=never
+% &autoRewind=true
+ &autoplay=true
+% &loop=1
+% &buffer=0.2
+ }
+%]{}{player_flv_maxi.swf}
+]{}{VPlayer.swf}
+
+} \ No newline at end of file
diff --git a/texmf-dist/tex/latex/ketpic/ketpic.sty b/texmf-dist/tex/latex/ketpic/ketpic.sty
new file mode 100644
index 00000000..b0555f7b
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketpic.sty
@@ -0,0 +1,825 @@
+%Copyright (C) 2014 Setsuo Takato, KETpic developer team
+%*
+%* This program is free software: you can redistribute it and/or modify
+%* it under the terms of the GNU General Public License as published by
+%* the Free Software Foundation; either version 3 of the License, or
+%* (at your option) any later version.
+%*
+%* This program is distributed in the hope that it will be useful,
+%* but WITHOUT ANY WARRANTY; without even the implied warranty of
+%* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%* GNU General Public License for more details.
+%*
+%* You should have received a copy of the GNU General Public License
+%* along with this program. If not, see <http://www.gnu.org/licenses/>
+%%% ketpic.sty
+% 2016.12.08
+% NEarrow, ..., SELarrow,... added
+% argument ( option ) = size
+% 2016.04.07
+% ketcindy, selarrow, serarrow, nelarrow, nerarrow
+% 2010.09.17 %
+%
+\newcounter{ketpicctra}%
+\newcounter{ketpicctrb}%
+\newcounter{ketpicctrc}%
+\newcounter{ketpicctrd}%
+\newcounter{ketpicctre}%
+\newcounter{ketpicctrf}%
+\newcounter{ketpicctrg}%
+\newcounter{ketpicctrh}%
+\newcounter{ketpicctri}%
+\newcounter{ketpicctrj}%
+\def\ketpic{%
+{K\kern-.20em\lower.5ex\hbox{E}\kern-.125em{Tpic}}%
+%
+}%
+\def\ketcindy{{K\kern-.20em%
+\lower.5ex\hbox{E}\kern-.125em{TCindy}}}%
+\def\KeTpic{\ketpic}%
+\def\KeTCindy{\ketcindy}%
+\newlength{\Width}%
+\newlength{\Height}%
+\newlength{\Depth}%
+\newcommand{\Ltab}[2]{%
+\settowidth{\Width}{#2}%
+\setlength{\Width}{-\Width}%
+\addtolength{\Width}{#1}%
+#2\hspace{\Width}\mbox{}%
+%
+}%
+\newcommand{\Rtab}[2]{%
+\settowidth{\Width}{#2}%
+\setlength{\Width}{-\Width}%
+\addtolength{\Width}{#1}%
+\hspace*{\Width}#2\mbox{}%
+%
+}%
+\newcommand{\Ctab}[2]{%
+\settowidth{\Width}{#2}%
+\setlength{\Width}{-\Width}%
+\addtolength{\Width}{#1}%
+\setlength{\Width}{0.5\Width}%
+\hspace*{\Width}#2\hspace{\Width}\mbox{}%
+%
+}%
+\newcommand{\vbackward}[1]{%
+\settoheight{\Height}{#1}%
+\vspace*{-\Height}%
+%
+}%
+\newcommand{\vforward}[1]{%
+\settoheight{\Height}{#1}%
+\vspace*{\Height}%
+%
+}%
+\newcommand{\usepack}{%
+\usepackage{amsmath,amssymb}%
+\usepackage{graphicx}%
+\usepackage{color}%
+%
+}%
+\newcommand{\setmargin}[4]{%
+\setlength{\oddsidemargin}{-25.4mm}%
+\addtolength{\oddsidemargin}{#1 mm}%
+\setlength{\textwidth}{\paperwidth}%
+\addtolength{\textwidth}{-#1 mm}%
+\addtolength{\textwidth}{-#2 mm}%
+\setlength{\headheight}{0mm}%
+\setlength{\headsep}{0mm}%
+\setlength{\topmargin}{-25.4mm}%
+\addtolength{\topmargin}{#3 mm}%
+\setlength{\textheight}{\paperheight}%
+\addtolength{\textheight}{-#3 mm}%
+\addtolength{\textheight}{-#4 mm}%
+%
+}%
+\newcommand{\ketcalcwidth}[2][0]{%
+\settowidth{\Depth}{#2}%
+\setlength{\Width}{0\unitlength}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\addtolength{\Width}{\unitlength}%
+%
+{%
+\ifdim %
+\Width>\Depth %
+\addtocounter{ketpicctra}{6000}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<5000%
+\repeat%
+}%
+\addtocounter{ketpicctra}{-6000}%
+%
+{%
+\ifnum %
+#1>0 %
+\theketpicctra%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\ketcalcheight}[2][0]{%
+\settoheight{\Depth}{#2}%
+\setlength{\Height}{0\unitlength}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\addtolength{\Height}{\unitlength}%
+%
+{%
+\ifdim %
+\Height>\Depth %
+\addtocounter{ketpicctra}{6000}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<5000%
+\repeat%
+}%
+\addtocounter{ketpicctra}{-6000}%
+%
+{%
+\ifnum %
+#1>0 %
+\theketpicctra%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\ketcalcdepth}[2][0]{%
+\settodepth{\Width}{#2}%
+\setlength{\Depth}{0\unitlength}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\addtolength{\Depth}{\unitlength}%
+%
+{%
+\ifdim %
+\Depth>\Width %
+\addtocounter{ketpicctra}{5000}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<5000%
+\repeat%
+}%
+\addtocounter{ketpicctra}{-5000}%
+%
+{%
+\ifnum %
+#1>0 %
+\theketpicctra%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\ketcalcwh}[1]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\divide\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\{\theketpicctrb.%
+\multiply\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\addtocounter{ketpicctra}{-\value{ketpicctrb}}%
+\theketpicctra\}\{%
+\ketcalcheight{#1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\ketcalcdepth{#1}%
+\addtocounter{ketpicctra}{\value{ketpicctrb}}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\divide\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\theketpicctrb.%
+\multiply\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\addtocounter{ketpicctra}{-\value{ketpicctrb}}%
+\theketpicctra\}%
+%
+}%
+%
+}%
+\newcommand{\dangerbendmark}[1][1]{%
+\def\tmpcontents{%
+{\unitlength=0.911mm%
+\begin{picture}%
+( 3.85072, 4.34364)( 3.18982, 4.86836)%
+\special{pn 8}%
+%
+\special{pa 229 -200}\special{pa 211 -204}\special{pa 195 -208}\special{pa 183 -210}%
+\special{pa 173 -212}\special{pa 166 -213}\special{pa 160 -214}\special{pa 155 -215}%
+\special{pa 151 -215}\special{pa 149 -215}\special{pa 146 -215}\special{pa 143 -216}%
+\special{pa 142 -217}\special{pa 141 -218}\special{pa 142 -220}\special{pa 146 -222}%
+\special{pa 152 -226}\special{pa 160 -229}\special{pa 169 -233}\special{pa 180 -237}%
+\special{pa 190 -241}\special{pa 201 -245}\special{pa 211 -248}\special{pa 221 -252}%
+\special{pa 229 -255}\special{pa 235 -258}\special{pa 240 -260}\special{pa 243 -263}%
+\special{pa 246 -266}\special{pa 248 -270}\special{pa 250 -275}\special{pa 251 -280}%
+\special{pa 252 -286}\special{pa 253 -292}\special{pa 252 -298}\special{pa 249 -302}%
+\special{pa 245 -306}\special{pa 240 -309}\special{pa 235 -312}\special{pa 228 -314}%
+\special{pa 221 -316}\special{pa 214 -319}\special{pa 207 -320}\special{pa 198 -322}%
+\special{pa 190 -324}\special{pa 181 -326}\special{pa 172 -327}\special{pa 163 -328}%
+\special{pa 153 -329}\special{pa 142 -330}\special{pa 142 -330}\special{pa 142 -329}%
+\special{pa 142 -329}\special{pa 142 -328}\special{pa 142 -328}\special{pa 142 -327}%
+\special{pa 142 -327}\special{pa 142 -326}\special{pa 142 -326}\special{pa 142 -325}%
+\special{pa 141 -325}\special{pa 141 -324}\special{pa 141 -324}\special{pa 141 -323}%
+\special{pa 141 -323}\special{pa 141 -322}\special{pa 141 -322}\special{pa 141 -321}%
+\special{pa 141 -321}\special{pa 141 -320}\special{pa 141 -320}\special{pa 141 -319}%
+\special{pa 141 -319}\special{pa 141 -318}\special{pa 141 -318}\special{pa 141 -317}%
+\special{pa 140 -317}\special{pa 140 -316}\special{pa 140 -316}\special{pa 140 -315}%
+\special{pa 140 -315}\special{pa 140 -314}\special{pa 140 -313}\special{pa 140 -313}%
+\special{pa 140 -312}\special{pa 140 -312}\special{pa 140 -311}\special{pa 140 -311}%
+\special{pa 140 -310}\special{pa 140 -310}\special{pa 140 -309}\special{pa 140 -309}%
+\special{pa 139 -308}\special{pa 139 -308}\special{pa 139 -307}\special{pa 139 -307}%
+\special{pa 139 -306}\special{pa 139 -306}\special{pa 139 -305}\special{pa 159 -301}%
+\special{pa 175 -297}\special{pa 188 -294}\special{pa 198 -293}\special{pa 206 -292}%
+\special{pa 211 -291}\special{pa 215 -291}\special{pa 217 -290}\special{pa 218 -290}%
+\special{pa 219 -289}\special{pa 219 -289}\special{pa 219 -287}\special{pa 219 -286}%
+\special{pa 219 -285}\special{pa 220 -284}\special{pa 220 -283}\special{pa 220 -283}%
+\special{pa 219 -282}\special{pa 215 -280}\special{pa 210 -278}\special{pa 201 -275}%
+\special{pa 190 -272}\special{pa 179 -268}\special{pa 167 -264}\special{pa 155 -259}%
+\special{pa 145 -255}\special{pa 136 -251}\special{pa 128 -246}\special{pa 122 -242}%
+\special{pa 118 -238}\special{pa 116 -234}\special{pa 115 -230}\special{pa 114 -225}%
+\special{pa 115 -221}\special{pa 115 -216}\special{pa 116 -211}\special{pa 118 -206}%
+\special{pa 121 -202}\special{pa 125 -197}\special{pa 132 -194}\special{pa 140 -190}%
+\special{pa 150 -188}\special{pa 160 -185}\special{pa 171 -183}\special{pa 183 -181}%
+\special{pa 194 -180}\special{pa 205 -178}\special{pa 215 -176}\special{pa 224 -175}%
+\special{pa 224 -175}\special{pa 224 -176}\special{pa 224 -176}\special{pa 224 -176}%
+\special{pa 224 -177}\special{pa 224 -177}\special{pa 224 -178}\special{pa 225 -178}%
+\special{pa 225 -179}\special{pa 225 -179}\special{pa 225 -180}\special{pa 225 -180}%
+\special{pa 225 -181}\special{pa 225 -181}\special{pa 225 -182}\special{pa 225 -182}%
+\special{pa 226 -183}\special{pa 226 -183}\special{pa 226 -184}\special{pa 226 -184}%
+\special{pa 226 -184}\special{pa 226 -185}\special{pa 226 -185}\special{pa 226 -186}%
+\special{pa 226 -186}\special{pa 227 -187}\special{pa 227 -187}\special{pa 227 -188}%
+\special{pa 227 -188}\special{pa 227 -189}\special{pa 227 -189}\special{pa 227 -190}%
+\special{pa 227 -190}\special{pa 227 -191}\special{pa 227 -191}\special{pa 228 -192}%
+\special{pa 228 -192}\special{pa 228 -192}\special{pa 228 -193}\special{pa 228 -193}%
+\special{pa 228 -194}\special{pa 228 -194}\special{pa 228 -195}\special{pa 228 -195}%
+\special{pa 229 -196}\special{pa 229 -196}\special{pa 229 -197}\special{pa 229 -197}%
+\special{pa 229 -198}\special{pa 229 -200}\special{sh 1}\special{ip}%
+\special{pn 8}%
+\special{pa 229 -200}\special{pa 211 -204}\special{pa 195 -208}\special{pa 183 -210}%
+\special{pa 173 -212}\special{pa 166 -213}\special{pa 160 -214}\special{pa 155 -215}%
+\special{pa 151 -215}\special{pa 149 -215}\special{pa 146 -215}\special{pa 143 -216}%
+\special{pa 142 -217}\special{pa 141 -218}\special{pa 142 -220}\special{pa 146 -222}%
+\special{pa 152 -226}\special{pa 160 -229}\special{pa 169 -233}\special{pa 180 -237}%
+\special{pa 190 -241}\special{pa 201 -245}\special{pa 211 -248}\special{pa 221 -252}%
+\special{pa 229 -255}\special{pa 235 -258}\special{pa 240 -260}\special{pa 243 -263}%
+\special{pa 246 -266}\special{pa 248 -270}\special{pa 250 -275}\special{pa 251 -280}%
+\special{pa 252 -286}\special{pa 253 -292}\special{pa 252 -298}\special{pa 249 -302}%
+\special{pa 245 -306}\special{pa 240 -309}\special{pa 235 -312}\special{pa 228 -314}%
+\special{pa 221 -316}\special{pa 214 -319}\special{pa 207 -320}\special{pa 198 -322}%
+\special{pa 190 -324}\special{pa 181 -326}\special{pa 172 -327}\special{pa 163 -328}%
+\special{pa 153 -329}\special{pa 142 -330}%
+\special{fp}%
+\special{pa 142 -330}\special{pa 142 -330}\special{pa 142 -329}\special{pa 142 -329}%
+\special{pa 142 -328}\special{pa 142 -328}\special{pa 142 -327}\special{pa 142 -327}%
+\special{pa 142 -326}\special{pa 142 -326}\special{pa 142 -325}\special{pa 141 -325}%
+\special{pa 141 -324}\special{pa 141 -324}\special{pa 141 -323}\special{pa 141 -323}%
+\special{pa 141 -322}\special{pa 141 -322}\special{pa 141 -321}\special{pa 141 -321}%
+\special{pa 141 -320}\special{pa 141 -320}\special{pa 141 -319}\special{pa 141 -319}%
+\special{pa 141 -318}\special{pa 141 -318}\special{pa 141 -317}\special{pa 140 -317}%
+\special{pa 140 -316}\special{pa 140 -316}\special{pa 140 -315}\special{pa 140 -315}%
+\special{pa 140 -314}\special{pa 140 -313}\special{pa 140 -313}\special{pa 140 -312}%
+\special{pa 140 -312}\special{pa 140 -311}\special{pa 140 -311}\special{pa 140 -310}%
+\special{pa 140 -310}\special{pa 140 -309}\special{pa 140 -309}\special{pa 139 -308}%
+\special{pa 139 -308}\special{pa 139 -307}\special{pa 139 -307}\special{pa 139 -306}%
+\special{pa 139 -306}\special{pa 139 -305}%
+\special{fp}%
+\special{pa 139 -305}\special{pa 159 -301}\special{pa 175 -297}\special{pa 188 -294}%
+\special{pa 198 -293}\special{pa 206 -292}\special{pa 211 -291}\special{pa 215 -291}%
+\special{pa 217 -290}\special{pa 218 -290}\special{pa 219 -289}\special{pa 219 -289}%
+\special{pa 219 -287}\special{pa 219 -286}\special{pa 219 -285}\special{pa 220 -284}%
+\special{pa 220 -283}\special{pa 220 -283}\special{pa 219 -282}\special{pa 215 -280}%
+\special{pa 210 -278}\special{pa 201 -275}\special{pa 190 -272}\special{pa 179 -268}%
+\special{pa 167 -264}\special{pa 155 -259}\special{pa 145 -255}\special{pa 136 -251}%
+\special{pa 128 -246}\special{pa 122 -242}\special{pa 118 -238}\special{pa 116 -234}%
+\special{pa 115 -230}\special{pa 114 -225}\special{pa 115 -221}\special{pa 115 -216}%
+\special{pa 116 -211}\special{pa 118 -206}\special{pa 121 -202}\special{pa 125 -197}%
+\special{pa 132 -194}\special{pa 140 -190}\special{pa 150 -188}\special{pa 160 -185}%
+\special{pa 171 -183}\special{pa 183 -181}\special{pa 194 -180}\special{pa 205 -178}%
+\special{pa 215 -176}\special{pa 224 -175}%
+\special{fp}%
+\special{pa 224 -175}\special{pa 224 -175}\special{pa 224 -176}\special{pa 224 -176}%
+\special{pa 224 -176}\special{pa 224 -177}\special{pa 224 -177}\special{pa 224 -178}%
+\special{pa 225 -178}\special{pa 225 -179}\special{pa 225 -179}\special{pa 225 -180}%
+\special{pa 225 -180}\special{pa 225 -181}\special{pa 225 -181}\special{pa 225 -182}%
+\special{pa 225 -182}\special{pa 226 -183}\special{pa 226 -183}\special{pa 226 -184}%
+\special{pa 226 -184}\special{pa 226 -184}\special{pa 226 -185}\special{pa 226 -185}%
+\special{pa 226 -186}\special{pa 226 -186}\special{pa 227 -187}\special{pa 227 -187}%
+\special{pa 227 -188}\special{pa 227 -188}\special{pa 227 -189}\special{pa 227 -189}%
+\special{pa 227 -190}\special{pa 227 -190}\special{pa 227 -191}\special{pa 227 -191}%
+\special{pa 228 -192}\special{pa 228 -192}\special{pa 228 -192}\special{pa 228 -193}%
+\special{pa 228 -193}\special{pa 228 -194}\special{pa 228 -194}\special{pa 228 -195}%
+\special{pa 228 -195}\special{pa 229 -196}\special{pa 229 -196}\special{pa 229 -197}%
+\special{pa 229 -197}\special{pa 229 -198}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+\scalebox{#1}{\tmpcontents}%
+%
+}%
+\newcommand{\cautionmark}[1][1]{%
+\scalebox{#1}{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.60000, 3.98372)( -2.30000, 0.00000)%
+\special{pn 8}%
+%
+\special{pn 12}%
+\special{pa -91 -0}\special{pa 91 -0}\special{pa 0 -157}\special{pa -91 -0}%
+\special{fp}%
+\special{pn 2}%
+\special{pa 12 -22}\special{pa 11 -25}\special{pa 10 -29}\special{pa 7 -31}\special{pa 4 -33}%
+\special{pa 0 -33}\special{pa -4 -33}\special{pa -7 -31}\special{pa -10 -29}\special{pa -11 -25}%
+\special{pa -12 -22}\special{pa -11 -18}\special{pa -10 -15}\special{pa -7 -12}\special{pa -4 -10}%
+\special{pa -0 -10}\special{pa 4 -10}\special{pa 7 -12}\special{pa 10 -15}\special{pa 11 -18}%
+\special{pa 12 -22}%
+\special{fp}%
+\special{pa 0 -47}\special{pa 4 -49}\special{pa 8 -54}\special{pa 11 -60}\special{pa 13 -67}%
+\special{pa 14 -75}\special{pa 16 -82}\special{pa 17 -88}\special{pa 18 -94}\special{pa 18 -98}%
+\special{pa 16 -102}\special{pa 14 -105}\special{pa 11 -108}\special{pa 7 -110}\special{pa 2 -112}%
+\special{pa -3 -112}\special{pa -7 -110}\special{pa -11 -108}\special{pa -14 -105}%
+\special{pa -16 -102}\special{pa -17 -98}\special{pa -17 -93}\special{pa -17 -88}%
+\special{pa -16 -82}\special{pa -15 -75}\special{pa -13 -67}\special{pa -11 -60}\special{pa -8 -53}%
+\special{pa -4 -49}\special{pa 0 -47}%
+\special{fp}%
+\special{pn 8}%
+\special{pa 12 -22}\special{pa 11 -25}\special{pa 10 -29}\special{pa 7 -31}\special{pa 4 -33}%
+\special{pa 0 -33}\special{pa -4 -33}\special{pa -7 -31}\special{pa -10 -29}\special{pa -11 -25}%
+\special{pa -12 -22}\special{pa -11 -18}\special{pa -10 -15}\special{pa -7 -12}\special{pa -4 -10}%
+\special{pa -0 -10}\special{pa 4 -10}\special{pa 7 -12}\special{pa 10 -15}\special{pa 11 -18}%
+\special{pa 12 -22}\special{sh 1}\special{ip}%
+\special{pa 0 -47}\special{pa 4 -49}\special{pa 8 -54}\special{pa 11 -60}\special{pa 13 -67}%
+\special{pa 14 -75}\special{pa 16 -82}\special{pa 17 -88}\special{pa 18 -94}\special{pa 18 -98}%
+\special{pa 16 -102}\special{pa 14 -105}\special{pa 11 -108}\special{pa 7 -110}\special{pa 2 -112}%
+\special{pa -3 -112}\special{pa -7 -110}\special{pa -11 -108}\special{pa -14 -105}%
+\special{pa -16 -102}\special{pa -17 -98}\special{pa -17 -93}\special{pa -17 -88}%
+\special{pa -16 -82}\special{pa -15 -75}\special{pa -13 -67}\special{pa -11 -60}\special{pa -8 -53}%
+\special{pa -4 -49}\special{pa 0 -47}\special{sh 1}\special{ip}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\circlemark}[2][8]{%
+\scalebox{#2}{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.00000, 4.00000)( -2.00000, -2.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 79 -0}\special{pa 78 -10}\special{pa 76 -20}\special{pa 73 -29}\special{pa 69 -38}%
+\special{pa 64 -46}\special{pa 57 -54}\special{pa 50 -61}\special{pa 42 -66}\special{pa 34 -71}%
+\special{pa 24 -75}\special{pa 15 -77}\special{pa 5 -79}\special{pa -5 -79}\special{pa -15 -77}%
+\special{pa -24 -75}\special{pa -34 -71}\special{pa -42 -66}\special{pa -50 -61}\special{pa -57 -54}%
+\special{pa -64 -46}\special{pa -69 -38}\special{pa -73 -29}\special{pa -76 -20}\special{pa -78 -10}%
+\special{pa -79 0}\special{pa -78 10}\special{pa -76 20}\special{pa -73 29}\special{pa -69 38}%
+\special{pa -64 46}\special{pa -57 54}\special{pa -50 61}\special{pa -42 66}\special{pa -34 71}%
+\special{pa -24 75}\special{pa -15 77}\special{pa -5 79}\special{pa 5 79}\special{pa 15 77}%
+\special{pa 24 75}\special{pa 34 71}\special{pa 42 66}\special{pa 50 61}\special{pa 57 54}%
+\special{pa 64 46}\special{pa 69 38}\special{pa 73 29}\special{pa 76 20}\special{pa 78 10}%
+\special{pa 79 -0}%
+\special{fp}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\circleshade}[3][8]{%
+\scalebox{#2}{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.00000, 4.00000)( -2.00000, -2.00000)%
+\special{pn 8}%
+%
+\special{pn #1}%
+\special{pa 79 -0}\special{pa 78 -10}\special{pa 76 -20}\special{pa 73 -29}\special{pa 69 -38}%
+\special{pa 64 -46}\special{pa 57 -54}\special{pa 50 -61}\special{pa 42 -66}\special{pa 34 -71}%
+\special{pa 24 -75}\special{pa 15 -77}\special{pa 5 -79}\special{pa -5 -79}\special{pa -15 -77}%
+\special{pa -24 -75}\special{pa -34 -71}\special{pa -42 -66}\special{pa -50 -61}\special{pa -57 -54}%
+\special{pa -64 -46}\special{pa -69 -38}\special{pa -73 -29}\special{pa -76 -20}\special{pa -78 -10}%
+\special{pa -79 0}\special{pa -78 10}\special{pa -76 20}\special{pa -73 29}\special{pa -69 38}%
+\special{pa -64 46}\special{pa -57 54}\special{pa -50 61}\special{pa -42 66}\special{pa -34 71}%
+\special{pa -24 75}\special{pa -15 77}\special{pa -5 79}\special{pa 5 79}\special{pa 15 77}%
+\special{pa 24 75}\special{pa 34 71}\special{pa 42 66}\special{pa 50 61}\special{pa 57 54}%
+\special{pa 64 46}\special{pa 69 38}\special{pa 73 29}\special{pa 76 20}\special{pa 78 10}%
+\special{pa 79 -0}\special{sh #3}\special{ip}%
+\special{pa 79 -0}\special{pa 78 -10}\special{pa 76 -20}\special{pa 73 -29}\special{pa 69 -38}%
+\special{pa 64 -46}\special{pa 57 -54}\special{pa 50 -61}\special{pa 42 -66}\special{pa 34 -71}%
+\special{pa 24 -75}\special{pa 15 -77}\special{pa 5 -79}\special{pa -5 -79}\special{pa -15 -77}%
+\special{pa -24 -75}\special{pa -34 -71}\special{pa -42 -66}\special{pa -50 -61}\special{pa -57 -54}%
+\special{pa -64 -46}\special{pa -69 -38}\special{pa -73 -29}\special{pa -76 -20}\special{pa -78 -10}%
+\special{pa -79 0}\special{pa -78 10}\special{pa -76 20}\special{pa -73 29}\special{pa -69 38}%
+\special{pa -64 46}\special{pa -57 54}\special{pa -50 61}\special{pa -42 66}\special{pa -34 71}%
+\special{pa -24 75}\special{pa -15 77}\special{pa -5 79}\special{pa 5 79}\special{pa 15 77}%
+\special{pa 24 75}\special{pa 34 71}\special{pa 42 66}\special{pa 50 61}\special{pa 57 54}%
+\special{pa 64 46}\special{pa 69 38}\special{pa 73 29}\special{pa 76 20}\special{pa 78 10}%
+\special{pa 79 -0}%
+\special{fp}%
+\end{picture}}%%
+}%
+%
+}%
+% 2016.04.07
+\newcommand{\nelarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( -5.00000, -5.00000)%
+\special{pn 8}%
+%
+\special{pa -55 55}\special{pa -40 54}\special{pa -24 51}\special{pa -10 45}\special{pa 4 38}%
+\special{pa 17 29}\special{pa 28 18}\special{pa 37 5}\special{pa 45 -9}\special{pa 51 -23}%
+\special{pa 54 -39}%
+\special{fp}%
+\special{pa 61 -16}\special{pa 55 -55}\special{pa 37 -20}\special{pa 49 -18}\special{pa 61 -16}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 61 -16}\special{pa 55 -55}\special{pa 37 -20}\special{pa 49 -18}\special{pa 61 -16}%
+\special{pa 55 -55}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%
+}}}%
+\newcommand{\nerarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( -5.00000, -5.00000)%
+\special{pn 8}%
+%
+\special{pa 39 -54}\special{pa 23 -51}\special{pa 9 -45}\special{pa -5 -37}\special{pa -18 -28}%
+\special{pa -29 -17}\special{pa -38 -4}\special{pa -45 10}\special{pa -51 24}\special{pa -54 40}%
+\special{pa -55 55}%
+\special{fp}%
+\special{pa 20 -37}\special{pa 55 -55}\special{pa 16 -61}\special{pa 18 -49}\special{pa 20 -37}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 20 -37}\special{pa 55 -55}\special{pa 16 -61}\special{pa 18 -49}\special{pa 20 -37}%
+\special{pa 55 -55}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%
+}}}%
+\newcommand{\selarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( -5.00000, -5.00000)%
+\special{pn 8}%
+%
+\special{pa -55 -55}\special{pa -54 -40}\special{pa -51 -24}\special{pa -45 -10}\special{pa -38 4}%
+\special{pa -29 17}\special{pa -18 28}\special{pa -5 37}\special{pa 9 45}\special{pa 23 51}%
+\special{pa 39 54}%
+\special{fp}%
+\special{pa 16 61}\special{pa 55 55}\special{pa 20 37}\special{pa 18 49}\special{pa 16 61}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 16 61}\special{pa 55 55}\special{pa 20 37}\special{pa 18 49}\special{pa 16 61}%
+\special{pa 55 55}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%
+}}}%
+\newcommand{\serarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( -5.00000, -5.00000)%
+\special{pn 8}%
+%
+\special{pa 54 39}\special{pa 51 23}\special{pa 45 9}\special{pa 37 -5}\special{pa 28 -18}%
+\special{pa 17 -29}\special{pa 4 -38}\special{pa -10 -45}\special{pa -24 -51}\special{pa -40 -54}%
+\special{pa -55 -55}%
+\special{fp}%
+\special{pa 37 20}\special{pa 55 55}\special{pa 61 16}\special{pa 49 18}\special{pa 37 20}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 37 20}\special{pa 55 55}\special{pa 61 16}\special{pa 49 18}\special{pa 37 20}%
+\special{pa 55 55}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%
+}}}%
+%%% bendingarrow.sty 2016-12-9 7:41
+%%% bendingarrow.sce 2016-12-9 7:41
+\newcommand{\NEarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 28 -28}\special{pa 97 -97}%
+\special{fp}%
+\special{pa 91 -68}\special{pa 111 -111}\special{pa 68 -91}\special{pa 86 -86}\special{pa 91 -68}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 91 -68}\special{pa 111 -111}\special{pa 68 -91}\special{pa 86 -86}\special{pa 91 -68}%
+\special{pa 111 -111}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SEarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 28 -111}\special{pa 97 -42}%
+\special{fp}%
+\special{pa 68 -48}\special{pa 111 -28}\special{pa 91 -70}\special{pa 86 -53}\special{pa 68 -48}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 68 -48}\special{pa 111 -28}\special{pa 91 -70}\special{pa 86 -53}\special{pa 68 -48}%
+\special{pa 111 -28}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NWarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 111 -28}\special{pa 42 -97}%
+\special{fp}%
+\special{pa 70 -91}\special{pa 28 -111}\special{pa 48 -68}\special{pa 53 -86}\special{pa 70 -91}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 70 -91}\special{pa 28 -111}\special{pa 48 -68}\special{pa 53 -86}\special{pa 70 -91}%
+\special{pa 28 -111}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SWarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 111 -111}\special{pa 42 -42}%
+\special{fp}%
+\special{pa 48 -70}\special{pa 28 -28}\special{pa 70 -48}\special{pa 53 -53}\special{pa 48 -70}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 48 -70}\special{pa 28 -28}\special{pa 70 -48}\special{pa 53 -53}\special{pa 48 -70}%
+\special{pa 28 -28}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NELarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 28 -28}\special{pa 33 -28}\special{pa 39 -28}\special{pa 45 -29}\special{pa 50 -31}%
+\special{pa 56 -33}\special{pa 61 -35}\special{pa 66 -37}\special{pa 71 -40}\special{pa 76 -43}%
+\special{pa 80 -46}\special{pa 85 -50}\special{pa 89 -54}\special{pa 92 -59}\special{pa 96 -63}%
+\special{pa 99 -68}\special{pa 102 -73}\special{pa 104 -78}\special{pa 106 -83}\special{pa 108 -89}%
+\special{pa 109 -94}%
+\special{fp}%
+\special{pa 114 -64}\special{pa 111 -111}\special{pa 83 -72}\special{pa 101 -76}\special{pa 114 -64}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 114 -64}\special{pa 111 -111}\special{pa 83 -72}\special{pa 101 -76}\special{pa 114 -64}%
+\special{pa 111 -111}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NERarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 94 -109}\special{pa 89 -108}\special{pa 83 -106}\special{pa 78 -104}\special{pa 73 -102}%
+\special{pa 68 -99}\special{pa 63 -96}\special{pa 59 -92}\special{pa 54 -89}\special{pa 50 -85}%
+\special{pa 46 -80}\special{pa 43 -76}\special{pa 40 -71}\special{pa 37 -66}\special{pa 35 -61}%
+\special{pa 33 -56}\special{pa 31 -50}\special{pa 29 -45}\special{pa 28 -39}\special{pa 28 -33}%
+\special{pa 28 -28}%
+\special{fp}%
+\special{pa 72 -84}\special{pa 111 -111}\special{pa 64 -115}\special{pa 76 -102}\special{pa 72 -84}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 72 -84}\special{pa 111 -111}\special{pa 64 -115}\special{pa 76 -102}\special{pa 72 -84}%
+\special{pa 111 -111}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SELarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 28 -111}\special{pa 28 -105}\special{pa 28 -99}\special{pa 29 -94}\special{pa 31 -88}%
+\special{pa 33 -83}\special{pa 35 -78}\special{pa 37 -72}\special{pa 40 -67}\special{pa 43 -63}%
+\special{pa 46 -58}\special{pa 50 -54}\special{pa 54 -50}\special{pa 59 -46}\special{pa 63 -43}%
+\special{pa 68 -40}\special{pa 73 -37}\special{pa 78 -34}\special{pa 83 -32}\special{pa 89 -31}%
+\special{pa 94 -29}%
+\special{fp}%
+\special{pa 64 -24}\special{pa 111 -28}\special{pa 72 -55}\special{pa 76 -37}\special{pa 64 -24}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 64 -24}\special{pa 111 -28}\special{pa 72 -55}\special{pa 76 -37}\special{pa 64 -24}%
+\special{pa 111 -28}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SERarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 109 -44}\special{pa 108 -50}\special{pa 106 -55}\special{pa 104 -60}\special{pa 102 -66}%
+\special{pa 99 -71}\special{pa 96 -75}\special{pa 92 -80}\special{pa 89 -84}\special{pa 85 -88}%
+\special{pa 80 -92}\special{pa 76 -95}\special{pa 71 -99}\special{pa 66 -101}\special{pa 61 -104}%
+\special{pa 56 -106}\special{pa 50 -108}\special{pa 45 -109}\special{pa 39 -110}\special{pa 33 -111}%
+\special{pa 28 -111}%
+\special{fp}%
+\special{pa 83 -66}\special{pa 111 -28}\special{pa 114 -75}\special{pa 101 -62}\special{pa 83 -66}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 83 -66}\special{pa 111 -28}\special{pa 114 -75}\special{pa 101 -62}\special{pa 83 -66}%
+\special{pa 111 -28}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SWRarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 44 -29}\special{pa 50 -31}\special{pa 55 -32}\special{pa 60 -34}\special{pa 66 -37}%
+\special{pa 71 -40}\special{pa 75 -43}\special{pa 80 -46}\special{pa 84 -50}\special{pa 88 -54}%
+\special{pa 92 -58}\special{pa 95 -63}\special{pa 99 -67}\special{pa 101 -72}\special{pa 104 -78}%
+\special{pa 106 -83}\special{pa 108 -88}\special{pa 109 -94}\special{pa 110 -99}\special{pa 111 -105}%
+\special{pa 111 -111}%
+\special{fp}%
+\special{pa 67 -55}\special{pa 28 -28}\special{pa 75 -24}\special{pa 62 -37}\special{pa 67 -55}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 67 -55}\special{pa 28 -28}\special{pa 75 -24}\special{pa 62 -37}\special{pa 67 -55}%
+\special{pa 28 -28}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SWLarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 111 -111}\special{pa 105 -111}\special{pa 99 -110}\special{pa 94 -109}%
+\special{pa 88 -108}\special{pa 83 -106}\special{pa 78 -104}\special{pa 72 -101}\special{pa 67 -99}%
+\special{pa 63 -95}\special{pa 58 -92}\special{pa 54 -88}\special{pa 50 -84}\special{pa 46 -80}%
+\special{pa 43 -75}\special{pa 40 -71}\special{pa 37 -66}\special{pa 34 -60}\special{pa 32 -55}%
+\special{pa 31 -50}\special{pa 29 -44}%
+\special{fp}%
+\special{pa 24 -75}\special{pa 28 -28}\special{pa 55 -66}\special{pa 37 -62}\special{pa 24 -75}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 24 -75}\special{pa 28 -28}\special{pa 55 -66}\special{pa 37 -62}\special{pa 24 -75}%
+\special{pa 28 -28}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NWRarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 29 -94}\special{pa 31 -89}\special{pa 32 -83}\special{pa 34 -78}\special{pa 37 -73}%
+\special{pa 40 -68}\special{pa 43 -63}\special{pa 46 -59}\special{pa 50 -54}\special{pa 54 -50}%
+\special{pa 58 -46}\special{pa 63 -43}\special{pa 67 -40}\special{pa 72 -37}\special{pa 78 -35}%
+\special{pa 83 -33}\special{pa 88 -31}\special{pa 94 -29}\special{pa 99 -28}\special{pa 105 -28}%
+\special{pa 111 -28}%
+\special{fp}%
+\special{pa 55 -72}\special{pa 28 -111}\special{pa 24 -64}\special{pa 37 -76}\special{pa 55 -72}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 55 -72}\special{pa 28 -111}\special{pa 24 -64}\special{pa 37 -76}\special{pa 55 -72}%
+\special{pa 28 -111}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NWLarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\special{pn 8}%
+%
+\special{pa 111 -28}\special{pa 111 -33}\special{pa 110 -39}\special{pa 109 -45}\special{pa 108 -50}%
+\special{pa 106 -56}\special{pa 104 -61}\special{pa 101 -66}\special{pa 99 -71}\special{pa 95 -76}%
+\special{pa 92 -80}\special{pa 88 -85}\special{pa 84 -89}\special{pa 80 -92}\special{pa 75 -96}%
+\special{pa 71 -99}\special{pa 66 -102}\special{pa 60 -104}\special{pa 55 -106}\special{pa 50 -108}%
+\special{pa 44 -109}%
+\special{fp}%
+\special{pa 75 -115}\special{pa 28 -111}\special{pa 67 -84}\special{pa 62 -102}\special{pa 75 -115}%
+\special{sh 1}\special{ip}%
+\special{pn 1}%
+\special{pa 75 -115}\special{pa 28 -111}\special{pa 67 -84}\special{pa 62 -102}\special{pa 75 -115}%
+\special{pa 28 -111}%
+\special{fp}%
+\special{pn 8}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
diff --git a/texmf-dist/tex/latex/ketpic/ketpic2e.sty b/texmf-dist/tex/latex/ketpic/ketpic2e.sty
new file mode 100644
index 00000000..b9b3d3ea
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketpic2e.sty
@@ -0,0 +1,680 @@
+%Copyright (C) 2014 Setsuo Takato, KETpic developer team
+%*
+%* This program is free software: you can redistribute it and/or modify
+%* it under the terms of the GNU General Public License as published by
+%* the Free Software Foundation; either version 3 of the License, or
+%* (at your option) any later version.
+%*
+%* This program is distributed in the hope that it will be useful,
+%* but WITHOUT ANY WARRANTY; without even the implied warranty of
+%* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%* GNU General Public License for more details.
+%*
+%* You should have received a copy of the GNU General Public License
+%* along with this program. If not, see <http://www.gnu.org/licenses/>
+% 2016.12.08
+% NEarrow,..., NERarrow,... added
+% argument(option)=size
+% 2016.04.07
+% ketcindy, selarrow, serarrow, nelarrow, nerarrow
+% 2010.09.17 %
+%
+\newcounter{ketpicctra}%
+\newcounter{ketpicctrb}%
+\newcounter{ketpicctrc}%
+\newcounter{ketpicctrd}%
+\newcounter{ketpicctre}%
+\newcounter{ketpicctrf}%
+\newcounter{ketpicctrg}%
+\newcounter{ketpicctrh}%
+\newcounter{ketpicctri}%
+\newcounter{ketpicctrj}%
+\def\ketpic{%
+{K\kern-.20em\lower.5ex\hbox{E}\kern-.125em{Tpic}}%
+%
+}%
+\def\ketcindy{{K\kern-.20em%
+\lower.5ex\hbox{E}\kern-.125em{TCindy}}}%
+\def\KeTpic{\ketpic}%
+\def\KeTCindy{\ketcindy}%
+\newlength{\Width}%
+\newlength{\Height}%
+\newlength{\Depth}%
+\newcommand{\Ltab}[2]{%
+\settowidth{\Width}{#2}%
+\setlength{\Width}{-\Width}%
+\addtolength{\Width}{#1}%
+#2\hspace{\Width}\mbox{}%
+%
+}%
+\newcommand{\Rtab}[2]{%
+\settowidth{\Width}{#2}%
+\setlength{\Width}{-\Width}%
+\addtolength{\Width}{#1}%
+\hspace*{\Width}#2\mbox{}%
+%
+}%
+\newcommand{\Ctab}[2]{%
+\settowidth{\Width}{#2}%
+\setlength{\Width}{-\Width}%
+\addtolength{\Width}{#1}%
+\setlength{\Width}{0.5\Width}%
+\hspace*{\Width}#2\hspace{\Width}\mbox{}%
+%
+}%
+\newcommand{\vbackward}[1]{%
+\settoheight{\Height}{#1}%
+\vspace*{-\Height}%
+%
+}%
+\newcommand{\vforward}[1]{%
+\settoheight{\Height}{#1}%
+\vspace*{\Height}%
+%
+}%
+\newcommand{\usepack}{%
+\usepackage{amsmath,amssymb}%
+\usepackage{graphicx}%
+\usepackage{color}%
+%
+}%
+\newcommand{\setmargin}[4]{%
+\setlength{\oddsidemargin}{-25.4mm}%
+\addtolength{\oddsidemargin}{#1 mm}%
+\setlength{\textwidth}{\paperwidth}%
+\addtolength{\textwidth}{-#1 mm}%
+\addtolength{\textwidth}{-#2 mm}%
+\setlength{\headheight}{0mm}%
+\setlength{\headsep}{0mm}%
+\setlength{\topmargin}{-25.4mm}%
+\addtolength{\topmargin}{#3 mm}%
+\setlength{\textheight}{\paperheight}%
+\addtolength{\textheight}{-#3 mm}%
+\addtolength{\textheight}{-#4 mm}%
+%
+}%
+\newcommand{\ketcalcwidth}[2][0]{%
+\settowidth{\Depth}{#2}%
+\setlength{\Width}{0\unitlength}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\addtolength{\Width}{\unitlength}%
+%
+{%
+\ifdim %
+\Width>\Depth %
+\addtocounter{ketpicctra}{6000}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<5000%
+\repeat%
+}%
+\addtocounter{ketpicctra}{-6000}%
+%
+{%
+\ifnum %
+#1>0 %
+\theketpicctra%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\ketcalcheight}[2][0]{%
+\settoheight{\Depth}{#2}%
+\setlength{\Height}{0\unitlength}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\addtolength{\Height}{\unitlength}%
+%
+{%
+\ifdim %
+\Height>\Depth %
+\addtocounter{ketpicctra}{6000}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<5000%
+\repeat%
+}%
+\addtocounter{ketpicctra}{-6000}%
+%
+{%
+\ifnum %
+#1>0 %
+\theketpicctra%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\ketcalcdepth}[2][0]{%
+\settodepth{\Width}{#2}%
+\setlength{\Depth}{0\unitlength}%
+\setcounter{ketpicctra}{0}%
+\setcounter{ketpicctra}{1}%
+\addtocounter{ketpicctra}{-1}%
+%
+{%
+\loop%
+\addtocounter{ketpicctra}{1}%
+\addtolength{\Depth}{\unitlength}%
+%
+{%
+\ifdim %
+\Depth>\Width %
+\addtocounter{ketpicctra}{5000}%
+%
+\fi%
+}%
+%
+\ifnum\theketpicctra<5000%
+\repeat%
+}%
+\addtocounter{ketpicctra}{-5000}%
+%
+{%
+\ifnum %
+#1>0 %
+\theketpicctra%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\ketcalcwh}[1]{%
+{\unitlength=0.1mm%
+\ketcalcwidth{#1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\divide\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\{\theketpicctrb.%
+\multiply\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\addtocounter{ketpicctra}{-\value{ketpicctrb}}%
+\theketpicctra\}\{%
+\ketcalcheight{#1}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\ketcalcdepth{#1}%
+\addtocounter{ketpicctra}{\value{ketpicctrb}}%
+\setcounter{ketpicctrb}{\value{ketpicctra}}%
+\divide\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\theketpicctrb.%
+\multiply\value{ketpicctrb} by 10%
+\addtocounter{ketpicctrb}{0}%
+\addtocounter{ketpicctra}{-\value{ketpicctrb}}%
+\theketpicctra\}%
+%
+}%
+%
+}%
+\newcommand{\dangerbendmark}[1][1]{%
+\def\tmpcontents{%
+{\unitlength=0.911mm%
+\begin{picture}%
+( 3.85104, 4.34364)( 3.18983, 4.86836)%
+\linethickness{0.008in}%
+%
+\polygon*(6.38428,5.56800)(5.81904,5.70600)(5.36381,5.80921)(5.00440,5.88297)(4.72661,5.93266)%
+(4.51623,5.96364)(4.35907,5.98127)(4.24093,5.99092)(4.14761,5.99794)(4.06496,6.00771)%
+(3.98898,6.02518)(3.93831,6.05448)(3.93468,6.09958)(3.99978,6.16449)(4.15166,6.25226)%
+(4.38123,6.35904)(4.66723,6.47789)(4.98836,6.60185)(5.32339,6.72405)(5.65390,6.84014)%
+(5.96513,6.94907)(6.24257,7.05003)(6.47172,7.14220)(6.64276,7.22661)(6.76463,7.31164)%
+(6.85098,7.40753)(6.91544,7.52450)(6.97077,7.67186)(7.01627,7.84507)(7.04088,8.02894)%
+(7.03329,8.20802)(6.98222,8.36687)(6.88214,8.49624)(6.74033,8.60073)(6.56582,8.68676)%
+(6.36764,8.76079)(6.15404,8.82871)(5.92745,8.89231)(5.68774,8.95154)(5.43473,9.00634)%
+(5.16827,9.05667)(4.88820,9.10245)(4.59435,9.14364)(4.28655,9.18018)(3.96466,9.21200)%
+(3.94280,9.03709)(3.92093,8.86218)(3.89907,8.68727)(3.87720,8.51236)(4.48711,8.36772)%
+(4.97210,8.26299)(5.34677,8.19129)(5.62571,8.14578)(5.82354,8.11957)(5.95483,8.10581)%
+(6.03419,8.09764)(6.07621,8.08818)(6.09549,8.07060)(6.10389,8.04155)(6.10727,8.00555)%
+(6.11068,7.96817)(6.11914,7.93497)(6.13500,7.91026)(6.14070,7.88899)(6.10976,7.86195)%
+(6.01565,7.81987)(5.83248,7.75368)(5.55828,7.66096)(5.22221,7.54790)(4.85551,7.42131)%
+(4.48940,7.28796)(4.15131,7.15361)(3.85341,7.01988)(3.60406,6.88734)(3.41163,6.75659)%
+(3.28362,6.62808)(3.21473,6.50035)(3.18983,6.37048)(3.19352,6.23551)(3.21044,6.09250)%
+(3.23419,5.94135)(3.27834,5.78836)(3.35914,5.64069)(3.49285,5.50548)(3.69311,5.38901)%
+(3.95396,5.29113)(4.26069,5.20877)(4.59856,5.13885)(4.95280,5.07831)(5.30867,5.02406)%
+(5.65141,4.97304)(5.96628,4.92216)(6.23852,4.86836)(6.27496,5.02870)(6.31140,5.18904)%
+(6.34784,5.34938)(6.38428,5.50972)(6.38428,5.56800)\linethickness{0.008in}%
+\polyline(6.38428,5.56800)(5.81904,5.70600)(5.36381,5.80921)(5.00440,5.88297)(4.72661,5.93266)%
+(4.51623,5.96364)(4.35907,5.98127)(4.24093,5.99092)(4.14761,5.99794)(4.06496,6.00771)%
+(3.98898,6.02518)(3.93831,6.05448)(3.93468,6.09958)(3.99978,6.16449)(4.15166,6.25226)%
+(4.38123,6.35904)(4.66723,6.47789)(4.98836,6.60185)(5.32339,6.72405)(5.65390,6.84014)%
+(5.96513,6.94907)(6.24257,7.05003)(6.47172,7.14220)(6.64276,7.22661)(6.76463,7.31164)%
+(6.85098,7.40753)(6.91544,7.52450)(6.97077,7.67186)(7.01627,7.84507)(7.04088,8.02894)%
+(7.03329,8.20802)(6.98222,8.36687)(6.88214,8.49624)(6.74033,8.60073)(6.56582,8.68676)%
+(6.36764,8.76079)(6.15404,8.82871)(5.92745,8.89231)(5.68774,8.95154)(5.43473,9.00634)%
+(5.16827,9.05667)(4.88820,9.10245)(4.59435,9.14364)(4.28655,9.18018)(3.96466,9.21200)%
+\polyline(3.96466,9.21200)(3.94280,9.03709)(3.92093,8.86218)(3.89907,8.68727)(3.87720,8.51236)%
+\polyline(3.87720,8.51236)(4.48711,8.36772)(4.97210,8.26299)(5.34677,8.19129)(5.62571,8.14578)%
+(5.82354,8.11957)(5.95483,8.10581)(6.03419,8.09764)(6.07621,8.08818)(6.09549,8.07060)%
+(6.10389,8.04155)(6.10727,8.00555)(6.11068,7.96817)(6.11914,7.93497)(6.13500,7.91026)%
+(6.14070,7.88899)(6.10976,7.86195)(6.01565,7.81987)(5.83248,7.75368)(5.55828,7.66096)%
+(5.22221,7.54790)(4.85551,7.42131)(4.48940,7.28796)(4.15131,7.15361)(3.85341,7.01988)%
+(3.60406,6.88734)(3.41163,6.75659)(3.28362,6.62808)(3.21473,6.50035)(3.18983,6.37048)%
+(3.19352,6.23551)(3.21044,6.09250)(3.23419,5.94135)(3.27834,5.78836)(3.35914,5.64069)%
+(3.49285,5.50548)(3.69311,5.38901)(3.95396,5.29113)(4.26069,5.20877)(4.59856,5.13885)%
+(4.95280,5.07831)(5.30867,5.02406)(5.65141,4.97304)(5.96628,4.92216)(6.23852,4.86836)%
+\polyline(6.23852,4.86836)(6.27496,5.02870)(6.31140,5.18904)(6.34784,5.34938)(6.38428,5.50972)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+\scalebox{#1}{\tmpcontents}%
+%
+}%
+\newcommand{\cautionmark}[1][1]{%
+\scalebox{#1}{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.60000, 3.98372)( -2.30000, 0.00000)%
+\linethickness{0.008in}%
+%
+\linethickness{0.012 in}%
+\polyline(-2.30000,0.00000)(2.30000,0.00000)(0.00000,3.98372)(-2.30000,0.00000)%
+%
+\linethickness{0.008in}%
+\linethickness{0.002in}%
+\polyline(0.30000,0.55000)(0.28532,0.64271)(0.24271,0.72634)(0.17634,0.79271)(0.09271,0.83532)%
+(0.00000,0.85000)(-0.09271,0.83532)(-0.17634,0.79271)(-0.24271,0.72634)(-0.28532,0.64271)%
+(-0.30000,0.55000)(-0.28532,0.45729)(-0.24271,0.37366)(-0.17634,0.30729)(-0.09271,0.26468)%
+(-0.00000,0.25000)(0.09271,0.26468)(0.17634,0.30729)(0.24271,0.37366)(0.28532,0.45729)%
+(0.30000,0.55000)%
+%
+\polyline(0.00000,1.20000)(0.09619,1.23889)(0.18421,1.33825)(0.25763,1.47869)(0.31127,1.64158)%
+(0.34897,1.81375)(0.37862,1.98450)(0.40754,2.14344)(0.43405,2.28492)(0.44959,2.40694)%
+(0.44551,2.50766)(0.41740,2.58913)(0.36636,2.65840)(0.29386,2.72283)(0.20281,2.78402)%
+(0.09933,2.83074)(-0.01000,2.85000)(-0.11855,2.83292)(-0.21932,2.78698)(-0.30522,2.72371)%
+(-0.36996,2.65337)(-0.41290,2.57639)(-0.43593,2.48886)(-0.44109,2.38691)(-0.43200,2.26815)%
+(-0.41354,2.13130)(-0.39047,1.97528)(-0.36270,1.80472)(-0.32377,1.63171)(-0.26686,1.46885)%
+(-0.18930,1.33045)(-0.09771,1.23462)(0.00000,1.20000)%
+%
+\linethickness{0.008in}%
+\polygon*(0.30000,0.55000)(0.28532,0.64271)(0.24271,0.72634)(0.17634,0.79271)(0.09271,0.83532)%
+(0.00000,0.85000)(-0.09271,0.83532)(-0.17634,0.79271)(-0.24271,0.72634)(-0.28532,0.64271)%
+(-0.30000,0.55000)(-0.28532,0.45729)(-0.24271,0.37366)(-0.17634,0.30729)(-0.09271,0.26468)%
+(-0.00000,0.25000)(0.09271,0.26468)(0.17634,0.30729)(0.24271,0.37366)(0.28532,0.45729)%
+(0.30000,0.55000)\polygon*(0.00000,1.20000)(0.09619,1.23889)(0.18421,1.33825)(0.25763,1.47869)(0.31127,1.64158)%
+(0.34897,1.81375)(0.37862,1.98450)(0.40754,2.14344)(0.43405,2.28492)(0.44959,2.40694)%
+(0.44551,2.50766)(0.41740,2.58913)(0.36636,2.65840)(0.29386,2.72283)(0.20281,2.78402)%
+(0.09933,2.83074)(-0.01000,2.85000)(-0.11855,2.83292)(-0.21932,2.78698)(-0.30522,2.72371)%
+(-0.36996,2.65337)(-0.41290,2.57639)(-0.43593,2.48886)(-0.44109,2.38691)(-0.43200,2.26815)%
+(-0.41354,2.13130)(-0.39047,1.97528)(-0.36270,1.80472)(-0.32377,1.63171)(-0.26686,1.46885)%
+(-0.18930,1.33045)(-0.09771,1.23462)(0.00000,1.20000)\end{picture}}%%
+}%
+%
+}%
+\newcommand{\circlemark}[2][8]{%
+\scalebox{#2}{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.00000, 4.00000)( -2.00000, -2.00000)%
+\linethickness{0.008in}%
+%
+\linethickness{#1 in}%
+\polyline(2.00000,0.00000)(1.98423,0.25067)(1.93717,0.49738)(1.85955,0.73625)(1.75261,0.96351)%
+(1.61803,1.17557)(1.45794,1.36909)(1.27485,1.54103)(1.07165,1.68866)(0.85156,1.80965)%
+(0.61803,1.90211)(0.37476,1.96457)(0.12558,1.99605)(-0.12558,1.99605)(-0.37476,1.96457)%
+(-0.61803,1.90211)(-0.85156,1.80965)(-1.07165,1.68866)(-1.27485,1.54103)(-1.45794,1.36909)%
+(-1.61803,1.17557)(-1.75261,0.96351)(-1.85955,0.73625)(-1.93717,0.49738)(-1.98423,0.25067)%
+(-2.00000,-0.00000)(-1.98423,-0.25067)(-1.93717,-0.49738)(-1.85955,-0.73625)(-1.75261,-0.96351)%
+(-1.61803,-1.17557)(-1.45794,-1.36909)(-1.27485,-1.54103)(-1.07165,-1.68866)(-0.85156,-1.80965)%
+(-0.61803,-1.90211)(-0.37476,-1.96457)(-0.12558,-1.99605)(0.12558,-1.99605)(0.37476,-1.96457)%
+(0.61803,-1.90211)(0.85156,-1.80965)(1.07165,-1.68866)(1.27485,-1.54103)(1.45794,-1.36909)%
+(1.61803,-1.17557)(1.75261,-0.96351)(1.85955,-0.73625)(1.93717,-0.49738)(1.98423,-0.25067)%
+(2.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+\newcommand{\circleshade}[3][8]{%
+\scalebox{#2}{%
+{\unitlength=1mm%
+\begin{picture}%
+( 4.00000, 4.00000)( -2.00000, -2.00000)%
+\linethickness{0.008in}%
+%
+\linethickness{#1 in}%
+{\color[cmyk]{,,,}%
+\polygon*(2.00000,0.00000)(1.98423,0.25067)(1.93717,0.49738)(1.85955,0.73625)(1.75261,0.96351)%
+(1.61803,1.17557)(1.45794,1.36909)(1.27485,1.54103)(1.07165,1.68866)(0.85156,1.80965)%
+(0.61803,1.90211)(0.37476,1.96457)(0.12558,1.99605)(-0.12558,1.99605)(-0.37476,1.96457)%
+(-0.61803,1.90211)(-0.85156,1.80965)(-1.07165,1.68866)(-1.27485,1.54103)(-1.45794,1.36909)%
+(-1.61803,1.17557)(-1.75261,0.96351)(-1.85955,0.73625)(-1.93717,0.49738)(-1.98423,0.25067)%
+(-2.00000,-0.00000)(-1.98423,-0.25067)(-1.93717,-0.49738)(-1.85955,-0.73625)(-1.75261,-0.96351)%
+(-1.61803,-1.17557)(-1.45794,-1.36909)(-1.27485,-1.54103)(-1.07165,-1.68866)(-0.85156,-1.80965)%
+(-0.61803,-1.90211)(-0.37476,-1.96457)(-0.12558,-1.99605)(0.12558,-1.99605)(0.37476,-1.96457)%
+(0.61803,-1.90211)(0.85156,-1.80965)(1.07165,-1.68866)(1.27485,-1.54103)(1.45794,-1.36909)%
+(1.61803,-1.17557)(1.75261,-0.96351)(1.85955,-0.73625)(1.93717,-0.49738)(1.98423,-0.25067)%
+(2.00000,0.00000)
+}%
+\polyline(2.00000,0.00000)(1.98423,0.25067)(1.93717,0.49738)(1.85955,0.73625)(1.75261,0.96351)%
+(1.61803,1.17557)(1.45794,1.36909)(1.27485,1.54103)(1.07165,1.68866)(0.85156,1.80965)%
+(0.61803,1.90211)(0.37476,1.96457)(0.12558,1.99605)(-0.12558,1.99605)(-0.37476,1.96457)%
+(-0.61803,1.90211)(-0.85156,1.80965)(-1.07165,1.68866)(-1.27485,1.54103)(-1.45794,1.36909)%
+(-1.61803,1.17557)(-1.75261,0.96351)(-1.85955,0.73625)(-1.93717,0.49738)(-1.98423,0.25067)%
+(-2.00000,-0.00000)(-1.98423,-0.25067)(-1.93717,-0.49738)(-1.85955,-0.73625)(-1.75261,-0.96351)%
+(-1.61803,-1.17557)(-1.45794,-1.36909)(-1.27485,-1.54103)(-1.07165,-1.68866)(-0.85156,-1.80965)%
+(-0.61803,-1.90211)(-0.37476,-1.96457)(-0.12558,-1.99605)(0.12558,-1.99605)(0.37476,-1.96457)%
+(0.61803,-1.90211)(0.85156,-1.80965)(1.07165,-1.68866)(1.27485,-1.54103)(1.45794,-1.36909)%
+(1.61803,-1.17557)(1.75261,-0.96351)(1.85955,-0.73625)(1.93717,-0.49738)(1.98423,-0.25067)%
+(2.00000,0.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%%% bendingarrow2e.sty 2016-12-9 7:43
+%%% bendingarrow2e.sce 2016-12-9 7:42
+\newcommand{\NEarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(2.00000,2.00000)(7.00000,7.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(6.54625,4.91062)(8.00000,8.00000)(4.91062,6.54625)(6.18275,6.18275)(6.54625,4.91062)%
+\linethickness{0.001in}%
+\polyline(6.54625,4.91062)(8.00000,8.00000)(4.91062,6.54625)(6.18275,6.18275)(6.54625,4.91062)%
+(8.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SEarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(2.00000,8.00000)(7.00000,3.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(4.91062,3.45375)(8.00000,2.00000)(6.54625,5.08938)(6.18275,3.81725)(4.91062,3.45375)%
+\linethickness{0.001in}%
+\polyline(4.91062,3.45375)(8.00000,2.00000)(6.54625,5.08938)(6.18275,3.81725)(4.91062,3.45375)%
+(8.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NWarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(8.00000,2.00000)(3.00000,7.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(5.08938,6.54625)(2.00000,8.00000)(3.45375,4.91062)(3.81725,6.18275)(5.08938,6.54625)%
+\linethickness{0.001in}%
+\polyline(5.08938,6.54625)(2.00000,8.00000)(3.45375,4.91062)(3.81725,6.18275)(5.08938,6.54625)%
+(2.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SWarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(8.00000,8.00000)(3.00000,3.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(3.45375,5.08938)(2.00000,2.00000)(5.08938,3.45375)(3.81725,3.81725)(3.45375,5.08938)%
+\linethickness{0.001in}%
+\polyline(3.45375,5.08938)(2.00000,2.00000)(5.08938,3.45375)(3.81725,3.81725)(3.45375,5.08938)%
+(2.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NELarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(2.00000,2.00000)(2.41092,2.01409)(2.81990,2.05628)(3.22504,2.12639)(3.62443,2.22408)%
+(4.01618,2.34889)(4.39847,2.50024)(4.76950,2.67742)(5.12752,2.87959)(5.47085,3.10580)%
+(5.79789,3.35500)(6.10709,3.62601)(6.39700,3.91756)(6.66627,4.22827)(6.91363,4.55671)%
+(7.13791,4.90131)(7.33806,5.26046)(7.51315,5.63247)(7.66235,6.01561)(7.78496,6.40806)%
+(7.88040,6.80798)%
+%
+\linethickness{0.008in}%
+\polygon*(8.26407,4.59590)(8.00000,8.00000)(6.03361,5.20877)(7.31907,5.52187)(8.26407,4.59590)%
+\linethickness{0.001in}%
+\polyline(8.26407,4.59590)(8.00000,8.00000)(6.03361,5.20877)(7.31907,5.52187)(8.26407,4.59590)%
+(8.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NERarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(6.80798,7.88040)(6.40806,7.78496)(6.01561,7.66235)(5.63247,7.51315)(5.26046,7.33806)%
+(4.90131,7.13791)(4.55671,6.91363)(4.22827,6.66627)(3.91756,6.39700)(3.62601,6.10709)%
+(3.35500,5.79789)(3.10580,5.47085)(2.87959,5.12752)(2.67742,4.76950)(2.50024,4.39847)%
+(2.34889,4.01618)(2.22408,3.62443)(2.12639,3.22504)(2.05628,2.81990)(2.01409,2.41092)%
+(2.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(5.19160,6.05822)(8.00000,8.00000)(4.59835,8.29398)(5.51598,7.34088)(5.19160,6.05822)%
+\linethickness{0.001in}%
+\polyline(5.19160,6.05822)(8.00000,8.00000)(4.59835,8.29398)(5.51598,7.34088)(5.19160,6.05822)%
+(8.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SELarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(2.00000,8.00000)(2.01409,7.58908)(2.05628,7.18010)(2.12639,6.77496)(2.22408,6.37557)%
+(2.34889,5.98382)(2.50024,5.60153)(2.67742,5.23050)(2.87959,4.87248)(3.10580,4.52915)%
+(3.35500,4.20211)(3.62601,3.89291)(3.91756,3.60300)(4.22827,3.33373)(4.55671,3.08637)%
+(4.90131,2.86209)(5.26046,2.66194)(5.63247,2.48685)(6.01561,2.33765)(6.40806,2.21504)%
+(6.80798,2.11960)%
+%
+\linethickness{0.008in}%
+\polygon*(4.59835,1.70602)(8.00000,2.00000)(5.19160,3.94178)(5.51598,2.65912)(4.59835,1.70602)%
+\linethickness{0.001in}%
+\polyline(4.59835,1.70602)(8.00000,2.00000)(5.19160,3.94178)(5.51598,2.65912)(4.59835,1.70602)%
+(8.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SERarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(7.88040,3.19202)(7.78496,3.59194)(7.66235,3.98439)(7.51315,4.36753)(7.33806,4.73954)%
+(7.13791,5.09869)(6.91363,5.44329)(6.66627,5.77173)(6.39700,6.08244)(6.10709,6.37399)%
+(5.79789,6.64500)(5.47085,6.89420)(5.12752,7.12041)(4.76950,7.32258)(4.39847,7.49976)%
+(4.01618,7.65111)(3.62443,7.77592)(3.22504,7.87361)(2.81990,7.94372)(2.41092,7.98591)%
+(2.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(6.03361,4.79123)(8.00000,2.00000)(8.26407,5.40410)(7.31907,4.47813)(6.03361,4.79123)%
+\linethickness{0.001in}%
+\polyline(6.03361,4.79123)(8.00000,2.00000)(8.26407,5.40410)(7.31907,4.47813)(6.03361,4.79123)%
+(8.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SWRarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(3.19202,2.11960)(3.59194,2.21504)(3.98439,2.33765)(4.36753,2.48685)(4.73954,2.66194)%
+(5.09869,2.86209)(5.44329,3.08637)(5.77173,3.33373)(6.08244,3.60300)(6.37399,3.89291)%
+(6.64500,4.20211)(6.89420,4.52915)(7.12041,4.87248)(7.32258,5.23050)(7.49976,5.60153)%
+(7.65111,5.98382)(7.77592,6.37557)(7.87361,6.77496)(7.94372,7.18010)(7.98591,7.58908)%
+(8.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(4.80840,3.94178)(2.00000,2.00000)(5.40165,1.70602)(4.48402,2.65912)(4.80840,3.94178)%
+\linethickness{0.001in}%
+\polyline(4.80840,3.94178)(2.00000,2.00000)(5.40165,1.70602)(4.48402,2.65912)(4.80840,3.94178)%
+(2.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\SWLarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(8.00000,8.00000)(7.58908,7.98591)(7.18010,7.94372)(6.77496,7.87361)(6.37557,7.77592)%
+(5.98382,7.65111)(5.60153,7.49976)(5.23050,7.32258)(4.87248,7.12041)(4.52915,6.89420)%
+(4.20211,6.64500)(3.89291,6.37399)(3.60300,6.08244)(3.33373,5.77173)(3.08637,5.44329)%
+(2.86209,5.09869)(2.66194,4.73954)(2.48685,4.36753)(2.33765,3.98439)(2.21504,3.59194)%
+(2.11960,3.19202)%
+%
+\linethickness{0.008in}%
+\polygon*(1.73593,5.40410)(2.00000,2.00000)(3.96639,4.79123)(2.68093,4.47813)(1.73593,5.40410)%
+\linethickness{0.001in}%
+\polyline(1.73593,5.40410)(2.00000,2.00000)(3.96639,4.79123)(2.68093,4.47813)(1.73593,5.40410)%
+(2.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NWRarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(2.11960,6.80798)(2.21504,6.40806)(2.33765,6.01561)(2.48685,5.63247)(2.66194,5.26046)%
+(2.86209,4.90131)(3.08637,4.55671)(3.33373,4.22827)(3.60300,3.91756)(3.89291,3.62601)%
+(4.20211,3.35500)(4.52915,3.10580)(4.87248,2.87959)(5.23050,2.67742)(5.60153,2.50024)%
+(5.98382,2.34889)(6.37557,2.22408)(6.77496,2.12639)(7.18010,2.05628)(7.58908,2.01409)%
+(8.00000,2.00000)%
+%
+\linethickness{0.008in}%
+\polygon*(3.96639,5.20877)(2.00000,8.00000)(1.73593,4.59590)(2.68093,5.52187)(3.96639,5.20877)%
+\linethickness{0.001in}%
+\polyline(3.96639,5.20877)(2.00000,8.00000)(1.73593,4.59590)(2.68093,5.52187)(3.96639,5.20877)%
+(2.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
+\newcommand{\NWLarrow}[1][1]{%
+\scalebox{#1}{\raisebox{-2.5pt}{%
+{\unitlength=1pt%
+\begin{picture}%
+( 10.00000, 10.00000)( 0.00000, 0.00000)%
+\linethickness{0.008in}%
+%
+\polyline(8.00000,2.00000)(7.98591,2.41092)(7.94372,2.81990)(7.87361,3.22504)(7.77592,3.62443)%
+(7.65111,4.01618)(7.49976,4.39847)(7.32258,4.76950)(7.12041,5.12752)(6.89420,5.47085)%
+(6.64500,5.79789)(6.37399,6.10709)(6.08244,6.39700)(5.77173,6.66627)(5.44329,6.91363)%
+(5.09869,7.13791)(4.73954,7.33806)(4.36753,7.51315)(3.98439,7.66235)(3.59194,7.78496)%
+(3.19202,7.88040)%
+%
+\linethickness{0.008in}%
+\polygon*(5.40165,8.29398)(2.00000,8.00000)(4.80840,6.05822)(4.48402,7.34088)(5.40165,8.29398)%
+\linethickness{0.001in}%
+\polyline(5.40165,8.29398)(2.00000,8.00000)(4.80840,6.05822)(4.48402,7.34088)(5.40165,8.29398)%
+(2.00000,8.00000)%
+%
+\linethickness{0.008in}%
+\end{picture}}%%
+}%
+%
+}%
+%
+}%
diff --git a/texmf-dist/tex/latex/ketpic/ketslide.sty b/texmf-dist/tex/latex/ketpic/ketslide.sty
new file mode 100644
index 00000000..b8ec630b
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketslide.sty
@@ -0,0 +1,151 @@
+%Copyright (C) 2014 Setsuo Takato, KETpic developer team
+%*
+%* This program is free software: you can redistribute it and/or modify
+%* it under the terms of the GNU General Public License as published by
+%* the Free Software Foundation; either version 3 of the License, or
+%* (at your option) any later version.
+%*
+%* This program is distributed in the hope that it will be useful,
+%* but WITHOUT ANY WARRANTY; without even the implied warranty of
+%* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%* GNU General Public License for more details.
+%*
+%* You should have received a copy of the GNU General Public License
+%* along with this program. If not, see <http://www.gnu.org/licenses/>
+%%% ketslide.sty 2017-1-9 11:50
+%%% ketslide170109.sce 2017-1-9 11:50
+% 2017.01.09 ketslide%
+% \documentclass[landscape,10pt]{jarticle}%
+% or \documentclass[landscape,10pt]{article}%
+%\special{papersize=297mm,210mm}%
+\mag=2000%
+\newcommand{\ketmarginJ}{%
+\setmargin{25}{150}{15}{110}%
+%
+}%
+\newcommand{\ketmarginE}{%
+\setmargin{25}{135}{15}{115}%
+%
+}%
+\newcommand{\ketslideinit}{%
+\definecolor{ketshadowclr}{cmyk}{0,0,0,0.5}%
+\def\ketcletter{black}%
+\def\ketcbox{black}%
+\def\ketdbox{}%
+\def\ketcframe{black}%
+\def\ketcshadow{ketshadowclr}%
+\def\ketdshadow{}%
+\def\ketslidew{130}%
+\def\slidetitlex{6}%
+\def\slidetitlesize{2}%
+\def\mketcletter{black}%
+\def\mketcbox{white}%
+\def\mketdbox{}%
+\def\mketcframe{white}%
+\def\mslidetitlex{62}%
+\def\mslidetitlesize{3}%
+%
+}%
+\newcommand{\newnewslide}[2][7]{%
+\def\slidetitle{{\color{\ketcletter}#2}}%
+{\unitlength=1mm%
+\ketcalcwidth{#2}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\popframe{\slidetitlex}{#1}%
+{\ketdshadow}{\ketcshadow}%
+{\ketdbox}{\ketcbox}{\ketcframe}%
+{\scalebox{\slidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\newslide}[2][7]{%
+\newpage%
+\def\slidetitle{{\color{\ketcletter}#2}}%
+{\unitlength=1mm%
+\ketcalcwidth{#2}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\popframe{\slidetitlex}{#1}%
+{\ketdshadow}{\ketcshadow}%
+{\ketdbox}{\ketcbox}{\ketcframe}%
+{\scalebox{\slidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\sameslide}[1][7]{%
+\newpage%
+\addtocounter{page}{-1}%
+\ketcalcwidth{\slidetitle}%
+{\unitlength=1mm%
+\ketcalcwidth{\slidetitle}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\popframe{\slidetitlex}{#1}%
+{\ketdshadow}{\ketcshadow}%
+{\ketdbox}{\ketcbox}{\ketcframe}%
+{\scalebox{\slidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\mainslide}[2][35]{%
+\newpage%
+\def\slidetitle{{\color{\mketcletter}#2}}%
+{\unitlength=1mm%
+\ketcalcwidth{#2}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\colorframes{\mslidetitlex}{#1}%
+{\mketdbox}{\mketcbox}{\mketcframe}%
+{\scalebox{\mslidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\mainsameslide}[1][35]{%
+\newpage%
+\addtocounter{page}{-1}%
+{\unitlength=1mm%
+\ketcalcwidth{\slidetitle}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\colorframes{\mslidetitlex}{#1}%
+{\mketdbox}{\mketcbox}{\mketcframe}%
+{\scalebox{\mslidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
diff --git a/texmf-dist/tex/latex/ketpic/ketslide2.sty b/texmf-dist/tex/latex/ketpic/ketslide2.sty
new file mode 100644
index 00000000..d6929592
--- /dev/null
+++ b/texmf-dist/tex/latex/ketpic/ketslide2.sty
@@ -0,0 +1,151 @@
+%Copyright (C) 2014 Setsuo Takato, KETpic developer team
+%*
+%* This program is free software: you can redistribute it and/or modify
+%* it under the terms of the GNU General Public License as published by
+%* the Free Software Foundation; either version 3 of the License, or
+%* (at your option) any later version.
+%*
+%* This program is distributed in the hope that it will be useful,
+%* but WITHOUT ANY WARRANTY; without even the implied warranty of
+%* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+%* GNU General Public License for more details.
+%*
+%* You should have received a copy of the GNU General Public License
+%* along with this program. If not, see <http://www.gnu.org/licenses/>
+%%% ketslide.sty 2017-1-9 11:50
+%%% ketslide170109.sce 2017-1-9 11:50
+% 2017.01.09 ketslide%
+% \documentclass[landscape,10pt]{jarticle}%
+% or \documentclass[landscape,10pt]{article}%
+%\special{papersize=297mm,210mm}%
+\mag=2000%
+\newcommand{\ketmarginJ}{%
+\setmargin{25}{150}{15}{110}%
+%
+}%
+\newcommand{\ketmarginE}{%
+\setmargin{25}{135}{15}{115}%
+%
+}%
+\newcommand{\ketslideinit}{%
+\definecolor{ketshadowclr}{cmyk}{0,0,0,0.5}%
+\def\ketcletter{black}%
+\def\ketcbox{black}%
+\def\ketdbox{}%
+\def\ketcframe{black}%
+\def\ketcshadow{ketshadowclr}%
+\def\ketdshadow{}%
+\def\ketslidew{130}%
+\def\slidetitlex{6}%
+\def\slidetitlesize{2}%
+\def\mketcletter{black}%
+\def\mketcbox{white}%
+\def\mketdbox{}%
+\def\mketcframe{white}%
+\def\mslidetitlex{62}%
+\def\mslidetitlesize{3}%
+%
+}%
+\newcommand{\newnewslide}[2][7]{%
+\def\slidetitle{{\color{\ketcletter}#2}}%
+{\unitlength=1mm%
+\ketcalcwidth{#2}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\popframe{\slidetitlex}{#1}%
+{\ketdshadow}{\ketcshadow}%
+{\ketdbox}{\ketcbox}{\ketcframe}%
+{\scalebox{\slidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\newslide}[2][7]{%
+%\newpage%
+\def\slidetitle{{\color{\ketcletter}#2}}%
+{\unitlength=1mm%
+\ketcalcwidth{#2}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\popframe{\slidetitlex}{#1}%
+{\ketdshadow}{\ketcshadow}%
+{\ketdbox}{\ketcbox}{\ketcframe}%
+{\scalebox{\slidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\sameslide}[1][7]{%
+%\newpage%
+\addtocounter{page}{-1}%
+\ketcalcwidth{\slidetitle}%
+{\unitlength=1mm%
+\ketcalcwidth{\slidetitle}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\popframe{\slidetitlex}{#1}%
+{\ketdshadow}{\ketcshadow}%
+{\ketdbox}{\ketcbox}{\ketcframe}%
+{\scalebox{\slidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\mainslide}[2][35]{%
+%\newpage%
+\def\slidetitle{{\color{\mketcletter}#2}}%
+{\unitlength=1mm%
+\ketcalcwidth{#2}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\colorframes{\mslidetitlex}{#1}%
+{\mketdbox}{\mketcbox}{\mketcframe}%
+{\scalebox{\mslidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
+\newcommand{\mainsameslide}[1][35]{%
+%\newpage%
+\addtocounter{page}{-1}%
+{\unitlength=1mm%
+\ketcalcwidth{\slidetitle}%
+}%
+%
+{%
+\ifnum %
+\theketpicctra>1 %
+\begin{layer}{\ketslidew}{0}%
+\colorframes{\mslidetitlex}{#1}%
+{\mketdbox}{\mketcbox}{\mketcframe}%
+{\scalebox{\mslidetitlesize}{\slidetitle}}%
+\end{layer}%
+%
+\fi%
+}%
+%
+}%
diff --git a/tlpkg/tlpsrc/collection-contrib.tlpsrc b/tlpkg/tlpsrc/collection-contrib.tlpsrc
index 6047b3d0..adc3d1e0 100644
--- a/tlpkg/tlpsrc/collection-contrib.tlpsrc
+++ b/tlpkg/tlpsrc/collection-contrib.tlpsrc
@@ -31,6 +31,7 @@ depend getnonfreefonts
depend graphicxsp
depend imprintmtshadow
depend jj-game
+depend ketpic
depend lettergothic
depend literaturnaya
depend lmacs
diff --git a/tlpkg/tlpsrc/ketpic.tlpsrc b/tlpkg/tlpsrc/ketpic.tlpsrc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tlpkg/tlpsrc/ketpic.tlpsrc