code: public void createEquiAngle(float radius, int numRotations, int numSamples, Callback2d callback) {
          for (int sample = 0; sample < numSamples; sample++) {
              float angle = 2.0f * (float) Math.PI * (sample * numRotations) / numSamples;
              float r = radius * sample / (numSamples - 1);
              float x = (float) Math.sin_roquen_9(angle + 0.5f * (float) Math.PI) * r;
              float y = (float) Math.sin_roquen_9(angle) * r;
              callback.onNewSample(x, y);
          }
      }
docs: Create <code>numSamples</code> number of samples on a spiral with maximum radius <code>radius</code> around the center using <code>numRotations</code> number of rotations
  along the spiral, and call the given <code>callback</code> for each sample generated.
  <p>
  The generated sample points are distributed with equal angle differences around the spiral, so they concentrate towards the center.
  
  @param radius
  the maximum radius of the spiral
  @param numRotations
  the number of rotations of the spiral
  @param numSamples
  the number of samples to generate
  @param callback
  will be called for each sample generated