From f77239d8178c16a47170512a9db28c0499f9e349 Mon Sep 17 00:00:00 2001 From: Dimitrios Eftaxiopoulos Date: Thu, 22 Mar 2012 21:37:24 +0200 Subject: [PATCH] Imported Upstream version 2~rc2+svn376 --- CMakeLists.txt | 10 +- NEWS | 31 - TODO | 82 - examples/CMakeLists.txt | 24 +- examples/full_test.cpp | 38 +- fltk.png | Bin 49099 -> 0 bytes hotdogs.pts | 1748 -------- include/config.h.in | 5 + include/mgl/base.h | 21 +- include/mgl/canvas_cf.h | 16 +- include/mgl/define.h | 2 +- include/mgl/mgl.h | 17 + include/mgl/window.h | 11 +- lang/CMakeLists.txt | 45 +- setup.py => lang/setup.py.in | 23 +- mgllab/main.cpp | 2 +- qt.png | Bin 46186 -> 0 bytes sample.csv | 113 - src/base.cpp | 10 +- src/canvas_cf.cpp | 21 + src/data_new.cpp | 2 +- src/exec.cpp | 22 +- src/export.cpp | 1 + src/export_2d.cpp | 6 +- src/export_3d.cpp | 393 +- src/pixel.cpp | 3 +- src/plot.cpp | 7 +- src/prim.cpp | 68 +- test.mgl | 7 - texinfo/CMakeLists.txt | 26 +- texinfo/classes.odg | Bin 0 -> 11301 bytes texinfo/classes.pdf | Bin 0 -> 23785 bytes texinfo/classes.png | Bin 0 -> 32909 bytes texinfo/concept_en.texi | 40 +- texinfo/core_en.texi | 304 +- texinfo/cut.png | Bin 61973 -> 0 bytes texinfo/data_en.texi | 62 +- texinfo/ex_mgl_en.texi | 2 +- texinfo/example_en.texi | 1433 ++++--- texinfo/mathgl_en.texi | 23 +- texinfo/mgl.5 | 18 + texinfo/mgl_en.texi | 36 +- texinfo/mglconv.1 | 48 + texinfo/mglview.1 | 36 + texinfo/other_en.texi | 422 +- texinfo/overview_en.texi | 83 +- texinfo/parse_en.texi | 5 +- texinfo/samples_en.texi | 4417 -------------------- texinfo/samples_ru.texi | 7558 ---------------------------------- texinfo/widget_en.texi | 20 +- todo.txt | 136 +- udav/calc_dlg.cpp | 4 +- udav/open_dlg.cpp | 8 +- utils/mglconv.cpp | 94 +- utils/mglview.cpp | 56 +- widgets/fltk.cpp | 2 +- widgets/qt.cpp | 57 +- widgets/window.cpp | 10 +- 58 files changed, 2391 insertions(+), 15237 deletions(-) delete mode 100644 NEWS delete mode 100644 TODO delete mode 100644 fltk.png delete mode 100644 hotdogs.pts rename setup.py => lang/setup.py.in (71%) delete mode 100644 qt.png delete mode 100644 sample.csv delete mode 100644 test.mgl create mode 100644 texinfo/classes.odg create mode 100644 texinfo/classes.pdf create mode 100644 texinfo/classes.png delete mode 100644 texinfo/cut.png create mode 100644 texinfo/mgl.5 create mode 100644 texinfo/mglconv.1 create mode 100644 texinfo/mglview.1 delete mode 100644 texinfo/samples_en.texi delete mode 100644 texinfo/samples_ru.texi diff --git a/CMakeLists.txt b/CMakeLists.txt index b83f692..423ccd8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -218,12 +218,10 @@ endif((enable-all OR enable-qt) AND (NOT enable-lgpl) ) if((enable-langall OR enable-python) AND (NOT enable-lgpl) ) set(MGL_HAVE_PYTHON 1) -# include(FindPythonInterp) -# if(NOT PYTHONLIBS_FOUND) -# if(use_python) -# message(SEND_ERROR "Couldn't find python interpreter.") -# endif(use_python) -# endif(NOT PYTHONINTERP_FOUND) + FIND_PACKAGE(PythonInterp) + if(NOT PYTHONINTERP_FOUND) + message(SEND_ERROR "Couldn't find python interpreter.") + endif(NOT PYTHONINTERP_FOUND) FIND_PACKAGE(PythonLibs) if(NOT PYTHONLIBS_FOUND) message(SEND_ERROR "Couldn't find python development libraries.") diff --git a/NEWS b/NEWS deleted file mode 100644 index 92771aa..0000000 --- a/NEWS +++ /dev/null @@ -1,31 +0,0 @@ -2.0.b Released 23 August 2011 - -1.11.2 Released 30 May 2011 -1.11.1 Released 28 March 2011 -1.11 Released 8 November 2010 -1.10.2.1 Released 27 March 2010 -1.10.2 Released 22 March 2010 -1.10.1 Released 8 March 2010 -1.10 Released 28 December 2009 -1.9 Released 8 July 2009 -1.8.1 Released 4 March 2009 -1.8 Released 27 November 2008 -1.7 Released 5 June 2008 -1.6.2 Released 5 April 2008 -1.6.1 Released 2 April 2008 -1.6 Released 17 March 2008 -1.5 Released 11 January 2008 -1.4.3.1 Released 24 December 2008 -1.4.3 Released 18 December 2008 -1.4.2 Released 27 November 2007 -1.4.1 Released 14 November 2007 -1.4 Released 30 October 2007 -1.3 Released 15 October 2007 -1.2.2 Released 26 September 2007 -1.2.1 Released 14 September 2007 -1.2 Released 10 September 2007 -1.1 Released 23 May 2007 -1.0 Released 2 April 2007 -0.9 Last beta version of the MathGL library. Released 2 March 2007 -0.8.1 Released 19 Febriary 2007 -0.8.0 First public release (24 January 2007) diff --git a/TODO b/TODO deleted file mode 100644 index 608d552..0000000 --- a/TODO +++ /dev/null @@ -1,82 +0,0 @@ - MathGL for v.2.0 - - -1. Colorbar: print more digits for manual arrays ... but avoid overlapping ??? -2. Miss MAJOR labels or decrease its fontsize if labels too close. - Also check that enough digits is printed to distingush the labels - Also allow "time"-labels -- like "%d/%m/%Y %H:%M:%S" - Also allow rotate labels if they too dense -3. Legend in OpenGL mode -4. Add plot Circle() as Error() but with marks instead of error boxes (default 'o') + alpha-transpared if filled -5. Export to LaTeX formats - (pgf/tikz) or metapost if possible (like EPS). -6. Use '~' for old style textual arguments!!! -7. Pipes in mgl2png, mgl2eps, ... (stdin, stdout) -8. Multithreading -9. Number of proc from get_nprocs_conf() (#include ) -10.Arbitrary line/curve coordinates if z=nan -11.Add apperture for light (partially is done) -12.Add diffusive light (no dependence of normale but have direction) -13. утилиты (mgl2png и пр.) вылетают, если в коментариях русские буквы -14. Last ' isn't send as call argument!!! -15. MGL docs -- text what formulas are applicable for scalars too. -16. Manual labels in string with '\n' separator -17. Venn() diagram-like -- transparent circles with manual colors and sizes -- may be a variant of Mark()??? - -11. Update STIX fonts (new release) + create PWT fonts -12. Problem with \calB and so on (\calH, ...) -- they are present only in italic font :(. - -21. INCOMPATIBLE CHANGES!!! swap color and font style in text option ('bR:r' -> 'r:bR') -22. INCOMPATIBLE CHANGES!!! hide 'dir' argument as ':[xyz]' for cont3, dens3, contf3, grid3 + remove conta, densa, grida, contfa -23. INCOMPATIBLE!!! Allow slice definition as real: sl<1 ? sl=int(n*sl) : int(sl); -24. INCOMPATIBLE CHANGES!!! tune colors as {} -- for example, 'b{3}' -25. INCOMPATIBLE CHANGES!!! hide unused arguments (like "size") -26. Quaternary diagrams plotted in a tetrahedron: equivalent to ternary diagrams, but in 3D. -27. Export to X3D -28. Save glyph then it is used for mglGraphPS -- allow different font family in EPS|SVG ??! -29. Multithreading by "subplots" -- for parser first of all !!! - -30. Sample about pthread using. -31. Add help about cmake and GIF/JPEG to the "Installation and using" -32. Regroup pictures in WWW by big classes + combo plots - -========================= - Later - -1. Plot for isolines of vector fields ??? -2. Named arguments in MGL ??? -3. \dfrac for normal size and centering (sample \big\big{\frac{1}{2}}) ??? -4. "Chaos" in area.png (near axis) ??? -5. save data coordinates in picture??? -- NO -- slow + a lot of memory! -6. "Cut off" curves if text is printed along it (for contour labels) ?!? -7. Allow interpolation in MGL if argument is not integer ??? -8. Check if widget functions can be added to mgl_w.h !?! -- use #define ??! -9. Add '[' as separator in string ??? -10. Save id of subplots and axis for getting value of click coordinates arbitrary inplot -- fill only part which is overlapped. Clear it at Clf() + update for any Rotate, Aspect, InPlot, SetRanges, -11. Surface by interpolation for arbitrary points {x,y,z} -- seems to be too complicated :( -12. Rename 'stl'->'style', 'sch'->'scheme' in MGL docs ??? -13. Add option ':[xyzd]' in color scheme for coloring along coordinate (default 'z') ?!? -14. Save ALL plot styles for each curve (0...N) for each subplot (0...M) in format \leg{N_M} ?!? -15. Add TeX command \leg{plot style} for line+mark of specified style. -16. Import/Export via GIF (as 3d data) ??? + 16bit PNG ?!! -17. Contour label should not rotated on ~180 degree ?! -18. The same function for ticks of axis and colorbar ??? -13. Add "colorbar x y ['sch'='' w=1 h=1]" + "colorbar x y dat ['sch'='' w=1 h=1]" -- NO because need w,h ! - - - MathGL (for v.2.?) ??? - -1. GTK window ??? -11. Use Hershey as built-in font ??? - - FAQ - -1. On which things the subplot influence -2. About unrotated text -3. Add "Howto" section in web site. - - Web - -1. "Data plotting", "Data plot", "Scientific visualtization", "Surface", "Cloud", - "Plot", "statistical graphics" -2. Examples of animation -3. Example of inverted axis, minus-log axis diff --git a/examples/CMakeLists.txt b/examples/CMakeLists.txt index 54ada73..b9b65cc 100644 --- a/examples/CMakeLists.txt +++ b/examples/CMakeLists.txt @@ -1,10 +1,6 @@ -if(use_gsl) -# target_link_libraries(mgl ${GSL_LIB} ${GSL_CBLAS_LIB} ) - add_definitions(-DHAVE_GSL) +if(MGL_HAVE_GSL) include_directories(${GSL_INCLUDE_DIR}) -else(use_gsl) - add_definitions(-DNO_GSL) -endif(use_gsl) +endif(MGL_HAVE_GSL) add_executable(mgl_example wnd_samples.cpp full_test.cpp) target_link_libraries(mgl_example mgl) @@ -13,25 +9,25 @@ install( RUNTIME DESTINATION bin ) -if(use_fltk) +if(MGL_HAVE_FLTK) add_executable(mgl_fltk_example wnd_samples.cpp fltk_example.cpp) target_link_libraries(mgl_fltk_example mgl-wnd) install( TARGETS mgl_fltk_example RUNTIME DESTINATION bin ) -endif(use_fltk) +endif(MGL_HAVE_FLTK) -if(use_glut) +if(MGL_HAVE_GLUT) add_executable(mgl_glut_example wnd_samples.cpp glut_example.cpp) target_link_libraries(mgl_glut_example mgl-glut) install( TARGETS mgl_glut_example RUNTIME DESTINATION bin ) -endif(use_glut) +endif(MGL_HAVE_GLUT) -if(use_wx) +if(MGL_HAVE_WX) include(${wxWidgets_USE_FILE}) add_executable(mgl_wx_example wnd_samples.cpp wx_example.cpp) target_link_libraries(mgl_wx_example ${wxWidgets_LIBRARIES} mgl-wnd) @@ -39,9 +35,9 @@ if(use_wx) TARGETS mgl_wx_example RUNTIME DESTINATION bin ) -endif(use_wx) +endif(MGL_HAVE_WX) -if(use_qt) +if(MGL_HAVE_QT) include(${QT_USE_FILE}) qt_wrap_cpp(mgl_qt_example MGL_MOC_EX_FILES ../include/mgl/qt.h) add_executable(mgl_qt_example wnd_samples.cpp qt_example.cpp ${MGL_MOC_EX_FILES}) @@ -50,4 +46,4 @@ if(use_qt) TARGETS mgl_qt_example RUNTIME DESTINATION bin ) -endif(use_qt) +endif(MGL_HAVE_QT) diff --git a/examples/full_test.cpp b/examples/full_test.cpp index f4cf484..62cb93e 100644 --- a/examples/full_test.cpp +++ b/examples/full_test.cpp @@ -28,7 +28,7 @@ #include "mgl/mgl.h" #include "mgl/eval.h" //#include -#include "mgl/parser.h" +//#include "mgl/parser.h" //----------------------------------------------------------------------------- void mgls_prepare1d(mglData *y, mglData *y1=0, mglData *y2=0, mglData *x1=0, mglData *x2=0); void mgls_prepare2d(mglData *a, mglData *b=0, mglData *v=0); @@ -49,22 +49,10 @@ void smgl_combined(mglGraph *gr); void save(mglGraph *gr,const char *name,const char *suf); void test(mglGraph *gr) { - int i, n=1000; - mglData x(n),y(n),z(n); - for(i=0;iTitle("Dots sample"); - gr->Rotate(50,60); gr->Box(); gr->Dots(x,y,z); - return; - mglParse par; par.AllowSetSize(true); - FILE *fp=fopen("/home/balakin/mgl/att/put.mgl","rt"); + setlocale(LC_CTYPE, ""); + FILE *fp=fopen("/home/balakin/progr/sfnet/mathgl/mathgl-2x/examples/test.mgl","r"); par.Execute(gr,fp,true); fclose(fp); } @@ -702,11 +690,11 @@ void smgl_radar(mglGraph *gr) gr->Radar(yr,"#"); } //----------------------------------------------------------------------------- -const char *mmgl_candle="new y 30 'sin(2*pi*x)^2':copy y1 y/2:copy y2 (y+1)/2\n" +const char *mmgl_candle="new y 30 'sin(pi*x/2)^2':copy y1 y/2:copy y2 (y+1)/2\n" "subplot 1 1 0 '':title 'Candle plot (with grid, \\\'\\#\\\')'\nyrange 0 1:box:candle y y1 y2\n"; void smgl_candle(mglGraph *gr) { - mglData y(30); gr->Fill(y,"sin(2*pi*x)^2"); + mglData y(30); gr->Fill(y,"sin(pi*x/2)^2"); mglData y1(30); gr->Fill(y1,"v/2",y); mglData y2(30); gr->Fill(y2,"(1+v)/2",y); if(!mini) { gr->SubPlot(1,1,0,""); gr->Title("Candle plot (default)"); } @@ -1276,7 +1264,7 @@ void smgl_fit(mglGraph *gr) // nonlinear fitting gr->Puts(mglPoint(-0.9, -1.3), "fitted:", "r:L"); gr->PutsFit(mglPoint(0, -1.8), "y = ", "r"); gr->Puts(mglPoint(0, 2.2), "initial: y = 0.3+sin(2\\pi x)", "b"); - gr->SetRanges(mglPoint(-1,-1,-1),mglPoint(1,1,1)); gr->SetOrigin(0,0,0); +// gr->SetRanges(mglPoint(-1,-1,-1),mglPoint(1,1,1)); gr->SetOrigin(0,0,0); } //----------------------------------------------------------------------------- const char *mmgl_vect="subplot 3 2 0 '':title 'Vect plot (default)':box:vect a b\n" @@ -1355,9 +1343,17 @@ const char *mmgl_cones="new ys 10 3 '0.8*sin(pi*(x+y/4+1.25))+0.2*rnd'" void smgl_cones(mglGraph *gr) { mglData ys(10,3); ys.Modify("0.8*sin(pi*(2*x+y/2))+0.2*rnd"); - if(!mini) gr->Title("Cones plot"); - gr->Rotate(50,60); gr->Light(true); - gr->SetOrigin(0,0,0); gr->Box(); gr->Cones(ys); + gr->Light(true); gr->SetOrigin(0,0,0); + if(!mini) { gr->SubPlot(2,2,0); gr->Title("Cones plot"); } + gr->Rotate(50,60); gr->Box(); gr->Cones(ys); + if(mini) return; + gr->SubPlot(2,2,1); gr->Title("2 colors"); + gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"cbgGyr"); + gr->SubPlot(2,2,2); gr->Title("'#' style"); + gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"#"); + gr->SubPlot(2,2,3); gr->Title("'a' style"); + gr->SetRange('z',-2,2); // increase range since summation can exceed [-1,1] + gr->Rotate(50,60); gr->Box(); gr->Cones(ys,"a"); } //----------------------------------------------------------------------------- const char *mmgl_aspect="subplot 2 2 0:box:text -1 1.1 'Just box' ':L'\ninplot 0.2 0.5 0.7 1:box:text 0 1.2 'InPlot example'\n" diff --git a/fltk.png b/fltk.png deleted file mode 100644 index 3552b27d852e9e0d3087f026a4b86d21cdf310a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 49099 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 H51;=R4SOUN diff --git a/hotdogs.pts b/hotdogs.pts deleted file mode 100644 index db21a89..0000000 --- a/hotdogs.pts +++ /dev/null @@ -1,1748 +0,0 @@ --3.3581 2.5732 1.4934 --3.25778 2.29243 1.45965 --3.0802 2.59925 1.42197 --3.60356 2.40362 1.47383 -5.24516 2.4206 1.30072 -5.42469 2.656 1.27697 -5.12897 2.59593 1.5162 -5.08074 2.17454 1.29715 -5.35839 2.30541 1.03706 -0.314234 -1.24668 0.771201 -0.199285 -1.50489 0.79399 -0.483944 -1.39477 0.994998 -0.524797 -1.06853 0.885649 -0.403729 -0.936904 0.66078 -0.153642 -1.20314 0.54891 --2.62536 -1.39779 -0.911055 --2.35472 -1.36992 -1.01849 --2.54319 -1.64629 -0.821542 --2.84156 -1.45618 -0.730945 --2.83523 -1.16641 -0.829628 --2.56462 -1.11861 -0.996259 -2.87418 -1.98581 -0.595092 -2.84061 -1.79479 -0.820509 -3.02393 -1.75897 -0.534522 -2.91054 -2.09024 -0.323686 -2.72903 -2.24064 -0.612428 -2.65841 -2.10037 -0.856363 -6.31265 3.7305 0.24011 -6.18759 3.47647 0.325652 -6.17274 3.70564 -0.0800137 -6.39293 3.9878 0.0618956 -6.43139 3.86463 0.513914 -3.84975 3.4648 -0.925588 -3.59431 3.38247 -0.854213 -3.7798 3.72419 -0.811975 -4.15893 3.53106 -0.98144 -4.04251 3.24415 -1.01833 -3.74788 3.12439 -0.98844 -2.14197 -3.04583 0.410968 -1.84122 -3.14536 0.550241 -2.04639 -3.17918 0.196293 -2.06812 -2.94437 0.670076 --1.70186 0.504321 0.61956 --1.78475 0.777293 0.610411 --1.84891 0.493439 0.83798 --1.62424 0.245735 0.631356 --1.57339 0.417303 0.359742 --1.66868 0.674163 0.369577 --2.57164 1.21584 -0.743756 --2.31566 1.10419 -0.659823 --2.67611 0.983431 -0.816759 --2.79675 1.43868 -0.754294 --2.50683 1.49307 -0.640831 --2.85831 3.80577 0.187588 --3.03589 3.87076 -0.0420329 --3.02189 4.04633 0.275546 --2.86124 3.90599 0.492198 --2.72507 3.64261 0.458894 --2.74828 3.53887 0.158063 --2.43307 -0.105483 -0.964569 --2.47392 0.184546 -0.924879 --2.16794 -0.0213592 -0.912387 --2.17618 -0.310149 -0.97579 --2.53774 -0.34641 -0.982996 --2.72644 0.0266272 -0.926894 -2.55741 -2.698 0.173276 -2.54559 -2.57237 0.442127 -2.3705 -2.89048 0.304438 -2.72431 -2.41899 0.18726 -1.9329 0.782115 1.33228 -2.07372 0.536763 1.46386 -2.17214 0.8611 1.45373 --2.80681 0.525011 1.2573 --2.61929 0.28831 1.22734 --2.56131 0.690348 1.24508 --2.81006 0.863312 1.29461 --3.07437 0.682266 1.25198 --2.93388 0.253786 1.19793 --4.08497 3.06658 -0.477188 --3.9929 3.34994 -0.508473 --3.80453 3.03208 -0.563298 --4.32072 3.17934 -0.355717 -0.71429 -2.43755 1.13125 -0.577457 -2.64302 0.937117 -0.916566 -2.69839 1.07919 -1.07048 -2.51173 1.22284 -0.932491 -2.24372 1.27808 -0.704217 -2.07408 1.22076 -0.481325 -2.21307 1.06654 -6.77633 5.96032 -0.178714 -6.94684 5.97403 0.117185 -6.85821 5.65343 -0.186667 -6.74866 6.24283 0.0139289 --0.304946 -1.70022 0.0742084 --0.249086 -1.9323 0.145158 --0.175199 -1.63268 0.361055 --0.279403 -1.43671 -0.0334712 --0.301889 -1.66287 -0.225311 --0.26584 -1.92808 -0.226154 -0.270686 -1.89609 -1.12178 -0.42664 -1.58342 -1.20414 -0.507389 -1.87036 -1.30753 -0.28771 -2.24099 -1.08346 -0.0698602 -2.00793 -0.891812 -0.105249 -1.71433 -0.931758 --2.72748 -0.893247 -0.928846 --2.95372 -0.801654 -0.793391 --2.62174 -0.629936 -0.977214 --2.41176 -0.845681 -1.03904 -3.2547 3.60003 1.33696 -3.29474 3.85307 1.22717 -3.09766 3.64218 1.09161 -3.04951 3.38036 1.22149 -3.23911 3.34028 1.44699 -3.45528 3.52774 1.55405 -3.46952 3.81241 1.45288 -2.13552 -2.31356 -1.26343 -2.34225 -2.141 -1.16648 -2.28978 -2.52288 -1.03898 -2.03955 -2.64332 -1.1659 -1.87917 -2.44238 -1.35687 --2.64685 -1.13203 0.96817 --2.55545 -1.40087 0.932776 --2.39014 -1.08724 1.05705 --2.64858 -0.806068 1.04884 --2.84983 -0.905987 0.93024 --2.90094 -1.172 0.793946 -5.46206 6.53047 1.67055 -5.44747 6.32229 1.84814 -5.73482 6.51078 1.7131 -5.46571 6.70016 1.4559 -5.2019 6.49508 1.61418 --2.96176 -0.204601 1.08273 --2.8961 -0.493623 1.03199 --2.63601 -0.263771 1.15631 --2.78725 0.00189162 1.1791 --3.14333 0.0936235 1.08365 --3.24797 -0.110431 0.945928 --3.1717 -0.386754 0.894612 --3.47346 -0.289085 -0.310649 --3.48661 -0.0033554 -0.433021 --3.29665 -0.329489 -0.568534 --3.34481 -0.573148 -0.399182 --3.47098 -0.522645 -0.0868477 --3.58443 -0.227542 -0.00380224 --3.62173 0.00490325 -0.168243 --1.93493 0.792305 0.843012 --1.9404 1.06144 0.740219 --2.14063 0.908349 1.02228 --2.05697 0.575826 1.01327 --1.1033 -0.875587 -0.562918 --1.11228 -0.651707 -0.389252 --0.933491 -0.97847 -0.367397 --1.0533 -1.17043 -0.58353 --1.25204 -1.11933 -0.765217 --1.3032 -0.811943 -0.73879 --1.57893 -0.781166 0.910529 --1.35595 -0.684519 0.716635 --1.53384 -0.481856 0.810603 --1.74273 -0.510285 0.963317 --1.38004 -0.994104 0.826356 -4.7433 5.04488 -0.75171 -4.97556 5.22104 -0.771439 -4.92056 4.82521 -0.848154 -4.65312 4.73047 -0.812904 -4.45911 4.93155 -0.673453 -4.52679 5.19667 -0.599115 -4.75085 5.36744 -0.645883 -1.32843 0.246516 1.03312 -1.28601 -0.0533061 1.12775 -1.55188 0.148591 1.26028 -1.47741 0.5427 1.03714 -1.29585 0.50176 0.830034 -1.1235 0.279323 0.739795 -1.12678 0.0331439 0.925816 --3.41184 -0.662462 0.317813 --3.26844 -0.823944 0.529039 --3.40921 -0.47132 0.541786 --3.52609 -0.401529 0.228077 --3.39951 -0.771987 0.0583163 --3.29761 -0.985696 0.273689 --2.44003 -1.74416 0.77911 --2.40321 -1.93882 0.574524 --2.16401 -1.86492 0.727302 --2.33647 -1.56288 0.932501 --3.19536 -1.22835 -0.271192 --3.29573 -1.04903 -0.0607735 --3.2039 -0.996262 -0.430891 --3.04013 -1.31067 -0.560577 --3.07055 -1.49746 -0.361095 --3.15817 -1.44404 -0.059781 --2.33749 -0.254451 1.15692 --2.08626 -0.459199 1.10064 --2.13336 -0.0834085 1.11195 --2.47607 0.0220306 1.19255 --2.34752 -0.544654 1.13367 --4.06515 1.14606 0.0939439 --3.98855 0.87721 0.208124 --4.10693 1.20843 0.381695 --4.10764 1.40389 -0.0430838 --3.94837 1.06503 -0.169509 --3.74035 0.213102 0.0356933 --3.66615 -0.0230989 0.21915 --3.76119 0.273481 0.35934 --3.84289 0.488681 0.0952445 --3.67135 0.296679 -0.26498 --1.73488 0.824535 -0.0694358 --1.88074 0.984935 -0.269929 --1.81166 1.08 0.0503476 --1.73262 0.898408 0.237072 --1.6277 0.622408 0.0997399 --1.71963 0.630373 -0.25725 --4.44731 2.9857 1.23889 --4.47648 3.31286 1.27093 --4.63912 3.15007 1.045 --4.60983 2.87466 0.943018 --4.39756 2.70469 1.15202 --4.18898 2.86288 1.38837 --4.26454 3.17889 1.42879 --3.1185 2.88722 1.42872 --2.9835 2.29036 1.39026 --2.82421 2.55737 1.28856 --3.62914 0.945485 1.07069 --3.85799 1.03371 0.875528 --3.64957 0.663368 0.923775 --3.34893 0.870816 1.21064 --3.46287 1.17338 1.24476 --3.78027 1.26236 1.07779 --4.10144 1.80983 1.01471 --3.93356 1.92953 1.22535 --4.23873 2.08417 0.996568 --3.87802 1.60653 1.14086 --2.41342 2.76212 0.52291 --2.51387 3.05685 0.485706 --2.51421 2.89601 0.771281 --2.34972 2.47078 0.684162 --2.32 2.51869 0.386456 --2.40892 2.69099 0.171889 --2.49363 2.94328 0.228462 --4.1901 1.67887 0.779085 --4.18138 1.47216 0.555497 --4.01052 1.4394 0.914544 --4.33252 1.98544 0.734667 --4.30575 1.76904 0.476773 --2.14148 2.02084 0.292344 --2.04327 1.74933 0.271785 --2.1878 2.01728 0.0156825 --2.24237 2.27722 0.21845 --2.23397 2.23757 0.523243 --2.1242 1.90144 0.538474 --2.6618 1.7117 1.27036 --2.42223 1.65463 1.12153 --2.57037 1.99444 1.18305 --2.85219 1.92206 1.34625 --2.84725 1.49189 1.34055 --2.55483 1.38925 1.23605 --3.24773 2.89115 -0.563582 --3.13442 3.16171 -0.454071 --2.97275 2.87675 -0.457286 --2.97087 0.910323 -0.830011 --2.8625 0.64601 -0.863657 --3.22997 0.77024 -0.766962 --3.25406 1.08882 -0.760944 --2.94461 1.2067 -0.80286 --3.19264 3.76303 -0.268807 --3.35685 3.98887 -0.189947 --3.09926 3.48731 -0.325277 --3.35013 3.51948 -0.448783 --3.49897 3.80852 -0.379837 --4.13442 2.78485 -0.432249 --4.25185 2.54973 -0.303828 --4.37806 2.88588 -0.257884 --3.85371 2.74253 -0.55972 --3.97769 2.47611 -0.496416 --3.01366 4.06086 0.677485 --3.24816 4.19348 0.803642 --3.00824 3.95263 0.934934 --3.16861 4.19158 0.469881 --3.90096 4.1833 -0.0258327 --4.04109 3.99704 -0.207144 --4.19113 4.15901 0.127059 --3.94038 4.2978 0.268172 --3.6627 4.29 0.171202 --3.68087 4.0663 -0.203356 -1.28305 -0.86711 1.33316 -1.30099 -1.16771 1.37218 -1.57065 -0.909317 1.43042 -1.26322 -0.582139 1.27146 -1.01719 -0.784363 1.17406 -1.04084 -1.07869 1.25768 -4.61406 2.89864 1.84366 -4.57573 2.60027 1.78141 -4.91371 2.83506 1.73841 -4.71687 3.17893 1.88327 -5.72202 6.92474 0.418179 -5.69642 6.94662 0.712281 -5.99169 6.90788 0.535534 -5.89825 6.85722 0.213565 -5.50061 6.84127 0.155097 -5.44399 6.90241 0.40192 -0.581409 -2.87223 -0.92502 -0.728407 -2.72758 -1.16272 -0.861693 -3.02699 -0.941028 -0.738898 -3.13304 -0.678139 -0.378696 -2.85371 -0.713403 -0.399734 -2.57893 -1.02076 -3.53052 -0.877647 -0.465663 -3.51352 -1.0597 -0.221438 -3.36463 -1.08418 -0.576949 -3.37807 -0.814161 -0.768259 -3.5536 -0.61055 -0.671499 -3.6844 -0.728219 -0.274886 -1.66648 -2.62611 -1.34184 -1.48294 -2.32996 -1.49719 -1.84384 -2.83942 -1.12664 -1.47647 -2.85299 -1.22432 -1.33369 -2.63388 -1.37994 -4.50489 1.11766 -0.575304 -4.6655 1.10628 -0.317977 -4.4713 0.844402 -0.419463 -4.28758 0.88656 -0.693971 -4.42024 1.33553 -0.773128 -4.642 1.44308 -0.605366 --1.48623 0.266598 0.170936 --1.49197 0.126599 0.44517 -2.59359 1.53659 -1.07994 -2.52661 1.77098 -0.957494 -2.84365 1.69255 -1.11866 -2.75375 1.31356 -1.19128 -2.46659 1.23055 -1.13156 -2.327 1.45432 -0.98216 --1.07958 -0.561411 -0.0782097 --1.22408 -0.302384 0.00216391 --1.16863 -0.450934 0.22295 --1.02182 -0.682806 0.179951 --0.942777 -0.791918 -0.151739 --1.22775 -0.400658 -0.287671 -1.04695 0.428301 0.327244 -0.971641 0.174597 0.547138 -1.18354 0.549623 0.562124 -1.17307 0.667302 0.263656 -0.98696 0.369718 0.0352485 -0.894835 0.17772 0.283671 -1.26046 -3.38529 -0.241607 -1.16375 -3.37391 0.0781727 -0.961899 -3.33669 -0.253097 -1.31991 -3.31777 -0.563354 -1.58084 -3.35511 -0.331871 -1.50026 -3.38331 -0.00924776 -4.04168 0.775803 1.34296 -3.81296 0.709911 1.45215 -3.82908 0.414927 1.30645 -4.04688 0.393213 1.1022 -4.17992 1.04431 1.38411 -3.93074 1.11424 1.54997 -1.3473 0.802046 0.626675 -1.32412 0.897541 0.381628 -1.46867 0.794179 0.862163 -1.53267 1.08047 0.705362 -3.29336 1.60053 -1.20303 -3.01545 1.48076 -1.2014 -3.09149 1.85641 -1.13924 -3.40073 1.90025 -1.16993 -3.61126 1.59045 -1.18161 -3.33546 1.29132 -1.22525 -5.62358 2.75262 1.0777 -5.77933 2.84311 0.844079 -5.71859 3.03221 1.21844 -5.55879 2.51885 0.898668 -2.47127 2.79266 -0.0777182 -2.42757 2.81723 0.207235 -2.61609 3.03572 -0.0597707 -2.55071 2.7506 -0.316665 -2.33466 2.51481 -0.17884 -2.30551 2.58302 0.0698644 -1.08521 -2.96288 0.91248 -1.36802 -3.05436 0.843495 -1.25744 -2.73844 1.12404 -0.782819 -2.86576 0.886446 -0.844871 -3.09661 0.641085 -1.14979 -3.18763 0.631905 -3.84648 4.33926 1.56949 -3.65213 4.33729 1.37287 -3.73725 4.0621 1.58499 -3.9693 4.1196 1.7283 -4.08582 4.41464 1.72363 -3.99229 4.62724 1.57908 -3.79036 4.58072 1.39268 -5.03437 1.68215 0.891902 -4.84435 1.43156 0.950179 -5.01579 1.49595 0.605661 -5.18484 1.79583 0.665614 -5.14934 1.99853 1.0553 -4.91913 1.76111 1.16106 -2.46454 -2.30791 -0.969099 -2.55173 -2.45591 -0.735053 -3.19021 3.92141 0.982738 -3.0572 3.81201 0.783917 -3.30079 4.16977 0.923489 -3.16722 4.05353 0.673037 -2.7189 -2.40157 -0.393726 -2.70971 -2.48726 -0.121874 -2.5635 -2.65427 -0.444955 -5.45084 2.25177 0.71766 -5.60454 2.46208 0.564752 -4.35675 1.89842 1.64482 -4.62399 2.09368 1.59515 -4.21343 2.113 1.75005 -3.9289 2.02877 1.77861 -4.61179 1.77743 1.45836 -3.14759 2.91117 1.52961 -3.02628 3.1289 1.33969 -2.93803 2.78965 1.40907 -3.08742 2.59319 1.57805 -3.41822 2.89885 1.68978 -3.31105 3.13485 1.575 -1.71171 -3.282 0.327746 -1.48737 -3.21386 0.594408 -1.37689 -3.3338 0.321419 -1.76916 -3.32425 0.0337589 -5.75579 2.71789 0.577461 -5.94258 3.03736 0.615121 -5.92602 3.12933 0.936607 -2.43954 2.2637 -0.607328 -2.5586 2.09251 -0.822849 -2.25817 2.04781 -0.56517 -2.25449 2.26809 -0.342304 -2.44527 2.48975 -0.420863 -2.67582 2.37823 -0.754694 -3.58753 2.45763 -1.10037 -3.37175 2.63871 -1.01289 -3.75839 2.7216 -1.07499 -3.9273 2.45569 -1.11191 -3.75132 2.17725 -1.14135 -3.42295 2.18566 -1.12784 -3.27519 4.26533 0.369612 -3.29396 4.28355 0.645469 -3.41113 4.49746 0.394895 -3.38743 4.36706 0.105512 -3.21926 4.10526 0.129837 -3.12959 4.02135 0.386715 -4.59978 6.05501 1.47473 -4.75672 6.00052 1.68133 -4.75382 6.28774 1.46787 -4.55922 6.20962 1.26715 -4.40091 5.91249 1.27753 -4.49943 5.81285 1.50403 --3.32642 3.74365 1.39215 --3.22072 3.4678 1.43697 --3.10095 3.7764 1.22664 --3.45644 3.98474 1.27466 --3.56871 3.64471 1.5077 -5.08133 4.10986 1.99889 -5.10824 3.79546 1.94206 -5.37527 4.10865 1.95805 -5.18142 4.44088 2.03637 -4.9002 4.37881 2.01722 -4.78193 4.05296 1.99051 -6.68639 5.22605 -0.36527 -6.88973 5.33685 -0.146801 -6.74693 4.93943 -0.17742 -6.50258 4.8874 -0.405334 -6.47977 5.39359 -0.555216 -6.66063 5.6248 -0.410682 -4.32157 5.62849 1.39112 -4.48352 5.55662 1.62522 -4.67681 5.75341 1.71701 -5.41299 2.46472 -0.265353 -5.25421 2.19126 -0.291126 -5.2031 2.46474 -0.540816 -5.3945 2.71948 -0.468382 -5.58851 2.57376 -0.0245429 -5.44063 2.27668 0.0201241 -4.17483 4.76697 -0.580916 -3.987 4.81406 -0.399019 -4.24679 5.02406 -0.497258 -4.38076 4.64899 -0.742947 -4.14359 4.48225 -0.692783 -3.92838 4.54649 -0.515749 -0.575086 -0.319375 0.137793 -0.426735 -0.549375 0.137022 -0.629651 -0.33705 0.411925 -0.747772 -0.0724315 0.27667 -0.664209 -0.167025 -0.0539383 -0.454213 -0.499526 -0.141241 --2.23743 0.183221 1.14406 --2.03553 0.303864 1.03692 --2.35352 2.4442 0.0314378 --2.32934 2.20449 -0.134264 --2.50272 2.48893 -0.211964 --3.37402 4.26158 0.279124 --3.43338 4.30651 0.596241 --1.87524 0.528798 -0.551478 --1.88602 0.762518 -0.433466 --1.73349 0.300054 -0.521238 --1.96498 0.303381 -0.724441 --2.12399 0.560175 -0.730776 --1.34324 -0.0638205 -0.0106493 --1.36259 -0.139144 -0.264176 --1.46066 0.167177 -0.0902646 --1.38353 0.00229609 0.231181 -3.26654 0.0517979 1.45709 -3.57829 0.203283 1.36573 -3.33354 0.35086 1.52647 -3.28727 -0.220293 1.34572 -3.56133 -0.067779 1.24567 --3.61696 0.37237 0.801219 --3.41898 0.600701 1.09081 --4.52311 2.36306 0.419571 --4.459 2.28875 0.715226 --4.61206 2.62362 0.582494 --4.60245 2.65124 0.262696 --4.47308 2.39624 0.101525 --4.41781 2.06891 0.43754 -4.83961 4.17782 -0.936775 -4.53058 4.12255 -0.923979 -4.74213 4.47107 -0.88896 -5.03151 4.46844 -0.906508 -5.14509 4.12191 -0.911607 -4.70785 3.87509 -0.967311 -5.50273 3.5124 1.71626 -5.40921 3.7919 1.8622 -5.18609 3.48348 1.84489 -5.31664 3.20545 1.68799 -5.59982 3.23616 1.50582 -5.7491 3.72678 1.66339 -6.99501 5.09825 1.19778 -7.1119 5.30977 0.944185 -6.98701 5.36939 1.32907 -6.83424 5.32885 1.56402 -6.81141 4.89449 1.39749 -6.92195 4.81256 1.07474 -7.06381 5.01224 0.807921 -5.43954 5.82508 2.07466 -5.73637 5.85909 2.08593 -5.53675 6.09281 1.9949 -5.23955 6.05765 1.94353 -5.16759 5.77041 2.0121 -5.40793 5.54383 2.10897 --2.86183 -0.526187 -0.881125 --2.32645 -0.553547 -1.02275 -2.21361 -2.78034 -0.906335 -1.47907 1.15197 0.434454 -1.36601 1.01447 0.12676 --2.97617 -1.69783 0.27075 --2.89925 -1.62673 0.525337 --3.11257 -1.4446 0.297451 --3.03623 -1.67693 0.00900469 --2.78326 -1.90367 0.225312 -6.25054 6.07188 -0.544069 -6.29252 6.31472 -0.368969 -6.55818 6.0203 -0.373311 -6.43253 5.80054 -0.54681 -6.07033 5.87985 -0.684812 -5.99506 6.26478 -0.527538 --3.63492 0.112787 0.575716 --3.78282 0.486513 0.586754 --3.69946 1.11331 -0.511145 --3.49857 0.892962 -0.632369 --3.77758 0.873102 -0.360233 --3.90739 1.29016 -0.336133 --3.7357 1.45884 -0.540173 --3.4879 1.25244 -0.670554 --2.62358 1.09068 1.27055 --3.09687 1.00106 1.30549 --1.70743 0.0728551 -0.619782 --1.68071 -0.194106 -0.728164 --1.91822 0.0349975 -0.793812 --1.52584 0.124315 -0.337607 --1.51563 -0.0964405 -0.504099 -5.47299 2.93282 1.42801 -5.22021 2.88501 1.60005 -2.5936 -1.6175 1.12672 -2.39091 -1.48471 1.28828 -2.37107 -1.85049 1.1555 -2.64336 -1.8804 0.93882 -2.83566 -1.67922 0.884339 -2.72542 -1.34267 1.17395 -3.24538 -0.925467 0.996022 -3.41791 -0.661114 1.00507 -3.11867 -0.739574 1.21044 --3.33699 -0.810996 -0.24462 -6.24747 4.70483 -0.539291 -5.93087 4.58114 -0.695508 -6.07499 4.91581 -0.685446 --2.95848 -1.72577 -0.267067 --2.86093 -1.65338 -0.558676 --2.74173 -1.88936 -0.362926 --2.82237 -1.9036 -0.0532058 -6.90693 4.77945 0.277344 -6.73574 4.66411 0.0214382 -6.94069 5.04888 0.0572767 -7.06979 5.0969 0.398044 -6.97763 4.80168 0.586328 -6.72735 4.4468 0.294997 --4.18283 1.72571 -0.0951115 --4.29739 1.79113 0.175601 --4.25773 2.02849 -0.121083 --4.06312 1.93244 -0.345216 --4.01319 1.56669 -0.294298 --3.84245 0.768694 0.713488 --3.98523 0.940984 0.515952 --4.6946 3.41935 0.935589 --4.76331 3.19011 0.728442 --3.70859 3.88878 1.3952 --3.88063 3.64395 1.50821 --3.60964 1.45595 1.25828 --3.33752 1.53579 1.36266 --3.64858 1.76612 1.32713 --4.35719 2.36099 1.00197 --4.52455 2.58589 0.867578 --2.65809 3.12868 0.93932 --2.60143 3.23586 0.689814 --2.78144 3.41075 1.01399 --2.83656 3.15778 1.18379 --2.65611 2.85603 1.05981 --4.71472 2.93161 0.357783 --4.70858 2.90754 0.660347 --4.78036 3.21658 0.405898 --4.61173 2.9052 0.0586183 --2.37413 2.26119 0.88467 --2.53193 2.29605 1.08505 --2.3734 1.94616 1.00572 --2.23997 2.05196 0.74335 --2.473 2.62022 0.87297 --3.05776 1.66242 1.38696 --3.18443 1.29657 1.34317 --3.1144 1.99968 1.41874 --3.36284 1.83392 1.40931 --2.93151 3.26702 -0.281744 --2.79929 3.02039 -0.270622 --2.76433 3.32045 -0.0580593 --3.19015 1.40848 -0.764239 --3.4701 1.55582 -0.68822 --4.15944 3.75397 -0.332298 --4.30116 3.96941 -0.058793 --3.80281 3.87197 -0.365872 --4.65055 3.79444 0.387216 --4.58019 3.90963 0.629851 --4.44185 4.0304 0.264238 --4.54924 3.80352 0.0883825 --4.74073 3.52963 0.316487 --4.7667 3.48666 0.599309 --4.67957 3.68312 0.770349 --3.6832 4.34775 0.45773 --3.66027 4.31012 0.800976 --4.16663 4.2224 0.7658 --3.90905 4.23887 0.95564 --3.92208 4.32679 0.622962 --4.16666 4.25078 0.434266 --4.39195 4.11526 0.538737 --4.39364 4.0416 0.857433 --4.1591 4.08814 1.06713 -0.9963 -0.54777 1.07884 -0.798767 -0.552889 0.890631 -0.817338 -0.956563 1.08861 --0.897974 -0.913917 0.179808 --0.986451 -0.986288 0.423002 --0.805115 -1.24111 0.166609 --0.816121 -1.04002 -0.0394137 -0.337806 -0.710791 -0.320536 -0.253942 -0.774728 0.00422765 -0.540335 -0.508611 -0.488465 -0.448634 -0.746107 -0.637475 -0.246884 -0.948563 -0.546828 -0.134343 -0.939422 -0.209397 -1.79182 -0.204334 -1.33122 -1.68044 -0.4419 -1.36272 -1.44567 -0.249134 -1.22029 -1.60329 -0.000688109 -1.20015 -1.86527 0.106519 -1.26752 -2.06888 -0.168414 -1.37421 -1.19518 -0.31502 1.15156 -0.974081 -0.276952 0.929857 -3.20761 0.0327246 -1.19272 -2.96251 -0.17737 -1.26434 -2.93481 0.141685 -1.29712 --1.79135 0.217624 0.857041 --1.89763 0.0174474 0.985016 --1.62781 -0.0164725 0.754094 -1.46163 0.730054 -0.670306 -1.63882 1.02086 -0.649026 -1.6978 0.838746 -0.848748 -1.57397 0.528616 -0.931397 -1.3707 0.473812 -0.77019 -1.26709 0.664551 -0.411118 -1.45798 0.943274 -0.440726 --1.39036 -0.336555 -0.516422 -1.99929 -2.54494 1.05919 -2.27284 -2.39304 0.947648 -2.097 -2.22734 1.1457 -1.80719 -2.34419 1.23004 -1.71359 -2.67017 1.11246 -1.90525 -2.83286 0.910082 -2.19068 -2.68021 0.831294 -6.20235 4.78057 1.87097 -6.3039 4.52233 1.68014 -6.4737 4.88409 1.74998 -6.20783 5.10743 1.98666 -5.92748 4.93304 2.02664 -5.93317 4.60645 1.92894 -4.37438 0.937406 1.1491 -4.42457 1.24506 1.30721 -4.15353 1.35912 1.53929 -5.03429 5.84506 -0.598155 -4.82043 5.91127 -0.445293 -5.10817 6.1067 -0.523355 -5.2629 5.73942 -0.713593 -4.9171 5.59072 -0.638849 -2.22149 1.63674 -0.815198 -2.05914 1.34602 -0.851874 -1.9747 1.55622 -0.621752 -2.10863 1.80549 -0.580732 -2.35931 1.8914 -0.779278 -6.35807 5.10049 -0.575905 -6.12564 5.2591 -0.710731 -5.80907 5.74225 -0.765336 -5.96024 5.50578 -0.767455 -5.50449 5.61488 -0.780989 -5.57882 5.91706 -0.724244 -6.09713 3.55251 1.15161 -6.11286 3.38233 0.836733 -6.292 3.755 1.00323 -5.90052 3.30628 1.2147 -6.95067 6.21531 0.633089 -6.89447 6.22777 0.321251 -6.76468 6.46966 0.642755 -6.90718 6.23708 0.949329 -7.06949 5.94046 0.787405 -7.06007 5.92689 0.443362 -6.08301 3.26753 0.497863 -6.27733 3.60827 0.67259 -2.02755 -2.96523 -0.869759 -1.67022 -3.03059 -1.00326 -2.68833 3.20102 0.680903 -2.75949 3.12449 0.975179 -2.80978 3.39339 0.733275 -2.58434 2.98402 0.739033 -4.42104 6.21925 0.562537 -4.6125 6.44923 0.413904 -4.47513 6.22947 0.310465 -4.32365 6.00536 0.363303 -4.27068 5.97012 0.619123 -4.44879 6.25959 0.811764 -4.58856 6.45642 0.689479 -0.107136 -0.99435 0.159022 --0.0106347 -1.21232 0.309946 -0.248245 -0.957804 0.435146 --0.058333 -1.13786 -0.049878 -4.83131 2.0991 -0.724842 -4.90236 2.39951 -0.773425 -5.07388 2.18804 -0.533646 -4.96941 1.89848 -0.485867 -4.62437 1.96303 -0.833869 -4.60885 2.33426 -0.930307 -2.84663 2.97084 1.22597 -2.89375 3.32192 1.03006 -2.66517 2.87245 1.04304 -2.64159 2.6459 1.1744 -2.80541 2.59759 1.37161 -3.65375 1.79993 1.76306 -3.58772 2.08755 1.78362 -3.3391 1.78086 1.74387 -3.52565 1.52231 1.73333 -3.94732 1.72612 1.71845 -5.52262 2.32271 0.288816 -5.6928 2.62698 0.256876 -5.39341 2.0934 0.462297 -5.30964 1.96214 0.236401 -2.8995 3.14617 -0.448658 -2.71267 3.03107 -0.283407 -2.84308 3.31154 -0.189996 -7.01691 5.6767 0.0975724 -3.4304 4.41893 0.902934 -3.43314 4.52598 0.647929 --2.86137 2.86663 1.27065 --3.05112 3.19167 1.36447 --3.31083 3.13624 1.5009 --3.43484 2.85095 1.5236 -5.4209 6.92367 0.664981 -5.16593 6.85103 0.595611 -2.41874 -2.69942 -0.718325 -2.27546 -2.94078 -0.592459 --2.0369 -1.38819 -1.03681 --2.26334 -1.60707 -0.933447 --2.26556 -1.11954 -1.07572 -2.49148 -1.59898 -1.23192 -2.39095 -1.3633 -1.33635 -2.74193 -1.39493 -1.11909 -2.73321 -1.64696 -1.02613 -2.37726 -1.88255 -1.22685 -2.18817 -1.73092 -1.3686 -3.8192 -0.400994 0.664269 -3.78649 -0.582894 0.436741 -3.95287 -0.325134 0.396717 -3.16898 3.12614 -0.719385 -3.25505 2.90951 -0.872861 -2.96878 2.94109 -0.665912 -3.09038 3.32178 -0.530885 -3.32818 3.38129 -0.700023 -3.44367 3.14194 -0.874567 -4.45667 4.39209 -0.848395 --1.91008 -0.272296 1.02624 --1.67769 -0.222704 0.86507 --2.44932 1.76129 -0.510931 --2.24364 1.60529 -0.391285 --2.7169 1.73209 -0.667163 --2.63854 2.01499 -0.54661 --2.38762 2.00168 -0.344863 --2.81091 3.77364 0.758511 --2.70216 3.50251 0.743846 --2.62764 3.37006 0.420453 --2.64722 0.406292 -0.900401 --2.89253 0.288019 -0.878955 --2.57831 0.708483 -0.850487 --2.36099 0.506001 -0.844763 -0.895645 0.171274 -0.213596 -0.808775 0.071615 0.0141342 -2.95261 0.0533246 1.54838 -2.99107 -0.240328 1.46408 -3.03735 0.338434 1.5919 -2.63866 0.106192 1.58832 -2.6756 -0.192832 1.54374 --3.58223 2.65527 -0.621348 --3.52167 2.96061 -0.590865 --3.71607 2.36708 -0.605868 -0.841079 -3.29945 0.0570917 -0.703276 -3.17306 0.35051 -0.572289 -3.17949 -0.0760034 -1.0237 -3.28325 0.368892 --0.0436037 -2.16221 -0.666844 -0.0329734 -2.47362 -0.567815 --0.143812 -2.21657 -0.374294 --0.173622 -1.93198 -0.50391 -0.135903 -2.33125 -0.866569 -5.36833 6.88996 0.927571 -5.63207 6.91207 0.986224 -5.11699 6.81666 0.884737 -5.22879 6.7857 1.16229 -5.51667 6.82769 1.22651 -0.492167 -2.17619 -1.27108 --3.06244 -0.219382 -0.79153 --3.03797 0.058671 -0.825575 --2.80057 -0.242033 -0.915327 --3.10368 -0.500938 -0.721575 --3.29542 -0.0443823 -0.640957 -3.54889 4.08056 1.40061 -1.89931 1.86609 -0.0710804 -1.84867 1.8375 0.241004 -2.02355 2.08502 -0.0307164 -1.9512 1.79016 -0.346736 -1.76372 1.65781 -0.0281872 --2.77906 -1.43475 0.785394 --3.00396 -1.36739 0.581025 -6.79416 4.48297 0.585706 -6.55862 4.1324 0.324986 -6.5515 4.33336 0.00538146 --3.0134 -0.702942 0.892845 --2.06307 1.41118 0.774104 --1.93006 1.29222 0.559759 --2.06566 1.64776 0.621783 --2.24012 1.49421 0.984831 --2.11375 1.17309 0.935011 -6.70855 6.46824 0.321907 -6.53738 6.66604 0.550523 -5.90359 6.87948 1.05218 -5.80869 6.8038 1.29069 -6.1261 6.7588 1.23687 -5.9791 6.91136 0.797835 -5.67244 4.00024 1.82601 -2.34523 0.0107702 1.56627 -2.05768 -0.0918584 1.51666 -2.36946 -0.289348 1.54743 -2.17102 0.257142 1.52927 --1.8031 -1.60722 0.889516 --2.01207 -1.41379 1.01376 --2.08253 -1.6673 0.895646 --1.87399 -1.85814 0.708345 --1.59652 -1.73724 0.716683 --1.584 -1.43783 0.888191 --3.17749 -0.739618 -0.584753 --3.03525 -1.04684 -0.662182 --2.38331 -0.827782 1.0985 --2.12203 -0.798324 1.09728 --4.20614 1.49573 0.233274 --3.61411 0.633831 -0.48362 --3.39191 0.541088 -0.661285 --3.50872 0.294484 -0.506347 --3.76867 0.554207 -0.223808 --2.2153 1.83113 -0.214637 --2.06518 1.51113 -0.190998 --3.99563 3.17577 1.54105 --3.78575 3.36682 1.57729 --4.12587 3.46106 1.48822 --2.61949 2.56123 1.10863 --2.8799 1.21924 1.33147 --3.70273 2.68702 1.50827 --3.87829 2.34639 1.38825 --2.53738 2.75205 -0.0886397 --2.71644 2.73588 -0.323424 --2.62841 3.0223 -0.0456433 --2.20901 1.75641 0.851081 --2.83704 2.23367 -0.582315 --2.93351 1.95043 -0.682603 --3.10037 2.33017 -0.643582 --2.73793 2.47912 -0.446965 --2.54364 2.25594 -0.38073 --2.35631 0.847093 -0.758055 --3.69009 3.29975 -0.550726 --3.64114 3.57544 -0.501258 --3.39702 3.23965 -0.527561 --4.54791 3.13128 -0.136918 --4.70613 3.22278 0.11291 --4.50048 3.42477 -0.196072 --2.88642 3.69011 1.03273 -2.38341 -2.1121 1.0194 -2.58797 -2.15508 0.800023 --0.00727345 -1.46213 0.536091 -4.57144 6.37544 1.00845 -4.32135 6.02922 0.855065 -4.42716 6.11782 1.08185 -2.39279 -1.02531 -1.37731 -2.28842 -0.736083 -1.41546 -2.66636 -0.877484 -1.2903 -2.65438 -1.17224 -1.24008 -2.12365 -1.16551 -1.44273 -0.947029 -0.0676544 0.751482 -3.54806 0.717383 -1.14804 -3.26958 0.598035 -1.23219 -3.40579 0.990112 -1.21566 -3.72564 1.00003 -1.1139 -3.83236 0.672323 -0.990881 -3.59199 0.426335 -1.07442 --1.12135 -0.718676 0.451641 -1.76789 -2.19618 -1.47054 -1.6378 -1.9417 -1.52956 -2.04021 -2.03279 -1.38621 -4.89006 3.45344 1.90968 -4.80873 3.75814 1.96531 -4.57393 3.50312 1.93919 -5.02 3.13923 1.79711 -1.22207 0.764637 0.0237609 -1.11716 0.562235 -0.119853 -5.49632 5.05005 -0.840496 -5.45755 4.73547 -0.856039 -5.17699 5.03477 -0.842001 -5.36126 5.31798 -0.814108 -5.82673 5.13193 -0.789 -5.75662 4.82527 -0.79249 -4.27014 0.178337 0.280502 -4.14421 -0.0251091 0.0243485 -4.34647 0.31634 0.0786384 -4.32143 0.32691 0.523987 -4.16118 0.1212 0.630855 -4.13256 -0.049425 0.305982 -1.6762 1.06075 0.963286 -1.73561 1.30879 0.859707 -1.65399 0.821687 1.08005 -1.87511 1.03272 1.19798 -2.83629 2.21114 -0.94015 -2.77105 1.94909 -1.01002 -5.02174 3.83418 -0.932701 -4.7044 3.56095 -0.986351 -4.42314 3.69439 -0.982837 -2.56565 3.04872 0.206605 -2.71708 3.26519 0.0829693 -2.03043 -0.8711 -1.45222 -2.08516 -1.46157 -1.43855 -1.8015 -1.08762 -1.48027 -5.0922 5.49635 2.02208 -4.89824 5.31474 1.96835 -5.27685 5.27503 2.08709 -4.89356 5.68995 1.89298 -5.01736 3.52753 -0.920366 -5.3179 3.50334 -0.797628 -5.02054 3.211 -0.885717 -6.49044 5.18705 1.85741 -6.61018 5.45154 1.80496 -6.27207 5.4244 2.01129 -6.72143 5.07267 1.61992 -3.71843 4.98606 0.794463 -3.84339 5.14079 0.946246 -3.83521 5.22737 0.582445 -3.70232 5.00076 0.545876 -3.5726 4.76918 0.644592 -3.70954 4.85213 1.01705 -5.20016 6.80911 0.279993 -4.97813 6.74239 0.422076 -4.91738 6.7294 0.743521 --1.30572 -0.230387 0.328422 --1.26269 -0.493418 0.49699 -4.94289 2.91628 -0.873557 -5.26455 2.91831 -0.677222 -5.07041 2.66266 -0.736423 -4.73056 2.64784 -0.926718 -4.63012 2.98139 -0.995705 -4.18763 2.41065 1.81447 -3.88454 2.33543 1.81838 -4.49948 2.31866 1.72578 -4.27902 2.68544 1.84945 -3.94758 2.66118 1.84511 -2.22773 -3.08715 -0.225525 -2.01225 -3.23091 -0.102127 -2.07452 -3.13061 -0.499213 -2.42395 -2.88864 -0.318726 -2.32791 -3.00243 0.0388688 -2.84437 2.10419 1.55233 -2.83202 2.3593 1.47806 -2.56001 2.11758 1.35314 -2.65597 1.91368 1.4878 -3.02213 1.92534 1.66125 -3.06792 2.30441 1.62743 -4.31478 0.38661 -0.228882 -4.47424 0.617429 -0.131772 -4.20269 0.136258 -0.144758 -4.16407 0.402035 -0.541856 -4.33324 0.612366 -0.446985 -2.63416 2.58818 -0.578693 -2.85448 2.66115 -0.735651 -2.96732 2.44879 -0.91125 -3.55803 4.74165 0.379557 -3.51793 4.60146 0.152682 -4.1725 5.76945 0.401769 -4.1198 5.71311 0.615241 -4.1742 5.77275 0.847412 --4.08181 3.80618 1.3755 -1.0643 0.392978 -0.327417 -1.20075 0.43481 -0.569611 -0.980424 0.158047 -0.490146 -0.162038 -2.61938 0.479033 -0.366356 -2.7069 0.688263 -0.177495 -2.41249 0.69027 -0.351842 -3.0032 -0.272337 -0.692377 -3.22119 -0.344686 -3.54396 -0.97595 0.439956 -3.69933 -0.786986 0.238805 -3.64407 -0.722773 0.600385 -3.37903 -1.04083 0.722992 -3.35584 -1.24202 0.506966 -3.5348 -1.07558 0.157881 -2.39197 2.71538 0.580599 -2.30652 2.50145 0.704393 -2.49901 2.75981 0.838906 -2.29916 2.60419 0.356278 -3.03314 3.48015 -0.329609 -3.0013 3.63469 -0.0882887 -3.19085 3.7252 -0.324681 -3.28809 3.60354 -0.534505 -2.91907 -1.42618 0.976741 -3.10603 -1.46338 0.720405 -3.03567 -1.16423 1.03796 --1.89338 -0.686378 1.0458 --2.98717 2.59789 -0.546802 --2.91852 3.59598 -0.103188 --2.10196 0.802975 -0.627258 --2.07143 1.04115 -0.494572 -3.71608 0.214891 -0.928515 -3.52728 0.0117537 -1.00289 -3.9196 0.432453 -0.841141 -3.79378 -0.0216493 -0.745151 --3.39165 0.28215 0.990615 --3.46821 0.049142 0.804971 --3.17466 0.429606 1.16422 --4.31576 2.31431 -0.156922 --4.08933 2.23466 -0.386964 -0.489774 -3.04492 -0.528126 --0.0491051 -2.47482 -0.284572 --0.106816 -2.38719 -0.00617952 -4.10808 0.133857 -0.393448 -4.00834 -0.200317 -0.168604 -3.966 -0.0939444 -0.434348 -3.96944 0.193297 -0.662922 --1.97006 -1.08846 -1.07646 --2.11733 -0.841206 -1.06313 --1.79887 -0.797267 -1.00332 --1.69038 -1.06764 -1.00967 -3.01407 3.82122 0.51079 -1.70308 -3.02515 0.807143 -1.50625 -2.85997 1.02444 --2.44454 -1.98341 -0.488616 --2.56059 -2.04087 -0.204201 --2.62185 -1.80532 -0.627859 -6.06827 4.3494 -0.555338 -5.99951 4.06054 -0.506586 -5.76495 4.2196 -0.709571 -6.30883 4.42189 -0.38052 -6.3331 4.17427 -0.211343 --2.26998 0.652422 1.13866 --2.39119 0.946479 1.18099 --2.38171 0.417202 1.19089 --1.31138 -0.580318 -0.605914 -4.96424 6.43441 1.52176 -4.93994 6.57882 1.29737 -4.93025 6.20864 1.6971 -2.98566 -1.89651 0.402875 -2.99504 -1.71947 0.629113 -2.80832 -1.98483 0.65407 -2.81584 -2.18673 0.372125 -2.94659 -2.06608 0.132394 -3.11419 -1.77568 0.181057 -3.40603 -0.49194 -0.910627 -3.34842 -0.210649 -1.05994 -3.60165 -0.278384 -0.817812 -3.18387 -0.663541 -1.03314 -5.34814 3.81044 -0.833436 -5.60963 3.60887 -0.649464 -5.49652 4.06618 -0.807599 --2.29419 -1.84626 -0.739208 -4.27438 5.84754 1.07025 --3.89592 0.631513 0.356508 --1.85793 1.23741 0.272008 --2.984 3.48143 1.25566 --4.03153 1.21798 0.708225 --2.74645 2.22476 1.27591 --3.02474 1.65309 -0.747063 --4.41029 3.70975 -0.17619 --4.24984 3.46726 -0.388549 --3.9372 4.02485 1.2545 --3.69259 4.14444 1.14672 --4.52043 3.81682 0.985501 --4.31262 3.86658 1.18948 --4.5472 3.57001 1.13125 -2.44903 -1.19904 1.35848 -2.1307 -1.35446 1.40226 -2.13544 -1.68333 1.31809 -1.42649 -1.36861 -1.50427 -1.49517 -1.09155 -1.46585 -1.78291 -1.39196 -1.50053 -1.57302 -1.63208 -1.53184 -1.26792 -1.69797 -1.54083 -1.14698 -1.30492 -1.44573 -2.55436 -2.74804 -0.0997885 -0.921482 -0.354725 -0.900431 -1.15208 -0.420503 -1.12993 -0.857148 -0.620642 -1.01832 -0.664955 -0.576517 -0.780862 -0.745309 -0.321461 -0.640641 -1.59308 -0.806716 -1.42613 -1.30754 -0.787314 -1.34896 -1.41082 -0.525132 -1.30332 -1.83431 -0.672451 -1.43214 -2.42403 0.251906 -1.33976 -2.32673 0.539772 -1.27671 -2.6952 0.391476 -1.32637 -2.65679 0.0367015 -1.34841 -2.37856 -0.108905 -1.37896 -2.15656 0.129054 -1.33176 --1.18888 -0.91227 0.646598 -0.882412 -0.0881433 -0.609349 -0.770957 -0.0798789 -0.342377 -2.52635 1.48861 1.51161 -2.25694 1.59913 1.30019 -2.37271 1.25519 1.47863 -2.66099 1.21726 1.60642 -2.81597 1.47105 1.63468 -2.79342 1.72577 1.59674 -2.4746 1.72046 1.42371 -4.91798 1.28038 0.273861 -5.0631 1.52727 0.316951 -4.86126 1.27644 0.681867 -4.80274 1.09753 0.442662 -4.75925 1.02914 0.111535 -4.9793 1.45803 -0.000749401 -1.84918 -3.27852 -0.353527 -1.87097 -3.13772 -0.730805 -1.79138 1.54489 -0.338139 -1.81327 1.33966 -0.599624 -3.78526 4.68329 -0.270443 -3.85384 4.92469 -0.140512 -4.05985 5.06709 -0.291874 -2.06778 -1.96345 1.25563 -3.70795 4.43073 -0.38155 -3.62239 4.61083 -0.0906214 -7.05587 5.36537 0.173371 -2.17179 2.35933 0.483175 -2.12679 2.18635 0.686334 -2.15588 2.35987 0.214716 -1.99257 2.04606 0.475675 -1.4513 1.10998 -0.128141 -1.32219 0.866066 -0.210534 -1.52076 1.27825 0.175661 -7.12196 5.61765 0.432257 -7.13462 5.63835 0.79101 -7.13779 5.3273 0.595929 -1.96244 1.88422 0.690245 -2.00865 2.11079 0.237972 -3.22209 2.39594 -1.03568 -3.09851 2.70525 -0.874481 -3.54576 2.88453 -0.996488 -5.97331 4.01783 1.655 -6.23816 4.18383 1.52577 -6.04459 4.34565 1.77096 -6.03504 3.75551 1.43031 -4.85426 1.95583 1.36929 -4.88441 2.27495 1.52269 -2.16662 2.30798 -0.0584886 -2.85463 3.48906 0.0797035 -4.36641 5.55982 -0.261211 -4.30659 5.70868 -0.048627 -4.54324 5.77112 -0.29545 -4.5239 5.46645 -0.465143 -3.56399 4.66754 0.890619 -3.63094 4.58997 1.15028 -1.31461 0.223415 -0.891566 -3.49211 -0.812993 0.779936 -3.20112 -1.23358 0.802344 -4.43517 2.7246 -1.03336 -4.13248 2.67651 -1.0835 -4.29889 3.03756 -1.04986 -4.32493 2.41509 -1.04704 --2.28032 1.36122 -0.539877 --2.07389 1.27868 -0.367909 --1.91479 -0.240171 -0.882894 --1.80039 -0.486833 -0.911414 -3.8584 -0.527549 0.166608 -4.00153 -0.283244 0.10977 -3.8231 -0.563548 -0.0719835 -7.07053 5.59914 1.12616 -6.93117 5.76231 1.38495 -4.4582 0.519046 0.423817 -4.48699 0.548742 0.152924 -4.62911 0.787241 0.227771 -4.04256 -0.111969 0.554354 --3.08706 -0.963685 0.706624 --2.21908 -2.10991 0.280895 --1.87545 -2.0957 0.296578 --2.08609 -2.02663 0.505274 --2.29524 -2.13855 -0.00481676 --2.01344 -2.15349 0.0464491 --3.26443 0.245008 -0.711839 --1.81299 1.01893 0.471673 -2.44308 -2.45355 0.732953 --3.15642 -1.15528 0.477426 --3.22291 -1.24522 0.14199 --2.0714 1.7205 0.0107002 --2.63485 -0.54142 1.10784 --4.00284 2.61531 1.40843 --4.21123 2.49355 1.23522 --3.89522 2.91285 1.5159 --3.73421 2.07515 1.37392 --2.61346 3.22496 0.187374 --2.33161 1.24054 1.11659 --3.20136 2.06015 -0.699392 --3.41658 2.33951 -0.663894 --3.2846 2.61073 -0.62382 --3.92793 3.62917 -0.467471 -0.932763 -1.33349 1.2523 -1.21468 -1.43739 1.3647 -0.697173 -1.20466 1.085 -0.702247 -1.51257 1.17191 -0.984833 -1.65444 1.3132 -4.29148 5.35702 1.52648 -4.48527 5.30227 1.72982 -4.70681 5.48 1.83156 --1.13707 -1.18549 0.635993 --0.940551 -1.26767 0.405044 -3.17393 -0.948401 -0.923305 -2.93503 -0.799032 -1.16505 -3.13595 -0.392096 -1.14549 -3.05366 1.16856 -1.24781 -3.64599 1.29417 -1.16887 -2.19474 1.14273 -1.04246 -1.86283 1.13158 -0.812356 -2.71438 -1.08043 1.29166 -2.46136 -0.881258 1.43992 -2.176 -1.04017 1.45652 -3.57308 1.21911 1.67994 -3.29939 1.06231 1.68362 -3.69656 0.955089 1.58606 -3.84272 1.42387 1.67103 -3.24597 1.37705 1.71614 -3.09243 2.12565 -1.07241 -5.60786 3.32385 -0.547914 -5.85521 3.40983 -0.329565 -5.55673 3.04266 -0.465128 -5.31726 3.20608 -0.728994 -3.51775 4.38546 -0.163124 -3.33964 4.15832 -0.103068 -3.9345 3.83269 1.77134 -4.20448 4.11555 1.84824 -5.80742 3.13501 -0.193377 -5.61141 2.81739 -0.242531 -1.62973 1.20718 -0.446421 -2.34045 -2.75764 0.581962 -2.65502 -2.31421 0.552283 -0.807092 -0.12324 0.548428 -5.62661 4.47492 -0.805358 -5.03009 5.07086 2.03718 -4.77233 4.9352 1.9674 -5.07227 4.76557 2.05017 -5.33643 4.99678 2.08818 -4.1407 5.38491 1.30771 -4.19171 5.62116 1.17016 -3.99973 5.33233 1.08836 -4.03717 5.13834 1.3446 --2.0196 -1.70639 -0.879159 --1.94131 -1.90515 -0.684687 --1.76841 -1.58993 -0.905342 -4.72516 6.44662 1.21841 -4.73792 6.57493 0.915771 -3.68287 4.18187 -0.526314 -3.50624 4.1701 -0.351124 -3.90995 4.2848 -0.642594 -3.70735 3.95738 -0.66932 -2.93633 -1.07939 -1.07913 --3.20956 4.09792 0.063764 --3.50183 4.17958 -0.0142002 -3.91306 -0.155595 0.788118 --4.39097 2.09575 0.146491 -0.184576 -2.77154 -0.463524 -0.0870141 -2.71703 -0.193715 -0.219426 -2.60801 -0.775769 -4.20285 3.82822 1.88007 -4.25872 3.538 1.90751 -4.49702 3.79386 1.94889 --1.57328 -2.03973 -0.222727 --1.7838 -2.02128 -0.456646 --1.49434 -1.90895 -0.46828 --0.957513 -1.3728 -0.447891 --1.20402 -1.4363 -0.67009 -6.83616 6.17327 1.25295 -7.00706 5.93239 1.10711 --3.41004 -0.242093 0.708752 --3.56609 -0.173589 0.451116 --3.90355 0.773166 -0.0564864 -3.3433 -1.3011 -0.351382 -3.25465 -1.53753 -0.15651 -3.19202 -1.43629 -0.547186 -3.41507 -1.27939 -0.0436594 -2.98183 -0.522819 1.37626 -5.9832 3.18839 0.141472 -5.77964 2.88845 0.0259852 --2.13926 -2.01567 -0.53657 --1.9672 -2.11993 -0.265938 --2.25909 -2.10993 -0.274683 --1.79485 -0.94831 1.02389 --1.57427 -1.12795 0.944994 --2.06365 -1.07664 1.07462 --1.80838 -1.26245 1.01602 --3.83176 2.09083 -0.547069 --3.86997 1.74371 -0.481612 --1.94632 1.44485 0.0887583 --1.96622 1.51643 0.384777 --4.32638 3.59105 1.34152 --3.22813 4.02811 1.09674 --4.08072 2.20495 1.22251 --3.46697 2.1126 1.44245 --3.29245 1.78538 -0.723477 --3.63377 1.80859 -0.628613 --3.51612 2.06123 -0.667671 --3.46311 4.20389 0.989019 -1.49452 -0.115509 1.29499 -1.75305 -0.0357478 1.41123 -0.768827 -1.40298 -1.34296 -0.556678 -1.30991 -1.18129 -0.898478 -1.15196 -1.30738 -1.01361 -1.54357 -1.47238 -0.702543 -1.68077 -1.39488 -1.09328 -0.664853 -1.20743 -1.18661 -1.02369 -1.3797 --1.42558 -0.33841 0.641049 -6.05708 6.63049 1.50038 -6.41749 6.64977 1.16437 -6.22387 6.81625 0.942876 -3.09076 1.62294 1.70022 -4.52234 1.67209 -0.815015 -4.28146 1.77505 -0.987945 -4.7855 1.72238 -0.598852 -2.49956 2.93473 0.47466 -2.64666 3.19735 0.414795 -5.36114 4.70226 2.06292 -5.6335 4.97865 2.08567 -5.28675 2.02038 0.791557 -2.77353 3.41595 0.378211 -2.95748 3.57676 0.873368 -2.88726 3.59112 0.567287 -5.71434 5.57136 2.13322 -5.60691 5.27755 2.12246 -3.97017 3.55059 1.82765 -4.10181 3.25591 1.87995 -4.41362 3.24039 1.9119 -4.15012 5.50191 -0.00880473 -4.30526 5.8667 0.152321 -4.4775 5.92667 -0.0920593 --3.48564 3.36832 1.55142 --3.64021 3.07456 1.56285 -1.19266 -0.18378 -1.03496 -1.35133 0.0175528 -1.04411 -0.221046 -1.87146 0.890689 -0.227082 -2.15703 0.861571 -0.450742 -1.91364 1.08247 -0.382439 -1.64119 1.00028 -0.0408999 -1.72004 0.681575 -0.0321474 -2.01193 0.663585 -4.94411 6.68435 1.06579 -2.12227 1.99626 0.902725 -2.2774 2.30864 0.883211 -3.47658 3.86628 -0.539858 -3.53121 3.63415 -0.711546 -0.383882 -2.43701 0.904313 --0.0119596 -2.44544 0.307758 -0.0438695 -2.63832 0.0917509 -0.0047199 -2.24636 0.530223 --0.141071 -2.1755 0.263726 -0.952041 -1.84257 -1.50654 -0.745924 -2.07318 -1.4291 -1.07238 -2.11443 -1.52431 --2.67241 -1.67249 0.712594 --2.69159 -1.85502 0.484789 --1.74437 -2.11499 -0.0390346 --1.59144 -2.04819 0.192405 --3.23048 -0.613651 0.726188 --3.1003 0.484134 -0.812179 --1.73891 -1.97595 0.500675 --2.26099 -1.31324 1.03791 --1.92367 1.23808 -0.129631 --4.64713 3.51719 0.0411152 -1.80291 -2.0016 1.32456 -1.85548 -1.59922 1.39789 -4.70161 5.67007 -0.485873 -4.31853 5.26837 -0.413047 -6.47695 4.35871 1.38263 -6.57226 4.6753 1.52743 -2.04855 -0.472272 -1.41666 -4.00005 0.924923 -0.951886 -2.25363 0.848354 -1.17504 -1.97693 0.94876 -1.00173 -1.63528 -3.25353 -0.648317 -4.19376 0.656773 1.13759 -4.35117 0.605262 0.880451 -4.23031 0.368505 0.823966 -4.49884 0.67108 0.643434 -4.20074 4.22861 -0.813157 -4.19619 5.10754 1.55477 -4.38704 5.0511 1.74036 -3.99278 4.88077 1.4551 -4.18852 4.84039 1.66155 -2.59518 -1.9158 -1.03502 -1.8139 1.71736 0.507648 -1.6818 1.54618 0.289751 -0.336473 -0.750648 0.31608 -5.87675 2.93202 0.325721 -3.67806 2.98568 1.78283 -3.53653 3.25716 1.6805 -3.65639 2.68115 1.79697 -3.98036 2.95554 1.85837 -3.81875 3.25468 1.80484 -2.36931 1.92379 1.26401 -2.15654 1.79216 1.10497 -1.95369 1.69345 0.886935 -2.00576 1.52792 1.08257 -2.0952 2.04456 -0.309954 -4.51107 0.874528 0.904642 -0.610712 -0.311749 -0.307799 --1.74496 -1.33763 -0.997484 --1.45212 -1.25074 -0.889817 -0.661269 -1.04324 -1.11131 -0.634762 -0.824682 -0.948262 -0.918939 -0.88082 -1.20299 -0.372291 -1.21874 -0.975902 -2.58019 -0.607671 -1.35187 -2.87306 -0.523565 -1.25403 -2.34672 -0.40951 -1.40023 -2.67291 -0.281842 -1.3442 --4.46605 2.6595 -0.0750197 -3.64734 -0.497828 0.857082 -3.52848 -0.351629 1.10692 -3.28093 -0.491017 1.22485 --0.213742 -2.13849 -0.0684245 --1.48472 -0.937236 -0.902424 --1.56183 -0.668097 -0.857501 -1.63334 1.38087 0.535899 -1.63206 1.44375 -0.0133946 --2.48138 -2.03242 0.336024 --1.2438 -1.85587 -0.27945 --1.68491 -1.80091 -0.719222 --1.41968 -1.70717 -0.658728 -2.95214 -0.959692 1.21211 -2.75378 -0.766303 1.38522 -4.66517 5.16481 1.88339 -1.87003 -0.939994 1.47548 -1.86338 -1.26014 1.44671 -2.1231 -0.721096 1.50286 -1.82562 -0.617931 1.47843 --1.34774 -1.30235 0.793023 --1.14457 -1.46044 0.574023 --1.45534 -0.113742 0.557684 -1.79229 1.53257 0.740421 -3.43772 0.802948 1.61639 -3.20445 0.640149 1.6245 -3.56751 0.536357 1.5004 -1.59329 0.376284 1.21677 -1.73238 0.635661 1.2334 -5.22833 6.33029 -0.43389 -4.96776 6.38157 -0.23813 -5.1791 6.547 -0.200233 -5.44141 6.49044 -0.364217 -5.51654 6.24094 -0.571262 -2.92746 3.66704 0.275867 -6.34654 6.54281 1.43326 -3.25039 -1.5602 0.11322 -2.85944 -2.23279 -0.0732012 -4.38275 2.07604 -0.991394 -4.09042 2.18951 -1.09581 -5.75814 4.29225 1.89287 -2.74832 2.85199 -0.505114 -3.68766 4.82552 0.0631025 -3.83732 5.08283 0.0925874 -3.69807 4.9538 0.298257 -1.55969 0.266167 -1.0613 -2.91261 0.661908 1.64556 -3.02363 0.943336 1.67299 -2.71551 0.953587 1.63465 -2.60253 0.688273 1.61557 -2.74231 0.398447 1.61799 -6.48291 4.13995 1.12826 -6.70707 4.56524 1.22483 -0.504343 -0.578583 0.460941 -0.0467313 -1.11571 -0.419416 -0.169507 -1.20597 -0.739227 --0.0723879 -1.34365 -0.513731 --0.177271 -1.31162 -0.246719 -4.90379 6.17759 -0.356758 -5.3405 6.02825 -0.644789 -2.78225 1.00994 -1.2548 -3.13091 -1.69876 -0.320607 -4.47499 4.07246 1.94158 -0.412326 -0.980694 -0.828668 -3.34711 3.95865 -0.327486 -3.37465 -1.32531 0.249912 -3.19526 -1.53907 0.43947 --2.2061 0.251646 -0.857804 -0.247761 -2.9145 -0.0117359 -0.455752 -3.07293 0.163174 -0.219303 -2.8124 0.28056 --1.48099 -1.50251 -0.829242 -5.93164 3.68532 -0.40056 -6.05283 3.4355 -0.0316498 -6.79265 5.63829 1.61471 -6.6083 5.84948 1.74583 -5.951 6.69825 -0.100776 -5.75294 6.59186 -0.28301 -5.71199 6.79355 0.0184065 -6.05111 6.49981 -0.316511 --0.999869 -1.56258 0.343525 -2.67989 -0.484584 1.48402 -2.39535 -0.594343 1.50711 -6.29584 6.36949 1.66271 -6.57645 6.28739 1.50741 -6.01081 6.43817 1.73173 -6.13006 6.19322 1.87146 -6.45407 6.10996 1.74697 -0.730679 -0.395163 0.688005 -2.87083 0.71092 -1.29382 -3.12719 0.869261 -1.26455 -3.02126 0.42801 -1.28565 -2.57405 0.67679 -1.28791 -4.12177 0.651651 -0.747676 -0.586553 -2.46589 -1.23518 -1.89981 0.176955 1.44263 -0.555262 -0.703911 0.683419 -3.34187 0.283585 -1.17247 -6.18166 6.82179 0.350148 -6.16875 6.72622 0.0688665 -3.82576 0.111321 1.13027 -5.74637 3.87107 -0.634074 -3.65573 -0.864897 -0.0280244 --2.03556 -0.58493 -1.00781 --0.962678 -1.58874 -0.308596 --1.18427 -1.67338 -0.492639 --0.787314 -1.42904 -0.102052 --1.0209 -1.73883 -0.101643 --1.37145 -1.59448 0.686084 --1.23301 -1.73376 0.442084 -4.84478 2.5234 1.65528 -6.46945 3.96742 0.835967 -6.62786 4.19802 0.655412 -4.71108 3.26124 -0.986653 -1.30906 -1.7287 1.38482 -1.61143 -1.80982 1.38709 -1.54339 -1.48862 1.4185 -1.29118 -2.01526 1.36748 -4.65175 6.3784 0.141357 -4.82002 6.59405 0.263494 -4.85959 6.47672 -0.0217641 -4.69028 6.24067 -0.0947652 -4.4889 6.1068 0.083698 -4.40184 3.33694 -1.02265 --1.56747 0.433475 -0.0436031 --1.63338 0.389874 -0.302603 --0.197666 -1.59359 -0.459092 --0.0779926 -1.7566 -0.692614 -1.4817 -0.365115 1.34121 -5.89633 6.08441 1.98954 -6.27472 5.93005 1.93426 -4.01904 0.114727 0.901652 -3.75072 -0.182644 0.995939 -2.45719 2.54729 0.980497 -0.693332 -0.804017 0.916064 -1.1272 0.176144 -0.715731 -3.00945 -1.5491 -0.759985 -3.18123 -1.20069 -0.769402 -0.0274662 -1.46365 -0.748285 --2.56225 -2.0567 0.0780375 -1.58256 -1.2015 1.43451 -3.05691 -1.88918 -0.116947 -3.98267 2.93008 -1.0623 -4.6792 6.03583 -0.248493 -2.43685 0.363819 1.5864 -3.70348 3.52556 1.71342 -1.83603 0.411313 1.36829 -5.65818 4.66438 2.02439 -3.8853 5.05031 1.16876 -4.65334 0.869003 0.51696 -6.53091 4.59908 -0.233095 -6.75779 6.01931 1.50915 -6.63874 6.43303 1.24419 -3.60485 2.39428 1.79237 -3.33376 2.35303 1.72613 -5.03487 6.65485 0.0779902 -5.29225 6.72323 -0.00264884 -0.682554 -1.77132 1.21017 -5.51032 6.67496 -0.162077 --1.35356 -1.96607 -0.0531971 --1.33195 -1.92089 0.21685 --1.4832 -1.88243 0.477699 -5.73332 6.39403 -0.474629 -2.97807 1.23731 1.6815 -3.50333 4.35091 1.14806 -1.24969 -2.30845 1.31772 -1.48173 -2.51244 1.2417 -1.55307 -2.18502 1.33192 -0.431625 -2.95125 0.442724 -2.07865 -0.396464 1.52085 -4.21847 1.47618 -0.959538 -3.93133 1.58264 -1.1044 -4.21127 1.13045 -0.866204 -3.95771 1.26871 -1.05316 -4.82686 1.23036 -0.0898065 -4.61541 0.865908 -0.120677 -4.78625 1.39445 -0.375139 -4.20963 1.65646 1.62192 -4.45 1.51805 1.43825 -3.9058 5.31517 0.79878 -6.26591 3.9462 1.29562 -6.53298 6.28967 -0.20737 -6.53832 6.5005 0.0566181 -5.2032 1.76706 0.403345 -5.13831 1.71867 0.0509462 -5.12024 1.87673 -0.232021 -5.28893 2.02777 -0.0236116 -2.50009 0.962039 -1.21678 -2.03612 0.676161 -1.14653 -5.75137 6.29458 1.88841 -6.15442 3.93536 -0.286305 --1.09909 -1.78527 0.138912 --0.86237 -1.54507 0.114611 -5.17196 6.2783 1.78999 -4.97714 5.96315 1.8617 -4.0028 5.50798 0.687783 -3.98686 5.46925 0.434364 -3.81488 4.81064 1.26534 -4.50567 4.8653 1.86085 -2.62118 2.36918 1.30126 -4.28542 4.64589 1.78728 -4.33502 4.36976 1.86662 -4.5518 4.60332 1.92335 -4.04779 3.78449 -0.895859 -3.9688 4.04129 -0.780688 -4.29203 3.95453 -0.916237 -6.2876 6.81621 0.640181 -3.68368 3.79203 1.63444 -4.81931 4.65532 2.00249 -1.88246 -1.74879 -1.47807 -4.76888 6.62329 0.57421 -1.12509 -3.16951 -0.84588 -1.90506 1.29572 1.09971 -2.15641 1.36484 1.30612 -4.61852 4.32858 1.96643 -6.7159 6.48222 0.952146 -4.12571 5.62118 0.224686 -3.98719 5.36739 0.167796 -1.34817 -2.00593 -1.55841 -3.05651 3.84653 0.148626 -3.1696 3.89738 -0.0939009 -5.75799 6.68102 1.50991 -1.79773 0.653071 -1.02854 -2.29958 2.10351 1.08738 --0.128184 -1.90268 0.439787 -3.26969 2.06654 1.72671 -5.19114 6.66123 1.38853 -5.91983 5.24911 2.09809 -3.86438 -0.399574 -0.28046 -3.70682 -0.53187 -0.484605 -3.78908 -0.274399 -0.578751 -2.44256 2.32066 1.13015 --1.55262 -0.424198 -0.738876 -6.05052 5.80848 2.05129 -2.07142 0.401857 -1.24737 -4.02043 1.88971 -1.1004 -3.71078 1.88293 -1.16101 -3.84766 5.21151 0.332386 -1.77662 -0.317695 1.45267 -0.989911 -1.94255 1.32892 -2.41566 0.976127 1.54442 -2.33499 0.63801 1.55087 -5.49068 4.38816 1.99693 -4.95415 1.60811 -0.276694 -5.80811 6.08693 -0.657578 -5.8141 3.47802 1.46329 -5.1395 5.46839 -0.750583 -5.67682 5.37944 -0.807399 -3.34488 2.64026 1.69784 -0.23951 -1.48039 -1.0031 -3.39468 4.10375 1.18297 -5.18786 4.71238 -0.881035 -5.34286 4.36839 -0.87583 -6.67348 4.35049 0.962775 -4.7061 1.52652 1.2247 -6.2992 6.54826 -0.12266 -6.5045 6.67914 0.867196 -3.99441 5.21358 -0.0625023 -4.1803 5.3428 -0.213286 -4.06848 5.54374 0.950084 -6.85965 4.62002 0.860343 -6.42626 6.67904 0.269565 -1.00366 -3.2753 -0.567987 -1.60287 1.31145 -0.22993 -6.01536 5.53762 2.09694 -4.62302 1.213 1.0716 -4.68684 1.06266 0.793353 -6.41069 5.6685 1.9289 -1.01531 -2.64462 -1.33261 -1.16134 -2.37991 -1.47818 -1.27247 -2.99597 -1.09768 -1.0272 -2.88095 -1.16509 -0.586194 -2.92571 0.674941 -1.43883 -3.16763 -0.87223 -1.05392 -0.07426 -0.833896 -0.831701 -2.37767 -1.39552 --0.178126 -1.37501 0.202387 -2.10804 1.10872 1.35497 -1.80263 0.372686 -1.15221 -1.54626 -0.628755 1.40473 --0.821186 -1.21034 -0.252178 -6.25101 5.59041 -0.675114 -4.29624 2.96824 1.88425 -2.96901 -1.34288 -0.937122 diff --git a/include/config.h.in b/include/config.h.in index a4f947c..5356bcb 100644 --- a/include/config.h.in +++ b/include/config.h.in @@ -1,3 +1,6 @@ +#ifndef _MGL_CONFIG_H_ +#define _MGL_CONFIG_H_ + /* This define enables double precision in MathGL */ #define MGL_USE_DOUBLE ${MGL_USE_DOUBLE} @@ -19,3 +22,5 @@ #define MGL_HAVE_PYTHON ${MGL_HAVE_PYTHON} #define MGL_HAVE_OCTAVE ${MGL_HAVE_OCTAVE} #define MGL_HAVE_DOC ${MGL_HAVE_DOC} + +#endif diff --git a/include/mgl/base.h b/include/mgl/base.h index 2de3364..eb59298 100644 --- a/include/mgl/base.h +++ b/include/mgl/base.h @@ -133,8 +133,13 @@ inline mglPnt operator*(float b, const mglPnt &a) //----------------------------------------------------------------------------- struct mglTexture { - mglColor col[514]; - long n; ///< Number of initial colors along u + mglColor col[514]; ///< Colors itself + long n; ///< Number of initial colors along u + + char Sch[260]; ///< Color scheme used + int Smooth; ///< Type of texture (smoothing and so on) + float Alpha; ///< Transparency + mglTexture() { n=0; } mglTexture(const char *cols, int smooth=0,float alpha=1) { n=0; Set(cols,smooth,alpha); } @@ -328,12 +333,12 @@ public: { const mglPnt &p=Pnt[i]; return mglPoint(p.x,p.y,p.z); } inline float GetClrC(long i) { return Pnt[i].c; } inline long GetPntNum() { return Pnt.size(); } - inline mglPnt GetPnt(long i) { return Pnt[i]; } + inline mglPnt &GetPnt(long i) { return Pnt[i]; } inline mglPrim &GetPrm(long i) { return Prm[i]; } inline long GetPrmNum() { return Prm.size(); } - inline mglText GetPtx(long i) { return Ptx[i]; } + inline mglText &GetPtx(long i) { return Ptx[i]; } inline long GetPtxNum() { return Ptx.size(); } - inline mglTexture GetTxt(long i){ return Txt[i]; } + inline mglTexture &GetTxt(long i){ return Txt[i]; } inline long GetTxtNum() { return Txt.size(); } /// Scale coordinates and cut off some points virtual bool ScalePoint(mglPoint &p, mglPoint &n, bool use_nan=true); @@ -366,7 +371,8 @@ public: virtual float text_plot(long p,const wchar_t *text,const char *fnt,float size=-1,float sh=0,float col=-('k'),bool rot=true)=0; void vect_plot(long p1, long p2, float s=1); inline float mark_size() { return MarkSize*font_factor; } - inline char last_color() { return *last_style; } +// inline char last_color() { return last_style[1]; } + inline const char *last_line() { return last_style; } protected: mglPoint FMin; ///< Actual lower edge after transformation formulas. @@ -436,13 +442,16 @@ private: //----------------------------------------------------------------------------- class mglData; class mglParser; +class mglFormula; typedef mglBase* HMGL; typedef mglData* HMDT; typedef mglParser* HMPR; +typedef mglFormula* HMEX; typedef const mglDataA* HCDT; #else typedef void *HMGL; typedef void *HMDT; +typedef void *HMEX; typedef void *HMPR; typedef const void *HCDT; #endif diff --git a/include/mgl/canvas_cf.h b/include/mgl/canvas_cf.h index b1c01c6..56a2636 100644 --- a/include/mgl/canvas_cf.h +++ b/include/mgl/canvas_cf.h @@ -67,6 +67,12 @@ void mgl_legend_pos(HMGL gr, float x, float y, const char *font, float size, flo void mgl_legend(HMGL gr, int where, const char *font, float size, float llen); void mgl_set_legend_marks(HMGL gr, int num); +HMEX mgl_create_expr(const char *expr); +void mgl_delete_expr(HMEX ex); +mreal mgl_expr_eval(HMEX ex, mreal x, mreal y,mreal z); +mreal mgl_expr_eval_v(HMEX ex, mreal *var); +mreal mgl_expr_diff(HMEX ex, char dir, mreal x, mreal y,mreal z); +mreal mgl_expr_diff_v(HMEX ex, char dir, mreal *var); void mgl_show_image(HMGL gr, const char *viewer, int keep); void mgl_write_frame(HMGL gr, const char *fname,const char *descr); @@ -175,6 +181,10 @@ void mgl_legend_pos_(uintptr_t *gr, float *x, float *y, const char *font, float void mgl_legend_(uintptr_t *gr, int *where, const char *font, float *size, float *llen,int l); void mgl_set_legend_marks_(uintptr_t *gr, int *num); +uintptr_t mgl_create_expr_(const char *expr, int); +void mgl_delete_expr_(uintptr_t *ex); +float mgl_eval_expr_(uintptr_t *ex, float *x, float *y,float *z); +float mgl_diff_expr_(uintptr_t *ex, const char *dir, float *x, float *y,float *z, int); void mgl_show_image_(uintptr_t *graph, const char *viewer, int *keep, int); void mgl_write_frame_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); @@ -189,7 +199,7 @@ void mgl_write_idtf_(uintptr_t *graph, const char *fname,const char *descr,int l void mgl_write_gif_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); void mgl_start_gif_(uintptr_t *graph, const char *fname,int *ms,int l); void mgl_close_gif_(uintptr_t *graph); -void mgl_write_obj_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); +void mgl_write_obj_(uintptr_t *graph, const char *fname,const char *descr, int *use_png,int lf,int ld); void mgl_write_stl_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); void mgl_write_off_(uintptr_t *graph, const char *fname,const char *descr,int *colored,int lf,int ld); void mgl_write_xyz_(uintptr_t *graph, const char *fname,const char *descr,int lf,int ld); @@ -263,7 +273,7 @@ int mgl_fltk_run_(); int mgl_qt_run_(); /*****************************************************************************/ void mgl_wnd_set_delay(HMGL gr, float dt); -void mgl_setup_window(HMGL gr, int autoclf, int showpos, int clf_upd); +void mgl_setup_window(HMGL gr, int clf_upd, int showpos); void mgl_wnd_toggle_alpha(HMGL gr); void mgl_wnd_toggle_light(HMGL gr); void mgl_wnd_toggle_zoom(HMGL gr); @@ -279,7 +289,7 @@ void mgl_get_last_mouse_pos(HMGL gr, float *x, float *y, float *z); /*****************************************************************************/ void mgl_get_last_mouse_pos_(uintptr_t *gr, float *x, float *y, float *z); void mgl_wnd_set_delay_(uintptr_t *gr, float *dt); -void mgl_setup_window_(uintptr_t *gr, int *autoclf, int *showpos, int *clf_upd); +void mgl_setup_window_(uintptr_t *gr, int *clf_upd, int *showpos); void mgl_wnd_toggle_alpha_(uintptr_t *gr); void mgl_wnd_toggle_light_(uintptr_t *gr); void mgl_wnd_toggle_zoom_(uintptr_t *gr); diff --git a/include/mgl/define.h b/include/mgl/define.h index 8892b18..4ce25bc 100644 --- a/include/mgl/define.h +++ b/include/mgl/define.h @@ -167,7 +167,7 @@ enum{ // Codes for warnings/messages // flags for internal use only #define MGL_DISABLE_SCALE 0x000200 ///< Temporary flag for disable scaling (used for axis) #define MGL_FINISHED 0x000400 ///< Flag that final picture (i.e. mglCanvas::G) is ready -#define MGL_AUTO_CLF 0x000800 ///< Clear canvas between drawing +//#define MGL_AUTO_CLF 0x000800 ///< Clear canvas between drawing #define MGL_SHOW_POS 0x001000 ///< Switch to show or not mouse click position #define MGL_CLF_ON_UPD 0x002000 ///< Clear plot before Update() //#define MGL_HIGHLIGHT 0x004000 ///< Highlight plot diff --git a/include/mgl/mgl.h b/include/mgl/mgl.h index 6a39fa0..4f9d536 100644 --- a/include/mgl/mgl.h +++ b/include/mgl/mgl.h @@ -1126,4 +1126,21 @@ public: inline void Stop() { mgl_parser_stop(pr); } }; //----------------------------------------------------------------------------- +/// Wrapper class expression evaluating +class mglExpr +{ + HMEX ex; +public: + mglExpr(const char *expr) { ex = mgl_create_expr(expr); } + ~mglExpr() { mgl_delete_expr(ex); } + inline mreal Eval(mreal x, mreal y=0, mreal z=0) + { return mgl_expr_eval(ex,x,y,z); } + inline mreal Eval(mreal var[26]) + { return mgl_expr_eval_v(ex,var); } + inline mreal Diff(char dir, mreal x, mreal y=0, mreal z=0) + { return mgl_expr_diff(ex,dir, x,y,z); } + inline mreal Diff(char dir, mreal var[26]) + { return mgl_expr_diff_v(ex,dir, var); } +}; +//----------------------------------------------------------------------------- #endif diff --git a/include/mgl/window.h b/include/mgl/window.h index 44b42c1..7bab88d 100644 --- a/include/mgl/window.h +++ b/include/mgl/window.h @@ -27,7 +27,7 @@ /// Make inherited class and redefine Draw() function if you don't want to use function pointers. struct mglDraw { - virtual int Draw(mglGraph *){} ///< Function for drawing + virtual int Draw(mglGraph *)=0; ///< Function for drawing virtual void Reload() {} ///< Function for reloading data #if MGL_HAVE_PTHREAD pthread_t thr; @@ -102,8 +102,8 @@ public: inline void SetDelay(float dt) ///< Delay for animation in seconds { mgl_wnd_set_delay(gr, dt); } - inline void Setup(bool autoclf, bool showpos, bool clf_upd) - { mgl_setup_window(gr, autoclf, showpos, clf_upd); } + inline void Setup(bool clf_upd=true, bool showpos=false) + { mgl_setup_window(gr, clf_upd, showpos); } inline mglPoint LastMousePos() ///< Last mouse position { mglPoint p; mgl_get_last_mouse_pos(gr,&p.x,&p.y,&p.z); return p; } }; @@ -118,15 +118,14 @@ public: void SetSize(int w,int h); void EndFrame(); const unsigned char *GetBits(); - void Clf(mglColor Back=NC); inline int GetNumFig() { return NumFig; } inline int GetCurFig() { return CurFig; } void SetCurFig(int c); void ClearFrames(); inline mglPoint GetMousePos() { return LastMousePos;} // stupid thing to pass G++ bug inline void SetMousePos(mglPoint p) { LastMousePos=p; } - inline void Setup(bool autoclf, bool showpos, bool clf_upd) - { set(autoclf,MGL_AUTO_CLF); set(showpos,MGL_SHOW_POS); set(clf_upd,MGL_CLF_ON_UPD); } + inline void Setup(bool clf_upd=true, bool showpos=false) + { set(showpos,MGL_SHOW_POS); set(clf_upd,MGL_CLF_ON_UPD); } virtual void ToggleAlpha()=0; ///< Switch on/off transparency (do not overwrite user settings) virtual void ToggleLight()=0; ///< Switch on/off lighting (do not overwrite user settings) diff --git a/lang/CMakeLists.txt b/lang/CMakeLists.txt index a716986..f18f5b6 100644 --- a/lang/CMakeLists.txt +++ b/lang/CMakeLists.txt @@ -1,24 +1,39 @@ if(MGL_HAVE_PYTHON) - INCLUDE(${SWIG_USE_FILE}) - INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) - INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) - SET(CMAKE_SWIG_FLAGS "-c++") - SET_SOURCE_FILES_PROPERTIES(mgl.i PROPERTIES CPLUSPLUS ON) -# SET_SOURCE_FILES_PROPERTIES(example.i PROPERTIES SWIG_FLAGS "-includeall") - SWIG_ADD_MODULE(mathgl python mgl.i ../include/mgl/type.h ../include/mgl/data.h ../include/mgl/mgl.h) - SWIG_LINK_LIBRARIES(mathgl ${PYTHON_LIBRARIES}) + configure_file(${MathGL_SOURCE_DIR}/lang/mgl.i ${MathGL_BINARY_DIR}/lang/mgl.i COPYONLY) + configure_file(${MathGL_SOURCE_DIR}/lang/numpy.i ${MathGL_BINARY_DIR}/lang/numpy.i COPYONLY) + SET(dep_libs mgl) + if(MGL_HAVE_FLTK) + get_property(path_to_mglwnd TARGET mgl-wnd PROPERTY LOCATION) + file(TO_NATIVE_PATH ${path_to_mglwnd} MGL_LIB_WND) + SET(dep_libs ${dep_libs} mgl-wnd) + endif(MGL_HAVE_FLTK) + get_property(path_to_mgl TARGET mgl PROPERTY LOCATION) + file(TO_NATIVE_PATH ${path_to_mgl} MGL_LIB) + file(TO_NATIVE_PATH ${MathGL_BINARY_DIR}/lang/mgl.i MGL_I) + file(TO_NATIVE_PATH ${MathGL_SOURCE_DIR}/include SRC_INC) + file(TO_NATIVE_PATH ${MathGL_BINARY_DIR}/include BIN_INC) + configure_file(${MathGL_SOURCE_DIR}/lang/setup.py.in ${MathGL_BINARY_DIR}/lang/setup.py) +# file(COPY ${CMAKE_SOURCE_DIR}/lang/mgl.i ${CMAKE_SOURCE_DIR}/lang/numpy.i DESTINATION ${CMAKE_BINARY_DIR}/lang) +# INCLUDE(${SWIG_USE_FILE}) +# INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_PATH}) +# INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) +# SET(CMAKE_SWIG_FLAGS "-c++") +# SET_SOURCE_FILES_PROPERTIES(mgl.i PROPERTIES CPLUSPLUS ON) +# SWIG_ADD_MODULE(mathgl python mgl.i ../include/mgl/type.h ../include/mgl/data.h ../include/mgl/mgl.h) +# SWIG_LINK_LIBRARIES(mathgl ${PYTHON_LIBRARIES}) -# INSTALL_FILES(/lib/python2.7/dist-packages/ mathgl) # add_custom_command(OUTPUT mgl_python.cpp mathgl.py # COMMAND ${SWIG_EXECUTABLE} -python -c++ -I${CMAKE_SOURCE_DIR}/include -o mgl_python.cpp ${CMAKE_SOURCE_DIR}/lang/mgl.i # MAIN_DEPENDENCY mgl.i # IMPLICIT_DEPENDS CXX ../include/mgl/type.h ../include/mgl/data.h ../include/mgl/mgl.h # ) -# add_custom_target(_mathgl.so ALL -# COMMAND CMAKE_SOURCE_DIR=${CMAKE_SOURCE_DIR} ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/setup.py build -# DEPENDS ${CMAKE_BINARY_DIR}/lang/mathgl.py ${CMAKE_BINARY_DIR}/lang/mgl_python.cpp -# WORKING_DIRECTORY ${CMAKE_BINARY_DIR} -# ) -# install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR} )") + add_custom_command(OUTPUT _mathgl.so mathgl.py + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py build + DEPENDS ${dep_libs} ${CMAKE_BINARY_DIR}/lang/mgl.i ${CMAKE_BINARY_DIR}/lang/numpy.i + IMPLICIT_DEPENDS CXX ${CMAKE_SOURCE_DIR}/include/mgl/type.h ${CMAKE_SOURCE_DIR}/include/mgl/data.h ${CMAKE_SOURCE_DIR}/include/mgl/mgl.h + WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang + ) + add_custom_target(mgl_python_module ALL DEPENDS _mathgl.so mathgl.py) + install(CODE "execute_process(COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_BINARY_DIR}/lang/setup.py install --prefix=${CMAKE_INSTALL_PREFIX} WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/lang )") endif(MGL_HAVE_PYTHON) diff --git a/setup.py b/lang/setup.py.in similarity index 71% rename from setup.py rename to lang/setup.py.in index d1dd005..98a693d 100644 --- a/setup.py +++ b/lang/setup.py.in @@ -2,16 +2,25 @@ from distutils.core import setup, Extension import os try: - source_dir=os.environ["CMAKE_SOURCE_DIR"] - mgl_dir="src/libmgl.so" + source_dir="${SRC_INC}" + binary_dir="${BIN_INC}" + mgl_i="${MGL_I}" + mgl_lib="${MGL_LIB}" + mgl_lib_wnd="${MGL_LIB_WND}" except KeyError: source_dir="." - mgl_dir="src/.libs/libmgl.so" + binary_dir="." +# mgl_dir="src/.libs/libmgl.so" mgl_module = Extension('_mathgl', - sources=["lang/mgl_python.cpp"], - include_dirs=["%s/include" % source_dir], - extra_objects=[mgl_dir] + sources=[mgl_i], + include_dirs=[binary_dir, source_dir], + swig_opts=[ +# "-outdir %s/lang" % binary_dir, + '-c++', + "-I%s" % binary_dir, + "-I%s" % source_dir], + extra_objects=[mgl_lib,mgl_lib_wnd] ) setup ( @@ -32,7 +41,7 @@ setup ( interface based on GLUT. This provides high compatibility with \ any operating system (really any which has OpenGL-like libraries). \ Python interface for MathGL", - package_dir = {"": "lang"}, + package_dir = {"": ""}, py_modules = ["mathgl"], ext_modules = [mgl_module] ) diff --git a/mgllab/main.cpp b/mgllab/main.cpp index 152151a..4adbfb7 100644 --- a/mgllab/main.cpp +++ b/mgllab/main.cpp @@ -261,7 +261,7 @@ int main(int argc, char **argv) pref.get("internal_font",internal_font,0); pref.get("auto_exec",auto_exec,1); #ifdef USE_GETTEXT -// setlocale (LC_ALL, ""); +// setlocale (LC_NUMERIC, ""); // bindtextdomain (PACKAGE, LOCALEDIR); // textdomain (PACKAGE); #endif diff --git a/qt.png b/qt.png deleted file mode 100644 index 0fc0f8e4db33b749f8cb728ace5d9220edbf55e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46186 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Μ4dX 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

3pC}dehrNb6ZNRBc=NzvoGHnfFt%RLZUMM{%P+Z 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 diff --git a/sample.csv b/sample.csv deleted file mode 100644 index 506709a..0000000 --- a/sample.csv +++ /dev/null @@ -1,113 +0,0 @@ --0.001 -0.006 32.97 -0.076 -0.074 33.13 -0.067 0.073 32.52 --0.078 0.064 32.72 --0.069 -0.083 33.36 -0.158 -0.149 33.19 -0.212 0.007 32.48 -0.143 0.155 31.93 --0.013 0.209 31.88 --0.16 0.14 32.34 --0.217 -0.016 33.03 --0.146 -0.165 33.64 -0.012 -0.22 33.7 -0.227 -0.217 33.16 -0.304 -0.074 32.48 -0.297 0.087 31.81 -0.211 0.225 31.37 -0.068 0.3 31.23 --0.094 0.294 31.41 --0.23 0.208 31.87 --0.305 0.065 32.51 --0.299 -0.097 33.19 --0.213 -0.235 33.79 --0.069 -0.309 33.97 -0.093 -0.302 33.71 -0.293 -0.285 33.03 -0.378 -0.152 32.37 -0.404 0.005 31.7 -0.37 0.16 31.12 -0.279 0.29 30.69 -0.144 0.374 30.52 --0.011 0.4 30.59 --0.166 0.366 30.87 --0.295 0.276 31.34 --0.379 0.142 31.93 --0.407 -0.015 32.58 --0.372 -0.17 33.22 --0.28 -0.3 33.78 --0.144 -0.385 34.08 -0.012 -0.411 33.96 -0.166 -0.375 33.58 -0.369 -0.372 32.72 -0.463 -0.241 32.06 -0.512 -0.084 31.39 -0.512 0.078 30.74 -0.461 0.233 30.19 -0.365 0.364 29.79 -0.233 0.46 29.57 -0.08 0.509 29.56 --0.083 0.509 29.72 --0.238 0.458 30.08 --0.368 0.363 30.57 --0.465 0.231 31.13 --0.515 0.076 31.76 --0.514 -0.088 32.41 --0.464 -0.243 33.01 --0.366 -0.375 33.53 --0.235 -0.47 33.95 --0.077 -0.519 33.95 -0.085 -0.517 33.69 -0.239 -0.466 33.25 -0.425 -0.449 32.24 -0.525 -0.322 31.65 -0.59 -0.176 30.98 -0.613 -0.017 30.35 -0.596 0.142 29.76 -0.537 0.292 29.25 -0.442 0.421 28.85 -0.317 0.521 28.62 -0.17 0.586 28.53 -0.011 0.61 28.61 --0.147 0.591 28.87 --0.297 0.534 29.25 --0.425 0.439 29.73 --0.525 0.315 30.28 --0.59 0.168 30.86 --0.613 0.008 31.49 --0.597 -0.153 32.08 --0.537 -0.303 32.66 --0.441 -0.432 33.16 --0.316 -0.531 33.56 --0.168 -0.595 33.69 --0.009 -0.617 33.5 -0.151 -0.6 33.16 -0.3 -0.54 32.74 -0.48 -0.539 31.4 -0.588 -0.42 30.82 -0.665 -0.279 30.23 -0.709 -0.124 29.6 -0.717 0.038 28.99 -0.69 0.197 28.41 -0.628 0.345 27.92 -0.534 0.476 27.52 -0.414 0.583 27.25 -0.273 0.66 27.12 -0.119 0.705 27.12 --0.041 0.713 27.28 --0.201 0.687 27.59 --0.349 0.624 28.01 --0.48 0.531 28.48 --0.587 0.412 29 --0.665 0.27 29.57 --0.709 0.116 30.13 --0.718 -0.047 30.7 --0.69 -0.206 31.29 --0.628 -0.356 31.85 --0.533 -0.487 32.4 --0.413 -0.593 32.78 --0.269 -0.671 32.96 --0.114 -0.714 32.79 -0.047 -0.722 32.52 -0.205 -0.694 32.2 -0.353 -0.629 31.83 diff --git a/src/base.cpp b/src/base.cpp index 006bf06..a6b5e69 100644 --- a/src/base.cpp +++ b/src/base.cpp @@ -212,9 +212,13 @@ void mglBase::RecalcBorder() SetFBord(Min.x+i*(Max.x-Min.x)/n, Min.y+j*(Max.y-Min.y)/n, Min.x); SetFBord(Min.x+i*(Max.x-Min.x)/n, Min.y+j*(Max.y-Min.y)/n, Max.z); } + float d; if(!fx) { FMin.x = Min.x; FMax.x = Max.x; } + else { d=0.01*(FMax.x-FMin.x); FMin.x-=d; FMax.x+=d; } if(!fy) { FMin.y = Min.y; FMax.y = Max.y; } + else { d=0.01*(FMax.y-FMin.y); FMin.y-=d; FMax.y+=d; } if(!fz) { FMin.z = Min.z; FMax.z = Max.z; } + else { d=0.01*(FMax.z-FMin.z); FMin.z-=d; FMax.z+=d; } } RecalcCRange(); } @@ -554,6 +558,8 @@ void mglTexture::Set(const char *s, int smooth, float alpha) { // NOTE: New syntax -- colors are CCCCC or {CNCNCCCN}; options inside [] if(!s || !s[0]) return; + strncpy(Sch,s,259); Smooth=smooth; Alpha=alpha; + register long i,j=0,m=0,l=strlen(s); const char *cols = MGL_COLORS; for(i=0;in-1) // NOTE: never should be here! - { col[2*i] = c[2*n-2];col[2*i+1] = c[2*n-1]; printf("AddTexture -- out of bounds"); } + { col[2*i] = c[2*n-2];col[2*i+1] = c[2*n-1]; /*printf("AddTexture -- out of bounds");*/ } else { col[2*i] = c[2*j]*(1-u)+c[2*j+2]*u; @@ -634,10 +640,10 @@ long mglBase::AddTexture(const char *cols, int smooth) { mglTexture t(cols,smooth); if(t.n==0) return smooth<0 ? 0:1; + if(smooth<0) CurrPal=0; // check if already exist for(unsigned long i=0;iSetDelay(*dt); } void mgl_wnd_set_delay(HMGL gr, mreal dt) { _Gr_->SetDelay(dt); } //----------------------------------------------------------------------------- +HMEX mgl_create_expr(const char *expr) { return new mglFormula(expr); } +void mgl_delete_expr(HMEX ex) { delete ex; } +mreal mgl_expr_eval(HMEX ex, mreal x, mreal y,mreal z) +{ return ex->Calc(x,y,z); } +mreal mgl_expr_eval_v(HMEX ex, mreal *var) +{ return ex->Calc(var); } +mreal mgl_expr_diff(HMEX ex, char dir, mreal x, mreal y,mreal z) +{ return ex->CalcD(dir,x,y,z); } +mreal mgl_expr_diff_v(HMEX ex, char dir, mreal *var) +{ return ex->CalcD(var, dir); } +//----------------------------------------------------------------------------- +uintptr_t mgl_create_expr_(const char *expr, int l) +{ char *s=new char[l+1]; memcpy(s,expr,l); s[l]=0; + uintptr_t res = uintptr_t(mgl_create_expr(s)); + delete []s; return res; } +void mgl_delete_expr_(uintptr_t *ex) { mgl_delete_expr((HMEX)ex); } +float mgl_eval_expr_(uintptr_t *ex, float *x, float *y,float *z) +{ return mgl_expr_eval((HMEX) ex, *x,*y,*z); } +float mgl_diff_expr_(uintptr_t *ex, const char *dir, float *x, float *y,float *z, int) +{ return mgl_expr_diff((HMEX) ex, *dir,*x,*y,*z); } +//----------------------------------------------------------------------------- diff --git a/src/data_new.cpp b/src/data_new.cpp index 1ad1d59..b691a9a 100644 --- a/src/data_new.cpp +++ b/src/data_new.cpp @@ -990,7 +990,7 @@ HMDT mgl_transform(HCDT re, HCDT im, const char *tr) if(tr[1]=='c') { rr.CosFFT("y"); ii.CosFFT("y"); } if(tr[2]=='c') { rr.CosFFT("z"); ii.CosFFT("z"); } } - else if(strchr(tr,'s')) // do Fourier only once for speeding up + else if(strchr(tr,'h')) // do Fourier only once for speeding up { if(tr[0]=='h') { rr.Hankel("x"); ii.Hankel("x"); } if(tr[1]=='h') { rr.Hankel("y"); ii.Hankel("y"); } diff --git a/src/exec.cpp b/src/exec.cpp index 6378301..a80102c 100644 --- a/src/exec.cpp +++ b/src/exec.cpp @@ -37,7 +37,7 @@ int mgls_addlegend(mglGraph *gr, long , mglArg *a, int k[10], const char *) return 0; } void mglc_addlegend(wchar_t out[1024], long , mglArg *a, int k[10], const char *) -{ if(k[0]==2 && k[1]==2) mglprintf(out,1024,L"gr->AddLegend(\"%s\", \"%s\");",a[0].s.c_str(),a[1].s.c_str()); } +{ if(k[0]==2 && k[1]==2) mglprintf(out,1024,L"gr->AddLegend(\"%ls\", \"%s\");",a[0].w.c_str(),a[1].s.c_str()); } //----------------------------------------------------------------------------- int mgls_addto(mglGraph *, long , mglArg *a, int k[10], const char *) { @@ -2469,17 +2469,29 @@ void mglc_tlabel(wchar_t out[1024], long , mglArg *a, int k[10], const char *) if(k[0]==2) mglprintf(out,1024,L"gr->Label('t', L\"%ls\", %g, %g);", a[0].w.c_str(), k[1]==3?a[1].v:1, k[2]==3?a[2].v:0); } //----------------------------------------------------------------------------- -int mgls_label(mglGraph *gr, long , mglArg *a, int k[10], const char *) +int mgls_label(mglGraph *gr, long , mglArg *a, int k[10], const char *opt) { if(k[0]==3 && k[1]==3 && k[2]==2) gr->Label(a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():""); + else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) + gr->Label(*(a[0].d), *(a[1].d), *(a[2].d), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"", opt); + else if(k[0]==1 && k[1]==1 && k[2]==2) + gr->Label(*(a[0].d), *(a[1].d), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"", opt); + else if(k[0]==1 && k[1]==2) + gr->Label(*(a[0].d), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"", opt); else return 1; return 0; } -void mglc_label(wchar_t out[1024], long , mglArg *a, int k[10], const char *) +void mglc_label(wchar_t out[1024], long , mglArg *a, int k[10], const char *opt) { if(k[0]==3 && k[1]==3 && k[2]==2) - mglprintf(out,1024,L"gr->Label(%g, %g, \"%s\", \"%s\");", a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():""); + mglprintf(out,1024,L"gr->Label(%g, %g, \"%ls\", \"%s\");", a[0].v, a[1].v, a[2].w.c_str(), k[3]==2?a[3].s.c_str():""); + else if(k[0]==1 && k[1]==1 && k[2]==1 && k[3]==2) + mglprintf(out,1024,L"gr->Label(%s, %s, %s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].s.c_str(), a[3].w.c_str(), k[4]==2?a[4].s.c_str():"", opt); + else if(k[0]==1 && k[1]==1 && k[2]==2) + mglprintf(out,1024,L"gr->Label(%s, %s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].s.c_str(), a[2].w.c_str(), k[3]==2?a[3].s.c_str():"", opt); + else if(k[0]==1 && k[1]==2) + mglprintf(out,1024,L"gr->Label(%s, \"%ls\", \"%s\", \"%s\");", a[0].s.c_str(), a[1].w.c_str(), k[2]==2?a[2].s.c_str():"", opt); } //----------------------------------------------------------------------------- int mgls_xrange(mglGraph *gr, long , mglArg *a, int k[10], const char *) @@ -3626,7 +3638,7 @@ mglCommand mgls_base_cmd[] = { {"insert","Insert slice of data","insert Dat 'dir' [pos=0 num=1]", mgls_insert, mglc_insert,3}, {"integrate","Integrate data","integrate Dat 'dir'", mgls_integrate, mglc_integrate,3}, {"jacobian","Get Jacobian","jacobian Res Xdat Ydat [Zdat]", mgls_jacobian, mglc_jacobian,4}, - {"label","Draw label at arbitrary position","label x y 'txt' ['fmt' size]", mgls_label, mglc_label,1}, + {"label","Draw label at arbitrary position","label ydat 'txt' ['stl'='']|xdat ydat 'txt' ['stl'='']|xdat ydat zdat 'txt' ['stl'='']|x y 'txt' ['fmt' size]", mgls_label, mglc_label,1}, {"legend","Draw legend","legend [pos 'fmt' size llen]|x y ['fmt' size llen]", mgls_legend, mglc_legend,1}, {"legendmarks","Set number of marks in the legend","legendmarks val", mgls_legendmarks, mglc_legendmarks,2}, {"light","Setup light","light [val] | val num | num xpos ypos zpos ['fmt' br]", mgls_light, mglc_light,2}, diff --git a/src/export.cpp b/src/export.cpp index ab6bd91..cf7262d 100644 --- a/src/export.cpp +++ b/src/export.cpp @@ -474,6 +474,7 @@ void mgl_write_frame(HMGL gr, const char *fname,const char *descr) if(!strcmp(fname+len-4,".gif")) mgl_write_gif(gr,fname,descr); if(!strcmp(fname+len-4,".bmp")) mgl_write_bmp(gr,fname,descr); if(!strcmp(fname+len-4,".tga")) mgl_write_tga(gr,fname,descr); + if(!strcmp(fname+len-5,".mgld"))mgl_export_mgld(gr,fname,descr); } void mgl_write_frame_(uintptr_t *gr, const char *fname,const char *descr,int l,int n) { char *s=new char[l+1]; memcpy(s,fname,l); s[l]=0; diff --git a/src/export_2d.cpp b/src/export_2d.cpp index e761fbd..11e9f98 100644 --- a/src/export_2d.cpp +++ b/src/export_2d.cpp @@ -184,7 +184,7 @@ mglColor mglCanvas::GetColor(const mglPrim &p) void mgl_write_eps(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<1) return; - _Gr_->Finish(); + _Gr_->clr(MGL_FINISHED); _Gr_->Finish(false); time_t now; time(&now); bool gz = fname[strlen(fname)-1]=='z'; @@ -362,7 +362,7 @@ void mgl_write_eps_(uintptr_t *gr, const char *fname,const char *descr,int l,int void mgl_write_svg(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<1) return; - _Gr_->Finish(); + _Gr_->clr(MGL_FINISHED); _Gr_->Finish(false); time_t now; time(&now); bool gz = fname[strlen(fname)-1]=='z'; @@ -756,7 +756,7 @@ const char *mglColorName(mglColor c) // return closest SVG color void mgl_write_tex(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<1) return; - _Gr_->Finish(); + _Gr_->clr(MGL_FINISHED); _Gr_->Finish(false); FILE *fp=fopen("mglcolors.tex","wt"); register int ii,jj,kk; // save colors which can be required at output for(ii=0;ii<6;ii++) for(jj=0;jj<6;jj++) for(kk=0;kk<6;kk++) diff --git a/src/export_3d.cpp b/src/export_3d.cpp index dbf38aa..67623e8 100644 --- a/src/export_3d.cpp +++ b/src/export_3d.cpp @@ -48,29 +48,29 @@ void mglTexture::GetRGBA(unsigned char *f) } } //----------------------------------------------------------------------------- -// I'm not sure that it is good idea -- a lot of memory used, but gain only for small files -/*void mgl_rearrange_pnt(HMGL gr, std::vector &on, std::vector &no, bool coor=false) -{ - // on -- for old-to-new index; no -- for new-to-old index - on.clear(); on.resize(gr->GetPntNum(),-1); no.clear(); - register size_t i,j; - for(i=0;iGetPntNum();i++) // collect data for groups - // it is rather expensive (extra 4b per primitive) but need for export to 3D - { - const mglPnt &q = gr->GetPnt(i); - if(coor) for(j=0;jGetPnt(no[j]); - if(p.x==q.x && p.y==q.y && p.z==q.z) on[i]=j; - } - else for(j=0;jGetPnt(no[j]); - if(p.x==q.x && p.y==q.y && p.z==q.z && p.c==q.c && p.t==q.t) on[i]=j; - } - if(on[j]<0) { no.push_back(i); on[j]=no.size()-1; } - } -}*/ +// I'm not sure that it is good idea -- a lot of memory used, but gain only for small files +/*void mgl_rearrange_pnt(HMGL gr, std::vector &on, std::vector &no, bool coor=false) +{ + // on -- for old-to-new index; no -- for new-to-old index + on.clear(); on.resize(gr->GetPntNum(),-1); no.clear(); + register size_t i,j; + for(i=0;iGetPntNum();i++) // collect data for groups + // it is rather expensive (extra 4b per primitive) but need for export to 3D + { + const mglPnt &q = gr->GetPnt(i); + if(coor) for(j=0;jGetPnt(no[j]); + if(p.x==q.x && p.y==q.y && p.z==q.z) on[i]=j; + } + else for(j=0;jGetPnt(no[j]); + if(p.x==q.x && p.y==q.y && p.z==q.z && p.c==q.c && p.t==q.t) on[i]=j; + } + if(on[j]<0) { no.push_back(i); on[j]=no.size()-1; } + } +}*/ //----------------------------------------------------------------------------- void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size) { @@ -231,10 +231,11 @@ void mgl_obj_prim(const mglPrim &q, const mglPnt &p, FILE *fp, float size) case 1: fprintf(fp,"l %ld/%ld %ld/%ld\n", n1,n1, n2,n2); break; case 2: fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", n1,n1,n1, n2,n2,n2, n3,n3,n3); break; - case 3: fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", - n1,n1,n1, n2,n2,n2, n3,n3,n3); + case 3: + fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", + n1,n1,n1, n2,n2,n2, n3,n3,n3); fprintf(fp,"f %ld/%ld/%ld %ld/%ld/%ld %ld/%ld/%ld\n", - n2,n2,n2, n3,n3,n3, n4,n4,n4);break; + n4,n4,n4, n2,n2,n2, n3,n3,n3);break; case 4: break; // TODO: add glyphs export later } } @@ -256,25 +257,25 @@ void mgl_write_obj(HMGL gr, const char *fname,const char *descr, int use_png) } delete []ng; - unsigned len=strlen(fname); + unsigned len=strlen(fname),ntxt=gr->GetTxtNum(); char *tname = new char[len+1]; strcpy(tname,fname); FILE *fp=fopen(fname,"wt"); // vertices definition - fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); - for(i=0;iGetPrmNum());i++) + fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); + for(i=0;iGetPntNum());i++) { mglPnt pp = gr->GetPnt(i); fprintf(fp,"v %g %g %g\n",pp.x,pp.y,pp.z); - fprintf(fp,"vt %g %g\n",256*pp.t,256*pp.c); - if(isnan(pp.u)) fprintf(fp,"vn 0 0 0\n"); - else fprintf(fp,"vn %g %g %g\n",pp.u,pp.v,pp.w); + fprintf(fp,"vt %g %g\n",pp.t,pp.c/ntxt); +// if(isnan(pp.u)) fprintf(fp,"vn 0 0 0\n"); +// else fprintf(fp,"vn %g %g %g\n",pp.u,pp.v,pp.w); } // primitive definition in groups - tname[len-4]=0; fprintf(fp,"# Primitives Definitions\nusemtl %s.mtl\n",tname); - std::vector p; + tname[len-4]=0; fprintf(fp,"# Primitives Definitions\nmtllib %s.mtl\nusemtl %s\n",tname,tname); for(i=0;iGrp.size();i++) { - fprintf(fp,"g %s\n",gr->Grp[i].Lbl.c_str()); p = gr->Grp[i].p; + fprintf(fp,"g %s\n",gr->Grp[i].Lbl.c_str()); + std::vector &p = gr->Grp[i].p; for(j=0;jGetPrm(p[j]); @@ -324,7 +325,7 @@ void mgl_write_stl(HMGL gr, const char *fname,const char *descr) { if(gr->GetPrmNum()<=0) return; // nothing to do FILE *fp = fopen(fname,"wt"); - fprintf(fp,"solid %s",descr?descr:"mathgl"); + fprintf(fp,"solid %s\n",(descr && *descr)?descr:"mathgl"); register long i; mglPnt pp; for(i=0;iGetPrmNum();i++) @@ -362,7 +363,7 @@ void mgl_write_stl(HMGL gr, const char *fname,const char *descr) fprintf(fp,"endloop\nendfacet\n"); } } - fprintf(fp,"endsolid %s",descr?descr:"mathgl"); + fprintf(fp,"endsolid %s",(descr && *descr)?descr:"mathgl"); fclose(fp); } void mgl_write_stl_(uintptr_t *gr, const char *fname,const char *descr,int l,int n) @@ -376,7 +377,7 @@ void mgl_write_xyz(HMGL gr, const char *fname,const char *descr) register long i; FILE *fp=fopen(fname,"wt"), *ff; // vertices definition - fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(fp,"# List of Vertices, with (x,y,z) coordinates.\n"); for(i=0;iGetPntNum();i++) { @@ -390,9 +391,9 @@ void mgl_write_xyz(HMGL gr, const char *fname,const char *descr) char *tname = new char[len+2]; strcpy(tname,fname); tname[len+1]=tname[len]=0; tname[len]='l'; fp = fopen(tname,"wt"); tname[len]='f'; ff = fopen(tname,"wt"); - fprintf(fp,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(fp,"# Indices of vertices to connect for lines\n"); - fprintf(ff,"# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(ff,"# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(ff,"# Indices of vertices to connect for faces\n"); for(i=0;iGetPrmNum();i++) { @@ -421,9 +422,9 @@ void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored) FILE *fp=fopen(fname,"wt"); // vertices definition if(colored) - fprintf(fp,"COFF\n# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"COFF\n# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); else - fprintf(fp,"OFF\n# Created by MathGL library\n# Title: %s\n",descr ? descr : fname); + fprintf(fp,"OFF\n# Created by MathGL library\n# Title: %s\n",(descr && *descr) ? descr : fname); fprintf(fp,"# List of Vertices, with (x,y,z,r,g,b,a) coordinates.\n"); fprintf(fp,"%ld %ld 0\n",gr->GetPntNum(), nf); for(i=0;iGetPntNum();i++) @@ -435,8 +436,8 @@ void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored) } for(i=0;iGetPrmNum();i++) { - const mglPrim q=gr->GetPrm(i); - mglPnt p1=gr->GetPnt(q.n1), p2, p3, p4; + const mglPrim &q=gr->GetPrm(i); + const mglPnt &p1=gr->GetPnt(q.n1); if(colored) { if(q.type==2) @@ -448,12 +449,12 @@ void mgl_write_off(HMGL gr, const char *fname,const char *descr, int colored) { if(q.type==2) { - p2=gr->GetPnt(q.n2); p3=gr->GetPnt(q.n3); + const mglPnt &p2=gr->GetPnt(q.n2), &p3=gr->GetPnt(q.n3); fprintf(fp,"3 %ld %ld %ld %.2g %.2g %.2g %.2g\n",q.n1,q.n2,q.n3, (p1.r+p2.r+p3.r)/3, (p1.g+p2.g+p3.g)/3, (p1.b+p2.b+p3.b)/3, (p1.a+p2.a+p3.a)/3); } if(q.type==3) { - p2=gr->GetPnt(q.n2); p3=gr->GetPnt(q.n3); p4=gr->GetPnt(q.n4); + const mglPnt &p2=gr->GetPnt(q.n2), &p3=gr->GetPnt(q.n3), &p4=gr->GetPnt(q.n4); fprintf(fp,"4 %ld %ld %ld %ld %.2g %.2g %.2g %.2g\n",q.n1,q.n2,q.n4,q.n3, (p1.r+p2.r+p3.r+p4.r)/4, (p1.g+p2.g+p3.g+p4.g)/4, (p1.b+p2.b+p3.b+p4.b)/4, (p1.a+p2.a+p3.a+p4.a)/4); } } @@ -472,24 +473,43 @@ void mgl_write_idtf_(uintptr_t *gr, const char *fname,const char *descr,int l,in char *f=new char[n+1]; memcpy(f,descr,n); f[n]=0; mgl_write_idtf(_GR_,s,f); delete []s; delete []f; } //----------------------------------------------------------------------------- +/*struct mglPrim +{ + // NOTE: n4 is used as mark; n3 -- as pen style for type=0,1,4 + // NOTE: n3 is used as position of txt,font in Ptxt for type=6 + long n1,n2,n3,n4; ///< coordinates of corners + int type; ///< primitive type (0-point, 1-line, 2-trig, 3-quad, 4-glyph, 6-text) + int id; ///< object id + float z; ///< z-position + float s; ///< size (if applicable) or fscl + float w; ///< width (if applicable) or ftet + float p; +};*/ bool mglCanvas::ExportMGLD(const char *fname, const char *descr) { if(Pnt.size()<1 || Prm.size()<1) return true; FILE *fp=fopen(fname,"wt"); if(!fp) return true; - fprintf(fp,"MGLD %lu %lu\n# %s\n", Pnt.size(), Prm.size(), descr ? descr : fname); - register size_t i; + // NOTE: I'll save Ptx. So prim type=6 is useless,and no LaTeX + fprintf(fp,"MGLD %lu %lu %lu\n# %s\n", Pnt.size(), Prm.size(), Txt.size(), (descr && *descr) ? descr : fname); + register size_t i,j; fprintf(fp,"# Vertexes: x y z c t u v w r g b a\n"); for(i=0;i4) continue; + Prm.push_back(q); + } + mglTexture t; + for(i=0;i' ') k=1; + if(sm==2 && k) break; + } + sscanf(buf,"%d%g", &sm, &a); + t.Set(buf+j, sm, a); + Txt.push_back(t); } delete []buf; fclose(fp); return false; } @@ -706,7 +745,7 @@ void mglCanvas::WriteXGL(const char *fname,const char *descr) if(GetPrmNum()<=0) return; // nothing to do FILE *fp=fopen(fname,"wt"); if(!fp) return true; - fprintf(fp,"\n%s\n", descr?descr:fname); + fprintf(fp,"\n%s\n", (descr && *descr)?descr:fname); fprintf(fp,"%g, %g, %g\n", BDef[0]/255., BDef[1]/255., BDef[2]/255.); fprintf(fp,"\n%g, %g, %g\n",AmbBr, AmbBr, AmbBr); register unsigned long i,j; @@ -774,32 +813,13 @@ void mgl_write_xgl_(uintptr_t *gr, const char *fname,const char *descr,int l,int char *d=new char[n+1]; memcpy(d,descr,n); d[n]=0; mgl_write_xgl(_GR_,s,d); delete []s; delete []d; }*/ //----------------------------------------------------------------------------- -void mgl_x3d_prim(const mglPrim &q, const mglPnt &p, void *fp,bool gz, float size) -{} // TODO -//----------------------------------------------------------------------------- -void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) +void mgl_x3d_mdef(HMGL gr, void *fp, bool gz) { - if(gr->GetPrmNum()<1) return; - time_t now; time(&now); - - bool gz = fname[strlen(fname)-1]=='z'; - void *fp = gz ? (void*)gzopen(fname,"wt") : (void*)fopen(fname,"wt"); - if(!fp) { gr->SetWarn(mglWarnOpen,fname); return; } - mgl_printf(fp, gz, "\n"); - mgl_printf(fp, gz, "\n"); - mgl_printf(fp, gz, "\n\n\n",fname); - mgl_printf(fp, gz, "\n",descr?descr:fname); - mgl_printf(fp, gz, "\n",ctime(&now)); - mgl_printf(fp, gz, "\n"); - mgl_printf(fp, gz, "\n\n"); - - // 1. first we have to define proto for marks and glyphs bool m_p=false,m_x=false,m_d=false,m_v=false,m_t=false, m_s=false,m_a=false,m_o=false,m_T=false, m_V=false,m_S=false,m_D=false,m_Y=false,m_l=false, m_L=false,m_r=false,m_R=false,m_X=false,m_P=false; - register unsigned long i,j; - for(i=0;iGetPrmNum();i++) + for(size_t i=0;iGetPrmNum();i++) { const mglPrim q = gr->GetPrm(i); if(q.type>0) continue; if(q.n4=='+') m_p = true; @@ -817,49 +837,140 @@ void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) if(m_P) { m_p=true; m_s=true; } if(m_X) { m_x=true; m_s=true; } if(m_p) mgl_printf(fp, gz, "\n" - "\n" - "\n\n"); + "\n" + "\n\n"); /*if(m_x) mgl_printf(fp, gz, "/m_x {sm sm rm s2 s2 rl 0 sm 2 mul rm sm 2 mul s2 rl d0} def\n"); // TODO - if(m_s) mgl_printf(fp, gz, "/m_s {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp d0} def\n"); - if(m_d) mgl_printf(fp, gz, "/m_d {sm 0 rm ss ss rl ss sm rl sm sm rl cp d0} def\n"); - if(m_v) mgl_printf(fp, gz, "/m_v {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl d0 cp} def\n"); - if(m_t) mgl_printf(fp, gz, "/m_t {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl d0 cp} def\n"); - if(m_a) mgl_printf(fp, gz, "/m_a {sm 0 rm s2 0 rl sm 1.6 mul sm 0.8 mul rm ss 1.2 mul ss 1.6 mul rl 0 sm 1.6 mul rm sm 1.2 mul ss 1.6 mul rl d0} def\n"); - if(m_o) mgl_printf(fp, gz, "/m_o {ss 0 360 d0 arc} def\n"); - if(m_S) mgl_printf(fp, gz, "/m_S {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp} def\n"); - if(m_D) mgl_printf(fp, gz, "/m_D {sm 0 rm ss ss rl ss sm rl sm sm rl cp} def\n"); - if(m_V) mgl_printf(fp, gz, "/m_V {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl cp} def\n"); - if(m_T) mgl_printf(fp, gz, "/m_T {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl cp} def\n"); - if(m_Y) mgl_printf(fp, gz, "/m_Y {0 sm rm 0 ss rl sm ss rl s2 0 rm sm sm rl d0} def\n"); - if(m_r) mgl_printf(fp, gz, "/m_r {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl d0 cp} def\n"); - if(m_l) mgl_printf(fp, gz, "/m_l {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl d0 cp} def\n"); - if(m_R) mgl_printf(fp, gz, "/m_R {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl cp} def\n"); - if(m_L) mgl_printf(fp, gz, "/m_L {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl cp} def\n"); - if(m_P) mgl_printf(fp, gz, "/m_P {m_p 0 sm rm m_s} def\n"); - if(m_X) mgl_printf(fp, gz, "/m_X {m_x ss sm rm m_s} def\n");*/ + * if(m_s) mgl_printf(fp, gz, "/m_s {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp d0} def\n"); + * if(m_d) mgl_printf(fp, gz, "/m_d {sm 0 rm ss ss rl ss sm rl sm sm rl cp d0} def\n"); + * if(m_v) mgl_printf(fp, gz, "/m_v {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl d0 cp} def\n"); + * if(m_t) mgl_printf(fp, gz, "/m_t {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl d0 cp} def\n"); + * if(m_a) mgl_printf(fp, gz, "/m_a {sm 0 rm s2 0 rl sm 1.6 mul sm 0.8 mul rm ss 1.2 mul ss 1.6 mul rl 0 sm 1.6 mul rm sm 1.2 mul ss 1.6 mul rl d0} def\n"); + * if(m_o) mgl_printf(fp, gz, "/m_o {ss 0 360 d0 arc} def\n"); + * if(m_S) mgl_printf(fp, gz, "/m_S {sm sm rm 0 s2 rl s2 0 rl 0 sm 2 mul rl cp} def\n"); + * if(m_D) mgl_printf(fp, gz, "/m_D {sm 0 rm ss ss rl ss sm rl sm sm rl cp} def\n"); + * if(m_V) mgl_printf(fp, gz, "/m_V {sm ss 2 div rm s2 0 rl sm sm 1.5 mul rl cp} def\n"); + * if(m_T) mgl_printf(fp, gz, "/m_T {sm sm 2 div rm s2 0 rl sm ss 1.5 mul rl cp} def\n"); + * if(m_Y) mgl_printf(fp, gz, "/m_Y {0 sm rm 0 ss rl sm ss rl s2 0 rm sm sm rl d0} def\n"); + * if(m_r) mgl_printf(fp, gz, "/m_r {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl d0 cp} def\n"); + * if(m_l) mgl_printf(fp, gz, "/m_l {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl d0 cp} def\n"); + * if(m_R) mgl_printf(fp, gz, "/m_R {sm 2 div sm rm 0 s2 rl ss 1.5 mul sm rl cp} def\n"); + * if(m_L) mgl_printf(fp, gz, "/m_L {ss 2 div sm rm 0 s2 rl sm 1.5 mul sm rl cp} def\n"); + * if(m_P) mgl_printf(fp, gz, "/m_P {m_p 0 sm rm m_s} def\n"); + * if(m_X) mgl_printf(fp, gz, "/m_X {m_x ss sm rm m_s} def\n");*/ // if(m_C) mgl_printf(fp, gz, "/m_C {m_c m_o} def\n"); mgl_printf(fp, gz, "\n"); +} +//----------------------------------------------------------------------------- +void mgl_x3d_prim(const mglPrim &q, const mglPnt &p, const long *pnt, void *fp,bool gz, float size) +{ +/* if(q.type==0) // mark + { + float x0 = p1.x,y0 = p1.y; + sprintf(str,"1 lw %.2g %.2g %.2g rgb ", cp.r,cp.g,cp.b); + wp=1; + if(q.s!=gr->mark_size()/gr->FontFactor()) + { + mgl_printf(fp, gz, "/ss {%g} def\n",q.s*0.4*gr->FontFactor()); + mgl_printf(fp, gz, "/s2 {%g} def\n",q.s*0.8*gr->FontFactor()); + mgl_printf(fp, gz, "/sm {-%g} def\n",q.s*0.4*gr->FontFactor()); + } + switch(q.n4) + { + case '+': mgl_printf(fp, gz, "np %g %g mt m_p %sdr\n",x0,y0,str); break; + case 'x': mgl_printf(fp, gz, "np %g %g mt m_x %sdr\n",x0,y0,str); break; + case 's': mgl_printf(fp, gz, "np %g %g mt m_s %sdr\n",x0,y0,str); break; + case 'd': mgl_printf(fp, gz, "np %g %g mt m_d %sdr\n",x0,y0,str); break; + case '*': mgl_printf(fp, gz, "np %g %g mt m_a %sdr\n",x0,y0,str); break; + case 'v': mgl_printf(fp, gz, "np %g %g mt m_v %sdr\n",x0,y0,str); break; + case '^': mgl_printf(fp, gz, "np %g %g mt m_t %sdr\n",x0,y0,str); break; + case 'S': mgl_printf(fp, gz, "np %g %g mt m_S %sfill\n",x0,y0,str); break; + case 'D': mgl_printf(fp, gz, "np %g %g mt m_D %sfill\n",x0,y0,str); break; + case 'V': mgl_printf(fp, gz, "np %g %g mt m_V %sfill\n",x0,y0,str); break; + case 'T': mgl_printf(fp, gz, "np %g %g mt m_T %sfill\n",x0,y0,str); break; + case 'o': mgl_printf(fp, gz, "%g %g m_o %sdr\n",x0,y0,str);break; + case 'O': mgl_printf(fp, gz, "%g %g m_o %sfill\n",x0,y0,str);break; + case 'Y': mgl_printf(fp, gz, "np %g %g mt m_Y %sdr\n",x0,y0,str); break; + case '<': mgl_printf(fp, gz, "np %g %g mt m_l %sdr\n",x0,y0,str); break; + case '>': mgl_printf(fp, gz, "np %g %g mt m_r %sdr\n",x0,y0,str); break; + case 'L': mgl_printf(fp, gz, "np %g %g mt m_L %sfill\n",x0,y0,str); break; + case 'R': mgl_printf(fp, gz, "np %g %g mt m_R %sfill\n",x0,y0,str); break; + case 'P': mgl_printf(fp, gz, "np %g %g mt m_P %sdr\n",x0,y0,str); break; + case 'X': mgl_printf(fp, gz, "np %g %g mt m_X %sdr\n",x0,y0,str); break; + case 'C': mgl_printf(fp, gz, "%g %g m_o %g %g m_c %sdr\n",x0,y0,x0,y0,str); break; + default: mgl_printf(fp, gz, "%g %g m_c %sfill\n",x0,y0,str); + } + if(q.s!=gr->mark_size()/gr->FontFactor()) + { + mgl_printf(fp, gz, "/ss {%g} def\n",0.4*gr->mark_size()); + mgl_printf(fp, gz, "/s2 {%g} def\n",0.8*gr->mark_size()); + mgl_printf(fp, gz, "/sm {-%g} def\n",0.4*gr->mark_size()); + } + } + else if(q.type==3) // quad + { + const mglPnt p2=gr->GetPnt(q.n2), p3=gr->GetPnt(q.n3), p4=gr->GetPnt(q.n4); + mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll %g %g ll cp %sfill\n", + p1.x, p1.y, p2.x, p2.y, p4.x, p4.y, p3.x, p3.y, str); + } + else if(q.type==2) // trig + { + const mglPnt p2=gr->GetPnt(q.n2), p3=gr->GetPnt(q.n3); + mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll cp %sfill\n", + p1.x, p1.y, p2.x, p2.y, p3.x, p3.y, str); + } + else if(q.type==1) // line + { + sprintf(str,"%.2g lw %.2g %.2g %.2g rgb ", q.w>1 ? q.w:1., cp.r,cp.g,cp.b); + wp = q.w>1 ? q.w:1; st = q.n3; + put_line(gr,fp,gz,i,wp,cp,st, "np %g %g mt ", "%g %g ll ", false, 1); + const char *sd = mgl_get_dash(q.n3,q.w); + if(sd && sd[0]) mgl_printf(fp, gz, "%s [%s] %g sd dr\n",str,sd,q.w*q.s); + else mgl_printf(fp, gz, "%s d0 dr\n",str); + } + else if(q.type==4) // glyph + { + float ss = q.s/2, xx = p1.u, yy = p1.v, zz = p1.w; + mgl_printf(fp, gz, "gsave\t%g %g translate %g %g scale %g rotate %s\n", + p1.x, p1.y, ss, ss, -q.w, str); + if(q.n3&8) // this is "line" + { + float dy = 0.004,f=fabs(zz); + mgl_printf(fp, gz, "np %g %g mt %g %g ll %g %g ll %g %g ll cp ", + xx,yy+dy, xx+f,yy+dy, xx+f,yy-dy, xx,yy-dy); + } + else + mgl_printf(fp, gz, "%.3g %.3g translate %g %g scale %c%c_%04x ", + xx, yy, zz, zz, q.n3&1?'b':'n', q.n3&2?'i':'n', q.n4); + if(q.n3&4) mgl_printf(fp, gz, "dr"); + else mgl_printf(fp, gz, "eofill"); + mgl_printf(fp, gz, " grestore\n"); + }*/ +} +//----------------------------------------------------------------------------- +void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) +{ + if(gr->GetPrmNum()<1) return; + time_t now; time(&now); - // 2 define coordinates, colors and so on - mgl_printf(fp, gz, ""); - mgl_printf(fp, gz, ""); -/* mgl_printf(fp, gz, "");*/ + bool gz = fname[strlen(fname)-1]=='z'; + void *fp = gz ? (void*)gzopen(fname,"wt") : (void*)fopen(fname,"wt"); + if(!fp) { gr->SetWarn(mglWarnOpen,fname); return; } + mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n\n\n",fname); + mgl_printf(fp, gz, "\n",(descr && *descr)?descr:fname); + mgl_printf(fp, gz, "\n",ctime(&now)); + mgl_printf(fp, gz, "\n"); + mgl_printf(fp, gz, "\n\n"); - // now should be defined textures ... but since X3D support RGBA then omit this in this version + // 1. first we have to define proto for marks and glyphs + mgl_x3d_mdef(gr, fp, gz); + + // here should be defined textures ... but since X3D support RGBA then omit it in this version - // 3. now find group for primitives + // 2. now find group for primitives long m1=0,m2=0,m; + register unsigned long i,j; for(i=0;iGrp.size();i++) // prepare array of indirect indexing { m = gr->Grp[i].Id; if(mm2) m2=m; } long *ng = new long[m2-m1+1]; @@ -873,27 +984,43 @@ void mgl_write_x3d(HMGL gr, const char *fname,const char *descr) delete []ng; // primitive definition in groups - std::vector p; + long npnt = gr->GetPntNum(), k; + long *pnt=new long[npnt]; mglPrim q; for(i=0;iGrp.size();i++) { - mgl_printf(fp,gz,"\n",gr->Grp[i].Lbl.c_str()); p = gr->Grp[i].p; + mgl_printf(fp,gz,"\n",gr->Grp[i].Lbl.c_str()); + std::vector &p = gr->Grp[i].p; + + // define coordinates, colors and so on + memset(pnt,-1,npnt*sizeof(long)); + for(j=0,k=0;jGetPrm(p[j]); + if(q.n1>=0 && pnt[q.n1]<0) { pnt[q.n1]=k; k++; } + if(q.type>0 && q.type<4 && q.n2>=0 && pnt[q.n2]<0) { pnt[q.n2]=k; k++; } + if(q.type>1 && q.type<4 && q.n3>=0 && pnt[q.n3]<0) { pnt[q.n3]=k; k++; } + if(q.type==3 && q.n4>=0 && pnt[q.n4]<0) { pnt[q.n4]=k; k++; } + } + + mgl_printf(fp, gz, ""); + mgl_printf(fp, gz, ""); + // no normals since mathgl ones are "signless" -- x3d should calculate it by itself + for(j=0;jGetPrm(p[j]); // TODO: collect by type (quads,trig,line) and draw together??? - mgl_x3d_prim(q, gr->GetPnt(q.n1), fp,gz, q.s*gr->FontFactor()); + const mglPrim &q=gr->GetPrm(p[j]); // TODO: collect by type (quads,trig,line) and draw together??? + mgl_x3d_prim(q, gr->GetPnt(q.n1), pnt, fp,gz, q.s*gr->FontFactor()); } mgl_printf(fp,gz,"\n",gr->Grp[i].Lbl.c_str()); gr->Grp[i].p.clear(); // we don't need indexes anymore } - // try to save "ungrouped" primitives - mgl_printf(fp,gz,"\n"); - for(i=0;iGetPrmNum();i++) - { - const mglPrim q=gr->GetPrm(p[j]); m = q.id-m1; - if(m<0 || m>=m2-m1+1) - mgl_x3d_prim(q, gr->GetPnt(q.n1), fp,gz, q.s*gr->FontFactor()); - } mgl_printf(fp, gz, "\n"); if(gz) gzclose((gzFile)fp); else fclose((FILE *)fp); } diff --git a/src/pixel.cpp b/src/pixel.cpp index bec03c6..3156d71 100644 --- a/src/pixel.cpp +++ b/src/pixel.cpp @@ -373,6 +373,7 @@ void mglCanvas::ClfZB() register long i,n=Width*Height; memset(C,0,12*n); memset(OI,0,n*sizeof(int)); for(i=0;i<3*n;i++) Z[i] = -1e20f; // TODO: Parallelization ?!? + clr(MGL_FINISHED); } //----------------------------------------------------------------------------- void mglCanvas::Clf(mglColor Back) @@ -383,7 +384,7 @@ void mglCanvas::Clf(mglColor Back) if(Back==0) Back = 'w'; if((Flag&3)==2) Back = 'k'; BDef[0]=Back.r*255; BDef[1]=Back.g*255;BDef[2]=Back.b*255; BDef[3]=0; - ClfZB(); clr(MGL_FINISHED); + ClfZB(); } //----------------------------------------------------------------------------- void mglCanvas::pxl_other(unsigned long id, unsigned long n, const void *p) diff --git a/src/plot.cpp b/src/plot.cpp index bfd469d..e9cae29 100644 --- a/src/plot.cpp +++ b/src/plot.cpp @@ -1323,7 +1323,10 @@ void face_plot(mglBase *gr, mglPoint o, mglPoint d1, mglPoint d2, float c, bool long *id=new long[n*n]; gr->Reserve(n*n); for(j=0;jAddPnt(p,c,nn); } + { p = o+d1*i+d2*j; id[i+n*j] = gr->AddPnt(p,c,nn); + if(id[i+n*j]<0) + { printf("q"); gr->AddPnt(p,c,nn); } + } for(i=0;iStop) { delete []id; return; } @@ -1358,7 +1361,7 @@ void mgl_chart(HMGL gr, HCDT a, const char *cols, const char *opt) if(a->Minimal()<0) { gr->SetWarn(mglWarnNeg,"Chart"); return; } gr->SaveState(opt); static int cgid=1; gr->StartGroup("Chart",cgid++); - bool wire = cols && !strcmp(cols,"#"); // draw edges + bool wire = cols && strchr(cols,'#'); // draw edges register long n=a->GetNx(),i,j=0; if(cols) for(i=0;iReserve(4); long k1,k2,k3,k4; - k1 = gr->AddPnt(p1,c1,q1,-1,3); k2 = gr->AddPnt(p2,c2,q2,-1,3); - k3 = gr->AddPnt(p3,c3,q3,-1,3); k4 = gr->AddPnt(p4,c4,q4,-1,3); + double a = gr->get(MGL_ENABLE_ALPHA)?-1:1; + k1 = gr->AddPnt(p1,c1,q1,a,11); k2 = gr->AddPnt(p2,c2,q2,a,11); + k3 = gr->AddPnt(p3,c3,q3,a,11); k4 = gr->AddPnt(p4,c4,q4,a,11); gr->quad_plot(k1,k2,k3,k4); if(strchr(stl,'#')) { @@ -206,27 +207,37 @@ void mgl_cone(HMGL gr, float x1, float y1, float z1, float x2, float y2, float z float c1=gr->GetC(ss,p1.z), c2=gr->GetC(ss,p2.z); long *kk=new long[164],k1=-1,k2=-1; bool edge = stl && strchr(stl,'@'); + bool wire = stl && strchr(stl,'#'); gr->Reserve(edge?166:82); - if(edge) + if(edge && !wire) { k1=gr->AddPnt(p1,c1,d,-1,3); k2=gr->AddPnt(p2,c2,d,-1,3); } float f,si,co, dr=r2-r1; register long i; - for(i=0;i<41;i++) + for(i=0;i<(wire?13:41);i++) { if(gr->Stop) { delete []kk; return; } - f = i*M_PI/20; co = cos(f); si = sin(f); + f = i*M_PI/(wire?6:20); co = cos(f); si = sin(f); p = p1+(r1*co)*a+(r1*si)*b; q = (si*a-co*b)^(d + (dr*co)*a + (dr*si)*b); + if(wire) q.x=q.y=NAN; kk[i] = gr->AddPnt(p,c1,q,-1,3); - if(edge) kk[i+82] = gr->AddPnt(p,c1,d,-1,3); + if(edge && !wire) kk[i+82] = gr->AddPnt(p,c1,d,-1,3); p = p2+(r2*co)*a+(r2*si)*b; - kk[i+41] = gr->AddPnt(p,c2,q,-1,3); - if(edge) kk[i+123] = gr->AddPnt(p,c2,d,-1,3); + kk[i+(wire?13:41)] = gr->AddPnt(p,c2,q,-1,3); + if(edge && !wire) kk[i+123] = gr->AddPnt(p,c2,d,-1,3); } - for(i=0;i<40;i++) + if(wire) for(i=0;i<12;i++) + { + if(gr->Stop) { delete []kk; return; } + gr->line_plot(kk[i],kk[i+1]); + gr->line_plot(kk[i],kk[i+13]); + gr->line_plot(kk[i+14],kk[i+1]); + gr->line_plot(kk[i+14],kk[i+13]); + } + else for(i=0;i<40;i++) { if(gr->Stop) { delete []kk; return; } gr->quad_plot(kk[i],kk[i+1],kk[i+41],kk[i+42]); @@ -256,19 +267,24 @@ void mgl_cones_xyz(HMGL gr, HCDT x, HCDT y, HCDT z, const char *pen, const char static int cgid=1; gr->StartGroup("Cones",cgid++); m = x->GetNy() > y->GetNy() ? x->GetNy() : y->GetNy(); m = z->GetNy() > m ? z->GetNy() : m; - bool above = pen && strchr(pen,'a'); + bool above= pen && strchr(pen,'a'); + bool wire = pen && strchr(pen,'#'); float *dd=new float[2*n], x1,z0,zz,d; memset(dd,0,n*sizeof(float)); gr->SetPenPal(pen,&pal); - char cols[4]={'@',0,0.0}; + char c1[7]; memset(c1,0,7); c1[0] ='@'; + char c2[7]; memset(c2,0,7); c2[0] ='@'; + if(wire) c1[5]=c2[5]='#'; memset(dd,0,2*n*sizeof(float)); z0 = gr->GetOrgZ('x'); for(i=0;iv(i, jGetNy() ? j:0); for(j=0;jNextColor(pal); cols[1]=gr->last_color(); - if(gr->GetNumPal(pal)==2*m) { gr->NextColor(pal); cols[2]=gr->last_color(); } + gr->NextColor(pal); memcpy(c1+1,gr->last_line(),4); + if(gr->GetNumPal(pal)==2*m) + { gr->NextColor(pal); memcpy(c2+1,gr->last_line(),4); } + else memcpy(c2,c1,7); mx = jGetNy() ? j:0; my = jGetNy() ? j:0; mz = jGetNy() ? j:0; for(i=0;i0?dd[i+n]:z0; dd[i+n] += z->v(i,mz); mgl_cone(gr, x1,y->v(i,0),zz, x1,y->v(i,0),dd[i+n], 0.7*gr->BarWidth*d*(dd[i]-zz)/(dd[i]-z0), - 0.7*gr->BarWidth*d*(dd[i]-dd[i+n])/(dd[i]-z0), cols); + 0.7*gr->BarWidth*d*(dd[i]-dd[i+n])/(dd[i]-z0), c1); } - else mgl_cone(gr, x1,y->v(i,my),z0, x1,y->v(i,my),z->v(i,mz), 0.7*gr->BarWidth*d,0, cols); + else mgl_cone(gr, x1,y->v(i,my),z0, x1,y->v(i,my),z->v(i,mz), 0.7*gr->BarWidth*d,0, z->v(i,mz)<0?c1:c2); } } gr->EndGroup(); delete []dd; @@ -329,22 +345,24 @@ void mgl_ellipse(HMGL gr, float x1, float y1, float z1, float x2, float y2, floa const int n = 41; long pal=0,n0,n1=-1,n2,m1=-1,m2; gr->SetPenPal(stl,&pal); - float c=gr->NextColor(pal); + float c=gr->NextColor(pal), d; float k=(gr->GetNumPal(pal)>1)?gr->NextColor(pal):gr->AddTexture('k'); bool fill = !(stl && strchr(stl,'#')), box = (stl && strchr(stl,'@')) || !fill; if(!fill) k=c; gr->Reserve(2*n+1); - mglPoint p1(x1,y1,z1), p2(x2,y2,z2), v=p2-p1, u=mglPoint(0,0,1)^v, q=u^v, p, s; - u = (r/u.norm())*u; s = (p1+p2)/2.; v *=0.5+r/v.norm(); + mglPoint p1(x1,y1,z1), p2(x2,y2,z2), v=p2-p1; + d = v.norm(); + if(d==0) v = mglPoint(r); else v *= r/d; + mglPoint u=(mglPoint(0,0,1)^v)*sqrt(d*d/r/r+1), q=u^v, p, s=(p1+p2)/2.; // central point first - n0 = gr->AddPnt(p1,c,q,-1,3); + n0 = gr->AddPnt(p1,c,q,-1,11); for(long i=0;iStop) return; float t = i*2*M_PI/(n-1.); p = s+v*cos(t)+u*sin(t); - n2 = n1; n1 = gr->AddPnt(p,c,q,-1,3); + n2 = n1; n1 = gr->AddPnt(p,c,q,-1,11); m2 = m1; m1 = gr->CopyNtoC(n1,k); if(i>0) { @@ -366,10 +384,10 @@ void mgl_rhomb(HMGL gr, float x1, float y1, float z1, float x2, float y2, float gr->Reserve(8); mglPoint p1(x1,y1,z1), p2(x2,y2,z2), u=mglPoint(0,0,1)^(p1-p2), q=u^(p1-p2), p, s,qq; u = (r/u.norm())*u; s = (p1+p2)/2.; - p = p1; q = qq; n1 = gr->AddPnt(p,c,qq,-1,3); - p = s+u;q = qq; n2 = gr->AddPnt(p,b==c?c:k,qq,-1,3); - p = p2; q = qq; n3 = gr->AddPnt(p,b,qq,-1,3); - p = s-u;q = qq; n4 = gr->AddPnt(p,b==c?c:k,qq,-1,3); + p = p1; q = qq; n1 = gr->AddPnt(p,c,qq,-1,11); + p = s+u;q = qq; n2 = gr->AddPnt(p,b==c?c:k,qq,-1,11); + p = p2; q = qq; n3 = gr->AddPnt(p,b,qq,-1,11); + p = s-u;q = qq; n4 = gr->AddPnt(p,b==c?c:k,qq,-1,11); if(fill) gr->quad_plot(n1,n2,n4,n3); n1 = gr->CopyNtoC(n1,k); n2 = gr->CopyNtoC(n2,k); n3 = gr->CopyNtoC(n3,k); n4 = gr->CopyNtoC(n4,k); @@ -459,7 +477,7 @@ void mgl_dew_xy(HMGL gr, HCDT x, HCDT y, HCDT ax, HCDT ay, const char *sch, cons if(gr->MeshNum>1) { tx=(n-1)/(gr->MeshNum-1); ty=(m-1)/(gr->MeshNum-1); } if(tx<1) tx=1; if(ty<1) ty=1; - for(k=0;kGetNz();k++) for(j=0;jGetNz();k++) for(j=0;jv(i,j,k)*ax->v(i,j,k)+ay->v(i,j,k)*ay->v(i,j,k)); xm = xm>ym ? xm : ym; diff --git a/test.mgl b/test.mgl deleted file mode 100644 index 3ecee39..0000000 --- a/test.mgl +++ /dev/null @@ -1,7 +0,0 @@ -rotate 50 60 -box -fsurf 'x*y' -fsurf 'x^2' -fplot 't' 't' '1-t^2' 'r' - - diff --git a/texinfo/CMakeLists.txt b/texinfo/CMakeLists.txt index 2689808..0b7e5a5 100644 --- a/texinfo/CMakeLists.txt +++ b/texinfo/CMakeLists.txt @@ -4,7 +4,8 @@ if(MGL_HAVE_DOC) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/png/all.png - COMMAND LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/mgl ${CMAKE_BINARY_DIR}/examples/mgl_example +# COMMAND LD_LIBRARY_PATH=${CMAKE_BINARY_DIR}/mgl ${CMAKE_BINARY_DIR}/examples/mgl_example + COMMAND ${CMAKE_BINARY_DIR}/examples/mgl_example COMMAND touch ${CMAKE_SOURCE_DIR}/texinfo/png/all.png # MAIN_DEPENDENCY ${CMAKE_BINARY_DIR}/examples/mgl_example WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo/png @@ -12,37 +13,38 @@ if(MGL_HAVE_DOC) # set_source_files_properties(${CMAKE_BINARY_DIR}/examples/mgl_example PROPERTIES GENERATED 1) # ADD_CUSTOM_TARGET(gen_all_png DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png) # ADD_DEPENDENCIES(gen_all_png mgl_example) - set(list_texi_files_en mathgl_en.texi mgl_en.texi overview_en.texi example_en.texi ex_mgl_en.texi parse_en.texi core_en.texi concept_en.texi widget_en.texi data_en.texi other_en.texi samples_en.texi appendix_en.texi fdl.texi) - set(list_texi_files_ru mathgl_ru.texi mgl_ru.texi overview_ru.texi example_ru.texi ex_mgl_ru.texi parse_ru.texi core_ru.texi concept_ru.texi widget_ru.texi data_ru.texi other_ru.texi samples_ru.texi appendix_ru.texi fdl.texi) + set(list_texi_files_en mathgl_en.texi mgl_en.texi overview_en.texi example_en.texi ex_mgl_en.texi parse_en.texi core_en.texi concept_en.texi widget_en.texi data_en.texi other_en.texi appendix_en.texi fdl.texi) + set(list_texi_files_ru mathgl_ru.texi mgl_ru.texi overview_ru.texi example_ru.texi ex_mgl_ru.texi parse_ru.texi core_ru.texi concept_ru.texi widget_ru.texi data_ru.texi other_ru.texi appendix_ru.texi fdl.texi) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.info - COMMAND ${findth} --split=section mathgl_en.texi -o mathgl_en - COMMAND ${findth} --split=section mgl_en.texi -o mgl_en + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=section mathgl_en.texi -o mathgl_en + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=node --frames -o mgl_web_en mathgl_en.texi + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=no mgl_en.texi -o mgl_en.html COMMAND ${findmi} --no-validate mathgl_en.texi DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png DEPENDS ${list_texi_files_en} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo ) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/mathgl_ru.info - COMMAND ${findth} --split=section mathgl_ru.texi -o mathgl_ru - COMMAND ${findth} --split=section mgl_ru.texi -o mgl_ru + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=section mathgl_ru.texi -o mathgl_ru + COMMAND ${findth} -I=${CMAKE_SOURCE_DIR}/texinfo/png --split=no mgl_ru.texi -o mgl_ru.html COMMAND ${findmi} --no-validate mathgl_ru.texi DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png DEPENDS ${list_texi_files_ru} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo ) add_custom_command(OUTPUT ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.pdf - COMMAND ${findtp} mathgl_en.texi - COMMAND ${findtp} mathgl_en.texi - COMMAND ${findtp} mathgl_en.texi + COMMAND ${findtp} -I ${CMAKE_SOURCE_DIR}/texinfo/png mathgl_en.texi + COMMAND ${findtp} -I ${CMAKE_SOURCE_DIR}/texinfo/png mathgl_en.texi + COMMAND ${findtp} -I ${CMAKE_SOURCE_DIR}/texinfo/png mathgl_en.texi DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/png/all.png DEPENDS ${list_texi_files_en} - DEPENDS ${list_texi_files_ru} +# DEPENDS ${list_texi_files_ru} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/texinfo ) add_custom_target(documentation ALL DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.info -# DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.pdf + DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_en.pdf # DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_ru.info # DEPENDS ${CMAKE_SOURCE_DIR}/texinfo/mathgl_ru.pdf ) diff --git a/texinfo/classes.odg b/texinfo/classes.odg new file mode 100644 index 0000000000000000000000000000000000000000..4d245d237b8ab67af438bebfec65bfdbd17b8498 GIT binary patch literal 11301 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 CDxe_% literal 0 HcmV?d00001 diff --git a/texinfo/classes.pdf b/texinfo/classes.pdf new file mode 100644 index 0000000000000000000000000000000000000000..666ff9da08b20ca266a2963f334824d67c52cf03 GIT binary patch literal 23785 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 WGTxPZ7$^}@J(96M|0p8 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 nW;Eo8g(lIQF*7#Yke(<~WLnyy z5Tk#Wz-*@Tb2ulIusO%Cf)dD}&x z)Cy=iS8d5FE9iN)_bZ;3m6i3;@89hKpv_*2tc#2`8ZqCDuI%Ktli?oL01AvmUJ(-$ z)Ae8h0Kk9#mssEX;sb2mfcD;@p#v^vDk?+>WGo;+eSLko+eiUqw6xNcFY4>-KOhQR z@3B66_6#N4{q*CVe|L9x7!IR~s;Z`@rl*@*IEf%Ah(YnJsIbsxq3(ma`u6YN7{tT} z>+8lIwEXU;r(No~7Da>u%&wlZXQ%eXmM~O-o5hNkQ=zl=nn{voLUQ_z@8?xKQu7 zy0W66ps+ERDlW_T=FOM>b;Vqn%scQ0`6VS0p`rQ}Y7+n^?DN{1QIH53c39&eZ6Uxd zjEx0hP;W&$Gb^uq7sATl`ks}`#P zsC7iRk5V~f+fI)jJ-WX;Z{6S9%ZC%ZyD-$!`l?b?T~+nH`vQkv!U2`moisauzJ^Suu!G#!{q-&j303 z1_tD?o0i<%SCE~v^J0s4BN**l&G{a8_pP3Xn7C6?gNh3<>e<;@OlmmUqE1j_A5WL-h~|l>}e7KnPyM08HjjY+&n#fLD2HUQ@~7GS?%53Udv|) zSQlotwA|fXp7bX&f}$)@x?V?JrMmX8ok`Hkh2ddaP@sicK7FCpw^f32?xDhK=9bcN zUWO0Ad(^74`%~6>=dm|a0sj~cq}C`YDG_oze5WqiUu{ad=Xzkm1EztH9zK_x{6ihv z4<9~27gDr~+fsV^dNo56>gh;_L`FRIgTU*0mFz`cS zVqyegyZVJh9gn__j*j{HRGPnooXb!f?_tyG=H}yv)doS};Kx_P0IR`qL#EJjP><;b z%;I56N9x{kYld8&?Oavp&gRMAziJIm+p4C6`eYfM55b2nq^By8<;sq= zCAl+Jq-BO|8mPT_CXARQVC$7J1dy7YD{JIZFUAwD(r8bFHha&Zl$^LrkxbUE>)HS{+AhZ?5TFDd4|JaWp1wi!$=a4geW;4yTwak3?O=ig@p;xdXyw}bciFw zvJ-y21!=2D0i#E8@{pOi`6b{a)Uqk3dzHf}uKB;I0xl5qJCaBSwzfc?myK@N#yy&j`4lzpIz5MZQ0r?NTRU-|Q=-Jk*p zw#?~WSwtXaWTF~!7!Wc&p2`9xLWW2_D!KtB6RgNIJ^bcBp5zX#wmFAaT!S3>}*i23l+M%y92@k zaKB&u{e~>bfYB`0JLYLIELWLhI$Qj%ciaS%3X~9|R~DdYD~J^e#iRypC1d!!F8+>Y zi;G7Q%fhz6zN~3zxC+A2DX*yL11zJr7if(@KLDhDey})Qs!bso)A@(*_H=yXe+$g_ z7S&f5N2{P<4H(Mz(lhpgvNA!}144*Sv!-~J3KigWudlBU^PdxjbmFm^3|yXU0@0?U z2x_ks0a+cFoD8tQ7Z(=50HL;?p3Rl6Fd(Ozye=K=?T-L6#mC173akWWmW}7}$OJ$u zxtu6aoSd9QMMW(wEd`;OZ>b)U%1kStN=Zug0Ywcg6V;0+@i#$%filS~Ipfv_ph^Q^ z&0xtshlPPUpNaix+>RT&Wvw%*oKISY#&pk{O%u>dC2?0bI)N{3Zz z$i}RJSy}cv83ZWb#{jT91f8U&vXXUqPGG42t>C}B>$}4CxV)e>8~*C*DzCO%N?Ka8 z)3(Cn#~~LN7m?$tB^u5^y$B3M*l`%Uxw&~zR9RUS%ch?NbyQnU1I)xmAc%8q_(Da0 z0E!1YzgmL`AOArJI{xVh0*K+c<97oj2QUv%sm<5x^4K__y&N#(H;TC^@d&@4vx>w5 zwKE|B+tt-IhH{WmBwlKLZ*O7Wu3V!8Os$K({kAlEp+Z4%Ss7@-DY#NRYLDq)n#n!Aytpq?O73KM{fNV9FnY{UNP_32wh9={Bk^==;%^_JFx4`A$x>R7B7J{{YqcwkrSt literal 0 HcmV?d00001 diff --git a/texinfo/concept_en.texi b/texinfo/concept_en.texi index fadd7c2..743e1ae 100644 --- a/texinfo/concept_en.texi +++ b/texinfo/concept_en.texi @@ -17,12 +17,11 @@ There are six most general (base) concepts: @item @strong{All plots are vector plots.} The MathGL library is intended for handling scientific data which have vector nature (lines, faces, matrices and so on). As a result, vector representation is used in all cases! In addition, the vector representation allows one to scale the plot easily -- change the canvas size by a factor of 2, and the picture will be proportionally scaled. @item -@strong{New drawing never clears things drawn already.} This, in some sense, unexpected, idea allows to create a lot of ``combined'' graphics. For example, to make a surface with contour lines one needs to call the function for surface plotting and the function for contour lines plotting (in any order). Thus the special functions for making this ``combined'' plots (as it is done in Matlab and some other plotting systems) are superfluous. Many more examples of such plots can be found in section @ref{Hints} and in home site (@uref{http://mathgl.sf.net/index.html}). +@strong{New drawing never clears things drawn already.} This, in some sense, unexpected, idea allows to create a lot of ``combined'' graphics. For example, to make a surface with contour lines one needs to call the function for surface plotting and the function for contour lines plotting (in any order). Thus the special functions for making this ``combined'' plots (as it is done in Matlab and some other plotting systems) are superfluous. @end enumerate In addition to the general concepts I want to comment on some non-trivial or less commonly used general ideas -- plot positioning, axis specification and curvilinear coordinates, styles for lines, text and color scheme. -@ifclear UDAV @menu * Coordinate axes:: * Color styles:: @@ -33,19 +32,6 @@ In addition to the general concepts I want to comment on some non-trivial or les * Command options:: * Interfaces:: @end menu -@end ifclear - -@ifset UDAV -@menu -* Coordinate axes:: -* Color styles:: -* Line styles:: -* Color scheme:: -* Font styles:: -* Textual formulas:: -* Command options:: -@end menu -@end ifset @c ------------------------------------------------------------------ @node Coordinate axes, Color styles, , General concepts @@ -83,7 +69,7 @@ You can also use ``bright'' colors. The ``bright'' color contain 2 symbols in br @cindex Mark style @cindex Arrows -The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji=} or space), width (@samp{123456789}) and marks (@samp{*o+xsd.^v<>} and @samp{#} modifier). If one of the type of information is omitted then default values used with next color from palette (see @ref{Palette and colors}). +The line style is defined by the string which may contain specifications for color (@samp{wkrgbcymhRGBCYMHWlenupqLENUPQ}), dashing style (@samp{-|;:ji=} or space), width (@samp{123456789}) and marks (@samp{*o+xsd.^v<>} and @samp{#} modifier). If one of the type of information is omitted then default values used with next color from palette (see @ref{Palette and colors}). Note, that internal color counter will be nullified by any change of palette. This includes even hidden change (for example, by @code{Box()} or @code{Axis()} functions). @ifhtml @html By default palette contain following colors: dark grayH’, blueb’, greeng’, redr’, cyanc’, magentam’, yellowy’, grayh’, green-bluel’, sky-bluen’, orangeq’, green-yellowe’, blue-violetu’, purplep’. @@ -92,7 +78,7 @@ By default palette contain following colors: