5

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"?

Ray Mairlot
  • 29,192
  • 11
  • 103
  • 125
rothloup
  • 403
  • 4
  • 14

1 Answers1

9

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

enter image description here

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?

enter image description here

enter image description here

Robin Betts
  • 76,260
  • 8
  • 77
  • 190
  • 1
    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. – rothloup Jul 12 '20 at 15:13
  • 1
    @rothloup Thanks! .. Keep the graphing trick in your back pocket.. you can visualise the other functions, and your own combinations. – Robin Betts Jul 12 '20 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)

    – Nickolai Oct 28 '23 at 19:23
  • @Nickolai hehe .. I love it when that happens :) Will insert with a credit, and leave the challenge up, when tested. – Robin Betts Oct 29 '23 at 08:51