diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/ketcindy/ketcindyfolder/scripts |
Initial commit
Diffstat (limited to 'graphics/ketcindy/ketcindyfolder/scripts')
86 files changed, 87578 insertions, 0 deletions
diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Small.png b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Small.png Binary files differnew file mode 100644 index 0000000000..8d491ce050 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Small.png diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smalla-h.png b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smalla-h.png Binary files differnew file mode 100644 index 0000000000..4578fb1eeb --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smalla-h.png diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smalli-o.png b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smalli-o.png Binary files differnew file mode 100644 index 0000000000..812d375534 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smalli-o.png diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smallp-w.png b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smallp-w.png Binary files differnew file mode 100644 index 0000000000..29c6c446f7 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smallp-w.png diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smallxyz.png b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smallxyz.png Binary files differnew file mode 100644 index 0000000000..a4e3a6a6cf --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/0Smallxyz.png diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/nsi.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/nsi.cdy Binary files differnew file mode 100644 index 0000000000..53393398b2 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/nsi.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/nsi.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/nsi.txt new file mode 100644 index 0000000000..3492d65da7 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/pcr.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/pcr.cdy Binary files differnew file mode 100644 index 0000000000..cc8891d01a --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/pcr.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/pcr.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/pcr.txt new file mode 100644 index 0000000000..76c429b5ca --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/qcr.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/qcr.cdy Binary files differnew file mode 100644 index 0000000000..ad28dd1572 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/qcr.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/qcr.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/qcr.txt new file mode 100644 index 0000000000..58a390e957 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/rcr.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/rcr.cdy Binary files differnew file mode 100644 index 0000000000..e5a02dd9f0 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/rcr.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/rcr.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/rcr.txt new file mode 100644 index 0000000000..f668aba45a --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/tsi.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/tsi.cdy Binary files differnew file mode 100644 index 0000000000..2fa6231c70 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/tsi.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/tsi.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/tsi.txt new file mode 100644 index 0000000000..6a51e1904b --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/xsi.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/xsi.cdy Binary files differnew file mode 100644 index 0000000000..428c783d42 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/xsi.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/xsi.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/xsi.txt new file mode 100644 index 0000000000..f16d04f0cb --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/ysi.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/ysi.cdy Binary files differnew file mode 100644 index 0000000000..ff075329b3 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/ysi.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/ysi.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/ysi.txt new file mode 100644 index 0000000000..83f6b3298e --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/zsi.cdy b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/zsi.cdy Binary files differnew file mode 100644 index 0000000000..3326d6add7 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/zsi.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/zsi.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/fontF/zsi.txt new file mode 100644 index 0000000000..f62925cd75 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r01.obj b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r01.obj new file mode 100644 index 0000000000..2edf33c599 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r02.obj b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r02.obj new file mode 100644 index 0000000000..85bbede8b6 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r03.obj b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r03.obj new file mode 100644 index 0000000000..c42c1d1f6e --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r04.obj b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r04.obj new file mode 100644 index 0000000000..56a0c40c7a --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r05.obj b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/r05.obj new file mode 100644 index 0000000000..fd013dc250 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/readme.pdf b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/readme.pdf Binary files differnew file mode 100644 index 0000000000..07633b0b1b --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/readme.pdf diff --git a/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/readme.txt b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/readme.txt new file mode 100644 index 0000000000..a4df939ef7 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/data/polyhedrons_obj/readme.txt @@ -0,0 +1,3 @@ +Put data files in obj format into this folder. +For example, dowload data from + http://mitani.cs.tsukuba.ac.jp/polyhedron/index.html diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.ini b/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.ini new file mode 100644 index 0000000000..b980a15437 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.ini @@ -0,0 +1,6 @@ +PathThead="(path of bin of TeX)"+"/"; +Dirhead="(path)"+"/scripts/ketcindy"; +Homehead="/Users"; +setdirectory(Dirhead); +import("setketcindy.txt"); +import("ketoutset.txt"); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.pl b/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.pl new file mode 100755 index 0000000000..e5efbc0c98 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.pl @@ -0,0 +1,203 @@ +#!/usr/bin/env perl +# +# KETCindy starter script +# +# (C) 2017-2018 Norbert Preining +# Licensed under the same license terms as ketpic itself, that is GPLv3+ +# + +use strict; +$^W = 1; + +use Digest::MD5; +use File::Copy; + +my $BinaryName = "Cinderella2"; +my $TemplateFile = "template1basic.cdy"; +my $devnull = "/dev/null"; +my $prog = "ketcindy"; +my $systype; +if (win32()) { + $systype = "Windows"; + $devnull = "nul"; +} else { + $systype = `uname`; + chomp($systype); +} +my $HOME = ($systype eq "Windows") ? $ENV{'USERPROFILE'} : $ENV{'HOME'}; +my $workdir ="$HOME/ketcindy"; + +my $cinderella; +if ($#ARGV >= 0) { + if ($ARGV[0] eq '-c') { + $cinderella = ($ARGV[1] ? $ARGV[1] : ""); + } +} else { + $cinderella = which($BinaryName); +} + +if (! "$cinderella") { + if ($systype eq 'Darwin') { + if (-r '/Applications/Cinderella2.app/Contents/MacOS/Cinderella2') { + $cinderella = '/Applications/Cinderella2.app/Contents/MacOS/Cinderella2'; + } + } elsif ($systype eq 'Windows') { + if (-f 'c:/Program Files (x86)/Cinderella/Cinderella2.exe') { + $cinderella = 'c:/Program Files (x86)/Cinderella/Cinderella2.exe'; + } + } +} + +if (! "$cinderella") { + die "$prog: Cannot find $BinaryName!"; +} + +if ( ! -x "$cinderella" ) { + die "$prog: Program $cinderella is not executable!"; +} + +# find real path +my $realcind = win32() ? $cinderella : `realpath "$cinderella"`; +chomp($realcind); +my ($cinddir, $bn) = dirname_and_basename($realcind); + +my $plugindir = ($systype eq 'Darwin') ? "$cinddir/../PlugIns" : "$cinddir/Plugins"; + +my $plugin = "$plugindir/KetCindyPlugin.jar"; +my $dirheadplugin = "$plugindir/ketcindy.ini"; + +# find Jar +chomp(my $KetCdyJar = `kpsewhich -format=texmfscripts KetCindyPlugin.jar`); +# search for template.cdy +chomp(my $TempCdy = `kpsewhich -format=texmfscripts $TemplateFile`); +chomp(my $DirHead=`kpsewhich -format=texmfscripts ketcindy.ini`); + +if (-z "$TempCdy" || -z "$KetCdyJar") { + die "$prog: Cannot find $TemplateFile via kpsewhich, is ketpic installed?"; +} + + +if ( ! -r "$plugin" || ! -r "$dirheadplugin" ) { + print "$prog: Cinderella is *NOT* set up for KETCindy!\n"; + print "$prog: You need to copy\n"; + print "$prog: $KetCdyJar\n"; + print "$prog: $DirHead\n"; + print "$prog: into\n"; + print "$prog: $plugindir\n"; + print "\n"; + exit(1); +} + +my $myjarmd = md5digest($KetCdyJar); +my $sysjarmd = md5digest($plugin); + +if ( $myjarmd ne $sysjarmd ) { + print "$prog: The installed version of the plugin in\n"; + print "$prog: $plugin\n"; + print "$prog: differs from the version shipped in\n"; + print "$prog: $KetCdyJar\n"; + print "$prog: You might need to update the former one with the later one!\n"; +} + +# print "DEBUG workdir =$workdir=\n"; +# print "DEBUG TemplateFile =$TemplateFile=\n"; +mkdir($workdir); +copy($TempCdy, $workdir) or die "$prog: Copy failed: $!"; + +# print "Exec $cinderella $workdir/$TemplateFile\n"; +if (win32()) { + # no idea why a normal call with exec did not find the template file + my $out = `"$cinderella" "$workdir/$TemplateFile"`; +} else { + exec($cinderella, "$workdir/$TemplateFile"); +} + + +sub md5digest { + my $file = shift; + open(FILE, $file) || die "$prog: open($file) failed: $!"; + binmode(FILE); + my $out = Digest::MD5->new->addfile(*FILE)->hexdigest; + close(FILE); + return $out; +} + +# taken from TeXLive::TLUtils.pm +sub win32 { + if ($^O =~ /^MSWin/i) { + return 1; + } else { + return 0; + } +} +sub which { + my ($prog) = @_; + my @PATH; + my $PATH = getenv('PATH'); + + if (&win32) { + my @PATHEXT = split (';', getenv('PATHEXT')); + push (@PATHEXT, ''); # in case argument contains an extension + @PATH = split (';', $PATH); + for my $dir (@PATH) { + for my $ext (@PATHEXT) { + if (-f "$dir/$prog$ext") { + return "$dir/$prog$ext"; + } + } + } + + } else { # not windows + @PATH = split (':', $PATH); + for my $dir (@PATH) { + if (-x "$dir/$prog") { + return "$dir/$prog"; + } + } + } + return ""; +} +sub dirname_and_basename { + my $path=shift; + my ($share, $base) = ("", ""); + if (win32()) { + $path=~s!\\!/!g; + } + # do not try to make sense of paths ending with /.. + return (undef, undef) if $path =~ m!/\.\.$!; + if ($path=~m!/!) { # dirname("foo/bar/baz") -> "foo/bar" + # eliminate `/.' path components + while ($path =~ s!/\./!/!) {}; + # UNC path? => first split in $share = //xxx/yy and $path = /zzzz + if (win32() and $path =~ m!^(//[^/]+/[^/]+)(.*)$!) { + ($share, $path) = ($1, $2); + if ($path =~ m!^/?$!) { + $path = $share; + $base = ""; + } elsif ($path =~ m!(/.*)/(.*)!) { + $path = $share.$1; + $base = $2; + } else { + $base = $path; + $path = $share; + } + return ($path, $base); + } + # not a UNC path + $path=~m!(.*)/(.*)!; # works because of greedy matching + return ((($1 eq '') ? '/' : $1), $2); + } else { # dirname("ignore") -> "." + return (".", $path); + } +} +sub getenv { + my $envvar=shift; + my $var=$ENV{"$envvar"}; + return 0 unless (defined $var); + if (&win32) { + $var=~s!\\!/!g; # change \ -> / (required by Perl) + } + return "$var"; +} + + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.sh b/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.sh new file mode 100755 index 0000000000..0ee507d745 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindy.sh @@ -0,0 +1,105 @@ +#!/bin/sh +# +# KETCindy starter script +# +# (C) 2017-2018 Norbert Preining +# Licensed under the same license terms as ketpic itself, that is GPLv3+ +# + +BinaryName=Cinderella2 +TemplateFile=template1basic.cdy +systype=`uname` +workdir="$HOME/ketcindy" + +if [ "$1" = "-c" ] +then + shift + cinderella="$1" +else + cinderella=`which $BinaryName 2>/dev/null` +fi + +if [ -z "$cinderella" ] +then + case $systype in + Darwin) + if [ -r /Applications/Cinderella2.app/Contents/MacOS/Cinderella2 ] + then + cinderella=/Applications/Cinderella2.app/Contents/MacOS/Cinderella2 + else + echo "Cannot find $BinaryName!" >&2 + exit 1 + fi + ;; + *) + echo "Cannot find $BinaryName!" >&2 + exit 1 + ;; + esac +fi + +if [ ! -x "$cinderella" ] ; then + echo "Program $cinderella is not executable!" >&2 + exit 1 +fi +# find real path +realcind=`realpath "$cinderella"` +cinddir=`dirname "$realcind"` +case $systype in + Darwin) + plugindir="$cinddir/../PlugIns";; + *) + plugindir="$cinddir/Plugins";; +esac + +plugin="$plugindir/KetCindyPlugin.jar" +dirheadplugin="$plugindir/ketcindy.ini" + +# find Jar +KetCdyJar=`kpsewhich -format=texmfscripts KetCindyPlugin.jar` +# search for template.cdy +TempCdy=`kpsewhich -format=texmfscripts $TemplateFile` +DirHead=`kpsewhich -format=texmfscripts ketcindy.ini` + +if [ -z "$TempCdy" -o -z "$KetCdyJar" ] +then + echo "Cannot find $TemplateFile via kpsewhich, is ketpic installed?" >&2 + exit 1 +fi + + +if [ ! -r "$plugin" -o ! -r "$dirheadplugin" ] ; then + echo "Cinderella is *NOT* set up for KETCindy!" + echo "You need to copy" + echo " $KetCdyJar" + echo " $DirHead" + echo "into" + echo " $plugindir" + echo "" + exit 1 +fi + +# check whether the .jar md5sum is fine, but don't make this an error +case $systype in + Darwin) + __md5sum=md5;; + *) + __md5sum=md5sum;; +esac +myjarmd=`cat "$KetCdyJar" | $__md5sum` +sysjarmd=`cat "$plugin" | $__md5sum` +if [ ! "$myjarmd" = "$sysjarmd" ] +then + echo "The installed version of the plugin in" + echo " $plugin" + echo "differs from the version shipped in" + echo " $KetCdyJar" + echo "You might need to update the former one with the later one!" +fi + + +mkdir -p "$workdir" +cp "$TempCdy" "$workdir" + +exec "$cinderella" "$workdir/$TemplateFile" + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/3dlist.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/3dlist.txt new file mode 100644 index 0000000000..340efcf9f0 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/3dlist.txt @@ -0,0 +1,84 @@ +Ketinit3d,3d,22,50,Setwindow,Addax +Start3d,3d,54,162,Strsplit,Toupper,Setfiles,Setwindow,Slider,Sprintf,Ptselected,Ptseg3data +Setangle,3d,166,237,Parapt,Ptselected,Xyzcoord,Defvar,Datalist3d,Projpara,textformat,Ptseg3data +Getangle,3d,241,259,getangle,divoptions,Strsplit,181111,Toupper,textformat +Angleselected,3d,263,264,IsAngle +Isangle,3d,268,268,Ptselected +Changestyle3d,3d,272,291,Changestyle +Dist3d,3d,295,314 +Findangle,3d,318,335 +Cancoordpara,3d,339,347 +Zparapt,3d,351,355 +Projcoordpara,3d,359,364,Parapt,Zparapt +Parapt,3d,368,374 +Parasubpt,3d,378,384 +Parasubptlog,3d,388,393 +Mainsubpt3d,3d,397,415 +Projcurve,3d,419,469,Measuredepth +Projpara,3d,473,542,Divoptions,Strsplit,Toupper,Projcurve,textformat,Com2nd,Getlinestyle,Texcom +Invparaptpp,3d,546,601,textformat,Projpara,Nearestpt,Crossprod,Dotprod,Ptend,Numptcrv,Ptcrv +Invparapt,3d,605,609,Invparaptpp +Subgraph,3d,613,630,Measuredepth,Parasubpt,Textformat +Spaceline,3d,634,727,Divoptions,Toupper,Projpara,Textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Spacecurve,3d,731,897,Divoptions,Toupper,tmpfn,Projpara,textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Partcrv3d,3d,901,937,parapt,partcrv,Xyzcoord,Spaceline +Joincrvs3d(,3d,941,1036,Joincrvs3d,Divoptions,Norm,Projpara,textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Xyzax3data,3d,1040,1166,Divoptions,Strsplit,Toupper,Spaceline,Xyzaxparaname,Projpara,textformat,Com2nd,Getlinestyle,Texcom,Lightarrowdata,Letter,Parapt,Subgraph +Xyzaxparaname,3d,1170,1212,Strsplit,Dqq,Parapt,Expr +Datalist3d,3d,1216,1224 +Datalist2d,3d,1228,1236 +Embed,3d,1240,1328,Measuredepth,Divoptions,Assign,Projpara,textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Rotatepoint3d,3d,1332,1418,Rotate3pt,Measuredepth +Rotatedata3d,3d,1422,1492,Divoptions,Rotatepoint3d,Flattenlist,Projpara,textformat,RSform,Textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Translatepoint3d,3d,1496,1523,Translate3pt,Measuredepth +Translatedata3d,3d,1527,1589,Divoptions,Measuredepth,Translatepoint3d,Flattenlist,Projpara,RSform,textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Reflectpoint3d,3d,1593,1617,Reflect3pt,Crossprod,Dotprod +Reflectdata3d,3d,1621,1686,Divoptions,Reflectpoint3d,Flattenlist,textformat,Projpara,RSform,Textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Scalepoint3d,3d,1691,1708,Scale3pt +Scaledata3d,3d,1713,1782,Divoptions,Scalepoint3d,Flattenlist,textformat,Projpara,RSform,Textformat,Com2nd,Getlinestyle,Texcom,Subgraph +Xyzcoord,3d,1786,1792,Mainsubpt3d +Putoncurve3d,3d,1796,1812,PutonCurve,Nearestpt,Paramoncurve,Pointoncurve,Xyzcoord,textformat,Defvar +Mkpointlist,3d,1816,1933,Workprocess,Finddef,Norm,Parapt,Parasubpt,Putpoint,Mainsubpt3d,Defvar,Ptselected +Mkseg3d,3d,1937,1981,Divoptions,Finddef,Spaceline +Ptseg3data,3d,1985,2020,Ptselected,Parapt,Parasubpt,Mainsubpt3d,Defvar,Mkpointlist,Mkseg3d +Putonseg3d,3d,2024,2076,divoptions,Putonseg,Putpoint,Parapt,Textformat,Parasubpt,Xyzcoord,Defvar +Putpoint3d,3d,2080,2138,Toupper,Xyzcoord,Defvar,Parapt,Putpoint,Parasubpt,Fixpoint3d +Fixpoint3d,3d,2142,2159,Defvar,Parapt,textformat +Letter3d,3d,2163,2183,Parapt,Letter +Expr3d,3d,2187,2207,Parapt,Expr +Perppt,3d,2211,2267,Putperp,Crossprod,IntersectsgpL,Dotprod,Defvar,Putpoint3d,Fixpoint3d,Drawpoint3d +Perpplane,3d,2271,2312,findangle,Cancoordpara,Toupper,Putpoint3d,Defvar,Drawpoint3d +Drawpoint3d,3d,2316,2332,Divoptions,Measuredepth,Parapt,Textformat,Parasubpt +Pointdata3d,3d,2336,2345,Measuredepth,Parapt,Pointdata +Putaxes3d,3d,2349,2360,Putpoint3d +IntersectsgpL,3d,2364,2481,Divoptions,Strsplit,Toupper,Crossprod,Reflectpoint3d,Dotprod,Putpoint3d,Drawpoint3d,Textformat +Bezier3d,3d,2485,2582,Measuredepth,Bezier3,Divoptions,Toupper,Assign,Spacecurve,Projpara,textformat,RSform,Getlinestyle,Com2nd,Subgraph +Putbezier3data,3d,2586,2624,Divoptions,Putpoint3d +Mkbezierptcrv3d,3d,2628,2648,Mkbezierptcrv3,Putbezier3data,Bezier3 +Readobj,3d,2686,2788,Divoptions,Toupper,Removespace +Concatobj,3d,2792,2862,divoptions,Toupper,dist3d +VertexEdgeFace,3d,2899,2862 +Vertexedgeface,3d,2904,3085,Divoptions,Strsplit,Toupper,Parapt,Putpoint3d,Defvar,Dqq,Changestyle3d,Spaceline,Textformat +Phparadata,3d,3089,3191,Divoptions,Getlinestyle,Com2nd,Changestyle3d,Drawlinetype,Toupper +Nohiddenseg,3d,3195,3324,Parapt,Dotprod,Cancoordpara,IntersectsgpL,Projcoordpara,Intersectcrvspp,Crossprod +Nohiddensegs,3d,3328,3363,Nohiddenseg +Nohiddenbyfaces,3d,3367,3516,Datalist3d,Divoptions,Strsplit,Toupper,Changestyle3d,MeasureDepth,Nohiddensegs,Spaceline +Faceremovaldata,3d,3520,3603,Divoptions,Getlinestyle,Com2nd,Measuredepth,Changestyle3d,Drawlinetype,Toupper +Fullformfunc,3d,3607,3689,Removespace +Surffun,3d,3693,3709,Fullformfunc,Deffun +Sf3data,3d,3713,3797,Surffun,Divoptions,Toupper,textformat,Spacecurve +SfbdparadataR,3d,3801,3887,ConvertFdtoC,Divoptions,Toupper,Select,MkprecommandR,textformat,RSform,Dqq,CalcbyR,ReadOutData,Extractdata,Projpara +Addpoints,3d,3891,3906,RSform,textformat +CrvsfparadataR,3d,3910,4012,Changestyle,Divoptions,Toupper,RSform,Select,MkprecommandR,Addpoints,textformat,Rsform,Dqq,CalcbyR,ReadOutData,Extractdata,Projpara +Crv3onsfparadataR,3d,4016,4116,Crvs3onfparadataR,Changestyle3d,Changestyle,Divoptions,Toupper,RSform,Select,MkprecommandR,textformat,Rsform,Dqq,Addpoints,CalcbyR,ReadOutData,Extractdata,Projpara +Crv2onsfparadataR,3d,4120,4221,Crvs2onfparadataR,Changestyle,Divoptions,Toupper,RSform,Select,MkprecommandR,textformat,Rsform,Dqq,Addpoints,CalcbyR,ReadOutData,Extractdata,Projpara +WireparadataR,3d,4225,4326,Divoptions,Toupper,Select,MkprecommandR,RSform,textformat,Rsform,Dqq,Addpoints,CalcbyR,ReadOutData,Extractdata,Projpara +IntersectcrvsfR,3d,4330,4418,Intersectcrvsf,Divoptions,Toupper,RSform,textformat,Rsform,Dqq,CalcbyR,ReadOutData +SfcutparadataR,3d,4422,4519,Strsplit,Changestyle,Divoptions,Toupper,RSform,Select,MkprecommandR,textformat,Rsform,Dqq,CalcbyR,ReadOutData,Extractdata,Projpara +Skeletonparadata,3d,4525,4529,Skeletondatacindy +Skeletondatacindy,3d,4533,4722,Datalist3d,Divoptions,Strsplit,Toupper,Anyselected,Flattenlist,isexists,ReadOutData,Textformat,Projcoordcurve,Makeskeletondata,Norm,Ptcrv,Invparapt,Projcurve,textformat,Changestyle3d,Getlinestyle,Com2nd,Subgraph,WriteOutData +Makeskeletondata,3d,4726,4928,Columnlist,Intersectcrvspp,Op,column,Dotprod,Norm,Kukannozoku,Pointoncurve,Listplot +Kukannozoku,3d,4932,4983 +Projcoordcurve,3d,4989,5003 +Divnohidhid,3d,5007,5070,Divoptions,Toupper,assign,Dotprod,Changestyle3d,Spaceline,textformat +Beziersurf,3d,5074,5129,factorial,Deffun,Op,Bterm,Defvar diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/Cindy.js b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/Cindy.js new file mode 100644 index 0000000000..2be04890fd --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/Cindy.js @@ -0,0 +1,809 @@ +/* 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/8c01b8d1d336e92934ad80c44aafc5510a1aea36 + * for corresponding sources and their respective licensing conditions. + */ +var enableInlineVideo=function(){function p(f,k,p,E){function F(p){ia=k(F,E);f(p-(N||p));N=p}var ia,N;return{start:function(){ia||F(0)},stop:function(){p(ia);ia=null;N=0}}}function F(f,k,p,E){function F(k){!!f[p]===!!E&&k.stopImmediatePropagation();delete f[p]}return f.addEventListener(k,F,!1),F}function ha(f,k,p,E){function F(f){p[k]=f}E&&F(f[k]);Object.defineProperty(f,k,{get:function(){return p[k]},set:F})}function Ga(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 Ha(f){var k=new Audio;return Ga(f,"play",k),Ga(f,"playing",k),Ga(f,"pause",k),k.crossOrigin=f.crossOrigin,k.src=f.src||f.currentSrc||"data:",k}function ea(k,p,E){(N||0)+200<Date.now()&&(k[fa]=!0,N=Date.now());E||(k.currentTime=p);f[++tb%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)),ea(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[fa],this.video.pause(!0))}function Qa(){var f=this[S];return this.webkitDisplayingFullscreen?void this[ub]():("data:"!==f.driver.src&&f.driver.src!==this.src&&(ea(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 E(f){var k=this[S];k.driver.pause();k.updater.stop();this.webkitDisplayingFullscreen&&this[$a]();k.paused&&!f||(k.paused=!0,k.hasAudio||pa(this,"pause"),this.ended&&(this[fa]=!0,pa(this,"ended")))}function ia(E,F){var M=E[S]={};M.paused=!0;M.hasAudio=F;M.video=E;M.updater=p(k.bind(M),requestAnimationFrame,cancelAnimationFrame);F?M.driver=Ha(E):(E.addEventListener("canplay", +function(){E.paused||pa(E,"playing")}),M.driver={src:E.src||E.currentSrc||"data:",muted:!0,paused:!0,pause:function(){M.driver.paused=!0},play:function(){M.driver.paused=!1;M.driver.currentTime>=M.video.duration&&ea(E,0)},get ended(){return M.driver.currentTime>=M.video.duration}});E.addEventListener("emptied",function(){var f=!M.driver.src||"data:"===M.driver.src;M.driver.src&&M.driver.src!==E.src&&(ea(E,0,!0),M.driver.src=E.src,f?M.driver.play():M.updater.stop())},!1);E.addEventListener("webkitbeginfullscreen", +function(){E.paused?F&&0===M.driver.buffered.length&&M.driver.load():(E.pause(),E[ub]())});F&&(E.addEventListener("webkitendfullscreen",function(){M.driver.currentTime=E.currentTime}),E.addEventListener("seeking",function(){0>f.indexOf(100*E.currentTime|0)&&(M.driver.currentTime=E.currentTime)}))}var N,V="object"==typeof document&&"object-fit"in document.head.style&&!matchMedia("(-webkit-video-playable-inline)").matches,S="bfred-it:iphone-inline-video",fa="bfred-it:iphone-inline-video:event",ub="bfred-it:iphone-inline-video:nativeplay", +$a="bfred-it:iphone-inline-video:nativepause",f=[],tb=0;return function(f,k){if(void 0===k&&(k={}),!f[S])if(k.everywhere||V&&(k.iPad||k.ipad?/iPhone|iPod|iPad/:/iPhone|iPod/).test(navigator.userAgent)){!f.paused&&f.webkitDisplayingFullscreen&&f.pause();ia(f,!f.muted);var p=f[S];f[ub]=f.play;f[$a]=f.pause;f.play=Qa;f.pause=E;ha(f,"paused",p.driver);ha(f,"muted",p.driver,!0);ha(f,"playbackRate",p.driver,!0);ha(f,"ended",p.driver);ha(f,"loop",p.driver,!0);F(f,"seeking");F(f,"seeked");F(f,"timeupdate", +fa,!1);F(f,"ended",fa,!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 F(){return new p(null,void 0,void 0)}function ha(b,d,e,r,f,k){for(;0<=--k;){var u=d*this[b++]+e[r]+f;f=Math.floor(u/67108864);e[r++]=u&67108863}return f}function Ga(b,d,e,r,f,k){var u=d&32767;for(d>>=15;0<=--k;){var C=this[b]&32767,p=this[b++]>>15,E=d*C+p*u,C= +u*C+((E&32767)<<15)+e[r]+(f&1073741823);f=(C>>>30)+(E>>>15)+d*p+(f>>>30);e[r++]=C&1073741823}return f}function pa(b,d,e,r,f,k){var u=d&16383;for(d>>=14;0<=--k;){var C=this[b]&16383,p=this[b++]>>14,E=d*C+p*u,C=u*C+((E&16383)<<14)+e[r]+f;f=(C>>28)+(E>>14)+d*p;e[r++]=C&268435455}return f}function Ha(b,d){var e=gb[b.charCodeAt(d)];return null==e?-1:e}function ea(b){var d=F();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 Qa(b){this.m=b}function E(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 ia(b,d){return b&d}function N(b,d){return b|d}function V(b,d){return b^d}function S(b,d){return b&~d}function fa(){}function ub(b){return b}function $a(b){this.r2=F();this.q3=F();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},tb=!1;"undefined"!==typeof module&& +module.exports?(module.exports=f,tb=!0):"undefined"!==typeof document?window.ClipperLib=f:self.ClipperLib=f;var Y;if(tb)ba="chrome",Y="Netscape";else{var ba=navigator.userAgent.toString().toLowerCase();Y=navigator.appName}var M,gc,Sb,Ta,fb,Cb;M=-1!=ba.indexOf("chrome")&&-1==ba.indexOf("chromium")?1:0;tb=-1!=ba.indexOf("chromium")?1:0;gc=-1!=ba.indexOf("safari")&&-1==ba.indexOf("chrome")&&-1==ba.indexOf("chromium")?1:0;Sb=-1!=ba.indexOf("firefox")?1:0;ba.indexOf("firefox/17");ba.indexOf("firefox/15"); +ba.indexOf("firefox/3");Ta=-1!=ba.indexOf("opera")?1:0;ba.indexOf("msie 10");ba.indexOf("msie 9");fb=-1!=ba.indexOf("msie 8")?1:0;Cb=-1!=ba.indexOf("msie 7")?1:0;ba=-1!=ba.indexOf("msie ")?1:0;f.biginteger_used=null;"Microsoft Internet Explorer"==Y?(p.prototype.am=Ga,Y=30):"Netscape"!=Y?(p.prototype.am=ha,Y=26):(p.prototype.am=pa,Y=28);p.prototype.DB=Y;p.prototype.DM=(1<<Y)-1;p.prototype.DV=1<<Y;p.prototype.FV=Math.pow(2,52);p.prototype.F1=52-Y;p.prototype.F2=2*Y-52;var gb=[],ua;Y=48;for(ua=0;9>= +ua;++ua)gb[Y++]=ua;Y=97;for(ua=10;36>ua;++ua)gb[Y++]=ua;Y=65;for(ua=10;36>ua;++ua)gb[Y++]=ua;Qa.prototype.convert=function(b){return 0>b.s||0<=b.compareTo(this.m)?b.mod(this.m):b};Qa.prototype.revert=function(b){return b};Qa.prototype.reduce=function(b){b.divRemTo(this.m,null,b)};Qa.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};Qa.prototype.sqrTo=function(b,d){b.squareTo(d);this.reduce(d)};E.prototype.convert=function(b){var d=F();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};E.prototype.revert=function(b){var d=F();b.copyTo(d);this.reduce(d);return d};E.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,r=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,r,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)};E.prototype.mulTo=function(b, +d,e){b.multiplyTo(d,e);this.reduce(e)};E.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 r= +b.length,f=!1,k=0;0<=--r;){var u=8==e?b[r]&255:Ha(b,r);0>u?"-"==b.charAt(r)&&(f=!0):(f=!1,0==k?this[this.t++]=u:k+e>this.DB?(this[this.t-1]|=(u&(1<<this.DB-k)-1)<<k,this[this.t++]=u>>this.DB-k):this[this.t-1]|=u<<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,r=this.DB-e,f=(1<<r)-1,k=Math.floor(b/this.DB),u=this.s<<e&this.DM,C;for(C=this.t-1;0<=C;--C)d[C+k+1]=this[C]>>r|u,u=(this[C]&f)<<e;for(C=k-1;0<=C;--C)d[C]=0;d[k]=u;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 r=b%this.DB,f=this.DB-r,k=(1<<r)-1;d[0]=this[e]>>r;for(var u=e+1;u<this.t;++u)d[u-e-1]|=(this[u]&k)<<f,d[u-e]=this[u]>>r;0<r&&(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=F());var I=F(),u=this.s;b=b.s;var C=this.DB-k(f[f.t-1]);0<C?(f.lShiftTo(C,I),n.lShiftTo(C,e)):(f.copyTo(I),n.copyTo(e));f=I.t;n=I[f-1];if(0!=n){var E=n*(1<<this.F1)+(1<f?I[f-2]>>this.F2:0),ab=this.FV/E,E=(1<<this.F1)/E,vb=1<<this.F2,H=e.t,ia=H-f,N=null==d?F():d;I.dlShiftTo(ia,N);0<=e.compareTo(N)&&(e[e.t++]= +1,e.subTo(N,e));p.ONE.dlShiftTo(f,N);for(N.subTo(I,I);I.t<f;)I[I.t++]=0;for(;0<=--ia;){var M=e[--H]==n?this.DM:Math.floor(e[H]*ab+(e[H-1]+vb)*E);if((e[H]+=I.am(0,M,e,ia,0,f))<M)for(I.dlShiftTo(ia,N),e.subTo(N,e);e[H]<--M;)e.subTo(N,e)}null!=d&&(e.drShiftTo(f,d),u!=b&&p.ZERO.subTo(d,d));e.t=f;e.clamp();0<C&&e.rShiftTo(C,e);0>u&&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=F(),f=F(),n=d.convert(this),I=k(b)-1;for(n.copyTo(e);0<=--I;)if(d.sqrTo(e,f),0<(b&1<<I))d.mulTo(f,n,e);else var u=e,e=f,f=u;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,u=this.DB-k*this.DB%b;if(0<k--)for(u<this.DB&&0<(e=this[k]>>u)&&(f=!0,n="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));0<=k;)u<b?(e=(this[k]&(1<<u)-1)<<b-u,e|=this[--k]>>(u+=this.DB-b)):(e=this[k]>>(u-=b)&d,0>=u&&(u+=this.DB,--k)),0<e&&(f=!0),f&&(n+="0123456789abcdefghijklmnopqrstuvwxyz".charAt(e));return f?n:"0"};p.prototype.negate=function(){var b=F();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=F();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 Qa(d): +new E(d);return this.exp(b,e)};p.ZERO=ea(0);p.ONE=ea(1);fa.prototype.convert=ub;fa.prototype.revert=ub;fa.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e)};fa.prototype.sqrTo=function(b,d){b.squareTo(d)};$a.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=F();b.copyTo(d);this.reduce(d);return d};$a.prototype.revert=function(b){return b};$a.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)};$a.prototype.mulTo=function(b,d,e){b.multiplyTo(d,e);this.reduce(e)};$a.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],ic=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=ea(d),f=F(),n=F(),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,u=0,C=0;C<b.length;++C){var E=Ha(b,C);0>E?"-"==b.charAt(C)&&0==this.signum()&&(n=!0):(u=d*u+E,++k>=e&&(this.dMultiply(f),this.dAddOffset(u,0),u=k=0))}0<k&&(this.dMultiply(Math.pow(d,k)),this.dAddOffset(u,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),N,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=F(),k=0;k<b;++k){n.fromInt(H[Math.floor(Math.random()*H.length)]); +var u=n.modPow(f,this);if(0!=u.compareTo(p.ONE)&&0!=u.compareTo(d)){for(var C=1;C++<e&&0!=u.compareTo(d);)if(u=u.modPowInt(2,this),0==u.compareTo(p.ONE))return!1;if(0!=u.compareTo(d))return!1}}return!0};p.prototype.clone=function(){var b=F();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=F();this.bitwiseTo(b,ia,d);return d};p.prototype.or=function(b){var d=F();this.bitwiseTo(b,N,d);return d};p.prototype.xor=function(b){var d=F();this.bitwiseTo(b,V,d);return d};p.prototype.andNot=function(b){var d= +F();this.bitwiseTo(b,S,d);return d};p.prototype.not=function(){for(var b=F(),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=F();0>b?this.rShiftTo(-b,d):this.lShiftTo(b,d);return d};p.prototype.shiftRight=function(b){var d=F();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,N)};p.prototype.clearBit=function(b){return this.changeBit(b, +S)};p.prototype.flipBit=function(b){return this.changeBit(b,V)};p.prototype.add=function(b){var d=F();this.addTo(b,d);return d};p.prototype.subtract=function(b){var d=F();this.subTo(b,d);return d};p.prototype.multiply=function(b){var d=F();this.multiplyTo(b,d);return d};p.prototype.divide=function(b){var d=F();this.divRemTo(b,d,null);return d};p.prototype.remainder=function(b){var d=F();this.divRemTo(b,null,d);return d};p.prototype.divideAndRemainder=function(b){var d=F(),e=F();this.divRemTo(b,d, +e);return[d,e]};p.prototype.modPow=function(b,d){var e=b.bitLength(),f,n=ea(1),I;if(0>=e)return n;f=18>e?1:48>e?3:144>e?4:768>e?5:6;I=8>e?new Qa(d):d.isEven()?new $a(d):new E(d);var u=[],C=3,p=f-1,ab=(1<<f)-1;u[1]=I.convert(this);if(1<f)for(e=F(),I.sqrTo(u[1],e);C<=ab;)u[C]=F(),I.mulTo(e,u[C-2],u[C]),C+=2;for(var H=b.t-1,N,ia=!0,M=F(),e=k(b[H])-1;0<=H;){e>=p?N=b[H]>>e-p&ab:(N=(b[H]&(1<<e+1)-1)<<p-e,0<H&&(N|=b[H-1]>>this.DB+e-p));for(C=f;0==(N&1);)N>>=1,--C;0>(e-=C)&&(e+=this.DB,--H);if(ia)u[N].copyTo(n), +ia=!1;else{for(;1<C;)I.sqrTo(n,M),I.sqrTo(M,n),C-=2;0<C?I.sqrTo(n,M):(C=n,n=M,M=C);I.mulTo(M,u[N],n)}for(;0<=H&&0==(b[H]&1<<e);)I.sqrTo(n,M),C=n,n=M,M=C,0>--e&&(e=this.DB-1,--H)}return I.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=ea(1),k=ea(0),u=ea(0),C=ea(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?(u.isEven()&&C.isEven()||(u.addTo(this,u),C.subTo(b,C)),u.rShiftTo(1,u)):C.isEven()||C.subTo(b,C),C.rShiftTo(1,C);0<=e.compareTo(f)?(e.subTo(f,e),d&&n.subTo(u,n),k.subTo(C,k)):(f.subTo(e,f),d&&u.subTo(n,u),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 fa)};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<ic;)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=F();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())};Y=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};Y(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=ba||Ta||gc?function(b){return b|0}:function(b){return~~b};f.Cast_Int64=M?function(b){return-2147483648>b||2147483647<b?0>b?Math.ceil(b):Math.floor(b):~~b}:Sb&&"function"==typeof Number.toInteger?function(b){return Number.toInteger(b)}: +Cb||fb?function(b){return parseInt(b,10)}:ba?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,r,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],r=b[2],b[3]?p.op_Equality(p.Int128Mul(d.Y-e.Y,e.X-r.X),p.Int128Mul(d.X-e.X,e.Y-r.Y)):0===f.Cast_Int64((d.Y-e.Y)*(e.X-r.X))-f.Cast_Int64((d.X-e.X)*(e.Y-r.Y));d=b[0];e=b[1];r=b[2];n=b[3];return b[4]?p.op_Equality(p.Int128Mul(d.Y-e.Y,r.X-n.X),p.Int128Mul(d.X- +e.X,r.Y-n.Y)):0===f.Cast_Int64((d.Y-e.Y)*(r.X-n.X))-f.Cast_Int64((d.X-e.X)*(r.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,r){return r?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,r,n){return n?p.op_Equality(p.Int128Mul(b.Y-d.Y,e.X-r.X),p.Int128Mul(b.X-d.X,e.Y-r.Y)):0===f.Cast_Int64((b.Y-d.Y)*(e.X-r.X))-f.Cast_Int64((b.X-d.X)*(e.Y-r.Y))};f.ClipperBase.prototype.Clear=function(){this.DisposeLocalMinimaList();for(var b=0,d=this.m_edges.length;b<d;++b){for(var e=0,r=this.m_edges[b].length;e<r;++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,r){b.Next=d;b.Prev=e;b.Curr.X=r.X;b.Curr.Y=r.Y;f.use_xyz&&(b.Curr.Z=r.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,r=b,n;if(r.OutIdx==f.ClipperBase.Skip){b=r;if(d){for(;b.Top.Y==b.Next.Bot.Y;)b= +b.Next;for(;b!=r&&b.Dx==f.ClipperBase.horizontal;)b=b.Prev}else{for(;b.Top.Y==b.Prev.Bot.Y;)b=b.Prev;for(;b!=r&&b.Dx==f.ClipperBase.horizontal;)b=b.Next}b==r?r=d?b.Next:b.Prev:(b=d?r.Next:r.Prev,e=new f.LocalMinima,e.Next=null,e.Y=b.Bot.Y,e.LeftBound=null,e.RightBound=b,b.WindDelta=0,r=this.ProcessBound(b,d),this.InsertLocalMinima(e));return r}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(;r.Top.Y==r.Next.Bot.Y&&r.Next.OutIdx!=f.ClipperBase.Skip;)r=r.Next;if(r.Dx==f.ClipperBase.horizontal&&r.Next.OutIdx!=f.ClipperBase.Skip){for(n=r;n.Prev.Dx==f.ClipperBase.horizontal;)n=n.Prev;n.Prev.Top.X==r.Next.Top.X?d||(r=n.Prev):n.Prev.Top.X>r.Next.Top.X&&(r=n.Prev)}for(;b!=r;)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);r=r.Next}else{for(;r.Top.Y==r.Prev.Bot.Y&&r.Prev.OutIdx!=f.ClipperBase.Skip;)r=r.Prev;if(r.Dx==f.ClipperBase.horizontal&&r.Prev.OutIdx!=f.ClipperBase.Skip){for(n=r;n.Next.Dx==f.ClipperBase.horizontal;)n=n.Next;n.Next.Top.X==r.Prev.Top.X?d||(r=n.Next):n.Next.Top.X>r.Prev.Top.X&&(r=n.Next)}for(;b!=r;)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);r=r.Prev}return r};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 r=b.length-1;if(e)for(;0<r&&f.IntPoint.op_Equality(b[r],b[0]);)--r;for(;0<r&&f.IntPoint.op_Equality(b[r],b[r-1]);)--r;if(e&&2>r||!e&&1>r)return!1;for(var n=[],k=0;k<=r;k++)n.push(new f.TEdge);var u=!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[r],C);this.m_UseFullRange=C.Value;this.InitEdge(n[0],n[1],n[r],b[0]);this.InitEdge(n[r],n[0],n[r-1],b[r]);for(k=r-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=r=n[0];;)if(b.Curr!=b.Next.Curr||!e&&b.Next==r){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==r&&(r=b.Next);b=this.RemoveEdge(b);k=b=b.Prev;continue}b=b.Next;if(b==k||!e&&b.Next==r)break}else{if(b==b.Next)break;b==r&&(r=b.Next);k=b=this.RemoveEdge(b)}if(!e&&b==b.Next||e&&b.Prev==b.Next)return!1;e||(this.m_HasOpenPaths=!0,r.Prev.OutIdx=f.ClipperBase.Skip);b=r;do this.InitEdge2(b,d),b=b.Next,u&&b.Curr.Y!=r.Curr.Y&&(u=!1);while(b!=r);if(u){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);u=null;for(f.IntPoint.op_Equality(b.Prev.Bot,b.Prev.Top)&&(b=b.Next);;){b=this.FindNextLocMin(b); +if(b==u)break;else null==u&&(u=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));r=this.ProcessBound(d.RightBound,!n);r.OutIdx==f.ClipperBase.Skip&& +(r=this.ProcessBound(r,!n));d.LeftBound.OutIdx==f.ClipperBase.Skip?d.LeftBound=null:d.RightBound.OutIdx==f.ClipperBase.Skip&&(d.RightBound=null);this.InsertLocalMinima(d);n||(b=r)}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],r=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(r)}finally{this.DisposeAllPolyPts(),this.m_ExecuteLocked=!1}return n}if(2==d&&!e||2==d&&e)return d=b[0],r=b[1],this.Execute(d,r,f.PolyFillType.pftEvenOdd,f.PolyFillType.pftEvenOdd)}else{d= +b[0];r=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(r);this.m_SubjFillType=e;this.m_ClipFillType=b;this.m_ClipType=d;this.m_UsingPolyTree=!1;try{var n=this.ExecuteInternal();n&&this.BuildResult(r)}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 r=this.m_PolyOuts[b];null===r.Pts||r.IsOpen||(r.IsHole^this.ReverseSolution)==0<this.Area(r)&&this.ReversePolyPtLinks(r.Pts)}this.JoinCommonEdges();b=0;for(e=this.m_PolyOuts.length;b<e;b++)r=this.m_PolyOuts[b],null===r.Pts||r.IsOpen||this.FixupOutPolygon(r);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 r=new f.Join;r.OutPt1=b;r.OutPt2=d;r.OffPt.X=e.X;r.OffPt.Y=e.Y;f.use_xyz&&(r.OffPt.Z=e.Z);this.m_Joins.push(r)};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 r=null;null===d?(this.InsertEdgeIntoAEL(e,null),this.SetWindingCount(e),this.IsContributing(e)&&(r=this.AddOutPt(e,e.Bot))):(null==e?(this.InsertEdgeIntoAEL(d,null),this.SetWindingCount(d),this.IsContributing(d)&&(r=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)&&(r=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!==r&&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 u=this.m_GhostJoins[n];this.HorzSegmentsOverlap(u.OutPt1.Pt.X,u.OffPt.X,e.Bot.X,e.Top.X)&&this.AddJoin(u.OutPt1,r,u.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(r,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(r,n,e.Top)),r=d.NextInAEL,null!==r))for(;r!=e;)this.IntersectEdges(e,r,d.Curr,!1),r=r.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,r=d.PrevInAEL;null!==r;)r.PolyTyp==d.PolyTyp&&0!==r.WindDelta&&(e=!e),r=r.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 r,n;f.ClipperBase.IsHorizontal(d)||b.Dx>d.Dx?(r=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):(r=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(r,e,n.Top));return r};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 r=this.CreateOutRec();r.IsOpen=0===b.WindDelta;var n=new f.OutPt;r.Pts= +n;n.Idx=r.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;r.IsOpen||this.SetHoleState(b,r);b.OutIdx=r.Idx}else{var r=this.m_PolyOuts[b.OutIdx],k=r.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=r.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&&(r.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 r=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 r>=k&&r>=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],r=this.m_PolyOuts[d.OutIdx],n;n=this.Param1RightOfParam2(e, +r)?r:this.Param1RightOfParam2(r,e)?e:this.GetLowermostRec(e,r);var k=e.Pts,u=k.Prev,C=r.Pts,p=C.Prev;b.Side==f.EdgeSide.esLeft?(d.Side==f.EdgeSide.esLeft?(this.ReversePolyPtLinks(C),C.Next=k,k.Prev=C,u.Next=p,p.Prev=u,e.Pts=p):(p.Next=k,k.Prev=p,C.Prev=u,u.Next=C,e.Pts=C),k=f.EdgeSide.esLeft):(d.Side==f.EdgeSide.esRight?(this.ReversePolyPtLinks(C),u.Next=p,p.Prev=u,C.Next=k,k.Prev=C):(u.Next=C,C.Prev=u,k.Prev=p,p.Next=k),k=f.EdgeSide.esRight);e.BottomPt=null;n==r&&(r.FirstLeft!=e&&(e.FirstLeft=r.FirstLeft), +e.IsHole=r.IsHole);r.Pts=null;r.BottomPt=null;r.FirstLeft=e;n=b.OutIdx;u=d.OutIdx;b.OutIdx=-1;d.OutIdx=-1;for(C=this.m_ActiveEdges;null!==C;){if(C.OutIdx==u){C.OutIdx=n;C.Side=k;break}C=C.NextInAEL}r.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 r=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 u,C,p;b.PolyTyp==f.PolyType.ptSubject?(u=this.m_SubjFillType,p=this.m_ClipFillType):(u=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(u){case f.PolyFillType.pftPositive:u=b.WindCnt;break;case f.PolyFillType.pftNegative:u=-b.WindCnt;break;default:u=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(r&&n)0!=u&&1!=u||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(r){if(0===C||1==C)this.AddOutPt(b,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d)}else if(n){if(0===u||1==u)this.AddOutPt(d,e),f.Clipper.SwapSides(b,d),f.Clipper.SwapPolyIndexes(b,d)}else if(!(0!=u&&1!=u||0!=C&&1!=C)){switch(p){case f.PolyFillType.pftPositive:r= +b.WindCnt2;break;case f.PolyFillType.pftNegative:r=-b.WindCnt2;break;default:r=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==u&&1==C)switch(this.m_ClipType){case f.ClipType.ctIntersection:0<r&&0<n&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctUnion:0>=r&&0>=n&&this.AddLocalMinPoly(b,d,e);break;case f.ClipType.ctDifference:(b.PolyTyp== +f.PolyType.ptClip&&0<r&&0<n||b.PolyTyp==f.PolyType.ptSubject&&0>=r&&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),r&&(b.OutIdx=-1)):r&&(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),r&&(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 r=e.Dir,n=e.Left,k=e.Right,u=b,C=null;null!==u.NextInLML&&f.ClipperBase.IsHorizontal(u.NextInLML);)u=u.NextInLML;for(null===u.NextInLML&&(C=this.GetMaximaPair(u));;){for(var p=b==u,E=this.GetNextInAEL(b,r);null!==E&&!(E.Curr.X==b.Top.X&&null!==b.NextInLML&&E.Dx<b.NextInLML.Dx);){e=this.GetNextInAEL(E,r);if(r== +f.Direction.dLeftToRight&&E.Curr.X<=k||r==f.Direction.dRightToLeft&&E.Curr.X>=n){if(E==C&&p){if(0<=b.OutIdx){r=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,r,e.Top)),e=e.NextInSEL;this.AddGhostJoin(r,b.Bot);this.AddLocalMaxPoly(b,C,b.Top)}this.DeleteFromAEL(b);this.DeleteFromAEL(C);return}if(r==f.Direction.dLeftToRight){var F=new f.IntPoint(E.Curr.X,b.Curr.Y);this.IntersectEdges(b, +E,F)}else F=new f.IntPoint(E.Curr.X,b.Curr.Y),this.IntersectEdges(E,b,F);this.SwapPositionsInAEL(b,E)}else if(r==f.Direction.dLeftToRight&&E.Curr.X>=k||r==f.Direction.dRightToLeft&&E.Curr.X<=n)break;E=e}if(null!==b.NextInLML&&f.ClipperBase.IsHorizontal(b.NextInLML))b=this.UpdateEdgeIntoAEL(b),0<=b.OutIdx&&this.AddOutPt(b,b.Bot),e={Dir:r,Left:n,Right:k},this.GetHorzDirection(b,e),r=e.Dir,n=e.Left,k=e.Right;else break}null!==b.NextInLML?0<=b.OutIdx?(r=this.AddOutPt(b,b.Top),d&&this.AddGhostJoin(r,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(r,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(r,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 r=new f.IntPoint; +d.Curr.X>b.Curr.X?(this.IntersectPoint(d,b,r),e=new f.IntersectNode,e.Edge1=d,e.Edge2=b,e.Pt.X=r.X,e.Pt.Y=r.Y,f.use_xyz&&(e.Pt.Z=r.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};M=function(b){return 0>b?Math.ceil(b-.5):Math.round(b)};Sb=function(b){return 0>b?Math.ceil(b-.5):Math.floor(b+.5)};Ta=function(b){return 0>b?-Math.round(Math.abs(b)):Math.round(b)};fb=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= +ba?M:tb?Ta:gc?fb:Sb;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 r,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:(r=b.Bot.Y-b.Bot.X/b.Dx,e.Y=f.Clipper.Round(e.X/b.Dx+ +r));else{r=b.Bot.X-b.Bot.Y*b.Dx;n=d.Bot.X-d.Bot.Y*d.Dx;var k=(n-r)/(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+r):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 r=d.PrevInAEL;this.DoMaxima(d);d=null===r?this.m_ActiveEdges:r.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&&(r=d.PrevInAEL,0<=d.OutIdx&&0!==d.WindDelta&& +null!==r&&0<=r.OutIdx&&r.Curr.X==d.Curr.X&&0!==r.WindDelta)){var n=new f.IntPoint(d.Curr);f.use_xyz&&this.SetZ(n,r,d);e=this.AddOutPt(r,n);r=this.AddOutPt(d,n);this.AddJoin(e,r,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),r=d.PrevInAEL,n=d.NextInAEL,null!==r&&r.Curr.X==d.Bot.X&&r.Curr.Y==d.Bot.Y&&null!==e&&0<=r.OutIdx&&r.Curr.Y>r.Top.Y&&f.ClipperBase.SlopesEqual(d, +r,this.m_UseFullRange)&&0!==d.WindDelta&&0!==r.WindDelta?(r=this.AddOutPt(r,d.Bot),this.AddJoin(e,r,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&&(r=this.AddOutPt(n,d.Bot),this.AddJoin(e,r,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 r=this.m_PolyOuts[d];if(null!==r.Pts){var r=r.Pts.Prev,n=this.PointCount(r);if(!(2>n)){for(var k=Array(n),u=0;u<n;u++)k[u]=r.Pt,r=r.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 r=this.m_PolyOuts[d],n=this.PointCount(r.Pts);if(!(r.IsOpen&&2>n||!r.IsOpen&&3>n)){this.FixHoleLinkage(r);var k=new f.PolyNode;b.m_AllPolys.push(k);r.PolyNode=k;k.m_polygon.length=n;for(var r=r.Pts.Prev,u=0;u<n;u++)k.m_polygon[u]=r.Pt,r=r.Prev}}d=0;for(e=this.m_PolyOuts.length;d<e;d++)r=this.m_PolyOuts[d],null!==r.PolyNode&&(r.IsOpen?(r.PolyNode.IsOpen=!0,b.AddChild(r.PolyNode)):null!==r.FirstLeft&&null!=r.FirstLeft.PolyNode? +r.FirstLeft.PolyNode.AddChild(r.PolyNode):b.AddChild(r.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,r,n,k){var u=b.Pt.X>d.Pt.X?f.Direction.dRightToLeft:f.Direction.dLeftToRight;r=e.Pt.X>r.Pt.X?f.Direction.dRightToLeft:f.Direction.dLeftToRight;if(u==r)return!1;if(u==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(r==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);r=this.DupOutPt(e,!k);f.IntPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,f.use_xyz&&(e.Pt.Z=n.Z),r=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);r=this.DupOutPt(e,k);f.IntPoint.op_Inequality(r.Pt,n)&&(e=r,e.Pt.X=n.X,e.Pt.Y=n.Y,f.use_xyz&&(e.Pt.Z=n.Z),r=this.DupOutPt(e,k))}u==f.Direction.dLeftToRight==k?(b.Prev=e,e.Next=b,d.Next=r,r.Prev=d):(b.Next=e,e.Prev=b,d.Prev=r,r.Next=d);return!0};f.Clipper.prototype.JoinPoints=function(b,d,e){var r=b.OutPt1,n;new f.OutPt;var k=b.OutPt2,u;new f.OutPt;if((u=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!=r&&f.IntPoint.op_Equality(n.Pt,b.OffPt);)n=n.Next;n=n.Pt.Y>b.OffPt.Y;for(u=b.OutPt2.Next;u!=k&&f.IntPoint.op_Equality(u.Pt,b.OffPt);)u=u.Next;if(n==u.Pt.Y>b.OffPt.Y)return!1;n?(n=this.DupOutPt(r,!1),u=this.DupOutPt(k,!0),r.Prev=k,k.Next=r,n.Next=u,u.Prev=n):(n=this.DupOutPt(r,!0),u=this.DupOutPt(k,!1),r.Next=k,k.Prev=r,n.Prev=u,u.Next=n);b.OutPt1=r;b.OutPt2=n;return!0}if(u){for(n=r;r.Prev.Pt.Y==r.Pt.Y&&r.Prev!=n&& +r.Prev!=k;)r=r.Prev;for(;n.Next.Pt.Y==n.Pt.Y&&n.Next!=r&&n.Next!=k;)n=n.Next;if(n.Next==r||n.Next==k)return!1;for(u=k;k.Prev.Pt.Y==k.Pt.Y&&k.Prev!=u&&k.Prev!=n;)k=k.Prev;for(;u.Next.Pt.Y==u.Pt.Y&&u.Next!=k&&u.Next!=r;)u=u.Next;if(u.Next==k||u.Next==r)return!1;e={Left:null,Right:null};if(!this.GetOverlap(r.Pt.X,n.Pt.X,k.Pt.X,u.Pt.X,e))return!1;d=e.Left;var C=e.Right;e=new f.IntPoint;r.Pt.X>=d&&r.Pt.X<=C?(e.X=r.Pt.X,e.Y=r.Pt.Y,f.use_xyz&&(e.Z=r.Pt.Z),d=r.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>u.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>r.Pt.X):(e.X=u.Pt.X,e.Y=u.Pt.Y,f.use_xyz&&(e.Z=u.Pt.Z),d=u.Pt.X>k.Pt.X);b.OutPt1=r;b.OutPt2=k;return this.JoinHorz(r,n,k,u,e,d)}for(n=r.Next;f.IntPoint.op_Equality(n.Pt,r.Pt)&&n!=r;)n=n.Next;if(C=n.Pt.Y>r.Pt.Y||!f.ClipperBase.SlopesEqual(r.Pt,n.Pt,b.OffPt,this.m_UseFullRange)){for(n=r.Prev;f.IntPoint.op_Equality(n.Pt,r.Pt)&&n!=r;)n=n.Prev;if(n.Pt.Y>r.Pt.Y||!f.ClipperBase.SlopesEqual(r.Pt, +n.Pt,b.OffPt,this.m_UseFullRange))return!1}for(u=k.Next;f.IntPoint.op_Equality(u.Pt,k.Pt)&&u!=k;)u=u.Next;var p=u.Pt.Y>k.Pt.Y||!f.ClipperBase.SlopesEqual(k.Pt,u.Pt,b.OffPt,this.m_UseFullRange);if(p){for(u=k.Prev;f.IntPoint.op_Equality(u.Pt,k.Pt)&&u!=k;)u=u.Prev;if(u.Pt.Y>k.Pt.Y||!f.ClipperBase.SlopesEqual(k.Pt,u.Pt,b.OffPt,this.m_UseFullRange))return!1}if(n==r||u==k||n==u||d==e&&C==p)return!1;C?(n=this.DupOutPt(r,!1),u=this.DupOutPt(k,!0),r.Prev=k,k.Next=r,n.Next=u,u.Prev=n):(n=this.DupOutPt(r,!0), +u=this.DupOutPt(k,!1),r.Next=k,k.Prev=r,n.Prev=u,u.Next=n);b.OutPt1=r;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 r=new f.IntRect;r.left=b[d][0].X;r.right=r.left;r.top=b[d][0].Y;for(r.bottom=r.top;d<e;d++)for(var k=0,I=b[d].length;k<I;k++)b[d][k].X<r.left?r.left=b[d][k].X:b[d][k].X>r.right&&(r.right=b[d][k].X),b[d][k].Y<r.top?r.top=b[d][k].Y:b[d][k].Y>r.bottom&&(r.bottom=b[d][k].Y);return r};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],I=1;I<=f;++I){var u=I==f?d[0]:d[I];if(u.Y==b.Y&&(u.X==b.X||k.Y==b.Y&&u.X>b.X==k.X<b.X))return-1;if(k.Y<b.Y!=u.Y<b.Y)if(k.X>=b.X)if(u.X>b.X)e=1-e;else{var C= +(k.X-b.X)*(u.Y-b.Y)-(u.X-b.X)*(k.Y-b.Y);if(0==C)return-1;0<C==u.Y>k.Y&&(e=1-e)}else if(u.X>b.X){C=(k.X-b.X)*(u.Y-b.Y)-(u.X-b.X)*(k.Y-b.Y);if(0==C)return-1;0<C==u.Y>k.Y&&(e=1-e)}k=u}return e};f.Clipper.prototype.PointInPolygon=function(b,d){var e=0,f=d,k=b.X,I=b.Y,u=d.Pt.X,C=d.Pt.Y;do{d=d.Next;var p=d.Pt.X,E=d.Pt.Y;if(E==I&&(p==k||C==I&&p>k==u<k))return-1;if(C<I!=E<I)if(u>=k)if(p>k)e=1-e;else{u=(u-k)*(E-I)-(p-k)*(C-I);if(0==u)return-1;0<u==E>C&&(e=1-e)}else if(p>k){u=(u-k)*(E-I)-(p-k)*(C-I);if(0== +u)return-1;0<u==E>C&&(e=1-e)}u=p;C=E}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 u=this.m_PolyOuts.length;p<u-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,u=[];if(e)for(e=0;e<p;e++){for(var C=Array(n),E=0,F=b.length,H=b[E];E<F;E++,H=b[E])C[E]=new f.IntPoint(d[e].X+H.X,d[e].Y+H.Y);u.push(C)}else for(e=0;e<p;e++){C=Array(n);E=0;F=b.length;for(H=b[E];E<F;E++,H=b[E])C[E]=new f.IntPoint(d[e].X-H.X,d[e].Y-H.Y);u.push(C)}b=[];for(e=0;e<p-1+k;e++)for(E=0;E<n;E++)d=[],d.push(u[e%p][E%n]),d.push(u[(e+1)% +p][E%n]),d.push(u[(e+1)%p][(E+1)%n]),d.push(u[e%p][(E+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){u=d;d=new f.Paths;for(var k=new f.Clipper,n=0;n<u.length;++n){var p=f.Clipper.Minkowski(b,u[n],!0,e);k.AddPaths(p,f.PolyType.ptSubject,!0);e&&(p=f.Clipper.TranslatePath(u[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 u=f.Clipper.Minkowski(b, +d,!0,e),k=new f.Clipper;k.AddPaths(u,f.PolyType.ptSubject,!0);k.Execute(f.ClipType.ctUnion,u,f.PolyFillType.pftNonZero,f.PolyFillType.pftNonZero);return u};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};Y(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 u=1;u<=k;u++)f.IntPoint.op_Inequality(n.m_polygon[p],b[u])&&(p++,n.m_polygon.push(b[u]),b[u].Y>n.m_polygon[d].Y||b[u].Y==n.m_polygon[d].Y&&b[u].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 u=e,e=e*this.m_cos-this.m_sin*n,n=u*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(u=n-1,p=0;p<n;p++)u=this.OffsetPoint(p,u,e.m_jointype);else if(e.m_endtype==f.EndType.etClosedLine){u=n-1;for(p=0;p<n;p++)u=this.OffsetPoint(p,u,e.m_jointype);this.m_destPolys.push(this.m_destPoly);this.m_destPoly= +[];u=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(-u.X,-u.Y);u=0;for(p=n-1;0<=p;p--)u=this.OffsetPoint(p,u,e.m_jointype)}else{u=0;for(p=1;p<n-1;++p)u=this.OffsetPoint(p,u,e.m_jointype);e.m_endtype==f.EndType.etOpenButt?(p=n-1,u=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(u), +u=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(u)):(p=n-1,u=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,u):this.DoRound(p,u));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);u=n-1;for(p=u-1;0<p;--p)u=this.OffsetPoint(p,u,e.m_jointype);e.m_endtype==f.EndType.etOpenButt?(u=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(u),u=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(u)):(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,u=0;u<e;++u)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,u,E,F,H,N,M=[],ia=0;ia<k;ia++)if(p=b[ia],n=p.length,0!==n)if(3>n)u=p,M.push(u);else{u=p;E=d*d;F=p[0];for(N=H=1;N<n;N++)(p[N].X-F.X)*(p[N].X-F.X)+(p[N].Y-F.Y)*(p[N].Y-F.Y)<=E||(u[H]=p[N],F=p[N],H++);F=p[H-1];(p[0].X-F.X)*(p[0].X-F.X)+(p[0].Y-F.Y)*(p[0].Y-F.Y)<=E&&H--;H<n&&u.splice(H,n-H);u.length&&M.push(u)}!e&& +M.length?M=M[0]:e||0!==M.length?e&&0===M.length&&(M=[[]]):M=[];return M};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,u,E=Array(e);for(k=0;k<e;k++){f=b[k].length;u=Array(f);for(p=0;p<f;p++)u[p]={X:b[k][p].X,Y:b[k][p].Y};E[k]=u}d||(E=E[0]);return E};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,u,E,F,H,N,M,ia,S,V,Y,ba,fa=b.length,ha=d*d,ea=[];for(e=0;e<fa;e++)if(n=b[e],E=n.length,0!=E){for(p=0;1E6>p;p++){u=[];E=n.length;n[E-1].X!=n[0].X||n[E-1].Y!=n[0].Y?(ia=1,n.push({X:n[0].X,Y:n[0].Y}),E=n.length):ia=0;M=[];for(k=0;k<E-2;k++){F=n[k];N=n[k+1];H=n[k+2];Y=F.X;ba=F.Y;F=H.X-Y;S=H.Y-ba;if(0!==F||0!==S)V=((N.X-Y)*F+(N.Y-ba)*S)/(F*F+S*S),1<V?(Y=H.X,ba=H.Y):0<V&&(Y+=F* +V,ba+=S*V);F=N.X-Y;S=N.Y-ba;H=F*F+S*S;H<=ha&&(M[k+1]=1,k++)}u.push({X:n[0].X,Y:n[0].Y});for(k=1;k<E-1;k++)M[k]||u.push({X:n[k].X,Y:n[k].Y});u.push({X:n[E-1].X,Y:n[E-1].Y});ia&&n.pop();if(M.length)n=u;else break}E=u.length;u[E-1].X==u[0].X&&u[E-1].Y==u[0].Y&&u.pop();2<u.length&&ea.push(u)}b[0]instanceof Array||(ea=ea[0]);"undefined"==typeof ea&&(ea=[[]]);return ea};f.JS.PerimeterOfPath=function(b,d,e){if("undefined"==typeof b)return 0;var f=Math.sqrt,k=0,p,u,E,F,H=b.length;if(2>H)return 0;for(d&&(b[H]= +b[0],H++);--H;)p=b[H],E=p.X,p=p.Y,u=b[H-1],F=u.X,u=u.Y,k+=f((E-F)*(E-F)+(p-u)*(p-u));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,u,E,F,H;for(u=0;u<n;u++)for(p=k[u],e.holes[u]=p.Contour(),E=0,F=p.Childs(), +H=F.length;E<H;E++)p=F[E],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===ha)return console.error("Waiting for "+k+" after we finished waiting."),function(){};0>ha&&(ha=0);++ha;return function(){--ha;0>ha&&console.error("Wait count mismatch: "+k);if(0===ha)for(var p=0,F=Ga.length;p<F;)Ga[p++].startup()}}function F(k){var p=F.newInstance(k);0>=ha?p.startup():!1!==k.autostart&&Ga.push(p);return p}var ha=-1,Ga=[];"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,Ha=null,ea={};F.getBaseDir=function(){if(null!==pa)return pa;for(var k=document.getElementsByTagName("script"),p=0;p<k.length;++p){var F=k[p],V=F.src;if(V){var S=/Cindy\.js$/.exec(V);if(S)return pa=V.substr(0,S.index),console.log("Will load extensions from "+pa),Ha=F,pa}}console.error("Could not find <script> tag for Cindy.js");return pa=Ha=!1};F.addNewScript=function(k, +p){p||console.error.bind(console);var N=F.getBaseDir();if(!1===N)return!1;var V=document.createElement("script");V.src=N+k;var N=Ha.nextSibling,S=Ha.parentElement;N?S.insertBefore(V,N):S.appendChild(V);return V};F.loadScript=function(k,p,N,V){for(var S=String(k).split("."),fa=window;S.length&&"object"===typeof fa&&null!==fa;)fa=fa[S.shift()];if(fa&&!S.length)return N(),!0;V||(V=console.error.bind(console));S=ea[k];if(!S){S=F.addNewScript(p,V);if(!1===S)return V("Can't load additional components."), +!1;ea[k]=S}S.addEventListener("load",N);S.addEventListener("error",V);return null};F._autoLoadingPlugin={};F.autoLoadPlugin=function(k,p,N){if(F._pluginRegistry[k])return N(),!0;var V=F._autoLoadingPlugin[k];if(!V){p||(p=k+"-plugin.js");V=F._autoLoadingPlugin[k]=[];k=F.addNewScript(p);if(!1===k)return!1;k.addEventListener("error",console.error.bind(console))}V.push(N);return null};var k={ctype:"undefined"};F.waitFor=p;F._pluginRegistry={};F.instances=[];F.registerPlugin=function(k,p,N){if(1!==k)return console.error("Plugin API version "+ +k+" not supported"),!1;F._pluginRegistry[p]=N;(F._autoLoadingPlugin[p]||[]).forEach(function(k){k()})};var Qa=0;F.dumpState=function(k){k=F.instances[k||0].saveState();console.log(JSON.stringify(k))};F.debugState=function(k){F.instances.map(function(k){var p=k.config,p=JSON.parse(JSON.stringify(p)),E=k.saveState();console.log(JSON.stringify(E));for(var F in E)p[F]=E[F];k.shutdown();return p}).forEach(function(k){F(k)})};F.newInstance=function(p){function F(){na.width=ca=na.clientWidth;na.height=da= +na.clientHeight;A.setTransform(1,0,0,1,0,0);y.setMat(25,0,0,25,250.5,250.5);if(Db)for(var a=0;a<Db.length;a++){var g=Db[a],c=Object.keys(g)[0];"scale"===c&&(Tb=g.scale,y[c](g.scale));if("translate"===c)y[c](g.translate[0],g.translate[1]);"scaleAndOrigin"===c&&(Tb=g[c][0]/25,y[c].apply(null,g[c]));"visibleRect"===c&&(y[c].apply(null,g[c]),Tb=y.drawingstate.initialmatrix.a/25)}y.createnewbackup();y.greset();a=1;"undefined"!==typeof window&&window.devicePixelRatio&&(a=window.devicePixelRatio);g=A.webkitBackingStorePixelRatio|| +A.mozBackingStorePixelRatio||A.msBackingStorePixelRatio||A.oBackingStorePixelRatio||A.backingStorePixelRatio||1;a!==g&&(a/=g,na.width=ca*a,na.height=da*a,A.scale(a,a))}function N(a){var g;if("canvas"!==a.tagName.toLowerCase())for(g=a,na=document.createElement("canvas");g.firstChild;)g.removeChild(g.firstChild);else{na=a;g=document.createElement("div");var c=null,q=null;Array.prototype.slice.call(na.attributes).forEach(function(a){"width"===a.name?c=a.value:"height"===a.name?q=a.value:g.setAttributeNodeNS(na.removeAttributeNode(a))}); +null===c||g.style.width||(g.style.width=c+"px");null===q||g.style.height||(g.style.height=q+"px");na.parentNode.replaceChild(g,na)}g.classList.add("CindyJS-widget");a=na.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(na);return na}function V(){var a=p.cinderella;if(!a|| +!a.version)return!1;for(var g=0;g<arguments.length;++g){var c=a.version[g],q=arguments[g];if(c!==q)return typeof c===typeof q&&c<q}return!1}function S(){kc=!0;if(0===Ub){if(p.exclusive)for(b=va.instances.length;0<b;)va.instances[--b].shutdown();void 0!==p.csconsole&&(wa=p.csconsole);wa=null===wa?new ua:!0===wa?new Cb:"string"===typeof wa?new gb(wa):"object"===typeof wa&&"function"===typeof wa.appendChild?new gb(wa):new ua;ra=[100,100];var a=null;Db=p.transform;if(p.ports&&0<p.ports.length){b=p.ports[0]; +(a=b.element)||(a=document.getElementById(b.id));var a=N(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&&(Db=b.transform);Ia(b.grid)&&0<b.grid&&(za=b.grid);Ia(b.tgrid)&&0<b.tgrid&&(lc=b.tgrid);b.snap&&(Eb=!0);b.axes&&(Fb=!0)}a||(a=p.canvas,a||"undefined"===typeof document||(a=document.getElementById(p.canvasname))&& +(a=N(a)));a&&(na=a,A=a.getContext("2d"),F(),A.setLineDash||(A.setLineDash=function(){}),(p.animation?p.animation.controls:p.animcontrols)&&ea(p),p.animation&&Ia(p.animation.speed)&&(void 0===p.animation.accuracy&&V(2,9,1875)?ha(.5*p.animation.speed):ha(p.animation.speed)),p.animation&&Ia(p.animation.accuracy)&&(Vb=p.animation.accuracy));p.statusbar&&(mc="string"===typeof p.statusbar?document.getElementById(p.statusbar):p.statusbar);var c=p.scripts,q=null;"string"===typeof c&&c.search(/\*/)&&(q=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 g;if(null!==c&&c[a])g=c[a];else{g=a+"script";if(p[g])g=document.getElementById(p[g]);else if(q){if(g=document.getElementById(q.replace(/\*/,a)),!g)return}else return;g=g.text}g=Ua(g,!1);"error"===g.ctype?console.error("Error compiling "+a+" script: "+g.message):R[a]=Td(g,a)});V(2, +9,1888)&&!R.keydown&&(R.keydown=R.keytyped,R.keytyped=R.keytype,R.keytype=void 0);Ia(p.grid)&&0<p.grid&&(za=p.grid);p.snap&&(Eb=!0);v={};var b=0;bb={};p.geometry||(p.geometry=[]);Ud(p.geometry);p.behavior||(p.behavior=[]);"function"===typeof nc&&nc(p.behavior);for(var d in p.images)b=fa(p.images[d],!1),b!==k&&(bb[d]=b);for(var h in p.videos)d=fa(p.videos[h],!0),d!==k&&(bb[h]=d);sa.canvas=a;if(p.oninit)p.oninit(sa);va.instances.push(sa);p.use&&p.use.forEach(function(a){t.use$1([w.wrap(a)],{})});hb.convexhull3d$1&& +pa("QuickHull3D","QuickHull3D.js");(hb.colorplot$1||hb.colorplot$2||hb.colorplot$3||hb.colorplot$4)&&pa("CindyGL","CindyGL.js");(hb.playtone$1||hb.playmelody$1)&&pa("midi","midi-plugin.js");Y()}}function fa(a,g){var c;"string"===typeof a?(g?(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 q={img:c,width:NaN,height:NaN,ready:!0,live:!1, +generation:0,whenReady:f},b=c.tagName.toLowerCase(),d=[];if("img"===b)c.complete?(q.width=c.width,q.height=c.height):(q.ready=!1,c.addEventListener("load",function(){q.width=c.width;q.height=c.height;q.ready=!0;q.whenReady=f;d.forEach(f);e()}),q.whenReady=d.push.bind(d));else if("video"===b)q.live=!0,c.readyState>=c.HAVE_METADATA?(q.width=c.videoWidth,q.height=c.videoHeight):(q.ready=!1,c.addEventListener("loadedmetadata",function(){q.width=c.videoWidth;q.height=c.videoHeight;q.ready=!0;q.whenReady= +f;d.forEach(f);e()}),q.whenReady=d.push.bind(d));else if("canvas"===b)q.width=c.width,q.height=c.height;else return console.error("Not a valid image element",b,c),k;return{ctype:"image",value:q}}function ea(a){function g(a,c){var g=document.createElement("button"),q=document.createElement("img");g.appendChild(q);m.appendChild(g);Gb(q,a);g.addEventListener("click",c);Va[a]=function(a){a?g.classList.add("CindyJS-active"):g.classList.remove("CindyJS-active")}}function c(a){if(k){var c=e.getBoundingClientRect(); +ha(h*(a.clientX-c.left-e.clientLeft+.5)/c.width+b)}}var q=document.createElement("div");q.className="CindyJS-animcontrols";na.parentNode.appendChild(q);var b=0,d=1,h=1;a.animation&&a.animation.speedRange&&Ia(a.animation.speedRange[0])&&Ia(a.animation.speedRange[1])&&(b=a.animation.speedRange[0],d=a.animation.speedRange[1],h=d-b);var e=document.createElement("div");e.className="CindyJS-animspeed";q.appendChild(e);var f=document.createElement("div");e.appendChild(f);H(e,"mousedown",function(a){k=!0; +c(a)});H(e,"mousemove",c);H(na.parentNode,"mouseup",function(a){k=!1},!0);var m=document.createElement("div");m.className="CindyJS-animbuttons";q.appendChild(m);g("play",M);g("pause",Ga);g("stop",Ha);Va.stop(!0);oc=function(a){a=(a-b)/h;a=Math.max(0,Math.min(1,a));a=.1*Math.round(1E3*a);f.style.width=a+"%"};var k=!1}function ha(a){Vc=a;oc&&oc(a)}function f(a){return a()}function pa(a,g,c){var q=null;p.plugins&&(q=p.plugins[a]);q||(q=va._pluginRegistry[a]);q?t.use$1([w.wrap(a)],{}):(++Wc,va.autoLoadPlugin(a, +g,function(){t.use$1([w.wrap(a)],{});Y(c)}))}function Y(a){0===--Wc&&(a?e():(z(R.init),(p.animation||p).autoplay&&M(),sa.canvas&&ic(sa.canvas,p)))}function ba(){null!==Hb&&(qa.set(Hb.state),Object.keys(Hb.speeds).forEach(function(a){var g=v.csnames[a];"undefined"!==typeof g.behavior&&(a=Hb.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)}),Vd())}function M(){if(!cb){if(Xb){var a=ib.backup;a.set(qa);for(var g={},c=0;c<v.points.length;c++){var q= +v.points[c];"undefined"!==typeof q.behavior&&(g[q.name]=[q.behavior.vx,q.behavior.vy,q.behavior.vz])}Hb={state:a,speeds:g};Ib=0;Xb=!1;Va.stop(!1)}else Va.pause(!1);pc=Date.now();Va.play(!0);"function"===typeof nc&&qc&&Wd();cb=!0;z(R.simulationstart);e()}}function Ga(){cb&&(Va.play(!1),Va.pause(!0),cb=!1)}function Ha(){Xb||(cb?(z(R.simulationstop),cb=!1,Va.play(!1)):Va.pause(!1),Va.stop(!0),Xb=!0,ba())}function Ta(){if(!Yb){Yb=!0;for(var a=va.instances.length;0<a;)if(va.instances[--a]===sa){va.instances.splice(a, +1);break}for(a=jb.length;0<a;)try{jb[--a]()}catch(g){console.error(g)}}}function fb(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,q){return"undefined"!==typeof document?(a=document.createElement(a),a.appendChild(document.createTextNode(q)),a.style.color=c,a):q+"\n"}}function Cb(){var a=this,g,c=document.createElement("div"),q;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");q=document.getElementById("log");g.onkeydown=function(c){13===c.keyCode&&""!==g.value&&(a["in"](g.value),c=t.parse$1([w.wrap(g.value)],[]),c=z(c),console.log(Z(c)),"undefined"!==c.ctype&&wa.out(Z(c)),g.value="",q.scrollTop=q.scrollHeight)};this.append=function(a){q.appendChild(a)};this.clear=function(){q.innerHTML=""}}function gb(a){var g=a;"string"===typeof a&&(g=document.getElementById(a));this.append=function(a){g.appendChild(a)};this.clear=function(){g.innerHTML= +""}}function ua(){this.append=function(a){};this.clear=function(){}}function H(a,g,c,q){void 0===q&&(q=!1);jb.push(function(){a.removeEventListener(g,c,q)});a.addEventListener(g,c,q)}function ic(a,g){function c(c){var g=a.getBoundingClientRect();c=y.to(c.clientX-g.left-a.clientLeft+.5,c.clientY-g.top-a.clientTop+.5);aa.prevx=aa.x;aa.prevy=aa.y;aa.x=c[0];aa.y=c[1];ra[0]=aa.x;ra[1]=aa.y;e()}function q(a){for(var c=a.changedTouches,g=!1,q=0;q<c.length;q++)c[q].identifier===W&&(g=!0);g&&(W=-1,aa.down= +!1,ja=void 0,z(R.mouseup),wb("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)||Ta()}),b.observe(document.documentElement,{childList:!0,subtree:!0}),jb.push(function(){b.disconnect()})):(H(a,"DOMNodeRemovedFromDocument",Ta),H(a,"DOMNodeRemoved",Ta));if(!0===g.keylistener)H(document,"keydown",function(a){I(a,R.keydown);return!1}), +H(document,"keyup",function(a){I(a,R.keyup);return!1}),H(document,"keypress",function(a){I(a,R.keytyped);return!1});else if(R.keydown||R.keyup||R.keytyped)a.setAttribute("tabindex","0"),H(a,"mousedown",function(){a.focus()}),H(a,"keydown",function(a){9!==a.keyCode&&(I(a,R.keydown),R.keytyped||a.preventDefault())}),H(a,"keyup",function(a){I(a,R.keyup);a.preventDefault()}),H(a,"keypress",function(a){9!==a.keyCode&&(I(a,R.keytyped),a.preventDefault())});H(a,"mousedown",function(a){aa.button=a.which; +c(a);z(R.mousedown);wb("mousedown");aa.down=!0;a.preventDefault()});H(a,"mouseup",function(a){aa.down=!1;ja=void 0;z(R.mouseup);wb("mouseup");e();a.preventDefault()});H(a,"mousemove",function(a){c(a);aa.down?z(R.mousedrag):z(R.mousemove);wb("mousemove");a.preventDefault()});H(a,"click",function(a){c(a);z(R.mouseclick);a.preventDefault()});H(a,"dragenter",function(a){a.preventDefault()});H(a,"dragover",function(a){a.preventDefault()});H(a,"drop",function(c){function g(a,c){function h(){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 W=a.replace(/[?#][^]*/,""),W=W.replace(/[^]*\/([^\/])/,"$1");f[c]={type:"",name:W};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 g=e.getResponseHeader("Content-Type");f[c].type= +g;/^image\//.test(g)?oa(c,a):q(g)?(e=new XMLHttpRequest,e.onreadystatechange=h,e.open("GET",a),e.send()):d(c,k)}};e.open("HEAD",a);e.send()}function q(a){a=a.replace(/;[^]*/,"");return/^text\//.test(a)?1:"application/json"===a?2:0}function b(a,c){switch(q(f[a].type)){case 1:d(a,w.string(c));break;case 2:var g,oa;try{g=JSON.parse(c),oa=w.wrapJSON(g)}catch(h){console.error(h),oa=k}d(a,oa);break;default:d(a,k)}}function oa(a,c){var g=new Image,q=!1;g.onload=function(){q||(q=!0,d(a,fa(g,!1)))};g.onerror= +function(c){q||(q=!0,console.error(c),d(a,k))};g.src=c}function d(a,c,g){m[a]=h.turnIntoCSList([c,w.string(g||c.ctype),w.string(f[a].type),w.string(f[a].name)]);0===--l&&(a=p,rc=h.turnIntoCSList(m),sc=a,z(R.ondrop),sc=rc=k,e())}c.preventDefault();var W=c.dataTransfer,f=W.files,m=Array(f.length),l=f.length,n=c.currentTarget.getBoundingClientRect(),p=h.realVector(y.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 g=new FileReader; +q(a.type)?(g.onload=function(){b(c,g.result)},g.readAsText(a)):/^image\//.test(a.type)?(g.onload=function(){oa(c,g.result)},g.readAsDataURL(a)):(console.log("Unknown MIME type: "+a.type),d(c,k))});else if(c=W.getData("text/uri-list"))c=c.split("\n").filter(function(a){return!/^\s*(#|$)/.test(a)}),l=c.length,m=Array(l),f=Array(l),c.forEach(g)});var W=-1;H(a,"touchstart",function(a){if(-1===W){var g=a.changedTouches;0!==g.length&&(W=g[0].identifier,c(a.targetTouches[0]),z(R.mousedown),aa.down=!0,wb("mousedown"), +a.preventDefault())}},!1);H(a,"touchmove",function(a){for(var g=a.changedTouches,q=!1,b=0;b<g.length;b++)g[b].identifier===W&&(q=!0);q&&(c(a.targetTouches[0]),aa.down?z(R.mousedrag):z(R.mousemove),wb("mousemove"),a.preventDefault())},!0);H(a,"touchend",q,!1);"undefined"!==typeof document&&document.body&&H(document.body,"touchcancel",q,!1);"undefined"!==typeof window&&H(window,"resize",function(){Zb(function(){F();e()})},!1);d(a.parentNode);e()}function b(a,g){var c=document.createElement("div");c.setAttribute("style", +g);a.appendChild(c);return c}function d(a){function g(){q.scrollLeft=q.scrollTop=oa.scrollLeft=oa.scrollTop=1E5}function c(){if(d!==a.clientWidth||h!==a.clientHeight)d=a.clientWidth,h=a.clientHeight,f||(f=!0,Zb(function(){f=!1;F();e()}));g()}if("undefined"!==typeof document){var q=b(a,"position: absolute; transition: 0s; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;");b(q,"position: absolute; transition: 0s; left: 0; top: 0; width: 100000px; height: 100000px"); +var oa=b(a,"position: absolute; transition: 0s; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;");b(oa,"position: absolute; transition: 0s; left: 0; top: 0; width: 200%; height: 200%");g();var d=a.clientWidth,h=a.clientHeight,f=!1;q.addEventListener("scroll",c);oa.addEventListener("scroll",c)}}function e(){tc||(tc=Zb(r))}function r(){tc=null;if(!Yb){if(cb){var a=Date.now(),g=Math.min(50,a-pc)*Vc*Xd;pc=a;a=Ib+g;qc&&"undefined"!==typeof ya&&ya.tick(g);Ib=a;cb&& +z(R.tick)}n();cb&&e()}}function n(){y.reset();A.save();A.clearRect(0,0,ca,da);var a=y.drawingstate.matrix,g,c,q,b,d;if(0!==za){A.beginPath();A.strokeStyle="rgba(0,0,0,0.1)";A.lineWidth=1;A.lineCap="butt";g=za*a.a;for(b=Math.ceil(-a.tx/g);(d=b*g+a.tx)<ca;){if(b||!Fb)A.moveTo(d,0),A.lineTo(d,da);b++}for(b=Math.floor(a.ty/g);(d=b*g-a.ty)<da;){if(b||!Fb)A.moveTo(0,d),A.lineTo(ca,d);b++}A.stroke()}if(0!==lc){A.beginPath();A.strokeStyle="rgba(0,0,0,0.1)";A.lineWidth=1;A.lineCap="butt";g=lc*a.a;var e=Math.sqrt(3); +c=a.ty/e;q=(da+a.ty)/e;for(b=Math.ceil(-(a.tx+q)/g);(d=b*g+a.tx)+c<ca;)A.moveTo(d+c,0),A.lineTo(d+q,da),b++;for(b=Math.ceil(-(a.tx-c)/g);(d=b*g+a.tx)-q<ca;)A.moveTo(d-c,0),A.lineTo(d-q,da),b++;g*=.5*e;for(b=Math.floor(a.ty/g);(d=b*g-a.ty)<da;){if(b||!Fb)A.moveTo(0,d),A.lineTo(ca,d);b++}A.stroke()}Fb&&(A.beginPath(),A.strokeStyle="rgba(0,0,0,0.2)",A.lineWidth=3,A.lineCap="butt",A.lineJoin="miter",A.miterLimit=10,A.beginPath(),A.moveTo(0,-a.ty),A.lineTo(ca-6,-a.ty),A.moveTo(ca-13,-5-a.ty),A.lineTo(ca- +3,-a.ty),A.lineTo(ca-13,5-a.ty),A.moveTo(a.tx,da),A.lineTo(a.tx,6),A.moveTo(a.tx-5,13),A.lineTo(a.tx,3),A.lineTo(a.tx+5,13),A.stroke());Yd();y.greset();Zd();for(a=0;a<v.polygons.length;a++)g=v.polygons[a],g.isshowing&&!1!==g.visible&&(c={color:g.color,alpha:g.alpha,fillcolor:g.fillcolor,fillalpha:g.fillalpha,size:g.size,lineJoin:w.string("miter"),fillrule:w.string(g.fillrule)},D.drawpolygon([g.vertices],c,"D",!0));for(a=0;a<v.conics.length;a++)v.conics[a].isArc?(g=v.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=v.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<v.lines.length;a++)a:if(g=v.lines[a],g.isshowing&&!1!==g.visible&&h._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),g.labeled&&!g.tmp&&(c=g.printname||g.name||"S",q=h.scalmult(m.real(Math.sign(g.startpos.value[2].value.real)*Math.sign(g.endpos.value[2].value.real)),h.cross(g.startpos,g.endpos)),q={x:q.value[0].value.real,y:q.value[1].value.real},b=Math.sqrt(q.x*q.x+q.y*q.y),q={x:8*q.x/b-3,y:8*q.y/b-3},q=g.labelpos||q,b=x.makeColor(ga.textColor),d=l._helper.midpoint(l._helper.midpoint(g.startpos, +g.endpos),g.endpos),Xc(g,c,d,q,b))):(x.handleModifs(c,x.lineModifs),x.drawRaySegment(g.startpos,g.endpos));else if("end"===g.clip.value&&"Join"===g.type)b=v.csnames[g.args[0]],c=v.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];q=[-1E6,0];for(e=0;e<g.incidences.length;e++){var f=v.csnames[g.incidences[e]].homog,k=f.value[0],Ra=f.value[1],n=f.value[2];m._helper.isAlmostZero(n)|| +(k=m.div(k,n),Ra=m.div(Ra,n),m._helper.isAlmostReal(k)&&m._helper.isAlmostReal(Ra)&&(k.value.real<b[0]&&(b=[k.value.real,f]),k.value.real>c[0]&&(c=[k.value.real,f]),Ra.value.real<d[0]&&(d=[Ra.value.real,f]),Ra.value.real>q[0]&&(q=[Ra.value.real,f])))}c[0]-b[0]>q[0]-d[0]?(b=b[1],c=c[1]):(b=d[1],c=q[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<v.points.length;a++)if(g=v.points[a],g.isshowing&&!1!==g.visible&&h._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,noborder:g.noborder,border:g.border}),g.labeled&&!g.tmp)){q=g.printname||g.name||"P";b=g.labelpos||{x:3,y:3};d=x.makeColor(ga.textColor);if(!0===g.noborder.value||!1===g.border.value)d=c;Xc(g,q,g.homog,b,d)}for(a=0;a<v.texts.length;a++)$d(v.texts[a]);if(v.ifs.length){if(U.dirty||!w.deeplyEqual(U.mat,y.drawingstate.matrix))l.IFS.updateParameters(), +U.dirty=!1;U.img&&A.drawImage(U.img,0,0,ca,da)}A.restore()}function I(a,g){var c=window.event?event:a,c=c.charCode?c.charCode:c.keyCode;Yc=String.fromCharCode(c);Zc=c;z(g);e()}function u(a){var g=a.value;a=g[0].value;var c=g[1].value,g=g[2].value;return h.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 C(a){var g=!0;return function(c,q){g&&(console.error("Operator "+a+" is not supported yet."),g=!1);return k}}function Z(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+=Z(z(a.value[c])),c!==a.value.length-1&&(g+=", ");return g+"]"}return"dict"===a.ctype?Na.niceprint(a):"function"===a.ctype?"FUNCTION":"infix"===a.ctype?"INFIX":"modifier"===a.ctype?a.key+"->"+Z(a.value):"shape"===a.ctype?a.type:"error"===a.ctype?"Error: "+a.message:"variable"=== +a.ctype?Z(J.getvar(a.name)):"geo"===a.ctype?a.value.name:"image"===a.ctype?"IMAGE":"_?_"}function ab(a,g){var c="undefined"===a[0].ctype,q="undefined"===a[1].ctype,b=z(a[1]);if(c||q)return k;"variable"===a[0].ctype?J.setvar(a[0].name,b):"infix"===a[0].ctype?"_"===a[0].oper?D.assigntake(a[0],b):ka("Can't use infix expression as lvalue"):"field"===a[0].ctype?D.assigndot(a[0],b):"userdata"===a[0].ctype?D.assigncolon(a[0],b):"function"===a[0].ctype&&"genList"===a[0].oper?"list"===b.ctype?D.assignlist(a[0].args, +b.value):ka("Expected list in rhs of assignment"):ka("Left hand side of assignment is not a recognized lvalue");return b}function vb(a,g){var c=z(a[0]),q=z(a[1]);if(c.ctype===q.ctype){if("number"===c.ctype)return w.bool(c.value.real===q.value.real&&c.value.imag===q.value.imag);if("string"===c.ctype||"boolean"===c.ctype)return w.bool(c.value===q.value);if("list"===c.ctype)return h.equals(c,q);if("geo"===c.ctype)return w.bool(c.value===q.value)}return{ctype:"boolean",value:!1}}function Oc(a,g){return w.not(vb(a, +g))}function hc(a,g){var c=B(a[0]),q=B(a[1]);return"number"===c.ctype&&"number"===q.ctype?{ctype:"boolean",value:m._helper.isAlmostEqual(c,q)}:"string"===c.ctype&&"string"===q.ctype||"boolean"===c.ctype&&"boolean"===q.ctype?{ctype:"boolean",value:c.value===q.value}:"list"===c.ctype&&"list"===q.ctype?h.almostequals(c,q):{ctype:"boolean",value:!1}}function Pc(a,g){var c=B(a[0]),q=B(a[1]);return"boolean"===c.ctype&&"boolean"===q.ctype?{ctype:"boolean",value:c.value&&q.value}:k}function Qc(a,g){var c= +B(a[0]),q=B(a[1]);return"boolean"===c.ctype&&"boolean"===q.ctype?{ctype:"boolean",value:c.value||q.value}:k}function Rc(a,g){var c=a[0];"void"!==c.ctype&&(c=B(c));var q=B(a[1]),b=w.add(c,q);"Angle"===c.usage&&"Angle"===q.usage&&(b=w.withUsage(b,"Angle"));return b}function jc(a,g){var c=a[0];"void"!==c.ctype&&(c=B(c));var q=B(a[1]),b=w.sub(c,q);"Angle"===c.usage&&"Angle"===q.usage&&(b=w.withUsage(b,"Angle"));return b}function Sc(a,g){var c=B(a[0]),q=B(a[1]),b=w.mult(c,q);"Angle"!==c.usage||q.usage? +"Angle"!==q.usage||c.usage||(b=w.withUsage(b,"Angle")):b=w.withUsage(b,"Angle");return b}function Tc(a,g){var c=B(a[0]),q=B(a[1]);"number"===q.ctype&&m._helper.isZero(q)&&ka("WARNING: Division by zero!");var b=w.div(c,q);"Angle"!==c.usage||q.usage?"Angle"!==q.usage||c.usage||(b=w.withUsage(b,"Angle")):b=w.withUsage(b,"Angle");return b}function Uc(a,g){var c=B(a[0]),q=B(a[1]);return"number"===c.ctype&&"number"===q.ctype?m.pow(c,q):k}function $c(a,g){var c=K(a[0]),q=K(a[1]);if(c!==k&&q!==k){var b=h.cross(c, +q);"Point"===c.usage&&"Point"===q.usage&&(b=w.withUsage(b,"Line"));"Line"===c.usage&&"Line"===q.usage&&(b=w.withUsage(b,"Point"));return b}return k}function uc(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 ae(a);for(var c=be[g],q=Number.POSITIVE_INFINITY,b=c[0],d=0;d<c.length;++d){for(var h=c[d],e=0,f=0;f<g;++f)e+=a[f][h[f]];e<q&&(q=e,b=h)}return b}function ae(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<k[a][g]||m[g].used||(m[g].used=!0,c(m[g].matched))}function q(a){for(var c=0;c<d;++c)0<k[c][a]||f[c].used||(f[c].used=!0,q(f[c].matched))}var b=Math.abs,d=a.length,h,e,f=Array(d),m=Array(d),k=Array(d);for(h=0;h<d;++h)k[h]=Array(d);for(h=0;h<d;++h)for(f[h]=g(),m[h]=g(),f[h].cost=a[h][0],e=1;e<d;++e)f[h].cost>a[h][e]&&(f[h].cost=a[h][e]);for(;;){for(h=0;h<d;++h)for(e=0;e<d;++e)k[h][e]=a[h][e]-f[h].cost-m[e].cost,k[h][e]<1E-14*(b(a[h][e])+b(f[h].cost)+ +b(m[e].cost))&&(k[h][e]=0);for(h=0;h<d;++h)f[h].matched=m[h].matched=-1;for(var l=0;;){for(h=0;h<d;++h)f[h].used=f[h].leaf=m[h].used=m[h].leaf=!1,-1===f[h].matched&&(f[h].start=h,f[h].used=f[h].leaf=!0,f[h].prev=-1);for(var n=!1,p=!1;!p;){for(h=0;h<d;++h)if(f[h].leaf)for(f[h].leaf=!1,e=0;e<d;++e)if(!(m[e].used||0<k[h][e])&&f[h].matched!==e&&(m[e].prev=h,m[e].start=f[h].start,m[e].used=m[e].leaf=!0,-1===m[e].matched)){f[m[e].start].prev=e;n=!0;break}if(n)break;p=!0;for(e=0;e<d;++e)m[e].leaf&&(m[e].leaf= +!1,h=m[e].matched,f[h].used||(f[h].prev=e,f[h].start=m[e].start,f[h].used=f[h].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 h=m[e].prev,m[e].matched=h,f[h].matched=e,e=f[h].prev;while(h!==n);++l}}if(l===d)break;for(h=0;h<d;++h)f[h].used=f[h].leaf=m[h].used=m[h].leaf=!1;for(h=0;h<d;++h)-1===f[h].matched&&c(h);for(e=0;e<d;++e)-1===m[e].matched&&q(e);for(h=0;h<d;++h)-1===f[h].matched||f[h].used||m[f[h].matched].used||(f[h].used=!0);l=Number.POSITIVE_INFINITY; +for(h=0;h<d;++h)if(!f[h].used)for(e=0;e<d;++e)m[e].used||l>k[h][e]&&(l=k[h][e]);for(h=0;h<d;++h)f[h].used||(f[h].cost+=l),m[h].used&&(m[h].cost-=l)}a=Array(d);for(h=0;h<d;++h)e=f[h].matched,a[h]=e;return a}function vc(a,g){var c=z(a[0]),q=B(a[1]);"string"!==c.ctype&&(c=h.asList(c));if("number"===q.ctype){q=Math.floor(q.value.real);0>q&&(q=c.value.length+q+1);if(0<q&&q<c.value.length+1)return"list"===c.ctype?c.value[q-1]:{ctype:"string",value:c.value.charAt(q-1)};ka("WARNING: Index out of range!"); +return k}if("list"===q.ctype){for(var b=[],d=0;d<q.value.length;d++){var e=B(q.value[d]);b[d]=vc([c,e],[])}return h.turnIntoCSList(b)}return k}function ad(a,g){var c=z(a[0]),q=z(a[1]);if("shape"===c.ctype&&"shape"===q.ctype)return D.shapeconcat(c,q);c=h.asList(c);q=h.asList(q);return"list"===c.ctype&&"list"===q.ctype?h.concat(c,q):k}function bd(a,g){var c=z(a[0]),q=z(a[1]);return"list"===c.ctype&&"list"===q.ctype?h.set(h.common(c,q)):"shape"===c.ctype&&"shape"===q.ctype?D.shapecommon(c,q):k}function cd(a, +g){var c=z(a[0]),q=z(a[1]);return"list"===c.ctype&&"list"===q.ctype?h.remove(c,q):"shape"===c.ctype&&"shape"===q.ctype?D.shaperemove(c,q):k}function dd(a,g){var c=z(a[0]),q=z(a[1]);return"list"===c.ctype?h.append(c,q):k}function ed(a,g){var c=z(a[0]),q=z(a[1]);return"list"===q.ctype?h.prepend(c,q):k}function wc(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 ce(a){return 1===a?0:1}function Jb(a,g,c){var q=g*g-4*a*c;0<=q?(q=Math.sqrt(q),0<g&&(q=-q),g=[[q- +g,2*a],[2*c,q-g]]):g=null;if(null===g)return null;a=g[0][0]/g[0][1];g=g[1][0]/g[1][1];return g<a?[g,a]:[a,g]}function fd(a,g,c,q,b,d,h){if(-1!==g.indexOf("\n")){var e=Infinity,f=-Infinity,m=Infinity,k=-Infinity;g.split("\n").forEach(function(g){g=fd(a,g,c,q,b,d);e>g.left&&(e=g.left);f<g.right&&(f=g.right);m>g.top&&(m=g.top);k<g.bottom&&(k=g.bottom);q+=h});return{left:e,right:f,top:m,bottom:k}}var l=a.measureText(g);a.fillText(g,c-l.width*b,q);return{left:c-l.width*b,right:c+l.width*(1-b),top:q-.84* +d,bottom:q+.36*d}}function Ja(a){return"image"===a.ctype?a.value:"string"===a.ctype&&bb.hasOwnProperty(a.value)?bb[a.value].value:null}function pb(a,g,c,q,b){var d=[];if(a.readPixels)d=a.readPixels(g,c,q,b);else{var h,e;if(a.img.getContext)e=a.img.getContext("2d"),h=e.getImageData(g,c,q,b).data;else try{Kb||(Kb=document.createElement("canvas")),Kb.width=q,Kb.height=b,e=Kb.getContext("2d"),e.drawImage(a.img,g,c,q,b,0,0,q,b),h=e.getImageData(0,0,q,b).data}catch(f){console.log(f)}for(var m in h)d.push(h[m]/ +255)}return d}function gd(a){return a.replace(/[^A-Za-z0-9 \u0080-\uffff]/ig,"\\$&")}function la(a,g,c){var q=a;g&&(q=q+" at "+g.row+":"+g.col);c&&(q=q+": \u2018"+c+"\u2019");q=Error(q);q.name="CindyScriptParseError";q.description=a;q.location=g;q.text=c;return q}function qb(a){this.input=a;this.re=new RegExp(hd,"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 $b(a){var g=a[a.length-2],c=a[a.length-3],q= +a[a.length-1];if(c){if(c.isSuperscript&&g.precedence<=c.precedence)throw la("Operator not allowed after superscript",g.start,g.text);if(q){if(!g.op.infix)throw la("Operator may not be used infix",g.start,g.text);}else if(!g.op.postfix)throw la("Operator may not be used postfix",g.start,g.text);}else if(q){if(!g.op.prefix)throw la("Operator may not be used prefix",g.start,g.text);}else if(!g.op.bare)throw la("Operator without operands",g.start,g.text);g.ctype="infix";g.oper=g.op.sym;g.args=[c,q];a.splice(a.length- +3,3,g)}function id(a,g,c,q){a.length&1||a.push(null);for(c=Ca[c];3<=a.length&&a[a.length-2].precedence<=c.precedence;)$b(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(q.indexOf(b.charAt(d)));g.ctype="number";g.value={real:+c,imag:0};a.push(g);$b(a)}function jd(a,g){var c=[],q;a:for(;;)switch(q=a.next(),q.toktype){case "OP":var b=Ca[q.text];"_"!==b.sym||!c.length||c.length& +1||"OP"!==c[c.length-1].toktype||":="!==c[c.length-1].op.sym||(c.pop(),b=Ca[":=_"],q.text=b.sym);q.op=b;q.precedence=b.precedence;for(c.length&1||c.push(null);3<=c.length&&c[c.length-2].precedence<=q.precedence;)$b(c);b.rassoc&&q.precedence++;c.push(q);break;case "ID":q.ctype="variable";q.name=q.text;if(c.length&1)throw la("Missing operator",q.start,q.text);c.push(q);break;case "NUM":q.ctype="number";q.value={real:+q.text,imag:0};if(c.length&1)throw la("Missing operator",q.start,q.text);c.push(q); +break;case "STR":q.ctype="string";q.value=q.raw.substring(1,q.raw.length-1);if(c.length&1)throw la("Missing operator",q.start,q.text);c.push(q);break;case "SUB":id(c,q,"_","\u2080\u2081\u2082\u2083\u2084\u2085\u2086\u2087\u2088\u2089\u208a\u208b");break;case "SUP":id(c,q,"^","\u2070\u00b9\u00b2\u00b3\u2074\u2075\u2076\u2077\u2078\u2079\u207a\u207b");c[c.length-1].isSuperscript=!0;break;case "BRA":b="[](){}||".indexOf(q.text);if(q.text===g||b&1)break a;var b="[](){}||".charAt(b+1),d=jd(a,b),h=d.closedBy; +if(h.text!==b)throw la("Opening "+q.text+" at "+q.start.row+":"+q.start.col+" closed by "+(h.text||"EOF")+" at "+h.start.row+":"+h.start.col);h=q.text+h.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("{}"===h)throw la("{\u2026} reserved for future use",q.start);d=c[c.length-1];if("variable"!==d.ctype)throw la("Function name must be an identifier",d.start);if(2<c.length&&c[c.length-2].precedence<kd)throw la("Function call in indexing construct must be enclosed in parentheses", +q.start);d.ctype="function";q=d.args=[];for(var h=d.modifs={},e=0;e<b.length;++e){var f=b[e];if(f&&"infix"===f.ctype&&"->"===f.oper){var m=f.args[0];if("variable"!==m.ctype)throw la("Modifier name must be an identifier",f.start);h[m.name]=f.args[1]}else q.push(f)}d.oper=d.name.toLowerCase()+"$"+d.args.length}else if("||"===h)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 la("Don't support |\u2026| with "+ +b.length+" arguments",q.start);else{if("{}"===h)throw la("{\u2026} reserved for future use",q.start);"[]"!==h&&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;)$b(c);return{expr:c[0],closedBy:q}}function Lb(a){this.usedFunctions={};this.usedVariables={}}function z(a){if(void 0===a)return k;if("infix"===a.ctype)return a.impl(a.args,{}, +a);if("variable"===a.ctype)return z(J.getvar(a.name));if("function"===a.ctype)return Mb.push(a),a=D.evaluate(a.oper,a.args,a.modifs),Mb.pop(),a;if("void"===a.ctype)return k;if("field"===a.ctype){var g=z(a.obj);return"geo"===g.ctype?ta.getField(g.value,a.key):"list"===g.ctype?h.getField(g,a.key):k}return"userdata"===a.ctype?(g=z(a.obj),a=Z(z(a.key)),"_?_"===a&&(a=void 0),"geo"===g.ctype?ta.getuserData(g.value,a):"list"===g.ctype||"string"===g.ctype?ta.getuserData(g,a):k):a}function B(a){a=z(a);if("geo"=== +a.ctype){var g=a.value;if("P"===g.kind)return ta.getField(g,"xy");if("V"===g.kind)return g.value}return a}function K(a){a=z(a);if("geo"===a.ctype){var g=a.value;if("P"===g.kind||"L"===g.kind)return ta.getField(g,"homog")}return h._helper.isNumberVecN(a,3)?a:h._helper.isNumberVecN(a,2)?(g=h.turnIntoCSList([a.value[0],a.value[1],m.real(1)]),a.usage&&(g=w.withUsage(g,a.usage)),g):k}function Ua(a){var g=new Lb;g.usedFunctions=hb;g.infixmap=Q;a=g.parse(a);for(var c in g.usedVariables)J.create(c);return a} +function Td(a,g){return{ctype:"infix",args:[],impl:function(){Mb=[{oper:g}];var c=z(a);Mb=[];return c}}}function ka(a){wa.err(a+Mb.map(function(a){return"\n at "+a.oper}).join("\n"))}function ld(){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 md(){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 nd(a,g){var c=a.width,q=a.height,b=document.createElement("canvas");b.setAttribute("width", +c);b.setAttribute("height",q);b.setAttribute("style","display:none;");var d=sa.canvas;d.parentNode.insertBefore(b,d.nextSibling);try{return b.getContext("2d").drawImage(a,0,0,c,q),b.toDataURL(g||"image/png")}finally{b.parentNode.removeChild(b)}}function de(a){a=a.replace(RegExp("[^ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/]+","g"),"");var g=new Uint8Array(3*a.length>>2),c,q,b,d,h,e;for(q=c=0;c+3<a.length;c+=4)b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c)), +d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1)),h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+2)),e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+3)),g[q++]=b<<2|d>>4,g[q++]=d<<4|h>>2,g[q++]=h<<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[q++]=b<<2|d>>4;break;case 3:b="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c));d="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+1));h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".indexOf(a.charAt(c+2));g[q++]=b<<2|d>>4;g[q++]=d<<4|h>>2;break;default:throw Error("Malformed Base64 input: "+(a.length-c)+" chars left: "+a.substr(c));}if(q!==g.length)throw Error("Failed assertion: "+q+" should be "+ +g.length);return g}function ee(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=[],q=8;q<a.length;){if(q+12>a.length)throw Error("Incomplete chunk at offset 0x"+q.toString(16));var b=g(q);if(2147483648<=b)throw Error("Chunk too long");var d=q+12+b;if(d>a.length)throw Error("Incomplete chunk at offset 0x"+q.toString(16));var h=a.subarray(q+ +4,q+8),h=String.fromCharCode.apply(String,h);c.push({len:b,type:h,data:a.subarray(q+8,q+8+b),crc:g(q+8+b)});q=d}return c}function ac(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 fe(a){var g=1;Object.keys(bb).forEach(function(c){var q=bb[c].value.img;if(void 0===q.cachedDataURL&&q.src)if("data:"=== +q.src.substr(0,5))q.cachedDataURL=q.src;else{++g;q.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(){q.cachedDataURL=c.result;console.log("Cached data for image "+q.src);0===--g&&a()};c.readAsDataURL(b.response)}else console.error("Failed to load "+q.src+": "+b.statusText),0===--g&&a()};b.open("GET",q.src,!0);b.send()}});0===--g&&a()}function rb(a,g, +c){for(c||(c="0");a.length<g;)a=c+a;return a}function od(){null!==Nb&&(window.URL.revokeObjectURL(Nb),Nb=null)}function pd(a){fe(function(){var g=A;try{A=new a;A.width=ca;A.height=da;n();var c=A.toBlob();Nb=window.URL.createObjectURL(c);qd(Nb)}finally{A=g}})}function Ob(a){var g=null,c=1E6,q;console.log("getElementAtMouse");for(var b=0;b<v.gslp.length;b++){var d=v.gslp[b];if(!d.pinned&&!1!==d.visible&&!0!==d.tmp){var e,f,k,l=y.drawingstate.matrix.sdet;if("P"===d.kind){var n=h.normalizeZ(d.homog); +if(!h._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/l&&(k=1E4)}else if("C"===d.kind)f=v.csnames[d.args[0]],k=0,"undefined"!==typeof d.radius&&(k=d.radius.value.real),e=m.div(f.homog.value[0],f.homog.value[2]).value.real,f=m.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/l;else if("L"===d.kind||"S"===d.kind)e=d.homog,k=m,f=k.add(k.mult(e.value[0],k.conjugate(e.value[0])), +k.mult(e.value[1],k.conjugate(e.value[1]))),f=h.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/l&&(c=k,g=d,q={x:e,y:f})}}return null===g?null:{mover:g,offset:q,prev:{x:a.x,y:a.y}}}function Xa(){return"P"+ge++}function wb(a){var g=G[xc].actions;g[xb].event===a&&g[xb]["do"]()&&(e(),xb===g.length-1?(Aa=[],xb=Ya=0):xb++)}function yc(a){return a&&.5>Math.abs(a.offset.x)&&.5>Math.abs(a.offset.y)&& +!a.mover.tmp}function rd(a){return yc(a)&&"P"===a.mover.kind}function sd(a){return yc(a)&&("L"===a.mover.kind||"S"===a.mover.kind)}function zc(a){ja={mover:a,offset:{x:0,y:0},prev:{x:aa.x,y:aa.y}}}function sb(){var a=Ob(aa);rd(a)?Aa[Ya]=a.mover:(Aa[Ya]={type:"Free",name:Xa(),labeled:!0,pos:[ra[0],ra[1],1]},Ka(Aa[Ya]));Ya++}function td(){var a=Ob(aa);return sd(a)?(Aa[Ya]=a.mover,Ya++,!0):!1}function ud(){var a=Ob(aa),g;(g=sd(a))||(g=yc(a)&&"C"===a.mover.kind);return g?(Aa[Ya]=a.mover,Ya++,!0):!1}function yb(){var a= +Ob(aa);if(rd(a))for(Pb.args[1]=a.mover.name,a=0;a<v.gslp.length;a++){var g=v.gslp[a];!0===g.tmp&&vd(g.name)}else for(a=0;a<v.gslp.length;a++)g=v.gslp[a],!0===g.tmp&&(g.tmp=!1)}function bc(a){var g={type:"Free",name:Xa(),labeled:!0,pos:[ra[0],ra[1],1],tmp:!0},g=Ka(g);Pb=Ka({type:a,name:Xa(),labeled:!0,args:[Aa[0].name,g.name]});zc(g)}function he(a){for(var g in a)null!==a[g]&&(ga[g]=a[g])}function Ud(a){Object.keys(l).forEach(function(a){var c=l[a];kb(c.signature||"_helper"===a,a+" has no signature"); +void 0!==c.updatePosition&&void 0===c.stateSize&&(c.stateSize=0)});v.gslp=[];v.csnames={};v.points=[];v.lines=[];v.conics=[];v.texts=[];v.free=[];v.polygons=[];v.ifs=[];a.forEach(wd);xd()}function yd(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 ie(a){void 0===a.size&&(a.size=ga.pointSize);a.size=m.real(a.size);!a.movable|| +a.pinned?(a.color=h.realVector(a.color||ga.pointColor),a.color=h.scalmult(m.real(ga.dimDependent),a.color)):a.color=h.realVector(a.color||ga.pointColor);void 0===a.alpha&&(a.alpha=ga.alpha);a.alpha=m.real(a.alpha);"boolean"!==typeof a.noborder&&(a.noborder=ga.noborder);a.noborder=w.bool(a.noborder);"boolean"!==typeof a.border&&(a.border=!ga.noborder);a.border=w.bool(a.border);a.drawtrace&&yd(a)}function cc(a){void 0===a.size&&(a.size=ga.lineSize);a.size=m.real(a.size);a.color=h.realVector(a.color|| +ga.lineColor);void 0===a.alpha&&(a.alpha=ga.alpha);a.alpha=m.real(a.alpha);a.clip=w.string(a.clip||ga.clip);void 0===a.overhang&&(a.overhang=ga.overhangLine);a.overhang=m.real(a.overhang);a.dashtype&&(a.dashtype=w.wrap(a.dashtype))}function je(a){void 0===a.overhang&&(a.overhang=ga.overhangSeg);a.arrow&&(a.arrow=w.bool(a.arrow));a.arrowsize&&(a.arrowsize=m.real(a.arrowsize));a.arrowposition&&(a.arrowposition=m.real(a.arrowposition));a.arrowshape&&(a.arrowshape=w.string(a.arrowshape));a.arrowsides&& +(a.arrowsides=w.string(a.arrowsides));cc(a);a.clip=w.string("end")}function ke(a){a.size=void 0!==a.textsize?a.textsize:void 0!==a.size?a.size:ga.textsize;a.size=m.real(+a.size)}function le(a){a.filled=void 0!==a.filled?w.bool(a.filled):w.bool(!0);a.fillcolor=void 0===a.fillcolor?k:h.realVector(a.fillcolor);void 0===a.fillalpha&&(a.fillalpha=0);a.fillalpha=m.real(a.fillalpha);cc(a)}function Ka(a){a=wd(a);xd();return a}function wd(a){var g;if(void 0!==v.csnames[a.name])return console.log("Element name '"+ +a.name+"' already exists"),g=v.csnames[a.name],l[g.type].isMovable&&"P"===l[g.type].kind&&La(g,a.pos,"homog"),{ctype:"geo",value:g};for(;Ac.hasOwnProperty(a.type);)a.type=Ac[a.type];if(g=zd[a.type]){var c=g(a),q=null;for(g=0;g<c.length;++g)q=Ka(c[g]);return q}var b=l[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(v.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 "+v.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(!v.csnames.hasOwnProperty(a.args[g]))return console.log("Dropping "+a.name+" due to missing argument "+a.args[g]),null;if("**"!==b.signature&&!c&&(q=v.csnames[a.args[g]].kind,b.signature[g]!==q&&("S"!==q||"L"!==b.signature[g])))return window.alert("Wrong argument kind "+q+" 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);v.gslp.push(a);v.csnames[a.name]= +a;g=Da.length;a.kind=b.kind;a.stateIdx=g;g+=b.stateSize;a.incidences=[];a.isshowing=!0;a.movable=!1;b.isMovable&&(a.movable=!0,v.free.push(a));"P"===a.kind&&(v.points.push(a),ie(a));"L"===a.kind&&(v.lines.push(a),cc(a));"C"===a.kind&&(v.conics.push(a),cc(a));"S"===a.kind&&(v.lines.push(a),je(a));"Text"===a.kind&&(v.texts.push(a),ke(a));"Poly"===a.kind&&(v.polygons.push(a),le(a));"IFS"===a.kind&&v.ifs.push(a);me(g);qa=Oa=Da;lb=!0;b.initialize&&(Ba=Ea=a.stateIdx,a.param=b.initialize(a),kb(Ea===a.stateIdx+ +b.stateSize,"State fully initialized"));Ba=Ea=a.stateIdx;b.updatePosition(a,!1);kb(Ba===a.stateIdx+b.stateSize,"State fully consumed");kb(Ea===a.stateIdx+b.stateSize,"State fully updated");lb=!1;qa=ib["in"];qa.set(Da);Oa=ib.out;Bc(a,b);dc={};mb(a);return v.csnames[a.name]}function vd(a){var g,c;console.log("Remove element "+a);delete v.csnames[a];for(g=0;g<v.gslp.length;g++)c=v.gslp[g],c.name===a&&(console.log("Removed element from gslp "+a),v.gslp.splice(g,1));for(g=0;g<v.free.length;g++)c=v.free[g], +c.name===a&&(console.log("Removed element from free "+a),v.free.splice(g,1));for(g=0;g<v.points.length;g++)c=v.points[g],c.name===a&&(console.log("Removed element from points "+a),v.points.splice(g,1));for(g=0;g<v.lines.length;g++)c=v.lines[g],c.name===a&&(console.log("Removed element from lines "+a),v.lines.splice(g,1));for(g=0;g<v.conics.length;g++)c=v.conics[g],c.name===a&&(console.log("Removed element from conics "+a),v.conics.splice(g,1));dc={}}function Ad(a,g){var c=v.csnames[g.args[0]].homog, +q=v.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]),h=m.div(q.value[0],q.value[2]),q=m.div(q.value[1],q.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(h)&&m._helper.isAlmostReal(q)&&m._helper.isAlmostReal(e)&&m._helper.isAlmostReal(b)?(d=d.value.real,c=c.value.real,h=h.value.real,q=q.value.real,e=e.value.real,b=b.value.real,d=Math.sqrt((d-h)* +(d-h)+(c-q)*(c-q))-Math.sqrt((d-e)*(d-e)+(c-b)*(c-b))-Math.sqrt((h-e)*(h-e)+(q-b)*(q-b)),1E-15>d*d):!1}function Bc(a,g){a.isshowing=!0;if(a.args)for(var c=0;c<a.args.length;c++)if(!v.csnames[a.args[c]].isshowing){a.isshowing=!1;return}g.visiblecheck&&g.visiblecheck(a)}function Xc(a,g,c,q,b){var d=a.textsize||ga.textsize,h=!0===a.textbold,e=!0===a.textitalics,f=a.text_fontfamily||ga.fontFamily,k=q.x*q.x+q.y*q.y,l=1;0<k&&(l=1+a.size.value.real/Math.sqrt(k));a=a.alpha||m.real(ga.alpha);D.drawtext([c, +w.wrap(g)],{x_offset:w.wrap(l*q.x),y_offset:w.wrap(l*q.y),size:w.wrap(d),bold:w.wrap(h),italics:w.wrap(e),family:w.wrap(f),color:b,alpha:a})}function $d(a){a._bbox=null;if(a.isshowing&&!1!==a.visible){var g={size:a.size},c=a.homog,q=a.text,b=l[a.type].getText,q=b?b(a):q.replace(/@[$#]"([^"\\]|\\.)*"/g,function(a){var c,g;try{if(c=JSON.parse(a.substring(2)),g=v.csnames[c],!g)return"?"}catch(q){return"?"}switch(a.charAt(1)){case "$":return g.printname||c;case "#":return"V"!==g.kind?"?":Z(g.value)}}), +b=null;if(a.html)var d=a._textCache||{text:!1},h=a.html,e=h.parentNode,f=e.parentNode,b=function(c,g,q,b,oa){d.invisible&&f.style.removeProperty("display");if(c!==d.text||g!==d.font||q!==d.x||b!==d.y||oa!==d.align){g!==d.font&&(h.style.font=g,h.style.lineHeight=ga.lineHeight);c!==d.text&&!1!==c&&!1===Bd(h,c,g)&&(c=!1);f.style.left=q+"px";f.style.top=b+"px";if(oa||e.style.transform)e.style.transform="translateX("+-100*oa+"%)";a._textCache={text:c,font:g,x:q,y:b,align:oa}}};q=w.string(q);a.dock&&(a.dock.to? +c=v.csnames[a.dock.to].homog:Cd.hasOwnProperty(a.dock.corner)&&(c=t.screenbounds$0([],{}),c=c.value[Cd[a.dock.corner]]),g.offset=a.dock.offset);a.align&&(g.align=w.string(a.align));c&&(a._bbox=D.drawtext([c,q],g,b))}else a.html&&(a.html.parentNode.parentNode.style.display="none",a._textCache={invisible:!0})}function Zd(){function a(){var a=e++/c._traces.length,g=c._traces[h];g&&(a*=q*a*a,t.draw$1([g],{size:m.real(b),color:c.color,alpha:m.real(a)}));b*=d}for(var g=0;g<v.points.length;g++){var c=v.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 q=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 h,e=0;for(h=c._traces_index;h<c._traces.length;++h)a();for(h=0;h<c._traces_index;++h)a()}}}function kb(a,g){var c="Assertion failed: "+g;if(!a)throw console.log(c),Ta(),"undefined"!==typeof alert&&alert(c), +Error(c);}function me(a){if(a!==Da.length){var g,c,q=Cc.length;nb.length<a*q?(g=2*a,nb=new Float64Array(q*g)):g=nb.length/q|0;for(c=0;c<q;++c)ib[Cc[c]]=nb.subarray(c*g,c*g+a);a=Da;qa=ib["in"];Oa=ib.out;Da=ib.good;Da.set(a)}}function zb(){Da.set(qa);Ma=!1;Dd(!1);for(var a=Da.length,g=Math.abs,c=0;c<a;c+=2)g(Da[c])>1E12*g(Da[c+1])&&(Da[c+1]=0)}function ec(){if(Ab)Ma=!0;else throw Ed;}function Fd(a,g,c,q,b){return w.add(q,w.mult(c,w.sub(b,q)))}function Yd(){L&&(L.currentMouseAndScripts=[]);Dc=!0;if(ja){var a= +ja.mover,g=h.realVector([aa.x+ja.offset.x,aa.y+ja.offset.y,1]);Gd(a,g,"mouse");ja.prev.x=aa.x;ja.prev.y=aa.y}z(R.move);z(R.draw);Ma||zb();Dc=!1;L&&(L.fullLog.push(h.turnIntoCSList([h.turnIntoCSList(L.currentMouseAndScripts)])),L.length>L.logLength&&L.splice(0,L.length-L.logLength),L.currentMouseAndScripts=null,L.postMouseHooks.forEach(function(a){a()}))}function La(a,g,c){Gd(a,g,c);Dc||Ma||zb()}function Gd(a,g,c){L&&L.currentMouseAndScripts&&(L.currentMover=[]);a===Hd?(qa.set(Da),Ma=!1):(Hd=a,zb()); +Oa.set(qa);var q=1E4,b;b=dc[a.name];if(!b){var d={},e=0;b=[];d[a.name]=a;for(var f=v.gslp,k=0;k<f.length;++k){var n=f[k],Wa=n.args;if(Wa)for(var p=0;p<Wa.length;++p)d.hasOwnProperty(Wa[p])&&(d[n.name]=n,b[e++]=n)}dc[a.name]=b}var d=-1,e=.9,r,t,u,f=l[a.type],k=f.parameterPath||Fd;Ba=a.stateIdx;n=f.getParamFromState(a);Ba=Ea=a.stateIdx;Wa=f.getParamForInput(a,g,c);for(p=d+e;d!==p;){var x=p*p,y=.5/(1+x),y=m.complex(2*p*y+.5,(1-x)*y);Ab=d+.5*e<=d||0===q;0===q&&console.log("tracing limit Reached");x=!1; +L&&L.currentMouseAndScripts&&(L.currentStep=[]);try{Ba=Ea=a.stateIdx;var A=k(a,p,y,n,Wa);L&&(L.currentParam=A);y=Oa;Oa=qa;f.putParamToState(a,A);Oa=y;Ea=a.stateIdx;L&&(L.currentElement=a);f.updatePosition(a,!0);kb(Ba===a.stateIdx+f.stateSize,"State fully consumed");kb(Ea===a.stateIdx+f.stateSize,"State fully updated");for(r=0;r<b.length;++r)t=b[r],u=l[t.type],Ba=Ea=t.stateIdx,L&&(L.currentElement=t),u.updatePosition(t,!1),kb(Ba===t.stateIdx+u.stateSize,"State fully consumed"),kb(Ea===t.stateIdx+u.stateSize, +"State fully updated");L&&(L.currentElement=null);d=p;e*=1.25;p+=e;1<=p&&(p=1);Oa=qa;qa=y}catch(z){if(z!==Ed)throw z;e*=.5;p=d+e;--q;x=!0}L&&L.currentMouseAndScripts&&(L.currentMover.push(h.turnIntoCSList([h.turnIntoCSList(L.currentStep),w.wrap(x),w.wrap(d),w.wrap(p),w.wrap(L.currentParam)])),L.currentStep=null,L.currentParam=null)}Dd(Ma);for(r=0;r<b.length;++r)t=b[r],u=l[t.type],Bc(t,u);L&&L.currentMouseAndScripts&&(L.currentMouseAndScripts.push(h.turnIntoCSList([h.turnIntoCSList(L.currentMover), +w.wrap(Ma),w.wrap(a.name),g,w.wrap(c),n,Wa])),L.currentMover=null)}function Vd(){zb();Ab=!0;for(var a=v.gslp,g=0;g<a.length;g++){var c=a[g],q=l[c.type];Ba=Ea=c.stateIdx;q.updatePosition(c,!1);Bc(c,q)}a=Oa;Oa=qa;qa=a;zb()}function Dd(a){var g=p.tracingStateReport;"string"===typeof g&&(document.getElementById(g).textContent=a?"BAD":"GOOD")}function ne(){return h.turnIntoCSList(L.fullLog.slice())}function oe(a){var g=JSON.stringify(L.fullLog);a=new Blob([g],{type:a?"application/octet-stream":"application/json"}); +return window.URL.createObjectURL(a)}function Bb(){var a=Ba;Ba+=2;return m.complex(qa[a],qa[a+1])}function X(a){for(var g=Array(a),c=0;c<a;++c)g[c]=Bb();return h.turnIntoCSList(g)}function Za(a){Oa[Ea]=a.value.real;Oa[Ea+1]=a.value.imag;Ea+=2}function T(a){for(var g=0,c=a.value.length;g<c;++g)Za(a.value[g])}function Pa(a,g){var c=X(3),q=X(3),c=Ec(a,g,c,q);T(c[0]);T(c[1]);return h.turnIntoCSList(c)}function Ec(a,g,c,q){if(lb)return[a,g];var b=h.projectiveDistMinScal(c,a),d=h.projectiveDistMinScal(c, +g),e=h.projectiveDistMinScal(q,a),f=h.projectiveDistMinScal(q,g),m=h.projectiveDistMinScal(c,q),l=h.projectiveDistMinScal(a,g),n=b+f,p=d+e,r;n>p?(r=[g,a],n=p):r=[a,g];p=function(){};if(L&&L.currentStep){var t=[L.labelTracing2,w.wrap(L.currentElement.name),h.turnIntoCSList(r),h.turnIntoCSList([c,q]),h.realMatrix([[b,d],[e,f]]),w.wrap(n),w.wrap(m),w.wrap(l),k];L.currentStep.push(h.turnIntoCSList(t));p=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));t[t.length-1]=L[a]}}h._helper.isNaN(a)||h._helper.isNaN(g)? +(p("Tracing failed due to NaNs."),Ma=!0):m>3*n&&l>3*n?p("Normal case, everything all right."):1E-5>l?1E-5>m?p("Staying inside singularity."):(p("Moved into singularity."),Ma=!0):1E-5>m?p("Moved out of singularity."):(Ab?p("Reached refinement limit, giving up."):p("Need to refine."),ec());return r}function Fc(a,g,c,q){var b=X(3),d=X(3),e=X(3),f=X(3);a=pe(a,g,c,q,b,d,e,f);T(a[0]);T(a[1]);T(a[2]);T(a[3]);return h.turnIntoCSList(a)}function pe(a,g,c,q,b,d,e,f){var m=function(){};b=[b,d,e,f];a=[a,g,c, +q];if(lb)return a;d=0;q=Array(4);for(c=0;4>c;c++)for(q[c]=Array(4),f=0;4>f;f++)e=h.projectiveDistMinScal(b[c],a[f]),q[c][f]=e;e=uc(q);g=Array(4);for(c=0;4>c;++c)g[c]=a[e[c]],d+=q[c][e[c]];var l=1*d,n=Infinity,p=Infinity;for(c=0;4>c;c++){if(h._helper.isNaN(a[c]))return m("Tracing failed due to NaNs."),Ma=!0,g;for(f=c+1;4>f;f++)e=h.projectiveDistMinScal(b[c],b[f]),n>e&&(n=e),e=h.projectiveDistMinScal(g[c],g[f]),p>e&&(p=e)}if(L&&L.currentStep){var r=[L.labelTracing4,w.wrap(L.currentElement.name),h.turnIntoCSList(g), +h.turnIntoCSList(b),h.realMatrix(q),w.wrap(d),w.wrap(n),w.wrap(p),k];L.currentStep.push(h.turnIntoCSList(r));m=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));r[r.length-1]=L[a]}}n>l&&p>l||(1E-5>p?1E-5>n?m("Staying inside singularity."):(m("Moved into singularity."),Ma=!0):1E-5>n?m("Moved out of singularity."):(Ab?m("Reached refinement limit, giving up."):m("Need to refine."),ec()));return g}function Id(a){var g=a.length,c,q;if(lb){for(c=0;c<g;++c)Ba+=2*a[c].value.length,T(a[c]);return a}var b= +Array(g),d=Array(g),e=Array(g),f=99,m=99,l=Array(g);for(c=0;c<g;++c)b[c]=X(a[c].value.length),d[c]=h.normSquared(b[c]).value.real,e[c]=h.normSquared(a[c]).value.real,l[c]=Array(g);var n;for(c=0;c<g;++c){for(q=0;q<g;++q)n=h.sesquilinearproduct(b[c],a[q]).value,n=(n.real*n.real+n.imag*n.imag)/(d[c]*e[q]),l[c][q]=1-n;for(q=c+1;q<g;++q)n=h.sesquilinearproduct(b[c],b[q]).value,n=(n.real*n.real+n.imag*n.imag)/(d[c]*d[q]),f>1-n&&(f=1-n),n=h.sesquilinearproduct(a[c],a[q]).value,n=(n.real*n.real+n.imag*n.imag)/ +(e[c]*e[q]),m>1-n&&(m=1-n)}n=uc(l);q=Array(g);d=0;e=!1;for(c=0;c<g;++c){var d=d+l[c][n[c]],p=q[c]=a[n[c]];T(p);e|=h._helper.isNaN(p)}e|=isNaN(d);a=function(){};if(L&&L.currentStep){var r=[L.labelTracingSesq,w.wrap(L.currentElement.name),h.turnIntoCSList(q),h.turnIntoCSList(b),h.realMatrix(l),w.wrap(d),w.wrap(f),w.wrap(m),k];L.currentStep.push(h.turnIntoCSList(r));a=function(a){L.hasOwnProperty(a)||(L[a]=w.wrap(a));r[r.length-1]=L[a]}}e?(a("Tracing failed due to NaNs."),Ma=!0):f>3*d&&m>3*d?a("Normal case, everything all right."): +1E-5>m?1E-5>f?a("Staying inside singularity."):(a("Moved into singularity."),Ma=!0):1E-5>f?a("Moved out of singularity."):(Ab?a("Reached refinement limit, giving up."):a("Need to refine."),ec());return q}function Qb(a,g){var c=l._helper.flattenConicMatrix(a),q=l._helper.flattenConicMatrix(g),b=X(6),d=X(6),q=Ec(c,q,b,d);T(q[0]);T(q[1]);c=l._helper.buildConicMatrix(q[0].value);q=l._helper.buildConicMatrix(q[1].value);return h.turnIntoCSList([c,q])}function mb(a){if(mb.hasOwnProperty(a.kind))mb[a.kind](a)} +function Jd(a,g){return function(){a.incidences.push(g.name);g.incidences.push(a.name)}}function Kd(a,g){return{toString:function(){return"point "+a.name+" incident line "+g.name},apply:Jd(a,g),holds:function(){var c=h.scaldiv(h.abs(a.homog),a.homog),q=h.scaldiv(h.abs(g.homog),g.homog);return 1E-13>m.abs(h.scalproduct(c,q)).value.real}}}function Ld(a,g){return{toString:function(){return"point "+a.name+" incident conic "+g.name},apply:Jd(a,g),holds:function(){var c=w.mult(g.matrix,a.homog),c=w.mult(a.homog, +c),c=m.abs(c);1E-13>c.value.real&&(a.incidences.push(g.name),g.incidences.push(a.name))}}}function xd(){if(0!==ob.length){for(var a=0;a<ob.length;++a)ob[a].apply();ob=[]}}function Gc(a,g,c){var q=document.createElement("div"),b=document.createElement("img");b.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAPoCAQAAAC1v1zVAAAAGklEQVR42u3BMQEAAADCoPVPbQ0PoAAAgHcDC7gAAVI8ZnwAAAAASUVORK5CYII=";q.className="CindyJS-baseline";q.appendChild(b);b=document.createElement("div");b.className="CindyJS-button"; +q.appendChild(b);for(var d=2;d<arguments.length;++d)b.appendChild(arguments[d]);na.parentNode.appendChild(q);a.html=arguments[arguments.length-1];Ia(a.fillalpha)||(a.fillalpha=1);a.fillcolor&&(a.html.style.backgroundColor=x.makeColor(a.fillcolor,a.fillalpha));q=e;if(a.script)var h=Ua(a.script),q=function(){z(h);e()};c.addEventListener(g,q);!p.keylistener&&(R.keydown||R.keyup||R.keytyped)&&(c.addEventListener("keydown",function(a){9!==a.keyCode&&I(a,R.keydown)}),c.addEventListener("keyup",function(a){I(a, +R.keyup)}),c.addEventListener("keypress",function(a){9!==a.keyCode&&I(a,R.keytyped)}));l.Text.initialize(a)}function Sa(){}function qe(a){if(!/^Select/.test(a.type)&&!l[a.type].isMovable)return null;var g=w.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 re(a){var g={};g.offset=w.unwrap(a.offset);a.to&&(g.to=a.to);a.corner&&(g.corner=a.corner);return g}function se(a){var g={};te.forEach(function(c){if(a.hasOwnProperty(c)){var b=w.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/ga.dimDependent);g.color=w.unwrap(h.scalmult(c,a.color))}if(c=qe(a))g.pos=c;a.dock&&(g.dock=re(a.dock));return g}function ue(){var a=[];v.gslp.forEach(function(g){g.tmp||a.push(se(g))});return a}function Wd(){Fa.forEach(function(a){var g= +(a.geo||[]).map(function(a){return v.csnames[a]});O[a.type].reset(a,g[0],g)})}function nc(a){qc=0!==a.length;Fa=[];ma=[];Hc=[];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 v.csnames[a]}),q=c[0],b=O[a.type];b?(b.init&&b.init(a,q,c),q&&(q.behavior=a,"Mass"===a.type?ma.push(q):"Spring"===a.type&&Hc.push(q)),Fa.push(a)):(console.error(a),console.error("Behavior "+ +a.type+" not implemented yet"))})}var va=this,wa,R={},cb=!1,Xb=!0,Ib=0,Vc=.5,pc=0,Vb=10,Md=5/360,Xd=.32/Md/1E3*2,Tb=1,za=0,lc=0,Eb=!1,Fb=!1,na,Db,Ia=Number.isFinite||function(a){return"number"===typeof a&&isFinite(a)},ra,A,ca,da,v,bb,rc=k,sc=k,Va={play:Sa,pause:Sa,stop:Sa},oc=null,Gb=function(a,g){var c=[];Gb=function(a,g){c.push({img:a,id:g})};Gb(a,g);var q=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 "+ +q+": "+b.statusText);else{var a=b.responseXML,g=a.documentElement,d={},h,e;for(h=g.firstChild;h;h=e)e=h.nextSibling,h.nodeType===Node.ELEMENT_NODE&&"http://www.w3.org/2000/svg"===h.namespaceURI&&"g"===h.localName.toLowerCase()&&(g.removeChild(h),h.setAttribute("style","display:inline"),d[h.getAttribute("id")]=h);var f=new XMLSerializer;Gb=function(c,q){if(d.hasOwnProperty(q)){var b=d[q];g.appendChild(b);var h;try{h=f.serializeToString(a)}finally{g.removeChild(b)}c.src="data:image/svg+xml;charset=utf-8,"+ +encodeURIComponent(h)}};c.forEach(function(a){Gb(a.img,a.id)});c=null}};b.responseType="document";b.open("GET",q);b.send()},Wc=1,Hb=null,jb=[],Yb=!1,sa={config:p,startup:S,shutdown:Ta,evokeCS:function(a){a=Ua(a,!1);z(a);e()},play:M,pause:Ga,stop:Ha,evalcs:function(a){return z(Ua(a,!1))},parse:function(a){return Ua(a)},niceprint:Z,canvas:null},kc=!1,Ub=0;p.use&&p.use.forEach(function(a){var g=null;p.plugins&&(g=p.plugins[a]);g||(g=va._pluginRegistry[a]);g||(++Ub,console.log("Loading script for plugin "+ +a),va.loadScript(a+"-plugin",a+"-plugin.js",function(){console.log("Successfully loaded plugin "+a);0===--Ub&&kc&&S()},function(){console.error("Failed to auto-load plugin "+a);0===--Ub&&kc&&S()}))});Cb.prototype=new fb;gb.prototype=new fb;ua.prototype=new fb;var aa={},ja,Yc="",Zc=0,Zb;Zb=p.isNode?process.nextTick:window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){window.setTimeout(a, +0)};var tc=null,ve=[0,8,7,0,"g8c01b8d"],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),q=m._helper.niceround(a.value.imag,g);return 0===q?""+c:0<q?""+c+" + i*"+q:""+c+" - i*"+-q};var Ic=p.angleUnit||"\u00b0",we=Ic.replace(/\s+/g,""),Nd=2*Math.PI,xe=1/Nd,ye={rad:Nd, +"\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=ye[we];if(!g)return m.niceprint(w.withUsage(a,null));if("function"===typeof g)return g(a);a=m.niceprint(m.realmult(g*xe,a),200<g?m._helper.angleroundingfactor:null);return-1===a.indexOf("i*")?a+Ic:"("+a+")"+Ic};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){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,q=a.value.imag,b=g.value.real,d=g.value.imag,h=b*b+d*d;return{ctype:"number",value:{real:(c*b+q*d)/h,imag:(q*b-c*d)/h}}};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),q=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:(q+c*Math.sin(g))/2}}};m.sin=function(a){var g=a.value.real;a=a.value.imag;var c=Math.exp(a),q=c*Math.sin(-g),b=c*Math.cos(-g),c=Math.exp(-a); +return{ctype:"number",value:{real:-(q-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 w.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 w.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 w.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 q=m.sqrt(m.add(m.mult(a,a),m.mult(g,g)));c=m.mult(m.complex(0, +-1),m.log(m.div(c,q)))}return w.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,q=a.value.imag,b=Math.pow(Math.sqrt(c*c+q*q),g),c=Math.atan2(q,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),q= +Math.atan2(a,g);0>a&&(q+=2*Math.PI);0===a&&0>g&&(q=Math.PI);q>Math.PI&&(q-=2*Math.PI);return m.snap({ctype:"number",value:{real:Math.log(c),imag:q}})};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,q=g.value.real,b=a.value.imag,d=g.value.imag,c=c-Math.floor(c/q)*q,b=b-Math.floor(b/d)*d;0===q&&(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 q=m.eps;"undefined"!==typeof c&&(q=c);c=a.value.real-g.value.real;a=a.value.imag-g.value.imag;return c<q&&c>-q&&a<q&&a>-q};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,q){a=m._helper.solveCubicHelper(a,g,c,q);return[h.scalproduct(m._helper.cub1,a),h.scalproduct(m._helper.cub2,a),h.scalproduct(m._helper.cub3,a)]};m._helper.solveCubicHelper=function(a,g,c,q){var b=a.value.real;a=a.value.imag;var d=g.value.real;g=g.value.imag; +var e=c.value.real,f=c.value.imag,k=q.value.real,l=q.value.imag,n=b*e-a*f;c=b*f+a*e;q=4*n-(d*d-g*g);var p=4*c-2*d*g,r=b*d-a*g,t=b*g+a*d,v=q*e-p*f-18*(r*k-t*l),p=q*f+p*e-18*(r*l+t*k);q=27*(b*b-a*a);var u=54*a*b,w=q*k-u*l,x=q*l+u*k,y=d*d-g*g,A=2*d*g,z=y*d-A*g,B=y*g+A*d,C=w+4*z,u=x+4*B;q=27*(v*e-p*f+C*k-u*l);p=27*(v*f+p*e+C*l+u*k);C=Math.sqrt(Math.sqrt(q*q+p*p));u=Math.atan2(p,q);p=C*Math.sin(u/2);q=C*Math.cos(u/2);z=-2*z+9*(r*e-t*f)-w+(q*b-p*a);B=-2*B+9*(r*f+t*e)-x+(q*a+p*b);q=Math.exp(Math.log(Math.sqrt(z* +z+B*B))/3);e=Math.atan2(B,z);u=q*Math.sin(e/3);p=q*Math.cos(e/3);q*=q;e*=2;n=2*y-6*n;c=2*A-6*c;A=-1.5874010519681996*(d*p-g*u);d=-1.5874010519681996*(d*u+g*p);g=1.2599210498948732*q*Math.cos(e/3);e=1.2599210498948732*q*Math.sin(e/3);q=4.762203155904599*(p*b-u*a);p=4.762203155904599*(p*a+u*b);b=q*q+p*p;u=(-n*p+c*q)/b;n=(n*q+c*p)/b;c=u;u=(-A*p+d*q)/b;A=(A*q+d*p)/b;d=u;u=(-g*p+e*q)/b;g=(g*q+e*p)/b;e=u;return h.turnIntoCSList([m.complex(n,c),m.complex(A,d),m.complex(g,e)])};var h={_helper:{},turnIntoCSList:function(a){return{ctype:"list", +value:a}}};h.EMPTY=h.turnIntoCSList([]);h.asList=function(a){return"list"===a.ctype?a:"number"===a.ctype||"boolean"===a.ctype||"geo"===a.ctype?h.turnIntoCSList([a]):h.EMPTY};h.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}};h._helper.unitvector=function(a,g){var c=h.zerovector(a);c.value[Math.floor(g.value.real-1)]=m.real(1);return c};h.idMatrix=function(a){for(var g=h.zeromatrix(a,a),c=m.real(1),q=0;q<a.value.real;q++)g.value[q].value[q]= +c;return g};h._helper.flippedidMatrix=function(a){for(var g=h.zeromatrix(a,a),c=m.real(1),q=0;q<a.value.real;q++)g.value[q].value[a.value.real-q-1]=c;return g};h.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)h.println(a.value[c]);else return k;"number"===a.value[0].ctype&&console.log(g)};h.matrix=function(a){return h.turnIntoCSList(a.map(h.turnIntoCSList))};h.realMatrix=function(a){for(var g= +a.length,c=Array(g),q=0;q<g;q++)c[q]=h.realVector(a[q]);return h.turnIntoCSList(c)};h.ex=h.realVector([1,0,0]);h.ey=h.realVector([0,1,0]);h.ez=h.realVector([0,0,1]);h.linfty=h.realVector([0,0,1]);h.ii=h.turnIntoCSList([m.complex(1,0),m.complex(0,1),m.complex(0,0)]);h.jj=h.turnIntoCSList([m.complex(1,0),m.complex(0,-1),m.complex(0,0)]);h.fundDual=h.realMatrix([[1,0,0],[0,1,0],[0,0,0]]);h.fund=h.realMatrix([[0,0,0],[0,0,0],[0,0,1]]);h.sequence=function(a,g){for(var c=[],q=0,b=Math.round(a.value.real);b< +Math.round(g.value.real)+1;b++)c[q]={ctype:"number",value:{real:b,imag:0}},q++;return{ctype:"list",value:c}};h.pairs=function(a){for(var g=[],c=0;c<a.value.length-1;c++)for(var q=c+1;q<a.value.length;q++)g.push({ctype:"list",value:[a.value[c],a.value[q]]});return{ctype:"list",value:g}};h.triples=function(a){for(var g=[],c=0;c<a.value.length-2;c++)for(var q=c+1;q<a.value.length-1;q++)for(var b=q+1;b<a.value.length;b++)g.push({ctype:"list",value:[a.value[c],a.value[q],a.value[b]]});return{ctype:"list", +value:g}};h.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}};h.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}};h.reverse=function(a){for(var g=Array(a.value.length),c=a.value.length-1,q=0;0<=c;c--,q++)g[q]=a.value[c];return{ctype:"list",value:g}}; +h.directproduct=function(a,g){for(var c=[],q=0;q<a.value.length;q++)for(var b=0;b<g.value.length;b++)c.push({ctype:"list",value:[a.value[q],g.value[b]]});return{ctype:"list",value:c}};h.concat=function(a,g){for(var c=[],q=0;q<a.value.length;q++)c.push(a.value[q]);for(q=0;q<g.value.length;q++)c.push(g.value[q]);return{ctype:"list",value:c}};h.prepend=function(a,g){var c=[];c[0]=a;for(var q=0;q<g.value.length;q++)c[q+1]=g.value[q];return{ctype:"list",value:c}};h.append=function(a,g){for(var c=[],q= +0;q<a.value.length;q++)c[q]=a.value[q];c.push(g);return{ctype:"list",value:c}};h.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}};h.common=function(a,g){for(var c=[],q=0,b=0;b<a.value.length;b++){for(var d=!1,h=a.value[b],e=0;e<g.value.length;e++)d=d||D.equals(h,g.value[e]).value;d&&(c[q]=a.value[b],q++)}return{ctype:"list",value:c}};h.remove=function(a,g){for(var c=[],q=0,b=0;b<a.value.length;b++){for(var d= +!1,h=a.value[b],e=0;e<g.value.length;e++)d=d||D.equals(h,g.value[e]).value;d||(c[q]=a.value[b],q++)}return{ctype:"list",value:c}};h.sort1=function(a){a=a.value.slice();a.sort(w.compare);return h.turnIntoCSList(a)};h._helper.isEqual=function(a,g){return h.equals(a,g).value};h._helper.isLessThan=function(a,g){for(var c=a.value.length,q=g.value.length,b=0;!(b>=c||b>=q)&&w.isEqual(a.value[b],g.value[b]);)b++;return b===c&&b<q?!0:b===q&&b<c||b===c&&b===q?!1:w.isLessThan(a.value[b],g.value[b])};h._helper.compare= +function(a,g){return h._helper.isLessThan(a,g)?-1:h._helper.isEqual(a,g)?0:1};h.equals=function(a,g){if(a.value.length!==g.value.length)return{ctype:"boolean",value:!1};for(var c=!0,q=0;q<a.value.length;q++)var b=a.value[q],d=g.value[q],c="list"===b.ctype&&"list"===d.ctype?c&&h.equals(b,d).value:c&&vb([b,d],[]).value;return{ctype:"boolean",value:c}};h.almostequals=function(a,g){if(a.value.length!==g.value.length)return{ctype:"boolean",value:!1};for(var c=!0,q=0;q<a.value.length;q++)var b=a.value[q], +d=g.value[q],c="list"===b.ctype&&"list"===d.ctype?c&&h.almostequals(b,d).value:c&&hc([b,d],[]).value;return{ctype:"boolean",value:c}};h._helper.isAlmostReal=function(a){for(var g=!0,c=0;c<a.value.length;c++)var q=a.value[c],g="list"===q.ctype?g&&h._helper.isAlmostReal(q):g&&m._helper.isAlmostReal(q);return g};h._helper.isAlmostZero=function(a){for(var g=0;g<a.value.length;g++){var c=a.value[g];if("list"===c.ctype){if(!h._helper.isAlmostZero(c))return!1}else if(!m._helper.isAlmostZero(c))return!1}return!0}; +h._helper.isNaN=function(a){for(var g=!1,c=0;c<a.value.length;c++)var q=a.value[c],g="list"===q.ctype?g||h._helper.isNaN(q):g||m._helper.isNaN(q);return g};h.set=function(a){var g=[],c=0;a=a.value.slice();a.sort(w.compare);for(var q=0;q<a.length;q++)0!==q&&vb([g[g.length-1],a[q]],[]).value||(g[c]=a[q],c++);return{ctype:"list",value:g}};h.maxval=function(a){for(var g=m.zero,c=0;c<a.value.length;c++){var q=a.value[c];"number"===q.ctype&&(g=m.argmax(g,q));"list"===q.ctype&&(g=m.argmax(g,h.maxval(q)))}return g}; +h.maxIndex=function(a,g,c){var q=0;void 0!==c&&(q=c);c=q;for(var b=g(a.value[q]).value.real;q<a.value.length;++q){var d=g(a.value[q]).value.real;d>b&&(c=q,b=d)}return c};h.normalizeMax=function(a){var g=m.inv(h.maxval(a));return m._helper.isFinite(g)?h.scalmult(g,a):a};h.normalizeZ=function(a){var g=m.inv(a.value[2]);return h.scalmult(g,a)};h.dehom=function(a){a=a.value.slice();var g=a.length-1,c=m.inv(a[g]);a.length=g;for(var q=0;q<g;++q)a[q]=m.mult(c,a[q]);return h.turnIntoCSList(a)};h.normalizeAbs= +function(a){var g=m.inv(h.abs(a));return h.scalmult(g,a)};h.max=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],q=0;q<a.value.length;q++)c[q]=w.max(a.value[q],g.value[q]);return{ctype:"list",value:c}};h.min=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],q=0;q<a.value.length;q++)c[q]=w.min(a.value[q],g.value[q]);return{ctype:"list",value:c}};h.scaldiv=function(a,g){if("number"!==a.ctype)return k;for(var c=[],q=0;q<g.value.length;q++){var b=g.value[q]; +c[q]="number"===b.ctype?w.div(b,a):"list"===b.ctype?h.scaldiv(a,b):k}return{ctype:"list",value:c}};h.scalmult=function(a,g){if("number"!==a.ctype)return k;for(var c=[],q=0;q<g.value.length;q++){var b=g.value[q];c[q]="number"===b.ctype?w.mult(b,a):"list"===b.ctype?h.scalmult(a,b):k}return{ctype:"list",value:c}};h.add=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],q=0;q<a.value.length;q++){var b=a.value[q],d=g.value[q];c[q]="number"===b.ctype&&"number"===d.ctype?w.add(b,d):"list"=== +b.ctype&&"list"===d.ctype?h.add(b,d):k}return{ctype:"list",value:c}};h.sub=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],q=0;q<a.value.length;q++){var b=a.value[q],d=g.value[q];c[q]="number"===b.ctype&&"number"===d.ctype?m.sub(b,d):"list"===b.ctype&&"list"===d.ctype?h.sub(b,d):k}return{ctype:"list",value:c}};h.abs2=function(a){for(var g=0,c=0;c<a.value.length;c++){var q=a.value[c];if("number"===q.ctype)g+=m.abs2(q).value.real;else if("list"===q.ctype)g+=h.abs2(q).value.real; +else return k}return{ctype:"number",value:{real:g,imag:0}}};h.abs=function(a){return m.sqrt(h.abs2(a))};h.normalizeMaxXX=function(a){for(var g=-1E4,c=m.real(1),q=0;q<a.value.length;q++){var b=m.abs(a.value[q]);b.value.real>g&&(c=a.value[q],g=b.value.real)}return h.scaldiv(c,a)};h.recursive=function(a,g){for(var c=[],q=0;q<a.value.length;q++){var b=B(a.value[q]);c[q]="number"===b.ctype?m[g](b):"list"===b.ctype?h[g](b):k}return{ctype:"list",value:c}};h.re=function(a){return h.recursive(a,"re")};h.neg= +function(a){return h.recursive(a,"neg")};h.im=function(a){return h.recursive(a,"im")};h.conjugate=function(a){return h.recursive(a,"conjugate")};h.transjugate=function(a){return h.transpose(h.conjugate(a))};h.round=function(a){return h.recursive(a,"round")};h.ceil=function(a){return h.recursive(a,"ceil")};h.floor=function(a){return h.recursive(a,"floor")};h._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};h._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};h.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}};h.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}};h.isNumberMatrix=function(a){if(-1===h._helper.colNumb(a))return{ctype:"boolean",value:!1};for(var g=0;g<a.value.length;g++)if(!h.isNumberVector(a.value[g]).value)return{ctype:"boolean",value:!1};return{ctype:"boolean",value:!0}};h._helper.isNumberMatrixMN=function(a,g,c){return h.isNumberMatrix(a).value&&a.value.length=== +g&&a.value[0].value.length===c};h.scalproduct=function(a,g){if(a.value.length!==g.value.length)return k;for(var c={ctype:"number",value:{real:0,imag:0}},q=0;q<g.value.length;q++){var b=a.value[q],d=g.value[q];if("number"===b.ctype&&"number"===d.ctype)c=m.add(m.mult(b,d),c);else return k}return c};h.sesquilinearproduct=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=0,q=0,b=0;b<g.value.length;b++)var d=a.value[b].value,h=g.value[b].value,c=c+(d.real*h.real+d.imag*h.imag),q=q+(d.real* +h.imag-d.imag*h.real);return m.complex(c,q)};h.normSquared=function(a){for(var g=0,c=0;c<a.value.length;c++)var q=a.value[c].value,g=g+(q.real*q.real+q.imag*q.imag);return m.real(g)};h.productMV=function(a,g){if(a.value[0].value.length!==g.value.length)return k;for(var c=[],q=0;q<a.value.length;q++){for(var b={ctype:"number",value:{real:0,imag:0}},d=a.value[q],e=0;e<g.value.length;e++){var f=d.value[e],l=g.value[e];if("number"===f.ctype&&"number"===l.ctype)b=m.add(m.mult(f,l),b);else return k}c[q]= +b}return h.turnIntoCSList(c)};h.productVM=function(a,g){if(a.value.length!==g.value.length)return k;for(var c=[],q=0;q<g.value[0].value.length;q++){for(var b={ctype:"number",value:{real:0,imag:0}},d=0;d<a.value.length;d++){var e=a.value[d],f=g.value[d].value[q];if("number"===e.ctype&&"number"===f.ctype)b=m.add(m.mult(e,f),b);else return k}c[q]=b}return h.turnIntoCSList(c)};h.productMM=function(a,g){if(a.value[0].value.length!==g.value.length)return k;for(var c=[],q=0;q<a.value.length;q++){var b=h.productVM(a.value[q], +g);c[q]=b}return h.turnIntoCSList(c)};h.mult=function(a,g){return a.value.length===g.value.length&&h.isNumberVector(a).value&&h.isNumberVector(g).value?h.scalproduct(a,g):h.isNumberMatrix(a).value&&g.value.length===a.value[0].value.length&&h.isNumberVector(g).value?h.productMV(a,g):h.isNumberMatrix(g).value&&a.value.length===g.value.length&&h.isNumberVector(a).value?h.productVM(a,g):h.isNumberMatrix(a).value&&h.isNumberMatrix(g).value&&g.value.length===a.value[0].value.length?h.productMM(a,g):k}; +h.projectiveDistMinScal=function(a,g){var c=h.abs(a),q=h.abs(g);if(0===c.value.real||0===q.value.real)return 0;var b=h.conjugate(g),b=h.scalproduct(a,b),b=m._helper.isAlmostZero(b)?m.real(1):m.div(b,m.abs(b)),c=h.scaldiv(c,a),q=h.scaldiv(q,g),q=h.scalmult(b,q),b=h.abs(h.add(c,q)),q=h.abs(h.sub(c,q));return Math.min(b.value.real,q.value.real)};h.conicDist=function(a,g){var c=u(a),q=u(g);console.log(Z(c),Z(q));return h.projectiveDistMinScal(c,q)};h.crossOperator=function(a){var g=a.value[0],c=a.value[1]; +a=a.value[2];return h.turnIntoCSList([h.turnIntoCSList([m.zero,m.neg(a),c]),h.turnIntoCSList([a,m.zero,m.neg(g)]),h.turnIntoCSList([m.neg(c),g,m.zero])])};h.cross=function(a,g){var c=m.sub(m.mult(a.value[1],g.value[2]),m.mult(a.value[2],g.value[1])),q=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 h.turnIntoCSList([c,q,b])};h.crossratio3harm=function(a,g,c,q,b){var d=h.det3(a,c,b),e=h.det3(g,q,b);a=h.det3(a, +q,b);g=h.det3(g,c,b);d=m.mult(d,e);e=m.mult(a,g);return h.turnIntoCSList([d,e])};h.crossratio3=function(a,g,c,q,b){a=h.crossratio3harm(a,g,c,q,b);return m.div(a.value[0],a.value[1])};h.veronese=function(a){var g=m.mult(a.value[0],a.value[0]),c=m.mult(a.value[1],a.value[1]),q=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 h.turnIntoSCList([g,c,q,b,d,a])};h.matrixFromVeronese=function(a){var g=a.value[0],c=a.value[1], +q=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 h.turnIntoCSList([h.turnIntoCSList([g,b,d]),h.turnIntoCSList([b,c,a]),h.turnIntoCSList([d,a,q])])};h.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]))};h.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)};h.det4m=function(a){var g= +a.value,c=g[0].value,q=c[0].value,b=+q.real,d=+q.imag,q=c[1].value,h=+q.real,e=+q.imag,q=c[2].value,f=+q.real,k=+q.imag,q=c[3].value,l=+q.real,n=+q.imag,c=g[1].value,q=c[0].value,p=+q.real,r=+q.imag,q=c[1].value,t=+q.real,v=+q.imag,q=c[2].value,u=+q.real,w=+q.imag,q=c[3].value,c=+q.real,q=+q.imag;a=b*t-d*v-h*p+e*r;var x=b*v+d*t-h*r-e*p,y=b*u-d*w-f*p+k*r,A=b*w+d*u-f*r-k*p,z=b*c-d*q-l*p+n*r,B=b*q+d*c-l*r-n*p,C=h*u-e*w-f*t+k*v,D=h*w+e*u-f*v-k*t,F=h*c-e*q-l*t+n*v,E=h*q+e*c-l*v-n*t,G=f*c-k*q-l*u+n*w,H= +f*q+k*c-l*w-n*u,c=g[2].value,q=c[0].value,b=+q.real,d=+q.imag,q=c[1].value,h=+q.real,e=+q.imag,q=c[2].value,f=+q.real,k=+q.imag,q=c[3].value,l=+q.real,n=+q.imag,c=g[3].value,q=c[0].value,p=+q.real,r=+q.imag,q=c[1].value,t=+q.real,v=+q.imag,q=c[2].value,u=+q.real,w=+q.imag,q=c[3].value,c=+q.real,q=+q.imag,g=b*t-d*v-h*p+e*r,L=b*v+d*t-h*r-e*p,J=b*u-d*w-f*p+k*r,M=b*w+d*u-f*r-k*p,N=b*c-d*q-l*p+n*r,b=b*q+d*c-l*r-n*p,d=h*u-e*w-f*t+k*v,p=h*w+e*u-f*v-k*t,r=h*c-e*q-l*t+n*v,h=h*q+e*c-l*v-n*t,e=f*c-k*q-l*u+n* +w,f=f*q+k*c-l*w-n*u;return m.complex(a*e-x*f-y*r+A*h+z*d-B*p+C*N-D*b-F*J+E*M+G*g-H*L,a*f+x*e-y*h-A*r+z*p+B*d+C*b+D*N-F*M-E*J+G*L+H*g)};h.eucangle=function(a,g){var c=h.cross(a,h.linfty),q=h.cross(g,h.linfty),b=h.det3(h.ez,c,h.ii),c=h.det3(h.ez,c,h.jj),d=h.det3(h.ez,q,h.ii),q=h.det3(h.ez,q,h.jj),b=m.div(m.mult(b,q),m.mult(d,c)),b=m.log(b);return b=m.mult(b,m.complex(0,.5))};h.zerovector=function(a){a=Math.floor(a.value.real);for(var g=Array(a),c=0;c<a;c++)g[c]=0;return h.realVector(g)};h.zeromatrix= +function(a,g){for(var c=Math.floor(a.value.real),q=Array(c),b=0;b<c;b++)q[b]=h.zerovector(g);return h.turnIntoCSList(q)};h.vandermonde=function(a){for(var g=a.value.length,c=h.zeromatrix(g,g),q=0;q<g;q++)for(var b=0;b<g;b++)c.value[q].value[b]=m.pow(a.value[q],m.real(b-1));return c};h.transpose=function(a){for(var g=[],c=a.value[0].value.length,q=a.value.length,b=0;b<c;b++){for(var d=[],e=0;e<q;e++)d[e]=a.value[e].value[b];g[b]=h.turnIntoCSList(d)}return h.turnIntoCSList(g)};h.column=function(a,g){for(var c= +[],q=a.value.length,b=Math.floor(g.value.real-1),d=0;d<q;d++)c[d]=a.value[d].value[b];return h.turnIntoCSList(c)};h.row=function(a,g){for(var c=[],q=a.value[0].value.length,b=Math.floor(g.value.real-1),d=0;d<q;d++)c[d]=a.value[b].value[d];return h.turnIntoCSList(c)};h.adjoint2=function(a){var g=a.value[0].value[0],c=a.value[1].value[0],q=Array(2);q[0]=h.turnIntoCSList([a.value[1].value[1],m.neg(a.value[0].value[1])]);q[1]=h.turnIntoCSList([m.neg(c),g]);return q=h.turnIntoCSList(q)};h.adjoint3=function(a){var g, +c,q,b,d,h,e,f,m,k,l,n,p,r,t,v,u;g=a.value[0].value;c=g[0].value;q=c.real;b=c.imag;c=g[1].value;d=c.real;h=c.imag;c=g[2].value;e=c.real;f=c.imag;g=a.value[1].value;c=g[0].value;m=c.real;k=c.imag;c=g[1].value;l=c.real;n=c.imag;c=g[2].value;p=c.real;r=c.imag;g=a.value[2].value;c=g[0].value;a=c.real;t=c.imag;c=g[1].value;v=c.real;u=c.imag;c=g[2].value;g=c.real;c=c.imag;return{ctype:"list",value:[{ctype:"list",value:[{ctype:"number",value:{real:l*g-p*v-n*c+r*u,imag:l*c-p*u-v*r+g*n}},{ctype:"number",value:{real:-d* +g+e*v+h*c-f*u,imag:-d*c+e*u+v*f-g*h}},{ctype:"number",value:{real:d*p-e*l-h*r+f*n,imag:d*r-e*n-l*f+p*h}}]},{ctype:"list",value:[{ctype:"number",value:{real:-m*g+p*a+k*c-r*t,imag:-m*c+p*t+a*r-g*k}},{ctype:"number",value:{real:q*g-e*a-b*c+f*t,imag:q*c-e*t-a*f+g*b}},{ctype:"number",value:{real:-q*p+e*m+b*r-f*k,imag:-q*r+e*k+m*f-p*b}}]},{ctype:"list",value:[{ctype:"number",value:{real:m*v-l*a-k*u+n*t,imag:m*u-l*t-a*n+v*k}},{ctype:"number",value:{real:-q*v+d*a+b*u-h*t,imag:-q*u+d*t+a*h-v*b}},{ctype:"number", +value:{real:q*l-d*m-b*n+h*k,imag:q*n-d*k-m*h+l*b}}]}]}};h.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 h.scaldiv(h.det(a),h.adjoint2(a));if(3===g)return h.scaldiv(h.det(a),h.adjoint3(a));g=h.LUdecomp(a);a=a.value.length;var c=m.real(0),q=m.real(1),b=h.zerovector(m.real(a));b.value[0]=q;for(var d=Array(a),e=0;e<a;e++)d[e]=h._helper.LUsolve(g,b),b.value[e]=c,b.value[e+1]=q;d=h.turnIntoCSList(d); +return d=h.transpose(d)};h.linearsolve=function(a,g){return 2===a.value.length?h.linearsolveCramer2(a,g):3===a.value.length?h.linearsolveCramer3(a,g):h.LUsolve(a,g)};h.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 h.turnIntoCSList(g)};h.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 h.turnIntoCSList(g)};h.eig2=function(a){var g=m.add(a.value[0].value[0],a.value[1].value[1]);a=h.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 h.turnIntoCSList([g,b])};h.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=h._helper.QRIteration(b)[0],b=h.getDiag(b),b=h.sort1(b),d=h.idMatrix(d,d),f=Array(e),f=h.turnIntoCSList(f);if(c){for(var k,l,n, +p=0,r=!1,c=0;c<e;c++)r?l=k.value[p]:(k=b.value[c],k=h.sub(a,h.scalmult(k,d)),k=h.nullSpace(k),l=k.value[0],void 0!==l&&(n=l)),void 0===l&&(l=n),1E-8>h.abs(l).value.real&&0===p&&(l=h._helper.inverseIteration(a,b.value[c])),f.value[c]=h._helper.isAlmostZeroVec(l)?l:h.scaldiv(h.abs(l),l),c<e-1&&((r=1E-6>m.abs(m.sub(b.value[c],b.value[c+1])).value.real)?p++:p=0);f=h.transpose(f)}return h.turnIntoCSList([b,f])};h._helper.isNormalMatrix=function(a){return 1E-10>h.abs(h.sub(a,h.transjugate(a))).value.real}; +h._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 f;h.idMatrix(c,c);var k=h.zeromatrix(c,c),l=h.idMatrix(c,c),n=g?g:2500,p,r,t,v=0,u=Array(e);for(c=0;c<n;c++){f=h._helper.getBlock(b,[e-2,e-1],[e-2,e-1]);p=h.eig2(f);f=p.value[0];p=p.value[1];h.abs(f);h.abs(p);r=b.value[e-1].value[e-1];t=m.abs(m.sub(r,f)).value.real;r=m.abs(m.sub(r,p)).value.real;p=t<r?f:p;f=h.idMatrix(m.real(e),m.real(e));p=h.scalmult(p,f);f=h.QRdecomp(h.sub(b,p)); +b=w.mult(f.R,f.Q);b=h.add(b,p);f.Q=h._helper.buildBlockMatrix(f.Q,h.idMatrix(m.real(v),m.real(v)));l=w.mult(l,f.Q);if(1E-48>m.abs2(b.value[b.value.length-1].value[b.value[0].value.length-2]).value.real&&1<e){u[d-v-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=h._helper.getBlock(b,[0,e-2],[0,e-2]);v++;e--}if(1===e){k.value[0].value[0]=b.value[0].value[0];break}if(h._helper.isUpperTriangular(b)){for(c=0;c<e;c++)k.value[c].value[c]= +b.value[c].value[c];break}}return[k,l]};h.rank=function(a,g){return h.RRQRdecomp(a,g).rank};h._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};h._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};h._helper.isUpperTriangular=function(a){return h._helper.isLowerTriangular(h.transpose(a))}; +h._helper.isAlmostId=function(a){var g=a.value.length,c=m.real(g);if(g!==a.value[0].value.length)return!1;a=h.sub(a,h.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};h.nullSpace=function(a,g){var c=a.value.length,b=h.RRQRdecomp(h.transjugate(a),g),d=h.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]=h.scaldiv(h.abs(f),f);e=h.turnIntoCSList(e);return 0<e.value.length?e:h.turnIntoCSList([h.zerovector(m.real(c))])}; +h._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};h._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=h.realVector(b),c=h.idMatrix(m.real(c),m.real(c)),d=m.add(g,m.real(.1*Math.random()-.5)),e=0;100>e;e++)b=h.scaldiv(h.abs(b), +b),b=h.LUsolve(h.sub(a,h.scalmult(d,c)),JSON.parse(JSON.stringify(b)));return h.scaldiv(h.abs(b),b)};h._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(h._helper.isUpperTriangular(g))return[h.idMatrix(b,b),a];var e;a=h.idMatrix(d,d);for(var f,d=1;d<c-1;d++)e=h.column(g,m.real(d)),e.value=e.value.splice(d),f=h.abs2(e).value.real,1E-16<f&&(e=h._helper.getHouseHolder(e),a=w.mult(a,e),g=w.mult(w.mult(e,g),e)),b.value.real--;return[a, +g]};h._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)};h.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),f=m.real(1),k=h._helper.unitvector(m.real(a.value.length),f),l=h.idMatrix(e,e),n=JSON.parse(JSON.stringify(a)),p=h.transpose(a),r=Array(d);for(b=0;b<d;b++)r[b]=h.abs2(p.value[b]);r=h.turnIntoCSList(r); +p=Array(d);for(b=0;b<d;b++)p[b]=b;b=h.maxIndex(r,m.abs);for(var t=r.value[b],v=0,u=0;1E-16<m.abs2(t).value.real;u++){v++;h._helper.swapColumn(n,u,b);h._helper.swapEl(r,u,b);h._helper.swapEl(p,u,b);b=h._helper.getBlock(n,[u],[u]);b=h.column(b,f);t=h.abs2(b).value.real;1E-8<t&&(b=h._helper.getHouseHolder(b),b=h._helper.buildBlockMatrix(h.idMatrix(m.real(u),m.real(u)),b),l=w.mult(l,h.transjugate(b)),n=w.mult(b,n));for(b=u+1;b<d;b++)r.value[b]=m.sub(r.value[b],m.mult(n.value[u].value[b],m.conjugate(n.value[u].value[b]))); +b=h.maxIndex(r,m.abs2,u+1);t=r.value[b];if(u+2===d){m.abs(t).value.real>c&&v++;break}e=m.sub(e,f);k.value=k.value.splice(0,k.value.length-1)}return{Q:l,R:n,P:h.turnIntoCSList(p),rank:m.real(v)}};h._helper.getHouseHolder=function(a){var g=m.real(a.value.length);if(1E-16>h.abs2(a))return h.idMatrix(g,g);var c,b=m.real(1),d=h._helper.unitvector(m.real(a.value.length),b);c=h._helper.QRgetAlpha(a,0);c=h.sub(a,h.scalmult(c,d));c=h.scaldiv(h.abs(c),c);a=m.div(h.sesquilinearproduct(a,c),h.sesquilinearproduct(c, +a));g=h.idMatrix(g,g);return g=h.sub(g,h.scalmult(m.add(b,a),h._helper.transposeMult(c,h.conjugate(c))))};h._helper.reOrderbyPivots=function(a,g){for(var c=a.value.length.length,b=h.transpose(a),c=Array(c),d=0;d<g.length;d++)c[g[d]]=b.value[d];c=h.turnIntoCSList(c);return h.transpose(c)};h.QRdecomp=function(a){var g,c=a.value.length,b=m.real(c);if(h._helper.isUpperTriangular(a))return{Q:h.idMatrix(b,b),R:a};var d=m.real(1),e=h._helper.unitvector(m.real(a.value.length),d),f,k=h.idMatrix(b,b);a=JSON.parse(JSON.stringify(a)); +for(var l=0;;l++){g=h._helper.getBlock(a,[l],[l]);g=h.column(g,d);f=h.abs2(g).value.real;1E-8<f&&(g=h._helper.getHouseHolder(g),g=h._helper.buildBlockMatrix(h.idMatrix(m.real(l),m.real(l)),g),k=w.mult(k,h.transjugate(g)),a=w.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:k,R:a}};h._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};h._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=h.zeromatrix(m.real(c+g.value.length),m.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<g.value.length;e++)for(f=0;f<g.value[0].value.length;f++)d.value[c+e].value[b+f]=g.value[e].value[f];return d};h._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};h._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,h=g.value[0].value.length,e=0;e<d;e++)for(var f=0;f<h;f++)a.value[b+e].value[c+f]=g.value[e].value[f];return a};h._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]=h.scalmult(a.value[d],g);return h.turnIntoCSList(b)};h._helper.QRgetAlpha=function(a,g){return 0>a.value[g].value.real?h.abs(a):m.neg(h.abs(a))};h.LUdecomp=function(a){a=JSON.parse(JSON.stringify(a));var g,c,b,d,h,e=0,f,k=a.value.length,l=k-1,n=Array(k);for(b=0;b<k;++b){h=b;d=a.value[b];f=m.abs(d.value[b]).value.real;for(c=b+1;c<k;++c)g=m.abs(a.value[c].value[b]),f<g.value.real&&(f=g.value.real,h=c);f<m.eps&&console.log("Warning: singular matrix!"); +n[b]=h;h!==b&&(a.value[b]=a.value[h],a.value[h]=d,d=a.value[b],e++);c=d.value[b];for(g=b+1;g<k;++g)a.value[g].value[b]=m.div(a.value[g].value[b],c);for(g=b+1;g<k;++g){h=a.value[g];for(c=b+1;c<l;++c)h.value[c]=m.sub(h.value[c],m.mult(h.value[b],d.value[c])),++c,h.value[c]=m.sub(h.value[c],m.mult(h.value[b],d.value[c]));c===l&&(h.value[c]=m.sub(h.value[c],m.mult(h.value[b],d.value[c])))}}return{LU:a,P:n,TransPos:e}};h.LUsolve=function(a,g){var c=h.LUdecomp(a);return h._helper.LUsolve(c,g)};h._helper.LUsolve= +function(a,g){var c=JSON.parse(JSON.stringify(g)),b,d=a.LU,h=d.value.length,e=JSON.parse(JSON.stringify(c)),f=a.P,k;for(b=h-1;-1!==b;--b)e.value[b]=c.value[b];for(b=0;b<h;++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]=m.sub(e.value[b],m.mult(e.value[c],k.value[c]));for(b=h-1;0<=b;--b){k=d.value[b];for(c=b+1;c<h;++c)e.value[b]=m.sub(e.value[b],m.mult(e.value[c],k.value[c]));e.value[b]=m.div(e.value[b],k.value[b])}return e};h.linearsolveCramer2= +function(a,g){var c=h.column(a,m.real(1)),b=h.column(a,m.real(2)),d=h.det2(c,b);m._helper.isZero(d)&&console.log("A is not regular!");b=h.det2(g,b);b=m.div(b,d);c=h.det2(c,g);c=m.div(c,d);return h.turnIntoCSList([b,c])};h.linearsolveCramer3=function(a,g){var c=h.column(a,m.real(1)),b=h.column(a,m.real(2)),d=h.column(a,m.real(3)),e=h.det3(c,b,d);m._helper.isZero(e)&&console.log("A is not regular!");var f=h.det3(g,b,d),d=h.det3(c,g,d),c=h.det3(c,b,g),f=h.turnIntoCSList([f,d,c]);return f=h.scaldiv(e, +f)};h.linearsolveCGNR=function(a,g){var c=h.transpose(a),b=w.mult(c,a),c=w.mult(c,g);return h.linearsolveCG(b,c)};h.linearsolveCG=function(a,g){var c,b,d,e,f,k;e=g;b=c=h.sub(g,w.mult(a,g));for(var l=Math.ceil(1.2*a.value.length),n=0;n<l;){n++;f=w.mult(a,b);k=d=h.scalproduct(c,c);d=m.div(d,h.scalproduct(b,f));e=h.add(e,w.mult(d,b));c=h.sub(c,w.mult(d,f));if(h.abs(c).value.real<m.eps)break;d=h.scalproduct(c,c);d=m.div(d,k);b=h.add(c,w.mult(d,b))}n>=l&&console.log("CG did not converge");return e};h.det= +function(a){if(1===a.value.length)return a.value[0].value[0];if(2===a.value.length)return h.det2(a.value[0],a.value[1]);if(3===a.value.length)return h.det3(a.value[0],a.value[1],a.value[2]);if(4===a.value.length)return h.det4m(a);var g=a.value.length,c=m.real(1),b,d,e=JSON.parse(JSON.stringify(a)),f,k,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));f= +e.value[a];for(b=a+1;b<g;b++){k=e.value[b];l=m.div(k.value[a],f.value[a]);for(d=a+1;d<g-1;d+=2)n=d+1,k.value[d]=m.sub(k.value[d],m.mult(f.value[d],l)),k.value[n]=m.sub(k.value[n],m.mult(f.value[n],l));d!==g&&(k.value[d]=m.sub(k.value[d],m.mult(f.value[d],l)))}if(m._helper.isZero(f.value[a]))return m.real(0);c=m.mult(c,f.value[a])}return m.mult(c,e.value[a].value[a])};h.LUdet=function(a){a=h.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};h.getField=function(a,g){var c;if("homog"===g){if(h._helper.isNumberVecN(a,3))return a;if(h._helper.isNumberVecN(a,2))return h.turnIntoCSList([a.value[0],a.value[1],m.real(1)])}if("xy"===g){if(h._helper.isNumberVecN(a,2))return a;if(h._helper.isNumberVecN(a,3))return h.turnIntoCSList([m.div(a.value[0],a.value[2]),m.div(a.value[1],a.value[2])])}if("x"===g&&h.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&&h.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&&h.isNumberVector(a)&&(c=a.value.length,2<c)?a.value[2]:k};h.nil=h.turnIntoCSList([]);h.ofGeos=function(a){return h.turnIntoCSList(a.map(function(a){return{ctype:"geo",value:a}}))};var Na={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(Na.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&&wa.err("Bad dictionary key: "+Z(a));return"undef"},create:function(){return{ctype:"dict",value:{}}},clone:function(a){var g=Na.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[Na.key(g)]={key:g,value:c}},get:function(a,g,c){return(a=a.value[Na.key(g)])?a.value:c},niceprint:function(a){return"{"+Object.keys(a.value).sort().map(function(g){g=a.value[g];return Z(g.key)+":"+Z(g.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, +g){return-1===w.compare(a,g)},isEqual:function(a,g){return 0===w.compare(a,g)},compareResults:function(a,g){return w.compare(a.result,g.result)},compare:function(a,g){if(a.ctype!==g.ctype)return w.order[a.ctype]-w.order[g.ctype];if("number"===a.ctype)return m._helper.compare(a,g);if("list"===a.ctype)return h._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:Z(a)+Z(g)}:"list"===a.ctype&&"list"===g.ctype?h.add(a,g):k},sub:function(a,g){return"void"===a.ctype&&"number"===g.ctype?m.neg(g):"void"===a.ctype&&"list"===g.ctype?h.neg(g):"number"===a.ctype&&"number"===g.ctype?m.sub(a,g):"list"===a.ctype&& +"list"===g.ctype?h.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?h.scalmult(a,g):"list"===a.ctype&&"number"===g.ctype?h.scalmult(g,a):"list"===a.ctype&&"list"===g.ctype?h.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?h.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? +h.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?h.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]=w.wrap(a[c]);return h.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(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,g){return{ctype:a.ctype,value:a.value,usage:g}},wrapJSON:function(a){switch(typeof a){case "number":return m.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 h.turnIntoCSList(a.map(w.wrapJSON)); +var g=Na.create(),c;for(c in a)Na.put(g,w.string(c),w.wrapJSON(a[c]));return g;default:return console.log("Failed to convert "+typeof a+" to CindyJS data type"),k}},identity:function(a){return a},deeplyEqual:function(a,g){if("object"!==typeof a||"object"!==typeof g||null===a||null===g)return a===g;var c=0,b;for(b in a)if(++c,!(b in g&&w.deeplyEqual(a[b],g[b])))return!1;for(b in g)--c;return 0===c},DeepCloneJSON:function(a){var g,c,b;g=Array.isArray(a)?[]:{};for(b in a)c=a[b],g[b]="object"===typeof c&& +null!==c?w.DeepCloneJSON(c):c;return g}},db={},Q={};Q[":"]=C(":");Q["\u00b0"]=function(a,g){var c=B(a[0]);return"number"===c.ctype&&"void"===a[1].ctype?w.withUsage(m.realmult(Math.PI/180,c),"Angle"):k};Q._=vc;Q["^"]=Uc;Q["\u221a"]=function(a,g){return"void"===a[0].ctype?t.sqrt$1([a[1]],g):k};Q["*"]=Sc;Q["\u00d7"]=$c;Q["/"]=Tc;Q["+"]=Rc;Q["-"]=jc;Q["!"]=function(a,g){var c=B(a[1]);return"void"===a[0].ctype&&"boolean"===c.ctype?{ctype:"boolean",value:!c.value}:k};Q["=="]=vb;Q["~="]=hc;Q["~<"]=function(a, +g){var c=B(a[0]),b=B(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};Q["~>"]=function(a,g){var c=B(a[0]),b=B(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};Q["=:="]=C("=:=");Q[">="]=function(a,g){var c=B(a[0]),b=B(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};Q["<="]=function(a,g){var c=B(a[0]),b=B(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};Q["~>="]=function(a,g){var c=B(a[0]), +b=B(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};Q["~<="]=function(a,g){var c=B(a[0]),b=B(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};Q[">"]=function(a,g){var c=B(a[0]),b=B(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};Q["<"]=function(a,g){var c=B(a[0]),b=B(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};Q["<>"]=Oc;Q["\u2208"]=function(a,g){var c=z(a[0]),b=z(a[1]);return"list"===b.ctype?h.contains(b, +c):k};Q["\u2209"]=function(a,g){var c=z(a[0]),b=z(a[1]);return"list"===b.ctype?w.not(h.contains(b,c)):k};Q["&"]=Pc;Q["%"]=Qc;Q["!="]=Oc;Q["~!="]=function(a,g){return w.not(hc(a,g))};Q[".."]=function(a,g){var c=z(a[0]),b=z(a[1]);return"number"===c.ctype&&"number"===b.ctype?h.sequence(c,b):k};Q["++"]=ad;Q["--"]=cd;Q["~~"]=bd;Q[":>"]=dd;Q["<:"]=ed;Q["="]=ab;Q[":="]=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],h=1;if(db.hasOwnProperty(g)){h=db[g];if(h.definer===c)return k;h=h.generation+1}db[g]={oper:g,body:d,arglist:b,definer:c,generation:h}}"variable"===a[0].ctype&&J.setvar(a[0].name,a[1]);return k};Q[":=_"]=function(a,g){if("void"!==a[1].ctype)return k;"function"===a[0].ctype&&delete db[a[0].oper];return k};Q["::="]=C("::=");Q[";"]=function(a,g){var c="void"===a[0].ctype,b="void"===a[1].ctype;if(c&&b)return k;if(!c&&b)return z(a[0]);c||b||z(a[0]);return b?k:z(a[1])};var t={},D={evaluate:function(a, +g,c){if(db.hasOwnProperty(a)){a=db[a];if(void 0===a)g=k;else{var b=[];for(c=0;c<a.arglist.length;c++)b[c]=z(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=z(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);wa.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?h.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":w.bool(!0), +"false":w.bool(!1),"#":k,nil:h.turnIntoCSList([]),newline:w.string("\n"),tab:w.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(v.csnames.hasOwnProperty(a))return{ctype:"geo",value:v.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+":> "+Z(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 ta={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,g){return"undefined"!==typeof v.csnames[a]?ta.getField(v.csnames[a],g):k},setGeoField:function(a,g,c){return"undefined"!==typeof v.csnames[a]?ta.setField(v.csnames[a],g,c):k},getField:function(a,g){var c; +if("P"===a.kind){if("xy"===g)return c=h.dehom(a.homog),w.withUsage(c,"Point");if("homog"===g)return w.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 w.withUsage(a.homog,"Line");if("angle"===g)return c=h.eucangle(h.ey,a.homog),w.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=l._helper.CenterOfConic(a.matrix),c=h.dehom(c),w.withUsage(c,"Point");if("dualMatrix"===g)return h.normalizeMax(h.adjoint3(a.matrix))}if("Text"===a.kind){if("pressed"=== +g)return a.checkbox?w.bool(a.checkbox.checked):w.bool(!1);if("xy"===g)return c=h.dehom(a.homog),w.withUsage(c,"Point");if("homog"===g)return w.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 w.bool(!!a.drawtrace);if(ta.generalFields[g])return(c=a[ta.generalFields[g]])&&c.ctype?c:"object"!==typeof c?w.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 h.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 h.realVector([a.behavior.fx,a.behavior.fy]);if("ldiff"===g&&"Spring"===a.behavior.type)return m.real(a.behavior.ldiff)}c=l[a.type]["get_"+g];return"function"===typeof c?c(a):k},setField:function(a,g,c){"color"===g&&h._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&&h._helper.isNumberVecN(c,3)&& +(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);"labeled"!==g&&"labelled"!==g||"boolean"!==c.ctype||(a.labeled=c.value);"printlabel"===g&&(a.printname=Z(c));"trace"===g&&"boolean"===c.ctype&&(c.value&&!a.drawtrace?(a.drawtrace=!0,yd(a)):a.drawtrace=c.value);"P"===a.kind&&a.movable&&("xy"===g&&h._helper.isNumberVecN(c,2)&&La(a,h.turnIntoCSList([c.value[0],c.value[1],m.real(1)]), +"homog"),"xy"===g&&h._helper.isNumberVecN(c,3)&&La(a,c,"homog"),"x"===g&&"number"===c.ctype&&La(a,h.turnIntoCSList([m.mult(c,a.homog.value[2]),a.homog.value[1],a.homog.value[2]]),"homog"),"y"===g&&"number"===c.ctype&&La(a,h.turnIntoCSList([a.homog.value[0],m.mult(c,a.homog.value[2]),a.homog.value[2]]),"homog"),"homog"===g&&h._helper.isNumberVecN(c,3)&&La(a,c,"homog"));"homog"===g&&"L"===a.kind&&a.movable&&h._helper.isNumberVecN(c,3)&&La(a,c,"homog");"Text"===a.kind&&("pressed"===g&&"boolean"===c.ctype&& +a.checkbox&&(a.checkbox.checked=c.value),a.movable&&("xy"===g?h._helper.isNumberVecN(c,2)?a.homog=h.turnIntoCSList([c.value[0],c.value[1],m.real(1)]):h._helper.isNumberVecN(c,3)&&(a.homog=c):"homog"===g&&h._helper.isNumberVecN(c,3)?a.homog=c:"x"===g&&"number"===c.ctype?a.homog=h.turnIntoCSList([m.mult(c,a.homog.value[2]),a.homog.value[1],a.homog.value[2]]):"y"===g&&"number"===c.ctype&&(a.homog=h.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&&h._helper.isNumberVecN(c,2)&&(a.behavior.vx=c.value[0].value.real,a.behavior.vy=c.value[1].value.real));g=l[a.type]["set_"+g];if("function"===typeof g)return g(a,c)},getuserData:function(a,g){var c;a.userData&&a.userData[g]&&(c=a.userData[g]);return c&&c.ctype?c:"object"!==typeof c?w.wrap(c):k},setuserData:function(a,g,c){a.userData||(a.userData={}); +a.userData[g]=c}};t.version$0=function(a,g){var c=["CindyJS"].concat(ve);return h.turnIntoCSList(c.map(w.wrap))};t.clearconsole$0=function(a,g){wa.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+" ===> "+Z(z(b));ka(b);return k};t.errc$1=function(a,g){var c;"variable"===a[0].ctype?(c=z(J.getvar(a[0].name)),console.log(a[0].name+" ===> "+Z(c))):(c=z(a[0]),console.log(" ===> "+Z(c)));return k};t.print$1=function(a,g){wa.out(Z(z(a[0])), +!0);return k};t.println$1=function(a,g){wa.out(Z(z(a[0])));return k};t.assert$2=function(a,g){var c=z(a[0]);if("boolean"===c.ctype){if(!1===c.value)return t.println$1([a[1]],g)}else ka("Condition for assert is not boolean");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=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,h=1,e=c+1,f=!1,m=!1,l=!1,n;void 0!==g.start&&(n=z(g.start),"number"===n.ctype&&(f=!0,h=n.value.real));void 0!==g.step&&(n=z(g.step),"number"===n.ctype&&(l=!0,d=n.value.real));void 0!==g.stop&&(n=z(g.stop),"number"===n.ctype&&(m=!0,e=n.value.real));!f||m||l||(e=d*c+h);f||!m||l||(h=-d*(c-1)+e,e+=d);f||m||!l||(e=d*c+h);f&&m&&!l&&(d=(e-h)/(c-1),e+=d);f&&!m&&l&&(e=d*c+h);!f&&m&&l&&(h=-d*(c-1)+e,e+=d);f&&m&&l&&(e+=d);(h<=e&&0<d||h>=e&&0>d)&&f&&m&&l&&(c=Math.floor((e-h)/d));J.newvar(b);e=k;for(f=0;f< +c;f++)J.setvar(b,{ctype:"number",value:{real:f*d+h,imag:0}}),e=z(a[2]);J.removevar(b);return e};t.while$2=function(a,g){for(var c=a[1],b=a[0],d=z(b),h=k;"list"!==d.ctype&&d.value;)h=z(c),d=z(b);return h};t.apply$2=function(a,g){return t.apply$3([a[0],null,a[1]],g)};t.apply$3=function(a,g){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 h=0;h<c.length;h++)J.setvar(b,c[h]),d[h]=z(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=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,h=0;h<c.length;h++)J.setvar(b,c[h]),d=z(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=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 h=0,e=0;e<c.length;e++){J.setvar(b,c[e]);var f=z(a[2]);"boolean"===f.ctype&&!0===f.value&&(d[h]=c[e],h++)}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=B(a[0]);if("list"!==b.ctype)return b;var d=g.levels;void 0===d?d=1:(d=z(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=z(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=z(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 h.turnIntoCSList(a.map(z))};D.assigntake=function(a,g){var c=a.args[0],b=z(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?(e=b.value.slice(),e[d-1]=z(g),e=h.turnIntoCSList(e),b.userData&&(e.userData=b.userData)):(b=b.value,b=b.substring(0,d-1)+Z(z(g))+b.substring(d,b.length),e=w.string(b))); +ab([c,e])};D.assigndot=function(a,g){var c=z(a.obj),b=a.key;"geo"===c.ctype&&b&&ta.setField(c.value,b,B(g));return k};D.assigncolon=function(a,g){var c=a.obj,b=z(c),d=Z(z(a.key));"_?_"===d&&(d=void 0);if("geo"===b.ctype&&d)ta.setuserData(b.value,d,B(g));else if("list"===b.ctype||"string"===b.ctype&&d){var h={},e;for(e in b)h[e]=b[e];if(h.userData){var b={},f;for(f in h.userData)b[f]=h.userData[f];h.userData=b}else h.userData={};h.userData[d]=B(g);ab([c,h])}else d?console.log("User data can only be assigned to geo objects and lists."): +console.log("Key is undefined");return k};D.assignlist=function(a,g){var c=a.length,b=g.length;b<c&&(c=b);for(b=0;b<c;b++)ab([a[b],g[b]],[])};t.if$2=function(a,g){return t.if$3(a,g)};t.if$3=function(a,g){var c=B(a[0]);if("boolean"===c.ctype){if(!0===c.value)return z(a[1]);if(3===a.length)return z(a[2])}else ka("Condition for if is not boolean");return k};t.and$2=Pc;t.or$2=Qc;t.xor$2=function(a,g){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,g){var c=B(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 q=z(a[0]);if("list"!==q.ctype)return k;q=q.value;if(0===q.length)return c;for(var d=q[0],h=1;h<q.length;h++)d=g(d,q[h]);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 q=B(a[0]);if("list"!==q.ctype)return k;q=q.value;if(0===q.length)return c;var d="#";null!==a[1]&&"variable"=== +a[1].ctype&&(d=a[1].name);J.newvar(d);J.setvar(d,q[0]);for(var h=z(a[2]),e=1;e<q.length;e++){J.setvar(d,q[e]);var f=z(a[2]),h=g(h,f)}J.removevar(d);return h}};D.genericListMathGen("product",w.mult,m.real(1));D.genericListMathGen("sum",w.add,m.real(0));D.genericListMathGen("max",w.max,k);D.genericListMathGen("min",w.min,k);t.max$2=function(a,g){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([h.turnIntoCSList([c,b])])};t.min$2=function(a,g){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([h.turnIntoCSList([c,b])])};t.add$2=Rc;t.sub$2=jc;t.mult$2=Sc;t.div$2=Tc;t.mod$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype?m.mod(c,b):k};t.pow$2=Uc;t.exp$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.exp(c):k};t.sin$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.sin(c):k};t.sqrt$1=function(a,g){var c=B(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 h=[1,.3141,.5926,.5358,.9793,.2385,.6264,.3383,.2795,.0288],e,f,l,n=1;n<=c;n++){f=l=m.zero;e=a.value[b];for(d=b-1;0<=d;d--)l=m.add(f,m.mult(l,g)),f=m.add(e,m.mult(f,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(f,e);f=m.mult(d,d);e=m.sub(f,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),f)));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(h[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 h.turnIntoCSList([]);if(m._helper.isZero(a.value[b]))return g=D.roots(h.turnIntoCSList(a.value.slice(0,b))),h.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 f=b-d;0<f;f--)e[f-1]=m.add(a.value[f-1],m.mult(e[f],g[d]));e.shift();a=h.turnIntoCSList(e)}a=D.quadratic_roots(a);g[b-2]=a[0];g[b-1]=a[1]}return h.turnIntoCSList(g)};t.roots$1=function(a,g){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 h.sort1(c)}return k};t.autodiff$3=function(a,g){var c="x",b;if("function"===a[0].ctype)b=db[a[0].oper].body, +c=a[0].args[0].name;else if("function"===typeof a[0].impl)b=a[0];else return ka("could not parse function"),k;var d=B(a[1]),h=B(a[2]);if(1>h.value.real)return ka("grade cant be < 1"),k;h=m.add(h,m.real(1));return P.autodiff(b,c,d,h)};t.cos$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.cos(c):k};t.tan$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.tan(c):k};t.arccos$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.arccos(c):k};t.arcsin$1=function(a,g){var c=B(a[0]);return"number"=== +c.ctype?m.arcsin(c):k};t.arctan$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.arctan(c):k};t.arctan2$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===c.ctype&&"number"===b.ctype?m.arctan2(c,b):k};t.arctan2$1=function(a,g){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,g)}else if("number"===c.ctype)return m.arctan2(c);return k};t.log$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?m.log(c): +k};D.recursiveGen=function(a){var g=m[a],c=h[a];t[a+"$1"]=function(a,b){var d=B(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=B(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=B(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=B(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=z(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=z(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=z(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=z(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"===z(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isstring$1=function(a,g){return"string"===z(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.islist$1=function(a,g){return"list"===z(a[0]).ctype?{ctype:"boolean", +value:!0}:{ctype:"boolean",value:!1}};t.ismatrix$1=function(a,g){var c=z(a[0]);return-1!==h._helper.colNumb(c)?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.iscircle$1=function(a,g){var c=z(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=z(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= +z(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=z(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"===z(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};t.isnumbermatrix$1=function(a,g){var c=z(a[0]);return h.isNumberMatrix(c)};t.isnumbervector$1=function(a,g){var c=z(a[0]);return h.isNumberVector(c)}; +t.issun$1=function(a,g){var c=z(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=z(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=z(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=z(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"===z(a[0]).ctype?{ctype:"boolean",value:!0}:{ctype:"boolean",value:!1}};var Od={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=z(a[0]);if("geo"===c.ctype){var c=c.value,b=c.type,d=B(g.compatibility);"string"=== +d.ctype&&/^cinderella$/i.test(d.value)&&(/^Select/.test(b)&&(c=v.csnames[c.args[0]],b=c.type),Od.hasOwnProperty(b)?b=Od[b]:"CircleMr"===b&&(b=c.pinned?"CircleByFixedRadius":"CircleByRadius"));return w.string(b)}return k};t.inputs$1=function(a,g){var c=z(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:v.csnames[a]}}));if(/^Select/.test(b)||l[b].isMovable)switch(c.kind){case "P":case "L":d.push(c.homog);break;case "C":d.push(c.matrix)}return h.turnIntoCSList(d)}return k}; +t.moveto$2=function(a,g){var c=z(a[0]),b=B(a[1]);"geo"===c.ctype&&(c=c.value,h._helper.isNumberVecN(b,2)?ta.setField(c,"xy",b):h._helper.isNumberVecN(b,3)&&ta.setField(c,"homog",b));return k};t.continuefromhere$0=function(a,g){zb();return k};t.matrixrowcolumn$1=function(a,g){var c=z(a[0]);return-1!==h._helper.colNumb(c)?h.realVector([c.value.length,c.value[0].value.length]):k};t.rowmatrix$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.turnIntoCSList([c]):k};t.columnmatrix$1=function(a,g){var c= +z(a[0]);return"list"===c.ctype?h.turnIntoCSList(c.value.map(function(a){return h.turnIntoCSList([a])})):k};t.submatrix$3=function(a,g){var c=z(a[0]),b=z(a[1]),d=z(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),h.turnIntoCSList(a)});return f?h.turnIntoCSList(c): +k}return k};t.complex$1=function(a,g){var c,b,d;d=B(a[0]);if("list"===d.ctype&&h.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=B(a[0]);return"number"===c.ctype?h.realVector([c.value.real,c.value.imag]):k};t.cross$2= +$c;t.crossratio$4=function(a,g){var c=z(a[0]),b=z(a[1]),d=z(a[2]),e=z(a[3]),f=K(c),l=K(b),n=K(d),p=K(e);return f!==k&&l!==k&&n!==k&&p!==k?h.crossratio3(f,l,n,p,h.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=B(a[0]),b=B(a[1]),d=K(c),e=K(b);if(c!==k&&b!==k){var b=b.usage,f=d,m=e;if("Line"===c.usage||"Point"===b)f=e,m=d;c=h.cross(h.cross(h.linfty,m),f);return w.withUsage(c, +"Line")}return k};t.perp$2=function(a,g){var c=B(a[0]),b=B(a[1]),d=K(c),e=K(b);if(c!==k&&b!==k){var f=b.usage||e.usage,b=d,l=e;if("Line"===(c.usage||d.usage)||"Point"===f)b=e,l=d;c=h.turnIntoCSList([l.value[0],l.value[1],m.zero]);c=h.cross(c,b);return w.withUsage(c,"Line")}return k};t.perp$1=function(a,g){var c=B(a[0]);return h._helper.isNumberVecN(c,2)?h.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=K(a[0]),b=K(a[1]);return c!==k&&b!==k?(c=h.cross(c,b),w.withUsage(c,"Point")):k};t.join$2=function(a,g){var c=K(a[0]),b=K(a[1]);return c!==k&&b!==k?(c=h.cross(c,b),w.withUsage(c,"Line")):k};t.dist$2=function(a,g){var c=B(a[0]),b=B(a[1]),c=jc([c,b],[]);return t.abs$1([c],[])};t.dist_infix=t.dist$2;t.point$1=function(a,g){var c=z(a[0]);return h._helper.isNumberVecN(c,3)||h._helper.isNumberVecN(c,2)?w.withUsage(c,"Point"):c};t.line$1=function(a,g){var c=z(a[0]);return h._helper.isNumberVecN(c, +3)?w.withUsage(c,"Line"):c};t.det$3=function(a,g){var c=K(a[0]),b=K(a[1]),d=K(a[2]);if(c!==k&&b!==k&&d!==k)return h.det3(c,b,d)};t.det$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c);if(-1!==b&&b===c.value.length)return h.det(c)}return k};t.eig$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c);if(-1!==b&&b===c.value.length)return h.eig(c)}return k};t.eigenvalues$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c); +if(-1!==b&&b===c.value.length)return h.eig(c,!1).value[0]}return k};t.rank$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c);if(-1!==b&&b===c.value.length)return h.rank(c,g.precision)}return k};t.kernel$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c);if(-1!==b&&b===c.value.length)return c=h.nullSpace(c,g.precision),h.transpose(c)}return k};t.eigenvectors$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c);if(-1!== +b&&b===c.value.length)return h.eig(c).value[1]}return k};t.area$3=function(a,g){var c=K(a[0]),b=K(a[1]),d=K(a[2]);if(c!==k&&b!==k&&d!==k){var e=c.value[2],f=b.value[2],l=d.value[2];if(!m._helper.isAlmostZero(e)&&!m._helper.isAlmostZero(f)&&!m._helper.isAlmostZero(l))return c=h.scaldiv(e,c),b=h.scaldiv(f,b),d=h.scaldiv(l,d),c=h.det3(c,b,d),m.realmult(.5,c)}return k};t.inverse$1=function(a,g){var c=B(a[0]);if("list"===c.ctype){var b=h._helper.colNumb(c);if(-1!==b&&b===c.value.length)return h.inverse(c)}return k}; +t.linearsolve$2=function(a,g){var c=B(a[0]),b=B(a[1]);if("list"===c.ctype){var d=h._helper.colNumb(c);if(-1!==d&&d===c.value.length&&h._helper.isNumberVecN(b,d))return h.linearsolve(c,b)}return k};var be=[[[]],[[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=z(a[0]);if(h.isNumberMatrix(c).value){var b=c.value.length,d=h._helper.colNumb(c),e=b<d?d:b,f,l,n=Array(e);for(f=0;f<e;++f)for(n[f]=Array(e),l=0;l<e;++l)n[f][l]=f<b&&l<d?c.value[f].value[l].value.real:0;c=uc(n);e=Array(b);for(f=0;f<b;++f)l=c[f],e[f]=l<d?m.real(l+1):m.real(0);return h.turnIntoCSList(e)}return k};t.take$2=vc;t.length$1=function(a,g){var c=z(a[0]);return"list"===c.ctype||"string"===c.ctype?m.real(c.value.length):k};t.pairs$1= +function(a,g){var c=z(a[0]);return"list"===c.ctype?h.pairs(c):k};t.triples$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.triples(c):k};t.cycle$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.cycle(c):k};t.consecutive$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.consecutive(c):k};t.reverse$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.reverse(c):k};t.directproduct$2=function(a,g){var c=z(a[0]),b=z(a[1]);return"list"===c.ctype&&"list"===b.ctype?h.directproduct(c,b): +k};t.concat$2=ad;t.common$2=bd;t.remove$2=cd;t.append$2=dd;t.prepend$2=ed;t.contains$2=function(a,g){var c=z(a[0]),b=z(a[1]);return"list"===c.ctype?h.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=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 h;for(h=0;h<c.length;h++)J.setvar(b,c[h]),d[h]={val:c[h],result:z(a[2])};J.removevar(b);d.sort(w.compareResults); +b=[];for(h=0;h<c.length;h++)b[h]=d[h].val;return{ctype:"list",value:b}};t.sort$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.sort1(c):k};t.set$1=function(a,g){var c=z(a[0]);return"list"===c.ctype?h.set(c):k};t.combinations$2=function(a,g){function c(a,g){a===f?n.push(h.turnIntoCSList(l.slice())):g<e&&(l[a]=b.value[g],c(a+1,g+1),c(a,g+1))}var b=z(a[0]),d=z(a[1]),e,f,l,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 m.real(0);if(0=== +f)return m.real(1);if(1===f)return b;for(var p=d=1,r=1;r<=f;++r)var t=e-f+r|0,u=r|0,v=wc(t,u)|0,t=t/v|0,u=u/v|0,v=wc(d,u)|0,d=d/v|0,u=u/v|0,v=wc(t,p)|0,t=t/v|0,p=p/v|0,d=d*t|0,p=p*u|0;return m.real(d/p)}if("list"===b.ctype){e=b.value.length;if(0>f||f>e)return h.turnIntoCSList([]);if(0===f)return h.turnIntoCSList([h.turnIntoCSList([])]);if(f===e)return h.turnIntoCSList([b]);n=[];l=Array(f);c(0,0);return h.turnIntoCSList(n)}}return k};t.zeromatrix$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"=== +c.ctype&&"number"===b.ctype?h.zeromatrix(c,b):k};t.zerovector$1=function(a,g){var c=B(a[0]);return"number"===c.ctype?h.zerovector(c):k};t.transpose$1=function(a,g){var c=B(a[0]);return"list"===c.ctype&&-1!==h._helper.colNumb(c)?h.transpose(c):k};t.row$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==h._helper.colNumb(c)?h.row(c,b):k};t.column$2=function(a,g){var c=B(a[0]),b=B(a[1]);return"number"===b.ctype&&"list"===c.ctype&&-1!==h._helper.colNumb(c)?h.column(c, +b):k};t.dict$0=function(a,g){var c=Na.create(),b;for(b in g)g.hasOwnProperty(b)&&Na.put(c,w.string(b),z(g[b]));return c};t.put$3=function(a,g){var c=z(a[0]),b=z(a[1]),d=z(a[2]);return"dict"===c.ctype?(c=Na.clone(c),Na.put(c,b,d),c):k};t.get$2=function(a,g){var c=z(a[0]),b=z(a[1]);return"dict"===c.ctype?Na.get(c,b,k):k};t.red$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?h.realVector([Math.min(1,Math.max(0,c.value.real)),0,0]):k};t.green$1=function(a,g){var c=z(a[0]);return"number"===c.ctype? +h.realVector([0,Math.min(1,Math.max(0,c.value.real)),0]):k};t.blue$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?h.realVector([0,0,Math.min(1,Math.max(0,c.value.real))]):k};t.gray$1=function(a,g){var c=z(a[0]);return"number"===c.ctype?(c=Math.min(1,Math.max(0,c.value.real)),h.realVector([c,c,c])):k};t.grey$1=t.gray$1;D.HSVtoRGB=function(a,g,c){var b,d,e,f,k,m;a&&void 0===g&&void 0===c&&(g=a.s,c=a.v,a=a.h);f=Math.floor(6*a);k=6*a-f;a=c*(1-g);m=c*(1-k*g);g=c*(1-(1-k)*g);switch(f%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 h.realVector([b,d,e])};t.hue$1=function(a,g){var c=z(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=w.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 h=2*Math.PI/125;for(g=0;125> +g;g++)c[g]={X:b+Math.cos(g*h)*a,Y:d+Math.sin(g*h)*a};return[c]}if("polygon"===a.type){b=[];for(g=0;g<a.value.length;g++){d=a.value[g];c=[];for(h=0;h<d.length;h++)c[h]={X:d[h].X,Y:d[h].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:Yc}};t.keycode$0=function(a,g){return m.real(Zc)};t.mouse$0=function(a,g){return h.realVector([ra[0], +ra[1]])};t.mover$0=function(a,g){if(ja&&ja.mover)return{ctype:"geo",value:ja.mover};console.log("Not moving anything at the moment");return k};t.translate$1=function(a,g){var c=B(a[0]);"list"===c.ctype&&h.isNumberVector(c)&&2===c.value.length&&y.translate(c.value[0].value.real,c.value[1].value.real);return k};t.rotate$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&y.rotate(c.value.real);return k};t.scale$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&y.scale(c.value.real);return k};t.greset$0= +function(a,g){var c=eb.stack.length;y.greset();for(var b=0;b<c;b++)A.restore();return k};t.gsave$0=function(a,g){y.gsave();A.save();return k};t.grestore$0=function(a,g){y.grestore();A.restore();return k};t.color$1=function(a,g){var c=B(a[0]);"list"===c.ctype&&h.isNumberVector(c).value&&y.setcolor(c);return k};t.linecolor$1=function(a,g){var c=B(a[0]);"list"===c.ctype&&h.isNumberVector(c).value&&y.setlinecolor(c);return k};t.pointcolor$1=function(a,g){var c=B(a[0]);"list"===c.ctype&&h.isNumberVector(c).value&& +y.setpointcolor(c);return k};t.alpha$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&y.setalpha(c);return k};t.pointsize$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&y.setpointsize(c);return k};t.linesize$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&y.setlinesize(c);return k};t.textsize$1=function(a,g){var c=B(a[0]);"number"===c.ctype&&y.settextsize(c);return k};t.playanimation$0=function(a,g){M();return k};t.pauseanimation$0=function(a,g){Ga();return k};t.stopanimation$0=function(a,g){Ha(); +return k};t.text$1=function(a,g){var c=B(a[0]);return w.string(Z(c))};t.replace$3=function(a,g){var c=z(a[0]),b=z(a[1]),d=z(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 h="";d=b=-1;for(var e=0;e<c.length;e++){var f=c[e][0],k=a.indexOf(f,g);-1!==k&&(-1===b?(h=f,b=k,d=e):k<b&&(h=f, +b=k,d=e))}return h}var b,d,h,e=z(a[0]);h=z(a[1]);if("string"===e.ctype&&"list"===h.ctype){for(var e=e.value,f=[],m=0;m<h.value.length;m++){var l=h.value[m];"list"===l.ctype&&2===l.value.length&&"string"===l.value[0].ctype&&"string"===l.value[1].ctype&&(f[f.length]=[l.value[0].value,l.value[1].value])}b=-1;for(h=c(e,f,0);-1!==b;)e=e.substring(0,b)+f[d][1]+e.substring(b+h.length,e.length),h=b+f[d][1].length,h=c(e,f,h);return{ctype:"string",value:e}}return k};t.substring$3=function(a,g){var c=z(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,g){var c=z(a[0]),b=z(a[1]);if("string"===c.ctype&&"string"===b.ctype)return t.tokenize$2([c,h.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=z(g.autoconvert);"boolean"===d.ctype&&(b=d.value)}return b&&""!==c&& +(b=Number(c),!isNaN(b))?m.real(b):w.string(c)}var d=b.value[0],e=h.turnIntoCSList(b.value.slice(1)),c=c.split(d.value);return h.turnIntoCSList(c.map(function(a){return t.tokenize$2([w.string(a),e],g)}))}return k};t.indexof$2=function(a,g){var c=z(a[0]),b=z(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=z(a[0]),b=z(a[1]),d=z(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=z(a[0]);return"string"===c.ctype?(c=Ua(c.value),z(c)):k};t.unicode$1=function(a,g){var c;c=z(a[0]);var b=16;if(g.base){var d=z(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 w.string(c)};t.international$1=function(a,g){return t.international$2([a[0],null],g)};t.international$2=function(a,g){var c=z(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 h=z(a[1]),h="number"===h.ctype?h.value.real:0,b=(b._pluralFormFunction||ce)(h);return b<d.length?w.string(d[b]):c};t.currentlanguage$0=function(a,g){return w.string(p.language|| +"en")};D.basismap=function(a,g,c,b){var d=h.turnIntoCSList([a,g,c]),d=h.adjoint3(h.transpose(d));b=w.mult(d,b);d=h.turnIntoCSList([w.mult(b.value[0],a),w.mult(b.value[1],g),w.mult(b.value[2],c)]);return h.transpose(d)};t.map$8=function(a,g){var c=K(a[0]),b=K(a[1]),d=K(a[2]),e=K(a[3]),f=K(a[4]),m=K(a[5]),l=K(a[6]),n=K(a[7]);return f!==k&&m!==k&&l!==k&&n!==k&&c!==k&&b!==k&&d!==k&&e!==k?(f=D.basismap(f,m,l,n),c=D.basismap(c,b,d,e),c=w.mult(f,h.adjoint3(c)),h.normalizeMax(c)):k};t.map$6=function(a,g){var c= +K(a[0]),b=K(a[1]),d=K(a[2]),e=h.realVector([0,0,1]),f=h.cross,m=f(f(d,f(e,f(c,b))),f(b,f(e,f(c,d)))),l=K(a[3]),n=K(a[4]),p=K(a[5]),e=f(f(p,f(e,f(l,n))),f(n,f(e,f(l,p))));return l!==k&&n!==k&&p!==k&&e!==k&&c!==k&&b!==k&&d!==k&&m!==k?(l=D.basismap(l,n,p,e),c=D.basismap(c,b,d,m),c=w.mult(l,h.adjoint3(c)),h.normalizeMax(c)):k};t.map$4=function(a,g){var c=h.ii,b=h.jj,d=K(a[0]),e=K(a[1]),f=K(a[2]),m=K(a[3]);return f!==k&&m!==k&&d!==k&&e!==k?(f=D.basismap(f,m,c,b),c=D.basismap(d,e,c,b),c=w.mult(f,h.adjoint3(c)), +h.normalizeMax(c)):k};t.map$2=function(a,g){var c=h.ii,b=h.jj,d=K(a[0]),e=w.add(h.realVector([1,0,0]),d),f=K(a[1]),m=w.add(h.realVector([1,0,0]),f);return f!==k&&m!==k&&d!==k&&e!==k?(f=D.basismap(f,m,c,b),c=D.basismap(d,e,c,b),c=w.mult(f,h.adjoint3(c)),h.normalizeMax(c)):k};t.pointreflect$1=function(a,g){var c=h.ii,b=h.jj,d=K(a[0]),e=w.add(h.realVector([1,0,0]),d),f=w.add(h.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,h.adjoint3(c)),h.normalizeMax(c)): +k};t.linereflect$1=function(a,g){var c=h.ii,b=h.jj,d=K(a[0]),e=h.realVector([Math.random(),Math.random(),Math.random()]),f=h.realVector([Math.random(),Math.random(),Math.random()]),e=h.cross(e,d),f=h.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,h.adjoint3(c)),h.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=ta.getField(c,"x"),g.y=ta.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=z(a[0]);if("list"===c.ctype){for(var b=[],d=0;d<c.value.length;d++){var h=D.extractPoint(c.value[d]);if(!h.ok)return k;b[d]={X:h.x,Y:h.y}}return{ctype:"shape",type:"polygon", +value:[b]}}return k};t.circle$2=function(a,g){var c=B(a[0]),b=B(a[1]),c=D.extractPointVec(c);if(!c.ok||"number"!==b.ctype)return k;c=h.turnIntoCSList([c.x,c.y,c.z]);return{ctype:"shape",type:"circle",value:h.turnIntoCSList([c,b])}};t.screen$0=function(a,g){var c=y.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(ca,0),b(ca,da),b(0,da)]]}};t.halfplane$2=function(a,g){var c=B(a[0]), +b=B(a[1]),d=K(c),e=K(b);if(c!==k&&b!==k){var f=b.usage,b=d,l=e;if("Line"===c.usage||"Point"===f)b=e,l=d;c=h.turnIntoCSList([l.value[0],l.value[1],m.zero]);c=h.cross(c,b);c=h.cross(l,c);c=w.div(c,c.value[2]);b=w.div(b,b.value[2]);b=h.sub(b,c);l=h.abs(b);b=w.div(b,l);l=c.value[0].value.real;c=c.value[1].value.real;d=1E3*b.value[0].value.real;b=1E3*b.value[1].value.real;return{ctype:"shape",type:"polygon",value:[[{X:l+b/2,Y:c-d/2},{X:l+b/2+d,Y:c-d/2+b},{X:l-b/2+d,Y:c+d/2+b},{X:l-b/2,Y:c+d/2}]]}}return k}; +t.element$1=function(a,g){var c=z(a[0]);return"string"===c.ctype&&v.csnames.hasOwnProperty(c.value)?{ctype:"geo",value:v.csnames[c.value]}:k};D.all$1=function(a,g){var c=z(a[0]);return"geo"===c.ctype&&c.value.incidences?h.ofGeos(c.value.incidences.map(function(a){return v.csnames[a]}).filter(g)):h.nil};t.allpoints$0=function(a,g){return h.ofGeos(v.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 h.ofGeos(ma)};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 h.ofGeos(Hc)};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 h.ofGeos(v.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 h.ofGeos(v.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 h.ofGeos(v.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 h.ofGeos(v.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 h.ofGeos(v.gslp)};t.allelements$1= +function(a,g){return D.all$1(a,function(a){return!0})};t.elementsatmouse$0=function(a,g){var c=h.realVector([ra[0],ra[1],1]),b=function(a){if(m._helper.isAlmostZero(a.value[2]))return Infinity;a=h.normalizeZ(a);return h.abs(h.sub(a,c)).value.real},d=function(a){a=h.turnIntoCSList([a.value[0],a.value[1],m.zero]);return h.normalizeMax(h.cross(c,a))},e=function(a){var g=w.mult(a.matrix,c),g=d(g);a=l._helper.IntersectLC(g,a.matrix).map(function(a){return b(a)});return.5>Math.min(a[0],a[1])},f=v.points.filter(function(a){return.5> +b(a.homog)}),k=v.lines.filter(function(a){var g;g=d(a.homog);g=h.normalizeMax(h.cross(a.homog,g));if((g=.5>b(g))&&"S"===a.kind){var e=a.homog,e=h.turnIntoCSList([e.value[0],e.value[1],m.zero]);a=h.crossratio3(a.farpoint,a.startpos,a.endpos,c,e).value.real;if(0>a||1<a)g=!1}return g}),n=v.conics.filter(function(a){var g=e(a);if(g&&a.isArc){var b=h.crossratio3harm(a.startPoint,a.endPoint,a.viaPoint,c,h.ii);a=b.value[0];b=b.value[1];m._helper.isAlmostZero(a)?(a=m.div(a,b),b=m.real(1)):(b=m.div(b,a),a= +m.real(1));var d=h.abs(h.turnIntoCSList([b,a]));a=m.div(a,d);b=m.div(b,d);b=m.mult(b,a);0>a.value.real&&(b=m.neg(b));0>b.value.real&&(g=!1)}return g}),f=f.concat(k,n);return h.ofGeos(f)};t.incidences$1=t.allelements$1;t.createpoint$2=function(a,g){var c=z(a[0]),b=K(a[1]);return"string"!==c.ctype?(ka("Name must be a string"),k):"list"!==b.ctype&&h.isNumberVector(b)?(ka("Position must be a number vector"),k):Ka({name:c.value,type:"Free",labeled:!0,pos:b})};t.create$3=function(a,g){var c=z(a[0]),b=z(a[1]), +d=z(a[2]),e,f;if("string"===c.ctype)e=c.value;else{if("list"!==c.ctype)return ka("Names must be a string or a list of strings"),k;if(1!==c.value.length){e=w.string(c.value.map(function(a){return a.value}).join("__"));e=t.create$3([e,b,d],g);if(e!==k)for(b=w.string(e.kind.replace(/^(.*)s$/,"Select$1")),d=h.turnIntoCSList([w.string(e.name)]),f=0;f<c.value.length;++f)t.create$3([c.value[f],b,d],{index:m.real(f+1)});return e}if("string"!==c.value[0].ctype)return ka("Element of names list must be a string"), +k;e=c.value[0].value}if("string"!==b.ctype)return ka("Type must be a string"),k;if("list"!==d.ctype)return ka("Arguments must be a list"),k;if(!l.hasOwnProperty(b.value)&&!Ac.hasOwnProperty(b.value)&&!zd.hasOwnProperty(b.value))return ka("Invalid geometric operation: '"+b.value+"'"),k;var c=[],n=null;for(f=0;f<d.value.length;f++){var p=d.value[f];if("string"===p.ctype)c.push(p.value);else if("geo"===p.ctype)c.push(p.value.name);else if(n=K(p),n===k)return ka("Unknown argument type"),k}e={name:e,type:b.value, +labeled:!0};n&&(e.pos=n);0<c.length&&(e.args=c);b=B(g.index);"number"===b.ctype&&(e.index=b.value.real|0);return Ka(e)};t.javascript$1=function(a,g){var c=z(a[0]);"string"===c.ctype&&(new Function(c.value)).call(sa);return k};t.use$1=function(a,g){function c(a,c,g){t[a.toLowerCase()+"$"+c]=g}var b=z(a[0]);if("string"===b.ctype){var b=b.value,d;p.plugins&&(d=p.plugins[b]);d||(d=va._pluginRegistry[b]);if(d)return d({instance:sa,config:p,nada:k,evaluate:z,extractPoint:D.extractPoint,evaluateAndVal:B, +defineFunction:c,addShutdownHook:jb.push.bind(jb),addAutoCleaningEventListener:H,getVariable:J.getvar.bind(J),getInitialMatrix:function(){return y.drawingstate.initialmatrix},setTextRenderer:function(a,c){Jc=a;c&&(Bd=c)},getImage:function(a,c){"string"===typeof a&&(a=w.string(a));var g=Ja(a);if(!g)return null;!c&&g.cdyUpdate&&g.cdyUpdate();return g},getMyfunction:function(a){return db.hasOwnProperty(a)?db[a]:null}}),{ctype:"boolean",value:!0};ka("Plugin "+b+" not found");return{ctype:"boolean",value:!1}}return k}; +t.format$2=function(a,g){function c(a){a=a.toFixed(e);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:Z(a).toString()}}var d=B(a[0]),h=B(a[1]),e;return"number"!==d.ctype&&"list"!==d.ctype||"number"!==h.ctype?k: +(e=Math.max(0,Math.min(20,Math.round(h.value.real))),b(d))};Date.now||(Date.now=function(){return(new Date).getTime()});var Pd=0;t.timestamp$0=function(a,g){return m.real(Date.now())};t.seconds$0=function(a,g){return m.real((Date.now()-Pd)/1E3)};t.resetclock$0=function(a,g){Pd=Date.now();return k};t.time$0=function(a,g){var c=new Date;return h.realVector([c.getHours(),c.getMinutes(),c.getSeconds(),c.getMilliseconds()])};t.date$0=function(a,g){var c=new Date;return h.realVector([c.getFullYear(),c.getMonth()+ +1,c.getDate()])};t.simulationtime$0=function(a,g){return m.real(Ib*Md)};t.settimeout$2=function(a,g){function c(){z(d);e()}var b=z(a[0]),d=a[1];"number"===b.ctype&&"undefined"!==typeof window&&window.setTimeout(c,1E3*b.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=z(a[1]);console.log(d);if("list"!==d.ctype)return k;for(var h=[],e=0;e<d.value.length;e++)"string"===d.value[e].ctype&&h.push(d.value[e].value);console.log("***********"); +console.log(h);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=B(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=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]],{});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,g){var c=B(a[0]);"number"===c.ctype&&ha(c.value.real);return k};t.setsimulationaccuracy$1=function(a,g){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,g){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 fc=null,mc=null;t.createtool$3= +function(a,g){var c,b="left",d="top",h=null;g.space&&(c=z(g.space),"number"===c.ctype&&(h=c.value.real/2));var e=null;g.toolbar&&(c=z(g.toolbar),"string"===c.ctype&&((e=document.getElementById(c.value))||console.warn("Element #"+c.value+" not found")));if(!e){if(g.reference){var f=z(g.reference);if("string"===f.ctype)switch(f.value){case "UR":b="right";break;case "LL":d="bottom";break;case "LR":b="right",d="bottom"}}e=document.createElement("div");e.className="CindyJS-toolbar";na.parentNode.appendChild(e); +f=z(a[1]);c=z(a[2]);"number"===f.ctype&&(e.style[b]=f.value.real+"px");"number"===c.ctype&&(e.style[d]=c.value.real+"px");null!==h&&(e.style.margin=-h+"px")}f=z(a[0]);if("string"===f.ctype)f=[[f.value]];else if("list"===f.ctype)f=f.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 ka("Name must be a string or a list of strings"),k;if(g.flipped&&(c=z(g.flipped),"boolean"===c.ctype&&c.value)){ka("Flipping"); +var m=0;c=f.length;f.forEach(function(a){a.length>m&&(m=a.length)});for(var l=[],n=0;n<m;++n){l[n]=[];for(var p=0;p<c;++p)l[n][p]=f[p][n]||null}f=l}"bottom"===d&&f.reverse();f.forEach(function(a){"right"===b&&a.reverse();var c=document.createElement("div");e.appendChild(c);a.forEach(function(a){function g(){fc&&fc.classList.remove("CindyJS-active");fc=d;d.classList.add("CindyJS-active");xc=a;var c=G[xc].actions;mc&&(mc.textContent=c[0].tooltip||"");Aa=[];xb=Ya=0}G.hasOwnProperty(a)||(ka("Tool '"+ +a+"' not implemented yet."),a=null);if(null===a){var b=document.createElement("span");b.className="CindyJS-spacer";c.appendChild(b)}else{var d=document.createElement("button"),b=document.createElement("img");b.src=va.getBaseDir()+"images/"+a+".png";d.appendChild(b);d.addEventListener("click",g);fc||g();null!==h&&(d.style.margin=h+"px");c.appendChild(d)}})});return k};t.dropped$0=function(){return rc};t.droppoint$0=function(){return sc};t.parsecsv$1=function(a,g){var c=!0,b=B(g.autoconvert);"boolean"=== +b.ctype&&(c=b.value);var d=null,b=B(g.delimiter);"string"===b.ctype&&/^[^\"\r\n]$/.test(b.value)&&(d=b.value);b=B(a[0]);if("string"!==b.ctype)return ka("CSV data is not a string"),k;var b=b.value,e='(?:"((?:[^"]+|"")*)"|([^]*?))(\r\n|(,)|[\r\n]|$)';d&&(d=d.replace(/[^A-Za-z0-9]/g,"\\$&").replace(/\$/g,"$$$$"),e=e.replace(/,/g,d));for(var e=new RegExp(e,"g"),d=[],f=[],l=null;e.lastIndex<b.length;){var n=e.exec(b),p=n[2];"string"===typeof n[1]&&(p=n[1].replace(/""/g,'"'));p=c?/^[Tt]rue$/.test(p)?w.bool(!0): +/^[Ff]alse$/.test(p)?w.bool(!1):/^[\-+]?([0-9]+(\.[0-9]*)?|\.[0-9]+|Infinity)$/.test(p)?m.real(Number(p)):w.string(p):w.string(p);d.push(p);n[4]&&e.lastIndex===b.length&&(d.push(w.string("")),n={});if(!n[4]){null===l&&(l=d.length);if(l<d.length)for(l=d.length,n=0;n<f.length;++n)for(p=f[n].length;p<l;++p)f[n][p]=k;else if(l>d.length)for(n=d.length;n<l;++n)d[n]=k;f.push(d);d=[]}}return h.turnIntoCSList(f.map(h.turnIntoCSList))};t.load$2=function(a,g){return t.load$3([a[0],null,a[1]],g)};t.load$3=function(a, +g){function c(){if(f.readyState===XMLHttpRequest.DONE){var c;200===f.status?c=w.string(String(f.responseText)):(ka("Failed to load "+h+": "+f.statusText),c=k);J.newvar(b);J.setvar(b,c);z(a[2]);J.removevar(b);e()}}var b="#";null!==a[1]&&"variable"===a[1].ctype&&(b=a[1].name);var d=B(a[0]),h=null,f=null;"string"===d.ctype&&/^https?:\/\//.test(d.value)&&(h=d.value);return null!==h?(f=new XMLHttpRequest,f.onreadystatechange=c,f.open("GET",h),f.send(),w.bool(!0)):k};D.extractPoint=function(a){var g={ok:!1}; +if("geo"===a.ctype){var c=a.value;if("P"===c.kind)return g.x=ta.getField(c,"x").value.real,g.y=ta.getField(c,"y").value.real,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.value.real,g.y=c.value.real,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&&(a=m.div(a,b),c=m.div(c,b),g.x=a.value.real,g.y=c.value.real,g.ok=!0));return g};t.draw$1=function(a,g){var c= +B(a[0]);if("shape"===c.ctype)D.drawshape(c,g);else if("Line"===c.usage)x.handleModifs(g,x.lineModifs),x.drawline(c);else{var b=D.extractPoint(c);if(!b.ok){if("undefined"!==typeof c.value&&2===c.value.length)return t.draw$2(c.value,g);return}null!==g&&x.handleModifs(g,x.pointModifs);x.drawpoint(b)}return k};t.draw$2=function(a,g){var c=B(a[0]),b=B(a[1]),c=D.extractPoint(c),b=D.extractPoint(b);if(!c.ok||!b.ok)return k;null!==g&&x.handleModifs(g,x.lineModifs);x.drawsegcore(c,b);return k};t.drawcircle$2= +function(a,g){return D.drawcircle(a,g,"D")};D.arcHelper=function(a){var g={};g.startPoint=K(a[0]);g.viaPoint=K(a[1]);g.endPoint=K(a[2]);return g};t.fillcircle$2=function(a,g){return D.drawcircle(a,g,"F")};t.drawarc$3=function(a,g){var c=D.arcHelper(a);return D.drawarc(c,g,"D")};t.fillarc$3=function(a,g){var c=D.arcHelper(a);return D.drawarc(c,g,"F")};D.drawarc=function(a,g,c){var b=a.startPoint,d=a.viaPoint;a=a.endPoint;if(!h._helper.isAlmostReal(h.turnIntoCSList([b,d,a])))return k;x.handleModifs(g, +x.conicModifs);x.preDrawCurve();g=h.det3(b,d,a);if(1E-12<Math.abs(g.value.real)){g=l._helper.ConicBy5(null,b,d,a,h.ii,h.jj);var e=l._helper.CenterOfConic(g),e=h.normalizeMax(e);g=m.real(0);var f=h.turnIntoCSList([h.turnIntoCSList([e.value[2],g,m.neg(e.value[0])]),h.turnIntoCSList([g,e.value[2],m.neg(e.value[1])]),h.turnIntoCSList([g,g,e.value[2]])]);g=h.normalizeZ(w.mult(f,b));h.normalizeZ(w.mult(f,d));f=h.normalizeZ(w.mult(f,a));g=-Math.atan2(g.value[1].value.real,g.value[0].value.real);f=-Math.atan2(f.value[1].value.real, +f.value[0].value.real);e=h.normalizeZ(e);b=h.normalizeZ(b);d=h.normalizeZ(d);a=h.normalizeZ(a);var n=h.abs(h.sub(b,e)),p=[e.value[0].value.real,e.value[1].value.real],e=y.drawingstate.matrix,r=p[0]*e.a-p[1]*e.b+e.tx,p=p[0]*e.c-p[1]*e.d-e.ty,b=0<h.det3(b,d,a).value.real;A.save();A.beginPath();A.translate(r,p);A.arc(0,0,n.value.real*e.sdet,g,f,b);"F"===c&&(A.fillStyle=x.lineColor,A.closePath(),A.fill());"D"===c&&A.stroke();A.restore()}else{if("D"!==c)return k;c=D.extractPoint(b);g=D.extractPoint(d); +f=D.extractPoint(a);if(!c.ok||!g.ok||!f.ok)return k;n=(c.x-f.x)*(c.x-f.x)+(c.y-f.y)*(c.y-f.y);e=(f.x-g.x)*(f.x-g.x)+(f.y-g.y)*(f.y-g.y);if(1E-12>(c.x-g.x)*(c.x-g.x)+(c.y-g.y)*(c.y-g.y)||1E-12>n||1E-12>e)return k;0>h.crossratio3(b,a,d,h.cross(h.cross(b,d),h.linfty),h.ii).value.real?x.drawsegcore(c,f):x.drawRaySegment(b,a)}return k};D.drawcircle=function(a,g,c){var b=B(a[0]);a=B(a[1]);var d=D.extractPoint(b);if(!d.ok||"number"!==a.ctype||!m._helper.isAlmostReal(a))return k;var b=y.drawingstate.matrix, +e=d.x*b.a-d.y*b.b+b.tx,d=d.x*b.c-d.y*b.d-b.ty;x.handleModifs(g,x.conicModifs);x.preDrawCurve();A.lineJoin="miter";A.beginPath();A.arc(e,d,Math.abs(a.value.real)*b.sdet,0,2*Math.PI);A.closePath();"D"===c&&A.stroke();"F"===c&&(A.fillStyle=x.lineColor,A.fill());"C"===c&&A.clip();return k};t.drawconic$1=function(a,b){var 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=m.real(.5),d=c.value[0],f=c.value[2],f=m.mult(f,e),l=c.value[1],n=c.value[3],n=m.mult(n,e),p=c.value[4],p=m.mult(p,e),c=c.value[5],c=h.turnIntoCSList([h.turnIntoCSList([d,f,n]),h.turnIntoCSList([f,l,p]),h.turnIntoCSList([n,p,c])])}else{if(!h.isNumberMatrix(c).value||3!==c.value.length||3!==c.value[0].value.length)return k;d=h.transpose(c);h.equals(c,d).value||(c=h.add(d,c))}return D.drawconic(c,b)};D.drawconic=function(a,b){function c(a,c){var b=(p*a+r*c+t)*a+(u*c+v)*c+w;return 0<=b?1:0>b? +-1:NaN}function d(a){K.next=a;a.prev=K;return K=a}function e(a,b,g,d){return{a:a,b1:b,b2:g,vertical:!0,index:d,sign:function(b){return c(a,b)},mkp:function(c){return{x:a,y:c}},sol:Jb(u,r*a+v,(p*a+t)*a+w),discr:function(){return Jb(E,-2*C,z)},tpt:function(a){return{x:a,y:-.5*(r*a+v)/u}}}}function f(a,b,g,d){return{a:a,b1:b,b2:g,vertical:!1,index:d,sign:function(b){return c(b,a)},mkp:function(c){return{x:c,y:a}},sol:Jb(p,r*a+t,(u*a+v)*a+w),discr:function(){return Jb(E,-2*F,D)},tpt:function(a){return{x:-.5* +(r*a+t)/p,y:a}}}}function m(a){var c=Math.min(a.b1,a.b2),b=Math.max(a.b1,a.b2),g=a.sign(c),e=a.sign(b);if(!isFinite(g*e))return!1;var h=a.sol,f;if(g!==e){if(null===h)return!1;f=.5*(h[0]+h[1]);f>c&&f<b?(c=a.sign(f),f=h[c===e?0:1]):(g=.5*(c+b),f=h[Math.abs(g-h[0])<Math.abs(g-h[1])?0:1]);N.push(d(a.mkp(f)))}else{if(null===h){if(0>=G)return!0;h=a.discr();if(null===h)return!0;a=a.tpt(h[a.index]);a.x>=H&&a.x<=J&&a.y>=L&&a.y<=M&&d(a);return!0}f=.5*(h[0]+h[1]);if(!(f>c&&f<b))return!0;c=a.sign(f);if(c===g|| +isNaN(c))return!0;a.b1>a.b2&&(h=[h[1],h[0]]);N.push(d(a.mkp(h[0])));N.push(d(a.mkp(h[1])))}return!0}function k(a,c,b,g,d){var e=c-g,h=b-a,q=a*g-c*b,f=C*e+F*h+E*q;if(1E-14>Math.abs(f))return A.lineTo(b,g);var m=(z*e+B*h+C*q)/f,e=(B*e+D*h+F*q)/f;if(!isFinite(m)||!isFinite(e)||.04>Math.abs(a*e+m*g+b*c-b*e-m*c-a*g))return A.lineTo(b,g);do if(!(10<d)){var q=.5*(a+b),h=.5*(c+g),l=m-q,f=e-h;if(!(.04>l*l+f*f)){var n=p*l*l+r*l*f+u*f*f,oa=2*p*l*q+r*(l*h+f*q)+2*u*f*h+t*l+v*f,W=(p*q+r*h+t)*q+(u*h+v)*h+w,xa=Jb(n, +oa,W);xa||(xa=[-.5*oa/n,-2*W/oa]);if(0<xa[0])xa=xa[0];else if(0<=xa[1])xa=xa[1];else break;l=q+xa*l;f=h+xa*f;q=l-.5*(m+q);h=f-.5*(e+h);if(!(.04>q*q+h*h)){k(a,c,l,f,d+1);k(l,f,b,g,d+1);return}}}while(0);A.quadraticCurveTo(m,e,b,g)}x.handleModifs(b,x.conicModifs);if(0!==x.lsize){x.preDrawCurve();var l;l=h.normalizeMax(a);if(h._helper.isAlmostReal(l)){var n=y.toMat();l=h.mult(h.transpose(n),l);l=h.mult(l,n);l=h.normalizeMax(l);var p=l.value[0].value[0].value.real,r=2*l.value[0].value[1].value.real,t= +2*l.value[0].value[2].value.real,u=l.value[1].value[1].value.real,v=2*l.value[1].value[2].value.real,w=l.value[2].value[2].value.real,z=4*w*u-v*v,B=v*t-2*w*r,C=v*r-2*u*t,D=4*w*p-t*t,F=t*r-2*v*p,E=4*u*p-r*r,G=E;l=u*D+r*B+p*z-w*E;0>l&&(p=-p,r=-r,t=-t,u=-u,v=-v,w=-w,l=-l);l=x.lsize;var H=-l,L=-l,J=ca+l,M=da+l,N=[],K=l={};if(m(e(H,L,M,0))&&m(f(M,H,J,1))&&m(e(J,M,L,1))&&m(f(L,J,H,0))&&K!==l){K.next=l.next;l.next.prev=K;A.beginPath();var I,O;if(0===N.length){I=K;A.moveTo(I.x,I.y);do O=I.next,k(I.x,I.y, +O.x,O.y,0),I=O;while(I!==K);A.closePath()}n=1===c(H,L)?0:1;if(4===N.length){var P=0;for(l=0;2>l;++l){I=N[l];O=N[l+2];var Q=O.x-I.x;I=O.y-I.y;I=(p*Q+r*I)*Q+u*I*I;Math.abs(I)>Math.abs(P)&&(P=I)}if(isNaN(P))return;0<=P&&(n=1-n)}for(l=n;l<N.length;l+=2)for(I=N[l],n=N[(l+1)%N.length],A.moveTo(I.x,I.y),O=I.next;I!==n;O=(I=O).next)k(I.x,I.y,O.x,O.y,0);A.stroke()}}}};t.drawall$1=function(a,b){var c=z(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=m.value,c=0;c<a.length;c++){var b=a[c],g;for(g=0;g<b.length;g++){var d=b[g],h=d.X*f.a-d.Y*f.b+f.tx,d=d.X*f.c-d.Y*f.d-f.ty; +0===g?A.moveTo(h,d):A.lineTo(h,d)}A.closePath()}}function h(){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*f.a-c.y*f.b+f.tx,c=c.x*f.c-c.y*f.d-f.ty;0===a?A.moveTo(b,c):A.lineTo(b,c)}d&&A.closePath()}x.handleModifs(b,x.conicModifs);x.preDrawCurve();var f=y.drawingstate.matrix,m=z(a[0]);A.beginPath();"list"===m.ctype&&h();"shape"===m.ctype&&e();"D"===c&&(x.fillColor&&(A.fillStyle=x.fillColor,A.fill(x.fillrule)),A.stroke());"F"===c&&(A.fillStyle=x.lineColor, +A.fill(x.fillrule));"C"===c&&A.clip();return k};var Jc=fd,Bd=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=z(a[1]);var e=D.extractPoint(d);if(!e.ok)return null;x.handleModifs(b,x.textModifs);b=y.drawingstate.textsize;null===b&&(b=ga.textsize);null!==x.size&&(b=x.size);A.fillStyle=x.textColor;var h= +y.drawingstate.matrix,d=e.x*h.a-e.y*h.b+h.tx+x.xOffset,e=e.x*h.c-e.y*h.d-h.ty-x.yOffset;a=Z(a);va._pluginRegistry.katex||"string"!==typeof a||3<=a.split("$").length&&pa("katex","katex-plugin.js",!0);h=x.bold+x.italics+Math.round(10*b)/10+"px "+x.family;A.font=h;return c?c(a,h,d,e,x.align,b):Jc(A,a,d,e,x.align,b,b*ga.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,m;for(m=0;m<c;++m)"list"===d[m].ctype&&d[m].value.length>f&&(f=d[m].value.length);-1===f?(d=d.map(function(a){return[a]}),f=1):d=d.map(function(a){return h.asList(a).value});var l=100,n=null,p=!0,r=y.drawingstate.textcolor;x.handleModifs(b,{size:!0,color:function(a){h._helper.isNumberVecN(a,3)&&(r=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&&(l=a.value.real)},height:function(a){"number"===a.ctype&&(n=a.value.real)},border:function(a){"boolean"===a.ctype&&(p=a.value)}});var t=y.drawingstate.textsize;null===t&&(t=ga.textsize);null!==x.size&&(t=x.size);null===n&&(n=1.6*t);A.font=x.bold+x.italics+Math.round(10*t)/10+"px "+x.family;m=y.drawingstate.matrix;var u=f*l,v=c*n,t=e.x*m.a-e.y*m.b+m.tx+x.xOffset,w=e.x*m.c-e.y*m.d-m.ty-x.yOffset-v;if(p){x.preDrawCurve();A.strokeStyle=x.lineColor;A.beginPath();for(m=1;m<c;++m)A.moveTo(t,w+m* +n),A.lineTo(t+u,w+m*n);for(e=1;e<f;++e)A.moveTo(t+e*l,w),A.lineTo(t+e*l,w+v);A.stroke();A.lineWidth=x.lsize+1;A.beginPath();A.rect(t,w,u,v);A.stroke()}t+=x.align*l+(1-2*x.align)*n*.3;w+=.7*n;A.fillStyle=r;for(m=0;m<c;++m)for(e=0;e<f;++e)u=Z(d[m][e]),Jc(A,u,t+e*l,w+m*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=z(a[0]);return"shape"===c.ctype?D.fillshape(c,b):k};t.clip$1=function(a,b){var c=z(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;p?(A.lineTo(b,a),A.lineTo(g,c)):(A.beginPath(),A.moveTo(b,a),A.lineTo(g,c),p=!0)}function e(a,b,g,h,k){var n=c(g),r=c(h);if(.001>k)!f&&p&&(A.stroke(),p=!1);else if(n||r){var t=m.real((a.value.real+b.value.real)/2);J.setvar(B,t);var u=z(w), +v=c(u);if(n&&r&&v){var Wb=g.value.real,r=u.value.real,v=h.value.real;if(n=1>Math.abs(Wb+v-2*r)/l){var Wa=m.real((a.value.real+t.value.real)/2);J.setvar(B,Wa);var Wa=z(w),Ra=m.real((t.value.real+b.value.real)/2);J.setvar(B,Ra);Ra=z(w);Wb=Math.abs(Wb+r-2*Wa.value.real)/l;r=Math.abs(r+v-2*Ra.value.real)/l;n=n&&1>Wb&&1>r}n?(d(a,t,g,u,k/2),d(t,b,u,h,k/2)):(e(a,t,g,u,k/2),e(t,b,u,h,k/2))}else e(a,t,g,u,k/2),e(t,b,u,h,k/2)}}var f=!1,l=.2/Tb,n=0,p=!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=y.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&&(r=a.value.real)},stop:function(a){"number"===a.ctype&&(t=a.value.real)},steps:function(a){"number"=== +a.ctype&&(v=a.value.real)}});A.strokeStyle=x.lineColor;A.lineWidth=x.lsize;var F,G,H,I,p=!1,C=m.real(14.32);J.setvar(B,C);H=z(w);if("number"!==H.ctype){if(h.isNumberVector(H).value&&2===H.value.length){p=!1;u=(t-r)/v;for(C=r;C<t;C+=u)J.setvar(B,m.real(C)),I=z(w),h.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?A.lineTo(I,F):(A.beginPath(),A.moveTo(I,F),p=!0));A.stroke();J.removevar(B)}return k}for(I=r;I<t+u;I+= +u)C=m.real(I),J.setvar(B,C),H=z(w),C.value.real>r&&e(F,C,G,H,u),F=C,G=H;J.removevar(B);p&&A.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=y.drawingstate.matrix;A.fillStyle=y.drawingstate.linecolor;A.lineWidth=1;A.lineCap=x.lineCap;A.lineJoin=x.lineJoin;A.miterLimit=x.miterLimit;for(var h=!1,f=-10;10>f;f+=.01){J.setvar(e,m.real(f));var l=z(c); +if("number"===l.ctype){var n=+l.value.real,l=f*d.a-n*d.b+d.tx,n=f*d.c-n*d.d-d.ty;h?A.lineTo(l,n):(A.beginPath(),A.moveTo(l,n),h=!0)}}A.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,h,f;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){h=a.value;e=[];for(f=0;f<h.length;f++)d=D.plotvars(h[f]),e=b(e,d);return e}if("function"===a.ctype){h=a.args;e=[];for(f=0;f<h.length;f++)d=D.plotvars(h[f]),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 ca&&"undefined"!==typeof da&&A.clearRect(0,0,ca,da);return k};t.repaint$0=function(a,b){e();return k};t.screenbounds$0=function(a,b){var c=w.withUsage(h.realVector(y.to(0,0)),"Point"),d=w.withUsage(h.realVector(y.to(ca,0)),"Point"),e=w.withUsage(h.realVector(y.to(ca,da)),"Point"),f=w.withUsage(h.realVector(y.to(0,da)),"Point");return h.turnIntoCSList([c,d,e,f])};t.createimage$3=function(a,b){var c=z(a[0]),d=B(a[1]),e=B(a[2]);if("number"!==d.ctype||"number"!==e.ctype||"string"!== +c.ctype)return k;var h=document.createElement("canvas");h.id=c.value;h.width=d.value.real;h.height=e.value.real;h.style.display="none";document.body.appendChild(h);bb[c.value]=fa(h,!1);return k};t.clearimage$1=function(a,b){var c=z(a[0]);if("string"!==c.ctype&&"image"!==c.ctype)return k;c=Ja(c);if(!c)return k;var d=c.img;if("undefined"===typeof d||null===d)return k;var e=c.width,h=c.height;d.getContext("2d").clearRect(0,0,e,h);c.generation++;return k};t.canvas$4=function(a,b){var c=B(a[0]),d=B(a[1]), +e=z(a[2]),h=a[3],f=D.extractPoint(c),m=D.extractPoint(d);if(!f.ok||!m.ok||"string"!==e.ctype&&"image"!==e.ctype)return k;e=Ja(e);if(!e||!e.img.getContext)return k;var d=e.img,l=e.width,c=e.height,n=m.x-f.x,p=m.y-f.y,r=f.x-p*c/l,t=f.y+n*c/l,p=m.x-p*c/l,n=m.y+n*c/l,m=y.from(f.x,f.y,1),r=y.from(r,t,1),p=y.from(p,n,1),f=m[0],t=m[1],n=r[0],u=r[1],v=p[0],w=p[1],r=l*(t-u)/((f-n)*(t-w)-(f-v)*(t-u)),l=l*(f-n)/((t-u)*(f-v)-(t-w)*(f-n)),p=-r*f-l*t,m=(c*(t-w)-c*(t-u))/((f-n)*(t-w)-(f-v)*(t-u)),n=(c*(f-v)-c*(f- +n))/((t-u)*(f-v)-(t-w)*(f-n)),c=c-m*f-n*t,d=d.getContext("2d"),f=A;A=d;A.save();A.transform(r,m,l,n,p,c);e.generation++;z(h);A.restore();A=f};t.canvas$5=function(a,b){var c=B(a[0]),d=B(a[1]),e=B(a[2]),h=z(a[3]),f=a[4],c=D.extractPoint(c),m=D.extractPoint(d),l=D.extractPoint(e);if(!c.ok||!m.ok||!l.ok||"string"!==h.ctype&&"image"!==h.ctype)return k;h=Ja(h);if(!h||!h.img.getContext)return k;var e=h.img,n=h.width,d=h.height,p=y.from(c.x,c.y,1),r=y.from(m.x,m.y,1),m=y.from(l.x,l.y,1),c=p[0],l=p[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,p=((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-p*c-t*l,e=e.getContext("2d"),c=A;A=e;A.save();A.transform(m,p,n,t,r,d);h.generation++;z(f);A.restore();A=c};t.screenresolution$0=function(a,b){return m.real(y.drawingstate.matrix.a)};t.layer$1=function(a,b){};t.imagesize$1=function(a,b){var c=Ja(B(a[0]));return c? +h.realVector([+c.width,+c.height]):k};t.imageready$1=function(a,b){var c=Ja(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,q=0,m=1,n=D.extractPoint(e);if(!n.ok)return k;l=Ja(l);if(!l)return k;A.save();var p;void 0!==b.angle&&(p=z(b.angle),"number"===p.ctype&&(q=p.value.real));void 0!==b.rotation&&(p=z(b.rotation),"number"===p.ctype&&(q=p.value.real));void 0!==b.scale&&(p=B(b.scale),"number"===p.ctype&&(c=a=p.value.real),h.isNumberVector(p).value&& +2===p.value.length&&(a=p.value[0].value.real,c=p.value[1].value.real));void 0!==b.scalex&&(p=z(b.scalex),"number"===p.ctype&&(a=p.value.real));void 0!==b.scaley&&(p=z(b.scaley),"number"===p.ctype&&(c=p.value.real));void 0!==b.flipx&&(p=z(b.flipx),"boolean"===p.ctype&&p.value&&(d=-1));void 0!==b.flipy&&(p=z(b.flipy),"boolean"===p.ctype&&p.value&&(f=-1));void 0!==b.alpha&&(p=z(b.alpha),"number"===p.ctype&&(m=p.value.real));var r=y.drawingstate.matrix,W=y.drawingstate.initialmatrix,t=l.width,u=l.height; +p=n.x*r.a-n.y*r.b+r.tx;var v=n.x*r.c-n.y*r.d-r.ty,xa=(n.x+1)*r.a-n.y*r.b+r.tx-p,r=(n.x+1)*r.c-n.y*r.d-r.ty-v,w=(n.x+1)*W.a-n.y*W.b+W.tx-(n.x*W.a-n.y*W.b+W.tx),W=(n.x+1)*W.c-n.y*W.d-W.ty-(n.x*W.c-n.y*W.d-W.ty),n=Math.sqrt(xa*xa+r*r)/Math.sqrt(w*w+W*W),xa=-Math.atan2(xa,r)+Math.atan2(w,W),r=y.drawingstate.matrix.sdet/72,a=a*r,c=c*r;1!==m&&(A.globalAlpha=m);A.translate(p,v);A.scale(a*d*n,c*f*n);A.rotate(q+xa);A.translate(-p,-v);A.translate(-t/2,-u/2);a=l;a.drawTo?a.drawTo(A,p,v):A.drawImage(a.img,p, +v);A.globalAlpha=1;A.restore()}function d(){var a=1,c=1,h=1,q=1,n=D.extractPoint(e),p=D.extractPoint(f),r;if(!n.ok||!p.ok)return k;l=Ja(l);if(!l)return k;var t=l.width,u=l.height;if(0===m)r={},r.x=n.x-(p.y-n.y),r.y=n.y+(p.x-n.x),q=u/t;else if(r=D.extractPoint(m),!n.ok)return k;A.save();var v;void 0!==b.alpha&&(v=z(b.alpha),"number"===v.ctype&&(a=v.value.real));void 0!==b.aspect&&(v=z(b.aspect),"number"===v.ctype&&(q=v.value.real));void 0!==b.flipx&&(v=z(b.flipx),"boolean"===v.ctype&&v.value&&(c=-1)); +void 0!==b.flipy&&(v=z(b.flipy),"boolean"===v.ctype&&v.value&&(h=-1));v=y.drawingstate.matrix;1!==a&&(A.globalAlpha=a);a=n.x*v.a-n.y*v.b+v.tx;n=n.x*v.c-n.y*v.d-v.ty;A.transform(p.x*v.a-p.y*v.b+v.tx-a,p.x*v.c-p.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);A.scale(1/t,-1/u*q);A.translate(t/2,-u/2);A.scale(c,h);A.translate(-t/2,u/2);A.translate(0,-u);c=l;c.drawTo?c.drawTo(A,0,0):A.drawImage(c.img,0,0);A.globalAlpha=1;A.restore()}var e,f,m,l;return 2===a.length?(e=B(a[0]),l=B(a[1]), +c()):3===a.length?(e=B(a[0]),f=B(a[1]),m=0,l=B(a[2]),d()):4===a.length?(e=B(a[0]),f=B(a[1]),m=B(a[2]),l=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(bb).forEach(function(b){a.push({ctype:"string",value:b})});return h.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=z(b.resolution);"string"=== +f.ctype&&"maximal"===f.value?d=!0:"number"===f.ctype?(d=!1,e=c(f.value.real)):h._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,m=navigator.mediaDevices&&navigator.mediaDevices.getUserMedia;m?d=function(a,c){navigator.mediaDevices.getUserMedia(e).then(a,c)}:(m=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia||navigator.msGetUserMedia)&&(d=function(a,c){m.call(navigator,e,a,c)});if(!d)return console.warn("getUserMedia call not supported"),k;var l=document.createElement("video");l.autoplay=!0;f=fa(l,!0);console.log("Opening stream.");d(function(a){l.srcObject= +a;l.setAttribute("autoplay","");l.setAttribute("muted","");l.setAttribute("playsinline","");l.play();l.addEventListener("loadeddata",M)},function(a){console.error("Could not get user video:",String(a),a)});return f};t.playvideo$1=function(a,b){var c=Ja(B(a[0]));c.live&&c.img.play&&c.img.play();return k};t.pausevideo$1=function(a,b){var c=Ja(B(a[0]));c.live&&c.img.pause&&c.img.pause();return k};var Kb;t.imagergba$3=function(a,b){var c=Ja(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(!Ia(d)||!Ia(e))return k;c=pb(c,d,e,1,1);return h.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=Ja(B(a[2]));if(!c||!c.ready)return k;var d=c.width,e=c.height,f=K(a[0]),m=K(a[1]),l=K(h.realVector([0,e,1])),d=K(h.realVector([d,e,1]));if(f===k||m===k||n===k)return k;var n=h.ii,e=h.jj,l=D.basismap(l,d,n,e),f=D.basismap(f,m,e,n),n=K(a[3]);var p=D.extractPoint(w.mult(l, +w.mult(h.adjoint3(f),n)));if(p.ok){var m=c.width,l=c.height,n=!0,r=!1;void 0!==b.interpolate&&(f=z(b.interpolate),"boolean"===f.ctype&&(n=f.value));void 0!==b.repeat&&(f=z(b.repeat),"boolean"===f.ctype&&(r=f.value));n&&(p.x-=.5,p.y-=.5);r&&(p.x=(p.x%m+m)%m,p.y=(p.y%l+l)%l);d=Math.floor(p.x);e=Math.floor(p.y);if(Ia(d)&&Ia(e)){f=[0,0,0,0];if(n){var n=p.x-d,p=p.y-e,t=pb(c,d,e,2,2);if(r){if(d===m-1||e===l-1)var r=pb(c,(d+1)%m,e,1,1),v=pb(c,d,(e+1)%l,1,1),c=pb(c,(d+1)%m,(e+1)%l,1,1),t=t.slice(0,4).concat(r, +v,c)}else{if(-1===d||d===m-1)n=Math.round(n);if(-1===e||e===l-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=pb(c,d,e,1,1);c=h.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:h.turnIntoCSList(c.value.slice(0,3))};t.readpixels$1=function(a,b){for(var c=Ja(B(a[0])),c=pb(c,0,0,c.width,c.height),d=[],e=0;e+3<c.length;e+=4)d.push(h.turnIntoCSList([m.real(c[e+0]),m.real(c[e+1]),m.real(c[e+ +2]),m.real(c[e+3])]));return h.turnIntoCSList(d)};"use strict";var ze=[{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:[","]}],Ae=["+","-"],Be=["!","\u221a"],Ce=["\u00b0",":=_"],De=[";",","],Kc=[],Ca={},kd;(function(){var a=0;ze.forEach(function(b){a+= +2;var c=!!b.rassoc;b.functionCall&&(kd=a);for(var d in b){var e=b[d];if("boolean"!==typeof e)for(var h={name:d,sym:e[0],symbols:e,rassoc:c,precedence:a,prefix:!1,postfix:!1,infix:!0,bare:!1},f=0;f<e.length;++f){var m=e[f];if(Ca.hasOwnProperty(m))throw Error("Duplicate operator: "+m);Ca[m]=h;Kc.push(m)}}});Ae.forEach(function(a){Ca[a].prefix=!0});Be.forEach(function(a){Ca[a].prefix=!0;Ca[a].infix=!1});Ce.forEach(function(a){Ca[a].postfix=!0;Ca[a].infix=!1});De.forEach(function(a){Ca[a].prefix=!0;Ca[a].postfix= +!0;Ca[a].infix=!0;Ca[a].bare=!0})})();Kc.sort(function(a,b){return b.length-a.length});var Ee="(?:[0-9](?: [0-9])*(?: \\.(?! \\.)(?: [0-9])*)?|\\.(?: [0-9])+)(?: [Ee](?: [+-])?(?: [0-9])+)?".replace(/ /g,"[ \t]*"),Fe="(?:[\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]*"),Ge="(?:[\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]*"),Lc=function(a,b,c){var d,e,h=0,f="(?:[",m=b.length;for(d=0;d<m;++d)e=b.charCodeAt(d),55296<=e?(f+="]|"+b.charAt(d)+"[",h=56320):(f+=String.fromCharCode(e=h=a[e-32]+h),h+=a[b.charCodeAt(++d)-32],h!==e&&(h!==e+1&&(f+="-"),f+=String.fromCharCode(h)));return f+"]|["+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"),He=("#(?: [1-9])?|(?:'|"+Lc+")(?: (?:[0-9']|"+Lc+"))*").replace(/ /g,"[ \t]*"),hd=["([ \t\n]+)|(//.*)|(/\\*)","("+Ee+")","("+Kc.map(gd).join("|")+")","("+"[](){}||".split("").map(gd).join("|")+")","("+Ge+")","("+Fe+")","("+He+")",'("[^"]*")|($)'].join("|"),Ie=new RegExp("[ \t]*".replace(/\*$/,"+"),"g"),Mc="ANY WS COMMENT START_COMMENT NUM OP BRA SUB SUP ID STR EOF".split(" ");(function(){var a=(new RegExp(hd,"g")).exec("");if(a.hasOwnProperty(Mc.length))throw Error("RE has more groups than expected"); +if(!a.hasOwnProperty(Mc.length-1))throw Error("RE has fewer groups than expected");})();qb.prototype.advanceBy=function(a){this.advanceTo(this.pos+a)};qb.prototype.advanceTo=function(a){for(this.pos=a;this.bols[0]<=a;)this.bol=this.bols.shift(),this.line++};qb.prototype.curPos=function(){return{row:this.line,col:this.pos-this.bol,pos:this.pos}};qb.prototype.nextInternal=function(){var a=this.re.exec(this.input);if(a.index!==this.pos)throw la("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(Ie,""),toktype:Mc[d]}};qb.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 la("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 Je={ctype:"void"};Lb.prototype.postprocess=function(a){if(null===a)return Je;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 la("Function argument must be an identifier",c.start||a.start);});else if("variable"!==b.ctype)throw la(a.oper+" can only be used to define functions or variables", +a.start);}else if(","===a.oper)throw la("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 la("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}if(":"===a.oper){if(!a.args[1])throw la("Data key undefined", +a.start,a.text);a.ctype="userdata";a.obj=a.args[0];a.key=a.args[1];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)};if("userdata"===a.ctype)return{ctype:"userdata",obj:a.obj,key:a.key};throw Error("Unsupported AST node of type "+a.ctype);};Lb.prototype.parse=function(a){try{var b=jd(new qb(a));if("EOF"!==b.closedBy.toktype)throw la("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=Lb,module.exports.Tokenizer=qb,module.exports.unicodeLetters=Lc,module.exports.parse=function(a){return(new Lb).parse(a)});var hb={},Mb=[],Nc;Nc=[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=z(b.line),"number"===e.ctype&&(d=Math.floor(e.value.real),0>d&&(d=0),10<d&&(d=10)));c=c.value.real;0!==Nc[d]&&Nc[d].set({freq:c})}return k};var P={printArr:function(a){for(var b=a.value.length,c=[],d=[],e=!1,h=0;h<b;h++)c[h]=a.value[h].value.real,d[h]=a.value[h].value.imag,0!==d[h]&&(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 h.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]=m.real(1);return c},add:function(a,b){return h.add(a,b)},sub:function(a,b){return h.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(m.real(c)),e=m.real(0),h=0;h<c;h++){for(var f=0;f<=h;f++)e=m.add(e,m.mult(a.value[f],b.value[h-f]));d.value[h]=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 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=m.real(0),d=m.real(1),e=m.add(d,b),h=a.value.length,f=P.zero(m.real(h));f.value[0]=m.pow(a.value[0],b);for(var k=c,l,n,p=1;p<h;p++){n=m.real(p);for(var r=1;r<=p;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,f.value[p-r]),k=m.add(k,l);k=m.div(k,a.value[0]);f.value[p]=k;k=c}return f},findFirstNoneZero:function(a,b,c){for(var d=Infinity,e=Infinity,h=c;h<a.value.length;h++)if(1E-12< +m.abs2(a.value[h]).value.real){d=h;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=P.zero(m.real(c)),h=d,f,l=0;l<c;l++){f=P.findFirstNoneZero(a,b,l);l<f[0]&&f[0]===f[1]&&Infinity!==f[0]&&(a.value.splice(l,f[0]),b.value.splice(l,f[0]),e.value.splice(l,f[0]),c-=f[0]);f=a.value[l];for(var n=0;n<l;n++)h=m.add(h, +m.mult(e.value[n],b.value[l-n]));f=m.sub(f,h);f=m.div(f,b.value[0]);e.value[l]=f;h=d}return e},exp:function(a){var b=m.real(0),c=a.value.length,d=P.zero(m.real(c)),e=b,h;d.value[0]=m.exp(a.value[0]);for(var f=1;f<c;f++){for(var k=1;k<=f;k++)h=m.mult(m.real(k),a.value[k]),h=m.mult(h,d.value[f-k]),e=m.add(e,h);d.value[f]=m.div(e,m.real(f));e=b}return d},log:function(a){var b=m.real(0),c=a.value.length,d=P.zero(m.real(c));d.value[0]=m.log(a.value[0]);for(var e=b,h,f,k=1;k<c;k++){h=a.value[k];for(var l= +1;l<k;l++)f=m.mult(m.real(l),d.value[l]),f=m.mult(f,a.value[k-l]),e=m.add(e,f);e=m.div(e,m.real(k));h=m.sub(h,e);h=m.div(h,a.value[0]);d.value[k]=h;e=b}return d},sincos:function(a){var b=m.real(0),c=a.value.length,d=P.zero(m.real(c)),e=P.zero(m.real(c));d.value[0]=m.sin(a.value[0]);e.value[0]=m.cos(a.value[0]);for(var h=b,f=b,k,l,n,p=1;p<c;p++){n=m.real(p);for(var r=1;r<=p;r++)l=m.mult(m.real(r),a.value[r]),k=m.mult(l,e.value[p-r]),l=m.mult(l,d.value[p-r]),f=m.add(f,k),h=m.add(h,l);f=m.div(f,n);h= +m.div(h,m.neg(n));d.value[p]=f;e.value[p]=h;h=f=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]=m.real(1);for(var c=1,d=1;d<=a.value.real;d++)c*=d,b[d]=m.real(c);return b=h.turnIntoCSList(b)},diff:function(a,b,c,d){var e;if("variable"===a.ctype)e=a.name!==b?P.number(z(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]=m.mult(a.value[b],d.value[b]);return a},autodiff:function(a,b,c,d){for(var e=[],f=c.value.length,m,k=0;k<f;k++)m=P.adevaluate(a,b,c.value[k],d),e[k]=m;return e=h.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=y.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;x.noborder=!1;var c,d;for(c in a){var e=a[c];e&&((d=b[c])?(!0===d&&(d=x.modifHandlers[c]), +d(z(e))):console.log("Modifier not supported: "+c))}null!==x.size?x.psize=x.lsize=x.size:(x.psize=y.drawingstate.pointsize,x.lsize=y.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=y.drawingstate.pointcolor,x.lineColor=y.drawingstate.linecolor,x.textColor=y.drawingstate.textcolor):(x.pointColor=x.makeColor(y.drawingstate.pointcolorraw),x.lineColor=x.makeColor(y.drawingstate.linecolorraw), +x.textColor=x.makeColor(y.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){h.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){h.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||"center"===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))},noborder:function(a){"boolean"===a.ctype?x.noborder=a.value:console.error("noborder needs to be of type boolean")},border:function(a){"boolean"===a.ctype?x.noborder=!a.value:console.error("border needs to be of type boolean")}},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,noborder:!0,border:!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(){A.lineWidth=x.lsize;A.lineCap= +x.lineCap;A.lineJoin=x.lineJoin;A.mozFillRule=x.fillrule;A.fillrule=x.fillrule;A.miterLimit=x.miterLimit;A.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 h=e[0],e=e[1],f=1/(c*c+d*d),m=((h.x-a.x)*c+(h.y-a.y)*d)*f,c=((e.x-a.x)*c+(e.y-a.y)*d)*f;0>m&&(h=a);1<m&&(h=b);0>c&&(e=a);1<c&&(e=b);return h===e?[]:[h,e]};x.drawsegcore=function(a,b){function c(a,b,c,g){var d=a-g*r+.5*t,e=b-g*t-.5*r,h=a-g*r-.5*t;g=b-g*t+.5*r;A.beginPath();x.arrowShape.fill&&(A.lineWidth=x.lsize/2);A.moveTo(d,e);A.lineTo(a,b);A.lineTo(h,g);x.arrowShape.close&&(A.fillStyle=x.lineColor,A.lineTo(a-c*r,b-c*t),A.closePath(),x.arrowShape.fill&& +A.fill());A.stroke()}var d=y.drawingstate.matrix,e=a.x*d.a-a.y*d.b+d.tx,h=a.x*d.c-a.y*d.d-d.ty,f=b.x*d.a-b.y*d.b+d.tx,m=b.x*d.c-b.y*d.d-d.ty,k=x.overhang,l=1-k,d=k*e+l*f,n=k*h+l*m,p=k*f+l*e,k=k*m+l*h;if(0>d||d>ca||0>n||n>da||0>p||p>ca||0>k||k>da){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===h&&f===m).01>x.lsize||(A.beginPath(),A.moveTo(d,n),A.lineTo(p,k),A.stroke());else{var e=f-e,h=m-h,f=x.headlen/ +Math.sqrt(e*e+h*h),r=e*f,t=h*f,m=x.arrowposition,l=1-m,h=m*d+l*p,e=m*n+l*k,f=m*p+l*d,m=m*k+l*n,l=x.arrowSides;A.beginPath();x.arrowShape.close?("<==>"===l||"<=="===l?(1>x.arrowposition&&(A.moveTo(d,n),A.lineTo(h,e)),A.moveTo(h+r,e+t)):A.moveTo(d,n),"==>"===l||"<==>"===l?(A.lineTo(f-r,m-t),1>x.arrowposition&&(A.moveTo(f,m),A.lineTo(p,k))):A.lineTo(p,k)):(A.moveTo(d,n),A.lineTo(p,k));A.stroke();"==>"!==l&&"<==>"!==l||c(f,m,1,x.arrowShape.ratio);"<=="!==l&&"<==>"!==l||c(h,e,-1,-x.arrowShape.ratio)}}; +x.drawpoint=function(a){var b=y.drawingstate.matrix,c=a.x*b.a-a.y*b.b+b.tx;a=a.x*b.c-a.y*b.d-b.ty;A.lineWidth=.3*x.psize;A.beginPath();A.arc(c,a,x.psize,0,2*Math.PI);A.fillStyle=x.pointColor;A.fill();x.noborder||(A.beginPath(),A.arc(c,a,1.15*x.psize,0,2*Math.PI),A.fillStyle=x.black,A.strokeStyle=x.black,A.stroke())};x.clipLineCore=function(a,b,c){var d=Math.SQRT1_2*x.lsize,e=0-d,h=ca+d,f=0-d,d=da+d,m=0>e*a+f*b+c,k=0>h*a+f*b+c,l=0>e*a+d*b+c,n=0>h*a+d*b+c,p=[];m!==k&&p.push({x:(-c-b*f)/a,y:f});k!== +n&&p.push({x:h,y:(-c-a*h)/b});l!==n&&p.push({x:(-c-b*d)/a,y:d});m!==l&&p.push({x:e,y:(-c-a*e)/b});return p};x.clipLine=function(a){a=h.normalizeMax(h.productVM(a,y.toMat()));return x.clipLineCore(a.value[0].value.real,a.value[1].value.real,a.value[2].value.real)};x.drawline=function(a){h._helper.isAlmostReal(a)&&(a=x.clipLine(a),2===a.length&&.01<=x.lsize&&(x.preDrawCurve(),A.beginPath(),A.moveTo(a[0].x,a[0].y),A.lineTo(a[1].x,a[1].y),A.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,h=c.y-d.y,f=25E3/y.drawingstate.matrix.sdet/Math.sqrt(e*e+h*h),e=e*f,h=h*f;x.drawsegcore(c,{x:c.x+e,y:c.y+h});x.drawsegcore(d,{x:d.x-e,y:d.y-h})}};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;A.webkitLineDash=a;A.setLineDash(a);A.mozDash=a};x.unSetDash=function(){A.webkitLineDash=[];A.setLineDash([]);A.mozDash=[]};ld.prototype={set fillStyle(a){var b=this;ac(a,function(a,d,e,h){b._fill="#"+rb(a.toString(16),2)+rb(d.toString(16),2)+rb(e.toString(16),2);b._fillOpacity=255===h?null:h})},set strokeStyle(a){var b=this;ac(a,function(a,d,e,h){b._stroke="#"+rb(a.toString(16),2)+rb(d.toString(16),2)+rb(e.toString(16),2);b._strokeOpacity=255===h?null: +h})},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,h){this._pathcmd("C",a,b,c,d,e,h)},quadraticCurveTo:function(a,b,c,d){this._pathcmd("Q",a,b,c,d)},arc:function(a,b,c,d,e,h){var f=c*Math.cos(d)+a,m=c*Math.sin(d)+b,k=c*Math.cos(e)+a,l=c*Math.sin(e)+b;e=h?d-e: +e-d;e>=2*Math.PI?this._pathcmd(this._path.length?"L":"M",f,m,"A",c,c,0,0,h?1:0,a-c*Math.cos(d),b-c*Math.sin(d),"A",c,c,0,0,h?1:0,f,m):this._pathcmd(this._path.length?"L":"M",f,m,"A",c,c,0,e>Math.PI?1:0,h?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,h){this._transform("matrix("+[a,b,c,d,e,h].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:nd(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"})}};md.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;ac(a,function(a,d,e,h){b._cmd(a/ +255,d/255,e/255,"rg");b._setAlpha(b._fillAlpha=h,"Af","ca")})},set strokeStyle(a){var b=this;ac(a,function(a,d,e,h){b._cmd(a/255,d/255,e/255,"RG");b._setAlpha(b._strokeAlpha=h,"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,h){this._cmd(a,-b,c,-d,this._xPos=e,this._yPos=-h,"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,h){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,h){this._cmd(a,-b,-c,d,e,-h,"cm")},_png:function(a){if("data:image/png;base64,"!== +a.substr(0,22))return{error:"Not a base64-encoded PNG file"};a=de(a.substr(22));var b=ee(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],h=c[9],f=0===(h&2),m=0!==(h&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!==(h&1))return{error:"Indexed PNG image not supported"};l=null;h=f?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*(h+1)*c+1))throw Error("Data length mismatch");for(var n=h*c,k=new Uint8Array(d*(a*n+1)),p=new Uint8Array(d*(a*c+1)),r=0,t=0,v=0,u=0;u< +d;++u){k[t++]=p[v++]=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)p[v++]=l[r++]}}if(r!==l.length||t!==k.length||v!==p.length)throw Error("Seems we garbled our index computation somehow");p=m.deflate(p);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})},p).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:f?"/DeviceGray":"/DeviceRGB",SMask:l,BitsPerComponent:e,Length:x,Filter:"/FlateDecode",DecodeParms:this._dict({Predictor:15,Colors:h,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(nd(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+(rb(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 Nb=null;jb.push(od);sa.exportSVG=function(){pd(ld)};sa.exportPDF=function(){va.loadScript("pako","pako.min.js",function(){pd(md)})};sa.exportPNG=function(){qd(A.canvas.toDataURL())};var qd=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);od()},100)},xc="Move",Pb,Aa=[],Ya=0,ge=0,xb=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(){ja=Ob(aa);null!==ja&&vd(ja.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=aa,b=null,c=1E6,d,e=0;e<v.free.length;e++){var f=v.free[e];if(!f.pinned&&!1!==f.visible&&!0!==f.tmp){var k,l,n,p=y.drawingstate.matrix.sdet;if("P"===f.kind){l=h.normalizeZ(f.homog);if(!h._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(f.narrow&&n>("number"===typeof f.narrow?f.narrow:20)/p)continue}else if("C"===f.kind){l=h.normalizeZ(v.csnames[f.args[0]].homog);k=f.radius;if(!h._helper.isAlmostReal(l)|| +!m._helper.isAlmostReal(k))continue;n=l.value[0].value.real;var r=l.value[1].value.real;l=a.x-n;var t=a.y-r,u=Math.sqrt(l*l+t*t);if(0===u)continue;r+=t/u*k.value.real;k=n+l/u*k.value.real-a.x;l=r-a.y;n=Math.sqrt(k*k+l*l);n+=30/p;if(f.narrow&&n>(("number"===typeof f.narrow?f.narrow:20)+30)/p)continue}else if("L"===f.kind)k=f.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=h.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/p;else if("Text"===f.kind){if(!f.homog||f.dock||!f._bbox)continue;l=y.from(a.x,a.y,1);k=Math.max(0,l[0]-f._bbox.right,f._bbox.left-l[0]);l=Math.max(0,l[1]-f._bbox.bottom,f._bbox.top-l[1]);n=Math.sqrt(k*k+l*l);if(20<n)continue;n/=p;l=h.normalizeZ(f.homog);if(!h._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/p&&(c=n,b=f,d={x:k,y:l})}}console.log("Moving "+ +(b?b.name:"nothing"));ja=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(){Ka({type:"Free",name:Xa(),labeled:!0,pos:[ra[0],ra[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(){sb();return!0};G.Mid.actions[1]={};G.Mid.actions[1].event="mousemove";G.Mid.actions[1]["do"]=function(){bc("Mid");return!0};G.Mid.actions[2]={};G.Mid.actions[2].event="mouseup";G.Mid.actions[2]["do"]=function(){yb();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(){sb();return!0};G.Circle.actions[1]= +{};G.Circle.actions[1].event="mousemove";G.Circle.actions[1]["do"]=function(){bc("CircleMP");return!0};G.Circle.actions[2]={};G.Circle.actions[2].event="mouseup";G.Circle.actions[2]["do"]=function(){yb();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(){sb();return!0};G.Compass.actions[1]={};G.Compass.actions[1].event="mousedown";G.Compass.actions[1].tooltip="...";G.Compass.actions[1]["do"]= +function(){sb();return!0};G.Compass.actions[2]={};G.Compass.actions[2].event="mousedown";G.Compass.actions[2].tooltip="...";G.Compass.actions[2]["do"]=function(){sb();Ka({type:"Compass",name:Xa(),labeled:!0,args:[Aa[0].name,Aa[1].name,Aa[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(){sb();return!0};G.Line.actions[1]= +{};G.Line.actions[1].event="mousemove";G.Line.actions[1]["do"]=function(){bc("Join");return!0};G.Line.actions[2]={};G.Line.actions[2].event="mouseup";G.Line.actions[2]["do"]=function(){yb();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(){sb();return!0};G.Segment.actions[1]={};G.Segment.actions[1].event="mousemove";G.Segment.actions[1]["do"]= +function(){bc("Segment");return!0};G.Segment.actions[2]={};G.Segment.actions[2].event="mouseup";G.Segment.actions[2]["do"]=function(){yb();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 td()};G.Parallel.actions[1]={};G.Parallel.actions[1].event="mousemove";G.Parallel.actions[1]["do"]=function(){var a={type:"Free", +name:Xa(),labeled:!0,pos:[ra[0],ra[1],1],tmp:!0},a=Ka(a);Pb=Ka({type:"Para",name:Xa(),labeled:!0,args:[Aa[0].name,a.name]});zc(a);return!0};G.Parallel.actions[2]={};G.Parallel.actions[2].event="mouseup";G.Parallel.actions[2]["do"]=function(){yb();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(td()){var a= +{type:"Free",name:Xa(),labeled:!0,pos:[ra[0],ra[1],1],tmp:!0},a=Ka(a);Pb=Ka({type:"Perp",name:Xa(),labeled:!0,args:[Aa[0].name,a.name]});zc(a);return!0}return!1};G.Orthogonal.actions[1]={};G.Orthogonal.actions[1].event="mouseup";G.Orthogonal.actions[1]["do"]=function(){yb();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 ud()};G.Intersection.actions[1]={};G.Intersection.actions[1].event="mousedown";G.Intersection.actions[1]["do"]=function(){return ud()?(Pb=Ka({type:"Meet",name:Xa(),labeled:!0,args:[Aa[0].name,Aa[1].name]}),!0):!1};var eb={},y={drawingstate:{}};y.drawingstate.linecolor="rgb(0,0,255)";y.drawingstate.linecolorraw=[0,0,1];y.drawingstate.pointcolor="rgb(0,255,0)";y.drawingstate.pointcolorraw=[0,1,0];y.drawingstate.textcolor="rgb(0,0,0)";y.drawingstate.textcolorraw=[0,0,0];y.drawingstate.alpha= +1;y.drawingstate.pointsize=4;y.drawingstate.linesize=1;y.drawingstate.textsize=null;y.drawingstate.matrix={};y.drawingstate.matrix.a=25;y.drawingstate.matrix.b=0;y.drawingstate.matrix.c=0;y.drawingstate.matrix.d=25;y.drawingstate.matrix.tx=250.5;y.drawingstate.matrix.ty=250.5;y.drawingstate.matrix.det=y.drawingstate.matrix.a*y.drawingstate.matrix.d-y.drawingstate.matrix.b*y.drawingstate.matrix.c;y.drawingstate.matrix.sdet=Math.sqrt(y.drawingstate.matrix.det);y.drawingstate.initialmatrix={};y.drawingstate.initialmatrix.a= +y.drawingstate.matrix.a;y.drawingstate.initialmatrix.b=y.drawingstate.matrix.b;y.drawingstate.initialmatrix.c=y.drawingstate.matrix.c;y.drawingstate.initialmatrix.d=y.drawingstate.matrix.d;y.drawingstate.initialmatrix.tx=y.drawingstate.matrix.tx;y.drawingstate.initialmatrix.ty=y.drawingstate.matrix.ty;y.drawingstate.initialmatrix.det=y.drawingstate.matrix.det;y.drawingstate.initialmatrix.sdet=y.drawingstate.matrix.sdet;y.clone=function(a){if(null===a||"object"!==typeof a)return a;var b=a.constructor(), +c;for(c in a)b[c]=y.clone(a[c]);return b};eb.backup=y.clone(y.drawingstate);eb.stack=[];y.clone(y.drawingstate);y.reset=function(){y.drawingstate.matrix.a=y.drawingstate.initialmatrix.a;y.drawingstate.matrix.b=y.drawingstate.initialmatrix.b;y.drawingstate.matrix.c=y.drawingstate.initialmatrix.c;y.drawingstate.matrix.d=y.drawingstate.initialmatrix.d;y.drawingstate.matrix.tx=y.drawingstate.initialmatrix.tx;y.drawingstate.matrix.ty=y.drawingstate.initialmatrix.ty;y.drawingstate.matrix.det=y.drawingstate.initialmatrix.det; +y.drawingstate.matrix.sdet=y.drawingstate.initialmatrix.sdet};y.from=function(a,b,c){a/=c;b/=c;c=y.drawingstate.matrix;return[a*c.a-b*c.b+c.tx,a*c.c-b*c.d-c.ty]};y.to=function(a,b){var c=y.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]};y.toMat=function(){var a=y.drawingstate.matrix;return h.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]])};y.dumpTrafo=function(){function a(a){return Math.round(1E3*a)/1E3}var b=y.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))};y.setMat=function(a,b,c,d,e,h){var f=y.drawingstate.matrix;f.a=a;f.b=b;f.c=c;f.d=d;f.tx=e;f.ty=h;f.det=a*d-b*c;f.sdet=Math.sqrt(f.det)};y.scaleAndOrigin=function(a,b,c){y.setMat(a,0,0,a,b,c)};y.visibleRect=function(a,b,c,d){var e=c-a,h=b-d,e=ca*h<da*e?ca/e:da/h;y.setMat(e,0,0,e,(ca-e*(a+c))/2,(da-e*(b+d))/2)};y.applyMat=function(a,b,c,d,e,h){var f=y.drawingstate.matrix;y.setMat(f.a*a+f.c*b,f.b*a+f.d*b,f.a* +c+f.c*d,f.b*c+f.d*d,f.a*e+f.c*h+f.tx,f.b*e+f.d*h+f.ty)};y.translate=function(a,b){y.applyMat(1,0,0,1,a,b)};y.rotate=function(a){var b=Math.cos(a);a=Math.sin(a);y.applyMat(b,a,-a,b,0,0)};y.scale=function(a){y.applyMat(a,0,0,a,0,0)};y.gsave=function(){eb.stack.push(y.clone(y.drawingstate))};y.grestore=function(){0!==eb.stack.length&&(y.drawingstate=eb.stack.pop())};y.greset=function(){y.drawingstate=y.clone(eb.backup);y.drawingstate.matrix.ty-=da;y.drawingstate.initialmatrix.ty-=da;eb.stack=[]};y.createnewbackup= +function(){y.drawingstate.initialmatrix.a=y.drawingstate.matrix.a;y.drawingstate.initialmatrix.b=y.drawingstate.matrix.b;y.drawingstate.initialmatrix.c=y.drawingstate.matrix.c;y.drawingstate.initialmatrix.d=y.drawingstate.matrix.d;y.drawingstate.initialmatrix.tx=y.drawingstate.matrix.tx;y.drawingstate.initialmatrix.ty=y.drawingstate.matrix.ty;y.drawingstate.initialmatrix.det=y.drawingstate.matrix.det;y.drawingstate.initialmatrix.sdet=y.drawingstate.matrix.sdet;eb.backup=y.clone(y.drawingstate)};y.makecolor= +function(a,b,c){a=Math.floor(255*a);b=Math.floor(255*b);c=Math.floor(255*c);return 1===y.drawingstate.alpha?"rgb("+a+","+b+","+c+")":"rgba("+a+","+b+","+c+","+y.drawingstate.alpha+")"};y.setcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;y.drawingstate.linecolor=y.drawingstate.pointcolor=y.makecolor(b,c,a);y.drawingstate.linecolorraw=y.drawingstate.pointcolorraw=[b,c,a]};y.setlinecolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a= +a.value[2].value.real;y.drawingstate.linecolor=y.makecolor(b,c,a);y.drawingstate.linecolorraw=[b,c,a]};y.settextcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;y.drawingstate.textcolor=y.makecolor(b,c,a);y.drawingstate.textcolorraw=[b,c,a]};y.setpointcolor=function(a){var b=a.value[0].value.real,c=a.value[1].value.real;a=a.value[2].value.real;y.drawingstate.pointcolor=y.makecolor(b,c,a);y.drawingstate.pointcolorraw=[b,c,a]};y.setalpha=function(a){y.drawingstate.alpha= +a.value.real;y.drawingstate.linecolor=y.makecolor(y.drawingstate.linecolorraw[0],y.drawingstate.linecolorraw[1],y.drawingstate.linecolorraw[2]);y.drawingstate.pointcolor=y.makecolor(y.drawingstate.pointcolorraw[0],y.drawingstate.pointcolorraw[1],y.drawingstate.pointcolorraw[2]);y.drawingstate.textcolor=y.makecolor(y.drawingstate.textcolorraw[0],y.drawingstate.textcolorraw[1],y.drawingstate.textcolorraw[2])};y.setpointsize=function(a){y.drawingstate.pointsize=a.value.real};y.setlinesize=function(a){y.drawingstate.linesize= +a.value.real};y.settextsize=function(a){y.drawingstate.textsize=a.value.real};var ga={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",textColor:[0,0,0],textsize:20,noborder:!1,lineHeight:1.45};p.defaultAppearance&&he(p.defaultAppearance);var dc={},Cd={UL:0,UR:1,LR:2,LL:3},Cc=["in","out","good","backup"],nb=new Float64Array(0),ib={};Cc.forEach(function(a){ib[a]=nb});var qa=nb,Oa=nb,Da=nb,Ba,Ea,lb,Ma, +Ab,Dc=!1,Ed={toString:function(){return"RefineException"}},Hd=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),sa.getTraceLog=ne,sa.formatTraceLog=oe,sa.addTraceHook=L.postMouseHooks.push.bind(L.postMouseHooks)); +Pa.stateSize=12;Fc.stateSize=24;Qb.stateSize=24;var ob=[];mb.P=function(a){v.lines.forEach(function(b){b=Kd(a,b);b.holds()&&ob.push(b)});v.conics.forEach(function(b){b=Ld(a,b);b.holds()&&ob.push(b)})};mb.L=function(a){v.points.forEach(function(b){b=Kd(b,a);b.holds()&&ob.push(b)})};mb.S=mb.L;mb.C=function(a){v.points.forEach(function(b){b=Ld(b,a);b.holds()&&ob.push(b)})};var l={_helper:{},RandomLine:{}};l.RandomLine.kind="L";l.RandomLine.signature=[];l.RandomLine.updatePosition=function(a){a.homog= +h.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};l.FreeLine={};l.FreeLine.kind="L";l.FreeLine.signature=[];l.FreeLine.isMovable=!0;l.FreeLine.initialize=function(a){a=l._helper.initializeLine(a);T(a)};l.FreeLine.getParamForInput=function(a,b,c){"mouse"===c?(a=h.cross(b,h.ez),a=h.cross(a,b)):a="homog"===c?b:h.turnIntoCSList([m.zero,m.zero,m.zero]);return h.normalizeMax(a)};l.FreeLine.getParamFromState=function(a){return X(3)}; +l.FreeLine.putParamToState=function(a,b){T(b)};l.FreeLine.updatePosition=function(a){var b=X(3);T(b);a.homog=w.withUsage(b,"Line")};l.FreeLine.stateSize=6;l.RandomPoint={};l.RandomPoint.kind="P";l.RandomPoint.signature=[];l.RandomPoint.updatePosition=function(a){a.homog=h.realVector([100*Math.random(),100*Math.random(),100*Math.random()]);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};l.Join={};l.Join.kind="L";l.Join.signature=["P","P"];l.Join.updatePosition=function(a){a.homog= +h.cross(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};l.Segment={};l.Segment.kind="S";l.Segment.signature=["P","P"];l.Segment.updatePosition=function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]];l.Segment.setSegmentPos(a,h.cross(b.homog,c.homog),h.scalmult(c.homog.value[2],b.homog),h.scalmult(b.homog.value[2],c.homog))};l.Segment.setSegmentPos=function(a,b,c,d){b=h.normalizeMax(b);a.homog=w.withUsage(b,"Line");b= +h.turnIntoCSList([c,d]);b=h.normalizeMax(b);a.startpos=b.value[0];a.endpos=b.value[1]};l.Meet={};l.Meet.kind="P";l.Meet.signature=["L","L"];l.Meet.updatePosition=function(a){a.homog=h.cross(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};l.Meet.visiblecheck=function(a){var b=!0,c=v.csnames[a.args[0]],d=v.csnames[a.args[1]];"S"===c.kind&&(b=Ad(a,c));b&&"S"===d.kind&&(b=Ad(a,d));a.isshowing=b};l._helper.midpoint=function(a, +b){return h.normalizeMax(h.add(h.scalmult(b.value[2],a),h.scalmult(a.value[2],b)))};l.Mid={};l.Mid.kind="P";l.Mid.signature=["P","P"];l.Mid.updatePosition=function(a){var b=l._helper.midpoint(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog);a.homog=w.withUsage(b,"Point")};l.Perp={};l.Perp.kind="L";l.Perp.signature=["L","P"];l.Perp.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,b=h.turnIntoCSList([b.value[0],b.value[1],m.zero]);a.homog=h.cross(b,c);a.homog= +h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};l.Para={};l.Para.kind="L";l.Para.signature=["L","P"];l.Para.updatePosition=function(a){var b=v.csnames[a.args[1]].homog;a.homog=h.cross(h.cross(h.linfty,v.csnames[a.args[0]].homog),b);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};l.Horizontal={};l.Horizontal.kind="L";l.Horizontal.signature=["P"];l.Horizontal.updatePosition=function(a){a.homog=h.cross(h.ex,v.csnames[a.args[0]].homog);a.homog=h.normalizeMax(a.homog); +a.homog=w.withUsage(a.homog,"Line")};l.HorizontalLine={};l.HorizontalLine.kind="L";l.HorizontalLine.signature=[];l.HorizontalLine.isMovable=!0;l.HorizontalLine.initialize=function(a){a=l._helper.initializeLine(a);a=h.turnIntoCSList([m.zero,a.value[1],a.value[2]]);a=h.normalizeMax(a);T(a)};l.HorizontalLine.getParamForInput=function(a,b,c){if("mouse"===c)b=h.cross(b,h.ex);else if("homog"===c){if(0!==b.value[0].real||0!==b.value[0].imag)b=h.turnIntoCSList([m.zero,b.value[1],b.value[2]])}else b=h.turnIntoCSList([m.zero, +m.zero,m.zero]);return h.normalizeMax(b)};l.HorizontalLine.getParamFromState=function(a){return X(3)};l.HorizontalLine.putParamToState=function(a,b){T(b)};l.HorizontalLine.updatePosition=function(a){var b=X(3);T(b);a.homog=w.withUsage(b,"Line")};l.HorizontalLine.stateSize=6;l.Vertical={};l.Vertical.kind="L";l.Vertical.signature=["P"];l.Vertical.updatePosition=function(a){a.homog=h.cross(h.ey,v.csnames[a.args[0]].homog);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};l.VerticalLine= +{};l.VerticalLine.kind="L";l.VerticalLine.signature=[];l.VerticalLine.isMovable=!0;l.VerticalLine.initialize=function(a){a=l._helper.initializeLine(a);a=h.turnIntoCSList([a.value[0],m.zero,a.value[2]]);a=h.normalizeMax(a);T(a)};l.VerticalLine.getParamForInput=function(a,b,c){if("mouse"===c)b=h.cross(b,h.ey);else if("homog"===c){if(0!==b.value[1].real||0!==b.value[1].imag)b=h.turnIntoCSList([b.value[0],m.zero,b.value[2]])}else b=h.turnIntoCSList([m.zero,m.zero,m.zero]);return h.normalizeMax(b)};l.VerticalLine.getParamFromState= +function(a){return X(3)};l.VerticalLine.putParamToState=function(a,b){T(b)};l.VerticalLine.updatePosition=function(a){var b=X(3);T(b);a.homog=w.withUsage(b,"Line")};l.VerticalLine.stateSize=6;l.LineByFixedAngle={};l.LineByFixedAngle.kind="L";l.LineByFixedAngle.signature=["L","P"];l.LineByFixedAngle.initialize=function(a){var b=m._helper.input(a.angle),c=m.cos(b),b=m.sin(b);a.rot=h.turnIntoCSList([h.turnIntoCSList([b,c,m.zero]),h.turnIntoCSList([m.neg(c),b,m.zero]),h.turnIntoCSList([m.zero,m.zero, +m.zero])])};l.LineByFixedAngle.updatePosition=function(a){var b=v.csnames[a.args[1]],c=h.productMV(a.rot,v.csnames[a.args[0]].homog);a.homog=h.cross(b.homog,c);a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Line")};l.Through={};l.Through.kind="L";l.Through.signature=["P"];l.Through.isMovable=!0;l.Through.initialize=function(a){a=a.dir?w.wrap(a.dir):h.realVector([a.pos[1],-a.pos[0],0]);T(a)};l.Through.getParamForInput=function(a,b,c){a="dir"===c||"mouse"===c?h.cross(v.csnames[a.args[0]].homog, +b):"homog"===c?b:h.turnIntoCSList([m.zero,m.zero,m.zero]);a=h.cross(h.linfty,a);return h.normalizeMax(a)};l.Through.getParamFromState=function(a){return X(3)};l.Through.putParamToState=function(a,b){T(b)};l.Through.updatePosition=function(a){var b=X(3);T(b);b=h.cross(v.csnames[a.args[0]].homog,b);b=h.normalizeMax(b);a.homog=w.withUsage(b,"Line")};l.Through.stateSize=6;l.Through.set_angle=function(a,b){if("number"===b.ctype){var c=m.cos(b),d=m.sin(b),c=h.turnIntoCSList([c,d,m.real(0)]);La(a,c,"dir")}}; +l.Through.set_slope=function(a,b){if("number"===b.ctype){var c=h.turnIntoCSList([m.real(1),b,m.real(0)]);La(a,c,"dir")}};l.Free={};l.Free.kind="P";l.Free.signature=[];l.Free.isMovable=!0;l.Free.initialize=function(a){a=l._helper.initializePoint(a);T(a)};l.Free.getParamForInput=function(a,b,c){if("mouse"===c&&Eb&&0!==za){b=h.normalizeZ(b);a=b.value[0].value.real;c=b.value[1].value.real;var d=Math.round(a/za)*za,e=Math.round(c/za)*za;.2>Math.abs(d-a)&&.2>Math.abs(e-c)&&(b=h.realVector([d,e,1]))}return h.normalizeMax(b)}; +l.Free.getParamFromState=function(a){return X(3)};l.Free.putParamToState=function(a,b){T(b)};l.Free.updatePosition=function(a){var b=X(3);T(b);a.homog=w.withUsage(b,"Point")};l.Free.stateSize=6;l._helper.projectPointToLine=function(a,b){var c=h.turnIntoCSList([b.value[0],b.value[1],m.zero]),c=h.cross(c,a);return h.normalizeMax(h.cross(c,b))};l.PointOnLine={};l.PointOnLine.kind="P";l.PointOnLine.signature=["L"];l.PointOnLine.isMovable=!0;l.PointOnLine.initialize=function(a){var b=l._helper.initializePoint(a); +a=v.csnames[a.args[0]].homog;var b=l._helper.projectPointToLine(b,a),b=h.normalizeMax(b),c=h.cross(h.linfty,b);h.normalizeMax(c);T(b);T(a);lb=!1};l.PointOnLine.updatePosition=function(a,b){var c,d=v.csnames[a.args[0]].homog;c=X(3);X(3);if(!b){Ba=a.stateIdx;var e=qa;qa=Da;var f=X(3),m=X(3);qa=e;e=h.cross(m,d);h._helper.isAlmostZero(e)&&(e=h.cross(h.linfty,d));f=l._helper.CircleMP(e,f);f=l._helper.IntersectLC(d,f);e=l._helper.pointReflection(e,c);c=Ec(f[0],f[1],c,e)[0]}c=h.normalizeMax(c);T(c);T(d); +a.homog=w.withUsage(c,"Point")};l.PointOnLine.getParamForInput=function(a,b,c){a=v.csnames[a.args[0]].homog;b=l._helper.projectPointToLine(b,a);"mouse"===c&&Eb&&0!==za&&(b=l._helper.snapPointToLine(b,a));return b};l.PointOnLine.getParamFromState=function(a){return X(3)};l.PointOnLine.putParamToState=function(a,b){return T(b)};l.PointOnLine.stateSize=12;l.PointOnCircle={};l.PointOnCircle.kind="P";l.PointOnCircle.signature=["C"];l.PointOnCircle.isMovable=!0;l.PointOnCircle.initialize=function(a){var b= +v.csnames[a.args[0]];a=h.normalizeZ(l._helper.initializePoint(a));var c=h.normalizeZ(l._helper.CenterOfCircle(b.matrix)),d=h.sub(a,c),d=h.turnIntoCSList([d.value[1],m.neg(d.value[0]),m.zero]),c=h.cross(a,c),b=l._helper.IntersectLC(c,b.matrix),c=h.projectiveDistMinScal(a,b[0]);h.projectiveDistMinScal(a,b[1])<c?(a=b[1],b=b[0]):(a=b[0],b=b[1]);T(d);T(a);T(b);lb=!1};l.PointOnCircle.putParamToState=function(a,b){T(b)};l.PointOnCircle.getParamFromState=function(a){return X(3)};l.PointOnCircle.getParamForInput= +function(a,b,c){c=h.normalizeZ(l._helper.CenterOfCircle(v.csnames[a.args[0]].matrix));b=h.sub(b,c);Ba=a.stateIdx;a=X(3);var d=h.normalizeZ(X(3));c=h.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=h.neg(b));return h.turnIntoCSList([b.value[1],m.neg(b.value[0]),m.zero])};l.PointOnCircle.parameterPath=function(a,b,c,d,e){d=h.normalizeAbs(d);e=h.normalizeAbs(e);var f=h.scalproduct(d,e);if(0<=f.value.real)return Fd(a,b,c,d,e);a=h.turnIntoCSList([m.sub(d.value[1], +e.value[1]),m.sub(e.value[0],d.value[0]),m.zero]);f=h.scalproduct(d,a);0>f.value.real&&(a=h.neg(a));0>b?(b=2*b+1,c=b*b,f=.25/(1+c),c=m.complex(2*b*f+.25,(1-c)*f)):(b=2*b-1,c=b*b,f=.25/(1+c),c=m.complex(2*b*f+.75,(1-c)*f));var k=m.sub(m.real(1),c);b=m.mult(c,c);f=m.mult(k,k);c=m.mult(c,k);d=h.scalmult(f,d);d=h.add(d,h.scalmult(c,a));return d=h.add(d,h.scalmult(b,e))};l.PointOnCircle.updatePosition=function(a){var b=X(3);T(b);var c=v.csnames[a.args[0]],b=h.productMV(c.matrix,b),c=l._helper.IntersectLC(b, +c.matrix),c=Pa(c[0],c[1]),b=h.normalizeMax(c.value[0]);a.homog=w.withUsage(b,"Point");a.antipodalPoint=c.value[1]};l.PointOnCircle.stateSize=6+Pa.stateSize;l.OtherPointOnCircle={};l.OtherPointOnCircle.kind="P";l.OtherPointOnCircle.signature=["P"];l.OtherPointOnCircle.signatureConstraints=function(a){return"PointOnCircle"===v.csnames[a.args[0]].type};l.OtherPointOnCircle.updatePosition=function(a){var b=v.csnames[a.args[0]].antipodalPoint,b=h.normalizeMax(b);a.homog=w.withUsage(b,"Point")};l.PointOnSegment= +{};l.PointOnSegment.kind="P";l.PointOnSegment.signature=["S"];l.PointOnSegment.isMovable=!0;l.PointOnSegment.initialize=function(a){var b=l._helper.initializePoint(a);a=l.PointOnSegment.getParamForInput(a,b);Za(a)};l.PointOnSegment.getParamForInput=function(a,b,c){a=v.csnames[a.args[0]];var d=a.homog;"mouse"===c&&Eb&&0!==za&&(b=l._helper.snapPointToLine(b,d));c=h.turnIntoCSList([d.value[0],d.value[1],m.zero]);d=h.sub(a.startpos,a.endpos);b=h.crossratio3(d,a.startpos,a.endpos,b,c);0>b.value.real&& +(b=m.complex(0,b.value.imag));1<b.value.real&&(b=m.complex(1,b.value.imag));return b};l.PointOnSegment.getParamFromState=function(a){return Bb()};l.PointOnSegment.putParamToState=function(a,b){Za(b)};l.PointOnSegment.updatePosition=function(a){var b=Bb();Za(b);var c=v.csnames[a.args[0]],d=c.startpos,c=h.sub(c.endpos,d),b=h.add(d,h.scalmult(b,c)),b=h.normalizeMax(b);a.homog=w.withUsage(b,"Point")};l.PointOnSegment.stateSize=2;l._helper.projectPointToCircle=function(a,b){var c=l._helper.CenterOfCircle(a.matrix), +c=h.normalizeMax(c),c=h.normalizeMax(h.cross(b,c)),c=l._helper.IntersectLC(c,a.matrix),d=h.projectiveDistMinScal(b,c[0]),e=h.projectiveDistMinScal(b,c[1]);return d<e?c[0]:c[1]};l.PointOnArc={};l.PointOnArc.kind="P";l.PointOnArc.signature=["C"];l.PointOnArc.signatureConstraints=function(a){return v.csnames[a.args[0]].isArc};l.PointOnArc.isMovable=!0;l.PointOnArc.initialize=function(a){var b=l._helper.initializePoint(a);a=l.PointOnArc.getParamForInput(a,b);T(a)};l.PointOnArc.getParamForInput=function(a, +b){var c=v.csnames[a.args[0]],d=l._helper.projectPointToCircle(c,b),c=h.normalizeMax(h.crossratio3harm(c.startPoint,c.endPoint,c.viaPoint,d,h.ii)),d=m.div(c.value[0],c.value[1]);0>d.value.real&&(c=-1>d.value.real?h.realVector([1,0]):h.realVector([0,1]));return c};l.PointOnArc.getParamFromState=function(a){return X(2)};l.PointOnArc.putParamToState=function(a,b){T(b)};l.PointOnArc.updatePosition=function(a){var b=v.csnames[a.args[0]],c=b.startPoint,d=b.viaPoint,e=b.endPoint,f=h.ii,k=h.cross(c,f),d= +h.cross(d,f),n=h.cross(e,f),n=h.turnIntoCSList([k,n]),k=h.transpose(n),n=h.conjugate(n),k=h.productMM(n,k),d=h.productMV(n,d),k=h.productMV(h.adjoint2(k),d),d=k.value[0],k=k.value[1],n=X(2);T(n);c=h.normalizeMax(h.add(h.scalmult(m.mult(d,n.value[0]),c),h.scalmult(m.mult(k,n.value[1]),e)));b=l._helper.conicOtherIntersection(b.matrix,f,c);a.homog=w.withUsage(b,"Point")};l.PointOnArc.stateSize=4;l._helper.CenterOfCircle=function(a){return h.turnIntoCSList([a.value[2].value[0],a.value[2].value[1],m.neg(a.value[0].value[0])])}; +l._helper.CenterOfConic=function(a){a=h.adjoint3(a);return{ctype:"list",value:[a.value[2].value[0],a.value[2].value[1],a.value[2].value[2]]}};l.CenterOfConic={};l.CenterOfConic.kind="P";l.CenterOfConic.signature=["C"];l.CenterOfConic.updatePosition=function(a){var b=l._helper.CenterOfConic(v.csnames[a.args[0]].matrix);a.homog=b;a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};l._helper.CircleMP=function(a,b){var c=a.value[0],d=a.value[1],e=m.neg(a.value[2]),f=m.zero,c=h.turnIntoCSList([h.turnIntoCSList([e, +f,c]),h.turnIntoCSList([f,e,d]),h.turnIntoCSList([c,d,f])]),e=w.mult(w.mult(b,c),b),d=w.mult(w.mult(b,h.fund),b),e=w.mult(e,h.fund),c=w.mult(d,c);return h.sub(e,c)};l.CircleMP={};l.CircleMP.kind="C";l.CircleMP.signature=["P","P"];l.CircleMP.updatePosition=function(a){a.matrix=l._helper.CircleMP(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog);a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Circle")};l.CircleMr={};l.CircleMr.kind="C";l.CircleMr.signature=["P"];l.CircleMr.isMovable= +!0;l.CircleMr.initialize=function(a){Za(m.real(a.radius))};l.CircleMr.getParamForInput=function(a,b,c){if("radius"===c)return b;a=v.csnames[a.args[0]].homog;a=h.normalizeZ(a);b=h.normalizeZ(b);b=h.sub(a,b);return b=h.abs(b)};l.CircleMr.getParamFromState=function(a){return Bb()};l.CircleMr.putParamToState=function(a,b){Za(b)};l.CircleMr.updatePosition=function(a){var b=Bb();Za(b);var c=v.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 h.fund; +c=l._helper.ScaledCircleMrr(c,d);a.matrix=w.withUsage(c,"Circle");a.radius=b};l.CircleMr.stateSize=2;l.CircleMr.set_radius=function(a,b){"number"===b.ctype&&La(a,b,"radius")};l._helper.ScaledCircleMrr=function(a,b){var c=a.value[0],d=a.value[1],e=m.neg(a.value[2]),e=h.scalmult(e,h.turnIntoCSList([c,d,e])).value,c=h.turnIntoCSList([c,d]),c=m.sub(h.scalproduct(c,c),b),e=l._helper.buildConicMatrix([e[2],m.zero,e[2],e[0],e[1],c]);return h.normalizeMax(e)};l.Compass={};l.Compass.kind="C";l.Compass.signature= +["P","P","P"];l.Compass.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=b.value[2],f=c.value[2],k=d.value[2],b=h.scalmult(m.mult(f,k),b),c=h.scalmult(m.mult(e,k),c),d=h.scalmult(m.mult(e,f),d),b=h.sub(c,b),d=l._helper.ScaledCircleMrr(d,h.scalproduct(b,b));a.matrix=w.withUsage(d,"Circle")};l._helper.getConicType=function(a){if(1E-16>m.abs(h.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"};l._helper.ConicBy5=function(a,b,c,d,e,f){a=h.turnIntoCSList([h.cross(c,d)]);var m=h.turnIntoCSList([h.cross(b,e)]);b=h.turnIntoCSList([h.cross(b,c)]);d=h.turnIntoCSList([h.cross(d,e)]);return l._helper.conicFromTwoDegenerates(a,m,b,d,f)};l._helper.conicFromTwoDegenerates=function(a,b,c,d,e){a=w.mult(h.transpose(b),a);c=w.mult(h.transpose(d),c);a=h.add(a,h.transpose(a)); +c=h.add(c,h.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 h.sub(c,e)};l.ConicBy5={};l.ConicBy5.kind="C";l.ConicBy5.signature=["P","P","P","P","P"];l.ConicBy5.updatePosition=function(a){var b=l._helper.ConicBy5(a,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog);a.matrix=b;a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.FreeConic={};l.FreeConic.kind= +"C";l.FreeConic.signature=[];l.FreeConic.initialize=function(a){var b;b=a.pos?l._helper.inputConic(a.pos):h.zeromatrix(m.real(3),m.real(3));l.FreeConic.putParamToState(a,b)};l.FreeConic.getParamForInput=function(a,b,c){return h.normalizeMax(b)};l.FreeConic.getParamFromState=function(a){return l._helper.buildConicMatrix(X(6).value)};l.FreeConic.putParamToState=function(a,b){for(var c=0;3>c;++c)for(var d=0;d<=c;++d)Za(b.value[c].value[d])};l.FreeConic.updatePosition=function(a){var b=X(6);T(b);a.matrix= +l._helper.buildConicMatrix(b.value);a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.FreeConic.set_matrix=function(a,b){h._helper.isNumberMatrixMN(b,3,3)&&La(a,h.add(b,h.transpose(b)),"matrix")};l.FreeConic.stateSize=12;l._helper.buildConicMatrix=function(a){var b=a[1],c=a[2],d=a[3],e=a[4],f=a[5];return h.turnIntoCSList([h.turnIntoCSList([a[0],b,d]),h.turnIntoCSList([b,c,e]),h.turnIntoCSList([d,e,f])])};l._helper.flattenConicMatrix=function(a){return h.turnIntoCSList([a.value[0].value[0], +a.value[0].value[1],a.value[1].value[1],a.value[0].value[2],a.value[1].value[2],a.value[2].value[2]])};l._helper.splitDegenConic=function(a){var b=h.adjoint3(a),c=0,d,e,f=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>f&&(c=d,f=e);d=m.sqrt(m.mult(m.real(-1),b.value[c].value[c]));if(1E-16>m.abs2(d).value.real)return a=h.turnIntoCSList([m.zero,m.zero,m.zero]),[a,a];c=m.real(c+1);e=h.column(b,c);e=h.scaldiv(d,e);d=e.value[0];f=e.value[1];e=e.value[2]; +d=h.turnIntoCSList([h.turnIntoCSList([m.real(0),e,m.mult(m.real(-1),f)]),h.turnIntoCSList([m.mult(m.real(-1),e),m.real(0),d]),h.turnIntoCSList([f,m.mult(m.real(-1),d),m.real(0)])]);a=h.add(a,d);var k=0;for(d=f=b=0;3>d;d++)for(c=0;3>c;c++)e=m.abs2(a.value[d].value[c]).value.real,e>f&&(k=d,b=c,f=e);d=a.value[k];a=h.transpose(a);a=a.value[b];d=h.normalizeMax(d);a=h.normalizeMax(a);d=w.withUsage(d,"Line");a=w.withUsage(a,"Line");return[d,a]};l._helper.inputConic=function(a){var b="xx xy yy xz yz zz".split(" ").map(function(b){var d= +m._helper.input(a[b]);b[0]!==b[1]&&(d=m.realmult(.5,d));return d});return l._helper.buildConicMatrix(b)};l.SelectConic={};l.SelectConic.kind="C";l.SelectConic.signature=["Cs"];l.SelectConic.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=l._helper.inputConic(a.pos);a=v.csnames[a.args[0]].results;for(var c=h.conicDist(b,a[0]),d=0,e=1;e<a.length;++e){var f=h.conicDist(b,a[e]);f<c&&(c=f,d=e)}return d};l.SelectConic.updatePosition=function(a){a.matrix=v.csnames[a.args[0]].results[a.param]; +a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l._helper.ConicBy4p1l=function(a,b,c,d,e,f){var k=h.scalproduct(b,f),n=h.scalproduct(c,f),p=h.scalproduct(d,f),r=h.scalproduct(e,f),t=h.det3(c,d,e),v=h.det3(b,c,e),u=h.det3(b,d,e),w=h.det3(b,c,d),x=m.mult,n=m.sqrt(x(x(n,r),x(t,v))),k=m.sqrt(x(x(k,p),x(u,w))),p=h.cross(h.cross(b,d),f);f=h.cross(h.cross(c,e),f);p=h.scalmult(n,p);k=h.scalmult(k,f);f=h.normalizeMax(h.add(p,k));k=h.normalizeMax(h.sub(p,k));k=Pa(f,k);f=l._helper.ConicBy5(a, +b,c,d,e,k.value[0]);a=l._helper.ConicBy5(a,b,c,d,e,k.value[1]);return[h.normalizeMax(f),h.normalizeMax(a)]};l.ConicBy4p1l={};l.ConicBy4p1l.kind="Cs";l.ConicBy4p1l.signature=["P","P","P","P","L"];l.ConicBy4p1l.updatePosition=function(a){var b=l._helper.ConicBy4p1l(a,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog);a.results=b};l.ConicBy4p1l.stateSize=Pa.stateSize;l._helper.ConicBy3p2l=function(a,b,c,d,e){function f(a, +b,c,d){return m.sub(m.mult(a,d),m.mult(b,c))}var k=h.cross(a,b),l=h.cross(d,e);d=h.cross(d,k);e=h.cross(e,k);k=h.turnIntoCSList([d,e,l]);c=h.productVM(c,h.adjoint3(k));l=h.adjoint3(h.turnIntoCSList([h.scalmult(c.value[0],d),h.scalmult(c.value[1],e),h.scalmult(c.value[2],l)]));c=h.transpose(l);d=m.mult;e=h.productMV(c,a);a=e.value[0];e=e.value[1];k=h.productMV(c,b);b=k.value[0];var k=k.value[1],n=m.sqrt(d(a,e)),p=m.sqrt(d(b,k)),r,t=Array(4);for(r=0;4>r;++r){var v=(r&2)-1,u=d(m.real(((r&1)<<1)-1),n), +w=d(m.real(v),p),x=f(e,u,k,w),y=f(b,w,a,u),v=f(a,e,b,k),z=m.add(m.add(f(b,k,a,e),f(k,w,e,u)),f(w,b,u,a)),u=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(v,v))),v=h.turnIntoCSList([h.turnIntoCSList([u,B,x]),h.turnIntoCSList([B,w,y]),h.turnIntoCSList([x,y,A])]),v=h.productMM(l,h.productMM(v,c)),v=h.turnIntoCSList([v.value[0].value[0],v.value[0].value[1],v.value[0].value[2],v.value[1].value[1],v.value[1].value[2],v.value[2].value[2]]);t[r]=v}return t};l.ConicBy3p2l={}; +l.ConicBy3p2l.kind="Cs";l.ConicBy3p2l.signature=["P","P","P","L","L"];l.ConicBy3p2l.updatePosition=function(a){for(var b=l._helper.ConicBy3p2l(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=Id(b),c=Array(4),d=0;4>d;++d){var e=b[d].value;c[d]=h.turnIntoCSList([h.turnIntoCSList([e[0],e[1],e[2]]),h.turnIntoCSList([e[1],e[3],e[4]]),h.turnIntoCSList([e[2],e[4],e[5]])])}a.results=c};l.ConicBy3p2l.stateSize=48;l.ConicBy2p3l= +{};l.ConicBy2p3l.kind="Cs";l.ConicBy2p3l.signature=["P","P","L","L","L"];l.ConicBy2p3l.updatePosition=function(a){for(var b=l._helper.ConicBy3p2l(v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog),b=Id(b),c=Array(4),d=0;4>d;++d){var e=b[d].value,e=h.turnIntoCSList([h.turnIntoCSList([e[0],e[1],e[2]]),h.turnIntoCSList([e[1],e[3],e[4]]),h.turnIntoCSList([e[2],e[4],e[5]])]);c[d]=h.normalizeMax(h.adjoint3(e))}a.results= +c};l.ConicBy2p3l.stateSize=48;l.ConicBy1p4l={};l.ConicBy1p4l.kind="Cs";l.ConicBy1p4l.signature=["P","L","L","L","L"];l.ConicBy1p4l.updatePosition=function(a){var b=l._helper.ConicBy4p1l(a,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog,v.csnames[a.args[0]].homog),c=b[0],b=b[1],c=h.adjoint3(c),b=h.adjoint3(b),b=[c,b];a.results=b};l.ConicBy1p4l.stateSize=Pa.stateSize;l.ConicParabolaPL={};l.ConicParabolaPL.kind="C";l.ConicParabolaPL.signature= +["P","L"];l.ConicParabolaPL.updatePosition=function(a){var b=v.csnames[a.args[0]].homog.value,c=v.csnames[a.args[1]].homog.value,d=m.mult,e=m.neg,f=m.add,k=m.sub,n=b[0],p=b[1],r=b[2],t=c[0],b=c[1],c=c[2],u=d(r,r),x=d(t,t),y=d(b,b),z=d(r,c),A=e(r),r=f(x,y),y=d(u,y),x=d(u,x),e=d(e(u),d(t,b)),t=d(A,f(d(n,r),d(z,t))),b=d(A,f(d(p,r),d(z,b))),d=k(d(f(d(n,n),d(p,p)),r),d(u,d(c,c))),d=l._helper.buildConicMatrix([y,e,x,t,b,d]),d=h.normalizeMax(d);a.matrix=w.withUsage(d,"Conic")};l.ConicBy2Foci1P={};l.ConicBy2Foci1P.kind= +"Cs";l.ConicBy2Foci1P.signature=["P","P","P"];l.ConicBy2Foci1P.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=h.ii,f=h.jj,k=h.normalizeMax(h.cross(b,d)),n=h.normalizeMax(h.cross(c,d)),p=h.normalizeMax(h.cross(d,e)),d=h.normalizeMax(h.cross(d,f)),n=l._helper.coHarmonic(p,d,k,n),k=h.normalizeMax(n[0]),n=h.normalizeMax(n[1]),e=h.turnIntoCSList([e]),p=h.turnIntoCSList([f]),d=h.turnIntoCSList([b]),r=h.turnIntoCSList([c]),f=l._helper.conicFromTwoDegenerates(e, +p,d,r,k),f=h.normalizeMax(f),e=l._helper.conicFromTwoDegenerates(e,p,d,r,n),e=h.normalizeMax(e),f=h.normalizeMax(h.adjoint3(f)),e=h.normalizeMax(h.adjoint3(e));"ellipsoid"!==l._helper.getConicType(f)&&(k=f,f=e,e=k);h.almostequals(b,c).value&&(b=m.real(3),e=h.zeromatrix(b,b));a.results=[f,e]};l.ConicBy2Pol1P={};l.ConicBy2Pol1P.kind="C";l.ConicBy2Pol1P.signature=["P","L","P","L","P"];l.ConicBy2Pol1P.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog, +e=v.csnames[a.args[3]].homog,f=v.csnames[a.args[4]].homog,k=h.scalproduct,l=h.scalmult,n=h.sub,p=h.productMM,r=m.realmult,t=h.transpose,u=h.turnIntoCSList,x=n(l(k(c,b),f),l(r(2,k(c,f)),b)),y=n(l(k(e,d),f),l(r(2,k(e,f)),d)),z=u([h.cross(b,f)]),f=u([h.cross(d,f)]),y=p(t(z),u([h.cross(b,y)])),u=p(t(f),u([h.cross(d,x)])),p=p(t(z),f),b=k(b,e),c=k(d,c),d=h.add(l(c,y),l(b,u)),d=n(d,l(r(2,m.mult(b,c)),p)),d=h.add(d,t(d)),d=h.normalizeMax(d),d=w.withUsage(d,"Conic");a.matrix=d};l.ConicBy2Pol1L={};l.ConicBy2Pol1L.kind= +"C";l.ConicBy2Pol1L.signature=["P","L","P","L","L"];l.ConicBy2Pol1L.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=v.csnames[a.args[3]].homog,f=v.csnames[a.args[4]].homog,k=h.scalproduct,l=h.scalmult,n=h.productMM,p=m.mult,r=h.transpose,t=h.turnIntoCSList,u=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([h.sub(l(p(y,k),c),l(p(x,A),e))]),b=h.add(n(r(t([l(p(y,x),f)])),t([h.sub(h.add(l(m.sub(p(u,k),p(x,A)),e),l(m.sub(p(z, +A),p(y,k)),c)),l(h.det3(c,e,f),h.cross(b,d)))])),n(r(B),B)),b=h.add(b,r(b)),b=h.normalizeMax(b),b=w.withUsage(b,"Conic");a.matrix=b};l._helper.conic1Pol3Inc=function(a,b,c,d,e){var f=h.scalproduct,k=h.scalmult,l=h.productMM,n=h.cross,p=m.realmult,r=m.mult,t=h.transpose,v=h.turnIntoCSList,u=h.det3,w=u(a,c,d),x=v([n(c,e)]),y=v([n(a,e)]),z=v([n(c,d)]),A=f(b,a),B=f(b,c);b=f(b,e);n=v([n(d,h.sub(k(A,e),k(p(2,b),a)))]);x=k(w,l(t(x),n));a=p(2,m.add(r(u(a,d,e),B),r(w,b)));a=m.sub(r(u(c,d,e),A),a);x=h.add(x, +k(a,l(t(y),z)));x=h.add(x,t(x));return x=h.normalizeMax(x)};l.ConicBy1Pol3P={};l.ConicBy1Pol3P.kind="C";l.ConicBy1Pol3P.signature=["P","L","P","P","P"];l.ConicBy1Pol3P.updatePosition=function(a){var b=l._helper.conic1Pol3Inc(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=w.withUsage(b,"Conic");a.matrix=b};l.ConicBy1Pol3L={};l.ConicBy1Pol3L.kind="C";l.ConicBy1Pol3L.signature=["P","L","L","L","L"];l.ConicBy1Pol3L.updatePosition= +function(a){var b=l._helper.conic1Pol3Inc(v.csnames[a.args[1]].homog,v.csnames[a.args[0]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=h.normalizeMax(h.adjoint3(b)),b=w.withUsage(b,"Conic");a.matrix=b};l.ConicBy1Pol2P1L={};l.ConicBy1Pol2P1L.kind="Cs";l.ConicBy1Pol2P1L.signature=["P","L","P","P","L"];l.ConicBy1Pol2P1L.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=v.csnames[a.args[3]].homog, +f=v.csnames[a.args[4]].homog,k=m.add,l=h.turnIntoCSList,n=h.cross,p=h.productMM,r=m.mult,t=m.realmult,u=h.scalmult,w=h.scalproduct,x=m.sub,y=h.transpose,z=w(c,b),A=w(c,d),B=w(c,e),c=w(f,b),C=w(f,d),w=w(f,e),f=l([n(b,d)]),b=l([n(b,e)]),d=l([n(d,e)]),e=m.sqrt(r(r(C,w),r(x(r(z,C),t(2,r(c,A))),x(r(z,w),t(2,r(c,B)))))),l=p(y(f),b),e=u(e,h.add(l,y(l))),k=u(x(r(z,r(C,w)),k(r(c,r(A,w)),r(c,r(C,B)))),l),t=h.add(h.sub(u(B,f),u(A,b)),u(t(.5,z),d)),k=h.add(k,u(r(c,c),p(y(d),t))),k=h.add(k,y(k)),p=h.normalizeMax(h.add(e, +k)),r=h.normalizeMax(h.sub(e,k));a.results=Qb(p,r).value};l.ConicBy1Pol2P1L.stateSize=Qb.stateSize;l.ConicBy1Pol1P2L={};l.ConicBy1Pol1P2L.kind="Cs";l.ConicBy1Pol1P2L.signature=["P","L","P","L","L"];l.ConicBy1Pol1P2L.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=v.csnames[a.args[3]].homog,f=v.csnames[a.args[4]].homog,k=m.add,l=h.turnIntoCSList,n=h.cross,p=h.productMM,r=m.mult,t=m.realmult,u=h.scalmult,w=h.scalproduct,x=m.sub, +y=h.transpose,z=w(c,b),A=w(c,d),B=w(e,b),C=w(e,d),D=w(f,b),E=w(f,d),F=r(z,z),G=r(z,A),w=r(A,A),H=r(B,B),I=r(B,C),L=r(C,C),N=r(D,D),J=r(D,E),M=r(E,E),K=r(r(F,L),M),K=x(K,t(2,r(r(G,I),M))),K=x(K,t(2,r(r(G,L),J))),K=k(K,t(.5,r(r(w,H),M))),K=k(K,t(3,r(r(w,I),J))),K=k(K,t(.5,r(r(w,L),N))),J=r(r(z,C),E),J=x(J,r(r(A,B),E)),J=x(J,r(r(A,C),D)),J=r(J,r(w,D)),M=x(r(z,C),t(2,r(A,B))),M=r(M,r(w,r(C,D))),K=p(y(l([c])),l([h.add(h.add(u(K,c),u(J,e)),u(M,f))])),J=l([e]),K=h.add(K,u(t(.5,r(r(w,w),N)),p(y(J),J))),K= +h.add(K,u(w,p(y(l([f])),l([h.add(u(x(x(t(2,r(G,I)),r(F,L)),t(.5,r(w,H))),f),u(r(h.det3(c,e,f),x(r(z,C),r(A,B))),n(b,d)))])))),K=h.add(K,y(K)),b=m.sqrt(r(r(C,E),r(x(r(z,C),t(2,r(A,B))),x(r(z,E),t(2,r(A,D)))))),c=p(y(l([c])),l([h.sub(u(x(r(A,k(r(B,E),r(C,D))),r(z,r(C,E))),c),u(w,h.add(u(D,e),u(B,f))))])),c=h.add(c,u(r(z,w),p(y(l([e])),l([f])))),c=u(b,c),c=h.add(c,y(c)),e=h.normalizeMax(h.add(K,c)),f=h.normalizeMax(h.sub(K,c));a.results=Qb(e,f).value};l.ConicBy1Pol1P2L.stateSize=Qb.stateSize;l._helper.coHarmonic= +function(a,b,c,d){var e=h.realVector([100*Math.random(),100*Math.random(),1]),f=h.det3(e,c,a),k=h.det3(e,c,b);c=h.det3(e,d,a);d=h.det3(e,d,b);d=m.sqrt(m.mult(d,k));f=m.sqrt(m.mult(c,f));a=w.mult(a,d);f=w.mult(b,f);b=h.add(a,f);a=h.sub(a,f);return[b,a]};l.ConicInSquare={};l.ConicInSquare.kind="C";l.ConicInSquare.signature=["P","P","P","P"];l.ConicInSquare.updatePosition=function(a){var b=D.basismap(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog), +c=m.one,c=l._helper.buildConicMatrix([c,c,c,m.real(-3),c,c]),b=h.adjoint3(b),b=h.productMM(h.productMM(h.transpose(b),c),b),b=h.normalizeMax(b);a.matrix=w.withUsage(b,"Conic")};l.ConicBy5lines={};l.ConicBy5lines.kind="C";l.ConicBy5lines.signature=["L","L","L","L","L"];l.ConicBy5lines.updatePosition=function(a){var b=l._helper.ConicBy5(a,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[4]].homog),b=h.adjoint3(b);a.matrix=b; +a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.ConicFromPrincipalDirections={};l.ConicFromPrincipalDirections.kind="C";l.ConicFromPrincipalDirections.signature=["P","P","P"];l.ConicFromPrincipalDirections.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=v.csnames[a.args[2]].homog,e=l._helper.pointReflection(b,c),f=h.cross(c,b),b=h.turnIntoCSList([f.value[0],f.value[1],m.zero]),f=h.turnIntoCSList([f]),c=h.turnIntoCSList([h.cross(c, +b)]),e=h.turnIntoCSList([h.cross(e,b)]);a.matrix=l._helper.conicFromTwoDegenerates(f,f,c,e,d);a.matrix=h.normalizeMax(a.matrix);a.matrix=w.withUsage(a.matrix,"Conic")};l.CircleBy3={};l.CircleBy3.kind="C";l.CircleBy3.signature=["P","P","P"];l.CircleBy3.updatePosition=function(a){var b=l._helper.ConicBy5(a,v.csnames[a.args[0]].homog,v.csnames[a.args[1]].homog,h.ii,h.jj,v.csnames[a.args[2]].homog);a.matrix=h.normalizeMax(b);a.matrix=w.withUsage(a.matrix,"Circle")};l.ArcBy3={};l.ArcBy3.kind="C";l.ArcBy3.signature= +["P","P","P"];l.ArcBy3.updatePosition=function(a){l.CircleBy3.updatePosition(a);a.startPoint=v.csnames[a.args[0]].homog;a.viaPoint=v.csnames[a.args[1]].homog;a.endPoint=v.csnames[a.args[2]].homog};l.ArcBy3.initialize=function(a){a.startPoint=v.csnames[a.args[0]].homog;a.viaPoint=v.csnames[a.args[1]].homog;a.endPoint=v.csnames[a.args[2]].homog;a.isArc=!0};l.PolarOfPoint={};l.PolarOfPoint.kind="L";l.PolarOfPoint.signature=["P","C"];l.PolarOfPoint.updatePosition=function(a){var b=w.mult(v.csnames[a.args[1]].matrix, +v.csnames[a.args[0]].homog),b=h.normalizeMax(b);a.homog=w.withUsage(b,"Line")};l.PolarOfLine={};l.PolarOfLine.kind="P";l.PolarOfLine.signature=["L","C"];l.PolarOfLine.updatePosition=function(a){var b=v.csnames[a.args[0]],c=h.adjoint3(v.csnames[a.args[1]].matrix),b=w.mult(c,b.homog),b=h.normalizeMax(b);a.homog=w.withUsage(b,"Point")};l.AngleBisector={};l.AngleBisector.kind="Ls";l.AngleBisector.signature=["L","L","P"];l.AngleBisector.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog, +d=v.csnames[a.args[2]].homog,e=h.add,f=h.sub,k=h.abs,l=h.cross,m=h.scalmult,n=h.normalizeMax,p=h._helper.isAlmostZero,r=h.linfty,t=m(k(l(l(r,c),r)),b),b=m(k(l(l(r,b),r)),c),f=f(t,b),e=e(t,b);p(f)&&(f=l(l(l(r,e),r),d));p(e)&&(e=l(l(l(r,f),r),d));a.results=Pa(n(f),n(e))};l.AngleBisector.stateSize=Pa.stateSize;l._helper.IntersectLC=function(a,b){var c=m,d=h.crossOperator(a),e=h.transpose(d),e=w.mult(e,w.mult(b,d)),f=h.maxIndex(a,m.abs2),k,l,n,p;0===f?(f=e.value[1].value[1],k=e.value[1].value[2],l=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],l=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],l=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,l),c.mult(f,n))),p);c=h.add(e,h.scalmult(c,d));f=h.maxIndex(c,h.abs2);d=c.value[f];d=h.normalizeMax(d);d=w.withUsage(d,"Point");c=h.transpose(c);f=h.maxIndex(c,h.abs2);c=c.value[f];c=h.normalizeMax(c);c=w.withUsage(c,"Point"); +return[d,c]};l.IntersectLC={};l.IntersectLC.kind="Ps";l.IntersectLC.signature=["L","C"];l.IntersectLC.updatePosition=function(a){var b=l._helper.IntersectLC(v.csnames[a.args[0]].homog,v.csnames[a.args[1]].matrix);a.results=Pa(b[0],b[1])};l.IntersectLC.stateSize=Pa.stateSize;l.OtherIntersectionCL={};l.OtherIntersectionCL.kind="P";l.OtherIntersectionCL.signature=["C","L","P"];l.OtherIntersectionCL.updatePosition=function(a){var b=v.csnames[a.args[2]].homog,c=l._helper.IntersectLC(v.csnames[a.args[1]].homog, +v.csnames[a.args[0]].matrix),d=c[0],c=c[1],e=h.projectiveDistMinScal(d,b),b=h.projectiveDistMinScal(c,b);a.homog=e<b?c:d;a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};l.IntersectCirCir={};l.IntersectCirCir.kind="Ps";l.IntersectCirCir.signature=["C","C"];l.IntersectCirCir.updatePosition=function(a){var b=v.csnames[a.args[0]].matrix,c=v.csnames[a.args[1]].matrix,d=h.scalmult(c.value[0].value[0],b.value[2]),c=h.scalmult(b.value[0].value[0],c.value[2]),d=h.sub(d,c),d=h.turnIntoCSList([d.value[0], +d.value[1],m.realmult(.5,d.value[2])]),d=h.normalizeMax(d),b=l._helper.IntersectLC(d,b);a.results=Pa(b[0],b[1])};l.IntersectCirCir.stateSize=Pa.stateSize;l.OtherIntersectionCC={};l.OtherIntersectionCC.kind="P";l.OtherIntersectionCC.signature=["C","C","P"];l.OtherIntersectionCC.updatePosition=function(a){var b=v.csnames[a.args[0]].matrix,c=v.csnames[a.args[1]].matrix,d=v.csnames[a.args[2]].homog,e=h.scalmult(c.value[0].value[0],b.value[2]),c=h.scalmult(b.value[0].value[0],c.value[2]),e=h.sub(e,c), +e=h.turnIntoCSList([e.value[0],e.value[1],m.realmult(.5,e.value[2])]),e=h.normalizeMax(e),e=l._helper.IntersectLC(e,b),b=e[0],e=e[1],c=h.projectiveDistMinScal(b,d),d=h.projectiveDistMinScal(e,d);a.homog=c<d?e:b;a.homog=h.normalizeMax(a.homog);a.homog=w.withUsage(a.homog,"Point")};l._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=h.det3(c,d,e),r=m.add(m.add(h.det3(c,d,n),h.det3(c,k,e)),h.det3(f,d,e)),c=m.add(m.add(h.det3(c, +k,n),h.det3(f,d,n)),h.det3(f,k,e)),f=h.det3(f,k,n),n=m.abs2(p).value.real,k=m.abs2(f).value.real;n<k&&(n=a,a=b,b=n,n=f,f=p,p=n,n=c,c=r,r=n,n=k);1E-24>n?(p=a,c=b):(r=m.solveCubic(p,r,c,f),c=m.abs2(m.sub(r[0],r[1])).value.real,f=m.abs2(m.sub(r[0],r[2])).value.real,k=m.abs2(m.sub(r[1],r[2])).value.real,c>f?(p=r[1],r=c>k?r[0]:r[2]):(p=r[2],r=f>k?r[0]:r[1]),p=h.add(h.scalmult(p,a),b),c=h.add(h.scalmult(r,a),b));r=l._helper.splitDegenConic(p);p=r[0];r=r[1];c=l._helper.splitDegenConic(c);k=c[0];f=c[1];c= +h.cross(p,k);k=h.cross(r,k);p=h.cross(p,f);r=h.cross(r,f);c=h.normalizeMax(c);k=h.normalizeMax(k);p=h.normalizeMax(p);r=h.normalizeMax(r);c=w.withUsage(c,"Point");k=w.withUsage(k,"Point");p=w.withUsage(p,"Point");r=w.withUsage(r,"Point");return[c,k,p,r]};l.IntersectConicConic={};l.IntersectConicConic.kind="Ps";l.IntersectConicConic.signature=["C","C"];l.IntersectConicConic.updatePosition=function(a){var b=l._helper.IntersectConicConic(v.csnames[a.args[0]].matrix,v.csnames[a.args[1]].matrix),b=Fc(b[0], +b[1],b[2],b[3]);a.results=b};l.IntersectConicConic.stateSize=Fc.stateSize;l.SelectP={};l.SelectP.kind="P";l.SelectP.signature=["Ps"];l.SelectP.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=v.csnames[a.args[0]].results.value;a=l._helper.initializePoint(a);for(var c=h.projectiveDistMinScal(a,b[0]),d=0,e=1;e<b.length;++e){var f=h.projectiveDistMinScal(a,b[e]);f<c&&(c=f,d=e)}return d};l.SelectP.updatePosition=function(a){a.homog=v.csnames[a.args[0]].results.value[a.param]};l.SelectL= +{};l.SelectL.kind="L";l.SelectL.signature=["Ls"];l.SelectL.initialize=function(a){if(void 0!==a.index)return a.index-1;var b=v.csnames[a.args[0]].results.value;a=l._helper.initializeLine(a);for(var c=h.projectiveDistMinScal(a,b[0]),d=0,e=1;e<b.length;++e){var f=h.projectiveDistMinScal(a,b[e]);f<c&&(c=f,d=e)}return d};l.SelectL.updatePosition=function(a){a.homog=v.csnames[a.args[0]].results.value[a.param];a.homog=w.withUsage(a.homog,"Line")};l._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 p=c.value[0],r=c.value[1],t=c.value[2];c=e(f(b,p),f(l,t));var u=e(f(b,r),f(n,t)),p=e(f(h,t),f(a,p)),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,p),f(n,r)),d(f(n,p),f(l,r)),f(b,p),f(b,r)]};l.TrMoebius={};l.TrMoebius.kind="Mt";l.TrMoebius.signature="PPPPPP".split("");l.TrMoebius.updatePosition=function(a){var b=m.neg,c=l._helper.moebiusStep(v.csnames[a.args[0]].homog,v.csnames[a.args[2]].homog, +v.csnames[a.args[4]].homog),d=l._helper.moebiusStep(v.csnames[a.args[1]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[5]].homog),d=h.normalizeMax(h.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=h.normalizeMax(h.matrix([[c[6],b(c[4])],[c[7],b(c[5])],[b(c[2]),c[0]],[b(c[3]),c[1]]])),b=h.normalizeMax(h.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]};l._helper.moebiusPair(a)};l._helper.moebiusPair=function(a){var b=a.moebius,c=m.neg,d=b.anti?c:w.identity,b=h.normalizeMax(h.turnIntoCSList([h.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]]),h.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]])]));a.mat1=b.value[0];a.mat2=b.value[1]};l._helper.inverseMoebius=function(a){var b=m.neg,c=a.anti?b:w.identity;return{anti:a.anti, +ar:a.dr,ai:c(a.di),br:b(a.br),bi:b(c(a.bi)),cr:b(a.cr),ci:b(c(a.ci)),dr:a.ar,di:c(a.ai)}};l.TrInverseMoebius={};l.TrInverseMoebius.kind="Mt";l.TrInverseMoebius.signature=["Mt"];l.TrInverseMoebius.updatePosition=function(a){a.moebius=l._helper.inverseMoebius(v.csnames[a.args[0]].moebius);l._helper.moebiusPair(a)};l.TrMoebiusP={};l.TrMoebiusP.kind="P";l.TrMoebiusP.signature=["Mt","P"];l.TrMoebiusP.updatePosition=function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]].homog,d=h.productMV(b.mat1, +c),b=h.productMV(b.mat2,c);a.homog=h.normalizeMax(h.cross(d,b));a.homog=w.withUsage(a.homog,"Point")};l._helper.TrMoebiusP=function(a,b){var c=h.productMV(b.mat1,a),d=h.productMV(b.mat2,a);return h.normalizeMax(h.cross(c,d))};l.TrMoebiusL={};l.TrMoebiusL.kind="C";l.TrMoebiusL.signature=["Mt","L"];l.TrMoebiusL.updatePosition=function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]].homog,d=function(){var a=h.realVector([Math.random()-.5,Math.random()-.5,Math.random()-.5]);return h.normalizeMax(a)}, +e=h.cross(d(),c),f=h.cross(d(),c),c=h.cross(d(),c),e=l._helper.TrMoebiusP(e,b),f=l._helper.TrMoebiusP(f,b),b=l._helper.TrMoebiusP(c,b);a.matrix=h.normalizeMax(l._helper.ConicBy5(null,e,f,b,h.ii,h.jj));a.matrix=w.withUsage(a.matrix,"Circle")};l.TrMoebiusS={};l.TrMoebiusS.kind="C";l.TrMoebiusS.signature=["Mt","S"];l.TrMoebiusS.updatePosition=function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]],d=c.startpos,c=c.endpos,e=h.add(d,c),d=l._helper.TrMoebiusP(d,b),e=l._helper.TrMoebiusP(e,b),b=l._helper.TrMoebiusP(c, +b);a.startPoint=d;a.viaPoint=e;a.endPoint=b;a.isArc=!0;a.matrix=h.normalizeMax(l._helper.ConicBy5(null,d,e,b,h.ii,h.jj));a.matrix=w.withUsage(a.matrix,"Circle")};l.TrMoebiusC={};l.TrMoebiusC.kind="C";l.TrMoebiusC.signature=["Mt","C"];l.TrMoebiusC.signatureConstraints=function(a){return"Circle"===v.csnames[a.args[1]].matrix.usage};l.TrMoebiusC.updatePosition=function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]].matrix,d=function(){var a=h.realVector([Math.random()-.5,Math.random()-.5,Math.random()- +.5]);return h.normalizeMax(a)},e=l._helper.IntersectLC(d(),c),d=l._helper.IntersectLC(d(),c),c=e[1],d=d[1],e=l._helper.TrMoebiusP(e[0],b),c=l._helper.TrMoebiusP(c,b),b=l._helper.TrMoebiusP(d,b);a.matrix=h.normalizeMax(l._helper.ConicBy5(null,e,c,b,h.ii,h.jj));a.matrix=w.withUsage(a.matrix,"Circle")};l.TrMoebiusArc={};l.TrMoebiusArc.kind="C";l.TrMoebiusArc.signature=["Mt","C"];l.TrMoebiusArc.signatureConstraints=function(a){return v.csnames[a.args[1]].isArc};l.TrMoebiusArc.updatePosition=function(a){var b= +v.csnames[a.args[0]],c=v.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,c=l._helper.TrMoebiusP(c.startPoint,b),d=l._helper.TrMoebiusP(d,b),b=l._helper.TrMoebiusP(e,b);a.startPoint=c;a.viaPoint=d;a.endPoint=b;a.isArc=!0;a.matrix=h.normalizeMax(l._helper.ConicBy5(null,c,d,b,h.ii,h.jj));a.matrix=w.withUsage(a.matrix,"Circle")};l._helper.trBuildMatrix=function(a,b){var c=b(0),d=b(1),e=h.productMM(d,h.adjoint3(c));a.matrix=h.normalizeMax(e);e=h.transpose(h.productMM(c,h.adjoint3(d)));a.dualMatrix=h.normalizeMax(e)}; +l.TrProjection={};l.TrProjection.kind="Tr";l.TrProjection.signature="PPPPPPPP".split("");l.TrProjection.initialize=function(a){a.isEuclidean=0};l.TrProjection.updatePosition=function(a){l._helper.trBuildMatrix(a,function(b){return D.basismap(v.csnames[a.args[0+b]].homog,v.csnames[a.args[2+b]].homog,v.csnames[a.args[4+b]].homog,v.csnames[a.args[6+b]].homog)})};l.TrAffine={};l.TrAffine.kind="Tr";l.TrAffine.signature="PPPPPP".split("");l.TrAffine.initialize=function(a){a.isEuclidean=0};l.TrAffine.updatePosition= +function(a){var b=m.mult,c=h.scalmult,d=h.turnIntoCSList,e=h.transpose,f=h.normalizeMax,k=h.productMM,l=h.adjoint3,n=d([v.csnames[a.args[0]].homog,v.csnames[a.args[2]].homog,v.csnames[a.args[4]].homog]),p=d([v.csnames[a.args[1]].homog,v.csnames[a.args[3]].homog,v.csnames[a.args[5]].homog]),r=e(n),e=e(p),t=r.value[2].value,u=e.value[2].value,w=[b(t[0],u[2]),b(t[1],u[0]),b(t[2],u[1])],r=l(r).value;a.matrix=f(k(e,d([c(b(w[0],u[1]),r[0]),c(b(w[1],u[2]),r[1]),c(b(w[2],u[0]),r[2])])));r=n.value;a.dualMatrix= +f(k(l(p),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])])))};l.TrSimilarity={};l.TrSimilarity.kind="Tr";l.TrSimilarity.signature=["P","P","P","P"];l.TrSimilarity.initialize=function(a){a.isEuclidean=1};l.TrSimilarity.updatePosition=function(a){l._helper.trBuildMatrix(a,function(b){return D.basismap(v.csnames[a.args[0+b]].homog,v.csnames[a.args[2+b]].homog,h.ii,h.jj)})};l.TrTranslation={};l.TrTranslation.kind="Tr";l.TrTranslation.signature=["P","P"];l.TrTranslation.initialize=function(a){a.isEuclidean= +1};l.TrTranslation.updatePosition=function(a){var b=v.csnames[a.args[0]].homog,c=v.csnames[a.args[1]].homog,d=h.cross(b,c).value,b=m.mult(b.value[2],c.value[2]),c=h.turnIntoCSList,e=m.neg,f=m.zero,d=c([c([b,f,d[1]]),c([f,b,e(d[0])]),c([f,f,b])]),d=h.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};l.TrReflectionP={};l.TrReflectionP.kind="Tr";l.TrReflectionP.signature=["P"];l.TrReflectionP.initialize=function(a){a.isEuclidean= +1};l.TrReflectionP.updatePosition=function(a){var b=v.csnames[a.args[0]].homog.value,c=m.realmult(-.5,b[2]),d=m.zero,b=h.turnIntoCSList([h.turnIntoCSList([c,d,b[0]]),h.turnIntoCSList([d,c,b[1]]),h.turnIntoCSList([d,d,m.neg(c)])]),b=h.normalizeMax(b);a.matrix=b;a.dualMatrix=h.transpose(b)};l.TrReflectionL={};l.TrReflectionL.kind="Tr";l.TrReflectionL.signature=["L"];l.TrReflectionL.initialize=function(a){a.isEuclidean=-1};l.TrReflectionL.updatePosition=function(a){var b=m.mult,c=m.realmult,d=m.zero, +e=v.csnames[a.args[0]].homog.value,f=e[0],k=e[1],e=e[2],l=b(f,f),n=b(k,k),p=c(-.5,m.sub(l,n)),r=b(f,k),b=h.turnIntoCSList([h.turnIntoCSList([m.neg(p),r,b(f,e)]),h.turnIntoCSList([r,p,b(k,e)]),h.turnIntoCSList([d,d,c(-.5,m.add(l,n))])]),b=h.normalizeMax(b);a.matrix=b;a.dualMatrix=h.transpose(b)};l.TrReflectionS={};l.TrReflectionS.kind="Tr";l.TrReflectionS.signature=["S"];l.TrReflectionS.updatePosition=l.TrReflectionL.updatePosition;l.TrReflectionC={};l.TrReflectionC.kind="Mt";l.TrReflectionC.signature= +["C"];l.TrReflectionC.signatureConstraints=function(a){return"Circle"===v.csnames[a.args[0]].matrix.usage};l.TrReflectionC.updatePosition=function(a){var b=v.csnames[a.args[0]].matrix,c=b.value[0].value[2],d=b.value[1].value[2],e=m.neg;a.moebius={anti:!0,ar:c,ai:d,br:b.value[2].value[2],bi:m.zero,cr:e(b.value[0].value[0]),ci:m.zero,dr:e(c),di:d};l._helper.moebiusPair(a)};l.TrInverse={};l.TrInverse.kind="Tr";l.TrInverse.signature=["Tr"];l.TrInverse.initialize=function(a){a.isEuclidean=v.csnames[a.args[0]].isEuclidean}; +l.TrInverse.updatePosition=function(a){var b=v.csnames[a.args[0]];a.dualMatrix=h.transpose(b.matrix);a.matrix=h.transpose(b.dualMatrix)};l.TransformC={};l.TransformC.kind="C";l.TransformC.signature=["Tr","C"];l.TransformC.updatePosition=function(a){var b=v.csnames[a.args[0]].dualMatrix,b=h.productMM(h.productMM(b,v.csnames[a.args[1]].matrix),h.transpose(b)),b=h.normalizeMax(b);a.matrix=w.withUsage(b,"Conic")};l.TransformArc={};l.TransformArc.kind="C";l.TransformArc.signature=["Tr","C"];l.TransformArc.signatureConstraints= +function(a){return v.csnames[a.args[0]].isArc};l.TransformArc.updatePosition=function(a){var b=v.csnames[a.args[0]].matrix,c=v.csnames[a.args[1]],d=c.viaPoint,e=c.endPoint,c=h.normalizeMax(h.productMV(b,c.startPoint)),d=h.normalizeMax(h.productMV(b,d)),b=h.normalizeMax(h.productMV(b,e));a.startPoint=c;a.viaPoint=d;a.endPoint=b;a.isArc=!0;a.matrix=h.normalizeMax(l._helper.ConicBy5(null,c,d,b,h.ii,h.jj));a.matrix=w.withUsage(a.matrix,"Circle")};l.TransformP={};l.TransformP.kind="P";l.TransformP.signature= +["Tr","P"];l.TransformP.updatePosition=function(a){a.homog=h.normalizeMax(h.productMV(v.csnames[a.args[0]].matrix,v.csnames[a.args[1]].homog));a.homog=w.withUsage(a.homog,"Point")};l.TransformL={};l.TransformL.kind="L";l.TransformL.signature=["Tr","L"];l.TransformL.updatePosition=function(a){a.homog=h.normalizeMax(h.productMV(v.csnames[a.args[0]].dualMatrix,v.csnames[a.args[1]].homog));a.homog=w.withUsage(a.homog,"Line")};l.TransformS={};l.TransformS.kind="S";l.TransformS.signature=["Tr","S"];l.TransformS.updatePosition= +function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]];l.Segment.setSegmentPos(a,h.productMV(b.dualMatrix,c.homog),h.productMV(b.matrix,c.startpos),h.productMV(b.matrix,c.endpos))};l.TransformPolygon={};l.TransformPolygon.kind="Poly";l.TransformPolygon.signature=["Tr","Poly"];l.TransformPolygon.updatePosition=function(a){var b=v.csnames[a.args[0]].matrix;a.vertices=h.turnIntoCSList(v.csnames[a.args[1]].vertices.value.map(function(a){a=h.normalizeMax(h.productMV(b,a));return a=w.withUsage(a, +"Point")}))};l.TrComposeTrTr={};l.TrComposeTrTr.kind="Tr";l.TrComposeTrTr.signature=["Tr","Tr"];l.TrComposeTrTr.initialize=function(a){a.isEuclidean=v.csnames[a.args[0]].isEuclidean*v.csnames[a.args[1]].isEuclidean};l.TrComposeTrTr.updatePosition=function(a){var b=v.csnames[a.args[0]],c=v.csnames[a.args[1]];a.matrix=h.normalizeMax(h.productMM(c.matrix,b.matrix));a.dualMatrix=h.normalizeMax(h.productMM(c.dualMatrix,b.dualMatrix))};l._helper.composeMtMt=function(a,b,c){function d(a,b,c,e){return k(p(a, +b),p(c,e))}function e(a,b,c,g,f,h,l,m){return k(d(a,b,c,g),d(f,h,l,m))}function f(a,b,c,e,g,h,k,l){return n(d(a,b,c,e),d(g,h,k,l))}var k=m.add,n=m.sub,p=m.mult,r=c.anti?f:e,t=c.anti?e:f,r=h.normalizeMax(h.turnIntoCSList([t(b.ar,c.ar,b.cr,c.br,b.ai,c.ai,b.ci,c.bi),r(b.ar,c.ai,b.cr,c.bi,b.ai,c.ar,b.ci,c.br),t(b.br,c.ar,b.dr,c.br,b.bi,c.ai,b.di,c.bi),r(b.br,c.ai,b.dr,c.bi,b.bi,c.ar,b.di,c.br),t(b.ar,c.cr,b.cr,c.dr,b.ai,c.ci,b.ci,c.di),r(b.ar,c.ci,b.cr,c.di,b.ai,c.cr,b.ci,c.dr),t(b.br,c.cr,b.dr,c.dr, +b.bi,c.ci,b.di,c.di),r(b.br,c.ci,b.dr,c.di,b.bi,c.cr,b.di,c.dr)])).value;a.moebius={anti:b.anti!==c.anti,ar:r[0],ai:r[1],br:r[2],bi:r[3],cr:r[4],ci:r[5],dr:r[6],di:r[7]};l._helper.moebiusPair(a)};l._helper.euc2moeb=function(a){var b=a.matrix.value;return{anti:0>a.isEuclidean,ar:b[0].value[0],ai:b[1].value[0],br:b[0].value[2],bi:b[1].value[2],cr:m.zero,ci:m.zero,dr:b[2].value[2],di:m.zero}};l.TrComposeMtMt={};l.TrComposeMtMt.kind="Mt";l.TrComposeMtMt.signature=["Mt","Mt"];l.TrComposeMtMt.updatePosition= +function(a){l._helper.composeMtMt(a,v.csnames[a.args[0]].moebius,v.csnames[a.args[1]].moebius)};l.TrComposeTrMt={};l.TrComposeTrMt.kind="Mt";l.TrComposeTrMt.signature=["Tr","Mt"];l.TrComposeTrMt.signatureConstraints=function(a){return!!v.csnames[a.args[0]].isEuclidean};l.TrComposeTrMt.updatePosition=function(a){l._helper.composeMtMt(a,l._helper.euc2moeb(v.csnames[a.args[0]]),v.csnames[a.args[1]].moebius)};l.TrComposeMtTr={};l.TrComposeMtTr.kind="Mt";l.TrComposeMtTr.signature=["Mt","Tr"];l.TrComposeMtTr.signatureConstraints= +function(a){return!!v.csnames[a.args[1]].isEuclidean};l.TrComposeMtTr.updatePosition=function(a){l._helper.composeMtMt(a,v.csnames[a.args[0]].moebius,l._helper.euc2moeb(v.csnames[a.args[1]]))};l._helper.pointReflection=function(a,b){return h.normalizeMax(h.sub(h.scalmult(m.realmult(2,b.value[2]),a),h.scalmult(a.value[2],b)))};l._helper.conicOtherIntersection=function(a,b,c){var d=h.productMV(a,c);a=h.scalproduct(c,d);d=h.scalproduct(b,d);d=m.realmult(-2,d);b=h.scalmult(a,b);c=h.scalmult(d,c);c=h.add(b, +c);return c=h.normalizeMax(c)};l.Dist={};l.Dist.kind="V";l.Dist.signature=["P","P"];l.Dist.updatePosition=function(a){var b=v.csnames[a.args[1]].homog;a.value=h.abs(h.sub(h.normalizeZ(v.csnames[a.args[0]].homog),h.normalizeZ(b)))};l.Angle={};l.Angle.kind="V";l.Angle.signature=["L","L","P"];l.Angle.initialize=function(a){void 0===a.angle&&(a.angle=.5*Math.PI);Za(m._helper.input(a.angle))};l.Angle.updatePosition=function(a){var b=v.csnames[a.args[1]].homog,c=v.csnames[a.args[2]].homog,d=h.cross(v.csnames[a.args[0]].homog, +h.linfty),b=h.cross(b,h.linfty),c=h.crossratio3(d,b,h.ii,h.jj,c),c=m.mult(m.complex(0,.5),m.log(c)),d=(Bb().value.real-c.value.real)/Math.PI,b=Math.round(d);!lb&&.01<Math.abs(b-d)&&ec();c=m.complex(b*Math.PI+c.value.real,c.value.imag);Za(c);a.value=w.withUsage(c,"Angle")};l.Angle.stateSize=2;l.Text={};l.Text.kind="Text";l.Text.signature="**";l.Text.isMovable=!0;l.Text.updatePosition=Sa;l.Text.initialize=function(a){a.text=String(a.text);a.pos&&(a.homog=l._helper.initializePoint(a));a.dock&&(a.dock.offset= +a.dock.offset&&2===a.dock.offset.length?h.realVector([+a.dock.offset[0],+a.dock.offset[1]]):h.realVector([0,0]))};l.Text.getParamForInput=function(a,b,c){return l.Free.getParamForInput(a,b,c)};l.Text.getParamFromState=function(a){return a.homog};l.Text.putParamToState=function(a,b){a.homog=b};l.Calculation={};l.Calculation.kind="Text";l.Calculation.signature="**";l.Calculation.isMovable=!0;l.Calculation.updatePosition=Sa;l.Calculation.initialize=function(a){l.Text.initialize(a);a.calculation=Ua(a.text)}; +l.Calculation.getText=function(a){return Z(z(a.calculation))};l.Calculation.getParamForInput=l.Text.getParamForInput;l.Calculation.getParamFromState=l.Text.getParamFromState;l.Calculation.putParamToState=l.Text.putParamToState;l.Equation={};l.Equation.kind="Text";l.Equation.isMovable=!0;l.Equation.signature="**";l.Equation.updatePosition=Sa;l.Equation.initialize=function(a){l.Text.initialize(a);a.calculation=Ua(a.text)};l.Equation.getText=function(a){return a.text+" = "+Z(z(a.calculation))};l.Equation.getParamForInput= +l.Text.getParamForInput;l.Equation.getParamFromState=l.Text.getParamFromState;l.Equation.putParamToState=l.Text.putParamToState;l.Evaluate={};l.Evaluate.kind="Text";l.Evaluate.isMovable=!0;l.Evaluate.signature="**";l.Evaluate.updatePosition=Sa;l.Evaluate.initialize=function(a){l.Text.initialize(a);a.calculation=Ua(a.text)};l.Evaluate.getText=function(a){z(a.calculation);return a.text};l.Evaluate.getParamForInput=l.Text.getParamForInput;l.Evaluate.getParamFromState=l.Text.getParamFromState;l.Evaluate.putParamToState= +l.Text.putParamToState;l.Plot={};l.Plot.kind="Text";l.Plot.isMovable=!0;l.Plot.signature="**";l.Plot.updatePosition=Sa;l.Plot.initialize=function(a){l.Text.initialize(a);a.calculation=Ua("plot(("+a.text+"))")};l.Plot.getText=function(a){z(a.calculation);return a.text};l.Plot.getParamForInput=l.Text.getParamForInput;l.Plot.getParamFromState=l.Text.getParamFromState;l.Plot.putParamToState=l.Text.putParamToState;l.Button={};l.Button.kind="Text";l.Button.signature="**";l.Button.isMovable=!0;l.Button.updatePosition= +Sa;l.Button.initialize=function(a){var b=document.createElement("button");Gc(a,"click",b)};l.Button.getParamForInput=l.Text.getParamForInput;l.Button.getParamFromState=l.Text.getParamFromState;l.Button.putParamToState=l.Text.putParamToState;l.Button.set_fillcolor=function(a,b){h._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))};l.ToggleButton={};l.ToggleButton.kind="Text";l.ToggleButton.signature= +"**";l.ToggleButton.isMovable=!0;l.ToggleButton.updatePosition=Sa;l.ToggleButton.initialize=function(a){var b;b=void 0;void 0===b&&(b="CindyJSid");b+=++Qa;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;Gc(a,"change",c,d)};l.ToggleButton.getParamForInput=l.Text.getParamForInput;l.ToggleButton.getParamFromState=l.Text.getParamFromState;l.ToggleButton.putParamToState= +l.Text.putParamToState;l.ToggleButton.set_fillcolor=l.Button.set_fillcolor;l.EditableText={};l.EditableText.kind="Text";l.EditableText.isMovable=!0;l.EditableText.signature=[];l.EditableText.updatePosition=Sa;l.EditableText.initialize=function(a){var b=document.createElement("input");b.setAttribute("type","text");b.className="CindyJS-editabletext";Ia(a.minwidth)&&(b.style.width=a.minwidth-3+"px");"string"===typeof a.text&&(b.value=a.text);b.addEventListener("keydown",function(c){13===c.keyCode&&(a.text= +a.html.value,b.blur())});b.addEventListener("change",function(b){a.text=a.html.value});Gc(a,"change",b)};l.EditableText.getText=function(a){return!1};l.EditableText.getParamForInput=l.Text.getParamForInput;l.EditableText.getParamFromState=l.Text.getParamFromState;l.EditableText.putParamToState=l.Text.putParamToState;l.EditableText.set_fillcolor=l.Button.set_fillcolor;l.EditableText.get_currenttext=function(a){return w.string(String(a.html.value))};l.EditableText.get_text=function(a){return w.string(String(a.text))}; +l.EditableText.set_currenttext=function(a,b){a.html.value=a.text=Z(b)};l.EditableText.get_text=l.EditableText.get_text;l.EditableText.set_text=l.EditableText.set_currenttext;l.EditableText.get_val=l.EditableText.get_text;l.EditableText.set_val=l.EditableText.set_currenttext;l.EditableText.get_currenttext=l.EditableText.get_currenttext;l.EditableText.set_currenttext=l.EditableText.set_currenttext;l._helper.initializePoint=function(a){var b=0,c=0,d=0;if(a.pos){if("list"===a.pos.ctype&&h.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=h.turnIntoCSList([m._helper.input(b),m._helper.input(c),m._helper.input(d)]);return a=h.normalizeMax(a)};l._helper.initializeLine=function(a){var b=0,c=0,d=0;if(a.pos){if("list"===a.pos.ctype&&h.isNumberVector(a.pos))return a.pos;3===a.pos.length&&(b=a.pos[0],c=a.pos[1],d=a.pos[2])}a=h.turnIntoCSList([m._helper.input(b),m._helper.input(c),m._helper.input(d)]);return a=h.normalizeMax(a)};l.Poly={}; +l.Poly.kind="Poly";l.Poly.signature="P*";l.Poly.updatePosition=function(a){a.vertices=h.turnIntoCSList(a.args.map(function(a){return v.csnames[a].homog}))};var U=null;l.IFS={};l.IFS.kind="IFS";l.IFS.signature="**";l.IFS.signatureConstraints=function(a){for(var b=0;b<a.args.length;++b){var c=v.csnames[a.args[b]].kind;if("Tr"!==c&&"Mt"!==c)return!1}return 0<a.args.length};l.IFS.initialize=function(a){if(U)U.dirty=!0;else if(a=va.getBaseDir(),!1!==a){U={dirty:!1,params:{generation:0}};var b=U.worker= +new Worker(a+"ifs.js");b.onmessage=function(a){U.img&&"function"===typeof U.img.close&&U.img.close();if(!Yb){a=a.data;if(a.generation===U.params.generation){if(a.buffer){U.canvas||(U.canvas=document.createElement("canvas"),U.ctx=U.canvas.getContext("2d"));U.canvas.width=a.width;U.canvas.height=a.height;var d=new Uint8ClampedArray(a.buffer,a.imgPtr,a.width*a.height*4),d=new ImageData(d,a.width,a.height);U.ctx.putImageData(d,0,0);U.img=U.canvas}else U.img=a.img;e()}else U.img=null;a.buffer?b.postMessage({cmd:"next", +buffer:a.buffer},[a.buffer]):b.postMessage({cmd:"next"})}};jb.push(b.terminate.bind(b))}};l.IFS.updatePosition=function(a){U.dirty=!0};l.IFS.updateParameters=function(){if(U.worker){var a={cmd:"init",generation:U.params.generation,width:4*ca,height:4*da};a.systems=v.ifs.map(function(a){var b=0,d,e=a.ifs||[],f=a.args.map(function(a,b){var c=e[b]||{};return{prob:c.prob||1,color:c.color||[0,0,0]}});for(d=0;d<f.length;++d)b+=f[d].prob;d=h.realMatrix([[1,0,0],[0,1,0],[0,0,4]]);var k=h.productMM(y.toMat(), +d);for(d=0;d<a.args.length;++d){var n=v.csnames[a.args[d]],p=n.kind,r=f[d];r.kind=p;r.prob/=b;if("Tr"===p)n=h.normalizeMax(h.productMM(h.adjoint3(k),h.productMM(n.matrix,k))),h._helper.isAlmostReal(n)?r.mat=n.value.map(function(a){return a.value.map(function(a){return a.value.real})}):r.kind="cplx";else if("Mt"===p){var p=y.drawingstate.matrix,p={anti:0<p.det,ar:m.real(p.a),ai:m.real(p.c),br:m.real(p.tx),bi:m.real(-p.ty),cr:m.zero,ci:m.zero,dr:m.real(.25),di:m.zero},t={};l._helper.composeMtMt(t,n.moebius, +p);p=l._helper.inverseMoebius(p);l._helper.composeMtMt(t,p,t.moebius);p=t.moebius;p=h.turnIntoCSList([p.ar,p.ai,p.br,p.bi,p.cr,p.ci,p.dr,p.di]);h._helper.isAlmostReal(p)?(p=p.value,r.moebius={ar:p[0].value.real,ai:p[1].value.real,br:p[2].value.real,bi:p[3].value.real,cr:p[4].value.real,ci:p[5].value.real,dr:p[6].value.real,di:p[7].value.real,sign:n.moebius.anti?-1:1}):r.kind="cplx"}}return{trafos:f}});w.deeplyEqual(a,U.params)||(++a.generation,U.img=null,U.params=a,U.mat=y.drawingstate.matrix,U.worker.postMessage(a))}}; +l.IFS.probSetter=function(a,b,c){"number"===c.ctype&&(b.ifs[a].prob=c.value.real,U.dirty=!0)};(function(){for(var a=0;10>a;++a)l.IFS["set_prob"+a]=l.IFS.probSetter.bind(null,a)})();l._helper.snapPointToLine=function(a,b){if(m._helper.isAlmostZero(a.value[2]))return a;var c=l._helper.projectPointToLine(a,b),c=h.normalizeZ(c),d=c.value[0].value.real,c=c.value[1].value.real,e=Math.round(d/za)*za,f=Math.round(c/za)*za,k=h.realVector([e,f,1]);.2>Math.abs(e-d)&&.2>Math.abs(f-c)&&m._helper.isAlmostZero(h.scalproduct(b, +k))&&(a=l._helper.projectPointToLine(k,b));return a};var Ac={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"},zd={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=v.csnames[a.args[1]], +b={Tr:"Transform",Mt:"TrMoebius"}[v.csnames[a.args[0]].kind]+(b.isArc?"Arc":b.kind);if(l.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]},TrReflection:function(a){var b="TrReflection"+v.csnames[a.args[0]].kind;if(l.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet");return[]},TrCompose:function(a){var b="TrCompose"+a.args.map(function(a){return v.csnames[a].kind}).join("");if(l.hasOwnProperty(b))return a.type=b,[a];console.log(b+" not implemented yet"); +return[]}},te="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(" ");sa.saveState=function(){return{geometry:ue()}};var ya={},Qd,Rb,Rd,Sd;Qd=[[],[.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]];Rb=[0,.2,.3,.8,8/9,1,1];Rd=[35/384,0,500/1113,125/192,-2187/6784,11/84,0];Sd=[5179/57600,0,7571/16695,.6140625,-92097/339200,187/2100,.025];var Fa,ma=[],Hc=[],qc=!1;ya.tick=function(a){a/=Vb;for(var b=0;b<Vb;b++)ya.tick1(a),Ib+=a,z(R.simulationstep)};ya.tick1=function(a){for(var b=a,c=0;0<a&&c<.999*a||0>a&&c>.999*a;)b=ya.oneRKStep(b),c+=b,b=Math.min(2*b,a-c),b=Math.max(b,1E-16),ya.restorePosition(),ya.doCollisions(),ya.calculateForces(), +ya.moveToFinalPos();return!0};ya.restorePosition=function(){Fa.forEach(function(a){O[a.type].restorePos(a,9)})};ya.doCollisions=function(){Fa.forEach(function(a){O[a.type].doCollisions(a)})};ya.calculateForces=function(){Fa.forEach(function(a){O[a.type].calculateForces(a)})};ya.moveToFinalPos=function(){Fa.forEach(function(a){O[a.type].move(a)})};ya.oneRKStep=function(a){for(var b=function(a){Fa.forEach(function(b){O[b.type].initRK(b,a);O[b.type].storePosition(b)})},c=function(a){Fa.forEach(function(b){O[b.type].setToTimestep(b, +Rb[a])})},d=function(a){Fa.forEach(function(b){O[b.type].proceedMotion(b,Rb[a],a,Qd[a])})},e=function(){Fa.forEach(function(a){O[a.type].resetForces(a)})},f=function(a){Fa.forEach(function(b){O[b.type].calculateDelta(b,a)})},h=function(b){var c=0;Fa.forEach(function(a){O[a.type].proceedMotion(a,Rb[6],7,Rd);O[a.type].savePos(a,8);O[a.type].proceedMotion(a,Rb[6],7,Sd);O[a.type].savePos(a,9);c+=O[a.type].sqDist(a,8,9)});return c=Math.sqrt(c)/a},k=function(a){Fa.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(),ya.calculateForces(),f(m);h(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;ja&&aa.down&&a.el===ja.mover||La(a.el,h.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<ma.length;e++){var f=ma[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=v.csnames[a.geo[1]];console.log(b);var c=D.extractPoint(b.homog);a=D.extractPoint(v.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=v.csnames[a.geo[2]];if(!ja||!aa.down||b!==ja.mover){var c=v.csnames[a.geo[1]];a=D.extractPoint(c.homog);c=c.behavior;a=h.realVector([a.x+c.vx,a.y+c.vy,1]);La(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=v.csnames[a.namea];a.mb=v.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<ma.length;b++)c=ma[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=v.csnames[a.namea];a.mb=v.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;a.ldiff=0},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||ja&&aa.down&&a.ma===ja.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||ja&&aa.down&&a.mb===ja.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;a.ldiff=f- +h;var 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=v.csnames[a.namea];a.mb=v.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,h=a.y1o,k=a.x2o,l=a.y2o,n=Math.sqrt((d-e)*(d-e)+(b-c)*(b-c)),p=(d-e)/n,n=(b-c)/n,r=0;r<ma.length;r++){var t=ma[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>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&&(Vb=a.accuracy);"undefined"!==typeof a.deltat&&ha(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,h,k,l,m,n;if(a.newton)for(b=0;b<ma.length-1;b++)for(c=ma[b],d=c.behavior.x,e=c.behavior.y,f=b+1;f<ma.length;f++)h=ma[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<ma.length-1;b++)for(c=ma[b],d=c.behavior.x,e=c.behavior.y,f=b+1;f<ma.length;f++)h=ma[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<ma.length-1;b++)if(c=ma[b],0!==c.behavior.radius)for(d=c.behavior.x,e=c.behavior.y,f=b+1;f<ma.length;f++)h=ma[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<ma.length;b++)c=ma[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 sa};return F}(),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/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/Cindy.js.map b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/Cindy.js.map new file mode 100644 index 0000000000..f30d5b75e4 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/Cindy.js.map @@ -0,0 +1,7 @@ +{"version":3, + "file":"Cindy.js", + "sourceRoot":"https://raw.githubusercontent.com/CindyJS/CindyJS/8c01b8d1d336e92934ad80c44aafc5510a1aea36/", + "sources":["node_modules/iphone-inline-video/dist/iphone-inline-video.min.js","lib/clipper/clipper.js","src/js/Head.js","src/js/Setup.js","src/js/Events.js","src/js/libgeo/GeoRender.js","src/js/libcs/List.js","src/js/libcs/Essentials.js","src/js/libcs/Operators.js","src/js/libcs/OpDrawing.js","src/js/libcs/OpImageDrawing.js","src/js/libcs/Parser.js","src/js/libcs/Evaluator.js","src/js/libcs/RenderBackends.js","src/js/libcs/Tools.js","src/js/libgeo/GeoBasics.js","src/js/libgeo/Tracing.js","src/js/libgeo/Prover.js","src/js/libgeo/GeoOps.js","src/js/libgeo/StateIO.js","src/js/liblab/LabBasics.js","build/js/Version.js","src/js/libcs/CSNumber.js","src/js/libcs/Dict.js","src/js/libcs/General.js","src/js/libcs/Namespace.js","src/js/libcs/Accessors.js","src/js/libcs/OpSound.js","src/js/libcs/CSad.js","src/js/libcs/Render2D.js","src/js/libgeo/GeoState.js","src/js/liblab/LabObjects.js","src/js/Tail.js"], + "sourcesContent":[null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,null,"var version = [0,8,7,0,\"g8c01b8d\"];\n",null,null,null,null,null,null,null,null,null,null,null], + "names":["enableInlineVideo","e","i","n","r","t","d","a","start","stop","stopImmediatePropagation","addEventListener","Object","defineProperty","get","set","dispatchEvent","Event","Promise","resolve","then","Audio","crossOrigin","src","currentSrc","o","m","Date","now","b","currentTime","w","T","s","video","readyState","HAVE_FUTURE_DATA","hasAudio","driver","playbackRate","loop","duration","networkState","NETWORK_IDLE","buffered","length","load","ended","pause","c","h","webkitDisplayingFullscreen","g","paused","play","updater","HAVE_ENOUGH_DATA","v","E","p","bind","requestAnimationFrame","cancelAnimationFrame","muted","indexOf","y","document","head","style","matchMedia","matches","f","everywhere","test","iPad","ipad","navigator","userAgent","classList","add","autoplay","platform","console","warn","k","biginteger_used","fromInt","fromNumber","fromString","R","Math","floor","S","l","M","D","charCodeAt","x","A","B","mp","invDigit","mpl","mph","um","DB","mt2","U","K","N","O","C","P","z","r2","q3","ONE","dlShiftTo","mu","divide","use_lines","use_xyz","F","module","exports","window","ClipperLib","self","q","toString","toLowerCase","appName","G","L","H","I","J","Q","prototype","am","DM","DV","FV","pow","F1","F2","convert","A.prototype.convert","compareTo","mod","revert","A.prototype.revert","reduce","A.prototype.reduce","divRemTo","mulTo","A.prototype.mulTo","multiplyTo","sqrTo","A.prototype.sqrTo","squareTo","B.prototype.convert","abs","ZERO","subTo","B.prototype.revert","copyTo","B.prototype.reduce","clamp","drShiftTo","B.prototype.mulTo","B.prototype.sqrTo","k.prototype.copyTo","k.prototype.fromInt","k.prototype.fromString","fromRadix","charAt","k.prototype.clamp","k.prototype.dlShiftTo","k.prototype.drShiftTo","max","lShiftTo","k.prototype.lShiftTo","rShiftTo","k.prototype.rShiftTo","k.prototype.subTo","min","k.prototype.multiplyTo","k.prototype.squareTo","k.prototype.divRemTo","k.prototype.invDigit","isEven","k.prototype.isEven","exp","k.prototype.exp","k.prototype.toString","negate","toRadix","k.prototype.negate","k.prototype.abs","k.prototype.compareTo","bitLength","k.prototype.bitLength","k.prototype.mod","modPowInt","k.prototype.modPowInt","C.prototype.mulTo","C.prototype.sqrTo","z.prototype.convert","z.prototype.revert","z.prototype.reduce","multiplyUpperTo","multiplyLowerTo","dAddOffset","z.prototype.mulTo","z.prototype.sqrTo","u","V","chunkSize","k.prototype.chunkSize","LN2","log","k.prototype.toRadix","signum","intValue","substr","k.prototype.fromRadix","dMultiply","k.prototype.fromNumber","testBit","bitwiseTo","shiftLeft","isProbablePrime","nextBytes","k.prototype.bitwiseTo","changeBit","k.prototype.changeBit","addTo","k.prototype.addTo","k.prototype.dMultiply","k.prototype.dAddOffset","k.prototype.multiplyLowerTo","k.prototype.multiplyUpperTo","modInt","k.prototype.modInt","millerRabin","k.prototype.millerRabin","subtract","getLowestSetBit","shiftRight","random","modPow","clone","k.prototype.clone","k.prototype.intValue","byteValue","k.prototype.byteValue","shortValue","k.prototype.shortValue","k.prototype.signum","toByteArray","k.prototype.toByteArray","equals","k.prototype.equals","k.prototype.min","k.prototype.max","and","k.prototype.and","or","k.prototype.or","xor","k.prototype.xor","andNot","k.prototype.andNot","not","k.prototype.not","k.prototype.shiftLeft","k.prototype.shiftRight","k.prototype.getLowestSetBit","bitCount","k.prototype.bitCount","k.prototype.testBit","setBit","k.prototype.setBit","clearBit","k.prototype.clearBit","flipBit","k.prototype.flipBit","k.prototype.add","k.prototype.subtract","multiply","k.prototype.multiply","k.prototype.divide","remainder","k.prototype.remainder","divideAndRemainder","k.prototype.divideAndRemainder","k.prototype.modPow","modInverse","k.prototype.modInverse","k.prototype.pow","gcd","k.prototype.gcd","k.prototype.isProbablePrime","square","k.prototype.square","IsNegative","k.prototype.IsNegative","op_Equality","k.op_Equality","op_Inequality","k.op_Inequality","op_GreaterThan","k.op_GreaterThan","op_LessThan","k.op_LessThan","op_Addition","k.op_Addition","op_Subtraction","k.op_Subtraction","Int128Mul","k.Int128Mul","op_Division","k.op_Division","ToDouble","k.prototype.ToDouble","parseFloat","getOwnPropertyNames","getOwnPropertyDescriptor","$baseCtor","Path","d.Path","Paths","d.Paths","DoublePoint","d.DoublePoint","arguments","Y","X","DoublePoint0","d.DoublePoint0","DoublePoint1","d.DoublePoint1","DoublePoint2","d.DoublePoint2","PolyNode","d.PolyNode","m_Parent","m_polygon","m_endtype","m_jointype","m_Index","m_Childs","IsOpen","IsHoleNode","d.PolyNode.prototype.IsHoleNode","ChildCount","d.PolyNode.prototype.ChildCount","Contour","d.PolyNode.prototype.Contour","AddChild","d.PolyNode.prototype.AddChild","push","GetNext","d.PolyNode.prototype.GetNext","GetNextSiblingUp","d.PolyNode.prototype.GetNextSiblingUp","Childs","d.PolyNode.prototype.Childs","Parent","d.PolyNode.prototype.Parent","IsHole","d.PolyNode.prototype.IsHole","PolyTree","d.PolyTree","m_AllPolys","call","Clear","d.PolyTree.prototype.Clear","GetFirst","d.PolyTree.prototype.GetFirst","Total","d.PolyTree.prototype.Total","Math_Abs_Int64","Math_Abs_Int32","Math_Abs_Double","d.Math_Abs_Double","Math_Max_Int32_Int32","d.Math_Max_Int32_Int32","Cast_Int32","Cast_Int64","ceil","Number","toInteger","parseInt","d.Clear","PI","PI2","IntPoint","d.IntPoint","Z","Clipper","Round","d.IntPoint.op_Equality","d.IntPoint.op_Inequality","IntPoint0","d.IntPoint0","IntPoint1","d.IntPoint1","IntPoint1dp","d.IntPoint1dp","IntPoint2","d.IntPoint2","IntPoint3","d.IntPoint3","IntRect","d.IntRect","left","top","right","bottom","IntRect0","d.IntRect0","IntRect1","d.IntRect1","IntRect4","d.IntRect4","ClipType","ctIntersection","ctUnion","ctDifference","ctXor","PolyType","ptSubject","ptClip","PolyFillType","pftEvenOdd","pftNonZero","pftPositive","pftNegative","JoinType","jtSquare","jtRound","jtMiter","EndType","etOpenSquare","etOpenRound","etOpenButt","etClosedLine","etClosedPolygon","EdgeSide","esLeft","esRight","Direction","dRightToLeft","dLeftToRight","TEdge","d.TEdge","Bot","Curr","Top","Delta","Dx","PolyTyp","Side","OutIdx","WindCnt2","WindCnt","WindDelta","PrevInSEL","NextInSEL","PrevInAEL","NextInAEL","NextInLML","Prev","Next","IntersectNode","d.IntersectNode","Edge2","Edge1","Pt","MyIntersectNodeSort","d.MyIntersectNodeSort","Compare","d.MyIntersectNodeSort.Compare","LocalMinima","d.LocalMinima","RightBound","LeftBound","Scanbeam","d.Scanbeam","OutRec","d.OutRec","Idx","BottomPt","Pts","FirstLeft","OutPt","d.OutPt","Join","d.Join","OutPt2","OutPt1","OffPt","ClipperBase","d.ClipperBase","m_CurrentLM","m_MinimaList","m_edges","PreserveCollinear","m_HasOpenPaths","m_UseFullRange","horizontal","Skip","Unassigned","tolerance","loRange","hiRange","near_zero","d.ClipperBase.near_zero","IsHorizontal","d.ClipperBase.IsHorizontal","PointIsVertex","d.ClipperBase.prototype.PointIsVertex","PointOnLineSegment","d.ClipperBase.prototype.PointOnLineSegment","PointOnPolygon","d.ClipperBase.prototype.PointOnPolygon","SlopesEqual","d.ClipperBase.SlopesEqual","SlopesEqual3","d.ClipperBase.SlopesEqual3","SlopesEqual4","d.ClipperBase.SlopesEqual4","SlopesEqual5","d.ClipperBase.SlopesEqual5","d.ClipperBase.prototype.Clear","DisposeLocalMinimaList","d.ClipperBase.prototype.DisposeLocalMinimaList","RangeTest","d.ClipperBase.prototype.RangeTest","Value","Error","InitEdge","d.ClipperBase.prototype.InitEdge","InitEdge2","d.ClipperBase.prototype.InitEdge2","SetDx","FindNextLocMin","d.ClipperBase.prototype.FindNextLocMin","ProcessBound","d.ClipperBase.prototype.ProcessBound","InsertLocalMinima","ReverseHorizontal","AddPath","d.ClipperBase.prototype.AddPath","Pt2IsBetweenPt1AndPt3","RemoveEdge","AddPaths","d.ClipperBase.prototype.AddPaths","d.ClipperBase.prototype.Pt2IsBetweenPt1AndPt3","d.ClipperBase.prototype.RemoveEdge","d.ClipperBase.prototype.SetDx","d.ClipperBase.prototype.InsertLocalMinima","PopLocalMinima","d.ClipperBase.prototype.PopLocalMinima","d.ClipperBase.prototype.ReverseHorizontal","Reset","d.ClipperBase.prototype.Reset","d.Clipper","m_PolyOuts","m_ClipType","m_IntersectNodeComparer","m_IntersectList","m_SortedEdges","m_ActiveEdges","m_Scanbeam","m_ExecuteLocked","m_SubjFillType","m_ClipFillType","m_GhostJoins","m_Joins","StrictlySimple","ReverseSolution","m_UsingPolyTree","ZFillFunction","ioReverseSolution","ioStrictlySimple","ioPreserveCollinear","d.Clipper.prototype.Clear","DisposeAllPolyPts","DisposeScanbeamList","d.Clipper.prototype.DisposeScanbeamList","d.Clipper.prototype.Reset","InsertScanbeam","d.Clipper.prototype.InsertScanbeam","Execute","d.Clipper.prototype.Execute","ExecuteInternal","BuildResult2","BuildResult","FixHoleLinkage","d.Clipper.prototype.FixHoleLinkage","d.Clipper.prototype.ExecuteInternal","PopScanbeam","InsertLocalMinimaIntoAEL","ProcessHorizontals","ProcessIntersections","ProcessEdgesAtTopOfScanbeam","Area","ReversePolyPtLinks","JoinCommonEdges","FixupOutPolygon","DoSimplePolygons","d.Clipper.prototype.PopScanbeam","d.Clipper.prototype.DisposeAllPolyPts","DisposeOutRec","d.Clipper.prototype.DisposeOutRec","AddJoin","d.Clipper.prototype.AddJoin","AddGhostJoin","d.Clipper.prototype.AddGhostJoin","SetZ","d.Clipper.prototype.SetZ","d.Clipper.prototype.InsertLocalMinimaIntoAEL","InsertEdgeIntoAEL","SetWindingCount","IsContributing","AddOutPt","AddLocalMinPoly","AddEdgeToSEL","HorzSegmentsOverlap","IntersectEdges","d.Clipper.prototype.InsertEdgeIntoAEL","E2InsertsBeforeE1","d.Clipper.prototype.E2InsertsBeforeE1","TopX","IsEvenOddFillType","d.Clipper.prototype.IsEvenOddFillType","IsEvenOddAltFillType","d.Clipper.prototype.IsEvenOddAltFillType","d.Clipper.prototype.IsContributing","d.Clipper.prototype.SetWindingCount","d.Clipper.prototype.AddEdgeToSEL","CopyAELToSEL","d.Clipper.prototype.CopyAELToSEL","SwapPositionsInAEL","d.Clipper.prototype.SwapPositionsInAEL","SwapPositionsInSEL","d.Clipper.prototype.SwapPositionsInSEL","AddLocalMaxPoly","d.Clipper.prototype.AddLocalMaxPoly","AppendPolygon","d.Clipper.prototype.AddLocalMinPoly","CreateOutRec","d.Clipper.prototype.CreateOutRec","d.Clipper.prototype.AddOutPt","SetHoleState","SwapPoints","d.Clipper.prototype.SwapPoints","d.Clipper.prototype.HorzSegmentsOverlap","d.Clipper.prototype.SetHoleState","GetDx","d.Clipper.prototype.GetDx","FirstIsBottomPt","d.Clipper.prototype.FirstIsBottomPt","GetBottomPt","d.Clipper.prototype.GetBottomPt","GetLowermostRec","d.Clipper.prototype.GetLowermostRec","Param1RightOfParam2","d.Clipper.prototype.Param1RightOfParam2","GetOutRec","d.Clipper.prototype.GetOutRec","d.Clipper.prototype.AppendPolygon","d.Clipper.prototype.ReversePolyPtLinks","SwapSides","d.Clipper.SwapSides","SwapPolyIndexes","d.Clipper.SwapPolyIndexes","d.Clipper.prototype.IntersectEdges","DeleteFromAEL","d.Clipper.prototype.DeleteFromAEL","DeleteFromSEL","d.Clipper.prototype.DeleteFromSEL","UpdateEdgeIntoAEL","d.Clipper.prototype.UpdateEdgeIntoAEL","d.Clipper.prototype.ProcessHorizontals","ProcessHorizontal","GetHorzDirection","d.Clipper.prototype.GetHorzDirection","Left","Right","Dir","d.Clipper.prototype.ProcessHorizontal","GetMaximaPair","GetNextInAEL","d.Clipper.prototype.GetNextInAEL","IsMinima","d.Clipper.prototype.IsMinima","IsMaxima","d.Clipper.prototype.IsMaxima","IsIntermediate","d.Clipper.prototype.IsIntermediate","d.Clipper.prototype.GetMaximaPair","d.Clipper.prototype.ProcessIntersections","BuildIntersectList","FixupIntersectionOrder","ProcessIntersectList","d.Clipper.prototype.BuildIntersectList","IntersectPoint","EdgesAdjacent","d.Clipper.prototype.EdgesAdjacent","IntersectNodeSort","d.Clipper.IntersectNodeSort","d.Clipper.prototype.FixupIntersectionOrder","sort","d.Clipper.prototype.ProcessIntersectList","round","d.Clipper.TopX","d.Clipper.prototype.IntersectPoint","d.Clipper.prototype.ProcessEdgesAtTopOfScanbeam","DoMaxima","d.Clipper.prototype.DoMaxima","ReversePaths","d.Clipper.ReversePaths","reverse","Orientation","d.Clipper.Orientation","PointCount","d.Clipper.prototype.PointCount","d.Clipper.prototype.BuildResult","Array","d.Clipper.prototype.BuildResult2","d.Clipper.prototype.FixupOutPolygon","DupOutPt","d.Clipper.prototype.DupOutPt","GetOverlap","d.Clipper.prototype.GetOverlap","JoinHorz","d.Clipper.prototype.JoinHorz","JoinPoints","d.Clipper.prototype.JoinPoints","GetBounds","d.Clipper.GetBounds","GetBounds2","d.Clipper.prototype.GetBounds2","PointInPolygon","d.Clipper.PointInPolygon","d.Clipper.prototype.PointInPolygon","Poly2ContainsPoly1","d.Clipper.prototype.Poly2ContainsPoly1","FixupFirstLefts1","d.Clipper.prototype.FixupFirstLefts1","ParseFirstLeft","FixupFirstLefts2","d.Clipper.prototype.FixupFirstLefts2","d.Clipper.ParseFirstLeft","d.Clipper.prototype.JoinCommonEdges","UpdateOutPtIdxs","d.Clipper.prototype.UpdateOutPtIdxs","d.Clipper.prototype.DoSimplePolygons","d.Clipper.Area","d.Clipper.prototype.Area","SimplifyPolygon","d.Clipper.SimplifyPolygon","SimplifyPolygons","d.Clipper.SimplifyPolygons","DistanceSqrd","d.Clipper.DistanceSqrd","DistanceFromLineSqrd","d.Clipper.DistanceFromLineSqrd","SlopesNearCollinear","d.Clipper.SlopesNearCollinear","PointsAreClose","d.Clipper.PointsAreClose","ExcludeOp","d.Clipper.ExcludeOp","CleanPolygon","d.Clipper.CleanPolygon","CleanPolygons","d.Clipper.CleanPolygons","Minkowski","d.Clipper.Minkowski","MinkowskiSum","d.Clipper.MinkowskiSum","TranslatePath","d.Clipper.TranslatePath","MinkowskiDiff","d.Clipper.MinkowskiDiff","PolyTreeToPaths","d.Clipper.PolyTreeToPaths","AddPolyNodeToPaths","NodeType","ntAny","d.Clipper.AddPolyNodeToPaths","ntOpen","ntClosed","OpenPathsFromPolyTree","d.Clipper.OpenPathsFromPolyTree","ClosedPathsFromPolyTree","d.Clipper.ClosedPathsFromPolyTree","ClipperOffset","d.ClipperOffset","def_arc_tolerance","m_destPolys","m_srcPoly","m_destPoly","m_normals","m_StepsPerRad","m_miterLim","m_cos","m_sin","m_sinA","m_delta","m_lowest","m_polyNodes","MiterLimit","ArcTolerance","two_pi","d.ClipperOffset.prototype.Clear","d.ClipperOffset.prototype.AddPath","d.ClipperOffset.prototype.AddPaths","FixOrientations","d.ClipperOffset.prototype.FixOrientations","GetUnitNormal","d.ClipperOffset.GetUnitNormal","sqrt","DoOffset","d.ClipperOffset.prototype.DoOffset","acos","sin","cos","OffsetPoint","DoSquare","DoRound","d.ClipperOffset.prototype.Execute","splice","d.ClipperOffset.prototype.OffsetPoint","DoMiter","d.ClipperOffset.prototype.DoSquare","tan","atan2","d.ClipperOffset.prototype.DoMiter","d.ClipperOffset.prototype.DoRound","d.Error","alert","message","JS","AreaOfPolygon","d.JS.AreaOfPolygon","AreaOfPolygons","d.JS.AreaOfPolygons","BoundsOfPath","d.JS.BoundsOfPath","BoundsOfPaths","d.JS.BoundsOfPaths","Clean","d.JS.Clean","Clone","d.JS.Clone","Lighten","d.JS.Lighten","pop","PerimeterOfPath","d.JS.PerimeterOfPath","PerimeterOfPaths","d.JS.PerimeterOfPaths","ScaleDownPath","d.JS.ScaleDownPath","ScaleDownPaths","d.JS.ScaleDownPaths","ScaleUpPath","d.JS.ScaleUpPath","ScaleUpPaths","d.JS.ScaleUpPaths","ExPolygons","d.ExPolygons","ExPolygon","d.ExPolygon","holes","outer","AddOuterPolyNodeToExPolygons","d.JS.AddOuterPolyNodeToExPolygons","ExPolygonsToPaths","d.JS.ExPolygonsToPaths","PolyTreeToExPolygons","d.JS.PolyTreeToExPolygons","CindyJS","waitFor","name","waitCount","error","toStart","startup","data","instance","newInstance","autostart","cindyDontWait","baseDir","cindyJsScriptElement","waitingForLoad","getBaseDir","CindyJS.getBaseDir","scripts","getElementsByTagName","script","match","exec","index","addNewScript","CindyJS.addNewScript","path","onerror","elt","createElement","next","nextSibling","parent","parentElement","insertBefore","appendChild","loadScript","CindyJS.loadScript","onload","names","String","split","obj","shift","_autoLoadingPlugin","autoLoadPlugin","CindyJS.autoLoadPlugin","_pluginRegistry","listeners","nada","ctype","instances","registerPlugin","CindyJS.registerPlugin","apiVersion","pluginName","initCallback","forEach","callback","idCounter","dumpState","CindyJS.dumpState","state","saveState","JSON","stringify","debugState","CindyJS.debugState","map","cfg","config","parse","key","shutdown","CindyJS.newInstance","instanceInvocationArguments","updateCanvasDimensions","canvas","width","csw","clientWidth","height","csh","clientHeight","csctx","setTransform","csport","setMat","trafos","trafo","trname","keys","csscale","scale","translate","apply","drawingstate","initialmatrix","createnewbackup","greset","devicePixelRatio","backingStoreRatio","webkitBackingStorePixelRatio","mozBackingStorePixelRatio","msBackingStorePixelRatio","oBackingStorePixelRatio","backingStorePixelRatio","ratio","canvasWithContainingDiv","div","tagName","firstChild","removeChild","slice","attrs","attributes","attr","value","setAttributeNodeNS","removeAttributeNode","parentNode","replaceChild","position","border","margin","padding","getComputedStyle","getPropertyValue","isCinderellaBeforeVersion","cinderella","version","createCindyNow","startupCalled","waitForPlugins","exclusive","undefined","csconsole","NullConsoleHandler","CindyConsoleHandler","ElementConsoleHandler","csmouse","transform","ports","port","element","getElementById","id","divStyle","fill","background","backgroundColor","isFiniteNumber","grid","csgridsize","tgrid","cstgrid","snap","cssnap","axes","csaxes","canvasname","getContext","setLineDash","csctx.setLineDash","animation","controls","animcontrols","setupAnimControls","speed","accuracy","setSpeed","simaccuracy","statusbar","scriptconf","scriptpat","search","cscode","sname","replace","text","analyse","cscompiled","labelCode","keydown","keytyped","keytype","csgeo","images","geometry","csinit","behavior","csinitphys","img","loadImage","videos","globalInstance","oninit","use","evaluator","use$1","General","wrap","usedFunctions","convexhull3d$1","loadExtraPlugin","colorplot$1","colorplot$2","colorplot$3","colorplot$4","playtone$1","playmelody$1","doneLoadingModule","preload","setAttribute","Image","NaN","ready","live","generation","whenReady","callFunctionNow","tag","callWhenReady","complete","scheduleUpdate","HAVE_METADATA","videoWidth","videoHeight","setupAnimButton","ctrl","button","buttons","loadSvgIcon","setActive","active","remove","speedDrag","event","speedDragging","rect","slider","getBoundingClientRect","speedScale","clientX","clientLeft","speedLo","className","speedHi","speedRange","knob","addAutoCleaningEventListener","speedDown","speedUp","csplay","cspause","csstop","setSpeedKnob","simspeed","skipInit","cb","plugins","modulesToLoad","evaluate","init","setuplisteners","restoreGeo","backup","stateIn","speeds","el","csnames","vx","vy","vz","fx","fy","fz","recalcAll","csanimating","csstopped","stateArrays","points","simtime","simtick","csPhysicsInited","csresetphys","simulationstart","simulationstop","isShutDown","shutdownHooks","GenericConsoleHandler","args","in","this.in","preventNewline","append","createTextNode","out","this.out","err","this.err","this.createTextNode","color","that","cmd","container","innerHTML","body","onkeydown","cmd.onkeydown","evt","keyCode","prog","parse$1","erg","niceprint","scrollTop","scrollHeight","this.append","clear","this.clear","idOrElement","target","type","listener","useCapture","removeEventListener","updatePosition","pos","to","clientY","clientTop","mouse","prevx","prevy","touchUp","activeTouchIDList","changedTouches","gotit","identifier","activeTouchID","down","move","mouseup","manage","preventDefault","MO","MutationObserver","WebKitMutationObserver","mutations","contains","observe","documentElement","disconnect","keylistener","keyEvent","keyup","focus","which","mousedown","mousedrag","mousemove","mouseclick","dropUri","uri","haveText","req","XMLHttpRequest","DONE","status","responseText","oneDone","textDone","files","onreadystatechange","haveHead","getResponseHeader","imgDone","textType","open","send","string","wrapJSON","reported","img.onload","img.onerror","dropped","List","turnIntoCSList","countDown","dropPoint","ondrop","dt","dataTransfer","currentTarget","realVector","file","reader","FileReader","reader.onload","result","readAsText","readAsDataURL","getData","filter","line","touchDown","targetTouches","touchMove","requestAnimFrame","resizeSensor","mkdiv","reset","expand","scrollLeft","shrink","onScroll","scheduled","requestedAnimFrame","doit","delta","simcap","simfactor","time","lab","tick","updateCindy","save","clearRect","matrix","beginPath","strokeStyle","lineWidth","lineCap","tx","moveTo","lineTo","ty","stroke","sqrt3","lineJoin","miterLimit","traceMouseAndScripts","draw_traces","polygons","isshowing","visible","modifs","alpha","fillcolor","fillalpha","size","fillrule","eval_helper","drawpolygon","vertices","conics","isArc","drawarc","filled","df","drawconic","lines","_helper","isAlmostReal","homog","kind","overhang","dashtype","arrow","arrowsize","arrowposition","arrowshape","arrowsides","CSNumber","mult","zz","startpos","conjugate","endpos","real","draw$2","labeled","tmp","lbl","printname","orientedline","scalmult","sign","cross","npos","nposlength","lpos","labelpos","Render2D","makeColor","defaultAppearance","textColor","geoOps","midpoint","drawlabel","handleModifs","lineModifs","drawRaySegment","clip","pt1","pt2","xmin","xmax","ymin","ymax","incidences","pt","isAlmostZero","draw$1","col","noborder","texts","drawgeotext","ifs","dirty","deeplyEqual","mat","IFS","updateParameters","drawImage","restore","evtobj","unicode","charCode","cskey","fromCharCode","actualkey","cskeycode","conicMat2Vec","r0","r1","operator_not_implemented","first","Dict","namespace","getvar","infix_assign","u0","u1","v1","setvar","oper","assigntake","printStackTrace","assigndot","assigncolon","assignlist","comp_equals","v0","bool","imag","comp_notequals","comp_almostequals","evaluateAndVal","isAlmostEqual","almostequals","infix_and","infix_or","infix_add","usage","withUsage","infix_sub","sub","infix_mult","infix_div","isZero","infix_pow","infix_cross","evaluateAndHomog","minCostMatching","hungarianMethod","perms","permutationsFixedList","bc","POSITIVE_INFINITY","bp","j","mkVertex","matched","prev","cost","used","leaf","notincover1","i1","i2","v2","notincover2","matchsize","haspath","empty","eps","res","infix_take","asList","ind","li","v1i","infix_concat","shapeconcat","l0","l1","concat","infix_common","common","shapecommon","infix_remove","shaperemove","infix_append","infix_prepend","prepend","defaultPluralForm","cnt","solveRealQuadratic","hom","s1","s2","defaultTextRendererCanvas","ctx","align","lineHeight","Infinity","row","box","measureText","fillText","imageFromValue","val","hasOwnProperty","readPixelsIndirection","readPixels","getImageData","helpercanvas","exception","rescape","str","ParseError","location","msg","description","Tokenizer","input","re","RegExp","reNextToken","bols","bol","applyOperator","seq","op","lhs","rhs","isSuperscript","precedence","infix","postfix","prefix","bare","sym","subsup","tok","dict","operators","rassoc","end","rawtext","dstDigits","srcDigits","parseRec","tokens","closing","toktype","raw","substring","bra","brackets","closer","ctok","closedBy","pair","lst","expr","fname","functionCallPrecedence","Parser","usedVariables","impl","callStack","Accessor","getField","uobj","getuserData","isNumberVecN","code","parser","infixmap","create","label","frame","join","SvgWriterContext","_path","_defs","_imgcache","_body","_saveStack","_clipIndex","_stroke","_fill","_strokeOpacity","_fillOpacity","globalAlpha","PdfWriterContext","_yPos","_xPos","_extGState","Af255","As255","_objects","_offset","_nextIndex","_xobjects","_pathUsed","_fillAlpha","_strokeAlpha","_globalAlpha","imageToDataURL","mainCanvas","toDataURL","base64Decode","bytes","Uint8Array","alphabet","pngChunks","u32be","offset","chunks","len","subarray","crc","parseColor","spec","cacheImages","toCache","cachedDataURL","responseType","req.onreadystatechange","onloadend","reader.onloadend","response","statusText","padStr","chr","releaseExportedObject","exportedCanvasURL","URL","revokeObjectURL","exportWith","Context","origctx","blob","toBlob","createObjectURL","downloadHelper","getElementAtMouse","mov","adist","diff","gslp","pinned","dx","dy","dist","sc","sdet","normalizeZ","narrow","mid","rad","radius","xx","yy","ref","nn","ln","scaldiv","mover","getNextFreeName","pIndex","actions","tools","activeTool","step","do","success","elements","idx","isElementAtMouse","isPointAtMouse","isLineAtMouse","setElementAtMouse","grabPoint","addElement","grabLine","grabLineOrConic","grabLastPoint","p2","removeElement","tmpPoint","setDefaultAppearance","opName","assert","signature","stateSize","free","addElementNoProof","checkConjectures","setupTraceDrawing","tracedim","tracelength","traceskip","_traces","_traces_index","_traces_tick","pointDefault","pointSize","movable","pointColor","dimDependent","drawtrace","lineDefault","lineSize","lineColor","overhangLine","segmentDefault","overhangSeg","textDefault","textsize","polygonDefault","existingEl","isMovable","movepointscr","geoAliases","macro","geoMacros","expansion","isSet","isArray","argKind","signatureConstraints","totalStateSize","stateLastGood","stateIdx","stateAlloc","stateOut","tracingInitial","initialize","stateInIdx","stateOutIdx","param","isShowing","geoDependantsCache","guessIncidences","onSegment","el1","el2","elm","x1","y1","x2","y2","xm","ym","dd","d12","d1m","d2m","visiblecheck","bold","textbold","italics","textitalics","family","text_fontfamily","fontFamily","factor","drawtext","_bbox","opts","getText","htmlCallback","html","cache","_textCache","inlinebox","font","invisible","removeProperty","textRendererHtml","dock","textCornerNames","corner","screenbounds$0","display","drawIt","lev","elAlpha","dimfactor","condition","newSize","states","stateArrayNames","stateMasterArray","Float64Array","oldStateLastGood","good","stateContinueFromHere","tracingFailed","tracingStateReport","epsInverse","requestRefinement","noMoreRefinements","RefineException","defaultParameterPath","tr","tc","dst","traceLog","currentMouseAndScripts","inMouseMove","traceMover","draw","fullLog","logLength","postMouseHooks","currentMover","previousMover","traceLimit","deps","depSet","arg","last","opMover","parameterPath","originParam","getParamFromState","targetParam","getParamForInput","t2","complex","refining","currentStep","currentParam","stateTmp","putParamToState","currentElement","failed","textContent","getTraceLog","formatTraceLog","Blob","getStateComplexNumber","getStateComplexVector","putStateComplexNumber","putStateComplexVector","tracing2","n1","n2","o1","o2","tracing2core","do1n1","projectiveDistMinScal","do1n2","do2n1","do2n2","do1o2","dn1n2","cost1","cost2","debug","logRow","labelTracing2","realMatrix","isNaN","safety","tracing4","n3","n4","o3","o4","tracing4core","old_el","new_el","min_cost","distMatrix","bestperm","match_cost","odist","ndist","labelTracing4","tracingSesq","newVecs","oldVecs","oldNorms","newNorms","oldMinCost","newMinCost","normSquared","sesquilinearproduct","resCost","anyNaN","labelTracingSesq","tracing2Conics","c1","c2","flattenConicMatrix","buildConicMatrix","applyIncidence","incidentPL","holds","pn","prod","scalproduct","incidentPC","conjectures","commonButton","onEvent","Text","noop","savePos","unwrap","sum","xy","xz","yz","saveDockingInfo","saveGeoElement","attributesToClone","undim","saveGeoState","behaviors","beh","geo","labObjects","behavs","masses","springs","Environment","gravity","mainGeo","simunit","isFinite","iconsToLoad","url","handleStateChange","svg","responseXML","docElt","layers","node","nodeType","Node","ELEMENT_NODE","namespaceURI","localName","getAttribute","serializer","XMLSerializer","layer","serializeToString","encodeURIComponent","icon","evokeCS","parsed","evalcs","isNode","process","nextTick","webkitRequestAnimationFrame","mozRequestAnimationFrame","oRequestAnimationFrame","msRequestAnimationFrame","setTimeout","roundingfactor","angleroundingfactor","niceround","CSNumber._helper.niceround","CSNumber.niceprint","niceangle","angleUnit","angleUnitName","TWOPI","PERTWOPI","angleUnits","CSNumber._helper.niceangle","unit","num","realmult","CSNumber.complex","CSNumber.real","zero","one","infinity","nan","CSNumber._helper.input","argmax","CSNumber.argmax","CSNumber.max","CSNumber.min","CSNumber.add","CSNumber.sub","neg","CSNumber.neg","CSNumber.re","im","CSNumber.im","CSNumber.conjugate","CSNumber.round","CSNumber.ceil","CSNumber.floor","CSNumber.mult","CSNumber.realmult","multiMult","CSNumber.multiMult","arr","abs2","CSNumber.abs2","CSNumber.abs","inv","CSNumber.inv","CSNumber.div","ar","ai","br","bi","epsbig","CSNumber.snap","CSNumber.exp","CSNumber.cos","rr","ii","imag1","real1","CSNumber.sin","CSNumber.tan","arccos","CSNumber.arccos","tmp1","arcsin","CSNumber.arcsin","arctan","CSNumber.arctan","t1","arctan2","CSNumber.arctan2","isReal","CSNumber.sqrt","powRealExponent","CSNumber.powRealExponent","CSNumber.log","CSNumber.pow","CSNumber.mod","a1","a2","b1","b2","seed","seedrandom","CSNumber._helper.seedrandom","rand","CSNumber._helper.rand","randnormal","CSNumber._helper.randnormal","isEqual","CSNumber._helper.isEqual","isLessThan","CSNumber._helper.isLessThan","compare","CSNumber._helper.compare","CSNumber._helper.isAlmostEqual","preci","CSNumber._helper.isZero","CSNumber._helper.isAlmostZero","CSNumber._helper.isReal","CSNumber._helper.isAlmostReal","CSNumber._helper.isNaN","CSNumber._helper.isFinite","isAlmostImag","CSNumber._helper.isAlmostImag","z3a","z3b","cub1","cub2","cub3","solveCubic","CSNumber.solveCubic","help","solveCubicHelper","CSNumber._helper.solveCubicHelper","cr","ci","dr","di","acr","aci","t1r","t1i","abr","abi","t3r","t3i","aar","aai","aadr","aadi","bbr","bbi","wr","wi","t2r","t2i","phi","w1i","w1r","xr","xi","yr","yi","zr","zi","List.turnIntoCSList","EMPTY","List.asList","List.realVector","unitvector","List._helper.unitvector","zerovector","idMatrix","List.idMatrix","zeromatrix","flippedidMatrix","List._helper.flippedidMatrix","println","List.println","List.matrix","List.realMatrix","ex","ey","ez","linfty","jj","fundDual","fund","sequence","List.sequence","ct","pairs","List.pairs","triples","List.triples","cycle","List.cycle","consecutive","List.consecutive","List.reverse","directproduct","List.directproduct","List.concat","List.prepend","List.append","List.contains","cc","List.common","bb","List.remove","sort1","List.sort1","List._helper.isEqual","List._helper.isLessThan","List._helper.compare","List.equals","av1","av2","List.almostequals","List._helper.isAlmostReal","List._helper.isAlmostZero","List._helper.isNaN","List.set","erg1","maxval","List.maxval","maxIndex","List.maxIndex","fun","startIdx","sIdx","bestIdx","bestVal","normalizeMax","List.normalizeMax","List.normalizeZ","dehom","List.dehom","normalizeAbs","List.normalizeAbs","List.max","List.min","List.scaldiv","List.scalmult","List.add","List.sub","List.abs2","List.abs","normalizeMaxXX","List.normalizeMaxXX","maxv","recursive","List.recursive","List.re","List.neg","List.im","List.conjugate","transjugate","List.transjugate","transpose","List.round","List.ceil","List.floor","colNumb","List._helper.colNumb","List._helper.isNumberVecN","isNumberVector","List.isNumberVector","isNumberVectorN","List.isNumberVectorN","isNumberMatrix","List.isNumberMatrix","isNumberMatrixMN","List._helper.isNumberMatrixMN","List.scalproduct","List.sesquilinearproduct","List.normSquared","av","productMV","List.productMV","productVM","List.productVM","productMM","List.productMM","aa","List.mult","List.projectiveDistMinScal","sa","sb","np","na","nb","d1","d2","conicDist","List.conicDist","mat1","mat2","vec1","vec2","crossOperator","List.crossOperator","List.cross","crossratio3harm","List.crossratio3harm","acx","det3","bdx","adx","bcx","numer","denom","crossratio3","List.crossratio3","veronese","List.veronese","turnIntoSCList","matrixFromVeronese","List.matrixFromVeronese","det2","List.det2","R1","R2","List.det3","det4m","List.det4m","m00r","m00i","m01r","m01i","m02r","m02i","m03r","m03i","m10r","m10i","m11r","m11i","m12r","m12i","m13r","m13i","a01r","a01i","a02r","a02i","a03r","a03i","a12r","a12i","a13r","a13i","a23r","a23i","b01r","b01i","b02r","b02i","b03r","b03i","b12r","b12i","b13r","b13i","b23r","b23i","eucangle","List.eucangle","tmp2","ca","cd","dv","ang","List.zerovector","List.zeromatrix","vandermonde","List.vandermonde","List.transpose","column","List.column","List.row","adjoint2","List.adjoint2","AA","adjoint3","List.adjoint3","r11","i11","r12","i12","r13","i13","r21","i21","r22","i22","r23","i23","i31","r32","i32","r31","r33","i33","inverse","List.inverse","det","LUP","LUdecomp","ei","LUsolve","linearsolve","List.linearsolve","linearsolveCramer2","linearsolveCramer3","getDiag","List.getDiag","getSubDiag","List.getSubDiag","eig2","List.eig2","trace","bdet","trace2","L2","L1","mroot","eig","List.eig","getEigenvectors","getEv","cslen","QRIteration","QRRes","eigvals","ID","eigenvecs","MM","lastevec","count","sameEigVal","qq","nullS","ceigval","nullSpace","inverseIteration","isAlmostZeroVec","isNormalMatrix","List._helper.isNormalMatrix","List._helper.QRIteration","maxIter","Alen","Id","QQ","mIter","kap","ann","dist1","numDeflations","block","getBlock","blockeigs","dist2","shiftId","QR","QRdecomp","buildBlockMatrix","isUpperTriangular","rank","List.rank","RRQRdecomp","List._helper.isAlmostZeroVec","isLowerTriangular","List._helper.isLowerTriangular","leni","lenj","List._helper.isUpperTriangular","isAlmostId","List._helper.isAlmostId","List.nullSpace","precision","nullRank","vec","isAlmostDiagonal","List._helper.isAlmostDiagonal","List._helper.inverseIteration","shiftinit","qk","toHessenberg","List._helper.toHessenberg","cslen2","absxx","Qk","getHouseHolder","swapEl","List._helper.swapEl","List.RRQRdecomp","preci2","e1","AAA","tA","norms","piv","maxIdx","tau","swapColumn","normxx","List._helper.getHouseHolder","QRgetAlpha","uu","vv","ww","transposeMult","reOrderbyPivots","List._helper.reOrderbyPivots","Rerg","List.QRdecomp","List._helper.swapColumn","List._helper.buildBlockMatrix","mA","nA","List._helper.getBlock","m0","n0","m1","setBlock","List._helper.setBlock","List._helper.transposeMult","List._helper.QRgetAlpha","List.LUdecomp","Ak","Pk","tpos","absAjk","Akk","Ai","LU","TransPos","List.LUsolve","List._helper.LUsolve","LUi","Pi","List.linearsolveCramer2","A1","A2","detA","List.linearsolveCramer3","A3","x3","linearsolveCGNR","List.linearsolveCGNR","transA","linearsolveCG","List.linearsolveCG","alp","Ap","rback","bet","List.det","ret","Aj","k1","temp","LUdet","List.LUdet","List.getField","nil","ofGeos","List.ofGeos","geos","Dict.key","Dict.create","Dict.clone","Dict.put","Dict.get","dflt","kv","Dict.niceprint","boolean","number","term","atomic","variable","list","General.string","General.bool","General.not","General.isLessThan","General.isEqual","General.compareResults","General.compare","order","General.add","General.sub","General.mult","General.div","General.max","General.min","General.wrap","General.unwrap","General.withUsage","General.wrapJSON","put","General.identity","General.deeplyEqual","General.DeepCloneJSON","DeepCloneJSON","myfunctions","postfix_numb_degree","infix_sqrt","sqrt$1","prefix_not","comp_ult","comp_ugt","comp_ge","comp_le","comp_uge","comp_ule","comp_gt","comp_lt","infix_in","infix_nin","comp_notalmostequals","infix_sequence","infix_define","previous","definer","postfix_undefine","infix_semicolon","eval_helper.evaluate","tt","arglist","newvar","pushVstack","cleanVstack","removevar","lastIndexOf","eval_helper.equals","vars","preset","pi","isVariable","namespace.isVariable","namespace.create","namespace.newvar","namespace.removevar","stack","namespace.setvar","undefinedWarning","namespace.getvar","dump","namespace.dump","vstack","namespace.pushVstack","popVstack","namespace.popVstack","namespace.cleanVstack","st","colorhsb","caption","selected","labelled","Accessor.getGeoField","geoname","field","Accessor.setGeoField","setField","Accessor.getField","ax","az","bz","cz","cen","CenterOfConic","checkbox","checked","generalFields","mass","charge","friction","ldiff","getter","Accessor.setField","setter","Accessor.getuserData","userData","Accessor.setuserData","version$0","evaluator.version$0","ver","clearconsole$0","evaluator.clearconsole$0","err$1","evaluator.err$1","varname","errc$1","evaluator.errc$1","print$1","evaluator.print$1","println$1","evaluator.println$1","assert$2","evaluator.assert$2","dump$1","evaluator.dump$1","repeat$2","evaluator.repeat$2","repeat$3","evaluator.repeat$3","lauf","startb","stopb","stepb","while$2","evaluator.while$2","bo","apply$2","evaluator.apply$2","apply$3","evaluator.apply$3","forall$2","evaluator.forall$2","forall$3","evaluator.forall$3","select$2","evaluator.select$2","select$3","evaluator.select$3","flatten$1","evaluator.flatten$1","recurse","level","levels","createvar$1","evaluator.createvar$1","local","evaluator.local","removevar$1","evaluator.removevar$1","release","evaluator.release","regional","evaluator.regional","genList","evaluator.genList","eval_helper.assigntake","what","where","ind1","eval_helper.assigndot","eval_helper.assigncolon","setuserData","tmpObj","eval_helper.assignlist","vals","if$2","evaluator.if$2","if$3","evaluator.if$3","and$2","or$2","xor$2","evaluator.xor$2","not$1","evaluator.not$1","genericListMathGen","eval_helper.genericListMathGen","emptyval","name$3","max$2","evaluator.max$2","max$3","max$1","min$2","evaluator.min$2","min$3","min$1","add$2","sub$2","mult$2","div$2","mod$2","evaluator.mod$2","pow$2","exp$1","evaluator.exp$1","sin$1","evaluator.sin$1","evaluator.sqrt$1","laguerre","eval_helper.laguerre","cs","maxiter","iter","tol","g2","quadratic_roots","eval_helper.quadratic_roots","roots","eval_helper.roots","cs_orig","qroots","roots$1","evaluator.roots$1","autodiff$3","evaluator.autodiff$3","ffunc","xarr","grade","CSad","autodiff","cos$1","evaluator.cos$1","tan$1","evaluator.tan$1","arccos$1","evaluator.arccos$1","arcsin$1","evaluator.arcsin$1","arctan$1","evaluator.arctan$1","arctan2$2","evaluator.arctan2$2","arctan2$1","evaluator.arctan2$1","log$1","evaluator.log$1","recursiveGen","eval_helper.recursiveGen","numOp","listOp","abs_infix","abs$1","random$0","evaluator.random$0","random$1","evaluator.random$1","seedrandom$1","evaluator.seedrandom$1","randomnormal$0","evaluator.randomnormal$0","randominteger$1","evaluator.randominteger$1","randomint$1","randombool$0","evaluator.randombool$0","isreal$1","evaluator.isreal$1","isinteger$1","evaluator.isinteger$1","iseven$1","evaluator.iseven$1","isodd$1","evaluator.isodd$1","iscomplex$1","evaluator.iscomplex$1","isstring$1","evaluator.isstring$1","islist$1","evaluator.islist$1","ismatrix$1","evaluator.ismatrix$1","iscircle$1","evaluator.iscircle$1","isconic$1","evaluator.isconic$1","isline$1","evaluator.isline$1","ispoint$1","evaluator.ispoint$1","isgeometric$1","evaluator.isgeometric$1","isnumbermatrix$1","evaluator.isnumbermatrix$1","isnumbervector$1","evaluator.isnumbervector$1","issun$1","evaluator.issun$1","ismass$1","evaluator.ismass$1","isspring$1","evaluator.isspring$1","isbouncer$1","evaluator.isbouncer$1","isundefined$1","evaluator.isundefined$1","cinderellaAlgoNames","ArcBy3","ConicBy1p4l","ConicBy4p1l","ConicBy5lines","ConicBy2Foci1P","ConicFromPrincipalDirections","Free","PolarOfLine","PolarOfPoint","PointOnSegment","Button","ToggleButton","TrReflectionL","TrReflectionP","TrReflectionC","TrTranslation","TrSimilarity","TrAffine","TransformP","TransformL","TransformSegment","TransformS","TransformPolygon","TransformArc","TransformConic","TransformC","TrMoebiusP","TrMoebiusL","TrMoebiusSegment","TrMoebiusS","TrMoebiusPolygon","TrMoebiusArc","TrMoebiusCircle","TrMoebiusC","TrInverseMoebius","Perp","Para","AngleBisector","IntersectLC","IntersectCirCir","OtherPointOnCircle","algorithm$1","evaluator.algorithm$1","compat","compatibility","inputs$1","evaluator.inputs$1","moveto$2","evaluator.moveto$2","continuefromhere$0","evaluator.continuefromhere$0","matrixrowcolumn$1","evaluator.matrixrowcolumn$1","rowmatrix$1","evaluator.rowmatrix$1","columnmatrix$1","evaluator.columnmatrix$1","submatrix$3","evaluator.submatrix$3","sane","row1","row2","complex$1","evaluator.complex$1","gauss$1","evaluator.gauss$1","cross$2","crossratio$4","evaluator.crossratio$4","a0","a3","v3","para$2","evaluator.para$2","w0","w1","perp$2","evaluator.perp$2","perp$1","evaluator.perp$1","parallel$2","perpendicular$2","perpendicular$1","meet$2","evaluator.meet$2","join$2","evaluator.join$2","dist$2","evaluator.dist$2","dist_infix","point$1","evaluator.point$1","line$1","evaluator.line$1","det$3","evaluator.det$3","det$1","evaluator.det$1","eig$1","evaluator.eig$1","eigenvalues$1","evaluator.eigenvalues$1","rank$1","evaluator.rank$1","kernel$1","evaluator.kernel$1","eigenvectors$1","evaluator.eigenvectors$1","area$3","evaluator.area$3","z0","z1","z2","inverse$1","evaluator.inverse$1","linearsolve$2","evaluator.linearsolve$2","mincostmatching$1","evaluator.mincostmatching$1","costMatrix","nr","nc","matching","take$2","length$1","evaluator.length$1","pairs$1","evaluator.pairs$1","triples$1","evaluator.triples$1","cycle$1","evaluator.cycle$1","consecutive$1","evaluator.consecutive$1","reverse$1","evaluator.reverse$1","directproduct$2","evaluator.directproduct$2","concat$2","common$2","remove$2","append$2","prepend$2","contains$2","evaluator.contains$2","sort$2","evaluator.sort$2","sort$3","evaluator.sort$3","compareResults","sort$1","evaluator.sort$1","set$1","evaluator.set$1","combinations$2","evaluator.combinations$2","pick","current","base","zeromatrix$2","evaluator.zeromatrix$2","zerovector$1","evaluator.zerovector$1","transpose$1","evaluator.transpose$1","row$2","evaluator.row$2","column$2","evaluator.column$2","dict$0","evaluator.dict$0","put$3","evaluator.put$3","get$2","evaluator.get$2","red$1","evaluator.red$1","green$1","evaluator.green$1","blue$1","evaluator.blue$1","gray$1","evaluator.gray$1","grey$1","HSVtoRGB","eval_helper.HSVtoRGB","hue$1","evaluator.hue$1","shapeconvert","eval_helper.shapeconvert","mx","my","pol","shapeop","eval_helper.shapeop","cpr","clip_fillType","subject_fillType","solution_paths","eval_helper.shapecommon","eval_helper.shaperemove","eval_helper.shapeconcat","key$0","evaluator.key$0","keycode$0","evaluator.keycode$0","mouse$0","evaluator.mouse$0","mover$0","evaluator.mover$0","translate$1","evaluator.translate$1","rotate$1","evaluator.rotate$1","rotate","scale$1","evaluator.scale$1","greset$0","evaluator.greset$0","csgstorage","gsave$0","evaluator.gsave$0","gsave","grestore$0","evaluator.grestore$0","grestore","color$1","evaluator.color$1","setcolor","linecolor$1","evaluator.linecolor$1","setlinecolor","pointcolor$1","evaluator.pointcolor$1","setpointcolor","alpha$1","evaluator.alpha$1","setalpha","pointsize$1","evaluator.pointsize$1","setpointsize","linesize$1","evaluator.linesize$1","setlinesize","textsize$1","evaluator.textsize$1","settextsize","playanimation$0","evaluator.playanimation$0","pauseanimation$0","evaluator.pauseanimation$0","stopanimation$0","evaluator.stopanimation$0","text$1","evaluator.text$1","replace$3","evaluator.replace$3","str0","str1","str2","regex","replace$2","evaluator.replace$2","getReplStr","from","keyind","rules","srep","substring$3","evaluator.substring$3","tokenize$2","evaluator.tokenize$2","autoconvert","fl","tail","token","indexof$2","evaluator.indexof$2","indexof$3","evaluator.indexof$3","evaluator.parse$1","unicode$1","evaluator.unicode$1","codepoint","fromCodePoint","cp","international$1","evaluator.international$1","international$2","evaluator.international$2","trl","translations","language","entry","pluralForm","_pluralFormFunction","currentlanguage$0","evaluator.currentlanguage$0","basismap","eval_helper.basismap","map$8","evaluator.map$8","w2","w3","m2","map$6","evaluator.map$6","inf","map$4","evaluator.map$4","map$2","evaluator.map$2","pointreflect$1","evaluator.pointreflect$1","linereflect$1","evaluator.linereflect$1","extractPointVec","eval_helper.extractPointVec","ok","polygon$1","evaluator.polygon$1","extractPoint","circle$2","evaluator.circle$2","screen$0","evaluator.screen$0","transf","px","py","halfplane$2","evaluator.halfplane$2","foot","sx","sy","pp1","pp2","pp3","pp4","element$1","evaluator.element$1","all$1","eval_helper.all$1","allpoints$0","evaluator.allpoints$0","allpoints$1","evaluator.allpoints$1","allmasses$0","evaluator.allmasses$0","allmasses$1","evaluator.allmasses$1","allsprings$0","evaluator.allsprings$0","allsprings$1","evaluator.allsprings$1","alllines$0","evaluator.alllines$0","alllines$1","evaluator.alllines$1","allsegments$0","evaluator.allsegments$0","allsegments$1","evaluator.allsegments$1","allconics$0","evaluator.allconics$0","allconics$1","evaluator.allconics$1","allcircles$0","evaluator.allcircles$0","allcircles$1","evaluator.allcircles$1","allelements$0","evaluator.allelements$0","allelements$1","evaluator.allelements$1","elementsatmouse$0","evaluator.elementsatmouse$0","distMouse","pz","getPerp","fp","inciPC","perp","dists","sect","inciPP","pp","farpoint","startPoint","endPoint","viaPoint","nor","elts","incidences$1","createpoint$2","evaluator.createpoint$2","create$3","evaluator.create$3","defs","def","javascript$1","evaluator.javascript$1","Function","evaluator.use$1","defineFunction","arity","getInitialMatrix","setTextRenderer","handlerCanvas","handlerHtml","textRendererCanvas","getImage","lazy","cdyUpdate","getMyfunction","format$2","evaluator.format$2","fmtNumber","toFixed","dec","fmt","Date.now","getTime","epoch","timestamp$0","evaluator.timestamp$0","seconds$0","evaluator.seconds$0","resetclock$0","evaluator.resetclock$0","time$0","evaluator.time$0","getHours","getMinutes","getSeconds","getMilliseconds","date$0","evaluator.date$0","getFullYear","getMonth","getDate","simulationtime$0","evaluator.simulationtime$0","settimeout$2","evaluator.settimeout$2","delay","formatForWebGL","eval_helper.formatForWebGL","generateWebGL$2","evaluator.generateWebGL$2","varlist","plotvars","compileToWebGL$1","evaluator.compileToWebGL$1","setsimulationspeed$1","evaluator.setsimulationspeed$1","setsimulationaccuracy$1","evaluator.setsimulationaccuracy$1","env","setsimulationquality$1","evaluator.setsimulationquality$1","qual","errorbound","lowestdeltat","slowdownfactor","activeButton","createtool$3","evaluator.createtool$3","modif","xref","yref","space","toolbar","reference","flipped","ncols","nrows","rowElt","click","tooltip","spacer","dropped$0","evaluator.dropped$0","droppoint$0","evaluator.droppoint$0","parsecsv$1","evaluator.parsecsv$1","mcon","delim","md","delimiter","lastIndex","itm","load$2","evaluator.load$2","load$3","evaluator.load$3","arg0","eval_helper.extractPoint","evaluator.draw$1","drawshape","drawline","pointModifs","drawpoint","evaluator.draw$2","drawsegcore","drawcircle$2","evaluator.drawcircle$2","drawcircle","arcHelper","eval_helper.arcHelper","arc","fillcircle$2","evaluator.fillcircle$2","drawarc$3","evaluator.drawarc$3","fillarc$3","evaluator.fillarc$3","eval_helper.drawarc","conicModifs","preDrawCurve","abcdet","con","ConicBy5","zer","startAngle","endAngle","arcDist","cclock","fillStyle","closePath","ptA","ptB","ptC","dAC","dBC","crossr","eval_helper.drawcircle","drawconic$1","evaluator.drawconic$1","half","tarr","eval_helper.drawconic","conicMatrix","c20","c11","c10","c02","c01","c00","link","verticalBoundary","vertical","mkp","sol","discr","k00","k10","k20","tpt","horizontalBoundary","k01","k02","doBoundary","bd","bMin","bMax","sign1","sign2","signMid","center","dist0","boundary","minx","maxx","miny","maxy","refine","depth","ux","uy","uz","cx","k11","cy","maxError","area","hx","hy","dMd","dMh","hMh","y3","quadraticCurveTo","lsize","tmat","toMat","dummy","startIndex","best","pt3","drawall$1","evaluator.drawall$1","pointAndLineModifs","connect$1","evaluator.connect$1","drawpoly$1","evaluator.drawpoly$1","fillpoly$1","evaluator.fillpoly$1","drawpolygon$1","evaluator.drawpolygon$1","fillpolygon$1","evaluator.fillpolygon$1","eval_helper.drawpolygon","drawpolyshape","polys","drawpoly","fillColor","rows","eval_helper.drawtext","textModifs","xOffset","yOffset","txt","katex","drawtext$2","evaluator.drawtext$2","drawtable$2","evaluator.drawtable$2","textcolor","hh","eval_helper.drawshape","shape","fillshape","eval_helper.fillshape","clipshape","eval_helper.clipshape","fill$1","evaluator.fill$1","clip$1","evaluator.clip$1","plot$1","evaluator.plot$1","plot$2","evaluator.plot$2","canbedrawn","drawstroke","xb","yb","xx2","yy2","xa","ya","xx1","yy1","stroking","drawrec","drawable1","drawable2","minstep","connectb","runv","ergmid","drawablem","drawit","pxlstep","mid1","ergmid1","mid2","ergmid2","dd1","dd2","steps","connect","xo","vo","plotX$1","evaluator.plotX$1","linecolor","eval_helper.plotvars","merge","els","l2","clrscr$0","evaluator.clrscr$0","repaint$0","evaluator.repaint$0","evaluator.screenbounds$0","pt4","createimage$3","evaluator.createimage$3","clearimage$1","evaluator.clearimage$1","image","localcanvas","cw","ch","localcontext","canvas$4","evaluator.canvas$4","pta","ptb","diffx","diffy","ptcx","ptcy","ptdx","ptdy","cva","cvc","cvd","x11","x12","x21","x22","x31","x32","a4","a5","a6","backupctx","canvas$5","evaluator.canvas$5","ptc","cvb","y11","y32","screenresolution$0","evaluator.screenresolution$0","layer$1","evaluator.layer$1","imagesize$1","evaluator.imagesize$1","imageready$1","evaluator.imageready$1","drawimage$2","evaluator.drawimage$2","drawimg1","scax","scay","flipx","flipy","rot","angle","rotation","scalex","scaley","initm","ixx1","iyy1","viewScale","drawTo","drawimg3","aspect","drawimage$3","drawimage$4","allimages$0","evaluator.allimages$0","cameravideo$0","evaluator.cameravideo$0","makeconstraints","advanced","ideal","audio","maximal","constraints","resolution","heightorratio","isInteger","aspectRatio","openVideoStream","gum","mediaDevices","getUserMedia","failure","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","stream","srcObject","playvideo$1","evaluator.playvideo$1","pausevideo$1","evaluator.pausevideo$1","imagergba$3","evaluator.imagergba$3","rgba","imagergb$3","imagergba$4","evaluator.imagergba$4","coord","interpolate","repeat","xf","yf","pixels","p10","p01","p11","imagergb$4","evaluator.imagergb$4","readpixels$1","evaluator.readpixels$1","operatorLevels","deg","take","functionCall","mul","eq","ne","lt","gt","le","ge","aeq","ane","alt","agt","ale","age","nin","assign","define","undefine","bdefine","prefixOperators","prefixOnly","postfixOnly","flexfix","operatorSymbols","initializeOperators","symbols","descr","symbol","reNumber","inTokenWhitespace","supNum","subNum","unicodeLetters","hiRanges","fst","reIdentifier","reSpace","tokenTypes","sanityCheck","advanceBy","Tokenizer.prototype.advanceBy","advanceTo","Tokenizer.prototype.advanceTo","curPos","Tokenizer.prototype.curPos","nextInternal","Tokenizer.prototype.nextInternal","pos1","pos2","Tokenizer.prototype.next","reComment","cvoid","postprocess","Parser.prototype.postprocess","Parser.prototype.parse","module.exports.parse","playsin$1","evaluator.playsin$1","linenumber","freq","CSad.printArr","ttemp","ttempi","printimag","CSad.zero","CSad.number","x0","CSad.variable","CSad.add","CSad.sub","CSad.mult","ges","CSad.pow","root","CSad.root","rOne","inner","csK","CSad.findFirstNoneZero","idxf","idxg","myEps","CSad.div","indxs","findFirstNoneZero","CSad.exp","CSad.log","CSad.sincos","ergsin","ergcos","sumcos","sumsin","insin","incos","numk","inboth","sinsave","cossave","CSad.sin","sincos","CSad.cos","CSad.faculty","CSad.diff","CSad.adevaluate","ergarr","facs","faculty","CSad.autodiff","adevaluate","Render2D.handleModifs","handlers","dashing","unSetDash","colorraw","fillcolorraw","psize","isArrow","arrowSides","headlen","arrowShape","arrowShapes","handler","modifHandlers","pointsize","linesize","pointcolor","pointcolorraw","linecolorraw","textcolorraw","black","dashpattern","pat","setDash","dashTypes","si","deprecated","allowed","x_offset","y_offset","Render2D.makeColor","Render2D.preDrawCurve","mozFillRule","close","clipSegment","Render2D.clipSegment","clipPoints","clipLineCore","q1","q2","dot1","dot2","Render2D.drawsegcore","draw_arrowhead","tipx","tipy","rx","ry","lx","ly","endpoint1x","endpoint1y","endpoint2x","endpoint2y","overhang1","overhang2","overhang1x","overhang1y","overhang2x","overhang2y","hs","pos_fac1","pos_fac2","tip1x","tip1y","tip2x","tip2y","Render2D.drawpoint","Render2D.clipLineCore","SQRT1_2","xMin","xMax","yMax","yMin","ul","ur","ll","lr","clipLine","Render2D.clipLine","Render2D.drawline","Render2D.drawRaySegment","norm","Render2D.setDash","pattern","webkitLineDash","mozDash","Render2D.unSetDash","_pathcmd","bezierCurveTo","dir","covered","largeArc","_cmd","_attrs","_transform","_setAlpha","butt","miter","bevel","limit","_kappa","_usePath","combined","_png","dataURL","chunk","ihdr","bitDepth","colorType","grayscale","compressionMethod","filterMethod","interlaceMethod","smask","numColors","idats","pako","inflate","Inflate","bytesPerComponent","colorBytesPerPixel","rgb","mask","deflate","_strm","Type","Subtype","Width","Height","ColorSpace","BitsPerComponent","Filter","DecodeParms","_dict","Predictor","Colors","Columns","_obj","xobj","Name","SMask","Length","unshift","mediaBox","Pages","Kids","Count","MediaBox","Contents","Resources","ProcSet","XObject","ExtGState","buf","objects","byIndex","trailer","Size","Root","exportSVG","globalInstance.exportSVG","exportPDF","globalInstance.exportPDF","exportPNG","globalInstance.exportPNG","href","download","Delete","Move","normalizedmid","midx","midy","vlength","refy","Point","Mid","Circle","Compass","Line","Segment","Parallel","Orthogonal","Intersection","csport.clone","constructor","csport.reset","csport.from","csport.to","csport.toMat","dumpTrafo","csport.dumpTrafo","csport.setMat","scaleAndOrigin","csport.scaleAndOrigin","originX","originY","visibleRect","csport.visibleRect","applyMat","csport.applyMat","csport.translate","csport.rotate","csport.scale","csport.gsave","csport.grestore","csport.greset","csport.createnewbackup","makecolor","csport.makecolor","rv","gv","bv","csport.setcolor","co","csport.setlinecolor","settextcolor","csport.settextcolor","csport.setpointcolor","csport.setalpha","al","csport.setpointsize","csport.setlinesize","csport.settextsize","enableTraceLog","addTraceHook","guessIncidences.P","conjecture","guessIncidences.L","guessIncidences.C","RandomLine","geoOps.RandomLine.updatePosition","FreeLine","geoOps.FreeLine.initialize","initializeLine","geoOps.FreeLine.getParamForInput","geoOps.FreeLine.getParamFromState","geoOps.FreeLine.putParamToState","geoOps.FreeLine.updatePosition","RandomPoint","geoOps.RandomPoint.updatePosition","geoOps.Join.updatePosition","geoOps.Segment.updatePosition","setSegmentPos","geoOps.Segment.setSegmentPos","startend","Meet","geoOps.Meet.updatePosition","geoOps.Meet.visiblecheck","geoOps._helper.midpoint","geoOps.Mid.updatePosition","geoOps.Perp.updatePosition","geoOps.Para.updatePosition","Horizontal","geoOps.Horizontal.updatePosition","HorizontalLine","geoOps.HorizontalLine.initialize","geoOps.HorizontalLine.getParamForInput","geoOps.HorizontalLine.getParamFromState","geoOps.HorizontalLine.putParamToState","geoOps.HorizontalLine.updatePosition","Vertical","geoOps.Vertical.updatePosition","VerticalLine","geoOps.VerticalLine.initialize","geoOps.VerticalLine.getParamForInput","geoOps.VerticalLine.getParamFromState","geoOps.VerticalLine.putParamToState","geoOps.VerticalLine.updatePosition","LineByFixedAngle","geoOps.LineByFixedAngle.initialize","geoOps.LineByFixedAngle.updatePosition","Through","geoOps.Through.initialize","geoOps.Through.getParamForInput","geoOps.Through.getParamFromState","geoOps.Through.putParamToState","geoOps.Through.updatePosition","set_angle","geoOps.Through.set_angle","ss","set_slope","geoOps.Through.set_slope","geoOps.Free.initialize","initializePoint","geoOps.Free.getParamForInput","geoOps.Free.getParamFromState","geoOps.Free.putParamToState","geoOps.Free.updatePosition","projectPointToLine","geoOps._helper.projectPointToLine","point","PointOnLine","geoOps.PointOnLine.initialize","other","geoOps.PointOnLine.updatePosition","isMover","newPoint","newLine","oldPoint","tmpIn","realPoint","realLine","circle","CircleMP","newCandidates","oldAntipode","pointReflection","geoOps.PointOnLine.getParamForInput","snapPointToLine","geoOps.PointOnLine.getParamFromState","geoOps.PointOnLine.putParamToState","PointOnCircle","geoOps.PointOnCircle.initialize","CenterOfCircle","diameter","candidates","d0","geoOps.PointOnCircle.putParamToState","geoOps.PointOnCircle.getParamFromState","geoOps.PointOnCircle.getParamForInput","oldparam","oldpos","olddir","oldSign","geoOps.PointOnCircle.parameterPath","sp","uc","tc2","uc2","tuc","geoOps.PointOnCircle.updatePosition","antipodalPoint","geoOps.OtherPointOnCircle.signatureConstraints","geoOps.OtherPointOnCircle.updatePosition","geoOps.PointOnSegment.initialize","geoOps.PointOnSegment.getParamForInput","seg","geoOps.PointOnSegment.getParamFromState","geoOps.PointOnSegment.putParamToState","geoOps.PointOnSegment.updatePosition","far","projectPointToCircle","geoOps._helper.projectPointToCircle","cir","isec","PointOnArc","geoOps.PointOnArc.signatureConstraints","geoOps.PointOnArc.initialize","geoOps.PointOnArc.getParamForInput","crh","geoOps.PointOnArc.getParamFromState","geoOps.PointOnArc.putParamToState","geoOps.PointOnArc.updatePosition","AI","BI","CI","M2x3","M3x2","M2x3c","M2x2","v2x1","ab","conicOtherIntersection","geoOps._helper.CenterOfCircle","geoOps._helper.CenterOfConic","adj","geoOps.CenterOfConic.updatePosition","geoOps._helper.CircleMP","mz","tang","la","geoOps.CircleMP.updatePosition","CircleMr","geoOps.CircleMr.initialize","geoOps.CircleMr.getParamForInput","geoOps.CircleMr.getParamFromState","geoOps.CircleMr.putParamToState","geoOps.CircleMr.updatePosition","sr","sr2","ScaledCircleMrr","set_radius","geoOps.CircleMr.set_radius","geoOps._helper.ScaledCircleMrr","vxy","geoOps.Compass.updatePosition","aZ","bZ","mZ","getConicType","geoOps._helper.getConicType","adet","geoOps._helper.ConicBy5","v23","v14","v12","v34","conicFromTwoDegenerates","geoOps._helper.conicFromTwoDegenerates","deg1","deg2","geoOps.ConicBy5.updatePosition","FreeConic","geoOps.FreeConic.initialize","inputConic","geoOps.FreeConic.getParamForInput","geoOps.FreeConic.getParamFromState","geoOps.FreeConic.putParamToState","geoOps.FreeConic.updatePosition","set_matrix","geoOps.FreeConic.set_matrix","geoOps._helper.buildConicMatrix","geoOps._helper.flattenConicMatrix","splitDegenConic","geoOps._helper.splitDegenConic","adj_mat","beta","zeros","lam","lg","lh","geoOps._helper.inputConic","SelectConic","geoOps.SelectConic.initialize","results","geoOps.SelectConic.updatePosition","geoOps._helper.ConicBy4p1l","bl","cl","dl","bcd","abd","acd","abc","k2","geoOps.ConicBy4p1l.updatePosition","ConicBy3p2l","geoOps._helper.ConicBy3p2l","gh","gl","hl","m3","a3a","b3a","signs","b3","p1","p3","p4","mm","geoOps.ConicBy3p2l.updatePosition","ConicBy2p3l","geoOps.ConicBy2p3l.updatePosition","dual","geoOps.ConicBy1p4l.updatePosition","ConicParabolaPL","geoOps.ConicParabolaPL.updatePosition","Fx","Fy","Fz","dz","Fz2","dx2","dy2","Fzdz","nFz","dx2pdy2","geoOps.ConicBy2Foci1P.updatePosition","PP","II","JJ","har","coHarmonic","e2","lII","lJJ","lF1","lF2","co1","co2","three","ConicBy2Pol1P","geoOps.ConicBy2Pol1P.updatePosition","sm","rm","AC","BC","M1","M2","M3","Ab","Ba","ConicBy2Pol1L","geoOps.ConicBy2Pol1L.updatePosition","aA","aB","bA","bB","cA","cB","conic1Pol3Inc","geoOps._helper.conic1Pol3Inc","ABC","BD","AD","aD","ConicBy1Pol3P","geoOps.ConicBy1Pol3P.updatePosition","ConicBy1Pol3L","geoOps.ConicBy1Pol3L.updatePosition","ConicBy1Pol2P1L","geoOps.ConicBy1Pol2P1L.updatePosition","aC","dA","dB","dC","AB","ABAC","res1","res2","ConicBy1Pol1P2L","geoOps.ConicBy1Pol1P2L.updatePosition","aAA","aAB","aBB","cAA","cAB","cBB","dAA","dAB","dBB","fa","fc","fd","cv","geoOps._helper.coHarmonic","poi","ix","jx","iy","jy","sqj","sqi","mui","tauj","out1","out2","ConicInSquare","geoOps.ConicInSquare.updatePosition","m2Tucm2","m1a","mC","geoOps.ConicBy5lines.updatePosition","erg_temp","geoOps.ConicFromPrincipalDirections.updatePosition","P1","P2","P3","P1M","perpDirP1M","vP1M","vPP1MTP1","vPP1MTP3","CircleBy3","geoOps.CircleBy3.updatePosition","geoOps.ArcBy3.updatePosition","geoOps.ArcBy3.initialize","geoOps.PolarOfPoint.updatePosition","conic","geoOps.PolarOfLine.updatePosition","dualMatrix","geoOps.AngleBisector.updatePosition","nm","geoOps._helper.IntersectLC","maxidx","a12","a21","a22","a11","erg2","geoOps.IntersectLC.updatePosition","OtherIntersectionCL","geoOps.OtherIntersectionCL.updatePosition","geoOps.IntersectCirCir.updatePosition","line1","ct1","line2","ct2","OtherIntersectionCC","geoOps.OtherIntersectionCC.updatePosition","IntersectConicConic","geoOps._helper.IntersectConicConic","B1","B2","B3","c3","c0","Aabs2","Babs2","myeps","CDeg1","CDeg2","sols","d01","d02","sol1","sol2","lines1","l11","l12","lines2","l21","l22","geoOps.IntersectConicConic.updatePosition","SelectP","geoOps.SelectP.initialize","geoOps.SelectP.updatePosition","SelectL","geoOps.SelectL.initialize","geoOps.SelectL.updatePosition","moebiusStep","geoOps._helper.moebiusStep","ay","bx","by","d3","d4","TrMoebius","geoOps.TrMoebius.updatePosition","mB","mAa","moebius","anti","moebiusPair","geoOps._helper.moebiusPair","flip","identity","mats","inverseMoebius","geoOps._helper.inverseMoebius","geoOps.TrInverseMoebius.updatePosition","geoOps.TrMoebiusP.updatePosition","geoOps._helper.TrMoebiusP","Tr","geoOps.TrMoebiusL.updatePosition","getRandLine","rline","geoOps.TrMoebiusS.updatePosition","geoOps.TrMoebiusC.signatureConstraints","geoOps.TrMoebiusC.updatePosition","pts1","pts2","geoOps.TrMoebiusArc.signatureConstraints","geoOps.TrMoebiusArc.updatePosition","Arc","trBuildMatrix","geoOps._helper.trBuildMatrix","oneStep","TrProjection","geoOps.TrProjection.initialize","isEuclidean","geoOps.TrProjection.updatePosition","geoOps.TrAffine.initialize","geoOps.TrAffine.updatePosition","ps1","ps2","ps1t","ps2t","geoOps.TrSimilarity.initialize","geoOps.TrSimilarity.updatePosition","geoOps.TrTranslation.initialize","geoOps.TrTranslation.updatePosition","geoOps.TrReflectionP.initialize","geoOps.TrReflectionP.updatePosition","geoOps.TrReflectionL.initialize","geoOps.TrReflectionL.updatePosition","pm","txy","TrReflectionS","geoOps.TrReflectionC.signatureConstraints","geoOps.TrReflectionC.updatePosition","TrInverse","geoOps.TrInverse.initialize","geoOps.TrInverse.updatePosition","geoOps.TransformC.updatePosition","geoOps.TransformArc.signatureConstraints","geoOps.TransformArc.updatePosition","geoOps.TransformP.updatePosition","geoOps.TransformL.updatePosition","geoOps.TransformS.updatePosition","geoOps.TransformPolygon.updatePosition","TrComposeTrTr","geoOps.TrComposeTrTr.initialize","geoOps.TrComposeTrTr.updatePosition","composeMtMt","geoOps._helper.composeMtMt","f1","f2","f3","addsub","subadd","euc2moeb","geoOps._helper.euc2moeb","TrComposeMtMt","geoOps.TrComposeMtMt.updatePosition","TrComposeTrMt","geoOps.TrComposeTrMt.signatureConstraints","geoOps.TrComposeTrMt.updatePosition","TrComposeMtTr","geoOps.TrComposeMtTr.signatureConstraints","geoOps.TrComposeMtTr.updatePosition","geoOps._helper.pointReflection","geoOps._helper.conicOtherIntersection","mb","bmb","amb","amb2","bmba","amb2b","Dist","geoOps.Dist.updatePosition","Angle","geoOps.Angle.initialize","geoOps.Angle.updatePosition","ap","winding","geoOps.Text.initialize","geoOps.Text.getParamForInput","geoOps.Text.getParamFromState","geoOps.Text.putParamToState","Calculation","geoOps.Calculation.initialize","calculation","geoOps.Calculation.getText","Equation","geoOps.Equation.initialize","geoOps.Equation.getText","Evaluate","geoOps.Evaluate.initialize","geoOps.Evaluate.getText","Plot","geoOps.Plot.initialize","geoOps.Plot.getText","geoOps.Button.initialize","set_fillcolor","geoOps.Button.set_fillcolor","geoOps.ToggleButton.initialize","pressed","EditableText","geoOps.EditableText.initialize","textbox","minwidth","blur","geoOps.EditableText.getText","get_currenttext","geoOps.EditableText.get_currenttext","get_text","geoOps.EditableText.get_text","set_currenttext","geoOps.EditableText.set_currenttext","set_text","get_val","set_val","geoOps._helper.initializePoint","sz","geoOps._helper.initializeLine","Poly","geoOps.Poly.updatePosition","geoOps.IFS.signatureConstraints","geoOps.IFS.initialize","params","worker","Worker","onmessage","worker.onmessage","buffer","imgBytes","Uint8ClampedArray","imgPtr","imgData","ImageData","putImageData","postMessage","terminate","geoOps.IFS.updatePosition","geoOps.IFS.updateParameters","supersampling","systems","trs","prob","px2hom","trel","view","elLike","moeb","probSetter","geoOps.IFS.probSetter","geoOps._helper.snapPointToLine","projPos","newpos","geoMacros.CircleMFixedr","geoMacros.CircleByFixedRadius","geoMacros.IntersectionConicLine","geoMacros.angleBisector","geoMacros.Transform","Mt","akind","geoMacros.TrReflection","geoMacros.TrCompose","globalInstance.saveState","lab.tick","deltat","tick1","simulationstep","lab.tick1","mydeltat","proceeded","actualdelta","oneRKStep","restorePosition","doCollisions","calculateForces","moveToFinalPos","lab.restorePosition","restorePos","lab.doCollisions","lab.calculateForces","lab.moveToFinalPos","lab.oneRKStep","initRKTimeStep","initRK","storePosition","setToTimestep","proceedMotion","resetForces","calculateDelta","calculateError","sqDist","recallInitialPosition","recallPosition","madeIt","elem","vel","lnfrict","limitspeed","fixed","internalmove","mtype","mvx","mvy","mvz","dvx","dvy","dvz","midz","lz","yo","zo","vxo","vyo","vzo","setVelocity","bvv","limitSpeed","kineticEnergy","tip","strength","namea","nameb","ma","amplitude","phase","stype","readOnInit","lact","mytype","l3","springstrength","labObjects.det","xdamp","ydamp","motorchanger","x1o","y1o","x2o","y2o","nx","ny","mxo","myo","vvx","vvy","ss1","ss2","charges","balls","newton","ballInteractionBoosting","createCindy"], + "mappings":"A;;;;;AACA,IAAIA,kBAAkB,QAAQ,EAAE,CAChCC,QAASA,EAAC,CAACA,CAAD,CAAGC,CAAH,CAAKC,CAAL,CAAOC,CAAP,CAAS,CAACC,QAASA,EAAC,CAACF,CAAD,CAAG,CAACG,EAAA,CAAEJ,CAAA,CAAEG,CAAF,CAAID,CAAJ,CAAOH,EAAA,CAAEE,CAAF,EAAKI,CAAL,EAAQJ,CAAR,EAAYI,EAArB,CAAuBJ,CAAxB,CAAd,IAA4CG,EAA5C,CAA8CC,CAAE,OAAM,CAACC,MAAMA,QAAQ,EAAE,CAACF,EAAA,EAAGD,CAAA,CAAE,CAAF,CAAJ,CAAjB,CAA2BI,KAAKA,QAAQ,EAAE,CAACN,CAAA,CAAEG,EAAF,CAAKA,GAAL,CAAO,IAAKC,EAAZ,CAAc,CAAf,CAA1C,CAAtD,CAAwLJ,QAASA,EAAC,CAACF,CAAD,CAAGC,CAAH,CAAKC,CAAL,CAAOC,CAAP,CAAS,CAACC,QAASA,EAAC,CAACH,CAAD,CAAG,CAAC,CAAQ,CAAAD,CAAA,CAAEE,CAAF,CAAR,GAAgB,CAAQC,CAAAA,CAAxB,EAA4BF,CAAAQ,yBAAA,EAA6B,QAAOT,CAAA,CAAEE,CAAF,CAAjE,CAAsE,MAAOF,EAAAU,iBAAA,CAAmBT,CAAnB,CAAqBG,CAArB,CAAuB,CAAA,CAAvB,CAAA,CAA2BA,CAAtH,CAAwHD,QAASA,GAAC,CAACH,CAAD,CAAGC,CAAH,CAAKC,CAAL,CAAOC,CAAP,CAAS,CAA0BE,QAASA,EAAC,CAACL,CAAD,CAAG,CAACE,CAAA,CAAED,CAAF,CAAA,CAAKD,CAAN,CAAQG,CAAA,EAAGE,CAAA,CAAEL,CAAA,CAAEC,CAAF,CAAF,CAAQU,OAAAC,eAAA,CAAsBZ,CAAtB,CAAwBC,CAAxB,CAA0B,CAACY,IAApFT,QAAU,EAAE,CAAC,MAAOF,EAAA,CAAED,CAAF,CAAR,CAAuE,CAAOa,IAAIT,CAAX,CAA1B,CAA1D,CAAmGD,QAASA,GAAC,CAACJ,CAAD,CAAGC,CAAH,CAAKC,CAAL,CAAO,CAACA,CAAAQ,iBAAA,CAAmBT,CAAnB,CAAqB,QAAQ,EAAE,CAAC,MAAOD,EAAAe,cAAA,CAAgB,IAAIC,KAAJ,CAAUf,CAAV,CAAhB,CAAR,CAA/B,CAAD,CAD7b;AACqgBI,QAASA,GAAC,CAACL,CAAD,CAAGC,CAAH,CAAK,CAACgB,OAAAC,QAAA,EAAAC,KAAA,CAAuB,QAAQ,EAAE,CAACnB,CAAAe,cAAA,CAAgB,IAAIC,KAAJ,CAAUf,CAAV,CAAhB,CAAD,CAAjC,CAAD,CAAmEK,QAASA,GAAC,CAACN,CAAD,CAAG,CAAC,IAAIC,EAAE,IAAImB,KAAM,OAAOhB,GAAA,CAAEJ,CAAF,CAAI,MAAJ,CAAWC,CAAX,CAAA,CAAcG,EAAA,CAAEJ,CAAF,CAAI,SAAJ,CAAcC,CAAd,CAAd,CAA+BG,EAAA,CAAEJ,CAAF,CAAI,OAAJ,CAAYC,CAAZ,CAA/B,CAA8CA,CAAAoB,YAA9C,CAA4DrB,CAAAqB,YAA5D,CAA0EpB,CAAAqB,IAA1E,CAAgFtB,CAAAsB,IAAhF,EAAuFtB,CAAAuB,WAAvF,EAAqG,OAArG,CAA6GtB,CAArI,CAAuIuB,QAASA,GAAC,CAACxB,CAAD,CAAGC,CAAH,CAAKC,CAAL,CAAO,CAAC,CAACuB,CAAD,EAAI,CAAJ,EAAO,GAAP,CAAWC,IAAAC,IAAA,EAAX,GAAwB3B,CAAA,CAAE4B,EAAF,CAAA,CAAK,CAAA,CAAL,CAAQH,CAAR,CAAUC,IAAAC,IAAA,EAAlC,CAA8CzB,EAA9C,GAAkDF,CAAA6B,YAAlD,CAAgE5B,CAAhE,CAAmE6B,EAAA,CAAE,EAAEC,EAAJ,CAAM,CAAN,CAAnE,CAA4E,GAA5E,CAAgF9B,CAAhF,CAAkF,CAAnF,CAAiJ+B,QAASA,EAAC,CAAChC,CAAD,CAAG,CAAOC,IAAKgC,MAAAC,WAAA,EAALjC,IAAyBgC,MAAAE,iBAApB,EAALlC,IAAmDmC,SAAA,GAAnDnC,IAAgEoC,OAAAR,YAAA,CAAhE5B,IAAqFgC,MAAAJ,YAArB,CAAyC7B,CAAzC,CAAhEC,IAA2GgC,MAAAK,aAA3C,CAAgE,GAAhE,CAAhErC,IAAoIgC,MAAAM,KAApE;AAAhEtC,IAA3DoC,OAAAR,YAA2H,EAAhE5B,IAArCgC,MAAAO,SAAqG,GAAhEvC,IAAyJoC,OAAAR,YAAzF,CAA8G,CAA9G,CAAb,EAA+HL,EAAA,CAAlLvB,IAAoLgC,MAAF,CAAlLhC,IAA4LoC,OAAAR,YAAV,CAA7K,EAAL5B,IAAmNgC,MAAAQ,aAA9M,GAALxC,IAA0OgC,MAAAS,aAArO,EAA2P,CAA3P,GAALzC,IAAoQgC,MAAAU,SAAAC,OAA/P,EAAL3C,IAA6RgC,MAAAY,KAAA,EAA7R5C,KAA4SgC,MAAAa,MAAvS,GAAuT,OAA5T7C,IAAmUgC,MAAA,CAAQL,EAAR,CAAP,CAA5T3B,IAA8UgC,MAAAc,MAAA,CAAc,CAAA,CAAd,CAAzU,CAAZ,CAAwWC,QAASA,GAAC,EAAE,CAAC,IAAW/C,EAALD,IAAO,CAAEiD,CAAF,CAAK,OAAZjD,KAAmBkD,2BAAA,CAA6B,IAAhDlD,KAAqD,CAAEmD,EAAF,CAAA,EAAlC,EAA0C,OAAA,GAAUlD,CAAAoC,OAAAf,IAAV,EAAwBrB,CAAAoC,OAAAf,IAAxB,GAA7DtB,IAAoGsB,IAAvC,GAA+CE,EAAA,CAA5GxB,IAA4G,CAAI,CAAJ,CAAM,CAAA,CAAN,CAAA,CAAUC,CAAAoC,OAAAf,IAAV,CAA5GtB,IAAmIsB,IAAtE,EAA6E,KAA1ItB,IAA+IoD,OAAL,GAAgBnD,CAAAmD,OAAA,CAAS,CAAA,CAAT,CAAY,CAAZ,GAA1JpD,IAA0K2C,SAAAC,OAAhB;AAA1J5C,IAA6L6C,KAAA,EAAnC,CAA4C5C,CAAAoC,OAAAgB,KAAA,EAA5C,CAA4DpD,CAAAqD,QAAA/C,MAAA,EAA5D,CAA8EN,CAAAmC,SAA9E,GAA2F/B,EAAA,CAArPL,IAAqP,CAAI,MAAJ,CAAA,CAAYC,CAAAgC,MAAAC,WAAZ,EAAgCjC,CAAAgC,MAAAsB,iBAAhC,EAA0DlD,EAAA,CAA/SL,IAA+S,CAAI,SAAJ,CAArJ,CAAhB,EAAvH,CAA1B,CAAyUwD,QAASA,EAAC,CAACxD,CAAD,CAAG,CAAC,IAAWE,EAALD,IAAO,CAAEgD,CAAF,CAAK/C,EAAAmC,OAAAU,MAAA,EAAiB7C,EAAAoD,QAAA9C,KAAA,EAA7BP,KAA8CiD,2BAAlC,EAAZjD,IAA4E,CAAEwD,EAAF,CAAA,EAAOvD,EAAAkD,OAAvE,EAAkFpD,CAAAA,CAAlF,GAAsFE,CAAAkD,OAAA,CAAS,CAAA,CAAT,CAAYlD,CAAAkC,SAAZ,EAAwB/B,EAAA,CAA1HJ,IAA0H,CAAI,OAAJ,CAAxB,CAAlGA,IAAuI6C,MAArC,GAAlG7C,IAAiJ,CAAE2B,EAAF,CAAA,CAAK,CAAA,CAAL,CAAQvB,EAAA,CAAzJJ,IAAyJ,CAAI,OAAJ,CAAvD,CAAtF,CAAnB,CAA+KyD,QAASA,GAAC,CAAC1D,CAAD,CAAGE,CAAH,CAAK,CAAC,IAAIC,EAAEH,CAAA,CAAEiD,CAAF,CAAF9C,CAAO,EAAGA,EAAAiD,OAAA,CAAS,CAAA,CAAGjD,EAAAiC,SAAZ,CAAuBlC,CAAEC,EAAA8B,MAAzB,CAAiCjC,CAAEG,EAAAmD,QAAnC,CAAtrDtD,CAAA,CAAquDgC,CAAA2B,KAAA1D,CAAOE,CAAPF,CAAruD,CAAI2D,qBAAJ,CAA0BC,oBAA1B,CAAgvD3D,EAAA,CAAEC,CAAAkC,OAAF,CAAW/B,EAAA,CAAEN,CAAF,CAAX,EAAiBA,CAAAU,iBAAA,CAAmB,SAAnB;AAA6B,QAAQ,EAAE,CAACV,CAAAoD,OAAA,EAAU/C,EAAA,CAAEL,CAAF,CAAI,SAAJ,CAAX,CAAvC,CAAA,CAAmEG,CAAAkC,OAAnE,CAA4E,CAACf,IAAItB,CAAAsB,IAAJA,EAAWtB,CAAAuB,WAAXD,EAAyB,OAA1B,CAAkCwC,MAAM,CAAA,CAAxC,CAA2CV,OAAO,CAAA,CAAlD,CAAqDL,MAAMA,QAAQ,EAAE,CAAC5C,CAAAkC,OAAAe,OAAA,CAAgB,CAAA,CAAjB,CAArE,CAA0FC,KAAKA,QAAQ,EAAE,CAAClD,CAAAkC,OAAAe,OAAA,CAAgB,CAAA,CAAKjD,EAAjuCkC,OAAAR,YAA4sC,EAAqB1B,CAA3sC8B,MAAAO,SAAsrC,EAAyBhB,EAAA,CAAExB,CAAF,CAAI,CAAJ,CAA1B,CAAzG,CAA+I8C,WAAO,CAAC,MAAS3C,EAAlwCkC,OAAAR,YAAyvC,EAAS1B,CAA5uC8B,MAAAO,SAAkuC,CAAtJ,CAA7F,CAAmQxC,EAAAU,iBAAA,CAAmB,SAAnB,CAA6B,QAAQ,EAAE,CAAC,IAAIT,EAAE,CAACE,CAAAkC,OAAAf,IAAHrB,EAAiB,OAAjBA,GAA2BE,CAAAkC,OAAAf,IAAanB,EAAAkC,OAAAf,IAAA,EAAcnB,CAAAkC,OAAAf,IAAd,GAA6BtB,CAAAsB,IAA7B,GAAqCE,EAAA,CAAExB,CAAF,CAAI,CAAJ,CAAM,CAAA,CAAN,CAAA,CAAUG,CAAAkC,OAAAf,IAAV,CAAuBtB,CAAAsB,IAAvB,CAA6BrB,CAAA,CAAEE,CAAAkC,OAAAgB,KAAA,EAAF,CAAkBlD,CAAAmD,QAAA9C,KAAA,EAApF,CAA7C,CAAvC,CAA2L,CAAA,CAA3L,CAA+LR,EAAAU,iBAAA,CAAmB,uBAAnB;AAA2C,QAAQ,EAAE,CAACV,CAAAoD,OAAA,CAASlD,CAAT,EAAY,CAAZ,GAAgBC,CAAAkC,OAAAM,SAAAC,OAAhB,EAA0CzC,CAAAkC,OAAAQ,KAAA,EAA1C,EAA2D7C,CAAA+C,MAAA,EAAA,CAAU/C,CAAA,CAAEmD,EAAF,CAAA,EAArE,CAAD,CAArD,CAAqIjD,EAAjoB,GAAqoBF,CAAAU,iBAAA,CAAmB,qBAAnB,CAAyC,QAAQ,EAAE,CAACP,CAAAkC,OAAAR,YAAA,CAAqB7B,CAAA6B,YAAtB,CAAnD,CAAA,CAAyF7B,CAAAU,iBAAA,CAAmB,SAAnB,CAA6B,QAAQ,EAAE,CAAgC,CAA/B,CAAAoB,CAAAiC,QAAA,CAAU,GAAV,CAAc/D,CAAA6B,YAAd,CAA4B,CAA5B,CAAA,GAAmC1B,CAAAkC,OAAAR,YAAnC,CAAwD7B,CAAA6B,YAAxD,CAAD,CAAvC,CAA9tB,CAAf,CADlyD,IACizGJ,CADjzG,CACmzGuC,EAAE,QAAFA,EAAY,MAAOC,SAAnBD,EAA6B,YAA7BA,EAA4CC,SAAAC,KAAAC,MAA5CH,EAAiE,CAACI,UAAA,CAAW,iCAAX,CAAAC,QADr3G,CAC26GpB,EAAE,8BAD76G,CAC48GrB,GAAE,oCAD98G,CACm/GuB,GAAE,yCADr/G;AAC+hHM,GAAE,0CADjiH,CAC4kH3B,EAAE,EAD9kH,CACilHC,GAAE,CAAE,OAA3sBuC,SAAU,CAACtE,CAAD,CAAGC,CAAH,CAAK,CAAC,GAAG,IAAK,EAAL,GAASA,CAAT,GAAaA,CAAb,CAAe,EAAf,EAAoB,CAAAD,CAAA,CAAEiD,CAAF,CAAvB,CAA6B,GAAIhD,CAAAsE,WAAJ,EAAsBP,CAAtB,EAAmCQ,CAACvE,CAAAwE,KAAA,EAAQxE,CAAAyE,KAAR,CAAe,kBAAf,CAAkC,aAAnCF,MAAA,CAAuDG,SAAAC,UAAvD,CAAnC,CAAA,CAAuHxB,CAAApD,CAAAoD,OAAD,EAAWpD,CAAAkD,2BAAX,EAAyClD,CAAA+C,MAAA,EAAUW,GAAA,CAAE1D,CAAF,CAAI,CAACA,CAAA8D,MAAL,CAAjd,KAAI7D,EAA6dD,CAA3d,CAAEiD,CAAF,CAA2djD,EAAtd,CAAEmD,EAAF,CAAA,CAAsdnD,CAAjdqD,KAAidrD,EAA1c,CAAEyD,EAAF,CAAZ,CAAsdzD,CAArc+C,MAAqc/C,EAA7bqD,KAAzB,CAAgCL,EAAsbhD,EAApb+C,MAAlC,CAA0CS,CAAErD,GAAA,CAA0aH,CAA1a,CAAI,QAAJ,CAAaC,CAAAoC,OAAb,CAAuBlC,GAAA,CAAmZH,CAAnZ,CAAI,OAAJ,CAAYC,CAAAoC,OAAZ,CAAqB,CAAA,CAArB,CAAyBlC,GAAA,CAA0XH,CAA1X,CAAI,cAAJ,CAAmBC,CAAAoC,OAAnB,CAA4B,CAAA,CAA5B,CAAgClC,GAAA,CAA0VH,CAA1V,CAAI,OAAJ,CAAYC,CAAAoC,OAAZ,CAAsBlC,GAAA,CAAoUH,CAApU,CAAI,MAAJ,CAAWC,CAAAoC,OAAX,CAAoB,CAAA,CAApB,CAAwBnC,EAAA,CAA4SF,CAA5S,CAAI,SAAJ,CAAeE,EAAA,CAA6RF,CAA7R,CAAI,QAAJ,CAAcE,EAAA,CAA+QF,CAA/Q,CAAI,YAAJ;AAAiB4B,EAAjB,CAAmB,CAAA,CAAnB,CAAuB1B,EAAA,CAAwPF,CAAxP,CAAI,OAAJ,CAAY4B,EAAZ,CAAc,CAAA,CAAd,CAA2P5B,EAAA6E,UAAAC,IAAA,CAAgB,KAAhB,CAAuB9E,EAAA8D,MAA7F,EAAsG9D,CAAA+E,SAAtG,EAAkH/E,CAAAqD,KAAA,EAAS,mBAAAmB,KAAA,CAAwBG,SAAAK,SAAxB,CAA3H,EAAwKC,OAAAC,KAAA,CAAa,wEAAb,CAA9R,CAA9B,CADz5F,CAAV,ECiErB;SAAQ,EAAE,CAACC,QAASA,EAAC,CAAC7E,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAO,CAAC3C,CAAA+E,gBAAA,CAAkB,CAAE,KAAA,EAAM9E,CAAN,GAAU,QAAA,EAAU,MAAOA,EAAjB,EAAoB,WAApB,EAAiC,MAAOsB,EAAxC,CAA0C,IAAAyD,QAAA,CAAa/E,CAAb,CAA1C,CAA0D,QAAA,EAAU,MAAOA,EAAjB,CAAmB,IAAAgF,WAAA,CAAgBhF,CAAhB,CAAkBsB,CAAlB,CAAoBoB,CAApB,CAAnB,CAA0C,IAAA,EAAMpB,CAAN,EAAS,QAAT,EAAmB,MAAOtB,EAA1B,CAA4B,IAAAiF,WAAA,CAAgBjF,CAAhB,CAAkB,GAAlB,CAA5B,CAAmD,IAAAiF,WAAA,CAAgBjF,CAAhB,CAAkBsB,CAAlB,CAAjK,CAArB,CAA4MH,QAASA,EAAC,EAAE,CAAC,MAAO,KAAI0D,CAAJ,CAAM,IAAN,CAAW,IAAK,EAAhB,CAAkB,IAAK,EAAvB,CAAR,CAAkCK,QAASA,GAAC,CAAClF,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAOhD,CAAP,CAASK,CAAT,CAAW8C,CAAX,CAAa,CAAC,IAAA,CAAK,CAAL,EAAQ,EAAEA,CAAV,CAAA,CAAa,CAAC,IAAImB,EAAE1C,CAAF0C,CAAI,IAAA,CAAKhE,CAAA,EAAL,CAAJgE,CAActB,CAAA,CAAEhD,CAAF,CAAdsE,CAAmBjE,CAAEA,EAAA,CAAEoF,IAAAC,MAAA,CAAWpB,CAAX,CAAa,QAAb,CAAuBtB,EAAA,CAAEhD,CAAA,EAAF,CAAA,CAAOsE,CAAP,CAAS,QAA5D,CAAqE,MAAOjE,EAA1F,CAA4FsF,QAASA,GAAC,CAACrF,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAOhD,CAAP,CAASK,CAAT,CAAW8C,CAAX,CAAa,CAAC,IAAImB,EAAE1C,CAAF0C,CAAI,KAAM,KAAI1C,CAAJ,GAAQ,EAAR,CAAW,CAAX,EAAc,EAAEuB,CAAhB,CAAA,CAAmB,CAAA,IAAKyC,EAAE,IAAA,CAAKtF,CAAL,CAAFsF,CAAU,KAAf,CAAqBT,EAAE,IAAA,CAAK7E,CAAA,EAAL,CAAF6E,EAAa,EAAlC,CAAqCjF,EAAE0B,CAAF1B,CAAI0F,CAAJ1F,CAAMiF,CAANjF,CAAQoE,CAA7C,CAA+CsB;AAAEtB,CAAFsB,CAClfA,CADkfA,GAC9e1F,CAD8e0F,CAC5e,KAD4eA,GACpe,EADoeA,EAChe5C,CAAA,CAAEhD,CAAF,CADge4F,EAC1dvF,CAD0duF,CACxd,UADwdA,CAC5cvF,EAAA,EAAGuF,CAAH,GAAO,EAAP,GAAY1F,CAAZ,GAAgB,EAAhB,EAAoB0B,CAApB,CAAsBuD,CAAtB,EAAyB9E,CAAzB,GAA6B,EAA7B,CAAiC2C,EAAA,CAAEhD,CAAA,EAAF,CAAA,CAAO4F,CAAP,CAAS,UADmX,CACxW,MAAOvF,EAD+T,CAC7T0B,QAASA,GAAC,CAACzB,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAOhD,CAAP,CAASK,CAAT,CAAW8C,CAAX,CAAa,CAAC,IAAImB,EAAE1C,CAAF0C,CAAI,KAAM,KAAI1C,CAAJ,GAAQ,EAAR,CAAW,CAAX,EAAc,EAAEuB,CAAhB,CAAA,CAAmB,CAAA,IAAKyC,EAAE,IAAA,CAAKtF,CAAL,CAAFsF,CAAU,KAAf,CAAqBT,EAAE,IAAA,CAAK7E,CAAA,EAAL,CAAF6E,EAAa,EAAlC,CAAqCjF,EAAE0B,CAAF1B,CAAI0F,CAAJ1F,CAAMiF,CAANjF,CAAQoE,CAA7C,CAA+CsB,EAAEtB,CAAFsB,CAAIA,CAAJA,GAAQ1F,CAAR0F,CAAU,KAAVA,GAAkB,EAAlBA,EAAsB5C,CAAA,CAAEhD,CAAF,CAAtB4F,CAA2BvF,CAAEA,EAAA,EAAGuF,CAAH,EAAM,EAAN,GAAW1F,CAAX,EAAc,EAAd,EAAkB0B,CAAlB,CAAoBuD,CAAEnC,EAAA,CAAEhD,CAAA,EAAF,CAAA,CAAO4F,CAAP,CAAS,SAA3G,CAAqH,MAAOvF,EAA9J,CAAgKwF,QAASA,GAAC,CAACvF,CAAD,CAAGsB,CAAH,CAAK,CAAC,IAAIoB,EAAE8C,EAAA,CAAExF,CAAAyF,WAAA,CAAanE,CAAb,CAAF,CAAmB,OAAO,KAAA,EAAMoB,CAAN,CAAS,EAAT,CAAWA,CAA5C,CAA8CgD,QAASA,GAAC,CAAC1F,CAAD,CAAG,CAAC,IAAIsB,EAAEH,CAAA,EAAIG,EAAAyD,QAAA,CAAU/E,CAAV,CAAa,OAAOsB,EAA/B,CAAiC6B,QAASA,EAAC,CAACnD,CAAD,CAAG,CAAA,IAAKsB,EAAE,CAAP,CAASoB,CAAE,EAAA,GAAIA,CAAJ,CAAM1C,CAAN,GAAU,EAAV,IAAgBA,CAAA,CAAE0C,CAAF,CAAIpB,CAAJ,EAAO,EAAvB,CAA2B,EAAA,GAAIoB,CAAJ,CAAM1C,CAAN,EAAS,CAAT,IAAcA,CAAA,CAAE0C,CAAF,CAAIpB,CAAJ,EAAO,CAArB,CAAwB,EAAA,GAAIoB,CAAJ,CAAM1C,CAAN,EAAS,CAAT,IAAcA,CAAA,CAAE0C,CAAF,CAAIpB,CAAJ,EAAO,CAArB,CAAwB,EAAA,GAAIoB,CAAJ;AAAM1C,CAAN,EAAS,CAAT,IACxeA,CAAA,CAAE0C,CAAF,CAAIpB,CAAJ,EAAO,CADie,CAC9d,EAAA,EAAGtB,CAAH,EAAM,CAAN,GAAUsB,CAAV,EAAa,CAAb,CAAgB,OAAOA,EADiX,CAC/WqE,QAASA,GAAC,CAAC3F,CAAD,CAAG,CAAC,IAAAmB,EAAA,CAAOnB,CAAR,CAAU4F,QAASA,EAAC,CAAC5F,CAAD,CAAG,CAAC,IAAAmB,EAAA,CAAOnB,CAAE,KAAA6F,GAAA,CAAQ7F,CAAA8F,SAAA,EAAa,KAAAC,IAAA,CAAS,IAAAF,GAAT,CAAiB,KAAM,KAAAG,IAAA,CAAS,IAAAH,GAAT,EAAkB,EAAG,KAAAI,GAAA,EAAS,CAAT,EAAYjG,CAAAkG,GAAZ,CAAiB,EAAjB,EAAqB,CAAE,KAAAC,IAAA,CAAS,CAAT,CAAWnG,CAAAF,EAA7G,CAAiHsG,QAASA,GAAC,CAACpG,CAAD,CAAGsB,CAAH,CAAK,CAAC,MAAOtB,EAAP,CAASsB,CAAV,CAAY+E,QAASA,EAAC,CAACrG,CAAD,CAAGsB,CAAH,CAAK,CAAC,MAAOtB,EAAP,CAASsB,CAAV,CAAYgF,QAASA,EAAC,CAACtG,CAAD,CAAGsB,CAAH,CAAK,CAAC,MAAOtB,EAAP,CAASsB,CAAV,CAAYiF,QAASA,EAAC,CAACvG,CAAD,CAAGsB,CAAH,CAAK,CAAC,MAAOtB,EAAP,CAAS,CAACsB,CAAX,CAAakF,QAASA,GAAC,EAAE,EAAEC,QAASA,GAAC,CAACzG,CAAD,CAAG,CAAC,MAAOA,EAAR,CAAU0G,QAASA,GAAC,CAAC1G,CAAD,CAAG,CAAC,IAAA2G,GAAA,CAAQxF,CAAA,EAAI,KAAAyF,GAAA,CAAQzF,CAAA,EAAI0D,EAAAgC,IAAAC,UAAA,CAAgB,CAAhB,CAAkB9G,CAAAF,EAAlB,CAAsB,IAAA6G,GAAtB,CAA+B,KAAAI,GAAA,CAAQ,IAAAJ,GAAAK,OAAA,CAAehH,CAAf,CAAkB,KAAAmB,EAAA,CAAOnB,CAAzF,CAF7U,IAE4aD,EAAE,CAACkH,UAAU,CAAA,CAAX,CAAcC,QAAQ,CAAA,CAAtB,CAF9a,CAEwcC,GAAE,CAAA,CAAG,YAAA,GAAc,MAAOC,OAArB;AACxdA,MAAAC,QADwd,EACxcD,MAAAC,QAAA,CAAetH,CAAf,CAAiBoH,EAAjB,CAAmB,CAAA,CADqb,EACjb,WAAA,GAAc,MAAOxD,SAArB,CAA8B2D,MAAAC,WAA9B,CAAgDxH,CAAhD,CAAkDyH,IAAAD,WAAlD,CAAkExH,CAAE,KAAI0H,CAAE,IAAGN,EAAH,CAAKtH,EAAW,CAAT,QAAS,CAAA4H,CAAA,CAAE,UAAlB,KAAiC,CAAC,IAAI5H,GAAEwE,SAAAC,UAAAoD,SAAA,EAAAC,YAAA,EAA6CF,EAAA,CAAEpD,SAAAuD,QAAtD,CAHvI,IAGmNC,CAHnN,CAGqNC,EAHrN,CAGuNC,EAHvN,CAGyNC,EAHzN,CAG2NC,EAH3N,CAG6NC,EAAEL,EAAA,CAAG,EAAD,EAAIhI,EAAA4D,QAAA,CAAU,QAAV,CAAJ,EAA0B,EAA1B,EAA6B5D,EAAA4D,QAAA,CAAU,UAAV,CAA7B,CAAmD,CAAnD,CAAqD,CAAE0D,GAAA,CAAG,EAAD,EAAItH,EAAA4D,QAAA,CAAU,UAAV,CAAJ,CAA0B,CAA1B,CAA4B,CAAEqE,GAAA,CAAG,EAAD,EAAIjI,EAAA4D,QAAA,CAAU,QAAV,CAAJ,EAA0B,EAA1B,EAA6B5D,EAAA4D,QAAA,CAAU,QAAV,CAA7B,EAAmD,EAAnD,EAAsD5D,EAAA4D,QAAA,CAAU,UAAV,CAAtD,CAA4E,CAA5E,CAA8E,CAAEsE,GAAA,CAAG,EAAD,EAAIlI,EAAA4D,QAAA,CAAU,SAAV,CAAJ,CAAyB,CAAzB,CAA2B,CAAE5D,GAAA4D,QAAA,CAAU,YAAV,CAAwB5D,GAAA4D,QAAA,CAAU,YAAV,CAAwB5D;EAAA4D,QAAA,CAAU,WAAV,CACpeuE,GAAA,CAAG,EAAD,EAAInI,EAAA4D,QAAA,CAAU,OAAV,CAAJ,CAAuB,CAAvB,CAAyB,CAAE5D,GAAA4D,QAAA,CAAU,SAAV,CAAqB5D,GAAA4D,QAAA,CAAU,QAAV,CAAoBwE,GAAA,CAAG,EAAD,EAAIpI,EAAA4D,QAAA,CAAU,QAAV,CAAJ,CAAwB,CAAxB,CAA0B,CAAEyE,GAAA,CAAG,EAAD,EAAIrI,EAAA4D,QAAA,CAAU,QAAV,CAAJ,CAAwB,CAAxB,CAA0B,CAAE5D,GAAA,CAAG,EAAD,EAAIA,EAAA4D,QAAA,CAAU,OAAV,CAAJ,CAAuB,CAAvB,CAAyB,CAAE1D,EAAA+E,gBAAA,CAAkB,IAAK,8BAAA,EAA+B2C,CAA/B,EAAkC5C,CAAAsD,UAAAC,GAAA,CAAe/C,EAAf,CAAiBoC,CAAjB,CAAmB,EAArD,EAAyD,UAAA,EAAYA,CAAZ,EAAe5C,CAAAsD,UAAAC,GAAA,CAAelD,EAAf,CAAiBuC,CAAjB,CAAmB,EAAlC,GAAuC5C,CAAAsD,UAAAC,GAAA,CAAe3G,EAAf,CAAiBgG,CAAjB,CAAmB,EAA1D,CAA8D5C,EAAAsD,UAAAjC,GAAA,CAAeuB,CAAE5C,EAAAsD,UAAAE,GAAA,EAAgB,CAAhB,EAAmBZ,CAAnB,EAAsB,CAAE5C,EAAAsD,UAAAG,GAAA,CAAe,CAAf,EAAkBb,CAAE5C,EAAAsD,UAAAI,GAAA,CAAepD,IAAAqD,IAAA,CAAS,CAAT,CAAW,EAAX,CAAe3D,EAAAsD,UAAAM,GAAA,CAAe,EAAf,CAAkBhB,CAAE5C,EAAAsD,UAAAO,GAAA,CAAe,CAAf,CAAiBjB,CAAjB,CAAmB,EAJpa,KAI2ajC,GAAE,EAJ7a,CAIgbhE,EAAEiG,EAAA,CAAE,EAAG,KAAIjG,EAAJ,CAAM,CAAN,CAAQ,CAAR;AAAWA,EAAX,CAAa,EAAEA,EAAf,CAAiBgE,EAAA,CAAEiC,CAAA,EAAF,CAAA,CAAOjG,EAAEiG,EAAA,CAAE,EAAG,KAAIjG,EAAJ,CAAM,EAAN,CAAS,EAAT,CAAYA,EAAZ,CAAc,EAAEA,EAAhB,CAAkBgE,EAAA,CAAEiC,CAAA,EAAF,CAAA,CACnfjG,EAAEiG,EAAA,CAAE,EAAG,KAAIjG,EAAJ,CAAM,EAAN,CAAS,EAAT,CAAYA,EAAZ,CAAc,EAAEA,EAAhB,CAAkBgE,EAAA,CAAEiC,CAAA,EAAF,CAAA,CAAOjG,EAAEmE,GAAAwC,UAAAQ,QAAA,CAAoBC,QAAQ,CAAC5I,CAAD,CAAG,CAAC,MAAO,EAAA,CAAEA,CAAA0B,EAAF,EAAO,CAAP,EAAU1B,CAAA6I,UAAA,CAAY,IAAA1H,EAAZ,CAAV,CAA8BnB,CAAA8I,IAAA,CAAM,IAAA3H,EAAN,CAA9B,CAA4CnB,CAApD,CAAuD2F,GAAAwC,UAAAY,OAAA,CAAmBC,QAAQ,CAAChJ,CAAD,CAAG,CAAC,MAAOA,EAAR,CAAW2F,GAAAwC,UAAAc,OAAA,CAAmBC,QAAQ,CAAClJ,CAAD,CAAG,CAACA,CAAAmJ,SAAA,CAAW,IAAAhI,EAAX,CAAkB,IAAlB,CAAuBnB,CAAvB,CAAD,CAA4B2F,GAAAwC,UAAAiB,MAAA,CAAkBC,QAAQ,CAACrJ,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAO,CAAC1C,CAAAsJ,WAAA,CAAahI,CAAb,CAAeoB,CAAf,CAAkB,KAAAuG,OAAA,CAAYvG,CAAZ,CAAnB,CAAmCiD,GAAAwC,UAAAoB,MAAA,CAAkBC,QAAQ,CAACxJ,CAAD,CAAGsB,CAAH,CAAK,CAACtB,CAAAyJ,SAAA,CAAWnI,CAAX,CAAc,KAAA2H,OAAA,CAAY3H,CAAZ,CAAf,CAA+BsE,EAAAuC,UAAAQ,QAAA,CAAoBe,QAAQ,CAAC1J,CAAD,CAAG,CAAC,IAAIsB,EAAEH,CAAA,EAAInB,EAAA2J,IAAA,EAAA7C,UAAA,CAAkB,IAAA3F,EAAArB,EAAlB,CAA2BwB,CAA3B,CAA8BA,EAAA6H,SAAA,CAAW,IAAAhI,EAAX;AAAkB,IAAlB,CAAuBG,CAAvB,CAA0B,EAAA,CAAEtB,CAAA0B,EAAF,EAAO,CAAP,CAASJ,CAAAuH,UAAA,CAAYhE,CAAA+E,KAAZ,CAAT,EAA8B,IAAAzI,EAAA0I,MAAA,CAAavI,CAAb,CAAeA,CAAf,CAAkB,OAAOA,EAA1H,CAC5XsE,EAAAuC,UAAAY,OAAA,CAAmBe,QAAQ,CAAC9J,CAAD,CAAG,CAAC,IAAIsB,EAAEH,CAAA,EAAInB,EAAA+J,OAAA,CAASzI,CAAT,CAAY,KAAA2H,OAAA,CAAY3H,CAAZ,CAAe,OAAOA,EAA7C,CAAgDsE,EAAAuC,UAAAc,OAAA,CAAmBe,QAAQ,CAAChK,CAAD,CAAG,CAAC,IAAA,CAAKA,CAAAF,EAAL,EAAU,IAAAqG,IAAV,CAAA,CAAoBnG,CAAA,CAAEA,CAAAF,EAAA,EAAF,CAAA,CAAS,CAAE,KAAI,IAAIwB,EAAE,CAAV,CAAYA,CAAZ,CAAc,IAAAH,EAAArB,EAAd,CAAuB,EAAEwB,CAAzB,CAA2B,CAAA,IAAKoB,EAAE1C,CAAA,CAAEsB,CAAF,CAAFoB,CAAO,KAAZ,CAAkBhD,EAAEgD,CAAFhD,CAAI,IAAAqG,IAAJrG,GAAegD,CAAfhD,CAAiB,IAAAsG,IAAjBtG,EAA2BM,CAAA,CAAEsB,CAAF,CAA3B5B,EAAiC,EAAjCA,EAAqC,IAAAqG,IAArCrG,CAA8C,IAAAuG,GAA9CvG,GAAwD,EAAxDA,EAA4DM,CAAAqI,GAA9E,CAAmF3F,EAAEpB,CAAFoB,CAAI,IAAAvB,EAAArB,EAAS,KAAIE,CAAA,CAAE0C,CAAF,CAAJ,EAAU,IAAAvB,EAAAiH,GAAA,CAAU,CAAV,CAAY1I,CAAZ,CAAcM,CAAd,CAAgBsB,CAAhB,CAAkB,CAAlB,CAAoB,IAAAH,EAAArB,EAApB,CAAV,CAAwCE,CAAA,CAAE0C,CAAF,CAAxC,EAA8C1C,CAAAsI,GAA9C,CAAA,CAAoDtI,CAAA,CAAE0C,CAAF,CAAW,EAAL1C,CAAAsI,GAAK,CAAAtI,CAAA,CAAE,EAAE0C,CAAJ,CAAA,EAA/J,CAAwK1C,CAAAiK,MAAA,EAAUjK,EAAAkK,UAAA,CAAY,IAAA/I,EAAArB,EAAZ,CAAqBE,CAArB,CAAwB,EAAA,EAAGA,CAAA6I,UAAA,CAAY,IAAA1H,EAAZ,CAAH,EAAwBnB,CAAA6J,MAAA,CAAQ,IAAA1I,EAAR,CAAenB,CAAf,CAA7R,CAAgT4F,EAAAuC,UAAAiB,MAAA,CAAkBe,QAAQ,CAACnK,CAAD;AAAGsB,CAAH,CAAKoB,CAAL,CAAO,CAAC1C,CAAAsJ,WAAA,CAAahI,CAAb,CAAeoB,CAAf,CAAkB,KAAAuG,OAAA,CAAYvG,CAAZ,CAAnB,CAAmCkD,EAAAuC,UAAAoB,MAAA,CAAkBa,QAAQ,CAACpK,CAAD,CAC1fsB,CAD0f,CACxf,CAACtB,CAAAyJ,SAAA,CAAWnI,CAAX,CAAc,KAAA2H,OAAA,CAAY3H,CAAZ,CAAf,CAA+BuD,EAAAsD,UAAA4B,OAAA,CAAmBM,QAAQ,CAACrK,CAAD,CAAG,CAAC,IAAI,IAAIsB,EAAE,IAAAxB,EAAFwB,CAAS,CAAjB,CAAmB,CAAnB,EAAsBA,CAAtB,CAAwB,EAAEA,CAA1B,CAA4BtB,CAAA,CAAEsB,CAAF,CAAA,CAAK,IAAA,CAAKA,CAAL,CAAQtB,EAAAF,EAAA,CAAI,IAAAA,EAAOE,EAAA0B,EAAA,CAAI,IAAAA,EAAzD,CAAiEmD,EAAAsD,UAAApD,QAAA,CAAoBuF,QAAQ,CAACtK,CAAD,CAAG,CAAC,IAAAF,EAAA,CAAO,CAAE,KAAA4B,EAAA,CAAO,CAAA,CAAE1B,CAAF,CAAK,EAAL,CAAO,CAAE,EAAA,CAAEA,CAAF,CAAI,IAAA,CAAK,CAAL,CAAJ,CAAYA,CAAZ,CAAe,EAAD,CAAGA,CAAH,CAAK,IAAA,CAAK,CAAL,CAAL,CAAaA,CAAb,CAAe,IAAAsI,GAAf,CAAuB,IAAAxI,EAAvB,CAA8B,CAAtE,CAAyE+E,EAAAsD,UAAAlD,WAAA,CAAuBsF,QAAQ,CAACvK,CAAD,CAAGsB,CAAH,CAAK,CAAC,IAAIoB,CAAE,IAAG,EAAH,EAAOpB,CAAP,CAASoB,CAAA,CAAE,CAAX,KAAkB,IAAG,CAAH,EAAMpB,CAAN,CAAQoB,CAAA,CAAE,CAAV,KAAiB,IAAG,GAAH,EAAQpB,CAAR,CAAUoB,CAAA,CAAE,CAAZ,KAAmB,IAAG,CAAH,EAAMpB,CAAN,CAAQoB,CAAA,CAAE,CAAV,KAAiB,IAAG,EAAH,EAAOpB,CAAP,CAASoB,CAAA,CAAE,CAAX,KAAkB,IAAG,CAAH,EAAMpB,CAAN,CAAQoB,CAAA,CAAE,CAAV,KAAgB,CAAC,IAAA8H,UAAA,CAAexK,CAAf,CAAiBsB,CAAjB,CAAoB,OAArB,CAA4B,IAAAI,EAAA,CAAO,IAAA5B,EAAP,CAAc,CAAE,KAA5J,IAAoKJ;AAAEM,CAAAsC,OAAtK,CAA+KvC,EAAE,CAAA,CAAjL,CAAoL8C,EAAE,CAA1B,CAA4B,CAA5B,EAA+B,EAAEnD,CAAjC,CAAA,CAAoC,CAAC,IAAIiD,EAAE,CAAA,EAAGD,CAAH,CAAK1C,CAAA,CAAEN,CAAF,CAAL,CAAU,GAAV,CAAc6F,EAAA,CAAEvF,CAAF,CAAIN,CAAJ,CAAO,EAAA,CAAEiD,CAAF,CAAI,GAAJ,EAAS3C,CAAAyK,OAAA,CAAS/K,CAAT,CAAT,GACveK,CADue,CACre,CAAA,CADqe,GACheA,CAAA,CAAE,CAAA,CAAF,CAAK,CAAA,EAAG8C,CAAH,CAAK,IAAA,CAAK,IAAA/C,EAAA,EAAL,CAAL,CAAoB6C,CAApB,CAAsBE,CAAA,CAAEH,CAAF,CAAI,IAAAwD,GAAJ,EAAa,IAAA,CAAK,IAAApG,EAAL,CAAY,CAAZ,CAAA,GAAiB6C,CAAjB,EAAoB,CAApB,EAAuB,IAAAuD,GAAvB,CAA+BrD,CAA/B,EAAkC,CAAlC,GAAsCA,CAAtC,CAAwC,IAAA,CAAK,IAAA/C,EAAA,EAAL,CAAxC,CAAuD6C,CAAvD,EAA0D,IAAAuD,GAA1D,CAAkErD,CAA/E,EAAkF,IAAA,CAAK,IAAA/C,EAAL,CAAY,CAAZ,CAAlF,EAAkG6C,CAAlG,EAAqGE,CAAhI,CAAkIA,CAAlI,EAAqIH,CAArI,CAAuIG,CAAvI,EAA0I,IAAAqD,GAA1I,GAAoJrD,CAApJ,EAAuJ,IAAAqD,GAAvJ,CADge,CAA5B,CACnS,CAAA,EAAGxD,CAAH,EAAM,CAAN,GAAU1C,CAAA,CAAE,CAAF,CAAV,CAAe,GAAf,IAAsB,IAAA0B,EAAA,CAAQ,EAAR,CAAU,CAAV,CAAYmB,CAAZ,GAAgB,IAAA,CAAK,IAAA/C,EAAL,CAAY,CAAZ,CAAhB,GAAiC,CAAjC,EAAoC,IAAAoG,GAApC,CAA4CrD,CAA5C,EAA+C,CAA/C,EAAkDA,CAAlD,CAAtB,CAA4E,KAAAoH,MAAA,EAAalK,EAAA,EAAG8E,CAAA+E,KAAAC,MAAA,CAAa,IAAb,CAAkB,IAAlB,CADO,CACkBhF,EAAAsD,UAAA8B,MAAA,CAAkBS,QAAQ,EAAE,CAAC,IAAI,IAAI1K,EAAE,IAAA0B,EAAF1B,CAAS,IAAAqI,GAAjB,CAAyB,CAAzB,CAA2B,IAAAvI,EAA3B,EAAmC,IAAA,CAAK,IAAAA,EAAL,CAAY,CAAZ,CAAnC,EAAmDE,CAAnD,CAAA,CAAsD,EAAE,IAAAF,EAAzD,CAAiE+E,EAAAsD,UAAArB,UAAA,CAAsB6D,QAAQ,CAAC3K,CAAD,CAAGsB,CAAH,CAAK,CAAC,IAAIoB,CAAE,KAAIA,CAAJ;AAAM,IAAA5C,EAAN,CAAa,CAAb,CAAe,CAAf,EAAkB4C,CAAlB,CAAoB,EAAEA,CAAtB,CAAwBpB,CAAA,CAAEoB,CAAF,CAAI1C,CAAJ,CAAA,CAAO,IAAA,CAAK0C,CAAL,CAAQ,KAAIA,CAAJ,CAAM1C,CAAN,CAAQ,CAAR,CAAU,CAAV,EAAa0C,CAAb,CAAe,EAAEA,CAAjB,CAAmBpB,CAAA,CAAEoB,CAAF,CAAA,CAAK,CAAEpB,EAAAxB,EAAA,CAAI,IAAAA,EAAJ,CAAWE,CAAEsB,EAAAI,EAAA,CACnf,IAAAA,EAD8Z,CACtZmD,EAAAsD,UAAA+B,UAAA,CAAsBU,QAAQ,CAAC5K,CAAD,CAAGsB,CAAH,CAAK,CAAC,IAAI,IAAIoB,EAAE1C,CAAV,CAAY0C,CAAZ,CAAc,IAAA5C,EAAd,CAAqB,EAAE4C,CAAvB,CAAyBpB,CAAA,CAAEoB,CAAF,CAAI1C,CAAJ,CAAA,CAAO,IAAA,CAAK0C,CAAL,CAAQpB,EAAAxB,EAAA,CAAIqF,IAAA0F,IAAA,CAAS,IAAA/K,EAAT,CAAgBE,CAAhB,CAAkB,CAAlB,CAAqBsB,EAAAI,EAAA,CAAI,IAAAA,EAAtE,CAA8EmD,EAAAsD,UAAA2C,SAAA,CAAqBC,QAAQ,CAAC/K,CAAD,CAAGsB,CAAH,CAAK,CAAA,IAAKoB,EAAE1C,CAAF0C,CAAI,IAAAwD,GAAT,CAAiBxG,EAAE,IAAAwG,GAAFxG,CAAUgD,CAA3B,CAA6B3C,GAAG,CAAHA,EAAML,CAANK,EAAS,CAAtC,CAAwC8C,EAAEsC,IAAAC,MAAA,CAAWpF,CAAX,CAAa,IAAAkG,GAAb,CAA1C,CAAgEvD,EAAE,IAAAjB,EAAFiB,EAAUD,CAAVC,CAAY,IAAA0F,GAA5E,CAAoF/C,CAAE,KAAIA,CAAJ,CAAM,IAAAxF,EAAN,CAAa,CAAb,CAAe,CAAf,EAAkBwF,CAAlB,CAAoB,EAAEA,CAAtB,CAAwBhE,CAAA,CAAEgE,CAAF,CAAIzC,CAAJ,CAAM,CAAN,CAAsB,CAAb,IAAA,CAAKyC,CAAL,CAAa,EAAJ5F,CAAI,CAAFiD,CAAE,CAAAA,CAAA,EAAG,IAAA,CAAK2C,CAAL,CAAH,CAAWvF,CAAX,GAAe2C,CAAE,KAAI4C,CAAJ,CAAMzC,CAAN,CAAQ,CAAR,CAAU,CAAV,EAAayC,CAAb,CAAe,EAAEA,CAAjB,CAAmBhE,CAAA,CAAEgE,CAAF,CAAA,CAAK,CAAEhE,EAAA,CAAEuB,CAAF,CAAA,CAAKF,CAAErB,EAAAxB,EAAA,CAAI,IAAAA,EAAJ,CAAW+C,CAAX,CAAa,CAAEvB,EAAAI,EAAA,CAAI,IAAAA,EAAOJ,EAAA2I,MAAA,EAAhN,CAA2NpF,EAAAsD,UAAA6C,SAAA,CAAqBC,QAAQ,CAACjL,CAAD,CAAGsB,CAAH,CAAK,CAACA,CAAAI,EAAA,CAAI,IAAAA,EAAO,KAAIgB;AAAEyC,IAAAC,MAAA,CAAWpF,CAAX,CAAa,IAAAkG,GAAb,CAAsB,IAAGxD,CAAH,EAAM,IAAA5C,EAAN,CAAawB,CAAAxB,EAAA,CAAI,CAAjB,KAAuB,CAAA,IAAKJ,EAAEM,CAAFN,CAAI,IAAAwG,GAAT,CAAiBnG,EAAE,IAAAmG,GAAFnG,CAAUL,CAA3B,CAA6BmD,GACnf,CADmfA,EAChfnD,CADgfmD,EAC7e,CAAEvB,EAAA,CAAE,CAAF,CAAA,CAAK,IAAA,CAAKoB,CAAL,CAAL,EAAchD,CAAE,KAAI,IAAIiD,EAAED,CAAFC,CAAI,CAAZ,CAAcA,CAAd,CAAgB,IAAA7C,EAAhB,CAAuB,EAAE6C,CAAzB,CAA2BrB,CAAA,CAAEqB,CAAF,CAAID,CAAJ,CAAM,CAAN,CAAyB,GAAd,IAAA,CAAKC,CAAL,CAAc,CAANE,CAAM,GAAF9C,CAAE,CAAAuB,CAAA,CAAEqB,CAAF,CAAID,CAAJ,CAAA,CAAO,IAAA,CAAKC,CAAL,CAAP,EAAgBjD,CAAE,EAAA,CAAEA,CAAF,GAAM4B,CAAA,CAAE,IAAAxB,EAAF,CAAS4C,CAAT,CAAW,CAAX,CAAN,GAAsB,IAAAhB,EAAtB,CAA6BmB,CAA7B,GAAiC9C,CAAjC,CAAoCuB,EAAAxB,EAAA,CAAI,IAAAA,EAAJ,CAAW4C,CAAEpB,EAAA2I,MAAA,EADuU,CAA/D,CAC5PpF,EAAAsD,UAAA0B,MAAA,CAAkBqB,QAAQ,CAAClL,CAAD,CAAGsB,CAAH,CAAK,CAAC,IAAD,IAASoB,EAAE,CAAX,CAAahD,EAAE,CAAf,CAAiBK,EAAEoF,IAAAgG,IAAA,CAASnL,CAAAF,EAAT,CAAa,IAAAA,EAAb,CAAlB,CAAuC4C,CAAvC,CAAyC3C,CAAzC,CAAA,CAA4CL,CAAiC,EAA9B,IAAA,CAAKgD,CAAL,CAA8B,CAAtB1C,CAAA,CAAE0C,CAAF,CAAsB,CAAjBpB,CAAA,CAAEoB,CAAA,EAAF,CAAiB,CAAVhD,CAAU,CAAR,IAAA2I,GAAQ,CAAA3I,CAAA,GAAI,IAAAwG,GAAQ,IAAGlG,CAAAF,EAAH,CAAO,IAAAA,EAAP,CAAc,CAAC,IAAIJ,CAAJ,EAAOM,CAAA0B,EAAP,CAAWgB,CAAX,CAAa,IAAA5C,EAAb,CAAA,CAAqBJ,CAA4B,EAAzB,IAAA,CAAKgD,CAAL,CAAyB,CAAjBpB,CAAA,CAAEoB,CAAA,EAAF,CAAiB,CAAVhD,CAAU,CAAR,IAAA2I,GAAQ,CAAA3I,CAAA,GAAI,IAAAwG,GAAQxG,EAAA,EAAG,IAAAgC,EAAjE,CAAd,IAA0F,CAAC,IAAIhC,CAAJ,EAAO,IAAAgC,EAAP,CAAcgB,CAAd,CAAgB1C,CAAAF,EAAhB,CAAA,CAAqBJ,CAAyB,EAAtBM,CAAA,CAAE0C,CAAF,CAAsB,CAAjBpB,CAAA,CAAEoB,CAAA,EAAF,CAAiB,CAAVhD,CAAU,CAAR,IAAA2I,GAAQ,CAAA3I,CAAA,GAAI,IAAAwG,GAAQxG;CAAA,EAAGM,CAAA0B,EAA9D,CAAkEJ,CAAAI,EAAA,CAAI,CAAA,CAAEhC,CAAF,CAAK,EAAL,CAAO,CAAG,GAAD,CAAGA,CAAH,CAAK4B,CAAA,CAAEoB,CAAA,EAAF,CAAL,CAAY,IAAA4F,GAAZ,CAAoB5I,CAApB,CAAsB,CAAtB,CAAwBA,CAAxB,GAA4B4B,CAAA,CAAEoB,CAAA,EAAF,CAA5B,CAAmChD,CAAnC,CAAsC4B,EAAAxB,EAAA,CAAI4C,CAAEpB,EAAA2I,MAAA,EAA/S,CAC3LpF,EAAAsD,UAAAmB,WAAA,CAAuB8B,QAAQ,CAACpL,CAAD,CAAGsB,CAAH,CAAK,CAAA,IAAKoB,EAAE,IAAAiH,IAAA,EAAP,CAAkBjK,EAAEM,CAAA2J,IAAA,EAApB,CAA4B5J,EAAE2C,CAAA5C,EAAI,KAAIwB,CAAAxB,EAAJ,CAAQC,CAAR,CAAUL,CAAAI,EAAV,CAAc,CAAd,EAAiB,EAAEC,CAAnB,CAAA,CAAsBuB,CAAA,CAAEvB,CAAF,CAAA,CAAK,CAAE,KAAIA,CAAJ,CAAM,CAAN,CAAQA,CAAR,CAAUL,CAAAI,EAAV,CAAc,EAAEC,CAAhB,CAAkBuB,CAAA,CAAEvB,CAAF,CAAI2C,CAAA5C,EAAJ,CAAA,CAAS4C,CAAA0F,GAAA,CAAK,CAAL,CAAO1I,CAAA,CAAEK,CAAF,CAAP,CAAYuB,CAAZ,CAAcvB,CAAd,CAAgB,CAAhB,CAAkB2C,CAAA5C,EAAlB,CAAuBwB,EAAAI,EAAA,CAAI,CAAEJ,EAAA2I,MAAA,EAAU,KAAAvI,EAAA,EAAQ1B,CAAA0B,EAAR,EAAamD,CAAA+E,KAAAC,MAAA,CAAavI,CAAb,CAAeA,CAAf,CAA9I,CAAiKuD,EAAAsD,UAAAsB,SAAA,CAAqB4B,QAAQ,CAACrL,CAAD,CAAG,CAAC,IAAD,IAASsB,EAAE,IAAAqI,IAAA,EAAX,CAAsBjH,EAAE1C,CAAAF,EAAF4C,CAAM,CAANA,CAAQpB,CAAAxB,EAA7B,CAAiC,CAAjC,EAAoC,EAAE4C,CAAtC,CAAA,CAAyC1C,CAAA,CAAE0C,CAAF,CAAA,CAAK,CAAE,KAAIA,CAAJ,CAAM,CAAN,CAAQA,CAAR,CAAUpB,CAAAxB,EAAV,CAAc,CAAd,CAAgB,EAAE4C,CAAlB,CAAoB,CAAC,IAAIhD,EAAE4B,CAAA8G,GAAA,CAAK1F,CAAL,CAAOpB,CAAA,CAAEoB,CAAF,CAAP,CAAY1C,CAAZ,CAAc,CAAd,CAAgB0C,CAAhB,CAAkB,CAAlB,CAAoB,CAApB,CAAuB,EAAC1C,CAAA,CAAE0C,CAAF,CAAIpB,CAAAxB,EAAJ,CAAD,EAAWwB,CAAA8G,GAAA,CAAK1F,CAAL,CAAO,CAAP,CAAS,CAAT,CAAWpB,CAAA,CAAEoB,CAAF,CAAX,CAAgB1C,CAAhB,CAAkB,CAAlB,CAAoB0C,CAApB,CAAsB,CAAtB,CAAwBhD,CAAxB,CAA0B4B,CAAAxB,EAA1B,CAA8B4C,CAA9B,CAAgC,CAAhC,CAAX,GAAgDpB,CAAAgH,GAAhD,GAAuDtI,CAAA,CAAE0C,CAAF,CAAIpB,CAAAxB,EAAJ,CAAA,EAAUwB,CAAAgH,GAAV,CAAetI,CAAA,CAAE0C,CAAF,CAAIpB,CAAAxB,EAAJ,CAAQ,CAAR,CAAf,CAA0B,CAAjF,CAA9B,CAAkH,CAAA,CAAEE,CAAAF,EAAF,GAAQE,CAAA,CAAEA,CAAAF,EAAF;AAAM,CAAN,CAAR,EAAkBwB,CAAA8G,GAAA,CAAK1F,CAAL,CAAOpB,CAAA,CAAEoB,CAAF,CAAP,CAAY1C,CAAZ,CAAc,CAAd,CAAgB0C,CAAhB,CAAkB,CAAlB,CAAoB,CAApB,CAAlB,CAA0C1C,EAAA0B,EAAA,CAAI,CAAE1B,EAAAiK,MAAA,EAAvO,CAAkPpF,EAAAsD,UAAAgB,SAAA,CAAqBmC,QAAQ,CAACtL,CAAD,CACpfsB,CADof,CAClfoB,CADkf,CAChf,CAAC,IAAIhD,EAAEM,CAAA2J,IAAA,EAAQ,IAAK,EAAA,CAAA,EAAGjK,CAAAI,EAAH,CAAL,CAAa,CAAC,IAAIC,EAAE,IAAA4J,IAAA,EAAW,IAAG5J,CAAAD,EAAH,CAAOJ,CAAAI,EAAP,CAAW,IAAsB,EAAhBwB,CAAgB,EAAbA,CAAAyD,QAAA,CAAU,CAAV,CAAa,CAAA,IAAA,EAAMrC,CAAN,EAAS,IAAAqH,OAAA,CAAYrH,CAAZ,CAA1C,KAA6D,CAAC,IAAA,EAAMA,CAAN,GAAUA,CAAV,CAAYvB,CAAA,EAAZ,CAAD,KAAsB0B,EAAE1B,CAAA,EAAxB,CAA4BwB,EAAE,IAAAjB,EAAO1B,EAAA,CAAEA,CAAA0B,EAAI,KAAI4D,EAAE,IAAAY,GAAFZ,CAAUnC,CAAA,CAAEzD,CAAA,CAAEA,CAAAI,EAAF,CAAM,CAAN,CAAF,CAAY,EAAA,CAAEwF,CAAF,EAAK5F,CAAAoL,SAAA,CAAWxF,CAAX,CAAazC,CAAb,CAAA,CAAgB9C,CAAA+K,SAAA,CAAWxF,CAAX,CAAa5C,CAAb,CAArB,GAAuChD,CAAAqK,OAAA,CAASlH,CAAT,CAAA,CAAY9C,CAAAgK,OAAA,CAASrH,CAAT,CAAnD,CAAgEhD,EAAA,CAAEmD,CAAA/C,EAAIC,EAAA,CAAE8C,CAAA,CAAEnD,CAAF,CAAI,CAAJ,CAAO,IAAG,CAAH,EAAMK,CAAN,CAAQ,CAAA,IAAKmD,EAAEnD,CAAFmD,EAAK,CAALA,EAAQ,IAAAuF,GAARvF,GAAkB,CAAA,CAAExD,CAAF,CAAImD,CAAA,CAAEnD,CAAF,CAAI,CAAJ,CAAJ,EAAY,IAAAgJ,GAAZ,CAAoB,CAAtCxF,CAAL,CAA8CtD,GAAE,IAAA2I,GAAF3I,CAAUsD,CAAxD,CAA0DA,GAAG,CAAHA,EAAM,IAAAuF,GAANvF,EAAeA,CAAzE,CAA2EE,GAAE,CAAFA,EAAK,IAAAsF,GAAhF,CAAwFhF,EAAEhB,CAAA5C,EAA1F,CAA8F2H,GAAE/D,CAAF+D,CAAI/H,CAAlG,CAAoGI,EAAE,IAAA,EAAMwB,CAAN,CAAQH,CAAA,EAAR,CAAYG,CAAEuB,EAAAiE,UAAA,CAAYW,EAAZ,CAAc3H,CAAd,CAAiB,EAAA,EAAG4C,CAAAmG,UAAA,CAAY/I,CAAZ,CAAH,GAAoB4C,CAAA,CAAEA,CAAA5C,EAAA,EAAF,CAAA;AAAS,CAAT,CAAW4C,CAAAmH,MAAA,CAAQ/J,CAAR,CAAU4C,CAAV,CAA/B,CAA6CmC,EAAAgC,IAAAC,UAAA,CAAgBpH,CAAhB,CAAkBI,CAAlB,CAAqB,KAAIA,CAAA+J,MAAA,CAAQhH,CAAR,CAAUA,CAAV,CAAJ,CAAiBA,CAAA/C,EAAjB,CAAqBJ,CAArB,CAAA,CAAwBmD,CAAA,CAAEA,CAAA/C,EAAA,EAAF,CAAA,CAAS,CACnf,KAAA,CAAK,CAAL,EAAQ,EAAE2H,EAAV,CAAA,CAAa,CAAC,IAAI5H,EAAE6C,CAAA,CAAE,EAAEgB,CAAJ,CAAA,EAAQ3D,CAAR,CAAU,IAAAsI,GAAV,CAAkBlD,IAAAC,MAAA,CAAW1C,CAAA,CAAEgB,CAAF,CAAX,CAAgB9D,EAAhB,EAAmB8C,CAAA,CAAEgB,CAAF,CAAI,CAAJ,CAAnB,CAA0BN,EAA1B,EAA6BF,CAA7B,CAAgC,KAAIR,CAAA,CAAEgB,CAAF,CAAJ,EAAUb,CAAAuF,GAAA,CAAK,CAAL,CAAOvI,CAAP,CAAS6C,CAAT,CAAW+E,EAAX,CAAa,CAAb,CAAe/H,CAAf,CAAV,EAA6BG,CAA7B,CAA+B,IAAIgD,CAAAiE,UAAA,CAAYW,EAAZ,CAAc3H,CAAd,CAAiB,CAAA4C,CAAAmH,MAAA,CAAQ/J,CAAR,CAAU4C,CAAV,CAArB,CAAkCA,CAAA,CAAEgB,CAAF,CAAlC,CAAuC,EAAE7D,CAAzC,CAAA,CAA4C6C,CAAAmH,MAAA,CAAQ/J,CAAR,CAAU4C,CAAV,CAApI,CAAiJ,IAAA,EAAMpB,CAAN,GAAUoB,CAAAwH,UAAA,CAAYxK,CAAZ,CAAc4B,CAAd,CAAA,CAAiBqB,CAAjB,EAAoB3C,CAApB,EAAuB6E,CAAA+E,KAAAC,MAAA,CAAavI,CAAb,CAAeA,CAAf,CAAjC,CAAoDoB,EAAA5C,EAAA,CAAIJ,CAAEgD,EAAAuH,MAAA,EAAU,EAAA,CAAE3E,CAAF,EAAK5C,CAAAsI,SAAA,CAAW1F,CAAX,CAAa5C,CAAb,CAAgB,EAAA,CAAEC,CAAF,EAAKkC,CAAA+E,KAAAC,MAAA,CAAanH,CAAb,CAAeA,CAAf,CADe,CAA5J,CAA/E,CAA5B,CAC8QmC,EAAAsD,UAAArC,SAAA,CAAqByF,QAAQ,EAAE,CAAC,GAAG,CAAH,CAAK,IAAAzL,EAAL,CAAY,MAAO,EAAE,KAAIE,EAAE,IAAA,CAAK,CAAL,CAAQ,IAAG,CAAH,GAAOA,CAAP,CAAS,CAAT,EAAY,MAAO,EAAvD,KAA6DsB,EAAEtB,CAAFsB,CAAI,CAAjE,CAAmEA,EAAEA,CAAFA,EAAK,CAALA,EAAQtB,CAARsB,CAAU,EAAVA,EAAcA,CAAdA,EAAiB,EAApF,CAAuFA,EAAEA,CAAFA,EAAK,CAALA,EAAQtB,CAARsB,CAAU,GAAVA,EAAeA,CAAfA,EAAkB,GAAzG,CAA6GA,EAAEA,CAAFA,EAAK,CAALA,GAAStB,CAATsB;AAAW,KAAXA,EAAkBA,CAAlBA,CAAoB,KAApBA,GAA4B,KAAzI,CAA+IA,EAAEA,CAAFA,EAAK,CAALA,CAAOtB,CAAPsB,CAASA,CAATA,CAAW,IAAAgH,GAAXhH,EAAoB,IAAAgH,GAAQ,OAAO,EAAA,CAAEhH,CAAF,CAAI,IAAAgH,GAAJ,CAAYhH,CAAZ,CAAc,CAACA,CAAjM,CACjTuD,EAAAsD,UAAAqD,OAAA,CAAmBC,QAAQ,EAAE,CAAC,MAAO,EAAP,GAAW,CAAA,CAAE,IAAA3L,EAAF,CAAS,IAAA,CAAK,CAAL,CAAT,CAAiB,CAAjB,CAAmB,IAAA4B,EAA9B,CAAD,CAAwCmD,EAAAsD,UAAAuD,IAAA,CAAgBC,QAAQ,CAAC3L,CAAD,CAAGsB,CAAH,CAAK,CAAC,GAAG,UAAH,CAActB,CAAd,EAAiB,CAAjB,CAAmBA,CAAnB,CAAqB,MAAO6E,EAAAgC,IAA7B,KAAuCnE,EAAEvB,CAAA,EAAzC,CAA6CzB,EAAEyB,CAAA,EAA/C,CAAmDpB,EAAEuB,CAAAqH,QAAA,CAAU,IAAV,CAArD,CAAqE9F,EAAEM,CAAA,CAAEnD,CAAF,CAAF6C,CAAO,CAAE,KAAI9C,CAAAgK,OAAA,CAASrH,CAAT,CAAJ,CAAgB,CAAhB,EAAmB,EAAEG,CAArB,CAAA,CAAwB,GAAGvB,CAAAiI,MAAA,CAAQ7G,CAAR,CAAUhD,CAAV,CAAA,CAAa,CAAb,EAAgBM,CAAhB,CAAkB,CAAlB,EAAqB6C,CAArB,CAAH,CAA2BvB,CAAA8H,MAAA,CAAQ1J,CAAR,CAAUK,CAAV,CAAY2C,CAAZ,CAA3B,KAA+C,KAAIC,EAAED,CAAN,CAAQA,EAAEhD,CAAV,CAAYA,EAAEiD,CAAE,OAAOrB,EAAAyH,OAAA,CAASrG,CAAT,CAA5K,CAAyLmC,EAAAsD,UAAAT,SAAA,CAAqBkE,QAAQ,CAAC5L,CAAD,CAAG,CAAC,GAAG,CAAH,CAAK,IAAA0B,EAAL,CAAY,MAAM,GAAN,CAAU,IAAAmK,OAAA,EAAAnE,SAAA,CAAuB1H,CAAvB,CAA0B,IAAG,EAAH,EAAOA,CAAP,CAASA,CAAA,CAAE,CAAX,KAAkB,IAAG,CAAH,EAAMA,CAAN,CAAQA,CAAA,CAAE,CAAV,KAAiB,IAAG,CAAH,EAAMA,CAAN,CAAQA,CAAA,CAAE,CAAV,KAAiB,IAAG,EAAH,EAAOA,CAAP,CAASA,CAAA;AAAE,CAAX,KAAkB,IAAG,CAAH,EAAMA,CAAN,CAAQA,CAAA,CAAE,CAAV,KAAiB,OAAO,KAAA8L,QAAA,CAAa9L,CAAb,CAA/I,KAAmKsB,GAAG,CAAHA,EAAMtB,CAANsB,EAAS,CAA5K,CAA8KoB,CAA9K,CAAgLhD,EAAE,CAAA,CAAlL,CAAqLK,EAAE,EAAvL,CAC3T8C,EAAE,IAAA/C,EADyT,CAClT6C,EAAE,IAAAuD,GAAFvD,CAAUE,CAAVF,CAAY,IAAAuD,GAAZvD,CAAoB3C,CAAE,IAAG,CAAH,CAAK6C,CAAA,EAAL,CAAS,IAAIF,CAAJ,CAAM,IAAAuD,GAAN,EAAe,CAAf,EAAkBxD,CAAlB,CAAoB,IAAA,CAAKG,CAAL,CAApB,EAA6BF,CAA7B,IAAkCjD,CAAA,CAAE,CAAA,CAAF,CAAKK,CAAL,CAAO,sCAAA0K,OAAA,CAA8C/H,CAA9C,CAAzC,EAA2F,CAA3F,EAA8FG,CAA9F,CAAA,CAAiGF,CAAA,CAAE3C,CAAF,EAAK0C,CAAA,EAAG,IAAA,CAAKG,CAAL,CAAH,EAAY,CAAZ,EAAeF,CAAf,EAAkB,CAAlB,GAAsB3C,CAAtB,CAAwB2C,CAAxB,CAA0BD,CAA1B,EAA6B,IAAA,CAAK,EAAEG,CAAP,CAA7B,GAAyCF,CAAzC,EAA4C,IAAAuD,GAA5C,CAAoDlG,CAApD,CAAL,GAA8D0C,CAAA,CAAE,IAAA,CAAKG,CAAL,CAAF,GAAYF,CAAZ,EAAe3C,CAAf,EAAkBsB,CAAlB,CAAoB,CAApB,EAAuBqB,CAAvB,GAA2BA,CAAA,EAAG,IAAAuD,GAAH,CAAW,EAAErD,CAAxC,CAA9D,CAAsH,CAAZ,CAAY,CAAVH,CAAU,GAANhD,CAAM,CAAJ,CAAA,CAAI,EAAAA,CAAA,GAAIK,CAAJ,EAAO,sCAAA0K,OAAA,CAA8C/H,CAA9C,CAAP,CAAyD,OAAOhD,EAAA,CAAEK,CAAF,CAAI,GADR,CACa8E,EAAAsD,UAAA0D,OAAA,CAAmBE,QAAQ,EAAE,CAAC,IAAI/L,EAAEmB,CAAA,EAAI0D,EAAA+E,KAAAC,MAAA,CAAa,IAAb,CAAkB7J,CAAlB,CAAqB,OAAOA,EAAvC,CAA0C6E,EAAAsD,UAAAwB,IAAA,CAAgBqC,QAAQ,EAAE,CAAC,MAAO,EAAA;AAAE,IAAAtK,EAAF,CAAS,IAAAmK,OAAA,EAAT,CAAuB,IAA/B,CAAqChH,EAAAsD,UAAAU,UAAA,CAAsBoD,QAAQ,CAACjM,CAAD,CAAG,CAAC,IAAIsB,EACpf,IAAAI,EADofJ,CAC7etB,CAAA0B,EAAI,IAAG,CAAH,EAAMJ,CAAN,CAAQ,MAAOA,EADqd,KAC/coB,EAAE,IAAA5C,EAD6c,CACtcwB,EAAEoB,CAAFpB,CAAItB,CAAAF,EAAI,IAAG,CAAH,EAAMwB,CAAN,CAAQ,MAAO,EAAA,CAAE,IAAAI,EAAF,CAAS,CAACJ,CAAV,CAAYA,CAAE,KAAA,CAAK,CAAL,EAAQ,EAAEoB,CAAV,CAAA,CAAa,GAAG,CAAH,GAAOpB,CAAP,CAAS,IAAA,CAAKoB,CAAL,CAAT,CAAiB1C,CAAA,CAAE0C,CAAF,CAAjB,EAAuB,MAAOpB,EAAE,OAAO,EAD6W,CAC1WuD,EAAAsD,UAAA+D,UAAA,CAAsBC,QAAQ,EAAE,CAAC,MAAO,EAAA,EAAG,IAAArM,EAAH,CAAU,CAAV,CAAY,IAAAoG,GAAZ,EAAqB,IAAApG,EAArB,CAA4B,CAA5B,EAA+BqD,CAAA,CAAE,IAAA,CAAK,IAAArD,EAAL,CAAY,CAAZ,CAAF,CAAiB,IAAA4B,EAAjB,CAAwB,IAAA2G,GAAxB,CAAvC,CAAyExD,EAAAsD,UAAAW,IAAA,CAAgBsD,QAAQ,CAACpM,CAAD,CAAG,CAAC,IAAIsB,EAAEH,CAAA,EAAI,KAAAwI,IAAA,EAAAR,SAAA,CAAoBnJ,CAApB,CAAsB,IAAtB,CAA2BsB,CAA3B,CAA8B,EAAA,CAAE,IAAAI,EAAF,EAAU,CAAV,CAAYJ,CAAAuH,UAAA,CAAYhE,CAAA+E,KAAZ,CAAZ,EAAiC5J,CAAA6J,MAAA,CAAQvI,CAAR,CAAUA,CAAV,CAAa,OAAOA,EAA9F,CAAiGuD,EAAAsD,UAAAkE,UAAA,CAAsBC,QAAQ,CAACtM,CAAD,CAAGsB,CAAH,CAAK,CAAC,IAAIoB,CAAEA,EAAA,CAAE,GAAA,CAAI1C,CAAJ,EAAOsB,CAAAkK,OAAA,EAAP,CAAkB,IAAI7F,EAAJ,CAAMrE,CAAN,CAAlB;AAA2B,IAAIsE,CAAJ,CAAMtE,CAAN,CAAS,OAAO,KAAAoK,IAAA,CAAS1L,CAAT,CAAW0C,CAAX,CAApD,CAAmEmC,EAAA+E,KAAA,CAAOlE,EAAA,CAAE,CAAF,CAAKb,EAAAgC,IAAA,CAAMnB,EAAA,CAAE,CAAF,CAAKc,GAAA2B,UAAAQ,QAAA,CACvelC,EAAED,GAAA2B,UAAAY,OAAA,CAAmBtC,EAAED,GAAA2B,UAAAiB,MAAA,CAAkBmD,QAAQ,CAACvM,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAO,CAAC1C,CAAAsJ,WAAA,CAAahI,CAAb,CAAeoB,CAAf,CAAD,CAAoB8D,GAAA2B,UAAAoB,MAAA,CAAkBiD,QAAQ,CAACxM,CAAD,CAAGsB,CAAH,CAAK,CAACtB,CAAAyJ,SAAA,CAAWnI,CAAX,CAAD,CAAgBoF,GAAAyB,UAAAQ,QAAA,CAAoB8D,QAAQ,CAACzM,CAAD,CAAG,CAAC,GAAG,CAAH,CAAKA,CAAA0B,EAAL,EAAU1B,CAAAF,EAAV,CAAc,CAAd,CAAgB,IAAAqB,EAAArB,EAAhB,CAAyB,MAAOE,EAAA8I,IAAA,CAAM,IAAA3H,EAAN,CAAc,IAAG,CAAH,CAAKnB,CAAA6I,UAAA,CAAY,IAAA1H,EAAZ,CAAL,CAAyB,MAAOnB,EAAE,KAAIsB,EAAEH,CAAA,EAAInB,EAAA+J,OAAA,CAASzI,CAAT,CAAY,KAAA2H,OAAA,CAAY3H,CAAZ,CAAe,OAAOA,EAA7H,CAAgIoF,GAAAyB,UAAAY,OAAA,CAAmB2D,QAAQ,CAAC1M,CAAD,CAAG,CAAC,MAAOA,EAAR,CAAW0G,GAAAyB,UAAAc,OAAA,CAAmB0D,QAAQ,CAAC3M,CAAD,CAAG,CAACA,CAAAkK,UAAA,CAAY,IAAA/I,EAAArB,EAAZ,CAAqB,CAArB,CAAuB,IAAA6G,GAAvB,CAAgC3G,EAAAF,EAAA,CAAI,IAAAqB,EAAArB,EAAJ,CAAa,CAAb,GAAiBE,CAAAF,EAAA,CAAI,IAAAqB,EAAArB,EAAJ;AAAa,CAAb,CAAeE,CAAAiK,MAAA,EAAhC,CAA2C,KAAAlD,GAAA6F,gBAAA,CAAwB,IAAAjG,GAAxB,CAAgC,IAAAxF,EAAArB,EAAhC,CAAyC,CAAzC,CAA2C,IAAA8G,GAA3C,CAAoD,KAAI,IAAAzF,EAAA0L,gBAAA,CAAuB,IAAAjG,GAAvB,CACre,IAAAzF,EAAArB,EADqe,CAC5d,CAD4d,CAC1d,IAAA6G,GAD0d,CAAJ,CAC7c,CAD6c,CAC3c3G,CAAA6I,UAAA,CAAY,IAAAlC,GAAZ,CAD2c,CAAA,CACrb3G,CAAA8M,WAAA,CAAa,CAAb,CAAe,IAAA3L,EAAArB,EAAf,CAAwB,CAAxB,CAA2B,KAAIE,CAAA6J,MAAA,CAAQ,IAAAlD,GAAR,CAAgB3G,CAAhB,CAAJ,CAAuB,CAAvB,EAA0BA,CAAA6I,UAAA,CAAY,IAAA1H,EAAZ,CAA1B,CAAA,CAA+CnB,CAAA6J,MAAA,CAAQ,IAAA1I,EAAR,CAAenB,CAAf,CAD2O,CACxN0G,GAAAyB,UAAAiB,MAAA,CAAkB2D,QAAQ,CAAC/M,CAAD,CAAGsB,CAAH,CAAKoB,CAAL,CAAO,CAAC1C,CAAAsJ,WAAA,CAAahI,CAAb,CAAeoB,CAAf,CAAkB,KAAAuG,OAAA,CAAYvG,CAAZ,CAAnB,CAAmCgE,GAAAyB,UAAAoB,MAAA,CAAkByD,QAAQ,CAAChN,CAAD,CAAGsB,CAAH,CAAK,CAACtB,CAAAyJ,SAAA,CAAWnI,CAAX,CAAc,KAAA2H,OAAA,CAAY3H,CAAZ,CAAf,CAlBjO,KAkBoQ2L,EAAE,CAAC,CAAD,CAAG,CAAH,CAAK,CAAL,CAAO,CAAP,CAAS,EAAT,CAAY,EAAZ,CAAe,EAAf,CAAkB,EAAlB,CAAqB,EAArB,CAAwB,EAAxB,CAA2B,EAA3B,CAA8B,EAA9B,CAAiC,EAAjC,CAAoC,EAApC,CAAuC,EAAvC,CAA0C,EAA1C,CAA6C,EAA7C,CAAgD,EAAhD,CAAmD,EAAnD,CAAsD,EAAtD,CAAyD,EAAzD,CAA4D,EAA5D,CAA+D,EAA/D,CAAkE,EAAlE,CAAqE,EAArE,CAAwE,GAAxE,CAA4E,GAA5E,CAAgF,GAAhF,CAAoF,GAApF,CAAwF,GAAxF,CAA4F,GAA5F,CAAgG,GAAhG,CAAoG,GAApG,CAAwG,GAAxG,CAA4G,GAA5G,CAAgH,GAAhH,CAAoH,GAApH,CAAwH,GAAxH,CAA4H,GAA5H;AAAgI,GAAhI,CAAoI,GAApI,CAAwI,GAAxI,CAA4I,GAA5I,CAAgJ,GAAhJ,CAAoJ,GAApJ,CAAwJ,GAAxJ,CAA4J,GAA5J,CAAgK,GAAhK,CAAoK,GAApK,CAAwK,GAAxK,CAA4K,GAA5K,CAAgL,GAAhL,CAAoL,GAApL,CAAwL,GAAxL,CAA4L,GAA5L,CAAgM,GAAhM,CAAoM,GAApM,CAAwM,GAAxM,CAA4M,GAA5M,CAAgN,GAAhN,CAAoN,GAApN,CAAwN,GAAxN,CAA4N,GAA5N,CAAgO,GAAhO,CACjR,GADiR,CAC7Q,GAD6Q,CACzQ,GADyQ,CACrQ,GADqQ,CACjQ,GADiQ,CAC7P,GAD6P,CACzP,GADyP,CACrP,GADqP,CACjP,GADiP,CAC7O,GAD6O,CACzO,GADyO,CACrO,GADqO,CACjO,GADiO,CAC7N,GAD6N,CACzN,GADyN,CACrN,GADqN,CACjN,GADiN,CAC7M,GAD6M,CACzM,GADyM,CACrM,GADqM,CACjM,GADiM,CAC7L,GAD6L,CACzL,GADyL,CACrL,GADqL,CACjL,GADiL,CAC7K,GAD6K,CACzK,GADyK,CACrK,GADqK,CACjK,GADiK,CAC7J,GAD6J,CACzJ,GADyJ,CACrJ,GADqJ,CACjJ,GADiJ,CAC7I,GAD6I,CACzI,GADyI,CACrI,GADqI,CACjI,GADiI,CAC7H,GAD6H,CACzH,GADyH,CACrH,GADqH,CACjH,GADiH,CAC7G,GAD6G,CACzG,GADyG,CACrG,GADqG,CACjG,GADiG,CAC7F,GAD6F,CACzF,GADyF,CACrF,GADqF,CACjF,GADiF,CAC7E,GAD6E,CACzE,GADyE,CACrE,GADqE,CACjE,GADiE,CAC7D,GAD6D,CACzD,GADyD,CACrD,GADqD,CACjD,GADiD,CAC7C,GAD6C,CACzC,GADyC,CACrC,GADqC,CACjC,GADiC,CAC7B,GAD6B,CACzB,GADyB,CACrB,GADqB,CACjB,GADiB,CACb,GADa,CACT,GADS,CACL,GADK,CACD,GADC,CACG,GADH,CACO,GADP,CACW,GADX,CACe,GADf,CACmB,GADnB,CACuB,GADvB,CAC2B,GAD3B,CAC+B,GAD/B,CACmC,GADnC,CACuC,GADvC,CAC2C,GAD3C,CAC+C,GAD/C,CACmD,GADnD,CACuD,GADvD,CAC2D,GAD3D,CAC+D,GAD/D,CACmE,GADnE,CACuE,GADvE,CAC2E,GAD3E,CAC+E,GAD/E,CACmF,GADnF,CACuF,GADvF,CAC2F,GAD3F,CAC+F,GAD/F,CACmG,GADnG,CACuG,GADvG,CAC2G,GAD3G,CAC+G,GAD/G,CACmH,GADnH,CACuH,GADvH,CAC2H,GAD3H,CAC+H,GAD/H;AACmI,GADnI,CACuI,GADvI,CAC2I,GAD3I,CAlBtQ,CAmBsZC,GAAE,QAAFA,CAAWD,CAAA,CAAEA,CAAA3K,OAAF,CAAW,CAAX,CAAcuC,EAAAsD,UAAAgF,UAAA,CAAsBC,QAAQ,CAACpN,CAAD,CAAG,CAAC,MAAOmF,KAAAC,MAAA,CAAWD,IAAAkI,IAAX,CACne,IAAAnH,GADme,CAC3df,IAAAmI,IAAA,CAAStN,CAAT,CAD2d,CAAR,CACrc6E,EAAAsD,UAAA2D,QAAA,CAAoByB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"} diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/CindyJS.css b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/CindyJS.css new file mode 100644 index 0000000000..2fdefb34c4 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/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/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic1list.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic1list.txt new file mode 100644 index 0000000000..20063af461 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic1list.txt @@ -0,0 +1,149 @@ +Ketinit,basic1,41,172,Fillstore,Cindyname,Indexall,getname,iswindows,ismacosx,Changesetting,Changework,pathsep,Setwindow +Initglist,basic1,176,187 +Setglist,basic1,191,197 +Addglist,basic1,201,207 +Fillstore,basic1,211,244 +Fillblack,basic1,248,262,Fillstore +Fillrestore,basic1,266,278 +Readlines,basic1,282,293,readfile2str +Changesetting,basic1,297,312,pathsep,getname,isexists +Cindyname,basic1,316,323,Cdyname,Getcdyname +Setwindow,basic1,327,364,Toupper,Lcrd,Pcrd,Putpoint +Setfiles,basic1,368,381,Dqq +Setparent,basic1,385,397,Dqq +Dqq,basic1,401,401,DqDq +DqDq,basic1,404,407 +PPa,basic1,411,412 +PaO,basic1,416,428 +PaC,basic1,432,444 +PPa,basic1,448,448 +Tab2list,basic1,452,514,Divoptions,Toupper,Indexall +Columnlist,basic1,518,521 +Dispmat,basic1,525,547 +Sep1000,basic1,551,569 +Acos,basic1,573,576 +Asin,basic1,580,583 +Atan,basic1,587,590 +Sqr,basic1,594,597 +Factorial,basic1,601,609 +Norm,basic1,613,625 +Removespace,basic1,630,655 +Indexall,basic1,659,677 +Strsplit,basic1,681,692,Indexall +Parlevel,basic1,696,696,Bracket +Bracket,basic1,699,721,Indexall +Pardiagram,basic1,725,821,Divoptions,Toupper,Bracket,Listplot,Letter,Expr +Changework,basic1,825,883,Divoptions,Strsplit,Toupper,Indexall,isexists,Dqq,makedir,pathsep,iswindows,iskcexists,setexec +Changestyle,basic1,887,919,Divoptions,Com2nd,Getlinestyle,Texcom +Op,basic1,923,935 +Ptselected,basic1,939,955,Isptselected +Finddef,basic1,959,978 +Findgeoinfo,basic1,982,1007,Finddef +Dependgeo,basic1,1011,1031,Finddef +Workprocess,basic1,1035,1039,Drawprocess +Drawprocess,basic1,1042,1087,Divoptions,Strsplit,Toupper,Dependgeo +Sortpointlist,basic1,1091,1123 +Toupper,basic1,1127,1142 +Textformat,basic1,1146,1170 +Sprintf,basic1,1174,1191,Textformat +Replaceall,basic1,1195,1205 +Assign,basic1,1209,1266,Textformat +Measuredepth,basic1,1297,1310,Indexall +Flattenlist,basic1,1314,1334,Measuredepth +Divoptions,basic1,1338,1441,Strsplit,Toupper,Colorcmyk2rgb,Colorname2rgb +Dotprod,basic1,1445,1451 +Crossprod,basic1,1455,1467 +Mvprod,basic1,1471,1489,Measuredepth +Ptstart,basic1,1493,1498 +Ptend,basic1,1502,1507 +Numptcrv,basic1,1511,1516 +Ptcrv,basic1,1520,1525 +Invert,basic1,1529,1542,Listplot +Paramoncrv,basic1,1546,1546,Paramoncurve +Paramoncurve,basic1,1549,1575,Nearestpt,LLcrd +Pointoncrv,basic1,1579,1579,Pointoncurve +Pointoncurve,basic1,1582,1600 +Koutenseg,basic1,1604,1712 +Intersectcrvspp,basic1,1718,1861,Divoptions,Measuredepth,LLcrd,Koutenseg +Intersectcrvs,basic1,1865,1871,Intersectcrvspp +Intersectline,basic1,1879,1901,Dotprod,Crossprod +Intersectseg,basic1,1905,2005,Op,Intersectline,Nearestpt +Osplineseg,basic1,2009,2026,Dotprod,Bezier +Intersectpartseg,basic1,2030,2132,Crossprod,Norm,Reflectpoint,Osplineseg,Intersectseg,Op,Intersectline +Collectsameseg,basic1,2136,2178 +Intersectcurvespp,basic1,2182,2288,LLcrd,Intersectpartseg,Collectsameseg,Nearestpt +Intersectcurves,basic1,2292,2299,Intersectcurvesop +Nearestptcrvphy,basic1,2305,2314,Pcrd,Measuredepth,Nearestpt +Nearestptcrv,basic1,2318,2324,Nearestpt +Nearestpt,basic1,2328,2381,Measuredepth,Paramoncurve +Derivative,basic1,2385,2476,Strsplit,Lineplot,Intersectcurvespp,Pointoncurve,Dotprod,Divoptions,Toupper,PaO,Pcrd,Assign +Tangentplot,basic1,2480,2527,Divoptions,Strsplit,Toupper,Intersectcurvespp,Derivative,Lineplot +Integrate,basic1,2531,2544,Integratefn,Integratedt +Integratedt,basic1,2548,2580,Divoptions,Toupper,IntegrateO,Measuredepth,MeetCurve,LLcrd +Integratefn,basic1,2584,2644,Divoptions,Toupper,Strsplit,Assign,IntegrateO,Textformat +IntegrateO,basic1,2648,2727,Measuredepth,Meetcurve,LLcrd,Dotprod +FindareaP,basic1,2731,2744,Lcrd +FindareaO,basic1,2748,2769,Dist,IntegrateO +Findarea,basic1,2773,2799,Divoptions,Strsplit,Toupper,FindareaO,FindareaP +Findlength,basic1,2803,2815,Lcrd +Inversefun,basic1,2819,2842,Textformat +Com0th,basic1,2846,2850 +Com1st,basic1,2854,2859 +Com2nd,basic1,2863,2868 +Com2ndpre,basic1,2872,2876 +Texcom,basic1,2880,2887,Com2nd +Ketcindylogo,basic1,2891,2895,Com2nd +Drwline,basic1,2899,2902,Textformat,Com2nd +Dashline,basic1,2907,2909,Com2nd +Invdashline,basic1,2913,2915,Com2nd +Dottedline,basic1,2919,2921,Com2nd +Drawlinetype,basic1,2925,2946,Toupper,Drwline,Dashline,Invdashline,Dottedline +Setunitlen,basic1,2950,3002 +Setmarklen,basic1,3006,3010,Com2nd,Textformat +Setorigin,basic1,3014,3018,Com2nd,Textformat +Fontsize,basic1,3022,3025,Com2nd +Setpen,basic1,3029,3033,Com2nd +Setscaling,basic1,3037,3051,Com0th,Setwindow +Lcrd,basic1,3055,3063 +Pcrd,basic1,3067,3075 +LLcrd,basic1,3079,3088 +Doscaling,basic1,3092,3119,Lcrd,LLcrd +Unscaling,basic1,3123,3150,Lcrd,LLcrd +Setpt,basic1,3154,3160,Ptsize,Com2nd +Definecolor,basic1,3164,3172,Texcom +Setcolor,basic1,3176,3203,Colorcmyk2rgb,Com2nd +Colorrgb2cmyk,basic1,3207,3219 +Colorcmyk2rgb,basic1,3223,3230 +Colorrgbhsv,basic1,3234,3266 +Colorhsvrgb,basic1,3270,3284 +Colorrgbhsl,basic1,3288,3324 +Colorhslrgb,basic1,3328,3349,Hue2rgb +Hue2rgb,basic1,3353,3371 +Colorrgbhwb,basic1,3375,3381,Colorrgbhsl,Colorcode +Colorhwbrgb,basic1,3385,3410 +Colorcode,basic1,3414,3427,Colorrgb2cmyk,Colorcmyk2rgb,Colorrgbhsv,Colorrgbhsl,Colorrgbhwb,Colorhsvrgb,Colorhslrgb,Colorhwbrgb +Colorname2rgb,basic1,3431,3481,Colorcmyk2rgb,Assign +Getlinestyle,basic1,3485,3551,Drwline,Dashline,Invdashline,Dottedline,Textformat,Drwpt +Chunderscore,basic1,3555,3590,PaO +AddGraph,basic1,3594,3694,Divoptions,Flattenlist,Pcrd,Measuredepth,PaO,Textformat,Com2nd,Getlinestyle,Texcom +Joincrvs,basic1,3698,3794,LLcrd,Divoptions,Numptcrv,Ptstart,Ptend,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Partcrv,basic1,3798,3887,Measuredepth,Divoptions,Numptcrv,Ptstart,Ptend,Joincrvs,Nearestpt,LLcrd,Pcrd,Textformat,Lcrd,Com2nd,Getlinestyle,Texcom +Opcrvs,basic1,3891,3899,Listplot +Pointdata,basic1,3903,4026,Strsplit,Divoptions,Toupper,Lcrd,Measuredepth,Pcrd,PaO,Texcom,Textformat,Com2nd +Listplot,basic1,4030,4111,Divoptions,Strsplit,Toupper,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom,Lcrd +Lineplot,basic1,4115,4198,Strsplit,Toupper,Divoptions,Lcrd,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Plotdata,basic1,4202,4407,Divoptions,Strsplit,PaO,Dqq,Toupper,Assign,Norm,Measuredepth,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Paramplot,basic1,4411,4583,Divoptions,Strsplit,PaO,Dqq,Toupper, differs from Scilab ,Assign,Measuredepth,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Polarplot,basic1,4587,4596,Strsplit,Paramplot +Connectseg,basic1,4600,4662,Norm +Implicitplot,basic1,4666,4849,Divoptions,Strsplit,Toupper,Impfun,Connectseg,Measuredepth,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Circledata,basic1,4853,4972,Divoptions,Strsplit,Toupper,Lcrd,Defvar,Lineplot,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Framedata,basic1,4976,5028,Measuredepth,LLcrd,Divoptions,Lcrd,Listplot +Framedata2,basic1,5032,5039,Lcrd,Framedata +Ovaldata,basic1,5043,5113,Divoptions,Lcrd,Listplot,Circledata,Reflectdata,Joincrvs,Com2nd,Getlinestyle,Texcom,Pcrd,Textformat +Segmark,basic1,5117,5177,Drawsegmark,Divoptions,Toupper,Circledata,Listplot +Parabolaplot,basic1,5181,5221,Lcrd,Rotatepoint,Textformat,Plotdata,Rotatedata +Ellipseplot,basic1,5225,5268,Lcrd,Rotatepoint,Paramplot,Rotatedata +Hyperbolaplot,basic1,5272,5336,Divoptions,Toupper,Lcrd,Rotatepoint,Paramplot,Lineplot,Rotatedata +Polygonplot,basic1,5340,5386,Divoptions,Strsplit,Toupper,Lcrd,Putpoint,Listplot +Putintersect,basic1,5390,5418,Intersectcrvs,Putpoint diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic2list.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic2list.txt new file mode 100644 index 0000000000..32e67feb5c --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic2list.txt @@ -0,0 +1,97 @@ +Drwfigs,basic2,22,24,Drawfigures +Drawfigures,basic2,28,87,Divoptions,Strsplit,Toupper,Measuredepth,Pointdata,Listplot,Dqq +Setarrow,basic2,91,117 +Arrowheaddata,basic2,121,214,Divoptions,Strsplit,Toupper,Touppera,Measuredepth,Nearestpt,|Ptend,Ptstart,Numptcrv,Ptcrv,LLcrd,Intersectcrvspp,Pcrd +Arrowhead,basic2,218,310,Strsplit,Toupper,Measuredepth,Pcrd,Arrowheaddata,Inwindow,Listplot,Divoptions,Dqq,Textformat,LLcrd,Com2nd,Texcom +Arrowdata,basic2,314,428,Divoptions,Strsplit,Toupper,Pcrd,Textformat,Listplot,LLcrd,Arrowhead,Setscaling,Lcrd +Lightarrowdata,basic2,432,547,Pcrd,Divoptions,Strsplit,Toupper,Listplot,Textformat,LLcrd,Com2nd,Texcom,Setscaling,Lcrd +Anglemark,basic2,551,684,Divoptions,Indexall,Strsplit,Dqq,Toupper,Lcrd,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Paramark,basic2,688,798,Divoptions,Indexall,Strsplit,Dqq,Toupper,Lcrd,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Makebowdata,basic2,802,815,Lcrd,Rotatepoint +Bowdata,basic2,819,990,Divoptions,Lcrd,Strsplit,Toupper,Makebowdata,Defvar,Norm,LLcrd,Dqq,Measuredepth,Pcrd,Textformat,Com2nd,Getlinestyle,Texcom +Bowname,basic2,994,997,Expr +Bownamerot,basic2,1001,1015,Measuredepth,Ptend,Ptstart,Exprrot +Deqdata,basic2,1019,1077,funP,Lcrd,funN +Deqplot,basic2,1081,1225,Lcrd,Divoptions,Toupper,Indexall,Deqdata,Pcrd,Assign,Textformat,RSform,Com2nd,Getlinestyle,Texcom +Enclosing,basic2,1393,1559,Enclosing2,Divoptions,isList,Lcrd,Listplot,Intersectcurvespp,Prepend,Op,Length,Partcrv,Pointoncurve,Pcrd,PaO,Textformat,Com2nd,Getlinestyle,Texcom,LLcrd +Makehatch,basic2,1567,1669,Lineplot,Intersectseg,Norm,Listplot +Anyselected,basic2,1673,1681 +Hatchdata,basic2,1685,1981,HatchdataR,Hatchdatacindy,Listplot,Joincrvs,Enclosing2,Divoptions,Strsplit,Toupper,Anyselected,Bracket,isexists,ReadOutData,Makehatch,Textformat,PaO,Com2nd,Getlinestyle,Texcom,WriteOutData,LLcrd +Shadein,basic2,1985,2072,Framedata,Partcrv,Paramoncrv,Listplot,Intersectcurvespp,Pointoncrv,Joincrvs,Inwindow +Shade,basic2,2076,2204,Divoptions,Strsplit,Toupper,Colorcmyk2rgb,Enclosing,Shadein,Listplot,Joincrvs,Pcrd,PaO,Textformat,Dqq +Rotatepoint,basic2,2210,2220,Lcrd +Translatepoint,basic2,2224,2234,Lcrd +Scalepoint,basic2,2238,2248,Lcrd +Reflectpoint,basic2,2252,2277,Lcrd +Rotatedata,basic2,2281,2367,Divoptions,Lcrd,Strsplit,Toupper,Measuredepth,LLcrd,Pcrd,Textformat,RSform,Com2nd,Getlinestyle,Texcom +Translatedata,basic2,2371,2449,Divoptions,Strsplit,Toupper,Lcrd,Measuredepth,LLcrd,Pcrd,RSform,Textformat,Com2nd,Getlinestyle,Texcom +Scaledata,basic2,2453,2555,Divoptions,Lcrd,Strsplit,Toupper,Measuredepth,LLcrd,Pcrd,Textformat,RSform,Com2nd,Getlinestyle,Texcom +Reflectdata,basic2,2559,2653,Divoptions,Strsplit,Toupper,Lcrd,Measuredepth,LLcrd,Pcrd,RSform,Textformat,Com2nd,Getlinestyle,Texcom +Mksegments,basic2,2658,2673,Listplot +Mkcircles,basic2,2678,2698,Strsplit,Circledata +MakeRarg,basic2,2702,2715,RSslash,Textformat +Htickmark,basic2,2719,2742,Listplot,Expr +Vtickmark,basic2,2746,2767,Listplot,Expr,180710to// tmp=MakeRarg +Vtick,basic2,2771,2781,Listplot +Htick,basic2,2785,2797,LLcrd,Listplot +Setax,basic2,2801,2818 +Drwxy,basic2,2822,2917,Divoptions,Strsplit,Toupper,Lightarrowdata,Listplot,Expr,Letter,Addax +Drwpt,basic2,2921,2930,Pointdata +Drawpoint,basic2,2933,2961,Measuredepth,Textformat,Com2nd,Setpen +Addax,basic2,2965,2968 +Expr,basic2,2972,2987,Letter +Letter,basic2,2991,3086,Divoptions,Removespace,Strsplit,Toupper,RSslash,Com2nd,Lcrd,Texcom,Pcrd +Letterrot,basic2,3090,3132,Divoptions,Letter,Com2nd,Dqq,Texcom +Exprrot,basic2,3136,3179,Divoptions,Expr,Com2nd,Dqq,Texcom +Slider,basic2,3183,3230,Toupper,Strsplit,Indexall,Putpoint,Listplot,Putonseg +Putpoint,basic2,3234,3245,Textformat,Pcrd +Putpoint,basic2,3249,3260,Textformat,Pcrd +Bezierpt,basic2,3264,3289,Lcrd +Bezier,basic2,3293,3305,Beziercurve +Beziercurve,basic2,3309,3386,Divoptions,Measuredepth,Lcrd,Bezierpt,Pcrd,Textformat,RSform,Com2nd,Getlinestyle,Texcom +Putbezierdata,basic2,3390,3452,Divoptions,Putpoint,Lcrd,Letter +Bezierstart,basic2,3456,3458 +Mkbezierptcrv,basic2,3462,3488,Readcsvsla,Measuredepth,Putbezierdata,Bezier +Mkbeziercrv,basic2,3492,3503,Measuredepth,Bezier +Ospline,basic2,3507,3566,Dotprod,Lcrd,Bezier +CRspline,basic2,3570,3616,Lcrd,Reflectpoint,Bezier +Beziersmooth,basic2,3620,3681,Bzspline,Putpoint,Lcrd,Bezier +Beziersym,basic2,3685,3734,Bzsspline,Putpoint,Lcrd,Bezier +Listbspline2bz,basic2,3738,3753,Lcrd +Bspline,basic2,3757,3765,Listbspline2bz,BezierCurve +Meetcurve,basic2,3769,3829,Measuredepth,LLcrd,Lcrd +Putonline,basic2,3833,3853,LLcrd,Lineplot,Putonseg +Putonseg,basic2,3857,3893,LLcrd,Divoptions,Lcrd,Putpoint,Pcrd,Textformat +Putoncurve,basic2,3897,3926,putoncurve,Putpoint,Paramoncurve,Putonseg,Textformat,Ptend +Crosspoint,basic2,3930,3948,MeetCurve,Putpoint +Periodfun,basic2,3952,4085,Divoptions,Strsplit,Toupper,Plotdata,Translatedata,Setscaling,Norm,Listplot,Textformat +Mkcstable,basic2,4089,4105,Textformat +Fourierseries,basic2,4109,4179,Divoptions,Strsplit,Toupper,Plotdata,Assign,Listplot +Tabledata,basic2,4183,4205,Divoptions,Toupper,Tabledatageo,Tabledatalight +Tabledatalight,basic2,4209,4328,Divoptions,Strsplit,Toupper,Tlistplot,Changetablestyle,Addax,Setwindow +Tabledatageo,basic2,4332,4396,Divoptions,Strsplit,Toupper,Putpoint,Tabledatalight +Tgrid,basic2,4400,4415 +Tlistplot,basic2,4419,4448,divoptions,Toupper,Tgrid,Listplot +Changetablestyle,basic2,4452,4540,Indexall,Changestyle,Replaceall,Tlistplot +Findcell,basic2,4544,4570,Tgrid +Putcell,basic2,4574,4609,Findcell,Letter +Putcellexpr,basic2,4613,4625,Putcell +Putrow,basic2,4629,4644,Putcellrow,Putcell +Putrowexpr,basic2,4648,4661,Putrow +Putcol,basic2,4665,4680,Putcellexpr,Putcell +Putcolexpr,basic2,4684,4697,Putcellexpr,Putcol +Setrange,basic2,4701,4707,Pcrd +Inwindow,basic2,4711,4723 +Dashlinedata,basic2,4727,4800 +Windispg,basic2,4804,4870,Drwxy,Measuredepth,Dashlinedata,Textformat +Extractdata,basic2,4875,4931,Divoptions,Com2nd,Getlinestyle,Texcom +Removeout,basic2,4935,4945 +Makecmdlist,basic2,4949,4979 +Savecmdlist,basic2,4983,4989 +Quicksort,basic2,4993,5013 +Lessstr,basic2,5017,5044 +Makehelplist,basic2,5048,5092,PPa +Helplist,basic2,5096,5150,Makehelplist +Help,basic2,5154,5205 +Helpkey,basic2,5209,5227,Help +Example,basic2,5231,5255 diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic3list.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic3list.txt new file mode 100644 index 0000000000..9cacb8566f --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/basic3list.txt @@ -0,0 +1,56 @@ +Tenkeybrd,basic3,22,54,Strsplit,Toupper,Framedata2,Shade,Tabledata,Addax +Keyaction,basic3,58,83 +Dispchoice,basic3,87,92 +Datetime,basic3,96,107,getdatetime +Readcsvsla,basic3,111,159,Readplotdigdata,Divoptions,Translatedata +Writebezier,basic3,163,205,PaO,WriteOutData +Readbezier,basic3,209,261,Divoptions,Toupper,Readoutdata,Measuredepth,Putpoint,Bezier +RSform,basic3,265,299,PaO,Bracket,PPa +RSslash,basic3,303,308 +Rform,basic3,312,322,PaO +Defvar,basic3,326,370 +IftoR,basic3,374,413,PaO,Indexall,Bracket +FortoR,basic3,417,446,PaO,Bracket +Deffun,basic3,450,497,Bracket,Indexall,FortoR,IftoR,RSform,PaO +WritetoRS,basic3,501,734,WritetoSci,Lcrd,Datetime,Textformat,Cindyname,RSform,PPa,iswindows,Indexall,Dqq,PaO +Readoutdata,basic3,738,851,Divoptions,Strsplit,Toupper,Pcrd,Textformat +Writeoutdata,basic3,855,917,Flattenlist,Measuredepth +Makeshell,basic3,921,1021,kc,Indexall,Dqq +Convsjiswin,basic3,1025,1049,nkfwin,nkfcpdel,isexists,pathsep +Makebat,basic3,1053,1191,kc,iswindows,isincludefull,isexists,Indexall,Dqq +Addpackage,basic3,1195,1213 +Usegraphics,basic3,1217,1227,Addpackage +Viewtex,basic3,1231,1305,iswindows,Makebat,kc,Makeshell,WritetoRS +Viewparent,basic3,1309,1327,isexists,iswindows,Makebat,Makeshell,WritetoRS,kc +Figpdf,basic3,1331,1451,Removespace,isexists +Slidework,basic3,1455,1474,isexists,makedir,pathsep,Changework +Setslidemargin,basic3,1478,1481 +Setslidepage,basic3,1485,1510 +Setslidemain,basic3,1514,1538 +Setslidebody,basic3,1542,1579 +Setslidehyper,basic3,1583,1661,Divoptions,Addpackage,Indexall,Toupper +Settitle,basic3,1665,1736,Toupper,Indexall +Maketitle,basic3,1740,1835,iswindows,Makebat,Makeshell,kc,Cindyname,isexists,PaO +Repeatsameslide,basic3,1839,1994,Indexall +Presentation,basic3,1998,2663,readfile2str,isexists,Removespace,fileslist,Repeatsameslide +Mkslides,basic3,2667,2731,Fillblack,Changework,Setdirectory,setexec,isexists,Presentation,iswindows,Makebat,Makeshell,kc,pathsep,Fillrestore +Mkslidesummary,basic3,2735,2800,Fillblack,pathsep,ismacosx,setexec,PPa,PaO,CalcbyR,iswindows,Makebat,Makeshell,kc,Changework,Fillstore +BBdata,basic3,2804,2947,Divoptions,Toupper,ismacosx,Dqq,iswindows,kc,Sprintf,Removespace +Gcd,basic3,2951,2963 +Fracform,basic3,2967,2992 +Totexformpart,basic3,2996,3064,Bracket,Strsplit,Assign +Totexform,basic3,3068,3119,Totexformpart,Assign,Indexall,Bracket +Tocindyformpart,basic3,3123,3191,Bracket,Strsplit,Assign +Tocindyform,basic3,3195,3242,Tocindyformpart,Indexall,Bracket +Animepar,basic3,3246,3246,Animationparam +Animationparam,basic3,3250,3269,seconds,stopanimation +Copyketcindyjs,basic3,3273,3334,iswindows,Dqq,kc +Ketjsoption,basic3,3338,3339,Setketcindyjs +Setketcindyjs,basic3,3343,3352 +Ketcindyjsdata,basic3,3356,3394,Textformat,Dqq +Findfun,basic3,3398,3465,Removespace,Indexall +Extractfun,basic3,3469,3486,Indexall,Findfun +Extractall,basic3,3495,3539 +Textedit,basic3,3543,3549 +Textedit2value,basic3,3553,3595,Toupper,Textedit,Removespace,Tocindyform,Totexform,Tomaxform,Strsplit +Mkketcindyjs,basic3,3599,4158,Strsplit,Toupper,Colorcode,Colorname2rgb,Copyketcindyjs,isexists,Cdyname,Extractfun,Extractall,pathsep,Readlines,Removespace,Dqq,indexall,Indexof,Indexall diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/ignoredfun.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/ignoredfun.txt new file mode 100644 index 0000000000..5f388e6701 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/ignoredfun.txt @@ -0,0 +1,57 @@ +Anyselected +Changesetting +Changework +Cindyname +Com0th +Com1st +Com2nd +Com2ndpre +Copyketcindyjs +Definecolor +//Defvar +Dottedline +Drwline +Example +Figpdf +Fillstore +Fontsize +Help +Helplist +Invdashline +Ketcindyjsdata +Ketjsoption +Mkketcindyjs +Presentation +//Putbezierdata +//Putpoint +Readcsvsla +RSform +RSslash +Setfiles +Setketcindyjs +Setparent +Setslidebody +Setslidehyper +Texcom + +//Datalist3d +//Ptseg3data +Subgraph +//Setangle +//Mainsubpt3d +//Parasubpt +//Mkpointlist +//Workprocess +//Drawprocess +//Dependgeo +//Finddef +//Mkseg3d + +//Ketinit +//Windispg +//Fillstore +//Setwindow +//Drwxy +//Measuredepth +//Dashlinedata +//Textformat diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex-plugin.js b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex-plugin.js new file mode 100644 index 0000000000..5870742d18 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex-plugin.js @@ -0,0 +1,296 @@ +(function() { + "use strict"; + + var log = console.log.bind(console); + var fonts = {}; + var waitingInstances = []; + var repaintTimeout = null; + + // Load required components: WebFontLoader and katex + + var WebFontLoader = null; + var katex = null; + + CindyJS.loadScript("WebFont", "webfont.js", fontLoaderReady); + CindyJS.loadScript("katex", "katex/katex.min.js", katexReady); + + function fontLoaderReady() { + log("WebFontLoader is now available."); + WebFontLoader = window.WebFont; + loadFonts(["KaTeX_Math:i4", "KaTeX_Main:n4"]); // pre-load common fonts + someScriptLoaded(); + } + + function katexReady() { + log("KaTeX is now available."); + katex = window.katex; + someScriptLoaded(); + } + + function someScriptLoaded() { + if (allScriptsLoaded()) + triggerRepaints(); + } + + function allScriptsLoaded() { + return katex && WebFontLoader; + } + + // Load common and used fonts + + function loadFonts(fontsToLoad) { + log("Loading ", fontsToLoad); + fontsToLoad.forEach(function(fvd) { + fonts[fvd] = "loading"; + }); + WebFontLoader.load({ + custom: { + families: fontsToLoad, + testStrings: { + "KaTeX_Size1": "()[]", + "KaTeX_Size2": "()[]", + "KaTeX_Size3": "()[]", + "KaTeX_Size4": "()[]" + }, + urls: [CindyJS.getBaseDir() + "katex/katex.min.css"] + }, + fontactive: fontActive + }); + } + + function fontActive(font, variant) { + var fvd = font + ":" + variant; + log("Loaded " + fvd); + fonts[fvd] = true; // done loading + if (repaintTimeout === null) + repaintTimeout = setTimeout(triggerRepaints, 0); + } + + // Handle repainting + + function triggerRepaints() { + repaintTimeout = null; + var instances = waitingInstances; + waitingInstances = []; + for (var i = 0; i < instances.length; ++i) + instances[i].evokeCS(""); // trigger repaint + } + + function haveToWait(i) { + if (!waitingInstances.some(function(j) { + return i === j; + })) { + waitingInstances.push(i); + } + } + + // Plugin API + + CindyJS.registerPlugin(1, "katex", plugin); + + function plugin(api) { + var storage = {instance: api.instance, cache: {}, misses:0}; + api.setTextRenderer( + katexRenderer.bind(storage), + katexHtml.bind(storage)); + } + + // Text box, with same api as a prepared KaTeX box but using current font + + function textBox(ctx, text) { + this.width = ctx.measureText(text).width; + this.renderAt = function(x, y) { + ctx.fillText(text, x, y); + }; + } + + textBox.prototype.height = 0; + + textBox.prototype.depth = 0; + + // Custom macros defined specifically for Cinderella / CindyJS + + var macros = { + "\\mbox": "\\text", + "\\lamda": "\\lambda", + "\\my": "\\mu", + "\\ny": "\\nu", + "\\ypsilon": "\\upsilon", + "\\Alpha": "\\mathrm{A}", + "\\Beta": "\\mathrm{B}", + "\\Epsilon": "\\mathrm{E}", + "\\Zeta": "\\mathrm{Z}", + "\\Eta": "\\mathrm{H}", + "\\Iota": "\\mathrm{I}", + "\\Kappa": "\\mathrm{K}", + "\\Lamda": "\\Lambda", + "\\Mu": "\\mathrm{M}", + "\\My": "\\Mu", + "\\Nu": "\\mathrm{N}", + "\\Ny": "\\Nu", + "\\Omicron": "\\mathrm{O}", + "\\Rho": "\\mathrm{P}", + "\\Tau": "\\mathrm{T}", + "\\Ypsilon": "\\Upsilon", + "\\Chi": "\\mathrm{X}", + "\\dots": "\\ldots", + "\\C": "\\mathbb{C}", + "\\H": "\\mathbb{H}", + "\\N": "\\mathbb{N}", + "\\P": "\\mathbb{P}", + "\\Q": "\\mathbb{Q}", + "\\R": "\\mathbb{R}", + "\\Z": "\\mathbb{Z}", + "\\slash": "/", + "\\operatorname": "\\text", // till KaTeX #145 gets resolved + "\\arccot": "\\operatorname{arccot}", + "\\arcsec": "\\operatorname{arcsec}", + "\\arccsc": "\\operatorname{arccsc}", + }; + + // Report whether we are ready + + var firstMessage = true; + + function katexRenderer(ctx, text, x, y, align, fontSize, lineHeight) { + var key = fontSize + "," + lineHeight + ":" + text; + var fontsMissing = false; + var fontsToLoad = {}; + var parts, rows, row, n, i, j; + if (this.cache.hasOwnProperty(key)) { + rows = this.cache[key]; + } else { + var opts = { + fontSize: fontSize, + macros: macros + }; + parts = text.split("$"); + row = []; + rows = [row]; + n = parts.length; + if (n > 1 && !allScriptsLoaded()) { + if (firstMessage) { + log("KaTeX is not ready yet."); + firstMessage = false; + } + haveToWait(this.instance); + return; + } + for (i = 0; i < n; ++i) { + var part = parts[i]; + var box; + if ((i & 1) === 0) { // plain text not TeX + if (part.indexOf("\n") === -1) { + row.push(new textBox(ctx, part)); + } else { + var rows2 = part.split("\n"); + row.push(new textBox(ctx, rows2[0])); + for (j = 1; j < rows2.length; ++j) { + row = [new textBox(ctx, rows2[j])]; + rows.push(row); + } + } + } else { + try { + var tex = parts[i].replace(/°/g, "\\degree"); + box = katex.canvasBox(tex, ctx, opts); + row.push(box); + for (var font in box.fontsUsed) { + var fontState = fonts[font]; + if (fontState !== true) { + fontsMissing = true; + if (fontState === undefined) + fontsToLoad[font] = true; + } + } + } catch(e) { + console.error(e); + row.push(new textBox(ctx, "$" + parts[i] + "$")); + } + } + } + if (++this.misses === 1024) { + this.misses = 0; + this.cache = {}; + } + if (!fontsMissing) { + this.cache[key] = rows; + } + } + if (fontsMissing) { + fontsToLoad = Object.keys(fontsToLoad); + if (fontsToLoad.length !== 0) { + loadFonts(fontsToLoad); + } + haveToWait(this.instance); + } else { + var left = Infinity; + var right = -Infinity; + var top = y - 0.7 * 1.2 * fontSize; + var bottom = -Infinity; + for (i = 0; i < rows.length; ++i) { + var total = 0; + var pos = x; + row = rows[i]; + n = row.length; + for (j = 0; j < n; ++j) + total += row[j].width; + var pos = x - align * total; + for (j = 0; j < n; ++j) { + row[j].renderAt(pos, y); + if (left > pos) left = pos; + if (top > y - row[j].height) top = y - row[j].height; + if (bottom < y + row[j].depth) bottom = y + row[j].depth; + pos += row[j].width; + if (right < pos) right = pos; + } + y += lineHeight; + // TODO: take vertical dimensions of formulas into account + } + bottom = Math.max(bottom, y - lineHeight + 0.3 * 1.2 * fontSize); + return { + left: left, + right: right, + top: top, + bottom: bottom + }; + } + }; + + function katexHtml(element, text) { + var opts = { + macros: macros + }; + var parts = text.split("$"); + var n = parts.length; + if (n > 1 && !allScriptsLoaded()) { + if (firstMessage) { + log("KaTeX is not ready yet."); + firstMessage = false; + } + haveToWait(this.instance); + return false; + } + while (element.firstChild) + element.removeChild(element.firstChild); + for (var i = 0; i < n; ++i) { + var text = parts[i]; + if ((i & 1) === 0) { + if (text.indexOf("\n") !== -1) { + var rows = text.split("\n"); + element.appendChild(document.createTextNode(rows[0])); + for (var j = 1; j < rows.length; ++j) { + element.appendChild(document.createElement("br")); + element.appendChild(document.createTextNode(rows[j])); + } + } else { + element.appendChild(document.createTextNode(text)); + } + } else { + var span = document.createElement("span"); + katex.render(text, span, opts); + element.appendChild(span); + } + } + } +})(); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.ttf b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.ttf Binary files differnew file mode 100644 index 0000000000..da5797ffcc --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.ttf diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.woff b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.woff Binary files differnew file mode 100644 index 0000000000..37db672e82 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.woff diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.woff2 b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.woff2 Binary files differnew file mode 100644 index 0000000000..4882042489 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Main-Regular.woff2 diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.ttf b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.ttf Binary files differnew file mode 100644 index 0000000000..06f39d3a29 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.ttf diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.woff b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.woff Binary files differnew file mode 100644 index 0000000000..cf3b4b79e5 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.woff diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.woff2 b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.woff2 Binary files differnew file mode 100644 index 0000000000..5f8c4bfa45 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/fonts/KaTeX_Math-Italic.woff2 diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/katex.min.css b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/katex.min.css new file mode 100644 index 0000000000..d6fb8374d9 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/katex.min.css @@ -0,0 +1 @@ +@font-face{font-family:KaTeX_AMS;src:url(fonts/KaTeX_AMS-Regular.eot);src:url(fonts/KaTeX_AMS-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_AMS-Regular.woff2) format('woff2'),url(fonts/KaTeX_AMS-Regular.woff) format('woff'),url(fonts/KaTeX_AMS-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Bold.eot);src:url(fonts/KaTeX_Caligraphic-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Bold.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Bold.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Caligraphic;src:url(fonts/KaTeX_Caligraphic-Regular.eot);src:url(fonts/KaTeX_Caligraphic-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Caligraphic-Regular.woff2) format('woff2'),url(fonts/KaTeX_Caligraphic-Regular.woff) format('woff'),url(fonts/KaTeX_Caligraphic-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Bold.eot);src:url(fonts/KaTeX_Fraktur-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Bold.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Bold.woff) format('woff'),url(fonts/KaTeX_Fraktur-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Fraktur;src:url(fonts/KaTeX_Fraktur-Regular.eot);src:url(fonts/KaTeX_Fraktur-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Fraktur-Regular.woff2) format('woff2'),url(fonts/KaTeX_Fraktur-Regular.woff) format('woff'),url(fonts/KaTeX_Fraktur-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Bold.eot);src:url(fonts/KaTeX_Main-Bold.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Bold.woff2) format('woff2'),url(fonts/KaTeX_Main-Bold.woff) format('woff'),url(fonts/KaTeX_Main-Bold.ttf) format('truetype');font-weight:700;font-style:normal}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Italic.eot);src:url(fonts/KaTeX_Main-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Italic.woff2) format('woff2'),url(fonts/KaTeX_Main-Italic.woff) format('woff'),url(fonts/KaTeX_Main-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_Main;src:url(fonts/KaTeX_Main-Regular.eot);src:url(fonts/KaTeX_Main-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Main-Regular.woff2) format('woff2'),url(fonts/KaTeX_Main-Regular.woff) format('woff'),url(fonts/KaTeX_Main-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Math;src:url(fonts/KaTeX_Math-Italic.eot);src:url(fonts/KaTeX_Math-Italic.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Math-Italic.woff2) format('woff2'),url(fonts/KaTeX_Math-Italic.woff) format('woff'),url(fonts/KaTeX_Math-Italic.ttf) format('truetype');font-weight:400;font-style:italic}@font-face{font-family:KaTeX_SansSerif;src:url(fonts/KaTeX_SansSerif-Regular.eot);src:url(fonts/KaTeX_SansSerif-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_SansSerif-Regular.woff2) format('woff2'),url(fonts/KaTeX_SansSerif-Regular.woff) format('woff'),url(fonts/KaTeX_SansSerif-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Script;src:url(fonts/KaTeX_Script-Regular.eot);src:url(fonts/KaTeX_Script-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Script-Regular.woff2) format('woff2'),url(fonts/KaTeX_Script-Regular.woff) format('woff'),url(fonts/KaTeX_Script-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size1;src:url(fonts/KaTeX_Size1-Regular.eot);src:url(fonts/KaTeX_Size1-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size1-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size1-Regular.woff) format('woff'),url(fonts/KaTeX_Size1-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size2;src:url(fonts/KaTeX_Size2-Regular.eot);src:url(fonts/KaTeX_Size2-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size2-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size2-Regular.woff) format('woff'),url(fonts/KaTeX_Size2-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size3;src:url(fonts/KaTeX_Size3-Regular.eot);src:url(fonts/KaTeX_Size3-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size3-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size3-Regular.woff) format('woff'),url(fonts/KaTeX_Size3-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Size4;src:url(fonts/KaTeX_Size4-Regular.eot);src:url(fonts/KaTeX_Size4-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Size4-Regular.woff2) format('woff2'),url(fonts/KaTeX_Size4-Regular.woff) format('woff'),url(fonts/KaTeX_Size4-Regular.ttf) format('truetype');font-weight:400;font-style:normal}@font-face{font-family:KaTeX_Typewriter;src:url(fonts/KaTeX_Typewriter-Regular.eot);src:url(fonts/KaTeX_Typewriter-Regular.eot#iefix) format('embedded-opentype'),url(fonts/KaTeX_Typewriter-Regular.woff2) format('woff2'),url(fonts/KaTeX_Typewriter-Regular.woff) format('woff'),url(fonts/KaTeX_Typewriter-Regular.ttf) format('truetype');font-weight:400;font-style:normal}.katex-display{display:block;margin:1em 0;text-align:center}.katex-display>.katex{display:inline-block;text-align:initial}.katex{font:400 1.21em KaTeX_Main,Times New Roman,serif;line-height:1.2;white-space:nowrap;text-indent:0}.katex .katex-html{display:inline-block}.katex .katex-mathml{position:absolute;clip:rect(1px,1px,1px,1px);padding:0;border:0;height:1px;width:1px;overflow:hidden}.katex .base,.katex .strut{display:inline-block}.katex .mathrm{font-style:normal}.katex .textit{font-style:italic}.katex .mathit{font-family:KaTeX_Math;font-style:italic}.katex .mathbf{font-family:KaTeX_Main;font-weight:700}.katex .amsrm,.katex .mathbb{font-family:KaTeX_AMS}.katex .mathcal{font-family:KaTeX_Caligraphic}.katex .mathfrak{font-family:KaTeX_Fraktur}.katex .mathtt{font-family:KaTeX_Typewriter}.katex .mathscr{font-family:KaTeX_Script}.katex .mathsf{font-family:KaTeX_SansSerif}.katex .mainit{font-family:KaTeX_Main;font-style:italic}.katex .mord+.mop{margin-left:.16667em}.katex .mord+.mbin{margin-left:.22222em}.katex .mord+.mrel{margin-left:.27778em}.katex .mop+.mop,.katex .mop+.mord,.katex .mord+.minner{margin-left:.16667em}.katex .mop+.mrel{margin-left:.27778em}.katex .mop+.minner{margin-left:.16667em}.katex .mbin+.minner,.katex .mbin+.mop,.katex .mbin+.mopen,.katex .mbin+.mord{margin-left:.22222em}.katex .mrel+.minner,.katex .mrel+.mop,.katex .mrel+.mopen,.katex .mrel+.mord{margin-left:.27778em}.katex .mclose+.mop{margin-left:.16667em}.katex .mclose+.mbin{margin-left:.22222em}.katex .mclose+.mrel{margin-left:.27778em}.katex .mclose+.minner,.katex .minner+.mop,.katex .minner+.mord,.katex .mpunct+.mclose,.katex .mpunct+.minner,.katex .mpunct+.mop,.katex .mpunct+.mopen,.katex .mpunct+.mord,.katex .mpunct+.mpunct,.katex .mpunct+.mrel{margin-left:.16667em}.katex .minner+.mbin{margin-left:.22222em}.katex .minner+.mrel{margin-left:.27778em}.katex .minner+.minner,.katex .minner+.mopen,.katex .minner+.mpunct{margin-left:.16667em}.katex .mbin.mtight,.katex .mclose.mtight,.katex .minner.mtight,.katex .mop.mtight,.katex .mopen.mtight,.katex .mord.mtight,.katex .mpunct.mtight,.katex .mrel.mtight{margin-left:0}.katex .mclose+.mop.mtight,.katex .minner+.mop.mtight,.katex .mop+.mop.mtight,.katex .mop+.mord.mtight,.katex .mord+.mop.mtight{margin-left:.16667em}.katex .reset-textstyle.textstyle{font-size:1em}.katex .reset-textstyle.scriptstyle{font-size:.7em}.katex .reset-textstyle.scriptscriptstyle{font-size:.5em}.katex .reset-scriptstyle.textstyle{font-size:1.42857em}.katex .reset-scriptstyle.scriptstyle{font-size:1em}.katex .reset-scriptstyle.scriptscriptstyle{font-size:.71429em}.katex .reset-scriptscriptstyle.textstyle{font-size:2em}.katex .reset-scriptscriptstyle.scriptstyle{font-size:1.4em}.katex .reset-scriptscriptstyle.scriptscriptstyle{font-size:1em}.katex .style-wrap{position:relative}.katex .vlist{display:inline-block}.katex .vlist>span{display:block;height:0;position:relative}.katex .vlist>span>span{display:inline-block}.katex .vlist .baseline-fix{display:inline-table;table-layout:fixed}.katex .msupsub{text-align:left}.katex .mfrac>span>span{text-align:center}.katex .mfrac .frac-line{width:100%}.katex .mfrac .frac-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .mfrac .frac-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .mspace{display:inline-block}.katex .mspace.negativethinspace{margin-left:-.16667em}.katex .mspace.thinspace{width:.16667em}.katex .mspace.negativemediumspace{margin-left:-.22222em}.katex .mspace.mediumspace{width:.22222em}.katex .mspace.thickspace{width:.27778em}.katex .mspace.sixmuspace{width:.333333em}.katex .mspace.eightmuspace{width:.444444em}.katex .mspace.enspace{width:.5em}.katex .mspace.twelvemuspace{width:.666667em}.katex .mspace.quad{width:1em}.katex .mspace.qquad{width:2em}.katex .llap,.katex .rlap{width:0;position:relative}.katex .llap>.inner,.katex .rlap>.inner{position:absolute}.katex .llap>.fix,.katex .rlap>.fix{display:inline-block}.katex .llap>.inner{right:0}.katex .rlap>.inner{left:0}.katex .katex-logo .a{font-size:.75em;margin-left:-.32em;position:relative;top:-.2em}.katex .katex-logo .t{margin-left:-.23em}.katex .katex-logo .e{margin-left:-.1667em;position:relative;top:.2155em}.katex .katex-logo .x{margin-left:-.125em}.katex .rule{display:inline-block;border:0 solid;position:relative}.katex .overline .overline-line,.katex .underline .underline-line{width:100%}.katex .overline .overline-line:before,.katex .underline .underline-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .overline .overline-line:after,.katex .underline .underline-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.sqrt-sign{position:relative}.katex .sqrt .sqrt-line{width:100%}.katex .sqrt .sqrt-line:before{border-bottom-style:solid;border-bottom-width:1px;content:"";display:block}.katex .sqrt .sqrt-line:after{border-bottom-style:solid;border-bottom-width:.04em;content:"";display:block;margin-top:-1px}.katex .sqrt>.root{margin-left:.27777778em;margin-right:-.55555556em}.katex .fontsize-ensurer,.katex .sizing{display:inline-block}.katex .fontsize-ensurer.reset-size1.size1,.katex .sizing.reset-size1.size1{font-size:1em}.katex .fontsize-ensurer.reset-size1.size2,.katex .sizing.reset-size1.size2{font-size:1.4em}.katex .fontsize-ensurer.reset-size1.size3,.katex .sizing.reset-size1.size3{font-size:1.6em}.katex .fontsize-ensurer.reset-size1.size4,.katex .sizing.reset-size1.size4{font-size:1.8em}.katex .fontsize-ensurer.reset-size1.size5,.katex .sizing.reset-size1.size5{font-size:2em}.katex .fontsize-ensurer.reset-size1.size6,.katex .sizing.reset-size1.size6{font-size:2.4em}.katex .fontsize-ensurer.reset-size1.size7,.katex .sizing.reset-size1.size7{font-size:2.88em}.katex .fontsize-ensurer.reset-size1.size8,.katex .sizing.reset-size1.size8{font-size:3.46em}.katex .fontsize-ensurer.reset-size1.size9,.katex .sizing.reset-size1.size9{font-size:4.14em}.katex .fontsize-ensurer.reset-size1.size10,.katex .sizing.reset-size1.size10{font-size:4.98em}.katex .fontsize-ensurer.reset-size2.size1,.katex .sizing.reset-size2.size1{font-size:.71428571em}.katex .fontsize-ensurer.reset-size2.size2,.katex .sizing.reset-size2.size2{font-size:1em}.katex .fontsize-ensurer.reset-size2.size3,.katex .sizing.reset-size2.size3{font-size:1.14285714em}.katex .fontsize-ensurer.reset-size2.size4,.katex .sizing.reset-size2.size4{font-size:1.28571429em}.katex .fontsize-ensurer.reset-size2.size5,.katex .sizing.reset-size2.size5{font-size:1.42857143em}.katex .fontsize-ensurer.reset-size2.size6,.katex .sizing.reset-size2.size6{font-size:1.71428571em}.katex .fontsize-ensurer.reset-size2.size7,.katex .sizing.reset-size2.size7{font-size:2.05714286em}.katex .fontsize-ensurer.reset-size2.size8,.katex .sizing.reset-size2.size8{font-size:2.47142857em}.katex .fontsize-ensurer.reset-size2.size9,.katex .sizing.reset-size2.size9{font-size:2.95714286em}.katex .fontsize-ensurer.reset-size2.size10,.katex .sizing.reset-size2.size10{font-size:3.55714286em}.katex .fontsize-ensurer.reset-size3.size1,.katex .sizing.reset-size3.size1{font-size:.625em}.katex .fontsize-ensurer.reset-size3.size2,.katex .sizing.reset-size3.size2{font-size:.875em}.katex .fontsize-ensurer.reset-size3.size3,.katex .sizing.reset-size3.size3{font-size:1em}.katex .fontsize-ensurer.reset-size3.size4,.katex .sizing.reset-size3.size4{font-size:1.125em}.katex .fontsize-ensurer.reset-size3.size5,.katex .sizing.reset-size3.size5{font-size:1.25em}.katex .fontsize-ensurer.reset-size3.size6,.katex .sizing.reset-size3.size6{font-size:1.5em}.katex .fontsize-ensurer.reset-size3.size7,.katex .sizing.reset-size3.size7{font-size:1.8em}.katex .fontsize-ensurer.reset-size3.size8,.katex .sizing.reset-size3.size8{font-size:2.1625em}.katex .fontsize-ensurer.reset-size3.size9,.katex .sizing.reset-size3.size9{font-size:2.5875em}.katex .fontsize-ensurer.reset-size3.size10,.katex .sizing.reset-size3.size10{font-size:3.1125em}.katex .fontsize-ensurer.reset-size4.size1,.katex .sizing.reset-size4.size1{font-size:.55555556em}.katex .fontsize-ensurer.reset-size4.size2,.katex .sizing.reset-size4.size2{font-size:.77777778em}.katex .fontsize-ensurer.reset-size4.size3,.katex .sizing.reset-size4.size3{font-size:.88888889em}.katex .fontsize-ensurer.reset-size4.size4,.katex .sizing.reset-size4.size4{font-size:1em}.katex .fontsize-ensurer.reset-size4.size5,.katex .sizing.reset-size4.size5{font-size:1.11111111em}.katex .fontsize-ensurer.reset-size4.size6,.katex .sizing.reset-size4.size6{font-size:1.33333333em}.katex .fontsize-ensurer.reset-size4.size7,.katex .sizing.reset-size4.size7{font-size:1.6em}.katex .fontsize-ensurer.reset-size4.size8,.katex .sizing.reset-size4.size8{font-size:1.92222222em}.katex .fontsize-ensurer.reset-size4.size9,.katex .sizing.reset-size4.size9{font-size:2.3em}.katex .fontsize-ensurer.reset-size4.size10,.katex .sizing.reset-size4.size10{font-size:2.76666667em}.katex .fontsize-ensurer.reset-size5.size1,.katex .sizing.reset-size5.size1{font-size:.5em}.katex .fontsize-ensurer.reset-size5.size2,.katex .sizing.reset-size5.size2{font-size:.7em}.katex .fontsize-ensurer.reset-size5.size3,.katex .sizing.reset-size5.size3{font-size:.8em}.katex .fontsize-ensurer.reset-size5.size4,.katex .sizing.reset-size5.size4{font-size:.9em}.katex .fontsize-ensurer.reset-size5.size5,.katex .sizing.reset-size5.size5{font-size:1em}.katex .fontsize-ensurer.reset-size5.size6,.katex .sizing.reset-size5.size6{font-size:1.2em}.katex .fontsize-ensurer.reset-size5.size7,.katex .sizing.reset-size5.size7{font-size:1.44em}.katex .fontsize-ensurer.reset-size5.size8,.katex .sizing.reset-size5.size8{font-size:1.73em}.katex .fontsize-ensurer.reset-size5.size9,.katex .sizing.reset-size5.size9{font-size:2.07em}.katex .fontsize-ensurer.reset-size5.size10,.katex .sizing.reset-size5.size10{font-size:2.49em}.katex .fontsize-ensurer.reset-size6.size1,.katex .sizing.reset-size6.size1{font-size:.41666667em}.katex .fontsize-ensurer.reset-size6.size2,.katex .sizing.reset-size6.size2{font-size:.58333333em}.katex .fontsize-ensurer.reset-size6.size3,.katex .sizing.reset-size6.size3{font-size:.66666667em}.katex .fontsize-ensurer.reset-size6.size4,.katex .sizing.reset-size6.size4{font-size:.75em}.katex .fontsize-ensurer.reset-size6.size5,.katex .sizing.reset-size6.size5{font-size:.83333333em}.katex .fontsize-ensurer.reset-size6.size6,.katex .sizing.reset-size6.size6{font-size:1em}.katex .fontsize-ensurer.reset-size6.size7,.katex .sizing.reset-size6.size7{font-size:1.2em}.katex .fontsize-ensurer.reset-size6.size8,.katex .sizing.reset-size6.size8{font-size:1.44166667em}.katex .fontsize-ensurer.reset-size6.size9,.katex .sizing.reset-size6.size9{font-size:1.725em}.katex .fontsize-ensurer.reset-size6.size10,.katex .sizing.reset-size6.size10{font-size:2.075em}.katex .fontsize-ensurer.reset-size7.size1,.katex .sizing.reset-size7.size1{font-size:.34722222em}.katex .fontsize-ensurer.reset-size7.size2,.katex .sizing.reset-size7.size2{font-size:.48611111em}.katex .fontsize-ensurer.reset-size7.size3,.katex .sizing.reset-size7.size3{font-size:.55555556em}.katex .fontsize-ensurer.reset-size7.size4,.katex .sizing.reset-size7.size4{font-size:.625em}.katex .fontsize-ensurer.reset-size7.size5,.katex .sizing.reset-size7.size5{font-size:.69444444em}.katex .fontsize-ensurer.reset-size7.size6,.katex .sizing.reset-size7.size6{font-size:.83333333em}.katex .fontsize-ensurer.reset-size7.size7,.katex .sizing.reset-size7.size7{font-size:1em}.katex .fontsize-ensurer.reset-size7.size8,.katex .sizing.reset-size7.size8{font-size:1.20138889em}.katex .fontsize-ensurer.reset-size7.size9,.katex .sizing.reset-size7.size9{font-size:1.4375em}.katex .fontsize-ensurer.reset-size7.size10,.katex .sizing.reset-size7.size10{font-size:1.72916667em}.katex .fontsize-ensurer.reset-size8.size1,.katex .sizing.reset-size8.size1{font-size:.28901734em}.katex .fontsize-ensurer.reset-size8.size2,.katex .sizing.reset-size8.size2{font-size:.40462428em}.katex .fontsize-ensurer.reset-size8.size3,.katex .sizing.reset-size8.size3{font-size:.46242775em}.katex .fontsize-ensurer.reset-size8.size4,.katex .sizing.reset-size8.size4{font-size:.52023121em}.katex .fontsize-ensurer.reset-size8.size5,.katex .sizing.reset-size8.size5{font-size:.57803468em}.katex .fontsize-ensurer.reset-size8.size6,.katex .sizing.reset-size8.size6{font-size:.69364162em}.katex .fontsize-ensurer.reset-size8.size7,.katex .sizing.reset-size8.size7{font-size:.83236994em}.katex .fontsize-ensurer.reset-size8.size8,.katex .sizing.reset-size8.size8{font-size:1em}.katex .fontsize-ensurer.reset-size8.size9,.katex .sizing.reset-size8.size9{font-size:1.19653179em}.katex .fontsize-ensurer.reset-size8.size10,.katex .sizing.reset-size8.size10{font-size:1.43930636em}.katex .fontsize-ensurer.reset-size9.size1,.katex .sizing.reset-size9.size1{font-size:.24154589em}.katex .fontsize-ensurer.reset-size9.size2,.katex .sizing.reset-size9.size2{font-size:.33816425em}.katex .fontsize-ensurer.reset-size9.size3,.katex .sizing.reset-size9.size3{font-size:.38647343em}.katex .fontsize-ensurer.reset-size9.size4,.katex .sizing.reset-size9.size4{font-size:.43478261em}.katex .fontsize-ensurer.reset-size9.size5,.katex .sizing.reset-size9.size5{font-size:.48309179em}.katex .fontsize-ensurer.reset-size9.size6,.katex .sizing.reset-size9.size6{font-size:.57971014em}.katex .fontsize-ensurer.reset-size9.size7,.katex .sizing.reset-size9.size7{font-size:.69565217em}.katex .fontsize-ensurer.reset-size9.size8,.katex .sizing.reset-size9.size8{font-size:.83574879em}.katex .fontsize-ensurer.reset-size9.size9,.katex .sizing.reset-size9.size9{font-size:1em}.katex .fontsize-ensurer.reset-size9.size10,.katex .sizing.reset-size9.size10{font-size:1.20289855em}.katex .fontsize-ensurer.reset-size10.size1,.katex .sizing.reset-size10.size1{font-size:.20080321em}.katex .fontsize-ensurer.reset-size10.size2,.katex .sizing.reset-size10.size2{font-size:.2811245em}.katex .fontsize-ensurer.reset-size10.size3,.katex .sizing.reset-size10.size3{font-size:.32128514em}.katex .fontsize-ensurer.reset-size10.size4,.katex .sizing.reset-size10.size4{font-size:.36144578em}.katex .fontsize-ensurer.reset-size10.size5,.katex .sizing.reset-size10.size5{font-size:.40160643em}.katex .fontsize-ensurer.reset-size10.size6,.katex .sizing.reset-size10.size6{font-size:.48192771em}.katex .fontsize-ensurer.reset-size10.size7,.katex .sizing.reset-size10.size7{font-size:.57831325em}.katex .fontsize-ensurer.reset-size10.size8,.katex .sizing.reset-size10.size8{font-size:.69477912em}.katex .fontsize-ensurer.reset-size10.size9,.katex .sizing.reset-size10.size9{font-size:.8313253em}.katex .fontsize-ensurer.reset-size10.size10,.katex .sizing.reset-size10.size10{font-size:1em}.katex .delimsizing.size1{font-family:KaTeX_Size1}.katex .delimsizing.size2{font-family:KaTeX_Size2}.katex .delimsizing.size3{font-family:KaTeX_Size3}.katex .delimsizing.size4{font-family:KaTeX_Size4}.katex .delimsizing.mult .delim-size1>span{font-family:KaTeX_Size1}.katex .delimsizing.mult .delim-size4>span{font-family:KaTeX_Size4}.katex .nulldelimiter{display:inline-block;width:.12em}.katex .op-symbol{position:relative}.katex .op-symbol.small-op{font-family:KaTeX_Size1}.katex .op-symbol.large-op{font-family:KaTeX_Size2}.katex .accent>.vlist>span,.katex .op-limits>.vlist>span{text-align:center}.katex .accent .accent-body>span{width:0}.katex .accent .accent-body.accent-vec>span{position:relative;left:.326em}.katex .mtable .vertical-separator{display:inline-block;margin:0 -.025em;border-right:.05em solid #000}.katex .mtable .arraycolsep{display:inline-block}.katex .mtable .col-align-c>.vlist{text-align:center}.katex .mtable .col-align-l>.vlist{text-align:left}.katex .mtable .col-align-r>.vlist{text-align:right}
\ No newline at end of file diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/katex.min.js b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/katex.min.js new file mode 100644 index 0000000000..b66e0aca87 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/katex/katex.min.js @@ -0,0 +1,5 @@ +(function(e){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=e()}else if(typeof define==="function"&&define.amd){define([],e)}else{var t;if(typeof window!=="undefined"){t=window}else if(typeof global!=="undefined"){t=global}else if(typeof self!=="undefined"){t=self}else{t=this}t.katex=e()}})(function(){var e,t,r;return function a(e,t,r){function i(n,l){if(!t[n]){if(!e[n]){var o=typeof require=="function"&&require;if(!l&&o)return o(n,!0);if(s)return s(n,!0);var u=new Error("Cannot find module '"+n+"'");throw u.code="MODULE_NOT_FOUND",u}var h=t[n]={exports:{}};e[n][0].call(h.exports,function(t){var r=e[n][1][t];return i(r?r:t)},h,h.exports,a,e,t,r)}return t[n].exports}var s=typeof require=="function"&&require;for(var n=0;n<r.length;n++)i(r[n]);return i}({1:[function(e,t,r){var a=e("./src/ParseError");var i=e("./src/Settings");var s=e("./src/buildHTML");var n=e("./src/buildTree");var l=e("./src/canvasRenderer");var o=e("./src/parseTree");var u=e("./src/utils");var h=function(e,t,r){u.clearNode(t);var a=new i(r);var s=o(e,a);var l=n(s,e,a).toNode();t.appendChild(l)};if(typeof document!=="undefined"){if(document.compatMode!=="CSS1Compat"){typeof console!=="undefined"&&console.warn("Warning: KaTeX doesn't work in quirks mode. Make sure your "+"website has a suitable doctype.");h=function(){throw new a("KaTeX doesn't work in quirks mode.")}}}var c=function(e,t){var r=new i(t);var a=o(e,r);return n(a,e,r).toMarkup()};var p=function(e,t,r,a,n){var u=new i(n);var h=o(e,u);var c=s(h,u.initialOptions());l.render(c,t,r,a,n)};var m=function(e,t,r){var a=new i(r);var n=o(e,a);var u=s(n,a.initialOptions());return l.prepare(u,t,r)};var f=function(e,t){var r=new i(t);return o(e,r)};t.exports={render:h,renderToString:c,renderToCanvas:p,canvasBox:m,__parse:f,ParseError:a}},{"./src/ParseError":6,"./src/Settings":8,"./src/buildHTML":11,"./src/buildTree":13,"./src/canvasRenderer":14,"./src/parseTree":23,"./src/utils":26}],2:[function(e,t,r){"use strict";function a(e){if(!e.__matchAtRelocatable){var t=e.source+"|()";var r="g"+(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"");e.__matchAtRelocatable=new RegExp(t,r)}return e.__matchAtRelocatable}function i(e,t,r){if(e.global||e.sticky){throw new Error("matchAt(...): Only non-global regexes are supported")}var i=a(e);i.lastIndex=r;var s=i.exec(t);if(s[s.length-1]==null){s.length=s.length-1;return s}else{return null}}t.exports=i},{}],3:[function(e,t,r){var a=e("match-at");var i=e("./ParseError");function s(e){this.input=e;this.pos=0}function n(e,t,r,a){this.text=e;this.start=t;this.end=r;this.lexer=a}n.prototype.range=function(e,t){if(e.lexer!==this.lexer){return new n(t)}return new n(t,this.start,e.end,this.lexer)};var l=new RegExp("([ \r\n ]+)|"+"([!-\\[\\]-\u2027\u202a-\ud7ff\uf900-\uffff]"+"|[\ud800-\udbff][\udc00-\udfff]"+"|\\\\(?:[a-zA-Z]+|[^\ud800-\udfff])"+")");s.prototype.lex=function(){var e=this.input;var t=this.pos;if(t===e.length){return new n("EOF",t,t,this)}var r=a(l,e,t);if(r===null){throw new i("Unexpected character: '"+e[t]+"'",new n(e[t],t,t+1,this))}var s=r[2]||" ";var o=this.pos;this.pos+=r[0].length;var u=this.pos;return new n(s,o,u,this)};t.exports=s},{"./ParseError":6,"match-at":2}],4:[function(e,t,r){var a=e("./Lexer");function i(e,t){this.lexer=new a(e);this.macros=t;this.stack=[];this.discardedWhiteSpace=[]}i.prototype.nextToken=function(){for(;;){if(this.stack.length===0){this.stack.push(this.lexer.lex())}var e=this.stack.pop();var t=e.text;if(!(t.charAt(0)==="\\"&&this.macros.hasOwnProperty(t))){return e}var r=this.macros[t];if(typeof r==="string"){var i=new a(r);r=[];var s=i.lex();while(s.text!=="EOF"){r.push(s);s=i.lex()}r.reverse();this.macros[t]=r}this.stack=this.stack.concat(r)}};i.prototype.get=function(e){this.discardedWhiteSpace=[];var t=this.nextToken();if(e){while(t.text===" "){this.discardedWhiteSpace.push(t);t=this.nextToken()}}return t};i.prototype.unget=function(e){this.stack.push(e);while(this.discardedWhiteSpace.length!==0){this.stack.push(this.discardedWhiteSpace.pop())}};t.exports=i},{"./Lexer":3}],5:[function(e,t,r){function a(e){this.style=e.style;this.color=e.color;this.size=e.size;this.phantom=e.phantom;this.font=e.font;if(e.parentStyle===undefined){this.parentStyle=e.style}else{this.parentStyle=e.parentStyle}if(e.parentSize===undefined){this.parentSize=e.size}else{this.parentSize=e.parentSize}}a.prototype.extend=function(e){var t={style:this.style,size:this.size,color:this.color,parentStyle:this.style,parentSize:this.size,phantom:this.phantom,font:this.font};for(var r in e){if(e.hasOwnProperty(r)){t[r]=e[r]}}return new a(t)};a.prototype.withStyle=function(e){return this.extend({style:e})};a.prototype.withSize=function(e){return this.extend({size:e})};a.prototype.withColor=function(e){return this.extend({color:e})};a.prototype.withPhantom=function(){return this.extend({phantom:true})};a.prototype.withFont=function(e){return this.extend({font:e||this.font})};a.prototype.reset=function(){return this.extend({})};var i={"katex-blue":"#6495ed","katex-orange":"#ffa500","katex-pink":"#ff00af","katex-red":"#df0030","katex-green":"#28ae7b","katex-gray":"gray","katex-purple":"#9d38bd","katex-blueA":"#ccfaff","katex-blueB":"#80f6ff","katex-blueC":"#63d9ea","katex-blueD":"#11accd","katex-blueE":"#0c7f99","katex-tealA":"#94fff5","katex-tealB":"#26edd5","katex-tealC":"#01d1c1","katex-tealD":"#01a995","katex-tealE":"#208170","katex-greenA":"#b6ffb0","katex-greenB":"#8af281","katex-greenC":"#74cf70","katex-greenD":"#1fab54","katex-greenE":"#0d923f","katex-goldA":"#ffd0a9","katex-goldB":"#ffbb71","katex-goldC":"#ff9c39","katex-goldD":"#e07d10","katex-goldE":"#a75a05","katex-redA":"#fca9a9","katex-redB":"#ff8482","katex-redC":"#f9685d","katex-redD":"#e84d39","katex-redE":"#bc2612","katex-maroonA":"#ffbde0","katex-maroonB":"#ff92c6","katex-maroonC":"#ed5fa6","katex-maroonD":"#ca337c","katex-maroonE":"#9e034e","katex-purpleA":"#ddd7ff","katex-purpleB":"#c6b9fc","katex-purpleC":"#aa87ff","katex-purpleD":"#7854ab","katex-purpleE":"#543b78","katex-mintA":"#f5f9e8","katex-mintB":"#edf2df","katex-mintC":"#e0e5cc","katex-grayA":"#f6f7f7","katex-grayB":"#f0f1f2","katex-grayC":"#e3e5e6","katex-grayD":"#d6d8da","katex-grayE":"#babec2","katex-grayF":"#888d93","katex-grayG":"#626569","katex-grayH":"#3b3e40","katex-grayI":"#21242c","katex-kaBlue":"#314453","katex-kaGreen":"#71B307"};a.prototype.getColor=function(){if(this.phantom){return"transparent"}else{return i[this.color]||this.color}};t.exports=a},{}],6:[function(e,t,r){function a(e,t){var r="KaTeX parse error: "+e;var i;var s;if(t&&t.lexer&&t.start<=t.end){var n=t.lexer.input;i=t.start;s=t.end;if(i===n.length){r+=" at end of input: "}else{r+=" at position "+(i+1)+": "}var l=n.slice(i,s).replace(/[^]/g,"$&\u0332");var o;if(i>15){o="\u2026"+n.slice(i-15,i)}else{o=n.slice(0,i)}var u;if(s+15<n.length){u=n.slice(s,s+15)+"\u2026"}else{u=n.slice(s)}r+=o+l+u}var h=new Error(r);h.name="ParseError";h.__proto__=a.prototype;h.position=i;return h}a.prototype.__proto__=Error.prototype;t.exports=a},{}],7:[function(e,t,r){var a=e("./functions");var i=e("./environments");var s=e("./MacroExpander");var n=e("./symbols");var l=e("./utils");var o=e("./unicodeRegexes").cjkRegex;var u=e("./parseData");var h=e("./ParseError");function c(e,t){this.gullet=new s(e,t.macros);this.settings=t;this.leftrightDepth=0}var p=u.ParseNode;function m(e,t,r){this.result=e;this.isFunction=t;this.token=r}c.prototype.expect=function(e,t){if(this.nextToken.text!==e){throw new h("Expected '"+e+"', got '"+this.nextToken.text+"'",this.nextToken)}if(t!==false){this.consume()}};c.prototype.consume=function(){this.nextToken=this.gullet.get(this.mode==="math")};c.prototype.switchMode=function(e){this.gullet.unget(this.nextToken);this.mode=e;this.consume()};c.prototype.parse=function(){this.mode="math";this.consume();var e=this.parseInput();return e};c.prototype.parseInput=function(){var e=this.parseExpression(false);this.expect("EOF",false);return e};var f=["}","\\end","\\right","&","\\\\","\\cr"];c.prototype.parseExpression=function(e,t){var r=[];while(true){var i=this.nextToken;if(f.indexOf(i.text)!==-1){break}if(t&&i.text===t){break}if(e&&a[i.text]&&a[i.text].infix){break}var s=this.parseAtom();if(!s){if(!this.settings.throwOnError&&i.text[0]==="\\"){var n=this.handleUnsupportedCmd();r.push(n);continue}break}r.push(s)}return this.handleInfixNodes(r)};c.prototype.handleInfixNodes=function(e){var t=-1;var r;for(var a=0;a<e.length;a++){var i=e[a];if(i.type==="infix"){if(t!==-1){throw new h("only one infix operator per group",i.value.token)}t=a;r=i.value.replaceWith}}if(t!==-1){var s;var n;var l=e.slice(0,t);var o=e.slice(t+1);if(l.length===1&&l[0].type==="ordgroup"){s=l[0]}else{s=new p("ordgroup",l,this.mode)}if(o.length===1&&o[0].type==="ordgroup"){n=o[0]}else{n=new p("ordgroup",o,this.mode)}var u=this.callFunction(r,[s,n],null);return[new p(u.type,u,this.mode)]}else{return e}};var v=1;c.prototype.handleSupSubscript=function(e){var t=this.nextToken;var r=t.text;this.consume();var i=this.parseGroup();if(!i){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){return this.handleUnsupportedCmd()}else{throw new h("Expected group after '"+r+"'",t)}}else if(i.isFunction){var s=a[i.result].greediness;if(s>v){return this.parseFunction(i)}else{throw new h("Got function '"+i.result+"' with no arguments "+"as "+e,t)}}else{return i.result}};c.prototype.handleUnsupportedCmd=function(){var e=this.nextToken.text;var t=[];for(var r=0;r<e.length;r++){t.push(new p("textord",e[r],"text"))}var a=new p("text",{body:t,type:"text"},this.mode);var i=new p("color",{color:this.settings.errorColor,value:[a],type:"color"},this.mode);this.consume();return i};c.prototype.parseAtom=function(){var e=this.parseImplicitGroup();if(this.mode==="text"){return e}var t;var r;while(true){var a=this.nextToken;if(a.text==="\\limits"||a.text==="\\nolimits"){if(!e||e.type!=="op"){throw new h("Limit controls must follow a math operator",a)}else{var i=a.text==="\\limits";e.value.limits=i;e.value.alwaysHandleSupSub=true}this.consume()}else if(a.text==="^"){if(t){throw new h("Double superscript",a)}t=this.handleSupSubscript("superscript")}else if(a.text==="_"){if(r){throw new h("Double subscript",a)}r=this.handleSupSubscript("subscript")}else if(a.text==="'"){var s=new p("textord","\\prime",this.mode);var n=[s];this.consume();while(this.nextToken.text==="'"){n.push(s);this.consume()}t=new p("ordgroup",n,this.mode)}else{break}}if(t||r){return new p("supsub",{base:e,sup:t,sub:r},this.mode)}else{return e}};var d=["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"];var g=["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"];c.prototype.parseImplicitGroup=function(){var e=this.parseSymbol();if(e==null){return this.parseFunction()}var t=e.result;var r;if(t==="\\left"){var a=this.parseFunction(e);++this.leftrightDepth;r=this.parseExpression(false);--this.leftrightDepth;this.expect("\\right",false);var s=this.parseFunction();return new p("leftright",{body:r,left:a.value.value,right:s.value.value},this.mode)}else if(t==="\\begin"){var n=this.parseFunction(e);var o=n.value.name;if(!i.hasOwnProperty(o)){throw new h("No such environment: "+o,n.value.nameGroup)}var u=i[o];var c=this.parseArguments("\\begin{"+o+"}",u);var m={mode:this.mode,envName:o,parser:this,positions:c.pop()};var f=u.handler(m,c);this.expect("\\end",false);var v=this.nextToken;var y=this.parseFunction();if(y.value.name!==o){throw new h("Mismatch: \\begin{"+o+"} matched "+"by \\end{"+y.value.name+"}",v)}f.position=y.position;return f}else if(l.contains(d,t)){r=this.parseExpression(false);return new p("sizing",{size:"size"+(l.indexOf(d,t)+1),value:r},this.mode)}else if(l.contains(g,t)){r=this.parseExpression(true);return new p("styling",{style:t.slice(1,t.length-5),value:r},this.mode)}else{return this.parseFunction(e)}};c.prototype.parseFunction=function(e){if(!e){e=this.parseGroup()}if(e){if(e.isFunction){var t=e.result;var r=a[t];if(this.mode==="text"&&!r.allowedInText){throw new h("Can't use function '"+t+"' in text mode",e.token)}var i=this.parseArguments(t,r);var s=e.token;var n=this.callFunction(t,i,i.pop(),s);return new p(n.type,n,this.mode)}else{return e.result}}else{return null}};c.prototype.callFunction=function(e,t,r,i){var s={funcName:e,parser:this,positions:r,token:i};return a[e].handler(s,t)};c.prototype.parseArguments=function(e,t){var r=t.numArgs+t.numOptionalArgs;if(r===0){return[[this.pos]]}var i=t.greediness;var s=[this.pos];var n=[];for(var l=0;l<r;l++){var o=this.nextToken;var u=t.argTypes&&t.argTypes[l];var c;if(l<t.numOptionalArgs){if(u){c=this.parseGroupOfType(u,true)}else{c=this.parseGroup(true)}if(!c){n.push(null);s.push(this.pos);continue}}else{if(u){c=this.parseGroupOfType(u)}else{c=this.parseGroup()}if(!c){if(!this.settings.throwOnError&&this.nextToken.text[0]==="\\"){c=new m(this.handleUnsupportedCmd(this.nextToken.text),false)}else{throw new h("Expected group after '"+e+"'",o)}}}var p;if(c.isFunction){var f=a[c.result].greediness;if(f>i){p=this.parseFunction(c)}else{throw new h("Got function '"+c.result+"' as "+"argument to '"+e+"'",o)}}else{p=c.result}n.push(p);s.push(this.pos)}n.push(s);return n};c.prototype.parseGroupOfType=function(e,t){var r=this.mode;if(e==="original"){e=r}if(e==="color"){return this.parseColorGroup(t)}if(e==="size"){return this.parseSizeGroup(t)}this.switchMode(e);if(e==="text"){while(this.nextToken.text===" "){this.consume()}}var a=this.parseGroup(t);this.switchMode(r);return a};c.prototype.parseStringGroup=function(e,t){if(t&&this.nextToken.text!=="["){return null}var r=this.mode;this.mode="text";this.expect(t?"[":"{");var a="";var i=this.nextToken;var s=i;while(this.nextToken.text!==(t?"]":"}")){if(this.nextToken.text==="EOF"){throw new h("Unexpected end of input in "+e,i.range(this.nextToken,a))}s=this.nextToken;a+=s.text;this.consume()}this.mode=r;this.expect(t?"]":"}");return i.range(s,a)};c.prototype.parseRegexGroup=function(e,t){var r=this.mode;this.mode="text";var a=this.nextToken;var i=a;var s="";while(this.nextToken.text!=="EOF"&&e.test(s+this.nextToken.text)){i=this.nextToken;s+=i.text;this.consume()}if(s===""){throw new h("Invalid "+t+": '"+a.text+"'",a)}this.mode=r;return a.range(i,s)};c.prototype.parseColorGroup=function(e){var t=this.parseStringGroup("color",e);if(!t){return null}var r=/^(#[a-z0-9]+|[a-z]+)$/i.exec(t.text);if(!r){throw new h("Invalid color: '"+t.text+"'",t)}return new m(new p("color",r[0],this.mode),false)};c.prototype.parseSizeGroup=function(e){var t;if(!e&&this.nextToken.text!=="{"){t=this.parseRegexGroup(/^[-+]? *(?:$|\d+|\d+\.\d*|\.\d*) *[a-z]{0,2}$/,"size")}else{t=this.parseStringGroup("size",e)}if(!t){return null}var r=/([-+]?) *(\d+(?:\.\d*)?|\.\d+) *([a-z]{2})/.exec(t.text);if(!r){throw new h("Invalid size: '"+t.text+"'",t)}var a={number:+(r[1]+r[2]),unit:r[3]};if(a.unit!=="em"&&a.unit!=="ex"&&a.unit!=="mu"){throw new h("Invalid unit: '"+a.unit+"'",t)}return new m(new p("color",a,this.mode),false)};c.prototype.parseGroup=function(e){var t=this.nextToken;if(this.nextToken.text===(e?"[":"{")){this.consume();var r=this.parseExpression(false,e?"]":null);var a=this.nextToken;this.expect(e?"]":"}");if(this.mode==="text"){this.formLigatures(r)}return new m(new p("ordgroup",r,this.mode,t,a),false)}else{return e?null:this.parseSymbol()}};c.prototype.formLigatures=function(e){var t;var r=e.length-1;for(t=0;t<r;++t){var a=e[t];var i=a.value;if(i==="-"&&e[t+1].value==="-"){if(t+1<r&&e[t+2].value==="-"){e.splice(t,3,new p("textord","---","text",a,e[t+2]));r-=2}else{e.splice(t,2,new p("textord","--","text",a,e[t+1]));r-=1}}if((i==="'"||i==="`")&&e[t+1].value===i){e.splice(t,2,new p("textord",i+i,"text",a,e[t+1]));r-=1}}};c.prototype.parseSymbol=function(){var e=this.nextToken;if(a[e.text]){this.consume();return new m(e.text,true,e)}else if(n[this.mode][e.text]){this.consume();return new m(new p(n[this.mode][e.text].group,e.text,this.mode,e),false,e)}else if(this.mode==="text"&&o.test(e.text)){this.consume();return new m(new p("textord",e.text,this.mode,e),false,e)}else{return null}};c.prototype.ParseNode=p;t.exports=c},{"./MacroExpander":4,"./ParseError":6,"./environments":17,"./functions":20,"./parseData":22,"./symbols":24,"./unicodeRegexes":25,"./utils":26}],8:[function(e,t,r){var a=e("./Options");var i=e("./Style");function s(e,t){return e===undefined?t:e}function n(e){e=e||{};this.displayMode=s(e.displayMode,false);this.throwOnError=s(e.throwOnError,true);this.errorColor=s(e.errorColor,"#cc0000");this.macros=e.macros||{}}n.prototype.initialOptions=function(){var e=i.TEXT;if(this.displayMode){e=i.DISPLAY}var t=new a({style:e,size:"size5"});return t};t.exports=n},{"./Options":5,"./Style":9}],9:[function(e,t,r){var a=e("./fontMetrics.js").sigmas;var i=[{},{},{}];var s;for(var n in a){if(a.hasOwnProperty(n)){for(s=0;s<3;s++){i[s][n]=a[n][s]}}}for(s=0;s<3;s++){i[s].emPerEx=a.xHeight[s]/a.quad[s]}function l(e,t,r,a){this.id=e;this.size=t;this.cramped=a;this.sizeMultiplier=r;this.metrics=i[t>0?t-1:0]}l.prototype.sup=function(){return y[b[this.id]]};l.prototype.sub=function(){return y[w[this.id]]};l.prototype.fracNum=function(){return y[x[this.id]]};l.prototype.fracDen=function(){return y[k[this.id]]};l.prototype.cramp=function(){return y[z[this.id]]};l.prototype.cls=function(){return d[this.size]+(this.cramped?" cramped":" uncramped")};l.prototype.reset=function(){return g[this.size]};l.prototype.isTight=function(){return this.size>=2};var o=0;var u=1;var h=2;var c=3;var p=4;var m=5;var f=6;var v=7;var d=["displaystyle textstyle","textstyle","scriptstyle","scriptscriptstyle"];var g=["reset-textstyle","reset-textstyle","reset-scriptstyle","reset-scriptscriptstyle"];var y=[new l(o,0,1,false),new l(u,0,1,true),new l(h,1,1,false),new l(c,1,1,true),new l(p,2,.7,false),new l(m,2,.7,true),new l(f,3,.5,false),new l(v,3,.5,true)];var b=[p,m,p,m,f,v,f,v];var w=[m,m,m,m,v,v,v,v];var x=[h,c,p,m,f,v,f,v];var k=[c,c,m,m,v,v,v,v];var z=[u,u,c,c,m,m,v,v];t.exports={DISPLAY:y[o],TEXT:y[h],SCRIPT:y[p],SCRIPTSCRIPT:y[f]}},{"./fontMetrics.js":18}],10:[function(e,t,r){var a=e("./domTree");var i=e("./fontMetrics");var s=e("./symbols");var n=e("./utils");var l=["\\Gamma","\\Delta","\\Theta","\\Lambda","\\Xi","\\Pi","\\Sigma","\\Upsilon","\\Phi","\\Psi","\\Omega"];var o=["\u0131","\u0237","\xa3"];var u=function(e,t,r,n,l){if(s[r][e]&&s[r][e].replace){e=s[r][e].replace}var o=i.getCharacterMetrics(e,t);var u;if(o){var h=o.italic;if(r==="text"){h=0}u=new a.symbolNode(e,o.height,o.depth,h,o.skew,l)}else{typeof console!=="undefined"&&console.warn("No character metrics for '"+e+"' in style '"+t+"'");u=new a.symbolNode(e,0,0,0,0,l)}if(n){if(n.style.isTight()){u.classes.push("mtight")}if(n.getColor()){u.style.color=n.getColor()}}return u};var h=function(e,t,r,a){if(e==="\\"||s[t][e].font==="main"){return u(e,"Main-Regular",t,r,a)}else{return u(e,"AMS-Regular",t,r,a.concat(["amsrm"]))}};var c=function(e,t,r,a,i){if(i==="mathord"){return p(e,t,r,a)}else if(i==="textord"){return u(e,"Main-Regular",t,r,a.concat(["mathrm"]))}else{throw new Error("unexpected type: "+i+" in mathDefault")}};var p=function(e,t,r,a){if(/[0-9]/.test(e.charAt(0))||n.contains(o,e)||n.contains(l,e)){return u(e,"Main-Italic",t,r,a.concat(["mainit"]))}else{return u(e,"Math-Italic",t,r,a.concat(["mathit"]))}};var m=function(e,t,r){var a=e.mode;var l=e.value;if(s[a][l]&&s[a][l].replace){l=s[a][l].replace}var h=["mord"];var m=t.font;if(m){if(m==="mathit"||n.contains(o,l)){return p(l,a,t,h)}else{var f=k[m].fontName;if(i.getCharacterMetrics(l,f)){return u(l,f,a,t,h.concat([m]))}else{return c(l,a,t,h,r)}}}else{return c(l,a,t,h,r)}};var f=function(e){var t=0;var r=0;var a=0;if(e.children){for(var i=0;i<e.children.length;i++){if(e.children[i].height>t){t=e.children[i].height}if(e.children[i].depth>r){r=e.children[i].depth}if(e.children[i].maxFontSize>a){a=e.children[i].maxFontSize}}}e.height=t;e.depth=r;e.maxFontSize=a};var v=function(e,t,r){var i=new a.span(e,t,r);f(i);return i};var d=function(e,t){e.children=t.concat(e.children);f(e)};var g=function(e){var t=new a.documentFragment(e);f(t);return t};var y=function(e,t){var r=v([],[new a.symbolNode("\u200b")]);r.style.fontSize=t/e.style.sizeMultiplier+"em";var i=v(["fontsize-ensurer","reset-"+e.size,"size5"],[r]);return i};var b=function(e,t,r,i){var s;var n;var l;if(t==="individualShift"){var o=e;e=[o[0]];s=-o[0].shift-o[0].elem.depth;n=s;for(l=1;l<o.length;l++){var u=-o[l].shift-n-o[l].elem.depth;var h=u-(o[l-1].elem.height+o[l-1].elem.depth);n=n+u;e.push({type:"kern",size:h});e.push(o[l])}}else if(t==="top"){var c=r;for(l=0;l<e.length;l++){if(e[l].type==="kern"){c-=e[l].size}else{c-=e[l].elem.height+e[l].elem.depth}}s=c}else if(t==="bottom"){s=-r}else if(t==="shift"){s=-e[0].elem.depth-r}else if(t==="firstBaseline"){s=-e[0].elem.depth}else{s=0}var p=0;for(l=0;l<e.length;l++){if(e[l].type==="elem"){p=Math.max(p,e[l].elem.maxFontSize)}}var m=y(i,p);var f=[];n=s;for(l=0;l<e.length;l++){if(e[l].type==="kern"){n+=e[l].size}else{var d=e[l].elem;var g=-d.depth-n;n+=d.height+d.depth;var b=v([],[m,d]);b.height-=g;b.depth+=g;b.style.top=g+"em";f.push(b)}}var w=v(["baseline-fix"],[m,new a.symbolNode("\u200b")]);f.push(w);var x=v(["vlist"],f);x.height=Math.max(n,x.height);x.depth=Math.max(-s,x.depth);return x};var w={size1:.5,size2:.7,size3:.8,size4:.9,size5:1,size6:1.2,size7:1.44,size8:1.73,size9:2.07,size10:2.49};var x={"\\qquad":{size:"2em",className:"qquad"},"\\quad":{size:"1em",className:"quad"},"\\enspace":{size:"0.5em",className:"enspace"},"\\;":{size:"0.277778em",className:"thickspace"},"\\:":{size:"0.22222em",className:"mediumspace"},"\\,":{size:"0.16667em",className:"thinspace"},"\\!":{size:"-0.16667em",className:"negativethinspace"}};var k={mathbf:{variant:"bold",fontName:"Main-Bold"},mathrm:{variant:"normal",fontName:"Main-Regular"},textit:{variant:"italic",fontName:"Main-Italic"},mathbb:{variant:"double-struck",fontName:"AMS-Regular"},mathcal:{variant:"script",fontName:"Caligraphic-Regular"},mathfrak:{variant:"fraktur",fontName:"Fraktur-Regular"},mathscr:{variant:"script",fontName:"Script-Regular"},mathsf:{variant:"sans-serif",fontName:"SansSerif-Regular"},mathtt:{variant:"monospace",fontName:"Typewriter-Regular"}};t.exports={fontMap:k,makeSymbol:u,mathsym:h,makeSpan:v,makeFragment:g,makeVList:b,makeOrd:m,prependChildren:d,sizingMultiplier:w,spacingFunctions:x}},{"./domTree":16,"./fontMetrics":18,"./symbols":24,"./utils":26}],11:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var s=e("./buildCommon");var n=e("./delimiter");var l=e("./domTree");var o=e("./fontMetrics");var u=e("./utils");var h=s.makeSpan;var c=function(e){return e instanceof l.span&&e.classes[0]==="mspace"};var p=function(e){return e&&e.classes[0]==="mbin"};var m=function(e,t){if(e){return u.contains(["mbin","mopen","mrel","mop","mpunct"],e.classes[0])}else{return t}};var f=function(e,t){if(e){return u.contains(["mrel","mclose","mpunct"],e.classes[0])}else{return t}};var v=function(e,t,r){var a=[];for(var i=0;i<e.length;i++){var n=e[i];var o=z(n,t);if(o instanceof l.documentFragment){Array.prototype.push.apply(a,o.children)}else{a.push(o)}}var u=null;for(i=0;i<a.length;i++){if(c(a[i])){u=u||[];u.push(a[i]);a.splice(i,1);i--}else if(u){if(a[i]instanceof l.symbolNode){a[i]=h([].concat(a[i].classes),[a[i]])}s.prependChildren(a[i],u);u=null}}if(u){Array.prototype.push.apply(a,u)}for(i=0;i<a.length;i++){if(p(a[i])&&(m(a[i-1],r)||f(a[i+1],r))){a[i].classes[0]="mord"}}return a};var d=function(e){if(e instanceof l.documentFragment){if(e.children.length){return d(e.children[e.children.length-1])}}else{if(u.contains(["mord","mop","mbin","mrel","mopen","mclose","mpunct","minner"],e.classes[0])){return e.classes[0]}}return null};var g=function(e,t){if(!e){return false}else if(e.type==="op"){return e.value.limits&&(t.style.size===i.DISPLAY.size||e.value.alwaysHandleSupSub)}else if(e.type==="accent"){return b(e.value.base)}else{return null}};var y=function(e){if(!e){return false}else if(e.type==="ordgroup"){if(e.value.length===1){return y(e.value[0])}else{return e}}else if(e.type==="color"){if(e.value.value.length===1){return y(e.value.value[0])}else{return e}}else if(e.type==="font"){return y(e.value.body)}else{return e}};var b=function(e){var t=y(e);return t.type==="mathord"||t.type==="textord"||t.type==="bin"||t.type==="rel"||t.type==="inner"||t.type==="open"||t.type==="close"||t.type==="punct"};var w=function(e,t){return h(t.concat(["sizing","reset-"+e.size,"size5",e.style.reset(),i.TEXT.cls(),"nulldelimiter"]))};var x={};x.mathord=function(e,t){return s.makeOrd(e,t,"mathord")};x.textord=function(e,t){return s.makeOrd(e,t,"textord")};x.bin=function(e,t){return s.mathsym(e.value,e.mode,t,["mbin"])};x.rel=function(e,t){return s.mathsym(e.value,e.mode,t,["mrel"])};x.open=function(e,t){return s.mathsym(e.value,e.mode,t,["mopen"])};x.close=function(e,t){return s.mathsym(e.value,e.mode,t,["mclose"])};x.inner=function(e,t){return s.mathsym(e.value,e.mode,t,["minner"])};x.punct=function(e,t){return s.mathsym(e.value,e.mode,t,["mpunct"])};x.ordgroup=function(e,t){return h(["mord",t.style.cls()],v(e.value,t.reset(),true),t)};x.text=function(e,t){var r=t.withFont(e.value.style);var a=v(e.value.body,r,true);for(var i=0;i<a.length-1;i++){if(a[i].tryCombine(a[i+1])){a.splice(i+1,1);i--}}return h(["mord","text",r.style.cls()],a,r)};x.color=function(e,t){var r=v(e.value.value,t.withColor(e.value.color),false);return new s.makeFragment(r)};x.supsub=function(e,t){if(g(e.value.base,t)){return x[e.value.base.type](e,t)}var r=z(e.value.base,t.reset());var a;var n;var u;var c;var p=t.style;var m;if(e.value.sup){m=t.withStyle(p.sup());u=z(e.value.sup,m);a=h([p.reset(),p.sup().cls()],[u],m)}if(e.value.sub){m=t.withStyle(p.sub());c=z(e.value.sub,m);n=h([p.reset(),p.sub().cls()],[c],m)}var f;var v;if(b(e.value.base)){f=0;v=0}else{f=r.height-p.metrics.supDrop;v=r.depth+p.metrics.subDrop}var y;if(p===i.DISPLAY){y=p.metrics.sup1}else if(p.cramped){y=p.metrics.sup3}else{y=p.metrics.sup2}var w=i.TEXT.sizeMultiplier*p.sizeMultiplier;var k=.5/o.metrics.ptPerEm/w+"em";var S;if(!e.value.sup){v=Math.max(v,p.metrics.sub1,c.height-.8*p.metrics.xHeight);S=s.makeVList([{type:"elem",elem:n}],"shift",v,t);S.children[0].style.marginRight=k;if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}}else if(!e.value.sub){f=Math.max(f,y,u.depth+.25*p.metrics.xHeight);S=s.makeVList([{type:"elem",elem:a}],"shift",-f,t);S.children[0].style.marginRight=k}else{f=Math.max(f,y,u.depth+.25*p.metrics.xHeight);v=Math.max(v,p.metrics.sub2);var M=o.metrics.defaultRuleThickness;if(f-u.depth-(c.height-v)<4*M){v=4*M-(f-u.depth)+c.height;var T=.8*p.metrics.xHeight-(f-u.depth);if(T>0){f+=T;v-=T}}S=s.makeVList([{type:"elem",elem:n,shift:v},{type:"elem",elem:a,shift:-f}],"individualShift",null,t);if(r instanceof l.symbolNode){S.children[0].style.marginLeft=-r.italic+"em"}S.children[0].style.marginRight=k;S.children[1].style.marginRight=k}var A=d(r)||"mord";return h([A],[r,h(["msupsub"],[S])],t)};x.genfrac=function(e,t){var r=t.style;if(e.value.size==="display"){r=i.DISPLAY}else if(e.value.size==="text"){r=i.TEXT}var a=r.fracNum();var l=r.fracDen();var u;u=t.withStyle(a);var c=z(e.value.numer,u);var p=h([r.reset(),a.cls()],[c],u);u=t.withStyle(l);var m=z(e.value.denom,u);var f=h([r.reset(),l.cls()],[m],u);var v;if(e.value.hasBarLine){v=o.metrics.defaultRuleThickness/t.style.sizeMultiplier}else{v=0}var d;var g;var y;if(r.size===i.DISPLAY.size){d=r.metrics.num1;if(v>0){g=3*v}else{g=7*o.metrics.defaultRuleThickness}y=r.metrics.denom1}else{if(v>0){d=r.metrics.num2;g=v}else{d=r.metrics.num3;g=3*o.metrics.defaultRuleThickness}y=r.metrics.denom2}var b;if(v===0){var x=d-c.depth-(m.height-y);if(x<g){d+=.5*(g-x);y+=.5*(g-x)}b=s.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:p,shift:-d}],"individualShift",null,t)}else{var k=r.metrics.axisHeight;if(d-c.depth-(k+.5*v)<g){d+=g-(d-c.depth-(k+.5*v))}if(k-.5*v-(m.height-y)<g){y+=g-(k-.5*v-(m.height-y))}var S=h([t.style.reset(),i.TEXT.cls(),"frac-line"]);S.height=v;var M=-(k-.5*v);b=s.makeVList([{type:"elem",elem:f,shift:y},{type:"elem",elem:S,shift:M},{type:"elem",elem:p,shift:-d}],"individualShift",null,t)}b.height*=r.sizeMultiplier/t.style.sizeMultiplier;b.depth*=r.sizeMultiplier/t.style.sizeMultiplier;var T;if(r.size===i.DISPLAY.size){T=r.metrics.delim1}else{T=r.metrics.delim2}var A;var N;if(e.value.leftDelim==null){A=w(t,["mopen"])}else{A=n.customSizedDelim(e.value.leftDelim,T,true,t.withStyle(r),e.mode,["mopen"])}if(e.value.rightDelim==null){N=w(t,["mclose"])}else{N=n.customSizedDelim(e.value.rightDelim,T,true,t.withStyle(r),e.mode,["mclose"])}return h(["mord",t.style.reset(),r.cls()],[A,h(["mfrac"],[b]),N],t)};var k=function(e,t){var r=e.number;if(e.unit==="ex"){r*=t.metrics.emPerEx}else if(e.unit==="mu"){r/=18}return r};x.array=function(e,t){var r;var i;var n=e.value.body.length;var l=0;var c=new Array(n);var p=t.style;var m=1/o.metrics.ptPerEm;var f=5*m;var v=12*m;var d=u.deflt(e.value.arraystretch,1);var g=d*v;var y=.7*g;var b=.3*g;var w=0;for(r=0;r<e.value.body.length;++r){var x=e.value.body[r];var S=y;var M=b;if(l<x.length){l=x.length}var T=new Array(x.length);for(i=0;i<x.length;++i){var A=z(x[i],t);if(M<A.depth){M=A.depth}if(S<A.height){S=A.height}T[i]=A}var N=0;if(e.value.rowGaps[r]){N=k(e.value.rowGaps[r].value,p);if(N>0){N+=b;if(M<N){M=N}N=0}}T.height=S;T.depth=M;w+=S;T.pos=w;w+=M+N;c[r]=T}var q=w/2+p.metrics.axisHeight;var C=e.value.cols||[];var R=[];var E;var O;for(i=0,O=0;i<l||O<C.length;++i,++O){var D=C[O]||{};var F=true;while(D.type==="separator"){if(!F){E=h(["arraycolsep"],[]);E.style.width=o.metrics.doubleRuleSep+"em";R.push(E)}if(D.separator==="|"){var P=h(["vertical-separator"],[]);P.style.height=w+"em";P.style.verticalAlign=-(w-q)+"em";R.push(P)}else{throw new a("Invalid separator type: "+D.separator)}O++;D=C[O]||{};F=false}if(i>=l){continue}var L;if(i>0||e.value.hskipBeforeAndAfter){L=u.deflt(D.pregap,f);if(L!==0){E=h(["arraycolsep"],[]);E.style.width=L+"em";R.push(E)}}var _=[];for(r=0;r<n;++r){var I=c[r];var B=I[i];if(!B){continue}var X=I.pos-q;B.depth=I.depth;B.height=I.height;_.push({type:"elem",elem:B,shift:X})}_=s.makeVList(_,"individualShift",null,t);_=h(["col-align-"+(D.align||"c")],[_]);R.push(_);if(i<l-1||e.value.hskipBeforeAndAfter){L=u.deflt(D.postgap,f);if(L!==0){E=h(["arraycolsep"],[]);E.style.width=L+"em";R.push(E)}}}c=h(["mtable"],R);return h(["mord"],[c],t)};x.spacing=function(e,t){if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){if(e.mode==="text"){return s.makeOrd(e,t,"textord")}else{return h(["mspace"],[s.mathsym(e.value,e.mode,t)],t)}}else{return h(["mspace",s.spacingFunctions[e.value].className],[],t)}};x.llap=function(e,t){var r=h(["inner"],[z(e.value.body,t.reset())]);var a=h(["fix"],[]);return h(["mord","llap",t.style.cls()],[r,a],t)};x.rlap=function(e,t){var r=h(["inner"],[z(e.value.body,t.reset())]);var a=h(["fix"],[]);return h(["mord","rlap",t.style.cls()],[r,a],t)};x.op=function(e,t){var r;var a;var n=false;if(e.type==="supsub"){r=e.value.sup;a=e.value.sub;e=e.value.base;n=true}var l=t.style;var c=["\\smallint"];var p=false;if(l.size===i.DISPLAY.size&&e.value.symbol&&!u.contains(c,e.value.body)){p=true}var m;var f=0;var d=0;if(e.value.symbol){var g=p?"Size2-Regular":"Size1-Regular";m=s.makeSymbol(e.value.body,g,"math",t,["mop","op-symbol",p?"large-op":"small-op"]);f=(m.height-m.depth)/2-l.metrics.axisHeight*l.sizeMultiplier;d=m.italic}else if(e.value.value){var y=v(e.value.value,t,true);m=h(["mop"],y,t)}else{var b=[];for(var w=1;w<e.value.body.length;w++){b.push(s.mathsym(e.value.body[w],e.mode))}m=h(["mop"],b,t)}if(n){m=h([],[m]);var x;var k;var S;var M;var T;if(r){T=t.withStyle(l.sup());var A=z(r,T);x=h([l.reset(),l.sup().cls()],[A],T);k=Math.max(o.metrics.bigOpSpacing1,o.metrics.bigOpSpacing3-A.depth)}if(a){T=t.withStyle(l.sub());var N=z(a,T);S=h([l.reset(),l.sub().cls()],[N],T);M=Math.max(o.metrics.bigOpSpacing2,o.metrics.bigOpSpacing4-N.height); +}var q;var C;var R;if(!r){C=m.height-f;q=s.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m}],"top",C,t);q.children[0].style.marginLeft=-d+"em"}else if(!a){R=m.depth+f;q=s.makeVList([{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:x},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",R,t);q.children[1].style.marginLeft=d+"em"}else if(!r&&!a){return m}else{R=o.metrics.bigOpSpacing5+S.height+S.depth+M+m.depth+f;q=s.makeVList([{type:"kern",size:o.metrics.bigOpSpacing5},{type:"elem",elem:S},{type:"kern",size:M},{type:"elem",elem:m},{type:"kern",size:k},{type:"elem",elem:x},{type:"kern",size:o.metrics.bigOpSpacing5}],"bottom",R,t);q.children[0].style.marginLeft=-d+"em";q.children[2].style.marginLeft=d+"em"}return h(["mop","op-limits"],[q],t)}else{if(e.value.symbol){m.style.top=f+"em"}return m}};x.mod=function(e,t){var r=[];if(e.value.modType==="bmod"){if(!t.style.isTight()){r.push(h(["mspace","negativemediumspace"],[],t))}r.push(h(["mspace","thickspace"],[],t))}else if(t.style.size===i.DISPLAY.size){r.push(h(["mspace","quad"],[],t))}else if(e.value.modType==="mod"){r.push(h(["mspace","twelvemuspace"],[],t))}else{r.push(h(["mspace","eightmuspace"],[],t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(s.mathsym("(",e.mode))}if(e.value.modType!=="pod"){var a=[s.mathsym("m",e.mode),s.mathsym("o",e.mode),s.mathsym("d",e.mode)];if(e.value.modType==="bmod"){r.push(h(["mbin"],a,t));r.push(h(["mspace","thickspace"],[],t));if(!t.style.isTight()){r.push(h(["mspace","negativemediumspace"],[],t))}}else{Array.prototype.push.apply(r,a);r.push(h(["mspace","sixmuspace"],[],t))}}if(e.value.value){Array.prototype.push.apply(r,v(e.value.value,t,false))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(s.mathsym(")",e.mode))}return s.makeFragment(r)};x.katex=function(e,t){var r=h(["k"],[s.mathsym("K",e.mode)],t);var a=h(["a"],[s.mathsym("A",e.mode)],t);a.height=(a.height+.2)*.75;a.depth=(a.height-.2)*.75;var i=h(["t"],[s.mathsym("T",e.mode)],t);var n=h(["e"],[s.mathsym("E",e.mode)],t);n.height=n.height-.2155;n.depth=n.depth+.2155;var l=h(["x"],[s.mathsym("X",e.mode)],t);return h(["mord","katex-logo"],[r,a,i,n,l],t)};x.overline=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var n=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=h([r.reset(),i.TEXT.cls(),"overline-line"]);l.height=n;l.maxFontSize=1;var u=s.makeVList([{type:"elem",elem:a},{type:"kern",size:3*n},{type:"elem",elem:l},{type:"kern",size:n}],"firstBaseline",null,t);return h(["mord","overline"],[u],t)};x.underline=function(e,t){var r=t.style;var a=z(e.value.body,t);var n=o.metrics.defaultRuleThickness/r.sizeMultiplier;var l=h([r.reset(),i.TEXT.cls(),"underline-line"]);l.height=n;l.maxFontSize=1;var u=s.makeVList([{type:"kern",size:n},{type:"elem",elem:l},{type:"kern",size:3*n},{type:"elem",elem:a}],"top",a.height,t);return h(["mord","underline"],[u],t)};x.sqrt=function(e,t){var r=t.style;var a=z(e.value.body,t.withStyle(r.cramp()));var l=o.metrics.defaultRuleThickness/r.sizeMultiplier;var u=h([r.reset(),i.TEXT.cls(),"sqrt-line"],[],t);u.height=l;u.maxFontSize=1;var c=l;if(r.id<i.TEXT.id){c=r.metrics.xHeight}var p=l+c/4;var m=(a.height+a.depth)*r.sizeMultiplier;var f=m+p+l;var v=h(["sqrt-sign"],[n.customSizedDelim("\\surd",f,false,t,e.mode)],t);var d=v.height+v.depth-l;if(d>a.height+a.depth+p){p=(p+d-a.height-a.depth)/2}var g=-(a.height+p+l)+v.height;v.style.top=g+"em";v.height-=g;v.depth+=g;var y;if(a.height===0&&a.depth===0){y=h()}else{y=s.makeVList([{type:"elem",elem:a},{type:"kern",size:p},{type:"elem",elem:u},{type:"kern",size:l}],"firstBaseline",null,t)}if(!e.value.index){return h(["mord","sqrt"],[v,y],t)}else{var b=t.withStyle(i.SCRIPTSCRIPT);var w=z(e.value.index,b);var x=h([r.reset(),i.SCRIPTSCRIPT.cls()],[w],b);var k=Math.max(v.height,y.height);var S=Math.max(v.depth,y.depth);var M=.6*(k-S);var T=s.makeVList([{type:"elem",elem:x}],"shift",-M,t);var A=h(["root"],[T]);return h(["mord","sqrt"],[A,v,y],t)}};x.sizing=function(e,t){var r=v(e.value.value,t.withSize(e.value.size),false);var a=t.style;var i=s.sizingMultiplier[e.value.size];i=i*a.sizeMultiplier;for(var n=0;n<r.length;n++){var l=u.indexOf(r[n].classes,"sizing");if(l<0){r[n].classes.push("sizing","reset-"+t.size,e.value.size,a.cls());r[n].maxFontSize=i}else if(r[n].classes[l+1]==="reset-"+e.value.size){r[n].classes[l+1]="reset-"+t.size}}return s.makeFragment(r)};x.styling=function(e,t){var r={display:i.DISPLAY,text:i.TEXT,script:i.SCRIPT,scriptscript:i.SCRIPTSCRIPT};var a=r[e.value.style];var n=t.withStyle(a);var l=v(e.value.value,n,false);for(var o=0;o<l.length;o++){var h=u.indexOf(l[o].classes,a.reset());if(h<0){l[o].classes.push(t.style.reset(),a.cls())}else{l[o].classes[h]=t.style.reset()}}return new s.makeFragment(l)};x.font=function(e,t){var r=e.value.font;return z(e.value.body,t.withFont(r))};x.delimsizing=function(e,t){var r=e.value.value;if(r==="."){return h([e.value.mclass])}return n.sizedDelim(r,e.value.size,t,e.mode,[e.value.mclass])};x.leftright=function(e,t){var r=v(e.value.body,t.reset(),true);var a=0;var i=0;var s=false;for(var l=0;l<r.length;l++){if(r[l].isMiddle){s=true}else{a=Math.max(r[l].height,a);i=Math.max(r[l].depth,i)}}var o=t.style;a*=o.sizeMultiplier;i*=o.sizeMultiplier;var u;if(e.value.left==="."){u=w(t,["mopen"])}else{u=n.leftRightDelim(e.value.left,a,i,t,e.mode,["mopen"])}r.unshift(u);if(s){for(l=1;l<r.length;l++){if(r[l].isMiddle){r[l]=n.leftRightDelim(r[l].isMiddle.value,a,i,r[l].isMiddle.options,e.mode,[])}}}var c;if(e.value.right==="."){c=w(t,["mclose"])}else{c=n.leftRightDelim(e.value.right,a,i,t,e.mode,["mclose"])}r.push(c);return h(["minner",o.cls()],r,t)};x.middle=function(e,t){var r;if(e.value.value==="."){r=w(t,[])}else{r=n.sizedDelim(e.value.value,1,t,e.mode,[]);r.isMiddle={value:e.value.value,options:t}}return r};x.rule=function(e,t){var r=h(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.shift){i=k(e.value.shift,a)}var s=k(e.value.width,a);var n=k(e.value.height,a);i/=a.sizeMultiplier;s/=a.sizeMultiplier;n/=a.sizeMultiplier;r.style.borderRightWidth=s+"em";r.style.borderTopWidth=n+"em";r.style.bottom=i+"em";r.width=s;r.height=n+i;r.depth=-i;return r};x.kern=function(e,t){var r=h(["mord","rule"],[],t);var a=t.style;var i=0;if(e.value.dimension){i=k(e.value.dimension,a)}i/=a.sizeMultiplier;r.style.marginLeft=i+"em";return r};x.accent=function(e,t){var r=e.value.base;var a=t.style;var i;if(e.type==="supsub"){var n=e;e=n.value.base;r=e.value.base;n.value.base=r;i=z(n,t.reset())}var l=z(r,t.withStyle(a.cramp()));var o;if(b(r)){var u=y(r);var c=z(u,t.withStyle(a.cramp()));o=c.skew}else{o=0}var p=Math.min(l.height,a.metrics.xHeight);var m=s.makeSymbol(e.value.accent,"Main-Regular","math",t);m.italic=0;var f=e.value.accent==="\\vec"?"accent-vec":null;var v=h(["accent-body",f],[h([],[m])]);v=s.makeVList([{type:"elem",elem:l},{type:"kern",size:-p},{type:"elem",elem:v}],"firstBaseline",null,t);v.children[1].style.marginLeft=2*o+"em";var d=h(["mord","accent"],[v],t);if(i){i.children[0]=d;i.height=Math.max(d.height,i.height);i.classes[0]="mord";return i}else{return d}};x.phantom=function(e,t){var r=v(e.value.value,t.withPhantom(),false);return new s.makeFragment(r)};x.mclass=function(e,t){var r=v(e.value.value,t,true);return h([e.value.mclass],r,t)};var z=function(e,t){if(!e){return h()}if(x[e.type]){var r=x[e.type](e,t);var i;if(t.style!==t.parentStyle){i=t.style.sizeMultiplier/t.parentStyle.sizeMultiplier;r.height*=i;r.depth*=i}if(t.size!==t.parentSize){i=s.sizingMultiplier[t.size]/s.sizingMultiplier[t.parentSize];r.height*=i;r.depth*=i}return r}else{throw new a("Got group of unknown type: '"+e.type+"'")}};var S=function(e,t){e=JSON.parse(JSON.stringify(e));var r=v(e,t,true);var a=h(["base",t.style.cls()],r,t);var i=h(["strut"]);var s=h(["strut","bottom"]);i.style.height=a.height+"em";s.style.height=a.height+a.depth+"em";s.style.verticalAlign=-a.depth+"em";var n=h(["katex-html"],[i,s,a]);n.setAttribute("aria-hidden","true");return n};t.exports=S},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./delimiter":15,"./domTree":16,"./fontMetrics":18,"./utils":26}],12:[function(e,t,r){var a=e("./buildCommon");var i=e("./fontMetrics");var s=e("./mathMLTree");var n=e("./ParseError");var l=e("./symbols");var o=e("./utils");var u=a.makeSpan;var h=a.fontMap;var c=function(e,t){if(l[t][e]&&l[t][e].replace){e=l[t][e].replace}return new s.TextNode(e)};var p=function(e,t){var r=t.font;if(!r){return null}var a=e.mode;if(r==="mathit"){return"italic"}var s=e.value;if(o.contains(["\\imath","\\jmath"],s)){return null}if(l[a][s]&&l[a][s].replace){s=l[a][s].replace}var n=h[r].fontName;if(i.getCharacterMetrics(s,n)){return h[t.font].variant}return null};var m={};m.mathord=function(e,t){var r=new s.MathNode("mi",[c(e.value,e.mode)]);var a=p(e,t);if(a){r.setAttribute("mathvariant",a)}return r};m.textord=function(e,t){var r=c(e.value,e.mode);var a=p(e,t)||"normal";var i;if(/[0-9]/.test(e.value)){i=new s.MathNode("mn",[r]);if(t.font){i.setAttribute("mathvariant",a)}}else{i=new s.MathNode("mi",[r]);i.setAttribute("mathvariant",a)}return i};m.bin=function(e){var t=new s.MathNode("mo",[c(e.value,e.mode)]);return t};m.rel=function(e){var t=new s.MathNode("mo",[c(e.value,e.mode)]);return t};m.open=function(e){var t=new s.MathNode("mo",[c(e.value,e.mode)]);return t};m.close=function(e){var t=new s.MathNode("mo",[c(e.value,e.mode)]);return t};m.inner=function(e){var t=new s.MathNode("mo",[c(e.value,e.mode)]);return t};m.punct=function(e){var t=new s.MathNode("mo",[c(e.value,e.mode)]);t.setAttribute("separator","true");return t};m.ordgroup=function(e,t){var r=f(e.value,t);var a=new s.MathNode("mrow",r);return a};m.text=function(e,t){var r=f(e.value.body,t);var a=new s.MathNode("mtext",r);return a};m.color=function(e,t){var r=f(e.value.value,t);var a=new s.MathNode("mstyle",r);a.setAttribute("mathcolor",e.value.color);return a};m.supsub=function(e,t){var r=[v(e.value.base,t)];if(e.value.sub){r.push(v(e.value.sub,t))}if(e.value.sup){r.push(v(e.value.sup,t))}var a;if(!e.value.sub){a="msup"}else if(!e.value.sup){a="msub"}else{a="msubsup"}var i=new s.MathNode(a,r);return i};m.genfrac=function(e,t){var r=new s.MathNode("mfrac",[v(e.value.numer,t),v(e.value.denom,t)]);if(!e.value.hasBarLine){r.setAttribute("linethickness","0px")}if(e.value.leftDelim!=null||e.value.rightDelim!=null){var a=[];if(e.value.leftDelim!=null){var i=new s.MathNode("mo",[new s.TextNode(e.value.leftDelim)]);i.setAttribute("fence","true");a.push(i)}a.push(r);if(e.value.rightDelim!=null){var n=new s.MathNode("mo",[new s.TextNode(e.value.rightDelim)]);n.setAttribute("fence","true");a.push(n)}var l=new s.MathNode("mrow",a);return l}return r};m.array=function(e,t){return new s.MathNode("mtable",e.value.body.map(function(e){return new s.MathNode("mtr",e.map(function(e){return new s.MathNode("mtd",[v(e,t)])}))}))};m.sqrt=function(e,t){var r;if(e.value.index){r=new s.MathNode("mroot",[v(e.value.body,t),v(e.value.index,t)])}else{r=new s.MathNode("msqrt",[v(e.value.body,t)])}return r};m.leftright=function(e,t){var r=f(e.value.body,t);if(e.value.left!=="."){var a=new s.MathNode("mo",[c(e.value.left,e.mode)]);a.setAttribute("fence","true");r.unshift(a)}if(e.value.right!=="."){var i=new s.MathNode("mo",[c(e.value.right,e.mode)]);i.setAttribute("fence","true");r.push(i)}var n=new s.MathNode("mrow",r);return n};m.middle=function(e,t){var r=new s.MathNode("mo",[c(e.value.middle,e.mode)]);r.setAttribute("fence","true");return r};m.accent=function(e,t){var r=new s.MathNode("mo",[c(e.value.accent,e.mode)]);var a=new s.MathNode("mover",[v(e.value.base,t),r]);a.setAttribute("accent","true");return a};m.spacing=function(e){var t;if(e.value==="\\ "||e.value==="\\space"||e.value===" "||e.value==="~"){t=new s.MathNode("mtext",[new s.TextNode("\xa0")])}else{t=new s.MathNode("mspace");t.setAttribute("width",a.spacingFunctions[e.value].size)}return t};m.op=function(e,t){var r;if(e.value.symbol){r=new s.MathNode("mo",[c(e.value.body,e.mode)])}else if(e.value.value){r=new s.MathNode("mo",f(e.value.value,t))}else{r=new s.MathNode("mi",[new s.TextNode(e.value.body.slice(1))])}return r};m.mod=function(e,t){var r=[];if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new s.MathNode("mo",[c("(",e.mode)]))}if(e.value.modType!=="pod"){r.push(new s.MathNode("mo",[c("mod",e.mode)]))}if(e.value.value){var a=new s.MathNode("mspace");a.setAttribute("width","0.333333em");r.push(a);r=r.concat(f(e.value.value,t))}if(e.value.modType==="pod"||e.value.modType==="pmod"){r.push(new s.MathNode("mo",[c(")",e.mode)]))}return new s.MathNode("mo",r)};m.katex=function(e){var t=new s.MathNode("mtext",[new s.TextNode("KaTeX")]);return t};m.font=function(e,t){var r=e.value.font;return v(e.value.body,t.withFont(r))};m.delimsizing=function(e){var t=[];if(e.value.value!=="."){t.push(c(e.value.value,e.mode))}var r=new s.MathNode("mo",t);if(e.value.mclass==="mopen"||e.value.mclass==="mclose"){r.setAttribute("fence","true")}else{r.setAttribute("fence","false")}return r};m.styling=function(e,t){var r=f(e.value.value,t);var a=new s.MathNode("mstyle",r);var i={display:["0","true"],text:["0","false"],script:["1","false"],scriptscript:["2","false"]};var n=i[e.value.style];a.setAttribute("scriptlevel",n[0]);a.setAttribute("displaystyle",n[1]);return a};m.sizing=function(e,t){var r=f(e.value.value,t);var i=new s.MathNode("mstyle",r);i.setAttribute("mathsize",a.sizingMultiplier[e.value.size]+"em");return i};m.overline=function(e,t){var r=new s.MathNode("mo",[new s.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new s.MathNode("mover",[v(e.value.body,t),r]);a.setAttribute("accent","true");return a};m.underline=function(e,t){var r=new s.MathNode("mo",[new s.TextNode("\u203e")]);r.setAttribute("stretchy","true");var a=new s.MathNode("munder",[v(e.value.body,t),r]);a.setAttribute("accentunder","true");return a};m.rule=function(e){var t=new s.MathNode("mrow");return t};m.kern=function(e){var t=new s.MathNode("mrow");return t};m.llap=function(e,t){var r=new s.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("lspace","-1width");r.setAttribute("width","0px");return r};m.rlap=function(e,t){var r=new s.MathNode("mpadded",[v(e.value.body,t)]);r.setAttribute("width","0px");return r};m.phantom=function(e,t){var r=f(e.value.value,t);return new s.MathNode("mphantom",r)};m.mclass=function(e,t){var r=f(e.value.value,t);return new s.MathNode("mstyle",r)};var f=function(e,t){var r=[];for(var a=0;a<e.length;a++){var i=e[a];r.push(v(i,t))}return r};var v=function(e,t){if(!e){return new s.MathNode("mrow")}if(m[e.type]){return m[e.type](e,t)}else{throw new n("Got group of unknown type: '"+e.type+"'")}};var d=function(e,t,r){var a=f(e,r);var i=new s.MathNode("mrow",a);var n=new s.MathNode("annotation",[new s.TextNode(t)]);n.setAttribute("encoding","application/x-tex");var l=new s.MathNode("semantics",[i,n]);var o=new s.MathNode("math",[l]);return u(["katex-mathml"],[o])};t.exports=d},{"./ParseError":6,"./buildCommon":10,"./fontMetrics":18,"./mathMLTree":21,"./symbols":24,"./utils":26}],13:[function(e,t,r){var a=e("./buildHTML");var i=e("./buildMathML");var s=e("./buildCommon");var n=e("./Settings");var l=s.makeSpan;var o=function(e,t,r){r=r||new n({});var s=r.initialOptions();var o=i(e,t,s);var u=a(e,s);var h=l(["katex"],[o,u]);if(r.displayMode){return l(["katex-display"],[h])}else{return h}};t.exports=o},{"./Settings":8,"./buildCommon":10,"./buildHTML":11,"./buildMathML":12}],14:[function(e,t,r){"use strict";var a={left:0,center:.5,right:1};var i=[null,.5,.7,.8,.9,1,1.2,1.44,1.73,2.07,2.49];var s={i4:"italic ",n4:"",n7:"bold "};function n(e){for(var t in e){if(e.hasOwnProperty(t)){this[t]=e[t]}}}n.prototype.sizeChanged=function(){this.em=this.baseSize*i[this.sizeIndex]*this.styleFactor;this.fontChanged()};n.prototype.fontChanged=function(){this.font=this.variant+this.weight+this.em+"px "+this.family};n.prototype.withStyle=function(e){var t=new n(this);t.styleFactor=e;t.sizeChanged();return t};n.prototype.withSize=function(e){var t=new n(this);t.sizeIndex=e;t.sizeChanged();return t};n.prototype.withFace=function(e,t){var r=new n(this);r.variant=s[t];r.family=e;r.fvd=e+":"+t;r.fontChanged();return r};n.prototype.withYShift=function(e){var t=new n(this);t.ypos+=e*t.em;return t};n.prototype.withHAlign=function(e){var t=new n(this);t.halign=e;return t};n.prototype.withColor=function(e){var t=new n(this);t.color=e;return t};function l(e,t){this.ctxt=e;this.fontSize=16;this.left=Infinity;this.top=Infinity;this.right=-Infinity;this.bottom=-Infinity;this.x=0;this.outList=[];this.fontsUsed={};this.horizontalLines=[];this.prevClass="";this.baseSize=t.fontSize||16*1.21;this.state=new n({baseSize:this.baseSize,sizeIndex:5,styleFactor:1,variant:"",weight:"",family:"KaTeX_Main",fvd:"KaTeX_Main:n4",color:null,ypos:0,halign:t.halign||a.left});this.state.sizeChanged()}var o=.16667;var u=.22222;var h=.27778;var c={mord_mop:o,mord_mbin:u,mord_mrel:h,mord_minner:o,mop_mord:o,mop_mop:o,mop_mrel:h,mop_minner:o,mbin_mord:u,mbin_mop:u,mbin_mopen:u,mbin_minner:u,mrel_mord:h,mrel_mop:h,mrel_mopen:h,mrel_minner:h,mclose_mop:o,mclose_mbin:u,mclose_mrel:h,mclose_minner:o,mpunct_mord:o,mpunct_mop:o,mpunct_mrel:o,mpunct_mopen:o,mpunct_mclose:o,mpunct_mpunct:o,mpunct_minner:o,minner_mord:o,minner_mop:o,minner_mbin:u,minner_mrel:h,minner_mopen:o,minner_mpunct:o,minner_minner:o};var p={mord_mop:o,mop_mord:o,mop_mop:o,mclose_mop:o,minner_mop:o};l.prototype.prepare=function(e){var t=this.state;var r=!e.classes?"":e.classes.filter(function(e){return e!==null}).join(" ");if(r===""){r=[]}else{r=r.split(" ")}var i;var s;var n;var l=null;function m(){if(l===null){var e=n-1;while(e-->0){var t=r[e];if(!t){continue}if(t.substr(4)==="size"){l=+t.substr(4);break}}}return l}var f=false;var v="";var d=null;var g=0;var y=null;var b=null;n=r.length;while(n--){var w=r[n];switch(w){case"delimsizing":if(m()!==null){this.state=this.state.withFace("KaTeX_Size"+l,"n4")}break;case"delim-size1":case"small-op":this.state=this.state.withFace("KaTeX_Size1","n4");break;case"large-op":this.state=this.state.withFace("KaTeX_Size2","n4");break;case"delim-size4":this.state=this.state.withFace("KaTeX_Size4","n4");break;case"fontsize-ensurer":case"sizing":if(m()!==null){this.state=this.state.withSize(l)}break;case"frac-line":case"sqrt-line":case"overline-line":this.horizontalLines.push({y:this.state.ypos,height:Math.max(1,.04*this.state.em),color:this.state.color});break;case"mfrac":case"accent":case"op-limits":case"col-align-c":this.state=this.state.withHAlign(a.center);break;case"root":d=5/18;g=-10/18;break;case"accent-vec":d+=.326;break;case"accent-body":y=this.x;break;case"mathit":this.state=this.state.withFace("KaTeX_Math","i4");break;case"mathbf":this.state=this.state.withFace("KaTeX_Main","n7");break;case"amsrm":this.state=this.state.withFace("KaTeX_AMS","n4");break;case"mathbb":this.state=this.state.withFace("KaTeX_AMS","n4");break;case"mathcal":this.state=this.state.withFace("KaTeX_Caligraphic","n4");break;case"mathfrak":this.state=this.state.withFace("KaTeX_Fraktur","n4");break;case"mathtt":this.state=this.state.withFace("KaTeX_Typewriter","n4");break;case"mathscr":this.state=this.state.withFace("KaTeX_Script","n4");break;case"mathsf":this.state=this.state.withFace("KaTeX_SansSerif","n4");break;case"mainit":this.state=this.state.withFace("KaTeX_Main","i4");break;case"mathrm":break;case"mord":case"mop":case"mbin":case"mrel":case"mopen":case"mclose":case"minner":case"mpunct":v=w;break;case"msupsub":case"col-align-l":this.state=this.state.withHAlign(a.left);break;case"col-align-r":this.state=this.state.withHAlign(a.right);break;case"scriptscriptstyle":this.state=this.state.withStyle(.5);break;case"scriptstyle":this.state=this.state.withStyle(.7);break;case"textstyle":this.state=this.state.withStyle(1);break;case"size1":case"size2":case"size3":case"size4":case"size5":case"size6":case"size7":case"size8":case"size9":case"size10":l=+w.substr(4);break;case"negativethinspace":g+=-o;break;case"thinspace":g+=o;break;case"mediumspace":g+=u;break;case"thickspace":g+=h;break;case"enspace":g+=.5;break;case"quad":g+=1;break;case"qquad":g+=2;break;case"k":break;case"a":this.state=this.state.withStyle(.75).withYShift(-.2);d=-.32;break;case"t":d=-.23;break;case"e":this.state=this.state.withYShift(.2155);d=-.1667;break;case"x":d=-.125;break;case"vlist":f=true;break;case"llap":case"rlap":b=w;break;case"arraycolsep":case"base":case"baseline-fix":case"bottom":case"cramped":case"delimsizinginner":case"displaystyle":case"katex-logo":case"katex-html":case"mspace":case"mtable":case"mult":case"op-symbol":case"overline":case"reset-scriptscriptstyle":case"reset-scriptstyle":case"reset-size1":case"reset-size2":case"reset-size3":case"reset-size4":case"reset-size5":case"reset-size6":case"reset-size7":case"reset-size8":case"reset-size9":case"reset-size10":case"reset-textstyle":case"sqrt":case"sqrt-sign":case"strut":case"style-wrap":case"text":case"uncramped":break;default:}}for(i in e.style){if(e.style.hasOwnProperty(i)){s=e.style[i];switch(i){case"top":if(s.substr(s.length-2)!=="em"){throw new Error("em is the only supported unit.")}s=+s.substr(0,s.length-2);this.state=this.state.withYShift(s);break;case"fontSize":if(s==="0em"){return}break;case"marginLeft":if(s.substr(s.length-2)!=="em"){throw new Error("em is the only supported unit.")}d=+s.substr(0,s.length-2);break;case"marginRight":case"width":if(s.substr(s.length-2)!=="em"){throw new Error("em is the only supported unit.")}g=+s.substr(0,s.length-2);break;case"color":this.state=this.state.withColor(s);break;case"height":case"verticalAlign":break;default:}}}for(i in e.attributes){if(e.attributes.hasOwnProperty(i)){s=e.attributes[i];switch(i){case"aria-hidden":break;default:}}}var x=this.prevClass+"_"+v;if(d===null){d=p[x];if(d===undefined&&this.state.styleFactor===1){d=c[x]}}if(d){this.x+=d*this.state.em}if(f){this.halign(e.children,this.state.halign)}else if(b){this.lap(b,e.children)}else if(e.children){e.children.forEach(this.prepare.bind(this))}else{this.ctxt.font=this.state.font;var k=e.value;var z=this.ctxt.measureText(k);var S=z.width;if(e.italic){g+=e.italic}if(k!==""&&k!=="\u200b"){var M={x:this.x,y:this.state.ypos,font:this.state.font,color:this.state.color,text:k};this.outList.push(M);this.fontsUsed[this.state.fvd]=this.state.font}this.x+=S}this.x+=g*this.state.em;if(y!==null){this.x=y}this.state=t;this.prevClass=v};l.prototype.halign=function(e,t){var r;var a;var i=this.horizontalLines;this.horizontalLines=[];var s=this.outList;var n=this.x;var l=s.length;var o=0;for(r=0;r<e.length;++r){var u=s.length;this.x=0;this.prepare(e[r]);var h=this.x;if(o<h){o=h}a=t*h;while(u<s.length){s[u++].x-=a}}a=t*o+n;while(l<s.length){s[l++].x+=a}for(r=0;r<this.horizontalLines.length;++r){var c=this.horizontalLines[r];c.x=n;c.width=o;s.push(c)}this.x=n+o;this.horizontalLines=i};l.prototype.lap=function(e,t){var r=t[0];var a=this.x;var i=this.outList;var s=i.length;this.prepare(r);var n=this.x-a;this.x=a;if(e==="llap"){while(s<i.length){i[s++].x-=n}}};function m(e,t){var r=e.getContext?e.getContext("2d"):e;var a=r.font;var i=r.fillStyle;try{var s=t(r);r.font=a;r.fillStyle=i;return s}catch(n){r.font=a;r.fillStyle=i;throw n}}function f(e,t,r,a){this.fontsUsed=r;this.renderAt=function(r,i){r-=a;m(e,function(e){var a=e.fillStyle;for(var s=0;s<t.length;++s){var n=t[s];e.fillStyle=n.color===null?a:n.color;if(n.text){e.font=n.font;e.fillText(n.text,n.x+r,n.y+i)}else if(n.width||n.height){e.fillRect(n.x+r,n.y+i-n.height,n.width,n.height)}}})}}function v(e,t,r){return m(t,function(t){var i=r.halign||a.left;var s=new l(t,r);s.prepare(e);var n=s.state.em;var o=s.x*i;var u=new f(t,s.outList,s.fontsUsed,o);u.width=s.x;u.depth=e.depth*n;u.height=e.height*n;return u})}function d(e,t,r,a,i){v(e,t,i).renderAt(r,a)}t.exports={prepare:v,render:d}},{}],15:[function(e,t,r){var a=e("./ParseError");var i=e("./Style");var s=e("./buildCommon");var n=e("./fontMetrics");var l=e("./symbols");var o=e("./utils");var u=s.makeSpan;var h=function(e,t){if(l.math[e]&&l.math[e].replace){return n.getCharacterMetrics(l.math[e].replace,t)}else{return n.getCharacterMetrics(e,t)}};var c=function(e,t,r,a){return s.makeSymbol(e,"Size"+t+"-Regular",r,a)};var p=function(e,t,r,a){a=a||[];var i=u(a.concat(["style-wrap",r.style.reset(),t.cls()]),[e],r);var s=t.sizeMultiplier/r.style.sizeMultiplier;i.height*=s;i.depth*=s;i.maxFontSize=t.sizeMultiplier;return i};var m=function(e,t,r,a,i,n){var l=s.makeSymbol(e,"Main-Regular",i,a);var o=p(l,t,a,n);if(r){var u=(1-a.style.sizeMultiplier/t.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=u+"em";o.height-=u;o.depth+=u}return o};var f=function(e,t,r,a,s,n){var l=c(e,t,s,a);var o=p(u(["delimsizing","size"+t],[l],a),i.TEXT,a,n);if(r){var h=(1-a.style.sizeMultiplier)*a.style.metrics.axisHeight;o.style.top=h+"em";o.height-=h;o.depth+=h}return o};var v=function(e,t,r){var a;if(t==="Size1-Regular"){a="delim-size1"}else if(t==="Size4-Regular"){a="delim-size4"}var i=u(["delimsizinginner",a],[u([],[s.makeSymbol(e,t,r)])]);return{type:"elem",elem:i}};var d=function(e,t,r,a,n,l){var o;var c;var m;var f;o=m=f=e;c=null;var d="Size1-Regular";if(e==="\\uparrow"){m=f="\u23d0"}else if(e==="\\Uparrow"){m=f="\u2016"}else if(e==="\\downarrow"){o=m="\u23d0"}else if(e==="\\Downarrow"){o=m="\u2016"}else if(e==="\\updownarrow"){o="\\uparrow";m="\u23d0";f="\\downarrow"}else if(e==="\\Updownarrow"){o="\\Uparrow";m="\u2016";f="\\Downarrow"}else if(e==="["||e==="\\lbrack"){o="\u23a1";m="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="]"||e==="\\rbrack"){o="\u23a4";m="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\lfloor"){m=o="\u23a2";f="\u23a3";d="Size4-Regular"}else if(e==="\\lceil"){o="\u23a1";m=f="\u23a2";d="Size4-Regular"}else if(e==="\\rfloor"){m=o="\u23a5";f="\u23a6";d="Size4-Regular"}else if(e==="\\rceil"){o="\u23a4";m=f="\u23a5";d="Size4-Regular"}else if(e==="("){o="\u239b";m="\u239c";f="\u239d";d="Size4-Regular"}else if(e===")"){o="\u239e";m="\u239f";f="\u23a0";d="Size4-Regular"}else if(e==="\\{"||e==="\\lbrace"){o="\u23a7";c="\u23a8";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\}"||e==="\\rbrace"){o="\u23ab";c="\u23ac";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lgroup"){o="\u23a7";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\rgroup"){o="\u23ab";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\lmoustache"){o="\u23a7";f="\u23ad";m="\u23aa";d="Size4-Regular"}else if(e==="\\rmoustache"){o="\u23ab";f="\u23a9";m="\u23aa";d="Size4-Regular"}else if(e==="\\surd"){o="\ue001";f="\u23b7";m="\ue000";d="Size4-Regular"}var g=h(o,d);var y=g.height+g.depth;var b=h(m,d);var w=b.height+b.depth;var x=h(f,d);var k=x.height+x.depth;var z=0;var S=1;if(c!==null){var M=h(c,d);z=M.height+M.depth;S=2}var T=y+k+z;var A=Math.ceil((t-T)/(S*w));var N=T+A*S*w;var q=a.style.metrics.axisHeight;if(r){q*=a.style.sizeMultiplier}var C=N/2-q;var R=[];R.push(v(f,d,n));var E;if(c===null){for(E=0;E<A;E++){R.push(v(m,d,n))}}else{for(E=0;E<A;E++){R.push(v(m,d,n))}R.push(v(c,d,n));for(E=0;E<A;E++){R.push(v(m,d,n))}}R.push(v(o,d,n));var O=s.makeVList(R,"bottom",C,a);return p(u(["delimsizing","mult"],[O],a),i.TEXT,a,l)};var g=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","\\surd"];var y=["\\uparrow","\\downarrow","\\updownarrow","\\Uparrow","\\Downarrow","\\Updownarrow","|","\\|","\\vert","\\Vert","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache"];var b=["<",">","\\langle","\\rangle","/","\\backslash","\\lt","\\gt"];var w=[0,1.2,1.8,2.4,3];var x=function(e,t,r,i,s){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}if(o.contains(g,e)||o.contains(b,e)){return f(e,t,false,r,i,s)}else if(o.contains(y,e)){return d(e,w[t],false,r,i,s)}else{throw new a("Illegal delimiter: '"+e+"'")}};var k=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4}];var z=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"stack"}];var S=[{type:"small",style:i.SCRIPTSCRIPT},{type:"small",style:i.SCRIPT},{type:"small",style:i.TEXT},{type:"large",size:1},{type:"large",size:2},{type:"large",size:3},{type:"large",size:4},{type:"stack"}];var M=function(e){if(e.type==="small"){return"Main-Regular"}else if(e.type==="large"){return"Size"+e.size+"-Regular"}else if(e.type==="stack"){return"Size4-Regular"}};var T=function(e,t,r,a){var i=Math.min(2,3-a.style.size);for(var s=i;s<r.length;s++){if(r[s].type==="stack"){break}var n=h(e,M(r[s]));var l=n.height+n.depth;if(r[s].type==="small"){l*=r[s].style.sizeMultiplier}if(l>t){return r[s]}}return r[r.length-1]};var A=function(e,t,r,a,i,s){if(e==="<"||e==="\\lt"){e="\\langle"}else if(e===">"||e==="\\gt"){e="\\rangle"}var n;if(o.contains(b,e)){n=k}else if(o.contains(g,e)){n=S}else{n=z}var l=T(e,t,n,a);if(l.type==="small"){return m(e,l.style,r,a,i,s)}else if(l.type==="large"){return f(e,l.size,r,a,i,s)}else if(l.type==="stack"){return d(e,t,r,a,i,s)}};var N=function(e,t,r,a,i,s){var l=a.style.metrics.axisHeight*a.style.sizeMultiplier;var o=901;var u=5/n.metrics.ptPerEm;var h=Math.max(t-l,r+l);var c=Math.max(h/500*o,2*h-u);return A(e,c,true,a,i,s)};t.exports={sizedDelim:x,customSizedDelim:A,leftRightDelim:N}},{"./ParseError":6,"./Style":9,"./buildCommon":10,"./fontMetrics":18,"./symbols":24,"./utils":26}],16:[function(e,t,r){var a=e("./unicodeRegexes");var i=e("./utils");var s=function(e){e=e.slice();for(var t=e.length-1;t>=0;t--){if(!e[t]){e.splice(t,1)}}return e.join(" ")};function n(e,t,r){this.classes=e||[];this.children=t||[];this.height=0;this.depth=0;this.maxFontSize=0;this.style={};this.attributes={};if(r){if(r.style.isTight()){this.classes.push("mtight")}if(r.getColor()){this.style.color=r.getColor()}}}n.prototype.setAttribute=function(e,t){this.attributes[e]=t};n.prototype.tryCombine=function(e){return false};n.prototype.toNode=function(){var e=document.createElement("span");e.className=s(this.classes);for(var t in this.style){if(Object.prototype.hasOwnProperty.call(this.style,t)){e.style[t]=this.style[t]}}for(var r in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,r)){e.setAttribute(r,this.attributes[r])}}for(var a=0;a<this.children.length;a++){e.appendChild(this.children[a].toNode())}return e};n.prototype.toMarkup=function(){var e="<span";if(this.classes.length){e+=' class="';e+=i.escape(s(this.classes));e+='"'}var t="";for(var r in this.style){if(this.style.hasOwnProperty(r)){t+=i.hyphenate(r)+":"+this.style[r]+";"}}if(t){e+=' style="'+i.escape(t)+'"'}for(var a in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,a)){e+=" "+a+'="';e+=i.escape(this.attributes[a]);e+='"'}}e+=">";for(var n=0;n<this.children.length;n++){e+=this.children[n].toMarkup()}e+="</span>";return e};function l(e){this.children=e||[];this.height=0;this.depth=0;this.maxFontSize=0}l.prototype.toNode=function(){var e=document.createDocumentFragment();for(var t=0;t<this.children.length;t++){e.appendChild(this.children[t].toNode())}return e};l.prototype.toMarkup=function(){var e="";for(var t=0;t<this.children.length;t++){e+=this.children[t].toMarkup()}return e};var o={"\xee":"\u0131\u0302","\xef":"\u0131\u0308","\xed":"\u0131\u0301","\xec":"\u0131\u0300"};function u(e,t,r,i,s,n,l){this.value=e||"";this.height=t||0;this.depth=r||0;this.italic=i||0;this.skew=s||0;this.classes=n||[];this.style=l||{};this.maxFontSize=0;if(a.cjkRegex.test(e)){if(a.hangulRegex.test(e)){this.classes.push("hangul_fallback")}else{this.classes.push("cjk_fallback")}}if(/[\xee\xef\xed\xec]/.test(this.value)){this.value=o[this.value]}}u.prototype.tryCombine=function(e){if(!e||!(e instanceof u)||this.italic>0||s(this.classes)!==s(e.classes)||this.skew!==e.skew||this.maxFontSize!==e.maxFontSize){return false; +}for(var t in this.style){if(this.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}for(t in e.style){if(e.style.hasOwnProperty(t)&&this.style[t]!==e.style[t]){return false}}this.value+=e.value;this.height=Math.max(this.height,e.height);this.depth=Math.max(this.depth,e.depth);this.italic=e.italic;return true};u.prototype.toNode=function(){var e=document.createTextNode(this.value);var t=null;if(this.italic>0){t=document.createElement("span");t.style.marginRight=this.italic+"em"}if(this.classes.length>0){t=t||document.createElement("span");t.className=s(this.classes)}for(var r in this.style){if(this.style.hasOwnProperty(r)){t=t||document.createElement("span");t.style[r]=this.style[r]}}if(t){t.appendChild(e);return t}else{return e}};u.prototype.toMarkup=function(){var e=false;var t="<span";if(this.classes.length){e=true;t+=' class="';t+=i.escape(s(this.classes));t+='"'}var r="";if(this.italic>0){r+="margin-right:"+this.italic+"em;"}for(var a in this.style){if(this.style.hasOwnProperty(a)){r+=i.hyphenate(a)+":"+this.style[a]+";"}}if(r){e=true;t+=' style="'+i.escape(r)+'"'}var n=i.escape(this.value);if(e){t+=">";t+=n;t+="</span>";return t}else{return n}};t.exports={span:n,documentFragment:l,symbolNode:u}},{"./unicodeRegexes":25,"./utils":26}],17:[function(e,t,r){var a=e("./parseData");var i=e("./ParseError");var s=e("./Style");var n=a.ParseNode;function l(e,t){var r=[];var a=[r];var s=[];while(true){var l=e.parseExpression(false,null);r.push(new n("ordgroup",l,e.mode));var o=e.nextToken.text;if(o==="&"){e.consume()}else if(o==="\\end"){break}else if(o==="\\\\"||o==="\\cr"){var u=e.parseFunction();s.push(u.value.size);r=[];a.push(r)}else{throw new i("Expected & or \\\\ or \\end",e.nextToken)}}t.body=a;t.rowGaps=s;return new n(t.type,t,e.mode)}function o(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs||0,argTypes:r.argTypes,greediness:1,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,handler:a};for(var s=0;s<e.length;++s){t.exports[e[s]]=i}}o("array",{numArgs:1},function(e,t){var r=t[0];r=r.value.map?r.value:[r];var a=r.map(function(e){var t=e.value;if("lcr".indexOf(t)!==-1){return{type:"align",align:t}}else if(t==="|"){return{type:"separator",separator:"|"}}throw new i("Unknown column alignment: "+e.value,e)});var s={type:"array",cols:a,hskipBeforeAndAfter:true};s=l(e.parser,s);return s});o(["matrix","pmatrix","bmatrix","Bmatrix","vmatrix","Vmatrix"],{},function(e){var t={matrix:null,pmatrix:["(",")"],bmatrix:["[","]"],Bmatrix:["\\{","\\}"],vmatrix:["|","|"],Vmatrix:["\\Vert","\\Vert"]}[e.envName];var r={type:"array",hskipBeforeAndAfter:false};r=l(e.parser,r);if(t){r=new n("leftright",{body:[r],left:t[0],right:t[1]},e.mode)}return r});o("cases",{},function(e){var t={type:"array",arraystretch:1.2,cols:[{type:"align",align:"l",pregap:0,postgap:s.TEXT.metrics.quad},{type:"align",align:"l",pregap:0,postgap:0}]};t=l(e.parser,t);t=new n("leftright",{body:[t],left:"\\{",right:"."},e.mode);return t});o("aligned",{},function(e){var t={type:"array",cols:[]};t=l(e.parser,t);var r=new n("ordgroup",[],e.mode);var a=0;t.value.body.forEach(function(e){var t;for(t=1;t<e.length;t+=2){e[t].value.unshift(r)}if(a<e.length){a=e.length}});for(var i=0;i<a;++i){var s="r";var o=0;if(i%2===1){s="l"}else if(i>0){o=2}t.value.cols[i]={type:"align",align:s,pregap:o,postgap:0}}return t})},{"./ParseError":6,"./Style":9,"./parseData":22}],18:[function(e,t,r){var a=e("./Style");var i=e("./unicodeRegexes").cjkRegex;var s={slant:[.25,.25,.25],space:[0,0,0],stretch:[0,0,0],shrink:[0,0,0],xHeight:[.431,.431,.431],quad:[1,1.171,1.472],extraSpace:[0,0,0],num1:[.677,.732,.925],num2:[.394,.384,.387],num3:[.444,.471,.504],denom1:[.686,.752,1.025],denom2:[.345,.344,.532],sup1:[.413,.503,.504],sup2:[.363,.431,.404],sup3:[.289,.286,.294],sub1:[.15,.143,.2],sub2:[.247,.286,.4],supDrop:[.386,.353,.494],subDrop:[.05,.071,.1],delim1:[2.39,1.7,1.98],delim2:[1.01,1.157,1.42],axisHeight:[.25,.25,.25]};var n=0;var l=0;var o=0;var u=0;var h=.431;var c=1;var p=0;var m=.04;var f=.111;var v=.166;var d=.2;var g=.6;var y=.1;var b=10;var w=2/b;var x={defaultRuleThickness:m,bigOpSpacing1:f,bigOpSpacing2:v,bigOpSpacing3:d,bigOpSpacing4:g,bigOpSpacing5:y,ptPerEm:b,doubleRuleSep:w};var k=e("./fontMetricsData");var z={"\xc0":"A","\xc1":"A","\xc2":"A","\xc3":"A","\xc4":"A","\xc5":"A","\xc6":"A","\xc7":"C","\xc8":"E","\xc9":"E","\xca":"E","\xcb":"E","\xcc":"I","\xcd":"I","\xce":"I","\xcf":"I","\xd0":"D","\xd1":"N","\xd2":"O","\xd3":"O","\xd4":"O","\xd5":"O","\xd6":"O","\xd8":"O","\xd9":"U","\xda":"U","\xdb":"U","\xdc":"U","\xdd":"Y","\xde":"o","\xdf":"B","\xe0":"a","\xe1":"a","\xe2":"a","\xe3":"a","\xe4":"a","\xe5":"a","\xe6":"a","\xe7":"c","\xe8":"e","\xe9":"e","\xea":"e","\xeb":"e","\xec":"i","\xed":"i","\xee":"i","\xef":"i","\xf0":"d","\xf1":"n","\xf2":"o","\xf3":"o","\xf4":"o","\xf5":"o","\xf6":"o","\xf8":"o","\xf9":"u","\xfa":"u","\xfb":"u","\xfc":"u","\xfd":"y","\xfe":"o","\xff":"y","\u0410":"A","\u0411":"B","\u0412":"B","\u0413":"F","\u0414":"A","\u0415":"E","\u0416":"K","\u0417":"3","\u0418":"N","\u0419":"N","\u041a":"K","\u041b":"N","\u041c":"M","\u041d":"H","\u041e":"O","\u041f":"N","\u0420":"P","\u0421":"C","\u0422":"T","\u0423":"y","\u0424":"O","\u0425":"X","\u0426":"U","\u0427":"h","\u0428":"W","\u0429":"W","\u042a":"B","\u042b":"X","\u042c":"B","\u042d":"3","\u042e":"X","\u042f":"R","\u0430":"a","\u0431":"b","\u0432":"a","\u0433":"r","\u0434":"y","\u0435":"e","\u0436":"m","\u0437":"e","\u0438":"n","\u0439":"n","\u043a":"n","\u043b":"n","\u043c":"m","\u043d":"n","\u043e":"o","\u043f":"n","\u0440":"p","\u0441":"c","\u0442":"o","\u0443":"y","\u0444":"b","\u0445":"x","\u0446":"n","\u0447":"n","\u0448":"w","\u0449":"w","\u044a":"a","\u044b":"m","\u044c":"a","\u044d":"e","\u044e":"m","\u044f":"r"};var S=function(e,t){var r=e.charCodeAt(0);if(e[0]in z){r=z[e[0]].charCodeAt(0)}else if(i.test(e[0])){r="M".charCodeAt(0)}var a=k[t][r];if(a){return{depth:a[0],height:a[1],italic:a[2],skew:a[3],width:a[4]}}};t.exports={metrics:x,sigmas:s,getCharacterMetrics:S}},{"./Style":9,"./fontMetricsData":19,"./unicodeRegexes":25}],19:[function(e,t,r){t.exports={"AMS-Regular":{65:[0,.68889,0,0],66:[0,.68889,0,0],67:[0,.68889,0,0],68:[0,.68889,0,0],69:[0,.68889,0,0],70:[0,.68889,0,0],71:[0,.68889,0,0],72:[0,.68889,0,0],73:[0,.68889,0,0],74:[.16667,.68889,0,0],75:[0,.68889,0,0],76:[0,.68889,0,0],77:[0,.68889,0,0],78:[0,.68889,0,0],79:[.16667,.68889,0,0],80:[0,.68889,0,0],81:[.16667,.68889,0,0],82:[0,.68889,0,0],83:[0,.68889,0,0],84:[0,.68889,0,0],85:[0,.68889,0,0],86:[0,.68889,0,0],87:[0,.68889,0,0],88:[0,.68889,0,0],89:[0,.68889,0,0],90:[0,.68889,0,0],107:[0,.68889,0,0],165:[0,.675,.025,0],174:[.15559,.69224,0,0],240:[0,.68889,0,0],295:[0,.68889,0,0],710:[0,.825,0,0],732:[0,.9,0,0],770:[0,.825,0,0],771:[0,.9,0,0],989:[.08167,.58167,0,0],1008:[0,.43056,.04028,0],8245:[0,.54986,0,0],8463:[0,.68889,0,0],8487:[0,.68889,0,0],8498:[0,.68889,0,0],8502:[0,.68889,0,0],8503:[0,.68889,0,0],8504:[0,.68889,0,0],8513:[0,.68889,0,0],8592:[-.03598,.46402,0,0],8594:[-.03598,.46402,0,0],8602:[-.13313,.36687,0,0],8603:[-.13313,.36687,0,0],8606:[.01354,.52239,0,0],8608:[.01354,.52239,0,0],8610:[.01354,.52239,0,0],8611:[.01354,.52239,0,0],8619:[0,.54986,0,0],8620:[0,.54986,0,0],8621:[-.13313,.37788,0,0],8622:[-.13313,.36687,0,0],8624:[0,.69224,0,0],8625:[0,.69224,0,0],8630:[0,.43056,0,0],8631:[0,.43056,0,0],8634:[.08198,.58198,0,0],8635:[.08198,.58198,0,0],8638:[.19444,.69224,0,0],8639:[.19444,.69224,0,0],8642:[.19444,.69224,0,0],8643:[.19444,.69224,0,0],8644:[.1808,.675,0,0],8646:[.1808,.675,0,0],8647:[.1808,.675,0,0],8648:[.19444,.69224,0,0],8649:[.1808,.675,0,0],8650:[.19444,.69224,0,0],8651:[.01354,.52239,0,0],8652:[.01354,.52239,0,0],8653:[-.13313,.36687,0,0],8654:[-.13313,.36687,0,0],8655:[-.13313,.36687,0,0],8666:[.13667,.63667,0,0],8667:[.13667,.63667,0,0],8669:[-.13313,.37788,0,0],8672:[-.064,.437,0,0],8674:[-.064,.437,0,0],8705:[0,.825,0,0],8708:[0,.68889,0,0],8709:[.08167,.58167,0,0],8717:[0,.43056,0,0],8722:[-.03598,.46402,0,0],8724:[.08198,.69224,0,0],8726:[.08167,.58167,0,0],8733:[0,.69224,0,0],8736:[0,.69224,0,0],8737:[0,.69224,0,0],8738:[.03517,.52239,0,0],8739:[.08167,.58167,0,0],8740:[.25142,.74111,0,0],8741:[.08167,.58167,0,0],8742:[.25142,.74111,0,0],8756:[0,.69224,0,0],8757:[0,.69224,0,0],8764:[-.13313,.36687,0,0],8765:[-.13313,.37788,0,0],8769:[-.13313,.36687,0,0],8770:[-.03625,.46375,0,0],8774:[.30274,.79383,0,0],8776:[-.01688,.48312,0,0],8778:[.08167,.58167,0,0],8782:[.06062,.54986,0,0],8783:[.06062,.54986,0,0],8785:[.08198,.58198,0,0],8786:[.08198,.58198,0,0],8787:[.08198,.58198,0,0],8790:[0,.69224,0,0],8791:[.22958,.72958,0,0],8796:[.08198,.91667,0,0],8806:[.25583,.75583,0,0],8807:[.25583,.75583,0,0],8808:[.25142,.75726,0,0],8809:[.25142,.75726,0,0],8812:[.25583,.75583,0,0],8814:[.20576,.70576,0,0],8815:[.20576,.70576,0,0],8816:[.30274,.79383,0,0],8817:[.30274,.79383,0,0],8818:[.22958,.72958,0,0],8819:[.22958,.72958,0,0],8822:[.1808,.675,0,0],8823:[.1808,.675,0,0],8828:[.13667,.63667,0,0],8829:[.13667,.63667,0,0],8830:[.22958,.72958,0,0],8831:[.22958,.72958,0,0],8832:[.20576,.70576,0,0],8833:[.20576,.70576,0,0],8840:[.30274,.79383,0,0],8841:[.30274,.79383,0,0],8842:[.13597,.63597,0,0],8843:[.13597,.63597,0,0],8847:[.03517,.54986,0,0],8848:[.03517,.54986,0,0],8858:[.08198,.58198,0,0],8859:[.08198,.58198,0,0],8861:[.08198,.58198,0,0],8862:[0,.675,0,0],8863:[0,.675,0,0],8864:[0,.675,0,0],8865:[0,.675,0,0],8872:[0,.69224,0,0],8873:[0,.69224,0,0],8874:[0,.69224,0,0],8876:[0,.68889,0,0],8877:[0,.68889,0,0],8878:[0,.68889,0,0],8879:[0,.68889,0,0],8882:[.03517,.54986,0,0],8883:[.03517,.54986,0,0],8884:[.13667,.63667,0,0],8885:[.13667,.63667,0,0],8888:[0,.54986,0,0],8890:[.19444,.43056,0,0],8891:[.19444,.69224,0,0],8892:[.19444,.69224,0,0],8901:[0,.54986,0,0],8903:[.08167,.58167,0,0],8905:[.08167,.58167,0,0],8906:[.08167,.58167,0,0],8907:[0,.69224,0,0],8908:[0,.69224,0,0],8909:[-.03598,.46402,0,0],8910:[0,.54986,0,0],8911:[0,.54986,0,0],8912:[.03517,.54986,0,0],8913:[.03517,.54986,0,0],8914:[0,.54986,0,0],8915:[0,.54986,0,0],8916:[0,.69224,0,0],8918:[.0391,.5391,0,0],8919:[.0391,.5391,0,0],8920:[.03517,.54986,0,0],8921:[.03517,.54986,0,0],8922:[.38569,.88569,0,0],8923:[.38569,.88569,0,0],8926:[.13667,.63667,0,0],8927:[.13667,.63667,0,0],8928:[.30274,.79383,0,0],8929:[.30274,.79383,0,0],8934:[.23222,.74111,0,0],8935:[.23222,.74111,0,0],8936:[.23222,.74111,0,0],8937:[.23222,.74111,0,0],8938:[.20576,.70576,0,0],8939:[.20576,.70576,0,0],8940:[.30274,.79383,0,0],8941:[.30274,.79383,0,0],8994:[.19444,.69224,0,0],8995:[.19444,.69224,0,0],9416:[.15559,.69224,0,0],9484:[0,.69224,0,0],9488:[0,.69224,0,0],9492:[0,.37788,0,0],9496:[0,.37788,0,0],9585:[.19444,.68889,0,0],9586:[.19444,.74111,0,0],9632:[0,.675,0,0],9633:[0,.675,0,0],9650:[0,.54986,0,0],9651:[0,.54986,0,0],9654:[.03517,.54986,0,0],9660:[0,.54986,0,0],9661:[0,.54986,0,0],9664:[.03517,.54986,0,0],9674:[.11111,.69224,0,0],9733:[.19444,.69224,0,0],10003:[0,.69224,0,0],10016:[0,.69224,0,0],10731:[.11111,.69224,0,0],10846:[.19444,.75583,0,0],10877:[.13667,.63667,0,0],10878:[.13667,.63667,0,0],10885:[.25583,.75583,0,0],10886:[.25583,.75583,0,0],10887:[.13597,.63597,0,0],10888:[.13597,.63597,0,0],10889:[.26167,.75726,0,0],10890:[.26167,.75726,0,0],10891:[.48256,.98256,0,0],10892:[.48256,.98256,0,0],10901:[.13667,.63667,0,0],10902:[.13667,.63667,0,0],10933:[.25142,.75726,0,0],10934:[.25142,.75726,0,0],10935:[.26167,.75726,0,0],10936:[.26167,.75726,0,0],10937:[.26167,.75726,0,0],10938:[.26167,.75726,0,0],10949:[.25583,.75583,0,0],10950:[.25583,.75583,0,0],10955:[.28481,.79383,0,0],10956:[.28481,.79383,0,0],57350:[.08167,.58167,0,0],57351:[.08167,.58167,0,0],57352:[.08167,.58167,0,0],57353:[0,.43056,.04028,0],57356:[.25142,.75726,0,0],57357:[.25142,.75726,0,0],57358:[.41951,.91951,0,0],57359:[.30274,.79383,0,0],57360:[.30274,.79383,0,0],57361:[.41951,.91951,0,0],57366:[.25142,.75726,0,0],57367:[.25142,.75726,0,0],57368:[.25142,.75726,0,0],57369:[.25142,.75726,0,0],57370:[.13597,.63597,0,0],57371:[.13597,.63597,0,0]},"Caligraphic-Regular":{48:[0,.43056,0,0],49:[0,.43056,0,0],50:[0,.43056,0,0],51:[.19444,.43056,0,0],52:[.19444,.43056,0,0],53:[.19444,.43056,0,0],54:[0,.64444,0,0],55:[.19444,.43056,0,0],56:[0,.64444,0,0],57:[.19444,.43056,0,0],65:[0,.68333,0,.19445],66:[0,.68333,.03041,.13889],67:[0,.68333,.05834,.13889],68:[0,.68333,.02778,.08334],69:[0,.68333,.08944,.11111],70:[0,.68333,.09931,.11111],71:[.09722,.68333,.0593,.11111],72:[0,.68333,.00965,.11111],73:[0,.68333,.07382,0],74:[.09722,.68333,.18472,.16667],75:[0,.68333,.01445,.05556],76:[0,.68333,0,.13889],77:[0,.68333,0,.13889],78:[0,.68333,.14736,.08334],79:[0,.68333,.02778,.11111],80:[0,.68333,.08222,.08334],81:[.09722,.68333,0,.11111],82:[0,.68333,0,.08334],83:[0,.68333,.075,.13889],84:[0,.68333,.25417,0],85:[0,.68333,.09931,.08334],86:[0,.68333,.08222,0],87:[0,.68333,.08222,.08334],88:[0,.68333,.14643,.13889],89:[.09722,.68333,.08222,.08334],90:[0,.68333,.07944,.13889]},"Fraktur-Regular":{33:[0,.69141,0,0],34:[0,.69141,0,0],38:[0,.69141,0,0],39:[0,.69141,0,0],40:[.24982,.74947,0,0],41:[.24982,.74947,0,0],42:[0,.62119,0,0],43:[.08319,.58283,0,0],44:[0,.10803,0,0],45:[.08319,.58283,0,0],46:[0,.10803,0,0],47:[.24982,.74947,0,0],48:[0,.47534,0,0],49:[0,.47534,0,0],50:[0,.47534,0,0],51:[.18906,.47534,0,0],52:[.18906,.47534,0,0],53:[.18906,.47534,0,0],54:[0,.69141,0,0],55:[.18906,.47534,0,0],56:[0,.69141,0,0],57:[.18906,.47534,0,0],58:[0,.47534,0,0],59:[.12604,.47534,0,0],61:[-.13099,.36866,0,0],63:[0,.69141,0,0],65:[0,.69141,0,0],66:[0,.69141,0,0],67:[0,.69141,0,0],68:[0,.69141,0,0],69:[0,.69141,0,0],70:[.12604,.69141,0,0],71:[0,.69141,0,0],72:[.06302,.69141,0,0],73:[0,.69141,0,0],74:[.12604,.69141,0,0],75:[0,.69141,0,0],76:[0,.69141,0,0],77:[0,.69141,0,0],78:[0,.69141,0,0],79:[0,.69141,0,0],80:[.18906,.69141,0,0],81:[.03781,.69141,0,0],82:[0,.69141,0,0],83:[0,.69141,0,0],84:[0,.69141,0,0],85:[0,.69141,0,0],86:[0,.69141,0,0],87:[0,.69141,0,0],88:[0,.69141,0,0],89:[.18906,.69141,0,0],90:[.12604,.69141,0,0],91:[.24982,.74947,0,0],93:[.24982,.74947,0,0],94:[0,.69141,0,0],97:[0,.47534,0,0],98:[0,.69141,0,0],99:[0,.47534,0,0],100:[0,.62119,0,0],101:[0,.47534,0,0],102:[.18906,.69141,0,0],103:[.18906,.47534,0,0],104:[.18906,.69141,0,0],105:[0,.69141,0,0],106:[0,.69141,0,0],107:[0,.69141,0,0],108:[0,.69141,0,0],109:[0,.47534,0,0],110:[0,.47534,0,0],111:[0,.47534,0,0],112:[.18906,.52396,0,0],113:[.18906,.47534,0,0],114:[0,.47534,0,0],115:[0,.47534,0,0],116:[0,.62119,0,0],117:[0,.47534,0,0],118:[0,.52396,0,0],119:[0,.52396,0,0],120:[.18906,.47534,0,0],121:[.18906,.47534,0,0],122:[.18906,.47534,0,0],8216:[0,.69141,0,0],8217:[0,.69141,0,0],58112:[0,.62119,0,0],58113:[0,.62119,0,0],58114:[.18906,.69141,0,0],58115:[.18906,.69141,0,0],58116:[.18906,.47534,0,0],58117:[0,.69141,0,0],58118:[0,.62119,0,0],58119:[0,.47534,0,0]},"Main-Bold":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.13333,.63333,0,0],44:[.19444,.15556,0,0],45:[0,.44444,0,0],46:[0,.15556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.44444,0,0],59:[.19444,.44444,0,0],60:[.08556,.58556,0,0],61:[-.10889,.39111,0,0],62:[.08556,.58556,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,0,0],67:[0,.68611,0,0],68:[0,.68611,0,0],69:[0,.68611,0,0],70:[0,.68611,0,0],71:[0,.68611,0,0],72:[0,.68611,0,0],73:[0,.68611,0,0],74:[0,.68611,0,0],75:[0,.68611,0,0],76:[0,.68611,0,0],77:[0,.68611,0,0],78:[0,.68611,0,0],79:[0,.68611,0,0],80:[0,.68611,0,0],81:[.19444,.68611,0,0],82:[0,.68611,0,0],83:[0,.68611,0,0],84:[0,.68611,0,0],85:[0,.68611,0,0],86:[0,.68611,.01597,0],87:[0,.68611,.01597,0],88:[0,.68611,0,0],89:[0,.68611,.02875,0],90:[0,.68611,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.13444,.03194,0],96:[0,.69444,0,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.10903,0],103:[.19444,.44444,.01597,0],104:[0,.69444,0,0],105:[0,.69444,0,0],106:[.19444,.69444,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,0,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.01597,0],119:[0,.44444,.01597,0],120:[0,.44444,0,0],121:[.19444,.44444,.01597,0],122:[0,.44444,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.34444,0,0],168:[0,.69444,0,0],172:[0,.44444,0,0],175:[0,.59611,0,0],176:[0,.69444,0,0],177:[.13333,.63333,0,0],180:[0,.69444,0,0],215:[.13333,.63333,0,0],247:[.13333,.63333,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],710:[0,.69444,0,0],711:[0,.63194,0,0],713:[0,.59611,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.69444,0,0],730:[0,.69444,0,0],732:[0,.69444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.69444,0,0],772:[0,.59611,0,0],774:[0,.69444,0,0],775:[0,.69444,0,0],776:[0,.69444,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],824:[.19444,.69444,0,0],915:[0,.68611,0,0],916:[0,.68611,0,0],920:[0,.68611,0,0],923:[0,.68611,0,0],926:[0,.68611,0,0],928:[0,.68611,0,0],931:[0,.68611,0,0],933:[0,.68611,0,0],934:[0,.68611,0,0],936:[0,.68611,0,0],937:[0,.68611,0,0],8211:[0,.44444,.03194,0],8212:[0,.44444,.03194,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8242:[0,.55556,0,0],8407:[0,.72444,.15486,0],8463:[0,.69444,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,0],8472:[.19444,.44444,0,0],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.10889,.39111,0,0],8593:[.19444,.69444,0,0],8594:[-.10889,.39111,0,0],8595:[.19444,.69444,0,0],8596:[-.10889,.39111,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8636:[-.10889,.39111,0,0],8637:[-.10889,.39111,0,0],8640:[-.10889,.39111,0,0],8641:[-.10889,.39111,0,0],8656:[-.10889,.39111,0,0],8657:[.19444,.69444,0,0],8658:[-.10889,.39111,0,0],8659:[.19444,.69444,0,0],8660:[-.10889,.39111,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.06389,0],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68611,0,0],8712:[.08556,.58556,0,0],8715:[.08556,.58556,0,0],8722:[.13333,.63333,0,0],8723:[.13333,.63333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.02778,.47222,0,0],8728:[-.02639,.47361,0,0],8729:[-.02639,.47361,0,0],8730:[.18,.82,0,0],8733:[0,.44444,0,0],8734:[0,.44444,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.12778,0],8764:[-.10889,.39111,0,0],8768:[.19444,.69444,0,0],8771:[.00222,.50222,0,0],8776:[.02444,.52444,0,0],8781:[.00222,.50222,0,0],8801:[.00222,.50222,0,0],8804:[.19667,.69667,0,0],8805:[.19667,.69667,0,0],8810:[.08556,.58556,0,0],8811:[.08556,.58556,0,0],8826:[.08556,.58556,0,0],8827:[.08556,.58556,0,0],8834:[.08556,.58556,0,0],8835:[.08556,.58556,0,0],8838:[.19667,.69667,0,0],8839:[.19667,.69667,0,0],8846:[0,.55556,0,0],8849:[.19667,.69667,0,0],8850:[.19667,.69667,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.13333,.63333,0,0],8854:[.13333,.63333,0,0],8855:[.13333,.63333,0,0],8856:[.13333,.63333,0,0],8857:[.13333,.63333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8900:[-.02639,.47361,0,0],8901:[-.02639,.47361,0,0],8902:[-.02778,.47222,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.13889,.36111,0,0],8995:[-.13889,.36111,0,0],9651:[.19444,.69444,0,0],9657:[-.02778,.47222,0,0],9661:[.19444,.69444,0,0],9667:[-.02778,.47222,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10815:[0,.68611,0,0],10927:[.19667,.69667,0,0],10928:[.19667,.69667,0,0]},"Main-Italic":{33:[0,.69444,.12417,0],34:[0,.69444,.06961,0],35:[.19444,.69444,.06616,0],37:[.05556,.75,.13639,0],38:[0,.69444,.09694,0],39:[0,.69444,.12417,0],40:[.25,.75,.16194,0],41:[.25,.75,.03694,0],42:[0,.75,.14917,0],43:[.05667,.56167,.03694,0],44:[.19444,.10556,0,0],45:[0,.43056,.02826,0],46:[0,.10556,0,0],47:[.25,.75,.16194,0],48:[0,.64444,.13556,0],49:[0,.64444,.13556,0],50:[0,.64444,.13556,0],51:[0,.64444,.13556,0],52:[.19444,.64444,.13556,0],53:[0,.64444,.13556,0],54:[0,.64444,.13556,0],55:[.19444,.64444,.13556,0],56:[0,.64444,.13556,0],57:[0,.64444,.13556,0],58:[0,.43056,.0582,0],59:[.19444,.43056,.0582,0],61:[-.13313,.36687,.06616,0],63:[0,.69444,.1225,0],64:[0,.69444,.09597,0],65:[0,.68333,0,0],66:[0,.68333,.10257,0],67:[0,.68333,.14528,0],68:[0,.68333,.09403,0],69:[0,.68333,.12028,0],70:[0,.68333,.13305,0],71:[0,.68333,.08722,0],72:[0,.68333,.16389,0],73:[0,.68333,.15806,0],74:[0,.68333,.14028,0],75:[0,.68333,.14528,0],76:[0,.68333,0,0],77:[0,.68333,.16389,0],78:[0,.68333,.16389,0],79:[0,.68333,.09403,0],80:[0,.68333,.10257,0],81:[.19444,.68333,.09403,0],82:[0,.68333,.03868,0],83:[0,.68333,.11972,0],84:[0,.68333,.13305,0],85:[0,.68333,.16389,0],86:[0,.68333,.18361,0],87:[0,.68333,.18361,0],88:[0,.68333,.15806,0],89:[0,.68333,.19383,0],90:[0,.68333,.14528,0],91:[.25,.75,.1875,0],93:[.25,.75,.10528,0],94:[0,.69444,.06646,0],95:[.31,.12056,.09208,0],97:[0,.43056,.07671,0],98:[0,.69444,.06312,0],99:[0,.43056,.05653,0],100:[0,.69444,.10333,0],101:[0,.43056,.07514,0],102:[.19444,.69444,.21194,0],103:[.19444,.43056,.08847,0],104:[0,.69444,.07671,0],105:[0,.65536,.1019,0],106:[.19444,.65536,.14467,0],107:[0,.69444,.10764,0],108:[0,.69444,.10333,0],109:[0,.43056,.07671,0],110:[0,.43056,.07671,0],111:[0,.43056,.06312,0],112:[.19444,.43056,.06312,0],113:[.19444,.43056,.08847,0],114:[0,.43056,.10764,0],115:[0,.43056,.08208,0],116:[0,.61508,.09486,0],117:[0,.43056,.07671,0],118:[0,.43056,.10764,0],119:[0,.43056,.10764,0],120:[0,.43056,.12042,0],121:[.19444,.43056,.08847,0],122:[0,.43056,.12292,0],126:[.35,.31786,.11585,0],163:[0,.69444,0,0],305:[0,.43056,0,.02778],567:[.19444,.43056,0,.08334],768:[0,.69444,0,0],769:[0,.69444,.09694,0],770:[0,.69444,.06646,0],771:[0,.66786,.11585,0],772:[0,.56167,.10333,0],774:[0,.69444,.10806,0],775:[0,.66786,.11752,0],776:[0,.66786,.10474,0],778:[0,.69444,0,0],779:[0,.69444,.1225,0],780:[0,.62847,.08295,0],915:[0,.68333,.13305,0],916:[0,.68333,0,0],920:[0,.68333,.09403,0],923:[0,.68333,0,0],926:[0,.68333,.15294,0],928:[0,.68333,.16389,0],931:[0,.68333,.12028,0],933:[0,.68333,.11111,0],934:[0,.68333,.05986,0],936:[0,.68333,.11111,0],937:[0,.68333,.10257,0],8211:[0,.43056,.09208,0],8212:[0,.43056,.09208,0],8216:[0,.69444,.12417,0],8217:[0,.69444,.12417,0],8220:[0,.69444,.1685,0],8221:[0,.69444,.06961,0],8463:[0,.68889,0,0]},"Main-Regular":{32:[0,0,0,0],33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.19444,.10556,0,0],45:[0,.43056,0,0],46:[0,.10556,0,0],47:[.25,.75,0,0],48:[0,.64444,0,0],49:[0,.64444,0,0],50:[0,.64444,0,0],51:[0,.64444,0,0],52:[0,.64444,0,0],53:[0,.64444,0,0],54:[0,.64444,0,0],55:[0,.64444,0,0],56:[0,.64444,0,0],57:[0,.64444,0,0],58:[0,.43056,0,0],59:[.19444,.43056,0,0],60:[.0391,.5391,0,0],61:[-.13313,.36687,0,0],62:[.0391,.5391,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.68333,0,0],66:[0,.68333,0,0],67:[0,.68333,0,0],68:[0,.68333,0,0],69:[0,.68333,0,0],70:[0,.68333,0,0],71:[0,.68333,0,0],72:[0,.68333,0,0],73:[0,.68333,0,0],74:[0,.68333,0,0],75:[0,.68333,0,0],76:[0,.68333,0,0],77:[0,.68333,0,0],78:[0,.68333,0,0],79:[0,.68333,0,0],80:[0,.68333,0,0],81:[.19444,.68333,0,0],82:[0,.68333,0,0],83:[0,.68333,0,0],84:[0,.68333,0,0],85:[0,.68333,0,0],86:[0,.68333,.01389,0],87:[0,.68333,.01389,0],88:[0,.68333,0,0],89:[0,.68333,.025,0],90:[0,.68333,0,0],91:[.25,.75,0,0],92:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.31,.12056,.02778,0],96:[0,.69444,0,0],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,0],100:[0,.69444,0,0],101:[0,.43056,0,0],102:[0,.69444,.07778,0],103:[.19444,.43056,.01389,0],104:[0,.69444,0,0],105:[0,.66786,0,0],106:[.19444,.66786,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.19444,.43056,0,0],113:[.19444,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.61508,0,0],117:[0,.43056,0,0],118:[0,.43056,.01389,0],119:[0,.43056,.01389,0],120:[0,.43056,0,0],121:[.19444,.43056,.01389,0],122:[0,.43056,0,0],123:[.25,.75,0,0],124:[.25,.75,0,0],125:[.25,.75,0,0],126:[.35,.31786,0,0],160:[0,0,0,0],168:[0,.66786,0,0],172:[0,.43056,0,0],175:[0,.56778,0,0],176:[0,.69444,0,0],177:[.08333,.58333,0,0],180:[0,.69444,0,0],215:[.08333,.58333,0,0],247:[.08333,.58333,0,0],305:[0,.43056,0,0],567:[.19444,.43056,0,0],710:[0,.69444,0,0],711:[0,.62847,0,0],713:[0,.56778,0,0],714:[0,.69444,0,0],715:[0,.69444,0,0],728:[0,.69444,0,0],729:[0,.66786,0,0],730:[0,.69444,0,0],732:[0,.66786,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.66786,0,0],772:[0,.56778,0,0],774:[0,.69444,0,0],775:[0,.66786,0,0],776:[0,.66786,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.62847,0,0],824:[.19444,.69444,0,0],915:[0,.68333,0,0],916:[0,.68333,0,0],920:[0,.68333,0,0],923:[0,.68333,0,0],926:[0,.68333,0,0],928:[0,.68333,0,0],931:[0,.68333,0,0],933:[0,.68333,0,0],934:[0,.68333,0,0],936:[0,.68333,0,0],937:[0,.68333,0,0],8211:[0,.43056,.02778,0],8212:[0,.43056,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0],8224:[.19444,.69444,0,0],8225:[.19444,.69444,0,0],8230:[0,.12,0,0],8242:[0,.55556,0,0],8407:[0,.71444,.15382,0],8463:[0,.68889,0,0],8465:[0,.69444,0,0],8467:[0,.69444,0,.11111],8472:[.19444,.43056,0,.11111],8476:[0,.69444,0,0],8501:[0,.69444,0,0],8592:[-.13313,.36687,0,0],8593:[.19444,.69444,0,0],8594:[-.13313,.36687,0,0],8595:[.19444,.69444,0,0],8596:[-.13313,.36687,0,0],8597:[.25,.75,0,0],8598:[.19444,.69444,0,0],8599:[.19444,.69444,0,0],8600:[.19444,.69444,0,0],8601:[.19444,.69444,0,0],8614:[.011,.511,0,0],8617:[.011,.511,0,0],8618:[.011,.511,0,0],8636:[-.13313,.36687,0,0],8637:[-.13313,.36687,0,0],8640:[-.13313,.36687,0,0],8641:[-.13313,.36687,0,0],8652:[.011,.671,0,0],8656:[-.13313,.36687,0,0],8657:[.19444,.69444,0,0],8658:[-.13313,.36687,0,0],8659:[.19444,.69444,0,0],8660:[-.13313,.36687,0,0],8661:[.25,.75,0,0],8704:[0,.69444,0,0],8706:[0,.69444,.05556,.08334],8707:[0,.69444,0,0],8709:[.05556,.75,0,0],8711:[0,.68333,0,0],8712:[.0391,.5391,0,0],8715:[.0391,.5391,0,0],8722:[.08333,.58333,0,0],8723:[.08333,.58333,0,0],8725:[.25,.75,0,0],8726:[.25,.75,0,0],8727:[-.03472,.46528,0,0],8728:[-.05555,.44445,0,0],8729:[-.05555,.44445,0,0],8730:[.2,.8,0,0],8733:[0,.43056,0,0],8734:[0,.43056,0,0],8736:[0,.69224,0,0],8739:[.25,.75,0,0],8741:[.25,.75,0,0],8743:[0,.55556,0,0],8744:[0,.55556,0,0],8745:[0,.55556,0,0],8746:[0,.55556,0,0],8747:[.19444,.69444,.11111,0],8764:[-.13313,.36687,0,0],8768:[.19444,.69444,0,0],8771:[-.03625,.46375,0,0],8773:[-.022,.589,0,0],8776:[-.01688,.48312,0,0],8781:[-.03625,.46375,0,0],8784:[-.133,.67,0,0],8800:[.215,.716,0,0],8801:[-.03625,.46375,0,0],8804:[.13597,.63597,0,0],8805:[.13597,.63597,0,0],8810:[.0391,.5391,0,0],8811:[.0391,.5391,0,0],8826:[.0391,.5391,0,0],8827:[.0391,.5391,0,0],8834:[.0391,.5391,0,0],8835:[.0391,.5391,0,0],8838:[.13597,.63597,0,0],8839:[.13597,.63597,0,0],8846:[0,.55556,0,0],8849:[.13597,.63597,0,0],8850:[.13597,.63597,0,0],8851:[0,.55556,0,0],8852:[0,.55556,0,0],8853:[.08333,.58333,0,0],8854:[.08333,.58333,0,0],8855:[.08333,.58333,0,0],8856:[.08333,.58333,0,0],8857:[.08333,.58333,0,0],8866:[0,.69444,0,0],8867:[0,.69444,0,0],8868:[0,.69444,0,0],8869:[0,.69444,0,0],8872:[.249,.75,0,0],8900:[-.05555,.44445,0,0],8901:[-.05555,.44445,0,0],8902:[-.03472,.46528,0,0],8904:[.005,.505,0,0],8942:[.03,.9,0,0],8943:[-.19,.31,0,0],8945:[-.1,.82,0,0],8968:[.25,.75,0,0],8969:[.25,.75,0,0],8970:[.25,.75,0,0],8971:[.25,.75,0,0],8994:[-.14236,.35764,0,0],8995:[-.14236,.35764,0,0],9136:[.244,.744,0,0],9137:[.244,.744,0,0],9651:[.19444,.69444,0,0],9657:[-.03472,.46528,0,0],9661:[.19444,.69444,0,0],9667:[-.03472,.46528,0,0],9711:[.19444,.69444,0,0],9824:[.12963,.69444,0,0],9825:[.12963,.69444,0,0],9826:[.12963,.69444,0,0],9827:[.12963,.69444,0,0],9837:[0,.75,0,0],9838:[.19444,.69444,0,0],9839:[.19444,.69444,0,0],10216:[.25,.75,0,0],10217:[.25,.75,0,0],10222:[.244,.744,0,0],10223:[.244,.744,0,0],10229:[.011,.511,0,0],10230:[.011,.511,0,0],10231:[.011,.511,0,0],10232:[.024,.525,0,0],10233:[.024,.525,0,0],10234:[.024,.525,0,0],10236:[.011,.511,0,0],10815:[0,.68333,0,0],10927:[.13597,.63597,0,0],10928:[.13597,.63597,0,0]},"Math-BoldItalic":{47:[.19444,.69444,0,0],65:[0,.68611,0,0],66:[0,.68611,.04835,0],67:[0,.68611,.06979,0],68:[0,.68611,.03194,0],69:[0,.68611,.05451,0],70:[0,.68611,.15972,0],71:[0,.68611,0,0],72:[0,.68611,.08229,0],73:[0,.68611,.07778,0],74:[0,.68611,.10069,0],75:[0,.68611,.06979,0],76:[0,.68611,0,0],77:[0,.68611,.11424,0],78:[0,.68611,.11424,0],79:[0,.68611,.03194,0],80:[0,.68611,.15972,0],81:[.19444,.68611,0,0],82:[0,.68611,.00421,0],83:[0,.68611,.05382,0],84:[0,.68611,.15972,0],85:[0,.68611,.11424,0],86:[0,.68611,.25555,0],87:[0,.68611,.15972,0],88:[0,.68611,.07778,0],89:[0,.68611,.25555,0],90:[0,.68611,.06979,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[.19444,.69444,.11042,0],103:[.19444,.44444,.03704,0],104:[0,.69444,0,0],105:[0,.69326,0,0],106:[.19444,.69326,.0622,0],107:[0,.69444,.01852,0],108:[0,.69444,.0088,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,.03704,0],114:[0,.44444,.03194,0],115:[0,.44444,0,0],116:[0,.63492,0,0],117:[0,.44444,0,0],118:[0,.44444,.03704,0],119:[0,.44444,.02778,0],120:[0,.44444,0,0],121:[.19444,.44444,.03704,0],122:[0,.44444,.04213,0],915:[0,.68611,.15972,0],916:[0,.68611,0,0],920:[0,.68611,.03194,0],923:[0,.68611,0,0],926:[0,.68611,.07458,0],928:[0,.68611,.08229,0],931:[0,.68611,.05451,0],933:[0,.68611,.15972,0],934:[0,.68611,0,0],936:[0,.68611,.11653,0],937:[0,.68611,.04835,0],945:[0,.44444,0,0],946:[.19444,.69444,.03403,0],947:[.19444,.44444,.06389,0],948:[0,.69444,.03819,0],949:[0,.44444,0,0],950:[.19444,.69444,.06215,0],951:[.19444,.44444,.03704,0],952:[0,.69444,.03194,0],953:[0,.44444,0,0],954:[0,.44444,0,0],955:[0,.69444,0,0],956:[.19444,.44444,0,0],957:[0,.44444,.06898,0],958:[.19444,.69444,.03021,0],959:[0,.44444,0,0],960:[0,.44444,.03704,0],961:[.19444,.44444,0,0],962:[.09722,.44444,.07917,0],963:[0,.44444,.03704,0],964:[0,.44444,.13472,0],965:[0,.44444,.03704,0],966:[.19444,.44444,0,0],967:[.19444,.44444,0,0],968:[.19444,.69444,.03704,0],969:[0,.44444,.03704,0],977:[0,.69444,0,0],981:[.19444,.69444,0,0],982:[0,.44444,.03194,0],1009:[.19444,.44444,0,0],1013:[0,.44444,0,0]},"Math-Italic":{47:[.19444,.69444,0,0],65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556], +102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"Math-Regular":{65:[0,.68333,0,.13889],66:[0,.68333,.05017,.08334],67:[0,.68333,.07153,.08334],68:[0,.68333,.02778,.05556],69:[0,.68333,.05764,.08334],70:[0,.68333,.13889,.08334],71:[0,.68333,0,.08334],72:[0,.68333,.08125,.05556],73:[0,.68333,.07847,.11111],74:[0,.68333,.09618,.16667],75:[0,.68333,.07153,.05556],76:[0,.68333,0,.02778],77:[0,.68333,.10903,.08334],78:[0,.68333,.10903,.08334],79:[0,.68333,.02778,.08334],80:[0,.68333,.13889,.08334],81:[.19444,.68333,0,.08334],82:[0,.68333,.00773,.08334],83:[0,.68333,.05764,.08334],84:[0,.68333,.13889,.08334],85:[0,.68333,.10903,.02778],86:[0,.68333,.22222,0],87:[0,.68333,.13889,0],88:[0,.68333,.07847,.08334],89:[0,.68333,.22222,0],90:[0,.68333,.07153,.08334],97:[0,.43056,0,0],98:[0,.69444,0,0],99:[0,.43056,0,.05556],100:[0,.69444,0,.16667],101:[0,.43056,0,.05556],102:[.19444,.69444,.10764,.16667],103:[.19444,.43056,.03588,.02778],104:[0,.69444,0,0],105:[0,.65952,0,0],106:[.19444,.65952,.05724,0],107:[0,.69444,.03148,0],108:[0,.69444,.01968,.08334],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,.05556],112:[.19444,.43056,0,.08334],113:[.19444,.43056,.03588,.08334],114:[0,.43056,.02778,.05556],115:[0,.43056,0,.05556],116:[0,.61508,0,.08334],117:[0,.43056,0,.02778],118:[0,.43056,.03588,.02778],119:[0,.43056,.02691,.08334],120:[0,.43056,0,.02778],121:[.19444,.43056,.03588,.05556],122:[0,.43056,.04398,.05556],915:[0,.68333,.13889,.08334],916:[0,.68333,0,.16667],920:[0,.68333,.02778,.08334],923:[0,.68333,0,.16667],926:[0,.68333,.07569,.08334],928:[0,.68333,.08125,.05556],931:[0,.68333,.05764,.08334],933:[0,.68333,.13889,.05556],934:[0,.68333,0,.08334],936:[0,.68333,.11,.05556],937:[0,.68333,.05017,.08334],945:[0,.43056,.0037,.02778],946:[.19444,.69444,.05278,.08334],947:[.19444,.43056,.05556,0],948:[0,.69444,.03785,.05556],949:[0,.43056,0,.08334],950:[.19444,.69444,.07378,.08334],951:[.19444,.43056,.03588,.05556],952:[0,.69444,.02778,.08334],953:[0,.43056,0,.05556],954:[0,.43056,0,0],955:[0,.69444,0,0],956:[.19444,.43056,0,.02778],957:[0,.43056,.06366,.02778],958:[.19444,.69444,.04601,.11111],959:[0,.43056,0,.05556],960:[0,.43056,.03588,0],961:[.19444,.43056,0,.08334],962:[.09722,.43056,.07986,.08334],963:[0,.43056,.03588,0],964:[0,.43056,.1132,.02778],965:[0,.43056,.03588,.02778],966:[.19444,.43056,0,.08334],967:[.19444,.43056,0,.05556],968:[.19444,.69444,.03588,.11111],969:[0,.43056,.03588,0],977:[0,.69444,0,.08334],981:[.19444,.69444,0,.08334],982:[0,.43056,.02778,0],1009:[.19444,.43056,0,.08334],1013:[0,.43056,0,.05556]},"SansSerif-Regular":{33:[0,.69444,0,0],34:[0,.69444,0,0],35:[.19444,.69444,0,0],36:[.05556,.75,0,0],37:[.05556,.75,0,0],38:[0,.69444,0,0],39:[0,.69444,0,0],40:[.25,.75,0,0],41:[.25,.75,0,0],42:[0,.75,0,0],43:[.08333,.58333,0,0],44:[.125,.08333,0,0],45:[0,.44444,0,0],46:[0,.08333,0,0],47:[.25,.75,0,0],48:[0,.65556,0,0],49:[0,.65556,0,0],50:[0,.65556,0,0],51:[0,.65556,0,0],52:[0,.65556,0,0],53:[0,.65556,0,0],54:[0,.65556,0,0],55:[0,.65556,0,0],56:[0,.65556,0,0],57:[0,.65556,0,0],58:[0,.44444,0,0],59:[.125,.44444,0,0],61:[-.13,.37,0,0],63:[0,.69444,0,0],64:[0,.69444,0,0],65:[0,.69444,0,0],66:[0,.69444,0,0],67:[0,.69444,0,0],68:[0,.69444,0,0],69:[0,.69444,0,0],70:[0,.69444,0,0],71:[0,.69444,0,0],72:[0,.69444,0,0],73:[0,.69444,0,0],74:[0,.69444,0,0],75:[0,.69444,0,0],76:[0,.69444,0,0],77:[0,.69444,0,0],78:[0,.69444,0,0],79:[0,.69444,0,0],80:[0,.69444,0,0],81:[.125,.69444,0,0],82:[0,.69444,0,0],83:[0,.69444,0,0],84:[0,.69444,0,0],85:[0,.69444,0,0],86:[0,.69444,.01389,0],87:[0,.69444,.01389,0],88:[0,.69444,0,0],89:[0,.69444,.025,0],90:[0,.69444,0,0],91:[.25,.75,0,0],93:[.25,.75,0,0],94:[0,.69444,0,0],95:[.35,.09444,.02778,0],97:[0,.44444,0,0],98:[0,.69444,0,0],99:[0,.44444,0,0],100:[0,.69444,0,0],101:[0,.44444,0,0],102:[0,.69444,.06944,0],103:[.19444,.44444,.01389,0],104:[0,.69444,0,0],105:[0,.67937,0,0],106:[.19444,.67937,0,0],107:[0,.69444,0,0],108:[0,.69444,0,0],109:[0,.44444,0,0],110:[0,.44444,0,0],111:[0,.44444,0,0],112:[.19444,.44444,0,0],113:[.19444,.44444,0,0],114:[0,.44444,.01389,0],115:[0,.44444,0,0],116:[0,.57143,0,0],117:[0,.44444,0,0],118:[0,.44444,.01389,0],119:[0,.44444,.01389,0],120:[0,.44444,0,0],121:[.19444,.44444,.01389,0],122:[0,.44444,0,0],126:[.35,.32659,0,0],305:[0,.44444,0,0],567:[.19444,.44444,0,0],768:[0,.69444,0,0],769:[0,.69444,0,0],770:[0,.69444,0,0],771:[0,.67659,0,0],772:[0,.60889,0,0],774:[0,.69444,0,0],775:[0,.67937,0,0],776:[0,.67937,0,0],778:[0,.69444,0,0],779:[0,.69444,0,0],780:[0,.63194,0,0],915:[0,.69444,0,0],916:[0,.69444,0,0],920:[0,.69444,0,0],923:[0,.69444,0,0],926:[0,.69444,0,0],928:[0,.69444,0,0],931:[0,.69444,0,0],933:[0,.69444,0,0],934:[0,.69444,0,0],936:[0,.69444,0,0],937:[0,.69444,0,0],8211:[0,.44444,.02778,0],8212:[0,.44444,.02778,0],8216:[0,.69444,0,0],8217:[0,.69444,0,0],8220:[0,.69444,0,0],8221:[0,.69444,0,0]},"Script-Regular":{65:[0,.7,.22925,0],66:[0,.7,.04087,0],67:[0,.7,.1689,0],68:[0,.7,.09371,0],69:[0,.7,.18583,0],70:[0,.7,.13634,0],71:[0,.7,.17322,0],72:[0,.7,.29694,0],73:[0,.7,.19189,0],74:[.27778,.7,.19189,0],75:[0,.7,.31259,0],76:[0,.7,.19189,0],77:[0,.7,.15981,0],78:[0,.7,.3525,0],79:[0,.7,.08078,0],80:[0,.7,.08078,0],81:[0,.7,.03305,0],82:[0,.7,.06259,0],83:[0,.7,.19189,0],84:[0,.7,.29087,0],85:[0,.7,.25815,0],86:[0,.7,.27523,0],87:[0,.7,.27523,0],88:[0,.7,.26006,0],89:[0,.7,.2939,0],90:[0,.7,.24037,0]},"Size1-Regular":{40:[.35001,.85,0,0],41:[.35001,.85,0,0],47:[.35001,.85,0,0],91:[.35001,.85,0,0],92:[.35001,.85,0,0],93:[.35001,.85,0,0],123:[.35001,.85,0,0],125:[.35001,.85,0,0],710:[0,.72222,0,0],732:[0,.72222,0,0],770:[0,.72222,0,0],771:[0,.72222,0,0],8214:[-99e-5,.601,0,0],8593:[1e-5,.6,0,0],8595:[1e-5,.6,0,0],8657:[1e-5,.6,0,0],8659:[1e-5,.6,0,0],8719:[.25001,.75,0,0],8720:[.25001,.75,0,0],8721:[.25001,.75,0,0],8730:[.35001,.85,0,0],8739:[-.00599,.606,0,0],8741:[-.00599,.606,0,0],8747:[.30612,.805,.19445,0],8748:[.306,.805,.19445,0],8749:[.306,.805,.19445,0],8750:[.30612,.805,.19445,0],8896:[.25001,.75,0,0],8897:[.25001,.75,0,0],8898:[.25001,.75,0,0],8899:[.25001,.75,0,0],8968:[.35001,.85,0,0],8969:[.35001,.85,0,0],8970:[.35001,.85,0,0],8971:[.35001,.85,0,0],9168:[-99e-5,.601,0,0],10216:[.35001,.85,0,0],10217:[.35001,.85,0,0],10752:[.25001,.75,0,0],10753:[.25001,.75,0,0],10754:[.25001,.75,0,0],10756:[.25001,.75,0,0],10758:[.25001,.75,0,0]},"Size2-Regular":{40:[.65002,1.15,0,0],41:[.65002,1.15,0,0],47:[.65002,1.15,0,0],91:[.65002,1.15,0,0],92:[.65002,1.15,0,0],93:[.65002,1.15,0,0],123:[.65002,1.15,0,0],125:[.65002,1.15,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8719:[.55001,1.05,0,0],8720:[.55001,1.05,0,0],8721:[.55001,1.05,0,0],8730:[.65002,1.15,0,0],8747:[.86225,1.36,.44445,0],8748:[.862,1.36,.44445,0],8749:[.862,1.36,.44445,0],8750:[.86225,1.36,.44445,0],8896:[.55001,1.05,0,0],8897:[.55001,1.05,0,0],8898:[.55001,1.05,0,0],8899:[.55001,1.05,0,0],8968:[.65002,1.15,0,0],8969:[.65002,1.15,0,0],8970:[.65002,1.15,0,0],8971:[.65002,1.15,0,0],10216:[.65002,1.15,0,0],10217:[.65002,1.15,0,0],10752:[.55001,1.05,0,0],10753:[.55001,1.05,0,0],10754:[.55001,1.05,0,0],10756:[.55001,1.05,0,0],10758:[.55001,1.05,0,0]},"Size3-Regular":{40:[.95003,1.45,0,0],41:[.95003,1.45,0,0],47:[.95003,1.45,0,0],91:[.95003,1.45,0,0],92:[.95003,1.45,0,0],93:[.95003,1.45,0,0],123:[.95003,1.45,0,0],125:[.95003,1.45,0,0],710:[0,.75,0,0],732:[0,.75,0,0],770:[0,.75,0,0],771:[0,.75,0,0],8730:[.95003,1.45,0,0],8968:[.95003,1.45,0,0],8969:[.95003,1.45,0,0],8970:[.95003,1.45,0,0],8971:[.95003,1.45,0,0],10216:[.95003,1.45,0,0],10217:[.95003,1.45,0,0]},"Size4-Regular":{40:[1.25003,1.75,0,0],41:[1.25003,1.75,0,0],47:[1.25003,1.75,0,0],91:[1.25003,1.75,0,0],92:[1.25003,1.75,0,0],93:[1.25003,1.75,0,0],123:[1.25003,1.75,0,0],125:[1.25003,1.75,0,0],710:[0,.825,0,0],732:[0,.825,0,0],770:[0,.825,0,0],771:[0,.825,0,0],8730:[1.25003,1.75,0,0],8968:[1.25003,1.75,0,0],8969:[1.25003,1.75,0,0],8970:[1.25003,1.75,0,0],8971:[1.25003,1.75,0,0],9115:[.64502,1.155,0,0],9116:[1e-5,.6,0,0],9117:[.64502,1.155,0,0],9118:[.64502,1.155,0,0],9119:[1e-5,.6,0,0],9120:[.64502,1.155,0,0],9121:[.64502,1.155,0,0],9122:[-99e-5,.601,0,0],9123:[.64502,1.155,0,0],9124:[.64502,1.155,0,0],9125:[-99e-5,.601,0,0],9126:[.64502,1.155,0,0],9127:[1e-5,.9,0,0],9128:[.65002,1.15,0,0],9129:[.90001,0,0,0],9130:[0,.3,0,0],9131:[1e-5,.9,0,0],9132:[.65002,1.15,0,0],9133:[.90001,0,0,0],9143:[.88502,.915,0,0],10216:[1.25003,1.75,0,0],10217:[1.25003,1.75,0,0],57344:[-.00499,.605,0,0],57345:[-.00499,.605,0,0],57680:[0,.12,0,0],57681:[0,.12,0,0],57682:[0,.12,0,0],57683:[0,.12,0,0]},"Typewriter-Regular":{33:[0,.61111,0,0],34:[0,.61111,0,0],35:[0,.61111,0,0],36:[.08333,.69444,0,0],37:[.08333,.69444,0,0],38:[0,.61111,0,0],39:[0,.61111,0,0],40:[.08333,.69444,0,0],41:[.08333,.69444,0,0],42:[0,.52083,0,0],43:[-.08056,.53055,0,0],44:[.13889,.125,0,0],45:[-.08056,.53055,0,0],46:[0,.125,0,0],47:[.08333,.69444,0,0],48:[0,.61111,0,0],49:[0,.61111,0,0],50:[0,.61111,0,0],51:[0,.61111,0,0],52:[0,.61111,0,0],53:[0,.61111,0,0],54:[0,.61111,0,0],55:[0,.61111,0,0],56:[0,.61111,0,0],57:[0,.61111,0,0],58:[0,.43056,0,0],59:[.13889,.43056,0,0],60:[-.05556,.55556,0,0],61:[-.19549,.41562,0,0],62:[-.05556,.55556,0,0],63:[0,.61111,0,0],64:[0,.61111,0,0],65:[0,.61111,0,0],66:[0,.61111,0,0],67:[0,.61111,0,0],68:[0,.61111,0,0],69:[0,.61111,0,0],70:[0,.61111,0,0],71:[0,.61111,0,0],72:[0,.61111,0,0],73:[0,.61111,0,0],74:[0,.61111,0,0],75:[0,.61111,0,0],76:[0,.61111,0,0],77:[0,.61111,0,0],78:[0,.61111,0,0],79:[0,.61111,0,0],80:[0,.61111,0,0],81:[.13889,.61111,0,0],82:[0,.61111,0,0],83:[0,.61111,0,0],84:[0,.61111,0,0],85:[0,.61111,0,0],86:[0,.61111,0,0],87:[0,.61111,0,0],88:[0,.61111,0,0],89:[0,.61111,0,0],90:[0,.61111,0,0],91:[.08333,.69444,0,0],92:[.08333,.69444,0,0],93:[.08333,.69444,0,0],94:[0,.61111,0,0],95:[.09514,0,0,0],96:[0,.61111,0,0],97:[0,.43056,0,0],98:[0,.61111,0,0],99:[0,.43056,0,0],100:[0,.61111,0,0],101:[0,.43056,0,0],102:[0,.61111,0,0],103:[.22222,.43056,0,0],104:[0,.61111,0,0],105:[0,.61111,0,0],106:[.22222,.61111,0,0],107:[0,.61111,0,0],108:[0,.61111,0,0],109:[0,.43056,0,0],110:[0,.43056,0,0],111:[0,.43056,0,0],112:[.22222,.43056,0,0],113:[.22222,.43056,0,0],114:[0,.43056,0,0],115:[0,.43056,0,0],116:[0,.55358,0,0],117:[0,.43056,0,0],118:[0,.43056,0,0],119:[0,.43056,0,0],120:[0,.43056,0,0],121:[.22222,.43056,0,0],122:[0,.43056,0,0],123:[.08333,.69444,0,0],124:[.08333,.69444,0,0],125:[.08333,.69444,0,0],126:[0,.61111,0,0],127:[0,.61111,0,0],305:[0,.43056,0,0],567:[.22222,.43056,0,0],768:[0,.61111,0,0],769:[0,.61111,0,0],770:[0,.61111,0,0],771:[0,.61111,0,0],772:[0,.56555,0,0],774:[0,.61111,0,0],776:[0,.61111,0,0],778:[0,.61111,0,0],780:[0,.56597,0,0],915:[0,.61111,0,0],916:[0,.61111,0,0],920:[0,.61111,0,0],923:[0,.61111,0,0],926:[0,.61111,0,0],928:[0,.61111,0,0],931:[0,.61111,0,0],933:[0,.61111,0,0],934:[0,.61111,0,0],936:[0,.61111,0,0],937:[0,.61111,0,0],2018:[0,.61111,0,0],2019:[0,.61111,0,0],8242:[0,.61111,0,0]}}},{}],20:[function(e,t,r){var a=e("./utils");var i=e("./ParseError");var s=e("./parseData");var n=s.ParseNode;function l(e,r,a){if(typeof e==="string"){e=[e]}if(typeof r==="number"){r={numArgs:r}}var i={numArgs:r.numArgs,argTypes:r.argTypes,greediness:r.greediness===undefined?1:r.greediness,allowedInText:!!r.allowedInText,numOptionalArgs:r.numOptionalArgs||0,infix:!!r.infix,handler:a};for(var s=0;s<e.length;++s){t.exports[e[s]]=i}}var o=function(e){if(e.type==="ordgroup"){return e.value}else{return[e]}};l("\\sqrt",{numArgs:1,numOptionalArgs:1},function(e,t){var r=t[0];var a=t[1];return{type:"sqrt",body:a,index:r}});var u={"\\text":undefined,"\\textrm":"mathrm","\\textsf":"mathsf","\\texttt":"mathtt","\\textnormal":"mathrm","\\textbf":"mathbf","\\textit":"textit"};l(["\\text","\\textrm","\\textsf","\\texttt","\\textnormal","\\textbf","\\textit"],{numArgs:1,argTypes:["text"],greediness:2,allowedInText:true},function(e,t){var r=t[0];return{type:"text",body:o(r),style:u[e.funcName]}});l("\\color",{numArgs:2,allowedInText:true,greediness:3,argTypes:["color","original"]},function(e,t){var r=t[0];var a=t[1];return{type:"color",color:r.value,value:o(a)}});l("\\overline",{numArgs:1},function(e,t){var r=t[0];return{type:"overline",body:r}});l("\\underline",{numArgs:1},function(e,t){var r=t[0];return{type:"underline",body:r}});l("\\rule",{numArgs:2,numOptionalArgs:1,argTypes:["size","size","size"]},function(e,t){var r=t[0];var a=t[1];var i=t[2];return{type:"rule",shift:r&&r.value,width:a.value,height:i.value}});l(["\\kern","\\mkern"],{numArgs:1,argTypes:["size"]},function(e,t){return{type:"kern",dimension:t[0].value}});l("\\KaTeX",{numArgs:0},function(e){return{type:"katex"}});l("\\phantom",{numArgs:1},function(e,t){var r=t[0];return{type:"phantom",value:o(r)}});l(["\\mathord","\\mathbin","\\mathrel","\\mathopen","\\mathclose","\\mathpunct","\\mathinner"],{numArgs:1},function(e,t){var r=t[0];return{type:"mclass",mclass:"m"+e.funcName.substr(5),value:o(r)}});l("\\stackrel",{numArgs:2},function(e,t){var r=t[0];var a=t[1];var i=new n("op",{type:"op",limits:true,alwaysHandleSupSub:true,symbol:false,value:o(a)},a.mode);var s=new n("supsub",{base:i,sup:r,sub:null},r.mode);return{type:"mclass",mclass:"mrel",value:[s]}});l("\\bmod",{numArgs:0},function(e,t){return{type:"mod",modType:"bmod",value:null}});l(["\\pod","\\pmod","\\mod"],{numArgs:1},function(e,t){var r=t[0];return{type:"mod",modType:e.funcName.substr(1),value:o(r)}});var h={"\\bigl":{mclass:"mopen",size:1},"\\Bigl":{mclass:"mopen",size:2},"\\biggl":{mclass:"mopen",size:3},"\\Biggl":{mclass:"mopen",size:4},"\\bigr":{mclass:"mclose",size:1},"\\Bigr":{mclass:"mclose",size:2},"\\biggr":{mclass:"mclose",size:3},"\\Biggr":{mclass:"mclose",size:4},"\\bigm":{mclass:"mrel",size:1},"\\Bigm":{mclass:"mrel",size:2},"\\biggm":{mclass:"mrel",size:3},"\\Biggm":{mclass:"mrel",size:4},"\\big":{mclass:"mord",size:1},"\\Big":{mclass:"mord",size:2},"\\bigg":{mclass:"mord",size:3},"\\Bigg":{mclass:"mord",size:4}};var c=["(",")","[","\\lbrack","]","\\rbrack","\\{","\\lbrace","\\}","\\rbrace","\\lfloor","\\rfloor","\\lceil","\\rceil","<",">","\\langle","\\rangle","\\lt","\\gt","\\lvert","\\rvert","\\lVert","\\rVert","\\lgroup","\\rgroup","\\lmoustache","\\rmoustache","/","\\backslash","|","\\vert","\\|","\\Vert","\\uparrow","\\Uparrow","\\downarrow","\\Downarrow","\\updownarrow","\\Updownarrow","."];var p={"\\Bbb":"\\mathbb","\\bold":"\\mathbf","\\frak":"\\mathfrak"};l(["\\blue","\\orange","\\pink","\\red","\\green","\\gray","\\purple","\\blueA","\\blueB","\\blueC","\\blueD","\\blueE","\\tealA","\\tealB","\\tealC","\\tealD","\\tealE","\\greenA","\\greenB","\\greenC","\\greenD","\\greenE","\\goldA","\\goldB","\\goldC","\\goldD","\\goldE","\\redA","\\redB","\\redC","\\redD","\\redE","\\maroonA","\\maroonB","\\maroonC","\\maroonD","\\maroonE","\\purpleA","\\purpleB","\\purpleC","\\purpleD","\\purpleE","\\mintA","\\mintB","\\mintC","\\grayA","\\grayB","\\grayC","\\grayD","\\grayE","\\grayF","\\grayG","\\grayH","\\grayI","\\kaBlue","\\kaGreen"],{numArgs:1,allowedInText:true,greediness:3},function(e,t){var r=t[0];return{type:"color",color:"katex-"+e.funcName.slice(1),value:o(r)}});l(["\\arcsin","\\arccos","\\arctan","\\arg","\\cos","\\cosh","\\cot","\\coth","\\csc","\\deg","\\dim","\\exp","\\hom","\\ker","\\lg","\\ln","\\log","\\sec","\\sin","\\sinh","\\tan","\\tanh"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:false,body:e.funcName}});l(["\\det","\\gcd","\\inf","\\lim","\\liminf","\\limsup","\\max","\\min","\\Pr","\\sup"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:false,body:e.funcName}});l(["\\int","\\iint","\\iiint","\\oint"],{numArgs:0},function(e){return{type:"op",limits:false,symbol:true,body:e.funcName}});l(["\\coprod","\\bigvee","\\bigwedge","\\biguplus","\\bigcap","\\bigcup","\\intop","\\prod","\\sum","\\bigotimes","\\bigoplus","\\bigodot","\\bigsqcup","\\smallint"],{numArgs:0},function(e){return{type:"op",limits:true,symbol:true,body:e.funcName}});l("\\mathop",{numArgs:1},function(e,t){var r=t[0];return{type:"op",limits:false,symbol:false,value:o(r)}});l(["\\dfrac","\\frac","\\tfrac","\\dbinom","\\binom","\\tbinom","\\\\atopfrac"],{numArgs:2,greediness:2},function(e,t){var r=t[0];var a=t[1];var i;var s=null;var n=null;var l="auto";switch(e.funcName){case"\\dfrac":case"\\frac":case"\\tfrac":i=true;break;case"\\\\atopfrac":i=false;break;case"\\dbinom":case"\\binom":case"\\tbinom":i=false;s="(";n=")";break;default:throw new Error("Unrecognized genfrac command")}switch(e.funcName){case"\\dfrac":case"\\dbinom":l="display";break;case"\\tfrac":case"\\tbinom":l="text";break}return{type:"genfrac",numer:r,denom:a,hasBarLine:i,leftDelim:s,rightDelim:n,size:l}});l(["\\llap","\\rlap"],{numArgs:1,allowedInText:true},function(e,t){var r=t[0];return{type:e.funcName.slice(1),body:r}});var m=function(e,t){if(a.contains(c,e.value)){return e}else{throw new i("Invalid delimiter: '"+e.value+"' after '"+t.funcName+"'",e)}};l(["\\bigl","\\Bigl","\\biggl","\\Biggl","\\bigr","\\Bigr","\\biggr","\\Biggr","\\bigm","\\Bigm","\\biggm","\\Biggm","\\big","\\Big","\\bigg","\\Bigg"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"delimsizing",size:h[e.funcName].size,mclass:h[e.funcName].mclass,value:r.value}});l(["\\left","\\right"],{numArgs:1},function(e,t){var r=m(t[0],e);return{type:"leftright",value:r.value}});l("\\middle",{numArgs:1},function(e,t){var r=m(t[0],e);if(!e.parser.leftrightDepth){throw new i("\\middle without preceding \\left",r)}return{type:"middle",value:r.value}});l(["\\tiny","\\scriptsize","\\footnotesize","\\small","\\normalsize","\\large","\\Large","\\LARGE","\\huge","\\Huge"],0,null);l(["\\displaystyle","\\textstyle","\\scriptstyle","\\scriptscriptstyle"],0,null);l(["\\mathrm","\\mathit","\\mathbf","\\mathbb","\\mathcal","\\mathfrak","\\mathscr","\\mathsf","\\mathtt","\\Bbb","\\bold","\\frak"],{numArgs:1,greediness:2},function(e,t){var r=t[0];var a=e.funcName;if(a in p){a=p[a]}return{type:"font",font:a.slice(1),body:r}});l(["\\acute","\\grave","\\ddot","\\tilde","\\bar","\\breve","\\check","\\hat","\\vec","\\dot"],{numArgs:1},function(e,t){var r=t[0];return{type:"accent",accent:e.funcName,base:r}});l(["\\over","\\choose","\\atop"],{numArgs:0,infix:true},function(e){var t;switch(e.funcName){case"\\over":t="\\frac";break;case"\\choose":t="\\binom";break;case"\\atop":t="\\\\atopfrac";break;default:throw new Error("Unrecognized infix genfrac command")}return{type:"infix",replaceWith:t,token:e.token}});l(["\\\\","\\cr"],{numArgs:0,numOptionalArgs:1,argTypes:["size"]},function(e,t){var r=t[0];return{type:"cr",size:r}});l(["\\begin","\\end"],{numArgs:1,argTypes:["text"]},function(e,t){var r=t[0];if(r.type!=="ordgroup"){throw new i("Invalid environment name",r)}var a="";for(var s=0;s<r.value.length;++s){a+=r.value[s].value}return{type:"environment",name:a,nameGroup:r}})},{"./ParseError":6,"./parseData":22,"./utils":26}],21:[function(e,t,r){var a=e("./utils");function i(e,t){this.type=e;this.attributes={};this.children=t||[]}i.prototype.setAttribute=function(e,t){this.attributes[e]=t};i.prototype.toNode=function(){var e=document.createElementNS("http://www.w3.org/1998/Math/MathML",this.type);for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e.setAttribute(t,this.attributes[t])}}for(var r=0;r<this.children.length;r++){e.appendChild(this.children[r].toNode())}return e};i.prototype.toMarkup=function(){var e="<"+this.type;for(var t in this.attributes){if(Object.prototype.hasOwnProperty.call(this.attributes,t)){e+=" "+t+'="';e+=a.escape(this.attributes[t]);e+='"'}}e+=">";for(var r=0;r<this.children.length;r++){e+=this.children[r].toMarkup()}e+="</"+this.type+">";return e};function s(e){this.text=e}s.prototype.toNode=function(){return document.createTextNode(this.text)};s.prototype.toMarkup=function(){return a.escape(this.text)};t.exports={MathNode:i,TextNode:s}},{"./utils":26}],22:[function(e,t,r){function a(e,t,r,a,i){this.type=e;this.value=t;this.mode=r;if(a&&(!i||i.lexer===a.lexer)){this.lexer=a.lexer;this.start=a.start;this.end=(i||a).end}}t.exports={ParseNode:a}},{}],23:[function(e,t,r){var a=e("./Parser");var i=function(e,t){if(!(typeof e==="string"||e instanceof String)){throw new TypeError("KaTeX can only parse string typed expression")}var r=new a(e,t);return r.parse()};t.exports=i},{"./Parser":7}],24:[function(e,t,r){t.exports={math:{},text:{}};function a(e,r,a,i,s){t.exports[e][s]={font:r,group:a,replace:i}}var i="math";var s="text";var n="main";var l="ams";var o="accent";var u="bin";var h="close";var c="inner";var p="mathord";var m="op";var f="open";var v="punct";var d="rel";var g="spacing";var y="textord";a(i,n,d,"\u2261","\\equiv");a(i,n,d,"\u227a","\\prec");a(i,n,d,"\u227b","\\succ");a(i,n,d,"\u223c","\\sim");a(i,n,d,"\u22a5","\\perp");a(i,n,d,"\u2aaf","\\preceq");a(i,n,d,"\u2ab0","\\succeq");a(i,n,d,"\u2243","\\simeq");a(i,n,d,"\u2223","\\mid");a(i,n,d,"\u226a","\\ll");a(i,n,d,"\u226b","\\gg");a(i,n,d,"\u224d","\\asymp");a(i,n,d,"\u2225","\\parallel");a(i,n,d,"\u22c8","\\bowtie");a(i,n,d,"\u2323","\\smile");a(i,n,d,"\u2291","\\sqsubseteq");a(i,n,d,"\u2292","\\sqsupseteq");a(i,n,d,"\u2250","\\doteq");a(i,n,d,"\u2322","\\frown");a(i,n,d,"\u220b","\\ni");a(i,n,d,"\u221d","\\propto");a(i,n,d,"\u22a2","\\vdash");a(i,n,d,"\u22a3","\\dashv");a(i,n,d,"\u220b","\\owns");a(i,n,v,".","\\ldotp");a(i,n,v,"\u22c5","\\cdotp");a(i,n,y,"#","\\#");a(s,n,y,"#","\\#");a(i,n,y,"&","\\&");a(s,n,y,"&","\\&");a(i,n,y,"\u2135","\\aleph");a(i,n,y,"\u2200","\\forall");a(i,n,y,"\u210f","\\hbar");a(i,n,y,"\u2203","\\exists");a(i,n,y,"\u2207","\\nabla");a(i,n,y,"\u266d","\\flat");a(i,n,y,"\u2113","\\ell");a(i,n,y,"\u266e","\\natural");a(i,n,y,"\u2663","\\clubsuit");a(i,n,y,"\u2118","\\wp");a(i,n,y,"\u266f","\\sharp");a(i,n,y,"\u2662","\\diamondsuit");a(i,n,y,"\u211c","\\Re");a(i,n,y,"\u2661","\\heartsuit");a(i,n,y,"\u2111","\\Im");a(i,n,y,"\u2660","\\spadesuit");a(i,n,y,"\u2020","\\dag");a(i,n,y,"\u2021","\\ddag");a(i,n,h,"\u23b1","\\rmoustache");a(i,n,f,"\u23b0","\\lmoustache");a(i,n,h,"\u27ef","\\rgroup");a(i,n,f,"\u27ee","\\lgroup");a(i,n,u,"\u2213","\\mp");a(i,n,u,"\u2296","\\ominus");a(i,n,u,"\u228e","\\uplus");a(i,n,u,"\u2293","\\sqcap");a(i,n,u,"\u2217","\\ast");a(i,n,u,"\u2294","\\sqcup");a(i,n,u,"\u25ef","\\bigcirc");a(i,n,u,"\u2219","\\bullet");a(i,n,u,"\u2021","\\ddagger");a(i,n,u,"\u2240","\\wr");a(i,n,u,"\u2a3f","\\amalg");a(i,n,d,"\u27f5","\\longleftarrow");a(i,n,d,"\u21d0","\\Leftarrow");a(i,n,d,"\u27f8","\\Longleftarrow");a(i,n,d,"\u27f6","\\longrightarrow");a(i,n,d,"\u21d2","\\Rightarrow");a(i,n,d,"\u27f9","\\Longrightarrow");a(i,n,d,"\u2194","\\leftrightarrow");a(i,n,d,"\u27f7","\\longleftrightarrow");a(i,n,d,"\u21d4","\\Leftrightarrow");a(i,n,d,"\u27fa","\\Longleftrightarrow");a(i,n,d,"\u21a6","\\mapsto");a(i,n,d,"\u27fc","\\longmapsto");a(i,n,d,"\u2197","\\nearrow");a(i,n,d,"\u21a9","\\hookleftarrow");a(i,n,d,"\u21aa","\\hookrightarrow");a(i,n,d,"\u2198","\\searrow");a(i,n,d,"\u21bc","\\leftharpoonup");a(i,n,d,"\u21c0","\\rightharpoonup");a(i,n,d,"\u2199","\\swarrow");a(i,n,d,"\u21bd","\\leftharpoondown");a(i,n,d,"\u21c1","\\rightharpoondown");a(i,n,d,"\u2196","\\nwarrow");a(i,n,d,"\u21cc","\\rightleftharpoons");a(i,l,d,"\u226e","\\nless");a(i,l,d,"\ue010","\\nleqslant");a(i,l,d,"\ue011","\\nleqq");a(i,l,d,"\u2a87","\\lneq");a(i,l,d,"\u2268","\\lneqq");a(i,l,d,"\ue00c","\\lvertneqq");a(i,l,d,"\u22e6","\\lnsim");a(i,l,d,"\u2a89","\\lnapprox");a(i,l,d,"\u2280","\\nprec");a(i,l,d,"\u22e0","\\npreceq");a(i,l,d,"\u22e8","\\precnsim");a(i,l,d,"\u2ab9","\\precnapprox");a(i,l,d,"\u2241","\\nsim");a(i,l,d,"\ue006","\\nshortmid");a(i,l,d,"\u2224","\\nmid");a(i,l,d,"\u22ac","\\nvdash");a(i,l,d,"\u22ad","\\nvDash");a(i,l,d,"\u22ea","\\ntriangleleft");a(i,l,d,"\u22ec","\\ntrianglelefteq");a(i,l,d,"\u228a","\\subsetneq");a(i,l,d,"\ue01a","\\varsubsetneq");a(i,l,d,"\u2acb","\\subsetneqq");a(i,l,d,"\ue017","\\varsubsetneqq");a(i,l,d,"\u226f","\\ngtr");a(i,l,d,"\ue00f","\\ngeqslant");a(i,l,d,"\ue00e","\\ngeqq");a(i,l,d,"\u2a88","\\gneq");a(i,l,d,"\u2269","\\gneqq");a(i,l,d,"\ue00d","\\gvertneqq");a(i,l,d,"\u22e7","\\gnsim");a(i,l,d,"\u2a8a","\\gnapprox");a(i,l,d,"\u2281","\\nsucc");a(i,l,d,"\u22e1","\\nsucceq");a(i,l,d,"\u22e9","\\succnsim");a(i,l,d,"\u2aba","\\succnapprox");a(i,l,d,"\u2246","\\ncong");a(i,l,d,"\ue007","\\nshortparallel");a(i,l,d,"\u2226","\\nparallel");a(i,l,d,"\u22af","\\nVDash");a(i,l,d,"\u22eb","\\ntriangleright");a(i,l,d,"\u22ed","\\ntrianglerighteq");a(i,l,d,"\ue018","\\nsupseteqq");a(i,l,d,"\u228b","\\supsetneq");a(i,l,d,"\ue01b","\\varsupsetneq");a(i,l,d,"\u2acc","\\supsetneqq");a(i,l,d,"\ue019","\\varsupsetneqq");a(i,l,d,"\u22ae","\\nVdash");a(i,l,d,"\u2ab5","\\precneqq");a(i,l,d,"\u2ab6","\\succneqq");a(i,l,d,"\ue016","\\nsubseteqq");a(i,l,u,"\u22b4","\\unlhd");a(i,l,u,"\u22b5","\\unrhd");a(i,l,d,"\u219a","\\nleftarrow");a(i,l,d,"\u219b","\\nrightarrow");a(i,l,d,"\u21cd","\\nLeftarrow");a(i,l,d,"\u21cf","\\nRightarrow");a(i,l,d,"\u21ae","\\nleftrightarrow");a(i,l,d,"\u21ce","\\nLeftrightarrow");a(i,l,d,"\u25b3","\\vartriangle");a(i,l,y,"\u210f","\\hslash");a(i,l,y,"\u25bd","\\triangledown");a(i,l,y,"\u25ca","\\lozenge");a(i,l,y,"\u24c8","\\circledS");a(i,l,y,"\xae","\\circledR");a(i,l,y,"\u2221","\\measuredangle");a(i,l,y,"\u2204","\\nexists");a(i,l,y,"\u2127","\\mho");a(i,l,y,"\u2132","\\Finv");a(i,l,y,"\u2141","\\Game");a(i,l,y,"k","\\Bbbk");a(i,l,y,"\u2035","\\backprime");a(i,l,y,"\u25b2","\\blacktriangle");a(i,l,y,"\u25bc","\\blacktriangledown");a(i,l,y,"\u25a0","\\blacksquare");a(i,l,y,"\u29eb","\\blacklozenge");a(i,l,y,"\u2605","\\bigstar");a(i,l,y,"\u2222","\\sphericalangle");a(i,l,y,"\u2201","\\complement");a(i,l,y,"\xf0","\\eth");a(i,l,y,"\u2571","\\diagup");a(i,l,y,"\u2572","\\diagdown");a(i,l,y,"\u25a1","\\square");a(i,l,y,"\u25a1","\\Box");a(i,l,y,"\u25ca","\\Diamond");a(i,l,y,"\xa5","\\yen");a(i,l,y,"\u2713","\\checkmark");a(i,l,y,"\u2136","\\beth");a(i,l,y,"\u2138","\\daleth");a(i,l,y,"\u2137","\\gimel");a(i,l,y,"\u03dd","\\digamma");a(i,l,y,"\u03f0","\\varkappa");a(i,l,f,"\u250c","\\ulcorner");a(i,l,h,"\u2510","\\urcorner");a(i,l,f,"\u2514","\\llcorner");a(i,l,h,"\u2518","\\lrcorner");a(i,l,d,"\u2266","\\leqq");a(i,l,d,"\u2a7d","\\leqslant");a(i,l,d,"\u2a95","\\eqslantless");a(i,l,d,"\u2272","\\lesssim");a(i,l,d,"\u2a85","\\lessapprox");a(i,l,d,"\u224a","\\approxeq");a(i,l,u,"\u22d6","\\lessdot");a(i,l,d,"\u22d8","\\lll");a(i,l,d,"\u2276","\\lessgtr");a(i,l,d,"\u22da","\\lesseqgtr");a(i,l,d,"\u2a8b","\\lesseqqgtr");a(i,l,d,"\u2251","\\doteqdot");a(i,l,d,"\u2253","\\risingdotseq");a(i,l,d,"\u2252","\\fallingdotseq");a(i,l,d,"\u223d","\\backsim");a(i,l,d,"\u22cd","\\backsimeq");a(i,l,d,"\u2ac5","\\subseteqq");a(i,l,d,"\u22d0","\\Subset");a(i,l,d,"\u228f","\\sqsubset");a(i,l,d,"\u227c","\\preccurlyeq");a(i,l,d,"\u22de","\\curlyeqprec");a(i,l,d,"\u227e","\\precsim");a(i,l,d,"\u2ab7","\\precapprox");a(i,l,d,"\u22b2","\\vartriangleleft");a(i,l,d,"\u22b4","\\trianglelefteq");a(i,l,d,"\u22a8","\\vDash");a(i,l,d,"\u22aa","\\Vvdash");a(i,l,d,"\u2323","\\smallsmile");a(i,l,d,"\u2322","\\smallfrown");a(i,l,d,"\u224f","\\bumpeq");a(i,l,d,"\u224e","\\Bumpeq");a(i,l,d,"\u2267","\\geqq");a(i,l,d,"\u2a7e","\\geqslant");a(i,l,d,"\u2a96","\\eqslantgtr");a(i,l,d,"\u2273","\\gtrsim");a(i,l,d,"\u2a86","\\gtrapprox");a(i,l,u,"\u22d7","\\gtrdot");a(i,l,d,"\u22d9","\\ggg");a(i,l,d,"\u2277","\\gtrless");a(i,l,d,"\u22db","\\gtreqless");a(i,l,d,"\u2a8c","\\gtreqqless");a(i,l,d,"\u2256","\\eqcirc");a(i,l,d,"\u2257","\\circeq");a(i,l,d,"\u225c","\\triangleq");a(i,l,d,"\u223c","\\thicksim");a(i,l,d,"\u2248","\\thickapprox");a(i,l,d,"\u2ac6","\\supseteqq");a(i,l,d,"\u22d1","\\Supset");a(i,l,d,"\u2290","\\sqsupset");a(i,l,d,"\u227d","\\succcurlyeq");a(i,l,d,"\u22df","\\curlyeqsucc");a(i,l,d,"\u227f","\\succsim");a(i,l,d,"\u2ab8","\\succapprox");a(i,l,d,"\u22b3","\\vartriangleright");a(i,l,d,"\u22b5","\\trianglerighteq");a(i,l,d,"\u22a9","\\Vdash");a(i,l,d,"\u2223","\\shortmid");a(i,l,d,"\u2225","\\shortparallel");a(i,l,d,"\u226c","\\between");a(i,l,d,"\u22d4","\\pitchfork");a(i,l,d,"\u221d","\\varpropto");a(i,l,d,"\u25c0","\\blacktriangleleft");a(i,l,d,"\u2234","\\therefore");a(i,l,d,"\u220d","\\backepsilon");a(i,l,d,"\u25b6","\\blacktriangleright");a(i,l,d,"\u2235","\\because");a(i,l,d,"\u22d8","\\llless");a(i,l,d,"\u22d9","\\gggtr");a(i,l,u,"\u22b2","\\lhd");a(i,l,u,"\u22b3","\\rhd");a(i,l,d,"\u2242","\\eqsim");a(i,n,d,"\u22c8","\\Join");a(i,l,d,"\u2251","\\Doteq");a(i,l,u,"\u2214","\\dotplus");a(i,l,u,"\u2216","\\smallsetminus");a(i,l,u,"\u22d2","\\Cap");a(i,l,u,"\u22d3","\\Cup");a(i,l,u,"\u2a5e","\\doublebarwedge");a(i,l,u,"\u229f","\\boxminus");a(i,l,u,"\u229e","\\boxplus");a(i,l,u,"\u22c7","\\divideontimes");a(i,l,u,"\u22c9","\\ltimes");a(i,l,u,"\u22ca","\\rtimes");a(i,l,u,"\u22cb","\\leftthreetimes");a(i,l,u,"\u22cc","\\rightthreetimes");a(i,l,u,"\u22cf","\\curlywedge");a(i,l,u,"\u22ce","\\curlyvee");a(i,l,u,"\u229d","\\circleddash");a(i,l,u,"\u229b","\\circledast");a(i,l,u,"\u22c5","\\centerdot");a(i,l,u,"\u22ba","\\intercal");a(i,l,u,"\u22d2","\\doublecap");a(i,l,u,"\u22d3","\\doublecup");a(i,l,u,"\u22a0","\\boxtimes");a(i,l,d,"\u21e2","\\dashrightarrow");a(i,l,d,"\u21e0","\\dashleftarrow");a(i,l,d,"\u21c7","\\leftleftarrows");a(i,l,d,"\u21c6","\\leftrightarrows");a(i,l,d,"\u21da","\\Lleftarrow");a(i,l,d,"\u219e","\\twoheadleftarrow");a(i,l,d,"\u21a2","\\leftarrowtail");a(i,l,d,"\u21ab","\\looparrowleft");a(i,l,d,"\u21cb","\\leftrightharpoons");a(i,l,d,"\u21b6","\\curvearrowleft");a(i,l,d,"\u21ba","\\circlearrowleft");a(i,l,d,"\u21b0","\\Lsh");a(i,l,d,"\u21c8","\\upuparrows");a(i,l,d,"\u21bf","\\upharpoonleft");a(i,l,d,"\u21c3","\\downharpoonleft");a(i,l,d,"\u22b8","\\multimap");a(i,l,d,"\u21ad","\\leftrightsquigarrow");a(i,l,d,"\u21c9","\\rightrightarrows");a(i,l,d,"\u21c4","\\rightleftarrows");a(i,l,d,"\u21a0","\\twoheadrightarrow");a(i,l,d,"\u21a3","\\rightarrowtail");a(i,l,d,"\u21ac","\\looparrowright");a(i,l,d,"\u21b7","\\curvearrowright");a(i,l,d,"\u21bb","\\circlearrowright");a(i,l,d,"\u21b1","\\Rsh");a(i,l,d,"\u21ca","\\downdownarrows");a(i,l,d,"\u21be","\\upharpoonright");a(i,l,d,"\u21c2","\\downharpoonright");a(i,l,d,"\u21dd","\\rightsquigarrow");a(i,l,d,"\u21dd","\\leadsto");a(i,l,d,"\u21db","\\Rrightarrow");a(i,l,d,"\u21be","\\restriction");a(i,n,y,"\u2018","`");a(i,n,y,"$","\\$");a(s,n,y,"$","\\$");a(i,n,y,"%","\\%");a(s,n,y,"%","\\%");a(i,n,y,"_","\\_");a(s,n,y,"_","\\_"); +a(i,n,y,"\u2220","\\angle");a(i,n,y,"\u221e","\\infty");a(i,n,y,"\u2032","\\prime");a(i,n,y,"\u25b3","\\triangle");a(i,n,y,"\u0393","\\Gamma");a(i,n,y,"\u0394","\\Delta");a(i,n,y,"\u0398","\\Theta");a(i,n,y,"\u039b","\\Lambda");a(i,n,y,"\u039e","\\Xi");a(i,n,y,"\u03a0","\\Pi");a(i,n,y,"\u03a3","\\Sigma");a(i,n,y,"\u03a5","\\Upsilon");a(i,n,y,"\u03a6","\\Phi");a(i,n,y,"\u03a8","\\Psi");a(i,n,y,"\u03a9","\\Omega");a(i,n,y,"\xac","\\neg");a(i,n,y,"\xac","\\lnot");a(i,n,y,"\u22a4","\\top");a(i,n,y,"\u22a5","\\bot");a(i,n,y,"\u2205","\\emptyset");a(i,l,y,"\u2205","\\varnothing");a(i,n,p,"\u03b1","\\alpha");a(i,n,p,"\u03b2","\\beta");a(i,n,p,"\u03b3","\\gamma");a(i,n,p,"\u03b4","\\delta");a(i,n,p,"\u03f5","\\epsilon");a(i,n,p,"\u03b6","\\zeta");a(i,n,p,"\u03b7","\\eta");a(i,n,p,"\u03b8","\\theta");a(i,n,p,"\u03b9","\\iota");a(i,n,p,"\u03ba","\\kappa");a(i,n,p,"\u03bb","\\lambda");a(i,n,p,"\u03bc","\\mu");a(i,n,p,"\u03bd","\\nu");a(i,n,p,"\u03be","\\xi");a(i,n,p,"o","\\omicron");a(i,n,p,"\u03c0","\\pi");a(i,n,p,"\u03c1","\\rho");a(i,n,p,"\u03c3","\\sigma");a(i,n,p,"\u03c4","\\tau");a(i,n,p,"\u03c5","\\upsilon");a(i,n,p,"\u03d5","\\phi");a(i,n,p,"\u03c7","\\chi");a(i,n,p,"\u03c8","\\psi");a(i,n,p,"\u03c9","\\omega");a(i,n,p,"\u03b5","\\varepsilon");a(i,n,p,"\u03d1","\\vartheta");a(i,n,p,"\u03d6","\\varpi");a(i,n,p,"\u03f1","\\varrho");a(i,n,p,"\u03c2","\\varsigma");a(i,n,p,"\u03c6","\\varphi");a(i,n,u,"\u2217","*");a(i,n,u,"+","+");a(i,n,u,"\u2212","-");a(i,n,u,"\u22c5","\\cdot");a(i,n,u,"\u2218","\\circ");a(i,n,u,"\xf7","\\div");a(i,n,u,"\xb1","\\pm");a(i,n,u,"\xd7","\\times");a(i,n,u,"\u2229","\\cap");a(i,n,u,"\u222a","\\cup");a(i,n,u,"\u2216","\\setminus");a(i,n,u,"\u2227","\\land");a(i,n,u,"\u2228","\\lor");a(i,n,u,"\u2227","\\wedge");a(i,n,u,"\u2228","\\vee");a(i,n,y,"\u221a","\\surd");a(i,n,f,"(","(");a(i,n,f,"[","[");a(i,n,f,"\u27e8","\\langle");a(i,n,f,"\u2223","\\lvert");a(i,n,f,"\u2225","\\lVert");a(i,n,h,")",")");a(i,n,h,"]","]");a(i,n,h,"?","?");a(i,n,h,"!","!");a(i,n,h,"\u27e9","\\rangle");a(i,n,h,"\u2223","\\rvert");a(i,n,h,"\u2225","\\rVert");a(i,n,d,"=","=");a(i,n,d,"<","<");a(i,n,d,">",">");a(i,n,d,":",":");a(i,n,d,"\u2248","\\approx");a(i,n,d,"\u2245","\\cong");a(i,n,d,"\u2265","\\ge");a(i,n,d,"\u2265","\\geq");a(i,n,d,"\u2190","\\gets");a(i,n,d,">","\\gt");a(i,n,d,"\u2208","\\in");a(i,n,d,"\u2209","\\notin");a(i,n,d,"\u2282","\\subset");a(i,n,d,"\u2283","\\supset");a(i,n,d,"\u2286","\\subseteq");a(i,n,d,"\u2287","\\supseteq");a(i,l,d,"\u2288","\\nsubseteq");a(i,l,d,"\u2289","\\nsupseteq");a(i,n,d,"\u22a8","\\models");a(i,n,d,"\u2190","\\leftarrow");a(i,n,d,"\u2264","\\le");a(i,n,d,"\u2264","\\leq");a(i,n,d,"<","\\lt");a(i,n,d,"\u2260","\\ne");a(i,n,d,"\u2260","\\neq");a(i,n,d,"\u2192","\\rightarrow");a(i,n,d,"\u2192","\\to");a(i,l,d,"\u2271","\\ngeq");a(i,l,d,"\u2270","\\nleq");a(i,n,g,null,"\\!");a(i,n,g,"\xa0","\\ ");a(i,n,g,"\xa0","~");a(i,n,g,null,"\\,");a(i,n,g,null,"\\:");a(i,n,g,null,"\\;");a(i,n,g,null,"\\enspace");a(i,n,g,null,"\\qquad");a(i,n,g,null,"\\quad");a(i,n,g,"\xa0","\\space");a(i,n,v,",",",");a(i,n,v,";",";");a(i,n,v,":","\\colon");a(i,l,u,"\u22bc","\\barwedge");a(i,l,u,"\u22bb","\\veebar");a(i,n,u,"\u2299","\\odot");a(i,n,u,"\u2295","\\oplus");a(i,n,u,"\u2297","\\otimes");a(i,n,y,"\u2202","\\partial");a(i,n,u,"\u2298","\\oslash");a(i,l,u,"\u229a","\\circledcirc");a(i,l,u,"\u22a1","\\boxdot");a(i,n,u,"\u25b3","\\bigtriangleup");a(i,n,u,"\u25bd","\\bigtriangledown");a(i,n,u,"\u2020","\\dagger");a(i,n,u,"\u22c4","\\diamond");a(i,n,u,"\u22c6","\\star");a(i,n,u,"\u25c3","\\triangleleft");a(i,n,u,"\u25b9","\\triangleright");a(i,n,f,"{","\\{");a(s,n,y,"{","\\{");a(i,n,h,"}","\\}");a(s,n,y,"}","\\}");a(i,n,f,"{","\\lbrace");a(i,n,h,"}","\\rbrace");a(i,n,f,"[","\\lbrack");a(i,n,h,"]","\\rbrack");a(i,n,f,"\u230a","\\lfloor");a(i,n,h,"\u230b","\\rfloor");a(i,n,f,"\u2308","\\lceil");a(i,n,h,"\u2309","\\rceil");a(i,n,y,"\\","\\backslash");a(i,n,y,"\u2223","|");a(i,n,y,"\u2223","\\vert");a(i,n,y,"\u2225","\\|");a(i,n,y,"\u2225","\\Vert");a(i,n,d,"\u2191","\\uparrow");a(i,n,d,"\u21d1","\\Uparrow");a(i,n,d,"\u2193","\\downarrow");a(i,n,d,"\u21d3","\\Downarrow");a(i,n,d,"\u2195","\\updownarrow");a(i,n,d,"\u21d5","\\Updownarrow");a(i,i,m,"\u2210","\\coprod");a(i,i,m,"\u22c1","\\bigvee");a(i,i,m,"\u22c0","\\bigwedge");a(i,i,m,"\u2a04","\\biguplus");a(i,i,m,"\u22c2","\\bigcap");a(i,i,m,"\u22c3","\\bigcup");a(i,i,m,"\u222b","\\int");a(i,i,m,"\u222b","\\intop");a(i,i,m,"\u222c","\\iint");a(i,i,m,"\u222d","\\iiint");a(i,i,m,"\u220f","\\prod");a(i,i,m,"\u2211","\\sum");a(i,i,m,"\u2a02","\\bigotimes");a(i,i,m,"\u2a01","\\bigoplus");a(i,i,m,"\u2a00","\\bigodot");a(i,i,m,"\u222e","\\oint");a(i,i,m,"\u2a06","\\bigsqcup");a(i,i,m,"\u222b","\\smallint");a(s,n,c,"\u2026","\\textellipsis");a(i,n,c,"\u2026","\\mathellipsis");a(s,n,c,"\u2026","\\ldots");a(i,n,c,"\u2026","\\ldots");a(i,n,c,"\u22ef","\\cdots");a(i,n,c,"\u22f1","\\ddots");a(i,n,y,"\u22ee","\\vdots");a(i,n,o,"\xb4","\\acute");a(i,n,o,"`","\\grave");a(i,n,o,"\xa8","\\ddot");a(i,n,o,"~","\\tilde");a(i,n,o,"\xaf","\\bar");a(i,n,o,"\u02d8","\\breve");a(i,n,o,"\u02c7","\\check");a(i,n,o,"^","\\hat");a(i,n,o,"\u20d7","\\vec");a(i,n,o,"\u02d9","\\dot");a(i,n,p,"\u0131","\\imath");a(i,n,p,"\u0237","\\jmath");a(s,n,y,"\u2013","--");a(s,n,y,"\u2014","---");a(s,n,y,"\u2018","`");a(s,n,y,"\u2019","'");a(s,n,y,"\u201c","``");a(s,n,y,"\u201d","''");a(i,n,y,"\xb0","\\degree");a(s,n,y,"\xb0","\\degree");a(i,n,p,"\xa3","\\pounds");a(i,l,y,"\u2720","\\maltese");a(s,l,y,"\u2720","\\maltese");a(s,n,g,"\xa0","\\ ");a(s,n,g,"\xa0"," ");a(s,n,g,"\xa0","~");var b;var w;var x='0123456789/@."';for(b=0;b<x.length;b++){w=x.charAt(b);a(i,n,y,w,w)}var k='0123456789!@*()-=+[]";:?/.,';for(b=0;b<k.length;b++){w=k.charAt(b);a(s,n,y,w,w)}var z="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";for(b=0;b<z.length;b++){w=z.charAt(b);a(i,n,p,w,w);a(s,n,y,w,w)}for(b=192;b<=214;b++){w=String.fromCharCode(b);a(s,n,y,w,w)}for(b=216;b<=246;b++){w=String.fromCharCode(b);a(s,n,y,w,w)}for(b=248;b<=255;b++){w=String.fromCharCode(b);a(s,n,y,w,w)}for(b=1040;b<=1103;b++){w=String.fromCharCode(b);a(s,n,y,w,w)}a(s,n,y,"\u2013","\u2013");a(s,n,y,"\u2014","\u2014");a(s,n,y,"\u2018","\u2018");a(s,n,y,"\u2019","\u2019");a(s,n,y,"\u201c","\u201c");a(s,n,y,"\u201d","\u201d")},{}],25:[function(e,t,r){var a=/[\uAC00-\uD7AF]/;var i=/[\u3040-\u309F]|[\u30A0-\u30FF]|[\u4E00-\u9FAF]|[\uAC00-\uD7AF]/;t.exports={cjkRegex:i,hangulRegex:a}},{}],26:[function(e,t,r){var a=Array.prototype.indexOf;var i=function(e,t){if(e==null){return-1}if(a&&e.indexOf===a){return e.indexOf(t)}var r=0;var i=e.length;for(;r<i;r++){if(e[r]===t){return r}}return-1};var s=function(e,t){return i(e,t)!==-1};var n=function(e,t){return e===undefined?t:e};var l=/([A-Z])/g;var o=function(e){return e.replace(l,"-$1").toLowerCase()};var u={"&":"&",">":">","<":"<",'"':""","'":"'"};var h=/[&><"']/g;function c(e){return u[e]}function p(e){return(""+e).replace(h,c)}var m;if(typeof document!=="undefined"){var f=document.createElement("span");if("textContent"in f){m=function(e,t){e.textContent=t}}else{m=function(e,t){e.innerText=t}}}function v(e){m(e,"")}t.exports={contains:s,deflt:n,escape:p,hyphenate:o,indexOf:i,setTextContent:m,clearNode:v}},{}]},{},[1])(1)}); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/makefunlist.cdy b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/makefunlist.cdy Binary files differnew file mode 100644 index 0000000000..f7993fa39c --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/makefunlist.cdy diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/webfont.js b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/webfont.js new file mode 100644 index 0000000000..e1e978523c --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketcindyjs/webfont.js @@ -0,0 +1,45 @@ +/* + * Copyright 2015 Small Batch, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +/* Web Font Loader v1.5.18 - (c) Adobe Systems, Google. License: Apache 2.0 */ +;(function(window,document,undefined){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function k(a,b,c){k=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?aa:ba;return k.apply(null,arguments)}var n=Date.now||function(){return+new Date};function q(a,b){this.K=a;this.w=b||a;this.G=this.w.document}q.prototype.createElement=function(a,b,c){a=this.G.createElement(a);if(b)for(var d in b)b.hasOwnProperty(d)&&("style"==d?a.style.cssText=b[d]:a.setAttribute(d,b[d]));c&&a.appendChild(this.G.createTextNode(c));return a};function r(a,b,c){a=a.G.getElementsByTagName(b)[0];a||(a=document.documentElement);a&&a.lastChild&&a.insertBefore(c,a.lastChild)}function ca(a,b){function c(){a.G.body?b():setTimeout(c,0)}c()} +function s(a,b,c){b=b||[];c=c||[];for(var d=a.className.split(/\s+/),e=0;e<b.length;e+=1){for(var f=!1,g=0;g<d.length;g+=1)if(b[e]===d[g]){f=!0;break}f||d.push(b[e])}b=[];for(e=0;e<d.length;e+=1){f=!1;for(g=0;g<c.length;g+=1)if(d[e]===c[g]){f=!0;break}f||b.push(d[e])}a.className=b.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")}function t(a,b){for(var c=a.className.split(/\s+/),d=0,e=c.length;d<e;d++)if(c[d]==b)return!0;return!1} +function u(a){if("string"===typeof a.na)return a.na;var b=a.w.location.protocol;"about:"==b&&(b=a.K.location.protocol);return"https:"==b?"https:":"http:"}function v(a,b){var c=a.createElement("link",{rel:"stylesheet",href:b,media:"all"}),d=!1;c.onload=function(){d||(d=!0)};c.onerror=function(){d||(d=!0)};r(a,"head",c)} +function w(a,b,c,d){var e=a.G.getElementsByTagName("head")[0];if(e){var f=a.createElement("script",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(g=!0,c&&c(null),f.onload=f.onreadystatechange=null,"HEAD"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);window.setTimeout(function(){g||(g=!0,c&&c(Error("Script load timeout")))},d||5E3);return f}return null};function x(a,b){this.Y=a;this.ga=b};function y(a,b,c,d){this.c=null!=a?a:null;this.g=null!=b?b:null;this.D=null!=c?c:null;this.e=null!=d?d:null}var da=/^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;y.prototype.compare=function(a){return this.c>a.c||this.c===a.c&&this.g>a.g||this.c===a.c&&this.g===a.g&&this.D>a.D?1:this.c<a.c||this.c===a.c&&this.g<a.g||this.c===a.c&&this.g===a.g&&this.D<a.D?-1:0};y.prototype.toString=function(){return[this.c,this.g||"",this.D||"",this.e||""].join("")}; +function z(a){a=da.exec(a);var b=null,c=null,d=null,e=null;a&&(null!==a[1]&&a[1]&&(b=parseInt(a[1],10)),null!==a[2]&&a[2]&&(c=parseInt(a[2],10)),null!==a[3]&&a[3]&&(d=parseInt(a[3],10)),null!==a[4]&&a[4]&&(e=/^[0-9]+$/.test(a[4])?parseInt(a[4],10):a[4]));return new y(b,c,d,e)};function A(a,b,c,d,e,f,g,h){this.N=a;this.k=h}A.prototype.getName=function(){return this.N};function B(a){this.a=a}var ea=new A("Unknown",0,0,0,0,0,0,new x(!1,!1)); +B.prototype.parse=function(){var a;if(-1!=this.a.indexOf("MSIE")||-1!=this.a.indexOf("Trident/")){a=C(this);var b=z(D(this)),c=null,d=E(this.a,/Trident\/([\d\w\.]+)/,1),c=-1!=this.a.indexOf("MSIE")?z(E(this.a,/MSIE ([\d\w\.]+)/,1)):z(E(this.a,/rv:([\d\w\.]+)/,1));""!=d&&z(d);a=new A("MSIE",0,0,0,0,0,0,new x("Windows"==a&&6<=c.c||"Windows Phone"==a&&8<=b.c,!1))}else if(-1!=this.a.indexOf("Opera"))a:if(a=z(E(this.a,/Presto\/([\d\w\.]+)/,1)),z(D(this)),null!==a.c||z(E(this.a,/rv:([^\)]+)/,1)),-1!=this.a.indexOf("Opera Mini/"))a= +z(E(this.a,/Opera Mini\/([\d\.]+)/,1)),a=new A("OperaMini",0,0,0,C(this),0,0,new x(!1,!1));else{if(-1!=this.a.indexOf("Version/")&&(a=z(E(this.a,/Version\/([\d\.]+)/,1)),null!==a.c)){a=new A("Opera",0,0,0,C(this),0,0,new x(10<=a.c,!1));break a}a=z(E(this.a,/Opera[\/ ]([\d\.]+)/,1));a=null!==a.c?new A("Opera",0,0,0,C(this),0,0,new x(10<=a.c,!1)):new A("Opera",0,0,0,C(this),0,0,new x(!1,!1))}else/OPR\/[\d.]+/.test(this.a)?a=F(this):/AppleWeb(K|k)it/.test(this.a)?a=F(this):-1!=this.a.indexOf("Gecko")? +(a="Unknown",b=new y,z(D(this)),b=!1,-1!=this.a.indexOf("Firefox")?(a="Firefox",b=z(E(this.a,/Firefox\/([\d\w\.]+)/,1)),b=3<=b.c&&5<=b.g):-1!=this.a.indexOf("Mozilla")&&(a="Mozilla"),c=z(E(this.a,/rv:([^\)]+)/,1)),b||(b=1<c.c||1==c.c&&9<c.g||1==c.c&&9==c.g&&2<=c.D),a=new A(a,0,0,0,C(this),0,0,new x(b,!1))):a=ea;return a}; +function C(a){var b=E(a.a,/(iPod|iPad|iPhone|Android|Windows Phone|BB\d{2}|BlackBerry)/,1);if(""!=b)return/BB\d{2}/.test(b)&&(b="BlackBerry"),b;a=E(a.a,/(Linux|Mac_PowerPC|Macintosh|Windows|CrOS|PlayStation|CrKey)/,1);return""!=a?("Mac_PowerPC"==a?a="Macintosh":"PlayStation"==a&&(a="Linux"),a):"Unknown"} +function D(a){var b=E(a.a,/(OS X|Windows NT|Android) ([^;)]+)/,2);if(b||(b=E(a.a,/Windows Phone( OS)? ([^;)]+)/,2))||(b=E(a.a,/(iPhone )?OS ([\d_]+)/,2)))return b;if(b=E(a.a,/(?:Linux|CrOS|CrKey) ([^;)]+)/,1))for(var b=b.split(/\s/),c=0;c<b.length;c+=1)if(/^[\d\._]+$/.test(b[c]))return b[c];return(a=E(a.a,/(BB\d{2}|BlackBerry).*?Version\/([^\s]*)/,2))?a:"Unknown"} +function F(a){var b=C(a),c=z(D(a)),d=z(E(a.a,/AppleWeb(?:K|k)it\/([\d\.\+]+)/,1)),e="Unknown",f=new y,f="Unknown",g=!1;/OPR\/[\d.]+/.test(a.a)?e="Opera":-1!=a.a.indexOf("Chrome")||-1!=a.a.indexOf("CrMo")||-1!=a.a.indexOf("CriOS")?e="Chrome":/Silk\/\d/.test(a.a)?e="Silk":"BlackBerry"==b||"Android"==b?e="BuiltinBrowser":-1!=a.a.indexOf("PhantomJS")?e="PhantomJS":-1!=a.a.indexOf("Safari")?e="Safari":-1!=a.a.indexOf("AdobeAIR")?e="AdobeAIR":-1!=a.a.indexOf("PlayStation")&&(e="BuiltinBrowser");"BuiltinBrowser"== +e?f="Unknown":"Silk"==e?f=E(a.a,/Silk\/([\d\._]+)/,1):"Chrome"==e?f=E(a.a,/(Chrome|CrMo|CriOS)\/([\d\.]+)/,2):-1!=a.a.indexOf("Version/")?f=E(a.a,/Version\/([\d\.\w]+)/,1):"AdobeAIR"==e?f=E(a.a,/AdobeAIR\/([\d\.]+)/,1):"Opera"==e?f=E(a.a,/OPR\/([\d.]+)/,1):"PhantomJS"==e&&(f=E(a.a,/PhantomJS\/([\d.]+)/,1));f=z(f);g="AdobeAIR"==e?2<f.c||2==f.c&&5<=f.g:"BlackBerry"==b?10<=c.c:"Android"==b?2<c.c||2==c.c&&1<c.g:526<=d.c||525<=d.c&&13<=d.g;return new A(e,0,0,0,0,0,0,new x(g,536>d.c||536==d.c&&11>d.g))} +function E(a,b,c){return(a=a.match(b))&&a[c]?a[c]:""};function G(a){this.ma=a||"-"}G.prototype.e=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.ma)};function H(a,b){this.N=a;this.Z=4;this.O="n";var c=(b||"n4").match(/^([nio])([1-9])$/i);c&&(this.O=c[1],this.Z=parseInt(c[2],10))}H.prototype.getName=function(){return this.N};function I(a){return a.O+a.Z}function ga(a){var b=4,c="n",d=null;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function ha(a,b){this.d=a;this.q=a.w.document.documentElement;this.Q=b;this.j="wf";this.h=new G("-");this.ha=!1!==b.events;this.F=!1!==b.classes}function J(a){if(a.F){var b=t(a.q,a.h.e(a.j,"active")),c=[],d=[a.h.e(a.j,"loading")];b||c.push(a.h.e(a.j,"inactive"));s(a.q,c,d)}K(a,"inactive")}function K(a,b,c){if(a.ha&&a.Q[b])if(c)a.Q[b](c.getName(),I(c));else a.Q[b]()};function ia(){this.C={}};function L(a,b){this.d=a;this.I=b;this.o=this.d.createElement("span",{"aria-hidden":"true"},this.I)} +function M(a,b){var c=a.o,d;d=[];for(var e=b.N.split(/,\s*/),f=0;f<e.length;f++){var g=e[f].replace(/['"]/g,"");-1==g.indexOf(" ")?d.push(g):d.push("'"+g+"'")}d=d.join(",");e="normal";"o"===b.O?e="oblique":"i"===b.O&&(e="italic");c.style.cssText="display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+d+";"+("font-style:"+e+";font-weight:"+(b.Z+"00")+";")} +function N(a){r(a.d,"body",a.o)}L.prototype.remove=function(){var a=this.o;a.parentNode&&a.parentNode.removeChild(a)};function O(a,b,c,d,e,f,g,h){this.$=a;this.ka=b;this.d=c;this.m=d;this.k=e;this.I=h||"BESbswy";this.v={};this.X=f||3E3;this.ca=g||null;this.H=this.u=this.t=null;this.t=new L(this.d,this.I);this.u=new L(this.d,this.I);this.H=new L(this.d,this.I);M(this.t,new H("serif",I(this.m)));M(this.u,new H("sans-serif",I(this.m)));M(this.H,new H("monospace",I(this.m)));N(this.t);N(this.u);N(this.H);this.v.serif=this.t.o.offsetWidth;this.v["sans-serif"]=this.u.o.offsetWidth;this.v.monospace=this.H.o.offsetWidth} +var P={sa:"serif",ra:"sans-serif",qa:"monospace"};O.prototype.start=function(){this.oa=n();M(this.t,new H(this.m.getName()+",serif",I(this.m)));M(this.u,new H(this.m.getName()+",sans-serif",I(this.m)));Q(this)};function R(a,b,c){for(var d in P)if(P.hasOwnProperty(d)&&b===a.v[P[d]]&&c===a.v[P[d]])return!0;return!1} +function Q(a){var b=a.t.o.offsetWidth,c=a.u.o.offsetWidth;b===a.v.serif&&c===a.v["sans-serif"]||a.k.ga&&R(a,b,c)?n()-a.oa>=a.X?a.k.ga&&R(a,b,c)&&(null===a.ca||a.ca.hasOwnProperty(a.m.getName()))?S(a,a.$):S(a,a.ka):ja(a):S(a,a.$)}function ja(a){setTimeout(k(function(){Q(this)},a),50)}function S(a,b){a.t.remove();a.u.remove();a.H.remove();b(a.m)};function T(a,b,c,d){this.d=b;this.A=c;this.S=0;this.ea=this.ba=!1;this.X=d;this.k=a.k}function ka(a,b,c,d,e){c=c||{};if(0===b.length&&e)J(a.A);else for(a.S+=b.length,e&&(a.ba=e),e=0;e<b.length;e++){var f=b[e],g=c[f.getName()],h=a.A,m=f;h.F&&s(h.q,[h.h.e(h.j,m.getName(),I(m).toString(),"loading")]);K(h,"fontloading",m);h=null;h=new O(k(a.ia,a),k(a.ja,a),a.d,f,a.k,a.X,d,g);h.start()}} +T.prototype.ia=function(a){var b=this.A;b.F&&s(b.q,[b.h.e(b.j,a.getName(),I(a).toString(),"active")],[b.h.e(b.j,a.getName(),I(a).toString(),"loading"),b.h.e(b.j,a.getName(),I(a).toString(),"inactive")]);K(b,"fontactive",a);this.ea=!0;la(this)}; +T.prototype.ja=function(a){var b=this.A;if(b.F){var c=t(b.q,b.h.e(b.j,a.getName(),I(a).toString(),"active")),d=[],e=[b.h.e(b.j,a.getName(),I(a).toString(),"loading")];c||d.push(b.h.e(b.j,a.getName(),I(a).toString(),"inactive"));s(b.q,d,e)}K(b,"fontinactive",a);la(this)};function la(a){0==--a.S&&a.ba&&(a.ea?(a=a.A,a.F&&s(a.q,[a.h.e(a.j,"active")],[a.h.e(a.j,"loading"),a.h.e(a.j,"inactive")]),K(a,"active")):J(a.A))};function U(a){this.K=a;this.B=new ia;this.pa=new B(a.navigator.userAgent);this.a=this.pa.parse();this.U=this.V=0;this.R=this.T=!0} +U.prototype.load=function(a){this.d=new q(this.K,a.context||this.K);this.T=!1!==a.events;this.R=!1!==a.classes;var b=new ha(this.d,a),c=[],d=a.timeout;b.F&&s(b.q,[b.h.e(b.j,"loading")]);K(b,"loading");var c=this.B,e=this.d,f=[],g;for(g in a)if(a.hasOwnProperty(g)){var h=c.C[g];h&&f.push(h(a[g],e))}c=f;this.U=this.V=c.length;a=new T(this.a,this.d,b,d);d=0;for(g=c.length;d<g;d++)e=c[d],e.L(this.a,k(this.la,this,e,b,a))}; +U.prototype.la=function(a,b,c,d){var e=this;d?a.load(function(a,b,d){ma(e,c,a,b,d)}):(a=0==--this.V,this.U--,a&&0==this.U?J(b):(this.R||this.T)&&ka(c,[],{},null,a))};function ma(a,b,c,d,e){var f=0==--a.V;(a.R||a.T)&&setTimeout(function(){ka(b,c,d||null,e||null,f)},0)};function na(a,b,c){this.P=a?a:b+oa;this.s=[];this.W=[];this.fa=c||""}var oa="//fonts.googleapis.com/css";na.prototype.e=function(){if(0==this.s.length)throw Error("No fonts to load!");if(-1!=this.P.indexOf("kit="))return this.P;for(var a=this.s.length,b=[],c=0;c<a;c++)b.push(this.s[c].replace(/ /g,"+"));a=this.P+"?family="+b.join("%7C");0<this.W.length&&(a+="&subset="+this.W.join(","));0<this.fa.length&&(a+="&text="+encodeURIComponent(this.fa));return a};function pa(a){this.s=a;this.da=[];this.M={}} +var qa={latin:"BESbswy",cyrillic:"йяЖ",greek:"αβΣ",khmer:"កខគ",Hanuman:"កខគ"},ra={thin:"1",extralight:"2","extra-light":"2",ultralight:"2","ultra-light":"2",light:"3",regular:"4",book:"4",medium:"5","semi-bold":"6",semibold:"6","demi-bold":"6",demibold:"6",bold:"7","extra-bold":"8",extrabold:"8","ultra-bold":"8",ultrabold:"8",black:"9",heavy:"9",l:"3",r:"4",b:"7"},sa={i:"i",italic:"i",n:"n",normal:"n"},ta=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/; +pa.prototype.parse=function(){for(var a=this.s.length,b=0;b<a;b++){var c=this.s[b].split(":"),d=c[0].replace(/\+/g," "),e=["n4"];if(2<=c.length){var f;var g=c[1];f=[];if(g)for(var g=g.split(","),h=g.length,m=0;m<h;m++){var l;l=g[m];if(l.match(/^[\w-]+$/)){l=ta.exec(l.toLowerCase());var p=void 0;if(null==l)p="";else{p=void 0;p=l[1];if(null==p||""==p)p="4";else var fa=ra[p],p=fa?fa:isNaN(p)?"4":p.substr(0,1);l=l[2];p=[null==l||""==l?"n":sa[l],p].join("")}l=p}else l="";l&&f.push(l)}0<f.length&&(e=f); +3==c.length&&(c=c[2],f=[],c=c?c.split(","):f,0<c.length&&(c=qa[c[0]])&&(this.M[d]=c))}this.M[d]||(c=qa[d])&&(this.M[d]=c);for(c=0;c<e.length;c+=1)this.da.push(new H(d,e[c]))}};function V(a,b){this.a=(new B(navigator.userAgent)).parse();this.d=a;this.f=b}var ua={Arimo:!0,Cousine:!0,Tinos:!0};V.prototype.L=function(a,b){b(a.k.Y)};V.prototype.load=function(a){var b=this.d;"MSIE"==this.a.getName()&&1!=this.f.blocking?ca(b,k(this.aa,this,a)):this.aa(a)}; +V.prototype.aa=function(a){for(var b=this.d,c=new na(this.f.api,u(b),this.f.text),d=this.f.families,e=d.length,f=0;f<e;f++){var g=d[f].split(":");3==g.length&&c.W.push(g.pop());var h="";2==g.length&&""!=g[1]&&(h=":");c.s.push(g.join(h))}d=new pa(d);d.parse();v(b,c.e());a(d.da,d.M,ua)};function W(a,b){this.d=a;this.f=b;this.p=[]}W.prototype.J=function(a){var b=this.d;return u(this.d)+(this.f.api||"//f.fontdeck.com/s/css/js/")+(b.w.location.hostname||b.K.location.hostname)+"/"+a+".js"}; +W.prototype.L=function(a,b){var c=this.f.id,d=this.d.w,e=this;c?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[c]=function(a,c){for(var d=0,m=c.fonts.length;d<m;++d){var l=c.fonts[d];e.p.push(new H(l.name,ga("font-weight:"+l.weight+";font-style:"+l.style)))}b(a)},w(this.d,this.J(c),function(a){a&&b(!1)})):b(!1)};W.prototype.load=function(a){a(this.p)};function X(a,b){this.d=a;this.f=b;this.p=[]}X.prototype.J=function(a){var b=u(this.d);return(this.f.api||b+"//use.typekit.net")+"/"+a+".js"};X.prototype.L=function(a,b){var c=this.f.id,d=this.d.w,e=this;c?w(this.d,this.J(c),function(a){if(a)b(!1);else{if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){a=d.Typekit.config.fn;for(var c=0;c<a.length;c+=2)for(var h=a[c],m=a[c+1],l=0;l<m.length;l++)e.p.push(new H(h,m[l]));try{d.Typekit.load({events:!1,classes:!1})}catch(p){}}b(!0)}},2E3):b(!1)}; +X.prototype.load=function(a){a(this.p)};function Y(a,b){this.d=a;this.f=b;this.p=[]}Y.prototype.L=function(a,b){var c=this,d=c.f.projectId,e=c.f.version;if(d){var f=c.d.w;w(this.d,c.J(d,e),function(e){if(e)b(!1);else{if(f["__mti_fntLst"+d]&&(e=f["__mti_fntLst"+d]()))for(var h=0;h<e.length;h++)c.p.push(new H(e[h].fontfamily));b(a.k.Y)}}).id="__MonotypeAPIScript__"+d}else b(!1)};Y.prototype.J=function(a,b){var c=u(this.d),d=(this.f.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+d+"/"+a+".js"+(b?"?v="+b:"")}; +Y.prototype.load=function(a){a(this.p)};function Z(a,b){this.d=a;this.f=b}Z.prototype.load=function(a){var b,c,d=this.f.urls||[],e=this.f.families||[],f=this.f.testStrings||{};b=0;for(c=d.length;b<c;b++)v(this.d,d[b]);d=[];b=0;for(c=e.length;b<c;b++){var g=e[b].split(":");if(g[1])for(var h=g[1].split(","),m=0;m<h.length;m+=1)d.push(new H(g[0],h[m]));else d.push(new H(g[0]))}a(d,f)};Z.prototype.L=function(a,b){return b(a.k.Y)};var $=new U(this);$.B.C.custom=function(a,b){return new Z(b,a)};$.B.C.fontdeck=function(a,b){return new W(b,a)};$.B.C.monotype=function(a,b){return new Y(b,a)};$.B.C.typekit=function(a,b){return new X(b,a)};$.B.C.google=function(a,b){return new V(b,a)};this.WebFont||(this.WebFont={},this.WebFont.load=k($.load,$),this.WebFontConfig&&$.load(this.WebFontConfig));})(this,document); + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dhelpE.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dhelpE.txt new file mode 100755 index 0000000000..27b40955e6 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dhelpJ.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dhelpJ.txt new file mode 100755 index 0000000000..2d33176d4e --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dhelpJ.txt @@ -0,0 +1,44 @@ +//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:Sfbdparaparadata*(空間曲é¢ã®é™°ç·šå‡¦ç†); +//help:Wireparadata*(曲é¢ã®ãƒ¯ã‚¤ãƒ¤ãƒ•ãƒ¬ãƒ¼ãƒ を陰線処ç†); +//help:Dist3d*(空間ã®ï¼’点ã®è·é›¢); + + +//help:end(); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dlogr.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dlogr.txt new file mode 100644 index 0000000000..169d22e767 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dlogr.txt @@ -0,0 +1,190 @@ +// 20190511 +// Start3d changed (KetcindyDataList initialized) +// 20190506 +// Skeletonparadata debugged ( parseparse for pfe3d ) +// Vertexedgeface debugged (vname) +// 20190505 +// Xyzax3data changed ( Lightarrowdata used,"axx,axy,axz" generated ) +// isselected changed to Ptselected +// text(pt) => pt.name +// PointonCurve => Poinoncurve +// Makeskeletondata changed (floor() => re(floor()) +// 20190504 +// Ketinit3d changed (Slider part moved to Start3d) +// Start3d changed ( optionjs (slider,removept) added ) +// Start3d debugged ( SLIDEFLG ) +// 20190502 +// Vertexedgeface changed ( Label=n ) +// VertexEdgeFace added ( for compatibility with conventional files) +// 20190416 +// Xyzaxparaname debugged ( Label ) +// 20190415 +// parse( ..= ) changed ( ; added ) +// 20190413 +// Nohiddenbyfaces debugged (for Arg1,Arg2, Arg3) +// 20190401 +// VertexEdgeFace changed ( for MeasureDepth==1 ) +// Nohiddenbyfaces debugged (for Arg1,Arg2 and making faceL) +// Mkseg3d changed ( no display when "geoseg3d" is null ) +// IntersectsgpL changed ( varialble set when "draw" ) +// 20190331 +// VertexEdgeFace changed (Labelsize option added) +// Nohiddensegs, Nohiddenbyfaces majorly changed (segL,faceL) +// 20190330 +// Spacecurve debugged (Precision, string data) +// 20190329 +// Start3d,Ptseg3d Setangle changed/debugged (PTEXCEPTION) +// 20190320 +// Skeletonparadata maintained, debugged (FI => F) +// 20190301 +// MeasureDepth => Measuredepth +// 20190209 +// ////% added +// Start3d changed ( Slider used ) +// 20190128 +// Vertexedgeface changed ( size of point name, drawpoint ) +// 20190127 +// Nohiddenseg debugged ( for changing Ltype ) +// 20181218 +// Letter3d,Expr3d added +// 20181212 +// Vertexedgeface debugged ( Vname changed for multi 3d ) +// 20181108 +// Mkpointlist debugged (theta=90) +// 20181107 +// Nohiddenbyfaces changed ( frn3d,frnh3d returned, option "Disp=" added ) +// Perplane debugged ( for "draw" ) +// VertexEdgeFace changed (point name v =>V, option "Edg=n" as default ) +// 20181103 +// Skeletonparadata changed ( option "Not=","Check=" added ) +// 20181102 +// Skeletonparadata changed ( option "File=" added ) +// 20181031 +// IntersectsgpL changed ( option "Screen=" added ) +// Perpplane, Nohiddenseg changed ( for change of IntersectsgpL) +// 20181030 +// Mkpointlist debugged (workprocess adopted) +// Parcrv3d, IntersectsgpL debugged +// Ptonseg3d changed ( for non-geo point ) +// Drawpoint3d changed ( color option ) +// IntersectsgpL changed ( Pointdata3d => Drawpoint3d ) +// 20181029 +// Mkpointlist debugged +// Subgraph change +// 20181028 +// Start3d changed ( pt,ptz removed) +// Mkpointlist, Xyzcoord changed +// 20181027 +// IntersectsgpL changed ( return=[pt,isinseg,isinplane,tseg,t,s] ) +// Parasubpt, Mainsubpt, Mainsubptlog added +// 20181026 +// IntersectsgpL changed ( option "ie" ) +// 20181017 +// Pointdata3d added (simillar to Pointdata) +// 20181015 +// Mkpointlist debugged (vlistpre ) +// Start3d slightly changed +// 20180916 +// Setangle debugged, Start3d changed ( PTEXCEPTION added) +// 20180905 +// VertexEdgeFace changed (option "vtx=geo/nogeo" added) +// 20180904 +// Color setting changed ( for KCOLOR) +// 20180816 +// Nohiddenbyfaces debugged (spaceline dissolved to segments) +// 20180815 +// Nohiddenseg,segs, byfaces debugged (Eps=10^(-2) added as option) +// 20180811 +// IntersectsgpL debugged (Reflect3point->Reflectreflectpoint3d) +// 20180809 +// Rotatepoint3d changed ( default center [0,0,0] added ) +// 20180808 +// Rotatedata3d, Translatedata3d, debugged +// Reflectdata3d, Scaledata3d added +// Scalepoint3d changed ( ratio ) +// 20180806 +// Rotatepoint3d, Translatepoint3d, Reflectpoint3d renamed from old +// Scalepoint3d added +// 20180729 +// Rotatedata3d, Reflectdata3d changed ( only these names are valid) +// 20180722 +// color localized +// 20180714 +// Nohiddenbyfaces debugged ( case where seglist is a string of a list of strings ) +// 20180712 +// Sfbdparadata,... renamed to SfbdparadataR,... +// 20180614 +// Setangle changed (for angle list) +// 20180613 +// Getangle changed ("Disp=y" options added ) +// 20180608 +// Xyzaxparaname changed ( former names deleted ) +// Projpara changed (default: Msg=no ) +// Start3d changed ( Setfiles(Namecdy) added ) +// 20180607 +// Getangle debugged (output) +// 20180606 +// Start3d changed (ADDPACK ) +// 20180603 +// Projpara,... changed (KCOLOR) +// 20180602 +// divoptions ( 8,9 ->length(tmp)-1,length(tmp)) +// Projara,... changed (color supported ) +// Rotatedata3d,Translatedatad3 changed ( Level of RSform to 1) +// Changestyle3d changed ( for case where name not found) +// 20180601 +// Start3d changed (CutFunList, EraseList added) +// 20180531 +// Start3d changed (CommandListC added) +// ExeccmdC added +// SfbdparadataC,CrvsfparadataC,... changed ( for "c" option) +// 20180522 +// Sfbdparadata debugged ( "Proj" ) +// 20180517 +// Isangle(isAngle),Getangle added +// kcC changed ( "resultC" => "end") +// 20180510 +// Wireparadata,Sfcutparadata debugged +// 20180509 +// Sfbdparadata,... changed ( name2,name2h removed) +// Crvsfparadata renamed to Crv3sfparadata +// Crvs3fparadata, changed ( Proj from GLIST removed) +// 20180508 +// Sfbdparadata,... changed ( to Projpara(name3) ) +// 20180426 +// Sfbdparadata,... changed (.dat => .Rdata ) +// WriteCdata,ReadCdata => WritedataC,ReaddataC +// 2018.03.27 +// Start3d changed (for C) +// 2018.02.27 +// Sfbdpara,... changed ("Res=" made from fname) +// 2018.02.26 +// Sfcutparadata (renamed from Sfcutdata) changed +// 2018.02.24 +// Sfcutdata added +// 2018.02.23 +// Crvonsfparadata added +// Wireparadata added +// Skeletonparadata rechanged to old version +// 2018.02.22 +// Intersectcrvsf added (changed to R) +// Sdbdpradata,Crvsfparadata,Intersectcrvsf changed (title printing) +// 2018.02.20 +// Addpoints added +// PthiddenQ,Meetpoints debugged +// 2018.02.18 +// Sfbdparadata debuggded (OTHERPARTITION ) +// 2018.02.11 +// Sfbdparadata added +// 2018.01.04 +// Skeletonparadata(Skeletondatacindy) majorly changed +// 2017.10.23 +// Rotatedata3d, Translatedata3d debugged ([]) +// 2017.10.08 +// Bezier3,Putbezier3data,Mkbezierptcrv3d greatly changed +// 2017.10.07 +// Mkpointlist debugged +// Start3d,Ptseg3d, Setangle, Mkpointlist, Mkseq3d, Putpoint3d Skeleton..,Putbezier.. +// changed ( "=" removed from VLIST) +// 2017.09.18 +// SCIWR,SCIRE removed diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dr.cs b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dr.cs new file mode 100644 index 0000000000..956e726b43 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylib3dr.cs @@ -0,0 +1,5132 @@ +// 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[20190511] loaded"); + +//help:start(); + +////%Ketinit3d start//// +Ketinit3d():=Ketinit3d(1); +Ketinit3d(subflg):=( +//help:Ketinit3d(); +//help:Ketinit3d(0); + regional(ctr,tmp,tmp1,tmp2,tmp3,tmp4); + BezierNumber3=1; //15.02.28 // no ketjs on + if(!islist(BZLIST3), + BZLIST3=[]; //15.02.28 + , + tmp=apply(allpoints(),#.name); //190505 + 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; + ); // no ketjs off + SUBSCR=subflg; // no ketjs + // SUBSCR=0 // only ketjs + Setwindow("Msg=no"); + Addax(0); + TSIZE=10; + TSIZEZ=10; + ErrFlg=0; +); +////%Ketinit3d end//// + +////%Start3d start//// +Start3d():=Start3d([],[]); +Start3d(Arg):=( //190503from + regional(tmp); + tmp=select(Arg,indexof(#,"=")>0); + if(length(tmp)==0, + Start3d(Arg,[]); + , + Start3d([],Arg); + ); +); +Start3d(ptexception,optionjs):=(//190503to +//help:Start3d(); +//help:Start3d(["A","B"](exceptionptlist)); +//help:Start3d(optionjs=["Slider=n","Removept=[]"); + regional(xmn,xMx,ymn,yMx,pt,pt3,pt2, + xPos,yTh,yPh,Eps,tmp,tmp1,tmp2,tmp3,tmp4); + PTEXCEPTION=[]; + SLIDEFLG="Y"; + forall(optionjs, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="S", + SLIDEFLG=Toupper(substring(tmp_2,0,1)); + ); + if(tmp1=="R", + tmp2=tmp_2; + if(substring(tmp2,0,1)=="[",tmp2=substring(tmp2,1,length(tmp2)-1)); + tmp2=tokenize(tmp2,","); + REMOVEPTJS=concat(REMOVEPTJS,tmp2); + ); + ); + Setfiles(Namecdy); //180608 // no ketjs + ConstantListC=[[50,50],[5000,1500,500,200],[0.00001,0.01,0.1]]; // no ketjson + FuncListC=[]; + CommandListC=[]; //180531 + CutFunList=[];//180601 + EraseList=[];//180601 + ADDPACK=[]; //180606 // no ketjs off + GCLIST=[]; + GLIST=[]; // no ketjs on + FUNLIST=[]; + COM0thlist=[]; + COM1stlist=[]; + COM2ndlist=[]; // no ketjs off + SEG3dlist=[]; + OutFileList=[]; // no ketjs on + FigPdfList=[]; // 16.04.08 + ErrFlag=0; + OBJCMD=[]; // 161129from + OCNAME=Fhead; + OCOPTION=["m","v"];// 161129to //no ketjs off + KETJSOP=[]; //190129 + REMOVEPTJS=[]; SLIDEFLG="Y"; //190504 + KetcindyjsDataList=[]; //190511 + ArrowlineNumber=1; // 16.01.31 + ArrowheadNumber=1; + BezierNumber=1; //16.01.31 + BezierNumber3=1; //16.08.19 + Fnametex=Fhead+".tex"; // 15.04.06 //no ketjs on + FnameR=Fhead+".r"; + FnameRbody=Fhead+"body.r"; + Fnameout=Fhead+".txt"; // no ketjs off + Setwindow("Msg=no"); // 16.06.20from + tmp=round(4*SW.y)/4; + xPos=-5; yTh=tmp-0.5; yPh=tmp-1; +// if(SLIDEFLG=="Y", // only ketjs //190503from + Slider("TH",[xPos,yTh],[xPos+9,yTh],["Color=green"]); //190209 + Slider("FI",[xPos,yPh],[xPos+9,yPh],["Color=green"]); //190209 + 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 +// ); // only ketjs //190503to + tmp="Setangle(" //no ketjs on + +format((TH.x-xPos)*20,5)+"," + +format((FI.x-xPos)*40,5)+")"; + GLIST=append(GLIST,tmp); //no ketjs off + THETA=(TH.x-xPos)*20*pi/180; + PHI=(FI.x-xPos)*40*pi/180; // 16.06.20until + if(Ptselected(TH) % Ptselected(FI), //190505 + if(length(Ch)>0, + ChNum=Ch_(length(Ch)); + if(ChNum==0, ChNum=1); + , + ChNum=1; + ); + Ch=[0]; + ); + if(SUBSCR==1, // no ketjs on + 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]); + ); // no ketjs off + // for Presentation //17.07.01from //no ketjs on + 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.01to //no ketjs off + tmp=ptexception; //181106 + if(!islist(tmp),tmp=[tmp]); //190209 + PTEXCEPTION=concat(PTEXCEPTION,tmp); //190209 +// if(!islist(tmp),PTEXCEPTION=[tmp],PTEXCEPTION=tmp); + Ptseg3data(PTEXCEPTION);//16.08.23 +// PTEXCEPTION=ptexception; //180916 //190209[del] +); +////%Start3d end//// + +////%Setangle start//// +Setangle(angL):=Setangle(ang_1,ang_2);//180614 +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(" // no ketjs on + +format(theta,5)+","+format(phi,5)+")"; + GLIST=append(GLIST,tmp); //no ketjs off + if(length(VLIST)==0, // 16.06.20 + tmp=apply(allpoints(),#.name); //190505 + tmp4=remove(tmp,PTEXCEPTION); //190329 + forall(tmp4,pt, + tmp1=pt; + tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); + if(tmp!="z", + tmp=parse(tmp1+"z.xy"); //181028[2lines]; + pt3=Xyzcoord(pt.xy,tmp); + Defvar(tmp1+"3d",pt3); + pt2=Parapt(pt3); // 16.05.28from + Defvar(tmp1+"2d",pt2); // 16.05.28to + ); + ); + , + if(Ptselected(NE) % Ptselected(SW), //190505 + tmp4=apply(allpoints(),#.name); //190505 + tmp4=remove(tmp4,PTEXCEPTION); + forall(tmp4,pt, + tmp1=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=apply(allpoints(),#.name); //190505 + tmp4=remove(tmp,PTEXCEPTION); //180916 + forall(tmp4,pt, + tmp1=pt; + tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); + if(tmp!="z", + tmp2=parse(tmp1+"z"); + if(Ptselected(pt) % Ptselected(tmp2), + Defvar(tmp1+"2d",pt.xy); + tmp=parse(tmp1+"z.xy"); //181028[2lines] + tmp=Xyzcoord(pt.xy,tmp); + Defvar(tmp1+"3d",tmp); + ); + ); + ); + ); + ); + forall(Datalist3d(),#, + tmp1=replace(#,"3d","2d"); + tmp2=Projpara(#,["nodata"]); + tmp=tmp1+"="+textformat(tmp2,5)+";"; //190415 + parse(tmp); + ); + Ptseg3data(PTEXCEPTION); //180916 +); +////%Setangle end//// + +////%Getangle start//// +Getangle():=getangle(["Disp=y"]); //180613from +Getangle(option):=( + regional(tmp,tmp1,dispflg,eqL); + tmp=divoptions(option); + dispflg="Y"; + eqL=tmp_5; //181111 + forall(eqL, + tmp=Strsplit(#,"="); //181111(4lines) + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="D", + dispflg=Toupper(substring(tmp_2,0,1)); + ); + ); + tmp=[THETA*180/pi, PHI*180/pi]; + if(dispflg=="Y", + println(textformat(tmp,6)); + ); + tmp; //180607 +); //180613to +////%Getangle end//// + +////%Angleselected start//// +Angleselected():=IsAngle(); //180713 +//isAngle():=Isangle(); //180517 +////%Angleselected end//// + +////%Isangle start//// +Isangle():=Ptselected(TH)%Ptselected(FI); //180517 +////%Isangle end//// + +////%Changestyle3d start//// +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(islist(tmp), + 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); + ); + ); +); +////%Changestyle3d end//// + +////%Dist3d start//// +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=pt1.name,p1=pt1); //190505 + p1=parse(p1+"3d"); + ); + if(islist(pt2), + p2=pt2; + , + if(ispoint(pt2),p2=pt2.name,p2=pt2); //190505 + p2=parse(p2+"3d"); + ); + sqrt((p2-p1)*(p2-p1)); +); +////%Dist3d end//// + +////%Findangle start//// +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]; +); +////%Findangle end//// + +////%Cancoordpara start//// +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]; +); +////%Cancoordpara end//// + +////%Zparapt start//// +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); +); +////%Zparapt end//// + +////%Projcoordpara start//// +Projcoordpara(cc):=( +//help:Projcoordpara([3,1,2]); + regional(tmp); + tmp=Parapt(cc); + [tmp_1,tmp_2,Zparapt(cc)]; +); +////%Projcoordpara end//// + +////%Parapt start//// +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]; +); +////%Parapt end//// + +////%Parasubpt start//// +Parasubpt(pt):=( //181027 + regional(mv,dp,xs); + mv=NE.x-SW.x; + dp=pi/24; + xs=-pt_1*sin(PHI+dp)+pt_2*cos(PHI+dp); + [xs+mv,pt_3]; +); +////%Parasubpt end//// + +////%Parasubptlog start//// +Parasubptlog(pt):=( //181027 + regional(dp,xs); + dp=pi/24; + xs=-pt_1*sin(PHI+dp)+pt_2*cos(PHI+dp); + [xs,pt_3]; +); +////%Parasubptlog end//// + +////%Mainsubpt3d start//// +Mainsubpt3d(pm,psv):=( //181027 + regional(Eps,mv,dp,v,x,y,z); + // when Th neq 90, psv=ps_2, else psv=ps_1 + Eps=10^(-4); + mv=NE.x-SW.x; + dp=pi/24; + if(abs(cos(THETA))>Eps, + if(length(psv)>1,v=psv_2, v=psv); + x=(v*cos(PHI)*sin(THETA)-pm_1*sin(PHI)*cos(THETA)-pm_2*cos(PHI))/cos(THETA); + y=(v*sin(PHI)*sin(THETA)+pm_1*cos(PHI)*cos(THETA)-pm_2*sin(PHI))/cos(THETA); + z=v; + , + if(length(psv)>1,v=psv_1, v=psv); + x=(pm_1*cos(PHI+dp)-(v-mv)*cos(PHI))/sin(dp); + y=(pm_1*sin(PHI+dp)-(v-mv)*sin(PHI))/sin(dp); + z=pm_2; + ); + [x,y,z]; +); +////%Mainsubpt3d end//// + +////%Projcurve start//// +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; +); +////%Projcurve end//// + +////%Projpara start//// +Projpara(ptdata):=Projpara(ptdata,[]); +Projpara(ptdata,optionsorg):=( +//help:Projpara("sf3d1"); +//help:Projpara(options=["Msg=no"]); + regional(options,name2,name3,Ltype,Noflg,eqL,opcindy, + dtL,ptL,tmp,tmp1,Out,color,msgflg); + options=optionsorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + msgflg=0; //180602from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); //181111 + if(tmp=="M", + tmp=substring(tmp_2,0,1); + if(Toupper(tmp)=="Y", msgflg=1); + options=remove(options,[#]); + ); + );//180602to + Out=[]; + if(islist(ptdata),dtL=ptdata,dtL=[ptdata]); + forall(dtL,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, + if(msgflg==1,//180602from + println("generate projparadata "+name2); + );//180602to + tmp=name2+"="+textformat(ptL,5)+";"; //190415 + parse(tmp); + tmp=name2+"=Projpara("+name3+")"; + GLIST=append(GLIST,tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + ); + ); + if(length(Out)==1,Out=Out_1); + if(length(Out)==1,Out=Out_1); // 15.02.24 + tmp=[]; + forall(Out, + if(length(#)>0,tmp=append(tmp,#)); + ); + Out=tmp; + Out; +); +////%Projpara end//// + +////%Invparaptpp start//// +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=re(floor(ph)); //190505 + 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; +); +////%Invparaptpp end//// + +////%Invparapt start//// +Invparapt(pt,pd):=( + regional(tmp); + tmp=Invparaptpp(pt,pd); + tmp_1; +); +////%Invparapt end//// + +////%Subgraph start//// +Subgraph(name3,opcindy):=( //181029 + regional(name,crvL,sub2d,color,tmp,tmp1,tmp2); + name=replace("sub"+name3,"3d","2d"); + crvL=parse(name3); + if(Measuredepth(crvL)==1,crvL=[crvL]); + sub2d=[]; + forall(crvL,tmp1, + tmp2=[]; + forall(tmp1, + tmp2=append(tmp2,Parasubpt(#)); + ); + sub2d=append(sub2d,tmp2); + ); + tmp=name+"="+Textformat(sub2d,5)+";"; + parse(tmp); + GCLIST=append(GCLIST,[name,[0,1],opcindy]); //190127 + sub2d; +); +////%Subgraph end//// + +////%Spaceline start//// +Spaceline(ptlist):=Spaceline(ptlist,[]); // 16.02.22 from +Spaceline(Arg1,Arg2):=( + regional(name,tmp,tmp1,tmp2); + if(isstring(Arg1), + Spaceline(Arg1,Arg2,[]); + , + tmp=Arg1.name; //190505 + tmp=substring(tmp,1,length(tmp)-1); + name="-"+replace(tmp,",",""); + Spaceline(name,Arg1,Arg2); + ); +); // 16.02.22 to +Spaceline(nm,ptlistorg,optionorg):=( +//help:Spaceline("1",[[2,5,1],[4,2,3]]); +//help:Spaceline([A,B]); +//help:Spaceline(options=["Msg=y(n)"]); + regional(name2,name3,options,Out,tmp,tmp1,tmp2, + opstr,opcindy,Ltype,Noflg,eqL,ptlist, Msg,color); + ptlist=apply(ptlistorg,if(ispoint(#),parse(#.name+"3d"),#)); // 190505 + ptlist=apply(ptlist,if(isstring(#),parse(#),#)); //190330 + 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; + color=tmp_(length(tmp)-2); + 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+"="+Textformat(ptlist,6)+";"; //190330//190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+Textformat(tmp1,5)+";"; //190415 + 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.13to +// 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), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, //no ketjs on// 15.02.11 + Subgraph(name3,opcindy); + ); //no ketjs off + ); + ptlist; +); +////%Spaceline end//// + +////%Spacecurve start//// +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,color); + 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; + color=tmp_(length(tmp)-2); + 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+1); + if(Toupper(tmp1)=="N", + 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)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + 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), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + 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; +); +////%Spacecurve end//// + +////%Partcrv3d start//// +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=pA.name,tmp=pA); //190505 + 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=pB.name,tmp=pB); //190505 + 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_#,dts_#); //181028 + ); + Spaceline("-part3d"+nm,dt,options); +); +////%Partcrv3d end//// + +////%Joincrvs3d( start//// +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,color); + 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; + color=tmp_(length(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)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + 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), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + 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; +); +////%Joincrvs3d end//// + +////%Xyzax3data start//// +Xyzax3data(nm,Xrange,Yrange,Zrange):= + Xyzax3data(nm,Xrange,Yrange,Zrange,[]); +Xyzax3data(nm,Xrange,Yrange,Zrange,optionorg):=( +//help:Xyzax3data("","x=[-5,5]","y=[-5,5]","z=[-5,5]"); +//help:Xyzax3data(Options2=["a1,18","Osw"]); + regional(name2,name3,Out,tmp,tmp1,tmp2,ops,eqL,reL,strL,msgflg, + options,opstr,opcindy,Ltype,Noflg,Axname,Arrow,Origin,color); + name2="ax2d"+nm; + name3="ax3d"+nm; + options=optionorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + Axname=1; + Arrow=[]; // 190505 + 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=tokenize(tmp,","); //190505 + if(length(Arrow)==1,Arrow=append(Arrow,18)); + ); + ); + 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.14to + options=remove(options,reL); + options=remove(options,strL); + msgflg="Y"; //190506from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190506to + 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]; + tmp=["nodisp","Msg=n"]; + Spaceline("-axx3d"+nm,[Px,Qx],tmp); + Spaceline("-axy3d"+nm,[Py,Qy],tmp); + Spaceline("-axz3d"+nm,[Pz,Qz],tmp); + Out=[[Px,Qx],[Py,Qy],[Pz,Qz]]; + if(Axname>0, + Xyzaxparaname(Xrange,Yrange,Zrange,[Axname]); + ); + if(Noflg<3, + if(msgflg=="Y", + tmp="generate axes "+name3; + tmp=tmp+" : axx3d"+nm+",axy3d"+nm+",axz3d"+nm; + println(tmp); + ); + tmp="["+"axx3d"+nm+","+"axy3d"+nm+","; + tmp=tmp+"axz3d"+nm+"]"; + tmp=name3+"="+tmp; + parse(tmp); + tmp1=Projpara([name3],["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + 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), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(Noflg<1, // 16.08.14from + if(length(Arrow)==2, //190505from + tmp1=Parapt(Px); tmp2=Parapt(Qx); + ops=[Arrow_1,Arrow_2,"Line=n"]; + Lightarrowdata("ax1",[tmp2,tmp2-tmp1],ops); + tmp1=Parapt(Py); tmp2=Parapt(Qy); + Lightarrowdata("ax2",[tmp2,tmp2-tmp1],ops); + tmp1=Parapt(Pz); tmp2=Parapt(Qz); + Lightarrowdata("ax3",[tmp2,tmp2-tmp1],ops); + ); //190505to + if(length(Origin)>0, + Letter([Parapt([0,0,0]),Origin,"O"]); + ); + ); // 16.08.14until + if(SUBSCR==1, // 15.02.11 + Subgraph(name3,opcindy); //181029 + ); + ); + Out; +); +////%Xyzax3data end//// + +////%Xyzaxparaname start//// +Xyzaxparaname(Xrange,Yrange,Zrange):= + Xyzaxparaname(Xrange,Yrange,Zrange,[]); +Xyzaxparaname(Xrange,Yrange,Zrange,options):=( +//help:Xyzaxparaname("x=[-5,5]","y=[-5,5]","z=[-5,5]"); + 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*#); + ); + tmp1=Strsplit(Xrange,"="); + Xname=tmp1_1; + tmp=parse(tmp1_2); + px=[tmp_1,0,0]; qx=[tmp_2,0,0]; + tmp1=Strsplit(Yrange,"="); + Yname=tmp1_1; + tmp=parse(tmp1_2); + py=[0,tmp_1,0]; qy=[0,tmp_2,0]; + tmp1=Strsplit(Zrange,"="); + Zname=tmp1_1; + tmp=parse(tmp1_2); + pz=[0,0,tmp_1]; qz=[0,0,tmp_2]; + COM2ndlist=select(COM2ndlist,indexof(#,Dqq("$"+Xname+"$"))==0);//180608[3lines] + COM2ndlist=select(COM2ndlist,indexof(#,Dqq("$"+Yname+"$"))==0); + COM2ndlist=select(COM2ndlist,indexof(#,Dqq("$"+Zname+"$"))==0); + 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); + ); +); +////%Xyzaxparaname end//// + +////%Datalist3d start//// +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; +); +////%Datalist3d end//// + +////%Datalist2d start//// +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; +); +////%Datalist2d end//// + +////%Embed start//// +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,color); + 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; + color=tmp_(length(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)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + 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), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + 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; +); +////%Embed end//// + +////%Rotatepoint3d start//// +Rotate3pt(point,w1,w2):=Rotatepoint3d(point,w1,w2,[0,0,0]); +Rotate3pt(point,w1,w2,center):=Rotatepoint3d(point,w1,w2,center); +Rotatepoint3d(point,w1,w2):=Rotatepoint3d(point,w1,w2,[0,0,0]);//180809 +Rotatepoint3d(point,w1,w2,center):=( +//help:Rotatepoint3d(pt3d,[0,0,1],pi/2); +//help:Rotatepoint3d(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; +); +////%Rotatepoint3d end//// + +////%Rotatedata3d start//// +Rotatedata3d(nm,P3data,w1,w2):=Rotatedata3d(nm,P3data,w1,w2,[]); +Rotatedata3d(nm,P3data,w1,w2,options):=( +//help:Rotatedata3d("1",["sl3d1","sc3d2"],[0,0,1],pi/3); +//help:Rotatedata3d(options=[center,...]); + regional(name3,name2,center,pdata,Pd3,Pd,Out,tmp,tmp1, + Ltype,Noflg,opcindy,opstr,color); + name3="rot3d"+nm; + name2="rot2d"+nm; + center=[0,0,0]; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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=Rotatepoint3d(#,w1,w2,center); //180729 + Ans=append(Ans,tmp); + ); + Out=append(Out,Ans); + ); + Out=Flattenlist(Out); + if(length(Out)==1,Out=Out_1); + if(Noflg<3, + println("generate Rotatedata3d "+name3); + tmp=name3+"="+textformat(Out,5)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + parse(tmp); + tmp=Textformat(P3data,5); // 17.12.23 + tmp=RSform(tmp,1); //180602 + tmp=replace(tmp,Dq,"");//180808 +// tmp=replace(tmp,"[","list("); +// tmp=replace(tmp,"]",")"); + tmp=name3+"=Rotate3data("+tmp+","; + tmp=tmp+Textformat(w1,6)+","+Textformat(w2,6); + tmp=tmp+","+Textformat(center,6)+")";//180808 + GLIST=append(GLIST,tmp); + tmp=name2+"=Projpara("+name3+")"; + GLIST=append(GLIST,tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, // 15.02.11 + Subgraph(name3,opcindy); + ); + ); + Out; +); +////%Rotatedata3d end//// + +////%Translatepoint3d start//// +Translate3pt(point,w1):=Translatepoint3d(point,w1); +Translatepoint3d(point,w1):=( +//help:Translatepoint3d(pt3d,[1,2,3]); + 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; +); +////%Translatepoint3d end//// + +////%Translatedata3d start//// +Translatedata3d(nm,P3data,w1):=Translatedata3d(nm,P3data,w1,[]); +Translatedata3d(nm,P3data,w1,options):=( +//help:Translatedata3d("1",["sl3d1"],[1,2,3]); + regional(name3,name2,pdata,Pd3,Pd,Out,tmp,tmp1, + Ltype,Noflg,opcindy,color); + name3="tra3d"+nm; + name2="tra2d"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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=Translatepoint3d(#,w1); + Ans=append(Ans,tmp); + ); + Out=append(Out,Ans); + ); + Out=Flattenlist(Out); + if(length(Out)==1,Out=Out_1); + if(Noflg<3, + println("generate Translatedata3d "+name3); + tmp=name3+"="+textformat(Out,5)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + parse(tmp); + tmp=textformat(P3data,5); // 17.12.23 + tmp=RSform(tmp,1); // 180602 + tmp=replace(tmp,Dq,""); //180808 +// 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), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, // 15.02.11 + Subgraph(name3,opcindy); + ); + ); + Out; +); +////%Translatedata3d end//// + +////%Reflectpoint3d start//// +Reflect3pt(point,vecL):=Reflectpoint3d(point,vecL); +Reflectpoint3d(point,vecL):=( +//help:Reflectpoint3d(pt3d,[v1,v2,v3]); + 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; +); +////%Reflectpoint3d end//// + +////%Reflectdata3d start//// +Reflectdata3d(nm,P3data,vecL):=Reflectdata3d(nm,P3data,vecL,[]); +Reflectdata3d(nm,P3data,vecL,options):=( +//help:Reflectdata3d("1",["sl3d1"],[v1,v2,v3]); +//help:Reflectdata3d("1",["sl3d1"],[v1,v2]); +//help:Reflectdata3d("1",["sl3d1"],[v1]); + regional(name3,name2,pdata,Pd3,Pd,Out,tmp,tmp1, + Ltype,Noflg,opcindy,color); + name3="ref3d"+nm; + name2="ref2d"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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=Reflectpoint3d(#,vecL); + Ans=append(Ans,tmp); + ); + Out=append(Out,Ans); + ); + Out=Flattenlist(Out); + if(length(Out)==1,Out=Out_1); + if(Noflg<3, + println("generate Reflectdata3d "+name3); + tmp=name3+"="+textformat(Out,5)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + tmp=Textformat(P3data,5); // 17.12.23 + tmp=RSform(tmp,1); // 180602 + tmp=replace(tmp,Dq,""); //180807 +// tmp=text(P3data); +// tmp=replace(tmp,"[","list("); +// tmp=replace(tmp,"]",")"); + tmp=name3+"=Reflect3data("+tmp; + tmp=tmp+","+RSform(Textformat(vecL,5),2)+")"; + GLIST=append(GLIST,tmp); + tmp=name2+"=Projpara("+name3+")"; + GLIST=append(GLIST,tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, // 15.02.11 + Subgraph(name3,opcindy); + ); + ); + Out; +); +////%Reflectdata3d end//// + +// 180806 +////%Scalepoint3d start//// +Scale3pt(point,ratio,center):=Scalepoint3d(point,ratio,center); +Scalepoint3d(point,ratio):=Scalepoint3d(point,ratio,[0,0,0]);//180809 +Scalepoint3d(point,ratio,center):=( +//help:Scalepoint3d(A,[3,2,4]); +//help:Scalepoint3d(A,[3,2,4],[1,2,3]); + regional(ra1,ra2,ra3,X1,Y1,Z1,X2,Y2,Z2,Cx,Cy,Cz); + X1=point_1; Y1=point_2; Z1=point_3; + if(length(ratio)==1, //1808from + ra1=ratio; ra2=ratio; ra3=ratio; + , + ra1=ratio_1; ra2=ratio_2; ra3=ratio_3; + );//1808to + Cx=center_1; Cy=center_2; Cz=center_3; + X2=Cx+ra1*(X1-Cx); + Y2=Cy+ra2*(Y1-Cy); + Z2=Cz+ra3*(Z1-Cz); + [X2,Y2,Z2]; +); +////%Scalepoint3d end//// + +// 180808 +////%Scaledata3d start//// +Scaledata3d(nm,P3data,ratio):=Scaledata3d(nm,P3data,ratio,[]); +Scaledata3d(nm,P3data,ratio,options):=( +//help:Scaledata3d("1",["sl3d1"],[v1,v2,v3]); + regional(name3,name2,pdata,Pd3,Pd,Out,tmp,tmp1, + reL,Ltype,Noflg,opcindy,color,center); + name3="ref3d"+nm; + name2="ref2d"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + reL=tmp_6; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + center=[0,0,0]; + if(length(reL)>0, + center=reL_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=Scalepoint3d(#,ratio,center); + Ans=append(Ans,tmp); + ); + Out=append(Out,Ans); + ); + Out=Flattenlist(Out); + if(length(Out)==1,Out=Out_1); + if(Noflg<3, + println("generate Scaledata3d "+name3); + tmp=name3+"="+textformat(Out,5)+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + tmp=Textformat(P3data,5); // 17.12.23 + tmp=RSform(tmp,1); // 180602 + tmp=replace(tmp,Dq,""); //180807 +// tmp=text(P3data); +// tmp=replace(tmp,"[","list("); +// tmp=replace(tmp,"]",")"); + tmp=name3+"=Scale3data("+tmp; + tmp=tmp+","+Textformat(ratio,5); + tmp=tmp+","+Textformat(center,5)+")"; + GLIST=append(GLIST,tmp); + tmp=name2+"=Projpara("+name3+")"; + GLIST=append(GLIST,tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, // 15.02.11 + Subgraph(name3,opcindy); + ); + ); + Out; +); +////%Scaledata3d end//// + +////%Xyzcoord start//// +Xyzcoord(pm,ps):=Xyzcoord(pm_1,pm_2,ps); //181028from +Xyzcoord(X,Y,ps):=( +//help:Xyzcoord(A.x,A.y,Az.y); + regional(pt3d); + pt3d=Mainsubpt3d([X,Y],ps); + pt3d;//181028to +); +////%Xyzcoord end//// + +////%Putoncurve3d start//// +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); //181028[2lines] + pt=Xyzcoord(pt,tmp2); // 15.03.13 + tmp=name+"z.xy="+textformat(tmp2,5)+";"; //190415 + parse(tmp); + // VLIST=select(VLIST,#_1!=name+"3d"); + Defvar(name+"3d",pt); +); +////%Putoncurve3d end//// + +////%Mkpointlist start//// +Mkpointlist():=Mkpointlist([]); //16.11.12 +Mkpointlist(options):=( //181030 + regional(Eps,dp,mv,pos,worklist,plist,pt,ptstr,pt3,ptz,par, + tmp,tmp1,tmp2,tmp3,tmp4,p1,p2,flg); + dp=pi/24; + mv=NE.x-SW.x; + Eps=10^(-4); + pos=[NE.x+1,NE.y+0.1]; + worklist=Workprocess(); //181030 + plist=select(worklist,length(#_3)!=2); + plist=apply(plist,#_1); + plist=remove(plist,PTEXCEPTION); + tmp=apply(VLIST,#_1);//181029from + tmp=select(tmp,indexof(#,"3d")>0); + tmp2=apply(tmp,replace(#,"3d","")); + forall(tmp2,ptstr, + if(!contains(plist,ptstr), + tmp=select(VLIST, + (#_1==pt+"3d")%(#_1==pt+"2d")%(#_1==pt+"fix")); + VLIST=remove(VLIST,tmp); + ); + ); //181029to + if(SUBSCR==0,plist=[]); + forall(plist,ptstr, + pt=parse(ptstr); + inspect(pt,"ptsize",3); + inspect(pt,"color",2); + inspect(pt,"textsize",TSIZE); + ptz=pt.name+"z"; //190505 + tmp=Finddef(pt); + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 + if(length(tmp)==0, + tmp=parse(ptz); //181108from + if(ispoint(tmp), + pt3=Mainsubpt3d(pt.xy,tmp.xy); //181108to + , + if(abs(cos(THETA))>Eps,//181028from + tmp1=Mainsubpt3d(pt.xy,0); + tmp=Parasubpt(tmp1); + Putpoint(ptz,tmp,[tmp_1,parse(ptz+".y")]); + pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); + , + if(abs(sin(PHI))>abs(cos(PHI)), //181029from + tmp=Parasubpt([-pt.x/sin(PHI),0,pt.y]); + , + tmp=Parasubpt([0,pt.x/cos(PHI),pt.y]); + ); + Putpoint(ptz,tmp,[parse(ptz+".x"),pt.y]);//181029t + pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); + ); + ); //181028to + Defvar(pt.name+"3d",pt3); //190505 + Defvar(pt.name+"fix",0); //190505 + ); + flg=0; + if(isstring(ptz),ptz=parse(ptz));//181029from + inspect(ptz,"ptsize",3); + inspect(ptz,"color",3); + inspect(ptz,"textsize",TSIZEZ);//181029to + if(Ptselected(pt), + if(parse(pt.name+"fix")!=1, //190505 + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 + tmp1=tmp_1_2; + pt3=Mainsubpt3d(pt.xy,ptz.xy); //181029 + Putpoint(ptz.name,Parasubpt(pt3)); + if(Norm(tmp1-pt3)>Eps, + Defvar(pt.name+"3d",pt3); //190505 + ); + flg=1; + ); + ); + if(Ptselected(ptz),//181108from + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 + tmp1=tmp_1_2; + tmp=Parasubpt(tmp1); //181108from + if(abs(cos(THETA))>Eps, + tmp=tptz.name+".x="+format(tmp_1,6)+";"; //190505 + parse(tmp); + tmp=Parapt([tmp1_1,tmp1_2,ptz.y]); + Putpoint(pt.name,tmp); //190505 + , + tmp=ptz.name+".y="+format(tmp_2,6)+";"; //190505 + parse(tmp); + if(abs(sin(PHI+dp))>abs(cos(PHI+dp)), //181108 + tmp=-(ptz.x-mv-tmp1_2*cos(PHI+dp))/sin(PHI+dp); + tmp=Parapt([tmp,tmp1_2,tmp1_3]); + , + tmp=(ptz.x-mv+tmp1_1*sin(PHI+dp))/cos(PHI+dp); //181109pm + tmp=Parapt([tmp1_1,tmp,tmp1_3]); + ); + Putpoint(pt.name,tmp); //190505 + ); + pt3=Mainsubpt3d(pt.xy,ptz.xy); + Defvar(pt.name+"3d",pt3); //190505 + flg=2; + ); + if(Ptselected(TH) % Ptselected(FI), //181029 + tmp=select(VLIST,#_1==pt.name+"3d"); //190505 + if(length(tmp)>0, //17.10.07 + tmp1=Parapt(tmp_1_2); + Putpoint(pt.name,tmp1); //190505 + tmp2=Parasubpt(tmp_1_2);//181027[2lines] + Putpoint(ptz.name,tmp2); //190505 + flg=3; + ); //17.10.07 + ); + if(flg==0, //181030from + pt3=Mainsubpt3d(pt.xy,ptz.xy); + Defvar(pt.name+"3d",pt3); //190505 + ); //181030to + if(Ptselected(pt) % Ptselected(ptz), + drawtext(pos,pt3.xy,size->12); // no ketjs //190505 + ); + if(!contains(["p","q"],pt.name), //190505 + ptL=append(ptL,pt); + ); + ); +); +////%Mkpointlist end//// + +////%Mkseg3d start//// +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 + ); + ); + ); + if(length(parse(name))>0, //190401 + 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+"="+tmp1.name; //190505 + parse(tmp); + ); + segL; +); +////%Mkseg3d end//// + +////%Ptseg3data start//// +Ptseg3data():=Ptseg3data([]); +//help:Ptseg3data(); +//help:Ptseg3data([A,B]); +Ptseg3data(options):=( + regional(pt,ptz,pt3,plist,plistz,tmp,tmp1,tmp2); + tmp=remove(allpoints(),options); + tmp=remove(tmp,[SW,NE,TH,FI]); + plist=select(tmp,indexof(#.name,"z")==0); + plistz=select(tmp,indexof(#.name,"z")>0); + if(Ptselected(TH) % Ptselected(FI), + forall(plist,pt, + tmp=select(plistz,#.name==pt.name+"z"); + if(length(tmp)>0, + ptz=tmp_1; + , + ptz=[]; + ); + tmp=select(VLIST,#_1==pt.name+"3d"); //190506 + if(length(tmp)>0, + pt3=tmp_1_2; + pt.xy=Parapt(pt3); + ptz.xy=Parasubpt(pt3); + , + pt3=Mainsubpt3d(pt.xy,ptz.xy); //181107[2lines] + Defvar(pt+"3d",pt3); + ); + ); + , + Mkpointlist(options); // 16.12.18 + ); + forall(alllines(), // no ketjs on + #.color=[0.5,0.5,1]; + ); + SEG3dlist=Mkseg3d(options); + SEG3dlist; // no ketjs off +); +////%Ptseg3data end//// + +////%Putonseg3d start//// +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; + ); + if(ispoint(pt1), //181030from + Putonseg(name,pt1,pt2,[par]); + , + Putonseg(name,Parapt(pt1),Parapt(pt2),[par]); + ); //181030from + 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); + if(ispoint(pt1), + pn1=pt1.name; //190505 + pn2=pt2.name; //190505 + tmp1=replace("PCz.xy=PAz.xy+|PC-PA|/|PB-PA|*(PBz.xy-PAz.xy)","PC",name); + tmp1=replace(tmp1,"PA",pn1); + tmp1=replace(tmp1,"PB",pn2)+";"; + parse(tmp1); + , + pn1=Textformat(Parapt(pt1),5); //181030from + pn2=Textformat(Parapt(pt2),5); + tmp1=replace("PCz.xy=PAs+Norm(PC-PAm)/Norm(PBm-PAm)*(PBs-PAs)","PC",name); + tmp1=replace(tmp1,"PAm",pn1); + tmp1=replace(tmp1,"PBm",pn2); + pn1=Textformat(Parasubpt(pt1),5); //181030from + pn2=Textformat(Parasubpt(pt2),5); + tmp1=replace(tmp1,"PAs",pn1); + tmp1=replace(tmp1,"PBs",pn2)+";"; //190415 + parse(tmp1); + ); + tmp1=parse(name+".xy"); //181028[3lines] + tmp2=parse(name+"z.xy"); + tmp=Xyzcoord(tmp1,tmp2); + Defvar(name+"3d",tmp); +); +////%Putonseg3d end//// + +////%Putpoint3d start//// +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 until + nn=length(ptslist)/2; + forall(1..nn,kk, // 16.08.19from + tmp1=ptslist_(2*kk-1); + pt3=ptslist_(2*kk); // 16.08.19until + 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.xy,parse(tmp1+"z.xy")); //181028 + , + tmp=pt3; + ); + Defvar(tmp1+"3d",tmp); + , + Defvar(tmp1+"3d",pt3); + ); // 16.05.26until + 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"; + Putpoint(tmp2,Parasubpt(pt3)); + 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); + ); +); +////%Putpoint3d end//// + +////%Fixpoint3d start//// +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); + ); +); +////%Fixpoint3d end//// + +////%Letter3d start//// +Letter3d(dtlist):=Letter3d(dtlist,[]); //181218from +Letter3d(pt3d,dir,name):=Letter3d([pt3d,dir,name],[]); +Letter3d(pt3d,dir,name,options):=Letter3d([pt3d,dir,name],options); +Letter3d(dtlist,options):=( +//help:Letter3d(point3d,,direction,name); +//help:Letter3d([point3d,,direction,name],options]); + regional(dt,nall,jj); + dt=dtlist; + if(mod(length(dt),3)!=0, + println(" Improper data"); + , + nall=length(dt)/3; + forall(1..nall, + jj=#*3-2; + tmp=dt_jj; + if(ispoint(tmp),tmp=parse(tmp.name+"3d")); //190505 + dt_jj=Parapt(tmp); + ); + Letter(dt,options); + ); +); //181218to +////%Letter3d end//// + +////%Expr3d start//// +Expr3d(dtlist):=Expr3d(dtlist,[]); //181218from +Expr3d(pt3d,dir,name):=Expr3d([pt3d,dir,name],[]); //181218from +Expr3d(pt3d,dir,name,options):=Expr3d([pt3d,dir,name],options); +Expr3d(dtlist,options):=( +//help:Expr3d(point3d,,direction,name); +//help:Expr3d([point3d,,direction,name],options]); + regional(dt,nall,jj); + dt=dtlist; + if(mod(length(dt),3)!=0, + println(" Improper data"); + , + nall=length(dt)/3; + forall(1..nall, + jj=#*3-2; + tmp=dt_jj; + if(ispoint(tmp),tmp=parse(tmp.name+"3d")); //190505 + dt_jj=Parapt(tmp); + ); + Expr(dt,options); + ); +); //181218to +////%Expr3d end//// + +////%Perppt start//// +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,["Screen=n"]); //181031 + 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; +); +////%Perppt end//// + +////%Perpplane start//// +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",[1,3,2]); +//help:Perpplane(option=["Put/Draw"]); + 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); + if(indexof(ptstr,"3d")==0, //181107from + pP=parse(ptstr+"3d"); + , + pP=parse(ptstr); + ); //181107to + 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(name,"-"); + tmp1=substring(name,0,tmp-1); + tmp2=substring(name,tmp,length(name)); + 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", + Putpoint3d([tmp1,pA,tmp2,pB],["fix"]); + , + Defvar(tmp1+"3d",pA); //181107[2lines] + Defvar(tmp2+"3d",pB); + ); + if(tmp=="D", + Drawpoint3d(pA); + Drawpoint3d(pB); + ); + [pA,pB]; +); +////%Perpplane end//// + +////%Drawpoint3d start//// +Drawpoint3d(pt3):=Drawpoint3d(pt3,["Color=green"]); +Drawpoint3d(pt3,options):=( +//help:Drawpoint3d(pt3d); +//help:Drawpoint3d(options=["Color=(green)"]); + regional(ptL,tmp,tmp1,tmp2); + tmp=Divoptions(options); + opcindy=tmp_(length(tmp)); + if(Measuredepth(pt3)==0,ptL=[pt3],ptL=pt3); + forall(ptL, + tmp="draw("+Textformat(Parapt(#),6)+opcindy+");"; + parse(tmp); + if(SUBSCR==1, + tmp="draw("+Textformat(Parasubpt(#),6)+opcindy+");"; + parse(tmp); + ); + ); +); +////%Drawpoint3d end//// + +////%Pointdata3d start//// +Pointdata3d(nm,pt3):=Pointdata3d(nm,pt3,[]);//181017from +Pointdata3d(nm,pt3,options):=( //181017from +//help:Pointdata3d("1",pt3dlist,options); + regional(pt3L,pt2L,tmp); + if(Measuredepth(pt3)==0,pt3L=[pt3],pt3L=pt3); + pt2L=apply(pt3L,Parapt(#)); + Pointdata("2d"+nm,pt2L,append(options,"Disp=n")); + tmp="pt3d"+nm+"="+format(pt3L,6)+";"; //190415 + parse(tmp); +); //181017to +////%Pointdata3d end//// + +////%Putaxes3d start//// +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.02funtil +); +////%Putaxes3d end//// + +////%IntersectsgpL start//// +IntersectsgpL(name,sgstr,pLstr):= + IntersectsgpL(name,sgstr,pLstr,["ie"]); +IntersectsgpL(name,sgstr,pLstr,optionsorg):=( +//help:IntersectsgpL("R","P-Q","A-B-C"); +//help:IntersectsgpL("pR","pP-pQ","A-B-C"); +//help:IntersectsgpL(options=["draw(put)","ie","Screen=n"+pointoptions,"Color="]); + regional(options,eqL, strL,ptflg,out,pP,pQ,pA,pB,pC,pH,pK,pR,tseg,tt,ss,Eps, + flg,scrflg,nvec,tmp,tmp1,tmp2,tmp3,tmp4); + options=optionsorg; //181026from + tmp1=""; + if(isstring(options), + tmp1=options; + options=[]; + ); + options=remove(options,["draw","Draw"]); + tmp=Divoptions(options); + eqL=tmp_5; + strL=tmp_7; + if(length(tmp1)>0, + strL=append(strL,tmp1); + ); + ptflg=["D","ie"]; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="P", + ptflg_1="P"; + ); + if((tmp=="I")%(tmp=="E"), + if(length(#)==1, + ptflg_2=#+"e"; + , + ptflg_2=#; + ); + ); + ); + options=remove(options,strL); + scrflg="Y"; //181031from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); //181111 + if(tmp1=="S", + scrflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //181031to + tmp=select(options,substring(#,0,1)=="C"); + if(length(tmp)==0,options=append(options,"Color=green"));//181026to + 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=(Reflectpoint3d(pP,[pA,pB,pC])+pP)/2; //180811[2lines] + pK=(Reflectpoint3d(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=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); + tmp1=(tseg>-Eps)&(tseg<1+Eps); //181027from + tmp2=(ss>-Eps)&(ss<1+Eps)&(tt>-Eps)&(tt<1+Eps)&(ss+tt<1+Eps);//181029 + out=[pR,tmp1,tmp2,tseg,ss,tt]; //181027to + tmp=ptflg_2; + tmp1=(tmp1)%(substring(tmp,0,1)=="i"); //190114 + tmp2=(tmp2)%(substring(tmp,1,2)=="e"); + if(tmp1&tmp2&(scrflg=="Y"), //181031 + if(ptflg_1=="P", //181025 + Putpoint3d([name,pR],"fix"); + , + Drawpoint3d(pR,options); + tmp=name; //190401from + if(indexof(name,"3d")==0, + tmp=name+"3d"; + ); + tmp=tmp+"="+Textformat(pR,6)+";"; //190415 + parse(tmp); //190401to + ); + ); + , + println(" "+sgstr+" and "+pLstr+" may be parallel");//181025to + out=[[],false,false]; //181029 + ); + out; +); +////%IntersectsgpL end//// + +////%Bezier3d start//// +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):=( //17.10.08 greatly changed + regional(name,name3,name2,tmp,tmp1,tmp2, + Ltype,Noflg,opstr,eqL,Num,ii,knt,ctr,out,color); + name="bz"+nm; + name3="bz3d"+nm; + name2="bz2d"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + Num=20; + forall(eqL, + tmp=indexof(#,"="); + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="N", + Num=parse(tmp2); + ); + ); + 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")); + GLIST=GLIST_(1..(length(GLIST)-2)); + 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); + tmp=name3+"="+tmp1+";"; //190415 + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+textformat(tmp1,5)+";"; //190415 + parse(tmp); + ptlist=apply(ptlistorg,#+"3d"); + ptlist=RSform(text(ptlist),1); + ctrlist=[]; + forall(1..(length(ctrlistorg)/2), + tmp=[ctrlistorg_(2*#-1),ctrlistorg_(2*#)]; + tmp=apply(tmp,#+"3d"); + ctrlist=append(ctrlist,tmp); + ); + ctrlist=RSform(text(ctrlist),0); + tmp=name3+"=Bezier("+ptlist+","+ctrlist+","+Dq+"Num="+text(Num)+Dq+")"; + GLIST=append(GLIST,tmp); + tmp=name2+"=Projpara("+name3+")"; + GLIST=append(GLIST,tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, // 15.02.11 + Subgraph(name3,opcindy); + ); + ); + out; +); +////%Bezier3d end//// + +////%Putbezier3data start//// +Putbezier3data(name,pt3Lorg):=Putbezier3data(name,pt3Lorg,[]); +Putbezier3data(name,pt3Lorg,options):=( // 17.10.08 greatly changed + 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 + 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 + Putpoint3d([tmp1,tmp2]); + ctrpts=append(ctrpts,tmp1); + tmp1=name+numstr+"q"; + tmp3=(pt3L_(nn-1)+2*pt3L_nn)/3; + VLIST=select(VLIST,#_1!=tmp1+"3d"); + 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.19until + Putpoint3d([tmp1,tmp2]); + ctrpts=append(ctrpts,tmp1); + ); + ); + ctrpts; +); +////%Putbezier3data end//// + +////%Mkbezierptcrv3d start//// +Mkbezierptcrv3d(ptdata):=Mkbezierptcrv3(ptdata); +Mkbezierptcrv3d(ptdata,options):=Mkbezierptcrv3(ptdata,options); +//help:Mkbezierptcrv3d(["A","B","C","D"]); +Mkbezierptcrv3(ptdata):=Mkbezierptcrv3(ptdata,[]); +Mkbezierptcrv3(ptdata,options):=( //17.10.08 greatly changed + regional(Eps,name,bz,pt,p1,p2,p13d,p23d,pt3, + Out,tt,pos,tmp,tmp1,tmp2); + Eps=10^(-4); + pos=[NE.x+1,NE.y]; + Out=[]; + tmp=re(floor((BezierNumber3-1)/26)); //190505 // 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,ptdata,options); + Bezier3(name,ptdata,tmp2,options); + Out=append(Out,tmp2); + BezierNumber3=BezierNumber3+1; + Out; +); +////%Mkbezierptcrv3d end//// + +//////////old version /////////////////////////////// + +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]; +); + +//////////new version /////////////////////////////// +////%Readobj start//// +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]; +); +////%Readobj end//// + +////%Concatobj start//// +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 until + ); + 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]; +); +////%Concatobj end//// + +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(tmp1.name+"3d"); //190505 + ); + 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); +); + +); //end of skip + +////%VertexEdgeFace start//// //190502 +VertexEdgeFace(nm,vfnL):=Vertexedgeface(nm,vfnL,[]); +VertexEdgeFace(nm,vfnLorg,optionorg):=Vertexedgeface(nm,vfnLorg,optionorg); +////%VertexEdgeFace start//// + +////%Vertexedgeface start//// +Vertexedgeface(nm,vfnL):=Vertexedgeface(nm,vfnL,[]); // 16.02.10 +Vertexedgeface(nm,vfnLorg,optionorg):=( +//help:Vertexedgeface("1",[vL,fnL]); +//help:Vertexedgeface("1",["A","B","C"]); +//help:Vertexedgeface(options=["Vtx=n(y)" ',"Pt=fix") ,"Edg=n(y)","Label=8(/0)"]); + regional(name3,namev,namee,namef,vfnL,options,Noflg,eqL,strL, Lsize,msgflg, + Eps,vL,eL,enL,face,edge,vtx,vname,fixflg,vtxflg, edgflg,dispflg,tmp,tmp1,tmp2); + Eps=10^(-5); + 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.19until + tmp=Divoptions(options); + Noflg=tmp_2; + eqL=tmp_5; + strL=tmp_7; + fixflg=1; + vtxflg="N"; //180905 + edgflg="N"; + dispflg=1; //181106 + Lsize="8"; //190331 + msgflg="Y"; //190506 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=Toupper(substring(tmp_2,0,1)); + if(tmp1=="P", + if(tmp2=="F", fixflg=0); + options=remove(options,[#]); + ); + if(tmp1=="V", //180905from + vtxflg=tmp2; + options=remove(options,[#]); + ); //180905to + if(tmp1=="E", + edgflg=tmp2; + options=remove(options,[#]); + ); + if(tmp1=="L", //190331from + Lsize=tmp_2; + if(Lsize=="0",dispflg=0); //190502 + options=remove(options,[#]); + ); //190331to + if(tmp1=="M", //190506from + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); //190506to + ); + forall(strL, + if(Toupper(#)=="FREE", + fixflg=0; + options=remove(options,[#]); + ); + ); + tmp=select(allpoints(),indexof(#.name,"z")==0); //190506from + tmp1=remove(tmp,[SW,NE,TH,FI]); + 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(vtx.name+"3d"); //190506 + vname=vtx.name; + , + tmp=select(tmp1,|#.xy-Parapt(vtx)|<Eps); + if(length(tmp)>0, + tmp=tmp_1; + vname=tmp.name; + , + vname="V"+nm+text(#); //181212 + ); //190506to + if(vtxflg=="Y", + if(fixflg==1, + Putpoint3d([vname,vtx],"fix"); + , + Putpoint3d([vname,vtx]); + ); + , + tmp=vname+"3d="+format(vtx,6)+";"; //190415 + parse(tmp); + Defvar(vname+"3d",parse(vname+"3d")); + tmp=vname+"2d=Parapt("+vname+"3d);"; //190415 + parse(tmp); + Defvar(vname+"2d",parse(vname+"2d")); + if(dispflg==1, //181106 + tmp="drawtext(parse(vname+"+Dqq("2d")+"),vname,size->"; //190331 + parse(tmp+Lsize+");"); //190331 + draw(parse(vname+"2d"),pointsize->3,color->[0,1,0]); //190128 + ); + ); //180905to + ); + vL=append(vL,vname); // 16.02.10 until + ); + 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=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=="N", + 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; + tmp=replace(tmp,"V","v"); + create([tmp],"Segment",[parse(tmp1),parse(tmp2)]); + enL=append(enL,tmp+"3d");//16.02.29 + ); + ); + if(Noflg<2, + if(msgflg=="Y", + println("generate "+namev+","+namee+","+namef); + ); + ); + tmp1=""; + forall(enL, + tmp1=tmp1+Dq+#+Dq+","; + ); + tmp1=substring(tmp1,0,length(tmp1)-1); + tmp=namee+"=["+tmp1+"];"; //190415 + 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+"];"; //190415 + parse(tmp); + tmp1=replace(tmp1,Dq,""); + tmp=namev+"=list("+tmp1+")"; + GLIST=append(GLIST,tmp); + tmp1=Textformat(vfnL_2,6); + tmp1=substring(tmp1,1,length(tmp1)-1); + tmp=namef+"=["+tmp1+"];"; + parse(tmp); + tmp=namef+"=list("+tmp1+")"; + GLIST=append(GLIST,tmp); + ); + [namev,namee,namef]; +); +////%Vertexedgeface end//// + +////%Phparadata start//// +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,color); + 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; + color=tmp_(length(tmp)-2); + 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 until + 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(Noflg<2, + if(isstring(Ltype), + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + , + 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]); + ); + ); +); +////%Phparadata end//// + +////%Nohiddenseg start//// +Nohiddenseg(seg,rng,triang,Eps):=( +// help:Nohiddenseg("1",seg1,[0,1],["v1","v2","v3"]); + regional(pA3,pB3,pC3,pA,pB,pC,sg1,sg2,ss1,ss2,parL,flgL,flg1,flg2, + veB,veC,sgnoh,sghid,added,tmp,tmp1,tmp2,tmp3,tmp4,tmp5); +// Eps=10^(-2);//180815 + sgnoh=[0,1]; + pA3=triang_1; //180815from + if(isstring(pA3), + if(indexof(pA3,"3d")==0,pA3=pA3+"3d"); + pA3=parse(pA3); + ); + pB3=triang_2; + if(isstring(pB3), + if(indexof(pB3,"3d")==0,pB3=pB3+"3d"); + pB3=parse(pB3); + ); + pC3=triang_3; + if(isstring(pC3), + if(indexof(pC3,"3d")==0,pC3=pC3+"3d"); + pC3=parse(pC3); + ); //180815to + pA=Parapt(pA3); + pB=Parapt(pB3); + 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); + 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],[pA3,pB3,pC3],["Screen=n"]);//181031from + if(tmp_2&tmp_3, + tmp1=select(parL,abs(tmp_4-#)<Eps); + if(length(tmp1)==0, + parL=sort(append(parL,tmp_4)); + ); + );//181031to + ); + flgL=[]; + forall(parL, + tmp1=sg1+#*(sg2-sg1); + tmp=Projcoordpara(tmp1); + tmp_3=tmp_3+1; + tmp2=Cancoordpara(tmp); + tmp=IntersectsgpL("",[tmp1,tmp2],[pA3,pB3,pC3],["Screen=n"]);//181031 + 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; +); +////%Nohiddenseg end//// + +////%Nohiddensegs start//// +Nohiddensegs(seg,range,face,Eps):=( //190331 + regional(rng,vtx,out,ra,rb,tmp,tmp1,tmp2); + 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,Eps); + 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; +); +////%Nohiddensegs end//// + +////%Nohiddenbyfaces start//// +Nohiddenbyfaces(nm,faceL):= + Nohiddenbyfaces(nm,Datalist3d(),faceL,[],["do"]); +Nohiddenbyfaces(nm,Arg1,Arg2):=( //190331 + regional(tmp1,tmp2,tmp3,segL,faceL,options); + tmp1=select(Arg2,indexof(#,"=")>0); //190401from + tmp2=select(Arg2,indexof(#,",")>0); + tmp3=select(Arg2,length(#)<=2); + if(length(tmp1)+length(tmp2)+length(tmp3)==0, //190401to + segL=Arg1; + faceL=Arg2; + options=[]; + , + segL=Datalist3d(); + faceL=Arg1; + options=Arg2; + ); + Nohiddenbyfaces(nm,segL,faceL,options,["do"]); +); +//Nohiddenbyfaces(nm,segL,faceL,options):=( //190331 +Nohiddenbyfaces(nm,Arg1,Arg2,Arg3):=( //190413from + if(islist(Arg1), + Nohiddenbyfaces(nm,Arg1,Arg2,Arg3,["do"]); + , + Nohiddenbyfaces(nm,Datalist3d(),Arg1,Arg2,Arg3); + ); +); //190413to +Nohiddenbyfaces(nm,segLorg,faceLorg,optionorg,optionsh):=(//190331 +//help:Nohiddenbyfaces("1",["phf3d1"]); +//help:Nohiddenbyfaces("1",["ax3d"],["phf3d1"]); +//help:Nohiddenbyfaces("1",["ax3d","phe3d1"],["phv3d1"]); +//help:Nohiddenbyfaces(options=["dr","Eps=10^(-2)"]); +//help:Nohiddenbyfaces(optionsh=["do"]); + regional(Eps,namen,nameh,options,segL,faceL,rng,vtxL,msgflg, + ctr,tmp,tmp1,tmp2,tmp3,tmp4,Ltype,Noflg,eqL,color,frnL,frhL); + namen="frn"+nm; + nameh="frh"+nm; + options=optionorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + Eps=10^(-2); + msgflg="Y"; + forall(eqL, //180815from + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="E", + Eps=parse(tmp_2); + options=remove(options,[#]); + ); + if(tmp1=="M", //190506from + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); //190506to + );//180815to + tmp1=segLorg; //190331from + if(!islist(tmp1),tmp1=[tmp1]); + Changestyle3d(tmp1,["nodisp"]); + segL=[]; + forall(tmp1,tmp4, // 190401[seg=>tmp4] + if(isstring(tmp4), + tmp3=parse(tmp4); + if(MeasureDepth(tmp3)==1,tmp3=[tmp3]); //190401 + tmp2=[]; + forall(tmp3, + if(isstring(#),tmp=parse(#),tmp=#); + tmp2=append(tmp2,tmp); + ); + , + tmp2=[#]; + ); + segL=concat(segL,tmp2); + ); + tmp1=faceLorg; + if(!islist(tmp1),tmp1=[tmp1]); + faceL=[]; + forall(tmp1,tmp4, // 190401[face=>tmp4] + if(isstring(tmp4), + tmp2=parse(tmp4); + if(indexof(tmp4,"phf")>0, + tmp=replace(tmp4,"phf","phv"); + vtx=parse(tmp); + vtx=apply(vtx,parse(#)); + tmp2=apply(tmp2,vtx_#); + , + tmp2=[tmp2]; //190401 + ); + , + tmp2=tmp4; + ); + faceL=concat(faceL,tmp2); + ); //190331to + ctr=1; + frnL=[]; + frhL=[]; + forall(segL,seg, + rng=[0,1]; + forall(faceL,face, + rng=Nohiddensegs(seg,rng,face,Eps); + ); + 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=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); + tmp=select(optionsh,indexof(#,"=")>0); //180815from + tmp=remove(optionsh,tmp); + if(length(tmp)==0,tmp=append(optionsh,"do")); //180815to + 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)+";"; //190415 + parse(tmp); + tmp1=apply(frhL,Dq+#+Dq); + tmp="frh3d"+nm+"="+text(tmp1)+";"; //190415 + parse(tmp); + if(msgflg=="Y", + println("generate "+"frn3d"+nm+",frh3d"+nm+""); //190331 + ); + [frnL,frhL]; //181106 +); +////%Nohiddenbyfaces end//// + +////%Faceremovaldata start//// +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,color); + 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; + color=tmp_(length(tmp)-2); + 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(Noflg<2, + if(isstring(Ltype), + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + , + 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]); + ); + ); +); +////%Faceremovaldata end//// + +////%Fullformfunc start//// +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); +); +////%Fullformfunc end//// + +////%Surffun start//// +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]; +); +////%Surffun end//// + +////%Sf3data start//// +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+"]];"; //190415 + parse(tmp); + ); + [sfdtuL,sfdtvL]; +); +////%Sf3data end//// + +////%SfbdparadataR start//// +SfbdparadataR(nm,fd):= + SfbdparadataR(nm,fd,[],["nodisp"]); +SfbdparadataR(nm,fd,options):= + SfbdparadataR(nm,fd,options,["nodisp"]); +SfbdparadataR(nm,fdorg,optionorg,optionsh):=( +// help:SfbdparadataR("1",Fd); +// help:SfbdparadataR(options2=["Wait=60",division(c(50,50)),Eps1(0.01), Eps2(0.05)]); + regional(fd,options,name3,name3h,waiting, + eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg); + tmp=ConvertFdtoC(fdorg);//180430[2lines] + FuncListC=append(FuncListC,tmp); + name3="sfbd3d"+nm; + name3h="sfbdh3d"+nm; + fname=Fhead+"sfbd"+nm+".txt"; + tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#)); + tmp=text(tmp); + fd=RSform(tmp,2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=120; + 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,[#]); + ); + ); + cmdL=[]; //180509from + tmp=Select(GLIST,indexof(#,"Proj")==0); + cmdL=MkprecommandR(tmp);//180509to + tmp=["fd"+nm]; + if(length(reL)>0, + reL=textformat(reL,4); + reL=substring(reL,1,length(reL)-1); + reL=RSform(reL); + tmp=append(tmp,reL); + ); + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h];//180509 + tmp2=replace(fname,".txt",".Rdata"); //18.02.18 + cmdL=concat(cmdL,[ + "print",[Dqq("fd"+nm)], //18.02.22 + "fd"+nm+"="+fd,[], + name3+"=Sfbdparadata",tmp, + name3h+"=HIDDENDATA",[], + "WriteOutData",tmp1, + "save",["CUSPPT","OTHERPARTITION","file='"+tmp2+"'"] + ]); + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=append(options,"m")); + if(wflg==-1,options=append(options,"r")); + options=append(options,"Pre=!G"); //180509 + if(ErrFlag==0, + CalcbyR("sfbd"+nm,cmdL,options); + ); + if(ErrFlag==1, + err("Sfbdparadata not completed"); + , + ReadOutData(fname); + if(islist(parse(name3)), //180508[2lines] + Extractdata(name3,["nodisp"]); + Projpara(name3,options); + if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]); + Projpara(name3h,tmp); //180508 + , + ErrFlag=1; + ); + ); +); +////%SfbdparadataR end//// + +////%Addpoints start//// +Addpoints():=(//18.02.20 + if(isstring(ADDPOINT), + ADDPOINT; + , + "list()"; + ); +); +Addpoints(ptlist):=( +//help:Addpoints(list of 3d points); + if(length(ptlist)==0, + ADDPOINT="list()"; + , + ADDPOINT=RSform(textformat(ptlist,6),2); + ); + ADDPOINT; +); +////%Addpoints end//// + +////%CrvsfparadataR start//// +CrvsfparadataR(nm,crv,sf,fd):= + CrvsfparadataR(nm,crv,sf,fd,[],["nodisp"]); +CrvsfparadataR(nm,crv,sf,fd,options):= + CrvsfparadataR(nm,crv,sf,fd,options,["nodisp"]); +CrvsfparadataR(nm,crvstr,sfstr,fdorg,optionorg,optionsh):=( +// help:CrvsfparadataR("1","ax3d","sfbd3d1",fd); +// help:CrvsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); + regional(gd,out,fd,options,name3,name3h, + eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); + tmp=replace(crvstr,"3d","2d"); + Changestyle(tmp,["nodisp"]); + name3="crvsf3d"+nm; + name3h="crvsfh3d"+nm; + fname=Fhead+"crvsf"+nm+".txt"; + rfname=Fhead+sfstr+".txt"; + rfname=replace(rfname,"3d",""); + tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#)); + tmp=text(tmp); + fd=RSform(tmp,2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=120; + 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,[#]); + ); + ); + reL=RSform(text(reL),2); + reL=substring(reL,5,length(reL)-1); + cmdL=[]; //180509from + tmp=Select(GLIST,indexof(#,"Proj")==0); + cmdL=MkprecommandR(tmp);//180509to + tmp2=replace(rfname,".txt",".Rdata"); + cmdL=concat(cmdL,[ + "print",[Dqq("crv"+nm)], //18.02.22 + "fd"+nm+"="+fd,[], + "ReadOutData",[Dqq(rfname)], + "load",[Dqq(tmp2)], + "Addpoints",[Addpoints()] + ]); + tmp3=select(GLIST,indexof(#,crvstr+"=")>0); //18.02.22from + if(length(tmp3)==0, + tmp3=Fhead+crvstr+".txt"; + tmp3=replace(tmp3,"3d",""); + cmdL=concat(cmdL,[ + "ReadOutData",[Dqq(tmp3)] + ]); + ); //18.02.22to + tmp=[crvstr,sfstr,"fd"+nm]; + if(length(reL)>0, + reL=textformat(reL,4); + reL=substring(reL,1,length(reL)-1); + reL=Rsform(reL); + tmp=append(tmp,reL); + ); + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; + cmdL=concat(cmdL,[ + name3+"=Crvsfparadata",tmp, + name3h+"=CRVSFHIDDENDATA",[], + "WriteOutData",tmp1 + ]); + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=append(options,"m")); + if(wflg==-1,options=append(options,"r")); + options=append(options,"Pre=!G");//180509 + if(ErrFlag==0, + CalcbyR("crvsf"+nm,cmdL,options); + ); + if(ErrFlag==1, + err("Crvsfparadata not completed"); + , + ReadOutData(fname); + if(islist(parse(name3)), //180507[2lines] + Extractdata(name3,["nodisp"]); + Projpara(name3,options); + if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]); + Projpara(name3h,tmp);//180507 + , + ErrFlag=1; + ); + ); +); +////%CrvsfparadataR end//// + +////%Crv3onsfparadataR start//// +Crv3onsfparadataR(nm,crv3d,sf,fd):= + Crvs3onfparadataR(nm,crv3d,sf,fd,[],["nodisp"]); +Crv3onsfparadataR(nm,crv3d,sf,fd,options):= + Crv3onsfparadataR(nm,crv3d,sf,fd,options,["nodisp"]); +Crv3onsfparadataR(nm,crv3dstr,sfstr,fdorg,optionorg,optionsh):=( +// help:Crv3onsfparadataR("1","sc1","sfbd3d1",fd); +// help:Crv3onsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); + regional(gd,out,fd,options,name3,name3h, + eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); + tmp1=replace(crv3dstr,"3d","2d"); + tmp=apply(GCLIST,#_1); + if(contains(tmp,tmp1), + Changestyle3d(tmp1,["nodisp"]);//180428 + ); + Changestyle(tmp,["nodisp"]); + name3="crv3onsf3d"+nm; + name3h="crv3onsfh3d"+nm; + fname=Fhead+"crv3onsf"+nm+".txt"; + rfname=Fhead+sfstr+".txt"; + rfname=replace(rfname,"3d",""); + tmp=apply(fdorg,if(isstring(#),Dqq(#),#)); + tmp=text(tmp); + fd=RSform(tmp,2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=120; + 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,[#]); + ); + ); + reL=RSform(text(reL),2); + reL=substring(reL,5,length(reL)-1); + cmdL=[]; //180509from + tmp=Select(GLIST,indexof(#,"Proj")==0); + cmdL=MkprecommandR(tmp);//180509to + tmp=["crv",sfstr,"fd"+nm]; + if(length(reL)>0, + reL=textformat(reL,4); + reL=substring(reL,1,length(reL)-1); + reL=Rsform(reL); + tmp=append(tmp,reL); + ); + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; + tmp2=replace(rfname,".txt",".Rdata"); + cmdL=concat(cmdL,[ + "print",[Dqq("crv3onsf"+nm)], //180222 + "fd"+nm+"="+fd,[], + "ReadOutData",[Dqq(rfname)], + "load",[Dqq(tmp2)] + ]); + cmdL=concat(cmdL,[ + "Addpoints",[Addpoints()], + "crv="+crv3dstr,[], + name3+"=Crv3onsfparadata",tmp, + name3h+"=HIDDENDATA",[], + "WriteOutData",tmp1 + ]); + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=append(options,"m")); + if(wflg==-1,options=append(options,"r")); + options=append(options,"Pre=!G"); //180508 + if(ErrFlag==0, + CalcbyR("crv3onsf"+nm,cmdL,options); + ); + if(ErrFlag==1, + err("Crv3onsfparadata not completed"); + , + ReadOutData(fname); + if(islist(parse(name3)), + Extractdata(name3,["nodisp"]); + Projpara(name3,options); //180507 + if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]); + Extractdata(name3h,["nodisp"]); + Projpara(name3h,tmp); + , + ErrFlag=1; + ); + ); +); +////%Crv3onsfparadataR end//// + +////%Crv2onsfparadataR start//// +Crv2onsfparadataR(nm,crv2d,sf,fd):= + Crvs2onfparadataR(nm,crv2d,sf,fd,[],["nodisp"]); +Crv2onsfparadataR(nm,crv2d,sf,fd,options):= + Crv2onsfparadataR(nm,crv2d,sf,fd,options,["nodisp"]); +Crv2onsfparadataR(nm,crv2dstr,sfstr,fdorg,optionorg,optionsh):=( +//help :Crv2onsfparadataR("1","pa1","sfbd3d1",fd); +//help :Crv2onsfparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); + regional(gd,out,fd,options,name3,name3h, + eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); + Changestyle(crv2dstr,["nodisp"]); + name3="crv2onsf3d"+nm; + name3h="crv2onsfh3d"+nm; + fname=Fhead+"crv2onsf"+nm+".txt"; + rfname=Fhead+sfstr+".txt"; + rfname=replace(rfname,"3d",""); + tmp=apply(fdorg,if(isstring(#),Dqq(#),#)); + tmp=text(tmp); + fd=RSform(tmp,2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=120; + 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(isstring(crv2dstr), + crv=Rsform(crv2dstr); + , + crv=apply(crv2dstr,Dqq(#)); + crv=Rsform(text(crv)); + crv="Paramplot"+substring(crv,1,length(crv)); + ); + reL=RSform(text(reL),2); + reL=substring(reL,5,length(reL)-1); + cmdL=[]; //180509from + tmp=Select(GLIST,indexof(#,"Proj")==0); + cmdL=MkprecommandR(tmp);//180509to + tmp=["crv",sfstr,"fd"+nm]; + if(length(reL)>0, + reL=textformat(reL,4); + reL=substring(reL,1,length(reL)-1); + reL=Rsform(reL); + tmp=append(tmp,reL); + ); + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; + tmp2=replace(rfname,".txt",".Rdata"); + cmdL=concat(cmdL,[ + "print",[Dqq("crv2onsf"+nm)], //18.02.22 + "fd"+nm+"="+fd,[], + "ReadOutData",[Dqq(rfname)], + "load",[Dqq(tmp2)] + ]); + cmdL=concat(cmdL,[ + "Addpoints",[Addpoints()], + "crv="+crv2dstr,[], + name3+"=Crv2onsfparadata",tmp, + name3h+"=HIDDENDATA",[], + "WriteOutData",tmp1 + ]); + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=append(options,"m")); + if(wflg==-1,options=append(options,"r")); + options=append(options,"Pre=!G"); //180508 + if(ErrFlag==0, + CalcbyR("crv2onsf"+nm,cmdL,options); + ); + if(ErrFlag==1, + err("Crv2onsfparadata not completed"); + , + ReadOutData(fname); + if(islist(parse(name3)), + Extractdata(name3,["nodisp"]); + Projpara(name3,options); //180507 + if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]); + Projpara(name3h,tmp); + , + ErrFlag=1; + ); + ); +); +////%Crv2onsfparadataR end//// + +////%WireparadataR start//// +WireparadataR(nm,sf,wr1,wr2,fd):= + WireparadataR(nm,sf,fd,wr1,wr2,[],["nodisp"]); +WireparadataR(nm,sf,fd,wr1,wr2,options):= + WireparadataR(nm,sf,fd,wr1,wr2,options,["nodisp"]); +WireparadataR(nm,sfstr,fdorg,wr1,wr2,optionorg,optionsh):=( +// help:WireparadataR("1","sfbd3d1",fd,5,5); +// help:WireparadataR(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); + regional(fd,options,name3,name3h,outreg, + eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,flg,wflg); + name3="wire3d"+nm; + name3h="wireh3d"+nm; + fname=Fhead+"wire"+nm+".txt"; + rfname=Fhead+sfstr+".txt"; + rfname=replace(rfname,"3d",""); + tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#)); + tmp=text(tmp); + fd=RSform(tmp,2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=600; + 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,[#]); + ); + ); + tmp1=textformat(wr1,6); + tmp1=Rsform(tmp1,1); + tmp2=textformat(wr2,6); + tmp2=Rsform(tmp2,1); + tmp=[sfstr,"fd"+nm,tmp1,tmp2]; + reL=RSform(text(reL),2); + reL=substring(reL,5,length(reL)-1); + cmdL=[]; //180509from + tmp=Select(GLIST,indexof(#,"Proj")==0); + cmdL=MkprecommandR(tmp);//180509to + tmp1=textformat(wr1,6); + tmp1=Rsform(tmp1,1); + tmp2=textformat(wr2,6); + tmp2=Rsform(tmp2,1); + tmp=[sfstr,"fd"+nm,tmp1,tmp2]; + reL=RSform(text(reL),2); + reL=substring(reL,5,length(reL)-1); + if(length(reL)>0, + reL=textformat(reL,4); + reL=substring(reL,1,length(reL)-1); + reL=Rsform(reL); + tmp=append(tmp,reL); + ); + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; + tmp2=replace(rfname,".txt",".Rdata"); + cmdL=concat(cmdL,[ + "print",[Dqq("wire"+nm)], //18.02.22 + "fd"+nm+"="+fd,[], + "ReadOutData",[Dqq(rfname)], + "load",[Dqq(tmp2)], + "Addpoints",[Addpoints()], + name3+"=Wireparadata",tmp, + name3h+"=WIREHIDDENDATA",[], + "WriteOutData",tmp1 + ]); + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=concat(options,["m"])); + if(wflg==-1,options=concat(options,["r"])); + options=append(options,"Pre=!G"); //180508 + if(ErrFlag==0, + CalcbyR("wire"+nm,cmdL,options); + ); + if(ErrFlag==1, + err("Wireparadata not completed"); + , + ReadOutData(fname); + if(islist(parse(name3)), + Extractdata(name3,["nodisp"]); + Projpara(name3,options); + if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]); + Projpara(name3h,tmp); + , + ErrFlag=1; + ); + ); +); +////%WireparadataR end//// + +////%IntersectcrvsfR start//// +IntersectcrvsfR(nm,crv,fd):=Intersectcrvsf(nm,crv,fd,"",[]); +IntersectcrvsfR(nm,crv,fd,Arg):=( + if(isstring(Arg), + IntersectcrvsfR(nm,crv,fd,Arg,[]); + , + IntersectcrvsfR(nm,crv,fd,"",Arg); + ); +); +IntersectcrvsfR(nm,crvstr,fdorg,bdyeq,optionorg):=( +// help:IntersectcrvsfR("1",curve,fd); +// help:IntersectcrvsfR("1",curve,fd,curveequation); +// help:IntersectcrvsfR(options=[Np([50,50]),Eps(0.01)]); + regional(name,crv,fd,options,reL,fname,crvfname,argR, + waiting,tmp,tmp1,tmp2,flg,wflg,pts); name="crvsf"+nm; + name="crvsf"+nm; + fname=Fhead+name+".txt"; + crvfname=Fhead+"crv"+nm+".txt"; +// crv=parse(crvstr); +// crv=textformat(crv,6); +// crv=Rsform(crv,2); + fd=apply(fdorg,if(isstring(#),Dqq(#),#)); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=120; + 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,[#]); + ); + ); + tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#)); + tmp=text(tmp); + fd=RSform(tmp,2); + tmp=textformat(reL,4); + tmp=substring(tmp,1,length(tmp)-1); + tmp=Rsform(tmp); + if(length(bdyeq)>0, + argR=","+Dqq(bdyeq); + , + argR=""; + ); + if(length(tmp)>0, + argR=argR+","+tmp; + ); + tmp1=[Dqq(fname),Dqq(name),"tmp"]; + cmdL=[ + "print",[Dqq("crvsf"+nm)], //18.02.22 + "crv="+crvstr,[], + "fd="+fd,[], + "tmp1=Intersectcrvsf(crv,fd"+argR+")",[], + "tmp=c()",[], + "for(j in Looprange(1,length(tmp1))){",[], + " tmp=Appendrow(tmp,tmp1[[j]])",[], + "}",[], + "WriteOutData",tmp1, + "tmp",[] + ]; + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=append(options,"m")); + if(wflg==-1,options=append(options,"r")); + if(ErrFlag==1, + err("Crvsfparadata not completed"); + , + CalcbyR("ans",cmdL,options); + ReadOutData(fname); + ); + println("generate "+name); + parse(name+";"); //190415 +); +////%IntersectcrvsfR end//// + +////%SfcutparadataR start//// +SfcutparadataR(nm,eqstr,sf,fd):= + SfcutparadataR(nm,eqstr,sf,fd,[]); +SfcutparadataR(nm,eqstr,sf,fd,options):= + SfcutparadataR(nm,eqstr,sf,fd,options,["nodisp"]); +SfcutparadataR(nm,eqstrorg,sf,fdorg,optionorg,optionsh):=( +// help:SfcutparadataR("1","x+y+z=1","sfbd3d1",fd); +// help:SfcutparadataR(options2=[Division(c(50,50)),Eps1(0.01), Eps2(0.05)]); + regional(gd,out,fd,options,name3,name3h,eqstr, + eqL,reL,strL,fname,rfname,waiting,tmp,tmp1,tmp2,tmp3,flg,wflg); + tmp=Strsplit(eqstrorg,"="); + if(length(tmp)==1, + eqstr=tmp_1; + , + eqstr=tmp_1+"-("+tmp_2+")"; + ); + tmp=replace(sfcut,"3d","2d"); + Changestyle(tmp,["nodisp"]); + name3="sfcut3d"+nm; + name3h="sfcuth3d"+nm; + fname=Fhead+"sfcut"+nm+".txt"; + rfname=Fhead+sf+".txt"; + rfname=replace(rfname,"3d",""); + tmp=apply(fdorg,if(isstring(#),"'"+#+"'",#)); + tmp=text(tmp); + fd=RSform(tmp,2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=120; + 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,[#]); + ); + ); + reL=RSform(text(reL),2); + reL=substring(reL,5,length(reL)-1); + cmdL=[]; //180509from + tmp=Select(GLIST,indexof(#,"Proj")==0); + cmdL=MkprecommandR(tmp);//180509to + tmp=[Dqq(eqstr),sf,"fd"+nm]; + if(length(reL)>0, + reL=textformat(reL,4); + reL=substring(reL,1,length(reL)-1); + reL=Rsform(reL); + tmp=append(tmp,reL); + ); + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; + tmp2=replace(rfname,".txt",".Rdata"); + cmdL=concat(cmdL,[ + "print",[Dqq("sfcut"+nm)], //18.02.22 + "fd"+nm+"="+fd,[], + "ReadOutData",[Dqq(rfname)], + "load",[Dqq(tmp2)], + name3+"=Sfcutparadata",tmp, + name3h+"=CRVONSFHIDDENDATA",[], + "WriteOutData",tmp1 + ]); + tmp=replace(fname,".txt","end.txt"); + options=concat(options,["Out=no","Wait="+text(waiting),"Res="+tmp]); + if(wflg==1,options=append(options,"m")); + if(wflg==-1,options=append(options,"r")); + options=append(options,"Pre=!G"); //180508 + if(ErrFlag==0, + CalcbyR("sfcut"+nm,cmdL,options); + ); + if(ErrFlag==1, + err("Sfcutparadata not completed"); + , + ReadOutData(fname); + if(islist(parse(name3)), + Extractdata(name3,["nodisp"]); + Projpara(name3,options); + if(length(optionsh)>0,tmp=optionsh,tmp=["nodisp"]); + Projpara(name3h,tmp); + , + ErrFlag=1; + ); + ); +); +////%SfcutparadataR end//// + +////////////// current skeleton 2018.01.04 //////////////// + +////%Skeletonparadata start//// +Skeletonparadata(nm):=Skeletondatacindy(nm,[]); +Skeletonparadata(nm,options):=Skeletondatacindy(nm,options); +Skeletonparadata(nm,pltdata1,pltdata2):=Skeletondatacindy(nm,pltdata1,pltdata2); +Skeletonparadata(nm,pltdata1org,pltdata2org,options):= + Skeletondatacindy(nm,pltdata1org,pltdata2org,options); +////%Skeletonparadata end//// + +////%Skeletondatacindy start//// +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,optionsorg):=( +//help:Skeletonparadata("1"); +//help:Skeletonparadata("1",[pdata1,pdata2],[pdata3]); +//help:Skeletonparadatac(options=[1(width),"File=y(/m/n)","Not=ptlist","Check=ptlist"]); + regional(Eps,Eps2,name2,name3,options,Ltype,Noflg,reL,eqL,opcindy, + Out,ObjL,Plt3L,Rr,pltdata1,pltdata2,Plt2L,ObjL,ii,Data, + Obj3,jj,Gd,PtD,size,tmp,tmp1,tmp2,color, + fileflg,wflg,mkflg,fname,varL,nn,chkL); //181101 + name2="sk2d"+nm; + name3="sk3d"+nm; + fname=Fhead+"sk"+nm+".txt"; // no ketjs //181102 + pltdata1=[];// 16.01.31 + forall(pltdata1org,tmp1, + tmp=parse(tmp1); + tmp=apply(tmp,if(isstring(#),parse(#),#));//190506 + pltdata1=append(pltdata1,tmp); + ); + pltdata2=[];// 16.01.31 + forall(pltdata2org,tmp1, + tmp=parse(tmp1); + tmp=apply(tmp,if(isstring(#),parse(#),#));//190506 + pltdata2=append(pltdata2,tmp); + ); + options=optionsorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + reL=tmp_6; //16.02.28 + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + Rr=0.075*1000/2.54/MilliIn; + size=1; + Eps2=0.05; + fileflg="N"; + mkflg=1; + if(length(reL)>0, //16.02.28 + size=reL_1; + Rr=size*Rr; + if(length(reL)>1,Eps2=reL_2); + ); + forall(eqL, // no ketjs on //181101from + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="F", //190320 + fileflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + if(tmp1=="N", + tmp=parse(tmp_2); + if(Anyselected(tmp), + mkflg=-1; + ); + options=remove(options,[#]); + ); + if(tmp1=="C", + chkL=parse(tmp_2); + options=remove(options,[#]); + ); + );// no ketjs off + Eps=10^(-4); + ObjL=Flattenlist(pltdata1); + Plt3L=Flattenlist(pltdata2); + tmp=apply(Plt3L,Projcoordcurve(#)); + Plt2L=Flattenlist(tmp); + if((fileflg=="Y")%(fileflg=="M")&(mkflg>-1), // no ketjs on //181101from, 181103 + wflg=1; + tmp=flatten(pltdata1org); + varL=tmp; + tmp1=flatten(pltdata2org); + forall(tmp1, + if(!contains(varL,#), + varL=append(varL,#); + ); + ); + varL=sort(varL); + forall(1..(length(varL)),nn, + tmp1=varL_nn; + tmp=select(GLIST,substring(#,0,length(tmp1))==tmp1); + varL_nn=tmp_1; + ); + tmp=["THETA="+format(THETA,5),"PHI="+format(PHI,5)]; + varL=concat(tmp,varL); + forall(chkL, + tmp=#+"="+Textformat(parse(#+".xy"),5); + varL=append(varL,tmp); + ); + if(fileflg=="M", + fileflg="Y"; + , + tmp1="skeleton"+nm+".txt"; + if(isexists(Dirwork,tmp1), + tmp2=load(tmp1); + tmp2=tokenize(tmp2,"//"); + tmp2=tmp2_(1..(length(tmp2)-1)); + if(tmp2==varL, + wflg=0; + if(isexists(Dirwork,fname), + mkflg=0; + ReadOutData(fname); + tmp=name3+"="+Textformat(parse(name3),5)+";"; //190415 + parse(tmp); + tmp=name2+"="+Textformat(parse(name2),5)+";"; //190415 + parse(tmp); + ); + ); + ); + ); + );// no ketjs off + if(mkflg==1, //181102 +///////////// 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+";"; //190415 + parse(tmp); + tmp=name2+"=Projcurve("+tmp1+");"; + parse(tmp); + ); + if(mkflg>-1, + Changestyle3d(pltdata1org,["nodisp"]); + ); + if((Noflg<3)&(mkflg> -1), //no ketjs on //181103 + if(fileflg!="Y", //181102 + 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); + , + GLIST=append(GLIST,"ReadOutData("+Dq+fname+Dq+")");//181102 + ); + ); //no ketjs off + if((Noflg<2)&(mkflg>-1), //181103 + if(isstring(Ltype), + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + Ltype=Getlinestyle(text(Noflg)+Ltype,name2); + if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name2,Ltype,opcindy]); + if(SUBSCR==1, + Subgraph(name3,opcindy); + ); + ); + if(mkflg>-1, // no ketjs on + if((fileflg=="Y")&(wflg==1), //181102from + tmp1="skeleton"+nm+".txt"; + SCEOUTPUT = openfile(tmp1); + forall(varL, + println(SCEOUTPUT,#+"//"); + ); + closefile(SCEOUTPUT); + WriteOutData(fname,[name3,parse(name3),name2,parse(name2)]); + ); //181102to + Out; + );// no ketjs off +); +////%Skeletondatacindy end//// + +////%Makeskeletondata start//// +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=re(floor(t1)); + t2=tmp_2; nn2=re(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; +); +////%Makeskeletondata end//// + +////%Kukannozoku start//// +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; +); +////%Kukannozoku end//// + +////////////////// end of current skeleton////////////// + +////%Projcoordcurve start//// +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; +); +////%Projcoordcurve end//// + +////%Divnohidhid start//// +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)+"];"; //190415 + parse(name+"nh="+tmp1); + tmp1="["; + forall(hid,tmp1=tmp1+textformat(#,5)+","); + tmp1=substring(tmp1,0,length(tmp1)-1)+"];"; //190415 + parse(name+"h="+tmp1); + [nohid,hid]; +); +////%Divnohidhid end//// + +////%Beziersurf start//// +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,#.name+"3d"); //190505 + , + 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; +); +////%Beziersurf end//// + +//help:end(); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic1logr.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic1logr.txt new file mode 100644 index 0000000000..d77763598c --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic1logr.txt @@ -0,0 +1,370 @@ +// 20190622 +// Implicitplot changed ("x","y" supported) +// 20190603 +// Initglist changed (XMIN,... added ) +// 20190530 +// Initglist, Setglist, Addglist added +// 20190514 +// Setenglish removed +// 20190511 +// Implicitplot changed (Eps=>10^(-6)) +// Ketinit changed (KetcindyDataList initialized) +// 20190508 +// Implicitplot debugged (bisection method employed ) +// 20190507 +// Replaceall added +// 20190505 +// Ptselected changed (for KeTCinyJS, one point) +// text(pt) => pt.name +// 20190504 +// Ketinit changed (REMOVEPT,SLIDEFLG) +// Colorname2rgb changed ("cindycolor" added) +// 20190502 +// Pp -> pp, etc +// 20190429 +// Colorname2rgb changed (lightgray added) +// 20190426 +// Pointdata debugged ( case of geo-point ) +// 20190428 +// Ketinit changed (TABLECOUNT added ) +// 20190424 +// Framedata majorly changed/debugged +// 20190423 +// Ketinit changed ( Frame not appeared in KeTCindyJS ) +// MeasureDepth majorly changed +// 20190420 +// Plotdata changed (name in case of "-...") +// 20190416 +// Ketinit changed (zenkaku space) +// 20190415 +// parse( ..= ) changed ( ; added ) +// 20190412 +// Some functions moved to basic2 +// 20190409 +// Pointdata changed (color) +// 20190406 +// Pointdata changed (size) +// Implicitplot debugged (opstr ) +// 20190405 +// Pointdata changed (color,inside ) +// 20190323 +// Circledata changed ([Center,r] supported +// Colorname2rgb changed ( in the case of no color, "Assign" added ) +// 20190311 +// Shade changed ( order of COM2ndlist) +// Com2nd changed ("before" removed ) +// 20190301 +// Pointdata changed ( a single point => [[ , ]]) +// MeasureDepth => Measuredepth +// 20190224 +// Shade changed ("Trim=n" added ) +// 20190223 +// Shadein debugged +// Ketinit, Shade changed (SHADCTR added) +// Ketinit debugged (positon Changework) +// 20190221 +// Intersectcurves changed ( "out" sorted ) +// Changework changed ( "/kc.command" => Shellparent) +// 20190220 +// Shadein added, Shade changed (Shadein for 1 data) +// Shadein debugged +// 20190219 +// Anglemark debugged ( tmp => tmp_2 ) +// 20190211 +// Deqplot changed ( for incorret form of equation ) +// 20190210 +// bug of "Msg=" fixed +// 20190206 +// Deqplot changed ( ‘ replace to ` ) +// Lineplot,Plotdata,Paramplot,Circledata,Bowdata,Anglemark changed ("Msg" option) +// Pointdata changed ("Msg" option) +// 20190128 +// Ketinit changed (Userhome added) +// Changesetting majorly changed +// 20190127 +// Mvprod added +// 20190126 +// Pointdata changed ( list of list removed, Ltype) +// 20190125 +// Assign debugged ( for 1 argument) +// Getlinestyle changed ( Ltype) +// 20190122 +// no ketjs added (Ketinit) +// 20190119 +// Getlinestyle changed/debugged (Ltype changed ) +// 20190118 +// Divoptions changed ("dr,thickness" ) +// 20190116 +// Ketinit() debuggded ( Mackc for Linux) +// 20190115 +// Plotdata debugged( ( => [ ) +// Pointdata change( colorcode => colorcmyk2rgb) +// 20190103 +// Paramplot debugged ( "pt" localized ) +// 20181231 +// Pointdata changed ( "Inside=(cmyk list)" option added ) +// Setorigin debugged (GENTEN used) +// 20181230 +// Pointdata changed ( "Inside" option added ) +// Integrate debugged (case of funstr) +// 20181216 +// Ketinit changed (AXSTYLE changed) +// 20181215 +// Ketinit changed (AXSTYLE added) +// Setarrow debugged +// 20181214 +// Acos, Asin, Atan, Sqr added +// Setarrow added +// Arrowhead changed (options) +// 20181212 +// Colorrgb2cmyk debugged +// Colorcode changed ( some have been deleted) +// Colorname2rgb added +// Divoptions changed (color name) +// Ketinit changed (Fillstore added) +/ 20181209 +// Fillstore changed ( The color of ketcindy buttons fixed) +// 20181125 +// Fillstore,Fillblack,Fillrestore added +// 2018111 +// Connectseg debugged ( concat ) +// 20181112 +// Connectseg debugged ( concat ) +// Implicitplot changed ( "Msg=" added) +// 20181111 +// eqL : Only the1st character used (basic2,... ) +// 20181110 +// Arrowdata,Arrowheaddata debugged ( option position,cut ) +// Arrowdata changed ( automatic naming supported) +// Arrowhead changed ( cut option supported) +// 20181109 +// Hatchdata changed (Default of "Max" changed to 50) +// 20181103 +// Anyselected added +// Hatchdata changed (option "File=", "Not=","Check=" added) +// 20181030 +// Drawprocess,Workprocess changed (dispflg added) +// 20181026 +// Findarea changed ( default of length=1) +// 20181020 +// if(color!=KCOLOR => if((Noflg==0)&(color!=KCOLOR) +// Setscaling,... ([SCALEX,SCALEY]) +// 20181018 +// Arrowheaddata,Arrowhead, Arrowdata changed (let pcrd be default ) +// Setscaling moved from basic2 +// 20181017 +// Ketinit,Changesetting changed (.ketcindy.conf and ketcindy.conf) +// 20181016 +// Setwindow debugged (Pcrd removed) +// 20181013 +// FindareaO, Findarea changed ( case of a curve with line segment) +// Pointdata changed ( Size option ) +// 20181005 +// Hatchdata changed (option "Max=[1st,2nd]", second=total+restof1st) +// 20181003 +// Hatchdata changed (option "Out=","Max=" added. "Out=" is for HatchdataR ) +// Hatchdata debugged (case of multiple points) +// 20181001 +// Ketinit changed ( Ketinit(work) for workdirectory ) +// 20180929 +// Shade changed ("En=y" option added) +// 20180928 +// Paramplot changed (case of stationary point, name -option) +// Polarplot added +// Divoptions changed (color in case of scalar*list) +// 20180913 +// Chengesetting, Ketinit changed (getname() used) +// 20180908 +// Ketinit changed (SlideMargin added) +// 20180904 +// Color setting changed ( for KCOLOR) +// 20180902 +// Arrowhead changed ( head trimmed if Inwindow==false ) +// 20180817 +// Ketinit changed (GPACK added) +// Plotdata debugged ( Exc ) +// 20180801 +// Framedata changed ( Option "corner"("center") added to call Framedata2) +// 20180723 +// Nearestptcrv changed ( for geometric point ) +// Paramoncurve(pP,Gdata) changed (for geometric point) +// 20180722 +// color localized +// Findarea changed (FindareaP,FindareaO) +//20180720 +// Derivative, Tangentplot changed ( ch option added, coping with case of no interesects) +//20180719 +// Listplot,Arrowdata changed ("Cutend"option added) +// Derivative, Tangentplot changed ( Oshima's formula used ) +//20180718 +// Derivative chnaged (for plotdata) +// Tangentplot added +//20180717 +// Enclosing debugged ( min => min+Eps0) +// Makehatch debugged (case where same point ) +// Hatchdata debugged ( "s",... ) +//20180716 +// Enclosing debugged ( selection of KL) +//20180714 +// Setfiles changed ( OCNAME added ) +//20180713 +// Enclosing debugged (for Lineplot : distance of pts added ) +//20180711 +// Listplot,Pointdata changed (color localized ) +// Ptselected ( =Isptselected ) +//20180708 +// Integrate changed (Integratefn (o)) +// Polygonplot changed ( putpoint only in case ispoint(B), Geo) +//20180707 +// Enclosing changed (epspara=1) +//20180706 +// Enclosing changed (Enclosing2 => Enclosing) +// Isptselected added +// Hatchdata changed (Interval > *2 ) +// Enclosing debugged +//20180705 +// Arrowhead debugged ( color ) +// Paramark debugged (Bname ) +//20180704 +// Drawsegmark debugged ( color option) +//20180624 +// Ovaldata debugged ( case where Rc= 0) +//20180619 +// Hatchdata debugged ( ns..ne=>ns..ne-1, near point removed ) +//20180618 +// Setfiles,Setparent,Changework changed (for null string) +//20180613 +// Shade changed ( name, pointlist supported, Com2nd("before")) +// Shade debugged (color,opcindy) +// WritetoRS changed (for COM2ndlistb) +//20180612 +// Com2nd changed ("before" options added ) +//20180609 +// Ketinit changed (CommonMake added ) +//20180608 +// Ketinit changed (Namecdy defined ) +//20180606 +// Changework debugged ( case where "Sub=n" ) +//20180605 +// Changework changed ( "Sub=n" option supported ) +//20180603 +// Shade changed ( option density supported ) +// Addcolor removed +// Setcolor(color,option),Setcolorrgb removed +// Setcolor renewed +// Divoptions degugged (KCOLOR) +// Listplot,... changed (KCOLOR) +// Pointdata changed (color) +//20180602 +// Divoptions changed ( "Color=" supported ) +// Changestyle,.... changed ("Color=" supported) +// Changetyle changed (case in which name not found) +// Shade debugged ( color ) +// Rotatedata,... degugged ( for list of plotdata ) +//20180530 +// Anglemark changed (opstr,Brat=1.2) +// Pointdata degugged (for single point) +//20180527 +// Deqplot changed ( ' as default ) +//20180513 +// Setunitlen debugged ( string => UI ) +//20180506 +// Anglemark changed ( [A,B,angle] supported ) +//20180505 +// Strsplit added +//20180501 +// MeasureDepth debugged ( for blank list ) +//20180420 +// Ketinit changed ( Changesetting moved to ketoutset.txt ) +//20180413 +// Ketinit changed ( utf for windows removed ) +//20180408 +// Divoptions changed ( to remove null string ) +// Changework changed (nkfwin) +// Hyperbolaplot debugged +// Derivative debugged +//20180405 +// Ketinit changed (order of changesettiing, Dircdy) +//20180402 +// Implicitplot, Connectseg added +//20180329 +// Ketinit changed (changing of Dircdy) +// Changesetting added +// Derivative changed ( Numerical method supportted ) +//20180328 +// Cindyname (=Cdyname ) added +// Cindyfile,Cindypath deleted +//20180317 +// IntersectcurvesPp changed +// Collectsameseg added, Collectnear commented out +// 2018.02.11 +// Dqq added ( = DqDq) +// 2018.02.06 +// Intersectpartseg debugged +// 2018.02.02 +// Enclosing2 changed (for distanted curves, startpt option removed ) +// 2018.02.01 +// Makehatch changed ( in accordance with Intersectseg ) +// 2018.01.30 +// Intersectseg changed ( for the case of no intersect ) +// 2018.01.29 +// Intersectpartseg changed ( for the case curves are strings ) +// Textformat changed ( for null list ) +// 2018.01.26 +// Enclosing2 (new enclosing ), Makehatch, Hatchdatacindy added +// 2018.01.15 +// Setunitlen changed ( as R ) +// Ketinit changed (Marklennow,... added as R ) +// 2018.01.07 +// Collectnear added +// Intersectcurves changed (Collectnear used) +// 2018.01.05 +// Intersectcurves changed (LLcrd) +// Intersectcurvespt added +// Intersectpartseg debugged +// Intersectline changed +// s:2018.01.04 +// PointonCurve debugged ( t >=1, t<=length(g) ) +// Intersectcurves.... added +// s:2017.12.27 +// Getcdyname(Cdyname) changed +// s:2017.12.03 +// Ketinit changed (definition of LibnameS ) +// s:2017.12.01 +// Ketinit changed (to modify Dircdy ) +// s:2017.11.27 +// Setparent added ( for Texparent) +// Getcdyname added ( name of the current cdy file) +// s:2017.11.24 +// Changework changed ( for the case of double pathsep() in dir, subdir ) +// s:2017.11.20 +// Changework changed ( for the case of (ex) dir=".../" ) +// s:2017.11.12 +// Ketinit debugged (Fhead) +// s:2017.10.24 +// Ketinit changed (Slidename added) +// s:2017.10.23 +// Pointdata changed (for string ) +// s:2017.10.14 +// Ketinit() changed (Fhead) +// s:2017.10.13 +// Ketinit() changed (definition of Shellparent,Shellchild) +// s:2017.10.07 +// Pointdata debugged +// s:2017.10.07 +// Setcolor debugged ( \ => \\ ) +// s:2017.10.06 +// Deqplot changed +// s:2017.08.29 +// Ketinit changed (LibnameS) +//2017.09.22 +// Texcom debugged +// Setcolor changed ( Texcom used ) +//2017.09.18 +// SCIWR,SCIRE removed +// 2017.09.17 +// Ketinit changed ( PathS=6... removed ) +// 2017.09.13 +// Changed to FnameR + + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic1r.cs b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic1r.cs new file mode 100644 index 0000000000..c68a550dd1 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic1r.cs @@ -0,0 +1,5422 @@ +// 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.2.9"); +println(ketjavaversion()); +println("ketcindylibbasic1[20190622] 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:getdirhead(); +//help:gedirhead("/Applications"); +//help:gedirhead("C:\Users\(username)"); +//help:setpath(); + +Ch=[0]; ChNum=1; + +////%Ketinit start//// +Ketinit():=Ketinit("fig",1,[-5,5],[-5,5]); //181001 +Ketinit(Arg):=(//181001from + if(isstring(Arg), + Ketinit(Arg,1,[-5,5],[-5,5]); + , + Ketinit("fig",Arg,[-5,5],[-5,5]); + ); +); +Ketinit(work,sy,rangex,rangey):=(//181001to + //help:Ketinit(); + //help:Ketinit(""); + regional(pt,tmp,tmp1,tmp2,letterc,boxc,shadowc,mboxc); + PenThickInit=8; + ULEN="1cm"; + MEMORI=0.05;//18.01.15from + MEMORIInit=MEMORI; + MEMORINow=MEMORI; + MARKLEN=0.05; + MARKLENInit=MARKLEN; //180504 + MARKLENNow= MARKLEN; + GENTEN=[0,0];//18.01.15to + TABLECOUNT=0; //190428 + 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; + YaCut=0; YasenStyle="dr,1"; Yajiristyle="tf"; + KETPICCOUNT=1; + KCOLOR=[0,0,0]; + GLIST=[]; // no ketjs + GCLIST=[]; +// GDATALIST=[]; //no ketjs on + GOUTLIST=[]; + POUTLIST=[]; // no ketjs off + VLIST=[]; + FUNLIST=[]; + LETTERlist=[]; + COM0thlist=[]; // no ketjs on + COM1stlist=[]; + COM2ndlist=[]; // no ketjs off + // COM2ndlistb=[]; //180612 + ADDAXES="1"; + AXSTYLE=["l","x","e","y","n","O","sw","","",""]; //181216 + AXCOUNT=1; //181215 + SHADECTR=1; //190222 + LFmark=unicode("000a"); + CRmark=unicode("000d");//16.12.13 + Dq=unicode("0022"); + CommonMake=0;//180610 + WaitUnit=10; + CONTINUED=0; + OutComList=[]; + OutFileLIst=[]; // 15.10.22 + FigPdfList=[]; // 16.04.08 + Fillstore(); //181212 + ADDPACK=[]; // 16.05.16 + GPACK="tpic"; //180817 + ErrFlag=0; + KETJSOP=[]; //190129 + REMOVEPTJS=[]; SLIDEFLG="Y"; //190504 + KetcindyjsDataList=[]; +// setdirectory(Dirwork); + if(!isstring(Fhead), // 17.10.13from, 17.11.12 + Fhead=text(curkernel()); + Fhead=replace(Fhead,".cdy",""); + Slidename=Fhead; //17.10.24 + );//17.11.12 + Dircdy=replace(Dircdy,"%E3%80%80",unicode("3000"));//190416 + Namecdy=Cindyname();//180608 + tmp1=Indexall(Dircdy,"%"); //180329from + if(length(tmp1)>0, + tmp1=append(tmp1,length(Dircdy)); + tmp2=substring(Dircdy,0,tmp1_1-1); + forall(1..(length(tmp1)-1), + tmp=substring(Dircdy,tmp1_#,tmp1_#+2); + tmp2=tmp2+unicode(tmp); + tmp2=tmp2+substring(Dircdy,tmp1_#+2,tmp1_(#+1)-1); + ); + Dircdy=tmp2; + ); //180329to + if(iswindows(), //17.12.01 + Dircdy=replace(Dircdy,"/",pathsep()); + if(substring(Dircdy,0,1)==pathsep(), + Dircdy=substring(Dircdy,1,length(Dircdy)); + ); + ); + Userhome=Homehead+pathsep()+getname(); //190128 + if(iswindows(), + Batparent="\kc.bat"; + , + if(ismacosx(), //181125from + Shellparent="/kc.command"; + Mackc="open"; //190222 + , + Shellparent="/kc.sh"; + Mackc="bash"; //190222 + ); //181125to + ); + Changesetting(); //190128 + Changework(Dircdy+pathsep()+work); //180329to,181001 + Fnametex=Fhead+".tex"; + FnameR=Fhead+".r"; + FnamebodyR=Fhead+"body.r"; + Fnameout=Fhead+".txt"; // 17.10.13to +// no ketjs off 190122 + 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 +// no ketjs on 190122 + // for Presentation + letterc=[0.98,0.13,0,0.43]; boxc=[0.2,0,0,0];//190307 [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]; + SlideMargin=[0,0]; //180908 + ThinDense=0.1;//17.01.08 + if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")>0, + LibnameS=replace(LibnameS,"ketpic","ketpic2e"); + );//17.12.03until +// no ketjs off 190122 +); +////%Ketinit end//// + +////%Initglist start//// 190530 +Initglist():=( + GLIST=[]; // no ketjs + GCLIST=[]; + COM0thlist=[]; // no ketjs on + COM1stlist=[]; + COM2ndlist=[]; // no ketjs off + KCOLOR=[0,0,0]; + SCALEX=1; + SCALEY=1; + XMIN=SW.x; XMAX=NE.x; //190603[2lines] + YMIN=SW.y; YMAX=NE.y; +); +////%Initglist end//// + +////%Setglist start//// 190530 +Setglist():=( + GLISTadd=GLIST; + GCLISTadd=GCLIST; + COM0thlistadd=COM0thlist; // no ketjs on + COM1stlistadd=COM1stlist; + COM2ndlistadd=COM2ndlist; // no ketjs off +); +////%Setglist end//// + +////%Addglist start//// 190530 +Addglist():=( + GLIST=GLISTadd; + GCLIST=GCLISTadd; + COM0thlist=COM0thlist; // no ketjs on + COM1stlist=COM1stlistadd; + COM2ndlist=COM2ndlistadd; // no ketjs off +); +////%Addglist end//// + +////%Fillstore start//// +Fillstore():=( + regional(tmp,tmp1,out,dtL,txtL,clrL,txt,clr,nn,jj); + dtL=[ //181209from + ["Figure",[1,0.29,0.29]],["Parent",[1,1,0]], + ["ParaF",[1,0.93,0.6]],["Flip",[0,0,1]],["Anime",[0.51,0.95,1]], + ["Title",[0,1,0]],["Slide",[0.47,0,0.72]],["Digest",[1,0.74,0.47]], + ["KeTJS",[0,1,1]],["KeTJSoff",[0,1,1]], + ["Objview",[0,1,0]], + ["Play",[1.0, 0.741, 0.467]],["Pause",[1.0, 0.741, 0.467]], //190426[2lines] + ["Rev",[1.0, 0.741, 0.467]],["Stop",[1.0, 0.741, 0.467]], + ["Skele",[1.0, 0.741, 0.467]],["Nohid",[1.0, 0.741, 0.467]] + ]; + txtL=apply(dtL,#_1); + clrL=apply(dtL,#_2); + tmp1=allelements(); + tmp1=select(tmp1,indexof(#.name,"Text")>0); + out=[]; + forall(1..(length(tmp1)),nn, + tmp=tmp1_nn; + txt=tmp.text; + tmp=select(1..(length(txtL)),txtL_#==txt); + if(length(tmp)>0, + jj=tmp_1; + clr=clrL_jj; + tmp=tmp1_nn; + tmp.fillcolor=clr; + , + tmp=tmp1_nn; + clr=tmp.fillcolor; + ); + out=append(out,[tmp.name,clr,tmp.text]); + ); //181209to + out; +); +////%Fillstore end//// + +////%Fillblack start//// +Fillblack():=Fillblack("Running"); +Fillblack(str):=( + regional(tmp,tmp1,store); + store=Fillstore(); //181209 + tmp=select(tmp1,#.name=="Text0"); + if(length(tmp)==0, + forall(store, + tmp=parse(#_1+";"); + tmp.fillcolor=[0,0,0]; + ); + , + Text0.text=str; + ); + store; +); +////%Fillblack end//// + +////%Fillrestore start//// +Fillrestore(store):=( + regional(tmp); + tmp=select(store,#_1=="Text0"); + if(length(tmp)==0, + forall(store, + tmp=parse(#_1); + tmp.fillcolor=#_2; + ); + , + tmp=tmp_1; + Text0.text=tmp_3; + ); +); +////%Fillrestore end//// + +////%Readlines start//// +Readlines(file):=Readlines(Dirwork,file); //181126 +Readlines(path,file):=( +//help:Readlines(path,file); + regional(tmp,out); + out=readfile2str(path,file); + out=tokenize(out,"/L"+"F/"); //190129 + tmp=out_(length(out)); + if(length(tmp)==0, + out=out_(1..(length(out)-1)); + ); + out; +); +////%Readlines end//// + +////%Changesetting start//// +Changesetting():=( //190128 + regional(dir,fname); + dir=Homehead+pathsep()+getname(); + fname=".ketcindy.conf"; + if(isexists(dir,fname), + println("read "+fname+" in "+dir); + setdirectory(dir); + import(fname); + ); + dir=Dircdy; fname="ketcindy.conf"; + if(isexists(dir,fname), + println("read "+fname+" in "+dir); + setdirectory(dir); + import(fname); + ); +); +////%Changesetting end//// + +////%Cindyname start//// +Cindyname():=Getcdyname(); +Cdyname():=Getcdyname(); +Getcdyname():=( //17.12.27 +//help:Cindyname(); + regional(out); + out=text(curkernel()); + out=replace(out,".cdy",""); +); +////%Cindyname end//// + +////%Setwindow start//// +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", // no ketjs on + 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]); // no ketjs off +); +Setwindow(xrange,yrange):=( +//help:Setwindow([2,3],[-1,1]); + XMIN=xrange_1; + XMAX=xrange_2; + YMIN=yrange_1; + YMAX=yrange_2; + Putpoint("SW",[XMIN,YMIN]);//181016 + Putpoint("NE",[XMAX,YMAX]);//181016 +// Ketinit(); +); +////%Setwindow end//// + +////%Setfiles start//// +Setfiles():=Setfiles(""); //180618 +Setfiles(file):=( // 17.01.16 +//help:Setfiles(file); + if(length(file)>0, //180618 + Fhead=file; + Fnametex=Fhead+".tex"; + FnameR=Fhead+".r"; //17.10.14 + FnamebodyR=Fhead+"body.sce"; + Fnameout=Fhead+".txt"; + OCNAME=Fhead; //180714 for obj + , + println("Fhead="+Dqq(Fhead)); //180618 + ); +); +////%Setfiles end//// + +////%Setparent start//// +Setparent():=Setparent(""); +Setparent(file):=( // 17.11.27 +//help:Setparent(file); + if(length(file)>0, //180618 + Texparent=file; + , + if(isstring(Texparent), //180618from + println("Texparent="+Dqq(Texparent)); + , + println("Texparent not defined"); + ); + ); //180618to +); +////%Setparent end//// + +////%Dqq start//// +Dqq(str):=DqDq(str); //18.02.11 +////%Dqq end//// +////%DqDq start//// +DqDq(str):=( +//help(Dqq("ab"); => Dq+"ab"+Dq) + unicode("0022")+str+unicode("0022"); +); +////%DqDq end//// + +////%PPa start//// 190111 +PPa():=PPa(""); +PPa(str):="("+str+")"; +////%PPa end//// + +////%PaO start//// 190111 +PaO():=PaO(""); +PaO(Arg):=( + regional(out); + if(isstring(Arg), + out="("+Arg; + , + out=""; + repeat(Arg, + out=out+"("; + ); + ); + out; +); +////%PaO end//// + +////%PaC start//// 190111 +PaC():=PaC(""); +PaC(Arg):=( + regional(out); + if(isstring(Arg), + out=Arg+")"; + , + out=""; + repeat(Arg, + out=out+")"; + ); + ); + out; +); +////%PaC end//// + +////%PPa start//// 190111 +PPa(str):="("+str+")"; +////%PPa end//// + +////%Tab2list start//// +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.28until + ); + 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.05until + ); + dtstr=dtstrorg;// 16.09.19from + tmp=substring(dtstr,length( dtstr)-1,length(dtstr)); + if(tmp!=lfm, + dtstr=dtstr+first; + );// 16.09.19until + 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; +); +////%Tab2list end//// + +////%Columnlist start//// +Columnlist(dt,list):=( // 16.09.04 +//help:Columnlist(dt,1..3); + apply(dt,#_list); +); +////%Columnlist end//// + +////%Dispmat start//// +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(); +); +////%Dispmat end//// + +////%Sep1000 start//// +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; +); +////%Sep1000 end//// + +////%Acos start//// +Acos(x):=( +//help:Acos(1.000001); + re(arccos(x)); +); +////%Acos end//// + +////%Asin start//// +Asin(x):=( +//help:Asin(1.000001); + re(arcsin(x)); +); +////%Asin end//// + +////%Atan start//// +Atan(x):=( +//help:Atan(1); + re(arctan(x)); +); +////%Atan end//// + +////%Sqr start//// +Sqr(x):=( +//help:Sqr(-0.00001); + if(x<0,0,sqrt(x)); +); +////%Sqr end//// + +////%Factorial start//// +Factorial(n):=( +//help:Factorial(5); + regional(out); + out=1; + forall(1..n, + out=out*#; + ); + out; +); +////%Factorial end//// + +////%Norm start//// +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); +); +////%Norm end//// + +// 16.03.28 +////%Removespace start//// +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); +); +////%Removespace end//// + +////%Indexall start//// +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; +); +////%Indexall end//// + +////%Strsplit start//// +Strsplit(str,key):=( //180505 +//help:Strsplit(string,"="); + regional(start,out,tmp1,tmp2); + tmp1=Indexall(str,key); + out=[]; start=0; + forall(tmp1, + out=append(out,substring(str,start,#-1)); + start=#; + ); + out=append(out,substring(str,start,length(str))); + out; +); +////%Strsplit end//// + +////%Parlevel start//// +Parlevel(str):=Bracket(str); // 16.05.22from +////%Parlevel end//// +////%Bracket start//// +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.22until + 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; +); +////%Bracket end//// + +////%Pardiagram start//// +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; +); +////%Pardiagram end//// + +////%Changework start//// +Changework():=Changework(""); //180618 +Changework(dirorg):=Changework(dirorg,["Sub=y"]); +Changework(dirorg,options):=( //16.10.21 +//help:Changework(directory); +//help:Changework(Dircdy+"fig"); +//help:Changework(options=["Sub=n"<not to make folder fig>); + regional(dir,subdir,tmp,,eqL,makesub); + tmp=Divoptions(options); + eqL=tmp_5; //180605from + makesub=1; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(#,0,1)); //181111 + if(tmp1=="S", + tmp=Toupper(tmp_2); + if(substring(tmp,0,1)=="N", + makesub=0; + ); + ); + ); //180605to + dir=replace(dirorg,"/",pathsep());//17.11.20from + dir=replace(dir,"\",pathsep()); + dir=replace(dir,pathsep()+pathsep(),pathsep());//17.11.24 + tmp=length(dir); + if(substring(dir,tmp-1,tmp)==pathsep(), + dir=substring(dir,0,tmp-1); + );//17.11.20until + tmp=Indexall(dir,pathsep()); //17.11.24from + subdir=""; + if(length(tmp)>0, + tmp=tmp_(length(tmp)); + subdir=substring(dir,tmp,length(dir)); + dir=substring(dir,0,tmp-1); + ); //17.11.24until + if(dir=="" % !isexists(dir,""), + if(dir=="", //180618from + println("Dirwork="+Dqq(Dirwork)); + , + println("Directory "+dir+" not exist, so "+Dqq(Dirwork)+" not changed"); + ); //180618to + , + if(length(subdir)>0, //180605 + if(makesub==1,//180606from + println(makedir(dir,subdir)); + );//180606 + Dirwork=dir+pathsep()+subdir; + , + Dirwork=dir; + ); //17.11.24until + setdirectory(Dirwork); + if(!iswindows(), //17.04.11 + if(!iskcexists(Dirwork), + SCEOUTPUT = openfile(Shellparent); //190221 + closefile(SCEOUTPUT); + println(setexec(Dirwork,Shellparent)); //190221 + ); + ); + ); +); +////%Changework end//// + +////%Changestyle start//// +Changestyle(nameL,style):=( +//help:Changestyle(["sgAB"],["da"]); + regional(nmL,name,Ltype,Ltypeorg,Noflg,color,opcindy,tmp); + tmp=Divoptions(style); + Ltypeorg=tmp_1; + Noflg=tmp_2; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + if(islist(nameL),nmL=nameL,nmL=[nameL]); + forall(nmL,name, + tmp=select(GCLIST,#_1==name); + if(length(tmp)>0, + Ltype=Ltypeorg; + GCLIST=select(GCLIST,#_1!=name); + COM2ndlist=select(COM2ndlist, //no ketjs + (indexof(#,"("+name)==0)%(indexof(#,"Shade")>0)); // 15.05.23,16.12.13 //no ketjs + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + ); + ); +); +////%Changestyle end//// + +////%Op start//// +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; +); +////%Op end//// + +////%Ptselected start//// +Ptselected():=Isptselected(allpoints()); //180706 +Ptselected(ptlistorg):=( +//help:Ptselected(); +//help:Ptselected(geopoint); + regional(ptlist,flg,Eps); + Eps=(XMAX-XMIN)/10; //190505 + flg=0; + ptlist=ptlistorg; //190505[2lines] + if(!islist(ptlist),ptlist=[ptlist]); + forall(ptlist, + if(flg==0, + if(isselected(#),flg=1); // no ketjs +// if(|mouse().xy-#.xy|<Eps,flg=1); // only ketjs //190505 + ); + ); + if(flg==0,false,true); +); +////%Ptselected end//// + +////%Finddef start//// +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; +); +////%Finddef end//// + +////%Findgeoinfo start//// +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; +); +////%Findgeoinfo end//// + +////%Dependgeo start//// +Dependgeo(geo):=( + regional(tmp,tmp1,tmp2,out); + tmp=Finddef(geo); + if(!iscircle(geo), + out=[geo.name]; //190505 + , + 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; +); +////%Dependgeo end//// + +////%Workprocess start//// +Workprocess():=Drawprocess(300,["Disp=n"]); //181030 +Workprocess(nn):=( +//help:Workprocess(); + Drawprocess(nn,["Disp=n"]); +); +////%Workprocess end//// +////%Drawprocess start//// +Drawprocess():=Drawprocess(300,["Disp=y"]); +Drawprocess(nn):=Drawprocess(nn,["Disp=y"]); +Drawprocess(nn,options):=( +//help:Workprocess(); + regional(All,added,remain,out,flg,dispflg,eqL,tmp,tmp1,tmp2); + tmp=Divoptions(options); //181030from + eqL=tmp_5; + dispflg="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=Toupper(substring(tmp_2,0,1)); + if(tmp1=="D",dispflg=tmp2); + ); //181030to + tmp=remove(allpoints(),[NE,SW,TH,FI]); + tmp1=select(tmp, + substring(#.name,length(#.name)-1,length(#.name))!="z"); //190505 + 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); + ); + ); + if(dispflg=="Y", + println("Process of drawing"); + ); + tmp1=[];//181030from + forall(out, + tmp=Dependgeo(parse(#)); + tmp1=append(tmp1,tmp); + if(dispflg=="Y", + println(Dependgeo(parse(#))); + ); + ); + tmp1;//181030to +); +////%Drawprocess end//// + +////%Sortpointlist start//// +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; +); +////%Sortpointlist end//// + +////%Toupper start//// +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; +); +////%Toupper end//// + +////%Textformat start//// +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)+","; + ); + if(length(tmp1)>1, //18.01.29from + tmp1=substring(tmp1,0,length(tmp1)-1); + ); + tmp1=tmp1+"]"; //18.01.29until + , + 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; +); +////%Textformat end//// + +////%Sprintf start//// +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; +); +////%Sprintf end//// + +////%Replaceall start//// 190507 +Replaceall(str,repL):=( + regional(tmp1,tmp2,out); + out=str; + forall(1..(length(repL)/2), + tmp1=repL_(2*#-1); + tmp2=repL_(2*#); + if(!isstring(tmp2),tmp2=text(tmp2)); + out=replace(out,tmp1,tmp2); + ); + out; +); +////%Replaceall end//// + +////%Assign start//// +Assign(str):=( //190125from + regional(tmp); + tmp=[]; + forall(VLIST,tmp=concat(tmp,[#_1,#_2])); + Assign(str,tmp); +); //190125to +Assign(funstr,vrL):=( + regional(nn,out); + 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; +); +////%Assign end//// + +Measuredepth(list):=( + regional(tmp,tmp1,Depth,Flg); + Flg=0; + Depth=0; + if(length(list)>0, //180501 + if(ispoint(list), + Depth=0; + Flg=1; + , + tmp1=select(1..(length(list)),length(list_#)>0);//17.05.21from + tmp=list_(tmp1_1);//17.05.21until + ); + repeat(4, + if(Flg==0, + if(islist(tmp), + tmp=tmp_1; + Depth=Depth+1; + , + if(ispoint(tmp),Depth=Depth+1); + Flg=1; + ); + ); + ); + );//180501 + Depth; +); + +////%Measuredepth start//// +Measuredepth(list):=( //190423 + regional(str,nn,tmp,tmp1,tmp2); + str=text(list); + tmp1=Indexall(str,"["); + tmp2=select(tmp1,!contains(tmp1,#+1)); + nn=tmp2_1; + tmp1=substring(str,nn,length(str)); + tmp=indexof(tmp1,","); + tmp1=substring(tmp1,0,tmp-1); + if(!ispoint(parse(tmp1)), + nn=nn-1; + ); + nn; +); +////%Measuredepth end//// + +////%Flattenlist start//// +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; +); +////%Flattenlist end//// + +////%Divoptions start//// +Divoptions(options):=( +//help:Divoptions(options); + regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,color,opstr,opcindy,flg, + tmp,tmp1,tmp2); + Ltype="dr"; // 2015.01.13 + Noflg=0; + Inflg=0; + Outflg=0; + eqL=[]; + realL=[]; + strL=[]; + color=KCOLOR; //180603 + 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, + tmp=Strsplit(#,"="); //180602from + tmp1=Toupper(tmp_1); + tmp2=tmp_2; + if(tmp1=="COLOR", + if(indexof(tmp2,"[")>0, //180928 + tmp1=parse(tmp2); + color=tmp1; + if(length(tmp1)==4, + tmp1=Colorcmyk2rgb(tmp1); + ); + , + tmp1=Colorname2rgb(tmp2); color=tmp1; //181212 + ); + tmp="color->"+text(tmp1); + opcindy=opcindy+","+tmp; + , + eqL=append(eqL,#); + );//180602to + 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, + if(length(#)>0, //180408 + strL=append(strL,#); + opstr=opstr+","+Dq+#+Dq; + ); + ); + ); + ); + if(indexof(opcindy,"color->")==0,// 16.10.07from + opcindy=opcindy+",color->"+text(KCOLOR); + ); + [Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,color,opstr,opcindy]; +); +////%Divoptions end//// + +////%Dotprod start//// +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; +); +////%Dotprod end//// + +////%Crossprod start//// +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; +); +////%Crossprod end//// + +////%Mvprod start//// +Mvprod(mat,vec):=( //190127 + regional(vecL); + if(Measuredepth(vec)==0,vecL=[vec],vecL=vec); + Mvprod(mat,vecL,length(vecL)); +); +Mvprod(mat,vecL,nn):=( +//help:Mvprod(mat,vec(list)); + regional(tmp,out); + if(nn==1, + out=mat*vecL_1; + , + out=[]; + forall(1..nn, + tmp=mat*vecL_#; + out=append(out,tmp); + ); + ); + out; +); +////%Mvprod end//// + +////%Ptstart start//// +Ptstart(Fig):=( +//help:Ptstart("gr1"); + regional(tmp); + if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.21 + tmp_1; +); +////%Ptstart end//// + +////%Ptend start//// +Ptend(Fig):=( +//help:Ptend("gr1"); + regional(tmp); + if(isstring(Fig),tmp=parse(Fig),tmp=Fig); + tmp_(length(tmp)); // 15.04.12 +); +////%Ptend end//// + +////%Numptcrv start//// +Numptcrv(Fig):=( +//help:Numptcrv("gr1"); + regional(tmp); + if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 15.12.23 + length(tmp); +); +////%Numptcrv end//// + +////%Ptcrv start//// +Ptcrv(Num,Fig):=( +//help:Ptcrv(10,"gr1"); + regional(tmp); + if(isstring(Fig),tmp=parse(Fig),tmp=Fig); + tmp_Num; +); +////%Ptcrv end//// + +////%Invert start//// +Invert(Fig):=( +//help:Invert("gr1"); //no ketjs + regional(tmp); + if(isstring(Fig),tmp=parse(Fig),tmp=Fig); // 16.01.27 + reverse(tmp); +); +Invert(nm,Fig):=Invert(nm,Fig,["nodisp"]); // from 160127 +Invert(nm,Fig,options):=( +//help:Invert("1","gr1"); + regional(name,tmp); + name="-inv"+nm; + tmp=Invert(Fig); + Listplot(name,tmp,options); +);// to 160127 +////%Invert end//// + +////%Paramoncrv start//// +Paramoncrv(pP,Gdata):=Paramoncurve(pP,Gdata);//180723 +////%Paramoncrv end//// +////%Paramoncurve start//// +Paramoncurve(point,Gdata):=( +//help:Paramoncurve(A,"gr1");//180723[3lines] + regional(Tmp,PtL,pP); + if(ispoint(point),pP=point.xy,pP=point); +// 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; +); +////%Paramoncurve end//// + +////%Pointoncrv start//// +Pointoncrv(tT,PtL):=Pointoncurve(tT,PtL); +////%Pointoncrv end//// +////%Pointoncurve start//// +Pointoncurve(tTorg,Gdata):=( +//help:Pointoncurve(20.5,"gr1"); + regional(tT,Out,Eps,nN,sS,Pa,Pb,PtL); + if(isstring(Gdata),PtL=parse(Gdata),PtL=Gdata); + if(length(PtL)==1,PtL=PtL_1); + tT=max([tTorg,1]); //18.01.04 + tT=min([tT,length(PtL)]); //18.01.04 + Eps=10^(-5); //18.01.04 + 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; +); +////%Pointoncurve end//// + +////%Koutenseg start//// +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; +); +////%Koutenseg end//// + +///////// Start of old Intersect //////////// + +////%Intersectcrvspp start//// +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 until + Out; +); +////%Intersectcrvspp end//// + +////%Intersectcrvs start//// +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); +); +////%Intersectcrvs end//// + +///////// End of old Intersect //////////// + +/////////// Start of new Intersect ////////////// + +////%Intersectline start//// +Intersectline(p1,v1,p2,v2):=( + regional(Eps,d,dt,ds,t,s,pt,out,tmp,tmp1,tmp2,tmp3); + Eps=10^(-5); + out=[]; + tmp=Dotprod(v1,v2); + tmp1=[tmp,|v1|^2]; + tmp2=[-|v2|^2,-tmp]; + tmp3=[Dotprod(p2-p1,v2),Dotprod(p2-p1,v1)]; + d=Crossprod(tmp1,tmp2); + tmp=abs(Crossprod(v1,v2)); + if(tmp>Eps, + dt=Crossprod(tmp3,tmp2); + ds=Crossprod(tmp1,tmp3); + t=dt/d; + s=ds/d; + pt=p1+v1*t; + out=[pt,t,s]; + , + tmp1=Crossprod(p2-p1,v1)/|v1|; //18.01.05 + out=[abs(tmp1)]; //18.01.05 + ); + out; +); +////%Intersectline end//// + +////%Intersectseg start//// +Intersectseg(seg1,seg2):=Intersectseg(seg1,seg2,0.01); +Intersectseg(seg1org,seg2org,Eps1):=( + regional(Eps,seg1,seg2,p1,p2,q1,q2,t,s,pt,n,pts,out,dist, + tmp,tmp1,tmp2,tmp3); + Eps=10^(-4); + //Eps1=0.01; + seg1=seg1org; + seg2=seg2org; + if(isstring(seg1),seg1=parse(seg1)); + if(isstring(seg2),seg2=parse(seg2)); + out=[]; + p1=seg1_1; q1=seg1_2; + p2=seg2_1; q2=seg2_2; + if((|q1-p1|<Eps)%(|q2-p2|<Eps), + out=[-1]; + , + tmp=Intersectline(p1,q1-p1,p2,q2-p2); + if(islist(tmp_1), + pt=tmp_1; t=tmp_2; s=tmp_3; + if((t*(t-1)<Eps)&(s*(s-1)<Eps), + out=[0,pt,t,s]; + , + t=min([max([t,0]),1]); + s=min([max([s,0]),1]); + tmp3=[|p1-p2|,|p1-q2|,|q1-p2|,|q1-q2|]; //18.01.30from + tmp1=[Op(2,q2-p2),-Op(1,q2-p2)]; + tmp=Intersectline(p1,tmp1,p2,q2-p2); + if(islist(tmp_1), + if(tmp_3*(tmp_3-1)<Eps, + tmp3=append(tmp3,|tmp_1-p1|); + ); + ); + tmp=Intersectline(q1,tmp1,p2,q2-p2); + if(islist(tmp_1), + if(tmp_3*(tmp_3-1)<Eps, + tmp3=append(tmp3,|tmp_1-q1|); + ); + ); + tmp1=[Op(2,q1-p1),-Op(1,q1-p1)]; + tmp=Intersectline(p2,tmp1,p1,q1-p1); + if(islist(tmp_1), + if(tmp_3*(tmp_3-1)<Eps, + tmp3=append(tmp3,|tmp_1-p2|); + ); + ); + tmp=Intersectline(q2,tmp1,p1,q1-p1); + if(islist(tmp_1), + if(tmp_3*(tmp_3-1)<Eps, + tmp3=append(tmp3,|tmp_1-q2|); + ); + ); + out=[min(tmp3),pt,t,s]; //18.01.30until + ); + , + dist=tmp_1; + tmp1=q1-p1; + n=[tmp1_2,-tmp1_1]/|tmp1|; + pts=[]; + tmp=Intersectline(p1,n,p2,q2-p2); + if(tmp_3*(tmp_3-1)<Eps, + tmp1=(1-tmp_3)*p2+tmp_3*q2; + pts=append(pts,[tmp1,0,tmp_3]); + ); + tmp=Intersectline(q1,n,p2,q2-p2); + if(tmp_3*(tmp_3-1)<Eps, + tmp1=(1-tmp_3)*p2+tmp_3*q2; + pts=append(pts,[tmp1,1,tmp_3]); + ); + tmp=Intersectline(p2,n,p1,q1-p1); + if(tmp_3*(tmp_3-1)<Eps, + tmp1=(1-tmp_3)*p1+tmp_3*q1; + pts=append(pts,[tmp1,tmp_3,0]); + ); + tmp=Intersectline(q2,n,p1,q1-p1); + if(tmp_3*(tmp_3-1)<Eps, + tmp1=(1-tmp_3)*p1+tmp_3*q1; + pts=append(pts,[tmp1,tmp_3,2]); + ); + if(length(pts)==0, + tmp1=min([|p2-p1|,|q2-p1|,|p2-q1|,|q2-q1|]); + out=[tmp1]; + , + if(dist>Eps1, + out=[dist]; + , + tmp=apply(pts,#_1_1); + tmp1=sum(tmp)/(length(pts)); + tmp=apply(pts,#_1_2); + tmp2=sum(tmp)/(length(pts)); + tmp3=[tmp1,tmp2]; + tmp=Nearestpt(tmp3,seg1); + tmp1=tmp_2; + tmp=Nearestpt(tmp3,seg2); + tmp2=tmp_2; + out=[dist,tmp3,tmp1,tmp2]; + ); + ); + ); + ); + out; +); +////%Intersectseg end//// + +////%Osplineseg start//// +Osplineseg(list):=Osplineseg(list,[]); +Osplineseg(ptlist,optionsorg):=( + regional(tmp,tmp1,tmp2,list,ptL,ctrL,Eps,Eps0, + p0,p1,p2,p3,pQ,pR,cc,p01,p02,p11,p12,p21,p22,p31,p32,out); + Eps=10^(-2); + Eps0=10^(-6); + if(isstring(ptlist),list=parse(ptlist),list=ptlist); + p0=list_1; p1=list_2; p2=list_3; p3=list_4; + 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=[pQ,pR]; + options=optionorg; + options=concat(options,["Num=20","nodata"]); + out=Bezier("",[p1,p2],ctrL,options); + out; +); +////%Osplineseg end//// + +////%Intersectpartseg start//// +Intersectpartseg(crv1,crv2,ii,jj,Eps1,Eps2):=( + Intersectpartseg(crv1,crv2,ii,jj,Eps1,Eps2,10*Eps2); +); +Intersectpartseg(crv1org,crv2org,ii,jj,Eps1,Eps2,Dist):=( + regional(crv1,crv2,Eps,dst,kk,ll,seg1,seg2,snang, + p0,p1,p2,p3,os1,os2,out,tmp,tmp1,tmp2,flg); + crv1=crv1org; crv2=crv2org; + if(isstring(crv1),crv1=parse(crv1)); + if(isstring(crv2),crv2=parse(crv2)); + Eps=10^(-4); +// Eps1=0.01; +// Eps2=0.1; +// Dist=10*Eps2; + out=[]; + seg1=[crv1_ii,crv1_(ii+1)]; + seg2=[crv2_jj,crv2_(jj+1)]; + tmp1=seg1_2-seg1_1; + tmp2=seg2_2-seg2_1; + snang=abs(Crossprod(tmp1,tmp2))/(Norm(tmp1)*Norm(tmp2)); + tmp=Intersectseg(seg1,seg2,Eps1); + dst=tmp_1; + if(dst<Eps, + out=[tmp_2,ii+tmp_3,jj+tmp_4,dst,snang]; + , + if(dst<Eps2, + if((length(crv1)==2)%(|seg1_2-seg1_1|>Dist-Eps), + os1=seg1; + , + p1=seg1_1; p2=seg1_2; + if(ii==1, + p3=crv1_3; + tmp=p2-p1; + tmp=(p1+p2)/2+[tmp_2,-tmp_1]; + p0=Reflectpoint(p3,[(p1+p2)/2,tmp]); + , + if(ii==length(crv1)-1, + p0=crv1_(ii-1); + tmp=p2-p1; + tmp=(p1+p2)/2+[tmp_2,-tmp_1]; + p3=Reflectpoint(p0,[(p1+p2)/2,tmp]); + , + p0=crv1_(ii-1); p3=crv1_(ii+2); + ); + ); + os1=Osplineseg([p0,p1,p2,p3]); + ); + if((length(crv2)==2)%(|seg2_2-seg2_1|>Dist-Eps), //18.01.05 + os2=seg2; + , + p1=seg2_1; p2=seg2_2; + if(jj==1, + p3=crv2_3; + tmp=p2-p1; + tmp=(p1+p2)/2+[tmp_2,-tmp_1]; + p0=Reflectpoint(p3,[(p1+p2)/2,tmp]); + , + if(jj==length(crv2)-1, + p0=crv2_(jj-1); + tmp=p2-p1; + tmp=(p1+p2)/2+[tmp_2,-tmp_1]; + p3=Reflectpoint(p0,[(p1+p2)/2,tmp]); + , + p0=crv2_(jj-1); p3=crv2_(jj+2); + ); + ); + os2=Osplineseg([p0,p1,p2,p3]); + ); + tmp2=[]; + forall(1..(length(os1)-1),kk, + forall(1..(length(os2)-1),ll, + seg1=[os1_kk,os1_(kk+1)]; + seg2=[os2_ll,os2_(ll+1)]; + tmp=Intersectseg(seg1,seg2,Eps1); + if((tmp_1<Eps1)&(length(tmp)>1), //18.02.06 + if(tmp_1<dst+Eps, + dst=tmp_1; + tmp2=select(tmp2,#_1<dst); + tmp2=append(tmp2,[dst,tmp_2]); + ); + ); + ); + ); + if(length(tmp2)>0, + tmp=apply(tmp2,#_2_1); + tmp1=[sum(tmp)/length(tmp2)]; + tmp=apply(tmp2,#_2_2); + tmp1=append(tmp1,sum(tmp)/length(tmp2)); + out=[tmp1]; + p1=crv1_ii; p2=crv1_(ii+1); + tmp=[Op(2,p2-p1),-Op(1,p2-p1)]; + tmp=Intersectline(out_1,tmp,p1,p2-p1); + tmp=min([max([tmp_3,0]),1]); + out=[tmp1,ii+tmp]; + p1=crv2_jj; p2=crv2_(jj+1); + tmp=[Op(2,p2-p1),-Op(1,p2-p1)]; + tmp=Intersectline(out_1,tmp,p1,p2-p1); + tmp=min([max([tmp_3,0]),1]); + out=concat(out,[jj+tmp,dst,snang]); + ); + ); + ); + out; +); +////%Intersectpartseg end//// + +////%Collectsameseg start//// +Collectsameseg(ptdL):=( + regional(Eps,gL,rL,numL,ii,jj,flg,tmp,tmp1,tmp2,tmp1md, + dst,kk,s1,e1,s2,e2); + Eps00=10^(-8); + if(length(ptdL)==0, + gL=[];rL=[]; + , + tmp1md=[ptdL_1]; + rL=ptdL_(2..(length(ptdL))); + tmp1=tmp1md_1; + kk=floor(tmp1_2); + if(tmp1_2<kk+Eps00, + s1=kk-1-Eps00; e1=s1+2+2*Eps00; + , + s1=kk-Eps00; e1=s1+1+2*Eps00; + ); + kk=floor(tmp1_3); + if(tmp1_3<kk+Eps00, + s2=kk-1-Eps00; e2=s2+2+2*Eps00; + , + s2=kk-Eps00; e2=s2+1+2*Eps00; + ); + numL=[]; + forall(1..(length(rL)),ii, + tmp=rL_ii; + tmp1=tmp_2;tmp2=tmp_3; + if((tmp1>s1)&(tmp1<e1)&(tmp2>s2)&(tmp2<e2), + tmp1md=append(tmp1md,tmp); + numL=append(numL,ii); + ); + ); + gL=[]; + tmp=apply(tmp1md,#_4); + dst=min(tmp); + forall(tmp1md, + if(#_4<dst+Eps00, + gL=append(gL,#); + ); + ); + rL=remove(rL,rL_(numL)); + ); + [gL,rL]; +); +////%Collectsameseg end//// + +////%Intersectcurvespp start//// +Intersectcurvespp(crv1org,crv2org):=Intersectcurvespp(crv1org,crv2org,[]); +Intersectcurvespp(crv1org,crv2org,options):=( +//help:Intersectcurvespp(crv1,crv2); +//help:Intersectcurvespp(options=[Eps1(0.01),Eps2(0.1),Dist(2)]) + regional(Eps,Eps1,Eps2,Dist,crv1,crv2,ii,jj,seg1,seg2,self,loopL,out, + flg,tmp,tmp1,tmp2); + Eps=10^(-4); + Eps1=0.01; + Eps2=0.1; + Dist=10*Eps2; + if(length(options)>0, + Eps1=options_1; + if(length(options)>1, + Eps2=options_2; + Dist=10*Eps2; + if(length(options)>2, + Dist=options_3; + ); + ); + ); + if(isstring(crv1org),tmp1=parse(crv1org),tmp1=crv1org);//18.01.05from + if(isstring(crv2org),tmp2=parse(crv2org),tmp2=crv2org); + tmp1=apply(tmp1,LLcrd(#)); + tmp2=apply(tmp2,LLcrd(#)); + crv1=[tmp1_1]; + forall(tmp1, + tmp=crv1_(length(crv1)); + if(|tmp-#|>Eps, + crv1=append(crv1,#); + ); + ); + crv2=[tmp2_1]; + forall(tmp2, + tmp=crv2_(length(crv2)); + if(|tmp-#|>Eps, + crv2=append(crv2,#); + ); + );//18.01.05until + if(crv1==crv2, + self=1; + , + self=0; + ); + out=[]; + forall(1..(length(crv1)-1),ii, + if(self==0, + loopL=1..(length(crv2)-1); + , + loopL=(ii+2)..(length(crv2)-1); + ); + forall(loopL,jj, + tmp=Intersectpartseg(crv1,crv2,ii,jj,Eps1,Eps2,Dist); + if(length(tmp)>0, + if(length(out)==0, + out=[tmp]; + , + tmp1=out_(length(out)); + if(|tmp1_1-tmp_1|>Eps1, + out=append(out,tmp); + ); + ); + if(self==1, + tmp=[tmp_1,tmp_3,tmp_2,tmp_4,tmp_5]; + out=append(out,tmp); + ); + ); + ); + ); + tmp2=out; + out=[]; + tmp1=tmp2; + flg=0; + forall(1..(length(tmp2)), + if(flg==0, + tmp=Collectsameseg(tmp1); + out=append(out,tmp_1); + if(length(tmp_2)==0, + flg=1; + , + tmp1=tmp_2; + ); + ); + ); + forall(1..(length(out)),ii, + tmp1=out_ii; + if(length(tmp1)==1, + out_ii=tmp1_1; + , + tmp=apply(tmp1,#_4); + dst=min(tmp); + tmp1=select(tmp1,#_4<dst+Eps); + tmp=apply(tmp1,#_1); + tmp=sum(tmp)/length(tmp); + tmp2=[tmp]; + tmp=Nearestpt(tmp2_1,crv1org); + tmp2=append(tmp2,tmp_2); + tmp=Nearestpt(tmp2_1,crv2org); + tmp2=append(tmp2,tmp_2); + tmp2=concat(tmp2,[dst,tmp1_1_5]); + out_ii=tmp2; + ); + ); + if(length(out)>0, //190221from + out=sort(out,[#_2]); + ); //190221to + out; +); +////%Intersectcurvespp end//// + +////%Intersectcurves start//// +Intersectcurves(crv1org,crv2org):=Intersectcurves(crv1org,crv2org,[]); +Intersectcurves(crv1org,crv2org,options):=( +//help:Intersectcurves(crv1,crv2); +//help:Intersectcurves(options=[Eps1(0.1),Dist(2)]) + regional(tmp); + tmp=Intersectcurvesop(crv1org,crv2org,options); + tmp=apply(tmp,#_1); +); +////%Intersectcurves end//// + +///////////End of new Intersect ////////////// + +////%Nearestptcrvphy start//// +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]; +); +////%Nearestptcrvphy end//// + +////%Nearestptcrv start//// +Nearestptcrv(point,plist):=( +//help:Nearestptcrv(A,"gr1"); + regional(tmp,pt);//180723[3lines] + if(ispoint(point),pt=point.xy,pt=point); + tmp=Nearestpt(pt,plist); + tmp_1; +); +////%Nearestptcrv end//// + +////%Nearestpt start//// +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.03until + ); + if(Flg==0, + Ans=Ans_(3..5); + ); + Ans; +); +////%Nearestpt end//// + +////%Derivative start//// +Derivative(pdstr,ptinfo):=Derivative(pdstr,ptinfo,[]);//180719 +Derivative(Arg1,Arg2,Arg3):=(//1807120 +//help:Derivative(plotdata,"x=2"); +//help:Derivative(plotdata,"y=1"); + regional(pdstr,ptinfo,options,name,v,pt,par,p0,p1,p2,p3, + pQ,pR,cc,m1,m2,out,tmp,tmp1,reL,ch,flg); + if(!islist(Arg3), + Derivative(Arg1,Arg2,Arg3,[]); + , + pdstr=Arg1; ptinfo=Arg2; options=Arg3; + tmp=Divoptions(options); + reL=tmp_5; + ch=1; + if(length(reL)>0, + ch=reL_1; + options=remove(options,reL); + ); + flg=0;//1807120 + name=""; + if(isstring(ptinfo), + tmp=Strsplit(ptinfo,"="); + name=Toupper(substring(tmp_1,0,1)); + v=parse(tmp_2); + if(name=="X", + tmp1=Lineplot("",[[v,0],[v,1]],["nodata"]); + , + tmp1=Lineplot("",[[0,v],[1,v]],["nodata"]); + ); + tmp=Intersectcurvespp(pdstr,tmp1); + if(length(tmp)==0, + println(" Derivative cannot be found"); + out=""; + flg=1; + , + tmp=sort(tmp,[#_3]); + pt=tmp_ch_1; + par=tmp_ch_2; + ); + , + pt=ptinfo_1; + par=ptinfo_2; + ); + if(flg==0, + p0=Pointoncurve(par-1,pdstr); + p1=pt; + p2=Pointoncurve(par+1,pdstr); + p3=Pointoncurve(par+2,pdstr); + 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); + m1=-p1_1+pQ_1; + m2=-p1_2+pQ_2; + if(name=="",out=[m1,m2]); + if(name=="X",out=m2/m1); + if(name=="Y",out=m1/m2); + ); + out; + ); +);//180720to +Derivative(fun,var,value,options):=( +//help:Derivative("x^3","x",2); + regional(eqL,method,eps,str,x1,x2,y1,y2,tmp,tmp1,tmp2); + method="N"; + tmp=Divoptions(options); + eqL=tmp_5; + forall(eqL, + tmp=substring(#,"="); + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp,tmp+1); + if(tmp1=="M", + method=Toupper(tmp2); + ); + ); + if(method=="D", + str="d"+PaO(); + str=str+replace(fun,var,"#")+","; + str=str+value+")"; + tmp=Pcrd([1,parse(str)]); // 14.11.08 + tmp_2; + ); + if(method=="N", + eps=10^(-6); + x1=max(XMIN,value-eps); + x2=min(XMAX,value+eps); + tmp=Assign(fun,[var,"("+format(x1,6)+")"]);//180408 + y1=parse(tmp); + tmp=Assign(fun,[var,"("+format(x2,6)+")"]);//180408 + y2=parse(tmp); + (y2-y1)/(x2-x1); + ); +); +////%Derivative end//// + +////%Tangentplot start//// +Tangentplot(nm,pdstr,ptinfo):=Tangentplot(nm,pdstr,ptinfo,[]); //180720 +Tangentplot(nm,pdstr,ptinfo,optionsorg):=( +//help:Tangentplot("1",pdstr,"x=2"); +//help:Tangentplot("1",pdstr,"y=3"); +//help:Tangentplot("1",pdstr,[[1,2],20.5]); +//help:Tangentplot(Options2=[choice(1)]); + regional(name,v,pt,par,options,reL,ch,tmp,flg); + options=optionsorg; //1807120from + tmp=Divoptions(options); + reL=tmp_6; + ch=1; + if(length(reL)>0, + ch=reL_1; + options=remove(options,reL); + ); + flg=0;//1807120to + name=""; + if(isstring(ptinfo), + tmp=Strsplit(ptinfo,"="); + name=Toupper(substring(tmp_1,0,1)); + v=parse(tmp_2); + if(name=="X", + tmp1=Lineplot("",[[v,0],[v,1]],["nodata"]); + , + tmp1=Lineplot("",[[0,v],[1,v]],["nodata"]); + ); + tmp=Intersectcurvespp(pdstr,tmp1); + if(length(tmp)==0,//1807120 + println(" Derivative cannot be calculated"); + flg=1; + , + tmp=sort(tmp,[#_3]);//1807120[3lines] + pt=tmp_ch_1; + par=tmp_ch_2; + ); + , + pt=ptinfo_1; + par=ptinfo_2; + ); + if(flg==0, + tmp=Derivative(pdstr,[pt,par]); + if(vname=="X", + Lineplot("tn"+nm,[pt,pt+tmp],options); + , + Lineplot("tn"+nm,[pt,pt+tmp],options); + ); + ); +); +////%Tangentplot end//// + +////%Integrate start//// +Integrate(Arg1,Arg2):=( //180708from + if(isstring(Arg2), + Integratefn(Arg1,Arg2,[]); + , + Integratedt(Arg1,Arg2,[]); + ); +); +Integrate(Arg1,Arg2,options):=( + if(isstring(Arg2), + Integratefn(Arg1,Arg2,options); + , + Integratedt(Arg1,Arg2,options); + ); +);//180708to +////%Integrate end//// + +////%Integratedt start//// +Integratedt(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; + ); +); +////%Integratedt end//// + +////%Integratefn start//// +Integratefn(fnstr,rngstr,options):=( //180708from +//help:Integrate("sin(x)","x=[0,pi]",["Num=100","Rule=o"]); + regional(Sm,Lx,Rx,va1,va2,Num,Way,sx,ex,dx,xn,yn, + x0,x1,x2,y0,y1,y2,tmp,tmp1,tmp2,eqL,var,range,plt); + Num=100; + Way="o"; + tmp=Divoptions(options); + eqL=tmp_5; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(tmp1=="N", + Num=parse(tmp2); + ); + if(tmp1=="R", + tmp2=substring(tmp2,0,1); + ); + ); + tmp=Strsplit(rngstr,"="); + var=tmp_1; + range=parse(tmp_2); + if(Way=="o", + sx=range_1; + ex=range_2; + dx=(ex-sx)/Num; + xn=apply(0..Num,sx+#*dx); + yn=apply(xn,parse(Assign(fnstr,[var,#]))); //181230 + plt=apply(1..(Num+1),[xn_#,yn_#]); + Sm=IntegrateO(plt,range); + );//180708to + if(Way=="t", + Sm=0; + 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; + ); + ); + if(Way=="s", + Sm=0; + 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; +); +////%Integratefn end//// + +////%IntegrateO start//// +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; +); +////%IntegrateO end//// + +////%FindareaP start//// +FindareaP(pdstr):=( //180722 +//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; +); +////%FindareaP end//// + +////%FindareaO start//// +FindareaO(pdstr,len):=( // 18.10,13 + regional(pd,p0,p1,p2,p3,s,tmp,Lflg); + if(isstring(pdstr),pd=parse(pdstr),pd=pdstr); + Lflg=0; + s=0; + forall(1..(length(pd)-1), + p1=pd_#; + p2=pd_(#+1); + if(Dist(p1,p2)<len, + if(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1)); + if(Dist(p0,p1)>len,p0=2*p1-p2); + if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2)); + if(Dist(p2,p3)>len,p3=2*p2-p1); + tmp=IntegrateO(p0,p1,p2,p3); + , + tmp=(p1_2+p2_2)*(p2_1-p1_1)/2; + ); + s=s+tmp; + ); + if(s<0,s=-s); + s; +); +////%FindareaO end//// + +////%Findarea start//// +Findarea(pdstr):=Findarea(pdstr,[]);//180722from +Findarea(pdstr,options):=( +//help:Findarea("cr1"); +//help:Findarea(options=["Len=1"]); + regional(tmp,tmp1,tmp2,eqL,way,len,out); + tmp=Divoptions(options); + eqL=tmp_5; + way="O"; + len=1; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(tmp1=="W", + way=Toupper(substring(tmp2,0,1)); + ); + if(tmp1=="L",//181013from + len=parse(tmp2); + );//181013to + ); + if(way=="O", + out=FindareaO(pdstr,len);//181013 + , + out=FindareaP(pdstr); + ); + out; +);//180722to +////%Findarea end//// + +////%Findlength start//// +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; +); +////%Findlength end//// + +////%Inversefun start//// +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); +); +////%Inversefun end//// + +////%Com0th start//// +Com0th(String):=( + regional(str); + str=replace(String,LFmark,""); + COM0thlist=append(COM0thlist,str); +); +////%Com0th end//// + +////%Com1st start//// +Com1st(String):=( + regional(str); + str=replace(String,LFmark,""); + GLIST=append(GLIST,str); // 15.05.27 +// COM1stlist=append(COM1stlist,str); +); +////%Com1st end//// + +////%Com2nd start//// +Com2nd(String):=( +// help:Com2nd(str); + regional(str,tmp); + str=replace(String,LFmark,""); + COM2ndlist=append(COM2ndlist,str); +); +////%Com2nd end//// + +////%Com2ndpre start//// +Com2ndpre(String):=( + regional(str); + str=replace(String,LFmark,""); + COM2ndlist=prepend(str,COM2ndlist); +); +////%Com2ndpre end//// + +////%Texcom start//// +Texcom(strorg):=( //17.09.22 +//help:Texcom("\color[cmyk]{0,0,0,0.5}"); + regional(str); + str=replace(strorg,"\","\\"); + str=replace(str,"\\\\","\\"); + str="Texcom("+Dq+str+Dq+")"; + Com2nd(str); +); +////%Texcom end//// + +////%Ketcindylogo start//// +Ketcindylogo():=( +//help:Ketcindylogo(); + Com2nd("Texcom("+Dq+"\def\ketcindy{{K\kern-.20em + \lower.5ex\hbox{E}\kern-.125em{TCindy}}}"+Dq+")"); +); +////%Ketcindylogo end//// + +////%Drwline start//// +Drwline():=Drwline(Textformat(GrL,5)); +Drwline(gstr):=( + Com2nd("Drwline("+gstr+")"); +); +////%Drwline end//// + + +////%Dashline start//// +Dashline(gstr):=( + Com2nd("Dashline("+gstr+")"); +); +////%Dashline end//// + +////%Invdashline start//// +Invdashline(gstr):=( + Com2nd("Invdashline("+gstr+")"); +); +////%Invdashline end//// + +////%Dottedline start//// +Dottedline(gstr):=( + Com2nd("Dottedline("+gstr+")"); +); +////%Dottedline end//// + +////%Drawlinetype start//// +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); + ); +); +////%Drawlinetype end//// + +////%Setunitlen start//// +Setunitlen():=( + println(ULEN); +); +Setunitlen(UI):=( +//help:Setunitlen("1.5cm"); + regional(Dx,Dy,Sym,SL,OL,Is,VL,Ucode,ii,cha, + str,Unit,Valu,flg,tmp); + Dx=XMAX-XMIN; + Dy=YMAX-YMIN; + Sym=".0123456789 +-*/"; + SL=Sym; + OL="+-*/"; + if(length(UI)>0, + ULEN=UI; + GLIST=append(GLIST,"Setunitlen("+Dq+UI+Dq+")");//180513 //no ketjs + ); + Is=1; + VL=""; + Ucode=ULEN; + flg=0; + forall(1..(length(Ucode)),ii, + if(flg==0, + cha=substring(Ucode,ii-1,ii); + if(indexof(SL,cha)>0, + if(indexof(OL,cha)>0, + tmp=substring(Ucode,Is-1,ii); + str=VL+tmp+cha; + VL=str; + Is=ii+1; + ); + , + Unit=substring(Ucode,ii-1,ii+1); + str=substring(Ucode,Is-1,ii-1); + VL=VL+str; + flg=1; + ); + ); + ); + Valu=parse(VL); + str=format(Valu,6); + ULEN=str+Unit; + if(Unit=="cm",MilliIn=1000/2.54*Valu); + if(Unit=="mm",MilliIn=1000/2.54*Valu/10); + if(Unit=="in",MilliIn=1000*Valu); + if(Unit=="pt",MilliIn=1000/72.27*Valu); + if(Unit=="pc",MilliIn=000/6.022*Valu); + if(Unit=="bp",MilliIn=1000/72*Valu); + if(Unit=="dd2",MilliIn=1000/1238/1157/72.27*Valu); + if(Unit=="cc",MilliIn=1000/1238/1157/72.27*12*Valu); + if(Unit=="sp",MilliIn=1000/72.27/65536*Valu/10); + MARKLEN=MARKLENNow*1000/2.54/MilliIn; + MEMORI=MEMORINow*1000/2.54/MilliIn; +); +////%Setunitlen end//// + +////%Setmarklen start//// +Setmarklen(ratio):=( +//help:Setmarklen(0.2); + MARKLEN=ratio*0.2;//16.11.01 + Com2nd("Setmarklen("+Textformat(ratio,5)+")"); //no ketjs +); +////%Setmarklen end//// + +////%Setorigin start//// +Setorigin(point):=( +//help:Setorigin([1,2]); + GENTEN=point; //181231 + Com2nd("Setorigin("+Textformat(point,5)+")"); //no ketjs +); +////%Setorigin end//// + +////%Fontsize start//// +Fontsize(sizestr):=( +//help:Fontsize("s"); + Com2nd("Fontsize('"+sizestr+"')"); //no ketjs +); +////%Fontsize end//// + +////%Setpen start//// +Setpen(width):=( +//help:Setpen(2); + PenThick=PenThickInit*width; // 16.04.09 + Com2nd("Setpen("+text(width)+")"); //no ketjs +); +////%Setpen end//// + +////%Setscaling start//// +Setscaling(sc):=( +//help:Setscaling(3); + regional(tmp); + tmp=format(sc,5); + if(!islist(sc), + SCALEX=1; + SCALEY=sc; + Com0th("Setscaling("+tmp+")"); + , + SCALEX=sc_1; + SCALEY=sc_2; + Com0th("Setscaling("+tmp_1+","+tmp_2+")"); + ); + Setwindow("Msg=no"); +); +////%Setscaling end//// + +////%Lcrd start//// +Lcrd(pt):=( + regional(tmp); + if(ispoint(pt), + tmp=[pt.x/SCALEX,pt.y/SCALEY]; + , + tmp=pt; + ); + tmp; +); +////%Lcrd end//// + +////%Pcrd start//// +Pcrd(pt):=( + regional(tmp); + if(ispoint(pt), + tmp=re(pt.xy); // 15.07.24 + , + tmp=[pt_1*SCALEX,pt_2*SCALEY]; + ); + tmp; +); +////%Pcrd end//// + +////%LLcrd start//// +LLcrd(pt):=( + regional(tmp); + if(ispoint(pt), + tmp=pt.xy + , + tmp=pt; + ); + tmp=[tmp_1/SCALEX,tmp_2/SCALEY]; + tmp; +); +////%LLcrd end//// + +////%Doscaling start//// +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; +); +////%Doscaling end//// + +////%Unscaling start//// +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; +); +////%Unscaling end//// + +////%Setpt start//// +Setpt(n):=Ptsize(n); +//help:Setpt(5); +Ptsize(n):=( + println("Setpt("+text(n)+")"); + TenSize=TenSizeInit*n; + Com2nd("Setpt("+text(n)+")"); // 14.01.19 +); +////%Setpt end//// + +////%Definecolor start//// +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); +); +////%Definecolor end//// + +////%Setcolor start//// +Setcolor(parorg):=( //180603renew +//help:Setcolor([1,0,0,1]); +//help:Setcolor([1,1,0]); + regional(par,cstr,tmp,tmp1); + par=parorg; + if(isstring(par), + if(par=="black",par=[0,0,0]); + if(par=="white",par=[1,1,1]); + if(par=="red",par=[1,0,0]); + if(par=="green",par=[0,1,0]); + if(par=="blue",par=[0,0,1]); + if(par=="cyan",par=[0,1,1]); + if(par=="magenta",par=[1,0,1]); + if(par=="yellow",par=[1,1,0]); + ); + cstr=text(par); + cstr=substring(cstr,1,length(cstr)-1); + if(length(par)==3, + cstr="Texcom('\\color[rgb]{"+cstr+"}')"; //no ketjs + KCOLOR=par; + ); + if(length(par)==4, + cstr="Texcom('\\color[cmyk]{"+cstr+"}')"; //no ketjs + tmp=Colorcmyk2rgb(par); + KCOLOR=tmp; + ); + Com2nd(cstr); //no ketjs +); +////%Setcolor end//// + +////%Colorrgb2cmyk start//// +Colorrgb2cmyk(clr):=( +// help:ColorRgb([0.2,0.5,0.1]); + regional(clrnew,tmp,black); + tmp=apply(clr,1-#); + black=min(tmp); + if(black!=1, //181112from + tmp=apply(clr,(1-#-black)/(1-black)); + clrnew=append(tmp,black); + , + clrnew=[0,0,0,1]; + ); //181112to + clrnew; +); +////%Colorrgb2cmyk end//// + +////%Colorcmyk2rgb start//// +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; +); +////%Colorcmyk2rgb end//// + +////%Colorrgbhsv start//// +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]; +); +////%Colorrgbhsv end//// + +////%Colorhsvrgb start//// +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; +); +////%Colorhsvrgb end//// + +////%Colorrgbhsl start//// +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]; +); +////%Colorrgbhsl end//// + +////%Colorhslrgb start//// +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]; +); +////%Colorhslrgb end//// + +////%Hue2rgb start//// +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; +); +////%Hue2rgb end//// + +////%Colorrgbhwb start//// +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 ]; +); +////%Colorrgbhwb end//// + +////%Colorhwbrgb start//// +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; +); +////%Colorhwbrgb end//// + +////%Colorcode start//// +Colorcode(src,dest,sL):=( // 181212 some colorchange deleted +//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=="cmyk",dL=Colorrgb2cmyk(sL)); + if(src=="cmyk" & dest=="rgb",dL=Colorcmyk2rgb(sL)); + if(src=="rgb" & dest=="hsv", dL=Colorrgbhsv(sL)); + if(src=="rgb" & dest=="hsl", dL=Colorrgbhsl(sL)); + if(src=="rgb" & dest=="hwb", dL=Colorrgbhwb(sL)); + if(src=="hsv" & dest=="rgb", dL=Colorhsvrgb(sL)); + if(src=="hsl" & dest=="rgb", dL=Colorhslrgb(sL)); + if(src=="hwb" & dest=="rgb", dL=Colorhwbrgb(sL)); + dL; +); +////%Colorcode end//// + +////%Colorname2rgb start//// +Colorname2rgb(name):=( //181212 +//help:Colorname2rgb("sepia"); + regional(dL,nameL,codeL,tmp); + dL=[ + ["greenyellow",[0.15,0,0.69,0]],["yellow",[0,0,1,0]], + ["goldenrod",[0,0.1,0.84,0]],["dandelion",[0,0.29,0.84,0]], + ["apricot",[0,0.32,0.52,0]],["peach",[0,0.5,0.7,0]], + ["melon",[0,0.46,0.5,0]],["yelloworange",[0,0.42,1,0]], + ["orange",[0,0.61,0.87,0]],["burntorange",[0,0.51,1,0]], + ["bittersweet",[0,0.75,1,0.24]],["redorange",[0,0.77,0.87,0]], + ["mahogany",[0,0.85,0.87,0.35]],["maroon",[0,0.87,0.68,0.32]], + ["brickred",[0,0.89,0.94,0.28]],["red",[0,1,1,0]], + ["orangered",[0,1,0.5,0]],["rubinered",[0,1,0.13,0]], + ["wildstrawberry",[0,0.96,0.39,0]],["salmon",[0,0.53,0.38,0]], + ["carnationpink",[0,0.63,0,0]],["magenta",[0,1,0,0]], + ["violetred",[0,0.81,0,0]],["rhodamine",[0,0.82,0,0]], + ["mulberry",[0.34,0.9,0,0.02]],["redviolet",[0.07,0.9,0,0.34]], + ["fuchsia",[0.47,0.91,0,0.08]],["lavender",[0,0.48,0,0]], + ["thistle",[0.12,0.59,0,0]],["orchid",[0.32,0.64,0,0]], + ["darkorchid",[0.4,0.8,0.2,0]],["purple",[0.45,0.86,0,0]], + ["plum",[0.5,1,0,0]],["violet",[0.79,0.88,0,0]], + ["royalpurple",[0.75,0.9,0,0]],["blueviolet",[0.86,0.91,0,0.04]], + ["periwinkle",[0.57,0.55,0,0]], ["cadetblue",[0.62,0.57,0.23,0]], + ["cornflowerblue",[0.65,0.13,0,0]],["midnightblue",[0.98,0.13,0,0.43]], + ["navyblue",[0.94,0.54,0,0]],["royalblue",[1,0.5,0,0]], + ["blue",[1,1,0,0]],["cerulean",[0.94,0.11,0,0]], + ["cyan",[1,0,0,0]],["processblue",[0.96,0,0,0]], + ["skyblue",[0.62,0,0.12,0]],["turquoise",[0.85,0,0.2,0]], + ["tealblue",[0.86,0,0.34,0.02]],["aquamarine",[0.82,0,0.3,0]], + ["bluegreen",[0.85,0,0.33,0]],["emerald",[1,0,0.5,0]], + ["junglegreen",[0.99,0,0.52,0]],["seagreen",[0.69,0,0.5,0]], + ["green",[1,0,1,0]],["forestgreen",[0.91,0,0.88,0.12]], + ["pinegreen",[0.92,0,0.59,0.25]],["limegreen",[0.5,0,1,0]], + ["yellowgreen",[0.44,0,0.74,0]],["springgreen",[0.26,0,0.76,0]], + ["olivegreen",[0.64,0,0.95,0.4]],["rawsienna",[0,0.72,1,0.45]], + ["sepia",[0,0.83,1,0.7]],["brown",[0,0.81,1,0.6]], + ["tan",[0.14,0.42,0.56,0]],["gray",[0,0,0,0.5]], + ["lightgray",[0,0,0,0.17]], //190429 + ["cindycolor",[0.66,0,69,0.71]], //190504 + ["black",[0,0,0,1]],["white",[0,0,0,0]] + ]; + tmp=select(dL,#_1==name); + if(length(tmp)>0, + tmp=tmp_1; + code=tmp_2; + code=Colorcmyk2rgb(code); + , + println(" "+name+" not found"); + code=Assign(name); //190323 + ); +); +////%Colorname2rgb end//// + +////%Getlinestyle start//// +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); + tmp2=""; //190119from + tmp=indexof(str,","); + if(tmp>0, + tmp2=substring(str,tmp,length(str)); + ); //190119to + if(tmp1=="dr" % tmp1=="Dr", +// Ltype=0; + if(length(tmp2)==0,tmp2="1"); //190125 + Ltype=[0,tmp2]; //190119 + if(noflg==0 & subflg==0, // 16.02.29 + Drwline(name+Dop); + ); + ); + if(tmp1=="da" % tmp1=="Da", +// Ltype=1; + if(length(tmp2)==0,tmp2="1,1"); //190125 + Ltype=[1,tmp2]; //190119 + if(noflg==0 & subflg==0, // 16.02.29 + Dashline(name+Dop); + ); + ); + if(tmp1=="id" % tmp1=="Id", +// Ltype=2; // 15.11.09 + if(length(tmp2)==0,tmp2="1,1"); //190125 + Ltype=[2,tmp2]; //190119 + if(noflg==0 & subflg==0, // 16.02.29 + Invdashline(name+Dop); + ); + ); + if(tmp1=="do" % tmp1=="Do", +// Ltype=3; + if(length(tmp2)==0,tmp2="1,1"); //190125 + Ltype=[3,tmp2]; //190119 + if(noflg==0 & subflg==0, // 16.02.29 + Dottedline(name+Dop); + ); + ); + if(tmp1=="dp" % tmp1=="Dp", +// Ltype=0; + if(length(tmp2)==0,tmp2="1"); //190125 + Ltype=[0,tmp2]; //190119 + 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; +); +////%Getlinestyle end//// + +////%Chunderscore start//// +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"+PaO()); + , + tmp1=substring(tmp1,0,length(tmp1)-1); + ); + tmp1; +); +////%Chunderscore end//// + +////%AddGraph start//// +AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]); +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,color); + if(substring(nm,0,1)=="-", + name=substring(nm,1,length(nm)); + , + name="ad"+nm; + ); + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + 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)+";"; //190415 + parse(tmp); + if(isstring(pltdata), // 16.04.04 from + if(indexof(pltdata,"]")>0, + tmp1="list"+PaO()+"Listplot"+PaO()+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); //no ketjs + , + if(Measuredepth(pdata)==1, + tmp1=name+"=Listplot("+Textformat(pdata,5)+")"; + , + tmp1="list"+PaO(); + forall(1..(length(pdata)), + tmp=name+"p"+Textformat(#,5)+"="; + if(length(pdata_#)>1, // 15.01.22 + tmp=tmp+"Listplot("+Textformat(pdata_#,5)+");"; //190425 + , + tmp=tmp+"Pointdata("+Textformat(pdata_#_1,5)+");"; //190425 + ); + GLIST=append(GLIST,tmp); //no ketjs + tmp1=tmp1+name+"p"+Textformat(#,5)+","; + ); + tmp1=name+"="+substring(tmp1,0,length(tmp1)-1)+");"; //190425 + ); + GLIST=append(GLIST,tmp1); //no ketjs + ); + ); // 16.04.04 until + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); +); +////%AddGraph end//// + +////%Joincrvs start//// +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,color); + 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; + color=tmp_(length(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+")"); //no ketjs + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + PtL; +); +////%Joincrvs end//// + +////%Partcrv start//// +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,color); + 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; + color=tmp_(length(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)+";"; //190415 + 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); //no ketjs + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + Ans; +); +////%Partcrv end//// + +////%Opcrvs start//// +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); +); +////%Opcrvs end//// + +////%Pointdata start//// +Pointdata(nm,list):=Pointdata(nm,list,[]); +Pointdata(nm,listorg,options):=( +//help:Pointdata("1",[2,4],["Size=5"]); +//help:Pointdata("2",[[2,3],[4,1]]); +//help:Pointdata(options=["Size=(1)","Disp=(y)","Msg=(y)","Inside=","Color="]); +//help:Pointdata("Inside=color/ratio/no"]); + regional(list,name,nameL,ptlist,opstr,opcindy,Msg, + eqL,dispflg,size,thick,tmp,tmp1,tmp2,tmp3, + Ltype,Noflg,color,inside); + name="pt"+nm; + nameL=name+"L"; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + opstr=tmp_(length(tmp)-1); + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + size=""; + dispflg="Y"; + inside=color; + Msg="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="S", + size=tmp_2; //190406from + tmp1=parse(size); + opcindy=opcindy+",size->"+text(tmp1); //190409to + ); + if(tmp1=="D", //181030from + dispflg=Toupper(substring(tmp_2,0,1)); + ); + if(tmp1=="I", //190405from + if(Toupper(substring(tmp_2,0,1))=="N", + inside=[-1,-1,-1]; + , + tmp3=["0","1","2","3","4","5","6","7","8","9"]; + if(contains(tmp3,substring(tmp_2,0,1)), + inside=parse(tmp_2)*color; + , + tmp3=Divoptions(["Color="+text(tmp_2)]); + inside=tmp3_(length(tmp3)-2); + ); + opcindy=opcindy+",pointcolor->"+text(inside); + ); + ); //100405to + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + if(dispflg=="Y", + if(Msg=="Y", //190206 + println("generate pointdata "+name); + ); + ); //181030to + if(isstring(listorg), + list=parse(listorg); + , + list=listorg; + ); //17.10.23 + list=apply(list,Lcrd(#)); //190426 + if(Measuredepth(list)==0,list=[list]);//180530 + tmp=Measuredepth(list); + if(tmp==1,ptlist=list,ptlist=list_1); //190126from + tmp=apply(ptlist,[Textformat(Pcrd(#),5)]); + tmp1=text(tmp); + tmp2=substring(tmp1,1,length(tmp1)-1); + tmp3=tmp1; + tmp=parse(tmp1); + if(length(tmp)==1, //190301from + tmp1=Textformat(tmp_1,5); + ); //190301to + tmp=name+"="+tmp1+";"; //190415 + parse(tmp); + tmp=nameL+"="+tmp3+";"; //190415 + parse(tmp); //190126to + if(Noflg<3, + if(isstring(listorg), //17.10.23 + tmp2=listorg; + , + tmp2="list"+PaO(); //17.10.10from + forall(list, + if(isstring(#), + tmp=#; + , + if(ispoint(#), + tmp=#.name; //190505 + , + tmp=Textformat(#,6); + ); + ); + tmp2=tmp2+tmp+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1)+")"; + //17.10.10to + ); + GLIST=append(GLIST,name+"=Pointdata("+tmp2+")"); //no ketjs + ); + if(Noflg<2, + tmp=[nameL,[0,1],opcindy]; //190126 + GCLIST=append(GCLIST,tmp); + if(Noflg==0, + if(length(size)>0, + Com2nd("Setpt("+size+")"); + ); + thick=PenThick/PenThickInit; // 16.04.09 + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{"); + Com2nd("Setcolor("+color+")");//180711 + ); //no ketjs off + opstr=","+Textformat(inside,2); + Com2nd("Drwpt"+PaO()+"list"+PaO()+name+")"+opstr+")"); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180711 + ); //no ketjs off + if(length(size)>0, //no ketjs on + tmp=Textformat(TenSize/TenSizeInit,1); + Com2nd("Setpt("+tmp+")"); + ); //no ketjs off + ); + ); + ptlist; +); +////%Pointdata end//// + +////%Listplot start//// +Listplot(list):=Listplot(list,[]); +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.07until + Listplot(name,list,options); + ); +); +Listplot(nm,list,options):=( +//help:Listplot([A,B]); +// help:Listplot(["A","B"]); +//help:Listplot("1",[[2,1],[3,3]]); +//help:Listplot(options2=["Msg=y","Cutend=n"]);//180719 + regional(name,cutend,tmp,tmp1,tmp2,ptlist,Ltype,opcindy,Noflg,eqL,Msg,color); + 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; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + Msg="Y"; //190206 + cutend=[0,0];//180719 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + Msg=Toupper(substring(tmp_2,0,1)); + ); + if(tmp1=="C",//180719from + tmp2=replace(tmp_2,"[",""); + tmp2=replace(tmp2,"]",""); + cutend=tokenize(tmp2,","); + if(length(cutend)==1,cutend=[cutend_1,cutend_1]); + );//180719to + ); + if(Noflg<3, + if(Msg=="Y", //190206 + println("generate Listplot "+name); + ); + if(isstring(list_1),tmp=apply(list,parse(#)),tmp=list); // 15.03.24 + ptlist=apply(tmp,Pcrd(#)); + if(|cutend|>0,//180719from + tmp=ptlist_(length(ptlist))-ptlist_1; + tmp=tmp/|tmp|; + ptlist_1=ptlist_1+tmp*cutend_1; + ptlist_(length(ptlist))=ptlist_(length(ptlist))-tmp*cutend_2; + );//180719to + tmp=name+"="+Textformat(ptlist,5)+";"; //190415 + parse(tmp); + GLIST=append(GLIST,name+"=Listplot("+Textformat(ptlist,5)+")"); // 180719 //no ketjs + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180711 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180711 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + tmp1=apply(list,Lcrd(#)); + tmp1; +); +////%Listplot end//// + +////%Lineplot start//// +Lineplot(nm,list,optionorg):=( +//help:Lineplot([A,B]); +//help:Lineplot("1",[[2,1],[3,3]]); + regional(name,Out,tmp,tmp1,tmp2,opstr,opcindy,Mag,Semi, + Vec,pA,pB,options,Ltype,Noflg,color,Msg,eqL); + name="ln"+nm; + options=optionorg; + Mag=100; + Semi=""; + Msg="Y"; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + opstr=tmp_(length(tmp)-1); + eqL=tmp_5; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); //190206to + ); + tmp=Divoptions(options); + 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, + if(Msg=="Y", //190206 + println("generate Lineplot "+name); + ); + tmp1=apply(Out,Pcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + GLIST=append(GLIST,name+"=Lineplot("+Textformat(list,5)+opstr+")"); //no ketjs + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + 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.07until + Lineplot(name,list,options); + ); +); +Lineplot(list):=Lineplot(list,[]); +////%Lineplot end//// + +////%Plotdata start//// +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,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa,Msg, + Ltype,Noflg,Inflg,Outflg,opstr,opcindy,color); + if(substring(name1,0,1)!="-", //190420from + name="gr"+name1; + , + name=substring(name1,1,length(name1)); + ); //190420to + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + Inflg=tmp_3; + Outflg=tmp_4; + opstr=tmp_(length(tmp)-1); + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + eqL=tmp_5; + Num=50; + Ec=[]; + Exfun=""; + Dc=1000; + Msg="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(#,0,1)); + if(tmp1=="N", + Num=parse(tmp_2); + opstr=opstr+","+Dqq(#); + ); + if(tmp1=="E", + if(substring(tmp_2,0,1)=="[", //180817from + Ec=parse(tmp_2); + tmp1=replace(tmp_2,"[","c"+PaO()); + tmp1=replace(tmp1,",",".0,"); + tmp1=replace(tmp1,"]",".0)"); + opstr=opstr+","+Dqq("Exc="+tmp1); //180817to + , + Exfun=tmp1; + opstr=opstr+","+Dqq(#); + ); + ); + if(substring(#,0,1)=="D", + Dc=parse(tmp_2); + opstr=opstr+","+Dqq(#); + ); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + 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(PdL)>0, //180817from + PdL=concat(PdL,["inf"]); + ); + , + tmp=[xx,parse(Fun)]; + if(length(PdL)>0, + tmp1=PdL_(length(PdL)); + if(Norm(tmp,tmp1)<Dc, + PdL=append(PdL,tmp); + , + if(tmp1=="inf", + PdL=append(PdL,tmp); + , + PdL=concat(PdL,[["inf"],tmp]); + ); + ); + , + PdL=[tmp]; + ); + ); //180817to + , + 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, + if(Msg=="Y", //190206 + 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,""); //no ketjs on + tmp2=replace(variable,LFmark,""); + tmp=name+"=Plotdata('"+tmp1+"','"+tmp2+"'"+opstr+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + PdL; + , + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + if(Inflg==1, + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + ); + ); +); +////%Plotdata end//// + +////%Paramplot start//// +Paramplot(nm,funstr,variable):=Paramplot(nm,funstr,variable,[]); +Paramplot(nm,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,Msg, + Ec,Exfun,Dc,eqL,Fntmp,Vatmp,t1,t2,dt,tt,pa,ke, pt, //190103 + Ltype,Noflg,Inflg,Outflg,opstr,opcindy,color); + if(substring(nm,0,1)=="-", // 180928from + name=substring(nm,1,length(nm)); + , + name="gp"+nm; + ); //180929to + Eps=10^(-4); + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + Inflg=tmp_3; + Outflg=tmp_4; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + eqL=tmp_5; + Msg="Y"; //190322 + Num=50; + Ec=[]; + Exfun=""; + Dc=1000; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="N", + Num=parse(tmp_2); + opstr=opstr+","+Dqq(#); + ); + if(tmp1=="E", + if(substring(tmp_2,0,1)=="[", //180817from + Ec=parse(tmp_2); + tmp1=replace(tmp_2,"[","c"+PaO()); + tmp1=replace(tmp1,",",".0,"); + tmp1=replace(tmp1,"]",".0)"); + opstr=opstr+","+Dqq("Exc="+tmp1); //180817to + , + Exfun=tmp1; + opstr=opstr+","+Dqq(#); + ); + ); + if(substring(#,0,1)=="D", + Dc=parse(tmp_2); + opstr=opstr+","+Dqq(#); + ); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + 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, + if(|tmp-pa|>Eps, //180928from + Out=append(Out,pa); + ); //180928to + , + 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, + if(Msg=="Y", //190206 + 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 //no ketjs on + tmp2=replace(variable,LFmark,""); + tmp=name+"=Paramplot('"+tmp1+"','"+tmp2+"'"+opstr+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + Out; + , + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + if(Inflg==1, + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + ); + ); +); +////%Paramplot end//// + +////%Polarplot start//// +// 180928 +Polarplot(name,radstr,varrng):=Polarplot(name,radstr,varrng,[]); +Polarplot(name,radstr,varrng,option):=( +//help:Polarplot("1","cos(t)","t=[0,2*pi]"); + regional(tmp,var); + tmp=Strsplit(varrng,"="); + var=tmp_1; + tmp="("+radstr+")*[cos("+var+"),sin("+var+")]"; + Paramplot("-polar"+name,tmp,varrng,option); +); +////%Polarplot end//// + +////%Connectseg start//// +Connectseg(Pdata):=( + regional(Eps,PlotL,vL,ctr,qd,ah,ao,flg,jj, + pp,qq,tmp,tmp1,tmp2); + Eps=10^(-4); + PlotL=[Pdata_1]; + vL=2..(length(Pdata)); + ctr=0; + while((length(vL)>0)&(ctr<1000), + ctr=ctr+1; + qd=PlotL_(length(PlotL)); + ah=qd_1; ao=qd_(length(qd)); + flg=0; + forall(1..(length(vL)),jj, + if(flg==0, + tmp1=Pdata_(vL_jj); + pp=tmp1_1; qq=tmp1_(length(tmp1)); + if(Norm(pp-ao)<Eps, + tmp=tmp1_(2..(length(tmp1))); + if(length(tmp)>0, + qd=concat(qd,tmp); + ); + PlotL_(length(PlotL))=qd; + vL=remove(vL,[vL_jj]); + flg=1; + ); + ); + if(flg==0, + if(Norm(qq-ao)<Eps, + tmp=tmp1_(1..(length(tmp1)-1)); + tmp=reverse(tmp); + qd=concat(qd,tmp); + PlotL_(length(PlotL))=qd; + vL=remove(vL,[vL_jj]); + flg=1; + ); + ); + if(flg==0, + if(Norm(pp-ah)<Eps, + tmp=tmp1_(2..(length(tmp1))); + qd=concat(tmp,qd); + PlotL_(length(PlotL))=qd; + vL=remove(vL,[vL_jj]); + flg=1; + ); + ); + if(flg==0, + if(Norm(qq-ah)<Eps, + tmp=tmp1_(1..(length(tmp1)-1)); + tmp=reverse(tmp); + qd=concat(tmp,qd); + PlotL_(length(PlotL))=qd; + vL=remove(vL,[vL_jj]); + flg=1; + ); + ); + ); + if(flg==0, + PlotL=concat(PlotL,[Pdata_(vL_1)]); //181112 + vL=remove(vL,[vL_1]); + ); + ); + PlotL; +); +////%Connectseg end//// + +////%Implicitplot start//// +Implicitplot(name1,func,xrng,yrng):=Implicitplot(name1,func,xrng,yrng,[]); +Implicitplot(name1,func,xrngorg,yrngorg,optionsorg):=( +//help:Implicitplot("1","x^2+x*y+y^2=1","x=[-3,3]","y=[-3,3]"); +//help:Implicitplot(options=["Num=[50,50]","Msg=y(n)","Bisection=y(n)]); + regional(name,options,Fn,xrng,yrng,varx,vary,rngx,rngy,Mdv,Ndv,tmp,tmp1,tmp2, + Eps,Ltype,Noflg,eqL,color,opsr,opcindy,dx,dy,out,jj,ii,kk,msg,biflg,flg, + yval1,yval2,xval1,xval2,eval11,eva12,eval21,eval22,pL,vL,qL); + name="imp"+name1; + xrng=xrngorg; yrng=yrngorg; //190622from + if(indexof(xrng,"=")==0, + xrng=xrng+"="+Textformat([XMIN,XMAX],5); + ); + if(indexof(yrng,"=")==0, + yrng=yrng+"="+Textformat([YMIN,YMAX],5); + ); //190622to + Eps=10^(-6); //190511 + options=optionsorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + opstr=tmp_(length(tmp)-1); //190406 + Mdv=50;Ndv=50; + msg="Y"; + biflg="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(substring(#,0,1)=="N", + Mdv=parse(tmp2); + if(!islist(Mdv), + Ndv=Mdv; + , + Ndv=Mdv_2; + Mdv=Mdv_1; + ); + opstr=",'"+#+"'"; + ); + if(substring(#,0,1)=="M", //181112from + msg=Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); //181112to + if(substring(#,0,1)=="B", //190509from + biflg==Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); //190509to + ); + tmp=indexof(func,"="); + if(tmp==0, + Fn=func; + , + tmp1=substring(func,0,tmp-1); + tmp2=substring(func,tmp,length(func)); + Fn=tmp1+"-("+tmp2+")"; + ); + tmp=indexof(xrng,"="); + varx=substring(xrng,0,tmp-1); + rngx=parse(substring(xrng,tmp,length(xrng))); + tmp=indexof(yrng,"="); + vary=substring(yrng,0,tmp-1); + rngy=parse(substring(yrng,tmp,length(yrng))); + tmp="Impfun("+varx+","+vary+"):="+Fn+";"; + parse(tmp); + dx=(rngx_2-rngx_1)/Mdv; + dy=(rngy_2-rngy_1)/Ndv; + out=[]; + forall(1..Ndv,jj, + yval1=rngy_1+(jj-1)*dy; + yval2=rngy_1+jj*dy; + xval1=rngx_1; + eval11=Impfun(xval1,yval1); + eval12=Impfun(xval1,yval2); + forall(1..Mdv,ii, + xval2=rngx_1+ii*dx; + eval21=Impfun(xval2,yval1); + eval22=Impfun(xval2,yval2); + pL=[[xval1,yval1]];vL=[eval11]; + pL=append(pL,[xval2,yval1]);vL=append(vL,eval21); + pL=append(pL,[xval2,yval2]);vL=append(vL,eval22); + pL=append(pL,[xval1,yval2]);vL=append(vL,eval12); + pL=append(pL,[xval1,yval1]);vL=append(vL,eval11); + qL=[]; + forall(1..4,kk, + if(abs(vL_kk)<=Eps, + qL=append(qL,pL_kk); + , + if(vL_kk>Eps, + if(vL_(kk+1)< -Eps, + if(biflg=="n", //190508 + tmp=1/(vL_kk-vL_(kk+1))* + (-vL_(kk+1)*pL_kk+vL_kk*pL_(kk+1)); + , + tmp1=pL_(kk); tmp2=pL_(kk+1); //190508from + flg=0; + forall(1..20, //190511 + if(flg==0, + tmp=(tmp1+tmp2)/2; + eval11=Impfun(tmp_1,tmp_2); + if(abs(eval11)<=Eps, + flg=1; + , + if(eval11>Eps,tmp1=tmp,tmp2=tmp); + ); + ); + ); //190508to + ); + qL=append(qL,tmp); + ); + , + if(vL_(kk+1)>Eps, + if(biflg=="n", //190508 + tmp=1/(-vL_kk+vL_(kk+1))* + (vL_(kk+1)*pL_kk-vL_kk*pL_(kk+1)); + , + tmp1=pL_(kk); tmp2=pL_(kk+1); //190508from + flg=0; + forall(1..20, //190511 + if(flg==0, + tmp=(tmp1+tmp2)/2; + eval11=Impfun(tmp_1,tmp_2); + if(abs(eval11)<=Eps, + flg=1; + , + if(eval11>Eps,tmp2=tmp,tmp1=tmp); + ); + ); + ); //190508to + ); + qL=append(qL,tmp); + ); + ); + ); + ); + xval1=xval2; + eval11=eval21; + eval12=eval22; + if(length(qL)==2, + out=append(out,qL); + ); + ); + ); + if(length(out)>0, + out=Connectseg(out); + ); + if(length(out)==1, + out=out_1; + ); + if(Noflg<3, + if(msg=="Y", //181112 + println("generate Implicitplotdata "+name); + ); + if(Measuredepth(out)==1, + tmp1=apply(out,Pcrd(#)); + , + tmp1=[]; + forall(out,tmp2, + tmp1=append(tmp1,apply(tmp2,Pcrd(#))); + ); + ); + tmp=name+"="+Textformat(tmp1,5); //190415 + parse(tmp+";"); + tmp=name+"=Implicitplot('"+func+"','"+xrng+"','"+yrng+"'"+opstr+")"; + GLIST=append(GLIST,tmp); //no ketjs +// Drawfigures(name,[name],[options]); //190508 + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + out; +); +////%Implicitplot end//// + +////%Circledata start//// +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.07until + ); + Circledata(name,cenrad,options); +); +Circledata(nm,cenrad,options):=( + regional(name,Out,Ctr,Ptcir,ra,Num,Rg,opstr,opcindy,color,Msg, + tmp,tmp1,tmp2,Th,Ltype,Noflg,eqL,pA,pB,pC,d1,d2,Eps); + name="cr"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + Num=50; + Rg=[0,2*pi]; + Msg="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(substring(#,0,1)=="N", + Num=parse(tmp_2); + opstr=opstr+",'"+#+"'"; + ); + if(substring(#,0,1)=="R", + Rg=parse(tmp_2); + opstr=opstr+",'"+#+"'"; + ); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + if(length(cenrad)==2, + Ctr=Lcrd(cenrad_1); + Ptcir=Lcrd(cenrad_2); + if(!islist(Ptcir), //190323from + Ptcir=Ctr+[Ptcir,0]; + ); //190323to + 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="+Textformat(Ctr,5)+";"; + parse(tmp); + Defvar(name+"center",re(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, + if(Msg=="Y", //190206 + println("generate Circledata "+name); + ); + tmp1=apply(Out,Pcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + if(length(cenrad)==2, //no ketjs on + 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); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + Out; +); +////%Circledata end//// + +////%Framedata start//// +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.29until +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.07until + Framedata(name,list,options); + ); +); +Framedata(nm,list,optionsorg):=( //190424modified +//help:Framedata(); +//help:Framedata("1",[C,A]); +//help:Framedata("1",[C,dx,dy]); + regional(name,options,Out,tmp,tmp1,x1,x2,y1,y2,dx,dy, + opcindy,Ltype,Noflg,strL,cent,dx,dy,color); + name="fr"+nm; + options=optionsorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + if(length(list)==2, // 15.05.12 + cent=Lcrd(list_1); tmp=Lcrd(list_2); + dx=abs(tmp_1-cent_1); dy=abs(tmp_2-cent_2); + , + cent=Lcrd(list_1); + dx=list_2; dy=list_3; + ); + x1=cent_1-dx; x2=cent_1+dx; + y1=cent_2-dy; y2=cent_2+dy; + Listplot("-"+name,[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]],options); +); +Framedata(nm,cent,dx,dy):=Framedata(nm,[cent,dx,dy],[]); +Framedata(nm,cent,dx,dy,options):=Framedata(nm,[cent,dx,dy],options); +////%Framedata end//// + +////%Framedata2 start//// +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); +); +////%Framedata2 end//// + +////%Ovaldata start//// +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,color); + name="ov"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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]; + tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]], + ["nodata"]); + tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]], + ["nodata"]); + if(Rc>0, //180624from + tmp1=Circledata("1",[Point,Point+[Rc,0]], + ["Rng=[0,pi/2]","Num=10","nodata"]); + Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]); + , + Graph=Joincrvs("1",[tmp3,tmp2],["nodata"]); + ); //180624to + 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)+";"; //190415 + parse(tmp); + GLIST=append(GLIST, //no ketjs + name+"=Ovaldata("+Ctr+","+Dx+","+Dy+opstr+")");//16.01.30 //no ketjs + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + tmp1=apply(Graph,Pcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + tmp=Textformat(Ctr,5)+","+Textformat(Dx,5)+","+Textformat(Dy,5); + ); + Graph; +); +////%Ovaldata end//// + +////%Segmark start//// +Segmark(nm,ptlist):=Drawsegmark(nm,ptlist,[]); +Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options);//180704 +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,color, //180704 + 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; + color=tmp1_(length(tmp1)-2);//180704 + forall(eqL, + tmp=indexof(#,"="); + tmp1=substring(#,tmp,length(#)); + tmp1=parse(tmp1); + tmp=Toupper(substring(#,0,1)); + if(tmp=="S", + size=size*tmp1; + ); + if(tmp=="W", + wid=wid*tmp1; + ); + if(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],["Color="+text(color)]);//180704 + ); + if(tp==2, + tmp1=mid+wid*dir+size*nor; + tmp2=mid+wid*dir-size*nor; + Listplot(name+"r",[tmp1,tmp2],["Color="+text(color)]);//180704 + tmp1=mid-wid*dir+size*nor; + tmp2=mid-wid*dir-size*nor; + Listplot(name+"l",[tmp1,tmp2],["Color="+text(color)]);//180704 + ); + if(tp==3, + tmp1=mid; + tmp2=mid+size*dir; + Circledata(name,[tmp1,tmp2],["Color="+text(color)]);//180704 + ); + 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],["Color="+text(color)]);//180704 + ); +); +////%Segmark end//// + +////%Parabolaplot start//// +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)); +); +////%Parabolaplot end//// + +////%Ellipseplot start//// +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)); +); +////%Ellipseplot end//// + +////%Hyperbolaplot start//// +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")); + Rotatedata(nm+"hyp1","gp"+nm+"hyp1",angle,append(options,pA));//180408 + Rotatedata(nm+"hyp2","gp"+nm+"hyp2",angle,append(options,pA));//180408 + if(length(opasy)>0, + Lineplot(nm+"asy1",[pM+[a,b],pM+[-a,-b]],["nodisp"]); + Lineplot(nm+"asy2",[pM+[-a,b],pM+[a,-b]],["nodisp"]); + Rotatedata(nm+"asy1","ln"+nm+"asy1",angle,append(opasy,pA));//180408 + Rotatedata(nm+"asy2","ln"+nm+"asy2",angle,append(opasy,pA));//180408 + ); +); +////%Hyperbolaplot end//// + +////%Polygonplot start//// +Polygonplot(nm,ptlist,number):=Polygonplot(nm,ptlist,number,[]); +Polygonplot(nm,ptlist,number,optionorg):=( +//help:Polygonplot("1",[A,B],12); +//help:Polygonplot("1",[A,B],12,["Geo=n"]); + regional(options,eqL,geo,rr,pA,pB,ptL,angle,tmp,tmp1,tmp2); +println([4573,ptlist]); + geo="N"; //180708from + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(tmp1=="G", + geo=Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); + ); //180708to + 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, + if((ispoint(ptlist_2))&(geo=="Y"), //180708[3lines] + Putpoint((ptlist_2).name+text(#),tmp1);//16.10.07 + ); + //Pointdata(nm,ptL); + ); + tmp2=tmp1; + ptL=append(ptL,tmp1); + ); + Listplot(nm+"ply",ptL,options); +); +////%Polygonplot end//// + +////%Putintersect start//// +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"); + ); +); +////%Putintersect end//// + +//help:end(); + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic2logr.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic2logr.txt new file mode 100644 index 0000000000..35a48c5d4d --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic2logr.txt @@ -0,0 +1,361 @@ +// 20190531 +// Drawfigures (Drwfigs) changed +// 20190524 +// Anglemark,Paramark changed ( "E/L" option ) +// 20190523 +// Deqdata debugged ( floor => round ) +// Mkcstable added +// Fourierseries changed ( for table data ) +// 20190520 +// Anglemark,Paramark debugged +// Shade changed ( Listplot ) +// 20190512 +// Windispg changed (Dashlinedata) +// 20190511 +// Periodfun changed ( println for debug removed) +// 20190508 +// Changetablestyle debugged +// Tabledatageo majorly changed +// Tseginfo,Tsegrmv removed +// 20190507 +// Tabledata debugged ( for "r_c_c_" ) +// Changetablestyle majorly changed +// 20190505 +// Periodfun changed ( equal option added ) +// text(pt) => pt.name +// 20190504 +// Lightarrowdata changed ("Line=" added ) +// 20190429 +// Pp => pp, Bow => bow +// 20190429 +// Tabledatalight changed ( rng=n when move option used ) +// 20190428 +// Tabledata changed to Tabledatageo +// Tabledata added ( Tabldetadalight if "Geo=n(defalt)", Tabledatageo if "Geo=y") +// Tgrid changed ( TableMove added ) +// Changetablestyle changed ( for multiple tables ) +// 20190427 +// Drawfigures debugged ( N added ) +// Drwxy debugged ( KCOLOR added ) +// 20190426 +// Drawfigures added +// 20190425 +// Rotatedata,Trans,Scale,Reflectdata changed (Msg option added) +// Windispg changed ( for pointdata) +// 20190424 +// Tabledatalight debugged ( tick) +// 20190421 +// Tabledatalight changed ( 0 for notick) +// 20190420 +// Periodfun majorly changed +// Fourierseries changed ( range ) +// 20190419 +// Lightarrowdata added ( only for case of segment) +/ 20190417 +// Arrowdata debugged ( for geo-points ) +// 20190416 +// Deqplot changed ( "`" ) +// Findfun, Extractun, Extractall move to basic3 +// 20190415 +// parse( ..= ) changed ( ; added ) +// Bowdata changed (Bpos) +// 20190414 +// Helplist changed ( for basic3 ) +// 20190412 +// Some functions moved from basic1, moved to basic3 +// Arrowdata debugge ( for Setscaling ) +// 20190409 +// Mkketcindyjs debugged (color option ) +// Expr debugged ( type of pos,dir,text,option added ) +// 20190405 +// Mkketcindyjs changed (size of NE,SW. "Nolabe=all" ) +// 20190329 +// Slider debugged (PTEXCEPTION) +// 20190325 +// Drwxy changed ( Msg=n for Listplot ) +// 20190324 +// Viewtex,Figpdf changed (for tikz ) +// 20190301 +// MeasureDepth => Measuredepth +// 20190228 +// Putcell,Putcellexpr,Putrow,Putrowexpr,Putcell,Putcellexpr changed ( options added ) +// 20190225 +// Mkketcindyjs debugged ( nolabel ) +// 20190222 +// Mktitle, Presentation changed ( "xcolor" => "color" ) +// 20190217 +// Putoncurve remade +/// 20190216 +// Putonseg changed, Putonline debugged +// 20190215 +// Mkketcindyjs changed (default of "Locsl=" reverted to "y") +// 20190214 +// Copyketcindyjs changed (for Mac,Linux) +// 20190209 +// Mkketcindyjs changed (fliename when Local="y", Case of rhs of option is blank) +// Mkketcindyjs changed ( "3d" added ) +// Letter changed ("Size=ratio" added ) +// Mkketcindyjs changed ( Local="n" as default) +// Slider changed ( for no end points ) +// 20190208 +// Mkketcindyjs changed ( Local="y" as default) +// 20190206 +// Mkketcindyjs changed ( kettex added to init slot, "only ketjs" added) +// 20190203 +// Mkketcindyjs debugged ( in case of local=y ) +// 20190202 +// Bezier changed ( (nm, ptlist(2)) supported) +// Htickmark,Vtickmark changed ( option added) +// 20190201 +// Mkketcindyjs debugged ( for removing button case the last is not "," ) +// Ketjsoption renamed to Setketcindyjs +// Mkketcindyjs changed ( "grid" option added ) +// 20190131 +// Mkketcindyjs changed (removespace of ignoretun,buttons to be removed) +// 20190130 +// Mkketcindyjs changed (USEDFUN (global) added) +// Ketjsoption changed (color) +// 20190129 +// "/LF/" => "/L"+"F/" +// Ketjsoption added +// Mkketcindyjs changed ( option "Web","Local","Scale","Nolabel") +// Copyketcindyjs debugged ( for Windows ) +// Mkketcindyjs changed ( option "Color" added) +// 20190128 +// Mkketcindyjs changed ( texflg removed , katex is OK ) +// Copyketcindyjs added +// 20190126 +// Windispg debugged (for Pointdata) +// Mkketcindyjs change ( point size ) +// 20190125 +// Windispg redebugged ("size") +// 20190123 +// Windispg debugged ("size") +// 20190123 +// Dashlinedata debugged/changed (ptn ) +// Windispg changed (ptn=0) +// 20190122 +// Windispg changed ("connect"=>"drawall" for do,da ) +// no ketjs added (Windispg,Mkketcindyjs) +// Dashlinedata added +// 20190120 +// Slider changed (color,size options ) +// 20190119 +// Mkketcindyjs debugge ( ketlib slot addede to csinit ) +// Windispg changed ( size of "dr" supported); +// 20190118 +// Mkketcindyjs changed ( position of "katex", ketlib slot addede to csinit ) +// Windispg debugged ( dashtype,linecolor v.s. opcindy ) +// 20190116 +// Findfun, Extractfun, Extractall, Mkketcindyjs added (for new ketcindyjs) +// 20190103 +// Drwxy changed (Addax(0) added in the case of add=0 ) +// Drwxy changed ( "O=" option added ) +// 20190101 +// Viewtex changed ( for tikz ) +// // 20181231 +// Drwxy debugged (GENTEN used, xrng/yrng changed ) +// Drwpt debugged ( Pointdata used ) +// Viewtex debugged ( tikz ) +// 20181224 +// WritetoRS changed (Closefile("0")) +// 20181219 +// BBdata debugged (macosx => ismacosx ) +// 20181218 +// Letter, Expr changed (pt,dir,str,options added ) +// 20181217 +// Drwxy debugged +// 20181216 +// Drwxy changed ( linestyle,colorax,colorla ) +// 20181215 +// Setax, Drwxy, Windispg changed ( Axstyle ) +// 20181214 +// WritetoRS changed ( Definition of Acos,Asin,Atan,Sqr,Factorial,Norm added ) +// 20181213 +// Usegraphics, WritetoRS changed ( tikz added) +// 20181125 +// Mkslides, Mksldesummary chanded (Fillblack added ) +// Presentation changed ( load => readfile2str ) +// 20181106 +// WritetoRS changed ( Abnormal point ignored ) +// 20181030 +// ReadOutData debugged (option Disp= ) +// 20181024 +// ReadOutData changed (option Disp= ) +// 20181021 +// Htickmark,Vtickmark debugged ( Setscaling ) +// Partcrv, Pointdata debugged (iif => if ) +// 20181020 +// if(color!=KCOLOR => if((Noflg==0)&(color!=KCOLOR) +// 20181017 +// Htickmark,Vtickmark debugged (for scaling ) +// 20181001 +// Bezier changed (BezierCtrL added as global ) +// 20180917 +// Makebat debugged ( case where work folder is under C ) +// 20180908 +// Presentation debugged (slidepage blank line added ) +// Presentation changed (SlideMargin added) +// 20180904 +// Color setting changed ( for KCOLOR) +// 20180903 +// Presentation changed (ketmargin => setmargin ) +// 20180901 +// Inwindow added +// 20180820,22 +// CRspline chaged (rewritten ) +// 20180820,21 +// Drwxy chaged ( options added ) +// 20180817 +// WritetoRS, Viewtex changed (GPACK added ) +// 20180815 +// Maketitle changed (to make a new text file ) +// 20180813 +// Setslidehyper debugged ( cl,... ) +// 20180809 +// Mkcircles,Mksegment changed +// 20180805 +// Letterrot debugged (' => "") +// Letterrot, Exprrot changed (help ) +// 20180802 +// iftoR debugged ( for nested case ) +// Exprrot debugged ( ' => "") +// 20180725 +// Periodfun changed ( "connect" option) +// 20180724 +// Periodfun debugged and changed (rep=[n,n]) +// 20180722 +// color localized +// 20180721 +// WritetoRS changed (case where "Letter" and "Expr" in Com2ndlist) +// 20180710 +// Htickmark,Vtickmark changed (Expr used ) +// 20180708 +// Putoncurve changed ( Help ) +// 20180701 +// Repeatsameslide changed ( % added to thin ) +// 20180627 +// Presentation debugged ( sort(parafiles)) +// 20180619 +// Writetosci(Arg) added (=WritetoRS(Arg)) +// CRspline changed (Ctrpt not displayed ) +// 20180616 +// presentation debugged (slide title ) +// 20180610 +// WritetoRS changed ( \\ => /) +// 20180608 +// Setslide changed ( old style of setting title resupported ) +// 20180604 +// Mkslides,Mkslidesummary debugged ( to make kc.sh executable ) +// Changework changed (set to Dircdy if dir not found ) +// 20180603 +// Rotatedata,... changed (KCOLOR) +// Letter,Letterrot,Exprrot changed (color) +// Scaledata changed ( case where x,y is the same ratio) +// 20180602 +// divoptions ( 8,9 ->length(tmp)-1,length(tmp)) +// Rotatedata,... changed (color supported ) +// Rotataedata,... debugged ( level RSform =>1 ) +// Settitle debugged ( color option batted ) +//20180529 +// Presentation debugged (for repeat=1) +//20180526 +// Repeatsameslide debugged (for minipage with thin) +// Presentation changed ( page jump button ) +//20180524 +// Presentation changed ( pageend, \slidepage, pagestyle{empty}) +//20180515 +// Setpara changed ( "m" as default) +//20180514 +// WritetoRS,Makebat changed ( to execsrc.r) +//20180513 +// WritetoRS,Makebat changed ( UTF-8) +//20180412 +// Mksummary changed ( calcbyR, quit ) +//20180409 +// WritetoRS,Makebat changed ( "shell" used ) +//20180408 +// WritetoRS debugged ( setwd ) +// WriteoRS,Makebat changed ( use "sjis.txt") +//20180405 +// Makebat debugged +//20180404 +// Tlistplot changed ("Msg"); +// WritetoRS debugged ( openfie(..,Cdy= )) +//20180403 +// WritetoRS, Makebat changed (for Zenkaku) +// Convsjiswin removed +// Mkslidesummary debugged +//20180401 +// Convsjiswin added +// Makebat changed (for convsjis ) +//20180330 +// Presentation changed (for wallpaper ) +// Settitle changed (Title option ) +//20180303 +// Letter debugged (for ` ) +//2017.12.24 +// IftoR, FortoR,Deffun rewritten +//2017.12.23 +// Bezier, Translatedata,Rotatedata,Reflectdata debugged ( [ ] ) +// RSform : help added +//2017.12.19 +// WritetoSci() added (=WritetoR(), for old Parent button ) +//2017.12.16 +// Setslidehyper changed ("Size=","Pos=[]") +//2017.12.09 +// Mkslides changed (for animation) +// MakeRarg (from Makesciarg ) added ( RSslash ) +// Setax, Htickmark, Vtickmark changed ( MakeRarg ) +//2017.11.24 +// Slidework changed ( makedir) +// Rotatedata debugged ( MeasureDepth) +//2017.11.20 +// Slidework changed ( for the case of (ex) dir="...../") +//2017.11.05 +// Figpdf debugged +//2017.11.01 +// Presentation debugged ( usepackage{ketpic} etc. ) +//2017.10.30 +// Viewtex changed ( path of ketpicstyle ) +//2017.10.28 +// WritetoRS changed ( generator is written ) +//2017.10.26 +// Mksummary changed for R +//2017.10.18 +// Letter,Letterrot,Exprrot debugged (\ and \\) +//2017.10.17 +// Viewtex debugged ($ removed for xelatex) +//2017.10.16 +// Mkslides debugged ( line4 from last,path) +//2017.10.14 +// Makebat,Makeshell changed(flow="tt" supported) +//2017.10.13 +// Makebat,Makeshell,Mkslides debugged (Shellfile,Sehllchild removed ) +// Makeshell debugged ( Case of no "/" ) +//2017.10.08 +// Mkslides debugged (Sheslide=>Shellslide ) +//2017.10.07 +// WritetoRS changed (for pict2e) +// Helplist debugged ( for r ) +//2017.10.06 +// RSform debugged +//2017.09.29 +// Viewparent debugged (WritetoRS) +//2017.09.24 +// WritetoRS debugged ("\" => "/") +// RSslash added +// Letter changed (RSslash used) +//2017.09.22 +// Defvar changed ("=" removed) +// WritetoRS changed (Com1st,..., VLIST ) +//2017.09.18 +// Extractdata changed +// SCIWR,SCIRE removed +//2017.09.17 +// WritetoRS added +// Viewtex changed ( Writetosci => WritetoR ) +//2017.09.16 +// RSform, Deffun, IftoR, FortoR changed( added ) +//2017.09.14 +// Makeshell, Makebat changed
\ No newline at end of file diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic2r.cs b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic2r.cs new file mode 100644 index 0000000000..c1e21281ed --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic2r.cs @@ -0,0 +1,5260 @@ +// 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("ketcindylibbasic2[20190531] loaded"); + +//help:start(); + +////%Drwfigs start//// 190530 +Drwfigs(nm,figlist):=Drawfigures(nm,figlist,[]); +Drwfigs(nm,figlist,optionlist):=Drawfigures(nm,figlist,optionlist,[]); +Drwfigs(nm,figlist,optionlist,commonops):=Drawfigures(nm,figlist,optionlist,commonops); +////%Drwfigs end//// + +////%Drawfigures start//// 190426 +Drawfigures(nm,figlist):=Drawfigures(nm,figlist,[]); +Drawfigures(nm,figlist,optionlist):=Drawfigures(nm,figlist,optionlist,[]); +Drawfigures(nm,figlistorg,optionlistorg,commonops):=( +//help:Drawfigures(["pt1","cr1"], [["Size=3"],[]],["Msg=n"]); + regional(figlist,name,figL,optionlist,nn,kk,fig,eqL,msg,tmp,tmp1,tmp2); + name="figs"+nm; + tmp=Divoptions(commonops); + eqL=tmp_5; + msg="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msg=Toupper(substring(tmp_2,0,1)); + ); + ); + figlist=figlistorg; + if(isstring(figlist),figlist=parse(figlist)); + nn=length(figlist); + optionlist=optionlistorg; + if(length(optionlist)==0, //190531from + optionlist=apply(1..nn,[]); + ); + if(!islist(optionlist_1), + optionlist=apply(1..nn,optionlist); + ); + if(length(optionlist)<nn, + tmp=optionlist_(length(optionlist)); + tmp2=length(optionlist); + tmp1=apply(tmp2..nn,tmp); + optionlist=concat(optionlist,tmp1); + ); //190531to + figL=[]; + forall(1..nn,kk, + fig=figlist_kk; + if(isstring(fig),fig=parse(fig)); + if(length(fig)>0, + if(Measuredepth(fig)==0,fig=[fig]); //190531from + if(Measuredepth(fig)==1,fig=[fig]); + forall(1..(length(fig)), + tmp1=fig_#; + tmp2=name+"n"+text(kk)+"p"+text(#); + if(length(tmp1)==1, + Pointdata(tmp2,tmp1,optionlist_kk); + figL=append(figL,"pt"+tmp2); + , + Listplot("-"+tmp2,tmp1,optionlist_kk); + figL=append(figL,tmp2); //190427 + ); + ); //190531to + ); + ); + tmp=apply(figL,Dqq(#)); + tmp=name+"="+text(tmp)+";"; + parse(tmp); + if(msg=="Y", + println("generate "+name+"="+text(figL)); + ); + figL; +); +////%Drawfigures end//// + +////%Setarrow start//// +Setarrow():=Setarrow([]); +Setarrow(arglist):=( +//help:Setarrow([-1,-1,-1,1,0.3]); +//help:Setarrow([size(1),angle(18),position(1),cut(0),segstyle("dr,1")]); + regional(tmp); + tmp=select(arglist,isreal(#)); + if(length(tmp)==0, + println([YaSize,YaAngle,YaPosition,YaCut,YasenStyle]); + ); + if(length(tmp)>=1, + if((tmp_1>0),YaSize=tmp_1); + ); + if(length(tmp)>=2, + if((tmp_2>0)&(tmp_2<90),YaAngle=tmp_2); + ); + if(length(tmp)>=3, + if((tmp_3>=0)&(tmp_3<=1),YaPosition=tmp_3); + ); + if(length(tmp)>=4, + if((tmp_4>=0)&(tmp_4<1),YaCut=tmp_4); + ); + tmp=select(arglist,isstring(#)); + if(length(tmp)>0, + YasenStyle=tmp_1; + ); + [YaSize,YaAngle,YaPosition,YaCut,YasenStyle]; +); +////%Setarrow end//// + +////%Arrowheaddata start//// +Arrowheaddata(point,direction):=Arrowheaddata(point,direction,[]); +Arrowheaddata(point,direction,options):=( +// help:Arrowheaddata(A,B); +// help:Arrowheaddata(options=[size(1),angle(18), "Coord=phy"]); + regional(list,ookisa,hiraki,Houkou,Str,Flg,Ev,Nv,pA,pB, + reL,eqL,coord,pP,rF,gG,Flg,Nj,Eps,scx,scy,tmp,tmp1,tmp2); + Eps=10^(-3); + coord="P"; + ookisa=0.2*YaSize; + hiraki=YaAngle; + iti=1; + kiri=0; + Futosa=0; + Str=YaStyle; + tmp=Divoptions(options); + eqL=tmp_5; //181018from + reL=tmp_6; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=substring(tmp_1,0,1); + tmp2=substring(tmp_2,0,1); + if(Toupper(tmp1)=="C", + coord=Touppera(tmp2); + ); + ); //181018to + forall(1..(length(reL)), //181110from + tmp=reL_#; + if(#==1,ookisa=ookisa*tmp); + if(#==2, + if(tmp<5, + hiraki=hiraki*tmp; + , + hiraki=tmp; + ); + ); + ); //181110to + Flg=0; + hiraki=hiraki*pi/180; + if(ispoint(direction),Houkou=direction.xy); //181018 + if(isstring(direction),Houkou=parse(direction),Houkou=direction); + if(Measuredepth(Houkou)==2,Houkou=Houkou_1); + if(coord=="P",//181018from + if(ispoint(point),pP=point.xy,pP=point); + , + pP=Pcrd(point); + if(!islist(Houkou_1), + Houkou=Pcrd(Houkou); + , + Houkou=apply(Houkou,Pcrd(#)); + ); + );//181018to + if(islist(Houkou_1), + tmp=Nearestpt(pP,Houkou); + pP=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); + tmp1=apply([pP,pB],LLcrd(#)); + tmp2=apply(gG,LLcrd(#)); + tmp=Intersectcrvspp([pP,pB],gG); + if(length(tmp)>0, + Houkou=pP-Pcrd(tmp_1_1); + Flg=1; + ); + ); + ); + if(Flg==0, + println("Arrowhead may be too large (no intersect)"); + Flg=2; + ); + ); + if(Flg<2, + Ev=-1/|Houkou|*Houkou; + 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; + ); +); +////%Arrowheaddata end//// + +////%Arrowhead start//// +Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]); //181018from +Arrowhead(Arg1,Arg2,Arg3):=( + if(isstring(Arg1), + Arrowhead(Arg1,Arg2,Arg3,[]); + , + Arrowhead(text(ArrowheadNumber),Arg1,Arg2,Arg3); + ); +); +Arrowhead(nm,point,direction,optionsorg):=(//181018from +//help:Arrowhead("1",B,B-A); +//help:Arrowhead(options=[size(1),angle(18),position(1),cut(0),"Coord=P(L)"]); +//help:Arrowhead(the default is -1 for numeric option); +//help:Arrowhead(A,"gr1"); + regional(name,Ltype,Noflg,reL,opstr,opcindy,color,eqL,coord, + options,cut,pP,Houkou,ptstr,hostr,tmp,tmp1,tmp2,list); + name="arh"+nm; //181018 + ArrowheadNumber=ArrowheadNumber+1; + options=optionsorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + reL=tmp_6; + color=tmp_(length(tmp)-2); + eqL=tmp_5; + coord="P"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=substring(tmp_1,0,1); + tmp2=substring(tmp_2,0,1); + if(Toupper(tmp1)=="C", + coord=Toupper(tmp2); + options=remove(options,[#]); + ); + ); //181018to + tmp1=[YaSize,YaAngle,YaPosition,YaCut]; //181214from + forall(1..(length(reL)), + if(reL_#<0, reL_#=tmp1_#); + ); + forall((length(reL)+1)..4, + reL=append(reL,tmp1_#); + ); + cut=reL_4; + tmp=reL_(1..3); + options=select(options,!isreal(#)); + options=concat(options,tmp); //181214to + if(ispoint(direction),Houkou=direction.xy); //181018 + if(isstring(direction),Houkou=parse(direction),Houkou=direction); + if(Measuredepth(Houkou)==2,Houkou=Houkou_1); + if(coord=="P",//181018from + if(ispoint(point),pP=point.xy,pP=point); + , + pP=Pcrd(point); + if(!islist(Houkou_1), + Houkou=Pcrd(Houkou); + , + Houkou=apply(Houkou,Pcrd(#)); + ); + );//181018to + list=Arrowheaddata(pP,Houkou,options); + if(!Inwindow(LLcrd(pP)),Noflg=2);//181018 + if(Noflg<3, + tmp1=apply(list,LLcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + Listplot("-arh"+nm,apply(list,LLcrd(#)),concat(options,["notex","Msg=n"])); + ); + ); + if(Noflg==0, + tmp=Divoptions(options); + opstr=tmp_(length(tmp)-1); + opstr=opstr+","+Dqq("Cut="+format(cut,5)); + ptstr=Textformat(LLcrd(pP),5); + if(isstring(direction), //181019 + hostr=direction; + , + if(!islist(Houkou_1), + hostr=format(LLcrd(Houkou),5); + , + hostr=format(apply(Houkou,LLcrd(#)),5); + ); + ); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")"); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + ); +); +////%Arrowhead end//// + +////%Arrowdata start//// +Arrowdata(ptlist):=Arrowdata(ptlist,[]); //181110from +Arrowdata(Arg1,Arg2):=( + regional(name); + if(isstring(Arg1), + Arrowdata(Arg1,Arg2,[]); + , + name=""; + forall(Arg1, + if(ispoint(#), + name=name+#.name; //190505 + ); + ); + Arrowdata(name,Arg1,Arg2); + ); +); //181110from +Arrowdata(nm,ptlistorg,optionsorg):=( +//help:Arrowdata("1",[A,B]); +//help:Arrowdata("1",[pt1,pt2]); +//help:Arrowdata(options=[size(1),angle(18),pos(1),cut(0),"Cutend=0,0","Coord=p/l"]); +//help:Arrowdata(optionsadded=["line"]); + regional(options,Ltype,Noflg,name,opstr,opcindy,eqL,reL,strL,color,size,coord, + flg,lineflg,cutend,tmp,tmp1,tmp2,pA,pB,angle,segpos,cut,scaley,ptlist); + name="ar"+nm; + scaley=SCALEY; //190412 + Setscaling(1); //190412 + ptlist=[]; + forall(ptlistorg, + if(ispoint(#),tmp=[#.x, scaley*#.y], tmp=[#_1,scaley*#_2]); + ptlist=append(ptlist,tmp); + ); +// ptlist=apply(ptlistorg,[#_1,scaley*#_2]); //190412 + options=optionsorg; + tmp=select(options,isstring(#)); //181214from + tmp1=select(tmp,contains(["dr","da","do","id"],substring(#,0,2))); + if(length(tmp1)==0,options=append(options,YasenStyle)); //181214to + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + tmp1=[YaSize,YaAngle,YaPosition,YaCut]; //181214from + forall(1..(length(reL)), + if(reL_#<0, reL_#=tmp1_#); + ); + forall((length(reL)+1)..4, + reL=append(reL,tmp1_#); + ); + size=reL_1; + angle=reL_2; + segpos=reL_3; + cut=reL_4; + lineflg=0; + if(contains(strL,"l")%contains(strL,"L"), + lineflg=1; + );//181018from + options=remove(options,strL); + cutend=[0,0];//180719 + coord="P";//181018 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,2)); + tmp2=tmp_2; + if(tmp1=="CU",//180719from + tmp2=replace(tmp2,"[",""); + tmp2=replace(tmp2,"]",""); + cutend=tokenize(tmp2,","); + if(length(cutend)==1,cutend=[cutend_1,cutend_1]); + options=remove(options,[#]); + ); + if(tmp1=="CO",//181018from + coord=Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); + ); + if(|cutend|>0,//181110from + tmp=ptlist_2-ptlist_1; + tmp=tmp/|tmp|; + ptlist_1=ptlist_1+tmp*cutend_1; + ptlist_2=ptlist_2-tmp*cutend_2; + );//181110to + if(coord=="P", + pA=ptlist_1; pB=ptlist_2; + if(ispoint(pA),pA=pA.xy); + if(ispoint(pB),pB=pB.xy); + , + Setscaling(scaley); //190419 + pA=Pcrd(ptlist_1); pB=Pcrd(ptlist_2); + Setscaling(1); //190419 + );//181018to + if(Noflg<3, + println("generate Arrowdata "+name); + tmp=name+"="+Textformat([pA,pB],5)+";"; + parse(tmp); + if(lineflg==0, // 16.04.09 from + tmp=pA-0.2*size/2*(pB-pA)/|pB-pA|; // 15.06.11 + , + tmp=pB; + ); // 16.04.09 until + tmp=format([LLcrd(pA),LLcrd(tmp)],6); + ); + if(Noflg<2, + if(isstring(Ltype), + Listplot("-ar"+nm,[LLcrd(pA),LLcrd(pB)],append(options,"Msg=n")); + Arrowhead(nm,pA+segpos*(pB-pA),pB-pA,options); //181110 + , + if(Noflg==1,Ltype=0); + ); + ); + Setscaling(scaley); //190412 + [Lcrd(pA),Lcrd(pB)]; +); +////%Arrowdata end//// + +////%Lightarrowdata start//// +Lightarrowdata(ptlist):=Lightarrowdata(ptlist,[]); //181110from +Lightarrowdata(Arg1,Arg2):=( + regional(name); + if(isstring(Arg1), + Lightarrowdata(Arg1,Arg2,[]); + , + name=""; + forall(Arg1, + if(ispoint(#), + name=name+#.name; //190505 + ); + ); + Lightarrowdata(name,Arg1,Arg2); + ); +); //181110from +Lightarrowdata(nm,ptlist,optionsorg):=( +//help:Lightarrowdata("1",[pt1,pt2]); +//help:Lightarrowdata(options=[size(1),angle(18),pos(1),cut(0),"Cutend=0,0","Line=y(n)"]); + regional(options,Ltype,Noflg,opstr,opcindy,eqL,reL,strL,color,size,coord,lineflg, + flg,lineflg,cutend,tmp,tmp1,tmp2,pA,pB,angle,segpos,cut,scaley,Ev,Nv,pP); + pA=Pcrd(ptlist_1); pB=Pcrd(ptlist_2); + scaley=SCALEY; //190412 + Setscaling(1); + ptlist=[]; + forall(ptlistorg, + if(ispoint(#),tmp=[#.x, scaley*#.y], tmp=[#_1,scaley*#_2]); + ptlist=append(ptlist,tmp); + ); + options=optionsorg; + tmp=select(options,isstring(#)); //181214from + tmp1=select(tmp,contains(["dr","da","do","id"],substring(#,0,2))); + if(length(tmp1)==0,options=append(options,YasenStyle)); //181214to + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + tmp1=[YaSize,YaAngle,YaPosition,YaCut]; //181214from + forall(1..(length(reL)), + if(reL_#<0, reL_#=tmp1_#); + ); + forall((length(reL)+1)..4, + reL=append(reL,tmp1_#); + ); + size=reL_1; + angle=reL_2; + segpos=reL_3; + cut=reL_4; + lineflg=0; + if(contains(strL,"l")%contains(strL,"L"), + lineflg=1; + );//181018from + options=remove(options,strL); + cutend=[0,0];//180719 + coord="P";//181018 + lineflg=1; //190504 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,2)); + tmp2=tmp_2; + if(tmp1=="CU",//180719from + tmp2=replace(tmp2,"[",""); + tmp2=replace(tmp2,"]",""); + cutend=tokenize(tmp2,","); + if(length(cutend)==1,cutend=[cutend_1,cutend_1]); + options=remove(options,[#]); + ); + if(tmp1=="LI",//190504from + tmp2=Toupper(substring(tmp2,0,1)); + if(tmp2=="N",lineflg=0); + options=remove(options,[#]); + );//190504to + ); + if(Noflg<3, + tmp="ar"+nm+"="+Textformat([pA,pB],5)+";"; + parse(tmp); + ); + if(Noflg<2, + if(isstring(Ltype), + if(lineflg==1, //190504from + Listplot("-ar"+nm,[LLcrd(pA),LLcrd(pB)],append(options,"Msg=n")); + , + tmp=pB; + pB=pA; + pA=pB-tmp; + ); //190504to + size=0.2*size; + angle=angle*pi/180; + pP=pA+segpos*(pB-pA); + Ev=-1/|pB-pA|*(pB-pA); + Nv=[-Ev_2, Ev_1]; + tmp1=pP+size*cos(angle)*Ev+size*sin(angle)*Nv; + tmp2=pP+size*cos(angle)*Ev-size*sin(angle)*Nv; + ArrowheadNumber=ArrowheadNumber+1; + Listplot("-arh"+nm,[tmp1,pP,tmp2],append(options,"Msg=n")); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Setscaling(scaley); + tmp1=Textformat(LLcrd(pP),5); + tmp2=Textformat(LLcrd(pB-pA),5); + Com2nd("Arrowhead("+tmp1+","+tmp2+opstr+")"); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + ); + Setscaling(scaley); //190412 + [Lcrd(pA),Lcrd(pB)]; +); +////%Lightarrowdata end//// + +////%Anglemark start//// +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); + ); +); // to +Anglemark(nm,plist,options):=( +//help([A,B,C],["E=\theta",2]); +//help:Anglemark("1",[A,B,C],["E=1.2,\theta",2]); +// help:Anglemark("1",[A,B,2*pi]); +//help:Anglemark(options=[size,"E/L=(sep,)letter"]); + regional(name,Out,pB,pA,pC,Ctr,ra,sab,sac,ratio,opstr,Bname,Bpos,color, + Brat,tmp,tmp1,tmp2,Num,opcindy,Ltype,eqL,realL,Rg,Th,Noflg,Msg); + name="ag"+nm; + Bpos="md"+name; + ra=0.5; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + eqL=tmp_5; + realL=tmp_6; + Bname=""; + Brat=1.2; //180530 + Num=20; + Msg="Y"; + opstr=""; + if(length(realL)>0, + ra=realL_1*ra; + opstr=","+text(realL_1);//180530 + ); + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if((tmp1=="L")%(tmp1=="E"), + if(tmp1=="L",Bname="Letter("); + if(tmp1=="E",Bname="Expr("); + Bname=Bname+Bpos+","+Dqq("c")+",";//16.10.29 + tmp=tmp_2; //190524from + tmp1=Indexall(tmp,","); + if(length(tmp1)==0, + Bname=Bname+Dqq(tmp); + , + if(length(tmp1)>1, + Brat=parse(substring(tmp,0,tmp1_1-1)); + tmp=substring(tmp,tmp1_1,length(tmp)); + tmp1=Indexall(tmp,","); + , + if(substring(tmp,tmp1_1,tmp1_1+1)!="[", + Brat=parse(substring(tmp,0,tmp1_1-1)); + tmp=substring(tmp,tmp1_1,length(tmp))+",[]"; + tmp1=Indexall(tmp,","); + ); + ); + Bname=Bname+Dqq(substring(tmp,0,tmp1_1-1)); + tmp=substring(tmp,tmp1_1+1,length(tmp)-1); + tmp=Strsplit(tmp,","); + tmp1=apply(tmp,Dqq(#)); + Bname=Bname+","+text(tmp1); + ); + Bname=Bname+");"; //190524to + ); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + pB=Lcrd(plist_1); pA=Lcrd(plist_2); sab=pB-pA; + Ctr=pA; + if((length(plist_3)>1)%(ispoint(plist_3)), //180506from + pC=Lcrd(plist_3); + sac=pC-pA; + Rg=[arctan2(sab)+0,arctan2(sac)+0]; + , + sac=pB-pA; + Rg=[arctan2(sab)+0,arctan2(sab)+plist_3]; + ); //180506to + 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+"="; //no ketjs + tmp=tmp+Textformat(tmp1,5)+Dq+")"; //no ketjs +// tmp=Bpos+"="+Textformat(tmp1,5); ; //only ketjs + parse(tmp+";");//16.10.31to[moved] + if(length(Bname)>0, + parse(Bname); + ); + if(Noflg<3, + if(Msg=="Y", //190206 + println("generate anglemark "+name+" and "+Bpos); + ); + tmp1=apply(Out,Pcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; + parse(tmp); + tmp=Textformat(plist,5); //no ketjs on + tmp1=substring(tmp,1,length(tmp)-1); + tmp=name+"=Anglemark("+tmp1+opstr+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + ); + Out; +); +////%Anglemark end//// + +////%Paramark start//// +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); + ); +);// to +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,color); + name="pm"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if((tmp1=="L")%(tmp1=="E"), + if(tmp1=="L",Bname="Letter("); + if(tmp1=="E",Bname="Expr("); + Bname=Bname+Bpos+","+Dqq("c")+",";//16.10.29 + tmp=tmp_2; //190524from + tmp1=Indexall(tmp,","); + if(length(tmp1)==0, + Bname=Bname+Dqq(tmp); + , + if(length(tmp1)>1, + Brat=parse(substring(tmp,0,tmp1_1-1)); + tmp=substring(tmp,tmp1_1,length(tmp)); + tmp1=Indexall(tmp,","); + , + if(substring(tmp,tmp1_1,tmp1_1+1)!="[", + Brat=parse(substring(tmp,0,tmp1_1-1)); + tmp=substring(tmp,tmp1_1,length(tmp))+",[]"; + tmp1=Indexall(tmp,","); + ); + ); + Bname=Bname+Dqq(substring(tmp,0,tmp1_1-1)); + tmp=substring(tmp,tmp1_1+1,length(tmp)-1); + tmp=Strsplit(tmp,","); + tmp1=apply(tmp,Dqq(#)); + Bname=Bname+","+text(tmp1); + ); + Bname=Bname+");"; //190524to + ); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + 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+")";// no ketjs + tmp=Bpos+"="+Textformat(tmp1,5);// only ketjs + parse(tmp+";"); + parse(Bname+";") //190415; + ); + if(Noflg<3, + println("generate paramark "+name); + tmp1=apply(Out,Pcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + tmp1=substring(Textformat(plist,5),1,length(Textformat(plist,5))-1); //no ketjs on + tmp=name+"=Paramark("+tmp1+opstr+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + Out; +); +////%Paramark end//// + +////%Makebowdata start//// +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]; +); +////%Makebowdata end//// + +////%Bowdata start//// +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.04until +); +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,Msg, + Th1,Th2,Noflg,Bops,Bmov,Tmov,Nmov,rev,color); + name="bw"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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=""; + Msg="Y"; //190206 + Tmov=0;//161101from + Nmov=0; + Bmov=""; + rev=0;//16.11.01until + if(length(realL)>0, + Hgt=realL_1*Hgt; // 15.04.12 + if(length(realL)>1,Cut=realL_2); + ); + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="L", + if(indexof(#,"rot")>0, + Bname="Letterrot("; + , + Bname="Letter("; + ); + Bops=tmp_2; + ); + if(tmp1=="E", + if(indexof(#,"rot")>0, + Bname="Exprrot("; + , + Bname="Expr("; + ); + Bops=tmp_2; + ); + if(tmp1=="M", //190206from + Msg=Toupper(substring(tmp_2,0,1)); + ); //190206to + ); + 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)]; + Defvar("md"+name,BOWMIDDLE); //190415 + Bpos=Textformat(BOWMIDDLE,5); //190415 + 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; //190415 + 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+"+"+Textformat(tmp,5); + ); + 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+Dqq(Bops)+");"; //190415 + parse(Bname); + );//161101to + 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, + if(Msg=="Y", //190206 + 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); //no ketjs on + tmp=name+"=Bowdata("+tmp1+opstr+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); +); +////%Bowdata end//// + +////%Bowname start//// +Bowname(str):=Bowname("c",str); +Bowname(dir,str):=( + Expr([BOWMIDDLE,dir,str]); +); +////%Bowname end//// + +////%Bownamerot start//// +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); +); +////%Bownamerot end//// + +////%Deqdata start//// +Deqdata(deq,rng,initt,initf,Num):=( //17.10.04 +//help:Deqdata("[x1,...xn]`=[f1,...fn]","t=[0,20]",0,[...],50); + regional(Eps,Inf,tname,Xname,func,t1,t2,dt,tt,X0,flg, + kl1,kl2,kl3,kl4,pdL,tmp,tmp1,tmp2); + Eps=10^(-3); + Inf=10^3; + tmp=tokenize(deq,"="); + tmp1=replace(tmp_1,"`",""); tmp1=replace(tmp1,"'","");//190410 + tmp1=substring(tmp1,1,length(tmp1)-1); + Xname=tokenize(tmp1,","); + func=tmp_2; + forall(1..(length(Xname)), + func=replace(func,Xname_#,"X_"+text(#)); + ); + tmp=tokenize(rng,"="); + tname=tmp_1; + tmp=parse(tmp_2); + t1=tmp_1; + t2=tmp_2; + tmp="funP("+tname+",X):="+func+";"; + parse(tmp); + tmp="funN("+tname+",X):=-"+func+";"; + parse(tmp); + dt=(t2-t1)/Num; + tt=initt; + X0=Lcrd(initf); + pdL=[flatten([tt,X0])]; + flg=0; + forall(1..(round((t2-initt)/dt)), //190523 + if(flg==0, + kl1=dt*funP(tt,X0); + kl2=dt*funP(tt+dt/2,X0+kl1/2); + kl3=dt*funP(tt+dt/2,X0+kl2/2); + kl4=dt*funP(tt+dt,X0+kl3); + X0=X0+(kl1+2*kl2+2*kl3+kl4)/6; + tt=initt+#*dt; + tmp=flatten([tt,X0]); + pdL=append(pdL,tmp); + if(|tmp|>Inf,flg=1); + ); + ); + tt=initt; + X0=Lcrd(initf); + flg=0; + forall(1..(round((initt-t1)/dt)), //190523 + if(flg==0, + kl1=dt*funN(tt,X0); + kl2=dt*funN(tt+dt/2,X0+kl1/2); + kl3=dt*funN(tt+dt/2,X0+kl2/2); + kl4=dt*funN(tt+dt,X0+kl3); + X0=X0+(kl1+2*kl2+2*kl3+kl4)/6; + tt=initt-#*dt; + tmp=flatten([tt,X0]); + pdL=prepend(tmp,pdL); + if(|tmp1|>Inf,flg=1); + ); + ); + pdL; +); +////%Deqdata end//// + +////%Deqplot start//// +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,deqorg,rngorg,initt,initf,options):=( //17.10.06 +//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]",0,[1,0.5]); + regional(deq,rng,Ltype,Noflg,eqL,opcindy,Num,name,nn,pdL,phase, + sel,tmp,tmp1,tmp2,tmp3,color); + name="de"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + Num=50; + forall(eqL, + tmp=indexof(#,"="); + tmp2=substring(#,0,1); + tmp2=Toupper(tmp2); + tmp1=substring(#,tmp,length(#)); + if(Toupper(substring(#,0,1))=="N", + Num=parse(tmp1); + ); + ); + rng=rngorg; + if(indexof(rng,"=")==0, + rng=rng+"="+Textformat([XMIN,XMAX],6); + ); + deq=replace(deqorg,unicode("2018"),"`"); //190296//0416 + deq=replace(deq,"'","`"); //180527 + tmp3=indexof(deq,"="); + tmp1=substring(deq,0,tmp3-1); + tmp2=substring(deq,tmp3,length(deq)); + if(indexof(tmp1,"[")==0, + phase=0; + sel=[1,2]; + , + phase=1; + sel=[2,3]; + ); + nn=length(Indexall(tmp1,"`")); + if(nn==0, //190211from + println(" Lhs of equation has no single/back quotation "+tmp1); + ); + if(nn>0, + tmp=Indexall(tmp1,"`"); + if(tmp_(length(tmp))!=tmp3-1, + nn=0; + , + forall(reverse(2..(length(tmp))), + if((nn>0)&(!contains(tmp,tmp_#-1)), + nn=0; + ); + ); + ); + if(nn==0, + println(" Lhs of equation is not correct"); + ); + ); //190211to + if(nn==1, + if(indexof(tmp1,"[")==0, + tmp1="["+replace(tmp1,"`","]`"); + deq=tmp1+"="+tmp2; + ); + ); + if(nn>1, + tmp=indexof(tmp1,"`"); + tmp1=substring(tmp1,0,tmp-1); + deq="["; + forall(1..nn, + deq=deq+tmp1+"N"+text(#)+","; + ); + deq=substring(deq,0,length(deq)-1)+"]`=["; + forall(1..(nn-1), + deq=deq+tmp1+"N"+text(#+1)+","; + ); + forall(reverse(1..(nn)),jj, + tmp=tmp1; + forall(1..jj, + tmp=tmp+"`"; + tmp2=replace(tmp2,tmp,tmp1+"N"+text(#+1)); + ); + ); + tmp2=tmp2+"]"; + forall(1..(length(tmp2)-1), + tmp=substring(tmp2,#-1,#); + if(tmp!=tmp1, + deq=deq+tmp; + , + tmp=substring(tmp2,#,#+1); + if(tmp=="N", + deq=deq+tmp1; + , + deq=deq+tmp1+"N1" + ); + ); + ); + deq=deq+"]"; + ); + if((nn>0)&(Noflg<3), //190211 + pdL=Deqdata(deq,rng,initt,initf,Num); + if(phase==1, + pdL=apply(pdL,#_(2..3)); + ); + tmp1=apply(pdL,Pcrd(#)); + tmp=name+"="+Textformat(tmp1,5)+";"; //190415 + parse(tmp); + ); + if((nn>0)&(Noflg<1), //190211 //no ketjs on + tmp=Assign(deq); + tmp=replace(deq,"'","`"); + tmp=name+"=Deqplot('"+tmp+"','"+rng+"',"; + tmp=tmp+format(initt,6)+","+Textformat(initf,6); + tmp=tmp+","+text(sel)+",'Num="+text(Num)+"')"; + tmp=RSform(tmp); + GLIST=append(GLIST,tmp); + ); //no ketjs off + if((nn>0)&(Noflg<2), //190211 + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); +); +////%Deqplot end//// + +////////// old enclosing /////////////// + +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,color + 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; + color=tmp_(length(tmp)-2); + 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=Norm(pt-Start); + forall(2..(length(KL)),ii, // 15.04.20 + tmp1=KL_ii_1; + tmp2=Norm(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 //no ketjs on + tmp1="list"+PaO(); + forall(plist, + tmp1=tmp1+#+","; + ); + tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")"; + GLIST=append(GLIST,tmp);//16.11.07to //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + tmp=apply(AnsL,LLcrd(#));//16.10.20 + tmp; +); + +/////////// new enclosing /////////// + +////%Enclosing start//// +Enclosing(nm,plist):=Enclosing2(nm,plist,[]);//180706[2lines] +Enclosing(nm,plistorg,options):=Enclosing2(nm,plistorg,options); +Enclosing2(nm,plist):=Enclosing2(nm,plist,[]); +Enclosing2(nm,plistorg,options):=( +//help:Enclosing("1",["sg2","gr1","Invert(sg2)"]); +//help:Enclosing(options=[startpoint,epspara(1)]); + regional(name,plist,AnsL,Start,Eps,Eps1,Eps2,flg,Fdata,Gdata,KL, + t1,t2,tst,ss,ii,nn,nxtno,Ltype,Noflg,realL,eqL,opstr,opcindy, + tmp,tmp1,tmp2,color,epspara,p1,p2); + name="en"+nm; + plist=plistorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + realL=tmp_6; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + Eps=10^(-5); // 16.12.05 + epspara=1; //180707 + Eps1=0.01; + Eps2=0.1; + Start=[]; + flg=0; + forall(realL, + if(isList(#) % ispoint(#), + Start=Lcrd(#); // 18.02.02 + , + if(flg==0,epspara=#);//180707 + if(flg==1,Eps1=#); + if(flg==2,Eps2=#); + flg=flg+1; + ); + ); + flg=0; + AnsL=[]; + if(length(plist)==1, + Fdata=parse(plist_1); + tmp1=Fdata_1; + tmp2=Fdata_(length(Fdata)); + if(|tmp1-tmp2|<Eps, + AnsL=Fdata; + , + AnsL=append(Fdata,tmp1); + ); + flg=1; + ); + if(flg==0, + Fdata=plist_1; + Gdata=plist_(length(plist)); + KL=Intersectcurvespp(Fdata,Gdata); + if(length(KL)==0, + tmp=parse(Gdata); + tmp1=LLcrd(Op(length(tmp),tmp)); //18.02.02from + tmp=parse(Fdata); + tmp2=LLcrd(Op(1,tmp)); + tmp=Listplot(name,[tmp1,tmp2],["nodisp"]); + plist=append(plist,"sg"+name); + Start=tmp2; + tst=1; //18.02.02to + p1=Start; + , + if(length(KL)==1, + tst=KL_1_2; + Start=Pointoncurve(tst,Fdata); + ); + if(length(KL)>1, + KL=sort(KL,[#_2]); + if(Start==[], + tst=KL_1_2; + Start=Pointoncurve(tst,Fdata); + , + tmp=apply(KL,|#_1-Start|); + tmp=min(tmp); + tmp1=select(KL,|#_1-Start|<tmp+Eps1);//180718 + tst=tmp1_1_2; + Start=Pointoncurve(tst,Fdata); + ); + ); + ); + ); + if(flg==0, + t1=tst; + p1=Pointoncurve(t1,Fdata); //180713 + println("Start point of enclosing is "+text(Start)); + forall(1..(length(plist)),nn, + Fdata=plist_nn; + if(nn==length(plist),nxtno=1,nxtno=nn+1); + Gdata=plist_nxtno; + KL=Intersectcurvespp(Fdata,Gdata); + if(length(KL)==0, + tmp1=parse(Fdata); //18.02.02from + tmp2=parse(Gdata); + tmp2=Prepend(Op(length(tmp1),tmp),tmp2); + Gdata=replace(Gdata,"(",""); + Gdata=replace(Gdata,")",""); + tmp=Gdata+"="+Textformat(tmp2,6)+";"; //190415 + parse(tmp); + plist_nxtno=Gdata; + t2=Length(tmp1); + p2=Pointoncurve(t2,Fdata); //180713 + ss=1; //18.02.02to + , + KL=sort(KL,[#_2]);//180706 + tmp=parse(Fdata); + tmp1=t1+epspara/50*length(tmp); +// KL=select(KL,#_2>t1+epspara/50*length(tmp)); //180707 + KL=select(KL,(#_2>tmp1)%((#_2>t1)&(|#_1-p1|>Eps1))); //180713,16 + t2=KL_1_2; + ss=KL_1_3; + if(abs(t2-t1)<Eps,//180707 + if(length(KL)>1, + t2=KL_2_2; + ss=KL_2_3; + , + println(text(nn)+" and "+text(nxtno)+" not intersect"); + flg=1; + ); + ); + ); + if(flg==0, + tmp=Partcrv("",t1,t2,Fdata,["nodata"]); + if(nn==1, + AnsL=tmp; + , + AnsL=concat(AnsL,tmp_(2..(length(tmp)))); + ); + ); + t1=ss;//180706 + p1=Pointoncurve(t1,Gdata); //180713 + ); + ); + if(flg==0, + AnsL=apply(AnsL,Pcrd(#)); + ); + if(Noflg<3, + println("generate Enclosing "+name); + tmp=name+"="+Textformat(AnsL,5)+";"; //190415 + parse(tmp); + tmp=name+"=Enclosing2(";//16.11.07from + tmp1="list"+PaO(); + forall(plistorg, //18.02.02 + tmp1=tmp1+#+","; + ); + tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")";//18.0706from //no ketjs on + if(length(Start)>0,tmp=tmp+","+Textformat(Start,6)); + tmp=tmp+","+text(epspara)+")";//18.0706to,180707 + GLIST=append(GLIST,tmp);//16.11.07to //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + tmp=apply(AnsL,LLcrd(#));//16.10.20 + tmp; +); +////%Enclosing end//// + +/////////// end of new enclosing /////////// + +/////////// new Hatchdata(cindy) /////////// + +////%Makehatch start//// +Makehatch(iolistorg,pt,vec,bdylist):=( + regional(Eps,iolist,sg,bdy,out,nb,tenL,ns,ne,ioL, + ii,jj,kk,nvec,nbdy,sgn1,sgn2,flg,rmL,p0,p1,p2,pL, + Scalebkup,tmp,tmp1,tmp2); + Eps=10^(-5); + nvec=[-vec_2,vec_1]; + nvec=nvec/|nvec|; + if(!islist(iolistorg),iolist=[iolistorg],iolist=iolistorg); + forall(1..(length(iolist)), + tmp=replace(iolist_#,"i","1,"); + tmp=replace(tmp,"o","0,"); + tmp="["+substring(tmp,0,length(tmp)-1)+"]"; + iolist_#=parse(tmp); + ); + Scalebkup=[SCALEX,SCALEY];//181020[2lines] + SCALEX=1; + SCALEY=1; + sg=Lineplot("",[pt,pt+vec],["nodata"]); + nb=length(bdylist); + if(nb>0, + tenL=[]; + forall(1..nb,ii, + rmL=[]; + bdy=bdylist_ii; + nbdy=length(bdy)-1; + pL=[]; + forall(1..nbdy,jj, + p1=bdy_jj; + p2=bdy_(mod(jj+1-1,nbdy)+1); + tmp=Intersectseg(sg,[p1,p2],Eps); + if(abs(tmp_1)<Eps, //18.02.01 + p0=tmp_2; t=tmp_3; s=tmp_4; + flg=0; //181003from + forall(pL, + if(flg==0, + if(Norm(#_1-p0)<Eps, + flg=1; + ); + ); + ); + if(flg==0, + pL=append(pL,[p0,t,s,ii]); + ); //181003to + ); + ); + if(length(pL)>0, + pL=sort(pL,[#_2]); + pL=apply(1..(length(pL)),append(pL_#,mod(#,2))); + tenL=concat(tenL,pL); + ); + ); + tenL=sort(tenL,[#_2]); + if(length(tenL)>0, //180619from + tmp1=tenL; tenL=[tmp1_1]; + forall(2..(length(tmp1)),ii, //180717from + tmp=tmp1_ii; + flg=0; + forall(tenL, + if((Norm(tmp_1-#_1)<Eps1)&(tmp_4==#_4), + flg=1; + ); + ); + if(flg==0, + tenL=append(tenL,tmp); + ); + );//180717to + ); //180619to + ioL=apply(1..nb,0); + ns=1; + ne=length(tenL); + if(ne>0,tmp=tenL_1_1,tmp=sg_2); + if(|sg_1-tmp|>Eps, + tmp=[sg_1,-1,1,ioL]; + tenL=prepend(tmp,tenL); + ns=ns+1; + ne=ne+1; + ); + if(|sg_2-tenL_(length(tenL))_1|>Eps, + tmp=[sg_2,-1,2,ioL]; + tenL=append(tenL,tmp); + ); + forall(ns..(ne-1),ii, //180619 ne=>ne-1 + tmp=tenL_ii; + tmp1=tmp_4; + tmp2=tmp_5; + ioL_tmp1=tmp2; + tmp=[tmp_1,tmp_2,tmp_4,ioL]; + tenL_ii=tmp; + ); + out=[]; + forall(1..(length(tenL)-1),ii, + tmp1=tenL_ii; + if(contains(iolist,tmp1_4), + tmp2=tenL_(ii+1); + tmp=Listplot("",[tmp1_1,tmp2_1],["nodata"]); + out=append(out,tmp); + ); + ); + ); + SCALEX=Scalebkup_1; //181020 + SCALEY=Scalebkup_2; + out; +); +////%Makehatch end//// + +////%Anyselected start//// +Anyselected(ptL):=( + regional(tmp,out); + out=false; + forall(ptL, + if(isstring(#),tmp=parse(#),tmp=#); + out=(out)%(isselected(tmp)); + ); + out; +); +////%Anyselected end//// + +////%Hatchdata start//// +Hatchdata(nm,iostr,bdylist):=Hatchdatacindy(nm,iostr,bdylist,[]);//180619 +Hatchdata(nm,iostr,bdylist,optionsorg):=( //181003from + regional(options,tmp,tmp1,tmp2,eqL,strL,chkL,outflg); + options=optionsorg; + tmp=Divoptions(options); + eqL=tmp_5; + strL=tmp_7; + outflg=0; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(tmp_1); + if(substring(tmp1,0,1)=="O", + tmp2=tmp_2; + if(tmp2!="n", + outflg=1; + option=remove(options,[#]); + if((tmp2=="m")%(tmp2=="r"), + options=append(options,tmp2);; + ); + ); + ); + ); + if(outflg==0, + options=remove(options,strL); + Hatchdatacindy(nm,iostr,bdylist,options); + , + HatchdataR(nm,iostr,bdylist,options); + ); +); //181003to +Hatchdatacindy(nm,iostr,bdylist):=Hatchdata(nm,iostr,bdylist,[]); +Hatchdatacindy(nm,iostr,bdylistorg,optionsorg):=( + //help:Hatchdata("1",["ii"],[["ln1","Invert(gr1)"],["gr2","n"]]); +//help:Hatchdata(options=["Not=pointlist","File=y(/m/n)","Max=50","Check=",angle,width]); + regional(name,bdylist,bdynameL,bname,Ltype,Noflg,opstr,opcindy,reL, + options,eqL,maxnum,startP,angle,interval,vec,nvec,ctr,pt,kk,delta,sha,AnsL, + color,tmp,tmp1,tmp2,tmp3,namep,x1,y1,x2,y2,p1,p2, //180717 + fname,fileflg,mkflg,vaL,pL,nL,nn,str,is,ie); //181102 + name="ha"+nm; + fname=Fhead+name+".txt"; + bdylist=[]; + bdynameL=[]; + forall(1..(length(bdylistorg)),kk, + tmp1=bdylistorg_kk; + if(length(tmp1)==1, + bname=tmp1_1; + , + tmp=tmp1_(length(tmp1)); + if(contains(["n","s","e","w"],tmp), + namep=tmp1_1;//180717from + tmp2=parse(namep); + if(substring(namep,0,2)=="ln", //180717from + if(contains(["n","s"],tmp), + x1=tmp2_1_1; y1=tmp2_1_2; x2=tmp2_2_1; y2=tmp2_2_2; + p1=[NE.x,(y2-y1)/(x2-x1)*(NE.x-x1)+y1]; + p2=[SW.x,(y2-y1)/(x2-x1)*(SW.x-x1)+y1]; + Listplot(name+text(kk),[p1,p2],["nodisp"]); + namep="sg"+name+text(kk); + tmp2=parse(namep); + ); + if(contains(["e","w"],tmp), + x1=tmp2_1_1; y1=tmp2_1_2; x2=tmp2_2_1; y2=tmp2_2_2; + p1=[(x2-x1)/(y2-y1)*(NE.y-y1)+x1,NE.y]; + p2=[(x2-x1)/(y2-y1)*(SW.y-y1)+x1,SW.y]; + Listplot(name+text(kk),[p1,p2],["nodisp"]); + namep="sg"+name+text(kk); + tmp2=parse(namep); + ); + );//180717to + if(tmp=="s", + Listplot(name,[LLcrd(tmp2_1),[tmp2_1_1,2*YMIN-YMAX], //180717[2lines] + [tmp2_(length(tmp2))_1,2*YMIN-YMAX],LLcrd(tmp2_(length(tmp2)))], + ["nodisp"]); + Joincrvs(text(kk)+name,[namep,"sg"+name],["nodisp"]);//180717 + bname="join"+text(kk)+name; + ); + if(tmp=="n", + Listplot(name,[LLcrd(tmp2_1),[tmp2_1_1,2*YMAX-YMIN], //180717[2lines] + [tmp2_(length(tmp2))_1,2*YMAX-YMIN],LLcrd(tmp2_(length(tmp2)))], + ["nodisp"]); + Joincrvs(text(kk)+name,[namep,"sg"+name],["nodisp"]); + bname="join"+text(kk)+name; + ); + if(tmp=="e", + Listplot(name,apply([tmp2_1,[XMAX,tmp2_1_2], + [XMAX,tmp2_(length(tmp2))_2],tmp2_(length(tmp2))],LLcrd(#)),["nodisp"]); + Joincrvs(text(kk)+name,[namep,"sg"+name],["nodisp"]);//180717 + bname="join"+text(kk)+name; + ); + if(tmp=="w", + Listplot(name,apply( [tmp2_1,[XMIN,tmp2_1_2], + [XMIN,tmp2_(length(tmp2))_2],tmp2_(length(tmp2))],LLcrd(#)),["nodisp"]); + Joincrvs(text(kk)+name,[namep,"sg"+name],["nodisp"]);//180717 + bname="join"+text(kk)+name; + ); + , + Enclosing2(text(kk)+name,tmp,["nodisp"]);//180619[2lines] + bname="en"+text(kk)+name; + ); + ); + bdylist=append(bdylist,parse(bname)); + bdynameL=append(bdynameL,bname); + ); + options=optionsorg; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + reL=tmp_6; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + angle=45; +// interval=0.125*1000/2.54/MilliIn; + interval=0.25*1000/2.54/MilliIn; //180706 + startP=[(XMIN+XMAX)/2, (YMIN+YMAX)/2]; + maxnum=[50,0]; //181109changed [first,second] + fileflg="N";//181102from + mkflg=1; + chkL=[]; //181109 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + maxnum=parse(tmp_2); + if(!islist(maxnum), + maxnum=[maxnum,0]; + ); + options=remove(options,[#]); + ); + if(tmp1=="F", //181102from + fileflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); //181102to + if(tmp1=="N", //181103from + tmp=parse(tmp_2); + if(Anyselected(tmp), + mkflg=-1; + ); + options=remove(options,[#]); + ); + if(tmp1=="C", + chkL=parse(tmp_2); + options=remove(options,[#]); + ); + );//181102,03to + tmp1=1; + forall(reL, + if(islist(#), + startP=#; + , + if(tmp1==1, + angle=#; + tmp1=tmp1+1; + , + interval= interval*#; + ); + ); + ); + if((fileflg=="Y")%(fileflg=="M")&(mkflg>-1), //181102from + wflg=1; + varL=flatten(bdylistorg); + varL=select(varL,length(#)>1); + varL=sort(varL); + pL=[]; + forall(1..(length(varL)),nn, + tmp1=varL_nn; + tmp=select(GLIST,substring(#,0,length(tmp1))==tmp1); + str=tmp_1; + varL_nn=str; + tmp1=Bracket(str,"()"); + tmp2=max(apply(tmp1,#_2)); + nL=select(1..(length(tmp1)),tmp1_#_2==tmp2); + forall(nL,nn, + is=tmp1_nn_1; ie=tmp1_(nn+1)_1; + tmp=substring(str,is,ie-1); + tmp=replace(tmp,"'",Dq); + tmp=parse("["+tmp+"]"); + tmp2=flatten(tmp); + tmp2=flatten(tmp2); + tmp2=flatten(tmp2); + forall(tmp2, + if(ispoint(#), + if(!contains(pL,#.name), //190505 + pL=append(pL,#.name); //190505 + ); + ); + ); + ); + ); + forall(chkL, + if(!contains(pL,#),pL=append(pL,#)); + ); + forall(pL, + tmp=#+"="+Textformat(parse(#+".xy"),5); + varL=append(varL,tmp); + ); + tmp="reL="+Textformat(reL,5); + varL=append(varL,tmp); + if(fileflg=="M", + fileflg="Y"; + , + tmp1="hatch"+nm+".txt"; + if(isexists(Dirwork,tmp1), + tmp2=load(tmp1); + tmp2=tokenize(tmp2,"//"); + tmp2=tmp2_(1..(length(tmp2)-1)); + if(tmp2==varL, + wflg=0; + if(isexists(Dirwork,fname), + mkflg=0; + ReadOutData(fname); + tmp=name+"="+Textformat(parse(name),5)+";"; //190415 + parse(tmp); + ); + ); + ); + ); + ); + if(mkflg==1, //181102to + angle=angle*pi/180; + vec=[cos(angle),sin(angle)]; + nvec=[-sin(angle),cos(angle)]; + AnsL=[]; + ctr=0;//181005[2lines] + forall(0..(maxnum_1), kk, + pt=startP+kk*interval*nvec; + sha=Makehatch(iostr,pt,vec,bdylist); + if((sha!=-1)&(length(sha)>0), + AnsL=concat(AnsL,sha); + ctr=ctr+1; //181005 + ); + ); + maxnum_2=maxnum_2+(maxnum_1-ctr); //181005 + forall(1..(maxnum_2),kk, //181005 + pt=startP-kk*interval*nvec; + sha=Makehatch(iostr,pt,vec,bdylist); + if((sha!=-1)&(length(sha)>0), + AnsL=concat(AnsL,sha); + ); + ); + tmp1=apply(AnsL,Textformat(#,5)); + tmp=name+"="+tmp1+";"; //190415 + parse(tmp); + ); + if((Noflg<3)&(mkflg>-1), + if(fileflg!="Y", //181102 + println("generate Hatchdata "+name); + tmp=name+"="+Textformat(AnsL,5)+";"; //190415 + parse(tmp); + if(!islist(iostr),tmp1=[iostr],tmp1=iostr); //no ketjs on + tmp="c"+PaO(); + forall(tmp1, + tmp=tmp+Dq+#+Dq+","; + ); + tmp=substring(tmp,0,length(tmp)-1)+")"; + tmp2=name+"=Hatchdata("+tmp; + forall(bdynameL, + tmp2=tmp2+",list"+PaO()+#+")"; + ); + tmp2=tmp2+opstr+")"; + GLIST=append(GLIST,tmp2); //no ketjs off + , + GLIST=append(GLIST,"ReadOutData("+Dq+fname+Dq+")");//181102 //no ketjs + ); + ); + if((Noflg<2)&(mkflg>-1), + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + if(mkflg>-1, + if((fileflg=="Y")&(wflg==1), //181102from + tmp1="hatch"+nm+".txt"; + SCEOUTPUT = openfile(tmp1); + forall(varL, + println(SCEOUTPUT,#+"//"); + ); + closefile(SCEOUTPUT); + WriteOutData(fname,[name,parse(name)]); + ); //181102to + tmp2=[]; + forall(AnsL,tmp1, + tmp=apply(tmp1,LLcrd(#)); + tmp2=append(tmp2,tmp); + ); + tmp2; + ); +); +////%Hatchdata end//// + +////%Shadein start//// +Shadein(pstrorg):=( //190220 + regional(pstr,ptL,pL,crv,nn, + tmp,tmp1,tmp2,pm1,pm2,p1,p2,flg); + if(islist(pstrorg),pstr=pstrorg_1,pstr=pstrorg); + crv=[]; + Framedata(["nodisp"]); + ptL=Intersectcurvespp(pstr,frwin); + if(length(ptL)>0, + pL=apply(ptL,#_2); + forall(1..(length(pL)),nn, + if(nn<length(pL), + tmp1=pL_nn; + tmp2=pL_(nn+1); + tmp=Pointoncrv((tmp1+tmp2)/2,pstr); + , + tmp1=pL_nn; + tmp2=pL_1; + tmp=parse(pstr); + if(pL_nn==length(tmp), + tmp=tmp_1; + , + tmp=tmp_(length(tmp)); + ); + ); + if(Inwindow(tmp), + tmp=Partcrv("",tmp1,tmp2,pstr,["nodata"]); + , + tmp1=Pointoncrv(tmp1,pstr); + tmp2=Pointoncrv(tmp2,pstr); + pm1=Paramoncrv(tmp1,frwin); + pm2=Paramoncrv(tmp2,frwin); + if(floor(pm1)==floor(pm2), + tmp=Listplot("",[tmp1,tmp2],["nodata"]); + , + tmp=floor(pm1); + p1=Pointoncrv(tmp,"frwin"); + p2=Pointoncrv(mod(tmp,4)+1,"frwin"); + tmp=p1-10*(p2-p1); + Listplot("frwin",[p1,tmp],["nodisp","Msg=n"]); + tmp=Intersectcurvespp("sgfrwin",pstr); + if(mod(length(tmp),2)==0, //190223from + if(pm2<pm1,pm2=pm2+4); + tmp=[tmp1]; + pm1=floor(pm1)+1; + flg=0; + forall(1..3, + if(flg==0, + if(pm1<pm2, + p1=Pointoncrv(mod(pm1-1,4)+1,"frwin"); + tmp=append(tmp,p1); + pm1=pm1+1; + , + flg=1; + ); + ); + ); + if(pm1-1<pm2,tmp=append(tmp,tmp2)); + , + if(pm2>pm1,pm2=pm2-4); + tmp=[tmp1]; + pm1=floor(pm1); + flg=0; + forall(1..3, + if(flg==0, + if(pm1>pm2, + p1=Pointoncrv(mod(pm1-1,4)+1,"frwin"); + tmp=append(tmp,p1); + pm1=pm1-1; + , + flg=1; + ); + ); + ); + if(pm1+1>pm2,tmp=append(tmp,tmp2)); + ); //190223to + ); + ); + if(length(crv)==0, + crv=tmp; + , + crv=Joincrvs("",[crv,tmp],["nodata"]); + ); + ); + , + if(Inwindow(parse(pstr+"_1")),crv=pstr,crv=frwin); + ); + crv; +); +////%Shadein end//// + +////%Shade start//// +Shade(plist):=Shade(plist,[]); +Shade(Arg1,Arg2):=( + if(!isstring(Arg1), + Shade(text(SHADECTR),Arg1,Arg2); //190222 + , + Shade(Arg1,Arg2,[]); + ); +); +Shade(nm,plistorg,options):=( +//help:Shade(["gr1"],[0.5]); +//help:Shade(["gr1"],["Color=red"]); +//help:Shade(["gr1"],["Trim=y(n)"]); //190224 +// help:Shade(["gr1","sg1"],["Color=[1,0,0]"]); +// help:Shade([[A,B,C,A]]); +//help:Shade(["gr2","Invert(sg1)"],["Enc=y",(Startpoint)]); + regional(name,plist,jj,nn,trim,tmp,tmp1,tmp2, + opstr,opcindy,eqL,reL,Str,G2,flg,encflg,startpt,color,ctr); + name="shade"+nm; + plist=plistorg; + if(isstring(plist_1), // 16.01.24 + println("output Shade of "+plist); + , + println("output Shade of lists"); + ); + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + color=tmp_(length(tmp)-2); + opstr=tmp_(length(tmp)-1); + opcindy=tmp_(length(tmp)); + tmp=select(plist,indexof(#,"Invert")>0); //180929from + if(length(tmp)>0,encflg=1,encflg=0); + trim="N"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(tmp_1); + tmp2=Toupper(tmp_2); + if(substring(tmp1,0,1)=="E", + if(substring(tmp2,0,1)=="Y", + encflg=1; + ); + if(substring(tmp2,0,1)=="N", + encflg=0; + ); + ); + if(substring(tmp1,0,1)=="T", + trim=substring(tmp2,0,1); + ); + ); + startpt=[]; + forall(reL, + if(islist(#), + startpt=#; + ); + ); //180929to + if(length(color)==4, //180602from + tmp=Colorcmyk2rgb(color); + ); + flg=0; ctr=1; + if(encflg==1, //180929from + if(length(startpt)==2, + Enclosing(nm,plist,[startpt,"nodisp"]); + , + Enclosing(nm,plist,["nodisp"]); + ); + plist=["en"+nm]; + ); //180929to + if((length(plist)==1)&(trim=="Y"), //190220from,109224 + plist=[Shadein(plist)]; + ); //190220to + forall(1..(length(plist)),jj, //180613from + if(flg==0, + tmp1=plist_jj; + if(isstring(tmp1),tmp=parse(tmp1),tmp=tmp1); + if(!islist(tmp), + flg=1; + , + if(!isstring(tmp1), + tmp2=[]; + forall(tmp1,if(ispoint(#),tmp=#.xy,tmp=#); + tmp2=append(tmp2,tmp); + ); + Listplot("-"+name+text(ctr),tmp2,["nodisp"]); //190520 +// tmp1=Dqq("-"+name+text(ctr)); +// tmp2=Textformat(tmp2,6)+",["+Dqq("nodisp")+"]"; +// tmp=name+text(ctr)+"=Listplot("+tmp1+","+tmp2+");";parse(tmp); + plist_jj=name+text(ctr); + ctr=ctr+1; + ); + ); + ); + );//180613to + if(flg==1, + println(" some data not defined properly"); + , + G2=Joincrvs("1",plist,["nodata"]); + G2=apply(G2,Pcrd(#)); + tmp1="fillpoly("+Textformat(G2,5)+opcindy+");"; + parse(tmp1); + ); + Str="Shade("; //no ketjs on + tmp1="list"+PaO(); + forall(plist, + if(isstring(#), // from 16.01.24 + if(length(#)>1, + tmp1=tmp1+#+","; + , + tmp1=tmp1+Dq+#+Dq+","; + ); + , + tmp1=tmp1+"Listplot("+Textformat(#,5)+"),"; + ); //16.01.24to + ); + Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+")"; //180929 + nn=length(COM2ndlist); //190311from + jj=nn; + forall(plist,tmp1, + tmp=select(1..nn,indexof(COM2ndlist_#,tmp1)>0); + jj=min(append(tmp,jj)); + ); + tmp1=["Texcom("+Dqq("{")+")","Setcolor("+color+")",Str,"Texcom("+Dqq("}")+")"]; + tmp2=COM2ndlist_(1..(jj-1)); + tmp=COM2ndlist_(jj..(length(COM2ndlist))); + if(!islist(tmp),tmp=[tmp]); + COM2ndlist=concat(tmp2,tmp1); + COM2ndlist=concat(COM2ndlist,tmp); //190311to + //no ketjs off + SHADECTR=SHADECTR+1; +); +////%Shade end//// + +/////////// end of new Hatchdata(cindy) /////////// + +////%Rotatepoint 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]; +); +////%Rotatepoint end//// + +////%Translatepoint start//// +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]; +); +////%Translatepoint end//// + +////%Scalepoint start//// +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]; +); +////%Scalepoint end//// + +////%Reflectpoint start//// +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]; +); +////%Reflectpoint end//// + +////%Rotatedata start//// +Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]); +Rotatedata(nm,plist,angle,optionorg):=( +//help:Rotatedata("1",["crAB","pt1"],pi/3,[[1,5],"dr,2"]); +//help:Rotatedata("1",[[A.xy],[B.xy]],pi/3,[[1,5],"dr,2"]); + regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdLL,PdL,options, + opcindy,eqL,msgflg,Nj,Njj,Kj,Mj,X1,Y1,X2,Y2,Ltype,Noflg,name,color); + name="rt"+nm; + options=optionorg; + Pt=[0,0]; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + tmp1=tmp_6; + if(length(tmp1)>0,Pt=Lcrd(tmp1_1)); + msgflg="Y"; //190425from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190425to + 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)==0,Kj=[Kj]); //17.11.24 + 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, + if(msgflg=="Y", + 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)+";"; //190415 + parse(tmp); + tmp1=text(plist); //no ketjs on + tmp1=RSform(tmp1,1);// 180602 + tmp=name+"=Rotatedata("+tmp1+"," + +Textformat(angle,5)+","+RSform(Textformat(Pt,5))+")"; //17.12.23 + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + PdL; +); +////%Rotatedata end//// + +////%Translatedata start//// +Translatedata(nm,plist,mov):=Translatedata(nm,plist,mov,[]); +Translatedata(nm,plist,mov,optionorg):=( +//help:Translatedata("1",["gr1","pt1"],[1,2]); + regional(options,tmp,tmp1,tmp2,pdata,Cx,Cy,PdL,Nj,Njj,Kj,eqL, + opcindy,X2,Y2,Ltype,Noflg,name,color,leveL,msgflg); + name="tr"+nm; + options=optionorg; //190425 + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; //190424 + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + msgflg="Y"; //190425from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190425to + 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, + if(msgflg=="Y", //190425 + 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)+";"; //190415 + parse(tmp); + tmp1=text(plist); //no ketjs on + tmp1=RSform(tmp1,1);// 180602 + tmp=name+"=Translatedata("+tmp1+","+RSform(Textformat(mov,5))+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + PdL; +); +////%Translatedata end//// + +////%Scaledata start//// +Scaledata(nm,plist,ratioV):=( + regional(tmp); + tmp=ratioV; //180603from + if(!islist(tmp),tmp=[tmp,tmp]); + tmp=Lcrd(tmp);//180603to + Scaledata(nm,plist,tmp_1,tmp_2,[]); +); +Scaledata(nm,plist,Arg1,Arg2):=( +//help:Scaledata("1",["crAB","pt1"],3,2,[[0,0]]); +//help:Scaledata("1",["crAB","pt1"],2,[[0,0]]); + regional(tmp,options); + if(islist(Arg2), + tmp=Arg1;//180603[2lines] + if(!islist(tmp),tmp=[tmp,tmp]); + tmp=Lcrd(tmp); + options=Arg2; + Scaledata(nm,plist,tmp_1,tmp_2,options); + , + Scaledata(nm,plist,Arg1,Arg2,[]); + ); +); +Scaledata(nm,plist,rx,ry,optionorg):=( + regional(tmp,tmp1,tmp2,pdata,Theta,Pt,Cx,Cy,PdL,options,eqL, + opcindy,Nj,Njj,Kj,X2,Y2,Ltype,Noflg,name,color,msgflg); + name="sc"+nm; + options=optionorg; + Pt=[0,0]; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + tmp1=tmp_6; + if(length(tmp1)>0, + Pt=Lcrd(tmp1_1); + ); + msgflg="Y"; //190425from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190425to + 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, + if(msgflg=="Y", + 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)+";"; //190415 + parse(tmp); + tmp1=text(plist); //no ketjs on + tmp1=RSform(tmp1,1); // 180602 + tmp=name+"=Scaledata("+tmp1+"," + +Textformat(rx,5)+","+Textformat(ry,5)+","+RSform(Textformat(Pt,5))+")"; + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + PdL; +); +////%Scaledata end//// + +////%Reflectdata start//// +Reflectdata(nm,plist,symL):=Reflectdata(nm,plist,symL,[]); +Reflectdata(nm,plist,symL,optionorg):=( +//help:Reflectdata("1",["crAB"],[C]); + regional(tmp,tmp1,tmp2,pdata,Us,Vs,Pt1,Pt2,Cx,Cy,PdL,options,eqL, + opcindy,Nj,Njj,Kj,X1,Y1,X2,Y2,Ltype,Noflg,name,color); + name="re"+nm; + options=optionorg; + Pt=[0,0]; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + eqL=tmp_5; + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + msgflg="Y"; //190425from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="M", + msgflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190425to + 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, + if(msgflg=="Y", + 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)+";"; //190415 + parse(tmp); + tmp1=text(plist); //no ketjs on + tmp1=RSform(tmp1,1);// 180602 + tmp=name+"=Reflectdata("+tmp1+","+RSform(Textformat(symL,5))+")";//17.12.23 + GLIST=append(GLIST,tmp); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + PdL; +); +////%Reflectdata end//// + +// 180800 revised +////%Mksegments start//// +Mksegments():=Mksegments([]); +Mksegments(options):=( +//help:Mksegments(); + regional(ctr,segstr,p,q,r,tmp1,tmp2,tmp3); + ctr=1;//180809 + 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("all"+text(ctr),[parse(p),parse(q)]);//180800 + ctr=ctr+1; + ); +); +////%Mksegments end//// + +// 180809 revised +////%Mkcircles start//// +Mkcircles():=Mkcircles([]); +Mkcircles(options):=( +//help:Mkcircles(): + regional(str,ctr,tmp,tmp1,tmp2); + ctr=1; + forall(allcircles(),cir, + str=text(inspect(cir,"definition")); + tmp1=indexof(str,"("); + tmp2=indexof(str,")"); + str=substring(str,tmp1,tmp2-1); + tmp=Strsplit(str,";"); + tmp1=parse(tmp_1); tmp2=parse(tmp_2); + if(ispoint(tmp2), + Circledata("all"+text(ctr),[tmp1,tmp2],options); + , + tmp=cir.radius; + Circledata("all"+text(ctr),[tmp1,tmp1+[tmp2,0]],options); + ); + ctr=ctr+1; + ); +); +////%Mkcircles end//// + +////%MakeRarg start//// +MakeRarg(arglist):=( + regional(str,tmpstr); + str=""; + forall(arglist, + if(isstring(#), + tmpstr=Dq+RSslash(#)+Dq; + , + tmpstr=Textformat(#,6); + ); + str=str+tmpstr+","; + ); + str=substring(str,0,length(str)-1); + str; +); +////%MakeRarg end//// + +////%Htickmark start//// +Htickmark(arglist):=Htickmark(arglist,[]); //190203 +Htickmark(arglist,options):=( //190203 +//help:Htickmark([1,"1",2,"sw","2"]); + regional(nn,tmp,tmp1,tmp2,mark); + mark=MARKLEN/SCALEY; + tmp1=select(1..(length(arglist)),!isstring(arglist_#)); //180710from + forall(tmp1,nn, + Listplot("ht"+text(nn), + [[arglist_nn,mark],[arglist_nn,-mark]],["Msg=n"]);//181017 + if(nn+2<=length(arglist), + tmp=arglist_(nn+2); + if(!isstring(tmp), + Expr([[arglist_nn,0],"s1",arglist_(nn+1)],options); //190203 + , + Expr([[arglist_nn,0],arglist_(nn+1),arglist_(nn+2)],options); //190203 + ); + , + Expr([[arglist_nn,0],"s1",arglist_(nn+1)],options); //190203 + ); + );//180710to +// tmp=""; +// tmp=MakeRarg(arglist); +// Com2nd("Htickmark("+tmp+")"); +); +////%Htickmark end//// + +////%Vtickmark start//// +Vtickmark(arglist):=Vtickmark(arglist,[]); //190203 +Vtickmark(arglist,options):=( //190203 +//help:Vtickmark([1,"1",2,"sw","2"]); + regional(nn,tmp,tmp1,tmp2,mark); + mark=MARKLEN/SCALEX; + tmp1=select(1..(length(arglist)),!isstring(arglist_#)); //180710from + forall(tmp1,nn, + Listplot("vt"+text(nn), + [[mark,arglist_nn],[-mark,arglist_nn]],["Msg=n"]); //181021 + if(nn+2<=length(arglist), + tmp=arglist_(nn+2); + if(!isstring(tmp), + Expr([[0,arglist_nn],"w1",arglist_(nn+1)],options); //190203 + , + Expr([[0,arglist_nn],arglist_(nn+1),arglist_(nn+2)],options); //190203 + ); + , + Expr([[0,arglist_nn],"w1",arglist_(nn+1)],options); //190203 + ); + );//180710to// tmp=MakeRarg(arglist); +// Com2nd("Vtickmark("+tmp+")"); +); +////%Vtickmark end//// + +////%Vtick start//// +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); +); +////%Vtick end//// + +////%Htick start//// +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); +); +////%Htick end//// + +////%Setax start//// +Setax(arglist):=( +//help:Setax(["l","x","e","y","n","O","sw"]); +//help:Setax([7,"nw"]); +//help:Setax([8,linestyle,colorax,colorlabel]); + regional(st,nn,tmp); //181215from + st=1; nn=1; + if(isreal(arglist_1), + st=2; + nn=arglist_1; + ); + forall(st..(length(arglist)), + tmp=arglist_#; + if(length(tmp)>0,AXSTYLE_nn=tmp); + nn=nn+1; + ); //181215from +// tmp=MakeRarg(arglist); +// Com1st("Setax("+tmp+")"); +); +////%Setax end//// + +////%Drwxy start//// +Drwxy():=Drwxy(0,[]); //190103from +Drwxy(Arg):=( + if(islist(Arg),Drwxy(0,Arg); Drwxy(Arg,[])); +); +Drwxy(add):=Drwxy(add,[]); +Drwxy(add,optionsorg):=( //190103to +//help:Drwxy(); +//help:Drwxy(1[the last axis will be drawn],oprions); +//help:Drwxy(options); +//help:Drwxy(options=["Xrng=","Yrng=","Ax=l,x,e,..."]); + regional(options,color,eqL,strL,org,xrng,yrng,ax,st,nn,size, + linesty,colorax,colorla,tmp,tmp1,tmp2); + options=optionsorg; + tmp=Divoptions(options); + color=tmp_(length(tmp)-2); + eqL=tmp_5; + org=GENTEN; + //tmp1=max([org_1+XMIN,XMIN]); + //tmp2=min([org_1+XMAX,XMAX]); + xrng=[XMIN,XMAX]; //190103 + //tmp1=max([org_2+YMIN,YMIN]); + //tmp2=min([org_2+YMAX,YMAX]); + yrng=[YMIN,YMAX]; //190103 + ax=AXSTYLE; + linesty=ax_8; + if(length(ax_9)>0, //190427 + if(isstring(ax_9),colorax=ax_9,colorax=text(ax_9)); + , + colorax=KCOLOR; //190427 + ); + colorax="Color="+colorax; //190427[if removed] + if(isstring(ax_10),colorla=ax_10,colorla=text(ax_10)); + if(length(colorla)>0, //181217from + colorla="Color="+colorla; + , + if(length(colorax)>0, + colorla=colorax; + ); + ); //181217to + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="O", //190103from + org=parse(tmp_2); + options=remove(options,[#]); + ); //190103to + if(tmp1=="X", + xrng=parse(tmp_2); + options=remove(options,[#]); + ); + if(tmp1=="Y", + yrng=parse(tmp_2); + options=remove(options,[#]); + ); + if(tmp1=="A", + tmp2=tokenize(tmp_2,","); + st=1; nn=1; + if(isreal(tmp2_1), + st=2; + nn=tmp2_1; + ); + forall(st..(length(tmp2)), + tmp=tmp2_#; + if(length(tmp)>0,ax_nn=tmp); + nn=nn+1; + ); + options=remove(options,[#]); + ); + ); + options=append(options,linesty); //181216 + if(substring(ax_1,0,1)=="a", + strL=select(options,isstring(#)); //181216 + tmp=select(strL,contains(["dr","da","do","id"],substring(#,0,2))); + if(length(tmp)==0,options=append(options,YasenStyle)); + tmp=substring(ax_1,1,length(ax_1)); //181216[2lines] + if(length(tmp)>0,size=parse(tmp),size=YaSize); + tmp1=concat(options,[size,YaAngle,YaPosition,YaCut,colorax]);//181216 + tmp=[[xrng_1,org_2],[xrng_2,org_2]]; + Lightarrowdata("axx"+text(AXCOUNT),tmp,tmp1); + tmp=[[org_1,yrng_1],[org_1,yrng_2]]; + Lightarrowdata("axy"+text(AXCOUNT),tmp,tmp1); //190419 + , + tmp=[[xrng_1,org_2],[xrng_2,org_2]]; + tmp1=concat(options,[colorax,"Msg=n"]);//181216,190325 + Listplot("-axx"+text(AXCOUNT),tmp,tmp1); + tmp=[[org_1,yrng_1],[org_1,yrng_2]]; + Listplot("-axy"+text(AXCOUNT),tmp,tmp1); + ); + AXCOUNT=AXCOUNT+1; + Expr([[xrng_2,org_2],ax_3,ax_2],[colorla]);//181216[3lines] + Expr([[org_1,yrng_2],ax_5,ax_4],[colorla]); + Letter([org,ax_7,ax_6],[colorla]); + if(add==0, //190103 + Addax(0); + ); +); +////%Drwxy end//// + +////%Drwpt start//// +Drwpt(pstr):=Drwpt(pstr,1); //181231 +Drwpt(ptlist,nn):=( // 16.03.05 from +//help:Drwpt(A); +//help:Drwpt([1,2],0); + if(!isreal(DrwPtCtr), //181231from + DrwPtCtr=1; + ); + Pointdata(text(DrwPtCtr),ptlist,["Inside="+text(nn)]); + DrwPtCtr=DrwPtCtr+1; //181231to +); +////%Drwpt end//// +////%Drawpoint start//// +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 until + forall(ptlist, + tmp=Textformat(#,5)+","+text(nn); + Com2nd("Drwpt("+tmp+")"); // 16.04.09 + ); + Setpen(thick); // 16.04.09 +);// 16.03.05 until +////%Drawpoint end//// + +////%Addax start//// +Addax(param):=( +//help:Addax(0); + ADDAXES=text(param); +); +////%Addax end//// + +////%Expr start//// +Expr(Pt,Dr,St):=Expr([Pt,Dr,St]); +Expr(list):=Expr(list,[]); +Expr(Pt,Dr,St,options):=Expr([Pt,Dr,St],options); //190409 +Expr(listorg,options):=( //16.10.09 +//help:Expr([A,"e","f(x)=x^2"]); +//help:Expr([A,"e","f(x)=x^2"],["size->24"]); + 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); +); +////%Expr end//// + +////%Letter start//// +Letter(Pt,Dr,St):=Letter([Pt,Dr,St]); +Letter(list):=Letter(list,[]); +Letter(Pt,Dr,St,options):=Letter([Pt,Dr,St],options);//181218 +Letter(list,options):=( +//help:Letter([C,"c","Graph of $f(x)$"]); +//help:Letter([C,"c","xy"],["size->30"]); + regional(Nj,Pos,Dir,Str,Off,Dmv,Xmv,Ymv,Noflg,opcindy, + opL,aln,sz,clr,bld,ita,tmp,tmp1,tmp2,color,eqL); + tmp=Divoptions(options); + eqL=tmp_5; //190209 + Noflg=tmp_2; + color=tmp_(length(tmp)-2); + opL=select(options,indexof(#,"->")>0); //16.10.09from + tmp=select(opL,indexof(#,"color")); + sz=12; + 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.09to + forall(eqL, //190209from + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="S", + sz=round(parse(tmp_2)*12); + ); + ); //190209to + Off=-4; + Dmv=8; + Nj=1; + while(Nj+2<=length(list), + 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.19until + 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)"); + Str=RSslash(Str); // 17.09.24 + Str=replace(Str,"`","'");//180303 + tmp=Dq+","+Dq+Str+Dq+")"; + if(Noflg==0, //no ketjs on + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10 + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + ); //no ketjs off + 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.30until + ); + Str=list_(Nj+2); //17.10.17 + drawtext(Pcrd(Pos),Str,offset->[Off+Xmv,Off+Ymv], + size->sz,color->color,align->aln,bold->bld,italics->ita);//16.10.09 + ); + Nj=Nj+3; + ); +); +////%Letter end//// + +////%Letterrot start//// +Letterrot(pt,dir,str):=Letterrot(pt,dir,0,0,str,[]); +Letterrot(pt,dir,Arg1,Arg2):=( + if(islist(Arg2), + Letterrot(pt,dir,"t0n0",Arg1,Arg2); + , + Letterrot(pt,dir,Arg1,Arg2,[]); + ); +); +Letterrot(pt,dir,movstr,str,options):=( +// help:Letterrot(C,B-A,"AB"); +// help:Letterrot(C,B-A,0,5,"AB"); +//help:Letterrot(C,B-A,AB",["Size=20"]); +//help:Letterrot(C,B-A,"t0n5","AB"); + regional(tmov,nmov,tmp,tmp1,tmp2,color); + 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,options); +); +Letterrot(pt,dir,tmov,nmov,str,options):=( + regional(tmp,color); + tmp=Divoptions(options); + color=tmp_(length(tmp)-2); + Letter([pt,"c",str],append(options,"notex")); + tmp=replace(str,"\","\\"); //17.10.18 + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+","+Dqq(tmp)+")");//180805 + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); +); +////%Letterrot end//// + +////%Exprrot start//// +Exprrot(pt,dir,str):=Exprrot(pt,dir,0,0,str,[]); +Expr(pt,dir,str,options):=Expr([pt,dir,str],options);//181218 +Exprrot(pt,dir,Arg1,Arg2):=( + if(islist(Arg2), + Exprrot(pt,dir,"t0n0",Arg1,Arg2); + , + Exprrot(pt,dir,Arg1,Arg2,[]); + ); +); +Exprrot(pt,dir,movstr,str,options):=( +// help:Exprrot(C,B-A,"d"); +// help:Exprrot(C,B-A,0,5,"d"); +//help:Exprrot(C,B-A,"d",["Color=red"]); +//help:Exprrot(C,B-A,"t0n5","d"); + regional(tmov,nmov,tmp,tmp1,tmp2,color); + 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,options); +); +Exprrot(pt,dir,tmov,nmov,str,options):=( + regional(tmp,color); + tmp=Divoptions(options); + color=tmp_(length(tmp)-2); + Expr([pt,"c",str],append(options,"notex")); + tmp=replace(str,"\","\\"); //17.10.18 + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+","+Dqq(tmp)+")");//180802 + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); +); +////%Exprrot end//// + +////%Slider start//// +Slider(ptstr,p1,p2):=Slider(ptstr,p1,p2,[]); +Slider(ptstr,p1,p2,options):=(//190120 +//help:Slider("A-C-B",[-3,0],[3,0]); +//help:Slider("C",[-3,0],[3,0]); +//help:Slider(options=["Color=0.6*[0,0,1]","Size=2"]); + regional(pA,pB,pC,seg,sname,Alpha,color,size,tmp,tmp1); + color="Color=0.6*[0,0,1]"; //190120from + size="size->2"; + forall(options, + tmp=Toupper(substring(#,0,1)); + if(tmp=="C", + color=#; + ); + if(tmp=="S", + tmp=Strsplit(#,"="); + size="size->"+tmp_2; + ); + ); //190120to + tmp=Indexall(ptstr,"-"); + if(length(tmp)>0, //190209from + 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)],["Msg=n","notex",color,size]); + Putonseg(pC,parse("sg"+pA+pB)); + PTEXCEPTION=concat(TEXCEPTION,[pA,pC,pB]); + , + pA=""; pB=""; pC=ptstr; + tmp=pC+"l"+pC+pC+"r"; + Listplot(tmp,[p1,p2],["Msg=n","notex",color,size]); + Putonseg(pC,parse("sg"+tmp)); + PTEXCEPTION=concat(PTEXCEPTION,[pC]); //190329 + ); //190209to +); +////%Slider end//// + +////%Putpoint start//// +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); //no ketjs on + if(!contains(ptstr,name), + createpoint(name,Pcrd([Ptinit_1,Ptinit_2])); + , //no ketjs off + ptstr=name+".xy="+Textformat(Pcrd(Pt),5)+";"; + parse(ptstr); + ); //no ketjs +); +////%Putpoint end//// + +////%Putpoint start//// +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); + ); +); +////%Putpoint end//// + +////%Bezierpt start//// +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); +); +////%Bezierpt end//// + +////%Bezier start//// +Bezier(ptctrlist):=Beziercurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,[]); +Bezier(Arg1,Arg2):=( //190202from + regional(nm,ptctrlist,options); + if(islist(Arg1), + ptctrlist=Arg1; options=Arg2; + Beziercurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options); + , + nm=Arg1; ptctrlist=Arg2; + Beziercurve(nm,ptctrlist_1,ptctrlist_2,[]); + ); +); //190202to +Bezier(nm,ptlist,ctrlist):=Beziercurve(nm,ptlist,ctrlist,[]); +Bezier(nm,ptlist,ctrlist,options):=Beziercurve(nm,ptlist,ctrlist,options); +////%Bezier end//// + +////%Beziercurve start//// +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,color); + name="bz"+nm; + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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(1..(length(ctrlistorg)),ii, //190202 + tmp1=apply(ctrlistorg_ii,Lcrd(#)); //190202 + if(Measuredepth(tmp1)==0,tmp=[tmp1],tmp=tmp1); + 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)+";"; //190415 + parse(tmp); + tmp1=Textformat(ptlist,5); //no ketjs on + tmp1=RSform(tmp1,2); //17.12.23 + tmp2=Textformat(ctrlist,5); + tmp2=RSform(tmp2,3); //17.12.23 + GLIST=append(GLIST,name+"=Bezier("+tmp1+","+tmp2+opstr+")"); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + BezierCtrL=ctrlist; //181001 + list; +); +////%Beziercurve end//// + +////%Putbezierdata start//// +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; //no ketjs + Deg=3; + tmp1=tmp_5; + forall(tmp1, + if(substring(#,0,1)=="D", //no ketjs on + tmp=indexof(#,"="); + Deg=parse(substring(#,tmp,length(#))); + ); + if(substring(#,0,1)=="S", + tmp=indexof(#,"="); + psize=parse(substring(#,tmp,length(#))); + ); //no ketjs off + ); + pts=[]; + ctrs=[]; + forall(1..length(ptL), + p2=ptL_#; // 16.08.16 + if(ispoint(p2), + tmp1=p2.name; //190505 + , + 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]; +); +////%Putbezierdata end//// + +////%Bezierstart start//// +Bezierstart(n):=( // 2016.02.26 + BezierNumber=n; +); +////%Bezierstart end//// + +////%Mkbezierptcrv start//// +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), //no ketjs on + ptlist=Readcsvsla(ptdata,options); + , //no ketjs off + ptlist=ptdata; + ); //no ketjs + 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; +); +////%Mkbezierptcrv end//// + +////%Mkbeziercrv start//// +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 + ); +); +////%Mkbeziercrv end//// + +////%Ospline start//// +Ospline(nm,ptlist):=Ospline(nm,ptlist,[]); +Ospline(nm,ptlist,options):=( +//help:Ospline("1",ptlist,[options]); +//help:Ospline(options=["Num=10"]); + 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); +); +////%Ospline end//// + +////%CRspline start//// +CRspline(nm,ptL):=CRspline(nm,ptL,[]); +CRspline(nm,ptL,options):=( //180822 + // Catmull-Rom spline +//help:CRspline("1",[A,B,C,A]); +//help:CRspline(options=["Num=10"]); + regional(name,Eps,ptlist,cc,nv,pm,p0,p1,p2,p3, + ctrlist,cflg,qq,rr,tmp); + name="CR"+nm; + ptlist=apply(ptL,Lcrd(#)); + Eps=10^(-5); + cflg=0; + if(dist(ptlist_1,ptlist_(length(ptlist)))<Eps, + cflg=1; + ); + cc=1/6; + ctrlist=[]; + forall(1..(length(ptlist)-1), + p1=ptlist_#; + p2=ptlist_(#+1); + tmp=p2-p1; + nv=[-tmp_2,tmp_1]; + pm=(p1+p2)/2; + if(#==1, + p3=ptlist_(#+2); + if(cflg==0, + p0=Reflectpoint(p3,[pm,pm+nv]); + , + p0=ptlist_(length(ptlist)-1); + ); + , + p0=ptlist_(#-1); + if(#==length(ptlist)-1, + if(cflg==0, + p3=Reflectpoint(p0,[pm,pm+nv]); + , + p3=ptlist_2; + ); + , + p3=ptlist_(#+2); + ); + ); + qq=p1+cc*(p2-p0); + rr=p2+cc*(p1-p3); + ctrlist=append(ctrlist,[qq,rr]); + ); + Bezier(name,ptlist,ctrlist,options); +); +////%CRspline end//// + +////%Beziersmooth start//// +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]; +); +////%Beziersmooth end//// + +////%Beziersym start//// +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;"; //190415 + 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//190415 + 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]; +); +////%Beziersym end//// + +////%Listbspline2bz start//// +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]; +); +////%Listbspline2bz end//// + +////%Bspline start//// +Bspline(nm,ctrL):=Bspline(nm,ctrL,[]); +Bspline(nm,ctrL,options):=( +//help:Bspline("",[A,B,C]); +//help:Bspline(options=["Num=10"]); + regional(list,tmp); + list=Listbspline2bz(ctrL); + tmp=BezierCurve("b"+nm,list_1,list_2,options); + tmp; +); +////%Bspline end//// + +////%Meetcurve start//// +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]; +); +////%Meetcurve end//// + +////%Putonline start//// +Putonline(name,linestr):=Putonline(name,linestr,[]); //190216from +Putonline(name,Arg1,Arg2):=( + regional(line,options); + if(isstring(Arg1), + line=parse(Arg1); options=Arg2; + Putonseg(name,LLcrd(line_1),LLcrd(line_2),options); + , + Putonline(name,LLcrd(Arg1),LLcrd(Arg2),[]); + ); +); +Putonline(name,p1,p2,options):=( +//help:Putonline("C","lnAB"); +//help:Putonline("C",pA,pB); + regional(line); + line=Lineplot("",[p1,p2],["nodata"]); +// tmp1=name+"1"; +// tmp2=name+"2"; +// Putpoint(tmp1,line_1); // 190216 +// Putpoint(tmp22,line_2); // 190216 + Putonseg(name,line_1,line_2,options); +); //190216to +////%Putonline end//// + +////%Putonseg start//// +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(Eps,par,p1,p2,dx,dy,p,tmp,tmp1,tmp2); + Eps=10^(-5); + par=0.5; + tmp=Divoptions(options); + if(length(tmp_6)>0, + par=tmp_6_1; + ); + p1=Lcrd(p1org);//16.10.11from + p2=Lcrd(p2org); + Putpoint(name,(p1+p2)/2,parse(name+".xy")); //190216 //no ketjs + p1=Pcrd(p1); p2=Pcrd(p2); //190120 + dx=p2_1-p1_1; + dy=p2_2-p1_2; + p=parse(name+".xy"); + if(abs(dx)>abs(dy), //190120from + if(p1_1>p2_1,tmp=p1;p1=p2;p2=tmp); + if(p_1<p1_1,parse(name+".xy="+Textformat(p1,5));p=p1); + if(p_1>p2_1,parse(name+".xy="+Textformat(p2,5));p=p2); + tmp=(p2_2-p1_2)/(p2_1-p1_1)*(p_1-p1_1)+p1_2; + parse(name+".y="+tmp+";"); //190415 + , + if(p1_2>p2_2,tmp=p1;p1=p2;p2=tmp); + if(p_2<p1_2,parse(name+".xy="+Textformat(p1,5));p=p1); + if(p_2>p2_2,parse(name+".xy="+Textformat(p2,5));p=p2); + tmp=(p2_1-p1_1)/(p2_2-p1_2)*(p_2-p1_2)+p1_1; + parse(name+".x="+tmp+";"); //190415 + ); //190120to +); +////%Putonseg end//// + +////%Putoncurve start//// +Putoncurve(pn,crv):=putoncurve(pn,crv,[]); +Putoncurve(pn,crvorg,options):=( +//help:Putoncurve("A","gr1"); + regional(eps,crv,close,nn,p1,p2,tmp,tmp1); + eps=10^(-3); + crv=crvorg; + if(isstring(crv),crv=parse(crv)); + close=false; + if(|crv_1-crv_(length(crv))|<eps, + close=true; + ); + tmp=parse(pn); //no ketjs on + if(!ispoint(tmp), + Putpoint(pn,[0,0],parse(pn+".xy")); + ); //no ketjs off + tmp=Paramoncurve(parse(pn),crvorg); + nn=floor(tmp); + p1=crv_nn; + if(nn<length(crv), + p2=crv_(nn+1); + Putonseg(pn,p1,p2); + , + if(close, + p2=crv_1; + Putonseg(pn,p1,p2); + , + parse(pn+".xy="+Textformat(Ptend(crv),5)+";"); //190415 + ); + ); +); +////%Putoncurve end//// + +////%Crosspoint start//// +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); +); +////%Crosspoint end//// + +////%Periodfun start//// +Periodfun(defL,rng):=Periodfun(defL,rng,[]); +Periodfun(Arg1,Arg2,Arg3):=( //190419from + regional(nm,defL,,rng,options); + if(isstring(Arg1), + nm=Arg1; defL=Arg2; rng=Arg3; + Periodfun(nm,defL,rng,[]); + , + defL=Arg1; rng=Arg2; options=Arg3; + Periodfun("",defL,rng,options); //190421 + ); +); +Periodfun(nm,defL,rng,optionorg):=( //190420[new] +//help:Periodfun("1",defL,"x=range",options); +//help:Periodfun(defL=[function string,range(with equal option),devision number,...]); +//help:Periodfun(equal option "l","r","b","n"); +//help:Periodfun(options=["Connect)=da,Color=red"]);//180725 + regional(name,range,nr,nn,eqL,options,connect,Eps,fun,scaley,interval, + mxfun,var,left,right,period,cL,crL,sL,sdL,flg,equal,tmp,tmp1,tmp2); + Eps=10^(-2); + name="pe"+nm; + var="x"; + nr=3*floor(length(defL)/3); + left=defL_2_1; + if(isstring(left),left=parse(left)); //190505 + right=defL_(nr-1)_2; + if(isstring(right),right=parse(right)); ///190505 + period=right-left; + if(isstring(rng), + tmp=Strsplit(rng,"="); + var=tmp_1; + if(length(tmp)>1, + range=parse(tmp_2); + , + range=[XMIN,XMAX]; + ); + , + range=[left-rng*period,right+rng*period]; //190421 + ); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + connect="da"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,3)); + tmp2=tmp_2; + if(tmp1=="CON", + tmp1=Toupper(substring(tmp2,0,1)); + if(tmp1=="N", + connect=""; + , + if(tmp1!="Y", + connect=tmp2; + ); + ); + options=remove(options,[#]); + ); + ); + scaley=SCALEY; + Setscaling(1); + mxfun=""; + cL=[]; + forall(1..(nr/3),nn, + nst=text(nn); + fun=defL_(3*nn-2); + interval=defL_(3*nn-1); //190505from + equal="l"; + if(length(interval)>2, + equal=substring(interval_3,0,1); + interval=interval_(1..2); + ); + tmp=apply(interval,if(isstring(#),parse(#),#)); + tmp1=var+"="+Textformat(tmp,5); + tmp2="Num="+text(defL_(3*nn)); + tmp=Plotdata("",fun,tmp1,[tmp2,"nodata","Msg=n"]); + cL=append(cL,tmp); + if(equal=="l",equal=["<=","<"]); + if(equal=="r",equal=["<","<="]); + if(equal=="b",equal=["<=","<="]); + if(equal=="n",equal=["<","<"]); + mxfun=mxfun+"elseif ("+interval_1+ + equal_1+var+" and "+var+equal_2+interval_2+") then "+fun+" "; + ); + crL=cL; + flg=0; + forall(1..10,nn, + if(flg==0, + if(crL_1_1_1<=range_1, + flg=1; + , + tmp=Translatedata("",cL,[-nn*period,0],["nodata","Msg=n"]); + crL=concat(tmp,crL); + ); + ); + ); + flg=0; + forall(1..10,nn, + if(flg==0, + tmp1=crL_(length(crL)); + tmp2=tmp1_(length(tmp1)); + if(range_2<=tmp2_1, + flg=1; + , + tmp=Translatedata("",cL,[nn*period,0],["nodata","Msg=n"]); + crL=concat(crL,tmp); + ); + ); + ); + Setscaling(scaley); + sL=[]; + sdL=[]; + forall(1..(length(crL)),nn, + tmp=concat(options,["Msg=n"]); + Listplot("-"+name+text(nn),crL_nn,tmp); + sL=append(sL,name+text(nn)); + if(nn<length(crL), + tmp1=crL_nn_(length(crL_nn)); + tmp2=crL_(nn+1)_1; + if(Norm(tmp2-tmp1)>Eps, + tmp=concat(options,[connect,"Msg=n"]); + Listplot("-"+name+"dc"+text(nn),[tmp1,tmp2],tmp); + sdL=append(sdL,name+"dc"+text(nn)); + ); + ); + ); + tmp=name+"="+Textformat(sL,5)+";"; + parse(tmp); + tmp=name+"dc="+Textformat(sdL,5)+";"; + parse(tmp); + println(" generate "+name+","+name+"dc"); + mxfun=substring(mxfun,4,length(mxfun)-1); + println(" return [mxfun,period]"); + [mxfun,period]; +); +////%Periodfun end//// + +////%Mkcstable start//// +Mkcstable(nterm,num):=( //190523 +//help:Mkcstable(number of terms, division number) + regional(cosL,sinL,dL,jj,x,tmp); + cosL=[]; + sinL=[]; + forall(0..num,jj, + x=-pi+2*pi/num*jj; + dL=apply(1..nterm,cos(#*x)); + cosL=append(cosL,dL); + dL=apply(1..nterm,sin(#*x)); + sinL=append(sinL,dL); + ); + tmp="Costable="+Textformat(cosL,6); + parse(tmp); + tmp="Sintable="+Textformat(sinL,6); + parse(tmp); +); +////%Mkcstable end//// + +////%Fourierseries start//// +Fourierseries(nm,coeff,per,nterm):= + Fourierseries(nm,coeff,per,nterm,[]); // 16.11.24 +Fourierseries(nm,coeff,per,nterm,Arg1):=( //190420from + if(isstring(Arg1), + Fourierseries(nm,coeff,per,nterm,Arg1,[]); + , + Fourierseries(nm,coeff,per,nterm,"x=[XMIN,XMAX]",Arg1); + ); +); +Fourierseries(nm,coefforg,per,nterm,range,optionorg):=( +//help:Fourierseries("1",[c0,cn,sn],period,numterm,"x=range",options); +//help:Fourierseries("1","[c0,cn,sn]",period,numterm,"x=range",options); +//help:Fourierseries(options2=["Table=n/y"]); + regional(options,eqL,num,coeff,c0,cn,sn,fs,tbflg,jj,dL, + tmp,tmp1,tmp2); + options=optionorg; //190523from + tmp=Divoptions(options); + eqL=tmp_5; + tbflg="N"; + num=100; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="T", + tbflg=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + if(tmp1=="N", + num=parse(tmp_2); + options=remove(options,[#]); + ); + ); //190523to + coeff=coefforg; + if(isstring(coeff), + tmp=substring(coeff,1,length(coeff)-1); + coeff=tokenize(tmp,","); + ); + coeff=apply(coeff, + if(isstring(#),replace(#,"%pi","pi"),format(#,5)) + ); + c0=coeff_1; + cn=coeff_2; + sn=coeff_3; + fs=c0; + if(tbflg=="N", //190523 + 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,range,append(options,"Num="+Num)); + , + c0=parse(c0); //190523from + cn=apply(1..nterm,parse(Assign(cn,["n",#]))); + sn=apply(1..nterm,parse(Assign(sn,["n",#]))); + dL=[]; //1900523from + forall(0..num,jj, + x=-per/2+per/num*jj; + fs=c0; + forall(1..nterm, + fs=fs+cn_#*Costable_(jj+1)_#+sn_#*Sintable_(jj+1)_#; + ); + dL=append(dL,[x,fs]); + ); + Listplot("-four"+nm,dL,options); + ); //190523to +); +////%Fourierseries end//// + +////%Tabledata start//// //190428from +Tabledata(xLst,yLst,rmvL):=Tabledata("",xLst,yLst,rmvL); +Tabledata(Arg1,Arg2,Arg3,Arg4):=( + if(isstring(Arg1), + Tabledata(Arg1,Arg2,Arg3,Arg4,[]); + , + Tabledata("",Arg1,Arg2,Arg3,Arg4); + ); +); //190428to +Tabledata(nm,xL,yL,rmvL,optionorg):=( +//help:Tabledata(xL,yL,rmvL,["Geo=n"]); +//help:Tabledata(options=[2(tick,0 for no tick),"Setwin=y","Move=[0,0]"]); //190428 + regional(options,geo,tmp,tmp1,tmp2); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + tmp=select(tmp_5,indexof(Toupper(#),"GEO")>0); + if(length(tmp)>0, + options=remove(options,tmp); + Tabledatageo(nm,xL,yL,rmvL,options); + , + Tabledatalight(nm,xL,yL,rmvL,options); + ); +); +////% Tabledata end//// + +////%Tabledatalight start//// +Tabledatalight(xLst,yLst,rmvL):=Tabledatalight("",xLst,yLst,rmvL); //190428from +Tabledatalight(Arg1,Arg2,Arg3,Arg4):=( + if(isstring(Arg1), + Tabledatalight(Arg1,Arg2,Arg3,Arg4,[]); + , + Tabledatalight("",Arg1,Arg2,Arg3,Arg4); + ); +); //190428to +Tabledatalight(nm,xLst,yLst,rmvL,optionorg):=( +//help:Tabledatalight(xLst,yLst,rmvL,[0(notick)]); +//help:Tabledatalight(xLst,yLst,rmvL,[2,"Setwindow=y","Move=[0,0]"]); //190428 + regional(options,rng,name,upleft,ul,flg,tick,eqL,reL,n,m,xsize,ysize, + rlist,clist,Tb,jj,kk,tmp,tmp1,tmp2,tmp3,Eps); + // TableMove is global for Table + TABLECOUNT=TABLECOUNT+1; //190428from + TableMove=GENTEN; //190428to + name="tb"+text(TABLECOUNT); //190428to + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; //16.12.16from + reL=tmp_6; + rng="Y"; + forall(eqL, + tmp=Strsplit(#,"="); //190428from + tmp1=Toupper(substring(tmp_1,0,2)); + if(tmp1=="RN", + rng=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + if(tmp1=="MO", + TableMove=parse(tmp_2); + rng="N"; //190429 + options=remove(options,[#]); + ); + if(tmp1=="SE", + rng=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); + ); //190428to + tick=1; + flg=0; //190424 + 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("generate Tabledatalight "+name); //190428 + 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]; //190427 + tmp=name+"="+Tb+";"; //190415 + parse(tmp); + forall(0..m,jj, //190507from + tmp3="c"+text(jj); + if(length(rmvL)>=0, + tmp1="r"+text(0); + tmp2="r"+text(n); + Tlistplot("-"+name+tmp3+tmp1+tmp2,[tmp3+tmp1,tmp3+tmp2],options); + , + forall(0..(n-1), + tmp1="r"+text(#); + tmp2="r"+text(#+1); + Tlistplot("-"+name+tmp3+tmp1+tmp2,[tmp3+tmp1,tmp3+tmp2],options); + ); + ); //190507to + if(tick!=0, //190421 + if(mod(jj,tick)==0 % #==m, + drawtext(clist_(jj+1)+TableMove-[0.04,-0.1],"c"+text(jj)); //190428 + ); + ); + ); //190507 + forall(0..n,jj, + tmp3="r"+text(jj); + if(length(rmvL)>=0, + tmp1="c"+text(0); + tmp2="c"+text(m); + Tlistplot("-"+name+tmp3+tmp1+tmp2,[tmp1+tmp3,tmp2+tmp3],options); + , + forall(0..(m-1), + tmp1="c"+text(#); + tmp2="c"+text(#+1); + Tlistplot("-"+name+tmp3+tmp1+tmp2,[tmp1+tmp3,tmp2+tmp3],options); + ); + ); + if(tick!=0, //190421 + if(mod(jj,tick)==0 % #==n, + drawtext(rlist_(jj+1)+TableMove-[0.4,0.1],"r"+text(jj)); //190428 + ); + ); + ); + Changetablestyle(rmvL,["nodisp"]); //190428 + 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; +); +////%Tabledatalight end//// + +////%Tabledatageo start//// //190428(renamed) +Tabledatageo(nm,xLstorg,yLstorg,rmvL,options):=( + regional(eqL,ul,n,m,Tb,xLst,yLst, + rlist,clist,tmp,tmp1,tmp2); + xLst=xLstorg; + yLst=yLstorg; + tmp=Divoptions(options); + eqL=tmp_5; + TableMove=[0,0]; + forall(eqL, + tmp=Strsplit(#,"=");; + tmp1=Toupper(substring(tmp_1,0,2)); + tmp2=Toupper(substring(tmp_2,0,1)); + if(tmp1=="MO", + TableMove=parse(tmp_2); + ); + ); + tmp=sum(yLst); + ul=[0,tmp]/10; + m=length(xLst); + n=length(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]); + ); + forall(0..m, + tmp="C"+text(#); + tmp1=TableMove+clist_(#+1); + if(#==0, + Putpoint(tmp,tmp1); + , + Putpoint(tmp,tmp1,[parse(tmp+".x"),tmp1_2]); + ); + inspect(parse(tmp),"ptsize",3); + inspect(parse(tmp),"labeled",false); + ); + forall(1..n, + tmp="R"+text(#); + tmp1=TableMove+rlist_(#+1); + Putpoint(tmp,tmp1,[tmp1_1,parse(tmp+".y")]); + inspect(parse(tmp),"ptsize",3); + inspect(parse(tmp),"labeled",false); + ); + tmp1=0; + forall(1..m, + tmp=parse("C"+text(#)+".x")-TableMove_1; + tmp=tmp*10; + xLst_#=tmp-tmp1; + tmp1=tmp; + ); + tmp1=C0.y*10; + forall(1..n, + tmp=parse("R"+text(#)+".y")-TableMove_2; + tmp=tmp*10; + yLst_#=tmp1-tmp; + tmp1=tmp; + ); + Tb=Tabledatalight(nm,xLst,yLst,rmvL,options); + Tb; +); +////%Tabledatageo end//// + +////%Tgrid start//// +Tgrid(ptstr):=( +//help:Tgrid("c2r5"); + regional(tb,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=parse("tb"+text(TABLECOUNT)); //190428 + [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2]+TableMove; //190428 + ); +); +////%Tgrid end//// + +////%Tlistplot start//// +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"]); +//help:Tlistplot([options2="Msg=y"]); + regional(tmp,tmp1); + tmp1=divoptions(options);//180404from + tmp1=tmp1_5; + tmp1=apply(tmp1,Toupper(substring(#,0,1))); + if(contains(tmp1,"M"), + tmp1=options; + , + tmp1=append(options,"Msg=n"); + );//180404to + tmp=apply(ptL,Tgrid(#)); // 15.06.03 + Listplot(nm,tmp,tmp1); +); +////%Tlistplot end//// + +////%Changetablestyle start//// +Changetablestyle(nameL,style):=( +//help:Changetablestyle(["r0c0c3"],["da"]); + regional(nmL,nametb, name,grid,head,sb,tmp,tmp1,tmp2,tmp3, + tsg,pts,p1,p2,names,name,name1,nn,mm,gname,flg); + nametb="tb"+text(TABLECOUNT); //190428 + if(islist(nameL),nmL=nameL,nmL=[nameL]); + forall(nmL,grid, + if(substring(grid,0,1)=="r",sb="c",sb="r"); + tmp=indexof(grid,sb); + head=substring(grid,0,tmp-1); + if(sb=="r", //190507from + pts=head+sb+"x"; + , + pts=sb+"x"+head; + ); + names=nametb+head+sb+"x"+sb+"y";//190507to + tmp3=apply(GCLIST,#_1); // 161206from + tmp3=select(tmp3,indexof(#,nametb)>0); + tmp3=apply(tmp3,substring(#,length(nametb),length(#))); //190507from + tmp3=select(tmp3,substring(#,0,length(head))==head); + tmp=Indexall(grid,sb); + tmp1=substring(grid,tmp_1,tmp_2-1); + tmp2=substring(grid,tmp_2,length(grid)); + tsg=apply([tmp1,tmp2],parse(#)); + flg=0; + forall(tmp3,gname, + if(flg==0, + tmp=Indexall(gname,sb); + tmp1=parse(substring(gname,tmp_1,tmp_2-1)); + tmp2=parse(substring(gname,tmp_2,length(gname))); + if((tmp1<=tsg_1)&(tsg_2<=tmp2), + flg=1; + if(tmp1==tsg_1, + if(tsg_2==tmp2, + name=Replaceall(names,["x",tsg_1,"y",tsg_2]); + Changestyle(name,style); + , + name=Replaceall(names,["x",tsg_2,"y",tmp2]); + name1=Replaceall(names,["x",tmp1,"y",tmp2]); //190508from + p1=Replaceall(pts,["x",tsg_2]); + p2=Replaceall(pts,["x",tmp2]); + Tlistplot("-"+name,[p1,p2],["notex"]); + GCLIST=GCLIST_(1..(length(GCLIST)-1)); + nn=select(1..(length(GCLIST)),indexof(GCLIST_#_1,name1)>0); + nn=nn_1; + tmp=GCLIST_nn; + tmp=tmp_[2,3]; + GCLIST_nn=prepend(name,tmp); + nn=select(1..(length(GLIST)),indexof(GLIST_#,name1)>0); + nn=nn_1; + GLIST_nn=replace(GLIST_nn,name1,name); + mm=select(1..(length(COM2ndlist)),indexof(COM2ndlist_#,name1)>0); + mm=mm_1; + COM2ndlist_mm=replace(COM2ndlist_mm,name1,name); //190508to + ); + , + name=Replaceall(names,["x",tmp1,"y",tsg_1]); + name1=Replaceall(names,["x",tmp1,"y",tmp2]); //190508from + p1=Replaceall(pts,["x",tmp1]); + p2=Replaceall(pts,["x",tsg_1]); + Tlistplot("-"+name,[p1,p2],["notex"]); + nn=select(1..(length(GCLIST)),indexof(GCLIST_#_1,name1)>0); + GCLIST=GCLIST_(1..(length(GCLIST)-1)); + nn=nn_1; + tmp=GCLIST_nn; + tmp=tmp_[2,3]; + GCLIST_nn=prepend(name,tmp); + nn=select(1..(length(GLIST)),indexof(GLIST_#,name1)>0); + nn=nn_1; + GLIST_nn=replace(GLIST_nn,name1,name); + mm=select(1..(length(COM2ndlist)),indexof(COM2ndlist_#,name1)>0); + mm=mm_1; + COM2ndlist_mm=replace(COM2ndlist_mm,name1,name); //190508to + if(tsg_2<tmp2, + p1=Replaceall(pts,["x",tsg_2]); + p2=Replaceall(pts,["x",tmp2]); + name=Replaceall(names,["x",tsg_2,"y",tmp2]); + Tlistplot("-"+name,[p1,p2]); + ); + ); + ); + ); + ); + name=Replaceall(names,["x",tsg_1,"y",tsg_2]); + p1=Replaceall(pts,["x",tsg_1]); + p2=Replaceall(pts,["x",tsg_2]); + Tlistplot("-"+name,[p1,p2],style); + ); //170507to +); +////%Changetablestyle end//// + +////%Findcell start//// +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]; +); +////%Findcell end//// + +////%Putcell start//// +Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr,[]); //190228from +Putcell(Arg1,Arg2,Arg3,Arg4,Arg5):=( + if(islist(Arg5), + Putcell("",Arg1,Arg2,Arg3,Arg4,Arg5); + , + Putcell(Arg1,Arg2,Arg3,Arg4,Arg5,[]); + ); +); +Putcell(Tbdata,pos1,pos2,dir,lttr,options):=( +//help:Putcell("c0r0","c2r1","lt","abc"); +//help:Putcell(2,3,"c","xyz"); +//help:Putcell(options=["Color="]); + 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)],options); +); //190228to +////%Putcell end//// + +////%Putcellexpr start//// +Putcellexpr(pos1,pos2,dir,ex):=Putcellexpr("",pos1,pos2,dir,ex,[]); //190228from +Putcellexpr(Arg1,Arg2,Arg3,Arg4,Arg5):=( + if(islist(Arg5), + Putcellexpr("",Arg1,Arg2,Arg3,Arg4,Arg5); + , + Putcellexpr(Arg1,Arg2,Arg3,Arg4,Arg5,[]); + ); +); +Putcellexpr(Tbdata,pos1,pos2,dir,ex,options):=( +//help:Putcellexpr("c0r0","c2r1","lt","abc"); +//help:Putcellexpr(2,3,"c","\sin x"); + Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$",options); +); //190228to +////%Putcellexpr end//// + +////%Putrow start//// +Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL,[]); //190228from +Putrow(Arg1,Arg2,Arg3,Arg4):=( + if(islist(Arg4), + Putrow("",Arg1,Arg2,Arg3,Arg4); + , + Putcellrow(Arg1,Arg2,Arg3,Arg4,[]); + ); +); +Putrow(Tbdata,nrow,dir,lttrL,options):=( +//help:Putrow(1,"c",["x","y","z"]); + regional(tmp,tmp1,mcol); + mcol=length(lttrL); + forall(1..mcol, + Putcell(Tbdata,#,nrow,dir,lttrL_#,options); + ); +); //190228to +////%Putrow end//// + +////%Putrowexpr start//// +Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL,[]); //190228from +Putrowexpr(Arg1,Arg2,Arg3,Arg4):=( + if(islist(Arg4), + Putrowexpr("",Arg1,Arg2,Arg3,Arg4); + , + Putrowexpr(Arg1,Arg2,Arg3,Arg4,[]); + ); +); +Putrowexpr(Tbdata,nrow,dir,exL,options):=( +//help:Putrowexpr(2,"r",["x","y","z"]); + regional(lttrL); + lttrL=apply(exL,"$"+#+"$"); + Putrow(Tbdata,nrow,dir,lttrL,options); +); //190228to +////%Putrowexpr end//// + +////%Putcol start//// +Putcol(mcol,dir,lttrL):=Putcol("",mcol,dir,lttrL,[]); //190228from +Putcellexpr(Arg1,Arg2,Arg3,Arg4):=( + if(islist(Arg4), + Putcellexpr("",Arg1,Arg2,Arg3,Arg4); + , + Putcellexpr(Arg1,Arg2,Arg3,Arg4,[]); + ); +); +Putcol(Tbdata,mcol,dir,lttrL,options):=( +//help:PutcoL(1,"c",["x","y","z"]); + regional(tmp,tmp1,nrow); + nrow=length(lttrL); + forall(1..nrow, + Putcell(Tbdata,mcol,#,dir,lttrL_#,options); + ); +); //190228to +////%Putcol end//// + +////%Putcolexpr start//// +Putcolexpr(mcol,dir,exL):=Putcolexpr("",mcol,dir,exL,[]); //190228from +Putcellexpr(Arg1,Arg2,Arg3,Arg4):=( + if(islist(Arg4), + Putcellexpr("",Arg1,Arg2,Arg3,Arg4); + , + Putcellexpr(Arg1,Arg2,Arg3,Arg4,[]); + ); +); +Putcolexpr(Tbdata,mcol,dir,exL,options):=( +//help:Putcolexpr(2,"r",["x","y","z"]); + regional(lttrL); + lttrL=apply(exL,"$"+#+"$"); + Putcol(Tbdata,mcol,dir,lttrL,options); +); //190228to +////%Putcolexpr end//// + +////%Setrange start//// +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]); +); +////%Setrange end//// + +////%Inwindow start//// +Inwindow(point):=Inwindow(point,[XMIN,XMAX],[YMIN,YMAX]); +Inwindow(point,xrng,yrng):=( +//help:Inwindow(point); +//help:Inwindow(point,xrange,yrange); + regional(Eps,pt,x,y,xmin,xmax,ymin,ymax,tmp); + Eps=10.0^(-6); + if(ispoint(point),pt=point.xy,pt=point); + x=pt_1; y=pt_2; + xmin=xrng_1; xmax=xrng_2; + ymin=yrng_1; ymax=yrng_2; + tmp=(x>xmin-Eps)&(x<xmax+Eps)&(y>ymin-Eps)&(y<ymax+Eps); + if(tmp,true,false); +); +////%Inwindow end//// + +////%Dashlinedata start//// +Dashlinedata(dataorg,sen,gap,ptn):=( + regional(data,eps,dtall,len,lenlist,ii,lenall,kari, + naga,tobi,nsen,seglist,segunit,hajime,owari,jj, + flg,tt,ptL,out,tmp,tmp1,tmp2); + eps=10.0^(-6); + if(isstring(dataorg),data=parse(dataorg),data=dataorg); + dtall=length(data); + out=[]; + len=0; lenlist=[0]; + forall(2..dtall,ii, + len=len+|data_ii-data_(ii-1)|; + lenlist=append(lenlist,len); + ); + lenall=lenlist_dtall; + if(lenall>0, + kari=(sen+gap)*0.1;naga=sen*0.1;tobi=gap*0.1; + if(|data_1-data_dtall|<eps, + nsen=max([re(ceil(lenall/kari)),3]); + segunit=lenall/nsen; + naga=segunit*sen/(sen+gap); + tobi=segunit*gap/(sen+gap); + seglist=apply(0..(nsen-1),#*segunit); + , + if(ptn==0, + nsen=max([re(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=apply(0..(nsen-1),#*segunit); + , + nsen=max([re(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=apply(0..(nsen-2),tobi+#*segunit); + ); + ); + hajime=1;owari=1; + forall(1..(length(seglist)),ii, + len=seglist_ii; + flg=0; + forall(owari..dtall,jj, + if(flg==0, + if(len<lenlist_jj-eps, + flg=jj; + ); + ); + ); + if(flg>0,hajime=flg-1); + flg=0; + forall(hajime..dtall,jj, + if(flg==0, + if(len+naga<lenlist_jj-eps, + flg=jj; + ); + ); + ); + if(flg>0,owari=flg-1); + tt=len-lenlist_hajime; + tt=tt/(lenlist_(hajime+1)-lenlist_hajime); + tmp=data_hajime+tt*(data_(hajime+1)-data_hajime); + ptL=[tmp]; + forall((hajime+1)..owari,jj, + ptL=append(ptL,data_jj); + ); + tt=(len+naga-lenlist_owari); + tt=tt/(lenlist_(owari+1)-lenlist_owari); + tmp=data_owari+tt*(data_(owari+1)-data_owari); + ptL=append(ptL,tmp); + out=append(out,ptL); + ); + ); + out; +); +////%Dashlinedata end//// + +////%Windispg start//// +Windispg():=( + if(ADDAXES=="1", //181215from + Drwxy(); + ADDAXES="0"; + ); //181215to + Windispg(GCLIST); //190125 +); +Windispg(gcLorg):=( //190125 + regional(gcL,Nj,Nk,Dt,Vj,tmp,tmp1,tmp2,tmp3,tmp4,opcindy); + gcL=gcLorg; //190125from + if(length(gcL)>0, + if(!islist(gcL_1),gcL=[gcL]); + ); //190125to + gsave(); + layer(KETPIClayer); + forall(gcL,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; + tmp=Nj_2; //190119from + if(!islist(tmp),tmp=[tmp,""]); //190123 + if(tmp_1<0,tmp1=0,tmp1=tmp_1); //190119from + if(tmp1<10, + forall(Dt,Nk, + if(length(Nk)>1, + tmp3=""; + if(indexof(opcindy,"color")==0, //190122from + tmp3=tmp3+",linecolor->"+KCOLOR; + ); + tmp3=tmp3+opcindy; + if(tmp1==0, //190126from + if((length(tmp_2)>0)&(indexof(opcindy,"size")==0), + tmp3=tmp3+",size->"+tmp_2; + ); //190124to + tmp="connect("+Textformat(Nk,5)+tmp3+");";//190125 + parse(tmp); + , + if(tmp1==1, + tmp=tokenize(Nj_2_2,",");tmp4=Dashlinedata(Nk,tmp_1,tmp_2,0); //190512 + forall(tmp4, + tmp="connect("+Textformat(#,5)+tmp3+");"; + parse(tmp); + ); + , + tmp3=",dashtype->"+text(tmp1)+tmp3; + forall(1..(length(Nk)-1), + tmp="draw("+Textformat([Nk_#,Nk_(#+1)],5)+tmp3+");"; + parse(tmp); + ); + ); + ); + , + if(indexof(opcindy,"size")==0, //190425from + opcindy=opciny+",size->"+text(TenSize/TenSizeInit); + ); //190425to + tmp="draw("+text(Nk_1)+opcindy+");"; + parse(tmp); + ); //190126to + ); + ); + ); + ); + grestore(); + layer(0); +); +////%Windispg end//// + + +////%Extractdata start//// +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,color); + tmp=Divoptions(options); + Ltype=tmp_1; + Noflg=tmp_2; + color=tmp_(length(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(name+" 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); + tmp3=[ //17.09.18 //no ketjs on + "Tmpout=ReadOutData("+Dq+File+Dq+")" + ]; + GLIST=concat(GLIST,tmp3); //no ketjs off + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); //no ketjs off + Ltype=Getlinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 //no ketjs on + Texcom("}");//180722 + ); //no ketjs off + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); + ); + tmp2; +); +////%Extractdata end//// + +////%Removeout start//// +Removeout(pltlist):=( + regional(name,tmp,tmp1,tmp2); + forall(pltlist,name, + tmp1=[]; + forall(GOUTLIST, + tmp=remove(#_2,[name]); + tmp1=append(tmp1,[#_1,tmp]); + ); + GOUTLIST=tmp1; + ); +); +////%Removeout end//// + +////%Makecmdlist start//// +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); +); +////%Makecmdlist end//// + +////%Savecmdlist start//// +Savecmdlist(cmdlist,cmdfile):=( + SCEOUTPUT=openfile(cmdfile+".cs"); + forall(cmdlist, + println(SCEOUTPUT,#); + ); + closefile(SCEOUTPUT); +); +////%Savecmdlist end//// + +////%Quicksort start//// +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; +); +////%Quicksort end//// + +////%Lessstr start//// +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; +); +////%Lessstr end//// + +////%Makehelplist start//// +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"+PPa(""), + 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"+PPa(""), + 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); +); +////%Makehelplist end//// + +////%Helplist start//// +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","+basic3","+out"],tmp); //190414 + , + ketfiles=files; + ); + ketfiles=apply(ketfiles,replace(#,"+","ketcindylib")); + ketfiles=apply(ketfiles,#+"r.cs"); // 15.11.05 from + tmp=apply(files,replace(#,"+","ketcindylib")); +// tmp=apply(files,replace(#,"r.cs","")); +// tmp=remove(tmp,["ketcindylibout"]); +// tmp=apply(tmp,replace(#,"basic","")); + tmp=apply(tmp,#+help+".txt"); + ketfiles=concat(ketfiles,tmp);// 15.11.05 until + 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.31until + setdirectory(Dirwork); +); +////%Helplist end//// + +////%Help start//// +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")); +); +////%Help end//// + +////%Helpkey start//// +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); + ); +); +////%Helpkey end//// + +////%Example start//// +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(#); + ); + ); +); +////%Example end//// + + +//help:end(); + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic3logr.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic3logr.txt new file mode 100644 index 0000000000..439a634247 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic3logr.txt @@ -0,0 +1,61 @@ +// 20190623 +// Fracform,Gcd added +// 20190618 +// Mkketcindyjs changed (Error message) +// 20190615 +// WritetoRS,Usegraphics,Viewtex,Figpdf changed ( indexof for pict2e,tikz ) +// 20190604 +// Mkketcindyjs changed ( eqflg added ) +// 20190528 +// Animationparam changed ( stop => rng) +// 20190524 +// Animationparam added +// 20190522 +// Textedit2value changed +// Tocindyform,Tocindyformpart debugged +// Toctexform,Totexformpart debugged +// 20190521 +// Textedit2value added +// Tocindyform,Tocindyformpart adde +// Totexform changed (pi => \pi, case without "()") +// 20190515 +// Totexform,Totexformpart changed(enhanced) +// 20190514 +// Totexform,Totexformpart added +// Copyketcindyjs debugged ( "/" added for "cd") +// 20190506 +// Setketcindyjs,Mkketcindyjs debugged (color) +// 20190504 +// Mkketcindyjs changed ( rmptL,REMOVEPTJS,border,"z" ) +// 20190502 +// Mkketcindyjs changed ( only ketjs on/off added ) +// 20190430 +// Textedit added +// Mkketcindyjs debugged ( only ketjs) +// 20190428 +// Mkketcindyjs debugged ( basic3d => basic3 ) +// Tenkeybrd, Getkey changed +// 20190427 +// Tenkeybrd, Getkey added +// 20190423 +// Ketcindyjsdata and Mkketcindyjs changed +// 20190422 +// Ketcindyjsdata added +// Setketcindyjs, Mkketcindyjs changed ( for Ketcindyjsdata ) +// 20190419 +// Findfun debugged ( inside of "" removed ) +// 20190417 +// Mkketcindyjs changed ( Ignore options ) +// 20190416 +// Findfun, Extractun, Extractall moved from basic2 +// Mkketcindyjs, Extractall debugged ( IgnoreList, DL globalized ) +// 20190415 +// Makeshell debugged ( Dq -> Dqq ) +// Makebat debugged ( tex,path (\) ) +// parse( ..= ) changed ( ; added ) +// 20190414 +// Makeshell Makebat changed ( Dqq(fname ) +// 20190412 +// newly generated +// Some functions moved from basic2 +// Figpdf debugged (SCALEY) diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic3r.cs b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic3r.cs new file mode 100644 index 0000000000..8a953f20a9 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibbasic3r.cs @@ -0,0 +1,4162 @@ +// 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("ketcindylibbasic3[20190623] loaded"); + +//help:start(); + +////%Tenkeybrd start//// +Tenkeybrd(pLB):=Tenkeybrd(pLB,[]); +Tenkeybrd(pLB,options):=( +//help:Tenkeybrd([2,1],"Size=1.5"); +//help: Tenkeybrd(Buttons shoud be given) + regional(axes,xL,yL,size,shade,color,tmp,tmp1); + size="Size=1.5"; + shade="Y"; + color="Color=[0,0,0.2,0]"; + forall(options, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,2)); + if(tmp1=="SI", + size=#; + ); + if(tmp1=="SH", + shade=Toupper(substring(tmp_2,0,1)); + ); + if(tmp1=="CO", + color=#; + ); + ); + axes=ADDAXES; + cell=8; + if(shade=="Y", + Framedata2("tenkey",[pLB,pLB+cell/10*[3,5]]); + Shade(["frtenkey"],[color]); + ); + xL=apply(1..3,cell); + yL=apply(1..5,cell); + Tabledata(xL,yL,[],[0,"Setw=n","Move="+text(pLB)]); + Addax(axes); + [tmp1,tmp2]; +); +////%Tenkeybrd end//// + +////%Keyaction start//// +Keyaction(key):=( + regional(kL,kstr,endflg,sign); +//help:Keyaction(key); +//help:Getkey(Tenkeys should be given in advance) + endflg=0; + sign=1; + if(indexof(Tenkeys,"-")>0, + sign=-1; + Tenkeys=replace(Tenkeys,"-",""); + ); + kstr=Tenkeys; + if((key=="C")%(key=="A")%(key=="=")%(indexof(key,"-")>0), + if(key=="C",kstr=substring(kstr,0,length(kstr)-1)); + if(key=="A",sign=1;kstr=""); + if(key=="=",endflg=1); + if(indexof(key,"-")>0,sign=-sign); + , + kstr=kstr+key; + ); + if(substring(kstr,0,1)==".",kstr="0"+kstr); + if(sign==-1, + kstr="-"+kstr; + ); + Tenkeys=kstr; + endflg; +); +////%Keyaction end//// + +////%Dispchoice 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]); + ); +); +////%Dispchoice end//// + +////%Datetime start//// +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]; +); +////%Datetime end//// + +////%Readcsvsla start//// +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; +); +////%Readcsvsla end//// + +////%Writebezier start//// +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.22until + ); + 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"+PaO(),"["); + 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(#))+";"; //190415 + 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; +); +////%Writebezier end//// + +////%Readbezier start//// +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.22until + out=append(out,"bz"+tmp); + ); + out; +); +////%Readbezier end//// + +////%RSform start//// +RSform(str):=RSform(str,3); +RSform(str,listfrom):=( +//help:RSform(string,listfrom); + regional(posL,mxlv,rep1,rep2,rep3,prev,out, + tmp,tmp1,tmp2); + rep1="c"+PaO(); rep2="c"+PaO(); rep3="list"+PaO(); + if(listfrom<3,rep2="list"+PaO()); + if(listfrom==1,rep1="list"+PaO()); + posL=Bracket(str,"[]"); + tmp=apply(posL,#_2); + mxlv=max(tmp); + out=""; + prev=0; + forall(posL, + out=out+substring(str,prev,#_1-1); + prev=#_1; + if(#_2>0, + tmp1=select(posL,tmp,(tmp_2<0)&(tmp_1>#_1)); + tmp1=tmp1_1_1; + tmp=substring(str,#_1,tmp1); + if(#_2==mxlv,out=out+rep1); + if(#_2==mxlv-1,out=out+rep2); + if(#_2<=mxlv-2,out=out+rep3); + , + out=out+")"; + ); + ); + out=out+substring(str,prev,length(str)); + out=replace(out,".xy",""); + out=replace(out,".x","[1]"); + out=replace(out,".y","[2]"); + out=replace(out,"c"+PPa("1"),"[1]");//17.10.06[2lines] + out=replace(out,"c"+PPa("2"),"[2]"); + out; +); +////%RSform end//// + +////%RSslash start//// +RSslash(str):=( //17.09.24 + regional(tmp); + tmp=replace(str,"\","\\"); +// tmp=replace(tmp,"\\\\","\\"); + tmp; +); +////%RSslash end//// + +////%Rform start//// +Rform(list):=( + regional(plotlist,comp,pos,out,strL,tmp,tmp1,tmp2,tmp3,Nj); + out=list; + out=replace(out,"[[[","list"+PaO()+"[["); + out=replace(out,"[","c"+PaO()); + out=replace(out,"]",")"); + out=replace(out,".xy",""); + out=replace(out,".x","[1]"); + out=replace(out,".y","[2]"); + out; +); +////%Rform end//// + +////%Defvar start//// +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.16until + ); +); +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//190415 + parse(tmp); + VLIST=select(VLIST,#_1!=name); // 15.02.08 + VLIST=prepend([name,value],VLIST); +); +////%Defvar end//// + +////%IftoR start//// +IftoR(strorg):=( //180802 + regional(str,ifL,ppL,cpL,kk,sL,out, + tmp,tmp1,tmp2,tmp3,tmp4); + str=replace(strorg,LFmark,""); + ifL=Indexall(str,"if"+PaO()); + 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="}"; + sL_(tmp3_1)="){"; + if(length(tmp3)>1, + sL_(tmp3_2)="}else{"; + ); + ); + out=sum(sL); + out; +); +////%IftoR end//// + +////%FortoR start//// +FortoR(strorg):=( + regional(str,pre,post,sub,ppL,forstr,out,tmp,tmp1,tmp2); + str=strorg; + forstr=indexof(str,"forall("); + if(forstr==0, + out=str; + , + pre=substring(str,0,forstr-1)+"for"+PaO(); + ppL=Bracket(str,"()"); + tmp1=forstr+6; + tmp=select(ppL,#_1==tmp1); + tmp=select(ppL,#_2==-tmp_1_2); + tmp2=tmp_1_1; + sub=substring(str,tmp1,tmp2-1); + post="}"+substring(str,tmp2,length(str)); + tmp=indexof(sub,","); + tmp1=substring(sub,0,tmp-1); + tmp2=substring(sub,tmp,length(sub)); + sub=tmp1+"){"+tmp2; + tmp1=indexof(sub,"{"); + tmp2=indexof(sub,","); + tmp=substring(sub,tmp1,tmp2-1); + pre=pre+tmp+" in "+substring(sub,0,tmp1-1)+"{"; + sub=substring(sub,tmp2,length(sub)); + tmp=FortoR(sub); + out=pre+tmp+"}"; + ); + out=replace(out,"..",":"); + out; +); +////%FortoR end//// + +////%Deffun start//// +Deffun(name,bodylist):=( +//help:Deffun("f(x)",["regional(y)","y=x^2*(x-3)","y"]); + regional(funstr,str,Pos,nbody,bdy,ppL,bpL,excma,tmp,tmp1,tmp2); + funstr=name+":=("; + forall(bodylist, + funstr=funstr+#+";"; + ); + funstr=funstr+");"; + parse(funstr); + tmp=indexof(name,"("); + str=substring(name,0,tmp-1)+"<-function"+PaO(); + str=str+substring(name,tmp,length(name))+"{"; + forall(1..(length(bodylist)-1),nbody, + bdy=bodylist_nbody; + Pos=indexof(bdy,"regional")+indexof(bdy,"local"); + if(Pos==0, + bdy=replace(bdy,LFmark,""); + bdy=replace(bdy," ",""); + ppL=Bracket(bdy,"()"); + bpL=Bracket(bdy,"[]"); + tmp1=select(bpL,#_2==1); + tmp2=select(bpL,#_2==-1); + excma=[]; + forall(1..(length(tmp1)), + excma=append(excma,[tmp1_#_1,tmp2_#_1]); + ); + tmp1=Indexall(bdy,","); + forall(tmp1,cma, + tmp=select(excma,(#_1<cma)&(cma<#_2)); + if(length(tmp)>0, + bdy=substring(bdy,0,cma-1)+"'"+substring(bdy,cma,length(bdy)); + ); + ); + tmp=indexof(bdy,"forall"); + if(tmp>0, + bdy=FortoR(bdy); + ); + tmp=indexof(bdy,"if("); + if(tmp>0, + bdy=IftoR(bdy); + ); + bdy=RSform(replace(bdy,"'",",")); + str=str+bdy+";"; + ); + ); + str=str+"return"+PaO()+bodylist_(length(bodylist))+")}"; + FUNLIST=append(FUNLIST,str); +); +////%Deffun end//// + +////%WritetoRS start//// +WritetoSci():=WritetoRS(); //17.12.19 +WritetoSci(Arg):=WritetoRS(Arg);//180619 +WritetoRS():=WritetoRS(FnameR);// 17.09.17from +WritetoRS(Arg):=( + regional(string,filename,shch,tmp1,tmp2); + if(isstring(Arg), + string=Arg; + if(indexof(string,".r")>0, + filename=string; + shch=""; + , + filename=FnameR; + shch=string; + ); + WritetoRS(filename,shch); + , + if(Arg<=1,WritetoRS(FnameR,"all")); + if(Arg==2,WritetoRS(FnameR,"sh")); + ); +); +WritetoRS(filename,shchoice):=( + regional(Plist,Pos,GrL,str,tmp,tmp1,tmp2,cmd,ns,spos,epos); + //help:WritetoRS(2); + println("Write to R "+filename); + Plist=[]; + Pnamelist=[]; + forall(remove(allpoints(),[SW,NE]), + if(indexof(#.name,"[")==0, //181106 + tmp=Lcrd(#); + tmp1=format(re(tmp_1),6);// 15.02.05 + tmp2=format(re(tmp_2),6); + tmp=#.name+"="+"c("+tmp1+","+tmp2+");"; + tmp=tmp+"Assignadd('"+#.name+"',"+#.name+")"; + Plist=append(Plist,tmp); + , + println("Remove the abnormal poiint "+#.name); //181106 + ); + ); + SCEOUTPUT = openfile(filename); + tmp=Datetime(); + println(SCEOUTPUT,"# date time="+tmp_1+" "+tmp_2); + if(isstring(CindyName), // 16.12.25from + if(length(CindyPathName)>0, + println(SCEOUTPUT, + "# path file="+CindyPathName+" "+CindyFileName+".cdy"); + , + println(SCEOUTPUT,""); + ); + , + println(SCEOUTPUT,""); + ); + if(iswindows(), + println(SCEOUTPUT,"options"+PaO()+"encoding='UTF-8')"); //190111 + ); + tmp1=replace(Dirwork,"\","/"); + if((iswindows())&(indexof(tmp1,"Users")>0), + tmp=Indexall(tmp1,"/"); + tmp2=substring(tmp1,tmp_3-1,length(tmp1)); + tmp1=substring(tmp1,0,tmp_3-1); + println(SCEOUTPUT,"Drv=shell"+PaO()+"'echo %HOMEDRIVE%',intern=TRUE)"); //190111 + println(SCEOUTPUT,"Drv=Drv[length"+PaO()+"Drv)]"); + println(SCEOUTPUT,"Hpath=shell"+PaO()+"'echo %HOMEPATH%',intern=TRUE)"); + println(SCEOUTPUT,"Hpath=Hpath[length"+PaO()+"Hpath)]"); + println(SCEOUTPUT,"Rest="+Dqq(tmp2)); + println(SCEOUTPUT,"Path=paste"+PaO()+"Drv,Hpath,Rest,sep='')"); + println(SCEOUTPUT,"Path=gsub"+PaO()+"'\\','/',Path,fixed=TRUE)"); //180610 + println(SCEOUTPUT,"setwd"+PaO()+"Path)"); + , + println(SCEOUTPUT,"setwd"+PaO()+"'"+tmp1+"')"); + );//180409to + tmp=replace(Libname,"\","/"); //17.09.24from + println(SCEOUTPUT,"source"+PaO()+"'"+tmp+".r')"); //181213 + if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), + if(GPACK=="tpic",GPACK="pict2e"); + ); + if(indexof(GPACK,"pict2e")>0, // 190615 + tmp=replace(tmp+"_rep2e","\","/"); + println(SCEOUTPUT,"source('"+tmp+".r')"); + ); + if(indexof(GPACK,"tikz")>0, //181213from //190615 + tmp=replace(tmp+"_reptikz","\","/"); + println(SCEOUTPUT,"source"+PaO()+"'"+tmp+".r')"); + ); //181213to + println(SCEOUTPUT,"Ketinit"+PPa("")); + println(SCEOUTPUT,"cat"+PaO()+"ThisVersion,'\n')"); + println(SCEOUTPUT,"Fnametex='"+Fnametex+"'"); + println(SCEOUTPUT,"FnameR='"+FnameR+"'"); + println(SCEOUTPUT,"Fnameout='"+Fnameout+"'"); + println(SCEOUTPUT,"arccos=acos; arcsin=asin; arctan=atan"); + println(SCEOUTPUT,"Acos<- function"+PPa("x")+"{acos"+PaO()+"max"+PaO()+"-1,min"+PaO()+"1,x)))}"); + println(SCEOUTPUT,"Asin<- function"+PPa("x")+"{asin"+PaO()+"max"+PaO()+"-1,min"+PaO()+"1,x)))}"); + println(SCEOUTPUT,"Atan=atan"); + println(SCEOUTPUT,"Sqr<- function"+PPa("x")+"{if"+PaO()+"x>=0){sqrt"+PaO()+"x)}else{0}}"); + println(SCEOUTPUT,"Factorial=factorial"); + println(SCEOUTPUT,"Norm<- function"+PPa("x")+"{norm"+PaO()+"matrix"+PaO()+"x,nrow=1),"+Dqq("2")+")}"); + println(SCEOUTPUT,""); + forall(COM0thlist, + if(indexof(#,"Texcom")==0, //17.09.22 + println(SCEOUTPUT,RSform(#)); + , + println(SCEOUTPUT,#); + ); + ); + println(SCEOUTPUT, + "Setwindow(c"+PaO()+XMIN+","+XMAX+"), c"+PaO()+YMIN+","+YMAX+"))"); + forall(Plist, + println(SCEOUTPUT,#); + ); + VLIST=select(VLIST,substring(#_1,0,1)!="["); //181107 + forall(VLIST, + tmp=#_1; + tmp1=#_2; + if(!isstring(tmp1), + if(islist(tmp1), + tmp2="["; + forall(tmp1, + tmp2=tmp2+Textformat(#,6)+","; + ); + tmp1=substring(tmp2,0,length(tmp2)-1)+"]"; + , + tmp1=format(tmp1,6); + ); + ); + tmp1=RSform(tmp1); + print(SCEOUTPUT,tmp+"="+tmp1+";"); //17.09.22 +// tmp=substring(tmp,0,length(tmp)-1); + println(SCEOUTPUT,"Assignadd"+PaO()+"'"+tmp+"',"+tmp+")"); + ); + forall(FUNLIST, + println(SCEOUTPUT,#); + ); + forall(GLIST, //no ketjs on + println(SCEOUTPUT,RSform(#)); + ); //no ketjs off + tmp=text(Pnamelist); + tmp=replace(tmp,"[","list"+PaO()); + Pnamelist=replace(tmp,"]",")"); + println(SCEOUTPUT,"PtL="+Pnamelist); + tmp=select(GCLIST,#_2==-1); + GrL=apply(tmp,#_1); + tmp=text(GrL); + tmp=replace(tmp,"[","list"+PaO()); + tmp=replace(tmp,"]",")"); + println(SCEOUTPUT,"GrL="+tmp); + tmp1=""; + if(length(tmp1)>0, + tmp1="WriteOutData"+PaO()+"Fnameout"+tmp1+");"; + println(SCEOUTPUT,tmp1); + ); + forall(COM1stlist, + if(indexof(#,"Texcom")==0, //17.09.22 + println(SCEOUTPUT,RSform(#)); + , + println(SCEOUTPUT,#); + ); + ); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"# Windisp"+PPa("GrL")); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"if"+PaO()+"1==1){"); + println(SCEOUTPUT,""); + tmp1=replace(Dirwork,"\","/"); //180408to + if((iswindows())&(indexof(tmp1,"Users")>0), + println(SCEOUTPUT,"Path=paste"+PaO()+"Path,"+Dqq("/"+Fnametex)+",sep='')"); + tmp="Openfile(Path,'"+ULEN+"'"; + , + tmp="Openfile('"+tmp1+"/"+Fnametex+"','"+ULEN+"'"; + ); + tmp=tmp+",'Cdy="+Cindyname()+".cdy"; //180404 + tmp=replace(tmp,"\","\\"); + println(SCEOUTPUT,tmp+"')"); + forall(COM2ndlistb, //180613from + if(indexof(#,"Texcom")==0, + println(SCEOUTPUT,RSform(#)); + , + println(SCEOUTPUT,#); + ); + );//180613to + forall(COM2ndlist,cmd, + tmp=substring(cmd,0,4); + if(contains(["Lett","Expr"],tmp), //180721from + tmp1=Indexall(cmd,Dq); + tmp2=length(tmp1)/4; + str=""; ns=0; + forall(tmp2, + spos=tmp1_(4*#-1); epos=tmp1_(4*#); + str=str+RSform(substring(cmd,ns,spos-1)); + str=str+substring(cmd,spos-1,epos); + ns=epos; + ); + str=str+substring(cmd,ns,length(cmd)); + println(SCEOUTPUT,str); + , + if(indexof(cmd,"Texcom")==0, + println(SCEOUTPUT,RSform(cmd)); + , + println(SCEOUTPUT,cmd); + ); + ); //180721to + ); + if(length(GrL)>0, + println(SCEOUTPUT," Drwline"+PPa("GrL")); + ); + // println(SCEOUTPUT,"Closefile"+PaO()+"'"+ADDAXES+"')"); //181224(2line) + println(SCEOUTPUT,"Closefile"+PaO()+""+Dqq("0")+")"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"}"); + if(shchoice=="sh", + println(SCEOUTPUT,""); + println(SCEOUTPUT,"quit"+PPa("")); + , + println(SCEOUTPUT,""); + println(SCEOUTPUT,"#quit"+PPa("")); + ); + closefile(SCEOUTPUT); + if(iswindows(), //180513from + SCEOUTPUT = openfile("execsrc.r");//180514 + tmp1=replace(Dirwork,"\","/"); + if(indexof(tmp1,"Users")>0, + tmp=Indexall(tmp1,"/"); + tmp2=substring(tmp1,tmp_3-1,length(tmp1)); + tmp1=substring(tmp1,0,tmp_3-1); + println(SCEOUTPUT,"Drv=shell"+PaO()+"'echo %HOMEDRIVE%',intern=TRUE)"); + println(SCEOUTPUT,"Drv=Drv[length"+PaO()+"Drv)]"); + println(SCEOUTPUT,"Hpath=shell"+PaO()+"'echo %HOMEPATH%',intern=TRUE)"); + println(SCEOUTPUT,"Hpath=Hpath[length"+PaO()+"Hpath)]"); + println(SCEOUTPUT,"Rest="+Dqq(tmp2)); + println(SCEOUTPUT,"Path=paste"+PaO()+"Drv,Hpath,Rest,sep='')"); + println(SCEOUTPUT,"setwd"+PaO()+"Path)"); + println(SCEOUTPUT,"source"+PaO()+"'"+filename+"',encoding='UTF-8')"); + ); + closefile(SCEOUTPUT); + ); //180513to +); +////%WritetoRS end//// + +////%Readoutdata start//// +Readoutdata():=Readoutdata(Fnameout); +Readoutdata(filename):=Readoutdata("",filename); //16.03.07 +Readoutdata(Arg1,Arg2):=( //181030from + if(islist(Arg2), + Readoutdata("",Arg1,Arg2); + , + Readoutdata(Arg1,Arg2,[]); + ); +); //181030to +Readoutdata(pathorg,filenameorg,optionsorg):=( +//help:Readoutdata(); +//help:Readoutdata("file.txt"); +//help:Readoutdata("/datafolder","file.txt"); +//help:Readoutdata(options=["Disp=n(/y)]"); + regional(options,path,filename,varname,varL,ptL,pts,tmp,tmp1,tmp2,tmp3,tmp4, + nmbr,cmdall,cmd,cmdorg,outdt,goutdt,eqL,dispflg); + options=optionsorg; + dispflg=1; + tmp=Divoptions(options); //181024from + eqL=tmp_5; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=substring(tmp_1,0,1); tmp1=Toupper(tmp1); + tmp2=substring(tmp_2,0,1); tmp2=Toupper(tmp2); + if(tmp1=="D", + if(tmp2=="N",dispflg=0); + options=remove(options,[#]); //181030 + ); + ); //181024to + 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.07to + 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+";"); //190415 + 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+";"); //190415 + 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+" : "); + if(dispflg==1, //181024from + println(varL); + , + println(""); + ); //181024to + varL; +); +////%Readoutdata end//// + +////%Writeoutdata start//// +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); +); +////%Writeoutdata end//// + +////%Makeshell start//// +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,"rtv"); +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 "+Dqq(Dirwork)); // 15.07.16 + tmp1=" "+Dqq(Fhead)+" "+Dqq(texmainfile); // 15.12.11 //190415from + tmp=Indexall(PathT,"/"); + flg=length(tmp); + if(flg>0, + tmp=tmp_(length(tmp)); + tex=substring(PathT,tmp,length(PathT)); + path=substring(PathT,0,tmp-1); + ); //190415to + if(flg==0, // 17.10.13[Norbert] + tex=PathT; + path=""; + ); + if(indexof(flow,"r")>0, + tmp=Dqq(PathR)+" --vanilla --slave < "+Dqq(Fhead+".r"); //190414 + // 17.09.14 + println(SCEOUTPUT,tmp); + ); + if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13 + tmp=Dqq(PathT)+" "+Dqq(texmainfile+".tex"); //190415 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + tmp=replace(Dqq(PathT),tex,"dvipdfmx")+" "+Dqq(texmainfile+".dvi"); //190415 + println(SCEOUTPUT,tmp); + tmp="rm "+Dqq(texmainfile+".dvi"); //190414 + println(SCEOUTPUT,tmp); + ); + if(tex=="xelatex", + tmp="export PATH="+path+":${PATH}"; + println(SCEOUTPUT,tmp); + tmp="xelatex"+" "+Dqq(texmainfile+".tex"); //190414 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + tmp="rm "+Dqq(texmainfile+".dvi"); //190414 + println(SCEOUTPUT,tmp); + ); + if(tex=="pdflatex" % tex=="pdftex",//16.11.22from + tmp=Dqq(PathT)+" "+Dqq(texmainfile+".tex"); //190414 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + );//16.11.22until + if(tex=="lualatex",//16.12.16 + tmp=Dqq(PathT)+" "+Dqq(texmainfile+".tex"); //190414 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + );//16.12.16 + if(!isstring(Pathpdf), + tmp="preview"; + , + tmp=Pathpdf; + ); + if(tmp=="preview" % tmp=="skim", // 16.09.09from,16.10.20 + tmp="open -a "+Dqq(tmp)+" "+Dqq(texmainfile+".pdf"); //190414 + , + tmp=Dqq(tmp)+" "+Dqq(texmainfile+".pdf"); //190414 + );// 16.09.09until + println(SCEOUTPUT,tmp); // 16.07.21until + println(SCEOUTPUT,"exit 0"); + closefile(SCEOUTPUT); + setdirectory(Dirwork); +); +////%Makeshell end//// + +////%Convsjiswin start//// +Convsjiswin(dir,fname,ext):=( //180401 + regional(ctr,flg,mx,tmp); + mx=200; + ctr=0;flg=0; + nkfwin(dir,fname,ext); + while((!isexists(dir,fname+".out"))&(ctr<mx), + wait(100);ctr=ctr+1; + ); + if(ctr==mx,flg=1); + if(flg==0, + wait(100);ctr=0; + nkfcpdel(dir,fname,ext); + while((isexists(dir,fname+".out"))&(ctr<mx), + wait(100);ctr=ctr+1; + ); + if(ctr==mx,flg=2); + ); + tmp=dir+pathsep()+fname+"."+ext; + if(flg==0, + tmp= + println(tmp+" converted"); + , + println(tmp+" not converted "+text(flg)); + ); +); +////%Convsjiswin end//// + +////%Makebat start//// +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,"rtv"); +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=replace(Dirwork,"/","\"); + tmp=indexof(fname,":"); + if(tmp>0, + drive=substring(Dirwork,0,tmp); + fname=substring(Dirwork,tmp,length(Dirwork)); + println(SCEOUTPUT,drive); + ); + tmp=Dirwork;//180408form + if(iswindows(), + if((isincludefull(Dirwork))&(isexists(Dirwork,"sjis.txt")), + import("sjis.txt"); + ); + ); +// tmp=replace(tmp,"\","/"); //180408 +// println(SCEOUTPUT,"cd "+Dqq(tmp)); //180408 + tmp1=indexof(fname,"Users");//180409from + tmp2=indexof(fname,Homehead); + if((tmp1>0)%(tmp2>0), + if(tmp1>0, + fname=substring(fname,tmp1+length("Users")-1,length(fname)); + , + fname=substring(fname,tmp2+length(Homehead)-1,length(fname)); + ); + tmp=Indexall(fname,"\");//180403from + fname=substring(fname,tmp_2,length(fname)); + fname="%HOMEPATH%\"+fname; + );//180403to + println(SCEOUTPUT,"cd "+Dqq(fname));//180409to //190414 + tmp1=Indexall(PathT,"/"); //190415from + tmp2=Indexall(PathT,"\"); + tmp=concat(tmp1,tmp2); + flg=length(tmp); + if(flg>0, + tmp=tmp_(length(tmp)); + tex=substring(PathT,tmp,length(PathT)); + path=substring(PathT,0,tmp-1); + ); //190415to + if(flg==0, // 17.10.13[Norbert] + tex=PathT; + path=""; + ); + if(indexof(flow,"r")>0, + if(indexof(Dirwork,"Users")>0, //180917from + tmp=Dqq(PathR+"\R")+" --vanilla --slave < execsrc.r";//180514 + , + tmp=Dqq(PathR+"\R")+" --vanilla --slave < "+Dqq(Fhead+".r"); //190414 + ); //180917to + println(SCEOUTPUT,tmp); + ); + if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13 + tmp=Dqq(PathT)+" "+Dqq(texmainfile+".tex"); //190414 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + tmp=replace(Dqq(PathT),tex,"dvipdfmx")+" "+Dqq(texmainfile+".dvi"); //190414 + println(SCEOUTPUT,tmp); + tmp="del "+Dqq(texmainfile+".dvi"); //190414 + println(SCEOUTPUT,tmp); + ); + if(tex=="xelatex", + tmp="set Path = %Path%;"+Dqq(path); //190414 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + tmp="xelatex"+" "+texmainfile+".tex"; + println(SCEOUTPUT,tmp); + tmp="del "+Dqq(texmainfile+".dvi"); + println(SCEOUTPUT,tmp); + ); + if(tex=="pdflatex" % tex=="pdftex",//16.11.22from + tmp=Dqq(PathT)+" "+Dqq(texmainfile+".tex"); + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + );//16.11.22until + if(tex=="lualatex",//16.12.16 + tmp=Dqq(PathT)+" "+Dqq(texmainfile+".tex"); //190414 + println(SCEOUTPUT,tmp); + if(indexof(flow,"tt")>0,println(SCEOUTPUT,tmp)); //17.10.14 + );//16.12.16 + if(!isstring(Pathpdf), + tmp=indexof(PathS,"\scilab");// 15.12.12 + tmp=substring(PathS,0,tmp-1)+"\SumatraPDF\SumatraPDF.exe"; + , + tmp=Pathpdf; + ); + tmp=Dqq(tmp)+" "+Dqq(texmainfile+".pdf"); //190414 + println(SCEOUTPUT,tmp); + println(SCEOUTPUT,"exit 0"); + closefile(SCEOUTPUT); + if(indexof(Dirwork,":")==0, // 14.01.15 + drive="C:"; + , + drive=""; + ); + setdirectory(drive+Dirwork); +); +////%Makebat end//// + +////%Addpackage start//// +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.25to +); +////%Addpackage end//// + +////%Usegraphics start//// +Usegraphics(gpack):=( //180817 +//help:Usegraphics("pict2e"); + if(!contains(ADDPACK,gpack), + if(indexof(gpack,"tikz")>0, //181213from //190615 + Addpackage(["pgf","tikz"]); //190101 + , + Addpackage([gpack]); + ); //181213to + ); + GPACK=gpack; +); +////%Usegraphics end//// + +////%Viewtex start//// +Viewtex():=( + regional(texfile,tmp,tmp1,sep); + texfile=Fhead+"main"; +// if(iswindows(),sep="\",sep="/"); // 17.04.07 +// sep="/"; + SCEOUTPUT=openfile(texfile+".tex"); + tmp="\documentclass{article}"; + if(indexof(GPACK,"tikz")>0, //190324from //190615 + if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")==0, + tmp="\documentclass[dvipdfmx]{article}"; + ); //190324to + ); + 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.13to + ); + println(SCEOUTPUT,tmp); + if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), //181213from + if(GPACK=="tpic", GPACK="pict2e"); + ); + if(GPACK=="tpic", + tmp=replace(Dirhead,"\","/"); + println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}"); + ); + if(indexof(GPACK,"pict2e")>0, //190615 +// println(SCEOUTPUT,"\usepackage{pict2e}"); //190615 + println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}"); + if(indexof(PathT,"lualatex")>0, + println(SCEOUTPUT,"\usepackage{luatexja}"); + ); + ); + if(indexof(GPACK,"tikz")>0, //190615 + println(SCEOUTPUT,"\usepackage{pict2e}"); //190615 + println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}"); //190615 + if(indexof(PathT,"lualatex")>0, + println(SCEOUTPUT,"\usepackage{luatexja}"); + ); + );//181213to + 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.16until + 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); + ); + WritetoRS(2); //17.09.19 +); +////%Viewtex end//// + +////%Viewparent start//// +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(); + ); + WritetoRS(2); //17.09.29 + kc(); + ); +); +////%Viewparent end//// + +////%Figpdf start//// +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.08until + 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}"; + if(indexof(GPACK,"tikz")>0, //190324from //190615 + if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")==0, + tmp="\documentclass[dvipdfmx]{article}"; + ); //190324to + ); + if(indexof(PathT,"platex")>0, + tmp=replace(tmp,"article","jarticle"); + if(indexof(PathT,"uplatex")>0, //170813from + tmp=replace(tmp,"jarticle","ujarticle"); + );//170813to + ); + FigPdfList=append(FigPdfList,tmp); // 16.06.09until + tmp1="\special{papersize=W mm,H mm}"; + tmp=(XMAX-XMIN)*sc+(mar_1+mar_2); + tmp1=replace(tmp1,"W",text(tmp)); + tmp=SCALEY*(YMAX-YMIN)*sc+(mar_3+mar_4); //190412 + tmp1=replace(tmp1,"H",text(tmp)); + FigPdfList=append(FigPdfList,tmp1); + if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")>0, //17.11.05from + FigPdfList=append(FigPdfList, + "\usepackage{pict2e}"); + tmp=replace(Dirhead,"\","/"); + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + FigPdfList=append(FigPdfList, + "\usepackage{ketpic2e,ketlayer2e}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + FigPdfList=concat(FigPdfList, + ["\usepackage{"+tmp+"/ketpic2e}", + "\usepackage{"+tmp+"/ketlayer2e}"]); + ); + , + tmp=replace(Dirhead,"\","/"); + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + FigPdfList=append(FigPdfList, + "\usepackage{ketpic,ketlayer}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + FigPdfList=concat(FigPdfList, + ["\usepackage{"+tmp+"/ketpic}", + "\usepackage{"+tmp+"/ketlayer}"]); + ); + );//17.11.05until + FigPdfList=append(FigPdfList, + "\usepackage{amsmath,amssymb}"); + FigPdfList=append(FigPdfList, + "\usepackage{graphicx,color}"); + forall(ADDPACK, // 16.05.16from + tmp1="\usepackage"+#; //17.07.10 + FigPdfList=append(FigPdfList,tmp1); // 16.09.05until + ); + 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; +); +////%Figpdf end//// + +////%Slidework start//// +Slidework():=Slidework(Dirwork); // 16.06.10 +Slidework(dirorg):=( +//help:Slidework(directory); + regional(dir,tmp); // 16.06.25 + dir=replace(dirorg,unicode("000a"),""); // 16.06.25 + dir=replace(dir,"/",pathsep());//17.11.20from + dir=replace(dir,"\",pathsep()); + tmp=length(dir); + if(substring(dir,tmp-1,tmp)==pathsep(), + dir=substring(dir,0,tmp-1); + );//17.11.20until + if(isexists(dir,""), // 16.12.20 + Changework(dir); + println(makedir(dir,"fig"));//17.11.23 + tmp=dir+pathsep()+"fig"; //17.04.16from + Changework(tmp);// 17.02.19until + , + println(dir+ " not exists"); + ); +); +////%Slidework end//// + +////%Setslidemargin start//// +Setslidemargin(marginlist):=( // 180908 +//help:Setslidemargin([+5,-10]); + SlideMargin=marginlist; +); +////%Setslidemargin end//// + +////%Setslidepage start//// +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; +); +////%Setslidepage end//// + +////%Setslidemain start//// +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; +); +////%Setslidemain end//// + +////%Setslidebody start//// +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 +); +////%Setslidebody end//// + +////%Setslidehyper start//// +Setslidehyper():=( 17.12.16from + Setslidehyper(["cl=true,lc=blue,fc=blue",125,70,1]); +); +Setslidehyper(Arg):=( + if(isstring(Arg), + Setslidehyper(Arg,["cl=true,lc=blue,fc=blue",125,70,1]); + , + Setslidehyper("",Arg); + ); +); +Setslidehyper(driverorg,options):=( +//help:Setslidehyper(); +//help:Setslidehyper("dvipdfmx",["cl=true,lc=blue,fc=blue","Pos=[125,73]","Size=1"]); + regional(driver,eqL,reL,stL,,str,tmp,tmp1,tmp2); + driver=driverorg; + if(length(driver)==0, + if(indexof(PathT,"pdflatex")+indexof(PathT,"lualatex")==0, + driver="dvipdfmx"; + ); + ); + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + stL=tmp_7; + tmp1=select(eqL,length(Indexall(#,"="))>1); //180813from + eqL=remove(eqL,tmp1); + stL=concat(stL,tmp1); //180813to + if(length(stL)>0, + str=stL_1; + , + str=""; + ); + if(length(str)==0, + str="cl=true,lc=blue,fc=blue"; + ); + if(length(driver)==0, + tmp1="["+str+"]"; + , + tmp1="["+driver+","+str+"]"; + ); + tmp1=replace(tmp1,"cl=","colorlinks="); + tmp1=replace(tmp1,"lc=","linkcolor="); + tmp1=replace(tmp1,"fc=","filecolor="); + tmp1=replace(tmp1,"uc=","urlcolor="); + ADDPACK=select(ADDPACK,indexof(#,"hyperref")==0); + Addpackage(tmp1+"{hyperref}"); + tmp=indexof(tmp1,"linkcolor=");//180813from + tmp1=substring(tmp1,tmp-1,length(tmp1)); + tmp=indexof(tmp1,"="); + tmp1=substring(tmp1,tmp,length(tmp1)); + tmp=indexof(tmp1,","); + if(length(tmp)>0, + tmp1=substring(tmp1,0,tmp-1); + );//180813to + LinkColor=tmp1; + LinkPosH=125; + LinkPosV=73;//180524 + 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)); +// ); + forall(eqL, + tmp=Indexall(#,"=");//180524from + if(length(tmp)==1, + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp_1,length(#)); + tmp2=parse(tmp2); + if(tmp1=="P", + LinkPosH=tmp2_1; + LinkPosV=tmp2_2; + ); + if(tmp1=="S", + LinkSize=max(tmp2,0.1); + ); + );//180524to + ); +); //17.12.16to +////%Setslidehyper end//// + +////%Settitle start//// +Settitle(cmdL):=Settitle("",cmdL,[]); // 180608from +Settitle(Arg1,Arg2):=( + if(isstring(Arg1), + Settitle(Arg1,Arg2,[]); + , + Settitle("",Arg1,Arg2); + ); +); // 180608to +Settitle(titleold,cmdL,options):=( +//help:Settitle(cmdL); +//help:Settitle(name,cmdL); +//help:Settitle(options=["Title=slide0","Layery=0","Color=blue"]); + regional(tmp,tmp1,tmp2,eqL,layery,color,size,font); + TitleName="slide0"; //180330 + if(length(titleold)>0,TitleName=titleold);//180608 + layery="0"; + color="blue"; + size="\Large"; + font="\bf"; +// tmp=Divoptions(options); +// eqL=tmp_5; + eqL=options; //180602 + 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); + ); + if(tmp1=="T", //180330 + TitleName=tmp2; + ); + ); + 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}","","}"]); +); +////%Settitle end//// + +////%Maketitle start//// +Maketitle():=( + if(!isstring(TitleName), //17.04.13from + drawtext(mouse().xy,"Settitle not defined", + size->24,color->[1,0,0]); + , //17.04.13until + Maketitle(TitleName); + ); +); +Maketitle(name):=( +//help:Maketitle(); + regional(texfile,texmain,tmp,tmp1,sep,txtfile); + 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.13until + ); + println(SCEOUTPUT,tmp); + tmp="\special{papersize=\the\paperwidth,\the\paperheight}"; + println(SCEOUTPUT,tmp); + tmp=replace(Dirhead,"\","/");//17.11.01from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + 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}"); + );//17.11.01until + 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}"); //190222 + 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(); + txtfile=Cindyname()+".txt"; //180815from + if(!isexists(Dircdy,txtfile), + setdirectory(Dircdy); + SCEOUTPUT=openfile(txtfile); + println(SCEOUTPUT,"title::"+name+"//"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"%%%%%%%%%%%%%%%%//"); + println(SCEOUTPUT,"main::"+PaO()+"title)//"); + println(SCEOUTPUT,"\slidepage[m]//"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"%%%%%%%%%%%%%%%%//"); + println(SCEOUTPUT,"new::"+PaO()+"title)//"); + println(SCEOUTPUT,"%repeat=1,para//"); + println(SCEOUTPUT,"\slidepage//"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"layer::{120}{0}//"); + println(SCEOUTPUT,"%%putnote::s{65}{5}:://"); + println(SCEOUTPUT,"end//"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"itemize//"); + println(SCEOUTPUT,"item//"); + println(SCEOUTPUT,"end//"); + closefile(SCEOUTPUT); + setdirectory(Dirwork); //180815to + ); +); +////%Maketitle end//// + +////%Repeatsameslide start//// +Repeatsameslide(repeatflg,sestr,addedL):=( + regional(seL,flg1,ss,nn,nrep,tmp,tmp1,tmp2,tmp3,str,j,k); + // global RepeatList, SCEOUTPUT, NonThinFlg + 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 + if(substring(str,0,16)=="\begin{minipage}",MiniFlg=1);//180526 + 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.28to + if(contains(seL,1), + if(substring(str,0,1)!="%", + if(NonThinFlg==0, + if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 + if(MiniFlg==0, //180526from + println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}%");//180701 + println(SCEOUTPUT,str); + println(SCEOUTPUT,"}%"); + , + println(SCEOUTPUT,str); + if(indexof(str,"\end{minipage}")>0, //180526from + println(SCEOUTPUT,"}%"); + ); + ); //180526to + , + println(SCEOUTPUT,str); + if(indexof(str,"\end{minipage}")>0, //180526from + println(SCEOUTPUT,"}%"); + MiniFlg=0; + ); + ); + ); + if(NonThinFlg==1, + if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 + println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}%");//180701 + println(SCEOUTPUT,str); + , + println(SCEOUTPUT,str); + if(indexof(str,"\end{minipage}")>0, //180526from + println(SCEOUTPUT,"}%"); + MiniFlg=0; + ); + ); + ); + if(NonThinFlg==2, + println(SCEOUTPUT,str); + if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 + println(SCEOUTPUT,"}%"); + , //180526from + if(indexof(str,"\end{minipage}")>0, + println(SCEOUTPUT,"}%"); + MiniFlg=0; + ); //180526from + ); + ); + seL=remove(seL,[1]); + ); + ); + if(substring(ss,0,1)!="%", //16.01.04 + forall(1..(length(seL)),nn, + if(substring(str,0,16)=="\begin{minipage}",MiniFlg=1);//180526 + tmp=seL_nn; + if(NonThinFlg==0, + if(!contains(["\begi","\end{"],substring(str,0,5)),//180526from + if(MiniFlg==0, + tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}%";//180701 + tmp1=[tmp1,str,"}%"]; + , + tmp1=[str]; + if(indexof(str,"\end{minipage}")>0, //180526from + tmp1=append(tmp1,"}%"); + ); + ); + , + tmp1=[str]; + if(indexof(str,"\end{minipage}")>0, + tmp1=append(tmp1,"}%"); + MiniFlg=0; + ); + ); + ); + if(NonThinFlg==1, + if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 + tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}%";//180701 + tmp1=[tmp1,str]; + , + tmp1=[str]; + if(indexof(str,"\end{minipage}")>0, + tmp1=append(tmp1,"}%"); + MiniFlg=0; + ); + ); + ); + if(NonThinFlg==2, + tmp1=[str]; + if(!contains(["\begi","\end{"],substring(str,0,5)), + tmp1=append(tmp1,"}%"); + , + if(indexof(str,"\end{minipage}")>0, + tmp1=append(tmp1,"}%"); + MiniFlg=0; + ); + ); + ); + RepeatList_tmp=concat( RepeatList_tmp,tmp1); + ); + ); + );//16.01.05to + ); + );//16.12.05to +); +////%Repeatsameslide end//// + +////%Presentation start//// +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); + MiniFlg=0;//180526 + 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); //181125from + tmp=readfile2str(Dirwork,tmp1); + tmp=replace(tmp,"////","||||"); + tmp=replace(tmp,"/L"+"F/::","::"); + tmp=replace(tmp,"///L"+"F/","/L"+"F/"); + slideL=tokenize(tmp,"/L"+"F/"); //181125to + 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.11until + 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.09until + 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 + tmp=substring(tmp3_1,0,1);//180330 + if((tmp!="\")&(tmp!="%")&(indexof(tmp3_1,"=")==0), //180330 + wall=tmp3_1; + tmp3=tmp3_(2..length(tmp3)); + ); + );//16.06.25until + 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.13until + ); + 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.18until +// 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 + , + println(SCEOUTPUT,"\special{papersize=\the\paperwidth,\the\paperheight}"); + );// 17.04.08until + tmp=replace(Dirhead,"\","/");//17.11.01from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}"); + ); + if(length(wall)==0, + tmp=replace(Dirhead,"\","/");//17.11.01from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketslide}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide}"); + ); + , + tmp=replace(Dirhead,"\","/"); + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketslide2}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketslide2}"); + ); + );//17.04.08until + 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{color}");//190222 + letterc=[0.98,0.13,0,0.43]; boxc=[0,0.32,0.52,0]; + shadowc=[0,0,0,0.5]; mboxc="yellow"; + 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.07until + SlideColorList_#="slidecolor"+tmp4_#; + ); + ); + println(SCEOUTPUT,"\def\setthin#1{\def\thin{#1}}");//17.08.23 + println(SCEOUTPUT,"\setthin{"+text(ThinDense)+"}");//17.08.23 + println(SCEOUTPUT,"\newcommand{\slidepage}[1][s]{%");//180524from + println(SCEOUTPUT,"\setcounter{ketpicctra}{18}%"); + println(SCEOUTPUT,"\if#1m \setcounter{ketpicctra}{1}\fi"); + println(SCEOUTPUT,"\hypersetup{linkcolor=black}%"); + println(SCEOUTPUT,"");//180908 + println(SCEOUTPUT,"\begin{layer}{118}{0}"); + println(SCEOUTPUT,"\putnotee{122}{-\theketpicctra.05}{\small\thepage/\pageref{pageend}}"); + println(SCEOUTPUT,"\end{layer}\hypersetup{linkcolor="+LinkColor+"}"); + println(SCEOUTPUT,"");//180908 + println(SCEOUTPUT,"}");//189524to + forall(ADDPACK,// 16.06.09from + println(SCEOUTPUT,"\usepackage"+#); + );// 16.06.09to + tmp=select(ADDPACK,indexof(#,"{hyperref}")>0);//16.12.31from + if(length(tmp)>0, + hyperflg=1; + , + hyperflg=0; //16.12.31until + ); + forall(tmp3, + println(SCEOUTPUT,#); + ); + if(indexof(PathT,"platex")>0, //180903,180908from + tmp="\setmargin{"+text(25+SlideMargin_1)+"}{"; + tmp=tmp+text(145-SlideMargin_1)+"}{"; + tmp=tmp+text(15+SlideMargin_2)+"}{"; + tmp=tmp+text(100-SlideMargin_2)+"}"; + , + tmp="\setmargin{"+text(20+SlideMargin_1)+"}{"; + tmp=tmp+text(135-SlideMargin_1)+"}{"; + tmp=tmp+text(15+SlideMargin_2)+"}{"; + tmp=tmp+text(100-SlideMargin_2)+"}"; + ); // 180903,180908to + println(SCEOUTPUT,""); + println(SCEOUTPUT,tmp); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\ketslideinit"); + println(SCEOUTPUT,""); + forall(tmp, // 15.07.21 + if(substring(#,0,1)=="\", println(SCEOUTPUT,#)); + ); +// if(!isstring(PageStyle),PageStyle="headings");//180524from +// println(SCEOUTPUT,"\pagestyle{"+PageStyle+"}"); + println(SCEOUTPUT,"\pagestyle{empty}");//180524to + 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.11until + ); + 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.22until + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\color{"+SlideColorList_(15)+"}"); + println(SCEOUTPUT,BodyStyle);//17.01.07 +// println(SCEOUTPUT,"\thispagestyle{empty}");//180524 + 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; + ); + 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.03until + 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}",""]);//180524 + 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.03until + ); + 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.29until + parafiles=select(parafiles,indexof(#,".tex")>0); + parafiles=sort(parafiles); //180627 + 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); + parafiles=sort(parafiles); //180627 + ); + 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}",""]);//180524 + 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.31to + 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); + tmp=tmp2; //180526from + tmp3=[text(LinkPosH-29*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" + +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) + +"}{\scriptsize $\mathstrut||\!\lhd$}}}}}"]; + if(nrep>1,//180526 + tmp="{"+text(LinkPosV)+"}{\hyperlink{para"; // 17.01.12from + tmp1=tmp+text(paractr)+"pg"; + tmp2=tmp+text(paractr-1)+"pg"+text(nrepprev); + tmp=tmp1+text(1); + tmp3=append(tmp3, + text(LinkPosH-24*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" + +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) + +"}{\scriptsize $\mathstrut|\!\lhd$}}}}}"); //180526to + 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\!\!$}}}}}"); + if(#<nrep,tmp=tmp1+text(#+1),tmp=tmp1+text(nrep)); + tmp3=append(tmp3, + text(LinkPosH-10*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" + +text(4.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) + +"}{\scriptsize $\mathstrut\!\rhd\!$}}}}}"); + tmp=tmp1+text(nrep); //180526from + tmp3=append(tmp3, + text(LinkPosH-5*LinkSize)+"}"+tmp+"}{\fbox{\Ctab{" // 17.01.19 + +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) + +"}{\scriptsize $\mathstrut \!\rhd\!\!|$}}}}}"); + ); + tmp="{"+text(LinkPosV)+"}{\hyperlink{para"; //180529[2lines] + tmp=tmp+text(paractr+1)+"pg"+text(1); + tmp3=append(tmp3, + text(LinkPosH)+"}"+tmp+"}{\fbox{\Ctab{" // 17.01.19 + +text(2.5*LinkSize)+"mm}{\scalebox{"+text(LinkSize) + +"}{\scriptsize $\mathstrut \!\rhd\!\!||$}}}}}"); //180526to + ); + tmp3=apply(tmp3,tmp,"\putnotew{"+tmp); + tmp4=concat(tmp4,tmp3);// 17.01.12to + tmp="\putnotee{"+text(LinkPosH+1)+"}{"+text(LinkPosV)+"}";//180524 + tmp=tmp+"{\scriptsize\color{blue} "+text(#)+"/"+text(nrep)+"}"; //180524[blue] + tmp4=append(tmp4,tmp); + tmp4=concat(tmp4,["\end{layer}",""]);//16.12.31until + Repeatsameslide(repeatflg,text([#]),tmp4); + ); + ); + ); + if(substring(sld,0,2)=="%%", //17.06.23from + println(SCEOUTPUT,sld); + flg=1; + ); //17.06.23to + 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.28until + 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.09until + 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,""); + 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}",""]);//180524 + 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,""); //180524 + 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.28until + 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"&(length(flgL)>0), //180526 + 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.28until + 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.28until + 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,"\label{pageend}\mbox{}"); //180529 + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\end{document}"); + closefile(SCEOUTPUT); +); +////%Presentation end//// + +////%Mkslides start//// +Mkslides():=( + regional(store,sep,parent,texparentorg,tmp,tmp1,tmp2,tmp3,tmp4,flg); + store=Fillblack();//181125 + tmp4=Fhead; + Fhead=""; + if(!iswindows(), //17.10.13 + Dirwork=replace(Dirwork,"\",pathsep()); + parent=replace(Dirwork+Shellparent,"\",pathsep()); + , + Dirwork=replace(Dirwork,"/",pathsep()); + parent=replace(Dirwork+Batparent,"/",pathsep());// 16.05.29 + ); + tmp=replace(Dirwork,pathsep()+"fig","");//180604[2lines] + Changework(tmp); + Setdirectory(Dirwork); + if(!iswindows(), //180604from + println(setexec(Dirwork,Shellparent)); + ); //180604to + 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.10until + 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.12until + Presentation(Texparent); // 15.08.14to + if(iswindows(), + tmp2=Batparent; + parent=replace(Dirwork+Batparent,sep+"fig","");// 16.05.29 + if(indexof(Pathpdf,"Adobe")>0, //17.12.09from + Makebat(Texparent,"ttv"); + , + Makebat(Texparent,"tv"); + ); //17.12.09until + kc():=( + println("kc : "+kc(parent,Dirlib,Fnametex)); // 16.06.10, 17.02.19 + ); + kc(); + Batparent=tmp2; + , + tmp2=Shellparent; + parent=replace(Dirwork+Shellparent,sep+"fig","");// 16.05.29 + Shellparent=replace(Shellparent,sep+"fig",""); + if(indexof(Pathpdf,"Adobe")>0, //17.12.09from + Makeshell(Texparent,"ttv"); + , + Makeshell(Texparent,"tv"); + ); //17.12.09until + kc():=( + println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); // 16.06.10 + ); + kc(); + Shellparent=tmp2; + ); + ); + Dirwork=Dirwork+pathsep()+"fig"; //17.10.16 + setdirectory(Dirwork); + Fhead=tmp4; + Texparent=texparentorg;//17.04.10 + Fillrestore(store);//181125 +); +////%Mkslides end//// + +////%Mkslidesummary start//// +Mkslidesummary():=( // 17.10.26 for R + regional(texparentorg); + texparentorg=Texparent; + if(isstring(Slidename), + Texparent=Slidename; + ); + Mkslidesummary(Texparent,Texparent+"digest",["m","Wait=3"]); + Texparent=texparentorg; +); +Mkslidesummary(fin,fout):= + Mkslidesummary(fin,fout,["m","Wait=3"]); +Mkslidesummary(inputfile,outputfile,options):=( +//help:Mkslidesummary(fin,fout,options); + regional(store,fin,fout,out,figflg,dirworkorg,dirtop,tmp); + store=Fillblack();//181125 + dirworkorg=Dirwork;//17.04.10from + dirtop=replace(Dirwork,pathsep()+"fig",""); + Changework(dirtop);//17.04.10uptp + if(ismacosx(), //180604from + println(setexec(Dirwork,Shellparent)); + ); //180604to + fin=inputfile; + if(indexof(fin,".")==0,fin=fin+".tex"); + fout=outputfile; + if(indexof(fout,".")==0,fout=fout+".tex"); + cmdL=[ + "Dt=readLines"+PaO()+"'"+fin+"',encoding='UTF-8')",[], + "num=grep"+PaO()+"'hypertarget',Dt,fixed=TRUE)",[], //180412 + "Dt=Dt[setdiff"+PaO()+"1:length"+PaO()+"Dt),num)]",[], + "Smain=c"+PPa("")+";Snew=c"+PPa("")+";Ssame=c"+PPa(""),[], + "for"+PaO()+"J in 1:length"+PaO()+"Dt)){",[], + " Tmp=length"+PaO()+"grep"+PaO()+"'mainslide{',Dt[J],fixed=TRUE))",[], //180412 + " if"+PaO()+"Tmp>0){Smain=c"+PaO()+"Smain,1)}else{Smain=c"+PaO()+"Smain,0)}",[], + " Tmp=length"+PaO()+"grep"+PaO()+"'newslide{',Dt[J],fixed=TRUE))",[], //180412 + " if"+PaO()+"Tmp>0){Snew=c"+PaO()+"Snew,1)}else{Snew=c"+PaO()+"Snew,0)}",[], + " Tmp=length"+PaO()+"grep"+PaO()+"'sameslide',Dt[J],fixed=TRUE))",[], //180412 + " if"+PaO()+"Tmp>0){Ssame=c"+PaO()+"Ssame,1)}else{Ssame=c"+PaO()+"Ssame,0)}",[], + "}",[], + "Nnew=c"+PPa("")+";Nsame=c"+PPa(""),[], + "for"+PaO()+"J in 1:length"+PaO()+"Dt)){",[], + " if"+PaO(2)+"Snew[J]==1)|"+PaO()+"Smain[J]==1)){Nnew=c"+PaO()+"Nnew,J)}",[], + " if"+PaO()+"Ssame[J]==1){Nsame=c"+PaO()+"Nsame,J)}",[], + "}",[], + "Out=Dt[1:Nnew[1]]",[], + "for"+PaO()+"J in Looprange"+PaO()+"2,length"+PaO()+"Nnew))){",[], + " Tmp=max"+PaO()+"c"+PaO()+"1,Nsame[Nsame<Nnew[J]]))",[], + " Tmp=max"+PaO()+"c"+PaO()+"Tmp,Nnew[J-1]))+1",[], + " Out=c"+PaO()+"Out,Dt[Tmp:Nnew[J]])",[], + "}",[], + "Tmp=max"+PaO()+"c"+PaO()+"Nsame[-1],Nnew[-1]))+1",[], + "Out=c"+PaO()+"Out,Dt[Tmp:length"+PaO()+"Dt)])",[], + "writeLines"+PaO()+"Out,'"+fout+"',sep='\n')",[] //180412[2lines removed] + ]; + CalcbyR("",cmdL,append(options,"Cat=n"));//180412 + 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 + Fillstore(store);//181125 +); +////%Mkslidesummary end//// + +////%BBdata start//// +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,1)); //181111 + 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"; + , + if(ismacosx(), //181219 + kcfile="kc.command"; + , + 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 "+Dqq(path)); //190414 + tmp=replace(PathT,"pdflatex","extractbb"); //16.11.22 + tmp=replace(tmp,"pdftex","extractbb"); //16.11.22 + tmp=replace(tmp,"xelatex","extractbb"); + tmp=replace(tmp,"uplatex","extractbb"); //17.09.20 + 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 +); +////%BBdata end//// + +////%Gcd start//// //190623 +Gcd(xL):=Gcd(xL,100); +Gcd(xL,nmx):=( +//help:Gcd([12,18,24]); +//help:Gcd(xlist,max<100>); + regional(mL,ng,tmp); + ng=nmx; + mL=apply(xL,mod(abs(#),ng)); + while(sum(mL)>0, + ng=ng-1; + mL=apply(xL,mod(abs(#),ng)); + ); + ng; +); +////%Gcd end//// + +////%Fracform start//// //190623 +Fracform(x):=Fracform(x,5); +Fracform(x,denorg):=( +//help:Fracform(1.3); +//help:Fracform(1.3,[denomlist]); + regional(den,fL,tmp,nn,mm,err); + den=denorg; + if(islist(den), + if(!contains(den,1), den=prepend(1,den)); + , + den=1..den; + ); + fL=[]; + forall(den, + tmp=round(x*#); + fL=append(fL,[tmp,#,abs(tmp/#-x)]); + ); + fL=sort(fL,#_3); + tmp=fL_1; + mm=tmp_1; nn=tmp_2; err=tmp_3; + if(nn>1, + out="fr("+text(mm)+","+text(nn)+")"; + , + out=text(mm); + ); + [out,"err="+format(err,6)]; +); +////%Fracform end//// + +////%Totexformpart start//// +Totexformpart(str):=( //190514 + regional(plv,funL,repL,flg,flgf,nall,nn,fun,funf, + frL,fr,out,tmp,tmp1,tmp2,tmp3,tmp4); + repL=[ //190515from + ["frac",["","\frac{xx}{yy}"]], + ["log",["\log{xx}","\log_{xx} yy"]], + ["sqrt",["\sqrt{xx}","\sqrt[xx]{yy}"]], + ["pow",["","{xx}^{yy}"]], + ["sin",["\sin{xx}","\sin^{xx}{yy}"]], //190522from + ["cos",["\cos{xx}","\cos^{xx}{yy}"]], + ["tan",["\tan{xx}","\tan^{xx}{yy}"]] //190522to + ]; + funL=apply(repL,substring(#_1,0,2)); //190515to + out=""; + plv=Bracket(str,"()"); + nall=length(plv); + if(nall>0, + frL=[]; + forall(1..nall,nn, + tmp1=plv_nn; + if(tmp1_2>0, + fun=""; + flgf=0; + forall(1..20, + if(flgf==0, + tmp2=tmp1_1; + tmp=substring(str,tmp2-#-1,tmp2-#); + if((tmp>="a")&(tmp<="z"), + fun=tmp+fun; + , + flgf=1; + ); + ); + ); + tmp=substring(fun,0,2); //190515from + if(contains(funL,tmp), + tmp=select(repL,substring(#_1,0,2)==tmp); + funf=tmp_1_1; //190515to + tmp=select(plv,(#_1>tmp1_1)&(#_2==-tmp1_2)); + tmp=tmp_1_1-1; + frL=append(frL,[fun,funf,tmp1_1,tmp,tmp1_2]); + ); + ); + ); + if(length(frL)>0, + frL=sort(frL,[-#_5]); + fr=frL_1; + fun=fr_1; funf=fr_2; + tmp1=substring(str,fr_3,fr_4); + tmp=select(repL,#_1==funf); + tmp=tmp_1; + tmp2=tmp_2; + tmp=Strsplit(tmp1,","); //190515from + nn=length(tmp); + if(nn==1, + tmp2=Assign(tmp2_1,["xx",tmp_1]); + ); + if(nn==2, + tmp2=Assign(tmp2_2,["xx",tmp_1,"yy",tmp_2]); + ); //190515to + nn=fr_3-length(fun); + tmp=substring(str,0,nn-1); + out=tmp+tmp2+substring(str,fr_4+1,length(str)); + , + out=""; + ); + ); + out; +); +////%Totexformpart end//// + +////%Totexform start//// +Totexform(str):=( //190514 +//help:Totexform("frac(2,3)"); + regional(out,plv,flg,nn,tmp,tmp1); + out=replace(str," ","\ "); + out=replace(str,"*"," "); + plv=Bracket(out,"()"); //190515from + flg=0; //190521from + if(length(plv)==0, + flg=4; //190522 + ); + if(flg==0, //190521to + tmp=Indexall(out,"("); //190522from + tmp1=Indexall(out,")"); + if(length(tmp)>length(tmp1), + flg=2; + out=out+"?+)?"; + ); + if(length(tmp)<length(tmp1), + flg=3; + out=out+"?)-?"; + ); //190522to + forall(1..20, + if(flg==0, + tmp=Totexformpart(out); + if(length(tmp)==0, + flg=1; + , + out=tmp; + ); + ); + ); + ); + if(flg<=1, + out=replace(out,"+-","\pm "); + out=replace(out,"-+","\mp "); + out=replace(out,"<=","\leq "); + out=replace(out,">=","\geq "); + out=Assign(out,["pi","\pi"]); //190521 + tmp1=Indexall(out,"^"); + forall(tmp1,nn, + if(substring(out,nn,nn+1)=="(", + tmp2=Bracket(substring(out,nn,length(out)),"()"); + tmp2=select(tmp2,#_2==-1); + tmp2=tmp2_1_1+nn; + tmp=substring(out,nn+1,tmp2-1); + out=substring(out,0,nn)+"{"+tmp+"}"; + out=out+substring(out,tmp2,length(out)); + ); + ); + ); + out; +); +////%Totexform end//// + +////%Tocindyformpart start//// +Tocindyformpart(str):=( //190521 + regional(plv,funL,repL,flg,flgf,nall,nn,fun,funf, + frL,fr,out,tmp,tmp1,tmp2,tmp3,tmp4); + repL=[ //190515from + ["frac",["","{xx}/{yy}"]], + ["log",["log{xx}","log{yy}/log{xx}"]], + ["sqrt",["sqrt{xx}","{yy}^(1/{xx})"]], //190522 + ["pow",["","{xx}^{yy}"]], + ["sin",["sin{xx}","{sin{yy}}^{xx}"]], //190522from + ["cos",["cos{xx}","{cos{yy}}^{xx}"]], + ["tan",["tan{xx}","{tan{yy}}^{xx}"]] //190522to + ]; + funL=apply(repL,substring(#_1,0,2)); //190515to + out=""; + plv=Bracket(str,"()"); + nall=length(plv); + if(nall>0, + frL=[]; + forall(1..nall,nn, + tmp1=plv_nn; + if(tmp1_2>0, + fun=""; + flgf=0; + forall(1..20, + if(flgf==0, + tmp2=tmp1_1; + tmp=substring(str,tmp2-#-1,tmp2-#); + if((tmp>="a")&(tmp<="z"), + fun=tmp+fun; + , + flgf=1; + ); + ); + ); + tmp=substring(fun,0,2); //190515from + if(contains(funL,tmp), + tmp=select(repL,substring(#_1,0,2)==tmp); + funf=tmp_1_1; //190515to + tmp=select(plv,(#_1>tmp1_1)&(#_2==-tmp1_2)); + tmp=tmp_1_1-1; + frL=append(frL,[fun,funf,tmp1_1,tmp,tmp1_2]); + ); + ); + ); + if(length(frL)>0, + frL=sort(frL,[-#_5]); + fr=frL_1; + fun=fr_1; funf=fr_2; + tmp1=substring(str,fr_3,fr_4); + tmp=select(repL,#_1==funf); + tmp=tmp_1; + tmp2=tmp_2; + tmp=Strsplit(tmp1,","); //190515from + nn=length(tmp); + if(nn==1, + tmp2=Assign(tmp2_1,["xx",tmp_1]); + ); + if(nn==2, + tmp2=Assign(tmp2_2,["xx",tmp_1,"yy",tmp_2]); + ); //190515to + nn=fr_3-length(fun); + tmp=substring(str,0,nn-1); + out=tmp+tmp2+substring(str,fr_4+1,length(str)); + , + out=""; + ); + ); + out; +); +////%Tocindyformpart end//// + +////%Tocindyform start//// +Tocindyform(str):=( //190521 +//help:Tocindyform("frac(2,3)"); + regional(out,plv,flg,nn,tmp,tmp1); + out=str; + plv=Bracket(out,"()"); + flg=0; + if(length(plv)==0, + flg=4; //190522 + ); + if(flg==0, + tmp=Indexall(out,"("); //190522from + tmp1=Indexall(out,")"); + if(length(tmp)>length(tmp1), + flg=2; + out=out+"?+)?"; + ); + if(length(tmp)<length(tmp1), + flg=3; + out=out+"?)-?"; + ); //190522to + forall(1..20, + if(flg==0, + tmp=Tocindyformpart(out); + if(length(tmp)==0, + flg=1; + , + out=tmp; + ); + ); + ); + ); + if(flg<=1, + tmp1=Indexall(out,"^"); + forall(tmp1,nn, + if(substring(out,nn,nn+1)=="(", + tmp2=Bracket(substring(out,nn,length(out)),"()"); + tmp2=select(tmp2,#_2==-1); + tmp2=tmp2_1_1+nn; + tmp=substring(out,nn+1,tmp2-1); + out=substring(out,0,nn)+"{"+tmp+"}"; + out=out+substring(out,tmp2,length(out)); + ); + ); + ); + out=replace(out,"{","("); + out=replace(out,"}",")"); + out; +); +////%Tocindyform end//// + +////%Animepar start//// //190524 +Animepar(start,ratio,stop):=Animationparam(start,ratio,stop); +////%Animepar end//// + +////%Animationparam start//// +Animationparam(start,ratio,stop):=( //190524 +//help:Animationparam(S.x,5,30); +//help:Animationparam(0,5,[-100,100]); +// Animeflg,sstart,Dirflg,Current,sorg are used in animation buttons + regional(rng); + if(islist(stop),rng=stop,rng=[start,stop]); + if(isreal(Animeflg), + if(Animeflg==1, + sstart=Dirflg*ratio*seconds()+sorg; + ); + , + Current=start; + sstart=start; + ); + if((sstart<=rng_1)%(sstart>=rng_2), //190528 + if(sstart<=rng_1,sstart=rng_1, sstart=rng_2); //190528 + stopanimation(); + ); + sstart; +); +////%Animationparam end//// + +////%Copyketcindyjs start//// 190128 +Copyketcindyjs():=( + regional(tmp,tmp1,tmp2,drive,fname); + if(iswindows(), + drive="C:"; + fname=Dirhead; + tmp=indexof(fname,":"); + if(tmp>0, + drive=substring(Dirwork,0,tmp); + fname=substring(fname,tmp,length(fname)); + ); + kc():=( + println("kc : "+kc(Dirwork+Batparent,Dirlib,Fnametex)); // 16.06.04 + ); + SCEOUTPUT = openfile(Batparent); + println(SCEOUTPUT,drive); + println(SCEOUTPUT,"cd "+Dqq(fname)); + println(SCEOUTPUT,"set xcp="+Dqq("\Windows\System32\xcopy")); + tmp1=Dqq("%xcp%")+" /Y /Q /S /E /R "+Dqq("ketcindyjs\"); + tmp2=" "+Dqq(Dircdy+"ketcindyjs\"); + println(SCEOUTPUT,tmp1+"Cindy.js.map"+tmp2); + println(SCEOUTPUT,tmp1+"webfont.js"+tmp2); + println(SCEOUTPUT,tmp1+"katex-plugin.js"+tmp2); + println(SCEOUTPUT,tmp1+"Cindy.js"+tmp2); + println(SCEOUTPUT,tmp1+"CindyJS.css"+tmp2); + tmp1=Dqq("%xcp%")+" /Y /Q /S /E /R "+Dqq("ketcindyjs\katex\"); + tmp2=" "+Dqq(Dircdy+"ketcindyjs\katex\"); + println(SCEOUTPUT,tmp1+"katex.min.css"+tmp2); + println(SCEOUTPUT,tmp1+"katex.min.js"+tmp2); + tmp1=Dqq("%xcp%")+" /Y /Q /S /E /R "+Dqq("ketcindyjs\katex\fonts\"); + tmp2=" "+Dqq(Dircdy+"ketcindyjs\katex\fonts\"); + println(SCEOUTPUT,tmp1+"KaTeX_Main-Regular.ttf"+tmp2); + println(SCEOUTPUT,tmp1+"KaTeX_Main-Regular.woff"+tmp2); + println(SCEOUTPUT,tmp1+"KaTeX_Main-Regular.woff2"+tmp2); + println(SCEOUTPUT,tmp1+"KaTeX_Math-Italic.ttf"+tmp2); + println(SCEOUTPUT,tmp1+"KaTeX_Math-Italic.woff"+tmp2); + println(SCEOUTPUT,tmp1+"KaTeX_Math-Italic.woff2"+tmp2); + println(SCEOUTPUT,"exit 0"); + closefile(SCEOUTPUT); + , + kc():=( + println("kc : "+kc(Dirwork+Shellparent,Mackc+Dirlib,Fnametex)); + ); + tmp1=Dircdy; //190214from + if(substring(tmp1,length(tmp1)-1,length(tmp1))=="/", + tmp1=substring(tmp1,0,length(tmp1)-1); + ); //190214to + SCEOUTPUT = openfile(Shellparent); + println(SCEOUTPUT,"#!/bin/sh"); + println(SCEOUTPUT,"cd "+Dqq(tmp1+"/")); //190214from + println(SCEOUTPUT,"mkdir ketcindyjs"); + println(SCEOUTPUT,"cd "+Dqq(Dirhead+"/ketcindyjs")); + println(SCEOUTPUT,"cp -r -p katex "+tmp1+"/ketcindyjs"); + println(SCEOUTPUT,"cp -p Cindy.js "+tmp1+"/ketcindyjs"); + println(SCEOUTPUT,"cp -p Cindy.js.map "+tmp1+"/ketcindyjs"); + println(SCEOUTPUT,"cp -p CindyJS.css "+tmp1+"/ketcindyjs"); + println(SCEOUTPUT,"cp -p katex-plugin.js "+tmp1+"/ketcindyjs"); + println(SCEOUTPUT,"cp -p webfont.js "+tmp1+"/ketcindyjs"); //190214to + println(SCEOUTPUT,"exit 0"); + closefile(SCEOUTPUT); + ); + kc(); +); +////%Copyketcindyjs end//// + +////%Ketjsoption start//// 190201 +Ketjsoption():=Setketcindyjs(); +Ketjsoption(list):=Setketcindyjs(list); +////%Ketjsoption end//// + +////%Setketcindyjs start//// 190201 +Setketcindyjs():=( + KETJSOP; +); +Setketcindyjs(list):=( +//help:Setketcindyjs(); +//help:Setketcindyjs(["Local=(n)","Scale=(1)","Nolabel=[](or all)","Color=","Grid="]); +//help:Setketcindyjs(["Removept=[]"]); + KETJSOP=list; + KETJSOP; +); +////%Setketcindyjs end//// + +////%Ketcindyjsdata start//// //190421 +Ketcindyjsdata(datalistorg):=( +//help:Ketcindyjsdata(["ans",ans,"pea[parse]",pea]); + regional(nn,func,tmp,tmp1,tmp2); + datalist=datalistorg; + forall(1..(length(datalist)/2), nn, //190423from + tmp1=datalist_(2*nn-1); + func=""; + tmp=indexof(tmp1,"["); + if(tmp>0, + func=substring(tmp1,tmp,length(tmp1)-1); + tmp1=substring(tmp1,0,tmp-1); + ); + tmp2=datalist_(2*nn); + if(length(func)>0, + forall(1..(length(tmp2)), + tmp=func+"("+Dqq(tmp2_#)+")"; + tmp2_#=parse(tmp); + ); + ); + if(islist(tmp2), + tmp="["; + forall(tmp2, + if(isstring(#), + tmp=tmp+Dqq(#)+","; + , + tmp=tmp+Textformat(#,5)+","; + ); + ); + tmp2=substring(tmp,0,length(tmp)-1)+"]"; + , + tmp2=Dqq(tmp2); + ); + tmp=tmp1+"="+tmp2; + KetcindyjsDataList=append(KetcindyjsDataList,tmp); + ); //190423to +); +Ketcindyjsdata(name,vaL):=( + Ketcindyjsdata([name,vaL]); +); +////%Ketcindyjsdata end//// + +////%Findfun start//// +Findfun(name,lineorg):=( + regional(line,sep,pL,jj,kk,flg,rmv,out,tmp,tmp1,tmp2); + line=Removespace(lineorg); + rmv=[name,"regional","forall","if","text","curkernel","append","concat"]; + rmv=concat(rmv,["append","apply","allelements","indexof"]); + rmv=concat(rmv,["substring","select","isstring","length"]); + rmv=concat(rmv,["round","unicode","openfile","closefile","println","replace"]); + rmv=concat(rmv,["setdirectory","parse","tokenize","import","load","ispoint"]); + rmv=concat(rmv,["isreal","layer","autoclearlayer","drawpoly","allcircles"]); + rmv=concat(rmv,["floor","flatten","prepend","islist","print","mod","abs","sum"]); + rmv=concat(rmv,["cos","sin","tan","arccos","arcsin","arctan","sqrt","reverse","re"]); + rmv=concat(rmv,["sort","contains","max","min","allpoints","isselected","common"]); + rmv=concat(rmv,["inspect","iscircle","alllines","repeat","remove","format"]); + rmv=concat(rmv,["ceil","while","dist","det","exp","err","arctan2","fillpoly"]); + rmv=concat(rmv,["drawtext","mouse","allsegments","createpoint","create"]); + rmv=concat(rmv,["gsave","connect","draw","grestore","wait"]); + +// rmv=concat(rmv,["d","list","c","funN","funP","function","for","return"]); // in string (for R) +// rmv=concat(rmv,["gsub","cat"]); // in string (for R) +// rmv=concat(rmv,["options"]); // written for Windows +// rmv=concat(rmv,["isexists"]); // java functions + + sep=[""," ",",","=","(","+","-","*","/","^","_","[",".","!","&","%",Dq,";",">","<",unicode("0009")]; + out=[]; + if(substring(line,0,2)!="//", + pL=Indexall(line,"("); + forall(pL,jj, + flg=0; + if(contains(pL,jj-1), flg=1); + forall(reverse(1..(jj-1)), + if(flg==0, + if(#==1, + tmp=substring(line,0,1); + if(contains(sep,tmp), + tmp=substring(line,1,jj-1); + , + tmp=substring(line,0,jj-1); + ); + flg=1; + ); + ); + if(flg==0, + tmp=substring(line,#-1,#); + if(contains(sep,tmp), + tmp=substring(line,#,jj-1); + if(indexof(substring(line,0,#-1),"//")==0, + flg=1; + ); + ); + ); + ); + if((flg==1)&(length(tmp)>0), + tmp1=Indexall(line,Dq); //190419from + tmp1=select(tmp1,#<jj); + if(mod(length(tmp1),2)==0, + out=append(out,tmp); + ); //190419 + ); + ); + ); + out=remove(out,rmv); + tmp=out; + out=[]; + forall(tmp, + if(!contains(out,#),out=append(out,#)); + ); + out; +); +////%Findfun end//// + +////%Extractfun start//// +Extractfun(strL):=( + regional(nL,str,str2,start,sep,out,tmp,tmp1,tmp2); + out=[]; + forall(strL,str, + nL=Indexall(str,Dq); + str2=""; + start=0; + forall(1..(length(nL)/2), + tmp1=nL_(2*#-1); + str2=str2+substring(str,start,tmp1-1); + start=nL_(2*#); + ); + str2=str2+substring(str,start,length(str)); + fL=Findfun("csdraw",str2); + out=remove(out,fL); + out=concat(out,fL); + ); +); +////%Extractfun end//// + +//DL1=Readcsv(Dirhead+pathsep()+"ketcindyjs","basic1list.txt"); +//DL2=Readcsv(Dirhead+pathsep()+"ketcindyjs","basic2list.txt"); +//DL=concat(DL1,DL2); +//Out=[]; + +////%Extractall start//// +Extractall(name):=( + regional(fL,jj,tmp,tmp1,tmp2,tmp3,flg); + fL=apply(Out,#_1); + tmp1=select(DL,#_1==name); + if(length(tmp1)>0, + tmp1=tmp1_1; + flg=0; //190417from + forall(IgnoreList,#, + if(flg==0, + tmp2=#; tmp3=length(tmp2); + tmp=indexof(tmp2,"*"); + if(tmp>0, + tmp2=substring(#,0,tmp-1); tmp3=tmp-1; + ); + if(substring(name,0,tmp3)==tmp2, + flg=1; + ); + ); + ); + if(flg==0, //190417to + if(!contains(fL,tmp1), + Out=append(Out,tmp1); + fL=append(fL,tmp1_1); + if(length(tmp1)>=5, + forall(5..(length(tmp1)),jj, + tmp=tmp1_jj; + if(!contains(fL,tmp), + tmp2=Out; + Extractall(tmp); + tmp2=remove(Out,tmp2); + ); + ); + ); + ); + ); //190416 + ); + tmp1=Out; + Out=[]; + forall(1..(length(tmp1)), + if(!contains(Out,tmp1_#), + Out=append(Out,tmp1_#); + ); + ); + Out; +); +////%Extractall end//// + +////%Textedit start//// 190430 +Textedit(no):=( +//help:Textedit(50); + regional(tmp,tmp1,tmp2); + tmp="Text"+text(no)+".currenttext"; + tmp1=parse(tmp); + tmp1; +); +////%Textedit end//// + +////%Textedit2value start//// 190521 +Textedit2value(no):=Textedit2value(no,[]); +Textedit2value(no,options):=( +//help:Textedit2value(50); +//help:Textedit2value(51,["Parse=y/n","Form=c/t/m"]); + regional(str,tmp,tmp1,parseflg,formflg); + parseflg="Y"; + formflg="C"; //190522 + forall(options, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="P", + parseflg=Toupper(substring(tmp_2,0,1)); + ); + if(tmp1=="F", + formflg=Toupper(substring(tmp_2,0,1)); + ); + ); + str=Textedit(no); + str=Removespace(str); + if(formflg=="C", + str=Tocindyform(str); + if(indexof(str,"?")>0,parseflg="N"); //190522 + ); + if(formflg=="T", //190522from + str=Totexform(str); + parseflg="N"; + ); + if(formflg=="M", + str=Tomaxform(str); + parseflg="N"; + ); //190522to + if(length(str)>0, + tmp=Strsplit(str,"="); + if(length(tmp)>1,str=tmp_2); + ); + if(length(str)==0, //190522from + parseflg="N"; + ); //190522from + if(parseflg=="Y", + str=parse(str); //190522 + ); + str; +); +////%Textedit2value end//// + +////%Mkketcindyjs start//// 190115 +Mkketcindyjs():=Mkketcindyjs(KETJSOP); //190129 +Mkketcindyjs(options):=( //17.11.18 +//help:Mkketcindyjs(); +//help:Mkketcindyjs(options=["Local=(y)","Scale=(1)","Nolabel=[]","Color=","Grid="]); +//help:Mkketcindyjs(optionsadd=["Web=(y)","Path=Dircdy","Ignore=","Equal="]); + regional(webflg,localflg,htm,htmorg,from,upto,flg,fL,fun,jj,tmp,tmp1,tmp2,tmp3, + libnameL,libL,lib,jc,nn,name,partL,toppart,lastpart,path,ketflg,flg,cmdL,scale, + nolabel,color,grid,out,Out,igno,onlyflg,rmptL,colorrgb,ptname,eqflg,eqrep); + libnameL=["basic1","basic2","basic3","3d"]; //190416,190428 + webflg="Y"; //190128 texflg removed + localflg="Y"; //190209,0215 + scale=1; //190129 + nolabel=["SW","NE"]; //190129 + color="lightgray"; //190503 + eqflg=0; //190603 + grid=""; + path=Dircdy; + igno=[]; + rmptL=REMOVEPTJS; + forall(options, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(tmp1=="W", + if(length(tmp2)>0, //190209 + webflg=Toupper(substring(tmp2,0,1)); + ); + ); + if(tmp1=="L", + if(length(tmp2)>0, //190209 + localflg=Toupper(substring(tmp2,0,1)); + ); + ); + if(tmp1=="S", + if(length(tmp2)>0, //190209 + scale=parse(tmp2); + ); + ); + if(tmp1=="N", + if(length(tmp2)>0, //190209 + if(Toupper(tmp2)=="ALL", //190405from + tmp2=remove(allpoints(),[SW,NE]); + tmp2=text(tmp2); + ); //190405to + tmp=tmp2; + if(indexof(tmp2,"[")>0, + tmp=substring(tmp2,1,length(tmp2)-1); + ); + tmp=tokenize(tmp,","); + nolabel=concat(nolabel,tmp); + ); + ); + if(tmp1=="C", //190209 + if(length(tmp2)>0, + color=tmp2; + ); + ); + if(tmp1=="G", + if(length(tmp2)>0, + grid=tmp2; + ); + ); + if(tmp1=="E", //190603from + eqflg=1; + if(length(tmp2)>0, + eqrep=tmp2; + , + eqrep=""; + ); + ); //190603to + if(tmp1=="P", + if(!tmp2="Dircdy", + path=tmp2; + ); + ); + if(tmp1=="I", //190417from + if(substring(tmp2,0,1)=="[", + tmp2=substring(tmp2,1,length(tmp2)-1); + igno=tokenize(tmp2,","); + ); + ); //190417to + if(tmp1=="R", //190503from + if(substring(tmp2,0,1)=="[", + tmp2=substring(tmp2,1,length(tmp2)-1); + tmp2=tokenize(tmp2,","); + rmptL=concat(rmptL,tmp2); + ); //190503to + ); //190503to + ); + if(substring(color,0,1)=="[", + tmp=parse(color); + if(length(tmp)==4, + colorrgb=Colorcode("cmyk","rgb",tmp); //190504 + , + colorrgb=color; //190506 + ); + , + colorrgb=Colorname2rgb(color); //190504 + ); //190503to + tmp=apply(colorrgb,round(#*255)); //190504 + tmp=text(tmp); + color=substring(tmp,1,length(tmp)-1); + if((webflg=="N")&(localflg=="Y"), + if(!isexists(Dircdy,"ketcindyjs"), + println(3402);Copyketcindyjs();println(3403); + println("ketcindyjs has been copied"); + ); + ); + if(!isexists(Dircdy,Fhead+".html"), + drawtext(mouse().xy-[0,1],Cdyname()+".html not found",size->24,color->[1,0,0]); + wait(3000); + , + htmorg=Readlines(Dircdy,Fhead+".html"); + tmp=select(1..(length(htmorg)),indexof(htmorg_#,"id="+Dqq("csinit"))>0); //190206from + from=tmp_1+5; + flg=0; + forall(from..(length(htmorg)), + if(flg==0, + if(indexof(htmorg_#,"</script>")>0, + upto=#-1; + flg=1; + ); + ); + ); + tmp2=[]; + ketflg="off"; + onlyflg="off"; //190502 + forall(htmorg_(from..upto), + if(indexof(#,"only ketjs on")>0,onlyflg="on"); //190502 + if(indexof(#,"only ketjs off")>0,onlyflg="off"); //190502 + if(indexof(#,"no ketjs")>0, + if(indexof(#,"no ketjs on")>0, + ketflg="on"; + ); + if(indexof(#,"no ketjs off")>0, + ketflg="off"; + ); + , + if(ketflg=="off", + tmp=Removespace(#); + if(substring(tmp,0,2)!="//", + tmp2=append(tmp2,#); + , + tmp1=indexof(tmp,"only ketjs"); //190430from + if((tmp1>0)%(onlyflg=="on"), //190502 + if(tmp1>0,tmp=substring(#,0,tmp1-1)); //190502 + tmp2=append(tmp2,substring(tmp,2,length(tmp))); + ); //190430to + ); + ); + ); + ); + tmp=select(1..(length(htmorg)),indexof(htmorg_#,"id="+Dqq("csdraw"))>0); + from=tmp_1+1; + flg=0; + forall(from..(length(htmorg)), + if(flg==0, + if(indexof(htmorg_#,"</script>")>0, + upto=#-1; + flg=1; + ); + ); + ); + ketflg="off"; + onlyflg="off"; //190502 + forall(htmorg_(from..upto), + if(indexof(#,"only ketjs on")>0,onlyflg="on"); //190502 + if(indexof(#,"only ketjs off")>0,onlyflg="off"); //190502 + if(indexof(#,"no ketjs")>0, + if(indexof(#,"no ketjs on")>0, + ketflg="on"; + ); + if(indexof(#,"no ketjs off")>0, + ketflg="off"; + ); + , + if(ketflg=="off", + tmp=Removespace(#); + if(substring(tmp,0,2)!="//", + tmp2=append(tmp2,#); + , + tmp1=indexof(tmp,"only ketjs"); //190430from + if((tmp1>0)%(onlyflg=="on"), //190502 + if(tmp1>0,tmp=substring(#,0,tmp1-1)); //190502 + tmp2=append(tmp2,substring(tmp,2,length(tmp))); + ); //190430to + ); + ); + ); + ); + fL=Extractfun(tmp2); //190206to + DL=[]; + forall(libnameL,name, //190209from + tmp2=Readlines(Dirhead+pathsep()+"ketcindyjs",name+"list.txt"); + tmp1=[]; + forall(1..(length(tmp2)),nn, + tmp=Indexall(tmp2_nn,","); + from=0; + tmp3=[]; + forall(tmp, + tmp3=append(tmp3,substring(tmp2_nn,from,#-1)); + from=#; + ); + tmp3=append(tmp3,substring(tmp2_nn,from,length(tmp2_nn))); + tmp1=append(tmp1,tmp3); + ); + DL=concat(DL,tmp1); //DL and Out are necessary for Extractall + ); //190209to + tmp=Readlines(Dirhead+pathsep()+"ketcindyjs","ignoredfun.txt"); //190416from + tmp=apply(tmp,Removespace(#)); //190131 + IgnoreList=select(tmp,(length(#)>0)&(substring(#,0,2)!="//")); //190131//190416to + IgnoreList=concat(IgnoreList,igno); //190417 + Out=[]; // necessary for Extractall + forall(fL,fun, + Extractall(fun); + ); +// tmp1=select(Out,contains(igL,#_1)); //190416 +// Out=remove(Out,tmp1); USEDFUN=apply(Out,#_1); //190130 //190416 + tmp1=select(1..(length(htmorg)),indexof(htmorg_#,"script id=")>0); + partL=[]; + forall(tmp1,nn, + from=nn; + tmp2=htmorg_from; + tmp=Indexall(tmp2,Dq); + name=substring(tmp2,tmp_1,tmp_2-1); + tmp=select((from+1)..(length(htmorg)),indexof(htmorg_#,"</script>")>0); + upto=tmp_1; + partL=append(partL,[name,from,upto]); + ); + tmp=apply(partL,#_2); + tmp=min(tmp)-1; + toppart=[1,tmp]; + tmp=apply(partL,#_3); + tmp=max(tmp)+1; + lastpart=[tmp,length(htmorg)]; + if(webflg=="Y", + tmp1=Fhead+"json.html"; + , + tmp1=Fhead+"jsoff.html"; + if(localflg=="Y",tmp1=replace(tmp1,"off.","offL.")); //190209 + ); + setdirectory(path); + SCEOUTPUT = openfile(tmp1); + tmp1=htmorg_((toppart_1)..(toppart_2)); + if(webflg=="N", + if(localflg=="N", //190128 + tmp3=replace(Dirhead+"/ketcindyjs/",pathsep(),"/"); + tmp= " <link rel="+Dqq("stylesheet")+" href="; + tmp=tmp+Dq+"file:///"+tmp3+"CindyJS.css"+Dq+">"; + tmp1_(length(tmp1)-2)=tmp; + tmp= " <script type="+Dqq("text/javascript")+" src="; + tmp=tmp+Dq+"file:///"+tmp3+"Cindy.js"+Dq+"></script>"; + tmp1_(length(tmp1)-1)=tmp; + tmp=" <script type="+Dqq("text/javascript")+" src="; //190117from + tmp1_(length(tmp1))=""; //190120 + , + tmp1_(length(tmp1)-2)= //190128from + " <link rel="+Dqq("stylesheet")+" href="+Dqq("ketcindyjs/CindyJS.css")+">"; //190203 + tmp1_(length(tmp1)-1)= + " <script type="+Dqq("text/javascript")+" src="+Dqq("ketcindyjs/Cindy.js")+"></script>"; + //190203 + tmp1_(length(tmp1))=""; //190128to + ); + , + tmp1_(length(tmp1))=""; //190117to + ); + forall(tmp1, + println(SCEOUTPUT,#); + ); + tmp="<script id="+Dqq("csinit")+" type="; + tmp=tmp+Dqq("text/x-cindyscript")+">"; + println(SCEOUTPUT,tmp); +// tmp=Readlines(Dirhead+pathsep()+"ketcindyjs","commonused.txt"); +// forall(tmp, +// println(SCEOUTPUT,#); +// ); + libL=[]; //190209from + forall(libnameL, + tmp=Readlines(Dirhead+"/ketlib","ketcindylib"+#+"r.cs"); + libL=append(libL,tmp); + ); //190209to + forall(Out,fun, + libf=fun_2;from=parse(fun_3);upto=parse(fun_4); + tmp=select(1..(length(libnameL)),indexof(libf,libnameL_#)>0); //190209from + tmp=tmp_1; + lib=libL_tmp; + tmp1=lib_(from..upto); //190209from + ketflg="off"; //190122from + onlyflg="off"; //190502 + forall(tmp1, + if(indexof(#,"only ketjs on")>0,onlyflg="on"); //190502 + if(indexof(#,"only ketjs off")>0,onlyflg="off"); //190502 + if(indexof(#,"no ketjs")>0, + if(indexof(#,"no ketjs on")>0, + ketflg="on"; + ); + if(indexof(#,"no ketjs off")>0, + ketflg="off"; + ); + , + if(ketflg=="off", + tmp=Removespace(#); + if(substring(tmp,0,2)!="//", + println(SCEOUTPUT,#); + , + tmp1=indexof(tmp,"only ketjs"); //190430from + if((tmp1>0)%(onlyflg=="on"), //190502 + if(tmp1>0,tmp=substring(#,0,tmp1-1)); //190502 + println(SCEOUTPUT,substring(tmp,2,length(tmp))); + ); //190430to + ); + ); //190122to + ); + ); + ); + tmp=select(partL,#_1=="csinit"); + if(length(tmp)>0, + tmp=tmp_1; + from=tmp_2+5; //190206 + upto=tmp_3; + tmp1=htmorg_((from+1)..(upto-1)); //190119 + ketflg="off"; //190206from + onlyflg="off"; //190502 + forall(tmp1, + if(indexof(#,"only ketjs on")>0,onlyflg="on"); //190502 + if(indexof(#,"only ketjs off")>0,onlyflg="off"); //190502 + if(indexof(#,"no ketjs")>0, + if(indexof(#,"no ketjs on")>0, + ketflg="on"; + ); + if(indexof(#,"no ketjs off")>0, + ketflg="off"; + ); + , + if(ketflg=="off", + tmp=Removespace(#); + if(substring(tmp,0,2)!="//", + println(SCEOUTPUT,#); + , + tmp1=indexof(tmp,"only ketjs"); //19020l6from + if((tmp1>0)%(onlyflg=="on"), //190502 + if(tmp1>0,tmp=substring(#,0,tmp1-1)); //190502 + println(SCEOUTPUT,substring(tmp,2,length(tmp))); + ); //190206to + ); + ); + ); + ); + ); + forall(KetcindyjsDataList, //190422from + println(SCEOUTPUT,#+";"); + ); //190422to + println(SCEOUTPUT,"</script>"); + tmp=select(partL,#_1=="csdraw"); + tmp=tmp_1; + from=tmp_2; + upto=tmp_3; + tmp1=htmorg_(from..upto); + ketflg="off"; //190202from + onlyflg="off"; //190502 + forall(tmp1, + if(indexof(#,"only ketjs on")>0,onlyflg="on"); //190502 + if(indexof(#,"only ketjs off")>0,onlyflg="off"); //190502 + if(indexof(#,"no ketjs")>0, + if(indexof(#,"no ketjs on")>0, + ketflg="on"; + ); + if(indexof(#,"no ketjs off")>0, + ketflg="off"; + ); + , + if(ketflg=="off", + tmp=Removespace(#); + if(substring(tmp,0,2)!="//", + println(SCEOUTPUT,#); + , + tmp1=indexof(tmp,"only ketjs"); //19020l6from + if((tmp1>0)%(onlyflg=="on"), //190502 + if(tmp1>0,tmp=substring(tmp,0,tmp1-1)); //190502 + println(SCEOUTPUT,substring(tmp,2,length(tmp))); //190502 + ); //190206to + ); + ); + ); + ); //190206to + tmp1=htmorg_((lastpart_1)..(lastpart_2)); + tmp=select(1..(length(tmp1)),indexof(tmp1_#,Dqq("cs*"))>0); + tmp=tmp_1; + forall(1..tmp, //190117from + println(SCEOUTPUT,tmp1_#); + ); + from=tmp+1; //190117to + tmp=" use: ["+Dqq("katex")+"],"; + println(SCEOUTPUT,tmp); + out=[]; //190129 + forall(from..(length(tmp1)),jj, + flg=0; //190126from + tmp2=["Figure","Parent","ParaF","Anime","Flip","Title","Slide","Digest", + "KeTJS","KeTJSoff","Objview"]; + if(indexof(tmp1_jj,"type: "+Dqq("Button"))>0, + nn=indexof(tmp1_jj,"text: "); + tmp=substring(tmp1_jj,nn-1,length(tmp1_jj)); + nn=Indexall(tmp,Dq); + tmp=substring(tmp,nn_1,nn_2-1); + if(!contains(tmp2,tmp), + out=append(out,tmp1_jj); //190129 + ); + flg=1; + ); + if(flg==0, + if(indexof(tmp1_jj,"Evaluate")>0, + tmp=replace(tmp1_jj,Dqq("Evaluate"),Dqq("EditableText")); + if(eqflg==1,tmp=replace(tmp,"=",eqrep)); //190604 + out=append(out,tmp); + flg=1; + ); + ); + if(flg==0, + if(indexof(tmp1_jj,"Calculation")>0, + tmp=replace(tmp1_jj,Dqq("Calculation"),Dqq("EditableText")); + if(eqflg==1,tmp=replace(tmp,"=",eqrep)); //190604 + out=append(out,tmp); + flg=1; + ); + ); + tmp=indexall(tmp1_jj,Dq); //190504from + if(length(tmp)>0, + ptname=substring(tmp1_jj,tmp_1,tmp_2-1); + , + ptname=""; + ); + if(flg==0, + if(contains(rmptL,ptname), flg=1); + ); + tmp2=tmp1_jj; + if(length(ptname)>0, + if(indexof(tmp2,"size:")==0, + tmp2=replace(tmp2,"}",", size: 3.0}"); + ); + if(indexof(tmp2,"border:")==0, + tmp2=replace(tmp2,"}",", border: true }"); + ); + ); + if(flg==0, + tmp=Indexof(tmp2,"labeled: "); + if((ptname=="")%(tmp==0), + out=append(out,tmp2); + flg=1; + ); + ); + if(flg==0, + if(contains(["TH","FI"],ptname), + if(SLIDEFLG=="Y", + out=append(out,tmp2); + flg=1; + ); + ); + ); + if(flg==0, + if(contains(nolabel,ptname), + tmp2=replace(tmp2,"labeled: true","labeled: false"); + ); + if((indexof(ptname,"z")>0)%(contains(["NE","SW","TH","FI"],ptname)), + if(indexof(ptname,"z")>0, + tmp2=replace(tmp2,"labeled: true","labeled: false"); + ); + tmp=indexof(tmp2,"color:"); + tmp3=Indexall(tmp2,"],"); + tmp3=select(tmp3,#>tmp); + if(length(tmp3)>0, + tmp3=tmp3_1; + , + tmp3=indexof(tmp2,"]}"); + ); + tmp=substring(tmp2,tmp-1,tmp3); + tmp2=replace(tmp2,tmp,"color: [1.0,1.0,1.0]"); +// tmp2=replace(tmp2,"color: tmp,"color: "+text(colorrgb)); + tmp2=replace(tmp2,"border: true","border:false"); + tmp=indexof(tmp2," size:"); + tmp3=Indexall(tmp2,","); + tmp3=select(tmp3,#>tmp); + if(length(tmp3)>0, + tmp3=tmp3_1; + , + tmp3=indexof(tmp2,"}"); + ); + tmp=substring(tmp2,tmp-1,tmp3-1); + tmp2=replace(tmp2,tmp," size: 2.0"); + ); + out=append(out,tmp2); + flg=1; + ); //190504to + if(flg==0, + if(length(tmp1_jj)>0, //190504from + out=append(out,tmp1_jj); + ); //190504to + ); //190126to + ); + tmp=select(1..(length(out)),indexof(out_#," ],")>0); //190129from + tmp=tmp_1; + tmp1=out_(tmp-1); + if(substring(tmp1,length(tmp1)-1,length(tmp1))==",", //190201from + out_(tmp-1)=substring(tmp1,0,length(tmp1)-1); + ); //190201to + tmp=select(1..(length(out)),indexof(out_#,"width:")>0); + jj=tmp_1; + tmp1=out_jj; + flg=0; + forall(1..(length(tmp1)-1), + if(flg==0, + tmp=substring(tmp1,#-1,#); + if(tmp==":", + tmp2=substring(tmp1,#+1,length(tmp1)-1); + flg=1; + ); + ); + ); + tmp=round(scale*parse(tmp2)); + out_jj=" width: "+text(tmp)+","; + tmp=select(1..(length(out)),indexof(out_#,"height:")>0); + jj=tmp_1; + tmp1=out_jj; + flg=0; + forall(1..(length(tmp1)-1), + if(flg==0, + tmp=substring(tmp1,#-1,#); + if(tmp==":", + tmp2=substring(tmp1,#+1,length(tmp1)-1); + flg=1; + ); + ); + ); + tmp=round(scale*parse(tmp2)); + out_jj=" height: "+text(tmp)+","; + if(length(color)>0, + tmp=select(1..(length(out)),indexof(out_#,"background: ")>0); + jj=tmp_1; + tmp=indexof(out_jj,")"); //190130from + tmp=substring(out_jj,tmp-1,length(out_jj)); + out_jj=" background: "+Dq+"rgb("+color+tmp; //190130to + ); + if(length(grid)>0, + tmp=select(1..(length(out)),indexof(out_#,"grid:")>0); + jj=tmp_1; + tmp1=" grid: "+grid; + if(indexof(out_jj,",")>0, + tmp1=tmp1+","; + ); + out_jj=tmp1; + ); + forall(out, + println(SCEOUTPUT,#); + ); //190129to + closefile(SCEOUTPUT); + setdirectory(Dirwork); + if(webflg=="Y",tmp="json",tmp="jsoff"); + drawtext(mouse().xy-[0,1],tmp+"in "+path,size->20,color->[1,0,0]); + wait(1000); + ); +); +////%Mkketcindyjs end//// + +//help:end(); + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibhelpE.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibhelpE.txt new file mode 100755 index 0000000000..ceec4ccd06 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibhelpE.txt @@ -0,0 +1,115 @@ +//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 R command to write out plot data into TeX); +//help:Texcom*(write command into TeX output exactly as written here); +//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 : color,trimming(y/n)); +//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 R); +//help:Deffun*(the definition of a function is called by R); +//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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibhelpJ.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibhelpJ.txt new file mode 100755 index 0000000000..a6a35d673f --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibhelpJ.txt @@ -0,0 +1,136 @@ +//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: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*(シェーディング. オプション : 色, トリミング(y/n)); +//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:Tabledata*(è¡¨ãƒ‡ãƒ¼ã‚¿ä½œæˆ + //è¿½åŠ ã‚ªãƒ—ã‚·ãƒ§ãƒ³ : ラベルã®ã¨ã³ï¼Œæç”»é ˜åŸŸã‚’è¡¨ã«åˆã‚ã›ã‚‹ã‹ï¼Œå¹¾ä½•ç‚¹ã‚’用ã„ã‚‹ã‹); + //help:Tgrid*(表ã®ã‚»ãƒ«ã®åº§æ¨™ã‚’è¿”ã™); + //help:Tlistplot*(表ã®2æ ¼å点をçµã¶ç·šåˆ†); +////help:ChangeTablestyle*(表ã®ç½«ç·šã®ã‚¹ã‚¿ã‚¤ãƒ«å¤‰æ›´); +//help:Findcell*(表ã®ã‚»ãƒ«ã®æƒ…å ±ã‚’è¿”ã™); +//help:Putcell*(表ã®ã‚»ãƒ«ã«æ–‡å—を書ã入れる); +//help:Putcellexpr*(表ã®ã‚»ãƒ«ã«æ•°å¼ã‚’書ã入れる); +//help:Putrow*(表ã®è¡Œã«æ–‡å—を書ã入れる)); +//help:Putrowexpr*(表ã®è¡Œã«æ•°å¼ã‚’書ã入れる); +//help:PutcoL*(表ã®åˆ—ã«æ–‡å—を書ã入れる)); +//help:PutcoLexpr*(表ã®åˆ—ã«æ•°å¼ã‚’書ã入れる)); +//help:Setwindow*(æç”»é ˜åŸŸã‚’æŒ‡å®š); +//help:Defvar*(変数をRã«æ¸¡ã™); +//help:Deffun*(関数をRã«æ¸¡ã™); +//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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvhelpE.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvhelpE.txt new file mode 100755 index 0000000000..a5e5e8fc69 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvhelpE.txt @@ -0,0 +1,2 @@ +//help:start(); +//help:end(); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvhelpJ.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvhelpJ.txt new file mode 100755 index 0000000000..a5e5e8fc69 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvhelpJ.txt @@ -0,0 +1,2 @@ +//help:start(); +//help:end(); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvlogr.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvlogr.txt new file mode 100644 index 0000000000..a325fea4bd --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvlogr.txt @@ -0,0 +1,68 @@ +// 20190415 +// parse( ..= ) changed ( ; added ) +// 20190404 +// Mkanimation, Mkflipanime changed ( Filename ) +// 20190317 +// Setpara debugged ( default value of Frate changed to 20) +// 20181224 +// Setpara debugged ( ADDAXES=="1") +// 20181128 +// Mkviewobj changed (Fillblack added) +// 20181125 +// Mkflipanime,Mkanimation,Parafolder changed (Fillblack added) +// 20180711 +// Setpara changed ("Mag" removed ) +// 20180617 +// Setpara changed (Changework removed) +// Parafolder debugged/changed ( fbkup, some of Changework removed) +// Parafolder changed (time added ) +// Animatefiles,Mkflipfiles debugged ( sorting of tex files ) +// 20180615 +// Setpara changed (GLISTbkup) +// 20180614 +// Setpara changed (ReadOutData&Projpara removed fromGLISTbkup) +// Setpara changed (the above also removed from COM2ndlist) +// 20180611 +// Parafolder changed (path removed, Dirworkbkup&Dirworksubbkup used) +// 20180610 +// Parafolder debugged (files not removed, waiting time for R) +// Parafolder changed ( pause option adde ) +// 20180609 +// Parafolder changed (CommonMake) +// Mkflipanime,Animationfile changed ( length(ParaSL) ) +// 20180608 +// Parafolder changed (to "all.r", to delete file) +// 20180607 +// Parafolder debugged ( FnameR,.. => Setfiles) +// 20180606 +// Setpara,Parafolder renewed +// 20180602 +// divoptions ( 8,9 ->length(tmp)-1,length(tmp)) +//2017.12.09 +// Parafolder debugged (Viewtex ->WritetoRS) +// Mkanimation debugged ( \ -> / for windows ) +//2017.12.07 +// Setpara options changed +// Animatefile changed (\figsize, OpA) +//2017.11.24 +// Mkflipanime added +// Old movie function removed +// Flipbook removed +// Mkanimation changed (for R) +//2017.11.21 +// Ketinitmv, Paraamble, Mkmovie changed (for R) +//2017.11.03 +// Mkanimation changed (ketpic.sty etc ) +//2017.10.28 +// Parafolder changed (timing of display of counter,time) +//2017.10.24 +// Parafolder changed (file.exists added) +//2017.10.14 +// Mkanimation changed ("Rem=" option added) +//2017.10.13 +// Ketinitmv changed (Shellfile removed) +// Parafolder debugged +//2017.10.12 +// Parafolder changed ( cmdL for making TeX files) +//2017.10.08 +// Mkanimation added diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvr.cs b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvr.cs new file mode 100755 index 0000000000..56351e659a --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindylibmvr.cs @@ -0,0 +1,660 @@ +// 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(20190415) loaded"); + +//help:start(); + +////%Setpara start//// +Setpara(path,fstr,sL):=Setpara(path,fstr,sL,[],[]); +Setpara(pathorg,fstr,sL,options):= + Setpara(pathorg,fstr,sL,options,[]); +Setpara(pathorg,fstr,sL,options,optionsanim):=( +//help:Setpara("folder name","funstr","range",options,optionsanim); +//help:Setpara(folder,funstr,range,options); +//help:Setpara(options=["Div=25"]); +//help:Setpara(options2anim1=["Frate=10","Scale=1"]); +//help:Setpara(options2anim2=["OpA=[loop,controls,buttonsize=3mm]"]); +//help:Setpara(options2anim3=["OpA=+step"]); +//help :Setpara(options2anim4=["Mag=1600","Title=folder"]); +//help:Setpara(options2anim4=["Title=folder"]); + regional(path,tmp,tmp1,tmp2,tmp3,eqL,ndiv,gtmp,ctmp,nn,flg); + if(length(pathorg)==0, path=Slidename,path=pathorg);//17.04.10 + ParaPath=path; + ParaFstr=fstr; + ParaSL=sL; + if(isstring(sL), + ndiv=25; + tmp=Divoptions(options); + eqL=tmp_5; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(tmp_1); + if(substring(tmp1,0,1)=="D", + ndiv=parse(tmp_2); + ); + ); + tmp=Strsplit(sL,"="); + tmp1=parse(tmp_2); + ParaSL=apply(0..ndiv,tmp1_1+#*(tmp1_2-tmp1_1)/ndiv); + ); + ParaOp=options; + if((!contains(Paraop,"r"))&(!contains(ParaOp,"m")), + ParaOp=append(ParaOp,"m");//180604 + ); + ParaOpAnim=optionsanim; + if(ADDAXES=="1", //181224rom + Drwxy(); +// ADDAXES="0"; + ); //181224to + GLISTback=GLIST; + GCLISTback=GCLIST; + GOUTLISTback=GOUTLIST; + POUTLISTback=POUTLIST; + VLISTback=VLIST; + FUNLISTback=FUNLIST; + LETTERlistback=LETTERlist; + COM0thlistback=COM0thlist; + COM1stlistback=COM1stlist; + COM2ndlistback=COM2ndlist; + Dirworkbkup=Dirwork; //0611from + Dirworksubbkup=Dirwork+pathsep()+ParaPath; + Fheadbkup=Fhead; //0611to + gtmp=GLISTback; + tmp1=select(1..(length(gtmp)),indexof(gtmp_#,"ReadOutData")>0); //180614from + tmp2=[];tmp3=[]; + if(length(tmp1)>0, //180615 + nn=tmp1_(length(tmp1)); + tmp2=append(tmp2,nn); + flg=0; + tmp=min([nn+40,length(gtmp)]); + forall((nn+1)..tmp, + if(flg==0, + if(indexof(gtmp_#,"Projpara")>0, + tmp2=append(tmp2,#); + tmp=indexof(gtmp_#,"="); + tmp=substring(gtmp_#,0,tmp-1); + tmp3=append(tmp3,tmp); + , + flg=1; + ); + ); + ); + ); + tmp1=remove(1..(length(gtmp)),tmp2); + GLISTback=apply(tmp1,GLIST_#); //180614to + ctmp=COM2ndlistback; //180614 + forall(tmp3,tmp2, + tmp=select(ctmp,indexof(#,tmp2)>0); + ctmp=remove(ctmp,tmp); + ); + COM2ndlistback=ctmp; +); +////%Setpara end//// + +////%Parafolder start//// +Parafolder():=Parafolder(ParaFstr,ParaSL,ParaOp); +Parafolder(fstr,sL):=Parafolder(fstr,sL,[]); +Parafolder(fstr,sL,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","Wait=20"]); +//help:Parafolder(optionsadd=[""Outfile=n",Pause=10(ms)"]); +//help:Paraslide(para=folder:layery:pos:input,scale); +//help:Paraslide(para=folder:layery:pos:include:[width=100]); + regional(store,nn,tmp,tmp1,tmp2,strL,eqL,waiting,outflg,pause, + mkr,mktex,options,sfL,dirbkup,pfile,ctr,flg,varL,waitingR,timeC,timeR); + store=Fillblack(); //181125 + tmp=indexof(fstr,"("); + tmp1=substring(fstr,tmp,length(fstr)); + tmp=indexof(tmp1,")"); + tmp1=substring(tmp1,0,tmp-1); + parse("Movieframe("+tmp1+"):="+fstr+";"); //190415 + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + strL=tmp_7; + if(length(strL)==0,options=append(options,"m")); + mkr="A"; + mktex="A"; + waiting=30; + outflg=0; + pause=10; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="W", + waiting=parse(tmp_2); + options=remove(options,[#]); + ); + if((tmp1=="O")%(tmp1=="R"), //180606from + tmp=Toupper(substring(tmp_2,0,1)); + if(tmp=="Y", outflg=1); + options=remove(options,[#]); + ); + if(tmp1=="P", //180610from + pause=parse(tmp_2); + options=remove(options,[#]); + ); // //180610to + ); + forall(strL, + tmp1=Toupper(substring(#,0,1)); + if(tmp1=="M", + mkr="Y"; mktex="Y"; + ); + ); + waitingR=min([length(sL)*waiting,120]);//180617 + Changework(Dirworksubbkup); + SCEOUTPUT = openfile("all.r"); + println(SCEOUTPUT,""); + closefile(SCEOUTPUT);//180608to + resetclock();//180617 + if(outflg==1, //180606from + CommonMake=1;//180609 + ctr=1; + forall(sL, + tmp="000000"+text(ctr); + pfile="p"+substring(tmp,length(tmp)-3,length(tmp)); + Setfiles(pfile); + Movieframe(#); + ctr=ctr+1; + ); + CommonMake=-1;//180609 + Setfiles(Fheadbkup);//180617 + timeC=seconds();//180617 + ); //180606to + wait(pause); //180610 + sfL=[]; + ctr=1; + forall(1..(length(sL)),nn, + GLIST=GLISTback; + GCLIST=GCLISTback; + GOUTLIST=GOUTLISTback; + POUTLIST=POUTLISTback; + VLIST=VLISTback; + FUNLIST=FUNLISTback; + LETTERlist=LETTERlistback; + COM0thlist=COM0thlistback; + COM1stlist=COM1stlistback; + COM2ndlist=COM2ndlistback; + tmp="000000"+text(nn); + pfile="p"+substring(tmp,length(tmp)-3,length(tmp)); + Changework(Dirworksubbkup); + Setfiles(pfile); + sfL=append(sfL,FnameR); + if(outflg==1, + wait(pause); + Movieframe(sL_nn); + Changework(Dirworksubbkup);//180606 + ctr=ctr+1; + , + Movieframe(sL_nn); + timeC=seconds();//180617 + ); + CommonMake=0;//180609 + Setfiles(pfile); //180608 + if(!isexists(Dirworksubbkup,FnameR) % mkr=="Y", + if(ErrFlag!=-1, + WritetoRS(2); + ); + ); + ); + wait(pause); //180610 + Setfiles(Fheadbkup); + GLIST=select(GLIST,indexof(#,"Projpara")==0); + tmp1=replace(Dirworksubbkup,"\\","/"); //180611 + tmp1=replace(tmp1,"\","/"); + cmdL=[ + "setwd("+Dqq(tmp1)+")",[], + "size="+text(length(sL)),[], + "cat('',file='all.r',sep='',append=FALSE)",[], //180614 + "for(n in Looprange(1,size)){",[], + " tmp=as.character(n)",[], + " tmp=paste('0000',tmp,sep='')",[], + " tmp=substring(tmp,nchar(tmp)-2,nchar(tmp))",[], + " fname=paste('p',tmp,'.r',sep='')",[], + " lines=readLines(fname)",[], + " if(n>1){",[], //180614from + " for(j in 1:length(lines)){",[], + " tmp=grep('source',lines[j],fixed=TRUE)",[], + " if(length(tmp)>0){",[], + " lines[j]=paste('#',lines[j],sep='')",[], + " lines[j+2]=paste('#',lines[j+2],sep='')",[], + " break",[], + " }",[], + " }",[], + " }",[], + " lines=lines[1:(length(lines)-1)]",[], //180614to + " tmp=paste('print(',as.character(n),')',sep='')",[], + " lines=c(tmp,lines)",[], + " for(j in Looprange(1,length(lines))){",[], + " cat(lines[j],file='all.r',sep='\n',append=TRUE)",[], + " }",[], + "}",[], + "source('all.r')",[] + ]; + if(ErrFlag!=-1, + waiting=min([waiting,8])*length(ParaSL); //180610 + if(!isexists(Dirworksubbkup,Fnametex) % mktex=="Y", + CalcbyR("",cmdL,["Cat=n","m","Wait="+text(waitingR)]); + , + println("Parafolder finished"); + ); + if(length(after)>0, + parse(after+";"); //190415 + ); + ); + if(ErrFlag!=-1,//180617from + timeR=seconds()-timeC; + println("C and R finished"); + println(" C : "+Sprintf(timeC,2)+" sec"); + println(" R : "+Sprintf(timeR,2)+" sec"); + ); //180617to + Changework(Dirworkbkup); + Setfiles(Fheadbkup); + Fillrestore(store); //181125 +); +////%Parafolder end//// + +////%Animatefile start//// +Animatefile():=Animatefile(Dirwork,ParaPath); +Animatefile(path,folder):=( +//help:Animatefile(); +//help:Animatefile(Dirwork,ParaPath); + regional(FRate, Scale, OpA, pa,fname,eqL,tmp,tmp1,tmp2,texfiles); + tmp=divoptions(ParaOpAnim); //17.11.24 + eqL=tmp_5; + FRate="20"; //190317 + Scale="1"; + OpA="loop,controls,buttonsize=3mm"; + remflg=0; + forall(eqL, + tmp1=Toupper(substring(#,0,1)); //181111 + tmp=indexof(#,"="); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="F", + FRate=tmp2; + ); + if(tmp1=="S", + Scale=tmp2; + ); + if(tmp1=="O", // 17.12.07from + if(length(tmp2)>0, + tmp2=replace(tmp2,"[",""); + tmp2=replace(tmp2,"]",""); + if(substring(tmp2,0,1)=="+", + OpA=OpA+","+substring(tmp2,1,length(tmp2)); + , + OpA=tmp2; + ); + ); + ); + ); + if(length(OpA)>0,OpA="["+OpA+"]"); + 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); + tmp1=sort(tmp1); //180617 + texfiles=[];//180609from + forall(tmp1, + tmp=indexof(#,"."); + tmp=parse(substring(#,1,tmp-1)); + if(tmp<=length(ParaSL), + texfiles=append(texfiles,#); + ); + );//180609to + SCEOUTPUT= openfile(fname); + println(SCEOUTPUT,"\def\parapath{"+pa+"}%"); //17.06.22 + println(SCEOUTPUT,"\def\figsize{"+Scale+"}%"); //17.12.07 + println(SCEOUTPUT,"\begin{animateinline}"+OpA+"{"+FRate+"}%"); + forall(1..(length(texfiles)), //180609 + if(Scale==1, // 17.08.30from + tmp="\input{\parapath/"; + tmp=tmp+folder+"/"+tmp1_#+"}%"; + , + tmp="\scalebox{\figsize}{\input{\parapath/";//17.12.07 + tmp=tmp+folder+"/"+tmp1_#+"}}%"; + ); // 17.08.30until + 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"); +); +////%Animatefile end//// + +////%Mkanimation start//// +Mkanimation():=( + regional(remflg,tmp,eqL,tmp1,tmp2); + if(!isexists(Dirwork,ParaPath), //17.10.14from + Parafolder(); + ); + Animatefile(); //17.10.14until + Mkanimation(Dirwork,ParaPath); +); +Mkanimation(folder):=Mkanimation(Dirwork,folder); +Mkanimation(path,folder):=( +//help:Mkanimation(); +//help:Mkanimation(path,folder); + regional(store,Fheadbkup,Pathpdfbkup,tex,article,parent, + eqL,mag,title,tmp,tmp1,tmp2,tmp3,flg); + store=Fillblack(); //181125 + tmp=Divoptions(ParaOpAnim); //17.11.25from + eqL=tmp_5; + mag="1600"; + title=folder; + forall(eqL, + tmp=Indexof(#,"="); + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="M", + mag=tmp2; + ); + if(tmp1=="T", + title=tmp2; + ); + ); //17.11.25until + Fheadbkup=Fhead; + Fhead=folder+"animate"; //190404 + Pathpdfbkup=Pathpdf; + Pathpdf=PathAd; + tmp1=replace(PathT,pathsep(),"/"); + tmp=indexall(tmp1,"/");//17.10.14from + if(length(tmp)>0, + tex=substring(tmp1,tmp_(length(tmp)),length(tmp1)); + , + tex=tmp1; + );//17.10.14until + if((tex=="platex")%(tex=="uplatex"), + if(tex=="platex",article="jarticle",article="ujarticle"); + , + article="article"; + ); + SCEOUTPUT=openfile(Fhead+".tex"); + println(SCEOUTPUT,"\documentclass[landscape]{"+article+"}"); + if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), + tmp="\special{papersize=\the\paperwidth,\the\paperheight}"; + println(SCEOUTPUT,tmp); + println(SCEOUTPUT,"\mag="+mag);//17.11.25 + ); + if((tex=="pdflatex")%(tex=="lualatex")%(tex=="xelatex"), + if((tex=="pdflatex")%(tex=="xelatex"), + println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}"); + , + println(SCEOUTPUT,"\usepackage{pict2e}"); + println(SCEOUTPUT,"\usepackage{luatexja}"); + ); + tmp=replace(Dirhead,"\","/"); //17.10.30from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic2e}"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer2e}"); + ); + , + tmp=replace(Dirhead,"\","/"); //17.10.30from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}"); + ); + ); + println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); + println(SCEOUTPUT,"\usepackage{bm,enumerate}"); + if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), + println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}"); + println(SCEOUTPUT,"\usepackage[dvipdfmx]{animate}"); + , + println(SCEOUTPUT,"\usepackage{graphicx}"); + println(SCEOUTPUT,"\usepackage{animate}"); + ); + println(SCEOUTPUT,"\usepackage{xcolor}"); + forall(ADDPACK, tmp1, + tmp=indexof(tmp1,"{animate}")+indexof(tmp1,"{hyperref}"); + if(tmp==0, + println(SCEOUTPUT,"\usepackage"+tmp1); + ); + ); + println(SCEOUTPUT,"\pagestyle{empty}"); + println(SCEOUTPUT,"\setmargin{0}{0}{0}{0}"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\begin{document}"); + println(SCEOUTPUT,"\large"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\vspace*{25mm}"); + println(SCEOUTPUT,""); + tmp=floor(parse("290*1000/"+mag)); + print(SCEOUTPUT,"\Ctab{"+text(tmp)+"mm}{"); + print(SCEOUTPUT,"\fbox{\Large\bf "+title+"}"); + println(SCEOUTPUT,"}"); + tmp=parse("6*1000/"+mag); + println(SCEOUTPUT,"\vspace{"+text(tmp)+"mm}"); + println(SCEOUTPUT,""); + tmp=indexof(ULEN,"cm"); + if(tmp>0, + tmp1=substring(ULEN,0,tmp-1); + tmp1=parse(replace(tmp1," ",""))*10; + ); + tmp=indexof(ULEN,"mm"); + if(tmp>0, + tmp1=substring(ULEN,0,tmp-1); + tmp1=parse(replace(tmp1," ","")); + ); + tmp=parse("300*1000/"+mag); + tmp1=(tmp-(XMAX-XMIN)*tmp1)/2; + tmp1=tmp1+parse("("+mag+"-1000)/100*1.3"); + print(SCEOUTPUT,"\hspace*{"+text(tmp1)+"mm}"); + tmp=replace(path,"\","/"); //17.12.09(2lines) + println(SCEOUTPUT,"\input{"+tmp+"/anim"+folder+".tex}"); + println(SCEOUTPUT,"\end{document}"); + closefile(SCEOUTPUT); + if(iswindows(), + parent=Dirwork+Batparent; + Makebat(Fhead,"ttv"); + kc():=( + println("kc : "+kc(parent,Dirlib,Fnametex)) + ); + kc(); + , + parent=Dirwork+Shellparent; + Makeshell(Fhead,"ttv"); + kc():=( + println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); + ); + kc(); + ); + Fhead=Fheadbkup; + Pathpdf= Pathpdfbkup; + Fillrestore(store); //181125 +); +////%Mkanimation end//// + +////%Mkflipanime start//// +Mkflipanime():=( + regional(remflg,tmp,eqL,tmp1,tmp2); + if(!isexists(Dirwork,ParaPath), //17.10.14from + Parafolder(); + ); + Mkflipanime(Dirwork,ParaPath); +); +Mkflipanime(folder):=Mkflipanime(Dirwork,folder); +Mkflipanime(path,folder):=( +//help:Mkfilpanime(); +//help:Mkflipanime(path,folder); + regional(store,Fheadbkup,tex,article,parent,eqL,mag,title, + tmp,tmp1,tmp2,tmp3,texfiles,flg); + store=Fillblack(); //181125 + tmp=Divoptions(ParaOpAnim); //17.11.25from + eqL=tmp_5; + mag="1600"; + title=folder; + forall(eqL, + tmp=Indexof(#,"="); + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="M", + mag=tmp2; + ); + if(tmp1=="T", + title=tmp2; + ); + ); //17.11.25until + Fheadbkup=Fhead; + Fhead=folder+"flipanime"; //190404 + tmp1=replace(PathT,pathsep(),"/"); + tmp=indexall(tmp1,"/");//17.10.14from + if(length(tmp)>0, + tex=substring(tmp1,tmp_(length(tmp)),length(tmp1)); + , + tex=tmp1; + );//17.10.14until + if((tex=="platex")%(tex=="uplatex"), + if(tex=="platex",article="jarticle",article="ujarticle"); + , + article="article"; + ); + SCEOUTPUT=openfile(Fhead+".tex"); + println(SCEOUTPUT,"\documentclass[landscape]{"+article+"}"); + if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), + tmp="\special{papersize=\the\paperwidth,\the\paperheight}"; + println(SCEOUTPUT,tmp); + println(SCEOUTPUT,"\mag="+mag);//17.11.25 + ); + if((tex=="pdflatex")%(tex=="lualatex")%(tex=="xelatex"), + if((tex=="pdflatex")%(tex=="xelatex"), + println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}"); + , + println(SCEOUTPUT,"\usepackage{pict2e}"); + println(SCEOUTPUT,"\usepackage{luatexja}"); + ); + tmp=replace(Dirhead,"\","/"); //17.10.30from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketpic2e,ketlayer2e}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic2e}"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer2e}"); + ); + , + tmp=replace(Dirhead,"\","/"); //17.10.30from + tmp=replace(tmp,"scripts","tex/latex"); + if(isexists(tmp,""), + println(SCEOUTPUT,"\usepackage{ketpic,ketlayer}"); + , + tmp=replace(Dirhead+"/ketpicstyle","\","/"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketpic}"); + println(SCEOUTPUT,"\usepackage{"+tmp+"/ketlayer}"); + ); + ); + println(SCEOUTPUT,"\usepackage{amsmath,amssymb}"); + println(SCEOUTPUT,"\usepackage{bm,enumerate}"); + if((tex=="platex")%(tex=="uplatex")%(tex=="latex"), + println(SCEOUTPUT,"\usepackage[dvipdfmx]{graphicx}"); + , + println(SCEOUTPUT,"\usepackage{graphicx}"); + ); + println(SCEOUTPUT,"\usepackage{xcolor}"); + forall(ADDPACK, tmp1, + if(tmp==0, + println(SCEOUTPUT,"\usepackage"+tmp1); + ); + ); + println(SCEOUTPUT,"\pagestyle{empty}"); + println(SCEOUTPUT,"\setmargin{0}{0}{0}{0}"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\begin{document}"); + println(SCEOUTPUT,"\large"); + println(SCEOUTPUT,""); + tmp=fileslist(Dirwork+pathsep()+folder); + tmp=tokenize(tmp,","); + tmp1=select(tmp,indexof(#,".tex")>0); //180609from + tmp1=sort(tmp1);//180617 + texfiles=[]; + forall(tmp1, + tmp=indexof(#,"."); + tmp=parse(substring(#,1,tmp-1)); + if(tmp<=length(ParaSL), + texfiles=append(texfiles,#); + ); + );//180609to + forall(texfiles, + println(SCEOUTPUT,"\vspace*{25mm}"); + println(SCEOUTPUT,""); + tmp=floor(parse("290*1000/"+mag)); + print(SCEOUTPUT,"\Ctab{"+text(tmp)+"mm}{"); + print(SCEOUTPUT,"\fbox{\Large\bf "+title+"}"); + println(SCEOUTPUT,"}"); + tmp=parse("6*1000/"+mag); + println(SCEOUTPUT,"\vspace{"+text(tmp)+"mm}"); + println(SCEOUTPUT,""); + tmp=indexof(ULEN,"cm"); + if(tmp>0, + tmp1=substring(ULEN,0,tmp-1); + tmp1=parse(replace(tmp1," ",""))*10; + ); + tmp=indexof(ULEN,"mm"); + if(tmp>0, + tmp1=substring(ULEN,0,tmp-1); + tmp1=parse(replace(tmp1," ","")); + ); + tmp=parse("300*1000/"+mag); + tmp1=(tmp-(XMAX-XMIN)*tmp1)/2; + tmp1=tmp1+parse("("+mag+"-1000)/100*1.3"); + print(SCEOUTPUT,"\hspace*{"+text(tmp1)+"mm}"); + println(SCEOUTPUT,"\input{"+folder+"/"+#+"}"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"\newpage"); + ); + println(SCEOUTPUT,"\end{document}"); + closefile(SCEOUTPUT); + if(iswindows(), + parent=Dirwork+Batparent; + Makebat(Fhead,"tv"); + kc():=( + println("kc : "+kc(parent,Dirlib,Fnametex)) + ); + kc(); + , + parent=Dirwork+Shellparent; + Makeshell(Fhead,"tv"); + kc():=( + println("kc : "+kc(parent,Mackc+Dirlib,Fnametex)); + ); + kc(); + ); + Fhead=Fheadbkup; + Fillrestore(store); //181125 +); +////%Mkflipanime end//// + +//help:end(); + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindyliboutlogr.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindyliboutlogr.txt new file mode 100644 index 0000000000..ddfac03553 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindyliboutlogr.txt @@ -0,0 +1,232 @@ +// 20190424 +// PlotdiscR changed ( "-" added to Listplot ) +// Mxfun debugged (options) +// 20190415 +// parse( ..= ) changed ( ; added ) +// 20190411 +// CalcbyM changed ("Errchk=" added) +// 20190327 +// Mxfun debugged ( eqL to 1 char) +// 20190317 +// Readcsv debugged ( in case of 2 args ) +// 20190301 +// MeasureDepth => Measuredepth +// Readcsv changed ( for 2 arg, ".csv" can be omitted ) +// 20190226 +// Histplot changed ( [ ] => c( ) ) +// 20190224 +// CalcbyR changed (defaut of Pre : PVOFG => VF ) +// 20190127 +// Gccexists changed (in case that PathC is full path in Mac/Windws) +// 20190126 +// Boxplot changed ( Pointdata[size] ) +// 20190125 +// Readcsv changed/debugged ( option "Head=" added. For 1 line data ) +// HIstplot, Boxplot changed (wait=5) +// 20190124 +// Gccexists added +// Sfcutparadata debugged (optionh) +// 20190123 +// Sfbdparadata,... debugged (in case of emply options,optionsh ) +// kcC chnage ( positon "-lm" changed for Mac/Linux ) +// 20181219 +// Rfun debugged ( Out=y ) +// CalcbyR debugged ( argment list changed to string) +// 20181218 +// Help (Sfbdparadata ,,,, ) +// 20181217 +// Sfbdparadata debugged (replace fname+nm to fnameall ) +/// 20181209 +// MkprecommandR debugged (arc.. added ) +// Mkviewobj changed ( option "Zax=" added) +// 20181103 +// Mkviewobj changed ( change coord in case of "preview") +// Setobj changed ( option "preview" added ) +// 20181102 +// kcV3 changed ( "preview" for Mac ) +// 20181123 +// Mkviewobj debugged ( Out=n ) +// CalcbyR changed ( for cat ) +// 201811225 +// Readcsv majorly changed ( readfile2str used ) +// 20181116 +// Startsurf changed ( case of 4 argments added ) +// 20181114 +// Execcmd debugged ( Changestye3d for sfcut,wire ) +// Sfbdparadata,... changed ("Color=.." copied to optionh if no color option ) +// 20181112 +// Sfcutparadatacdy added +// Sfcutparadatacdy debugged (case of MeasureDepth==1) +// 20181107 +// Cform debugged (integer => integer.0) +// global StyleListC added ( to Sfbdparadata,... ) +// 20181106 +// Cform debugged (new version made) +// ExeccmdC changed (subgraph added ) +// 20181105 +// Crvsfparadata changed ( multi surface supported ) +// 20181101 +// CalcbyC chanded (wflg retured) +// ExeccmdC changed ( WritedataC added when necessary ) +// Contsurf added +// ExeccmdC changed ( for Contsurf ) +// 20181029 +// in ReadOutData C callings, option=["Disp=n"] added +// 20181020 +// HatchdataR,Dotfilldata (Setscaling(SCALEX,SCALEY) +// 20181014 +// Rulerscale changed (mag added to "r" ) +// 20181013 +// Scatterplot debugged and changed ( Readcsv, for case of data list, option "m/r") +// Scatterplot changed (optionspt, optionsseg) +// Scatterplot changed (position addede to optionsseg) +// 20180906 +// Setobj debugged (objname removed) +// 20180902 +// Setobj changed (null argument) +// Mkviewobj changed (Cat=n) +// 20180727 +// Wireparadata, Sfcutparadata debugged ("char fname..." removed) +// 20180722 +// PlotdataR,Boxplot,Rulersclale changed (color option) +// 20180712 +// SfbdparadataC,... renamed to Sfbdparadata,... +// 20180617 +// CalcbyC debugged ( println removed) +// 20180615 +// CalcbyC debugged ( flg block changed) +// kcC changed ( 1000 =>10000) +// 20180612 +// Hatchdata renamed to HatchdataR +// kcC changed ( "gcc -lm" ) +// 20180611 +// StartsurfC changed ( "reset" of GLIST ) +// 20180610 +// StartsurfC debugged ( sizeL ) +// 20180609 +// StartsurfC changed ( multi type of setting constant) +// ExeccmdC changed (CommonMake) +// 20180608 +// StartsurfC changed ( FuncListC reset) +// ExeccmdC changed ( Fhead printed) +// ExeccmdC, Crvsfparadata,... changed (Projpara with "Msg=n" ) +// CalcbyR changed (Wait=30) +// 20180607 +// CrvsfparadataC,WireparadataC debugged ( "sprintf..." of CommandListC); +// SfbdparadataC changed (name: funnm =>nm ) +// 20180606 +// StartsurfC added +// SfbdparadataC changed (FuncListC) +// Setpara, Parafolder renewed +// 20180605 +// ExeccmdC changed ("Path=" option supported ) +// 20180602 +// divoptions ( 8,9 ->length(tmp)-1,length(tmp)) +// ExeccmdC changed ( optionsh (default="do"), varL ) +// Crv2onsfparadata,Crv3onsfparadata debugged +// 20180601 +// SfbdparadataC,... changed ( fbdy => sfbd) +// Ctopsurf changed (data[DsizeL][3],sfbd[DsizeL][3] added ) +// Ctosurf changed (CutFunList) +// SfbdparadataC changed ( "w" or "a" set according to CommandListC) +// Wireparadata,Sfcutdata changed (cmdflg) +// ExeccmdC changed ( EraseList ); +// 20180531 +// SfbdparadataC changed ( outputend added, readoutdata3 changed) +// 20180530 +// Ctopsurf changed ( stdlib.h, string.h) +// CrvsfparadataC,Crvonsfparadata,... changed (readoutdata3 used for fbdy) +// 20180523 +// Cheadsurf,Ctopsurf debugged (case => break added ) +// Cheadsurf debugged ( Dirname "\" => "/") +// CalcbyC debugged ( "////" ) +// 20180521 +// IntersectcrvsfC added +// 20180517 +// Cform debugged ( "=", tmp=0) +// SfbdparadataC,... changed ( "" removed from optionh ) +// CalcbyC changed ( "result" => "end" ) +// 20180516 +// Ctopsurf debugged ( : => ;) +// 20180510 +// CalcbyR changed ( for the last command ) +// Crv2sfparadataC added +// 20180508 +// MkprecommandR changed (PVOFG) +// CalcbyR changed (option Pre) +// 20180505 +// Ctopsurf changed ( for mult cutfun) +// 20180504 +// Ketinit debuggde (MARKLEN : ) +// 20180502 +// CostC removed +// SetconstantC added +// 20180428 +// CrvsfparadataC changed (Changestyle => "nodisp") +// Ctopsurf changed (data[DsizeLL][3] removed ) +// 20180426 +// CrvsfparadataC largely changed +// WritedataC changed ( \n removed at the last line ) +// 2018.04.12 +// CalcbyR changed ( for blank name ) +// 2018.04.11 +// Mkketcindyjs debugged +// 2018.03.27 +// functions of C changed +// CalcbyC added +// Sfbdparadata,Crvsfparadata added +// 2018.03.24 +// WriteCdata changed ( 99999 ) +// 2018.03.03 +// ConvertFdtoC changed ( varnames converted to u,v ) +// 2018.03.01 +// Cform,ConvertFdtoC added +// 2018.02.27 +// Rfun debugged +// 2018.02.22 +// CalcbyR changed (adding ".txt" to wfile) +// 2018.02.20 +// CalcbyR changed (Quick return of Erromessage) +// 2018.02.12 +// MkprecommandR changed ( for GLIST ) +// 2018.02.11 +// Mkprecommand debugged +// CalcbyR debugged ("ans" replaced to name ) +// 2018.02.01 +// CalcbyR changed (for matrix, wait=5 ) +// 2018.01.31 +// CalcbyR changed (for list of list ) +// 2018.01.29 +// CalcbyR debugged and changed (case of result is null ) +// 2018.01.27 +// CalcbyR changed ( output like Maxima(::),"Out") +// 2018.01.07 +// Hatchdata debugged (fun removed ) +// 2017.12.24 +// Mkobjpoly,Mkobjplate debugged +// Changeobjscalce changed for R +// 2017.12.23 +// Mkobjsymbcmd debugged +// Setoptions changed +// Mkobjthickcmd added +// 2017.12.22 +// Mkobjcrvcmd debugged +// 2017.10.24 +// Maxima2Cindydata added +// 2017.10.12 +// kcR debugged ( for Mac, => 2> ) +// 2017.10.07 +// CalcbyR debugged ( => WritetoRS ) +// ReadCdata changed ( execstr removed ) +// 2017.10.02 +// Imlicitplot changed (for R) +// 2017.09.29 +// WritetoS debugged (LibnameS) +// Dotfilldata changed +// 2017.09.24 +// Circledata, WritetoR, PrecommandR debugged +// 2017.09.23 +// Hatchdata debugged +// 2017.09.18 +// Hatchdata changed (for R) +// SCIWR,SCIRE removed diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindyliboutr.cs b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindyliboutr.cs new file mode 100644 index 0000000000..7de07986f3 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketcindyliboutr.cs @@ -0,0 +1,6634 @@ +// 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("ketcindylibout[20190424] loaded"); + +//help:start(); + +////%WritetoS 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+LibnameS+Dq+");//"; //17.09.29 + 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.26until + if(iswindows(), // 17.01.11from + println(SCEOUTPUT,"setlanguage('en')"); + ); // 17.01.11until + tmp="pi=%pi;////"; + println(SCEOUTPUT,tmp); + forall(cmdL, + println(SCEOUTPUT,#+"//"); + ); + closefile(SCEOUTPUT); +); +////%WritetoS end//// + +////%kcS start//// +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 + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + 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); + ); +); +////%kcS end//// + +////%SetpathS start//// +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; +); +////%SetpathS end//// + +////%ErrhandleS start//// +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 + ); +); +////%ErrhandleS end//// + +////%Testfunstr start//// +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; +); +////%Testfunstr end//// + +////%CalcbyS start//// +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,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="C", + cat=Toupper(substring(tmp2,0,1));// 16.11.24 + options=remove(options,[#]); + ); + if(tmp1=="N", + ncoL=parse(tmp2); + options=remove(options,[#]); + ); + 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=="F", // 16.06.26from + wfile=tmp2; + options=remove(options,[#]); + ); // 16.06.26until + ); + if(wfile=="", + if(cat=="Y", + wfile=Fhead+name; + , + wfile="resultS"; + ); + ); + if(indexof(wfile,".")==0,// 16.06.26from + wfile=wfile+ext; + ); // 16.06.26until + 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 until + ); + ); + 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 until + , +// tmp="mputl(['????'],"+Dq+file+".txt"+Dq+");"; // 16.06.2 from +// cmdlist=concat(cmdlist,[tmp]); // 16.06.2 until + ); + 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); + ); +); +////%CalcbyS end//// + +////%Scifun start//// +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,1)); //181111 + tmp2=substring(#,tmp,length(#)); + if(tmp1=="D" , + 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); +); +////%Scifun end//// + +////%WritetoR start//// +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(Libname,"\","/"); // 17.09.24from +// tmp="load('"+tmp1+".Rdata')"; # 17.10.12 + tmp="source('"+tmp1+".r')##"; // 17.09.24temporarily + 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); +// ); +// ); +// ); +); +////%WritetoR end//// + +////%kcR start//// +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 + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + println(SCEOUTPUT,"#!/bin/sh"); + println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); + if(PathR=="",tmp="R",tmp=PathR);//16.10.20 + tmp=tmp+" --vanilla --slave < "+filename+" 2> "+ferr;//17.10.12 + 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); + ); +); +////%kcR end//// + +////%Dataframe start//// +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,"]",")"); +); +////%Dataframe end//// + +////%MkprecommandR start//// +MkprecommandR():=MkprecommandR(6,"PVOFG"); //180508(9lines) +MkprecommandR(Arg):=( + regional(out,tmp1); + if(isstring(Arg), + MkprecommandR(6,Arg); + , + if(islist(Arg), + out=[]; + forall(Arg, + tmp1=Rform(#); + out=concat(out,[tmp1,[]]); + ); + out; + , + MkprecommandR(Arg,"PVOFG"); + ); + ); +); +MkprecommandR(prec,chstr):=( + regional(cmdL,Plist,tmp,tmp1,tmp2); + cmdL=[]; + cmdL=concat(cmdL,["arccos=acos; arcsin=asin; arctan=atan",[]]); //181209 + if(indexof(chstr,"P")>0, + Plist=[]; + forall(remove(allpoints(),[SW,NE]), + tmp=textformat(re(Lcrd(#)),prec); + tmp=RSform(tmp); + tmp1=#.name; + tmp1=tmp1+"="+tmp+";Assignadd('"+tmp1+"',"+tmp1+")"; + Plist=append(Plist,tmp1); + ); + forall(1..(length(Plist)), + cmdL=concat(cmdL,[Plist_#,[]]); + ); + ); + if(indexof(chstr,"V")>0, + tmp2=sort(apply(VLIST,#_1)); // 16.02.03 from + tmp=apply(allpoints(),text(#));//18.02.11 + tmp2=remove(tmp2,tmp); + tmp1=[]; + forall(tmp2,tmp, + tmp1=concat(tmp1,select(VLIST,#_1==tmp)); + ); + VLIST=tmp1;// 17.09.24from + forall(VLIST, + tmp=#_1; + tmp1=#_2; + if(!isstring(tmp1), + if(islist(tmp1), + tmp2="["; + forall(tmp1, + tmp2=tmp2+textformat(#,prec)+","; + ); + tmp1=substring(tmp2,0,length(tmp2)-1)+"]"; + , + tmp1=format(tmp1,prec); + ); + ); + tmp1=RSform(tmp1); + tmp1=tmp+"="+tmp1+";"; + tmp1=tmp1+"Assignadd('"+tmp+"',"+tmp+")"; + cmdL=concat(cmdL,[tmp1,[]]);//17.09.24until + ); + ); + if(indexof(chstr,"O")>0, + forall(OutFileList, + cmdL=concat(cmdL,["tmp=ReadOutData",[Dq+#+Dq]]); + ); + ); + if(indexof(chstr,"F")>0, + forall(FUNLIST, + cmdL=concat(cmdL,[#,[]]); + ); + ); + if(indexof(chstr,"G")>0, + forall(GLIST, + if(indexof(#,"ReadOutData")==0, //18.02.12 + tmp1=Rform(#); + cmdL=concat(cmdL,[tmp1,[]]); + ); + ); + ); + cmdL; +); +////%MkprecommandR end//// + +////%CalcbyR start//// +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(name,cmd); +//help:CalcbyR(options=["m/r","Wait=2","Out=y/n","Pre=PVFG"]); +//help:CalcbyR(options2=["Pre=!G" ]); + regional(options,tmp,tmp1,tmp2,tmp3,realL,strL,eqL, + cat,dig,prestr,flg,wflg,file,nc,arg,cmdR,cmdlist,wfile,waiting); + options=optionorg; + tmp=divoptions(options); + eqL=tmp_5; + realL=tmp_6; + strL=tmp_7; + dig=5; + tmp=cmd_(length(cmd)-1); //181130from + if(!isstring(tmp),tmp=text(tmp)); //190109 + if(indexof(tmp,"=")+indexof(tmp,"::")>0, + cat="Y"; + , + tmp=cmd_(length(cmd)); + if(length(tmp)>0, + cat="Y"; + , + cat="N"; + ); + ); //181130to + wfile=""; + prestr="VF"; //180508,190224 + waiting=30; //180608 + nopoint="n"; //190222 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if((tmp1=="C")%(tmp1=="O"), + cat=Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); + if(tmp1=="W", + waiting=parse(tmp2); + options=remove(options,[#]); + ); + if(tmp1=="P", //180508from + tmp2=Toupper(tmp2); + if(substring(tmp2,0,1)!="!", + prestr=tmp2; + , + tmp2=substring(tmp2,1,length(tmp2)); + forall(1..(length(tmp2)), + prestr=replace(prestr,substring(tmp2,#-1,#),""); + ); + );//180508to + options=remove(options,[#]); + ); + if(tmp1=="D", + dig=parse(tmp2); + options=remove(options,[#]); + ); + if(tmp1=="F", + wfile=tmp2; //18.02.27 + options=remove(options,[#]); + ); + if(tmp1=="R", + wfile=tmp2; //180227 + options=remove(options,[#]); + ); + ); + if(wfile=="", + if(cat=="Y", + wfile=Fhead+name+".txt"; + , + wfile="resultR.txt"; + ); + ); + 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); + ); + ); + if(length(name)>0,//180412from + file=Fhead+name; + , + file=Cindyname(); + );//180412to + cmdR=[]; + cmdR=MkprecommandR(6,prestr); + cmdR=concat(cmdR,cmd); //18.01.27to + cmdlist=[]; + if(dig>5, //16.10.28from + cmdlist=append(cmdlist,"options(digits="+text(dig+2)+");"); + ); //16.10.28until + 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); + ); + tmp1=cmdlist_(length(cmdlist)); + if(indexof(tmp1,"=")==0, + if(length(name)>0, //180412 + tmp1=tokenize(tmp1,"::"); + if(length(tmp1)==1, + if(indexof(tmp1_1,"(")==0, //180510from + tmp2=name+"="+tmp1_1; + , + tmp2=tmp1_1; + ); //180510to + , + tmp2=name+"=list("; + forall(tmp1, + tmp2=tmp2+#+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1)+")"; //180510(moved) + ); + cmdlist_(length(cmdlist))=tmp2; + ); + ); + 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); + tmp="if(Length("+name+")==0){"+name+"='nodata'}"; //18.01.29 + cmdlist=append(cmdlist,tmp); + cmdlist=append(cmdlist,"if(is.matrix("+name+")){"); + cmdlist=append(cmdlist," tmp=list()");//18.02.01from + cmdlist=append(cmdlist," for(ii in 1:Length("+name+")){"); + cmdlist=append(cmdlist," tmp=c(tmp,list(Op(ii,"+name+")))"); + cmdlist=append(cmdlist," }"); + cmdlist=append(cmdlist," "+name+"=tmp"); + cmdlist=append(cmdlist,"}");//18.02.01until + cmdlist=append(cmdlist,"if(is.list("+name+")){"); +// tmp=" cat(names("+name+"),file='"+wfile+"',sep=',')"; //18.01.27deleted +// cmdlist=append(cmdlist,tmp); +// tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; +// cmdlist=append(cmdlist,tmp); + cmdlist=append(cmdlist," for(ii in Looprange(1,length("+name+"))){"); + cmdlist=append(cmdlist," if(is.list("+name+"[[ii]])){"); + tmp=" cat('[',file='"+wfile+"',sep='',append=TRUE)"; + cmdlist=append(cmdlist,tmp); + tmp=" cat(sharps,file='"+wfile+"',sep='',append=TRUE)"; + cmdlist=append(cmdlist,tmp); + tmp=" for(jj in Looprange(1,length("+name+"[[ii]]))){"; + cmdlist=append(cmdlist,tmp); + tmp=" cat("+name+"[[ii]][[jj]],file='"+wfile+"',sep=',',append=TRUE)"; + cmdlist=append(cmdlist,tmp); + tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; + cmdlist=append(cmdlist,tmp); + cmdlsit=append(cmdlist," }"); + cmdlist=append(cmdlist," }"); + tmp=" cat(']',file='"+wfile+"',sep=',',append=TRUE)"; + cmdlist=append(cmdlist,tmp); + tmp=" cat(sharps,file='"+wfile+"',append=TRUE)"; + cmdlist=append(cmdlist,tmp); + cmdlist=append(cmdlist," }else{"); + 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," }"); + 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.23until + 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); //17.10.08 + SCEOUTPUT=openfile("errormessageR.txt");//18.02.20from + println(SCEOUTPUT,""); + closefile(SCEOUTPUT);//18.02.20until + 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); + tmp=load("errormessageR.txt");//18.02.20 + if(length(tmp)>1, + println(tmp); + flg=-2; + );//18.02.20 + ); + ); + ); + ); + if(flg<=0, + ErrFlag=1; + if(flg==-1, + println(wfile+" does not exist"); + , + if(flg==0, + tmp="("+text(waiting)+" s )"; + println(wfile+" not generated "+tmp); + ); + ); + , + 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), + tmp=format(tmp3,dig); + , + if(indexof(tmp3,",")==0, + tmp=Dqq(tmp3); //180227 + , + tmp=tmp3; + if(substring(tmp3,0,2)=="c(", + tmp=substring(tmp3,2,length(tmp3)-1); + ); + tmp=tokenize(tmp,","); + tmp=textformat(tmp,dig); + ); + ); + tmp2=append(tmp2,tmp); + ); + if(length(tmp2)==1, + tmp2=tmp2_1; + if(length(tmp2)==1,tmp2=tmp2_1); + if(isstring(tmp2), + if(indexof(tmp2,"nodata")>0,tmp2="[]"); //180227from + tmp2=parse(tmp2); + ); + tmp3=textformat(tmp2,dig);//180227until + , + tmp3=""; + forall(tmp2, + if(length(#)==0, + tmp3=tmp3+"[],"; + , + tmp3=tmp3+#+","; + ); + ); + tmp3="["+substring(tmp3,0,length(tmp3)-1)+"]"; + tmp3=replace(tmp3,"[,","["); + tmp3=replace(tmp3,",]","]"); + ); + tmp=name+"="+tmp3+";";//180227//190415 + parse(tmp); + ); + ); + ); +); +////%CalcbyR end//// + +////%Rfun start//// +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(n)","Pre="]); + 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,1)); //181111 + tmp2=substring(#,tmp,length(#)); + if(tmp1=="D", + 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"]); + options=concat(options,["Wait=2","Cat=y"]); //190109 + CalcbyR(nm,cmdL,options); + if(ErrFlag==0, + if(disp==1, // 15.11.24 + println(nm+" is : "); + println(parse(nm)); + ); + ); + parse(nm); +); +////%Rfun end//// + +////%Readcsv start//// +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,1)); //181111 + if(tmp=="H", + tmp=Toupper(substring(tmp2,0,1)); + if(tmp=="F" % tmp=="N", + header=0; + options=remove(options,[#]); + ); + ); + if(tmp=="S", + sep=tmp2; + options=remove(options,[#]); + ); + if(tmp=="C", + csv=Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); + if(tmp=="U", + use=Toupper(substring(tmp2,0,1)); + options=remove(options,[#]); + ); + if(tmp=="F", + 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.20until + 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.10until + 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; + ); + ); +); +// New readcsv [181125] +Readcsv(file):=Readcsv(Dirwork,file); +Readcsv(Arg1,Arg2):=( //190301from + if(islist(Arg2), + Readcsv(Dirwork,Arg1,Arg2); + , + Readcsv(Arg1,Arg2,[]); //190317 + ); +); //190301from +Readcsv(path,file,options):=( +//help:Readcsv("ex.csv"); +//help:Readcsv(directory,"ex.csv"); +//help:Readcsv(options=["Head=no"]); + regional(dt,eqL,head,from,end,tmp); + tmp=Divoptions(options); + eqL=tmp_5; + head="n"; from=1; //190125from + forall(eqL, + tmp=Strsplit(#,"="); + if(Toupper(substring(tmp_1,0,1))=="H", + head=substring(tmp_2,0,1); + ); + ); + if(Toupper(head)=="Y", + from=2; + ); //190125to + tmp=file; + if(indexof(tmp,".csv")==0,tmp=tmp+".csv"); //190301 + dt=readfile2str(path,tmp); + dt=tokenize(dt,"/LF/"); + end=length(dt); + if(dt_(length(dt))=="", + end=end-1; + dt=dt_(from..end); //190125 + ); + dt=apply(dt,tokenize(#,",")); + if(length(dt)==1, dt=dt_1); //190125 + dt; +); +////%Readcsv end//// + +////%Writecsv start//// +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.09until + 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); +); +////%Writecsv end//// + +////%HatchdataR start//// +HatchdataR(nm,iostr,pltlist):=HatchdataR(nm,iostr,pltlist,[]); +HatchdataR(nm,iostr,pltlist,optionorg):=( //17.09.18 +//help:HatchdataR("1","ii",[["gr1"],["gr2","n"]]); +//help:HatchdataR(options=["Wait=5"]); + regional(options,name,eqL,reL,strL, + plt,fname,options,tmp,tmp1,tmp2,tmp3,flg,wflg,waiting); + name="ha"+nm; + fname=Fhead+name+".txt"; + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=5; + forall(eqL, + tmp=indexof(#,"="); + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="W", + waiting=parse(tmp2); + 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=MkprecommandR(); + tmp2=substring(tmp2,0,length(tmp2)-1); + tmp=[tmp1,tmp2]; + tmp=concat(tmp,reL); + cmdL=concat(cmdL,[ + "Setscaling",[SCALEX,SCALEY], //181020 + "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"])); + options=append(options,"Cat=no"); + if(ErrFlag==0, + CalcbyR(name,cmdL,options); + ); + if(ErrFlag==1, + err("Hatchdata not completed"); + , + if(ErrFlag==0, + ReadOutData(fname); + Extractdata(name,options); + ); + ); +); +////%HatchdataR end//// + +////%PlotdataR start//// +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; + ); +); +////%PlotdataR end//// + +////%PlotdiscR start//// +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); //190424 + ); +); +////%PlotdiscR end//// + +////%Boxplot start//// +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=10; + 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 until + 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")); + , + bp=parse(name); + pstr="["; + tmp1=[bp_1,ypos-dy/2]; + tmp2=[bp_1,ypos+dy/2]; + Listplot(name+text(1),[tmp1,tmp2],concat(options,["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],append(options,"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],append(options,"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],concat(options,["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],concat(options,["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],concat(options,["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,concat(options,[0,"Size=2","Inside=white"])); //190125 + ); + pstr=substring(pstr,0,length(pstr)-1)+"]"; + println("generate totally "+name); + tmp=name+"="+pstr; + [bp_(1..5),out]; + ); +); +////%Boxplot end//// + +////%Histplot start// +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=10; //190125 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="B", + if(substring(tmp_2,0,1)=="[", // 190226from + tmp1=RSform(tmp_2); + , + tmp1=tmp_2; + );// 190226to + 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 until + 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+";"; //190415 + parse(tmp); + [bdata,cdata]; + ); +); +////%Histplot end// + +////%Scatterplot start//// +Scatterplot(nm,file):=Scatterplot(nm,file,[],[]); +Scatterplot(nm,file,options):=Scatterplot(nm,file,options,[]); +Scatterplot(nm,file,optionorg,optionsreg):=( +//help:Scatterplot("1",(path+)filename); +//help:Scatterplot("2",ptlist,["Size=2"],["da","Color=blue"]); +//help:Scatterplot("3",ptlist,["Reg=n"]); +//help:Scatterplot(options=["Reg=n","Size=3","Color="]); +//help:Scatterplot(options1=["Reg=y(n)",pointstyle]); +//help:Scatterplot(options2=[position([]), linestyle]); + regional(tmp,tmp1,tmp2,fname,name,reg,eqL,strL,cdysize, + options,dtx,dty,nn,mx,my,sx,sy,sxy,rr,aa,bb,size,pos); + name="sc"+nm; + options=optionorg; + tmp=divoptions(options); + eqL=tmp_5; + options=remove(options,tmp_6); + strL=tmp_7; //181013(2lines) + options=remove(options,strL); + size=3; + reg="y"; + forall(eqL, + tmp=indexof(#,"="); + tmp1=Toupper(substring(#,0,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="R", + reg=substring(tmp2,0,1); + options=remove(options,[#]); + ); + if(tmp1=="S", + size=parse(tmp2); + options=remove(options,[#]); + options=append(options,"Size="+text(size));//181013 + ); + ); + if(isstring(file), //181013 + if(indexof(file,".")==0, + fname=file+".csv"; + , + fname=file; + ); + tmp=Readcsv(fname,strL);//181013from + , + tmp=file; + ); + parse("rc"+nm+"="+tmp+";"); //181013to //190415 + Pointdata(name,parse("rc"+nm),options); + 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; + tmp1=optionsreg; + tmp=divoptions(tmp1); + reL=tmp_6; //181013(2lines) + tmp1=remove(tmp1,reL); + tmp1=append(tmp1,"Num=1"); + pos=[]; + if(length(reL)>0, + pos=reL_1; + ); + tmp=Assign("a*x+b",["a",aa,"b",bb]); + if(reg!="n", + Plotdata(name,tmp,"x",tmp1); + ); + if(length(pos)>0, //181013from + 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([pos,"e",tmp]); //181013to + ); + [mx,my,sx,sy,sxy,rr,bb,aa]; +); +////%Scatterplot end//// + +////%Rulerscale start//// +Rulerscale(pt,hscale,vscale):=Rulerscale(pt,hscale,vscale,0.1,[]);//180722from +Rulerscale(Arg1,Arg2,Arg3,Arg4):=( + if(!islist(Arg4), + Rulerscale(Arg1,Arg2,Arg3,Arg4,[]); + , + Rulerscale(Arg1,Arg2,Arg3,0.2,Arg4); + ); +);//180722to +Rulerscale(pt,hscale,vscale,tick,options):=(//180722 +//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,mag,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; + if(length(hscale)>4,mag=hscale_5,mag=1); //181014 + tmp=floor((tmp2-tmp1)/tmp3); + pos=apply(0..tmp,tmp1+#*tmp3);//181014 + mrk=apply(pos,text(#*mag)); + 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_#],options); + tmp1=pos_#; + tmp2=pos_#-Unscaling([0,tick]); //181017 + Listplot("rsh"+text(#),[tmp1,tmp2],concat(options,["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; + if(length(vscale)>4,mag=vscale_5,mag=1); //181014 + tmp=floor((tmp2-tmp1)/tmp3); + pos=apply(0..tmp,tmp1+#*tmp3); + mrk=apply(pos,text(#*mag)); //181014 + 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_#],options); + tmp1=pos_#; + tmp2=pos_#-Unscaling([tick,0]); //181017 + Listplot("rsv"+text(#),[tmp1,tmp2],concat(options,["Msg=no"])); + ); + ); +); +////%Rulerscale end//// + +MkprecommandS():=MkprecommandS(6); +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 until + 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.14until + , + 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 until + 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 until + 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)+";"; //190415 + parse(tmp1); +// Addgraph(name); // 16.04.04 + tmp2=apply(tmp,Lcrd(#)); + tmp2; + ); +); + +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=MkprecommandR(); //17.09.29 + tmp2=substring(tmp2,0,length(tmp2)-1); + tmp=[tmp1,tmp2]; + tmp=concat(tmp,dense); + cmdL=concat(cmdL,[ + "Setscaling",[SCALEX,SCALEY], //181020 + "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"])); + options=append(options,"Cat=n"); + if(ErrFlag==0, + CalcbyR(name,cmdL,options); //17.09.29 + ); + 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("Drwpt("+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.18until + forall(1..(length(cmdL)), + tmp1=cmdL_#; + tmp=indexof(tmp1,";"); // 16.05.18from + if(tmp>0,endmark=";",endmark="$"); + tmp1=replace(tmp1,";",""); // 16.05.18until + if(#==length(cmdL)-1, + println(SCEOUTPUT,tmp1+";/*##*/"); + , + println(SCEOUTPUT,tmp1+endmark+"/*##*/");//16.05.18 + ); + ); + closefile(SCEOUTPUT); +); + +////%kcA start//// +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 + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + 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); + ); +); +////%kcA end//// + +////%CalcbyA start//// +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); + 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.18until +// tmp1=substring(tmp1,0,length(tmp1)-1)+"];"; //190415 + parse(name+"="+tmp1); + tmp=parse(name); + if(length(tmp)==1, + tmp1=substring(tmp1,1,length(tmp1)-1); + parse(name+"="+tmp1+";"); //190415 + ); + 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)"); + ); +); +////%CalcbyA end//// + +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,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="P", // 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.26until + 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,1)); //181111 + tmp2=substring(#,tmp,length(#)); + if(tmp1=="P", + precise=parse(tmp2); + options=remove(options,[#]); + ); + if(tmp1=="D", + 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+";"); //190415 + ); + if(ErrFlag==0, + if(disp==1, // 15.11.24 + println(nm+" is : "); + println(parse(nm)); + ); + ); + out; //16.05.26until +); + +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 start//// +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 + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + 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); + ); +); +////%kcM end//// + +////%CalcbyM start//// +CalcbyM(name,cmd):=CalcbyM(name,cmd,[]); +CalcbyM(name,cmd,optionorg):=( +//help:CalcbyM("a",cmdL); +//help:CalcbyM(options1= ["m/r","Wait=5","Errchk=y(/n)","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,errchk,waiting,num,st); + options=optionorg; + tmp=divoptions(options); + eqL=tmp_5; + realL=tmp_6; + strL=tmp_7; + wfile=""; + errchk="Y"; //190411 + waiting=5; + dig=6; + allflg=1; + powerd="false"; + line=1000; // 16.06.13 + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(tmp1=="E", + errchk=Toupper(substring(tmp_1,0,1)); //190411 + 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+".txt"; //190411 + 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=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(#), + 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)&(errchk=="Y"), //190411 + println("Some error(s) occurred"); //2016.02.24 from + tmp2=tokenize(tmp1,"(%"); + forall(4..length(tmp2),println(tmp2_#)); //2016.02.24 until + 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.26until + ); + ); + 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+";"); //190415 + tmp=parse(name); + if(length(tmp)==1, + tmp1=substring(tmp1,1,length(tmp1)-1); + parse(name+"="+tmp1+";"); //190415 + ); + 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)"); + ); + ); +); +////%CalcbyM end//// + +////%Mxfun start//// +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=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); //190424 + tmp2=tmp_2; + if(tmp1=="P", + precise=parse(tmp2); + options=remove(options,[#]); + ); + if(tmp1=="D" , //190327(to 1 char) + tmp=Toupper(substring(tmp2,0,1)); + if((tmp=="F") % (tmp=="N"), + disp=0; + ); + options=remove(options,[#]); + ); + if((tmp1=="P") % (tmp1=="L"), //190327(to 1 char) + pack=tokenize(tmp2,"::"); + options=remove(options,[#]); + ); + if(tmp1=="S", //190327(to 1 char) + set=tokenize(tmp2,"::"); + options=remove(options,[#]); + ); + if(tmp1=="A", //190327(to 1 char) + 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); +); +////%Mxfun end//// + +////%Mxtex start//// +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,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="D" , + 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//190415 + parse(tmp); + out; +); +////%Mxtex end//// + +////%MxtexL start//// +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+";"; //190415 + 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; +); +////%MxtexL end//// + +////%Mxload start//// +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; +); +////%Mxload end//// + +////%Maxima2Cindydata start//// +Maxima2Cindydata(str):=( //17.10.24 + regional(out,numstr,eL,nn,ne,flg,tmp); + numstr="-0123456789"; + eL=Indexall(str,"e"); + if(length(eL)==0, + out=str; + , + out=substring(str,0,eL_1-1); + forall(1..(length(eL)),nn, + ne=eL_nn; + flg=0; + forall(1..5, + if(flg==0, + tmp=substring(str,ne+#-1,ne+#); + if(indexof(numstr,tmp)==0, + flg=#; + tmp=substring(str,ne,ne+flg-1); + out=out+"*10^("+tmp+")"; + ); + ); + ); + if(nn<length(eL), + out=out+substring(str,ne+flg-1,eL_(nn+1)-1); + , + out=out+substring(str,ne+flg-1,length(str)); + ); + ); + ); + parse(out); +); +////%Maxima2Cindydata end//// + +////%kcV3 start//// +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=Dqq(PathV3)+" "+Dqq(tmp1+filename); + println(SCEOUTPUT,tmp); + println(SCEOUTPUT,"exit"); + closefile(SCEOUTPUT); + println(kc(Dirwork+Batparent,Dirlib,Fnametex));// 16.05.29,06.05 + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + println(SCEOUTPUT,"#!/bin/sh"); + println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); + if(PathV3=="preview", //181202from + tmp="open -a "+Dqq("preview"); + , + tmp=Dqq(PathV3); + ); + tmp=tmp+" "+Dqq(tmp1+filename); //181202to + 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 start//// +Changeobjscale(fname):=( + regional(fout); + fout=replace(fname,".obj",""); + fout=fout+"out.obj"; + Changeobjscale(ULEN,fname,fout,[]); +); +Changeobjscale(fname,Arg):=( + regional(fout); + if(islist(Arg), + fout=replace(fname,".obj",""); + fout=fout+"out.obj"; + Changeobjscale(ULEN,fname,fout,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",fname,fnameout); +//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=RSform(tmp1); + cmdL=[ + "Origin="+tmp1,[], + "Sc="+format(sc,6),[], + "Stv=readLines",[Dq+fname+Dq], + "cat('',file="+Dq+fout+Dq+")",[], + "for(nn in Looprange(1,length(Stv))){",[], + " if(substring(Stv[nn],1,2)=='v '){",[], + " Tmp1=paste('c(',substring(Stv[nn],3),')',sep='')",[], + " Tmp1=gsub(' ',',',Tmp1,fixed=TRUE)",[], + " Tmp1=gsub(',,',',',Tmp1,fixed=TRUE)",[], + " Tmp1=gsub('(,','(',Tmp1,fixed=TRUE)",[], + " Tmp=eval(parse(text=Tmp1))",[], + " Tmp=Origin+Sc*(Tmp-Origin)",[], + " Stv[nn]=paste('v ',sprintf('%8.5f %8.5f %8.5f',Tmp[1],Tmp[2],Tmp[3]),sep='')",[], + " }",[], + " cat(Stv[nn],'\n',sep='',file="+Dq+fout+Dq+",append=TRUE)",[], + "}",[] + ]; + options=concat(["Wait=3","Cat=n","File="+fmd],options); // 16.06.26 + CalcbyR("cs",cmdL,options); + println("Scale of "+fname+" changed"); +); +////%Changeobjscale end//// + +////%Setobj start//// +//Objname(str):=Objname(str,["m","v"]); //180906from +//Objname(str,options):=Setobj(str,options); +Setobj():=Setobj(Fhead,["m","v"]); //180901 +Setobj(Arg1):=( + if(isstring(Arg1), + Setobj(Arg1,["m","v"]); //17.01.12 + , + Setobj(Fhead,Arg1); //180902 + ); +); +Setobj(str,optionsorg):=( //180906to +//help:Setobj(); +//help:Setobj(["v"]); +//help:Setobj(options=["m","v","preview","Zax=y(/n)"]); + regional(options,tmp,strL); + options=select(optionsorg,length(#)>0); //17.12.23from + tmp=Divoptions(options); //181203from + strL=tmp_7; + forall(strL, + if(Toupper(substring(#,0,1))=="P", + PathV3="preview"; + options=remove(options,[#]); + ); + ); //181203to + if(length(str)>0, + OCNAME=str; + ); + if(length(options)>0, + OCOPTION=options; + , + OCOPTION=["m","v"]; + ); //17.12.23until + println("generate OBJCMD. name="+OCNAME+", option="+OCOPTION); +); +////%Setobj end//// + +////%Mkviewobj start//// +Mkviewobj():=Mkviewobj(OCNAME,OBJCMD,OCOPTION); //181209 +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.13until + if(islist(Arg2), + Mkviewobj(Dirwork,Arg1,Arg2,Arg3); + , + Mkviewobj(Arg1,Arg2,Arg3,[]); + ); + ); +); +Mkviewobj(pathorg,fnameorg,cmdLorg,optionorg):=( +//help:Mkviewobj(); + regional(path,cmdL,eqL,strL,flg,fname,options,make,view,cmdlist, + vtx,face,unit,tmp,tmp1,tmp2,store,dt,nn,zax); + store=Fillblack(); //181128 +println([3647,store]); + 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=""; + zax="Y"; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="U", // 16.06.30from + unit=tmp2; + options=remove(options,[#]); + ); // 16.06.30to + if(tmp1=="Z", // 16.06.30from + zax=Toupper(substring(tmp_2,0,1)); + options=remove(options,[#]); + ); // 16.06.30to + ); + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + make=1; +// options=remove(options,[#]); //181203 + ); + if(tmp=="R", + make=0; +// options=remove(options,[#]); //181203 + ); + 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=MkprecommandR(); + cmdlist=concat(cmdlist,["Openobj",[Dq+path+fname+Dq]]); + cmdlist=concat(cmdlist,cmdL); + tmp=["Closeobj()",[]];//181130 + cmdlist=concat(cmdlist,tmp); + tmp1=apply(options,Toupper(substring(#,0,1))); // 16.04.23from + tmp1=select(tmp1,#=="W"); + if(length(tmp1)==0, + tmp=append(tmp,"Wait=10"); + );// 16.04.23to + CalcbyR("",cmdlist,tmp); //180902 + 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.30until + if(view==1, + if((PathV3=="preview")%(zax=="Y"), //181209 + dt=Readlines(fname); + forall(1..(length(dt)),nn, + tmp1=dt_nn; + if(substring(tmp1,0,2)=="v ", + tmp=replace(tmp1," "," "); + tmp=tokenize(tmp," "); + tmp=Sprintf(tmp_(2..4),4); + tmp2="v "+tmp_2+" "+tmp_3+" "+tmp_1; + dt_nn=tmp2; + ); + ); + fname=replace(fname,".","prv."); + SCEOUTPUT = openfile(fname); + forall(dt, + println(SCEOUTPUT,#); + ); + closefile(SCEOUTPUT); + ); + kcV3(path,fname); + ); + Fillrestore(store); //181128 +); +////%Mkviewobj end//// + +////%Mkobjcmd start//// +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=RSform(substring(ffd_5,0,tmp-1)); + tmp2=RSform(substring(ffd_5,tmp,length(ffd_5))); + tmp=indexof(ffd_6,"="); + tmp3=RSform(substring(ffd_6,0,tmp-1)); + tmp4=RSform(substring(ffd_6,tmp,length(ffd_6))); + out=["Fun"+nm+"<- function("+tmp1+","+tmp3+"){",[]]; + tmp=" Out=c("+ffd_2+","+ffd_3+","+ffd_4+")"; + out=concat(out,[tmp,[]]); + out=concat(out,["}",[]]); + 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+";"); //190415 + println("cmd seq oc"+nm+" generated"); // 16.06.10until + OBJCMD=concat(OBJCMD,out);//16.11.29 + out; +); +////%Mkobjcmd end//// + +////%Mkobjnrm start//// +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.21until + "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.02until + out; +); +////%Mkobjnrm end//// + +////%Mkobjthickcmd start//// +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.21until + 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=RSform(substring(ffd_5,tmp,length(ffd_5))); + tmp=indexof(ffd_6,"="); + tmp3=substring(ffd_6,0,tmp-1); + tmp4=RSform(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=["Fun"+nm+"<- function("+tmp1+","+tmp3+"){",[]]; + tmp=" c("+ffd_2+","+ffd_3+","+ffd_4+")"; + out=concat(out,[tmp,[]]); + out=concat(out,["}",[]]); + tmp=["Fnrm"+nm+"<- function("+xst+","+yst+"){",[]]; + out=concat(out,tmp); + if(fnrm=="", + tmp=Mkobjnrm(nm,fd,options); + tmp1=RSform(tmp); + tmp="Fnrmden"+nm+"("+xst+","+yst+"):="+tmp_2+";"; //190415 + parse(tmp); + , + tmp1=RSform(fnrm); +// if(indexof(tmp1,"Out=")==0, // 16.05.09from +// tmp1="Out="+tmp1; +// ); // 16.05.09until + ); + out=concat(out,[tmp1,[]]); + out=concat(out,["}",[]]); + 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+";"); //190415 + println("cmd seq oc"+nm+" generated"); // 16.06.10until + OBJCMD=concat(OBJCMD,out);//16.11.29 + out; +); +////%Mkobjthickcmd end//// + + +////%Mkobjpolycmd start//// +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_#); + ); + ); + tmp1=RSform(textformat(vtx,5),2);//17.12.24from + tmp2=RSform(textformat(face,5),2); + out=["Objpolyhedron",[tmp1,tmp2]];//17.12.24until + 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+";"); //190415 + println("cmd seq oc"+nm+" generated"); // 16.06.10until + OBJCMD=concat(OBJCMD,out);//16.11.29 + out; +); +////%Mkobjpolycmd end//// + +////%Mkobjplatecmd start//// +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,tmp4); + 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.04until + ); // 16.06.19until + 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); + tmp3=RSform(textformat(vtx,5),2);//17.12.24from + tmp4=RSform(textformat(tmp2,5),2); + out=concat(out,["Objpolyhedron",[tmp3,tmp4]]);//17.12.24until + ); + ); + 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+";"); //190415 + println("cmd seq oc"+nm+" generated"); + OBJCMD=concat(OBJCMD,out);//16.11.29 + out; +); +////%Mkobjplatecmd end//// + +////%Mkobjcrvcmd start//// +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.23until + if(!isstring(tmp1_1), + forall(1..length(tmp1), + tmp=["Objcurve",[pst+"[["+text(#)+"]]",thick,poly,dir]];//17.12.22 + out=concat(out,tmp); + ); + , + forall(1..length(tmp1), // 16.11.14from + tmp=["Objcurve",[tmp1_#,thick,poly,dir]]; + out=concat(out,tmp); + );// 16.11.14until + ); + , + 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+";"); //190415 + println("cmd seq oc"+nm+" generated"); // 16.06.10until + OBJCMD=concat(OBJCMD,out);//16.11.29 + out; +); +////%Mkobjcrvcmd end//// + +////%Mkobjsymbcmd start//// +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,dtLstr,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]); + ); + out=[]; + tmp=parse(symb); + if((islist(symb)) % (islist(tmp)), //17.12.24from + if(islist(tmp), + dtL=[symb]; + , + dtL=symb; + ); //17.12.24until + , + 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)); + if(length(path)>0, // 16.04.23from + setdirectory(path); + , + tmp=Dirhead+"/data/fontF"; // 16.05.10 + setdirectory(tmp); + ); // 16.04.23until + dtL=Readbezier(symb,opbez); + dtLstr=dtL; //17.12.23 + setdirectory(Dirwork); + forall(dtL,dt, + tmp=dt+"="; + tmp1=select(GLIST,indexof(#,tmp)>0); + if(length(tmp1)>0,//17.12.23from + tmp1=tmp1_1; + out=concat(out,[tmp1,[]]); + ); //17.12.23until + ); + 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"]); + Translatedata(dt,"rt"+dt,-center,["nodisp"]); + tmp1=append(tmp1,"tr"+dt); + ); + dtL=tmp1; + forall(dtL,dt, + tmp=dt+"="; + tmp1=select(GLIST,indexof(#,tmp)>0); + if(length(tmp1)>0, //17.12.23from + tmp1=tmp1_1; + out=concat(out,[tmp1,[]]); + ); //17.12.23until + ); + ); + tmp1=text(options); + tmp1=substring(tmp1,1,length(tmp1)-1); + tmp2=""; //17.12.23from + forall(dtL, + tmp2=tmp2+","+#; + ); + tmp2="list("+substring(tmp2,1,length(tmp2))+")"; //17.12.23until + out=concat(out,[ + "Sd=Symb3data",[tmp2,size,0,dir,pos], //17.12.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+";"); //190415 +// println("cmd seq oc"+symborg+" generated"); // 16.06.10until + OBJCMD=concat(OBJCMD,out);//16.11.29 + out; +); +////%Mkobjsymbcmd end//// + +////%Concatcmd start//// +Concatcmd(cmdlist):=( +//help:Concatcmd([cmdL1,cmdL2]); + regional(out); + out=[]; + forall(cmdlist, + out=concat(out,#); + ); + out; +); +////%Concatcmd end//// + +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); + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + 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 + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + 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)+"];"; //190415 + parse(tmp); + tmp=parse(name); + if(length(tmp)==1, + tmp1=substring(tmp4,1,length(tmp3)-1); + parse(name+"="+tmp1+";"); //190415 + ); + 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,1)); + tmp2=substring(#,tmp,length(#)); + if(tmp1=="D" , + 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); +); + +///////////////// C function ////////////////// + +Cformold(strorg):=( +//help:Cform(str); + regional(str,ter,out,hat,pare,ns,ne,nn,jj,flg,flg2, + lv,str1,str2,tmp,tmp1,tmp2); + ter=["+","-","*","/","(",")","="]; //180517 + str=replace(strorg,"pi","M_PI"); + hat=Indexall(str,"^"); + pare=Bracket(str,"()"); + out=""; + ns=0; + forall(hat,nn, + tmp=substring(str,nn-2,nn-1); + if(tmp==")", + tmp1=substring(str,ns,nn-1); + tmp2=Parlevel(tmp1); + tmp=tmp2_(length(tmp2))_2; + lv=select(tmp2,#_2==-tmp); + tmp=lv_1_1; + out=out+substring(str,ns,ns+tmp-1); + str1=substring(str,ns+tmp,nn-2); + , + tmp=0;//180517 + flg=0; + tmp2=reverse(ns..(nn-1)); + forall(tmp2,jj, + if(flg==0, + tmp1=substring(str,jj-1,jj); + if(contains(ter,tmp1), + tmp=jj; + flg=1; + ); + ); + ); + tmp1=substring(str,ns,tmp); + out=out+tmp1; + str1=substring(str,tmp,nn-1); + ); + tmp=substring(str,nn,nn+1); + if(tmp=="(", + tmp1=substring(str,nn,length(str)); + tmp2=Parlevel(tmp1); + lv=select(tmp2,#_2==-1); + tmp=lv_1_1; + str2=substring(tmp1,1,tmp-1); + ns=nn+tmp; + , + flg=0;tmp=0; + forall(nn..(length(str)),jj, + if(flg==0, + tmp1=substring(str,jj,jj+1); + if((length(tmp1)==0)%(contains(ter,tmp1)), + tmp=jj; + flg=1; + ); + ); + ); + str2=substring(str,nn,tmp); + ns=nn+1; + ); + out=out+"pow("+str1+","+str2+")"; + ); + str=out+substring(str,ns,length(str)); + str=str+"#"; + ter=apply(0..9,text(#)); + ter=append(ter,"."); + out=""; + tmp=substring(str,0,1); + if(contains(ter,tmp), + flg=1;out="";tmp1=tmp; + , + flg=0;out=tmp;tmp1=""; + ); + forall(2..(length(str)), + tmp=substring(str,#-1,#); + if(contains(ter,tmp), + if(flg==1, + tmp1=tmp1+tmp; + , + tmp1=tmp; + ); + flg=1; + , + if(flg==1, + if(indexof(tmp1,".")==0, + tmp1=tmp1+".0"; + ); + out=out+tmp1+tmp; + , + out=out+tmp; + ); + tmp1="";flg=0; + ); + ); + out=substring(out,0,length(out)-1); + out; +); + +////%Cform start//// +Cform(strorg):=( //181106 +//help:Cform(str); + regional(str,str2,out,ter,num,hat,pare,jj,ns,ne,nsa,nea,flg,flg2,tmp,tmp1,tmp2); + ter=["+","-","*","/","(",")","="]; //180517 + str=replace(strorg,"pi","M_PI"); + num=apply(0..9,text(#)); //181107from + num=append(num,"."); + flg=0; + tmp1=str+"/"; + tmp2=""; + str=""; + forall(1..(length(tmp1)), + tmp=substring(tmp1,#-1,#); + if(contains(num,tmp), + if(flg==0, + tmp2=tmp; + flg=1; + , + tmp2=tmp2+tmp; + ); + , + if(flg==1, + if(indexof(tmp2,".")==0, tmp2=tmp2+".0"); + str=str+tmp2+tmp; + flg=0; + , + str=str+tmp; + ); + ); + ); + str=substring(str,0,length(str)-1); //181107to + out=""; + flg=0; + forall(1..100,jj, + if(flg==0, + hat=indexof(str,"^"); + if(hat==0, + out=out+str; + flg=1; + , + ne=hat-1; + if(substring(str,ne-1,ne)==")", + ne=ne-1; + pare=Bracket(str,"()"); + tmp=select(pare,#_1==hat-1); + tmp=tmp_1_2; + tmp1=select(pare,(#_1<hat)&(#_2==-tmp)); + ns=tmp1_(length(tmp1))_1+1; + nsa=ns-1; + , + flg2=0; + forall(reverse(1..ne), + if(flg2==0, + if(contains(ter,substring(str,#-1,#)), + ns=#+1; + flg2=1; + ); + ); + ); + if(flg2==0,ns=1); + nsa=ns; + ); + str2="pow("+substring(str,ns-1,ne)+","; + ns=hat; + if(substring(str,ns,ns+1)=="(", + ns=ns+2; + pare=Bracket(str,"()"); + tmp=select(pare,#_1==hat+1); + tmp=tmp_1_2; + tmp1=select(pare,(#_1>hat)&(#_2==-tmp)); + ne=tmp1_1_1-1; + nea=ne+1; + , + ns=ns+1; + flg2=0; + forall(ns..(length(str)), + if(flg2==0, + if(contains(ter,substring(str,#-1,#)), + ne=#-1; + flg2=1; + ); + ); + ); + if(flg2==0,ne=length(str)); + nea=ne; + ); + str2=str2+substring(str,ns-1,ne)+")"; + out=out+substring(str,0,nsa-1)+str2; + str=substring(str,nea,length(str)); + ); + ); + ); + out; +); +////%Cform end//// + +////%ConvertFdtoC start//// +ConvertFdtoC(Fd):=ConvertFdtoC(Fd,["x","y","z"]); +ConvertFdtoC(Fd,name):=( +//help:ConvertFd(Fd); + regional(FdL,FdC,uvar,vvar,tmp,tmp1); + FdL=Fullformfunc(Fd); + tmp=indexof(FdL_5,"="); //180303from + uvar=substring(FdL_5,0,tmp-1); + tmp=indexof(FdL_6,"="); + vvar=substring(FdL_6,0,tmp-1); + tmp1=apply(2..6,Assign(FdL_#,uvar,"u")); + tmp1=apply(tmp1,Assign(#,vvar,"v")); + tmp1=concat(tmp1,FdL_(7..8)); + FdC=apply(1..3,name_#+"="+Cform(tmp1_#)); + FdC=concat(FdC,[Cform(tmp1_4),Cform(tmp1_5)]); + FdC=concat(FdC,[tmp1_6]); +); +////%ConvertFdtoC end//// + +////%Startsurf start//// +Startsurf():=StartsurfC(); +Startsurf(Arg):=StartsurfC(Arg); +Startsurf(Nplist,Dsizelist,Epslist):=StartsurfC("",Nplist,Dsizelist,Epslist); //181116 +Startsurf(restr,Nplist,Dsizelist,Epslist):=StartsurfC(restr,Nplist,Dsizelist,Epslist); +StartsurfC():=StartsurfC("",[50,50],[1500,500,200],[0.01,0.1]);//180611renewed +StartsurfC(Arg):=( + regional(tmp); + if(isstring(Arg), + StartsurfC(Toupper(Arg),[50,50],[1500,500,200],[0.01,0.1]); + , + tmp=max(Arg); + if(tmp>=500, + StartsurfC("",[50,50],Arg,[0.01,0.1]); + , + if(tmp>1, + StartsurfC("",Arg,[1500,500,200],[0.01,0.1]); + , + StartsurfC("",[50,50],[1500,500,200],Arg); + ); + ); + ); +); +StartsurfC(restr,Nplist,Dsizelist,Epslist):=(//180501 +//help:Startsurf(); +//help:Startsurf("reset"); +//help::Startsurf([0.01,0.1]); +//help:Startsurf([50,50],[1500,500,200],[0.01,0.1]); +//help:Startsurf([50],[1500,500],[0.01,0.1]); + regional(divL,sizeL,epsL); + StyleListC=[]; //181107 + CommandListC=[];//180608(2lines) + FuncListC=[]; + if(substring(restr,0,1)=="R", //180611(3lines) + GLIST=[]; + ); + divL=Nplist; sizeL=Dsizelist; epsL=Epslist; + if(length(divL)==0,divL=[50]); + if(length(divL)==1,divL=append(divL,divL_1)); + if(length(sizeL)==0,sizeL=[1500]); //180610from + if(length(sizeL)==1,sizeL=append(sizeL,500)); + if(length(sizeL)==2,sizeL=append(sizeL,200)); + sizeL=prepend(5000,sizeL); //180610to + if(length(epsL)==0,epsL=[0.01]); + if(length(epsL)==1,epsL=append(epsL,0.1)); + epsL=prepend(0.00001,epsL); + ConstantListC=[divL,sizeL,epsL]; +); +////%Startsurf end//// + +////%Contsurf start//// +Contsurf():=ContsurfC(""); +Contsurf(restr):=ContsurfC(restr); +ContsurfC(restr):=(//181101 +//help:Contsurf(); + regional(cL,tmp,tmp1,tmp2); + if(substring(restr,0,1)=="R", + GLIST=[]; + ); + cL=CommandListC; + cL=cL_(1..(length(cL)-1)); + CommandListC=cL; +); +////%Contsurf end//// + +////%kcC start//// +kcC():=kcC(FheadC); +kcC(cname):=( + regional(tmp, tmp1,flg,rfile); + rfile=cname+"end.txt"; //180517 + 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,"cd "+Dq+Dirwork+Dq); + println(SCEOUTPUT,"%path%\main.exe"); + println(SCEOUTPUT,"echo ////> %path%\"+rfile); + println(SCEOUTPUT,"exit"); + closefile(SCEOUTPUT); + tmp=cname+".txt"; + println(kc(Dirwork+Batparent,Mackc+Dirlib,tmp)); + , + if(ismacosx(), //181125from + SCEOUTPUT = openfile("kc.command"); + , + SCEOUTPUT = openfile("kc.sh"); + ); //181125to + println(SCEOUTPUT,"#!/bin/sh"); + println(SCEOUTPUT,"cd "+Dq+Dirwork+Dq); + tmp=PathC+" "+cname+".c -o main.out -lm"; //190123 + println(SCEOUTPUT,tmp); + println(SCEOUTPUT,"./main.out"); + println(SCEOUTPUT,"echo ////>"+rfile); + println(SCEOUTPUT,"exit 0"); + closefile(SCEOUTPUT); + tmp=cname+".txt"; + println(kc(Dirwork+Shellparent,Mackc+Dirlib,tmp)); + ); + SCEOUTPUT=openfile(wfile); + println(SCEOUTPUT,""); + closefile(SCEOUTPUT); + flg=0; + repeat(floor(10*10000/WaitUnit), //180615 + if(flg==0, + tmp1=load(wfile); + if(substring(tmp1,0,4)=="////", + flg=1; + ); + wait(WaitUnit); + ); + ); + if(flg==0, + println("kcC not completed"); + , + println("kcC succeeded"); + ); +); +////%kcC end//// + +ReaddataCold(var, fname):=ReaddataC(var, fname,[]); +ReaddataC(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_(length(tmp)-1); + gout=ReadOutData(file); + GLIST=Append(GLIST,"Tmpstr=ReadOutData("+Dq+file+Dq+")"); + 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.16until +); + +////%ReaddataC start//// +ReaddataC(fnameorg):=( + regional(tmp,tmp1,fname,data,out); + fname=fnameorg; + if(indexof(fname,".")==0, fname=fname+".txt"); + data=load(fname); + data=tokenize(data," -99999"); + out=[]; + tmp1=[]; + forall(1..(length(data)-1), + tmp=replace(data_#," ",","); + if(indexof(tmp,"99999.")==0, + tmp="["+replace(data_#," ",",")+"]"; + tmp=parse(tmp); + tmp1=append(tmp1,tmp); + , + out=append(out,tmp1); + tmp1=[]; + ); + ); + if(length(tmp1)>0,out=append(out,tmp1)); + out; +); +////%ReaddataC end//// + +////%WritedataC start//// +WritedataC(fnameorg,dataorg):=( +//help:WritedataC(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+" -99999"; + print(SCEOUTPUT,tmp); + if(nn<length(data_kk), //180426from + println(SCEOUTPUT,""); + );//180426to + ); + if(kk<length(data), + println(SCEOUTPUT,"");//180426 + println(SCEOUTPUT,"99999.00000 2.00000 0.00000 -99999"); + ); + ); + closefile(SCEOUTPUT); +); +////%WritedataC end//// + +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_(length(tmp)); + forall(eqL, + if(Toupper(substring(#,0,1))=="C", + 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); + ); + ReaddataC(var,file,options);// 17.05.24 + if(cflg==1, + Texcom("}"); + ); + ); +); + +////%Cheadsurf start//// +Cheadsurf():=( + regional(cmd,jj,divL,sizeL,epsL,nf,var1,var2,tmp,tmp1,tmp2); + divL=ConstantListC_1; + sizeL=ConstantListC_2; + epsL=ConstantListC_3; + cmd=[]; + tmp="const double XMIN="+Sprintf(XMIN,6); + tmp=tmp+",XMAX="+Sprintf(XMAX,6)+";"; + cmd=append(cmd,tmp); + tmp="const double THETA="+Sprintf(THETA,6); + tmp=tmp+",PHI="+Sprintf(PHI,6)+";"; + cmd=append(cmd,tmp); + tmp=" //THETA:"+Sprintf(THETA*180/pi,2); + tmp=tmp+", PHI:"+Sprintf(PHI*180/pi,2)+";"; + cmd=append(cmd,tmp); + tmp1=apply(divL,text(#)); + tmp="const int Mdv="+tmp1_1+",Ndv="+tmp1_2+";"; + cmd=append(cmd,tmp); + tmp1=apply(sizeL,text(#)); + tmp="#define DsizeLL "+tmp1_1; + cmd=append(cmd,tmp); + tmp="#define DsizeL "+tmp1_2; + cmd=append(cmd,tmp); + tmp="#define DsizeM "+tmp1_3; + cmd=append(cmd,tmp); + tmp="#define DsizeS "+tmp1_4; + cmd=append(cmd,tmp); + tmp1=apply(epsL,format(#,7)); + tmp="const double Eps="+tmp1_1; + tmp=tmp+", Eps1="+tmp1_2; + tmp=tmp+", Eps2="+tmp1_3+";"; + cmd=append(cmd,tmp); + tmp=replace(Dirwork,"\","/"); //180523(2lines) + tmp="const char Dirname[]="+Dq+tmp+"/"+Dq+";"; + cmd=append(cmd,tmp); + cmd=append(cmd,"double Urng[2],Vrng[2];"); + cmd=append(cmd, "int DrawE,DrawW,DrawS,DrawN;"); + cmd=append(cmd,"void rangeUV(short ch){"); + cmd=append(cmd," switch(ch){"); + forall(1..(length(FuncListC)),nf, + tmp2=" case "+text(nf)+" : "; + forall(4..5, + tmp1=FuncListC_nf_#; tmp=indexof(tmp1,"="); + tmp1=substring(tmp1,tmp+1,length(tmp1)-1); + tmp1=tokenize(tmp1,","); + if(#==4,tmp="Urng",tmp="Vrng"); + tmp2=tmp2+tmp+"[0]="+tmp1_1+";"+tmp+"[1]="+tmp1_2+";"; + ); + tmp2=tmp2+"break;"; //180523 + cmd=append(cmd,tmp2); + ); + cmd=append(cmd," }"); + cmd=append(cmd, "}"); + cmd=append(cmd,"void boundary(short ch){"); + cmd=append(cmd," switch(ch){"); + forall(1..(length(FuncListC)),nf, + tmp2=" case "+text(nf)+" : "; + tmp=FuncListC_nf_6; + tmp2=tmp2+"DrawE="; + if(indexof(tmp,"e")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); + tmp2=tmp2+"DrawW="; + if(indexof(tmp,"w")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); + tmp2=tmp2+"DrawS="; + if(indexof(tmp,"s")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); + tmp2=tmp2+"DrawN="; + if(indexof(tmp,"n")>0,tmp2=tmp2+"1;",tmp2=tmp2+"0;"); + tmp2=tmp2+"break;"; //180523 + cmd=append(cmd,tmp2); + ); + cmd=append(cmd," }"); + cmd=append(cmd,"}"); + tmp="void surffun(short ch,double u, double v, double p[3]){"; + cmd=append(cmd,tmp); + cmd=append(cmd," switch(ch){"); + forall(1..(length(FuncListC)),nf, + tmp2=" case "+text(nf)+" : "; + forall(1..3, + tmp1=FuncListC_nf_#; tmp=indexof(tmp1,"="); + tmp1=substring(tmp1,tmp,length(tmp1)); + tmp2=tmp2+"p["+text(#-1)+"]="+tmp1+";"; + ); + tmp2=tmp2+"break;"; //180523 + cmd=append(cmd,tmp2); + ); + cmd=append(cmd," }"); + cmd=append(cmd,"}"); + cmd; +); +////%Cheadsurf end//// + +////%Ctopsurf start//// +Ctopsurf(name):=Ctopsurf(name,CutFunList); +Ctopsurf(name,cutfunLorg):=( + regional(cutfunL,path,cmd,tmp,tmp1,tmp2); + cutfunL=cutfunLorg; //180601from + if(length(cutfunL)==0, + cutfunL=["1"]; + );//180601to + path=DirlibC+"/"; + path=replace(path,"\","/"); + cmd=[ + "#include <stdio.h>","#include <math.h>", + "#include <stdlib.h>","#include <string.h>", //180530 + "#include "+Dqq(Fhead+name+"header.h"), + "#include "+Dqq(path+"ketcommonhead.h"), + "#include "+Dqq(path+"ketcommon.h"), + "#include "+Dq+path+"surflibhead.h"+Dq, + "#include "+Dq+path+"surflib.h"+Dq, + "double cutfun(short chfd, short chcut, double u, double v){", + " double p[3],val;", + " surffun(chfd,u,v,p);", + " switch(chcut){" + ]; + tmp1=[]; + forall(1..(length(cutfunL)), + tmp2=replace(cutfunL_#,"x","p[0]"); + tmp2=replace(tmp2,"y","p[1]"); + tmp2=replace(tmp2,"z","p[2]"); + tmp2=" case "+text(#)+": val="+tmp2+";"; + tmp2=tmp2+"break;"; //180523 + tmp1=append(tmp1,tmp2); + ); + cmd=concat(cmd,tmp1); + cmd=concat(cmd,[ + " }", + " return val;", + "}", + "int main(void){", + " double data[DsizeL][3],sfbd[DsizeL][3],out[DsizeL][3];", //180601 + " int i, j, nall;", + " char dirfname[256] = {'\0'};" + ]); + cmd; +); +////%Ctopsurf end//// + +////%WritetoC start//// +WritetoC(nm,header,main):=( + regional(hfile,mfile,top,body,tmp,tmp1,tmp2); + hfile=Fhead+nm+"header.h"; + mfile=Fhead+nm+".c"; + top=main_1; + body=main_2; + SCEOUTPUT=openfile(hfile); + forall(header, + println(SCEOUTPUT,#+"/**/"); + ); + closefile(SCEOUTPUT); + SCEOUTPUT=openfile(mfile); + forall(top, + println(SCEOUTPUT,#); + ); + println(SCEOUTPUT,"/**/"); + forall(body, + println(SCEOUTPUT,#+"/**/"); + ); + println(SCEOUTPUT," return 0;"); + println(SCEOUTPUT,"}"); + closefile(SCEOUTPUT); +); +////%WritetoC end//// + +////%CalcbyC start//// +CalcbyC(name,cmd):=CalcbyC(name,PathC,cmd,[]); +CalcbyC(name,Arg1,Arg2):=( + if(isstring(Arg1), + CalcbyC(name,Arg1,Arg2,[]); + , + CalcbyC(name,PathC,Arg1,Arg2); + ); +); +CalcbyC(name,path,cmd,optionorg):=( + regional(options,eqL,strL,waiting,wflg,header,top,body, + wfile,hfile,mfile,flg,tmp,tmp1,tmp2,tmp3); + header=cmd_1; + top=cmd_2; + body=cmd_3; + options=optionorg; + tmp=divoptions(options); + eqL=tmp_5; + strL=tmp_7; + waiting=40; + wfile=Fhead+name+"end.txt"; //180517 + hfile=Fhead+name+"header.h"; + mfile=Fhead+name+".c"; + wflg=0; + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="W", + waiting=parse(tmp_2); + options=remove(options,[#]); + ); + ); + 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==0, + tmp1=header; + if(!isexists(Dirwork,hfile),wflg=1); + if(wflg==0, + tmp2=load(hfile); + tmp2=tokenize(tmp2,"/**/"); + tmp2=tmp2_(1..(length(tmp2)-1)); + if(length(tmp1)!=length(tmp2),wflg=1); + ); + if(wflg==0, + forall(1..(length(tmp1)), + if(tmp1_#!=tmp2_#,wflg=1); + ); + ); + if(wflg==0, + tmp1=body; + if(!isexists(Dirwork+"/",mfile),wflg=1); + if(wflg==0, + tmp2=load(mfile); + tmp2=tokenize(tmp2,"/**/"); + tmp2=tmp2_(2..(length(tmp2)-1)); + if(length(tmp1)!=length(tmp2),wflg=1); + ); + if(wflg==0, + forall(1..(length(tmp1)), + if(tmp1_#!=tmp2_#,wflg=1); + ); + ); + ); + if(wflg==0,wflg=-1); + ); + if(wflg==1, + WritetoC(name,header,[top,body]); + SCEOUTPUT=openfile(wfile); + println(SCEOUTPUT,""); + closefile(SCEOUTPUT); + kcC(Fhead+name); + ); + flg=0; + tmp1=floor(waiting*1000/WaitUnit); + repeat(tmp1, + if(flg==0, + tmp=load(wfile); + if(indexof(tmp,"////")>0, //180523from + flg=1; + tmp2=#*WaitUnit/1000;//180523to + , + if(wflg==-1, + flg=-1; + , + wait(WaitUnit); + ); + ); + ); + ); + if(flg<=0, //180615from + ErrFlag=1; + if(flg==-1, + println(wfile+" does not exist"); + , + if(flg==0, + tmp="("+text(waiting)+" s )"; + println(wfile+" not generated "+tmp); + ); + ); + );//180615to + wflg; //181101 +); +////%CalcbyC end//// + +////%Gccexists start//// +Gccexists():=( //190124 + regional(out); + if(iswindows(), + out=isexists("",PathC); + , + if(indexof(PathC,"/")==0, //190127from + out=isexists("/usr/bin",PathC); + , + out=isexists("",PathC); + ); + ); //190127to + out; +); +////%Gccexists end//// + +////%ExeccmdC start//// +ExeccmdC(nm):=ExeccmdC(nm,[],["do"]); //180531 +ExeccmdC(nm,options):=ExeccmdC(nm,options,["do"]); +ExeccmdC(nm,optionorg,optionhorg):=( +//help:ExeccmdC("1",options1,options2); +//help:ExeccmdC(options1=["dr(/da/do)","m/r","Wait=30"]); +//help:ExeccmdC(options2=["do(/nodisp/da/do)"]); + regional(options,optionsh,name2,name3,waiting,dirbkup, + eqL,reL,strL,fname,cL,tmp,tmp1,tmp2,flg,wflg,varL); + fname=Fhead+nm+".txt"; + options=optionorg; + optionsh=optionhorg; + optionsh=select(optionsh,length(#)>0); + if(length(optionsh)==0,optionsh=["do"]); + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=30; + wflg=0; + cmdflg=0; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + wflg=-1; + options=remove(options,[#]); + ); + ); + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); //181111 + if(tmp1=="W", + waiting=parse(tmp_2); + options=remove(options,[#]); + ); + ); + options=remove(options,reL); + options=select(options,length(#)>0); + if(CommonMake==1,//180609from + tmp1=append(options,"m"); + wflg=0; + ); + if(CommonMake==-1, + tmp1=append(options,"r"); + wflg=0; + );//180609to + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + tmp1=append(tmp1,"Wait="+text(waiting)); + tmp1=append(tmp1,"Disp=n"); //181024 + cL=CommandListC; //181101from + tmp2=" char fnameall[]="+Dqq(fname)+";"; + tmp=select(1..(length(cL)),indexof(cL_#,"char fnameall[]=")>0); + if(length(tmp)==0, + CommandListC=prepend(tmp2,CommandListC); + , + tmp=tmp_1; + CommandListC_tmp=tmp2; + ); + cL=CommandListC; + tmp2=" printf("+Dqq("%s\n")+","+Dqq("Execcmd "+nm)+");"; + tmp=select(1..(length(cL)),indexof(cL_#,"printf("+Dqq("%s\n")+","+Dq+"Execcmd ")>0); + if(length(tmp)==0, + CommandListC=prepend(tmp2,CommandListC); + , + tmp=tmp_1; + CommandListC_tmp=tmp2; + ); //181101to + tmp=select(CommandListC,indexof(#,"outputend")>0); + if(length(tmp)==0, + CommandListC=append(CommandListC," outputend(dirfname);"); + ); + if(length(CommandListC)<=2,ErrFlag=1); + if(ErrFlag==0, + CalcbyC(nm,[Cheadsurf(),Ctopsurf(nm),CommandListC],tmp1); + ); + if(ErrFlag==1, + err("CommandListC is empty or execcmd is not completed"); + , + varL=ReadOutData(fname,["Disp=n"]); //181029 + GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); + tmp1=select(varL,indexof(#,"h3d")==0); + tmp2=remove(varL,tmp1); + tmp1=select(tmp1,indexof(#,"3d")>0); + tmp=""; + if(length(options)>0, + forall(options, + tmp=tmp+Dqq(#)+","; + ); + tmp=substring(tmp,0,length(tmp)-1); + ); + if(length(tmp)>0,tmp=tmp+","); //180602 + tmp=tmp+Dqq("Msg=no"); //180602 + tmp1=apply(tmp1,replace(#,"3d","2d")+"=Projpara("+Dqq(#)+",["+tmp+"]);"); + forall(tmp1,parse(#)); + tmp=""; + if(length(optionsh)>0, + forall(optionsh, + tmp=tmp+Dqq(#)+","; + ); + tmp=substring(tmp,0,length(tmp)-1); + ); + tmp2=apply(tmp2,replace(#,"3d","2d")+"=Projpara("+Dqq(#)+",["+tmp+"]);"); + forall(tmp2,parse(#)); + Changestyle3d(EraseList,["nodisp"]);//180601 + ); + varL=select(varL,length(parse(#))>0); + if(length(addpath)>0,Changework(dirbkup,["Sub=n"])); //180605 + if(SUBSCR==1, // 15.02.11 + forall(varL, //181106from + Subgraph(#,""); + ); + ); //181106to + tmp=StyleListC; //181107from + tmp1=apply(1..(length(tmp)/2),[tmp_(2*#-1),tmp_(2*#)]); + forall(tmp1,tmp2, + strL=select(varL,indexof(#,tmp2_1)>0); //181114from + forall(strL, + if((length(parse(#))>0)&(length(tmp2_2))>0, + Changestyle3d(#,tmp2_2); + ); + ); //181114to + ); //181107to + varL; +); +////%ExeccmdC end//// + +////%Sfbdparadata start//// +Sfbdparadata(nm,fd):=SfbdparadataC(nm,fd); +Sfbdparadata(nm,fd,options):=SfbdparadataC(nm,fd,options); +Sfbdparadata(nm,fdorg,optionorg,optionsh):=SfbdparadataC(nm,fdorg,optionorg,optionsh); +SfbdparadataC(nm,fd):=( + SfbdparadataC(nm,fd,[],["do"]); +); +SfbdparadataC(nm,fd,options):= + SfbdparadataC(nm,fd,options,["do"]); +SfbdparadataC(nm,fdorg,optionorg,optionshorg):=( +//help:Sfbdparadata("1",Fd,nohiddenoptions,hiddenoptions); + regional(funnm,fd,options,optionsh,name2,name3,name2h,name3h,waiting, + eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,cmdflg); + if(ChNumber==0,ChNumber=Ch); + fd=ConvertFdtoC(fdorg); + tmp1=0; //180606from + forall(1..(length(FuncListC)), + if(FuncListC_#==fd, + funnm=#; + tmp1=1; + ); + ); + if(tmp1==0, + FuncListC=append(FuncListC,fd); + funnm=text(length(FuncListC)); + ); //180606to + name2="sfbd2d"+nm; + name3="sfbd3d"+nm; + name2h="sfbdh2d"+nm; + name3h="sfbdh3d"+nm; + fname=Fhead+"sfbd"+nm+".txt"; + options=select(optionorg,length(#)>0); //190123from + tmp=Divoptions(options); + if(length(tmp_7)==0,options=append(options,"dr")); + optionsh=select(optionshorg,length(#)>0); + tmp=Divoptions(optionsh); + if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=60; + wflg=0; + cmdflg=1; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + cmdflg=0; + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + cmdflg=0; + wflg=-1; + options=remove(options,[#]); + ); + if(tmp=="C", //180531 + cmdflg=1; + options=remove(options,[#]); + ); + ); + options=remove(options,reL); + options=select(options,length(#)>0); + tmp1=select(options, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from + if(length(tmp1)>0, + tmp1=tmp1_1; + tmp2=select(optionsh, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); + if(length(tmp2)==0, + if(length(optionsh)==0, + optionsh=["do",tmp1]; + , + optionsh=append(optionsh,tmp1); + ); + ); + ); //181114to + StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 + options=remove(options,eqL); + cmdL=[ + " char fname"+nm+"[]="+Dqq(fname)+";", + " rangeUV("+funnm+");", + " boundary("+funnm+");", + " sfbdparadata("+funnm+",sfbd);", + " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");", + " output3h("+Dqq("w")+","+Dqq("sfbd3d"+nm)+","+Dqq("sfbdh3d"+nm)+",dirfname,sfbd);", + " outputend(dirfname);" + ]; + if(cmdflg==1, //180531from + println(" ExeccmdC will generate "+ name3+","+name3h); + tmp=replace(cmdL_5,"fname"+nm,"fnameall");cmdL_5=tmp; //181217 + tmp=select(CommandListC,indexof(#,"output3")>0); //180601from + if(length(tmp)>0, + tmp=replace(cmdL_6,Dqq("w"),Dqq("a"));cmdL_6=tmp; + ); //180601from + cmdL=cmdL_(2..(length(cmdL)-1)); //181113 + CommandListC=concat(CommandListC,cmdL); //180531to + , + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + if(ErrFlag==0, + tmp="sfbd"+nm; + CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); + ); + if(ErrFlag==1, + err("Sfbdparadata not completed"); + , + ReadOutData(fname,["Disp=n"]); //181029 + GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); + if(islist(parse(name3)), + tmp1=name2+"=Projpara("+Dqq(name3)+",["; + tmp2=""; + if(length(options)>0, + forall(options, + tmp2=tmp2+Dqq(#)+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1); + ); + tmp1=tmp1+tmp2+"]);"; + parse(tmp1); + tmp2=select(optionsh,length(#)>0); //180517(2lines) + if(length(tmp2)==0,tmp2=["nodisp"]); + tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; + forall(tmp2, + tmp1=tmp1+Dqq(#)+","; + ); + tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; + parse(tmp1); + , + ErrFlag=1; + ); + ); + ); +); +////%Sfbdparadata end//// + +////%Crvsfparadata start//// +Crvsfparadata(nm,fk,sfbd,fd):=CrvsfparadataC(nm,fk,sfbd,fd); +Crvsfparadata(nm,fk,sfbd,fd,options):=CrvsfparadataC(nm,fk,sfbd,fd,options); +Crvsfparadata(nm,Fk,sfbdorg,fdorg,optionorg,optionsh):= + CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionsh); +CrvsfparadataC(nm,fk,sfbd,fd):= + CrvsfparadataC(nm,fk,sfbd,fd,[],["do"]); +CrvsfparadataC(nm,fk,sfbd,fd,options):= + CrvsfparadataC(nm,fk,sfbd,fd,options,["do"]); +CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionshorg):=( +//help:Crvsfparadata("1","ax3d","sfbd3d1",Fd,,nohiddenoptions,hiddenoptions); + regional(funnm,sfbd,fd,options,optionsh,name2,name3,name2h,name3h,waiting, + eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,useflg,cmdlfg,ii,jj,eps); + eps=10^(-5); + sfbd=replace(sfbdorg,"bdy","sfbd"); + fd=ConvertFdtoC(fdorg); + tmp=select(1..(length(FuncListC)),FuncListC_#==fd); + funnm=text(tmp_1); //180426 + name2="crvsf2d"+nm; + name3="crvsf3d"+nm; + name2h="crvsfh2d"+nm; + name3h="crvsfh3d"+nm; + fname=Fhead+"crvsf"+nm+".txt"; + options=select(optionorg,length(#)>0); //190123from + tmp=Divoptions(options); + if(length(tmp_7)==0,options=append(options,"dr")); + optionsh=select(optionshorg,length(#)>0); + tmp=Divoptions(optionsh); + if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=60; + wflg=0; + cmdflg=1; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + cmdflg=0; + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + cmdflg=0; + wflg=-1; + options=remove(options,[#]); + ); + if(tmp=="C", //180531 + cmdflg=1; + options=remove(options,[#]); + ); + ); + useflg="N"; //181105from + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + if(tmp1=="U", + useflg=Toupper(substring(tmp_2,0,1)); + ); + ); //181105to + options=remove(options,reL); + options=select(options,length(#)>0); + tmp1=select(options, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from + if(length(tmp1)>0, + tmp1=tmp1_1; + tmp2=select(optionsh, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); + if(length(tmp2)==0, + if(length(optionsh)==0, + optionsh=["do",tmp1]; + , + optionsh=append(optionsh,tmp1); + ); + ); + ); //181114to + StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 + options=remove(options,eqL); + if(useflg=="N", +// flg=0; +// tmp=Fhead+Fk+".dat"; +// if(!isexists(Dirwork,tmp),flg=1); +// if(flg==0, +// tmp1=ReaddataC(tmp); +// tmp2=parse(Fk); +// if(length(tmp1)==length(tmp2), +// forall(1..(length(tmp1)),ii, +// if(length(tmp1_ii)!=length(tmp2_ii),flg=1); +// forall(1..(length(tmp1_ii)),jj, +// if(flg==0, +// if(Norm(tmp1_ii_jj-tmp2_ii_jj)>eps,flg=1); +// ); +// ); +// ); +// ); +// ); +// if(flg==1, + if((islist(parse(Fk))), + tmp=Fhead+Fk+".dat"; + WritedataC(tmp,Fk); + , + useflg="Y"; + ); +// ); + ); //181105to + if(cmdflg==1, + EraseList=append(EraseList,Fk); + , + Changestyle3d(Fk,["nodisp"]); + ); + cmdL=[ + " char fname"+nm+"[]="+Dqq(fname)+";", + " rangeUV("+funnm+");", + " boundary("+funnm+");" + ]; + if(useflg=="N", //181105from + cmdL=concat(cmdL,[ + " readdataC("+Dqq(Fhead+Fk+".dat")+",data);" + ]); + , + cmdL=concat(cmdL,[ + " readoutdata3(dirfname,"+Dqq(Fk)+",data);" + ]); + ); + cmdL=concat(cmdL,[ + " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", + " crvsfparadata("+funnm+",data,sfbd, 0, out);", + " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");", + " output3h("+Dqq("w")+","+Dqq("crvsf3d"+nm)+","+Dqq("crvsfh3d"+nm)+",dirfname,out);", + " outputend(dirfname);" + ]); //181105to + if(cmdflg==1,//180531from + println(" ExeccmdC will generate "+ name3+","+name3h); + cmdL_(length(cmdL)-4)=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; //181105(2lines) + cmdL_(length(cmdL)-2)=" sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fnameall);"; + tmp=replace(cmdL_(length(cmdL)-1),Dqq("w"),Dqq("a")); cmdL_(length(cmdL)-1)=tmp; + cmdL=cmdL_(1..(length(cmdL)-1)); //181113 + CommandListC=concat(CommandListC,cmdL); //180531to + , + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + if(ErrFlag==0, + tmp="crvsf"+nm; + CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); + ); + if(ErrFlag==1, + err("Crvsfparadata not completed"); + , + ReadOutData(fname,["Disp=n"]); //181029 + GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); + if(islist(parse(name3)), + tmp1=name2+"=Projpara("+Dqq(name3)+",["; + tmp2=""; + if(length(options)>0, + forall(options, + tmp2=tmp2+Dqq(#)+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1); + ); + tmp1=tmp1+tmp2+"]);"; + parse(tmp1); + tmp2=select(optionsh,length(#)>0); //180517(2lines) + if(length(tmp2)==0,tmp2=["nodisp"]); + tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; + forall(tmp2, + tmp1=tmp1+Dqq(#)+","; + ); + tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; + parse(tmp1); + , + ErrFlag=1; + ); + ); + ); +); +////%Crvsfparadata end//// + +////%Crv3onsfparadata start//// +Crv3onsfparadata(nm,crv3d,sfbd,fd):=Crv3onsfparadataC(nm,crv3d,sfbd,fd); +Crv3onsfparadata(nm,crv3d,sfbd,fd,options):=Crv3onsfparadataC(nm,crv3d,sfbd,fd,options); +Crv3onsfparadata(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh):= + Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh); +Crv3onsfparadataC(nm,crv3d,sfbd,fd):= + Crv3onsfparadataC(nm,crv3d,sfbd,fd,[],["do"]); +Crv3onsfparadataC(nm,crv3d,sfbd,fd,options):= + Crv3onsfparadataC(nm,crv3d,sfbd,fd,options,["do"]); +Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionshorg):=( +//help:Crv3onsfparadata("1","sc3","sfbd3d1",fd,,nohiddenoptions,hiddenoptions); + regional(funnm,sfbd,fd,options,optionsh,name3,name3h,name2,name2h,waiting, + eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdflg); + tmp1=replace(crv3d,"3d","2d"); + tmp=apply(GCLIST,#_1); + if(contains(tmp,tmp1), + if(cmdflg==1, + EraseList=append(EraseList,tmp1); + , + Changestyle3d(tmp1,["nodisp"]);//180428 + ); + ); + eps=10^(-5); + sfbd=replace(sfbdorg,"bdy","sfbd"); + fd=ConvertFdtoC(fdorg); + tmp=select(1..(length(FuncListC)),FuncListC_#==fd); + funnm=text(tmp_1); //180426 + name3="crv3onsf3d"+nm; + name3h="crv3onsfh3d"+nm; + name2=replace(name3,"3d","2d"); + name2h=replace(name3h,"3d","2d"); + fname=Fhead+"crv3onsf"+nm+".txt"; + tmp=apply(fdorg,if(isstring(#),Dqq(#),#)); + tmp=text(tmp); + options=optionorg; + optionsh=select(optionshorg,length(#)>0); //181107 + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=60; + wflg=0; + cmdflg=1; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + cmdflg=0; + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + cmdflg=0; + wflg=-1; + options=remove(options,[#]); + ); + if(tmp=="C", //180531 + cmdflg=1; + options=remove(options,[#]); + ); + ); + options=remove(options,reL); + options=select(options,length(#)>0); + tmp1=select(options, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from + if(length(tmp1)>0, + tmp1=tmp1_1; + tmp2=select(optionsh, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); + if(length(tmp2)==0, + if(length(optionsh)==0, + optionsh=["do",tmp1]; + , + optionsh=append(optionsh,tmp1); + ); + ); + ); //181114to + StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 + options=remove(options,eqL); + tmp2=parse(crv3d); + flg=0; + tmp=Fhead+crv3d+".dat"; + if(!isexists(Dirwork,tmp),flg=1); + if(flg==0, + tmp1=ReaddataC(tmp); + if(length(tmp1)!=length(tmp2),flg=1); + if(flg==0, + forall(1..(length(tmp1)),ii, + if(length(tmp1_ii)!=length(tmp2_ii),flg=1); + forall(1..(length(tmp1_ii)),jj, + if(flg==0, + if(Norm(tmp1_ii_jj-tmp2_ii_jj)>eps,flg=1); + ); + ); + ); + ); + ); + if(flg==1,WritedataC(tmp,crv3d)); + cmdL=[ + " char fname"+nm+"[]="+Dqq(fname)+";", + " rangeUV("+funnm+");", + " boundary("+funnm+");", + " readdataC("+Dqq(Fhead+crv3d+".dat")+",data);", + " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", //180531 + " crv3onsfparadata("+funnm+",data,sfbd,out);", + " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");", + " output3h("+Dqq("w")+","+Dqq("crv3onsf3d"+nm)+","+Dqq("crv3onsfh3d"+nm)+",dirfname,out);", + " outputend(dirfname);" + ]; + if(cmdflg==1,//180531from + println(" ExeccmdC will generate "+ name3+","+name3h); + cmdL_7=" sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fnameall);"; //180607 + tmp=replace(cmdL_(length(cmdL)-1),Dqq("w"),Dqq("a")); cmdL_(length(cmdL)-1)=tmp; + cmdL_5=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; + cmdL=cmdL_(2..(length(cmdL)-1)); //181113 +// cmdL=remove(cmdL,[cmdL_1,cmdL_(length(cmdL))]); + CommandListC=concat(CommandListC,cmdL); //180531to + , + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + if(ErrFlag==0, + tmp="crv3onsf"+nm; + CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); + ); + if(ErrFlag==1, + err("Crvonsfparadata not completed"); + , + ReadOutData(fname,["Disp=n"]); + GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); + if(islist(parse(name3)), + tmp1=name2+"=Projpara("+Dqq(name3)+",["; + tmp2=""; + if(length(options)>0, + forall(options, + tmp2=tmp2+Dqq(#)+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1); + ); + tmp1=tmp1+tmp2+"]);"; + parse(tmp1); + tmp2=select(optionsh,length(#)>0); //180517(2lines) + if(length(tmp2)==0,tmp2=["nodisp"]); + tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; + forall(tmp2, + tmp1=tmp1+Dqq(#)+","; + ); + tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; + parse(tmp1); + , + ErrFlag=1; + ); + ); + ); +); +////%Crv3onsfparadata end//// + +////%Crv2onsfparadata start//// +Crv2onsfparadata(nm,crv2d,sfbd,fd):=Crv2onsfparadataC(nm,crv2d,sfbd,fd); +Crv2onsfparadata(nm,crv2d,sfbd,fd,options):=Crv2onsfparadataC(nm,crv2d,sfbd,fd,options); +Crv2onsfparadata(nm,crv2d,sfbd,fdorg,options,optionsh):= + Crv2onsfparadataC(nm,crv2d,sfbd,fdorg,options,optionsh); +Crv2onsfparadataC(nm,crv2d,sfbd,fd):= + Crv2onsfparadataC(nm,crv2d,sfbd,fd,["c"],["do"]); +Crv2onsfparadataC(nm,crv2d,sfbd,fd,options):= + Crv2onsfparadataC(nm,crv2d,sfbd,fd,options,["do"]); +Crv2onsfparadataC(nm,crv2d,sfbd,fdorg,options,optionsh):=( +//help:Crv2onsfparadata("1","gp1","sfbd3d1",fd,nohiddenoptions,hiddenoptions); + regional(fd,uname,vname,str,tmpfun,ii,jj,crv3d,tmp,tmp1,tmp2); + Changestyle3d(crv2d,["nodisp"]); + crv3d=crv2d+"3d"; + fd=Fullformfunc(fdorg); + tmp=Strsplit(fd_5,"="); + uname=tmp_1; + tmp=Strsplit(fd_6,"="); + vname=tmp_1; + str="["+fd_2+","+fd_3+","+fd_4+"]"; + tmp="tmpfun("+uname+","+vname+"):="+str+";"; + parse(tmp); + tmp1=parse(crv2d); + tmp2=[]; + forall(tmp1, + tmp2=append(tmp2,tmpfun(#_1,#_2)); + ); + tmp=crv3d+"="+textformat(tmp2,6)+";"; //190415 + parse(tmp); + Crv3onsfparadataC(nm,crv3d,sfbd,fdorg,options,optionsh); +); +////%Crv2onsfparadata end//// + +////%Wireparadata start//// +Wireparadata(nm,sfbd,fd,wr1,wr2):=WireparadataC(nm,sfbd,fd,wr1,wr2); +Wireparadata(nm,sfbd,fd,wr1,wr2,options):=WireparadataC(nm,sfbd,fd,wr1,wr2,options); +Wireparadata(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh):= + WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh); +WireparadataC(nm,sfbd,fd,wr1,wr2):= + WireparadataC(nm,sfbd,fd,wr1,wr2,[],["do"]); +WireparadataC(nm,sfbd,fd,wr1,wr2,options):= + WireparadataC(nm,sfbd,fd,wr1,wr2,options,["do"]); +WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionshorg):=( +//help:Wireparadata("1","sfbd3d1",fd,5,5,nohiddenoptions,hiddenoptions); + regional(funnm,fd,options,optionsh,name2,name3,name2h,name3h,waiting, + eqL,reL,strL,fname,fnameh,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,udata,vdata,cmdflg); + eps=10^(-5); + fd=ConvertFdtoC(fdorg); + tmp=select(1..(length(FuncListC)),FuncListC_#==fd); + funnm=text(tmp_1); + name2="wire2d"+nm; + name3="wire3d"+nm; + name2h="wireh2d"+nm; + name3h="wireh3d"+nm; + fname=Fhead+"wire"+nm+".txt"; + fnameh=replace(fname,".txt","h.txt"); + options=select(optionorg,length(#)>0); //190123from + tmp=Divoptions(options); + if(length(tmp_7)==0,options=append(options,"dr")); + optionsh=select(optionshorg,length(#)>0); + tmp=Divoptions(optionsh); + if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=60; + wflg=0; + options=remove(options,reL); + wflg=0; + cmdflg=1; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + cmdflg=0; + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + cmdflg=0; + wflg=-1; + options=remove(options,[#]); + ); + if(tmp=="C", //180531 + cmdflg=1; + options=remove(options,[#]); + ); + ); + options=remove(options,reL); + options=select(options,length(#)>0); + tmp1=select(options, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from + if(length(tmp1)>0, + tmp1=tmp1_1; + tmp2=select(optionsh, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); + if(length(tmp2)==0, + if(length(optionsh)==0, + optionsh=["do",tmp1]; + , + optionsh=append(optionsh,tmp1); + ); + ); + ); //181114to + StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 + options=remove(options,eqL); + if(islist(wr1), + udata=prepend(length(wr1),wr1); + , + tmp=Fullformfunc(fdorg); + tmp1=tmp_5; + tmp=indexof(tmp1,"="); + tmp=substring(tmp1,tmp,length(tmp1)); + tmp=parse(tmp); + tmp1=tmp_1; tmp2=tmp_2; + udata=apply(1..wr1,tmp1+#*(tmp2-tmp1)/(wr1+1)); + udata=prepend(wr1,udata); + ); + udata=textformat(udata,6); + udata=substring(udata,1,length(udata)-1); + if(islist(wr2), + vdata=prepend(length(wr2),wr2); + , + tmp=Fullformfunc(fdorg); + tmp1=tmp_6; + tmp=indexof(tmp1,"="); + tmp=substring(tmp1,tmp,length(tmp1)); + tmp=parse(tmp); + tmp1=tmp_1; tmp2=tmp_2; + vdata=apply(1..wr2,tmp1+#*(tmp2-tmp1)/(wr2+1)); + vdata=prepend(wr2,vdata); + ); + vdata=textformat(vdata,6); + vdata=substring(vdata,1,length(vdata)-1); + cmdL=[ + " double wireu[]={"+udata+"};", + " double wirev[]={"+vdata+"};", + " char fname[]="+Dqq(fname)+";", + " char fnameh[]="+Dqq(fnameh)+";", + " rangeUV("+funnm+");", + " boundary("+funnm+");", + " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", //180531 + " wireparadata("+funnm+",sfbd,wireu,wirev,fname,fnameh);" + ]; + if(cmdflg==1,//180531from + println(" ExeccmdC will generate "+ name3+","+name3h); + tmp=replace(cmdL_8,"fnameh",Dqq("")); + tmp=replace(tmp,"fname","fnameall"); cmdL_8=tmp; + cmdL_7=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; + cmdL=append(cmdL," outputend(dirfname);"); + tmp=remove(1..(length(cmdL)),[3,4]); //181113(2lines) + cmdL=cmdL_tmp; +// cmdL=remove(cmdL,[cmdL_3,cmdL_4]); //180827 + CommandListC=concat(CommandListC,cmdL); //180531to + , + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + if(ErrFlag==0, + tmp="wire"+nm; + CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); + ); + if(ErrFlag==1, + err("Wireparadata not completed"); + , + ReadOutData(fname,["Disp=n"]); + GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); + ReadOutData(fnameh); + GLIST=append(GLIST,"ReadOutData("+Dqq(fnameh)+")"); + if(islist(parse(name3)), + tmp1=name2+"=Projpara("+Dqq(name3)+",["; + tmp2=""; + if(length(options)>0, + forall(options, + tmp2=tmp2+Dqq(#)+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1); + ); + tmp1=tmp1+tmp2+"]);"; + parse(tmp1); + tmp2=select(optionsh,length(#)>0); //180517(2lines) + if(length(tmp2)==0,tmp2=["nodisp"]); + tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; + forall(tmp2, + tmp1=tmp1+Dqq(#)+","; + ); + tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; + parse(tmp1); + , + ErrFlag=1; + ); + ); + ); +); +////%Wireparadata end//// + +////%Intersectcrvsf start//// +Intersectcrvsf(nm,crv,fd):=IntersectcrvsfC(nm,crv,fd); +Intersectcrvsf(nm,crv,fd,Arg):=IntersectcrvsfC(nm,crv,fd,Arg); +Intersectcrvsf(nm,crv3d,fdorg,bdyeq,optionorg):= + IntersectcrvsfC(nm,crv3d,fdorg,bdyeq,optionorg); +IntersectcrvsfC(nm,crv,fd):=IntersectcrvsfC(nm,crv,fd,"",[]); +IntersectcrvsfC(nm,crv,fd,Arg):=( + if(isstring(Arg), + IntersectcrvsfC(nm,crv,fd,Arg,[]); + , + IntersectcrvsfC(nm,crv,fd,"",Arg); + ); +); +IntersectcrvsfC(nm,crv3d,fdorg,bdyeq,optionorg):=( +//help:Intersectcrvsf("1",curve,fd); + regional(fd,funnm,name,crv,fd,options,reL,fname,crvfname,argR, + waiting,tmp,tmp1,tmp2,flg,wflg,pts,cmdflg); + fd=ConvertFdtoC(fdorg); + tmp=select(1..(length(FuncListC)),FuncListC_#==fd); + funnm=text(tmp_1); //180426 + name="intercrvsf"+nm; + fname=Fhead+name+".txt"; + crvfname=Fhead+"crv"+nm+".txt"; + fd=apply(fdorg,if(isstring(#),Dqq(#),#)); + options=optionorg; + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=60; + wflg=0; + cmdflg=1; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + cmdflg=0; + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + cmdflg=0; + wflg=-1; + options=remove(options,[#]); + ); + if(tmp=="C", //180531 + cmdflg=1; + options=remove(options,[#]); + ); + ); + options=remove(options,eqL); + options=remove(options,reL); + options=select(options,length(#)>0); + tmp2=parse(crv3d); + flg=0; + tmp=Fhead+crv3d+".dat"; + if(!isexists(Dirwork,tmp),flg=1); + if(flg==0, + tmp1=ReaddataC(tmp); + if(length(tmp1)!=length(tmp2),flg=1); + if(flg==0, + forall(1..(length(tmp1)),ii, + if(length(tmp1_ii)!=length(tmp2_ii),flg=1); + forall(1..(length(tmp1_ii)),jj, + if(flg==0, + if(Norm(tmp1_ii_jj-tmp2_ii_jj)>eps,flg=1); + ); + ); + ); + ); + ); + if(flg==1,WritedataC(tmp,crv3d)); + cmdL=[ + " double crv3d[DsizeL][3];", + " char fname"+nm+"[]="+Dqq(fname)+";", + " rangeUV("+funnm+");", + " boundary("+funnm+");", + " readdataC("+Dqq(Fhead+crv3d+".dat")+",crv3d);", + " intersectcrvsf("+Dqq("w")+","+funnm+",crv3d,"+Dqq(fname)+");", + " sprintf(dirfname,"+Dqq("%s%s")+",Dirname,fname"+nm+");" + ]; + if(cmdflg==1,//180531from + cmdL_6=" intersectcrvsf("+Dqq("a")+","+funnm+",crv3d,fnameall);"; + tmp=remove(1..(length(cmdL)),[2,length(cmdL)]); //181113(2lines) + cmdL=cmdL_tmp; +// cmdL=remove(cmdL,[cmdL_2]); +// cmdL=remove(cmdL,[cmdL_(length(cmdL))]); + CommandListC=concat(CommandListC,cmdL); //180531to + , + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + if(ErrFlag==0, + tmp="crv3onsf"+nm; + CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); + ); + if(ErrFlag==1, + err("Intersectcrvsf not completed"); + , + ReadOutData(fname,["Disp=n"]); //181029 + ); + println("generate "+name); + parse(name); + ); +); +////%Intersectcrvsf end//// + +////%Sfcutparadatacdy start//// 181112 +Sfcutparadatacdy(nm,cutfun,fd):= + Sfcutparadatacdy(nm,cutfun,fd,[]); +Sfcutparadatacdy(nm,cutfun,fd,options):=( +//help:Sfcutparadatacdy("1","2*x+3*y+z=1","sfbd3d",fd,options); + regional(out3,out2,name3,name2,eps,fdL,rep,jj,pL,vn1,vn2, + tmp,tmp1,tmp2); + eps=10^(-5); + name2="sfcc2d"+nm; + name3="sfcc3d"+nm; + fdL=Fullformfunc(fd); + tmp=Strsplit(fdL_5,"="); + vn1=tmp_1; + tmp=Strsplit(fdL_6,"="); + vn2=tmp_1; + rep=["x",fdL_2,"y",fdL_3,"z",fdL_4]; + tmp=Assign(cutfun,rep); + Implicitplot("sfc"+nm,tmp,fd_5,fd_6,["Msg=n","nodisp"]); + out3=[]; out2=[]; + tmp1=parse("impsfc"+nm); + if(Measuredepth(tmp1)==1,tmp1=[tmp1]); + forall(1..(length(tmp1)),jj, + pL=tmp1_jj; + tmp2=[]; + forall(pL, + tmp=Assign("[x,y,z]",rep); + tmp=Assign(tmp,[vn1,#_1,vn2,#_2]); + tmp=parse(tmp); + tmp2=append(tmp2,tmp); + ); + Spaceline("-sfc"+nm+"n"+text(jj),tmp2,append(options,"Msg=n")); + out3=append(out3,tmp2); + tmp=Projcurve(tmp2); + out2=append(out2,tmp); + ); + tmp=name3+"=["; tmp1=name3+"=["; + forall(1..(length(out3)), + tmp=tmp+"sfc"+nm+"n"+text(#)+"3d"+","; + tmp1=tmp1+Dqq("sfc"+nm+"n"+text(#)+"3d")+","; + ); + tmp=substring(tmp,0,length(tmp)-1)+"];"; //190415 + parse(tmp); + tmp1=substring(tmp1,0,length(tmp1)-1)+"]"; + println("generate sfcutparadata "+tmp1); + tmp=name2+"="+Textformat(out2,6)+";"; //190415 + parse(tmp); + out3; +); +////%Sfcutparadatacdy end//// + +////%Sfcutparadata start//// +Sfcutparadata(nm,cutfunL,sfbd,fd):=SfcutparadataC(nm,cutfunL,sfbd,fd); +Sfcutparadata(nm,cutfunL,sfbd,fd,options):=SfcutparadataC(nm,cutfunL,sfbd,fd,options); +Sfcutparadata(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh):= + SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh); +SfcutparadataC(nm,cutfunL,sfbd,fd):=(//180505 + SfcutparadataC(nm,cutfunL,sfbd,fd,[],["do"]); +); +SfcutparadataC(nm,cutfunL,sfbd,fd,options):= + SfcutparadataC(nm,cutfunL,sfbd,fd,options,[]); +SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionshorg):=( +//help:Sfcutparadata("1","2*x+3*y+z=1","sfbd3d",fd,nohiddenoptions,hiddenoptions); + regional(funnm,cutfunL,fd,options,optionsh,name2,name3,name2h,name3h, + waiting,eqL,reL,strL,fname,fnameh,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdflg); + eps=10^(-5); + fd=ConvertFdtoC(fdorg); + tmp=select(1..(length(FuncListC)),FuncListC_#==fd); + funnm=text(tmp_1); + cutfunL=cutfunLorg; + if(!islist(cutfunL),cutfunL=[cutfunL]); + forall(1..(length(cutfunL)), + tmp1=Strsplit(cutfunL_#,"="); + if(length(tmp1)>1, + tmp2=tmp1_1+"-("+tmp1_2+")"; //180516 + cutfunL_#=Cform(tmp2); + ); + ); + CutFunList=cutfunL; //180601 + name2="sfcut2d"+nm; + name3="sfcut3d"+nm; + name2h="sfcuth2d"+nm; + name3h="sfcuth3d"+nm; + fname=Fhead+"sfcut"+nm+".txt"; + fnameh=replace(fname,".txt","h.txt"); + options=optionorg; + optionsh=select(optionshorg,length(#)>0); //181107 + tmp=Divoptions(options); + eqL=tmp_5; + reL=tmp_6; + strL=tmp_7; + waiting=60; + wflg=0; + options=remove(options,reL); + wflg=0; + cmdflg=1; + forall(strL, + tmp=Toupper(substring(#,0,1)); + if(tmp=="M", + cmdflg=0; + wflg=1; + options=remove(options,[#]); + ); + if(tmp=="R", + cmdflg=0; + wflg=-1; + options=remove(options,[#]); + ); + if(tmp=="C", //180531 + cmdflg=1; + options=remove(options,[#]); + ); + ); + options=select(optionorg,length(#)>0); //190123from + tmp=Divoptions(options); + if(length(tmp_7)==0,options=append(options,"dr")); + optionsh=select(optionshorg,length(#)>0); + tmp=Divoptions(optionsh); + if(length(tmp_7)==0,optionsh=append(optionsh,"do")); //190123to + tmp1=select(options, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); //181114from + if(length(tmp1)>0, + tmp1=tmp1_1; + tmp2=select(optionsh, + (indexof(#,"=")>0)&(Toupper(substring(#,0,1))=="C")); + if(length(tmp2)==0, + if(length(optionsh)==0, + optionsh=["do",tmp1]; + , + optionsh=append(optionsh,tmp1); + ); + ); + ); //181114to + StyleListC=concat(StyleListC,[name3,options,name3h,optionsh]); //181107 + options=remove(options,eqL); + tmp1=text(length(cutfunL)); + cmdL=[ + " char fname[]="+Dqq(fname)+";", + " char fnameh[]="+Dqq(fnameh)+";", + " rangeUV("+funnm+");", + " boundary("+funnm+");", + " readoutdata3("+Dqq(Fhead+replace(sfbd,"3d","")+".txt")+","+Dqq(sfbd)+",sfbd);", //180531 + " sfcutparadata("+funnm+","+tmp1+",sfbd,fname,fnameh);" + ]; + if(cmdflg==1,//180531from + println(" ExeccmdC will generate "+ name3+","+name3h); + tmp=replace(cmdL_6,"fnameh",Dqq("")); + tmp=replace(tmp,"fname","fnameall"); cmdL_6=tmp; + cmdL_5=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; + cmdL=append(cmdL," outputend(dirfname);"); + cmdL=cmdL_(3..(length(cmdL))); //181113 +// cmdL=remove(cmdL,[cmdL_1,cmdL_2]); //180827 + CommandListC=concat(CommandListC,cmdL); //180531to + , + if(wflg==1,tmp1=append(options,"m")); + if(wflg==-1,tmp1=append(options,"r")); + if(ErrFlag==0, + tmp="sfcut"+nm; + CalcbyC(tmp,[Cheadsurf(),Ctopsurf(tmp),cmdL],tmp1); //180601 + ); + if(ErrFlag==1, + err("Sfcutparadata not completed"); + , + ReadOutData(fname,["Disp=n"]); //1810209 + GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); + ReadOutData(fnameh); + GLIST=append(GLIST,"ReadOutData("+Dqq(fnameh)+")"); + if(islist(parse(name3)), + tmp1=name2+"=Projpara("+Dqq(name3)+",["; + tmp2=""; + if(length(options)>0, + forall(options, + tmp2=tmp2+Dqq(#)+","; + ); + tmp2=substring(tmp2,0,length(tmp2)-1); + ); + tmp1=tmp1+tmp2+"]);"; + parse(tmp1); + tmp2=select(optionsh,length(#)>0); //180517(2lines) + if(length(tmp2)==0,tmp2=["nodisp"]); + tmp1=name2h+"=Projpara("+Dqq(name3h)+",["; + forall(tmp2, + tmp1=tmp1+Dqq(#)+","; + ); + tmp1=substring(tmp1,0,length(tmp1)-1)+"]);"; + parse(tmp1); + , + ErrFlag=1; + ); + ); + ); +); +////%Sfcutparadata end//// + +//help:end(); + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpicR/ketpic5_2_4.r b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpicR/ketpic5_2_4.r new file mode 100644 index 0000000000..a53dd021a8 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpicR/ketpic5_2_4.r @@ -0,0 +1,14413 @@ +# 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/> + + +######################################### + +ThisVersion<- "KeTpic for R v5_2_4(18.02.26)" + +print(ThisVersion) + +# 2018.02.26 +# Sfcutparadata changed +# Partcrv3 debugged +# Projcurve rewritten +# Nohiddenparadata debugged +# PthiddenQ debugged +# 2018.02.24 +# Sfcutdata added ( for functions ) +# Meetpoints debugged (case Norm(PtB-PtA)<Eps0) +# 2018.02.23 +# Makevaltable2 added ( for functions ) +# 2018.02.23 +# Crvonsfparadata,Crv3onsfparadata added +# Wireparadata added +# 2018.02.22 +# PthiddenQ,Nohiddenpara2 changed (Eps2) +# 2018.02.21 +# PthiddenQ,Meetpoints debugged +# Crvsfparadata debugged (OTHERPARTITION) +# Partitionseg debugged (for non-list) and changed (Ns=0) +# Intersectcrvsf added +# 2018.02.19 +# Groupnearpt added +# Collectnear debugged +# Meetpoints,PthiddenQ debugged and changed (Groupnearpt used ) +# Parapt changed (for point list ) +# Partitionseg changed (remove close value ) +# Fullformfunc changed (Initialization of ADDPOINT) +# Addpoints added +# 2018.02.18 +# Projpara debugged ( for empty data, Mix replace ) +# WriteOutData debugged (for emply data ) +# Sfbdparadata,Cuspparadata debugged +# Meetpoints replaced +# 2018.02.17 +# PthiddenQ replaced +# 2018.02.15 +# Cancoordpara debugged (X=-... ) +# 2018.02.14 +# Paramoncrv,Pointoncrv renamed to ...curve +# 2018.02.12 +# Nohiddenpara2 debugged ( CUSPPT should be a list ) +# Dropnumlistcrv changed (Eps) +# 2018.02.11 +# Paramocrv debugged ( case N=Length(PtL) ) +# Sfbdparadata, Borderparadata, Makexybdy, Partitionseg, +# Evlptablepara, Fullformfunc, Dropnumlistcrv, Cuspsplitpara, +# PthiddenQ, Nohiddenpara2 added +# Crvsfparadata, Meetpoints, Clipdomain added +# 2018.02.10 +# Partcrv3 debugged +# 2018.02.09 +# Ptstart,Ptend changed ( for the case fig is empty) +# Norm changed (Dotprod used ) +# 2018.02.07 +# Collectnear debugged (Looprange ) +# Intersectcurves debugged (sum) +# 2018.02.06 +# Kukeiiwake debugged ( ParamonCurve -> Paramoncrv ) +# 2018.02.05 +# Dotprod changed ( crossprod not used ) +# Intersectpartseg changed ( case of length of result =1) +# 2018.02.04 +# Diff added ( func, withvar, (varnamevalue1,... )) +# Funvalue added ( for an expression ) +# 2018.02.02 +# Enclosing2 changed ( for distant curves, startpt option removed ) +# 2018.02.01 +# Intersectline,Intersectseg,...,Intersectcuves added +# Quicksort added +# Enclosing2 added (incomplete) +# 2018.01.29 +# Length added +# 2017.12.24 +# Objpolyhedron added +# 2017.12.23 +# Objsymb, symb3data added +# Objrecs, Objpolygon debugged +# Objthicksurf added +# 2017.12.22 +# Openobj,Closeobj,Writeobjpoint,Printobjstr,Objname,Objsurf added +# Crossprod added +# Objjoin, Objcurve, Objrecs, Objpolygon, Objsymb added +# Spacecurve debugged +# 2017.12.17 +# Setunitlen debugged ( MEMORI ) +# 2017.12.13 +# ReadOutData debugged +# 2017.12.11 +# Enclosing debugged ( appendrow -> Appendrow ) +# 2017.11.29 +# Anglemark, Arrowhead, Ovaldata debugged ( Circldeta included ) +# 2017.11.27 +# Anglemark changed ( Scilab 16.12.29) +# Plotdata,Paramplot,Spacecurve changed ( Scilab 16.12.13) +# Enclosing changed ( Scilab 16.10.09) +# Arrowhead,Arrowline changed ( Scilab 15.06.11) +# Definecolor added ( Scilab 15.05.04) +# 2017.11.26 +# Exprrot, Letterrot debugged ( `) +# 2017.11.24 +# Deqplot debugged (Looprange) +# 2017.11.20 +# InWindow debugged (for length=1) +# 2017.10.28 +# Openfile changed (Creator) +# 2017.10.23 +# ReadOutData greatly changed +# 2017.10.11 +# Drwpt debugged (Flattenlist ) +# 2017.10.08 +# Bezier debugged ( Num ) +# 2017.10.07 +# ReadOutData debugged ( for null data ) +# 2017.10.06 +# Deqdata, Deqplot added +# Connectseg remade(bug) +# 2017.09.30 +# Bezierpt, Bezier added +# 2017.09.29 +# Ptcrv debugged +# 2017.09.28 +# Openfile changed +# 2017.09.24 +# Circledata debugged +# Kyoukai changed (Eps) +# Shade updated +# 2017.09.22 +# Setcolor changed +# Plotdata,Paramplot,Spacecurve changed (N-1 -> N) +# 2017.09.21 +# Shade changed (Sci 17.01.09) +# 2017.09.17 +# Ovaldata,Assignadd changed +# Dist added +# Cicledata changed +# Bowdata debugged (Circledata,etc) + +# 2015.11.05 +# WriteOutData changed + +# 2015.10.29 +# WriteOutData changed ( endmark //// ) + +# 2015.10.24 +# ReadOutData changed ( in case of listlength=1 ) + +# 2014.12.23 +# ReadOutData added + +# 2014.12.17 +# WriteOutData added + +# 2014.0905 +# Unscaling debugged MARKLENI => MARKLEN +# 2014.03.31 +# PhHiddenData added +# 2014.03.30 +# Facesdata changed ( for Hiddendata ) +# 2014.03.23 +# MARKLEN separated, Rotate3data debugged + +# 2013.12.19 +# Openfile, Closefile, Bowname, Bownamerot + +# 2013.11.13 +# Arrowhead, Arrowheaddata + +# 2013.08.07 +# Cancoordpara added + +# 2013.08.07 +# Integrate added + +# 2013.05.20 +# Openfile changed + +# 2013.05.03 +# Tabledata, Pointdata changed +# Dividetable, Partframe added + +# 2013.02.10 +# Ketinit added + +# 2012.01.07 +# Arrowline, Arrowhead ( Cut implemented ) + +# 2011.12.18 +# Framedata ( compliant for list ) + +# 2011.12.12 +# Skeletonparadata... ( Flattellist used) + +# 2011.11.27 +# drwboxframe + +# 2011.11.07 +# metacommands added + +# 2011.11.02 +# Joingraphics ( for list structure ) + +# 2011.08.24 +# Setcolor ( c(1,0,0,0.5) etc ) +# Rotate3data ( Point is available ) + +# 2011.07.19 +# Drwline, Letter, Expr +# Drwboxplot( etc ) min,max => outliners +# Drwline ( unfinished in the case of "integer" ) + +# 2011.06.25 +# joincrvs debugged + +# synchro with ketpict2e + +# 2011.06.01 +# Bowdata debugged + +#2011.05.28 +# Ratiocmyk, Setcolor ( new ) + +#2011.04.28 +# Htickmark, Vtickmark debugged + +#2011.03.08 +# Drwboxframe debugged +# Putrow, Putrowexpr debugged (Dpos ) + +#2011.03.02 +# Tabledata ( index of hline ), PutcoL, PutcoLexpr ( "r",...) debugged +# Texcom changed ( // => backslash ) + +#2011.01.07 +# Dividegraphics, Splinedat are changed significantly +# Readtextdata is changed + +#2011.01.04 +# Derivative, Integrate are added + +#2010.12.07 +# Translatedata, Scaledata, Reflectdata changed ( efficient for vector ) +# Rotatedata changed ( deg : logical ) +# HIstplotdata, Drwhistplot ( type => freq , fpplot (added) ) + +# 2010.12.04 +# WindispT changed ( tickmark ) +# Lineplot changed ( mag=> length ) +# Plotdata debugged ( 'E=fun', 'D=') +# Enclosing changed (return PD) + +# 2010.12.02 +# WindispT changed +# Makecurves debugged + +# 2010.11.27 +# Pointdata changed ( efficient for matrix and data.frame ) +# WindispT +# Setwindow ( decide from data ) +# Assign debugged ( strsplit => gsub(fixed=T)) + +# 2010.11.20 +# Flattenlist, WindispT +# Splinedata changed( efficient for data.frame ) + +#2010.08.19 ( Maybe not finished ) +# Stripblanks +# Fullformfunc, Sf3data + +#2010.08.17 +# Phparadata, Phpersdata, Phspersdata, Phsparadata +# Facesdata, MakeveLfaceL, Menkakusi2 +# Rotate3data +# Skeletonpersdata, Skeletonpers3data, Makeskeletonpersdata +# Embed + +#2010.08.16 +# Spacecurve changed +# CameracoordCurve, Partcrv3, Projpers, CameraCurve, +# Perspt, Xyzaxpersname, Invperspt, Zparapt, Zperspt + +# 2010.08.15 +# Phcutoffdata added + +# 2010.08.13 +# Phcutdata, Spacecurve debugged +# Setangle changed + +# 2010.08.09 +# Spacecurve +# Rotate3data, Rotate3pt +# Phcutdata + +# 2010.08.08 +# Implementing 3d +# Initangle, Setangle, Setpers, SetstereoL, SetstereoR +# Mixlength +# Spaceline, Projpara, ProjCurve, Parapt +# Xyzax3data, Xyzaxparaname +# Cancoordpers, Invparapt, ProjcoordCurve +# Skeletonparadata, Skeletonpara3data, Makeskeletondata, Kukannozoki + +# 2010.07.25 +# Rotatedata changed +# Drwline changed (list of list) + +# 2010.04.09 +# Stat package added + +# 2010.04.02 +# Putcolexpr, Putrowexpr + +# 2010.04.02 + +# Windisp, Op changed +# Execmd added +# Texnewcmd, Texrenewcmd, Texend, +# Texctr, Texnewctr, Texsetctr +# Kyoukai debugged + +# 2010.01.20 +# Partcrv, Makeshasen : debugged + +# 2010.01.23 +# Ovaldata, Ovalbox added + +# 2010.01.27 +# Readtextdata changed +# Putrow, PutcoL debugged ( Putcol is OK) + +# 2010.01.31 +# Writetextdata added + +# 2010.02.12 +# Texvalctr, Texthectr added + +# 2010.02.22 +# Execmd changed + +# 2010.02.23 +# Op, Windisp changed + +# 2010.02.24 +# Execmd changed + +# 2010.03.07 +# Dotfilldata (Kosa>1) + +# 2010.03.21 +# Mixjoin +# Koutenlist (bug) + + +# 2010.03.24 +# Arrowhead ( bug in the case of "l" ) + +# 2010.03.28 +# Tabledata +# Diagcelldata ( New ) + +# 2010.03.30 +# Tabledata + +########################################### + +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*2 #17.10.07 +TenSize<- TenSizeInit +Wfile<-"" +MEMORI<- 0.05 +MEMORIInit<- MEMORI +MEMORINow<- MEMORI +MARKLEN<- 0.05 +MARKLENInit<- MARKLEN +MARKLENNow<- MARKLEN +GENTEN<- c(0,0) +YaSize<- 1 +YaAngle<- 18 +YaPosition<- 1 +YaThick<- 1 +YaStyle<- "tf" +PHI<- 30*pi/180 +THETA<- 60*pi/180 +FocusPoint<- c(0,0,0) +EyePoint<- c(5,5,5) +ASSIGNLIST<- list("`","'") + +SCALEX<- 1 +SCALEY<- 1 +LOGX<- 0 +LOGY<- 0 + +TEXFORLEVEL<- 0 +TEXFORLAST<- list() + +####################### + +Ketinit<- function(){ +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*2 #17.10.07 +TenSize<<- TenSizeInit +Wfile<<-"" +MEMORI<<- 0.05 +MEMORIInit<<- MEMORI +MEMORINow<<- MEMORI +MARKLEN<<- 0.05 +MARKLENInit<<- MARKLEN +MARKLENNow<<- MARKLEN +GENTEN<<- c(0,0) +YaSize<<- 1 +YaAngle<<- 18 +YaPosition<<- 1 +YaThick<<- 1 +YaStyle<<- "tf" +PHI<<- 30*pi/180 +THETA<<- 60*pi/180 +FocusPoint<<- c(0,0,0) +EyePoint<<- c(5,5,5) +ASSIGNLIST<<- list("`","'") + +SCALEX<<- 1 +SCALEY<<- 1 +LOGX<<- 0 +LOGY<<- 0 + +TEXFORLEVEL<<- 0 +TEXFORLAST<<- list() +} + +#------------------------------------------------------- + +Appendrow<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Out<-c() + Nc<- 0 + for (I in 1:Nargs) + { + Dt<- varargin[[I]] + Nc<- max(Nc,Ncol(Dt)) + if(class(Dt)=="matrix") Dt<-as.numeric(t(Dt)) + Out<- c(Out,Dt) + } + if(Nc>0) + { + Out<-matrix(Out, nrow=Nc) + Out<-t(Out) + } + else + { + Out<-c() + } + return(Out) +} + +Crossprod<-function(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=c(Tmp1,Tmp2,Tmp3) + } + else + { + Out=a[1]*b[2]-a[2]*b[1] + } + return(Out) +} + +Datalength<-function(Data) +{ + if(length(Data)==0) return(0) + if(mode(Data)=="numeric") return(Nrow(Data)) + if(mode(Data)=="character") return(nchar(Data)) + if(mode(Data)=="list") return(length(Data)) +} + +Crossprod<- function (a,b){ # 17.12.22 + 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=c(Tmp1,Tmp2,Tmp3) + }else{ + Out=a[1]*b[2]-a[2]*b[1] + } +} + +Dotprod<-function(a,b){ # 18.02.05 + nn=min(length(a),length(b)) + out=0 + for(jj in Looprange(1,nn)){ + out=out+a[jj]*b[jj] + } + return(out) +} + +Dist<- function(...) # 17.09.17 +{ + varargin<- list(...) + a=varargin[[1]] + if(length(varargin)==1){ + tmp=sqrt(Dotprod(a,a)) + return(as.vector(tmp)) + } + else{ + b=varargin[[2]] + tmp=sqrt(Dotprod(b-a,b-a)) + retun(as.vector(tmp)) + } +} + +Member<-function(A,L) +{ + N<-length(L); + if(length(N)==0) return(FALSE) + for (I in 1:N) + { + if(class(L)=="list") + { + Tmp<-L[[I]] + } + else + { + Tmp<-L[I] + } + if(mode(A)=="numeric") + { + if(Norm(A-Tmp)==0) return(TRUE) + } + else + { + if(A==Tmp) return(TRUE) + } + } + return(FALSE) +} + +Norm<-function(V) +{ + Tmp=Dotprod(V,V) #18.02.09 +# Tmp<-as.vector(V); +# Tmp<-crossprod(Tmp,Tmp) + Tmp<-sqrt(Tmp) +# as.numeric(Tmp) +} + +Ncol<-function(P) +{ + if(class(P)=="matrix") return(ncol(P)) + else return(length(P)) +} + +Nrow<-function(P) +{ + if(length(P)==0) return(0) + if(class(P)=="matrix") return(nrow(P)) + else return(1) +} + +Looprange<- function(a,b) +{ +if(a<=b) return(a:b) +return(c()) +} + +Stripblanks<- function(Ch){ + Tmp<- gsub(" ","",Ch,fixed=TRUE) + return(Tmp) +} + +Quicksort<- function(seqL,key){ #18.02.01 + if(length(seqL)<2){ + out=seqL + }else{ + tmp1=Op(1,seqL) + tmp2=Op(2,seqL) + if(Op(key,tmp1)>=Op(key,tmp2)){ + pivot = tmp1 + }else{ + pivot=tmp2 + } + left = list() + right = list() + for(ii in 1:length(seqL)){ + tmp=Op(ii,seqL) + if(Op(key,tmp)< Op(key,pivot)){ + left=c(left,list(tmp)) + }else{ + right=c(right,list(tmp)) + } + } + left = Quicksort(left,key) + right = Quicksort(right,key) + out=c(left,right) + } + return(out) +} + +Derivative<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Fstr<- varargin[[1]] + Vstr<- varargin[[2]] + NvaL<- length(Vstr) + Flg<- 0 + if(Nargs>=3){ + VaL<- varargin[[3]] + Flg<- 1 + } + Str<- paste("deriv(~",Fstr,",c('",Vstr[1],"'",sep="") + for(J in Looprange(2,NvaL)){ + Str<- paste(Str,",'",Vstr[J],"'",sep="") + } + Str<- paste(Str,")",sep="") + if(NvaL<=3){ + Str<- paste(Str,",func=TRUE)",sep="") + } + else{ + Str<- paste(Str,")",sep="") + } + f<- eval(parse(text=Str)) + if(Flg==1){ + if(NvaL<=3){ + if(NvaL==1){V<- f(VaL[1])} + if(NvaL==2){V<- f(VaL[1],VaL[2])} + if(NvaL==3){V<- f(VaL[1],VaL[2],VaL[3])} + } + else{ + for(J in 1:NvaL){ + Tmp<- paste(Vstr[J],'<-',as.character(VaL[J])) + eval(parse(text=Tmp)) + } + V<- eval(f) + } + Out<- attr(V,'gradient') + Out<- Out[1,] + } + else{ + Out<- f + } + return(Out) +} + +Diff<- function(...){ #18.02.04 + varargin=list(...) + Nargs=length(varargin) + fun=varargin[[1]] + withvar=varargin[[2]] + tmp=paste("f<- expression(",fun,")",sep="") + eval(parse(text=tmp)) + nn=nchar(withvar) + for(jj in Looprange(1,nn)){ + tmp=substring(withvar,jj,jj) + f=D(f,tmp) + } + var=c() + val="" + for(jj in Looprange(3,Nargs)){ + tmp=strsplit(varargin[[jj]],"=") + var=c(var,tmp[[1]][1]) + val=paste(val,tmp[[1]][2],",",sep="") + } + if(Length(val)>1){ + val=substring(val,1,Length(val)-1) + f=deriv(f,var,func=TRUE) + tmp=paste("out=f(",val,")",sep="") + out=eval(parse(text=tmp)) + return(out[1]) + }else{ + return(f) + } +} + +Funvalue<- function(...){ + varargin=list(...) + Nargs=length(varargin) + df=varargin[[1]] + var=c() + val="" + for(jj in Looprange(2,Nargs)){ + tmp=strsplit(varargin[[jj]],"=") + var=c(var,tmp[[1]][1]) + val=paste(val,tmp[[1]][2],",",sep="") + } + val=substring(val,1,Length(val)-1) + dfun=deriv(df,var,func=TRUE) + tmp=paste("out=dfun(",val,")",sep="") + eval(parse(text=tmp)) + return(out[1]) +} + +Integrate<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Fstr<- varargin[[1]] + Vstr<- varargin[[2]] + IntvL<- varargin[[3]] + Str<- 'Tmpfun<- function(' + Str<- paste(Str,Vstr,'){',sep='') + Str<- paste(Str,Fstr,'}',sep='') + eval(parse(text=Str)) + Tmpfunv<- function(x){sapply(x,Tmpfun)} + Out<- 0 + for (J in 1:(length(IntvL)-1)){ + Tmp<- integrate(Tmpfunv,IntvL[J],IntvL[J+1]) + Out<- Out+Tmp[[1]] + } + return(Out) +} + +#-------------------------------------- + +######################### + +Anglemark<- function(...) +{ + varargin<- list(...) + 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 + } + Out=c() + if(r>min(Norm(PA-PB),Norm(PC-PB))){ + return(Out) + } + Cir<- Circledata(c(PB,r)) #17.11.29 + Tmp<- IntersectcrvsPp(Cir,Listplot(PA,PB)) + P1<- Op(2,Op(1,Tmp)) + Tmp<- IntersectcrvsPp(Cir,Listplot(PC,PB)) + P2<- Op(2,Op(1,Tmp)) + if(abs(P1-P2)<Eps){ + Out<-c() + return(Out) + } + 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) + } +} + +############################################## + +Arrowdata<- function(...) +{ + varargin<- list(...) + 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 in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + if(length(Tmp)>1){ + R<- Tmp + } + else{ + if(Flg==0){ + Ookisa<- Ookisa*Tmp + } + if(Flg==1){ + if(Tmp<5){ + Hiraki<- Tmp*Hiraki + } + else{ + Hiraki<- Tmp + } + } + if(Flg==2){ + R<- P+Tmp*(Q-P) + } + else{ + R<- P+Yapos*(Q-P) + } + if(Flg==3){ + Futosa<- Tmp + } + Flg<- Flg+1 + } + } + if(mode(Tmp)=="character"){ + Tmp<- grep("=", Tmp) + if(length(Tmp)>0){ + eval(parse(text=Tmp)) + Futosa<- Futosa*Thickness + R<- P+Position*(Q-P) + } + else{ + Str<- Tmp + } + } + } + Tmp1<- Listplot(c(P,Q)) + Tmp2<- Arrowheaddata(R,Q-P,Ookisa,Hiraki,Futosa,Str) + Out<- Joingraphics(Tmp1,Tmp2) +} + +###################################### + +# 2013.11.13 No Intersect debugged + +Arrowhead<-function(...) +{ ## Scaling is implemented + ## 12.01.08 Kirikomi + varargin<-list(...) + 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 in Looprange(3,Nargs)){ + Tmp<-varargin[[I]] + if(is.character(Tmp)){ + Equal<- grep("=",Tmp,fixed=TRUE) # 12.01.07 from + if(length(Equal)>0){ + Tmp1<- strsplit(Tmp,"=",fixed=TRUE) + Tmp2<- Tmp1[[1]] + if(Tmp2[1]=="Cut" || Tmp2[1]=="cut"){ + Tmp<- paste("Cut=",Tmp2[2],sep="") + eval(parse(text=Tmp)) + } + }else{ + Str<- Tmp + } # 12.01.07 upto + } + if(is.numeric(Tmp) && length(Tmp)==1){ + if(Flg==0) Ookisa<-Ookisa*Tmp + if(Flg==1){ + if(Tmp<5) Hiraki<-Tmp*Hiraki + else Hiraki<-Tmp + } + if(Flg==2) Futosa<-Tmp + Flg<-Flg+1 + } + } + Ookisa<-1000/2.54/MilliIn*Ookisa + Theta<-Hiraki*pi/180 + if(Nrow(Houkou)>1){ + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + Tmp<-Nearestpt(P,Houkou) + A<-Tmp[[1]] + I<-floor(Tmp[[2]]) + G<-Circledata(c(P,Ookisa*cos(Theta)),N=10) #17.11.29 + Flg<- 0 # 13.11.13 + JL<-seq(I,1,by=-1) + for (J in JL){ + B<-Ptcrv(J,Houkou) + Tmp<-IntersectcrvsPp(Listplot(list(A,B)),G) + if(length(Tmp)>0){ + Flg<- 1 + break + } + A<-B + } + if(Flg==0){ # 13.11.13 + print("Arrowhead may be too large (no intersect)") + return(P) + } + Houkou<-P-Op(1,Tmp[[1]]) + Houkou<- Unscaling(Houkou) + P<- Unscaling(P) + } + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + Ev<--1/Norm(Houkou)*Houkou + Nv<-c(-Ev[2],Ev[1]) + if(length(grep("c",Str))>0){ + P<-P-0.5*Ookisa*cos(Theta)*Ev + } + if(length(grep("b",Str))>0){ + P<-P-Ookisa*cos(Theta)*Ev + } + A<-P+Ookisa*cos(Theta)*Ev+Ookisa*sin(Theta)*Nv + B<-P+Ookisa*cos(Theta)*Ev-Ookisa*sin(Theta)*Nv + if(length(grep("l",Str))>0){ + Tmp<-Listplot(list(A,P,B)) + Tmp1<- Unscaling(Tmp) + Drwline(Tmp1,Futosa) + } + else{ + C<- P+(1-Cut)*((A+B)/2-P) # 12.01.07 + Tmp<- Listplot(list(A,P,B,C,A)) # 12.01.07 + Tmp1<- Unscaling(Tmp) + Shade(Tmp1) + Tmp=Listplot(c(A,P,B,C,A,P)) # 15.6.20 + Tmp1=Unscaling(Tmp) + Drwline(Tmp1,0.1) # 15.06.11, 15.06.14 + } +} + +############################################ + +# 2013.11.13 No intersect debugged + +Arrowheaddata<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + P<- varargin[[1]] + Houkou<- varargin[[2]] + Ookisa<- 0.2*YaSize + Hiraki<- YaAngle + Futosa<- 0 + Thickness<- 1 + Str<- YaStyle + Flg<- 0 + for (I in Looprange(3,Nargs)){ + Tmp<-varargin[[I]] + if(mode(Tmp)=="character"){ + Tmp1<-grep("=",Tmp) + if(length(Tmp1)>0){ + eval(parse(text=Tmp)) + Futosa<- Thickness + } + else{ + Str<- Tmp + } + } + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + if(Flg==0) Ookisa<-Ookisa*Tmp + if(Flg==1){ + if(Tmp<5) Hiraki<-Tmp*Hiraki + else Hiraki<-Tmp + } + if(Flg==2) Futosa<-Tmp + Flg<-Flg+1 + } + } + Theta<- Hiraki*pi/180 + if(Nrow(Houkou)>1){ + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + Tmp<-Nearestpt(P,Houkou) + A<-Tmp[[1]] + I<-floor(Tmp[[2]]) + G<-Circledata(c(P,Ookisa*cos(Theta)),N=10) #17.11.29 + Flg<- 0 # 13.11.13 + JL<-seq(I,1,by=-1) + for (J in JL){ + B<- Ptcrv(J,Houkou) + Tmp<- IntersectcrvsPp(Listplot(list(A,B)),G) + if(length(Tmp)>0){ + Flg<- 1 + break + } + A<-B + } + if(Flg==0){ # 13.11.13 + print("Arrowhead may be too large (no intersect)") + return(P) + } + Houkou<-P-Op(1,Tmp[[1]]) + Houkou<- Unscaling(Houkou) + P<- Unscaling(P) + } + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + Ev<- -1/Norm(Houkou)*Houkou + Nv<- c(-Ev[2],Ev[1]) + if(length(grep("c",Str))>0){ + P<-P-0.5*Ookisa*cos(Theta)*Ev + } + if(length(grep("b",Str))>0){ + P<-P-Ookisa*cos(Theta)*Ev + } + A<-P+Ookisa*cos(Theta)*Ev+Ookisa*sin(Theta)*Nv + B<-P+Ookisa*cos(Theta)*Ev-Ookisa*sin(Theta)*Nv + Tmp<- Listplot(A,P,B) + Out<- Unscaling(Tmp) + return(Out) +} + +########################################## + +Arrowline<- function(...) +{ # 12.01.07 kirikomi + varargin<- list(...) + 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 in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + if(is.character(Tmp)){ + Equal<- grep("=",Tmp,fixed=TRUE) # 12.01.07 from + if(length(Equal)>0){ + Tmp1<- strsplit(Tmp,"=") + Tmp2<- Tmp1[[1]] + if(Tmp2[1]=="Cut" || Tmp2[1]=="cut"){ + Tmp<- paste("Cut=", Tmp2[2],sep="") + Cutstr<- Tmp + } + } + else{ + Str<- Tmp + } # 12.01.07 upto + } + if(is.numeric(Tmp) && length(Tmp)==1){ + if(Flg==0) Ookisa<- Ookisa*Tmp + if(Flg==1){ + if(Tmp<5) Hiraki<- Tmp*Hiraki + else Hiraki<- Tmp + } + if(Flg==2) Yapos<- Tmp + if(Flg==3) Futosa<- Tmp + Flg<- Flg+1 + } + } + R<- P+Yapos*(Q-P) + Tmp=Q-Unscaling(0.2*Ookisa/2*(Q-P)/Norm(Q-P)) # 15.10.24 + Drwline(Listplot(c(P,Tmp)),Futosa) + Arrowhead(R,Q-P,Ookisa,Hiraki,Futosa,Cutstr,Str) +} + +######################################### + +Assign<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + ASSIGNLIST<<- list("`",Prime()) + Out<- ASSIGNLIST + return() +# return("Assign reset done"); + } + L<- list("`","'") + if(Nargs%%2==0){ + L<- Mixjoin(L,varargin) + ASSIGNLIST<<- L + Out<- L + return() +# return("Assign set done"); + } + if(Nargs==1){ + Fnstr<- varargin[[1]] + if(nchar(Fnstr)==0){ # case of "" + L<- ASSIGNLIST + Out<- c() + for (I in seq(1,length(L),by=2)){ + Tmp1<- L[[I]] + Tmp2<- L[[I+1]] + if(length(Tmp2)==1){ + Tmp3<- as.character(Tmp2) + } + else{ + if(mode(Tmp2)=="character"){ + Tmp3<- Tmp2 + } + else if(mode(Tmp2)=="list"){ + Tmp3<- makeliststr(Tmp2) + } + else if(mode(Tmp2)=="numeric"){ + Tmp3<- "c(" + for (J in Looprange(1,length(Tmp2))){ + Tmp3<- paste(Tmp3,as.character(Tmp2[J]),sep="") + if(J<length(Tmp2)){ + Tmp3<- paste(Tmp3,",",sep="") + } + } + Tmp3<- paste(Tmp3,")",sep="") + if(class(Tmp2)=="matrix"){ + Nr<- as.character(nrow(Tmp2)) + Tmp3<- paste("matrix(",Tmp3,"nrow=",Nr,")",sep="") + } + } + } + Tmp<- paste(Tmp1,"=",Tmp3,sep="") + Out<- c(Out,Tmp) + } + return(Out); + } + if(substr(Fnstr,1,1)=="?"){ + Fnstr<- substr(Fnstr,2,nchar(Fnstr)) + for (I in seq(1,length(ASSIGNLIST),by=2)){ + Tmp<- ASSIGNLIST[[I]] + if(Tmp==Fnstr){ + Out<- Mixjoin(list(I),ASSIGNLIST[I+1]) + return(Out) + } + } + Out<- "Not found" + return(Out); + } + L<- ASSIGNLIST + } + else{ + if(mode(varargin[[2]])=="numeric"){ + Fnstr<- varargin[[Nargs]] + for (I in Looprange(1,Nargs-1)){ + L[[I]]=varargin[[I]] + } + } + else{ + Fnstr<- varargin[[1]] + for (I in Looprange(2,Nargs)){ + L[[I-1]]<- varargin[[I]] + } + } + } + for (I in seq(1,length(L),by=2)){ + Vname<- L[[I]] + Val<- L[[I+1]] + if(mode(Val)=="numeric"){ + if(Nrow(Val)==1){ + for (K in Looprange(1,length(Val))){ + Tmp<- paste(Vname,"[", as.character(K),"]",sep="") + if(mode(Val[K])=="numeric"){ + Tmp1<- paste("(",as.character(Val[K]),")",sep="") + } + else{ + Tmp1<- Val[K] + } + Fnstr<- gsub(Tmp,Tmp1,Fnstr,fixed=TRUE) + } + } + else{ + for (J in Looprange(1,Nrow(Val))){ + for (K in Looprange(1,Ncol(Val))){ + Tmp<- paste(Vname,"(",as.character(J),",",as.character(K),")",sep="") + if(mode(Val[J,K])=="numeric"){ + Tmp1<- paste("(",as.character(Val[J,K]),")",sep="") + } + else{ + Tmp1<- Val[J,K] + } + Fnstr<- gsub(Tmp,Tmp1,Fnstr,fixed=TRUE) + } + } + } + if(length(Val)==1){ + Rep<- as.character(Val) + } + else{ + Rep<-"" + if(class(Val)=="matrix"){ + Rep<- "matrix(" + } + Rep<- paste(Rep,"c(",sep="") + for (J in Looprange(1,length(Val))){ + Rep<- paste(Rep,as.character(Val[J]),sep="") + if(J<length(Val)){ + Rep<- paste(Rep,",",sep="") + } + else{ + Rep<- paste(Rep,")",sep="") + } + } + if(class(Val)=="matrix"){ + Rep<- paste(Rep,",nrow=",as.character(nrow(Val)),")",sep="") + } + } + Tmp1<- paste("(",Rep,")",sep="") + } + if(mode(Val)=="character"){ + Tmp1<- Val + } + if(mode(Val)=="list"){ + Tmp1<- Makeliststr(Val) + } + Fnstr<- gsub(Vname,Tmp1,Fnstr,fixed=TRUE) # 10.11.20 + } + return(Fnstr) +} + +######################################### + +Assignadd<- function(...) +{ + varargin<- list(...) + L<- ASSIGNLIST + L<- Mixjoin(L,varargin) + ASSIGNLIST<<- L +# return("assign add done"); #17.09.17 +} + +######################################### + +Assignrep<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + L<- ASSIGNLIST + for (I in seq(1,Nargs,by=2)){ + Vname<- varargin[[I]] + Val<- varargin[[I+1]] + Tmp1<- paste("?",Vname,sep="") + Tmp<- Assign(Tmp) + if(mode(Tmp)=="character"){ + next + } + I<- Tmp[[1]] + L<- Mixjoin(L,list(Val)) + } + ASSIGNLIST<<- L +} + +######################################### + + Assignset<- function(...) +{ + Assign(...) +} + +######################################### + +Beginpicture<-function(ul) +{ ## Scaling is implemented + Tmp<- Doscaling(c(XMIN,YMIN)) + Xm<- Tmp[1] + Ym<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + XM<- Tmp[1] + YM<- Tmp[2] + Dx<- XM-Xm + Dy<- YM-Ym + Sym<-".0123456789 +-*/" + SL<-Sym + OL<-"+-*/" + if(ul!=""){ + ULEN<<-ul; + } + Is<-1; + VL<-""; + Ucode<-ULEN + for (I in Looprange(1,nchar(Ucode))){ + C<-substring(Ucode,I,I); + if(length(grep(C,SL))>0){ + if(length(grep(C,OL))>0){ + Tmp<-substring(Ucode,Is,I-1); + Str<-paste(VL,Tmp,C,sep="") + VL<-Str + Is<-I+1; + } + } + else{ + Unit<-substring(Ucode,I,I+1) + Str<-substring(Ucode,Is,I-1) + VL<-paste(VL,Str,sep="") + break; + } + } + Valu<-eval(parse(text=VL)) + Str<-as.character(Valu); + ULEN<<- paste(Str,Unit,sep="") + if(Unit=="cm") MilliIn<<-1000/2.54*Valu + if(Unit=="mm") MilliIn<<-1000/2.54*Valu/10 + if(Unit=="in") MilliIn<<-1000*Valu + if(Unit=="pt") MilliIn<<-1000/72.27*Valu + if(Unit=="pc") MilliIn<<-1000/6.022*Valu + if(Unit=="bp") MilliIn<<-1000/72*Valu + if(Unit=="dd2") MilliIn<<-1000/1238/1157/72.27*Valu + if(Unit=="cc") MilliIn<<-1000/1238/1157/72.27*12*Valu; + if(Unit=="sp") MilliIn<<-1000/72.27/65536*Valu/10 + MARKLEN<<- MARKLENNow*1000/2.54/MilliIn; + Str<-paste("{\\unitlength=",ULEN,"%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("\\begin{picture}%\n",file=Wfile,append=TRUE) + Str<-"(" + Tmp<-as.character(round(Dx,digits=6)) + Str<-paste(Str,Tmp,",",sep="") + Tmp<-as.character(round(Dy,digits=6)) + Str<-paste(Str,Tmp,")(",sep="") + Tmp<-as.character(round(Xm,digits=6)) + Str<-paste(Str,Tmp,",",sep="") + Tmp<-as.character(round(Ym,digits=6)) + Str<-paste(Str,Tmp,")%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + Str<-paste("\\special{pn ",as.character(PenThickInit),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +################################################# + +Bowdata<- function(...) #17.09.17 +{ + varargin <- list(...) + Nargs <- length(varargin) + PA <- varargin[[1]] + PB <- varargin[[2]] + Cut <- 0 + D <- 1/2*Norm(PB-PA) + if(Nargs>=3) { + H <- varargin[[3]]*D*0.2 + } + else { + H <- D*0.2 + } + H <- min(H,D) + if(Nargs>=4){ + Cut <- varargin[[4]] + } + Ydata <- MakeBowdata(PA,PB,H) + C <- Op(1,Ydata) + r <- Op(2,Ydata) + R1 <- Op(3,Ydata) + R2 <- Op(4,Ydata) + Rng <- paste("R=c(",as.character(R1),",",as.character(R2),")",sep="") + Theta <- (R1+R2)*0.5 + BOWMIDDLE <<- list(c(C[1]+r*cos(Theta),C[2]+r*sin(Theta)),Theta) + M <- Op(1,BOWMIDDLE) + ThetaM <- Op(2,BOWMIDDLE) + BOWSTART <<- PA + BOWEND <<- PB + if(Cut==0){ + Pd<- Circledata(c(C,r),Rng) + } + else{ + Alpha <- R1; Beta <- ThetaM-Cut/(2*r) + Rng <- paste("Rng=c(",as.character(Alpha),",",as.character(Beta),")",sep="") + Pd <- Circledata(c(C,r),Rng) + Alpha <- ThetaM+Cut/(2*r); Beta <- R2 + Rng <- paste("R=c(",as.character(Alpha),",",as.character(Beta),")",sep="") + Tmp <- Circledata(c(C,r),Rng) + Pd <- Appendrow(Pd,c(Inf,Inf),Tmp) + } +} + +Bowmiddle <- function(...) +{ + varargin <- list(...) + Nargs <- length(varargin) + if( Nargs==0) { + M <- BOWMIDDLE + return(M) + } + if(Nargs==1) { + Bdata <- varargin[[1]] + A <- Bdata[1,] + Dind <- Dataindex(Bdata) + Dc <- Nrow(Dind) + Tmp <- Dind[Dc,2] + B <- Bdata[Tmp,] + if(Dc==1) { + Tmp1 <- round(Tmp/2) + } + else { + Tmp1 <- Dind[1,2] + } + D <- Bdata[Tmp1,] + B <- B-A + D <- D-A + Tmp1 <- B[1]*D[2]-D[1]*B[2] + Tmp2 <- (Norm(B)^2*D[2]-B[2]*Norm(D)^2)/2 + Tmp3 <- -(Norm(B)^2*D[1]-B[1]*Norm(D)^2)/2 + C <- 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*Norm(B-A) + H <- 0.2*D; + if(length(varargin)>=3) { + Tmp <- varargin[[3]] + H <- Tmp*D*0.2 + } + 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*c(cos(T),sin(T)) + #M <- list(P,T) + M <- P + } + return(M) +} + +########################## +# 13.12.19 small movement supported + +Bowname<- function(...) +{ + varargin <- list(...) + Nargs <- length(varargin) + Siki <- varargin[[Nargs]] + Nargs<- Nargs-1 + Dr<- "c" + if(Nargs>=1){ + Tmp<- varargin[[Nargs]] + if(is.character(Tmp)){ + Dr<- Tmp + Nargs<- Nargs-1 + } + } + if(Nargs==0){ + Siki <- varargin[[1]] + P <- Op(1,BOWMIDDLE) + } + else if(Nargs==1){ + Bdata <- varargin[[1]] + P <- Bowmiddle(Bdata) + } + else{ + A <- varargin[[1]]; B <- varargin[[2]] + D <- 1/2*Norm(B-A) + Tmp <- varargin[[3]] + if(is.character(Tmp)){ + H <- D*0.2 + } + else { + H <- Tmp*D*0.2 + } + H <- min(H,D) + Ydata <- MakeBowdata(A,B,H) + Tmp <- Bowmiddle(Ydata) + P <- Op(1,Tmp) + } + Expr(P,Dr,Siki) +} + +########################## +# 13.12.19 small movement supported +# A,B, ... no longer supported + +Bownamerot <- function(...) +{ + varargin <- list(...) + Nargs <- length(varargin) + Eps <- 10^(-6) + Flg <- 1 + Tmp <- varargin[[Nargs]] + if(is.numeric(Tmp) && length(Tmp)==1 && Tmp<0){ + Flg <- Tmp + Nargs <- Nargs-1 + } + Siki <- varargin[[Nargs]] + Nargs<- Nargs-1 + Dr<- "c" + if(Nargs>=1){ + Tmp<- varargin[[Nargs]] + if(is.character(Tmp)){ + Dr<- Tmp + Nargs<- Nargs-1 + } + } + if(Nargs==0) { + P <- Op(1,BOWMIDDLE) + A <- BOWSTART + B <- BOWEND + } + else{ + Bdata<- varargin[[1]] + P<- Bowmiddle(Bdata) + A=Bdata[1,] + B=Bdata[nrow(Bdata),] + Tm<- 0; Tv<- 0 + if(Nargs>1){ + Tm<- varargin[[2]] + if(Nargs>2){ + Tv<- varargin[[3]] + } + } + } +# else if(Nargs==2) { +# Bdata <- varargin[[1]] +# P <- Bowmiddle(Bdata) +# A <- Bdata[1,] +# B <- Bdata[Nrow(Bdata),] +# Siki <- varargin[[2]] +# } +# else { +# A <- varargin[[1]]; B <- varargin[[2]] +# D <- 1/2*Norm(B-A) +# Tmp <- varargin[[3]] +# if(mode(Tmp)=="character") { +# H <- 0.2*D; Siki <- Tmp +# } +# else { +# H <- Tmp*D*0.2; Siki <- varargin[[4]] +# } +# 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*c(cos(T),sin(T)) +# } + if(A[1]>B[1]+Eps){ + Tmp <- A + A <- B + B <- Tmp + } + if(Flg>0) { + Tmp <- B-A + } + else{ + Tmp <- A-B + } + Exprrot(P,Tmp,Tm,Tv,Siki) +} + +CalcHeight<-function(Hoko,Moji) +{ + D<-0 + H<-substring(Hoko,1,1) + Tmp<-paste("\\settoheight{\\Height}{",Moji,"}",sep="") + Str<-c(Tmp) + Tmp=paste("\\settodepth{\\Depth}{",Moji,"}",sep="") + Str<-c(Str,Tmp) + if(H=="n") Str<-c(Str,"\\setlength{\\Height}{\\Depth}") + if(H=="s") Str<-c(Str,"\\setlength{\\Height}{-\\Height}") + if(H=="c") + { + Str<-c(Str,"\\setlength{\\Height}{-0.5\\Height}") + Str<-c(Str,"\\setlength{\\Depth}{0.5\\Depth}") + Str<-c(Str,"\\addtolength{\\Height}{\\Depth}") + } + for (I in 1:length(Str)) cat(Str[I],file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +######################### + +CalcWidth<-function(Hoko,Moji) +{ + D<-0; + H<-substring(Hoko,2,2) + if(H=="e") D<-0 + if(H=="w") D<--1.0 + if(H=="c") D<--0.5 + Str1<-paste("\\settowidth{\\Width}{",Moji,"}",sep="") + Tmp<-as.character(D) + Str2<-paste("\\setlength{\\Width}{",Tmp,"\\Width}",sep="") + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +######################### +# 17.09.17 +# 17.09.24 + +Circledata<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Cr<- varargin[[1]] + C=Cr[1:2] + if(length(Cr)==4){ + ra=Norm(C-Cr[3:4]) + Nop=2 + } + else{ + ra=Cr[3] + Nop=2 + } + R=c(0,2*pi) + N=50 + for (I in Looprange(Nop,Nargs)){ + Tmp<- varargin[[I]] + if(is.character(Tmp)){ + Tmp1=regexpr("=",Tmp) #17.09.24from + Tmp2=substring(Tmp,Tmp1+1,nchar(Tmp)) + Tmp1=substring(Tmp,1,Tmp1) + Tmp1=gsub("NUM", "N", toupper(Tmp1)) + Tmp1=gsub("RNG", "R", Tmp1) + Tmp=paste(Tmp1,Tmp2,sep="") #17.09.24upto + eval(parse(text=Tmp)) + } + } + Dt<- (R[2]-R[1])/N + T <- seq(R[1],R[2],by=Dt) + X <- C[1]+ra*cos(T) + Y <- C[2]+ra*sin(T) + XY<- c(X,Y) + P<- matrix(XY,ncol=2) + return(P) +} + +######################### +# 13.12.19 + +Closefile<-function(...) +{ + varargin<- list(...) + if(length(varargin)>=1){ + Pa<- varargin[[1]] + if(is.character(Pa)){ + if(Pa=="1") Endpicture(1) + if(Pa=="0") Endpicture(0) + } + } + Wfile<<-"" +} + +######################### + +Closepar<- function() +{ + S<- "%\n\\end{minipage}" + cat(S,file=Wfile,append=TRUE) + Closephr() +} + + +#################################### + +Closephr<- function() +{ + cat("%\n}%\n",file=Wfile,append=TRUE) +} + +##################################### + +Dataindex<-function(P) +{ + # Inf;Inf : Terminator + Ndm<-c() + if(length(P)==0) return(Ndm) + N1<-1 + Flg<-0 + for (J in 1:Nrow(P)) + { + if(P[J,1]==Inf) + { + Ndm<-Appendrow(Ndm,c(N1,J-1)) + N1<-J+1; + if(P[N1,1]==Inf) + { + Flg<-1; + break; + } + } + } + if(Flg==0) + { + Ndm<-Appendrow(Ndm,c(N1,Nrow(P))) + } + if(class(Ndm)=="numeric") + { + Tmp<-matrix(Ndm,nrow=1) + Ndm<- Tmp + } + return(Ndm) +} + +################################ + +Dashline<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Nall<- Nargs; Sen<- 1 ; Gap<- 1 + Tmp<- varargin[[Nall]] + if(mode(Tmp)=="numeric" && length(Tmp)==1 && Tmp>0){ + Tmp1<- varargin[[Nall-1]] + if(mode(Tmp1)=="numeric" && length(Tmp1)==1 && Tmp1>0){ + Sen<- Tmp1; Gap<- Tmp + Nall<- Nall-2 + } + else{ + Sen<- Tmp; Gap<- Sen + Nall<- Nall-1 + } + } + Sen<- 1000/2.54/MilliIn*Sen + Gap<- 1000/2.54/MilliIn*Gap + for (N in Looprange(1,Nall)){ + Pdata<- varargin[[N]] + if(is.numeric(Pdata)==1){ + Pdata<- list(Pdata) + } + for (II in 1:length(Pdata)){ + Figdata<- Op(II,Pdata) + Makehasen(Figdata,Sen,Gap,0) + } + } +} + +############################################## +# 17.11.27 + +Definecolor<- function(Name,Data){ + Tmp1=length(Data) + if((Tmp1<3) || (Tmp1>4)){ + cat("Size of data should be 3 or 4.") + return() + } + if(Tmp1==4){ + Tp="cmyk" + }else{ + Tp="rgb" + } + Tmp="" + for(J in 1:Tmp1){ + Tmp=paste(Tmp, as.character(Data[J]),sep="") + if(J<Tmp1){ + Tmp=paste(Tmp,",",sep="") + } + } + Tmp=paste("\\definecolor{",Name,"}{",Tp,"}{",Tmp,"}",sep="") + Texcom(Tmp) +} + +############################################## + +Diagcelldata<- function(Tb,Nc,Nr) +{ + Tmp<- Findcell(Tb,Nc,Nr) + C<- Tmp[[1]] + Dx<- Tmp[[2]] + Dy<- Tmp[[3]] + Pne<- C+c(Dx,Dy) + Pnw<- C+c(-Dx,Dy) + Psw<- C+c(-Dx,-Dy) + Pse<- C+c(Dx,-Dy) + Tmp1<- Listplot(Pnw,Pse) + Tmp2<- Listplot(Pne,Psw) + list(Tmp1,Tmp2) +} + +############################################## +# 11.01.07 + +Dividegraphics<- function(Pd) +{ + if(length(Pd)==0){ + return(Pd) + } + DtL<- Flattenlist(Pd) + OutL<- list() + for (J in 1:length(DtL)){ + Dt<- as.matrix(DtL[[J]]) + Ndm<- Dataindex(Dt) + for (I in Looprange(1,Nrow(Ndm))){ + Fd<- Dt[Ndm[I,1]:Ndm[I,2],] + OutL<- c(OutL,list(Fd)) + } + } + return(OutL) +} + +############################################## +# 13.05.03 + +Dividetable<- function(Tb) +{ + G<- Tb[[1]] + Gw<- G[[1]] + Gt<- G[Tb[[2]]] + Gy<- G[Tb[[3]]] + list(Gw,Gt,Gy) +} + +################################################ + +Doscaling<- function(G) +{ + GLg<- G + if(class(GLg)=="numeric") + { + if(LOGX==1) GLg[1]<- log(G[1], base=10) + if(LOGY==1) GLg[2]<- log(G[2], base=10) + Tmp<-c(SCALEX*GLg[1],SCALEY*GLg[2]) + return(Tmp) + } + else + { + if(LOGX==1) GLg[,1]<- log(G[,1],base=10) + if(LOGY==1) GLg[,2]<- log(G[,2],base=10) + Tmp1<-matrix(c(SCALEX,0,0,SCALEY),nrow=2) + Tmp<-GLg %*% Tmp1 + return(Tmp) + } +} + +######################################## + +Dotfilldata<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ShaL<- list() + Eps<- 0.01 + Kakudo<- 45 + Kosa<- 0.5 + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + for (N in seq(Nargs,1,by=-1)){ + Tmp<- varargin[[N]] + if(Mixtype(Tmp)!=1){ + break + } + } + if(N<Nargs){ + Kosa<- varargin[[N+1]] + } +# Kosa<- min(Kosa,1) + Tmp<- 1/(2*Kosa) + Kankaku<- Tmp*0.100*1000/2.54/MilliIn + NaitenL<- varargin[[1]] + if(Mixtype(NaitenL)==1){ + NaitenL<- list(NaitenL) + } + Ns<- 2 + StartP<- Op(1,NaitenL) + if(mode(StartP)=="character"){ + StartP<- c((Xmn+Xmx)/2,(Ymn+Ymx)/2) + } + else{ + StartP<- Doscaling(StartP) + } + Tmp<- varargin[[2]] + if(Mixtype(Tmp)==1){ + StartP<- Doscaling(Tmp) + Ns<- 3 + } + Tmp<- list() + for (I in Looprange(Ns,N)){ + Tmp<- Mixjoin(Tmp,list(varargin[[I]])) + } + Bdy<- Kyoukai(Tmp) + Bdys<-list() + for (I in 1:length(Bdy)){ + Tmp1<- Bdy[[I]] + Tmp2<- Doscaling(Tmp1) + Bdys<- Mixjoin(Bdys,list(Tmp2)) + } + Bdy<- Bdys + PtnL<- list() + for (I in Looprange(1,length(NaitenL))){ + Tmp<- Op(I,NaitenL) + if(mode(Tmp)=="numeric"){ + Tmp1<- Naigai(Tmp,Bdy) + PtnL<- Mixjoin(PtnL,list(Tmp1)) + } + else{ + if(mode(Tmp)!="character"){ + return("Mode Error") + } + Ptn<- c() + for (J in Looprange(1,nchar(Tmp))){ + if(substr(Tmp,J,J)=="i"){ + Ptn<- c(Ptn,1) + } + else{ + Ptn<- c(Ptn,0) + } + } + PtnL<- Mixjoin(PtnL,list(Ptn)) + } + } + Call<- length(Bdy) + Ptn<- c(seq(0, 0, length=Call)) + if(Member(Ptn,PtnL)){ + Wn<- Doscaling(Framedata()) + Bdy<- Mixjoin(Bdy,list(Wn)) + Tmp<- list() + for (I in Looprange(1,length(PtnL))){ + Tmp1<- c(Op(I,PtnL),1) + Tmp<- Mixjoin(Tmp,list(Tmp1)) + } + PtnL<- Tmp + } + V<- c(cos(Kakudo*pi/180),sin(Kakudo*pi/180)) + Vm<- c(-sin(Kakudo*pi/180),cos(Kakudo*pi/180)) + Tmp<- Op(1,NaitenL) + if(mode(Tmp)=="numeric" && length(Tmp)==2){ + Tmp<- Doscaling(Tmp) + 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 in Looprange(1,length(Sha))){ + Tmp<- Op(J,Sha) + Q<- Tmp[1,] + R<- Tmp[2,] + Tmp<- Dotprod(Q-P,V)/Kankaku + K1<- ceiling(Tmp) + if(abs(K1-Tmp)<Eps) K1=K1+1 + Tmp<- Dotprod(R-P,V)/Kankaku + K2<- floor(Tmp) + if(abs(Tmp-K2)<Eps) K2=K2-1 + for (K in Looprange(K1,K2)){ + Tmp1<- Pointdata(P+K*Kankaku*V) + ShaL<- Mixjoin(ShaL, list(Tmp1)) + } + } + P<- PA+I*Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + Sha<- Dividegraphics(Sha) + I<- I+1 + } + P<- PA-Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + I<- 2 + while (length(Sha)>0){ + for (J in 1:length(Sha)){ + Tmp<- Op(J,Sha) + Q<- Tmp[1,] + R<- Tmp[2,] + Tmp<- Dotprod(Q-P,V)/Kankaku + K1<- ceiling(Tmp) + if(abs(K1-Tmp)<Eps) K1<- K1+1 + Tmp<- Dotprod(R-P,V)/Kankaku + K2<- floor(Tmp) + if(abs(Tmp-K2)<Eps) K2<- K2-1 + for (K in Looprange(K1,K2)){ + Tmp1<- Pointdata(P+K*Kankaku*V) + ShaL<- Mixjoin(ShaL, list(Tmp1)) + } + } + P<- PA-I*Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + I<- I+1 + } + } + else{ + Delta<- c(Xmn,Ymn)-StartP + K1<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymn)-StartP + K2<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymx)-StartP + K3<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmn,Ymx)-StartP + K4<- trunc(Dotprod(Delta,Vm)/Kankaku) + IM<- max(K1,K2,K3,K4) + Im<- min(K1,K2,K3,K4) + for (I in Im:IM){ + P<- StartP+I*Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + Sha<- Dividegraphics(Sha) + if(length(Sha)>0){ + for (J in 1:length(Sha)){ + Tmp<- Op(J,Sha) + Q<- Tmp[1,] + R<- Tmp[2,] + Tmp<- Dotprod(Q-P,V)/Kankaku + K1<- ceiling(Tmp) + if(abs(K1-Tmp)<Eps) K1=K1+1 + Tmp<- Dotprod(R-P,V)/Kankaku + K2<- floor(Tmp) + if(abs(Tmp-K2)<Eps) K2=K2-1 + for (K in Looprange(K1,K2)){ + Tmp1<- Pointdata(P+K*Kankaku*V) + ShaL<- Mixjoin(ShaL, list(Tmp1)) + } + } + } + } + } + ShaLs<-list() + for (I in Looprange(1,length(ShaL))) + { + Tmp<- ShaL[[I]] + Tmp1<- Unscaling(Tmp) + ShaLs<- Mixjoin(ShaLs,Tmp1) + } + ShaL<- ShaLs + return(ShaL) +} + +############################################# + +Dottedline<- function(...) +{ + varargin <- list(...) + Nall <- length(varargin) + Nagasa <- 0.1 + Ookisa <- PenThick + I <- Nall + Tmp <- varargin[[I]] + while (mode(Tmp)=="numeric" && length(Tmp)==1 ) { + I <- I-1 + Tmp <- varargin[[I]] + } + if(I==Nall-1) { + Nagasa<-Nagasa*varargin[[Nall]] + Nall <- Nall-1 + } + if(I==Nall-2) { + Nagasa <- Nagasa*varargin[[Nall-1]] + Ookisa <- round(Ookisa*varargin[[Nall]]) + Nall <- Nall-2 + } + Nagasa <- 1000/2.54/MilliIn*Nagasa + for (N in 1:Nall) { + Pdata <- varargin[[N]] + if(mode(Pdata)=="numeric") { + Pdata <- list(Pdata) + } + for (II in 1:length(Pdata)) { + Clist <- MakeCurves(Op(II,Pdata)) + DinM <- Dataindex(Clist) + for (n in Looprange(1,Nrow(DinM))) { + Tmp <- DinM[n,] + Data <- Clist[Tmp[1]:Tmp[2],] + Len <- 0 + Lenlist <- c(0) + for (I in Looprange(2,Nrow(Data))) { + Len <- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist <- c(Lenlist,Len) + } + Lenall <- Lenlist[length(Lenlist)] + if(Lenall==0) { + next + } + Naga <- Nagasa + Nten <- round(Lenall/Naga)+1 + if(Nten > 1) { + Seg <- Lenall/(Nten-1) + } + else { + Seg <- Lenall + } + Eps <- 10^(-6)*Seg + PPd<-c() + Hajime <- 1 + for (I in Looprange(0,Nten-1)) { + Len <- Seg*I + if(I>0) { + J <- Hajime + while( Len>=Lenlist[J]+Eps) { + J <- J+1 + } + Hajime <- J-1 + } + T <- (Len-Lenlist[Hajime])/ + (Lenlist[Hajime+1]-Lenlist[Hajime]) + P <- Data[Hajime,]+T*(Data[Hajime+1,]-Data[Hajime,]) + PPd<-Appendrow(PPd,P) + if(I==Nten-1) { + if(Norm(P-Data[1,])<Eps) { + next + } + } + } + Str<-paste("\\special{pn ", as.character(Ookisa),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + for (I in Looprange(1,Nrow(PPd))){ + P<- Op(I,PPd) + if(Nrow(PPd)==1){ + V<- c(1,0) + } + else if(I==1){ + Tmp<- Op(I+1,PPd)-P + V<- 1/Norm(Tmp)*Tmp + } + else if(I==Nrow(PPd)){ + Tmp<- P-Op(I-1,PPd) + V<- 1/Norm(Tmp)*Tmp + } + else{ + Tmp1<- Op(I+1,PPd)-P + Tmp2<- P-Op(I-1,PPd) + Tmp3<-1/Norm(Tmp1)*Tmp1+1/Norm(Tmp2)*Tmp2 + V<- 1/Norm(Tmp3)*Tmp3 + } + Tmp<- round(MilliIn*P[1]-1/2*Ookisa*V[1]) + X<- as.character(Tmp) + Tmp<- -round(MilliIn*P[2]-1/2*Ookisa*V[2]) + Y<- as.character(Tmp) + Str<-paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<- round(MilliIn*P[1]+1/2*Ookisa*V[1]) + X<- as.character(Tmp) + Tmp<- -round(MilliIn*P[2]+1/2*Ookisa*V[2]) + Y<- as.character(Tmp) + Str<-paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("\\special{fp}",file=Wfile,append=TRUE) + if(I%%2==0){ + cat("%\n",file=Wfile,append=TRUE) + } + } + } + } + } + Tmp<-PenThick/PenThickInit + Setpen(Tmp); +} + +########################################### + +Drwline<-function(...) +{ + varargin<-list(...) + Nall<-length(varargin) + Thick<-0 + Tmp<-varargin[[Nall]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + Thick<-round(Tmp*PenThickInit) + Str<-paste("\\special{pn ", as.character(Thick),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + Nall<-Nall-1 + } + for (N in 1:Nall){ + Pdata<-varargin[[N]] + if(length(Pdata)==0) next + if(mode(Pdata)!="list") Pdata<-list(Pdata) + while(Mixtype(Pdata)==3){ # 10.07.25 + Tmp1<- list() + for(II in Looprange(1,length(Pdata))){ + Tmp1<- Mixjoin(Tmp1,Pdata[[II]]) + } + Pdata<- Tmp1 + } # 10.07.25 + for (II in Looprange(1,length(Pdata))){ + Clist<-MakeCurves(Pdata[[II]]) + DinM<-Dataindex(Clist) + for (n in Looprange(1,Nrow(DinM))){ + Tmp<-DinM[n,] + Data<-Clist[Tmp[1]:Tmp[2],] + Mojisu<-0 + for (I in Looprange(1,Nrow(Data))){ + Tmp<-Data[I,] + X<- sprintf("%5.0f",MilliIn*Tmp[1]) # 11.07.19 + Y<- sprintf("%5.0f",-MilliIn*Tmp[2]) # 11.07.19 + Str<-paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<-Mojisu+nchar(Str) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<-0 + } + } + if(Mojisu!=0){ + cat("%\n",file=Wfile,append=TRUE) + } + cat("\\special{fp}%\n",file=Wfile,append=TRUE) + } + } + } + Str<-"%" + if(Thick>0){ + Tmp<-PenThick/PenThickInit + Setpen(Tmp) + } +} + +########################################### + +Drwpt<-function(...) +{ ## Scaling is implemented + varargin<-list(...) + Nargs<-length(varargin) + if(TenSize>TenSizeInit){ + N<- round(6*sqrt(TenSize/TenSizeInit)) + } + else{ + N<-4 + } + Tmp<- varargin[[Nargs]] + if(mode(Tmp)=="numeric"){ + if(length(Tmp)>1){ + Kosa<- 1; All<- Nargs + } + else{ + Kosa<- Tmp; All<- Nargs-1 + } + } + else if(mode(Tmp)=="list"){ + Kosa<- 1; All<- Nargs + } + CL<-c() + for (J in 0:N){ + Tmp<- TenSize*0.5*1000/2.54/MilliIn + Tmp<- Tmp*c(cos(pi/4+J*2*pi/N),sin(pi/4+J*2*pi/N)) + CL<- append(CL,Tmp) + } + CL<- matrix(CL,nrow=2) + CL<- t(CL) + for (II in Looprange(1,All)){ + MS<- varargin[[II]] + MS=Flattenlist(MS) #17.10.11 + if(mode(MS)=="numeric"){ + MS<- list(MS) + } + for (I in Looprange(1,length(MS))){ + P<- MS[[I]] + if(InWindow(P)!="i") next + P<- Doscaling(P) + PL<-c() + for (J in 0:N){ + PL<- c(PL,P+CL[J+1,]) + } + PL<-matrix(PL,nrow=2) + PL<-t(PL) + Mojisu<-0 + for (J in 1:Nrow(PL)){ + Q<- PL[J,] + X<- as.character(round(MilliIn*Q[1])) + Y<- as.character(-round(MilliIn*Q[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + cat("#\n",file=Wfile,append=TRUE) + } + Mojisu=0 + } + Str1<- paste("\\special{sh ",as.character(Kosa),"}",sep="") + Str2<- "\\special{fp}%\n" + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + } + } +} + +###################################################### + +Drwxy<-function(...) +{ + varargin<-list(...) + Nargs <- length(varargin) + Tmp<-grep("arrow", ZIKU) + if(length(Tmp)>0) + { + Arrowline(c(XMIN,GENTEN[2]),c(XMAX,GENTEN[2]),ARROWSIZE) + Arrowline(c(GENTEN[1],YMIN),c(GENTEN[1],YMAX),ARROWSIZE) + } + else + { + Drwline(Listplot(c(XMIN,GENTEN[2]),c(XMAX,GENTEN[2]))) + Drwline(Listplot(c(GENTEN[1],YMIN),c(GENTEN[1],YMAX))) + } + Letter(c(XMAX,GENTEN[2]),XPOS,XNAME) + Letter(c(GENTEN[1],YMAX),YPOS,YNAME) + Letter(GENTEN,OPOS,ONAME); +} + +########################################## +# 10.12.04 + +Enclosing<- function(...) +{ + Eps=10^(-7) # Scilab 16.12.05 + varargin<- list(...) + Nargs<- length(varargin) + P<- varargin[[1]] + if(Mixtype(P)==2){ + Tmp<- Op(1,P) + if(mode(Tmp)!="numeric" || length(Tmp)>1){ + AnsL<- EnclosingS(...) + AnsL<- Joincrvs(AnsL) # 10.12.04 + } + } + Tmp1=Op(1,AnsL) # Scilab 16.12.05from + Tmp2=Op(nrow(AnsL),AnsL) + if(Norm(Tmp2-Tmp1)>Eps){ + AnsL=Appendrow(AnsL,Tmp1) + } + return(AnsL) +} + +######################################### + +EnclosingS<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + AnsL<- list() + PdataL<- varargin[[1]] + Nall<-length(PdataL) + Eps<- 10^(-3) + EEps<- 0.1 + S<- c() + Flg<- 0 + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric" && Nrow(Tmp)==1 && length(Tmp)>1){ + S<- Tmp + } + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + if(Flg==0){ + Eps<- Tmp + Flg=Flg+1 + } + else{ + EEps<- Tmp + } + } + } + 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) + } + 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) + } + } + if(length(KL)>=2){ + if(length(S)==0){ + return("No Start Point") + } + Tmp<- Op(1,KL) + P<- Op(1,Tmp) + T1<- Op(2,Tmp) + Tmp<- Norm(P-S) + for (I in Looprange(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 + } + } + } + S<- P + AnsL<- list() + for (N in Looprange(1,Nall)){ + F<- Op(N,PdataL) + if(N>1) P<- Q + 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 + } + if(length(KL)==0) Flg<- 1 + 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 + } + 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 + } + } + if(Flg<10){ + T2<- Inf + for (I in Looprange(1,length(KL))){ + Dt<- Op(I,KL) + Tmp1<- Op(1,Dt) + Tmp<- Op(3,Dt) + Tmp2<- Paramoncurve(Tmp1,Tmp,F) + Tmp3<- Op(2,Dt) + if(Tmp2>T1+Eps && Tmp2<T2-Eps){ + Q<- Tmp1 + T2<- Tmp2 + T3<- Tmp3 + } + } + } + } + Tmp<- Partcrv(P,Q,F) + T1<- T3 + AnsL<- Mixjoin(AnsL,list(Tmp)) + } + return(AnsL) +} + +######################################## + +Endpicture<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0) + { + Drwxy() + } + else + { + if(varargin[[1]]==1) Drwxy() + } + cat("\\end{picture}}%",file=Wfile,append=TRUE) +# MEMORI<<-MEMORINow*1000/2.54/MilliIn + Setunitlen("1cm") +} + +######################################### + +Execmd<- function(StrL) +{ + if(mode(StrL)=="character" && length(StrL)==1){ + StrL<- list(StrL) + } + for (I in Looprange(1,length(StrL))){ + if(!is.na(Op(I,StrL)) && nchar(Op(I,StrL))>0){ + eval(parse(text=Op(I,StrL))) + } + } +} + +######################################### + +Expr<-function(...) +{ ## Scaling is implemented + varargin<-list(...) + Nargs<-length(varargin) + Irng<-c(seq(from=1,to=Nargs,by=3)) + for (I in Irng) + { + Tmp<-varargin[[I]] + P<- Doscaling(Tmp) + X<-P[1] + Y<-P[2] + Houkou<-varargin[[I+1]] + Mojiretu<-paste("$",varargin[[I+2]],"$",sep="") + Hset<-Houkou + Vhoko<-"c" + if(length(grep("n",Hset))>0) + { + Vhoko<-"n"; Y<-Y+MEMORI + } + if(length(grep("s",Hset))>0) + { + Vhoko<-"s"; Y<-Y-MEMORI + } + Hhoko<-"c" + if(length(grep("e",Hset))>0) + { + Hhoko<-"e"; X<-X+MEMORI + } + if(length(grep("w",Hset))>0) + { + Hhoko<-"w"; X<-X-MEMORI + } + Hoko<-paste(Vhoko,Hhoko,sep="") + Suu<-"+-.0123456789" + SuuL<-Suu + J<-1; Dstr<-"" + while (J<=nchar(Houkou)) + { + Tmp<-substring(Houkou,J,J) + if(length(grep(Tmp,Suu))>0) + { + if(Dstr=="") Hk<-substring(Houkou,J-1,J-1) + Dstr<-paste(Dstr,Tmp,sep="") + } + else + { + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + Dstr<-"" + } + } + J<-J+1 + } + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI; + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + } + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + cat("\\put(",file=Wfile,append=TRUE) + Tmp1<- sprintf("%7.7f",X) # 11.07.19 + Tmp2<- sprintf("%7.7f",Y) # 11.07.19 + Str<-paste(Tmp1,",",Tmp2,sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<-"){\\hspace*{\\Width}" + Str<-paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) + } +} + +########################################## + +Exprrot<- function(...) +{ + varargin<- list(...) + P<- varargin[[1]] + V<- varargin[[2]]; N<- 3 + P<- Doscaling(P) + V<- Doscaling(V) + Tmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Tmov<- Tmp; N<- N+1 + } + Nmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Nmov<- Tmp; N<- N+1 + } + Mojiretu<- paste("$",Assign(varargin[[N]]),"$",sep="") # 2017.11.26 + Tv<- 1/Norm(V)*V + Nv<- c(-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," + } + Tmp<- paste("\\rotatebox[",Units,"origin=c]{",as.character(Theta),sep="") + Tmp<- paste(Tmp,"}{",Mojiretu,"}",sep="") + Letter(P,"c",Tmp) +} + +###################################################### + +Findcell<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + Ag<- varargin[[2]] + Alpha<- "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" + if(mode(Ag)=="character"){ + Clm<- c() + Rstr<- "" + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,I,I) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + Tmp1<- nchar(Tmp[1]) + Clm<- c(Clm,Tmp1) + } + else{ + Rstr<- paste(Rstr,C,sep="") + } + } + Nrg<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length(Clm)-I + Nrg<- Nrg+Tmp*26^Tmp1 + } + Mrg<- eval(parse(text=Rstr)) + if(Nargs>=3){ + Ag<- varargin[[3]] + Clm<- c() + Rstr<- "" + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,1,1) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + if(length(Tmp)>1){ + Clm<- c(Clm,Tmp+1) + } + else{ + Rstr<- paste(Rstr,C,sep="") + } + } + Nrg2<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length[Clm]-I + Nrg2<- Nrg2+Tmp*26^Tmp1 + } + Nrg<- c(Nrg,Nrg2) + Tmp=eval(parse(text=Rstr)) + Mrg<- c(Mrg,Tmp) + } + } + else{ + Nrg<- varargin[[2]] + Mrg<- varargin[[3]] + } + if(length(Mrg)==1){ + m1<- Mrg; m2<- m1+1 + } + else{ + m1<- Mrg[1]; m2<- Mrg[2] # 10.12.12 + } + if(length(Nrg)==1){ + n1<- Nrg; n2<- n1+1 + } + else{ + n1<- Nrg[1]; n2<- Nrg[2] + } + n1<- n1+1; n2<- n2+1 + m1<- m1+1; m2<- m2+1 + Hind<- TbL[[2]] + Vind<- TbL[[3]] + Tmp<- TbL[[1]] + HL<- Tmp[Hind] + Tmp1<- Op(1,TbL[[4]]) + Tmp2<- Op(2,TbL[[4]]) + HL<- Mixjoin(list(Tmp1),HL,list(Tmp2)) + VL<- Tmp[Vind] + Tmp1<- Op(1,TbL[[5]]) + Tmp2<- Op(2,TbL[[5]]) + VL<- Mixjoin(list(Tmp1),VL,list(Tmp2)) + Tmp<- TbL[[6]] + Tmp1<- Listplot(c(Ptsw(Tmp),Ptnw(Tmp))) + Tmp2<- Listplot(c(Ptse(Tmp),Ptne(Tmp))) + HL<- Mixjoin(list(Tmp1),HL,list(Tmp2)) + Tmp1<- Listplot(c(Ptnw(Tmp),Ptne(Tmp))) + Tmp2<- Listplot(c(Ptsw(Tmp),Ptse(Tmp))) + VL<- Mixjoin(list(Tmp1),VL,list(Tmp2)) + Tmp<- HL[[n1]] + if(mode(Tmp)=="numeric"){ + H1<- Tmp[1,1] + } + else{ + Tmp1<- Tmp[[1]] + H1<- Tmp1[1,1] + } + Tmp<- HL[[n2]] + if(mode(Tmp)=="numeric"){ + H2<- Tmp[1,1] + } + else{ + Tmp1<- Tmp[[1]] + H2<- Tmp1[1,1] + } + Tmp<- VL[[m1]] + if(mode(Tmp)=="numeric"){ + V1<- Tmp[1,2] + } + else{ + Tmp1<- Tmp[[1]] + V1<- Tmp1[1,2] + } + Tmp<- VL[[m2]] + if(mode(Tmp)=="numeric"){ + V2<- Tmp[1,2] + } + else{ + Tmp1<- Tmp[[1]] + V2<- Tmp1[1,2] + } + Pt<- c((H1+H2)/2,(V1+V2)/2) + High<- (V1-V2)/2 + Wide<- (H2-H1)/2 + Out<- list(Pt,Wide,High) + return(Out) +} + +############################################ + +Flattenlist<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Out<- list() + for(N in Looprange(1,Nargs)){ + D<- varargin[[N]] + if(is.data.frame(D) || !is.list(D)){ # modify + Out<- c(Out,list(D)) + } + else{ + for(I in Looprange(1,length(D))){ + Ds<- D[[I]] + Tmp<- Flattenlist(Ds) + Out<- c(Out,Tmp) + } + } + } + return(Out) +} + +############################################ + +Fontsize<- function(Ookisa) +{ + Str<- "%" + S<- substr(Ookisa,1,1) + if(S=="n"){ + Str<- "\\normalsize%" + } + if(S=="s"){ + if(nchar(Ookisa)==1){ + Tmp<- "n" + } + else{ + Tmp<- substr(Ookisa,2,2) + } + if(Tmp=="s"){ + Str<- "\\scriptsize%" + } + else{ + Str<- "\\small%" + } + } + if(S=="f"){ + Str<- "\\footnotesize%" + } + if(S=="t"){ + Str<- "\\tiny%" + } + if(S=="l"){ + Str<- "\\large%" + } + if(S=="L"){ + if(nchar(Ookisa)==1){ + Tmp<- "a" + } + else{ + Tmp<- substr(Ookisa,2,2) + } + if(Tmp=="a"){ + Str<- "\\Large%" + } + else{ + Str<- "\\LARGE%" + } + } + if(S=="h"){ + Str<- "\\huge%" + } + if(S=="H"){ + Str<- "\\Huge%" + } + cat(Str,file=Wfile,append=TRUE) + cat("\n",file=Wfile,append=TRUE) +} + +########################################## + +Fracform<- function(...) +{ + varargin<- list(...) + Eps<- 10^(-10) + Nmax<- 1/Eps + Nargs<- length(varargin) + X<- varargin[[1]] + Nr<- Nrow(X) + X<- as.matrix(X,nrow=Nr) + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)!="numeric"){ + next + } + if(Tmp>1){ + Nmax<- Tmp + } + else if(Tmp>0){ + Eps<- Tmp + } + } + Tmp<- rep("",length(X)) + Out<- matrix(Tmp,nrow=nrow(X)) + for (I in Looprange(1,nrow(X))){ + for (J in Looprange(1,ncol(X))){ + Dt<- X[I,J] + if(mode(Dt)=="character"){ + Dt<- eval(parse(text=Dt)) + } + R<- 1 + N<- 0 + Rmin<- R + Nr<- N + while (R>Eps && N<Nmax){ + N<- N+1 + M<- round(Dt*N) + R<- abs(Dt-M/N) + if(R<Rmin){ + Rmin<- R + Nr<- N + } + } + if(N==Nmax){ + N<- Nr + M<- round(Dt*N) + } + Tmp<- as.character(M) + if(N!=1){ + Tmp<- paste(Tmp,"/",as.character(N),sep="") + } + Out[I,J]<- Tmp + } + } + if(nrow(Out)==1){ + Out<- as.character(Out) + } + return(Out) +} + +############################################## +# 2011.12.17 ( list ) + +Framedata<-function(...) +{ + varargin<- Flattenlist(list(...)) + N<-length(varargin) + if(N<= 1){ + H<- 1.0*10^(-4); + PA<-c(XMIN+H,YMIN+H) + PB<-c(XMAX-H,YMIN+H) + PC<-c(XMAX-H,YMAX-H) + PD<-c(XMIN+H,YMAX-H) + } + else{ + Tmp<-varargin[[N]] + if(is.numeric(Tmp) && length(Tmp)==1){ + Dy<-Tmp; Dx<-Dy + Tmp<-varargin[[N-1]] + if(is.numeric(Tmp) && length(Tmp)==1){ + Dx<-Tmp + } + Tmp<-varargin[[1]] + X<-Tmp[1]; Y<-Tmp[2] + X1<-X-Dx; X2<-X+Dx; Y1<-Y-Dy; Y2<-Y+Dy + } + else{ + Tmp<-varargin[[1]] + X1<-Tmp[1]; X2<-Tmp[2] + Tmp<-varargin[[2]] + Y1<-Tmp[1]; Y2<-Tmp[2] + } + PA<-c(X1,Y1); PB<-c(X2,Y1) + PC<-c(X2,Y2); PD<-c(X1,Y2) + } + Out<- Listplot(c(PA,PB,PC,PD,PA)) + return(Out) +} + +################################### + +Hatchdata<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + ShaL<- list() + Nargs<- length(varargin) + Kakudo<- 45 + Kankaku<- 0.125*1000/2.54/MilliIn + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + for (N in seq(Nargs,1, by=-1)) + { + Tmp<- varargin[[N]] + if(mode(Tmp)=="list") + { + break + } + } + if(N<Nargs) + { + Kakudo<- varargin[[N+1]] + if(N==Nargs-2) + { + Kankaku<- 0.125*varargin[[Nargs]] + } + } + NaitenL<- varargin[[1]] + if(mode(NaitenL)!="list") + { + NaitenL<- list(NaitenL) + } + Ns<- 2 + StartP<- Op(1,NaitenL) + if(mode(StartP)=="character") + { + StartP<- c((Xmn+Xmx)/2, (Ymn+Ymx)/2) + } + if(mode(varargin[[2]])=="numeric") + { + StartP<- varargin[[2]] + StartP<- Doscaling(StartP) + Ns<- 3 + } + Tmp<- list() + for ( I in Looprange(Ns,N)) + { + Tmp1<- list(varargin[[I]]) + Tmp2<- Mixjoin(Tmp, Tmp1) + Tmp<- Tmp2 + } + Bdy<- Kyoukai(Tmp) + Bdys<-list() + for (I in 1:length(Bdy)) + { + Tmp1<- Bdy[[I]] + Tmp2<- Doscaling(Tmp1) + Bdys<- Mixjoin(Bdys,list(Tmp2)) + } + Bdy<- Bdys + PtnL<- list() + for (I in Looprange(1,length(NaitenL))) + { + Tmp<- Op(I, NaitenL) + if(mode(Tmp)=="numeric") + { + Tmp1<- Naigai(Tmp,Bdy) + Tmp2<- Mixjoin(PtnL, list(Tmp1)) + PtnL<- Tmp2 + } + else + { + if(mode(Tmp)!="character") + { + return("Mode Error") + } + Ptn<-c() + for (J in 1:nchar(Tmp)) + { + if(Op(J,Tmp)=="i") + { + Ptn<- c(Ptn,1) + } + else + { + Ptn<- c(Ptn,0) + } + } + PtnL<- Mixjoin(PtnL, list(Ptn)) + } + } + Call<- length(Bdy) + Ptn<- c(seq(0, 0, length=Call)) + if(Member(Ptn,PtnL)) + { + Wn<- Doscaling(Framedata()) + Tmp<- Mixjoin(Bdy,list(Wn)) + Bdy<- Tmp + Tmp<- list() + for (I in Looprange(1, length(PtnL))) + { + Tmp1<- c(Op(I,PtnL),1) + Tmp2<- Mixjoin(Tmp,list(Tmp1)) + Tmp<- Tmp2 + } + PtnL<- Tmp + } + V<- c(cos(Kakudo*pi/180),sin(Kakudo*pi/180)) + Vm<- c(-sin(Kakudo*pi/180),cos(Kakudo*pi/180)) + Tmp<- Op(1,NaitenL) + if(mode(Tmp)=="numeric" && length(Tmp)==2) + { + Tmp<- Doscaling(Tmp) + Delta<- Tmp-StartP + K<- trunc(Dotprod(Delta,Vm)/Kankaku) + PA<- StartP+K*Kankaku*Vm + Sha<- Makeshasen(PtnL,PA,V,Bdy) + I <- 1 + while (length(Sha)>0) + { + Tmp<- Mixjoin(ShaL, list(Sha)) + ShaL <- Tmp + Sha<- Makeshasen(PtnL,PA+I*Kankaku*Vm,V,Bdy) + I <- I+1 + } + Sha<- Makeshasen(PtnL,PA-Kankaku*Vm,V,Bdy) + I<- 2 + while (length(Sha)>0) + { + for (J in 1:length(Sha)) + { + Tmp<- Mixjoin(ShaL,list(Sha[[J]])) + ShaL<- Tmp + } + Sha<- Makeshasen(PtnL,PA-I*Kankaku*Vm,V,Bdy) + I<- I+1 + } + } + else + { + Delta<- c(Xmn,Ymn)-StartP + K1<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymn)-StartP + K2<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymx)-StartP + K3<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmn,Ymx)-StartP + K4<- trunc(Dotprod(Delta,Vm)/Kankaku) + IM<- max(K1,K2,K3,K4) + Im<- min(K1,K2,K3,K4) + for (I in Im:IM) + { + Sha<- Makeshasen(PtnL,StartP+I*Kankaku*Vm,V,Bdy) + for (J in Looprange(1,length(Sha))) + { + Tmp<- Mixjoin(ShaL, list(Sha[[J]])) + ShaL<- Tmp + } + } + } + ShaLs<-list() + for (I in Looprange(1,length(ShaL))) + { + Tmp<- ShaL[[I]] + Tmp1<- Unscaling(Tmp) + Tmp2<- Mixjoin(ShaLs, list(Tmp1)) + ShaLs<- Tmp2 + } + ShaL<- ShaLs + return(ShaL) +} + +###################################### + +Htickmark<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in Looprange(1, floor((XMAX-GENTEN[1])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((XMIN-GENTEN[1])/Dm),by=-1)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt[1],Dt[2]) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt,GENTEN[2]) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X,Y+MARKLEN)) + Tmp2<- Unscaling(c(X,Y-MARKLEN)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X,Y-MARKLEN)) + Expr(Tmp,"s",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("s",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X,Y-MARKLEN)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X,Y+MARKLEN)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +############################################# +# 2013.08.07 + +Integrate<- function(Fs,Vs, Intv){ + if(is.function(Fs)){ + Fn<- Fs + } + else{ + Str<- paste("Fn<- function(",Vs, ") ", Fs, sep="") + eval(parse(text=Str)) + } + Tmp<- integrate(Fn, Intv[[1]], Intv[[2]]) + Out<- Tmp[[1]] + return(Out) +} + +############################################# + +Intersectcrvs<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + Eps<-10^(-4) + Tmp<-varargin[[Nargs]] + if(mode(Tmp)=="numeric" && length(Tmp)==1) + { + Eps<-Tmp + } + G1<-varargin[[1]] + if(mode(G1)=="numeric") + { + G1<-list(G1) + } + G2<-varargin[[2]] + if(mode(G2)=="numeric") + { + G2<-list(G2) + } + PL<-list() + for (N in 1:length(G1)) + { + for (M in 1:length(G2)) + { + KL<-IntersectcrvsPp(G1[[N]],G2[[M]],Eps) + for (I in Looprange(1,length(KL))) + { + Tmp<-KL[[I]] + P<-Tmp[1] + PL<-append(PL,P) + } + } + } + return(PL) +} + +########################################### + +IntersectcrvsPp<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + G1<-varargin[[1]]; G2<-varargin[[2]] + Eps<- 10.0^(-4) + if(Nargs>2) Eps<-varargin[[3]] + SqEps<- 10.0^(-10) + Eps2<- 0.1 + if(Nargs>3) Eps2<-varargin[[4]] + Data1<-G1 + Data2<-G2 + if(Nrow(Data1)==Nrow(Data2)) + { + Tmp<-seq(Nrow(Data2),1, by=-1) + Tmp1<-Data2[Tmp,] + Eps0<-10^(-6) + Tmp2<-Norm(Data1-Data2) + Tmp3<-Norm(Data1-Tmp1) + if(Tmp2<Eps0||Tmp3<Eps0) + { + KL<-list() + return(KL) + } + } + KL1<-list() + KL2<-list() + for (I in Looprange(1,Nrow(Data1)-1)) + { + A<-Data1[I,] + B<-Data1[I+1,] + for (J in Looprange(1,Nrow(Data2)-1)) + { + P<-Data2[J,]; Q<-Data2[J+1,] + Tmp<-Koutenseg(A,B,P,Q,Eps,Eps2) + if(mode(Tmp)=="list") + { + if(Tmp[[3]]==0) + { + Tmp1<-list(Tmp[[1]],Tmp[[2]],I,J) + KL1<-append(KL1,list(Tmp1)) + } + else + { + Tmp2<-list(Tmp[[1]],Tmp[[2]],I,J) + KL2<-append(KL2, list(Tmp2)) + } + } + } + } + KL<-list() + if(length(KL1)>0) + { + Tmp<-KL1[[1]] + P<-Tmp[[1]] + T<-Tmp[[2]] + I<-Tmp[[3]] + J<-Tmp[[4]] + Tmp<-list(P,I+T,J) + KL<-list(Tmp) + } + for (N in Looprange(2,length(KL1))) + { + Tmp<-KL1[[N]] + P<-Tmp[[1]] + Flg<-0 + for (K in 1:length(KL)) + { + if(1>length(KL)) break + Tmp<-KL[[K]] + if(Norm(P-Tmp[[1]])^2<SqEps) + { + Flg<-1 + break + } + } + if(Flg==0) + { + Tmp<-KL1[[N]] + T<-Tmp[[2]] + I<-Tmp[[3]] + J<-Tmp[[4]] + Tmp<-list(P,I+T,J) + KL<-append(KL,list(Tmp)) + } + } + for (N in Looprange(1,length(KL2))) + { + Tmp<-KL2[[N]] + P<-Tmp[[1]] + Flg<-0 + for (K in Looprange(1,length(KL))) + { + Tmp<-KL[[K]] + if(Norm(P-Tmp[[1]])^2<SqEps) + { + Flg<-1 + break + } + } + if(Flg==0) + { + Tmp<-KL2[[N]] + T<-Tmp[[2]] + T<-min(max(T,0),1) + I<-Tmp[[3]] + J<-Tmp[[4]] + Tmp<-list(P,I+T,J) + KL<-append(KL,list(Tmp)) + } + } + return(KL) +} + +########################################### +# 13.12.20 debugged + +Invdashline<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Nall<- Nargs; Sen<- 1 ; Gap<- 1 + Tmp<- varargin[[Nall]] + if(is.numeric(Tmp) && length(Tmp)==1 && Tmp>0){ # 13.12.20 + Tmp1<- varargin[[Nall-1]] + if(is.numeric(Tmp1) && length(Tmp1)==1 && Tmp1>0){ # 13.12.20 + Sen<- Tmp1; Gap<- Tmp + Nall<- Nall-2 + } + else{ + Sen<- Tmp; Gap<- Sen + Nall<- Nall-1 + } + } + Sen<- 1000/2.54/MilliIn*Sen + Gap<- 1000/2.54/MilliIn*Gap + for (N in Looprange(1,Nall)){ + Figdata<- varargin[[N]] + Makehasen(Figdata,Sen,Gap,1) + } +} + +######################################### + +Invert<- function(Pd) +{ + OutL=Pd[nrow(Pd):1,] + return(OutL) +} + +############################################ + +InWindow<-function(PA) +{ + Eps<-10.0^(-6); + if((length(PA)==2)&(is.numeric(PA))){ # 17.11.20 + X<-PA[1]; Y<-PA[2]; + if(X>XMIN-Eps && X<XMAX+Eps && Y>YMIN-Eps && Y<YMAX+Eps) + Rx<-"i" + else + Rx<-"o" + return(Rx) + }else{ + return("o") + } +} + +####################################### + +Joincrvs<- function(...) +{ + varargin<- list(...) + Nall<- length(varargin) + Eps<- 10^(-4) + Tmp<- varargin[[Nall]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + Eps<- Tmp + Nall<- Nall-1 + } + QdL<- Flattenlist(varargin[1:Nall]) # 11.06.25 + if(length(QdL)==0){ + PtL<-c() + return(PtL) + } + PtL<- Op(1,QdL) + for (I in Looprange(2,length(QdL))){ + Qd<- Op(I,QdL) + if(Numptcrv(Qd)<=1){next} # 11.06.25 + 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) + } + else if(MN==Norm(S-Q)){ + PtL=Invert(PtL) + } + else if(MN==Norm(S-R)){ + PtL<- Invert(PtL) + Qd<- Invert(Qd) + } + if(MN>Eps){ + PtL<- Appendrow(PtL,Qd) + } + else{ + if(is.null(nrow(Qd))){ Qd<- as.matrix(Qd,nrow=1)} + PtL<- Appendrow(PtL,Qd[2:nrow(Qd),]) # 11.06.25 + } + } + return(PtL) +} + +######################################## +# 2011.11.02 + +Joingraphics<- function(...) +{ + varargin<- list(...) + Ls<- Flattenlist(varargin) + N<- length(Ls) + Tp<- Ls[[N]] + Listflg<- 0 + if( is.character(Tp)){ + Tmp<- toupper(substr(Tp,1,1)) + if(Tmp=="L"){ + Listflg<- 1 + } + N<- N-1 + Ls<- Ls[1:N] + } + if(Listflg==1){ + P<- Ls + } + else{ + P<- c() + for (I in 1:N){ + Tmp<- Ls[[I]] + P<- Appendrow(P,c(Inf,Inf)) + P<- Appendrow(P,Tmp) + } + P<- P[2:nrow(P),] + } + return(P) +} + +######################################## + +Kouten<- function(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<- list(Inf,-Inf) + return(Out) + } + D<- U1*V2-U2*V1 + if(abs(D)/Tmp<Eps) + { + Out<- list(Inf,-Inf) + return(Out) + } + S<- ((-A2+P2)*V1+(A1-P1)*V2)/D + if(S>1+Eps || S<Eps) + { + Out<-list(Inf,-Inf) + return(Out) + } + T<- ((-A2+P2)*U1+(A1-P1)*U2)/D + Tmp<- PA+T*V + Out<- list(T,Tmp,sign(D)) + return(Out) +} + +########################################## + +KoutenList<- function(PA,V,Bdy) +{ + Eps<-10.0^(-6) + TenL<-list() + for (N in 1:length(Bdy)) + { + KL<- Op(N,Bdy) + for (K in Looprange(1, Nrow(KL)-1)) + { + P<- Op(K,KL); Q<- Op(K+1,KL) + if(P!="/" && Q!="/") + { + Tmp<- Kouten(PA,V,P,Q); + if(Tmp[[1]]!=Inf) + { + Ten<- append(Tmp,N) + Flg<- 0 + NN<- length(TenL) + I<- 1 + while (Flg==0 && I<=NN) + { + Tmp<- Op(I,TenL) + if(Op(1,Ten)<Op(1,Tmp)-Eps) + { + Tmp1<- TenL[Looprange(1,I-1)] + Tmp2<- TenL[Looprange(I,length(TenL))] + TenL<- Mixjoin(Tmp1,list(Ten),Tmp2) + Flg<-1 + } + else + if(Op(1,Ten)<Op(1,Tmp)+Eps) + { + if(Op(4,Ten)!=Op(4,Tmp)) + { + Tmp1<- TenL[Looprange(1,I-1)] + Tmp2<- TenL[Looprange(I,length(TenL))] + TenL<- Mixjoin(Tmp1,list(Ten),Tmp2) + Flg<-1 + } + else + if(Op(3,Ten)!=Op(3,Tmp)) + { + Tmp1<- TenL[Looprange(I,I-1)] + Tmp2<- TenL[Looprange(I+1,length(TenL))] + TenL<- Mixjoin(Tmp1,Tmp2) + } + Flg<- 1 + } + I<- I+1 + } + if(Flg==0) + { + TenL<- Mixjoin(TenL,list(Ten)) + } + } + } + } + } + return(TenL) +} + +########################################## + +Koutenseg<-function(...) +{ + #pointdata on AB at which AB intersects CD + varargin<-list(...) + 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 + return(Out) + } + P<-varargin[[3]]-A; Q<-varargin[[4]]-A + Eps <- 10.0^(-3) + if(Nargs>=5) + { + Eps<-varargin[[5]] + } + Eps2 <- 0.2 + if(Nargs>=6) + { + Eps2<-varargin[[6]] + } + 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 + return(Out) + } + if(max(P2,Q2)<m2 || min(P2,Q2)>M2) + { + Out<-Inf + return(Out) + } + 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<-list(Tmp1,Tmp2,0) + } + else + { + Tmp1<-A+T*V + Tmp2<-min(max(T,0),1) + Out<-list(Tmp1,Tmp2,1) + } + return(Out) + } + if(P1<m1 || P1>M1 || P2<m2 || P2>M2) + { + if(Q1<m1 || Q1>M1 || Q2<m2 || Q2>M2) + { + Out<-Inf + return(Out) + } + T<-min(max(Q1,0),1) + Tmp=A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + T<-min(max(P1,0),1) + Tmp<-A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + if(P1> -Eps0 && P1<1+Eps0 && P2> -Eps0 && P2 < Eps0) + { + T<- P1 + Tmp<- A+T*V + Out<- list(Tmp, T, 0) + return(Out) + } + if(Q1> -Eps0 && Q1<1+Eps0 && Q2> -Eps0 && Q2<Eps0) + { + T<- Q1 + Tmp<-A+T*V + Out<- list(Tmp,T,0) + return(Out) + } + if(P1<m1 || P1>M1 || P2<m2 || P2>M2) + { + if(Q1<m1 || Q1>M1 || Q2<m2 || Q2>M2) + { + Out<-Inf + return(Out) + } + T<-min(max(Q1,0),1) + Tmp<-A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + if(Q1<m1 || Q1>M1 || Q2<m2 || Q2>M2) + { + T<-min(max(P1,0),1) + Tmp<-A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + if(abs(P2)<abs(Q2)) + { + T<-min(max(P1,0),1) + } + else + { + T<-min(max(Q1,0),1) + } + Tmp<A+T*V + Out<-list(Tmp,T,1) + return(Out) +} + +########################################## + +Kukeiwake<- function(PL) +{ + Eps<-10.0^(-6) + NW<- c(XMIN,YMAX); SW<-c(XMIN,YMIN) + SE<- c(XMAX,YMIN); NE<-c(XMAX,YMAX) + Tmp<-matrix(c(NW,SW,SE,NE,NW),nrow=2) + Sikaku<- t(Tmp) + Kt<- IntersectcrvsPp(PL,Sikaku) + if(length(Kt)!=2) + { + print("not two points") + return(c()) + } + 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) #18.02.06 + T2<- Paramoncurve(Pt2,M2,Sikaku) + QL<c() + if(Norm(Pt1-Op(N1+1,PL))>Eps) + { + QL<-Pt1 + } + Tmp<-Appendrow(QL,PL[(N1+1):N2,]) + QL<- Tmp + if(Norm(Pt2-Op(N2,PL))>Eps) + { + Tmp<-Appendrow(QL,Pt2) + QL<- Tmp + } + HidariL<- QL + Ms<- M2+1; Me<- M1 + if(T1<T2+Eps) Me<- M1+4 + for (M in Looprange(Ms,Me)) + { + Tmp<- Op(Nrow(HidariL),HidariL) + P<-Op(((M-1) %% 4)+1,Sikaku) + if(Norm(Tmp-P)>Eps) + { + Tmp<-Append(HidariL,P) + HidariL<-Tmp + } + } + Tmp<- Op(Nrow(HidariL),HidariL) + if(Norm(Tmp-Pt1)>Eps) + { + Tmp<-Append(HidariL,Pt1) + HidariL<-Tmp + } + MigiL<- QL + Ms<- M2; Me<- M1+1 + if(T1>T2-Eps) Me<- Me-4 + for (Mm in Looprange(Me,Ms)) + { + M<- Me+Ms-Mm + Tmp<- Op(Nrow(MigiL),MigiL) + P<- Op(((M-1) %% 4)+1,Sikaku) + if(Norm(Tmp-P)>Eps) + { + Tmp<-Appendrow(MigiL,P) + MigiL<-Tmp + } + } + Tmp<- Op(Nrow(MigiL),MigiL) + if(Norm(Tmp-Pt1)>Eps) + { + Tmp<-Appendrow(MigiL,Pt1) + MigiL<-Tmp + } + Out<- list(HidariL,MigiL) + return(Out) +} + +################################### +# 17.09.24 Eps + +Kyoukai<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps0<- 10^(-7) + DataL<-list() + for (I in 1:Nargs){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + DataL<- Mixjoin(DataL,list(list(Tmp))) + } + if(mode(Tmp)=="list"){ + if(mode(Tmp[[1]])!="list"){ + DataL<- Mixjoin(DataL, list(Tmp)) + } + else{ + DataL<-Mixjoin(DataL,Tmp) + } + } + } + Eps<- 10.0^(-4) #17.09.24 + PLall<- list() + Sflg<- 0 + N<- length(DataL) + for (I in 1:N){ + Data<- Op(I, DataL) + Tmp<- Op(length(Data),Data) + if(mode(Tmp)=="numeric" && Nrow(Tmp)==1 && length(Tmp)>1){ + Rg<-Tmp ; Nd<-length(Data)-1 + } + else{ + if(mode(Tmp)=="character"){ + Rg<- Tmp ; Nd<-length(Data)-1 + } + else{ + Rg<- "c" ; Nd<-length(Data) + } + } + for (J in Looprange(1,Nd)){ + Tmp<- Op(J,Data) + if(mode(Tmp)=="character"){ + Rg<- Tmp + next + } + Points<- Tmp + P1<- Ptstart(Points) + P2<- Ptend(Points) + if(J==1){ + PL<- Points + Pfirst<- P1 + Plast<- P2 + if(Nd>=2){ + Tmp<- Data[[2]] + P<- Ptstart(Tmp) + Q<- Ptend(Tmp) + if(Norm(P2-P)>Eps && Norm(P2-Q)>Eps){ + Tmp< Nrow(PL) + PL<-PL[Tmp:1,] + Pfirst<- Ptstart(PL) + Plast<- Ptend(PL) + } + } + } + else{ + if(Norm(P1-Plast)<Eps){ + Stp<-1; Ks<-2; Ke=Nrow(Points) + } + else{ + if(Norm(P2-Plast)<Eps) { + Stp<- -1; Ks<-Nrow(Points)-1; Ke=1 + } + else{ + Tmp<-Appendrow(PL,c(Inf,Inf),Points) + PL<- Tmp + Sflg<- 1 + Pfirst<- P1 + Plast<- P2 + Stp<- 1; Ks<- Nrow(Points)-1; Ke<- 1 + } + } + for (K in seq(Ks,Ke, by=Stp)){ + Tmp<- Appendrow(PL,Op(K,Points)) + PL<-Tmp + } + Plast<- Op(Ke,Points) + } + } + if(Norm(Pfirst-Plast)>Eps){ + Np<- Nrow(PL) + if(Rg=="c"){ + Tmp<- Appendrow(PL,Pfirst) + PL<- Tmp + } + else if(Rg=="s"){ + Tmp<- c(PL[1:Np,2],YMIN) + Y<- min(Tmp)-1 + P<- c(Plast[1],Y); Q<- c(Pfirst[1],Y) + Tmp<- Appendrow(PL,P,Q,Pfirst) + PL<- Tmp + } + else if(Rg=="n"){ + Tmp<- c(PL[1:Np,2],YMAX) + Y<-max(Tmp)+1 + P<- c(Plast[1],Y); Q<- c(Pfirst[1],Y) + Tmp<- Appendrow(PL,P,Q,Pfirst) + PL<- Tmp + } + else if(Rg=="w"){ + Tmp<- c(PL[1:Np,1],XMIN) + X<- min(Tmp)-1 + P<- c(X,Plast[2]); Q<- c(X,Pfirst[2]) + Tmp<- Appendrow(PL,P,Q,Pfirst) + PL<- Tmp + } + else if(Rg=="e"){ + Tmp<- c(PL[1:Np,1],XMAX) + X<- max(Tmp)+1 + P<- c(X,Plast[2]); Q<- c(X,Pfirst[2]) + Tmp<- Appendrow(PL,P,Q,Pfirst) + PL<- Tmp + } + else if(mode(Rg)=="numeric" && Nrow(Rg)==1 && length(Rg)>1){ + Tmp<- Kukeiwake(PL) + Tmp1<- Op(1,Tmp) + Tmp2<- Naigai(Rg,list(Tmp1)) + if(Tmp2==c(1)){ + PL<-Op(1,Tmp) + } + else{ + PL<- Op(2,Tmp) + } + } + } + Tmp<- Ptstart(PL) + for (J in 2:Nrow(PL)){ + P<- Op(J,PL) + Q<- Op(Nrow(Tmp),Tmp) + if(Norm(P-Q)>Eps){ + Tmp1<-Appendrow(Tmp,P) + Tmp<-Tmp1 + } + } + PL<-Tmp + PLall<-Mixjoin(PLall,list(PL)) + } + if(length(PLall)==1 && Sflg==0){ + Tmp<- Op(1,PLall) +# Tmp<- Op(1,Tmp) + if(Norm(Ptstart(Tmp)-Ptend(Tmp))>Eps0){ + Tmp1<- Appendrow(Tmp,Ptstart(Tmp)) + PLall<- list(Tmp1) + } + } + return(PLall) +} + +###################################### + +Letter<-function(...) +{ ## Scaling is implemented + varargin<-list(...) + Nargs<-length(varargin) + Irng<-c(seq(from=1,to=Nargs,by=3)) + for (I in Irng) + { + 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(length(grep("n",Hset))>0) + { + Vhoko<-"n"; Y<-Y+MEMORI + } + if(length(grep("s",Hset))>0) + { + Vhoko<-"s"; Y<-Y-MEMORI + } + Hhoko<-"c" + if(length(grep("e",Hset))>0) + { + Hhoko<-"e"; X<-X+MEMORI + } + if(length(grep("w",Hset))>0) + { + Hhoko<-"w"; X<-X-MEMORI + } + Hoko<-paste(Vhoko,Hhoko,sep="") + Suu<-"+-.0123456789" + SuuL<-Suu + J<-1; Dstr<-"" + while (J<=nchar(Houkou)) + { + Tmp<-substring(Houkou,J,J) + if(length(grep(Tmp,SuuL))>0) + { + if(Dstr=="") Hk<-substring(Houkou,J-1,J-1) + Dstr<-paste(Dstr,Tmp,sep="") + } + else + { + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + Dstr<-"" + } + } + J<-J+1 + } + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI; + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + } + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + cat("\\put(",file=Wfile,append=TRUE) + Tmp1<- sprintf("%7.7f",X) # 11.07.19 + Tmp2<- sprintf("%7.7f",Y) # 11.07.19 + Str<-paste(Tmp1,",",Tmp2,sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<-"){\\hspace*{\\Width}" + Str<-paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) + } +} + +###################################################### + +Letterrot<- function(...) +{ + varargin<- list(...) + P<- varargin[[1]] + V<- varargin[[2]]; N<- 3 + P<- Doscaling(P) + V<- Doscaling(V) + Tmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Tmov<- Tmp; N<- N+1 + } + Nmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Nmov<- Tmp; N<- N+1 + } + Mojiretu<- Assign(varargin[[N]]) #2017.11.26 + Tv<- 1/Norm(V)*V + Nv<- c(-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," + } + Tmp<- paste("\\rotatebox[",Units,"origin=c]{",as.character(Theta),sep="") + Tmp<- paste(Tmp,"}{",Mojiretu,"}",sep="") + Letter(P,"c",Tmp) +} + +################################### +# 10.12.04 + +Lineplot<-function(...) +{ + varargin <- list(...) + Nargs<-length(varargin) + A<-varargin[[1]] + if(is.numeric(A)) { + 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 + } + } + else { + B<-A[[2]] + A<-A[[1]] + Is <- 2 + } + Mag <- 100 ; Semi <- "" ## 10.12.04 + for (I in Looprange(Is,Nargs)) { + Tmp <- varargin[[I]] + switch ( mode(Tmp), + "numeric"= Mag <- Tmp, + "character"= Semi <- Tmp + ) + } +V<- Mag/Norm(B-A)*(B-A) ## 10.12.04 from here + if(Semi=="") { + Out<- Listplot(c(A-V,A+V)) + } + else if(Semi=="+") { + Out<- Listplot(c(A,A+V)) + } + else { + Out<- Listplot(c(A-V,A)) + } ## 10.12.04 to here + return(Out) +} + +################################ + +Listplot<-function(...) +{ + varargin<-list(...); + Z<-c(); + for (I in 1:length(varargin)) + { + Data<-varargin[[I]]; + if(mode(Data)=="numeric") + { + if(class(Data)=="numeric") + { + Tmp<-matrix(Data,nrow=2); + Tmp<-t(Tmp); + Z<-Appendrow(Z,Tmp) + } + else + Z<-Appendrow(Z,Data) + } + else + { + for (J in 1:length(Data)) + { + Tmp<-Data[[J]]; + Z<-Appendrow(Z,Tmp) + } + } + } + return(Z) +} + +############################## + +MakeBowdata <- function(PA,PB,H) +{ + Eps <- 10^(-5) + BOWSTART <<- PA + BOWEND <<- PB + D <- 1/2*Norm(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<-Tm[2]; C2<-Tmp[3] + C0<- A1^2+(A2-(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2))^2-R^2 + C1<- -(A1+B1)*(A2^2+B2^2-2*A2*B2-2*A1*B1+A1^2+B1^2)/(A2-B2)^2 + C2<- 1+(A1-B1)^2/(A2-B2)^2 + Det <- sqrt(C1^2-4*C0*C2) + Ansx1 <- (-C1+Det)/(2*C2) + Ansx2 <- (-C1-Det)/(2*C2) + Tmp <- -(A1-B1)*Ansx1/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2) + PC <- c(Ansx1,Tmp) + Tmp <--(A1-B1)*Ansx2/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2) + PC2 <- c(Ansx2,Tmp) + } + else{ + Tmp <- 0.5*(PA+PB) + PC <- Tmp+c(0,R-H) # 11.06.02 + PC2 <- Tmp-c(0,R-H) + } + VA <- PA-PC + VB <- PB-PC + if(VA[1]*VB[2]-VA[2]*VB[1]<0) { + PC <- PC2 + } + AngA <- acos((PA[1]-PC[1])/R) + if(PA[2]-PC[2]<0){ + AngA <- -AngA + } + AngB <- acos((PB[1]-PC[1])/R) + if(PB[2]-PC[2]<0){ + AngB <- -AngB + } + if(AngA>AngB) { + AngB <- AngB+2*pi + } + Out <- list(PC,R,AngA,AngB) + return(Out) +} + +#################################################### + +MakeCurves<-function(...){ ## Scaling is implemented + varargin<-list(...) + Figdata<-varargin[[1]] + if(class(Figdata)=="numeric"){ + Figdata<-matrix(Figdata,nrow=1) + } + Ptout<-1 + if(length(varargin)>=2) Ptout<-varargin[[2]] + Eps<-10.0^(-6) + IndM<-Dataindex(Figdata) + Atos<-c() + for (Nd in 1:Nrow(IndM)){ + Tmp<-IndM[Nd,] + Motos<-Figdata[Tmp[1]:Tmp[2],] + All<-Nrow(Motos) + if(Nrow(Motos)==1){ + if(InWindow(Motos)=="o"){ + next + } + Tmp1<- as.numeric(Motos) + if(Ptout==1){ + Drwpt(Tmp1) + } + else{ + Tmp1<- Doscaling(Tmp1) + Atos<-Appendrow(Atos,c(Inf,Inf),Tmp1) + next + } + } + Crv<-c() + for (I in Looprange(2,All)){ + P<- Op(I-1,Motos) + Q<- Op(I,Motos) + Snbn<-MeetWindow(P,Q) + if(length(Snbn)==0){ + if(length(Crv)>0){ + Atos<-Appendrow(Atos,c(Inf,Inf),Doscaling(Crv)) + Crv<-c() + } + } + else{ + if(Norm(Snbn[1,]-Snbn[2,])<Eps){ next} # naosi 101202 + if(length(Crv)==0){ + Crv<-Snbn + } + else{ + Tmp<-Op(Nrow(Crv),Crv) + if(Norm(Tmp-Op(1,Snbn))<Eps){ + Crv<-Appendrow(Crv,Op(2,Snbn)) + } + else{ + Atos<-Appendrow(Atos,c(Inf,Inf),Doscaling(Crv)) + Crv<-Snbn + } + } + } + } + if(Nrow(Crv)>=2) + { + Atos<-Appendrow(Atos,c(Inf,Inf),Doscaling(Crv)) + } + } + Outdata<-Atos[2:Nrow(Atos),] + if(class(Outdata)=="numeric") + { + Outdata<-matrix(Outdata,nrow=1) + } + return(Outdata) +} + +###################################### + +Makehasen<- function(Figdata,Sen,Gap,Ptn) +{ + Eps<- 10.0^(-6) + Clist<- MakeCurves(Figdata) + DinM<- Dataindex(Clist) + for (N in Looprange(1,Nrow(DinM))){ + Tmp<- DinM[N,] + Data<- Clist[Tmp[1]:Tmp[2],] + Dtall<- Nrow(Data) + Len<- 0 + Lenlist<- c(0) + for (I in Looprange(2,Dtall)){ + Len<- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist<- c(Lenlist,Len) + } + Lenall<- Lenlist[Dtall] + if(Lenall==0){ + next + } + Kari<- (Sen+Gap)*0.1 + Naga<- Sen*0.1 + Tobi<- Gap*0.1 + if(Norm(Data[1,]-Data[Dtall,])<Eps){ + Nsen<- max(ceiling(Lenall/Kari),3) + SegUnit<- Lenall/Nsen + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + if(Ptn==0){ + Nsen<- max(ceiling((Lenall+Tobi)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + Nsen<- max(ceiling((Lenall+Naga)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(Tobi,Tobi+(Nsen-2)*SegUnit,by=SegUnit)) + } + } + Hajime<- 1; Owari<- 1 + Mojisu<- 0 + for (I in Looprange(1,length(SegList))){ + Len<- SegList[I] + J<- Owari + while (Len>=Lenlist[J]-Eps){ + if(J==Dtall){ + break + } + J<- J+1 + } + Hajime<- J-1 + J<- Hajime + while (Len+Naga>Lenlist[J]-Eps){ + if(J==Dtall){ + break + } + J<- J+1 + } + Owari<- J-1 + T<- (Len-Lenlist[Hajime]) + T<- T/(Lenlist[Hajime+1]-Lenlist[Hajime]) + P<- Data[Hajime,]+T*(Data[Hajime+1,]-Data[Hajime,]) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + for (J in Looprange(Hajime+1,Owari)){ + P<- Data[J,] + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + } + T<- (Len+Naga-Lenlist[Owari]) + T<- T/(Lenlist[Owari+1]-Lenlist[Owari]) + P<- Data[Owari,]+T*(Data[Owari+1,]-Data[Owari,]) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str1<- paste("\\special{pa ",X," ",Y,"}",sep="") + Str2<- "\\special{fp}" + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str1)+nchar(Str2) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<- 0 + } + } + } + cat("%\n%\n",file=Wfile,append=TRUE); +} + +###################################### + +Makeliststr<- function(L) +{ + Out="list(" + for (I in 1:length(L)){ + Dt<- L[[I]] + if(mode(Dt)=="numeric"){ + if(length(Dt)==1){ + Dts<- as.character(Dt) + } + else{ + Dts<- "c(" + for (J in Looprange(1,Nrow(Dt))){ + for (K in 1:ncol(Dt)){ + Dts<- paste(Dts,as.character(Dt[J,K]),sep="") + if(K< ncol(Dt)){ + Dts<- paste(Dts,",",sep="") + } + } + if(J<Nrow(Dt)){ + Dts<- paste(Dts,";",sep="") + } + else{ + Dts<- paste(Dts,")",sep="") + } + } + } + } + if(mode(Dt)=="character"){ + Dts<- paste(Prime(),Dt,Prime(),sep="") + } + if(mode(Dt)=="list"){ + Dts<- Makeliststr(Dt) + } + Out<- paste(Out,Dts,sep="") + if(I<length(L)){ + Out<- paste(Out,",") + } + else{ + Out<- paste(Out,")",sep="") + } + } + return(Out) +} + +############################################ + +Makeshasen<- function(PtnL,PA,V,Bdy) +{ + Eps<- 10^(-6) + TenL<- KoutenList(PA,V,Bdy) + Nten<- length(TenL) + Call<- length(Bdy) + Ptn<- c(seq(0, 0, length=Call)) + Out<- list() + GL<- c() + Te<- -10^6 + for (I in Looprange(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<- (Op(NC,Ptn)+1) %% 2 + Ptn[NC]<- Tmp + if(Op(1,TenQ)-Ts>Eps){ + if(Member(Ptn,PtnL)){ + if(abs(Te-Ts)>Eps){ + if(Nrow(GL)>0){ + Tmp<- Mixjoin(Out, list(GL)) + Out<- Tmp + } + GL<- Listplot(P,Q) + } + else{ + Tmp <- Appendrow(GL, Q) + GL<- Tmp + } + Te<- Op(1,TenQ) + } + } + } + if(Nrow(GL)>0){ + Tmp<- Mixjoin(Out, list(GL)) + Out<- Tmp + } + return(Out) +} + +############################################# + +Mawarikomi<- function(...) +{ + varargin<- list(...) + haba<- "10cm" + Nargs<- length(varargin) + if(Nargs>0){ + haba<- varargin[[1]] + } + cat("\\begin{mawarikomi}%\n",file="",append=TRUE) + cat("%<1>[5](0,0)%\n",file="",append=TRUE) + Str<- paste("{",haba,"}{%\n",sep="") + cat(Str,file="",append=TRUE) + cat("}%\n",file="",append=TRUE) + cat("\\end{mawarikomi}",file="",append=TRUE) +} + +############################################## + +MeetWindow<-function(PA,PB) +{ + if(InWindow(PA)=="i" && InWindow(PB)=="i") + { + R<-Appendrow(PA,PB) + return(R) + }; + Horner<-function(n,t) + { + PT<-(1-t)*PA+t*PB; + return(PT[n]) + } + Eps<-10.0^(-6); + 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]); + } + if(PA[2]!=PB[2]) + { + Tym<-(YMIN-PA[2])/(PB[2]-PA[2]); + TyM<-(YMAX-PA[2])/(PB[2]-PA[2]); + } + Tmp<-Horner(2,Txm); + if(Tmp<YMIN-Eps || Tmp>YMAX+Eps) + { + Txm<-(-1); + } + Tmp<-Horner(2,TxM); + if(Tmp<YMIN-Eps || Tmp>YMAX+Eps) + { + TxM<-(-1) + } + Tmp<-Horner(1,Tym); + if(Tmp<XMIN-Eps || Tmp>XMAX+Eps) + { + Tym<--1 + } + Tmp<-Horner(1,TyM); + if(Tmp<XMIN-Eps || Tmp>XMAX+Eps) + { + TyM<--1 + } + Tans<-sort(c(Txm,TxM,Tym,TyM)); + Tmp<-c(); + for (I in 1:length(Tans)) + { + Tmp1<-Tans[I]; + if(Tmp1>-Eps && Tmp1<1+Eps) + { + if(length(Tmp)==0) + { + Tmp<-c(Tmp1); + } + else + { + if(abs(Tmp[length(Tmp)]-Tmp1)>Eps) + { + Tmp<-c(Tmp,Tmp1) + } + } + } + } + Tans<-Tmp; + if(length(Tans)==0) + { + R<-c(); + return(R); + } + if(length(Tans)==1) + { + Ten1<-Horner(1:2,Tans[1]); + if(InWindow(PA)=="i") + { + R<-Appendrow(PA,Ten1) + return(R) + } + else + { + R<-Appendrow(Ten1,PB) + return(R) + } + } + Ten1<-Horner(1:2,Tans[1]) + Ten2<-Horner(1:2,Tans[2]) + R<-Appendrow(Ten1,Ten2) + return(R) +} + +######################################### + +# New 10.03.21 + +Mixjoin<-function(...) +{ + varargin<-list(...) + Nargs<- length(varargin) + M<- list() + for (I in 1:Nargs) + { + Tmp<-varargin[[I]] + if(length(Tmp)==0) next + if(Mixtype(Tmp)==1) + { + Tmp<-list(Tmp) + } + if(length(M)==0){ + M <- Tmp + } + else{ + M<- c(M,Tmp) + } + } + return(M) +} + +################################# + +Mixlength<- function(PL){ + if(length(PL)==0){ + return(0) + } + if(Mixtype(PL)==1){ + Out<- Nrow(PL) + } + else{ + Out<- length(PL) + } + return(Out) +} + +########################################### + +Mixtype<- function(D) +{ + if(mode(D)!="list") return(1) + for (I in 1:length(D)) + { + Tmp<- D[[I]] + if(mode(Tmp)=="list") return(3) + } + return(2) +} + +########################################### + +Naigai<- function(A,Bdy) +{ + V<- c(1,1) + Call<-length(Bdy) + KL<- KoutenList(A,V,Bdy) + Ptn<- seq(1,1,length=Call) + for (K in Looprange(1,length(KL))) + { + Ten<- Op(K,KL) + T<- Op(1,Ten); NC<- Op(4,Ten) + if(T<0) + { + Tmp<- (Ptn[NC]+1) %% 2 + Ptn[NC]<- Tmp + } + } + return(Ptn) +} + +######################################## + +Nearestpt<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + PL1<- varargin[[1]] + if(!is.matrix(PL1)){ + Tmp<- matrix(PL1); + PL1<- t(Tmp) + } + if(Nrow(PL1)==1) Flg=0 + else Flg=1 + Eps<- 10.0^(-6) + PL<- varargin[[2]] + Ans<- list(PL1[1,],1,PL[1,],1,Norm(PL1[1,]-PL[1,])) + for(N in Looprange(1,Nrow(PL1))){ + PA<- PL1[N,] + Pm<- PL[1,] + Im<- 1 + Sm<- Norm(Pm-PA) + for(I in Looprange(1,Nrow(PL)-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) next + T<- (-A2*V2-V1*A1+V1*X1+X2*V2)/Tmp + if(T< -Eps){ + P<- c(A1,A2) + }else{ + if(T>1+Eps){ + P<- c(B1,B2) + }else{ + P<- c(A1+T*V1,A2+T*V2) + } + } + S<- Norm(P-PA) + if(S<Sm-Eps){ + Tmp<- Paramoncurve(P,I,PL) + Pm<- P; Im<- Tmp; Sm<- S + } + } + if(Sm<Op(5,Ans)) Ans<- list(PA,N,Pm,Im,Sm) + if(Flg==0){ + Ans<- Ans[3:5] + } + } + return(Ans) +} + +######################################### + +Newlength<- function() +{ + Tmp1<- "\\newlength{\\Width}%\n" + Tmp2<- "\\newlength{\\Height}%\n" + Tmp3<- "\\newlength{\\Depth}%\n" + cat(Tmp1,file="",append=TRUE); + cat(Tmp2,file="",append=TRUE); + cat(Tmp3,file="",append=TRUE); +} + +######################################### + +Numptcrv<-function(Fig) +{ + return(Nrow(Fig)) +} + +# 2018.01.29 +Length<- function(Data){ + if(is.matrix(Data)){return(nrow(Data))} + if(is.character(Data)){return(nchar(Data))} + return(length(Data)) +} + +######################################### + +Op<-function(N,Data) +{ + C <- c() + if(length(Data)==0) return(C) + if(mode(Data)=="list"){ + if(class(Data)=="data.frame"){ # 10.02.23 + C<- Data[N,] + } + else{ + C<- Data[[N]] + } + return(C) + } + if(mode(Data)=="character"){ + if(length(Data)==1){ + C<- substring(Data,N,N) + } + else{ + C<- Data[N] + } + return(C) + } + if(mode(Data)=="numeric"){ + if(class(Data)=="matrix"){ + Din<- Dataindex(Data) + if(nrow(Din)==1){ + C<- Data[N,] + } + else{ + Tmp1<- Din[N,1] + Tmp2<- Din[N,2] + C<- Data[Tmp1:Tmp2,] + } + } + else{ + C=Data[N] + } + } + return(C) +} + +######################################### +# 2013.05.20 Changed ( Creator recorded) +# 2013.12.18 Beginpicture inclued + +Openfile<-function(...) +{ + varargin<- list(...) + File<- varargin[[1]] + Bflg<- 0 + Wfile<<- File + Creator<- "" + Cflg<- 0 + Nargs<- length(varargin) + for(N in Looprange(2,Nargs)){ + Tmp<- varargin[[N]] + Tmp1<- strsplit(Tmp,"=",fixed=TRUE) + Tmp1<- Tmp1[[1]] + if(length(Tmp1)>1){ + Creator<- Tmp1[2] + Cflg<- 1 + } + else{ + Unitstr<- Tmp + Bflg<- 1 + } + } + Recentf<- "" + Fv<- list.files() + Nv<- grep("\\.r$", Fv) + Rfiles<- Fv[Nv] + StrW<- paste("%%% ",File,sep="") #17.10.28 + StrC<- paste("%%% Generator=",Creator,sep="") + if(Cflg==0){ + } + cat(StrW,"\n",file=Wfile) + cat(StrC,"\n",file=Wfile,append=TRUE) + if(Bflg==1){ + Beginpicture(Unitstr) + } +} + +######################################### + +Openpar<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Tmp<- varargin[[1]] + Tmp1<- substr(Tmp,1,1) + if(Tmp1=="\\"){ + Namestr<- Tmp + N<- 2 + } + else{ + Namestr<- "\\tmp" + N<- 1 + } + Habastr<- varargin[[N]] + if(Nargs>N){ + Posstr<- paste("[",varargin[[N+1]],"]",sep="") + } + else{ + Posstr<- "[c]" + } + Openphr(Namestr) + S<- paste("\\begin{minipage}",Posstr,"{",Habastr,"}%\n",sep="") + cat(S,file=Wfile,append=TRUE) +} + +################################### + +Openphr<- function(Str) +{ + S<- paste("\\def",Str,"{%\n",sep="") + cat(S,file=Wfile,append=TRUE) +} + +##################################### + +Ovalbox<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Pos<- varargin[[1]] + Dr<- varargin[[2]] + StrV<- varargin[[3]] + R<- 0.2 + NDflg<- 0 + for (I in Looprange(4,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + R<- Tmp + } + else{ + if(substr(Tmp,1,1)=="-"){ + NDflg<- 1 + Tmp1<- substr(Tmp,2,nchar(Tmp)) + Cmdstr<- chartr("*","G",Tmp1) + } + } + } + Xr<- c(XMIN,XMAX) + Yr<- c(YMIN,YMAX) + Uv<- 0.6; Uh<- 0.8 + N<- nchar(StrV) + W<- Uh;H<- Uv*N + Setwindow(c(-W/2,W/2),c(-H,0)) + G<- Ovaldata(c(0,-H/2),W/2,H/2,R) + Openphr("\\ketpictmp") + Beginpicture("1cm") + if(NDflg==0){ + Drwline(G) + } + else{ + eval(parse(text=Cmdstr)) + } + for (I in Looprange(1,N)){ + Letter(c(0,Uv/2-Uv*I),"c",Op(I,StrV)) + } + Endpicture(0) + Closephr() + Setwindow(Xr,Yr) + Letter(Pos,Dr,"\\ketpictmp") +} + +########################################## + +Ovaldata<- function(...) #17.09.11 +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==1){ + Eps<- 1.0*10^(-4) + C<- 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 + } + Rc<- 0.2 + if(N<=Nargs){ #15.11.15 + Rc<- varargin[[N]]*Rc #15.11.15 + } + Out<- c() + P<- C+c(Dx-Rc,Dy-Rc) + Tmp1<- Circledata(c(P,Rc),"R=c(0,pi/2)","N=10") #17.11.29 + Tmp2<- Listplot(C+c(Dx-Rc,Dy),C+c(0,Dy)) + Tmp3<- Listplot(C+c(Dx,0),C+c(Dx,Dy-Rc)) + G<- Joincrvs(Tmp3,Tmp1,Tmp2) + Tmp<- Reflectdata(G,c(C,C+c(0,1))) + G<- Joincrvs(G,Tmp) + Tmp<- Reflectdata(G,c(C,C+c(1,0))) + Out<- Joincrvs(G,Tmp) +} + +######################################### + +Paramark<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + PA<- varargin[[1]] + PB<- varargin[[2]] + PC<- varargin[[3]] + R<- 0.5 + if(Nargs>=4){ + R<- varargin[[4]]*R + } + U<- R*(PA-PB)/Norm(PA-PB) + V<- R*(PC-PB)/Norm(PC-PB) + if(Crossprod(PA-PB,PC-PB)!=0){ + P<- Listplot(c(PB+U,PB+U+V,PB+V)) + } + else{ + P<- c() + } +} + +########################################### + +Paramoncurve<-function(...){ + varargin<-list(...) + Nargs<-length(varargin) + Eps<-10^(-8) + P<-varargin[[1]] + Gdata<-varargin[[Nargs]] + if(Nrow(P)>1){ + Tmp<-P; P<-Gdata; Gdata<-Tmp + } + if(Nargs==2){ + Tmp<-Nearestpt(P,Gdata) + Out<-Tmp[[2]] + return(Out) + } + N<-varargin[[2]] + PtL<-Gdata + N=min(N,Length(PtL)-1) #18.02.11from + Pa<-Ptcrv(N,PtL) + Pb<-Ptcrv(N+1,PtL) + V<-Pb-Pa + W<-P-Pa + D2<-Norm(V)^2 + if(D2<Eps) return(0) + S<-Dotprod(V,W)/D2 + S<-min(max(S,0),1) + Out=N+S #18.02.11upto + return(Out) +} + +############################################## + +Paramplot<- function(...) +{ + varargin<- list(...) + Eps<- 10^(-5) + Nargs<- length(varargin) + Fnflg<- 0 + Fnstr<- varargin[[1]]; Is=2 + Rgstr<- varargin[[Is]]; Is<- Is+1 + Range<- c(0,2*pi) + N<- 50 # Numpoints + E<-c() # Exclusions + D<- Inf # Discont + for (I in Looprange(Is,Nargs)) + { + Tmp<- varargin[[I]] + Tmp<- strsplit(Tmp,"=") + K<- Tmp[[1]] + Tmp<- K[1] + Lhs<- substring(Tmp,1,1) + Tmp1<- K[2] + Str<-paste(Lhs,"=",Tmp1,sep="") + eval(parse(text=Str)) + } + Tmp<- strsplit(Rgstr,"=") + K<-Tmp[[1]] + if(length(K)>1) + { + Vname<- K[1] + Tmp1<- K[2] + Rng<- eval(parse(text=Tmp1)) + } + else + { + Vname<- Rgstr + Rng<- c(0,2*pi) + } + T1<- Rng[1]; T2<- Rng[2] + Dt<- (T2-T1)/N #17.09.22 + if(Fnflg==0) + { + Str<- gsub(Vname,"t",Fnstr) + } + if(abs(Dt)<Eps){ # 16.12.13 + t=T1 + P=eval(parse(text=Str)) + return(P) + } + P<-c() + if(length(E)>0) + { + E<-sort(E) + E<E[length(E):1] + } + E<- c(E, Inf) + Tmp<- sort(E) + E<- E[length(Tmp):1] + Ke<- 1 +# for (t in seq(T1, T2+Eps, by=Dt)){#18.02.05 + for(jj in 1:(N+1)){ + t=T1+(jj-1)*Dt + Pa<- c() + if(t-E[Ke]< Eps) + { + if(Fnflg==0) + { + Tmp<-eval(parse(text=Str)) + Pa<- Tmp + } + else + { + } + } + if(abs(t-E[Ke])<=Eps) + { + if(Nrow(P)>0 && Op(Nrow(P),P)!=c(Inf,Inf)) + { + Pa<- c(Inf,Inf) + } + } + if(t-E[Ke]>Eps) + { + if(Fnflg==0) + { + Tmp<- eval(parse(text=Str)) + Pa<- Tmp + } + else + { + } + Ke<-Ke+1 + } + if(length(Pa)>0) + { + if(Pa[1]==Inf) + { + Tmp<-Appendrow(P,Pa) + P<-Tmp + } + else + { + if(Nrow(P)==0) + { + Tmp<- Appendrow(P,Pa) + P<-Tmp + } + else + { + Tmp<- Op(Nrow(P),P) + if(Tmp[1]==Inf) + { + Tmp<- Appendrow(P,Pa) + P<- Tmp + } + else + { + if(Norm(Tmp-Pa)<D) + { + Tmp<-Appendrow(P,Pa) + P<-Tmp + } + else + { + Tmp<- Appendrow(P,c(Inf,Inf),Pa) + P<- Tmp + } + } + } + } + } + } + Tmp<- Nrow(P) + Tmp1<- Op(Tmp,P) + if(Tmp1[1]==Inf) + { + P<- P[1:(Tmp-1),] + } + return(P) +} + +##################################### + +Partcrv<- function(A,B,PkL) +{ + Eps<- 10.0^(-3) + if(mode(A)=="numeric" && length(A)==1){ + 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<- list(Out1,Out2) + } + return(Ans) + } + Is<- ceiling(A) + Ie<- floor(B) + PL<- c() + if(A<Is-Eps){ + P<- (Is-A)*PkL[Is-1,]+(1-Is+A)*PkL[Is,] + PL<- c(P) + } + PL<- Appendrow(PL, PkL[Looprange(Is,Ie),]) + if(B>Ie+Eps){ + P<- (1-B+Ie)*PkL[Ie,]+(B-Ie)*PkL[Ie+1,] + PL<- Appendrow(PL,P) + } + Ans<- PL + return(Ans) + } + Tmp<- Nearestpt(A,PkL) + Ta<- Op(2,Tmp) + Tmp<- Nearestpt(B,PkL) + Tb<- Op(2,Tmp) + Ans<- Partcrv(Ta,Tb,PkL) +} + +########################################## +# 13.05.03 + +Partframe<- function(Tb,St,Ed) +{ + G<- Dividetable(Tb) + Gw<- G[[1]] + Gt<- G[[2]] + Gy<- G[[3]] + Gwt<- Tb[[4]] + Gwy<- Tb[[5]] + Gat<- c(list(Gwt[[1]]),Gt,list(Gwt[[2]])) + Gay<- c(list(Gwy[[1]]),Gy,list(Gwy[[2]])) + Tmp1<- Ptstart(Gat[[St[1]]]) + Tmp2<- Ptstart(Gay[[St[2]]]) + Ps<- c(Tmp1[1],Tmp2[2]) + Tmp1<- Ptstart(Gat[[Ed[1]]]) + Tmp2<- Ptstart(Gay[[Ed[2]]]) + Pe<- c(Tmp1[1],Tmp2[2]) + Pars<- Paramoncurve(Ps,Gw) + Pare<- Paramoncurve(Pe,Gw) + if(Pars<Pare){ + Out<- Partcrv(Pars,Pare,Gw) + } + else{ + Tmp1<- Partcrv(Pars,Numptcrv(Gw),Gw) + Tmp2<- Partcrv(1,Pare,Gw) + Out<- Joincrvs(Tmp1,Tmp2) + } +return(Out) +} + + +########################################## +# 10.12.04 + +Plotdata<- function(...) +{ + varargin<- list(...) + Eps<- 10^(-5) + Fnstr<- varargin[[1]]; Is<- 2 + Fnflg<- 0 + Rgstr<- varargin[[Is]]; Is<- Is+1 + Tmp<- strsplit(Rgstr,"=") + K<-Tmp[[1]] + if(length(K)>1){ + Vname<- K[1] + Tmp1<- K[2] + Rng<- eval(parse(text=Tmp1)) + } + else{ + Vname<- Rgstr + Rng<- c(XMIN,XMAX) + } + N<- 50 # Numpoints + E<-c() # Exclusions + Exfun<- "" # Exclusion function + D<- Inf # Discont + for (I in Looprange(Is,length(varargin))){ + Tmp<- varargin[[I]] + Lhs<- substring(Tmp,1,1) + Tmp<- strsplit(Tmp,"=") + K<- Tmp[[1]] + Tmp1<- K[2] + Tmp2<- grep(Vname,Tmp1,fixed=TRUE) ## 10.12.04 + if(length(Tmp2)==0){ + Str<-paste(Lhs,"=",Tmp1,sep="") + eval(parse(text=Str)) + } + else{ + Exfun<-Tmp1 + } + } + X1<- Rng[1]; X2<- Rng[2] + dx<- (X2-X1)/N # 17.09.22 + if(Fnflg==0){ + Str<- gsub(Vname,"x",Fnstr,fixed=TRUE) + } + if(abs(dx)<Eps){ # Scilab 16.12.13 + x=X1 + P=c(X1,eval(parse(text=Str))) + return(P) + } + Exfun<- gsub(Vname,"x",Exfun,fixed=TRUE) + P<-c() + if(length(E)>0){ + E<-sort(E) + E<E[length(E):1] + } + E<- c(E, Inf) + Tmp<- sort(E) + E<- E[length(Tmp):1] + Ke<- 1 + for (x in seq(X1,X2,by=dx)){ + if(nchar(Exfun)>0){ + Tmp<-eval(parse(text=Exfun)) + if(abs(Tmp)<Eps){ + P<- Appendrow(P,c(Inf,inf)) + next + } + } + Pa<- c() + if(x-E[Ke]< -Eps){ ## 10.12.04 + Tmp<-eval(parse(text=Str)) + Pa<- c(x,Tmp) + } + if(abs(x-E[Ke])<=Eps){ + if(Nrow(P)>0 && P[Nrow(P),]!=c(Inf,Inf)){ + Pa<- c(Inf,Inf) + } + } + if(x-E[Ke]>Eps){ + Tmp<- eval(parse(text=Str)) + Pa<- c(x,Tmp) + Ke<-Ke+1 + } + if(length(Pa)>0){ + if(Pa[1]==Inf){ + Tmp<-Appendrow(P,Pa) + P<-Tmp + } + else{ + if(Nrow(P)==0){ + Tmp<- Appendrow(P,Pa) + P<-Tmp + } + else{ + Tmp<- P[Nrow(P),] + if(Tmp[1]==Inf){ + Tmp<- Appendrow(P,Pa) + P<- Tmp + } + else{ + if(Norm(Tmp-Pa)<D){ + Tmp<-Appendrow(P,Pa) + P<-Tmp + } + else{ + Tmp<- Appendrow(P,c(Inf,Inf),Pa) + P<- Tmp + } + } + } + } + } + } + Tmp<- Nrow(P) + Tmp1<-P[Tmp,] + if(Tmp1[1]==Inf) + { + P<- P[1:(Tmp-1),] + } + return(P) +} + +###################################### + +Pointoncurve<-function(...) +{ + varargin<-list(...) + Eps<-10^(-4) + T<-varargin[[1]] + Gdata<-varargin[[2]] + if(Nrow(T)>1) + { + Tmp<-T; T<-Gdata; Gdata<-Tmp + } + PtL<-Gdata + N<-trunc(T+Eps); + S<-max(T-N,0); + if(N==Nrow(PtL)) + { + Out<-PtL[N,] + } + else + { + Pa<-PtL[N,] + Pb<-PtL[N+1,] + Out<-(1-S)*Pa+S*Pb + } + return(Out) +} + +############################################## +# 10.11.20 +# 13.05.03 Inf + +Pointdata<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + PL<- list() + for (I in Looprange(1,Nargs)){ # 10.11.20 + DL<-varargin[[I]] + DL<- Flattenlist(DL) # 10.11.20 from here + for (J in Looprange(1,length(DL))){ + Dt<- DL[[J]] + if(is.matrix(Dt)|| is.data.frame(Dt)){ + for (K in 1:nrow(Dt)){ + Tmp<- as.numeric(Dt[K,]) + if(Tmp[1]<Inf){ + PL<- c(PL,list(Tmp)) + } + } + } + else{ + PL<- c(PL,list(Dt)) + } + } + } # to here + if(length(PL)==1) + { + PL<-PL[[1]] + } + return(PL) +} + +############################################## + +Prime<- function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out="'" + } + else{ + Out<- paste(varargin[[1]],"'",sep="") + } + return(Out) +} + +############################################ +# 17.09.29 + +Ptcrv<-function(N,Fig) +{ + if(is.matrix(Fig)){ + return(Fig[N,]) + } + else{ + return(Fig) + } +} + +######################################### + +Ptend<-function(Fig) +{ + if(Length(Fig)>0){ #18.02.09 + return(Op(Length(Fig),Fig)) + }else{ + return(c()) + } +} + +######################################### + +Ptne<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMAX,YMAX) + } + else{ + G<- varargin[[1]] + XM<- max(G[,1]) + YM<- max(G[,2]) + Out<- c(XM,YM) + } + return(Out) +} + +######################################### + +Ptnw<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMIN,YMAX) + } + else{ + G<- varargin[[1]] + Xm<- min(G[,1]) + YM<- max(G[,2]) + Out<- c(Xm,YM) + } + return(Out) +} + +######################################### + +Ptse<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMAX,YMIN) + } + else{ + G<- varargin[[1]] + XM<- max(G[,1]) + Ym<- min(G[,2]) + Out<- c(XM,Ym) + } + return(Out) +} + +############################################# + +Ptstart<-function(Fig) +{ + if(Length(Fig)>0){ #18.02.09 + return(Op(1,Fig)) + }else{ + return(c()) + } +} + +######################################### + +Ptsw<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMIN,YMAX) + } + else{ + G<- varargin[[1]] + Xm<- min(G[,1]) + Ym<- min(G[,2]) + Out<- c(Xm,Ym) + } + return(Out) +} + +############################################## + +Putcell<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + Str<- varargin[[Nargs]] + if(mode(Str)=="numeric"){ + Str<- as.character(Str) + } + Pos<- varargin[[Nargs-1]] + Nrg<- varargin[[2]] + if(mode(Nrg)=="character"){ + if(Nargs==4){ + Cell<- Findcell(TbL,Nrg) + } + else{ + Mrg<- varargin[[3]] + Cell<- Findcell(TbL,Nrg,Mrg) + } + } + else{ + Mrg<- varargin[[3]] + Cell<- Findcell(TbL,Nrg,Mrg) + } + Pt<- Cell[[1]]; Dr<- "c" + Posh<- substr(Pos,1,1) + Post<- substr(Pos,2,nchar(Pos)) + if(toupper(Posh)=="R"){ + Pt<- Pt+c(Cell[[2]],0) + if(nchar(Post)==0){ + Dr<- "w1" + } + else{ + Dr<- paste("w",Post,sep="") + } + } + if(toupper(Posh)=="L"){ + Pt=Pt-c(Cell[[2]],0) + if(nchar(Post)==0){ + Dr<- "e1" + } + else{ + Dr<- paste("e",Post,sep="") + } + } + if(toupper(Posh)=="U"){ + Pt<- Pt+c(0,Cell[[3]]) + if(nchar(Post)==0){ + Dr<- "s1" + } + else{ + Dr<- paste("s",Post,sep="") + } + } + if(toupper(Posh)=="D"){ + Pt<- Pt-c(0,Cell[[3]]) + if(nchar(Post)==0){ + Dr<- "n1" + } + else{ + Dr<- paste("n",Post,sep="") + } + } + if(toupper(Posh)=="B"){ + Pt<- Pt-c(0,Cell[[3]]) + if(nchar(Post)==0){ + Dr<- "n1" + } + else{ + Dr<- paste("n",Post,sep="") + } + Str<- paste("$\\mathstrut$",Str,sep="") + } + Letter(Pt,Dr,Str) +} + +############################################# + +PutcoL<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Ag<- varargin[[2]] + if(mode(Ag)=="numeric"){ + CoL<- Ag + } + else{ + Alpha<- "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" + Clm<- c() + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,I,I) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + Tmp1<- nchar(Tmp[1]) + Clm<- c(Clm,Tmp1) + } + } + Nrg<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length(Clm)-I + Nrg<- Nrg+Tmp*26^Tmp1 + } + CoL<- Nrg + } + Nc<- length(TbL[[3]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nc){ + break + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Putcell(TbL,CoL,K,Dpos,Dt) # 2011.03.02 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- Dt[[N]] + Rrng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Rrng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,CoL,Rrng,Pos,Str) + K<- Crng[2] + } + } +} + +Putcol<- function(...) +{ + PutcoL(...) +} + +PutcoLexpr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Ag<- varargin[[2]] + if(mode(Ag)=="numeric"){ + CoL<- Ag + } + else{ + Alpha<- "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" + Clm<- c() + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,I,I) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + Tmp1<- nchar(Tmp[1]) + Clm<- c(Clm,Tmp1) + } + } + Nrg<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length(Clm)-I + Nrg<- Nrg+Tmp*26^Tmp1 + } + CoL<- Nrg + } + Nc<- length(TbL[[3]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nc){ + break + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Dt<- paste("$",Dt,"$",sep="") + Putcell(TbL,CoL,K,Dpos,Dt) # 2011.03.02 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- paste("$",Dt[[N]],"$",sep="") + Rrng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Rrng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,CoL,Rrng,Pos,Str) + K<- Crng[2] + } + } +} + +Putcolexpr<- function(...) +{ + PutcoLexpr(...) +} + +##################################################### + +PutcoLstr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Tb<- varargin[[1]] + Nr<- varargin[[2]] + Pos<- varargin[[3]] + Str<- varargin[[4]] + Sep<- "" + if(Nargs>4){ + Sep<- varargin[[5]] + } + if(nchar(Sep)==0){ + for (I in Looprange(1,nchar(Str))){ + Tmp<- substr(Str,I,I) + Putcell(Tb,Nr,I,Pos,Tmp) + } + } + else{ + Ltr<- "" + K<- 1 + for (I in Looprange(1,length(Str))){ + Tmp<- substr(Str,I,I) + if(Tmp==Sep){ + Putcell(Tb,Nr,K,Pos,Ltr) + K<- K+1 + Ltr<- "" + } + else{ + Ltr<- paste(Ltr,Tmp,sep="") + } + } + if(nchar(Ltr)>0){ + Putcell(Tb,Nr,K,Pos,Ltr) + } + } +} + +############################################# + +Putrow<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Row<- varargin[[2]] + Nr<- length(TbL[[2]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nr){ + break; + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Putcell(TbL,K,Row,Dpos,Dt) # 110308 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- Dt[[N]] + Crng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Crng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,Crng,Row,Pos,Str) + K<- Crng[2] + } + } +} + +Putrowexpr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Row<- varargin[[2]] + Nr<- length(TbL[[2]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nr){ + break; + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Dt<- paste("$",Dt,"$",sep="") + Putcell(TbL,K,Row,Dpos,Dt) #110308 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- paste("$",Dt[[N]],"$",sep="") + Crng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Crng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,Crng,Row,Pos,Str) + K<- Crng[2] + } + } +} + +#################################################### + +Putrowstr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Tb<- varargin[[1]] + Nr<- varargin[[2]] + Pos<- varargin[[3]] + Str<- varargin[[4]] + Sep<- "" + if(Nargs>4){ + Sep<- varargin[[5]] + } + if(nchar(Sep)==0){ + for (I in Looprange(1,nchar(Str))){ + Tmp<- substr(Str,I,I) + Putcell(Tb,I,Nr,Pos,Tmp) + } + } + else{ + Ltr<- "" + K<- 1 + for (I in Looprange(1,length(Str))){ + Tmp<- substr(Str,I,I) + if(Tmp==Sep){ + Putcell(Tb,K,Nr,Pos,Ltr) + K<- K+1 + Ltr<- "" + } + else{ + Ltr<- paste(Ltr,Tmp,sep="") + } + } + if(nchar(Ltr)>0){ + Putcell(Tb,K,Nr,Pos,Ltr) + } + } +} + +############################################ +# 11.05.28 + +Ratiocmyk<- function(Color) +{ + if(is.numeric(Color)){ + return(Color) + } + R<- + switch(Color, + greenyellow=c(0.15,0,0.69,0), + yellow=c(0,0,1,0), + goldenrod=c(0,0.1,0.84,0), + dandelion=c(0,0.29,0.84,0), + apricot=c(0,0.32,0.52,0), + peach=c(0,0.5,0.7,0), + melon=c(0,0.46,0.5,0), + yelloworange=c(0,0.42,1,0), + orange=c(0,0.61,0.87,0), + burntorange=c(0,0.51,1,0), + bittersweet=c(0,0.75,1,0.24), + redorange=c(0,0.77,0.87,0), + mahogany=c(0,0.85,0.87,0.35), + maroon=c(0,0.87,0.68,0.32), + brickred=c(0,0.89,0.94,0.28), + red=c(0,1,1,0), + orangered=c(0,1,0.5,0), + rubinered=c(0,1,0.13,0), + wildstrawberry=c(0,0.96,0.39,0), + salmon=c(0,0.53,0.38,0), + carnationpink=c(0,0.63,0,0), + magenta=c(0,1,0,0), + violetred=c(0,0.81,0,0), + rhodamine=c(0,0.82,0,0), + mulberry=c(0.34,0.9,0,0.02), + redviolet=c(0.07,0.9,0,0.34), + fuchsia=c(0.47,0.91,0,0.08), + lavender=c(0,0.48,0,0), + thistle=c(0.12,0.59,0,0), + orchid=c(0.32,0.64,0,0), + darkorchid=c(0.4,0.8,0.2,0), + purple=c(0.45,0.86,0,0), + plum=c(0.5,1,0,0), + violet=c(0.79,0.88,0,0), + royalpurple=c(0.75,0.9,0,0), + blueviolet=c(0.86,0.91,0,0.04), + periwinkle=c(0.57,0.55,0,0), + cadetblue=c(0.62,0.57,0.23,0), + cornflowerblue=c(0.65,0.13,0,0), + midnightblue=c(0.98,0.13,0,0.43), + navyblue=c(0.94,0.54,0,0), + royalblue=c(1,0.5,0,0), + blue=c(1,1,0,0), + cerulean=c(0.94,0.11,0,0), + cyan=c(1,0,0,0), + processblue=c(0.96,0,0,0), + skyblue=c(0.62,0,0.12,0), + turquoise=c(0.85,0,0.2,0), + tealblue=c(0.86,0,0.34,0.02), + aquamarine=c(0.82,0,0.3,0), + bluegreen=c(0.85,0,0.33,0), + emerald=c(1,0,0.5,0), + junglegreen=c(0.99,0,0.52,0), + seagreen=c(0.69,0,0.5,0), + green=c(1,0,1,0), + forestgreen=c(0.91,0,0.88,0.12), + pinegreen=c(0.92,0,0.59,0.25), + limegreen=c(0.5,0,1,0), + yellowgreen=c(0.44,0,0.74,0), + springgreen=c(0.26,0,0.76,0), + olivegreen=c(0.64,0,0.95,0.4), + rawsienna=c(0,0.72,1,0.45), + sepia=c(0,0.83,1,0.7), + brown=c(0,0.81,1,0.6), + tan=c(0.14,0.42,0.56,0), + gray=c(0,0,0,0.5), + black=c(0,0,0,1), + white=c(0,0,0,0) + ) + if(length(R)<4){ + print("No color") + return(c()) + } + return(R) +} + +############################################ +# 11.01.07 + +Readtextdata<- function(...) +{ + varargin<- list(...) + OutL<- list() + Nargs<- length(varargin) + Fname<- varargin[[1]] + Tmp<- readLines(Fname,n=1) + if(length(grep("\t",Tmp))>0){ + Sep<- "\t" + } + else if(length(grep(",",Tmp))>0){ + Sep<- "," + } + else{ + Sep<- " " + } + Hajime<- c(1,1) + Owari<- c(Inf,Inf) + C<- Inf + R<- Inf + Rna<- FALSE + Cna<- TRUE + Mat<- FALSE + Num<- TRUE + D<- -Inf + Flg<- 0 + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + if (Flg==0){ + Hajime<- Tmp + Flg<- 1 + } + else{ + Owari<- Tmp + } + } + else{ + eval(parse(text=Tmp)) + } + } + Tmp<- Hajime+c(R-1,C-1) + Owari<- c(min(Owari[1],Tmp[1]),min(Owari[2],Tmp[2])) + if(Cna){ + Df<- read.table(Fname,sep=Sep,header=TRUE,,stringsAsFactors=FALSE) + } + else{ + Df<- read.table(Fname,sep=Sep,header=FALSE,,stringsAsFactors=FALSE) + Nv<- c(1:ncol(Df)) + colnames(Df)<- Nv + } + if(Rna){ + rownames(Df)<-Df[,1] + Hajime<- Hajime+c(0,1) + } + if(Mat){ + M<- as.matrix(Df) + Tmp1<- min(Owari[1],nrow(M)) + Tmp2<- min(Owari[2],ncol(M)) + Out<- as.matrix(M[Hajime[1]:Tmp1,Hajime[2]:Tmp2]) + if(Num){ + Tmp1<- as.numeric(Out) + Out<- matrix(Tmp1,nrow=nrow(Out)) + } + } + else{ + Tmp1<- min(Owari[1],nrow(Df)) + Tmp2<- min(Owari[2],ncol(Df)) + Out<- Df[Hajime[1]:Tmp1,Hajime[2]:Tmp2] + } + if(D!=-Inf){ # 11.01.20 v2 + Tmp<- ncol(Out) # 11.01.07 + Tmp1<- rep(Inf,Tmp) + Out[Out[,1]<=D,]<- Tmp1 # 11.01.07 + } + return(Out) +} + +################################## + +Reflectdata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + if(Nargs==1){ + PtA<- c(0,0); PtB<- PtA + } + else{ + Pts<- varargin[[2]] + if(length(Pts)==2){ + PtA<- Pts; PtB<- PtA + } + else{ + PtA<- Pts[1:2]; PtB<- Pts[3:4] + } + } + OutL<- list() + for (N in Looprange(1,length(ML))){ + GL<- Op(N,ML) + Out<- c() + for (I in Looprange(1,Nrow(GL))){ + if(is.matrix(GL)){ # 10.12.07 + Tmp<- GL[I,] + } + else{ + Tmp<- GL + } + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==Inf){ + X2<- X1 + Y2<- Y1 + } + else{ + if(Norm(PtA-PtB)<Eps){ + 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 + X2<- X2-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 + Y2<- Y2+2*U*(U*B-V*A)/(U^2+V^2) + } + } + Out<- Appendrow(Out,c(X2,Y2)) + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +########################################## + +Writetextdata<- function(...) +{ + varargin<- list(...) + OutL<- list() + Nargs<- length(varargin) + Data<- varargin[[1]] + Fname<- varargin[[2]] + Sep="," + for (I in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + eval(parse(text=Tmp)) + } + write.table(Data,Fname,sep=Sep,row.names=FALSE,na="") +} + +########################################## +# 2014.12.17 +# 2015.10.29 + +WriteOutData<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) +# if modulo(Nargs,2)==0 then +# Fname=Fnameout; +# Nst=1; +# else + Fname=varargin[[1]] + Nst=2; +# end; + for(N in seq(Nst,Nargs,by=2)){ + Gname=varargin[[N]] + Tmp=paste(Gname,"//",sep="") + if(N==Nst){ + cat(Tmp,"\n",sep="",file=Fname) + } + else{ + cat(Tmp,"\n",sep="",file=Fname,append=TRUE) + } + Gdata=varargin[[N+1]] + Gdata=Flattenlist(Gdata) + if(!is.list(Gdata)){Gdata=list(Gdata)} + for(K in Looprange(1,length(Gdata))){ + GL=Dividegraphics(Gdata[[K]]) +# for(J in seq(1,length(GL))){ + for(J in Looprange(1,length(GL))){ + cat("start//","\n",sep="",file=Fname,append=TRUE) + Str="" + Iend=Numptcrv(GL[[J]]) +# for(II in seq(1,Iend)){ + for(II in Looprange(1,Iend)){ + Pt=Ptcrv(II,GL[[J]]) + if(nchar(Str)>0){ + Str=paste(Str,",",sep="") + } + if(length(Pt)<3){ + Str=paste(Str,sprintf("[%5.5f,%5.5f]",Pt[1],Pt[2]),sep="") + } + else{ + Str=paste(Str,sprintf("[%5.5f,%5.5f,%5.5f]",Pt[1],Pt[2],Pt[3]),sep="") + } + if(nchar(Str)>80){ + cat("[",Str,"]//","\n",sep="",file=Fname,append=TRUE) + Str="" + } + } + if(nchar(Str)>0){ + cat("[",Str,"]//","\n",sep="",file=Fname,append=TRUE) + } + if((N==Nargs-1) & (K==length(Gdata)) & (J==length(GL))){ +# cat("end////","\n",sep="",file=Fname,append=TRUE) + cat("end//","\n",sep="",file=Fname,append=TRUE) + } + else{ + cat("end//","\n",sep="",file=Fname,append=TRUE) + } + } + } + } + cat("//","\n",sep="",file=Fname,append=TRUE) # 15.11.05 +} + +###### Old #################################### +# 2015.10.23 +ReadOutData<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Fname=varargin[[1]] + cmdall=readLines(Fname) + cmdall=gsub("//","",cmdall,fixed=TRUE) + varname=cmdall[1] + outdt=list() + varL=c() + ptL=list() + flg=0 + for(cmd in cmdall){ + if(nchar(cmd)>0){ + if((cmd=="start") | cmd=="end" | substring(cmd,1,1)=="["){ + if(cmd=="start"){ + pts=c() + } + if(cmd=="end"){ + ptL=c(ptL,list(pts)) + } + if(substring(cmd,1,1)=="["){ + tmp1=paste(",",substring(cmd,2,nchar(cmd)-1),sep="") + tmp1=strsplit(tmp1,"]",fixed=TRUE) + tmp1=tmp1[[1]] + tmp1=gsub(",[","c(",tmp1,fixed=TRUE) + for(st in tmp1){ + tmp=eval(parse(text=paste(st,")",sep=""))) + pts=rbind(pts,tmp) + } + row.names(pts)=1:nrow(pts) + } + } + else{ + varname=cmd + varL=c(varL,varname) + if(flg==0){ # 17.10.07from + flg=1 + }else{ + outdt=c(outdt,list(ptL)) + } # 17.10.07upto + ptL=c() + } + } + } + outdt=c(outdt,list(ptL)) # 17.10.07 + names(outdt)=varL + for(var in varL){ + tmp=paste(var,"<<- outdt$",var,sep="") + eval(parse(text=tmp)) + } +# print(varL) + outdt +} + +#################################################### + +ReadOutData<- function(...){ #2017.10.23 + varargin<- list(...) + Nargs<- length(varargin) + Fname=varargin[[1]] + cmdall=readLines(Fname) + cmdall=gsub("//","",cmdall,fixed=TRUE) + varname=""#17.12.13 cmdall[1] + outdt=list() + varL=c() + ptL=list() + flg=0 + for(cmd in cmdall){ + if(nchar(cmd)>0){ + if((cmd=="start") | cmd=="end" | substring(cmd,1,1)=="["){ + if(cmd=="start"){ + tmp=paste(varname,"<<- c(",varname,",list(c()))",sep="") + eval(parse(text=tmp)) + Ctr=Ctr+1 + } + if(cmd=="end"){ + } + if(substring(cmd,1,1)=="["){ + tmp1=paste(",",substring(cmd,2,nchar(cmd)-1),sep="") + tmp1=strsplit(tmp1,"]",fixed=TRUE) + tmp1=tmp1[[1]] + tmp1=gsub(",[","c(",tmp1,fixed=TRUE) + for(st in tmp1){ + tmp=paste(varname,"[[",as.character(Ctr),"]]",sep="") + tmp=paste(tmp,"<<- rbind(",tmp,",",st,"))",sep="")# + eval(parse(text=tmp)) + } + } + } + else{ + # 17.12.13from + if(nchar(varname)>0){ + tmp=paste("if(length(",varname,")==1){",varname,"<<- ",varname,"[[1]]}",sep="") + eval(parse(text=tmp)) + } + # 17.12.13upto + varname=cmd + tmp=paste(varname,"<<- list()",sep="") + eval(parse(text=tmp)) + Ctr=0 + if(flg==0){ # 17.10.07from + flg=1 + }else{ + } # 17.10.07upto + } + } + } + # 17.12.13from + tmp=paste("if(length(",varname,")==1){",varname,"<<- ",varname,"[[1]]}",sep="") + eval(parse(text=tmp)) + # 17.12.13upto +} + +#################################################### + +Rotatedata<- function(..., deg=FALSE) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + Theta<- varargin[[2]] + if(deg) Theta<- Theta*pi/180 # 10.12.07 + if(Nargs==2){ + Pt<- c(0,0) + } + else{ + Pt<- varargin[[3]] + } + Cx<- Pt[1]; Cy<- Pt[2] + OutL<- c() + for (N in Looprange(1,length(ML))){ + GL<- Op(N,ML) + Out<- c() + for (I in Looprange(1,Nrow(GL))){ + if(is.matrix(GL)){ + Tmp<- GL[I,] + } + else{ + Tmp<- GL + } + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==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) + } + Out<- Appendrow(Out,c(X2,Y2)) + } + if(nrow(Out)==1){ + Out<- Out[1,] + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +############################################### + +Scaledata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + A<- varargin[[2]] + B<- varargin[[3]] + if(Nargs==3){ + Pt<- c(0,0) + } + else{ + Pt<- varargin[[4]] + } + OutL<- list() + for (N in Looprange(1,length(ML))){ + GL<- Op(N,ML) + Out<- c() + for (I in Looprange(1,Nrow(GL))){ + if(is.matrix(GL)){ # 10.12.07 + Tmp<- GL[I,] + } + else{ + Tmp<- GL + } + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==Inf){ + X2<- X1 + Y2<-Y1 + } + else{ + X2<- Pt[1]+A*(X1-Pt[1]) + Y2<- Pt[2]+B*(Y1-Pt[2]) + } + Out<- Appendrow(Out,c(X2,Y2)) + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +################################ + +Setarrow<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + Str<- paste("Size=",YaSize,",","Angle=",YaAngle,",",sep="") + Str<- paste(Str,"Position=",YaThick,",","Style=",YaStyle,sep="") + return(Str) + } + Flg<- 0 + for (I in 1:Nargs){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + Flg<- Flg+1 + if(Flg==1) YaSize<<-Tmp + if(Flg==2){ + if(Tmp<5){ + YaAngle<<- 18*Tmp + } + else{ + YaAngle<<- Tmp + } + } + if(Flg==3) YaPosition<<- Tmp + if(Flg==4) YaThick<<- Tmp + } + if(mode(Tmp)=="character"){ + YaStyle<<- Tmp + } + } +} + +#################################### + +Setax<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + if(ZIKU=="line"){ + Tmp<- "," + } + else{ + Tmp<- paste("(Arrowsize=", as.character(ARROWSIZE),"),",sep="") + } + Str<- paste(ZIKU,Tmp,XNAME,",",XPOS,",",sep="") + Str<- paste(Str,YNAME,",",YPOS,",",ONAME,",",OPOS,sep="") + return(Str) + } + ArgL<- c() + Is<- 1 + Tmp<- varargin[[1]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + Is<- varargin[[1]] + ArgL<- c() + for (I in Looprange(1,Is-1)){ + ArgL<- c(ArgL,"") + } + for (I in Looprange(2,Nargs)){ + ArgL<- c(ArgL,varargin[[I]]) + } + } + else{ + if(Nargs==1){ + ArgL<- c(varargin[[1]]) + } + else{ + Tmp<- varargin[[2]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + ARROWSIZE<<-Tmp + ArgL<- c(varargin[[1]]) + for (I in Looprange(3,Nargs)){ + ArgL<- c(ArgL,varargin[[I]]) + } + } + else{ + ArgL<- c() + for (I in 1:Nargs){ + ArgL<- c(ArgL,varargin[[I]]) + } + } + } + } + for (I in Looprange(length(ArgL)+1,7)){ + ArgL<- c(ArgL,"") + } + Zk<- ArgL[1] + if(nchar(Zk)>0){ + ZL<-substr(Zk,2,nchar(Zk)) + Zk<-substr(Zk,1,1) + if(nchar(ZL)>0){ + ARROWSIZE<<- as.numeric(ZL) + } + } + Xn<- ArgL[2]; Xp<- ArgL[3] + Yn<- ArgL[4]; Yp<- ArgL[5] + Genn<- ArgL[6]; Genp<- ArgL[7] + if(nchar(Zk)>0){ + C<- Zk + if(C=="a"){ + ZIKU<<- "arrow" + } + else{ + ZIKU<<- "line" + } + } + if(nchar(Xn)>0){ + XNAME<<- paste("$",Xn,"$",sep="") + } + if(nchar(Xp)>0){ + XPOS<<- Xp + } + if(nchar(Yn)>0){ + YNAME<<- paste("$",Yn,"$",sep="") + } + if(nchar(Yp)>0){ + YPOS<<-Yp + } + if(nchar(Genn)>0){ + ONAME<<- Genn + } + if(nchar(Genp)>0){ + OPOS<<- Genp + } + Out<- ""; +} + +################################# +# 11.08.24 + +Setcolor<- function(...){ + varargin<- list(...) + Color<- 'black' + Kosa<- 1 + for(J in Looprange(1,length(varargin))){ + Tmp<- varargin[[J]] + if(is.character(Tmp)) Color<- Tmp + if(is.numeric(Tmp)){ + if(length(Tmp)==1){# 11.08.24 + Kosa<- Tmp + } + else{ + Color<- Tmp + } + }# 11.08.24 + } + Iro<- Ratiocmyk(Color) + if(length(Iro)==0) return(c()) + Str<- "\\color[cmyk]{" #17.09.22 + for(J in 1:4){ + Str<- paste(Str,as.character(Kosa*Iro[J]),sep="") + if(J<4){ + Str<- paste(Str,",",sep="") + } + } + Str<- paste(Str,"}",sep="") + Texcom(Str) +} + +################################## + +Setmarklen<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + Tmp<- MARKLENNow/MARKLENInit + Tmp=round(Tmp*100)/100 + return(Tmp) + } + Size<- varargin[[1]] + MARKLENNow<<- MARKLENInit*Size + MARKLEN<<- MARKLENNow*1000/2.54/MilliIn +} + +############################### + +Setorigin<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + return(GENTEN) + } + Pt<- varargin[[1]] + GENTEN<<- Pt; +} + +################################ + +Setscaling<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0) + { + return(c(SCALEY,LOGX,LOGY)) + } + for (I in 1:Nargs) + { + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric") + { + SCALEY<<- Tmp + } + if(mode(Tmp)=="character") + { + if(Tmp=="l") + { + LOGX<<- 0 + LOGY<<- 1 + } + else if(Tmp=="ll") + { + LOGX<<- 1 + LOGY<<- 1 + } + else + { + LOGX<<- 0 + LOGY<<- 0 + } + } + } + Tmp<- c(SCALEY,LOGX,LOGY); +} + +######################################### + +Setpen<-function(Width) +{ + PenThick<<-round(PenThickInit*Width) + Str=paste("\\special{pn ", as.character(PenThick),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) +} + +############################################## + +Setpt<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0) + { + Tmp<- TenSize/TenSizeInit + Tmp<- round(Tmp*100)/100 + return(Tmp) + } + Size<- varargin[[1]] + TenSize<<- TenSizeInit*Size; +} + +############################################## + +Setunitlen<-function(...) +{ + varargin<-list(...) + if(length(varargin)==0){ + return(ULEN) + } + Ul=varargin[[1]] + Dx<-XMAX-XMIN + Dy<-YMAX-YMIN + Sym<-".0123456789 +-*/" + SL<-Sym + OL<-"+-*/" + if(nchar(Ul)>0){ + ULEN<<-Ul + } + Is<-1 + VL<-"" + Ucode<-ULEN + for (I in 1:nchar(Ucode)){ + C<-substring(Ucode,I,I) + if(length(grep(C,SL))>0){ + if(length(grep(C,OL))>0){ + Tmp<-substring(Ucode,Is,I-1) + Str<-paste(VL,Tmp,C,sep="") + VL<-Str + Is<-I+1 + } + } + else{ + Unit<-substring(Ucode,I,I+1) + Str<-substring(Ucode,Is,I-1) + VL<-paste(VL,Str,sep="") + break; + } + } + Valu<-eval(parse(text=VL)) + Str<-as.character(Valu) + ULEN<<-paste(Str,Unit,sep=""); + if(Unit=="cm") MilliIn<<-1000/2.54*Valu + if(Unit=="mm") MilliIn<<-1000/2.54*Valu/10 + if(Unit=="in") MilliIn<<-1000*Valu + if(Unit=="pt") MilliIn<<-1000/72.27*Valu + if(Unit=="pc") MilliIn<<-1000/6.022*Valu + if(Unit=="bp") MilliIn<<-1000/72*Valu + if(Unit=="dd2") MilliIn<<-1000/1238/1157/72.27*Valu + if(Unit=="cc") MilliIn<<-1000/1238/1157/72.27*12*Valu + if(Unit=="sp") MilliIn<<-1000/72.27/65536*Valu/10 + MARKLEN<<-MARKLENNow*1000/2.54/MilliIn + MEMORI<<-MEMORINow*1000/2.54/MilliIn #17.12.17 +} + +######################################### +# 10.11.20 + +Setwindow<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0){ + Out<-c(XMIN,XMAX,YMIN,YMAX) + return(Out) + } + if(Nargs==1){ + Dt<- varargin[[1]] + if(is.list(Dt) && !is.data.frame(Dt)){ + Tmp<- as.data.frame(Dt) + Dt<- t(Tmp) + } + Xm<- min(Dt[,1]) + XM<- max(Dt[,1]) + Ym<- min(Dt[,2]) + YM<- max(Dt[,2]) + Str<- "Setwindow(" + Str<- paste(Str,"c(",as.character(Xm),",",as.character(XM),"),c(",sep="") + Str<- paste(Str,as.character(Ym),",",as.character(YM),")",sep="") + Str<- paste(Str,")",sep="") + print(Str) + } + if(Nargs==2){ + RgX<-varargin[[1]] + RgY<-varargin[[2]] + XMIN<<-RgX[1]; XMAX<<-RgX[2] + YMIN<<-RgY[1]; YMAX<<-RgY[2] + } + if(Nargs==4){ + XMIN<<-varargin[[1]]; XMAX<<-varargin[[2]] + YMIN<<-varargin[[3]]; YMAX<<-varargin[[4]] + } + Out<- c(XMIN,XMAX,YMIN,YMAX); +} + +######################################### + +Shade<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + Iroflg=0 + Kosa=1 + if(Nargs>1){ + Iro=varargin[[Nargs]] + if(is.character(Iro)){ + Iroflg=1 + if(length(grep("{",Iro))>0){ + Str=paste("{\\color",Iro,sep="") + } + else{ + Str=paste("{\\color{",Iro,"}",sep="") + } + } + 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]{" + } + } + for(J in 1:length(Iro)){ + Str=paste(Str,as.character(Iro[J]),sep="") + if(J<length(Iro)){ + Str=paste(Str,",") + } + } + Str=paste(Str,"}") + } + } + if(Iroflg==1){ + Str=paste(Str,"%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + } + } + Tmp=varargin[[1]] + Data=Kyoukai(Tmp) + for (I in Looprange(1, length(Data))){ + PL<- Op(I,Data) + Mojisu<- 0 + for (J in 1:Nrow(PL)){ + P<- Doscaling(Op(J,PL)) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<- 0 + } + } + Str1<- paste("\\special{sh ",as.character(Kosa),"}",sep="") + Str2<- paste("\\special{ip}%\n",sep="") + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + } + if(Iroflg==1){ + cat("}%\n",file=Wfile,append=TRUE) + } +} + +####### Shade new 17.09.24############ + +Shade<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + Iroflg<- 0 + Kosa<- 1 + if(Nargs>1){ + Iro<- varargin[[Nargs]] + if(mode(Iro)=="character"){ + Iroflg<- 1 + if(length(grep(Iro,"{"))>0) + Str<- paste("{\\color",Iro,sep="") + else + Str<- paste("{\\color{",Iro,"}",sep="") + } + else{ + if(length(Iro)==1) + Kosa<- Iro + else{ + Iroflg<- 1 + if(length(Iro)==4) + Str<- paste("{\\color[cmyk]{",sep="") + else + if(length(Iro)==3) + Str<- paste("{\\color[rgb]{",sep="") + for (J in Looprange(1,length(Iro))){ + Str<- paste(Str,as.character(Iro[J]),sep="") + if(J<length(Iro)) + Str<- paste(Str,",",sep="") + } + Str<- paste(Str,"}",sep="") + } + } + if(Iroflg==1){ + if(Wfile=="default") + cat(Str,"%\n",file="",append=TRUE,sep="") + else + cat(Str,"%\n",file=Wfile,append=TRUE,sep="") + } + } + Tmp<- varargin[[1]] + Data<- Kyoukai(Tmp) + for (I in Looprange(1, length(Data))){ + PL<- Op(I,Data) + Mojisu<- 0 + for (J in 1:Nrow(PL)){ + P<- Doscaling(Op(J,PL)) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + if(Wfile=="default") + cat(Str,file="",append=TRUE,sep="") + else + cat(Str,file=Wfile,append=TRUE,sep="") + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + if(Wfile=="default") + cat("%\n",file="",append=TRUE,sep="") + else + cat("%\n",file=Wfile,append=TRUE,sep="") + Mojisu<- 0 + } + } + Str1<- paste("\\special{sh ",as.character(Kosa),"}",sep="") + Str2<- paste("\\special{ip}%\n",sep="") + if(Wfile=="default"){ + cat(Str1,file="",append=TRUE,sep="") + cat(Str2,file="",append=TRUE,sep="") + } + else{ + cat(Str1,file=Wfile,append=TRUE,sep="") + cat(Str2,file=Wfile,append=TRUE,sep="") + } + } + if(Iroflg==1){ + if(Wfile=="default") + cat("}%\n",file="",append=TRUE,sep="") + else + cat("}%\n",file=Wfile,append=TRUE,sep="") + } +} + +############################################## +# 11.01.07 + +Splinedata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-3) + PL<- varargin[[1]] + if(mode(PL)=="character"){ + Fname<- PL + PL<- Readtextdata(Fname) + } + else{ + PL<- as.matrix(PL) + if(Nrow(PL)==1){ + PL<- matrix(PL, nrow=length(PL)/2) + PL<- t(PL) + } + } + if(ncol(PL)==3){ + Flg3<- 1 + } + else{ + Flg3<- 0 + } + PLL<- Dividegraphics(PL) + N<- 50 + C<- c() + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)!="character") next + if(length(grep("=",Tmp,fixed=TRUE))>0){ + eval(parse(text=Tmp)) + } + else{ + Tmp1<- substr(Tmp,1,1) + if(toupper(Tmp1)=="C"){ + C<- 1:length(PLL) + } + } + } + Cflg<- rep(0,length(PLL)) + for(J in Looprange(1,length(C))){ + K<- C[J] + Cflg[K]<- 1 + } + if(length(N)>1){ + Nj<- as.numeric(N) + } + else{ + Tmp<- lapply(PLL,nrow) + Tmp1<- as.numeric(Tmp) + MxP<- max(Tmp1) + Nj<- c() + for (J in 1:length(PLL)){ + Tmp<- nrow(PLL[[J]]) + Tmp1<- round(N/MxP*(Tmp-1)) + Nj<- c(Nj,Tmp1) + } + } + OutL<- list() + for(J in 1:length(PLL)){ + PL<- PLL[[J]] + if(Cflg[J]==1){ + if(Norm(PL[1,]-PL[Nrow(PL),])>Eps){ + PL<-Appendrow(PL,PL[1,]) + Nj[J]=round(N/MxP*nrow(PL)) + } + else{ + PL[Nrow(PL),]<- PL[1,] + } + } + Tn<- 1:Nrow(PL) + Xn<- PL[,1] + Yn<- PL[,2] + if(Flg3==1) Zn<- PL[,3] + if(Cflg[J]==0){ + Dxn<- spline(Tn,Xn,n=Nj[J]) + Dyn<- spline(Tn,Yn,n=Nj[J]) + if(Flg3==1) Dzn<- spline(Tn,Zn,n=Nj[J]) + } + else{ + Dxn<- spline(Tn,Xn,method="periodic") + Dyn<- spline(Tn,Yn,method="periodic") + if(Flg3==1) Dzn<- spline(Tn,Zn,method="periodic") + } + Tmp1<- Dxn$y + Tmp2<- Dyn$y + Tmp3<-c() + if(Flg3==1) Tmp3<- Dzn$y + Out<- matrix(c(Tmp1,Tmp2,Tmp3),nrow=length(Tmp1)) + OutL<- c(OutL,list(Out)) + } + return(OutL) +} + +############################################ +# 2013.05.03 Domain is optional + +Tabledata<- function(...){ + varargin<- list(...) + Eps<- 0.001 + Tmp<- varargin[[1]] # 130503 from + if(is.numeric(Tmp)){ + Domain<- varargin[[1]] + VL<- varargin[[2]] + HL<- varargin[[3]] + } + else{ + Domain<- c(-1,-1) + VL<- varargin[[1]] + HL<- varargin[[2]] + } # 130503 upto + Hsize<- Domain[1] + SvL<- list(0) + S<- 0 + for (I in Looprange(1,length(VL))){ + Tmp<- VL[[I]] + S<- S+Tmp[1] + Tmp[1]<- S + SvL<- c(SvL,list(Tmp)) + } + if(Hsize>S){ + SvL<- c(SvL,list(Hsize)) + } + Hsize<- Op(1,SvL[[length(SvL)]]) + Vsize<- Domain[2] + ShL<- list(0) + S<- 0 + for (I in Looprange(1,length(HL))){ + Tmp<- HL[[I]] + S<- S+Tmp[1] + Tmp[1]<- S + ShL<- c(ShL,list(Tmp)) + } + if(Vsize>S){ + ShL<- c(ShL,list(Vsize)) + } + Vsize<- Op(1,ShL[[length(ShL)]]) + Marw<- 0; Mare<- 0; Mars<- 0; Marn<- 0 + if(length(Domain)>2){ + Marw<- Domain[3] + Mare<- Domain[4] + } + if(length(Domain)>4){ + Marn<- Domain[5] + Mars<- Domain[6] + } + Setwindow(c(-Marw,Hsize+Mare),c(-Mars,Vsize+Marn)) + Tmp<- Framedata(c(Eps,Hsize-Eps),c(Eps,Vsize-Eps)) + Gdata<- list(Tmp) + Tmp<- -Marw + Hdata<- list(Listplot(c(c(Tmp,-Mars),c(Tmp,Vsize+Marn)))) + for (I in Looprange(1,length(SvL))){ + Data<- SvL[[I]] + X<- Data[1] + if(length(Data)==1){ + Y1<- 0 + Y2<- Vsize + G<- Listplot(c(X,Y1),c(X,Y2)) + } + else{ + G<- c() + for (J in seq(2,length(Data),by=2)){ + Y1<- Vsize-Op(1,ShL[[Data[J]]]) + Y2<- Vsize-Op(1,ShL[[Data[J+1]]]) + Tmp<- Listplot(c(c(X,Y1),c(X,Y2))) + Tmp1<- Appendrow(G,c(Inf,Inf)) + G<- Appendrow(Tmp1,Tmp) + } + G<- G[2:nrow(G),] + } + Hdata<- c(Hdata,list(G)) + } + Tmp<- Hsize+Mare + Tmp1<- Listplot(c(c(Tmp,-Mars),c(Tmp,Vsize+Marn))) + Hdata<- c(Hdata,list(Tmp1)) + Tmp<- Vsize+Marn + Vdata<- list(Listplot(c(c(-Marw,Tmp),c(Hsize+Mare,Tmp)))) + for (I in Looprange(1,length(ShL))){ + Data<- ShL[[I]] + Y<- Vsize-Data[1] + if(length(Data)==1){ + X1<- 0 + X2<- Hsize + G<- Listplot(c(X1,Y),c(X2,Y)) + } + else{ + G<- c() + for (J in seq(2,length(Data),by=2)){ + X1<- Op(1,SvL[[Data[J]]]) + X2<- Op(1,SvL[[Data[J+1]]]) + Tmp<- Listplot(c(X1,Y),c(X2,Y)) + G<- Appendrow(G,c(Inf,Inf)) + G<- Appendrow(G,Tmp) + } + G<-G[2:nrow(G),] + } + Vdata<- c(Vdata,list(G)) + } +# Tmp<- Listplot(c(c(0,0),c(Hsize,0))) # 2011.03.02 +# Vdata<- Mixjoin(Vdata,list(Tmp)) + Tmp<- Listplot(c(c(-Marw,-Mars),c(Hsize+Mare,-Mars))) + Vdata<- Mixjoin(Vdata,list(Tmp)) + Tmp1<- Hdata[Looprange(3,length(Hdata)-2)] + Tmp2<- Vdata[Looprange(3,length(Vdata)-2)] + Gdata<- Mixjoin(Gdata,Tmp1,Tmp2) + Hind<- Looprange(2,1+length(Tmp1)) + Vind<- Looprange(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(c(P1,P2)),Listplot(c(Q1,Q2))) + P1<- Ptnw(G); P2<- Ptne(G) + Q1<- Ptsw(G); Q2<- Ptse(G) + Tmp2<- list(Listplot(c(P1,P2)),Listplot(c(Q1,Q2))) + Tmp3<- Framedata() + Out<- list(Gdata,Hind,Vind,Tmp1,Tmp2,Tmp3) + return(Out) +} + +################################ + +Texcom<- function(Meirei) +{ + if(Meirei=="\\thinlines"){ + Setpen(1); + return(); + } + if(Meirei=="\\thicklines"){ + Setpen(2); + return() + } + if(Meirei=="\\Thicklines"){ + Setpen(3); + return() + } + if(length(Meirei)==0){ # 09.12.07 + Tmp<- c() + } + else{ + Tmp<- grep("newline",Meirei) + } + if(length(Tmp)>0){ + cat("\n",file=Wfile,append=TRUE); + } + else{ + Tmp<- paste(Meirei,"%\n",sep="") + Tmp<- gsub("//","\\",Tmp,fixed=TRUE) # 11.03.02 + cat(Tmp,file=Wfile,append=TRUE); + } +} + +############################################### + +Texctr<- function(N){ + if(is.numeric(N)){ + Alpha<- "abcdefghijklmnopqrstuvwxyz" + Out<- paste("ketpicctr",substr(Alpha,N,N),sep="") + } + else{ + if(grep("\\",N,fixed=TRUE)>0){ + Out<- substr(N,2,nchar(N)) + } + else{ + Out<- N + } + } + return(Out) +} + +############################################### + +Texelse<- function (){ + Texcom(""); + Texcom("\\else") +} + +############################################### + +Texend<- function() +{ + Texcom("%\n}") +} + +############################################### + +Texendfor<- function(I){ + Last<- TEXFORLAST[[TEXFORLEVEL]] + Texcom("") + Tmp<- paste("\\ifnum",Texthectr(I),"<",Last,sep="") + Texcom(Tmp) + Texcom("\\repeat") + Texcom("}") + TEXFORLEVEL<<- TEXFORLEVEL-1 + TEXFORLAST<<- TEXFORLAST[1:(length(TEXFORLAST)-1)] +} + +############################################### + +Texendif<- function(){ + Texcom("") + Texcom("\\fi") + Texcom("}") +} + +############################################### + +Texfor<- function(I,First,Last){ + TEXFORLEVEL<<- TEXFORLEVEL+1; + Texsetctr(I,"0") + Texsetctr(I,paste(as.character(First),"-1",sep="")) + Texcom("") + Texcom("{") + Texcom("\\loop") + Texsetctr(I,"+1") + TEXFORLAST<<- c(TEXFORLAST,as.character(Last)) +} + +############################################### + +Texforinit<- function(){ + TEXFORLEVEL<<- 0 + TEXFORLAST<<- list() +} + +############################################### + +Texif<- function(...){ + varargin<- list(...) + Condstr<- varargin[[1]] + Tp<- 0 + if(length(varargin)>1){ + Tp<- varargin[[2]] + } + Texcom("") + Texcom("{") + if(Tp==0){ + Texcom("\\ifnum") + } + else{ + Texcom("\\ifdim ") + } + Texcom(paste(Condstr," ",sep="")) +} + +###################################### + +Texletter<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + for (I in seq(1,Nargs,by=3)){ + P<- varargin[[I]] + X<- P[1] + if(mode(X)=="numeric"){ + X<- as.character(X) + } + Y<- P[2] + if(mode(Y)=="numeric"){ + Y<- as.character(Y) + } + Houkou<- varargin[[I+1]] + Mojiretu<- varargin[[I+2]] + Hset<- Houkou + Vhoko<- "c" + if(length(grep("n",Hset))>0){ + Vhoko<- "n" + } + if(length(grep("s",Hset))>0){ + Vhoko<- "s" + } + Hhoko<- "c"; + if(length(grep("e",Hset))>0){ + Hhoko<- "e" + } + if(length(grep("w",Hset))>0){ + Hhoko<- "w" + } + Hoko<- paste(Vhoko,Hhoko,sep="") + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + Tmp<- paste("\\put(",X,",",Y,"){\\hspace*{\\Width}",sep="") + Str<- paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + } +} + +################################################## + +Texnewcmd<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Str<- varargin[[1]] + S<- paste("\\newcommand{",Str,"}",sep="") + if(Nargs>1){ + Tmp<- as.character(varargin[[2]]) + S<- paste(S,"[",Tmp,"]",sep="") + } + if(Nargs>2){ + Tmp<- varargin[[3]] + if(mode(Tmp)=="numeric"){ + Tmp<- as.character(Tmp) + } + S<- paste(S,"[",Tmp,"]",sep="") + } + S<- paste(S,"{",sep="") + Texcom(S) +} + +############################################### + +Texnewctr<- function(N) +{ + if(mode(N)=="character"){ + Str<- paste("\\newcounter{",N,"}",sep="") + Texcom(Str) + } + else{ + for (I in N){ + Str<- paste("\\newcounter{",Texctr(I),"}",sep="") + Texcom(Str) + } + } +} +############################################### + +Texrenewcmd<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Str<- varargin[[1]] + S<- paste("\\renewcommand{",Str,"}",sep="") + if(Nargs>1){ + Tmp<- as.character(varargin[[2]]) + S<- paste(S,"[",Tmp,"]",sep="") + } + if(Nargs>2){ + Tmp<- varargin[[3]] + if(mode(Tmp)=="numeric"){ + Tmp<- as.character(Tmp) + } + S<- paste(S,"[",Tmp,"]",sep="") + } + S<- paste(S,"{",sep="") + Texcom(S) +} + +############################################### + +Texsetctr<- function(Nctr,Opstr) +{ + Ctr<- Texctr(Nctr) + Opstr<- paste(Opstr,"%",sep="") + OperL<- "+-*/%" + Oper<- "" + Va<- "" + Evflg<- 0 + Paflg<- 0 + for (I in Looprange(1,nchar(Opstr))){ + Tmp<- substring(Opstr,I,I) + if(Tmp=="("){ + Paflg<- 1 + if(nchar(Va)>0){ + Evflg<- 1 + Va<- paste(Va,Tmp,sep="") + } + next + } + if(Tmp==")"){ + Paflg<- 0 + if(Evflg>0){ + Va<- paste(Va,Tmp,sep="") + } + next + } + if(Paflg>0){ + Va<- paste(Va,Tmp,sep="") + next + } + if(length(grep(Tmp,OperL))==0){ + Va<- paste(Va,Tmp,sep="") + } + else{ + if(Evflg>0){ + Tmp1<- eval(parse(text=Va)) + Va<- paste("\\value{",Tmp1,"}",sep="") + Evflg<- 0 + } + if(Oper==""){ + if(nchar(Va)>0){ + Str<- paste("\\setcounter{",Ctr,"}{",Va,"}",sep="") + Texcom(Str) + } + Oper<- Tmp + Va<-"" + } + else if(Oper=="+"){ + Str<- paste("\\addtocounter{",Ctr,"}{",Va,"}",sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + else if(Oper=="-"){ + Str<- paste("\\addtocounter{",Ctr,"}{-",Va,"}",sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + else if(Oper=="*"){ + Str<- paste("\\multiply\\value{",Ctr,"} by ",Va,sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + else if(Oper=="/"){ + Str<- paste("\\divide\\value{",Ctr,"} by ",Va,sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + } + } +} + +############################################### + +Texthectr<- function(N) +{ + Out<- paste("\\the",Texctr(N),sep="") + return(Out) +} + +############################################### + +Texvalctr<- function(N){ + Out<- paste("\\value{",Texctr(N),"}",sep="") + return(Out) +} + +############################################### + +Texvctr<- function(N) +{ + Out<- paste("\\value{",Texctr(N),"}",sep="") + return(Out) +} + +############################################### + +Tonumeric <- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Data<- varargin[[1]] + Sp<- c(1,1) + Ep<- c(Inf,Inf) + if(Nargs>1){ + Sp<- varargin[[2]] + } + if(Nargs>2){ + Ep<- varargin[[3]] + } + Nrs<- Sp[1] + Nre<- min(nrow(Data),Ep[1]) + Ncs<- Sp[2] + Nce<- min(ncol(Data),Ep[2]) + Tmp1<- Data[Nrs:Nre, Ncs:Nce] + Tmp2 <- as.numeric(Tmp1) + Out <- matrix(Tmp2,nrow=nrow(Tmp1)) + Sp<- c() + for (I in 1:nrow(Out)){ + for (J in 1:ncol(Out)){ + Tmp<- Out[I,J] + if(!is.na(Tmp)){ + Sp<- c(I,J) + break; + } + } + if(length(Sp)>0) break + } + if(length(Sp)==0){ + return("Numeric data not found") + } + Ep<- c(nrow(Out),ncol(Out)) + for (I in Sp[1]:nrow(Out)){ + Tmp<- Out[I,Sp[2]] + if(is.na(Tmp)){ + Ep[1]<- I-1 + break + } + } + for (J in Sp[2]:ncol(Out)){ + Tmp<- Out[Sp[1],J] + if(is.na(Tmp)){ + Ep[2]<- J-1 + break + } + } + Out<- Out[Sp[1]:Ep[1], Sp[2]:Ep[2]] + return(Out) +} + +################################################## + +Translatedata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + Tmp=varargin[[2]] + if(mode(Tmp)=="numeric" && length(Tmp)>1){ + A<- Tmp[1]; B<- Tmp[2] + } + else{ + A<- Tmp + if(Nargs>=3){ + B<- varargin[[3]] + } + else{ + B<- 0 + } + } + OutL<- list() + for (N in Looprange(1,length(ML))){ + GL<- Op(N,ML) + Out<- c() + for (I in Looprange(1,Nrow(GL))){ + if(is.matrix(GL)){ # 10.12.07 + Tmp<- GL[I,] + } + else{ + Tmp<- GL + } + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==Inf){ + X2<- X1 + Y2<-Y1 + } + else{ + X2<- X1+A + Y2<- Y1+B + } + Out<- Appendrow(Out,c(X2,Y2)) + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +####################################### + +Unscaling<- function(G) +{ + GLg<- G + if(class(GLg)=="numeric"){ + GLg<-c(G[1]/SCALEX, G[2]/SCALEY) + Tmp<-GLg + if(LOGX==1) Tmp[1]<- 10^(GLg[1]) + if(LOGY==1) Tmp[2]<- 10^(GLg[2]) + return(Tmp) + } + else{ + Tmp1<-matrix(c(1/SCALEX,0,0,1/SCALEY),nrow=2) + GLg<-G %*% Tmp1 + Tmp<-GLg + if(LOGX==1) Tmp[,1]<- 10^(G[,1]) + if(LOGY==1) Tmp[,2]<- 10^(G[,2]) + return(Tmp) + } +} + +############################################# + +Vtickmark<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in 1:floor((YMAX-GENTEN[2])/Dm)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((YMIN-GENTEN[2])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt[1],Dt[2]) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(GENTEN[1],Dt) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X+MARKLEN,Y)) + Tmp2<- Unscaling(c(X-MARKLEN,Y)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X-MARKLEN,Y)) + Expr(Tmp,"w",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("w",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X-MARKLEN,Y)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X+MARKLEN,Y)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +############################################ + +Windisp<-function(...){ + varargin<-list(...) + Nargs<-length(varargin) + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + plot(c(Xmn,Xmx),c(Ymn,Ymx),type="n",asp=1,axes=FALSE,xlab="",ylab="") + Tmp<- Doscaling(Listplot(c(0,YMIN),c(0,YMAX))) + axis(2,at=as.numeric(Tmp[,2]), labels=round(c(YMIN,YMAX),2)) + Tmp<- Doscaling(Listplot(c(XMIN,0),c(XMAX,0))) + axis(1,at=as.numeric(Tmp[,1]), labels=round(c(XMIN,XMAX),2)) + Tmp1<- c(XMIN,GENTEN[2]) + Tmp2<- c(XMAX,GENTEN[2]) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp1<- c(GENTEN[1],YMAX) + Tmp2<- c(GENTEN[1],YMIN) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp<-Doscaling(Framedata()) + lines(Tmp[,1],Tmp[,2]) + for (I in Looprange(1,Nargs)){ + Pdata<-varargin[[I]] + if(mode(Pdata)=="numeric"){ + Pdata<-list(Pdata) + } + while(Mixtype(Pdata)==3){ # 10.02.23 + Tmp1<- list() + for(II in Looprange(1,length(Pdata))){ + Tmp1<- Mixjoin(Tmp1,Pdata[[II]]) + } + Pdata<- Tmp1 + } # 10.02.23 + for (II in Looprange(1,length(Pdata))){ + Tmp<-Pdata[[II]] + P<-MakeCurves(Tmp,0) + Ndm<-Dataindex(P) + for (J in Looprange(1,Nrow(Ndm))){ + Q<-P[Ndm[J,1]:Ndm[J,2],] + if(Nrow(Q)==1){ + Tmp<-seq(1,Ncol(Q),by=2) + for (K in Tmp){ + Pt<-Q[K:(K+1)] + points(Pt[1],Pt[2]) + } + } + else{ + lines(Q[,1],Q[,2]) + } + } + } + } +} + +############################################ + +WindispT<-function(..., color="black",width=1,new=FALSE,htick=c(),vtick=c()){ # 10.12.04 + par(new=new) + varargin<-list(...) + Nargs<-length(varargin) + if(!new) # 10.12.04 + { + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + plot(c(Xmn,Xmx),c(Ymn,Ymx),type="n",asp=1,axes=FALSE,xlab="",ylab="") + Tick<- sort(c(YMIN,YMAX,vtick)) #### 10.12.04 from here + Tmp1<- matrix(c(rep(0,length(Tick)),Tick),ncol=2) + Tmp<- Doscaling(Tmp1) + axis(2,at=as.numeric(Tmp[,2]), labels=round(Tick,2)) + Tick<- sort(c(XMIN,XMAX,htick)) + Tmp1<- matrix(c(Tick,rep(0,length(Tick))),ncol=2) + Tmp<- Doscaling(Tmp1) + axis(1,at=as.numeric(Tmp[,1]), labels=round(Tick,2)) #### 10.12.04 to here + Tmp1<- c(XMIN,GENTEN[2]) + Tmp2<- c(XMAX,GENTEN[2]) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp1<- c(GENTEN[1],YMAX) + Tmp2<- c(GENTEN[1],YMIN) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp<-Doscaling(Framedata()) + lines(Tmp[,1],Tmp[,2]) + } + for (I in Looprange(1,Nargs)){ + Pdata<-Flattenlist(varargin[[I]]) # 101129 from here + Cmd<- list() + for (II in Looprange(1,length(Pdata))){ + Tmp<-Pdata[[II]] + if(length(Tmp)==1){ + Cmd<- c(Cmd,list(Tmp)) + next + } + + P<-MakeCurves(Tmp,0) + + if(length(Cmd)>0){ + if(length(Cmd)>=3){ + polygon(P,col=Cmd[[1]],border=Cmd[[2]],density=Cmd[[3]]) + } + else{ + polygon(P,col=Cmd[[1]],border=Cmd[[2]]) + } + next + } # 101129 to here + Ndm<-Dataindex(P) + for (J in Looprange(1,Nrow(Ndm))){ + Q<-P[Ndm[J,1]:Ndm[J,2],] + if(Nrow(Q)==1){ + Tmp<-seq(1,Ncol(Q),by=2) + for (K in Tmp){ + Pt<-Q[K:(K+1)] + points(Pt[1],Pt[2],col=color)#taka101111 + } + } + else{ + lines(Q[,1],Q[,2],col=color,lwd=width)#taka101111 + } + } + } + } + par(new=FALSE) +} + +###################################### + +# 3D + +################################# + +# 10.08.16 +CameracoordCurve<- function(Curve){ + Out<- c() + for(J in Looprange(1,Nrow(Curve))){ + P<- Ptcrv(J,Curve) #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<- rbind(Out,c(Yz,Zz,Xz)) + } + rownames(Out)<- 1:Nrow(Out) + return(Out) +} + +######################################### + +#100815 +CameraCurve<- function(Curve){ + Eps<- 10^(-6) + for (I in Looprange(1,Nrow(Curve))){ + P<- Curve[I,] + x<- P[1]; y<- P[2]; z<- P[3] + if(x!=Inf){ + Tmp<- Perspt(P) + if(I==1){ + AnsL<- rbind(c(),Tmp) + }else{ + Tmp1<- AnsL[Nrow(AnsL),] + if(Tmp1[1]==Inf || Norm(Tmp-Tmp1)>Eps){ + AnsL<- rbind(AnsL,Tmp) + } + } + }else{ + AnsL<- rbind(AnsL,c(Inf,Inf)) + } + } + rownames(AnsL)<- 1:Nrow(AnsL) + return(AnsL) +} + +###################################### + +Cancoordpara<- function(P){ # 18.02.15 + 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<- c(X,Y,Z) + return(Out) +} + +###################################### + +Cancoordpers<- function(P){ + 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<- c(X,Y,Z) + return(Out) +} + +####################################### + +Embed<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } + else if(Mixtype(Pd3)==3){ + Tmp<- list(); + for(I in Looprange(1,length(Pd3))){ + Tmp<- c(Tmp,Pd3[[I]]) + } + Pd3<- Tmp + } + Tmpf=varargin[[2]] + if(mode(Tmpf)=="character"){ + Tmp<- varargin[[3]] + Tmp1<- gsub("c(","(",Tmp,fixed=TRUE) + Vstr<- gsub(")",")",Tmp1,fixed=TRUE) + Str<- paste("Tmpfn<- function",Vstr,"{",Tmpf,"}",sep="") + eval(parse(text=Str)) + } + else{ + Tmpfn<- Tmpf + } + Out<- list() + for(I in Looprange(1,length(Pd3))){ + PD<- Pd3[[I]] + Ans<- c() + for(J in Looprange(1,Nrow(PD))){ + P<- PD[J,] + Tmp<- Tmpfn(P[1],P[2]) + Ans<- rbind(Ans,Tmp) + } + Out<- c(Out, list(Ans)) + } + if(length(Out)==1){ + Out<- Out[[1]] + } + return(Out) +} + +####################### +# 10.08.17 +# 14.03.30 +Facesdata<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + FL<- varargin[[1]] + PT<- varargin[[length(varargin)]] + Tmp<-grep("para",PT,fixed=TRUE) + if(length(Tmp)>0){ + Ptype<- 1 + }else{ + Ptype<- -1 + } + if(Nargs==2){ + CLadd<- list() + }else{ + CLadd<- varargin[[2]] + } + NohiddenL<- list() + HiddenL<- list() + Eps<- 10^(-4) + if(length(CLadd)>0){ + if(mode(CLadd)=="numeric"){ + C<- list() + if(Nrow(CLadd)>1){ + for (I in Looprange(1,Nrow(CLadd))){ + C<- c(C,list(CLadd[I,])) + } + }else{ + I<- 1 + while (I<=Ncol(CLadd)){ + C<- c(C,list(CLadd[1,I:(I+2)])) + I<- I+3 + } + } + CrvL<- list(C) + }else if(mode(CLadd[[1]])=="numeric"){ + CrvL<- list() + for (J in Looprange(1,length(CL))){ + Ctmp<- CLadd[[J]] + C<- list() + if(Nrow(Ctmp)>1){ + for (I in Looprange(1,Nrow(Ctmp))){ + C<- c(C,list(Ctmp[I,])) + } + }else{ + I<- 1 + while(I<=Ncol(Ctmp)){ + C<- c(C,list(Ctmp[1,I:(I+2)])) + I<- I+3 + } + } + CrvL<- c(CrvL,list(C)) + } + }else{ + CrvL<- CLadd + } + }else{ + CrvL<- list() + } + Out<- MakeveLfaceL(FL) + VELNO<<- Out[[1]] + VELHI<<- list() + for (I in Looprange(1,length(CrvL))){ + Tmp<- CrvL[[I]] + for (J in Looprange(1,length(Tmp)-1)){ + Edge<- list(Tmp[J],Tmp[J+1]) + Ntmp<- length(VELNO) + VELNO(Ntmp+1)<<- list(Edge,0,Ntmp+1) + } + } + FaceL<- Out[[2]] + Tmp<- grep("raw",PT,fixed=TRUE) + if(length(Tmp)==0){ + for (Nf in Looprange(1,length(FaceL))){ + Face<- FaceL[[Nf]] + Menkakusi2(Face,Nf,Ptype) + } + } + for (I in Looprange(1,length(VELNO))){ + Edge<- Op(1,VELNO[[I]]) + if(Norm(Edge[[1]]-Edge[[2]])>Eps){ + NohiddenL<- c(NohiddenL,list(Spaceline(Edge))) + } + } + EdgeL<- list() # from 13.03.30 + for(K in Looprange(1,length(VELHI))){ + Edge<- Op(1,VELHI[[K]]) + P<- Edge[[1]]; Q<- Edge[[2]] + if(Norm(P-Q)>Eps){ + EdgeL<- c(EdgeL,list(Edge)) + } + } + for(K in Looprange(1,length(EdgeL))){ + Edge<- EdgeL[[K]] + P<- Edge[[1]]; Q<- Edge[[2]] + Cflg<- 0 + for(J in Looprange(K+1,length(EdgeL))){ + Ej<- EdgeL[[J]] + Pj<- Ej[[1]]; Qj<- Ej[[2]] + if(Norm(Crossprod(Q-P,Qj-Pj))>Eps){ + next + } + if(Norm(Q-Pj)<Eps){ + EdgeL[[J]]<- list(P,Qj) + Cflg<- 1 + break + } + if(Norm(P-Qj)<Eps){ + EdgeL[[J]]=list(Q,Pj) + Cflg<- 1 + break + } + } + if(Cflg==0){ + HiddenL<- c(HiddenL,list(Spaceline(Edge))) + } + } # upto 14.03.30 + PHHIDDENDATA<<- HiddenL + return(NohiddenL) +} + +############################## +# 2014.03.31 + +PhHiddenData<- function(){ + PHHIDDENDATA +} + +########## Old Fullform ( Check the case of Polygon )#################### + +Fullformfunc<- function(FdL){# Out=Fullformfunc(FdL) + Out<- list(Op(1,FdL)) + N<- Mixlength(FdL) + for (Jrg in Looprange(1,N)){ + Tmp<- Stripblanks(Op(Jrg,FdL)) + Tmp1<- grep("=c(",Tmp,fixed=TRUE) + if(length(Tmp1)>0){ + break + } + } + Urg<- Stripblanks(Op(Jrg,FdL)) + StrV<- strsplit(Urg,"=",fixed=TRUE)[[1]] + Uname<- StrV[1] + Vrg<- Stripblanks(Op(Jrg+1,FdL)) + StrV<- strsplit(Vrg,"=",fixed=TRUE)[[1]] + Vname<- StrV[1] + if(Jrg==2){ + Tmp<- Stripblanks(Op(1,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Zf<- StrV[2] + Tmp<- list(Uname,Vname,Zf,Urg,Vrg) + Out<- c(Out,Tmp) + }else if(Jrg==4){ + Tmp<- Stripblanks(Op(1,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Zf<- StrV[2] + Tmp<- Stripblanks(Op(2,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Xname<- StrV[1] + Xf<- StrV[2] + Tmp<- Stripblanks(Op(3,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Yname<- StrV[1] + Yf<- StrV[2] + Tmp<- gsub(Xname,paste("(",Xf,")",sep=""),Zf,fixed=TRUE) + Zf<- gsub(Yname,paste("(",Yf,")",sep=""),Tmp,fixed=TRUE) + Tmp<- list(Xf,Yf,Zf,Urg,Vrg) + Out<- c(Out,Tmp) + }else{ + Tmp<- Stripblanks(Op(2,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Xf<- StrV[2] + Tmp<- Stripblanks(Op(3,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Yf<- StrV[2] + Tmp<- Stripblanks(Op(4,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Zf<- StrV[2] + Tmp<- list(Xf,Yf,Zf,Urg,Vrg) + Out<- c(Out,Tmp) + } + DrwS<- "enws" + BdyL<- c() + for (I in Looprange(Jrg+2,Mixlength(FdL))){ + Tmp<- Op(I,FdL) + if(mode(Tmp)=="character"){ + if(length(Tmp)==0){ + Tmp<- " " + } + DrwS<- Tmp + } + if(mode(Tmp)=="numeric" && Ncol(Tmp)>1){ + BdyL<- Tmp + } + } + Tmp<- list(DrwS,BdyL) + Out<- c(Out,Tmp) + return(Out) +} + +#################################### + +Initangle<- function (){ + PHI<<- 30*pi/180 + THETA<<- 60*pi/180 +} + +########################## + +Invparapt<- function(...){ + varargin<- list(...) + Eps<- 10^(-4) + Fk<- varargin[[length(varargin)]] + NFk<- Numptcrv(Fk) + Tmp<- varargin[[1]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ # debug + 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){ + print("Not on the line") + return(c()) + }else{ + Ph<- Dotprod(V1,V2)/Norm(V2)^2+1 + } + } + } + if(NFk>2){ + N<- trunc(Ph) + S0<- Ph-N + if(Ph>Numptcrv(Fh)-Eps){ + Out<- list(Ptend(Fk),Numptcrv(Fh)) + return(Out) + } + }else{ + N<- 1 + S0<- Ph-1 + } + 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) + return(Out) +} + +################################# + +#100815 +Invperspt<- function(...){ + varargin<-list(...) + Eps<- 10^(-4) + Fk<- varargin[[length(varargin)]] + NFk<- Numptcrv(Fk) + Tmp<- varargin[[1]] + if(mode(Tmp)=="numeric" && 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){ + print("Not on the line") + Out<- c() + return(Out) + }else{ + Ph<- Dotprod(V1,V2)/Norm(V2)^2+1# 09.11.12 + } + } + } + if(NFk>2){ + N<- trunc(Ph) + S0<- Ph-N + if(Ph>Numptcrv(Fh)-Eps){ + Out<- list(Ptend(Fk),Numptcrv(Fh)) + return(Out) + } + }else{ + N<- 1 + S0<- Ph-1 # 09.11.12 + } + 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(c(Ph,0)) + Ahc<- Cancoordpers(c(Ah,0)) + Bhc<- Cancoordpers(c(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] + }else if(abs(Cp[2])==Mx){ + T2<- Nmr[2]/Cp[2] + }else{ + T2<- Nmr[3]/Cp[3] + } + Pk<- (1-T2)*Ak+T2*Bk + Out<- list(Pk,N+T2) + return(Out) +} + +######################### + +Kukannozoku<- function(Jokyo,KukanL){ + Eps<- 10^(-6) + N<- Nrow(KukanL) + T1<- Jokyo[1]; T2<- Jokyo[2] + Tmp<- KukanL[1,] + T1<- max(T1,Tmp[1]) + Tmp<- KukanL[N,] + T2<- min(T2,Tmp[2]) + Res<- c() + Flg<- 0 + for (I in Looprange(1,N)){ + Ku<- KukanL[I,] + if(Flg==0){ + if(Ku[2]<T1){ + Res<- rbind(Res,Ku) + }else{ + Flg<- 1 + if(Ku[1]<T1-Eps){ + Tmp<- c(Ku[1],T1) + Res<- rbind(Res,Tmp) + } + if(Ku[2]>T2+Eps){ + Tmp<- c(T2,Ku[2]) + Res<- rbind(Res,Tmp) + } + } + }else if(Flg==1){ + if(Ku[2]<T2){ + next + }else{ + Flg<- 2 + if(Ku[1]<T2-Eps){ + Ku<- c(T2,Ku[2]) + } + Res<- rbind(Res,Ku) + } + }else{ + Res<- rbind(Res,Ku) + } + } + return(Res) +} + +######################################## + +Makeskeletondata<- function(Obj2L,Plt2L,R0,Eps2){ + Eps<- 10.0^(-3) + Dmat<- c() + Dind<- c() + for (I in Looprange(1,Mixlength(Plt2L))){ + Dt<- Op(I,Plt2L) + N1<- Nrow(Dmat)+1 + if(Nrow(Dmat)==0){ + Dmat<- Dt + }else{ + Dmat<- rbind(Dmat,Dt) + } + N2<- Nrow(Dmat) + Dind<- c(Dind,N1,N2) + } + Dind<- matrix(Dind,ncol=2,byrow=TRUE) + Nind<- Nrow(Dind) + Allres<- list() + for (Nobj in Looprange(1,Mixlength(Obj2L))){ + Plt2<- Op(Nobj,Obj2L) + PhL<- Plt2[,1:2] + ClipL<- c() + for (Ns in Looprange(1,Nrow(PhL)-1)){ + P1<- PhL[Ns:(Ns+1),] + for (I in Looprange(1,Nrow(Dind))){ + Tmp<- Dmat[Dind[I,1]:Dind[I,2],] + P2<- Tmp[,1:2] + KC<- IntersectcrvsPp(P1,P2,Eps) + if(Mixlength(KC)>0){ + for (J in 1:Mixlength(KC)){ + P<- Op(1,Op(J,KC)) + Tmp<- Op(2,Op(J,KC)) + if(Tmp<1+Eps && Ns==1){ + next + } + if(Tmp>Numptcrv(P1)-Eps && Ns==(Nrow(PhL)-1)){ + next + } + N1<- Ns + N2<- Op(3,Op(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){ + next + } + 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)){ + next + } + T2<- Norm(Pa-P)/Norm(Pa-Pb) + Z2<- (1-T2)*Za+T2*Zb + if(Z1<Z2-Eps2){ + if(Nrow(ClipL)==0){ + Tmp<- 1 + }else{ + Tmp1<- ClipL[,1]-P[1] + Tmp2<- ClipL[,2]-P[2] + Tmp3<- Tmp1^2+Tmp2^2 + Tmp<- min(Tmp3) + } + if(Tmp>Eps^2){ + Tmp1<- P1[2,]-P1[1,] + Tmp2<- Pb-Pa + Tmp3<- Dotprod(Tmp1,Tmp2) + Tmp3<- Tmp3/Norm(Tmp1)/Norm(Tmp2) + Tmp<- 1-0.5*Tmp3^2 + ClipL<- rbind(ClipL,c(P,N1,T1,R0/Tmp)) + } + } + } + } + } + } + Te<- Nrow(Plt2) + KukanL<- rbind(c(),c(1.0,Te)) + P1<- PhL + if(Nrow(ClipL)>0){ + for (I in 1:Nrow(ClipL)){ + P<- ClipL[I,1:2] + NN<- ClipL[I,3] + T<- NN+ClipL[I,4] + R<- ClipL[I,5] + Flg<- 0 + for (J in NN:1){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){ + next + } + Flg<- 1 + break + } + if(Flg==0){ + T1<- 1 + }else{ + T1<- J; T2<- T + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ + T2<- T2-H + }else{ + T1<- T1+H + } + } + } + Ku<- c(T1) + Flg<- 0 + for (J in Looprange(NN+1,Te)){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){ + next + } + Flg<- 1 + break + } + if(Flg==0){ + T2<- Te + }else{ + T1<- T; T2<- J + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ + T1<- T1+H + }else{ + T2<- T2-H + } + } + } + Ku<- c(Ku,T2) + KukanL<- Kukannozoku(Ku,KukanL) + } + } + Res<- list() + for (I in Looprange(1,Nrow(KukanL))){ + T1<- KukanL[I,1]; N1<- trunc(T1) + T2<- KukanL[I,2]; N2<- trunc(T2) + PtL<- list() + if(T1-N1<1-Eps){ + Tmp<- Pointoncurve(T1,P1) + PtL<- list(Tmp) + } + for (J in Looprange(N1+1,N2)){ + Tmp<- Pointoncurve(J,P1) + PtL<- c(PtL,list(Tmp)) + } + if(T2-N2>Eps){ + Tmp<- Pointoncurve(T2,P1) + PtL<- c(PtL,list(Tmp)) + } + Res<- c(Res,list(Listplot(PtL))) + } + Allres<- c(Allres,Res) + } + return(Allres) +} + +######################### + +#100815 +Makeskeletonpersdata<- function(Obj2L,Plt2L,R0,Eps2){ + Eps<- 10.0^(-3) + Dmat<- c() + Dind<- c() + for (I in Looprange(1,Mixlength(Plt2L))){ + Dt<- Op(I,Plt2L) + N1<- Nrow(Dmat)+1 + Dmat<- rbind(Dmat,Dt) + N2<- Nrow(Dmat) + Dind<- rbind(Dind,c(N1,N2)) + } + Nind<- Nrow(Dind) + Allres<- list() + for (Nobj in Looprange(1,Mixlength(Obj2L))){ + Plt2<- Op(Nobj,Obj2L) + PhL<- Plt2[,1:2] + ClipL<- c() + for (Ns in Looprange(1,Nrow(PhL)-1)){ + P1<- PhL[Ns:(Ns+1),] + for (I in Looprange(1,Nrow(Dind))){ + Tmp<- Dmat[Dind[I,1]:Dind[I,2],] + P2<- Tmp[,1:2] + KC<- IntersectcrvsPp(P1,P2,Eps) + if(Mixlength(KC)>0){ + for (J in Looprange(1,Mixlength(KC))){# + P<- Op(1,Op(J,KC)) + Tmp<- Op(2,Op(J,KC)) + if(Tmp<(1+Eps) && Ns==1){ + next + } + if(Tmp>Numptcrv(P1)-Eps && Ns==(Nrow(PhL)-1)){ + next + } + N1<- Ns + N2<- Op(3,Op(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){ + next + } + T1<- Norm(Pa-P)/Norm(Pa-Pb)#norm(Pa-P)/norm(Pa-Pb) + Pka<- Cancoordpers(c(Pa[1],Pa[2],Za)) + Pkb<- Cancoordpers(c(Pb[1],Pb[2],Zb)) + if(T1>1-Eps){ + Pk<- Pkb + }else{ + Tmp1<- Listplot(c(Pa,Pb)) + Tmp2<- Spaceline(c(Pka,Pkb)) + Tmp<- Invperspt(1+T1,Tmp1,Tmp2) + Pk<- Op(1,Tmp) + } + 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){ + next + } + T2<- Norm(Pa-P)/Norm(Pa-Pb) + Pka<- Cancoordpers(c(Pa[1],Pa[2],Za)) + Pkb<- Cancoordpers(c(Pb[1],Pb[2],Zb)) + if(T2>(1-Eps)){ + Pk<- Pkb + }else{ + Tmp1<- Listplot(c(Pa,Pb)) + Tmp2<- Spaceline(c(Pka,Pkb)) + Tmp<- Invperspt(1+T2,Tmp1,Tmp2) + Pk<- Op(1,Tmp) + } + Z2<- Zperspt(Pk) + if(Z1<(Z2-Eps2)){ + if(length(ClipL)==0){ + Tmp<- 1 + }else{ + Tmp1<- ClipL[,1]-P[1] + Tmp2<- ClipL[,2]-P[2] + Tmp3<- Tmp1^2+Tmp2^2 + Tmp<- min(Tmp3) + } + if(Tmp>Eps^2){ + Tmp1<- P1[2,]-P1[1,] + Tmp2<- Pb-Pa + Tmp3<- Dotprod(Tmp1,Tmp2) + Tmp3<- Tmp3/Norm(Tmp1)/Norm(Tmp2) + Tmp<- 1-0.5*Tmp3^2 + ClipL<- rbind(ClipL,c(P,N1,T1,R0/Tmp)) + } + } + } + } + } + } + Te<- Nrow(Plt2) + KukanL<- rbind(c(),c(1.0,Te)) + P1<- PhL + if(Nrow(ClipL)>0){ + for (I in Looprange(1,Nrow(ClipL))){ + P<- ClipL[I,1:2] + NN<- ClipL[I,3] + T<- NN+ClipL[I,4] + R<- ClipL[I,5] #added 10.08.17 + Flg<- 0 + for (J in NN:1){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){#(norm(P-Q)<R) + next + } + Flg<- 1 + break + } + if(Flg==0){ + T1<- 1 + }else{ + T1<- J; T2<- T + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ # norm(P-Q)<R + T2<- T2-H + }else{ + T1<- T1+H + } + } + } + Ku<- c(T1)#Ku<- [T1] + Flg<- 0 + for (J in Looprange(NN+1,Te)){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){ + next#continue + } + Flg<- 1 + break + } + if(Flg==0){ + T2<- Te + }else{ + T1<- T; T2<- J + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ + T1<- T1+H + }else{ + T2<- T2-H + } + } + } + Ku<- c(Ku,T2)#[Ku,T2] + KukanL<- Kukannozoku(Ku,KukanL) + } + } + Res<- list()#[] + for (I in Looprange(1,Nrow(KukanL))){#(I=1:size(KukanL,1)) + T1<- KukanL[I,1]; N1<- trunc(T1) + T2<- KukanL[I,2]; N2<- trunc(T2) + PtL<- list()#[] + if(T1-N1<1-Eps){ + Tmp<- Pointoncurve(T1,P1) + PtL<- list(Tmp)#100816c(PtL,list(Tmp)) PtL<- MixS(Tmp) + } + for (J in Looprange(N1+1,N2)){ + Tmp<- Pointoncurve(J,P1) + PtL<- c(PtL,list(Tmp))#Mixadd(PtL,Tmp) + } + if(T2-N2>Eps){ + Tmp<- Pointoncurve(T2,P1) + PtL<- c(PtL,list(Tmp))#Mixadd(PtL,Tmp) + } + Res<- c(Res,list(Listplot(PtL)))#Res<- Mixadd(Res,Listplot(PtL)) + } + Allres<- c(Allres,Res)#Allres<- Mixjoin(Allres,Res) + } + return(Allres) +} + +##############################3 + +MakeveLfaceL<- function(VfL){ +# // Out format +# // VeL Edge, Face num(as numlist), VeL num +# // FL Face (Vertexs) + Eps<- 10^(-4) + Tmp<- VfL[[length(VfL)]] + Tmp1<- Tmp[[1]] + if(mode(Tmp1)=="numeric"){ + FvL<- list(VfL) + }else{ + FvL<- VfL + } + EL<- list(); FL<- list() + for (Nn in Looprange(1,length(FvL))){ + Tmp<- FvL[[Nn]] + VL<- Tmp[[1]] + if(length(VL)>0){ + FnL<- Tmp[[2]] + FaceL<- list() + for (I in Looprange(1,length(FnL))){ + Tmp1<- FnL[[I]] + PtL<- list() + for (J in Looprange(1,length(Tmp1))){ + Tmp2<- Tmp1[[J]] + PtL[[J]]<- VL[[Tmp2]] + } + FaceL[[I]]<- PtL + } + }else{ + FaceL<- list(Tmp[[2]]) + } + for (I in Looprange(1,length(FaceL))){ + Face<- FaceL[[I]] + Face<- c(Face,list(Face[[1]])) + FL<- c(FL,list(Face)) + for (J in Looprange(1,length(Face)-1)){ + Edge<- list(Face[[J]],Face[[J+1]]) + Flg<- 0 + for (K in Looprange(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<- c(Tmp[[2]],length(FL)) + EL[[K]]<- list(Tmp1,Tmp2,K) + Flg<- 1 + break + } + } + if(Flg==0){ + Ntmp<- length(EL) + EL[[Ntmp+1]]<- list(Edge,c(length(FL)),Ntmp+1) + } + } + } + } + Out<- list(EL,FL) + return(Out) +} + +########################### +#// 09.10.29 +#// 09.11.15 + +Menkakusi2<- function(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() + } + Vec<- 1/Norm(Tmp1)/Norm(Tmp2)*Crossprod(Tmp1,Tmp2) + if(Norm(Vec)<Eps){ + return() + } + if(Ptype== -1){ + W<- EyePoint + Tmp<- Dotprod(Vec,W-Face[[1]]) + }else{ + W<- c(sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)) + W<- 100*W + Tmp<- Dotprod(Vec,W-Face[[1]]) + } + if(abs(Tmp)<Eps){ + return() + } + if(Tmp<-Eps){ + Vec<- -Vec + } + if(Ptype==-1){ + G1<- Projpers(Spaceline(Face)) + }else{ + G1<- Projpara(Spaceline(Face)) + } + VL<- list() + for (I in Looprange(1,Numptcrv(G1))){ + VL[[I]]<- Ptcrv(I,G1) + } + Out1L<- list() + Out2L<- VELHI + for (N in Looprange(1,length(VELNO))){ + Out1<- list() + Out2<- list() + Tmp<- VELNO[[N]] + Edge<- Tmp[[1]] + Ne<- Tmp[[2]] + NNe<- Tmp[[3]] + if(Member(Nf,Ne)){ + Out1L<- c(Out1L, list(list(Edge,Ne,NNe))) + next + } + if(Ptype==-1){ + PtA<- Perspt(Edge[[1]]) + PtB<- Perspt(Edge[[2]]) + }else{ + PtA<- Parapt(Edge[[1]]) + PtB<- Parapt(Edge[[2]]) + } + if(Norm(PtA-PtB)<Eps){ + next + } + Bdy<- list(G1) + V<- PtB-PtA + TenL<- KoutenList(PtA,V,Bdy) + Nten<- length(TenL) + if(Nten==0){ # debug 10.08.17 + Out1L<- c(Out1L,list(list(Edge,Ne,NNe))) + next + } + 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)) + } + Qe3<- Tmp[[1]] + Flg<- 0 + for (I in Looprange(1,Nten)){ + TenP<- TenL[[I]] + Ts<- TenP[[1]] + P<- TenP[[2]] + if(Ts< -Eps){ + next + } + 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)) + } + P3<- Tmp[[1]]; Q3<- Tmp1[[1]] + if(Ts>1-Eps){# // P3, Q3 are necessary + Flg<- I + break + } + if(abs(Te-Ts)>Eps0){ + if((I%%2)==1){ + Out1<- c(Out1,list(list(Pe3,P3))) + }else{ + if(length(Qe3)==0){ + Tmp<- Op(2,TenL[[I-1]]) + if(Ptype==-1){ + Tmp1<- Invperspt(Tmp,Spaceline(Face)) + }else{ + Tmp1<- Invparapt(Tmp,Spaceline(Face)) + } + Qe3<- Tmp1[[1]] + } + 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) + } + if(Z1>Z2){ + Out1<- c(Out1, list(list(Pe3,P3))) + }else{ + Out2<- c(Out2, list(list(Pe3,P3))) + }## + } + } + Te<- Ts; Pe3<- P3; Qe3<- Q3 + } + if(Flg==0){ + if(Norm(Pe3-Edge[[2]])>Eps0){ + Out1<- c(Out1, list(list(Pe3,Edge[[2]]))) + } + }else{ + if((Flg%%2)==1){ + Out1<- c(Out1, list(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) + } + if(Z1>Z2){ + Out1<- c(Out1, list(list(Pe3,Edge[[2]]))) + }else{ + Out2<- c(Out2, list(list(Pe3,Edge[[2]]))) + } + } + } + for (I in Looprange(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<- c(Out1L, list(list(SeL,Ne,NNe))) + SeL<- Tmp + } + } + } + if(length(Out1)>0){ + Out1L<- c(Out1L, list(list(SeL,Ne,NNe))) + } + for (I in Looprange(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<- c(Out2L, list(list(SeL,Ne,NNe))) + SeL<- Tmp + } + } + } + if(length(Out2)>0){ + Out2L<- c(Out2L, list(list(SeL,Ne,NNe))) + } + } + VELNO<<- Out1L + VELHI<<- Out2L +} + +################################### + +Parapt<- function(Plist){ # 18.02.19 changed (for point list) + if(!is.list(Plist)){Plist=list(Plist)} + Out=list() + for(jj in 1:length(Plist)){ + P=Op(jj,Plist) + 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<- c(Out,list(c(Xz,Yz))) + } + if(length(Out)==1){Out=Op(1,Out)} + return(Out) +} + +################################### + +Partcrv3<- function(T1,T2,Fk){ + Eps0=10^(-4) +#// Tmp=Mixop(1,Fk) +#// new part from + if(T1>(T2+Eps0)){ + Npt<- Nrow(Fk) + Out1<- Partcrv3(T1,Npt,Fk) + Out2<- Partcrv3(1,T2,Fk) + Tmp<- Fk[1,]-Fk[Npt,] + if(Norm(Tmp)<Eps0){ + PL<- Joincrvs(Out1,Out2) + }else{ + PL<- list(Out1,Out2) + } + rownames(PL)<- 1:Nrow(PL) + return(PL) + } + if(floor(T1)==floor(T2)){ #18.02.26from + Tmp=floor(T1) + p1=Op(Tmp,Fk); p2=Op(Tmp+1,Fk) + PL=c(p1+(T1-Tmp)*(p2-p1)) + PL=Appendrow(PL, p1+(T2-Tmp)*(p2-p1)) #18.02.26upto + }else{ + Is<- ceiling(T1) + Ie<- floor(T2) + PL<- c() + if(T1<Is-Eps0){ + P<- (Is-T1)*Fk[Is-1,]+(1-Is+T1)*Fk[Is,] + PL<- Appendrow(PL, P) #18.02.10(bug) + } + PL<- Appendrow(PL,Fk[Is:Ie,]) + if(T2>(Ie+Eps0)){ + P<- (1-T2+Ie)*Fk[Ie,]+(T2-Ie)*Fk[Ie+1,] + PL<- Appendrow(PL,P) + } + } + return(PL) +} + +################################### + +#100815 +Perspt<- function(P){ + 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<- c(Yz,Zz) + return(Out) +} + + +################################# + +Phcutdata<- function(VL,FaceL,PlaneD){ + Out<- list() + EL<- list() + Eps<- 10^(-4) + for (I in Looprange(1,Mixlength(FaceL))){ + Face<- Op(I,FaceL) + for (J in Looprange(1,length(Face))){ + Nj<- J+1 + if(J==length(Face)){ + Nj<- 1 + } + N1<- Face[J]; N2<- Face[Nj] + Tmp<- c(N1,N2) + Flg<- 0 + for (K in Looprange(1,Mixlength(EL))){ + Tmp1<- Op(K,EL) + Tmp2<- Tmp1[2:1] + if(all(Tmp==Tmp1) || all(Tmp==Tmp2)){ + Flg<- 1 + break + } + } + if(Flg==0){ + EL<- c(EL,list(Tmp)) + } + } + } + Out0<- list() + for (I in Looprange(1,Mixlength(EL))){ + Tmp<- Op(I,EL) + Tmp1<- Op(Tmp[1],VL) + Tmp2<- Op(Tmp[2],VL) + Out0<- c(Out0, list(Spaceline(Tmp1,Tmp2))) + } + if(Mixtype(PlaneD)!=1){ + V1<- Op(1,PlaneD) + Tmp<- Op(2,PlaneD) + if(length(Tmp)>1){ + d<- V1[1]*Tmp[1]+V1[2]*Tmp[2]+V1[3]*Tmp[3] + }else{ + d<- Tmp + } + }else if(mode(PlaneD)=="numeric"){ + V1<- PlaneD[1:3] + d<- PlaneD[4] + }else{ + StrV<- strsplit(PlaneD,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Tmp1<- StrV[1] + Tmp2<- StrV[2] + PlaneD<- paste(Tmp1,"-(",Tmp2,")",sep="") + } + x<- 0; y<- 0; z<- 0 + d<- -eval(parse(text=PlaneD)) + x<- 1; y<- 0; z<- 0; + Tmp1<- eval(parse(text=PlaneD))+d + x<- 0; y<- 1; z<- 0 + Tmp2<- eval(parse(text=PlaneD))+d + x<- 0; y<- 0; z<- 1 + Tmp3<- eval(parse(text=PlaneD))+d + V1<- c(Tmp1,Tmp2,Tmp3) + } + if(all(V1==c(0,0,0))){ + return(Out0) + } + V3<- c(1,0,0) + Out1<- Rotate3data(Out0,V1,V3) + Tmp2<- Rotate3pt(c(1,0,0),V3,V1) + Tmp<- V1[1]*Tmp2[1]+V1[2]*Tmp2[2]+V1[3]*Tmp2[3] + x0<- d/Tmp + PtL<- list() + for (I in Looprange(1,Mixlength(Out1))){ + Tmp<- Op(I,Out1) + Tmp1<- Tmp[1,]; Tmp2<- Tmp[2,] + P<- list(Tmp1,Tmp2-Tmp1) + Tmp<- list(Tmp1[1],Tmp2[1]-Tmp1[1]) + if(abs(Tmp[[2]]) < Eps){ + Tmp<- c() + }else{ + Tmp1<- Tmp[[2]] + Tmp2<- x0-Tmp[[1]] + Tmp<- c(Tmp2/Tmp1) + } + if(length(Tmp)>0){ + Tmp<- Tmp[1] + if(Tmp>-Eps && Tmp<(1+Eps)){ + Tmp3<- P[[1]]+Tmp*P[[2]] + Tmp3<- Rotate3pt(Tmp3,V3,V1) + if(Tmp<Eps){ + Tmp1<- Op(I,EL) + Tmp1<- Tmp1[1] + Tmp4<- list(c(Tmp1,Tmp1),Tmp3) + }else{ + if(Tmp>1-Eps){ + Tmp1<- Op(I,EL) + Tmp1<- Tmp1[2] + Tmp4<- list(c(Tmp1,Tmp1),Tmp3) + }else{ + Tmp4<- list(Op(I,EL),Tmp3) + } + } + Flg<- 0 + for (J in Looprange(1,Mixlength(PtL))){ + Tmp<- Op(J,PtL) + Tmp<- Op(2,Tmp) + if(Norm(Tmp3-Tmp)<Eps){ + Flg<- 1 + break + } + } + if(Flg==0){ + PtL<- c(PtL,list(Tmp4)) + } + } + } + } + if(Mixlength(PtL)==0){ + return(Out0) + } + PL<- list(Op(1,PtL)) + QL<- PtL[2:Mixlength(PtL)] + N<- Mixlength(QL) + for (I in Looprange(2,N+1)){ + Tmp1<- Op(Mixlength(PL),PL) + Tmp1<- Op(1,Tmp1) + for (J in Looprange(1,Mixlength(QL))){ + Tmp2<- Op(J,QL) + Tmp2<- Op(1,Tmp2) + Flg<- 0 + for (K in Looprange(1,Mixlength(FaceL))){ + Tmp3<- Op(K,FaceL); + if(Member(Tmp1[1],Tmp3) && + Member(Tmp1[2],Tmp3) && + Member(Tmp2[1],Tmp3) && + Member(Tmp2[2],Tmp3)){ + Flg<- 1 + break + } + } + if(Flg==1){ + break + } + } + J<- min(J, Mixlength(QL)) + PL<- c(PL,list(Op(J,QL))) + Tmp1<- QL[Looprange(1,J-1)] + Tmp2<- QL[Looprange(J+1,Mixlength(QL))] + QL<- c(Tmp1,Tmp2) + if(Mixlength(QL)==0){ + break + } + } + PHCUTPOINTL<<- PL + Tmp<- list() + for (J in Looprange(1,Mixlength(PL))){ + Tmp1<- Op(J,PL) + Tmp1<- Op(2,Tmp1) + Tmp<- c(Tmp,list(Tmp1)) + } + Tmp1<- Op(1,PL) + Tmp1<- Op(2,Tmp1) + Tmp<- c(Tmp,list(Tmp1)) + Out2<- Spaceline(Tmp) + Out<- c(Out0,list(Out2)) +} + +######################################### + +Phcutoffdata<- function(...){ + varargin<-list(...) + Eps<- 10^(-4) + Out2<- list() + VL<- varargin[[1]] + FaceL<- varargin[[2]] + PlaneD<- varargin[[3]] + Sgnstr<- varargin[[4]] + Fugou<- 1 + if(Sgnstr=="-" || Sgnstr=="n"){ + Fugou<- -1 + } + Out0<- Phcutdata(VL,FaceL,PlaneD) + PtL<- PHCUTPOINTL + PHVERTEXL<<- VL + PHFACEL<<- FaceL + if(length(PtL)==0){ + Out2<- Out0 + return(Out2) + } + N1<- Mixlength(VL) + Face<- c() + for (I in Looprange(1,Mixlength(PtL))){ + Tmp<- Op(I,PtL) + Tmp3<- Op(1,Tmp) + Tmp1<- Tmp3[[1]]; Tmp2<- Tmp3[[2]] # debugged 10.08.14 + if(Tmp1!=Tmp2){ + VL<- c(VL,list(Op(2,Tmp))) + N1<- N1+1 + Tmp1<- N1 + } + Face<- c(Face,Tmp1) + PtL[[I]]<- list(Op(1,Tmp),Tmp1) + } + OutfL<- list(Face) + if(Mixtype(PlaneD)!=1){ + V1<- Op(1,PlaneD) + Tmp<- Op(2,PlaneD) + if(length(Tmp)>1){ + d<- V1[1]*Tmp[1]+V1[2]*Tmp[2]+V1[3]*Tmp[3] + }else{ + d<- Tmp + } + }else if(mode(PlaneD)=="numeric"){ + V1<- PlaneD[1:3] + d<- PlaneD[4] + }else{ + StrV<- strsplit(PlaneD,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Tmp1<- StrV[1] + Tmp2<- StrV[2] + PlaneD<- paste(Tmp1,"-(",Tmp2,")",sep="") + } + x<- 0; y<- 0; z<- 0 + d<- -eval(parse(text=PlaneD)) + x<- 1; y<- 0; z<- 0 + Tmp1<- eval(parse(text=PlaneD))+d + x<- 0; y<- 1; z<- 0 + Tmp2<- eval(parse(text=PlaneD))+d + x<- 0; y<- 0; z<- 1 + Tmp3<- eval(parse(text=PlaneD))+d + V1<- c(Tmp1,Tmp2,Tmp3) + } + for (I in Looprange(1,Mixlength(FaceL))){ + Face<- Op(I,FaceL) + TmpL<- list() + for (J in Looprange(1,length(Face))){ + N1<- Face[J] + if(J==length(Face)){ + N2<- Face[1] + }else{ + N2<- Face[J+1] + } + for (K in Looprange(1,Mixlength(PtL))){ + Pd<- Op(K,PtL) + Tmp<- Op(1,Pd) + if(Tmp[1]==Tmp[2]){ + if(Tmp[1]==N1){ + TmpL<- c(TmpL,list(list(J,c(N1,N2),Op(2,Pd)))) + } + }else{ + if(all(Tmp==c(N1,N2)) || all(Tmp==c(N2,N1))){ + TmpL<- c(TmpL,list(list(J,c(N1,N2),Op(2,Pd)))) + } + } + } + } + if(Mixlength(TmpL)<2){ + Flg<- 0 + for (J in Looprange(1,length(Face))){ + Tmp<- Op(Face[J],VL) + Tmp1<- Fugou*(Dotprod(V1,Tmp)-d) + if(Tmp1< -Eps){ + Flg<- 1 + break + } + } + if(Flg==0){ + OutfL<- c(OutfL,list(Face)) + } + next + } + Pd<- Op(1,TmpL) + Qd<- Op(2,TmpL) + Outf1<- c(Op(3,Pd)) + Nf<- Op(1,Pd)+1 + Tmp<- Op(2,Pd) + JJ<- 0 + while (!all(Tmp==Op(2,Qd))){ + JJ<- JJ+1 + if(JJ>20){ + print("bug") + return() + } + Tmp1<- Tmp[2] + if(Outf1[length(Outf1)]!=Tmp1){ + Outf1<- c(Outf1,Tmp1) + } + Tmp<- c(Face[Nf]) + Nf<- Nf+1 + if(Nf>length(Face)){ + Nf<- 1 + } + Tmp<- c(Tmp,Face[Nf]) + } + Tmp1<- Op(3,Qd) + if(Outf1[length(Outf1)]!=Tmp1){ + Outf1<- c(Outf1,Tmp1) + } + Outf2<- c(Op(3,Pd)) + Nf<- Op(1,Pd) + Tmp<- Op(2,Pd) + JJ<- 0 + while (!all(Tmp==Op(2,Qd))){ + JJ<- JJ+1 + if(JJ>20){ + print("bug") + return() + } + Tmp1<- Tmp[1] + if(Outf2[length(Outf2)]!=Tmp1){ + Outf2<- c(Outf2,Tmp1) + } + Tmp<- c(Face[Nf]) + Nf<- Nf-1 + if(Nf<1){ + Nf<- length(Face) + } + Tmp<- c(Face[Nf],Tmp) + } + Tmp1<- Op(3,Qd) + if(Outf2[length(Outf2)]!=Tmp1){ + Outf2<- c(Outf2,Tmp1) + } + if(length(Outf1)<3 || length(Outf2)<3){ + Face<- Outf1 + if(length(Outf1)<length(Outf2)){ + Face<- Outf2 + } + Flg<- 0 + for (J in Looprange(1,length(Face))){ + Tmp<- Op(Face(J),VL) + Tmp1<- Fugou*(Dotprod(V1,Tmp)-d) + if(Tmp1<-Eps){ + Flg<- 1 + break + } + } + if(Flg==0){ + OutfL<- c(OutfL,list(Face)) + } + }else{ + Tmp<- Op(Outf1[2],VL) + Tmp1<- Outf1 + Tmp2<- Fugou*(Dotprod(V1,Tmp)-d) + if(Tmp2<0){ + Tmp1<- Outf2 + } + OutfL<- c(OutfL,list(Tmp1)) + } + } + PHVERTEXL<<- VL + PHFACEL<<- OutfL + Out2<- Phcutdata(VL,OutfL,c(0,0,0,0)) + return(Out2) +} + +####################### + +Phparadata<- function(VL,FaceL){ + Out<- Facesdata(list(VL,FaceL),"para") + return(Out) +} + +#################################### + +Phpersdata<- function(VL,FaceL){ + Out<- Facesdata(list(VL,FaceL),"pers") + return(Out) +} + +#################################### + +Phspersdata<- function(Fdata){ + Out<- Facesdata(Fdata,"pers") + return(Out) +} + +#################################### + +Phsparadata<- function(Fdata){ + Out<- Facesdata(Fdata,"para") + return(Out) +} + +######################### + +#100816 +Projpers<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Flg<- 0 + if(Nargs==1 && Mixtype(varargin[[1]])==1){ + Flg<- 1 + } + CL<- list() + for (N in Looprange(1,Nargs)){ + Crv<- varargin[[N]] + if(Mixtype(Crv)==1){ + Tmp<- CameraCurve(Crv) + CL<- c(CL,list(Tmp)) + }else{ + if(Mixtype(Crv)==3){ + ObjL<- list() + for (I in Looprange(1,Mixlength(Crv))){ + Tmp1<- Op(I,Crv) + if(Mixtype(Tmp1)==1){ + ObjL<- c(ObjL,list(Tmp1)) + }else{ + ObjL<- c(ObjL,Tmp1) + } + } + Crv<- ObjL + } + for (J in Looprange(1,Mixlength(Crv))){ + Tmp<- CameraCurve(Op(J,Crv)) + CL<- c(CL,list(Tmp)) + } + } + } + if(Mixlength(CL)==1 && Flg==1){ + CL<- Op(1,CL) + } + return(CL) +} + +################################### + +ProjcoordCurve<- function(Curve){ + SP<- sin(PHI); CP<- cos(PHI) + ST<- sin(THETA); CT<- cos(THETA) + Out<- c() + for (J in Looprange(1,Nrow(Curve))){ + P<- Ptcrv(J,Curve) + 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<- c(Out,Xz,Yz,Zz) + } + Out<- matrix(Out,ncol=3,byrow=TRUE) + return(Out) +} + +################################# + +ProjCurve<- function(Curve){ # 2018.02.26 rewritten + AnsL= c() + SP=sin(PHI); CP=cos(PHI) + ST=sin(THETA); CT=cos(THETA) + for(I in Looprange(1,Length(Curve)) ){ + P=Op(I,Curve) + 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 + AnsL=Appendrow(AnsL,c(Xz,Yz)) + Tmp= c(Xz,Yz) + }else{ + AnsL=Appendrow(AnsL,c(Inf,Inf)) + } + } + return(AnsL) +} + +#################################### + +Projpara<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Flg<- 0 + if((Nargs==1)&&(is.numeric(varargin[[1]]))){ + Flg<- 1 + } + CL<- list() + for (N in Looprange(1,Nargs)){ + Crv<- varargin[[N]] + if(is.numeric(Crv)){ + Tmp<- ProjCurve(Crv) + CL<- c(CL,list(Tmp)) + } + else{ + if(is.list(Crv)){ + ObjL<- list() + for (I in Looprange(1,Mixlength(Crv))){ + Tmp1<- Op(I,Crv) + if(is.numeric(Tmp1)){ + ObjL<- c(ObjL,list(Tmp1)) + } + else{ + ObjL<- c(ObjL,Tmp1) + } + } + Crv<- ObjL + } + for (J in Looprange(1,length(Crv))){ + Tmp<- ProjCurve(Op(J,Crv)) + CL<- c(CL,list(Tmp)) + } + } + } + if((length(CL)==1)&&(Flg==1)){ + CL<- Op(1,CL) + } + return(CL) +} + +######################### + +#100816 +Projpers<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Flg<- 0 + if(Nargs==1 && Mixtype(varargin[[1]])==1){ + Flg<- 1 + } + CL<- list() + for (N in Looprange(1,Nargs)){ + Crv<- varargin[[N]] + if(Mixtype(Crv)==1){ + Tmp<- CameraCurve(Crv) + CL<- c(CL,list(Tmp)) + }else{ + if(Mixtype(Crv)==3){ + ObjL<- list() + for (I in Looprange(1,Mixlength(Crv))){ + Tmp1<- Op(I,Crv) + if(Mixtype(Tmp1)==1){ + ObjL<- c(ObjL,list(Tmp1)) + }else{ + ObjL<- c(ObjL,Tmp1) + } + } + Crv<- ObjL + } + for (J in Looprange(1,Mixlength(Crv))){ + Tmp<- CameraCurve(Op(J,Crv)) + CL<- c(CL,list(Tmp)) + } + } + } + if(Mixlength(CL)==1 && Flg==1){ + CL<- Op(1,CL) + } + return(CL) +} + +######################################### +# 11.08.27 +# 14.03.23 Debugged "center" + +Rotate3data<- function(...){ +#Eps=10^(-4) + varargin<-list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + W1<- varargin[[2]] + W2<- varargin[[3]] + C<- c(0,0,0) + if(Nargs>=4){ + C<- varargin[[4]] + } + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } else if(Mixtype(Pd3)==3){ + Tmp<- list() + for (I in Looprange(1,Mixlength(Pd3))){ + Tmp<- c(Tmp,Op(I,Pd3)) + } + Pd3<- Tmp + } + Out<- list() + for (I in Looprange(1,Mixlength(Pd3))){ + PD<- Op(I,Pd3) + Ans<- c() + for (J in Looprange(1,Nrow(PD))){ + if(is.matrix(PD)){ # 11.08.27 + P<- PD[J,] + } + else{ + P<- PD + } + Tmp<- Rotate3pt(P,W1,W2,C) # 14.03.23 + Ans<- rbind(Ans,Tmp) + } # 11.08.27 + rownames(Ans)<- 1:Nrow(Ans) #10.08.16 + Out<- c(Out,list(Ans)) + } + if(Mixlength(Out)==1){ + Out<- Op(1,Out) + } + return(Out) +} + +####################################### + +Rotate3pt<- function(...){ + varargin<-list(...) + Eps<-10^(-4) + Nargs<-length(varargin) + P<- varargin[[1]] + W1<- varargin[[2]] + W2<- varargin[[3]] + C<- c(0,0,0) + if(Nargs>=4){ + C<- varargin[[4]] + } + if(mode(W2)=="numeric" && length(W2)==1){ + Ct<- cos(W2) + St<- sin(W2) + V3<- 1/Norm(W1)*W1 + if(V3[1]==0){ + Tmp<- c(1,0,0) + }else{ + Tmp<- c(0,1,0) + } + W1<- c(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<- c(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<- c(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(Ans) + } + 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<- c(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) + } + if(Norm(Tmp)<Eps){ + Ans<- P + return(Ans) + } + 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<- list(P) + } + Ans<- list() + for (N in Looprange(1,Mixlength(PtL))){ + P<- Op(N,PtL) + if(P[1]==Inf){ + Ans<- c(Ans,list(c(Inf,Inf,Inf))) + next + } + x<- P[1]-C[1]; y=P[2]-C[2]; z=P[3]-C[3] + Tmp1<- ((V1x*Ct+V2x*St)*V1x+(-V1x*St+V2x*Ct)*V2x+V3x^2)*x + Tmp2<- ((V1x*Ct+V2x*St)*V1y+(-V1x*St+V2x*Ct)*V2y+V3x*V3y)*y + Tmp3<- ((V1x*Ct+V2x*St)*V1z+(-V1x*St+V2x*Ct)*V2z+V3x*V3z)*z + X<- Tmp1+Tmp2+Tmp3 + Tmp1<- ((V1y*Ct+V2y*St)*V1x+(-V1y*St+V2y*Ct)*V2x+V3x*V3y)*x + Tmp2<- ((V1y*Ct+V2y*St)*V1y+(-V1y*St+V2y*Ct)*V2y+V3y^2)*y + Tmp3<- ((V1y*Ct+V2y*St)*V1z+(-V1y*St+V2y*Ct)*V2z+V3y*V3z)*z + Y<- Tmp1+Tmp2+Tmp3 + Tmp1<- ((V1z*Ct+V2z*St)*V1x+(-V1z*St+V2z*Ct)*V2x+V3x*V3z)*x + Tmp2<- ((V1z*Ct+V2z*St)*V1y+(-V1z*St+V2z*Ct)*V2y+V3y*V3z)*y + Tmp3<- ((V1z*Ct+V2z*St)*V1z+(-V1z*St+V2z*Ct)*V2z+V3z^2)*z + Z<- Tmp1+Tmp2+Tmp3 + Ans<- c(Ans,list(C+c(X,Y,Z))) + } + if(Mixlength(Ans)==1){ + Ans<- Op(1,Ans) + } + return(Ans) +} + +###################################### + +Setangle<- function(...){ + Eps<- 10^(-6) + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0) { + } + else if(Nargs==1){ + V<- varargin[[1]] + V<- V/Norm(V) + THETA<<- acos(V[3]) + if(abs(sin(THETA))<Eps){ + PHI<<- 0 + } + else{ + PHI<<- acos(V[1]/sin(THETA)) + if(V[2]< -Eps) PHI<<- -PHI + } + } + else{ + PHI<<- varargin[[2]]*pi/180 + THETA<<- varargin[[1]]*pi/180 + } + Out<- paste("theta=",as.character(THETA*180/pi)," phi=", + as.character(PHI*180/pi),sep="") + return (Out) +} + +################################# + +Setpers<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + } + else{ + FocusPoint<<- varargin[[1]] + EyePoint<<- varargin[[2]] + } + F<- as.character(FocusPoint) + E<- as.character(EyePoint) + Out<- paste("Focus = c(",F[1],",",F[2],",",F[3],") , ", + " Eye = c(", E[1],",",E[2],",",E[3],") ",sep="") + return (Out) +} + +################################# + +SetstereoL<- function(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<- c(X+H/2*Y/(X^2+Y^2),Y-H/2*X/(X^2+Y^2),Z) + Out<- Setpers(c(0,0,0),Eye) + return(Out) +} + +################################# + +SetstereoR<- function(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<- c(X-H/2*Y/(X^2+Y^2),Y+H/2*X/(X^2+Y^2),Z) + Out<- Setpers(c(0,0,0),Eye) + return(Out) +} + +############################### + +Sf3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + FdL<- Fullformfunc(varargin[[1]]) + F<- Op(1,FdL) + Xf<- Op(2,FdL) + Yf<- Op(3,FdL) + Zf<- Op(4,FdL) + Urg<- Op(5,FdL) + Vrg<- Op(6,FdL) + Str<- strsplit(Urg,"=",fixed=TRUE)[[1]] + U<- Str[1] + Tmp<- Str[2] + Tmp<- eval(parse(text=Tmp)) + Umin<- Tmp[1]; Umax<- Tmp[2] + Str<- strsplit(Vrg,"=",fixed=TRUE)[[1]] + V<- Str[1] + Tmp<- Str[2] + Tmp<- eval(parse(text=Tmp)) + Vmin<- Tmp[1]; Vmax<- Tmp[2] + Ndu<- 25 ; Ndv<- 25; Np<- c(50,50) + if(Nargs>=3){ + Ndu<- varargin[[2]] + Ndv<- varargin[[3]] + } + if(Nargs>=4){ + Np<- varargin[[4]] + if(mode(Np)=="numeric" && length(Np)==1){ + Np<- c(Np,Np) + } + } + Du<- (Umax-Umin)/Ndu + Dv<- (Vmax-Vmin)/Ndv + PL <- c()#PL <- [] + Assign("Vmin",Vmin,"Vmax",Vmax) + Trgstr<- Assign("t=c(Vmin,Vmax)") + PL <- list() + for (I in Looprange(0,Ndu)){ + U0 <- paste("(",as.character(Umin+I*Du),")",sep="") + Tmp<- gsub(U,U0,Xf,fixed=TRUE) + Tmp1<- gsub(V,"t",Tmp,fixed=TRUE) + Tmp<- gsub(U,U0,Yf,fixed=TRUE) + Tmp2<- gsub(V,"t",Tmp,fixed=TRUE) + Tmp<- gsub(U,U0,Zf,fixed=TRUE) + Tmp3<- gsub(V,"t",Tmp,fixed=TRUE) + Tmp<- paste("c(",Tmp1,",",Tmp2,",",Tmp3,")",sep="") + PD<- Spacecurve(Tmp,Trgstr,paste("N=",as.character(Np[2]))) + PL<- c(PL,list(PD)) + } + Assign("Umin",Umin,"Umax",Umax) + Trgstr<- Assign("t=c(Umin,Umax)") + for (J in Looprange(0,Ndv)){ + V0<- paste("(",as.character(Vmin+J*Dv),")",sep="") + Tmp<- gsub(V,V0,Xf,fixed=TRUE) + Tmp1<- gsub(U,"t",Tmp,fixed=TRUE) + Tmp<- gsub(V,V0,Yf,fixed=TRUE) + Tmp2<- gsub(U,"t",Tmp,fixed=TRUE) + Tmp<- gsub(V,V0,Zf,fixed=TRUE) + Tmp3<- gsub(U,"t",Tmp,fixed=TRUE) + Tmp<- paste("c(",Tmp1,",",Tmp2,",",Tmp3,")") + PD<- Spacecurve(Tmp,Trgstr,paste("N=",as.character(Np[1]))) + PL<- c(PL,list(PD)) + } + return(PL) +} + +################################### + +Skeletonparadata<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Out<- list() + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R<- R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Obj2L<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Tmp<- ProjcoordCurve(Op(I,ObjL)) + Obj2L<- c(Obj2L,list(Tmp)) + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- ProjcoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- Makeskeletondata(Obj2L,Plt2L,R,Eps2) + return(Out) +} + +################################ + +Skeletonpara3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R=R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- ProjcoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Obj3<- Op(I,ObjL) + Tmp<- ProjcoordCurve(Obj3) + Data<- Makeskeletondata(list(Tmp),Plt2L,R,Eps2) + for (J in Looprange(1,Mixlength(Data))){ + Gd<- Op(J,Data) + PtD<- c() + for (J in Looprange(1,Nrow(Gd))){ + Tmp<- Ptcrv(J,Gd) + Tmp1<- Invparapt(Tmp,Obj3) + Tmp1<- Op(1,Tmp1) + PtD<- c(PtD,Tmp1) + } + PtD<- matrix(PtD,ncol=3,byrow=TRUE) + Out<- c(Out,list(PtD)) + } + } + return(Out) +} + +################################# + +#100815 +Skeletonpersdata<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Out<- list() + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R<- R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Obj2L<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Tmp<- CameracoordCurve(Op(I,ObjL)) + Obj2L<- c(Obj2L,list(Tmp)) + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- CameracoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- Makeskeletonpersdata(Obj2L,Plt2L,R,Eps2) + return(Out) +} + +##################### +#100815 +Skeletonpers3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Out<- list() + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R<- R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- CameracoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Obj3<- Op(I,ObjL) + Tmp<- CameracoordCurve(Obj3) + Data<- Makeskeletonpersdata(list(Tmp),Plt2L,R,Eps2) + for (J in Looprange(1,Mixlength(Data))){ + Gd<- Op(J,Data) + PtD<- c() + for (J in Looprange(1,Nrow(Gd))){ + Tmp<- Gd[J,] + Tmp1<- Invperspt(Tmp,Obj3) + Tmp1<- Op(1,Tmp1) + PtD<- rbind(PtD,Tmp1) + } + Out<- c(Out,list(PtD)) + } + } + return(Out) +} + +################################# + +Spacecurve<- function(...){ + Eps<- 10^(-5) + varargin<-list(...) + Nargs<- length(varargin) + Fnstr<- varargin[[1]] + Rgstr<- varargin[[2]] + Range<- c(0,2*pi) + N<- 50 #Numpoints + E<- c() #Exclusions + D<- Inf #Discont (Changed) + for(I in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + StrV<- strsplit(Tmp,"=",fixed=TRUE) + StrV<- StrV[[1]] + Tmp1<- toupper(StrV[1]) + Lhs<- substr(Tmp1,1,1) + Str<- paste(Lhs,"=",StrV[2],sep="") + eval(parse(text=Str)) + } + StrV<- strsplit(Rgstr,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Vname<- StrV[1] + Rng<- eval(parse(text=StrV[2])) + } + else{ + Vname<- Rgstr + Rng<- c(XMIN,XMAX) + } + T1<- Rng[1]; T2<- Rng[2] + Dt<- (T2-T1)/N #17.09.22 + Str<- gsub(Vname,"t",Fnstr) + Str=gsub("[","c(",Str,fixed=TRUE) #17.12.22(2lines) + Str=gsub("]",")",Str,fixed=TRUE) + if(abs(Dt)<Eps){ # 16.12.13 + t=T1 + P=eval(parse(text=Str)) + return(P) + } + P<- c() +# E<- sort(E,decreasing=FALSE) + E<- c(E,Inf) + E<- sort(E,decreasing=FALSE) + Ke<- 1 + for(jj in 1:(N+1)){ + t=T1+(jj-1)*Dt + Pa<- c() + if(t-E[Ke]< Eps){ + Pa<- eval(parse(text=Str)) + } + if(abs(t-E[Ke])<=Eps){ + if(length(P)>0 && P[Nrow(P),1]!=Inf){ + Pa<- c(Inf,Inf,Inf) + } + } + if(t-E[Ke]>Eps){ + Pa<- eval(parse(text=Str)) + Ke<- Ke+1 + } + if(length(Pa)>0){ + if(Pa[1]==Inf){ + P<- rbind(P,Pa) + }else if(length(P)==0){ + P<- rbind(c(),c(Pa)) + } + else{ + Tmp<- P[Nrow(P),] + if(Tmp[1]==Inf){ + P<- rbind(P,Pa) + } + else if( Norm(Tmp-Pa)<D){ + P<- rbind(P,Pa) + } + else{ + P<- rbind(P,c(Inf,Inf,Inf)) + P<- rbind(P,Pa) + } + } + } + } + rownames(P)<- 1:Nrow(P) # 10.08.16 + return(P) +} + +######################################## + +Spaceline<- function(...){ + varargin<- list(...) + Z<- c() + for(I in 1:length(varargin)){ + Data<- varargin[[I]] + if(Mixtype(Data)==1){ + J<- 1 + while (J<=Ncol(Data)){ + Tmp<- Data[J:(J+2)] + Z<-c(Z,Tmp) + J<- J+3 + } + next + } + if(Mixtype(Data)==3){ + Tmp<- list() + for(I in 1:Mixlength(Data)){ + Tmp<- c(Tmp,Op(I,Data)) + } + Data<- Tmp + } + for(J in 1:Mixlength(Data)){ + Tmp<- Op(J,Data) + Z<- c(Z,Tmp) + } + } + Z<- matrix(Z,ncol=3,byrow=TRUE) + return(Z) +} + +################################# + +Translate3data<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + Mv<- varargin[[2]] + if(mode(Mv)=="numerice" && length(Mv)==1){ + Mv<- c(varargin[[2]],varargin[[3]],varargin[[4]]) + } + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } + else if(Mixtype(Pd3)==3){ + Tmp<-list() + for(I in Looprange(1,Mixlength(Pd3))){ + Tmp<- c(Tmp, Op(I,Pd3)) + } + Pd3<- Tmp + } + Out<- list() + for(I in Looprange(1,Mixlength(Pd3))){ + PD<- Op(I,Pd3) + PD<- rbind(c(),PD) + Ans<- c() + for(J in Looprange(1,Nrow(PD))){ + P<- PD[J,] + Tmp<- P+Mv + Ans<- rbind(Ans,Tmp) + } + rownames(Ans)<- 1:Nrow(Ans) + Out<- c(Out,list(Ans)) + } + if(Mixlength(Out)==1){ + Out<- Op(1,Out) + } + return(Out) +} + +############################################### + +Xyzax3data<- function(Xrange,Yrange,Zrange){ + StrV<-strsplit(Xrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1) StrV<- StrV[2] + Tmp<- eval(parse(text=StrV)) + Px<- c(Tmp[1],0,0) + Qx<- c(Tmp[2],0,0) + StrV<-strsplit(Yrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1) StrV<- StrV[2] + Tmp<- eval(parse(text=StrV)) + Py<- c(0,Tmp[1],0) + Qy<- c(0,Tmp[2],0) + StrV<-strsplit(Zrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1) StrV<- StrV[2] + Tmp<- eval(parse(text=StrV)) + Pz<- c(0,0,Tmp[1]) + Qz<- c(0,0,Tmp[2]) + Out<- list(Spaceline(Px,Qx),Spaceline(Py,Qy),Spaceline(Pz,Qz)) + return(Out) +} + +################################### + +Xyzaxparaname<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10.0^(-6) + Dr<- 0.19*1000/2.54/MilliIn + Tmp<- varargin[[Nargs]] + if(Nargs>1 && is.numeric(Tmp)){ + Dr<- Dr*Tmp + Nargs<- Nargs-1 + } + if(mode(varargin[[1]])=="character"){ + Xname<- "x" + Yname<- "y" + Zname<- "z" + Xrange<- varargin[[1]] + Yrange<- varargin[[2]] + Zrange<- varargin[[3]] + StrV<-strsplit(Xrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Xname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Px<- c(Tmp[1],0,0) + Qx<- c(Tmp[2],0,0) + StrV<-strsplit(Yrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Yname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Py<- c(0,Tmp[1],0) + Qy<- c(0,Tmp[2],0) + StrV<-strsplit(Zrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Zname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Pz<- c(0,0,Tmp[1]) + Qz<- c(0,0,Tmp[2]) + }else{ + Data<- varargin[[1]] + Xname<- "x"; Yname<- "y"; Zname<- "z" + if(Nargs>1){ + if(varargin[[2]]!=""){ + Xname<- varargin[[2]] + } + if(varargin[[3]]!=""){ + Yname<- varargin[[3]] + } + if(varargin[[4]]!=""){ + Zname<- varargin[[4]] + } + } + Tmp<- Op(1,Data) + Px<- Tmp[1,]; Qx<- Tmp[2,] + Tmp<- Op(2,Data) + Py<- Tmp[1,] + Qy<- Tmp[2,] + Tmp<- Op(3,Data) + Pz<- Tmp[1,] + Qz<- Tmp[2,] + } + Ph<- Parapt(Px); Qh<- Parapt(Qx); R<-Norm(Ph-Qh) + Kekka<- list() + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Xname) + } + Ph<- Parapt(Py); Qh<- Parapt(Qy); R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Yname) + } + Ph<- Parapt(Pz); Qh<- Parapt(Qz); R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Zname) + } +# return(Kekka) +} + +################################### + +Xyzaxpersname<- function(...){ + varargin<- list(...) + Eps<- 10.0^(-6) + Nargs<- length(varargin) + Dr<- 0.19*1000/2.54/MilliIn + Tmp<- varargin[[Nargs]] + if(Nargs>1 && mode(Tmp)=="numeric"){ + Dr<- Dr*Tmp + Nargs<- Nargs-1 + } + if(mode(varargin[[1]])=="character"){ + Xname<- "x" + Yname<- "y" + Zname<- "z" + Xrange<- varargin[[1]] + Yrange<- varargin[[2]] + Zrange<- varargin[[3]] + StrV<-strsplit(Xrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Xname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Px<- c(Tmp[1],0,0) + Qx<- c(Tmp[2],0,0) + StrV<-strsplit(Yrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Yname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Py<- c(0,Tmp[1],0) + Qy<- c(0,Tmp[2],0) + StrV<-strsplit(Zrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Zname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Pz<- c(0,0,Tmp[1]) + Qz<- c(0,0,Tmp[2]) + }else{ + Data<- varargin[[1]] + Xname<- "x"; Yname<- "y"; Zname<- "z" + if(Nargs>1){ + if(varargin[[2]]!=""){ + Xname<- varargin[[2]] + } + if(varargin[[3]]!=""){ + Yname<- varargin[[3]] + } + if(varargin[[4]]!=""){ + Zname<- varargin[[4]] + } + } + Tmp<- Op(1,Data) + Px<- Tmp[1,]; Qx<- Tmp[2,] + Tmp<- Op(2,Data) + Py<- Tmp[1,] + Qy<- Tmp[2,] + Tmp<- Op(3,Data) + Pz<- Tmp[1,] + Qz<- Tmp[2,] + } + Ph<- Perspt(Px) + Qh<- Perspt(Qx) + R<- Norm(Ph-Qh) + Kekka<- list() + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Xname) + } + Ph<- Perspt(Py) + Qh<- Perspt(Qy) + R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Yname) + } + Ph<- Perspt(Pz) + Qh<- Perspt(Qz) + R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Zname) + } +# return(Kekka) +} + +######################### +#100815 +Zparapt<- function(P){#function Out=Zparapt(P) + x<- P[1]; y<- P[2]; z<- P[3] + Out<- x*cos(PHI)*sin(THETA)+y*sin(PHI)*sin(THETA)+z*cos(THETA) + return(Out) +} + +######################### +#100815 +Zperspt<- function(P){ + 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 + return(X3) +} + +########################################## + + + +########################################## + +# Stat Package + +########################################## + +# 2010.04.12 + +# new + +# Htickmarklower, Vtickmarkleft, HtickmarklowerV +# VtickmarkleftV, Insertcom, Replacecom +# Maketexfile, Formatting +# Drwhistframe, Histplotdata, Drwhistplot + +Htickmarklower<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in Looprange(1, floor((XMAX-GENTEN[1])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((XMIN-GENTEN[1])/Dm),by=-1)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt,GENTEN[2]) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X,Y)) + Tmp2<- Unscaling(c(X,Y-2*MARKLEN)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X,Y-2*MARKLEN)) + Expr(Tmp,"s",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("s",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X,Y-2*MARKLEN)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X,Y)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +Vtickmarkleft<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in 1:floor((YMAX-GENTEN[2])/Dm)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((YMIN-GENTEN[2])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(GENTEN[1],Dt) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X,Y)) + Tmp2<- Unscaling(c(X-2*MARKLEN,Y)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X-2*MARKLEN,Y)) + Expr(Tmp,"w",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("w",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X-2*MARKLEN,Y)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X,Y)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +HtickmarklowerV<- function(Vec,digits=2,nsmall=2) +{ + for (I in 1:length(Vec)){ + Tmp<- Vec[I] + Htickmarklower(Tmp, Formatting(Tmp,digits,nsmall)) + } +} + +HtickLV<- function(...) +{ + HtickmarklowerV(...) +} + +VtickmarkleftV<- function(Vec,digits=2,nsmall=2) +{ + for (I in 1:length(Vec)){ + Tmp<- Vec[I] + Vtickmarkleft(Tmp, Formatting(Tmp,digits,nsmall)) + } +} + +VtickLV<- function(...) +{ + VtickmarkleftV(...) +} + +Insertcom<- function(CmdM,Npos,Str) +{ + if(is.matrix(CmdM)){ + Cmd<- CmdM + } + else{ + C<- paste("Cmd<- ",CmdM) + eval(parse(text=C)) + } + Out<- Cmd[Looprange(1,Npos-1),] + Out<- c(Out,Str) + Tmp<- Cmd[Looprange(Npos,nrow(Cmd)),] + Out<- c(Out,Tmp) + Out<- matrix(Out) + if(!is.matrix(CmdM)){ + C<- paste(CmdM,"<<- Out") + eval(parse(text=C)) + } + return(Out) +} + +Replacecom<- function(CmdM,Npos,Str) +{ + if(is.matrix(CmdM)){ + Cmd<- CmdM + } + else{ + C<- paste("Cmd<- ",CmdM) + eval(parse(text=C)) + } + Out<- Cmd[Looprange(1,Npos-1),] + Out<- c(Out,Str) + Tmp<- Cmd[Looprange(Npos+1,nrow(Cmd)),] + Out<- c(Out,Tmp) + Out<- matrix(Out) + if(!is.matrix(CmdM)){ + C<- paste(CmdM,"<<- Out") + eval(parse(text=C)) + } + return(Out) +} + +Deletecom<- function(CmdM,Npos) +{ + if(is.matrix(CmdM)){ + Cmd<- CmdM + } + else{ + C<- paste("Cmd<- ",CmdM) + eval(parse(text=C)) + } + Out<- Cmd[Looprange(1,Npos-1),] + Tmp<- Cmd[Looprange(Npos+1,nrow(Cmd)),] + Out<- c(Out,Tmp) + Out<- matrix(Out) + if(!is.matrix(CmdM)){ + C<- paste(CmdM,"<<- Out") + eval(parse(text=C)) + } + return(Out) +} + +Maketexfile<- function(commands="",texfile="") +{ + Openfile(texfile) + Execmd(commands) + Closefile() +} + +Formatting<- function(X,D=2,N=2) +{ + if(D>0){ + Xs <- format(X,digits=D,nsmall=N) + } + else{ + Xs<- as.character(X) + } + return(Xs) +} + +################################ + +Boxplotdata1 <-function(DataF1,CenterX,Width,...) +{ + Xr <- Width + Temp <- boxplot(DataF1[1],plot=FALSE) + Stats <- Temp$stats + rownames(Stats) <- c("Lhige","Q1","Q2","Q3","Uhige") + Out <- Temp$out + Lhige <- Stats["Lhige",1] + Uhige <- Stats["Uhige",1] + Q1 <- Stats["Q1",1] + Q2 <- Stats["Q2",1] + Q3 <- Stats["Q3",1] + CenterY <- (Q1+Q3)/2 + C <- c(CenterX,CenterY) + V <- c(0,(Q3-Q1)/2) + G1 <- Framedata(C,Xr/2,V[2]) # box + Temp1 <- c(0,Q1-Lhige) + Temp2 <- c(0,Uhige-Q3) + G2 <- Listplot(C-V,C-V-Temp1) # + G3 <- Listplot(C+V,C+V+Temp2) # + Temp3 <- c(Xr/4,0) + G4 <- Listplot(C-V-Temp1-Temp3,C-V-Temp1+Temp3) # + G5 <- Listplot(C+V+Temp2-Temp3,C+V+Temp2+Temp3) # + Temp4 <- c(0,Q3-Q2) + Temp5 <- c(Xr/2,0) + G6 <- Listplot(C+V-Temp4-Temp5,C+V-Temp4+Temp5) # + G7 <- list() + for(j in Looprange(1,length(Out))){ + G7 <- c(G7,list(c(CenterX, Out[j]))) + } + G7 <- G7[order(Out,decreasing=TRUE)] + list(median=G6,box=G1,uwhisker=G2,lwhisker=G3,lwp=G4,uwp=G5,outliers=G7) +} + +Boxplotdata2 <- function(Data,Ratio, ...) +{ + DataF<- Flattenlist(Data) # 11.07.21(from) + ymin<- Inf + ymax<- -Inf + for(J in 1:length(DataF)){ + Tmp<- DataF[[J]] + ymin<- min(ymin, min(Tmp)) + ymax<- max(ymax,max(Tmp)) + } # 11.07.21(upto) + dy <- ymax-ymin + Setwindow(c(0,XMAX-XMIN),c(ymin-0.1*dy,ymax+0.1*dy)) + R1<- (YMAX-YMIN)/(XMAX-XMIN) + R<- Ratio/R1 + Setscaling(R) + Delta <- XMAX/length(DataF) + W <- 0.6*Delta + PdL <- list() + for(i in 1:length(DataF)){ # 11.07.21 + X <- (0.5+i-1)*Delta + G <- Boxplotdata1(DataF[i],X,W,...) + PdL <- c(PdL,list(G)) + } + G <- Framedata() + Tmp<- list(frame=G) + PdL <-c(PdL,list(Tmp)) + Epsi <-0 + Setwindow(c(XMIN-Epsi,XMAX+Epsi),c(YMIN-Epsi,YMAX+Epsi)) + return(PdL) +} + +Drwboxframe<-function(BoxDataL) +{ + Setorigin(c(XMIN,YMIN)) + Tmp<- Unscaling(c(0.2,0.2)) + Setwindow(c(XMIN-0.2,XMAX),c(YMIN-Tmp[2],YMAX)) + Hako<- BoxDataL$plotdata + title<- BoxDataL$title + cap<- BoxDataL$cap + ylab<- BoxDataL$ylab + if(mode(title)!="list") title<- list(title) + if(mode(cap)!="list") cap<- list(cap) + if(mode(ylab)!="list") ylab<- list(ylab) + if(length(title)==0) title<- list("") + if(length(title)==1) title<- c(title, list("n")) + if(length(title)==2) title<- c(title, list("")) + if(length(cap)==0) cap<- list("") + if(length(cap)==1) cap<- c(cap, list("n"),0) # 11.11.27 + if(length(cap)==2) cap<- c(cap, 0) # 11.11.27 + if(length(ylab)==0) ylab<- list("") + if(length(ylab)==1) ylab <- c(ylab, list("n")) + if(length(ylab)==2) ylab<- c(ylab, list("")) + Temp <- Hako[[length(Hako)]] + Drwline(Temp$frame) + Fontsize(cap[[2]]) + for(i in Looprange(1,length(Hako)-1)){ + Temp <- Hako[[i]] + attach(Temp) + Dashline(uwhisker,lwhisker) + Drwline(median,2) + Drwline(box,lwp,uwp) + Drwpt(outliers,0) + X <- uwhisker[1,1] + detach(Temp) + Htickmarklower(X) + if(nchar(cap[[1]])<1) next # 2011.03.08 + if(length(cap)==2 || cap[[3]]==0){ + pos<- 1 + if(length(cap)>=4) pos<- cap[[4]] + Tmp<- paste("s",as.character(pos),sep="") + Letter(c(X,YMIN),Tmp, Op(i,cap[[1]])) + } + else{ + rotate<- cap[[3]] + if(length(cap)==3){ + pos<- 0 + } + else{ + pos<- cap[[4]] + } + Temp1 <- rotate*pi/180 + Temp <- c(cos(Temp1),sin(Temp1)) + Letterrot(c(X,YMIN-pos),Temp,Op(i,cap[[1]])) + } + } + if(nchar(ylab[[1]])>0){ + Fontsize(ylab[[2]]) + Tmp1<- ylab[[1]] + Tmp3<- ylab[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Letter(c(XMIN, YMAX),"n2",Tmp1) + Fontsize("n") + } + if(nchar(title[[1]])>0){ + Fontsize(title[[2]]) + Tmp1<- title[[1]] + Tmp3<- title[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Letter(c((XMIN+XMAX)/2,YMAX),"n2",Tmp1) + } + Fontsize("n") +} + +Drwboxplot<- function(dataf,var,size, + title=list(""), cap=list(colnames(dataf)), + ylab=list(""), ptsize=5,plot=TRUE,...) + #Return : title,cap,ylab,commands,plotdata,info +{ + Tmp <- boxplot(dataf, plot=FALSE, ...) + Stats <- Tmp$stats + DataF<- Flattenlist(dataf) # 11.07.21(from) + ymin<- Inf + ymax<- -Inf + for(J in 1:length(DataF)){ + Tmp<- DataF[[J]] + ymin<- min(ymin, min(Tmp)) + ymax<- max(ymax,max(Tmp)) + } # 11.07.21(upto) + Hako<- Boxplotdata2(dataf, size[2]/size[1], ...) + if(plot){ + Windisp(Hako) + } + Tmp<- Formatting(size[1]/(XMAX-XMIN),5,5) + unit<- paste(Tmp,"cm",sep="") + Setunitlen(unit) + Exstr<- c( + "","", + paste("Beginpicture(","'",unit,"')",sep=""), + paste("Setpt(",as.character(ptsize),")",sep=""), + "","", + paste("Drwboxframe(",var,")",sep=""), + paste("VtickLV(c(",as.character(ymin),",", as.character(ymax),"),0,0)",sep=""), + "","","","", + "Setpt(1)", + "Endpicture(0)" + ) + Exstr<- matrix(Exstr) + Xpos<- c() + for(i in Looprange(1,length(Hako)-1)){ + Temp <- Hako[[i]] + Temp1 <- Temp[[5]] + Xpos <- c(Xpos,Temp1[1,1]) + } + Info<- list(stats=Stats,window=matrix(c(XMIN,XMAX,YMIN,YMAX),nrow=2),xpos=Xpos) + Tmp<- paste(var,"<<- ", + "list(title=title,cap=cap,ylab=ylab,", + "commands=Exstr,plotdata=Hako,info=Info)",sep="") + eval(parse(text=Tmp)) +} + + +########################################### + +Histplotdata <- function(DataV,Ratio,freq=TRUE,densplot=FALSE,...) +# 10.12.07 freq +{ + Temp <- hist(DataV,plot=FALSE,...) + Breaks <- Temp$breaks + Counts <- Temp$counts + Density <- Temp$density + Mids <- Temp$mids + if(!freq){ + Data<- Density + } + else{ + Data<- Counts + } + Ghist <- list() + for(i in Looprange(1,length(Breaks)-1)){ + Tmp1 <- c(Breaks[i],Breaks[i+1]) + Tmp2 <- c(0,Data[i]) + G1 <- Framedata(Tmp1,Tmp2) #bar + Ghist <- c(Ghist,list(G1)) + } + Bin <- Breaks[2]-Breaks[1] + Eps <- 0.7*Bin # 0.7 times Bin + Temp1 <- c(min(Breaks)-Eps,max(Breaks)+Eps) # Put Eps at both sides + Temp2 <- c(0,max(Data)*1.02) + Setwindow(Temp1,Temp2) + Setorigin(c(Temp1[1],0)) + R1<- (YMAX-YMIN)/(XMAX-XMIN) + R<- Ratio/R1 + Setscaling(R) + VEps <- 0.05*(XMAX-XMIN)/5 + Temp1<- Temp1-c(VEps,0) + Temp2<- Temp2-1/R*c(VEps,0) + Setwindow(Temp1,Temp2) + Fpt <- c(Mids[1]-Bin,0) + Lpt <- c(Mids[length(Mids)]+Bin,0) + Fp <- matrix(Fpt,nrow=1) + for(i in Looprange(1,length(Mids))){ + Tmp <- c(Mids[i],Data[i]) + Fp <- rbind(Fp,Tmp) + } + Fp <- rbind(Fp,Lpt) + rownames(Fp)<- c(1:nrow(Fp)) + if(densplot){ + Temp <- density(DataV) + X <- matrix(Temp$x) + Y <- matrix(Temp$y) + Gdens <- cbind(X,Y) + } + else{ + Gdens <- list() + } + list(plotdata=list(histplot=Ghist,fpplot=list(Fp),densityplot=list(Gdens)), + breaks=Breaks,counts=Counts,density=Density,mids=Mids) +} + +Drwhistframe<-function(HistDataL) +{ + title<- HistDataL$title + xlab<- HistDataL$xlab + ylab<- HistDataL$ylab + if(mode(title)!="list") title<- list(title) + if(mode(xlab)!="list") cap<- list(xlab) + if(mode(ylab)!="list") cap<- list(ylab) + if(length(title)==0) title<- list("") + if(length(title)==1) title<- c(title, list("n")) + if(length(title)==2) title<- c(title, list("")) + if(length(xlab)==0) xlab<- list("") + if(length(xlab)==1) xlab<- c(xlab, list("n")) + if(length(xlab)==2) xlab<- c(xlab, list("")) + if(length(xlab)==3) xlab<- c(xlab, list(8)) + if(length(ylab)==0) ylab<- list("") + if(length(ylab)==1) ylab<- c(ylab, list("n")) + if(length(ylab)==2) ylab<- c(ylab, list("")) + if(nchar(title[[1]])>0){ + Fontsize(title[[2]]) + Tmp1<- title[[1]] + Tmp3<- title[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Letter(c((XMIN+XMAX)/2,YMAX),"n2",Tmp1) + Fontsize("n") + } + if(nchar(xlab[[1]])>0){ + Fontsize(xlab[[2]]) + Tmp1<- xlab[[1]] + Tmp3<- xlab[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Tmp4<- paste("s",as.character(xlab[[4]]),sep="") + Letter(c((XMIN+XMAX)/2,YMIN),Tmp4,Tmp1) + Fontsize("n") + } + if(nchar(ylab[[1]])>0){ + Fontsize(ylab[[2]]) + Tmp1<- ylab[[1]] + Tmp3<- ylab[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Tmp<- Setorigin() + Letter(c(Tmp[1], YMAX),"n2",Tmp1) + Fontsize("n") + } + + Setax(2," ") + Setax(4," ") + Setax(6," ") +} + +Drwhistplot<- function(datav,var,size,freq=TRUE, + title=list(""), xlab=list(""), ylab=list(""), + plot=TRUE,densplot=FALSE,fpplot=TRUE,...) + #Output : title,xlab,ylab,commands,plotdata,info +{ + H <- Histplotdata(datav, size[2]/size[1], freq=freq,densplot=densplot,...) + Pd<- H$plotdata + Ghist <- list(histplot=Pd$histplot,densityplot=Pd$densityplot) # 10.12.07 + if(fpplot){ + Ghist<- c(Ghist,list(fpplot=Pd$fpplot)) + } + if(plot){ + Windisp(Ghist) + } + Tmp<- Formatting(size[1]/(XMAX-XMIN),5,5) + unit<- paste(Tmp,"cm",sep="") + Setunitlen(unit) + Infostr<- paste(var,"$info",sep="") + Brkstr<- paste(Infostr,"$breaks",sep="") + Midstr<- paste(Infostr,"$mids",sep="") + if(!freq){ + Digits<- ",2,2" + Denstr<- paste(Infostr,"$density",sep="") + } + else{ + Digits<- ",0,0" + Denstr<- paste(Infostr,"$counts",sep="") + } + + if(fpplot) Prefp<- "" else Prefp<- "#" + Exstr<- c( + "","", + paste("Beginpicture(","'",unit,"')",sep=""), + "","", + paste("Drwhistframe(",var,")",sep=""), + paste("HtickLV(",Midstr,",1,1)",sep=""), + paste("VtickLV(max(",Denstr,")",Digits,")",sep=""), + paste("Drwline(",var,"[['plotdata']]","$histplot)",sep=""), + paste(Prefp,"Dashline(",var,"[['plotdata']]","$fpplot)",sep=""), + paste("#Drwline(",var,"[['plotdata']]","$densityplot,2)",sep=""), + "","","","", + "Endpicture(1)" + ) + Exstr<- matrix(Exstr) + Info<- list(breaks=H$breaks,counts=H$counts,density=H$density,mids=H$mids, + window=matrix(c(XMIN,XMAX,YMIN,YMAX),nrow=2)) + Tmp<- paste(var,"<<- ", + "list(title=title,xlab=xlab,ylab=ylab,", + "commands=Exstr,plotdata=Ghist,info=Info)",sep="") + eval(parse(text=Tmp)) +} + +########################## +#17.09.30 + +Bezierpt<- function(t,Ptlist,Ctrlist){ + if(length(Ptlist)==6){ + P0=Ptlist[1:3] + P3=Ptlist[4:6] + P1=Ctrlist[1:3] + if(length(Ctrlist)==3){ + P2=P3 + flg3=0 + }else{ + P2=Ctrlist[4:6] + flg3=1 + } + }else{ + P0=Ptlist[1:2] + P3=Ptlist[3:4] + P1=Ctrlist[1:2] + if(length(Ctrlist)==2){ + P2=P3 + flg3=0 + }else{ + P2=Ctrlist[3:4] + flg3=1 + } + } + 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){ + Out=P7 + }else{ + Out=P9 + } + return(Out) +} + +Bezier<- function(...){ + varargin<- list(...) + Nargs=length(varargin) + Ptlist=varargin[[1]] + Ctrlist=varargin[[2]] + Num=10 + for(J in Looprange(3,Nargs)){ + Tmp=varargin[[J]] + K=strsplit(Tmp,'=',fixe=TRUE) + K=K[[1]] + Tmp1=substring(K[1],1,1) + Lhs=toupper(Tmp1) + if(Lhs=="N"){ + Num=eval(parse(text=K[2])) + } + } + if(length(Num)==1){ + Num=rep(Num,length(Ctrlist)) #17.10.08 + } + Out=c() + for(ii in Looprange(1,length(Ctrlist))){ + Tmp1=c(Ptlist[[ii]],Ptlist[[ii+1]]) + Tmp2=Ctrlist[[ii]] + if(ii==1){ + St=0 + }else{ + St=1 + } + for(J in Looprange(St,Num[ii])){ + Tmp=Bezierpt(J/Num[ii],Tmp1,Tmp2) + Out=Appendrow(Out,Tmp) + } + } + return(Out) +} + +####################### +# 17.10.02 + +Connectseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Pdata=varargin[[1]] + Eps=10^(-4) + if(Nargs>=2){ + Eps=varargin[[2]] + } + if(is.matrix(Pdata)){ + Din=Dataindex(Pdata) + tmp1=list() + for(J in 1:nrow(Din)){ + tmp=Pdata[Din[J,1]:Din[J,2],] + tmp1=c(tmp1,list(tmp)) + } + Pdata=tmp1 + } + PlotL=list(Op(1,Pdata)) + VI=Looprange(2,length(Pdata)) + while(length(VI)>0){ + Qd=Op(Length(PlotL),PlotL) + Ah=Op(1,Qd); Ao=Op(Length(Qd),Qd) + Flg=0 + for(J in 1:length(VI)){ + Tmp1=Op(VI[J],Pdata) + P=Op(1,Tmp1); Q=Op(Length(Tmp1),Tmp1) + if(Norm(P-Ao)<Eps){ + Tmp=Tmp1[Looprange(2,Length(Tmp1)),] + if(Length(Tmp)>0){ + Qd=Appendrow(Qd,Tmp) + } + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + if(Norm(Q-Ao)<Eps){ + Tmp=Tmp1[(nrow(Tmp1)-1):1,] + Qd=Appendrow(Qd,Tmp) + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + if(Norm(P-Ah)<Eps){ + Tmp=Tmp1[2:nrow(Tmp1),] + Qd=Appendrow(Tmp,Qd) + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + if(Norm(Q-Ah)<Eps){ + Tmp=Tmp1[(nrow(Tmp1)-1):1,] + Qd=Appendrow(Tmp,Qd) + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + } + if(Flg==0){ + PlotL=c(PlotL,Pdata[VI[1]]) + VI=VI[-1] + } + } + return(PlotL) +} + +Makevaltable<- function(MS){ + Eps=10^(-6) + Nargs=length(MS) + Fstr=Op(1,MS) + Tmp=Op(2,MS) + Tmp1=strsplit(Tmp,"=",fixed=TRUE) + Tmp1=Tmp1[[1]] + Xname=Tmp1[1] + Xrange=eval(parse(text=Tmp1[2])) + Tmp=Op(3,MS) + Tmp1=strsplit(Tmp,"=",fixed=TRUE) + Tmp1=Tmp1[[1]] + Yname=Tmp1[1] + Yrange=eval(parse(text=Tmp1[2])) + Tmp=gsub(Xname,"x",Fstr) + Fstr=gsub(Yname,"y",Tmp) + Tmp=grep(Xname,Fstr) + if(length(Tmp)==0){ + Fstr=paste(Fstr,'+0*x',sep="") + } + Mdv=50 + Ndv=50 + if(Nargs>=4){ + Tmp=Op(4,MS) + if(Length(Tmp)>1){ #18.02.09 + Mdv=Op(1,Tmp) + Ndv=Op(2,Tmp) + }else{ + Mdv=Tmp + if(Nargs==4){ + Ndv=Mdv + }else{ + Tmp1=Op(5,MS) + if((is.numeric(Tmp1))&&(length(Tmp1)==1)){ + Ndv=Tmp1 + }else{ + Ndv=Mdv + } + } + } + } + X1=Xrange[1]; X2=Xrange[2] + Y1=Yrange[1]; Y2=Yrange[2] + Dx=(X2-X1)/Mdv + Dy=(Y2-Y1)/Ndv + Xval=c() + Tmp=X1 + for(ii in 1:(Mdv+1)){ + Tmp=X1+(ii-1)*Dx + Xval=c(Xval,Tmp) + } + Yval=c() + Tmp=Y1 + for(jj in 1:(Ndv+1)){ + Tmp=Y1+(jj-1)*Dy + Yval=c(Yval,Tmp) + } + Zval=matrix(nrow=Ndv+1,ncol=Mdv+1) + I=1 + for(y in Yval){ + J=1 + for(x in Xval){ + Zval[I,J]=eval(parse(text=Fstr)) + J=J+1 + } + I=I+1 + } + return(list(Zval,Xval,Yval)) +} + +Implicitplot<- function(...){ + varargin=list(...) + Eps0=10^(-4) + Nargs=length(varargin) + Fstr=varargin[[1]] + if(is.list(Fstr)){ + MS=Fstr + Tmp=Makevaltable(MS) + Zval=Tmp[[1]]; Xval=Tmp[[2]]; Yval=Tmp[[3]] + }else if(is.character(Fstr)){ +# MS=list() +# for(I in 1:Nargs){ +# MS=c(MS,varargin[I]) +# } +# Tmp=Makevaltable(MS) + Tmp=Makevaltable(varargin) #18.02.24 + Zval=Tmp[[1]]; Xval=Tmp[[2]]; Yval=Tmp[[3]] + }else{ + Zval=varargin[[1]] + Xval=varargin[[2]] + Yval=varargin[[3]] + } + Out=c() + for(J in Looprange(1,length(Yval)-1)){ + for(I in Looprange(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=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + if(abs(VL[K])<=Eps0){ + QL=Appendrow(QL,PL[K,]) + }else if(VL[K]>Eps0){ + if(VL[K+1]< -Eps0){ + Tmp=1/(VL[K]-VL[K+1])*(-VL[K+1]*PL[K,]+VL[K]*PL[K+1,]) + QL=Appendrow(QL,Tmp) + } + }else{ + if(VL[K+1]>Eps0){ + Tmp=1/(-VL[K]+VL[K+1])*(VL[K+1]*PL[K,]-VL[K]*PL[K+1,]) + QL=Appendrow(QL,Tmp) + } + } + } + if(Length(QL)==2){ + Out=Appendrow(Out,c(Inf,Inf)) + Out=Appendrow(Out,QL) + } + } + } + Out=Out[2:nrow(Out),] + if(Length(Out)>0){ + Out=Connectseg(Out) + }else{ + Out=c() + } + return(Out) +} + +######################### +# 17.10.06 + +Deqdata=function(deq,rng,initt,initf,Num){ + Eps=10^(-3) + inf=10^3 + tmp=strsplit(deq,"=")[[1]] + tmp1=gsub("`","",tmp[1],fixed=TRUE) + tmp1=substring(tmp1,3,nchar(tmp1)-1) + Xname=strsplit(tmp1,",")[[1]] + func=tmp[2] + for(J in 1:(length(Xname))){ + tmp1=paste("X[",as.character(J),"]",sep="") + func=gsub(Xname[J],tmp1,func,fixed=TRUE) + } + tmp=strsplit(rng,"=")[[1]] + tname=tmp[1] + tmp=eval(parse(text=tmp[2])) + t1=tmp[1] + t2=tmp[2] + tmp=paste("function(",tname,",X){",func,"}",sep="") + funP=eval(parse(text=tmp)) + tmp=paste("function(",tname,",X){-",func,"}",sep="") + funN=eval(parse(text=tmp)) + dt=(t2-t1)/Num + tt=initt + X0=initf + pdL=c(tt,X0) + for(J in Looprange(1,floor((t2-initt)/dt))){ + kl1=dt*funP(tt,X0) + kl2=dt*funP(tt+dt/2,X0+kl1/2) + kl3=dt*funP(tt+dt/2,X0+kl2/2) + kl4=dt*funP(tt+dt,X0+kl3) + X0=X0+(kl1+2*kl2+2*kl3+kl4)/6 + tt=initt+J*dt + tmp=c(tt,X0) + if(Norm(tmp)>inf){break} + pdL=Appendrow(pdL,tmp) + } + tt=initt + X0=initf + for(J in Looprange(1,floor((initt-t1)/dt))){ + kl1=dt*funN(tt,X0) + kl2=dt*funN(tt+dt/2,X0+kl1/2) + kl3=dt*funN(tt+dt/2,X0+kl2/2) + kl4=dt*funN(tt+dt,X0+kl3) + X0=X0+(kl1+2*kl2+2*kl3+kl4)/6 + tt=initt-J*dt + tmp=c(tt,X0) + if(Norm(tmp)>inf){break} + pdL=Appendrow(tmp,pdL) + } + pdL +} + +Deqplot=function(...){ + varargin=list(...) + deq=varargin[[1]] + rng=varargin[[2]] + initt=varargin[[3]] + initf=varargin[[4]] + Num=50 + Sel=c(1,2) + for(J in Looprange(5,length(varargin))){ + tmp1=varargin[[J]] + if(is.character(tmp1)){ + tmp=strsplit(tmp1,"=")[[1]] + Num=eval(parse(text=tmp[2])) + }else{ + SeL=tmp1 + } + } + pdL=Deqdata(deq,rng,initt,initf,Num) + pdL=pdL[,SeL] +} + + +############## obj ############### + +Openobj<- function(Fnm){ + OBJFMT<<- "%7.4f" + NPOINT<<- 0 + NNORM<<- 0 + OBJSCALE<<- 1 + OBJFIGNO<<- 0 + OBJJOIN<<- 0 + Wfile<<- Fnm + Tmp=grep(".obj",Fnm,fixed=TRUE) + if(length(Tmp)==0){ + if(nchar(Fnm)>0){ + Wfile<<- paste(Fnm,".obj",sep="") + } + } + cat("",file=Wfile,sep="") + Wfile +} + +Closeobj<- function(){ + Wfile="" +} + +Writeobjpoint<- function(P){ + X=sprintf(OBJFMT,P[1]*OBJSCALE) + Y=sprintf(OBJFMT,P[2]*OBJSCALE) + Z=sprintf(OBJFMT,P[3]*OBJSCALE) + Str=paste("v",X,Y,Z,sep=" ") + Printobjstr(Str) + NPOINT<<- NPOINT+1 + return(NPOINT) +} + +Printobjstr<- function(Str){ + cat(Str,"\n",sep="",file=Wfile,append=TRUE) +} + +Objname<- function(){ + if(OBJJOIN==0){ + OBJFIGNO<<- OBJFIGNO+1 + Gname=paste("ketfig",as.character(OBJFIGNO),sep="") + Printobjstr(paste("# ",Gname,sep="")) + Printobjstr(paste("g ",Gname,sep="")) + } +} + +Objjoin<- function(...){ + varargin=list() + if(length(varargin)>0){ + OBJJOIN<<- abs(sign(varargin[[1]])) + } + OBJJOIN +} + +Objsurf<- function(...){ #17.12.18 + Args<- list(...) + Nargs<- length(Args) + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Rf=Args[[1]] + N=2 + Mg=0; Ng=0 + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + U=Args[[N]] + Mg=length(U)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + }else{ + Ag=Args[N]; Bg=Args[N+1] + N=N+2 + } + }else{ + Tmp0=Args[[N]] + Tmp=grep("=",Tmp0,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1=strsplit(Tmp0,"=") + Tmp0=Tmp1[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + } + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + V=Args[[N]] + Ng=length(V)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + }else{ + Cg=Args[[N]]; Dg=Args[[N+1]] + N=N+2 + } + }else{ # the case of is.character(Args[[N]]) + Tmp0=Args[[N]] + Tmp=grep("=",Tmp0,fixed=TRUE) + if(length(Tmp)>0){ + Tmp2=strsplit(Tmp0,"=") + Tmp0=Tmp2[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + } + if(Mg==0){ + Mg=Args[[N]] + N=N+1 + U=c() + for(J in Looprange(1,Mg+1)){ + U=c(U,Ag+(J-1)/Mg*(Bg-Ag)) + } + } + if(Ng==0){ + Ng=Args[[N]] + V=c() + for(K in Looprange(1,Ng+1)){ + V=c(V,Cg+(K-1)/Ng*(Dg-Cg)) + } + } + Objname() + PL=list() + for(J in Looprange(1,Mg+1)){ + for(K in Looprange(1,Ng+1)){ + P=Rf(U[J],V[K]) + Np=Writeobjpoint(P) + PL=c(PL,list(c(P,Np))) + } + } + Idx=1+(Ng+1)*(0:Mg) + Pus=PL[Idx] + Idx=(Ng+1)*(1:(Mg+1)) + Pue=PL[Idx] + Idx=1:(Ng+1) + Pvs=PL[Idx] + Idx=((Ng+1)*Mg+1):((Ng+1)*(Mg+1)) + Pve=PL[Idx] + Printobjstr("vt 0 0") + Printobjstr("vt 1 0") + Printobjstr("vt 1 1") + Printobjstr("vt 0 1") + for(J in Looprange(1,Mg)){ + for(K in Looprange(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=="+"){ + Str=paste("f ",P1,"/1/",N1," ",P2,"/2/",N2," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P4,"/4/",N4,sep="") + }else{ + Str=paste("f ",P1,"/1/",N1," ",P4,"/4/",N4," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P2,"/2/",N2,sep="") + } + Printobjstr(Str) + } + } + list(U,V,Pus,Pue,Pvs,Pve) +} + +Objthicksurf<- function(...){ + Args=list(...) + Nargs=length(Args) + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Selsurf=substring(Sel,1,1) + Selside=c("0","0","0","0") + Tmp=grep("w",Sel,fixed=TRUE) + if(length(Tmp)>0){ + Selside[1]="w" + } + Tmp=grep("e",Sel,fixed=TRUE) + if(length(Tmp)>0){ + Selside[2]="e" + } + Tmp=grep("s",Sel,fixed=TRUE) + if(length(Tmp)>0){ + Selside[3]="s" + } + Tmp=grep("n",Sel,fixed=TRUE) + if(length(Tmp)>0){ + Selside[4]="n" + } + Nfth=Args[[Nargs-2]] + Thick1=Args[[Nargs-1]] + Thick2=Args[[Nargs]] + Nargs=Nargs-3 + Rfth=Args[[1]] + N=2 + Mg=0; Ng=0 + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + U=Args[[N]] + Mg=length(U)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + }else{ + Ag=Args[[N]]; Bg=Args[[N+1]] + N=N+2 + } + }else{ + Tmp0=Args[[N]] + Tmp=strsplit(Tmp0,"=",fixe=TRUE) + if(length(Tmp)>0){ + Tmp0=Tmp[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + } + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + V=Args[[N]] + Ng=length(V)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + }else{ + Cg=Args[[N]]; Dg=Args[[N+1]] + N=N+2 + } + }else{ + Tmp0=Args[[N]] + Tmp=strsplit(Tmp0,"=",fixed=TRUE) + if(length(Tmp)>0){ + Tmp0=Tmp[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + } + if(Mg==0){ + Mg=Args[[N]] + N=N+1 + U=c() + for(J in Looprange(1,Mg+1)){ + U=c(U,Ag+(J-1)/Mg*(Bg-Ag)) + } + } + if(Ng==0){ + Ng=Args[[N]] + V=c() + for(K in Looprange(1,Ng+1)){ + V=c(V,Cg+(K-1)/Ng*(Dg-Cg)) + } + } + Objname() + Join=OBJJOIN + OBJJOIN<<- 1 + F1=function(u,v){ + Rfth(u,v)+Thick1*Nfth(u,v) + } + F2=function(u,v){ + Rfth(u,v)+Thick2*Nfth(u,v) + } + Dt1=Objsurf(F1,U,V,Selsurf) + if(Selsurf=="+"){ + Tmp="-" + }else{ + Tmp="+" + } + Dt2=Objsurf(F2,U,V,Tmp); + Out=list(Dt1,Dt2); + + if(Selside[1]!="0"){ + Dt=Objrecs(Op(3,Dt1),Op(3,Dt2),Selside[1]) + Out=c(Out,list(Dt)) + } + if(Selside[2]!="0"){ + Dt=Objrecs(Op(4,Dt1),Op(4,Dt2),Selside[2]) + Out=c(Out,list(Dt)) + } + if(Selside[3]!="0"){ + Dt=Objrecs(Op(5,Dt1),Op(5,Dt2),Selside[3]) + Out=c(Out,list(Dt)) + } + if(Selside[4]!="0"){ + Dt=Objrecs(Op(6,Dt1),Op(6,Dt2),Selside[4]) + Out=c(Out,list(Dt)) + } + OBJJOIN<<- Join +} + +Objrecs<- function(...){ + Eps=10^(-6) + Args=list(...) + Nargs=length(Args) + Tmp=Args[[1]] + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23upto + PL1=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL1=c(PL1,list(Tmp[K,])) + } + } + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Objname() + for(J in Looprange(1,length(PL1))){ + P=PL1[[J]] + if((length(P)<4) || (P[4]==0)){ + Np=Writeobjpoint(P) + PL1[[J]]=c(P[1:3],Np) + } + } + Tmp=Args[[2]] + if((is.numeric(Tmp)) && (length(Tmp)==1)){ + Drv=Tmp + Len=Norm(Drv) + PL2=list() + for(J in Looprange(1,length(PL1))){ + Tmp=PL1[[J]] + P=Tmp[1:3]+Drv + Np=Writeobjpoint(P) + PL2=c(PL2,list(c(P[1:3],Np))) + if(J<length(PL1)){ + Vec=PL1[[J+1]]-PL1[[J]] + if(Norm(Vec)>Eps){ + Tmp1=Crossprod(Drv,Vec) + Tmp2=Crossprod(Tmp1,Vec) + Tmp3=Dotprod(Tmp2,Drv) + if(Tmp3<-Eps){ + Tmp2=-Tmp2 + } + Drv=Len/Norm(Tmp2)*Tmp2 + } + } + } + }else{ + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23upto + PL2=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL2=c(PL2,list(Tmp[K,])) + } + } + for(J in Looprange(1,length(PL2))){ + P=PL2[[J]] + if((length(P)<4) || (P[4]==0)){ + Np=Writeobjpoint(P) + PL2[[J]]=c(P[1:3],Np) + } + } + } + Printobjstr("vt 0 0") + Printobjstr("vt 1 0") + Printobjstr("vt 1 1") + Printobjstr("vt 0 1") + for(J in Looprange(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=="+"){ + Str=paste("f ",P1,"/1/",N1," ",P2,"/2/",N2," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P4,"/4/",N4,sep="") + }else{ + Str=paste("f ",P1,"/1/",N1," ",P4,"/4/",N4," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P2,"/2/",N2,sep="") + } + Printobjstr(Str) + } + list(PL1,PL2) +} + +Objpolygon<- function(...){ + Eps=10^(-6) + Args=list(...) + Nargs=length(Args) + Tmp=Args[[1]] + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23upto + PL=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL=c(PL,list(Tmp[K,])) + } + } + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Objname() + for(J in Looprange(1,length(PL))){ + P=PL[[J]] + if((length(P)<4) || (P(4)==0)){ + Np=Writeobjpoint(P) + PL[[J]]=c(P[1:3],Np) + } + } + if(Nargs==1){ + Tmp=PL[[1]] + Cen=Tmp[1:3] + Nc=Tmp[4] + }else{ + Tmp=Args[[2]] + if(length(Tmp)==1){ + Tmp1=PL[[Tmp]] + Cen=Tmp1[1:3] + Nc=Tmp[4] + }else{ + Cen=Tmp + Nc=Writeobjpoint(Cen) + } + } + for(J in Looprange(1,length(PL))){ + if(J<length(PL)){ + Je=J+1 + }else{ + Je=1 + } + Pt1=Cen + PLj=PL[[J]]; PLje=PL[[Je]] + Pt2=PLj[1:3]; Pt3=PLje[1:3] + if(Norm(Crossprod(Pt2-Pt1,Pt3-Pt1))<Eps){ + next + } + P1=sprintf("%1d",Nc) + P2=sprintf("%1d",PLj[4]) + P3=sprintf("%1d",PLje[4]) + if(Sel=="+"){ + Str=paste("f",P1,P2,P3,"",sep=" ") + }else{ + Str=paste("f",P1,P3,P2,"",sep=" ") + } + Printobjstr(Str) + } + PL +} + +Objpolyhedron<- function(Vertex,Face){ + OBJFIGNO<<- OBJFIGNO+1 + Ninit=NPOINT + Objname() + for(N in Looprange(1,length(Vertex))){ + P=Vertex[[N]] + Np=Writeobjpoint(P) + Vertex[[N]]=c(P[1:3],Np) + } + for(N in Looprange(1,length(Face))){ + F=Face[[N]]+Ninit + Face[[N]]=F + Str="f" + for(J in Looprange(1,length(F))){ + P=sprintf("%1d",F[J]) + Str=paste(Str,P,sep=" ") + } + Printobjstr(Str) + } + list(Vertex,Face) +} + +Objcurve<- function(...){ + Eps=10^(-6) + Args=list(...) + Nargs=length(Args) + Tmp=Args[[1]] + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23upto + PL=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL=c(PL,list(Tmp[K,])) + } + } + Closed=Norm(PL[[length(PL)]]-PL[[1]])<Eps + Pstr="xy" + Tmp=Args[[Nargs]] + if(is.character(Tmp)){ + Pstr=Tmp + Nargs=Nargs-1 + } + Sz=0.1 + Np=4 + if(Nargs>=2){ + Sz=Args[[2]] + } + if(Nargs>=3){ + Np=Args[[3]] + } + Assign("Sz",Sz) + if(Pstr=="xy"){ + Vz=c(0,0,1) + Fs=Assign("c(Sz*cos(t),Sz*sin(t),0)") + } + if(Pstr=="yz"){ + Vz=c(1,0,0) + Fs=Assign("c(0,Sz*cos(t),Sz*sin(t))") + } + if(Pstr=="zx"){ + Vz=c(0,1,0) + Fs=Assign("c(Sz*sin(t),0,Sz*cos(t))") + } + Gc0=Spacecurve(Fs,"t=c(0,2*pi)",paste("Num=",as.character(Np),sep="")) + P=PL[[1]]; Q=PL[[2]]; R=PL[[length(PL)-1]] + PQ1=Q-P + if(!Closed){ + PQ2=PQ1 + }else{ + PQ2=P-R + } + 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){ + Vj=Vz + } + Gc1=Rotate3data(Gc0,Vj,Theta) + CL=list(Translate3data(Gc1,P)) + for(J in Looprange(2,length(PL)-1)){ + P=PL[[J]]; Q=PL[[J+1]] + PQ2=Q-P + if(Norm(PQ2)<Eps){ + next + } + 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){ + Vj=Vp1 + } + Gc2=Rotate3data(Gc1,Vj,Theta) + CL=c(CL,list(Translate3data(Gc2,P))) + PQ1=PQ2 + Vp1=Vp2 + Gc1=Gc2 + } + if(!Closed){ + Vp2=(Q-P)/Norm(Q-P) + Theta=acos(min(Dotprod(Vp1,Vp2),1)) + Vj=Crossprod(Vp1,Vp2) + if(Norm(Vj)<Eps){ + Vj=Vp1 + } + Gc3=Rotate3data(Gc1,Vj,Theta) + CL=c(CL,list(Translate3data(Gc3,Q))) + } + Objname() + Join=Objjoin(); + Objjoin(1) + GL1=CL[[1]] + for(J in Looprange(2,length(CL))){ + GL2=CL[[J]] + Dt=Objrecs(GL1,GL2,"-") + GL1=Dt[[2]] + if(J==2){ + GL0=Dt[[1]] + } + } + if(!Closed){ + Objpolygon(CL[[1]],"-") + N=length(CL) + Objpolygon(CL[[N]],"+") + }else{ + Objrecs(GL1,GL0,"-") + } + Out=CL + OBJJOIN<<- Join +} + +Objsymb<- function(Symb,Thick,Face,Dir){ + for(J in Looprange(1,length(Symb))){ + Objcurve(Op(J,Symb),Thick,Face,Dir) + } +} + +Symb3data<- function(Moji,Size,Kaiten,NV,Pos){ + if(is.character(Moji)){ + #Tmp=Symbdata(Moji) + # GY1=Tmp(2) + }else{ + GY1=Moji + } + 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){ + E1=c(1,0,0) + E2=c(0,1,0) + }else{ + E1=c(B,-A,0) + E2=c(-A*C,-B*C,A^2+B^2) + Tmp=matrix(c(E1,E2,NV),3,3) + D=det(Tmp) + if(D<0){ + E1=-E1 + } + E1=E1/Norm(E1) + E2=E2/Norm(E2) + } + Em<- function(X,Y){ + c(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) + Flattenlist(GY1) +} + +############## New Intersect 18.02.01 ############# + +Intersectline<- function(p1,v1,p2,v2){ + Eps0=10^(-5) + tmp=Dotprod(v1,v2) + tmp1=c(tmp,Norm(v1)^2) + tmp2=c(-Norm(v2)^2,-tmp) + tmp3=c(Dotprod(p2-p1,v2),Dotprod(p2-p1,v1)) + d=Crossprod(tmp1,tmp2) + tmp=abs(Crossprod(v1,v2)) + if(tmp>Eps0){ + dt=Crossprod(tmp3,tmp2) + ds=Crossprod(tmp1,tmp3) + t=dt/d + s=ds/d + pt=p1+v1*t + out=list(pt,t,s) + }else{ + tmp1=Crossprod(p2-p1,v1)/Norm(v1) + out=list(abs(tmp1)) + } + return(out) +} + +Intersectseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps0=10^(-4) + Eps1=0.01 + seg1=varargin[[1]] + seg2=varargin[[2]] + if(Nargs>2){Eps1=varargin[[3]]} + p1=Op(1,seg1); q1=Op(2,seg1) + p2=Op(1,seg2); q2=Op(2,seg2) + if((Norm(q1-p1)<Eps0)||(Norm(q2-p2)<Eps0)){ + out=list(-1) + }else{ + tmp=Intersectline(p1,q1-p1,p2,q2-p2) + if(length(Op(1,tmp))>1){ + pt=Op(1,tmp); t=Op(2,tmp); s=Op(3,tmp) + if((t*(t-1)<Eps0)&&(s*(s-1)<Eps0)){ + out=list(0,pt,t,s) + }else{ + t=min(max(t,0),1) + s=min(max(s,0),1) + tmp3=c(Norm(p1-p2),Norm(p1-q2),Norm(p2-p1),Norm(p2-q1)) + tmp1=c(Op(2,q2-p2),-Op(1,q2-p2)) + tmp=Intersectline(p1,tmp1,p2,q2-p2) + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-p1)) + } + } + tmp=Intersectline(q1,tmp1,p2,q2-p2) + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-q1)) + } + } + tmp1=c(Op(2,q1-p1),-Op(1,q1-p1)) + tmp=Intersectline(p2,tmp1,p1,q1-p1); + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-p2)) + } + } + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-q2)) + } + } + out=list(min(tmp3),pt,t,s) + } + }else{ + dist=tmp[[1]] + tmp1=q1-p1 + n=c(tmp1[2],-tmp1[1])/Norm(tmp1) + pts=list() + tmp=Intersectline(p1,n,p2,q2-p2) + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p2+tmp[[3]]*q2 + pts=c(pts,list(list(tmp1,0,tmp[[3]]))) + } + tmp=Intersectline(q1,n,p2,q2-p2) + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p2+tmp[[3]]*q2 + pts=c(pts,list(list(tmp1,1,tmp[[3]]))) + } + tmp=Intersectline(p2,n,p1,q1-p1) + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p1+tmp[[3]]*q1 + pts=c(pts,list(list(tmp1,tmp[[3]],0))) + } + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p1+tmp[[3]]*q1 + pts=c(pts,list(list(tmp1,tmp[[3]],2))) + } + if(length(pts)==0){ + tmp1=min(Norm(p2-p1),Norm(q2-p1),Norm(p2-q1),Norm(q2-q1)) + out=list(tmp1) + }else{ + if(dist>Eps1){ + out=list(dist) + }else{ + tmp=c(); + for(j in 1:length(pts)){ + tmp=Appendrow(tmp,Op(1,pts[[j]])) + } + tmp1=sum(tmp[,1])/(length(pts)) + tmp2=sum(tmp[,2])/(length(pts)) + tmp3=c(tmp1,tmp2) + tmp=Nearestpt(tmp3,seg1) + tmp1=tmp[[2]] + tmp=Nearestpt(tmp3,seg2) + tmp2=tmp[[2]] + out=list(dist,tmp3,tmp1,tmp2) + } + } + } + } + return(out) +} + +Osplineseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps=10^(-2) + Eps0=10^(-6) + Ptlist=varargin[[1]] + Numstr="Num=20" + if(Nargs>1){ + Numstr=varargin[[2]] + } + p0=Op(1,Ptlist); p1=Op(2,Ptlist); p2=Op(3,Ptlist); p3=Op(4,Ptlist) + tmp=Norm(p2-p0)*Norm(p3-p1) + tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/tmp)/2) + cc=4*Norm(p2-p1)/3/(Norm(p2-p0)+Norm(p3-p1))/tmp + pQ=p1+cc*(p2-p0) + pR=p2+cc*(p1-p3) + ctrL=list(c(pQ,pR)) + out=Bezier(list(p1,p2),ctrL,Numstr) + return(out) +} + +Intersectpartseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + crv1=varargin[[1]] + crv2=varargin[[2]] + ii=varargin[[3]] + jj=varargin[[4]] + Eps1=varargin[[5]] + Eps2=varargin[[6]] + Dist=10*Eps2 + if(Nargs>6){Dist=varargin[[7]]} + Eps0=10^(-4) + out=list() + seg1=Listplot(Op(ii,crv1),Op(ii+1,crv1)) + seg2=Listplot(Op(jj,crv2),Op(jj+1,crv2)) + tmp1=Op(2,seg1)-Op(1,seg1) + tmp2=Op(2,seg2)-Op(1,seg2) + snang=abs(Crossprod(tmp1,tmp2))/(Norm(tmp1)*Norm(tmp2)) + tmp=Intersectseg(seg1,seg2,Eps1) + dst=Op(1,tmp) + if(dst<Eps0){ + out=list(Op(2,tmp),ii+Op(3,tmp),jj+Op(4,tmp),dst,snang) + }else{ + if(dst<Eps2){ + if((Length(crv1)==2)||(Norm(Op(2,seg1)-Op(1,seg1))>Dist-Eps0)){ + os1=seg1 + }else{ + p1=Op(1,seg1); p2=Op(2,seg1) + if(ii==1){ + p3=Op(3,crv1) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p0=Reflectdata(p3,c((p1+p2)/2,tmp)) + }else{ + if(ii==Length(crv1)-1){ + p0=Op(ii-1,crv1) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p3=Reflectdata(p0,c((p1+p2)/2,tmp)) + }else{ + p0=Op(ii-1,crv1); p3=Op(ii+2,crv1) + } + } + os1=Osplineseg(list(p0,p1,p2,p3)) + } + if((Length(crv2)==2)||(Norm(Op(2,seg2)-Op(1,seg2))>Dist-Eps0)){ + os2=seg2 + }else{ + p1=Op(1,seg2); p2=Op(2,seg2) + if(jj==1){ + p3=Op(3,crv2) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p0=Reflectdata(p3,c((p1+p2)/2,tmp)) + }else{ + if(jj==Length(crv2)-1){ + p0=Op(jj-1,crv2) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p3=Reflectdata(p0,c((p1+p2)/2,tmp)) + }else{ + p0=Op(jj-1,crv2); p3=Op(jj+2,crv2) + } + } + os2=Osplineseg(list(p0,p1,p2,p3)) + } + tmp2=list() + for(kk in Looprange(1,Length(os1)-1)){ + for(ll in Looprange(1,Length(os2)-1)){ + seg1=Listplot(Op(kk,os1),Op(kk+1,os1)) + seg2=Listplot(Op(ll,os2),Op(ll+1,os2)) + tmp=Intersectseg(seg1,seg2,Eps1) + if((Op(1,tmp)<Eps1)&&(length(tmp)>1)){ #18.02.05 + if(Op(1,tmp)<dst+Eps0){ + dst=Op(1,tmp) + tmp3=list() + for( nn in Looprange(1,length(tmp2))){ + if(Op(1,tmp2[[nn]])<dst){ + tmp3=c(tmp3,list(tmp2[[nn]])) + } + } + tmp2=c(tmp3,list(list(dst,Op(2,tmp)))) + } + } + } + } + if(length(tmp2)>0){ + tmp1=c() + for(nn in Looprange(1,length(tmp2))){ + tmp1=Appendrow(tmp1,Op(2,tmp2[[nn]])) + } + tmp=sum(tmp1[,1])/length(tmp2) + tmp=c(tmp,sum(tmp1[,2])/length(tmp2)) + out=list(tmp) + p1=Op(ii,crv1); p2=Op(ii+1,crv1) + tmp=c(Op(2,p2-p1),-Op(1,p2-p1)) + tmp=Intersectline(Op(1,out),tmp,p1,p2-p1) + tmp=min(max(Op(3,tmp),0),1) + out=c(out,list(ii+tmp)) + p1=Op(jj,crv2); p2=Op(jj+1,crv2) + tmp=c(Op(2,p2-p1),-Op(1,p2-p1)) + tmp=Intersectline(Op(1,out),tmp,p1,p2-p1) + tmp=min(max(Op(3,tmp),0),1) + out=c(out,list(jj+tmp,dst,snang)) + } + } + } + return(out) +} + +Collectnear<- function(ptdL,Eps2){ + gL=list(Op(1,ptdL)) + rL=ptdL[Looprange(2,length(ptdL))] #18.02.07 + for( ii in Looprange(1,length(ptdL)-1)){ + numL=c() + for(jj in Looprange(1,length(rL))){ + tmp1=100 + for(kk in Looprange(1,length(gL))){ + tmp=Norm(Op(1,gL[[kk]])-Op(1,rL[[jj]])) + if(tmp<tmp1){tmp1=tmp} + } + if(tmp1<Eps2){numL=c(numL,jj)} + } + if(length(numL)==0){ + break + }else{ + gL=c(gL,rL[numL]) #18.02.05 + tmp=setdiff(1:(length(rL)),numL) + rL=rL[tmp] + } + } + return(list(gL,rL)) +} + +Groupnearpt<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps=varargin[[Nargs]] + plist=varargin[[1]] + qlist=varargin[[2]] + if(!is.list(qlist)){ + qlist=plist + plist=list() + } + if(length(qlist)==0){ + return(plist) + } + pt=qlist[[1]] + qlist=qlist[Looprange(2,length(qlist))] + if(length(plist)==0){ + plist=list(matrix(pt,nrow=1)) + }else{ + flg=0 + for(ii in Looprange(1,length(plist))){ + gL=plist[[ii]] + for(jj in Looprange(1,Length(gL))){ + if(Norm(Op(jj,gL)-pt)<Eps){ + flg=1 + break + } + } + if(flg==1){ + plist[[ii]]=Appendrow(gL,pt) + break + } + } + if(flg==0){ + plist=c(plist,list(matrix(pt,nrow=1))) + } + } + out=Groupnearpt(plist,qlist,Eps) + return(out) +} + +IntersectcurvesPp<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps0=10^(-4) + Eps1=0.01 + Eps2=0.05 + Dist=10*Eps2 + if(Nargs>2){Eps1=varargin[[3]]} + if(Nargs>3){Eps2=varargin[[4]]} + if(Nargs>4){Dist=varargin[[5]]} + tmp1=varargin[[1]] + crv1=matrix(Op(1,tmp1),nrow=1) + for(ii in Looprange(2,Length(tmp1))){ + tmp=Op(Length(crv1),crv1) + if(Norm(tmp-Op(ii,tmp1))>Eps0){ + crv1=Appendrow(crv1,Op(ii,tmp1)) + } + } + tmp2=varargin[[2]] + crv2=matrix(Op(1,tmp2),nrow=1) + for(ii in Looprange(2,Length(tmp2))){ + tmp=Op(Length(crv2),crv2) + if(Norm(tmp-Op(ii,tmp2))>Eps0){ + crv2=Appendrow(crv2,Op(ii,tmp2)) + } + } + if(Length(crv1)!=Length(crv2)){ + self=0 + }else{ + self=1 + for(ii in Looprange(1,Length(crv1))){ + if(Norm(Op(ii,crv1)-Op(ii,crv2))>0){ + self=0 + break + } + } + } + out=list() + for(ii in Looprange(1,Length(crv1)-1)){ + if(self==0){ + loopL=Looprange(1,Length(crv2)-1) + }else{ + loopL=Looprange(ii+2,Length(crv2)-1) + } + for(jj in loopL){ + tmp=Intersectpartseg(crv1,crv2,ii,jj,Eps1,Eps2,Dist) + if(length(tmp)>1){ #18.02.05 + if(length(out)==0){ + out=list(tmp) + }else{ + tmp1=Op(length(out),out) + if(Norm(Op(1,tmp1)-Op(1,tmp))>Eps1){ + out=c(out,list(tmp)) + } + } + if(self==1){ + tmp=list(Op(1,tmp),Op(3,tmp),Op(2,tmp),Op(4,tmp),Op(5,tmp)) + out=c(out,list(tmp)) + } + } + } + } + tmp2=out + out=list() + tmp1=tmp2 + for(ii in Looprange(1,length(tmp2))){ + tmp=Collectnear(tmp1,Eps2) + out=c(out,list(Op(1,tmp))) + if(length(Op(2,tmp))==0){ + break + }else{ + tmp1=Op(2,tmp) + } + } + for(ii in Looprange(1,length(out))){ + tmp1=Op(ii,out) + if(length(tmp1)==1){ + out[[ii]]=Op(1,tmp1) + }else{ + tmp=c() + for(jj in Looprange(1,length(tmp1))){ + tmp=c(tmp,Op(4,tmp1[[jj]])) + } + dst=min(tmp) + tmp=c() + for(jj in Looprange(1,length(tmp1))){ + if(Op(4,tmp1[[jj]])<dst+Eps0){ + tmp=c(tmp,Op(1,tmp1[[jj]])) + } + } + tmp=matrix(tmp,ncol=2,byrow=TRUE) + tmp=c(sum(tmp[,1]),sum(tmp[,2]))/Length(tmp) + tmp2=list(tmp) + tmp=Nearestpt(Op(1,tmp2),crv1) + tmp2=c(tmp2,list(Op(2,tmp))) + tmp=Nearestpt(Op(1,tmp2),crv2) + tmp2=c(tmp2,list(Op(2,tmp))) + tmp2=c(tmp2,list(list(dst,Op(5,tmp1[[1]])))) + out[[ii]]=tmp2 + } + } + return(out) +} + +Intersectcurves<- function(...){ + dtL=IntersectcurvesPp(...) + out=list() + for(jj in Looprange(1,length(dtL))){ + out=c(out,list(Op(1,dtL[[jj]]))) + } + return(out) +} + +############## end of New Intersect ############# + +############## New Enclosing2 ############# + +Enclosing2<- function(...){ + varargin=list(...) + Nargs=length(varargin) + plist=varargin[[1]] + Eps0=10^(-5) + Eps1=0.01 + Eps2=0.1 + Start=c() + flg=0 + for(ii in Looprange(2,Nargs)){ + tmp=varargin[[ii]] + if(length(tmp)>1){ +# Start=tmp + }else{ + if(flg==0){Eps1=tmp} + if(flg==1){Eps2=tmp} + flg=flg+1 + } + } + flg=0 + AnsL=c() + if(length(plist)==1){ + Fdata=plist[[1]] + tmp1=Op(1,Fdata) + tmp2=Op(Length(Fdata),Fdata) + if(Norm(tmp1-tmp2)<Eps0){ + AnsL=Fdata + }else{ + AnsL=Appendrow(Fdata,tmp1) + } + flg=1 + } + if(flg==0){ + Fdata=Op(1,plist) + Gdata=Op(length(plist),plist) + KL=IntersectcurvesPp(Fdata,Gdata) + if(length(KL)==0){ + tmp1=Op(Length(Gdata),Gdata) + tmp2=Op(1,Fdata) + tmp=Listplot(tmp1,tmp2) + plist=c(plist,list(tmp)) + Start=tmp2 + tst=1 +# flg=1 + }else{ + if(length(KL)==1){ + tmp=Op(1,KL) + tst=Op(2,tmp) + Start=crv(tst,Fdata) + } + if(length(KL)>1){ + KL=Quicksort(KL,2) + if(length(Start)==0){ + tmp=Op(1,KL) + tst=Op(2,tmp) + Start=Pointoncurve(tst,Fdata) + }else{ + tmp=c() + for(ii in Looprange(1,length(KL))){ + tmp=c(tmp,Norm(Op(1,KL[[ii]]-Start))) + } + tmp=min(tmp) + tmp1=list() + for(ii in Looprange(1,length(KL))){ + tmp2=Op(1,KL[[ii]]) + if(Norm(tmp2-Start)==tmp){ + tmp1=c(tmp1,list(tmp2)) + } + } + tmp=Op(1,tmp1) + tst=Op(2,tmp) + Start=Pointoncurve(tst,Fdata) + } + } + } + } + if(flg==0){ + t1=tst + for(nn in Looprange(1,length(plist))){ + Fdata=Op(nn,plist) + if(nn==length(plist)){ + nxtno=1 + }else{ + nxtno=nn+1 + } + Gdata=Op(nxtno,plist) + KL=IntersectcurvesPp(Fdata,Gdata) + if(length(KL)==0){ + tmp=matrix(Op(Length(Fdata),Fdata),nrow=1) #18.02.02from + Gdata=Appendrow(tmp,Gdata) + plist[[nxtno]]=Gdata + t2=Length(Fdata) + ss=1 #18.02.02upto + }else{ + tmp=Op(1,KL) + t2=Op(2,tmp) + ss=Op(3,tmp) + if(abs(t2-t1)<Eps0){ + if(length(KL)>1){ + tmp=Op(2,KL) + t2=Op(2,tmp) + ss=Op(3,tmp) + }else{ +# println(text(nn)+" and "+text(nn+1)+" not intersect"); +# flg=1 + } + } + } + if(flg==0){ + tmp=Partcrv(t1,t2,Fdata) + if(nn==1){ + AnsL=tmp + }else{ + tmp=tmp[2:Length(tmp),] + AnsL=Appendrow(AnsL,tmp) + } + t1=ss + } + } + } + return(AnsL) +} + +############## end of Enclosing2 ############# + +############## start of surface drawing ############# + +Fullformfunc<- function(FdL){ + ADDPOINT<<- list() #18.02.19 + Out=list(Op(1,FdL)) + N=length(FdL) + for(Jrg in Looprange(1,N)){ + Tmp=grep("c(",Op(Jrg,FdL),fixed=TRUE) + if(length(Tmp)>0){ + break + } + } + Urg=Stripblanks(Op(Jrg,FdL)) + Tmp=strsplit(Urg,"=",fixed=TRUE) + UNAME<<- Tmp[[1]][1] + URNG<<- eval(parse(text=Tmp[[1]][2])) + Urg=paste(UNAME,"=c(",sprintf("%6.7f",URNG[1]),",", + sprintf("%6.7f",URNG[2]),")",sep="") + Vrg=Stripblanks(Op(Jrg+1,FdL)) + Tmp=strsplit(Vrg,"=",fixed=TRUE) + VNAME<<- Tmp[[1]][1] + VRNG<<- eval(parse(text=Tmp[[1]][2])) + Vrg=paste(VNAME,"=c(",sprintf("%6.7f",VRNG[1]),",", + sprintf("%6.7f",VRNG[2]),")",sep="") + if(Jrg==2){ + Xf=UNAME + Yf=VNAME + Tmp=Stripblanks(Op(1,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Zf=Tmp[[1]][2] + Tmp=list(UNAME,VNAME,Zf,Urg,Vrg) + Out=c(Out,Tmp) + }else if(Jrg==4){ + Tmp=Stripblanks(Op(1,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Zf=Tmp[[1]][2] + Tmp=Stripblanks(Op(2,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Xname=Tmp[[1]][1] + Xf=Tmp[[1]][2] + Tmp=Stripblanks(Op(3,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Yname=Tmp[[1]][1] + Yf=Tmp[[1]][2] + Tmp=gsub(Xname,paste("(",Xf,")",sep=""),Zf,fixed=TRUE) + Zf=gsub(Yname,paste("(",Yf,")",sep=""),Tmp,fixed=TRUE) + Tmp=list(Xf,Yf,Zf,Urg,Vrg) + Out=c(Out,Tmp) + }else{ + Tmp=Stripblanks(Op(2,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Xf=Tmp[[1]][2] + Tmp=Stripblanks(Op(3,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Yf=Tmp[[1]][2] + Tmp=Stripblanks(Op(4,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Zf=Tmp[[1]][2] + Tmp=list(Xf,Yf,Zf,Urg,Vrg) + Out=c(Out,Tmp) + } + tmp=paste("Xfunc<<- function(",UNAME,",",VNAME,"){",Xf,"}",sep='') + eval(parse(text=tmp)) + tmp=paste("Yfunc<<- function(",UNAME,",",VNAME,"){",Yf,"}",sep='') + eval(parse(text=tmp)) + tmp=paste("Zfunc<<- function(",UNAME,",",VNAME,"){",Zf,"}",sep='') + eval(parse(text=tmp)) + tmp=paste("XYZfunc<<- function(",UNAME,",",VNAME,"){",sep='') + tmp=paste(tmp,"c(",Xf,",",Yf,",",Zf,")}",sep='') + eval(parse(text=tmp)) + XYZstr<<- c(Xf,Yf,Zf) + DRWS<<- "enws" + BdyL=list() + for(I in Looprange(Jrg+2,length(FdL))){ + Tmp=Op(I,FdL) + if(is.character(Tmp)){ + if(nchar(Tmp)==0){ + Tmp=" " + } + DRWS<<- list(Tmp) + } + if((is.numeric(Tmp))&&(Length(Tmp)>1)){ + BdyL=list(Tmp) + } + } + BDYL<<- BdyL + Tmp=c(DRWS,BDYL) + Out=c(Out,Tmp) + return(Out) +} + +Addpoints<- function(ptlist){ + ADDPOINT<<- ptlist +} + +Makexybdy<- function(Np){ + Eps0=10^(-4) + Xystr=XYZstr[1:2] + Umin=URNG[1]; Umax=URNG[2] + Vmin=VRNG[1]; Vmax=VRNG[2] + Cflg=0 + EhL=list() + Tmp=grep("e",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umax),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + Tmp=grep("n",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmax),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Cflg>0){ + Tmp1=Op(length(EhL),EhL) + Tmp=Joincrvs(Tmp1,Tmp) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + Tmp1=EhL[Looprange(1,length(EhL)-1)] + EhL=c(Tmp1,Tmp) + }else{ + Cflg=0 + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + } + Tmp=grep("w",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umin),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Cflg>0){ + Tmp1=Op(length(EhL),EhL) + Tmp=Joincrvs(Tmp1,Tmp) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + Tmp1=EhL[Looprange(1,length(EhL)-1)] + EhL=c(Tmp1,list(Tmp)) + }else{ + Cflg=0 + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + } + Tmp=grep("s",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmin),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Cflg>0){ + Tmp1=Op(length(EhL),EhL) + Tmp=Joincrvs(Tmp1,Tmp) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp1=EhL[Looprange(1,length(EhL)-1)] + } + Tmp1=EhL[Looprange(1,length(EhL)-1)] + EhL=c(Tmp1,list(Tmp)) + }else{ + Cflg=0 + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + } + return(EhL) +} + +Partitionseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Fig=varargin[[1]] + GL=varargin[[2]]; N=3 + if(!is.list(GL)){GL=list(GL)} #18.02.21 + Eps0=10^(-4) + Eps=0.01 + if(Nargs>2){ + Eps=varargin[[3]] + } + Eps2=0.1 + if(Nargs>3){ + Eps2=varargin[[4]] + } + if(Nargs>4){ + Ns=varargin[[5]] + if(Ns>0){#18.02.21from + Other=Op(Ns,OTHERPARTITION) + }else{ + Other=c() + }#18.02.21upto + }else{ + Ns=1 + Other=c() + } + Npt=Length(Fig) + ParL=c(1,Npt,Other) + for(N in Looprange(max(1,Ns),Length(GL))){ #18.02.21 + G=Op(N,GL) + KouL=IntersectcurvesPp(Fig,G,Eps,Eps2) + Tmp1=c(); Tmp2=c() + for(jj in Looprange(1,length(KouL))){ + tmp=Op(2,KouL[[jj]]) + if((tmp>1+Eps0)&&(tmp<Npt-Eps0)){ + Tmp1=c(Tmp1,tmp) + } + tmp=Op(3,KouL[[jj]]) + if((tmp>1+Eps0)&&(tmp<Length(G)-Eps0)){ + Tmp2=c(Tmp2,tmp) + } + } + ParL=c(ParL,Tmp1) + if((Ns>0)&&(N>Ns)&&(length(Tmp2)>0)){ #18.02.21 + tmp=OTHERPARTITION[[N]] + OTHERPARTITION[[N]]<<- c(tmp,Tmp2) + } + } + tmp1=sort(ParL) + ParL=c() + tmp2=-1 + for(jj in Looprange(1,length(tmp1))){ + tmp=Op(jj,tmp1) + if(abs(tmp-tmp2)>Eps){ + ParL=c(ParL,tmp) + tmp2=tmp + } + } + return(ParL) +} + +Evlptablepara<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Tmp=varargin[[1]] + Mdv=50 + Ndv=50 + if(Nargs>=2){ + Tmp=varargin[[2]] + if(is.list(Tmp)){Tmp=Op(1,Tmp)} + if(length(Tmp)>1){ + Mdv=Tmp[1] + Ndv=Tmp[2] + }else{ + Mdv=Tmp + if(Nargs==2){ + Ndv=Mdv + }else{ + Tmp1=varargin[[3]] + if((is.numeric(Tmp1)) && (length(Tmp1)==1)){ + Ndv=Tmp1 + }else{ + Ndv=Mdv + } + } + } + } + U1=URNG[1]; U2=URNG[2] + V1=VRNG[1]; V2=VRNG[2] + Du=(U2-U1)/(Mdv) + Dv=(V2-V1)/(Ndv) + sph=sprintf("%7.7f",sin(PHI)) + cph=sprintf("%7.7f",cos(PHI)) + sth=sprintf("%7.7f",sin(THETA)) + cth=sprintf("%7.7f",cos(THETA)) + xstr=paste("-(",XYZstr[1],")*(",sph,")+(",XYZstr[2],")*(",cph,")",sep="") + tmp=paste("-(",XYZstr[1],")*(",cph,")*(",cth,")-(",XYZstr[2],")*(",sph,")*(",cth,")",sep="") + ystr=paste(tmp,"+(",XYZstr[3],")*(",sth,")",sep="") + dxu=Diff(xstr,UNAME) + dxv=Diff(xstr,VNAME) + dyu=Diff(ystr,UNAME) + dyv=Diff(ystr,VNAME) + I=1 + Zval=c() + for(jj in 1:(Ndv+1)){ + v=V1+(jj-1)*Dv + ZuL=c() + for(ii in 1:(Mdv+1)){ + u=U1+(ii-1)*Du + tmp1=paste(UNAME,"=(",sprintf("%7.7f",u),")",sep="") + tmp2=paste(VNAME,"=(",sprintf("%7.7f",v),")",sep="") + Dxu=Funvalue(dxu,tmp1,tmp2) + Dxv=Funvalue(dxv,tmp1,tmp2) + Dyu=Funvalue(dyu,tmp1,tmp2) + Dyv=Funvalue(dyv,tmp1,tmp2) + Tmp=Dxu*Dyv-Dxv*Dyu + ZuL=c(ZuL,Tmp) + } + Zval=Appendrow(Zval,ZuL) + } + Yval=c() + for(jj in 1:(Ndv+1)){ + v=V1+(jj-1)*Dv + Yval=c(Yval,v) + } + Xval=c() + for(ii in 1:(Mdv+1)){ + u=U1+(ii-1)*Du + Xval=c(Xval,u) + } + return(list(Zval,Xval,Yval)) +} + +Dropnumlistcrv<- function(QdL,Eps){ + Eps0=10^(-4) + if(!is.list(QdL)){ + PdL=list(QdL) + }else{ + PdL=QdL + } + OutL=list() + for(I in Looprange(1,length(PdL))){ + Pd=Op(I,PdL) + PtL=c(1) + P=Op(1,Pd) + for(K in Looprange(2,Length(Pd)-1)){ + if(Norm(P-Op(K,Pd))>Eps){ + PtL=c(PtL,K) + P=Op(K,Pd) + } + } + K=Length(Pd) + if(Norm(P-Op(K,Pd))>Eps){ #18.02.12 eps + PtL=c(PtL,K) + } + if(length(PtL)==1){ + PtL=c() + } + OutL=c(OutL,list(PtL)) + } + return(OutL) +} + +Cuspsplitpara<- function(...){ + varargin=list(...) + Nargs=length(varargin); + Gdxy=varargin[[1]] + if(!is.list(Gdxy)){ + Gdxy=list(Gdxy) + } + Eps0=10^(-4) + Eps=0.01 + if(Nargs>2){Eps=varargin[[2]]} + N=2 + CUSPSPLITPT<<- list() + OutkL=list() + for(Ng in Looprange(1,length(Gdxy))){ + PtxyL=Op(Ng,Gdxy) + PtkL=c() + PthL=c() + for(I in Looprange(1,Length(PtxyL))){ + Tmp=Op(I,PtxyL) + Tmp1=paste(UNAME,'=',sprintf("%7.7f",Tmp[1]),sep="") + eval(parse(text=Tmp1)) + Tmp1=paste(VNAME,'=',sprintf("%7.7f",Tmp[2]),sep="") + eval(parse(text=Tmp1)) + Tmp2=c(eval(parse(text=XYZstr[1]))) + Tmp2=c(Tmp2,eval(parse(text=XYZstr[2]))) + Tmp2=c(Tmp2,eval(parse(text=XYZstr[3]))) + Tmp3=Parapt(Tmp2) + if(I==1){ + PtkL=matrix(Tmp2,nrow=1) + PthL=matrix(Tmp3,nrow=1) + }else{ + Tmp4=Op(Length(PthL),PthL) + if(Norm(Tmp3-Tmp4)>Eps0){ + PtkL=Appendrow(PtkL,Tmp2) + PthL=Appendrow(PthL,Tmp3) + } + } + } + if(Length(PthL)==0){ + return(list()) + } + Ps=Op(1,PthL); Pe=Op(Length(PthL),PthL) + Cflg=0 + if(Norm(Ps-Pe)<Eps){Cflg=1} + CuspL=c() + Cva=cos(10*pi/180) + for(I in Looprange(1,Length(PthL)-1)){ + if(Length(PthL)==2){break} + Tmp=Op(I,PthL) + if(I==1){ + if(Cflg==0){next} + Tmp1=Op(Length(PthL)-1,PthL) + }else{ + Tmp1=Op(I-1,PthL) + } + Tmp2=Op(I+1,PthL) + V1=Tmp-Tmp1 + V2=Tmp2-Tmp + Tmp3=Dotprod(V1,V2)/(Norm(V1)*Norm(V2)) + Cuspflg=0 + if(Tmp3<Cva){ + P=Op(I,PthL) + Kaku=acos(Tmp3)*180/pi + if(Crossprod(V1,V2)<0){ + Kaku=-Kaku + } + Cuspflg=0 + for(J in Looprange(I+1,Length(PthL)-1)){ + if(abs(Kaku)>90){ + Cuspflg=1 + break + } + Q=Op(J,PthL) + if(Norm(P-Q)>Eps){ + break + } + V1=Q-Op(J-1,PthL) + V2=Op(J+1,PthL)-Q + Tmp3=Dotprod(V1,V2)/(norm(V1)*norm(V2)) + Tmp=acos(Tmp3)*180/pi + if(Crossprod(V1,V2)<0){ + Tmp=-Tmp + } + Kaku=Kaku+Tmp + } + if(Cuspflg==1){ + Tmp=trunc((I+J)*0.5) + I=J + if(length(CuspL)==0){ + CuspL=c(Tmp) + }else{ + CuspL=c(CuspL,Tmp) + } + } + } + } + if(Cflg==0){ + CuspL=c(1,CuspL,Length(PthL)) + }else if(length(CuspL)==0){ + CuspL=c(1,Length(PthL)) + }else if(Op(1,CuspL)==1){ + CuspL=c(CuspL,Length(PthL)) + }else{ + Tmp=Op(1,CuspL) + Tmp1=PthL[Tmp:Length(PthL),] + Tmp2=PthL[2:Tmp,] + PthL=Appendrow(Tmp1,Tmp2) + Tmp1=PtkL[Tmp:Length(PthL),] + Tmp2=PtkL[2:Tmp,] + PtkL=Appendrow(Tmp1,Tmp2) + CuspL=CuspL-Tmp+1 + CuspL=c(CuspL,Length(PthL)) + } + if(length(CuspL)==2){ + Tmp4=PthL[Length(PthL),] + if(Length(PtkL)>=2){ + CUSPSPLITPT<<- c(CUSPSPLITPT,list(Tmp4)) + OutkL=c(OutkL,list(PtkL)) + } + next + } + Outk=list() + Is=1 + for(I in Looprange(1,length(CuspL)-1)){ + Tmp1=CuspL[Is]; Tmp2=CuspL[I+1] + Tmp3=Op(Tmp1,PthL); Tmp4=Op(Tmp2,PthL) + if(Norm(Tmp3-Tmp4)>Eps){ + Tmpk=PtkL[Tmp1:Tmp2,] + Outk=c(Outk,list(Tmpk)) + CUSPSPLITPT<<- c(CUSPSPLITPT,list(Tmp4)) + Is=I+1 + } + } + OutkL=c(OutkL,Outk) + } + Tmp1=Dropnumlistcrv(Projpara(OutkL),Eps*0.5) + Tmp=list() + for(I in Looprange(1,length(OutkL))){ + Tmp2=Op(I,OutkL) + Tmp3=Op(I,Tmp1) + Tmp4=c() + for(J in Looprange(1,Length(Tmp3))){ + Tmp5=Op(Tmp3[J],Tmp2) + Tmp4=Appendrow(Tmp4,Tmp5) + } + if(Length(Tmp4)>0){ + Tmp=c(Tmp,list(Tmp4)) + } + } + return(Tmp) +} + +PthiddenQ<- function(PtA,Vec,Uveq,Np,Eps,Eps2){ + Eps0=10^(-4) + Out=c() + Vec=1/Norm(Vec)*Vec + if(length(Np)==1){ + Np=c(Np,Np) + } + Tmp=paste("Eqfun<- function(U,V){",sep='') + if((abs(Vec[2])>Eps0) || (abs(Vec[1])>Eps0)){ + Vstr=sprintf("%6.6f",Vec) + Pstr=sprintf("%6.6f",PtA) + Tmp=paste(Tmp,"(",Vstr[2],")*(Xfunc(U,V)-(",Pstr[1],"))",sep='') + Tmp=paste(Tmp,"-(",Vstr[1],")*(Yfunc(U,V)-(",Pstr[2],"))}",sep='') + }else{ + Tmp=paste(Tmp,"Xfunc(U,V)}",sep='') + } + eval(parse(text=Tmp)) + Dx=(URNG[2]-URNG[1])/Np[1] + Dy=(VRNG[2]-VRNG[1])/Np[2] + for(J in Looprange(1,Np[2])){ ##### + Vval1=VRNG[1]+(J-1)*Dy + Vval2=VRNG[1]+J*Dy + for(I in Looprange(1,Np[1])){ ##### + Uval1=URNG[1]+(I-1)*Dx + Uval2=URNG[1]+I*Dx + Eval11=Eqfun(Uval1,Vval1) + Eval12=Eqfun(Uval1,Vval2) + Eval21=Eqfun(Uval2,Vval1) + Eval22=Eqfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + P1=Op(K,PL); P2=Op(K+1,PL) + M1=Op(K,VL); M2=Op(K+1,VL) + if(abs(M1)<Eps0){ + QL=Appendrow(QL,P1) + next + } + if(abs(M2)<Eps0){ +# QL=Appendrow(QL,P2) + next + } + if((M1> 0) && (M2> 0)){ + next + } + if((M1< 0) && (M2< 0)){ + next + } + Tmp=1/(M1-M2)*(-M2*P1+M1*P2) + QL=Appendrow(QL,Tmp) + } + if(Length(QL)==2){ + Puv1=Op(1,QL); Puv2=Op(2,QL) + Tmp1=Op(1,Puv1) + Tmp2=Op(2,Puv1) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P1=c(Xv,Yv,Zv) + Tmp1=Op(1,Puv2) + Tmp2=Op(2,Puv2) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P2=c(Xv,Yv,Zv) + V1=Vec[1]; V2=Vec[2]; V3=Vec[3] + if(abs(V1)>Eps0){ + M1=PtA[3]+V3/V1*(P1[1]-PtA[1])-P1[3] + M2=PtA[3]+V3/V1*(P2[1]-PtA[1])-P2[3] + }else if(abs(V2)>Eps0){ + 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] + } + if(M1*M2>= 0){ + if(((M1>0) && (M2>0)) || ((M1< 0) && (M2< 0))){ + next + } + if(M1==0){ + Pt=P1; Ptuv=Puv1 + }else{ + Pt=P2; Ptuv=Puv2 + } + }else{ + Pt=1/(M1-M2)*(-M2*P1+M1*P2) + Ptuv=1/(M1-M2)*(-M2*Puv1+M1*Puv2) + } + if(is.character(Uveq)){ + Tmp1=paste('(',sprintf("%6.6f",Ptuv[1]),')',sep='') + Tmp2=paste('('+sprintf("%6.6f",Ptuv[2]),')',sep='') + Tmp=gsub(UNAME,Tmp1,Uveq,fixed=TRUE) + Tmp=gsub(VNAME,Tmp2,Tmp,fixed=TRUE) + Tmp=eval(parse(text=Tmp)) + if(Tmp< -Eps0){ + next + } + } + Tmp1=Crossprod(Pt-PtA,Vec) + if(Norm(Tmp1)<Eps){ #18.02.19 + if(Zparapt(Pt)>Zparapt(PtA)+Eps2){ + return(list(1,Pt,Zparapt(Pt),Zparapt(PtA))) + }else{ + Out=Appendrow(Out,Pt) + } + } + } + } + } + if(Length(Out)==0){ + return(list(0,c())) + } + return(c(list(0,Out))) +} + +Nohiddenpara2<- function (Par,Fk,Uveq,Np,Eps,Eps2){ + Eps0=10^(-4) + Fh=Projpara(Fk) + P1=Ptstart(Fh) + P2=Ptend(Fh) + Csp=CUSPPT + if(!is.list(Csp)){Csp=list(Csp)} + Cspflg=1 + for(I in Looprange(1,length(Csp))){ + Tmp=Op(I,Csp) + if(Norm(Tmp-P1)<Eps0){ + if(Cspflg==1){Cspflg=2} + if(Cspflg==3){Cspflg=6} + next + } + if(Norm(Tmp-P2)<Eps0){ + if(Cspflg==1){Cspflg=3} + if(Cspflg==2){Cspflg=6} + next + } + } + PaL=c() + tmp2=-1 + for(jj in Looprange(1,length(Par)-1)){ + tmp1=Op(jj,Par) + if(abs(tmp1-tmp2)>Eps2){ + PaL=c(PaL,tmp1) + tmp2=tmp1 + } + } + tmp1=PaL[length(PaL)] #18.02.26from + tmp2=Par[length(Par)] + if(abs(tmp1-tmp2)<Eps2){ + PaL[length(PaL)]=tmp2 + }else{ + PaL=c(PaL,tmp2) + } #18.02.26upto + SeL=c() + for(N in Looprange(1,length(PaL)-1)){ + S=(PaL[N]+PaL[N+1])/2 + Tmp=Invparapt(S,Fh,Fk) + PtA=Op(1,Tmp) + PtAp=Parapt(PtA) + Vec=c(sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)) + Flg=PthiddenQ(PtA,Vec,Uveq,Np,Eps,Eps2) + if(Flg[[1]]==0){ + SeL=c(SeL,N) + } + } + FigL=list() + FigkL=list() + for(I in Looprange(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=c(FigL,list(Partcrv(SP,SQ,Fh))) + Tmp3=Invparapt(SP,Fh,Fk) + TP=Op(2,Tmp3) + Tmp3=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp3) + Tmp4=Partcrv3(TP,TQ,Fk) + FigkL=c(FigkL,list(Tmp4)) + P=Tmp1; SP=PaL[SeL[I]] + Q=Tmp2; SQ=PaL[SeL[I]+1] + } + } + } + if(length(SeL)>0){ + if(Norm(P-Q)>Eps0){ #18.02.14 + FigL=c(FigL,list(Partcrv(P,Q,Fh))) + Tmp3=Invparapt(SP,Fh,Fk) + TP=Op(2,Tmp3) + Tmp3=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp3) + FigkL=c(FigkL,list(Partcrv3(TP,TQ,Fk))) + }else{ + FigL=c(FigL,list(Fh)) + FigkL=c(FigkL,list(Fk)) + } + } + Tmp=c() + for(I in Looprange(1,length(PaL)-1)){ + if(!Member(I,SeL)){ + Tmp=c(Tmp,I) + } + } + SeL=Tmp + HIDDENDATA<<- list() + for(I in Looprange(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=Op(2,Tmp) + Tmp=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp) + HIDDENDATA<<- c(HIDDENDATA,list(Partcrv3(TP,TQ,Fk))) + P=Tmp1; SP=PaL[SeL[I]] + Q=Tmp2; SQ=PaL[SeL[I]+1] + } + } + } + if(length(SeL)>0){ + if(Norm(P-Q)>Eps0){ #18.02.14 + Tmp=Invparapt(SP,Fh,Fk) + TP=Op(2,Tmp) + Tmp=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp) + HIDDENDATA<<- c(HIDDENDATA,list(Partcrv3(TP,TQ,Fk))) + }else{ + HIDDENDATA<<- c(HIDDENDATA,list(Fk)) + } + } + return(FigkL) +} + +Borderparadata<- function(...){ + varargin=list(...) + Nargs=length(varargin) + FkL=varargin[[1]] + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(2,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + Umin=URNG[1]; Umax=URNG[2] + Vmin=VRNG[1]; Vmax=VRNG[2] + EkL=list() + Tmp=grep("e",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umax),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2]),sep="") + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + Tmp=grep("n",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmax),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1]),sep="") + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + Tmp=grep("w",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umin),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2])) + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + Tmp=grep("s",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmin),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1])) + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + if(length(EkL)>0){ + FkL=c(FkL,EkL) + } + Fall=Projpara(FkL) + if(is.numeric(Fall)){ + Fall=list(Fall) + } + Fbdxy=Makexybdy(Np) + BORDERPT<<- list() + Tmp1=list() + for(I in Looprange(1,length(Fall))){ + Tmp1=c(Tmp1,list(c())) + } + OTHERPARTITION<<- Tmp1 + FsL=list() + BORDERHIDDENDATA<<- list() + starttime=proc.time() + for(I in Looprange(1,length(FkL))){ + Tmp=Op(I,FkL) + Tmp=Projpara(Tmp) + Par=Partitionseg(Tmp,Fall,Eps,Eps2,I) + Tmp1=Op(I,FkL) + Tmp=Nohiddenpara2(Par,Tmp1,1,Np,Eps,Eps2) + if(length(HIDDENDATA)>0){ + BORDERHIDDENDATA<<- c(BORDERHIDDENDATA,HIDDENDATA) + } + if(length(Tmp)>0){ + FsL=c(FsL,Tmp) + } + Tmp=paste('Border',formatC(I,width=2,flag="0"),'/',sep='') + Tmp=paste(Tmp,as.character(length(FkL)),' obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + } + return(FsL) +} + +Sfbdparadata<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Fd=varargin[[1]] + FdL=Fullformfunc(Fd) + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(2,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + starttime=proc.time() + tmp=Evlptablepara(Np) + Zval=tmp[[1]]; Xval=tmp[[2]]; Yval=tmp[[3]] + Out3=Implicitplot(Zval,Xval,Yval) + tmp3=list() + for(jj in Looprange(1,length(Out3))){ + tmp1=Op(jj,Out3) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + Nlist=Dropnumlistcrv(tmp2,Eps) + Nlist=Nlist[[1]] + tmp=c() + for(kk in Looprange(1,length(Nlist))){ + tmp=Appendrow(tmp,Op(Nlist[kk],tmp1)) #18.02.18 + } + if(Length(tmp)>0){ + tmp3=c(tmp3,list(tmp)) + } + } + Out3=tmp3 + IMPLICITDATA<<- Out3 + Tmp=proc.time()-starttime + print(paste('ImplicitData obtained : Time =',sprintf("%6.3f",Tmp[1]),sep='')) + starttime=proc.time() + Out4=Cuspsplitpara(Out3,Eps) + CUSPDATA<<- Out4 + CUSPPT<<- CUSPSPLITPT + Tmp=proc.time()-starttime + print(paste('CuspData obtained : Time =',sprintf("%6.3f",Tmp[1]),sep='')) + Out5=Borderparadata(Out4,Np,Eps,Eps2) + return(Out5) +} + +Meetpoints<- function(PtA,PtB,Uveq,Np,Eps){ + Eps0=10^(-4) + Vec=PtB-PtA + if(Norm(Vec)<Eps0){return(list())} #18.02.24 + Out=list() + Vec=1/Norm(Vec)*Vec + if(length(Np)==1){ + Np=c(Np,Np) + } + Tmp=paste("Eqfun<- function(U,V){",sep='') + if((abs(Vec[2])>Eps0) || (abs(Vec[1])>Eps0)){ + Vstr=sprintf("%6.6f",Vec) + Pstr=sprintf("%6.6f",PtA) + Tmp=paste(Tmp,"(",Vstr[2],")*(Xfunc(U,V)-(",Pstr[1],"))",sep='') + Tmp=paste(Tmp,"-(",Vstr[1],")*(Yfunc(U,V)-(",Pstr[2],"))}",sep='') + }else{ + Tmp=paste(Tmp,"Xfunc(U,V)}",sep='') + } + eval(parse(text=Tmp)) + Dx=(URNG[2]-URNG[1])/Np[1] + Dy=(VRNG[2]-VRNG[1])/Np[2] + for(J in Looprange(1,Np[2])){ ##### + Vval1=VRNG[1]+(J-1)*Dy + Vval2=VRNG[1]+J*Dy + for(I in Looprange(1,Np[1])){ ##### + Uval1=URNG[1]+(I-1)*Dx + Uval2=URNG[1]+I*Dx + Eval11=Eqfun(Uval1,Vval1) + Eval12=Eqfun(Uval1,Vval2) + Eval21=Eqfun(Uval2,Vval1) + Eval22=Eqfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + P1=Op(K,PL); P2=Op(K+1,PL) + M1=Op(K,VL); M2=Op(K+1,VL) + if(abs(M1)<Eps0){ + QL=Appendrow(QL,P1) + next + } + if(abs(M2)<Eps0){ +# QL=Appendrow(QL,P2) + next + } + if((M1> 0) && (M2> 0)){ + next + } + if((M1< 0) && (M2< 0)){ + next + } + Tmp=1/(M1-M2)*(-M2*P1+M1*P2) + QL=Appendrow(QL,Tmp) + } + if(Length(QL)==2){ + Puv1=Op(1,QL); Puv2=Op(2,QL) + Tmp1=Op(1,Puv1) + Tmp2=Op(2,Puv1) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P1=c(Xv,Yv,Zv) + Tmp1=Op(1,Puv2) + Tmp2=Op(2,Puv2) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P2=c(Xv,Yv,Zv) + V1=Vec[1]; V2=Vec[2]; V3=Vec[3] + if(abs(V1)>Eps0){ + M1=PtA[3]+V3/V1*(P1[1]-PtA[1])-P1[3] + M2=PtA[3]+V3/V1*(P2[1]-PtA[1])-P2[3] + }else if(abs(V2)>Eps0){ + 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] + } + if(M1*M2>= 0){ #18.02.21 + if(((M1>0) && (M2>0)) || ((M1< 0) && (M2< 0))){ + next + } + if(M1==0){ + Pt=P1; Ptuv=Puv1 + }else{ + Pt=P2; Ptuv=Puv2 + } + }else{ + Pt=1/(M1-M2)*(-M2*P1+M1*P2) + Ptuv=1/(M1-M2)*(-M2*Puv1+M1*Puv2) + } + if(is.character(Uveq)){ + Tmp1=paste('(',sprintf("%6.6f",Ptuv[1]),')',sep='') + Tmp2=paste('('+sprintf("%6.6f",Ptuv[2]),')',sep='') + Tmp=gsub(UNAME,Tmp1,Uveq,fixed=TRUE) + Tmp=gsub(VNAME,Tmp2,Tmp,fixed=TRUE) + Tmp=eval(parse(text=Tmp)) + if(Tmp< -Eps0){ + next + } + } + Tmp1=Crossprod(Pt-PtA,Vec) + if(Norm(Tmp1)<Eps){ #18.02.19 + Tmp1=Dotprod(Pt-PtA,Vec) #18.02.21 + if((Tmp1>-Eps0)&&(Tmp1<Norm(PtB-PtA)+Eps0)){ + Out=c(Out,list(Pt)) + } + } + } + } + } + tmp1=Groupnearpt(Out,Eps) + Out=list() + for(jj in Looprange(1,length(tmp1))){ + tmp=Op(jj,tmp1) + tmp=c(sum(tmp[,1]),sum(tmp[,2]),sum(tmp[,3]))/Length(tmp) + Out=c(Out,list(tmp)) + } + return(Out) +} + +Clipindomain<- function(ObjL,FigL){ + Eps0=10^(-4) + Eps1=0.01 + Eps2=0.05 + Bdy=Kyoukai(FigL) + if(length(Bdy)>=2){ + Fbdy=Joincrvs(FigL) + }else{ + Fbdy=Op(1,FigL) + } + if(!is.list(ObjL)){ + ObjL=list(ObjL) + } + if(!is.list(FigL)){ + FigL=list(FigL) + } + OutL=list() + for(Nobj in Looprange(1,length(ObjL))){ + Obj=Op(Nobj,ObjL) + ParL=c(1,Length(Obj)) + Tmp=IntersectcurvesPp(Obj,Fbdy,Eps1,Eps2) + for(J in Looprange(1,length(Tmp))){ + Tmp1=Op(J,Tmp) + ParL=c(ParL,Op(2,Tmp1)) + } + ParL=sort(ParL) + Tmp=c(1) + for(I in Looprange(1,length(ParL))){ + Tmp1=Op(length(Tmp),Tmp) + Tmp2=ParL[I] + if(Tmp2-Tmp1>Eps0){ + Tmp=c(Tmp,Tmp2) + } + } + ParL=Tmp + Tmp1=Op(length(ParL),ParL) + Tmp2=Length(Obj) + if(abs(Tmp1-Tmp2)<Eps){ + ParL=c(ParL[Looprange(1,length(ParL)-1)],Tmp2) + } + Fig=list() + for(N in Looprange(1,length(ParL)-1)){ + Tmp=(ParL[N]+ParL[N+1])*0.5 + Tmp=Pointoncurve(Tmp,Obj) + Tmp=Naigai(Tmp,Bdy) + Tmp1=sum(Tmp)%%2 + if(Tmp1==0){ + next + } + Fig=c(Fig,list(Partcrv(ParL[N],ParL[N+1],Obj))) + } + OutL=c(OutL,Fig) + } + return(OutL) +} + +Crvsfparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Sepflg=0 + Tmp=varargin[[Nargs]] + if((is.numeric(Tmp))&&(Tmp<=0)){ + Sepflg=1 + Nargs=Nargs-1 + } + Fk=varargin[[1]] + if(!is.list(Fk)){ + FkL=list(Fk) + }else{ + FkL=Fk + } + Fbdy=Projpara(varargin[[2]]) + Fd=varargin[[3]]; + Fullformfunc(Fd) #18.02.17 + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + Out=list() + CRVSFHIDDENDATA<<- list() + for(Nn in Looprange(1,length(FkL))){ + Fk=Op(Nn,FkL) + Tmp=Projpara(Fk) + Par=Partitionseg(Tmp,Fbdy,Eps,Eps2,0) + if(Sepflg==0){ + for(I in Looprange(1,Length(Fk)-1)){ + Pa=Op(I,Fk) + Pb=Op(I+1,Fk) + PtL=Meetpoints(Pa,Pb,1,Np,Eps) + for(J in Looprange(1,Length(PtL))){ + Tmp=Op(J,PtL) + Tmp=Parapt(Tmp) + Tmp1=Paramoncurve(Tmp,I,Projpara(Fk)) + Tmp2=min(abs(Par-Tmp1)) + if(Tmp2*Norm(Parapt(Pb-Pa))>Eps) { + Par=c(Par,Tmp1) + } + } + Par=sort(Par) + } + } + for(jj in Looprange(1,length(ADDPOINT))){ #18.02.19from + tmp=Parapt(Op(jj,ADDPOINT)) + tmp=Nearestpt(tmp,Projpara(Fk)) + if(tmp[[3]]<Eps){ + Par=c(Par,tmp[[2]]) + } + } #18.02.19upto + tmp1=sort(Par) + Par=c() + tmp2=-1 + for(jj in Looprange(1,length(tmp1))){ + tmp=Op(jj,tmp1) + if(abs(tmp-tmp2)>Eps){ + Par=c(Par,tmp) + tmp2=tmp + } + } + Tmp1=Nohiddenpara2(Par,Fk,1,Np,Eps,Eps2) + Out=c(Out,Tmp1) + CRVSFHIDDENDATA<<- c(CRVSFHIDDENDATA,HIDDENDATA) + Tmp=paste('Crvsfdata',formatC(Nn,width=2,flag="0"),'/',sep='') + Tmp=paste(Tmp,as.character(length(FkL)),' obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + } + return(Out) +} + +Crv3onsfparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Fk=varargin[[1]] + if(!is.list(Fk)){ + FkL=list(Fk) + }else{ + FkL=Fk + } + Fbdy=Projpara(varargin[[2]]) + Fd=varargin[[3]] + Fullformfunc(Fd) #18.02.17 + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + Out=list() + CRVONSFHIDDENDATA<<- list() + for(Nn in Looprange(1,length(FkL))){ + Fk=Op(Nn,FkL) + Tmp=Projpara(Fk) + Par=Partitionseg(Tmp,Fbdy,Eps,Eps2,0) + for(jj in Looprange(1,length(ADDPOINT))){ + tmp=Parapt(Op(jj,ADDPOINT)) + tmp=Nearestpt(tmp,Projpara(Fk)) + if(tmp[[3]]<Eps){ + Par=c(Par,tmp[[2]]) + } + } + Par=sort(Par) + Tmp1=Nohiddenpara2(Par,Fk,1,Np,Eps,Eps2) + Out=c(Out,Tmp1) + CRVONSFHIDDENDATA<<- c(CRVONSFHIDDENDATA,HIDDENDATA) + Tmp=paste('Crvonsfdata',formatC(Nn,width=2,flag="0"),'/',sep='') + Tmp=paste(Tmp,as.character(length(FkL)),' obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + } + return(Out) +} + +Crvonsfparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Fuv=varargin[[1]] + Fbdy3=varargin[[2]] + Fd=varargin[[3]] + Fullformfunc(Fd) + if(!is.list(Fuv)){ + Fuv=list(Fuv) + } + FkL=list() + for(jj in Looprange(1,length(Fuv))){ + tmp1=Op(jj,Fuv) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + FkL=c(FkL,list(tmp2)) + } + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + Out=Crv3onsfparadata(FkL,Fbdy3,Fd,Np,Eps,Eps2) + return(Out) +} + +Wireparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Fbdy3=varargin[[1]] + Fd=varargin[[2]] + FdL=Fullformfunc(Fd) + DuL=varargin[[3]] + DvL=varargin[[4]] + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(5,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + if(is.numeric(DuL)){ + tmp1=DuL + DuL=list() + for(jj in Looprange(1,tmp1)){ + tmp=jj*(URNG[2]-URNG[1])/(tmp1+1) + DuL=c(DuL,list(tmp)) + } + } + if(is.numeric(DvL)){ + tmp1=DvL + DvL=list() + for(jj in Looprange(1,tmp1)){ + tmp=jj*(VRNG[2]-VRNG[1])/(tmp1+1) + DvL=c(DvL,list(tmp)) + } + } + Fuv=list() + for(jj in Looprange(1,length(DuL))){ + tmp1=paste("c(",as.character(Op(jj,DuL)),",",VNAME,")",sep="") + tmp2=paste("N=",as.character(Np[2]),sep="") + tmp1=Paramplot(tmp1,Op(6,FdL),tmp2) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,tmp) + } + Fuv=c(Fuv,list(tmp2)) + } + FkL=list() + for(jj in Looprange(1,length(Fuv))){ + tmp1=Op(jj,Fuv) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + FkL=c(FkL,list(tmp2)) + } + Tmp1=proc.time()-starttime + cat(UNAME,"direction started","\n") + Out1=Crv3onsfparadata(FkL,Fbdy3,Fd,Np,Eps,Eps2) + WIREHIDDENDATA<<- CRVONSFHIDDENDATA + Fuv=list() + for(jj in Looprange(1,length(DvL))){ + tmp1=paste("c(",UNAME,",",as.character(Op(jj,DvL)),")",sep="") + tmp2=paste("N=",as.character(Np[2]),sep="") + tmp1=Paramplot(tmp1,Op(5,FdL),tmp2) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,tmp) + } + Fuv=c(Fuv,list(tmp2)) + } + FkL=list() + for(jj in Looprange(1,length(Fuv))){ + tmp1=Op(jj,Fuv) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + FkL=c(FkL,list(tmp2)) + } + cat(VNAME,"direction started","\n") + Out2=Crv3onsfparadata(FkL,Fbdy3,Fd,Np,Eps,Eps2) + WIREHIDDENDATA<<- c(WIREHIDDENDATA, CRVONSFHIDDENDATA) + Out=c(Out1,Out2) + return(Out) +} + +Intersectcrvsf<- function(...){ + # bdyeq is the equation of boundary f(x,y,z) =0 + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + crv=varargin[[1]] + Fd=varargin[[2]] + Fullformfunc(Fd) + bdyflg=0 + bdyeq=varargin[[Nargs]] + if(is.character(bdyeq)){ + Nargs=Nargs-1 + bdyflg=1 + tmp=strsplit(bdyeq,"=",fixed=TRUE) + tmp=tmp[[1]] + if(length(tmp)>1){ + bdyeq=paste("(",tmp[1],")-(",tmp[2],")",sep="") + } + tmp=paste("bdyeq<- function(P){x=P[1];y=P[2];z=P[3];",bdyeq,"}",sep="") + eval(parse(text=tmp)) + } + Eps0=10^(-4) + Np=c(50,50) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(3,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=tmp} + if(ctr==2){Eps2=tmp} + } + } + PtL=list() + for(I in Looprange(1,Length(crv)-1)){ + Pa=Op(I,crv) + Pb=Op(I+1,crv) + if(bdyflg==0){ + tmp=Meetpoints(Pa,Pb,1,Np,Eps) + }else{ + M1=bdyeq(Pa); M2=bdyeq(Pb) + if(M1*M2>= 0){ #18.02.21 + if(((M1>0) && (M2>0)) || ((M1< 0) && (M2< 0))){ + next + } + if(M1==0){ + tmp=list(Pa) + }else{ + tmp=list(Pb) + } + }else{ + while(Norm(Pb-Pa)>Eps0){ + if(bdyeq(Pa)==0){ + tmp=list(Pa) + break + } + if(bdyeq(Pa)*bdyeq((Pa+Pb)/2)>0){ + Pa=(Pa+Pb)/2 + }else{ + Pb=(Pa+Pb)/2 + } + } + tmp=list(1/(M1-M2)*(-M2*Pa+M1*Pb)) + } + } + PtL=c(PtL,tmp) + } + Tmp=paste('Intersectcrvsf obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + return(PtL) +} + +Sfcutparadata<- function(...){ + varargin=list(...) + Nargs=length(varargin) + CutD=varargin[[1]] + Fbdy3=varargin[[2]] + Fd=varargin[[3]] + FdL=Fullformfunc(Fd) + Np=c(50,50) + Eps0=10^(-4) + Eps=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + Tmp=varargin[[jj]] + if((length(Tmp)>1)||(Tmp>1)){ + Np=Tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps=Tmp} + if(ctr==2){Eps2=Tmp} + } + } + starttime=proc.time() + Tmp=strsplit(CutD,'=') + Tmp=Tmp[[1]] + if(length(Tmp)==1){ + Eq=CutD + }else{ + Eq=paste("(",Tmp[1],")-(",Tmp[2],")",sep="") + } + Eq=gsub("x","Xfunc(U,V)",Eq,fixed=TRUE) + Eq=gsub("y","Yfunc(U,V)",Eq,fixed=TRUE) + Eq=gsub("z","Zfunc(U,V)",Eq,fixed=TRUE) + Tmp=paste("Eqfun<<- function(U,V){",Eq,"}",sep="") ######## + eval(parse(text=Tmp)) + Du=(URNG[2]-URNG[1])/Np[1] + Dv=(VRNG[2]-VRNG[1])/Np[2] + Out=list();Out2=list() + for(J in Looprange(1,Np[2])){ ##### + Vval1=VRNG[1]+(J-1)*Dv + Vval2=VRNG[1]+J*Dv + for(I in Looprange(1,Np[1])){ ##### + Uval1=URNG[1]+(I-1)*Du + Uval2=URNG[1]+I*Du + Eval11=Eqfun(Uval1,Vval1) + Eval12=Eqfun(Uval1,Vval2) + Eval21=Eqfun(Uval2,Vval1) + Eval22=Eqfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + P1=Op(K,PL); P2=Op(K+1,PL) + M1=Op(K,VL); M2=Op(K+1,VL) + if(abs(M1)<Eps0){ + QL=Appendrow(QL,P1) + next + } + if(abs(M2)<Eps0){ +# QL=Appendrow(QL,P2) + next + } + if((M1> 0) && (M2> 0)){ + next + } + if((M1< 0) && (M2< 0)){ + next + } + Tmp=1/(M1-M2)*(-M2*P1+M1*P2) + QL=Appendrow(QL,Tmp) + } + if(Length(QL)==2){ + q11=QL[1,1];q12=QL[1,2];q21=QL[2,1];q22=QL[2,2] + if(((q11==a1)&&(q21==a1))||((q11==a3)&&(q21==a3))){ + if(((q21==b1)&&(q22==b1))||((q21==b3)&&(q22==b3))){ + Out2=c(Out2,list(QL)) + }else{ + Out=c(Out,list(QL)) + } + next + } + if(((q12==b1)&&(q22==b1))||((q12==b3)&&(q22==b3))){ + if(((q11==a1)&&(q21==a1))||((q11==a3)&&(q21==a3))){ + Out2=c(Out2,list(QL)) + }else{ + Out=c(Out,list(QL)) + } + next + } + Out=c(Out,list(QL)) + } + } + } + while(length(Out2)>0){ + tmp1=Out2[[1]] + Out=c(Out,list(tmp1)) + Out2=Out2[-1] + rmv=c() + for(jj in Looprange(1,length(Out2))){ + tmp2=Out2[[jj]] + diff1=Norm(tmp2[1,]-tmp1[1,])+Norm(tmp2[2,]-tmp1[2,]) + diff2=Norm(tmp2[1,]-tmp1[2,])+Norm(tmp2[2,]-tmp1[1,]) + if((diff1<Eps0)||(diff2<Eps0)){ + rmv=c(rmv,jj) + next + } + } + Out2=Out2[-rmv] + } + Out=Connectseg(Out,Eps) + Tmp1=Out + Out=list() + for(ii in Looprange(1,length(Tmp1))){ + Tmp2=Op(ii,Tmp1) + Tmp3=c() + for(jj in Looprange(1,Length(Tmp2))){ + Tmp=Op(jj,Tmp2) + Tmp=XYZfunc(Tmp[1],Tmp[2]) + if(Length(Tmp3)>0){ + if(Norm(Op(Length(Tmp3),Tmp3)-Tmp)<Eps){next} + } + Tmp3=Appendrow(Tmp3,Tmp) + } + Out=c(Out,list(Tmp3)) + } + Out=Crv3onsfparadata(Out,Fbdy3,Fd,Np,Eps,Eps2) + return(Out) +} diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent.r b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent.r new file mode 100755 index 0000000000..be7bba6346 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent.r @@ -0,0 +1,14960 @@ +# 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/> + + +######################################### + +ThisVersion<- "KeTpic for R v5_2_4(20190511)" + +print(ThisVersion) + +# 20190511 +# Implicitplot changed (Eps=> 10^(-6)) +# 20190508 +# Implicitplot debugged ( bisection method employed ) +# 20190409 +# Plotdata debugged ( Exclution at left side) +# 20190408 +# Projpara debugged ( for a single point ) +# 20190405 +# Drwpt changed(Incolor,Same) +# Makecurves changed(Drwpt) +# 20190322 +# Plotdata debugged (in the case fo Exc) +# 20190127 +# Mvprod added +# 20181231 +# Drwpt debugged/changed ( grep removed, N=8 set ) +# 20181230 +# Drwpt changed ( Same, Incolor ) +# 20181128 +# Objthicksurf debugged +# 20181031 +# space before # removed +# 20181024 +# Wireparadata debugged ( for DuL(DvL)=c(..) ) +# Nohiddenpara2 debugged (for SeL=Null ) +# 20181020 +# Setscaling changed ( Setscaling(scalex,scaley) supported ) +# 20181019 +# Arrowhead changed(debugged) ( for basic1.cs ) +# 20181017 +# Drwxy debugged (Doscaling) +# Arrowhead debugged (Unscaling removed) +# Paramplot debugged (Assign(fun,var,"t")) +# 20181015 +# Listplot debugged ( Unscaling implemented ) +# 20180929 +# Paramplot Plotdata, Spacecurve , Implicitplot changed +# ( Dt,dx not divided by N) +# Shade changed (Kyoukai => Joincrvs) +# 20180928 +# Paramplot changed ( case of stationary point) +# 20180901 +# Objcurve debugged ( Assign rewritten ) +# 20180820,21 +# Drwxy changed ( optional arguments added ) +# Setax changed (ARROWSIZE removed ) +# 20180812 +# Assign debugged ( case nchar(vname)>1) +# 20180808 +# Scalept3pt changed (ratio) +# 20180807 +# Reflect3pt,Reflect3data,Scale3pt,Scale3data added +# 20180717 +# Hatchdata debugged (width option) +# Enclosing debugged ( for closed curve ) +# 20180713 +# Enclosing2 debugged (for Lineplot: distance of pts added) +# 20180711 +# Enclosing2 debugged (length => Length) +# 20180707 +# Enclosing2 debugged (epspara) +# 20180706 +# Enclosing2 debugged (crv => c) +# Hatchdata changed ( Interval > *2 ) +# 20180621 +# Kyoukai debugged (1st point converted to matrix, length=>Length) +# 20180615 +# Assign changed (Replace function added) +# 20180603 +# Setcolor debugged (length(Iro)) +# Scaledata,Reflectdata,Rotatedata,Translatedata changed ( for point list) +# 20180602 +# Setcolor changed (rgb supported) +# 20180523 +# Mkskeletondata debugged +# 20180517 +# Sfbdparadata debugged ( tmp2[]=>tmp[2]) +# 20180511 +# Arrowhead,Arrowheaddata debugged ( for closed curve) +# 20180510 +# Plotdata,Paramplot changed ( Assign added for KeTCindy ) +# Texsetctr debugged (grep, fixed=T) +# Anglemark debugged ( for PB,PA,angle) +# 20180509 +# Crvonsfparadata renamed to Crv2onsfparadata +# Makecurves debugged ( Looprange used ) +# 20180506 +# Anglemark changed ( PB,PA,angle) supported +# 20180501 +# Wireparadata changed and debugged ( is.numeric => length==1 ) +# 20180402 +# Implicitplot largely changed +# 20180327 +# Kyoukai debugged +# 20180317 +# IntersectcurvesPp changed and debugged +# Intersectpartseg changed (Eps00 ) +# Collectsameseg added, Collectnear commented out +# 20180306 +# PthiddenQ,Meetpoints,Sfcutparadata changed (to avoid duplications ) +# Sfbdparadata changed ( for near points in Implicitdata ) +# Envelopedata, Evlpfun added +# 20180305 +# (for surface drwaings ) Eps => Eps1 +# 2018.02.27 +# Nohiddenpara2,Crvsfparadara debugged (Eps=>Eps0) +# 2018.02.26 +# Sfcutparadata changed +# Partcrv3 debugged +# Projcurve rewritten +# Nohiddenparadata debugged +# PthiddenQ debugged +# 2018.02.24 +# Sfcutdata added ( for functions ) +# Meetpoints debugged (case Norm(PtB-PtA)<Eps0) +# 2018.02.23 +# Makevaltable2 added ( for functions ) +# 2018.02.23 +# Crvonsfparadata,Crv3onsfparadata added +# Wireparadata added +# 2018.02.22 +# PthiddenQ,Nohiddenpara2 changed (Eps2) +# 2018.02.21 +# PthiddenQ,Meetpoints debugged +# Crvsfparadata debugged (OTHERPARTITION) +# Partitionseg debugged (for non-list) and changed (Ns=0) +# Intersectcrvsf added +# 2018.02.19 +# Groupnearpt added +# Collectnear debugged +# Meetpoints,PthiddenQ debugged and changed (Groupnearpt used ) +# Parapt changed (for point list ) +# Partitionseg changed (remove close value ) +# Fullformfunc changed (Initialization of ADDPOINT) +# Addpoints added +# 2018.02.18 +# Projpara debugged ( for empty data, Mix replace ) +# WriteOutData debugged (for emply data ) +# Sfbdparadata,Cuspparadata debugged +# Meetpoints replaced +# 2018.02.17 +# PthiddenQ replaced +# 2018.02.15 +# Cancoordpara debugged (X=-... ) +# 2018.02.14 +# Paramoncrv,Pointoncrv renamed to ...curve +# 2018.02.12 +# Nohiddenpara2 debugged ( CUSPPT should be a list ) +# Dropnumlistcrv changed (Eps) +# 2018.02.11 +# Paramocrv debugged ( case N=Length(PtL) ) +# Sfbdparadata, Borderparadata, Makexybdy, Partitionseg, +# Evlptablepara, Fullformfunc, Dropnumlistcrv, Cuspsplitpara, +# PthiddenQ, Nohiddenpara2 added +# Crvsfparadata, Meetpoints, Clipdomain added +# 2018.02.10 +# Partcrv3 debugged +# 2018.02.09 +# Ptstart,Ptend changed ( for the case fig is empty) +# Norm changed (Dotprod used ) +# 2018.02.07 +# Collectnear debugged (Looprange ) +# Intersectcurves debugged (sum) +# 2018.02.06 +# Kukeiiwake debugged ( ParamonCurve -> Paramoncrv ) +# 2018.02.05 +# Dotprod changed ( crossprod not used ) +# Intersectpartseg changed ( case of length of result =1) +# 2018.02.04 +# Diff added ( func, withvar, (varnamevalue1,... )) +# Funvalue added ( for an expression ) +# 2018.02.02 +# Enclosing2 changed ( for distant curves, startpt option removed ) +# 2018.02.01 +# Intersectline,Intersectseg,...,Intersectcuves added +# Quicksort added +# Enclosing2 added (incomplete) +# 2018.01.29 +# Length added +# 2017.12.24 +# Objpolyhedron added +# 2017.12.23 +# Objsymb, symb3data added +# Objrecs, Objpolygon debugged +# Objthicksurf added +# 2017.12.22 +# Openobj,Closeobj,Writeobjpoint,Printobjstr,Objname,Objsurf added +# Crossprod added +# Objjoin, Objcurve, Objrecs, Objpolygon, Objsymb added +# Spacecurve debugged +# 2017.12.17 +# Setunitlen debugged ( MEMORI ) +# 2017.12.13 +# ReadOutData debugged +# 2017.12.11 +# Enclosing debugged ( appendrow -> Appendrow ) +# 2017.11.29 +# Anglemark, Arrowhead, Ovaldata debugged ( Circldeta included ) +# 2017.11.27 +# Anglemark changed ( Scilab 16.12.29) +# Plotdata,Paramplot,Spacecurve changed ( Scilab 16.12.13) +# Enclosing changed ( Scilab 16.10.09) +# Arrowhead,Arrowline changed ( Scilab 15.06.11) +# Definecolor added ( Scilab 15.05.04) +# 2017.11.26 +# Exprrot, Letterrot debugged ( `) +# 2017.11.24 +# Deqplot debugged (Looprange) +# 2017.11.20 +# InWindow debugged (for length=1) +# 2017.10.28 +# Openfile changed (Creator) +# 2017.10.23 +# ReadOutData greatly changed +# 2017.10.11 +# Drwpt debugged (Flattenlist ) +# 2017.10.08 +# Bezier debugged ( Num ) +# 2017.10.07 +# ReadOutData debugged ( for null data ) +# 2017.10.06 +# Deqdata, Deqplot added +# Connectseg remade(bug) +# 2017.09.30 +# Bezierpt, Bezier added +# 2017.09.29 +# Ptcrv debugged +# 2017.09.28 +# Openfile changed +# 2017.09.24 +# Circledata debugged +# Kyoukai changed (Eps) +# Shade updated +# 2017.09.22 +# Setcolor changed +# Plotdata,Paramplot,Spacecurve changed (N-1 -> N) +# 2017.09.21 +# Shade changed (Sci 17.01.09) +# 2017.09.17 +# Ovaldata,Assignadd changed +# Dist added +# Cicledata changed +# Bowdata debugged (Circledata,etc) + +# 2015.11.05 +# WriteOutData changed + +# 2015.10.29 +# WriteOutData changed ( endmark //// ) + +# 2015.10.24 +# ReadOutData changed ( in case of listlength=1 ) + +# 2014.12.23 +# ReadOutData added + +# 2014.12.17 +# WriteOutData added + +# 2014.0905 +# Unscaling debugged MARKLENI => MARKLEN +# 2014.03.31 +# PhHiddenData added +# 2014.03.30 +# Facesdata changed ( for Hiddendata ) +# 2014.03.23 +# MARKLEN separated, Rotate3data debugged + +# 2013.12.19 +# Openfile, Closefile, Bowname, Bownamerot + +# 2013.11.13 +# Arrowhead, Arrowheaddata + +# 2013.08.07 +# Cancoordpara added + +# 2013.08.07 +# Integrate added + +# 2013.05.20 +# Openfile changed + +# 2013.05.03 +# Tabledata, Pointdata changed +# Dividetable, Partframe added + +# 2013.02.10 +# Ketinit added + +# 2012.01.07 +# Arrowline, Arrowhead ( Cut implemented ) + +# 2011.12.18 +# Framedata ( compliant for list ) + +# 2011.12.12 +# Skeletonparadata... ( Flattellist used) + +# 2011.11.27 +# drwboxframe + +# 2011.11.07 +# metacommands added + +# 2011.11.02 +# Joingraphics ( for list structure ) + +# 2011.08.24 +# Setcolor ( c(1,0,0,0.5) etc ) +# Rotate3data ( Point is available ) + +# 2011.07.19 +# Drwline, Letter, Expr +# Drwboxplot( etc ) min,max => outliners +# Drwline ( unfinished in the case of "integer" ) + +# 2011.06.25 +# joincrvs debugged + +# synchro with ketpict2e + +# 2011.06.01 +# Bowdata debugged + +#2011.05.28 +# Ratiocmyk, Setcolor ( new ) + +#2011.04.28 +# Htickmark, Vtickmark debugged + +#2011.03.08 +# Drwboxframe debugged +# Putrow, Putrowexpr debugged (Dpos ) + +#2011.03.02 +# Tabledata ( index of hline ), PutcoL, PutcoLexpr ( "r",...) debugged +# Texcom changed ( // => backslash ) + +#2011.01.07 +# Dividegraphics, Splinedat are changed significantly +# Readtextdata is changed + +#2011.01.04 +# Derivative, Integrate are added + +#2010.12.07 +# Translatedata, Scaledata, Reflectdata changed ( efficient for vector ) +# Rotatedata changed ( deg : logical ) +# HIstplotdata, Drwhistplot ( type => freq , fpplot (added) ) + +# 2010.12.04 +# WindispT changed ( tickmark ) +# Lineplot changed ( mag=> length ) +# Plotdata debugged ( 'E=fun', 'D=') +# Enclosing changed (return PD) + +# 2010.12.02 +# WindispT changed +# Makecurves debugged + +# 2010.11.27 +# Pointdata changed ( efficient for matrix and data.frame ) +# WindispT +# Setwindow ( decide from data ) +# Assign debugged ( strsplit => gsub(fixed=T)) + +# 2010.11.20 +# Flattenlist, WindispT +# Splinedata changed( efficient for data.frame ) + +#2010.08.19 ( Maybe not finished ) +# Stripblanks +# Fullformfunc, Sf3data + +#2010.08.17 +# Phparadata, Phpersdata, Phspersdata, Phsparadata +# Facesdata, MakeveLfaceL, Menkakusi2 +# Rotate3data +# Skeletonpersdata, Skeletonpers3data, Makeskeletonpersdata +# Embed + +#2010.08.16 +# Spacecurve changed +# CameracoordCurve, Partcrv3, Projpers, CameraCurve, +# Perspt, Xyzaxpersname, Invperspt, Zparapt, Zperspt + +# 2010.08.15 +# Phcutoffdata added + +# 2010.08.13 +# Phcutdata, Spacecurve debugged +# Setangle changed + +# 2010.08.09 +# Spacecurve +# Rotate3data, Rotate3pt +# Phcutdata + +# 2010.08.08 +# Implementing 3d +# Initangle, Setangle, Setpers, SetstereoL, SetstereoR +# Mixlength +# Spaceline, Projpara, ProjCurve, Parapt +# Xyzax3data, Xyzaxparaname +# Cancoordpers, Invparapt, ProjcoordCurve +# Skeletonparadata, Skeletonpara3data, Makeskeletondata, Kukannozoki + +# 2010.07.25 +# Rotatedata changed +# Drwline changed (list of list) + +# 2010.04.09 +# Stat package added + +# 2010.04.02 +# Putcolexpr, Putrowexpr + +# 2010.04.02 + +# Windisp, Op changed +# Execmd added +# Texnewcmd, Texrenewcmd, Texend, +# Texctr, Texnewctr, Texsetctr +# Kyoukai debugged + +# 2010.01.20 +# Partcrv, Makeshasen : debugged + +# 2010.01.23 +# Ovaldata, Ovalbox added + +# 2010.01.27 +# Readtextdata changed +# Putrow, PutcoL debugged ( Putcol is OK) + +# 2010.01.31 +# Writetextdata added + +# 2010.02.12 +# Texvalctr, Texthectr added + +# 2010.02.22 +# Execmd changed + +# 2010.02.23 +# Op, Windisp changed + +# 2010.02.24 +# Execmd changed + +# 2010.03.07 +# Dotfilldata (Kosa>1) + +# 2010.03.21 +# Mixjoin +# Koutenlist (bug) + + +# 2010.03.24 +# Arrowhead ( bug in the case of "l" ) + +# 2010.03.28 +# Tabledata +# Diagcelldata ( New ) + +# 2010.03.30 +# Tabledata + +########################################### + +XMIN<- -5 +XMAX<- 5 +YMIN<- -5 ; YMAX<- 5 +ZIKU<- "l" +#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*2 #17.10.07 +TenSize<- TenSizeInit +Wfile<-"" +MEMORI<- 0.05 +MEMORIInit<- MEMORI +MEMORINow<- MEMORI +MARKLEN<- 0.05 +MARKLENInit<- MARKLEN +MARKLENNow<- MARKLEN +GENTEN<- c(0,0) +YaSize<- 1 +YaAngle<- 18 +YaPosition<- 1 +YaThick<- 1 +YaStyle<- "tf" +PHI<- 30*pi/180 +THETA<- 60*pi/180 +FocusPoint<- c(0,0,0) +EyePoint<- c(5,5,5) +ASSIGNLIST<- list("`","'") + +SCALEX<- 1 +SCALEY<- 1 +LOGX<- 0 +LOGY<- 0 + +TEXFORLEVEL<- 0 +TEXFORLAST<- list() + +####################### + +Ketinit<- function(){ +XMIN<<- -5 +XMAX<<- 5 +YMIN<<- -5 ; YMAX<<- 5 +ZIKU<<- "l" +#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*2 #17.10.07 +TenSize<<- TenSizeInit +Wfile<<-"" +MEMORI<<- 0.05 +MEMORIInit<<- MEMORI +MEMORINow<<- MEMORI +MARKLEN<<- 0.05 +MARKLENInit<<- MARKLEN +MARKLENNow<<- MARKLEN +GENTEN<<- c(0,0) +YaSize<<- 1 +YaAngle<<- 18 +YaPosition<<- 1 +YaThick<<- 1 +YaStyle<<- "tf" +PHI<<- 30*pi/180 +THETA<<- 60*pi/180 +FocusPoint<<- c(0,0,0) +EyePoint<<- c(5,5,5) +ASSIGNLIST<<- list("`","'") + +SCALEX<<- 1 +SCALEY<<- 1 +LOGX<<- 0 +LOGY<<- 0 + +TEXFORLEVEL<<- 0 +TEXFORLAST<<- list() +} + +#------------------------------------------------------- + +Appendrow<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Out<-c() + Nc<- 0 + for (I in 1:Nargs) + { + Dt<- varargin[[I]] + Nc<- max(Nc,Ncol(Dt)) + if(class(Dt)=="matrix") Dt<-as.numeric(t(Dt)) + Out<- c(Out,Dt) + } + if(Nc>0) + { + Out<-matrix(Out, nrow=Nc) + Out<-t(Out) + } + else + { + Out<-c() + } + return(Out) +} + +Datalength<-function(Data) +{ + if(length(Data)==0) return(0) + if(mode(Data)=="numeric") return(Nrow(Data)) + if(mode(Data)=="character") return(nchar(Data)) + if(mode(Data)=="list") return(length(Data)) +} + +Crossprod<- function (a,b){ # 17.12.22 + 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=c(Tmp1,Tmp2,Tmp3) + }else{ + Out=a[1]*b[2]-a[2]*b[1] + } + return(Out) +} + +Dotprod<-function(a,b){ # 18.02.05 + nn=min(length(a),length(b)) + out=0 + for(jj in Looprange(1,nn)){ + out=out+a[jj]*b[jj] + } + return(out) +} + +Mvprod<- function(...){ # 190127 + varargin<- list(...) + mat=varargin[[1]] + vec=varargin[[2]] + if(length(varargin)>2){ + nn=varargin[[3]] + }else{ + nn=1 + } + mm=round(length(vec)/nn) + mat=matrix(mat,ncol=mm,byrow=TRUE) + vec=matrix(vec,nrow=nn,byrow=TRUE) + out=c() + for(jj in 1:nn){ + tmp=mat%*%Op(jj,vec) + out=c(out,tmp) + } + if(nn>1){ + out=matrix(out,nrow=nn,byrow=TRUE) + } + return(out) +} + +Dist<- function(...) # 17.09.17 +{ + varargin<- list(...) + a=varargin[[1]] + if(length(varargin)==1){ + tmp=sqrt(Dotprod(a,a)) + return(as.vector(tmp)) + } + else{ + b=varargin[[2]] + tmp=sqrt(Dotprod(b-a,b-a)) + retun(as.vector(tmp)) + } +} + +Member<-function(A,L) +{ + N<-length(L); + if(length(N)==0) return(FALSE) + for (I in 1:N) + { + if(class(L)=="list") + { + Tmp<-L[[I]] + } + else + { + Tmp<-L[I] + } + if(mode(A)=="numeric") + { + if(Norm(A-Tmp)==0) return(TRUE) + } + else + { + if(A==Tmp) return(TRUE) + } + } + return(FALSE) +} + +Norm<-function(V) +{ + Tmp=Dotprod(V,V) #18.02.09 +# Tmp<-as.vector(V); +# Tmp<-crossprod(Tmp,Tmp) + Tmp<-sqrt(Tmp) +# as.numeric(Tmp) +} + +Ncol<-function(P) +{ + if(class(P)=="matrix") return(ncol(P)) + else return(length(P)) +} + +Nrow<-function(P) +{ + if(length(P)==0) return(0) + if(class(P)=="matrix") return(nrow(P)) + else return(1) +} + +Looprange<- function(a,b) +{ +if(a<=b) return(a:b) +return(c()) +} + +Stripblanks<- function(Ch){ + Tmp<- gsub(" ","",Ch,fixed=TRUE) + return(Tmp) +} + +Quicksort<- function(seqL,key){ #18.02.01 + if(length(seqL)<2){ + out=seqL + }else{ + tmp1=Op(1,seqL) + tmp2=Op(2,seqL) + if(Op(key,tmp1)>=Op(key,tmp2)){ + pivot = tmp1 + }else{ + pivot=tmp2 + } + left = list() + right = list() + for(ii in 1:length(seqL)){ + tmp=Op(ii,seqL) + if(Op(key,tmp)< Op(key,pivot)){ + left=c(left,list(tmp)) + }else{ + right=c(right,list(tmp)) + } + } + left = Quicksort(left,key) + right = Quicksort(right,key) + out=c(left,right) + } + return(out) +} + +Derivative<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Fstr<- varargin[[1]] + Vstr<- varargin[[2]] + NvaL<- length(Vstr) + Flg<- 0 + if(Nargs>=3){ + VaL<- varargin[[3]] + Flg<- 1 + } + Str<- paste("deriv(~",Fstr,",c('",Vstr[1],"'",sep="") + for(J in Looprange(2,NvaL)){ + Str<- paste(Str,",'",Vstr[J],"'",sep="") + } + Str<- paste(Str,")",sep="") + if(NvaL<=3){ + Str<- paste(Str,",func=TRUE)",sep="") + } + else{ + Str<- paste(Str,")",sep="") + } + f<- eval(parse(text=Str)) + if(Flg==1){ + if(NvaL<=3){ + if(NvaL==1){V<- f(VaL[1])} + if(NvaL==2){V<- f(VaL[1],VaL[2])} + if(NvaL==3){V<- f(VaL[1],VaL[2],VaL[3])} + } + else{ + for(J in 1:NvaL){ + Tmp<- paste(Vstr[J],'<-',as.character(VaL[J])) + eval(parse(text=Tmp)) + } + V<- eval(f) + } + Out<- attr(V,'gradient') + Out<- Out[1,] + } + else{ + Out<- f + } + return(Out) +} + +Diff<- function(...){ #18.02.04 + varargin=list(...) + Nargs=length(varargin) + fun=varargin[[1]] + withvar=varargin[[2]] + tmp=paste("f<- expression(",fun,")",sep="") + eval(parse(text=tmp)) + nn=nchar(withvar) + for(jj in Looprange(1,nn)){ + tmp=substring(withvar,jj,jj) + f=D(f,tmp) + } + var=c() + val="" + for(jj in Looprange(3,Nargs)){ + tmp=strsplit(varargin[[jj]],"=") + var=c(var,tmp[[1]][1]) + val=paste(val,tmp[[1]][2],",",sep="") + } + if(Length(val)>1){ + val=substring(val,1,Length(val)-1) + f=deriv(f,var,func=TRUE) + tmp=paste("out=f(",val,")",sep="") + out=eval(parse(text=tmp)) + return(out[1]) + }else{ + return(f) + } +} + +Funvalue<- function(...){ + varargin=list(...) + Nargs=length(varargin) + df=varargin[[1]] + var=c() + val="" + for(jj in Looprange(2,Nargs)){ + tmp=strsplit(varargin[[jj]],"=") + var=c(var,tmp[[1]][1]) + val=paste(val,tmp[[1]][2],",",sep="") + } + val=substring(val,1,Length(val)-1) + dfun=deriv(df,var,func=TRUE) + tmp=paste("out=dfun(",val,")",sep="") + eval(parse(text=tmp)) + return(out[1]) +} + +Integrate<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Fstr<- varargin[[1]] + Vstr<- varargin[[2]] + IntvL<- varargin[[3]] + Str<- 'Tmpfun<- function(' + Str<- paste(Str,Vstr,'){',sep='') + Str<- paste(Str,Fstr,'}',sep='') + eval(parse(text=Str)) + Tmpfunv<- function(x){sapply(x,Tmpfun)} + Out<- 0 + for (J in 1:(length(IntvL)-1)){ + Tmp<- integrate(Tmpfunv,IntvL[J],IntvL[J+1]) + Out<- Out+Tmp[[1]] + } + return(Out) +} + +#-------------------------------------- + +######################### +# 180506 (pB,pA,angle) supported + +Anglemark<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-3) + PB<- varargin[[1]] + PA<- varargin[[2]] + PC=varargin[[3]] + r <- 0.5 + if(Nargs>=4){ + r<- varargin[[4]]*r + } + Out=c() + if(length(PC)>1){ #180506from + Tmp=min(Norm(PB-PA),Norm(PC-PA)) + }else{ + Tmp=Norm(PB-PA) + } + if(r>Tmp){ #180506to + return(Out) + } + Cir<- Circledata(c(PA,r)) #17.11.29 + Tmp<- IntersectcrvsPp(Cir,Listplot(PA,PB)) + P1<- Op(2,Op(1,Tmp)) + if(length(PC)>1){ + Tmp<- IntersectcrvsPp(Cir,Listplot(PA,PC)) + P2<- Op(2,Op(1,Tmp)) + if(abs(P1-P2)<Eps){ + Out<-c() + return(Out) + } + 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) + } + }else{ + Tmp1=Pointoncurve(1,Cir)-PA + Tmp2=Pointoncurve(2,Cir)-PA + Tmp=Dotprod(Tmp1,Tmp2)/(Norm(Tmp1)*Norm(Tmp2)) + Tmp=PC/acos(Tmp) + if(P1+Tmp<Length(Cir)){ + Out<- Partcrv(P1,P1+Tmp,Cir) + }else{ + Tmp1= Partcrv(P1,Length(Cir),Cir) + Tmp2= Partcrv(1,P1+Tmp-Length(Cir)+1,Cir) + Out<- Joincrvs(Tmp1,Tmp2) + } + } + Out +} + +############################################## + +Arrowdata<- function(...) +{ + varargin<- list(...) + 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 in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + if(length(Tmp)>1){ + R<- Tmp + } + else{ + if(Flg==0){ + Ookisa<- Ookisa*Tmp + } + if(Flg==1){ + if(Tmp<5){ + Hiraki<- Tmp*Hiraki + } + else{ + Hiraki<- Tmp + } + } + if(Flg==2){ + R<- P+Tmp*(Q-P) + } + else{ + R<- P+Yapos*(Q-P) + } + if(Flg==3){ + Futosa<- Tmp + } + Flg<- Flg+1 + } + } + if(mode(Tmp)=="character"){ + Tmp<- grep("=", Tmp) + if(length(Tmp)>0){ + eval(parse(text=Tmp)) + Futosa<- Futosa*Thickness + R<- P+Position*(Q-P) + } + else{ + Str<- Tmp + } + } + } + Tmp1<- Listplot(c(P,Q)) + Tmp2<- Arrowheaddata(R,Q-P,Ookisa,Hiraki,Futosa,Str) + Out<- Joingraphics(Tmp1,Tmp2) +} + +###################################### + +# 2018.10.19 for new basic1.cs +# 2013.11.13 No Intersect debugged + +Arrowhead<-function(...){ +## Scaling is implemented +## 12.01.08 Kirikomi + Eps=10^(-3) + varargin<-list(...) + 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 in Looprange(3,Nargs)){ + Tmp<-varargin[[I]] + if(is.character(Tmp)){ + Equal<- grep("=",Tmp,fixed=TRUE) # 12.01.07 from + if(length(Equal)>0){ + Tmp1<- strsplit(Tmp,"=",fixed=TRUE) + Tmp2<- Tmp1[[1]] + if(Tmp2[1]=="Cut" || Tmp2[1]=="cut"){ + Tmp<- paste("Cut=",Tmp2[2],sep="") + eval(parse(text=Tmp)) + } + }else{ + Str<- Tmp + } # 12.01.07 until + } + if(is.numeric(Tmp) && length(Tmp)==1){ + if(Flg==0) Ookisa<-Ookisa*Tmp + if(Flg==1){ + if(Tmp<5) Hiraki<-Tmp*Hiraki + else Hiraki<-Tmp + } + if(Flg==2) Futosa<-Tmp + Flg<-Flg+1 + } + } + Ookisa<-1000/2.54/MilliIn*Ookisa + Theta<-Hiraki*pi/180 + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + if(Nrow(Houkou)>1){ + Tmp<-Nearestpt(P,Houkou) #181019 (2lines) + P<- Tmp[[1]] + I<-floor(Tmp[[2]]) + if(I==1){# 180511 + if(Norm(Ptend(Houkou)-Ptstart(Houkou))<Eps){ + I=Numptcrv(Houkou) + } + } + G<-Circledata(c(P,Ookisa*cos(Theta)),"Num=10") #181019(2lines) + Flg<- 0 # 13.11.13 + JL<-seq(I,1,by=-1) + for (J in JL){ + Tmp1=matrix(c(P,Op(J,Houkou)),ncol=2,byrow=TRUE) #181019 +# Tmp<-IntersectcurvesPp(Tmp1,G,0.001,0.01) + Tmp<-IntersectcrvsPp(Tmp1,G) + if(Length(Tmp)>0){ + Houkou<-P-Op(1,Tmp[[1]]) + Flg<- 1 + break + } + } + if(Flg==0){ # 13.11.13 + print("Arrowhead may be too large (no intersect)") + return(P) + } + } + Ev<--1/Norm(Houkou)*Houkou + Nv<-c(-Ev[2],Ev[1]) + if(length(grep("c",Str))>0){ + P<- P-0.5*Ookisa*cos(Theta)*Ev + } + if(length(grep("b",Str))>0){ + P<- P-Ookisa*cos(Theta)*Ev + } + A<- P+Ookisa*cos(Theta)*Ev+Ookisa*sin(Theta)*Nv + B<- P+Ookisa*cos(Theta)*Ev-Ookisa*sin(Theta)*Nv + if(length(grep("l",Str,fixed=TRUE))>0){ + Tmp<- matrix(c(A,P,B),ncol=2,byrow=TRUE)#181019(2lines) + Tmp1<- Unscaling(Tmp) + Drwline(Tmp1,Futosa) + } + else{ + C<- P+(1-Cut)*((A+B)/2-P) # 12.01.07 + Tmp<- matrix(c(A,P,B,C,A),ncol=2,byrow=TRUE) #181019(2lines) + Tmp1<- Unscaling(Tmp) + Shade(Tmp1) + Tmp= matrix(c(A,P,B,C,A,P),ncol=2,byrow=TRUE)#181019(2lines) + Tmp1=Unscaling(Tmp) + Drwline(Tmp1,0.1) # 15.06.11, 15.06.14 + } +} + +############################################ + +# 2013.11.13 No intersect debugged + +Arrowheaddata<- function(...) +{ ## Scaling is implemented + Eps=10^(-3) + varargin<- list(...) + Nargs<- length(varargin) + P<- varargin[[1]] + Houkou<- varargin[[2]] + Ookisa<- 0.2*YaSize + Hiraki<- YaAngle + Futosa<- 0 + Thickness<- 1 + Str<- YaStyle + Flg<- 0 + for (I in Looprange(3,Nargs)){ + Tmp<-varargin[[I]] + if(mode(Tmp)=="character"){ + Tmp1<-grep("=",Tmp) + if(length(Tmp1)>0){ + eval(parse(text=Tmp)) + Futosa<- Thickness + } + else{ + Str<- Tmp + } + } + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + if(Flg==0) Ookisa<-Ookisa*Tmp + if(Flg==1){ + if(Tmp<5) Hiraki<-Tmp*Hiraki + else Hiraki<-Tmp + } + if(Flg==2) Futosa<-Tmp + Flg<-Flg+1 + } + } + Theta<- Hiraki*pi/180 + if(Nrow(Houkou)>1){ + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + Tmp<-Nearestpt(P,Houkou) + A<-Tmp[[1]] + I<-floor(Tmp[[2]]) + if(I==1){# 180511 + if(Norm(Ptend(Houkou)-Ptstart(Houkou))<Eps){ + I=Numptcrv(Houkou) + } + } + G<-Circledata(c(P,Ookisa*cos(Theta)),N=10) #17.11.29 + Flg<- 0 # 13.11.13 + JL<-seq(I,1,by=-1) + for (J in JL){ + B<- Ptcrv(J,Houkou) + Tmp<- IntersectcrvsPp(Listplot(list(A,B)),G) + if(length(Tmp)>0){ + Flg<- 1 + break + } + A<-B + } + if(Flg==0){ # 13.11.13 + print("Arrowhead may be too large (no intersect)") + return(P) + } + Houkou<-P-Op(1,Tmp[[1]]) + Houkou<- Unscaling(Houkou) + P<- Unscaling(P) + } + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) + Ev<- -1/Norm(Houkou)*Houkou + Nv<- c(-Ev[2],Ev[1]) + if(length(grep("c",Str))>0){ + P<-P-0.5*Ookisa*cos(Theta)*Ev + } + if(length(grep("b",Str))>0){ + P<-P-Ookisa*cos(Theta)*Ev + } + A<-P+Ookisa*cos(Theta)*Ev+Ookisa*sin(Theta)*Nv + B<-P+Ookisa*cos(Theta)*Ev-Ookisa*sin(Theta)*Nv + Tmp<- Listplot(A,P,B) + Out<- Unscaling(Tmp) + return(Out) +} + +########################################## + +Arrowline<- function(...) +{ # 12.01.07 kirikomi + varargin<- list(...) + 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 in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + if(is.character(Tmp)){ + Equal<- grep("=",Tmp,fixed=TRUE) # 12.01.07 from + if(length(Equal)>0){ + Tmp1<- strsplit(Tmp,"=") + Tmp2<- Tmp1[[1]] + if(Tmp2[1]=="Cut" || Tmp2[1]=="cut"){ + Tmp<- paste("Cut=", Tmp2[2],sep="") + Cutstr<- Tmp + } + } + else{ + Str<- Tmp + } # 12.01.07 until + } + if(is.numeric(Tmp) && length(Tmp)==1){ + if(Flg==0) Ookisa<- Ookisa*Tmp + if(Flg==1){ + if(Tmp<5) Hiraki<- Tmp*Hiraki + else Hiraki<- Tmp + } + if(Flg==2) Yapos<- Tmp + if(Flg==3) Futosa<- Tmp + Flg<- Flg+1 + } + } + R<- P+Yapos*(Q-P) + Tmp=Q-Unscaling(0.2*Ookisa/2*(Q-P)/Norm(Q-P)) # 15.10.24 + Drwline(Listplot(c(P,Tmp)),Futosa) + Tmp=SCALEY + Setscaling(1) + Arrowhead(R,Q-P,Ookisa,Hiraki,Futosa,Cutstr,Str) + Setscaling(Tmp) +} + +######################################### + +Assign<- function(...){ + Replace=function (vname,rep,str){#180615from + opv=c("+","-","*","/","(",")","=","<",">",""," ",",") #180812 + out="" + start=1 + Tmp=gregexpr(vname,str,fixed=TRUE) + Vp=Op(1,Tmp) + if(min(Vp)>0){ + for(j in Vp){ + if(j==1){bf=""}else{bf=substring(str,j-1,j-1)} + Tmp=j+nchar(vname)-1 #180812(2lines) + if(Tmp==nchar(str)){af=""}else{af=substring(str,Tmp+1,Tmp+1)} + tmp1=length(intersect(bf,opv)) + tmp2=length(intersect(af,opv)) + tmp=substring(str,start,j+nchar(vname)-1) #180812 + if((tmp1>0)&&(tmp2>0)){ + tmp=gsub(vname,rep,tmp,fixed=TRUE) + } + out=paste(out,tmp,sep='') + start=j+nchar(vname) #180812 + } + } + out=paste(out,substring(str,start,nchar(str)),sep='') + }#180615to + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + ASSIGNLIST<<- list("`",Prime()) + Out<- ASSIGNLIST + return() +# return("Assign reset done"); + } + L<- list("`","'") + if(Nargs%%2==0){ + L<- Mixjoin(L,varargin) + ASSIGNLIST<<- L + Out<- L + return() +# return("Assign set done"); + } + if(Nargs==1){ + Fnstr<- varargin[[1]] + if(nchar(Fnstr)==0){ # case of "" + L<- ASSIGNLIST + Out<- c() + for (I in seq(1,length(L),by=2)){ + Tmp1<- L[[I]] + Tmp2<- L[[I+1]] + if(length(Tmp2)==1){ + Tmp3<- as.character(Tmp2) + } + else{ + if(mode(Tmp2)=="character"){ + Tmp3<- Tmp2 + } + else if(mode(Tmp2)=="list"){ + Tmp3<- makeliststr(Tmp2) + } + else if(mode(Tmp2)=="numeric"){ + Tmp3<- "c(" + for (J in Looprange(1,length(Tmp2))){ + Tmp3<- paste(Tmp3,as.character(Tmp2[J]),sep="") + if(J<length(Tmp2)){ + Tmp3<- paste(Tmp3,",",sep="") + } + } + Tmp3<- paste(Tmp3,")",sep="") + if(class(Tmp2)=="matrix"){ + Nr<- as.character(nrow(Tmp2)) + Tmp3<- paste("matrix(",Tmp3,"nrow=",Nr,")",sep="") + } + } + } + Tmp<- paste(Tmp1,"=",Tmp3,sep="") + Out<- c(Out,Tmp) + } + return(Out); + } + if(substr(Fnstr,1,1)=="?"){ + Fnstr<- substr(Fnstr,2,nchar(Fnstr)) + for (I in seq(1,length(ASSIGNLIST),by=2)){ + Tmp<- ASSIGNLIST[[I]] + if(Tmp==Fnstr){ + Out<- Mixjoin(list(I),ASSIGNLIST[I+1]) + return(Out) + } + } + Out<- "Not found" + return(Out); + } + L<- ASSIGNLIST + } + else{ + if(mode(varargin[[2]])=="numeric"){ + Fnstr<- varargin[[Nargs]] + for (I in Looprange(1,Nargs-1)){ + L[[I]]=varargin[[I]] + } + } + else{ + Fnstr<- varargin[[1]] + for (I in Looprange(2,Nargs)){ + L[[I-1]]<- varargin[[I]] + } + } + } + +FlagL<<- 0 + + for (I in seq(1,length(L),by=2)){ + Vname<- L[[I]] + Val<- L[[I+1]] + if(mode(Val)=="numeric"){ + if(Nrow(Val)==1){ + for (K in Looprange(1,length(Val))){ + if(length(Val)==1){ + Tmp<- Vname + } + else{ + Tmp<- paste(Vname,"[", as.character(K),"]",sep="") + } + if(mode(Val[K])=="numeric"){ + Tmp1<- paste("(",as.character(Val[K]),")",sep="") + } + else{ + Tmp1<- Val[K] + } + Fnstr<- Replace(Tmp,Tmp1,Fnstr)#180615 + } + } + else{ + for (J in Looprange(1,Nrow(Val))){ + for (K in Looprange(1,Ncol(Val))){ + Tmp<- paste(Vname,"(",as.character(J),",",as.character(K),")",sep="") + if(mode(Val[J,K])=="numeric"){ + Tmp1<- paste("(",as.character(Val[J,K]),")",sep="") + } + else{ + Tmp1<- Val[J,K] + } + Fnstr<- Replace(Tmp,Tmp1,Fnstr)#180615 + } + } + } + if(length(Val)==1){ + Rep<- as.character(Val) + } + else{ + Rep<-"" + if(class(Val)=="matrix"){ + Rep<- "matrix(" + } + Rep<- paste(Rep,"c(",sep="") + for (J in Looprange(1,length(Val))){ + Rep<- paste(Rep,as.character(Val[J]),sep="") + if(J<length(Val)){ + Rep<- paste(Rep,",",sep="") + } + else{ + Rep<- paste(Rep,")",sep="") + } + } + if(class(Val)=="matrix"){ + Rep<- paste(Rep,",nrow=",as.character(nrow(Val)),")",sep="") + } + } + Tmp1<- paste("(",Rep,")",sep="") + } + if(mode(Val)=="character"){ + Tmp1<- Val + } + if(mode(Val)=="list"){ + Tmp1<- Makeliststr(Val) + } + Fnstr<- Replace(Vname,Tmp1,Fnstr) #180615 + } + return(Fnstr) +} + +######################################### + +Assignadd<- function(...) +{ + varargin<- list(...) + L<- ASSIGNLIST + L<- Mixjoin(L,varargin) + ASSIGNLIST<<- L +# return("assign add done"); #17.09.17 +} + +######################################### + +Assignrep<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + L<- ASSIGNLIST + for (I in seq(1,Nargs,by=2)){ + Vname<- varargin[[I]] + Val<- varargin[[I+1]] + Tmp1<- paste("?",Vname,sep="") + Tmp<- Assign(Tmp) + if(mode(Tmp)=="character"){ + next + } + I<- Tmp[[1]] + L<- Mixjoin(L,list(Val)) + } + ASSIGNLIST<<- L +} + +######################################### + + Assignset<- function(...) +{ + Assign(...) +} + +######################################### + +Beginpicture<-function(ul) +{ ## Scaling is implemented + Tmp<- Doscaling(c(XMIN,YMIN)) + Xm<- Tmp[1] + Ym<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + XM<- Tmp[1] + YM<- Tmp[2] + Dx<- XM-Xm + Dy<- YM-Ym + Sym<-".0123456789 +-*/" + SL<-Sym + OL<-"+-*/" + if(ul!=""){ + ULEN<<-ul; + } + Is<-1; + VL<-""; + Ucode<-ULEN + for (I in Looprange(1,nchar(Ucode))){ + C<-substring(Ucode,I,I); + if(length(grep(C,SL))>0){ + if(length(grep(C,OL))>0){ + Tmp<-substring(Ucode,Is,I-1); + Str<-paste(VL,Tmp,C,sep="") + VL<-Str + Is<-I+1; + } + } + else{ + Unit<-substring(Ucode,I,I+1) + Str<-substring(Ucode,Is,I-1) + VL<-paste(VL,Str,sep="") + break; + } + } + Valu<-eval(parse(text=VL)) + Str<-as.character(Valu); + ULEN<<- paste(Str,Unit,sep="") + if(Unit=="cm") MilliIn<<-1000/2.54*Valu + if(Unit=="mm") MilliIn<<-1000/2.54*Valu/10 + if(Unit=="in") MilliIn<<-1000*Valu + if(Unit=="pt") MilliIn<<-1000/72.27*Valu + if(Unit=="pc") MilliIn<<-1000/6.022*Valu + if(Unit=="bp") MilliIn<<-1000/72*Valu + if(Unit=="dd2") MilliIn<<-1000/1238/1157/72.27*Valu + if(Unit=="cc") MilliIn<<-1000/1238/1157/72.27*12*Valu; + if(Unit=="sp") MilliIn<<-1000/72.27/65536*Valu/10 + MARKLEN<<- MARKLENNow*1000/2.54/MilliIn; + Str<-paste("{\\unitlength=",ULEN,"%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("\\begin{picture}%\n",file=Wfile,append=TRUE) + Str<-"(" + Tmp<-as.character(round(Dx,digits=6)) + Str<-paste(Str,Tmp,",",sep="") + Tmp<-as.character(round(Dy,digits=6)) + Str<-paste(Str,Tmp,")(",sep="") + Tmp<-as.character(round(Xm,digits=6)) + Str<-paste(Str,Tmp,",",sep="") + Tmp<-as.character(round(Ym,digits=6)) + Str<-paste(Str,Tmp,")%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + Str<-paste("\\special{pn ",as.character(PenThickInit),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +################################################# + +Bowdata<- function(...) #17.09.17 +{ + varargin <- list(...) + Nargs <- length(varargin) + PA <- varargin[[1]] + PB <- varargin[[2]] + Cut <- 0 + D <- 1/2*Norm(PB-PA) + if(Nargs>=3) { + H <- varargin[[3]]*D*0.2 + } + else { + H <- D*0.2 + } + H <- min(H,D) + if(Nargs>=4){ + Cut <- varargin[[4]] + } + Ydata <- MakeBowdata(PA,PB,H) + C <- Op(1,Ydata) + r <- Op(2,Ydata) + R1 <- Op(3,Ydata) + R2 <- Op(4,Ydata) + Rng <- paste("R=c(",as.character(R1),",",as.character(R2),")",sep="") + Theta <- (R1+R2)*0.5 + BOWMIDDLE <<- list(c(C[1]+r*cos(Theta),C[2]+r*sin(Theta)),Theta) + M <- Op(1,BOWMIDDLE) + ThetaM <- Op(2,BOWMIDDLE) + BOWSTART <<- PA + BOWEND <<- PB + if(Cut==0){ + Pd<- Circledata(c(C,r),Rng) + } + else{ + Alpha <- R1; Beta <- ThetaM-Cut/(2*r) + Rng <- paste("Rng=c(",as.character(Alpha),",",as.character(Beta),")",sep="") + Pd <- Circledata(c(C,r),Rng) + Alpha <- ThetaM+Cut/(2*r); Beta <- R2 + Rng <- paste("R=c(",as.character(Alpha),",",as.character(Beta),")",sep="") + Tmp <- Circledata(c(C,r),Rng) + Pd <- Appendrow(Pd,c(Inf,Inf),Tmp) + } +} + +Bowmiddle <- function(...) +{ + varargin <- list(...) + Nargs <- length(varargin) + if( Nargs==0) { + M <- BOWMIDDLE + return(M) + } + if(Nargs==1) { + Bdata <- varargin[[1]] + A <- Bdata[1,] + Dind <- Dataindex(Bdata) + Dc <- Nrow(Dind) + Tmp <- Dind[Dc,2] + B <- Bdata[Tmp,] + if(Dc==1) { + Tmp1 <- round(Tmp/2) + } + else { + Tmp1 <- Dind[1,2] + } + D <- Bdata[Tmp1,] + B <- B-A + D <- D-A + Tmp1 <- B[1]*D[2]-D[1]*B[2] + Tmp2 <- (Norm(B)^2*D[2]-B[2]*Norm(D)^2)/2 + Tmp3 <- -(Norm(B)^2*D[1]-B[1]*Norm(D)^2)/2 + C <- 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*Norm(B-A) + H <- 0.2*D; + if(length(varargin)>=3) { + Tmp <- varargin[[3]] + H <- Tmp*D*0.2 + } + 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*c(cos(T),sin(T)) + #M <- list(P,T) + M <- P + } + return(M) +} + +########################## +# 13.12.19 small movement supported + +Bowname<- function(...) +{ + varargin <- list(...) + Nargs <- length(varargin) + Siki <- varargin[[Nargs]] + Nargs<- Nargs-1 + Dr<- "c" + if(Nargs>=1){ + Tmp<- varargin[[Nargs]] + if(is.character(Tmp)){ + Dr<- Tmp + Nargs<- Nargs-1 + } + } + if(Nargs==0){ + Siki <- varargin[[1]] + P <- Op(1,BOWMIDDLE) + } + else if(Nargs==1){ + Bdata <- varargin[[1]] + P <- Bowmiddle(Bdata) + } + else{ + A <- varargin[[1]]; B <- varargin[[2]] + D <- 1/2*Norm(B-A) + Tmp <- varargin[[3]] + if(is.character(Tmp)){ + H <- D*0.2 + } + else { + H <- Tmp*D*0.2 + } + H <- min(H,D) + Ydata <- MakeBowdata(A,B,H) + Tmp <- Bowmiddle(Ydata) + P <- Op(1,Tmp) + } + Expr(P,Dr,Siki) +} + +########################## +# 13.12.19 small movement supported +# A,B, ... no longer supported + +Bownamerot <- function(...) +{ + varargin <- list(...) + Nargs <- length(varargin) + Eps <- 10^(-6) + Flg <- 1 + Tmp <- varargin[[Nargs]] + if(is.numeric(Tmp) && length(Tmp)==1 && Tmp<0){ + Flg <- Tmp + Nargs <- Nargs-1 + } + Siki <- varargin[[Nargs]] + Nargs<- Nargs-1 + Dr<- "c" + if(Nargs>=1){ + Tmp<- varargin[[Nargs]] + if(is.character(Tmp)){ + Dr<- Tmp + Nargs<- Nargs-1 + } + } + if(Nargs==0) { + P <- Op(1,BOWMIDDLE) + A <- BOWSTART + B <- BOWEND + } + else{ + Bdata<- varargin[[1]] + P<- Bowmiddle(Bdata) + A=Bdata[1,] + B=Bdata[nrow(Bdata),] + Tm<- 0; Tv<- 0 + if(Nargs>1){ + Tm<- varargin[[2]] + if(Nargs>2){ + Tv<- varargin[[3]] + } + } + } +# else if(Nargs==2) { +# Bdata <- varargin[[1]] +# P <- Bowmiddle(Bdata) +# A <- Bdata[1,] +# B <- Bdata[Nrow(Bdata),] +# Siki <- varargin[[2]] +# } +# else { +# A <- varargin[[1]]; B <- varargin[[2]] +# D <- 1/2*Norm(B-A) +# Tmp <- varargin[[3]] +# if(mode(Tmp)=="character") { +# H <- 0.2*D; Siki <- Tmp +# } +# else { +# H <- Tmp*D*0.2; Siki <- varargin[[4]] +# } +# 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*c(cos(T),sin(T)) +# } + if(A[1]>B[1]+Eps){ + Tmp <- A + A <- B + B <- Tmp + } + if(Flg>0) { + Tmp <- B-A + } + else{ + Tmp <- A-B + } + Exprrot(P,Tmp,Tm,Tv,Siki) +} + +CalcHeight<-function(Hoko,Moji) +{ + D<-0 + H<-substring(Hoko,1,1) + Tmp<-paste("\\settoheight{\\Height}{",Moji,"}",sep="") + Str<-c(Tmp) + Tmp=paste("\\settodepth{\\Depth}{",Moji,"}",sep="") + Str<-c(Str,Tmp) + if(H=="n") Str<-c(Str,"\\setlength{\\Height}{\\Depth}") + if(H=="s") Str<-c(Str,"\\setlength{\\Height}{-\\Height}") + if(H=="c") + { + Str<-c(Str,"\\setlength{\\Height}{-0.5\\Height}") + Str<-c(Str,"\\setlength{\\Depth}{0.5\\Depth}") + Str<-c(Str,"\\addtolength{\\Height}{\\Depth}") + } + for (I in 1:length(Str)) cat(Str[I],file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +######################### + +CalcWidth<-function(Hoko,Moji) +{ + D<-0; + H<-substring(Hoko,2,2) + if(H=="e") D<-0 + if(H=="w") D<--1.0 + if(H=="c") D<--0.5 + Str1<-paste("\\settowidth{\\Width}{",Moji,"}",sep="") + Tmp<-as.character(D) + Str2<-paste("\\setlength{\\Width}{",Tmp,"\\Width}",sep="") + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +######################### +# 17.09.17 +# 17.09.24 + +Circledata<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Cr<- varargin[[1]] + C=Cr[1:2] + if(length(Cr)==4){ + ra=Norm(C-Cr[3:4]) + Nop=2 + } + else{ + ra=Cr[3] + Nop=2 + } + R=c(0,2*pi) + N=50 + for (I in Looprange(Nop,Nargs)){ + Tmp<- varargin[[I]] + if(is.character(Tmp)){ + Tmp1=regexpr("=",Tmp) #17.09.24from + Tmp2=substring(Tmp,Tmp1+1,nchar(Tmp)) + Tmp1=substring(Tmp,1,Tmp1) + Tmp1=gsub("NUM", "N", toupper(Tmp1)) + Tmp1=gsub("RNG", "R", Tmp1) + Tmp=paste(Tmp1,Tmp2,sep="") #17.09.24until + eval(parse(text=Tmp)) + } + } + Dt<- (R[2]-R[1])/N + T <- seq(R[1],R[2],by=Dt) + X <- C[1]+ra*cos(T) + Y <- C[2]+ra*sin(T) + XY<- c(X,Y) + P<- matrix(XY,ncol=2) + return(P) +} + +######################### +# 13.12.19 + +Closefile<-function(...) +{ + varargin<- list(...) + if(length(varargin)>=1){ + Pa<- varargin[[1]] + if(is.character(Pa)){ + if(Pa=="1") Endpicture(1) + if(Pa=="0") Endpicture(0) + } + } + Wfile<<-"" +} + +######################### + +Closepar<- function() +{ + S<- "%\n\\end{minipage}" + cat(S,file=Wfile,append=TRUE) + Closephr() +} + + +#################################### + +Closephr<- function() +{ + cat("%\n}%\n",file=Wfile,append=TRUE) +} + +##################################### + +Dataindex<-function(P) +{ + # Inf;Inf : Terminator + Ndm<-c() + if(length(P)==0) return(Ndm) + N1<-1 + Flg<-0 + for (J in 1:Nrow(P)) + { + if(P[J,1]==Inf) + { + Ndm<-Appendrow(Ndm,c(N1,J-1)) + N1<-J+1; + if(P[N1,1]==Inf) + { + Flg<-1; + break; + } + } + } + if(Flg==0) + { + Ndm<-Appendrow(Ndm,c(N1,Nrow(P))) + } + if(class(Ndm)=="numeric") + { + Tmp<-matrix(Ndm,nrow=1) + Ndm<- Tmp + } + return(Ndm) +} + +################################ + +Dashline<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Nall<- Nargs; Sen<- 1 ; Gap<- 1 + Tmp<- varargin[[Nall]] + if(mode(Tmp)=="numeric" && length(Tmp)==1 && Tmp>0){ + Tmp1<- varargin[[Nall-1]] + if(mode(Tmp1)=="numeric" && length(Tmp1)==1 && Tmp1>0){ + Sen<- Tmp1; Gap<- Tmp + Nall<- Nall-2 + } + else{ + Sen<- Tmp; Gap<- Sen + Nall<- Nall-1 + } + } + Sen<- 1000/2.54/MilliIn*Sen + Gap<- 1000/2.54/MilliIn*Gap + for (N in Looprange(1,Nall)){ + Pdata<- varargin[[N]] + if(is.numeric(Pdata)==1){ + Pdata<- list(Pdata) + } + for (II in 1:length(Pdata)){ + Figdata<- Op(II,Pdata) + Makehasen(Figdata,Sen,Gap,0) + } + } +} + +############################################## +# 17.11.27 + +Definecolor<- function(Name,Data){ + Tmp1=length(Data) + if((Tmp1<3) || (Tmp1>4)){ + cat("Size of data should be 3 or 4.") + return() + } + if(Tmp1==4){ + Tp="cmyk" + }else{ + Tp="rgb" + } + Tmp="" + for(J in 1:Tmp1){ + Tmp=paste(Tmp, as.character(Data[J]),sep="") + if(J<Tmp1){ + Tmp=paste(Tmp,",",sep="") + } + } + Tmp=paste("\\definecolor{",Name,"}{",Tp,"}{",Tmp,"}",sep="") + Texcom(Tmp) +} + +############################################## + +Diagcelldata<- function(Tb,Nc,Nr) +{ + Tmp<- Findcell(Tb,Nc,Nr) + C<- Tmp[[1]] + Dx<- Tmp[[2]] + Dy<- Tmp[[3]] + Pne<- C+c(Dx,Dy) + Pnw<- C+c(-Dx,Dy) + Psw<- C+c(-Dx,-Dy) + Pse<- C+c(Dx,-Dy) + Tmp1<- Listplot(Pnw,Pse) + Tmp2<- Listplot(Pne,Psw) + list(Tmp1,Tmp2) +} + +############################################## +# 11.01.07 + +Dividegraphics<- function(Pd) +{ + if(length(Pd)==0){ + return(Pd) + } + DtL<- Flattenlist(Pd) + OutL<- list() + for (J in 1:length(DtL)){ + Dt<- as.matrix(DtL[[J]]) + Ndm<- Dataindex(Dt) + for (I in Looprange(1,Nrow(Ndm))){ + Fd<- Dt[Ndm[I,1]:Ndm[I,2],] + OutL<- c(OutL,list(Fd)) + } + } + return(OutL) +} + +############################################## +# 13.05.03 + +Dividetable<- function(Tb) +{ + G<- Tb[[1]] + Gw<- G[[1]] + Gt<- G[Tb[[2]]] + Gy<- G[Tb[[3]]] + list(Gw,Gt,Gy) +} + +################################################ + +Doscaling<- function(G) +{ + GLg<- G + if(class(GLg)=="numeric") + { + if(LOGX==1) GLg[1]<- log(G[1], base=10) + if(LOGY==1) GLg[2]<- log(G[2], base=10) + Tmp<-c(SCALEX*GLg[1],SCALEY*GLg[2]) + return(Tmp) + } + else + { + if(LOGX==1) GLg[,1]<- log(G[,1],base=10) + if(LOGY==1) GLg[,2]<- log(G[,2],base=10) + Tmp1<-matrix(c(SCALEX,0,0,SCALEY),nrow=2) + Tmp<-GLg %*% Tmp1 + return(Tmp) + } +} + +######################################## + +Dotfilldata<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ShaL<- list() + Eps<- 0.01 + Kakudo<- 45 + Kosa<- 0.5 + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + for (N in seq(Nargs,1,by=-1)){ + Tmp<- varargin[[N]] + if(Mixtype(Tmp)!=1){ + break + } + } + if(N<Nargs){ + Kosa<- varargin[[N+1]] + } +# Kosa<- min(Kosa,1) + Tmp<- 1/(2*Kosa) + Kankaku<- Tmp*0.100*1000/2.54/MilliIn + NaitenL<- varargin[[1]] + if(Mixtype(NaitenL)==1){ + NaitenL<- list(NaitenL) + } + Ns<- 2 + StartP<- Op(1,NaitenL) + if(mode(StartP)=="character"){ + StartP<- c((Xmn+Xmx)/2,(Ymn+Ymx)/2) + } + else{ + StartP<- Doscaling(StartP) + } + Tmp<- varargin[[2]] + if(Mixtype(Tmp)==1){ + StartP<- Doscaling(Tmp) + Ns<- 3 + } + Tmp<- list() + for (I in Looprange(Ns,N)){ + Tmp<- Mixjoin(Tmp,list(varargin[[I]])) + } + Bdy<- Kyoukai(Tmp) + Bdys<-list() + for (I in 1:length(Bdy)){ + Tmp1<- Bdy[[I]] + Tmp2<- Doscaling(Tmp1) + Bdys<- Mixjoin(Bdys,list(Tmp2)) + } + Bdy<- Bdys + PtnL<- list() + for (I in Looprange(1,length(NaitenL))){ + Tmp<- Op(I,NaitenL) + if(mode(Tmp)=="numeric"){ + Tmp1<- Naigai(Tmp,Bdy) + PtnL<- Mixjoin(PtnL,list(Tmp1)) + } + else{ + if(mode(Tmp)!="character"){ + return("Mode Error") + } + Ptn<- c() + for (J in Looprange(1,nchar(Tmp))){ + if(substr(Tmp,J,J)=="i"){ + Ptn<- c(Ptn,1) + } + else{ + Ptn<- c(Ptn,0) + } + } + PtnL<- Mixjoin(PtnL,list(Ptn)) + } + } + Call<- length(Bdy) + Ptn<- c(seq(0, 0, length=Call)) + if(Member(Ptn,PtnL)){ + Wn<- Doscaling(Framedata()) + Bdy<- Mixjoin(Bdy,list(Wn)) + Tmp<- list() + for (I in Looprange(1,length(PtnL))){ + Tmp1<- c(Op(I,PtnL),1) + Tmp<- Mixjoin(Tmp,list(Tmp1)) + } + PtnL<- Tmp + } + V<- c(cos(Kakudo*pi/180),sin(Kakudo*pi/180)) + Vm<- c(-sin(Kakudo*pi/180),cos(Kakudo*pi/180)) + Tmp<- Op(1,NaitenL) + if(mode(Tmp)=="numeric" && length(Tmp)==2){ + Tmp<- Doscaling(Tmp) + 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 in Looprange(1,length(Sha))){ + Tmp<- Op(J,Sha) + Q<- Tmp[1,] + R<- Tmp[2,] + Tmp<- Dotprod(Q-P,V)/Kankaku + K1<- ceiling(Tmp) + if(abs(K1-Tmp)<Eps) K1=K1+1 + Tmp<- Dotprod(R-P,V)/Kankaku + K2<- floor(Tmp) + if(abs(Tmp-K2)<Eps) K2=K2-1 + for (K in Looprange(K1,K2)){ + Tmp1<- Pointdata(P+K*Kankaku*V) + ShaL<- Mixjoin(ShaL, list(Tmp1)) + } + } + P<- PA+I*Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + Sha<- Dividegraphics(Sha) + I<- I+1 + } + P<- PA-Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + I<- 2 + while (length(Sha)>0){ + for (J in 1:length(Sha)){ + Tmp<- Op(J,Sha) + Q<- Tmp[1,] + R<- Tmp[2,] + Tmp<- Dotprod(Q-P,V)/Kankaku + K1<- ceiling(Tmp) + if(abs(K1-Tmp)<Eps) K1<- K1+1 + Tmp<- Dotprod(R-P,V)/Kankaku + K2<- floor(Tmp) + if(abs(Tmp-K2)<Eps) K2<- K2-1 + for (K in Looprange(K1,K2)){ + Tmp1<- Pointdata(P+K*Kankaku*V) + ShaL<- Mixjoin(ShaL, list(Tmp1)) + } + } + P<- PA-I*Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + I<- I+1 + } + } + else{ + Delta<- c(Xmn,Ymn)-StartP + K1<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymn)-StartP + K2<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymx)-StartP + K3<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmn,Ymx)-StartP + K4<- trunc(Dotprod(Delta,Vm)/Kankaku) + IM<- max(K1,K2,K3,K4) + Im<- min(K1,K2,K3,K4) + for (I in Im:IM){ + P<- StartP+I*Kankaku*Vm + Sha<- Makeshasen(PtnL,P,V,Bdy) + Sha<- Dividegraphics(Sha) + if(length(Sha)>0){ + for (J in 1:length(Sha)){ + Tmp<- Op(J,Sha) + Q<- Tmp[1,] + R<- Tmp[2,] + Tmp<- Dotprod(Q-P,V)/Kankaku + K1<- ceiling(Tmp) + if(abs(K1-Tmp)<Eps) K1=K1+1 + Tmp<- Dotprod(R-P,V)/Kankaku + K2<- floor(Tmp) + if(abs(Tmp-K2)<Eps) K2=K2-1 + for (K in Looprange(K1,K2)){ + Tmp1<- Pointdata(P+K*Kankaku*V) + ShaL<- Mixjoin(ShaL, list(Tmp1)) + } + } + } + } + } + ShaLs<-list() + for (I in Looprange(1,length(ShaL))) + { + Tmp<- ShaL[[I]] + Tmp1<- Unscaling(Tmp) + ShaLs<- Mixjoin(ShaLs,Tmp1) + } + ShaL<- ShaLs + return(ShaL) +} + +############################################# + +Dottedline<- function(...) +{ + varargin <- list(...) + Nall <- length(varargin) + Nagasa <- 0.1 + Ookisa <- PenThick + I <- Nall + Tmp <- varargin[[I]] + while (mode(Tmp)=="numeric" && length(Tmp)==1 ) { + I <- I-1 + Tmp <- varargin[[I]] + } + if(I==Nall-1) { + Nagasa<-Nagasa*varargin[[Nall]] + Nall <- Nall-1 + } + if(I==Nall-2) { + Nagasa <- Nagasa*varargin[[Nall-1]] + Ookisa <- round(Ookisa*varargin[[Nall]]) + Nall <- Nall-2 + } + Nagasa <- 1000/2.54/MilliIn*Nagasa + for (N in 1:Nall) { + Pdata <- varargin[[N]] + if(mode(Pdata)=="numeric") { + Pdata <- list(Pdata) + } + for (II in 1:length(Pdata)) { + Clist <- MakeCurves(Op(II,Pdata)) + DinM <- Dataindex(Clist) + for (n in Looprange(1,Nrow(DinM))) { + Tmp <- DinM[n,] + Data <- Clist[Tmp[1]:Tmp[2],] + Len <- 0 + Lenlist <- c(0) + for (I in Looprange(2,Nrow(Data))) { + Len <- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist <- c(Lenlist,Len) + } + Lenall <- Lenlist[length(Lenlist)] + if(Lenall==0) { + next + } + Naga <- Nagasa + Nten <- round(Lenall/Naga)+1 + if(Nten > 1) { + Seg <- Lenall/(Nten-1) + } + else { + Seg <- Lenall + } + Eps <- 10^(-6)*Seg + PPd<-c() + Hajime <- 1 + for (I in Looprange(0,Nten-1)) { + Len <- Seg*I + if(I>0) { + J <- Hajime + while( Len>=Lenlist[J]+Eps) { + J <- J+1 + } + Hajime <- J-1 + } + T <- (Len-Lenlist[Hajime])/ + (Lenlist[Hajime+1]-Lenlist[Hajime]) + P <- Data[Hajime,]+T*(Data[Hajime+1,]-Data[Hajime,]) + PPd<-Appendrow(PPd,P) + if(I==Nten-1) { + if(Norm(P-Data[1,])<Eps) { + next + } + } + } + Str<-paste("\\special{pn ", as.character(Ookisa),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + for (I in Looprange(1,Nrow(PPd))){ + P<- Op(I,PPd) + if(Nrow(PPd)==1){ + V<- c(1,0) + } + else if(I==1){ + Tmp<- Op(I+1,PPd)-P + V<- 1/Norm(Tmp)*Tmp + } + else if(I==Nrow(PPd)){ + Tmp<- P-Op(I-1,PPd) + V<- 1/Norm(Tmp)*Tmp + } + else{ + Tmp1<- Op(I+1,PPd)-P + Tmp2<- P-Op(I-1,PPd) + Tmp3<-1/Norm(Tmp1)*Tmp1+1/Norm(Tmp2)*Tmp2 + V<- 1/Norm(Tmp3)*Tmp3 + } + Tmp<- round(MilliIn*P[1]-1/2*Ookisa*V[1]) + X<- as.character(Tmp) + Tmp<- -round(MilliIn*P[2]-1/2*Ookisa*V[2]) + Y<- as.character(Tmp) + Str<-paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<- round(MilliIn*P[1]+1/2*Ookisa*V[1]) + X<- as.character(Tmp) + Tmp<- -round(MilliIn*P[2]+1/2*Ookisa*V[2]) + Y<- as.character(Tmp) + Str<-paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("\\special{fp}",file=Wfile,append=TRUE) + if(I%%2==0){ + cat("%\n",file=Wfile,append=TRUE) + } + } + } + } + } + Tmp<-PenThick/PenThickInit + Setpen(Tmp); +} + +########################################### + +Drwline<-function(...) +{ + varargin<-list(...) + Nall<-length(varargin) + Thick<-0 + Tmp<-varargin[[Nall]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + Thick<-round(Tmp*PenThickInit) + Str<-paste("\\special{pn ", as.character(Thick),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + Nall<-Nall-1 + } + for (N in 1:Nall){ + Pdata<-varargin[[N]] + if(length(Pdata)==0) next + if(mode(Pdata)!="list") Pdata<-list(Pdata) + while(Mixtype(Pdata)==3){ # 10.07.25 + Tmp1<- list() + for(II in Looprange(1,length(Pdata))){ + Tmp1<- Mixjoin(Tmp1,Pdata[[II]]) + } + Pdata<- Tmp1 + } # 10.07.25 + for (II in Looprange(1,length(Pdata))){ + Clist<-MakeCurves(Pdata[[II]]) + DinM<-Dataindex(Clist) + for (n in Looprange(1,Nrow(DinM))){ + Tmp<-DinM[n,] + Data<-Clist[Tmp[1]:Tmp[2],] + Mojisu<-0 + for (I in Looprange(1,Nrow(Data))){ + Tmp<-Data[I,] + X<- sprintf("%5.0f",MilliIn*Tmp[1]) # 11.07.19 + Y<- sprintf("%5.0f",-MilliIn*Tmp[2]) # 11.07.19 + Str<-paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<-Mojisu+nchar(Str) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<-0 + } + } + if(Mojisu!=0){ + cat("%\n",file=Wfile,append=TRUE) + } + cat("\\special{fp}%\n",file=Wfile,append=TRUE) + } + } + } + Str<-"%" + if(Thick>0){ + Tmp<-PenThick/PenThickInit + Setpen(Tmp) + } +} + +########################################### + +Drwpt<-function(...){ + varargin<-list(...) + Nargs<-length(varargin) + if(TenSize>TenSizeInit){ + N=round(10*sqrt(TenSize/TenSizeInit)) #181231 + } + else{ + if(TenSize==TenSizeInit){ #181231from + N=10 + }else{ + N=4 + } #181231to + } + All=Nargs #181230from + Same="y" + Incolor="" + Tmp=varargin[[All]] + if((is.numeric(Tmp))&&(length(Tmp)>2)){ #190405from + if(Tmp[1]==-1){ + Same="no" + }else{ + Tmp1=sapply(Tmp,as.character) + Incolor=paste("{",Tmp1[1],",",Tmp1[2],",",Tmp1[3],"}",sep="") + Same="n" + } + All=All-1 + }#190405to + CL<- c() + for (J in 0:N){ + Tmp<- TenSize*0.5*1000/2.54/MilliIn + Tmp<- Tmp*c(cos(pi/4+J*2*pi/N),sin(pi/4+J*2*pi/N)) + CL<- append(CL,Tmp) + } + CL<- matrix(CL,nrow=2) + CL<- t(CL) + for (II in Looprange(1,All)){ + MS<- varargin[[II]] + MS=Flattenlist(MS) #17.10.11 + if(mode(MS)=="numeric"){ + MS<- list(MS) + } + for (I in Looprange(1,length(MS))){ + P<- MS[[I]] + if(InWindow(P)!="i") next + P<- Doscaling(P) + PL<-c() + for (J in 0:N){ + PL<- c(PL,P+CL[J+1,]) + } + PL<- matrix(PL,nrow=2) + PL<- t(PL) + if(Same!="no"){ #190405 + if(Same=="n"){ #190405 + Str1<- paste("{\\special{pn 0}\\color[rgb]",Incolor,"%\n",sep="") + cat(Str1,file=Wfile,append=TRUE) + } + Mojisu<-0 + for (J in 1:Nrow(PL)){ + Q<- PL[J,] + X<- as.character(round(MilliIn*Q[1])) + Y<- as.character(-round(MilliIn*Q[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + cat("#\n",file=Wfile,append=TRUE) + } + Mojisu=0 + } + Str1<- "\\special{sh}\\special{fp}" #190405from + if(Same=="n"){ + Str1<- paste(Str1,"}",sep="") + } + Str1<- paste(Str1,"%\n",sep="") #190405to + cat(Str1,file=Wfile,append=TRUE) + } + cat("\\special{pn 4}",file=Wfile,append=TRUE) #181231 + Mojisu=0 + for (J in 1:Nrow(PL)){ + Q<- PL[J,] + X<- as.character(round(MilliIn*Q[1])) + Y<- as.character(-round(MilliIn*Q[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + cat("#\n",file=Wfile,append=TRUE) + } + Mojisu=0 + } + if(Same=="y"){ + Str1<- paste("\\special{sh",Incolor,"}\\special{fp}%\n",sep="") + }else{ + Str1<- paste("\\special{fp}%\n",sep="") + } + cat(Str1,file=Wfile,append=TRUE) #181230to + } + } +} + +###################################################### + +Drwxy<-function(...){ #180820 + varargin<-list(...) + Nargs <- length(varargin) + Origin=GENTEN + Origins=Doscaling(Origin) #181016 + Xrng=c(XMIN,XMAX) + Yrng=c(YMIN,YMAX) + Tmp1=Doscaling(c(XMIN,YMIN)) #181017from + Tmp2=Doscaling(c(XMAX,YMAX)) + Xrngs=c(Tmp1[1],Tmp2[1]) + Yrngs=c(Tmp1[2],Tmp2[2]) #181017from + Ziku=ZIKU #180821from + Xname=XNAME + Xpos=XPOS + Yname=YNAME + Ypois=YPOS + Oname=ONAME + Opos=OPOS #180821to + for(J in Looprange(1,Nargs)){ + Tmp=strsplit(varargin[[J]],"=") + Tmp=Tmp[[1]] + Tmp1=toupper(substring(Tmp[1],1,1)) + Tmp2=Tmp[2] + if(Tmp1=="O"){ + Origin=eval(parse(text=Tmp2)) + } + if(Tmp1=="X"){ + Xrng=eval(parse(text=Tmp2)) + } + if(Tmp1=="Y"){ + Yrng=eval(parse(text=Tmp2)) + } + if(Tmp1=="A"){ #180821from + if(substring(Tmp2,1,1)=="c"){ + Tmp2=substring(Tmp2,3,nchar(Tmp2)-1) + } + Tmp2=gsub(",","','",Tmp2,fixed=TRUE) + Tmp2=paste("'",Tmp2,"'",sep="") + Tmp=paste("Setax(",Tmp2,")",sep="") + eval(parse(text=Tmp)) #180821to + } + } + Xrng=Xrng+Origin[1] + Yrng=Yrng+Origin[2] + Xrngs=Xrngs+Origins[1] #181016(2lines) + Yrngs=Yrngs+Origins[2] + Tmp<- substring(ZIKU,1,1) #180821 + if(Tmp=="a") + { + Tmp=substring(ZIKU,2,nchar(ZIKU)) + if(nchar(Tmp)==0){Tmp=1}else{Tmp=eval(parse(text=Tmp))} + Arrowline(c(Xrngs[1],Origins[2]),c(Xrngs[2],Origins[2]),Tmp)#181016(2lines) + Arrowline(c(Origins[1],Yrngs[1]),c(Origins[1],Yrngs[2]),Tmp) + } + else + { + Drwline(Listplot(c(Xrngs[1],Origins[2]),c(Xrngs[2],Origins[2])))#181016(2lines) + Drwline(Listplot(c(Origins[1],Yrngs[1]),c(Origins[1],Yrngs[2]))) + } + Letter(c(Xrng[2],Origin[2]),XPOS,XNAME) + Letter(c(Origin[1],Yrng[2]),YPOS,YNAME) + Letter(Origin,OPOS,ONAME) + Setax(Ziku,Xname,Xpos,Yname,Ypois,Oname,Opos) #180821 +} + +########################################## +# 10.12.04 + +Enclosing<- function(...) +{ + Eps=10^(-7) # Scilab 16.12.05 + varargin<- list(...) + Nargs<- length(varargin) + P<- varargin[[1]] + if(Mixtype(P)==2){ + Tmp<- Op(1,P) + if(mode(Tmp)!="numeric" || length(Tmp)>1){ + AnsL<- EnclosingS(...) + AnsL<- Joincrvs(AnsL) # 10.12.04 + } + } + Tmp1=Op(1,AnsL) # Scilab 16.12.05from + Tmp2=Op(nrow(AnsL),AnsL) + if(Norm(Tmp2-Tmp1)>Eps){ + AnsL=Appendrow(AnsL,Tmp1) + } + return(AnsL) +} + +######################################### + +EnclosingS<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + AnsL<- list() + PdataL<- varargin[[1]] + Nall<-length(PdataL) + Eps<- 10^(-3) + EEps<- 0.1 + S<- c() + Flg<- 0 + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric" && Nrow(Tmp)==1 && length(Tmp)>1){ + S<- Tmp + } + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + if(Flg==0){ + Eps<- Tmp + Flg=Flg+1 + } + else{ + EEps<- Tmp + } + } + } + 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) + } + 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) + } + } + if(length(KL)>=2){ + if(length(S)==0){ + return("No Start Point") + } + Tmp<- Op(1,KL) + P<- Op(1,Tmp) + T1<- Op(2,Tmp) + Tmp<- Norm(P-S) + for (I in Looprange(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 + } + } + } + S<- P + AnsL<- list() + for (N in Looprange(1,Nall)){ + F<- Op(N,PdataL) + if(N>1) P<- Q + 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 + } + if(length(KL)==0) Flg<- 1 + 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 + } + 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 + } + } + if(Flg<10){ + T2<- Inf + for (I in Looprange(1,length(KL))){ + Dt<- Op(I,KL) + Tmp1<- Op(1,Dt) + Tmp<- Op(3,Dt) + Tmp2<- Paramoncurve(Tmp1,Tmp,F) + Tmp3<- Op(2,Dt) + if(Tmp2>T1+Eps && Tmp2<T2-Eps){ + Q<- Tmp1 + T2<- Tmp2 + T3<- Tmp3 + } + } + } + } + Tmp<- Partcrv(P,Q,F) + T1<- T3 + AnsL<- Mixjoin(AnsL,list(Tmp)) + } + return(AnsL) +} + +######################################## + +Endpicture<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0) + { + Drwxy() + } + else + { + if(varargin[[1]]==1) Drwxy() + } + cat("\\end{picture}}%",file=Wfile,append=TRUE) +# MEMORI<<-MEMORINow*1000/2.54/MilliIn + Setunitlen("1cm") +} + +######################################### + +Execmd<- function(StrL) +{ + if(mode(StrL)=="character" && length(StrL)==1){ + StrL<- list(StrL) + } + for (I in Looprange(1,length(StrL))){ + if(!is.na(Op(I,StrL)) && nchar(Op(I,StrL))>0){ + eval(parse(text=Op(I,StrL))) + } + } +} + +######################################### + +Expr<-function(...) +{ ## Scaling is implemented + varargin<-list(...) + Nargs<-length(varargin) + Irng<-c(seq(from=1,to=Nargs,by=3)) + for (I in Irng) + { + Tmp<-varargin[[I]] + P<- Doscaling(Tmp) + X<-P[1] + Y<-P[2] + Houkou<-varargin[[I+1]] + Mojiretu<-paste("$",varargin[[I+2]],"$",sep="") + Hset<-Houkou + Vhoko<-"c" + if(length(grep("n",Hset))>0) + { + Vhoko<-"n"; Y<-Y+MEMORI + } + if(length(grep("s",Hset))>0) + { + Vhoko<-"s"; Y<-Y-MEMORI + } + Hhoko<-"c" + if(length(grep("e",Hset))>0) + { + Hhoko<-"e"; X<-X+MEMORI + } + if(length(grep("w",Hset))>0) + { + Hhoko<-"w"; X<-X-MEMORI + } + Hoko<-paste(Vhoko,Hhoko,sep="") + Suu<-"+-.0123456789" + SuuL<-Suu + J<-1; Dstr<-"" + while (J<=nchar(Houkou)) + { + Tmp<-substring(Houkou,J,J) + if(length(grep(Tmp,Suu))>0) + { + if(Dstr=="") Hk<-substring(Houkou,J-1,J-1) + Dstr<-paste(Dstr,Tmp,sep="") + } + else + { + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + Dstr<-"" + } + } + J<-J+1 + } + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI; + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + } + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + cat("\\put(",file=Wfile,append=TRUE) + Tmp1<- sprintf("%7.7f",X) # 11.07.19 + Tmp2<- sprintf("%7.7f",Y) # 11.07.19 + Str<-paste(Tmp1,",",Tmp2,sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<-"){\\hspace*{\\Width}" + Str<-paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) + } +} + +########################################## + +Exprrot<- function(...) +{ + varargin<- list(...) + P<- varargin[[1]] + V<- varargin[[2]]; N<- 3 + P<- Doscaling(P) + V<- Doscaling(V) + Tmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Tmov<- Tmp; N<- N+1 + } + Nmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Nmov<- Tmp; N<- N+1 + } + Mojiretu<- paste("$",Assign(varargin[[N]]),"$",sep="") # 2017.11.26 + Tv<- 1/Norm(V)*V + Nv<- c(-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," + } + Tmp<- paste("\\rotatebox[",Units,"origin=c]{",as.character(Theta),sep="") + Tmp<- paste(Tmp,"}{",Mojiretu,"}",sep="") + Letter(P,"c",Tmp) +} + +###################################################### + +Findcell<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + Ag<- varargin[[2]] + Alpha<- "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" + if(mode(Ag)=="character"){ + Clm<- c() + Rstr<- "" + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,I,I) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + Tmp1<- nchar(Tmp[1]) + Clm<- c(Clm,Tmp1) + } + else{ + Rstr<- paste(Rstr,C,sep="") + } + } + Nrg<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length(Clm)-I + Nrg<- Nrg+Tmp*26^Tmp1 + } + Mrg<- eval(parse(text=Rstr)) + if(Nargs>=3){ + Ag<- varargin[[3]] + Clm<- c() + Rstr<- "" + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,1,1) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + if(length(Tmp)>1){ + Clm<- c(Clm,Tmp+1) + } + else{ + Rstr<- paste(Rstr,C,sep="") + } + } + Nrg2<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length[Clm]-I + Nrg2<- Nrg2+Tmp*26^Tmp1 + } + Nrg<- c(Nrg,Nrg2) + Tmp=eval(parse(text=Rstr)) + Mrg<- c(Mrg,Tmp) + } + } + else{ + Nrg<- varargin[[2]] + Mrg<- varargin[[3]] + } + if(length(Mrg)==1){ + m1<- Mrg; m2<- m1+1 + } + else{ + m1<- Mrg[1]; m2<- Mrg[2] # 10.12.12 + } + if(length(Nrg)==1){ + n1<- Nrg; n2<- n1+1 + } + else{ + n1<- Nrg[1]; n2<- Nrg[2] + } + n1<- n1+1; n2<- n2+1 + m1<- m1+1; m2<- m2+1 + Hind<- TbL[[2]] + Vind<- TbL[[3]] + Tmp<- TbL[[1]] + HL<- Tmp[Hind] + Tmp1<- Op(1,TbL[[4]]) + Tmp2<- Op(2,TbL[[4]]) + HL<- Mixjoin(list(Tmp1),HL,list(Tmp2)) + VL<- Tmp[Vind] + Tmp1<- Op(1,TbL[[5]]) + Tmp2<- Op(2,TbL[[5]]) + VL<- Mixjoin(list(Tmp1),VL,list(Tmp2)) + Tmp<- TbL[[6]] + Tmp1<- Listplot(c(Ptsw(Tmp),Ptnw(Tmp))) + Tmp2<- Listplot(c(Ptse(Tmp),Ptne(Tmp))) + HL<- Mixjoin(list(Tmp1),HL,list(Tmp2)) + Tmp1<- Listplot(c(Ptnw(Tmp),Ptne(Tmp))) + Tmp2<- Listplot(c(Ptsw(Tmp),Ptse(Tmp))) + VL<- Mixjoin(list(Tmp1),VL,list(Tmp2)) + Tmp<- HL[[n1]] + if(mode(Tmp)=="numeric"){ + H1<- Tmp[1,1] + } + else{ + Tmp1<- Tmp[[1]] + H1<- Tmp1[1,1] + } + Tmp<- HL[[n2]] + if(mode(Tmp)=="numeric"){ + H2<- Tmp[1,1] + } + else{ + Tmp1<- Tmp[[1]] + H2<- Tmp1[1,1] + } + Tmp<- VL[[m1]] + if(mode(Tmp)=="numeric"){ + V1<- Tmp[1,2] + } + else{ + Tmp1<- Tmp[[1]] + V1<- Tmp1[1,2] + } + Tmp<- VL[[m2]] + if(mode(Tmp)=="numeric"){ + V2<- Tmp[1,2] + } + else{ + Tmp1<- Tmp[[1]] + V2<- Tmp1[1,2] + } + Pt<- c((H1+H2)/2,(V1+V2)/2) + High<- (V1-V2)/2 + Wide<- (H2-H1)/2 + Out<- list(Pt,Wide,High) + return(Out) +} + +############################################ + +Flattenlist<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Out<- list() + for(N in Looprange(1,Nargs)){ + D<- varargin[[N]] + if(is.data.frame(D) || !is.list(D)){ # modify + Out<- c(Out,list(D)) + } + else{ + for(I in Looprange(1,length(D))){ + Ds<- D[[I]] + Tmp<- Flattenlist(Ds) + Out<- c(Out,Tmp) + } + } + } + return(Out) +} + +############################################ + +Fontsize<- function(Ookisa) +{ + Str<- "%" + S<- substr(Ookisa,1,1) + if(S=="n"){ + Str<- "\\normalsize%" + } + if(S=="s"){ + if(nchar(Ookisa)==1){ + Tmp<- "n" + } + else{ + Tmp<- substr(Ookisa,2,2) + } + if(Tmp=="s"){ + Str<- "\\scriptsize%" + } + else{ + Str<- "\\small%" + } + } + if(S=="f"){ + Str<- "\\footnotesize%" + } + if(S=="t"){ + Str<- "\\tiny%" + } + if(S=="l"){ + Str<- "\\large%" + } + if(S=="L"){ + if(nchar(Ookisa)==1){ + Tmp<- "a" + } + else{ + Tmp<- substr(Ookisa,2,2) + } + if(Tmp=="a"){ + Str<- "\\Large%" + } + else{ + Str<- "\\LARGE%" + } + } + if(S=="h"){ + Str<- "\\huge%" + } + if(S=="H"){ + Str<- "\\Huge%" + } + cat(Str,file=Wfile,append=TRUE) + cat("\n",file=Wfile,append=TRUE) +} + +########################################## + +Fracform<- function(...) +{ + varargin<- list(...) + Eps<- 10^(-10) + Nmax<- 1/Eps + Nargs<- length(varargin) + X<- varargin[[1]] + Nr<- Nrow(X) + X<- as.matrix(X,nrow=Nr) + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)!="numeric"){ + next + } + if(Tmp>1){ + Nmax<- Tmp + } + else if(Tmp>0){ + Eps<- Tmp + } + } + Tmp<- rep("",length(X)) + Out<- matrix(Tmp,nrow=nrow(X)) + for (I in Looprange(1,nrow(X))){ + for (J in Looprange(1,ncol(X))){ + Dt<- X[I,J] + if(mode(Dt)=="character"){ + Dt<- eval(parse(text=Dt)) + } + R<- 1 + N<- 0 + Rmin<- R + Nr<- N + while (R>Eps && N<Nmax){ + N<- N+1 + M<- round(Dt*N) + R<- abs(Dt-M/N) + if(R<Rmin){ + Rmin<- R + Nr<- N + } + } + if(N==Nmax){ + N<- Nr + M<- round(Dt*N) + } + Tmp<- as.character(M) + if(N!=1){ + Tmp<- paste(Tmp,"/",as.character(N),sep="") + } + Out[I,J]<- Tmp + } + } + if(nrow(Out)==1){ + Out<- as.character(Out) + } + return(Out) +} + +############################################## +# 2011.12.17 ( list ) + +Framedata<-function(...) +{ + varargin<- Flattenlist(list(...)) + N<-length(varargin) + if(N<= 1){ + H<- 1.0*10^(-4); + PA<-c(XMIN+H,YMIN+H) + PB<-c(XMAX-H,YMIN+H) + PC<-c(XMAX-H,YMAX-H) + PD<-c(XMIN+H,YMAX-H) + } + else{ + Tmp<-varargin[[N]] + if(is.numeric(Tmp) && length(Tmp)==1){ + Dy<-Tmp; Dx<-Dy + Tmp<-varargin[[N-1]] + if(is.numeric(Tmp) && length(Tmp)==1){ + Dx<-Tmp + } + Tmp<-varargin[[1]] + X<-Tmp[1]; Y<-Tmp[2] + X1<-X-Dx; X2<-X+Dx; Y1<-Y-Dy; Y2<-Y+Dy + } + else{ + Tmp<-varargin[[1]] + X1<-Tmp[1]; X2<-Tmp[2] + Tmp<-varargin[[2]] + Y1<-Tmp[1]; Y2<-Tmp[2] + } + PA<-c(X1,Y1); PB<-c(X2,Y1) + PC<-c(X2,Y2); PD<-c(X1,Y2) + } + Out<- Listplot(c(PA,PB,PC,PD,PA)) + return(Out) +} + +################################### + +Hatchdata<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + ShaL<- list() + Nargs<- length(varargin) + Kakudo<- 45 +# Kankaku<- 0.125*1000/2.54/MilliIn + Kankaku<- 0.25*1000/2.54/MilliIn #180706 + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + for (N in seq(Nargs,1, by=-1)) + { + Tmp<- varargin[[N]] + if(mode(Tmp)=="list") + { + break + } + } + if(N<Nargs) + { + Kakudo<- varargin[[N+1]] + if(N==Nargs-2) + { + Kankaku<- Kankaku*varargin[[Nargs]] #180716 + } + } + NaitenL<- varargin[[1]] + if(mode(NaitenL)!="list") + { + NaitenL<- list(NaitenL) + } + Ns<- 2 + StartP<- Op(1,NaitenL) + if(mode(StartP)=="character") + { + StartP<- c((Xmn+Xmx)/2, (Ymn+Ymx)/2) + } + if(mode(varargin[[2]])=="numeric") + { + StartP<- varargin[[2]] + StartP<- Doscaling(StartP) + Ns<- 3 + } + Tmp<- list() + for ( I in Looprange(Ns,N)) + { + Tmp1<- list(varargin[[I]]) + Tmp2<- Mixjoin(Tmp, Tmp1) + Tmp<- Tmp2 + } + Bdy<- Kyoukai(Tmp) + Bdys<-list() + for (I in 1:length(Bdy)) + { + Tmp1<- Bdy[[I]] + Tmp2<- Doscaling(Tmp1) + Bdys<- Mixjoin(Bdys,list(Tmp2)) + } + Bdy<- Bdys + PtnL<- list() + for (I in Looprange(1,length(NaitenL))) + { + Tmp<- Op(I, NaitenL) + if(mode(Tmp)=="numeric") + { + Tmp1<- Naigai(Tmp,Bdy) + Tmp2<- Mixjoin(PtnL, list(Tmp1)) + PtnL<- Tmp2 + } + else + { + if(mode(Tmp)!="character") + { + return("Mode Error") + } + Ptn<-c() + for (J in 1:nchar(Tmp)) + { + if(Op(J,Tmp)=="i") + { + Ptn<- c(Ptn,1) + } + else + { + Ptn<- c(Ptn,0) + } + } + PtnL<- Mixjoin(PtnL, list(Ptn)) + } + } + Call<- length(Bdy) + Ptn<- c(seq(0, 0, length=Call)) + if(Member(Ptn,PtnL)) + { + Wn<- Doscaling(Framedata()) + Tmp<- Mixjoin(Bdy,list(Wn)) + Bdy<- Tmp + Tmp<- list() + for (I in Looprange(1, length(PtnL))) + { + Tmp1<- c(Op(I,PtnL),1) + Tmp2<- Mixjoin(Tmp,list(Tmp1)) + Tmp<- Tmp2 + } + PtnL<- Tmp + } + V<- c(cos(Kakudo*pi/180),sin(Kakudo*pi/180)) + Vm<- c(-sin(Kakudo*pi/180),cos(Kakudo*pi/180)) + Tmp<- Op(1,NaitenL) + if(mode(Tmp)=="numeric" && length(Tmp)==2) + { + Tmp<- Doscaling(Tmp) + Delta<- Tmp-StartP + K<- trunc(Dotprod(Delta,Vm)/Kankaku) + PA<- StartP+K*Kankaku*Vm + Sha<- Makeshasen(PtnL,PA,V,Bdy) + I <- 1 + while (length(Sha)>0) + { + Tmp<- Mixjoin(ShaL, list(Sha)) + ShaL <- Tmp + Sha<- Makeshasen(PtnL,PA+I*Kankaku*Vm,V,Bdy) + I <- I+1 + } + Sha<- Makeshasen(PtnL,PA-Kankaku*Vm,V,Bdy) + I<- 2 + while (length(Sha)>0) + { + for (J in 1:length(Sha)) + { + Tmp<- Mixjoin(ShaL,list(Sha[[J]])) + ShaL<- Tmp + } + Sha<- Makeshasen(PtnL,PA-I*Kankaku*Vm,V,Bdy) + I<- I+1 + } + } + else + { + Delta<- c(Xmn,Ymn)-StartP + K1<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymn)-StartP + K2<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmx,Ymx)-StartP + K3<- trunc(Dotprod(Delta,Vm)/Kankaku) + Delta<- c(Xmn,Ymx)-StartP + K4<- trunc(Dotprod(Delta,Vm)/Kankaku) + IM<- max(K1,K2,K3,K4) + Im<- min(K1,K2,K3,K4) + for (I in Im:IM) + { + Sha<- Makeshasen(PtnL,StartP+I*Kankaku*Vm,V,Bdy) + for (J in Looprange(1,length(Sha))) + { + Tmp<- Mixjoin(ShaL, list(Sha[[J]])) + ShaL<- Tmp + } + } + } + ShaLs<-list() + for (I in Looprange(1,length(ShaL))) + { + Tmp<- ShaL[[I]] + Tmp1<- Unscaling(Tmp) + Tmp2<- Mixjoin(ShaLs, list(Tmp1)) + ShaLs<- Tmp2 + } + ShaL<- ShaLs + return(ShaL) +} + +###################################### + +Htickmark<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in Looprange(1, floor((XMAX-GENTEN[1])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((XMIN-GENTEN[1])/Dm),by=-1)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt[1],Dt[2]) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt,GENTEN[2]) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X,Y+MARKLEN)) + Tmp2<- Unscaling(c(X,Y-MARKLEN)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X,Y-MARKLEN)) + Expr(Tmp,"s",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("s",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X,Y-MARKLEN)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X,Y+MARKLEN)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +############################################# +# 2013.08.07 + +Integrate<- function(Fs,Vs, Intv){ + if(is.function(Fs)){ + Fn<- Fs + } + else{ + Str<- paste("Fn<- function(",Vs, ") ", Fs, sep="") + eval(parse(text=Str)) + } + Tmp<- integrate(Fn, Intv[[1]], Intv[[2]]) + Out<- Tmp[[1]] + return(Out) +} + +############################################# + +Intersectcrvs<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + Eps<-10^(-4) + Tmp<-varargin[[Nargs]] + if(mode(Tmp)=="numeric" && length(Tmp)==1) + { + Eps<-Tmp + } + G1<-varargin[[1]] + if(mode(G1)=="numeric") + { + G1<-list(G1) + } + G2<-varargin[[2]] + if(mode(G2)=="numeric") + { + G2<-list(G2) + } + PL<-list() + for (N in 1:length(G1)) + { + for (M in 1:length(G2)) + { + KL<-IntersectcrvsPp(G1[[N]],G2[[M]],Eps) + for (I in Looprange(1,length(KL))) + { + Tmp<-KL[[I]] + P<-Tmp[1] + PL<-append(PL,P) + } + } + } + return(PL) +} + +########################################### + +IntersectcrvsPp<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + G1<-varargin[[1]]; G2<-varargin[[2]] + Eps<- 10.0^(-4) + if(Nargs>2) Eps<-varargin[[3]] + SqEps<- 10.0^(-10) + Eps2<- 0.1 + if(Nargs>3) Eps2<-varargin[[4]] + Data1<-G1 + Data2<-G2 + if(Nrow(Data1)==Nrow(Data2)) + { + Tmp<-seq(Nrow(Data2),1, by=-1) + Tmp1<-Data2[Tmp,] + Eps0<-10^(-6) + Tmp2<-Norm(Data1-Data2) + Tmp3<-Norm(Data1-Tmp1) + if(Tmp2<Eps0||Tmp3<Eps0) + { + KL<-list() + return(KL) + } + } + KL1<-list() + KL2<-list() + for (I in Looprange(1,Nrow(Data1)-1)) + { + A<-Data1[I,] + B<-Data1[I+1,] + for (J in Looprange(1,Nrow(Data2)-1)) + { + P<-Data2[J,]; Q<-Data2[J+1,] + Tmp<-Koutenseg(A,B,P,Q,Eps,Eps2) + if(mode(Tmp)=="list") + { + if(Tmp[[3]]==0) + { + Tmp1<-list(Tmp[[1]],Tmp[[2]],I,J) + KL1<-append(KL1,list(Tmp1)) + } + else + { + Tmp2<-list(Tmp[[1]],Tmp[[2]],I,J) + KL2<-append(KL2, list(Tmp2)) + } + } + } + } + KL<-list() + if(length(KL1)>0) + { + Tmp<-KL1[[1]] + P<-Tmp[[1]] + T<-Tmp[[2]] + I<-Tmp[[3]] + J<-Tmp[[4]] + Tmp<-list(P,I+T,J) + KL<-list(Tmp) + } + for (N in Looprange(2,length(KL1))) + { + Tmp<-KL1[[N]] + P<-Tmp[[1]] + Flg<-0 + for (K in 1:length(KL)) + { + if(1>length(KL)) break + Tmp<-KL[[K]] + if(Norm(P-Tmp[[1]])^2<SqEps) + { + Flg<-1 + break + } + } + if(Flg==0) + { + Tmp<-KL1[[N]] + T<-Tmp[[2]] + I<-Tmp[[3]] + J<-Tmp[[4]] + Tmp<-list(P,I+T,J) + KL<-append(KL,list(Tmp)) + } + } + for (N in Looprange(1,length(KL2))) + { + Tmp<-KL2[[N]] + P<-Tmp[[1]] + Flg<-0 + for (K in Looprange(1,length(KL))) + { + Tmp<-KL[[K]] + if(Norm(P-Tmp[[1]])^2<SqEps) + { + Flg<-1 + break + } + } + if(Flg==0) + { + Tmp<-KL2[[N]] + T<-Tmp[[2]] + T<-min(max(T,0),1) + I<-Tmp[[3]] + J<-Tmp[[4]] + Tmp<-list(P,I+T,J) + KL<-append(KL,list(Tmp)) + } + } + return(KL) +} + +########################################### +# 13.12.20 debugged + +Invdashline<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Nall<- Nargs; Sen<- 1 ; Gap<- 1 + Tmp<- varargin[[Nall]] + if(is.numeric(Tmp) && length(Tmp)==1 && Tmp>0){ # 13.12.20 + Tmp1<- varargin[[Nall-1]] + if(is.numeric(Tmp1) && length(Tmp1)==1 && Tmp1>0){ # 13.12.20 + Sen<- Tmp1; Gap<- Tmp + Nall<- Nall-2 + } + else{ + Sen<- Tmp; Gap<- Sen + Nall<- Nall-1 + } + } + Sen<- 1000/2.54/MilliIn*Sen + Gap<- 1000/2.54/MilliIn*Gap + for (N in Looprange(1,Nall)){ + Figdata<- varargin[[N]] + Makehasen(Figdata,Sen,Gap,1) + } +} + +######################################### + +Invert<- function(Pd) +{ + OutL=Pd[nrow(Pd):1,] + return(OutL) +} + +############################################ + +InWindow<-function(PA) +{ + Eps<-10.0^(-6); + if((length(PA)==2)&(is.numeric(PA))){ # 17.11.20 + X<-PA[1]; Y<-PA[2]; + if(X>XMIN-Eps && X<XMAX+Eps && Y>YMIN-Eps && Y<YMAX+Eps) + Rx<-"i" + else + Rx<-"o" + return(Rx) + }else{ + return("o") + } +} + +####################################### + +Joincrvs<- function(...) +{ + varargin<- list(...) + Nall<- length(varargin) + Eps<- 10^(-4) + Tmp<- varargin[[Nall]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ + Eps<- Tmp + Nall<- Nall-1 + } + QdL<- Flattenlist(varargin[1:Nall]) # 11.06.25 + if(length(QdL)==0){ + PtL<-c() + return(PtL) + } + PtL<- Op(1,QdL) + for (I in Looprange(2,length(QdL))){ + Qd<- Op(I,QdL) + if(Numptcrv(Qd)<=1){next} # 11.06.25 + 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) + } + else if(MN==Norm(S-Q)){ + PtL=Invert(PtL) + } + else if(MN==Norm(S-R)){ + PtL<- Invert(PtL) + Qd<- Invert(Qd) + } + if(MN>Eps){ + PtL<- Appendrow(PtL,Qd) + } + else{ + if(is.null(nrow(Qd))){ Qd<- as.matrix(Qd,nrow=1)} + PtL<- Appendrow(PtL,Qd[2:nrow(Qd),]) # 11.06.25 + } + } + return(PtL) +} + +######################################## +# 2011.11.02 + +Joingraphics<- function(...) +{ + varargin<- list(...) + Ls<- Flattenlist(varargin) + N<- length(Ls) + Tp<- Ls[[N]] + Listflg<- 0 + if( is.character(Tp)){ + Tmp<- toupper(substr(Tp,1,1)) + if(Tmp=="L"){ + Listflg<- 1 + } + N<- N-1 + Ls<- Ls[1:N] + } + if(Listflg==1){ + P<- Ls + } + else{ + P<- c() + for (I in 1:N){ + Tmp<- Ls[[I]] + P<- Appendrow(P,c(Inf,Inf)) + P<- Appendrow(P,Tmp) + } + P<- P[2:nrow(P),] + } + return(P) +} + +######################################## + +Kouten<- function(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<- list(Inf,-Inf) + return(Out) + } + D<- U1*V2-U2*V1 + if(abs(D)/Tmp<Eps) + { + Out<- list(Inf,-Inf) + return(Out) + } + S<- ((-A2+P2)*V1+(A1-P1)*V2)/D + if(S>1+Eps || S<Eps) + { + Out<-list(Inf,-Inf) + return(Out) + } + T<- ((-A2+P2)*U1+(A1-P1)*U2)/D + Tmp<- PA+T*V + Out<- list(T,Tmp,sign(D)) + return(Out) +} + +########################################## + +KoutenList<- function(PA,V,Bdy) +{ + Eps<-10.0^(-6) + TenL<-list() + for (N in 1:length(Bdy)) + { + KL<- Op(N,Bdy) + for (K in Looprange(1, Nrow(KL)-1)) + { + P<- Op(K,KL); Q<- Op(K+1,KL) + if(P!="/" && Q!="/") + { + Tmp<- Kouten(PA,V,P,Q); + if(Tmp[[1]]!=Inf) + { + Ten<- append(Tmp,N) + Flg<- 0 + NN<- length(TenL) + I<- 1 + while (Flg==0 && I<=NN) + { + Tmp<- Op(I,TenL) + if(Op(1,Ten)<Op(1,Tmp)-Eps) + { + Tmp1<- TenL[Looprange(1,I-1)] + Tmp2<- TenL[Looprange(I,length(TenL))] + TenL<- Mixjoin(Tmp1,list(Ten),Tmp2) + Flg<-1 + } + else + if(Op(1,Ten)<Op(1,Tmp)+Eps) + { + if(Op(4,Ten)!=Op(4,Tmp)) + { + Tmp1<- TenL[Looprange(1,I-1)] + Tmp2<- TenL[Looprange(I,length(TenL))] + TenL<- Mixjoin(Tmp1,list(Ten),Tmp2) + Flg<-1 + } + else + if(Op(3,Ten)!=Op(3,Tmp)) + { + Tmp1<- TenL[Looprange(I,I-1)] + Tmp2<- TenL[Looprange(I+1,length(TenL))] + TenL<- Mixjoin(Tmp1,Tmp2) + } + Flg<- 1 + } + I<- I+1 + } + if(Flg==0) + { + TenL<- Mixjoin(TenL,list(Ten)) + } + } + } + } + } + return(TenL) +} + +########################################## + +Koutenseg<-function(...) +{ + #pointdata on AB at which AB intersects CD + varargin<-list(...) + 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 + return(Out) + } + P<-varargin[[3]]-A; Q<-varargin[[4]]-A + Eps <- 10.0^(-3) + if(Nargs>=5) + { + Eps<-varargin[[5]] + } + Eps2 <- 0.2 + if(Nargs>=6) + { + Eps2<-varargin[[6]] + } + 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 + return(Out) + } + if(max(P2,Q2)<m2 || min(P2,Q2)>M2) + { + Out<-Inf + return(Out) + } + 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<-list(Tmp1,Tmp2,0) + } + else + { + Tmp1<-A+T*V + Tmp2<-min(max(T,0),1) + Out<-list(Tmp1,Tmp2,1) + } + return(Out) + } + if(P1<m1 || P1>M1 || P2<m2 || P2>M2) + { + if(Q1<m1 || Q1>M1 || Q2<m2 || Q2>M2) + { + Out<-Inf + return(Out) + } + T<-min(max(Q1,0),1) + Tmp=A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + T<-min(max(P1,0),1) + Tmp<-A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + if(P1> -Eps0 && P1<1+Eps0 && P2> -Eps0 && P2 < Eps0) + { + T<- P1 + Tmp<- A+T*V + Out<- list(Tmp, T, 0) + return(Out) + } + if(Q1> -Eps0 && Q1<1+Eps0 && Q2> -Eps0 && Q2<Eps0) + { + T<- Q1 + Tmp<-A+T*V + Out<- list(Tmp,T,0) + return(Out) + } + if(P1<m1 || P1>M1 || P2<m2 || P2>M2) + { + if(Q1<m1 || Q1>M1 || Q2<m2 || Q2>M2) + { + Out<-Inf + return(Out) + } + T<-min(max(Q1,0),1) + Tmp<-A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + if(Q1<m1 || Q1>M1 || Q2<m2 || Q2>M2) + { + T<-min(max(P1,0),1) + Tmp<-A+T*V + Out<-list(Tmp,T,1) + return(Out) + } + if(abs(P2)<abs(Q2)) + { + T<-min(max(P1,0),1) + } + else + { + T<-min(max(Q1,0),1) + } + Tmp<A+T*V + Out<-list(Tmp,T,1) + return(Out) +} + +########################################## + +Kukeiwake<- function(PL) +{ + Eps<-10.0^(-6) + NW<- c(XMIN,YMAX); SW<-c(XMIN,YMIN) + SE<- c(XMAX,YMIN); NE<-c(XMAX,YMAX) + Tmp<-matrix(c(NW,SW,SE,NE,NW),nrow=2) + Sikaku<- t(Tmp) + Kt<- IntersectcrvsPp(PL,Sikaku) + if(length(Kt)!=2) + { + print("not two points") + return(c()) + } + 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) #18.02.06 + T2<- Paramoncurve(Pt2,M2,Sikaku) + QL<c() + if(Norm(Pt1-Op(N1+1,PL))>Eps) + { + QL<-Pt1 + } + Tmp<-Appendrow(QL,PL[(N1+1):N2,]) + QL<- Tmp + if(Norm(Pt2-Op(N2,PL))>Eps) + { + Tmp<-Appendrow(QL,Pt2) + QL<- Tmp + } + HidariL<- QL + Ms<- M2+1; Me<- M1 + if(T1<T2+Eps) Me<- M1+4 + for (M in Looprange(Ms,Me)) + { + Tmp<- Op(Nrow(HidariL),HidariL) + P<-Op(((M-1) %% 4)+1,Sikaku) + if(Norm(Tmp-P)>Eps) + { + Tmp<-Append(HidariL,P) + HidariL<-Tmp + } + } + Tmp<- Op(Nrow(HidariL),HidariL) + if(Norm(Tmp-Pt1)>Eps) + { + Tmp<-Append(HidariL,Pt1) + HidariL<-Tmp + } + MigiL<- QL + Ms<- M2; Me<- M1+1 + if(T1>T2-Eps) Me<- Me-4 + for (Mm in Looprange(Me,Ms)) + { + M<- Me+Ms-Mm + Tmp<- Op(Nrow(MigiL),MigiL) + P<- Op(((M-1) %% 4)+1,Sikaku) + if(Norm(Tmp-P)>Eps) + { + Tmp<-Appendrow(MigiL,P) + MigiL<-Tmp + } + } + Tmp<- Op(Nrow(MigiL),MigiL) + if(Norm(Tmp-Pt1)>Eps) + { + Tmp<-Appendrow(MigiL,Pt1) + MigiL<-Tmp + } + Out<- list(HidariL,MigiL) + return(Out) +} + +################################### +# 17.09.24 Eps + +Kyoukai<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps0<- 10^(-7) + DataL<-list() + for (I in 1:Nargs){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + DataL<- Mixjoin(DataL,list(list(Tmp))) + } + if(mode(Tmp)=="list"){ + if(mode(Tmp[[1]])!="list"){ + DataL<- Mixjoin(DataL, list(Tmp)) + } + else{ + DataL<-Mixjoin(DataL,Tmp) + } + } + } + Eps<- 10.0^(-4) #17.09.24 + PLall<- list() + Sflg<- 0 + N<- Length(DataL) #180621 + for (I in Looprange(1,N)){ + Data<- Op(I, DataL) + Tmp<- Op(Length(Data),Data) + if(mode(Tmp)=="numeric" && Nrow(Tmp)==1 && Length(Tmp)>1){ #180621 + Rg<-Tmp ; Nd<- Length(Data)-1 #180621 + } + else{ + if(mode(Tmp)=="character"){ + Rg<- Tmp ; Nd<- Length(Data)-1 #180621 + } + else{ + Rg<- "c" ; Nd<- Length(Data) #180621 + } + } + for (J in Looprange(1,Nd)){ + Tmp<- Op(J,Data) + if(mode(Tmp)=="character"){ + Rg<- Tmp + next + } + 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< Length(PL) #180621 + PL<-PL[Tmp:1,] + Pfirst<- Ptstart(PL) + Plast<- Ptend(PL) + } + } + } + else{ + if(Norm(P1-Plast)<Eps){ + Stp<-1; Ks<-2; Ke=Length(Points) #180621 + } + else{ + if(Norm(P2-Plast)<Eps) { + Stp<- -1; Ks<-Length(Points)-1; Ke=1 #180621 + } + else{ + Tmp<-Appendrow(PL,c(Inf,Inf)) + PL<- Appendrow(Tmp,Points) + Sflg<- 1 + Pfirst<- P1 + Plast<- P2 + Stp<- 1; Ks<- Length(Points)-1; Ke<- 1 #180621 + } + } + for (K in seq(Ks,Ke, by=Stp)){ + Tmp<- Appendrow(PL,Op(K,Points)) + PL<-Tmp + } + Plast<- Op(Ke,Points) + } + } + if(Norm(Pfirst-Plast)>Eps){ + Np<- Length(PL) #180621 + if(Rg=="c"){ + Tmp<- Appendrow(PL,Pfirst) + PL<- Tmp + } + else if(Rg=="s"){ + Tmp<- c(PL[1:Np,2],YMIN) + Y<- min(Tmp)-1 + P<- c(Plast[1],Y); Q<- c(Pfirst[1],Y) + Tmp<- Appendrow(PL,P) + Tmp=Appendrow(Tmp,Q) + PL=Appendrow(Tmp,Pfirst) + } + else if(Rg=="n"){ + Tmp<- c(PL[1:Np,2],YMAX) + Y<-max(Tmp)+1 + P<- c(Plast[1],Y); Q<- c(Pfirst[1],Y) + Tmp<- Appendrow(PL,P) + Tmp<- Appendrow(Tmp,Q) + PL<- Appendrow(Tmp,Pfirst) + } + else if(Rg=="w"){ + Tmp<- c(PL[1:Np,1],XMIN) + X<- min(Tmp)-1 + P<- c(X,Plast[2]); Q<- c(X,Pfirst[2]) + Tmp<- Appendrow(PL,P) + Tmp<- Appendrow(Tmp,Q) + PL<- Appendrow(Tmp,Pfirst) + } + else if(Rg=="e"){ + Tmp<- c(PL[1:Np,1],XMAX) + X<- max(Tmp)+1 + P<- c(X,Plast[2]); Q<- c(X,Pfirst[2]) + Tmp<- Appendrow(PL,P) + Tmp<- Appendrow(Tmp,Q) + PL<- Appendrow(Tmp,Pfirst) + } + else if(mode(Rg)=="numeric" && Nrow(Rg)==1 && Length(Rg)>1){ #180621 + Tmp<- Kukeiwake(PL) + Tmp1<- Op(1,Tmp) + Tmp2<- Naigai(Rg,list(Tmp1)) + if(Tmp2==c(1)){ + PL<-Op(1,Tmp) + } + else{ + PL<- Op(2,Tmp) + } + } + } + Tmp<- matrix(Ptstart(PL),nrow=1) #180621 + for (J in Looprange(2,Length(PL))){ + P<- Op(J,PL) + Q<- Op(Length(Tmp),Tmp) + if(Norm(P-Q)>Eps){ + Tmp1<-Appendrow(Tmp,P) + Tmp<-Tmp1 + } + } + PL<-Tmp + PLall<-c(PLall,list(PL)) + } + if(Length(PLall)==1 && Sflg==0){ + Tmp<- Op(1,PLall) +# Tmp<- Op(1,Tmp) + if(Norm(Ptstart(Tmp)-Ptend(Tmp))>Eps0){ + Tmp1<- Appendrow(Tmp,Ptstart(Tmp)) + PLall<- list(Tmp1) + } + } + return(PLall) +} + +###################################### + +Letter<-function(...) +{ ## Scaling is implemented + varargin<-list(...) + Nargs<-length(varargin) + Irng<-c(seq(from=1,to=Nargs,by=3)) + for (I in Irng) + { + 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(length(grep("n",Hset))>0) + { + Vhoko<-"n"; Y<-Y+MEMORI + } + if(length(grep("s",Hset))>0) + { + Vhoko<-"s"; Y<-Y-MEMORI + } + Hhoko<-"c" + if(length(grep("e",Hset))>0) + { + Hhoko<-"e"; X<-X+MEMORI + } + if(length(grep("w",Hset))>0) + { + Hhoko<-"w"; X<-X-MEMORI + } + Hoko<-paste(Vhoko,Hhoko,sep="") + Suu<-"+-.0123456789" + SuuL<-Suu + J<-1; Dstr<-"" + while (J<=nchar(Houkou)) + { + Tmp<-substring(Houkou,J,J) + if(length(grep(Tmp,SuuL))>0) + { + if(Dstr=="") Hk<-substring(Houkou,J-1,J-1) + Dstr<-paste(Dstr,Tmp,sep="") + } + else + { + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + Dstr<-"" + } + } + J<-J+1 + } + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI; + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + } + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + cat("\\put(",file=Wfile,append=TRUE) + Tmp1<- sprintf("%7.7f",X) # 11.07.19 + Tmp2<- sprintf("%7.7f",Y) # 11.07.19 + Str<-paste(Tmp1,",",Tmp2,sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<-"){\\hspace*{\\Width}" + Str<-paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) + } +} + +###################################################### + +Letterrot<- function(...) +{ + varargin<- list(...) + P<- varargin[[1]] + V<- varargin[[2]]; N<- 3 + P<- Doscaling(P) + V<- Doscaling(V) + Tmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Tmov<- Tmp; N<- N+1 + } + Nmov<- 0 + Tmp<- varargin[[N]] + if(mode(Tmp)=="numeric"){ + Nmov<- Tmp; N<- N+1 + } + Mojiretu<- Assign(varargin[[N]]) #2017.11.26 + Tv<- 1/Norm(V)*V + Nv<- c(-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," + } + Tmp<- paste("\\rotatebox[",Units,"origin=c]{",as.character(Theta),sep="") + Tmp<- paste(Tmp,"}{",Mojiretu,"}",sep="") + Letter(P,"c",Tmp) +} + +################################### +# 10.12.04 + +Lineplot<-function(...) +{ + varargin <- list(...) + Nargs<-length(varargin) + A<-varargin[[1]] + if(is.numeric(A)) { + 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 + } + } + else { + B<-A[[2]] + A<-A[[1]] + Is <- 2 + } + Mag <- 100 ; Semi <- "" ## 10.12.04 + for (I in Looprange(Is,Nargs)) { + Tmp <- varargin[[I]] + switch ( mode(Tmp), + "numeric"= Mag <- Tmp, + "character"= Semi <- Tmp + ) + } +V<- Mag/Norm(B-A)*(B-A) ## 10.12.04 from here + if(Semi=="") { + Out<- Listplot(c(A-V,A+V)) + } + else if(Semi=="+") { + Out<- Listplot(c(A,A+V)) + } + else { + Out<- Listplot(c(A-V,A)) + } ## 10.12.04 to here + return(Out) +} + +################################ + +Listplot<-function(...){ + varargin<-list(...); + Z<-c(); + for (I in 1:length(varargin)){ + Data<-varargin[[I]]; + if(mode(Data)=="numeric"){ + if(class(Data)=="numeric"){ + Tmp<- matrix(Data,nrow=2); + Tmp<- t(Tmp); + Z<-Appendrow(Z,Unscaling(Tmp)) #181015 + }else{ + Z<-Appendrow(Z,Unscaling(Data)) #181015 + } + }else{ + for (J in 1:length(Data)){ + Tmp<-Data[[J]]; + Z<-Appendrow(Z,Unscaling(Tmp)) #181015 + } + } + } + return(Z) +} + +############################## + +MakeBowdata <- function(PA,PB,H) +{ + Eps <- 10^(-5) + BOWSTART <<- PA + BOWEND <<- PB + D <- 1/2*Norm(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<-Tm[2]; C2<-Tmp[3] + C0<- A1^2+(A2-(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2))^2-R^2 + C1<- -(A1+B1)*(A2^2+B2^2-2*A2*B2-2*A1*B1+A1^2+B1^2)/(A2-B2)^2 + C2<- 1+(A1-B1)^2/(A2-B2)^2 + Det <- sqrt(C1^2-4*C0*C2) + Ansx1 <- (-C1+Det)/(2*C2) + Ansx2 <- (-C1-Det)/(2*C2) + Tmp <- -(A1-B1)*Ansx1/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2) + PC <- c(Ansx1,Tmp) + Tmp <--(A1-B1)*Ansx2/(A2-B2)+(1/2)*(A1^2+A2^2-B1^2-B2^2)/(A2-B2) + PC2 <- c(Ansx2,Tmp) + } + else{ + Tmp <- 0.5*(PA+PB) + PC <- Tmp+c(0,R-H) # 11.06.02 + PC2 <- Tmp-c(0,R-H) + } + VA <- PA-PC + VB <- PB-PC + if(VA[1]*VB[2]-VA[2]*VB[1]<0) { + PC <- PC2 + } + AngA <- acos((PA[1]-PC[1])/R) + if(PA[2]-PC[2]<0){ + AngA <- -AngA + } + AngB <- acos((PB[1]-PC[1])/R) + if(PB[2]-PC[2]<0){ + AngB <- -AngB + } + if(AngA>AngB) { + AngB <- AngB+2*pi + } + Out <- list(PC,R,AngA,AngB) + return(Out) +} + +#################################################### + +MakeCurves<-function(...){ ## Scaling is implemented + varargin<-list(...) + Figdata<-varargin[[1]] + if(class(Figdata)=="numeric"){ + Figdata<-matrix(Figdata,nrow=1) + } + Ptout<-1 + if(length(varargin)>=2) Ptout<-varargin[[2]] + Eps<-10.0^(-6) + IndM<-Dataindex(Figdata) + Atos<-c() + for (Nd in Looprange(1,Nrow(IndM))){ #180509 + Tmp<-IndM[Nd,] + Motos<- Figdata[Tmp[1]:Tmp[2],] + All<-Nrow(Motos) + if(Nrow(Motos)==1){ + if(InWindow(Motos)=="o"){ + next + } + Tmp1<- as.numeric(Motos) + Tmp1=list(Tmp1) #190405 + if(Ptout==1){ + Drwpt(Tmp1) + } + else{ + Tmp1<- Doscaling(Tmp1) + Atos<-Appendrow(Atos,c(Inf,Inf),Tmp1) + next + } + } + Crv<-c() + for (I in Looprange(2,All)){ + P<- Op(I-1,Motos) + Q<- Op(I,Motos) + Snbn<-MeetWindow(P,Q) + if(length(Snbn)==0){ + if(length(Crv)>0){ + Atos<-Appendrow(Atos,c(Inf,Inf),Doscaling(Crv)) + Crv<-c() + } + } + else{ + if(Norm(Snbn[1,]-Snbn[2,])<Eps){ next} # naosi 101202 + if(length(Crv)==0){ + Crv<-Snbn + } + else{ + Tmp<-Op(Nrow(Crv),Crv) + if(Norm(Tmp-Op(1,Snbn))<Eps){ + Crv<-Appendrow(Crv,Op(2,Snbn)) + } + else{ + Atos<-Appendrow(Atos,c(Inf,Inf),Doscaling(Crv)) + Crv<-Snbn + } + } + } + } + if(Nrow(Crv)>=2) + { + Atos<-Appendrow(Atos,c(Inf,Inf),Doscaling(Crv)) + } + } + Outdata<-Atos[2:Nrow(Atos),] + if(class(Outdata)=="numeric") + { + Outdata<-matrix(Outdata,nrow=1) + } + return(Outdata) +} + +###################################### + +Makehasen<- function(Figdata,Sen,Gap,Ptn) +{ + Eps<- 10.0^(-6) + Clist<- MakeCurves(Figdata) + DinM<- Dataindex(Clist) + for (N in Looprange(1,Nrow(DinM))){ + Tmp<- DinM[N,] + Data<- Clist[Tmp[1]:Tmp[2],] + Dtall<- Nrow(Data) + Len<- 0 + Lenlist<- c(0) + for (I in Looprange(2,Dtall)){ + Len<- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist<- c(Lenlist,Len) + } + Lenall<- Lenlist[Dtall] + if(Lenall==0){ + next + } + Kari<- (Sen+Gap)*0.1 + Naga<- Sen*0.1 + Tobi<- Gap*0.1 + if(Norm(Data[1,]-Data[Dtall,])<Eps){ + Nsen<- max(ceiling(Lenall/Kari),3) + SegUnit<- Lenall/Nsen + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + if(Ptn==0){ + Nsen<- max(ceiling((Lenall+Tobi)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + Nsen<- max(ceiling((Lenall+Naga)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(Tobi,Tobi+(Nsen-2)*SegUnit,by=SegUnit)) + } + } + Hajime<- 1; Owari<- 1 + Mojisu<- 0 + for (I in Looprange(1,length(SegList))){ + Len<- SegList[I] + J<- Owari + while (Len>=Lenlist[J]-Eps){ + if(J==Dtall){ + break + } + J<- J+1 + } + Hajime<- J-1 + J<- Hajime + while (Len+Naga>Lenlist[J]-Eps){ + if(J==Dtall){ + break + } + J<- J+1 + } + Owari<- J-1 + T<- (Len-Lenlist[Hajime]) + T<- T/(Lenlist[Hajime+1]-Lenlist[Hajime]) + P<- Data[Hajime,]+T*(Data[Hajime+1,]-Data[Hajime,]) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + for (J in Looprange(Hajime+1,Owari)){ + P<- Data[J,] + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + } + T<- (Len+Naga-Lenlist[Owari]) + T<- T/(Lenlist[Owari+1]-Lenlist[Owari]) + P<- Data[Owari,]+T*(Data[Owari+1,]-Data[Owari,]) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str1<- paste("\\special{pa ",X," ",Y,"}",sep="") + Str2<- "\\special{fp}" + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str1)+nchar(Str2) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<- 0 + } + } + } + cat("%\n%\n",file=Wfile,append=TRUE); +} + +###################################### + +Makeliststr<- function(L) +{ + Out="list(" + for (I in 1:length(L)){ + Dt<- L[[I]] + if(mode(Dt)=="numeric"){ + if(length(Dt)==1){ + Dts<- as.character(Dt) + } + else{ + Dts<- "c(" + for (J in Looprange(1,Nrow(Dt))){ + for (K in 1:ncol(Dt)){ + Dts<- paste(Dts,as.character(Dt[J,K]),sep="") + if(K< ncol(Dt)){ + Dts<- paste(Dts,",",sep="") + } + } + if(J<Nrow(Dt)){ + Dts<- paste(Dts,";",sep="") + } + else{ + Dts<- paste(Dts,")",sep="") + } + } + } + } + if(mode(Dt)=="character"){ + Dts<- paste(Prime(),Dt,Prime(),sep="") + } + if(mode(Dt)=="list"){ + Dts<- Makeliststr(Dt) + } + Out<- paste(Out,Dts,sep="") + if(I<length(L)){ + Out<- paste(Out,",") + } + else{ + Out<- paste(Out,")",sep="") + } + } + return(Out) +} + +############################################ + +Makeshasen<- function(PtnL,PA,V,Bdy) +{ + Eps<- 10^(-6) + TenL<- KoutenList(PA,V,Bdy) + Nten<- length(TenL) + Call<- length(Bdy) + Ptn<- c(seq(0, 0, length=Call)) + Out<- list() + GL<- c() + Te<- -10^6 + for (I in Looprange(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<- (Op(NC,Ptn)+1) %% 2 + Ptn[NC]<- Tmp + if(Op(1,TenQ)-Ts>Eps){ + if(Member(Ptn,PtnL)){ + if(abs(Te-Ts)>Eps){ + if(Nrow(GL)>0){ + Tmp<- Mixjoin(Out, list(GL)) + Out<- Tmp + } + GL<- Listplot(P,Q) + } + else{ + Tmp <- Appendrow(GL, Q) + GL<- Tmp + } + Te<- Op(1,TenQ) + } + } + } + if(Nrow(GL)>0){ + Tmp<- Mixjoin(Out, list(GL)) + Out<- Tmp + } + return(Out) +} + +############################################# + +Mawarikomi<- function(...) +{ + varargin<- list(...) + haba<- "10cm" + Nargs<- length(varargin) + if(Nargs>0){ + haba<- varargin[[1]] + } + cat("\\begin{mawarikomi}%\n",file="",append=TRUE) + cat("%<1>[5](0,0)%\n",file="",append=TRUE) + Str<- paste("{",haba,"}{%\n",sep="") + cat(Str,file="",append=TRUE) + cat("}%\n",file="",append=TRUE) + cat("\\end{mawarikomi}",file="",append=TRUE) +} + +############################################## + +MeetWindow<-function(PA,PB) +{ + if(InWindow(PA)=="i" && InWindow(PB)=="i") + { + R<-Appendrow(PA,PB) + return(R) + }; + Horner<-function(n,t) + { + PT<-(1-t)*PA+t*PB; + return(PT[n]) + } + Eps<-10.0^(-6); + 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]); + } + if(PA[2]!=PB[2]) + { + Tym<-(YMIN-PA[2])/(PB[2]-PA[2]); + TyM<-(YMAX-PA[2])/(PB[2]-PA[2]); + } + Tmp<-Horner(2,Txm); + if(Tmp<YMIN-Eps || Tmp>YMAX+Eps) + { + Txm<-(-1); + } + Tmp<-Horner(2,TxM); + if(Tmp<YMIN-Eps || Tmp>YMAX+Eps) + { + TxM<-(-1) + } + Tmp<-Horner(1,Tym); + if(Tmp<XMIN-Eps || Tmp>XMAX+Eps) + { + Tym<--1 + } + Tmp<-Horner(1,TyM); + if(Tmp<XMIN-Eps || Tmp>XMAX+Eps) + { + TyM<--1 + } + Tans<-sort(c(Txm,TxM,Tym,TyM)); + Tmp<-c(); + for (I in 1:length(Tans)) + { + Tmp1<-Tans[I]; + if(Tmp1>-Eps && Tmp1<1+Eps) + { + if(length(Tmp)==0) + { + Tmp<-c(Tmp1); + } + else + { + if(abs(Tmp[length(Tmp)]-Tmp1)>Eps) + { + Tmp<-c(Tmp,Tmp1) + } + } + } + } + Tans<-Tmp; + if(length(Tans)==0) + { + R<-c(); + return(R); + } + if(length(Tans)==1) + { + Ten1<-Horner(1:2,Tans[1]); + if(InWindow(PA)=="i") + { + R<-Appendrow(PA,Ten1) + return(R) + } + else + { + R<-Appendrow(Ten1,PB) + return(R) + } + } + Ten1<-Horner(1:2,Tans[1]) + Ten2<-Horner(1:2,Tans[2]) + R<-Appendrow(Ten1,Ten2) + return(R) +} + +######################################### + +# New 10.03.21 + +Mixjoin<-function(...) +{ + varargin<-list(...) + Nargs<- length(varargin) + M<- list() + for (I in 1:Nargs) + { + Tmp<-varargin[[I]] + if(length(Tmp)==0) next + if(Mixtype(Tmp)==1) + { + Tmp<-list(Tmp) + } + if(length(M)==0){ + M <- Tmp + } + else{ + M<- c(M,Tmp) + } + } + return(M) +} + +################################# + +Mixlength<- function(PL){ + if(length(PL)==0){ + return(0) + } + if(Mixtype(PL)==1){ + Out<- Nrow(PL) + } + else{ + Out<- length(PL) + } + return(Out) +} + +########################################### + +Mixtype<- function(D) +{ + if(mode(D)!="list") return(1) + for (I in 1:length(D)) + { + Tmp<- D[[I]] + if(mode(Tmp)=="list") return(3) + } + return(2) +} + +########################################### + +Naigai<- function(A,Bdy) +{ + V<- c(1,1) + Call<-length(Bdy) + KL<- KoutenList(A,V,Bdy) + Ptn<- seq(1,1,length=Call) + for (K in Looprange(1,length(KL))) + { + Ten<- Op(K,KL) + T<- Op(1,Ten); NC<- Op(4,Ten) + if(T<0) + { + Tmp<- (Ptn[NC]+1) %% 2 + Ptn[NC]<- Tmp + } + } + return(Ptn) +} + +######################################## + +Nearestpt<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + PL1<- varargin[[1]] + if(!is.matrix(PL1)){ + Tmp<- matrix(PL1); + PL1<- t(Tmp) + } + if(Nrow(PL1)==1) Flg=0 + else Flg=1 + Eps<- 10.0^(-6) + PL<- varargin[[2]] + Ans<- list(PL1[1,],1,PL[1,],1,Norm(PL1[1,]-PL[1,])) + for(N in Looprange(1,Nrow(PL1))){ + PA<- PL1[N,] + Pm<- PL[1,] + Im<- 1 + Sm<- Norm(Pm-PA) + for(I in Looprange(1,Nrow(PL)-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) next + T<- (-A2*V2-V1*A1+V1*X1+X2*V2)/Tmp + if(T< -Eps){ + P<- c(A1,A2) + }else{ + if(T>1+Eps){ + P<- c(B1,B2) + }else{ + P<- c(A1+T*V1,A2+T*V2) + } + } + S<- Norm(P-PA) + if(S<Sm-Eps){ + Tmp<- Paramoncurve(P,I,PL) + Pm<- P; Im<- Tmp; Sm<- S + } + } + if(Sm<Op(5,Ans)) Ans<- list(PA,N,Pm,Im,Sm) + if(Flg==0){ + Ans<- Ans[3:5] + } + } + return(Ans) +} + +######################################### + +Newlength<- function() +{ + Tmp1<- "\\newlength{\\Width}%\n" + Tmp2<- "\\newlength{\\Height}%\n" + Tmp3<- "\\newlength{\\Depth}%\n" + cat(Tmp1,file="",append=TRUE); + cat(Tmp2,file="",append=TRUE); + cat(Tmp3,file="",append=TRUE); +} + +######################################### + +Numptcrv<-function(Fig) +{ + return(Nrow(Fig)) +} + +# 2018.01.29 +Length<- function(Data){ + if(is.matrix(Data)){return(nrow(Data))} + if(is.character(Data)){return(nchar(Data))} + return(length(Data)) +} + +######################################### + +Op<-function(N,Data) +{ + C <- c() + if(length(Data)==0) return(C) + if(mode(Data)=="list"){ + if(class(Data)=="data.frame"){ # 10.02.23 + C<- Data[N,] + } + else{ + C<- Data[[N]] + } + return(C) + } + if(mode(Data)=="character"){ + if(length(Data)==1){ + C<- substring(Data,N,N) + } + else{ + C<- Data[N] + } + return(C) + } + if(mode(Data)=="numeric"){ + if(class(Data)=="matrix"){ + Din<- Dataindex(Data) + if(nrow(Din)==1){ + C<- Data[N,] + } + else{ + Tmp1<- Din[N,1] + Tmp2<- Din[N,2] + C<- Data[Tmp1:Tmp2,] + } + } + else{ + C=Data[N] + } + } + return(C) +} + +######################################### +# 2013.05.20 Changed ( Creator recorded) +# 2013.12.18 Beginpicture inclued + +Openfile<-function(...) +{ + varargin<- list(...) + File<- varargin[[1]] + Bflg<- 0 + Wfile<<- File + Creator<- "" + Cflg<- 0 + Nargs<- length(varargin) + for(N in Looprange(2,Nargs)){ + Tmp<- varargin[[N]] + Tmp1<- strsplit(Tmp,"=",fixed=TRUE) + Tmp1<- Tmp1[[1]] + if(length(Tmp1)>1){ + Creator<- Tmp1[2] + Cflg<- 1 + } + else{ + Unitstr<- Tmp + Bflg<- 1 + } + } + Recentf<- "" + Fv<- list.files() + Nv<- grep("\\.r$", Fv) + Rfiles<- Fv[Nv] + StrW<- paste("%%% ",File,sep="") #17.10.28 + StrC<- paste("%%% Generator=",Creator,sep="") + if(Cflg==0){ + } + cat(StrW,"\n",file=Wfile) + cat(StrC,"\n",file=Wfile,append=TRUE) + if(Bflg==1){ + Beginpicture(Unitstr) + } +} + +######################################### + +Openpar<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Tmp<- varargin[[1]] + Tmp1<- substr(Tmp,1,1) + if(Tmp1=="\\"){ + Namestr<- Tmp + N<- 2 + } + else{ + Namestr<- "\\tmp" + N<- 1 + } + Habastr<- varargin[[N]] + if(Nargs>N){ + Posstr<- paste("[",varargin[[N+1]],"]",sep="") + } + else{ + Posstr<- "[c]" + } + Openphr(Namestr) + S<- paste("\\begin{minipage}",Posstr,"{",Habastr,"}%\n",sep="") + cat(S,file=Wfile,append=TRUE) +} + +################################### + +Openphr<- function(Str) +{ + S<- paste("\\def",Str,"{%\n",sep="") + cat(S,file=Wfile,append=TRUE) +} + +##################################### + +Ovalbox<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Pos<- varargin[[1]] + Dr<- varargin[[2]] + StrV<- varargin[[3]] + R<- 0.2 + NDflg<- 0 + for (I in Looprange(4,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + R<- Tmp + } + else{ + if(substr(Tmp,1,1)=="-"){ + NDflg<- 1 + Tmp1<- substr(Tmp,2,nchar(Tmp)) + Cmdstr<- chartr("*","G",Tmp1) + } + } + } + Xr<- c(XMIN,XMAX) + Yr<- c(YMIN,YMAX) + Uv<- 0.6; Uh<- 0.8 + N<- nchar(StrV) + W<- Uh;H<- Uv*N + Setwindow(c(-W/2,W/2),c(-H,0)) + G<- Ovaldata(c(0,-H/2),W/2,H/2,R) + Openphr("\\ketpictmp") + Beginpicture("1cm") + if(NDflg==0){ + Drwline(G) + } + else{ + eval(parse(text=Cmdstr)) + } + for (I in Looprange(1,N)){ + Letter(c(0,Uv/2-Uv*I),"c",Op(I,StrV)) + } + Endpicture(0) + Closephr() + Setwindow(Xr,Yr) + Letter(Pos,Dr,"\\ketpictmp") +} + +########################################## + +Ovaldata<- function(...) #17.09.11 +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==1){ + Eps<- 1.0*10^(-4) + C<- 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 + } + Rc<- 0.2 + if(N<=Nargs){ #15.11.15 + Rc<- varargin[[N]]*Rc #15.11.15 + } + Out<- c() + P<- C+c(Dx-Rc,Dy-Rc) + Tmp1<- Circledata(c(P,Rc),"R=c(0,pi/2)","N=10") #17.11.29 + Tmp2<- Listplot(C+c(Dx-Rc,Dy),C+c(0,Dy)) + Tmp3<- Listplot(C+c(Dx,0),C+c(Dx,Dy-Rc)) + G<- Joincrvs(Tmp3,Tmp1,Tmp2) + Tmp<- Reflectdata(G,c(C,C+c(0,1))) + G<- Joincrvs(G,Tmp) + Tmp<- Reflectdata(G,c(C,C+c(1,0))) + Out<- Joincrvs(G,Tmp) +} + +######################################### + +Paramark<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + PA<- varargin[[1]] + PB<- varargin[[2]] + PC<- varargin[[3]] + R<- 0.5 + if(Nargs>=4){ + R<- varargin[[4]]*R + } + U<- R*(PA-PB)/Norm(PA-PB) + V<- R*(PC-PB)/Norm(PC-PB) + if(Crossprod(PA-PB,PC-PB)!=0){ + P<- Listplot(c(PB+U,PB+U+V,PB+V)) + } + else{ + P<- c() + } +} + +########################################### + +Paramoncurve<-function(...){ + varargin<-list(...) + Nargs<-length(varargin) + Eps<-10^(-8) + P<-varargin[[1]] + Gdata<-varargin[[Nargs]] + if(Nrow(P)>1){ + Tmp<-P; P<-Gdata; Gdata<-Tmp + } + if(Nargs==2){ + Tmp<-Nearestpt(P,Gdata) + Out<-Tmp[[2]] + return(Out) + } + N<-varargin[[2]] + PtL<-Gdata + N=min(N,Length(PtL)-1) #18.02.11from + Pa<-Ptcrv(N,PtL) + Pb<-Ptcrv(N+1,PtL) + V<-Pb-Pa + W<-P-Pa + D2<-Norm(V)^2 + if(D2<Eps) return(0) + S<-Dotprod(V,W)/D2 + S<-min(max(S,0),1) + Out=N+S #18.02.11until + return(Out) +} + +############################################## + +Paramplot<- function(...) +{ + varargin<- list(...) + Eps<- 10^(-5) + Nargs<- length(varargin) + Fnflg<- 0 + Fnstr<- varargin[[1]]; Is=2 + Rgstr<- varargin[[Is]]; Is<- Is+1 + Tmp=strsplit(Rgstr,"=") #181017from + Var=Tmp[[1]][1] + Fnstr=Assign(Fnstr,Var,"t") + Rgstr=Assign(Rgstr,Var,"t") #181017from + Range<- c(0,2*pi) + N<- 50 # Numpoints + E<-c() # Exclusions + D<- Inf # Discont + for (I in Looprange(Is,Nargs)) + { + Tmp<- varargin[[I]] + Tmp<- strsplit(Tmp,"=") + K<- Tmp[[1]] + Tmp<- K[1] + Lhs<- substring(Tmp,1,1) + Tmp1<- K[2] + Str<-paste(Lhs,"=",Tmp1,sep="") + eval(parse(text=Str)) + } + Tmp<- strsplit(Rgstr,"=") + K<-Tmp[[1]] + if(length(K)>1) + { + Vname<- K[1] + Tmp1<- K[2] + Rng<- eval(parse(text=Tmp1)) + } + else + { + Vname<- Rgstr + Rng<- c(0,2*pi) + } + T1<- Rng[1]; T2<- Rng[2] + Dt<- (T2-T1) #180929 + if(Fnflg==0) + { + Str<- gsub(Vname,"t",Fnstr) + } + if(abs(Dt)<Eps){ # 16.12.13 + t=T1 + P=eval(parse(text=Str)) + return(P) + } + P<-c() + if(length(E)>0) + { + E<-sort(E) + E<E[length(E):1] + } + E<- c(E, Inf) + Tmp<- sort(E) + E<- E[length(Tmp):1] + Ke<- 1 + for(jj in 1:(N+1)){ + t=T1+(jj-1)*Dt/N #180929 + Pa<- c() + if(t-E[Ke]< Eps) + { + if(Fnflg==0) + { + Tmp<-eval(parse(text=Str)) + Pa<- Tmp + } + else + { + } + } + if(abs(t-E[Ke])<=Eps) + { + if(Nrow(P)>0 && Op(Nrow(P),P)!=c(Inf,Inf)) + { + Pa<- c(Inf,Inf) + } + } + if(t-E[Ke]>Eps) + { + if(Fnflg==0) + { + Tmp<- eval(parse(text=Str)) + Pa<- Tmp + } + else + { + } + Ke<-Ke+1 + } + if(length(Pa)>0){ + if(Pa[1]==Inf){ + Tmp<-Appendrow(P,Pa) + P<-Tmp + }else{ + if(Nrow(P)==0){ + Tmp<- Appendrow(P,Pa) + P<-Tmp + }else{ + Tmp<- Op(Nrow(P),P) + if(Tmp[1]==Inf){ + Tmp<- Appendrow(P,Pa) + P<- Tmp + }else{ + if(Norm(Tmp-Pa)<D){ + if(Norm(Tmp-Pa)>Eps){ #180928 + Tmp<-Appendrow(P,Pa) + P<-Tmp + } #180928 + }else{ + Tmp<- Appendrow(P,c(Inf,Inf),Pa) + P<- Tmp + } + } + } + } + } + } + Tmp<- Nrow(P) + Tmp1<- Op(Tmp,P) + if(Tmp1[1]==Inf) + { + P<- P[1:(Tmp-1),] + } + return(P) +} + +##################################### + +Partcrv<- function(A,B,PkL) +{ + Eps<- 10.0^(-3) + if(mode(A)=="numeric" && length(A)==1){ + 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<- list(Out1,Out2) + } + return(Ans) + } + Is<- ceiling(A) + Ie<- floor(B) + PL<- c() + if(A<Is-Eps){ + P<- (Is-A)*PkL[Is-1,]+(1-Is+A)*PkL[Is,] + PL<- c(P) + } + PL<- Appendrow(PL, PkL[Looprange(Is,Ie),]) + if(B>Ie+Eps){ + P<- (1-B+Ie)*PkL[Ie,]+(B-Ie)*PkL[Ie+1,] + PL<- Appendrow(PL,P) + } + Ans<- PL + return(Ans) + } + Tmp<- Nearestpt(A,PkL) + Ta<- Op(2,Tmp) + Tmp<- Nearestpt(B,PkL) + Tb<- Op(2,Tmp) + Ans<- Partcrv(Ta,Tb,PkL) +} + +########################################## +# 13.05.03 + +Partframe<- function(Tb,St,Ed) +{ + G<- Dividetable(Tb) + Gw<- G[[1]] + Gt<- G[[2]] + Gy<- G[[3]] + Gwt<- Tb[[4]] + Gwy<- Tb[[5]] + Gat<- c(list(Gwt[[1]]),Gt,list(Gwt[[2]])) + Gay<- c(list(Gwy[[1]]),Gy,list(Gwy[[2]])) + Tmp1<- Ptstart(Gat[[St[1]]]) + Tmp2<- Ptstart(Gay[[St[2]]]) + Ps<- c(Tmp1[1],Tmp2[2]) + Tmp1<- Ptstart(Gat[[Ed[1]]]) + Tmp2<- Ptstart(Gay[[Ed[2]]]) + Pe<- c(Tmp1[1],Tmp2[2]) + Pars<- Paramoncurve(Ps,Gw) + Pare<- Paramoncurve(Pe,Gw) + if(Pars<Pare){ + Out<- Partcrv(Pars,Pare,Gw) + } + else{ + Tmp1<- Partcrv(Pars,Numptcrv(Gw),Gw) + Tmp2<- Partcrv(1,Pare,Gw) + Out<- Joincrvs(Tmp1,Tmp2) + } +return(Out) +} + + +########################################## +# 10.12.04 + +Plotdata<- function(...) +{ + varargin<- list(...) + Eps<- 10^(-5) + Fnstr<- varargin[[1]]; Is<- 2 + Fnstr=Assign(Fnstr) #180510(for KeTCindy) + Fnflg<- 0 + Rgstr<- varargin[[Is]]; Is<- Is+1 + Rgstr=Assign(Rgstr) #180510(for KeTCindy) + Tmp<- strsplit(Rgstr,"=") + K<-Tmp[[1]] + if(length(K)>1){ + Vname<- K[1] + Tmp1<- K[2] + Rng<- eval(parse(text=Tmp1)) + } + else{ + Vname<- Rgstr + Rng<- c(XMIN,XMAX) + } + N<- 50 # Numpoints + E<-c() # Exclusions + Exfun<- "" # Exclusion function + D<- Inf # Discont + for (I in Looprange(Is,length(varargin))){ + Tmp<- varargin[[I]] + Lhs<- substring(Tmp,1,1) + Tmp<- strsplit(Tmp,"=") + K<- Tmp[[1]] + Tmp1<- K[2] + Tmp2<- grep(Vname,Tmp1,fixed=TRUE) ## 10.12.04 + if(length(Tmp2)==0){ + Str<-paste(Lhs,"=",Tmp1,sep="") + eval(parse(text=Str)) + } + else{ + Exfun<-Tmp1 + } + } + X1<- Rng[1]; X2<- Rng[2] + dx<- (X2-X1) #180929 + if(Fnflg==0){ + Str<- gsub(Vname,"x",Fnstr,fixed=TRUE) + } + if(abs(dx/N)<Eps){ #180929 + x=X1 + P=c(X1,eval(parse(text=Str))) + return(P) + } + Exfun<- gsub(Vname,"x",Exfun,fixed=TRUE) + P<-c() + if(length(E)>0){ + E<-sort(E) + E<E[length(E):1] + } + E<- c(E, Inf) + Tmp<- sort(E) + E<- E[length(Tmp):1] + Ke<- 1 + for (J in 0:N){ #180929 + x=X1+dx*J/N #180929 + if(nchar(Exfun)>0){ + Tmp<-eval(parse(text=Exfun)) + if(abs(Tmp)<Eps){ + P<- Appendrow(P,c(Inf,inf)) + next + } + } + Pa<- c() + if(x-E[Ke]< -Eps){ ## 10.12.04 + Tmp<-eval(parse(text=Str)) + Pa<- c(x,Tmp) + } + if(abs(x-E[Ke])<=Eps){ + if(Nrow(P)>0 && P[Nrow(P),]!=c(Inf,Inf)){ + Pa<- c(Inf,Inf) + } + } + if(x-E[Ke]>Eps){ + Tmp<- eval(parse(text=Str)) + Pa<- c(x,Tmp) + Ke<-Ke+1 + } + if(length(Pa)>0){ + if((abs(Pa[1])==Inf)||(abs(Pa[2])==Inf)){ #190409 + Pa=c(Inf,Inf) #190322 + Tmp<-Appendrow(P,Pa) + P<-Tmp + } + else{ + if(Nrow(P)==0){ + Tmp<- Appendrow(P,Pa) + P<-Tmp + } + else{ + Tmp<- P[Nrow(P),] + if(Tmp[1]==Inf){ + Tmp<- Appendrow(P,Pa) + P<- Tmp + } + else{ + if(Norm(Tmp-Pa)<D){ + Tmp<-Appendrow(P,Pa) + P<-Tmp + } + else{ + Tmp<- Appendrow(P,c(Inf,Inf),Pa) + P<- Tmp + } + } + } + } + } + } + Tmp<- Nrow(P) + Tmp1<-P[Tmp,] + if(Tmp1[1]==Inf) + { + P<- P[1:(Tmp-1),] + } + return(P) +} + +###################################### + +Pointoncurve<-function(...) +{ + varargin<-list(...) + Eps<-10^(-4) + T<-varargin[[1]] + Gdata<-varargin[[2]] + if(Nrow(T)>1) + { + Tmp<-T; T<-Gdata; Gdata<-Tmp + } + PtL<-Gdata + N<-trunc(T+Eps); + S<-max(T-N,0); + if(N==Nrow(PtL)) + { + Out<-PtL[N,] + } + else + { + Pa<-PtL[N,] + Pb<-PtL[N+1,] + Out<-(1-S)*Pa+S*Pb + } + return(Out) +} + +############################################## +# 10.11.20 +# 13.05.03 Inf + +Pointdata<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + PL<- list() + for (I in Looprange(1,Nargs)){ # 10.11.20 + DL<-varargin[[I]] + DL<- Flattenlist(DL) # 10.11.20 from here + for (J in Looprange(1,length(DL))){ + Dt<- DL[[J]] + if(is.matrix(Dt)|| is.data.frame(Dt)){ + for (K in 1:nrow(Dt)){ + Tmp<- as.numeric(Dt[K,]) + if(Tmp[1]<Inf){ + PL<- c(PL,list(Tmp)) + } + } + } + else{ + PL<- c(PL,list(Dt)) + } + } + } # to here + if(length(PL)==1) + { + PL<-PL[[1]] + } + return(PL) +} + +############################################## + +Prime<- function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out="'" + } + else{ + Out<- paste(varargin[[1]],"'",sep="") + } + return(Out) +} + +############################################ +# 17.09.29 + +Ptcrv<-function(N,Fig) +{ + if(is.matrix(Fig)){ + return(Fig[N,]) + } + else{ + return(Fig) + } +} + +######################################### + +Ptend<-function(Fig) +{ + if(Length(Fig)>0){ #18.02.09 + return(Op(Length(Fig),Fig)) + }else{ + return(c()) + } +} + +######################################### + +Ptne<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMAX,YMAX) + } + else{ + G<- varargin[[1]] + XM<- max(G[,1]) + YM<- max(G[,2]) + Out<- c(XM,YM) + } + return(Out) +} + +######################################### + +Ptnw<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMIN,YMAX) + } + else{ + G<- varargin[[1]] + Xm<- min(G[,1]) + YM<- max(G[,2]) + Out<- c(Xm,YM) + } + return(Out) +} + +######################################### + +Ptse<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMAX,YMIN) + } + else{ + G<- varargin[[1]] + XM<- max(G[,1]) + Ym<- min(G[,2]) + Out<- c(XM,Ym) + } + return(Out) +} + +############################################# + +Ptstart<-function(Fig) +{ + if(Length(Fig)>0){ #18.02.09 + return(Op(1,Fig)) + }else{ + return(c()) + } +} + +######################################### + +Ptsw<-function(...) +{ + varargin<- list(...) + if(length(varargin)==0){ + Out<- c(XMIN,YMAX) + } + else{ + G<- varargin[[1]] + Xm<- min(G[,1]) + Ym<- min(G[,2]) + Out<- c(Xm,Ym) + } + return(Out) +} + +############################################## + +Putcell<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + Str<- varargin[[Nargs]] + if(mode(Str)=="numeric"){ + Str<- as.character(Str) + } + Pos<- varargin[[Nargs-1]] + Nrg<- varargin[[2]] + if(mode(Nrg)=="character"){ + if(Nargs==4){ + Cell<- Findcell(TbL,Nrg) + } + else{ + Mrg<- varargin[[3]] + Cell<- Findcell(TbL,Nrg,Mrg) + } + } + else{ + Mrg<- varargin[[3]] + Cell<- Findcell(TbL,Nrg,Mrg) + } + Pt<- Cell[[1]]; Dr<- "c" + Posh<- substr(Pos,1,1) + Post<- substr(Pos,2,nchar(Pos)) + if(toupper(Posh)=="R"){ + Pt<- Pt+c(Cell[[2]],0) + if(nchar(Post)==0){ + Dr<- "w1" + } + else{ + Dr<- paste("w",Post,sep="") + } + } + if(toupper(Posh)=="L"){ + Pt=Pt-c(Cell[[2]],0) + if(nchar(Post)==0){ + Dr<- "e1" + } + else{ + Dr<- paste("e",Post,sep="") + } + } + if(toupper(Posh)=="U"){ + Pt<- Pt+c(0,Cell[[3]]) + if(nchar(Post)==0){ + Dr<- "s1" + } + else{ + Dr<- paste("s",Post,sep="") + } + } + if(toupper(Posh)=="D"){ + Pt<- Pt-c(0,Cell[[3]]) + if(nchar(Post)==0){ + Dr<- "n1" + } + else{ + Dr<- paste("n",Post,sep="") + } + } + if(toupper(Posh)=="B"){ + Pt<- Pt-c(0,Cell[[3]]) + if(nchar(Post)==0){ + Dr<- "n1" + } + else{ + Dr<- paste("n",Post,sep="") + } + Str<- paste("$\\mathstrut$",Str,sep="") + } + Letter(Pt,Dr,Str) +} + +############################################# + +PutcoL<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Ag<- varargin[[2]] + if(mode(Ag)=="numeric"){ + CoL<- Ag + } + else{ + Alpha<- "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" + Clm<- c() + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,I,I) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + Tmp1<- nchar(Tmp[1]) + Clm<- c(Clm,Tmp1) + } + } + Nrg<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length(Clm)-I + Nrg<- Nrg+Tmp*26^Tmp1 + } + CoL<- Nrg + } + Nc<- length(TbL[[3]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nc){ + break + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Putcell(TbL,CoL,K,Dpos,Dt) # 2011.03.02 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- Dt[[N]] + Rrng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Rrng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,CoL,Rrng,Pos,Str) + K<- Crng[2] + } + } +} + +Putcol<- function(...) +{ + PutcoL(...) +} + +PutcoLexpr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Ag<- varargin[[2]] + if(mode(Ag)=="numeric"){ + CoL<- Ag + } + else{ + Alpha<- "-ABCDEFGHIJKLMNOPQRSTUVWXYZ" + Clm<- c() + for (I in Looprange(1,nchar(Ag))){ + C<- substr(Ag,I,I) + C<- toupper(C) + Tmp<- strsplit(Alpha,C) + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + Tmp1<- nchar(Tmp[1]) + Clm<- c(Clm,Tmp1) + } + } + Nrg<- 0 + for (I in seq(length(Clm),1,by=-1)){ + Tmp<- Clm[I] + Tmp1<- length(Clm)-I + Nrg<- Nrg+Tmp*26^Tmp1 + } + CoL<- Nrg + } + Nc<- length(TbL[[3]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nc){ + break + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Dt<- paste("$",Dt,"$",sep="") + Putcell(TbL,CoL,K,Dpos,Dt) # 2011.03.02 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- paste("$",Dt[[N]],"$",sep="") + Rrng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Rrng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,CoL,Rrng,Pos,Str) + K<- Crng[2] + } + } +} + +Putcolexpr<- function(...) +{ + PutcoLexpr(...) +} + +##################################################### + +PutcoLstr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Tb<- varargin[[1]] + Nr<- varargin[[2]] + Pos<- varargin[[3]] + Str<- varargin[[4]] + Sep<- "" + if(Nargs>4){ + Sep<- varargin[[5]] + } + if(nchar(Sep)==0){ + for (I in Looprange(1,nchar(Str))){ + Tmp<- substr(Str,I,I) + Putcell(Tb,Nr,I,Pos,Tmp) + } + } + else{ + Ltr<- "" + K<- 1 + for (I in Looprange(1,length(Str))){ + Tmp<- substr(Str,I,I) + if(Tmp==Sep){ + Putcell(Tb,Nr,K,Pos,Ltr) + K<- K+1 + Ltr<- "" + } + else{ + Ltr<- paste(Ltr,Tmp,sep="") + } + } + if(nchar(Ltr)>0){ + Putcell(Tb,Nr,K,Pos,Ltr) + } + } +} + +############################################# + +Putrow<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Row<- varargin[[2]] + Nr<- length(TbL[[2]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nr){ + break; + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Putcell(TbL,K,Row,Dpos,Dt) # 110308 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- Dt[[N]] + Crng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Crng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,Crng,Row,Pos,Str) + K<- Crng[2] + } + } +} + +Putrowexpr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + TbL<- varargin[[1]] + if(mode(TbL)!="list"){ + return("Tabledata missing") + } + Row<- varargin[[2]] + Nr<- length(TbL[[2]])+1 + K<- 1 + Dpos<- varargin[[3]] + for (I in Looprange(4,Nargs)){ + if(I-3>Nr){ + break; + } + Dt<- varargin[[I]] + if(mode(Dt)!="list"){ + Dt<- paste("$",Dt,"$",sep="") + Putcell(TbL,K,Row,Dpos,Dt) #110308 + K<- K+1 + } + else{ + N<- length(Dt) + Str<- paste("$",Dt[[N]],"$",sep="") + Crng<- c(K,K+1) + Pos<- Dpos + for (J in Looprange(1,N-1)){ + Tmp<- Dt[[J]] + if(mode(Tmp)=="numeric"){ + Crng<- c(K,K+Tmp) + } + if(mode(Tmp)=="character"){ + Pos<- Tmp + } + } + Putcell(TbL,Crng,Row,Pos,Str) + K<- Crng[2] + } + } +} + +#################################################### + +Putrowstr<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Tb<- varargin[[1]] + Nr<- varargin[[2]] + Pos<- varargin[[3]] + Str<- varargin[[4]] + Sep<- "" + if(Nargs>4){ + Sep<- varargin[[5]] + } + if(nchar(Sep)==0){ + for (I in Looprange(1,nchar(Str))){ + Tmp<- substr(Str,I,I) + Putcell(Tb,I,Nr,Pos,Tmp) + } + } + else{ + Ltr<- "" + K<- 1 + for (I in Looprange(1,length(Str))){ + Tmp<- substr(Str,I,I) + if(Tmp==Sep){ + Putcell(Tb,K,Nr,Pos,Ltr) + K<- K+1 + Ltr<- "" + } + else{ + Ltr<- paste(Ltr,Tmp,sep="") + } + } + if(nchar(Ltr)>0){ + Putcell(Tb,K,Nr,Pos,Ltr) + } + } +} + +############################################ +# 11.05.28 + +Ratiocmyk<- function(Color) +{ + if(is.numeric(Color)){ + return(Color) + } + R<- + switch(Color, + greenyellow=c(0.15,0,0.69,0), + yellow=c(0,0,1,0), + goldenrod=c(0,0.1,0.84,0), + dandelion=c(0,0.29,0.84,0), + apricot=c(0,0.32,0.52,0), + peach=c(0,0.5,0.7,0), + melon=c(0,0.46,0.5,0), + yelloworange=c(0,0.42,1,0), + orange=c(0,0.61,0.87,0), + burntorange=c(0,0.51,1,0), + bittersweet=c(0,0.75,1,0.24), + redorange=c(0,0.77,0.87,0), + mahogany=c(0,0.85,0.87,0.35), + maroon=c(0,0.87,0.68,0.32), + brickred=c(0,0.89,0.94,0.28), + red=c(0,1,1,0), + orangered=c(0,1,0.5,0), + rubinered=c(0,1,0.13,0), + wildstrawberry=c(0,0.96,0.39,0), + salmon=c(0,0.53,0.38,0), + carnationpink=c(0,0.63,0,0), + magenta=c(0,1,0,0), + violetred=c(0,0.81,0,0), + rhodamine=c(0,0.82,0,0), + mulberry=c(0.34,0.9,0,0.02), + redviolet=c(0.07,0.9,0,0.34), + fuchsia=c(0.47,0.91,0,0.08), + lavender=c(0,0.48,0,0), + thistle=c(0.12,0.59,0,0), + orchid=c(0.32,0.64,0,0), + darkorchid=c(0.4,0.8,0.2,0), + purple=c(0.45,0.86,0,0), + plum=c(0.5,1,0,0), + violet=c(0.79,0.88,0,0), + royalpurple=c(0.75,0.9,0,0), + blueviolet=c(0.86,0.91,0,0.04), + periwinkle=c(0.57,0.55,0,0), + cadetblue=c(0.62,0.57,0.23,0), + cornflowerblue=c(0.65,0.13,0,0), + midnightblue=c(0.98,0.13,0,0.43), + navyblue=c(0.94,0.54,0,0), + royalblue=c(1,0.5,0,0), + blue=c(1,1,0,0), + cerulean=c(0.94,0.11,0,0), + cyan=c(1,0,0,0), + processblue=c(0.96,0,0,0), + skyblue=c(0.62,0,0.12,0), + turquoise=c(0.85,0,0.2,0), + tealblue=c(0.86,0,0.34,0.02), + aquamarine=c(0.82,0,0.3,0), + bluegreen=c(0.85,0,0.33,0), + emerald=c(1,0,0.5,0), + junglegreen=c(0.99,0,0.52,0), + seagreen=c(0.69,0,0.5,0), + green=c(1,0,1,0), + forestgreen=c(0.91,0,0.88,0.12), + pinegreen=c(0.92,0,0.59,0.25), + limegreen=c(0.5,0,1,0), + yellowgreen=c(0.44,0,0.74,0), + springgreen=c(0.26,0,0.76,0), + olivegreen=c(0.64,0,0.95,0.4), + rawsienna=c(0,0.72,1,0.45), + sepia=c(0,0.83,1,0.7), + brown=c(0,0.81,1,0.6), + tan=c(0.14,0.42,0.56,0), + gray=c(0,0,0,0.5), + black=c(0,0,0,1), + white=c(0,0,0,0) + ) + if(length(R)<4){ + print("No color") + return(c()) + } + return(R) +} + +############################################ +# 11.01.07 + +Readtextdata<- function(...) +{ + varargin<- list(...) + OutL<- list() + Nargs<- length(varargin) + Fname<- varargin[[1]] + Tmp<- readLines(Fname,n=1) + if(length(grep("\t",Tmp))>0){ + Sep<- "\t" + } + else if(length(grep(",",Tmp))>0){ + Sep<- "," + } + else{ + Sep<- " " + } + Hajime<- c(1,1) + Owari<- c(Inf,Inf) + C<- Inf + R<- Inf + Rna<- FALSE + Cna<- TRUE + Mat<- FALSE + Num<- TRUE + D<- -Inf + Flg<- 0 + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + if (Flg==0){ + Hajime<- Tmp + Flg<- 1 + } + else{ + Owari<- Tmp + } + } + else{ + eval(parse(text=Tmp)) + } + } + Tmp<- Hajime+c(R-1,C-1) + Owari<- c(min(Owari[1],Tmp[1]),min(Owari[2],Tmp[2])) + if(Cna){ + Df<- read.table(Fname,sep=Sep,header=TRUE,,stringsAsFactors=FALSE) + } + else{ + Df<- read.table(Fname,sep=Sep,header=FALSE,,stringsAsFactors=FALSE) + Nv<- c(1:ncol(Df)) + colnames(Df)<- Nv + } + if(Rna){ + rownames(Df)<-Df[,1] + Hajime<- Hajime+c(0,1) + } + if(Mat){ + M<- as.matrix(Df) + Tmp1<- min(Owari[1],nrow(M)) + Tmp2<- min(Owari[2],ncol(M)) + Out<- as.matrix(M[Hajime[1]:Tmp1,Hajime[2]:Tmp2]) + if(Num){ + Tmp1<- as.numeric(Out) + Out<- matrix(Tmp1,nrow=nrow(Out)) + } + } + else{ + Tmp1<- min(Owari[1],nrow(Df)) + Tmp2<- min(Owari[2],ncol(Df)) + Out<- Df[Hajime[1]:Tmp1,Hajime[2]:Tmp2] + } + if(D!=-Inf){ # 11.01.20 v2 + Tmp<- ncol(Out) # 11.01.07 + Tmp1<- rep(Inf,Tmp) + Out[Out[,1]<=D,]<- Tmp1 # 11.01.07 + } + return(Out) +} + +################################## + +Reflectdata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + if(Nargs==1){ + PtA<- c(0,0); PtB<- PtA + } + else{ + Pts<- varargin[[2]] + if(length(Pts)==2){ + PtA<- Pts; PtB<- PtA + } + else{ + PtA<- Pts[1:2]; PtB<- Pts[3:4] + } + } + ML=Flattenlist(ML) #180603 + OutL<- list() + for (N in Looprange(1,Length(ML))){ + GL<- Op(N,ML) + if(!is.matrix(GL)){GL=matrix(GL,ncol=2)} #180603 + Out<- c() + for (I in Looprange(1,Length(GL))){ + Tmp<- GL[I,] + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==Inf){ + X2<- X1 + Y2<- Y1 + } + else{ + if(Norm(PtA-PtB)<Eps){ + 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 + X2<- X2-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 + Y2<- Y2+2*U*(U*B-V*A)/(U^2+V^2) + } + } + Out<- Appendrow(Out,c(X2,Y2)) + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +########################################## + +Writetextdata<- function(...) +{ + varargin<- list(...) + OutL<- list() + Nargs<- length(varargin) + Data<- varargin[[1]] + Fname<- varargin[[2]] + Sep="," + for (I in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + eval(parse(text=Tmp)) + } + write.table(Data,Fname,sep=Sep,row.names=FALSE,na="") +} + +########################################## +# 2014.12.17 +# 2015.10.29 + +WriteOutData<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) +# if modulo(Nargs,2)==0 then +# Fname=Fnameout; +# Nst=1; +# else + Fname=varargin[[1]] + Nst=2; +# end; + for(N in seq(Nst,Nargs,by=2)){ + Gname=varargin[[N]] + Tmp=paste(Gname,"//",sep="") + if(N==Nst){ + cat(Tmp,"\n",sep="",file=Fname) + } + else{ + cat(Tmp,"\n",sep="",file=Fname,append=TRUE) + } + Gdata=varargin[[N+1]] + Gdata=Flattenlist(Gdata) + if(!is.list(Gdata)){Gdata=list(Gdata)} + for(K in Looprange(1,length(Gdata))){ + GL=Dividegraphics(Gdata[[K]]) +# for(J in seq(1,length(GL))){ + for(J in Looprange(1,length(GL))){ + cat("start//","\n",sep="",file=Fname,append=TRUE) + Str="" + Iend=Numptcrv(GL[[J]]) +# for(II in seq(1,Iend)){ + for(II in Looprange(1,Iend)){ + Pt=Ptcrv(II,GL[[J]]) + if(nchar(Str)>0){ + Str=paste(Str,",",sep="") + } + if(length(Pt)<3){ + Str=paste(Str,sprintf("[%5.5f,%5.5f]",Pt[1],Pt[2]),sep="") + } + else{ + Str=paste(Str,sprintf("[%5.5f,%5.5f,%5.5f]",Pt[1],Pt[2],Pt[3]),sep="") + } + if(nchar(Str)>80){ + cat("[",Str,"]//","\n",sep="",file=Fname,append=TRUE) + Str="" + } + } + if(nchar(Str)>0){ + cat("[",Str,"]//","\n",sep="",file=Fname,append=TRUE) + } + if((N==Nargs-1) & (K==length(Gdata)) & (J==length(GL))){ +# cat("end////","\n",sep="",file=Fname,append=TRUE) + cat("end//","\n",sep="",file=Fname,append=TRUE) + } + else{ + cat("end//","\n",sep="",file=Fname,append=TRUE) + } + } + } + } + cat("//","\n",sep="",file=Fname,append=TRUE) # 15.11.05 +} + +###### Old #################################### +# 2015.10.23 +ReadOutData<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Fname=varargin[[1]] + cmdall=readLines(Fname) + cmdall=gsub("//","",cmdall,fixed=TRUE) + varname=cmdall[1] + outdt=list() + varL=c() + ptL=list() + flg=0 + for(cmd in cmdall){ + if(nchar(cmd)>0){ + if((cmd=="start") | cmd=="end" | substring(cmd,1,1)=="["){ + if(cmd=="start"){ + pts=c() + } + if(cmd=="end"){ + ptL=c(ptL,list(pts)) + } + if(substring(cmd,1,1)=="["){ + tmp1=paste(",",substring(cmd,2,nchar(cmd)-1),sep="") + tmp1=strsplit(tmp1,"]",fixed=TRUE) + tmp1=tmp1[[1]] + tmp1=gsub(",[","c(",tmp1,fixed=TRUE) + for(st in tmp1){ + tmp=eval(parse(text=paste(st,")",sep=""))) + pts=rbind(pts,tmp) + } + row.names(pts)=1:nrow(pts) + } + } + else{ + varname=cmd + varL=c(varL,varname) + if(flg==0){ # 17.10.07from + flg=1 + }else{ + outdt=c(outdt,list(ptL)) + } # 17.10.07until + ptL=c() + } + } + } + outdt=c(outdt,list(ptL)) # 17.10.07 + names(outdt)=varL + for(var in varL){ + tmp=paste(var,"<<- outdt$",var,sep="") + eval(parse(text=tmp)) + } +# print(varL) + outdt +} + +#################################################### + +ReadOutData<- function(...){ #2017.10.23 + varargin<- list(...) + Nargs<- length(varargin) + Fname=varargin[[1]] + cmdall=readLines(Fname) + cmdall=gsub("//","",cmdall,fixed=TRUE) + varname=""#17.12.13 cmdall[1] + outdt=list() + varL=c() + ptL=list() + flg=0 + for(cmd in cmdall){ + if(nchar(cmd)>0){ + if((cmd=="start") | cmd=="end" | substring(cmd,1,1)=="["){ + if(cmd=="start"){ + tmp=paste(varname,"<<- c(",varname,",list(c()))",sep="") + eval(parse(text=tmp)) + Ctr=Ctr+1 + } + if(cmd=="end"){ + } + if(substring(cmd,1,1)=="["){ + tmp1=paste(",",substring(cmd,2,nchar(cmd)-1),sep="") + tmp1=strsplit(tmp1,"]",fixed=TRUE) + tmp1=tmp1[[1]] + tmp1=gsub(",[","c(",tmp1,fixed=TRUE) + for(st in tmp1){ + tmp=paste(varname,"[[",as.character(Ctr),"]]",sep="") + tmp=paste(tmp,"<<- rbind(",tmp,",",st,"))",sep="")# + eval(parse(text=tmp)) + } + } + } + else{ + # 17.12.13from + if(nchar(varname)>0){ + tmp=paste("if(length(",varname,")==1){",varname,"<<- ",varname,"[[1]]}",sep="") + eval(parse(text=tmp)) + } + # 17.12.13until + varname=cmd + tmp=paste(varname,"<<- list()",sep="") + eval(parse(text=tmp)) + Ctr=0 + if(flg==0){ # 17.10.07from + flg=1 + }else{ + } # 17.10.07until + } + } + } + # 17.12.13from + tmp=paste("if(length(",varname,")==1){",varname,"<<- ",varname,"[[1]]}",sep="") + eval(parse(text=tmp)) + # 17.12.13until +} + +#################################################### + +Rotatedata<- function(..., deg=FALSE) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + Theta<- varargin[[2]] + if(deg) Theta<- Theta*pi/180 # 10.12.07 + if(Nargs==2){ + Pt<- c(0,0) + } + else{ + Pt<- varargin[[3]] + } + ML=Flattenlist(ML) #180603 + Cx<- Pt[1]; Cy<- Pt[2] + OutL<- c() + for (N in Looprange(1,Length(ML))){ + GL<- Op(N,ML) + if(!is.matrix(GL)){GL=matrix(GL,ncol=2)} #180603 + Out<- c() + for (I in Looprange(1,Length(GL))){ + Tmp<- GL[I,] + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==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) + } + Out<- Appendrow(Out,c(X2,Y2)) + } + if(nrow(Out)==1){ + Out<- Out[1,] + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +############################################### + +Scaledata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + A<- varargin[[2]] + B<- varargin[[3]] + if(Nargs==3){ + Pt<- c(0,0) + } + else{ + Pt<- varargin[[4]] + } + ML=Flattenlist(ML) #180603 + OutL<- list() + for (N in Looprange(1,Length(ML))){ + GL<- Op(N,ML) + if(!is.matrix(GL)){GL=matrix(GL,ncol=2)} #180603 + Out<- c() + for (I in Looprange(1,Length(GL))){ + Tmp<- GL[I,] + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==Inf){ + X2<- X1 + Y2<-Y1 + } + else{ + X2<- Pt[1]+A*(X1-Pt[1]) + Y2<- Pt[2]+B*(Y1-Pt[2]) + } + Out<- Appendrow(Out,c(X2,Y2)) + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +################################ + +Setarrow<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + Str<- paste("Size=",YaSize,",","Angle=",YaAngle,",",sep="") + Str<- paste(Str,"Position=",YaThick,",","Style=",YaStyle,sep="") + return(Str) + } + Flg<- 0 + for (I in 1:Nargs){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + Flg<- Flg+1 + if(Flg==1) YaSize<<-Tmp + if(Flg==2){ + if(Tmp<5){ + YaAngle<<- 18*Tmp + } + else{ + YaAngle<<- Tmp + } + } + if(Flg==3) YaPosition<<- Tmp + if(Flg==4) YaThick<<- Tmp + } + if(mode(Tmp)=="character"){ + YaStyle<<- Tmp + } + } +} + +#################################### + +Setax<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ #180821(next 2 lines) + Str<- paste(ZIKU,",",XNAME,",",XPOS,",",sep="") + Str<- paste(Str,YNAME,",",YPOS,",",ONAME,",",OPOS,sep="") + return(Str) + } + ArgL<- c() + Tmp<- varargin[[1]] + if(is.numeric(Tmp)){ #180821 + Is<- varargin[[1]] + ArgL<- c() + for (I in Looprange(1,Is-1)){ + ArgL<- c(ArgL,"") + } + for (I in Looprange(2,Nargs)){ + ArgL<- c(ArgL,varargin[[I]]) + } + } + else{ #180821from + for (I in Looprange(1,Nargs)){ + ArgL<- c(ArgL,varargin[[I]]) + } + } + for (I in Looprange(length(ArgL)+1,7)){ + ArgL<- c(ArgL,"") + } #180821to + Xn<- ArgL[2]; Xp<- ArgL[3] + Yn<- ArgL[4]; Yp<- ArgL[5] + On<- ArgL[6]; Op<- ArgL[7] + ZIKU<<- ArgL[1] #180821 + if(nchar(Xn)>0){ + XNAME<<- paste("$",Xn,"$",sep="") + } + if(nchar(Xp)>0){ + XPOS<<- Xp + } + if(nchar(Yn)>0){ + YNAME<<- paste("$",Yn,"$",sep="") + } + if(nchar(Yp)>0){ + YPOS<<-Yp + } + if(nchar(On)>0){ + ONAME<<- On + } + if(nchar(Op)>0){ + OPOS<<- Op + } + Out<- ""; +} + +################################# +# 11.08.24 + +Setcolor<- function(...){ + varargin<- list(...) + Color<- 'black' + Kosa<- 1 + for(J in Looprange(1,length(varargin))){ + Tmp<- varargin[[J]] + if(is.character(Tmp)) Color<- Tmp + if(is.numeric(Tmp)){ + if(length(Tmp)==1){# 11.08.24 + Kosa<- Tmp + } + else{ + Color<- Tmp + } + }# 11.08.24 + } + Iro<- Ratiocmyk(Color) + if(length(Iro)==0) return(c()) + if(length(Iro)==4){ #180602from + Str<- "\\color[cmyk]{" + }else{ + Str<- "\\color[rgb]{" + } #180602to + for(J in 1:length(Iro)){ + Str<- paste(Str,as.character(Kosa*Iro[J]),sep="") + if(J<length(Iro)){ #180603 + Str<- paste(Str,",",sep="") + } + } + Str<- paste(Str,"}",sep="") + Texcom(Str) +} + +################################## + +Setmarklen<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + Tmp<- MARKLENNow/MARKLENInit + Tmp=round(Tmp*100)/100 + return(Tmp) + } + Size<- varargin[[1]] + MARKLENNow<<- MARKLENInit*Size + MARKLEN<<- MARKLENNow*1000/2.54/MilliIn +} + +############################### + +Setorigin<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + return(GENTEN) + } + Pt<- varargin[[1]] + GENTEN<<- Pt; +} + +################################ + +Setscaling<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + return(c(SCALEX,SCALEY,LOGX,LOGY)) + } + Tmp=varargin[[1]] #181020from + if((Nargs==1)&&(is.numeric(Tmp))){ + SCALEY<<- Tmp + return(invisible(c(SCALEX,SCALEY,LOGX,LOGY))) + } + nCtr=1 #181020to + for (I in 1:Nargs){ + Tmp<- varargin[[I]] + if(mode(Tmp)=="numeric"){ + if(nCtr==1)SCALEX<<- Tmp #181020(2llines) + if(nCtr==2)SCALEY<<- Tmp + nCtr=nCtr+1 + } + if(mode(Tmp)=="character"){ + if(Tmp=="l"){ + LOGX<<- 0 + LOGY<<- 1 + }else if(Tmp=="ll"){ + LOGX<<- 1 + LOGY<<- 1 + }else{ + LOGX<<- 0 + LOGY<<- 0 + } + } + } + Tmp<- c(SCALEX,SCALEY,LOGX,LOGY) +} + +######################################### + +Setpen<-function(Width) +{ + PenThick<<-round(PenThickInit*Width) + Str=paste("\\special{pn ", as.character(PenThick),"}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) +} + +############################################## + +Setpt<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0) + { + Tmp<- TenSize/TenSizeInit + Tmp<- round(Tmp*100)/100 + return(Tmp) + } + Size<- varargin[[1]] + TenSize<<- TenSizeInit*Size; +} + +############################################## + +Setunitlen<-function(...) +{ + varargin<-list(...) + if(length(varargin)==0){ + return(ULEN) + } + Ul=varargin[[1]] + Dx<-XMAX-XMIN + Dy<-YMAX-YMIN + Sym<-".0123456789 +-*/" + SL<-Sym + OL<-"+-*/" + if(nchar(Ul)>0){ + ULEN<<-Ul + } + Is<-1 + VL<-"" + Ucode<-ULEN + for (I in 1:nchar(Ucode)){ + C<-substring(Ucode,I,I) + if(length(grep(C,SL))>0){ + if(length(grep(C,OL))>0){ + Tmp<-substring(Ucode,Is,I-1) + Str<-paste(VL,Tmp,C,sep="") + VL<-Str + Is<-I+1 + } + } + else{ + Unit<-substring(Ucode,I,I+1) + Str<-substring(Ucode,Is,I-1) + VL<-paste(VL,Str,sep="") + break; + } + } + Valu<-eval(parse(text=VL)) + Str<-as.character(Valu) + ULEN<<-paste(Str,Unit,sep=""); + if(Unit=="cm") MilliIn<<-1000/2.54*Valu + if(Unit=="mm") MilliIn<<-1000/2.54*Valu/10 + if(Unit=="in") MilliIn<<-1000*Valu + if(Unit=="pt") MilliIn<<-1000/72.27*Valu + if(Unit=="pc") MilliIn<<-1000/6.022*Valu + if(Unit=="bp") MilliIn<<-1000/72*Valu + if(Unit=="dd2") MilliIn<<-1000/1238/1157/72.27*Valu + if(Unit=="cc") MilliIn<<-1000/1238/1157/72.27*12*Valu + if(Unit=="sp") MilliIn<<-1000/72.27/65536*Valu/10 + MARKLEN<<-MARKLENNow*1000/2.54/MilliIn + MEMORI<<-MEMORINow*1000/2.54/MilliIn #17.12.17 +} + +######################################### +# 10.11.20 + +Setwindow<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0){ + Out<-c(XMIN,XMAX,YMIN,YMAX) + return(Out) + } + if(Nargs==1){ + Dt<- varargin[[1]] + if(is.list(Dt) && !is.data.frame(Dt)){ + Tmp<- as.data.frame(Dt) + Dt<- t(Tmp) + } + Xm<- min(Dt[,1]) + XM<- max(Dt[,1]) + Ym<- min(Dt[,2]) + YM<- max(Dt[,2]) + Str<- "Setwindow(" + Str<- paste(Str,"c(",as.character(Xm),",",as.character(XM),"),c(",sep="") + Str<- paste(Str,as.character(Ym),",",as.character(YM),")",sep="") + Str<- paste(Str,")",sep="") + print(Str) + } + if(Nargs==2){ + RgX<-varargin[[1]] + RgY<-varargin[[2]] + XMIN<<-RgX[1]; XMAX<<-RgX[2] + YMIN<<-RgY[1]; YMAX<<-RgY[2] + } + if(Nargs==4){ + XMIN<<-varargin[[1]]; XMAX<<-varargin[[2]] + YMIN<<-varargin[[3]]; YMAX<<-varargin[[4]] + } + Out<- c(XMIN,XMAX,YMIN,YMAX); +} + +######################################### + +Shadeold<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + Iroflg=0 + Kosa=1 + if(Nargs>1){ + Iro=varargin[[Nargs]] + if(is.character(Iro)){ + Iroflg=1 + if(length(grep("{",Iro))>0){ + Str=paste("{\\color",Iro,sep="") + } + else{ + Str=paste("{\\color{",Iro,"}",sep="") + } + } + 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]{" + } + } + for(J in 1:length(Iro)){ + Str=paste(Str,as.character(Iro[J]),sep="") + if(J<length(Iro)){ + Str=paste(Str,",") + } + } + Str=paste(Str,"}") + } + } + if(Iroflg==1){ + Str=paste(Str,"%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + } + } + Tmp=varargin[[1]] + Data=Kyokai(Tmp) + Data=list(Data) ####180327 + for (I in Looprange(1, length(Data))){ + PL<- Op(I,Data) + Mojisu<- 0 + for (J in 1:Nrow(PL)){ + P<- Doscaling(Op(J,PL)) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<- 0 + } + } + Str1<- paste("\\special{sh ",as.character(Kosa),"}",sep="") + Str2<- paste("\\special{ip}%\n",sep="") + cat(Str1,file=Wfile,append=TRUE) + cat(Str2,file=Wfile,append=TRUE) + } + if(Iroflg==1){ + cat("}%\n",file=Wfile,append=TRUE) + } +} + +####### Shade new 17.09.24############ + +Shade<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + Iroflg<- 0 + Kosa<- 1 + if(Nargs>1){ + Iro<- varargin[[Nargs]] + if(mode(Iro)=="character"){ + Iroflg<- 1 + if(length(grep(Iro,"{"))>0) + Str<- paste("{\\color",Iro,sep="") + else + Str<- paste("{\\color{",Iro,"}",sep="") + } + else{ + if(length(Iro)==1) + Kosa<- Iro + else{ + Iroflg<- 1 + if(length(Iro)==4) + Str<- paste("{\\color[cmyk]{",sep="") + else + if(length(Iro)==3) + Str<- paste("{\\color[rgb]{",sep="") + for (J in Looprange(1,length(Iro))){ + Str<- paste(Str,as.character(Iro[J]),sep="") + if(J<length(Iro)) + Str<- paste(Str,",",sep="") + } + Str<- paste(Str,"}",sep="") + } + } + if(Iroflg==1){ + } + } + Tmp<- varargin[[1]] +# Data<- Kyoukai(Tmp) + Data= Joincrvs(Tmp) #180929from + Data=list(Data) #180929to + for (I in Looprange(1, Length(Data))){ #180621 + PL<- Op(I,Data) + PL=Appendrow(PL,Op(1,PL)) #180929 + Mojisu<- 0 + for (J in Looprange(1,Length(PL))){ + P<- Doscaling(Op(J,PL)) + X<- as.character(round(MilliIn*P[1])) + Y<- as.character(-round(MilliIn*P[2])) + Str<- paste("\\special{pa ",X," ",Y,"}",sep="") + cat(Str,file=Wfile,append=TRUE,sep="") + Mojisu<- Mojisu+nchar(Str) + if(Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE,sep="") + Mojisu<- 0 + } + } + Str1<- paste("\\special{sh ",as.character(Kosa),"}",sep="") + Str2<- paste("\\special{ip}%\n",sep="") + cat(Str1,file=Wfile,append=TRUE,sep="") + cat(Str2,file=Wfile,append=TRUE,sep="") + } + if(Iroflg==1){ + cat("}%\n",file=Wfile,append=TRUE,sep="") + } +} + +############################################## +# 11.01.07 + +Splinedata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-3) + PL<- varargin[[1]] + if(mode(PL)=="character"){ + Fname<- PL + PL<- Readtextdata(Fname) + } + else{ + PL<- as.matrix(PL) + if(Nrow(PL)==1){ + PL<- matrix(PL, nrow=length(PL)/2) + PL<- t(PL) + } + } + if(ncol(PL)==3){ + Flg3<- 1 + } + else{ + Flg3<- 0 + } + PLL<- Dividegraphics(PL) + N<- 50 + C<- c() + for (I in Looprange(2,Nargs)){ + Tmp<- varargin[[I]] + if(mode(Tmp)!="character") next + if(length(grep("=",Tmp,fixed=TRUE))>0){ + eval(parse(text=Tmp)) + } + else{ + Tmp1<- substr(Tmp,1,1) + if(toupper(Tmp1)=="C"){ + C<- 1:length(PLL) + } + } + } + Cflg<- rep(0,length(PLL)) + for(J in Looprange(1,length(C))){ + K<- C[J] + Cflg[K]<- 1 + } + if(length(N)>1){ + Nj<- as.numeric(N) + } + else{ + Tmp<- lapply(PLL,nrow) + Tmp1<- as.numeric(Tmp) + MxP<- max(Tmp1) + Nj<- c() + for (J in 1:length(PLL)){ + Tmp<- nrow(PLL[[J]]) + Tmp1<- round(N/MxP*(Tmp-1)) + Nj<- c(Nj,Tmp1) + } + } + OutL<- list() + for(J in 1:length(PLL)){ + PL<- PLL[[J]] + if(Cflg[J]==1){ + if(Norm(PL[1,]-PL[Nrow(PL),])>Eps){ + PL<-Appendrow(PL,PL[1,]) + Nj[J]=round(N/MxP*nrow(PL)) + } + else{ + PL[Nrow(PL),]<- PL[1,] + } + } + Tn<- 1:Nrow(PL) + Xn<- PL[,1] + Yn<- PL[,2] + if(Flg3==1) Zn<- PL[,3] + if(Cflg[J]==0){ + Dxn<- spline(Tn,Xn,n=Nj[J]) + Dyn<- spline(Tn,Yn,n=Nj[J]) + if(Flg3==1) Dzn<- spline(Tn,Zn,n=Nj[J]) + } + else{ + Dxn<- spline(Tn,Xn,method="periodic") + Dyn<- spline(Tn,Yn,method="periodic") + if(Flg3==1) Dzn<- spline(Tn,Zn,method="periodic") + } + Tmp1<- Dxn$y + Tmp2<- Dyn$y + Tmp3<-c() + if(Flg3==1) Tmp3<- Dzn$y + Out<- matrix(c(Tmp1,Tmp2,Tmp3),nrow=length(Tmp1)) + OutL<- c(OutL,list(Out)) + } + return(OutL) +} + +############################################ +# 2013.05.03 Domain is optional + +Tabledata<- function(...){ + varargin<- list(...) + Eps<- 0.001 + Tmp<- varargin[[1]] # 130503 from + if(is.numeric(Tmp)){ + Domain<- varargin[[1]] + VL<- varargin[[2]] + HL<- varargin[[3]] + } + else{ + Domain<- c(-1,-1) + VL<- varargin[[1]] + HL<- varargin[[2]] + } # 130503 until + Hsize<- Domain[1] + SvL<- list(0) + S<- 0 + for (I in Looprange(1,length(VL))){ + Tmp<- VL[[I]] + S<- S+Tmp[1] + Tmp[1]<- S + SvL<- c(SvL,list(Tmp)) + } + if(Hsize>S){ + SvL<- c(SvL,list(Hsize)) + } + Hsize<- Op(1,SvL[[length(SvL)]]) + Vsize<- Domain[2] + ShL<- list(0) + S<- 0 + for (I in Looprange(1,length(HL))){ + Tmp<- HL[[I]] + S<- S+Tmp[1] + Tmp[1]<- S + ShL<- c(ShL,list(Tmp)) + } + if(Vsize>S){ + ShL<- c(ShL,list(Vsize)) + } + Vsize<- Op(1,ShL[[length(ShL)]]) + Marw<- 0; Mare<- 0; Mars<- 0; Marn<- 0 + if(length(Domain)>2){ + Marw<- Domain[3] + Mare<- Domain[4] + } + if(length(Domain)>4){ + Marn<- Domain[5] + Mars<- Domain[6] + } + Setwindow(c(-Marw,Hsize+Mare),c(-Mars,Vsize+Marn)) + Tmp<- Framedata(c(Eps,Hsize-Eps),c(Eps,Vsize-Eps)) + Gdata<- list(Tmp) + Tmp<- -Marw + Hdata<- list(Listplot(c(c(Tmp,-Mars),c(Tmp,Vsize+Marn)))) + for (I in Looprange(1,length(SvL))){ + Data<- SvL[[I]] + X<- Data[1] + if(length(Data)==1){ + Y1<- 0 + Y2<- Vsize + G<- Listplot(c(X,Y1),c(X,Y2)) + } + else{ + G<- c() + for (J in seq(2,length(Data),by=2)){ + Y1<- Vsize-Op(1,ShL[[Data[J]]]) + Y2<- Vsize-Op(1,ShL[[Data[J+1]]]) + Tmp<- Listplot(c(c(X,Y1),c(X,Y2))) + Tmp1<- Appendrow(G,c(Inf,Inf)) + G<- Appendrow(Tmp1,Tmp) + } + G<- G[2:nrow(G),] + } + Hdata<- c(Hdata,list(G)) + } + Tmp<- Hsize+Mare + Tmp1<- Listplot(c(c(Tmp,-Mars),c(Tmp,Vsize+Marn))) + Hdata<- c(Hdata,list(Tmp1)) + Tmp<- Vsize+Marn + Vdata<- list(Listplot(c(c(-Marw,Tmp),c(Hsize+Mare,Tmp)))) + for (I in Looprange(1,length(ShL))){ + Data<- ShL[[I]] + Y<- Vsize-Data[1] + if(length(Data)==1){ + X1<- 0 + X2<- Hsize + G<- Listplot(c(X1,Y),c(X2,Y)) + } + else{ + G<- c() + for (J in seq(2,length(Data),by=2)){ + X1<- Op(1,SvL[[Data[J]]]) + X2<- Op(1,SvL[[Data[J+1]]]) + Tmp<- Listplot(c(X1,Y),c(X2,Y)) + G<- Appendrow(G,c(Inf,Inf)) + G<- Appendrow(G,Tmp) + } + G<-G[2:nrow(G),] + } + Vdata<- c(Vdata,list(G)) + } +# Tmp<- Listplot(c(c(0,0),c(Hsize,0))) # 2011.03.02 +# Vdata<- Mixjoin(Vdata,list(Tmp)) + Tmp<- Listplot(c(c(-Marw,-Mars),c(Hsize+Mare,-Mars))) + Vdata<- Mixjoin(Vdata,list(Tmp)) + Tmp1<- Hdata[Looprange(3,length(Hdata)-2)] + Tmp2<- Vdata[Looprange(3,length(Vdata)-2)] + Gdata<- Mixjoin(Gdata,Tmp1,Tmp2) + Hind<- Looprange(2,1+length(Tmp1)) + Vind<- Looprange(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(c(P1,P2)),Listplot(c(Q1,Q2))) + P1<- Ptnw(G); P2<- Ptne(G) + Q1<- Ptsw(G); Q2<- Ptse(G) + Tmp2<- list(Listplot(c(P1,P2)),Listplot(c(Q1,Q2))) + Tmp3<- Framedata() + Out<- list(Gdata,Hind,Vind,Tmp1,Tmp2,Tmp3) + return(Out) +} + +################################ + +Texcom<- function(Meirei) +{ + if(Meirei=="\\thinlines"){ + Setpen(1); + return(); + } + if(Meirei=="\\thicklines"){ + Setpen(2); + return() + } + if(Meirei=="\\Thicklines"){ + Setpen(3); + return() + } + if(length(Meirei)==0){ # 09.12.07 + Tmp<- c() + } + else{ + Tmp<- grep("newline",Meirei) + } + if(length(Tmp)>0){ + cat("\n",file=Wfile,append=TRUE); + } + else{ + Tmp<- paste(Meirei,"%\n",sep="") + Tmp<- gsub("//","\\",Tmp,fixed=TRUE) # 11.03.02 + cat(Tmp,file=Wfile,append=TRUE); + } +} + +############################################### + +Texctr<- function(N){ + if(is.numeric(N)){ + Alpha<- "abcdefghijklmnopqrstuvwxyz" + Out<- paste("ketpicctr",substr(Alpha,N,N),sep="") + } + else{ + if(grep("\\",N,fixed=TRUE)>0){ + Out<- substr(N,2,nchar(N)) + } + else{ + Out<- N + } + } + return(Out) +} + +############################################### + +Texelse<- function (){ + Texcom(""); + Texcom("\\else") +} + +############################################### + +Texend<- function() +{ + Texcom("%\n}") +} + +############################################### + +Texendfor<- function(I){ + Last<- TEXFORLAST[[TEXFORLEVEL]] + Texcom("") + Tmp<- paste("\\ifnum",Texthectr(I),"<",Last,sep="") + Texcom(Tmp) + Texcom("\\repeat") + Texcom("}") + TEXFORLEVEL<<- TEXFORLEVEL-1 + TEXFORLAST<<- TEXFORLAST[1:(length(TEXFORLAST)-1)] +} + +############################################### + +Texendif<- function(){ + Texcom("") + Texcom("\\fi") + Texcom("}") +} + +############################################### + +Texfor<- function(I,First,Last){ + TEXFORLEVEL<<- TEXFORLEVEL+1; + Texsetctr(I,"0") + Texsetctr(I,paste(as.character(First),"-1",sep="")) + Texcom("") + Texcom("{") + Texcom("\\loop") + Texsetctr(I,"+1") + TEXFORLAST<<- c(TEXFORLAST,as.character(Last)) +} + +############################################### + +Texforinit<- function(){ + TEXFORLEVEL<<- 0 + TEXFORLAST<<- list() +} + +############################################### + +Texif<- function(...){ + varargin<- list(...) + Condstr<- varargin[[1]] + Tp<- 0 + if(length(varargin)>1){ + Tp<- varargin[[2]] + } + Texcom("") + Texcom("{") + if(Tp==0){ + Texcom("\\ifnum") + } + else{ + Texcom("\\ifdim ") + } + Texcom(paste(Condstr," ",sep="")) +} + +###################################### + +Texletter<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + for (I in seq(1,Nargs,by=3)){ + P<- varargin[[I]] + X<- P[1] + if(mode(X)=="numeric"){ + X<- as.character(X) + } + Y<- P[2] + if(mode(Y)=="numeric"){ + Y<- as.character(Y) + } + Houkou<- varargin[[I+1]] + Mojiretu<- varargin[[I+2]] + Hset<- Houkou + Vhoko<- "c" + if(length(grep("n",Hset))>0){ + Vhoko<- "n" + } + if(length(grep("s",Hset))>0){ + Vhoko<- "s" + } + Hhoko<- "c"; + if(length(grep("e",Hset))>0){ + Hhoko<- "e" + } + if(length(grep("w",Hset))>0){ + Hhoko<- "w" + } + Hoko<- paste(Vhoko,Hhoko,sep="") + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + Tmp<- paste("\\put(",X,",",Y,"){\\hspace*{\\Width}",sep="") + Str<- paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + } +} + +################################################## + +Texnewcmd<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Str<- varargin[[1]] + S<- paste("\\newcommand{",Str,"}",sep="") + if(Nargs>1){ + Tmp<- as.character(varargin[[2]]) + S<- paste(S,"[",Tmp,"]",sep="") + } + if(Nargs>2){ + Tmp<- varargin[[3]] + if(mode(Tmp)=="numeric"){ + Tmp<- as.character(Tmp) + } + S<- paste(S,"[",Tmp,"]",sep="") + } + S<- paste(S,"{",sep="") + Texcom(S) +} + +############################################### + +Texnewctr<- function(N) +{ + if(mode(N)=="character"){ + Str<- paste("\\newcounter{",N,"}",sep="") + Texcom(Str) + } + else{ + for (I in N){ + Str<- paste("\\newcounter{",Texctr(I),"}",sep="") + Texcom(Str) + } + } +} +############################################### + +Texrenewcmd<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Str<- varargin[[1]] + S<- paste("\\renewcommand{",Str,"}",sep="") + if(Nargs>1){ + Tmp<- as.character(varargin[[2]]) + S<- paste(S,"[",Tmp,"]",sep="") + } + if(Nargs>2){ + Tmp<- varargin[[3]] + if(mode(Tmp)=="numeric"){ + Tmp<- as.character(Tmp) + } + S<- paste(S,"[",Tmp,"]",sep="") + } + S<- paste(S,"{",sep="") + Texcom(S) +} + +############################################### + +Texsetctr<- function(Nctr,Opstr) +{ + Ctr<- Texctr(Nctr) + Opstr<- paste(Opstr,"%",sep="") + OperL<- "+-*/%" + Oper<- "" + Va<- "" + Evflg<- 0 + Paflg<- 0 + for (I in Looprange(1,nchar(Opstr))){ + Tmp<- substring(Opstr,I,I) + if(Tmp=="("){ + Paflg<- 1 + if(nchar(Va)>0){ + Evflg<- 1 + Va<- paste(Va,Tmp,sep="") + } + next + } + if(Tmp==")"){ + Paflg<- 0 + if(Evflg>0){ + Va<- paste(Va,Tmp,sep="") + } + next + } + if(Paflg>0){ + Va<- paste(Va,Tmp,sep="") + next + } + if(length(grep(Tmp,OperL,fixed=TRUE))==0){ #180510 + Va<- paste(Va,Tmp,sep="") + } + else{ + if(Evflg>0){ + Tmp1<- eval(parse(text=Va)) + Va<- paste("\\value{",Tmp1,"}",sep="") + Evflg<- 0 + } + if(Oper==""){ + if(nchar(Va)>0){ + Str<- paste("\\setcounter{",Ctr,"}{",Va,"}",sep="") + Texcom(Str) + } + Oper<- Tmp + Va<-"" + } + else if(Oper=="+"){ + Str<- paste("\\addtocounter{",Ctr,"}{",Va,"}",sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + else if(Oper=="-"){ + Str<- paste("\\addtocounter{",Ctr,"}{-",Va,"}",sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + else if(Oper=="*"){ + Str<- paste("\\multiply\\value{",Ctr,"} by ",Va,sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + else if(Oper=="/"){ + Str<- paste("\\divide\\value{",Ctr,"} by ",Va,sep="") + Texcom(Str) + Oper<- Tmp + Va<-"" + } + } + } +} + +############################################### + +Texthectr<- function(N) +{ + Out<- paste("\\the",Texctr(N),sep="") + return(Out) +} + +############################################### + +Texvalctr<- function(N){ + Out<- paste("\\value{",Texctr(N),"}",sep="") + return(Out) +} + +############################################### + +Texvctr<- function(N) +{ + Out<- paste("\\value{",Texctr(N),"}",sep="") + return(Out) +} + +############################################### + +Tonumeric <- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Data<- varargin[[1]] + Sp<- c(1,1) + Ep<- c(Inf,Inf) + if(Nargs>1){ + Sp<- varargin[[2]] + } + if(Nargs>2){ + Ep<- varargin[[3]] + } + Nrs<- Sp[1] + Nre<- min(nrow(Data),Ep[1]) + Ncs<- Sp[2] + Nce<- min(ncol(Data),Ep[2]) + Tmp1<- Data[Nrs:Nre, Ncs:Nce] + Tmp2 <- as.numeric(Tmp1) + Out <- matrix(Tmp2,nrow=nrow(Tmp1)) + Sp<- c() + for (I in 1:nrow(Out)){ + for (J in 1:ncol(Out)){ + Tmp<- Out[I,J] + if(!is.na(Tmp)){ + Sp<- c(I,J) + break; + } + } + if(length(Sp)>0) break + } + if(length(Sp)==0){ + return("Numeric data not found") + } + Ep<- c(nrow(Out),ncol(Out)) + for (I in Sp[1]:nrow(Out)){ + Tmp<- Out[I,Sp[2]] + if(is.na(Tmp)){ + Ep[1]<- I-1 + break + } + } + for (J in Sp[2]:ncol(Out)){ + Tmp<- Out[Sp[1],J] + if(is.na(Tmp)){ + Ep[2]<- J-1 + break + } + } + Out<- Out[Sp[1]:Ep[1], Sp[2]:Ep[2]] + return(Out) +} + +################################################## + +Translatedata<- function(...) +{ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10^(-8) + ML<- varargin[[1]] + if(Mixtype(ML)==1){ + ML<- list(ML) + } + Tmp=varargin[[2]] + if(mode(Tmp)=="numeric" && length(Tmp)>1){ + A<- Tmp[1]; B<- Tmp[2] + } + else{ + A<- Tmp + if(Nargs>=3){ + B<- varargin[[3]] + } + else{ + B<- 0 + } + } + ML=Flattenlist(ML) #180603 + OutL<- list() + for (N in Looprange(1,Length(ML))){ + GL<- Op(N,ML) + if(!is.matrix(GL)){GL=matrix(GL,ncol=2)} #180603 + Out<- c() + for (I in Looprange(1,Length(GL))){ + Tmp<- GL[I,] #180603 + X1<- Tmp[1] + Y1<- Tmp[2] + if(X1==Inf){ + X2<- X1 + Y2<-Y1 + } + else{ + X2<- X1+A + Y2<- Y1+B + } + Out<- Appendrow(Out,c(X2,Y2)) + } + OutL<- Mixjoin(OutL,list(Out)) + } + if(length(OutL)==1){ + OutL<- Op(1,OutL) + } + return(OutL) +} + +####################################### + +Unscaling<- function(G) +{ + GLg<- G + if(class(GLg)=="numeric"){ + GLg<-c(G[1]/SCALEX, G[2]/SCALEY) + Tmp<-GLg + if(LOGX==1) Tmp[1]<- 10^(GLg[1]) + if(LOGY==1) Tmp[2]<- 10^(GLg[2]) + return(Tmp) + } + else{ + Tmp1<-matrix(c(1/SCALEX,0,0,1/SCALEY),nrow=2) + GLg<-G %*% Tmp1 + Tmp<-GLg + if(LOGX==1) Tmp[,1]<- 10^(G[,1]) + if(LOGY==1) Tmp[,2]<- 10^(G[,2]) + return(Tmp) + } +} + +############################################# + +Vtickmark<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in 1:floor((YMAX-GENTEN[2])/Dm)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((YMIN-GENTEN[2])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt[1],Dt[2]) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(GENTEN[1],Dt) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X+MARKLEN,Y)) + Tmp2<- Unscaling(c(X-MARKLEN,Y)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X-MARKLEN,Y)) + Expr(Tmp,"w",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("w",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X-MARKLEN,Y)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X+MARKLEN,Y)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +############################################ + +Windisp<-function(...){ + varargin<-list(...) + Nargs<-length(varargin) + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + plot(c(Xmn,Xmx),c(Ymn,Ymx),type="n",asp=1,axes=FALSE,xlab="",ylab="") + Tmp<- Doscaling(Listplot(c(0,YMIN),c(0,YMAX))) + axis(2,at=as.numeric(Tmp[,2]), labels=round(c(YMIN,YMAX),2)) + Tmp<- Doscaling(Listplot(c(XMIN,0),c(XMAX,0))) + axis(1,at=as.numeric(Tmp[,1]), labels=round(c(XMIN,XMAX),2)) + Tmp1<- c(XMIN,GENTEN[2]) + Tmp2<- c(XMAX,GENTEN[2]) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp1<- c(GENTEN[1],YMAX) + Tmp2<- c(GENTEN[1],YMIN) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp<-Doscaling(Framedata()) + lines(Tmp[,1],Tmp[,2]) + for (I in Looprange(1,Nargs)){ + Pdata<-varargin[[I]] + if(mode(Pdata)=="numeric"){ + Pdata<-list(Pdata) + } + while(Mixtype(Pdata)==3){ # 10.02.23 + Tmp1<- list() + for(II in Looprange(1,length(Pdata))){ + Tmp1<- Mixjoin(Tmp1,Pdata[[II]]) + } + Pdata<- Tmp1 + } # 10.02.23 + for (II in Looprange(1,length(Pdata))){ + Tmp<-Pdata[[II]] + P<-MakeCurves(Tmp,0) + Ndm<-Dataindex(P) + for (J in Looprange(1,Nrow(Ndm))){ + Q<-P[Ndm[J,1]:Ndm[J,2],] + if(Nrow(Q)==1){ + Tmp<-seq(1,Ncol(Q),by=2) + for (K in Tmp){ + Pt<-Q[K:(K+1)] + points(Pt[1],Pt[2]) + } + } + else{ + lines(Q[,1],Q[,2]) + } + } + } + } +} + +############################################ + +WindispT<-function(..., color="black",width=1,new=FALSE,htick=c(),vtick=c()){ # 10.12.04 + par(new=new) + varargin<-list(...) + Nargs<-length(varargin) + if(!new) # 10.12.04 + { + Tmp<- Doscaling(c(XMIN,YMIN)) + Xmn<- Tmp[1]; Ymn<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + Xmx<- Tmp[1]; Ymx<- Tmp[2] + plot(c(Xmn,Xmx),c(Ymn,Ymx),type="n",asp=1,axes=FALSE,xlab="",ylab="") + Tick<- sort(c(YMIN,YMAX,vtick)) #### 10.12.04 from here + Tmp1<- matrix(c(rep(0,length(Tick)),Tick),ncol=2) + Tmp<- Doscaling(Tmp1) + axis(2,at=as.numeric(Tmp[,2]), labels=round(Tick,2)) + Tick<- sort(c(XMIN,XMAX,htick)) + Tmp1<- matrix(c(Tick,rep(0,length(Tick))),ncol=2) + Tmp<- Doscaling(Tmp1) + axis(1,at=as.numeric(Tmp[,1]), labels=round(Tick,2)) #### 10.12.04 to here + Tmp1<- c(XMIN,GENTEN[2]) + Tmp2<- c(XMAX,GENTEN[2]) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp1<- c(GENTEN[1],YMAX) + Tmp2<- c(GENTEN[1],YMIN) + Tmp3<- Listplot(Tmp1,Tmp2) + Tmp<- MakeCurves(Tmp3,0) + if(Datalength(Tmp)>0){ + lines(Tmp[,1],Tmp[,2],col="green") + } + Tmp<-Doscaling(Framedata()) + lines(Tmp[,1],Tmp[,2]) + } + for (I in Looprange(1,Nargs)){ + Pdata<-Flattenlist(varargin[[I]]) # 101129 from here + Cmd<- list() + for (II in Looprange(1,length(Pdata))){ + Tmp<-Pdata[[II]] + if(length(Tmp)==1){ + Cmd<- c(Cmd,list(Tmp)) + next + } + + P<-MakeCurves(Tmp,0) + + if(length(Cmd)>0){ + if(length(Cmd)>=3){ + polygon(P,col=Cmd[[1]],border=Cmd[[2]],density=Cmd[[3]]) + } + else{ + polygon(P,col=Cmd[[1]],border=Cmd[[2]]) + } + next + } # 101129 to here + Ndm<-Dataindex(P) + for (J in Looprange(1,Nrow(Ndm))){ + Q<-P[Ndm[J,1]:Ndm[J,2],] + if(Nrow(Q)==1){ + Tmp<-seq(1,Ncol(Q),by=2) + for (K in Tmp){ + Pt<-Q[K:(K+1)] + points(Pt[1],Pt[2],col=color)#taka101111 + } + } + else{ + lines(Q[,1],Q[,2],col=color,lwd=width)#taka101111 + } + } + } + } + par(new=FALSE) +} + +###################################### + +# 3D + +################################# + +# 10.08.16 +CameracoordCurve<- function(Curve){ + Out<- c() + for(J in Looprange(1,Nrow(Curve))){ + P<- Ptcrv(J,Curve) #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<- rbind(Out,c(Yz,Zz,Xz)) + } + rownames(Out)<- 1:Nrow(Out) + return(Out) +} + +######################################### + +#100815 +CameraCurve<- function(Curve){ + Eps<- 10^(-6) + for (I in Looprange(1,Nrow(Curve))){ + P<- Curve[I,] + x<- P[1]; y<- P[2]; z<- P[3] + if(x!=Inf){ + Tmp<- Perspt(P) + if(I==1){ + AnsL<- rbind(c(),Tmp) + }else{ + Tmp1<- AnsL[Nrow(AnsL),] + if(Tmp1[1]==Inf || Norm(Tmp-Tmp1)>Eps){ + AnsL<- rbind(AnsL,Tmp) + } + } + }else{ + AnsL<- rbind(AnsL,c(Inf,Inf)) + } + } + rownames(AnsL)<- 1:Nrow(AnsL) + return(AnsL) +} + +###################################### + +Cancoordpara<- function(P){ # 18.02.15 + 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<- c(X,Y,Z) + return(Out) +} + +###################################### + +Cancoordpers<- function(P){ + 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<- c(X,Y,Z) + return(Out) +} + +####################################### + +Embed<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } + else if(Mixtype(Pd3)==3){ + Tmp<- list(); + for(I in Looprange(1,length(Pd3))){ + Tmp<- c(Tmp,Pd3[[I]]) + } + Pd3<- Tmp + } + Tmpf=varargin[[2]] + if(mode(Tmpf)=="character"){ + Tmp<- varargin[[3]] + Tmp1<- gsub("c(","(",Tmp,fixed=TRUE) + Vstr<- gsub(")",")",Tmp1,fixed=TRUE) + Str<- paste("Tmpfn<- function",Vstr,"{",Tmpf,"}",sep="") + eval(parse(text=Str)) + } + else{ + Tmpfn<- Tmpf + } + Out<- list() + for(I in Looprange(1,length(Pd3))){ + PD<- Pd3[[I]] + Ans<- c() + for(J in Looprange(1,Nrow(PD))){ + P<- PD[J,] + Tmp<- Tmpfn(P[1],P[2]) + Ans<- rbind(Ans,Tmp) + } + Out<- c(Out, list(Ans)) + } + if(length(Out)==1){ + Out<- Out[[1]] + } + return(Out) +} + +####################### +# 10.08.17 +# 14.03.30 +Facesdata<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + FL<- varargin[[1]] + PT<- varargin[[length(varargin)]] + Tmp<-grep("para",PT,fixed=TRUE) + if(length(Tmp)>0){ + Ptype<- 1 + }else{ + Ptype<- -1 + } + if(Nargs==2){ + CLadd<- list() + }else{ + CLadd<- varargin[[2]] + } + NohiddenL<- list() + HiddenL<- list() + Eps<- 10^(-4) + if(length(CLadd)>0){ + if(mode(CLadd)=="numeric"){ + C<- list() + if(Nrow(CLadd)>1){ + for (I in Looprange(1,Nrow(CLadd))){ + C<- c(C,list(CLadd[I,])) + } + }else{ + I<- 1 + while (I<=Ncol(CLadd)){ + C<- c(C,list(CLadd[1,I:(I+2)])) + I<- I+3 + } + } + CrvL<- list(C) + }else if(mode(CLadd[[1]])=="numeric"){ + CrvL<- list() + for (J in Looprange(1,length(CL))){ + Ctmp<- CLadd[[J]] + C<- list() + if(Nrow(Ctmp)>1){ + for (I in Looprange(1,Nrow(Ctmp))){ + C<- c(C,list(Ctmp[I,])) + } + }else{ + I<- 1 + while(I<=Ncol(Ctmp)){ + C<- c(C,list(Ctmp[1,I:(I+2)])) + I<- I+3 + } + } + CrvL<- c(CrvL,list(C)) + } + }else{ + CrvL<- CLadd + } + }else{ + CrvL<- list() + } + Out<- MakeveLfaceL(FL) + VELNO<<- Out[[1]] + VELHI<<- list() + for (I in Looprange(1,length(CrvL))){ + Tmp<- CrvL[[I]] + for (J in Looprange(1,length(Tmp)-1)){ + Edge<- list(Tmp[J],Tmp[J+1]) + Ntmp<- length(VELNO) + VELNO(Ntmp+1)<<- list(Edge,0,Ntmp+1) + } + } + FaceL<- Out[[2]] + Tmp<- grep("raw",PT,fixed=TRUE) + if(length(Tmp)==0){ + for (Nf in Looprange(1,length(FaceL))){ + Face<- FaceL[[Nf]] + Menkakusi2(Face,Nf,Ptype) + } + } + for (I in Looprange(1,length(VELNO))){ + Edge<- Op(1,VELNO[[I]]) + if(Norm(Edge[[1]]-Edge[[2]])>Eps){ + NohiddenL<- c(NohiddenL,list(Spaceline(Edge))) + } + } + EdgeL<- list() # from 13.03.30 + for(K in Looprange(1,length(VELHI))){ + Edge<- Op(1,VELHI[[K]]) + P<- Edge[[1]]; Q<- Edge[[2]] + if(Norm(P-Q)>Eps){ + EdgeL<- c(EdgeL,list(Edge)) + } + } + for(K in Looprange(1,length(EdgeL))){ + Edge<- EdgeL[[K]] + P<- Edge[[1]]; Q<- Edge[[2]] + Cflg<- 0 + for(J in Looprange(K+1,length(EdgeL))){ + Ej<- EdgeL[[J]] + Pj<- Ej[[1]]; Qj<- Ej[[2]] + if(Norm(Crossprod(Q-P,Qj-Pj))>Eps){ + next + } + if(Norm(Q-Pj)<Eps){ + EdgeL[[J]]<- list(P,Qj) + Cflg<- 1 + break + } + if(Norm(P-Qj)<Eps){ + EdgeL[[J]]=list(Q,Pj) + Cflg<- 1 + break + } + } + if(Cflg==0){ + HiddenL<- c(HiddenL,list(Spaceline(Edge))) + } + } # until 14.03.30 + PHHIDDENDATA<<- HiddenL + return(NohiddenL) +} + +############################## +# 2014.03.31 + +PhHiddenData<- function(){ + PHHIDDENDATA +} + +########## Old Fullform ( Check the case of Polygon )#################### + +Fullformfunc<- function(FdL){# Out=Fullformfunc(FdL) + Out<- list(Op(1,FdL)) + N<- Mixlength(FdL) + for (Jrg in Looprange(1,N)){ + Tmp<- Stripblanks(Op(Jrg,FdL)) + Tmp1<- grep("=c(",Tmp,fixed=TRUE) + if(length(Tmp1)>0){ + break + } + } + Urg<- Stripblanks(Op(Jrg,FdL)) + StrV<- strsplit(Urg,"=",fixed=TRUE)[[1]] + Uname<- StrV[1] + Vrg<- Stripblanks(Op(Jrg+1,FdL)) + StrV<- strsplit(Vrg,"=",fixed=TRUE)[[1]] + Vname<- StrV[1] + if(Jrg==2){ + Tmp<- Stripblanks(Op(1,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Zf<- StrV[2] + Tmp<- list(Uname,Vname,Zf,Urg,Vrg) + Out<- c(Out,Tmp) + }else if(Jrg==4){ + Tmp<- Stripblanks(Op(1,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Zf<- StrV[2] + Tmp<- Stripblanks(Op(2,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Xname<- StrV[1] + Xf<- StrV[2] + Tmp<- Stripblanks(Op(3,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Yname<- StrV[1] + Yf<- StrV[2] + Tmp<- gsub(Xname,paste("(",Xf,")",sep=""),Zf,fixed=TRUE) + Zf<- gsub(Yname,paste("(",Yf,")",sep=""),Tmp,fixed=TRUE) + Tmp<- list(Xf,Yf,Zf,Urg,Vrg) + Out<- c(Out,Tmp) + }else{ + Tmp<- Stripblanks(Op(2,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Xf<- StrV[2] + Tmp<- Stripblanks(Op(3,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Yf<- StrV[2] + Tmp<- Stripblanks(Op(4,FdL)) + StrV<- strsplit(Tmp,"=",fixed=TRUE)[[1]] + Zf<- StrV[2] + Tmp<- list(Xf,Yf,Zf,Urg,Vrg) + Out<- c(Out,Tmp) + } + DrwS<- "enws" + BdyL<- c() + for (I in Looprange(Jrg+2,Mixlength(FdL))){ + Tmp<- Op(I,FdL) + if(mode(Tmp)=="character"){ + if(length(Tmp)==0){ + Tmp<- " " + } + DrwS<- Tmp + } + if(mode(Tmp)=="numeric" && Ncol(Tmp)>1){ + BdyL<- Tmp + } + } + Tmp<- list(DrwS,BdyL) + Out<- c(Out,Tmp) + return(Out) +} + +#################################### + +Initangle<- function (){ + PHI<<- 30*pi/180 + THETA<<- 60*pi/180 +} + +########################## + +Invparapt<- function(...){ + varargin<- list(...) + Eps<- 10^(-4) + Fk<- varargin[[length(varargin)]] + NFk<- Numptcrv(Fk) + Tmp<- varargin[[1]] + if(mode(Tmp)=="numeric" && length(Tmp)==1){ # debug + 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){ + print("Not on the line") + return(c()) + }else{ + Ph<- Dotprod(V1,V2)/Norm(V2)^2+1 + } + } + } + if(NFk>2){ + N<- trunc(Ph) + S0<- Ph-N + if(Ph>Numptcrv(Fh)-Eps){ + Out<- list(Ptend(Fk),Numptcrv(Fh)) + return(Out) + } + }else{ + N<- 1 + S0<- Ph-1 + } + 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) + return(Out) +} + +################################# + +#100815 +Invperspt<- function(...){ + varargin<-list(...) + Eps<- 10^(-4) + Fk<- varargin[[length(varargin)]] + NFk<- Numptcrv(Fk) + Tmp<- varargin[[1]] + if(mode(Tmp)=="numeric" && 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){ + print("Not on the line") + Out<- c() + return(Out) + }else{ + Ph<- Dotprod(V1,V2)/Norm(V2)^2+1# 09.11.12 + } + } + } + if(NFk>2){ + N<- trunc(Ph) + S0<- Ph-N + if(Ph>Numptcrv(Fh)-Eps){ + Out<- list(Ptend(Fk),Numptcrv(Fh)) + return(Out) + } + }else{ + N<- 1 + S0<- Ph-1 # 09.11.12 + } + 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(c(Ph,0)) + Ahc<- Cancoordpers(c(Ah,0)) + Bhc<- Cancoordpers(c(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] + }else if(abs(Cp[2])==Mx){ + T2<- Nmr[2]/Cp[2] + }else{ + T2<- Nmr[3]/Cp[3] + } + Pk<- (1-T2)*Ak+T2*Bk + Out<- list(Pk,N+T2) + return(Out) +} + +######################### + +Kukannozoku<- function(Jokyo,KukanL){ + Eps<- 10^(-6) + N<- Nrow(KukanL) + T1<- Jokyo[1]; T2<- Jokyo[2] + Tmp<- KukanL[1,] + T1<- max(T1,Tmp[1]) + Tmp<- KukanL[N,] + T2<- min(T2,Tmp[2]) + Res<- c() + Flg<- 0 + for (I in Looprange(1,N)){ + Ku<- KukanL[I,] + if(Flg==0){ + if(Ku[2]<T1){ + Res<- rbind(Res,Ku) + }else{ + Flg<- 1 + if(Ku[1]<T1-Eps){ + Tmp<- c(Ku[1],T1) + Res<- rbind(Res,Tmp) + } + if(Ku[2]>T2+Eps){ + Tmp<- c(T2,Ku[2]) + Res<- rbind(Res,Tmp) + } + } + }else if(Flg==1){ + if(Ku[2]<T2){ + next + }else{ + Flg<- 2 + if(Ku[1]<T2-Eps){ + Ku<- c(T2,Ku[2]) + } + Res<- rbind(Res,Ku) + } + }else{ + Res<- rbind(Res,Ku) + } + } + return(Res) +} + +######################################## + +Makeskeletondata<- function(Obj2L,Plt2L,R0,Eps2){ + Eps<- 10.0^(-3) + Dmat<- c() + Dind<- c() + for (I in Looprange(1,Mixlength(Plt2L))){ + Dt<- Op(I,Plt2L) + N1<- Nrow(Dmat)+1 + if(Nrow(Dmat)==0){ + Dmat<- Dt + }else{ + Dmat<- rbind(Dmat,Dt) + } + N2<- Nrow(Dmat) + Dind<- c(Dind,N1,N2) + } + Dind<- matrix(Dind,ncol=2,byrow=TRUE) + Nind<- Nrow(Dind) + Allres<- list() + for (Nobj in Looprange(1,Mixlength(Obj2L))){ + Plt2<- Op(Nobj,Obj2L) + PhL<- Plt2[,1:2] + ClipL<- c() + for (Ns in Looprange(1,Nrow(PhL)-1)){ + P1<- PhL[Ns:(Ns+1),] + for (I in Looprange(1,Nrow(Dind))){ + Tmp<- Dmat[Dind[I,1]:Dind[I,2],] + P2<- Tmp[,1:2] + KC<- IntersectcrvsPp(P1,P2) + if(Mixlength(KC)>0){ + for (J in 1:Mixlength(KC)){ + P<- Op(1,Op(J,KC)) + Tmp<- Op(2,Op(J,KC)) + if(Tmp<1+Eps && Ns==1){ + next + } + if(Tmp>Numptcrv(P1)-Eps && Ns==(Nrow(PhL)-1)){ + next + } + N1<- Ns + N2<- Op(3,Op(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){ + next + } + 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)){ + next + } + T2<- Norm(Pa-P)/Norm(Pa-Pb) + Z2<- (1-T2)*Za+T2*Zb + if(Z1<Z2-Eps2){ + if(Nrow(ClipL)==0){ + Tmp<- 1 + }else{ + Tmp1<- ClipL[,1]-P[1] + Tmp2<- ClipL[,2]-P[2] + Tmp3<- Tmp1^2+Tmp2^2 + Tmp<- min(Tmp3) + } + if(Tmp>Eps^2){ + Tmp1<- P1[2,]-P1[1,] + Tmp2<- Pb-Pa + Tmp3<- Dotprod(Tmp1,Tmp2) + Tmp3<- Tmp3/Norm(Tmp1)/Norm(Tmp2) + Tmp<- 1-0.5*Tmp3^2 + ClipL<- rbind(ClipL,c(P,N1,T1,R0/Tmp)) + } + } + } + } + } + } + Te<- Nrow(Plt2) + KukanL<- rbind(c(),c(1.0,Te)) + P1<- PhL + if(Nrow(ClipL)>0){ + for (I in 1:Nrow(ClipL)){ + P<- ClipL[I,1:2] + NN<- ClipL[I,3] + T<- NN+ClipL[I,4] + R<- ClipL[I,5] + Flg<- 0 + for (J in NN:1){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){ + next + } + Flg<- 1 + break + } + if(Flg==0){ + T1<- 1 + }else{ + T1<- J; T2<- T + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ + T2<- T2-H + }else{ + T1<- T1+H + } + } + } + Ku<- c(T1) + Flg<- 0 + for (J in Looprange(NN+1,Te)){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){ + next + } + Flg<- 1 + break + } + if(Flg==0){ + T2<- Te + }else{ + T1<- T; T2<- J + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ + T1<- T1+H + }else{ + T2<- T2-H + } + } + } + Ku<- c(Ku,T2) + KukanL<- Kukannozoku(Ku,KukanL) + } + } + Res<- list() + for (I in Looprange(1,Nrow(KukanL))){ + T1<- KukanL[I,1]; N1<- trunc(T1) + T2<- KukanL[I,2]; N2<- trunc(T2) + PtL<- list() + if(T1-N1<1-Eps){ + Tmp<- Pointoncurve(T1,P1) + PtL<- list(Tmp) + } + for (J in Looprange(N1+1,N2)){ + Tmp<- Pointoncurve(J,P1) + PtL<- c(PtL,list(Tmp)) + } + if(T2-N2>Eps){ + Tmp<- Pointoncurve(T2,P1) + PtL<- c(PtL,list(Tmp)) + } + Res<- c(Res,list(Listplot(PtL))) + } + Allres<- c(Allres,Res) + } + return(Allres) +} + +######################### + +#100815 +Makeskeletonpersdata<- function(Obj2L,Plt2L,R0,Eps2){ + Eps<- 10.0^(-3) + Dmat<- c() + Dind<- c() + for (I in Looprange(1,Mixlength(Plt2L))){ + Dt<- Op(I,Plt2L) + N1<- Nrow(Dmat)+1 + Dmat<- rbind(Dmat,Dt) + N2<- Nrow(Dmat) + Dind<- rbind(Dind,c(N1,N2)) + } + Nind<- Nrow(Dind) + Allres<- list() + for (Nobj in Looprange(1,Mixlength(Obj2L))){ + Plt2<- Op(Nobj,Obj2L) + PhL<- Plt2[,1:2] + ClipL<- c() + for (Ns in Looprange(1,Nrow(PhL)-1)){ + P1<- PhL[Ns:(Ns+1),] + for (I in Looprange(1,Nrow(Dind))){ + Tmp<- Dmat[Dind[I,1]:Dind[I,2],] + P2<- Tmp[,1:2] + KC<- IntersectcrvsPp(P1,P2,Eps) + if(Mixlength(KC)>0){ + for (J in Looprange(1,Mixlength(KC))){# + P<- Op(1,Op(J,KC)) + Tmp<- Op(2,Op(J,KC)) + if(Tmp<(1+Eps) && Ns==1){ + next + } + if(Tmp>Numptcrv(P1)-Eps && Ns==(Nrow(PhL)-1)){ + next + } + N1<- Ns + N2<- Op(3,Op(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){ + next + } + T1<- Norm(Pa-P)/Norm(Pa-Pb)#norm(Pa-P)/norm(Pa-Pb) + Pka<- Cancoordpers(c(Pa[1],Pa[2],Za)) + Pkb<- Cancoordpers(c(Pb[1],Pb[2],Zb)) + if(T1>1-Eps){ + Pk<- Pkb + }else{ + Tmp1<- Listplot(c(Pa,Pb)) + Tmp2<- Spaceline(c(Pka,Pkb)) + Tmp<- Invperspt(1+T1,Tmp1,Tmp2) + Pk<- Op(1,Tmp) + } + 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){ + next + } + T2<- Norm(Pa-P)/Norm(Pa-Pb) + Pka<- Cancoordpers(c(Pa[1],Pa[2],Za)) + Pkb<- Cancoordpers(c(Pb[1],Pb[2],Zb)) + if(T2>(1-Eps)){ + Pk<- Pkb + }else{ + Tmp1<- Listplot(c(Pa,Pb)) + Tmp2<- Spaceline(c(Pka,Pkb)) + Tmp<- Invperspt(1+T2,Tmp1,Tmp2) + Pk<- Op(1,Tmp) + } + Z2<- Zperspt(Pk) + if(Z1<(Z2-Eps2)){ + if(length(ClipL)==0){ + Tmp<- 1 + }else{ + Tmp1<- ClipL[,1]-P[1] + Tmp2<- ClipL[,2]-P[2] + Tmp3<- Tmp1^2+Tmp2^2 + Tmp<- min(Tmp3) + } + if(Tmp>Eps^2){ + Tmp1<- P1[2,]-P1[1,] + Tmp2<- Pb-Pa + Tmp3<- Dotprod(Tmp1,Tmp2) + Tmp3<- Tmp3/Norm(Tmp1)/Norm(Tmp2) + Tmp<- 1-0.5*Tmp3^2 + ClipL<- rbind(ClipL,c(P,N1,T1,R0/Tmp)) + } + } + } + } + } + } + Te<- Nrow(Plt2) + KukanL<- rbind(c(),c(1.0,Te)) + P1<- PhL + if(Nrow(ClipL)>0){ + for (I in Looprange(1,Nrow(ClipL))){ + P<- ClipL[I,1:2] + NN<- ClipL[I,3] + T<- NN+ClipL[I,4] + R<- ClipL[I,5] #added 10.08.17 + Flg<- 0 + for (J in NN:1){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){#(norm(P-Q)<R) + next + } + Flg<- 1 + break + } + if(Flg==0){ + T1<- 1 + }else{ + T1<- J; T2<- T + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ # norm(P-Q)<R + T2<- T2-H + }else{ + T1<- T1+H + } + } + } + Ku<- c(T1)#Ku<- [T1] + Flg<- 0 + for (J in Looprange(NN+1,Te)){ + Q<- Pointoncurve(J,P1) + if(Norm(P-Q)<R){ + next#continue + } + Flg<- 1 + break + } + if(Flg==0){ + T2<- Te + }else{ + T1<- T; T2<- J + H<- T2-T1 + for (N in 1:10){ + H<- H*0.5 + Q<- Pointoncurve(T1+H,P1) + if(Norm(P-Q)<R){ + T1<- T1+H + }else{ + T2<- T2-H + } + } + } + Ku<- c(Ku,T2)#[Ku,T2] + KukanL<- Kukannozoku(Ku,KukanL) + } + } + Res<- list()#[] + for (I in Looprange(1,Nrow(KukanL))){#(I=1:size(KukanL,1)) + T1<- KukanL[I,1]; N1<- trunc(T1) + T2<- KukanL[I,2]; N2<- trunc(T2) + PtL<- list()#[] + if(T1-N1<1-Eps){ + Tmp<- Pointoncurve(T1,P1) + PtL<- list(Tmp)#100816c(PtL,list(Tmp)) PtL<- MixS(Tmp) + } + for (J in Looprange(N1+1,N2)){ + Tmp<- Pointoncurve(J,P1) + PtL<- c(PtL,list(Tmp))#Mixadd(PtL,Tmp) + } + if(T2-N2>Eps){ + Tmp<- Pointoncurve(T2,P1) + PtL<- c(PtL,list(Tmp))#Mixadd(PtL,Tmp) + } + Res<- c(Res,list(Listplot(PtL)))#Res<- Mixadd(Res,Listplot(PtL)) + } + Allres<- c(Allres,Res)#Allres<- Mixjoin(Allres,Res) + } + return(Allres) +} + +##############################3 + +MakeveLfaceL<- function(VfL){ +# // Out format +# // VeL Edge, Face num(as numlist), VeL num +# // FL Face (Vertexs) + Eps<- 10^(-4) + Tmp<- VfL[[length(VfL)]] + Tmp1<- Tmp[[1]] + if(mode(Tmp1)=="numeric"){ + FvL<- list(VfL) + }else{ + FvL<- VfL + } + EL<- list(); FL<- list() + for (Nn in Looprange(1,length(FvL))){ + Tmp<- FvL[[Nn]] + VL<- Tmp[[1]] + if(length(VL)>0){ + FnL<- Tmp[[2]] + FaceL<- list() + for (I in Looprange(1,length(FnL))){ + Tmp1<- FnL[[I]] + PtL<- list() + for (J in Looprange(1,length(Tmp1))){ + Tmp2<- Tmp1[[J]] + PtL[[J]]<- VL[[Tmp2]] + } + FaceL[[I]]<- PtL + } + }else{ + FaceL<- list(Tmp[[2]]) + } + for (I in Looprange(1,length(FaceL))){ + Face<- FaceL[[I]] + Face<- c(Face,list(Face[[1]])) + FL<- c(FL,list(Face)) + for (J in Looprange(1,length(Face)-1)){ + Edge<- list(Face[[J]],Face[[J+1]]) + Flg<- 0 + for (K in Looprange(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<- c(Tmp[[2]],length(FL)) + EL[[K]]<- list(Tmp1,Tmp2,K) + Flg<- 1 + break + } + } + if(Flg==0){ + Ntmp<- length(EL) + EL[[Ntmp+1]]<- list(Edge,c(length(FL)),Ntmp+1) + } + } + } + } + Out<- list(EL,FL) + return(Out) +} + +########################### +# 09.10.29 +# 09.11.15 + +Menkakusi2<- function(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() + } + Vec<- 1/Norm(Tmp1)/Norm(Tmp2)*Crossprod(Tmp1,Tmp2) + if(Norm(Vec)<Eps){ + return() + } + if(Ptype== -1){ + W<- EyePoint + Tmp<- Dotprod(Vec,W-Face[[1]]) + }else{ + W<- c(sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)) + W<- 100*W + Tmp<- Dotprod(Vec,W-Face[[1]]) + } + if(abs(Tmp)<Eps){ + return() + } + if(Tmp<-Eps){ + Vec<- -Vec + } + if(Ptype==-1){ + G1<- Projpers(Spaceline(Face)) + }else{ + G1<- Projpara(Spaceline(Face)) + } + VL<- list() + for (I in Looprange(1,Numptcrv(G1))){ + VL[[I]]<- Ptcrv(I,G1) + } + Out1L<- list() + Out2L<- VELHI + for (N in Looprange(1,length(VELNO))){ + Out1<- list() + Out2<- list() + Tmp<- VELNO[[N]] + Edge<- Tmp[[1]] + Ne<- Tmp[[2]] + NNe<- Tmp[[3]] + if(Member(Nf,Ne)){ + Out1L<- c(Out1L, list(list(Edge,Ne,NNe))) + next + } + if(Ptype==-1){ + PtA<- Perspt(Edge[[1]]) + PtB<- Perspt(Edge[[2]]) + }else{ + PtA<- Parapt(Edge[[1]]) + PtB<- Parapt(Edge[[2]]) + } + if(Norm(PtA-PtB)<Eps){ + next + } + Bdy<- list(G1) + V<- PtB-PtA + TenL<- KoutenList(PtA,V,Bdy) + Nten<- length(TenL) + if(Nten==0){ # debug 10.08.17 + Out1L<- c(Out1L,list(list(Edge,Ne,NNe))) + next + } + 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)) + } + Qe3<- Tmp[[1]] + Flg<- 0 + for (I in Looprange(1,Nten)){ + TenP<- TenL[[I]] + Ts<- TenP[[1]] + P<- TenP[[2]] + if(Ts< -Eps){ + next + } + 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)) + } + P3<- Tmp[[1]]; Q3<- Tmp1[[1]] + if(Ts>1-Eps){# P3, Q3 are necessary + Flg<- I + break + } + if(abs(Te-Ts)>Eps0){ + if((I%%2)==1){ + Out1<- c(Out1,list(list(Pe3,P3))) + }else{ + if(length(Qe3)==0){ + Tmp<- Op(2,TenL[[I-1]]) + if(Ptype==-1){ + Tmp1<- Invperspt(Tmp,Spaceline(Face)) + }else{ + Tmp1<- Invparapt(Tmp,Spaceline(Face)) + } + Qe3<- Tmp1[[1]] + } + 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) + } + if(Z1>Z2){ + Out1<- c(Out1, list(list(Pe3,P3))) + }else{ + Out2<- c(Out2, list(list(Pe3,P3))) + }## + } + } + Te<- Ts; Pe3<- P3; Qe3<- Q3 + } + if(Flg==0){ + if(Norm(Pe3-Edge[[2]])>Eps0){ + Out1<- c(Out1, list(list(Pe3,Edge[[2]]))) + } + }else{ + if((Flg%%2)==1){ + Out1<- c(Out1, list(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) + } + if(Z1>Z2){ + Out1<- c(Out1, list(list(Pe3,Edge[[2]]))) + }else{ + Out2<- c(Out2, list(list(Pe3,Edge[[2]]))) + } + } + } + for (I in Looprange(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<- c(Out1L, list(list(SeL,Ne,NNe))) + SeL<- Tmp + } + } + } + if(length(Out1)>0){ + Out1L<- c(Out1L, list(list(SeL,Ne,NNe))) + } + for (I in Looprange(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<- c(Out2L, list(list(SeL,Ne,NNe))) + SeL<- Tmp + } + } + } + if(length(Out2)>0){ + Out2L<- c(Out2L, list(list(SeL,Ne,NNe))) + } + } + VELNO<<- Out1L + VELHI<<- Out2L +} + +################################### + +Parapt<- function(Plist){ # 18.02.19 changed (for point list) + if(!is.list(Plist)){Plist=list(Plist)} + Out=list() + for(jj in 1:length(Plist)){ + P=Op(jj,Plist) + 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<- c(Out,list(c(Xz,Yz))) + } + if(length(Out)==1){Out=Op(1,Out)} + return(Out) +} + +################################### + +Partcrv3<- function(T1,T2,Fk){ + Eps0=10^(-4) +# Tmp=Mixop(1,Fk) +# new part from + if(T1>(T2+Eps0)){ + Npt<- Nrow(Fk) + Out1<- Partcrv3(T1,Npt,Fk) + Out2<- Partcrv3(1,T2,Fk) + Tmp<- Fk[1,]-Fk[Npt,] + if(Norm(Tmp)<Eps0){ + PL<- Joincrvs(Out1,Out2) + }else{ + PL<- list(Out1,Out2) + } + rownames(PL)<- 1:Nrow(PL) + return(PL) + } + if(floor(T1)==floor(T2)){ #18.02.26from + Tmp=floor(T1) + p1=Op(Tmp,Fk); p2=Op(Tmp+1,Fk) + PL=c(p1+(T1-Tmp)*(p2-p1)) + PL=Appendrow(PL, p1+(T2-Tmp)*(p2-p1)) #18.02.26until + }else{ + Is<- ceiling(T1) + Ie<- floor(T2) + PL<- c() + if(T1<Is-Eps0){ + P<- (Is-T1)*Fk[Is-1,]+(1-Is+T1)*Fk[Is,] + PL<- Appendrow(PL, P) #18.02.10(bug) + } + PL<- Appendrow(PL,Fk[Is:Ie,]) + if(T2>(Ie+Eps0)){ + P<- (1-T2+Ie)*Fk[Ie,]+(T2-Ie)*Fk[Ie+1,] + PL<- Appendrow(PL,P) + } + } + return(PL) +} + +################################### + +#100815 +Perspt<- function(P){ + 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<- c(Yz,Zz) + return(Out) +} + + +################################# + +Phcutdata<- function(VL,FaceL,PlaneD){ + Out<- list() + EL<- list() + Eps<- 10^(-4) + for (I in Looprange(1,Mixlength(FaceL))){ + Face<- Op(I,FaceL) + for (J in Looprange(1,length(Face))){ + Nj<- J+1 + if(J==length(Face)){ + Nj<- 1 + } + N1<- Face[J]; N2<- Face[Nj] + Tmp<- c(N1,N2) + Flg<- 0 + for (K in Looprange(1,Mixlength(EL))){ + Tmp1<- Op(K,EL) + Tmp2<- Tmp1[2:1] + if(all(Tmp==Tmp1) || all(Tmp==Tmp2)){ + Flg<- 1 + break + } + } + if(Flg==0){ + EL<- c(EL,list(Tmp)) + } + } + } + Out0<- list() + for (I in Looprange(1,Mixlength(EL))){ + Tmp<- Op(I,EL) + Tmp1<- Op(Tmp[1],VL) + Tmp2<- Op(Tmp[2],VL) + Out0<- c(Out0, list(Spaceline(Tmp1,Tmp2))) + } + if(Mixtype(PlaneD)!=1){ + V1<- Op(1,PlaneD) + Tmp<- Op(2,PlaneD) + if(length(Tmp)>1){ + d<- V1[1]*Tmp[1]+V1[2]*Tmp[2]+V1[3]*Tmp[3] + }else{ + d<- Tmp + } + }else if(mode(PlaneD)=="numeric"){ + V1<- PlaneD[1:3] + d<- PlaneD[4] + }else{ + StrV<- strsplit(PlaneD,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Tmp1<- StrV[1] + Tmp2<- StrV[2] + PlaneD<- paste(Tmp1,"-(",Tmp2,")",sep="") + } + x<- 0; y<- 0; z<- 0 + d<- -eval(parse(text=PlaneD)) + x<- 1; y<- 0; z<- 0; + Tmp1<- eval(parse(text=PlaneD))+d + x<- 0; y<- 1; z<- 0 + Tmp2<- eval(parse(text=PlaneD))+d + x<- 0; y<- 0; z<- 1 + Tmp3<- eval(parse(text=PlaneD))+d + V1<- c(Tmp1,Tmp2,Tmp3) + } + if(all(V1==c(0,0,0))){ + return(Out0) + } + V3<- c(1,0,0) + Out1<- Rotate3data(Out0,V1,V3) + Tmp2<- Rotate3pt(c(1,0,0),V3,V1) + Tmp<- V1[1]*Tmp2[1]+V1[2]*Tmp2[2]+V1[3]*Tmp2[3] + x0<- d/Tmp + PtL<- list() + for (I in Looprange(1,Mixlength(Out1))){ + Tmp<- Op(I,Out1) + Tmp1<- Tmp[1,]; Tmp2<- Tmp[2,] + P<- list(Tmp1,Tmp2-Tmp1) + Tmp<- list(Tmp1[1],Tmp2[1]-Tmp1[1]) + if(abs(Tmp[[2]]) < Eps){ + Tmp<- c() + }else{ + Tmp1<- Tmp[[2]] + Tmp2<- x0-Tmp[[1]] + Tmp<- c(Tmp2/Tmp1) + } + if(length(Tmp)>0){ + Tmp<- Tmp[1] + if(Tmp>-Eps && Tmp<(1+Eps)){ + Tmp3<- P[[1]]+Tmp*P[[2]] + Tmp3<- Rotate3pt(Tmp3,V3,V1) + if(Tmp<Eps){ + Tmp1<- Op(I,EL) + Tmp1<- Tmp1[1] + Tmp4<- list(c(Tmp1,Tmp1),Tmp3) + }else{ + if(Tmp>1-Eps){ + Tmp1<- Op(I,EL) + Tmp1<- Tmp1[2] + Tmp4<- list(c(Tmp1,Tmp1),Tmp3) + }else{ + Tmp4<- list(Op(I,EL),Tmp3) + } + } + Flg<- 0 + for (J in Looprange(1,Mixlength(PtL))){ + Tmp<- Op(J,PtL) + Tmp<- Op(2,Tmp) + if(Norm(Tmp3-Tmp)<Eps){ + Flg<- 1 + break + } + } + if(Flg==0){ + PtL<- c(PtL,list(Tmp4)) + } + } + } + } + if(Mixlength(PtL)==0){ + return(Out0) + } + PL<- list(Op(1,PtL)) + QL<- PtL[2:Mixlength(PtL)] + N<- Mixlength(QL) + for (I in Looprange(2,N+1)){ + Tmp1<- Op(Mixlength(PL),PL) + Tmp1<- Op(1,Tmp1) + for (J in Looprange(1,Mixlength(QL))){ + Tmp2<- Op(J,QL) + Tmp2<- Op(1,Tmp2) + Flg<- 0 + for (K in Looprange(1,Mixlength(FaceL))){ + Tmp3<- Op(K,FaceL); + if(Member(Tmp1[1],Tmp3) && + Member(Tmp1[2],Tmp3) && + Member(Tmp2[1],Tmp3) && + Member(Tmp2[2],Tmp3)){ + Flg<- 1 + break + } + } + if(Flg==1){ + break + } + } + J<- min(J, Mixlength(QL)) + PL<- c(PL,list(Op(J,QL))) + Tmp1<- QL[Looprange(1,J-1)] + Tmp2<- QL[Looprange(J+1,Mixlength(QL))] + QL<- c(Tmp1,Tmp2) + if(Mixlength(QL)==0){ + break + } + } + PHCUTPOINTL<<- PL + Tmp<- list() + for (J in Looprange(1,Mixlength(PL))){ + Tmp1<- Op(J,PL) + Tmp1<- Op(2,Tmp1) + Tmp<- c(Tmp,list(Tmp1)) + } + Tmp1<- Op(1,PL) + Tmp1<- Op(2,Tmp1) + Tmp<- c(Tmp,list(Tmp1)) + Out2<- Spaceline(Tmp) + Out<- c(Out0,list(Out2)) +} + +######################################### + +Phcutoffdata<- function(...){ + varargin<-list(...) + Eps<- 10^(-4) + Out2<- list() + VL<- varargin[[1]] + FaceL<- varargin[[2]] + PlaneD<- varargin[[3]] + Sgnstr<- varargin[[4]] + Fugou<- 1 + if(Sgnstr=="-" || Sgnstr=="n"){ + Fugou<- -1 + } + Out0<- Phcutdata(VL,FaceL,PlaneD) + PtL<- PHCUTPOINTL + PHVERTEXL<<- VL + PHFACEL<<- FaceL + if(length(PtL)==0){ + Out2<- Out0 + return(Out2) + } + N1<- Mixlength(VL) + Face<- c() + for (I in Looprange(1,Mixlength(PtL))){ + Tmp<- Op(I,PtL) + Tmp3<- Op(1,Tmp) + Tmp1<- Tmp3[[1]]; Tmp2<- Tmp3[[2]] # debugged 10.08.14 + if(Tmp1!=Tmp2){ + VL<- c(VL,list(Op(2,Tmp))) + N1<- N1+1 + Tmp1<- N1 + } + Face<- c(Face,Tmp1) + PtL[[I]]<- list(Op(1,Tmp),Tmp1) + } + OutfL<- list(Face) + if(Mixtype(PlaneD)!=1){ + V1<- Op(1,PlaneD) + Tmp<- Op(2,PlaneD) + if(length(Tmp)>1){ + d<- V1[1]*Tmp[1]+V1[2]*Tmp[2]+V1[3]*Tmp[3] + }else{ + d<- Tmp + } + }else if(mode(PlaneD)=="numeric"){ + V1<- PlaneD[1:3] + d<- PlaneD[4] + }else{ + StrV<- strsplit(PlaneD,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Tmp1<- StrV[1] + Tmp2<- StrV[2] + PlaneD<- paste(Tmp1,"-(",Tmp2,")",sep="") + } + x<- 0; y<- 0; z<- 0 + d<- -eval(parse(text=PlaneD)) + x<- 1; y<- 0; z<- 0 + Tmp1<- eval(parse(text=PlaneD))+d + x<- 0; y<- 1; z<- 0 + Tmp2<- eval(parse(text=PlaneD))+d + x<- 0; y<- 0; z<- 1 + Tmp3<- eval(parse(text=PlaneD))+d + V1<- c(Tmp1,Tmp2,Tmp3) + } + for (I in Looprange(1,Mixlength(FaceL))){ + Face<- Op(I,FaceL) + TmpL<- list() + for (J in Looprange(1,length(Face))){ + N1<- Face[J] + if(J==length(Face)){ + N2<- Face[1] + }else{ + N2<- Face[J+1] + } + for (K in Looprange(1,Mixlength(PtL))){ + Pd<- Op(K,PtL) + Tmp<- Op(1,Pd) + if(Tmp[1]==Tmp[2]){ + if(Tmp[1]==N1){ + TmpL<- c(TmpL,list(list(J,c(N1,N2),Op(2,Pd)))) + } + }else{ + if(all(Tmp==c(N1,N2)) || all(Tmp==c(N2,N1))){ + TmpL<- c(TmpL,list(list(J,c(N1,N2),Op(2,Pd)))) + } + } + } + } + if(Mixlength(TmpL)<2){ + Flg<- 0 + for (J in Looprange(1,length(Face))){ + Tmp<- Op(Face[J],VL) + Tmp1<- Fugou*(Dotprod(V1,Tmp)-d) + if(Tmp1< -Eps){ + Flg<- 1 + break + } + } + if(Flg==0){ + OutfL<- c(OutfL,list(Face)) + } + next + } + Pd<- Op(1,TmpL) + Qd<- Op(2,TmpL) + Outf1<- c(Op(3,Pd)) + Nf<- Op(1,Pd)+1 + Tmp<- Op(2,Pd) + JJ<- 0 + while (!all(Tmp==Op(2,Qd))){ + JJ<- JJ+1 + if(JJ>20){ + print("bug") + return() + } + Tmp1<- Tmp[2] + if(Outf1[length(Outf1)]!=Tmp1){ + Outf1<- c(Outf1,Tmp1) + } + Tmp<- c(Face[Nf]) + Nf<- Nf+1 + if(Nf>length(Face)){ + Nf<- 1 + } + Tmp<- c(Tmp,Face[Nf]) + } + Tmp1<- Op(3,Qd) + if(Outf1[length(Outf1)]!=Tmp1){ + Outf1<- c(Outf1,Tmp1) + } + Outf2<- c(Op(3,Pd)) + Nf<- Op(1,Pd) + Tmp<- Op(2,Pd) + JJ<- 0 + while (!all(Tmp==Op(2,Qd))){ + JJ<- JJ+1 + if(JJ>20){ + print("bug") + return() + } + Tmp1<- Tmp[1] + if(Outf2[length(Outf2)]!=Tmp1){ + Outf2<- c(Outf2,Tmp1) + } + Tmp<- c(Face[Nf]) + Nf<- Nf-1 + if(Nf<1){ + Nf<- length(Face) + } + Tmp<- c(Face[Nf],Tmp) + } + Tmp1<- Op(3,Qd) + if(Outf2[length(Outf2)]!=Tmp1){ + Outf2<- c(Outf2,Tmp1) + } + if(length(Outf1)<3 || length(Outf2)<3){ + Face<- Outf1 + if(length(Outf1)<length(Outf2)){ + Face<- Outf2 + } + Flg<- 0 + for (J in Looprange(1,length(Face))){ + Tmp<- Op(Face(J),VL) + Tmp1<- Fugou*(Dotprod(V1,Tmp)-d) + if(Tmp1<-Eps){ + Flg<- 1 + break + } + } + if(Flg==0){ + OutfL<- c(OutfL,list(Face)) + } + }else{ + Tmp<- Op(Outf1[2],VL) + Tmp1<- Outf1 + Tmp2<- Fugou*(Dotprod(V1,Tmp)-d) + if(Tmp2<0){ + Tmp1<- Outf2 + } + OutfL<- c(OutfL,list(Tmp1)) + } + } + PHVERTEXL<<- VL + PHFACEL<<- OutfL + Out2<- Phcutdata(VL,OutfL,c(0,0,0,0)) + return(Out2) +} + +####################### + +Phparadata<- function(VL,FaceL){ + Out<- Facesdata(list(VL,FaceL),"para") + return(Out) +} + +#################################### + +Phpersdata<- function(VL,FaceL){ + Out<- Facesdata(list(VL,FaceL),"pers") + return(Out) +} + +#################################### + +Phspersdata<- function(Fdata){ + Out<- Facesdata(Fdata,"pers") + return(Out) +} + +#################################### + +Phsparadata<- function(Fdata){ + Out<- Facesdata(Fdata,"para") + return(Out) +} + +######################### + +#100816 +Projpers<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Flg<- 0 + if(Nargs==1 && Mixtype(varargin[[1]])==1){ + Flg<- 1 + } + CL<- list() + for (N in Looprange(1,Nargs)){ + Crv<- varargin[[N]] + if(Mixtype(Crv)==1){ + Tmp<- CameraCurve(Crv) + CL<- c(CL,list(Tmp)) + }else{ + if(Mixtype(Crv)==3){ + ObjL<- list() + for (I in Looprange(1,Mixlength(Crv))){ + Tmp1<- Op(I,Crv) + if(Mixtype(Tmp1)==1){ + ObjL<- c(ObjL,list(Tmp1)) + }else{ + ObjL<- c(ObjL,Tmp1) + } + } + Crv<- ObjL + } + for (J in Looprange(1,Mixlength(Crv))){ + Tmp<- CameraCurve(Op(J,Crv)) + CL<- c(CL,list(Tmp)) + } + } + } + if(Mixlength(CL)==1 && Flg==1){ + CL<- Op(1,CL) + } + return(CL) +} + +################################### + +ProjcoordCurve<- function(Curve){ + SP<- sin(PHI); CP<- cos(PHI) + ST<- sin(THETA); CT<- cos(THETA) + Out<- c() + for (J in Looprange(1,Nrow(Curve))){ + P<- Ptcrv(J,Curve) + 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<- c(Out,Xz,Yz,Zz) + } + Out<- matrix(Out,ncol=3,byrow=TRUE) + return(Out) +} + +################################# + +ProjCurve<- function(Curve){ # 2018.02.26 rewritten + AnsL= c() + SP=sin(PHI); CP=cos(PHI) + ST=sin(THETA); CT=cos(THETA) + for(I in Looprange(1,Length(Curve)) ){ + P=Op(I,Curve) + 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 + AnsL=Appendrow(AnsL,c(Xz,Yz)) + Tmp= c(Xz,Yz) + }else{ + AnsL=Appendrow(AnsL,c(Inf,Inf)) + } + } + return(AnsL) +} + +#################################### + +Projpara<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Flg<- 0 + if((Nargs==1)&&(is.numeric(varargin[[1]]))){ + Flg<- 1 + } + CL<- list() + for (N in Looprange(1,Nargs)){ + Crv<- varargin[[N]] + if(is.numeric(Crv)){ + if(!is.matrix(Crv)){ # 190408from + Crv=matrix(Crv,ncol=3) + } # 190408to + Tmp<- ProjCurve(Crv) + CL<- c(CL,list(Tmp)) + } + else{ + if(is.list(Crv)){ + ObjL<- list() + for (I in Looprange(1,Mixlength(Crv))){ + Tmp1<- Op(I,Crv) + if(is.numeric(Tmp1)){ + ObjL<- c(ObjL,list(Tmp1)) + } + else{ + ObjL<- c(ObjL,Tmp1) + } + } + Crv<- ObjL + } + for (J in Looprange(1,length(Crv))){ + Tmp<- ProjCurve(Op(J,Crv)) + CL<- c(CL,list(Tmp)) + } + } + } + if((length(CL)==1)&&(Flg==1)){ + CL<- Op(1,CL) + } + return(CL) +} + +######################### + +#100816 +Projpers<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Flg<- 0 + if(Nargs==1 && Mixtype(varargin[[1]])==1){ + Flg<- 1 + } + CL<- list() + for (N in Looprange(1,Nargs)){ + Crv<- varargin[[N]] + if(Mixtype(Crv)==1){ + Tmp<- CameraCurve(Crv) + CL<- c(CL,list(Tmp)) + }else{ + if(Mixtype(Crv)==3){ + ObjL<- list() + for (I in Looprange(1,Mixlength(Crv))){ + Tmp1<- Op(I,Crv) + if(Mixtype(Tmp1)==1){ + ObjL<- c(ObjL,list(Tmp1)) + }else{ + ObjL<- c(ObjL,Tmp1) + } + } + Crv<- ObjL + } + for (J in Looprange(1,Mixlength(Crv))){ + Tmp<- CameraCurve(Op(J,Crv)) + CL<- c(CL,list(Tmp)) + } + } + } + if(Mixlength(CL)==1 && Flg==1){ + CL<- Op(1,CL) + } + return(CL) +} + +######################################### +# 180807 + +Reflect3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + VL<- varargin[[2]] + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } else if(Mixtype(Pd3)==3){ + Tmp<- list() + for (I in Looprange(1,Length(Pd3))){ + Tmp<- c(Tmp,Op(I,Pd3)) + } + Pd3<- Tmp + } + Out<- list() + for (I in Looprange(1,Length(Pd3))){ + PD<- Op(I,Pd3) + Ans<- c() + for (J in Looprange(1,Nrow(PD))){ + if(is.matrix(PD)){ + P<- PD[J,] + } + else{ + P<- PD + } + Tmp<- Reflect3pt(P,VL) + Ans<- rbind(Ans,Tmp) + } + rownames(Ans)<- 1:Nrow(Ans) + Out<- c(Out,list(Ans)) + } + if(Length(Out)==1){ + Out<- Op(1,Out) + } + return(Out) +} + +####################################### + +Reflect3pt<- function(...){ + varargin<-list(...) + Nargs<-length(varargin) + P<- varargin[[1]] + VL<- varargin[[2]] + if(Length(VL)==1){ + Ans=2*Op(1,VL)-P + } + if(Length(VL)==2){ + V1=Op(1,VL) + V2=Op(2,VL) + V3=(V2-V1)/Norm(V2-V1) + Tmp=V1+Dotprod(P-V1,V3)*V3 + Ans=2*Tmp-P + } + if(Length(VL)==3){ + V1=Op(1,VL) + V2=Op(2,VL) + V3=Op(3,VL) + Tmp=Crossprod(V2-V1,V3-V1) + Tmp1=P-Dotprod(Tmp, P-V1)/Norm(Tmp)^2*Tmp + Ans=2*Tmp1-P + } + return(Ans) +} + +######################################### +# 180807 + +Scale3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + R<- varargin[[2]] + C<- varargin[[3]] + C<- c(0,0,0) + if(Nargs>=3){ + C<- varargin[[3]] + } + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } else if(Mixtype(Pd3)==3){ + Tmp<- list() + for (I in Looprange(1,Length(Pd3))){ + Tmp<- c(Tmp,Op(I,Pd3)) + } + Pd3<- Tmp + } + Out<- list() + for (I in Looprange(1,Length(Pd3))){ + PD<- Op(I,Pd3) + Ans<- c() + for (J in Looprange(1,Nrow(PD))){ + if(is.matrix(PD)){ + P<- PD[J,] + } + else{ + P<- PD + } + Tmp<- Scale3pt(P,R,C) + Ans<- rbind(Ans,Tmp) + } + rownames(Ans)<- 1:Nrow(Ans) + Out<- c(Out,list(Ans)) + } + if(Length(Out)==1){ + Out<- Op(1,Out) + } + return(Out) +} + +####################################### + +Scale3pt<- function(...){ + varargin<-list(...) + Nargs<-length(varargin) + P<- varargin[[1]] + R<- varargin[[2]] + if(length(R)==1){ #180808from + R=c(R,R,R) + } #180808to + C<- c(0,0,0) + if(Nargs>=3){ + C<- varargin[[3]] + } + X1=P[1]; Y1=P[2]; Z1=P[3] + Cx=C[1]; Cy=C[2]; Cz=C[3] + X2=Cx+R[1]*(X1-Cx) + Y2=Cy+R[2]*(Y1-Cy) + Z2=Cz+R[3]*(Z1-Cz) + Ans=c(X2,Y2,Z2) + return(Ans) +} + +######################################### +# 11.08.27 +# 14.03.23 Debugged "center" + +Rotate3data<- function(...){ +#Eps=10^(-4) + varargin<-list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + W1<- varargin[[2]] + W2<- varargin[[3]] + C<- c(0,0,0) + if(Nargs>=4){ + C<- varargin[[4]] + } + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } else if(Mixtype(Pd3)==3){ + Tmp<- list() + for (I in Looprange(1,Mixlength(Pd3))){ + Tmp<- c(Tmp,Op(I,Pd3)) + } + Pd3<- Tmp + } + Out<- list() + for (I in Looprange(1,Mixlength(Pd3))){ + PD<- Op(I,Pd3) + Ans<- c() + for (J in Looprange(1,Nrow(PD))){ + if(is.matrix(PD)){ # 11.08.27 + P<- PD[J,] + } + else{ + P<- PD + } + Tmp<- Rotate3pt(P,W1,W2,C) # 14.03.23 + Ans<- rbind(Ans,Tmp) + } # 11.08.27 + rownames(Ans)<- 1:Nrow(Ans) #10.08.16 + Out<- c(Out,list(Ans)) + } + if(Mixlength(Out)==1){ + Out<- Op(1,Out) + } + return(Out) +} + +####################################### + +Rotate3pt<- function(...){ + varargin<-list(...) + Eps<-10^(-4) + Nargs<-length(varargin) + P<- varargin[[1]] + W1<- varargin[[2]] + W2<- varargin[[3]] + C<- c(0,0,0) + if(Nargs>=4){ + C<- varargin[[4]] + } + if(mode(W2)=="numeric" && length(W2)==1){ + Ct<- cos(W2) + St<- sin(W2) + V3<- 1/Norm(W1)*W1 + if(V3[1]==0){ + Tmp<- c(1,0,0) + }else{ + Tmp<- c(0,1,0) + } + W1<- c(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<- c(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<- c(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(Ans) + } + 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<- c(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) + } + if(Norm(Tmp)<Eps){ + Ans<- P + return(Ans) + } + 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<- list(P) + } + Ans<- list() + for (N in Looprange(1,Mixlength(PtL))){ + P<- Op(N,PtL) + if(P[1]==Inf){ + Ans<- c(Ans,list(c(Inf,Inf,Inf))) + next + } + x<- P[1]-C[1]; y=P[2]-C[2]; z=P[3]-C[3] + Tmp1<- ((V1x*Ct+V2x*St)*V1x+(-V1x*St+V2x*Ct)*V2x+V3x^2)*x + Tmp2<- ((V1x*Ct+V2x*St)*V1y+(-V1x*St+V2x*Ct)*V2y+V3x*V3y)*y + Tmp3<- ((V1x*Ct+V2x*St)*V1z+(-V1x*St+V2x*Ct)*V2z+V3x*V3z)*z + X<- Tmp1+Tmp2+Tmp3 + Tmp1<- ((V1y*Ct+V2y*St)*V1x+(-V1y*St+V2y*Ct)*V2x+V3x*V3y)*x + Tmp2<- ((V1y*Ct+V2y*St)*V1y+(-V1y*St+V2y*Ct)*V2y+V3y^2)*y + Tmp3<- ((V1y*Ct+V2y*St)*V1z+(-V1y*St+V2y*Ct)*V2z+V3y*V3z)*z + Y<- Tmp1+Tmp2+Tmp3 + Tmp1<- ((V1z*Ct+V2z*St)*V1x+(-V1z*St+V2z*Ct)*V2x+V3x*V3z)*x + Tmp2<- ((V1z*Ct+V2z*St)*V1y+(-V1z*St+V2z*Ct)*V2y+V3y*V3z)*y + Tmp3<- ((V1z*Ct+V2z*St)*V1z+(-V1z*St+V2z*Ct)*V2z+V3z^2)*z + Z<- Tmp1+Tmp2+Tmp3 + Ans<- c(Ans,list(C+c(X,Y,Z))) + } + if(Mixlength(Ans)==1){ + Ans<- Op(1,Ans) + } + return(Ans) +} + +################################# + +Translate3data<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Pd3<- varargin[[1]] + Mv<- varargin[[2]] + if(mode(Mv)=="numerice" && length(Mv)==1){ + Mv<- c(varargin[[2]],varargin[[3]],varargin[[4]]) + } + if(Mixtype(Pd3)==1){ + Pd3<- list(Pd3) + } + else if(Mixtype(Pd3)==3){ + Tmp<-list() + for(I in Looprange(1,Mixlength(Pd3))){ + Tmp<- c(Tmp, Op(I,Pd3)) + } + Pd3<- Tmp + } + Out<- list() + for(I in Looprange(1,Mixlength(Pd3))){ + PD<- Op(I,Pd3) + PD<- rbind(c(),PD) + Ans<- c() + for(J in Looprange(1,Nrow(PD))){ + P<- PD[J,] + Tmp<- P+Mv + Ans<- rbind(Ans,Tmp) + } + rownames(Ans)<- 1:Nrow(Ans) + Out<- c(Out,list(Ans)) + } + if(Mixlength(Out)==1){ + Out<- Op(1,Out) + } + return(Out) +} + +###################################### + +Setangle<- function(...){ + Eps<- 10^(-6) + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0) { + } + else if(Nargs==1){ + V<- varargin[[1]] + V<- V/Norm(V) + THETA<<- acos(V[3]) + if(abs(sin(THETA))<Eps){ + PHI<<- 0 + } + else{ + PHI<<- acos(V[1]/sin(THETA)) + if(V[2]< -Eps) PHI<<- -PHI + } + } + else{ + PHI<<- varargin[[2]]*pi/180 + THETA<<- varargin[[1]]*pi/180 + } + Out<- paste("theta=",as.character(THETA*180/pi)," phi=", + as.character(PHI*180/pi),sep="") + return (Out) +} + +################################# + +Setpers<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + if(Nargs==0){ + } + else{ + FocusPoint<<- varargin[[1]] + EyePoint<<- varargin[[2]] + } + F<- as.character(FocusPoint) + E<- as.character(EyePoint) + Out<- paste("Focus = c(",F[1],",",F[2],",",F[3],") , ", + " Eye = c(", E[1],",",E[2],",",E[3],") ",sep="") + return (Out) +} + +################################# + +SetstereoL<- function(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<- c(X+H/2*Y/(X^2+Y^2),Y-H/2*X/(X^2+Y^2),Z) + Out<- Setpers(c(0,0,0),Eye) + return(Out) +} + +################################# + +SetstereoR<- function(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<- c(X-H/2*Y/(X^2+Y^2),Y+H/2*X/(X^2+Y^2),Z) + Out<- Setpers(c(0,0,0),Eye) + return(Out) +} + +############################### + +Sf3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + FdL<- Fullformfunc(varargin[[1]]) + F<- Op(1,FdL) + Xf<- Op(2,FdL) + Yf<- Op(3,FdL) + Zf<- Op(4,FdL) + Urg<- Op(5,FdL) + Vrg<- Op(6,FdL) + Str<- strsplit(Urg,"=",fixed=TRUE)[[1]] + U<- Str[1] + Tmp<- Str[2] + Tmp<- eval(parse(text=Tmp)) + Umin<- Tmp[1]; Umax<- Tmp[2] + Str<- strsplit(Vrg,"=",fixed=TRUE)[[1]] + V<- Str[1] + Tmp<- Str[2] + Tmp<- eval(parse(text=Tmp)) + Vmin<- Tmp[1]; Vmax<- Tmp[2] + Ndu<- 25 ; Ndv<- 25; Np<- c(50,50) + if(Nargs>=3){ + Ndu<- varargin[[2]] + Ndv<- varargin[[3]] + } + if(Nargs>=4){ + Np<- varargin[[4]] + if(mode(Np)=="numeric" && length(Np)==1){ + Np<- c(Np,Np) + } + } + Du<- (Umax-Umin)/Ndu + Dv<- (Vmax-Vmin)/Ndv + PL <- c()#PL <- [] + Assign("Vmin",Vmin,"Vmax",Vmax) + Trgstr<- Assign("t=c(Vmin,Vmax)") + PL <- list() + for (I in Looprange(0,Ndu)){ + U0 <- paste("(",as.character(Umin+I*Du),")",sep="") + Tmp<- gsub(U,U0,Xf,fixed=TRUE) + Tmp1<- gsub(V,"t",Tmp,fixed=TRUE) + Tmp<- gsub(U,U0,Yf,fixed=TRUE) + Tmp2<- gsub(V,"t",Tmp,fixed=TRUE) + Tmp<- gsub(U,U0,Zf,fixed=TRUE) + Tmp3<- gsub(V,"t",Tmp,fixed=TRUE) + Tmp<- paste("c(",Tmp1,",",Tmp2,",",Tmp3,")",sep="") + PD<- Spacecurve(Tmp,Trgstr,paste("N=",as.character(Np[2]))) + PL<- c(PL,list(PD)) + } + Assign("Umin",Umin,"Umax",Umax) + Trgstr<- Assign("t=c(Umin,Umax)") + for (J in Looprange(0,Ndv)){ + V0<- paste("(",as.character(Vmin+J*Dv),")",sep="") + Tmp<- gsub(V,V0,Xf,fixed=TRUE) + Tmp1<- gsub(U,"t",Tmp,fixed=TRUE) + Tmp<- gsub(V,V0,Yf,fixed=TRUE) + Tmp2<- gsub(U,"t",Tmp,fixed=TRUE) + Tmp<- gsub(V,V0,Zf,fixed=TRUE) + Tmp3<- gsub(U,"t",Tmp,fixed=TRUE) + Tmp<- paste("c(",Tmp1,",",Tmp2,",",Tmp3,")") + PD<- Spacecurve(Tmp,Trgstr,paste("N=",as.character(Np[1]))) + PL<- c(PL,list(PD)) + } + return(PL) +} + +################################### + +Skeletonparadata<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Out<- list() + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R<- R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Obj2L<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Tmp<- ProjcoordCurve(Op(I,ObjL)) + Obj2L<- c(Obj2L,list(Tmp)) + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- ProjcoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- Makeskeletondata(Obj2L,Plt2L,R,Eps2) + return(Out) +} + +################################ + +Skeletonpara3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R=R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- ProjcoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Obj3<- Op(I,ObjL) + Tmp<- ProjcoordCurve(Obj3) + Data<- Makeskeletondata(list(Tmp),Plt2L,R,Eps2) + for (J in Looprange(1,Mixlength(Data))){ + Gd<- Op(J,Data) + PtD<- c() + for (J in Looprange(1,Nrow(Gd))){ + Tmp<- Ptcrv(J,Gd) + Tmp1<- Invparapt(Tmp,Obj3) + Tmp1<- Op(1,Tmp1) + PtD<- c(PtD,Tmp1) + } + PtD<- matrix(PtD,ncol=3,byrow=TRUE) + Out<- c(Out,list(PtD)) + } + } + return(Out) +} + +################################# + +#100815 +Skeletonpersdata<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Out<- list() + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R<- R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Obj2L<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Tmp<- CameracoordCurve(Op(I,ObjL)) + Obj2L<- c(Obj2L,list(Tmp)) + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- CameracoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- Makeskeletonpersdata(Obj2L,Plt2L,R,Eps2) + return(Out) +} + +##################### +#100815 +Skeletonpers3data<- function(...){ + varargin<-list(...) + Nargs<- length(varargin) + Out<- list() + ObjL<- Flattenlist(varargin[[1]]) + Plt3L<- Flattenlist(varargin[[2]]) + R<- 0.075*1000/2.54/MilliIn + if(Nargs>2){ + R<- R*varargin[[3]] + } + Eps2<- 0.05 + if(Nargs>3){ + Eps2<- varargin[[4]] + } + Plt2L<- list() + for (I in Looprange(1,Mixlength(Plt3L))){ + Tmp<- CameracoordCurve(Op(I,Plt3L)) + Plt2L<- c(Plt2L,list(Tmp)) + } + Out<- list() + for (I in Looprange(1,Mixlength(ObjL))){ + Obj3<- Op(I,ObjL) + Tmp<- CameracoordCurve(Obj3) + Data<- Makeskeletonpersdata(list(Tmp),Plt2L,R,Eps2) + for (J in Looprange(1,Mixlength(Data))){ + Gd<- Op(J,Data) + PtD<- c() + for (J in Looprange(1,Nrow(Gd))){ + Tmp<- Gd[J,] + Tmp1<- Invperspt(Tmp,Obj3) + Tmp1<- Op(1,Tmp1) + PtD<- rbind(PtD,Tmp1) + } + Out<- c(Out,list(PtD)) + } + } + return(Out) +} + +################################# + +Spacecurve<- function(...){ + Eps<- 10^(-5) + varargin<-list(...) + Nargs<- length(varargin) + Fnstr<- varargin[[1]] + Rgstr<- varargin[[2]] + Range<- c(0,2*pi) + N<- 50 #Numpoints + E<- c() #Exclusions + D<- Inf #Discont (Changed) + for(I in Looprange(3,Nargs)){ + Tmp<- varargin[[I]] + StrV<- strsplit(Tmp,"=",fixed=TRUE) + StrV<- StrV[[1]] + Tmp1<- toupper(StrV[1]) + Lhs<- substr(Tmp1,1,1) + Str<- paste(Lhs,"=",StrV[2],sep="") + eval(parse(text=Str)) + } + StrV<- strsplit(Rgstr,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Vname<- StrV[1] + Rng<- eval(parse(text=StrV[2])) + } + else{ + Vname<- Rgstr + Rng<- c(XMIN,XMAX) + } + T1<- Rng[1]; T2<- Rng[2] + Dt<- (T2-T1) #180929 + Str<- gsub(Vname,"t",Fnstr) + Str=gsub("[","c(",Str,fixed=TRUE) #17.12.22(2lines) + Str=gsub("]",")",Str,fixed=TRUE) + if(abs(Dt/N)<Eps){ #180929 + t=T1 + P=eval(parse(text=Str)) + return(P) + } + P<- c() +# E<- sort(E,decreasing=FALSE) + E<- c(E,Inf) + E<- sort(E,decreasing=FALSE) + Ke<- 1 + for(jj in 1:(N+1)){ + t=T1+(jj-1)*Dt/N #180929 + Pa<- c() + if(t-E[Ke]< Eps){ + Pa<- eval(parse(text=Str)) + } + if(abs(t-E[Ke])<=Eps){ + if(length(P)>0 && P[Nrow(P),1]!=Inf){ + Pa<- c(Inf,Inf,Inf) + } + } + if(t-E[Ke]>Eps){ + Pa<- eval(parse(text=Str)) + Ke<- Ke+1 + } + if(length(Pa)>0){ + if(Pa[1]==Inf){ + P<- rbind(P,Pa) + }else if(length(P)==0){ + P<- rbind(c(),c(Pa)) + } + else{ + Tmp<- P[Nrow(P),] + if(Tmp[1]==Inf){ + P<- rbind(P,Pa) + } + else if( Norm(Tmp-Pa)<D){ + P<- rbind(P,Pa) + } + else{ + P<- rbind(P,c(Inf,Inf,Inf)) + P<- rbind(P,Pa) + } + } + } + } + rownames(P)<- 1:Nrow(P) # 10.08.16 + return(P) +} + +######################################## + +Spaceline<- function(...){ + varargin<- list(...) + Z<- c() + for(I in 1:length(varargin)){ + Data<- varargin[[I]] + if(Mixtype(Data)==1){ + J<- 1 + while (J<=Ncol(Data)){ + Tmp<- Data[J:(J+2)] + Z<-c(Z,Tmp) + J<- J+3 + } + next + } + if(Mixtype(Data)==3){ + Tmp<- list() + for(I in 1:Mixlength(Data)){ + Tmp<- c(Tmp,Op(I,Data)) + } + Data<- Tmp + } + for(J in 1:Mixlength(Data)){ + Tmp<- Op(J,Data) + Z<- c(Z,Tmp) + } + } + Z<- matrix(Z,ncol=3,byrow=TRUE) + return(Z) +} + +############################################### + +Xyzax3data<- function(Xrange,Yrange,Zrange){ + StrV<-strsplit(Xrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1) StrV<- StrV[2] + Tmp<- eval(parse(text=StrV)) + Px<- c(Tmp[1],0,0) + Qx<- c(Tmp[2],0,0) + StrV<-strsplit(Yrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1) StrV<- StrV[2] + Tmp<- eval(parse(text=StrV)) + Py<- c(0,Tmp[1],0) + Qy<- c(0,Tmp[2],0) + StrV<-strsplit(Zrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1) StrV<- StrV[2] + Tmp<- eval(parse(text=StrV)) + Pz<- c(0,0,Tmp[1]) + Qz<- c(0,0,Tmp[2]) + Out<- list(Spaceline(Px,Qx),Spaceline(Py,Qy),Spaceline(Pz,Qz)) + return(Out) +} + +################################### + +Xyzaxparaname<- function(...){ + varargin<- list(...) + Nargs<- length(varargin) + Eps<- 10.0^(-6) + Dr<- 0.19*1000/2.54/MilliIn + Tmp<- varargin[[Nargs]] + if(Nargs>1 && is.numeric(Tmp)){ + Dr<- Dr*Tmp + Nargs<- Nargs-1 + } + if(mode(varargin[[1]])=="character"){ + Xname<- "x" + Yname<- "y" + Zname<- "z" + Xrange<- varargin[[1]] + Yrange<- varargin[[2]] + Zrange<- varargin[[3]] + StrV<-strsplit(Xrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Xname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Px<- c(Tmp[1],0,0) + Qx<- c(Tmp[2],0,0) + StrV<-strsplit(Yrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Yname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Py<- c(0,Tmp[1],0) + Qy<- c(0,Tmp[2],0) + StrV<-strsplit(Zrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Zname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Pz<- c(0,0,Tmp[1]) + Qz<- c(0,0,Tmp[2]) + }else{ + Data<- varargin[[1]] + Xname<- "x"; Yname<- "y"; Zname<- "z" + if(Nargs>1){ + if(varargin[[2]]!=""){ + Xname<- varargin[[2]] + } + if(varargin[[3]]!=""){ + Yname<- varargin[[3]] + } + if(varargin[[4]]!=""){ + Zname<- varargin[[4]] + } + } + Tmp<- Op(1,Data) + Px<- Tmp[1,]; Qx<- Tmp[2,] + Tmp<- Op(2,Data) + Py<- Tmp[1,] + Qy<- Tmp[2,] + Tmp<- Op(3,Data) + Pz<- Tmp[1,] + Qz<- Tmp[2,] + } + Ph<- Parapt(Px); Qh<- Parapt(Qx); R<-Norm(Ph-Qh) + Kekka<- list() + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Xname) + } + Ph<- Parapt(Py); Qh<- Parapt(Qy); R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Yname) + } + Ph<- Parapt(Pz); Qh<- Parapt(Qz); R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Zname) + } +# return(Kekka) +} + +################################### + +Xyzaxpersname<- function(...){ + varargin<- list(...) + Eps<- 10.0^(-6) + Nargs<- length(varargin) + Dr<- 0.19*1000/2.54/MilliIn + Tmp<- varargin[[Nargs]] + if(Nargs>1 && mode(Tmp)=="numeric"){ + Dr<- Dr*Tmp + Nargs<- Nargs-1 + } + if(mode(varargin[[1]])=="character"){ + Xname<- "x" + Yname<- "y" + Zname<- "z" + Xrange<- varargin[[1]] + Yrange<- varargin[[2]] + Zrange<- varargin[[3]] + StrV<-strsplit(Xrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Xname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Px<- c(Tmp[1],0,0) + Qx<- c(Tmp[2],0,0) + StrV<-strsplit(Yrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Yname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Py<- c(0,Tmp[1],0) + Qy<- c(0,Tmp[2],0) + StrV<-strsplit(Zrange,"=",fixed=TRUE) + StrV<- StrV[[1]] + if(length(StrV)>1){ + Zname<- StrV[1] + StrV<- StrV[2] + } + Tmp<- eval(parse(text=StrV)) + Pz<- c(0,0,Tmp[1]) + Qz<- c(0,0,Tmp[2]) + }else{ + Data<- varargin[[1]] + Xname<- "x"; Yname<- "y"; Zname<- "z" + if(Nargs>1){ + if(varargin[[2]]!=""){ + Xname<- varargin[[2]] + } + if(varargin[[3]]!=""){ + Yname<- varargin[[3]] + } + if(varargin[[4]]!=""){ + Zname<- varargin[[4]] + } + } + Tmp<- Op(1,Data) + Px<- Tmp[1,]; Qx<- Tmp[2,] + Tmp<- Op(2,Data) + Py<- Tmp[1,] + Qy<- Tmp[2,] + Tmp<- Op(3,Data) + Pz<- Tmp[1,] + Qz<- Tmp[2,] + } + Ph<- Perspt(Px) + Qh<- Perspt(Qx) + R<- Norm(Ph-Qh) + Kekka<- list() + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Xname) + } + Ph<- Perspt(Py) + Qh<- Perspt(Qy) + R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Yname) + } + Ph<- Perspt(Pz) + Qh<- Perspt(Qz) + R<- Norm(Ph-Qh) + if(R>Eps){ + Ch<- Qh+Dr/R*(Qh-Ph) + Kekka<- c(Kekka,list(Pointdata(Ch))) + Expr(Ch,"c",Zname) + } +# return(Kekka) +} + +######################### +#100815 +Zparapt<- function(P){ + x<- P[1]; y<- P[2]; z<- P[3] + Out<- x*cos(PHI)*sin(THETA)+y*sin(PHI)*sin(THETA)+z*cos(THETA) + return(Out) +} + +######################### +#100815 +Zperspt<- function(P){ + 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 + return(X3) +} + +########################################## + + + +########################################## + +# Stat Package + +########################################## + +# 2010.04.12 + +# new + +# Htickmarklower, Vtickmarkleft, HtickmarklowerV +# VtickmarkleftV, Insertcom, Replacecom +# Maketexfile, Formatting +# Drwhistframe, Histplotdata, Drwhistplot + +Htickmarklower<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in Looprange(1, floor((XMAX-GENTEN[1])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((XMIN-GENTEN[1])/Dm),by=-1)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt,GENTEN[2]) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X,Y)) + Tmp2<- Unscaling(c(X,Y-2*MARKLEN)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X,Y-2*MARKLEN)) + Expr(Tmp,"s",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("s",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X,Y-2*MARKLEN)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X,Y)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +Vtickmarkleft<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + ArgsL<- varargin + if(mode(ArgsL[[1]])=="character"){ + Str<- ArgsL[[1]] + Tmp<- strsplit(Str,"m") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + I<- nchar(Tmp[1])+1 + } + else{ + I<- 0 + } + Tmp<- strsplit(Str,"n") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + J<- nchar(Tmp[1])+1 + } + else{ + J<- 0 + } + Tmp<- strsplit(Str,"r") + Tmp<- Tmp[[1]] + if(length(Tmp)>1){ + K=nchar(Tmp[1])+1 + } + else{ + K<- 0 + } + if(K>0){ + S<- substr(Str,K+1,nchar(Str)) + R<- as.numeric(S) + if(is.na(R)){ + R<- 1 + } + } + else{ + R<- 1 + K<- nchar(Str)+1 + } + if(J>0){ + S<- substr(Str,J+1,K-1) + Dn<- as.numeric(S) + if(is.na(Dn)){ + Dn<- 1 + } + } + else{ + Dn<- 1000 + J<- nchar(Str)+1 + } + S<- substr(Str,I+1,J-1) + Dm<- as.numeric(S) + if(is.na(Dm)){ + Dm<- 1 + } + ArgsL<- list() + for (I in 1:floor((YMAX-GENTEN[2])/Dm)){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + for (I in seq(-1,ceiling((YMIN-GENTEN[2])/Dm))){ + ArgsL<- Mixjoin(ArgsL,I*Dm) + if(I-floor(I/Dn)*Dn==0){ + Str<- as.character(I*Dm*R) + ArgsL<- Mixjoin(ArgsL,Str) + } + } + } + MemoriList<- list() + Memori<- list() + for (N in 1:length(ArgsL)){ + Dt<- ArgsL[[N]] + if(mode(Dt)=="numeric" && length(Dt)>1){ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(Dt) + next + } + if(mode(Dt)=="character"){ + Memori<- Mixjoin(Memori,Dt) + } + else{ + if(length(Memori)>0){ + MemoriList<- Mixjoin(MemoriList,list(Memori)) + } + Memori<- list(GENTEN[1],Dt) + } + } + MemoriList<- Mixjoin(MemoriList,list(Memori)) + for (N in 1:length(MemoriList)){ + Dt<- MemoriList[[N]] + Ndt<- length(Dt) + X=Op(1,Dt) + Y=Op(2,Dt) + Tmp<-Doscaling(c(X,Y)) + X<- Tmp[1] + Y<- Tmp[2] + Moji<- Op(Ndt,Dt) + Tmp1<- Unscaling(c(X,Y)) + Tmp2<- Unscaling(c(X-2*MARKLEN,Y)) + Fd<- Listplot(c(Tmp1,Tmp2)) + Drwline(Fd) + if(Ndt==3){ + Tmp<-Unscaling(c(X-2*MARKLEN,Y)) + Expr(Tmp,"w",Moji) + } + if(Ndt==4){ + Houkou<- Op(3,Dt) + Tmp<-grep("w",Houkou) + if(length(Tmp)>0){ + Tmp<-Unscaling(c(X-2*MARKLEN,Y)) + Expr(Tmp,Houkou,Moji) + } + else{ + Tmp<- Unscaling(c(X,Y)) + Expr(Tmp,Houkou,Moji) + } + } + cat("%\n",file=Wfile,append=TRUE) + } +} + +HtickmarklowerV<- function(Vec,digits=2,nsmall=2) +{ + for (I in 1:length(Vec)){ + Tmp<- Vec[I] + Htickmarklower(Tmp, Formatting(Tmp,digits,nsmall)) + } +} + +HtickLV<- function(...) +{ + HtickmarklowerV(...) +} + +VtickmarkleftV<- function(Vec,digits=2,nsmall=2) +{ + for (I in 1:length(Vec)){ + Tmp<- Vec[I] + Vtickmarkleft(Tmp, Formatting(Tmp,digits,nsmall)) + } +} + +VtickLV<- function(...) +{ + VtickmarkleftV(...) +} + +Insertcom<- function(CmdM,Npos,Str) +{ + if(is.matrix(CmdM)){ + Cmd<- CmdM + } + else{ + C<- paste("Cmd<- ",CmdM) + eval(parse(text=C)) + } + Out<- Cmd[Looprange(1,Npos-1),] + Out<- c(Out,Str) + Tmp<- Cmd[Looprange(Npos,nrow(Cmd)),] + Out<- c(Out,Tmp) + Out<- matrix(Out) + if(!is.matrix(CmdM)){ + C<- paste(CmdM,"<<- Out") + eval(parse(text=C)) + } + return(Out) +} + +Replacecom<- function(CmdM,Npos,Str) +{ + if(is.matrix(CmdM)){ + Cmd<- CmdM + } + else{ + C<- paste("Cmd<- ",CmdM) + eval(parse(text=C)) + } + Out<- Cmd[Looprange(1,Npos-1),] + Out<- c(Out,Str) + Tmp<- Cmd[Looprange(Npos+1,nrow(Cmd)),] + Out<- c(Out,Tmp) + Out<- matrix(Out) + if(!is.matrix(CmdM)){ + C<- paste(CmdM,"<<- Out") + eval(parse(text=C)) + } + return(Out) +} + +Deletecom<- function(CmdM,Npos) +{ + if(is.matrix(CmdM)){ + Cmd<- CmdM + } + else{ + C<- paste("Cmd<- ",CmdM) + eval(parse(text=C)) + } + Out<- Cmd[Looprange(1,Npos-1),] + Tmp<- Cmd[Looprange(Npos+1,nrow(Cmd)),] + Out<- c(Out,Tmp) + Out<- matrix(Out) + if(!is.matrix(CmdM)){ + C<- paste(CmdM,"<<- Out") + eval(parse(text=C)) + } + return(Out) +} + +Maketexfile<- function(commands="",texfile="") +{ + Openfile(texfile) + Execmd(commands) + Closefile() +} + +Formatting<- function(X,D=2,N=2) +{ + if(D>0){ + Xs <- format(X,digits=D,nsmall=N) + } + else{ + Xs<- as.character(X) + } + return(Xs) +} + +################################ + +Boxplotdata1 <-function(DataF1,CenterX,Width,...) +{ + Xr <- Width + Temp <- boxplot(DataF1[1],plot=FALSE) + Stats <- Temp$stats + rownames(Stats) <- c("Lhige","Q1","Q2","Q3","Uhige") + Out <- Temp$out + Lhige <- Stats["Lhige",1] + Uhige <- Stats["Uhige",1] + Q1 <- Stats["Q1",1] + Q2 <- Stats["Q2",1] + Q3 <- Stats["Q3",1] + CenterY <- (Q1+Q3)/2 + C <- c(CenterX,CenterY) + V <- c(0,(Q3-Q1)/2) + G1 <- Framedata(C,Xr/2,V[2]) # box + Temp1 <- c(0,Q1-Lhige) + Temp2 <- c(0,Uhige-Q3) + G2 <- Listplot(C-V,C-V-Temp1) # + G3 <- Listplot(C+V,C+V+Temp2) # + Temp3 <- c(Xr/4,0) + G4 <- Listplot(C-V-Temp1-Temp3,C-V-Temp1+Temp3) # + G5 <- Listplot(C+V+Temp2-Temp3,C+V+Temp2+Temp3) # + Temp4 <- c(0,Q3-Q2) + Temp5 <- c(Xr/2,0) + G6 <- Listplot(C+V-Temp4-Temp5,C+V-Temp4+Temp5) # + G7 <- list() + for(j in Looprange(1,length(Out))){ + G7 <- c(G7,list(c(CenterX, Out[j]))) + } + G7 <- G7[order(Out,decreasing=TRUE)] + list(median=G6,box=G1,uwhisker=G2,lwhisker=G3,lwp=G4,uwp=G5,outliers=G7) +} + +Boxplotdata2 <- function(Data,Ratio, ...) +{ + DataF<- Flattenlist(Data) # 11.07.21(from) + ymin<- Inf + ymax<- -Inf + for(J in 1:length(DataF)){ + Tmp<- DataF[[J]] + ymin<- min(ymin, min(Tmp)) + ymax<- max(ymax,max(Tmp)) + } # 11.07.21(until) + dy <- ymax-ymin + Setwindow(c(0,XMAX-XMIN),c(ymin-0.1*dy,ymax+0.1*dy)) + R1<- (YMAX-YMIN)/(XMAX-XMIN) + R<- Ratio/R1 + Setscaling(R) + Delta <- XMAX/length(DataF) + W <- 0.6*Delta + PdL <- list() + for(i in 1:length(DataF)){ # 11.07.21 + X <- (0.5+i-1)*Delta + G <- Boxplotdata1(DataF[i],X,W,...) + PdL <- c(PdL,list(G)) + } + G <- Framedata() + Tmp<- list(frame=G) + PdL <-c(PdL,list(Tmp)) + Epsi <-0 + Setwindow(c(XMIN-Epsi,XMAX+Epsi),c(YMIN-Epsi,YMAX+Epsi)) + return(PdL) +} + +Drwboxframe<-function(BoxDataL) +{ + Setorigin(c(XMIN,YMIN)) + Tmp<- Unscaling(c(0.2,0.2)) + Setwindow(c(XMIN-0.2,XMAX),c(YMIN-Tmp[2],YMAX)) + Hako<- BoxDataL$plotdata + title<- BoxDataL$title + cap<- BoxDataL$cap + ylab<- BoxDataL$ylab + if(mode(title)!="list") title<- list(title) + if(mode(cap)!="list") cap<- list(cap) + if(mode(ylab)!="list") ylab<- list(ylab) + if(length(title)==0) title<- list("") + if(length(title)==1) title<- c(title, list("n")) + if(length(title)==2) title<- c(title, list("")) + if(length(cap)==0) cap<- list("") + if(length(cap)==1) cap<- c(cap, list("n"),0) # 11.11.27 + if(length(cap)==2) cap<- c(cap, 0) # 11.11.27 + if(length(ylab)==0) ylab<- list("") + if(length(ylab)==1) ylab <- c(ylab, list("n")) + if(length(ylab)==2) ylab<- c(ylab, list("")) + Temp <- Hako[[length(Hako)]] + Drwline(Temp$frame) + Fontsize(cap[[2]]) + for(i in Looprange(1,length(Hako)-1)){ + Temp <- Hako[[i]] + attach(Temp) + Dashline(uwhisker,lwhisker) + Drwline(median,2) + Drwline(box,lwp,uwp) + Drwpt(outliers,0) + X <- uwhisker[1,1] + detach(Temp) + Htickmarklower(X) + if(nchar(cap[[1]])<1) next # 2011.03.08 + if(length(cap)==2 || cap[[3]]==0){ + pos<- 1 + if(length(cap)>=4) pos<- cap[[4]] + Tmp<- paste("s",as.character(pos),sep="") + Letter(c(X,YMIN),Tmp, Op(i,cap[[1]])) + } + else{ + rotate<- cap[[3]] + if(length(cap)==3){ + pos<- 0 + } + else{ + pos<- cap[[4]] + } + Temp1 <- rotate*pi/180 + Temp <- c(cos(Temp1),sin(Temp1)) + Letterrot(c(X,YMIN-pos),Temp,Op(i,cap[[1]])) + } + } + if(nchar(ylab[[1]])>0){ + Fontsize(ylab[[2]]) + Tmp1<- ylab[[1]] + Tmp3<- ylab[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Letter(c(XMIN, YMAX),"n2",Tmp1) + Fontsize("n") + } + if(nchar(title[[1]])>0){ + Fontsize(title[[2]]) + Tmp1<- title[[1]] + Tmp3<- title[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Letter(c((XMIN+XMAX)/2,YMAX),"n2",Tmp1) + } + Fontsize("n") +} + +Drwboxplot<- function(dataf,var,size, + title=list(""), cap=list(colnames(dataf)), + ylab=list(""), ptsize=5,plot=TRUE,...) + #Return : title,cap,ylab,commands,plotdata,info +{ + Tmp <- boxplot(dataf, plot=FALSE, ...) + Stats <- Tmp$stats + DataF<- Flattenlist(dataf) # 11.07.21(from) + ymin<- Inf + ymax<- -Inf + for(J in 1:length(DataF)){ + Tmp<- DataF[[J]] + ymin<- min(ymin, min(Tmp)) + ymax<- max(ymax,max(Tmp)) + } # 11.07.21(until) + Hako<- Boxplotdata2(dataf, size[2]/size[1], ...) + if(plot){ + Windisp(Hako) + } + Tmp<- Formatting(size[1]/(XMAX-XMIN),5,5) + unit<- paste(Tmp,"cm",sep="") + Setunitlen(unit) + Exstr<- c( + "","", + paste("Beginpicture(","'",unit,"')",sep=""), + paste("Setpt(",as.character(ptsize),")",sep=""), + "","", + paste("Drwboxframe(",var,")",sep=""), + paste("VtickLV(c(",as.character(ymin),",", as.character(ymax),"),0,0)",sep=""), + "","","","", + "Setpt(1)", + "Endpicture(0)" + ) + Exstr<- matrix(Exstr) + Xpos<- c() + for(i in Looprange(1,length(Hako)-1)){ + Temp <- Hako[[i]] + Temp1 <- Temp[[5]] + Xpos <- c(Xpos,Temp1[1,1]) + } + Info<- list(stats=Stats,window=matrix(c(XMIN,XMAX,YMIN,YMAX),nrow=2),xpos=Xpos) + Tmp<- paste(var,"<<- ", + "list(title=title,cap=cap,ylab=ylab,", + "commands=Exstr,plotdata=Hako,info=Info)",sep="") + eval(parse(text=Tmp)) +} + + +########################################### + +Histplotdata <- function(DataV,Ratio,freq=TRUE,densplot=FALSE,...) +# 10.12.07 freq +{ + Temp <- hist(DataV,plot=FALSE,...) + Breaks <- Temp$breaks + Counts <- Temp$counts + Density <- Temp$density + Mids <- Temp$mids + if(!freq){ + Data<- Density + } + else{ + Data<- Counts + } + Ghist <- list() + for(i in Looprange(1,length(Breaks)-1)){ + Tmp1 <- c(Breaks[i],Breaks[i+1]) + Tmp2 <- c(0,Data[i]) + G1 <- Framedata(Tmp1,Tmp2) #bar + Ghist <- c(Ghist,list(G1)) + } + Bin <- Breaks[2]-Breaks[1] + Eps <- 0.7*Bin # 0.7 times Bin + Temp1 <- c(min(Breaks)-Eps,max(Breaks)+Eps) # Put Eps at both sides + Temp2 <- c(0,max(Data)*1.02) + Setwindow(Temp1,Temp2) + Setorigin(c(Temp1[1],0)) + R1<- (YMAX-YMIN)/(XMAX-XMIN) + R<- Ratio/R1 + Setscaling(R) + VEps <- 0.05*(XMAX-XMIN)/5 + Temp1<- Temp1-c(VEps,0) + Temp2<- Temp2-1/R*c(VEps,0) + Setwindow(Temp1,Temp2) + Fpt <- c(Mids[1]-Bin,0) + Lpt <- c(Mids[length(Mids)]+Bin,0) + Fp <- matrix(Fpt,nrow=1) + for(i in Looprange(1,length(Mids))){ + Tmp <- c(Mids[i],Data[i]) + Fp <- rbind(Fp,Tmp) + } + Fp <- rbind(Fp,Lpt) + rownames(Fp)<- c(1:nrow(Fp)) + if(densplot){ + Temp <- density(DataV) + X <- matrix(Temp$x) + Y <- matrix(Temp$y) + Gdens <- cbind(X,Y) + } + else{ + Gdens <- list() + } + list(plotdata=list(histplot=Ghist,fpplot=list(Fp),densityplot=list(Gdens)), + breaks=Breaks,counts=Counts,density=Density,mids=Mids) +} + +Drwhistframe<-function(HistDataL) +{ + title<- HistDataL$title + xlab<- HistDataL$xlab + ylab<- HistDataL$ylab + if(mode(title)!="list") title<- list(title) + if(mode(xlab)!="list") cap<- list(xlab) + if(mode(ylab)!="list") cap<- list(ylab) + if(length(title)==0) title<- list("") + if(length(title)==1) title<- c(title, list("n")) + if(length(title)==2) title<- c(title, list("")) + if(length(xlab)==0) xlab<- list("") + if(length(xlab)==1) xlab<- c(xlab, list("n")) + if(length(xlab)==2) xlab<- c(xlab, list("")) + if(length(xlab)==3) xlab<- c(xlab, list(8)) + if(length(ylab)==0) ylab<- list("") + if(length(ylab)==1) ylab<- c(ylab, list("n")) + if(length(ylab)==2) ylab<- c(ylab, list("")) + if(nchar(title[[1]])>0){ + Fontsize(title[[2]]) + Tmp1<- title[[1]] + Tmp3<- title[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Letter(c((XMIN+XMAX)/2,YMAX),"n2",Tmp1) + Fontsize("n") + } + if(nchar(xlab[[1]])>0){ + Fontsize(xlab[[2]]) + Tmp1<- xlab[[1]] + Tmp3<- xlab[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Tmp4<- paste("s",as.character(xlab[[4]]),sep="") + Letter(c((XMIN+XMAX)/2,YMIN),Tmp4,Tmp1) + Fontsize("n") + } + if(nchar(ylab[[1]])>0){ + Fontsize(ylab[[2]]) + Tmp1<- ylab[[1]] + Tmp3<- ylab[[3]] + if(nchar(Tmp3)>0){ + Tmp1<- paste("{\\",Tmp3," ",Tmp1,"}",sep="") + } + Tmp<- Setorigin() + Letter(c(Tmp[1], YMAX),"n2",Tmp1) + Fontsize("n") + } + + Setax(2," ") + Setax(4," ") + Setax(6," ") +} + +Drwhistplot<- function(datav,var,size,freq=TRUE, + title=list(""), xlab=list(""), ylab=list(""), + plot=TRUE,densplot=FALSE,fpplot=TRUE,...) + #Output : title,xlab,ylab,commands,plotdata,info +{ + H <- Histplotdata(datav, size[2]/size[1], freq=freq,densplot=densplot,...) + Pd<- H$plotdata + Ghist <- list(histplot=Pd$histplot,densityplot=Pd$densityplot) # 10.12.07 + if(fpplot){ + Ghist<- c(Ghist,list(fpplot=Pd$fpplot)) + } + if(plot){ + Windisp(Ghist) + } + Tmp<- Formatting(size[1]/(XMAX-XMIN),5,5) + unit<- paste(Tmp,"cm",sep="") + Setunitlen(unit) + Infostr<- paste(var,"$info",sep="") + Brkstr<- paste(Infostr,"$breaks",sep="") + Midstr<- paste(Infostr,"$mids",sep="") + if(!freq){ + Digits<- ",2,2" + Denstr<- paste(Infostr,"$density",sep="") + } + else{ + Digits<- ",0,0" + Denstr<- paste(Infostr,"$counts",sep="") + } + + if(fpplot) Prefp<- "" else Prefp<- "#" + Exstr<- c( + "","", + paste("Beginpicture(","'",unit,"')",sep=""), + "","", + paste("Drwhistframe(",var,")",sep=""), + paste("HtickLV(",Midstr,",1,1)",sep=""), + paste("VtickLV(max(",Denstr,")",Digits,")",sep=""), + paste("Drwline(",var,"[['plotdata']]","$histplot)",sep=""), + paste(Prefp,"Dashline(",var,"[['plotdata']]","$fpplot)",sep=""), + paste("#Drwline(",var,"[['plotdata']]","$densityplot,2)",sep=""), + "","","","", + "Endpicture(1)" + ) + Exstr<- matrix(Exstr) + Info<- list(breaks=H$breaks,counts=H$counts,density=H$density,mids=H$mids, + window=matrix(c(XMIN,XMAX,YMIN,YMAX),nrow=2)) + Tmp<- paste(var,"<<- ", + "list(title=title,xlab=xlab,ylab=ylab,", + "commands=Exstr,plotdata=Ghist,info=Info)",sep="") + eval(parse(text=Tmp)) +} + +########################## +#17.09.30 + +Bezierpt<- function(t,Ptlist,Ctrlist){ + if(length(Ptlist)==6){ + P0=Ptlist[1:3] + P3=Ptlist[4:6] + P1=Ctrlist[1:3] + if(length(Ctrlist)==3){ + P2=P3 + flg3=0 + }else{ + P2=Ctrlist[4:6] + flg3=1 + } + }else{ + P0=Ptlist[1:2] + P3=Ptlist[3:4] + P1=Ctrlist[1:2] + if(length(Ctrlist)==2){ + P2=P3 + flg3=0 + }else{ + P2=Ctrlist[3:4] + flg3=1 + } + } + 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){ + Out=P7 + }else{ + Out=P9 + } + return(Out) +} + +Bezier<- function(...){ + varargin<- list(...) + Nargs=length(varargin) + Ptlist=varargin[[1]] + Ctrlist=varargin[[2]] + Num=10 + for(J in Looprange(3,Nargs)){ + Tmp=varargin[[J]] + K=strsplit(Tmp,'=',fixe=TRUE) + K=K[[1]] + Tmp1=substring(K[1],1,1) + Lhs=toupper(Tmp1) + if(Lhs=="N"){ + Num=eval(parse(text=K[2])) + } + } + if(length(Num)==1){ + Num=rep(Num,length(Ctrlist)) #17.10.08 + } + Out=c() + for(ii in Looprange(1,length(Ctrlist))){ + Tmp1=c(Ptlist[[ii]],Ptlist[[ii+1]]) + Tmp2=Ctrlist[[ii]] + if(ii==1){ + St=0 + }else{ + St=1 + } + for(J in Looprange(St,Num[ii])){ + Tmp=Bezierpt(J/Num[ii],Tmp1,Tmp2) + Out=Appendrow(Out,Tmp) + } + } + return(Out) +} + +####################### +# 17.10.02 + +Connectseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Pdata=varargin[[1]] + Eps=10^(-4) + if(Nargs>=2){ + Eps=varargin[[2]] + } + if(is.matrix(Pdata)){ + Din=Dataindex(Pdata) + tmp1=list() + for(J in 1:nrow(Din)){ + tmp=Pdata[Din[J,1]:Din[J,2],] + tmp1=c(tmp1,list(tmp)) + } + Pdata=tmp1 + } + PlotL=list(Op(1,Pdata)) + VI=Looprange(2,length(Pdata)) + while(length(VI)>0){ + Qd=Op(Length(PlotL),PlotL) + Ah=Op(1,Qd); Ao=Op(Length(Qd),Qd) + Flg=0 + for(J in 1:length(VI)){ + Tmp1=Op(VI[J],Pdata) + P=Op(1,Tmp1); Q=Op(Length(Tmp1),Tmp1) + if(Norm(P-Ao)<Eps){ + Tmp=Tmp1[Looprange(2,Length(Tmp1)),] + if(Length(Tmp)>0){ + Qd=Appendrow(Qd,Tmp) + } + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + if(Norm(Q-Ao)<Eps){ + Tmp=Tmp1[(nrow(Tmp1)-1):1,] + Qd=Appendrow(Qd,Tmp) + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + if(Norm(P-Ah)<Eps){ + Tmp=Tmp1[2:nrow(Tmp1),] + Qd=Appendrow(Tmp,Qd) + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + if(Norm(Q-Ah)<Eps){ + Tmp=Tmp1[(nrow(Tmp1)-1):1,] + Qd=Appendrow(Tmp,Qd) + PlotL[[length(PlotL)]]=Qd + VI=VI[-J] + Flg=1 + break + } + } + if(Flg==0){ + PlotL=c(PlotL,Pdata[VI[1]]) + VI=VI[-1] + } + } + return(PlotL) +} + +Implicitplot<- function(...){ #180402 + varargin=list(...) + Eps=10^(-6) #190511 + Nargs=length(varargin) + Func=varargin[[1]] + Xrng=varargin[[2]] + Yrng=varargin[[3]] + Mdv=50;Ndv=50 + for (I in Looprange(4,length(varargin))){ + Str= varargin[[I]] + Tmp=strsplit(Str,"=",fixed=TRUE) + Tmp=Tmp[[1]] + Tmp1=toupper(Tmp[1]) + if(substring(Tmp1,1,1)=="N"){ + Mdv=eval(parse(text=Tmp[2])) + if(length(Mdv)==1){ + Ndv=Mdv + }else{ + Ndv=Mdv[2] + Mdv=Mdv[1] + } + } + } + Tmp=strsplit(Func,"=",fixed=TRUE) + Tmp=Tmp[[1]] + if(length(Tmp)==1){ + Fn=Func + }else{ + Fn=paste(Tmp[1],"-(",Tmp[2],")",sep="") + } + Tmp=strsplit(Xrng,"=",fixed=TRUE) + Tmp=Tmp[[1]] + Varx=Tmp[1] + Rngx=eval(parse(text=Tmp[2])) + Tmp=strsplit(Yrng,"=",fixed=TRUE) + Tmp=Tmp[[1]] + Vary=Tmp[1] + Rngy=eval(parse(text=Tmp[2])) + Tmp=paste("Impfun<- function(",Varx,",",Vary,"){",Fn,"}",sep="") + eval(parse(text=Tmp)) + dx=(Rngx[2]-Rngx[1]) #180929 + dy=(Rngy[2]-Rngy[1]) #180929 + out=list() + for(jj in 1:Ndv){ + yval1=Rngy[1]+(jj-1)*dy/Ndv #180929 + yval2=Rngy[1]+jj*dy/Ndv #180929 + xval1=Rngx[1] + eval11=Impfun(xval1,yval1) + eval12=Impfun(xval1,yval2) + for(ii in 1:Mdv){ + xval2=Rngx[1]+ii*dx/Mdv #180929 + eval21=Impfun(xval2,yval1) + eval22=Impfun(xval2,yval2) + pL=list(c(xval1,yval1));vL=c(eval11) + pL=c(pL,list(c(xval2,yval1)));vL=c(vL,eval21) + pL=c(pL,list(c(xval2,yval2)));vL=c(vL,eval22) + pL=c(pL,list(c(xval1,yval2)));vL=c(vL,eval12) + pL=c(pL,list(c(xval1,yval1)));vL=c(vL,eval11) + qL=c() + for(kk in 1:4){ + if(abs(vL[kk])<=Eps){ + qL=Appendrow(qL,pL[[kk]]) + }else{ + if(vL[kk]>Eps){ + if(vL[kk+1]< -Eps){ +# tmp=1/(vL[kk]-vL[kk+1])* +# (-vL[kk+1]*pL[[kk]]+vL[kk]*pL[[kk+1]]) + tmp1=pL[[kk]]; tmp2=pL[[kk+1]] #190508from + for(ii in 1:20){ #190511 + tmp=(tmp1+tmp2)/2 + tmp3=Impfun(tmp[1],tmp[2]) + if(abs(tmp3)<=Eps){break} + if(tmp3>Eps){tmp1=tmp}else{tmp2=tmp} + } #190508to + qL=Appendrow(qL,tmp) + } + }else{ + if(vL[kk+1]>Eps){ +# tmp=1/(-vL[kk]+vL[kk+1])* +# (vL[kk+1]*pL[[kk]]-vL[kk]*pL[[kk+1]]) + tmp1=pL[[kk]]; tmp2=pL[[kk+1]] #190508from + for(ii in 1:20){ #190511 + tmp=(tmp1+tmp2)/2 + tmp3=Impfun(tmp[1],tmp[2]) + if(abs(tmp3)<=Eps){break} + if(tmp3>Eps){tmp2=tmp}else{tmp1=tmp} + } #190508to + qL=Appendrow(qL,tmp) + } + } + } + } + xval1=xval2 + eval11=eval21 + eval12=eval22 + if(Length(qL)==2){ + out=c(out,list(qL)) + } + } + } + if(length(out)>0){ + out=Connectseg(out) + } + if(length(out)==1){ + out=out[[1]] + } + return(out) +} + +######################### +# 17.10.06 + +Deqdata=function(deq,rng,initt,initf,Num){ + Eps=10^(-3) + inf=10^3 + tmp=strsplit(deq,"=")[[1]] + tmp1=gsub("`","",tmp[1],fixed=TRUE) + tmp1=substring(tmp1,3,nchar(tmp1)-1) + Xname=strsplit(tmp1,",")[[1]] + func=tmp[2] + for(J in 1:(length(Xname))){ + tmp1=paste("X[",as.character(J),"]",sep="") + func=gsub(Xname[J],tmp1,func,fixed=TRUE) + } + tmp=strsplit(rng,"=")[[1]] + tname=tmp[1] + tmp=eval(parse(text=tmp[2])) + t1=tmp[1] + t2=tmp[2] + tmp=paste("function(",tname,",X){",func,"}",sep="") + funP=eval(parse(text=tmp)) + tmp=paste("function(",tname,",X){-",func,"}",sep="") + funN=eval(parse(text=tmp)) + dt=(t2-t1)/Num + tt=initt + X0=initf + pdL=c(tt,X0) + for(J in Looprange(1,floor((t2-initt)/dt))){ + kl1=dt*funP(tt,X0) + kl2=dt*funP(tt+dt/2,X0+kl1/2) + kl3=dt*funP(tt+dt/2,X0+kl2/2) + kl4=dt*funP(tt+dt,X0+kl3) + X0=X0+(kl1+2*kl2+2*kl3+kl4)/6 + tt=initt+J*dt + tmp=c(tt,X0) + if(Norm(tmp)>inf){break} + pdL=Appendrow(pdL,tmp) + } + tt=initt + X0=initf + for(J in Looprange(1,floor((initt-t1)/dt))){ + kl1=dt*funN(tt,X0) + kl2=dt*funN(tt+dt/2,X0+kl1/2) + kl3=dt*funN(tt+dt/2,X0+kl2/2) + kl4=dt*funN(tt+dt,X0+kl3) + X0=X0+(kl1+2*kl2+2*kl3+kl4)/6 + tt=initt-J*dt + tmp=c(tt,X0) + if(Norm(tmp)>inf){break} + pdL=Appendrow(tmp,pdL) + } + pdL +} + +Deqplot=function(...){ + varargin=list(...) + deq=varargin[[1]] + rng=varargin[[2]] + initt=varargin[[3]] + initf=varargin[[4]] + Num=50 + Sel=c(1,2) + for(J in Looprange(5,length(varargin))){ + tmp1=varargin[[J]] + if(is.character(tmp1)){ + tmp=strsplit(tmp1,"=")[[1]] + Num=eval(parse(text=tmp[2])) + }else{ + SeL=tmp1 + } + } + pdL=Deqdata(deq,rng,initt,initf,Num) + pdL=pdL[,SeL] +} + + +############## obj ############### + +Openobj<- function(Fnm){ + OBJFMT<<- "%7.4f" + NPOINT<<- 0 + NNORM<<- 0 + OBJSCALE<<- 1 + OBJFIGNO<<- 0 + OBJJOIN<<- 0 + Wfile<<- Fnm + Tmp=grep(".obj",Fnm,fixed=TRUE) + if(length(Tmp)==0){ + if(nchar(Fnm)>0){ + Wfile<<- paste(Fnm,".obj",sep="") + } + } + cat("",file=Wfile,sep="") + Wfile +} + +Closeobj<- function(){ + Wfile="" +} + +Writeobjpoint<- function(P){ + X=sprintf(OBJFMT,P[1]*OBJSCALE) + Y=sprintf(OBJFMT,P[2]*OBJSCALE) + Z=sprintf(OBJFMT,P[3]*OBJSCALE) + Str=paste("v",X,Y,Z,sep=" ") + Printobjstr(Str) + NPOINT<<- NPOINT+1 + return(NPOINT) +} + +Printobjstr<- function(Str){ + cat(Str,"\n",sep="",file=Wfile,append=TRUE) +} + +Objname<- function(){ + if(OBJJOIN==0){ + OBJFIGNO<<- OBJFIGNO+1 + Gname=paste("ketfig",as.character(OBJFIGNO),sep="") + Printobjstr(paste("# ",Gname,sep="")) + Printobjstr(paste("g ",Gname,sep="")) + } +} + +Objjoin<- function(...){ + varargin=list() + if(length(varargin)>0){ + OBJJOIN<<- abs(sign(varargin[[1]])) + } + OBJJOIN +} + +Objsurf<- function(...){ #17.12.18 + Args<- list(...) + Nargs<- length(Args) + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Rf=Args[[1]] + N=2 + Mg=0; Ng=0 + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + U=Args[[N]] + Mg=length(U)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + }else{ + Ag=Args[N]; Bg=Args[N+1] + N=N+2 + } + }else{ + Tmp0=Args[[N]] + Tmp=grep("=",Tmp0,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1=strsplit(Tmp0,"=") + Tmp0=Tmp1[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + } + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + V=Args[[N]] + Ng=length(V)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + }else{ + Cg=Args[[N]]; Dg=Args[[N+1]] + N=N+2 + } + }else{ # the case of is.character(Args[[N]]) + Tmp0=Args[[N]] + Tmp=grep("=",Tmp0,fixed=TRUE) + if(length(Tmp)>0){ + Tmp2=strsplit(Tmp0,"=") + Tmp0=Tmp2[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + } + if(Mg==0){ + Mg=Args[[N]] + N=N+1 + U=c() + for(J in Looprange(1,Mg+1)){ + U=c(U,Ag+(J-1)/Mg*(Bg-Ag)) + } + } + if(Ng==0){ + Ng=Args[[N]] + V=c() + for(K in Looprange(1,Ng+1)){ + V=c(V,Cg+(K-1)/Ng*(Dg-Cg)) + } + } + Objname() + PL=list() + for(J in Looprange(1,Mg+1)){ + for(K in Looprange(1,Ng+1)){ + P=Rf(U[J],V[K]) + Np=Writeobjpoint(P) + PL=c(PL,list(c(P,Np))) + } + } + Idx=1+(Ng+1)*(0:Mg) + Pus=PL[Idx] + Idx=(Ng+1)*(1:(Mg+1)) + Pue=PL[Idx] + Idx=1:(Ng+1) + Pvs=PL[Idx] + Idx=((Ng+1)*Mg+1):((Ng+1)*(Mg+1)) + Pve=PL[Idx] + Printobjstr("vt 0 0") + Printobjstr("vt 1 0") + Printobjstr("vt 1 1") + Printobjstr("vt 0 1") + for(J in Looprange(1,Mg)){ + for(K in Looprange(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=="+"){ + Str=paste("f ",P1,"/1/",N1," ",P2,"/2/",N2," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P4,"/4/",N4,sep="") + }else{ + Str=paste("f ",P1,"/1/",N1," ",P4,"/4/",N4," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P2,"/2/",N2,sep="") + } + Printobjstr(Str) + } + } + list(U,V,Pus,Pue,Pvs,Pve) +} + +Objthicksurf<- function(...){ + Args=list(...) + Nargs=length(Args) + Sel=Args[[Nargs]]; Nargs=Nargs-1 #181128from + Selsurf=substring(Sel,1,1) + Selside=c("0","0","0","0") + Tmp=strsplit(Sel,"w");Tmp=Tmp[[1]] + if(length(Tmp)==2){ + Selside[[1]]=substr(Tmp[2],1,1) + } + Tmp=strsplit(Sel,"e");Tmp=Tmp[[1]] + if(length(Tmp)==2){ + Selside[[2]]=substr(Tmp[2],1,1) + } + Tmp=strsplit(Sel,"s");Tmp=Tmp[[1]] + if(length(Tmp)==2){ + Selside[[3]]=substr(Tmp[2],1,1) + } + Tmp=strsplit(Sel,"n");Tmp=Tmp[[1]] + if(length(Tmp)==2){ + Selside[[4]]=substr(Tmp[2],1,1) + } #181128to + Nfth=Args[[Nargs-2]] + Thick1=Args[[Nargs-1]] + Thick2=Args[[Nargs]] + Nargs=Nargs-3 + Rfth=Args[[1]] + N=2 + Mg=0; Ng=0 + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + U=Args[[N]] + Mg=length(U)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + }else{ + Ag=Args[[N]]; Bg=Args[[N+1]] + N=N+2 + } + }else{ + Tmp0=Args[[N]] + Tmp=strsplit(Tmp0,"=",fixe=TRUE) + if(length(Tmp)>0){ + Tmp0=Tmp[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Ag=Intab[1]; Bg=Intab[2] + N=N+1 + } + if(is.numeric(Args[[N]])){ + if(length(Args[[N]])>2){ + V=Args[[N]] + Ng=length(V)-1 + N=N+1 + }else if(length(Args[[N]])==2){ + Intab=Args[[N]] + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + }else{ + Cg=Args[[N]]; Dg=Args[[N+1]] + N=N+2 + } + }else{ + Tmp0=Args[[N]] + Tmp=strsplit(Tmp0,"=",fixed=TRUE) + if(length(Tmp)>0){ + Tmp0=Tmp[[1]][2] + } + Intab=eval(parse(text=Tmp0)) + Cg=Intab[1]; Dg=Intab[2] + N=N+1 + } + if(Mg==0){ + Mg=Args[[N]] + N=N+1 + U=c() + for(J in Looprange(1,Mg+1)){ + U=c(U,Ag+(J-1)/Mg*(Bg-Ag)) + } + } + if(Ng==0){ + Ng=Args[[N]] + V=c() + for(K in Looprange(1,Ng+1)){ + V=c(V,Cg+(K-1)/Ng*(Dg-Cg)) + } + } + Objname() + Join=OBJJOIN + OBJJOIN<<- 1 + F1=function(u,v){ + Rfth(u,v)+Thick1*Nfth(u,v) + } + F2=function(u,v){ + Rfth(u,v)+Thick2*Nfth(u,v) + } + Dt1=Objsurf(F1,U,V,Selsurf) + if(Selsurf=="+"){ + Tmp="-" + }else{ + Tmp="+" + } + Dt2=Objsurf(F2,U,V,Tmp); + Out=list(Dt1,Dt2); + if(Selside[[1]]!="0"){ + Dt=Objrecs(Op(3,Dt1),Op(3,Dt2),Selside[[1]]) + Out=c(Out,list(Dt)) + } + if(Selside[[2]]!="0"){ + Dt=Objrecs(Op(4,Dt1),Op(4,Dt2),Selside[[2]]) + Out=c(Out,list(Dt)) + } + if(Selside[[3]]!="0"){ + Dt=Objrecs(Op(5,Dt1),Op(5,Dt2),Selside[[3]]) + Out=c(Out,list(Dt)) + } + if(Selside[[4]]!="0"){ + Dt=Objrecs(Op(6,Dt1),Op(6,Dt2),Selside[[4]]) + Out=c(Out,list(Dt)) + } + OBJJOIN<<- Join +} + +Objrecs<- function(...){ + Eps=10^(-6) + Args=list(...) + Nargs=length(Args) + Tmp=Args[[1]] + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23until + PL1=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL1=c(PL1,list(Tmp[K,])) + } + } + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Objname() + for(J in Looprange(1,length(PL1))){ + P=PL1[[J]] + if((length(P)<4) || (P[4]==0)){ + Np=Writeobjpoint(P) + PL1[[J]]=c(P[1:3],Np) + } + } + Tmp=Args[[2]] + if((is.numeric(Tmp)) && (length(Tmp)==1)){ + Drv=Tmp + Len=Norm(Drv) + PL2=list() + for(J in Looprange(1,length(PL1))){ + Tmp=PL1[[J]] + P=Tmp[1:3]+Drv + Np=Writeobjpoint(P) + PL2=c(PL2,list(c(P[1:3],Np))) + if(J<length(PL1)){ + Vec=PL1[[J+1]]-PL1[[J]] + if(Norm(Vec)>Eps){ + Tmp1=Crossprod(Drv,Vec) + Tmp2=Crossprod(Tmp1,Vec) + Tmp3=Dotprod(Tmp2,Drv) + if(Tmp3<-Eps){ + Tmp2=-Tmp2 + } + Drv=Len/Norm(Tmp2)*Tmp2 + } + } + } + }else{ + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23until + PL2=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL2=c(PL2,list(Tmp[K,])) + } + } + for(J in Looprange(1,length(PL2))){ + P=PL2[[J]] + if((length(P)<4) || (P[4]==0)){ + Np=Writeobjpoint(P) + PL2[[J]]=c(P[1:3],Np) + } + } + } + Printobjstr("vt 0 0") + Printobjstr("vt 1 0") + Printobjstr("vt 1 1") + Printobjstr("vt 0 1") + for(J in Looprange(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=="+"){ + Str=paste("f ",P1,"/1/",N1," ",P2,"/2/",N2," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P4,"/4/",N4,sep="") + }else{ + Str=paste("f ",P1,"/1/",N1," ",P4,"/4/",N4," ",sep="") + Str=paste(Str,P3,"/3/",N3," ",P2,"/2/",N2,sep="") + } + Printobjstr(Str) + } + list(PL1,PL2) +} + +Objpolygon<- function(...){ + Eps=10^(-6) + Args=list(...) + Nargs=length(Args) + Tmp=Args[[1]] + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23until + PL=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL=c(PL,list(Tmp[K,])) + } + } + Sel=Args[[Nargs]]; Nargs=Nargs-1 + Objname() + for(J in Looprange(1,length(PL))){ + P=PL[[J]] + if((length(P)<4) || (P(4)==0)){ + Np=Writeobjpoint(P) + PL[[J]]=c(P[1:3],Np) + } + } + if(Nargs==1){ + Tmp=PL[[1]] + Cen=Tmp[1:3] + Nc=Tmp[4] + }else{ + Tmp=Args[[2]] + if(length(Tmp)==1){ + Tmp1=PL[[Tmp]] + Cen=Tmp1[1:3] + Nc=Tmp[4] + }else{ + Cen=Tmp + Nc=Writeobjpoint(Cen) + } + } + for(J in Looprange(1,length(PL))){ + if(J<length(PL)){ + Je=J+1 + }else{ + Je=1 + } + Pt1=Cen + PLj=PL[[J]]; PLje=PL[[Je]] + Pt2=PLj[1:3]; Pt3=PLje[1:3] + if(Norm(Crossprod(Pt2-Pt1,Pt3-Pt1))<Eps){ + next + } + P1=sprintf("%1d",Nc) + P2=sprintf("%1d",PLj[4]) + P3=sprintf("%1d",PLje[4]) + if(Sel=="+"){ + Str=paste("f",P1,P2,P3,"",sep=" ") + }else{ + Str=paste("f",P1,P3,P2,"",sep=" ") + } + Printobjstr(Str) + } + PL +} + +Objpolyhedron<- function(Vertex,Face){ + OBJFIGNO<<- OBJFIGNO+1 + Ninit=NPOINT + Objname() + for(N in Looprange(1,length(Vertex))){ + P=Vertex[[N]] + Np=Writeobjpoint(P) + Vertex[[N]]=c(P[1:3],Np) + } + for(N in Looprange(1,length(Face))){ + F=Face[[N]]+Ninit + Face[[N]]=F + Str="f" + for(J in Looprange(1,length(F))){ + P=sprintf("%1d",F[J]) + Str=paste(Str,P,sep=" ") + } + Printobjstr(Str) + } + list(Vertex,Face) +} + +Objcurve<- function(...){ + Eps=10^(-6) + Args=list(...) + Nargs=length(Args) + Tmp=Args[[1]] + PtL=Flattenlist(Tmp) + for(J in Looprange(1,length(PtL))){ #17.12.23from + Tmp=PtL[[J]] + if(!is.matrix(Tmp)){ + PtL[[J]]=matrix(Tmp,nrow=1) + } + } #17.12.23until + PL=list() + for(J in Looprange(1,length(PtL))){ + Tmp=PtL[[J]] + for(K in Looprange(1,nrow(Tmp))){ + PL=c(PL,list(Tmp[K,])) + } + } + Closed=Norm(PL[[length(PL)]]-PL[[1]])<Eps + Pstr="xy" + Tmp=Args[[Nargs]] + if(is.character(Tmp)){ + Pstr=Tmp + Nargs=Nargs-1 + } + Sz=0.1 + Np=4 + if(Nargs>=2){ + Sz=Args[[2]] + } + if(Nargs>=3){ + Np=Args[[3]] + } +# Assignadd("Sz",Sz) #180901 + if(Pstr=="xy"){ + Vz=c(0,0,1) + Fs=Assign("c(Sz*cos(t),Sz*sin(t),0)","Sz",Sz) #180901 + } + if(Pstr=="yz"){ + Vz=c(1,0,0) + Fs=Assign("c(0,Sz*cos(t),Sz*sin(t))","Sz",Sz) #180901 + } + if(Pstr=="zx"){ + Vz=c(0,1,0) + Fs=Assign("c(Sz*sin(t),0,Sz*cos(t))","Sz",Sz) #180901 + } + Gc0=Spacecurve(Fs,"t=c(0,2*pi)",paste("Num=",as.character(Np),sep="")) + P=PL[[1]]; Q=PL[[2]]; R=PL[[length(PL)-1]] + PQ1=Q-P + if(!Closed){ + PQ2=PQ1 + }else{ + PQ2=P-R + } + 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){ + Vj=Vz + } + Gc1=Rotate3data(Gc0,Vj,Theta) + CL=list(Translate3data(Gc1,P)) + for(J in Looprange(2,length(PL)-1)){ + P=PL[[J]]; Q=PL[[J+1]] + PQ2=Q-P + if(Norm(PQ2)<Eps){ + next + } + 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){ + Vj=Vp1 + } + Gc2=Rotate3data(Gc1,Vj,Theta) + CL=c(CL,list(Translate3data(Gc2,P))) + PQ1=PQ2 + Vp1=Vp2 + Gc1=Gc2 + } + if(!Closed){ + Vp2=(Q-P)/Norm(Q-P) + Theta=acos(min(Dotprod(Vp1,Vp2),1)) + Vj=Crossprod(Vp1,Vp2) + if(Norm(Vj)<Eps){ + Vj=Vp1 + } + Gc3=Rotate3data(Gc1,Vj,Theta) + CL=c(CL,list(Translate3data(Gc3,Q))) + } + Objname() + Join=Objjoin(); + Objjoin(1) + GL1=CL[[1]] + for(J in Looprange(2,length(CL))){ + GL2=CL[[J]] + Dt=Objrecs(GL1,GL2,"-") + GL1=Dt[[2]] + if(J==2){ + GL0=Dt[[1]] + } + } + if(!Closed){ + Objpolygon(CL[[1]],"-") + N=length(CL) + Objpolygon(CL[[N]],"+") + }else{ + Objrecs(GL1,GL0,"-") + } + Out=CL + OBJJOIN<<- Join +} + +Objsymb<- function(Symb,Thick,Face,Dir){ + for(J in Looprange(1,Length(Symb))){ + Objcurve(Op(J,Symb),Thick,Face,Dir) + } +} + +Symb3data<- function(Moji,Size,Kaiten,NV,Pos){ + if(is.character(Moji)){ + #Tmp=Symbdata(Moji) + # GY1=Tmp(2) + }else{ + GY1=Moji + } + 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){ + E1=c(1,0,0) + E2=c(0,1,0) + }else{ + E1=c(B,-A,0) + E2=c(-A*C,-B*C,A^2+B^2) + Tmp=matrix(c(E1,E2,NV),3,3) + D=det(Tmp) + if(D<0){ + E1=-E1 + } + E1=E1/Norm(E1) + E2=E2/Norm(E2) + } + Em<- function(X,Y){ + c(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) + Flattenlist(GY1) +} + +############## New Intersect 18.02.01 ############# + +Intersectline<- function(p1,v1,p2,v2){ + Eps0=10^(-5) + tmp=Dotprod(v1,v2) + tmp1=c(tmp,Norm(v1)^2) + tmp2=c(-Norm(v2)^2,-tmp) + tmp3=c(Dotprod(p2-p1,v2),Dotprod(p2-p1,v1)) + d=Crossprod(tmp1,tmp2) + tmp=abs(Crossprod(v1,v2)) + if(tmp>Eps0){ + dt=Crossprod(tmp3,tmp2) + ds=Crossprod(tmp1,tmp3) + t=dt/d + s=ds/d + pt=p1+v1*t + out=list(pt,t,s) + }else{ + tmp1=Crossprod(p2-p1,v1)/Norm(v1) + out=list(abs(tmp1)) + } + return(out) +} + +Intersectseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps0=10^(-4) + Eps1=0.01 + seg1=varargin[[1]] + seg2=varargin[[2]] + if(Nargs>2){Eps1=varargin[[3]]} + p1=Op(1,seg1); q1=Op(2,seg1) + p2=Op(1,seg2); q2=Op(2,seg2) + if((Norm(q1-p1)<Eps0)||(Norm(q2-p2)<Eps0)){ + out=list(-1) + }else{ + tmp=Intersectline(p1,q1-p1,p2,q2-p2) + if(length(Op(1,tmp))>1){ + pt=Op(1,tmp); t=Op(2,tmp); s=Op(3,tmp) + if((t*(t-1)<Eps0)&&(s*(s-1)<Eps0)){ + out=list(0,pt,t,s) + }else{ + t=min(max(t,0),1) + s=min(max(s,0),1) + tmp3=c(Norm(p1-p2),Norm(p1-q2),Norm(q1-p2),Norm(q1-q2)) #180317 + tmp1=c(Op(2,q2-p2),-Op(1,q2-p2)) + tmp=Intersectline(p1,tmp1,p2,q2-p2) + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-p1)) + } + } + tmp=Intersectline(q1,tmp1,p2,q2-p2) + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-q1)) + } + } + tmp1=c(Op(2,q1-p1),-Op(1,q1-p1)) + tmp=Intersectline(p2,tmp1,p1,q1-p1); + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-p2)) + } + } + tmp=Intersectline(q2,tmp1,p1,q1-p1); #180322 + if(length(Op(1,tmp))>1){ + if(Op(3,tmp)*(Op(3,tmp)-1)<Eps0){ + tmp3=c(tmp3,Norm(Op(1,tmp)-q2)) + } + } + out=list(min(tmp3),pt,t,s) + } + }else{ + dist=tmp[[1]] + tmp1=q1-p1 + n=c(tmp1[2],-tmp1[1])/Norm(tmp1) + pts=list() + tmp=Intersectline(p1,n,p2,q2-p2) + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p2+tmp[[3]]*q2 + pts=c(pts,list(list(tmp1,0,tmp[[3]]))) + } + tmp=Intersectline(q1,n,p2,q2-p2) + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p2+tmp[[3]]*q2 + pts=c(pts,list(list(tmp1,1,tmp[[3]]))) + } + tmp=Intersectline(p2,n,p1,q1-p1) + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p1+tmp[[3]]*q1 + pts=c(pts,list(list(tmp1,tmp[[3]],0))) + } + if((length(tmp)>1)&&(tmp[[3]]*(tmp[[3]]-1)<Eps0)){ + tmp1=(1-tmp[[3]])*p1+tmp[[3]]*q1 + pts=c(pts,list(list(tmp1,tmp[[3]],2))) + } + if(length(pts)==0){ + tmp1=min(Norm(p2-p1),Norm(q2-p1),Norm(p2-q1),Norm(q2-q1)) + out=list(tmp1) + }else{ + if(dist>Eps1){ + out=list(dist) + }else{ + tmp=c(); + for(j in 1:length(pts)){ + tmp=Appendrow(tmp,Op(1,pts[[j]])) + } + tmp1=sum(tmp[,1])/(length(pts)) + tmp2=sum(tmp[,2])/(length(pts)) + tmp3=c(tmp1,tmp2) + tmp=Nearestpt(tmp3,seg1) + tmp1=tmp[[2]] + tmp=Nearestpt(tmp3,seg2) + tmp2=tmp[[2]] + out=list(dist,tmp3,tmp1,tmp2) + } + } + } + } + return(out) +} + +Osplineseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps=10^(-2) + Eps0=10^(-6) + Ptlist=varargin[[1]] + Numstr="Num=20" + if(Nargs>1){ + Numstr=varargin[[2]] + } + p0=Op(1,Ptlist); p1=Op(2,Ptlist); p2=Op(3,Ptlist); p3=Op(4,Ptlist) + tmp=Norm(p2-p0)*Norm(p3-p1) + tmp=1+sqrt((1+Dotprod(p2-p0,p3-p1)/tmp)/2) + cc=4*Norm(p2-p1)/3/(Norm(p2-p0)+Norm(p3-p1))/tmp + pQ=p1+cc*(p2-p0) + pR=p2+cc*(p1-p3) + ctrL=list(c(pQ,pR)) + out=Bezier(list(p1,p2),ctrL,Numstr) + return(out) +} + +Intersectpartseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + crv1=varargin[[1]] + crv2=varargin[[2]] + ii=varargin[[3]] + jj=varargin[[4]] + Eps1=varargin[[5]] + Eps2=varargin[[6]] + Dist=10*Eps2 + if(Nargs>6){Dist=varargin[[7]]} + Eps00=10^(-8) + Eps0=10^(-4) + out=list() + seg1=Listplot(Op(ii,crv1),Op(ii+1,crv1)) + seg2=Listplot(Op(jj,crv2),Op(jj+1,crv2)) + tmp1=Op(2,seg1)-Op(1,seg1) + tmp2=Op(2,seg2)-Op(1,seg2) + snang=abs(Crossprod(tmp1,tmp2))/(Norm(tmp1)*Norm(tmp2)) + tmp=Intersectseg(seg1,seg2,Eps1) + dst=Op(1,tmp) + if(dst<Eps0){ + out=list(Op(2,tmp),ii+Op(3,tmp),jj+Op(4,tmp),dst,snang) + }else{ + if(dst<Eps2){ + if((Length(crv1)==2)||(Norm(Op(2,seg1)-Op(1,seg1))>Dist-Eps0)){ + os1=seg1 + }else{ + p1=Op(1,seg1); p2=Op(2,seg1) + if(ii==1){ + p3=Op(3,crv1) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p0=Reflectdata(p3,c((p1+p2)/2,tmp)) + }else{ + if(ii==Length(crv1)-1){ + p0=Op(ii-1,crv1) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p3=Reflectdata(p0,c((p1+p2)/2,tmp)) + }else{ + p0=Op(ii-1,crv1); p3=Op(ii+2,crv1) + } + } + os1=Osplineseg(list(p0,p1,p2,p3)) + } + if((Length(crv2)==2)||(Norm(Op(2,seg2)-Op(1,seg2))>Dist-Eps0)){ + os2=seg2 + }else{ + p1=Op(1,seg2); p2=Op(2,seg2) + if(jj==1){ + p3=Op(3,crv2) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p0=Reflectdata(p3,c((p1+p2)/2,tmp)) + }else{ + if(jj==Length(crv2)-1){ + p0=Op(jj-1,crv2) + tmp=p2-p1 + tmp=(p1+p2)/2+c(Op(2,tmp),-Op(1,tmp)) + p3=Reflectdata(p0,c((p1+p2)/2,tmp)) + }else{ + p0=Op(jj-1,crv2); p3=Op(jj+2,crv2) + } + } + os2=Osplineseg(list(p0,p1,p2,p3)) + } + tmp2=list() + for(kk in Looprange(1,Length(os1)-1)){ + for(ll in Looprange(1,Length(os2)-1)){ + seg1=Listplot(Op(kk,os1),Op(kk+1,os1)) + seg2=Listplot(Op(ll,os2),Op(ll+1,os2)) + tmp=Intersectseg(seg1,seg2,Eps1) + if((Op(1,tmp)<Eps1)&&(length(tmp)>1)){ #18.02.05 + if(Op(1,tmp)<dst+Eps00){ + dst=Op(1,tmp) + tmp3=list() + for( nn in Looprange(1,length(tmp2))){ + if(Op(1,tmp2[[nn]])<dst){ + tmp3=c(tmp3,list(tmp2[[nn]])) + } + } + tmp2=c(tmp3,list(list(dst,Op(2,tmp)))) + } + } + } + } + if(length(tmp2)>0){ + tmp1=c() + for(nn in Looprange(1,length(tmp2))){ + tmp1=Appendrow(tmp1,Op(2,tmp2[[nn]])) + } + tmp=sum(tmp1[,1])/length(tmp2) + tmp=c(tmp,sum(tmp1[,2])/length(tmp2)) + out=list(tmp) + p1=Op(ii,crv1); p2=Op(ii+1,crv1) + tmp=c(Op(2,p2-p1),-Op(1,p2-p1)) + tmp=Intersectline(Op(1,out),tmp,p1,p2-p1) + tmp=min(max(Op(3,tmp),0),1) + out=c(out,list(ii+tmp)) + p1=Op(jj,crv2); p2=Op(jj+1,crv2) + tmp=c(Op(2,p2-p1),-Op(1,p2-p1)) + tmp=Intersectline(Op(1,out),tmp,p1,p2-p1) + tmp=min(max(Op(3,tmp),0),1) + out=c(out,list(jj+tmp,dst,snang)) + } + } + } + return(out) +} + +if(1==0){ #start of skip + +Collectnear<- function(ptdL,Eps2){ + gL=list(Op(1,ptdL)) + rL=ptdL[Looprange(2,length(ptdL))] #18.02.07 + for( ii in Looprange(1,length(ptdL)-1)){ + numL=c() + for(jj in Looprange(1,length(rL))){ + tmp1=100 + for(kk in Looprange(1,length(gL))){ + tmp=Norm(Op(1,gL[[kk]])-Op(1,rL[[jj]])) + if(tmp<tmp1){tmp1=tmp} + } + if(tmp1<Eps2){numL=c(numL,jj)} + } + if(length(numL)==0){ + break + }else{ + gL=c(gL,rL[numL]) #18.02.05 + tmp=setdiff(1:(length(rL)),numL) + rL=rL[tmp] + } + } + return(list(gL,rL)) +} + +}# end of skip + +Collectsameseg<- function(ptdL){ + Eps00=10^(-8) + if(length(ptdL)==0){ + gL=list();rL=list() + }else{ + tmp1md=ptdL[1] + rL=ptdL[Looprange(2,length(ptdL))] + tmp1=tmp1md[[1]] + kk=floor(Op(2,tmp1)) + if(Op(2,tmp1)<kk+Eps00){ + s1=kk-1-Eps00; e1=s1+2+2*Eps00 + }else{ + s1=kk-Eps00; e1=s1+1+2*Eps00 + } + kk=floor(Op(3,tmp1)) + if(Op(3,tmp1)<kk+Eps00){ + s2=kk-1-Eps00; e2=s2+2+2*Eps00 + }else{ + s2=kk-Eps00; e2=s2+1+2*Eps00 + } + diffL=c() + for(ii in Looprange(1,length(rL))){ + tmp=rL[[ii]] + tmp1=Op(2,tmp);tmp2=Op(3,tmp) + if((tmp1>s1)&&(tmp1<e1)&&(tmp2>s2)&&(tmp2<e2)){ + tmp1md=c(tmp1md,list(tmp)) + }else{ + diffL=c(diffL,ii) + } + } + tmp=c() + for(ii in Looprange(1,length(tmp1md))){ + tmp=c(tmp,Op(4,tmp1md[[ii]])) + } + dst=min(tmp) + gL=list() + for(ii in Looprange(1,length(tmp1md))){ + tmp=tmp1md[[ii]] + if(Op(4,tmp)<dst+Eps00){ + gL=c(gL,list(tmp)) + } + } + tmp1=rL + rL=rL[diffL] + } + return(list(gL,rL)) +} + +Groupnearpt<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps1=varargin[[Nargs]] + plist=varargin[[1]] + qlist=varargin[[2]] + if(!is.list(qlist)){ + qlist=plist + plist=list() + } + if(length(qlist)==0){ + return(plist) + } + pt=qlist[[1]] + qlist=qlist[Looprange(2,length(qlist))] + if(length(plist)==0){ + plist=list(matrix(pt,nrow=1)) + }else{ + flg=0 + for(ii in Looprange(1,length(plist))){ + gL=plist[[ii]] + for(jj in Looprange(1,Length(gL))){ + if(Norm(Op(jj,gL)-pt)<Eps1){ + flg=1 + break + } + } + if(flg==1){ + plist[[ii]]=Appendrow(gL,pt) + break + } + } + if(flg==0){ + plist=c(plist,list(matrix(pt,nrow=1))) + } + } + out=Groupnearpt(plist,qlist,Eps1) + return(out) +} + +IntersectcurvesPp<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Eps0=10^(-4) + Eps1=0.01 +# Eps2=0.05 + Eps2=0.1 + Dist=10*Eps2 + if(Nargs>2){Eps1=varargin[[3]]} + if(Nargs>3){Eps2=varargin[[4]]} + if(Nargs>4){Dist=varargin[[5]]} + tmp1=varargin[[1]] + crv1=matrix(Op(1,tmp1),nrow=1) + for(ii in Looprange(2,Length(tmp1))){ + tmp=Op(Length(crv1),crv1) + if(Norm(tmp-Op(ii,tmp1))>Eps0){ + crv1=Appendrow(crv1,Op(ii,tmp1)) + } + } + tmp2=varargin[[2]] + crv2=matrix(Op(1,tmp2),nrow=1) + for(ii in Looprange(2,Length(tmp2))){ + tmp=Op(Length(crv2),crv2) + if(Norm(tmp-Op(ii,tmp2))>Eps0){ + crv2=Appendrow(crv2,Op(ii,tmp2)) + } + } + if(Length(crv1)!=Length(crv2)){ + self=0 + }else{ + self=1 + for(ii in Looprange(1,Length(crv1))){ + if(Norm(Op(ii,crv1)-Op(ii,crv2))>0){ + self=0 + break + } + } + } + out=list() + for(ii in Looprange(1,Length(crv1)-1)){ + if(self==0){ + loopL=Looprange(1,Length(crv2)-1) + }else{ + loopL=Looprange(ii+2,Length(crv2)-1) + } + for(jj in loopL){ + tmp=Intersectpartseg(crv1,crv2,ii,jj,Eps1,Eps2,Dist) + if(length(tmp)>1){ #18.02.05 + if(length(out)==0){ + out=list(tmp) + }else{ + tmp1=Op(length(out),out) + if(Norm(Op(1,tmp1)-Op(1,tmp))>Eps1){ + out=c(out,list(tmp)) + } + } + if(self==1){ + tmp=list(Op(1,tmp),Op(3,tmp),Op(2,tmp),Op(4,tmp),Op(5,tmp)) + out=c(out,list(tmp)) + } + } + } + } + tmp2=out + out=list() + tmp1=tmp2 + for(ii in Looprange(1,length(tmp2))){ + tmp=Collectsameseg(tmp1) + out=c(out,list(Op(1,tmp))) + if(length(Op(2,tmp))==0){ + break + }else{ + tmp1=Op(2,tmp) + } + } + for(ii in Looprange(1,length(out))){ + tmp1=Op(ii,out) + if(length(tmp1)==1){ + out[[ii]]=Op(1,tmp1) + }else{ + tmp=c() + for(jj in Looprange(1,length(tmp1))){ + tmp=c(tmp,Op(4,tmp1[[jj]])) + } + dst=min(tmp) + tmp=c() + for(jj in Looprange(1,length(tmp1))){ + if(Op(4,tmp1[[jj]])<dst+Eps0){ + tmp=c(tmp,Op(1,tmp1[[jj]])) + } + } + tmp=matrix(tmp,ncol=2,byrow=TRUE) + tmp=c(sum(tmp[,1]),sum(tmp[,2]))/Length(tmp) + tmp2=list(tmp) + tmp=Nearestpt(Op(1,tmp2),crv1) + tmp2=c(tmp2,list(Op(2,tmp))) + tmp=Nearestpt(Op(1,tmp2),crv2) + tmp2=c(tmp2,list(Op(2,tmp))) + tmp2=c(tmp2,list(list(dst,Op(5,tmp1[[1]])))) + out[[ii]]=tmp2 + } + } + return(out) +} + +Intersectcurves<- function(...){ + dtL=IntersectcurvesPp(...) + out=list() + for(jj in Looprange(1,length(dtL))){ + out=c(out,list(Op(1,dtL[[jj]]))) + } + return(out) +} + +############## end of New Intersect ############# + +############## New Enclosing2 ############# + +Enclosing2<- function(...){ + varargin=list(...) + Nargs=length(varargin) + plist=varargin[[1]] + Eps0=10^(-5) + epspara=1; #180707 + Eps1=0.01 + Eps2=0.1 + Start=c() + flg=0 + for(ii in Looprange(2,Nargs)){ + tmp=varargin[[ii]] + if(length(tmp)>1){ + Start=tmp + }else{ + if(flg==0){epspara=tmp} + if(flg==1){Eps1=tmp} + if(flg==2){Eps2=tmp} + flg=flg+1 + } + } + flg=0 + AnsL=c() + if(length(plist)==1){ + Fdata=plist[[1]] + tmp1=Op(1,Fdata) + tmp2=Op(Length(Fdata),Fdata) + if(Norm(tmp1-tmp2)<Eps0){ + AnsL=Fdata + }else{ + AnsL=Appendrow(Fdata,tmp1) + } + flg=1 + } + if(flg==0){ + Fdata=Op(1,plist) + Gdata=Op(length(plist),plist) + KL=IntersectcurvesPp(Fdata,Gdata) + if(length(KL)==0){ + tmp1=Op(Length(Gdata),Gdata) + tmp2=Op(1,Fdata) + tmp=Listplot(tmp1,tmp2) + plist=c(plist,list(tmp)) + Start=tmp2 + tst=1 + }else{ + if(length(KL)==1){ + tmp=Op(1,KL) + tst=Op(2,tmp) + Start=Op(1,tmp) #180706 + } + if(length(KL)>1){ + KL=Quicksort(KL,2) #180706from + if(length(Start)==0){ + tmp=Op(1,KL) + tst=Op(2,tmp) + Start=Op(1,tmp) + }else{ + tmp=c() + tmp1=list() + for(ii in Looprange(1,length(KL))){ + tmp2=Op(1,KL[[ii]]) + flgsame=0 #180717from + for(jj in Looprange(1,length(tmp1))){ + if(Norm(tmp2-Op(jj,tmp1))<Eps1){ + flgsame=1 + break + } + } + if(flgsame==0){ + tmp=c(tmp,Norm(Op(1,KL[[ii]])-Start)) + tmp1=c(tmp1,list(tmp2)) + } #180717to + } + tmp=order(tmp) + tmp=Op(tmp[1],KL) + tst=Op(2,tmp) + Start=Op(1,tmp)#180706to + } + } + } + } + if(flg==0){ + t1=tst + p1=Pointoncurve(t1,Fdata)#180713 + for(nn in Looprange(1,length(plist))){ + Fdata=Op(nn,plist) + if(nn==length(plist)){ + nxtno=1 + }else{ + nxtno=nn+1 + } + Gdata=Op(nxtno,plist) + KL=IntersectcurvesPp(Fdata,Gdata) + if(length(KL)==0){ + tmp=matrix(Op(Length(Fdata),Fdata),nrow=1) #18.02.02from + Gdata=Appendrow(tmp,Gdata) + plist[[nxtno]]=Gdata + t2=Length(Fdata) + ss=1 #18.02.02to + }else{ +# KL=Quicksort(KL,2); #180706from +# for(j in Looprange(1,length(KL))){ +# tmp1=t1+epspara/50*Length(Fdata)#180713(2lines) +# tmp2=Op(2,KL[[j]]) +# if((tmp2>tmp1)||((tmp2>t1)&&(Norm(Op(3,KL[[j]])-p1)>Eps1))){ +# break +# } #180711,16 +# } +# t2=Op(2,KL[[j]]) +# p2=Pointoncurve(t2,Fdata)#180713 +# ss=Op(3,KL[[j]])# 180706to + tmp=c() #180711from + for(j in Looprange(1,length(KL))){ + tmp=c(tmp,Op(2,KL[[j]])) + } + tmp1=order(tmp) + tmp2=KL + KL=list() + for(j in tmp1){ + tmp=tmp2[[j]] + tmp3=t1+epspara/50*Length(Fdata) + tmp4=Op(2,tmp) + if((tmp4>tmp3)||((tmp4>t1)&&(Norm(Op(1,tmp)-p1)>Eps1))){ + KL=c(KL,list(tmp)) + } + } + t2=Op(2,KL[[1]]) + ss=Op(3,KL[[1]]) #180711from + if(abs(t2-t1)<Eps0){ + if(length(KL)>1){ + tmp=Op(2,KL) + t2=Op(2,tmp) + ss=Op(3,tmp) + }else{ + } + } + } + if(flg==0){ + tmp=Partcrv(t1,t2,Fdata) + if(nn==1){ + AnsL=tmp + }else{ + tmp=tmp[2:Length(tmp),] + AnsL=Appendrow(AnsL,tmp) + } + } + t1=ss + p1=Pointoncurve(t1,Gdata)#180713 + } + } + return(AnsL) +} + +############## end of Enclosing2 ############# + +############## start of surface drawing ############# + +Fullformfunc<- function(FdL){ + ADDPOINT<<- list() #18.02.19 + Out=list(Op(1,FdL)) + N=length(FdL) + for(Jrg in Looprange(1,N)){ + Tmp=grep("c(",Op(Jrg,FdL),fixed=TRUE) + if(length(Tmp)>0){ + break + } + } + Urg=Stripblanks(Op(Jrg,FdL)) + Tmp=strsplit(Urg,"=",fixed=TRUE) + UNAME<<- Tmp[[1]][1] + URNG<<- eval(parse(text=Tmp[[1]][2])) + Urg=paste(UNAME,"=c(",sprintf("%6.7f",URNG[1]),",", + sprintf("%6.7f",URNG[2]),")",sep="") + Vrg=Stripblanks(Op(Jrg+1,FdL)) + Tmp=strsplit(Vrg,"=",fixed=TRUE) + VNAME<<- Tmp[[1]][1] + VRNG<<- eval(parse(text=Tmp[[1]][2])) + Vrg=paste(VNAME,"=c(",sprintf("%6.7f",VRNG[1]),",", + sprintf("%6.7f",VRNG[2]),")",sep="") + if(Jrg==2){ + Xf=UNAME + Yf=VNAME + Tmp=Stripblanks(Op(1,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Zf=Tmp[[1]][2] + Tmp=list(UNAME,VNAME,Zf,Urg,Vrg) + Out=c(Out,Tmp) + }else if(Jrg==4){ + Tmp=Stripblanks(Op(1,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Zf=Tmp[[1]][2] + Tmp=Stripblanks(Op(2,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Xname=Tmp[[1]][1] + Xf=Tmp[[1]][2] + Tmp=Stripblanks(Op(3,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Yname=Tmp[[1]][1] + Yf=Tmp[[1]][2] + Tmp=gsub(Xname,paste("(",Xf,")",sep=""),Zf,fixed=TRUE) + Zf=gsub(Yname,paste("(",Yf,")",sep=""),Tmp,fixed=TRUE) + Tmp=list(Xf,Yf,Zf,Urg,Vrg) + Out=c(Out,Tmp) + }else{ + Tmp=Stripblanks(Op(2,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Xf=Tmp[[1]][2] + Tmp=Stripblanks(Op(3,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Yf=Tmp[[1]][2] + Tmp=Stripblanks(Op(4,FdL)) + Tmp=strsplit(Tmp,"=",fixed=TRUE) + Zf=Tmp[[1]][2] + Tmp=list(Xf,Yf,Zf,Urg,Vrg) + Out=c(Out,Tmp) + } + tmp=paste("Xfunc<<- function(",UNAME,",",VNAME,"){",Xf,"}",sep='') + eval(parse(text=tmp)) + tmp=paste("Yfunc<<- function(",UNAME,",",VNAME,"){",Yf,"}",sep='') + eval(parse(text=tmp)) + tmp=paste("Zfunc<<- function(",UNAME,",",VNAME,"){",Zf,"}",sep='') + eval(parse(text=tmp)) + tmp=paste("XYZfunc<<- function(",UNAME,",",VNAME,"){",sep='') + tmp=paste(tmp,"c(",Xf,",",Yf,",",Zf,")}",sep='') + eval(parse(text=tmp)) + XYZstr<<- c(Xf,Yf,Zf) + DRWS<<- "enws" + BdyL=list() + for(I in Looprange(Jrg+2,length(FdL))){ + Tmp=Op(I,FdL) + if(is.character(Tmp)){ + if(nchar(Tmp)==0){ + Tmp=" " + } + DRWS<<- list(Tmp) + } + if((is.numeric(Tmp))&&(Length(Tmp)>1)){ + BdyL=list(Tmp) + } + } + BDYL<<- BdyL + Tmp=c(DRWS,BDYL) + Out=c(Out,Tmp) + return(Out) +} + +Addpoints<- function(ptlist){ + ADDPOINT<<- ptlist +} + +Makexybdy<- function(Np){ + Eps0=10^(-4) + Xystr=XYZstr[1:2] + Umin=URNG[1]; Umax=URNG[2] + Vmin=VRNG[1]; Vmax=VRNG[2] + Cflg=0 + EhL=list() + Tmp=grep("e",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umax),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + Tmp=grep("n",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmax),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Cflg>0){ + Tmp1=Op(length(EhL),EhL) + Tmp=Joincrvs(Tmp1,Tmp) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + Tmp1=EhL[Looprange(1,length(EhL)-1)] + EhL=c(Tmp1,Tmp) + }else{ + Cflg=0 + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + } + Tmp=grep("w",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umin),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Cflg>0){ + Tmp1=Op(length(EhL),EhL) + Tmp=Joincrvs(Tmp1,Tmp) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + Tmp1=EhL[Looprange(1,length(EhL)-1)] + EhL=c(Tmp1,list(Tmp)) + }else{ + Cflg=0 + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + } + Tmp=grep("s",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:2){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmin),")",sep=""),Xystr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1])) + Tmp=Paramplot(Tmp1,Tmp2,Tmp3) + if(Cflg>0){ + Tmp1=Op(length(EhL),EhL) + Tmp=Joincrvs(Tmp1,Tmp) + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp1=EhL[Looprange(1,length(EhL)-1)] + } + Tmp1=EhL[Looprange(1,length(EhL)-1)] + EhL=c(Tmp1,list(Tmp)) + }else{ + Cflg=0 + if(Norm(Op(1,Tmp)-Op(Length(Tmp),Tmp))<Eps0){ + Cflg=1 + Tmp[Length(Tmp),]=Tmp[1,] + } + EhL=c(EhL,list(Tmp)) + } + } + return(EhL) +} + +Partitionseg<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Fig=varargin[[1]] + GL=varargin[[2]]; N=3 + if(!is.list(GL)){GL=list(GL)} #18.02.21 + Eps0=10^(-4) + Eps1=0.01 + if(Nargs>2){ + Eps1=varargin[[3]] + } + Eps2=0.1 + if(Nargs>3){ + Eps2=varargin[[4]] + } + if(Nargs>4){ + Ns=varargin[[5]] + if(Ns>0){#18.02.21from + Other=Op(Ns,OTHERPARTITION) + }else{ + Other=c() + }#18.02.21until + }else{ + Ns=1 + Other=c() + } + Npt=Length(Fig) + ParL=c(1,Npt,Other) + for(N in Looprange(max(1,Ns),Length(GL))){ #18.02.21 + G=Op(N,GL) + KouL=IntersectcurvesPp(Fig,G,Eps1,Eps2) + Tmp1=c(); Tmp2=c() + for(jj in Looprange(1,length(KouL))){ + tmp=Op(2,KouL[[jj]]) + if((tmp>1+Eps0)&&(tmp<Npt-Eps0)){ + Tmp1=c(Tmp1,tmp) + } + tmp=Op(3,KouL[[jj]]) + if((tmp>1+Eps0)&&(tmp<Length(G)-Eps0)){ + Tmp2=c(Tmp2,tmp) + } + } + ParL=c(ParL,Tmp1) + if((Ns>0)&&(N>Ns)&&(length(Tmp2)>0)){ #18.02.21 + tmp=OTHERPARTITION[[N]] + OTHERPARTITION[[N]]<<- c(tmp,Tmp2) + } + } + tmp1=sort(ParL) + ParL=c() + tmp2=-1 + for(jj in Looprange(1,length(tmp1))){ + tmp=Op(jj,tmp1) + if(abs(tmp-tmp2)>Eps1){ + ParL=c(ParL,tmp) + tmp2=tmp + } + } + return(ParL) +} + +Evlptablepara<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Tmp=varargin[[1]] + Mdv=50 + Ndv=50 + if(Nargs>=2){ + Tmp=varargin[[2]] + if(is.list(Tmp)){Tmp=Op(1,Tmp)} + if(length(Tmp)>1){ + Mdv=Tmp[1] + Ndv=Tmp[2] + }else{ + Mdv=Tmp + if(Nargs==2){ + Ndv=Mdv + }else{ + Tmp1=varargin[[3]] + if((is.numeric(Tmp1)) && (length(Tmp1)==1)){ + Ndv=Tmp1 + }else{ + Ndv=Mdv + } + } + } + } + U1=URNG[1]; U2=URNG[2] + V1=VRNG[1]; V2=VRNG[2] + Du=(U2-U1)/(Mdv) + Dv=(V2-V1)/(Ndv) + sph=sprintf("%7.7f",sin(PHI)) + cph=sprintf("%7.7f",cos(PHI)) + sth=sprintf("%7.7f",sin(THETA)) + cth=sprintf("%7.7f",cos(THETA)) + xstr=paste("-(",XYZstr[1],")*(",sph,")+(",XYZstr[2],")*(",cph,")",sep="") + tmp=paste("-(",XYZstr[1],")*(",cph,")*(",cth,")-(",XYZstr[2],")*(",sph,")*(",cth,")",sep="") + ystr=paste(tmp,"+(",XYZstr[3],")*(",sth,")",sep="") + dxu=Diff(xstr,UNAME) + dxv=Diff(xstr,VNAME) + dyu=Diff(ystr,UNAME) + dyv=Diff(ystr,VNAME) + I=1 + Zval=c() + for(jj in 1:(Ndv+1)){ + v=V1+(jj-1)*Dv + ZuL=c() + for(ii in 1:(Mdv+1)){ + u=U1+(ii-1)*Du + tmp1=paste(UNAME,"=(",sprintf("%7.7f",u),")",sep="") + tmp2=paste(VNAME,"=(",sprintf("%7.7f",v),")",sep="") + Dxu=Funvalue(dxu,tmp1,tmp2) + Dxv=Funvalue(dxv,tmp1,tmp2) + Dyu=Funvalue(dyu,tmp1,tmp2) + Dyv=Funvalue(dyv,tmp1,tmp2) + Tmp=Dxu*Dyv-Dxv*Dyu + ZuL=c(ZuL,Tmp) + } + Zval=Appendrow(Zval,ZuL) + } + Yval=c() + for(jj in 1:(Ndv+1)){ + v=V1+(jj-1)*Dv + Yval=c(Yval,v) + } + Xval=c() + for(ii in 1:(Mdv+1)){ + u=U1+(ii-1)*Du + Xval=c(Xval,u) + } + return(list(Zval,Xval,Yval)) +} + +Evlpfun<- function(u,v){ + tmp1=paste(UNAME,"=(",sprintf("%7.7f",u),")",sep="") + tmp2=paste(VNAME,"=(",sprintf("%7.7f",v),")",sep="") + Dxu=Funvalue(dxu,tmp1,tmp2) + Dxv=Funvalue(dxv,tmp1,tmp2) + Dyu=Funvalue(dyu,tmp1,tmp2) + Dyv=Funvalue(dyv,tmp1,tmp2) + Tmp=Dxu*Dyv-Dxv*Dyu + return(Tmp) +} + +Envelopedata<- function(...){ + varargin=list(...) + Eps0=10^(-4) + Nargs=length(varargin) + Fd=varargin[[1]] + Fullformfunc(Fd) + Mdv=50 + Ndv=50 + if(Nargs>=2){ + Tmp=varargin[[2]] + if(is.list(Tmp)){Tmp=Op(1,Tmp)} + if(length(Tmp)>1){ + Mdv=Tmp[1] + Ndv=Tmp[2] + }else{ + Mdv=Tmp + if(Nargs==2){ + Ndv=Mdv + }else{ + Tmp1=varargin[[3]] + if((is.numeric(Tmp1)) && (length(Tmp1)==1)){ + Ndv=Tmp1 + }else{ + Ndv=Mdv + } + } + } + } + sph=sprintf("%7.7f",sin(PHI)) + cph=sprintf("%7.7f",cos(PHI)) + sth=sprintf("%7.7f",sin(THETA)) + cth=sprintf("%7.7f",cos(THETA)) + xstr=paste("-(",XYZstr[1],")*(",sph,")+(",XYZstr[2],")*(",cph,")",sep="") + tmp=paste("-(",XYZstr[1],")*(",cph,")*(",cth,")-(",XYZstr[2],")*(",sph,")*(",cth,")",sep="") + ystr=paste(tmp,"+(",XYZstr[3],")*(",sth,")",sep="") + dxu<<- Diff(xstr,UNAME) + dxv<<- Diff(xstr,VNAME) + dyu<<- Diff(ystr,UNAME) + dyv<<- Diff(ystr,VNAME) + U1=URNG[1]; U2=URNG[2] + V1=VRNG[1]; V2=VRNG[2] + Du=(U2-U1)/Mdv + Dv=(V2-V1)/Ndv + Out=c() + for(J in 1:(Ndv)){ + Vval1=VRNG[1]+(J-1)*Dv + Vval2=VRNG[1]+J*Dv + Uval1=URNG[1] + Eval11=Evlpfun(Uval1,Vval1) + Eval12=Evlpfun(Uval1,Vval2) + for(I in 1:(Mdv)){ + Uval2=URNG[1]+I*Du + Eval21=Evlpfun(Uval2,Vval1) + Eval22=Evlpfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + if(abs(VL[K])<=Eps0){ + QL=Appendrow(QL,PL[K,]) + }else if(VL[K]>Eps0){ + if(VL[K+1]< -Eps0){ + Tmp=1/(VL[K]-VL[K+1])*(-VL[K+1]*PL[K,]+VL[K]*PL[K+1,]) + QL=Appendrow(QL,Tmp) + } + }else{ + if(VL[K+1]>Eps0){ + Tmp=1/(-VL[K]+VL[K+1])*(VL[K+1]*PL[K,]-VL[K]*PL[K+1,]) + QL=Appendrow(QL,Tmp) + } + } + } + Uval1=Uval2 + Eval11=Eval21 + Eval12=Eval22 + if(Length(QL)==2){ + Out=Appendrow(Out,c(Inf,Inf)) + Out=Appendrow(Out,QL) + } + } + } + Out=Out[2:nrow(Out),] + if(Length(Out)>0){ + Out=Connectseg(Out) + }else{ + Out=c() + } + return(Out) +} + +Dropnumlistcrv<- function(QdL,Eps1){ + Eps0=10^(-4) + if(!is.list(QdL)){ + PdL=list(QdL) + }else{ + PdL=QdL + } + OutL=list() + for(I in Looprange(1,length(PdL))){ + Pd=Op(I,PdL) + PtL=c(1) + P=Op(1,Pd) + for(K in Looprange(2,Length(Pd)-1)){ + if(Norm(P-Op(K,Pd))>Eps1){ + PtL=c(PtL,K) + P=Op(K,Pd) + } + } + K=Length(Pd) + if(Norm(P-Op(K,Pd))>Eps1){ #18.02.12 eps + PtL=c(PtL,K) + } + OutL=c(OutL,list(PtL)) + } + return(OutL) +} + +Cuspsplitpara<- function(...){ + varargin=list(...) + Nargs=length(varargin); + Gdxy=varargin[[1]] + if(!is.list(Gdxy)){ + Gdxy=list(Gdxy) + } + Eps0=10^(-4) + Eps1=0.01 + if(Nargs>2){Eps1=varargin[[2]]} + N=2 + CUSPSPLITPT<<- list() + OutkL=list() + for(Ng in Looprange(1,length(Gdxy))){ + PtxyL=Op(Ng,Gdxy) + PtkL=c() + PthL=c() + for(I in Looprange(1,Length(PtxyL))){ + Tmp=Op(I,PtxyL) + Tmp1=paste(UNAME,'=',sprintf("%7.7f",Tmp[1]),sep="") + eval(parse(text=Tmp1)) + Tmp1=paste(VNAME,'=',sprintf("%7.7f",Tmp[2]),sep="") + eval(parse(text=Tmp1)) + Tmp2=c(eval(parse(text=XYZstr[1]))) + Tmp2=c(Tmp2,eval(parse(text=XYZstr[2]))) + Tmp2=c(Tmp2,eval(parse(text=XYZstr[3]))) + Tmp3=Parapt(Tmp2) + if(I==1){ + PtkL=matrix(Tmp2,nrow=1) + PthL=matrix(Tmp3,nrow=1) + }else{ + Tmp4=Op(Length(PthL),PthL) + if(Norm(Tmp3-Tmp4)>Eps0){ + PtkL=Appendrow(PtkL,Tmp2) + PthL=Appendrow(PthL,Tmp3) + } + } + } + if(Length(PthL)==0){ + return(list()) + } + Ps=Op(1,PthL); Pe=Op(Length(PthL),PthL) + Cflg=0 + if(Norm(Ps-Pe)<Eps1){Cflg=1} + CuspL=c() + Cva=cos(10*pi/180) + for(I in Looprange(1,Length(PthL)-1)){ + if(Length(PthL)==2){break} + Tmp=Op(I,PthL) + if(I==1){ + if(Cflg==0){next} + Tmp1=Op(Length(PthL)-1,PthL) + }else{ + Tmp1=Op(I-1,PthL) + } + Tmp2=Op(I+1,PthL) + V1=Tmp-Tmp1 + V2=Tmp2-Tmp + Tmp3=Dotprod(V1,V2)/(Norm(V1)*Norm(V2)) + Cuspflg=0 + if(Tmp3<Cva){ + P=Op(I,PthL) + Kaku=acos(Tmp3)*180/pi + if(Crossprod(V1,V2)<0){ + Kaku=-Kaku + } + Cuspflg=0 + for(J in Looprange(I+1,Length(PthL)-1)){ + if(abs(Kaku)>90){ + Cuspflg=1 + break + } + Q=Op(J,PthL) + if(Norm(P-Q)>Eps1){ + break + } + V1=Q-Op(J-1,PthL) + V2=Op(J+1,PthL)-Q + Tmp3=Dotprod(V1,V2)/(norm(V1)*norm(V2)) + Tmp=acos(Tmp3)*180/pi + if(Crossprod(V1,V2)<0){ + Tmp=-Tmp + } + Kaku=Kaku+Tmp + } + if(Cuspflg==1){ + Tmp=trunc((I+J)*0.5) + I=J + if(length(CuspL)==0){ + CuspL=c(Tmp) + }else{ + CuspL=c(CuspL,Tmp) + } + } + } + } + if(Cflg==0){ + CuspL=c(1,CuspL,Length(PthL)) + }else if(length(CuspL)==0){ + CuspL=c(1,Length(PthL)) + }else if(Op(1,CuspL)==1){ + CuspL=c(CuspL,Length(PthL)) + }else{ + Tmp=Op(1,CuspL) + Tmp1=PthL[Tmp:Length(PthL),] + Tmp2=PthL[2:Tmp,] + PthL=Appendrow(Tmp1,Tmp2) + Tmp1=PtkL[Tmp:Length(PthL),] + Tmp2=PtkL[2:Tmp,] + PtkL=Appendrow(Tmp1,Tmp2) + CuspL=CuspL-Tmp+1 + CuspL=c(CuspL,Length(PthL)) + } + if(length(CuspL)==2){ + Tmp4=PthL[Length(PthL),] + if(Length(PtkL)>=2){ + CUSPSPLITPT<<- c(CUSPSPLITPT,list(Tmp4)) + OutkL=c(OutkL,list(PtkL)) + } + next + } + Outk=list() + Is=1 + for(I in Looprange(1,length(CuspL)-1)){ + Tmp1=CuspL[Is]; Tmp2=CuspL[I+1] + Tmp3=Op(Tmp1,PthL); Tmp4=Op(Tmp2,PthL) + if(Norm(Tmp3-Tmp4)>Eps1){ + Tmpk=PtkL[Tmp1:Tmp2,] + Outk=c(Outk,list(Tmpk)) + CUSPSPLITPT<<- c(CUSPSPLITPT,list(Tmp4)) + Is=I+1 + } + } + OutkL=c(OutkL,Outk) + } + Tmp1=Dropnumlistcrv(Projpara(OutkL),Eps1*0.5) + Tmp=list() + for(I in Looprange(1,length(OutkL))){ + Tmp2=Op(I,OutkL) + Tmp3=Op(I,Tmp1) + Tmp4=c() + for(J in Looprange(1,Length(Tmp3))){ + Tmp5=Op(Tmp3[J],Tmp2) + Tmp4=Appendrow(Tmp4,Tmp5) + } + if(Length(Tmp4)>0){ + Tmp=c(Tmp,list(Tmp4)) + } + } + return(Tmp) +} + +PthiddenQ<- function(PtA,Vec,Uveq,Np,Eps1,Eps2){ + Eps0=10^(-4) + Out=c() + Vec=1/Norm(Vec)*Vec + if(length(Np)==1){ + Np=c(Np,Np) + } + Tmp=paste("Eqfun<- function(U,V){",sep='') + if((abs(Vec[2])>Eps0) || (abs(Vec[1])>Eps0)){ + Vstr=sprintf("%6.6f",Vec) + Pstr=sprintf("%6.6f",PtA) + Tmp=paste(Tmp,"(",Vstr[2],")*(Xfunc(U,V)-(",Pstr[1],"))",sep='') + Tmp=paste(Tmp,"-(",Vstr[1],")*(Yfunc(U,V)-(",Pstr[2],"))}",sep='') + }else{ + Tmp=paste(Tmp,"Xfunc(U,V)}",sep='') + } + eval(parse(text=Tmp)) + Dx=(URNG[2]-URNG[1])/Np[1] + Dy=(VRNG[2]-VRNG[1])/Np[2] + for(J in Looprange(1,Np[2])){ #180227 + Vval1=VRNG[1]+(J-1)*Dy + Vval2=VRNG[1]+J*Dy + Uval1=URNG[1] #180306(3lines) + Eval11=Eqfun(Uval1,Vval1) + Eval12=Eqfun(Uval1,Vval2) + for(I in Looprange(1,Np[1])){ #180227 + Uval2=URNG[1]+I*Dx + Eval21=Eqfun(Uval2,Vval1) + Eval22=Eqfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + P1=Op(K,PL); P2=Op(K+1,PL) + M1=Op(K,VL); M2=Op(K+1,VL) + if(abs(M1)<Eps0){ + QL=Appendrow(QL,P1) + next + } + if(abs(M2)<Eps0){ + next + } + if((M1> 0) && (M2> 0)){ + next + } + if((M1< 0) && (M2< 0)){ + next + } + Tmp=1/(M1-M2)*(-M2*P1+M1*P2) + QL=Appendrow(QL,Tmp) + } + Uval1=Uval2 #180306(3lines) + Eval11=Eval21 + Eval12=Eval22 + if(Length(QL)==2){ + Puv1=Op(1,QL); Puv2=Op(2,QL) + Tmp1=Op(1,Puv1) + Tmp2=Op(2,Puv1) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P1=c(Xv,Yv,Zv) + Tmp1=Op(1,Puv2) + Tmp2=Op(2,Puv2) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P2=c(Xv,Yv,Zv) + V1=Vec[1]; V2=Vec[2]; V3=Vec[3] + if(abs(V1)>Eps0){ + M1=PtA[3]+V3/V1*(P1[1]-PtA[1])-P1[3] + M2=PtA[3]+V3/V1*(P2[1]-PtA[1])-P2[3] + }else if(abs(V2)>Eps0){ + 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] + } + if(M1*M2>= 0){ + if(((M1>0) && (M2>0)) || ((M1< 0) && (M2< 0))){ + next + } + if(M1==0){ + Pt=P1; Ptuv=Puv1 + }else{ + Pt=P2; Ptuv=Puv2 + } + }else{ + Pt=1/(M1-M2)*(-M2*P1+M1*P2) + Ptuv=1/(M1-M2)*(-M2*Puv1+M1*Puv2) + } + if(is.character(Uveq)){ + Tmp1=paste('(',sprintf("%6.6f",Ptuv[1]),')',sep='') + Tmp2=paste('('+sprintf("%6.6f",Ptuv[2]),')',sep='') + Tmp=gsub(UNAME,Tmp1,Uveq,fixed=TRUE) + Tmp=gsub(VNAME,Tmp2,Tmp,fixed=TRUE) + Tmp=eval(parse(text=Tmp)) + if(Tmp< -Eps0){ + next + } + } + Tmp1=Crossprod(Pt-PtA,Vec) + if(Norm(Tmp1)<Eps1){ #18.02.19 + if(Zparapt(Pt)>Zparapt(PtA)+Eps2){ + return(list(1,Pt,Zparapt(Pt),Zparapt(PtA))) + }else{ + Out=Appendrow(Out,Pt) + } + } + } + } + } + if(Length(Out)==0){ + return(list(0,c())) + } + return(c(list(0,Out))) +} + +Nohiddenpara2<- function (Par,Fk,Uveq,Np,Eps1,Eps2){ + Eps0=10^(-4) + Fh=Projpara(Fk) + P1=Ptstart(Fh) + P2=Ptend(Fh) + Csp=CUSPPT + if(!is.list(Csp)){Csp=list(Csp)} + Cspflg=1 + for(I in Looprange(1,length(Csp))){ + Tmp=Op(I,Csp) + if(Norm(Tmp-P1)<Eps0){ + if(Cspflg==1){Cspflg=2} + if(Cspflg==3){Cspflg=6} + next + } + if(Norm(Tmp-P2)<Eps0){ + if(Cspflg==1){Cspflg=3} + if(Cspflg==2){Cspflg=6} + next + } + } + PaL=c() + tmp2=-1 + for(jj in Looprange(1,length(Par)-1)){ + tmp1=Op(jj,Par) + if(abs(tmp1-tmp2)>Eps0){ #180227 + PaL=c(PaL,tmp1) + tmp2=tmp1 + } + } + tmp1=PaL[length(PaL)] #18.02.26from + tmp2=Par[length(Par)] + if(abs(tmp1-tmp2)<Eps0){ #180227 + PaL[length(PaL)]=tmp2 + }else{ + PaL=c(PaL,tmp2) + } #18.02.26to + SeL=c() + for(N in Looprange(1,length(PaL)-1)){ + S=(PaL[N]+PaL[N+1])/2 + Tmp=Invparapt(S,Fh,Fk) + PtA=Op(1,Tmp) + PtAp=Parapt(PtA) + Vec=c(sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)) + Flg=PthiddenQ(PtA,Vec,Uveq,Np,Eps1,Eps2) + if(Flg[[1]]==0){ + SeL=c(SeL,N) + } + } + FigL=list() + FigkL=list() + for(I in Looprange(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=c(FigL,list(Partcrv(SP,SQ,Fh))) + Tmp3=Invparapt(SP,Fh,Fk) + TP=Op(2,Tmp3) + Tmp3=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp3) + Tmp4=Partcrv3(TP,TQ,Fk) + FigkL=c(FigkL,list(Tmp4)) + P=Tmp1; SP=PaL[SeL[I]] + Q=Tmp2; SQ=PaL[SeL[I]+1] + } + } + } + if(length(SeL)>0){ + if(Norm(P-Q)>Eps0){ #18.02.14 + FigL=c(FigL,list(Partcrv(P,Q,Fh))) + Tmp3=Invparapt(SP,Fh,Fk) + TP=Op(2,Tmp3) + Tmp3=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp3) + FigkL=c(FigkL,list(Partcrv3(TP,TQ,Fk))) + }else{ + FigL=c(FigL,list(Fh)) + FigkL=c(FigkL,list(Fk)) + } + } + if(length(SeL)==0){#181024from + Tmp=Looprange(1,length(PaL)-1) + }else{ #181024to + Tmp=c() + for(I in Looprange(1,length(PaL)-1)){ + if(!Member(I,SeL)){ + Tmp=c(Tmp,I) + } + } + } + SeL=Tmp + HIDDENDATA<<- list() + for(I in Looprange(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=Op(2,Tmp) + Tmp=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp) + HIDDENDATA<<- c(HIDDENDATA,list(Partcrv3(TP,TQ,Fk))) + P=Tmp1; SP=PaL[SeL[I]] + Q=Tmp2; SQ=PaL[SeL[I]+1] + } + } + } + if(length(SeL)>0){ + if(Norm(P-Q)>Eps0){ #18.02.14 + Tmp=Invparapt(SP,Fh,Fk) + TP=Op(2,Tmp) + Tmp=Invparapt(SQ,Fh,Fk) + TQ=Op(2,Tmp) + HIDDENDATA<<- c(HIDDENDATA,list(Partcrv3(TP,TQ,Fk))) + }else{ + HIDDENDATA<<- c(HIDDENDATA,list(Fk)) + } + } + return(FigkL) +} + +Borderparadata<- function(...){ + varargin=list(...) + Nargs=length(varargin) + FkL=varargin[[1]] + Np=c(50,50) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(2,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + Umin=URNG[1]; Umax=URNG[2] + Vmin=VRNG[1]; Vmax=VRNG[2] + EkL=list() + Tmp=grep("e",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umax),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2]),sep="") + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + Tmp=grep("n",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmax),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1]),sep="") + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + Tmp=grep("w",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(UNAME,paste("(",sprintf("%7.7f",Umin),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",VRNG) + Tmp2=paste(VNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[2])) + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + Tmp=grep("s",DRWS,fixed=TRUE) + if(length(Tmp)>0){ + Tmp1="c(" + for(jj in 1:3){ + Tmp=gsub(VNAME,paste("(",sprintf("%7.7f",Vmin),")",sep=""),XYZstr[jj]) + Tmp1=paste(Tmp1,Tmp,",",sep="") + } + Tmp=substring(Tmp1,1,Length(Tmp1)-1) + Tmp1=paste(Tmp,")",sep="") + Tmp=sprintf("%6.6f",URNG) + Tmp2=paste(UNAME,"=c(",Tmp[1],",",Tmp[2],")",sep='') + Tmp3=paste('N=',as.character(Np[1])) + Tmp=Spacecurve(Tmp1,Tmp2,Tmp3) + EkL=c(EkL,list(Tmp)) + } + if(length(EkL)>0){ + FkL=c(FkL,EkL) + } + Fall=Projpara(FkL) + if(is.numeric(Fall)){ + Fall=list(Fall) + } + Fbdxy=Makexybdy(Np) + BORDERPT<<- list() + Tmp1=list() + for(I in Looprange(1,length(Fall))){ + Tmp1=c(Tmp1,list(c())) + } + OTHERPARTITION<<- Tmp1 + FsL=list() + BORDERHIDDENDATA<<- list() + starttime=proc.time() + for(I in Looprange(1,length(FkL))){ + Tmp=Op(I,FkL) + Tmp=Projpara(Tmp) + Par=Partitionseg(Tmp,Fall,Eps1,Eps2,I) + Tmp1=Op(I,FkL) + Tmp=Nohiddenpara2(Par,Tmp1,1,Np,Eps1,Eps2) + if(length(HIDDENDATA)>0){ + BORDERHIDDENDATA<<- c(BORDERHIDDENDATA,HIDDENDATA) + } + if(length(Tmp)>0){ + FsL=c(FsL,Tmp) + } + Tmp=paste('Border',formatC(I,width=2,flag="0"),'/',sep='') + Tmp=paste(Tmp,as.character(length(FkL)),' obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + } + return(FsL) +} + +Sfbdparadata<- function(...){ + varargin=list(...) + Nargs=length(varargin) + Fd=varargin[[1]] + FdL=Fullformfunc(Fd) + Np=c(50,50) + Eps0=10^(-4) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(2,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + starttime=proc.time() + Out3=Envelopedata(Fd) #180306 + tmp3=list() + pts=list() #180306 + for(jj in Looprange(1,length(Out3))){ + tmp1=Op(jj,Out3) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + Nlist=Dropnumlistcrv(tmp2,Eps1) + Nlist=Nlist[[1]] + if(Length(Nlist)==1){ #180306from + tmp=Op(1,Nlist) + tmp=Op(tmp,tmp1) + pts=c(pts,list(tmp)) + }else{ + tmp=c() + for(kk in Looprange(1,length(Nlist))){ + tmp=Appendrow(tmp,Op(Nlist[kk],tmp1)) #18.02.18 + } + if(Length(tmp)>0){ + tmp3=c(tmp3,list(tmp)) + } + } + } + Out3=tmp3 + tmp3=pts #180306from + pts=list() + for(ii in Looprange(1,length(tmp3))){ + tmp=Op(ii,tmp3) + tmp1=XYZfunc(tmp[1],tmp[2]) + flg=0 + for(jj in Looprange(1,length(pts))){ + tmp=Op(jj,pts) + tmp2=XYZfunc(tmp[1],tmp[2]) #180517 + if(Norm(tmp1-tmp2)<Eps1){ + flg=1; break + } + } + if(flg==0){pts=c(pts,list(Op(ii,tmp3)))} + } + for(ii in Looprange(1,length(pts))){ + tmp=Op(ii,pts) + tmp1=XYZfunc(tmp[1],tmp[2]) + for(jj in Looprange(1,length(Out3))){ + tmp2=Op(jj,Out3) + eps=1 + for(kk in Looprange(1,Length(tmp2)-1)){ + tmp=Op(kk,tmp2) + tmp1=XYZfunc(tmp[1],tmp[2]) + tmp=Op(kk+1,tmp2) + tmp=XYZfunc(tmp[1],tmp[2]) + eps=min(c(eps,Norm(tmp1-tmp))) + } + tmp=Ptstart(tmp2) + if(Norm(tmp1-XYZfunc(tmp[1],tmp[2]))<eps+Eps0){ + Out3[[jj]]=Appendrow(Op(ii,pts),tmp2) + next + } + tmp=Ptend(tmp2) + if(Norm(tmp1-XYZfunc(tmp[1],tmp[2]))<eps+Eps0){ + Out3[[jj]]=Appendrow(tmp2,Op(ii,pts)) + next + } + } + } #180306to + IMPLICITDATA<<- Out3 + Tmp=proc.time()-starttime + print(paste('ImplicitData obtained : Time =',sprintf("%6.3f",Tmp[1]),sep='')) + starttime=proc.time() + Out4=Cuspsplitpara(Out3,Eps1) + CUSPDATA<<- Out4 + CUSPPT<<- CUSPSPLITPT + Tmp=proc.time()-starttime + print(paste('CuspData obtained : Time =',sprintf("%6.3f",Tmp[1]),sep='')) + Out5=Borderparadata(Out4,Np,Eps1,Eps2) + return(Out5) +} + +Meetpoints<- function(PtA,PtB,Uveq,Np,Eps1){ + Eps0=10^(-4) + Vec=PtB-PtA + if(Norm(Vec)<Eps0){return(list())} #18.02.24 + Out=list() + Vec=1/Norm(Vec)*Vec + if(length(Np)==1){ + Np=c(Np,Np) + } + Tmp=paste("Eqfun<- function(U,V){",sep='') + if((abs(Vec[2])>Eps0) || (abs(Vec[1])>Eps0)){ + Vstr=sprintf("%6.6f",Vec) + Pstr=sprintf("%6.6f",PtA) + Tmp=paste(Tmp,"(",Vstr[2],")*(Xfunc(U,V)-(",Pstr[1],"))",sep='') + Tmp=paste(Tmp,"-(",Vstr[1],")*(Yfunc(U,V)-(",Pstr[2],"))}",sep='') + }else{ + Tmp=paste(Tmp,"Xfunc(U,V)}",sep='') + } + eval(parse(text=Tmp)) + Dx=(URNG[2]-URNG[1])/Np[1] + Dy=(VRNG[2]-VRNG[1])/Np[2] + for(J in Looprange(1,Np[2])){ + Vval1=VRNG[1]+(J-1)*Dy + Vval2=VRNG[1]+J*Dy + Uval1=URNG[1] #180305(3lines) + Eval11=Eqfun(Uval1,Vval1) + Eval12=Eqfun(Uval1,Vval2) + for(I in Looprange(1,Np[1])){ + Uval2=URNG[1]+I*Dx + Eval21=Eqfun(Uval2,Vval1) + Eval22=Eqfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + P1=Op(K,PL); P2=Op(K+1,PL) + M1=Op(K,VL); M2=Op(K+1,VL) + if(abs(M1)<Eps0){ + QL=Appendrow(QL,P1) + next + } + if(abs(M2)<Eps0){ + next + } + if((M1> 0) && (M2> 0)){ + next + } + if((M1< 0) && (M2< 0)){ + next + } + Tmp=1/(M1-M2)*(-M2*P1+M1*P2) + QL=Appendrow(QL,Tmp) + } + Uval1=Uval2 #180306(3lines) + Eval11=Eval21 + Eval12=Eval22 + if(Length(QL)==2){ + Puv1=Op(1,QL); Puv2=Op(2,QL) + Tmp1=Op(1,Puv1) + Tmp2=Op(2,Puv1) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P1=c(Xv,Yv,Zv) + Tmp1=Op(1,Puv2) + Tmp2=Op(2,Puv2) + Xv=Xfunc(Tmp1,Tmp2) + Yv=Yfunc(Tmp1,Tmp2) + Zv=Zfunc(Tmp1,Tmp2) + P2=c(Xv,Yv,Zv) + V1=Vec[1]; V2=Vec[2]; V3=Vec[3] + if(abs(V1)>Eps0){ + M1=PtA[3]+V3/V1*(P1[1]-PtA[1])-P1[3] + M2=PtA[3]+V3/V1*(P2[1]-PtA[1])-P2[3] + }else if(abs(V2)>Eps0){ + 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] + } + if(M1*M2>= 0){ #18.02.21 + if(((M1>0) && (M2>0)) || ((M1< 0) && (M2< 0))){ + next + } + if(M1==0){ + Pt=P1; Ptuv=Puv1 + }else{ + Pt=P2; Ptuv=Puv2 + } + }else{ + Pt=1/(M1-M2)*(-M2*P1+M1*P2) + Ptuv=1/(M1-M2)*(-M2*Puv1+M1*Puv2) + } + if(is.character(Uveq)){ + Tmp1=paste('(',sprintf("%6.6f",Ptuv[1]),')',sep='') + Tmp2=paste('('+sprintf("%6.6f",Ptuv[2]),')',sep='') + Tmp=gsub(UNAME,Tmp1,Uveq,fixed=TRUE) + Tmp=gsub(VNAME,Tmp2,Tmp,fixed=TRUE) + Tmp=eval(parse(text=Tmp)) + if(Tmp< -Eps0){ + next + } + } + Tmp1=Crossprod(Pt-PtA,Vec) + if(Norm(Tmp1)<Eps1){ #18.02.19 + Tmp1=Dotprod(Pt-PtA,Vec) #18.02.21 + if((Tmp1>-Eps0)&&(Norm(Pt-PtA)<Norm(PtB-PtA)+Eps0)){#180429 + Out=c(Out,list(Pt)) + } + } + } + } + } + tmp1=Groupnearpt(Out,Eps1) + Out=list() + for(jj in Looprange(1,length(tmp1))){ + tmp=Op(jj,tmp1) + tmp=c(sum(tmp[,1]),sum(tmp[,2]),sum(tmp[,3]))/Length(tmp) + Out=c(Out,list(tmp)) + } + return(Out) +} + +Clipindomain<- function(ObjL,FigL){ + Eps0=10^(-4) + Eps1=0.01 + Eps2=0.05 + Bdy=Kyoukai(FigL) + if(length(Bdy)>=2){ + Fbdy=Joincrvs(FigL) + }else{ + Fbdy=Op(1,FigL) + } + if(!is.list(ObjL)){ + ObjL=list(ObjL) + } + if(!is.list(FigL)){ + FigL=list(FigL) + } + OutL=list() + for(Nobj in Looprange(1,length(ObjL))){ + Obj=Op(Nobj,ObjL) + ParL=c(1,Length(Obj)) + Tmp=IntersectcurvesPp(Obj,Fbdy,Eps1,Eps2) + for(J in Looprange(1,length(Tmp))){ + Tmp1=Op(J,Tmp) + ParL=c(ParL,Op(2,Tmp1)) + } + ParL=sort(ParL) + Tmp=c(1) + for(I in Looprange(1,length(ParL))){ + Tmp1=Op(length(Tmp),Tmp) + Tmp2=ParL[I] + if(Tmp2-Tmp1>Eps0){ + Tmp=c(Tmp,Tmp2) + } + } + ParL=Tmp + Tmp1=Op(length(ParL),ParL) + Tmp2=Length(Obj) + if(abs(Tmp1-Tmp2)<Eps1){ + ParL=c(ParL[Looprange(1,length(ParL)-1)],Tmp2) + } + Fig=list() + for(N in Looprange(1,length(ParL)-1)){ + Tmp=(ParL[N]+ParL[N+1])*0.5 + Tmp=Pointoncurve(Tmp,Obj) + Tmp=Naigai(Tmp,Bdy) + Tmp1=sum(Tmp)%%2 + if(Tmp1==0){ + next + } + Fig=c(Fig,list(Partcrv(ParL[N],ParL[N+1],Obj))) + } + OutL=c(OutL,Fig) + } + return(OutL) +} + +Crvsfparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Sepflg=0 + Tmp=varargin[[Nargs]] + if((is.numeric(Tmp))&&(Tmp<=0)){ + Sepflg=1 + Nargs=Nargs-1 + } + Fk=varargin[[1]] + if(!is.list(Fk)){ + FkL=list(Fk) + }else{ + FkL=Fk + } + Fbdy=Projpara(varargin[[2]]) + Fd=varargin[[3]]; + Fullformfunc(Fd) #18.02.17 + Np=c(50,50) + Eps0=10^(-4) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + Out=list() + CRVSFHIDDENDATA<<- list() + for(Nn in Looprange(1,length(FkL))){ + Fk=Op(Nn,FkL) + Tmp=Projpara(Fk) + Par=Partitionseg(Tmp,Fbdy,Eps1,Eps2,0) + if(Sepflg==0){ + for(I in Looprange(1,Length(Fk)-1)){ + Pa=Op(I,Fk) + Pb=Op(I+1,Fk) + PtL=Meetpoints(Pa,Pb,1,Np,Eps1) + for(J in Looprange(1,Length(PtL))){ + Tmp=Op(J,PtL) + Tmp=Parapt(Tmp) + Tmp1=Paramoncurve(Tmp,I,Projpara(Fk)) + Tmp2=min(abs(Par-Tmp1)) + if(Tmp2*Norm(Parapt(Pb-Pa))>Eps0) { #180227 + Par=c(Par,Tmp1) + } + } + Par=sort(Par) + } + } + for(jj in Looprange(1,length(ADDPOINT))){ #18.02.19from + tmp=Parapt(Op(jj,ADDPOINT)) + tmp=Nearestpt(tmp,Projpara(Fk)) + if(tmp[[3]]<Eps1){ + Par=c(Par,tmp[[2]]) + } + } #18.02.19until + tmp1=sort(Par) + Par=c() + tmp2=-1 + for(jj in Looprange(1,length(tmp1))){ + tmp=Op(jj,tmp1) + if(abs(tmp-tmp2)>Eps0){ #180227 + Par=c(Par,tmp) + tmp2=tmp + } + } + Tmp1=Nohiddenpara2(Par,Fk,1,Np,Eps1,Eps2) + Out=c(Out,Tmp1) + CRVSFHIDDENDATA<<- c(CRVSFHIDDENDATA,HIDDENDATA) + Tmp=paste('Crvsfdata',formatC(Nn,width=2,flag="0"),'/',sep='') + Tmp=paste(Tmp,as.character(length(FkL)),' obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + } + return(Out) +} + +Crv3onsfparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Fk=varargin[[1]] + if(!is.list(Fk)){ + FkL=list(Fk) + }else{ + FkL=Fk + } + Fbdy=Projpara(varargin[[2]]) + Fd=varargin[[3]] + Fullformfunc(Fd) #18.02.17 + Np=c(50,50) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + Out=list() + CRVONSFHIDDENDATA<<- list() + for(Nn in Looprange(1,length(FkL))){ + Fk=Op(Nn,FkL) + Tmp=Projpara(Fk) + Par=Partitionseg(Tmp,Fbdy,Eps1,Eps2,0) + for(jj in Looprange(1,length(ADDPOINT))){ + tmp=Parapt(Op(jj,ADDPOINT)) + tmp=Nearestpt(tmp,Projpara(Fk)) + if(tmp[[3]]<Eps1){ + Par=c(Par,tmp[[2]]) + } + } + Par=sort(Par) + Tmp1=Nohiddenpara2(Par,Fk,1,Np,Eps1,Eps2) + Out=c(Out,Tmp1) + CRVONSFHIDDENDATA<<- c(CRVONSFHIDDENDATA,HIDDENDATA) + Tmp=paste('Crvonsfdata',formatC(Nn,width=2,flag="0"),'/',sep='') + Tmp=paste(Tmp,as.character(length(FkL)),' obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + } + return(Out) +} + +Crv2onsfparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Fuv=varargin[[1]] + Fbdy3=varargin[[2]] + Fd=varargin[[3]] + Fullformfunc(Fd) + if(!is.list(Fuv)){ + Fuv=list(Fuv) + } + FkL=list() + for(jj in Looprange(1,length(Fuv))){ + tmp1=Op(jj,Fuv) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + FkL=c(FkL,list(tmp2)) + } + Np=c(50,50) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + Out=Crv3onsfparadata(FkL,Fbdy3,Fd,Np,Eps1,Eps2) + return(Out) +} + +Wireparadata<- function(...){ + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + Fbdy3=varargin[[1]] + Fd=varargin[[2]] + FdL=Fullformfunc(Fd) + DuL=varargin[[3]] + DvL=varargin[[4]] + Np=c(50,50) + Eps1=0.01 + Eps2=0.1 + ctr=0 + for(jj in Looprange(5,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + if(!is.list(DuL)){ #181024 + tmp1=DuL + DuL=list() + for(jj in Looprange(1,tmp1)){ + tmp=jj*(URNG[2]-URNG[1])/(tmp1+1) + DuL=c(DuL,list(tmp)) + } + } + if(!is.list(DvL)){ #181024 + tmp1=DvL + DvL=list() + for(jj in Looprange(1,tmp1)){ + tmp=jj*(VRNG[2]-VRNG[1])/(tmp1+1) + DvL=c(DvL,list(tmp)) + } + } + Fuv=list() + for(jj in Looprange(1,length(DuL))){ + tmp1=paste("c(",as.character(Op(jj,DuL)),",",VNAME,")",sep="") + tmp2=paste("N=",as.character(Np[2]),sep="") + tmp1=Paramplot(tmp1,Op(6,FdL),tmp2) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,tmp) + } + Fuv=c(Fuv,list(tmp2)) + } + FkL=list() + for(jj in Looprange(1,length(Fuv))){ + tmp1=Op(jj,Fuv) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + FkL=c(FkL,list(tmp2)) + } + Tmp1=proc.time()-starttime + cat(UNAME,"direction started","\n") + Out1=Crv3onsfparadata(FkL,Fbdy3,Fd,Np,Eps1,Eps2) + WIREHIDDENDATA<<- CRVONSFHIDDENDATA + Fuv=list() + for(jj in Looprange(1,length(DvL))){ + tmp1=paste("c(",UNAME,",",as.character(Op(jj,DvL)),")",sep="") + tmp2=paste("N=",as.character(Np[2]),sep="") + tmp1=Paramplot(tmp1,Op(5,FdL),tmp2) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,tmp) + } + Fuv=c(Fuv,list(tmp2)) + } + FkL=list() + for(jj in Looprange(1,length(Fuv))){ + tmp1=Op(jj,Fuv) + tmp2=c() + for(kk in Looprange(1,Length(tmp1))){ + tmp=Op(kk,tmp1) + tmp2=Appendrow(tmp2,XYZfunc(tmp[1],tmp[2])) + } + FkL=c(FkL,list(tmp2)) + } + cat(VNAME,"direction started","\n") + Out2=Crv3onsfparadata(FkL,Fbdy3,Fd,Np,Eps1,Eps2) + WIREHIDDENDATA<<- c(WIREHIDDENDATA, CRVONSFHIDDENDATA) + Out=c(Out1,Out2) + return(Out) +} + +Intersectcrvsf<- function(...){ + # bdyeq is the equation of boundary f(x,y,z) =0 + starttime=proc.time() + varargin=list(...) + Nargs=length(varargin) + crv=varargin[[1]] + Fd=varargin[[2]] + Fullformfunc(Fd) + bdyflg=0 + bdyeq=varargin[[Nargs]] + if(is.character(bdyeq)){ + Nargs=Nargs-1 + bdyflg=1 + tmp=strsplit(bdyeq,"=",fixed=TRUE) + tmp=tmp[[1]] + if(length(tmp)>1){ + bdyeq=paste("(",tmp[1],")-(",tmp[2],")",sep="") + } + tmp=paste("bdyeq<- function(P){x=P[1];y=P[2];z=P[3];",bdyeq,"}",sep="") + eval(parse(text=tmp)) + } + Eps0=10^(-4) + Np=c(50,50) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(3,Nargs)){ + tmp=varargin[[jj]] + if((length(tmp)>1)||(tmp>1)){ + Np=tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=tmp} + if(ctr==2){Eps2=tmp} + } + } + PtL=list() + for(I in Looprange(1,Length(crv)-1)){ + Pa=Op(I,crv) + Pb=Op(I+1,crv) + if(bdyflg==0){ + tmp=Meetpoints(Pa,Pb,1,Np,Eps1) + }else{ + M1=bdyeq(Pa); M2=bdyeq(Pb) + if(M1*M2>= 0){ #18.02.21 + if(((M1>0) && (M2>0)) || ((M1< 0) && (M2< 0))){ + next + } + if(M1==0){ + tmp=list(Pa) + }else{ + tmp=list(Pb) + } + }else{ + while(Norm(Pb-Pa)>Eps0){ + if(bdyeq(Pa)==0){ + tmp=list(Pa) + break + } + if(bdyeq(Pa)*bdyeq((Pa+Pb)/2)>0){ + Pa=(Pa+Pb)/2 + }else{ + Pb=(Pa+Pb)/2 + } + } + tmp=list(1/(M1-M2)*(-M2*Pa+M1*Pb)) + } + } + PtL=c(PtL,tmp) + } + Tmp=paste('Intersectcrvsf obtained : Time =',sep='') + Tmp1=proc.time()-starttime + print(paste(Tmp,sprintf("%6.3f",Tmp1[1]),sep='')) + return(PtL) +} + +Sfcutparadata<- function(...){ + varargin=list(...) + Nargs=length(varargin) + CutD=varargin[[1]] + Fbdy3=varargin[[2]] + Fd=varargin[[3]] + FdL=Fullformfunc(Fd) + Np=c(50,50) + Eps0=10^(-4) + Eps1=0.01 + Eps2=0.05 + ctr=0 + for(jj in Looprange(4,Nargs)){ + Tmp=varargin[[jj]] + if((length(Tmp)>1)||(Tmp>1)){ + Np=Tmp + if(length(Np)==1){ + Np=c(Np,Np) + } + }else{ + ctr=ctr+1 + if(ctr==1){Eps1=Tmp} + if(ctr==2){Eps2=Tmp} + } + } + starttime=proc.time() + Tmp=strsplit(CutD,'=') + Tmp=Tmp[[1]] + if(length(Tmp)==1){ + Eq=CutD + }else{ + Eq=paste("(",Tmp[1],")-(",Tmp[2],")",sep="") + } + Eq=gsub("x","Xfunc(U,V)",Eq,fixed=TRUE) + Eq=gsub("y","Yfunc(U,V)",Eq,fixed=TRUE) + Eq=gsub("z","Zfunc(U,V)",Eq,fixed=TRUE) + Tmp=paste("Eqfun<<- function(U,V){",Eq,"}",sep="") + eval(parse(text=Tmp)) + Du=(URNG[2]-URNG[1])/Np[1] + Dv=(VRNG[2]-VRNG[1])/Np[2] + Out=list();Out2=list() + for(J in Looprange(1,Np[2])){ + Vval1=VRNG[1]+(J-1)*Dv + Vval2=VRNG[1]+J*Dv + Uval1=URNG[1] #180305(3lines) + Eval11=Eqfun(Uval1,Vval1) + Eval12=Eqfun(Uval1,Vval2) + for(I in Looprange(1,Np[1])){ + Uval2=URNG[1]+I*Du + Eval21=Eqfun(Uval2,Vval1) + Eval22=Eqfun(Uval2,Vval2) + a1=Uval1;b1=Vval1;c1=Eval11 + a2=Uval2;b2=Vval1;c2=Eval21 + a3=Uval2;b3=Vval2;c3=Eval22 + a4=Uval1;b4=Vval2;c4=Eval12 + PL=matrix(c(a1,b1,a2,b2,a3,b3,a4,b4,a1,b1),ncol=2,byrow=TRUE) + VL=c(c1,c2,c3,c4,c1) + QL=c() + for(K in 1:4){ + P1=Op(K,PL); P2=Op(K+1,PL) + M1=Op(K,VL); M2=Op(K+1,VL) + if(abs(M1)<Eps0){ + QL=Appendrow(QL,P1) + next + } + if(abs(M2)<Eps0){ + next + } + if((M1> 0) && (M2> 0)){ + next + } + if((M1< 0) && (M2< 0)){ + next + } + Tmp=1/(M1-M2)*(-M2*P1+M1*P2) + QL=Appendrow(QL,Tmp) + } + Uval1=Uval2 #180306(3lines) + Eval11=Eval21 + Eval12=Eval22 + if(Length(QL)==2){ + q11=QL[1,1];q12=QL[1,2];q21=QL[2,1];q22=QL[2,2] + if(((q11==a1)&&(q21==a1))||((q11==a3)&&(q21==a3))){ + if(((q21==b1)&&(q22==b1))||((q21==b3)&&(q22==b3))){ + Out2=c(Out2,list(QL)) + }else{ + Out=c(Out,list(QL)) + } + next + } + if(((q12==b1)&&(q22==b1))||((q12==b3)&&(q22==b3))){ + if(((q11==a1)&&(q21==a1))||((q11==a3)&&(q21==a3))){ + Out2=c(Out2,list(QL)) + }else{ + Out=c(Out,list(QL)) + } + next + } + Out=c(Out,list(QL)) + } + } + } + while(length(Out2)>0){ + tmp1=Out2[[1]] + Out=c(Out,list(tmp1)) + Out2=Out2[-1] + rmv=c() + for(jj in Looprange(1,length(Out2))){ + tmp2=Out2[[jj]] + diff1=Norm(tmp2[1,]-tmp1[1,])+Norm(tmp2[2,]-tmp1[2,]) + diff2=Norm(tmp2[1,]-tmp1[2,])+Norm(tmp2[2,]-tmp1[1,]) + if((diff1<Eps0)||(diff2<Eps0)){ + rmv=c(rmv,jj) + next + } + } + Out2=Out2[-rmv] + } + Out=Connectseg(Out,Eps1) + Tmp1=Out + Out=list() + for(ii in Looprange(1,length(Tmp1))){ + Tmp2=Op(ii,Tmp1) + Tmp3=c() + for(jj in Looprange(1,Length(Tmp2))){ + Tmp=Op(jj,Tmp2) + Tmp=XYZfunc(Tmp[1],Tmp[2]) + if(Length(Tmp3)>0){ + if(Norm(Op(Length(Tmp3),Tmp3)-Tmp)<Eps1){next} + } + Tmp3=Appendrow(Tmp3,Tmp) + } + Out=c(Out,list(Tmp3)) + } + Out=Crv3onsfparadata(Out,Fbdy3,Fd,Np,Eps1,Eps2) + return(Out) +} diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent_rep2e.r b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent_rep2e.r new file mode 100755 index 0000000000..084f94c70c --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent_rep2e.r @@ -0,0 +1,531 @@ +# 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/> + + +######################################### + +ThisVersion<- "2ev5_2_4(190405)" + +# 20190405 +# Drwpt debugged/changed ( Incolor ) +# 20181230 +# Drwpt changed ( Inside ) +# 20180930 +# Drwpt debugged ( the last newline added) +# 20180929 +# Shade changed (Kyoukai => Joincrvs) +# 2017.10.28 +# Drwpt debugged ( Flattenlist ) +# 2017.10.07 +# Dottedline,Drwline,Drwpt,Makehasen,Beginpicture,Setpen,Shade + +############################################# + +Dottedline<- function(...) +{ + varargin <- list(...) + Nall <- length(varargin) + Nagasa <- 0.1 + Ookisa <- PenThick*2 #17.10.07 + I <- Nall + Tmp <- varargin[[I]] + while (mode(Tmp)=="numeric" && length(Tmp)==1 ) { + I <- I-1 + Tmp <- varargin[[I]] + } + if (I==Nall-1) { + Nagasa<-Nagasa*varargin[[Nall]] + Nall <- Nall-1 + } + if (I==Nall-2) { + Nagasa <- Nagasa*varargin[[Nall-1]] + Ookisa <- round(Ookisa*varargin[[Nall]]) + Nall <- Nall-2 + } + Nagasa <- 1000/2.54/MilliIn*Nagasa + Ra=Ookisa/MilliIn + for (N in 1:Nall) { + Pdata <- varargin[[N]] + if (mode(Pdata)=="numeric") { + Pdata <- list(Pdata) + } + for (II in 1:length(Pdata)) { + Clist <- MakeCurves(Op(II,Pdata)) + DinM <- Dataindex(Clist) + Mojisu=0 + for (n in Looprange(1,Nrow(DinM))) { + Tmp <- DinM[n,] + Data <- Clist[Tmp[1]:Tmp[2],] + Len <- 0 + Lenlist <- c(0) + for (I in Looprange(2,Nrow(Data))) { + Len <- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist <- c(Lenlist,Len) + } + Lenall <- Lenlist[length(Lenlist)] + if (Lenall==0) { + next + } + Naga <- Nagasa + Nten <- round(Lenall/Naga)+1 + if (Nten > 1) { + Seg <- Lenall/(Nten-1) + } + else { + Seg <- Lenall + } + Eps <- 10^(-6)*Seg + PPd<-c() + Hajime <- 1 + for (I in Looprange(0,Nten-1)) { + Len <- Seg*I + if (I>0) { + J <- Hajime + while( Len>=Lenlist[J]+Eps) { + J <- J+1 + } + Hajime <- J-1 + } + T <- (Len-Lenlist[Hajime])/ + (Lenlist[Hajime+1]-Lenlist[Hajime]) + P <- Data[Hajime,]+T*(Data[Hajime+1,]-Data[Hajime,]) + PPd<-Appendrow(PPd,P) + if (I==Nten-1) { + if (Norm(P-Data[1,])<Eps) { + next + } + } + } + for (I in Looprange(1,Nrow(PPd))){ + P<- Op(I,PPd) + if (Nrow(PPd)==1){ + V<- c(1,0) + } + else if (I==1){ + Tmp<- Op(I+1,PPd)-P + V<- 1/Norm(Tmp)*Tmp + } + else if (I==Nrow(PPd)){ + Tmp<- P-Op(I-1,PPd) + V<- 1/Norm(Tmp)*Tmp + } + else{ + Tmp1<- Op(I+1,PPd)-P + Tmp2<- P-Op(I-1,PPd) + Tmp3<-1/Norm(Tmp1)*Tmp1+1/Norm(Tmp2)*Tmp2 + V<- 1/Norm(Tmp3)*Tmp3 + } + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + Str=paste('\\put(',X,',',Y,'){\\circle*{',sprintf('%6.6f',Ra),'}}',sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu=Mojisu+nchar(Str) + if(Mojisu>80){ + cat("\n",file=Wfile,append=TRUE) + Mojisu=0 + } + } + } + } + if(Mojisu>0){ + cat("\n",file=Wfile,append=TRUE) + } + } + Tmp<-PenThick/PenThickInit + Setpen(Tmp) +} + + +########################################### + +Drwline<-function(...) +{ + varargin<-list(...) + Nall<-length(varargin) + Thick<-0 + Tmp<-varargin[[Nall]] + if (mode(Tmp)=="numeric" && length(Tmp)==1){ + Setpen(Tmp) + Nall<-Nall-1 + } + for (N in 1:Nall){ + Pdata<-varargin[[N]] + if (length(Pdata)==0) next + if (mode(Pdata)!="list") Pdata<-list(Pdata) + while(Mixtype(Pdata)==3){ + Tmp1<- list() + for(II in Looprange(1,length(Pdata))){ + Tmp1<- Mixjoin(Tmp1,Pdata[[II]]) + } + Pdata<- Tmp1 + } + for (II in Looprange(1,length(Pdata))){ + Clist<-MakeCurves(Pdata[[II]]) + DinM<-Dataindex(Clist) + for (n in Looprange(1,Nrow(DinM))){ + Tmp<-DinM[n,] + Data<-Clist[Tmp[1]:Tmp[2],] + Mojisu<-0 + for (I in Looprange(1,Nrow(Data))){ + Tmp<-Data[I,] + X=sprintf('%5.5f',Tmp[1]) + Y=sprintf('%5.5f',Tmp[2]) + Pt=paste('(',X,',',Y,')',sep="") + if(I==1){ + Str=paste('\\polyline',Pt,sep="") + }else{ + Str=Pt + } + cat(Str,file=Wfile,append=TRUE) + Mojisu<-Mojisu+nchar(Str) + if (Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<-0 + } + } + if (Mojisu!=0){ + cat("%\n",file=Wfile,append=TRUE) + } + cat("%\n",file=Wfile,append=TRUE) + } + } + } + if (Thick>0){ + Tmp<-PenThick/PenThickInit + Setpen(Tmp) + } +} + +########################################### + +Drwpt<-function(...) #190405 +{ + varargin<-list(...) + Nargs<-length(varargin) + All=Nargs + Same="y" + Incolor="" + Tmp=varargin[[All]] + if((is.numeric(Tmp))&&(length(Tmp)>2)){ #190405from + if(Tmp[1]==-1){ + Same="no" + }else{ + Tmp1=sapply(Tmp,as.character) + Incolor=paste("{",Tmp1[1],",",Tmp1[2],",",Tmp1[3],"}",sep="") + Same="n" + } + All=All-1 + }#190405to + Ra=TenSize*1000/2.54/MilliIn + for (II in Looprange(1,All)){ + MS<- varargin[[II]] + MS=Flattenlist(MS) #17.10.28 + if (mode(MS)=="numeric"){ + MS<- list(MS) + } + for (I in Looprange(1,length(MS))){ + P<- MS[[I]] + if (InWindow(P)!="i") next + P<- Doscaling(P) + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + if(Same!="no"){ #190405from + Str=paste("{\\linethickness{0 in}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + if(Same=="n"){ #190405 + Str1<- paste("{\\color[rgb]",Incolor,"%\n",sep="") + cat(Str1,file=Wfile,append=TRUE) + } + Str=paste('\\put(',X,',',Y,'){\\circle*{',sprintf('%6.6f',Ra),'}}%\n',sep="") + cat(Str,file=Wfile,append=TRUE) + if(Same=="n"){ + cat("}%\n",file=Wfile,append=TRUE) + } + cat("}%\n",file=Wfile,append=TRUE) + } + Str=paste('\\put(',X,',',Y,'){\\circle{',sprintf('%6.6f',Ra),'}}%\n',sep="") + cat(Str,file=Wfile,append=TRUE) + } + } # 190405to + cat("\n",file=Wfile,append=TRUE) +} + + +###################################### + +Makehasen<- function(Figdata,Sen,Gap,Ptn) +{ + Eps<- 10.0^(-6) + Clist<- MakeCurves(Figdata) + DinM<- Dataindex(Clist) + for (N in Looprange(1,Nrow(DinM))){ + Tmp<- DinM[N,] + Data<- Clist[Tmp[1]:Tmp[2],] + Dtall<- Nrow(Data) + Len<- 0 + Lenlist<- c(0) + for (I in Looprange(2,Dtall)){ + Len<- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist<- c(Lenlist,Len) + } + Lenall<- Lenlist[Dtall] + if (Lenall==0){ + next + } + Kari<- (Sen+Gap)*0.1 + Naga<- Sen*0.1 + Tobi<- Gap*0.1 + if (Norm(Data[1,]-Data[Dtall,])<Eps){ + Nsen<- max(ceiling(Lenall/Kari),3) + SegUnit<- Lenall/Nsen + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + if (Ptn==0){ + Nsen<- max(ceiling((Lenall+Tobi)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + Nsen<- max(ceiling((Lenall+Naga)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(Tobi,Tobi+(Nsen-2)*SegUnit,by=SegUnit)) + } + } + Hajime<- 1; Owari<- 1 + Mojisu<- 0 + for (I in Looprange(1,length(SegList))){ + Len<- SegList[I] + J<- Owari + while (Len>=Lenlist[J]-Eps){ + if (J==Dtall){ + break + } + J<- J+1 + } + Hajime<- J-1 + J<- Hajime + while (Len+Naga>Lenlist[J]-Eps){ + if (J==Dtall){ + break + } + J<- J+1 + } + Owari<- J-1 + T<- (Len-Lenlist[Hajime]) + T<- T/(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=paste('(',X0,',',Y0,')',sep="") + Str=paste('\\polyline',Pt0,sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + for (J in Looprange(Hajime+1,Owari)){ + P=Data[J,] + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + Pt=paste('(',X,',',Y,')',sep="") + Str=Pt + cat(Str,file=Wfile,append=TRUE) + Pt0=Pt + Mojisu=Mojisu+nchar(Str) + } + T<- (Len+Naga-Lenlist[Owari]) + T<- T/(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=paste('(',X,',',Y,')',sep="") + Str=Pt + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if (Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<- 0 + } + } + } + cat("%\n%\n",file=Wfile,append=TRUE); +} + +######################################### + +Beginpicture<-function(ul) +{ ## Scaling is implemented + Tmp<- Doscaling(c(XMIN,YMIN)) + Xm<- Tmp[1] + Ym<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + XM<- Tmp[1] + YM<- Tmp[2] + Dx<- XM-Xm + Dy<- YM-Ym + Sym<-".0123456789 +-*/" + SL<-Sym + OL<-"+-*/" + if (ul!=""){ + ULEN<<-ul; + } + Is<-1; + VL<-""; + Ucode<-ULEN + for (I in Looprange(1,nchar(Ucode))){ + C<-substring(Ucode,I,I); + if (length(grep(C,SL,fixed=TRUE))>0){ + if (length(grep(C,OL,fixed=TRUE))>0){ + Tmp<-substring(Ucode,Is,I-1); + Str<-paste(VL,Tmp,C,sep="") + VL<-Str + Is<-I+1; + } + } + else{ + Unit<-substring(Ucode,I,I+1); + Str<-substring(Ucode,Is,I-1); + VL<-paste(VL,Str,sep="") + break; + } + } + Valu<-eval(parse(text=VL)); + Str<-as.character(Valu); + ULEN<<- paste(Str,Unit,sep=""); + if (Unit=="cm") MilliIn<<-1000/2.54*Valu + if (Unit=="mm") MilliIn<<-1000/2.54*Valu/10 + if (Unit=="in") MilliIn<<-1000*Valu + if (Unit=="pt") MilliIn<<-1000/72.27*Valu + if (Unit=="pc") MilliIn<<-1000/6.022*Valu + if (Unit=="bp") MilliIn<<-1000/72*Valu + if (Unit=="dd2") MilliIn<<-1000/1238/1157/72.27*Valu + if (Unit=="cc") MilliIn<<-1000/1238/1157/72.27*12*Valu; + if (Unit=="sp") MilliIn<<-1000/72.27/65536*Valu/10 + MARKLEN<<- MARKLENNow*1000/2.54/MilliIn; + Str<-paste("{\\unitlength=",ULEN,"%\n",sep=""); + cat(Str,file=Wfile,append=TRUE); + cat("\\begin{picture}%\n",file=Wfile,append=TRUE); + Str<-"("; + Tmp<-as.character(round(Dx,digits=6)); + Str<-paste(Str,Tmp,",",sep=""); + Tmp<-as.character(round(Dy,digits=6)); + Str<-paste(Str,Tmp,")(",sep=""); + Tmp<-as.character(round(Xm,digits=6)); + Str<-paste(Str,Tmp,",",sep=""); + Tmp<-as.character(round(Ym,digits=6)); + Str<-paste(Str,Tmp,")%\n",sep=""); + cat(Str,file=Wfile,append=TRUE); + Str=paste('\\linethickness{',as.character(PenThickInit/1000),'in}%',sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +######################################### + +Setpen<-function(Width) +{ + PenThick<<-round(PenThickInit*Width) + Str=paste('\\linethickness{',as.character(PenThick/1000),'in}%',sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) +} + +######################################### + +Shade<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + Iroflg=0 + if(Nargs>1){ + Iro=varargin[[Nargs]] + if(is.character(Iro)){ + Iroflg=1 + if(length(grep("{",Iro,fixed=TRUE))>0){ + Str=paste("{\\color",Iro,sep="") + } + else{ + Str=paste("{\\color{",Iro,"}",sep="") + } + } + 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]{" + } + } + for(J in 1:length(Iro)){ + Str=paste(Str,as.character(Iro[J]),sep="") + if(J<length(Iro)){ + Str=paste(Str,",") + } + } + Str=paste(Str,"}") + } + } + if(Iroflg==1){ + Str=paste(Str,"%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + } + } + Mojisu=0 + Tmp=varargin[[1]] +# Data=Kyoukai(Tmp) + Data= Joincrvs(Tmp) #180929from + Data=list(Data) #180929to + for (I in Looprange(1, length(Data))){ + PL<- Op(I,Data) + PL=Appendrow(PL,Op(1,PL)) #180929 + Mojisu<- 0 + for (J in 1:Nrow(PL)){ + P<- Doscaling(Op(J,PL)) + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + Pt=paste('(',X,',',Y,')',sep="") + if(J==1){ + Str=paste('\\polygon*',Pt,sep="") + }else{ + Str=Pt + } + cat(Str,file=Wfile,append=TRUE) + Mojisu<- Mojisu+nchar(Str) + if (Mojisu>80){ + cat("%\n",file=Wfile,append=TRUE) + Mojisu<- 0 + } + } + } + if(Iroflg==1){ + Str='}%' + if(Mojisu>0){ + Str=paste('\n',Str,'\n',sep="") + }else{ + Str=paste(Str,'\n') + } + cat(Str,file=Wfile,append=TRUE) + } +} diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent_reptikz.r b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent_reptikz.r new file mode 100644 index 0000000000..c68ccc5e83 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/ketpiccurrent_reptikz.r @@ -0,0 +1,705 @@ +# 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/> + + +######################################### + +ThisVersion<- "tikzv1_1_1(190402)" + +# 2019.04.05 Drwpt ( Incolor, Takato) +# 2019.04.02 Beginpicture ( Unitlen, Takato) +# 2019.04.02 Drwline ( Sepen restore when finished, Takato) +# 2019.03.17 from 20190207 +# Ketinit, Beginpicture, Endpicture, Drwline, Setpen, Dottedline, Makehasen, Drwpt, Shade, Letter #from 20190317 + +########### Ketinit ############ + +Ketinit<- function(){ +XMIN<<- -5 +XMAX<<- 5 +YMIN<<- -5 ; YMAX<<- 5 +ZIKU<<- "l" +#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)*0.075 #from 20190317 +PenThickInit<<- PenThick +TenSizeInit<<- 0.02*2 #17.10.07 +TenSize<<- TenSizeInit +Wfile<<-"" +MEMORI<<- 0.05 +MEMORIInit<<- MEMORI +MEMORINow<<- MEMORI +MARKLEN<<- 0.05 +MARKLENInit<<- MARKLEN +MARKLENNow<<- MARKLEN +GENTEN<<- c(0,0) +YaSize<<- 1 +YaAngle<<- 18 +YaPosition<<- 1 +YaThick<<- 1 +YaStyle<<- "tf" +PHI<<- 30*pi/180 +THETA<<- 60*pi/180 +FocusPoint<<- c(0,0,0) +EyePoint<<- c(5,5,5) +ASSIGNLIST<<- list("`","'") + +SCALEX<<- 1 +SCALEY<<- 1 +LOGX<<- 0 +LOGY<<- 0 + +TEXFORLEVEL<<- 0 +TEXFORLAST<<- list() +} + +################### Beginpicture ###################### + +Beginpicture<-function(ul) +{ ## Scaling is implemented + Tmp<- Doscaling(c(XMIN,YMIN)) + Xm<- Tmp[1] + Ym<- Tmp[2] + Tmp<- Doscaling(c(XMAX,YMAX)) + XM<- Tmp[1] + YM<- Tmp[2] + Dx<- XM-Xm + Dy<- YM-Ym + Sym<-".0123456789 +-*/" + SL<-Sym + OL<-"+-*/" + if (ul!=""){ + ULEN<<-ul; + } + Is<-1; + VL<-""; + Ucode<-ULEN + for (I in Looprange(1,nchar(Ucode))){ + C<-substring(Ucode,I,I); + if (length(grep(C,SL,fixed=TRUE))>0){ + if (length(grep(C,OL,fixed=TRUE))>0){ + Tmp<-substring(Ucode,Is,I-1); + Str<-paste(VL,Tmp,C,sep="") + VL<-Str + Is<-I+1; + } + } + else{ + Unit<-substring(Ucode,I,I+1); + Str<-substring(Ucode,Is,I-1); + VL<-paste(VL,Str,sep="") + break; + } + } + Valu<-eval(parse(text=VL)); + Str<-as.character(Valu); + ULEN<<- paste(Str,Unit,sep=""); + if (Unit=="cm") MilliIn<<-1000/2.54*Valu + if (Unit=="mm") MilliIn<<-1000/2.54*Valu/10 + if (Unit=="in") MilliIn<<-1000*Valu + if (Unit=="pt") MilliIn<<-1000/72.27*Valu + if (Unit=="pc") MilliIn<<-1000/6.022*Valu + if (Unit=="bp") MilliIn<<-1000/72*Valu + if (Unit=="dd2") MilliIn<<-1000/1238/1157/72.27*Valu + if (Unit=="cc") MilliIn<<-1000/1238/1157/72.27*12*Valu; + if (Unit=="sp") MilliIn<<-1000/72.27/65536*Valu/10 + MARKLEN<<- MARKLENNow*1000/2.54/MilliIn; + Str<-paste("{\\unitlength=",ULEN,"%\n",sep=""); + cat(Str,file=Wfile,append=TRUE); + cat("\\begin{tikzpicture}[x=",ULEN,",y=",ULEN,"]%\n",file=Wfile,append=TRUE);#190404 + Str<-"\\clip ("; + Tmp<-as.character(round(Xm,digits=6)); + Str<-paste(Str,Tmp,",",sep=""); + Tmp<-as.character(round(Ym,digits=6)); + Str<-paste(Str,Tmp,") rectangle (",sep=""); + Tmp<-as.character(round(XM,digits=6)+0.5); + Str<-paste(Str,Tmp,",",sep=""); + Tmp<-as.character(round(YM,digits=6)+0.5); + Str<-paste(Str,Tmp,");%\n",sep=""); + cat(Str,file=Wfile,append=TRUE); +# Str=paste('\\linethickness{',as.character(PenThickInit/1000),'in}%',sep="") #20190207 +# cat(Str,file=Wfile,append=TRUE) +# cat("%\n",file=Wfile,append=TRUE) +} + +################### Endpicture ##################### + +Endpicture<-function(...) +{ + varargin<-list(...) + Nargs<-length(varargin) + if(Nargs==0) + { + Drwxy() + } + else + { + if(varargin[[1]]==1) Drwxy() + } + cat("\\end{tikzpicture}}%",file=Wfile,append=TRUE) + MEMORI<<-MEMORINow*1000/2.54/MilliIn + Setunitlen("1cm") +} + +##################### Drwline ###################### + +Drwline<-function(...) +{ + varargin<-list(...) + Nall <- length(varargin) + Tmp <- varargin[[Nall]] + Width <- PenThick/PenThickInit + Thick <- 1 + if (mode(Tmp)=="numeric" && length(Tmp)==1){ + Thick <- Tmp + Setpen(Width*Thick) + Nall <- Nall-1 + }else{ + Setpen(Width) + } + for (N in 1:Nall){ + Pdata <- varargin[[N]] + if (length(Pdata)==0) next + if (mode(Pdata)!="list") Pdata<-list(Pdata) + while(Mixtype(Pdata)==3){ + Tmp1 <- list() + for(II in Looprange(1,length(Pdata))){ + Tmp1 <- Mixjoin(Tmp1,Pdata[[II]]) + } + Pdata <- Tmp1 + } + for (II in Looprange(1,length(Pdata))){ + Clist <- MakeCurves(Pdata[[II]]) + DinM <- Dataindex(Clist) + for (n in Looprange(1,Nrow(DinM))){ + Tmp <- DinM[n,] + Data <- Clist[Tmp[1]:Tmp[2],] +# Mojisu <- 0 #from 20190317 + for (I in Looprange(1,Nrow(Data))){ + Tmp <- Data[I,] + X=sprintf('%5.5f',Tmp[1]) + Y=sprintf('%5.5f',Tmp[2]) + Pt=paste('(',X,',',Y,')',sep="") + if (I==1){ +# if (Width>1){ #from 20190317 + Str=paste('\\draw [line width=',round(PenThick,digit=6),']',Pt,sep="") +# }else{ +# if (Thick>1){ +# Str=paste('\\draw [line width=',round(PenThick,digit=6),']',Pt,sep="") +# }else{ +# Str=paste('\\draw [line width=',round(PenThick,digit=6),']',Pt,sep="") +# } +# } + }else{ + Str=paste('--',Pt,sep="") + } + cat(Str,file=Wfile,append=TRUE) +# Mojisu <- Mojisu+nchar(Str) +# if (Mojisu>80){ +# cat(";%\n",file=Wfile,append=TRUE) +# Mojisu <- 0 +# } + } +# if (Mojisu!=0){ +# cat(";%\n",file=Wfile,append=TRUE) +# } + cat(";%\n",file=Wfile,append=TRUE) + } + } + } + if (Thick!=1){ #from 20190402 + Setpen(Width) + } +} + +################### Setpen ###################### + +Setpen<-function(Width) +{ + PenThick <<- PenThickInit*Width #from 20190317 +# Str=paste('\\linethickness{',as.character(PenThick/1000),'in}%',sep="") +# cat(Str,file=Wfile,append=TRUE) +# cat("%\n",file=Wfile,append=TRUE) +} + +##################### Dottedline ######################## + +Dottedline<- function(...) +{ + varargin <- list(...) + Nall <- length(varargin) + Nagasa <- 0.1 + Ookisa <- PenThick*2 #17.10.07 + I <- Nall + Tmp <- varargin[[I]] + while (mode(Tmp)=="numeric" && length(Tmp)==1 ) { + I <- I-1 + Tmp <- varargin[[I]] + } + if (I==Nall-1) { + Nagasa<-Nagasa*varargin[[Nall]] + Nall <- Nall-1 + } + if (I==Nall-2) { + Nagasa <- Nagasa*varargin[[Nall-1]] + Ookisa <- round(Ookisa*varargin[[Nall]]) + Nall <- Nall-2 + } + Nagasa <- 1000/2.54/MilliIn*Nagasa + Ra=Ookisa/MilliIn + for (N in 1:Nall) { + Pdata <- varargin[[N]] + if (mode(Pdata)=="numeric") { + Pdata <- list(Pdata) + } + for (II in 1:length(Pdata)) { + Clist <- MakeCurves(Op(II,Pdata)) + DinM <- Dataindex(Clist) + Mojisu=0 + for (n in Looprange(1,Nrow(DinM))) { + Tmp <- DinM[n,] + Data <- Clist[Tmp[1]:Tmp[2],] + Len <- 0 + Lenlist <- c(0) + for (I in Looprange(2,Nrow(Data))) { + Len <- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist <- c(Lenlist,Len) + } + Lenall <- Lenlist[length(Lenlist)] + if (Lenall==0) { + next + } + Naga <- Nagasa + Nten <- round(Lenall/Naga)+1 + if (Nten > 1) { + Seg <- Lenall/(Nten-1) + } + else { + Seg <- Lenall + } + Eps <- 10^(-6)*Seg + PPd<-c() + Hajime <- 1 + for (I in Looprange(0,Nten-1)) { + Len <- Seg*I + if (I>0) { + J <- Hajime + while( Len>=Lenlist[J]+Eps) { + J <- J+1 + } + Hajime <- J-1 + } + T <- (Len-Lenlist[Hajime])/ + (Lenlist[Hajime+1]-Lenlist[Hajime]) + P <- Data[Hajime,]+T*(Data[Hajime+1,]-Data[Hajime,]) + PPd<-Appendrow(PPd,P) + if (I==Nten-1) { + if (Norm(P-Data[1,])<Eps) { + next + } + } + } + for (I in Looprange(1,Nrow(PPd))){ + P<- Op(I,PPd) + if (Nrow(PPd)==1){ + V<- c(1,0) + } + else if (I==1){ + Tmp<- Op(I+1,PPd)-P + V<- 1/Norm(Tmp)*Tmp + } + else if (I==Nrow(PPd)){ + Tmp<- P-Op(I-1,PPd) + V<- 1/Norm(Tmp)*Tmp + } + else{ + Tmp1<- Op(I+1,PPd)-P + Tmp2<- P-Op(I-1,PPd) + Tmp3<-1/Norm(Tmp1)*Tmp1+1/Norm(Tmp2)*Tmp2 + V<- 1/Norm(Tmp3)*Tmp3 + } + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + Str=paste('\\put(',X,',',Y,'){\\circle*{',sprintf('%6.6f',Ra),'}}',sep="") + cat(Str,file=Wfile,append=TRUE) + Mojisu=Mojisu+nchar(Str) + if(Mojisu>80){ + cat("\n",file=Wfile,append=TRUE) + Mojisu=0 + } + } + } + } + if(Mojisu>0){ + cat("\n",file=Wfile,append=TRUE) + } + } + Tmp<-PenThick/PenThickInit + Setpen(Tmp) +} + +################### Makehasen ################### + +Makehasen<- function(Figdata,Sen,Gap,Ptn) +{ + Width <- PenThick/PenThickInit #from 20190317 + Setpen(Width) #from 20190317 + Eps<- 10.0^(-6) + Clist<- MakeCurves(Figdata) + DinM<- Dataindex(Clist) + for (N in Looprange(1,Nrow(DinM))){ + Tmp<- DinM[N,] + Data<- Clist[Tmp[1]:Tmp[2],] + Dtall<- Nrow(Data) + Len<- 0 + Lenlist<- c(0) + for (I in Looprange(2,Dtall)){ + Len<- Len+Norm(Data[I,]-Data[I-1,]) + Lenlist<- c(Lenlist,Len) + } + Lenall<- Lenlist[Dtall] + if (Lenall==0){ + next + } + Kari<- (Sen+Gap)*0.1 + Naga<- Sen*0.1 + Tobi<- Gap*0.1 + if (Norm(Data[1,]-Data[Dtall,])<Eps){ + Nsen<- max(ceiling(Lenall/Kari),3) + SegUnit<- Lenall/Nsen + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + if (Ptn==0){ + Nsen<- max(ceiling((Lenall+Tobi)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/(Nsen*Sen+(Nsen-1)*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(0,(Nsen-1)*SegUnit,by=SegUnit)) + } + else{ + Nsen<- max(ceiling((Lenall+Naga)/Kari),3) + SegUnit<- Lenall*(Sen+Gap)/((Nsen-1)*Sen+Nsen*Gap) + Naga<- SegUnit*Sen/(Sen+Gap) + Tobi<- SegUnit*Gap/(Sen+Gap) + SegList<- c(seq(Tobi,Tobi+(Nsen-2)*SegUnit,by=SegUnit)) + } + } + Com=paste0('%%%%% start dashline, Senlength=',Sen,', Gaplength=',Gap,' %%%%%%') #from 20190317 + cat(Com,file=Wfile,append=TRUE) + cat(";%\n%\n",file=Wfile,append=TRUE); + Hajime<- 1; Owari<- 1 +# Mojisu<- 0 + for (I in Looprange(1,length(SegList))){ + Len<- SegList[I] + J<- Owari + while (Len>=Lenlist[J]-Eps){ + if (J==Dtall){ + break + } + J<- J+1 + } + Hajime<- J-1 + J<- Hajime + while (Len+Naga>Lenlist[J]-Eps){ + if (J==Dtall){ + break + } + J<- J+1 + } + Owari<- J-1 + T<- (Len-Lenlist[Hajime]) + T<- T/(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=paste('(',X0,',',Y0,')',sep="") + Str=paste('\\draw [line width=',round(PenThick,digits=6),']',Pt0,sep="") #from 20190317 + cat(Str,file=Wfile,append=TRUE) +# Mojisu<- Mojisu+nchar(Str) + for (J in Looprange(Hajime+1,Owari)){ + P=Data[J,] + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + Pt=paste(' -- (',X,',',Y,')',sep="") + Str=Pt + cat(Str,file=Wfile,append=TRUE) +# Pt0=Pt +# Mojisu=Mojisu+nchar(Str) + } + T<- (Len+Naga-Lenlist[Owari]) + T<- T/(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=paste(' -- (',X,',',Y,')',sep="") + Str=Pt + cat(Str,file=Wfile,append=TRUE) + cat(";%\n",file=Wfile,append=TRUE); #190412 +# Mojisu<- Mojisu+nchar(Str) +# if (Mojisu>80){ +# cat("%\n",file=Wfile,append=TRUE) +# Mojisu<- 0 +# } + } + Com=paste0('%%%%%% finish dashline, Senlength=',Sen,', Gaplength=',Gap,' %%%%%%') #from 20190317 + cat(Com,file=Wfile,append=TRUE) + cat(";%\n%\n",file=Wfile,append=TRUE); + } +# cat("%\n%\n",file=Wfile,append=TRUE); +} + +##################### Drwpt ###################### + +Drwpt<-function(...) #181230 +{ + varargin<-list(...) + Nargs<-length(varargin) + All=Nargs + Same="y" + Incolor="" + Tmp=varargin[[All]] + if((is.numeric(Tmp))&&(length(Tmp)>2)){ #190405from + if(Tmp[1]==-1){ + Same="no" + }else{ + Tmp1=sapply(Tmp,as.character) + Incolor=paste("{",Tmp1[1],",",Tmp1[2],",",Tmp1[3],"}",sep="") + Same="n" + } + All=All-1 + }#190405to + Ra=TenSize*1000/2.54/MilliIn + for (II in Looprange(1,All)){ + MS<- varargin[[II]] + MS=Flattenlist(MS) #17.10.28 + if (mode(MS)=="numeric"){ + MS<- list(MS) + } + for (I in Looprange(1,length(MS))){ + P<- MS[[I]] + if (InWindow(P)!="i") next + P<- Doscaling(P) + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + if(Same!="no"){ #190405from + Str=paste("{\\linethickness{0 in}",Incolor,sep="") + } + if(Same!="no"){ #190405from + Str=paste("{\\linethickness{0 in}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + if(Same=="n"){ #190405 + Str1<- paste("{\\color[rgb]",Incolor,"%\n",sep="") + cat(Str1,file=Wfile,append=TRUE) + } + Str=paste('\\put(',X,',',Y,'){\\circle*{',sprintf('%6.6f',Ra),'}}%\n',sep="") + cat(Str,file=Wfile,append=TRUE) + if(Same=="n"){ + cat("}%\n",file=Wfile,append=TRUE) + } + cat("}%\n",file=Wfile,append=TRUE) + } + Str=paste('\\put(',X,',',Y,'){\\circle{',sprintf('%6.6f',Ra),'}}%\n',sep="") + cat(Str,file=Wfile,append=TRUE) + } + } # 190405to + cat("\n",file=Wfile,append=TRUE) +} + +#################### Shade ##################### + +Shade<- function(...) +{ ## Scaling is implemented + varargin<- list(...) + Nargs<- length(varargin) + Iroflg=0 + if(Nargs>1){ + Iro=varargin[[Nargs]] + if(is.character(Iro)){ + Iroflg=1 + if(length(grep("{",Iro,fixed=TRUE))>0){ + Str=paste("{\\color",Iro,sep="") + } + else{ + Str=paste("{\\color{",Iro,"}",sep="") + } + } + 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]{" + } + } + for(J in 1:length(Iro)){ + Str=paste(Str,as.character(Iro[J]),sep="") + if(J<length(Iro)){ + Str=paste(Str,",") + } + } + Str=paste(Str,"}") + } + } + if(Iroflg==1){ + Str=paste(Str,"%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + } + } +# Mojisu=0 + Tmp=varargin[[1]] +# Data=Kyoukai(Tmp) + Data= Joincrvs(Tmp) #180929from + Data=list(Data) #180929to + for (I in Looprange(1, length(Data))){ + PL<- Op(I,Data) + PL=Appendrow(PL,Op(1,PL)) #180929 + Mojisu<- 0 + for (J in 1:Nrow(PL)){ + P<- Doscaling(Op(J,PL)) + X=sprintf('%5.5f',P[1]) + Y=sprintf('%5.5f',P[2]) + Pt=paste('(',X,',',Y,')',sep="") + if(J==1){ + Str=paste('\\fill',Pt,sep="") + }else{ + Str=paste('--',Pt,sep="") + } + cat(Str,file=Wfile,append=TRUE) +# Mojisu<- Mojisu+nchar(Str) +# if (Mojisu>80){ +# cat("%\n",file=Wfile,append=TRUE) +# Mojisu<- 0 +# } + } + cat(";%\n",file=Wfile,append=TRUE) + } +# if(Iroflg==1){ +# Str='}%\n' +# if(Mojisu>0){ +# Str=paste('\n',Str,'\n',sep="") +# }else{ +# Str=paste(Str,'\n') +# } +# cat(Str,file=Wfile,append=TRUE) +# } +} + +################## Letter #################### + +Letter<-function(...) +{ ## Scaling is implemented + varargin<-list(...) + Nargs<-length(varargin) + Irng<-c(seq(from=1,to=Nargs,by=3)) + for (I in Irng) + { + Tmp<-varargin[[I]] + P<- Doscaling(Tmp) + X<-P[1] + Y<-P[2] + Houkou<-varargin[[I+1]] + Mojiretu<-varargin[[I+2]] + if(length(grep("\\$",Mojiretu))>0) #from 20190317 + { + Mojiretu <- Mojiretu + } + else + { + Mojiretu <- paste0("$\\mathrm{",Mojiretu,"}$") + } + Hset<-Houkou + Vhoko<-"c" + if(length(grep("n",Hset))>0) + { + Vhoko<-"n"; Y<-Y+MEMORI + } + if(length(grep("s",Hset))>0) + { + Vhoko<-"s"; Y<-Y-MEMORI + } + Hhoko<-"c" + if(length(grep("e",Hset))>0) + { + Hhoko<-"e"; X<-X+MEMORI + } + if(length(grep("w",Hset))>0) + { + Hhoko<-"w"; X<-X-MEMORI + } + Hoko<-paste(Vhoko,Hhoko,sep="") + Suu<-"+-.0123456789" + SuuL<-Suu + J<-1; Dstr<-"" + while (J<=nchar(Houkou)) + { + Tmp<-substring(Houkou,J,J) + if(length(grep(Tmp,SuuL))>0) + { + if(Dstr=="") Hk<-substring(Houkou,J-1,J-1) + Dstr<-paste(Dstr,Tmp,sep="") + } + else + { + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + Dstr<-"" + } + } + J<-J+1 + } + if(Dstr!="") + { + Nmbr<-as.numeric(Dstr) + D<-Nmbr*MEMORI; + if(Hk=="n") Y<-Y+D + if(Hk=="s") Y<-Y-D + if(Hk=="e") X<-X+D + if(Hk=="w") X<-X-D + } + CalcWidth(Hoko,Mojiretu) + CalcHeight(Hoko,Mojiretu) + cat("\\put(",file=Wfile,append=TRUE) + Tmp1<- sprintf("%7.7f",X) # 11.07.19 + Tmp2<- sprintf("%7.7f",Y) # 11.07.19 + Str<-paste(Tmp1,",",Tmp2,sep="") + cat(Str,file=Wfile,append=TRUE) + Tmp<-"){\\hspace*{\\Width}" + Str<-paste(Tmp,"\\raisebox{\\Height}{",Mojiretu,"}}%\n",sep="") + cat(Str,file=Wfile,append=TRUE) + cat("%\n",file=Wfile,append=TRUE) + } +} diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/fourier_sec.max b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/fourier_sec.max new file mode 100644 index 0000000000..c70f7f465d --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/matoperation.max b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/matoperation.max new file mode 100644 index 0000000000..512a9ffb66 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/pdefourier.mac b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/pdefourier.mac new file mode 100644 index 0000000000..7b968144a0 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/pdefourier.mac @@ -0,0 +1,1199 @@ +/* +Fourier analysis Maxima package + +Authors: Jose A. Vallejo + Faculty of Sciences + Universidad Autonoma de San Luis Potosi (Mexico) + http://galia.fc.uaslp.mx/~jvallejo + + Emmanuel Roque + Faculty of Sciences + Universidad Autonoma de San Luis Potosi (Mexico) +*/ + +load(fourie)$ +load(simplify_sum)$ +load(draw)$ +/*The following rules are intented to work with intervals in "a canonical way" +leq,geq,lss,grtr are for bounded intervals + + +Note: Instead of using constantp inside of matchdeclare, numberp but this approach won't work if %pi is used, so probably is not an option since this is a Fourier package and %pi will appear most of the time. Another possible approach is to use freeof(var) instead of constantp +*/ +matchdeclare(constn, constantp)$ +defrule(leq,constn>=xx,xx<=constn)$ +defrule(geq,xx>=constn,constn<=xx)$ +defrule(lss,constn>xx,xx<constn)$ +defrule(grtr,xx>constn,constn<xx)$ + +/* fun_parts(expr,var) +Input: piecewise defined function written in one of the following ways + +if x>=a_0 and x<=a_1 then expr1 elseif x>a_1 and x<= a_2 then expr2 ... elseif x>a_n and x<=a_{n+1} then expr_{n+1} + +if x<=a_0 then expr0 elseif x>a0 and x<=a1 then expr1 ... elseif x>=a_n then exprn + +Output: A list [[a0,a1,expr1],[a1,a2,expr2,]...] + +Important notes: +-In all cases it is expected that a_i<a_{i+1} +Writing (x<=7 and x>=6) instead of (x>=6 and x<=7) does not work. +-If in the function definition some of the intervals are empty (e.g x>=3 and x<=-3) returns error. +-Use of else is currently unsupported, the expr after else is ignored! Use elseif instead. +-functionality with logical operator "or" is currently unsupported, will be treated same as "and". +-fun_parts does not check if the intervals are disjoint! +*/ + +fun_parts(expr,var):=block( + [subint,subval,tmp,ll,tmp1,tmp2,xx,ans,tmp3,tmpb,leftU,rightU], + if not piecewisep(expr) then error("The function is not piecewise defined") else ( + xx:var, + ll:(length(expr)-2)/2, + tmp:makelist(inpart(expr,i),i,makelist(2*k-1,k,1,ll)), + subval:makelist(inpart(expr,i),i,makelist(2*k,k,1,ll)), + tmp1:makelist(operatorp(tmp[j],["<",">","<=",">="]),j,1,ll), + tmp2:sublist_indices(tmp1,lambda([x],x=true)), + /*if tmp2 is an empty list then all the intervals in the domain + of the function are bounded */ + if emptyp(tmp2) then( + /*Get rid of logical operators*/ + tmp:makelist(makelist(inpart(tmp[k],i),i,1,2),k,1,ll), + /*Use canonical ordering*/ + tmp:apply1(tmp,leq,geq,lss,grtr), + /*Extract subintervals*/ + subint:makelist(makelist(inpart(tmp[i][j],j),j,1,2),i,1,ll), + /*Check for ill defined subintervals*/ + tmp3:map(lambda([L],lfreeof(L,var)),subint), + if not emptyp(sublist_indices(tmp3,lambda([x],x=false))) then + error("Check function definition, some interval(s) appear to be empty or ill-defined. Read documentation for further details.") + else (ans:makelist([subint[k],subval[k]],k,1,ll), + return(ans) ) + ) + /*Function is not bounded*/ + else( + if not is(tmp2=[1,ll]) then error("Check function definition, some interval(s) appear to be empty or ill-defined. Read documentation for further details.") + else (if is(ll=2) then( + tmp:apply1(tmp,leq,geq,lss,grtr), + leftU:[[minf,inpart(tmp[1],2)],subval[1]], + rightU:[[inpart(tmp[2],1),inf],subval[2]], + ans:[leftU,rightU], + return(ans) + ) + elseif is(ll>2) then( + leftU:apply1(tmp[1],leq,geq,lss,grtr), + rightU:apply1(tmp[ll],leq,geq,lss,grtr), + leftU:[[minf,inpart(leftU,2)],subval[1]], + rightU:[[inpart(rightU,1),inf],subval[ll]], + /*Get rid of logical operators in the bounded intervals*/ + tmpb:makelist(makelist(inpart(tmp[k],i),i,1,2),k,2,ll-1), + /*Use canonical ordering*/ + tmpb:apply1(tmpb,leq,geq,lss,grtr), + /*Extract bounded subintervals*/ + subint:makelist(makelist(inpart(tmpb[i][j],j),j,1,2),i,1,ll-2), + /*Check for ill-defined subintervals*/ + tmp3:map(lambda([L],lfreeof(L,var)),subint), + if not emptyp(sublist_indices(tmp3,lambda([x],x=false))) then + error("Check function definition, some interval(s) appear to be empty or ill-defined. Read documentation for further details.") + else ( ans:append([leftU],makelist([subint[k],subval[k+1]],k,1,ll-2),[rightU]), + return(ans)) + ) + + ) + ) +))$ + +/*bint_comp(L1,L2,var) +Bounded intervals comparison +Input: Two lists, L1 and L2, each one having the following format +[[a_i,b_i],expr_i] +Output: A flag used by parityL +*/ + +bint_comp(L1,L2,var):=block( + if is(L1[1][1]=-L2[1][2]) and is(L1[1][2]=-L2[1][1]) then( + if is(L1[2]=0) and is(L2[2]=0) then return('zero) + elseif equalp(L1[2],ratsubst(-var,var,L2[2])) then return('even) + elseif equalp(L1[2],-ratsubst(-var,var,L2[2])) then return('odd) else return('none) + ) + else return('none) +)$ +/* uint_comp(L1,L2,var) +Unbounded intervals comparison +Input: Two list, L1 and L2, corresponding to unbounded intervals in +the following format +[[minf,b_1],expr1] or [[a_2,inf],expr2] +Output: A flag used by parityL +It is assumed that parity check has already checked if a_1,b_2 are equal to minf,inf respectively. +*/ +uint_comp(L1,L2,var):=block( + if is(L1[1][2]=-L2[1][1]) then( + if is(L1[2]=0) and is(L2[2]=0) then return('zero) + elseif equalp(L1[2],ratsubst(-var,var,L2[2])) then return('even) + elseif equalp(L1[2],-ratsubst(-var,var,L2[2])) then return('odd) else return('none) + ) + else return('none) +)$ + +/*parityb(L,var) +Input: A list returned by fun_parts of a bounded function +Output: A list used by parityL +*/ +parityb(L,var):=block( + [ll,icentral,aux,ans,llaux,Laux,paux], + ll:length(L), + /* Trivial case, just check if the only interval has + an even expression, an odd expression or neither of them.*/ + if is(ll=1) and is(L[1][1][1]=-L[1][1][2]) then( + if evenfunp(L[1][2],var) then return('even) + elseif oddfunp(L[1][2],var) then return('odd) + else return('none) + ) + elseif is(ll>1) then( + icentral:0, + /*Search if there is a central interval*/ + for i:1 thru ll do (if is(L[i][1][1]*L[i][1][2]<0) then icentral:i), + /*Case 1: icentral=0 */ + if is(icentral=0) then( + if not evenp(ll) then return('none) else( + aux:makelist(bint_comp(L[i],L[ll+1-i],var),i,1,ll/2), + if is(length(sublist_indices(aux,lambda([x],x=even or x=zero)))=ll/2) + then return('even) + elseif is(length(sublist_indices(aux,lambda([x],x=odd or x=zero)))=ll/2) + then return('odd) + else return('none) + ) + ) + /*icentral>0*/ + elseif is(icentral>0) and oddp(ll) then( + /*Check parity of central element*/ + if is(L[icentral][1][1]=-L[icentral][1][2]) then ( + if evenfunp(L[icentral][2],var) then paux:'even + elseif oddfunp(L[icentral][2],var) then paux:'odd + else return('none), + Laux:delete(L[icentral],L), + aux:makelist(bint_comp(Laux[i],Laux[ll-i],var),i,1,(ll-1)/2), + if is(length(sublist_indices(aux,lambda([x],x=even or x=zero)))=(ll-1)/2) and is(paux=even) + then return('even) + elseif is(length(sublist_indices(aux,lambda([x],x=odd or x=zero)))=(ll-1)/2) and is(paux=odd) + then return('odd) + else return('none) + ) + else return('none) + ) + ))$ + + + +/*parityL(L,var) + +Input: A list returned by fun_parts +Output: the parity of the function + +Important notes: +- +*/ +parityL(L,var):=block( + [aux1,aux2,Laux,ll], + ll:length(L), + if (not boundedp(L)) and is(ll=2) then( + if is(uint_comp(L[1],L[2],var)=zero) or is(uint_comp(L[1],L[2],var)=even) then return('even) + elseif is(uint_comp(L[1],L[2],var)=odd) then + return('odd) + else return('none) + ) + /*Check if there are unbounded intervals*/ + elseif (not boundedp(L)) and is(ll>2) then( + aux1:uint_comp(L[1],L[ll],var), + Laux:delete(L[1],L), + Laux:delete(L[ll],Laux), + aux2:parityb(Laux,var), + if (is(aux1=zero) and is(aux2=even)) or + (is(aux1=even) and is(aux2=even)) then + return('even) elseif (is(aux1=zero) and is(aux2=odd)) or + (is(aux1=odd) and is(aux2=odd)) then return('odd) + else return('none) + ) + else return(parityb(L,var)) + +)$ +boundedp(L):=block( + [ll], + ll:length(L), + if is(L[1][1][1]=minf) and is (L[ll][1][2]=inf) + then return(false) + else return(true) +)$ + +piecewisep(expr):=if atom(expr) then false else is(inpart(expr,0)="if")$ +paritycheck(expr,var):=block( + if piecewisep(expr) then return(parityL(fun_parts(expr,var),var)) + elseif listp(expr) then return(parityL(expr,var)) + else ( + if equalp(ratsubst(-var,var,expr),expr) then return('even) + elseif equalp(ratsubst(-var,var,expr),-expr) then return('odd) + else return('none) + ) +)$ + +/*Check if the domain is bounded and symmetric [-L,L] +symbintp(L) +intput: a list L returned by fun_parts +output: true or false +*/ + +symbintp(L):=if boundedp(L) and is(L[1][1][1]=-L[length(L)][1][2]) then L[length(L)][1][2] else false$ + +/*integratepw(L,var) + +Integrate the list form of a piecewise defined function + +*/ + +integratepw(L,var):=block( + [ll], + ll:length(L), + return(sum(integrate(L[i][2],var,L[i][1][1],L[i][1][2]),i,1,ll)) +)$ + +/* sum2list(expr) +Auxiliary function +Input: An expression +Output: A list whose elements are the terms of expression + +Important notes: sum2list does not check by itself if op(expr)="+" or not*/ + +sum2list(expr):= if is(expr=0) then [0] elseif is(nterms(expr)=1) then [expr] else args(expr)$ + +/*secsum2bl(L) +Input: A list as in fun_parts output format +Output: +*/ +secsum2bl(L):=block( + [ll,laux], + ll:length(L), + laux:makelist(i,i,1,ll), + create_list([L[i][1],y],i,laux,y,sum2list(L[i][2])) +)$ + +/*Match rules for special cases*/ +matchdeclare(nexp,lambda([e],e#0 and nonnegintegerp(e)))$ +matchdeclare(nfreq,lambda([e],e#0 and nonnegintegerp(e)))$ +matchdeclare(const,lambda([e],e#0 and freeof(xargument,e)))$ +/*matchdeclare(argtrig,lambda([e],e#0 and constantp(e)))$ +defmatch(powx,const*xargument^nexp,xargument)$*/ +defmatch(powxsin,const*xargument^nexp*sin(nfreq*%pi*xargument/pargument),xargument,pargument)$ +defmatch(powxcos,const*xargument^nexp*cos(nfreq*%pi*xargument/pargument),xargument,pargument)$ +defmatch(multsin,const*sin(nfreq*%pi*xargument/pargument),xargument,pargument)$ +defmatch(multcos,const*cos(nfreq*%pi*xargument/pargument),xargument,pargument)$ +/*powxcos_int +Computes \int_a^b (x^r*cos(n*%pi*x/L)dx for r>=0 +*/ +powxcos_int(pow,freq,p,a,b):=block( + if is(freq=0) then (b^(pow+1)-a^(pow+1))/(pow+1) + elseif is(pow=0) then (p/(%pi*freq))*(sin(freq*%pi*b/p)-sin(freq*%pi*a/p)) + elseif is(pow>0) then (p/(%pi*freq))*(b^pow*sin(freq*%pi*b/p)-a^pow*sin(freq*%pi*a/p))-(p*pow/(freq*%pi)*powxsin_int(pow-1,freq,p,a,b)) +)$ +/*powxsin_int +Computes \int_a^b x^r*sin(n*%pi*x/L) dx for r>=0 */ +powxsin_int(pow,freq,p,a,b):=block( + if is(freq=0) then 0 + elseif is(pow=0) then (p/(%pi*freq))*(cos(freq*%pi*a/p)-cos(freq*%pi*b/p)) + elseif is(pow>0) then (p/(%pi*freq))*(a^pow*cos(freq*%pi*a/p)-b^pow*cos(freq*%pi*b/p))+(p*pow/(freq*%pi)*powxcos_int(pow-1,freq,p,a,b)) +)$ +/*Heuristic a_n + +*/ +heuristic_an(expr,var,p,a,b):=block( + [n,ans], + declare(n,integer), + if listp(powxsin(expr,var,p)) then ( + if is(a=-b) and evenp(nexp) then 0 else( + ans:(const/(2*p))*powxsin_int(nexp,nfreq+n,p,a,b)+ev((const/(2*p))*powxsin_int(nexp,nfreq-n,p,a,b),noeval,n), + remove(n,integer), + ans + ) + ) + elseif listp(powxcos(expr,var,p)) then ( + if is(a=-b) and oddp(nexp) then 0 else( + ans:(const/(2*p))*powxcos_int(nexp,nfreq+n,p,a,b)+ev((const/(2*p))*powxcos_int(nexp,nfreq-n,p,a,b),noeval,n), + remove(n,integer), + ans) + ) + elseif listp(multsin(expr,var,p)) then( + if is(a=-b) then 0 else( + ans:(const/(2*p))*powxsin_int(0,nfreq+n,p,a,b)+ev((const/(2*p))*powxsin_int(0,nfreq-n,p,a,b),noeval,n), + remove(n,integer), + ans + ) + ) + elseif listp(multcos(expr,var,p)) then ( + ans:(const/(2*p))*powxcos_int(0,nfreq+n,p,a,b)+ev((const/(2*p))*powxcos_int(0,nfreq-n,p,a,b),noeval,n), + remove(n,integer), + ans + ) + else( + ans:adefint(expr*cos(n*%pi*var/p),var,a,b)/p, + remove(n,integer), + ans + ) +)$ +/*Heuristic b_n + +*/ +heuristic_bn(expr,var,p,a,b):=block( + [n,ans], + declare(n,integer), + if listp(powxsin(expr,var,p)) then ( + if is(a=-b) and oddp(nexp) then 0 else( + ans:(-const/(2*p))*powxcos_int(nexp,nfreq+n,p,a,b)+ev((const/(2*p))*powxcos_int(nexp,nfreq-n,p,a,b),noeval,n), + remove(n,integer), + ans + ) + ) + elseif listp(powxcos(expr,var,p)) then ( + if is(a=-b) and evenp(nexp) then 0 else( + ans:(const/(2*p))*powxsin_int(nexp,nfreq+n,p,a,b)+ev((const/(2*p))*powxsin_int(nexp,n-nfreq,p,a,b),noeval,n), + remove(n,integer), + ans + ) + ) + elseif listp(multsin(expr,var,p)) then( + ans:(-const/(2*p))*powxcos_int(0,nfreq+n,p,a,b)+ev((const/(2*p))*powxcos_int(0,nfreq-n,p,a,b),noeval,n), + remove(n,integer), + ans + ) + elseif listp(multcos(expr,var,p)) then ( + if is(a=-b) then 0 else( + ans:(const/(2*p))*powxsin_int(0,nfreq+n,p,a,b)+ev((const/(2*p))*powxsin_int(0,n-nfreq,p,a,b),noeval,n), + remove(n,integer), + ans + ) + ) + else( + ans:adefint(expr*sin(n*%pi*var/p),var,a,b)/p, + remove(n,integer), + ans + ) +)$ + +/*foucoeffpw(L,var) +Fourier coefficients of a piecewise defined function +Currently it only works with functions defined on an interval of the form [-p,p]. +The output is a list of the form [a0,a1,b1,an,bn] +*/ + +foucoeffpw(L,var):=block( + [llaux,ll,a0,an,bn,answ,lm], + ll:length(L), + lm:(L[ll][1][2]-L[1][1][1])/2, /*For more general intervals*/ + Laux:secsum2bl(L), + llaux:length(Laux), + if is(parityL(L,var)=odd) then ( + a0:0, an:0, + bn:sum(heuristic_bn(Laux[i][2],var,lm,Laux[i][1][1],Laux[i][1][2]),i,1,llaux), + answ:[a0,an,simplify_sum(bn)], + return(ratsimp(answ))) + elseif is(parityL(L,var)=even) then ( + a0:(1/(2*lm))*integratepw(L,var), + an:sum(heuristic_an(Laux[i][2],var,lm,Laux[i][1][1],Laux[i][1][2]),i,1,llaux), + bn:0, + answ:[simplify_sum(a0),simplify_sum(an),bn], + return(ratsimp(answ))) + else( + a0:(1/(2*lm))*integratepw(L,var), + an:sum(heuristic_an(Laux[i][2],var,lm,Laux[i][1][1],Laux[i][1][2]),i,1,llaux), + bn:sum(heuristic_bn(Laux[i][2],var,lm,Laux[i][1][1],Laux[i][1][2]),i,1,llaux), + answ:[a0,an,bn], + answ:map(simplify_sum,answ), + return(ratsimp(answ) )) +)$ + +foucoeffterm(term,var,p):=block( + [a0,bn,an,ans], + if listp(term) then( + /* if is(symbintp(term,var)=p) then */ + return(foucoeffpw(term,var)) + /* else error("Domain of the piecewise function is not valid. Read the documentation for further details")*/ + ) + elseif piecewisep(term) then( + /*Check if the domain is valid*/ + /*if is(symbintp(fun_parts(term,var))=p) then*/ + if is(boundedp(fun_parts(term,var))) then + return(foucoeffpw(map(lambda([e],[e[1],expand(trigrat(e[2]))]),fun_parts(term,var)),var)) + else error("Domain of the piecewise function is not valid. Read the documentation for further details") + ) + else( + /*Check parity of term*/ + if is(paritycheck(term,var)=even) then( + a0:ratsimp((1/(2*p))*adefint(term,var,-p,p)), + an:heuristic_an(term,var,p,-p,p), + bn:0, + ans:ratsimp([a0,an,bn]), + return(ans) + ) + elseif is(paritycheck(term,var)=odd) then( + a0:0, an:0, + bn:heuristic_bn(term,var,p,-p,p), + ans:ratsimp([a0,an,bn]), + return(ans) + ) + else( + a0:ratsimp((1/(2*p))*adefint(term,var,-p,p)), + an:heuristic_an(term,var,p,-p,p), + bn:heuristic_bn(term,var,p,-p,p), + ans:ratsimp([a0,an,bn]), + return(ans) + ) + ) +)$ + +list2bl(L):=block( + [ll,laux], + ll:length(L), + laux:makelist(i,i,1,ll), + create_list(y,i,laux,y,sum2list(L[i])) +)$ + +trigpattern(term,var,p):=block( + if listp(powxsin(term,var,p)) then return(nfreq) + elseif listp(powxcos(term,var,p)) then return(nfreq) + elseif listp(multcos(term,var,p)) then return(nfreq) + elseif listp(multsin(term,var,p)) then return(nfreq) + else return(false) +)$ + +searchpoles_term(term,var,p):=block( + [L,Laux,indx_aux,indx], + if listp(term) then( + L:secsum2bl(term), + indx_aux:map(lambda([e],trigpattern(e[2],var,p)),L), + indx:unique(sublist(indx_aux,integerp)), + return(indx) + ) + elseif piecewisep(term) then( + Laux:map(lambda([e],[e[1],expand(trigrat(e[2]))]),fun_parts(term,var)), + L:secsum2bl(Laux), + indx_aux:map(lambda([e],trigpattern(e[2],var,p)),L), + indx:unique(sublist(indx_aux,integerp)), + return(indx) + ) else( + indx_aux:trigpattern(term,var,p), + if integerp(indx_aux) then return([indx_aux]) + else return([]) + ) +)$ + +searchpoles(expr,var,p):=block( + [L,Laux,indx], + Laux:sum2list(expand(expr)), + Laux:map(lambda([e],if not piecewisep(e) then expand(trigrat(e)) else e),Laux), + L:list2bl(Laux), + indx:apply(append,map(lambda([e],searchpoles_term(e,var,p)),L)), + return(unique(indx)) + )$ + +fouriercoeff(expr,var,p):=block( + [ans,Llist,Laux,coeffpoles,poles,n], + Laux:sum2list(expand(expr)), + Llist:map(lambda([e],if not piecewisep(e) then expand(trigrat(e)) else e),Laux), + Llist:list2bl(Llist), + ans:lsum(y,y,map(lambda([e],foucoeffterm(e,var,p)),Llist)), + ans:ratsimp(ans), + poles:searchpoles(expr,var,p), + coeffpoles:makelist(at([i,ans[2],ans[3]],n=i),i,poles), + declare(n,integer), + coeffpoles:ev(coeffpoles), + ans:ev(ans), + remove(n,integer), + return(ratsimp([ans,coeffpoles])) +)$ + +fouriercoeff_expand(fcoeff,var,p,NN):=block( + [ans,a0,an,bn,poles,indx_poles,polessum,sl_indx,laux], + [[a0,an,bn],poles]:fcoeff, + an:ev(an), + bn:ev(bn), + if emptyp(poles) then( + ans:a0+sum(at(an*cos(n*%pi*var/p)+bn*sin(n*%pi*var/p),n=n),n,1,NN), + return(ans) + ) else( + indx_poles:makelist(poles[i][1],i,1,length(poles)), + if is(NN=inf) then( + polessum:sum(poles[i][2]*cos(poles[i][1]*%pi*var/p)+poles[i][3]*sin(poles[i][1]*%pi*var/p),i,1,length(poles)), + ans:a0+polessum+sum(at(an*cos(n*%pi*var/p)+bn*sin(n*%pi*var/p),n=n),n,1,inf), + if is(an=0) and is(bn=0) then return(ans), + print("The sum is over \\N -",setify(indx_poles)), + return(ans) + ) + else( + sl_indx:sublist_indices(indx_poles,lambda([e],is(e<=NN))), + polessum:lsum(poles[i][2]*cos(poles[i][1]*%pi*var/p)+poles[i][3]*sin(poles[i][1]*%pi*var/p),i,sl_indx), + laux:listify(setdifference(setify(makelist(i,i,1,NN)),setify(indx_poles))), + ans:a0+polessum+lsum(at(an*cos(n*%pi*var/p)+bn*sin(n*%pi*var/p),n=i),i,laux), + return(ans) + ) + ) +)$ + +fourier_series(expr,var,p,NN):=block( + [fcoeff,ans], + fcoeff:fouriercoeff(expr,var,p), + ans:fouriercoeff_expand(fcoeff,var,p,NN), + ans +)$ + +fourier_amplitudes(expr,var,p,N):=block( + [a0,an,bn,ans,poles,indx_poles,polelist,sl_indx,laux], + [[a0,an,bn],poles]:fouriercoeff(expr,var,p), + an:ev(an), + bn:ev(bn), + if emptyp(poles) then( + ans:makelist(at([n,sqrt(an^2+bn^2)],n=i),i,1,N), + /*ans:float(ans),*/ + return(ans)) else( + indx_poles:makelist(poles[i][1],i,1,length(poles)), + sl_indx:sublist_indices(indx_poles,lambda([e],is(e<N))), + polelist:makelist([poles[i][1],sqrt(poles[i][2]^2+poles[i][3]^2)],i,sl_indx), + laux:listify(setdifference(setify(makelist(i,i,1,N)),setify(indx_poles))), + ans:append(polelist,makelist(at([n,sqrt(an^2+bn^2)],n=i),i,laux)), + /*ans:float(ans),*/ + ans:sort(ans,lambda([a,b],a[1]<b[1])), + return(ans) + ) +)$ + +fourier_freq_list(expr,var,p,N):=block( + [modules], + modules:float(fourier_amplitudes(expr,var,p,N)) +)$ + +fourier_freq(expr,var,p,N):=block( + [modules], + modules:float(fourier_amplitudes(expr,var,p,N)), + draw2d(points_joined=impulses,line_width=4,color="blue",points(modules), + xlabel="w(n)=nw_0",ylabel="|c_n|",axis_top=false,axis_right=false,xtics=1,user_preamble="set grid ytics") +)$ + +wxfourier_freq(expr,var,p,N):=block( + [modules], + modules:float(fourier_amplitudes(expr,var,p,N)), + wxdraw2d(points_joined=impulses,line_width=4,color="blue",points(modules), + xlabel="w(n)=nw_0",ylabel="|c_n|",axis_top=false,axis_right=false,xtics=1,user_preamble="set grid ytics") +)$ + +atan_fourier(an,bn):=if is(an=0) and is(bn=0) then 0 else atan2(an,bn)$ + +fourier_phshift(expr,var,p,N):=block( + [a0,an,bn,ans,poles,indx_poles,polelist,sl_indx,laux], + [[a0,an,bn],poles]:fouriercoeff(expr,var,p), + an:ev(an), + bn:ev(bn), + if emptyp(poles) then( + ans:makelist([i,atan_fourier(at(bn,n=i),at(an,n=i))],i,1,N), + /*ans:float(ans),*/ + return(ans)) else( + indx_poles:makelist(poles[i][1],i,1,length(poles)), + sl_indx:sublist_indices(indx_poles,lambda([e],is(e<N))), + polelist:makelist([poles[i][1],atan_fourier(poles[i][3],poles[i][2])],i,sl_indx), + laux:listify(setdifference(setify(makelist(i,i,1,N)),setify(indx_poles))), + ans:append(polelist,makelist([i,atan_fourier(at(bn,n=i),at(an,n=i))],i,laux)), + /*ans:float(ans),*/ + ans:sort(ans,lambda([a,b],a[1]<b[1])), + return(ans) + ) +)$ + + + +fourier_harm(expr,var,p,N):=block( + [amplitudes,phshift,ans], + amplitudes:fourier_amplitudes(expr,var,p,N), + phshift:fourier_phshift(expr,var,p,N), + ans:makelist(amplitudes[i][2]*cos(i*%pi*var/p-phshift[i][2]),i,1,N), + return(ans) +)$ + +chop(expr,[N]):=if emptyp(N) then scanmap(lambda([x],if is(numberp(x)) then (if is(abs(x)<1.0*10^(-12)) then 0.0 else x) else x),expr) +else scanmap(lambda([x],if is(numberp(x)) then (if is(abs(x)<1.0*10^(-N[1])) then 0.0 else x) else x),expr)$ + +oddextension_pwterm(L,var):=block( + [Laux], + Laux:[[-L[1][2],-L[1][1]],-ratsubst(-x,x,L[2])], + Laux +)$ + +oddextensionpw(L,var):=block( + [Lodd], + Lodd:append(reverse(map(lambda([e],oddextension_pwterm(e,var)),L)),L), + Lodd +)$ + +evenextension_pwterm(L,var):=block( + [Laux], + Laux:[[-L[1][2],-L[1][1]],ratsubst(-x,x,L[2])], + Laux +)$ + +evenextensionpw(L,var):=block( + [Lodd], + Lodd:append(reverse(map(lambda([e],evenextension_pwterm(e,var)),L)),L), + Lodd +)$ + +odd_extension(expr,var,p):=block( + [Laux], + if piecewisep(expr) then( + Laux:fun_parts(expr,var), + if is(Laux[1][1][1]=0) and is(Laux[length(Laux)][1][2]=p) then return(oddextensionpw(Laux,var)) + else error("The domain must be of the form [0,p]") + ) + else( + Laux:[[[0,p],expr]], + return(oddextensionpw(Laux,var)) + ) +)$ + +even_extension(expr,var,p):=block( + [Laux], + if piecewisep(expr) then( + Laux:fun_parts(expr,var), + if is(Laux[1][1][1]=0) and is(Laux[length(Laux)][1][2]=p) then return(evenextensionpw(Laux,var)) + else error("The domain must be of the form [0,p]") + ) + else( + Laux:[[[0,p],expr]], + return(evenextensionpw(Laux,var)) + ) +)$ + +/*foucoscoeff(expr,var,p):=block( + [Laux,fcoeff,a0,an,bn,poles], + Laux:even_extension(expr,var,p), + [[a0,an,bn],poles]:fouriercoeff(Laux,var,p), + fcoeff:[[a0,an],map(lambda([e],[e[1],e[2]]),poles)], + return(fcoeff) +)$ + +fousincoeff(expr,var,p):=block( + [Laux,fcoeff,a0,an,bn,poles], + Laux:odd_extension(expr,var,p), + [[a0,an,bn],poles]:fouriercoeff(Laux,var,p), + fcoeff:[[bn],map(lambda([e],[e[1],e[3]]),poles)], + return(fcoeff) +)$ +*/ + +/*Here we have the new implementation of fouriersincoeff and fouriercoscoeff*/ + +fouriersincoeffpw(Llist,var):=block( + [llaux,ll,bn,answ,lm], + ll:length(Llist), + lm:(Llist[ll][1][2]-Llist[1][1][1]), /*No need to divide by 2*/ + Laux:secsum2bl(Llist), + llaux:length(Laux), + bn:2*sum(heuristic_bn(Laux[i][2],var,lm,Laux[i][1][1],Laux[i][1][2]),i,1,llaux), + answ:[bn], + answ:map(simplify_sum,answ), + return(ratsimp(answ) ) +)$ + +fouriercoscoeffpw(Llist,var):=block( + [llaux,ll,a0,an,answ,lm], + ll:length(Llist), + lm:(Llist[ll][1][2]-Llist[1][1][1]), /*No need to divide by 2*/ + Laux:secsum2bl(Llist), + llaux:length(Laux), + a0:(1/(lm))*integratepw(Llist,var), + an:2*sum(heuristic_an(Laux[i][2],var,lm,Laux[i][1][1],Laux[i][1][2]),i,1,llaux), + answ:[a0,an], + answ:map(simplify_sum,answ), + return(ratsimp(answ) ) +)$ + +fouriersincoeffterm(term,var,p):=block( + [bn,ans], + if listp(term) then( + /* if is(symbintp(term,var)=p) then */ + return(fouriersincoeffpw(term,var)) + /* else error("Domain of the piecewise function is not valid. Read the documentation for further details")*/ + ) + elseif piecewisep(term) then( + /*Check if the domain is valid*/ + /*if is(symbintp(fun_parts(term,var))=p) then*/ + if is(boundedp(fun_parts(term,var))) then + return(fouriersincoeffpw(map(lambda([e],[e[1],expand(trigrat(e[2]))]),fun_parts(term,var)),var)) + else error("Domain of the piecewise function is not valid. Read the documentation for further details") + ) + else( + bn:2*heuristic_bn(term,var,p,0,p), + ans:ratsimp([bn]), + return(ans) + ) +)$ + +fouriercoscoeffterm(term,var,p):=block( + [a0,an,ans], + if listp(term) then( + /* if is(symbintp(term,var)=p) then */ + return(fouriercoscoeffpw(term,var)) + /* else error("Domain of the piecewise function is not valid. Read the documentation for further details")*/ + ) + elseif piecewisep(term) then( + /*Check if the domain is valid*/ + /*if is(symbintp(fun_parts(term,var))=p) then*/ + if is(boundedp(fun_parts(term,var))) then + return(fouriercoscoeffpw(map(lambda([e],[e[1],expand(trigrat(e[2]))]),fun_parts(term,var)),var)) + else error("Domain of the piecewise function is not valid. Read the documentation for further details") + ) + else( + a0:ratsimp((1/p)*adefint(term,var,0,p)), + an:2*heuristic_an(term,var,p,0,p), + ans:ratsimp([a0,an]), + return(ans) + ) +)$ + +fouriersincoeff(expr,var,p):=block( + [ans,Llist,Laux,coeffpoles,poles,n], + Laux:sum2list(expand(expr)), + Llist:map(lambda([e],if not piecewisep(e) then expand(trigrat(e)) else e),Laux), + Llist:list2bl(Llist), + ans:lsum(y,y,map(lambda([e],fouriersincoeffterm(e,var,p)),Llist)), + ans:ratsimp(ans), + poles:searchpoles(expr,var,p), + /*Now there is only a list of the form [bn]*/ + coeffpoles:makelist(at([i,ans[1]],n=i),i,poles), + declare(n,integer), + coeffpoles:ev(coeffpoles), + ans:ev(ans), + remove(n,integer), + return(ratsimp([ans,coeffpoles])) +)$ + +fouriercoscoeff(expr,var,p):=block( + [ans,Llist,Laux,coeffpoles,poles,n], + Laux:sum2list(expand(expr)), + Llist:map(lambda([e],if not piecewisep(e) then expand(trigrat(e)) else e),Laux), + Llist:list2bl(Llist), + ans:lsum(y,y,map(lambda([e],fouriercoscoeffterm(e,var,p)),Llist)), + ans:ratsimp(ans), + poles:searchpoles(expr,var,p), + /*Now there is only a list of the form [a0,an]*/ + coeffpoles:makelist(at([i,ans[2]],n=i),i,poles), + declare(n,integer), + coeffpoles:ev(coeffpoles), + ans:ev(ans), + remove(n,integer), + return(ratsimp([ans,coeffpoles])) +)$ + +fouriersincoeff_expand(sincoeff,var,p,NN):=block( + [ans,bn,poles,indx_poles,polessum,sl_indx,laux], + [[bn],poles]:sincoeff, + bn:ev(bn), + if emptyp(poles) then( + ans:sum(at(bn*sin(n*%pi*var/p),n=n),n,1,NN), + return(ans) + ) else( + indx_poles:makelist(poles[i][1],i,1,length(poles)), + if is(NN=inf) then( + polessum:sum(poles[i][2]*sin(poles[i][1]*%pi*var/p),i,1,length(poles)), + ans:polessum+sum(at(bn*sin(n*%pi*var/p),n=n),n,1,inf), + if is(bn=0) then return(ans), + print("The sum is over \\N-",setify(indx_poles)), + return(ans) + ) + else( + sl_indx:sublist_indices(indx_poles,lambda([e],is(e<=NN))), + polessum:lsum(poles[i][2]*sin(poles[i][1]*%pi*var/p),i,sl_indx), + laux:listify(setdifference(setify(makelist(i,i,1,NN)),setify(indx_poles))), + ans:polessum+lsum(at(bn*sin(n*%pi*var/p),n=i),i,laux), + return(ans) + ) + ) +)$ + +fouriercoscoeff_expand(coscoeff,var,p,NN):=block( + [ans,a0,an,poles,indx_poles,polessum,sl_indx,laux], + [[a0,an],poles]:coscoeff, + an:ev(an), + if emptyp(poles) then( + ans:a0+sum(at(an*cos(n*%pi*var/p),n=n),n,1,NN), + return(ans) + ) else( + indx_poles:makelist(poles[i][1],i,1,length(poles)), + if is(NN=inf) then( + polessum:sum(poles[i][2]*cos(poles[i][1]*%pi*var/p),i,1,length(poles)), + ans:a0+polessum+sum(at(an*cos(n*%pi*var/p),n=n),n,1,inf), + if is(an=0) then return(ans), + print("The sum is over \\N -",setify(indx_poles)), + return(ans) + ) + else( + sl_indx:sublist_indices(indx_poles,lambda([e],is(e<=NN))), + polessum:lsum(poles[i][2]*cos(poles[i][1]*%pi*var/p),i,sl_indx), + laux:listify(setdifference(setify(makelist(i,i,1,NN)),setify(indx_poles))), + ans:a0+polessum+lsum(at(an*cos(n*%pi*var/p),n=i),i,laux), + return(ans) + ) + ) +)$ + +fouriersin_series(expr,var,p,NN):=block( + [ans,sincoeff], + sincoeff:fouriersincoeff(expr,var,p), + ans:fouriersincoeff_expand(sincoeff,var,p,NN), + ans +)$ + +fouriercos_series(expr,var,p,NN):=block( + [ans,coscoeff], + coscoeff:fouriercoscoeff(expr,var,p), + ans:fouriercoscoeff_expand(coscoeff,var,p,NN), + ans +)$ + +real2complex_fcoeff(fcoeff):=block( + [c0,cn,cpoles,rpoles,a0,an,bn], + [[a0,an,bn],rpoles]:fcoeff, + c0:a0, + cn:(an-%i*bn)/2, + cpoles:map(lambda([e],[e[1],(e[2]-%i*e[3])/2]),rpoles), + ratsimp([[c0,cn],cpoles]) +)$ + +cfouriercoeff(expr,var,p):=real2complex_fcoeff(fouriercoeff(expr,var,p))$ + +cfouriercoeff_expand(cfcoeff,var,p,NN):=block( + [ans,c0,cn,cpoles,indx_cpoles,cpolessumpos,cpolessumneg,sl_indx,laux], + [[c0,cn],cpoles]:cfcoeff, + an:ev(cn), + if emptyp(cpoles) then( + if is(NN=inf) then( + ans:c0+sum(at(cn*exp(%i*n*%pi*var/p),n=n),n,minf,inf), + print("The sum is over \\N-\{0\}"), + return(ans) + ) else( + ans:c0+sum(at(conjugate(cn)*exp(%i*-n*%pi*var/p),n=n),n,1,NN) + +sum(at(cn*exp(%i*n*%pi*var/p),n=n),n,1,NN), + return(ratsimp(demoivre(ans)))) + ) else( + indx_cpoles:map(first,cpoles), + if is(NN=inf) then( + cpolessumpos:sum(cpoles[i][2]*exp(%i*cpoles[i][1]*%pi*var/p),i,1,length(cpoles)), + cpolessumneg:sum(conjugate(cpoles[i][2])*exp(-%i*cpoles[i][1]*%pi*var/p),i,1,length(cpoles)), + ans:c0+cpolessumpos+cpolessumneg+sum(at(cn*exp(%i*n*%pi*var/p),n=n),n,minf,inf), + if is(cn=0) then return(ans), + print("The sum is over \\N -",setify(append(indx_cpoles,[0]))), + return(ans) + ) + else( + sl_indx:sublist_indices(indx_cpoles,lambda([e],is(e<=NN))), + cpolessumpos:lsum(cpoles[i][2]*exp(%i*cpoles[i][1]*%pi*var/p),i,sl_indx), + cpolessumneg:lsum(conjugate(cpoles[i][2])*exp(-%i*cpoles[i][1]*%pi*var/p),i,sl_indx), + laux:listify(setdifference(setify(makelist(i,i,1,NN)),setify(indx_cpoles))), + ans:c0+cpolessumpos+cpolessumneg+lsum(at(cn*exp(%i*n*%pi*var/p),n=i),i,laux) + +lsum(at(conjugate(cn)*exp(-%i*n*%pi*var/p),n=i),i,laux), + return(ratsimp(demoivre(ans))) + ) + ) +)$ + +cfourier_series(expr,var,p,NN):=cfouriercoeff_expand(cfouriercoeff(expr,var,p),var,p,NN)$ + +evalpole_scn(bfn,polesf,indx_pf,indx):=block([n], + if member(indx,indx_pf) then return(assoc(indx,polesf)) + else return(at(bfn,n=indx)) +)$ + +fourier_heatcoeff(Qexpr,fexpr,var,p,kap):=block( + [bnf,bnQ,polesf,polesQ,indxpf,indxpQ,indxp,n,un,polesU,ans], + /* [[bnf],polesf]:fousincoeff(fexpr,var,p), + [[bnQ],polesQ]:fousincoeff(Qexpr,var,p), */ + [[bnf],polesf]:fouriersincoeff(fexpr,var,p), + [[bnQ],polesQ]:fouriersincoeff(Qexpr,var,p), + declare(n,integer), + un:bnf*exp(-(n*%pi/p)^2*kap*t)+integrate(at(bnQ,t=s)*exp(-(n*%pi/p)^2*kap*(t-s)),s,0,t), + if emptyp(polesf) and emptyp(polesQ) then (ans:[[un],[]], remove(n,integer), return(ratsimp(ans))) + /*now let's deal with the poles*/ + else( + indxpf:map(first,polesf), indxpQ:map(first,polesQ), + indxp:unique(append(indxpf,indxpQ)), + polesU:map(lambda([e],[e,evalpole_scn(bnf,polesf,indxpf,e)*exp(-(e*%pi/p)^2*kap*t) + +integrate(at(evalpole_scn(bnQ,polesQ,indxpQ,e),t=s)*exp(-(e*%pi/p)^2*kap*(t-s)),s,0,t)]),indxp), + ans:[[un],polesU], + remove(n,integer), + return(ratsimp(ans)) + ) +)$ + +fourier_heat(Qexpr,fexpr,var,p,kap,NN):=fouriersincoeff_expand(fourier_heatcoeff(Qexpr,fexpr,var,p,kap),var,p,NN)$ + +fourier_wavecoeff(Qexpr,fexpr,gexpr,var,p,A):=block( + [indxp,indxpf,indxpQ,indxpg,n,polesf,polesg,polesQ,bnf,bnQ,bng,Ln,un,polesU], + Ln:(n*%pi*A)/p, +/* [[bnf],polesf]:fousincoeff(fexpr,var,p), + [[bng],polesg]:fousincoeff(gexpr,var,p), + [[bnQ],polesQ]:fousincoeff(Qexpr,var,p), */ + [[bnf],polesf]:fouriersincoeff(fexpr,var,p), + [[bng],polesg]:fouriersincoeff(gexpr,var,p), + [[bnQ],polesQ]:fouriersincoeff(Qexpr,var,p), + bng:bng/Ln, polesg:map(lambda([e],[e[1],e[2]*at(1/Ln,n=e[1])]),polesg), + declare(n,integer), + un:bnf*cos(Ln*t)+bng*sin(Ln*t)+(1/Ln)*integrate(at(bnQ,t=s)*sin(Ln*(t-s)),s,0,t), + if emptyp(polesf) and emptyp(polesQ) and emptyp(polesg) then (ans:[[un],[]], remove(n,integer), return(ratsimp(ans))) + /*now let's deal with the poles*/ + else( + indxpf:map(first,polesf), indxpQ:map(first,polesQ), indxpg:map(first,polesg), + indxp:unique(append(indxpf,indxpQ,indxpg)), + polesU:map(lambda([e],[e,evalpole_scn(bnf,polesf,indxpf,e)*cos(e*%pi*A*t/p)+ + evalpole_scn(bng,polesg,indxpg,e)*sin(e*%pi*A*t/p)+ + (p/(e*%pi*A))*integrate(at(evalpole_scn(bnQ,polesQ,indxpQ,e),t=s)*sin(e*%pi*A*(t-s)/p),s,0,t)]),indxp), + ans:[[un],polesU], + remove(n,integer), + return(ratsimp(ans)) + ) +)$ + +fourier_wave(Qexpr,fexpr,gexpr,var,p,A,NN):=fouriersincoeff_expand(fourier_wavecoeff(Qexpr,fexpr,gexpr,var,p,A),var,p,NN)$ + +dirichlet_heat(Qexpr,fexpr,h1expr,h2expr,var,p,kap,NN):=block( +[Qaux,faux,vaux], + vaux:(h1expr-h2expr)*var/p-h1expr, + Qaux:Qexpr+diff(vaux,t), + faux:fexpr+at(vaux,t=0), + fourier_heat(Qaux,faux,var,p,kap,NN)-vaux +)$ + +dirichlet_wave(Qexpr,fexpr,gexpr,h1expr,h2expr,var,p,A,NN):=block( +[Qaux,faux,gaux,vaux], + vaux:(h1expr-h2expr)*var/p-h1expr, + Qaux:Qexpr+diff(vaux,t,2), + faux:fexpr+at(vaux,t=0), + gaux:gexpr+at(diff(vaux,t),t=0), + fourier_wave(Qaux,faux,gaux,var,p,A,NN)-vaux +)$ + +dirichlet_laplace_disk(a,fexpr,var,NN):=block( + [cn,c0,cpoles,n], + [[c0,cn],cpoles]:cfouriercoeff(fexpr,var,%pi), + cn:(r/a)^abs(n)*cn, + cpoles:map(lambda([e],[e[1],(r/a)^e[1]*e[2]]),cpoles), + cfouriercoeff_expand([[c0,cn],cpoles],var,%pi,NN) +)$ + +neumann_laplace_disk(a,fexpr,var,NN):=block([a0,an,bn,poles,n], + [[a0,an,bn],poles]:fouriercoeff(fexpr,var,%pi), + if not is(a0=0) then return("The solution does not exist.") + else( + an:(a/n)*an*(r/a)^n, + bn:(a/n)*bn*(r/a)^n, + poles:map(lambda([e],[e[1],e[2]*(a/e[1])*(r/a)^e[1],e[3]*(a/e[1])*(r/a)^e[1]]),poles), + return(fouriercoeff_expand([[a0,an,bn],poles],var,%pi,NN)) + ) +)$ + +dirichlet_laplace_annulus(a,b,fexpr,gexpr,var,NN):=block( + [n,cnf,c0f,cng,c0g,cpolesf,cpolesg,c0aux,cnaux,cpolesaux, + indxpf,indxpg,indxp,ans], + [[c0f,cnf],cpolesf]:cfouriercoeff(fexpr,var,%pi), + [[c0g,cng],cpolesg]:cfouriercoeff(gexpr,var,%pi), + c0aux:(c0g*log(b)-c0f*log(a))*log(b/a)+(c0f-c0g)*log(r)/log(b/a), + cnaux:(b^abs(n)*r^abs(n)-a^abs(2*n)*b^abs(n)*r^(-abs(n)))*cnf/(b^abs(2*n)-a^abs(2*n))+ + cng*(b^abs(2*n)*a^abs(n)*r^(-abs(n))-a^abs(n)*r^abs(n))/(b^abs(2*n)-a^abs(2*n)), + if emptyp(cpolesf) and emptyp(cpolesg) then( + ans:cfouriercoeff_expand(ratsimp([[c0aux,cnaux],[]]),var,%pi,NN), + return(ans) + ) /*now let's deal with the poles*/ + else( + indxpf:map(first,cpolesf), indxpg:map(first,cpolesg), + indxp:unique(append(indxpf,indxpg)), + cpolesaux:map(lambda([e],[e,(b^e*r^e-a^(2*e)*b^e*r^(-e))*evalpole_scn(cnf,cpolesf,indxpf,e)/(b^(2*e)-a^(2*e))+ + evalpole_scn(cng,cpolesg,indxpg,e)*(b^(2*e)*a^e*r^(-e)-a^e*r^e)/(b^(2*e)-a^(2*e))]),indxp), + ans:cfouriercoeff_expand(ratsimp([[c0aux,cnaux],cpolesaux]),var,%pi,NN), + return(ans) + ) +)$ + +dirichlet_laplace_wedge(R,a,fexpr,var,NN):=block( + [bnf,polesf,bnaux,polesaux,n,p:a], + [[bnf],polesf]:fouriersincoeff(fexpr,var,p), + bnaux:bnf*(r/R)^(n*%pi/a), + if emptyp(polesf) then return(fouriersincoeff_expand([[bnaux],[]],var,p,NN)) + else( + polesaux:map(lambda([e],[e[1],e[2]*(r/R)^(e[1]*%pi/a)]),polesf), + return(fouriersincoeff_expand([[bnaux],polesaux],var,p,NN)) + ) +)$ + +neumann_laplace_wedge(R,a,fexpr,var,NN):=block( + [bnf,polesf,bnaux,polesaux,n,p:a], + [[bnf],polesf]:fouriersincoeff(fexpr,var,p), + bnaux:bnf*(r/R)^(n*%pi/a)*(R*a/(n*%pi)), + if emptyp(polesf) then return(fouriersincoeff_expand([[bnaux],[]],var,p,NN)) + else( + polesaux:map(lambda([e],[e[1],e[2]*(r/R)^(e[1]*%pi/a)*(R*a/(e[1]*%pi))]),polesf), + return(fouriersincoeff_expand([[bnaux],polesaux],var,p,NN)) + ) +)$ + +dirichlet_laplace_rectangle(a,b,f1expr,f2expr,g1expr,g2expr,var1,var2,NN):=block( +[n,f1n,polesf1,f2n,polesf2,g1n,polesg1,g2n,polesg2,indxpf1,indxpf2,indxpg1,indxpg2, + indxp,Fnaux,Gnaux,polesFaux,polesGaux,ans], + [[f1n],polesf1]:fouriersincoeff(f1expr,var1,a), + [[f2n],polesf2]:fouriersincoeff(f2expr,var1,a), + [[g1n],polesg1]:fouriersincoeff(g1expr,var2,b), + [[g2n],polesg2]:fouriersincoeff(g2expr,var2,b), + Fnaux:f1n*sinh(n*%pi*(b-var2)/a)/sinh(n*%pi*b/a)+f2n*sinh(n*%pi*var2/a)/sinh(n*%pi*b/a), + Gnaux:g1n*sinh(n*%pi*(a-var1)/b)/sinh(n*%pi*a/b)+g2n*sinh(n*%pi*var1/b)/sinh(n*%pi*a/b), + if emptyp(polesf1) and emptyp(polesf2) and emptyp(polesg1) and emptyp(polesg2) then( + ans:fouriersincoeff_expand([[Fnaux],[]],var1,a,NN)+fouriersincoeff_expand([[Gnaux],[]],var2,b,NN), + return(ans) + ) + else( + indxpf1:map(first,polesf1), indxpf2:map(first,polesf2), + indxpg1:map(first,polesg1), indxpg2:map(first,polesg2), + indxp:unique(append(indxpf1,indxpf2,indxpg1,indxpg2)), + polesFaux:map(lambda([e],[e,evalpole_scn(f1n,polesf1,indxpf1,e)*sinh(e*%pi*(b-var2)/a)/sinh(e*%pi*b/a) + +evalpole_scn(f2n,polesf2,indxpf2,e)*sinh(e*%pi*var2/a)/sinh(e*%pi*b/a)]),indxp), + polesGaux:map(lambda([e],[e,evalpole_scn(g1n,polesg1,indxpg1,e)*sinh(e*%pi*(a-var1)/b)/sinh(e*%pi*a/b) + +evalpole_scn(g2n,polesg2,indxpg2,e)*sinh(e*%pi*var1/b)/sinh(e*%pi*a/b)]),indxp), + ans:fouriersincoeff_expand([[Fnaux],polesFaux],var1,a,NN)+fouriersincoeff_expand([[Gnaux],polesGaux],var2,b,NN), + return(ans) + ) +)$ + +neumann_laplace_rectangle(a,b,f1expr,f2expr,g1expr,g2expr,var1,var2,NN):=block( +[n,f1n,polesf1,f2n,polesf2,g1n,polesg1,g2n,polesg2,indxpf1,indxpf2,indxpg1,indxpg2, + indxp,Fnaux,Gnaux,polesFaux,polesGaux,C,ans,f10,g10,f20,g20], + [[f10,f1n],polesf1]:fouriercoscoeff(f1expr,var1,a), + [[f20,f2n],polesf2]:fouriercoscoeff(f2expr,var1,a), + [[g10,g1n],polesg1]:fouriercoscoeff(g1expr,var2,b), + [[g20,g2n],polesg2]:fouriercoscoeff(g2expr,var2,b), + Fnaux:(-a/(n*%pi))*f1n*cosh(n*%pi*(b-var2)/a)/sinh(n*%pi*b/a)+(a/(n*%pi))*f2n*cosh(n*%pi*var2/a)/sinh(n*%pi*b/a), + Gnaux:(-b/(n*%pi))*g1n*cosh(n*%pi*(a-var1)/b)/sinh(n*%pi*a/b)+(b/(n*%pi))*g2n*cosh(n*%pi*var1/b)/sinh(n*%pi*a/b), + if emptyp(polesf1) and emptyp(polesf2) and emptyp(polesg1) and emptyp(polesg2) then( + ans:fouriercoscoeff_expand([[0,Fnaux],[]],var1,a,NN)+fouriercoscoeff_expand([[0,Gnaux],[]],var2,b,NN), + return(ans+C) + ) + else( + indxpf1:map(first,polesf1), indxpf2:map(first,polesf2), + indxpg1:map(first,polesg1), indxpg2:map(first,polesg2), + indxp:unique(append(indxpf1,indxpf2,indxpg1,indxpg2)), + polesFaux:map(lambda([e],[e,(-a/(n*%pi))*evalpole_scn(f1n,polesf1,indxpf1,e)*cosh(e*%pi*(b-var2)/a)/sinh(e*%pi*b/a) + +(a/(n*%pi))*evalpole_scn(f2n,polesf2,indxpf2,e)*cosh(e*%pi*var2/a)/sinh(e*%pi*b/a)]),indxp), + polesGaux:map(lambda([e],[e,(-b/(n*%pi))*evalpole_scn(g1n,polesg1,indxpg1,e)*cosh(e*%pi*(a-var1)/b)/sinh(e*%pi*a/b) + +(b/(n*%pi))*evalpole_scn(g2n,polesg2,indxpg2,e)*cosh(e*%pi*var1/b)/sinh(e*%pi*a/b)]),indxp), + ans:fouriercoscoeff_expand([[0,Fnaux],polesFaux],var1,a,NN)+fouriercoscoeff_expand([[0,Gnaux],polesGaux],var2,b,NN), + return(ans+C) + ) +)$ + +/*Beggining of 2D Wave equation*/ + +BesselJZeros(m,k,[u]):=block([a,alpha,A,answ],local(a,alpha,A), +if is(not(m>-1)) then return("The order m must be m>-1"), +if (is(not(integerp(k))) or is(not(k > 0))) then return("k must be an integer k>0"), +a[i]:=m+2*i, +alpha[i,j]:=if is(equal(i,j)) then 2/((a[i]-1)*(a[i]+1)) + elseif is(equal(j,i-1)) then 1/((a[i]-1)*sqrt((a[i]-2)*a[i])) + elseif is(equal(j,i+1)) then 1/((a[i+1]-1)*sqrt((a[i+1]-2)*a[i+1])) + else 0, +A:genmatrix(alpha,ceiling(k/0.64)+10,ceiling(k/0.64)+10), +answ:2/sqrt(first(eigens_by_jacobi(A,floatfield))), +if (is(not(equal(length(u),0))) and is(equal(first(u),all))) then + firstn(sort(answ),k) +elseif (is(not(equal(length(u),0))) and is(not(equal(first(u),all)))) then + return("Do you want the first k roots? In this case, the option is 'all'") +else + last(firstn(sort(answ),k)) +)$ + +simpgen(l1,l2):=append(endcons(last(l1)+first(l2),rest(l1,-1)),rest(l2,1))$ + +pairing(L1,L2):=xreduce(append,map(lambda([x],map(lambda([y],[x,y]),L2)),L1))$ + +nintegrate(f,m,[I]):=block([n:length(args(lhs(apply(fundef,[f])))),tmp:xreduce(simpgen,makelist([1,4,1],j,1,m/2)),x,deltax,p,w,ww,xx],local(x,deltax,p,w), +if is(not(evenp(m))) then return ("The number of subdivisions m must be even") +elseif is(not(equal(length(I),n))) then return("The number of variables xi and intervals [ai,bi] must match") else + ( + for i:1 thru n do x[i]:args(lhs(apply(fundef,[f])))[i], + for i:1 thru n do deltax[i]:(I[i][2]-I[i][1])/m, + for j:1 thru n do p[j]:makelist(I[j][1]+k*deltax[j],k,0,m), + for j:1 thru n do w[j]:(deltax[j]/3)*tmp, + if is(equal(n,1)) then + ww:w[1] + else + ww:map(lambda([x],apply("*",x)),map(flatten,xreduce(pairing,makelist(w[j],j,1,n)))), + if is(equal(n,1)) then + xx:p[1] + else + xx:map(flatten,xreduce(pairing,makelist(p[j],j,1,n))), + if is(equal(n,1)) then + bfloat(apply("+",ww*map(f,xx))) + else + bfloat(apply("+",ww*map(lambda([x],apply(f,x)),xx))) + ) +)$ + +a0(n,a,f):=block([r:args(lhs(apply(fundef,[f])))[1],theta:args(lhs(apply(fundef,[f])))[2],lam:BesselJZeros(0,n)/a,p:%pi,ff,k],local(ff), +define(funmake(ff,[r,theta]),apply(f,[r,theta])*r*bessel_j(0,lam*r)), +k:1/(p*a^2*(bessel_j(1,lam))^2), +k*nintegrate(ff,14,[0,a],[0,2*p]) +)$ + +a(m,n,a,f):=block([r:args(lhs(apply(fundef,[f])))[1],theta:args(lhs(apply(fundef,[f])))[2],lam:BesselJZeros(0,n)/a,p:%pi,ff,k],local(ff), +define(funmake(ff,[r,theta]),apply(f,[r,theta])*r*bessel_j(0,lam*r)*cos(m*theta)), +k:2/(p*a^2*(bessel_j(m+1,lam))^2), +k*nintegrate(ff,14,[0,a],[0,2*p]) +)$ + +b(m,n,a,f):=block( +[r:args(lhs(apply(fundef,[f])))[1],theta:args(lhs(apply(fundef,[f])))[2],lam:BesselJZeros(0,n)/a,p:%pi,ff,k],local(ff), +define(funmake(ff,[r,theta]),apply(f,[r,theta])*r*bessel_j(0,lam*r)*sin(m*theta)), +k:2/(p*a^2*(bessel_j(m+1,lam))^2), +k*nintegrate(ff,14,[0,a],[0,2*p]) +)$ + +as0(n,a,c,f):=block([r:args(lhs(apply(fundef,[f])))[1],theta:args(lhs(apply(fundef,[f])))[2],lam:BesselJZeros(0,n)/a,p:%pi,ff,k],local(ff), +define(funmake(ff,[r,theta]),apply(f,[r,theta])*r*bessel_j(0,lam*r)), +k:1/(c*p*lam*a^2*(bessel_j(1,lam))^2), +k*nintegrate(ff,14,[0,a],[0,2*p]) +)$ + +as(m,n,a,c,f):=block([r:args(lhs(apply(fundef,[f])))[1],theta:args(lhs(apply(fundef,[f])))[2],lam:BesselJZeros(0,n)/a,p:%pi,ff,k],local(ff), +define(funmake(ff,[r,theta]),apply(f,[r,theta])*r*bessel_j(0,lam*r)*cos(m*theta)), +k:2/(c*p*lam*a^2*(bessel_j(m+1,lam))^2), +k*nintegrate(ff,14,[0,a],[0,2*p]) +)$ + +bs(m,n,a,c,f):=block([r:args(lhs(apply(fundef,[f])))[1],theta:args(lhs(apply(fundef,[f])))[2],lam:BesselJZeros(0,n)/a,p:%pi,ff,k],local(ff), +define(funmake(ff,[r,theta]),apply(f,[r,theta])*r*bessel_j(0,lam*r)*sin(m*theta)), +k:2/(c*p*lam*a^2*(bessel_j(m+1,lam))^2), +k*nintegrate(ff,14,[0,a],[0,2*p]) +)$ + +wave2d_disk(c,a,f,g,k,l):=block([A0,A,B,As0,As,Bs,lamb],local(A0,A,B,As0,As,Bs,lamb,t), +A0[i]:=a0(i,a,f),A[i,j]:=a(i,j,a,f),B[i,j]:=b(i,j,a,f),As0[i]:=as0(i,a,c,g),As[i,j]:=as(i,j,a,c,g),Bs[i,j]:=bs(i,j,a,c,g), +lamb[i,j]:=BesselJZeros(i,j)/a, +sum(A0[n]*bessel_j(0,lamb[0,n]*r)*cos(c*lamb[0,n]*t),n,1,l) ++sum(sum(bessel_j(m,lamb[m,n]*r)*(A[m,n]*cos(m*theta)+B[m,n]*sin(m*theta))*cos(c*lamb[m,n]*t),n,1,l),m,1,k) ++sum(As0[n]*bessel_j(0,lamb[0,n]*r)*sin(c*lamb[0,n]*t),n,1,l) ++sum(sum(bessel_j(m,lamb[m,n]*r)*(As[m,n]*cos(m*theta)+Bs[m,n]*sin(m*theta))*sin(c*lamb[m,n]*t),n,1,l),m,1,k) +)$ + +Arect(f,a,b,m,n):=block([x:args(lhs(apply(fundef,[f])))[1],y:args(lhs(apply(fundef,[f])))[2]], +define(funmake(ff,[x,y]),apply(f,[x,y])*sin(m*%pi*x/a)*sin(m*%pi*y/b)), +4*(nintegrate(ff,14,[0,a],[0,b]))/(a*b) +)$ + +Brect(g,a,b,c,m,n):=block([x:args(lhs(apply(fundef,[f])))[1],y:args(lhs(apply(fundef,[f])))[2],lamb],local(lamb), +lamb[m,n]:=((m/a)^2+(n/b)^2)/(%pi^2), +define(funmake(gg,[x,y]),apply(g,[x,y])*sin(m*%pi*x/a)*sin(m*%pi*y/b)), +4*(nintegrate(gg,14,[0,a],[0,b]))/(a*b*c*sqrt(lam[m,n])) +)$ + +wave2d_rectangle(c,a,b,f,g,k,l):=block([x:args(lhs(apply(fundef,[f])))[1],y:args(lhs(apply(fundef,[f])))[2],lamb,t],local(lamb,t), +lamb[m,n]:=((m/a)^2+(n/b)^2)/(%pi^2), +sum(sum((Arect(f,a,b,m,n)*cos(sqrt(lamb[0,n])*c*t)+Brect(g,a,b,c,m,n)*sin(sqrt(lamb[0,n])*c*t))*sin(m*%pi*x/a)*sin(n*%pi*y/b),m,1,k),n,1,l) +)$ diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/poincare.mac b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/poincare.mac new file mode 100644 index 0000000000..aefab3a21a --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/rkfun.lisp b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/maximaL/rkfun.lisp new file mode 100644 index 0000000000..70aafc7fff --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/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/graphics/ketcindy/ketcindyfolder/scripts/ketlib/oshima/os_muldif.pdf b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/oshima/os_muldif.pdf Binary files differnew file mode 100644 index 0000000000..33864232e4 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/oshima/os_muldif.pdf diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlib/oshima/os_muldif.rr b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/oshima/os_muldif.rr new file mode 100644 index 0000000000..ba7131ab35 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlib/oshima/os_muldif.rr @@ -0,0 +1,19295 @@ +/* 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 - Aug. 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 orthpoly$ +localf schurpoly$ +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 sgn$ +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 addIL$ +localf xy2curve$ +localf xygrid$ +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="00170825"$ +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=varargs(L|all=2); + 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){ + if(type(DIROUTD)!=7){ + DIROUTD=str_subst(DIROUT,["%HOME%","%ASIRROOT%","\\"], + [getenv("HOME"),get_rootdir(),"/"])+"/"; + if(isMs()) DIROUTD=str_subst(DIROUTD,"/","\\"|sjis=1); + } + if(S==-1) return; + 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; + } + R=output(S); + print(X); + output(); + if(getopt(exe)==1) shell("\""+S+"\""); + return R; +} + +def mycat0(L,T) +{ + Opt = getopt(delim); + Del = (type(Opt) >= 0)?Opt:""; + if(type(L)!=4) L=[L]; + 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(ptype(dn(P),X)<2) + 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; + Pr=getopt(prec); + if(type(L)!=4){ + if(L==2){ + L=(Pr!=1)? + [[[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]]]: + [[[1,2,1/50],[2,5,1/20],[5,10,1/10], [10,20,1/5],[20,50,1/2],[50,100,1]], + [[1,5,1/10],[5,10,1/2], [10,20,1],[50,100,5]], + [[1,5,1/2],[5,10,1], [10,50,5],[50,100,10]]]; + LS=2; + }else if(L==3){ + L=(Pr!=1)? + [[[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]]]: + [[[1,2,1/50],[2,5,1/20],[5,10,1/10],[10,20,1/5],[20,50,1/2],[50,100,1], + [100,200,2],[200,500,5],[500,1000,10]], + [[1,5,1/10],[5,10,1/2], [10,50,1],[50,100,5], [100,500,10],[500,1000,50]], + [[1,5,1/2],[5,10,1], [10,50,5],[50,100,10], [100,500,50],[500,1000,100]]]; + LS=3; + }else{ + L=(Pr!=1)? + [[[1,2,1/50],[2,5,1/20],[5,10,1/10]], + [[1,5,1/10],[5,10,1/2]], + [[1,5,1/2],[5,10,1]]]: + [[[1,2,1/100],[2,5,1/50],[5,10,1/20]], + [[1,2,1/20],[2,10,1/10]], + [[1,2,1/10],[2,10,1/2]]]; + } + }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(SC)==1){ + S0=SC;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=M0=[],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 M0=cons(V+D0,M0); + } + if(S1==0) M=cons(reverse(M0),M); + } + if(S1!=0) M=cdr(M); + if(S1==0||getopt(TeX)!=1) return M; + M=reverse(M); + if(type(U=getopt(line))==4) + M=cons([U[0]+D0,D1],cons([U[1]+D0,D1],cons(0,M))); + if(type(Col=getopt(col))<1) S=xylines(M); + else S=xylines(M|opt=Col); + if(type(Mes=getopt(mes))==4){ + S3=car(Mes); + if(type(S3)==4){ + Col=S3[1]; + S3=car(S3); + }else Col=0; + 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=car(Mes);M!=[];M=cdr(M),V=cdr(V)){ + VT=deval(car(V)); + if(Col!=0) VT=[Col,VT]; + S+=xyput([car(M),S3,VT]); + } + } + return S; +} + +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(type(X)==4){ + if(getopt(deg)==1) + X=[deval(@pi*X[0]/180),deval(@pi*X[1]/180),deval(@pi*X[2]/180)]; + if(getopt(conj)==1) + return mrot([-X[2],-X[1],0])*mrot([X[0],X[1],X[2]]); + if(X[1]==0){ + X=[X[0]+X[2],0,0]; + if(X[0]==0) return diagm(3,[1]); + } + if(X[0]!=0){ + M=mat([dcos(X[0]),-dsin(X[0]),0],[dsin(X[0]),dcos(X[0]),0],[0,0,1]); + if(X[1]==0) return M; + } + N=mat([dcos(X[1]),0,-dsin(X[1])],[0,1,0],[dsin(X[1]),0,dcos(X[1])]); + if(X[0]!=0) N=M*N; + if(X[2]==0) return N; + return N*mrot([X[2],0,0]); + } + 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(N==0) return 1; + 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 sgn(X) +{ + if(X==0) return 0; + if(type(X)==1){ + return (X>0)?1:-1; + } + if(type(X)==5) X=vtol(X); + if(type(X)==4){ + for(W=0,Y=X;Y!=[];Y=cdr(Y)) + for(Z=cdr(Y);Z!=[];Z=cdr(Z)) + if(car(Y)>car(Z)) W++; + if(getopt(val)==1) return W; + return (iand(W,1))?-1:1; + } +} + +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){ + fcat(-1,0); + 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) +{ + 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 xygrid(X,Y) +{ + for(RR=[],I=0,Z=X;I<2;I++){ + U=Z[2];L=LL=[];M=Z[3]; + if(Z[1]==1||Z[1]==-1){ + if(type(M)==4) L=M; + else{ + if(U*(-dlog(1-1/20)/dlog(10))>=M){ + L=cons([1,2,1/10],L); + LL=cons([1,2,1/2],LL); + }else if(U*(-dlog(1-1/10)/dlog(10))>=M) + L=cons([1,2,1/5],L); + else if(U*(-dlog(1-1/4)/dlog(10))>=M) + L=cons([1,2,1/2],L); + if(U*(-dlog(1-1/50)/dlog(10))>=M){ + L=cons([2,5,1/10],L); + LL=cons([2,5,1/2],LL); + }else if(U*(-dlog(1-1/25)/dlog(10))>=M) + L=cons([2,5,1/5],L); + else if(U*(-dlog(1-1/10)/dlog(10))>=M) + L=cons([2,5,1/2],L); + if(U*(-dlog(1-1/100)/dlog(10))>=M){ + L=cons([5,10,1/10],L); + LL=cons([5,10,1/2],LL); + } + else if(U*(-dlog(1-1/50)/dlog(10))>=M) + L=cons([5,10,1/5],L); + else if(U*(-dlog(1-1/20)/dlog(10))>=M) + L=cons([5,10,1/2],L); + L=cons(L,cons(LL,[[[1,10,1]]])); + } + R=scale(L|scale=U); + if(Z[1]==-1){ + for(LL=[];R!=[];R=cdr(R)){ + for(L=[],T=car(R);T!=[];T=cdr(T)) L=cons(U-car(T),L); + LL=cons(reverse(L),LL); + } + R=reverse(LL); + } + }else if(Z[1]==0){ + if(type(M)==4){ + R=scale(M|f=x,scale=U); + }else{ + V=0; + if(U/10>=M) V=1/10; + else if(U/5>=M) V=1/5; + else if(U/2>=M) V=1/2; + R=[]; + if(V>0){ + UU=U*V; + for(R=[],J=UU;J<U;J+=UU) R=cons(J,R); + } + if(V==1/10) L=[U/2]; + else L=[]; + R=cons(R,cons(L,[[0,U]])); + } + }else if(type(Z[1])==4){ + R=Z[1]; + if(length(R)==0||type(R[0])!=4) R=[[],[],R]; + }else return 0; + K=length(R); + S=newvect(K); + for(J=0;J<K;J++){ + for(S[J]=[],JJ=0;JJ<=Z[0];JJ+=U){ + for(P=R[J];P!=[];P=cdr(P)) + if(car(P)+JJ<=Z[0]) S[J]=cons(car(P)+JJ,S[J]); + } + } + for(J=0;J<K;J++) S[J]=lsort(S[J],[],1); + for(U=[],J=K-1;J>0;J--){ + U=lsort(S[J],U,0);S[J-1]=lsort(S[J-1],U,1); + } + RR=cons(vtol(S),RR); + Z=Y; + } + if((Raw=getopt(raw))==1) return RR; + SS=[]; + if(type(Sf=getopt(shift))==7){ + Sx=Sf[0];Sy=Sf[1]; + }else Sx=Sy=0; + for(I=0;I<2;I++){ + for(S0=[],L=RR[I];L!=[];L=cdr(L)){ + for(S=[],T=car(L);T!=[];T=cdr(T)){ + if(S!=[]) S=cons(0,S); + if(I==0){ + S=cons([X[0]+Sx,car(T)+Sy],S); + S=cons([Sx,car(T)+Sy],S); + }else{ + S=cons([car(T)+Sx,Y[0]+Sy],S); + S=cons([car(T)+Sx,Sy],S); + } + } + S0=cons(S,S0); + } + SS=cons(reverse(S0),SS); + } + SS=reverse(SS); + if(Raw==2) return SS; + if(length(Y)<5) T=[["",""]]; + else if(type(Y[4])==4) T=[Y[4]]; + else T=[Y[4],Y[4]]; + if(length(X[4])==4) T=cons([""],T); + else if(type(X[4])==4) T=cons(X[4],T); + else T=cons([X[4]],T); + for(Sx=Sy=[],I=0;I<2;I++){ + TT=T[I]; + for(V=SS[I];V!=[];V=cdr(V)){ + Op=car(TT); + if(length(TT)>1) TT=cdr(TT); + if(car(V)==[]) continue; + if(Op=="") S=xylines(car(V)); + else S=xylines(car(V)|opt=Op); + if(I==0) Sx=cons(S,Sx); + else Sy=cons(S,Sy); + } + } + for(S="",Sx=reverse(Sx), Sy=reverse(Sy);Sx!=[]&&Sy!=[];){ + if(Sx!=[]){ + S+=car(Sx);Sx=cdr(Sx); + } + if(Sy!=[]){ + S+=car(Sy);Sy=cdr(Sy); + } + } + return S; +} + + +def addIL(I,L) +{ + if(I==0){ + for(R=[];L!=[];L=cdr(L)) R=addIL(car(L),R); + return reverse(R); + } + if(type(In=getopt(in))==1){ + if(In==-1){ + J=JJ=I[1];I=I[0]; + for(R=[];L!=[];L=cdr(L)){ + J=lmin([car(L)[0],JJ]); + if(J>I) R=cons([I,J],R); + I=lmax([car(L)[1],I]); + } + if(I<JJ) R=cons([I,JJ],R); + return reverse(R); + }else{ + for(;L!=[];L=cdr(L)){ + if(car(L)[0]>I) return 0; + if(car(L)[1]>=I){ + if(In==3) return car(L); + if(In==1||(I!=car(L)[0]&&I!=car(L)[1])) return 1; + return 2; + } + } + return 0; + } + } + I0=car(I);I1=I[1]; + for(F=0,R=[];L!=[];L=cdr(L)){ + if(I0>car(L)[1]){ + R=cons(car(L),R); + continue; + } + if(I0<=car(L)[1]){ + I0=lmin([I0,car(L)[0]]); + if(I1<car(L)[0]){ + R=cons([I0,I1],R); + for( ;L!=[];L=cdr(L)) R=cons(car(L),R); + F=1; + break; + } + I1=lmax([I1,car(L)[1]]); + } + } + if(!F) R=cons([I0,I1],R); + return reverse(R); +} + +def xy2curve(F,N,Lx,Ly,Lz,A,B) +{ + Raw=getopt(raw); + if(type(Gap=getopt(gap))==4){ + MG=Gap[1];Gap=car(Gap); + }else MG=3; + if(type(Gap)!=1 && Gap!=0) Gap=0.7; + if(type(Dvi=getopt(dviout))<1) Dvi=0; + OL=[["dviout",Dvi]]; + if(type(Opt=getopt(opt))<1) Opt=0; + else OL=cons(["opt",Opt],OL); + if(type(Sc=getopt(scale))!=1 && type(Sc)!=4) Sc=[1,1,1]; + else if(type(Sc)!=4) Sc=[Sc,Sc,Sc]; + else if(length(Sc)!=3) Sc=[Sc[0],Sc[1],Sc[1]]; + M=diagm(3,Sc); + if(A!=0||B!=0){ + if(type(A)!=6){ /* M=mrot([-A,B,0]|deg=1)*M; */ + Pi=deval(@pi); + Ac=dcos(Pi*A/180);As=dsin(Pi*A/180); + M=mat([Ac,As,0],[-As,Ac,0],[0,0,1])*M; + Ac=dcos(Pi*B/180);As=dsin(Pi*B/180); + M=mat([Ac,0,As],[0,1,0],[-As,0,Ac])*M; + }else M=A; + V=M*newvect(3,[x,y,z]); + Fx=compdf(V[0],[x,y,z],F);Fy=compdf(V[1],[x,y,z],F);Fz=compdf(V[2],[x,y,z],F); + }else{ + for(I=0;I<3;I++){ + if(type(T=F[I])!=4) T=f2df(T); + if(type(T)==4) T=cons(car(T)*Sc[I],cdr(T)); + else T*=Sc[I]; + if(I==0) Fx=T; + else if(I==1) Fy=T; + else Fz=T; + } + } + if(Raw==5||!Gap) + return (Dvi||!Gap)? xygraph([Fy,Fz],N,Lx,Ly,Lz|option_list=OL):[Fx,Fy,Fz]; + R=xygraph([Fy,Fz],N,Lx,Ly,Lz|raw=2); + R0=cdr(car(R));R1=R[1]; + for(LT=[];R0!=[];R0=cdr(R0),R1=cdr(R1)) + if(car(R0)!=0) LT=cons([R1[0],R1[1]],LT); + LT=reverse(LT); + if(N<0){ + Be=xylines(car(R)|curve=1,proc=3,close=-1); + LT=reverse(cdr(LT)); + LT=reverse(cdr(LT)); + } + else Be=xylines(car(R)|curve=1,proc=3); + Be=cdr(cdr(Be)); + Be=lbezier(car(Be)); + if(Raw==4) return [Be,LT,Lx]; + X=ptcombz(Be,0,0); + Var=(length(Lx)==3)?car(Lx):x; + if(type(Eq=getopt(eq))!=1) Eq=0.01; + if(TikZ==1){ + Gap/=10;Eq/=10; + } + for(R=[],XT=X;XT!=[];XT=cdr(XT)){ + V=car(XT); + U=LT[V[0][0]]; + T=U[0]*V[1][0]+U[1]*(1-V[1][0]); + VV=myfdeval(Fx,[Var,T]); + U=LT[V[0][1]]; + T=U[0]*V[1][1]+U[1]*(1-V[1][1]); + VV-=myfdeval(Fx,[Var,T]); + if(abs(VV)<Eq) continue; + I=(VV<0)?0:1; + R=cons([V[0][I],V[1][I],V[0][1-I],V[1][1-I]],R); + } + R=qsort(R); + if(Raw==3) return [Be,R]; + Db=newvect(L=length(Be)); + for(I=0;I<L;I++) Db[I]=[]; + for(TR=R;TR!=[];TR=cdr(TR)){ + V1=ptbezier(Be,[I=car(TR)[0],P=car(TR)[1]])[1]; + V2=ptbezier(Be,[car(TR)[2],car(TR)[3]])[1]; + T=dsqrt(1-dvangle(V1,V2)^2); + if(T<1/MG) T=MG; + GP=Gap/T; + W=GP/dnorm(V1); + Db[I]=addIL([P-W,P+W],Db[I]); + if(P-W<0 && I>0) Db[I-1]=addIL([P-W+1,1],Db[I-1]); + if(P+W>1 && I+1<L) Db[I+1]=addIL([0,P+W-1],Db[I+1]); + } + Db=vtol(Db); + for(Bf=[];Be!=[];Be=cdr(Be),Db=cdr(Db)){ + if(car(Db)==[]) Bf=cons(car(Be),Bf); + else{ + D=addIL([0,1],car(Db)|in=-1); + for(;D!=[];D=cdr(D)) + Bf=cons(tobezier(car(Be)|inv=car(D)),Bf); + } + } + Bf=reverse(Bf); + if(Raw==2) return Bf; + OL=[]; + if(Opt){ + if(type(Opt)==4&&length(Opt)>1) OL=[["opt",Opt[0]],["cmd",Opt[1]]]; + else OL=[["opt",Opt]]; + }else OL=[]; + S=xybezier(lbezier(Bf|inv=1)|option_list=OL); + if(Raw==1||!Dvi) return S; + return xyproc(S|dviout=Dvi); +} + +def xy2graph(F0,N,Lx,Ly,Lz,A,B) +{ + /* (x,y,z) -> (z sin B + x cos A cos B + y sin A cos B, + -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 orthpoly(N) +{ + F=0; + if(type(P=getopt(pol))==7){ + for(L=["Le","Ge","Tc","2T","Ja","He","La","Se"];L!=[];L=cdr(L),F++) + if(str_str(P,car(L)|end=2)==0) break; + }else P=0; + if(type(D=N)==4) D=N[0]; + if(!isint(D)||D<0) return 0; + if(F==0) return seriesHG([-D,D+1],[1],(1-x)/2,D); + if(F==1) return red(seriesHG([-D,D+2*N[1]],[N[1]+1/2],(1-x)/2,D)*binom(D+2*N[1]-1,D)); + if(F==2) return seriesHG([-D,D],[1/2],(1-x)/2,D); + if(F==3){ + if(D==0) return 0; + return orthpoly([D-1,1]|pol="Ge"); + } + if(F==4) return red(seriesHG([-D,D+N[1]],[N[2]],x,D)); + if(F==5){ + for(S=I=1;I<=D;I+=2) S*=I; + if(iand(D,1)) return seriesHG([-(D-1)/2],[3/2],x^2/2,D-1)*x*S*(-1)^((D-1)/2); + else return seriesHG([-D/2],[1/2],x^2/2,D)*S*(-1)^(D/2); + } + if(F==6){ + NN=(type(N)==4)?N[1]:0; + return red(seriesHG([-D],[NN+1],x,D)*binom(D+NN,D)); + } + if(F==7){ + NN=N[1]; + for(S=1,I=1;I<=D;I++) S+=(-1)^I*binom(D,I)*binom(D+I,I)*sftpow(x,I)/sftpow(NN,I); + return S; + } + return 0; +} + +def schurpoly(L) +{ + N=length(L); + for(R=[],I=1;L!=[];L=cdr(L),I++) R=cons(car(L)+N-I,R); + L=reverse(R); + if(type(X=getopt(var))!=4){ + V=(type(X)>1)?X:"x"; + for(X=[],I=0;I<N;I++) X=cons(makev([V,N-I]),X); + } + M=newmat(N,N); + for(I=0;I<N;I++) + for(J=0;J<N;J++) M[I][J]=X[I]^L[J]; + P=det(M); + for(I=0;I<N;I++) + for(J=I+1;J<N;J++) P=sdiv(P,X[I]-X[J]); + return P; +} + +def fouriers(A,B,X) +{ + if((Y=getopt(y))==0||type(Y)>0) Y=deval(Y); + else Y=0; + if((V=getopt(const))==0||type(V)>0){ + V=myfeval(V,Y); + K=1; + }else K=0; + if(A!=[]&&type(car(A))>1){ + for(C=[],I=A[1];I>=K;I--) C=cons(myf2eval(car(A),I,Y),C); + if(K) C=cons(0,C); + A=C; + } + if(K){ + if(A!=[]) A=cdr(A); + A=cons(V,A); + } + if(B!=[]&&type(car(B))>1){ + for(C=[],I=B[1];I>0;I--) C=cons(myf2eval(car(B),I,Y),C); + B=C; + } + L=length(B)+1; + if(length(A)>=L) L=length(A)+1; + if(type(Sum=getopt(sum))>0){ + if(Sum==1) Sum=1-x; + else if(Sum==2) Sum=[(z__)/(3.1416*x),[z__,os_md.mysin,3.1416*x]]; + else Sum=f2df(Sum); + C=[]; + if(A!=[]){ + C=cons(car(A),C); + A=cdr(A); + } + for(I=1;A!=[];A=cdr(A),I++) C=cons(car(A)*myf2eval(Sum,I/L,L),C); + A=reverse(C); + for(C=[],I=1;B!=[];B=cdr(B),I++) C=cons(car(B)*myf2eval(Sum,I/L,L),C); + B=reverse(C); + } + 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+=S*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(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); + if(V==G) return F; /* subst(F(V),V,G) */ + VF=vars(F);VG=vars(G); + if(type(V)==4){ + for(VT=[],VV=V;VV!=[];VV=cdr(VV)){ + if(findin(car(VV),VF)>=0){ + X=makenewv(append(VF,VG)); + VF=cons(X,VF); + F=mysubst(F,[car(VV),X]); + VT=cons(X,VT); + }else VT=cons(car(VV),VT); + } + for(V=reverse(VT);V!=[];V=cdr(V),G=cdr(G)) F=compdf(F,car(V),car(G)); + return F; + } + 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(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((Raw=getopt(raw))==1) return V; + if(Raw==2) return [V,LT]; + 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<5;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(car(V)==[]||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,F]); + Z=makenewv([X,Y,F]); + 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&<ov(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=2); + 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!=2) All=0; + V=vars(P); + for(Arg=FC=[];V!=[];V=cdr(V)){ + if(vtype(CV=car(V))==0&&All!=0){ + 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); + } + } + } + } + Arg=reverse(Arg); + return (All==2)?Arg:[reverse(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]+4,"="))>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) Canvas=SV; + } + } + } + close_file(Id); + } + chkfun(1,0); +} + +#ifdef USEMODULE +endmodule; +os_md.init()$ +#else +init()$ +#endif + +end$ diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketcommon.h b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketcommon.h new file mode 100644 index 0000000000..7c0425cc64 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketcommon.h @@ -0,0 +1,2418 @@ +//20181024 memberi debugged (for null list ) +//20180308 norm added + +int length1(double gdata[]){ + return floor(gdata[0]+0.5); +} + +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 length6(double gdata[][6]){ + 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; +} + +int push6(double x, double y, double z, double w, double u, double v,double ptL[][6]){ + int nall=ptL[0][0]; + nall++; + ptL[nall][0]=x; ptL[nall][1]=y;ptL[nall][2]=z; + ptL[nall][3]=w; ptL[nall][4]=u; ptL[nall][5]=v; + 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]; +} + +void pull6(int num, double ptL[][6],double pt[6]){ + 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]; pt[5]=ptL[num][5]; +} + +int add1(double gdata[], double x){ + int nall; + nall=length1(gdata); + nall++; + gdata[nall]=x; + gdata[0]=nall; + return nall; +} + +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 addptd6(double gdata[][6], double pt[6]){ + int nall; + nall=push6(pt[0],pt[1],pt[2],pt[3],pt[4],pt[5],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 appendd6(int level, int from,int upto, double gdata[][6],double mat[][6]){ + int j, np, nall=length6(mat); + np=upto-from+1; + if(np<0){np=0;} + if(np>0){ + if(level>0){ + if(nall>0){ + nall=push6(Inf,level,0,0,0,0,mat); + } + } + 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[nall+j][3]=gdata[from+j-1][3]; + mat[nall+j][4]=gdata[from+j-1][4]; + mat[nall+j][5]=gdata[from+j-1][5]; } + } + 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 prependd3(int from,int upto, double gdata[][3],double mat[][3]){ + int j,np, nall=length3(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]; + mat[np+j][2]=mat[j][2]; + } + for(j=1; j<=np; j++){ + mat[j][0]=gdata[from+j-1][0]; + mat[j][1]=gdata[from+j-1][1]; + mat[j][2]=gdata[from+j-1][2]; + } + }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]; + mat[np+j][2]=mat[j][2]; + } + 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 appendd1(double num,double numvec[]){ + int n; + n=floor(numvec[0]+0.5); + numvec[n+1]=num; + numvec[0]=n+1; + return n+1; +} + +int appendi1(int num,int numvec[]){ + int n; + n=numvec[0]; + numvec[n+1]=num; + numvec[0]=n+1; + return n+1; +} + +int prependd1(double num, double 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 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; + } +} + +void removed3(int nrmv,double mat[][3]){ + int j,nall=length3(mat); + 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[j][2]=mat[j+1][2]; + } + mat[0][0]=nall-1; + return; + } +} + +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 dataindexd6(int level, double out[][6],int din[][2]){ + int n1=1, j, ctr=0, nall=length6(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 replacelistd1(int ii,double out[],double rep[]){ + int din[DsizeS][2],k,j,js,je, nall=length1(out),nr=length1(rep); + double tmpd1[DsizeL]; + dataindexd1(out,din); + tmpd1[0]=0; + for(k=1;k<=din[0][0];k++){ + if(k!=1){ + appendd1(Inf,tmpd1); + } + if(k!=ii){ + js=din[k][0]; je=din[k][1]; + for(j=js;j<=je;j++){ + appendd1(out[j],tmpd1); + } + }else{ + for(j=1;j<=nr;j++){ + appendd1(rep[j],tmpd1); + } + } + } + nall=length1(tmpd1); + out[0]=0; + for(j=1;j<=nall;j++){ + appendd1(tmpd1[j],out); + } +} + +void replacelistd2(int level,int ii,double out[][2],double rep[][2]){//180419 + int din[DsizeS][2],k,js,je, nall=length2(out),nr=length2(rep); + double tmpmd2[DsizeL][2]; + dataindexd2(level,out,din); + tmpmd2[0][0]=0; + for(k=1;k<=din[0][0];k++){ + if(k!=ii){ + js=din[k][0]; je=din[k][1]; + appendd2(level,js,je,out,tmpmd2); + }else{ + appendd2(level,1,nr,rep,tmpmd2); + } + } + nall=length2(tmpmd2); + out[0][0]=0; + appendd2(level,1,nall,tmpmd2,out); +} + +void replacelistd3(int level,int ii,double out[][3],double rep[][3]){//180428 + int din[DsizeS][2],k,js,je, nall=length3(out),nr=length3(rep); + double tmpmd3[DsizeL][3]; + dataindexd3(level,out,din); + tmpmd3[0][0]=0; + for(k=1;k<=din[0][0];k++){ + if(k!=ii){ + js=din[k][0]; je=din[k][1]; + appendd3(level,js,je,out,tmpmd3); + }else{ + appendd3(level,1,nr,rep,tmpmd3); + } + } + nall=length3(tmpmd3); + out[0][0]=0; + appendd3(level,1,nall,tmpmd3,out); +} + +void replacelistd6(int level,int ii,double out[][6],double rep[][6]){//180421 + int din[DsizeS][2],k,js,je, nall=length6(out),nr=length6(rep); + double tmpmd6[DsizeL][6]; + dataindexd6(level,out,din); + js=din[ii][0]; je=din[ii][1]; + tmpmd6[0][0]=0; + for(k=1;k<=din[0][0];k++){ + if(k!=ii){ + js=din[k][0]; je=din[k][1]; + appendd6(level,js,je,out,tmpmd6); + }else{ + appendd6(level,1,nr,rep,tmpmd6); + } + } + nall=length6(tmpmd6); + out[0][0]=0; + appendd6(level,1,nall,tmpmd6,out); +} + +void removelistd2(int level,int ii,double out[][2]){//180503 + int din[DsizeS][2],k,js,je,nall=length2(out); + double tmpmd[DsizeL][2]; + dataindexd2(level,out,din); + js=din[ii][0]; je=din[ii][1]; + tmpmd[0][0]=0; + appendd2(0,je+1,nall,out,tmpmd); + out[0][0]=0; + if(js>1){ + out[0][0]=js-2; + } + appendd2(0,1,length2(tmpmd),tmpmd,out); +} + +void dispvec(int n,double dt[]){ + int i; + for(i=0; i<n; i++){ + printf("%f ",dt[i]); + } + printf("\n"); +} + +void dispveci(int n,int dt[]){ + int i; + for(i=0; i<n; i++){ + printf("%d ",dt[i]); + } + printf("\n"); +} + +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 dispmatd1all(double dt[]){ + int i,n; + n=length1(dt); + for(i=1; i<=n; i++){ + printf("%f ",dt[i]); + } + printf("\n"); +} + +void dispmatd2all(double mat[][2]){ + int i; + if(mat[0][0]==0){printf("%s\n","no data");return;} + for(i=1; i<mat[0][0]+1; i++){ + printf("%3d %7.5f %7.5f\n",i,mat[i][0],mat[i][1]); + } +} + +void dispmatd3all(double mat[][3]){ + int i; + if(mat[0][0]==0){printf("%s\n","no data");return;} + for(i=1; i<mat[0][0]+1; i++){ + printf("%3d %7.5f %7.5f %7.5f\n",i,mat[i][0],mat[i][1],mat[i][2]); + } +} + +void dispmatd4all(double mat[][4]){ + int i; + if(mat[0][0]==0){printf("%s\n","no data");return;} + for(i=1; i<mat[0][0]+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 dispmatd5all(double mat[][5]){ + int i; + if(mat[0][0]==0){printf("%s\n","no data");return;} + for(i=1; i<mat[0][0]+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 dispmatd6all(double mat[][6]){ + int i; + if(mat[0][0]==0){printf("%s\n","no data");return;} + for(i=1; i<mat[0][0]+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]); + } +} + +void writedata3(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",out[i][0],out[i][1],out[i][2]); + if(i<nall){fprintf(fp,"\n");} + } + fclose(fp); +} + +void readdata3(const char *fname, double out[][3]){ + int n,j; + FILE *fp; + fp=fopen(fname,"r"); + if(fp==NULL){ + printf("file not found\n"); + return; + } + n=1; + while( ! feof(fp) && n<DsizeL){ + for(j=0;j<3;j++){ + fscanf(fp,"%lf",&out[n][j]); + } + n++; + } + n--; + fclose(fp); + out[0][0]=n; +} + +void writedata2(const char *fname, double out[][2]){ + int i, nall; + FILE *fp; + nall=length2(out); + fp=fopen(fname,"w"); + for(i=1; i<=nall; i++){ + fprintf(fp,"%7.5f %7.5f",out[i][0],out[i][1]); + if(i<nall){fprintf(fp,"\n");} + } + fclose(fp); +} + +void readdata2(const char *fname, double out[][2]){ + int n,j; + FILE *fp; + fp=fopen(fname,"r"); + if(fp==NULL){ + printf("file not found\n"); + return; + } + n=1; + while( ! feof(fp) && n<DsizeL){ + for(j=0;j<2;j++){ + fscanf(fp,"%lf",&out[n][j]); + } + n++; + } + n--; + fclose(fp); + out[0][0]=n; +} + +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; +} + +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]; + if(n==0){return 0;} //181024 + 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 norm(int dim, double p[]){ + double ans; + ans=dotprod(dim,p,p); + return sqrt(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 crossprod(int dim,double a[3],double b[3], double out[3]){ + if(dim==3){ + out[0]=a[1]*b[2]-a[2]*b[1]; + out[1]=a[2]*b[0]-a[0]*b[2]; + out[2]=a[0]*b[1]-a[1]*b[0]; + }else{ + out[0]=a[0]*b[1]-a[1]*b[0]; + out[1]=Inf; + } +} + +void reflectpoint(double p1[2],double regard[][2],double p2[2]){ + double pa[2],pb[2],u,v,a,b,u2,v2; + pull2(1,regard,pa); + if(length2(regard)==1){ + p2[0]=2*pa[0]-p1[0]; p2[1]=2*pa[1]-p1[1]; + }else{ + pull2(2,regard,pb); + u=pb[0]-pa[0]; u2=pow(u,2.0); + v=pb[1]-pa[1]; v2=pow(v,2.0); + a=pa[0]; b=pa[1]; + p2[0]=(u2-v2)/(u2+v2)*p1[0]+2*u*v/(u2+v2)*p1[1]; + p2[0]=p2[0]-2*v*(u*b-v*a)/(u2+v2); + p2[1]=2*u*v/(u2+v2)*p1[0]-(u2-v2)/(u2+v2)*p1[1]; + p2[1]=p2[1]+2*u*(u*b-v*a)/(u2+v2); + } +} + +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; + if(length2(pdata)==0){return 0;} //180613 + 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; +} + +int connectseg3(double pdata[][3], double eps, double out[][3]){ + int din[DsizeM][2],i,j,nd,nq,flg, st, en, ntmp; + int nall=length3(pdata), nout=0; + double qd[DsizeM][3], ah[3], ao[3], p[3], q[3], tmp[3]; + out[0][0]=0; + if(length3(pdata)==0){return 0;} //180613 + nd=dataindexd3(0,pdata,din); + qd[0][0]=0; + nq=appendd3(0,din[1][0],din[1][1],pdata,qd); + removei2(1,din); + while(nd>0){ + pull3(1,qd,ah); + pull3(nq,qd,ao); + flg=0; + for(j=1; j<=nd; j++){ + st=din[j][0]; + en=din[j][1]; + pull3(st,pdata,p); + pull3(en,pdata,q); + if(dist(3,p,ao)<eps){ + nq=appendd3(0,st+1,en,pdata,qd); + nd=removei2(j,din); + flg=1; + break; + } + if(dist(3,q,ao)<eps){ + nq=appendd3(0,en-1,st,pdata,qd); + nd=removei2(j,din); + flg=1; + break; + } + if(dist(3,p,ah)<eps){ + nq=prependd3(en,st+1,pdata,qd); + nd=removei2(j,din); + flg=1; + break; + } + if(dist(3,q,ah)<eps){ + nq=prependd3(st,en-1,pdata,qd); + nd=removei2(j,din); + flg=1; + break; + } + } + if(flg==0){ + nout=appendd3(2,1,nq,qd,out); + qd[0][0]=0; + nq=appendd3(0,din[1][0],din[1][1],pdata,qd); + nd=removei2(1,din); + } + } + if(nq>0){ + nout=appendd3(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(1,ptL); + pull2(1,pd,p); + for(k=2; k<=npd-1; k++){ + pull2(k,pd,tmp2d); + if(dist(2,p,tmp2d)>eps1){ + nptL=appendi1(k,ptL); + pull2(k,pd,p); + } + } + pull2(npd-1,pd,p); + pull2(npd,pd,tmp2d); + if(dist(2,p,tmp2d)>eps){ // eps -> eps1 ? + nptL=appendi1(npd,ptL); + } + if(nptL==1){ptL[0]=0; nptL=0;} + if(nout>0){ + nout=appendi1(Infint,out); + } + for(i=1; i<=nptL; i++){ + nout=appendi1(ptL[i],out); + } + } + 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; +} + +void segplot(double x1,double y1,double x2,double y2,double seg[][2]){ + seg[0][0]=0; + push2(x1,y1,seg); + push2(x2,y2,seg); +} + +void addsegplot(double x1,double y1,double seg[][2]){ + push2(x1,y1,seg); +} + +void circledata(double cx,double cy,double r, int num,double out[][2]){ + double t,dt,pt[2]; + int i; + dt=2*M_PI/num; + out[0][0]=0; + for(i=0; i<=num; i++){ + push2(cx+r*cos(i*dt),cy+r*sin(i*dt),out); + } +} + +void intersectline(double p1[2],double v1[2], double p2[2],double v2[2],double out[4]){ + double tmp,d,dt,ds,t,s,tmp1[2],tmp2[2],tmp3[2],pt[2]; + tmp=dotprod(2,v1,v2); + tmp1[0]=tmp; tmp1[1]=pow(norm(2,v1),2.0); + tmp2[0]=-pow(norm(2,v2),2.0);tmp2[1]=-tmp; + pt[0]=p2[0]-p1[0];pt[1]=p2[1]-p1[1]; + tmp3[0]=dotprod(2,pt,v2);tmp3[1]=dotprod(2,pt,v1); + crossprod(2,tmp1,tmp2,pt); d=pt[0]; + crossprod(2,v1,v2,pt); tmp=fabs(pt[0]); + if(tmp>Eps){ + crossprod(2,tmp3,tmp2,pt); dt=pt[0]; + crossprod(2,tmp1,tmp3,pt); ds=pt[0]; + t=dt/d; + s=ds/d; + pt[0]=p1[0]+v1[0]*t; pt[1]=p1[1]+v1[1]*t; + out[0]=pt[0];out[1]=pt[1];out[2]=t; out[3]=s; + }else{ + pt[0]=p2[0]-p1[0];pt[1]=p2[1]-p1[1]; + crossprod(2,pt,v1,tmp1); + tmp=tmp1[0]/norm(2,v1); + out[0]=fabs(tmp); out[1]=Inf; + } +} + +void intersectseg(double seg1[][2],double seg2[][2], double out[5]){ + double p1[2],q1[2],p2[2],q2[2],pt[2],pt1[2],nv[2],pts[DsizeS][4]; + double q1p1[2],q2p2[2],p1q2[2],q1p2[2],p1p2[2],q1q2[2]; + double tmp[2],tmp1[2],tmp2[2],tmp3[2],tmp4[2]; + double tmpd1,x,y,t,s,t1,s1,distance,tmpd[4],tmp3d[7]; + int ctr=0, i; + pull2(1,seg1,p1); pull2(2,seg1,q1); + pull2(1,seg2,p2); pull2(2,seg2,q2); + q1p1[0]=q1[0]-p1[0];q1p1[1]=q1[1]-p1[1]; + q2p2[0]=q2[0]-p2[0];q2p2[1]=q2[1]-p2[1]; + p1q2[0]=p1[0]-q2[0];p1q2[1]=p1[1]-q2[1]; + q1p2[0]=q1[0]-p2[0];q1p2[1]=q1[1]-p2[1]; + p1p2[0]=p1[0]-p2[0];p1p2[1]=p1[1]-p2[1]; + p1q2[0]=p1[0]-q2[0];p1q2[1]=p1[1]-q2[1]; + q1q2[0]=q1[0]-q2[0];q1q2[1]=q1[1]-q2[1]; + if((norm(2,q1p1)<Eps)||(norm(2,q2p2)<Eps)){ + out[0]=-1; out[1]=Inf; + }else{ + intersectline(p1,q1p1,p2,q2p2,tmpd); + if(tmpd[1]<Inf-Eps){ + pt[0]=tmpd[0];pt[1]=tmpd[1];t=tmpd[2];s=tmpd[3]; + if((t*(t-1)<Eps)&&(s*(s-1)<Eps)){ + out[0]=0;out[1]=pt[0];out[2]=pt[1];out[3]=t;out[4]=s; + }else{ + if(t<0){t=0;}; if(t>1){t=1;}; + if(s<0){s=0;}; if(s>1){s=1;}; + tmp3d[ctr]=norm(2,p1p2);ctr++; + tmp3d[ctr]=norm(2,p1q2);ctr++; + tmp3d[ctr]=norm(2,q1p2);ctr++; + tmp3d[ctr]=norm(2,q1q2);ctr++; + tmp1[0]=q2p2[1];tmp1[1]=-q2p2[0]; + intersectline(p1,tmp1,p2,q2p2,tmpd); + if(tmpd[1]!=Inf){ + pt1[0]=tmpd[0];pt1[1]=tmpd[1];s1=tmpd[3]; + if(s1*(s1-1)<Eps){ + tmp3d[ctr]=dist(2,pt1,p1);ctr++; + } + } + intersectline(q1,tmp1,p2,q2p2,tmpd); + if(tmpd[1]!=Inf){ + pt1[0]=tmpd[0];pt1[1]=tmpd[1];s1=tmpd[3]; + if(s1*(s1-1)<Eps){ + tmp3d[ctr]=dist(2,pt1,q1);ctr++; + } + } + tmp1[0]=q1p1[1];tmp1[1]=-q1p1[0]; + intersectline(p2,tmp1,p1,q1p1,tmpd); + if(tmpd[1]!=Inf){ + pt1[0]=tmpd[0];pt1[1]=tmpd[1];s1=tmpd[3]; + if(s1*(s1-1)<Eps){ + tmp3d[ctr]=dist(2,pt1,p2);ctr++; + } + } + intersectline(q2,tmp1,p1,q1p1,tmpd); + if(tmpd[1]!=Inf){ + pt1[0]=tmpd[0];pt1[1]=tmpd[1];s1=tmpd[3]; + if(s1*(s1-1)<Eps){ + tmp3d[ctr]=dist(2,pt1,q2);ctr++; + } + } + tmpd1=tmp3d[0]; + for(i=1;i<ctr;i++){ + if(tmp3d[i]<tmpd1){tmpd1=tmp3d[i];}; + } + out[0]=tmpd1;out[1]=pt[0];out[2]=pt[1]; + out[3]=t;out[4]=s; + } + }else{ + distance=tmpd[0]; + nv[0]=q1p1[1]/norm(2,q1p1);nv[1]=-q1p1[0]/norm(2,q1p1); + pts[0][0]=0; + intersectline(p1,nv,p2,q2p2,tmpd); + s1=tmpd[3]; + if((tmpd[1]!=Inf)&&(s1*(s1-1)<Eps)){ + x=(1-s1)*p2[0]+s1*q2[0];y=(1-s1)*p2[1]+s1*q2[1]; + push4(x,y,0,s1,pts); + } + intersectline(q1,nv,p2,q2p2,tmpd); + s1=tmpd[3]; + if((tmpd[1]!=Inf)&&(s1*(s1-1)<Eps)){ + x=(1-s1)*p2[0]+s1*q2[0];y=(1-s1)*p2[1]+s1*q2[1]; + push4(x,y,1,s1,pts); + } + intersectline(p2,nv,p1,q1p1,tmpd); + s1=tmpd[3]; + if((tmpd[1]!=Inf)&&(s1*(s1-1)<Eps)){ + x=(1-s1)*p1[0]+s1*q1[0];y=(1-s1)*p1[1]+s1*q1[1]; + push4(x,y,s1,0,pts); + } + intersectline(q2,nv,p1,q1p1,tmpd); + if((tmpd[1]!=Inf)&&(s1*(s1-1)<Eps)){ + x=(1-s1)*p1[0]+s1*q1[0];y=(1-s1)*p1[1]+s1*q1[1]; + push4(x,y,s1,2,pts); + } + if(length4(pts)==0){ + tmpd1=norm(2,p1p2); + if(norm(2,p1q2)<tmpd1){tmpd1=norm(2,p1q2);} + if(norm(2,q1p2)<tmpd1){tmpd1=norm(2,q1p2);} + if(norm(2,q1q2)<tmpd1){tmpd1=norm(2,q1q2);} + out[0]=tmpd1;out[1]=Inf; + }else{ + if(distance>Eps1){ + out[0]=distance;out[1]=Inf; + }else{ + x=0; y=0; + for(i=1; i<=length4(pts); i++){ + x=x+pts[i][0]; + y=y+pts[i][1]; + } + tmp3[0]=x/length4(pts); tmp3[1]=y/length4(pts); + nearestptpt(tmp3,seg1,tmpd); + t=tmpd[2]; + nearestptpt(tmp3,seg2,tmpd); + s=tmpd[2]; + out[0]=distance; out[1]=tmp3[0]; out[2]=tmp3[1]; + out[3]=t;out[4]=s; + } + } + } + } +} + +int osplineseg(double ptlist[5][2],int num,double out[][2]){ + double p0[2],p1[2],p2[2],p3[2],p2p0[2],p3p1[2],p2p1[2]; + double tmp,cc,pq[2],pr[2],knots[3][2],ctrlist[2][4]; + pull2(1,ptlist,p0); pull2(2,ptlist,p1); + pull2(3,ptlist,p2); pull2(4,ptlist,p3); + p2p0[0]=p2[0]-p0[0];p2p0[1]=p2[1]-p0[1]; + p3p1[0]=p3[0]-p1[0];p3p1[1]=p3[1]-p1[1]; + p2p1[0]=p2[0]-p1[0];p2p1[1]=p2[1]-p1[1]; + tmp=norm(2,p2p0)*norm(2,p3p1); + tmp=1+sqrt((1+dotprod(2,p2p0,p3p1)/tmp)/2); + cc=4*norm(2,p2p1)/3/(norm(2,p2p0)+norm(2,p3p1))/tmp; + pq[0]=p1[0]+cc*p2p0[0]; pq[1]=p1[1]+cc*p2p0[1]; + pr[0]=p2[0]-cc*p3p1[0];pr[1]=p2[1]-cc*p3p1[1]; + ctrlist[0][0]=0; + push4(pq[0],pq[1],pr[0],pr[1],ctrlist); + knots[0][0]=0; + addptd2(knots,p1);addptd2(knots,p2); + bezier(knots,ctrlist,num,out); + return length2(out); +} + +void intersectpartseg(double crv1[][2],double crv2[][2],int ii, int jj,int num,double out[6]){ + double distance=10*Eps2,seg1[3][2],seg2[3][2],tmpd[2],tmp1d[2],tmp2d[2]; + double tmp,snang,dst,tmpd5[5],os1[DsizeS][2],os2[DsizeS][2]; + double p0[2],p1[2],p2[2],p3[2],ptlist[5][2],regard[3][2]; + double tmp1md[20][2],tmpd3[3],tmp3md3[20][3],tmp2md3[20][3]; + double tmpd4[4],Eps00=pow(10,-8.0); + double sx,sy; + int kk,ll,nn; + out[0]=Inf; + for(kk=1;kk<6;kk++){out[kk]=0;} + seg1[0][0]=0;seg2[0][0]=0; + appendd2(1,ii,ii+1,crv1,seg1); + appendd2(1,jj,jj+1,crv2,seg2); + pull2(2,seg1,tmp1d); + pull2(1,seg1,tmpd); + tmp1d[0]=tmp1d[0]-tmpd[0]; tmp1d[1]=tmp1d[1]-tmpd[1]; + pull2(2,seg2,tmp2d); + pull2(1,seg2,tmpd); + tmp2d[0]=tmp2d[0]-tmpd[0]; tmp2d[1]=tmp2d[1]-tmpd[1]; + crossprod(2,tmp1d,tmp2d,tmpd); + snang=fabs(tmpd[0])/(norm(2,tmp1d)*norm(2,tmp2d)); + intersectseg(seg1,seg2,tmpd5); + dst=tmpd5[0]; + if(dst<Eps){ + if(dst>-Eps){ + out[0]=tmpd5[1];out[1]=tmpd5[2];out[2]=ii+tmpd5[3]; + out[3]=jj+tmpd5[4];out[4]=dst;out[5]=snang; + } + }else{ + if(dst<Eps2){ + os1[0][0]=0;os2[0][0]=0; + pull2(1,seg1,tmp1d); + pull2(2,seg1,tmp2d); + tmpd[0]=tmp2d[0]-tmp1d[0];tmpd[1]=tmp2d[1]-tmp1d[1]; + if((length2(crv1)==2)||(norm(2,tmpd)>distance-Eps)){ + appendd2(1,1,2,seg1,os1); + }else{ + pull2(1,seg1,p1);pull2(2,seg1,p2); + if(ii==1){ + pull2(3,crv1,p3); + tmpd[0]=p2[0]-p1[0];tmpd[1]=p2[1]-p1[1]; + tmp1d[0]=(p1[0]+p2[0])/2; + tmp1d[1]=(p1[1]+p2[1])/2; + tmp2d[0]=tmp1d[0]+tmpd[1]; + tmp2d[1]=tmp1d[1]-tmpd[0]; + regard[0][0]=0; + addptd2(regard,tmp1d); addptd2(regard,tmp2d); + reflectpoint(p3,regard,p0); + }else{ + if(ii==length2(crv1)-1){ + pull2(ii-1,crv1,p0); + tmpd[0]=p2[0]-p1[0]; tmpd[1]=p2[1]-p1[1]; + tmp1d[0]=(p1[0]+p2[0])/2; + tmp1d[1]=(p1[1]+p2[1])/2; + tmp2d[0]=tmp1d[0]+tmpd[1]; + tmp2d[1]=tmp1d[1]-tmpd[0]; + regard[0][0]=0; + addptd2(regard,tmp1d); addptd2(regard,tmp2d); + reflectpoint(p0,regard,p3); + }else{ + pull2(ii-1,crv1,p0);pull2(ii+2,crv1,p3); + } + } + ptlist[0][0]=0; + addptd2(ptlist,p0);addptd2(ptlist,p1); + addptd2(ptlist,p2);addptd2(ptlist,p3); + osplineseg(ptlist,num,os1); + } + pull2(1,seg2,tmp1d); + pull2(2,seg2,tmp2d); + if((length2(crv2)==2)||(dist(2,tmp2d,tmp1d)>distance-Eps)){ + appendd2(1,1,2,seg2,os2); + }else{ + pull2(1,seg2,p1);pull2(2,seg2,p2); + if(jj==1){ + pull2(3,crv2,p3); + tmpd[0]=p2[0]-p1[0];tmpd[1]=p2[1]-p1[1]; + tmp1d[0]=(p1[0]+p2[0])/2; + tmp1d[1]=(p1[1]+p2[1])/2; + tmp2d[0]=tmp1d[0]+tmpd[1]; + tmp2d[1]=tmp1d[1]-tmpd[0]; + regard[0][0]=0; + addptd2(regard,tmp1d); addptd2(regard,tmp2d); + reflectpoint(p3,regard,p0); + }else{ + if(jj==length2(crv2)-1){ + pull2(jj-1,crv2,p0); + tmpd[0]=p2[0]-p1[0]; tmpd[1]=p2[1]-p1[1]; + tmp1d[0]=(p1[0]+p2[0])/2; + tmp1d[1]=(p1[1]+p2[1])/2; + tmp2d[0]=tmp1d[0]+tmpd[1]; + tmp2d[1]=tmp1d[1]-tmpd[0]; + regard[0][0]=0; + addptd2(regard,tmp1d); addptd2(regard,tmp2d); + reflectpoint(p0,regard,p3); + }else{ + pull2(jj-1,crv2,p0);pull2(jj+2,crv2,p3); + } + } + ptlist[0][0]=0; + addptd2(ptlist,p0);addptd2(ptlist,p1); + addptd2(ptlist,p2);addptd2(ptlist,p3); + osplineseg(ptlist,num,os2); + } + tmp2md3[0][0]=0; + for(kk=1;kk<length2(os1);kk++){ + for(ll=1;ll<length2(os2);ll++){ + seg1[0][0]=0; seg2[0][0]=0; + pull2(kk,os1,tmpd);addptd2(seg1,tmpd); + pull2(kk+1,os1,tmpd);addptd2(seg1,tmpd); + pull2(ll,os2,tmpd);addptd2(seg2,tmpd); + pull2(ll+1,os2,tmpd);addptd2(seg2,tmpd); + intersectseg(seg1,seg2,tmpd5); + if((tmpd5[0]<Eps1)&&(tmpd5[1]<Inf-Eps)){ + if(tmpd5[0]<dst+Eps00){ + dst=tmpd5[0]; + tmp3md3[0][0]=0; + for(nn=1;nn<=length3(tmp2md3);nn++){ + pull3(nn,tmp2md3,tmpd3); + if(tmpd3[0]<dst+Eps00){ + addptd3(tmp3md3,tmpd3); + } + } + tmp2md3[0][0]=0; + for(nn=1;nn<=length3(tmp3md3);nn++){ + pull3(nn,tmp3md3,tmpd3); + addptd3(tmp2md3,tmpd3); + } + push3(dst,tmpd5[1],tmpd5[2],tmp2md3); + } + } + } + } + if(length3(tmp2md3)>0){ + tmp1md[0][0]=0; + sx=0; sy=0; + for(nn=1;nn<=length3(tmp2md3);nn++){ + pull3(nn,tmp2md3,tmpd3); + push2(tmpd3[1],tmpd3[2],tmp1md); + sx=sx+tmpd3[1]; + sy=sy+tmpd3[2]; + } + sx=sx/length3(tmp2md3); + sy=sy/length3(tmp2md3); + p0[0]=sx; p0[1]=sy; + pull2(ii,crv1,p1); pull2(ii+1,crv1,p2); + tmp1d[0]=p2[0]-p1[0];tmp1d[1]=p2[1]-p1[1]; + tmpd[0]=tmp1d[1];tmpd[1]=-tmp1d[0]; + intersectline(p0,tmpd,p1,tmp1d,tmpd4); + tmp=tmpd4[3]; + if(tmp<0){tmp=0;} + if(tmp>1){tmp=1;} + out[0]=sx;out[1]=sy;out[2]=ii+tmp; + pull2(jj,crv2,p1); pull2(jj+1,crv2,p2); + tmp1d[0]=p2[0]-p1[0];tmp1d[1]=p2[1]-p1[1]; + tmpd[0]=tmp1d[1];tmpd[1]=-tmp1d[0]; + intersectline(p0,tmpd,p1,tmp1d,tmpd4); + tmp=tmpd4[3]; + if(tmp<0){tmp=0;} + if(tmp>1){tmp=1;} + out[3]=jj+tmp;out[4]=dst;out[5]=snang; + } + } + } +} + +void collectsameseg(double ptdL[][6],double rL[][6]){ + double Eps00=pow(10,-8.0),tmp1d[2],tmp2d[2],tmp1d6[6],tmp2d6[6]; + int ii,jj,kk,istr,nr,numL[40],diffL[40]; + double s1,e1,s2,e2,dst,tmp1,tmp2,tmp1md6[40][6]; + rL[0][0]=0; + if(length6(ptdL)==0){ + return; + } + for(ii=2;ii<=length6(ptdL);ii++){ + pull6(ii,ptdL,tmp1d6);addptd6(rL,tmp1d6); + } + tmp1md6[0][0]=0; + pull6(1,ptdL,tmp1d6); + addptd6(tmp1md6,tmp1d6); + kk=tmp1d6[2]; + if(tmp1d6[2]<kk+Eps00){ + s1=kk-1-Eps00;e1=s1+2+2*Eps00; + }else{ + s1=kk-Eps00; e1=s1+1+2*Eps00; + } + kk=tmp1d6[3]; + if(tmp1d6[3]<kk+Eps00){ + s2=kk-1-Eps00;e2=s2+2+2*Eps00; + }else{ + s2=kk-Eps00; e2=s2+1+2*Eps00; + } + numL[0]=0; + for(ii=1;ii<=length6(rL);ii++){ + pull6(ii,rL,tmp1d6); + tmp1=tmp1d6[2]; tmp2=tmp1d6[3]; + if((tmp1>s1)&&(tmp1<e1)&&(tmp2>s2)&&(tmp2<e2)){ + addptd6(tmp1md6,tmp1d6); + appendi1(ii,numL); + } + } + dst=100; + for(ii=1;ii<=length6(tmp1md6);ii++){ + pull6(ii,tmp1md6,tmp1d6); + if(tmp1d6[4]<dst){ + dst=tmp1d6[4]; + } + } + ptdL[0][0]=0; + for(ii=1;ii<=length6(tmp1md6);ii++){ + pull6(ii,tmp1md6,tmp1d6); + if(tmp1d6[4]<dst+Eps00){ + addptd6(ptdL,tmp1d6); + } + } + for(ii=0;ii<=length6(rL);ii++){ + diffL[ii]=0; + } + for(ii=1;ii<=numL[0];ii++){ + kk=numL[ii]; + diffL[kk]=1; + } + nr=length6(rL); + rL[0][0]=0; + for(ii=1;ii<=nr;ii++){ + if(diffL[ii]==0){ + pull6(ii,rL,tmp1d6);addptd6(rL,tmp1d6); + } + } +} + +void intersectcurvesPp(double crv1s[][2],double crv2s[][2],int nbez,double out[][6]){ + double Eps00=pow(10,-8.0),Dist=10*Eps2, crv1[DsizeL][2],crv2[DsizeL][2]; + double tmp1md6[DsizeS][6],tmp2md6[DsizeS][6],tmpmd1[DsizeS]; + double tmpd[2],tmp1d[2],tmp2d[2],tmpd6[6],tmp1d6[6]; + double sx,sy,dst,ans1[4],ans2[4]; + int ii,jj,kk,nall,self,js,je,din[DsizeS][2]; + crv1[0][0]=0; + pull2(1,crv1s,tmpd);addptd2(crv1,tmpd); + for(ii=2;ii<=length2(crv1s);ii++){ + pull2(length2(crv1),crv1,tmp1d); + pull2(ii,crv1s,tmp2d); + if(dist(2,tmp1d,tmp2d)>Eps){ + addptd2(crv1,tmp2d); + } + } + crv2[0][0]=0; + pull2(1,crv2s,tmpd); + addptd2(crv2,tmpd); + for(ii=2;ii<=length2(crv2s);ii++){ + pull2(length2(crv2),crv2,tmp1d); + pull2(ii,crv2s,tmp2d); + if(dist(2,tmp1d,tmp2d)>Eps){ + addptd2(crv2,tmp2d); + } + } + if(length2(crv1)!=length2(crv2)){ + self=0; + }else{ + self=1; + for(ii=1;ii<=length2(crv1);ii++){ + pull2(ii,crv1,tmp1d);pull2(ii,crv2,tmp2d); + if(dist(2,tmp1d,tmp2d)>0){ + self=0; + break; + } + } + } + tmp1md6[0][0]=0; + for(ii=1;ii<=length2(crv1)-1;ii++){ + if(self==0){ + js=1; je=length2(crv2)-1; + }else{ + js=ii+2; je=length2(crv2)-1; + } + for(jj=js;jj<=je;jj++){ + intersectpartseg(crv1,crv2,ii,jj,nbez,tmpd6); + if(tmpd6[0]<Inf-Eps){ + tmpd[0]=tmpd6[0];tmpd[1]=tmpd6[1]; + if(length6(tmp1md6)==0){ + addptd6(tmp1md6,tmpd6); + }else{ + pull6(length6(tmp1md6),tmp1md6,tmp1d6); + tmp1d[0]=tmp1d6[0];tmp1d[1]=tmp1d6[1]; + if(dist(2,tmp1d,tmpd)>Eps1){ + addptd6(tmp1md6,tmpd6); + } + } + if(self==1){ + push6(tmpd6[0],tmpd6[1],tmpd6[3],tmpd6[2],tmpd6[4],tmpd6[5],tmp1md6); + } + } + } + } + out[0][0]=0; + tmp2md6[0][0]=0; + while(length6(tmp1md6)>0){ + collectsameseg(tmp1md6,tmp2md6); + appendd6(2,1,length6(tmp1md6),tmp1md6,out); + tmp1md6[0][0]=0; + for(ii=1;ii<=length6(tmp2md6);ii++){ + pull6(ii,tmp2md6,tmpd6);addptd6(tmp1md6,tmpd6); + } + } + dataindexd6(2,out,din); + for(ii=1;ii<=length2i(din);ii++){ + tmp1md6[0][0]=0; + appendd6(2,din[ii][0],din[ii][1],out,tmp1md6); + if(length6(tmp1md6)==1){ + replacelistd6(2,ii,out,tmp1md6); + }else{ + dst=100; + for(jj=1;jj<=length6(tmp1md6);jj++){ + pull6(jj,tmp1md6,tmpd6); + if(tmpd6[4]<dst){ + dst=tmpd6[4]; + } + } + sx=0; sy=0;nall=0; + for(jj=1;jj<=length6(tmp1md6);jj++){ + pull6(jj,tmp1md6,tmpd6); + if(tmpd6[4]<dst+Eps00){ + nall++; + sx=sx+tmpd6[0]; sy=sy+tmpd6[1]; + } + } + tmp1d[0]=sx/nall; tmp1d[1]=sy/nall; + nearestptpt(tmp1d,crv1,ans1); + nearestptpt(tmp1d,crv2,ans2); + tmp2md6[0][0]=0; + push6(sx/nall,sy/nall,ans1[2],ans2[2],dst,tmp1md6[1][5],tmp2md6); + replacelistd6(2,ii,out,tmp2md6); + } + } +} + +void intersectcurves(double crv1[][2],double crv2[][2],int nbez,double out[][2]){ + double out6[DsizeS][6],tmpd[2],tmpd6[6]; + int jj; + intersectcurvesPp(crv1,crv2,nbez,out6); + out[0][0]=0; + for(jj=1;jj<=length6(out6);jj++){ + pull6(jj,out6,tmpd6);push2(tmpd6[0],tmpd6[1],out); + } +} diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketcommonhead.h b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketcommonhead.h new file mode 100644 index 0000000000..7b22ddfba8 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketcommonhead.h @@ -0,0 +1,112 @@ +int length1(double gdata[]); +int length2(double gdata[][2]); +int length3(double gdata[][3]); +int length4(double gdata[][4]); +int length5(double gdata[][5]); +int length6(double gdata[][6]); +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 addptd6(double gdata[][6], double pt[6]); +int add1(double gdata[], double x); +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]); +int push6(double x, double y, double z, double w, double u, double v,double ptL[][6]); +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]); +void pull6(int num, double ptL[][6],double pt[6]); +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 appendd6(int level, int from,int upto, double gdata[][6],double mat[][6]); +int prependd2(int from,int upto, double gdata[][2],double mat[][2]); +int prependd3(int from,int upto, double gdata[][3],double mat[][3]); +int appendd1(double num,double numvec[]); +int prependd1(double num, double numvec[]); +int appendi1(int num,int numvec[]); +int prependi1(int num, int numvec[]); +int removei2(int nrmv,int mat[][2]); +void removed3(int nrmv,double mat[][3]); +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]); +int dataindexd6(int level, double out[][6],int din[][2]); +void replacelistd1(int ii,double out[],double rep[]); +void replacelistd2(int level,int jj,double out[][2],double rep[][2]); +void replacelistd3(int level,int jj,double out[][3],double rep[][3]); +void replacelistd6(int level,int ii,double out[][6],double rep[][6]); +void removelistd2(int level,int ii,double out[][2]); +void dispvec(int n,double dt[]); +void dispveci(int n,int dt[]); +void dispmatd1all(double dt[]); +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 dispmatd2all(double mat[][2]); +void dispmatd3all(double mat[][3]); +void dispmatd4all(double mat[][4]); +void dispmatd5all(double mat[][5]); +void dispmatd6all(double mat[][6]); +void dispmati2(int from, int upto, int mat[][2]); +void dispmati1(int from, int upto, int mat[]); +void writedata3(const char *fname, double out[][3]); +void readdata3(const char *fname, double out[][3]); +void writedata2(const char *fname, double out[][2]); +void 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 norm(int dim, double p[]); +double dist(int dim, double p[], double q[]); +void crossprod(int dim,double a[3],double b[3], double out[3]); +void reflectpoint(double p1[2],double regard[][2],double p2[2]); +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]); +int connectseg3(double pdata[][3], double eps, double out[][3]); +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]); +void segplot(double x1,double y1,double x2,double y2,double seg[][2]); +void addsegplot(double x1,double y1,double seg[][2]); +void circledata(double cx,double cy,double r, int num,double out[][2]); +void intersectline(double p1[2],double v1[2], double p2[2],double v2[2],double out[4]); +void intersectseg(double seg1[][2],double seg2[][2], double out[5]); +int osplineseg(double ptlist[5][2],int num,double out[][2]); +void intersectpartseg(double crv1[][2],double crv2[][2],int ii, int jj,int num,double out[6]); +void collectsameseg(double ptdL[][6],double rL[][6]); +void intersectcurvesPp(double crv1s[][2],double crv2s[][2],int nbez,double out[][6]); +void intersectcurves(double crv1[][2],double crv2[][2],int nbez,double out[][2]); + +const double Inf=99999; +const int Infint=30000; diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketlibClog.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketlibClog.txt new file mode 100644 index 0000000000..d3f9ac4d8d --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/ketlibClog.txt @@ -0,0 +1,38 @@ +190124 + readoutdata3 changed (tmp,strtmp) +190123 + Use of sprintf +181105 + output3h debugged ( ctr=0 added in varh ) + readoutdata3 debugged (//,etc ) +181104 + line display(123) for debugging removed +181025 + crv3onsfparadata debugged (case of out=NULL ) +181023 + pthiddenQ changed ( int flg, double out[4] ) +180705 + nohiddenparadata2 debugged (|sp-sq}>1) +180703 + nohiddenparadata2 debugged (for closed curve) +180616 + nohiddenparadata2 debugged (rewritten a part ) + output3h debugged (case where din1[0][0]==1) +180613 + connectseg,connectseg3 changed ( for null data ) + output3h debugged (case where din1[0][0]==1) +180609 + crv3onsfparadata debugged ( case where curve has multi parts) + connectseg3 added +180601 + wireparadata changed (for cmdflg=1) + sfcutparadata changed ( for cmdflg=1) +180531 + outputend added + output3,output3h changed + readoutdata3 changed ( varname added ) + intersectcrvsf changed (ws added) +180530 + readoutdata3 added ( hidden data not included ) +180523 + crvsfparadata debugged (npar removed) diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/surflib.h b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/surflib.h new file mode 100644 index 0000000000..f700a07125 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/surflib.h @@ -0,0 +1,2074 @@ +// 180430 +// crv2sfparadata,wireparadata added +// output3h,output3 chanded +// 180426 readdataC,writedataC changed +// 180420 newly rewrited +// 170616 crvsfparadata changed ( num of devision ) + +int output3(short head, const char *wa,const char *var, const char *fname,double out[][3]){ + int din[DsizeS][2],i,j,ctr; + double tmpd[3]; + FILE *fp; + fp=fopen(fname,wa); + if (fp == NULL) { + printf("cannot open\n"); + return -1; + } + dataindexd3(2, out,din); + if(head==1){ + fprintf(fp,"%s//\n",var); + } + for(i=1; i<=length2i(din); i++){ + fprintf(fp,"start//\n"); + fprintf(fp,"["); + ctr=0; + 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]); + ctr++; + if(ctr==5){ + fprintf(fp,"]//\n"); + ctr=0; + if(j<din[i][1]){ + fprintf(fp,"["); + } + }else{ + if(j<din[i][1]){ + fprintf(fp,","); + }else{ + fprintf(fp,"]//\n"); + } + } + } + fprintf(fp,"end//\n"); + } + fclose(fp); + return 0; +} + +int output3h(const char *wa,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],din2[DsizeM][2], i, j,ctr; + FILE *fp; + fp=fopen(fname,wa); + 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); + dataindexd3(2, out1,din2); + fprintf(fp,"%s//\n",var); + for(i=1; i<=length2i(din2); i++){ + fprintf(fp,"start//\n"); + fprintf(fp,"["); + ctr=0; + 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]); + ctr++; + if(ctr==5){ + if(j<din2[i][1]){ + fprintf(fp,"]//\n["); + ctr=0; + } + }else{ + 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 + if(din1[0][0]>1){ //180613from + appendd3(0, din1[2][0],din1[2][1],out,out1); + }//180613to + dataindexd3(2, out1,din2); + for(i=1; i<=length2i(din2); i++){ + fprintf(fp,"start//\n"); + fprintf(fp,"["); + ctr=0; //181105 + 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]); + ctr++; + if(ctr==5){ + if(j<din2[i][1]){ + fprintf(fp,"]//\n["); + ctr=0; + } + }else{ + if(j<din2[i][1]){ + fprintf(fp,","); + } + } + } + fprintf(fp,"]//\n"); + fprintf(fp,"end//\n"); + } +// fprintf(fp,"//\n"); //180531 + fclose(fp); + return 0; +} + +void outputend(const char *fname){ + FILE *fp; + fp=fopen(fname,"a"); + fprintf(fp,"//\n"); + fclose(fp); +} + +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 %6s",out[i][0],out[i][1],out[i][2],"-99999"); + if(i<nall){ + fprintf(fp,"\n"); + }; + } + fclose(fp); + return nall; +} + +int readdataC(const char *fname, double data[][3]){ + int i, j, ndata=0; + double tmpd4[4]; + FILE *fp; + fp=fopen(fname,"r"); + if(fp==NULL){ + printf("file not found\n"); + return 1; + } + data[0][0]=0; + while( ! feof(fp) && ndata<DsizeL){ + for(j=0;j<=3;j++){ + fscanf(fp,"%lf",&tmpd4[j]); + } + push3(tmpd4[0],tmpd4[1],tmpd4[2],data); + } + fclose(fp); + return length3(data); +} + +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); + } +} + +double zparapt(double p[3]){ + double x=p[0], y=p[1], z=p[2], out; + out=x*cos(PHI)*sin(THETA)+y*sin(PHI)*sin(THETA)+z*cos(THETA); + return out; +} + +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; +} + +void surfcurve(short ch,double crv[][2], double pdata[][3]){ + double pd2[2], pt[3]; + int i; + pdata[0][0]=0; + for(i=1; i<=length2(crv); i++){ + pull2(i,crv,pd2); + surffun(ch,pd2[0],pd2[1],pt); + addptd3(pdata,pt); + } +} + +double evlpfun(short ch, double u, double v){ + double 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; + double eps=0.00001; + u1=u-eps/2; u2=u+eps/2; + if(u1<Urng[0]){u1=Urng[0];} + if(u2>Urng[1]){u2=Urng[1];} + surffun(ch,u1,v,pt1); parapt(pt1,pt2d1); + surffun(ch,u2,v,pt2); parapt(pt2,pt2d2); + dxu=(pt2d2[0]-pt2d1[0])/(u2-u1); + dyu=(pt2d2[1]-pt2d1[1])/(u2-u1); + v1=v-eps/2; v2=v+eps/2; + if(v1<Vrng[0]){v1=Vrng[0];} + if(v2>Vrng[1]){v2=Vrng[1];} + surffun(ch,u,v1,pt1); parapt(pt1,pt2d1); + surffun(ch,u,v2,pt2); parapt(pt2,pt2d2); + dxv=(pt2d2[0]-pt2d1[0])/(v2-v1); + dyv=(pt2d2[1]-pt2d1[1])/(v2-v1); + return dxu*dyv-dxv*dyu; +}; + +int envelopedata(short ch, double out[][2]){ + int i, j, k, ctrq=0,ctr, nall; + double uval1,uval2,vval1,vval2,eval11,eval12,eval21,eval22; + double pl[5][2], vl[5], ql[11][2], out2[DsizeM][2]; + double du=(Urng[1]-Urng[0])/Mdv; + double dv=(Vrng[1]-Vrng[0])/Ndv; //180427 + ctr=0; + for (j = 0; j < Ndv; j++) { + vval1=Vrng[0]+j*dv; + vval2=Vrng[0]+(j+1)*dv; + uval1=Urng[0]; + eval11=evlpfun(ch,uval1,vval1); + eval12=evlpfun(ch,uval1,vval2); + for (i = 0; i < Mdv; i++) { + uval2=Urng[0]+(i+1)*du; + eval21=evlpfun(ch,uval2,vval1); + eval22=evlpfun(ch,uval2,vval2); + pl[0][0]=uval1; pl[0][1]=vval1; vl[0]=eval11; + pl[1][0]=uval2; pl[1][1]=vval1; vl[1]=eval21; + pl[2][0]=uval2; pl[2][1]=vval2; vl[2]=eval22; + pl[3][0]=uval1; pl[3][1]=vval2; vl[3]=eval12; + pl[4][0]=uval1; pl[4][1]=vval1; vl[4]=eval11; + 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++; + } + } + } + uval1=uval2; + eval11=eval21; + eval12=eval22; + 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(short ch,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(ch,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(ntmp,cusp); + } + else{ + ncusp=appendi1(ntmp,cusp); + } + } + } + } + if(cflg==0){ + ncusp=prependi1(1,cusp); + ncusp=appendi1(nph,cusp); + } + else if(ncusp==0){ + ncusp=prependi1(1,cusp); + ncusp=appendi1(nph,cusp); + } + else if(cusp[1]==1){ + ncusp=appendi1(nph,cusp); + } + 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(nph,cusp); + } + 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(drop[j],tmpnum); + } + 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(short ch,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(ch,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(ch,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(ch,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(ch,Urng[0]+i*du,Vrng[0],ptd3); + ntmpd2=push2(ptd3[0],ptd3[1],tmpd2); + } + nehL=appendd2(2,1,ntmpd2,tmpd2,ehL); + } + return nehL; +} + +void partitionseg(double fig[][2],double gL[][2], int ns, double parL[]){ + int ii,jj,kk,n,din[DsizeM][2]; + double eps0=pow(10,-5.0),tmpd4[4], tmpd6[6],tmp,tmp2; + double p[2], q[2], pd3[3], ans[4], tmp1d1[DsizeM], tmp2d1[DsizeM]; + double other[DsizeM], g[DsizeM][2], kouL[DsizeS][4],kouL6[DsizeS][6]; + if(ns>0){ + dataindexd1(Otherpartition,din); + other[0]=0; + for(ii=din[ns][0]; ii<=din[ns][1]; ii++){ + appendd1(Otherpartition[ii],other); + } + }else{ + other[0]=0; + } + parL[0]=0; + appendd1(1,parL); + appendd1(length2(fig),parL); + if(length1(other)>0){ + for(ii=1; ii<=length1(other); ii++){ + appendd1(other[ii],parL); + } + } + dataindexd2(2,gL,din); + for(n=fmax(ns,1); n<=din[0][0]; n++){ + g[0][0]=0; + appendd2(2,din[n][0],din[n][1],gL,g); + intersectcurvesPp(fig,g,20,kouL6); + kouL[0][0]=0; + for(ii=1;ii<=length6(kouL6);ii++){ + pull6(ii,kouL6,tmpd6); + push4(tmpd6[0],tmpd6[1],tmpd6[2],tmpd6[3],kouL); + } + tmp1d1[0]=0;tmp2d1[0]=0; + for(jj=1;jj<=length4(kouL);jj++){ + pull4(jj,kouL,tmpd4); + tmp=tmpd4[2]; + if((tmp>1+Eps)&&(tmp<length2(fig)-Eps)){ + appendd1(tmp,tmp1d1); + } + tmp=tmpd4[3]; + if((tmp>1+Eps)&&(tmp<length2(g)-Eps)){ + appendd1(tmp,tmp2d1); + } + } + for(jj=1;jj<=length1(tmp1d1);jj++){ + appendd1(tmp1d1[jj],parL); + } + if((ns>0)&&(n>ns)&&(length1(tmp2d1)>0)){ + dataindexd1(Otherpartition,din); + tmp1d1[0]=0; + for(jj=din[n][0];jj<=din[n][1];jj++){ + appendd1(Otherpartition[jj],tmp1d1); + } + replacelistd1(n,Otherpartition,tmp2d1); + } + } + simplesort(parL); + tmp1d1[0]=0; + for(ii=1;ii<=length1(parL);ii++){ + appendd1(parL[ii],tmp1d1); + } + parL[0]=0; + tmp2=-1; + for(jj=1;jj<=length1(tmp1d1);jj++){ + tmp=tmp1d1[jj]; + if(fabs(tmp-tmp2)>Eps1){ + appendd1(tmp,parL); + tmp2=tmp; + } + } +} + +double funpthiddenQ(short ch,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(ch,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; +} + +int pthiddenQ(short ch,double pta[3], int uveq,double out[4]){ + int i, j, k; + double Vec[3]={sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)}; + double v1,v2,v3; + double du=(Urng[1]-Urng[0])/Mdv, dv=(Vrng[1]-Vrng[0])/Ndv; + double uval1,uval2,vval1,vval2,eval11,eval12,eval21,eval22; + double pl[5][2], vl[5], ql[11][2],p1[2],p2[2],m1,m2; + double ptuv[2], puv1[2], puv2[2],p1d3[3], p2d3[3], ptd3[3]; + double tmpd1, tmpd2[2],tmpd3[3],tmp1d3[3]; +// Out=1 : hidden +// SL : List of segments near PtA+Vec + out[3]=-Inf; + for(j=0; j<=Ndv-1; j++){ + vval1=Vrng[0]+j*dv; + vval2=Vrng[0]+(j+1)*dv; + uval1=Urng[0]; + eval11=funpthiddenQ(ch,uval1,vval1,pta); + eval12=funpthiddenQ(ch,uval1,vval2,pta); + for(i=0; i<=Mdv-1; i++){ + uval2=Urng[0]+(i+1)*du; + eval21=funpthiddenQ(ch,uval2,vval1,pta); + eval22=funpthiddenQ(ch,uval2,vval2,pta); + pl[0][0]=uval1; pl[0][1]=vval1; vl[0]=eval11; + pl[1][0]=uval2; pl[1][1]=vval1; vl[1]=eval21; + pl[2][0]=uval2; pl[2][1]=vval2; vl[2]=eval22; + pl[3][0]=uval1; pl[3][1]=vval2; vl[3]=eval12; + pl[4][0]=uval1; pl[4][1]=vval1; vl[4]=eval11; + ql[0][0]=0; + for(k=0; k<=3; k++){ + pull2(k,pl,p1); + pull2(k+1,pl,p2); + m1=vl[k]; m2=vl[k+1]; + if(fabs(m1)<Eps){ + addptd2(ql, p1); + continue; + } + if(fabs(m2)<Eps){ + continue; + } + if((m1>0)&&(m2>0)){ + continue; + } + if((m1< 0)&&(m2< 0)){ + continue; + } + tmpd2[0]=1/(m1-m2)*(-m2*p1[0]+m1*p2[0]); + tmpd2[1]=1/(m1-m2)*(-m2*p1[1]+m1*p2[1]); + addptd2(ql, tmpd2); + } + uval1=uval2; + eval11=eval21; + eval12=eval22; + if(length2(ql)==2){ + puv1[0]=ql[1][0]; puv1[1]=ql[1][1]; + puv2[0]=ql[2][0]; puv2[1]=ql[2][1]; + surffun(ch,puv1[0],puv1[1],p1d3); + surffun(ch,puv2[0],puv2[1],p2d3); + v1=Vec[0]; v2=Vec[1]; v3=Vec[2]; + if(fabs(v1)>Eps){ + 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)>Eps){ + 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[2]; + } + if(m1*m2>= 0){ + if(((m1>0) && (m2>0)) || ((m1< 0) && (m2< 0))){ + continue; + } + if(m1==0){ + 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[0]); + ptuv[1]=1/(m1-m2)*(-m2*puv1[1]+m1*puv2[1]); + } + tmpd3[0]=ptd3[0]-pta[0]; + tmpd3[1]=ptd3[1]-pta[1]; + tmpd3[2]=ptd3[2]-pta[2]; + crossprod(3,tmpd3,Vec, tmp1d3); + if(norm(3,tmp1d3)<Eps1){ + tmpd1=zparapt(ptd3)-zparapt(pta)-Eps2; + if(tmpd1>0){ + copyd(0,2,ptd3,out); out[3]=tmpd1; + return 1; + }else{ + if(tmpd1>out[3]){ + copyd(0,2,ptd3,out); out[3]=tmpd1; + } + } + } + } + } + } + return 0; +} + +int nohiddenpara2(short ch,double par[], double fk[][3], int uveq, double figkL[][3]){ + double eps0=pow(10,-4.0), s, p1[2], p2[2], q[2],tmpd1, tmpd2[2],tmp1,tmp2; + double paL[DsizeM], 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 flg; + int ncusp=floor(Cusppt[0][0]+0.5), seL[DsizeM]; + int i,j,n, nfh, nfk, cspflg,tmpi1[DsizeM]; + vec[0]=sin(THETA)*cos(PHI); + vec[1]=sin(THETA)*sin(PHI); + vec[2]=cos(THETA); + 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; + } + } + paL[0]=0; + tmp2=-1; + for(j=1;j<=length1(par)-1;j++){ + tmp1=par[j]; + if(fabs(tmp1-tmp2)>Eps){ + add1(paL,tmp1); + tmp2=tmp1; + } + } + tmp1=paL[length1(paL)]; + tmp2=par[length1(par)]; + if(fabs(tmp1-tmp2)<Eps){ + paL[length1(paL)]=tmp2; + }else{ + add1(paL,tmp2); + } + seL[0]=0; + for(n=1; n<=length1(paL)-1; n++){ + s=(paL[n]+paL[n+1])/2.0; + invparapt(s,fh,fk, pta); + parapt(pta,ptap); + flg=pthiddenQ(ch,pta, uveq, tmpd4); + if(flg==0){ //180518 + appendi1(n,seL); + } + } + figL[0][0]=0;figkL[0][0]=0; + for(i=1; i<=seL[0]; i++){ + sp=paL[seL[i]]; //180616from + sq=paL[seL[i]+1]; + pointoncurve(sp, fh, Eps, pd2); + pointoncurve(sq, fh, Eps, qd2); + if(dist(2,pd2,qd2)>Eps1){ + nearestptpt(pd2,fh,tmpd4); + dtmp1=tmpd4[2]; + nearestptpt(qd2,fh,tmpd4); + dtmp2=tmpd4[2]; + partcrv(dtmp1,dtmp2,fh,tmpmd2); + appendd2(2,1,length2(tmpmd2),tmpmd2,figL); + tp=invparapt(sp,fh,fk,tmpd3); + tq=invparapt(sq,fh,fk,tmpd3); + partcrv3(tp,tq,fk,tmpmd3); + appendd3(2,1,length3(tmpmd3), tmpmd3, figkL); + }//180616to + else{//180705from + if(fabs(sp-sq)>1){ + appendd2(2,1,length2(fh),fh,figL); + appendd3(2,1,length3(fk),fk,figkL); + } + }//180705to + } + tmpi1[0]=0; + for(i=1; i<=length1(paL)-1; i++){ + if(memberi(i,seL)==0){ + appendi1(i,tmpi1); + } + } + copyi(0,tmpi1[0],tmpi1,seL); + seL[0]=tmpi1[0]; + Hiddendata[0][0]=0; + for(i=1; i<=seL[0]; 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); + partcrv3(tp,tq,fk,tmpmd3); + appendd3(2,1,length3(tmpmd3),tmpmd3,Hiddendata); + copyd(0,1,tmp1d2,pd2); + sp=paL[seL[i]]; + copyd(0,1,tmp2d2,qd2); + sq=paL[seL[i]+1]; + } + } + } + if(seL[0]>0){ + if(dist(2,pd2,qd2)>Eps1){ + tp=invparapt(sp,fh,fk,tmpd3); + tq=invparapt(sq,fh,fk,tmpd3); + partcrv3(tp,tq,fk,tmpmd3); + appendd3(2,1,length3(tmpmd3),tmpmd3,Hiddendata); + } + else{ + appendd3(2,1,length3(fk),fk,Hiddendata); + } + } + return length3(figkL); +} + +void borderparadata(short ch,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; + int din[DsizeS][2],din2[DsizeM][2]; + int ntmp, ntmpd3,ntmpd2; + double par[DsizeM]; + du=(Urng[1]-Urng[0])/Mdv; + dv=(Vrng[1]-Vrng[0])/Ndv; + fsL[0][0]=0; + ekL[0][0]=0;; + if(DrawE==1){ + tmpd2[0][0]=0;; + for(j=0; j<=Ndv; j++){ + add2(tmpd2, Urng[1], Vrng[0]+j*dv); + } + surfcurve(ch,tmpd2,tmpd3); + appendd3(2,1,length3(tmpd3),tmpd3,ekL); + } + if(DrawN==1){ + tmpd2[0][0]=0; + for(j=0; j<=Mdv; j++){ + add2(tmpd2, Urng[0]+j*du, Vrng[1]); + } + surfcurve(ch,tmpd2,tmpd3); + appendd3(2,1,length3(tmpd3),tmpd3,ekL); + } + if(DrawW==1){ + tmpd2[0][0]=0; + for(j=0; j<=Ndv; j++){ + add2(tmpd2, Urng[0], Vrng[0]+j*dv); + } + surfcurve(ch,tmpd2,tmpd3); + appendd3(2,1,length3(tmpd3),tmpd3,ekL); + } + if(DrawS==1){ + tmpd2[0][0]=0; + for(j=0; j<=Mdv; j++){ + add2(tmpd2, Urng[0]+j*du, Vrng[0]); + } + surfcurve(ch,tmpd2,tmpd3); + appendd3(2,1,length3(tmpd3),tmpd3,ekL); + } + if(length3(ekL)>0){ + appendd3(2,1,length3(ekL),ekL,fkL); + } + projpara(fkL,fall); + makexybdy(ch,fbdxy); + dataindexd2(2,fall,din); + Borderpt[0][0]=0; + Otherpartition[0]=0; + for(i=1; i<=length2i(din)-1; i++){ + Otherpartition[i]=Inf; Otherpartition[0]++; + } + Borderhiddendata[0][0]=0; + dataindexd3(2,fkL,din2); + for(i=1; i<= length2i(din2); i++){ + tmpd3[0][0]=0; + appendd3(0,din2[i][0],din2[i][1],fkL,tmpd3); + projpara(tmpd3,tmpd2); + partitionseg(tmpd2,fall,0,par); +/* + if(length1(par)>2){ + ntmp=length1(par)-1; + tmpd2[0][0]=0; + for(j=2; j<=ntmp; j++){ + pull2(j,Partitionpt,p); + addptd2(tmpd2, p); + } + appendd2(0, 1,length2(tmpd2),tmpd2,Borderpt); + } +*/ + tmpd3[0][0]=0; + appendd3(0,din2[i][0],din2[i][1],fkL,tmpd3); +// for(j=din2[i][0]; j<=din2[i][1]; j++){ +// pull3(j,fkL,p3); +// addptd3(tmpd3,p3); +// } + nohiddenpara2(ch,par,tmpd3,1, figkL); + if(length3(figkL)>0){ + appendd3(2,1,length3(figkL),figkL, fsL); + } + ntmp=length3(Hiddendata); + if(ntmp>0){ + appendd3(2,1,ntmp,Hiddendata,Borderhiddendata); + } + } +} + +int dropnumlistcrv3(double qd[][3], double eps1, int out[]){ + int i,j,k,nout,nall=length3(qd), nd, se, en, npd, nptL; + int din[DsizeM][2],ptL[DsizeL]; + double eps=pow(10.0,-6.0), pd[DsizeL][3], p[3], tmp2d[3]; + out[0]=0; nout=0; + nd=dataindexd3(2,qd,din); + for(j=1; j<=nd; j++){ + se=din[j][0]; en=din[j][1]; + pd[0][0]=0; npd=0; + npd=appendd3(0,se,en,qd,pd); + ptL[0]=0; nptL=0; + nptL=appendi1(1,ptL); + pull3(1,pd,p); + for(k=2; k<=npd-1; k++){ + pull3(k,pd,tmp2d); + if(dist(3,p,tmp2d)>eps1){ + nptL=appendi1(k,ptL); + pull3(k,pd,p); + } + } + pull3(npd-1,pd,p); + pull3(npd,pd,tmp2d); + if(dist(3,p,tmp2d)>eps){ // eps -> eps1 ? + nptL=appendi1(npd,ptL); + } + if(nout>0){ + nout=appendi1(Infint,out); + } + for(i=1; i<=nptL; i++){ + nout=appendi1(ptL[i],out); + } + } + out[0]=nout; + return nout; +} + +void sfbdparadata(short ch,double outd3[][3]){ + double pdatad3[DsizeL][3]; + double pts[DsizeL][2],out3md[DsizeL][2],eps; + double tmpmd[DsizeL][2],tmp1md[DsizeL][2],tmp2md[DsizeL][2],tmp3md[DsizeL][2]; + double tmpd[2],tmp1d[2],tmpd3[3],tmp1d3[3],tmp2d3[3],tmp2md3[DsizeL][3]; + int din[DsizeS][2],nlist[DsizeL]; + int ii,jj,kk,n,nall,flg; + envelopedata(ch, out3md); //180517from + tmp3md[0][0]=0; + pts[0][0]=0; + dataindexd2(2,out3md,din); + for(jj=1;jj<=length2i(din);jj++){ + tmp1md[0][0]=0; + tmp2md3[0][0]=0; + for(kk=din[jj][0];kk<=din[jj][1];kk++){ + pull2(kk,out3md,tmpd); + addptd2(tmp1md,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmpd3); + addptd3(tmp2md3,tmpd3); + } + dropnumlistcrv3(tmp2md3,Eps1,nlist); + if(nlist[0]==1){ + pull2(nlist[1],tmp1md,tmpd); + addptd2(pts,tmpd); + }else{ + tmpmd[0][0]=0; + for(kk=1;kk<=nlist[0];kk++){ + pull2(nlist[kk],tmp1md,tmpd); + addptd2(tmpmd,tmpd); + } + if(length2(tmpmd)>0){ + appendd2(2,1,length2(tmpmd),tmpmd,tmp3md); + } + } + } + out3md[0][0]=0; + appendd2(0,1,length2(tmp3md),tmp3md,out3md); + tmp3md[0][0]=0; + appendd2(0,1,length2(pts),pts,tmp3md); + pts[0][0]=0; + for(ii=1;ii<=length2(tmp3md);ii++){ + pull2(ii,tmp3md,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmp1d3); + flg=0; + for(jj=1;jj<=length2(pts);jj++){ + pull2(jj,pts,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmp2d3); + if(dist(3,tmp1d3,tmp2d3)<Eps1){ + flg=1; break; + } + } + if(flg==0){ + pull2(ii,tmp3md,tmpd); + addptd2(pts,tmpd); + } + } + for(ii=1;ii<=length2(pts);ii++){ + pull2(ii,pts,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmp1d3); + dataindexd2(2,out3md,din); + for(jj=1;jj<=length2i(din);jj++){ + tmp2md[0][0]=0; + appendd2(0,din[jj][0],din[jj][1],out3md,tmp2md); + eps=1; + for(kk=1;kk<=length2(tmp2md)-1;kk++){ + pull2(kk,tmp2md,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmp1d3); + pull2(kk+1,tmp2md,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmpd3); + if(eps>dist(3,tmp1d3,tmpd3)){ + eps=dist(3,tmp1d3,tmpd3); + } + } + pull2(1,tmp2md,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmpd3); + if(dist(3,tmp1d3,tmpd3)<eps+Eps){ + prependd2(ii,ii,pts,tmp2md); + replacelistd2(2,jj,out3md,tmp2md); + dataindexd2(2,out3md,din);//180517 + continue; + } + pull2(length2(tmp2md),tmp2md,tmpd); + surffun(ch,tmpd[0],tmpd[1],tmpd3); + if(dist(3,tmp1d3,tmpd3)<eps+Eps){ + appendd2(0,ii,ii,pts,tmp2md); + replacelistd2(2,jj,out3md,tmp2md); + dataindexd2(2,out3md,din);//180517 + continue; + } + } + } + nall=cuspsplitpara(ch,out3md, pdatad3); + n=length2(Cuspsplitpt); + Cusppt[0][0]=0; + nall=appendd2(0, 1,n,Cuspsplitpt,Cusppt); + borderparadata(ch,pdatad3, outd3); + push3(Inf,3,0,outd3); + nall=appendd3(0,1,length3(Borderhiddendata),Borderhiddendata,outd3); + push3(Inf,3,0,outd3); +} + +void groupnearpt3(double qlist[][3],double plist[][3]){ +// 180428 + int ii,jj,flg,din[DsizeS][2]; + double p1[3],p2[3],gl[DsizeS][3]; + while(length3(qlist)>0){ + gl[0][0]=0; + appendd3(2,1,1,qlist,gl); + removed3(1,qlist); + for(ii=1;ii<=length3(qlist);ii++){ + flg=0; + pull3(ii,qlist,p1); + for(jj=1;jj<=length3(gl);jj++){ + pull3(jj,gl,p2); + if(dist(3,p1,p2)<Eps1){ + flg=1; + break; + } + } + if(flg==1){ + addptd3(gl,p1); + removed3(ii,qlist); + } + } + appendd3(2,1,length3(gl),gl,plist); + } +} + +double funmeet(short ch,double u, double v,double pa[3], double vec[3]){ + double pt[3], out; + surffun(ch,u, v, pt); + if((fabs(vec[1])>Eps)||(fabs(vec[0])>Eps)){ + out=(vec[1]*(pt[0]-pa[0])-vec[0]*(pt[1]-pa[1])); + }else{ + out=pt[0]; + } + return out; +} + +void meetpoints(short ch,double pta[3], double ptb[3], int uveq,double out[][3]){ + int i, j, k,flg,din[DsizeS][2]; + double vec[3],v1,v2,v3; + double du=(Urng[1]-Urng[0])/Mdv, dv=(Vrng[1]-Vrng[0])/Ndv; + double uval1,uval2,vval1,vval2,eval11,eval12,eval21,eval22; + double pl[5][2], vl[5], ql[11][2],p1[2],p2[2],m1,m2; + double ptuv[2], puv1[2], puv2[2],p1d3[3], p2d3[3], ptd3[3]; + double tmpd1, tmpd2[2],tmpd3[3],tmp1d3[3],tmp1md3[DsizeS][3]; + vec[0]=ptb[0]-pta[0]; vec[1]=ptb[1]-pta[1]; vec[2]=ptb[2]-pta[2]; + out[0][0]=0; + if(norm(3,vec)<Eps){ + return; + } + for(j=0; j<=Ndv-1; j++){ + vval1=Vrng[0]+j*dv; + vval2=Vrng[0]+(j+1)*dv; + uval1=Urng[0]; + eval11=funmeet(ch,uval1,vval1,pta,vec); + eval12=funmeet(ch,uval1,vval2,pta,vec); + for(i=0; i<=Mdv-1; i++){ + uval2=Urng[0]+(i+1)*du; + eval21=funmeet(ch,uval2,vval1,pta,vec); + eval22=funmeet(ch,uval2,vval2,pta,vec); + pl[0][0]=uval1; pl[0][1]=vval1; vl[0]=eval11; + pl[1][0]=uval2; pl[1][1]=vval1; vl[1]=eval21; + pl[2][0]=uval2; pl[2][1]=vval2; vl[2]=eval22; + pl[3][0]=uval1; pl[3][1]=vval2; vl[3]=eval12; + pl[4][0]=uval1; pl[4][1]=vval1; vl[4]=eval11; + ql[0][0]=0; + for(k=0; k<=3; k++){ + pull2(k,pl,p1); + pull2(k+1,pl,p2); + m1=vl[k]; m2=vl[k+1]; + if(fabs(m1)<Eps){ + addptd2(ql, p1); + continue; + } + if(fabs(m2)<Eps){ + continue; + } + if((m1>0)&&(m2>0)){ + continue; + } + if((m1< 0)&&(m2< 0)){ + continue; + } + tmpd2[0]=1/(m1-m2)*(-m2*p1[0]+m1*p2[0]); + tmpd2[1]=1/(m1-m2)*(-m2*p1[1]+m1*p2[1]); + addptd2(ql, tmpd2); + } + uval1=uval2; + eval11=eval21; + eval12=eval22; + if(length2(ql)==2){ + puv1[0]=ql[1][0]; puv1[1]=ql[1][1]; + puv2[0]=ql[2][0]; puv2[1]=ql[2][1]; + surffun(ch,puv1[0],puv1[1],p1d3); + surffun(ch,puv2[0],puv2[1],p2d3); + v1=vec[0]; v2=vec[1]; v3=vec[2]; + if(fabs(v1)>Eps){ + 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)>Eps){ + 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[2]; + } + if(m1*m2>= 0){ + if(((m1>0) && (m2>0)) || ((m1< 0) && (m2< 0))){ + continue; + } + if(m1==0){ + 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[0]); + ptuv[1]=1/(m1-m2)*(-m2*puv1[1]+m1*puv2[1]); + } + tmpd3[0]=ptd3[0]-pta[0]; + tmpd3[1]=ptd3[1]-pta[1]; + tmpd3[2]=ptd3[2]-pta[2]; + crossprod(3,tmpd3,vec, tmp1d3); + if(norm(3,tmp1d3)<Eps1){ + tmpd1=dotprod(3,tmpd3,vec); + if((tmpd1>-Eps)&&(norm(3,tmpd3)<norm(3,vec)+Eps)){ + if(length3(out)==0){ + addptd3(out,ptd3); + }else{ + pull3(length3(out),out,p1d3); + if(dist(3,p1d3,ptd3)>Eps){ + addptd3(out,ptd3); + } + } + } + } + } + } + } + tmp1md3[0][0]=0; + groupnearpt3(out,tmp1md3); + dataindexd3(2,tmp1md3,din); + out[0][0]=0; + for(i=1;i<=din[0][0];i++){ + p1d3[0]=0; p1d3[1]=0; p1d3[2]=0; + tmpd1=din[i][1]-din[i][0]+1; + for(j=din[i][0];j<=din[i][1];j++){ + p1d3[0]=p1d3[0]+tmp1md3[j][0]/tmpd1; + p1d3[1]=p1d3[1]+tmp1md3[j][1]/tmpd1; + p1d3[2]=p1d3[2]+tmp1md3[j][2]/tmpd1; + } + addptd3(out,p1d3); + } +} + +void crvsfparadata(short ch, double fkL[][3], double fbdkL[][3], int sepflg, double out[][3]){ + double fbdy[DsizeL][2], fk[DsizeM][3],outh[DsizeL][3]; +// double fkp[DsizeM][3], dt; + double fh[DsizeM][2], parL[DsizeM], tmpmd3[DsizeM][3]; + double ptL[DsizeM][3], tmpd2[2], tmpd3[3], tmp1d1, tmp2d1; + double po[2]={0,0}, epsd2[2]={Eps1,1}, pa[3], pb[3]; + int nbor=length3(Borderhiddendata); + int ncshidden,din[DsizeM][2],din2[DsizeS][2]; + int nn, i, j, k, n; + projpara(fbdkL,fbdy); + out[0][0]=0; + outh[0][0]=0; + dataindexd3(2,fkL,din); + for(nn=1; nn<=length2i(din); nn++){ + fk[0][0]=0; + appendd3(0,din[nn][0],din[nn][1],fkL,fk); + projpara(fk,fh); + partitionseg(fh,fbdy,0,parL); + if(sepflg==0){ //180522 + for(i=1; i<=length3(fk)-1; i++){ + pull3(i,fk,pa); + pull3(i+1,fk,pb); + meetpoints(ch,pa,pb,1,ptL); + for(j=1; j<=length3(ptL); j++){ + pull3(j,ptL,tmpd3); + parapt(tmpd3,tmpd2); + tmp1d1=paramoncurve(tmpd2,i,fh); + tmp2d1=Inf; + for(k=1; k<=length1(parL); 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){ + appendd1(tmp1d1,parL); + } + } + simplesort(parL); + } + } + nohiddenpara2(ch,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 + appendd3(0,1,length3(outh),outh,out); +} + +void crv3onsfparadata(short ch,double fk[][3], double fbdyd3[][3], double out[][3]){ + // 180609 debugged(renewed) + double fbdy[DsizeL][2],fh[DsizeL][2],fks[DsizeL][3],fhs[DsizeL][2],par[DsizeM]; + double tmpmd3[DsizeL][3],outh[DsizeL][3]; + int i,j,din[DsizeS][2]; + projpara(fbdyd3,fbdy); + projpara(fk,fh); + out[0][0]=0; + outh[0][0]=0; + dataindexd2(2,fh,din); + for(i=1;i<=din[0][0];i++){ + fhs[0][0]=0; fks[0][0]=0; + appendd2(0,din[i][0],din[i][1],fh,fhs); + appendd3(0,din[i][0],din[i][1],fk,fks); + tmpmd3[0][0]=0; + if(length2(fhs)>1){ + partitionseg(fhs,fbdy,0, par); + nohiddenpara2(ch,par,fks,1,tmpmd3); + appendd3(2,1,length3(tmpmd3),tmpmd3,out); + appendd3(2,1,length3(Hiddendata),Hiddendata,outh); + }else{ + appendd3(2,1,1,fks,out); + } + } + connectseg3(out, Eps1,tmpmd3); + out[0][0]=0; + appendd3(0,1,length3(tmpmd3),tmpmd3,out); + push3(Inf,3,0,out); //181025 + connectseg3(outh, Eps1,tmpmd3); + appendd3(0,1,length3(tmpmd3),tmpmd3,out);//181025 +} + +void crv2onsfparadata(short ch,double fh[][2], double fbdyd3[][3], double out[][3]){ + double fk[DsizeL][3]; + surfcurve(ch,fh,fk); + crv3onsfparadata(ch,fk,fbdyd3,out); +} + +void wireparadata(short ch,double bdyk[][3], double udata[], double vdata[],const char *fname,const char *fnameh){ + double crv2d[DsizeL][2],out[DsizeL][3],out1[DsizeL][3],out2[DsizeL][3]; + double du=(Urng[1]-Urng[0])/Mdv; + double dv=(Vrng[1]-Vrng[0])/Ndv; + int i,j,din[DsizeS][2]; + short allflg=1; + if(strlen(fnameh)>0){ + allflg=0; + } + char var0[]="wire3d"; + char varh0[]="wireh3d"; + char var[20]; + char varh[20]; + char varnow[40]; + char varhnow[40]; + varnow[0]='\0'; + varhnow[0]='\0'; + sprintf(var,"%s%d",var0,ch); + sprintf(varh,"%s%d",varh0,ch); + char dirfname[256]; + char dirfnameh[256]; + char varname[256]; + char varnameh[256]; + dirfname[0]='\0'; + dirfnameh[0]='\0'; + varname[0]='\0'; + varnameh[0]='\0'; + sprintf(varname,"%s%d",var,ch); + sprintf(varnameh,"%s%d",varh,ch); + sprintf(dirfname,"%s%s",Dirname,fname); + sprintf(dirfnameh,"%s%s",Dirname,fnameh); + if((length1(udata)==0)&&(allflg==0)){ + out[0][0]=0; + output3(1,"w",varname,dirfname,out); + output3(1,"w",varnameh,dirfnameh,out); + } + for(i=1;i<=length1(udata);i++){ + crv2d[0][0]=0; + for(j=0; j<=Ndv; j++){ + add2(crv2d, udata[i],Vrng[0]+j*dv); + } + if(allflg==1){out[0][0]=0;} + crv2onsfparadata(ch,crv2d,bdyk,out); + if(allflg==0){ + dataindexd3(3,out,din); + out1[0][0]=0; out2[0][0]=0; + appendd3(0,din[1][0],din[1][1],out,out1); + appendd3(0,din[2][0],din[2][1],out,out2); + if(i==1){ + output3(1,"w",varname,dirfname,out1); + output3(1,"w",varnameh,dirfnameh,out2); + }else{ + output3(0,"a",varname,dirfname,out1); + output3(0,"a",varnameh,dirfnameh,out2); + } + }else{ + sprintf(varnow,"%s%s%d",var,"u",i); + sprintf(varhnow,"%s%s%d",varh,"u",i); + output3h("a",varnow, varhnow,fname,out); + } + } + for(j=1;j<=length1(vdata);j++){ + crv2d[0][0]=0; + for(i=0; i<=Mdv; i++){ + add2(crv2d, Urng[0]+i*du,vdata[j]); + } + if(allflg==1){out[0][0]=0;} + crv2onsfparadata(ch,crv2d,bdyk,out); + if(allflg==0){ + dataindexd3(3,out,din); + out1[0][0]=0; out2[0][0]=0; + appendd3(0,din[1][0],din[1][1],out,out1); + appendd3(0,din[2][0],din[2][1],out,out2); + if(i<length1(vdata)){ + output3(0,"a",varname,dirfname,out1); + output3(0,"a",varnameh,dirfnameh,out2); + }else{ + output3(0,"a",varname,dirfname,out1); + outputend(dirfname); + output3(0,"a",varnameh,dirfnameh,out2); + outputend(dirfnameh); + } + }else{ + sprintf(varnow,"%s%s%d",var,"v",j); + sprintf(varhnow,"%s%s%d",varh,"v",j); + output3h("a",varnow, varhnow,fname,out); + } + } + if(allflg==0){ + outputend(dirfname); + outputend(dirfnameh); + } +} + +void intersectcrvsf(const char *wa, short chfd,double crv[][3],const char *fname){ + double pa[3],pb[3],out[DsizeM][3],ptL[DsizeM][3]; + int i; + short chcut; + char chc[10]; + sprintf(chc,"%d",chfd); + char var[]="intercrvsf"; + char dirfname[256]; + dirfname[0] = '\0'; + sprintf(dirfname,"%s%s",Dirname,fname); + char varname[256]; + varname[0] = '\0'; + sprintf(varname,"%s%s",var,chc); + ptL[0][0]=0; + for(i=1;i<length3(crv);i++){ + pull3(i,crv,pa); + pull3(i+1,crv,pb); + meetpoints(chfd,pa,pb,1,out); + appendd3(0,1,length3(out),out,ptL); + } + output3(1,wa,varname,dirfname,ptL); +} + +void sfcutparadata(short chfd, short ncut, double fbdy3[][3],const char *fname,const char *fnameh){ + double Vec[3]={sin(THETA)*cos(PHI),sin(THETA)*sin(PHI),cos(THETA)}; + double v1=Vec[0],v2=Vec[1],v3=Vec[2]; + double out[DsizeM][2],out2[DsizeM][2],outd3[DsizeL][3]; + double ekL[DsizeL][3],out1d3[DsizeL][3],out2d3[DsizeL][3]; + double uval1,uval2,vval1,vval2,eval11,eval12,eval21,eval22; + double pl[5][2], vl[5], ql[11][2],diff1,diff2; + double tmp1md[DsizeM][2],tmp2md[DsizeM][2],tmpd[2],tmp1d[2],tmp2d[2]; + double tmp2md3[DsizeM][3],tmpd3[3],tmp1d3[3]; + double du=(Urng[1]-Urng[0])/Mdv; + double dv=(Vrng[1]-Vrng[0])/Ndv; + double p1[2],p2[2],m1,m2,q11,q12,q21,q22,a1,a3,b1,b3; + int i,j,k,din[DsizeS][2],ns,ne,rmv[DsizeS]; + short chcut, allflg=0; + if(strlen(fnameh)==0){ + allflg=1; + } + char var0[]="sfcut3d"; + char varh0[]="sfcuth3d"; + char var[20]; + char varh[20]; + sprintf(var,"%s%d",var0,chfd); + sprintf(varh,"%s%d",varh0,chfd); + char varnow[40]; + char varhnow[40]; + char dirfname[256]; + char dirfnameh[256]; + char varname[256]; + char varnameh[256]; + varnow[0]='\0'; + varhnow[0]='\0'; + dirfname[0]='\0'; + dirfnameh[0]='\0'; + varname[0]='\0'; + varnameh[0]='\0'; + sprintf(varname,"%s%d",var,chfd); + sprintf(varnameh,"%s%d",varh,chfd); + sprintf(dirfname,"%s%s",Dirname,fname); + sprintf(dirfnameh,"%s%s",Dirname,fnameh); + for(chcut=1;chcut<=ncut;chcut++){ + out[0][0]=0; out2[0][0]=0; + for(j=0; j<=Ndv-1; j++){ + vval1=Vrng[0]+j*dv; + vval2=Vrng[0]+(j+1)*dv; + uval1=Urng[0]; + eval11=cutfun(chfd, chcut,uval1, vval1); + eval12=cutfun(chfd, chcut,uval1, vval2); + for(i=0; i<=Mdv-1; i++){ + uval2=Urng[0]+(i+1)*du; + eval21=cutfun(chfd, chcut,uval2, vval1); + eval22=cutfun(chfd, chcut,uval2, vval2); + pl[0][0]=uval1; pl[0][1]=vval1; vl[0]=eval11; + pl[1][0]=uval2; pl[1][1]=vval1; vl[1]=eval21; + pl[2][0]=uval2; pl[2][1]=vval2; vl[2]=eval22; + pl[3][0]=uval1; pl[3][1]=vval2; vl[3]=eval12; + pl[4][0]=uval1; pl[4][1]=vval1; vl[4]=eval11; + ql[0][0]=0; + for(k=0; k<=3; k++){ + pull2(k,pl,p1); + pull2(k+1,pl,p2); + m1=vl[k]; m2=vl[k+1]; + if(fabs(m1)<Eps){ + addptd2(ql, p1); + continue; + } + if(fabs(m2)<Eps){ + continue; + } + if((m1>0)&&(m2>0)){ + continue; + } + if((m1< 0)&&(m2< 0)){ + continue; + } + tmpd[0]=1/(m1-m2)*(-m2*p1[0]+m1*p2[0]); + tmpd[1]=1/(m1-m2)*(-m2*p1[1]+m1*p2[1]); + addptd2(ql, tmpd); + } + uval1=uval2; + eval11=eval21; + eval12=eval22; + if(length2(ql)==2){ + q11=ql[1][0];q12=ql[1][1];q21=ql[2][0];q22=ql[2][1]; + a1=uval1;a3=uval2;b1=vval1;b3=vval2; + if(((q11==a1)&&(q21==a1))||((q11==a3)&&(q21==a3))){ + if(((q21==b1)&&(q22==b1))||((q21==b3)&&(q22==b3))){ + appendd2(2,1,2,ql,out2); + }else{ + appendd2(2,1,2,ql,out); + } + continue; + } + if(((q12==b1)&&(q22==b1))||((q12==b3)&&(q22==b3))){ + if(((q11==a1)&&(q21==a1))||((q11==a3)&&(q21==a3))){ + appendd2(2,1,2,ql,out2); + }else{ + appendd2(2,1,2,ql,out); + } + continue; + } + appendd2(2,1,2,ql,out); + } + } + } + dataindexd2(2,out2,din); + while(length2i(din)>0){ + ns=din[1][0];ne=din[1][1]; + tmp1md[0][0]=0; + appendd2(0,ns,ne,out2,tmp1md); + appendd2(2,ns,ne,out2,out); + removelistd2(2,1,out2); + dataindexd2(2,out2,din); + rmv[0]=0; + for(j=1;j<=length2i(din);j++){ + ns=din[j][0];ne=din[j][1]; + tmp2md[0][0]=0; + appendd2(0,ns,ne,out2,tmp2md); + pull2(1,tmp2md,tmp2d);pull2(1,tmp1md,tmp1d); + diff1=dist(2,tmp1d,tmp2d); + pull2(2,tmp2md,tmp2d);pull2(2,tmp1md,tmp1d); + diff1=diff1+dist(2,tmp1d,tmp2d); + pull2(1,tmp2md,tmp2d);pull2(2,tmp1md,tmp1d); + diff2=dist(2,tmp1d,tmp2d); + pull2(2,tmp2md,tmp2d);pull2(1,tmp1md,tmp1d); + diff2=diff2+dist(2,tmp1d,tmp2d); + if((diff1<Eps)||(diff2<Eps)){ + appendi1(j,rmv); + continue; + } + } + for(j=1;j<=rmv[0];j++){ + removelistd2(2,rmv[j],out2); + } + dataindexd2(2,out2,din); + } + connectseg(out, Eps1, out2); + dataindexd2(2,out2,din); + outd3[0][0]=0; + for(i=1;i<=length2i(din);i++){ + ns=din[i][0];ne=din[i][1]; + tmp1md[0][0]=0; + appendd2(0,ns,ne,out2,tmp1md); + tmp2md3[0][0]=0; + for(j=1;j<=length2(tmp1md);j++){ + pull2(j,tmp1md,tmpd); + surffun(chfd,tmpd[0],tmpd[1],tmpd3); + if(length3(tmp2md3)>0){ + pull3(length3(tmp2md3),tmp2md3,tmp1d3); + if(dist(3,tmpd3,tmp1d3)<Eps1){ + continue; + } + } + addptd3(tmp2md3,tmpd3); + } + appendd3(2,1,length3(tmp2md3),tmp2md3,outd3); + } + crv3onsfparadata(chfd,outd3,fbdy3,ekL); + if(allflg==0){ + dataindexd3(3,ekL,din); + out1d3[0][0]=0; out2d3[0][0]=0; + appendd3(0,din[1][0],din[1][1],ekL,out1d3); + appendd3(0,din[2][0],din[2][1],ekL,out2d3); + if(chcut==1){ + output3(1,"w",varname,dirfname,out1d3); + output3(1,"w",varnameh,dirfnameh,out2d3); + }else{ + output3(0,"a",varname,dirfname,out1d3); + output3(0,"a",varnameh,dirfnameh,out2d3); + } + }else{ + sprintf(varnow,"%s%d",var,chcut); + sprintf(varhnow,"%s%d",varh,chcut); + output3h("a",varnow, varhnow,fname,ekL); + } + } + if(allflg==0){ + outputend(dirfname); + outputend(dirfnameh); + } +} + +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],koc2d6[DsizeM][6],tmpd6[6]; + 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); + } + intersectcurvesPp(obj2d,plt2d,20,koc2d6); //180324from + nkoc2=length6(koc2d6); + koc2[0][0]=0; + for(ii=1;ii<=nkoc2;ii++){ + pull6(ii,koc2d6,tmpd6); + push4(tmpd6[0],tmpd6[1],tmpd6[2],tmpd6[3],koc2); + }//180324to + 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 readoutdata3(const char *fname, const char *var, double data[][3]){ + double x,y,z; + float xx; + char dstrorg[256]; + dstrorg[0]='\0'; + char dstr[256]; + dstr[0]='\0'; + char str[10]; + str[0]='\0'; + char strtmp[30]; + char tmp[10]; + tmp[0]='\0'; + int linectr=0, start=0,ii,jj,nn,nctr; + FILE *fp; + fp=fopen(fname,"r"); + if(fp==NULL){ + printf("file not found\n"); + return; + } + data[0][0]=0; + nn=strlen(var); + while( !feof(fp)){ + fgets(dstr,250,fp); + linectr++; + jj=strlen(dstr); + if(jj>1){ + dstr[jj-3]='\0'; + }else{ + dstr[0]='\0'; + } + if(strncmp(dstr,var,nn)==0){ + start=linectr; + }else{ + if(start==0){ + continue; + } + } + if(linectr==start){ + continue; + } + if(strncmp(dstr,"sta",3)==0){ + if(linectr>start+1){ + add3(data,Inf,2,0); + } + continue; + } + if(strncmp(dstr,"end",3)==0){ + continue; + } + if(strncmp(dstr,"[",1)!=0){ + break; + } + str[0]='\0'; + nctr=0; + for(jj=2;jj<250;jj++){ + tmp[0]='\0'; sprintf(tmp,"%c",dstr[jj]); + if(strncmp(tmp,"/",1)==0){ + break; + } + if(strncmp(tmp," ",1)==0){ + continue; + } + if(strncmp(tmp,",",1)==0){ + nctr++; + if(nctr==1){ + x=atof(str); str[0]='\0'; + continue; + } + if(nctr==2){ + y=atof(str);str[0]='\0'; + continue; + } + } + if(strncmp(tmp,"]",1)==0){ + z=atof(str);str[0]='\0'; + add3(data,x,y,z); + nctr=0; + jj++; + tmp[0]='\0'; sprintf(tmp,"%c",dstr[jj]); + if(strncmp(tmp,",",1)==0){ + jj++; + } + continue; + } + strtmp[0]='\0'; + sprintf(strtmp,"%s%s",str,tmp); + str[0]='\0'; + for(ii=0;ii<20;ii++){ + str[ii]=strtmp[ii]; + if(strtmp[ii]=='\0'){ + break; + } + } + } + } + fclose(fp); +} + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/surflibhead.h b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/surflibhead.h new file mode 100644 index 0000000000..cc10b300d7 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketlibC/surflibhead.h @@ -0,0 +1,56 @@ +double Xval[DsizeS], Yval[DsizeS], Zval[DsizeS][DsizeS]; + +////////////////////// +short Ch=1; +///////////////////// + +//double Implicitdata[DsizeL][2]; //180320 +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(short head,const char *wa,const char *var, const char *fname,double out[][3]); +int output3h(const char *wa,const char *var, const char *varh, const char *fname, double out[][3]); +void outputend(const char *fname); +int writedataC(const char *fname, double out[][3]); +int readdataC(const char *fname, double data[][3]); +void readoutdata3(const char *fname, const char *var, double data[][3]); +void parapt(double pt3[3],double pt2[2]); +double zparapt(double p[3]); +int projpara(double p3[][3], double p2[][2]); +double invparapt(double ph, double fh[][2], double fk[][3],double out[3]); +void surfcurve(short ch,double crv[][2], double pdata[][3]); +double evlpfun(short ch, double u, double v); +int envelopedata(short ch, double out[][2]); +int cuspsplitpara(short ch,double pdata[][2], double outkL[][3]); +int makexybdy(short ch,double ehL[][2]); +void partitionseg(double fig[][2],double gL[][2], int ns, double parL[]); +double funpthiddenQ(short ch,double u, double v,double pa[3]); +int pthiddenQ(short ch,double pta[3], int uveq,double out[4]); +int nohiddenpara2(short ch,double paL[], double fk[][3], int uveq, double figkL[][3]); +void borderparadata(short ch,double fkL[][3], double fsL[][3]); +int dropnumlistcrv3(double qd[][3], double eps1, int out[]); +void sfbdparadata(short ch,double outd3[][3]); +double funmeet(short ch,double u, double v,double pa[3], double vec[3]); +void meetpoints(short ch,double pta[3], double ptb[3], int uveq,double out[][3]); +void crvsfparadata(short ch,double fkL[][3], double fbdkL[][3], int sepflg, double out[][3]); +void crv3onsfparadata(short ch,double fk[][3], double fbdyd3[][3], double out[][3]); +void crv2onsfparadata(short ch,double fh[][2], double fbdyd3[][3], double out[][3]); +void intersectcrvsf(const char *wa, short chfd,double crv[][3],const char *fname); +void wireparadata(short ch,double bdyk[][3], double udata[], double vdata[],const char *fname,const char *fnameh); +void sfcutparadata(short chfd, short ncut, double fbdy3[][3],const char *fname,const char *fnameh); +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(short chfd,short chcut,double u, double v); diff --git a/graphics/ketcindy/ketcindyfolder/scripts/ketoutset.txt b/graphics/ketcindy/ketcindyfolder/scripts/ketoutset.txt new file mode 100644 index 0000000000..5fb93561f5 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/ketoutset.txt @@ -0,0 +1,48 @@ +if(!isstring(PathThead), + PathThead=""; +); +PathT=PathThead+"uplatex"; +if(iswindows(), + PathS="C:\Program Files\scilab-6.0.0\bin\scilex"; + PathC="C:\MinGW\bin\gcc.exe"; + Pathpdf="C:\Program Files\SumatraPDF\SumatraPDF.exe"; + PathR="C:\Program Files\R\R-3.4.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\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe"; +); +if(ismacosx(), + PathS="/Applications/scilab-6.0.0.app/Contents/MacOS/bin/scilab"; + Pathpdf="preview"; + PathC="gcc"; + PathR="/Library/Frameworks/R.framework/Versions/Current/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="/Applications/Adobe Acrobat Reader DC.app/Contents/MacOS/AdobeReader"; + Mackc="sh"; +); +if(islinux(), + PathS="scilab"; + Pathpdf="evince"; + PathC="gcc"; + PathR="R"; + PathA="asir"; + PathM="maxima"; + PathV3="Meshlab"; + PathF="fricas"; + PathAd="acroread"; +); + +if(indexof(PathT,"platex")>0, + Helplist(["+","+3d","+mv"],"helpJ"); +, + Helplist(["+","+3d","+mv"],"helpE"); +); + +setdirectory(Dircdy); + + diff --git a/graphics/ketcindy/ketcindyfolder/scripts/setketcindy.txt b/graphics/ketcindy/ketcindyfolder/scripts/setketcindy.txt new file mode 100755 index 0000000000..293d1b7496 --- /dev/null +++ b/graphics/ketcindy/ketcindyfolder/scripts/setketcindy.txt @@ -0,0 +1,13 @@ +// e:2018.02.26 +Dirlib=Dirhead+pathsep()+"ketlib"; +Libname=Dirlib+pathsep()+"ketpiccurrent"; +DirlibC=Dirhead+pathsep()+"ketlibC"; +setdirectory(Dirlib); +import("ketcindylibbasic1r.cs"); +import("ketcindylibbasic2r.cs"); +import("ketcindylibbasic3r.cs"); +import("ketcindyliboutr.cs"); +import("ketcindylib3dr.cs"); +import("ketcindylibmvr.cs"); + +setdirectory(Dirhead); |