rubbs  
                
                  
                    March 22, 2020,  9:46pm
                   
                  1 
               
             
            
              Hello,
import peasy.*;
ArrayList<PVector> points = new ArrayList<PVector>();
float p;
PeasyCam cam;
void setup() {
  size(800, 800, P3D);
  background(20);
  colorMode(HSB);
  //cam = new PeasyCam(this , 5000);
}
void draw() {
  noFill();
  stroke(200,180,200);
  strokeWeight(5);
  
  translate(width / 2, height / 2);
  points.add(new PVector(x(p++), y(p++), z(p++)));
  
  beginShape();
  for (PVector v : points) {
    vertex(v.x, v.y, v.z);
  }
  endShape();
  
}
// HELICOID
float x(float p) {
  return 100 * cos(p);
}
float y(float p) {
  return 200 * -sin(p);
}
float z(float p) {
  return 20 * pow(tan(PI/2 + p) , -1); // return p?
}
Many thanks,
             
            
              1 Like 
            
            
           
          
            
            
              Hello !
And welcome to the processing forum. Nice to have you here!
I think to add 1 three times to the angle p was just to much (it’s in radians, not degree!).
And also the function z is problematic!
Warm regards,
Chrisir
Full Code 
import peasy.*;
ArrayList<PVector> points = new ArrayList<PVector>();
float p;
PeasyCam cam;
void setup() {
  size(800, 800, P3D);
  background(20);
  colorMode(HSB);
  avoidClipping(); 
  cam = new PeasyCam(this, 5000);
}
void draw() {
  background(20);
  lights(); 
  points.add(new PVector(x(p), y(p), z(p)));
  p+=0.0521;
  showData();
  cam.beginHUD();
  fill(255);
  text("Helicoid. Use peasycam.", 19, 19); 
  cam.endHUD();
}
//---------------------------------------------------------------------------
void showData() {
  // show data in points
  noFill();
  stroke(200, 180, 200);
  strokeWeight(5);
  translate(width / 2, height / 2);
  beginShape();
  for (PVector v : points) {
    vertex(v.x, v.y, v.z);
  }
  endShape();
}
//---------------------------------------------------------------------------
// HELICOID
float x(float p) {
  return 100 * cos(p);
}
float y(float p) {
  return 200 * sin(p);
}
float z(float p) {
  // return 20 * pow(tan(PI/2 + p), -1); // return p?
  //return tan(PI/2 + p); // return p?
  return 10*p;
}
// --------------------------------------------------------------------------
void avoidClipping() {
  // avoid clipping :
  // https : //
  // forum.processing.org/two/discussion/4128/quick-q-how-close-is-too-close-why-when-do-3d-objects-disappear
  perspective(PI/3.0, (float) width/height, 1, 1000000);
}//func
//
 
            
              1 Like 
            
            
           
          
            
            
              new version with a for-loop for the radius at each angle
I tried to close the plane nicely using TRIANGLE_STRIP but to no avail. Needs further work.
Cf. https://github.com/Kango/3DSketches/tree/master/Moebius4 
see https://en.wikipedia.org/wiki/Helicoid 
import peasy.*;
ArrayList<PVector> points = new ArrayList<PVector>();
float p;
PeasyCam cam;
int i;
void setup() {
  size(800, 800, P3D);
  background(20);
  colorMode(HSB);
  avoidClipping(); 
  cam = new PeasyCam(this, 5000);
}
void draw() {
  background(20);
  lights(); 
  for (i=20; i<100; i+=10) {
    points.add(new PVector(x(p), y(p), z(p)));
  }
  p+=0.0521;
  showData();
  cam.beginHUD();
  fill(255);
  text("Helicoid. Use peasycam.", 19, 19); 
  cam.endHUD();
}
//---------------------------------------------------------------------------
void showData() {
  // show data in points
  noFill();
  stroke(200, 180, 200);
  strokeWeight(5);
  translate(width / 2, height / 2);
  beginShape(TRIANGLE_STRIP);
  for (PVector v : points) {
    vertex(v.x, v.y, v.z);
  }
  endShape();
}
//---------------------------------------------------------------------------
// HELICOID
float x(float p) {
  return i * cos(p);
}
float y(float p) {
  return (i+100) * -sin(p);
}
float z(float p) {
  // return 20 * pow(tan(PI/2 + p), -1); // return p?
  //return tan(PI/2 + p); // return p?
  return 10*p;
}
// --------------------------------------------------------------------------
void avoidClipping() {
  // avoid clipping :
  // https : //
  // forum.processing.org/two/discussion/4128/quick-q-how-close-is-too-close-why-when-do-3d-objects-disappear
  perspective(PI/3.0, (float) width/height, 1, 1000000);
}//func
//
 
            
              1 Like 
            
            
           
          
            
              
                rubbs  
              
                  
                    March 22, 2020, 10:37pm
                   
                  4 
               
             
            
              ahh thank you! Wasn’t aware of the you could avoid clipping so cheers dude!
             
            
              1 Like 
            
            
           
          
            
            
              p is in radians. I misspelled that. I corrected it now.
I also put lights() in.
It looked at this, but I couldn’t make it work, your z():
return 20 * pow(tan(PI/2 + p), -1); // return p?
 
            
              
            
           
          
            
              
                glv  
              
                  
                    March 22, 2020, 10:47pm
                   
                  6 
               
             
            
              Hello,
There are some references to clipping on the Processing site:
:)
             
            
              3 Likes 
            
            
           
          
            
              
                rubbs  
              
                  
                    March 22, 2020, 10:51pm
                   
                  7 
               
             
            
              I got my parametric equations from this site:https://www.encyclopediaofmath.org/index.php/Helicoid 
However most other sources suggest z = c * theta so I’m not sure what that expression particularly does.
             
            
              2 Likes