# Move Curve Control Point

In this section, you will studied how to move the curve control point and manipulates the shape of curve.

Tutorials

# Move Curve Control Point

In this section, you will studied how to move the curve control point and manipulates the shape of curve.

The Control points are the points on a curve which are used to change the shape and angle of the curve. On stretching and rotating the control point, the shape of the curve and the angle of a curve manipulates.

To draw a curve, we have defined the class QuadCurve2D.Double  and CubicCurve2D.Double. The class QuadCurve2D.Double defines a  quadratic parametric curve segment. The class Line2D.Double creates a line segment. The Point2D.Double class defines a point. The MouseEvent class calls its methods mousePressed(), mouseReleased(), mouseDragged()  through which you can stretch the control point in any direction and manipulates the curve.

Here is the code of CurveControlPoint.java

```import java.awt.*;
import javax.swing.*;
import java.awt.geom.*;
import java.awt.event.MouseEvent;

public class CurveControlPoint {
public static void main(String[] args){
JFrame frame = new JFrame("Curve Control Point");
frame.setSize(350, 200);
frame.setVisible(true);
}
}
class Curve extends JPanel {
CubicCurve2D.Double curveC;

public Curve() {
super(new BorderLayout());
curve1 = new Curve1();
MouseHandler handler = new MouseHandler();
}
class Curve1 extends JComponent {
public Curve1() {
startPoint.x, startPoint.y,
point2d.x, point2d.y,
endPoint.x, endPoint.y);
curveC = new CubicCurve2D.Double();
}
public void paint(Graphics g) {
Graphics2D g2D = (Graphics2D) g;
curveQ.ctrlx = curve.getCenter().x;
curveQ.ctrly = curve.getCenter().y;
g2D.setPaint(Color.magenta);
g2D.draw(curveQ);
g2D.draw(curveC);
g2D.setPaint(Color.blue);
curve.draw(g2D);
Line2D.Double line = new Line2D.Double(startPoint, curve.getCenter());
g2D.draw(line);
line = new Line2D.Double(endPoint, curve.getCenter());
g2D.draw(line);
}
}
Point2D.Double startPoint = new Point2D.Double(60, 95);
Point2D.Double endPoint = new Point2D.Double(150, 75);
Point2D.Double point2d = new Point2D.Double(80, 25);
CurveMarker curve = new CurveMarker(point2d);
Curve1 curve1 = new Curve1();

class CurveMarker {
public CurveMarker(Point2D.Double point2d) {
point = point2d;
ellipse = new Ellipse2D.Double(point2d.x - r, point2d.y - r, 2.0 * r,
2.0 * r);
}
public void draw(Graphics2D g2D) {
g2D.draw(ellipse);
}
Point2D.Double getCenter() {
return point;
}
public boolean contains(double x, double y) {
return ellipse.contains(x, y);
}
public void setLocation(double x, double y) {
point.x = x;
point.y = y;
ellipse.x = x - r;
ellipse.y = y - r;
}
Ellipse2D.Double ellipse;
Point2D.Double point;
double r = 3;
}
public void mousePressed(MouseEvent event) {
selected = curve;
}
public void mouseReleased(MouseEvent event) {
selected = null;
}
public void mouseDragged(MouseEvent event) {
selected.setLocation(event.getX(), event.getY());
curve1.repaint();
}
CurveMarker selected = null;
}
}
```

Output will be displayed as

On stretching the control point with mouse, the shape of the curve will be changed:

# Move Curve Control Point

Related Tutorials

Discuss: Move Curve Control Point

Subject (*):