public void getTwoPointsOnLine(Point2d point1, Point2d point2) { point1.set(point); point2.add(point, normalizedVector); }
public void setPoints(Point2d point, Vector2d vector) { point1.set(point); point2.add(point1, vector); }
public void setPoints(Point2d point, Vector2d vector) { point1.set(point); point2.add(point1, vector); }
private Point2d displace(Point2d point, Vector2d vector) { Point2d displacedPoint = new Point2d(point); displacedPoint.add(vector); return displacedPoint; }
private Point2d displace(Point2d point, Vector2d vector) { Point2d displacedPoint = new Point2d(point); displacedPoint.add((Tuple2d) vector); return displacedPoint; }
public static Point2d roundAngle(Point2d s,Point2d d, double bondLength) { Vector2d v = new Vector2d(); v.sub( d, s ); double rad = Math.atan2(v.y,v.x); double deg = Math.toDegrees( rad ); deg = Math.round( deg/15)*15; rad = Math.toRadians( deg ); v.x = bondLength*Math.cos( rad ); v.y = bondLength*Math.sin( rad ); Point2d result = new Point2d(); result.add( s, v ); return result; }
/** * Translates the given polygon. */ public static void translatePolygon(Tuple2d translation, ConvexPolygon2d polygon) { for (int i = 0; i < polygon.getNumberOfVertices(); i++) { Point2d vertex = polygon.getVertex(i); vertex.add(translation); } }
@Override public double distance(Point2d point) { tempPoint2d.set(this.point); tempPoint2d.add(normalizedVector); return GeometryTools.distanceFromPointToLine(point, this.point, tempPoint2d); }
private double[] generateDistanceData(Point2d point1, Point2d point2, double dist) { Vector2d normal = new Vector2d(); normal.sub(point2, point1); normal = new Vector2d(-normal.y, normal.x); normal.normalize(); normal.scale(dist); Point2d line1p1 = new Point2d(); Point2d line1p2 = new Point2d(); line1p1.add(point1, normal); line1p2.add(point2, normal); normal.negate(); Point2d line2p1 = new Point2d(); Point2d line2p2 = new Point2d(); line2p1.add(point1, normal); line2p2.add(point2, normal); return new double[]{line1p1.x, line1p1.y, line2p1.x, line2p1.y, line1p2.x, line1p2.y, line2p2.x, line2p2.y}; }
/** * Translates a molecule from the origin to a new point denoted by a vector. * See comment for center(IAtomContainer atomCon, Dimension areaDim, HashMap renderingCoordinates) for details on coordinate sets * *@param atomCon molecule to be translated *@param vector dimension that represents the translation vector */ public static void translate2D(IAtomContainer atomCon, Vector2d vector) { for (IAtom atom : atomCon.atoms()) { if (atom.getPoint2d() != null) { atom.getPoint2d().add(vector); } else { logger.warn("Could not translate atom in 2D space"); } } }
@Override public RoofHookPoint[] getRoofHookPoints(int pNumber, DormerRow dormerRow, int dormerRowNum) { Vector2d v = new Vector2d(this.v1); v.scale(1d / (pNumber + 1d)); Point2d p = new Point2d(this.p1); RoofHookPoint[] ret = new RoofHookPoint[pNumber]; for (int i = 0; i < pNumber; i++) { p.add(v); double y = this.plane.calcYOfPlane(p.x, -p.y); double z = limitZToPolygon(p.y); Point3d pp = new Point3d(p.x, y, -z); RoofHookPoint hook = new RoofHookPoint(pp, Math.toRadians(0), this.b * 2d / 3d, Math.toRadians(0)); ret[i] = hook; } return ret; }
/** * Most move mode calculations are done in this routine. */ public void mouseDrag(Point2d worldCoordFrom, Point2d worldCoordTo) { end2DCenter = worldCoordTo; Point2d atomCoord = new Point2d(); atomCoord.add(worldCoordTo, offset); Vector2d d = new Vector2d(); d.sub(worldCoordTo, worldCoordFrom); chemModelRelay.moveBy(atomsToMove, d, null); chemModelRelay.updateView(); }
/** * Scale this convex polygon about pointToScaleAbout. * @param scaleFactor */ public void scale(Point2d pointToScaleAbout, double scaleFactor) { checkIfUpToDate(); for (int i = 0; i < numberOfVertices; i++) { Point2d vertex = getVertexUnsafe(i); vertex.sub(pointToScaleAbout); vertex.scale(scaleFactor); vertex.add(pointToScaleAbout); } update(); }
private GeneralPath createRoundBracket(Point2d p1, Point2d p2, Vector2d perp, Point2d midpoint) { Path2D path = new Path2D.Double(); // bracket 1 (cp: control point) path.moveTo(p1.x + perp.x, p1.y + perp.y); Point2d cpb1 = new Point2d(midpoint); cpb1.add(VecmathUtil.negate(perp)); path.quadTo(cpb1.x, cpb1.y, p2.x + perp.x, p2.y + perp.y); return GeneralPath.outlineOf(path, stroke, foreground); }
/** * Translates a molecule from the origin to a new point denoted by a vector. See comment for * center(IAtomContainer atomCon, Dimension areaDim, HashMap renderingCoordinates) for details * on coordinate sets * * @param atomCon molecule to be translated * @param p Description of the Parameter */ public static void translate2DCentreOfMassTo(IAtomContainer atomCon, Point2d p) { Point2d com = get2DCentreOfMass(atomCon); Vector2d translation = new Vector2d(p.x - com.x, p.y - com.y); for (IAtom atom : atomCon.atoms()) { if (atom.getPoint2d() != null) { atom.getPoint2d().add(translation); } } }
/** * Translates the geometric 2DCenter of the given AtomContainer container to the specified * Point2d p. * * @param container AtomContainer which should be translated. * @param p New Location of the geometric 2D Center. * @see #get2DCenter * @see #translate2DCentreOfMassTo */ public static void translate2DCenterTo(IAtomContainer container, Point2d p) { Point2d com = get2DCenter(container); Vector2d translation = new Vector2d(p.x - com.x, p.y - com.y); for (IAtom atom : container.atoms()) { if (atom.getPoint2d() != null) { atom.getPoint2d().add(translation); } } }
private Point2d[] createPolygon() { int numberOfPoints = 20; ConvexPolygon2d polygon = new ConvexPolygon2d(); Point2d randomVertex = new Point2d(); Random random = new Random(234523L); while (polygon.getNumberOfVertices() < numberOfPoints) { randomVertex.add(RandomTools.generateRandomPoint2d(random, 0.03, 0.03)); polygon.addVertex(randomVertex); polygon.update(); } Point2d[] vertices = new Point2d[numberOfPoints]; int reverseIndex = numberOfPoints; for (int i = 0; i < polygon.getNumberOfVertices(); i++) vertices[i] = polygon.getVertex(--reverseIndex); return vertices; }
public void moveToWithoutUndo(IBond bond, Point2d point) { if (bond != null) { Point2d center = bond.get2DCenter(); for (IAtom atom : bond.atoms()) { Vector2d offset = new Vector2d(); offset.sub(atom.getPoint2d(), center); Point2d result = new Point2d(); result.add(point, offset); atom.setPoint2d(result); } } coordinatesChanged(); }
/** {@inheritDoc} */ @Override public IRenderingElement generate(IAtomContainer container, RendererModel model) { ElementGroup numbers = new ElementGroup(); if (!model.getParameter(WillDrawAtomNumbers.class).getValue()) return numbers; Vector2d offset = new Vector2d(this.offset.getValue().x, -this.offset.getValue().y); offset.scale(1 / model.getParameter(Scale.class).getValue()); int number = 1; for (IAtom atom : container.atoms()) { Point2d point = new Point2d(atom.getPoint2d()); point.add(offset); numbers.add(new TextElement(point.x, point.y, String.valueOf(number), colorByType.getValue() ? atomColorer .getValue().getAtomColor(atom) : textColor.getValue())); number++; } return numbers; }
/** {@inheritDoc} */ @Override public IRenderingElement generate(IAtomContainer container, RendererModel model) { ElementGroup numbers = new ElementGroup(); if (!model.getParameter(WillDrawAtomNumbers.class).getValue()) return numbers; Vector2d offset = new Vector2d(this.offset.getValue().x, -this.offset.getValue().y); offset.scale(1 / model.getParameter(Scale.class).getValue()); int number = 1; for (IAtom atom : container.atoms()) { Point2d point = new Point2d(atom.getPoint2d()); point.add(offset); numbers.add(new TextElement(point.x, point.y, String.valueOf(number), colorByType.getValue() ? atomColorer .getValue().getAtomColor(atom) : textColor.getValue())); number++; } return numbers; }