20

How does the math node do calculations with a specific operation:

enter image description here

the usual operations of add,subtract, multiply and divide are quite understandable and are(empirically) very similar to some of the operations in MixRGB node. But, how do the operations such as Sine, Power, Logarithm, Minimum, Maximum, Modulo, Round, etc,.. interpret with the values. How can we visualize this in realtime?

PGmath
  • 25,106
  • 17
  • 103
  • 199
bzal
  • 882
  • 2
  • 13
  • 23

2 Answers2

39

Here is a list of the mathematical equivalents of each operation.

  • Add: Out = Value1 + Value2.
  • Subtract: Out = Value1 - Value2.
  • Multiply: Out = Value1 * Value2.
  • Divide: Out = Value1 / Value2.
  • Sine: Out = Sin(Value1).
  • Cosine: Out = Cos(Value1).
  • Tangent: Out = Tan(Value1).
  • Arcsin: Out = Sin⁻¹(Value1).
  • Arccosine: Out = Cos⁻¹(Value1).
  • Arctangent: Out = Tan⁻¹(Value1).
  • Power: Out = Value1 ^ Value2.
  • Logarithm: Out = log(Value2, Value1).††
  • Minimum: Out = Smaller Value of (Value1, Value2).
  • Maximum: Out = larger value of (Value1, Value2).
  • Round: Out = Value1 rounded to nearest integer.
  • Less Than: Out = 1 if Value1 < Value2, else 0'
  • Greater Than: Out = 1 if Value1 > Value2, else 0'
  • Modulo: Out = Value1 (mod Value2).

Note that some operations use only the first input, in such cases the second input is ignored completely.

†. All trigonometric functions use radians.
††. log(x, y) = the logarithm of x to the base y.
‡. x mod y = the remainder when x is divided by y.

PGmath
  • 25,106
  • 17
  • 103
  • 199
13

To supplement PGmath's answer:

It is worth noting that the math is calculated a bit differently than you might think. It has to do with limitations of storing and representing floating point numbers (reals) in a computer (in binary format).

For the same reasons you cannot represent 1/3 in decimal exactly (it is 0.333...) you cannot represent exactly (for example) 1/10 in binary (but it is easy in decimal as 0.1).

The decimal floating-point numbers you enter are only approximated by the binary floating-point numbers actually stored in the machine.

This can result in some surprises. You can see what the number stored in machine actually is like this in a Python Console:

from decimal import Decimal
Decimal(2.675) = 2.67499999999999982236431605997495353221893310546875

So when rounding this number to 2 decimal places it will result in 2.67 instead of 2.68 you expect.

When building large nets of Math Nodes such "errors" can lead to a butterfly effect causing big differences in the end on the output.

Jaroslav Jerryno Novotny
  • 51,077
  • 7
  • 129
  • 218