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();
}