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); >