Curve Operations with Maple
Curve construction examples
This worksheet gives some examples of operations that can be done with Maple on curves
and vector operations. See Section 2.4 for explanations of some of the words.
Conchoids
The idea of a conchoid is to start with some curve
rold(t) = ( x(t),y(t) )
We think of r(t) as a radius vector from the origin. The new curve is formed
by increasing the length of the vector r(t) by a fixed amount, say 1.
This means that the new curve has vector equation
rnew(t) = rold(t) + rold(t)/| rold(t) | .
The new curve is called a conchoid.
Here are some examples that show how to build a conchoid efficiently using Maple. Note
that all the data can be changed merely by editing the first input line.
The example below shows how to construct the conchoid based on the curve
> x := 2+t; y := -2*t; a := -3; b := 3;
> radius := sqrt(x^2+y^2);
> plot({[x,y,t=a..b], [x*(1+1/radius),y*(1+1/radius),t=a..b] },scaling=constrained);
On speed
Here are some commands that are pertinent to speed. Recall that if a curve is given
by the vector
r(t) = (x(t),y(t)),
then the speed is the scalar sqrt( x(t)^2 + y(t)^2 ). It's another function of t.
To ``see'' the speed on a parametric curve, one way is to plot points at equal time intervals
along the curve. Here's how. First we define a curve:
> x := t+cos(2*t); y := 1+sin(2*t); a := 0; b := 2*Pi;
Now we can plot the curve, but let's do it with 50 points rather than as a continuous curve:
> plot( [x,y,t=a..b], style=point, numpoints=50,scaling=constrained);
Why aren't the points equally spaced? Because the curve is not parametrized with constant
speed.
Let's try another curve:
> x := cos(t); y := sin(t); a := 0; b := 2*Pi;
> plot( [x,y,t=a..b], style=point, numpoints=50,scaling=constrained);
This time the plot points DO seem to be equally spaced.
Given a curve, we can use Maple to find its length. Here are some helpful commands.
> x := cos(t); y := sin(t); a:=0; b := 2*Pi;
> dx := diff(x,t); dy := diff(y,t);
> speed := sqrt( dx^2+dy^2);
> simplify(%);
> int(%,t=a..b);
>