(*^ ::[ Information = "This is a Mathematica Notebook file. It contains ASCII text, and can be transferred by email, ftp, or other text-file transfer utility. It should be read or edited using a copy of Mathematica or MathReader. If you received this as email, use your mail application or copy/paste to save everything from the line containing (*^ down to the line containing ^*) into a plain text file. On some systems you may have to give the file a name ending with ".ma" to allow Mathematica to recognize it as a Notebook. The line below identifies what version of Mathematica created this file, but it can be opened using any other version as well."; FrontEndVersion = "X Window System Mathematica Notebook Front End Version 2.2"; X11StandardFontEncoding; fontset = title, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, e8, 24, fontName, "Times"; fontset = subtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, bold, e6, 18, fontName, "Times"; fontset = subsubtitle, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeTitle, center, M7, italic, e6, 14, fontName, "Times"; fontset = section, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, grayBox, M22, bold, a20, 18, fontName, "Times"; fontset = subsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, blackBox, M19, bold, a15, 14, fontName, "Times"; fontset = subsubsection, inactive, noPageBreakBelow, nohscroll, preserveAspect, groupLikeSection, whiteBox, M18, bold, a12, 12, fontName, "Times"; fontset = text, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = smalltext, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 10, fontName, "Times"; fontset = input, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeInput, M42, N23, bold, L-5, 12, fontName, "Courier"; fontset = output, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, fontName, "Courier"; fontset = message, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, R65535, L-5, 12, fontName, "Courier"; fontset = print, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, L-5, 12, fontName, "Courier"; fontset = info, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeOutput, M42, N23, B65535, L-5, 12, fontName, "Courier"; fontset = postscript, PostScript, formatAsPostScript, output, inactive, noPageBreakInGroup, nowordwrap, preserveAspect, groupLikeGraphics, M7, l34, w282, h287, 12, fontName, "Courier"; fontset = name, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, italic, 10, fontName, "Geneva"; fontset = header, inactive, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = leftheader, inactive, L2, 12, fontName, "Times"; fontset = footer, inactive, noKeepOnOnePage, preserveAspect, center, M7, 12, fontName, "Times"; fontset = leftfooter, inactive, L2, 12, fontName, "Times"; fontset = help, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 10, fontName, "Times"; fontset = clipboard, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = completions, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = special1, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = special2, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = special3, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = special4, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times"; fontset = special5, inactive, nohscroll, noKeepOnOnePage, preserveAspect, M7, 12, fontName, "Times";paletteColors = 128; showRuler; automaticGrouping; currentKernel; ] :[font = input; preserveAspect] Green = RGBColor[.28,.92,.83]; Blue = RGBColor[.18,.41,.77]; Red = RGBColor[.93,.33,.33]; ;[s] 1:0,0;92,-1; 1:1,0,0 ,Courier,1,12,0,0,0; :[font = text; inactive; preserveAspect] The following function Draw2dL[ Obj_, Mat_ ] accepts as input a list of Objects to graph. An Object should be a list with 2 elements in it: { {f[t], g[t] } , {t,t_min,t_max} } The first element is a pair of functions parametrizing something in the plane, and the second element describing how long to run the parameter for the first object. Similarly for Draw3dL. :[font = input; preserveAspect] ClearAll[Draw2dL]; Draw2dL[Obj_,Mat_] := Module[ {graph1table = Obj,graph2table = Obj,Func,Rang}, Do[ Func = Obj[[i]][[1]]; Rang = Obj[[i]][[2]]; graph1table[[i]] = ParametricPlot[ Evaluate[Func], Evaluate[Rang], PlotStyle->{{Red,Thickness[.02]}}, AspectRatio->Automatic, DisplayFunction->Identity]; graph2table[[i]] = ParametricPlot[ Evaluate[Mat.Func], Evaluate[Rang], PlotStyle->{{Blue,Thickness[.02]}}, AspectRatio->Automatic, DisplayFunction->Identity], {i,1,Length[Obj]} ]; Show[Join[graph1table,graph2table], {DisplayFunction->$DisplayFunction}]] ;[s] 1:0,0;657,-1; 1:1,0,0 ,Courier,1,12,0,0,0; :[font = input; preserveAspect] ClearAll[Draw3dL]; Draw3dL[Obj_,Mat_] := Module[ {graph1table = Obj,graph2table = Obj,Func,Rang}, Do[ Func = Obj[[i]][[1]]; Rang = Obj[[i]][[2]]; graph1table[[i]] = ParametricPlot3D[ Evaluate[Join[Func,{{Red,Thickness[.02]}}]], Evaluate[Rang], DisplayFunction->Identity]; graph2table[[i]] = ParametricPlot3D[ Evaluate[Join[Mat.Func,{{Blue,Thickness[.02]}}]], Evaluate[Rang], DisplayFunction->Identity], {i,1,Length[Obj]} ]; Show[Join[graph1table,graph2table], {DisplayFunction->$DisplayFunction}]] ;[s] 1:0,0;577,-1; 1:1,0,0 ,Courier,1,12,0,0,0; :[font = input; preserveAspect] Parabola3d = { {t,t^2,-1} , {t,-5,5} }; Cir3d = { {Cos[t]+1,Sin[t]-1,1}, {t,0,2Pi} }; Hyperb3d = { {Cosh[t]+1, Sinh[t]-1,-2}, {t,-2,2} }; Pt3d = { {2,3,0} , {t,0,1} }; Pt3d2 = { {1,2,-1}, {t,0,1} }; Parabola2d = { {t+1,t^2-2} , {t,-5,5} }; Cir2d = { {Cos[t]+1,Sin[t]-2}, {t,0,2Pi} }; Hyperb2d = { {Cosh[t]+1, Sinh[t]-2}, {t,-2,2} }; Pt2d = { {2,3} , {t,0,1} }; Pt2d2 = { {-1,-2}, {t,0,1}}; ;[s] 1:0,0;406,-1; 1:1,0,0 ,Courier,1,12,0,0,0; :[font = input; preserveAspect] MatrixForm[ M2d = {{0,1},{1,0}}] Draw2dL[{Pt2d2,Cir2d, Parabola2d}, M2d] ;[s] 1:0,0;80,-1; 1:1,0,0 ,Courier,1,12,0,0,0; :[font = input; preserveAspect] t1 := (45)(Pi)/(180) MatrixForm[M= N[{{Cos[t1],-Sin[t1]},{Sin[t1],Cos[t1]}}]] Draw2dL[{Pt2d2,Cir2d, Parabola2d}, M] ;[s] 1:0,0;116,-1; 1:1,0,0 ,Courier,1,12,0,0,0; :[font = input; preserveAspect] MatrixForm[ M3d = {{1,0,0},{0,0,0}, {0,1,0}}] Draw3dL[{Pt3d, Pt3d2,Parabola3d,Cir3d}, M3d] ;[s] 1:0,0;90,-1; 1:1,0,0 ,Courier,1,12,0,0,0; ^*)