import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class FiveStars_4 extends JFrame
{
gFiveStars_4 gfs_4 = new gFiveStars_4();
public FiveStars_4()
{
this.setSize(800, 800);
setLocation(100, 100);
this.add(gfs_4);
this.setVisible(true);
}
public static void main(String[] args)
{
new FiveStars_4();
}
}
class gFiveStars_4 extends JPanel
{
public gFiveStars_4()
{
this.setSize(800, 800);
}
public void gFiveStars_4(Graphics g, int x0, int y0, int r, String f)
{
double ch=72*Math.PI/180;//圆心角的弧度数
int x[]=new int[5];
int y[]=new int[5];
for (int i=0;i<5;i++){
x[i]=(int)(x0+r*Math.cos(3*Math.PI/2+i*ch));
y[i]=(int)(y0+r*Math.sin(3*Math.PI/2+i*ch));
}
int bx=(int)(x0);//(bx,by)为(x[3],y[3])(x[4],y[4])之间凹点
int by=(int)(y0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4));
int[] xa={x[0],x[2],bx,x[3]};//定义一个多边形 凹四边形
int[] ya={y[0],y[2],by,y[3]};
int[] xb={x[1],bx,x[4]};//三角形
int[] yb={y[1],by,y[4]};
if(f.equals("fill"))
g.setColor(Color.yellow);
g.fillPolygon(xa,ya,4);
g.fillPolygon(xb,yb,3);
if(f.equals("draw"))
g.setColor(Color.red);
g.drawLine(x[0],y[0],x[2],y[2]);
g.drawLine(x[0],y[0],x[3],y[3]);
g.drawLine(x[1],y[1],x[3],y[3]);
g.drawLine(x[1],y[1],x[4],y[4]);
g.drawLine(x[2],y[2],x[4],y[4]);
}
public void gFiveStars_4(Graphics g, int x0, int y0, int r, int degree, String f)//正五角星
{
double ch=72*Math.PI/180;//
double de=Math.abs(degree)*Math.PI/180;
//五角星是中心对称图形,角度的实际取值范围在“0——72”之间;
int x[]=new int[5];
int y[]=new int[5];
for (int i=0;i<5;i++){
x[i]=(int)(x0+r*Math.cos(3*Math.PI/2+i*ch+de));
y[i]=(int)(y0+r*Math.sin(3*Math.PI/2+i*ch+de));
}
int bx=(int)(x0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.cos(Math.PI/2+de));
int by=(int)(y0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.sin(Math.PI/2+de));
int[] xa={x[0],x[2],bx,x[3]};//定义一个多边形 凹四边形
int[] ya={y[0],y[2],by,y[3]};
int[] xb={x[1],bx,x[4]};//三角形
int[] yb={y[1],by,y[4]};
if(f.equals("fill"))
{
g.setColor(Color.green);
g.fillPolygon(xa,ya,4);
g.fillPolygon(xb,yb,3);
}
if(f.equals("draw"))
{
g.setColor(Color.blue);
g.drawLine(x[0],y[0],x[2],y[2]);
g.drawLine(x[0],y[0],x[3],y[3]);
g.drawLine(x[1],y[1],x[3],y[3]);
g.drawLine(x[1],y[1],x[4],y[4]);
g.drawLine(x[2],y[2],x[4],y[4]);
}
}
public void gFiveStars_4(Graphics g, int x0, int y0, int r, int degree, String f, String s, int x1, int y1)
{
double ch=72*Math.PI/180;
double de=Math.abs(degree)*Math.PI/180;
//五角星是中心对称图形,角度的实际取值范围在“0——72”之间;
int x[]=new int[5];
int y[]=new int[5];
for (int i=0;i<5;i++){
x[i]=(int)(x0+r*Math.cos(3*Math.PI/2+i*ch+de));
y[i]=(int)(y0+r*Math.sin(3*Math.PI/2+i*ch+de));
}
int bx=(int)(x0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.cos(Math.PI/2+de));
int by=(int)(y0+r*Math.sin(ch/4)/Math.sin(Math.PI-3*ch/4)*Math.sin(Math.PI/2+de));
int[] xa={x[0],x[2],bx,x[3]};//定义一个多边形 凹四边形
int[] ya={y[0],y[2],by,y[3]};
int[] xb={x[1],bx,x[4]};//三角形
int[] yb={y[1],by,y[4]};
if(f.equals("fill"))
{
g.setColor(Color.red);
g.fillPolygon(xa,ya,4);
g.fillPolygon(xb,yb,3);
}
if(f.equals("draw"))
{
g.setColor(Color.yellow);
g.drawLine(x[0],y[0],x[2],y[2]);
g.drawLine(x[0],y[0],x[3],y[3]);
g.drawLine(x[1],y[1],x[3],y[3]);
g.drawLine(x[1],y[1],x[4],y[4]);
g.drawLine(x[2],y[2],x[4],y[4]);
}
g.drawString(s, x1, y1);
}
public void paint(Graphics g)
{
gFiveStars_4(g, 200, 500, 100, "fill");
gFiveStars_4(g, 200, 500, 100, "draw");
gFiveStars_4(g, 200, 200, 100, 40, "fill");
gFiveStars_4(g, 200, 200, 100,40, "draw");
gFiveStars_4(g, 600, 600, 100, 60, "fill", "FIVESTAR",500,500);
gFiveStars_4(g, 600, 600, 100, 60, "draw", "FIVESTAR",280,280);
}
}