From 046ae60f6e5bda805763a12a2c95e3441e12e165 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Tue, 30 Oct 2018 20:45:57 +0000 Subject: ketcindy (30oct18) git-svn-id: svn://tug.org/texlive/trunk@49030 c570f23f-e606-0410-a88d-b1316a301751 --- .../scripts/ketcindy/data/polyhedrons_obj/r01.obj | 8 + .../scripts/ketcindy/data/polyhedrons_obj/r02.obj | 14 + .../scripts/ketcindy/data/polyhedrons_obj/r03.obj | 14 + .../scripts/ketcindy/data/polyhedrons_obj/r04.obj | 32 + .../scripts/ketcindy/data/polyhedrons_obj/r05.obj | 32 + .../ketcindy/data/polyhedrons_obj/readme.pdf | Bin 0 -> 8143 bytes .../ketcindy/data/polyhedrons_obj/readme.txt | 3 + Master/texmf-dist/scripts/ketcindy/ketcindy.conf | 2 + Master/texmf-dist/scripts/ketcindy/ketcindy.pl | 202 +++ .../scripts/ketcindy/ketjava/KetCindyPlugin.jar | Bin 157275 -> 157246 bytes .../scripts/ketcindy/ketlib/ketcindylib3dlogr.txt | 50 + .../scripts/ketcindy/ketlib/ketcindylib3dr.cs | 1195 ++++++++----- .../ketcindy/ketlib/ketcindylibbasic1logr.txt | 91 + .../scripts/ketcindy/ketlib/ketcindylibbasic1r.cs | 1892 ++++++++++++++------ .../ketcindy/ketlib/ketcindylibbasic2logr.txt | 61 + .../scripts/ketcindy/ketlib/ketcindylibbasic2r.cs | 959 ++++++---- .../scripts/ketcindy/ketlib/ketcindylibmvhelpE.txt | 2 - .../scripts/ketcindy/ketlib/ketcindylibmvhelpJ.txt | 2 - .../scripts/ketcindy/ketlib/ketcindylibmvlogr.txt | 9 + .../scripts/ketcindy/ketlib/ketcindylibmvr.cs | 44 +- .../scripts/ketcindy/ketlib/ketcindyliboutlogr.txt | 23 + .../scripts/ketcindy/ketlib/ketcindyliboutr.cs | 248 ++- .../scripts/ketcindy/ketlib/ketpiccurrent.r | 796 ++++---- .../scripts/ketcindy/ketlib/ketpiccurrent_rep2e.r | 40 +- .../scripts/ketcindy/ketlibC/ketcommon.h | 2 + .../scripts/ketcindy/ketlibC/ketlibClog.txt | 7 + .../texmf-dist/scripts/ketcindy/ketlibC/surflib.h | 80 +- .../scripts/ketcindy/ketlibC/surflibhead.h | 2 +- Master/texmf-dist/scripts/ketcindy/ketoutset.txt | 6 - Master/texmf-dist/scripts/ketcindy/template0.cdy | Bin 0 -> 3709 bytes .../texmf-dist/scripts/ketcindy/template1basic.cdy | Bin 5901 -> 4216 bytes .../scripts/ketcindy/template2advanced.cdy | Bin 7354 -> 0 bytes .../texmf-dist/scripts/ketcindy/template2slide.cdy | Bin 0 -> 5714 bytes .../scripts/ketcindy/template3Dfigure.cdy | Bin 0 -> 5060 bytes 34 files changed, 4003 insertions(+), 1813 deletions(-) create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r01.obj create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r02.obj create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r03.obj create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r04.obj create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r05.obj create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.pdf create mode 100644 Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.txt create mode 100644 Master/texmf-dist/scripts/ketcindy/ketcindy.conf create mode 100755 Master/texmf-dist/scripts/ketcindy/ketcindy.pl create mode 100644 Master/texmf-dist/scripts/ketcindy/template0.cdy delete mode 100644 Master/texmf-dist/scripts/ketcindy/template2advanced.cdy create mode 100644 Master/texmf-dist/scripts/ketcindy/template2slide.cdy create mode 100644 Master/texmf-dist/scripts/ketcindy/template3Dfigure.cdy (limited to 'Master/texmf-dist/scripts') diff --git a/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r01.obj b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r01.obj new file mode 100644 index 00000000000..2edf33c599d --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/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/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r02.obj b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r02.obj new file mode 100644 index 00000000000..85bbede8b6f --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/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/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r03.obj b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r03.obj new file mode 100644 index 00000000000..c42c1d1f6e0 --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/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/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r04.obj b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r04.obj new file mode 100644 index 00000000000..56a0c40c7a9 --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/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/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r05.obj b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/r05.obj new file mode 100644 index 00000000000..fd013dc2506 --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/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/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.pdf b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.pdf new file mode 100644 index 00000000000..07633b0b1be Binary files /dev/null and b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.pdf differ diff --git a/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.txt b/Master/texmf-dist/scripts/ketcindy/data/polyhedrons_obj/readme.txt new file mode 100644 index 00000000000..a4df939ef7c --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/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/Master/texmf-dist/scripts/ketcindy/ketcindy.conf b/Master/texmf-dist/scripts/ketcindy/ketcindy.conf new file mode 100644 index 00000000000..6b5c74511f7 --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/ketcindy.conf @@ -0,0 +1,2 @@ +// Re-setting PathT,PathR,Pathpdf,PathM,PathAd,PathV3,PathC,Mackc +//PathT=PathThead+"pdflatex"; diff --git a/Master/texmf-dist/scripts/ketcindy/ketcindy.pl b/Master/texmf-dist/scripts/ketcindy/ketcindy.pl new file mode 100755 index 00000000000..ad71b35c2e2 --- /dev/null +++ b/Master/texmf-dist/scripts/ketcindy/ketcindy.pl @@ -0,0 +1,202 @@ +#!/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 $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 "Cannot find $BinaryName!"; +} + +if ( ! -x "$cinderella" ) { + die "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 "Cannot find $TemplateFile via kpsewhich, is ketpic installed?"; +} + + +if ( ! -r "$plugin" || ! -r "$dirheadplugin" ) { + print "Cinderella is *NOT* set up for KETCindy!\n"; + print "You need to copy\n"; + print " $KetCdyJar\n"; + print " $DirHead\n"; + print "into\n"; + print " $plugindir\n"; + print "\n"; + exit(1); +} + +my $myjarmd = md5digest($KetCdyJar); +my $sysjarmd = md5digest($plugin); + +if ( $myjarmd ne $sysjarmd ) { + print "The installed version of the plugin in\n"; + print " $plugin\n"; + print "differs from the version shipped in\n"; + print " $KetCdyJar\n"; + print "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 "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 "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/Master/texmf-dist/scripts/ketcindy/ketjava/KetCindyPlugin.jar b/Master/texmf-dist/scripts/ketcindy/ketjava/KetCindyPlugin.jar index 3c150e58ddb..87a04ab663c 100644 Binary files a/Master/texmf-dist/scripts/ketcindy/ketjava/KetCindyPlugin.jar and b/Master/texmf-dist/scripts/ketcindy/ketjava/KetCindyPlugin.jar differ diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dlogr.txt b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dlogr.txt index 7dcdd198e91..3bfe1f09635 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dlogr.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dlogr.txt @@ -1,3 +1,53 @@ +// 20181030 +// Mkpointlist debugged (workprocess adopted) +// Parcrv3d, IntersectsgpL debugged +// Ptonseg3d changed ( for non-geo point ) +// Drawpoint3d changed ( color option ) +// 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 diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs index ffb4798b846..c5516db2888 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylib3dr.cs @@ -14,10 +14,11 @@ // along with this program. If not, see // -println("ketcindylib3d(20180614) loaded"); +println("ketcindylib3d(20181030) loaded"); //help:start(); +////%Ketinit3d start//// Ketinit3d():=Ketinit3d(1); Ketinit3d(sf):=( regional(tmp); @@ -26,7 +27,8 @@ Ketinit3d(sf):=( Ketinit3d(sf,[-5,tmp-0.5,tmp-1]); ); Ketinit3d(subflg,position):=( -//help:Ketinit3d(subflg=1) +//help:Ketinit3d(); +//help:Ketinit3d(0); regional(ctr,tmp,tmp1,tmp2,tmp3,tmp4,xPos,yTh,yPh); // println("KETCindy3d V.2.3.5(2016.02.03)"); BezierNumber3=1; //15.02.28 @@ -78,7 +80,9 @@ Ketinit3d(subflg,position):=( TSIZEZ=10; ErrFlg=0; ); +////%Ketinit3d end//// +////%Start3d start//// Start3d():=Start3d([]); Start3d(ptexception):=( //help:Start3d(); @@ -140,57 +144,7 @@ Start3d(ptexception):=( ChNum=1; ); Ch=[0]; - );// 17.05.18until - if(length(VLIST)==0, // 16.06.20 - tmp=remove(allpoints(),[NE,SW,TH,FI,O,X,Y,Z]);//17.06.02 - tmp4=remove(tmp,ptexception); - forall(tmp4,pt, - tmp1=text(pt); - tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); - if(tmp!="z", - tmp=parse(tmp1+"z.y"); - pt3=Xyzcoord(pt.x,pt.y,tmp); - Defvar(tmp1+"3d",pt3); - pt2=Parapt(pt3); // 16.05.28from - Defvar(tmp1+"2d",pt2); // 16.05.28until - ); - ); - , - if(isselected(NE) % isselected(SW), - tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,ptexception); - forall(tmp4,pt, - tmp1=text(pt); - tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); - if(tmp!="z", - tmp=select(VLIST,#_1==tmp1+"3d"); //17.10.07 - pt3=tmp_1_2; - tmp=tmp1+".xy=Parapt("+pt3+")_[1,2];"; - parse(tmp); -// if(SUBSCR==1, -// tmp=tmp1+"z"+".x=NE.x-SW.x+"+tmp1+".x"; -// parse(tmp); -// ); - ); - ); - , - tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,ptexception); - forall(tmp4,pt, - tmp1=text(pt); - tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); - if(tmp!="z", - tmp2=parse(tmp1+"z"); - if(isselected(pt) % isselected(tmp2), - Defvar(tmp1+"2d",pt.xy); - tmp=parse(tmp1+"z.y"); - tmp=Xyzcoord(pt.x,pt.y,tmp); - Defvar(tmp1+"3d",tmp); - ); - ); - ); - ); - ); + );// 17.05.18to if(SUBSCR==1, xmn=SW.x+NE.x-SW.x; xMx=NE.x+NE.x-SW.x; @@ -206,10 +160,13 @@ Start3d(ptexception):=( 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.01until + ThinDense=0.1; //17.07.01to Ptseg3data(ptexception); //16.08.23 + PTEXCEPTION=ptexception; //180916 ); +////%Start3d end//// +////%Setangle start//// Setangle(angL):=Setangle(ang_1,ang_2);//180614 Setangle(theta,phi):=( //16.12.24 //help:Setangle(60,30); @@ -230,22 +187,22 @@ Setangle(theta,phi):=( //16.12.24 GLIST=append(GLIST,tmp); if(length(VLIST)==0, // 16.06.20 tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,ptexception); + tmp4=remove(tmp,PTEXCEPTION); //180916 forall(tmp4,pt, tmp1=text(pt); tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); if(tmp!="z", - tmp=parse(tmp1+"z.y"); - pt3=Xyzcoord(pt.x,pt.y,tmp); + 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.28until + Defvar(tmp1+"2d",pt2); // 16.05.28to ); ); , if(isselected(NE) % isselected(SW), tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,ptexception); + tmp4=remove(tmp,PTEXCEPTION); //180916 forall(tmp4,pt, tmp1=text(pt); tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); @@ -258,7 +215,7 @@ Setangle(theta,phi):=( //16.12.24 ); , tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp4=remove(tmp,ptexception); + tmp4=remove(tmp,PTEXCEPTION); //180916 forall(tmp4,pt, tmp1=text(pt); tmp=substring(tmp1,length(tmp1)-1,length(tmp1)); @@ -266,8 +223,8 @@ Setangle(theta,phi):=( //16.12.24 tmp2=parse(tmp1+"z"); if(isselected(pt) % isselected(tmp2), Defvar(tmp1+"2d",pt.xy); - tmp=parse(tmp1+"z.y"); - tmp=Xyzcoord(pt.x,pt.y,tmp); + tmp=parse(tmp1+"z.xy"); //181028(2lines) + tmp=Xyzcoord(pt.xy,tmp); Defvar(tmp1+"3d",tmp); ); ); @@ -280,9 +237,11 @@ Setangle(theta,phi):=( //16.12.24 tmp=tmp1+"="+textformat(tmp2,5); parse(tmp); ); - Ptseg3data(ptexception); + Ptseg3data(PTEXCEPTION); //180916 ); +////%Setangle end//// +////%Getangle start//// Getangle():=getangle(["Disp=y"]); //180613from Getangle(option):=( regional(tmp,tmp1,dispflg,eqL); @@ -301,10 +260,15 @@ Getangle(option):=( ); tmp; //180607 ); //180613to +////%Getangle end//// -isAngle():=Isangle(); //180517 +////%Angleselected start//// +Angleselected():=IsAngle(); //180713 +//isAngle():=Isangle(); //180517 Isangle():=isselected(TH)%isselected(FI); //180517 +////%Angleselected end//// +////%Changestyle3d start//// Changestyle3d(nameL,style):=( //help:Changestyle3d(["geoseg3d","ax3d"],["notex"]); regional(nmL,name,tmp,tmp1,tmp2); @@ -325,7 +289,9 @@ Changestyle3d(nameL,style):=( ); ); ); +////%Changestyle3d end//// +////%Dist3d start//// Dist3d(pt1):=Dist3d(pt1,[0,0,0]); Dist3d(pt1,pt2):=( //help:Dist3d(A3d,B3d); @@ -346,6 +312,7 @@ Dist3d(pt1,pt2):=( ); sqrt((p2-p1)*(p2-p1)); ); +////%Dist3d end//// Findangle(vec):=( //help:Findangle([2,1,4]); @@ -376,19 +343,24 @@ Cancoordpara(pc):=( [tmp1,tmp2,tmp3]; ); +////%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); @@ -396,7 +368,50 @@ Parapt(pt):=( 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, @@ -448,7 +463,9 @@ ProjCurve(crv):=( ); Out; ); +////%ProjCurve end//// +////%Projpara start//// Projpara(ptdata):=Projpara(ptdata,[]); Projpara(ptdata,optionsorg):=( //help:Projpara("sf3d1"); @@ -496,10 +513,14 @@ Projpara(ptdata,optionsorg):=( ); 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(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]); @@ -514,6 +535,7 @@ Projpara(ptdata,optionsorg):=( Out=tmp; Out; ); +////%Projpara end//// InvparaptPp(pt,pd):=( regional(Eps,fk,nfk,ph,fh,ah,bh,ak,bk,v1,v2, @@ -572,26 +594,36 @@ InvparaptPp(pt,pd):=( out; ); +////%Invparapt start//// Invparapt(pt,pd):=( regional(tmp); tmp=InvparaptPp(pt,pd); tmp_1; ); +////%Invparapt end//// -Subgraph(name,opcindy):=( - regional(tht,tmp,tmp1); - tht=THETA; THETA=pi/2; - tmp=Projpara(name3,["nodata"]); - if(length(tmp)>0, //15.08.17 - tmp=Translatedata("",[tmp],[NE.x-SW.x,0],["nodata"]); - tmp1=replace("sub"+name,"3d","2d"); - tmp=tmp1+"="+Textformat(tmp,5); - parse(tmp); - GCLIST=append(GCLIST,[tmp1,0,opcindy]); +////%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); ); - THETA=tht; // 15.11.03 + tmp=name+"="+Textformat(sub2d,5); + parse(tmp); + GCLIST=append(GCLIST,[name,0,opcindy]); + sub2d; ); +////%Subgraph end//// +////%Spaceline start//// Spaceline(ptlist):=Spaceline(ptlist,[]); // 16.02.22 from Spaceline(Arg1,Arg2):=( regional(name,tmp,tmp1,tmp2); @@ -667,10 +699,14 @@ Spaceline(nm,ptlistorg,optionorg):=( ); 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(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]); @@ -680,7 +716,9 @@ Spaceline(nm,ptlistorg,optionorg):=( ); 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"]); @@ -828,10 +866,14 @@ Spacecurve(nm,funstr,variable,optionorg):=( ); 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(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]); @@ -844,7 +886,9 @@ Spacecurve(nm,funstr,variable,optionorg):=( ); 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"); @@ -878,10 +922,13 @@ Partcrv3d(nm,pA,pB,PkLstr,options):=( dt1=partcrv("",p1,p2,tmp,["nodata"]); dts=partcrv("",q1,q2,"sub"+tmp,["nodata"]); dt=apply(1..length(dt1), - Xyzcoord(dt1_#_1,dt1_#_2,dts_#_2)); + 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"]); @@ -920,15 +967,15 @@ Joincrvs3d(nm,plotstrL,options):=( 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), + 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), + if(rMN==Norm(pS-pQ), PtL=reverse(PtL); , - if(rMN==norm(pS-pR), + if(rMN==Norm(pS-pR), PtL=reverse(PtL); Qd=reverse(Qd); ); @@ -958,10 +1005,14 @@ Joincrvs3d(nm,plotstrL,options):=( ); 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(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]); @@ -974,7 +1025,9 @@ Joincrvs3d(nm,plotstrL,options):=( ); PtL; ); +////%Joincrvs3d( end//// +////%Xyzax3data start//// Xyzax3data(nm,Xrange,Yrange,Zrange):= Xyzax3data(nm,Xrange,Yrange,Zrange,[]); Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( @@ -1050,10 +1103,14 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( ); 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(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]); @@ -1071,12 +1128,14 @@ Xyzax3data(nm,Xrange,Yrange,Zrange,options):=( ); ); // 16.08.14until if(SUBSCR==1, // 15.02.11 - Subgraph(name3,opcindy); + Subgraph(name3,opcindy); //181029 ); ); Out; ); +////%Xyzax3data end//// +////%Xyzax3paraname start//// Xyzaxparaname(Xrange,Yrange,Zrange):= Xyzaxparaname(Xrange,Yrange,Zrange,[]); Xyzaxparaname(Xrange,Yrange,Zrange,options):=( @@ -1120,6 +1179,7 @@ Xyzaxparaname(Xrange,Yrange,Zrange,options):=( Expr(ch,"c",Zname); ); ); +////%Xyzax3paraname end//// Datalist3d():=( //help:Datalist3d(); @@ -1211,10 +1271,14 @@ Embed(nm,Pd2str,funstr,varstr,options):=( ); 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(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, @@ -1227,14 +1291,12 @@ Embed(nm,Pd2str,funstr,varstr,options):=( Out; ); -Rotatept3d(point,w1,w2):=Rotate3pt(point,w1,w2); -Rotatept3d(point,w1,w2,center):=Rotate3pt(point,w1,w2,center); -//help:Rotatept3d(pt3d,[0,0,1],pi/2); -//help:Rotatept3d(pt3d,[0,0,1],pi/2,[1,1,1]); -Rotate3pt(point,w1,w2):=Rotate3pt(point,w1,w2,[0,0,0]); -Rotate3pt(point,w1,w2,center):=( -//help:Rotate3pt(pt3d,[0,0,1],pi/2); -//help:Rotate3pt(pt3d,[0,0,1],pi/2,[1,1,1]); +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); @@ -1317,12 +1379,10 @@ Rotate3pt(point,w1,w2,center):=( Ans; ); -Rotatedata3d(nm,P3data,w1,w2):=Rotate3data(nm,P3data,w1,w2); -Rotatedata3d(nm,P3data,w1,w2,options):= - Rotate3data(nm,P3data,w1,w2,options); +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); -Rotate3data(nm,P3data,w1,w2):=Rotate3data(nm,P3data,w1,w2,[]); -Rotate3data(nm,P3data,w1,w2,options):=( +//help:Rotatedata3d(options=[center,...]); regional(name3,name2,center,pdata,Pd3,Pd,Out,tmp,tmp1, Ltype,Noflg,opcindy,opstr,color); name3="rot3d"+nm; @@ -1342,10 +1402,10 @@ Rotate3data(nm,P3data,w1,w2,options):=( Out=[]; forall(Pd3,Pd, if(isstring(Pd),Pd=parse(Pd)); - if(MeasureDepth(Pd)==1,Pd=[Pd]); +// if(MeasureDepth(Pd)==1,Pd=[Pd]); Ans=[]; forall(Pd, - tmp=Rotate3pt(#,w1,w2,center); + tmp=Rotatepoint3d(#,w1,w2,center); //180729 Ans=append(Ans,tmp); ); Out=append(Out,Ans); @@ -1353,27 +1413,33 @@ Rotate3data(nm,P3data,w1,w2,options):=( Out=Flattenlist(Out); if(length(Out)==1,Out=Out_1); if(Noflg<3, - println("generate Rotate3data "+name3); + println("generate Rotatedata3d "+name3); tmp=name3+"="+textformat(Out,5); parse(tmp); tmp1=Projpara(name3,["nodata"]); tmp=name2+"="+textformat(tmp1,5); parse(tmp); - tmp=textformat(P3data,5); // 17.12.23 + 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+"," - +textformat(w1,5)+","+textformat(w2,5)+opstr+")"; + 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(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name2); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); , if(Noflg==1,Ltype=0); ); @@ -1385,9 +1451,9 @@ Rotate3data(nm,P3data,w1,w2,options):=( Out; ); -Translatept3d(point,w1):=Translate3pt(point,w1); -//help:Translatept3d(pt3d,[1,2,3]); -Translate3pt(point,w1):=( +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, @@ -1414,12 +1480,9 @@ Translate3pt(point,w1):=( Ans; ); -Translatedata3d(nm,P3data,w1):=Translate3data(nm,P3data,w1); -Translatedata3d(nm,P3data,w1,options):= - Translate3data(nm,P3data,w1,options); +Translatedata3d(nm,P3data,w1):=Translatedata3d(nm,P3data,w1,[]); +Translatedata3d(nm,P3data,w1,options):=( //help:Translatedata3d("1",["sl3d1"],[1,2,3]); -Translate3data(nm,P3data,w1):=Translate3data(nm,P3data,w1,[]); -Translate3data(nm,P3data,w1,options):=( regional(name3,name2,pdata,Pd3,Pd,Out,tmp,tmp1, Ltype,Noflg,opcindy,color); name3="tra3d"+nm; @@ -1436,7 +1499,7 @@ Translate3data(nm,P3data,w1,options):=( if(MeasureDepth(Pd)==1,Pd=[Pd]); Ans=[]; forall(Pd, - tmp=Translate3pt(#,w1); + tmp=Translatepoint3d(#,w1); Ans=append(Ans,tmp); ); Out=append(Out,Ans); @@ -1444,7 +1507,7 @@ Translate3data(nm,P3data,w1,options):=( Out=Flattenlist(Out); if(length(Out)==1,Out=Out_1); if(Noflg<3, - println("generate Translate3data "+name3); + println("generate Translatedata3d "+name3); tmp=name3+"="+textformat(Out,5); parse(tmp); tmp1=Projpara(name3,["nodata"]); @@ -1452,6 +1515,7 @@ Translate3data(nm,P3data,w1,options):=( 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,"]",")"); @@ -1462,10 +1526,14 @@ Translate3data(nm,P3data,w1,options):=( ); 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(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]); @@ -1476,11 +1544,9 @@ Translate3data(nm,P3data,w1,options):=( Out; ); -Reflectpoint3d(point,vecL):=Reflect3point(point,vecL); -Reflectpt3d(point,vecL):=Reflect3pt(point,vecL); +Reflect3pt(point,vecL):=Reflectpoint3d(point,vecL); +Reflectpoint3d(point,vecL):=( //help:Reflectpoint3d(pt3d,[v1,v2,v3]); -Reflect3point(point,vecL):=Reflect3pt(point,vecL); -Reflect3pt(point,vecL):=( regional(ans,v1,v2,v3,tmp,tmp1); if(length(vecL)==1, v1=vecL_1; @@ -1504,14 +1570,174 @@ Reflect3pt(point,vecL):=( ans; ); -Xyzcoord(X,Y,z):=( +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); + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+Textformat(tmp1,5); + 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; +); + +// 180806 +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]; +); + +// 180808 +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); + parse(tmp); + tmp1=Projpara(name3,["nodata"]); + tmp=name2+"="+Textformat(tmp1,5); + 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; +); + +////%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(Eps,x3d,y3d,z3d); - x3d=(-X*sin(PHI)*cos(THETA)-Y*cos(PHI)+z*cos(PHI)*sin(THETA))/cos(THETA); - y3d=(X*cos(PHI)*cos(THETA)-Y*sin(PHI)+z*sin(PHI)*sin(THETA))/cos(THETA); - z3d=z; - [x3d,y3d,z3d]; + regional(pt3d); + pt3d=Mainsubpt3d([X,Y],ps); + pt3d;//181028to ); +////%Xyzcoord end//// PutonCurve3d(name,pdstr):=( //help:PutonCurve3d("T","sc3d1"); @@ -1523,138 +1749,126 @@ PutonCurve3d(name,pdstr):=( tmp1=ParamonCurve(tmp_1,tmp_2,pd2str); tmp="sub"+pd2str; tmp2=PointonCurve(tmp1,tmp); - pt=append(pt,tmp2_2); - pt=Xyzcoord(pt_1,pt_2,pt_3); // 15.03.13 +// pt=append(pt,tmp2_2); //181028(2lines) + pt=Xyzcoord(pt,tmp2); // 15.03.13 tmp=name+"z.xy="+textformat(tmp2,5); parse(tmp); VLIST=select(VLIST,#_1!=name+"3d"); Defvar(name+"3d",pt); ); +////%Mkpointlist start//// Mkpointlist():=Mkpointlist([]); //16.11.12 -Mkpointlist(options):=( //16.11.12 - regional(Eps,pos,ptL,plist,ilist,plistrest, - inforest,free,pt,pt3,ptz,par,vlistpre, +Mkpointlist(options):=( //181030 + regional(Eps,pos,worklist,plist,pt,ptstr,pt3,ptz,par, + vlistpre, tmp,tmp1,tmp2,tmp3,tmp4,p1,p2,flg); Eps=10^(-4); - tmp=Finddef(NE); - free=tmp_1; pos=[NE.x+1,NE.y]; - tmp=remove(allpoints(),[NE,SW,TH,FI]); - tmp=remove(tmp,options); //16.11.12 - plist=select(tmp, - substring(text(#),length(text(#))-1,length(text(#)))!="z" - ); + 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 +// vlistpre=VLIST; //181015 if(SUBSCR==0,plist=[]); - ptL=[]; - plistrest=[]; - inforest=[]; - forall(plist,pt, + forall(plist,ptstr, + pt=parse(ptstr); inspect(pt,"ptsize",3); inspect(pt,"color",2); inspect(pt,"textsize",TSIZE); ptz=text(pt)+"z"; tmp=Finddef(pt); - if(indexof(tmp_1,free)>0, // free point - tmp=select(VLIST,#_1==text(pt)+"3d"); - if(length(tmp)==0, - tmp=pt.x+NE.x-SW.x; - Putpoint(ptz,[tmp,0],[tmp,parse(ptz+".y")]); - pt3=Xyzcoord(pt.x,pt.y,parse(text(ptz)+".y")); - Defvar(text(pt)+"3d",pt3); - Defvar(text(pt)+"fix",0); - vlistpre=VLIST; //16.08.20 - ); - flg=0; - if(isselected(pt), - if(parse(text(pt)+"fix")!=1, // 15.03.01 - tmp=pt.x+NE.x-SW.x; - Putpoint(ptz,[tmp,0],[tmp,parse(ptz+".y")]); - pt3=Xyzcoord(pt.x,pt.y,parse(text(ptz)+".y")); - VLIST=select(VLIST,#_1!=text(pt)+"3d"); - Defvar(text(pt)+"3d",pt3); - vlistpre=VLIST; //16.08.20 - flg=1; + tmp=select(VLIST,#_1==text(pt)+"3d"); + if(length(tmp)==0, + 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]); ); - ); - inspect(parse(ptz),"ptsize",3); - inspect(parse(ptz),"color",3); - inspect(parse(ptz),"textsize",TSIZEZ); - if(isselected(parse(ptz)), - if(parse(ptz+"fix")!=1, // 15.03.01 - tmp=select(vlistpre,#_1==text(pt)+"3d"); //16.08.20 - pt3=tmp_1_2; - pt3_3=parse(ptz+".y"); - pt.xy=Parapt(pt3); - tmp=ptz+".x=pt.x+NE.x-SW.x"; - parse(tmp); + Putpoint(ptz,tmp,[parse(ptz+".x"),pt.y]);//181029to + pt3=Mainsubpt3d(pt.xy,parse(ptz+".xy")); + ); //181028to + Defvar(text(pt)+"3d",pt3); + Defvar(text(pt)+"fix",0); +// vlistpre=VLIST; //16.08.20 + ); + flg=0; + if(isstring(ptz),ptz=parse(ptz));//181029from + inspect(ptz,"ptsize",3); + inspect(ptz,"color",3); + inspect(ptz,"textsize",TSIZEZ);//181029to + if(isselected(pt), + if(parse(text(pt)+"fix")!=1, + tmp=select(VLIST,#_1==text(pt)+"3d"); + tmp1=tmp_1_2; + tmp2=Mainsubpt3d(pt.xy,ptz.xy); //181029 + if(Norm(tmp1-tmp2)>Eps, VLIST=select(VLIST,#_1!=text(pt)+"3d"); - Defvar(text(pt)+"3d",pt3); - flg=2; + Defvar(text(pt)+"3d",tmp2); +// vlistpre=VLIST; //16.08.20 ); + Putpoint(text(ptz),Parasubpt(tmp2)); + pt3=tmp2; + flg=1; ); - if(flg==0, - tmp=select(VLIST,#_1==text(pt)+"3d"); - if(length(tmp)>0, //17.10.07 - pt3=tmp_1_2; - pt.xy=Parapt(pt3); - tmp=ptz+".x=pt.x+NE.x-SW.x"; - parse(tmp); - ); //17.10.07 - ); - if(isselected(pt) % isselected(parse(ptz)), - drawtext(pos,text(pt3)); - ); - if(!contains(["p","q"],text(pt)), - ptL=append(ptL,pt); - ); - , - tmp=Findgeoinfo(pt); - tmp1=[parse(tmp_1),parse(tmp_2),parse(tmp_3)]; - plistrest=append(plistrest,pt); - inforest=append(inforest,tmp); - ); - ); - if(length(plistrest)>0, - tmp=Sortpointlist([plistrest,inforest]); - plist=tmp_1; - ilist=tmp_2; - forall(1..length(plist), - pt=plist_#; - ptz=text(pt)+"z"; - tmp=ilist_#; - p1=parse(tmp_3); - p2=p1+parse(tmp_2)-parse(tmp_1); - tmp1=p2-p1; - tmp2=pt-p1; - if(abs(tmp1_1)>abs(tmp1_2), - par=tmp2_1/tmp1_1; + ); + if(isselected(ptz), +// tmp=select(vlistpre,#_1==text(pt)+"3d"); //16.08.20 + tmp=select(VLIST,#_1==text(pt)+"3d"); //181030 + tmp1=tmp_1_2; + tmp2=Mainsubpt3d(pt.xy,ptz.xy); + if(Norm(tmp1-tmp2)>Eps, + if(abs(cos(THETA))>Eps, + tmp2=[tmp1_1,tmp1_2,tmp2_3]; , - par=tmp2_2/tmp1_2; - ); - tmp=ilist_#; - tmp1=parse(tmp_1+"3d"); - tmp2=parse(tmp_2+"3d"); - tmp3=parse(tmp_3+"3d"); - tmp1=(1-par)*tmp3+par*(tmp3+tmp2-tmp1); - Putpoint(ptz,[pt.x+NE.x-SW.x,tmp1_3]); - inspect(parse(ptz),"ptsize",3); - inspect(parse(ptz),"color",3); - inspect(parse(ptz),"textsize",TSIZEZ); - pt3=Xyzcoord(pt.x,pt.y,parse(text(ptz)+".y")); - VLIST=select(VLIST,#_1!=tmp1+"3d"); + ); //181028to + VLIST=select(VLIST,#_1!=text(pt)+"3d"); + Defvar(text(pt)+"3d",tmp2); + ); + Putpoint(text(ptz),Parasubpt(tmp2)); + pt3=tmp2; + flg=2; + ); + if(isselected(TH) % isselected(FI), //181029 + tmp=select(VLIST,#_1==text(pt)+"3d"); + if(length(tmp)>0, //17.10.07 + tmp1=Parapt(tmp_1_2); + Putpoint(text(pt),tmp1); //181029 + tmp2=Parasubpt(tmp_1_2);//181027(2lines) + Putpoint(text(ptz),tmp2); //181029 + flg=3; + ); //17.10.07 + ); + if(flg==0, //181030from + pt3=Mainsubpt3d(pt.xy,ptz.xy); + VLIST=select(VLIST,#_1!=text(pt)+"3d"); Defvar(text(pt)+"3d",pt3); - vlistpre=VLIST; //16.08.20 - if(isselected(pt) % isselected(parse(ptz)), - drawtext(pos,text(pt3)); - ); - if(!contains(["p","q"],text(pt)), - ptL=append(ptL,pt); - ); + ); //181030to + if(isselected(pt) % isselected(ptz), + drawtext(pos,text(pt3)); + ); + if(!contains(["p","q"],text(pt)), + ptL=append(ptL,pt); ); ); - ptL; ); +////%Mkpointlist end//// Mkseg3d():=Mkseg3d([]); Mkseg3d(options):=( @@ -1700,6 +1914,7 @@ Mkseg3d(options):=( segL; ); +////%Ptseg3data start//// Ptseg3data():=Ptseg3data([]); //help:Ptseg3data(); //help:Ptseg3data([A,B]); @@ -1732,7 +1947,9 @@ Ptseg3data(options):=( SEG3dlist=Mkseg3d(options); SEG3dlist; ); +////%Ptseg3data end//// +////%Putonseg3d start//// Putonseg3d(name,ptL):=Putonseg3d(name,ptL_1,ptL_2,[]); Putonseg3d(name,Arg1,Arg2):=( if(islist(Arg1), @@ -1750,7 +1967,11 @@ Putonseg3d(name,pt1,pt2,options):=( if(length(tmp_6)>0, par=tmp_6_1; ); - Putonseg(name,pt1,pt2,[par]); + 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); @@ -1758,23 +1979,33 @@ Putonseg3d(name,pt1,pt2,options):=( inspect(parse(name+"z"),"ptsize",3); inspect(parse(name+"z"),"color",3); inspect(parse(name+"z"),"textsize",TSIZEZ); - pn1=text(pt1); - pn2=text(pt2); - tmp1=replace("PTCz.y=PTAz.y+|PTC-PTA|/|PTB-PTA|*(PTBz.y-PTAz.y)","PTC",name); - tmp1=replace(tmp1,"PTA",pn1); - tmp1=replace(tmp1,"PTB",pn2); - tmp2=replace("PTCz.x=PTAz.x+|PTC-PTA|/|PTB-PTA|*(PTBz.x-PTAz.x)","PTC",name); - tmp2=replace(tmp2,"PTA",pn1); - tmp2=replace(tmp2,"PTB",pn2); - parse(tmp2); - parse(tmp1); - tmp1=parse(name+".x"); - tmp2=parse(name+".y"); - tmp3=parse(name+"z.y"); - tmp=Xyzcoord(tmp1,tmp2,tmp3); + if(ispoint(pt1), + pn1=text(pt1); + pn2=text(pt2); + 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); + 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), @@ -1807,7 +2038,7 @@ Putpoint3d(Arg1,Arg2,Arg3):=( if(islist(fixstr),tmp=fixstr_1,tmp=fixstr); tmp=Toupper(tmp); if(tmp!="FIX", - tmp=Xyzcoord(tmp2.x,tmp2.y,parse(tmp1+"z").y); + tmp=Xyzcoord(tmp2.xy,parse(tmp1+"z.xy")); //181028 , tmp=pt3; ); @@ -1836,7 +2067,9 @@ Putpoint3d(Arg1,Arg2,Arg3):=( 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); @@ -1855,7 +2088,9 @@ Fixpoint3d(ptlist):=( parse(tmp); ); ); +////%Fixpoint3d 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"); @@ -1913,12 +2148,15 @@ Putperp(name,ptstr,pLstr,option):=( ); 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",[0,0,1,0]); +//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); @@ -1948,20 +2186,42 @@ Perpplane(name,ptstr,nstr,option):=( ); [pA,pB]; ); +////%Perpplane end//// -Drawpoint3d(pt3):=( +////%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=parapt(#); - draw(tmp_(1..2)); + tmp="draw("+Textformat(Parapt(#),6)+opcindy+")"; + parse(tmp); if(SUBSCR==1, - draw([tmp_1+NE.x-SW.x, #_3]); + 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); + parse(tmp); +); //181017to +////%Pointdata3d end//// +////%Putaxes3d start//// Putaxes3d(size):=( //help:Putaxes3d(5); //help:Putaxes3d([1,2,3]); @@ -1974,17 +2234,46 @@ Putaxes3d(size):=( // 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,"draw"); -IntersectsgpL(name,sgstr,pLstr,option):=( + IntersectsgpL(name,sgstr,pLstr,["Draw=ie"]); +IntersectsgpL(name,sgstr,pLstr,optionsorg):=( //help:IntersectsgpL("R","P-Q","A-B-C"); -//help:IntersectsgpL("R","P-Q","A-B-C","put"); -//// help:IntersectsgpL("","P-Q","A-B-C","none"); -//help:IntersectsgpL("",[p1,p2],[p3,p4,p5],"draw"); - regional(opstr,out,pP,pQ,pA,pB,pC,pH,pK,pR,tseg,tt,ss,Eps,flg, - nvec,tmp,tmp1,tmp2,tmp3,tmp4); - if(islist(option),opstr=option_1,opstr=option); +//help:IntersectsgpL("",[p1,p2],[p3,p4,p5]); +//help:IntersectsgpL(options=["draw(put)","ie"+pointoptions]); + regional(options,strL,ptflg,out,pP,pQ,pA,pB,pC,pH,pK,pR,tseg,tt,ss,Eps, + flg,nvec,tmp,tmp1,tmp2,tmp3,tmp4); + options=optionsorg; //181026from + tmp1=""; + if(isstring(options), + tmp1=options; + options=[]; + ); + options=remove(options,["draw","Draw"]); + tmp=Divoptions(options); + 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); + 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 @@ -2015,8 +2304,8 @@ IntersectsgpL(name,sgstr,pLstr,option):=( ); nvec=Crossprod(pB-pA,pC-pA); if(abs(Dotprod(nvec,pQ-pP))>Eps, - pH=(Reflect3point(pP,[pA,pB,pC])+pP)/2; - pK=(Reflect3point(pQ,[pA,pB,pC])+pQ)/2; + 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(#)))); @@ -2024,14 +2313,6 @@ IntersectsgpL(name,sgstr,pLstr,option):=( tmp=tmp_1; tseg=tmp1_tmp/tmp2_tmp; pR=(1-tseg)*pH+tseg*pK; - tmp=substring(opstr,0,1); - if(Toupper(tmp)=="P", - Putpoint3d([name,pR]); - Fixpoint3d([name,pR]); - ); - if(Toupper(tmp)=="D", - Drawpoint3d(pR); - ); tmp=Dotprod(pB-pA,pC-pA); tmp1=Dotprod(pB-pA,pB-pA); tmp2=Dotprod(pC-pA,pC-pA); @@ -2039,15 +2320,30 @@ IntersectsgpL(name,sgstr,pLstr,option):=( tmp4=Dotprod(pR-pA,pC-pA); ss=-(tmp*tmp4-tmp3*tmp2)/(tmp1*tmp2-tmp^2); tt=(tmp1*tmp4-tmp*tmp3)/(tmp1*tmp2-tmp^2); - out=[pR,tseg,ss,tt]; - , - if(Toupper(substring(opstr,0,1))!="N", - println(" "+sgstr+","+pLstr+" are parallel"); + 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)=="e"); //181025from + tmp2=(tmp2)%(substring(tmp,1,2)=="e"); + if(tmp1&tmp2, + if(ptflg_1=="P", //181025 + Putpoint3d([name,pR]); + Fixpoint3d([name,pR]); + , + Pointdata3d(name,pR,options); + ); +// println(" pt"+name+" data:"+format(out,5)); + , +// println("pt"+name+" data:"+format(out,5)); ); - out=[]; + , + println(" "+sgstr+" and "+pLstr+" may be parallel");//181025to + out=[[],false,false]; //181029 ); out; ); +////%IntersectsgpL end//// Bezier3d(nm,ptctrlist):=Bezier3(nm,ptctrlist); Bezier3d(nm,Ag1,Ag2):=Bezier3(nm,Ag1,Ag2); @@ -2459,10 +2755,10 @@ VertexandEdge(nm,vfnL,options):=VertexEdgeFace(nm,vfnL,options); VertexEdgeFace(nm,vfnL):=VertexEdgeFace(nm,vfnL,[]); // 16.02.10 //help:VertexEdgeFace("1",[vL,fnL]); //help:VertexEdgeFace("1",["A","B","C"]); -//help:VertexEdgeFace(options=["Pt=fix","Edg=geo"]); +//help:VertexEdgeFace(options=["Pt=fix","Vtx=geo","Edg=geo"]); VertexEdgeFace(nm,vfnLorg,optionorg):=( regional(name3,namev,namee,namef,vfnL,options,Noflg,eqL,strL, - vL,eL,enL,face,edge,vtx,vname,fixflg,edgflg,tmp,tmp1,tmp2); + vL,eL,enL,face,edge,vtx,vname,fixflg,vtxflg, edgflg,tmp,tmp1,tmp2); name3="phvef"+nm; namev="phv3d"+nm; namee="phe3d"+nm; @@ -2480,6 +2776,7 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( eqL=tmp_5; strL=tmp_7; fixflg=1; + vtxflg=1; //180905 edgflg=1; forall(eqL, tmp1=Toupper(substring(#,0,1)); @@ -2489,6 +2786,10 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( if(tmp2=="FREE", fixflg=0); options=remove(options,[#]); ); + if(tmp1=="V", //180905from + if(substring(tmp2,0,1)=="N", vtxflg=0); + options=remove(options,[#]); + ); //180905to if(tmp1=="E", if(substring(tmp2,0,1)=="N", edgflg=0); options=remove(options,[#]); @@ -2512,9 +2813,19 @@ VertexEdgeFace(nm,vfnLorg,optionorg):=( // parse(tmp); , vname="v"+text(#); - if(fixflg==1, - Putpoint3d(["v"+text(#),vtx],"fix"); - ); + if(vtxflg==1, //180905 + if(fixflg==1, + Putpoint3d([vname,vtx],"fix"); + ); + , //180905from + tmp=vname+"3d="+format(vtx,6); + parse(tmp); + Defvar(vname+"3d",parse(vname+"3d")); + tmp=vname+"2d=Parapt("+vname+"3d)"; + parse(tmp); + Defvar(vname+"2d",parse(vname+"2d")); + drawtext(parse(vname+"2d"),vname); + ); //180905to ); vL=append(vL,vname); // 16.02.10 until ); @@ -2706,24 +3017,34 @@ Phparadata(nm,nmvf,vfL,options):=( ); ); -Nohiddenseg(seg,rng,triang):=( +Nohiddenseg(seg,rng,triang,Eps):=( // help:Nohiddenseg("1",seg1,[0,1],["v1","v2","v3"]); - regional(Eps,pA3,pB3,pC3,pA,pB,pC,sg1,sg2,ss1,ss2,parL,flgL,flg1,flg2, - veB,veC,sgnoh,sghid,added,tristr,tmp,tmp1,tmp2,tmp3,tmp4,tmp5); - Eps=10^(-4); + 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=if(isstring(triang_1),parse(triang_1+"3d"),triang_1); //16.06.19 + 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); - pB3=if(isstring(triang_2),parse(triang_2+"3d"),triang_2); //16.06.19 pB=Parapt(pB3); - pC3=if(isstring(triang_3),parse(triang_3+"3d"),triang_3); //16.06.19 pC=Parapt(pC3); sg1=seg_1+rng_1*(seg_2-seg_1); sg2=seg_1+rng_2*(seg_2-seg_1); ss1=Parapt(sg1); ss2=Parapt(sg2); - tristr=replace(text(triang),",","-"); - tristr=substring(tristr,1,length(tristr)-1); if(|ss2-ss1|>Eps & abs(Crossprod(pB-pA,pC-pA))>Eps, tmp=IntersectcrvsPp([ss1,ss2],[pA,pB,pC,pA]); parL=apply(tmp,#_2-1); @@ -2736,7 +3057,7 @@ Nohiddenseg(seg,rng,triang):=( ); tmp1=Crossprod(pB3-pA3,pC3-pA3); if(abs(Dotprod(tmp1,sg2-sg1))>Eps, - tmp=IntersectsgpL("",[sg1,sg2],tristr,["nodisp"]); + tmp=IntersectsgpL("",[sg1,sg2],[pA3,pB3,pC3],["nodisp"]);//180815 if(tmp_2>-Eps & tmp_2<1+Eps, if(tmp_3>-Eps & tmp_4>-Eps & tmp_3+tmp_4<1+Eps, tmp1=select(parL,abs(tmp_2-#)0, out=remove(out,tmp); out=concat(out,tmp2); @@ -2898,19 +3219,49 @@ Nohiddenbyfaces(nm,Arg1,Arg2,Arg3):=( ); Nohiddenbyfaces(nm,segstr,facestr,options,optionsh); // 16.02.21 ); -Nohiddenbyfaces(nm,segstr,facestr,optionorg,optionsh):=( +Nohiddenbyfaces(nm,segstr,Arg1,Arg2,Arg3):=( //180815from + regional(facestr,faceL,vtxL,options,optionsh); + if(isstring(Arg1), + facestr=Arg1; + options=Arg2; + optionsh=Arg3; + if(substring(facestr,0,3)=="phf", + faceL=parse(facestr); + tmp=replace(facestr,"phf","phv"); + tmp=parse(tmp); + vtxL=apply(tmp,replace(#,"3d","")); + + , + faceL=parse(facestr); + ); + , + faceL=Arg1; + vtxL=Arg2; + options=Arg3; + optionsh=[]; + ); + Nohiddenbyfaces(nm,segstr,faceL,vtxL,options,optionsh); +); +Nohiddenbyfaces(nm,segstr,faceL,vtxL,optionorg,optionsh):=( //help:Nohiddenbyfaces("1","phf3d1"); //help:Nohiddenbyfaces("1","ax3d","phf3d1"); -//help:Nohiddenbyfaces(options1=["dr"]); +//help:Nohiddenbyfaces("1","ax3d",phf3d1,phv3d1); +//help:Nohiddenbyfaces(options1=["dr","Eps=10^(-2)"]); //help:Nohiddenbyfaces(options2=["do"]); - regional(Eps,namen,nameh,options,segL,faceL,vtxL,rng,seg,face, - flg,ctr,tmp,tmp1,tmp2,Ltype,Noflg,eqL,opstr,opcindy,frnL,frhL); - Eps=10^(-4); + regional(Eps,namen,nameh,options,segL,rng,seg,face, + ctr,tmp,tmp1,tmp2,Ltype,Noflg,eqL,color,opstr,opcindy,frnL,frhL); + Eps=10^(-2); namen="frn"+nm; nameh="frh"+nm; if(isstring(segstr), -// segL=parse(segstr); - segL=[segstr]; // 16.08.19 + tmp=parse(segstr);//180714from + if(islist(tmp), + if(isstring(tmp_1), + segL=tmp; + , + segL=[segstr]; + ); + );//180714to , segL=segstr; ); @@ -2930,59 +3281,42 @@ Nohiddenbyfaces(nm,segstr,facestr,optionorg,optionsh):=( segL=apply(segL,parse(#)); ); ); - segL=Flattenlist(segL); - flg=0; - if(isstring(facestr), - if(substring(facestr,0,3)=="phf", // 16.08.19from - faceL=parse(facestr); - tmp=replace(facestr,"phf","phv"); // 16.02.10 from - tmp=parse(tmp); - vtxL=apply(tmp,replace(#,"3d","")); // 16.02.10 until - flg=1; - , - faceL=parse(facestr); - ); - ); - if(flg==0, - if(length(faceL)==2, // 16.08.19until - vtxL=facestr_1; - faceL=facestr_2; - , - vtxL=facestr; - faceL=[1..length(vtxL)]; + tmp1=Flattenlist(segL); //180816from + segL=[]; + forall(tmp1,tmp2, + forall(1..(length(tmp2)-1), + segL=append(segL,[tmp2_#,tmp2_(#+1)]); ); - ); -// Hidden=""; + ); //180816from options=optionorg; 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)); -// forall(eqL, -// tmp=indexof(#,"="); -// tmp1=Toupper(substring(#,0,1)); -// tmp2=substring(#,tmp,length(#)); -// if(tmp1=="H", -// Hidden=tmp2; -// ); -// ); - + forall(eqL, //180815from + tmp=Strsplit(#,"="); + tmp1=Toupper(tmp_1); + if(substring(tmp1,0,3)=="EPS", + Eps=parse(tmp_2); + options=remove(options,[#]); + ); + );//180815to ctr=1; frnL=[]; frhL=[]; forall(segL,seg, rng=[0,1]; forall(faceL,face, - rng=Nohiddensegs(seg,rng,face,vtxL); + rng=Nohiddensegs(seg,rng,face,vtxL,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=remove(options,eqL); tmp=append(options,"Msg=nodisp"); // 15.06.22 Spaceline("-"+namen+"n"+text(ctr),[tmp1,tmp2],tmp); frnL=append(frnL,namen+"n"+text(ctr)+"3d"); @@ -3007,7 +3341,9 @@ Nohiddenbyfaces(nm,segstr,facestr,optionorg,optionsh):=( tmp1=seg_1+tmp*(seg_2-seg_1); tmp=rng_(2*#); tmp2=seg_1+tmp*(seg_2-seg_1); - if(length(optionsh)>0,tmp=optionsh,tmp=["do"]); + tmp=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"); @@ -3297,13 +3633,13 @@ Sf3data(nm,funstr,var1org,var2org,optionorg):=( [sfdtuL,sfdtvL]; ); -Sfbdparadata(nm,fd):= - Sfbdparadata(nm,fd,[],["nodisp"]); -Sfbdparadata(nm,fd,options):= - Sfbdparadata(nm,fd,options,["nodisp"]); -Sfbdparadata(nm,fdorg,optionorg,optionsh):=( -//help:Sfbdparadata("1",Fd); -//help:Sfbdparadata(options2=["Wait=60",division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +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) @@ -3402,13 +3738,13 @@ Addpoints(ptlist):=( ADDPOINT; ); -Crvsfparadata(nm,crv,sf,fd):= - Crvsfparadata(nm,crv,sf,fd,[],["nodisp"]); -Crvsfparadata(nm,crv,sf,fd,options):= - Crvsfparadata(nm,crv,sf,fd,options,["nodisp"]); -Crvsfparadata(nm,crvstr,sfstr,fdorg,optionorg,optionsh):=( -//help:Crvsfparadata("1","ax3d","sfbd3d1",fd); -//help:Crvsfparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +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"); @@ -3477,7 +3813,7 @@ Crvsfparadata(nm,crvstr,sfstr,fdorg,optionorg,optionsh):=( reL=Rsform(reL); tmp=append(tmp,reL); ); - tmp1=[DqDq(fname),DqDq(name3),name3,DqDq(name3h),name3h]; + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; cmdL=concat(cmdL,[ name3+"=Crvsfparadata",tmp, name3h+"=CRVSFHIDDENDATA",[], @@ -3506,13 +3842,13 @@ Crvsfparadata(nm,crvstr,sfstr,fdorg,optionorg,optionsh):=( ); ); -Crv3onsfparadata(nm,crv3d,sf,fd):= - Crvs3onfparadata(nm,crv3d,sf,fd,[],["nodisp"]); -Crv3onsfparadata(nm,crv3d,sf,fd,options):= - Crv3onsfparadata(nm,crv3d,sf,fd,options,["nodisp"]); -Crv3onsfparadata(nm,crv3dstr,sfstr,fdorg,optionorg,optionsh):=( -//help:Crv3onsfparadata("1","sc1","sfbd3d1",fd); -//help:Crv3onsfparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +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"); @@ -3608,13 +3944,13 @@ Crv3onsfparadata(nm,crv3dstr,sfstr,fdorg,optionorg,optionsh):=( ); ); -Crv2onsfparadata(nm,crv2d,sf,fd):= - Crvs2onfparadata(nm,crv2d,sf,fd,[],["nodisp"]); -Crv2onsfparadata(nm,crv2d,sf,fd,options):= - Crv2onsfparadata(nm,crv2d,sf,fd,options,["nodisp"]); -Crv2onsfparadata(nm,crv2dstr,sfstr,fdorg,optionorg,optionsh):=( -//help:Crv2onsfparadata("1","pa1","sfbd3d1",fd); -//help:Crv2onsfparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +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"]); @@ -3711,13 +4047,13 @@ Crv2onsfparadata(nm,crv2dstr,sfstr,fdorg,optionorg,optionsh):=( ); ); -Wireparadata(nm,sf,wr1,wr2,fd):= - Wireparadata(nm,sf,fd,wr1,wr2,[],["nodisp"]); -Wireparadata(nm,sf,fd,wr1,wr2,options):= - Wireparadata(nm,sf,fd,wr1,wr2,options,["nodisp"]); -Wireparadata(nm,sfstr,fdorg,wr1,wr2,optionorg,optionsh):=( -//help:Wireparadata("1","sfbd3d1",fd,5,5); -//help:Wireparadata(options2=[division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +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; @@ -3814,18 +4150,18 @@ Wireparadata(nm,sfstr,fdorg,wr1,wr2,optionorg,optionsh):=( ); ); -Intersectcrvsf(nm,crv,fd):=Intersectcrvsf(nm,crv,fd,"",[]); -Intersectcrvsf(nm,crv,fd,Arg):=( +IntersectcrvsfR(nm,crv,fd):=Intersectcrvsf(nm,crv,fd,"",[]); +IntersectcrvsfR(nm,crv,fd,Arg):=( if(isstring(Arg), - Intersectcrvsf(nm,crv,fd,Arg,[]); + IntersectcrvsfR(nm,crv,fd,Arg,[]); , - Intersectcrvsf(nm,crv,fd,"",Arg); + IntersectcrvsfR(nm,crv,fd,"",Arg); ); ); -Intersectcrvsf(nm,crvstr,fdorg,bdyeq,optionorg):=( -//help:Intersectcrvsf("1",curve,fd); -//help:Intersectcrvsf("1",curve,fd,curveequation); -//help:Intersectcrvsf(options=[Np([50,50]),Eps(0.01)]); +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; @@ -3904,13 +4240,13 @@ Intersectcrvsf(nm,crvstr,fdorg,bdyeq,optionorg):=( parse(name); ); -Sfcutparadata(nm,eqstr,sf,fd):= - Sfcutparadata(nm,eqstr,sf,fd,[]); -Sfcutparadata(nm,eqstr,sf,fd,options):= - Sfcutparadata(nm,eqstr,sf,fd,options,["nodisp"]); -Sfcutparadata(nm,eqstrorg,sf,fdorg,optionorg,optionsh):=( -//help:Sfcutparadata("1","x+y+z=1","sfbd3d1",fd); -//help:Sfcutparadata(options2=[Division(c(50,50)),Eps1(0.01), Eps2(0.05)]); +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,"="); @@ -3969,7 +4305,7 @@ Sfcutparadata(nm,eqstrorg,sf,fdorg,optionorg,optionsh):=( reL=Rsform(reL); tmp=append(tmp,reL); ); - tmp1=[DqDq(fname),DqDq(name3),name3,DqDq(name3h),name3h]; + tmp1=[Dqq(fname),Dqq(name3),name3,Dqq(name3h),name3h]; tmp2=replace(rfname,".txt",".Rdata"); cmdL=concat(cmdL,[ "print",[Dqq("sfcut"+nm)], //18.02.22 @@ -4009,7 +4345,6 @@ Skeletonparadata(nm,pltdata1,pltdata2):=Skeletondatacindy(nm,pltdata1,pltdata2); Skeletonparadata(nm,pltdata1org,pltdata2org,options):= Skeletondatacindy(nm,pltdata1org,pltdata2org,options); - ////////////// new skeleton 2018.01.04 not completed and slow//////////////// Skeletondatacindy(nm):=Skeletondatacindy(nm,[]); @@ -4079,9 +4414,13 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if(color!=KCOLOR, //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name2); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if(color!=KCOLOR, //180904 + Texcom("}");//180722 + ); , if(Noflg==1,Ltype=0); ); @@ -4262,7 +4601,7 @@ Skeletondatacindy(nm,pltdata1org,pltdata2org,options):=( forall(1..(length(Data)),jj, Gd=Data_jj; if((length(Gd)>1) - & (norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))>Eps), + & (Norm(Ptcrv(1,Gd)-Ptcrv(2,Gd))>Eps), PtD=[]; forall(1..(length(Gd)), tmp=Gd_#; @@ -4360,12 +4699,12 @@ Makeskeletondata(Obj2L,Plt2L,R0,Eps2):=( tmp=Plt2_(nn1+1); ptb=tmp_(1..2); zb=tmp_3; - if(norm(pta-ptb) 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) diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic1r.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic1r.cs index 9dcb76c6d09..d466f9fe530 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic1r.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic1r.cs @@ -9,14 +9,14 @@ // 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. -// +// f // You should have received a copy of the GNU General Public License // along with this program. If not, see // -println("KeTCindy V.3.2.1(20180615)"); +println("KeTCindy V.3.2.2(20181030)"); println(ketjavaversion()); -println("ketcindylibbasic1(20180613) loaded"); +println("ketcindylibbasic1(20181030) loaded"); //help:start(); @@ -37,11 +37,19 @@ println("ketcindylibbasic1(20180613) loaded"); Ch=[0]; ChNum=1; -Ketinit():=Ketinit(1); -//help:Ketinit(); -Ketinit(sy):=Ketinit(sy,[-5,5],[-5,5]); -Ketinit(sy,rangex,rangey):=( - regional(pt,tmp,tmp1,tmp2,letterc,boxc,shadowc,mboxc); +////%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 @@ -58,7 +66,7 @@ Ketinit(sy,rangex,rangey):=( TenSizeInit=0.02; TenSize=TenSizeInit; YaSize=1; YaAngle=18; YaPosition=1; - YaThick=1; YaStyle='tf'; + YaThick=1; YaStyle="tf"; KETPICCOUNT=1; KCOLOR=[0,0,0]; GLIST=[]; @@ -84,6 +92,7 @@ Ketinit(sy,rangex,rangey):=( OutFileLIst=[]; // 15.10.22 FigPdfList=[]; // 16.04.08 ADDPACK=[]; // 16.05.16 + GPACK="tpic"; //180817 ErrFlag=0; setdirectory(Dirwork); if(!isstring(Fhead), // 17.10.13from, 17.11.12 @@ -109,11 +118,10 @@ Ketinit(sy,rangex,rangey):=( if(substring(Dircdy,0,1)==pathsep(), Dircdy=substring(Dircdy,1,length(Dircdy)); ); -// Changesetting([gethome(), gethome()+"\Desktop","C:"]); //180405 - , -// Changesetting([gethome(),gethome()+"/Desktop"]); ); - Changework(Dircdy+pathsep()+"fig"); //180329to + Changesetting(Homehead+pathsep()+getname()); //180913 + Changesetting(Dircdy); //181017 + Changework(Dircdy+pathsep()+work); //180329to,181001 Fnametex=Fhead+".tex"; FnameR=Fhead+".r"; FnamebodyR=Fhead+"body.r"; @@ -153,6 +161,7 @@ Ketinit(sy,rangex,rangey):=( 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(PathS,"-5.")>0,//17.12.03from LibnameS=Dirlib+pathsep()+"ketpicsciL5"; @@ -163,29 +172,28 @@ Ketinit(sy,rangex,rangey):=( LibnameS=replace(LibnameS,"ketpic","ketpic2e"); );//17.12.03until ); +////%Ketinit end//// -Changesetting(dirL):=( //180329 - regional(fname,tmp1,flg); - fname="changesetting.txt"; - tmp1=apply(dirL,#+pathsep()+"ketcindy"); - tmp1=prepend(Dircdy,tmp1); - flg=0; - forall(tmp1, - if(flg==0, - if(isexists(#,fname), - setdirectory(#); - import(fname); - println(fname+" imported from "+#); - flg=1; - ); +////%Changesetting start//// +Changesetting(dir):=( //181017 + regional(fname); + fname="ketcindychange.txt"; + if(!isexists(dir,fname), + if(dir==Dircdy, + fname="ketcindy.conf"; + , + fname=".ketcindy.conf"; ); ); - if(flg==0, - println(fname+" not exists in "+text(tmp1)); - println(" Put "+fname+" in one of folders above"); + if(isexists(dir,fname), + println("read "+fname+" in "+dir); + setdirectory(dir); + import(fname); ); -); +); //181017to +////%Changesetting end//// +////%Cindyname start//// Cindyname():=Getcdyname(); Cdyname():=Getcdyname(); Getcdyname():=( //17.12.27 @@ -194,7 +202,9 @@ Getcdyname():=( //17.12.27 out=text(curkernel()); out=replace(out,".cdy",""); ); +////%Cindyname end//// +////%Setwindow start//// Setwindow():=Setwindow("Msg=yes"); Setwindow(str):=( regional(tmp,tmp1,tmp2,msg); @@ -229,31 +239,56 @@ Setwindow(xrange,yrange):=( XMAX=xrange_2; YMIN=yrange_1; YMAX=yrange_2; - Putpoint("SW",Pcrd([XMIN,YMIN]));//17.05.30 - Putpoint("NE",Pcrd([XMAX,YMAX]));//17.05.30 + 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//// +////%Tab2list start//// Tab2list(dtstr):=Tab2list(dtstr,[]); Tab2list(dtstrorg,options):=( //help:Tab2list(datastr); @@ -317,12 +352,16 @@ Tab2list(dtstrorg,options):=( ); 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); @@ -346,7 +385,9 @@ Dispmat(dt):=( // 16.09.16 print(tmp2); println(); ); +////%Dispmat end//// +////%Sep1000 start//// Sep1000(va):=( //17.07.18 //help:Sep1000(1344555); //help:Sep1000([12456,55567]); @@ -366,9 +407,11 @@ Sep1000(va):=( //17.07.18 ); out; ); +////%Sep1000 end//// -factorial(n):=( -//help:factorial(5); +////%Factorial start//// +Factorial(n):=( +//help:Factorial(5); regional(out); out=1; forall(1..n, @@ -376,9 +419,11 @@ factorial(n):=( ); out; ); +////%Factorial end//// -norm(v1):=( // 16.09.01 -//help:norm([2,1,3]); +////%Norm start//// +Norm(v1):=( // 16.09.01 +//help:Norm([2,1,3]); regional(out,tmp,tmp1,tmp2); out=0; forall(1..(length(v1)), @@ -387,11 +432,13 @@ norm(v1):=( // 16.09.01 out=sqrt(out); out; ); -norm(v1,v2):=( - norm(v2-v1); +Norm(v1,v2):=( + Norm(v2-v1); ); +////%Norm end//// // 16.03.28 +////%Removespace start//// Removespace(str):=( //help:Removespace(" a b c "); regional(tmp,flg,out); @@ -418,7 +465,9 @@ Removespace(str):=( ); out=substring(out,0,tmp); ); +////%Removespace end//// +////%Indexall start//// Indexall(str,key):=( regional(rest,out,flg,tmp,tmp1,); out=[]; @@ -438,8 +487,11 @@ Indexall(str,key):=( ); out; ); +////%Indexall end//// +////%Strsplit start//// Strsplit(str,key):=( //180505 +//help:Strsplit(string,"="); regional(start,out,tmp1,tmp2); tmp1=Indexall(str,key); out=[]; start=0; @@ -450,8 +502,12 @@ Strsplit(str,key):=( //180505 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,"()"); @@ -475,7 +531,9 @@ Bracket(str,br):=( ); out; ); +////%Bracket end//// +////%Pardiagram start//// Pardiagram(str):=Pardiagram(str,[20]); Pardiagram(str,options):=( //help:Pardiagram(exprstr); @@ -573,12 +631,15 @@ Pardiagram(str,options):=( ); 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=y"]); +//help:Changework(options=["Sub=n"(not to make folder fig]); regional(dir,subdir,tmp,,eqL,makesub); tmp=Divoptions(options); eqL=tmp_5; //180605from @@ -607,9 +668,14 @@ Changework(dirorg,options):=( //16.10.21 dir=substring(dir,0,tmp-1); ); //17.11.24until if(dir=="" % !isexists(dir,""), - println("Directory "+dir+" not exist, so set to "+Dircdy);//180604(2lines) - Dirwork=Dircdy; - ErrFlag=-1; + if(dir=="", //180618from + println("Dirwork="+Dqq(Dirwork)); + , + println("Directory "+dir+" not exist, so "+Dqq(Dirwork)+" not changed"); + ); //180618to +// println("Directory "+dir+" not exist, so set to "+Dircdy);//180604(2lines) +// Dirwork=Dircdy; +// ErrFlag=-1; , if(length(subdir)>0, //180605 if(makesub==1,//180606from @@ -629,7 +695,9 @@ Changework(dirorg,options):=( //16.10.21 ); ); ); +////%Changework end//// +////%Changestyle start//// Changestyle(nameL,style):=( //help:Changestyle(["sgAB"],["da"]); regional(nmL,name,Ltype,Ltypeorg,Noflg,color,opcindy,tmp); @@ -648,9 +716,13 @@ Changestyle(nameL,style):=( (indexof(#,"("+name)==0)%(indexof(#,"Shade")>0)); // 15.05.23,16.12.13 if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); , if(Noflg==1,Ltype=0); ); @@ -659,7 +731,9 @@ Changestyle(nameL,style):=( ); ); ); +////%Changestyle end//// +////%Op start//// Op(n,object):=( // 16.05.25 //help:Op(4,[1,2,3,4]); //help:Op(3,"abcd"); @@ -673,7 +747,27 @@ Op(n,object):=( // 16.05.25 ); out; ); +////%Op end//// + +////%Ptselected start//// +Ptselected():=Isptselected(allpoints());//180711(2lines) +Ptselected(ptlist):=Isptselected(ptlist); +Isptselected():=Isptselected(allpoints()); //180706 +Isptselected(ptlist):=( +//help:Ptselected(); +//help:Isptselected(); + regional(flg); + flg=0; + forall(ptlist, + if(flg==0, + if(isselected(#),flg=1); + ); + ); + 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); @@ -694,7 +788,9 @@ Finddef(G):=( ); tmp; ); +////%Finddef end//// +////%Findgeoinfo start//// Findgeoinfo(geo):=( regional(out,tmp,tmp1,tmp2); tmp=Finddef(geo); @@ -721,7 +817,9 @@ Findgeoinfo(geo):=( ); out; ); +////%Findgeoinfo end//// +////%Dependgeo start//// Dependgeo(geo):=( regional(tmp,tmp1,tmp2,out); tmp=Finddef(geo); @@ -743,13 +841,30 @@ Dependgeo(geo):=( ); out; ); +////%Dependgeo end//// -Workprocess():=Workprocess(300); -Workprocess(nn):=Drawprocess(nn); -Drawprocess():=Drawprocess(300); -Drawprocess(nn):=( +////%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,tmp,tmp1,tmp2); + 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(text(#),length(text(#))-1,length(text(#)))!="z"); @@ -769,13 +884,22 @@ Drawprocess(nn):=( if(length(remain)==0,flg=1); ); ); - println("Process of drawing"); + if(dispflg=="Y", + println("Process of drawing"); + ); + tmp1=[];//181030from forall(out, - println(Dependgeo(parse(#))); + tmp=Dependgeo(parse(#)); + tmp1=append(tmp1,tmp); + if(dispflg=="Y", + println(Dependgeo(parse(#))); + ); ); - out; + tmp1;//181030to ); +////%Drawprocess end//// +////%Sortpointlist start//// Sortpointlist(list):=( regional(plist,ilist,jj,kk,flg,p1,p2,in1,in2, tmp,tmp1,tmp2,out); @@ -809,7 +933,9 @@ Sortpointlist(list):=( ); out; ); +////%Sortpointlist end//// +////%Toupper start//// Toupper(str):=( //help:Toupper("Abc"); regional(alphabet,out,tmp,tmp1); @@ -826,7 +952,9 @@ Toupper(str):=( ); out; ); +////%Toupper end//// +////%Textformat start//// Textformat(value,dig):=( //help:Textformat(2/3,4); //help:Textformat([gr1,gr2],5); @@ -852,7 +980,9 @@ Textformat(value,dig):=( ); tmp1; ); +////%Textformat end//// +////%Sprintf start//// Sprintf(value,dig):=( //help:Sprintf(5.1,4); regional(vv,tmp,tmp1); @@ -871,6 +1001,7 @@ Sprintf(value,dig):=( ); vv; ); +////%Sprintf end//// Assign(str):=( // old regional(out); @@ -882,6 +1013,7 @@ Assign(str):=( // old out; ); +////%Assign start//// Assign(funstr,vrL):=( regional(nn,out,tmp,tmp1); nn=length(vrL)/2; @@ -935,7 +1067,9 @@ Assign(funstr,varname,rep):=( funstr=tmp2+funstr; funstr; ); +////%Assign end//// +////%MeasureDepth start//// MeasureDepth(list):=( regional(tmp,tmp1,Depth,Flg); Flg=0; @@ -962,7 +1096,9 @@ MeasureDepth(list):=( );//180501 Depth; ); +////%MeasureDepth end//// +////%Flattenlist start//// Flattenlist(pltlist):=( //help:Flattenlist([[2,3],[[1,2],[5,6]]]); regional(Out,nn,Dt,ii,tmp,flg); @@ -984,10 +1120,13 @@ Flattenlist(pltlist):=( ); 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); + regional(Ltype,Noflg,Inflg,Outflg,eqL,realL,strL,color,opstr,opcindy,flg, + tmp,tmp1,tmp2); Ltype="dr"; // 2015.01.13 Noflg=0; Inflg=0; @@ -1013,7 +1152,7 @@ Divoptions(options):=( tmp1=Toupper(tmp_1); tmp2=tmp_2; if(tmp1=="COLOR", - if(substring(tmp2,0,1)=="[", + if(indexof(tmp2,"[")>0, //180928 tmp1=parse(tmp2); color=tmp1; if(length(tmp1)==4, @@ -1095,7 +1234,9 @@ Divoptions(options):=( ); [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); @@ -1103,7 +1244,9 @@ Dotprod(vec1,vec2):=( 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); @@ -1117,35 +1260,45 @@ Crossprod(a,b):=( ); Out; ); +////%Crossprod 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"); regional(tmp); @@ -1160,15 +1313,21 @@ Invert(nm,Fig,options):=( tmp=Invert(Fig); Listplot(name,tmp,options); );// until 16.01.27 - -Paramoncrv(pP,Gdata):=( - regional(Tmp,PtL); +////%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); @@ -1187,8 +1346,12 @@ ParamonCurve(pP,nN,plist):=( ); 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); @@ -1208,7 +1371,9 @@ PointonCurve(tTorg,Gdata):=( ); 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, @@ -1318,9 +1483,11 @@ Koutenseg(pA,pB,pC,pD,options):=( ); Out; ); +////%Koutenseg end//// ///////// Start of old Intersect //////////// +////%IntersectcrvsPp start//// IntersectcrvsPp(Gr1,Gr2):=IntersectcrvsPp(Gr1,Gr2,[]); IntersectcrvsPp(Gr1,Gr2,options):=( //help:IntersectcrvsPp("gr1","pa1"); @@ -1465,7 +1632,9 @@ IntersectcrvsPp(Gr1,Gr2,options):=( ); // 15.04.06 until Out; ); +////%IntersectcrvsPp end//// +////%Intersectcrvs start//// Intersectcrvs(Gr1,Gr2):=Intersectcrvs(Gr1,Gr2,[]); //help:Intersectcrvs("gr1","pa1"); Intersectcrvs(Gr1,Gr2,options):=( @@ -1473,10 +1642,13 @@ Intersectcrvs(Gr1,Gr2,options):=( 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); @@ -1500,7 +1672,9 @@ Intersectline(p1,v1,p2,v2):=( ); 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, @@ -1602,7 +1776,9 @@ Intersectseg(seg1org,seg2org,Eps1):=( ); out; ); +////%Intersectseg end//// +////%Osplineseg start//// Osplineseg(list):=Osplineseg(list,[]); Osplineseg(ptlist,optionsorg):=( regional(tmp,tmp1,tmp2,list,ptL,ctrL,Eps,Eps0, @@ -1621,7 +1797,9 @@ Osplineseg(ptlist,optionsorg):=( 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); ); @@ -1640,7 +1818,7 @@ Intersectpartseg(crv1org,crv2org,ii,jj,Eps1,Eps2,Dist):=( 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)); + snang=abs(Crossprod(tmp1,tmp2))/(Norm(tmp1)*Norm(tmp2)); tmp=Intersectseg(seg1,seg2,Eps1); dst=tmp_1; if(dst0, + 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); @@ -2024,24 +2244,78 @@ Derivative(fun,var,value,options):=( (y2-y1)/(x2-x1); ); ); +////%Derivative end//// -Integrate(pltdata,range):=Integrate(pltdata,range,[]); -Intergrate(Arg1,Arg2,Arg3):=( - regional(pltdata,range,options,fnstr,vartr); - if(islist(Arg2), - pltdata=Arg1; - range=Arg2; - options=Arg3; - Integrate(pltdata,range,options); +////%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; + ); , - fnstr=Arg1; - vastr=Arg2; - range=Arg3; - Integrate(fnstr,vastr,range,[]); + 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(pltdata,range,options):=( +////%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); @@ -2074,28 +2348,42 @@ Integrate(pltdata,range,options):=( Sm; ); ); +////%Integratedt end//// -Integrate(fnstr,vastr,range,options):=( -//help:Integrate("sin(x)","x",[0,pi],["Num=100","Rule=s"]); - regional(tmp,tmp1,Sm,Lx,Rx,va1,va2,Num,Waysx,ex,dx,xn,yn,x0,x1,x2,y0,y1,y2); +////%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="t"; - forall(options, - if(indexof(#,"=")>0, - if(indexof(#,"N=")>0, - Num=parse(substring(#,indexof(#,"="),length(#))); - ); - if(indexof(#,"Num=")>0, - Num=parse(substring(#,indexof(#,"="),length(#))); - ); - if(Toupper(substring(#,0,1))=="R", - tmp=indexof(#,"="); - Way=substring(#,tmp,tmp+1); - ); - ); + 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); + ); ); - Sm=0; + 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,textformat(#,5)]))); + 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; @@ -2103,7 +2391,9 @@ Integrate(fnstr,vastr,range,options):=( 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; @@ -2122,7 +2412,9 @@ Integrate(fnstr,vastr,range,options):=( ); 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); @@ -2203,8 +2495,10 @@ IntegrateO(pltdata,rangeorg):=( ); Sm; ); +////%IntegrateO end//// -Findarea(pdstr):=( +////%FindareaP start//// +FindareaP(pdstr):=( //180722 //help:Findarea("sgABCA"); regional(pd,p1,p2,s,tmp); if(isstring(pdstr),pd=parse(pdstr),pd=pdstr); @@ -2218,24 +2512,64 @@ Findarea(pdstr):=( if(s<0,s=-s); s; ); +////%FindareaP end//// -Findarea(pdstr):=( // 15.11.27 -//help:Findarea("cr1"); - regional(pd,p0,p1,p2,p3,s,tmp); +////%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(#==1,p0=pd_(length(pd)-1),p0=pd_(#-1)); - if(#==length(pd)-1,p3=pd_2,p3=pd_(#+2)); - tmp=IntegrateO(p0,p1,p2,p3); + if(Dist(p1,p2)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); @@ -2249,7 +2583,9 @@ Findlength(pdstr):=( ); s; ); +////%Findlength end//// +////%Inversefun start//// Inversefun(fnstr,rngstr,value):=( regional(tmp,varstr,range,x1,x2,x3,va1,va2); tmp=indexof(rngstr,"="); @@ -2274,20 +2610,26 @@ Inversefun(fnstr,rngstr,value):=( ); 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):=Com2nd(String,["a"]);//180612 Com2nd(String,option):=( // help:Com2nd(str,["before"]); @@ -2300,13 +2642,17 @@ Com2nd(String,option):=( COM2ndlist=append(COM2ndlist,str); );//180612to ); +////%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); @@ -2315,6 +2661,7 @@ Texcom(strorg):=( //17.09.22 str="Texcom("+Dq+str+Dq+")"; Com2nd(str); ); +////%Texcom end//// Ketcindylogo():=( //help:Ketcindylogo(); @@ -2367,6 +2714,7 @@ Drawlinetype(name,type):=( ); ); +////%Setunitlen start//// Setunitlen():=( println(ULEN); ); @@ -2420,29 +2768,57 @@ Setunitlen(UI):=( 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)+")"); ); +////%Setmarklen end//// +////%Setorigin start//// Setorigin(point):=( //help:Setorigin([1,2]); Com2nd("Setorigin("+textformat(point,5)+")"); ); +////%Setorigin end//// +////%Fontsize start//// Fontsize(sizestr):=( //help:Fontsize("s"); Com2nd("Fontsize('"+sizestr+"')"); ); +////%Fontsize end//// +////%Setpen start//// Setpen(width):=( //help:Setpen(2); PenThick=PenThickInit*width; // 16.04.09 Com2nd("Setpen("+text(width)+")"); ); +////%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), @@ -2452,7 +2828,9 @@ Lcrd(pt):=( ); tmp; ); +////%Lcrd end//// +////%Pcrd start//// Pcrd(pt):=( regional(tmp); if(ispoint(pt), @@ -2462,7 +2840,9 @@ Pcrd(pt):=( ); tmp; ); +////%Pcrd end//// +////%LLcrd start//// LLcrd(pt):=( regional(tmp); if(ispoint(pt), @@ -2473,7 +2853,9 @@ LLcrd(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), @@ -2502,7 +2884,9 @@ Doscaling(pltdata):=( ); Out; ); +////%Doscaling end//// +////%Unscaling start//// Unscaling(pltdata):=( regional(Level,Out,gL,gr,tmp); if(ispoint(pltdata) % isreal(pltdata_1), @@ -2531,7 +2915,9 @@ Unscaling(pltdata):=( ); Out; ); +////%Unscaling end//// +////%Setpt start//// Setpt(n):=Ptsize(n); //help:Setpt(5); Ptsize(n):=( @@ -2539,7 +2925,9 @@ Ptsize(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); @@ -2549,7 +2937,9 @@ Definecolor(name,data):=( 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]); @@ -2578,7 +2968,9 @@ Setcolor(parorg):=( //180603renew ); Com2nd(cstr); ); +////%Setcolor end//// +////%ColorRgb2Cmyk start//// ColorRgb2Cmyk(clr):=( // help:ColorRgb([0.2,0.5,0.1]); regional(clrnew,tmp,black); @@ -2588,7 +2980,9 @@ ColorRgb2Cmyk(clr):=( clrnew=append(tmp,black); clrnew; ); +////%ColorRgb2Cmyk end//// +////%ColorCmyk2Rgb start//// ColorCmyk2Rgb(clr):=( // help:ColorRgb([0.2,0.5,0.1,0.2]); regional(clrnew,tmp,black); @@ -2597,7 +2991,9 @@ ColorCmyk2Rgb(clr):=( 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; @@ -2631,7 +3027,9 @@ Colorrgbhsv(rgb):=( ); [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]; @@ -2647,7 +3045,9 @@ Colorhsvrgb(sL):=( 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 ; @@ -2685,7 +3085,9 @@ Colorrgbhsl(rgb):=( ); [hh*360,ss,ll]; ); +////%Colorrgbhsl end//// +////%Colorhslrgb start//// Colorhslrgb(hsl):=( regional(hh,ss,ll,rr,gg,bb,var1,var2); hh=hsl_1/360; @@ -2708,7 +3110,9 @@ Colorhslrgb(hsl):=( ); [rr,gg,bb]; ); +////%Colorhslrgb end//// +////%hue2rgb start//// hue2rgb(vv1,vv2,vh):=( regional(out); if ( vh < 0.0 ,vh =vh+1); @@ -2728,7 +3132,9 @@ hue2rgb(vv1,vv2,vh):=( ); out; ); +////%hue2rgb end//// +////%Colorrgbhwb start//// Colorrgbhwb(sL):=( regional(dl1,dl2,dl3); dl1 = Colorrgbhsl(sL)_1;//Colorcode("rgb","hsl",sL)_1; @@ -2736,7 +3142,9 @@ Colorrgbhwb(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; @@ -2763,7 +3171,9 @@ Colorhwbrgb(sLorg):=( ); dL; ); +////%Colorhwbrgb end//// +////%Colorhslhsv start//// Colorhslhsv(sL):=( regional(dl1,dl2,dl3,dL); dl1=sL_1; @@ -2780,7 +3190,9 @@ Colorhslhsv(sL):=( ); dL; ); +////%Colorhslhsv end//// +////%Colorcode start//// Colorcode(src,dest,sL):=( //help:Colorcode("rgb","cmyk",[1,0.5,0]); regional(tmp,tmp1,tmp2,tmp3,mn,mx,delta,black,dL,flg); @@ -2867,7 +3279,9 @@ Colorcode(src,dest,sL):=( dL; ); +////%Colorcode end//// +////%Colorinfile start//// Colorinfile(filename,clrf,clrt):=( regional(tmp,tmp1,tmp2,head,cstrL,chstrL,head,body); if(length(clrf_1)==3, @@ -2912,7 +3326,9 @@ Colorinfile(filename,clrf,clrt):=( ); closefile(SCEOUT); ); +////%Colorinfile end//// +////%GetLinestyle start//// GetLinestyle(str,name):=( regional(noflg,tmp,tmp1,tmp2,Dop,Ltype,subflg); Ltype=-1; @@ -2965,7 +3381,9 @@ GetLinestyle(str,name):=( ); Ltype; ); +////%GetLinestyle end//// +////%Chunderscore start//// Chunderscore(str):=( regional(flg,tmp,tmp1,tmp2,tmp3); if(indexof(str,"]")>0, @@ -3002,7 +3420,9 @@ Chunderscore(str):=( ); tmp1; ); +////%Chunderscore end//// +////%AddGraph start//// AddGraph(nm,pltdata):=AddGraph(nm,pltdata,[]); AddGraph(nm,pltdata,options):=( //help:AddGraph("1","imp1"); // 16.04.04 @@ -3091,16 +3511,22 @@ AddGraph(nm,pltdata,options):=( ); // 16.04.04 until if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , 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"]); @@ -3184,17 +3610,23 @@ Joincrvs(nm,plotstrL,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , 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"); @@ -3271,17 +3703,23 @@ Partcrv(nm,pA,pB,PkLstr,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , 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"); @@ -3291,17 +3729,17 @@ Opcrvs(num,Fig,options):=( 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]]); regional(list,name,nameL,ptlist,opstr,opcindy, - eqL,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg,color); + eqL,dispflg,size,thick,tmp,tmp1,tmp2,tmp3,Ltype,Noflg,color); name="pt"+nm; nameL=name+"L"; - println("generate pointdata "+name); tmp=Divoptions(options); Ltype=tmp_1; Noflg=tmp_2; @@ -3310,15 +3748,24 @@ Pointdata(nm,listorg,options):=( opstr=tmp_(length(tmp)-1); color=tmp_(length(tmp)-2); size=""; + dispflg="Y"; if(length(eqL)>0, forall(eqL, - tmp=substring(#,0,1); - if(tmp=="s" % tmp=="S", - tmp=indexof(#,"="); - size=substring(#,tmp,length(#)); + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=Toupper(substring(tmp_2,0,1)); + if(tmp1=="S", + size=tmp2; + opcindy=opcindy+",size->"+text(size); //181013 + ); + if(tmp1=="D", //181030from + dispflg=tmp2; ); ); ); + if(dispflg=="Y", + println("generate pointdata "+name); + ); //181030to if(isstring(listorg),list=parse(listorg),list=listorg); //17.10.23 if(MeasureDepth(list)==0,list=[list]);//180530 tmp=MeasureDepth(list); @@ -3366,9 +3813,13 @@ Pointdata(nm,listorg,options):=( if(length(size)>0,tmp1=parse(size),tmp1=1); tmp1=max(tmp1,1)/8; Setpen(tmp1); // 16.04.09 until - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180711 + ); Com2nd("Drwpt(list("+name+")"+opstr+")"); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180711 + ); Setpen(thick); // 16.04.09 if(length(size)>0, Com2nd("Setpt("+textformat(TenSize/TenSizeInit,1)+")"); @@ -3377,13 +3828,15 @@ Pointdata(nm,listorg,options):=( ); ptlist; ); +////%Pointdata end//// +////%Listplot start//// Listplot(nm,list,options):=( //help:Listplot([A,B]); // help:Listplot(["A","B"]); //help:Listplot("1",[[2,1],[3,3]]); -//help:Listplot(options2=["Msg=yes"]); - regional(name,tmp,tmp1,ptlist,Ltype,opcindy,Noflg,eqL,Msg,color); +//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)); , @@ -3396,15 +3849,23 @@ Listplot(nm,list,options):=( color=tmp_(length(tmp)-2); opcindy=tmp_(length(tmp)); Msg=1; // 15.09.17 + cutend=[0,0];//180719 forall(eqL, - tmp=substring(#,0,1); - if(Toupper(tmp)=="M", - tmp=indexof(#,"="); - tmp1=substring(#,tmp,tmp+1); // 16.06.28 - if(Toupper(tmp1)=="N", // 16.06.28 + tmp=Strsplit(#,"="); + tmp1=Toupper(substring(tmp_1,0,1)); + tmp2=tmp_2; + if(tmp1=="M", + tmp=Toupper(substring(tmp2,0,1)); + if(tmp=="N", // 16.06.28 Msg=0; ); ); + if(tmp1=="C",//180719from + tmp2=replace(tmp2,"[",""); + tmp2=replace(tmp2,"]",""); + cutend=tokenize(tmp2,","); + if(length(cutend)==1,cutend=[cutend_1,cutend_1]); + );//180719to ); if(Noflg<3, if(Msg==1, @@ -3412,15 +3873,25 @@ Listplot(nm,list,options):=( ); 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); parse(tmp); - GLIST=append(GLIST,name+"=Listplot("+textformat(list,5)+")"); // 15.12.23 + GLIST=append(GLIST,name+"=Listplot("+textformat(ptlist,5)+")"); // 180719 ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180711 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180711 + ); , if(Noflg==1,Ltype=0); ); @@ -3446,7 +3917,9 @@ Listplot(Arg1,Arg2):=( ); ); Listplot(list):=Listplot(list,[]); +////%Listplot end//// +////%Lineplot start//// Lineplot(nm,list,options):=( //help:Lineplot([A,B]); //help:Lineplot("1",[[2,1],[3,3]]); @@ -3485,10 +3958,14 @@ Lineplot(nm,list,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); @@ -3512,14 +3989,16 @@ Lineplot(Arg1,Arg2):=( ); ); 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,QdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa, + PdL,Num,Ec,Dc,Fun,Exfun,x,Ke,Eps,Pa, Ltype,Noflg,Inflg,Outflg,opstr,opcindy,color); name="gr"+name1; tmp=Divoptions(options); @@ -3538,19 +4017,25 @@ Plotdata(name1,func,variable,options):=( forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,tmp,length(#)); - opstr=opstr+",'"+#+"'"; if(substring(#,0,1)=="N", Num=parse(tmp1); + opstr=opstr+","+Dqq(#); ); if(substring(#,0,1)=="E", - if(substring(tmp1,0,1)=="[", + if(substring(tmp1,0,1)=="[", //180817from Ec=parse(tmp1); + tmp1=replace(tmp1,"[","c("); + 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(tmp1); + opstr=opstr+","+Dqq(#); ); ); if(Inflg==0 & Outflg==0, @@ -3578,10 +4063,26 @@ Plotdata(name1,func,variable,options):=( if(length(Exfun)>0, tmp=parse(Exfun); if(abs(tmp)0, + 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)Eps, //180928from + Out=append(Out,pa); + ); //180928to , Out=concat(Out,[["inf"],pa]); ); @@ -3803,9 +4326,13 @@ Paramplot(name1,funstr,variable,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); , if(Noflg==1,Ltype=0); ); @@ -3815,10 +4342,14 @@ Paramplot(name1,funstr,variable,options):=( , if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); if(Inflg==1, @@ -3827,7 +4358,22 @@ Paramplot(name1,funstr,variable,options):=( ); ); ); +////%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); @@ -3891,7 +4437,9 @@ Connectseg(Pdata):=( ); PlotL; ); +////%Connectseg end//// +////%Implicitplot start//// Implicitplot(name1,func,xrng,yrng):=Implicitplot(name1,func,xrng,yrng,[]); Implicitplot(name1,func,xrng,yrng,options):=( //help:Implicitplot("1","x^2+x*y+y^2=1","x=[-3,3]","y=[-3,3]"); @@ -4009,17 +4557,23 @@ Implicitplot(name1,func,xrng,yrng,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , 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]"]); @@ -4116,17 +4670,23 @@ Circledata(nm,cenrad,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , 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); @@ -4154,45 +4714,67 @@ Framedata(Arg1,Arg2):=( Framedata(name,list,options); ); ); -Framedata(nm,list,options):=( +Framedata(nm,list,optionsorg):=( //help:Framedata(); //help:Framedata([C,A]); //help:Framedata("1",[C,A]); +//help:Framedata("1",[A,B],["corner"]); //help:Framedata("1",[C,dx,dy]); - regional(name,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy, - opcindy,Ltype,Noflg,cent,dx,dy,color); + regional(name,options,Out,tmp,tmp1,pB,x1,x2,y1,y2,dx,dy, + opcindy,Ltype,Noflg,strL,type,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 - pA=Lcrd(list_1); pB=Lcrd(list_2); - dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2); - , - pA=Lcrd(list_1); - dx=list_2; dy=list_3; - ); - x1=pA_1-dx; x2=pA_1+dx; - y1=pA_2-dy; y2=pA_2+dy; - Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]]; - if(Noflg<3, - println("generate Framedata "+name); - tmp1=apply(Out,Pcrd(#)); - tmp=name+"="+textformat(tmp1,5); - parse(tmp); - GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")"); + strL=tmp_7; //180801from + type="center"; + forall(strL, + if(Toupper(#)=="CORNER", + type="corner"; + options=remove(options,[#]); + ); + if(Toupper(#)=="CENTER", + type="center"; + options=remove(options,[#]); + ); ); - if(Noflg<2, - if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + if(type=="corner", + Out=Framedata2(nm,list,options); + , //180801to + color=tmp_(length(tmp)-2); + opcindy=tmp_(length(tmp)); + if(length(list)==2, // 15.05.12 + pA=Lcrd(list_1); pB=Lcrd(list_2); + dx=abs(pB_1-pA_1); dy=abs(pB_2-pA_2); , - if(Noflg==1,Ltype=0); + pA=Lcrd(list_1); + dx=list_2; dy=list_3; + ); + x1=pA_1-dx; x2=pA_1+dx; + y1=pA_2-dy; y2=pA_2+dy; + Out=[[x1,y1],[x2,y1],[x2,y2],[x1,y2],[x1,y1]]; + if(Noflg<3, + println("generate Framedata "+name); + tmp1=apply(Out,Pcrd(#)); + tmp=name+"="+textformat(tmp1,5); + parse(tmp); + GLIST=append(GLIST,name+"=Framedata("+pA+","+dx+","+dy+")"); + ); + if(Noflg<2, + if(isstring(Ltype), + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //181020 + Texcom("}");//180722 + ); + , + if(Noflg==1,Ltype=0); + ); + GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); - GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); Out; ); @@ -4217,17 +4799,23 @@ Framedata(nm,cent,dx,dy,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); Out; ); +////%Framedata end//// +////%Framedata2 start//// Framedata2(nm,list):=Framedata2(nm,list,[]); Framedata2(nm,list,options):=( //help:Framedata2("1",[A,B]); @@ -4236,7 +4824,9 @@ Framedata2(nm,list,options):=( 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]); @@ -4264,13 +4854,17 @@ Ovaldata(nm,Pdata,options):=( Dy=Pdata_3; ); Point=Ctr+[Dx-Rc,Dy-Rc]; - tmp1=Circledata("1",[Point,Point+[Rc,0]], - ["Rng=[0,pi/2]","Num=10","nodata"]); tmp2=Listplot("1",[Ctr+[Dx-Rc,Dy],Ctr+[0,Dy]], ["nodata"]); tmp3=Listplot("2",[Ctr+[Dx,0],Ctr+[Dx,Dy-Rc]], ["nodata"]); - Graph=Joincrvs("1",[tmp3,tmp1,tmp2],["nodata"]); + 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]], @@ -4286,10 +4880,14 @@ Ovaldata(nm,Pdata,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); @@ -4300,14 +4898,16 @@ Ovaldata(nm,Pdata,options):=( ); Graph; ); +////%Ovaldata end//// -Segmark(nm,ptlist):=Segmark(nm,ptlist,[]); -Segmark(nm,ptlist,options):=Drawsegmark(nm,ptlist,options,color); +////%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, + regional(name,pA,pB,wid,mid,size,tp,dir,nor,eqL,color, //180704 tmp,tmp1,tmp2); name="mrk"+nm; pA=ptlist_1; @@ -4317,7 +4917,7 @@ Drawsegmark(nm,ptlist,options):=( tp=1; tmp1=Divoptions(options); eqL=tmp1_5; - color=tmp_(length(tmp)-2); + color=tmp1_(length(tmp1)-2);//180704 forall(eqL, tmp=indexof(#,"="); tmp1=substring(#,tmp,length(#)); @@ -4340,29 +4940,31 @@ Drawsegmark(nm,ptlist,options):=( if(tp==1, tmp1=mid+size*nor; tmp2=mid-size*nor; - Listplot(name,[tmp1,tmp2]); + 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]); + 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]); + Listplot(name+"l",[tmp1,tmp2],["Color="+text(color)]);//180704 ); if(tp==3, tmp1=mid; tmp2=mid+size*dir; - Circledata(name,[tmp1,tmp2]); + 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]); + 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); @@ -4404,7 +5006,9 @@ Parabolaplot(nm,ptlist,rng,options):=( 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); @@ -4449,7 +5053,9 @@ Ellipseplot(nm,ptlist,rng,options):=( 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); @@ -4515,11 +5121,28 @@ Hyperbolaplot(nm,ptlist,rng,optionsorg):=( 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,options):=( +Polygonplot(nm,ptlist,number,optionorg):=( //help:Polygonplot("1",[A,B],12); - regional(rr,pA,pB,ptL,angle,tmp,tmp1,tmp2); +//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|; @@ -4538,7 +5161,9 @@ Polygonplot(nm,ptlist,number,options):=( tmp=angle+#*2*pi/number; tmp1=pA+rr*[cos(tmp),sin(tmp)]; if(#>0 & #0,Ookisa=Ookisa*tmp1_1); - if(length(tmp1)>1, - tmp=tmp1_2; + 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 + if(length(reL)>0,Ookisa=Ookisa*reL_1); + if(length(reL)>1, + tmp=reL_2; if(tmp<5, Hiraki=Hiraki*tmp; , @@ -4601,17 +5240,22 @@ Arrowheaddata(point,direction,options):=( ); 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), -// pP=Lcrd(pP); -// pP=Doscaling(pP); -// Houkou=Dosscaling(Houkou); - pP=Pcrd(pP); - scy=SCALEY; - SCALEY=1; tmp=Nearestpt(pP,Houkou); - pA=tmp_1; + pP=tmp_1; rF=floor(tmp_2); if(rF==1, if(|Ptend(Houkou)-Ptstart(Houkou)|0, - Houkou=pP-tmp_1_1; + Houkou=pP-Pcrd(tmp_1_1); Flg=1; ); - pA=pB; ); ); - SCALEY=scy; if(Flg==0, println("Arrowhead may be too large (no intersect)"); Flg=2; ); - if(Flg==1, - Houkou=Unscaling(Houkou); - pP=Unscaling(pP); - ); ); if(Flg<2, -// pP=Doscaling(pP); -// Houkou=Doscaling(Houkou); - pP=Pcrd(pP); - if(!ispoint(point), - Houkou=Pcrd(Houkou); - ); -// if(MeasureDepth(Houkou)==0,Houkou=Pcrd(Houkou)); Ev=-1/|Houkou|*Houkou; - Ev=Lcrd(Ev); Nv=[-Ev_2, Ev_1]; if(indexof(Str,"c")>0, pP=pP-0.5*Ookisa*cos(Hiraki)*Ev; @@ -4661,211 +5293,192 @@ Arrowheaddata(point,direction,options):=( pA=pP+Ookisa*cos(Hiraki)*Ev+Ookisa*sin(Hiraki)*Nv; pB=pP+Ookisa*cos(Hiraki)*Ev-Ookisa*sin(Hiraki)*Nv; list=[pA,pP,pB]; - list=apply(list,LLcrd(#)); -// Out=Unscaling(Out); list; ); ); +////%Arrowheaddata end//// -Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]); -Arrowhead(point,Houkou,options):=( -//help:Arrowhead(B,B-A,[1.5,30]); -//help:Arrowhead(A,"gr1"); - // global ArrowheadNumber - regional(name,Ltype,Noflg,reL,opstr,opcindy,color, - ptstr,hostr,tmp,tmp1,list); - name="arh"+text(ArrowheadNumber); - ArrowheadNumber=ArrowheadNumber+1; - ptstr=textformat(point,5); - if(isstring(Houkou), // 15.01.11 - tmp=parse(Houkou); - if(MeasureDepth(tmp)<2, - hostr=Houkou; - , - hostr=Houkou+"(1)"; - ); +////%Arrowhead start//// +Arrowhead(point,Houkou):=Arrowhead(point,Houkou,[]); //181018from +Arrowhead(Arg1,Arg2,Arg3):=( + if(isstring(Arg1), + Arrowhead(Arg1,Arg2,Arg3,[]); , - if(ispoint(point), - hostr=textformat(LLcrd(Houkou),5); - , - hostr=textformat(Houkou,5); - ); + Arrowhead(text(ArrowheadNumber),Arg1,Arg2,Arg3); ); +); +Arrowhead(nm,point,direction,optionsorg):=(//181018from +//help:Arrowhead("1",B,B-A); +//help:Arrowhead(options=[1.5,30,"Coor=P(L)"]); +//help:Arrowhead(A,"gr1"); + regional(name,Ltype,Noflg,reL,opstr,opcindy,color,eqL,coord, + options,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); - opstr=tmp_(length(tmp)-1); - opcindy=tmp_(length(tmp)); - list=Arrowheaddata(point,Houkou,options); + 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=Touppera(tmp2); + options=remove(options,[#]); + ); + ); //181018to + 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, -// println("generate Arrowhead "+name); - tmp1=apply(list,Pcrd(#)); + tmp1=apply(list,LLcrd(#)); tmp=name+"="+textformat(tmp1,5); parse(tmp); -// GLIST=append(GLIST,name+"=Listplot("+list+")"); ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(1)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , -// if(Noflg==1,Ltype=0); - Ltype=0; + Listplot("-arh"+nm,apply(list,LLcrd(#)),concat(options,["notex","Msg=n"])); ); - GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); if(Noflg==0, - if(length(reL)<3, // 16.04.09 from - forall(1..(2-length(reL)), - opstr=opstr+",1"; - ); - tmp=PenThick/PenThickInit; - opstr=opstr+","+text(tmp); - ); // 16.04.09 until - Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")"); - ); -); - -Arrowdata(ptlist):=Arrowdata(ptlist,[]); -Arrowdata(Arg1,Arg2):=( - regional(tmp,nm,ptlist,flg,pA,pB,options); - flg=0; - if(isstring(Arg1), - nm=Arg1; - ptlist=Arg2; - Arrowdata(nm,ptlist,[]); - flg=1; - ); - if(flg==0, - tmp=MeasureDepth(Arg1); - if(tmp==0, - pA=Arg1; - pB=Arg2; - Arrowdata(pA,pB,[]); - , - ptlist=Arg1; - options=Arg2; - nm=text(ArrowlineNumber); - ArrowlineNumber=ArrowlineNumber+1; - Arrowdata(nm,ptlist,options); - ); - ); -); -Arrowdata(Arg1,Arg2,options):=( -//help:Arrowdata([A,B],[2,10]); -//help:Arrowdata("1",[p1,p2]); - regional(Retflg,nm,ptlist,name,opstr,opcindy,realL,strL,size, - flg,Ltype,Noflg,lineflg,tmp,tmp1,tmp2,pA,pB,segpos,color); - Retflg=0; - Noflg=0; - Ltype=0; - if(!isstring(Arg1), - pA=Arg1; - pB=Arg2; - Arrowdata(pA,pB,options,"old"); - Retflg=1; - ptlist=[pA,pB]; - ); - if(Retflg==0, - nm=Arg1; - ptlist=Arg2; - name="ar"+nm; tmp=Divoptions(options); - Ltype=tmp_1; - Noflg=tmp_2; - realL=tmp_6; - strL=tmp_7; - color=tmp_(length(tmp)-2); opstr=tmp_(length(tmp)-1); - opcindy=tmp_(length(tmp)); - size=1; // 15.06.11 - if(length(realL)>0, - size=realL_1; + 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); + ); ); - tmp2=select(strL,indexof(#,"l")>0); // 16.04.09 - if(length(tmp2)>0,lineflg=1,lineflg=0); // 16.04.09 - segpos=1; - tmp1=tmp_5; - if(length(tmp1)>2, - segpos=tmp1_3; + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 ); - if(Noflg<3, -// println("generate Arrowdata "+name); - tmp1=apply(ptlist,Pcrd(#)); - tmp=name+"="+textformat(tmp1,5); - parse(tmp); - tmp1=Pcrd(ptlist_1);//16.10.20 - tmp2=Pcrd(ptlist_2);//16.10.20 - if(lineflg==0, // 16.04.09 from - tmp=tmp2-0.2*size/2*(tmp2-tmp1)/|tmp2-tmp1|; // 15.06.11 - , - tmp=tmp2; - ); // 16.04.09 until - tmp=[LLcrd(tmp1),LLcrd(tmp)];//16.10.20 - GLIST=append(GLIST,name+"=Listplot("+textformat(tmp,5)+")"); + Com2nd("Arrowhead("+ptstr+","+hostr+opstr+")"); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 ); - if(Noflg<2, - if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , - if(Noflg==1,Ltype=0); - ); - tmp=textformat(ptlist,5); - tmp=substring(tmp,1,length(tmp)-1); - tmp1=indexof(tmp,"],["); - if(tmp1>0, - pA=substring(tmp,0,tmp1); - pB=substring(tmp,tmp1+1,length(tmp)); - , - tmp1=indexof(tmp,","); - pA=substring(tmp,0,tmp1-1); - pB=substring(tmp,tmp1,length(tmp)); - ); - tmp1="Lcrd("+pA+")+" - +textformat(segpos,5)+"*(Lcrd("+pB+")-"+"Lcrd("+pA+"))"; - tmp1=parse(tmp1); - tmp2="Lcrd("+pB+")-Lcrd("+pA+")"; - tmp2=parse(tmp2); - Arrowhead(tmp1,tmp2,options); - GCLIST=append(GCLIST,[name,Ltype,opcindy]); +); +); +////%Arrowhead end//// + +////%Arrowdata start//// +Arrowdata(nm,ptlist):=Arrowdata(nm,ptlist,[]); +Arrowdata(nm,ptlist,optionsorg):=( +//help:Arrowdata("1",[A,B]); +//help:Arrowdata("1",[pt1,pt2]); +//help:Arrowdata(options=[1,18,pos(1),cut(0),"Cutend=0,0","Coord=p/n"]); + regional(options,Ltype,Noflg,name,opstr,opcindy,eqL,reL,strL,color,size,coord, + flg,lineflg,cutend,tmp,tmp1,tmp2,pA,pB,angle,segpos); + name="ar"+nm; + options=optionsorg; + 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)); + size=1; // 15.06.11 + angle=18; + segpos=1; + if(length(reL)>0, + size=relL_1; + if(length(reL)>1, //180719from + angle=reL_2; + if(length(reL)>2, + segpos=reL_3; + ); + );//180719to + ); + 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,[#]); ); ); - ptlist; -); -Arrowdata(pA,pB,options,str):=( - regional(ptA,ptB,opstr,Astr,Bstr,name,tmp,opcindy); - Astr=textformat(pA,5); - Bstr=textformat(pB,5); - name="ar"+pA.name+pB.name; - println("generate Arrow "+name); - opstr=""; - opcindy=""; - forall(options, - if(isstring(#), - if(indexof(#,"->")>0, - opcindy=opcindy+","+#; - , - tmp="'"+#+"'"; - ); + if(coord=="P", + pA=ptlist_1; pB=ptlist_2; + if(ispoint(pA),pA=pA.xy); + if(ispoint(pB),pB=pB.xy); + , + pA=Pcrd(ptlist_1); pB=Pcrd(ptlist_2); + );//181018to + if(Noflg<3, + println("generate Arrowdata "+name); + if(|cutend|>0,//180719from + tmp=ptlist_2-ptlist_1; + tmp=tmp/|tmp|; + ptlist_1=ptlist_1+tmp*cutend_1; + ptlist_2=ptlist_2-tmp*cutend_2; + );//180719to + 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=text(#); + tmp=pB; + ); // 16.04.09 until + tmp=format([LLcrd(pA),LLcrd(tmp)],6); + ); + if(Noflg<2, + if(isstring(Ltype), +// if((Noflg==0)&(color!=KCOLOR), //180904 +// Texcom("{");Com2nd("Setcolor("+color+")");//180722 +// ); + Listplot("-ar"+nm,[LLcrd(pA),LLcrd(pB)],append(options,"Msg=n")); + Arrowhead(nm,pB,pB-pA,options); +// Ltype=GetLinestyle(text(Noflg)+Ltype,name); +// if((Noflg==0)&(color!=KCOLOR), //180904 +// Texcom("}");//180722 +// ); + , + if(Noflg==1,Ltype=0); ); - opstr=opstr+","+tmp; ); - ptA=Lcrd(pA); - ptB=Lcrd(pB); - Arrowheaddata(ptB,ptB-ptA,options); - tmp="connect("+textformat([ptA,ptB],5) - +",linecolor->"+text(KCOLOR)+opcindy+");"; - parse(tmp); // 14.11.17 - Com2nd("Arrowline("+Astr+","+Bstr+opstr+")"); // 14.10.04 + [Lcrd(pA),Lcrd(pB)]; ); +////%Arrowdata end//// +////%Anglemark start//// Anglemark(plist):=Anglemark(plist,[]); Anglemark(Arg1,Arg2):=( // 2015.04.28 from regional(nm,plist,options,tmp); @@ -4958,10 +5571,14 @@ Anglemark(nm,plist,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); @@ -4969,7 +5586,9 @@ Anglemark(nm,plist,options):=( ); Out; ); +////%Anglemark end//// +////%Paramark start//// Paramark(plist):=Paramark(plist,[]); Paramark(Arg1,Arg2):=( // 17.03.27 from regional(nm,plist,options,tmp); @@ -4985,7 +5604,7 @@ Paramark(Arg1,Arg2):=( // 17.03.27 from nm=substring(tmp,1,length(tmp)-1); Paramark(nm,plist,options); ); -);// until +);// to Paramark(nm,plist,options):=( //help:Paramark([A,B,C],["E=\theta"]); //help:Paramark("1",[p1,p2,p3],["E=\theta"]); @@ -5012,7 +5631,7 @@ Paramark(nm,plist,options):=( if(substring(#,0,1)=="L",Bname="Letter("); if(substring(#,0,1)=="E",Bname="Expr("); Bpos="md"+name; - Bname=Bname+Dq+Bpos+Dq+","+Dq+"c"+Dq+","+Dq; + Bname=Bname+Bpos+","+Dq+"c"+Dq+","+Dq; //180705 tmp=substring(#,indexof(#,"="),length(#)); tmp1=indexof(tmp,","); Bname=Bname+substring(tmp,tmp1,length(tmp))+Dq+")"; @@ -5043,17 +5662,23 @@ Paramark(nm,plist,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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; @@ -5068,7 +5693,9 @@ MakeBowdata(pA,pB,Hgt):=( Th2=arctan2(pB2-pC2)+angle; [pC,ra,Th1,Th2]; ); +////%MakeBowdata end//// +////%Bowdata start//// Bowdata(plist):=Bowdata(plist,[]); Bowdata(plist,options):=( regional(nm,tmp); @@ -5165,7 +5792,7 @@ Bowdata(nm,plist,options):=( Bname=Bname+Bpos;//16.11.01 if(abs(Tmov)+abs(Nmov)>0, tmp=Pcrd(pA)-Pcrd(pB); - tmp1=1/norm(tmp)*tmp; + tmp1=1/Norm(tmp)*tmp; tmp2=[-tmp1_2,tmp1_1]; tmp=MARKLEN*(Tmov*tmp1+Nmov*tmp2); tmp=LLcrd(tmp); @@ -5222,21 +5849,29 @@ Bowdata(nm,plist,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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); @@ -5252,7 +5887,9 @@ Bownamerot(bwdata,tmov,nmov,str,updown):=( if(updown<0,tmp=-tmp); Exprrot(BOWMIDDLE,tmp,tmov,nmov,str); ); +////%Bownamerot end//// +////%Deqdata start//// Deqdata(deq,rng,initt,initf,Num):=( //17.10.04 // Deqdata("[x1,...xn]`=[f1,...fn]","t=[0,20]",0,[...],50); regional(Eps,Inf,tname,Xname,func,t1,t2,dt,tt,X0,flg, @@ -5312,7 +5949,9 @@ Deqdata(deq,rng,initt,initf,Num):=( //17.10.04 ); 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); @@ -5426,15 +6065,20 @@ Deqplot(nm,deqorg,rngorg,initt,initf,options):=( //17.10.06 ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); ); +////%Deqplot end//// ////////// old enclosing /////////////// @@ -5442,7 +6086,7 @@ 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"]); +// 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; @@ -5492,10 +6136,10 @@ EnclosingS(nm,plist,options):=( , pt=KL_1_1; t1=KL_1_2; - tmp=|pt-Start|; + tmp=Norm(pt-Start); forall(2..(length(KL)),ii, // 15.04.20 tmp1=KL_ii_1; - tmp2=|tmp1-Start|; // 15.04.20 + tmp2=Norm(tmp1-Start); // 15.04.20 if(tmp2t1+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)1, t2=KL_2_2; ss=KL_2_3; @@ -5712,12 +6373,13 @@ Enclosing2(nm,plistorg,options):=( , AnsL=concat(AnsL,tmp_(2..(length(tmp)))); ); - t1=ss; ); + t1=ss;//180706 + p1=Pointoncurve(t1,Gdata); //180713 ); ); if(flg==0, - AnsL=apply(AnsL,Pcrd(#)); + AnsL=apply(AnsL,Pcrd(#)); ); if(Noflg<3, println("generate Enclosing "+name); @@ -5728,15 +6390,21 @@ Enclosing2(nm,plistorg,options):=( forall(plistorg, //18.02.02 tmp1=tmp1+#+","; ); - tmp=tmp+substring(tmp1,0,length(tmp1)-1)+"))";//18.02.02 + tmp=tmp+substring(tmp1,0,length(tmp1)-1)+")";//18.0706from + if(length(Start)>0,tmp=tmp+","+Textformat(Start,6)); + tmp=tmp+","+text(epspara)+")";//18.0706to,180707 GLIST=append(GLIST,tmp);//16.11.07until ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); @@ -5744,16 +6412,18 @@ Enclosing2(nm,plistorg,options):=( 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^(-6); + Eps=10^(-5); nvec=[-vec_2,vec_1]; nvec=nvec/|nvec|; if(!islist(iolistorg),iolist=[iolistorg],iolist=iolistorg); @@ -5763,7 +6433,8 @@ Makehatch(iolistorg,pt,vec,bdylist):=( tmp="["+substring(tmp,0,length(tmp)-1)+"]"; iolist_#=parse(tmp); ); - Scalebkup=SCALEY; + Scalebkup=[SCALEX,SCALEY];//181020(2lines) + SCALEX=1; SCALEY=1; sg=Lineplot("",[pt,pt+vec],["nodata"]); nb=length(bdylist); @@ -5780,7 +6451,17 @@ Makehatch(iolistorg,pt,vec,bdylist):=( tmp=Intersectseg(sg,[p1,p2],Eps); if(abs(tmp_1)0, @@ -5790,6 +6471,21 @@ Makehatch(iolistorg,pt,vec,bdylist):=( ); ); 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)ne-1 tmp=tenL_ii; tmp1=tmp_4; tmp2=tmp_5; @@ -5822,17 +6518,49 @@ Makehatch(iolistorg,pt,vec,bdylist):=( ); ); ); - SCALEY=Scalebkup; + SCALEX=Scalebkup_1; //181020 + SCALEY=Scalebkup_2; out; ); +////%Makehatch end//// -Hatchdatacindy(nm,iostr,bdylist):=Hatchdatacindy(nm,iostr,bdylist,[]); -Hatchdata(nm,iostr,bdylist,options):=Hatchdatacindy(nm,iostr,bdylist,options); +////%Hatchdata start//// +Hatchdata(nm,iostr,bdylist):=Hatchdatacindy(nm,iostr,bdylist,[]);//180619 +Hatchdata(nm,iostr,bdylist,optionsorg):=( //181003from + regional(options,tmp,tmp1,tmp2,eqL,strL,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,options):=( -//help:Hatchdata("1",["ii"],[["ln1","Invert(gr1)"],["gr2","n"]]); -//help:Hatchdata(options=[angle,width]); - regional(name,bdylist,bdynameL,bname,Ltype,Noflg,opstr,opcindy,reL,startP,angle, - interval,vec,nvec,flg,pt,kk,delta,sha,AnsL,tmp,tmp1,tmp2,color); + //help:Hatchdata("1",["ii"],[["ln1","Invert(gr1)"],["gr2","n"]]); +//help:Hatchdata(options=["Out=n(//m/r)","Maxnum=20",angle,width]); + regional(name,bdylist,bdynameL,bname,Ltype,Noflg,opstr,opcindy,reL, + 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 name="ha"+nm; bdylist=[]; bdynameL=[]; @@ -5843,34 +6571,55 @@ Hatchdatacindy(nm,iostr,bdylistorg,options):=( , tmp=tmp1_(length(tmp1)); if(contains(["n","s","e","w"],tmp), - tmp2=parse(tmp1_1); + 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,YMIN], - [tmp2_(length(tmp2))_1,YMIN],LLcrd(tmp2_(length(tmp2)))],["nodisp"]); - Joincrvs(text(kk)+name,[tmp1_1,"sg"+name],["nodisp"]); + 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,YMAX], - [tmp2_(length(tmp2))_1,YMAX],LLcrd(tmp2_(length(tmp2)))],["nodisp"]); - Joincrvs(text(kk)+name,[tmp1_1,"sg"+name],["nodisp"]); + 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,[tmp1_1,"sg"+name],["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,[tmp1_1,"sg"+name],["nodisp"]); + Joincrvs(text(kk)+name,[namep,"sg"+name],["nodisp"]);//180717 bname="join"+text(kk)+name; ); , - Enclosing2(text(#)+name,tmp,["nodisp"]); - bname="en"+text(#)+name; + Enclosing2(text(kk)+name,tmp,["nodisp"]);//180619(2lines); + bname="en"+text(kk)+name; ); ); bdylist=append(bdylist,parse(bname)); @@ -5879,13 +6628,26 @@ Hatchdatacindy(nm,iostr,bdylistorg,options):=( 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)); - reL=tmp_6; angle=45; - interval=0.125*1000/2.54/MilliIn; +// interval=0.125*1000/2.54/MilliIn; + interval=0.25*1000/2.54/MilliIn; //180706 startP=[(XMIN+XMAX)/2, (YMIN+YMAX)/2]; + maxnum=[30,0]; //181005 [first,second] + forall(eqL, + tmp=Strsplit(#,"="); + tmp1=Toupper(tmp_1); + if(substring(tmp1,0,1)=="M", + maxnum=parse(tmp_2); + if(!islist(maxnum), + maxnum=[maxnum,0]; + ); + ); + );//181003to tmp1=1; forall(reL, if(islist(#), @@ -5903,28 +6665,21 @@ Hatchdatacindy(nm,iostr,bdylistorg,options):=( vec=[cos(angle),sin(angle)]; nvec=[-sin(angle),cos(angle)]; AnsL=[]; - flg=0; - forall(0..100,kk, + ctr=0;//181005(2lines) + forall(0..(maxnum_1), kk, pt=startP+kk*interval*nvec; - if(flg==0, - sha=Makehatch(iostr,pt,vec,bdylist); - if((sha==-1)%(length(sha)==0), -// flg=1; - , - AnsL=concat(AnsL,sha); - ); + sha=Makehatch(iostr,pt,vec,bdylist); + if((sha!=-1)&(length(sha)>0), + AnsL=concat(AnsL,sha); + ctr=ctr+1; //181005 ); ); - flg=0; - forall(1..100,kk, + maxnum_2=maxnum_2+(maxnum_1-ctr); //181005 + forall(1..(maxnum_2),kk, //181005 pt=startP-kk*interval*nvec; - if(flg==0, - sha=Makehatch(iostr,pt,vec,bdylist); - if((sha==-1)%(length(sha)==0), -// flg=1; - , - AnsL=concat(AnsL,sha); - ); + sha=Makehatch(iostr,pt,vec,bdylist); + if((sha!=-1)&(length(sha)>0), + AnsL=concat(AnsL,sha); ); ); if(Noflg<3, @@ -5946,10 +6701,14 @@ Hatchdatacindy(nm,iostr,bdylistorg,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); @@ -5961,8 +6720,9 @@ Hatchdatacindy(nm,iostr,bdylistorg,options):=( ); tmp2; ); +////%Hatchdata end//// - +////%Shade start//// Shade(plist):=Shade("",plist,[]); //180613from Shade(Arg1,Arg2):=( if(isstring(Arg1), @@ -5977,7 +6737,9 @@ Shade(nm,plistorg,options):=( //180613to //help:Shade(["gr2","sg1"],["Color=[0,0,0,0.5]"]); //help:Shade(["gr2","sg1"],["Color=[1,0,0]"]); // help:Shade([[A,B,C,A]]); - regional(name,plist,jj,tmp,tmp1,tmp2,opstr,opcindy,reL,Str,G2,flg,color,ctr); +//help:Shade("1",["gr2","Invert(sg1)"],["Enc=y",startpt]]); + regional(name,plist,jj,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 @@ -5986,17 +6748,44 @@ Shade(nm,plistorg,options):=( //180613to 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)); - reL=tmp_6; //180603from - if(length(reL)>0, - color=reL_1*color; - );//180603to + tmp=select(plist,indexof(#,"Invert")>0); //180929from + if(length(tmp)>0,encflg=1,encflg=0); + 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; + ); + ); + ); + 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 forall(1..(length(plist)),jj, //180613from if(flg==0, tmp1=plist_jj; @@ -6038,13 +6827,14 @@ Shade(nm,plistorg,options):=( //180613to ); , tmp1=tmp1+"Listplot("+textformat(#,5)+"),"; - ); // until 16.01.24 + ); //16.01.24to ); - Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+opstr+")"; - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")",["before"])); + Str=Str+substring(tmp1,0,length(tmp1)-1)+")"+")"; //180929 + Com2nd("Texcom("+Dqq("{")+")",["before"]);Com2nd("Setcolor("+color+")",["before"]);//180722 Com2nd(Str,["before"]); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")",["before"])); + Com2nd("Texcom("+Dqq("}")+")",["before"]);//180722 ); +////%Shade end//// /////////// end of new Hatchdata(cindy) /////////// diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2logr.txt b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2logr.txt index afbbbad15a7..aec118d8bfa 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2logr.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2logr.txt @@ -1,3 +1,64 @@ +// 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 diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2r.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2r.cs index 13b4bd28869..db5421162a5 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2r.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibbasic2r.cs @@ -14,17 +14,20 @@ // along with this program. If not, see // -println("ketcindybasic2(20180610) loaded"); +println("ketcindybasic2(20181024) loaded"); //help:start(); +////%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); @@ -37,7 +40,9 @@ Datetime():=( tmp=text(tmp_1); tmp=[dt_6+"/"+tmp+"/"+dt_3,dt_4]; ); +////%Datetime end//// +////%Rotatepoint start//// Rotatepoint(point,Theta,ctr):=( //help:Rotatepoint(A,2*pi/3,B); regional(X1,X2,Y1,Y2,Cx,Cy,tmp); @@ -49,7 +54,9 @@ Rotatepoint(point,Theta,ctr):=( 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); @@ -61,7 +68,9 @@ Translatepoint(point,mov):=( 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); @@ -73,7 +82,9 @@ Scalepoint(point,ratio,center):=( Y2=Cy+ratio_2*(Y1-Cy); [X2,Y2]; ); +////%Scalepoint end//// +////%Reflectpoint start//// Reflectpoint(point,symL):=( //help:Reflectpoint(A,B); //help:Reflectpoint(A,[[2,3]]); @@ -100,7 +111,9 @@ Reflectpoint(point,symL):=( ); [X2,Y2]; ); +////%Reflectpoint end//// +////%Rotatedata start//// Rotatedata(nm,plist,Theta):=Rotatedata(nm,plist,Theta,[]); Rotatedata(nm,plist,angle,options):=( //help:Rotatedata("1",["crAB","pt1"],pi/3,[[1,5],"dr,2"]); @@ -161,17 +174,23 @@ Rotatedata(nm,plist,angle,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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,options):=( //help:Translatedata("1",["gr1","pt1"],[1,2]); @@ -224,17 +243,23 @@ Translatedata(nm,plist,mov,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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 @@ -311,17 +336,23 @@ Scaledata(nm,plist,rx,ry,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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,options):=( //help:Reflectdata("1",["crAB"],[C]); @@ -390,21 +421,29 @@ Reflectdata(nm,plist,symL,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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(segstr,p,q,r,tmp1,tmp2,tmp3); + regional(ctr,segstr,p,q,r,tmp1,tmp2,tmp3); + ctr=1;//180809 forall(allsegments(),seg, str=text(inspect(seg,"definition")); tmp1=indexof(str,"("); @@ -412,33 +451,38 @@ Mksegments(options):=( tmp3=indexof(str,")"); p=substring(str,tmp1,tmp2-1); q=substring(str,tmp2,tmp3-1); - Listplot([parse(p),parse(q)]); + 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(seg,cir,str,p,q,r,tmp1,tmp2,tmp3,tmp4); + regional(str,ctr,tmp,tmp1,tmp2); + ctr=1; forall(allcircles(),cir, str=text(inspect(cir,"definition")); tmp1=indexof(str,"("); - tmp2=indexof(str,";"); - tmp3=indexof(str,")"); - tmp4=indexof(str,";",tmp2+1); - if(tmp4==0, - p=substring(str,tmp1,tmp2-1); - q=substring(str,tmp2,tmp3-1); - Circledata([parse(p),parse(q)]); + 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); , - p=substring(str,tmp1,tmp2-1); - q=substring(str,tmp2,tmp4-1); - r=substring(str,tmp4,tmp3-1); - Circledata([parse(p),parse(q),parse(r)]); + 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=""; @@ -453,7 +497,9 @@ MakeRarg(arglist):=( str=substring(str,0,length(str)-1); str; ); +////%MakeRarg end//// +////%Setax start//// Setax(arglist):=( //help:Setax(["l","x","e","y","n","O","sw"]); //help:Setax([7,"nw"]); @@ -461,22 +507,59 @@ Setax(arglist):=( tmp=MakeRarg(arglist); Com1st("Setax("+tmp+")"); ); +////%Setax end//// +////%Htickmark start//// Htickmark(arglist):=( //help:Htickmark([1,"1",2,"sw","2"]); - regional(tmp); - tmp=""; - tmp=MakeRarg(arglist); - Com2nd("Htickmark("+tmp+")"); + 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)]); + , + Expr([[arglist_nn,0],arglist_(nn+1),arglist_(nn+2)]); + ); + , + Expr([[arglist_nn,0],"s1",arglist_(nn+1)]); + ); + );//180710to +// tmp=""; +// tmp=MakeRarg(arglist); +// Com2nd("Htickmark("+tmp+")"); ); +////%Htickmark end//// +////%Vtickmark start//// Vtickmark(arglist):=( //help:Vtickmark([1,"1",2,"sw","2"]); - regional(tmp); - tmp=MakeRarg(arglist); - Com2nd("Vtickmark("+tmp+")"); + 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)]); + , + Expr([[0,arglist_nn],arglist_(nn+1),arglist_(nn+2)]); + ); + , + Expr([[0,arglist_nn],"w1",arglist_(nn+1)]); + ); + );//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):=( @@ -488,7 +571,9 @@ Vtick(py,len,options):=( 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):=( @@ -502,13 +587,28 @@ Htick(px,lenorg,options):=( tmp2=[px,0+len/2]; Listplot(tmp,[tmp1,tmp2],options); ); +////%Htick end//// -Drwxy():=( +////%Drwxy start//// +Drwxy():=Drwxy([]); //180820from +Drwxy(options):=( //help:Drwxy(); - Com2nd("Drwxy()"); +//help:Drwxy(options=["Origin=[0,0]","Xrng=","Yrng=","Ax=l,x,e,..."]); + regional(tmp); + tmp=""; + forall(options, + if(length(tmp)>0, + tmp=tmp+","+Dqq(#); + , + tmp=Dqq(#); + ); + ); + Com2nd("Drwxy("+tmp+")"); //180820to Addax(0); // 16.01.21 ); +////%Drwxy end//// +////%Drwpt start//// Drwpt(pstr):=Drawpoint(pstr); Drwpt(ptlist,nn):=( // 16.03.05 from //help:Drwpt(A); @@ -546,12 +646,16 @@ Drawpoint(ptlistorg,nn):=( ); Setpen(thick); // 16.04.09 );// 16.03.05 until +////%Drwpt end//// +////%Addax start//// Addax(param):=( //help:Addax(0); ADDAXES=textformat(param,5); ); +////%Addax end//// +////%Expr start//// Expr(Pt,Dr,St):=Expr([Pt,Dr,St]); Expr(list):=Expr(list,[]); Expr(listorg,options):=( //16.10.09 @@ -567,7 +671,9 @@ Expr(listorg,options):=( //16.10.09 ); Letter(list,options); ); +////%Expr end//// +////%Letter start//// Letter(Pt,Dr,St):=Letter([Pt,Dr,St]); Letter(list):=Letter(list,[]); Letter(list,options):=( @@ -616,10 +722,14 @@ Letter(list,options):=( Str=replace(Str,"`","'");//180303 tmp=Dq+","+Dq+Str+Dq+")"; if(Noflg==0, - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Com2nd("Letter("+Lcrd(Pos)+","+Dq+Dir+tmp);//16.10.10 - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - ); + 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 + ); + ); if(Noflg<2, Xmv=0;//16.10.13 Ymv=-4; @@ -652,7 +762,9 @@ Letter(list,options):=( 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), @@ -662,9 +774,10 @@ 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,"t0n5","AB"): +// 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"); @@ -687,11 +800,17 @@ Letterrot(pt,dir,tmov,nmov,str,options):=( color=tmp_(length(tmp)-2); Letter([pt,"c",str],append(options,"notex")); tmp=replace(str,"\","\\"); //17.10.18 - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Com2nd("Letterrot("+pt+","+dir+","+tmov+","+nmov+",'"+tmp+"')"); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); + 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,[]); Exprrot(pt,dir,Arg1,Arg2):=( if(islist(Arg2), @@ -701,9 +820,10 @@ 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,"t0n5","d"): +// 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"); @@ -726,11 +846,17 @@ Exprrot(pt,dir,tmov,nmov,str,options):=( color=tmp_(length(tmp)-2); Expr([pt,"c",str],append(options,"notex")); tmp=replace(str,"\","\\"); //17.10.18 - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Com2nd("Exprrot("+pt+","+dir+","+tmov+","+nmov+",'"+tmp+"')"); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); + 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//// Putslider(ptstr,p1,p2):=Slider(ptstr,p1,p2); Slider(ptstr,p1,p2):=( //17.04.11 //help:Slider("A-C-B",[-3,0],[3,0]); @@ -759,7 +885,9 @@ Slider(ptstr,p1,p2):=( //17.04.11 Putonseg(pC,parse("sg"+pA+pB)); // create([pC],"PointOn",[parse(sname),0.5]); ); +////%Slider end//// +////%Putpoint start//// Putpoint(name,Pt):=Putpoint(name,Pt,Pt); Putpoint(name,Ptinit,Pt):=( //help:Putpoint("A",[1,2],[1,A.y]); @@ -772,7 +900,9 @@ Putpoint(name,Ptinit,Pt):=( 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; @@ -799,11 +929,15 @@ Bezierpt(t,ptlist,ctrlist):=( 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(ptctrlist,options):=BezierCurve(ptctrlist_3,ptctrlist_1,ptctrlist_2,options); Bezier(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]); Bezier(nm,ptlist,ctrlist,options):=BezierCurve(nm,ptlist,ctrlist,options); +////%Bezier end//// +////%BezierCurve start//// BezierCurve(nm,ptlist,ctrlist):=BezierCurve(nm,ptlist,ctrlist,[]); BezierCurve(nm,ptlistorg,ctrlistorg,options):=( //help:Bezier("1",[A,D],[B,C]); @@ -867,17 +1001,24 @@ BezierCurve(nm,ptlistorg,ctrlistorg,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , if(Noflg==1,Ltype=0); ); GCLIST=append(GCLIST,[name,Ltype,opcindy]); ); + BezierCtrL=ctrlist; //181001 list; ); +////%BezierCurve end//// +////%Readcsvsla start//// Readcsvsla(fname):=Readplotdigdata(fname,[]); Readcsvsla(fname,options):=Readplotdigdata(fname,options); Readplotdigdata(fname):=Readplotdigdata(fname,[]); @@ -927,7 +1068,9 @@ Readplotdigdata(fname,options):=( ptdata=tmp1; ptdata; ); +////%Readcsvsla end//// +////%Putbezierdata start//// Putbezierdata(name,ptL):=Putbezierdata(name,ptL,[]); Putbezierdata(name,ptL,options):=( regional(psize,Deg,tmp,tmp1,tmp2,p1,p2,pts,ctrs); @@ -991,11 +1134,15 @@ Putbezierdata(name,ptL,options):=( ); [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]); @@ -1023,7 +1170,9 @@ Mkbezierptcrv(ptdata,options):=( ); 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]]); @@ -1036,7 +1185,9 @@ Mkbeziercrv(nm,ptctrL,options):=( Bezier(nm,ptlist,ctrlist,options); // 17.01.06 ); ); +////%Mkbeziercrv end//// +////%Writebezier start//// Writebezier():=Writebezier(Fhead,"all"); Writebezier(head):=Writebezier(head,"all"); Writebezier(head,seL):=( @@ -1080,7 +1231,9 @@ Writebezier(head,seL):=( WriteOutData(head+".txt",dt); dt; ); +////%Writebezier end//// +////%Readbezier start//// Readbezier(file):=Readbezier(file,[]); Readbezier(file,optionorg):=( //help:Readbezier("xsr"); @@ -1134,10 +1287,13 @@ Readbezier(file,optionorg):=( ); out; ); +////%Readbezier 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; @@ -1192,66 +1348,61 @@ Ospline(nm,ptlist,options):=( pQ=p2+(p2-p1); ctrL_tmp=[pQ]; ); - Bezier("o"+nm,list,ctrL,options); + Bezier("o"+nm,list,ctrL,options); ); - +////%Ospline end//// + +////%CRspline start//// CRspline(nm,ptL):=CRspline(nm,ptL,[]); -CRspline(nm,ptL,options):=( +CRspline(nm,ptL,options):=( //180822 // Catmull-Rom spline //help:CRspline("1",[A,B,C,A]); - regional(name,ptlist,ctrpts,eqL,opcindy,c,v,tmp,tmp1,tmp2,ctrlist,cflg); - name="crsp"+nm; - if(MeasureDepth(ptL)==1,tmp=[ptL],tmp=ptL); - ptlist=tmp_1; - if(length(tmp)==1, +//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)))")>0); - tmp=append(tmp,"notex"); //15.03.05 - Pointdata(name+text(#),[tmp1,tmp2],tmp); - ctrlist=append(ctrlist,[tmp1,tmp2]); + qq=p1+cc*(p2-p0); + rr=p2+cc*(p1-p3); + ctrlist=append(ctrlist,[qq,rr]); ); - Bezier(nm,ptlist,ctrlist,options); + 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); @@ -1314,7 +1465,9 @@ Bzspline(nm,ptLorg,options):=( 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,[]); @@ -1365,7 +1518,9 @@ Bzsspline(nm,ptLorg,options):=( Bezier(nm,ptL,ctrlist,options); [ptL,ctrlist]; ); +////%Beziersym end//// +////%Listbspline2bz start//// Listbspline2bz(listorg):=( regional(Eps,list,pcl,ptl,ctrl,k); Eps=10^(-3); @@ -1382,16 +1537,21 @@ Listbspline2bz(listorg):=( 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); @@ -1453,7 +1613,9 @@ MeetCurve(Crv,Xorg,Yorg):=( tmp=sort(Ylist,abs(#_1-Y0)); [X0,tmp_1]; ); +////%MeetCurve end//// +////%PutonLine start//// PutonLine(name,p1,p2):=PutonLine(name,p1,p2,[]); PutonLine(name,p1org,p2org,options):=( //help:PutonLine("C","sgAB"); @@ -1484,7 +1646,9 @@ PutonLine(name,p1org,p2org,options):=( ); ); ); +////%PutonLine end//// +////%PutonSeg start//// PutonSeg(name,sgstr):=( regional(seg,p1,p2); if(isstring(sgstr),seg=parse(sgstr),seg=sgstr); @@ -1522,10 +1686,13 @@ PutonSeg(name,p1org,p2org,options):=( ); ); ); +////%PutonSeg end//// +////%PutonCurve start//// PutonCurve(pn,crv):=PutonCurve(pn,crv,[]); PutonCurve(pn,crv,options):=( -//help:PutonCurve("A","gr1"); +//help:Putoncurve("A","gr1"); +//help:Putoncurve("A","gr1",[0,XMAX]); regional(Pmt,pstr,optionL,leftlim,rightlim,tmp,tmp1,Flg,Msg); if(!islist(options),optionL=[options],optionL=options); leftlim=XMIN; @@ -1565,7 +1732,9 @@ PutonCurve(pn,crv,options):=( println("Put "+pn+" on Curve "+text(crv)); ); ); +////%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; @@ -1585,32 +1754,36 @@ CrossPoint(name,Crv1,Crv2,range):=( ); Putpoint(name,Crs1); ); +////%CrossPoint end//// -Setscaling(sc):=( -//help:Setscaling(3); - SCALEX=1; - SCALEY=sc; - Com0th("Setscaling("+sc+")"); - Setwindow("Msg=no"); -); - +////%Periodfun start//// Periodfun(defL,rep):=Periodfun(defL,rep,[]); -Periodfun(defL,rep,optionorg):=( // 16.11.24 -//help:Periodfun(["0",[-1,0],"1",1,[0,1],1],2(num of repetition),options); -//help:Periodfun(options=["Con=y"]); +Periodfun(defL,reporg,optionorg):=( // 16.11.24 +//help:Periodfun(["0",[-1,0],1(Num=),"1",[0,1],1(Num)],2(repeat count),options); +//help:Periodfun(repeat count=n or [repeatL,repeatR]); +//help:Periodfun(options=["Con(nect)=da,Color=red"]);//180725 //help:Periodfun(defL=[function string, range, devision number,...]); - regional(nn,fun,range,num,options,nr,maxfun, + regional(nn,fun,range,num,options,nr,maxfun,rep,np, tmp,tmp1,tmp2,eqL,connect,minx,maxx,pdata,Eps,prept); + rep=reporg; + if(length(rep)==1,rep=[rep,rep]);//180724 options=optionorg; - tmp=Divoptions(options); - eqL=tmp_5; - connect="Y"; +// tmp=Divoptions(options); + eqL=options; + connect=["da"];//180725 forall(eqL, - tmp=indexof(#,"="); - tmp2=substring(#,tmp,tmp+1); - tmp=substring(#,0,3); - if(Toupper(tmp)=="CON", - connect=Toupper(tmp2); + tmp=indexof(#,"=");//180725from + tmp=[substring(#,0,tmp-1),substring(#,tmp,length(#))]; + if(Toupper(substring(tmp_1,0,3))=="CON", + println([1658,tmp_2]); + tmp1=Toupper(Op(1,tmp_2)); + if(tmp1=="N", + connect=[]; + , + if(tmp1!="Y", + connect=tokenize(tmp_2,","); + ); + );//180725to options=remove(options,[#]); ); ); @@ -1638,16 +1811,24 @@ Periodfun(defL,rep,optionorg):=( // 16.11.24 "<=x and x<"+tmp2+") then "+fun+" "; ); per=maxx-minx; - forall(1..rep,nr, - tmp1=[]; - forall(pdata, - Translatedata("p"+#+text(nr),#,[per*nr,0],options); - Translatedata("m"+#+text(nr),#,[-per*nr,0],options); - tmp1=concat(tmp1,["trp"+#+text(nr),"trm"+#+text(nr)]); - ); - ); - pdata=concat(pdata,tmp1); - if(connect=="Y", + tmp1=[]; + forall(1..(rep_1),nr, //180724from + forall(reverse(1..(length(pdata))),np, + Translatedata("m"+np+text(nr),pdata_np,[-per*nr,0],options); + tmp1=concat(["trm"+np+text(nr)],tmp1); + ); + ); + tmp2=[]; + forall(1..(rep_2),nr, + forall(1..(length(pdata)),np, + Translatedata("p"+np+text(nr),pdata_np,[per*nr,0],options); + tmp2=concat(tmp2,["trp"+np+text(nr)]); + ); + );//180724to + pdata=concat(tmp1,pdata); + pdata=concat(pdata,tmp2); + if(length(connect)>0, //180725 + connect=append(connect,"Msg=n"); //180725 Eps=10^(-5); pdata=sort(pdata,[parse(#)_1_1]); prept=parse(pdata_1)_1; @@ -1656,7 +1837,7 @@ Periodfun(defL,rep,optionorg):=( // 16.11.24 tmp1=tmp_1; tmp2=tmp_(length(tmp)); if(|prept-tmp1|>Eps, - Listplot("con"+text(#),[prept,tmp1],append(options,"da")); + Listplot("con"+text(#),[prept,tmp1],concat([],connect));//180725 ); prept=tmp_(length(tmp)); ); @@ -1664,7 +1845,9 @@ Periodfun(defL,rep,optionorg):=( // 16.11.24 mxfun=substring(mxfun,4,length(mxfun)-1); [mxfun,per]; ); +////%Periodfun end//// +////%Fourierseries start//// Fourierseries(nm,coeff,per,nterm):= Fourierseries(nm,coeff,per,nterm,[]); // 16.11.24 Fourierseries(nm,coeff,per,nterm,options):=( @@ -1691,7 +1874,9 @@ Fourierseries(nm,coeff,per,nterm,options):=( ); Plotdata("four"+nm,fs,"x",options); ); +////%Fourierseries end//// +////%Tabledatalight start//// Tabledatalight(nm,xLst,yLst,rmvL):=Tabledatalight(nm,xLst,yLst,rmvL,[]); Tabledatalight(nm,xLst,yLst,rmvL,optionorg):=( //help:Tabledatalight("",xLst,yLst,rmvL,[2,"Rng=y"]); @@ -1774,7 +1959,9 @@ Tabledatalight(nm,xLst,yLst,rmvL,optionorg):=( ); Tb; ); +////%Tabledatalight end//// +////%Tabledata start//// Tabledata(nm,n,m,xsize,ysize,rmvL):= Tabledata(nm,n,m,xsize,ysize,rmvL,[]); Tabledata(nm,n,m,xsize,ysize,rmvL,options):=( @@ -1906,7 +2093,9 @@ Tabledata(nm,xLst,yLst,rmvL,optionorg):=( ); Tb; ); +////%Tabledata end//// +////%Tseginfo start//// Tseginfo(seg):=( regional(cr,tp,tpc,n1,n2,n3,tmp,tmp1,tmp2); if(substring(seg,0,2)=="sg", @@ -1928,7 +2117,9 @@ Tseginfo(seg):=( n3=substring(cr,tmp2,length(cr)); [tp+n1,tpc,parse(n2),parse(n3)]; ); +////%Tseginfo end//// +////%Tsegrmv start//// Tsegrmv(rmvL):=Tsegrmv(rmvL,[]); Tsegrmv(rmvL,options):=( regional(cr,gcL,flg,gc,hd,tail,tpc,m1,m2,n1,n2,tmp,tmp1,tmp2); @@ -1972,7 +2163,9 @@ Tsegrmv(rmvL,options):=( ); ); ); +////%Tsegrmv end//// +////%Tgrid start//// Tgrid(ptstr):=( //help:Tgrid("c2r5"); regional(tmp,tmp1,tmp2); @@ -1988,7 +2181,9 @@ Tgrid(ptstr):=( [tb_1_(tmp1+1)_1,tb_2_(tmp2+1)_2]; ); ); +////%Tgrid end//// +////%Tlistplot start//// Tlistplot(ptL):=Tlistplot(ptL,[]); Tlistplot(Ag1,Ag2):=( regional(nm,ptL,options); @@ -2019,7 +2214,9 @@ Tlistplot(nm,ptL,options):=( tmp=apply(ptL,Tgrid(#)); // 15.06.03 Listplot(nm,tmp,tmp1); ); +////%Tlistplot end//// +////%ChangeTablestyle start//// ChangeTablestyle(nameL,style):=( ////help:ChangeTablestyle(["r0c0c3"],["da"]); regional(nmL,grid,head,sb,tmp,tmp1,tmp2, @@ -2074,7 +2271,9 @@ ChangeTablestyle(nameL,style):=( ); ); ); +////%ChangeTablestyle end//// +////%Findcell start//// Findcell(pos1,pos2):=Findcell("",pos1,pos2); Findcell(Tbdata,pos1,pos2):=( //help:Findcell("c0r0","c2r1"); @@ -2102,7 +2301,9 @@ Findcell(Tbdata,pos1,pos2):=( dy=abs(posnw_2-ctr_2); [ctr,dx,dy]; ); +////%Findcell end//// +////%Putcell start//// Putcell(pos1,pos2,dir,lttr):=Putcell("",pos1,pos2,dir,lttr); Putcell(Tbdata,pos1,pos2,dir,lttr):=( //help:Putcell("c0r0","c2r1","lt","abc"); @@ -2138,7 +2339,9 @@ Putcellexpr(Tbdata,pos1,pos2,dir,ex):=( //help:Putcellexpr(2,3,"c","\sin x"); Putcell(Tbdata,pos1,pos2,dir,"$"+text(ex)+"$"); ); +////%Putcell end//// +////%Putrow start//// Putrow(nrow,dir,lttrL):=Putrow("",nrow,dir,lttrL); Putrow(Tbdata,nrow,dir,lttrL):=( //help:Putrow(1,"c",["x","y","z"]); @@ -2148,7 +2351,9 @@ Putrow(Tbdata,nrow,dir,lttrL):=( Putcell(Tbdata,#,nrow,dir,lttrL_#); ); ); +////%Putrow end//// +////%Putrowexpr start//// Putrowexpr(nrow,dir,exL):=Putrowexpr("",nrow,dir,exL); Putrowexpr(Tbdata,nrow,dir,exL):=( //help:Putrowexpr(2,"r",["x","y","z"]); @@ -2156,7 +2361,9 @@ Putrowexpr(Tbdata,nrow,dir,exL):=( lttrL=apply(exL,"$"+#+"$"); Putrow(Tbdata,nrow,dir,lttrL); ); +////%Putrowexpr end//// +////%PutcoL start//// PutcoL(mcol,dir,lttrL):=PutcoL("",mcol,dir,lttrL); PutcoL(Tbdata,mcol,dir,lttrL):=( //help:PutcoL(1,"c",["x","y","z"]); @@ -2166,6 +2373,9 @@ PutcoL(Tbdata,mcol,dir,lttrL):=( Putcell(Tbdata,mcol,#,dir,lttrL_#); ); ); +////%PutcoL end//// + +////%PutcoLexpr start//// PutcoLexpr(mcol,dir,exL):=PutcoLexpr("",mcol,dir,exL); PutcoLexpr(Tbdata,mcol,dir,exL):=( //help:PutcoLexpr(2,"r",["x","y","z"]); @@ -2173,7 +2383,9 @@ PutcoLexpr(Tbdata,mcol,dir,exL):=( lttrL=apply(exL,"$"+#+"$"); PutcoL(Tbdata,mcol,dir,lttrL); ); +////%PutcoLexpr end//// +////%Setrange start//// Setrange():=( //help:Setrange(); SW.xy=Pcrd([XMIN,YMIN]); @@ -2181,146 +2393,9 @@ Setrange():=( drawpoly([Pcrd([XMIN,YMIN]), Pcrd([XMAX,YMIN]), Pcrd([XMAX,YMAX]),Pcrd([XMIN,YMAX])],color->[1,1,1]); ); +////%Setrange end//// -Sciform(list):=( - regional(plotlist,comp,pos,out,out2,nn,strL,flg, - tmp,tmp1,tmp2,tmp3,Nj); - plotlist=Flatten([list]); - out=replace(plotlist_1,".xy",""); - out=replace(out,".x","(1)"); - out=replace(out,".y","(2)"); - if(length(plotlist)==1, - comp=[]; - forall(1..length(out), - comp=append(comp,substring(out,#-1,#)); - ); - out=""; - pos=0; - forall(comp, - if(#!="'", - out=out+#; - , - if(pos==0, - tmp=indexof(out,"Assign("); - if(substring(out,length(out)-7,length(out))=="Assign(", - out=out+"'"; - pos=1; - , - out=out+"Assign('"; - pos=2; - ); - , - if(pos==2, - out=out+"')"; - , - out=out+"'"; - ); - pos=0; - ); - ); - ); - , - forall(2..length(plotlist), - comp=plotlist_#; - if(isstring(comp), - pos=indexof(comp,"Assign("); - if(pos>0, - comp=substring(comp,6,length(comp)); - ); - out=out+"Assign("; - comp=replace(comp,".xy",""); - comp=replace(comp,".x","(1)"); - comp=replace(comp,".y","(2)"); - out=out+"'"+comp+"'"; - out=out+"),"; - ); - if(islist(comp), - forall(comp, - out=out+"'"+#+"',"; - ); - ); - ); - if(length(plotlist)>1, - out=substring(out,0,length(out)-1); - out=out+");"; - ); - ); - pos=[]; - forall(1..length(out), - tmp=indexof(substring(out,#-1,length(out)),"Assign"); - if(tmp>0, - tmp1=#-1+tmp; - if(length(pos)==0, - pos=[tmp1]; - , - if(pos_(length(pos))0, - strL=[]; - Nj=0; - forall(pos, - tmp=substring(out,Nj,#-1); - strL=append(strL,tmp); - Nj=#-1; - ); - strL=append(strL,substring(out,Nj,length(out))); - out=""; - forall(strL, - if(indexof(#,"Assign")==0, - out=out+#; - , - tmp=indexof(#,"('"); - tmp1=indexof(#,"')"); - tmp2=substring(#,tmp+1,tmp1-2); - tmp3=substring(#,tmp1-2,length(#)); - if(indexof(tmp2,"=")==0, - out=out+#; - , - tmp=substring(tmp2,0,indexof(tmp2,"=")); - out=out+"'"+tmp+"'+"+"Assign('"; - tmp=substring(tmp2,indexof(tmp2,"="),length(tmp2)); - out=out+tmp+tmp3; - ); - ); - ); - ); - out2=""; // patched 16.01.21 from - nn=length(out); - flg=0; - forall(1..nn, - if(flg==0, - tmp=indexof(out,"='+Assign('"); - if(tmp==0, - out2=out2+out; - flg=1; - , - out2=out2+substring(out,0,tmp); - out=substring(out,tmp+10,length(out)); - tmp=indexof(out,"'"); // 16.04.19 from - tmp1=substring(out,0,tmp-1); - tmp2="1234567890"; - tmp=apply(1..length(tmp1), - indexof(tmp2,substring(tmp1,#-1,#))); - tmp=min(tmp); - if(tmp==0, // 16.04.19 until - out2=out2+"'+Assign('"; - , - tmp=indexof(out,"'"); - out=substring(out,0,tmp)+substring(out,tmp+1,length(out)); - // 16.04.18 until - ); - ); - ); - ); - out2=replace(out2,"Dist=","D="); - out2=replace(out2,"Dis=","D="); - out2; -); - +////%RSform start//// RSform(str):=RSform(str,3); RSform(str,listfrom):=( //help:RSform(string,listfrom); @@ -2356,14 +2431,18 @@ RSform(str,listfrom):=( out=replace(out,"c(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; @@ -2375,7 +2454,9 @@ Rform(list):=( out=replace(out,".y","[2]"); out; ); +////%Rform end//// +////%Defvar start//// Defvar(varstr):=( regional(name,value,tmp,tmp1); if(isstring(varstr), @@ -2399,7 +2480,6 @@ Defvar(varstr):=( ); // 16.11.16until ); ); - Defvar(name,value):=( //help:Defvar("a",0.3); //help:Defvar(["a",0.3,"b",2]); @@ -2422,32 +2502,52 @@ Defvar(name,value):=( VLIST=select(VLIST,#_1!=name); // 15.02.08 VLIST=prepend([name,value],VLIST); ); +////%Defvar end//// -IftoR(strorg):=( - regional(str,pre,post,sub,ppL,ifstr,out,tmp,tmp1,tmp2); - str=strorg; - ifstr=indexof(str,"if("); - if(ifstr==0, - out=replace(str,",","}else{"); - , - pre=substring(str,0,ifstr-1)+"if("; - ppL=Bracket(str,"()"); - tmp1=ifstr+2; - 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; - tmp=IftoR(sub); - out=pre+tmp+"}"; - ); +////%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("); + ppL=Bracket(str,"()"); + cpL=Indexall(str,","); + tmp1=Bracket(str,"[]"); + forall(1..(length(tmp1)/2),kk, + cpL=select(cpL,#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 & #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; @@ -2478,7 +2578,9 @@ FortoR(strorg):=( 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); @@ -2527,7 +2629,25 @@ Deffun(name,bodylist):=( str=str+"return("+bodylist_(length(bodylist))+")}"; FUNLIST=append(FUNLIST,str); ); +////%Deffun 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)&(xymin-Eps)&(y1, tmp="connect("+textformat(tmp2,5)+ @@ -2558,16 +2676,9 @@ Windispg():=( ); ); ); -// if(ADDAXES=="1", // 16.10.08from -// draw([XMIN,0],[XMAX,0],color->[0,0.2,0]); -// draw([0,YMIIN],[0,YMAX],color->[0,0.2,0]); -// Letter([[XMAX,0],"e","x",[0,YMAX],"n","y"]); -// Letter([[0,0],"sw","O"]); -// ); // 16.10.08until grestore(); layer(0); ); - Windispg(pltdata):=( regional(pdata,Nj,Nk,Dt,tmp,tmp1,tmp2,opcindy); gsave(); @@ -2602,8 +2713,11 @@ Windispg(pltdata):=( grestore(); layer(0); ); +////%Windispg 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); @@ -2623,7 +2737,7 @@ WritetoRS(Arg):=( ); ); WritetoRS(filename,shchoice):=( - regional(Plist,Pos,GrL,str,tmp,tmp1,tmp2,cmd); + regional(Plist,Pos,GrL,str,tmp,tmp1,tmp2,cmd,ns,spos,epos); //help:WritetoRS(2); println("Write to R "+filename); Plist=[]; @@ -2670,8 +2784,8 @@ WritetoRS(filename,shchoice):=( );//180409to tmp=replace(Libname,"\","/"); //17.09.24from println(SCEOUTPUT,"source('"+tmp+".r')");//temporary - if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0), - // 17.10.07added + if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0) + %(GPACK=="pict2e"), // 180817 tmp=replace(tmp+"_rep2e","\","/"); println(SCEOUTPUT,"source('"+tmp+".r')"); ); @@ -2763,12 +2877,27 @@ WritetoRS(filename,shchoice):=( println(SCEOUTPUT,#); ); );//180613to - forall(COM2ndlist, - if(indexof(#,"Texcom")==0, //17.09.22 - println(SCEOUTPUT,RSform(#)); + 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); , - println(SCEOUTPUT,#); - ); + if(indexof(cmd,"Texcom")==0, + println(SCEOUTPUT,RSform(cmd)); + , + println(SCEOUTPUT,cmd); + ); + ); //180721to ); if(length(GrL)>0, println(SCEOUTPUT," Drwline(GrL)"); @@ -2803,7 +2932,9 @@ WritetoRS(filename,shchoice):=( closefile(SCEOUTPUT); ); //180513to ); +////%WritetoRS end//// +////%Extractdata start//// Extractdata(name):=Extractdata(1,name,[]); Extractdata(Arg1,Arg2):=( if(isstring(Arg1), @@ -2814,7 +2945,7 @@ Extractdata(Arg1,Arg2):=( ); Extractdata(number,name,options):=( //help:ExtractData("ha1"); -//help:ExtractData(1,"ha1"); +// help:ExtractData(1,"ha1"); regional(dlist,tmp,tmp1,tmp2,tmp3,File,Ltype,Noflg,opstr,opcindy,color); tmp=Divoptions(options); Ltype=tmp_1; @@ -2847,17 +2978,23 @@ Extractdata(number,name,options):=( ); if(Noflg<2, if(isstring(Ltype), - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+color+")")); - Ltype=GetLinestyle(text(Noflg)+Ltype,name); - if(!contains([[0,0,0],[0,0,0,1]],color),Com2nd("Setcolor("+text(KCOLOR)+")")); - , + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("{");Com2nd("Setcolor("+color+")");//180722 + ); + Ltype=GetLinestyle(text(Noflg)+Ltype,name); + if((Noflg==0)&(color!=KCOLOR), //180904 + Texcom("}");//180722 + ); + , 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, @@ -2869,18 +3006,30 @@ RemoveOut(pltlist):=( GOUTLIST=tmp1; ); ); +////%RemoveOut end//// +////%ReadOutData start//// ReadOutData():=ReadOutData(Fnameout); ReadOutData(filename):=ReadOutData("",filename); //16.03.07 -ReadOutData(pathorg,filenameorg):=( +ReadOutData(path,filename):=ReadOutData(path,filename,[]);//181024(2lines) +ReadOutData(pathorg,filenameorg,options):=( //help:ReadOutData(); -//help:Readoutdata(); //help:ReadOutData("file.txt"); -//help:Readoutdata("file.txt"); //help:ReadOutData("/datafolder","file.txt"); -//help:Readoutdata("/datafolder","file.txt"); +//help:ReadOutdata(options=["Disp=n(/y)]"); regional(path,filename,varname,varL,ptL,pts,tmp,tmp1,tmp2,tmp3,tmp4, - nmbr,cmdall,cmd,cmdorg,outdt,goutdt); + nmbr,cmdall,cmd,cmdorg,outdt,goutdt,eqL,dispflg); + 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); + ); + ); //181024to path=pathorg; //16.03.07 from if(length(path)>0, setdirectory(path); @@ -2959,10 +3108,14 @@ ReadOutData(pathorg,filenameorg):=( setdirectory(Dirwork); // 16.03.07 ); print("readoutdata from "+tmp+" : "); - println(varL); + if(dispflg==1, //181024from + println(varL); + ); //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]); @@ -3026,7 +3179,9 @@ WriteOutData(filename,ptlist):=( Gstr=substring(Gstr,0,length(Gstr)-1)+"]"; println("writeoutdata "+filename+":"+Gstr); ); +////%WriteOutData end//// +////%Makeshell start//// Makeshell():=( if(length(Texmain)>0, Texparent=Texmain; @@ -3131,7 +3286,9 @@ Makeshell(texmainfile,flow):=( closefile(SCEOUTPUT); setdirectory(Dirwork); ); +////%Makeshell end//// +////%Convsjiswin start//// Convsjiswin(dir,fname,ext):=( //180401 regional(ctr,flg,mx,tmp); mx=200; @@ -3157,7 +3314,9 @@ Convsjiswin(dir,fname,ext):=( //180401 println(tmp+" not converted "+text(flg)); ); ); +////%Convsjiswin end//// +////%Makebat start//// Makebat():=( if(length(Texmain)>0, Texparent=Texmain; @@ -3247,8 +3406,11 @@ Makebat(texmainfile,flow):=( path=""; ); if(indexof(flow,"r")>0, - tmp=Dq+PathR+"\R"+Dq+" --vanilla --slave < execsrc.r";//180514 - // 17.09.14 + if(indexof(Dirwork,"Users")>0, //180917from + tmp=Dq+PathR+"\R"+Dq+" --vanilla --slave < execsrc.r";//180514 + , + tmp=Dq+PathR+"\R"+Dq+" --vanilla --slave < "+Fhead+".r"; + ); //180917to println(SCEOUTPUT,tmp); ); if(tex=="latex" % tex=="platex" % tex=="uplatex", //17.08.13 @@ -3296,7 +3458,9 @@ Makebat(texmainfile,flow):=( ); setdirectory(drive+Dirwork); ); +////%Makebat end//// +////%Addpackage start//// Addpackage(packorg):=( //help:Addpackage("bm"); //help:Addpackage(["bm","enumerate"]); @@ -3316,7 +3480,19 @@ Addpackage(packorg):=( ); ADDPACK=concat(ADDPACK,packL); //17.06.25to ); +////%Addpackage end//// + +////%Usegraphics start//// +Usegraphics(gpack):=( //180817 +//help:Usegrapchics("pict2e"); + if(!contains(ADDPACK,gpack), + Addpackage([gpack]); + ); + GPACK=gpack; +); +////%Usegraphics end//// +////%Viewtex start//// Viewtex():=( regional(texfile,tmp,tmp1,sep); texfile=Fhead+"main"; @@ -3331,13 +3507,15 @@ Viewtex():=( );//17.08.13until ); // 16.06.09until println(SCEOUTPUT,tmp); - if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0) , - //16.11.23,12.16 + if((indexof(PathT,"pdflatex")>0)%(indexof(PathT,"lualatex")>0) + %(GPACK=="pict2e"), //16.11.23,12.16,180817 if(indexof(PathT,"pdflatex")>0, println(SCEOUTPUT,"\usepackage[pdftex]{pict2e}");//16.11.24 , println(SCEOUTPUT,"\usepackage{pict2e}");//16.12.16 - println(SCEOUTPUT,"\usepackage{luatexja}");//16.12.18 + if(indexof(PathT,"lualatex")>0, //180817 + println(SCEOUTPUT,"\usepackage{luatexja}"); + ); ); tmp=replace(Dirhead,"\","/"); //17.10.30from tmp=replace(tmp,"scripts","tex/latex"); @@ -3394,7 +3572,9 @@ Viewtex():=( ); WritetoRS(2); //17.09.19 ); +////%Viewtex end//// +////%Viewparent start//// Viewparent():=( //17.04.13 if(!isexists(Dirwork,Texparent+".tex"), if(isstring(Texparent), @@ -3414,7 +3594,9 @@ Viewparent():=( //17.04.13 kc(); ); ); +////%Viewparent end//// +////%Makecmdlist start//// Makecmdlist(libname):=( //help:Makecmdlist("ketcindylib"); regional(cmdall,cmd,flg,tmp,tmp1,tmp2,out); @@ -3446,7 +3628,9 @@ Makecmdlist(libname):=( out=out_(2..tmp); out=sort(out); ); +////%Makecmdlist end//// +////%Savecmdlist start//// Savecmdlist(cmdlist,cmdfile):=( SCEOUTPUT=openfile(cmdfile+".cs"); forall(cmdlist, @@ -3454,7 +3638,9 @@ Savecmdlist(cmdlist,cmdfile):=( ); closefile(SCEOUTPUT); ); +////%Savecmdlist end//// +////%Quicksort start//// Quicksort(seq):=( regional(pivot,left,right,out); if(length(seq)<2, @@ -3476,7 +3662,9 @@ Quicksort(seq):=( ); out; ); +////%Quicksort end//// +////%Lessstr start//// Lessstr(st1,st2):=( regional(tmp,tmp1,tmp2,out); tmp=min(length(st1),length(st2)); @@ -3505,7 +3693,9 @@ Lessstr(st1,st2):=( ); out; ); +////%Lessstr end//// +////%Figpdf start//// Figpdf():=Figpdf(Texparent,[]); Figpdf(Arg1):=( if(isstring(Arg1), @@ -3624,7 +3814,9 @@ Figpdf(fnameorg,optionorg):=( ); FigPdfList; ); +////%Figpdf end//// +////%Makehelplist start//// Makehelplist(libname):=( regional(cmdall,cmd,flg,lev,tmp,tmp1,out); tmp=load(libname); @@ -3670,7 +3862,9 @@ Makehelplist(libname):=( ); sort(out); ); +////%Makehelplist end//// +////%Helplist start//// Helplist():=Helplist(Dirlib,["+","+3d"],"helpJ"); // 15.05.22 Helplist(Arg):=( @@ -3726,8 +3920,9 @@ Helplist(dir,files,help):=( ); // 16.12.31until setdirectory(Dirwork); ); +////%Helplist end//// - +////%Help start//// Help():=( forall(HLIST, println(#); @@ -3780,7 +3975,9 @@ Help(strorg):=( 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); @@ -3800,7 +3997,9 @@ Helpkey(str1,str2):=( Help(tmp); ); ); +////%Helpkey end//// +////%Slidework start//// Slidework():=Slidework(Dirwork); // 16.06.10 Slidework(dirorg):=( //help:Slidework(directory); @@ -3821,7 +4020,16 @@ Slidework(dirorg):=( 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"]; @@ -3848,7 +4056,9 @@ Setslidepage(list):=( // 16.12.22 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"]; @@ -3874,7 +4084,9 @@ Setslidemain(list):=( // 16.12.22 ); SlideColorList_11=SlideColorList_10; ); +////%Setslidemain end//// +////%Setslidebody start//// Setslidebody():=( // 17.03.05 regional(tmp1,tmp2,tmp3); tmp1=["letterc","style","thindense"]; @@ -3913,7 +4125,9 @@ Setslidebody(str,style,density):=( // 16.12.22,17.01.06,01.08 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]); ); @@ -3938,6 +4152,9 @@ Setslidehyper(driverorg,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; , @@ -3957,6 +4174,15 @@ Setslidehyper(driverorg,options):=( 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; @@ -3981,7 +4207,9 @@ Setslidehyper(driverorg,options):=( );//180524to ); ); //17.12.16to +////%Setslidehyper end//// +////%Settitle start//// Settitle(cmdL):=Settitle("",cmdL,[]); // 180608from Settitle(Arg1,Arg2):=( if(isstring(Arg1), @@ -4054,7 +4282,9 @@ Settitle(titleold,cmdL,options):=( ); TitleCmdL=concat(TitleCmdL,["\end{layer}","","}"]); ); +////%Settitle end//// +////%Maketitle start//// Maketitle():=( if(!isstring(TitleName), //17.04.13from drawtext(mouse().xy,"Settitle not defined", @@ -4065,7 +4295,7 @@ Maketitle():=( ); Maketitle(name):=( //help:Maketitle(); - regional(texfile,texmain,tmp,tmp1,sep); + regional(texfile,texmain,tmp,tmp1,sep,txtfile); texfile=name; texmain=name+"main"; SCEOUTPUT=openfile(texfile+".tex"); @@ -4125,8 +4355,35 @@ Maketitle(name):=( 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::(title)//"); + println(SCEOUTPUT,"\slidepage[m]//"); + println(SCEOUTPUT,""); + println(SCEOUTPUT,"%%%%%%%%%%%%%%%%//"); + println(SCEOUTPUT,"new::(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 @@ -4187,7 +4444,7 @@ Repeatsameslide(repeatflg,sestr,addedL):=( 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}");//17.08.23 + println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}%");//180701 println(SCEOUTPUT,str); println(SCEOUTPUT,"}%"); , @@ -4206,7 +4463,7 @@ Repeatsameslide(repeatflg,sestr,addedL):=( ); if(NonThinFlg==1, if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 - println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}");//17.08.23 + println(SCEOUTPUT,"{\color[cmyk]{\thin,\thin,\thin,\thin}%");//180701 println(SCEOUTPUT,str); , println(SCEOUTPUT,str); @@ -4237,7 +4494,7 @@ Repeatsameslide(repeatflg,sestr,addedL):=( if(NonThinFlg==0, if(!contains(["\begi","\end{"],substring(str,0,5)),//180526from if(MiniFlg==0, - tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}";//17.08.23 + tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}%";//180701 tmp1=[tmp1,str,"}%"]; , tmp1=[str]; @@ -4255,7 +4512,7 @@ Repeatsameslide(repeatflg,sestr,addedL):=( ); if(NonThinFlg==1, if(!contains(["\begi","\end{"],substring(str,0,5)),//17.01.15 - tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}";//17.08.23 + tmp1="{\color[cmyk]{\thin,\thin,\thin,\thin}%";//180701 tmp1=[tmp1,str]; , tmp1=[str]; @@ -4283,7 +4540,9 @@ Repeatsameslide(repeatflg,sestr,addedL):=( ); );//16.12.05to ); +////%Repeatsameslide end//// +////%Presentation start//// Presentation(texfile):=Presentation(texfile,texfile); Presentation(texfile,txtfile):=( //help:Presentation(texfile,txtfile); @@ -4429,9 +4688,12 @@ Presentation(texfile,txtfile):=( 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=blue}}");//189524to + println(SCEOUTPUT,"\end{layer}\hypersetup{linkcolor="+LinkColor+"}"); + println(SCEOUTPUT,"");//180908 + println(SCEOUTPUT,"}");//189524to forall(ADDPACK,// 16.06.09from println(SCEOUTPUT,"\usepackage"+#); );// 16.06.09to @@ -4444,8 +4706,20 @@ Presentation(texfile,txtfile):=( forall(tmp3, println(SCEOUTPUT,#); ); - if(indexof(PathT,"platex")>0,tmp="\ketmarginJ",tmp="\ketmarginE"); // 16.06.09 + 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 @@ -4571,10 +4845,12 @@ Presentation(texfile,txtfile):=( 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); , @@ -4930,7 +5206,9 @@ Presentation(texfile,txtfile):=( println(SCEOUTPUT,"\end{document}"); closefile(SCEOUTPUT); ); +////%Presentation end//// +////%Mkslides start//// Mkslides():=( regional(sep,parent,texparentorg,tmp,tmp1,tmp2,tmp3,tmp4,flg); tmp4=Fhead; @@ -4994,7 +5272,9 @@ Mkslides():=( Fhead=tmp4; Texparent=texparentorg;//17.04.10 ); +////%Mkslides end//// +////%Mkslidesummary start//// Mkslidesummary():=( // 17.10.26 for R regional(texparentorg); texparentorg=Texparent; @@ -5059,7 +5339,9 @@ Mkslidesummary(inputfile,outputfile,options):=( kc(); Changework(dirworkorg);//17.04.10 ); +////%Mkslidesummary end//// +////%Example start//// Example(exorg):=Example(exorg,""); Example(exorg,suborg):=( //help:Example("Mxfun","diff"); @@ -5085,7 +5367,9 @@ Example(exorg,suborg):=( ); ); ); +////%Example end//// +////%BBdata start//// BBdata():=Bbdata(BBTarget,0); BBdata(fname):=Bbdata(fname,0); // 16.04.09 BBdata(fname,optionorg):=( @@ -5226,6 +5510,7 @@ BBdata(fname,optionorg):=( // setdirectory(Dirwork); tmp2; // 16.04.25 ); +////%BBdata end//// //help:end(); diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpE.txt b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpE.txt index 9a7edb2e99f..a5e5e8fc693 100755 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpE.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpE.txt @@ -1,4 +1,2 @@ //help:start(); -//help:Moviedata*(generate movie/para data); -//help:Paraamble*(Define preamble and postamble); //help:end(); diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpJ.txt b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpJ.txt index 354d6596a77..a5e5e8fc693 100755 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpJ.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvhelpJ.txt @@ -1,4 +1,2 @@ //help:start(); -//help:Moviedata*(movieデータを定義 -//オプション : "Cut=1秒のコマ数(20)", "Div=全体のコマ数(80)"); //help:end(); diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvlogr.txt b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvlogr.txt index e79262aa42c..3b86853918f 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvlogr.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvlogr.txt @@ -1,3 +1,12 @@ +// 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) diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvr.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvr.cs index e2d256595ef..96e79b3f532 100755 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvr.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindylibmvr.cs @@ -14,7 +14,7 @@ // along with this program. If not, see // -println("ketcindymv(20180615) loaded"); +println("ketcindymv(20180711) loaded"); //help:start(); @@ -24,11 +24,12 @@ 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=["m/r","Div=25"]); +//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=["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; @@ -66,15 +67,12 @@ Setpara(pathorg,fstr,sL,options,optionsanim):=( COM2ndlistback=COM2ndlist; Dirworkbkup=Dirwork; //0611from Dirworksubbkup=Dirwork+pathsep()+ParaPath; - Changework(Dirworksubbkup); - Changework(Dirworkbkup); 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)); -// forall(tmp1,nn, tmp2=append(tmp2,nn); flg=0; tmp=min([nn+40,length(gtmp)]); @@ -112,9 +110,7 @@ Parafolder(fstr,sL,optionorg):=( //help:Paraslide(para=folder:layery:pos:input,scale); //help:Paraslide(para=folder:layery:pos:include:[width=100]); regional(nn,tmp,tmp1,tmp2,strL,eqL,waiting,outflg,pause, - mkr,mktex,options,sfL,dirbkup,fbkup,pfile,ctr,flg,varL); - Changework(Dirworkbkup); - Setfiles(Fheadbkup); + mkr,mktex,options,sfL,dirbkup,pfile,ctr,flg,varL,waitingR,timeC,timeR); tmp=indexof(fstr,"("); tmp1=substring(fstr,tmp,length(fstr)); tmp=indexof(tmp1,")"); @@ -127,7 +123,7 @@ Parafolder(fstr,sL,optionorg):=( if(length(strL)==0,options=append(options,"m")); mkr="A"; mktex="A"; - waiting=20; + waiting=30; outflg=0; pause=10; forall(eqL, @@ -153,10 +149,12 @@ Parafolder(fstr,sL,optionorg):=( 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; @@ -164,21 +162,17 @@ Parafolder(fstr,sL,optionorg):=( tmp="000000"+text(ctr); pfile="p"+substring(tmp,length(tmp)-3,length(tmp)); Setfiles(pfile); - Changework(Dirworksubbkup); Movieframe(#); - Changework(Dirworksubbkup);//180608 ctr=ctr+1; ); CommonMake=-1;//180609 - Setfiles(fbkup); + Setfiles(Fheadbkup);//180617 + timeC=seconds();//180617 ); //180606to wait(pause); //180610 -// Changework(Dirworkbkup); sfL=[]; ctr=1; forall(1..(length(sL)),nn, - Changework(Dirworkbkup);//180611(2lines) - Setfiles(Fheadbkup); GLIST=GLISTback; GCLIST=GCLISTback; GOUTLIST=GOUTLISTback; @@ -191,18 +185,17 @@ Parafolder(fstr,sL,optionorg):=( COM2ndlist=COM2ndlistback; tmp="000000"+text(nn); pfile="p"+substring(tmp,length(tmp)-3,length(tmp)); - Setfiles(pfile); Changework(Dirworksubbkup); + Setfiles(pfile); sfL=append(sfL,FnameR); if(outflg==1, - Changework(Dirworksubbkup);//180606 - Setfiles(pfile); //180610(2lines) wait(pause); Movieframe(sL_nn); Changework(Dirworksubbkup);//180606 ctr=ctr+1; , Movieframe(sL_nn); + timeC=seconds();//180617 ); CommonMake=0;//180609 Setfiles(pfile); //180608 @@ -213,8 +206,7 @@ Parafolder(fstr,sL,optionorg):=( ); ); wait(pause); //180610 - Setfiles(fkbkup); - Changework(Dirworksubbkup); + Setfiles(Fheadbkup); GLIST=select(GLIST,indexof(#,"Projpara")==0); tmp1=replace(Dirworksubbkup,"\\","/"); //180611 tmp1=replace(tmp1,"\","/"); @@ -250,7 +242,7 @@ Parafolder(fstr,sL,optionorg):=( if(ErrFlag!=-1, waiting=min([waiting,8])*length(ParaSL); //180610 if(!isexists(Dirworksubbkup,Fnametex) % mktex=="Y", - CalcbyR("",cmdL,["Cat=n","m","Wait="+text(waiting)]); + CalcbyR("",cmdL,["Cat=n","m","Wait="+text(waitingR)]); , println("Parafolder finished"); ); @@ -258,6 +250,12 @@ Parafolder(fstr,sL,optionorg):=( parse(after); ); ); + 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); ); @@ -304,6 +302,7 @@ Animatefile(path,folder):=( tmp1=fileslist(tmp); tmp1=tokenize(tmp1,","); tmp1=select(tmp1,indexof(#,".tex")>0); + tmp1=sort(tmp1); //180617 texfiles=[];//180609from forall(tmp1, tmp=indexof(#,"."); @@ -580,6 +579,7 @@ Mkflipanime(path,folder):=( tmp=fileslist(Dirwork+pathsep()+folder); tmp=tokenize(tmp,","); tmp1=select(tmp,indexof(#,".tex")>0); //180609from + tmp1=sort(tmp1);//180617 texfiles=[]; forall(tmp1, tmp=indexof(#,"."); diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutlogr.txt b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutlogr.txt index 9c96a1c1f82..aa7eb97c1e9 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutlogr.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutlogr.txt @@ -1,3 +1,26 @@ +// 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) diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutr.cs b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutr.cs index 5fbe676f93e..8f6a399f617 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutr.cs +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketcindyliboutr.cs @@ -14,7 +14,7 @@ // along with this program. If not, see // -println("ketcindylibout(20180612 loaded"); +println("ketcindylibout(20181029 loaded"); //help:start(); @@ -1296,6 +1296,7 @@ Writecsv(nmL,dataorg,file,optionorg):=( closefile(SCEOUTPUT); ); +////%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"]]); @@ -1359,7 +1360,7 @@ HatchdataR(nm,iostr,pltlist,optionorg):=( //17.09.18 tmp=[tmp1,tmp2]; tmp=concat(tmp,reL); cmdL=concat(cmdL,[ - "Setscaling",[SCALEY], + "Setscaling",[SCALEX,SCALEY], //181020 "Setunitlen",[Dq+ULEN+Dq], name+"=Hatchdata",tmp, //16.12.23 "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name] @@ -1380,7 +1381,9 @@ HatchdataR(nm,iostr,pltlist,optionorg):=( //17.09.18 ); ); ); +////%HatchdataR end//// +////%PlotdataR start//// PlotdataR(name1,func,var):=PlotdataR(name1,PathR,func,var); PlotdataR(name1,Arg1,Arg2,Arg3):=( if(islist(Arg3), @@ -1454,6 +1457,7 @@ PlotdataR(name1,path,func,variable,optionorg):=( tmp2; ); ); +////%PlotdataR end//// PlotdiscR(nm,fun,varrng):=PlotdiscR(nm,fun,varrng,[]); PlotdiscR(nm,fun,varrng,options):=( @@ -1609,34 +1613,34 @@ Boxplot(nm,dataorg,ypos,dy,optionorg):=( pstr="["; tmp1=[bp_1,ypos-dy/2]; tmp2=[bp_1,ypos+dy/2]; - Listplot(name+text(1),[tmp1,tmp2],["Msg=no"]); + 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],["Msg=no"]); + 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],["Msg=no"]); + 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],["dr,2","Msg=no"]); + 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],["da","Msg=no"]); + 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],["da","Msg=no"]); + 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,[0,"Size=4"]); + Pointdata(name+text(1),out,concat(options,[0,"Size=4"])); ); pstr=substring(pstr,0,length(pstr)-1)+"]"; println("generate totally "+name); @@ -1824,43 +1828,53 @@ Histplot(nm,dataorg,optionorg):=( ); ); -Scatterplot(nm,file):=Scatterplot(nm,file,[]); -Scatterplot(nm,file,optionorg):=( -//help:Scatterplot("1",path+filename); -//help:Scatterplot(options=["Reg=yes",A,B,C,"Size"=4"]); - regional(tmp,tmp1,tmp2,fname,name,reg,eqL,reL,cdysize, - options,dtx,dty,nn,mx,my,sx,sy,sxy,rr,aa,bb,size); +////%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; - reL=tmp_6; - options=remove(options,reL); - cdysize=select(options,indexof(#,"size->")>0); - options=remove(options,cdysize); - size=4; - reg="yes"; + 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=tmp2; + 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(indexof(file,".")==0, - fname=file+".csv"; + if(isstring(file), //181013 + if(indexof(file,".")==0, + fname=file+".csv"; + , + fname=file; + ); + tmp=Readcsv(fname,strL);//181013from , - fname=file; + tmp=file; ); - Readcsv(nm,fname); - tmp=concat(options,cdysize); - Pointdata(name,parse("rc"+nm),append(tmp,"Size="+text(size))); + parse("rc"+nm+"="+tmp); //181013to + Pointdata(name,parse("rc"+nm),options); tmp=parse("rc"+nm); dtx=apply(tmp,#_1); dty=apply(tmp,#_2); @@ -1873,29 +1887,44 @@ Scatterplot(nm,file,optionorg):=( 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!="no", - Plotdata(name,tmp,"x",append(options,"Num=2")); + if(reg!="n", + Plotdata(name,tmp,"x",tmp1); ); - if(length(reL)>=2, - Framedata2(name,[reL_1,reL_2]); - if(length(reL)>2, - tmp="r="+textformat(rr,3)+",\ y="; - tmp=tmp+textformat(aa,3)+"x"; - if(bb>0,tmp=tmp+"+",tmp=tmp+"-"); - tmp=tmp+textformat(abs(bb),3); - Expr([reL_3,"e",tmp]); - ); + 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(pt,hscale,vscale):=Rulerscale(pt,hscale,vscale,0.1); -Rulerscale(pt,hscale,vscale,tick):=( +////%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,tmp,tmp1,tmp2,tmp3); + regional(pA,pos,mrk,dir,mag,tmp,tmp1,tmp2,tmp3); pA=Lcrd(pt); if(length(hscale)>0, pos=[]; mrk=[]; dir=[]; @@ -1906,9 +1935,10 @@ Rulerscale(pt,hscale,vscale,tick):=( 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); - mrk=apply(pos,text(#)); + pos=apply(0..tmp,tmp1+#*tmp3);//181014 + mrk=apply(pos,text(#*mag)); dir=apply(1..length(pos),"s2"); , forall(2..(length(hscale)-2), @@ -1939,10 +1969,10 @@ Rulerscale(pt,hscale,vscale,tick):=( ); pos=apply(pos,[#,pA_2]); forall(1..length(pos), - Expr([pos_#,dir_#,mrk_#]); + Expr([pos_#,dir_#,mrk_#],options); tmp1=pos_#; - tmp2=pos_#-[0,tick/SCALEY]; - Listplot("rsh"+text(#),[tmp1,tmp2],["Msg=no"]); + tmp2=pos_#-Unscaling([0,tick]); //181017 + Listplot("rsh"+text(#),[tmp1,tmp2],concat(options,["Msg=no"])); ); ); if(length(vscale)>0, @@ -1954,9 +1984,10 @@ Rulerscale(pt,hscale,vscale,tick):=( 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(#)); + mrk=apply(pos,text(#*mag)); //181014 dir=apply(1..length(pos),"w2"); , forall(2..(length(vscale)-2), @@ -1987,13 +2018,14 @@ Rulerscale(pt,hscale,vscale,tick):=( ); pos=apply(pos,[pA_1,#]); forall(1..length(pos), - Expr([pos_#,dir_#,mrk_#]); + Expr([pos_#,dir_#,mrk_#],options); tmp1=pos_#; - tmp2=pos_#-[tick/SCALEX,0]; - Listplot("rsv"+text(#),[tmp1,tmp2],["Msg=no"]); + tmp2=pos_#-Unscaling([tick,0]); //181017 + Listplot("rsv"+text(#),[tmp1,tmp2],concat(options,["Msg=no"])); ); ); ); +////%Rulerscale end//// MkprecommandS():=MkprecommandS(6); MkprecommandS(prec):=( @@ -2244,7 +2276,7 @@ Dotfilldata(nm,iostr,pltlist,optionorg):=( tmp=[tmp1,tmp2]; tmp=concat(tmp,dense); cmdL=concat(cmdL,[ - "Setscaling",[SCALEY], + "Setscaling",[SCALEX,SCALEY], //181020 "Setunitlen",[Dq+ULEN+Dq], name+"=Dotfilldata",tmp, "WriteOutData",[Dq+fname+Dq,Dq+name+Dq,name], @@ -3537,15 +3569,15 @@ Mkviewobj(pathorg,fnameorg,cmdLorg,optionorg):=( cmdlist=MkprecommandR(); cmdlist=concat(cmdlist,["Openobj",[Dq+path+fname+Dq]]); cmdlist=concat(cmdlist,cmdL); - tmp=["Closeobj()",[],"ans="+Dq+"||||"+Dq,[]];//16.12.26 + tmp=["Closeobj()",[],""+Dq+"||||"+Dq,[]];//16.12.26 cmdlist=concat(cmdlist,tmp); tmp=append(options,"Cat=y"); tmp1=apply(tmp,Toupper(substring(#,0,1))); // 16.04.23from tmp1=select(tmp1,#=="W"); if(length(tmp1)==0, tmp=append(tmp,"Wait=5"); - );// 16.04.23until - CalcbyR("ans",cmdlist,tmp); + );// 16.04.23to + CalcbyR("",cmdlist,tmp); //180902 wait(WaitUnit*100); // 16.03.18 , vtx=cmdL_1; @@ -3587,14 +3619,20 @@ Mkviewobj(pathorg,fnameorg,cmdLorg,optionorg):=( ); ); -SetObj(str):=Objname(str,["m","v"]); //17.01.12 -SetObj(str,options):=Objname(str,options); //17.01.12 -Objnameoptions(str,options):=Objname(str,options);// 16.11.29 -Objname(str):=Objname(str,["m","v"]); // 16.11.29 -Objname(str,optionsorg):=( -//help:Objname("sample"); -//help:Objname(options=["m","v"]); +//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(["m","v"]); //help:Setobj("sample"); +//help:Setobj("sample",options); //help:Setobj(options=["m","v"]); regional(options); if(length(str)>0, @@ -3606,7 +3644,7 @@ Objname(str,optionsorg):=( , OCOPTION=["m","v"]; ); //17.12.23until - println([OCNAME,OCOPTION]); + println("generate OBJCMD. name="+OCNAME+", option="+OCOPTION); ); Mkobjcmd(nm,fd):=Mkobjcmd(nm,fd,[40,40,"+"]); @@ -4204,7 +4242,7 @@ Mkobjsymbcmd(path,symborg,size,rot,dir,pos,optionorg):=( tmp2=append(tmp2,tmp); ); parse("oc"+symborg+"="+tmp2); - println("cmd seq oc"+symborg+" generated"); // 16.06.10until +// println("cmd seq oc"+symborg+" generated"); // 16.06.10until OBJCMD=concat(OBJCMD,out);//16.11.29 out; ); @@ -4820,6 +4858,9 @@ ConvertFdtoC(Fd,name):=( FdC=concat(FdC,[tmp1_6]); ); +Startsurf():=StartsurfC(); +Startsurf(Arg):=StartsurfC(Arg); +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); @@ -4839,11 +4880,11 @@ StartsurfC(Arg):=( ); ); StartsurfC(restr,Nplist,Dsizelist,Epslist):=(//180501 -//help:StartsurfC(); -//help:StartsurfC("reset"); -//help::StartsurfC([0.01,0.1]); -//help:StartsurfC([50,50],[1500,500,200],[0.01,0.1]); -//help:StartsurfC([50],[1500,500],[0.01,0.1]); +//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); CommandListC=[];//180608(2lines) FuncListC=[]; @@ -5721,8 +5762,6 @@ CalcbyC(name,path,cmd,optionorg):=( waiting=40; wfile=Fhead+name+"end.txt"; //180517 hfile=Fhead+name+"header.h"; - println(Dirwork); - println(hfile); mfile=Fhead+name+".c"; wflg=0; forall(eqL, @@ -5815,7 +5854,9 @@ CalcbyC(name,path,cmd,optionorg):=( ExeccmdC(nm):=ExeccmdC(nm,[],["do"]); //180531 ExeccmdC(nm,options):=ExeccmdC(nm,options,["do"]); ExeccmdC(nm,optionorg,optionhorg):=( -//help:ExeccmdC("1",["m/r","Wait=30"],["do"]); +//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,tmp,tmp1,tmp2,flg,wflg,varL); fname=Fhead+nm+".txt"; @@ -5861,6 +5902,7 @@ ExeccmdC(nm,optionorg,optionhorg):=( 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 CommandListC=prepend(" char fnameall[]="+Dqq(fname)+";",CommandListC); CommandListC=prepend(" printf("+Dqq("%s\n")+","+Dqq(Fhead)+");",CommandListC); //180608 tmp=select(CommandListC,indexof(#,"outputend")>0); @@ -5874,7 +5916,7 @@ ExeccmdC(nm,optionorg,optionhorg):=( if(ErrFlag==1, err("CommandListC is empty or execcmd is not completed"); , - varL=ReadOutData(fname); + varL=ReadOutData(fname,["Disp=n"]); //181029 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); tmp1=select(varL,indexof(#,"h3d")==0); tmp2=remove(varL,tmp1); @@ -5906,13 +5948,15 @@ ExeccmdC(nm,optionorg,optionhorg):=( varL; ); +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,[],["nodisp"]); SfbdparadataC(nm,fd,options):= SfbdparadataC(nm,fd,options,["nodisp"]); SfbdparadataC(nm,fdorg,optionorg,optionsh):=( -//help:SfbdparadataC("1",Fd); -//help:SfbdparadataC(options2=["c(default)/r/m"]); +//help:Sfbdparadata("1",Fd); regional(funnm,fd,options,name2,name3,name2h,name3h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,cmdflg); if(ChNumber==0,ChNumber=Ch); @@ -5989,7 +6033,7 @@ SfbdparadataC(nm,fdorg,optionorg,optionsh):=( if(ErrFlag==1, err("Sfbdparadata not completed"); , - ReadOutData(fname); + ReadOutData(fname,["Disp=n"]); //181029 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; @@ -6017,14 +6061,16 @@ SfbdparadataC(nm,fdorg,optionorg,optionsh):=( ); ); +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,[],["nodisp"]); CrvsfparadataC(nm,fk,sfbd,fd,options):= - SfbdparadataC(nm,fk,sfbd,fd,options,["nodisp"]); + CrvsfparadataC(nm,fk,sfbd,fd,options,["nodisp"]); CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionsh):=( -//help:CrvsfparadataC("1","ax3d","sfbd3d1",Fd); -//help:CrvsfparadataC(options2=["c(default)/r/m"]); -//help:CrvsfparadataC(optionsh=["nodisp"]); +//help:Crvsfparadata("1","ax3d","sfbd3d1",Fd); regional(funnm,sfbd,fd,options,name2,name3,name2h,name3h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdlfg); eps=10^(-5); @@ -6117,7 +6163,7 @@ CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionsh):=( if(ErrFlag==1, err("Crvsfparadata not completed"); , - ReadOutData(fname); + ReadOutData(fname,["Disp=n"]); //181029 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; @@ -6145,12 +6191,16 @@ CrvsfparadataC(nm,Fk,sfbdorg,fdorg,optionorg,optionsh):=( ); ); +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,[],["nodisp"]); Crv3onsfparadataC(nm,crv3d,sfbd,fd,options):= Crv3onsfparadataC(nm,crv3d,sfbd,fd,options,["nodisp"]); Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh):=( -//help:Crv3onsfparadataC("1","sc3","sfbd3d1",fd); +//help:Crv3onsfparadata("1","sc3","sfbd3d1",fd); regional(funnm,sfbd,fd,options,name3,name3h,name2,name2h,waiting, eqL,reL,strL,fname,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdflg); tmp1=replace(crv3d,"3d","2d"); @@ -6249,7 +6299,7 @@ Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh):=( if(ErrFlag==1, err("Crvonsfparadata not completed"); , - ReadOutData(fname); + ReadOutData(fname,["Disp=n"]); GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); if(islist(parse(name3)), tmp1=name2+"=Projpara("+Dqq(name3)+",["; @@ -6277,12 +6327,16 @@ Crv3onsfparadataC(nm,crv3d,sfbdorg,fdorg,optionorg,optionsh):=( ); ); +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:Crv2onsfparadataC("1","gp1","sfbd3d1",fd); +//help:Crv2onsfparadata("1","gp1","sfbd3d1",fd); regional(fd,uname,vname,str,tmpfun,ii,jj,crv3d,tmp,tmp1,tmp2); Changestyle3d(crv2d,["nodisp"]); crv3d=crv2d+"3d"; @@ -6304,12 +6358,16 @@ Crv2onsfparadataC(nm,crv2d,sfbd,fdorg,options,optionsh):=( Crv3onsfparadataC(nm,crv3d,sfbd,fdorg,options,optionsh); ); +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,[],["nodisp"]); WireparadataC(nm,sfbd,fd,wr1,wr2,options):= WireparadataC(nm,sfbd,fd,wr1,wr2,options,["nodisp"]); WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh):=( -//help:WireparadataC("1","sfbd3d1",fd,5,5); +//help:Wireparadata("1","sfbd3d1",fd,5,5); regional(funnm,fd,options,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); @@ -6396,6 +6454,7 @@ WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh):=( tmp=replace(tmp,"fname","fnameall"); cmdL_8=tmp; cmdL_7=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; cmdL=append(cmdL," outputend(dirfname);"); + cmdL=remove(cmdL,[cmdL_3,cmdL_4]); //180827 CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); @@ -6407,7 +6466,7 @@ WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh):=( if(ErrFlag==1, err("Wireparadata not completed"); , - ReadOutData(fname); + ReadOutData(fname,["Disp=n"]); GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); ReadOutData(fnameh); GLIST=append(GLIST,"ReadOutData("+Dqq(fnameh)+")"); @@ -6437,6 +6496,10 @@ WireparadataC(nm,sfbd,fdorg,wr1,wr2,optionorg,optionsh):=( ); ); +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), @@ -6446,7 +6509,7 @@ IntersectcrvsfC(nm,crv,fd,Arg):=( ); ); IntersectcrvsfC(nm,crv3d,fdorg,bdyeq,optionorg):=( -//help:IntersectcrvsfC("1",curve,fd); +//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); @@ -6527,20 +6590,24 @@ IntersectcrvsfC(nm,crv3d,fdorg,bdyeq,optionorg):=( if(ErrFlag==1, err("Intersectcrvsf not completed"); , - ReadOutData(fname); + ReadOutData(fname,["Disp=n"]); //181029 ); println("generate "+name); parse(name); ); ); +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,[],["nodisp"]); ); SfcutparadataC(nm,cutfunL,sfbd,fd,options):= SfcutparadataC(nm,cutfunL,sfbd,fd,options,["nodisp"]); SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh):=( -//help:SfcutparadataC("1","2*x+3*y+z=1","sfbd3d",fd); +//help:Sfcutparadata("1","2*x+3*y+z=1","sfbd3d",fd); regional(funnm,cutfunL,fd,options,name2,name3,name2h,name3h,waiting, eqL,reL,strL,fname,fnameh,tmp,tmp1,tmp2,flg,wflg,flg,ii,jj,eps,cmdflg); eps=10^(-5); @@ -6608,6 +6675,7 @@ SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh):=( tmp=replace(tmp,"fname","fnameall"); cmdL_6=tmp; cmdL_5=" readoutdata3(fnameall,"+Dqq(sfbd)+",sfbd);"; cmdL=append(cmdL," outputend(dirfname);"); + cmdL=remove(cmdL,[cmdL_1,cmdL_2]); //180827 CommandListC=concat(CommandListC,cmdL); //180531to , if(wflg==1,tmp1=append(options,"m")); @@ -6619,7 +6687,7 @@ SfcutparadataC(nm,cutfunLorg,sfbd,fdorg,optionorg,optionsh):=( if(ErrFlag==1, err("Sfcutparadata not completed"); , - ReadOutData(fname); + ReadOutData(fname,["Disp=n"]); //1810209 GLIST=append(GLIST,"ReadOutData("+Dqq(fname)+")"); ReadOutData(fnameh); GLIST=append(GLIST,"ReadOutData("+Dqq(fnameh)+")"); diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent.r b/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent.r index 840f076cf8e..160710e857b 100755 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent.r +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent.r @@ -16,10 +16,54 @@ ######################################### -ThisVersion<- "KeTpic for R v5_2_4(20180615)" +ThisVersion<- "KeTpic for R v5_2_4(20181024)" print(ThisVersion) +# 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 @@ -428,8 +472,8 @@ print(ThisVersion) XMIN<- -5 XMAX<- 5 YMIN<- -5 ; YMAX<- 5 -ZIKU<- "line" -ARROWSIZE<- 1 +ZIKU<- "l" +#ARROWSIZE<- 1 XNAME<- "$x$" XPOS<- "e" YNAME<- "$y$" @@ -475,8 +519,8 @@ Ketinit<- function(){ XMIN<<- -5 XMAX<<- 5 YMIN<<- -5 ; YMAX<<- 5 -ZIKU<<- "line" -ARROWSIZE<<- 1 +ZIKU<<- "l" +#ARROWSIZE<<- 1 XNAME<<- "$x$" XPOS<<- "e" YNAME<<- "$y$" @@ -916,11 +960,12 @@ Arrowdata<- function(...) ###################################### +# 2018.10.19 for new basic1.cs # 2013.11.13 No Intersect debugged -Arrowhead<-function(...) -{ ## Scaling is implemented - ## 12.01.08 Kirikomi +Arrowhead<-function(...){ + ## Scaling is implemented +  ## 12.01.08 Kirikomi Eps=10^(-3) varargin<-list(...) Nargs<-length(varargin) @@ -959,60 +1004,56 @@ Arrowhead<-function(...) } Ookisa<-1000/2.54/MilliIn*Ookisa Theta<-Hiraki*pi/180 + P<- Doscaling(P) + Houkou<- Doscaling(Houkou) if(Nrow(Houkou)>1){ - P<- Doscaling(P) - Houkou<- Doscaling(Houkou) - Tmp<-Nearestpt(P,Houkou) - A<-Tmp[[1]] + Tmp<-Nearestpt(P,Houkou) #181019 (2lines) + P<- Tmp[[1]] I<-floor(Tmp[[2]]) if(I==1){# 180511 if(Norm(Ptend(Houkou)-Ptstart(Houkou))0){ - Flg<- 1 - break + 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 } - 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 + P<- P-0.5*Ookisa*cos(Theta)*Ev } if(length(grep("b",Str))>0){ - P<-P-Ookisa*cos(Theta)*Ev + 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 + 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<-Listplot(list(A,P,B)) + 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<- Listplot(list(A,P,B,C,A)) # 12.01.07 + Tmp<- matrix(c(A,P,B,C,A),ncol=2,byrow=TRUE) #181019(2lines) Tmp1<- Unscaling(Tmp) Shade(Tmp1) - Tmp=Listplot(c(A,P,B,C,A,P)) # 15.6.20 + 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 } @@ -1151,14 +1192,17 @@ Arrowline<- function(...) 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("+","-","*","/","(",")","=","<",">",""," ") + opv=c("+","-","*","/","(",")","=","<",">",""," ",",") #180812 out="" start=1 Tmp=gregexpr(vname,str,fixed=TRUE) @@ -1166,15 +1210,16 @@ Assign<- function(...){ if(min(Vp)>0){ for(j in Vp){ if(j==1){bf=""}else{bf=substring(str,j-1,j-1)} - if(j==nchar(str)){af=""}else{af=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) + 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+1 + start=j+nchar(vname) #180812 } } out=paste(out,substring(str,start,nchar(str)),sep='') @@ -1261,13 +1306,21 @@ Assign<- function(...){ } } } + +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){ + if(Nrow(Val)==1){ for (K in Looprange(1,length(Val))){ - Tmp<- paste(Vname,"[", as.character(K),"]",sep="") + 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="") } @@ -2373,24 +2426,69 @@ Drwpt<-function(...) ###################################################### -Drwxy<-function(...) -{ +Drwxy<-function(...){ #180820 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) + 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(XMIN,GENTEN[2]),c(XMAX,GENTEN[2]))) - Drwline(Listplot(c(GENTEN[1],YMIN),c(GENTEN[1],YMAX))) + 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(XMAX,GENTEN[2]),XPOS,XNAME) - Letter(c(GENTEN[1],YMAX),YPOS,YNAME) - Letter(GENTEN,OPOS,ONAME); + 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 } ########################################## @@ -3016,7 +3114,8 @@ Hatchdata<- function(...) ShaL<- list() Nargs<- length(varargin) Kakudo<- 45 - Kankaku<- 0.125*1000/2.54/MilliIn +# 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)) @@ -3034,7 +3133,7 @@ Hatchdata<- function(...) Kakudo<- varargin[[N+1]] if(N==Nargs-2) { - Kankaku<- 0.125*varargin[[Nargs]] + Kankaku<- Kankaku*varargin[[Nargs]] #180716 } } NaitenL<- varargin[[1]] @@ -3944,19 +4043,19 @@ Kyoukai<- function(...) Eps<- 10.0^(-4) #17.09.24 PLall<- list() Sflg<- 0 - N<- length(DataL) + 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){ - Rg<-Tmp ; Nd<-length(Data)-1 + 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 + Rg<- Tmp ; Nd<- Length(Data)-1 #180621 } else{ - Rg<- "c" ; Nd<-length(Data) + Rg<- "c" ; Nd<- Length(Data) #180621 } } for (J in Looprange(1,Nd)){ @@ -3977,7 +4076,7 @@ Kyoukai<- function(...) P<- Ptstart(Tmp) Q<- Ptend(Tmp) if(Norm(P2-P)>Eps && Norm(P2-Q)>Eps){ - Tmp< Length(PL) + Tmp< Length(PL) #180621 PL<-PL[Tmp:1,] Pfirst<- Ptstart(PL) Plast<- Ptend(PL) @@ -3986,11 +4085,11 @@ Kyoukai<- function(...) } else{ if(Norm(P1-Plast)Eps){ - Np<- Length(PL) + Np<- Length(PL) #180621 if(Rg=="c"){ Tmp<- Appendrow(PL,Pfirst) PL<- Tmp @@ -4046,7 +4145,7 @@ Kyoukai<- function(...) Tmp<- Appendrow(Tmp,Q) PL<- Appendrow(Tmp,Pfirst) } - else if(mode(Rg)=="numeric" && Nrow(Rg)==1 && length(Rg)>1){ + else if(mode(Rg)=="numeric" && Nrow(Rg)==1 && Length(Rg)>1){ #180621 Tmp<- Kukeiwake(PL) Tmp1<- Op(1,Tmp) Tmp2<- Naigai(Rg,list(Tmp1)) @@ -4058,7 +4157,7 @@ Kyoukai<- function(...) } } } - Tmp<- Ptstart(PL) + Tmp<- matrix(Ptstart(PL),nrow=1) #180621 for (J in Looprange(2,Length(PL))){ P<- Op(J,PL) Q<- Op(Length(Tmp),Tmp) @@ -4070,7 +4169,7 @@ Kyoukai<- function(...) PL<-Tmp PLall<-c(PLall,list(PL)) } - if(length(PLall)==1 && Sflg==0){ + if(Length(PLall)==1 && Sflg==0){ Tmp<- Op(1,PLall) # Tmp<- Op(1,Tmp) if(Norm(Ptstart(Tmp)-Ptend(Tmp))>Eps0){ @@ -4249,34 +4348,27 @@ V<- Mag/Norm(B-A)*(B-A) ## 10.12.04 from here ################################ -Listplot<-function(...) -{ +Listplot<-function(...){ varargin<-list(...); Z<-c(); - for (I in 1:length(varargin)) - { + 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) + 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 - Z<-Appendrow(Z,Data) - } - else - { - for (J in 1:length(Data)) - { + }else{ + for (J in 1:length(Data)){ Tmp<-Data[[J]]; - Z<-Appendrow(Z,Tmp) + Z<-Appendrow(Z,Unscaling(Tmp)) #181015 } } - } - return(Z) + } + return(Z) } ############################## @@ -5124,9 +5216,11 @@ Paramplot<- function(...) Nargs<- length(varargin) Fnflg<- 0 Fnstr<- varargin[[1]]; Is=2 - Fnstr=Assign(Fnstr) #180510(for KeTCindy) Rgstr<- varargin[[Is]]; Is<- Is+1 - Rgstr=Assign(Rgstr) #180510(for KeTCindy) + 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 @@ -5156,7 +5250,7 @@ Paramplot<- function(...) Rng<- c(0,2*pi) } T1<- Rng[1]; T2<- Rng[2] - Dt<- (T2-T1)/N #17.09.22 + Dt<- (T2-T1) #180929 if(Fnflg==0) { Str<- gsub(Vname,"t",Fnstr) @@ -5176,9 +5270,8 @@ Paramplot<- function(...) 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 + t=T1+(jj-1)*Dt/N #180929 Pa<- c() if(t-E[Ke]< Eps) { @@ -5210,37 +5303,26 @@ Paramplot<- function(...) } Ke<-Ke+1 } - if(length(Pa)>0) - { - if(Pa[1]==Inf) - { + if(length(Pa)>0){ + if(Pa[1]==Inf){ Tmp<-Appendrow(P,Pa) P<-Tmp - } - else - { - if(Nrow(P)==0) - { + }else{ + if(Nrow(P)==0){ Tmp<- Appendrow(P,Pa) P<-Tmp - } - else - { + }else{ Tmp<- Op(Nrow(P),P) - if(Tmp[1]==Inf) - { + if(Tmp[1]==Inf){ Tmp<- Appendrow(P,Pa) P<- Tmp - } - else - { - if(Norm(Tmp-Pa)Eps){ #180928 + Tmp<-Appendrow(P,Pa) + P<-Tmp + } #180928 + }else{ Tmp<- Appendrow(P,c(Inf,Inf),Pa) P<- Tmp } @@ -5375,11 +5457,11 @@ Plotdata<- function(...) } } X1<- Rng[1]; X2<- Rng[2] - dx<- (X2-X1)/N # 17.09.22 + dx<- (X2-X1) #180929 if(Fnflg==0){ Str<- gsub(Vname,"x",Fnstr,fixed=TRUE) } - if(abs(dx)0){ Tmp<-eval(parse(text=Exfun)) if(abs(Tmp)0){ - ZL<-substr(Zk,2,nchar(Zk)) - Zk<-substr(Zk,1,1) - if(nchar(ZL)>0){ - ARROWSIZE<<- as.numeric(ZL) - } - } + } #180821to 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" - } - } + On<- ArgL[6]; Op<- ArgL[7] + ZIKU<<- ArgL[1] #180821 if(nchar(Xn)>0){ XNAME<<- paste("$",Xn,"$",sep="") } @@ -6667,11 +6712,11 @@ Setax<- function(...) if(nchar(Yp)>0){ YPOS<<-Yp } - if(nchar(Genn)>0){ - ONAME<<- Genn + if(nchar(On)>0){ + ONAME<<- On } - if(nchar(Genp)>0){ - OPOS<<- Genp + if(nchar(Op)>0){ + OPOS<<- Op } Out<- ""; } @@ -6743,41 +6788,39 @@ Setorigin<- function(...) ################################ -Setscaling<- function(...) -{ +Setscaling<- function(...){ varargin<- list(...) Nargs<- length(varargin) - if(Nargs==0) - { - return(c(SCALEY,LOGX,LOGY)) + if(Nargs==0){ + return(c(SCALEX,SCALEY,LOGX,LOGY)) } - for (I in 1:Nargs) - { + 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") - { - SCALEY<<- Tmp + 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") - { + if(mode(Tmp)=="character"){ + if(Tmp=="l"){ LOGX<<- 0 LOGY<<- 1 - } - else if(Tmp=="ll") - { + }else if(Tmp=="ll"){ LOGX<<- 1 LOGY<<- 1 - } - else - { + }else{ LOGX<<- 0 LOGY<<- 0 } } } - Tmp<- c(SCALEY,LOGX,LOGY); + Tmp<- c(SCALEX,SCALEY,LOGX,LOGY) } ######################################### @@ -7009,51 +7052,35 @@ Shade<- function(...) } } 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))){ +# 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 1:Nrow(PL)){ + 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="") - if(Wfile=="default") - cat(Str,file="",append=TRUE,sep="") - else - cat(Str,file=Wfile,append=TRUE,sep="") + 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="") + 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="") - } + 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="") + cat("}%\n",file=Wfile,append=TRUE,sep="") } } @@ -9751,6 +9778,142 @@ Projpers<- function(...){ 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" @@ -9785,7 +9948,7 @@ Rotate3data<- function(...){ } else{ P<- PD - } + } Tmp<- Rotate3pt(P,W1,W2,C) # 14.03.23 Ans<- rbind(Ans,Tmp) } # 11.08.27 @@ -9886,6 +10049,45 @@ Rotate3pt<- function(...){ 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(...){ @@ -10198,11 +10400,11 @@ Spacecurve<- function(...){ Rng<- c(XMIN,XMAX) } T1<- Rng[1]; T2<- Rng[2] - Dt<- (T2-T1)/N #17.09.22 + 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)=3){ Np=Args[[3]] } - Assign("Sz",Sz) +# Assignadd("Sz",Sz) #180901 if(Pstr=="xy"){ Vz=c(0,0,1) - Fs=Assign("c(Sz*cos(t),Sz*sin(t),0)") + 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))") + 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))") + 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]] @@ -12218,7 +12381,7 @@ Objcurve<- function(...){ } Objsymb<- function(Symb,Thick,Face,Dir){ - for(J in Looprange(1,length(Symb))){ + for(J in Looprange(1,Length(Symb))){ Objcurve(Op(J,Symb),Thick,Face,Dir) } } @@ -12750,6 +12913,7 @@ Enclosing2<- function(...){ Nargs=length(varargin) plist=varargin[[1]] Eps0=10^(-5) + epspara=1; #180707 Eps1=0.01 Eps2=0.1 Start=c() @@ -12757,10 +12921,11 @@ Enclosing2<- function(...){ for(ii in Looprange(2,Nargs)){ tmp=varargin[[ii]] if(length(tmp)>1){ -# Start=tmp + Start=tmp }else{ - if(flg==0){Eps1=tmp} - if(flg==1){Eps2=tmp} + if(flg==0){epspara=tmp} + if(flg==1){Eps1=tmp} + if(flg==2){Eps2=tmp} flg=flg+1 } } @@ -12788,41 +12953,46 @@ Enclosing2<- function(...){ 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) + Start=Op(1,tmp) #180706 } if(length(KL)>1){ - KL=Quicksort(KL,2) + KL=Quicksort(KL,2) #180706from if(length(Start)==0){ tmp=Op(1,KL) tst=Op(2,tmp) - Start=Pointoncurve(tst,Fdata) + Start=Op(1,tmp) }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)) + flgsame=0 #180717from + for(jj in Looprange(1,length(tmp1))){ + if(Norm(tmp2-Op(jj,tmp1))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)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 } } } @@ -12861,8 +13054,9 @@ Enclosing2<- function(...){ tmp=tmp[2:Length(tmp),] AnsL=Appendrow(AnsL,tmp) } - t1=ss } + t1=ss + p1=Pointoncurve(t1,Gdata)#180713 } } return(AnsL) @@ -13713,10 +13907,14 @@ Nohiddenpara2<- function (Par,Fk,Uveq,Np,Eps1,Eps2){ FigkL=c(FigkL,list(Fk)) } } - Tmp=c() - for(I in Looprange(1,length(PaL)-1)){ - if(!Member(I,SeL)){ - Tmp=c(Tmp,I) + 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 @@ -14377,7 +14575,7 @@ Wireparadata<- function(...){ if(ctr==2){Eps2=tmp} } } - if(length(DuL)==1){ #180430 + if(!is.list(DuL)){ #181024 tmp1=DuL DuL=list() for(jj in Looprange(1,tmp1)){ @@ -14385,7 +14583,7 @@ Wireparadata<- function(...){ DuL=c(DuL,list(tmp)) } } - if(length(DvL)==1){ #180430 + if(!is.list(DvL)){ #181024 tmp1=DvL DvL=list() for(jj in Looprange(1,tmp1)){ diff --git a/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent_rep2e.r b/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent_rep2e.r index 370339480ae..bce6137fea1 100755 --- a/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent_rep2e.r +++ b/Master/texmf-dist/scripts/ketcindy/ketlib/ketpiccurrent_rep2e.r @@ -16,12 +16,16 @@ ######################################### -ThisVersion<- "2ev5_2_3(17.10.28)" +ThisVersion<- "2ev5_2_4(180930)" +# 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 ############################################# @@ -286,34 +290,9 @@ Drwpt<-function(...) Fmt=paste(Str,'\n',sep="") } cat(Str,file=Wfile,append=TRUE) + cat("\n",file=Wfile,append=TRUE) #180930 } -# 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) -# } -# } -#} ###################################### @@ -546,9 +525,12 @@ Shade<- function(...) } Mojisu=0 Tmp=varargin[[1]] - Data=Kyoukai(Tmp) +# 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)) diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h index 84de58498f3..7c0425cc64d 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h +++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketcommon.h @@ -1,3 +1,4 @@ +//20181024 memberi debugged (for null list ) //20180308 norm added int length1(double gdata[]){ @@ -817,6 +818,7 @@ void simplesort(double number[]){ 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; diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt index 414cc1e0346..40f68d593ab 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/ketlibClog.txt @@ -1,3 +1,10 @@ +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) diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h index 7f5d9923c9a..d502a2b15c3 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h +++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflib.h @@ -1,3 +1,7 @@ +// 181025 +// crv3onsfparadata debugged (case of out=NULL ) +// 181023 +// pthiddenQ changed ( int flg, double out[4] ) // 180430 // crv2sfparadata,wireparadata added // output3h,output3 chanded @@ -626,10 +630,10 @@ double funpthiddenQ(short ch,double u, double v,double pa[3]){ return out; } -double pthiddenQ(short ch,double pta[3], int uveq){ +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,out=-Inf; + 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; @@ -637,6 +641,7 @@ double pthiddenQ(short ch,double pta[3], int uveq){ 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; @@ -718,23 +723,27 @@ double pthiddenQ(short ch,double pta[3], int uveq){ if(norm(3,tmp1d3)0){ - return tmpd1; + copyd(0,2,ptd3,out); out[3]=tmpd1; + return 1; }else{ - out=fmax(out,tmpd1); + if(tmpd1>out[3]){ + copyd(0,2,ptd3,out); out[3]=tmpd1; + } } } } } } - return out; + 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],flgd; + 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); @@ -787,41 +796,17 @@ int nohiddenpara2(short ch,double par[], double fk[][3], int uveq, double figkL[ s=(paL[n]+paL[n+1])/2.0; invparapt(s,fh,fk, pta); parapt(pta,ptap); - flgd=pthiddenQ(ch,pta, uveq); - if(flgd<=0){ //180518 + 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++){ - pointoncurve(paL[seL[i]], fh, Eps, tmp1d2); - pointoncurve(paL[seL[i]+1], fh, Eps, tmp2d2); - if(i==1){ - copyd(0,1,tmp1d2,pd2); - sp=paL[seL[i]]; - copyd(0,1,tmp2d2,qd2); - sq=paL[seL[i]+1]; - } - else{ - if(memberi(seL[i]-1,seL)==1){ - copyd(0,1,tmp2d2,qd2); - sq=paL[seL[i]+1]; - } - else{ - partcrv(sp,sq,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); - copyd(0,1,tmp1d2,pd2); - sp=paL[seL[i]]; - copyd(0,1,tmp2d2,qd2); - sq=paL[seL[i]+1]; - } - } - } - if(seL[0]>0){ + 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]; @@ -833,11 +818,13 @@ int nohiddenpara2(short ch,double par[], double fk[][3], int uveq, double figkL[ tq=invparapt(sq,fh,fk,tmpd3); partcrv3(tp,tq,fk,tmpmd3); appendd3(2,1,length3(tmpmd3), tmpmd3, figkL); - } - else{ - appendd2(2,1,nfh, fh, figL); - appendd3(2,1,nfk,fk,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++){ @@ -1338,7 +1325,7 @@ void crv3onsfparadata(short ch,double fk[][3], double fbdyd3[][3], double out[][ 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); + 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){ @@ -1353,8 +1340,9 @@ void crv3onsfparadata(short ch,double fk[][3], double fbdyd3[][3], double 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(3,1,length3(tmpmd3),tmpmd3,out); + appendd3(0,1,length3(tmpmd3),tmpmd3,out);//181025 } void crv2onsfparadata(short ch,double fh[][2], double fbdyd3[][3], double out[][3]){ @@ -1368,9 +1356,9 @@ void wireparadata(short ch,double bdyk[][3], double udata[], double vdata[],cons double du=(Urng[1]-Urng[0])/Mdv; double dv=(Vrng[1]-Vrng[0])/Ndv; int i,j,din[DsizeS][2]; - short allflg=0; - if(strlen(fnameh)==0){ - allflg=1; + short allflg=1; + if(strlen(fnameh)>0){ + allflg=0; } char var[20]="wire3d"; char varh[20]="wireh3d"; diff --git a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h index 0adc7779221..cc10b300d7b 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h +++ b/Master/texmf-dist/scripts/ketcindy/ketlibC/surflibhead.h @@ -35,7 +35,7 @@ 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]); -double pthiddenQ(short ch,double pta[3], int uveq); +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[]); diff --git a/Master/texmf-dist/scripts/ketcindy/ketoutset.txt b/Master/texmf-dist/scripts/ketcindy/ketoutset.txt index 0b42ee4f6bb..5fb93561f50 100644 --- a/Master/texmf-dist/scripts/ketcindy/ketoutset.txt +++ b/Master/texmf-dist/scripts/ketcindy/ketoutset.txt @@ -37,12 +37,6 @@ if(islinux(), PathAd="acroread"; ); -if(iswindows(), //180420from - Changesetting([gethome(), gethome()+"\Desktop","C:"]); -, - Changesetting([gethome(),gethome()+"/Desktop"]); -);//180420to - if(indexof(PathT,"platex")>0, Helplist(["+","+3d","+mv"],"helpJ"); , diff --git a/Master/texmf-dist/scripts/ketcindy/template0.cdy b/Master/texmf-dist/scripts/ketcindy/template0.cdy new file mode 100644 index 00000000000..acf42570a94 Binary files /dev/null and b/Master/texmf-dist/scripts/ketcindy/template0.cdy differ diff --git a/Master/texmf-dist/scripts/ketcindy/template1basic.cdy b/Master/texmf-dist/scripts/ketcindy/template1basic.cdy index c4cae01defe..c2ab317098d 100644 Binary files a/Master/texmf-dist/scripts/ketcindy/template1basic.cdy and b/Master/texmf-dist/scripts/ketcindy/template1basic.cdy differ diff --git a/Master/texmf-dist/scripts/ketcindy/template2advanced.cdy b/Master/texmf-dist/scripts/ketcindy/template2advanced.cdy deleted file mode 100644 index 2a5443784f5..00000000000 Binary files a/Master/texmf-dist/scripts/ketcindy/template2advanced.cdy and /dev/null differ diff --git a/Master/texmf-dist/scripts/ketcindy/template2slide.cdy b/Master/texmf-dist/scripts/ketcindy/template2slide.cdy new file mode 100644 index 00000000000..7e287d9f3b0 Binary files /dev/null and b/Master/texmf-dist/scripts/ketcindy/template2slide.cdy differ diff --git a/Master/texmf-dist/scripts/ketcindy/template3Dfigure.cdy b/Master/texmf-dist/scripts/ketcindy/template3Dfigure.cdy new file mode 100644 index 00000000000..35f5fdf3b74 Binary files /dev/null and b/Master/texmf-dist/scripts/ketcindy/template3Dfigure.cdy differ -- cgit v1.2.3