//点的对象:
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,arrow1,arrow2) {
this.id = id;
this.from = from;
this.to = to;
if (strokeweight==undefined)
{
strokeweight = "1";
}
if (strokecolor==undefined)
{
strokecolor = "#00F";
}
if (dashstyle==undefined)
{
dashstyle = "solid";
}
if (arrow1==undefined)
{
arrow1 = "";
}
if (arrow2==undefined)
{
arrow2 = "block";
}
this.strokeweight = strokeweight;
this.strokecolor = strokecolor;
this.dashstyle = dashstyle;
this.startarrow = arrow1;
this.endarrow = arrow2;
this.length = getlinelen;
this.draw = drawline;
}
//取得线段的长度:
function getlinelen()
{
if ((this.from.x == this.to.x) && (this.from.y == this.to.y))
{
return 0;
} else
{
return Math.sqrt((this.from.x-this.to.x)*(this.from.x-this.to.x)+(this.from.y-this.to.y)*(this.from.y-this.to.y));
}
}
//画线:
// arrow=None,Block,Classic,Diamond,Oval,Open
// dashstyle= Solid,ShortDash,ShortDot,ShortDashDot,ShortDashDotDot,Dot,
// Dash,LongDash,DashDot,LongDashDot,LongDashDotDot
function drawline()
{
// str = str +" left:0px;top:0px;Z-INDEX:0";
var str = "";
str = str +"
str = str +" from='"+this.from.x+","+this.from.y+"'";
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);
return new point(x2,y2);
}
// 点平移:
function shiftp(p1,p2) {
return new point((p1.x + p2.x),(p1.y + p2.y));
}
// 画椭园:
function ellipsering(id,x0,y0,ra,rb,filled,fillcolor,stroked,strokecolor,strokeweight,rotation,txt)
{
var left,top,width,height
var str = "";
left = x0-ra;
top = y0-rb
width = 2*ra;
height = 2*rb;
str = str +" "+txt+"
str = str +" left:"+left+";top:"+top+";width:"+width+";height:"+height+"; ";
str = str +" rotation:"+rotation+"fd;z-index:1' ";
str = str +" οnmοusedοwn='down1(this);'";
str = str +" filled='"+filled+"' fillcolor="+fillcolor+" stroked='"+stroked+"' strokecolor="+strokecolor+" ";
str = str +" strokeweight="+strokeweight+"> ";
str = str +"
str = str +"
str = str +"
document.write(str);
}
//线段a-b上距离a端R的点的坐标:
function DisPnt(a,b,R)
{
var R0 = new point(R,0);
var ab = new point(b.x-a.x,b.y-a.y);
var a0 = new RotPnt(R0,ab.alfaR);
var a1 = new shiftp(a0,a);
return a1;
}
//画两园间的连接线(不是通过园心,而是通过园周)
//一个园在a点,另一个园在b点,两园的半径都为R
function Line2Cir(id,a,b,R,clr)
{
a1 = new DisPnt(a,b,R);
b1 = new DisPnt(b,a,R);
var lab1 = new line1(id,a1,b1,1,clr);
lab1.draw();
return;
}
//
var originx0 = screen.availWidth/2 - 20; //取屏幕宽度中值-20
var originy0 = screen.availHeight/2 - 100; //取屏幕高度中值-200
var originz0 = 0; //Z值
var OrigPnt0 = new point(originx0,originy0);
1,通过JAVASCRIPT实现饼与线移动。以屏幕中心为坐标原点(按F11让屏幕最大化)。(谷来成,2007.7.19)
2,线为有向线条