diff --git a/labs/lab4-barnes-hut-simulation/README.md b/labs/lab4-barnes-hut-simulation/README.md new file mode 100755 index 0000000000000000000000000000000000000000..85f0582b224c3dc1963102b79fe65dbfed2b886e --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/cell.png differ diff --git a/labs/lab4-barnes-hut-simulation/cell.svg b/labs/lab4-barnes-hut-simulation/cell.svg new file mode 100755 index 0000000000000000000000000000000000000000..28ac7ec2f09622bcddfd8bce0f1894b12338af30 --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/combine.png differ diff --git a/labs/lab4-barnes-hut-simulation/combine.svg b/labs/lab4-barnes-hut-simulation/combine.svg new file mode 100755 index 0000000000000000000000000000000000000000..09fb5286d7e6f23a9e1274a6cc70ae1476562769 --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/force-components.png differ 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 0000000000000000000000000000000000000000..265c77f152b2ad67570dc885c8d7c73a85976350 --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/net-force.png differ 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 0000000000000000000000000000000000000000..49e716b6bed3eb6b3ba4f656289e2e2ac2896549 --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/observation.png differ diff --git a/labs/lab4-barnes-hut-simulation/observation.svg b/labs/lab4-barnes-hut-simulation/observation.svg new file mode 100755 index 0000000000000000000000000000000000000000..b41f92d7936430e19f2daf1f4d0b4e24d9b89d28 --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/quadtree.png differ diff --git a/labs/lab4-barnes-hut-simulation/quadtree.svg b/labs/lab4-barnes-hut-simulation/quadtree.svg new file mode 100755 index 0000000000000000000000000000000000000000..e36aff055bc0fb5f3c4599a855e54d814e72b296 --- /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 Binary files /dev/null and b/labs/lab4-barnes-hut-simulation/sectormatrix.png differ diff --git a/labs/lab4-barnes-hut-simulation/sectormatrix.svg b/labs/lab4-barnes-hut-simulation/sectormatrix.svg new file mode 100755 index 0000000000000000000000000000000000000000..e9c18380570ae70575c148b07bddf03cc51c82cd --- /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>