# Ping Pong Math node - what does it do?

Reading through the math node docs, I came across a math function named "ping-pong".

The docs state that ping-pong does the following

The output value is moved between 0.0 and the Scale based on the input value.

What in the world does that mean? Can anyone tell me what the actual ping-pong function is? What input values lead to an output of 0, and what input values lead to an output of "scale"?

## 1 Answer

It's a positive symmetrical triangle-wave, amplitude Scale, period 2 * Scale, 0 at 0.

Here's the function illustrated with 'Scale' (from the bottom up) set to 1, 0.5, and 0.333.

These planes are 8 units across, and 2 up, 0 at center.

You could roll your own like this:

PingPong(Value) = Scale - abs( (abs(Value) % (2*Scale)) - Scale)


..but someone else might come up with a neater way.. :)

edit: Indeed they have :) thanks to @Nikolai for:

Scale - abs(Value % (2*Scale) - Scale )


You could wrap up the node like this to give more intuitive inputs?

• great illustrative answer, thank you. Glad I asked, because that's not at all what I imagined it would be. I expected a square-wave type function. Commented Jul 12, 2020 at 15:13
• @rothloup Thanks! .. Keep the graphing trick in your back pocket.. you can visualise the other functions, and your own combinations. Commented Jul 12, 2020 at 16:21
• > ..but someone else might come up with a neater way.. :) You can remove the inner abs: Start with abs(input), then flip it with a negative sign: -abs(input) Then add scale to move it up: scale - abs(input) Then get it in range: scale - abs(input%2*scale) Finally shift the peak so that it sits at scale: scale - abs(input%(2*scale)-scale) Commented Oct 28, 2023 at 19:23
• @Nickolai hehe .. I love it when that happens :) Will insert with a credit, and leave the challenge up, when tested. Commented Oct 29, 2023 at 8:51