trigonometric functions require a floating point mode
All trigonometric functions in picFX use radient angles. I invite you to forget about degrees. I have to say you that, except to tell the coordinates on the earth (or in astronomy) as longitude and latitude (decl/r.-a.), I do never use degrees at school, for personal research or whatever else. Never.
In radient, the "right" angle (is it so we say? I mean the one between two perpendicular lines, 90°) is pi/2, the flat angle (=180°) is pi, and the full angle (=360°) is 2*pi.
When you draw a part (an arc) of a circle (radius 1), the length of the path is equal to the angle between the two bounds, from the center. And, of course, the length of the circumference of a circle of radius one is... 2pi.
If you don't know what sin, cos, tan, asin, acos or atan mean...
Imagine an object moving in circle, for example the Moon around the Earth, or the Earth around the Sun.
Trigonometric functions allow us to know at which coordinate the object is at a given time. If the circle has a radius of one, the horizontal coordinate is cos(a), a being the angle the object has moved since being on the right, equal to the length of the path it made. sin(a) is the vertical coordinate.
As you can guess, these functions both vary between -1 and 1. To see how the function looks like, put "y+sin(x/10)*10-128" in a function field and render.
If you draw a
vertical line tangent to the circle on the right, and then imagine there
is a light in the center of the circle, then tan(a) gives the vertical
coordinate of the "shadow" of the turning object, the crossing point
of the tangent and a line coming from the center and going throught the moving
tan(ąpi/2) is undefined (infinite) because at this moment the "shadow" does not reach the tangent, and the line going through the point is vertical and therefore parralel to the tangent..
Note that when the point is on the left half (cos(a)<0), the shadow does not actually reach the tangent. You are forced to use the line going through the point and the center :-)
See the appearance of the tangent curve using y+tan(x/10)*10-128, or 25500/((y+tan(x/20)*20-128)^2+100).
acos() is the inverse function of cos(). You give the horizontal coordinate and you get the angle. Obviously, acos(x) is not defined if x is bigger than one or smaller than -1...
asin() is the inverse of sin().
atan() is the inverse of tan(). This function is defined for any value. You say where is the "shadow" and you get the angle... It always returns a value between -pi/2 and +pi/2, with most of the change around zero..
End of definitions :-)
As sin and cos return a value between -1 and 1, it is often (when your expression is the (co)sine of something and nothing else) needed to multiply it (127), and add a constant (128) to make it take the [0;255] range. So use sin(...)*127+128.
Use the sine if you want to have height lines of some function, a line each 2pi, starting at pi/2. For example, sqrt((x-128)^2+(y-128)^2) (try it!, maybe putting "255-" at the beginning) is a kind of cone centered on (128;128), and the sine of it makes concentrical circles...
makes vertical lines; you can think of x/2 to be a little slope raising in your
direction to the right...
The other most handful use of the sine is to make waves. Do two dimensional waves with sin(x)*sin(y). You can also use addition, but note that it will return something within [-2;2] instead of [-1;1]...
Do not hesitate to put sines inside sines. Try for example sin(y/2+10*sin(x/10))*127+128
function is basically the same as the sine, only with a little (pi/2) shift to
Tangent. I use this if I want to have some regular areas separated by thin lines where sudden and chaotic changes occur. Try for example the above one, where you add a tangent of the horizontal coordinate (and divided the sinx by two, too): sin(tan(x/17)+y/4+5*sin(x/10))*127+128
Also try this tangent of the vertical coordinate to which I added the sine of the horizontal: tan(y/10+sin(x/5))*2+128. A little variation: tan(y/10+sin(x/10))*40+128
Because of their
annoying limitation to the [-1;1] range, the asin and acos function are not
really useful. (Actually asin(2) and other are defined but not real... wait
picFX version supporting complex numbers :-)
ArcTangent, however can be quite useful if you want a quite sudden colour change, however smooth. Try atan((y-128)/8)/pi*255+128
A general formula would be: atan(f(x,y))/pi*255+128: dark when f(x,y) is negative and bright when f(x,y) is positive. The change occur when f(x,y) is around zero.
This actually shows the solutions of an inequation..
I will come again on this when speaking of implicit functions.
Remember that it outputs a value between -pi/2 and pi/2...
If you feel ready, you can already try to experiment all sorts of functions using trig. functions, you can get really nice pictures just with the three sin, tan, atan functions.
As a rule: Do not be afraid to write things that you would think stupid ;-). (Btw, Divisions by zero, arc[co-]sines on undefined values do not make picFX crash :-)
2.2: Trigonometric Functions
2.3: Min, Max, Modulo, Abs
2.4: Other functions