From 50008b1bc24adac621963b73b146bd589e97edc7 Mon Sep 17 00:00:00 2001 From: Olivier Blanvillain <olivier.blanvillain@epfl.ch> Date: Sun, 14 Mar 2021 14:00:03 +0100 Subject: [PATCH] Add labs/lab4-barnes-hut-simulation --- labs/lab4-barnes-hut-simulation/README.md | 560 +++++++++ labs/lab4-barnes-hut-simulation/cell.png | Bin 0 -> 9908 bytes labs/lab4-barnes-hut-simulation/cell.svg | 438 +++++++ labs/lab4-barnes-hut-simulation/combine.png | Bin 0 -> 9067 bytes labs/lab4-barnes-hut-simulation/combine.svg | 1082 +++++++++++++++++ .../force-components.png | Bin 0 -> 9778 bytes .../force_components.svg | 343 ++++++ labs/lab4-barnes-hut-simulation/net-force.png | Bin 0 -> 7672 bytes labs/lab4-barnes-hut-simulation/net-force.svg | 327 +++++ .../observation.png | Bin 0 -> 11519 bytes .../observation.svg | 407 +++++++ labs/lab4-barnes-hut-simulation/quadtree.png | Bin 0 -> 34247 bytes labs/lab4-barnes-hut-simulation/quadtree.svg | 789 ++++++++++++ .../sectormatrix.png | Bin 0 -> 12598 bytes .../sectormatrix.svg | 477 ++++++++ 15 files changed, 4423 insertions(+) create mode 100755 labs/lab4-barnes-hut-simulation/README.md create mode 100755 labs/lab4-barnes-hut-simulation/cell.png create mode 100755 labs/lab4-barnes-hut-simulation/cell.svg create mode 100755 labs/lab4-barnes-hut-simulation/combine.png create mode 100755 labs/lab4-barnes-hut-simulation/combine.svg create mode 100755 labs/lab4-barnes-hut-simulation/force-components.png create mode 100755 labs/lab4-barnes-hut-simulation/force_components.svg create mode 100755 labs/lab4-barnes-hut-simulation/net-force.png create mode 100755 labs/lab4-barnes-hut-simulation/net-force.svg create mode 100755 labs/lab4-barnes-hut-simulation/observation.png create mode 100755 labs/lab4-barnes-hut-simulation/observation.svg create mode 100755 labs/lab4-barnes-hut-simulation/quadtree.png create mode 100755 labs/lab4-barnes-hut-simulation/quadtree.svg create mode 100755 labs/lab4-barnes-hut-simulation/sectormatrix.png create mode 100755 labs/lab4-barnes-hut-simulation/sectormatrix.svg diff --git a/labs/lab4-barnes-hut-simulation/README.md b/labs/lab4-barnes-hut-simulation/README.md new file mode 100755 index 0000000..85f0582 --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/README.md @@ -0,0 +1,560 @@ +# Barnes-Hut Simulation + +Use the following commands to make a fresh clone of your repository: + +```sh +git clone -b barneshut git@gitlab.epfl.ch:lamp/student-repositories-s21/cs206-GASPAR.git cs206-barneshut +``` + +## Useful links + + * [The API documentation of the Scala standard library](https://www.scala-lang.org/files/archive/api/2.13.4) + * [The API documentation of the Java standard library](https://docs.oracle.com/en/java/javase/15/docs/api/index.html) + +**If you have issues with the IDE, try [reimporting the +build](https://gitlab.epfl.ch/lamp/cs206/-/blob/master/labs/example-lab.md#ide-features-like-type-on-hover-or-go-to-definition-do-not-work), +if you still have problems, use `compile` in sbt instead.** + +## Introduction + +In this assignment, you will implement the parallel Barnes-Hut algorithm for *N-body simulation*. +N-body simulation is a simulation of a system of *N* particles that interact with physical +forces, such as gravity or electrostatic force. +Given initial positions and velocities of all the *particles* (or *bodies*), the N-body simulation +computes the new positions and velocities of the particles as the time progresses. +It does so by dividing time into discrete short intervals, and computing the +positions of the particles after each interval. + +<!-- +Let us recall some basics of classical mechanics. +What makes a particle, such as an atom, a comet or a star, move through space? +First, the particle moves through space as a consequence of having some initial velocity +compared to other particles. +Second, the particle changes its velocity as a result of external forces. +These forces are in direct correlation with the proximity of other particles. +For example, Earth moves through space with some initial velocity, +which is constantly being changed due to the gravitational force between the Earth and the Sun. +--> + +Before we study the Barnes-Hut algorithm for the N-body simulation problem, +we will focus on a simpler algorithm -- the *direct sum N-body algorithm*. +The direct sum algorithm consists of multiple iterations, each of which performs +the following steps for each particle: + +1. The particle position is updated according to its current velocity (`delta` is a short time period). + + x' = x + v_x * delta + y' = y + v_y * delta + +2. The net force on the particle is computed by adding the individual forces from all the other particles. + + F_x = F_1x + F_2x + F_3x + ... + F_Nx + F_y = F_1y + F_2y + F_3y + ... + F_Ny + +3. The particle velocity is updated according to the net force on that particle. + + v_x' = v_x + F_x / mass * delta + v_y' = v_y + F_y / mass * delta + +In this exercise, we will assume that the force between particles is the *gravitational force* +from classical mechanics. Let's recall the formula for the gravitational force between two stellar bodies: + + F = G * (m1 * m2) / distance^2 + +Above, `F` is the absolute value of the gravitational force, `m1` and `m2` are the masses of the two bodies, +and `r` is the distance between them. `G` is the gravitational constant. + +<!-- +The gravitational force vector always points towards the other body. +The `F_x` and `F_y` components of the gravitational force on the body `m1` +can be computed by observing the following triangle similarity: + +```scala +distance = math.sqrt((x2 - x1) ^ 2 + (y2 - y1) ^ 2) +F_x / F = (x2 - x1) / distance +F_y / F = (y2 - y1) / distance +``` + +This is shown in the following figure: + + +--> + +For each particle, the net force is computed by summing the components of individual forces from all other particles, +as shown in the following figure: + + + +The direct sum N-body algorithm is very simple, but also inefficient. +Since we need to update `N` particles, and compute `N - 1` force contributions for each of those particles, +the overall complexity of an iteration step of this algorithm is `O(N^2)`. +As the number of particles grows larger, the direct sum N-body algorithm becomes prohibitively expensive. + +The Barnes-Hut algorithm is an optimization of the direct sum N-body algorithm, +and is based on the following observation: + +> If a cluster of bodies is sufficiently distant from a body *A*, the net force on *A* +> from that cluster can be approximated with one big body with the mass of all the +> bodies in the cluster, positioned at the center of mass of the cluster. + +This is illustrated in the following figure: + + + +To take advantage of this observation, the Barnes-Hut algorithm relies on +a *quadtree* -- a data structure that divides the space into cells, and answers queries +such as 'What is the total mass and the center of mass of all the particles in this cell?'. +The following figure shows an example of a quadtree for 6 bodies: + + + +Above, the total force from the bodies *B*, *C*, *D* and *E* on the body *A* can be approximated +by a single body with *mass* equal to the sum of masses *B*, *C*, *D* and *E*, +positioned at the center of mass of bodies *B*, *C*, *D* and *E*. +The center of mass `(massX, massY)` is computed as follows: + +```scala +mass = m_B + m_C + m_D + m_E +massX = (m_B * x_B + m_C * x_C + m_D * x_D + m_E * x_E) / mass +massY = (m_B * y_B + m_C * y_C + m_D * y_D + m_E * y_E) / mass +``` +An iteration of the Barnes-Hut algorithm is composed of the following steps: + +1. Construct the quadtree for the current arrangement of the bodies. + 1. Determine the *boundaries*, i.e. the square into which all bodies fit. + 2. Construct a quadtree that covers the boundaries and contains all the bodies. +2. Update the bodies -- for each body: + 1. Update the body position according to its current velocity. + 2. Using the quadtree, compute the net force on the body by adding the individual forces from all the other bodies. + 3. Update the velocity according to the net force on that body. + +It turns out that, for most spatial distribution of bodies, +the expected number of cells that contribute to the net force on a body is `log n`, +so the overall complexity of the Barnes-Hut algorithm is `O(n log n)`. + +Now that we covered all the necessary theory, let's finally dig into the implementation! +You will implement: + +- a quadtree and its combiner data structure +- an operation that computes the total force on a body using the quadtree +- a simulation step of the Barnes-Hut algorithm + +Since this assignment consists of multiple components, +we will follow the principles of *test-driven development* and test each component separately, +before moving on to the next component. +That way, if anything goes wrong, we will more precisely know where the error is. +It is always better to detect errors sooner, rather than later. + + +## Data Structures + +We will start by implementing the necessary data structures: the quadtree, +the body data-type and the sector matrix. +You will find the stubs in the `package.scala` file of the `barneshut` package. + + +### Quadtree Data Structure + +In this part of the assignment, we implement the quadtree data structure, +denoted with the abstract data-type `Quad`. +Every `Quad` represents a square cell of space, and can be one of the following node types: + +- an `Empty` node, which represents an empty quadtree +- a `Leaf` node, which represents one or more bodies +- a `Fork` node, which divides a spatial cell into four quadrants + +The definition of `Quad` is as follows: + +```scala +sealed abstract class Quad { + def massX: Float + def massY: Float + def mass: Float + def centerX: Float + def centerY: Float + def size: Float + def total: Int + def insert(b: Body): Quad +} +``` + +Here, `massX` and `massY` represent the center of mass of the bodies in the respective cell, +`mass` is the total mass of bodies in that cell, `centerX` and `centerY` are the coordinates +of the center of the cell, `size` is the length of the side of the cell, +and `total` is the total number of bodies in the cell. + +Note that we consider the top left corner to be at coordinate (0, 0). We also consider the x axis to grow to the right and the y axis to the bottom. + + + +The method `insert` creates a new quadtree which additionally contains the body `b`, +and covers the same area in space as the original quadtree. +Quadtree is an *immutable* data structure -- `insert` does not modify the existing `Quad` object. +Note that `Body` has the following signature: + +```scala +class Body(val mass: Float, val x: Float, val y: Float, val xspeed: Float, val yspeed: Float) +``` + +In this part of the exercise, you only need to know about body's position `x` and `y`. + +Let's start by implementing the simplest `Quad` type -- the empty quadtree: + +```scala +case class Empty(centerX: Float, centerY: Float, size: Float) extends Quad +``` + +The center and the size of the `Empty` quadtree are specified in its constructor. +The `Empty` tree does not contain any bodies, so we specify that its center of mass is equal to its center. + +Next, let's implement the `Fork` quadtree: + +```scala +case class Fork(nw: Quad, ne: Quad, sw: Quad, se: Quad) extends Quad +``` + +This node is specified by four child quadtrees `nw`, `ne`, `sw` and `se`, +in the northwest, northeast, southwest and southeast quadrant, respectively. + +The northwest is located on the top left, northeast on the top right, southwest on the bottom left and southeast on the bottom right. + +The constructor assumes that the children nodes that represent four adjacent cells of the +same size and adjacent to each other, as in the earlier figure. +The center of the `Fork` quadtree is then specified by, say, the +lower right corner of the quadtree `nw`. If the `Fork` quadtree is empty, the +center of mass coincides with the center. + +Inserting into a `Fork` is recursive -- it updates the respective child and creates a new `Fork`. + +Finally, the `Leaf` quadtree represents one or more bodies: + +```scala +case class Leaf(centerX: Float, centerY: Float, size: Float, bodies: Seq[Body]) +extends Quad +``` + +If the `size` of a `Leaf` is greater than a predefined constant `minimumSize`, +inserting an additonal body into that `Leaf` quadtree creates a `Fork` quadtree +with empty children, and adds all the bodies into that `Fork` (including the new body). +Otherwise, inserting creates another `Leaf` with all the existing bodies and the new one. + + +### The Body Data-Type + +Next, we can implement the `Body` data-type: + +```scala +class Body(val mass: Float, val x: Float, val y: Float, val xspeed: Float, val yspeed: Float) { + def updated(quad: Quad): Body = ??? +} +``` + +Here, `xspeed` and `yspeed` represent the velocity of the body, `mass` is its mass, +and `x` and `y` are the coordinates of the body. + +The most interesting method on the `Body` is `updated` -- it takes a quadtree and +returns the updated version of the `Body`: + +```scala +def updated(quad: Quad): Body +``` + +This method is already half-completed for you -- you only need to implement +its nested method `traverse`, which goes through the quadtree and proceeds casewise: + +- empty quadtree does not affect the net force +- each body in a leaf quadtree adds some net force +- a fork quadtree that is sufficiently far away acts as a single point of mass +- a fork quadtree that is not sufficiently far away must be recursively traversed + +When are we allowed to approximate a cluster of bodies with a single point? +The heuristic that is used is that the size of the cell divided by the distance +`dist` between the center of mass and the particle is less than some constant `theta`: + +```scala +quad.size / dist < theta +``` + +Hint: make sure you use the `distance` to compute distance between points, +the `theta` value for the condition, and `addForce` to add force contributions! + +Before proceeding, make sure to run tests against your `Quad` and `Body` implementations. + + +### The Sector Matrix + +The last data structure that we will implement is the *sector matrix*. +In this data structure, we will use the auxiliary class `Boundaries`, which +contains the `minX`, `maxX`, `minY` and `maxY` fields for the boundaries of the scene: + +```scala +class Boundaries { + var minX: Float + var minY: Float + var maxX: Float + var maxY: Float + def size = math.max(maxX - minX, maxY - minY) +} +``` + +We will also rely on the `ConcBuffer` data structure, mentioned in the lecture: + +```scala +class ConcBuffer[T] +``` + +The `ConcBuffer` class comes with efficient `+=`, `combine` and `foreach` operations, +which add elements into the buffer, combine two buffers and traverse the buffer, respectively. +The sector matrix additionally has the `toQuad` method, which returns a quadtree that contains all +the elements previously added with the `+=` method. +Recall from the lectures that this combination of methods make the `ConcBuffer` a *combiner*. + +The `SectorMatrix` is just a square matrix that covers a square region of space +specified by the boundaries: + +```scala +class SectorMatrix(val boundaries: Boundaries, val sectorPrecision: Int) { + val sectorSize = boundaries.size / sectorPrecision + val matrix = new Array[ConcBuffer[Body]](sectorPrecision * sectorPrecision) + for (i <- 0 until matrix.length) matrix(i) = new ConcBuffer + def apply(x: Int, y: Int) = matrix(y * sectorPrecision + x) +} +``` + +The `sectorPrecision` argument denotes the width and height of the matrix, and +each entry contains a `ConcBuffer[Body]` object. Effectively, the `SectorMatrix` is a *combiner* -- +it partitions the square region of space into `sectorPrecision` times `sectorPrecision` buckets, called *sectors*. + + + +Combiners such as the `SectorMatrix` are used in parallel programming to partition the results into +some intermediate form that is more amenable to parallelization. +Recall from the lecture that one of the ways to implement a *combiner* is by using +a bucket data structure -- we will do exactly that in this part of the exercise! +We will add three methods on the `SectorMatrix` that will make it a combiner. +We start with the `+=` method: + +```scala +def +=(b: Body): SectorMatrix = { + ??? + this +} +``` + +This method should use the body position, `boundaries` and `sectorPrecision` +to determine the sector into which the body should go into, +and add the body into the corresponding `ConcBuffer` object. + +Importantly, if the `Body` lies outside of the `Boundaries`, it should be considered +to be located at the closest point within the `Boundaries` for the purpose of finding which `ConcBuffer` should hold the body. + +Next, we implement the `combine` method, which takes another `SectorMatrix`, +and creates a `SectorMatrix` which contains the elements of both input +`SectorMatrix` data structures: + +```scala +def combine(that: SectorMatrix): SectorMatrix +``` + +This method calls `combine` on the pair of `ConcBuffer`s in `this` and `that` +matrices to produce the `ConcBuffer` for the resulting matrix. +You can safely assume that combine will only be called on matrices of same dimensions, boundaries and sector precision. + + + + +The nice thing about the sector matrix is that a quadtree can be constructed +in parallel for each sector. Those little quadtrees can then be linked together. +The `toQuad` method on the `SectorMatrix` does this: + +```scala +def toQuad(parallelism: Int): Quad +``` + +This method is already implemented -- you can examine +it if you would like to know how it works. + +<!-- +Finally, we will implement the `toQuad` method, which uses the `SectorMatrix` +to create a `Quad` tree in parallel: + +```scala +def toQuad(parallelism: Int): Quad = { + def BALANCING_FACTOR = 4 + def quad(x: Int, y: Int, span: Int, achievedParallelism: Int): Quad = { + if (span == 1) { + ??? + } else { + ??? + } + } + quad(0, 0, sectorPrecision, 1) +} +``` + +The `toQuad` method takes the desired degree of `parallelism` as an argument, +and then calls the recursive `quad` method. +The `quad` method operates on a subsquare of the matrix starting at `x`, `y` coordinates, +with the length `span`. +The fourth parameter, `achievedParallelism`, describes how many tasks have been +created at a given call depth. + +Implement the `quad` method so that: + +1. If `span` is 1, the method sequentially converts the bodies in that sector to a quadtree. + Use `foldLeft` and the `insert` method on the bodies in each sector to get the quadtree. +2. Otherwise, if `parallelism > 1 && achievedParallelism < parallelism * BALANCING_FACTOR`, + the method recursively, and in parallel, creates quadtrees for the `4` subsquares + and links them together into a bigger quadtree. +3. Otherwise, if the `parallelism == 1 || achievedParallelism >= parallelism * BALANCING_FACTOR`, + the method does the same as in case 2, but without parallelism. + +Don't forget to multiply `achievedParallelism` by `4` at each step. +--> + +Congratulations, you just implemented your first combiner! +Before proceeding, make sure to run those unit tests. + + +## Implementing Barnes-Hut + +Now that we have all the right data structures ready and polished, +implementing Barnes-Hut becomes a piece of cake. + +Take a look at the file `Simulator.scala`, which contains the implementation +of the Barnes-Hut simulator, and in particular the `step` method. +The `step` method represents one step in the simulation: + +```scala +def step(bodies: Seq[Body]): (Seq[Body], Quad) = { + // 1. compute boundaries + val boundaries = computeBoundaries(bodies) + + // 2. compute sector matrix + val sectorMatrix = computeSectorMatrix(bodies, boundaries) + + // 3. compute quadtree + val quad = computeQuad(sectorMatrix) + + // 4. eliminate outliers + val filteredBodies = eliminateOutliers(bodies, sectorMatrix, quad) + + // 5. update body velocities and positions + val newBodies = updateBodies(filteredBodies, quad) + + (newBodies, quad) +} +``` + +The pre-existing code in `step` nicely summarizes what this method does. + + +### Computing the Scene Boundaries + +First, we must compute the boundaries of all the bodies in the scene. +Since bodies move and the boundaries dynamically change, +we must do this in every iteration of the algorithm. +The `computeBoundaries` method is already implemented -- it uses the `aggregate` +combinator on the sequence of bodies to compute the boundaries: + +```scala +def computeBoundaries(bodies: Seq[Body]): Boundaries = { + val parBodies = bodies.par + parBodies.tasksupport = taskSupport + parBodies.aggregate(new Boundaries)(updateBoundaries, mergeBoundaries) +} +``` + +How does this work? The `aggregate` method divides the input sequence into a +number of chunks. For each of the chunks, it uses the `new Boundaries` expression +to create the accumulation value, and then folds the values in that chunk +calling `updateBoundaries` on each body, in the same way a `foldLeft` operation would. +Finally, `aggregate` combines the results of different chunks using a reduction tree and `mergeBoundaries`. + +So, we need the `updateBoundaries` method: + +```scala +def updateBoundaries(boundaries: Boundaries, body: Body): Boundaries +``` + +Given an existing `boundaries` object and a body, the `updateBoundaries` updates +the `minX`, `minY`, `maxX` and `maxY` values so that the boundaries include the body. + +Next, the `mergeBoundaries` method creates a new `Boundaries` object, which represents +the smallest rectangle that contains both the input boundaries: + +```scala +def mergeBoundaries(a: Boundaries, b: Boundaries): Boundaries +``` + +Question: Is `mergeBoundaries` associative? Is it commutative? Does it need to be commutative? + +Implement these two methods, and test that they work correctly! + + +### Building the Quadtree + +Next, we need to build a `Quad` tree from the sequence of bodies. +We will first implement the `computeSectorMatrix` method to get the `SectorMatrix`: + +```scala +def computeSectorMatrix(bodies: Seq[Body], boundaries: Boundaries): SectorMatrix +``` + +Hint: aggregate the `SectorMatrix` from the sequence of bodies, the same way it was used for boundaries. +Use the SECTOR_PRECISION constant when creating a new `SectorMatrix`. + +<!-- +Next, implement `computeQuad`, which converts `SectorMatrix` to a `Quad`: + + def computeQuad(sectorMatrix: SectorMatrix): Quad + +Hint: use `taskSupport.parallelismLevel` to determine the desired parallelism. +--> + +Test that these methods work correctly before proceeding! + + +### Eliminating Outliers + +During the execution of the Barnes-Hut algorithm, some of the bodies tend to +move far away from most of the other bodies. There are many ways to deal with such *outliers*, +but to keep things simple, we will eliminate bodies that move too fast and too far away. + +We will not go into details of how this works, but if you'd like to know more, +you can try to understand how the `eliminateOutliers` method works. + + +### Updating Bodies + +The `updateBodies` method uses the quadtree to map each body from the +previous iteration of the algorithm to a new iteration: + +```scala +def updateBodies(bodies: Seq[Body], quad: Quad): Seq[Body] +``` + +Recall that we already implemented the `updated` method which updates a single body. + + +## Running Barnes-Hut + +At last, the parallel Barnes-Hut algorithm is implemented. +Note that, despite all the work, we kept our Barnes-Hut algorithm implementation simple +and avoided the details that a more realistic implementation must address. In particular: + +- we represented each body as a single point in space +- we restricted the simulation to two-dimensional space +- we ignored close encounter effects, such as body collision or tearing +- we ignored any relativistic effects, and assume classical mechanics +- we ignored errors induced by floating point computations + +You can now run it as follows: + + > runMain barneshut.BarnesHut + +To visualize the quadtree, press the *Show quad* button, and then hit the *Start/Pause* button. + +Play with the parallelism level and the number of bodies, and observe the average speedups in the lower right corner. +Then sit back, and enjoy the show! + diff --git a/labs/lab4-barnes-hut-simulation/cell.png b/labs/lab4-barnes-hut-simulation/cell.png new file mode 100755 index 0000000000000000000000000000000000000000..ad65b0d35f23d5c3bc891a5ee2d6f1fa1e708a53 GIT binary patch literal 9908 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 K`d3x^$o~M>Rz76_ literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/cell.svg b/labs/lab4-barnes-hut-simulation/cell.svg new file mode 100755 index 0000000..28ac7ec --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/cell.svg @@ -0,0 +1,438 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="cell.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\cell.png" + inkscape:export-xdpi="32.65155" + inkscape:export-ydpi="32.65155"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker15906" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path15908" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker15306" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path15308" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker15086" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path15088" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="marker15028" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path15030" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker11876" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11878" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker10168" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path10170" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker7470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path7472" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4228" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4231" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="970.66221" + inkscape:cy="85.954979" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" + inkscape:snap-text-baseline="false" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + r="13.141105" + cy="721.93744" + cx="1136.2686" + id="circle4144" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4152" + y="748.34113" + x="1165.1003" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="748.34113" + x="1165.1003" + id="tspan4154" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4158">E</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1152.1206" + y="688.21014" + id="text7888" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7890" + x="1152.1206" + y="688.21014">(x<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14976">E</tspan>,y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14974">E</tspan>)</tspan></text> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle8064" + cx="1028.7399" + cy="1061.7242" + r="13.141105" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1055.5515" + y="1070.8625" + id="text8066" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan8068" + x="1055.5515" + y="1070.8625">m<tspan + id="tspan8070" + style="font-size:64.99999762%;baseline-shift:sub">C</tspan></tspan></text> + <circle + r="13.141105" + cy="653.45074" + cx="741.34894" + id="circle10468" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text10470" + y="682.58905" + x="766.01764" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="682.58905" + x="766.01764" + id="tspan10472" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan10474">D</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="743.56964" + y="1123.7406" + id="text10476" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan10478" + x="743.56964" + y="1123.7406">m<tspan + id="tspan10480" + style="font-size:64.99999762%;baseline-shift:sub">B</tspan></tspan></text> + <circle + r="13.141105" + cy="1088.6008" + cx="727.80518" + id="circle10482" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="952.23749" + y="908.33813" + id="text13406" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan13408" + x="952.23749" + y="908.33813">mass</tspan></text> + <circle + r="24.149361" + cy="893.79889" + cx="923.70862" + id="circle13404" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:10, 5;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="558.17084" + x="604.85461" + height="531.79376" + width="531.79376" + id="rect14954" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="-822.98016" + x="-869.66394" + height="264.46457" + width="264.46457" + id="rect14958" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + transform="scale(-1,-1)" /> + <rect + transform="scale(-1,-1)" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5.03303289;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect14960" + width="267.3674" + height="266.65311" + x="-1136.4081" + y="-1089.01" /> + <text + sodipodi:linespacing="125%" + id="text14978" + y="619.51978" + x="717.755" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="619.51978" + x="717.755" + id="tspan14980" + sodipodi:role="line">(x<tspan + id="tspan14982" + style="font-size:64.99999762%;baseline-shift:sub">D</tspan>,y<tspan + id="tspan14984" + style="font-size:64.99999762%;baseline-shift:sub">D</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="646.05164" + y="1057.5076" + id="text14986" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan14988" + x="646.05164" + y="1057.5076">(x<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14990">B</tspan>,y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14992">B</tspan>)</tspan></text> + <text + sodipodi:linespacing="125%" + id="text14994" + y="1044.3879" + x="882.93494" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1044.3879" + x="882.93494" + id="tspan14996" + sodipodi:role="line">(x<tspan + id="tspan14998" + style="font-size:64.99999762%;baseline-shift:sub">C</tspan>,y<tspan + id="tspan15000" + style="font-size:64.99999762%;baseline-shift:sub">C</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="895.39038" + y="954.85413" + id="text15002" + sodipodi:linespacing="100%" + inkscape:export-xdpi="34.630001" + inkscape:export-ydpi="34.630001"><tspan + sodipodi:role="line" + id="tspan15004" + x="895.39038" + y="954.85413" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">(mass<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan15020">X</tspan>,mass<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan15016">Y</tspan>)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.89491892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker15028);marker-end:url(#marker15086)" + d="m 611.75315,1157.4181 516.98645,0" + id="path15026" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="825.29462" + y="1220.0476" + id="text15252" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan15254" + x="825.29462" + y="1220.0476">size<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan15256" /></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1248.5714" + y="899.50507" + id="text4276" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4278" + x="1248.5714" + y="899.50507">total=4</tspan></text> + <text + inkscape:export-ydpi="34.630001" + inkscape:export-xdpi="34.630001" + sodipodi:linespacing="100%" + id="text4280" + y="793.42554" + x="875.39038" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start" + y="793.42554" + x="875.39038" + id="tspan4282" + sodipodi:role="line">(center<tspan + id="tspan4284" + style="font-size:64.99999762%;baseline-shift:sub">X</tspan>,center<tspan + id="tspan4286" + style="font-size:64.99999762%;baseline-shift:sub">Y</tspan>)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:11.70279694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 854.21813,808.4712 31.66682,31.66682" + id="path4288" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:11.70279694;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" + d="m 855.14272,840.36917 32.36025,-32.36026" + id="path4290" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/labs/lab4-barnes-hut-simulation/combine.png b/labs/lab4-barnes-hut-simulation/combine.png new file mode 100755 index 0000000000000000000000000000000000000000..f54059cf101152332af25658cc26e5bd29c2c694 GIT binary patch literal 9067 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 A_5c6? literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/combine.svg b/labs/lab4-barnes-hut-simulation/combine.svg new file mode 100755 index 0000000..09fb528 --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/combine.svg @@ -0,0 +1,1082 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="combine.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\sectormatrix.png" + inkscape:export-xdpi="32.6516" + inkscape:export-ydpi="32.6516"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="marker4830" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4832" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Sstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4202" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.2) translate(6,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.49497475" + inkscape:cx="370.35135" + inkscape:cy="411.90881" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4138" + width="157.25688" + height="157.25688" + x="746.3056" + y="293.24829" /> + <rect + y="293.24829" + x="903.69269" + height="157.25688" + width="157.25688" + id="rect4140" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="293.24829" + x="1060.2903" + height="157.25688" + width="157.25688" + id="rect4142" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4144" + width="157.25688" + height="157.25688" + x="1217.6774" + y="293.24829" /> + <rect + y="450.89859" + x="746.3056" + height="157.25688" + width="157.25688" + id="rect4146" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4148" + width="157.25688" + height="157.25688" + x="903.69269" + y="450.89859" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4150" + width="157.25688" + height="157.25688" + x="1060.2903" + y="450.89859" /> + <rect + y="450.89859" + x="1217.6774" + height="157.25688" + width="157.25688" + id="rect4152" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="608.02252" + x="746.3056" + height="157.25688" + width="157.25688" + id="rect4154" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4156" + width="157.25688" + height="157.25688" + x="903.69269" + y="608.02252" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4158" + width="157.25688" + height="157.25688" + x="1060.2903" + y="608.02252" /> + <rect + y="608.02252" + x="1217.6774" + height="157.25688" + width="157.25688" + id="rect4160" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4162" + width="157.25688" + height="157.25688" + x="746.3056" + y="765.67279" /> + <rect + y="765.67279" + x="903.69269" + height="157.25688" + width="157.25688" + id="rect4164" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="765.67279" + x="1060.2903" + height="157.25688" + width="157.25688" + id="rect4166" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4168" + width="157.25688" + height="157.25688" + x="1217.6774" + y="765.67279" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4170" + cx="1020.8884" + cy="491.64792" + r="13.571428" /> + <circle + r="13.571428" + cy="854.50507" + cx="1285.1742" + id="circle4172" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4174" + cx="1355.1742" + cy="824.50507" + r="13.571428" /> + <circle + r="13.571428" + cy="894.50507" + cx="1376.6028" + id="circle4176" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4178" + cx="1312.3171" + cy="295.93362" + r="13.571428" /> + <circle + r="13.571428" + cy="805.93365" + cx="853.74573" + id="circle4180" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4182" + cx="1141.0917" + cy="717.37964" + r="13.571428" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="757.61438" + y="345.25543" + id="text5218" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5220" + x="757.61438" + y="345.25543">0,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5222" + y="345.25543" + x="927.32001" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="927.32001" + id="tspan5224" + sodipodi:role="line">1,0</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1080.8633" + y="345.25543" + id="text5226" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5228" + x="1080.8633" + y="345.25543">2,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5230" + y="345.25543" + x="1236.4268" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="1236.4268" + id="tspan5232" + sodipodi:role="line">3,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5234" + y="504.85953" + x="757.61438" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="757.61438" + id="tspan5236" + sodipodi:role="line">0,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="927.32001" + y="504.85953" + id="text5238" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5240" + x="927.32001" + y="504.85953">1,1</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5242" + y="504.85953" + x="1080.8633" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="1080.8633" + id="tspan5244" + sodipodi:role="line">2,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1236.4268" + y="504.85953" + id="text5246" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5248" + x="1236.4268" + y="504.85953">3,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="757.61438" + y="656.38239" + id="text5250" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5252" + x="757.61438" + y="656.38239">0,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5254" + y="656.38239" + x="927.32001" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="927.32001" + id="tspan5256" + sodipodi:role="line">1,2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1080.8633" + y="656.38239" + id="text5258" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5260" + x="1080.8633" + y="656.38239">2,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5262" + y="656.38239" + x="1236.4268" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="1236.4268" + id="tspan5264" + sodipodi:role="line">3,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5266" + y="813.96619" + x="757.61438" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="757.61438" + id="tspan5268" + sodipodi:role="line">0,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="927.32001" + y="813.96619" + id="text5270" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5272" + x="927.32001" + y="813.96619">1,3</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5274" + y="813.96619" + x="1080.8633" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="1080.8633" + id="tspan5276" + sodipodi:role="line">2,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1236.4268" + y="813.96619" + id="text5278" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5280" + x="1236.4268" + y="813.96619">3,3</tspan></text> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4209" + cx="1180.1184" + cy="684.79944" + r="13.571428" /> + <circle + r="13.571428" + cy="884.80963" + cx="800.30096" + id="circle4211" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="293.24829" + x="-243.64386" + height="157.25688" + width="157.25688" + id="rect4213" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4215" + width="157.25688" + height="157.25688" + x="-86.256775" + y="293.24829" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4217" + width="157.25688" + height="157.25688" + x="70.340759" + y="293.24829" /> + <rect + y="293.24829" + x="227.72791" + height="157.25688" + width="157.25688" + id="rect4219" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4221" + width="157.25688" + height="157.25688" + x="-243.64386" + y="450.89859" /> + <rect + y="450.89859" + x="-86.256775" + height="157.25688" + width="157.25688" + id="rect4223" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="450.89859" + x="70.340759" + height="157.25688" + width="157.25688" + id="rect4225" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4227" + width="157.25688" + height="157.25688" + x="227.72791" + y="450.89859" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4229" + width="157.25688" + height="157.25688" + x="-243.64386" + y="608.02252" /> + <rect + y="608.02252" + x="-86.256775" + height="157.25688" + width="157.25688" + id="rect4231" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="608.02252" + x="70.340759" + height="157.25688" + width="157.25688" + id="rect4233" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4235" + width="157.25688" + height="157.25688" + x="227.72791" + y="608.02252" /> + <rect + y="765.67279" + x="-243.64386" + height="157.25688" + width="157.25688" + id="rect4237" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4239" + width="157.25688" + height="157.25688" + x="-86.256775" + y="765.67279" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4241" + width="157.25688" + height="157.25688" + x="70.340759" + y="765.67279" /> + <rect + y="765.67279" + x="227.72791" + height="157.25688" + width="157.25688" + id="rect4243" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + r="13.571428" + cy="824.50507" + cx="365.22473" + id="circle4249" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + r="13.571428" + cy="295.93362" + cx="322.36768" + id="circle4253" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4255" + cx="-136.20374" + cy="805.93365" + r="13.571428" /> + <text + sodipodi:linespacing="125%" + id="text4259" + y="345.25543" + x="-232.33508" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="-232.33508" + id="tspan4261" + sodipodi:role="line">0,0</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-62.629456" + y="345.25543" + id="text4263" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4265" + x="-62.629456" + y="345.25543">1,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4267" + y="345.25543" + x="90.913757" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="90.913757" + id="tspan4269" + sodipodi:role="line">2,0</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="246.47729" + y="345.25543" + id="text4271" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4273" + x="246.47729" + y="345.25543">3,0</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-232.33508" + y="504.85953" + id="text4275" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4277" + x="-232.33508" + y="504.85953">0,1</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4279" + y="504.85953" + x="-62.629456" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="-62.629456" + id="tspan4281" + sodipodi:role="line">1,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="90.913757" + y="504.85953" + id="text4283" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4285" + x="90.913757" + y="504.85953">2,1</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4287" + y="504.85953" + x="246.47729" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="246.47729" + id="tspan4289" + sodipodi:role="line">3,1</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4291" + y="656.38239" + x="-232.33508" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="-232.33508" + id="tspan4293" + sodipodi:role="line">0,2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-62.629456" + y="656.38239" + id="text4295" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4297" + x="-62.629456" + y="656.38239">1,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4299" + y="656.38239" + x="90.913757" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="90.913757" + id="tspan4301" + sodipodi:role="line">2,2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="246.47729" + y="656.38239" + id="text4303" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4305" + x="246.47729" + y="656.38239">3,2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-232.33508" + y="813.96619" + id="text4307" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4309" + x="-232.33508" + y="813.96619">0,3</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4311" + y="813.96619" + x="-62.629456" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="-62.629456" + id="tspan4313" + sodipodi:role="line">1,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="90.913757" + y="813.96619" + id="text4315" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4317" + x="90.913757" + y="813.96619">2,3</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4319" + y="813.96619" + x="246.47729" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="246.47729" + id="tspan4321" + sodipodi:role="line">3,3</tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4327" + width="157.25688" + height="157.25688" + x="-1231.5731" + y="293.24829" /> + <rect + y="293.24829" + x="-1074.1859" + height="157.25688" + width="157.25688" + id="rect4329" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="293.24829" + x="-917.58844" + height="157.25688" + width="157.25688" + id="rect4331" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4333" + width="157.25688" + height="157.25688" + x="-760.20129" + y="293.24829" /> + <rect + y="450.89859" + x="-1231.5731" + height="157.25688" + width="157.25688" + id="rect4335" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4337" + width="157.25688" + height="157.25688" + x="-1074.1859" + y="450.89859" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4339" + width="157.25688" + height="157.25688" + x="-917.58844" + y="450.89859" /> + <rect + y="450.89859" + x="-760.20129" + height="157.25688" + width="157.25688" + id="rect4341" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="608.02252" + x="-1231.5731" + height="157.25688" + width="157.25688" + id="rect4343" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4345" + width="157.25688" + height="157.25688" + x="-1074.1859" + y="608.02252" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4347" + width="157.25688" + height="157.25688" + x="-917.58844" + y="608.02252" /> + <rect + y="608.02252" + x="-760.20129" + height="157.25688" + width="157.25688" + id="rect4349" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4351" + width="157.25688" + height="157.25688" + x="-1231.5731" + y="765.67279" /> + <rect + y="765.67279" + x="-1074.1859" + height="157.25688" + width="157.25688" + id="rect4353" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="765.67279" + x="-917.58844" + height="157.25688" + width="157.25688" + id="rect4355" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4357" + width="157.25688" + height="157.25688" + x="-760.20129" + y="765.67279" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4359" + cx="-956.99023" + cy="491.64792" + r="13.571428" /> + <circle + r="13.571428" + cy="854.50507" + cx="-692.70447" + id="circle4361" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + r="13.571428" + cy="894.50507" + cx="-601.27588" + id="circle4365" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4371" + cx="-836.78705" + cy="717.37964" + r="13.571428" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-1220.2643" + y="345.25543" + id="text4373" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4375" + x="-1220.2643" + y="345.25543">0,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4377" + y="345.25543" + x="-1050.5586" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="-1050.5586" + id="tspan4379" + sodipodi:role="line">1,0</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-897.01544" + y="345.25543" + id="text4381" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4383" + x="-897.01544" + y="345.25543">2,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4385" + y="345.25543" + x="-741.4519" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="-741.4519" + id="tspan4387" + sodipodi:role="line">3,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4389" + y="504.85953" + x="-1220.2643" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="-1220.2643" + id="tspan4391" + sodipodi:role="line">0,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-1050.5586" + y="504.85953" + id="text4393" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4395" + x="-1050.5586" + y="504.85953">1,1</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4397" + y="504.85953" + x="-897.01544" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="-897.01544" + id="tspan4399" + sodipodi:role="line">2,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-741.4519" + y="504.85953" + id="text4401" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4403" + x="-741.4519" + y="504.85953">3,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-1220.2643" + y="656.38239" + id="text4405" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4407" + x="-1220.2643" + y="656.38239">0,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4409" + y="656.38239" + x="-1050.5586" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="-1050.5586" + id="tspan4411" + sodipodi:role="line">1,2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-897.01544" + y="656.38239" + id="text4413" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4415" + x="-897.01544" + y="656.38239">2,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4417" + y="656.38239" + x="-741.4519" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="-741.4519" + id="tspan4419" + sodipodi:role="line">3,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4421" + y="813.96619" + x="-1220.2643" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="-1220.2643" + id="tspan4423" + sodipodi:role="line">0,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-1050.5586" + y="813.96619" + id="text4425" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4427" + x="-1050.5586" + y="813.96619">1,3</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4429" + y="813.96619" + x="-897.01544" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="-897.01544" + id="tspan4431" + sodipodi:role="line">2,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-741.4519" + y="813.96619" + id="text4433" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4435" + x="-741.4519" + y="813.96619">3,3</tspan></text> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4437" + cx="-797.76031" + cy="684.79944" + r="13.571428" /> + <circle + r="13.571428" + cy="884.80963" + cx="-1177.5776" + id="circle4439" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:61.06264496px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-556.66376" + y="625.3916" + id="text4441" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4443" + x="-556.66376" + y="625.3916">combine</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4445" + y="668.05292" + x="504.32611" + style="font-style:normal;font-weight:normal;font-size:151.51826477px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="668.05292" + x="504.32611" + id="tspan4447" + sodipodi:role="line">=</tspan></text> + </g> +</svg> diff --git a/labs/lab4-barnes-hut-simulation/force-components.png b/labs/lab4-barnes-hut-simulation/force-components.png new file mode 100755 index 0000000000000000000000000000000000000000..455cd799507df3eb94731acb4f0275a252fb6fe5 GIT binary patch literal 9778 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 literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/force_components.svg b/labs/lab4-barnes-hut-simulation/force_components.svg new file mode 100755 index 0000000..265c77f --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/force_components.svg @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="force_components.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\force-components.png" + inkscape:export-xdpi="43.470001" + inkscape:export-ydpi="43.470001"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker7470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path7472" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker6528" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path6530" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker5832" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:collect="always"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path5834" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker4718" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4720" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker4622" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4624" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4228" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4231" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.49497475" + inkscape:cx="596.83099" + inkscape:cy="659.30507" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4142" + cx="269.28571" + cy="190.21935" + r="13.141105" /> + <circle + r="13.141105" + cy="470.63928" + cx="802.48016" + id="circle4144" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="267.72015" + y="150.9595" + id="text4146" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4148" + x="267.72015" + y="150.9595">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4150">1</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4152" + y="460.49185" + x="837.86316" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="460.49185" + x="837.86316" + id="tspan4154" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4158">2</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4160" + y="178.65207" + x="113.20886" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="178.65207" + x="113.20886" + id="tspan4162" + sodipodi:role="line">(x<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4180">1</tspan>,y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4178">1</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="817.0473" + y="529.71088" + id="text4182" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4184" + x="817.0473" + y="529.71088">(x<tspan + id="tspan4186" + style="font-size:64.99999762%;baseline-shift:sub">2</tspan>,y<tspan + id="tspan4188" + style="font-size:64.99999762%;baseline-shift:sub">2</tspan>)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4622)" + d="m 269.71073,191.71224 0,272.93917" + id="path4190" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.90697932;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Mstart)" + d="m 782.93078,471.122 -512.2099,0" + id="path4192" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="452.44324" + y="517.38312" + id="text4182-2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4184-5" + x="452.44324" + y="517.38312">x<tspan + id="tspan4186-4" + style="font-size:64.99999762%;baseline-shift:sub">2</tspan>-x<tspan + id="tspan4188-5" + style="font-size:64.99999762%;baseline-shift:sub">1</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4614" + y="380.34897" + x="152.27205" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="380.34897" + x="152.27205" + id="tspan4616" + sodipodi:role="line">y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4618">2</tspan>-y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4620">1</tspan></tspan></text> + <path + inkscape:connector-curvature="0" + id="path4716" + d="M 269.71073,191.71224 791.91605,462.45778" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4718)" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="611.58893" + y="349.7601" + id="text5130" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5132" + x="611.58893" + y="349.7601">distance</tspan></text> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path5830" + d="m 258.28216,197.42653 0,113.16557" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker5832)" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker6528)" + d="m 258.28216,311.71224 228.57143,-2.54872" + id="path6526" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path7468" + d="M 280.42502,182.42653 496.85359,297.02067" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:9, 3;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker7470)" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="400" + y="223.07649" + id="text7888" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7890" + x="400" + y="223.07649">F</tspan></text> + <text + sodipodi:linespacing="125%" + id="text7892" + y="266.64792" + x="202.85715" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="266.64792" + x="202.85715" + id="tspan7894" + sodipodi:role="line">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan7896">y</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="356.42859" + y="354.50507" + id="text7898" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7900" + x="356.42859" + y="354.50507">F<tspan + id="tspan7902" + style="font-size:64.99999762%;baseline-shift:sub">x</tspan></tspan></text> + </g> +</svg> diff --git a/labs/lab4-barnes-hut-simulation/net-force.png b/labs/lab4-barnes-hut-simulation/net-force.png new file mode 100755 index 0000000000000000000000000000000000000000..0a24549d568fe8cdb5168bbf74dc03db5a41ded6 GIT binary patch literal 7672 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 W!lTof#_3sF0K(i3UVYK~-~R`1ry}<N literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/net-force.svg b/labs/lab4-barnes-hut-simulation/net-force.svg new file mode 100755 index 0000000..49e716b --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/net-force.svg @@ -0,0 +1,327 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="net-force.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\net-force.png" + inkscape:export-xdpi="44.869999" + inkscape:export-ydpi="44.869999"> + <defs + id="defs4"> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker4222" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:0.50289019;fill:#000000;fill-opacity:0.50289019" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4224" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker4214" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4216" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker4208" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4210" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker12608" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path12610" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker11876" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11878" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker10168" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path10170" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker7470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path7472" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker4622" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4624" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4228" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4231" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="742.82023" + inkscape:cy="615.35072" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path10486" + d="M 281.85359,190.99796 1066.8536,329.87782" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3,24;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4142" + cx="269.28571" + cy="190.21935" + r="13.141105" /> + <circle + r="13.141105" + cy="332.01859" + cx="1071.6188" + id="circle4144" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="267.72015" + y="162.38808" + id="text4146" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4148" + x="267.72015" + y="162.38808">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4150">1</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4152" + y="360.44257" + x="1098.4303" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="360.44257" + x="1098.4303" + id="tspan4154" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4158">2</tspan></tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4622)" + d="m 259.71073,187.42653 257.14285,45.7963" + id="path4190" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path5830" + d="M 273.99645,200.28367 659.71073,696.30638" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3,24;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="724.85712" + y="443.07648" + id="text7888" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7890" + x="724.85712" + y="443.07648">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan10448">net</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text7892" + y="192.36221" + x="402.85715" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="192.36221" + x="402.85715" + id="tspan7894" + sodipodi:role="line">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan7896">21</tspan></tspan></text> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.83889103, 3.91944551;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10168)" + d="M 271.13929,191.71224 699.0589,476.74351" + id="path10166" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="678.91986" + y="739.88269" + id="text10476" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan10478" + x="678.91986" + y="739.88269">m<tspan + id="tspan10480" + style="font-size:64.99999762%;baseline-shift:sub">3</tspan></tspan></text> + <circle + r="13.141105" + cy="704.74292" + cx="663.1554" + id="circle10482" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker11876)" + d="M 268.28215,190.28367 449.0589,429.60064" + id="path11874" + inkscape:connector-curvature="0" /> + <text + sodipodi:linespacing="125%" + id="text13116" + y="268.07651" + x="245.71429" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="268.07651" + x="245.71429" + id="tspan13118" + sodipodi:role="line">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan13120">31</tspan></tspan></text> + </g> +</svg> diff --git a/labs/lab4-barnes-hut-simulation/observation.png b/labs/lab4-barnes-hut-simulation/observation.png new file mode 100755 index 0000000000000000000000000000000000000000..722840d6db1e3cd4821265e9b05f781fc600ce25 GIT binary patch literal 11519 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 literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/observation.svg b/labs/lab4-barnes-hut-simulation/observation.svg new file mode 100755 index 0000000..b41f92d --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/observation.svg @@ -0,0 +1,407 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="observation.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\observation.png" + inkscape:export-xdpi="44.869999" + inkscape:export-ydpi="44.869999"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker12608" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path12610" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker11876" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11878" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker10168" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path10170" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker7470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path7472" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker4718" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:collect="always"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4720" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker4622" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4624" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4228" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4231" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.7" + inkscape:cx="557.69109" + inkscape:cy="615.35072" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4142" + cx="269.28571" + cy="190.21935" + r="13.141105" /> + <circle + r="13.141105" + cy="332.01859" + cx="1071.6188" + id="circle4144" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="267.72015" + y="162.38808" + id="text4146" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4148" + x="267.72015" + y="162.38808">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4150">1</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4152" + y="360.44257" + x="1098.4303" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="360.44257" + x="1098.4303" + id="tspan4154" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4158">2</tspan></tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4622)" + d="m 259.71073,187.42653 152.85714,25.7963" + id="path4190" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + inkscape:connector-curvature="0" + id="path4716" + d="M 262.56786,184.56938 390.48747,293.88635" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker4718)" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path5830" + d="M 273.99645,200.28367 659.71073,696.30638" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3,24;stroke-dashoffset:0;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path7468" + d="M 277.56788,196.71225 898.28217,742.73496" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3,24;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="677.71429" + y="470.21933" + id="text7888" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7890" + x="677.71429" + y="470.21933">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan10448">net</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text7892" + y="192.36221" + x="402.85715" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="192.36221" + x="402.85715" + id="tspan7894" + sodipodi:role="line">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan7896">21</tspan></tspan></text> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle8064" + cx="898.1554" + cy="741.17151" + r="13.141105" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="914.96698" + y="778.88129" + id="text8066" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan8068" + x="914.96698" + y="778.88129">m<tspan + id="tspan8070" + style="font-size:64.99999762%;baseline-shift:sub">3</tspan></tspan></text> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:7.83889103, 3.91944551;stroke-dashoffset:0;stroke-opacity:1;marker-end:url(#marker10168)" + d="M 271.13929,191.71224 661.91604,423.88636" + id="path10166" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="335.71429" + y="329.50507" + id="text10450" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan10452" + x="335.71429" + y="329.50507">F<tspan + id="tspan10454" + style="font-size:64.99999762%;baseline-shift:sub">31</tspan></tspan></text> + <circle + r="13.141105" + cy="497.88727" + cx="1058.5369" + id="circle10468" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text10470" + y="527.02557" + x="1083.2056" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="527.02557" + x="1083.2056" + id="tspan10472" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan10474">4</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="678.91986" + y="739.88269" + id="text10476" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan10478" + x="678.91986" + y="739.88269">m<tspan + id="tspan10480" + style="font-size:64.99999762%;baseline-shift:sub">5</tspan></tspan></text> + <circle + r="13.141105" + cy="704.74292" + cx="663.1554" + id="circle10482" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3,24;stroke-dashoffset:0;stroke-opacity:1" + d="M 281.85359,190.99796 1056.8536,497.02068" + id="path10484" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path10486" + d="M 281.85359,190.99796 1066.8536,329.87782" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:3,24;stroke-dashoffset:0;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker11876)" + d="m 268.28215,190.28367 59.34818,80.74554" + id="path11874" + inkscape:connector-curvature="0" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:3.91944551;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker12608)" + d="M 266.85357,188.85509 493.34462,276.7435" + id="path12606" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="498.57144" + y="269.50507" + id="text13110" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan13112" + x="498.57144" + y="269.50507">F<tspan + id="tspan13114" + style="font-size:64.99999762%;baseline-shift:sub">41</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text13116" + y="268.07651" + x="245.71429" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="268.07651" + x="245.71429" + id="tspan13118" + sodipodi:role="line">F<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan13120">51</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="991.77698" + y="642.73987" + id="text13406" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan13408" + x="991.77698" + y="642.73987">M<tspan + id="tspan13410" + style="font-size:64.99999762%;baseline-shift:sub" /></tspan></text> + <circle + r="24.149361" + cy="598.31439" + cx="961.01251" + id="circle13404" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:10, 5;stroke-dashoffset:0;stroke-opacity:1" /> + </g> +</svg> diff --git a/labs/lab4-barnes-hut-simulation/quadtree.png b/labs/lab4-barnes-hut-simulation/quadtree.png new file mode 100755 index 0000000000000000000000000000000000000000..6db7c2139831b26340ee4480912c61de70f1d379 GIT binary patch literal 34247 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 T$zsO<kiT~d8uE3r7UBO7hR^y~ literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/quadtree.svg b/labs/lab4-barnes-hut-simulation/quadtree.svg new file mode 100755 index 0000000..e36aff0 --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/quadtree.svg @@ -0,0 +1,789 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="quadtree.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\quadtree.png" + inkscape:export-xdpi="32.65155" + inkscape:export-ydpi="32.65155"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker15906" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path15908" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker15660" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend" + inkscape:collect="always"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path15662" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker15306" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path15308" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker15086" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path15088" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="marker15028" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path15030" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker12608" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path12610" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker11876" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11878" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker10168" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path10170" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker7470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="scale(0.4) rotate(180) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path7472" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4228" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path4231" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) rotate(180) translate(10,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.175" + inkscape:cx="1095.4717" + inkscape:cy="135.41975" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" + inkscape:snap-text-baseline="false" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4142" + cx="83.397331" + cy="151.83354" + r="13.141105" /> + <circle + r="13.141105" + cy="721.93744" + cx="1136.2686" + id="circle4144" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="-17.160173" + y="189.79347" + id="text4146" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4148" + x="-17.160173" + y="189.79347">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4150">A</tspan></tspan></text> + <text + sodipodi:linespacing="125%" + id="text4152" + y="748.34113" + x="1165.1003" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="748.34113" + x="1165.1003" + id="tspan4154" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan4158">E</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1152.1206" + y="688.21014" + id="text7888" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan7890" + x="1152.1206" + y="688.21014">(x<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14976">E</tspan>,y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14974">E</tspan>)</tspan></text> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle8064" + cx="1028.7399" + cy="1033.1528" + r="13.141105" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1045.5515" + y="1070.8625" + id="text8066" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan8068" + x="1045.5515" + y="1070.8625">m<tspan + id="tspan8070" + style="font-size:64.99999762%;baseline-shift:sub">C</tspan></tspan></text> + <circle + r="13.141105" + cy="653.45074" + cx="741.34894" + id="circle10468" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text10470" + y="682.58905" + x="766.01764" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="682.58905" + x="766.01764" + id="tspan10472" + sodipodi:role="line">m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan10474">D</tspan></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="743.56964" + y="1123.7406" + id="text10476" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan10478" + x="743.56964" + y="1123.7406">m<tspan + id="tspan10480" + style="font-size:64.99999762%;baseline-shift:sub">B</tspan></tspan></text> + <circle + r="13.141105" + cy="1088.6008" + cx="727.80518" + id="circle10482" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="966.52319" + y="915.48102" + id="text13406" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan13408" + x="966.52319" + y="915.48102">mass</tspan></text> + <circle + r="24.149361" + cy="902.3703" + cx="916.56573" + id="circle13404" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:10, 5;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.00350261;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle14942" + cx="1019.0909" + cy="35.033726" + r="13.141105" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1029.74" + y="8.9094801" + id="text14944" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan14946" + x="1029.74" + y="8.9094801">m<tspan + id="tspan14948" + style="font-size:64.99999762%;baseline-shift:sub">F</tspan></tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect14952" + width="1052.579" + height="1052.579" + x="82.832512" + y="36.148746" /> + <rect + y="558.17084" + x="604.85461" + height="531.79376" + width="531.79376" + id="rect14954" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect14956" + width="521.14429" + height="521.14429" + x="84.185783" + y="37.502014" /> + <rect + y="-822.98016" + x="-869.66394" + height="264.46457" + width="264.46457" + id="rect14958" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + transform="scale(-1,-1)" /> + <rect + transform="scale(-1,-1)" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect14960" + width="265.25757" + height="265.25757" + x="-1134.2817" + y="-1087.5979" /> + <text + sodipodi:linespacing="125%" + id="text14978" + y="619.51978" + x="717.755" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="619.51978" + x="717.755" + id="tspan14980" + sodipodi:role="line">(x<tspan + id="tspan14982" + style="font-size:64.99999762%;baseline-shift:sub">D</tspan>,y<tspan + id="tspan14984" + style="font-size:64.99999762%;baseline-shift:sub">D</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="704.62305" + y="1058.9362" + id="text14986" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan14988" + x="704.62305" + y="1058.9362">(x<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14990">B</tspan>,y<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan14992">B</tspan>)</tspan></text> + <text + sodipodi:linespacing="125%" + id="text14994" + y="1004.3879" + x="991.50635" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1004.3879" + x="991.50635" + id="tspan14996" + sodipodi:role="line">(x<tspan + id="tspan14998" + style="font-size:64.99999762%;baseline-shift:sub">C</tspan>,y<tspan + id="tspan15000" + style="font-size:64.99999762%;baseline-shift:sub">C</tspan>)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:100%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="888.2475" + y="861.99701" + id="text15002" + sodipodi:linespacing="100%" + inkscape:export-xdpi="34.630001" + inkscape:export-ydpi="34.630001"><tspan + sodipodi:role="line" + id="tspan15004" + x="888.2475" + y="861.99701" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:30px;line-height:100%;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Normal';text-align:start;writing-mode:lr-tb;text-anchor:start">(mass<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan15020">X</tspan>,mass<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan15016">Y</tspan>)</tspan></text> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path15022" + cx="-218.31874" + cy="1531.9603" + r="74.751289" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:4.89491892;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker15028);marker-end:url(#marker15086)" + d="m 611.75315,1157.4181 516.98645,0" + id="path15026" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="825.29462" + y="1220.0476" + id="text15252" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan15254" + x="825.29462" + y="1220.0476">size<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan15256">SE</tspan></tspan></text> + <circle + r="74.751289" + cy="1300.5319" + cx="301.68127" + id="circle15266" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + r="74.751289" + cy="1531.9603" + cx="130.25279" + id="circle15268" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + r="74.751289" + cy="1531.9603" + cx="495.96689" + id="circle15270" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle15272" + cx="861.68121" + cy="1531.9603" + r="74.751289" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="253.18787" + y="1313.6995" + id="text15274" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan15276" + x="253.18787" + y="1313.6995">Fork</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker12608)" + d="m 229.18777,1310.8423 -392.8572,165.7143" + id="path15278" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + inkscape:connector-curvature="0" + id="path15304" + d="m 256.33057,1357.9852 -85.7143,108.5714" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15306)" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path15658" + d="m 350.61637,1359.4137 104.2857,108.5715" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15660)" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15906)" + d="m 376.33067,1312.2709 425.7143,164.2857" + id="path15904" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="20.037586" + y="1358.3875" + id="text16312" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16314" + x="20.037586" + y="1358.3875">nw</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="143.27599" + y="1409.9053" + id="text16316" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16318" + x="143.27599" + y="1409.9053">ne</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="412.98669" + y="1405.8646" + id="text16320" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16322" + x="412.98669" + y="1405.8646">sw</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="537.23566" + y="1364.4484" + id="text16324" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16326" + x="537.23566" + y="1364.4484">se</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16328" + y="1544.2709" + x="430.90222" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1544.2709" + x="430.90222" + id="tspan16330" + sodipodi:role="line">Empty</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:111.40943146px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="97.928688" + y="1576.5566" + id="text16332" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16334" + x="97.928688" + y="1576.5566">F</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16342" + y="1574.5566" + x="-253.49989" + style="font-style:normal;font-weight:normal;font-size:111.40943146px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1574.5566" + x="-253.49989" + id="tspan16344" + sodipodi:role="line">A</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16916" + y="1542.2709" + x="813.18781" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1542.2709" + x="813.18781" + id="tspan16918" + sodipodi:role="line">Fork</tspan></text> + <circle + r="74.751289" + cy="1766.2461" + cx="338.8241" + id="circle16920" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle16922" + cx="687.39557" + cy="1766.2461" + r="74.751289" /> + <circle + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle16924" + cx="1053.1097" + cy="1766.2461" + r="74.751289" /> + <circle + r="74.751289" + cy="1766.2461" + cx="1418.8241" + id="circle16926" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path16928" + d="m 786.33067,1545.128 -392.8572,165.7143" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker12608)" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15306)" + d="m 813.47347,1592.2709 -85.7143,108.5714" + id="path16930" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15660)" + d="m 907.75927,1593.6994 104.28563,108.5715" + id="path16932" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + inkscape:connector-curvature="0" + id="path16934" + d="m 933.47357,1546.5566 425.71423,164.2857" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:url(#marker15906)" /> + <text + sodipodi:linespacing="125%" + id="text16936" + y="1584.1017" + x="605.75201" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1584.1017" + x="605.75201" + id="tspan16938" + sodipodi:role="line">nw</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16940" + y="1644.1909" + x="700.41876" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1644.1909" + x="700.41876" + id="tspan16942" + sodipodi:role="line">ne</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16944" + y="1640.1503" + x="970.12946" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1640.1503" + x="970.12946" + id="tspan16946" + sodipodi:role="line">sw</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16948" + y="1598.7341" + x="1094.3785" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1598.7341" + x="1094.3785" + id="tspan16950" + sodipodi:role="line">se</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16956" + y="1810.8424" + x="655.07159" + style="font-style:normal;font-weight:normal;font-size:111.40943146px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1810.8424" + x="655.07159" + id="tspan16958" + sodipodi:role="line">E</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:111.40943146px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="303.64294" + y="1808.8424" + id="text16960" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16962" + x="303.64294" + y="1808.8424">D</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:111.40943146px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1383.6429" + y="1807.9852" + id="text16968" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16970" + x="1383.6429" + y="1807.9852">C</tspan></text> + <text + sodipodi:linespacing="125%" + id="text16972" + y="1808.8424" + x="1017.9285" + style="font-style:normal;font-weight:normal;font-size:111.40943146px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="1808.8424" + x="1017.9285" + id="tspan16974" + sodipodi:role="line">B</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="918.23126" + y="1466.4738" + id="text16976" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan16978" + x="918.23126" + y="1466.4738">mass = m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan16980">D</tspan> + m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan16982">E</tspan> + m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan16984">B</tspan> + m<tspan + style="font-size:64.99999762%;baseline-shift:sub" + id="tspan16986">C</tspan></tspan></text> + </g> +</svg> diff --git a/labs/lab4-barnes-hut-simulation/sectormatrix.png b/labs/lab4-barnes-hut-simulation/sectormatrix.png new file mode 100755 index 0000000000000000000000000000000000000000..3d95d1fe934fd00122e95803dc3e2fa6a1789feb GIT binary patch literal 12598 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 literal 0 HcmV?d00001 diff --git a/labs/lab4-barnes-hut-simulation/sectormatrix.svg b/labs/lab4-barnes-hut-simulation/sectormatrix.svg new file mode 100755 index 0000000..e9c1838 --- /dev/null +++ b/labs/lab4-barnes-hut-simulation/sectormatrix.svg @@ -0,0 +1,477 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="210mm" + height="297mm" + viewBox="0 0 744.09448819 1052.3622047" + id="svg2" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="sectormatrix.svg" + inkscape:export-filename="C:\cygwin\home\axel22\workspaces\scala\parprog\statements\barneshut\sectormatrix.png" + inkscape:export-xdpi="32.6516" + inkscape:export-ydpi="32.6516"> + <defs + id="defs4"> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="marker4830" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4832" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker4542" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Mstart" + inkscape:collect="always"> + <path + transform="scale(0.4) translate(10,0)" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path4544" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path4196" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.4) translate(10,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Sstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path4202" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.2) translate(6,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="0.49497475" + inkscape:cx="692.30131" + inkscape:cy="448.67197" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1600" + inkscape:window-height="877" + inkscape:window-x="-4" + inkscape:window-y="-4" + inkscape:window-maximized="1" /> + <metadata + id="metadata7"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1"> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4138" + width="157.25688" + height="157.25688" + x="160.41716" + y="293.24829" /> + <rect + y="293.24829" + x="317.80426" + height="157.25688" + width="157.25688" + id="rect4140" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="293.24829" + x="474.40179" + height="157.25688" + width="157.25688" + id="rect4142" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4144" + width="157.25688" + height="157.25688" + x="631.78894" + y="293.24829" /> + <rect + y="450.89859" + x="160.41716" + height="157.25688" + width="157.25688" + id="rect4146" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4148" + width="157.25688" + height="157.25688" + x="317.80426" + y="450.89859" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4150" + width="157.25688" + height="157.25688" + x="474.40179" + y="450.89859" /> + <rect + y="450.89859" + x="631.78894" + height="157.25688" + width="157.25688" + id="rect4152" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="608.02252" + x="160.41716" + height="157.25688" + width="157.25688" + id="rect4154" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4156" + width="157.25688" + height="157.25688" + x="317.80426" + y="608.02252" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4158" + width="157.25688" + height="157.25688" + x="474.40179" + y="608.02252" /> + <rect + y="608.02252" + x="631.78894" + height="157.25688" + width="157.25688" + id="rect4160" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4162" + width="157.25688" + height="157.25688" + x="160.41716" + y="765.67279" /> + <rect + y="765.67279" + x="317.80426" + height="157.25688" + width="157.25688" + id="rect4164" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="765.67279" + x="474.40179" + height="157.25688" + width="157.25688" + id="rect4166" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.60580969;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4168" + width="157.25688" + height="157.25688" + x="631.78894" + y="765.67279" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="path4170" + cx="435" + cy="491.64792" + r="13.571428" /> + <circle + r="13.571428" + cy="854.50507" + cx="699.28577" + id="circle4172" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4174" + cx="769.28577" + cy="824.50507" + r="13.571428" /> + <circle + r="13.571428" + cy="894.50507" + cx="790.71436" + id="circle4176" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4178" + cx="726.42865" + cy="295.93362" + r="13.571428" /> + <circle + r="13.571428" + cy="805.93365" + cx="267.85727" + id="circle4180" + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <circle + style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="circle4182" + cx="555.20319" + cy="717.37964" + r="13.571428" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:15, 5;stroke-dashoffset:0;marker-start:url(#Arrow1Mstart)" + d="m 721.42857,569.50506 c 250,-70 350.00003,-5.71428 350.00003,-5.71428" + id="path4184" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1090" + y="582.36218" + id="text4530" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4532" + x="1090" + y="582.36218" + style="-inkscape-font-specification:'Andale Mono';font-family:'Andale Mono';font-weight:normal;font-style:normal;font-stretch:normal;font-variant:normal">ConcBuffer[Body]</tspan></text> + <path + inkscape:connector-curvature="0" + id="path4540" + d="m 738.57143,392.3622 c 250,-70 395.71437,142.85715 395.71437,142.85715" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:15, 5;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker4542)" + sodipodi:nodetypes="cc" /> + <path + sodipodi:nodetypes="cc" + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:15, 5;stroke-dashoffset:0;stroke-opacity:1;marker-start:url(#marker4830)" + d="m 725.71429,699.50506 c 280.00001,38.57143 402.85731,-92.85714 402.85731,-92.85714" + id="path4828" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="171.72594" + y="345.25543" + id="text5218" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5220" + x="171.72594" + y="345.25543">0,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5222" + y="345.25543" + x="341.43158" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="341.43158" + id="tspan5224" + sodipodi:role="line">1,0</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="494.97476" + y="345.25543" + id="text5226" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5228" + x="494.97476" + y="345.25543">2,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5230" + y="345.25543" + x="650.53827" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="345.25543" + x="650.53827" + id="tspan5232" + sodipodi:role="line">3,0</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5234" + y="504.85953" + x="171.72594" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="171.72594" + id="tspan5236" + sodipodi:role="line">0,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="341.43158" + y="504.85953" + id="text5238" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5240" + x="341.43158" + y="504.85953">1,1</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5242" + y="504.85953" + x="494.97476" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="504.85953" + x="494.97476" + id="tspan5244" + sodipodi:role="line">2,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="650.53827" + y="504.85953" + id="text5246" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5248" + x="650.53827" + y="504.85953">3,1</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="171.72594" + y="656.38239" + id="text5250" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5252" + x="171.72594" + y="656.38239">0,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5254" + y="656.38239" + x="341.43158" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="341.43158" + id="tspan5256" + sodipodi:role="line">1,2</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="494.97476" + y="656.38239" + id="text5258" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5260" + x="494.97476" + y="656.38239">2,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5262" + y="656.38239" + x="650.53827" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="656.38239" + x="650.53827" + id="tspan5264" + sodipodi:role="line">3,2</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5266" + y="813.96619" + x="171.72594" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="171.72594" + id="tspan5268" + sodipodi:role="line">0,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="341.43158" + y="813.96619" + id="text5270" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5272" + x="341.43158" + y="813.96619">1,3</tspan></text> + <text + sodipodi:linespacing="125%" + id="text5274" + y="813.96619" + x="494.97476" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="813.96619" + x="494.97476" + id="tspan5276" + sodipodi:role="line">2,3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="650.53827" + y="813.96619" + id="text5278" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5280" + x="650.53827" + y="813.96619">3,3</tspan></text> + </g> +</svg> -- GitLab