<body onload="InitVRML();">
<script>
//模拟数据
var RecordSetArray=new Array();
//模拟记录条数
var iRecordCount=20;
for(iIndex=0;iIndex<iRecordCount;iIndex++)
{
var UnitArray=new Array();
UnitArray[0]=iIndex;
UnitArray[1]=Math.round(Math.random()*1000);
RecordSetArray[iIndex]=UnitArray;
}
//模拟数据Y轴最大值[范围]
var iRecordMaxY=1000;//模拟数据Y轴最大值[范围]
//坐标系统
var iScreenWidth=400;//真实宽度PX
var iScreenHeight=400;//真实高度PX
var iCoordSizeX=4000;//分隔宽度
var iCoordSizeY=4000;//分隔高度
var iCoordSizeStep=200;//坐标轴与边距
var iRectSize=100;//柱状图柱体宽度
var vGroup=null;//VRML区域
function Bar(iRecordCount)
{
VRMLID.innerHTML="";
InitVRML();
CoordSize();
CoordSizeLine();
var iStep=Math.round(iCoordSizeX/iRecordCount);
for(iIndex=1;iIndex<iRecordCount;iIndex++)
{
var iRnd=Math.round(Math.random()*(iCoordSizeY-iCoordSizeStep*2));
var vRect=document.createElement("v:rect");
vRect.style.left=iStep*iIndex;
vRect.style.top=(iCoordSizeY-iCoordSizeStep)-Math.round(RecordSetArray[iIndex][1]*(iCoordSizeY-iCoordSizeStep)/iRecordMaxY);
vRect.style.width=iRectSize;
vRect.style.height=Math.round(RecordSetArray[iIndex][1]*(iCoordSizeY-iCoordSizeStep)/iRecordMaxY);
vRect.fillColor="#EEEEEE";
vRect.title="模拟数据第"+RecordSetArray[iIndex][0]+"条的Y轴图示";
vGroup.appendChild(vRect);
}
}
function DrawLinesX(iMaxX,Object)
{
var iStep=Math.round(iCoordSizeX/iMaxX);
for(var iIndex=1;iIndex<=iMaxX;iIndex++)
{
var vLine=document.createElement("v:line");
vLine.from=iStep*iIndex+","+(iCoordSizeY-iCoordSizeStep);
vLine.to=iStep*iIndex+","+(iCoordSizeY-Math.round(iCoordSizeStep/2));
var vStroke=document.createElement("v:stroke");
vStroke.endArrow="Diamond";
vStroke.dashStyle="dot";
vLine.appendChild(vStroke);
Object.appendChild(vLine);
}
}
function DrawLinesY(iMaxY,Object)
{
var iStep=Math.round(iCoordSizeY/iMaxY);
for(var iIndex=0;iIndex<iMaxY;iIndex++)
{
var vLine=document.createElement("v:line");
vLine.from=iCoordSizeStep+","+iStep*iIndex;
vLine.to=Math.round(iCoordSizeStep/2)+","+iStep*iIndex;
var vStroke=document.createElement("v:stroke");
vStroke.endArrow="Diamond";
vStroke.dashStyle="dot";
vLine.appendChild(vStroke);
Object.appendChild(vLine);
}
}
function InitVRML()
{
vGroup=document.createElement("v:group");
vGroup.style.width=iScreenWidth+"px";
vGroup.style.height=iScreenHeight+"px";
vGroup.coordsize=iCoordSizeX+","+iCoordSizeY;
var vRect=document.createElement("v:rect");
vRect.style.width=iCoordSizeX+"px";
vRect.style.height=iCoordSizeY+"px";
vRect.fillColor="#FFFFFF";
vRect.strokeColor="#000000";
var vShadow=document.createElement("v:shadow");
vShadow.on="true";
vShadow.type="single";
vShadow.color="silver";
vShadow.offset="5pt,5pt";
vRect.appendChild(vShadow);
vGroup.appendChild(vRect);
VRMLID.appendChild(vGroup);
}
function CoordSize()
{
var vLineX=document.createElement("v:line");
vLineX.from=iCoordSizeStep+","+iCoordSizeStep;
vLineX.to=iCoordSizeStep+","+(iCoordSizeY-iCoordSizeStep);
var vStrokeX=document.createElement("v:stroke");
vStrokeX.startArrow="classic";
vStrokeX.endArrow="oval";
vStrokeX.dashStyle="single";
vLineX.appendChild(vStrokeX);
vGroup.appendChild(vLineX);
temp1=0
for i=1 to total_no
for j=1 to line_no
if temp1<total(i,j) then temp1=total(i,j)
next
next
temp1=int(temp1)
if temp1>9 then
temp2=mid(cstr(temp1),2,1)
if temp2>4 then
temp3=(int(temp1/(10^(len(cstr(temp1))-1)))+1)*10^(len(cstr(temp1))-1)
else
temp3=(int(temp1/(10^(len(cstr(temp1))-1)))+0.5)*10^(len(cstr(temp1))-1)
end if
else
if temp1>4 then temp3=10 else temp3=5
end if
temp4=temp3
response.write "<v:rect id='_x0000_s1027' alt='' style='position:absolute;left:"&table_x+left_width&"px;top:"&table_y&"px;width:"&all_width&"px;height:"&all_height&"px;z-index:-1' fillcolor='#9cf' stroked='f'><v:fill rotate='t' angle='-45' focus='100%' type='gradient'/></v:rect>"
for i=0 to all_height-1 step all_height/5
response.write "<v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"&table_x+left_width+length&"px,"&table_y+all_height-length-i&"px' to='"&table_x+all_width+left_width&"px,"&table_y+all_height-length-i&"px' strokecolor='"&line_color&"'/>"
response.write "<v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"&table_x+(left_width-15)&"px,"&table_y+i&"px' to='"&table_x+left_width&"px,"&table_y+i&"px'/>"
response.write ""
response.write "<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:"&table_x&"px;top:"&table_y+i&"px;width:"&left_width&"px;height:18px;z-index:1'>"
response.write "<v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='right'>"&temp4&"</td></tr></table></v:textbox></v:shape>"
temp4=temp4-temp3/5
next
response.write "<v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"&table_x+left_width&"px,"&table_y+all_height&"px' to='"&table_x+all_width+left_width&"px,"&table_y+all_height&"px'/>"
response.write "<v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"&table_x+left_width&"px,"&table_y&"px' to='"&table_x+left_width&"px,"&table_y+all_height&"px'/>"
dim line_code
redim line_code(line_no,5)
for i=1 to line_no
line_temp=split(total(0,i),",")
line_code(i,1)=line_temp(0)
line_code(i,2)=line_temp(1)
line_code(i,3)=line_temp(2)
line_code(i,4)=line_temp(3)
line_code(i,5)=line_temp(4)
next
for j=1 to line_no
for i=1 to total_no-1
x1=table_x+left_width+all_width*(i-1)/total_no
y1=table_y+(temp3-total(i,j))*(all_height/temp3)
x2=table_x+left_width+all_width*i/total_no
y2=table_y+(temp3-total(i+1,j))*(all_height/temp3)
response.write "<v:line id=""_x0000_s1025"" alt="""" style='position:absolute;left:0;text-align:left;top:0;z-index:1' from="""&x1&"px,"&y1&"px"" to="""&x2&"px,"&y2&"px"" coordsize=""21600,21600"" strokecolor="""&line_code(j,1)&""" strokeweight="""&line_code(j,2)&""">"
select case line_code(j,3)
case 1
case 2
response.write "<v:stroke dashstyle='1 1'/>"
case 3
response.write "<v:stroke dashstyle='dash'/>"
case 4
response.write "<v:stroke dashstyle='dashDot'/>"
case 5
response.write "<v:stroke dashstyle='longDash'/>"
case 6
response.write "<v:stroke dashstyle='longDashDot'/>"
case 7
response.write "<v:stroke dashstyle='longDashDotDot'/>"
case else
end select
response.write "</v:line>"&CHR(13)
select case line_code(j,4)
case 1
case 2
response.write "<v:rect id=""_x0000_s1027"" style='position:absolute;left:"&x1-2&"px;top:"&y1-2&"px;width:4px;height:4px; z-index:2' fillcolor="""&line_code(j,1)&""" strokecolor="""&line_code(j,1)&"""/>"&CHR(13)
case 3
response.write "<v:oval id=""_x0000_s1026"" style='position:absolute;left:"&x1-2&"px;top:"&y1-2&"px;width:4px;height:4px;z-index:1' fillcolor="""&line_code(j,1)&""" strokecolor="""&line_code(j,1)&"""/>"&CHR(13)
end select
next
select case line_code(j,4)
case 1
case 2
response.write "<v:rect id=""_x0000_s1027"" style='position:absolute;left:"&x2-2&"px;top:"&y2-2&"px;width:4px;height:4px; z-index:2' fillcolor="""&line_code(j,1)&""" strokecolor="""&line_code(j,1)&"""/>"&CHR(13)
case 3
response.write "<v:oval id=""_x0000_s1026"" style='position:absolute;left:"&x2-2&"px;top:"&y2-2&"px;width:4px;height:4px;z-index:1' fillcolor="""&line_code(j,1)&""" strokecolor="""&line_code(j,1)&"""/>"&CHR(13)
end select
next
for i=1 to total_no
response.write "<v:line id='_x0000_s1027' alt='' style='position:absolute;left:0;text-align:left;top:0;flip:y;z-index:-1' from='"&table_x+left_width+all_width*(i-1)/total_no&"px,"&table_y+all_height&"px' to='"&table_x+left_width+all_width*(i-1)/total_no&"px,"&table_y+all_height+15&"px'/>"
response.write ""
response.write "<v:shape id='_x0000_s1025' type='#_x0000_t202' alt='' style='position:absolute;left:"&table_x+left_width+all_width*(i-1)/total_no&"px;top:"&table_y+all_height&"px;width:"&all_width/total_no&"px;height:18px;z-index:1'>"
response.write "<v:textbox inset='0px,0px,0px,0px'><table cellspacing='3' cellpadding='0' width='100%' height='100%'><tr><td align='left'>"&total(i,0)&"</td></tr></table></v:textbox></v:shape>"
next