//点的对象:
function point(x0,y0)
{
this.x = x0;
this.y = y0;
//向量的模
this.r = Math.sqrt(this.x*this.x+this.y*this.y);
var alfa = Math.acos(this.x/this.r);
if (this.y >= 0) {
alfa = alfa;
} else {
alfa = 2*Math.PI-alfa;
}
//向量的倾角(弧度)
this.alfaR = alfa;
//向量的倾角(角度)
this.alfaD = alfa*180/Math.PI;
}
function line1(id,from,to,strokeweight,strokecolor,dashstyle) {
this.from = from;
this.to = to;
if (strokeweight==undefined)
{
strokeweight = "1";
}
if (strokecolor==undefined)
{
strokecolor = "#00F";
}
if (dashstyle==undefined)
{
dashstyle = "solid";
}
this.strokeweight = strokeweight;
this.strokecolor = strokecolor;
this.dashstyle = dashstyle;
this.draw = drawline;
}
function drawline()
{
// str = str +" left:0px;top:0px;Z-INDEX:0";
var str = "";
str = str +"
str = str +" to='"+ this.to.x +","+ this.to.y +"' ";
str = str +" strokeweight='"+this.strokeweight+"px;' strokecolor='"+this.strokecolor+"'> ";
str = str +"
str = str +"";
document.write(str);
}
function getcontinuecolor(bgnclr)
{
// bgnclr: #FFF
var vclr = parseInt(bgnclr.substr(1,3),16);
vclr += 4;
var s = "000"+vclr.toString(16);
var l = s.length-3;
window.status=bgnclr.substr(1,3)+"saaaaaaato='"+vclr+";"+s.substr(l,3);
return "#"+s.substr(l,3);
}
function getrandomcolor()
{
var r1,r2,r3;
r1=Math.round((Math.random()*256));
r2=Math.round((Math.random()*256));
r3=Math.round((Math.random()*256));
// document.write("随机数:"+r1+"."+r2+"."+r3);
return "#"+ prefixzero(r1.toString(16))+
prefixzero(r2.toString(16))+
prefixzero(r3.toString(16));
}
function prefixzero(strg)
{
var slen=strg.length;
strg = (slen==1)?("0"+strg):(strg);
return strg;
}
function angle(Deg)
{
this.Degree = Deg*180 / Math.PI;
this.Radian = Deg*Math.PI / 180;
}
//点x1,y1 经转af(角度)后的新点坐标x2,y2:
function RotPnt(p1,alfa1)
{
var alfa1 = new angle(alfa1).Radian;
x2 = p1.x * Math.cos(alfa1) - p1.y * Math.sin(alfa1);
y2 = p1.x * Math.sin(alfa1) + p1.y * Math.cos(alfa1);
this.p1 = p1;
this.p2 = new point(x2,y2);
}
// 点平移:
function shiftp(p1,p2) {
this.p = new point((p1.x + p2.x),(p1.y + p2.y));
}
function Donut(InCenter,InRa,InRb,OutCenter,OutRa,OutRb,alfa)
{
this.InCenter = InCenter;
this.OutCenter = OutCenter;
this.InRa = InRa;
this.InRb = InRb;
this.OutRa = OutRa;
this.OutRb = OutRb;
this.alfa = alfa; //内分角
}
function DrawDonut()
{
var p11 = new point();
var p12 = new point();
var p21 = new point();
var p22 = new point();
var l0 = new line1();
var ai, l0clr="#5F3";
for(var i=0; i <= 360; i=i+this.alfa) {
ai = new angle(i).Radian;
p11.x = this.InRa * Math.cos(ai);
p11.y = this.InRb * Math.sin(ai);
p21.x = this.OutRa * Math.cos(ai);
p21.y = this.OutRb * Math.sin(ai);
p12 = new RotPnt(p11,this.sigma1).p2;
p22 = new RotPnt(p21,this.sigma2).p2;
l0.from = new shiftp(p12,this.InCenter).p;
l0.to = new shiftp(p22,this.OutCenter).p;
// l0.strokecolor = l0clr;
// l0clr = getcontinuecolor(l0clr);
// l0.strokecolor = l0clr ;
l0.strokecolor = getrandomcolor();
l0.id = "GGG"+i;
l0.draw();
}
//window.status="dsssss: .to='"+this.OutRa+","+this.OutRb+"'";
}
/* 让圆环大小反复变化: */
function Wave() {
var p11 = new point();
var p12 = new point();
var p21 = new point();
var p22 = new point();
var p1 = new point();
var p2 = new point();
var ai;
this.bita1 += this.bita0;
for(var i=0; i <= 360; i=i+this.alfa) {
ai = new angle(i+this.bita1).Radian;
p11.x = this.InRa * Math.cos(ai);
p11.y = this.InRb * Math.sin(ai);
p21.x = this.OutRa * Math.cos(ai);
p21.y = this.OutRb * Math.sin(ai);
p12 = new RotPnt(p11,this.sigma1).p2;
p22 = new RotPnt(p21,this.sigma2).p2;
p1 = new shiftp(p12,this.InCenter).p;
p2 = new shiftp(p22,this.OutCenter).p;
obj = "GGG"+i;
// eval(obj+".from='"+p2.x+","+p2.y+"'");
eval(obj+".to='"+ p2.x +","+ p2.y +"'");
}
//window.status=ai+"dsssss: .to='"+p2.x+","+p2.y+"'" +this.OutRa+","+this.OutRb+"'";
if(pause1==1) setTimeout("Donut0.Wv()",this.interval);
this.bita1 = (this.bita1>=360)?(this.bita0):(this.bita1);
}
var originx0 = screen.availWidth/2 - 20; //取屏幕宽度中值-20
var originy0 = screen.availHeight/2 - 100; //取屏幕高度中值-200
var originz0 = 0; //Z值
var OrigPnt0 = new point(originx0,originy0);
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/147143/viewspace-927122/ ,如需转载,请注明出处,否则将追究法律责任。