fractalkitty looking for math? fractalkitty.com

100 days of code

pappus

#trig#interactive#math#geometry

linePoints

let y1,y2,y3,y4,t;
function setup(){
  createCanvas(600,600);
  stroke(255);
  background(25);
  translate(width/2-10,height/2-10);
  linePoints()
}
function draw(){
  t=frameCount/200;
  background(25,25,25,10);
  translate(width/2,height/2);
  linePoints();
  
}
function linePoints(){
  stroke(255)
  y1=height/2*sin(t)*sin(t);
  y2=height/2*cos(t)*cos(t);
  line(-width/2,y1,width/2,y2);
  m1=(y2-y1)/(width);
  fill(255);
  px1=-width/2+width/3*sin(t)*sin(t)+10*cos(t)
  px2=-width/2+width/3+width/3*cos(t/2)*cos(t/2)+10
  px3=width/2-width/3*sin(t)*sin(t)-5
  py1=m1*(px1-width/2)+y2;
  py2=m1*(px2-width/2)+y2;
  py3=m1*(px3-width/2)+y2;
  circle(px1,py1,9);
  circle(px2,py2,9);
  circle(px3,py3,9);
         
  y3=-height/2*sin(t)*sin(t)-50;
  y4=-height/2*cos(t)*cos(t)-50;
  line(-width/2,y3,width/2,y4);
  m2=(y4-y3)/(width)
  px4=-width/2+width/3*sin(t)*sin(t)
  px5=-width/2+width/3+width/3*cos(t)*cos(t)+10
  px6=width/2-width/3*sin(t)*sin(t)-5
  py4=m2*(px4-width/2)+y4;
  py5=m2*(px5-width/2)+y4;
  py6=m2*(px6-width/2)+y4;
  circle(px4,py4,9);
  circle(px5,py5,9);
  circle(px6,py6,9);
  
  stroke(0,200,255)
  line(px1,py1,px5,py5);//l1
  line(px2,py2,px4,py4)//l2
  ml1=(py1-py5)/(px1-px5);
  ml2=(py2-py4)/(px2-px4);
  intX1=(ml1*px1-py1-ml2*px2+py2)/(ml1-ml2)
  intY1=ml1*(intX1-px1)+py1;
  circle(intX1,intY1,10)
  
  
  stroke(255,150,0)
  line(px1,py1,px6,py6)
  line(px3,py3,px4,py4)
  ml3=(py1-py6)/(px1-px6);
  ml4=(py3-py4)/(px3-px4);
  intX2=(ml3*px1-py1-ml4*px3+py3)/(ml3-ml4)
  intY2=ml3*(intX2-px1)+py1;
  circle(intX2,intY2,10)
  
  stroke(200,205,100)
  line(px2,py2,px6,py6)
  line(px3,py3,px5,py5)
  ml5=(py2-py6)/(px2-px6);
  ml6=(py3-py5)/(px3-px5);
  intX3=(ml5*px2-py2-ml6*px5+py5)/(ml5-ml6)
  intY3=ml5*(intX3-px2)+py2;
  circle(intX3,intY3,10)
  
  mInt=(intY3-intY1)/(intX3-intX1);
  ploty1=mInt*(-width/2-intX1)+intY1;
  ploty2=mInt*(width/2-intX1)+intY1;
  stroke(255,100,200)
  line(-width/2,ploty1,width/2,ploty2);
}

function mousePressed(){
  noLoop();
}