Example usage for org.apache.commons.math3.geometry.euclidean.twod Vector2D getX

List of usage examples for org.apache.commons.math3.geometry.euclidean.twod Vector2D getX

Introduction

In this page you can find the example usage for org.apache.commons.math3.geometry.euclidean.twod Vector2D getX.

Prototype

public double getX() 

Source Link

Document

Get the abscissa of the vector.

Usage

From source file:edu.unc.cs.gamma.rvo.RVOMath.java

/**
 * Computes the determinant of a two-dimensional square matrix with rows
 * consisting of the specified two-dimensional vectors.
 *
 * @param vector1 The top row of the two-dimensional square matrix.
 * @param vector2 The bottom row of the two-dimensional square matrix.
 * @return The determinant of the two-dimensional square matrix.
 *///from  w w  w.  jav a 2 s  .  c om
static double det(Vector2D vector1, Vector2D vector2) {
    return vector1.getX() * vector2.getY() - vector1.getY() * vector2.getX();
}

From source file:haxball.util.Serializer.java

public static byte[] serializePoint(@NonNull Vector2D p) {
    byte x[] = floatToByteArray((float) p.getX());
    byte y[] = floatToByteArray((float) p.getY());
    return new byte[] { x[0], x[1], x[2], x[3], y[0], y[1], y[2], y[3] };
}

From source file:de.thkwalter.et.ortskurve.Startpunktbestimmung.java

/**
 * Diese Methode bestimmt die Messpunkte, die zur Startpunktbestimmung verwendet werden. Das sind die beiden
 * Messpunkte mit dem grten bzw. kleinsten y-Komponente (Realteil des Stroms) und der Messpunkt, dessen y-Komponente 
 * am nhesten zum Mittelwert aus der grten und der kleinsten auftreteten y-Komponente liegt.
 *//*  www  . ja  va  2  s . c  o  m*/
private static Vector2D[] messpunkteAuswaehlen(Vector2D[] messpunkte) {
    // Zwei Listen mit den Messpunkten werden erstellt.
    ArrayList<XKomponenteMesspunkt> xListe = new ArrayList<XKomponenteMesspunkt>();
    ArrayList<YKomponenteMesspunkt> yListe = new ArrayList<YKomponenteMesspunkt>();

    // Die Listen werden mit den Messpunkten initialisiert.
    for (Vector2D messpunkt : messpunkte) {
        xListe.add(new XKomponenteMesspunkt(messpunkt));
        yListe.add(new YKomponenteMesspunkt(messpunkt));
    }

    // Die Messpunkte mit der grten und kleinsten x-Komponente werden bestimmt.
    Vector2D maxXMesspunkt = Startpunktbestimmung.maxMesspunktBestimmen(xListe);
    Vector2D minXMesspunkt = Startpunktbestimmung.minMesspunktBestimmen(xListe);

    // Die Messpunkte mit der grten und kleinsten y-Komponente werden bestimmt.
    Vector2D maxYMesspunkt = Startpunktbestimmung.maxMesspunktBestimmen(yListe);
    Vector2D minYMesspunkt = Startpunktbestimmung.minMesspunktBestimmen(yListe);

    // Die Messpunkte, die bei der Startpunktbestimmung verwendet werden, werden deklariert.
    Vector2D maxMesspunkt = null;
    Vector2D minMesspunkt = null;
    Vector2D mittlererMesspunkt = null;

    // Falls der Wertebereich der x-Komponente der Messpunkte grer ist als der Wertebereich der y-Komponente, ...
    if (maxXMesspunkt.getX() - minXMesspunkt.getX() > maxYMesspunkt.getY() - minYMesspunkt.getY()) {
        // Die Messpunkte mit der grten und kleinsten x-Kompomnente werden bei der Startpunktbestimmung verwendet.
        maxMesspunkt = maxXMesspunkt;
        minMesspunkt = minXMesspunkt;
        mittlererMesspunkt = Startpunktbestimmung.mittlerenMesspunktBestimmen(xListe,
                0.5 * (maxXMesspunkt.getX() + minXMesspunkt.getX()));
    }

    // Falls der Wertebereich der x-Komponente der Messpunkte nicht grer ist als der Wertebereich der y-Komponente, ...
    else {
        // Die Messpunkte mit der grten und kleinsten y-Kompomnente werden bei der Startpunktbestimmung verwendet.
        maxMesspunkt = maxYMesspunkt;
        minMesspunkt = minYMesspunkt;
        mittlererMesspunkt = Startpunktbestimmung.mittlerenMesspunktBestimmen(yListe,
                0.5 * (maxYMesspunkt.getY() + minYMesspunkt.getY()));
    }

    // Die Messpunkte, die zur Startpunktbestimmung verwendet werden, werden zurckgegeben.
    return new Vector2D[] { maxMesspunkt, minMesspunkt, mittlererMesspunkt };
}

From source file:de.thkwalter.koordinatensystem.Achsendimensionierung.java

/**
 * Diese Methode bestimmt die Wertebereiche in x- und y-Richtung.
 * /*from   w  w w  .j  a  v a  2s  . co m*/
 * @param punkte Die Punktemenge.
 * 
 * @return Der Wertebereich der Punktemenge.
 */
private Wertebereich wertebereichBestimmen(Vector2D[] punkte) {
    // Die Objekte, die zur Bestimmung der minimalen und maximalen Werte verwendet werden, werden erzeugt.
    SummaryStatistics summaryStatisticsX = new SummaryStatistics();
    SummaryStatistics summaryStatisticsY = new SummaryStatistics();

    // Die Objekte, die zur Bestimmung der minimalen und maximalen Werte verwendet werden, werden initialisiert.
    for (Vector2D punkt : punkte) {
        summaryStatisticsX.addValue(punkt.getX());
        summaryStatisticsY.addValue(punkt.getY());
    }

    // Die Maxima und Minima werden bestimmt.
    double maxX = summaryStatisticsX.getMax();
    double maxY = summaryStatisticsY.getMax();
    double minX = summaryStatisticsX.getMin();
    double minY = summaryStatisticsY.getMin();

    // Der maximale Wertebereich der Punktemenge wird zurckgegeben.
    return new Wertebereich(maxX, maxY, minX, minY);
}

From source file:io.lonelyrobot.empires.fw.game.obj.BaseObject.java

/**
 * This function is called recursively from the {@link Star}, updating it's children
 * with an offset of {0, 0}. These children then move themselves according to the
 * position of their parent and then pass this offset to their children. These children
 * move themselves by the offset and then calculate their additional offset.
 * /*from   w  ww .  j  a v  a 2  s  . c  om*/
 * @param parentOffset
 */
public void updateOrbits(Vector2D parentOffset) {
    Vector2D offset = new Vector2D(0, 0);

    if (orbit != null && orbit.getParent() != null) {

        Vector2D p = orbit.getParent().getSolPos();

        /** Calculate own offset */
        double x = p.getX() + orbit.getRadius() * Math.cos(orbit.getStep());
        double y = p.getY() + orbit.getRadius() * Math.sin(orbit.getStep());

        orbit.setStep(orbit.getStep() + orbit.getStepSpeed());

        Vector2D newPos = new Vector2D(x, y);
        newPos.add(parentOffset);
        // offset.add(new Vector2D(x, y));

        /** Add the parent offset on top */
        // offset.add(parentOffset);

        offset.add(newPos);

        /** Apply position to self */
        this.setSolPos(newPos);

    }

    /** Only propagate orbital offsets if self is Orbitable */
    if (!(this instanceof Orbitable))
        return;

    /** Call function for all children with the new (accumilated) offset */
    Tools.safe(orbit.getChildren()).forEach((i) -> i.updateOrbits(offset));
}

From source file:de.thkwalter.jsf.converter.CSVConverter.java

/**
 * Diese Methode konvertiert ein Feld von {@link Vector2D}-Objekten in eine Zeichenketten im CSV-Format. Zwei Datenstze 
 * der Zeichenkette sind jeweils durch einen Zeilenumbruch getrennt. Jeder Datensatz besteht aus zwei Datenfeldern, die 
 * durch ein Komma getrennt sind. Jedes Datenfeld besteht aus einem double-Wert.
 *  /*from   w  w  w  .  jav a  2s .  c  o m*/
 * @param facesContext Das Kontext-Objekt
 * @param uiComponent Die UI-Komponente, welche das Ziel der Zeichenkette ist.
 * @param vektoren Das bergebene Feld von {@link Vector2D}-Objekten.
 * 
 * @return Eine Zeichenketten im CSV-Format.
 * 
 * @see javax.faces.convert.Converter#getAsString(javax.faces.context.FacesContext, javax.faces.component.UIComponent, 
 * java.lang.Object)
 */
@Override
public String getAsString(FacesContext facesContext, UIComponent uiComponent, Object vektoren) {
    // Der StringBuffer wird mit einer leeren Zeichenkette initialisiert.
    StringBuffer stringBuffer = new StringBuffer("");

    try {
        // Falls das Feld nicht null ist, wird es konvertiert.
        if (vektoren != null) {
            // Das bergebene Object wird in ein Feld von Vector2D-Objekten umgewandelt.
            Vector2D[] punkte = (Vector2D[]) vektoren;

            // In dieser Schleife werden alle Vektoren zu einer Zeichenkette verknpft.
            for (Vector2D punkt : punkte) {
                stringBuffer.append(punkt.getX()).append(", ").append(punkt.getY()).append("\n");
            }
        }
    }

    // Falls eine Ausnahme geworfen worden ist, wird diese behandelt.
    catch (Exception exception) {
        // Die Fehlermeldung wird erstellt und protokolliert.
        String fehlermeldung = "Das Feld der Vektoren kann nicht konvertiert werden! Fehlertext: "
                + exception.getMessage();
        CSVConverter.logger.log(Level.SEVERE, fehlermeldung);

        // Eine ConverterException wird geworfen.
        throw new ConverterException(exception.getMessage());
    }

    // Die zusammengebaute Zeichenkette wird zurckgegeben.
    return stringBuffer.toString();
}

From source file:edu.stanford.cfuller.imageanalysistools.filter.VoronoiFilter.java

/**
* Checks whether a given coordinate would be on a boundary of a 
* Voronoi diagram created from the given points.
*
**//*  ww  w .j a  v a  2  s . c  o m*/
public boolean isOnEightConnectedBoundary(java.util.List<Vector2D> points, ImageCoordinate ic) {

    int x = ic.get(ImageCoordinate.X);
    int y = ic.get(ImageCoordinate.Y);

    int closestIndex = 0;
    int nextIndex = 0;
    double closestDist = Double.MAX_VALUE;
    double nextDist = Double.MAX_VALUE;

    for (int i = 0; i < points.size(); i++) {

        Vector2D pt = points.get(i);

        double dist = Math.hypot(pt.getX() - x, pt.getY() - y);

        if (dist < closestDist) {

            nextDist = closestDist;
            nextIndex = closestIndex;
            closestDist = dist;
            closestIndex = i;

        } else if (dist < nextDist) {
            nextDist = dist;
            nextIndex = i;
        }

    }

    Vector2D projectedCoordinate = this.projectPointOntoVector(points.get(closestIndex), new Vector2D(x, y),
            points.get(nextIndex));

    double distToNext = points.get(nextIndex).subtract(projectedCoordinate).getNorm();

    double distToClosest = points.get(closestIndex).subtract(projectedCoordinate).getNorm();

    final double cutoff = 1.3 * Math.sqrt(2);

    if (distToNext - distToClosest < cutoff) {
        return true;
    }

    return false;

}

From source file:edu.stanford.cfuller.imageanalysistools.util.VoronoiDiagram.java

protected Hyperplane<Euclidean2D> constructBisectingHyperplane(Vector2D firstPoint, Vector2D secondPoint) {

    Vector2D middlePoint = firstPoint.add(secondPoint).scalarMultiply(0.5);
    Vector2D difference = secondPoint.subtract(firstPoint);

    double angle = Math.atan2(difference.getY(), difference.getX());

    angle -= Math.PI / 2.0; // rotate 90 degrees

    Line bisector = new Line(middlePoint, angle);

    return bisector;

}

From source file:de.thkwalter.et.ortskurve.XKomponenteMesspunktTest.java

/**
 * Test fr die Methode {@link de.thkwalter.et.ortskurve.XKomponenteMesspunkt#getWert()}.
 *//*w ww.  j a va  2 s .c om*/
@Test
public void testGetWert() {
    // Ein Messpunkt wird erzeugt.
    Vector2D messpunkt = new Vector2D(1.0, 2.0);

    // Das Objekt, das fr die Tests verwendet wird, wird erzeugt.
    KomponenteMesspunkt xKomponenteMesspunkt = new XKomponenteMesspunkt(messpunkt);

    // Es wird geprft, ob die Methode getWert() den Wert der x-Komponente zurckgibt.
    assertEquals(messpunkt.getX(), xKomponenteMesspunkt.getWert(), messpunkt.getX() / 1000);
}

From source file:edu.stanford.cfuller.imageanalysistools.filter.VoronoiFilter.java

/**
  * Applies the Filter to the supplied Image.
  * @param im    The Image to whose labeled region will be converted to a Voronoi diagram.
  */// w  w w  .  j av  a2 s  .c o m
@Override
public void apply(WritableImage im) {

    Map<Integer, Vector2D> regionCentroids = new java.util.HashMap<Integer, Vector2D>();

    for (ImageCoordinate ic : im) {

        int label = (int) im.getValue(ic);

        if (label == 0)
            continue;

        if (!regionCentroids.containsKey(label)) {
            regionCentroids.put(label, new Vector2D(0, 0));
        }

        regionCentroids.put(label, regionCentroids.get(label)
                .add(new Vector2D(ic.get(ImageCoordinate.X), ic.get(ImageCoordinate.Y))));

    }

    Histogram h = new Histogram(im);

    java.util.List<Integer> regions = new java.util.ArrayList<Integer>();

    for (Integer i : regionCentroids.keySet()) {

        regionCentroids.put(i, regionCentroids.get(i).scalarMultiply(1.0 / h.getCounts(i)));
        regions.add(i);

    }

    java.util.Collections.sort(regions);

    java.util.List<Vector2D> orderedCentroids = new java.util.ArrayList<Vector2D>();

    for (Integer i : regions) {
        orderedCentroids.add(regionCentroids.get(i));
    }

    WritableImage regionCentroidsIm = ImageFactory.createWritable(im.getDimensionSizes(), 0.0f);

    WritableImage diagram = ImageFactory.createWritable(im.getDimensionSizes(), 1.0f);

    ImageCoordinate cenTemp = ImageCoordinate.createCoordXYZCT(0, 0, 0, 0, 0);

    for (Integer i : regions) {

        Vector2D cen = regionCentroids.get(i);

        cenTemp.set(ImageCoordinate.X, (int) cen.getX());
        cenTemp.set(ImageCoordinate.Y, (int) cen.getY());

        regionCentroidsIm.setValue(cenTemp, i);

    }

    cenTemp.recycle();

    for (ImageCoordinate ic : diagram) {

        if (isOnEightConnectedBoundary(orderedCentroids, ic)) {

            diagram.setValue(ic, 0.0f);

        }

    }

    LabelFilter lf = new LabelFilter();
    OneToOneLabelBySeedFilter oolbsf = new OneToOneLabelBySeedFilter();

    lf.apply(diagram);

    oolbsf.setReferenceImage(regionCentroidsIm);

    oolbsf.apply(diagram);

    im.copy(diagram);

}