diff --git a/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/TwoPointFixedAttractionGenerator.java b/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/TwoPointFixedAttractionGenerator.java new file mode 100644 index 0000000000000000000000000000000000000000..7f0e76a519466a7f7698e1b65409351e4a61469c --- /dev/null +++ b/src/de/tud/kom/p2psim/impl/topology/movement/modularosm/attraction/TwoPointFixedAttractionGenerator.java @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2005-2010 KOM – Multimedia Communications Lab + * + * This file is part of PeerfactSim.KOM. + * + * PeerfactSim.KOM is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * any later version. + * + * PeerfactSim.KOM is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with PeerfactSim.KOM. If not, see . + * + */ + +package de.tud.kom.p2psim.impl.topology.movement.modularosm.attraction; + +import java.util.List; +import de.tud.kom.p2psim.api.topology.Topology; +import de.tud.kom.p2psim.impl.topology.util.PositionVector; +import de.tudarmstadt.maki.simonstrator.api.Binder; +import de.tudarmstadt.maki.simonstrator.api.component.sensor.location.AttractionPoint; + +/** + * Implementation of the interface {@link AttractionGenerator}. + * + * Generates the given number of {@link AttractionPoint}s and sets the + * position randomly within the world dimensions. + * + * @author Julian Zobel + * @version 1.0, Nov 2018 + */ +public class TwoPointFixedAttractionGenerator implements IAttractionGenerator { + + private PositionVector worldDimension; + + public TwoPointFixedAttractionGenerator() { + + this.worldDimension = Binder.getComponentOrNull(Topology.class) + .getWorldDimensions(); + + createAttractionPoints(); + } + + @Override + public List getAttractionPoints() { + if(attractionPoints.isEmpty()) + createAttractionPoints(); + + return attractionPoints; + } + + private void createAttractionPoints() { + + double x = worldDimension.getX(); + double y = worldDimension.getY(); + + PositionVector p1 = new PositionVector(0 + 0.1 * x, y/2); + AttractionPoint ap1 = new AttractionPointImpl("AP1", p1); + attractionPoints.add(ap1); + + PositionVector p2 = new PositionVector(0.9 * x, y/2); + AttractionPoint ap2 = new AttractionPointImpl("AP2", p2); + attractionPoints.add(ap2); + } + + +}