WCM C++ supports some of the
classic C++ math functions. However it is recommended to use function
from WCM C++'s own extended library.

In mathematics, you have probably seen functions like sin and log, and
you hav
e learned to evaluate expressions like sin(π/2) and log(1/x). First, you
evaluate the expression in parentheses, which is called the argument of
the function. For example, π /2 is approximately 1.571, and 1/x is 0.1
(if x happens to be 10).

Then you can eva
luate the function itself, either by looking it up in a table or by
performing various computations. The sin of 1.571 is 1, and the log of
0.1 is -1 (assuming that log indicates the logarithm base 10).

This process can be applied repeatedly to evaluate mor
e complicated expressions like log(1/sin(π /2)). First we evaluate the
argument of the innermost function, then evaluate the function, and so
on.

WCM C++ provides a set of built-in functions that includes most of the
mathematical operation. The math functions are invoked using a syntax
that is similar to mathematical notation with exception that for your
convenience all the angles must be specified it degrees (not radians as
in mathematics and classic C++). Here are the examples of using
mathematical functions available in WCM C++:

double dRes;

// assign dRes sine of 60 degrees which is 0.866025

dRes = Sin ( 60 );

// assign dRes cosine of 60 degrees which is 0.500000

dRes = Cos ( 60 );

// outputs tangent of 60 degrees which is 1.732051

dRes = Tan ( 60 );

// assign dRes arcsine of 0.866025 which is 59.999954 degrees

dRes = ASin (
0.866025 );

// assign dRes arccosine of 0.500000 which is 60.000001 degrees

dRes = ACos (
0.500000 );

// assign dRes arctangent of 1.732051 which is 60.000003 degrees

dRes = ATan (
1.732051 );

// assign dRes 2 raised to the power 3 which is 8

dRes = Pow ( 2, 3
);

// assign dRes e or 2.7182 raised to the power 3 which is 20.085537

dRes = Exp ( 3 );

// assign dRes the natural logarithm of 2.7182 which is 0.999970

dRes = Log ( 2.7182 );

// assign dRes square root of 4 which is 2.000000

dRes = Sqrt ( 4 );

// assign dRes a random value between 0 and 1 (not including 1)

dRes = Rand ();

As you can see from this example, some functions may have multiple
parameters and some might not have any.
This will be explained later.

Notes and Cautions: These functions are a
lso examples of “loose typing”. Even though the functions are defined in
the library to use a
double
argument and return a
double
result, this is only loosely enforced. This will generally be fine, but
care should be used with this approach. Also keep in mind that even if
you are using function Rand() then our compiled cartoon will not be
random once it is created. But different compilations of the same
cartoon will be.

Alan Sturgess shared an excellent video he made using Tales Animator! You can still download Tales Animator here. Unfortunately it is only available for Wi

There is a prototype of simple online character designer available
HERE. It is only a prototype,
it does not contain many pieces yet but it can already generat

Web Cartoon Maker 1.5 is finally here! You can download it
HERE!
Here is what was updated in version 1.5:
Web Cartoon Maker Desktop Edition is now fully standal