Is it possible to do these plots using only algebraic functions -- for example, using 1/x and then a rotation to plot the hyperbolae? I know of an algebraic parameterization for the unit circle, but I'm not sure about the ellipse.
-Wm On Mon, Sep 16, 2013 at 3:40 PM, km <[email protected]> wrote: > Summary of results. The strategy of hyperbola below (plotting a complex > table) is not well known. Henry Rich found it and reported it. > > Bo Jacoby gave the best way to change the sign of the real part of a complex > number. > Simply do [: + - . > > > > NB. Complex Analytic Geometry > > > NB. How to calculate complex number lists and tables for > NB. plotting lines, circles, ellipses, and hyperbolas. How to > NB. modify these tables to achieve translations, rotations, > NB. and reflections. Begin with preliminaries: > > > steps =: {.@] + -~/@] * [ %~ [: i. >:@[ > > NB. n steps a,b produces n+1 equally spaced values from a to b > > to =: 512 steps , NB. Usage a to b for 512 steps from a to b > > sin =: 1&o. > > cos =: 2&o. > > sinh =: 5&o. > > cosh =: 6&o. > > arcsinh =: _5&o. > > > NB. Now, results > > > line =: 2 : 'm + (n-m)*]' > > NB. A line B [ t is point "t of the way from A to B". Command > NB. > NB. plot 0 line 1j1 [ _1 to 2 > NB. > NB. shows the line segment from _1j_1 to 2j2 > > NB. You are plotting a list of 513 complex numbers. > > > parabola =: 1 : '] j. (1 % 4 * m) * *:' > > NB. p parabola x produces point x j. y on parabola > NB. (*: x) = 4*p*y . Command > NB. > NB. plot 1r4 parabola _2 to 2 > NB. > NB. plots parabola y = *: x for x from _2 to 2 > > NB. You are plotting a list of 513 complex numbers. > > > ellipse =: 2 : '((m * cos) j. n * sin) 0 to 2p1' > > NB. Suggested by Henry Rich > > NB. Command > NB. > NB. plot a ellipse b > NB. > NB. plots the ellipse 1 = (*: x % a) + *: y % b . > > NB. If a = b you get the circle (*: x) + (*: y) = *: a > > > hyperbola =: 2 : '[: (,: +) (n * sinh) j. m * cosh' > > NB. Suggested by Henry Rich > > toh =: [: to/ [: arcsinh %~ > > NB. b toh c,d is (arcsinh c%b) to (arcsinh d%b) > > NB. Command > NB. > NB. plot a hyperbola b [ b toh c,d > NB. > NB. plots y^2/a^2 - x^2/b^2 = 1 for x from c to d. > > NB. Remember the pattern b [ b toh c,d > > NB. You are plotting rows of a 2 by 513 table to get the two > NB. branches of the hyperbola. > > > NB. Rotations, translations, and reflections > > NB. Multiply a complex number list or table by (^&j. theta) > NB. to rotate all of its points by theta radians. The center > NB. of rotation is the origin 0 = 0j0 . > > NB. Add 5j3 to a complex list or table to move all of its points > NB. the distance and direction of 5j3 from 0j0. > > NB. Use (+ list) or (+ table) (monadic + is conjugate) to > NB. reflect all the points of the list or table across the > NB. line through 0j0 and 1j0 -- the x-axis. Afterwards > NB. multiply by (^&j. theta) to achieve a reflection across > NB. the line through 0j0 and (^&j. theta). > > NB. Multiply a positive number p times a list or table to > NB. achieve an expansion from 0 or compression toward 0 > NB. according as p > 1 or p < 1 . > > NB. If you want to combine several operations do the > NB. reflection first and the translation last. > > NB. Example > NB. > NB. plot (^&j. theta) * p parabola _2 to 3 > NB. > NB. plots a parabola rotated by theta radians, with 0j0 > NB. the center of rotation. If theta is _1r2p1 (that is > NB. - pi%2 radians) you have converted a (*: x) = 4 * p * y > NB. parabola into a (*: y) = 4 * p * x parabola. > > > --Kip Murray > > Sent from my iPad > > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
