----index.jsp
<%@ page contentType="text/html; charset=gb2312" language="java" import="xj.hwl.mycos" errorPage="" %>
<HTML xmlns:v='urn:schemas-microsoft-com:vml' xmlns:o='urn:schemas-microsoft-com:office:office'>
<HEAD>
<META http-equiv='Content-Type' content='text/html;charset=gb2312'>
<TITLE>吾之画</TITLE>
<STYLE>
v/:*{behavior:url(#default#VML);}
o/:*{behavior:url(#default#VML);}
</STYLE>
</HEAD>
<BODY bgcolor='#EEEEEE' style='scrollbar-base-color:purple;scrollbar-shadow-color:white;scrollbar-highlight-color:white;scrollbar-arrow-color:white;'>
<%
System.out.println("----------");
mycos mc=new mycos();
String pains=mc.pain(100,300,150,mc.myangdegs,mc.values,mc.myangdegs_name);
out.println(pains);
%>
</BODY>
</HTML>
------java
package xj.hwl;
import java.lang.Math;
public class mycos {
/**
* @param args
*/
public static final String OVAL_FILLCOLOR = "#EEAAAA";
public static final String OVAL_FILLCOLOR_0_90 = "#FF0000";
public static final String OVAL_FILLCOLOR_90_180 = "#00FF00";
public static final String OVAL_FILLCOLOR_180_270 = "#0000FF";
public static final String OVAL_FILLCOLOR_270_360 = "#00FFFF";
public static final double[] myangdegs = { 0, 30, 60, 90, 105, 120, 135,
150, 165, 180, 198, 216, 234, 252, 270, 292.5, 315, 337.5, 360 };
public static final String[] myangdegs_name = { "正", "右", "右右", "右右右", "右右右", "右右右", "右右右右右",
"右右右右", "右右右", "正", "左左左左", "左左左左左左", "左左左左左", "左左左", "左左左", "左左左左左左左", "左左左左左左左", "左左", "左左" };
public static final int[] values = { 10, 5, 3, 10, 2, 4, 2, 2, 3,10, 1, 5, 3,
4, 10, 8, 10, 10, 10};
public static void main(String[] args) {
// TODO Auto-generated method stub
double angdeg = 240, r = 100, x, y, angrad = Math.toRadians(angdeg);
System.out.println(Math.sin(angrad));
x = Math.sin(angrad) * r;
y = Math.cos(Math.PI - angrad) * r;
System.out.println("(" + x + "," + y + ")");
}
public String pain(int top,int left,int r,double[] angdegs,int[] value,String[] myangdeg_names){
String pains="";
int width=2*r,height=2*r,rxleft=left+r,rytop=top+r;
double x,y,angrad,zx,zy,vx,vy;
String xs,ys,polylines="";
pains="<?xml:namespace prefix=v />";
// 先画圆
pains=pains+"<v:oval style='z-index:1;left:"+left+"px;width:"+width+"px;position:absolute;top:"+top+"px;height:"+height+"px' coordsize='21600,21600' fillcolor='"+OVAL_FILLCOLOR+"'></v:oval>";
pains=pains+"/n";
for(int i=0;i<angdegs.length;i++){
angrad=Math.toRadians(angdegs[i]);
x=Math.sin(angrad)*r;
y=Math.cos(Math.PI-angrad)*r;
// 画线
xs=String.valueOf(x);
ys=String.valueOf(y);
pains=pains+"<v:line style='z-index:1003;left:"+rxleft+"px;position:absolute;top:"+rytop+"px' from='0,0' to='"+xs+","+ys+"' strokecolor='black' strokeweight='1pt'></v:line>";
pains=pains+"/n";
//写字
zx=x+rxleft;
zy=y+rytop;
if (angdegs[i]==0){
pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+zx+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+(zy-10)+"px'>"+myangdeg_names[i]+"</SPAN>";
}else if(angdegs[i]>0&&angdegs[i]<180){
pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+zx+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+zy+"px'>"+myangdeg_names[i]+"</SPAN>";
}else if (angdegs[i]==180){
pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+zx+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+zy+"px'>"+myangdeg_names[i]+"</SPAN>";
}else if(angdegs[i]>180&&angdegs[i]<360){
pains=pains+"<SPAN style='FONT-SIZE:12px;Z-INDEX:1002;LEFT:"+(zx-myangdeg_names[i].length()*12)+"px;COLOR:#000000;FONT-FAMILY:宋体;POSITION:absolute;TOP:"+zy+"px'>"+myangdeg_names[i]+"</SPAN>";
}
pains=pains+"/n";
// 画里面图形
vx=Math.sin(angrad)*value[i]*r/10;
vy=Math.cos(Math.PI-angrad)*value[i]*r/10;
if(angdegs[i]==0){
polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
}else if(angdegs[i]==90){
polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_0_90+"' strokeweight='1pt'></v:Polyline>";
// System.out.println(polylines);
// 画一个先
pains=pains+polylines;
pains=pains+"/n";
// 开始下一个
polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
}else if(angdegs[i]==180){
polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_90_180+"' strokeweight='1pt'></v:Polyline>";
// System.out.println(polylines);
// 画一个先
pains=pains+polylines;
pains=pains+"/n";
// 开始下一个
polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
}else if(angdegs[i]==270){
polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_180_270+"' strokeweight='1pt'></v:Polyline>";
// System.out.println(polylines);
// 画一个先
pains=pains+polylines;
pains=pains+"/n";
// 开始下一个
polylines="<v:Polyline style='Z-INDEX:1001;LEFT:"+rxleft+"px;POSITION:absolute;TOP:"+rytop+"px' points='0,0,"+vx+","+vy;
}else if(angdegs[i]==360){
polylines=polylines+","+vx+","+vy+",0,0' fillcolor='"+OVAL_FILLCOLOR_270_360+"' strokeweight='1pt'></v:Polyline>";
// System.out.println(polylines);
// 画一个先
pains=pains+polylines;
}else{
polylines=polylines+","+vx+","+vy;
}
}
return pains;
}
}
-