first comit

This commit is contained in:
Mats van Reenen 2020-07-22 11:05:57 +02:00
commit 5031e5f2b6
18 changed files with 843670 additions and 0 deletions

18
.VSCodeCounter/details.md Normal file
View File

@ -0,0 +1,18 @@
# Details
Date : 2020-07-21 11:53:50
Directory /home/mreenen/projecten/labvoeding front
Total : 3 files, 116 codes, 20 comments, 34 blanks, all 170 lines
[summary](results.md)
## Files
| filename | language | code | comment | blank | total |
| :--- | :--- | ---: | ---: | ---: | ---: |
| [corner radius simulation.html](/corner radius simulation.html) | HTML | 61 | 0 | 8 | 69 |
| [dat.gui.min.js](/dat.gui.min.js) | JavaScript | 1 | 12 | 2 | 15 |
| [front.py](/front.py) | Python | 54 | 8 | 24 | 86 |
[summary](results.md)

View File

@ -0,0 +1,5 @@
"filename", "language", "HTML", "Python", "JavaScript", "comment", "blank", "total"
"/home/mreenen/projecten/labvoeding front/corner radius simulation.html", "HTML", 61, 0, 0, 0, 8, 69
"/home/mreenen/projecten/labvoeding front/dat.gui.min.js", "JavaScript", 0, 0, 1, 12, 2, 15
"/home/mreenen/projecten/labvoeding front/front.py", "Python", 0, 54, 0, 8, 24, 86
"Total", "-", 61, 54, 1, 20, 34, 170
1 filename language HTML Python JavaScript comment blank total
2 /home/mreenen/projecten/labvoeding front/corner radius simulation.html HTML 61 0 0 0 8 69
3 /home/mreenen/projecten/labvoeding front/dat.gui.min.js JavaScript 0 0 1 12 2 15
4 /home/mreenen/projecten/labvoeding front/front.py Python 0 54 0 8 24 86
5 Total - 61 54 1 20 34 170

23
.VSCodeCounter/results.md Normal file
View File

@ -0,0 +1,23 @@
# Summary
Date : 2020-07-21 11:53:50
Directory /home/mreenen/projecten/labvoeding front
Total : 3 files, 116 codes, 20 comments, 34 blanks, all 170 lines
[details](details.md)
## Languages
| language | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| HTML | 1 | 61 | 0 | 8 | 69 |
| Python | 1 | 54 | 8 | 24 | 86 |
| JavaScript | 1 | 1 | 12 | 2 | 15 |
## Directories
| path | files | code | comment | blank | total |
| :--- | ---: | ---: | ---: | ---: | ---: |
| . | 3 | 116 | 20 | 34 | 170 |
[details](details.md)

View File

@ -0,0 +1,29 @@
Date : 2020-07-21 11:53:50
Directory : /home/mreenen/projecten/labvoeding front
Total : 3 files, 116 codes, 20 comments, 34 blanks, all 170 lines
Languages
+------------+------------+------------+------------+------------+------------+
| language | files | code | comment | blank | total |
+------------+------------+------------+------------+------------+------------+
| HTML | 1 | 61 | 0 | 8 | 69 |
| Python | 1 | 54 | 8 | 24 | 86 |
| JavaScript | 1 | 1 | 12 | 2 | 15 |
+------------+------------+------------+------------+------------+------------+
Directories
+------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| path | files | code | comment | blank | total |
+------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| . | 3 | 116 | 20 | 34 | 170 |
+------------------------------------------------------------------------+------------+------------+------------+------------+------------+
Files
+------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| filename | language | code | comment | blank | total |
+------------------------------------------------------------------------+------------+------------+------------+------------+------------+
| /home/mreenen/projecten/labvoeding front/corner radius simulation.html | HTML | 61 | 0 | 8 | 69 |
| /home/mreenen/projecten/labvoeding front/dat.gui.min.js | JavaScript | 1 | 12 | 2 | 15 |
| /home/mreenen/projecten/labvoeding front/front.py | Python | 54 | 8 | 24 | 86 |
| Total | | 116 | 20 | 34 | 170 |
+------------------------------------------------------------------------+------------+------------+------------+------------+------------+

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"python.pythonPath": "/bin/python"
}

Binary file not shown.

467
base64 Normal file
View File

@ -0,0 +1,467 @@
%!PS-Adobe-3.0
%%Creator: (ImageMagick)
%%Title: (base64)
%%CreationDate: (2020-07-20T17:12:40+00:00)
%%BoundingBox: 1043 694 1126 775
%%HiResBoundingBox: 1043 694 1126 775
%%DocumentData: Clean7Bit
%%LanguageLevel: 1
%%Orientation: Portrait
%%PageOrder: Ascend
%%Pages: 1
%%EndComments
%%BeginDefaults
%%EndDefaults
%%BeginProlog
%
% Display a color image. The image is displayed in color on
% Postscript viewers or printers that support color, otherwise
% it is displayed as grayscale.
%
/DirectClassPacket
{
%
% Get a DirectClass packet.
%
% Parameters:
% red.
% green.
% blue.
% length: number of pixels minus one of this color (optional).
%
currentfile color_packet readhexstring pop pop
compression 0 eq
{
/number_pixels 3 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add 3 mul def
} ifelse
0 3 number_pixels 1 sub
{
pixels exch color_packet putinterval
} for
pixels 0 number_pixels getinterval
} bind def
/DirectClassImage
{
%
% Display a DirectClass image.
%
systemdict /colorimage known
{
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ DirectClassPacket } false 3 colorimage
}
{
%
% No colorimage operator; convert to grayscale.
%
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ GrayDirectClassPacket } image
} ifelse
} bind def
/GrayDirectClassPacket
{
%
% Get a DirectClass packet; convert to grayscale.
%
% Parameters:
% red
% green
% blue
% length: number of pixels minus one of this color (optional).
%
currentfile color_packet readhexstring pop pop
color_packet 0 get 0.299 mul
color_packet 1 get 0.587 mul add
color_packet 2 get 0.114 mul add
cvi
/gray_packet exch def
compression 0 eq
{
/number_pixels 1 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add def
} ifelse
0 1 number_pixels 1 sub
{
pixels exch gray_packet put
} for
pixels 0 number_pixels getinterval
} bind def
/GrayPseudoClassPacket
{
%
% Get a PseudoClass packet; convert to grayscale.
%
% Parameters:
% index: index into the colormap.
% length: number of pixels minus one of this color (optional).
%
currentfile byte readhexstring pop 0 get
/offset exch 3 mul def
/color_packet colormap offset 3 getinterval def
color_packet 0 get 0.299 mul
color_packet 1 get 0.587 mul add
color_packet 2 get 0.114 mul add
cvi
/gray_packet exch def
compression 0 eq
{
/number_pixels 1 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add def
} ifelse
0 1 number_pixels 1 sub
{
pixels exch gray_packet put
} for
pixels 0 number_pixels getinterval
} bind def
/PseudoClassPacket
{
%
% Get a PseudoClass packet.
%
% Parameters:
% index: index into the colormap.
% length: number of pixels minus one of this color (optional).
%
currentfile byte readhexstring pop 0 get
/offset exch 3 mul def
/color_packet colormap offset 3 getinterval def
compression 0 eq
{
/number_pixels 3 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add 3 mul def
} ifelse
0 3 number_pixels 1 sub
{
pixels exch color_packet putinterval
} for
pixels 0 number_pixels getinterval
} bind def
/PseudoClassImage
{
%
% Display a PseudoClass image.
%
% Parameters:
% class: 0-PseudoClass or 1-Grayscale.
%
currentfile buffer readline pop
token pop /class exch def pop
class 0 gt
{
currentfile buffer readline pop
token pop /depth exch def pop
/grays columns 8 add depth sub depth mul 8 idiv string def
columns rows depth
[
columns 0 0
rows neg 0 rows
]
{ currentfile grays readhexstring pop } image
}
{
%
% Parameters:
% colors: number of colors in the colormap.
% colormap: red, green, blue color packets.
%
currentfile buffer readline pop
token pop /colors exch def pop
/colors colors 3 mul def
/colormap colors string def
currentfile colormap readhexstring pop pop
systemdict /colorimage known
{
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ PseudoClassPacket } false 3 colorimage
}
{
%
% No colorimage operator; convert to grayscale.
%
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ GrayPseudoClassPacket } image
} ifelse
} ifelse
} bind def
/DisplayImage
{
%
% Display a DirectClass or PseudoClass image.
%
% Parameters:
% x & y translation.
% x & y scale.
% label pointsize.
% image label.
% image columns & rows.
% class: 0-DirectClass or 1-PseudoClass.
% compression: 0-none or 1-RunlengthEncoded.
% hex color packets.
%
gsave
/buffer 512 string def
/byte 1 string def
/color_packet 3 string def
/pixels 768 string def
currentfile buffer readline pop
token pop /x exch def
token pop /y exch def pop
x y translate
currentfile buffer readline pop
token pop /x exch def
token pop /y exch def pop
currentfile buffer readline pop
token pop /pointsize exch def pop
x y scale
currentfile buffer readline pop
token pop /columns exch def
token pop /rows exch def pop
currentfile buffer readline pop
token pop /class exch def pop
currentfile buffer readline pop
token pop /compression exch def pop
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
grestore
showpage
} bind def
%%EndProlog
%%Page: 1 1
%%PageBoundingBox: 1043 694 1126 775
DisplayImage
1043 694
83 81
12
83 81
1
1
1
8
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
%%PageTrailer
%%Trailer
%%EOF

View File

@ -0,0 +1,80 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sqare round inside corner</title>
</style>
</head>
<body>
<div id='fps'></div>
<svg viewbox="0 0 15 15">
<rect width="10" height="10" x="0" y="0" stroke="green" stroke-width="0.1" fill="none" />
<circle cx='0' cy='0', r='1' />
<line y1="0" x1="5" y2="10" x2="5" stroke="red" stroke-width="0.05" />
<line y1="0" x1="5" y2="10" x2="10" stroke="red" stroke-width="0.05" />
<circle cx="10" cy="0" r="0.05" fill="blue" />
</svg>
<script>
var drow = function(){
a.drow(a)
}
class corner{
grow = 0.1;
fpsSlower = 0;
radius = 1;
constructor(svg){
this.last = new Date().getTime();
this.svg = svg;
this.circle = svg.getElementsByTagName('circle')[0]
this.dot = svg.getElementsByTagName('circle')[1]
this.line = svg.getElementsByTagName('line')[0]
this.line2 = svg.getElementsByTagName('line')[1]
this.fps = document.getElementById('fps')
this.drow(this)
}
drow(self){
if(typeof self != 'object'){
self = a
}
requestAnimationFrame(self.drow)
//setTimeout(self.drow, 100)
if(self.fpsSlower == 10){
var last = new Date().getTime()
self.fps.innerHTML = Math.round(10*100*1000/(last - self.last))/100 + " fps"
self.last = last
self.fpsSlower = 0
}
self.fpsSlower += 1;
self.circle.r.baseVal.value = self.radius;
self.circle.cx.baseVal.value = self.circle.cy.baseVal.value = 10 - (Math.SQRT2/2 * self.radius);
self.line.x1.baseVal.value = self.line.y1.baseVal.value = 10 - (Math.SQRT2/2 * self.radius);
self.line2.x1.baseVal.value = self.line2.y1.baseVal.value = 10 - (Math.SQRT2/2 * self.radius);
self.line.x2.baseVal.value = 10 - (self.radius * 1.414);
self.dot.cy.baseVal.value = 10 - (self.radius * 1.414);
self.radius += self.grow
if((self.radius >= 7.07 && self.grow > 0)|| (self.radius <= 0.01 && self.grow < 0))
self.grow = -self.grow
}
}
window.onload = function() {
a = new corner(document.getElementsByTagName('svg')[0])
var gui = new dat.GUI();
gui.add(a, 'radius', 0.01, 7.07).step(0.001).listen();
gui.add(a, 'grow', 0, 4)
};
</script>
<script type="text/javascript" src="dat.gui.min.js"></script>
</body>
</html>

335876
cq Normal file

File diff suppressed because it is too large Load Diff

14
dat.gui.min.js vendored Normal file

File diff suppressed because one or more lines are too long

94
front.py Executable file
View File

@ -0,0 +1,94 @@
#!/bin/python
import cadquery as cq
import base64
import subprocess
import math
from mathobjects import *
pannelSize = Vec(400, 300, 5)
tool = 4
def drowOnPos(f, pos, fn):
f = f.center(pos.x - f.plane.origin[0], pos.y - f.plane.origin[1], pos.z - f.plane.origin[2])
return fn(f)
def rectWitchInsideRadius(f, w, h, r):
cs = math.sqrt(2) * r
f = f.center(w/2 - cs, h/2 - cs)
f = f.threePointArc((cs, 0), (cs, -cs))
f = f.lineTo(cs, -(h - cs))
f = f.threePointArc((cs, -h), (0, -h))
f = f.lineTo(-(w - 2*cs), -h)
f = f.threePointArc((-(w-cs), -h), (-(w-cs), -(h-cs)))
f = f.lineTo(-(w-cs), -cs)
f = f.threePointArc((-(w-cs), 0), (-(w-2*cs), 0))
f = f.close()
f = f.center(-w/2 + cs, -h/2 + cs)
return f
def holeWithFlets(f, r, fw):
fl = math.sqrt(math.pow(r, 2) - math.pow(fw/2, 2))
f = f.center(fw/2, fl/2)
f = f.threePointArc((-fw/2, r - fl/2), (-fw, 0))
f = f.lineTo(-fw, -fl)
f = f.threePointArc((-fw/2, -(fl/2 + r)), (0, -fl))
f = f.close()
f = f.center(-fw/2, -fl/2)
return f
def femailBananaConnHole(f):
return holeWithFlets(f, 6, 10.5)
def LPSCut(f):
global pannelSize, tool
displaySize = (77, 39)
clearence = 15
connPoss = [displaySize[0]/3, displaySize[1]/2 + 30]
# display
f = f.center(0, 10)
f = rectWitchInsideRadius(f, displaySize[0], displaySize[1], tool/2)
# connectors
f = f.center(connPoss[0], -connPoss[1])
f = femailBananaConnHole(f)
f = f.center(-2*connPoss[0], 0)
f = femailBananaConnHole(f)
# f = f.center()
return f
def LPSText(f):
f = f.rect(95, 50)
def frontPannle():
global pannelSize
f = cq.Workplane('XZ')
LPSPos = Vec(125, 0, 100)
f = f.rect(pannelSize.x, pannelSize.z)
f = drowOnPos(f, LPSPos, LPSCut)
f = f.extrude(pannelSize.y)
f = drowOnPos(f, LPSPos, LPSText)
return f
f = frontPannle()
cq.exporters.exportShape(f, 'STEP', open('front.step', 'w'))
subprocess.run(["/usr/lib64/freecad/bin/FreeCAD", './front.step'])
# svg = f.toSvg().encode('ascii')
# svg = base64.b64encode(svg)
# url = 'data:image/svg+xml;base64,' + svg.decode('ascii')
# subprocess.run(["firefox", url])

1957
front.step Normal file

File diff suppressed because it is too large Load Diff

226
front.stl Normal file
View File

@ -0,0 +1,226 @@
solid
facet normal -0.000000e+00 0.000000e+00 -1.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
vertex -2.000000e+02 -5.000000e+00 -1.500000e+02
vertex -2.000000e+02 0.000000e+00 -1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 -0.000000e+00 -1.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
vertex 2.000000e+02 -5.000000e+00 -1.500000e+02
vertex -2.000000e+02 -5.000000e+00 -1.500000e+02
endloop
endfacet
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex 2.000000e+02 -5.000000e+00 -1.500000e+02
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
endloop
endfacet
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 1.500000e+02
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
endloop
endfacet
facet normal -0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex -2.000000e+02 0.000000e+00 1.500000e+02
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex 2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex -2.000000e+02 0.000000e+00 1.500000e+02
vertex -2.000000e+02 -5.000000e+00 1.500000e+02
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
endloop
endfacet
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex -2.000000e+02 -5.000000e+00 -1.500000e+02
vertex -2.000000e+02 -5.000000e+00 1.500000e+02
vertex -2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal -1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex -2.000000e+02 0.000000e+00 -1.500000e+02
vertex -2.000000e+02 -5.000000e+00 -1.500000e+02
vertex -2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal 1.000000e+00 0.000000e+00 -0.000000e+00
outer loop
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex 1.080000e+02 0.000000e+00 1.350000e+02
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
facet normal 1.000000e+00 0.000000e+00 0.000000e+00
outer loop
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
vertex 1.080000e+02 -5.000000e+00 9.600000e+01
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
outer loop
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
vertex 1.850000e+02 0.000000e+00 1.350000e+02
vertex 1.850000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 -1.000000e+00
outer loop
vertex 1.080000e+02 0.000000e+00 1.350000e+02
vertex 1.850000e+02 0.000000e+00 1.350000e+02
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
facet normal -1.000000e+00 0.000000e+00 -0.000000e+00
outer loop
vertex 1.850000e+02 0.000000e+00 1.350000e+02
vertex 1.850000e+02 0.000000e+00 9.600000e+01
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
endloop
endfacet
facet normal -1.000000e+00 -0.000000e+00 0.000000e+00
outer loop
vertex 1.850000e+02 0.000000e+00 1.350000e+02
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
vertex 1.850000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex 1.080000e+02 -5.000000e+00 9.600000e+01
endloop
endfacet
facet normal 0.000000e+00 0.000000e+00 1.000000e+00
outer loop
vertex 1.850000e+02 0.000000e+00 9.600000e+01
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex -2.000000e+02 0.000000e+00 -1.500000e+02
vertex -2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
outer loop
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex -2.000000e+02 0.000000e+00 1.500000e+02
vertex 1.080000e+02 0.000000e+00 1.350000e+02
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
outer loop
vertex 1.850000e+02 0.000000e+00 1.350000e+02
vertex 1.080000e+02 0.000000e+00 1.350000e+02
vertex 2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 1.850000e+02 0.000000e+00 9.600000e+01
vertex 1.850000e+02 0.000000e+00 1.350000e+02
vertex 2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
vertex 1.080000e+02 0.000000e+00 9.600000e+01
vertex 1.850000e+02 0.000000e+00 9.600000e+01
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
vertex -2.000000e+02 0.000000e+00 -1.500000e+02
vertex 1.080000e+02 0.000000e+00 9.600000e+01
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 -0.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 -1.500000e+02
vertex 1.850000e+02 0.000000e+00 9.600000e+01
vertex 2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 0.000000e+00 1.500000e+02
vertex 1.080000e+02 0.000000e+00 1.350000e+02
vertex -2.000000e+02 0.000000e+00 1.500000e+02
endloop
endfacet
facet normal -0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 1.080000e+02 -5.000000e+00 9.600000e+01
vertex -2.000000e+02 -5.000000e+00 1.500000e+02
vertex -2.000000e+02 -5.000000e+00 -1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 1.080000e+02 -5.000000e+00 9.600000e+01
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
vertex -2.000000e+02 -5.000000e+00 1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 1.850000e+02 -5.000000e+00 1.350000e+02
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex 1.850000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 -5.000000e+00 -1.500000e+02
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
vertex 1.080000e+02 -5.000000e+00 9.600000e+01
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 -5.000000e+00 -1.500000e+02
vertex 1.080000e+02 -5.000000e+00 9.600000e+01
vertex -2.000000e+02 -5.000000e+00 -1.500000e+02
endloop
endfacet
facet normal 0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 -5.000000e+00 -1.500000e+02
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex 1.850000e+02 -5.000000e+00 9.600000e+01
endloop
endfacet
facet normal -0.000000e+00 -1.000000e+00 0.000000e+00
outer loop
vertex 2.000000e+02 -5.000000e+00 1.500000e+02
vertex -2.000000e+02 -5.000000e+00 1.500000e+02
vertex 1.080000e+02 -5.000000e+00 1.350000e+02
endloop
endfacet
endsolid

74
lenen en rekenen.html Normal file
View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>sqare round inside corner</title>
</style>
</head>
<body>
<div id=fps></div>
<script>
var drow = function(){
a.drow(a)
}
class corner{
totaal = 21230;
zelfBetalen = 5000;
termijnen = 4;
rente = 6.9;
betalen = 500;
update(self){
if(typeof self != 'object'){
self = a
}
requestAnimationFrame(self.update)
//setTimeout(self.drow, 100)
if(self.fpsSlower == 10){
var last = new Date().getTime()
self.fps.innerHTML = Math.round(10*100*1000/(last - self.last))/100 + " fps"
self.last = last
self.fpsSlower = 0
}
self.fpsSlower += 1;
self.teLenen = self.totaal - self.zelfBetalen
self.renteB = 0
nogBetalen = self.teLenen
for(var i=0; i<self.termijnen*12; i++){
self.renteB += nogBetalen * self.rente / 100
nogBetalen
}
self.bedragPM = (self.teLenen + self.renteB) / (self.termijnen * 12)
self.kwijt = (self.betalen) * (self.termijnen * 12)
self.verschil = self.kwijt - (self.teLenen + self.renteB)
self.werkelijkeRente = ((self.verschil / self.teLenen))*100
}
}
window.onload = function() {
a = new corner()
a.update()
var gui = new dat.GUI();
gui.add(a, 'totaal', 1000, 30000);
gui.add(a, 'zelfBetalen', 0, 10000);
gui.add(a, 'termijnen', 1, 10);
gui.add(a, 'betalen');
gui.add(a, 'teLenen').listen();
gui.add(a, 'renteB').listen();
gui.add(a, 'bedragPM').listen();
gui.add(a, 'kwijt').listen();
gui.add(a, 'verschil').listen();
gui.add(a, 'werkelijkeRente').listen();
};
</script>
<script type="text/javascript" src="dat.gui.min.js"></script>
</body>
</html>

33
mathTest.py Executable file
View File

@ -0,0 +1,33 @@
#!/bin/python
import mathobjects as mo
# a = mo.Const(5)
# b = mo.Const(10)
# c = mo.Var('c')
# f = a*(b//(a**(b/a-mo.Sin(5))))-b+2 == c-b
# # f = a + b == c + b
# print(f)
# # f = f.simplify()
# print(f)
# y = f.solve({"c": 2})
# print(y)
k = mo.Vec(5, 6, 7)
print(str(k))
k[1] = 3
print(str(k))
print(str(k[2]))
# print("a is b: " + str(a is b))
# print("a is not b: " + str(a is not b))

728
mathobjects.py Executable file
View File

@ -0,0 +1,728 @@
import math
__all__ = [
# value types
'Const',
'Var',
# math functions
'Add',
'Div',
'Round',
'Pow',
'Mod',
'Mul',
'Neg',
'Sub',
'Lt',
'Le',
'Eql',
'NEql',
'Ge',
'Gt',
'Sin',
'Sinh',
'Cos',
'Cosh',
'Tan',
'Tanh',
# other types
'Vec'
]
"""
bracketLevel:
0: never
1: add, sub
2: mul, div
3: always
"""
def addBrackets(f, bl):
s = str(f)
if ( (bl >= 1 and isinstance(f, (Add, Sub)))
or (bl >= 2 and isinstance(f, (Mul, Div)))
or (bl >= 3 and not isinstance(f, (Const, Var)))):
s = "(" + s + ")"
return s
# =================================================================
# == function =====================================================
# =================================================================
class Func:
def __init__(self, left, right):
if isinstance(left, (int, float)):
self.left = Const(left)
else:
self.left = left
if isinstance(right, (int, float)):
self.right = Const(right)
else:
self.right = right
def solve(self, vars):
l = self.left.solve(vars)
r = self.right.solve(vars)
val = self.fn(l, r)
print("solve(): " + str(self.copy()(l, r)) + ' = ' + str(val))
return val
# return self.fn(self.left.solve(vars), self.right.solve(vars))
def simplify(self):
left = self.left.simplify()
right = self.right.simplify()
if isinstance(left, Const) and isinstance(right, Const):
return Const(self.solve({}))
else:
return self.copy()(left, right)
def __add__(self, other): # self + other
return Add(self, other)
def __truediv__(self, other): # self / other
return Div(self, other)
def __floordiv__(self, other): # self // other
return Round(Div(self, other))
def __pow__(self, other): # self ** other
return Pow(self, other)
def __mod__(self, other): # self % other
return Mod(self, other)
def __mul__(self, other): # self * other
return Mul(self, other)
def __neg__(self): # -self
return Neg(self)
def __sub__(self, other): # self - other
return Sub(self, other)
def __lt__(self, other): # self < other
return Lt(self, other)
def __le__(self, other): # self <= other
return Le(self, other)
def __eq__(self, other): # self == other
return Eql(self, other)
def __ne__(self, other): # self != other
return NEql(self, other)
def __ge__(self, other): # self >= other
return Ge(self, other)
def __gt__(self, other): # self > other
return Gt(self, other)
def __str__ (self):
s = addBrackets(self.left, self.bracketLevel)
s += ' ' + self.symbol + ' '
s += addBrackets(self.right, self.bracketLevel)
return s
# =================================================================
# == Const ========================================================
# =================================================================
class Const(Func):
def __init__(self, value):
self.value = value
def solve(self, vars):
return self.value
def copy(self):
return Const
def simplify(self):
return self
def __str__(self):
return str(self.value)
# =================================================================
# == Var ==========================================================
# =================================================================
class Var(Func):
def __init__ (self, name):
self.name = name
def solve(self, vars):
return vars[self.name]
def copy(self):
return Var
def simplify(self):
return self
def __str__(self):
return str(self.name)
# =================================================================
# == Add ==========================================================
# =================================================================
class Add(Func):
symbol = '+'
bracketLevel = 0
def fn(self, a, b):
return a + b
def copy(self):
return Add
# =================================================================
# == Div ==========================================================
# =================================================================
class Div(Func):
symbol = '/'
bracketLevel = 1
def fn(self, a, b):
return a / b
def copy(self):
return Div
# =================================================================
# == Round ==========================================================
# =================================================================
class Round(Func):
def __init__(self, function, p=0):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
self.p = 10**p
def solve(self, vars):
anser = self.function.solve(vars)
anser = float(int(anser*self.p + 0.5)) / self.p
return anser
def copy(self):
return Round
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__(self):
return "round(" + str(self.function) + ")"
# =================================================================
# == Pow ==========================================================
# =================================================================
class Pow(Func):
symbol = '^'
bracketLevel = 3
def fn(self, a, b):
return a ** b
def copy(self):
return Pow
# =================================================================
# == Mod ==========================================================
# =================================================================
class Mod(Func):
symbol = '%'
bracketLevel = 3
def fn(self, a, b):
return a % b
def copy(self):
return Mod
# =================================================================
# == Mul ==========================================================
# =================================================================
class Mul(Func):
symbol = '*'
bracketLevel = 1
def fn(self, a, b):
return a * b
def copy(self):
return Mul
# =================================================================
# == Neg ==========================================================
# =================================================================
class Neg(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return -self.function.solve(vars)
def copy(self):
return Neg
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__(self):
return "-" + addBrackets(self.function, 3) + ")"
# =================================================================
# == Sub ==========================================================
# =================================================================
class Sub(Func):
symbol = '-'
bracketLevel = 2
def fn(self, a, b):
return a - b
def copy(self):
return Sub
def __str__ (self):
s = addBrackets(self.left, 0)
s += ' ' + self.symbol + ' '
s += addBrackets(self.right, self.bracketLevel)
return s
# =================================================================
# == Lt ==========================================================
# =================================================================
class Lt(Func):
symbol = '<'
bracketLevel = 3
def fn(self, a, b):
return a < b
def copy(self):
return Lt
# =================================================================
# == Le ==========================================================
# =================================================================
class Le(Func):
symbol = '<='
bracketLevel = 3
def fn(self, a, b):
return a <= b
def copy(self):
return Le
# =================================================================
# == Eql ==========================================================
# =================================================================
class Eql(Func):
symbol = '='
bracketLevel = 0
def fn(self, a, b):
return a == b
def copy(self):
return Eql
def simplify(self):
if ( (isinstance(self.left,self.right.copy())) # same opperation
and (not isinstance(self.left, (Const, Var, Round))) # not const, var or Round
and (self.left.right is self.right.right)): # subthing is the same
return self.copy()(self.left.left.simplify(), self.right.left.simplify())
return self.copy()(self.left.simplify(), self.right.simplify())
# =================================================================
# == NEql ==========================================================
# =================================================================
class NEql(Func):
symbol = '!='
bracketLevel = 3
def fn(self, a, b):
return a != b
def copy(self):
return NEql
# =================================================================
# == Ge ==========================================================
# =================================================================
class Ge(Func):
symbol = '>='
bracketLevel = 3
def fn(self, a, b):
return a >= b
def copy(self):
return Ge
# =================================================================
# == Gt ==========================================================
# =================================================================
class Gt(Func):
symbol = '>'
bracketLevel = 3
def fn(self, a, b):
return a > b
def copy(self):
return Gt
# =================================================================
# == Sin ==========================================================
# =================================================================
class Sin(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return math.sin(self.function.solve(vars))
def copy(self):
return Sin
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__ (self):
return 'sin(' + str(self.function) + ')'
# =================================================================
# == Sinh =========================================================
# =================================================================
class Sinh(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return math.sinh(self.function.solve(vars))
def copy(self):
return Sinh
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__ (self):
return 'sinh(' + str(self.function) + ')'
# =================================================================
# == Cos ==========================================================
# =================================================================
class Cos(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return math.Cos(self.function.solve(vars))
def copy(self):
return Cos
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__ (self):
return 'Cos(' + str(self.function) + ')'
# =================================================================
# == Cosh =========================================================
# =================================================================
class Cosh(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return math.Cosh(self.function.solve(vars))
def copy(self):
return Cosh
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__ (self):
return 'Cosh(' + str(self.function) + ')'
# =================================================================
# == Tan ==========================================================
# =================================================================
class Tan(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return math.tan(self.function.solve(vars))
def copy(self):
return tan
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__ (self):
return 'tan(' + str(self.function) + ')'
# =================================================================
# == Tanh =========================================================
# =================================================================
class Tanh(Func):
def __init__(self, function):
if isinstance(function, (int, float)):
self.function = Const(function)
else:
self.function = function
def solve(self, vars):
return math.tanh(self.function.solve(vars))
def copy(self):
return tanh
def simplify(self):
f = self.function.simplify()
if isinstance(f, Const):
return Const(self.solve({}))
else:
return Round(f)
def __str__ (self):
return 'tanh(' + str(self.function) + ')'
# =================================================================
# == Vec ==========================================================
# =================================================================
class Vec:
def __init__ (self, x: float, y: float, z: float) -> None:
...
def __init__ (self, x: float, y: float) -> None:
...
def __init__ (self, x: float) -> None:
...
def __init__ (self, x: "Vec") -> None:
...
def __init__ (self) -> None:
...
def __init__ (self, *args) -> None:
if len(args) == 3:
self.cartesian(*args)
elif len(args) == 2:
self.cartesian(*args, 0.0)
elif len(args) == 1:
if(isinstance(args[0], Vec)):
self.cartesian(args[0].getCartasian())
self.cartesian(*args, 0.0, 0.0)
def cartesian(self, x: float, y: float, z: float) -> tuple:
...
def cartesian(self, corts: tuple) -> tuple:
...
def cartesian(self, *args) -> tuple:
if len(args) == 3:
self.x = args[0]
self.y = args[1]
self.z = args[2]
elif len(args) == 1:
self.x = args[0][0]
self.y = args[0][1]
self.z = args[0][2]
return (self.x, self.y, self.z)
def polar(self, a: tuple, l: float) -> None:
...
def polar(self) -> tuple:
...
def polar(self, *args):
if len(args) == 2:
# xy angle xz angle yz angle
self.x = math.sin(args[0][0]) * math.sin(args[0][1])
self.y = math.cos(args[0][0]) * math.sin(args[0][2])
self.z = math.cos(args[0][1]) * math.cos(args[0][2])
self = self * l
elif len(args) == 0:
return (
(
math.tanh(self.y, self.x),
math.tanh(self.z, self.x),
0.0
),
self.length(),
)
def rotate(self, angle):
p = self.polar()
a = [p[0][0] + angle[0], p[0][1] + angle[1], p[0][2] + angle[2]]
self.polar(a, p[1])
def length(self, l: float):
...
def length(self):
...
def length(self, *args):
if(len(args) == 0):
l = self.x**2 + self.y**2 + self.z**2
return math.sqrt(l)
else:
m = args[0] / self.length()
return self * m
def __rmul__ (self, other):
return self.mul(other, self)
def __mul__(self, other):
return self.mul(self, other)
def mul(self, a, b=None):
if not isinstance(a, Vec):
# flip a and b
b = a
a = self
if(isinstance(b, Vec)):
result = a.x * b.x
result += a.y * b.y
result += a.z * b.z
return result
elif(isinstance(b, (int, float))):
n = Vec()
n.x = a.x * b
n.y = a.y * b
n.z = a.z * b
return n
else:
print('WARNING: tried to multiply Vec with ' + str(type(b)))
return b
def __neg__(self):
return ~self
def __inv__(self):
return Vec(-self.x, -self.y, -self.z)
#TODO: alow scaler
def __pow__(self, other):
n = Vec()
n.x = self.y * other.z - self.z * other.y
n.y = self.z * other.x - self.x * other.z
n.z = self.x * other.y - self.y * other.x
return n
def __add__(self, other):
if isinstance(other, Vec):
n = Vec()
n.x = self.y + other.z
n.y = self.z + other.x
n.z = self.x + other.y
return n
elif isinstance(other, (tuple, list)):
n = Vec()
n.x = self.y + other[0]
n.y = self.z + other[1]
n.z = self.x + other[2]
return n
elif isinstance(other, (float, int)):
n = Vec(self.cartesian())
n.length(self.length() + other)
return n
else:
print('WARNING: tried to add Vec with ' + str(type(other)))
return other
def setitem(self, index, value):
if(index == 0):
self.x = value
elif(index == 1):
self.y = value
elif(index == 2):
self.z = value
else:
print('ERROR: tried to set index ' + str(index) + ' of a Vec')
def getitem(self, index):
if(index == 0):
return self.x
elif(index == 1):
return self.y
elif(index == 2):
return self.z
else:
print('ERROR: tried to get index ' + str(index) + ' of a Vec')
return None
def __str__(self):
return "Vec" + str(self.cartesian())
def __lt__(self, other):
return self.length() < other.length()
def __le__(self, other):
return self.length() <= other.length()
def __eq__(self, other):
return self.length() == other.length()
def __ne__(self, other):
return self.length() != other.length()
def __ge__(self, other):
return self.length() >= other.length()
def __gt__(self, other):
return self.length() > other.length()

503639
mo Normal file

File diff suppressed because it is too large Load Diff

404
subprocess Normal file
View File

@ -0,0 +1,404 @@
%!PS-Adobe-3.0
%%Creator: (ImageMagick)
%%Title: (subprocess)
%%CreationDate: (2020-07-20T17:12:41+00:00)
%%BoundingBox: 1122 681 1175 765
%%HiResBoundingBox: 1122 681 1175 765
%%DocumentData: Clean7Bit
%%LanguageLevel: 1
%%Orientation: Portrait
%%PageOrder: Ascend
%%Pages: 1
%%EndComments
%%BeginDefaults
%%EndDefaults
%%BeginProlog
%
% Display a color image. The image is displayed in color on
% Postscript viewers or printers that support color, otherwise
% it is displayed as grayscale.
%
/DirectClassPacket
{
%
% Get a DirectClass packet.
%
% Parameters:
% red.
% green.
% blue.
% length: number of pixels minus one of this color (optional).
%
currentfile color_packet readhexstring pop pop
compression 0 eq
{
/number_pixels 3 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add 3 mul def
} ifelse
0 3 number_pixels 1 sub
{
pixels exch color_packet putinterval
} for
pixels 0 number_pixels getinterval
} bind def
/DirectClassImage
{
%
% Display a DirectClass image.
%
systemdict /colorimage known
{
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ DirectClassPacket } false 3 colorimage
}
{
%
% No colorimage operator; convert to grayscale.
%
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ GrayDirectClassPacket } image
} ifelse
} bind def
/GrayDirectClassPacket
{
%
% Get a DirectClass packet; convert to grayscale.
%
% Parameters:
% red
% green
% blue
% length: number of pixels minus one of this color (optional).
%
currentfile color_packet readhexstring pop pop
color_packet 0 get 0.299 mul
color_packet 1 get 0.587 mul add
color_packet 2 get 0.114 mul add
cvi
/gray_packet exch def
compression 0 eq
{
/number_pixels 1 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add def
} ifelse
0 1 number_pixels 1 sub
{
pixels exch gray_packet put
} for
pixels 0 number_pixels getinterval
} bind def
/GrayPseudoClassPacket
{
%
% Get a PseudoClass packet; convert to grayscale.
%
% Parameters:
% index: index into the colormap.
% length: number of pixels minus one of this color (optional).
%
currentfile byte readhexstring pop 0 get
/offset exch 3 mul def
/color_packet colormap offset 3 getinterval def
color_packet 0 get 0.299 mul
color_packet 1 get 0.587 mul add
color_packet 2 get 0.114 mul add
cvi
/gray_packet exch def
compression 0 eq
{
/number_pixels 1 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add def
} ifelse
0 1 number_pixels 1 sub
{
pixels exch gray_packet put
} for
pixels 0 number_pixels getinterval
} bind def
/PseudoClassPacket
{
%
% Get a PseudoClass packet.
%
% Parameters:
% index: index into the colormap.
% length: number of pixels minus one of this color (optional).
%
currentfile byte readhexstring pop 0 get
/offset exch 3 mul def
/color_packet colormap offset 3 getinterval def
compression 0 eq
{
/number_pixels 3 def
}
{
currentfile byte readhexstring pop 0 get
/number_pixels exch 1 add 3 mul def
} ifelse
0 3 number_pixels 1 sub
{
pixels exch color_packet putinterval
} for
pixels 0 number_pixels getinterval
} bind def
/PseudoClassImage
{
%
% Display a PseudoClass image.
%
% Parameters:
% class: 0-PseudoClass or 1-Grayscale.
%
currentfile buffer readline pop
token pop /class exch def pop
class 0 gt
{
currentfile buffer readline pop
token pop /depth exch def pop
/grays columns 8 add depth sub depth mul 8 idiv string def
columns rows depth
[
columns 0 0
rows neg 0 rows
]
{ currentfile grays readhexstring pop } image
}
{
%
% Parameters:
% colors: number of colors in the colormap.
% colormap: red, green, blue color packets.
%
currentfile buffer readline pop
token pop /colors exch def pop
/colors colors 3 mul def
/colormap colors string def
currentfile colormap readhexstring pop pop
systemdict /colorimage known
{
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ PseudoClassPacket } false 3 colorimage
}
{
%
% No colorimage operator; convert to grayscale.
%
columns rows 8
[
columns 0 0
rows neg 0 rows
]
{ GrayPseudoClassPacket } image
} ifelse
} ifelse
} bind def
/DisplayImage
{
%
% Display a DirectClass or PseudoClass image.
%
% Parameters:
% x & y translation.
% x & y scale.
% label pointsize.
% image label.
% image columns & rows.
% class: 0-DirectClass or 1-PseudoClass.
% compression: 0-none or 1-RunlengthEncoded.
% hex color packets.
%
gsave
/buffer 512 string def
/byte 1 string def
/color_packet 3 string def
/pixels 768 string def
currentfile buffer readline pop
token pop /x exch def
token pop /y exch def pop
x y translate
currentfile buffer readline pop
token pop /x exch def
token pop /y exch def pop
currentfile buffer readline pop
token pop /pointsize exch def pop
x y scale
currentfile buffer readline pop
token pop /columns exch def
token pop /rows exch def pop
currentfile buffer readline pop
token pop /class exch def pop
currentfile buffer readline pop
token pop /compression exch def pop
class 0 gt { PseudoClassImage } { DirectClassImage } ifelse
grestore
showpage
} bind def
%%EndProlog
%%Page: 1 1
%%PageBoundingBox: 1122 681 1175 765
DisplayImage
1122 681
53 84
12
53 84
1
1
1
8
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E1E
%%PageTrailer
%%Trailer
%%EOF