java.awt.geom.Point2D.Double Java Examples
The following examples show how to use
java.awt.geom.Point2D.Double.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: PathConnection.java From openAGV with Apache License 2.0 | 6 votes |
@Override public Point2D.Double getCenter() { // Computes the center of the curve. // Approximation: Center of the control points. Point2D.Double p1; Point2D.Double p2; Point2D.Double pc; p1 = (cp1 == null ? path.get(0, BezierPath.C0_MASK) : cp1); p2 = (cp2 == null ? path.get(1, BezierPath.C0_MASK) : cp2); if (cp3 == null) { pc = new Point2D.Double((p1.x + p2.x) / 2, (p1.y + p2.y) / 2); } else { //Use cp3 for 3-bezier as center because the curve goes through it at 50% pc = (cp3 == null ? path.get(3, BezierPath.C0_MASK) : cp3); } return pc; }
Example #2
Source File: FunctionGraphPluginScreenShots.java From ghidra with Apache License 2.0 | 6 votes |
private <V, E> Point getOffsetFromUpperLeftForVertexInLayoutSpace( VisualizationServer<V, E> viewer, V vertex) { // // We need an offset from the current vertex to the center top of the viewer // Rectangle vertexBoundsInViewSpace = GraphViewerUtils.getVertexBoundsInViewSpace(viewer, vertex); Point vertexLocationInViewSpace = vertexBoundsInViewSpace.getLocation(); // this padding is enough to not see the edges for most operations--it can be increased int xWithPadding = 20; int yWithPadding = 20; Double point = new Point2D.Double(xWithPadding, yWithPadding);// upper, left Point vertexPointInLayoutSpace = GraphViewerUtils.translatePointFromViewSpaceToLayoutSpace( vertexLocationInViewSpace, viewer); Point upperLeftInLayoutSpace = GraphViewerUtils.translatePointFromViewSpaceToLayoutSpace(point, viewer); double offsetX = upperLeftInLayoutSpace.getX() - vertexPointInLayoutSpace.getX(); double offsetY = upperLeftInLayoutSpace.getY() - vertexPointInLayoutSpace.getY(); return new Point((int) offsetX, (int) offsetY); }
Example #3
Source File: FunctionGraphPluginScreenShots.java From ghidra with Apache License 2.0 | 6 votes |
private <V, E> Point getOffsetFromUpperLeftForViewPointInLayoutSpace( VisualizationServer<V, E> viewer, Point viewPoint) { // this padding is enough to not see the edges for most operations--it can be increased int xWithPadding = 50; int yWithPadding = 50; Double offsetPoint = new Point2D.Double(xWithPadding, yWithPadding);// upper, left Point vertexPointInLayoutSpace = GraphViewerUtils.translatePointFromViewSpaceToLayoutSpace(viewPoint, viewer); Point viewOffsetPointInLayoutSpace = GraphViewerUtils.translatePointFromViewSpaceToLayoutSpace(offsetPoint, viewer); double offsetX = viewOffsetPointInLayoutSpace.getX() - vertexPointInLayoutSpace.getX(); double offsetY = viewOffsetPointInLayoutSpace.getY() - vertexPointInLayoutSpace.getY(); return new Point((int) offsetX, (int) offsetY); }
Example #4
Source File: AttackPlanner.java From open-ig with GNU Lesser General Public License v3.0 | 6 votes |
@Override public int compare(AIPlanet o1, AIPlanet o2) { double value1 = planetValue(o1); double value2 = planetValue(o2); double relation1 = getDiplomaticMultiplier(o1.owner); double relation2 = getDiplomaticMultiplier(o2.owner); double distance1 = Math.hypot(o1.planet.x - center.x, o1.planet.y - center.y); double distance2 = Math.hypot(o2.planet.x - center.x, o2.planet.y - center.y); int c = java.lang.Double.compare(relation1, relation2); if (c == 0) { c = java.lang.Double.compare(value1, value2); } if (c == 0) { c = java.lang.Double.compare(distance1, distance2); } return c; }
Example #5
Source File: DataServlet.java From BLELocalization with MIT License | 6 votes |
private void updateSampleInfo(DBObject sampling, DBObject refpoint) { DBObject info = (DBObject) sampling.get("information"); if (info.containsField("refid") && info.containsField("x") && info.containsField("y")) { if (refpoint == null) { refpoint = mCollRef.findOne(new BasicDBObject("_id", info.get("refid"))); if (refpoint == null) { System.err.println("No refpoint: " + JSON.serialize(info)); return; } } DBObject set = new BasicDBObject(); AffineTransform at = new AffineTransform(); at.translate(((Number) refpoint.get("x")).doubleValue(), ((Number) refpoint.get("y")).doubleValue()); at.rotate(Math.toRadians(((Number) refpoint.get("rotate")).doubleValue())); Point2D.Double src = new Point2D.Double(((Number) info.get("x")).doubleValue(), ((Number) info.get("y")).doubleValue()); Point2D.Double dst = new Point2D.Double(); at.transform(src, dst); set.put("information.absx", dst.getX()); set.put("information.absy", dst.getY()); set.put("information.floor", refpoint.get("floor")); set.put("information.floor_num", refpoint.get("floor_num")); mCollSamp.update(new BasicDBObject("_id", sampling.get("_id")), new BasicDBObject("$set", set)); System.out.println(JSON.serialize(set)); } }
Example #6
Source File: PathConnection.java From openAGV with Apache License 2.0 | 6 votes |
/** * Im "alten" Modell wird zu quadratischen Kurven ein Kontrollpunkt * gespeichert, zu kubischen Kurven zwei. * * @param cp1 * @param cp2 Identisch mit cp1 bei quadratischen Kurven */ public void addControlPoints(Point2D.Double cp1, Point2D.Double cp2) { this.cp1 = cp1; this.cp2 = cp2; this.cp3 = null; Point2D.Double sp = path.get(0, BezierPath.C0_MASK); Point2D.Double ep = path.get(1, BezierPath.C0_MASK); path.clear(); path.add(new BezierPath.Node(BezierPath.C2_MASK, sp.x, sp.y, //Current point sp.x, sp.y, //Previous point cp1.x, cp1.y)); //Next point path.add(new BezierPath.Node(BezierPath.C1_MASK, ep.x, ep.y, //Current point cp2.x, cp2.y, //Previous point ep.x, ep.y)); //Next point //getModel().getProperty(ElementPropKeys.PATH_CONTROL_POINTS).markChanged(); }
Example #7
Source File: PathConnection.java From openAGV with Apache License 2.0 | 5 votes |
/** * A bezier curve with three control points. * * @param cp1 Control point 1 * @param cp2 Control point 2 * @param cp3 Control point 3 * @param cp4 Control point 4 * @param cp5 Control point 5 */ public void addControlPoints(Point2D.Double cp1, Point2D.Double cp2, Point2D.Double cp3, Point2D.Double cp4, Point2D.Double cp5) { this.cp1 = cp1; this.cp2 = cp2; this.cp3 = cp3; this.cp4 = cp4; this.cp5 = cp5; Point2D.Double sp = path.get(0, BezierPath.C0_MASK); Point2D.Double ep = path.get(path.size() - 1, BezierPath.C0_MASK); path.clear(); path.add(new BezierPath.Node(BezierPath.C2_MASK, sp.x, sp.y, //Current point sp.x, sp.y, //Previous point cp1.x, cp1.y)); //Next point //Use cp1 and cp2 to draw between sp and cp3 path.add(new BezierPath.Node(BezierPath.C1C2_MASK, cp3.x, cp3.y, //Current point cp2.x, cp2.y, //Previous point cp4.x, cp4.y)); //Next point //Use cp4 and cp5 to draw between cp3 and ep path.add(new BezierPath.Node(BezierPath.C1_MASK, ep.x, ep.y, //Current point cp5.x, cp5.y, //Previous point cp4.x, cp4.y)); //Next point StringProperty sProp = getModel().getPropertyPathControlPoints(); sProp.setText(String.format("%d,%d;%d,%d;%d,%d;%d,%d;%d,%d;", (int) cp1.x, (int) cp1.y, (int) cp2.x, (int) cp2.y, (int) cp3.x, (int) cp3.y, (int) cp4.x, (int) cp4.y, (int) cp5.x, (int) cp5.y)); sProp.markChanged(); getModel().propertiesChanged(this); }
Example #8
Source File: PathConnection.java From openAGV with Apache License 2.0 | 5 votes |
private String updatePolyPathControlPoints() { StringJoiner rtn = new StringJoiner(";"); for (int i = 1; i < path.size() - 1; i++) { Point2D.Double p = path.get(i, BezierPath.C0_MASK); rtn.add(String.format("%d,%d", (int) p.x, (int) p.y)); } return rtn.toString(); }
Example #9
Source File: PathConnection.java From openAGV with Apache License 2.0 | 5 votes |
/** * Resets control points and connects start and end point with a straight line. */ private void resetPath() { Point2D.Double sp = path.get(0, BezierPath.C0_MASK); Point2D.Double ep = path.get(path.size() - 1, BezierPath.C0_MASK); path.clear(); path.add(new BezierPath.Node(sp)); path.add(new BezierPath.Node(ep)); cp1 = null; cp2 = null; cp3 = null; cp4 = null; cp5 = null; getModel().getPropertyPathControlPoints().markChanged(); }
Example #10
Source File: TCSLabelFigure.java From openAGV with Apache License 2.0 | 5 votes |
@Override // AbstractFigure public void changed() { // Called when the figure has changed - movement with MouseDragger. super.changed(); if (fParent != null) { TCSFigure figure = fParent.getPresentationFigure(); ModelComponent model = figure.getModel(); Point2D.Double newOffset = new Point2D.Double( getBounds().getX() - figure.getBounds().x, getBounds().getY() - figure.getBounds().y); if (newOffset.x != fOffset.x || newOffset.y != fOffset.y) { fOffset = newOffset; // Die Properties des Kernel-Objekts StringProperty sp = (StringProperty) model.getProperty(ElementPropKeys.POINT_LABEL_OFFSET_X); if (sp != null) { sp.setText(String.format("%d", (long) newOffset.x)); sp.markChanged(); } sp = (StringProperty) model.getProperty(ElementPropKeys.POINT_LABEL_OFFSET_Y); if (sp != null) { sp.setText(String.format("%d", (long) newOffset.y)); sp.markChanged(); } // TODO Point Label Orientation Angle! // sp = (StringProperty) model.getProperty(ElementPropKeys.POINT_LABEL_ORIENTATION_ANGLE); // if (sp != null) { // sp.setText(String.format("%d", 0)); // sp.markChanged(); // } model.propertiesChanged(fParent); } } }
Example #11
Source File: DataServlet.java From BLELocalization with MIT License | 5 votes |
private void updateSamplingData(DBObject data) { if (data.containsField("information")) { DBObject info = (DBObject) data.get("information"); if (info.containsField("refid") && info.containsField("x") && info.containsField("y")) { DBObject refpoint = mCollRef.findOne(info.get("refid")); if (refpoint != null && refpoint.containsField("x") && refpoint.containsField("y") && refpoint.containsField("floor") && refpoint.containsField("floor_num")) { AffineTransform at = new AffineTransform(); at.translate(((Number) refpoint.get("x")).doubleValue(), ((Number) refpoint.get("y")).doubleValue()); at.rotate(Math.toRadians(((Number) refpoint.get("rotate")).doubleValue())); Point2D.Double src = new Point2D.Double(((Number) info.get("x")).doubleValue(), ((Number) info.get("y")).doubleValue()); Point2D.Double dst = new Point2D.Double(); at.transform(src, dst); info.put("absx", dst.getX()); info.put("absy", dst.getY()); info.put("floor", refpoint.get("floor")); info.put("floor_num", refpoint.get("floor_num")); System.out.println(JSON.serialize(info)); } else { info.put("absx", ((Number) info.get("x")).doubleValue()); info.put("absy", ((Number) info.get("y")).doubleValue()); } } } }
Example #12
Source File: AttackPlanner.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
/** * Select an enemy planet. * @return the planet or null if none found */ AIPlanet selectTargetPlanet() { List<AIPlanet> candidates = new ArrayList<>(); Set<Player> enemies = new HashSet<>(); for (AIPlanet p : world.enemyPlanets) { if (p.owner != null) { if (world.explorationInnerLimit != null && world.explorationInnerLimit.contains(p.planet.x, p.planet.y)) { continue; } if (world.explorationOuterLimit != null && !world.explorationOuterLimit.contains(p.planet.x, p.planet.y)) { continue; } DiplomaticRelation dr = world.relations.get(p.owner); if (dr != null && dr.full && !dr.strongAlliance) { if (dr.value < this.p.warThreshold && !hasActiveAlliance(dr.alliancesAgainst)) { if (planetValue(p) > 0) { candidates.add(p); enemies.add(p.owner); } } } } } if (!candidates.isEmpty()) { final Point2D.Double center = world.center(); List<Player> enemiesList = new ArrayList<>(enemies); Collections.sort(enemiesList, new Comparator<Player>() { @Override public int compare(Player o1, Player o2) { double r1 = getDiplomaticMultiplier(o1); double r2 = getDiplomaticMultiplier(o2); return java.lang.Double.compare(r1, r2); } }); Player targetPlayer = choseAtRandom(enemiesList); for (int i = candidates.size() - 1; i >= 0; i--) { if (candidates.get(i).owner != targetPlayer) { candidates.remove(i); } } // then select one of his planets Collections.sort(candidates, new PlanetTargetValueComparator(center)); return choseAtRandom(candidates); } return null; }
Example #13
Source File: AttackPlanner.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
/** * Select the weakest fleet based on our knowledge. * @return the weakest fleet or null if no fleet available */ AIFleet selectTargetFleet() { List<AIFleet> candidates = new ArrayList<>(); for (AIFleet f : world.enemyFleets) { if (!(f.fleet.owner.ai instanceof AITrader) && !(f.fleet.owner.ai instanceof AIPirate)) { DiplomaticRelation dr = world.relations.get(f.fleet.owner); if (dr != null && dr.full && !dr.strongAlliance) { if (dr.value < p.warThreshold && hasActiveAlliance(dr.alliancesAgainst)) { candidates.add(f); } } } } if (!candidates.isEmpty()) { final Point2D.Double center = world.center(); return Collections.min(candidates, new Comparator<AIFleet>() { @Override public int compare(AIFleet o1, AIFleet o2) { double v1 = fleetValue(o1); double v2 = fleetValue(o2); double d1 = Math.hypot(o1.x - center.x, o1.y - center.y); double d2 = Math.hypot(o2.x - center.x, o2.y - center.y); if (v1 < v2) { return -1; } else if (v1 > v2) { return 1; } else if (d1 < d2) { return -1; } else if (d1 > d2) { return 1; } return 0; } }); } return null; }
Example #14
Source File: AttackPlanner.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
@Override public void plan() { if (world.ownPlanets.isEmpty()) { return; } // don't bother when exploring // for (AIFleet f : world.ownFleets) { // if (f.task.ordinal() <= FleetTask.EXPLORE.ordinal()) { // return; // } // } if (world.nextAttack != null && world.nextAttack.compareTo(world.now) < 0) { world.nextAttack = null; List<AIFleet> fleets = findFleetsFor(FleetTask.ATTACK, null); filterCandidates(fleets); if (!fleets.isEmpty()) { Collections.sort(fleets, new Comparator<AIFleet>() { @Override public int compare(AIFleet o1, AIFleet o2) { return java.lang.Double.compare(o1.statistics.firepower, o2.statistics.firepower); } }); int fcmax = fleets.size() / 2 + 1; if (world.difficulty == Difficulty.EASY) { fcmax = 1; } int fc = 0; Iterator<AIFleet> fi = fleets.iterator(); while (fc < fcmax && fi.hasNext()) { final AIFleet ownFleet = fi.next(); AIFleet targetFleet = null; AIPlanet targetPlanet = null; if (world.mayConquer && ownFleet.statistics.groundFirepower > 0) { if (ModelUtils.randomBool()) { targetFleet = selectTargetFleet(); } if (targetFleet == null) { targetPlanet = selectTargetPlanet(); } } else { targetFleet = selectTargetFleet(); } if (targetFleet != null) { final AIFleet ftargetFleet = targetFleet; ownFleet.task = FleetTask.ATTACK; add(new Action0() { @Override public void invoke() { if (ownFleet.task != FleetTask.SCRIPT) { controls.actionAttackFleet(ownFleet.fleet, ftargetFleet.fleet, false); } } }); fc++; } else if (targetPlanet != null) { final AIPlanet ftargetPlanet = targetPlanet; ownFleet.task = FleetTask.ATTACK; add(new Action0() { @Override public void invoke() { if (ownFleet.task != FleetTask.SCRIPT) { controls.actionAttackPlanet(ownFleet.fleet, ftargetPlanet.planet, AIAttackMode.CAPTURE); } } }); fc++; } } } if (world.hasDiplomacyRoom) { manageDiplomacy(); } } computeNextAttack(); }
Example #15
Source File: TCSLabelFigure.java From openAGV with Apache License 2.0 | 4 votes |
public Double getOffset() { return fOffset; }
Example #16
Source File: Building.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
@Override public Double exactLocation() { return new Point2D.Double(location.x + width() / 2d, location.y - height() / 2d); }
Example #17
Source File: GroundwarUnit.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
@Override public Double exactLocation() { return new Point2D.Double(x, y); }
Example #18
Source File: GroundwarUnit.java From open-ig with GNU Lesser General Public License v3.0 | 4 votes |
@Override public int compare(GroundwarUnit o1, GroundwarUnit o2) { return java.lang.Double.compare(o1.hp / o1.model.hp, o2.hp / o2.model.hp); }
Example #19
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
private Point2D.Double scaleControlPoint(Point2D.Double p, Origin newScale) { return new Double((p.x * previousOrigin.getScaleX()) / newScale.getScaleX(), (p.y * previousOrigin.getScaleY()) / newScale.getScaleY()); }
Example #20
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
@Override public String getToolTipText(Point2D.Double p) { return textGenerator.getToolTipText(getModel()); }
Example #21
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
public Point2D.Double getCp5() { return cp5; }
Example #22
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
public Point2D.Double getCp4() { return cp4; }
Example #23
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
public Point2D.Double getCp3() { return cp3; }
Example #24
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
public Point2D.Double getCp2() { return cp2; }
Example #25
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
public Point2D.Double getCp1() { return cp1; }
Example #26
Source File: PathConnection.java From openAGV with Apache License 2.0 | 4 votes |
/** * Bei Umwandlung von DIRECT/ELBOW/SLANTED in BEZIER-Kurve: * Initiale Kontrollpunkte bei 1/n, 2/n, ... der Strecke setzen. * * @param type the type of the curve */ private void initControlPoints(PathModel.Type type) { Point2D.Double sp = path.get(0, BezierPath.C0_MASK); Point2D.Double ep = path.get(path.size() - 1, BezierPath.C0_MASK); if (sp.x != ep.x || sp.y != ep.y) { path.clear(); if (type == PathModel.Type.BEZIER_3) { //BEZIER curve with 3 control points); //Add the scaled vector between start and endpoint to the startpoint cp1 = new Point2D.Double(sp.x + (ep.x - sp.x) * 1 / 6, sp.y + (ep.y - sp.y) * 1 / 6); //point at 1/6 cp2 = new Point2D.Double(sp.x + (ep.x - sp.x) * 2 / 6, sp.y + (ep.y - sp.y) * 2 / 6); //point at 2/6 cp3 = new Point2D.Double(sp.x + (ep.x - sp.x) * 3 / 6, sp.y + (ep.y - sp.y) * 3 / 6); //point at 3/6 cp4 = new Point2D.Double(sp.x + (ep.x - sp.x) * 4 / 6, sp.y + (ep.y - sp.y) * 4 / 6); //point at 4/6 cp5 = new Point2D.Double(sp.x + (ep.x - sp.x) * 5 / 6, sp.y + (ep.y - sp.y) * 5 / 6); //point at 5/6 path.add(new BezierPath.Node(BezierPath.C2_MASK, sp.x, sp.y, //Current point sp.x, sp.y, //Previous point - not in use because of C2_MASK cp1.x, cp1.y)); //Next point //Use cp1 and cp2 to draw between sp and cp3 path.add(new BezierPath.Node(BezierPath.C1C2_MASK, cp3.x, cp3.y, //Current point cp2.x, cp2.y, //Previous point cp4.x, cp4.y)); //Next point //Use cp4 and cp5 to draw between cp3 and ep path.add(new BezierPath.Node(BezierPath.C1_MASK, ep.x, ep.y, //Current point cp5.x, cp5.y, //Previous point ep.x, ep.y)); //Next point - not in use because of C1_MASK } else { cp1 = new Point2D.Double(sp.x + (ep.x - sp.x) / 3, sp.y + (ep.y - sp.y) / 3); //point at 1/3 cp2 = new Point2D.Double(ep.x - (ep.x - sp.x) / 3, ep.y - (ep.y - sp.y) / 3); //point at 2/3 cp3 = null; cp4 = null; cp5 = null; path.add(new BezierPath.Node(BezierPath.C2_MASK, sp.x, sp.y, //Current point sp.x, sp.y, //Previous point - not in use because of C2_MASK cp1.x, cp1.y)); //Next point path.add(new BezierPath.Node(BezierPath.C1_MASK, ep.x, ep.y, //Current point cp2.x, cp2.y, //Previous point ep.x, ep.y)); //Next point - not in use because of C1_MASK } getModel().getPropertyPathControlPoints().markChanged(); path.invalidatePath(); } }
Example #27
Source File: TCSLabelFigure.java From openAGV with Apache License 2.0 | 2 votes |
/** * Sets the position relative to the {@code Figure}. * * @param posX The X-Offset of the label. * @param posY The Y-Offset of the label. */ public void setOffset(int posX, int posY) { fOffset = new Point2D.Double(posX, posY); }
Example #28
Source File: TCSLabelFigure.java From openAGV with Apache License 2.0 | 2 votes |
/** * Creates a new instance. * * @param text The text of the label */ public TCSLabelFigure(String text) { super(text); fOffset = new Point2D.Double(DEFAULT_LABEL_OFFSET_X, DEFAULT_LABEL_OFFSET_Y); }
Example #29
Source File: GroundwarUnit.java From open-ig with GNU Lesser General Public License v3.0 | 2 votes |
/** * Returns the distance from the other unit. * @param u2 the other unit * @return the distance */ public double distance(HasLocation u2) { Point2D.Double p2 = u2.exactLocation(); return Math.hypot(x - p2.x, y - p2.y); }
Example #30
Source File: AttackPlanner.java From open-ig with GNU Lesser General Public License v3.0 | 2 votes |
/** * Constructor. * @param center the center of our empire. */ private PlanetTargetValueComparator(Double center) { this.center = center; }