Follow 1 based on code from Keith Peters.

A line segment is pushed and pulled by the cursor.

float x = 100;
float y = 100;
float angle1 = 0.0;
float segLength = 50;

void setup() {
size(640, 360);
strokeWeight(20.0);
stroke(255, 100);
}

void draw() {
background(0);

float dx = mouseX - x;
float dy = mouseY - y;
angle1 = atan2(dy, dx);
x = mouseX - (cos(angle1) * segLength);
y = mouseY - (sin(angle1) * segLength);

segment(x, y, angle1);
ellipse(x, y, 20, 20);
}

void segment(float x, float y, float a) {
pushMatrix();
translate(x, y);
rotate(a);
line(0, 0, segLength, 0);
popMatrix();
}

Functions Used

stroke()

Sets the color used to draw lines and borders around shapes

size()

Defines the dimension of the display window width and height in units of pixels

ellipse()

Draws an ellipse (oval) to the screen

pushMatrix()

Pushes the current transformation matrix onto the matrix stack

sin()

Calculates the sine of an angle

popMatrix()

Pops the current transformation matrix off the matrix stack

setup()

The setup() function is run once, when the program starts

strokeWeight()

Sets the width of the stroke used for lines, points, and the border around shapes

cos()

Calculates the cosine of an angle

rotate()

Rotates the amount specified by the angle parameter

translate()

Specifies an amount to displace objects within the display window

draw()

Called directly after setup(), the draw() function continuously executes the lines of code contained inside its block until the program is stopped or noLoop() is called

atan2()

Calculates the angle (in radians) from a specified point to the coordinate origin as measured from the positive x-axis