Created
January 25, 2019 16:32
-
-
Save saschatimme/26a09c2dc15acee3789fd6d1984566a7 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
{ | |
"cells": [ | |
{ | |
"cell_type": "code", | |
"execution_count": 15, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "skip" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"ys (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 15, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"using Plots #load packages\n", | |
"# These come handy for plotting\n", | |
"xs(points) = map(p -> p[1], points)\n", | |
"ys(points) = map(p -> p[2], points)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# Introduction to Julia and Polymake.jl\n", | |
"### Polymake Workshop 2019" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"Things we want to cover:\n", | |
"\n", | |
"* What is Julia\n", | |
"* Convex Hull in Julia\n", | |
"* Polymake.jl" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"<img src=\"https://julialang.org/v2/img/logo.svg\" style=\"display: block; margin-left: auto; margin-right: auto; width: 50%;\" />" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
" Julia is a high-level, high-performance dynamic programming language for numerical computing\n", | |
"\n", | |
"> Looks like Python, feels like Lisp, runs like C\n", | |
"\n", | |
"* Dynamic typing + optional explicit types\n", | |
"* Multiple dispatch\n", | |
"* Just-in-time compiler (JIT) with LLVM backend\n", | |
"* Approaches performance of C\n", | |
"* Macros and metaprogramming\n", | |
"* **Easy** generic programming" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## Multiple dispatch + Types" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"Julia has *abstract* types (mostly for dispatch) and *concrete* types." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 1, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"abstract type RockPaperScissors end\n", | |
"struct Rock <: RockPaperScissors end\n", | |
"struct Paper <: RockPaperScissors end\n", | |
"struct Scissors <: RockPaperScissors end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Julia uses *multiple dispatch* to structure code" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 5, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"winner (generic function with 5 methods)" | |
] | |
}, | |
"execution_count": 5, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"winner(::T, ::T) where T <: RockPaperScissors = 0\n", | |
"winner(::Rock, ::Scissors) = 1\n", | |
"winner(::Rock, ::Paper) = 1\n", | |
"winner(::Scissors, ::Paper) = 1\n", | |
"# Make symmetric cases work\n", | |
"winner(x, y) = winner(y, x)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 8, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"\t.section\t__TEXT,__text,regular,pure_instructions\n", | |
"; Function winner {\n", | |
"; Location: In[5]:1\n", | |
"\txorl\t%eax, %eax\n", | |
"\tretl\n", | |
"\tnopw\t%cs:(%eax,%eax)\n", | |
";}\n" | |
] | |
} | |
], | |
"source": [ | |
"@code_native winner(Rock(), Rock())" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 4, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
":paper" | |
] | |
}, | |
"execution_count": 4, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"winner(Paper(), Rock())" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"## Convex Hull in Julia" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"Let's implement the Graham scan algorithm in the plane:\n", | |
"\n", | |
"It works in 3 steps:" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"1) Compute the point with the lowest y-coordinate. Call this $p_1$.\n", | |
"\n", | |
"2) Sort the points by their polar angle with $p_1$.\n", | |
"\n", | |
"3) Iterate sorted points and check that the hull only contains points in counter clock wise order." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"<a title=\"Shiyu Ji [CC BY-SA 4.0 (https://creativecommons.org/licenses/by-sa/4.0)], from Wikimedia Commons\" href=\"https://commons.wikimedia.org/wiki/File:GrahamScanDemo.gif\"><img alt=\"GrahamScanDemo\" style=\"display: block; margin-left: auto; margin-right: auto; width: 50%;\" src=\"https://upload.wikimedia.org/wikipedia/commons/7/71/GrahamScanDemo.gif\"></a>" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### 1) Lowest y-coordinate" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 9, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"point_with_lowest_y_coordinate (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 9, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"point_with_lowest_y_coordinate(points) = points[argmin(map(p -> p[2], points))]" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### 2) Sort by polar angle" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 10, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"sort_by_polar_angle (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 10, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Instead of sorting by polar angle it is sufficient to sort by any monotone function\n", | |
"# of the angle (in the first two qaudrants). So we pick the cotangent\n", | |
"cotangent(p, p₁) = -(p[1] - p₁[1]) / (p[2] - p₁[2])\n", | |
"function sort_by_polar_angle(points::AbstractVector{T}, p₁) where T \n", | |
" # pre sort \"bad cases\"\n", | |
" head, to_sort, tail = T[], T[] , T[] \n", | |
" for p in points\n", | |
" if p[2] == p₁[2] && p[1] > p₁[1]\n", | |
" push!(head, p)\n", | |
" elseif p[2] == p₁[2] && p[1] ≤ p₁[1]\n", | |
" push!(tail, p) \n", | |
" else\n", | |
" push!(to_sort, p)\n", | |
" end\n", | |
" end\n", | |
" \n", | |
" sorted = to_sort[sortperm(map(p-> cotangent(p, p₁), to_sort))]\n", | |
" [head; sorted; tail]\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### 3) Check for counter clockwise order" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 11, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"ccw" | |
] | |
}, | |
"execution_count": 11, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"\"\"\"\n", | |
" ccw(p₁, p₂, p₃)\n", | |
"Three points are a counter-clockwise turn if ccw > 0, clockwise if\n", | |
"ccw < 0, and collinear if ccw = 0 because ccw is a determinant that\n", | |
"gives twice the signed area of the triangle formed by `p₁`, `p₂` and `p₃`.\n", | |
"\"\"\"\n", | |
"ccw(p₁, p₂, p₃) = (p₂[1] - p₁[1]) * (p₃[2] - p₁[2]) -\n", | |
" (p₂[2] - p₁[2]) * (p₃[1] - p₁[1]) " | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 12, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"search: \u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mc\u001b[22m\u001b[0m\u001b[1mw\u001b[22m\n", | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/latex": [ | |
"\\begin{verbatim}\n", | |
"ccw(p₁, p₂, p₃)\n", | |
"\\end{verbatim}\n", | |
"Three points are a counter-clockwise turn if ccw > 0, clockwise if ccw < 0, and collinear if ccw = 0 because ccw is a determinant that gives twice the signed area of the triangle formed by \\texttt{p₁}, \\texttt{p₂} and \\texttt{p₃}.\n", | |
"\n" | |
], | |
"text/markdown": [ | |
"```\n", | |
"ccw(p₁, p₂, p₃)\n", | |
"```\n", | |
"\n", | |
"Three points are a counter-clockwise turn if ccw > 0, clockwise if ccw < 0, and collinear if ccw = 0 because ccw is a determinant that gives twice the signed area of the triangle formed by `p₁`, `p₂` and `p₃`.\n" | |
], | |
"text/plain": [ | |
"\u001b[36m ccw(p₁, p₂, p₃)\u001b[39m\n", | |
"\n", | |
" Three points are a counter-clockwise turn if ccw > 0, clockwise if ccw < 0,\n", | |
" and collinear if ccw = 0 because ccw is a determinant that gives twice the\n", | |
" signed area of the triangle formed by \u001b[36mp₁\u001b[39m, \u001b[36mp₂\u001b[39m and \u001b[36mp₃\u001b[39m." | |
] | |
}, | |
"execution_count": 12, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"?ccw" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### Put everything together" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 13, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"graham_scan (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 13, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function graham_scan(points)\n", | |
" # Find the element with the lowest y-coordinate\n", | |
" p₁ = point_with_lowest_y_coordinate(points)\n", | |
" # Now we need to sort the points by polar angle with p₁\n", | |
" sorted_points = sort_by_polar_angle(points, p₁)\n", | |
"\n", | |
" hull = sorted_points[1:2]\n", | |
" for i ∈ 3:length(sorted_points)\n", | |
" while length(hull) ≥ 2 && ccw(hull[end-1], hull[end], sorted_points[i]) ≤ 0\n", | |
" pop!(hull)\n", | |
" end\n", | |
" push!(hull, sorted_points[i])\n", | |
" end\n", | |
" hull\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### Test whether it works" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 16, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7400\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7401\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7401)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7402\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7401)\" points=\"\n", | |
"523.866,1503.47 1986.9,1503.47 1986.9,47.2441 523.866,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7403\">\n", | |
" <rect x=\"523\" y=\"47\" width=\"1464\" height=\"1457\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1476.89 1986.9,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1128.29 1986.9,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,779.7 1986.9,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,431.107 1986.9,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7403)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,82.5132 1986.9,82.5132 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 1986.9,1503.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 523.866,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1476.89 545.811,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1128.29 545.811,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,779.7 545.811,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,431.107 545.811,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7401)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,82.5132 545.811,82.5132 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 557.603, 1557.47)\" x=\"557.603\" y=\"1557.47\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 906.197, 1557.47)\" x=\"906.197\" y=\"1557.47\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1254.79, 1557.47)\" x=\"1254.79\" y=\"1557.47\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1603.38, 1557.47)\" x=\"1603.38\" y=\"1557.47\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1951.98, 1557.47)\" x=\"1951.98\" y=\"1557.47\">1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1494.39)\" x=\"499.866\" y=\"1494.39\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1145.79)\" x=\"499.866\" y=\"1145.79\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 797.2)\" x=\"499.866\" y=\"797.2\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 448.607)\" x=\"499.866\" y=\"448.607\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7401)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 100.013)\" x=\"499.866\" y=\"100.013\">1.0</text>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7403)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 16, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# sample input data\n", | |
"input_points = [rand(2) .* 2 .- 1 for _ in 1:100]\n", | |
"\n", | |
"hull = graham_scan(input_points)\n", | |
"scatter(xs(input_points), ys(input_points), aspect_ratio=:equal, legend=false)\n", | |
"scatter!(xs(hull), ys(hull), color=:red, legend=false)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### But we should do exact arithmetic and not floating point..." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"Okay, no problem. Let's approximate our floating points numbers with rational numbers." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 17, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"100-element Array{Array{Rational{Int64},1},1}:\n", | |
" [-1//5, -7//27] \n", | |
" [16//33, -35//37]\n", | |
" [-25//31, 23//29]\n", | |
" [-39//46, 37//55]\n", | |
" [-6//19, -4//5] \n", | |
" [-33//38, 10//13]\n", | |
" [11//25, -6//35] \n", | |
" [10//17, 21//25] \n", | |
" [32//35, -45//46]\n", | |
" [8//25, -19//33] \n", | |
" [5//28, -33//50] \n", | |
" [-10//33, -5//33]\n", | |
" [29//34, -11//36]\n", | |
" ⋮ \n", | |
" [-11//12, 3//26] \n", | |
" [-5//32, 5//27] \n", | |
" [17//25, -3//35] \n", | |
" [-7//9, -7//25] \n", | |
" [-1//175, 37//40]\n", | |
" [-25//37, -5//26]\n", | |
" [7//36, 6//37] \n", | |
" [15//19, 33//38] \n", | |
" [-3//7, -29//37] \n", | |
" [-1//25, -14//43]\n", | |
" [-8//41, -5//22] \n", | |
" [10//17, 21//83] " | |
] | |
}, | |
"execution_count": 17, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"rational_input_points = map(p -> rationalize.(p; tol=1/1000), input_points)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### Do we have to adapt the algorithm?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 18, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7600\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7601\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7601)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7602\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7601)\" points=\"\n", | |
"523.881,1503.47 1986.88,1503.47 1986.88,47.2441 523.881,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7603\">\n", | |
" <rect x=\"523\" y=\"47\" width=\"1464\" height=\"1457\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 556.98,1503.47 556.98,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 905.884,1503.47 905.884,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1603.69,1503.47 1603.69,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1952.6,1503.47 1952.6,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.881,1477.43 1986.88,1477.43 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.881,1128.53 1986.88,1128.53 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.881,779.621 1986.88,779.621 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.881,430.717 1986.88,430.717 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7603)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.881,81.8124 1986.88,81.8124 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,1503.47 1986.88,1503.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,1503.47 523.881,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 556.98,1503.47 556.98,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 905.884,1503.47 905.884,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1603.69,1503.47 1603.69,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1952.6,1503.47 1952.6,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,1477.43 545.826,1477.43 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,1128.53 545.826,1128.53 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,779.621 545.826,779.621 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,430.717 545.826,430.717 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7601)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.881,81.8124 545.826,81.8124 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 556.98, 1557.47)\" x=\"556.98\" y=\"1557.47\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 905.884, 1557.47)\" x=\"905.884\" y=\"1557.47\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1254.79, 1557.47)\" x=\"1254.79\" y=\"1557.47\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1603.69, 1557.47)\" x=\"1603.69\" y=\"1557.47\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1952.6, 1557.47)\" x=\"1952.6\" y=\"1557.47\">1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.881, 1494.93)\" x=\"499.881\" y=\"1494.93\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.881, 1146.03)\" x=\"499.881\" y=\"1146.03\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.881, 797.121)\" x=\"499.881\" y=\"797.121\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.881, 448.217)\" x=\"499.881\" y=\"448.217\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7601)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.881, 99.3124)\" x=\"499.881\" y=\"99.3124\">1.0</text>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1115.23\" cy=\"960.535\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1115.23\" cy=\"960.535\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1593.12\" cy=\"1439.71\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1593.12\" cy=\"1439.71\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"692.039\" cy=\"226.187\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"692.039\" cy=\"226.187\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"663.168\" cy=\"310.186\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"663.168\" cy=\"310.186\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1034.43\" cy=\"1337.87\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1034.43\" cy=\"1337.87\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"648.797\" cy=\"242.845\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"648.797\" cy=\"242.845\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1561.82\" cy=\"899.246\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1561.82\" cy=\"899.246\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1665.26\" cy=\"193.462\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1665.26\" cy=\"193.462\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.79\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1892.79\" cy=\"1462.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1478.09\" cy=\"1181.39\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1478.09\" cy=\"1181.39\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1379.4\" cy=\"1240.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1379.4\" cy=\"1240.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1043.33\" cy=\"885.35\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1043.33\" cy=\"885.35\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1849.98\" cy=\"992.841\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1849.98\" cy=\"992.841\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1423.23\" cy=\"1207.31\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1423.23\" cy=\"1207.31\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1781.71\" cy=\"897.433\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1781.71\" cy=\"897.433\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1163.77\" cy=\"1060.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1163.77\" cy=\"1060.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1885.07\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1885.07\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"971.304\" cy=\"1367.25\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"971.304\" cy=\"1367.25\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"608.669\" cy=\"774.809\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"608.669\" cy=\"774.809\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"993.11\" cy=\"1156.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"993.11\" cy=\"1156.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1915.87\" cy=\"467.444\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1915.87\" cy=\"467.444\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1439.5\" cy=\"170.624\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1439.5\" cy=\"170.624\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1194.11\" cy=\"853.075\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1194.11\" cy=\"853.075\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1152.67\" cy=\"544.715\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1152.67\" cy=\"544.715\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1493.51\" cy=\"982.211\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1493.51\" cy=\"982.211\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"676.118\" cy=\"904.23\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"676.118\" cy=\"904.23\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1633.6\" cy=\"416.761\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1633.6\" cy=\"416.761\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"630.433\" cy=\"1423.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"630.433\" cy=\"1423.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1778.15\" cy=\"194.362\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1778.15\" cy=\"194.362\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1907.58\" cy=\"198.114\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1907.58\" cy=\"198.114\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1476.82\" cy=\"956.282\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1476.82\" cy=\"956.282\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"767.945\" cy=\"159.347\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"767.945\" cy=\"159.347\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.5\" cy=\"988.964\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.5\" cy=\"988.964\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.5\" cy=\"1198.31\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.5\" cy=\"1198.31\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1087.31\" cy=\"1242.92\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1087.31\" cy=\"1242.92\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"680.122\" cy=\"480.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"680.122\" cy=\"480.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1174.27\" cy=\"299.878\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1174.27\" cy=\"299.878\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1766.52\" cy=\"298.374\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1766.52\" cy=\"298.374\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"845.728\" cy=\"259.221\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"845.728\" cy=\"259.221\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1189.88\" cy=\"1141.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1189.88\" cy=\"1141.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"615.13\" cy=\"298.909\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"615.13\" cy=\"298.909\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1825.72\" cy=\"1241.55\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1825.72\" cy=\"1241.55\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.49\" cy=\"706.168\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"579.49\" cy=\"706.168\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"960.974\" cy=\"850.826\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"960.974\" cy=\"850.826\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1750.6\" cy=\"343.491\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1750.6\" cy=\"343.491\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"918.806\" cy=\"1259.37\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"918.806\" cy=\"1259.37\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1889.16\" cy=\"1186.68\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1889.16\" cy=\"1186.68\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1729.3\" cy=\"978.995\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1729.3\" cy=\"978.995\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1578.77\" cy=\"362.638\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1578.77\" cy=\"362.638\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1138.49\" cy=\"599.542\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1138.49\" cy=\"599.542\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"740.614\" cy=\"1265.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"740.614\" cy=\"1265.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.48\" cy=\"247.957\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1945.48\" cy=\"247.957\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1387.7\" cy=\"1239.15\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1387.7\" cy=\"1239.15\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1553.85\" cy=\"117.597\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1553.85\" cy=\"117.597\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"814.067\" cy=\"1300.37\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"814.067\" cy=\"1300.37\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"959.562\" cy=\"530.404\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"959.562\" cy=\"530.404\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"978.911\" cy=\"564.911\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"978.911\" cy=\"564.911\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1686.77\" cy=\"949.819\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1686.77\" cy=\"949.819\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1073.88\" cy=\"643.936\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1073.88\" cy=\"643.936\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1528.93\" cy=\"557.591\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1528.93\" cy=\"557.591\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1267.95\" cy=\"249.287\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1267.95\" cy=\"249.287\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1709.88\" cy=\"1302.98\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1709.88\" cy=\"1302.98\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1891.03\" cy=\"899.246\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1891.03\" cy=\"899.246\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1112.38\" cy=\"184.431\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1112.38\" cy=\"184.431\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"926.408\" cy=\"218.638\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"926.408\" cy=\"218.638\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1844.05\" cy=\"1448.36\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1844.05\" cy=\"1448.36\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1850.83\" cy=\"587.724\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1850.83\" cy=\"587.724\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"969.321\" cy=\"1416.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"969.321\" cy=\"1416.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.5\" cy=\"1188.68\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.5\" cy=\"1188.68\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"980.649\" cy=\"143.384\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"980.649\" cy=\"143.384\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1698.85\" cy=\"89.5658\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1698.85\" cy=\"89.5658\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.745\" cy=\"1357.81\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"631.745\" cy=\"1357.81\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"874.166\" cy=\"1410.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"874.166\" cy=\"1410.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1648.42\" cy=\"102.336\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1648.42\" cy=\"102.336\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1004.29\" cy=\"708.416\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1004.29\" cy=\"708.416\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.3\" cy=\"509.502\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.3\" cy=\"509.502\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1381.66\" cy=\"984.859\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1381.66\" cy=\"984.859\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1072.75\" cy=\"1340.36\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1072.75\" cy=\"1340.36\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1111.12\" cy=\"883.001\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1111.12\" cy=\"883.001\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.287\" cy=\"136.903\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"565.287\" cy=\"136.903\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1026.93\" cy=\"711.542\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1026.93\" cy=\"711.542\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1563.12\" cy=\"1106.72\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1563.12\" cy=\"1106.72\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1052.2\" cy=\"1145.14\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1052.2\" cy=\"1145.14\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1613.66\" cy=\"952.114\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1613.66\" cy=\"952.114\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1120.59\" cy=\"131.656\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1120.59\" cy=\"131.656\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"862.271\" cy=\"1019.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"862.271\" cy=\"1019.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"982.473\" cy=\"372.566\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"982.473\" cy=\"372.566\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"615.13\" cy=\"699.105\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"615.13\" cy=\"699.105\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1145.76\" cy=\"650.397\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1145.76\" cy=\"650.397\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1729.3\" cy=\"839.434\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1729.3\" cy=\"839.434\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"712.048\" cy=\"975.008\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"712.048\" cy=\"975.008\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1250.8\" cy=\"134.148\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1250.8\" cy=\"134.148\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"783.296\" cy=\"913.815\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"783.296\" cy=\"913.815\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1390.47\" cy=\"666.463\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1390.47\" cy=\"666.463\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1805.69\" cy=\"173.629\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1805.69\" cy=\"173.629\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"955.728\" cy=\"1326.55\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"955.728\" cy=\"1326.55\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1226.88\" cy=\"1006.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1226.88\" cy=\"1006.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1118.63\" cy=\"938.214\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1118.63\" cy=\"938.214\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1665.26\" cy=\"603.067\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1665.26\" cy=\"603.067\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.48\" cy=\"247.957\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1945.48\" cy=\"247.957\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1885.07\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1885.07\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1698.85\" cy=\"89.5658\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1698.85\" cy=\"89.5658\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.287\" cy=\"136.903\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"565.287\" cy=\"136.903\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.49\" cy=\"706.168\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"579.49\" cy=\"706.168\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"630.433\" cy=\"1423.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"630.433\" cy=\"1423.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.79\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7603)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1892.79\" cy=\"1462.26\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 18, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"hull = graham_scan(rational_input_points)\n", | |
"\n", | |
"scatter(xs(rational_input_points), ys(rational_input_points), aspect_ratio=:equal, legend=false)\n", | |
"scatter!(xs(hull), ys(hull), color=:red, legend=false)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"### But representing the points as a vector of vectors of length 2 is not great.\n", | |
"\n", | |
"### Can I use my own point type?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 19, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"struct Point2D{T}\n", | |
" x::T\n", | |
" y::T\n", | |
"end\n", | |
"Point2D(vec::AbstractVector) = Point2D(vec[1], vec[2])\n", | |
"function Base.getindex(P::Point2D, i::Integer)\n", | |
" @boundscheck 1 ≤ i ≤ 2\n", | |
" return i == 1 ? P.x : P.y\n", | |
"end\n", | |
"Base.show(io::IO, P::Point2D) = print(io, \"(x: $(P.x), y: $(P.y))\")" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## Let's convert our rational vectors to points and see what happens" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 20, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7800\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7801\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7801)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7802\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7801)\" points=\"\n", | |
"523.866,1503.47 1986.9,1503.47 1986.9,47.2441 523.866,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7803\">\n", | |
" <rect x=\"523\" y=\"47\" width=\"1464\" height=\"1457\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1476.89 1986.9,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1128.29 1986.9,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,779.7 1986.9,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,431.107 1986.9,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,82.5132 1986.9,82.5132 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 1986.9,1503.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 523.866,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1476.89 545.811,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1128.29 545.811,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,779.7 545.811,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,431.107 545.811,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,82.5132 545.811,82.5132 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 557.603, 1557.47)\" x=\"557.603\" y=\"1557.47\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 906.197, 1557.47)\" x=\"906.197\" y=\"1557.47\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1254.79, 1557.47)\" x=\"1254.79\" y=\"1557.47\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1603.38, 1557.47)\" x=\"1603.38\" y=\"1557.47\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1951.98, 1557.47)\" x=\"1951.98\" y=\"1557.47\">1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1494.39)\" x=\"499.866\" y=\"1494.39\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1145.79)\" x=\"499.866\" y=\"1145.79\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 797.2)\" x=\"499.866\" y=\"797.2\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 448.607)\" x=\"499.866\" y=\"448.607\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 100.013)\" x=\"499.866\" y=\"100.013\">1.0</text>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1944.86\" cy=\"248.51\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1944.86\" cy=\"248.51\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.51\" cy=\"89.153\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1884.51\" cy=\"89.153\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1698.45\" cy=\"90.2597\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1698.45\" cy=\"90.2597\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.903\" cy=\"137.554\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"565.903\" cy=\"137.554\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"580.093\" cy=\"706.312\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"580.093\" cy=\"706.312\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"630.991\" cy=\"1423.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"630.991\" cy=\"1423.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.22\" cy=\"1461.73\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1892.22\" cy=\"1461.73\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 20, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"rational_2D_points = Point2D.(rational_input_points)\n", | |
"hull = graham_scan(rational_2D_points)\n", | |
"scatter(xs(input_points), ys(input_points), aspect_ratio=:equal, legend=false)\n", | |
"scatter!(xs(hull), ys(hull), color=:red, legend=false)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## For me points are a matrix. How do I make this?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"We can reinterpret a Matrix as a Vector of Points" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 21, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"100-element reshape(reinterpret(Point2D{Float64}, ::Array{Float64,2}), 100) with eltype Point2D{Float64}:\n", | |
" (x: 0.9044208665273723, y: 0.29341187249389433) \n", | |
" (x: 0.9751517706256516, y: 0.8344832214891069) \n", | |
" (x: 0.41604520081793606, y: 0.6426793554528931) \n", | |
" (x: 0.820429402057951, y: 0.8821901112063786) \n", | |
" (x: 0.8186767063067331, y: 0.21401535400917648) \n", | |
" (x: 0.32783389251926676, y: 0.8044976086728046) \n", | |
" (x: 0.048312632218951546, y: 0.44745932638304153)\n", | |
" (x: 0.23140557752439173, y: 0.7273763250094571) \n", | |
" (x: 0.7589138091592829, y: 0.2779146770025289) \n", | |
" (x: 0.12990601223972487, y: 0.38811957013337817) \n", | |
" (x: 0.5979137837297486, y: 0.14713050932812055) \n", | |
" (x: 0.23578214147471255, y: 0.5946981966262728) \n", | |
" (x: 0.4373533159148242, y: 0.6632429586644297) \n", | |
" ⋮ \n", | |
" (x: 0.6227008338367637, y: 0.7012896571861733) \n", | |
" (x: 0.8876801902461027, y: 0.5961244980645486) \n", | |
" (x: 0.7350386983109707, y: 0.05033090779663851) \n", | |
" (x: 0.34528826764336507, y: 0.5787549215254548) \n", | |
" (x: 0.8521288305863948, y: 0.4183552967307904) \n", | |
" (x: 0.6763927617700833, y: 0.7461898854267326) \n", | |
" (x: 0.10408160318568638, y: 0.05452354062430209) \n", | |
" (x: 0.020418460855867293, y: 0.35401182939819775)\n", | |
" (x: 0.20391983982839013, y: 0.31387854861689424) \n", | |
" (x: 0.4207149460832893, y: 0.7206749147571876) \n", | |
" (x: 0.8738805269006147, y: 0.9200735810434015) \n", | |
" (x: 0.5201573609770371, y: 0.574269286647922) " | |
] | |
}, | |
"execution_count": 21, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"A = rand(2, 100)\n", | |
"reinterpreted_points = reshape(reinterpret(Point2D{eltype(A)}, A), size(A,2))" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 22, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"graham_scan (generic function with 2 methods)" | |
] | |
}, | |
"execution_count": 22, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# Let's write a new method\n", | |
"function graham_scan(A::AbstractMatrix)\n", | |
" m, n = size(A)\n", | |
" vec_of_ntuples = reshape(reinterpret(Point2D{eltype(A)}, A), n)\n", | |
" graham_scan(vec_of_ntuples)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 23, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8000\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8001\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8001)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8002\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8001)\" points=\"\n", | |
"526.351,1503.47 1983.06,1503.47 1983.06,47.2441 526.351,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8003\">\n", | |
" <rect x=\"526\" y=\"47\" width=\"1458\" height=\"1457\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 543.994,1503.47 543.994,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 895.028,1503.47 895.028,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1246.06,1503.47 1246.06,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1597.09,1503.47 1597.09,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1948.13,1503.47 1948.13,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 526.351,1491.82 1983.06,1491.82 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 526.351,1140.79 1983.06,1140.79 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 526.351,789.757 1983.06,789.757 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 526.351,438.724 1983.06,438.724 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 526.351,87.6901 1983.06,87.6901 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,1503.47 1983.06,1503.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,1503.47 526.351,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 543.994,1503.47 543.994,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 895.028,1503.47 895.028,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1246.06,1503.47 1246.06,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1597.09,1503.47 1597.09,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1948.13,1503.47 1948.13,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,1491.82 548.202,1491.82 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,1140.79 548.202,1140.79 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,789.757 548.202,789.757 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,438.724 548.202,438.724 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 526.351,87.6901 548.202,87.6901 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 543.994, 1557.47)\" x=\"543.994\" y=\"1557.47\">0.00</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 895.028, 1557.47)\" x=\"895.028\" y=\"1557.47\">0.25</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1246.06, 1557.47)\" x=\"1246.06\" y=\"1557.47\">0.50</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1597.09, 1557.47)\" x=\"1597.09\" y=\"1557.47\">0.75</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1948.13, 1557.47)\" x=\"1948.13\" y=\"1557.47\">1.00</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 502.351, 1509.32)\" x=\"502.351\" y=\"1509.32\">0.00</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 502.351, 1158.29)\" x=\"502.351\" y=\"1158.29\">0.25</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 502.351, 807.257)\" x=\"502.351\" y=\"807.257\">0.50</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 502.351, 456.224)\" x=\"502.351\" y=\"456.224\">0.75</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 502.351, 105.19)\" x=\"502.351\" y=\"105.19\">1.00</text>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1813.92\" cy=\"1079.83\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1813.92\" cy=\"1079.83\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1913.24\" cy=\"320.098\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1913.24\" cy=\"320.098\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1128.18\" cy=\"589.416\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1128.18\" cy=\"589.416\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1695.99\" cy=\"253.111\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1695.99\" cy=\"253.111\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1693.53\" cy=\"1191.32\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1693.53\" cy=\"1191.32\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1004.32\" cy=\"362.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1004.32\" cy=\"362.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"611.832\" cy=\"863.531\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"611.832\" cy=\"863.531\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"868.919\" cy=\"470.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"868.919\" cy=\"470.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1609.61\" cy=\"1101.59\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1609.61\" cy=\"1101.59\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"726.4\" cy=\"946.852\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"726.4\" cy=\"946.852\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1383.55\" cy=\"1285.23\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1383.55\" cy=\"1285.23\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"875.064\" cy=\"656.788\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"875.064\" cy=\"656.788\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1158.1\" cy=\"560.542\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1158.1\" cy=\"560.542\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1272.6\" cy=\"244.127\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1272.6\" cy=\"244.127\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"844.6\" cy=\"427.437\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"844.6\" cy=\"427.437\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1205.88\" cy=\"430.504\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1205.88\" cy=\"430.504\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1540.41\" cy=\"758.972\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1540.41\" cy=\"758.972\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"620.752\" cy=\"341.44\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"620.752\" cy=\"341.44\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"799.895\" cy=\"488.176\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"799.895\" cy=\"488.176\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1851.25\" cy=\"924.735\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1851.25\" cy=\"924.735\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1352.48\" cy=\"1437.73\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1352.48\" cy=\"1437.73\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1536.04\" cy=\"1444.13\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1536.04\" cy=\"1444.13\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1481.72\" cy=\"380.104\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1481.72\" cy=\"380.104\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"838.542\" cy=\"1145.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"838.542\" cy=\"1145.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"666.272\" cy=\"787.343\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"666.272\" cy=\"787.343\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"935.839\" cy=\"1360.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"935.839\" cy=\"1360.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1755.41\" cy=\"833.647\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1755.41\" cy=\"833.647\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1038.19\" cy=\"1134.81\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1038.19\" cy=\"1134.81\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1184.34\" cy=\"1303.36\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1184.34\" cy=\"1303.36\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"770.908\" cy=\"132.85\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"770.908\" cy=\"132.85\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1435\" cy=\"1270.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1435\" cy=\"1270.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"567.579\" cy=\"991.922\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"567.579\" cy=\"991.922\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"714.11\" cy=\"844.463\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"714.11\" cy=\"844.463\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"697.435\" cy=\"930.035\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"697.435\" cy=\"930.035\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1342.25\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1342.25\" cy=\"1462.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1109.56\" cy=\"144.023\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1109.56\" cy=\"144.023\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1450.62\" cy=\"366.723\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1450.62\" cy=\"366.723\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1413.06\" cy=\"101.073\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1413.06\" cy=\"101.073\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1084.16\" cy=\"206.313\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1084.16\" cy=\"206.313\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1316.63\" cy=\"1310.38\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1316.63\" cy=\"1310.38\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1400.97\" cy=\"1347.8\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1400.97\" cy=\"1347.8\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1818.1\" cy=\"559.383\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1818.1\" cy=\"559.383\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1783.6\" cy=\"277.433\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1783.6\" cy=\"277.433\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1773.93\" cy=\"1093.55\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1773.93\" cy=\"1093.55\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"784.49\" cy=\"1083.61\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"784.49\" cy=\"1083.61\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1670.24\" cy=\"1320.62\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1670.24\" cy=\"1320.62\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1801.63\" cy=\"1100.6\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1801.63\" cy=\"1100.6\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1656.4\" cy=\"1053.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1656.4\" cy=\"1053.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1172.18\" cy=\"857.338\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1172.18\" cy=\"857.338\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1142.43\" cy=\"301.781\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1142.43\" cy=\"301.781\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1886.14\" cy=\"435.772\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1886.14\" cy=\"435.772\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1195.31\" cy=\"1014.11\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1195.31\" cy=\"1014.11\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"980.223\" cy=\"581.298\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"980.223\" cy=\"581.298\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1217.83\" cy=\"408.971\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1217.83\" cy=\"408.971\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"842.011\" cy=\"733.004\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"842.011\" cy=\"733.004\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"862.573\" cy=\"1159.09\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"862.573\" cy=\"1159.09\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1326.72\" cy=\"785.361\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1326.72\" cy=\"785.361\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1023.14\" cy=\"1448.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1023.14\" cy=\"1448.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1385.16\" cy=\"222.682\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1385.16\" cy=\"222.682\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1637.5\" cy=\"310.821\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1637.5\" cy=\"310.821\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"920.378\" cy=\"1316.29\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"920.378\" cy=\"1316.29\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"612.907\" cy=\"1332.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"612.907\" cy=\"1332.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"647.668\" cy=\"303.475\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"647.668\" cy=\"303.475\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1043.11\" cy=\"615.068\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1043.11\" cy=\"615.068\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1001.38\" cy=\"1328.48\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1001.38\" cy=\"1328.48\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"984.048\" cy=\"1206.05\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"984.048\" cy=\"1206.05\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1046.02\" cy=\"1243.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1046.02\" cy=\"1243.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1513.97\" cy=\"1130.25\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1513.97\" cy=\"1130.25\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1144.41\" cy=\"1335.48\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1144.41\" cy=\"1335.48\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"818.691\" cy=\"851.526\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"818.691\" cy=\"851.526\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1479.63\" cy=\"1194.99\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1479.63\" cy=\"1194.99\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1911.35\" cy=\"794.849\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1911.35\" cy=\"794.849\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1188.3\" cy=\"526.486\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1188.3\" cy=\"526.486\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1546.94\" cy=\"446.744\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1546.94\" cy=\"446.744\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1638.73\" cy=\"994.856\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1638.73\" cy=\"994.856\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1460.61\" cy=\"967.788\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1460.61\" cy=\"967.788\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1907.69\" cy=\"497.082\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1907.69\" cy=\"497.082\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1832.7\" cy=\"1020.72\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1832.7\" cy=\"1020.72\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"964.551\" cy=\"759.856\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"964.551\" cy=\"759.856\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1525.6\" cy=\"1416.69\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1525.6\" cy=\"1416.69\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1905.12\" cy=\"1078.03\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1905.12\" cy=\"1078.03\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1210.13\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1210.13\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1557.18\" cy=\"380.156\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1557.18\" cy=\"380.156\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1504.52\" cy=\"647.29\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1504.52\" cy=\"647.29\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"844.26\" cy=\"1215.84\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"844.26\" cy=\"1215.84\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1941.84\" cy=\"1008.06\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1941.84\" cy=\"1008.06\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1584.04\" cy=\"145.995\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1584.04\" cy=\"145.995\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"919.656\" cy=\"384.634\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"919.656\" cy=\"384.634\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1418.35\" cy=\"507.119\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1418.35\" cy=\"507.119\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1790.42\" cy=\"654.785\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1790.42\" cy=\"654.785\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1576.09\" cy=\"1421.15\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1576.09\" cy=\"1421.15\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1028.83\" cy=\"679.175\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1028.83\" cy=\"679.175\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1740.5\" cy=\"904.397\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1740.5\" cy=\"904.397\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1493.74\" cy=\"444.073\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1493.74\" cy=\"444.073\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"690.139\" cy=\"1415.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"690.139\" cy=\"1415.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"572.664\" cy=\"994.744\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"572.664\" cy=\"994.744\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"830.325\" cy=\"1051.1\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"830.325\" cy=\"1051.1\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1134.73\" cy=\"479.9\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1134.73\" cy=\"479.9\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1771.04\" cy=\"199.918\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1771.04\" cy=\"199.918\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1274.36\" cy=\"685.473\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1274.36\" cy=\"685.473\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1536.04\" cy=\"1444.13\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1536.04\" cy=\"1444.13\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1576.09\" cy=\"1421.15\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1576.09\" cy=\"1421.15\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1905.12\" cy=\"1078.03\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1905.12\" cy=\"1078.03\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1941.84\" cy=\"1008.06\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1941.84\" cy=\"1008.06\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1913.24\" cy=\"320.098\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1913.24\" cy=\"320.098\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1771.04\" cy=\"199.918\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1771.04\" cy=\"199.918\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1584.04\" cy=\"145.995\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1584.04\" cy=\"145.995\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1413.06\" cy=\"101.073\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1413.06\" cy=\"101.073\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1210.13\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1210.13\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"770.908\" cy=\"132.85\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"770.908\" cy=\"132.85\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"647.668\" cy=\"303.475\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"647.668\" cy=\"303.475\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"620.752\" cy=\"341.44\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"620.752\" cy=\"341.44\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"567.579\" cy=\"991.922\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"567.579\" cy=\"991.922\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"612.907\" cy=\"1332.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"612.907\" cy=\"1332.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"690.139\" cy=\"1415.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"690.139\" cy=\"1415.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1023.14\" cy=\"1448.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1023.14\" cy=\"1448.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1342.25\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1342.25\" cy=\"1462.26\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 23, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"hull = graham_scan(A)\n", | |
"scatter(xs(reinterpreted_points), ys(reinterpreted_points), aspect_ratio=:equal, legend=false)\n", | |
"scatter!(xs(hull), ys(hull), color=:red, legend=false) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"# Can we also make an animation?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"*Iterators* take a central role in Julia. We can use them to design algorithms." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 24, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"# We define an iterator struct\n", | |
"struct GrahamScanIterator{VT}\n", | |
" points::Vector{VT} # sorted by polar angle\n", | |
" hull::Vector{VT} # (partially) computed convex hull\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 25, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"graham_scan_iterator (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 25, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"# We want to construct this using the unsorted points\n", | |
"# and store the sorted points\n", | |
"function graham_scan_iterator(points::AbstractVector)\n", | |
" # Find the element with the lowest y-coordinate\n", | |
" p₁ = point_with_lowest_y_coordinate(points)\n", | |
" sorted_points = sort_by_polar_angle(points, p₁)\n", | |
" hull = sorted_points[1:2]\n", | |
" GrahamScanIterator(sorted_points, hull)\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 26, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"# In one iteration of the iterator we want to process one point\n", | |
"function Base.iterate(G::GrahamScanIterator, i=nothing)\n", | |
" i === nothing && return G.hull, 3 \n", | |
" i > length(G.points) && return nothing\n", | |
" \n", | |
"\n", | |
" while length(G.hull) ≥ 2 && ccw(G.hull[end-1], G.hull[end], G.points[i]) ≤ 0\n", | |
" pop!(G.hull)\n", | |
" end\n", | |
" push!(G.hull, G.points[i]) \n", | |
" \n", | |
" return G.hull, i + 1\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 27, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"graham_scan_iterator_version (generic function with 1 method)" | |
] | |
}, | |
"execution_count": 27, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"function graham_scan_iterator_version(points)\n", | |
" iter = graham_scan_iterator(points)\n", | |
" # a dummy loop to exhaust the iterator\n", | |
" for _ in iter end\n", | |
" iter.hull\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## Does this still work?" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 28, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8200\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8201\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8201)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8202\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8201)\" points=\"\n", | |
"523.866,1503.47 1986.9,1503.47 1986.9,47.2441 523.866,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8203\">\n", | |
" <rect x=\"523\" y=\"47\" width=\"1464\" height=\"1457\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1476.89 1986.9,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1128.29 1986.9,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,779.7 1986.9,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,431.107 1986.9,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,82.5132 1986.9,82.5132 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 1986.9,1503.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 523.866,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1476.89 545.811,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1128.29 545.811,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,779.7 545.811,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,431.107 545.811,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,82.5132 545.811,82.5132 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 557.603, 1557.47)\" x=\"557.603\" y=\"1557.47\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 906.197, 1557.47)\" x=\"906.197\" y=\"1557.47\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1254.79, 1557.47)\" x=\"1254.79\" y=\"1557.47\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1603.38, 1557.47)\" x=\"1603.38\" y=\"1557.47\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1951.98, 1557.47)\" x=\"1951.98\" y=\"1557.47\">1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1494.39)\" x=\"499.866\" y=\"1494.39\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1145.79)\" x=\"499.866\" y=\"1145.79\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 797.2)\" x=\"499.866\" y=\"797.2\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 448.607)\" x=\"499.866\" y=\"448.607\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 100.013)\" x=\"499.866\" y=\"100.013\">1.0</text>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1944.86\" cy=\"248.51\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1944.86\" cy=\"248.51\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.51\" cy=\"89.153\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1884.51\" cy=\"89.153\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1698.45\" cy=\"90.2597\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1698.45\" cy=\"90.2597\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.903\" cy=\"137.554\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"565.903\" cy=\"137.554\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"580.093\" cy=\"706.312\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"580.093\" cy=\"706.312\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"630.991\" cy=\"1423.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"630.991\" cy=\"1423.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.22\" cy=\"1461.73\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1892.22\" cy=\"1461.73\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 28, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"hull = graham_scan_iterator_version(rational_2D_points)\n", | |
"scatter(xs(input_points), ys(input_points), aspect_ratio=:equal, legend=false)\n", | |
"scatter!(xs(hull), ys(hull), color=:red, legend=false)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## Let's use the iterator to make an animation" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 30, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7800\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7801\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7801)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7802\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip7801)\" points=\"\n", | |
"523.866,1503.47 1986.9,1503.47 1986.9,47.2441 523.866,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip7803\">\n", | |
" <rect x=\"523\" y=\"47\" width=\"1464\" height=\"1457\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1476.89 1986.9,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,1128.29 1986.9,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,779.7 1986.9,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,431.107 1986.9,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7803)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 523.866,82.5132 1986.9,82.5132 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 1986.9,1503.47 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1503.47 523.866,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 557.603,1503.47 557.603,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 906.197,1503.47 906.197,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1254.79,1503.47 1254.79,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1603.38,1503.47 1603.38,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1951.98,1503.47 1951.98,1481.63 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1476.89 545.811,1476.89 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,1128.29 545.811,1128.29 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,779.7 545.811,779.7 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,431.107 545.811,431.107 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip7801)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 523.866,82.5132 545.811,82.5132 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 557.603, 1557.47)\" x=\"557.603\" y=\"1557.47\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 906.197, 1557.47)\" x=\"906.197\" y=\"1557.47\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1254.79, 1557.47)\" x=\"1254.79\" y=\"1557.47\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1603.38, 1557.47)\" x=\"1603.38\" y=\"1557.47\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1951.98, 1557.47)\" x=\"1951.98\" y=\"1557.47\">1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1494.39)\" x=\"499.866\" y=\"1494.39\">-1.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 1145.79)\" x=\"499.866\" y=\"1145.79\">-0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 797.2)\" x=\"499.866\" y=\"797.2\">0.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 448.607)\" x=\"499.866\" y=\"448.607\">0.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip7801)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 499.866, 100.013)\" x=\"499.866\" y=\"100.013\">1.0</text>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1116.04\" cy=\"959.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1592.9\" cy=\"1439.14\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"692.392\" cy=\"226.89\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"664.112\" cy=\"311.156\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1035.02\" cy=\"1336.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"649.64\" cy=\"243.369\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1561.73\" cy=\"898.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.93\" cy=\"194.278\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1478.37\" cy=\"1180.78\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1379.55\" cy=\"1240.29\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1043.74\" cy=\"885.801\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1849.64\" cy=\"992.984\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1422.86\" cy=\"1207.41\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1780.77\" cy=\"896.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1163.24\" cy=\"1059.43\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"972.032\" cy=\"1366.88\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"609.008\" cy=\"775.568\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"992.733\" cy=\"1156.25\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1915.01\" cy=\"468.363\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1438.96\" cy=\"170.647\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1194.09\" cy=\"852.816\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1152.98\" cy=\"545.653\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1492.68\" cy=\"982.08\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"676.269\" cy=\"903.918\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1633.48\" cy=\"416.94\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1777.52\" cy=\"195.082\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1907.52\" cy=\"198.545\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1476.68\" cy=\"955.548\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"767.699\" cy=\"160.035\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.45\" cy=\"989.016\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.19\" cy=\"1197.63\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1087.69\" cy=\"1243.27\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"680.012\" cy=\"480.459\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1173.72\" cy=\"299.953\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1765.44\" cy=\"299.315\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"845.96\" cy=\"259.184\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1833.46\" cy=\"806.023\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.44\" cy=\"1141.11\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"616.37\" cy=\"299.596\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1825.14\" cy=\"1241.82\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"960.71\" cy=\"850.458\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1750.45\" cy=\"343.297\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"919.3\" cy=\"1259.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1889\" cy=\"1185.79\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1728.53\" cy=\"979.376\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1578.23\" cy=\"362.48\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1139.03\" cy=\"600.33\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"740.991\" cy=\"1265.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1388.05\" cy=\"1239.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1554.19\" cy=\"118.295\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"814.141\" cy=\"1300.6\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"959.601\" cy=\"530.173\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"978.747\" cy=\"565.487\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1686.19\" cy=\"950.39\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1074.1\" cy=\"643.564\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1529\" cy=\"558.251\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1267.27\" cy=\"250.381\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1708.84\" cy=\"1302.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1890.45\" cy=\"898.56\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1112.95\" cy=\"184.464\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"927.185\" cy=\"219.744\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1844\" cy=\"1447.98\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1850.77\" cy=\"588.275\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"970.15\" cy=\"1416.8\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1870.21\" cy=\"1187.75\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"980.974\" cy=\"144.218\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.455\" cy=\"1357.95\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"874.547\" cy=\"1410.54\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1647.96\" cy=\"102.37\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1005.08\" cy=\"709.171\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1697.25\" cy=\"509.749\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1381.3\" cy=\"984.104\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1073.3\" cy=\"1339.34\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1111.3\" cy=\"882.77\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1026.55\" cy=\"711.116\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1563.27\" cy=\"1105.97\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1052.16\" cy=\"1145.49\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1612.72\" cy=\"952.7\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1120.79\" cy=\"132.397\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"862.008\" cy=\"1018.93\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"982.839\" cy=\"372.314\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"615.702\" cy=\"699.519\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1146.23\" cy=\"651.136\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1729.44\" cy=\"839.167\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"712.342\" cy=\"974.361\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1251.49\" cy=\"135.406\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"784.069\" cy=\"913.301\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1390.67\" cy=\"666.182\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1805.51\" cy=\"174.741\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"956.682\" cy=\"1326.1\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1227.36\" cy=\"1006.99\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1118.17\" cy=\"938.643\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1664.72\" cy=\"603.947\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1945.49\" cy=\"248.916\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1884.2\" cy=\"88.4582\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1697.78\" cy=\"89.6241\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"565.272\" cy=\"137.45\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"579.789\" cy=\"706.202\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"631.237\" cy=\"1423.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip7803)\" style=\"fill:#ff0000; stroke:none; fill-opacity:1\" cx=\"1892.42\" cy=\"1462.26\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"metadata": {}, | |
"output_type": "display_data" | |
} | |
], | |
"source": [ | |
"for hull in graham_scan_iterator(input_points)\n", | |
" plot = scatter(xs(input_points), ys(input_points), aspect_ratio=:equal, legend=false)\n", | |
" scatter!(plot, xs(hull), ys(hull), color=:red, legend=false)\n", | |
" IJulia.clear_output(true); display(plot); sleep(0.05);\n", | |
"end;" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## That's nice, but now this is probably not great for the performance..." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 31, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Function version:\n", | |
" 7.050 μs (26 allocations: 7.33 KiB)\n", | |
"Iterator version:\n", | |
" 8.384 μs (125 allocations: 10.42 KiB)\n" | |
] | |
} | |
], | |
"source": [ | |
"using BenchmarkTools\n", | |
"println(\"Function version:\")\n", | |
"@btime graham_scan($input_points);\n", | |
"println(\"Iterator version:\")\n", | |
"@btime graham_scan_iterator_version($input_points);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"But let's inline a little bit:" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 32, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"@inline function graham_scan_iterator(points::AbstractVector)\n", | |
" # Find the element with the lowest y-coordinate\n", | |
" p₁ = point_with_lowest_y_coordinate(points)\n", | |
" sorted_points = sort_by_polar_angle(points, p₁)\n", | |
" hull = sorted_points[1:2]\n", | |
" GrahamScanIterator(sorted_points, hull)\n", | |
"end\n", | |
"@inline function Base.iterate(G::GrahamScanIterator, i=nothing)\n", | |
" i === nothing && return G.hull, 3 \n", | |
" i > length(G.points) && return nothing\n", | |
" \n", | |
" while length(G.hull) ≥ 2 && ccw(G.hull[end-1], G.hull[end], G.points[i]) ≤ 0\n", | |
" pop!(G.hull)\n", | |
" end\n", | |
" push!(G.hull, G.points[i]) \n", | |
" \n", | |
" return G.hull, i + 1\n", | |
"end" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 33, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"Function version:\n", | |
" 7.087 μs (26 allocations: 7.33 KiB)\n", | |
"Iterator version:\n", | |
" 6.924 μs (26 allocations: 7.33 KiB)\n" | |
] | |
} | |
], | |
"source": [ | |
"println(\"Function version:\")\n", | |
"@btime graham_scan($input_points);\n", | |
"println(\"Iterator version:\")\n", | |
"@btime graham_scan_iterator_version($input_points);" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"We see that we get the iterator abstraction completely for free!" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# Polymake.jl\n", | |
"### A Julia interface to polymake." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## OSCAR\n", | |
"\n", | |
"The OSCAR project develops a comprehensive open source computer algebra system for computations in algebra, geometry, and number theory." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"<img src=\"https://oscar.computeralgebra.de/public/oscar_main.svg\" style=\"display: block; margin-left: auto; margin-right: auto; width: 50%;\" />" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"## A little bit about Polymake.jl" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"* uses a mix of handwritten and auto-generated C++ code to interact with polymake.\n", | |
"* can be easily installed with the Julia package manager.\n", | |
"* No need to compile polymake from source (on Linux)\n", | |
"* Most of the work done by Sebastian Gutsche, Marek Kaluba, Benjamin Lorenz and myself" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"# Polymake.jl Demo" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 34, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stdout", | |
"output_type": "stream", | |
"text": [ | |
"polymake version 3.2\n", | |
"Copyright (c) 1997-2018\n", | |
"Ewgenij Gawrilow, Michael Joswig (TU Berlin)\n", | |
"http://www.polymake.org\n", | |
"\n", | |
"This is free software licensed under GPL; see the source for copying conditions.\n", | |
"There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"using Polymake" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"## G-~~Conjecture~~Theorem" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"source": [ | |
"Produce a 6-dimensional polytope with 20 vertices, drawn uniformly at random on the unit sphere, and print its f-vector." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 36, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"polymake: used package ppl\n", | |
" The Parma Polyhedra Library (PPL): A C++ library for convex polyhedra\n", | |
" and other numerical abstractions.\n", | |
" http://www.cs.unipr.it/ppl/\n", | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"pm::Vector<pm::Integer>\n", | |
"20 168 658 1234 1086 362" | |
] | |
}, | |
"execution_count": 36, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"P = polytope.rand_sphere(6, 20)\n", | |
"P.F_VECTOR" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Now we also can get the g-vector of that polytope and convert it to a Julia `Vector`" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 37, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"4-element Array{pm_Integer,1}:\n", | |
" 1\n", | |
" 13\n", | |
" 69\n", | |
" 83" | |
] | |
}, | |
"execution_count": 37, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"g = Vector(P.G_VECTOR) " | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Let's do a census of 100 random samples and plot the result. Since $$g_0=1 \\text{ and } g_1=\\#\\text{vertices}-\\text{dimension}-1$$ are constant, it suffices to plot $g_2$ versus $g_3$." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 38, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8000\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8001\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8001)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8002\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8001)\" points=\"\n", | |
"211.005,1440.48 2321.26,1440.48 2321.26,47.2441 211.005,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8003\">\n", | |
" <rect x=\"211\" y=\"47\" width=\"2111\" height=\"1394\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 451.712,1440.48 451.712,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 904.168,1440.48 904.168,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1356.62,1440.48 1356.62,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1809.08,1440.48 1809.08,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 2261.54,1440.48 2261.54,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 211.005,1323.74 2321.26,1323.74 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 211.005,937.154 2321.26,937.154 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 211.005,550.573 2321.26,550.573 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8003)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 211.005,163.992 2321.26,163.992 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 211.005,1440.48 2321.26,1440.48 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 211.005,1440.48 211.005,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 451.712,1440.48 451.712,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 904.168,1440.48 904.168,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1356.62,1440.48 1356.62,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1809.08,1440.48 1809.08,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2261.54,1440.48 2261.54,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 211.005,1323.74 242.659,1323.74 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 211.005,937.154 242.659,937.154 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 211.005,550.573 242.659,550.573 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8001)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 211.005,163.992 242.659,163.992 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 451.712, 1494.48)\" x=\"451.712\" y=\"1494.48\">65.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 904.168, 1494.48)\" x=\"904.168\" y=\"1494.48\">67.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1356.62, 1494.48)\" x=\"1356.62\" y=\"1494.48\">70.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1809.08, 1494.48)\" x=\"1809.08\" y=\"1494.48\">72.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2261.54, 1494.48)\" x=\"2261.54\" y=\"1494.48\">75.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 187.005, 1341.24)\" x=\"187.005\" y=\"1341.24\">60</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 187.005, 954.654)\" x=\"187.005\" y=\"954.654\">70</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 187.005, 568.073)\" x=\"187.005\" y=\"568.073\">80</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 187.005, 181.492)\" x=\"187.005\" y=\"181.492\">90</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<image width=\"54\" height=\"43\" xlink:href=\"data:image/png;base64,\n", | |
"iVBORw0KGgoAAAANSUhEUgAAADYAAAArCAYAAAAzDXuYAAAD6ElEQVRogc1Z/W3rIBC/PL0BLhmB\n", | |
"bnAzkA2sjkA3cDOCR8gMbidAHgF1Atcj0Gxw748+EMY4Bsdpg3SKYvFxP7iPHwcwM9wixhhWSrGU\n", | |
"khGRAYCJiJum4VvnvkVWD9RaMxExADAAsBCClVLcNA1XVcUAwIjIxhgP0G2CUoqttXcFvmqQUsoD\n", | |
"QkRu23aipLXWAzfGcN/3fgwAcFVVjwOs73sWQoxO6drOW2sZEf1phsCklI8BrO9770M5oJycz+cR\n", | |
"ICd1Xf8+sBgUAHDf99mKxWMBgLXWvw8sDBIAUBzxXDAJ5Z6gsoDVdT1SCBGLlYr9i4h+F5gxZrLT\n", | |
"a/JTGHB+wr8WgcUmCADF+cdau9q/tNaslGIhhPdxRGQiYqVUMs0sAtNaTxRak3vati3eHGPMKK0Q\n", | |
"EVdVNWI3oWukrKjotK7t0JzE/iWEuDpH0zRe4fP5nOxrjOFYPyIabVi2+awxQ+apfymlZudwpxsr\n", | |
"OSdxtA1za3JAKqmuiWSpDZo7dde3NOrGG+fcJdlZSrkJUyjxL5dWSs09tYYxJt05ZYZrmEKJf4VR\n", | |
"75q5XhsbHkI2sHv71y35MrYwIuI/ELXPz0+OvwkhYL/f7+Lv19rX1xcPwzD6JqWc7Rt/M8Zkr0VE\n", | |
"o//DMMAE2OVyWRyY07qum3ybA7bf73dCiKy+ue1vTqd40ZwWA1s6da01nE4nGIYBnp+f4eXlJdtC\n", | |
"Pj4+JmtNgCHiZODhcMhdw7cY2NIJPD097d7e3orXAZiarZQyHe7hRsaRIs9rWEuOpKhf3/d5UWaO\n", | |
"2uRGKVgZVdes5fJtsnOc9EqSc3x/gwx+uNVphetk5aBcxRyBjeUeFSlXKAp1XCTBqd1YYh6OZaTM\n", | |
"sNSUS00QESc1mKuDQzI8V5XSWvu7U9M0nOJuJYWfHAlZ/dxNYHGStm1HR+6qvXVde0BE5E90ixpJ\n", | |
"LqirFC3XnpumYSIa1eeVUhMTjS+AW/pXCGqJS25q98zTHLiVfzmfQsSsm8amoOaS5VaghBCL81lr\n", | |
"5xP0WrmHfzlQUsqsJC+l/Pb9LYFt7V9uvhKCgIjfz1hbAtvSvxyokjncU9XsDXqNpPxrDT9072rx\n", | |
"o2GOOJLQtu1YMbdLRFTs9DHjWGOG1lqfG9272pIgYvIlaHa3Sx7mtmAbIahbhfl/uE9VfUsiWrxj\n", | |
"a3xrK1COsCedvsSU4mpsaenMndYWoEK9k8BSbDmlzNwl7xFkFE1yA0dMjHNpzk/K7v+JwfF45LAA\n", | |
"I6UEIvKFHGstDMMAXdf5Eh0iwul0gtfX16Ka4080Dwzgu1jadR28v7+DtRYul4v/RUQ4HA4ghAAi\n", | |
"AiklHI/HhwPk2j9qUk7yPOtOtgAAAABJRU5ErkJggg==\n", | |
"\" transform=\"translate(1239, 1559)\"/>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8001)\">\n", | |
"<image width=\"43\" height=\"55\" xlink:href=\"data:image/png;base64,\n", | |
"iVBORw0KGgoAAAANSUhEUgAAACsAAAA3CAYAAACVSbMgAAAENklEQVRogdVa/23zLBC+fHoHuGYE\n", | |
"ugHpCHQDqyMwAuoIdAPPgDoBzQhWJnA8As0G9/4RnYVtYoOdNu+H9Eita7iH8/3i6I6I4LfH+Xym\n", | |
"0+kEiAhCCHh+ft5lTSSiX0PTNCSEIAAYQAhB1lpamr9KqLWWhBCEiCSlJK01tW07K8wYMyGZIj23\n", | |
"ThHJtm2TmmForZOC6rpeJMpAxJuEs4mGEGaJMqqqovEGc4nGGt5E1lqbLSzWsFJqQkRrTcYYMsaQ\n", | |
"1pqklJM1jDETwtlkEbFfSEpJxhiy1t4U1rYthRAGGp+zxxACxXaNiOvIss0hIjVNc1NgrP2qqoh/\n", | |
"T2npFpqmIVaMc46KyVZVRQAwSzS2URbG0SKXKMN7n7T/rMlCCFJKFWmHNVzXdTFZljl2tP9yEkfX\n", | |
"daCUynkVAAAOh8NOSgkAAC8vL9nz4qGUghDC4FkWWQAAIUSRMCZ5OBzyUmlC3uVyGTzLIiuEmOwy\n", | |
"Z86WEUIARBw8yyZ7Op2KhG0l23Ud7Pf7wbMsslJKOB6PRcK2kj0ej8B2348S7/be997pnCNr7Ww4\n", | |
"CyGsigQsbxxJshdQSvUxc1xBxZsoJWWtncznFD1+vzhQK6UoTr2QCN45GNcaXM+ynFQFt0kAoySd\n", | |
"MsYb5lSOiISIlDKh4k/nvR8ULkKI5MKlZGPc8oNisjHWOtCtrySlnK3MdkS0KcRsGV9fX3Q8HmG/\n", | |
"34NSajHbPZRs6ciuDf6F8QcA4Pv7m7TWcLlcQEoJSil4fX1dVYD86CAi0FonvZKPL977VR5/b8yS\n", | |
"HYMPe865h5AHomFlX4LfJt//0LYt5Wr4UeT7H+I+FCJSVVWktc5qbMyRr6qK6rpebC8VmwEiJg94\n", | |
"IQRyzm0mz0pYSx6IrnlaSpn96X6CfI7sPkdvsbF7kV/q2oCUclU9OoemaWjc4yrBrV4DAEBWI3cN\n", | |
"+EShlCLnHBljkn2xFJLFNyLe7KveA2xmY4V47xfJj4t6UErd7IfeCxy/585q3vuk6cRz+oXGHbt7\n", | |
"QwiR1aRzzg3OeHHrcxBjfzJl8kEw9yTMncvYhICIgO1m7XmqRLsl/sFmwdod7JoJ3yM1psAOlft+\n", | |
"CKE3Ce/91AnGqr8nODKUzHHO9ZFh8pnG6dBaezfT0Fon7wqWgIjXSBE/jFvsqVS4pfTjy5A1bfuq\n", | |
"qq5pfPyHOcKM0uOO976vGdaYlzGGEJGSR/Hz+Uxvb2/ZPVkhBEgpQQgB+/2+bz53XQefn5/QdR0A\n", | |
"ACAidF0HT09PRYfRj48Pen9/h8UdzWm4FGsTj7X2+rWXXmyaJrv4mMPaWxtWWtJm5+xuDWkhRHbW\n", | |
"atu2b6nGtS33hld5dV3Xi/Uql4Ula4+VwTfkvN5del3n85n4GggR8/8zYzR2u92EjJQSTqcT1HU9\n", | |
"72C/jTkza9v28QTHfpEiylexDyeYIhxrOK7S/lf92b+upwAVlBMU2wAAAABJRU5ErkJggg==\n", | |
"\" transform=\"translate(-1, 716)\"/>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"451.712\" cy=\"1130.44\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"451.712\" cy=\"1130.44\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"782.521\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"782.521\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"270.729\" cy=\"1091.79\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"270.729\" cy=\"1091.79\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"1207.76\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"1207.76\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"1091.79\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"1091.79\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"898.496\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"898.496\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1899.57\" cy=\"937.154\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1899.57\" cy=\"937.154\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1899.57\" cy=\"434.598\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1899.57\" cy=\"434.598\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.694\" cy=\"1014.47\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.694\" cy=\"1014.47\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.694\" cy=\"1014.47\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.694\" cy=\"1014.47\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"632.694\" cy=\"1130.44\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"632.694\" cy=\"1130.44\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"511.915\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"511.915\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"821.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"821.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"2261.54\" cy=\"627.889\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"2261.54\" cy=\"627.889\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"821.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"821.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"2261.54\" cy=\"86.6754\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"2261.54\" cy=\"86.6754\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"898.496\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"898.496\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1356.62\" cy=\"743.863\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1356.62\" cy=\"743.863\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"782.521\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"782.521\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1356.62\" cy=\"1401.05\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1356.62\" cy=\"1401.05\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"270.729\" cy=\"1285.08\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"270.729\" cy=\"1285.08\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1899.57\" cy=\"821.18\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1899.57\" cy=\"821.18\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"627.889\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1175.64\" cy=\"627.889\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"813.676\" cy=\"627.889\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"813.676\" cy=\"627.889\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1718.59\" cy=\"202.65\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1718.59\" cy=\"202.65\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"813.676\" cy=\"1169.1\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"813.676\" cy=\"1169.1\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"1053.13\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"1053.13\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"473.257\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"473.257\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"1014.47\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1537.61\" cy=\"1014.47\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"589.231\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8003)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"994.659\" cy=\"589.231\" r=\"14\"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 38, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"n_vertices, n_samples = 20, 30\n", | |
"g_vectors = zeros(Int, n_samples, 2)\n", | |
"\n", | |
"for i=1:n_samples\n", | |
" RS = polytope.rand_sphere(6, n_vertices)\n", | |
" g_vectors[i,:] = RS.G_VECTOR[3:4] # notice index shift as Julia counts from 1\n", | |
"end\n", | |
"scatter(g_vectors[:,1], g_vectors[:,2], xlabel=\"\\$g_2\\$\", ylabel=\"\\$g_3\\$\", legend=false)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Compare the empirically found upper bound for the $g_3$ values with the true bound from Stanley's g-theorem." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 39, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"image/svg+xml": [ | |
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n", | |
"<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"600\" height=\"400\" viewBox=\"0 0 2400 1600\">\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8200\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2000\" height=\"2000\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8201\">\n", | |
" <rect x=\"0\" y=\"0\" width=\"2400\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8201)\" points=\"\n", | |
"0,1600 2400,1600 2400,0 0,0 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8202\">\n", | |
" <rect x=\"480\" y=\"0\" width=\"1681\" height=\"1600\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polygon clip-path=\"url(#clip8201)\" points=\"\n", | |
"237.767,1440.48 2321.26,1440.48 2321.26,47.2441 237.767,47.2441 \n", | |
" \" fill=\"#ffffff\" fill-rule=\"evenodd\" fill-opacity=\"1\"/>\n", | |
"<defs>\n", | |
" <clipPath id=\"clip8203\">\n", | |
" <rect x=\"237\" y=\"47\" width=\"2084\" height=\"1394\"/>\n", | |
" </clipPath>\n", | |
"</defs>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 475.421,1440.48 475.421,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 922.139,1440.48 922.139,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1368.86,1440.48 1368.86,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 1815.58,1440.48 1815.58,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 2262.29,1440.48 2262.29,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 237.767,1439.57 2321.26,1439.57 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 237.767,1198.84 2321.26,1198.84 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 237.767,958.111 2321.26,958.111 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 237.767,717.383 2321.26,717.383 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 237.767,476.655 2321.26,476.655 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#000000; stroke-width:2; stroke-opacity:0.1; fill:none\" points=\"\n", | |
" 237.767,235.927 2321.26,235.927 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,1440.48 2321.26,1440.48 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,1440.48 237.767,47.2441 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 475.421,1440.48 475.421,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 922.139,1440.48 922.139,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1368.86,1440.48 1368.86,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 1815.58,1440.48 1815.58,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 2262.29,1440.48 2262.29,1419.58 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,1439.57 269.02,1439.57 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,1198.84 269.02,1198.84 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,958.111 269.02,958.111 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,717.383 269.02,717.383 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,476.655 269.02,476.655 \n", | |
" \"/>\n", | |
"<polyline clip-path=\"url(#clip8201)\" style=\"stroke:#000000; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 237.767,235.927 269.02,235.927 \n", | |
" \"/>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 475.421, 1494.48)\" x=\"475.421\" y=\"1494.48\">65.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 922.139, 1494.48)\" x=\"922.139\" y=\"1494.48\">67.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1368.86, 1494.48)\" x=\"1368.86\" y=\"1494.48\">70.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 1815.58, 1494.48)\" x=\"1815.58\" y=\"1494.48\">72.5</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:middle;\" transform=\"rotate(0, 2262.29, 1494.48)\" x=\"2262.29\" y=\"1494.48\">75.0</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 213.767, 1457.07)\" x=\"213.767\" y=\"1457.07\">50</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 213.767, 1216.34)\" x=\"213.767\" y=\"1216.34\">100</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 213.767, 975.611)\" x=\"213.767\" y=\"975.611\">150</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 213.767, 734.883)\" x=\"213.767\" y=\"734.883\">200</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 213.767, 494.155)\" x=\"213.767\" y=\"494.155\">250</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<text style=\"fill:#000000; fill-opacity:1; font-family:Arial,Helvetica Neue,Helvetica,sans-serif; font-size:48px; text-anchor:end;\" transform=\"rotate(0, 213.767, 253.427)\" x=\"213.767\" y=\"253.427\">300</text>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<image width=\"54\" height=\"43\" xlink:href=\"data:image/png;base64,\n", | |
"iVBORw0KGgoAAAANSUhEUgAAADYAAAArCAYAAAAzDXuYAAAD6ElEQVRogc1Z/W3rIBC/PL0BLhmB\n", | |
"bnAzkA2sjkA3cDOCR8gMbidAHgF1Atcj0Gxw748+EMY4Bsdpg3SKYvFxP7iPHwcwM9wixhhWSrGU\n", | |
"khGRAYCJiJum4VvnvkVWD9RaMxExADAAsBCClVLcNA1XVcUAwIjIxhgP0G2CUoqttXcFvmqQUsoD\n", | |
"QkRu23aipLXWAzfGcN/3fgwAcFVVjwOs73sWQoxO6drOW2sZEf1phsCklI8BrO9770M5oJycz+cR\n", | |
"ICd1Xf8+sBgUAHDf99mKxWMBgLXWvw8sDBIAUBzxXDAJ5Z6gsoDVdT1SCBGLlYr9i4h+F5gxZrLT\n", | |
"a/JTGHB+wr8WgcUmCADF+cdau9q/tNaslGIhhPdxRGQiYqVUMs0sAtNaTxRak3vati3eHGPMKK0Q\n", | |
"EVdVNWI3oWukrKjotK7t0JzE/iWEuDpH0zRe4fP5nOxrjOFYPyIabVi2+awxQ+apfymlZudwpxsr\n", | |
"OSdxtA1za3JAKqmuiWSpDZo7dde3NOrGG+fcJdlZSrkJUyjxL5dWSs09tYYxJt05ZYZrmEKJf4VR\n", | |
"75q5XhsbHkI2sHv71y35MrYwIuI/ELXPz0+OvwkhYL/f7+Lv19rX1xcPwzD6JqWc7Rt/M8Zkr0VE\n", | |
"o//DMMAE2OVyWRyY07qum3ybA7bf73dCiKy+ue1vTqd40ZwWA1s6da01nE4nGIYBnp+f4eXlJdtC\n", | |
"Pj4+JmtNgCHiZODhcMhdw7cY2NIJPD097d7e3orXAZiarZQyHe7hRsaRIs9rWEuOpKhf3/d5UWaO\n", | |
"2uRGKVgZVdes5fJtsnOc9EqSc3x/gwx+uNVphetk5aBcxRyBjeUeFSlXKAp1XCTBqd1YYh6OZaTM\n", | |
"sNSUS00QESc1mKuDQzI8V5XSWvu7U9M0nOJuJYWfHAlZ/dxNYHGStm1HR+6qvXVde0BE5E90ixpJ\n", | |
"LqirFC3XnpumYSIa1eeVUhMTjS+AW/pXCGqJS25q98zTHLiVfzmfQsSsm8amoOaS5VaghBCL81lr\n", | |
"5xP0WrmHfzlQUsqsJC+l/Pb9LYFt7V9uvhKCgIjfz1hbAtvSvxyokjncU9XsDXqNpPxrDT9072rx\n", | |
"o2GOOJLQtu1YMbdLRFTs9DHjWGOG1lqfG9272pIgYvIlaHa3Sx7mtmAbIahbhfl/uE9VfUsiWrxj\n", | |
"a3xrK1COsCedvsSU4mpsaenMndYWoEK9k8BSbDmlzNwl7xFkFE1yA0dMjHNpzk/K7v+JwfF45LAA\n", | |
"I6UEIvKFHGstDMMAXdf5Eh0iwul0gtfX16Ka4080Dwzgu1jadR28v7+DtRYul4v/RUQ4HA4ghAAi\n", | |
"AiklHI/HhwPk2j9qUk7yPOtOtgAAAABJRU5ErkJggg==\n", | |
"\" transform=\"translate(1253, 1559)\"/>\n", | |
"</g>\n", | |
"<g clip-path=\"url(#clip8201)\">\n", | |
"<image width=\"43\" height=\"55\" xlink:href=\"data:image/png;base64,\n", | |
"iVBORw0KGgoAAAANSUhEUgAAACsAAAA3CAYAAACVSbMgAAAENklEQVRogdVa/23zLBC+fHoHuGYE\n", | |
"ugHpCHQDqyMwAuoIdAPPgDoBzQhWJnA8As0G9/4RnYVtYoOdNu+H9Eita7iH8/3i6I6I4LfH+Xym\n", | |
"0+kEiAhCCHh+ft5lTSSiX0PTNCSEIAAYQAhB1lpamr9KqLWWhBCEiCSlJK01tW07K8wYMyGZIj23\n", | |
"ThHJtm2TmmForZOC6rpeJMpAxJuEs4mGEGaJMqqqovEGc4nGGt5E1lqbLSzWsFJqQkRrTcYYMsaQ\n", | |
"1pqklJM1jDETwtlkEbFfSEpJxhiy1t4U1rYthRAGGp+zxxACxXaNiOvIss0hIjVNc1NgrP2qqoh/\n", | |
"T2npFpqmIVaMc46KyVZVRQAwSzS2URbG0SKXKMN7n7T/rMlCCFJKFWmHNVzXdTFZljl2tP9yEkfX\n", | |
"daCUynkVAAAOh8NOSgkAAC8vL9nz4qGUghDC4FkWWQAAIUSRMCZ5OBzyUmlC3uVyGTzLIiuEmOwy\n", | |
"Z86WEUIARBw8yyZ7Op2KhG0l23Ud7Pf7wbMsslJKOB6PRcK2kj0ej8B2348S7/be997pnCNr7Ww4\n", | |
"CyGsigQsbxxJshdQSvUxc1xBxZsoJWWtncznFD1+vzhQK6UoTr2QCN45GNcaXM+ynFQFt0kAoySd\n", | |
"MsYb5lSOiISIlDKh4k/nvR8ULkKI5MKlZGPc8oNisjHWOtCtrySlnK3MdkS0KcRsGV9fX3Q8HmG/\n", | |
"34NSajHbPZRs6ciuDf6F8QcA4Pv7m7TWcLlcQEoJSil4fX1dVYD86CAi0FonvZKPL977VR5/b8yS\n", | |
"HYMPe865h5AHomFlX4LfJt//0LYt5Wr4UeT7H+I+FCJSVVWktc5qbMyRr6qK6rpebC8VmwEiJg94\n", | |
"IQRyzm0mz0pYSx6IrnlaSpn96X6CfI7sPkdvsbF7kV/q2oCUclU9OoemaWjc4yrBrV4DAEBWI3cN\n", | |
"+EShlCLnHBljkn2xFJLFNyLe7KveA2xmY4V47xfJj4t6UErd7IfeCxy/585q3vuk6cRz+oXGHbt7\n", | |
"QwiR1aRzzg3OeHHrcxBjfzJl8kEw9yTMncvYhICIgO1m7XmqRLsl/sFmwdod7JoJ3yM1psAOlft+\n", | |
"CKE3Ce/91AnGqr8nODKUzHHO9ZFh8pnG6dBaezfT0Fon7wqWgIjXSBE/jFvsqVS4pfTjy5A1bfuq\n", | |
"qq5pfPyHOcKM0uOO976vGdaYlzGGEJGSR/Hz+Uxvb2/ZPVkhBEgpQQgB+/2+bz53XQefn5/QdR0A\n", | |
"ACAidF0HT09PRYfRj48Pen9/h8UdzWm4FGsTj7X2+rWXXmyaJrv4mMPaWxtWWtJm5+xuDWkhRHbW\n", | |
"atu2b6nGtS33hld5dV3Xi/Uql4Ula4+VwTfkvN5del3n85n4GggR8/8zYzR2u92EjJQSTqcT1HU9\n", | |
"72C/jTkza9v28QTHfpEiylexDyeYIhxrOK7S/lf92b+upwAVlBMU2wAAAABJRU5ErkJggg==\n", | |
"\" transform=\"translate(-1, 716)\"/>\n", | |
"</g>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"475.421\" cy=\"1367.35\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"475.421\" cy=\"1367.35\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1324.02\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1324.02\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"296.734\" cy=\"1362.53\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"296.734\" cy=\"1362.53\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1376.98\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1376.98\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1362.53\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1362.53\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1338.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1338.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1904.92\" cy=\"1343.28\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1904.92\" cy=\"1343.28\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1904.92\" cy=\"1280.69\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1904.92\" cy=\"1280.69\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"654.108\" cy=\"1352.91\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"654.108\" cy=\"1352.91\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"654.108\" cy=\"1352.91\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"654.108\" cy=\"1352.91\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"654.108\" cy=\"1367.35\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"654.108\" cy=\"1367.35\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1290.32\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1290.32\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1328.83\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1328.83\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"2262.29\" cy=\"1304.76\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"2262.29\" cy=\"1304.76\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1328.83\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1328.83\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"2262.29\" cy=\"1237.36\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"2262.29\" cy=\"1237.36\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1338.46\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1338.46\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1368.86\" cy=\"1319.2\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1368.86\" cy=\"1319.2\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1324.02\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1324.02\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1368.86\" cy=\"1401.05\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1368.86\" cy=\"1401.05\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"296.734\" cy=\"1386.61\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"296.734\" cy=\"1386.61\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1904.92\" cy=\"1328.83\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1904.92\" cy=\"1328.83\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1304.76\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1190.17\" cy=\"1304.76\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"832.796\" cy=\"1304.76\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"832.796\" cy=\"1304.76\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1726.23\" cy=\"1251.8\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1726.23\" cy=\"1251.8\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"832.796\" cy=\"1372.16\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"832.796\" cy=\"1372.16\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1357.72\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1357.72\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1285.5\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1285.5\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1352.91\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1547.54\" cy=\"1352.91\" r=\"14\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#000000; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1299.95\" r=\"18\"/>\n", | |
"<circle clip-path=\"url(#clip8203)\" style=\"fill:#009af9; stroke:none; fill-opacity:1\" cx=\"1011.48\" cy=\"1299.95\" r=\"14\"/>\n", | |
"<polyline clip-path=\"url(#clip8203)\" style=\"stroke:#e26f46; stroke-width:4; stroke-opacity:1; fill:none\" points=\"\n", | |
" 296.734,404.437 475.421,356.291 654.108,303.331 832.796,298.516 1011.48,288.887 1190.17,274.443 1368.86,255.185 1547.54,231.112 1726.23,202.225 1904.92,168.523 \n", | |
" 2083.61,130.006 2262.29,86.6754 \n", | |
" \"/>\n", | |
"</svg>\n" | |
] | |
}, | |
"execution_count": 39, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"min_g2, max_g2 = extrema(g_vectors[:,1])\n", | |
"ub = [polytope.pseudopower(pm_Integer(g2), 2) for g2 in min_g2:max_g2]\n", | |
"plot!(min_g2:max_g2, ub)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Compare with the maximal g-vector from McMullen's upper bound theorem shows that the random polytopes have rather few faces." | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 40, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"pm::Vector<pm::Integer>\n", | |
"1 13 91 455" | |
] | |
}, | |
"execution_count": 40, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"polytope.upper_bound_theorem(6,n_vertices).G_VECTOR" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"The lesson to learn here is the following.\n", | |
"\n", | |
"By just looking at this class of random polytopes, one cannot get an adequate intuition about the set of all 6-polytopes with 20 vertices, not even the simplicial ones." | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "slide" | |
} | |
}, | |
"source": [ | |
"## Cubic Tropical Hypersurfaces" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"On a classical smooth cubic surface are 27 lines\n", | |
"\n", | |
"<img src=\"https://blogs.ams.org/visualinsight/files/2018/08/clebsch_diagonal_cubic-1-1.gif\" style=\"display: block; margin-left: auto; margin-right: auto; width: 25%;\"/>\n", | |
"\n", | |
"(Credit [Greg Egan](http://www.gregegan.net/))\n", | |
"\n", | |
"\n", | |
"What about a tropical cubic hypersurface?" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"We start with a triangulation of the simplex" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 41, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"type: SubdivisionOfPoints<Rational>\n", | |
"\n", | |
"POINTS\n", | |
"1 0 0 0\n", | |
"1 0 0 1\n", | |
"1 0 0 2\n", | |
"1 0 0 3\n", | |
"1 0 1 0\n", | |
"1 0 1 1\n", | |
"1 0 1 2\n", | |
"1 0 2 0\n", | |
"1 0 2 1\n", | |
"1 0 3 0\n", | |
"1 1 0 0\n", | |
"1 1 0 1\n", | |
"1 1 0 2\n", | |
"1 1 1 0\n", | |
"1 1 1 1\n", | |
"1 1 2 0\n", | |
"1 2 0 0\n", | |
"1 2 0 1\n", | |
"1 2 1 0\n", | |
"1 3 0 0\n", | |
"\n", | |
"\n", | |
"MAXIMAL_CELLS\n", | |
"{0 1 4 10}\n", | |
"{10 11 13 16}\n", | |
"{14 15 16 17}\n", | |
"{15 16 17 18}\n", | |
"{16 17 18 19}\n", | |
"{2 3 6 12}\n", | |
"{2 6 8 12}\n", | |
"{11 12 14 17}\n", | |
"{8 9 11 14}\n", | |
"{9 11 14 15}\n", | |
"{9 11 13 15}\n", | |
"{11 13 15 16}\n", | |
"{7 10 11 13}\n", | |
"{7 9 11 13}\n", | |
"{1 4 7 10}\n", | |
"{5 8 9 11}\n", | |
"{5 7 9 11}\n", | |
"{2 5 8 11}\n", | |
"{11 14 16 17}\n", | |
"{11 14 15 16}\n", | |
"{5 7 10 11}\n", | |
"{1 5 7 10}\n", | |
"{2 11 12 14}\n", | |
"{2 8 12 14}\n", | |
"{2 8 11 14}\n", | |
"{2 5 10 11}\n", | |
"{1 2 5 10}\n", | |
"\n" | |
] | |
}, | |
"execution_count": 41, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"simplex = polytope.simplex(3, 3)\n", | |
"lattice_points = polytope.LATTICE_POINTS(simplex)\n", | |
"maximal_cells = [[0,1,4,10],[10,11,13,16],[14,15,16,17],[15,16,17,18],[16,17,18,19],[2,3,6,12],[2,6,8,12],[11,12,14,17],[8,9,11,14],[9,11,14,15],[9,11,13,15],[11,13,15,16],[7,10,11,13],[7,9,11,13],[1,4,7,10],[5,8,9,11],[5,7,9,11],[2,5,8,11],[11,14,16,17],[11,14,15,16],[5,7,10,11],[1,5,7,10],[2,11,12,14],[2,8,12,14],[2,8,11,14],[2,5,10,11],[1,2,5,10]];\n", | |
"Δ = perlobj(\"fan::SubdivisionOfPoints\", POINTS=lattice_points, MAXIMAL_CELLS=maximal_cells)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"And compute from this the secondary cone" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 42, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"type: Cone<Rational>\n", | |
"\n", | |
"INEQUALITIES\n", | |
"(20) (0 1) (4 -2) (7 1)\n", | |
"(20) (10 1) (13 -2) (15 1)\n", | |
"(20) (7 1) (13 -2) (16 1)\n", | |
"(20) (14 1) (15 -1) (17 -1) (18 1)\n", | |
"(20) (11 1) (14 -2) (15 1) (16 -1) (17 1)\n", | |
"(20) (11 1) (14 -2) (15 1) (16 -1) (17 1)\n", | |
"(20) (15 1) (18 -2) (19 1)\n", | |
"(20) (3 1) (6 -2) (8 1)\n", | |
"(20) (6 1) (8 -1) (12 -1) (14 1)\n", | |
"(20) (11 -1) (12 1) (16 1) (17 -1)\n", | |
"(20) (2 1) (11 -1) (12 -1) (17 1)\n", | |
"(20) (8 1) (9 -1) (14 -1) (15 1)\n", | |
"(20) (5 1) (8 -1) (11 -1) (14 1)\n", | |
"(20) (2 1) (8 -2) (9 1) (11 -1) (14 1)\n", | |
"(20) (11 -1) (13 1) (14 1) (15 -1)\n", | |
"(20) (9 1) (11 -1) (14 1) (15 -2) (16 1)\n", | |
"(20) (9 1) (13 -1) (15 -1) (16 1)\n", | |
"(20) (7 1) (9 -1) (13 -1) (15 1)\n", | |
"(20) (11 -1) (13 1) (14 1) (15 -1)\n", | |
"(20) (7 -1) (9 1) (10 1) (13 -1)\n", | |
"(20) (5 1) (7 -1) (11 -1) (13 1)\n", | |
"(20) (5 1) (7 -1) (11 -1) (13 1)\n", | |
"(20) (1 -1) (4 1) (5 1) (7 -1)\n", | |
"(20) (5 -1) (7 1) (8 1) (9 -1)\n", | |
"(20) (2 1) (5 -1) (8 -1) (9 1)\n", | |
"(20) (5 1) (7 -2) (9 1) (10 1) (11 -1)\n", | |
"(20) (5 1) (8 -1) (11 -1) (14 1)\n", | |
"(20) (2 1) (5 -2) (8 1) (10 1) (11 -1)\n", | |
"(20) (11 1) (14 -2) (15 1) (16 -1) (17 1)\n", | |
"(20) (1 1) (5 -2) (7 1) (10 -1) (11 1)\n", | |
"(20) (2 1) (5 -2) (7 1)\n", | |
"(20) (2 1) (5 -2) (7 1)\n", | |
"(20) (2 -1) (8 1) (11 1) (12 1) (14 -2)\n", | |
"(20) (2 -1) (8 1) (11 1) (12 1) (14 -2)\n", | |
"(20) (2 -1) (8 1) (11 1) (12 1) (14 -2)\n", | |
"(20) (1 1) (2 -1) (10 -1) (11 1)\n", | |
"\n", | |
"\n", | |
"EQUATIONS\n", | |
"\n", | |
"\n", | |
"CONE_AMBIENT_DIM\n", | |
"20\n" | |
] | |
}, | |
"execution_count": 42, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"scΔ = fan.secondary_cone(Δ)" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"As the coefficients of our tropical polynomial we pick an interior point in the sceondary cone" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 43, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"pm::Vector<pm::Rational>\n", | |
"0 -23/26 -151/104 0 -1/20 -441/520 0 -11/260 3/26 207/260 -189/260 -613/520 -9/52 -1/260 0 267/260 21/65 211/260 122/65 719/260" | |
] | |
}, | |
"execution_count": 43, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"coefficients = scΔ.REL_INT_POINT" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"And we need to homogenize the monomials" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 44, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"20×4 Array{pm_Integer,2}:\n", | |
" 3 0 0 0\n", | |
" 2 0 0 1\n", | |
" 1 0 0 2\n", | |
" 0 0 0 3\n", | |
" 2 0 1 0\n", | |
" 1 0 1 1\n", | |
" 0 0 1 2\n", | |
" 1 0 2 0\n", | |
" 0 0 2 1\n", | |
" 0 0 3 0\n", | |
" 2 1 0 0\n", | |
" 1 1 0 1\n", | |
" 0 1 0 2\n", | |
" 1 1 1 0\n", | |
" 0 1 1 1\n", | |
" 0 1 2 0\n", | |
" 1 2 0 0\n", | |
" 0 2 0 1\n", | |
" 0 2 1 0\n", | |
" 0 3 0 0" | |
] | |
}, | |
"execution_count": 44, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"monomials = copy(lattice_points)\n", | |
"for i in 1:size(lattice_points, 1)\n", | |
" monomials[i] = 3 - sum(monomials[i, 2:4])\n", | |
"end\n", | |
"monomials" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Now we can compute the tropical hypersurface" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 45, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/plain": [ | |
"type: Hypersurface<Min>\n", | |
"\n", | |
"MONOMIALS\n", | |
"3 0 0 0\n", | |
"2 0 0 1\n", | |
"1 0 0 2\n", | |
"0 0 0 3\n", | |
"2 0 1 0\n", | |
"1 0 1 1\n", | |
"0 0 1 2\n", | |
"1 0 2 0\n", | |
"0 0 2 1\n", | |
"0 0 3 0\n", | |
"2 1 0 0\n", | |
"1 1 0 1\n", | |
"0 1 0 2\n", | |
"1 1 1 0\n", | |
"0 1 1 1\n", | |
"0 1 2 0\n", | |
"1 2 0 0\n", | |
"0 2 0 1\n", | |
"0 2 1 0\n", | |
"0 3 0 0\n", | |
"\n", | |
"\n", | |
"COEFFICIENTS\n", | |
"0 -23/26 -151/104 0 -1/20 -441/520 0 -11/260 3/26 207/260 -189/260 -613/520 -9/52 -1/260 0 267/260 21/65 211/260 122/65 719/260\n" | |
] | |
}, | |
"execution_count": 45, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"V = perlobj(\"tropical::Hypersurface<Min>\", MONOMIALS=monomials, COEFFICIENTS=coefficients)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": null, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [], | |
"source": [ | |
"V.POLYNOMIAL" | |
] | |
}, | |
{ | |
"cell_type": "markdown", | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"source": [ | |
"Using A-Tint in polymake we can compute all lines on the cubic" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 46, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "fragment" | |
} | |
}, | |
"outputs": [ | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"┌ Warning: The return value contains pm::Polynomial<pm::TropicalNumber<pm::Min, pm::Rational>, int> which has not been wrapped yet\n", | |
"└ @ Polymake /Users/sascha/coding/Polymake/src/functions.jl:62\n", | |
"polymake: used package atint\n", | |
" a-tint is an extension for tropical intersection theory.\n", | |
" (C) 2011 - 2015 Simon Hampe, [email protected]\n", | |
" See also: https://github.com/simonhampe/atint \n", | |
"\n" | |
] | |
}, | |
{ | |
"data": { | |
"text/plain": [ | |
"pm_Array{pm_perl_Object} of size 27" | |
] | |
}, | |
"execution_count": 46, | |
"metadata": {}, | |
"output_type": "execute_result" | |
} | |
], | |
"source": [ | |
"lines = tropical.lines_in_cubic(V.POLYNOMIAL)\n", | |
"isolated = tropical.all_isolated(lines)" | |
] | |
}, | |
{ | |
"cell_type": "code", | |
"execution_count": 47, | |
"metadata": { | |
"slideshow": { | |
"slide_type": "subslide" | |
} | |
}, | |
"outputs": [ | |
{ | |
"data": { | |
"text/html": [ | |
"<!--\n", | |
"polymake for sascha\n", | |
"Fri Jan 25 12:00:01 2019\n", | |
"unnamed\n", | |
"-->\n", | |
"\n", | |
"\n", | |
"<html>\n", | |
" <head>\n", | |
" <title>unnamed</title>\n", | |
" <style>\n", | |
"/*\n", | |
"// COMMON_CODE_BLOCK_BEGIN\n", | |
"*/\n", | |
" html{overflow: scroll;}\n", | |
" body { font-family: Arial, Helvetica, sans-serif}\n", | |
" strong{font-size: 18px;}\n", | |
" canvas { z-index: 8; }\n", | |
" input[type='range'] {}\n", | |
" input[type='radio'] {margin-left:0;}\n", | |
" input[type='checkbox'] {margin-right:7px; margin-left: 0px; padding-left:0px;}\n", | |
" .group{padding-bottom: 40px;}\n", | |
" .settings * {z-index: 11; }\n", | |
" .settings{z-index: 10; margin-left: 30px; display: none; width: 14em; height: 90%; border: solid 1px silver; padding: 2px; overflow-y: scroll; background-color: white }\n", | |
" .indented{margin-left: 20px; margin-top: 15px; padding-bottom: 0px;} \n", | |
" .shownObjectsList{overflow: auto; max-width: 150px; max-height: 150px;}\n", | |
" .showSettingsButton{display: block; z-index: 12; position: absolute }\n", | |
" .hideSettingsButton{display: none; z-index: 12; position: absolute; opacity: 0.5}\n", | |
" .resetButton{margin-top: 20px;}\n", | |
" button{margin-left: 0;}\n", | |
" img{cursor: pointer;}\n", | |
" .suboption{padding-top: 30px;}\n", | |
" .transparency{display: none;}\n", | |
" .labelsCheckbox{margin-top: 10px;}\n", | |
"\n", | |
"\n", | |
" input[type=range] {\n", | |
" -webkit-appearance: none;\n", | |
" padding:0; \n", | |
" width:90%; \n", | |
" margin-left: auto;\n", | |
" margin-right: auto;\n", | |
" margin-top: 20px;\n", | |
" display: block;\t\n", | |
" }\n", | |
" input[type=range]:focus {\n", | |
" outline: none;\n", | |
" }\n", | |
" input[type=range]::-webkit-slider-runnable-track {\n", | |
" height: 4px;\n", | |
" cursor: pointer;\n", | |
" animate: 0.2s;\n", | |
" box-shadow: 0px 0px 0px #000000;\n", | |
" background: #E3E3E3;\n", | |
" border-radius: 0px;\n", | |
" border: 0px solid #000000;\n", | |
" }\n", | |
" input[type=range]::-webkit-slider-thumb {\n", | |
" box-shadow: 1px 1px 2px #B8B8B8;\n", | |
" border: 1px solid #ABABAB;\n", | |
" height: 13px;\n", | |
" width: 25px;\n", | |
" border-radius: 20px;\n", | |
" background: #E0E0E0;\n", | |
" cursor: pointer;\n", | |
" -webkit-appearance: none;\n", | |
" margin-top: -5px;\n", | |
" }\n", | |
" input[type=range]:focus::-webkit-slider-runnable-track {\n", | |
" background: #E3E3E3;\n", | |
" }\n", | |
" input[type=range]::-moz-range-track {\n", | |
" height: 4px;\n", | |
" cursor: pointer;\n", | |
" animate: 0.2s;\n", | |
" box-shadow: 0px 0px 0px #000000;\n", | |
" background: #E3E3E3;\n", | |
" border-radius: 0px;\n", | |
" border: 0px solid #000000;\n", | |
" }\n", | |
" input[type=range]::-moz-range-thumb {\n", | |
" box-shadow: 1px 1px 2px #B8B8B8;\n", | |
" border: 1px solid #ABABAB;\n", | |
" height: 13px;\n", | |
" width: 25px;\n", | |
" border-radius: 20px;\n", | |
" background: #E0E0E0;\n", | |
" cursor: pointer;\n", | |
" }\n", | |
" input[type=range]::-ms-track {\n", | |
" height: 4px;\n", | |
" cursor: pointer;\n", | |
" animate: 0.2s;\n", | |
" background: transparent;\n", | |
" border-color: transparent;\n", | |
" color: transparent;\n", | |
" }\n", | |
" input[type=range]::-ms-fill-lower {\n", | |
" background: #E3E3E3;\n", | |
" border: 0px solid #000000;\n", | |
" border-radius: 0px;\n", | |
" box-shadow: 0px 0px 0px #000000;\n", | |
" }\n", | |
" input[type=range]::-ms-fill-upper {\n", | |
" background: #E3E3E3;\n", | |
" border: 0px solid #000000;\n", | |
" border-radius: 0px;\n", | |
" box-shadow: 0px 0px 0px #000000;\n", | |
" }\n", | |
" input[type=range]::-ms-thumb {\n", | |
" box-shadow: 1px 1px 2px #B8B8B8;\n", | |
" border: 1px solid #ABABAB;\n", | |
" height: 13px;\n", | |
" width: 25px;\n", | |
" border-radius: 20px;\n", | |
" background: #E0E0E0;\n", | |
" cursor: pointer;\n", | |
" }\n", | |
" input[type=range]:focus::-ms-fill-lower {\n", | |
" background: #E3E3E3;\n", | |
" }\n", | |
" input[type=range]:focus::-ms-fill-upper {\n", | |
" background: #E3E3E3;\n", | |
" }\n", | |
"/*\n", | |
"// COMMON_CODE_BLOCK_END\n", | |
"*/\n", | |
"\t\t</style>\n", | |
" </head>\n", | |
"\n", | |
"<body>\n", | |
"\n", | |
"\t\t<div id='settings_0' class='settings'>\n", | |
"\t\t\t<div class=group id='explode_0'>\n", | |
"\t\t\t\t<strong>Explode</strong>\n", | |
"\t\t\t\t<input id='explodeRange_0' type='range' min=0 max=6 step=0.01 value=0>\n", | |
"\t\t\t\t<div class=indented><input id='explodeCheckbox_0' type='checkbox'>Automatic explosion</div>\n", | |
"\t\t\t\t<div class=suboption>Exploding speed</div>\n", | |
"\t\t\t\t<input id='explodingSpeedRange_0' type='range' min=0 max=0.5 step=0.001 value=0.05>\n", | |
"\t\t\t</div>\n", | |
"\n", | |
"\t\t\t\n", | |
"\t\t\t<div class=group id='transparency_0' class='transparency'>\n", | |
"\t\t\t\t<strong>Transparency</strong>\n", | |
"\t\t\t\t<input id='transparencyRange_0' type='range' min=0 max=1 step=0.01 value=0>\n", | |
"\t\t\t</div>\n", | |
"\t\t\t\n", | |
"\t\t\t<div class=group id='rotation_0'>\n", | |
"\t\t\t\t<strong>Rotation</strong>\n", | |
"\t\t\t\t<div class=indented>\n", | |
"\t\t\t\t\t<div><input type='checkbox' id='changeRotationX_0'> x-axis</div>\n", | |
"\t\t\t\t\t<div><input type='checkbox' id='changeRotationY_0'> y-axis</div>\n", | |
"\t\t\t\t\t<div><input type='checkbox' id='changeRotationZ_0'> z-axis</div>\n", | |
"\t\t\t\t\t<button id='resetButton_0' class='resetButton' >Reset</button>\n", | |
"\t\t\t\t</div>\n", | |
"\n", | |
"\t\t\t\t<div class=suboption>Rotation speed</div>\n", | |
"\t\t\t\t<input id='rotationSpeedRange_0' type='range' min=0 max=5 step=0.01 value=2>\n", | |
"\n", | |
"\t\t\t</div>\n", | |
"\n", | |
"\n", | |
"\t\t\t<div class=group id='display_0'>\n", | |
"\t\t\t\t<strong>Display</strong>\n", | |
"\t\t\t\t<div class=indented>\n", | |
"\t\t\t\t\t<div id='shownObjectsList_0' class='shownObjectsList'></div>\n", | |
"\t\t\t\t\t<div class='labelsCheckbox'><input type='checkbox' id='labelsCheckboxInput_0' checked>Labels</div>\n", | |
"\t\t\t\t</div>\n", | |
"\t\t\t</div>\n", | |
"\n", | |
"\n", | |
"\t\t\t<div class=group id='svg_0'>\n", | |
"\t\t\t\t<strong>SVG</strong>\n", | |
"\t\t\t\t<div class=indented>\n", | |
"\t\t\t\t\t<form>\n", | |
"\t\t\t\t\t\t<input type=\"radio\" name='screenshotMode' value='download' id='download_0' checked> Download<br>\n", | |
"\t\t\t\t\t\t<input type=\"radio\" name='screenshotMode' value='tab' id='tab_0' > New tab<br>\n", | |
"\t\t\t\t\t</form>\n", | |
"\t\t\t\t\t<button id='takeScreenshot_0'>Screenshot</button>\n", | |
"\t\t\t\t</div>\n", | |
"\t\t\t</div>\n", | |
"\n", | |
"\t\t</div>\t<!-- end of settings -->\n", | |
"\t\t<img id='hideSettingsButton_0' style=\"display: none\" class='hideSettingsButton' src='/kernelspecs/julia-1.0/close.svg' width=20px\">\n", | |
"\t\t<img id='showSettingsButton_0' class='showSettingsButton' src='/kernelspecs/julia-1.0/menu.svg' width=20px\">\n", | |
"<div id=\"model4648818478\"></div>\n", | |
"\n", | |
"<script>\n", | |
"requirejs.config({\n", | |
" paths: {\n", | |
" three: '/kernelspecs/julia-1.0/three',\n", | |
" Detector: '/kernelspecs/julia-1.0/Detector',\n", | |
" SVGRenderer: '/kernelspecs/julia-1.0/SVGRenderer',\n", | |
" CanvasRenderer: '/kernelspecs/julia-1.0/CanvasRenderer',\n", | |
" Projector: '/kernelspecs/julia-1.0/Projector',\n", | |
" TrackballControls: '/kernelspecs/julia-1.0/TrackballControls'\n", | |
" },\n", | |
" shim: {\n", | |
" 'three':\n", | |
" {\n", | |
" exports: 'THREE'\n", | |
" },\n", | |
" 'Detector':\n", | |
" {\n", | |
" deps: [ 'three' ],\n", | |
" exports: 'Detector'\n", | |
" },\n", | |
" 'SVGRenderer':\n", | |
" {\n", | |
" deps: [ 'three' ],\n", | |
" exports: 'THREE.SVGRenderer'\n", | |
" },\n", | |
" 'CanvasRenderer':\n", | |
" {\n", | |
" deps: [ 'three' ],\n", | |
" exports: 'THREE.CanvasRenderer'\n", | |
" },\n", | |
" 'Projector':\n", | |
" {\n", | |
" deps: [ 'three' ],\n", | |
" exports: 'THREE.Projector'\n", | |
" },\n", | |
" 'TrackballControls':\n", | |
" {\n", | |
" deps: [ 'three' ],\n", | |
" exports: 'THREE.TrackballControls'\n", | |
" }\n", | |
" }\n", | |
"});\n", | |
"require(['three'],function(THREE){\n", | |
" window.THREE = THREE;\n", | |
" require(['Detector','SVGRenderer','CanvasRenderer','Projector','TrackballControls'],function(Detector,SVGRenderer,CanvasRenderer,Projector,TrackballControls){\n", | |
" THREE.SVGRenderer = SVGRenderer;\n", | |
" THREE.CanvasRenderer = CanvasRenderer;\n", | |
" THREE.Projector = Projector;\n", | |
" THREE.TrackballControls = TrackballControls;\n", | |
"\n", | |
"// COMMON_CODE_BLOCK_BEGIN\n", | |
"\tvar foldable = false;\n", | |
" var container = document.getElementById( 'model4648818478' );\n", | |
" var renderer = Detector.webgl? new THREE.WebGLRenderer({antialias: true}): new THREE.CanvasRenderer({antialias: true});\n", | |
"\tvar svgRenderer = new THREE.SVGRenderer({antialias: true});\n", | |
" var box = document.getElementsByClassName( 'output_subarea' )[0];\n", | |
" var notebook = document.getElementById( 'notebook_panel' );\n", | |
"\n", | |
" var width = box.clientWidth - 25;\n", | |
" var height = notebook.clientHeight * 0.8;\n", | |
" renderer.setSize(width, height);\n", | |
" svgRenderer.setSize(width, height);\n", | |
" renderer.setClearColor(0xFFFFFF, 1);\n", | |
" svgRenderer.setClearColor(0xFFFFFF, 1);\n", | |
"\n", | |
" container.appendChild(renderer.domElement);\n", | |
"\n", | |
" var scene = new THREE.Scene();\n", | |
" var camera = new THREE.PerspectiveCamera(75, width/height, 0.1, 1000);\n", | |
"\n", | |
" var renderid;\n", | |
"\n", | |
" camera.position.set(0, 0, 5);\n", | |
" camera.lookAt(0, 0, 0);\n", | |
" camera.up.set(0, 1, 0);\n", | |
"\n", | |
" // class to allow move points together with labels and spheres\n", | |
" var PMPoint = function (x,y,z) {\n", | |
" this.vector = new THREE.Vector3(x,y,z);\n", | |
" this.sprite = null;\n", | |
" this.sphere = null;\n", | |
" }\n", | |
" PMPoint.prototype.makelabel = function(label) {\n", | |
" this.sprite = textSprite( label );\n", | |
" this.sprite.position.copy(this.vector);\n", | |
" }\n", | |
" PMPoint.prototype.makesphere = function(radius,material) {\n", | |
" this.sphere = new THREE.Mesh(new THREE.SphereGeometry(radius), material);\n", | |
" this.sphere.position.copy(this.vector);\n", | |
" }\n", | |
"\n", | |
" PMPoint.prototype.setX = function(x) {\n", | |
" this.vector.setX(x);\n", | |
" if (this.sprite) {\n", | |
" this.sprite.position.setX(x);\n", | |
" }\n", | |
" if (this.sphere) {\n", | |
" this.sphere.position.setX(x);\n", | |
" }\n", | |
" };\n", | |
" PMPoint.prototype.setY = function(y) {\n", | |
" this.vector.setY(y);\n", | |
" if (this.sprite) {\n", | |
" this.sprite.position.setY(y);\n", | |
" }\n", | |
" if (this.sphere) {\n", | |
" this.sphere.position.setY(y);\n", | |
" }\n", | |
" };\n", | |
" PMPoint.prototype.setZ = function(z) {\n", | |
" this.vector.setZ(z);\n", | |
" if (this.sprite) {\n", | |
" this.sprite.position.setZ(z);\n", | |
" }\n", | |
" if (this.sphere) {\n", | |
" this.sphere.position.setZ(z);\n", | |
" }\n", | |
" };\n", | |
" PMPoint.prototype.set = function(x,y,z) {\n", | |
" this.vector.set(x,y,z);\n", | |
" if (this.sprite) {\n", | |
" this.sprite.position.set(x,y,z);\n", | |
" }\n", | |
" if (this.sphere) {\n", | |
" this.sphere.position.set(x,y,z);\n", | |
" }\n", | |
" };\n", | |
" PMPoint.prototype.add = function(o) {\n", | |
" if (this.sprite) {\n", | |
" o.add(this.sprite);\n", | |
" }\n", | |
" if (this.sphere) {\n", | |
" o.add(this.sphere);\n", | |
" }\n", | |
" };\n", | |
"\n", | |
"\n", | |
" var controls = new THREE.TrackballControls(camera, container);\n", | |
"\tcontrols.zoomSpeed = 0.2;\n", | |
"\tcontrols.rotateSpeed = 4;\n", | |
"\n", | |
" var all_objects = [];\n", | |
" var centroids = [];\n", | |
" // select the target node\n", | |
" var target = document.querySelector('#model4648818478');\n", | |
"\n", | |
" // create an observer instance\n", | |
" var observer = new MutationObserver(function(mutations) {\n", | |
" mutations.forEach(function(mutation) {\n", | |
" if (mutation.removedNodes && mutation.removedNodes.length > 0) {\n", | |
" cancelAnimationFrame(renderId);\n", | |
" observer.disconnect();\n", | |
" console.log(\"cancelled frame \"+renderId);\n", | |
" }\n", | |
" });\n", | |
" });\n", | |
"\n", | |
" // configuration of the observer:\n", | |
" var config = { childList: true, characterData: true }\n", | |
"\n", | |
" // pass in the target node, as well as the observer options\n", | |
" while (target) {\n", | |
" if (target.className==\"output\") {\n", | |
" observer.observe(target, config);\n", | |
" break;\n", | |
" }\n", | |
" target = target.parentNode;\n", | |
" }\n", | |
"\n", | |
"// COMMON_CODE_BLOCK_END\n", | |
"\n", | |
" var objectnames = [\"unnamed__1\",\"unnamed__2\",\"unnamed__3\",\"unnamed__4\",\"unnamed__5\",\"unnamed__6\",\"unnamed__7\",\"unnamed__8\",\"unnamed__9\",\"unnamed__10\",\"unnamed__11\",\"unnamed__12\",\"unnamed__13\",\"unnamed__14\",\"unnamed__15\",\"unnamed__16\",\"unnamed__17\",\"unnamed__18\",\"unnamed__19\",\"unnamed__20\",\"unnamed__21\",\"unnamed__22\",\"unnamed__23\",\"unnamed__24\",\"unnamed__25\",\"unnamed__26\",\"unnamed__27\",\"unnamed__28\",\"unnamed__29\",\"unnamed__30\",\"unnamed__31\",\"unnamed__32\",\"unnamed__33\",\"unnamed__34\",\"unnamed__35\",\"unnamed__36\",\"unnamed__37\",\"unnamed__38\",\"unnamed__39\",\"unnamed__40\",\"unnamed__41\",\"unnamed__42\",\"unnamed__43\",\"unnamed__44\",\"unnamed__45\",\"unnamed__46\",\"unnamed__47\",\"unnamed__48\",\"unnamed__49\",\"unnamed__50\",\"unnamed__51\",\"unnamed__52\",\"unnamed__53\",\"unnamed__54\",\"unnamed__55\",\"unnamed__56\",\"unnamed__57\",\"unnamed__58\",\"unnamed__59\",\"unnamed__60\",\"unnamed__61\",\"unnamed__62\",\"unnamed__63\",\"unnamed__64\",\"unnamed__65\",\"unnamed__66\",\"unnamed__67\",\"unnamed__68\",\"unnamed__69\",\"unnamed__70\",\"unnamed__71\",\"unnamed__72\",\"unnamed__73\",\"unnamed__74\",\"unnamed__75\",\"unnamed__76\",\"unnamed__77\",\"unnamed__78\",\"unnamed__79\",\"unnamed__80\",\"unnamed__81\",\"unnamed__82\",\"unnamed__83\",\"unnamed__84\",\"unnamed__85\",\"unnamed__86\",\"unnamed__87\",\"unnamed__88\",\"unnamed__89\",\"unnamed__90\",\"unnamed__91\",\"unnamed__92\",\"unnamed__93\",\"unnamed__94\",\"unnamed__95\",\"unnamed__96\",\"unnamed__97\",\"unnamed__98\",\"unnamed__99\",\"unnamed__100\",\"unnamed__101\",\"unnamed__102\",\"unnamed__103\",\"unnamed__104\",\"unnamed__105\",\"unnamed__106\",\"unnamed__107\",\"unnamed__108\",\"unnamed__109\",\"unnamed__110\",\"unnamed__111\",\"unnamed__112\",\"unnamed__113\",\"unnamed__114\",\"unnamed__115\",\"unnamed__116\",\"unnamed__117\",\"unnamed__118\",\"unnamed__119\",\"unnamed__120\",\"unnamed__121\",\"unnamed__122\",\"unnamed__123\",\"unnamed__124\",\"unnamed__125\",\"unnamed__126\",\"unnamed__127\",\"unnamed__128\",\"unnamed__129\",\"unnamed__130\",\"unnamed__131\",\"unnamed__132\",\"unnamed__133\",\"unnamed__134\",\"unnamed__135\",\"unnamed__136\",\"unnamed__137\",\"unnamed__138\",\"unnamed__139\",\"unnamed__140\",\"unnamed__141\",\"unnamed__142\",\"unnamed__143\",\"unnamed__144\",\"unnamed__145\",\"unnamed__146\",\"unnamed__147\",\"unnamed__148\",\"unnamed__149\",\"unnamed__150\",\"unnamed__151\",\"unnamed__152\",\"unnamed__153\",\"unnamed__154\",\"unnamed__155\",\"unnamed__156\",\"unnamed__157\",\"unnamed__158\",\"unnamed__159\",\"unnamed__160\",\"unnamed__161\",\"unnamed__162\",\"unnamed__163\",\"unnamed__164\",\"unnamed__165\",\"unnamed__166\",\"unnamed__167\",\"unnamed__168\",\"unnamed__169\",\"unnamed__170\",\"unnamed__171\",\"unnamed__172\",\"unnamed__173\",\"unnamed__174\",\"unnamed__175\",\"unnamed__176\",\"unnamed__177\",\"unnamed__178\",\"unnamed__179\",\"unnamed__180\",\"unnamed__181\",\"unnamed__182\",\"unnamed__183\",\"unnamed__184\",\"unnamed__185\",\"unnamed__186\",\"unnamed__187\",\"unnamed__188\",\"unnamed__189\",\"unnamed__190\",\"unnamed__191\",\"unnamed__192\",\"unnamed__193\",\"unnamed__194\",\"unnamed__195\",\"unnamed__196\",\"unnamed__197\",\"unnamed__198\",\"unnamed__199\"];\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(1.72692, 1.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 1.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 0.884615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.0365385, 0.567308));\n", | |
" allpoints.push(new PMPoint(1.72692, 1.05, 0.567308));\n", | |
" allpoints.push(new PMPoint(0.409615, 1.05, 0.567308));\n", | |
" allpoints.push(new PMPoint(0.409615, -0.0365385, 0.567308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(1.72692, 1.05, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, 1.05, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.45192));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, 0.05, 1.88462));\n", | |
" allpoints.push(new PMPoint(1.72692, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(1.72692, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 0.826923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.0365385, 0.567308));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(0.611538, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(0.409615, -0.0365385, 0.567308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.0365385, 0.567308));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(0.178846, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.409615, -0.0365385, 0.567308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(1.72692, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.33654));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -2.45192, -2.45192));\n", | |
" allpoints.push(new PMPoint(1.72692, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-2.27885, -2.45192, -2.45192));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(0.611538, -0.0365385, 0.769231));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.00769231, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 0.826923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, -0.0326923));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(0.611538, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.0326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 0, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(1.72692, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.359615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(4, 3, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 0, 5, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.282692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(1.72692, -2.55385, -2.43846));\n", | |
" allpoints.push(new PMPoint(-2.38077, -2.55385, -2.43846));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.33654));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, -0.0326923));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.0326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, 1.88462));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, -0.0326923));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.0326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(3, 2, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 0, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 1, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -2.55385, -1.87308));\n", | |
" allpoints.push(new PMPoint(1.72692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -1.87308));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.282692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 1, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.726923, 1.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.726923, 1.05, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.611538, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(0.726923, 1.05, 0.884615));\n", | |
" allpoints.push(new PMPoint(0.409615, 1.05, 0.567308));\n", | |
" allpoints.push(new PMPoint(0.409615, -0.0365385, 0.567308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 3, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 4, 5, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 5, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.409615, -0.0365385, 0.567308));\n", | |
" allpoints.push(new PMPoint(0.409615, 1.05, 0.567308));\n", | |
" allpoints.push(new PMPoint(0.178846, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.178846, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.726923, 0.05, 0.884615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 3, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.611538, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.178846, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.409615, -0.0365385, 0.567308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.611538, -0.0365385, 0.769231));\n", | |
" allpoints.push(new PMPoint(0.669231, -0.00769231, 0.826923));\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(4, 1, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 3, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 0, 5, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.178846, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(-1.27885, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(0.178846, 1.05, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 0, 5, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.178846, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.0326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.0326923));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.359615));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.0326923));\n", | |
" allpoints.push(new PMPoint(-0.632692, -0.963462, -0.282692));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 0.144231));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(4, 3, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 0, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 2, 5, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.178846, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.178846, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(4, 2, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 1, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 3, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 0, 5, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, 1.05, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(3, 2, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 0, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 1, 5, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 5, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.27885, 1.05, -2.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, 1.05, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-2.27885, -2.45192, -2.45192));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 3, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.27885, -2.45192, -2.45192));\n", | |
" allpoints.push(new PMPoint(-2.38077, -2.55385, -2.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.45192));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(-2.38077, -2.55385, -2.43846));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.45192, -1.33654));\n", | |
" allpoints.push(new PMPoint(-2.38077, -2.55385, -2.43846));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.27885, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 1, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-0.761538, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.876923, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 0.144231));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 1, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 3, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -1.87308));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 0, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 1, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -1.87308));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, -1.52692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.06346, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.151923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
" faces.vertices.push(allpoints[6].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(4, 2, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 3, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 0, 6, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(4, 6, 5, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[6].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.27885, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(3, 1, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 2, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 0, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, 1.88462));\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 0.144231));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 4, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.151923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 1, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.26154, -1.03077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 0.144231));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 1, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.488462));\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.52692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 2, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, 1.05, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, 1.05, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.05, 1.05, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 3, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 5, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 5, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.488462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.35769, -1.03077, 0.144231));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.151923));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 5, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 4, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -0.488462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-3.43654, 1.05, -2.45192));\n", | |
" allpoints.push(new PMPoint(-3.43654, -2.55385, -2.45192));\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 3, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 4, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 0, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(3, 2, 1, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(3, 0, 4, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.488462));\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-3.40385, -2.55385, -1.48846));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, -0.488462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.488462));\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, 1.05, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, -0.488462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
" faces.vertices.push(allpoints[4].vector);\n", | |
" faces.vertices.push(allpoints[5].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 3, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 0, 5, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 5, 4, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 4, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[5].vector);\n", | |
" line.vertices.push(allpoints[4].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.40385, -2.55385, 1.88462));\n", | |
" allpoints.push(new PMPoint(-3.40385, -2.55385, -1.48846));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 3, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, 1.88462));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(2, 1, 0, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(2, 0, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.44231, -2.55385, -1.48846));\n", | |
" allpoints.push(new PMPoint(-3.40385, -2.55385, -1.48846));\n", | |
" allpoints.push(new PMPoint(-2.40385, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, -0.488462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 3, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.44231, 1.05, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, 1.88462));\n", | |
" allpoints.push(new PMPoint(-2.44231, 1.05, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(1, 0, 3, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(1, 3, 2, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.44231, -2.55385, -1.48846));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, 1.05, -0.488462));\n", | |
" allpoints.push(new PMPoint(-3.44231, 1.05, -1.48846));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 1, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 3, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.44231, -2.55385, 1.88462));\n", | |
" allpoints.push(new PMPoint(-3.44231, -2.55385, -1.48846));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, -0.488462));\n", | |
" allpoints.push(new PMPoint(-2.44231, -1.55385, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" var faces = new THREE.Geometry();\n", | |
"\n", | |
" <!-- VERTICES -->\n", | |
" faces.vertices.push(allpoints[0].vector);\n", | |
" faces.vertices.push(allpoints[1].vector);\n", | |
" faces.vertices.push(allpoints[2].vector);\n", | |
" faces.vertices.push(allpoints[3].vector);\n", | |
"\n", | |
" centroids.push(computeCentroid(faces));\n", | |
"\n", | |
" <!-- Facet style -->\n", | |
" var faces_material = new THREE.MeshBasicMaterial ( {color: 0x77EC9E, transparent: true, opacity: 0.3, side: THREE.DoubleSide , depthWrite: false, depthTest: false, } );\n", | |
"\n", | |
" faces_material.side = THREE.DoubleSide;\n", | |
" faces_material.transparent = true;\n", | |
"\n", | |
" <!-- FACETS --> \n", | |
" faces.faces.push(new THREE.Face3(0, 3, 2, undefined, undefined, 0));\n", | |
" faces.faces.push(new THREE.Face3(0, 2, 1, undefined, undefined, 0));\n", | |
"\n", | |
"\n", | |
" faces.computeFaceNormals();\n", | |
" faces.computeVertexNormals();\n", | |
"\n", | |
" var object = new THREE.Mesh(faces, faces_material);\n", | |
" obj.add(object);\n", | |
"\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x000000, linewidth: 1.5, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES --> \n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" line.vertices.push(allpoints[3].vector);\n", | |
" line.vertices.push(allpoints[2].vector);\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7DB662, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.81346, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7DB662, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7DB662, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.65385, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7DB662, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7DB662, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA2D86B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.56923, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA2D86B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA2D86B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA2D86B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA2D86B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.742308, 0.432692));\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC87AB1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, -1.37885));\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC87AB1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC87AB1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.06923, 1.05, 0.432692));\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.742308, 0.432692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC87AB1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.742308, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.06923, -0.742308, 0.432692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC87AB1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.834615));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x65359C, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -2.20962));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.834615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x65359C, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -0.834615));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.834615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x65359C, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x65359C, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x65359C, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.625, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x09FE8D, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.625, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x09FE8D, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.625, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.625, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x09FE8D, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x09FE8D, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x09FE8D, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.86923, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA93D5A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.24423, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.86923, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA93D5A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.86923, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.86923, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA93D5A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA93D5A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.65385, -1.17885, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xA93D5A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.91731, -1.17885, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x06A35B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.29231, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-1.91731, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x06A35B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.91731, 1.05, -1.00577));\n", | |
" allpoints.push(new PMPoint(-1.91731, -1.17885, -1.00577));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x06A35B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x06A35B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.40962, -1.17885, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x06A35B, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.723077, -0.838462, -0.45));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.234615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x3F3821, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.723077, -0.838462, -0.45));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -2.16538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x3F3821, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.723077, 1.05, -0.45));\n", | |
" allpoints.push(new PMPoint(-0.723077, -0.838462, -0.45));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x3F3821, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, -0.234615));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.234615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x3F3821, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.234615));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x3F3821, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 0.653846));\n", | |
" allpoints.push(new PMPoint(-0.0365385, -0.151923, 0.236538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xCFF7A5, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0365385, -0.151923, 0.236538));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -2.16538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xCFF7A5, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0365385, 1.05, 0.236538));\n", | |
" allpoints.push(new PMPoint(-0.0365385, -0.151923, 0.236538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xCFF7A5, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.151923, 0.653846));\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 0.653846));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xCFF7A5, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 0.653846));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xCFF7A5, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.25));\n", | |
" allpoints.push(new PMPoint(-0.238462, -0.353846, 0.0346154));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5E80B1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.238462, -0.353846, 0.0346154));\n", | |
" allpoints.push(new PMPoint(-2.43846, -2.55385, -2.16538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5E80B1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.238462, 1.05, 0.0346154));\n", | |
" allpoints.push(new PMPoint(-0.238462, -0.353846, 0.0346154));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5E80B1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.353846, 0.25));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.25));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5E80B1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.25));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5E80B1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.31346, -0.838462, 0.188462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC9CB6A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.02885, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-1.31346, -0.838462, 0.188462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC9CB6A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.31346, 1.05, 0.188462));\n", | |
" allpoints.push(new PMPoint(-1.31346, -0.838462, 0.188462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC9CB6A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC9CB6A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xC9CB6A, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.65, -0.838462, -0.148077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x528ECA, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.86346));\n", | |
" allpoints.push(new PMPoint(-1.65, -0.838462, -0.148077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x528ECA, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.65, 1.05, -0.148077));\n", | |
" allpoints.push(new PMPoint(-1.65, -0.838462, -0.148077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x528ECA, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x528ECA, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.838462, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x528ECA, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.353846, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x186131, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.86346));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.353846, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x186131, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.16538, 1.05, 0.336538));\n", | |
" allpoints.push(new PMPoint(-1.16538, -0.353846, 0.336538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x186131, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.353846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x186131, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.353846, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.353846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x186131, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.938462, -0.838462, -0.665385));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.234615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x93CAA6, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.65385, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-0.938462, -0.838462, -0.665385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x93CAA6, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.938462, 1.05, -0.665385));\n", | |
" allpoints.push(new PMPoint(-0.938462, -0.838462, -0.665385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x93CAA6, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.838462, -0.234615));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.234615));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x93CAA6, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.234615));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x93CAA6, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 0.653846));\n", | |
" allpoints.push(new PMPoint(-0.251923, -0.151923, 0.0211538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xDDD0C2, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.65385, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-0.251923, -0.151923, 0.0211538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xDDD0C2, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.251923, 1.05, 0.0211538));\n", | |
" allpoints.push(new PMPoint(-0.251923, -0.151923, 0.0211538));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xDDD0C2, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.151923, 0.653846));\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 0.653846));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xDDD0C2, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.380769, -0.151923, 0.653846));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xDDD0C2, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.25));\n", | |
" allpoints.push(new PMPoint(-0.453846, -0.353846, -0.180769));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1DEC3E, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.65385, -2.55385, -2.38077));\n", | |
" allpoints.push(new PMPoint(-0.453846, -0.353846, -0.180769));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1DEC3E, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.453846, 1.05, -0.180769));\n", | |
" allpoints.push(new PMPoint(-0.453846, -0.353846, -0.180769));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1DEC3E, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.353846, 0.25));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.25));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1DEC3E, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.25));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1DEC3E, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.226923, -0.228846, 0.576923));\n", | |
" allpoints.push(new PMPoint(0.101923, -0.228846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5B5116, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.101923, -0.228846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-2.22308, -2.55385, -1.87308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5B5116, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.101923, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(0.101923, -0.228846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5B5116, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.228846, 0.576923));\n", | |
" allpoints.push(new PMPoint(0.226923, -0.228846, 0.576923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5B5116, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.226923, -0.228846, 1.88462));\n", | |
" allpoints.push(new PMPoint(0.226923, -0.228846, 0.576923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5B5116, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.20577, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1E3B21, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -2.25962));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1E3B21, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -1.22115));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1E3B21, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.39423, -1.22115));\n", | |
" allpoints.push(new PMPoint(-2.20577, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1E3B21, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.20577, 1.05, -1.22115));\n", | |
" allpoints.push(new PMPoint(-2.20577, -1.39423, -1.22115));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x1E3B21, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xFB59EC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.82885));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xFB59EC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.790385));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xFB59EC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.17885, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xFB59EC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -0.790385));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.790385));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xFB59EC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5BD547, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.53654));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5BD547, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, -0.498077));\n", | |
" allpoints.push(new PMPoint(-2.32692, -1.51538, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5BD547, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -1.17885, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5BD547, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.99038, 1.05, -0.498077));\n", | |
" allpoints.push(new PMPoint(-1.99038, -1.17885, -0.498077));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x5BD547, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.382692, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xD74EC1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, -1.37885));\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xD74EC1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xD74EC1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.382692, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xD74EC1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.382692, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.382692, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xD74EC1, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.584615, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7EB2DD, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-2.78462, -2.55385, -1.37885));\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7EB2DD, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.953846, -0.723077, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7EB2DD, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.584615, -0.353846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7EB2DD, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.584615, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.584615, -0.353846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x7EB2DD, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.430769, -0.761538, -0.157692));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.157692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xF152CC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.157692));\n", | |
" allpoints.push(new PMPoint(-2.22308, -2.55385, -1.87308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xF152CC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, -0.157692));\n", | |
" allpoints.push(new PMPoint(-0.507692, -0.838462, 1.88462));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xF152CC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.761538, -0.157692));\n", | |
" allpoints.push(new PMPoint(-0.430769, -0.761538, -0.157692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xF152CC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.430769, 1.05, -0.157692));\n", | |
" allpoints.push(new PMPoint(-0.430769, -0.761538, -0.157692));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xF152CC, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.0538462, -0.276923, 0.326923));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xEB1A44, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.326923));\n", | |
" allpoints.push(new PMPoint(-2.22308, -2.55385, -1.87308));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xEB1A44, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 1.88462));\n", | |
" allpoints.push(new PMPoint(-0.0230769, -0.353846, 0.326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xEB1A44, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.276923, 0.326923));\n", | |
" allpoints.push(new PMPoint(0.0538462, -0.276923, 0.326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xEB1A44, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(0.0538462, 1.05, 0.326923));\n", | |
" allpoints.push(new PMPoint(0.0538462, -0.276923, 0.326923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0xEB1A44, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.626923, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x9B0C92, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.02885, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x9B0C92, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x9B0C92, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.626923, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x9B0C92, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.626923, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.626923, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x9B0C92, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.828846, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x865B86, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.02885, -2.55385, -1.52692));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x865B86, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.575, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x865B86, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.353846, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.828846, -0.353846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x865B86, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.828846, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.828846, -0.353846, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x865B86, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.963462, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.238462, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x728431, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-3.36538, -2.55385, -1.86346));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.238462, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x728431, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-1.05, -0.238462, 1.88462));\n", | |
" allpoints.push(new PMPoint(-1.05, -0.238462, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x728431, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(1.72692, -0.151923, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.963462, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x728431, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
" var obj = new THREE.Object3D();\n", | |
" var allpoints = [];\n", | |
" allpoints.push(new PMPoint(-0.963462, 1.05, 0.451923));\n", | |
" allpoints.push(new PMPoint(-0.963462, -0.151923, 0.451923));\n", | |
"\n", | |
" for (index = 0; index < allpoints.length; ++index) {\n", | |
" allpoints[index].add(obj);\n", | |
" }\n", | |
" <!-- Edge style -->\n", | |
" var line_material = new THREE.LineBasicMaterial ( {color: 0x728431, linewidth: 2, } );\n", | |
"\n", | |
" line_material.side = THREE.DoubleSide;\n", | |
" line_material.transparent = true;\n", | |
"\n", | |
" <!-- EDGES -->\n", | |
" var line = new THREE.Geometry();\n", | |
" line.vertices.push(allpoints[1].vector);\n", | |
" line.vertices.push(allpoints[0].vector);\n", | |
" obj.add(new THREE.Line(line, line_material));\n", | |
"\n", | |
" scene.add(obj);\n", | |
" all_objects.push(obj);\n", | |
"\n", | |
"// COMMON_CODE_BLOCK_BEGIN\n", | |
"var xRotationEnabled = false;\n", | |
"var yRotationEnabled = false;\n", | |
"var zRotationEnabled = false;\n", | |
"var rotationSpeedFactor = 1;\n", | |
"var settingsShown = false;\n", | |
"var labelsShown = true;\n", | |
"var intervals = [];\n", | |
"var timeouts = [];\n", | |
"var explodingSpeed = 0.05;\n", | |
"var explodeScale = 0;\n", | |
"var XMLS = new XMLSerializer();\n", | |
"var svgElement;\n", | |
"var renderId;\n", | |
"\n", | |
"\tvar render = function () {\n", | |
"\n", | |
"\t\trenderId = requestAnimationFrame(render);\n", | |
"\n", | |
"//\t\tcomment in for automatic explosion\n", | |
"//\t\texplode(updateFactor());\n", | |
"\n", | |
"\t\tvar phi = 0.02 * rotationSpeedFactor;\n", | |
"\n", | |
"\t\tif (xRotationEnabled){\n", | |
"\t\t\tscene.rotation.x += phi;\n", | |
"\t\t}\n", | |
"\t\tif(yRotationEnabled){\n", | |
"\t\t\tscene.rotation.y += phi;\n", | |
"\t\t}\n", | |
"\t\tif(zRotationEnabled){\n", | |
"\t\t\tscene.rotation.z += phi;\n", | |
"\t\t}\n", | |
"\n", | |
"\t\tcontrols.update();\n", | |
"\t\trenderer.render(scene, camera);\n", | |
"\t};\n", | |
"\n", | |
"\trender();\n", | |
"\n", | |
"\tfunction computeCentroid(geom) {\n", | |
"\t\tcentroid = new THREE.Vector3();\n", | |
"\t\tgeom.vertices.forEach(function(v) {\n", | |
"\t\t\tcentroid.add(v);\t\t\t\n", | |
"\t\t});\n", | |
"\t\tcentroid.divideScalar(geom.vertices.length);\n", | |
"\t\treturn centroid;\n", | |
"\t}\n", | |
"\n", | |
"\tfunction changeTransparency(event){\n", | |
"\t\tvar opacity = 1-Number(event.currentTarget.value);\n", | |
"\t\tfor (var i=0; i<all_objects.length; i++){\n", | |
"\t\t\tfor (var j=0; j<all_objects[i].children.length; j++){\n", | |
"\t\t\t\tif (all_objects[i].children[j].material.type == \"MultiMaterial\") {\n", | |
"\t\t\t\t\tfor (var k=0; k<all_objects[i].children[j].material.materials.length; k++){\n", | |
"\t\t\t\t\t\tall_objects[i].children[j].material.materials[k].opacity = opacity;\n", | |
"\t\t\t\t\t\tall_objects[i].children[j].material.materials[k].depthWrite = opacity < 0.5 ? false : true;\n", | |
"\t\t\t\t\t\tall_objects[i].children[j].material.materials[k].depthTest = opacity < 0.5 ? false : true;\n", | |
"\t\t\t\t\t}\n", | |
"\t\t\t\t} else if (all_objects[i].children[j].material.transparent && \n", | |
"\t\t\t\t\t\t\t all_objects[i].children[j].material.type == \"MeshBasicMaterial\" &&\n", | |
"\t\t\t\t\t\t\t all_objects[i].children[j].geometry.type == \"Geometry\"){\n", | |
"\t\t\t\t\tall_objects[i].children[j].material.opacity = opacity;\n", | |
"\t\t\t\t\tall_objects[i].children[j].material.depthWrite = opacity < 0.5 ? false : true;\n", | |
"\t\t\t\t\tall_objects[i].children[j].material.depthTest = opacity < 0.5 ? false : true;\n", | |
"\t\t\t\t}\n", | |
"\t\t\t}\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\n", | |
"\tfunction changeRotationX(event){\n", | |
"\t\txRotationEnabled = event.currentTarget.checked;\n", | |
"\t}\t\n", | |
"\n", | |
"\tfunction changeRotationY(event){\n", | |
"\t\tyRotationEnabled = event.currentTarget.checked;\n", | |
"\t}\t\n", | |
"\n", | |
"\tfunction changeRotationZ(event){\n", | |
"\t\tzRotationEnabled = event.currentTarget.checked;\n", | |
"\t}\t\n", | |
"\n", | |
"\n", | |
"\tfunction changeRotationSpeedFactor(event){\n", | |
"\t\trotationSpeedFactor = Number(event.currentTarget.value);\n", | |
"\t}\n", | |
"\n", | |
"\tfunction resetScene(){\n", | |
"\t\tscene.rotation.set(0,0,0);\n", | |
"\t\tcamera.position.set(0,0,5);\n", | |
"\t\tcamera.up.set(0,1,0);\n", | |
"\t}\n", | |
"\n", | |
"\tfunction showSettings(event){\n", | |
"\t\tevent.currentTarget.style.display = 'none';\n", | |
"\t\tdocument.getElementById('settings_0').style.position = 'absolute';\n", | |
"\t\tdocument.getElementById('settings_0').style.display = 'block';\n", | |
"\t\tdocument.getElementById('showSettingsButton_0').style.display = 'none';\n", | |
"\t\tdocument.getElementById('hideSettingsButton_0').style.display = 'block';\n", | |
"\t\tsettingsShown = true;\n", | |
"\t}\n", | |
"\n", | |
"\tfunction hideSettings(event){\n", | |
"\t\tevent.currentTarget.style.display = 'none';\n", | |
"\t\tdocument.getElementById('settings_0').style.display = 'none';\n", | |
"\t\tdocument.getElementById('hideSettingsButton_0').style.display = 'none';\n", | |
"\t\tdocument.getElementById('showSettingsButton_0').style.display = 'block';\n", | |
"\t\tsettingsShown = false;\n", | |
"\t}\n", | |
"\n", | |
"\n", | |
"\n", | |
"\tvar pos = 150* Math.PI;\n", | |
"\n", | |
"\tfunction updateFactor() {\n", | |
"\t\tpos++;\n", | |
"\t\treturn Math.sin(.01*pos)+1;\n", | |
"\t}\n", | |
"\n", | |
"\tfunction makelabel(message, x, y, z, params) {\n", | |
"\t\tvar spritey = textSprite( message, params );\n", | |
"\t\tspritey.position.set(x, y, z);\n", | |
"\t\tobj.add(spritey);\n", | |
"\t}\n", | |
"\n", | |
"\tfunction textSprite(message, parameters)\n", | |
"\t{\n", | |
"\t\tif ( parameters === undefined ) parameters = {};\n", | |
"\n", | |
"\t\tvar fontface = \"Helvetica\";\n", | |
"\n", | |
"\t\tvar fontsize = parameters.hasOwnProperty(\"fontsize\") ? \n", | |
"\t\t\tparameters[\"fontsize\"] : 18;\n", | |
"\t\tfontsize = fontsize*10;\n", | |
"\n", | |
"\t\tvar canvas = document.createElement('canvas');\n", | |
"\t\tvar size = 1024;\n", | |
"\t\tcanvas.width = size;\n", | |
"\t\tcanvas.height = size;\n", | |
"\t\tvar context = canvas.getContext('2d');\n", | |
"\t\tcontext.font = fontsize + \"px \" + fontface;\n", | |
"\n", | |
"\t\t// text color\n", | |
"\t\tcontext.fillStyle = \"rgba(0, 0, 0, 1.0)\";\n", | |
"\n", | |
"\t\tcontext.fillText(message, size/2, size/2);\n", | |
"\n", | |
"\t\t// canvas contents will be used for a texture\n", | |
"\t\tvar texture = new THREE.Texture(canvas);\n", | |
"\t\ttexture.needsUpdate = true;\n", | |
"\n", | |
"\t\tvar spriteMaterial = new THREE.SpriteMaterial(\n", | |
"\t\t\t{map: texture, useScreenCoordinates: false});\n", | |
"\t\tvar sprite = new THREE.Sprite(spriteMaterial);\n", | |
"\t\treturn sprite;\n", | |
"\t}\n", | |
"\n", | |
"\tfunction takeSvgScreenshot(){\n", | |
"\t\tif (labelsShown){\n", | |
"\t\t\thideLabels();\n", | |
"\t\t}\n", | |
"\t\tsvgRenderer.render(scene,camera);\n", | |
"\t\tsvgElement = XMLS.serializeToString(svgRenderer.domElement);\n", | |
"\t\t\n", | |
"\t\tif (labelsShown){\n", | |
"\t\t\tdisplayLabels();\n", | |
"\t\t}\n", | |
"\n", | |
"\t\tif (document.getElementById('tab_0').checked){\n", | |
"\t\t\t//show in new tab\n", | |
"\t\t\tvar myWindow = window.open(\"\",\"\");\n", | |
"\t\t\tmyWindow.document.body.innerHTML = svgElement;\n", | |
"\t\t} else{\n", | |
"\t\t\t// download svg file \n", | |
"\t\t\tdownload(\"screenshot.svg\", svgElement);\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\t\t\n", | |
"\n", | |
"\tfunction showOrHideObject(event){\n", | |
"\t\tvar nr = Number(event.currentTarget.name);\n", | |
"\t\tall_objects[nr].visible = event.currentTarget.checked;\n", | |
"\t}\n", | |
"\n", | |
"\tfunction displayOrHideOptionsRecursive( obj ) {\n", | |
"\t\tfor (var j=0; j<obj.children.length; j++) {\n", | |
"\t\t\tvar child = obj.children[j];\n", | |
"\t\t\tif (child.material===undefined && child) {\n", | |
"\t\t\t\tdisplayOrHideOptionsRecursive( child );\n", | |
"\t\t\t} else {\n", | |
"\t\t\t\tif (child.material.type == \"MultiMaterial\") {\n", | |
"\t\t\t\t\tfor (var k=0; k<child.material.materials.length; k++) {\n", | |
"\t\t\t\t\t\tif (child.material.materials[k].transparent) {\n", | |
"\t\t\t\t\t\t\tdocument.getElementById('transparency_0').style.display = 'block';\n", | |
"\t\t\t\t\t\t\tdocument.getElementById('transparencyRange_0').value = 1 - \n", | |
"\t\t\t\t\t\t\t\tchild.material.materials[k].opacity;\n", | |
"\t\t\t\t\t\t\treturn;\n", | |
"\t\t\t\t\t\t}\n", | |
"\t\t\t\t\t}\n", | |
"\t\t\t\t} else if (\tchild.material.transparent && \n", | |
"\t\t\t\t\t\t\t\tchild.material.type == \"MeshBasicMaterial\" &&\n", | |
"\t\t\t\t\t\t\t\tchild.geometry.type == \"Geometry\"){\n", | |
"\t\t\t\t\tdocument.getElementById('transparency_0').style.display = 'block';\n", | |
"\t\t\t\t\treturn;\n", | |
"\t\t\t\t}\n", | |
"\t\t\t}\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\n", | |
"\tfunction displayOrHideOptions() {\n", | |
"\t\tfor (var i=0; i<all_objects.length; i++) {\n", | |
"\t\t\tvar obj = all_objects[i];\n", | |
"\t\t\tdisplayOrHideOptionsRecursive( obj );\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\n", | |
"\tdisplayOrHideOptions()\n", | |
"\n", | |
"\n", | |
"\n", | |
"\n", | |
"// ---------------------- EXPLOSION ------------------------------------------------\n", | |
"// ---------------------------------------------------------------------------------\n", | |
"\n", | |
"\tfunction explode(factor) {\n", | |
"\t\tvar obj, c;\n", | |
"\t\tvar c0 = centroids[0];\n", | |
"\t\tfor (var i = 0; i<centroids.length; ++i) {\n", | |
"\t\t\tc = centroids[i];\n", | |
"\t\t\tobj = all_objects[all_objects.length - centroids.length + i];\n", | |
"\t\t\tobj.position.set(c.x*factor, c.y*factor, c.z*factor);\n", | |
"\t\t}\t\n", | |
"\t}\n", | |
"\n", | |
"\tfunction triggerExplode(event){\n", | |
"\t\texplodeScale = Number(event.currentTarget.value);\n", | |
"\t\texplode(explodeScale);\n", | |
"\t}\n", | |
"\n", | |
"\tfunction setExplodingSpeed(event){\n", | |
"\t\texplodingSpeed = Number(event.currentTarget.value);\n", | |
"\t}\n", | |
"\n", | |
"\tfunction triggerAutomaticExplode(event){\n", | |
"\t\tif (event.currentTarget.checked){\n", | |
"\t\t\tstartExploding();\n", | |
"\t\t} else {\n", | |
"\t\t\tclearIntervals();\n", | |
"\t\t}\t\n", | |
"\t}\n", | |
"\n", | |
"\tfunction startExploding(){\n", | |
"\t\tintervals.push(setInterval(explodingInterval, 25));\n", | |
"\t}\n", | |
"\n", | |
"\n", | |
"\tfunction explodingInterval(){\n", | |
"\t\texplodeScale += explodingSpeed;\n", | |
"\t\tif (explodeScale <= 6){ \n", | |
"\t\t\texplode(explodeScale);\n", | |
"\t\t}\n", | |
"\t\telse{\n", | |
"\t\t\texplode(6);\n", | |
"\t\t\texplodeScale = 6;\n", | |
"\t\t\tclearIntervals();\n", | |
"\t\t\ttimeouts.push(setTimeout(startUnexploding, 3000));\n", | |
"\t\t}\n", | |
"\t\tdocument.getElementById('explodeRange_0').value = explodeScale;\n", | |
"\t}\n", | |
"\n", | |
"\n", | |
"\tfunction startUnexploding(){\n", | |
"\t\tintervals.push(setInterval(unexplodingInterval, 25));\n", | |
"\t}\n", | |
"\n", | |
"\tfunction unexplodingInterval(){\n", | |
"\t\texplodeScale -= explodingSpeed;\n", | |
"\t\tif (explodeScale >= 0){\t\n", | |
"\t\t\texplode(explodeScale);\n", | |
"\t\t}\n", | |
"\t\telse {\n", | |
"\t\t\texplode(0);\n", | |
"\t\t\texplodeScale = 0;\n", | |
"\t\t\tclearIntervals();\n", | |
"\t\t\ttimeouts.push(setTimeout(startExploding, 3000));\n", | |
"\t\t}\n", | |
"\t\tdocument.getElementById('explodeRange_0').value = explodeScale;\n", | |
"\t}\n", | |
"\n", | |
"\tfunction clearIntervals(){\n", | |
"\t\tintervals.forEach(function(interval){\n", | |
"\t\t\tclearInterval(interval);\n", | |
"\t\t});\n", | |
"\t\tintervals = [];\n", | |
"\t\ttimeouts.forEach(function(timeout){\n", | |
"\t\t\tclearTimeout(timeout);\n", | |
"\t\t});\n", | |
"\t\ttimeouts = [];\n", | |
"\t}\n", | |
"\n", | |
"\t\t\t\n", | |
"\n", | |
"\t// append checkboxes for displaying or hiding objects\n", | |
"\tvar shownObjectsList = document.getElementById('shownObjectsList_0');\n", | |
"\tfor (var i=0; i<all_objects.length; i++){\n", | |
"\t\tvar objNode = document.createElement('span');\n", | |
"\t\tobjNode.innerHTML = objectnames[i] + '<br>';\n", | |
"\t\tvar checkbox = document.createElement('input');\n", | |
"\t\tcheckbox.type = 'checkbox';\n", | |
"\t\tcheckbox.checked = true;\n", | |
"\t\tcheckbox.name = String(i);\n", | |
"\t\tcheckbox.onchange = showOrHideObject;\n", | |
"\t\tshownObjectsList.appendChild(checkbox);\n", | |
"\t\tshownObjectsList.appendChild(objNode);\n", | |
"\t}\n", | |
"\n", | |
"\tfunction displayLabels(){\n", | |
"\t\tfor (var i=0; i<all_objects.length; i++){\n", | |
"\t\t\tfor (var j=0; j<all_objects[i].children.length; j++){\n", | |
"\t\t\t\tvar child = all_objects[i].children[j];\n", | |
"\t\t\t\tif (child.type == 'Sprite'){\n", | |
"\t\t\t\t\tchild.visible = true;\n", | |
"\t\t\t\t}\n", | |
"\t\t\t}\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\n", | |
"\tfunction hideLabels(){\n", | |
"\t\tfor (var i=0; i<all_objects.length; i++){\n", | |
"\t\t\tfor (var j=0; j<all_objects[i].children.length; j++){\n", | |
"\t\t\t\tvar child = all_objects[i].children[j];\n", | |
"\t\t\t\tif (child.type == 'Sprite'){\n", | |
"\t\t\t\t\tchild.visible = false;\n", | |
"\t\t\t\t}\n", | |
"\t\t\t}\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\n", | |
"\tfunction displayOrHideLabels(event){\n", | |
"\t\tif (event.currentTarget.checked){\n", | |
"\t\t\tdisplayLabels();\n", | |
"\t\t\tlabelsShown = true;\n", | |
"\t\t} else {\n", | |
"\t\t\thideLabels();\n", | |
"\t\t\tlabelsShown = false;\n", | |
"\t\t}\n", | |
"\t}\n", | |
"\n", | |
"\tfunction download(filename, text) {\n", | |
"\t var element = document.createElement('a');\n", | |
"\t element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));\n", | |
"\t element.setAttribute('download', filename);\n", | |
"\n", | |
"\t element.style.display = 'none';\n", | |
"\t document.body.appendChild(element);\n", | |
"\n", | |
"\t element.click();\n", | |
"\n", | |
"\t document.body.removeChild(element);\n", | |
"\t}\n", | |
"\n", | |
"var tempobj;\n", | |
"tempobj = document.getElementById('explodeRange_0');\n", | |
"if (tempobj) {\n", | |
" tempobj.oninput = triggerExplode;\n", | |
" document.getElementById('explodeCheckbox_0').onchange = triggerAutomaticExplode;\n", | |
" document.getElementById('explodingSpeedRange_0').oninput = setExplodingSpeed;\n", | |
"}\n", | |
"tempobj = document.getElementById('foldRange_0');\n", | |
"if (tempobj) {\n", | |
" tempobj.oninput = fold;\n", | |
"}\n", | |
"document.getElementById('transparencyRange_0').oninput = changeTransparency;\n", | |
"document.getElementById('changeRotationX_0').onchange = changeRotationX;\n", | |
"document.getElementById('changeRotationY_0').onchange = changeRotationY;\n", | |
"document.getElementById('changeRotationZ_0').onchange = changeRotationZ;\n", | |
"document.getElementById('resetButton_0').onclick = resetScene;\n", | |
"document.getElementById('rotationSpeedRange_0').oninput = changeRotationSpeedFactor;\n", | |
"document.getElementById('labelsCheckboxInput_0').onchange = displayOrHideLabels;\n", | |
"document.getElementById('takeScreenshot_0').onclick = takeSvgScreenshot;\n", | |
"document.getElementById('showSettingsButton_0').onclick = showSettings;\n", | |
"document.getElementById('hideSettingsButton_0').onclick = hideSettings;\n", | |
"\n", | |
"\t\n", | |
"\n", | |
"// ------------------ SHORTCUTS --------------------------------------------\n", | |
"// -------------------------------------------------------------------------\n", | |
"\n", | |
"/**\n", | |
" * http://www.openjs.com/scripts/events/keyboard_shortcuts/\n", | |
" * Version : 2.01.B\n", | |
" * By Binny V A\n", | |
" * License : BSD\n", | |
" */\n", | |
"shortcut = {\n", | |
"\t'all_shortcuts':{},//All the shortcuts are stored in this array\n", | |
"\t'add': function(shortcut_combination,callback,opt) {\n", | |
"\t\t//Provide a set of default options\n", | |
"\t\tvar default_options = {\n", | |
"\t\t\t'type':'keydown',\n", | |
"\t\t\t'propagate':false,\n", | |
"\t\t\t'disable_in_input':false,\n", | |
"\t\t\t'target':document,\n", | |
"\t\t\t'keycode':false\n", | |
"\t\t}\n", | |
"\t\tif(!opt) opt = default_options;\n", | |
"\t\telse {\n", | |
"\t\t\tfor(var dfo in default_options) {\n", | |
"\t\t\t\tif(typeof opt[dfo] == 'undefined') opt[dfo] = default_options[dfo];\n", | |
"\t\t\t}\n", | |
"\t\t}\n", | |
"\n", | |
"\t\tvar ele = opt.target;\n", | |
"\t\tif(typeof opt.target == 'string') ele = document.getElementById(opt.target);\n", | |
"\t\tvar ths = this;\n", | |
"\t\tshortcut_combination = shortcut_combination.toLowerCase();\n", | |
"\n", | |
"\t\t//The function to be called at keypress\n", | |
"\t\tvar func = function(e) {\n", | |
"\t\t\te = e || window.event;\n", | |
"\t\t\t\n", | |
"\t\t\tif(opt['disable_in_input']) { //Don't enable shortcut keys in Input, Textarea fields\n", | |
"\t\t\t\tvar element;\n", | |
"\t\t\t\tif(e.target) element=e.target;\n", | |
"\t\t\t\telse if(e.srcElement) element=e.srcElement;\n", | |
"\t\t\t\tif(element.nodeType==3) element=element.parentNode;\n", | |
"\n", | |
"\t\t\t\tif(element.tagName == 'INPUT' || element.tagName == 'TEXTAREA') return;\n", | |
"\t\t\t}\n", | |
"\t\n", | |
"\t\t\t//Find Which key is pressed\n", | |
"\t\t\tif (e.keyCode) code = e.keyCode;\n", | |
"\t\t\telse if (e.which) code = e.which;\n", | |
"\t\t\tvar character = String.fromCharCode(code).toLowerCase();\n", | |
"\t\t\t\n", | |
"\t\t\tif(code == 188) character=\",\"; //If the user presses , when the type is onkeydown\n", | |
"\t\t\tif(code == 190) character=\".\"; //If the user presses , when the type is onkeydown\n", | |
"\n", | |
"\t\t\tvar keys = shortcut_combination.split(\"+\");\n", | |
"\t\t\t//Key Pressed - counts the number of valid keypresses - if it is same as the number of keys, the shortcut function is invoked\n", | |
"\t\t\tvar kp = 0;\n", | |
"\t\t\t\n", | |
"\t\t\t//Work around for stupid Shift key bug created by using lowercase - as a result the shift+num combination was broken\n", | |
"\t\t\tvar shift_nums = {\n", | |
"\t\t\t\t\"`\":\"~\",\n", | |
"\t\t\t\t\"1\":\"!\",\n", | |
"\t\t\t\t\"2\":\"@\",\n", | |
"\t\t\t\t\"3\":\"#\",\n", | |
"\t\t\t\t\"4\":\"$\",\n", | |
"\t\t\t\t\"5\":\"%\",\n", | |
"\t\t\t\t\"6\":\"^\",\n", | |
"\t\t\t\t\"7\":\"&\",\n", | |
"\t\t\t\t\"8\":\"*\",\n", | |
"\t\t\t\t\"9\":\"(\",\n", | |
"\t\t\t\t\"0\":\")\",\n", | |
"\t\t\t\t\"-\":\"_\",\n", | |
"\t\t\t\t\"=\":\"+\",\n", | |
"\t\t\t\t\";\":\":\",\n", | |
"\t\t\t\t\"'\":\"\\\"\",\n", | |
"\t\t\t\t\",\":\"<\",\n", | |
"\t\t\t\t\".\":\">\",\n", | |
"\t\t\t\t\"/\":\"?\",\n", | |
"\t\t\t\t\"\\\\\":\"|\"\n", | |
"\t\t\t}\n", | |
"\t\t\t//Special Keys - and their codes\n", | |
"\t\t\tvar special_keys = {\n", | |
"\t\t\t\t'esc':27,\n", | |
"\t\t\t\t'escape':27,\n", | |
"\t\t\t\t'tab':9,\n", | |
"\t\t\t\t'space':32,\n", | |
"\t\t\t\t'return':13,\n", | |
"\t\t\t\t'enter':13,\n", | |
"\t\t\t\t'backspace':8,\n", | |
"\t\n", | |
"\t\t\t\t'scrolllock':145,\n", | |
"\t\t\t\t'scroll_lock':145,\n", | |
"\t\t\t\t'scroll':145,\n", | |
"\t\t\t\t'capslock':20,\n", | |
"\t\t\t\t'caps_lock':20,\n", | |
"\t\t\t\t'caps':20,\n", | |
"\t\t\t\t'numlock':144,\n", | |
"\t\t\t\t'num_lock':144,\n", | |
"\t\t\t\t'num':144,\n", | |
"\t\t\t\t\n", | |
"\t\t\t\t'pause':19,\n", | |
"\t\t\t\t'break':19,\n", | |
"\t\t\t\t\n", | |
"\t\t\t\t'insert':45,\n", | |
"\t\t\t\t'home':36,\n", | |
"\t\t\t\t'delete':46,\n", | |
"\t\t\t\t'end':35,\n", | |
"\t\t\t\t\n", | |
"\t\t\t\t'pageup':33,\n", | |
"\t\t\t\t'page_up':33,\n", | |
"\t\t\t\t'pu':33,\n", | |
"\t\n", | |
"\t\t\t\t'pagedown':34,\n", | |
"\t\t\t\t'page_down':34,\n", | |
"\t\t\t\t'pd':34,\n", | |
"\t\n", | |
"\t\t\t\t'left':37,\n", | |
"\t\t\t\t'up':38,\n", | |
"\t\t\t\t'right':39,\n", | |
"\t\t\t\t'down':40,\n", | |
"\t\n", | |
"\t\t\t\t'f1':112,\n", | |
"\t\t\t\t'f2':113,\n", | |
"\t\t\t\t'f3':114,\n", | |
"\t\t\t\t'f4':115,\n", | |
"\t\t\t\t'f5':116,\n", | |
"\t\t\t\t'f6':117,\n", | |
"\t\t\t\t'f7':118,\n", | |
"\t\t\t\t'f8':119,\n", | |
"\t\t\t\t'f9':120,\n", | |
"\t\t\t\t'f10':121,\n", | |
"\t\t\t\t'f11':122,\n", | |
"\t\t\t\t'f12':123\n", | |
"\t\t\t}\n", | |
"\t\n", | |
"\t\t\tvar modifiers = { \n", | |
"\t\t\t\tshift: { wanted:false, pressed:false},\n", | |
"\t\t\t\tctrl : { wanted:false, pressed:false},\n", | |
"\t\t\t\talt : { wanted:false, pressed:false},\n", | |
"\t\t\t\tmeta : { wanted:false, pressed:false}\t//Meta is Mac specific\n", | |
"\t\t\t};\n", | |
" \n", | |
"\t\t\tif(e.ctrlKey)\tmodifiers.ctrl.pressed = true;\n", | |
"\t\t\tif(e.shiftKey)\tmodifiers.shift.pressed = true;\n", | |
"\t\t\tif(e.altKey)\tmodifiers.alt.pressed = true;\n", | |
"\t\t\tif(e.metaKey) modifiers.meta.pressed = true;\n", | |
" \n", | |
"\t\t\tfor(var i=0; k=keys[i],i<keys.length; i++) {\n", | |
"\t\t\t\t//Modifiers\n", | |
"\t\t\t\tif(k == 'ctrl' || k == 'control') {\n", | |
"\t\t\t\t\tkp++;\n", | |
"\t\t\t\t\tmodifiers.ctrl.wanted = true;\n", | |
"\n", | |
"\t\t\t\t} else if(k == 'shift') {\n", | |
"\t\t\t\t\tkp++;\n", | |
"\t\t\t\t\tmodifiers.shift.wanted = true;\n", | |
"\n", | |
"\t\t\t\t} else if(k == 'alt') {\n", | |
"\t\t\t\t\tkp++;\n", | |
"\t\t\t\t\tmodifiers.alt.wanted = true;\n", | |
"\t\t\t\t} else if(k == 'meta') {\n", | |
"\t\t\t\t\tkp++;\n", | |
"\t\t\t\t\tmodifiers.meta.wanted = true;\n", | |
"\t\t\t\t} else if(k.length > 1) { //If it is a special key\n", | |
"\t\t\t\t\tif(special_keys[k] == code) kp++;\n", | |
"\t\t\t\t\t\n", | |
"\t\t\t\t} else if(opt['keycode']) {\n", | |
"\t\t\t\t\tif(opt['keycode'] == code) kp++;\n", | |
"\n", | |
"\t\t\t\t} else { //The special keys did not match\n", | |
"\t\t\t\t\tif(character == k) kp++;\n", | |
"\t\t\t\t\telse {\n", | |
"\t\t\t\t\t\tif(shift_nums[character] && e.shiftKey) { //Stupid Shift key bug created by using lowercase\n", | |
"\t\t\t\t\t\t\tcharacter = shift_nums[character]; \n", | |
"\t\t\t\t\t\t\tif(character == k) kp++;\n", | |
"\t\t\t\t\t\t}\n", | |
"\t\t\t\t\t}\n", | |
"\t\t\t\t}\n", | |
"\t\t\t}\n", | |
"\t\t\t\n", | |
"\t\t\tif(kp == keys.length && \n", | |
"\t\t\t\t\t\tmodifiers.ctrl.pressed == modifiers.ctrl.wanted &&\n", | |
"\t\t\t\t\t\tmodifiers.shift.pressed == modifiers.shift.wanted &&\n", | |
"\t\t\t\t\t\tmodifiers.alt.pressed == modifiers.alt.wanted &&\n", | |
"\t\t\t\t\t\tmodifiers.meta.pressed == modifiers.meta.wanted) {\n", | |
"\t\t\t\tcallback(e);\n", | |
"\t\n", | |
"\t\t\t\tif(!opt['propagate']) { //Stop the event\n", | |
"\t\t\t\t\t//e.cancelBubble is supported by IE - this will kill the bubbling process.\n", | |
"\t\t\t\t\te.cancelBubble = true;\n", | |
"\t\t\t\t\te.returnValue = false;\n", | |
"\t\n", | |
"\t\t\t\t\t//e.stopPropagation works in Firefox.\n", | |
"\t\t\t\t\tif (e.stopPropagation) {\n", | |
"\t\t\t\t\t\te.stopPropagation();\n", | |
"\t\t\t\t\t\te.preventDefault();\n", | |
"\t\t\t\t\t}\n", | |
"\t\t\t\t\treturn false;\n", | |
"\t\t\t\t}\n", | |
"\t\t\t}\n", | |
"\t\t}\n", | |
"\t\tthis.all_shortcuts[shortcut_combination] = {\n", | |
"\t\t\t'callback':func, \n", | |
"\t\t\t'target':ele, \n", | |
"\t\t\t'event': opt['type']\n", | |
"\t\t};\n", | |
"\t\t//Attach the function with the event\n", | |
"\t\tif(ele.addEventListener) ele.addEventListener(opt['type'], func, false);\n", | |
"\t\telse if(ele.attachEvent) ele.attachEvent('on'+opt['type'], func);\n", | |
"\t\telse ele['on'+opt['type']] = func;\n", | |
"\t},\n", | |
"\n", | |
"\t//Remove the shortcut - just specify the shortcut and I will remove the binding\n", | |
"\t'remove':function(shortcut_combination) {\n", | |
"\t\tshortcut_combination = shortcut_combination.toLowerCase();\n", | |
"\t\tvar binding = this.all_shortcuts[shortcut_combination];\n", | |
"\t\tdelete(this.all_shortcuts[shortcut_combination])\n", | |
"\t\tif(!binding) return;\n", | |
"\t\tvar type = binding['event'];\n", | |
"\t\tvar ele = binding['target'];\n", | |
"\t\tvar callback = binding['callback'];\n", | |
"\n", | |
"\t\tif(ele.detachEvent) ele.detachEvent('on'+type, callback);\n", | |
"\t\telse if(ele.removeEventListener) ele.removeEventListener(type, callback, false);\n", | |
"\t\telse ele['on'+type] = false;\n", | |
"\t}\n", | |
"}\n", | |
"\n", | |
"shortcut.add(\"Alt+Left\",function() {\n", | |
"\tvar event = new Event('click');\n", | |
"\tif (settingsShown){\n", | |
"\t\tdocument.getElementById('hideSettingsButton_0').dispatchEvent(event);\n", | |
"\t} else{\n", | |
"\t\tdocument.getElementById('showSettingsButton_0').dispatchEvent(event);\n", | |
"\t}\n", | |
"});\n", | |
"\n", | |
"if (foldable) moveToBaryCenter();\n", | |
"\n", | |
"\n", | |
"});});\n", | |
"// COMMON_CODE_BLOCK_END\n", | |
"</script>\n", | |
"\n", | |
"</body>\n", | |
"</html>\n" | |
], | |
"text/plain": [] | |
}, | |
"execution_count": 47, | |
"metadata": {}, | |
"output_type": "execute_result" | |
}, | |
{ | |
"name": "stderr", | |
"output_type": "stream", | |
"text": [ | |
"polymake: used package threejs\n", | |
" Three.js is a lightweight cross-browser JavaScript library/API used to create and display animated 3D computer graphics on a Web browser.\n", | |
" See http://github.com/mrdoob for the source code.\n", | |
"\n" | |
] | |
} | |
], | |
"source": [ | |
"call_function(:visualize_in_surface, V, isolated)" | |
] | |
} | |
], | |
"metadata": { | |
"celltoolbar": "Slideshow", | |
"kernelspec": { | |
"display_name": "Julia 1.0.3", | |
"language": "julia", | |
"name": "julia-1.0" | |
}, | |
"language_info": { | |
"file_extension": ".jl", | |
"mimetype": "application/julia", | |
"name": "julia", | |
"version": "1.0.3" | |
} | |
}, | |
"nbformat": 4, | |
"nbformat_minor": 2 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment