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