// dipende da gngraph.txt che deve essere aperta // qui faro' un check che gngraph sia aperta function dist(A,B){ return Math.sqrt(Math.pow(A.x-B.x,2)+Math.pow(A.y-B.y,2)) } function Angle(B,A,C,nome){ this.A=A; this.B=B; this.C=C; this.nome=nome; // definisco angoli rispetto all'asse x dei due lati dell'angolo var dy=-(B.y-A.y); var dx=B.x-A.x;var alpha1= Math.atan2(dy,dx); var dy=A.y-C.y; var dx=C.x-A.x;var alpha2= Math.atan2(dy,dx); if(Math.max(alpha1,alpha2)-Math.min(alpha1,alpha2)>Math.PI){ if(alpha1<0){alpha1+=2*Math.PI}; if(alpha2<0){alpha2+=2*Math.PI}; } this.alpha1=alpha1; this.alpha2=alpha2; this.mediana=(alpha1+alpha2)/2; //raggio a 1/4 della distanza minima this.r=Math.min(dist(A,B),dist(A,C))/2; this.draw=function(){ drawArc(this.A.x-this.r/2,this.A.y-this.r/2,this.r,this.r,Math.min(this.alpha1,this.alpha2),Math.max(this.alpha1,this.alpha2)); drawString(this.nome,A.x+Math.cos(this.mediana)*this.r/1.8,A.y-Math.sin(this.mediana)*this.r/1.8); } } function PointRelative(x,y,r){ // r is a rectangle left-bottom is the origin this.x=r.x+x; this.y=(r.y+r.h)-y; this.r=r; this.draw=function(){setPoint(this.x,this.y)} this.name=function(nn){drawString(nn,this.x,this.y-10)} } function Rectangle(x0,y0,w,h){ this.x=x0; this.y=x0; this.w=w; this.h=h; this.draw= function(){ drawRect(this.x,this.y,this.w,this.h); } } function Triangle(A,B,C,aa,bb,cc){ this.A=A; this.B=B; this.C=C; this.draw= function(){ drawLine(this.A.x,this.A.y,this.B.x,this.B.y); drawLine(this.B.x,this.B.y,this.C.x,this.C.y); drawLine(this.C.x,this.C.y,this.A.x,this.A.y); drawString(aa,this.A.x,this.A.y); drawString(bb,this.B.x,this.B.y); drawString(cc,this.C.x,this.C.y); } } function Retta(A,B){ this.m=-(B.y-A.y)/(B.x-A.x); this.n=(A.y); this.A=A; this.B=B; this.draw=function(){ drawLine(this.A.x,this.A.y,this.B.x,this.B.y); setColor(red); } this.y=function(x){return this.n-this.m*(this.A.x+x)} }