diff --git a/src/main/java/com/marginallyclever/convenience/Bezier.java b/src/main/java/com/marginallyclever/convenience/Bezier.java index 5876308f9..a24922dc8 100644 --- a/src/main/java/com/marginallyclever/convenience/Bezier.java +++ b/src/main/java/com/marginallyclever/convenience/Bezier.java @@ -1,5 +1,6 @@ package com.marginallyclever.convenience; +import javax.vecmath.Point2d; import java.util.ArrayList; import java.util.List; @@ -33,15 +34,15 @@ public Bezier(double x0,double y0,double x1,double y1,double x2,double y2,double // Based on https://github.com/pelson/antigrain/blob/master/agg-2.4/src/agg_curves.cpp // and https://github.com/mattdesl/adaptive-bezier-curve - public List generateCurvePoints(double distanceTolerance) { - ArrayList points = new ArrayList(); - points.add(new Point2D(x0,y0)); + public List generateCurvePoints(double distanceTolerance) { + List points = new ArrayList<>(); + points.add(new Point2d(x0,y0)); recursive(x0,y0,x1,y1,x2,y2,x3,y3,points,distanceTolerance*distanceTolerance,0); - points.add(new Point2D(x3,y3)); + points.add(new Point2d(x3,y3)); return points; } - private void recursive(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,ArrayList points, double distanceTolerance,int level) { + private void recursive(double x1,double y1,double x2,double y2,double x3,double y3,double x4,double y4,List points, double distanceTolerance,int level) { if(level > recursionLimit) return; @@ -74,7 +75,7 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double if((d2 + d3)*(d2 + d3) <= distanceTolerance * (dx*dx + dy*dy)) { // If the curvature doesn't exceed the distanceTolerance value we tend to finish subdivisions. if(angleTolerance < curveAngleToleranceEpsilon) { - points.add(new Point2D(x1234, y1234)); + points.add(new Point2d(x1234, y1234)); return; } @@ -87,17 +88,17 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double if(da1 + da2 < angleTolerance) { // Finally we can stop the recursion - points.add(new Point2D(x1234, y1234)); + points.add(new Point2d(x1234, y1234)); return; } if(cuspLimit != 0.0) { if(da1 > cuspLimit) { - points.add(new Point2D(x2, y2)); + points.add(new Point2d(x2, y2)); return; } if(da2 > cuspLimit) { - points.add(new Point2D(x3, y3)); + points.add(new Point2d(x3, y3)); return; } } @@ -107,7 +108,7 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double // p1,p3,p4 are co-linear, p2 is considerable if(d2 * d2 <= distanceTolerance * (dx*dx + dy*dy)) { if(angleTolerance < curveAngleToleranceEpsilon) { - points.add(new Point2D(x1234, y1234)); + points.add(new Point2d(x1234, y1234)); return; } @@ -116,14 +117,14 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double if(da1 >= Math.PI) da1 = 2.0*Math.PI - da1; if(da1 < angleTolerance) { - points.add(new Point2D(x2, y2)); - points.add(new Point2D(x3, y3)); + points.add(new Point2d(x2, y2)); + points.add(new Point2d(x3, y3)); return; } if(cuspLimit != 0.0) { if(da1 > cuspLimit) { - points.add(new Point2D(x2, y2)); + points.add(new Point2d(x2, y2)); return; } } @@ -132,7 +133,7 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double // p1,p2,p4 are co-linear, p3 is considerable if(d3 * d3 <= distanceTolerance * (dx*dx + dy*dy)) { if(angleTolerance < curveAngleToleranceEpsilon) { - points.add(new Point2D(x1234, y1234)); + points.add(new Point2d(x1234, y1234)); return; } @@ -141,14 +142,14 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double if(da1 >= Math.PI) da1 = 2.0*Math.PI - da1; if(da1 < angleTolerance) { - points.add(new Point2D(x2, y2)); - points.add(new Point2D(x3, y3)); + points.add(new Point2d(x2, y2)); + points.add(new Point2d(x3, y3)); return; } if(cuspLimit != 0.0) { if(da1 > cuspLimit) { - points.add(new Point2D(x3, y3)); + points.add(new Point2d(x3, y3)); return; } } @@ -158,7 +159,7 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double dx = x1234 - (x1 + x4) / 2.0; dy = y1234 - (y1 + y4) / 2.0; if(dx*dx + dy*dy <= distanceTolerance) { - points.add(new Point2D(x1234, y1234)); + points.add(new Point2d(x1234, y1234)); return; } } @@ -170,9 +171,9 @@ private void recursive(double x1,double y1,double x2,double y2,double x3,double recursive(x1234, y1234, x234, y234, x34, y34, x4, y4, points, distanceTolerance, level + 1); } - protected ArrayList generateCurvePointsOld() { - ArrayList list = new ArrayList(); - list.add(new Point2D(x0,y0)); + protected ArrayList generateCurvePointsOld() { + ArrayList list = new ArrayList(); + list.add(new Point2d(x0,y0)); double steps=25; for(double k=1;k generateCurvePointsOld() { double yabc = getYAt(j); //*/ - list.add(new Point2D(xabc,yabc)); + list.add(new Point2d(xabc,yabc)); } - list.add(new Point2D(x3,y3)); + list.add(new Point2d(x3,y3)); return list; } diff --git a/src/main/java/com/marginallyclever/convenience/LineInterpolator.java b/src/main/java/com/marginallyclever/convenience/LineInterpolator.java index 82229c202..eab058cef 100644 --- a/src/main/java/com/marginallyclever/convenience/LineInterpolator.java +++ b/src/main/java/com/marginallyclever/convenience/LineInterpolator.java @@ -1,14 +1,17 @@ package com.marginallyclever.convenience; +import javax.vecmath.Point2d; +import javax.vecmath.Vector2d; + public class LineInterpolator { static public final double SMALL_VALUE = 1e-5; - protected Point2D start = new Point2D(); - protected Point2D end = new Point2D(); + protected Point2d start = new Point2d(); + protected Point2d end = new Point2d(); public LineInterpolator() {} - public LineInterpolator(Point2D start,Point2D end) { + public LineInterpolator(Point2d start,Point2d end) { this.start.set(start); this.end.set(end); } @@ -18,7 +21,7 @@ public LineInterpolator(Point2D start,Point2D end) { * @param t [0...1] * @param p will be to set to (b-a)*t+a */ - public void getPoint(double t,Point2D p) { + public void getPoint(double t,Point2d p) { p.x = (end.x - start.x) * t + start.x; p.y = (end.y - start.y) * t + start.y; } @@ -27,15 +30,15 @@ public void getPoint(double t,Point2D p) { * @param t [0...1] * @param v set to the approximate tangent to the line at at t */ - public void getTangent(double t,Point2D v) { + public void getTangent(double t, Vector2d v) { if(t<0) t=0; if(t>1-SMALL_VALUE) t=1-SMALL_VALUE; double t0 = t; double t1 = t + SMALL_VALUE; - Point2D c0 = new Point2D(); - Point2D c1 = new Point2D(); + Point2d c0 = new Point2d(); + Point2d c1 = new Point2d(); getPoint(t0,c0); getPoint(t1,c1); v.x = c1.x-c0.x; @@ -52,26 +55,26 @@ public void getTangent(double t,Point2D v) { * @param t [0...1] * @param n set to the normal to the approximate tangent to the line at at t */ - public void getNormal(double t,Point2D n) { + public void getNormal(double t,Vector2d n) { getTangent(t,n); double z = n.y; n.y = -n.x; n.x = z; } - public Point2D getStart() { + public Point2d getStart() { return start; } - public void setStart(Point2D start) { + public void setStart(Point2d start) { this.start = start; } - public Point2D getEnd() { + public Point2d getEnd() { return end; } - public void setEnd(Point2D end) { + public void setEnd(Point2d end) { this.end = end; } } diff --git a/src/main/java/com/marginallyclever/convenience/LineInterpolatorSinCurve.java b/src/main/java/com/marginallyclever/convenience/LineInterpolatorSinCurve.java index d7fbe8045..a99f3f99e 100644 --- a/src/main/java/com/marginallyclever/convenience/LineInterpolatorSinCurve.java +++ b/src/main/java/com/marginallyclever/convenience/LineInterpolatorSinCurve.java @@ -1,6 +1,8 @@ package com.marginallyclever.convenience; +import javax.vecmath.Point2d; + /** * Given a line segment as the X axis and an amplitude, this class will generate a sin curve along the line. */ @@ -12,15 +14,15 @@ public LineInterpolatorSinCurve() { super(); } - public LineInterpolatorSinCurve(Point2D a,Point2D b) { + public LineInterpolatorSinCurve(Point2d a, Point2d b) { super(a,b); } @Override - public void getPoint(double t, Point2D c) { + public void getPoint(double t, Point2d c) { // line b-a (bitTan) is the tangent of the overall curve, and bigNorm is orthogonal to bigTan. - Point2D bigTan = new Point2D(); - Point2D bigNorm = new Point2D(); + Point2d bigTan = new Point2d(); + Point2d bigNorm = new Point2d(); bigTan.x = end.x- start.x; bigTan.y = end.y- start.y; diff --git a/src/main/java/com/marginallyclever/convenience/Point2D.java b/src/main/java/com/marginallyclever/convenience/Point2D.java deleted file mode 100644 index 62a0d6ce1..000000000 --- a/src/main/java/com/marginallyclever/convenience/Point2D.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.marginallyclever.convenience; - -/** - * A 2D point class with some useful methods. - * @author Dan Royer - * @since 7.0.0 - */ -public class Point2D { - public double x,y; - - public Point2D() {} - - public Point2D(Point2D b) { - this(b.x,b.y); - } - - public Point2D(double x0,double y0) { - x=x0; - y=y0; - } - - public void set(double x0,double y0) { - x=x0; - y=y0; - } - - public void set(Point2D p) { - x=p.x; - y=p.y; - } - - public double lengthSquared() { - return x*x+y*y; - } - - public double length() { - return Math.sqrt(lengthSquared()); - } - - public void scale(double scale) { - x*=scale; - y*=scale; - } - - public double distanceSquared(Point2D p) { - double dx = x-p.x; - double dy = y-p.y; - return dx*dx + dy*dy; - } - - public double distance(Point2D p) { - return Math.sqrt(distanceSquared(p)); - } - - public void normalize() { - double len = length(); - if(len!=0) { - double ilen = 1.0/len; - x*=ilen; - y*=ilen; - } - } - - public boolean equalsEpsilon(Point2D b, double epsilon) { - return distance(b) < epsilon; - } - - public void add(Point2D b){ - x += b.x; - y += b.y; - } -} diff --git a/src/main/java/com/marginallyclever/convenience/QuadGraph.java b/src/main/java/com/marginallyclever/convenience/QuadGraph.java index 95b695674..1d34685d5 100644 --- a/src/main/java/com/marginallyclever/convenience/QuadGraph.java +++ b/src/main/java/com/marginallyclever/convenience/QuadGraph.java @@ -1,5 +1,6 @@ package com.marginallyclever.convenience; +import javax.vecmath.Point2d; import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.List; @@ -10,7 +11,7 @@ public class QuadGraph { private static final int MAX_POINTS = 5; public final Rectangle2D bounds = new Rectangle2D.Double(); - public final List sites = new ArrayList<>(); + public final List sites = new ArrayList<>(); public QuadGraph[] children = null; /** @@ -42,13 +43,13 @@ public void split() { private void moveSitesIntoChildren() { // put all sites into the new children - for(Point2D c : sites) { + for(Point2d c : sites) { addCellToOneQuadrant(c); } sites.clear(); } - public boolean insert(Point2D e) { + public boolean insert(Point2d e) { if(bounds.contains(e.x,e.y)) { if(sites.size() d) { bestD = d; @@ -89,7 +90,7 @@ public Point2D search(Point2D p) { if(children != null) { for (int i = 0; i < 4; ++i) { // look into the children - Point2D bestChildFound = children[i].search(p); + Point2d bestChildFound = children[i].search(p); if (bestChildFound != null && bestFound == null) { double d = p.distanceSquared(bestChildFound); if(bestD > d) { diff --git a/src/main/java/com/marginallyclever/makelangelo/Camera.java b/src/main/java/com/marginallyclever/makelangelo/Camera.java index 12a68b66a..d0767f165 100644 --- a/src/main/java/com/marginallyclever/makelangelo/Camera.java +++ b/src/main/java/com/marginallyclever/makelangelo/Camera.java @@ -1,8 +1,9 @@ package com.marginallyclever.makelangelo; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.util.PreferencesHelper; +import javax.vecmath.Point2d; + /** * All information about the position and zoom level of the virtual eye looking through the PreviewPanel at the robot/art * @author Dan Royer @@ -42,7 +43,7 @@ private void limitCameraZoom() { // scale the picture of the robot to fake a zoom. public void zoom(int amount) { - zoom(amount, new Point2D()); + zoom(amount, new Point2d()); } /** @@ -50,8 +51,8 @@ public void zoom(int amount) { * @param input a point relative to the center of the camera view. * @return the input converted to world-space coordinates. */ - public Point2D screenToWorldSpace(Point2D input) { - Point2D output = new Point2D(); + public Point2d screenToWorldSpace(Point2d input) { + Point2d output = new Point2d(); // TODO this is not quite right. output.x = px + input.x * zoom/width; output.y = py + input.y * zoom/width; @@ -63,14 +64,14 @@ public Point2D screenToWorldSpace(Point2D input) { * @param amount amount to zoom * @param cursor center of zoom, relative to camera. */ - public void zoom(int amount, Point2D cursor) { - Point2D before = screenToWorldSpace(cursor); + public void zoom(int amount, Point2d cursor) { + Point2d before = screenToWorldSpace(cursor); //zoom -= (double)amount * ZOOM_STEP_SIZE; double zoomScale = (double)amount * ZOOM_STEP_SIZE; zoom = zoom * (1.0 + zoomScale); limitCameraZoom(); - Point2D after = screenToWorldSpace(cursor); + Point2d after = screenToWorldSpace(cursor); px -= after.x - before.x; py -= after.y - before.y; diff --git a/src/main/java/com/marginallyclever/makelangelo/MainMenu.java b/src/main/java/com/marginallyclever/makelangelo/MainMenu.java index 93d5e5c1f..345f45a6e 100644 --- a/src/main/java/com/marginallyclever/makelangelo/MainMenu.java +++ b/src/main/java/com/marginallyclever/makelangelo/MainMenu.java @@ -433,39 +433,7 @@ public void windowClosing(WindowEvent e) { dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(this)); dialog.setVisible(true); } -/* - private JMenu createSettingsMenu() { - JMenu menu = new JMenu(Translator.get("MenuSettings")); - menu.setMnemonic('S'); - JMenuItem bOpenPlotterSettings = new JMenuItem(Translator.get("OpenPlotterSettings")); - bOpenPlotterSettings.addActionListener((e)-> openPlotterSettings()); - bOpenPlotterSettings.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, SHORTCUT_CTRL));//"ctrl P" - menu.add(bOpenPlotterSettings); - - return menu; - } - - private void openPaperSettings() { - PaperSettingsPanel settings = new PaperSettingsPanel(app.getPaper()); - JDialog dialog = new JDialog(SwingUtilities.getWindowAncestor(this),Translator.get("PaperSettings.Title")); - dialog.add(settings); - dialog.setMinimumSize(new Dimension(300,300)); - dialog.pack(); - - app.enableMenuBar(false); - dialog.addWindowListener(new WindowAdapter() { - @Override - public void windowClosing(WindowEvent e) { - settings.save(); - app.enableMenuBar(true); - } - }); - - dialog.setLocationRelativeTo(SwingUtilities.getWindowAncestor(this)); - dialog.setVisible(true); - } -*/ public RecentFiles getRecentFiles() { return recentFiles; } diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/JogPanel.java b/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/JogPanel.java index eb2a73f32..60cfa82ba 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/JogPanel.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/JogPanel.java @@ -2,7 +2,6 @@ import com.marginallyclever.convenience.ButtonIcon; import com.marginallyclever.convenience.CommandLineOptions; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.plotter.Plotter; import com.marginallyclever.makelangelo.plotter.PlotterEvent; @@ -11,6 +10,7 @@ import org.slf4j.LoggerFactory; import javax.swing.*; +import javax.vecmath.Point2d; import java.awt.*; import java.awt.event.ActionEvent; @@ -62,7 +62,7 @@ public JogPanel(Plotter plotter) { y/=10; } logger.debug("Move {},{}", x, y); - Point2D p = plotter.getPos(); + Point2d p = plotter.getPos(); p.x+=x; p.y+=y; plotter.setPos(p.x,p.y); diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/MarlinPlotterPanel.java b/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/MarlinPlotterPanel.java index 357d94f75..f939d8433 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/MarlinPlotterPanel.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/plottercontrols/MarlinPlotterPanel.java @@ -1,7 +1,6 @@ package com.marginallyclever.makelangelo.apps.plottercontrols; import com.marginallyclever.communications.NetworkSessionEvent; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.convenience.W3CColorNames; import com.marginallyclever.convenience.helpers.StringHelper; import com.marginallyclever.makelangelo.plotter.Plotter; @@ -10,6 +9,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.vecmath.Point2d; import java.awt.*; /** @@ -87,7 +87,7 @@ private void sendEngage() { } private void sendGoto() { - Point2D p = myPlotter.getPos(); + Point2d p = myPlotter.getPos(); String msg = myPlotter.getPenIsUp() ? MarlinPlotterPanel.getTravelToString(myPlotter.getSettings(), p.x, p.y) : MarlinPlotterPanel.getDrawToString(myPlotter.getSettings(), p.x, p.y); @@ -150,7 +150,7 @@ protected void onHearM114(String message) { try { String position = message.substring(0, message.indexOf("Count")); String[] majorParts = position.split("\s"); - Point2D pos = myPlotter.getPos(); + Point2d pos = myPlotter.getPos(); for (String s : majorParts) { String[] minorParts = s.split(":"); diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/PreviewPanel.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/PreviewPanel.java index 90654cf1f..8e3149473 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/PreviewPanel.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/PreviewPanel.java @@ -3,7 +3,6 @@ import com.jogamp.opengl.*; import com.jogamp.opengl.awt.GLJPanel; import com.jogamp.opengl.util.FPSAnimator; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.convenience.helpers.MatrixHelper; import com.marginallyclever.convenience.helpers.ResourceHelper; import com.marginallyclever.makelangelo.Camera; @@ -28,6 +27,7 @@ import javax.swing.*; import javax.swing.event.EventListenerList; import javax.vecmath.Matrix4d; +import javax.vecmath.Point2d; import javax.vecmath.Vector2d; import javax.vecmath.Vector3d; import java.awt.*; @@ -125,7 +125,7 @@ public void mouseWheelMoved(MouseWheelEvent e) { int notches = e.getWheelRotation(); if (notches == 0) return; - Point2D p = new Point2D(e.getPoint().x,e.getPoint().y); + Point2d p = new Point2d(e.getPoint().x,e.getPoint().y); Rectangle r = me.getBounds(); p.x -= r.getCenterX(); p.y -= r.getCenterY(); diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Cartesian.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Cartesian.java index 84fccdf67..01120a9b8 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Cartesian.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Cartesian.java @@ -1,12 +1,13 @@ package com.marginallyclever.makelangelo.apps.previewpanel.plotterrenderer; import com.jogamp.opengl.GL3; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Mesh; import com.marginallyclever.makelangelo.apps.previewpanel.ShaderProgram; import com.marginallyclever.makelangelo.plotter.Plotter; import com.marginallyclever.makelangelo.plotter.plottersettings.PlotterSettings; +import javax.vecmath.Point2d; + public class Cartesian implements PlotterRenderer { public final double CARTESIAN_MOTOR_MOUNT_SIZE =45; //cm public final double CARTESIAN_PLOTTER_SIZE=60; //cm @@ -33,7 +34,7 @@ public void updatePlotterSettings(PlotterSettings settings) { private void paintGantryAndHead(GL3 gl, Plotter plotter) { //double dx, dy; - Point2D pos = plotter.getPos(); + Point2d pos = plotter.getPos(); double gx = pos.x; double gy = pos.y; double gz = (plotter.getPenIsUp() ? plotter.getSettings().getDouble(PlotterSettings.PEN_ANGLE_UP) : plotter.getSettings().getDouble(PlotterSettings.PEN_ANGLE_DOWN))/10; diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5.java index 39fd23395..a61e45092 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5.java @@ -1,7 +1,6 @@ package com.marginallyclever.makelangelo.apps.previewpanel.plotterrenderer; import com.jogamp.opengl.GL3; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.convenience.helpers.DrawingHelper; import com.marginallyclever.makelangelo.Mesh; import com.marginallyclever.makelangelo.apps.previewpanel.ShaderProgram; @@ -10,6 +9,8 @@ import com.marginallyclever.makelangelo.texture.TextureFactory; import com.marginallyclever.makelangelo.texture.TextureWithMetadata; +import javax.vecmath.Point2d; + public class Makelangelo5 implements PlotterRenderer { private final TextureWithMetadata textureMainBody = TextureFactory.loadTexture("/textures/makelangelo5.png"); private final TextureWithMetadata textureMotors = TextureFactory.loadTexture("/textures/makelangelo5-motors.png"); @@ -73,7 +74,7 @@ public void updatePlotterSettings(PlotterSettings settings) { } public void paintPenHolderToCounterweights(GL3 gl, Plotter robot) { - Point2D pos = robot.getPos(); + Point2d pos = robot.getPos(); double gx = pos.x; double gy = pos.y; diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5Huge.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5Huge.java index 6bf5544da..630f1bc68 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5Huge.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Makelangelo5Huge.java @@ -1,13 +1,14 @@ package com.marginallyclever.makelangelo.apps.previewpanel.plotterrenderer; import com.jogamp.opengl.GL3; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.apps.previewpanel.ShaderProgram; import com.marginallyclever.makelangelo.plotter.Plotter; import com.marginallyclever.makelangelo.plotter.plottersettings.PlotterSettings; import com.marginallyclever.makelangelo.texture.TextureFactory; import com.marginallyclever.makelangelo.texture.TextureWithMetadata; +import javax.vecmath.Point2d; + import static com.marginallyclever.convenience.helpers.DrawingHelper.paintTexture; public class Makelangelo5Huge implements PlotterRenderer { @@ -69,7 +70,7 @@ private void paintControlBoxFancy(GL3 gl, Plotter robot,TextureWithMetadata text } public void paintPenHolderToCounterweights(GL3 gl, Plotter robot) { - Point2D pos = robot.getPos(); + Point2d pos = robot.getPos(); double gx = pos.x; double gy = pos.y; diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/MakelangeloCustom.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/MakelangeloCustom.java index dd7296ef0..6275f2c59 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/MakelangeloCustom.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/MakelangeloCustom.java @@ -157,7 +157,7 @@ private void paintPenHolderToCounterweights(GL3 gl, Plotter robot ) { /* PlotterSettings settings = robot.getSettings(); double dx,dy; - Point2D pos = robot.getPos(); + Point2d pos = robot.getPos(); double gx = pos.x; double gy = pos.y; diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Polargraph.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Polargraph.java index b7f6b7e53..7c3bb5bc2 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Polargraph.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Polargraph.java @@ -1,12 +1,13 @@ package com.marginallyclever.makelangelo.apps.previewpanel.plotterrenderer; import com.jogamp.opengl.GL3; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Mesh; import com.marginallyclever.makelangelo.apps.previewpanel.ShaderProgram; import com.marginallyclever.makelangelo.plotter.Plotter; import com.marginallyclever.makelangelo.plotter.plottersettings.PlotterSettings; +import javax.vecmath.Point2d; + /** * Common methods for drawing Polargraph machines. * @author Dan Royer @@ -25,7 +26,7 @@ public abstract class Polargraph implements PlotterRenderer { * @param beltR length of belt (mm) * @return cartesian coordinate */ - public Point2D FK(Plotter plotter,double beltL, double beltR) { + public Point2d FK(Plotter plotter,double beltL, double beltR) { double top = plotter.getSettings().getDouble(PlotterSettings.LIMIT_TOP); double right = plotter.getSettings().getDouble(PlotterSettings.LIMIT_RIGHT); double left = plotter.getSettings().getDouble(PlotterSettings.LIMIT_LEFT); @@ -40,7 +41,7 @@ public Point2D FK(Plotter plotter,double beltL, double beltR) { double x = theta * a - b/2; double y = top - Math.sqrt(1.0 - theta * theta) * a; - return new Point2D(x, y); + return new Point2d(x, y); } /** @@ -48,9 +49,9 @@ public Point2D FK(Plotter plotter,double beltL, double beltR) { * @param plotter the plotter * @param x cartesian x * @param y cartesian y - * @return Point2D with x=belt left and y=belt right. + * @return Point2d with x=belt left and y=belt right. */ - public Point2D IK(Plotter plotter,double x,double y) { + public Point2d IK(Plotter plotter,double x,double y) { double right = plotter.getSettings().getDouble(PlotterSettings.LIMIT_RIGHT); double left = plotter.getSettings().getDouble(PlotterSettings.LIMIT_LEFT); double top = plotter.getSettings().getDouble(PlotterSettings.LIMIT_TOP); @@ -61,7 +62,7 @@ public Point2D IK(Plotter plotter,double x,double y) { dx = right-x; double b2 = Math.sqrt(dx*dx+dy*dy); - return new Point2D(b1,b2); + return new Point2d(b1,b2); } @Override @@ -169,7 +170,7 @@ private void paintControlBox(GL3 gl, Plotter robot) { static public void paintPenHolderToCounterweights(GL3 gl, Plotter robot) { - Point2D pos = robot.getPos(); + Point2d pos = robot.getPos(); double gx = pos.x; double gy = pos.y; diff --git a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Zarplotter.java b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Zarplotter.java index 24ba89426..d717a2ec2 100644 --- a/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Zarplotter.java +++ b/src/main/java/com/marginallyclever/makelangelo/apps/previewpanel/plotterrenderer/Zarplotter.java @@ -33,7 +33,7 @@ private void paintPenHolderToCounterweights(GL3 gl, Plotter robot) { /* PlotterSettings settings = robot.getSettings(); //double dx, dy; - Point2D pos = robot.getPos(); + Point2d pos = robot.getPos(); double gx = pos.x; double gy = pos.y; @@ -156,8 +156,8 @@ private void paintControlBox(GL3 gl,Plotter plotter) { } /* @Override - public Point2D getHome() { - return new Point2D(0,0); + public Point2d getHome() { + return new Point2d(0,0); } @Override diff --git a/src/main/java/com/marginallyclever/makelangelo/donatelloimpl/nodes/PatternOnPath.java b/src/main/java/com/marginallyclever/makelangelo/donatelloimpl/nodes/PatternOnPath.java index ba4c338bf..a676743cb 100644 --- a/src/main/java/com/marginallyclever/makelangelo/donatelloimpl/nodes/PatternOnPath.java +++ b/src/main/java/com/marginallyclever/makelangelo/donatelloimpl/nodes/PatternOnPath.java @@ -1,12 +1,13 @@ package com.marginallyclever.makelangelo.donatelloimpl.nodes; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.turtle.Turtle; import com.marginallyclever.nodegraphcore.DockReceiving; import com.marginallyclever.nodegraphcore.DockShipping; import com.marginallyclever.nodegraphcore.Node; import com.marginallyclever.nodegraphcore.Packet; +import javax.vecmath.Point2d; + public class PatternOnPath extends Node { private final DockReceiving pattern = new DockReceiving<>("pattern", Turtle.class, new Turtle()); private final DockReceiving path = new DockReceiving<>("path", Turtle.class, new Turtle()); @@ -40,7 +41,7 @@ public void update() { } double n=0; for(int i=0;i(px,py) = path(index), where path(0) is the start and path(path.length) is the end.

*

(nx,ny) = the approximate normal at path(index). This is approximated by finding

@@ -45,11 +47,11 @@ public void update() { double c0 = index.getValue().doubleValue(); if (c0 > 0) { double c1 = c0 + EPSILON; - Point2D p0 = myPath.interpolate(c0); + Point2d p0 = myPath.interpolate(c0); px.send(new Packet<>(p0.x)); px.send(new Packet<>(p0.y)); - Point2D p1; + Point2d p1; if(c1>total) { p1 = myPath.interpolate(total); p0 = myPath.interpolate(total-EPSILON); @@ -58,7 +60,7 @@ public void update() { } double dx = p1.x - p0.x; double dy = p1.y - p0.y; - Point2D n = new Point2D(dx,dy); + Vector2d n = new Vector2d(dx,dy); n.normalize(); nx.send(new Packet<>(n.x)); ny.send(new Packet<>(n.y)); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_EdgeDetection.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_EdgeDetection.java index fe38b343b..d8956ec97 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_EdgeDetection.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_EdgeDetection.java @@ -1,6 +1,5 @@ package com.marginallyclever.makelangelo.makeart.imageconverter; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.makeart.TransformedImage; import com.marginallyclever.makelangelo.makeart.imagefilter.FilterDesaturate; @@ -11,6 +10,7 @@ import com.marginallyclever.makelangelo.select.SelectSlider; import com.marginallyclever.makelangelo.turtle.Turtle; +import javax.vecmath.Point2d; import java.awt.geom.Rectangle2D; /** @@ -171,7 +171,7 @@ float lerp(float a,float b,float v) { return a + (b - a) * v; } - Point2D lerpEdge(int x0, int y0, int x1, int y1) { + Point2d lerpEdge(int x0, int y0, int x1, int y1) { float in0 = brightness(img.sample(x0,y0,sampleSize)); float in1 = brightness(img.sample(x1,y1,sampleSize)); @@ -179,10 +179,10 @@ Point2D lerpEdge(int x0, int y0, int x1, int y1) { v=Math.max(0,Math.min(1,v)); float x3 = lerp((float)x0,(float)x1,v); float y3 = lerp((float)y0,(float)y1,v); - return new Point2D(x3,y3); + return new Point2d(x3,y3); } - void line(Point2D a,Point2D b) { + void line(Point2d a,Point2d b) { turtle.jumpTo(px+a.x,py+a.y); turtle.moveTo(px+b.x,py+b.y); } @@ -190,16 +190,16 @@ void line(Point2D a,Point2D b) { void case1(int x0,int y0) { int x1 = x0+stepSize; int y1 = y0+stepSize; - Point2D a = lerpEdge(x0,y0,x0,y1); - Point2D b = lerpEdge(x0,y0,x1,y0); + Point2d a = lerpEdge(x0,y0,x0,y1); + Point2d b = lerpEdge(x0,y0,x1,y0); line(a,b); } void case2(int x0,int y0) { int x1 = x0+stepSize; int y1 = y0+stepSize; - Point2D a = lerpEdge(x1,y0,x0,y0); - Point2D b = lerpEdge(x1,y0,x1,y1); + Point2d a = lerpEdge(x1,y0,x0,y0); + Point2d b = lerpEdge(x1,y0,x1,y1); line(a,b); } @@ -207,16 +207,16 @@ void case2(int x0,int y0) { void case3(int x0,int y0) { int x1 = x0+stepSize; int y1 = y0+stepSize; - Point2D a = lerpEdge(x0,y0,x0,y1); - Point2D b = lerpEdge(x1,y0,x1,y1); + Point2d a = lerpEdge(x0,y0,x0,y1); + Point2d b = lerpEdge(x1,y0,x1,y1); line(a,b); } void case4(int x0,int y0) { int x1 = x0+stepSize; int y1 = y0+stepSize; - Point2D a = lerpEdge(x1,y1,x0,y1); - Point2D b = lerpEdge(x1,y1,x1,y0); + Point2d a = lerpEdge(x1,y1,x0,y1); + Point2d b = lerpEdge(x1,y1,x1,y0); line(a,b); } @@ -230,8 +230,8 @@ void case5(int x0,int y0) { void case6(int x0,int y0) { int x1 = x0+stepSize; int y1 = y0+stepSize; - Point2D a = lerpEdge(x0,y0,x1,y0); - Point2D b = lerpEdge(x0,y1,x1,y1); + Point2d a = lerpEdge(x0,y0,x1,y0); + Point2d b = lerpEdge(x0,y1,x1,y1); line(a,b); } @@ -239,8 +239,8 @@ void case6(int x0,int y0) { void case7(int x0,int y0) { int x1 = x0+stepSize; int y1 = y0+stepSize; - Point2D a = lerpEdge(x0,y1,x0,y0); - Point2D b = lerpEdge(x0,y1,x1,y1); + Point2d a = lerpEdge(x0,y1,x0,y0); + Point2d b = lerpEdge(x0,y1,x1,y1); line(a,b); } diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_FlowField.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_FlowField.java index 2c1cd90f8..fd726ec0f 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_FlowField.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_FlowField.java @@ -1,6 +1,5 @@ package com.marginallyclever.makelangelo.makeart.imageconverter; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.convenience.noise.Noise; import com.marginallyclever.convenience.noise.NoiseFactory; import com.marginallyclever.convenience.noise.PerlinNoise; @@ -11,6 +10,7 @@ import com.marginallyclever.makelangelo.select.*; import com.marginallyclever.makelangelo.turtle.Turtle; +import javax.vecmath.Point2d; import javax.vecmath.Vector2d; import java.awt.*; import java.awt.geom.Rectangle2D; @@ -179,11 +179,11 @@ public static boolean getRightAngle() { } private static class SampleAt { - public Point2D p; - public Point2D n; + public Point2d p; + public Vector2d n; public double value; - public SampleAt(Point2D p, Point2D n,double value) { + public SampleAt(Point2d p, Vector2d n,double value) { this.p = p; this.n = n; this.value = value; @@ -206,7 +206,7 @@ protected void convertLine(TransformedImage img, Turtle line) { double offset = (double)j-halfPasses; for(SampleAt sample : samples) { // move to the adjusted point - Point2D p3 = new Point2D(sample.n); + Point2d p3 = new Point2d(sample.n); p3.scale(offset*sample.value); p3.add(sample.p); if(first) { @@ -226,14 +226,14 @@ private SampleAt[] calculateSamplesOnce(TransformedImage img, Turtle line) { int numSamples = (int)(len/samplingRate); SampleAt [] samples = new SampleAt[numSamples]; - Point2D p = line.interpolate(0.0); + Point2d p = line.interpolate(0.0); for(int i=0;i convertLine(TransformedImage img, Point2D a, Point2D b, int numSamples, double sampleRadius) { - List points = new ArrayList<>(); + protected List convertLine(TransformedImage img, Point2d a, Point2d b, int numSamples, double sampleRadius) { + List points = new ArrayList<>(); - Point2D dir = new Point2D(b.x-a.x,b.y-a.y); + Vector2d dir = new Vector2d(b.x-a.x,b.y-a.y); double len = dir.length(); dir.scale(1.0/len); @@ -106,7 +107,7 @@ protected List convertLine(TransformedImage img, Point2D a, Point2D b, double z = 1.0 - img.sample( x, y, sampleRadius ) / 255.0f; //z *= z; // quadratic curve double py = y + waveIntensity * z - waveIntensity/2.0f; - points.add(new Point2D(x,py)); + points.add(new Point2d(x,py)); } return points; } @@ -131,8 +132,8 @@ public void start(Paper paper, TransformedImage image) { // from bottom to top of the image... int i=0; - Point2D lineStart = new Point2D(); - Point2D lineEnd = new Point2D(); + Point2d lineStart = new Point2d(); + Point2d lineEnd = new Point2d(); turtle = new Turtle(); @@ -157,12 +158,12 @@ public void start(Paper paper, TransformedImage image) { Collections.reverse(heights); // sample the image along the line - List points = convertLine(img,lineStart,lineEnd,numSamples,sampleRate); + List points = convertLine(img,lineStart,lineEnd,numSamples,sampleRate); boolean first=true; // mask the line using the heights values and update heights as we go for(int j=0;j<=numSamples;++j) { - Point2D p = points.get(j); + Point2d p = points.get(j); double x = p.x; double heightNew = p.y; double heightOld = heights.get(j); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Moire.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Moire.java index 858fdf7c3..12758ae58 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Moire.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Moire.java @@ -2,7 +2,6 @@ import com.marginallyclever.convenience.LineInterpolator; import com.marginallyclever.convenience.LineInterpolatorSinCurve; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.makeart.TransformedImage; import com.marginallyclever.makelangelo.makeart.imagefilter.FilterDesaturate; @@ -11,6 +10,8 @@ import com.marginallyclever.makelangelo.select.SelectOneOfMany; import com.marginallyclever.makelangelo.turtle.Turtle; +import javax.vecmath.Point2d; +import javax.vecmath.Vector2d; import java.awt.geom.Rectangle2D; import java.util.ArrayList; import java.util.ListIterator; @@ -72,7 +73,7 @@ public void setDirectionIndex(int value) { direction = value; } - protected void convertLine(TransformedImage img, double spaceBetweenLines, double halfStep, Point2D a, Point2D b) { + protected void convertLine(TransformedImage img, double spaceBetweenLines, double halfStep, Point2d a, Point2d b) { LineInterpolatorSinCurve line = new LineInterpolatorSinCurve(a,b); line.setAmplitude(0.4); @@ -82,8 +83,8 @@ protected void convertLine(TransformedImage img, double spaceBetweenLines, doubl // examine the line once. all Z values will be in the range 0...1 ArrayList zList = new ArrayList<>(); - Point2D p = new Point2D(); - //Point2D n = new Point2D(); + Point2d p = new Point2d(); + //Point2d n = new Point2d(); double maxPixel=0; @@ -180,8 +181,8 @@ protected void convertLine(TransformedImage img, double spaceBetweenLines, doubl protected void lineInternal(double maxPulseNow,double z,LineInterpolator line,double t) { double pulseSize = maxPulseNow * z; - Point2D p = new Point2D(); - Point2D n = new Point2D(); + Point2d p = new Point2d(); + Vector2d n = new Vector2d(); line.getPoint(t, p); line.getNormal(t, n); double x=myPaper.getCenterX()+p.x + n.x*pulseSize; @@ -210,8 +211,8 @@ public void start(Paper paper, TransformedImage image) { double spaceBetweenLines = blockScale; // from top to bottom of the image... - Point2D a = new Point2D(); - Point2D b = new Point2D(); + Point2d a = new Point2d(); + Point2d b = new Point2d(); turtle = new Turtle(); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Pulse.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Pulse.java index 1d402ed4b..63f5cac79 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Pulse.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Pulse.java @@ -1,6 +1,5 @@ package com.marginallyclever.makelangelo.makeart.imageconverter; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.makeart.TransformedImage; import com.marginallyclever.makelangelo.makeart.imagefilter.FilterDesaturate; @@ -10,6 +9,8 @@ import com.marginallyclever.makelangelo.select.SelectSlider; import com.marginallyclever.makelangelo.turtle.Turtle; +import javax.vecmath.Point2d; +import javax.vecmath.Vector2d; import java.awt.geom.Rectangle2D; @@ -72,11 +73,11 @@ public void setDirectionIndex(int value) { direction = value; } - protected void convertLine(TransformedImage img, double zigZagSpacing, double halfStep, Point2D a, Point2D b) { - Point2D dir = new Point2D(b.x-a.x,b.y-a.y); + protected void convertLine(TransformedImage img, double zigZagSpacing, double halfStep, Point2d a, Point2d b) { + Vector2d dir = new Vector2d(b.x-a.x,b.y-a.y); double len = dir.length(); dir.scale(1.0/len); - Point2D ortho = new Point2D(-dir.y,dir.x); + Vector2d ortho = new Vector2d(-dir.y,dir.x); double cx = myPaper.getCenterX(); double cy = myPaper.getCenterY(); @@ -135,8 +136,8 @@ protected void convertOneLayer(TransformedImage img) { double x, y = 0; int i=0; - Point2D a = new Point2D(); - Point2D b = new Point2D(); + Point2d a = new Point2d(); + Point2d b = new Point2d(); turtle = new Turtle(); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_PulseCMYK.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_PulseCMYK.java index faf4e8d04..dc25e92a7 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_PulseCMYK.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_PulseCMYK.java @@ -1,6 +1,5 @@ package com.marginallyclever.makelangelo.makeart.imageconverter; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.makeart.TransformedImage; import com.marginallyclever.makelangelo.makeart.imagefilter.FilterCMYK; @@ -10,6 +9,8 @@ import com.marginallyclever.makelangelo.select.SelectSlider; import com.marginallyclever.makelangelo.turtle.Turtle; +import javax.vecmath.Point2d; +import javax.vecmath.Vector2d; import java.awt.*; import java.awt.geom.Rectangle2D; @@ -91,12 +92,12 @@ public void setDirectionIndex(int value) { * @param a the start of the line * @param b the end of the line */ - protected void convertLine(TransformedImage img, double halfLineHeight, Point2D a, Point2D b) { - Point2D normal = new Point2D(b.x-a.x,b.y-a.y); + protected void convertLine(TransformedImage img, double halfLineHeight, Point2d a, Point2d b) { + Vector2d normal = new Vector2d(b.x-a.x,b.y-a.y); double len = normal.length(); normal.scale(1.0/len); - Point2D orthogonal = new Point2D(-normal.y,normal.x); + Vector2d orthogonal = new Vector2d(-normal.y,normal.x); double cx = myPaper.getCenterX(); double cy = myPaper.getCenterY(); @@ -162,8 +163,8 @@ protected void outputChannel(TransformedImage img,Color channel) { double x, y = 0; int i=0; - Point2D a = new Point2D(); - Point2D b = new Point2D(); + Point2d a = new Point2d(); + Point2d b = new Point2d(); turtle.setColor(channel); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_QuadTreeInstant.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_QuadTreeInstant.java index 912240cf4..ed9d15cd5 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_QuadTreeInstant.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_QuadTreeInstant.java @@ -1,6 +1,5 @@ package com.marginallyclever.makelangelo.makeart.imageconverter; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.makeart.TransformedImage; import com.marginallyclever.makelangelo.makeart.imagefilter.FilterDesaturate; @@ -8,6 +7,7 @@ import com.marginallyclever.makelangelo.select.SelectSlider; import com.marginallyclever.makelangelo.turtle.Turtle; +import javax.vecmath.Point2d; import java.awt.geom.Rectangle2D; /** @@ -98,14 +98,14 @@ public void start(Paper paper, TransformedImage image){ turtle = new Turtle(); Rectangle2D.Double rect = myPaper.getMarginRectangle(); - Point2D topLeftP = new Point2D(rect.getMaxX(),rect.getMaxY()); - Point2D bottomRightP = new Point2D(rect.getMinX(),rect.getMinY()); + Point2d topLeftP = new Point2d(rect.getMaxX(),rect.getMaxY()); + Point2d bottomRightP = new Point2d(rect.getMinX(),rect.getMinY()); BoxCondition boxCondition = new BoxCondition(true,true,true,true); recurse(topLeftP, bottomRightP, boxCondition, 0,baseCutOff); fireConversionFinished(); } - private float getAverageOfRegion(Point2D topLeft, Point2D bottomRight) { + private float getAverageOfRegion(Point2d topLeft, Point2d bottomRight) { float sum = 0; int c = 0; for(int i=(int)topLeft.x; i maxDepth) return; float average = getAverageOfRegion(topLeft, bottomRight); @@ -128,18 +128,18 @@ private void recurse(Point2D topLeft, Point2D bottomRight, BoxCondition boxCondi // only draw the sides of the box that are needed if(boxCondition.drawTop) { drawLine(topLeft, - new Point2D(bottomRight.x, topLeft.y)); + new Point2d(bottomRight.x, topLeft.y)); } if(boxCondition.drawBottom) { - drawLine(new Point2D(topLeft.x, bottomRight.y), + drawLine(new Point2d(topLeft.x, bottomRight.y), bottomRight); } if(boxCondition.drawLeft) { drawLine(topLeft, - new Point2D(topLeft.x, bottomRight.y)); + new Point2d(topLeft.x, bottomRight.y)); } if(boxCondition.drawRight) { - drawLine(new Point2D(bottomRight.x, topLeft.y), + drawLine(new Point2d(bottomRight.x, topLeft.y), bottomRight); } @@ -150,31 +150,31 @@ private void recurse(Point2D topLeft, Point2D bottomRight, BoxCondition boxCondi int h2 = (int)(topLeft.y - bottomRight.y)/2; // top left corner recurse(topLeft, - new Point2D(topLeft.x + w2, topLeft.y-h2), + new Point2d(topLeft.x + w2, topLeft.y-h2), new BoxCondition(false,true,false,true), curDepth+1, newCutOff); // top right corner - recurse(new Point2D(topLeft.x + w2, topLeft.y), - new Point2D(bottomRight.x, topLeft.y-h2), + recurse(new Point2d(topLeft.x + w2, topLeft.y), + new Point2d(bottomRight.x, topLeft.y-h2), new BoxCondition(false,true,true,false), curDepth+1, newCutOff); // bottom left corner - recurse(new Point2D(topLeft.x, topLeft.y-h2), - new Point2D(topLeft.x+w2, bottomRight.y), + recurse(new Point2d(topLeft.x, topLeft.y-h2), + new Point2d(topLeft.x+w2, bottomRight.y), new BoxCondition(true,false,false,true), curDepth+1, newCutOff); // bottom right corner - recurse(new Point2D(topLeft.x+w2, topLeft.y-h2), + recurse(new Point2d(topLeft.x+w2, topLeft.y-h2), bottomRight, new BoxCondition(true,false,true,false), curDepth+1, newCutOff); } - private void drawLine(Point2D p1, Point2D p2) { + private void drawLine(Point2d p1, Point2d p2) { double px = myPaper.getCenterX(); double py = myPaper.getCenterY(); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Wander.java b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Wander.java index 8f6a72d11..22b8c6269 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Wander.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/imageconverter/Converter_Wander.java @@ -13,8 +13,8 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.vecmath.Point2d; import java.awt.*; -import java.awt.geom.Point2D; import java.awt.geom.Rectangle2D; import java.util.LinkedList; import java.util.Random; @@ -34,16 +34,12 @@ public class Converter_Wander extends ImageConverter { private static final Random random = new Random(); private static class Bucket { - public Point2D a,b; - public LinkedList unsortedPoints; - public LinkedList sortedPoints; + public final Point2d a = new Point2d(); + public final Point2d b = new Point2d(); + public final LinkedList unsortedPoints = new LinkedList<>(); + public final LinkedList sortedPoints = new LinkedList<>(); - public Bucket() { - a = new Point2D.Double(); - b = new Point2D.Double(); - unsortedPoints = new LinkedList<>(); - sortedPoints = new LinkedList<>(); - } + public Bucket() {} } public Converter_Wander() { @@ -116,15 +112,15 @@ protected void outputChannel(TransformedImage img, Color newColor, int pointsPer for(by=0;by=-1;bx-=wMod) { Bucket b = new Bucket(); - b.a.setLocation(xLeft+bx , yBottom+by ); - b.b.setLocation(xLeft+bx+wMod, yBottom+by+hMod); + b.a.set(xLeft+bx , yBottom+by ); + b.b.set(xLeft+bx+wMod, yBottom+by+hMod); buckets.push(b); } } @@ -148,7 +144,7 @@ protected void outputChannel(TransformedImage img, Color newColor, int pointsPer Bucket b = buckets.get(j); if( b.a.getX()<=endPX && b.b.getX()>endPX && b.a.getY()<=endPY && b.b.getY()>endPY ) { - b.unsortedPoints.addLast(new Point2D.Double(endPX,endPY)); + b.unsortedPoints.addLast(new Point2d(endPX,endPY)); ++actualPoints; break; } @@ -161,14 +157,14 @@ protected void outputChannel(TransformedImage img, Color newColor, int pointsPer //logger.debug(j+" of "+buckets.size()+ " has "+buckets.get(j).unsortedPoints.size()+" points"); // assume we start at the center of the image, for those machines with no pen up option. - Point2D a = new Point2D.Double(0, 0); + Point2d a = new Point2d(0, 0); if (!bucket.unsortedPoints.isEmpty()) { while (!bucket.unsortedPoints.isEmpty()) { double bestLen = Double.MAX_VALUE; int bestI = 0; for (int i = 0; i < bucket.unsortedPoints.size(); ++i) { - double len = a.distanceSq(bucket.unsortedPoints.get(i)); + double len = a.distanceSquared(bucket.unsortedPoints.get(i)); if (bestLen > len) { bestLen = len; bestI = i; @@ -187,7 +183,7 @@ protected void outputChannel(TransformedImage img, Color newColor, int pointsPer for (Bucket bucket : buckets) { while (!bucket.sortedPoints.isEmpty()) { - Point2D a = bucket.sortedPoints.pop(); + Point2d a = bucket.sortedPoints.pop(); turtle.moveTo(px+a.getX(), py+a.getY()); turtle.penDown(); } diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/io/LoadSVG.java b/src/main/java/com/marginallyclever/makelangelo/makeart/io/LoadSVG.java index cf1d131e4..ccc4e3bca 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/io/LoadSVG.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/io/LoadSVG.java @@ -1,7 +1,6 @@ package com.marginallyclever.makelangelo.makeart.io; import com.marginallyclever.convenience.Bezier; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.convenience.W3CColorNames; import com.marginallyclever.makelangelo.turtle.Turtle; import org.apache.batik.anim.dom.*; @@ -18,6 +17,7 @@ import javax.swing.filechooser.FileNameExtensionFilter; import javax.vecmath.Matrix3d; +import javax.vecmath.Point2d; import javax.vecmath.Vector3d; import java.awt.*; import java.io.InputStream; @@ -441,8 +441,8 @@ private void doCubicCurveAbs(SVGPathSeg item, Matrix3d m) { p1.x,p1.y, p2.x,p2.y, p3.x,p3.y); - List points = b.generateCurvePoints(0.1); - for(Point2D p : points) myTurtle.moveTo(p.x,p.y); + List points = b.generateCurvePoints(0.1); + for(Point2d p : points) myTurtle.moveTo(p.x,p.y); pathPoint.set(p3); isNewPath=true; } diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/tools/InfillTurtle.java b/src/main/java/com/marginallyclever/makelangelo/makeart/tools/InfillTurtle.java index 9916e72e4..025e2625b 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/tools/InfillTurtle.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/tools/InfillTurtle.java @@ -2,7 +2,6 @@ import com.marginallyclever.convenience.LineCollection; import com.marginallyclever.convenience.LineSegment2D; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.turtle.Turtle; import javax.vecmath.Point2d; @@ -187,7 +186,7 @@ public int compare(Point2d o1, Point2d o2) { * TODO move this to com.marginallyclever.convenience.LineHelper? * @param alpha first line segment * @param beta second line segment - * @return intersection {@link Point2D} or null + * @return intersection {@link Point2d} or null */ private Point2d getIntersection(LineSegment2D alpha, LineSegment2D beta) { double s1_x = alpha.end.x - alpha.start.x; diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/Generator_Polyeder.java b/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/Generator_Polyeder.java index 85e3e72cb..02b86a338 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/Generator_Polyeder.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/Generator_Polyeder.java @@ -1,6 +1,5 @@ package com.marginallyclever.makelangelo.makeart.turtlegenerator; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.select.SelectInteger; import com.marginallyclever.makelangelo.select.SelectOneOfMany; @@ -8,6 +7,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.vecmath.Point2d; import java.util.ArrayList; /** @@ -39,21 +39,21 @@ public static class Model { * @since 7.24.0 */ public static class Transform { - public Point2D org; + public Point2d org; public double x_x,x_y,y_x,y_y; public Transform() { - org = new Point2D(); + org = new Point2d(); org.x=0; org.y=0; x_x=y_y=1; x_y=y_x=0; } - public Point2D trans(Point2D pt) + public Point2d trans(Point2d pt) { - Point2D a=new Point2D(); + Point2d a=new Point2d(); a.x=org.x+pt.x*x_x+pt.y*y_x; a.y=org.y+pt.x*x_y+pt.y*y_y; return a; @@ -71,7 +71,7 @@ public Transform dup() return t1; } - public void walk(Point2D d) + public void walk(Point2d d) { org.x += d.x*x_x + d.y*y_x; org.y += d.x*x_y + d.y*y_y; @@ -189,8 +189,8 @@ private void geneneratePolygonStep(Turtle turtle,Transform t) { if(code == 1) { // draw a flap - Point2D pos=new Point2D(); - Point2D abspos; + Point2d pos=new Point2d(); + Point2d abspos; pos.x=0; pos.y=size/2f; @@ -220,16 +220,16 @@ private void geneneratePolygonStep(Turtle turtle,Transform t) { { // polygon with `code` number of points. - t.walk(new Point2D(-size/(2*Math.tan(Math.PI/code)),0)); + t.walk(new Point2d(-size/(2*Math.tan(Math.PI/code)),0)); double r=size/(2*Math.sin(Math.PI/code)); for(i=0;i<=code;i++) { double ang=2*Math.PI*(i-0.5)/(double)code; - Point2D pos=new Point2D(); + Point2d pos=new Point2d(); pos.x=r*Math.cos(ang); pos.y=r*Math.sin(ang); - Point2D abspos=t.trans(pos); + Point2d abspos=t.trans(pos); turtle.moveTo(abspos.x,abspos.y); if(i == 0) turtle.penDown(); } @@ -241,7 +241,7 @@ private void geneneratePolygonStep(Turtle turtle,Transform t) { logger.debug("turn {}", i); Transform t1=t.dup(); t1.rotate(2*Math.PI*i/(double)code); - t1.walk(new Point2D(size/(2*Math.tan(Math.PI/code)),0)); + t1.walk(new Point2d(size/(2*Math.tan(Math.PI/code)),0)); t1.rotate(Math.PI); // recursion. geneneratePolygonStep(turtle,t1); diff --git a/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/lineweight/LineWeightByImageIntensity.java b/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/lineweight/LineWeightByImageIntensity.java index 37f83072c..a36e4b396 100644 --- a/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/lineweight/LineWeightByImageIntensity.java +++ b/src/main/java/com/marginallyclever/makelangelo/makeart/turtlegenerator/lineweight/LineWeightByImageIntensity.java @@ -2,7 +2,6 @@ import com.marginallyclever.convenience.LineCollection; import com.marginallyclever.convenience.LineSegment2D; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.Translator; import com.marginallyclever.makelangelo.makeart.TransformedImage; import com.marginallyclever.makelangelo.makeart.turtlegenerator.TurtleGenerator; @@ -173,11 +172,11 @@ private void generateOneThickLine(Turtle turtle, LineWeight line) { // collect all the points, write them at the end. for(int pass=0; pass<=numPasses; ++pass) { double ratio = pass/numPasses; - List offsetLine = generateOneThickLinePass(line,start,ratio); + List offsetLine = generateOneThickLinePass(line,start,ratio); if((pass%2)==1) Collections.reverse(offsetLine); // draw pass - for( Point2D p : offsetLine ) { + for( Point2d p : offsetLine ) { if(first) { turtle.jumpTo(p.x,p.y); first=false; @@ -187,15 +186,15 @@ private void generateOneThickLine(Turtle turtle, LineWeight line) { } } - private List generateOneThickLinePass(LineWeight line,LineWeightSegment start,double distance) { - List offsetSequence = new ArrayList<>(); + private List generateOneThickLinePass(LineWeight line,LineWeightSegment start,double distance) { + List offsetSequence = new ArrayList<>(); // add first point at start of line double [] s0 = getOffsetLine(start, adjustedOffset(start.weight,distance)); Vector2d unit = line.segments.get(0).getUnit(); unit.scale(distance); - offsetSequence.add(new Point2D(s0[0]-unit.x,s0[1]-unit.y)); + offsetSequence.add(new Point2d(s0[0]-unit.x,s0[1]-unit.y)); // add the middle points of the line for(int i=1;i generateOneThickLinePass(LineWeight line,LineWeightSegment s0[0],s0[1],s0[2],s0[3], s1[0],s1[1],s1[2],s1[3] ); - offsetSequence.add(new Point2D(inter[0],inter[1])); - //offsetSequence.add(new Point2D(s1[0],s1[1])); + offsetSequence.add(new Point2d(inter[0],inter[1])); + //offsetSequence.add(new Point2d(s1[0],s1[1])); } else { - offsetSequence.add(new Point2D(s1[0], s1[1])); + offsetSequence.add(new Point2d(s1[0], s1[1])); } s0=s1; } // add the last point of the line unit = line.segments.get(line.segments.size()-1).getUnit(); unit.scale(distance); - offsetSequence.add(new Point2D(s0[2]+unit.x,s0[3]+unit.y)); + offsetSequence.add(new Point2d(s0[2]+unit.x,s0[3]+unit.y)); return offsetSequence; } diff --git a/src/main/java/com/marginallyclever/makelangelo/plotter/Plotter.java b/src/main/java/com/marginallyclever/makelangelo/plotter/Plotter.java index 385ccdc7b..4062b1558 100644 --- a/src/main/java/com/marginallyclever/makelangelo/plotter/Plotter.java +++ b/src/main/java/com/marginallyclever/makelangelo/plotter/Plotter.java @@ -1,14 +1,11 @@ package com.marginallyclever.makelangelo.plotter; -import com.jogamp.opengl.GL3; -import com.marginallyclever.convenience.Point2D; -import com.marginallyclever.makelangelo.apps.previewpanel.PreviewListener; -import com.marginallyclever.makelangelo.apps.previewpanel.PreviewPanel; import com.marginallyclever.makelangelo.paper.Paper; import com.marginallyclever.makelangelo.plotter.plottersettings.PlotterSettings; import com.marginallyclever.makelangelo.turtle.TurtleMove; import javax.swing.event.EventListenerList; +import javax.vecmath.Point2d; import java.security.InvalidParameterException; /** @@ -27,13 +24,13 @@ public class Plotter implements Cloneable { // if pen is "up" then it is not drawing. private boolean penIsUp = false; // current pen position - private Point2D pos = new Point2D(0,0); + private Point2d pos = new Point2d(0,0); @Override public Object clone() throws CloneNotSupportedException { Plotter b = (Plotter)super.clone(); b.listeners = new EventListenerList(); - b.pos = new Point2D(); + b.pos = new Point2d(); b.pos.set(this.pos); return b; } @@ -125,7 +122,7 @@ public void setPos(double x, double y) { /** * @return the current pen holder position. */ - public Point2D getPos() { + public Point2d getPos() { return pos; } diff --git a/src/main/java/com/marginallyclever/makelangelo/plotter/marlinsimulation/MarlinSimulation.java b/src/main/java/com/marginallyclever/makelangelo/plotter/marlinsimulation/MarlinSimulation.java index 5d48757d2..50d153e92 100644 --- a/src/main/java/com/marginallyclever/makelangelo/plotter/marlinsimulation/MarlinSimulation.java +++ b/src/main/java/com/marginallyclever/makelangelo/plotter/marlinsimulation/MarlinSimulation.java @@ -1,12 +1,12 @@ package com.marginallyclever.makelangelo.plotter.marlinsimulation; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.plotter.plottersettings.PlotterSettings; import com.marginallyclever.makelangelo.turtle.Turtle; import com.marginallyclever.makelangelo.turtle.TurtleMove; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.vecmath.Point2d; import javax.vecmath.Vector3d; import java.util.Iterator; import java.util.LinkedList; @@ -531,7 +531,7 @@ public void historyAction(Turtle t,SegmentFunction consumer) { double downAngle = settings.getDouble(PlotterSettings.PEN_ANGLE_DOWN); boolean isUp=true; - Point2D home = settings.getHome(); + Point2d home = settings.getHome(); double lx=home.x; double ly=home.y; poseNow.set(lx,ly,upAngle); diff --git a/src/main/java/com/marginallyclever/makelangelo/plotter/plottersettings/PlotterSettings.java b/src/main/java/com/marginallyclever/makelangelo/plotter/plottersettings/PlotterSettings.java index 2ca7f14fc..03804952f 100644 --- a/src/main/java/com/marginallyclever/makelangelo/plotter/plottersettings/PlotterSettings.java +++ b/src/main/java/com/marginallyclever/makelangelo/plotter/plottersettings/PlotterSettings.java @@ -1,10 +1,10 @@ package com.marginallyclever.makelangelo.plotter.plottersettings; -import com.marginallyclever.convenience.Point2D; import com.marginallyclever.makelangelo.apps.previewpanel.plotterrenderer.PlotterRendererFactory; import com.marginallyclever.util.PreferencesHelper; import org.json.JSONObject; +import javax.vecmath.Point2d; import java.awt.*; import java.util.Arrays; import java.util.prefs.Preferences; @@ -330,8 +330,8 @@ public void setDoubleArray(String key,double [] values) throws NullPointerExcept setString(key,Arrays.toString(values)); } - public Point2D getHome() { - return new Point2D(0,0); + public Point2d getHome() { + return new Point2d(0,0); } /** diff --git a/src/main/java/com/marginallyclever/makelangelo/turtle/Turtle.java b/src/main/java/com/marginallyclever/makelangelo/turtle/Turtle.java index 95cd36b3d..52dfab08a 100644 --- a/src/main/java/com/marginallyclever/makelangelo/turtle/Turtle.java +++ b/src/main/java/com/marginallyclever/makelangelo/turtle/Turtle.java @@ -2,7 +2,6 @@ import com.marginallyclever.convenience.LineCollection; import com.marginallyclever.convenience.LineSegment2D; -import com.marginallyclever.convenience.Point2D; import javax.vecmath.Point2d; import javax.vecmath.Vector2d; @@ -249,8 +248,8 @@ public void forward(double distance) { * Calculate the limits of drawing lines in this turtle history **/ public Rectangle2D.Double getBounds() { - Point2D top = new Point2D(); - Point2D bottom = new Point2D(); + Point2d top = new Point2d(); + Point2d bottom = new Point2d(); getBounds(top,bottom); Rectangle2D.Double r = new Rectangle.Double(); @@ -267,7 +266,7 @@ public Rectangle2D.Double getBounds() { * @param top maximum limits * @param bottom minimum limits */ - private void getBounds(Point2D top,Point2D bottom) { + private void getBounds(Point2d top,Point2d bottom) { bottom.x=Float.MAX_VALUE; bottom.y=Float.MAX_VALUE; top.x=-Float.MAX_VALUE; @@ -299,7 +298,7 @@ private void getBounds(Point2D top,Point2D bottom) { } } - private void getBoundsInternal(Point2D top,Point2D bottom,TurtleMove m) { + private void getBoundsInternal(Point2d top,Point2d bottom,TurtleMove m) { if (top.x < m.x) top.x = m.x; if (top.y < m.y) top.y = m.y; if (bottom.x > m.x) bottom.x = m.x; @@ -544,7 +543,7 @@ public double getDrawDistance() { * @param t a value from 0...{@link Turtle#getDrawDistance()}, inclusive. * @return a point along the drawn lines of this {@link Turtle} */ - public Point2D interpolate(double t) { + public Point2d interpolate(double t) { double d=0; TurtleMove prev = new TurtleMove(0,0,MovementType.TRAVEL); for( TurtleMove m : history) { @@ -555,7 +554,7 @@ public Point2D interpolate(double t) { if(d+change>=t) { // d < t < d+change double v = (t-d==0)? 0 : (t-d) / change; v = Math.max(Math.min(v,1),0); - return new Point2D( + return new Point2d( prev.x + dx * v, prev.y + dy * v); } @@ -565,7 +564,7 @@ public Point2D interpolate(double t) { prev = m; } } - return new Point2D(prev.x,prev.y); + return new Point2d(prev.x,prev.y); } @Override diff --git a/src/main/resources/languages/english.xml b/src/main/resources/languages/english.xml index 9227d2070..72441287b 100644 --- a/src/main/resources/languages/english.xml +++ b/src/main/resources/languages/english.xml @@ -87,12 +87,10 @@ ReportBugReport an issue MenuManualRead the Friendly Manual MenuAboutAbout - MenuSettingsSettings MenuOpenFileOpen File... MenuImportFileImport File... MenuSaveFileSave File... MenuReopenFileReopen last file - MenuViewView MenuView.zoomInZoom + MenuView.zoomOutZoom - MenuView.zoomFitZoom to fit diff --git a/src/test/java/com/marginallyclever/makelangelo/turtle/TurtleTest.java b/src/test/java/com/marginallyclever/makelangelo/turtle/TurtleTest.java index 90f4d5434..e71ee7c6c 100644 --- a/src/test/java/com/marginallyclever/makelangelo/turtle/TurtleTest.java +++ b/src/test/java/com/marginallyclever/makelangelo/turtle/TurtleTest.java @@ -1,8 +1,8 @@ package com.marginallyclever.makelangelo.turtle; -import com.marginallyclever.convenience.Point2D; import org.junit.jupiter.api.Test; +import javax.vecmath.Point2d; import java.awt.*; import java.awt.geom.Rectangle2D; import java.util.List; @@ -281,7 +281,7 @@ public void testInterpolate() { double d = turtle.getDrawDistance(); assertEquals(1000,d); for(int i=0;i<=10;++i) { - assertTrue(new Point2D(i * 100, 0).distance(turtle.interpolate(d*(double)i/10.0)) < EPSILON); + assertTrue(new Point2d(i * 100, 0).distance(turtle.interpolate(d*(double)i/10.0)) < EPSILON); } } } \ No newline at end of file