📄 form1.cs
字号:
x=ax[nn+1];
y=ay[nn+1];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
x=bx[nn+1];
y=by[nn+1];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
x=bx[nn];
y=by[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
}
}
private void menuItem14_Click(object sender, System.EventArgs e)
{
Graphics g=pictureBox1.CreateGraphics();
Pen pen1=new Pen(Color.Blue);
g.Clear(this.BackColor);
int flag,r,h,n,nn,gx,gy,ed,eh,od,ps;
double pi,x,y,z,cx,cy,thx,thy,th;
double xw,yw,zw;
double[] ax=new double[9];
double[] ay=new double[9];
double[] az=new double[9];
double[] bx=new double[9];
double[] by=new double[9];
double[] bz=new double[9];
ed=1000;eh=100;od=0;
pi=3.14159;
cx=200;
cy=140;ps=1;
h=80;
thy=1.5;
nn=1;
r=100;
n=4;
thx=1.0;
flag=0;
for(th=0;th<=2*pi+0.1;th+=2*pi/n)
{
x=r*Math.Cos(th);
y=h;
z=r*Math.Sin(th);
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
if(ps==1)
{
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
}
ax[nn]=x;
ay[nn]=y;
az[nn]=z;
nn=nn+1;
}
x=0;y=h;z=0;
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
if(ps==1)
{
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
}
ax[0]=x;
ay[0]=y;
az[0]=z;
nn=1;
for(th=0;th<=2*pi+0.1;th+=2*pi/n)
{
x=r*Math.Cos(th);
y=-h;
z=r*Math.Sin(th);
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
if(ps==1)
{
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
}
bx[nn]=x;
by[nn]=y;
bz[nn]=z;
nn=nn+1;
}
x=0;y=-h;z=0;
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
if(ps==1)
{
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
}
for(nn=1;nn<=n;nn++)
{
flag=0;
x=ax[nn];
y=ay[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
x=ax[nn+1];
y=ay[nn+1];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
x=bx[nn+1];
y=by[nn+1];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
x=bx[nn];
y=by[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag!=1)
{
p1.X=gx;
p1.Y=gy;
flag=1;
}
else
{
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
}
}
private void menuItem15_Click(object sender, System.EventArgs e)
{
Graphics g=pictureBox1.CreateGraphics();
Pen pen1=new Pen(Color.Blue);
g.Clear(this.BackColor);
Pen pen2=new Pen(Color.Blue);
int flag,k1,k2,r1,r2,n,d,m,p;
int xs1,xs2,xs3,xs4,ys1,ys2,ys3,ys4,i,j,lastp;
double x,y,z,thx,th1,th3,yw,zw,xw,thy,th2;
double PI,ed,od,eh,zzw,ppw;
double[,] xs=new double[150,117];
double[,] ys=new double[150,117];
double[,] zs=new double[150,117];
double[,] zc=new double[150,117];
double x1,y1;
int[] zz=new int[1000];
int[] pp=new int[850];
r1=100;r2=40;k1=20;k2=16;
ed=1500;eh=0;od=0;
n=0;PI=3.14159;
th3=1;thx=0.9;
for(d=-1;d<=1;d+=2)
{
for(th1=0;th1<=2*PI+0.1;th1+=2*PI/k1)
{
n=n+1;
m=0;
for(th2=0;th2<=2*PI+0.1;th2+=2*PI/k2)
{
m=m+1;
x=r1+r2*Math.Cos(th2);
y=r2*Math.Sin(th2);
z=0;
thy=th1;
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
x=x+r1/2*d;
if(d==1)
{
yw=y;
zw=z;
y=yw*Math.Cos(PI/2)-zw*Math.Sin(PI/2);
z=yw*Math.Sin(PI/2)+zw*Math.Cos(PI/2);
}
thy=th3;
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
xs[n,m]=x;
ys[n,m]=y;
zs[n,m]=z;
}
flag=0;
}
flag=0;
}
p=0;
for(n=1;n<=k1*2+1;n+=1)
{
for(m=1;m<=k2;m+=1)
{
zc[n,m]=(int)((zs[n,m]+zs[n+1,m+1])/2);
zz[p]=(int)zc[n,m];
pp[p]=p;
p=p+1;
}
}
lastp=p-1;
for(i=2;i<=lastp;i+=1)
{
for(j=i-1;j>=0;j+=-1)
{
if(zz[j]>zz[j+1])
{
zzw=zz[j];
zz[j]=zz[j+1];
zz[j+1]=(int)zzw;
ppw=pp[j];
pp[j]=pp[j+1];
pp[j+1]=(int)ppw;
}
}
}
for(p=0;p<=lastp;p+=1)
{
n=(int)(pp[p]/k2)+1;
m=pp[p]%k2+1;
if(n!=(k1+1))
{
xs1=(int)(xs[n,m]); ys1=(int)(ys[n,m]);
xs2=(int)(xs[n+1,m]);ys2=(int)(ys[n+1,m]);
xs3=(int)(xs[n+1,m+1]);ys3=(int)(ys[n+1,m+1]);
xs4=(int)(xs[n,m+1]);ys4=(int)(ys[n,m+1]);
if(Math.Abs(ys1*(xs2-xs3)+ys2*(xs3-xs1)+ys3*(xs1-xs2))>80)
{
g.DrawLine(pen1,xs1+320,ys1+200,xs2+320,ys2+200);
g.DrawLine(pen1,xs2+320,ys2+200,xs3+320,ys3+200);
Brush sp=new SolidBrush(Color.Red);
Point[] p1=new Point[]
{
new Point(xs1+320,ys1+200),
new Point(xs2+320,ys2+200),
new Point(xs2+320,ys2+200),
new Point(xs3+320,ys3+200)
};
g.FillClosedCurve(sp,p1);
g.DrawLine(pen1,xs3+320,ys3+200,xs4+320,ys4+200);
g.DrawLine(pen1,xs4+320,ys4+200,xs1+320,ys1+200);
Point[] p2=new Point[]
{
new Point(xs3+320,ys3+200),
new Point(xs4+320,ys4+200),
new Point(xs4+320,ys4+200),
new Point(xs1+320,ys1+200)
};
g.FillClosedCurve(sp,p2);
x=(xs[n,m]+xs[n+1,m+1])/2;
y=(ys[n,m]+ys[n+1,m+1])/2;
x1=(int)(x+320);
y1=(int)(y+200);
}
g.DrawLine(pen2,xs1+320,ys1+200,xs2+320,ys2+200);
g.DrawLine(pen2,xs2+320,ys2+200,xs3+320,ys3+200);
g.DrawLine(pen2,xs3+320,ys3+200,xs4+320,ys4+200);
g.DrawLine(pen2,xs4+320,ys4+200,xs1+320,ys1+200);
}
}
}
private void menuItem16_Click(object sender, System.EventArgs e)
{
Graphics g=pictureBox1.CreateGraphics();
Pen pen1=new Pen(Color.Blue);
int[] mx=new int[100];
int[] my=new int[100];
int[] px=new int[100];
int[] py=new int[100];
int i=1,r=100;
double pi=3.14159;
double s=pi/9,q,p,x,y,z;
g.Clear(this.BackColor);
q=-pi/2;
for(p=0;p<=2*pi;p+=pi/24)
{
x=r*Math.Cos(q)*Math.Sin(p);
y=r*Math.Sin(q);
z=r*Math.Cos(q)*Math.Cos(p);
px[i]=(int)(x*1.4+200);
py[i]=(int)(140-y+z*Math.Sin(s));
mx[i]=px[i];
my[i]=py[i];
i++;
}
for(q=-pi/2+pi/24;q<=pi/2;q+=pi/24)
{
i=1;
for(p=0;p<=2*pi;p+=pi/24)
{
x=r*Math.Cos(q)*Math.Sin(p);
y=r*Math.Sin(q);
z=r*Math.Cos(q)*Math.Cos(p);
px[i]=(int)(x*1.4+200f);
py[i]=(int)(140f-y+z*Math.Sin(s));
if(i==1)
{
goto l1;
}
if(r*Math.Sin(q)*Math.Tan(-s)>z)goto l2;
g.DrawLine(pen1,px[i-1],py[i-1],px[i],py[i]);
l1:
g.DrawLine(pen1,mx[i],my[i],px[i],py[i]);
l2:
mx[i]=px[i];
my[i]=py[i];
i++;
}
}
g.DrawLine(pen1,px[1],py[1],px[i-1],py[i-1]);
}
private void menuItem17_Click(object sender, System.EventArgs e)
{
Graphics g=pictureBox1.CreateGraphics();
Pen pen1=new Pen(Color.Blue);
g.Clear(this.BackColor);
int flag,s,m,r,xx,zz,gx,gy;
double x,y,z,cx,cy,thx,ths,thy,th,th2;
double PI,ed,od,eh,zw,ss,xw,yw;
int[] min=new int[1640];
int[] max=new int[1640];
cx=250;cy=270;
thx=0.75;PI=3.1416;
for(m=0;m<=640;m++)
{
min[m]=320;max[m]=-320;
}
ed=1000;eh=0;
od=-180;ths=-PI/2*3;
s=4;ss=3*PI/400*s;
r=70;thy=0.9;th2=ths;
flag=0;
int mgx=0,mgy=0;
for(zz=200;zz>=-200;zz=zz-s)
{
flag=0;th=ths;
for(xx=-200;xx<=200;xx=xx+s/2)
{
x=xx;
z=zz;
y=r*(Math.Cos(th)+Math.Cos(th)*Math.Cos(th2)+Math.Cos(th2));
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
x=x*ed/(ed-od-z);
y=(y*ed-eh*(od+z))/(ed-od-z);
gx=(int)(cx+x+0.5);
gy=(int)(cy+y+0.5);
if(gy<=min[gx+320]||gy>=max[gx+320])
{
if(flag==1)
{
g.DrawLine(pen1,mgx,mgy,gx,gy);
}
mgx=gx;mgy=gy;
if(gy<min[gx+320])min[gx+320]=gy;
if(gy>max[gx+320])max[gx+320]=gy;
flag=1;
}
else
{
flag=0;
}
th=th+ss/2;
}
th2=th2+ss;
}
}
private void menuItem18_Click(object sender, System.EventArgs e)
{
int flag,r,h,n,nn,gx,gy,hl;
double pi,x,y,z,cx,cy,thx,thy,th;
double xw,yw,zw;
PointF p1=new Point();
PointF p2=new Point();
double[] ax=new double[9];
double[] ay=new double[9];
double[] az=new double[9];
double[] bx=new double[9];
double[] by=new double[9];
double[] bz=new double[9];
pi=3.14159;
cx=220;
Graphics g=pictureBox1.CreateGraphics();
Pen pen1=new Pen(Color.Blue,1);
g.Clear(this.BackColor);
cy=180;
h=80;
thy=0.2;
nn=1;
r=100;
n=4;
thx=0.4;hl=1;
flag=0;
for(th=0;th<=2*pi+0.1;th+=2*pi/n)
{
x=r*Math.Cos(th);
y=h;
z=r*Math.Sin(th);
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
ax[nn]=x;
ay[nn]=y;
az[nn]=z;
nn=nn+1;
}
x=0;y=h;z=0;
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
ax[0]=x;
ay[0]=y;
az[0]=z;
flag=0;
nn=1;
for(th=0;th<=2*pi+0.1;th+=2*pi/n)
{
x=r*Math.Cos(th);
y=-h;
z=r*Math.Sin(th);
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
bx[nn]=x;
by[nn]=y;
bz[nn]=z;
nn=nn+1;
}
x=0;y=-h;z=0;
zw=z;
xw=x;
x=zw*Math.Cos(thy)-xw*Math.Sin(thy);
z=zw*Math.Sin(thy)+xw*Math.Cos(thy);
yw=y;
zw=z;
y=yw*Math.Cos(thx)-zw*Math.Sin(thx);
z=yw*Math.Sin(thx)+zw*Math.Cos(thx);
bx[0]=x;by[0]=y;bz[0]=z;
for(nn=1;nn<=n;nn++)
{
if((hl==0)||(az[nn]+bz[nn+1])/2>0)
{
flag=0;
x=ax[nn];
y=ay[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
x=ax[nn+1];
y=ay[nn+1];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
x=bx[nn+1];
y=by[nn+1];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
x=bx[nn];
y=by[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
x=ax[nn];y=ay[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
}
flag=0;
for(nn=1;nn<=n+1;nn++)
{
if((hl==0)|(az[0]>0))
{
x=ax[nn];y=ay[nn];z=az[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
}
flag=0;
for(nn=1;nn<=n+1;nn++)
{
if((hl==0)|(bz[0]>0))
{
x=bx[nn];y=by[nn];z=bz[nn];
gx=(int)(cx+x);
gy=(int)(cy+y);
if(flag==0)
{
p1.X=gx;
p1.Y=gy;
}
flag=1;
p2.X=gx;
p2.Y=gy;
g.DrawLine(pen1,p1,p2);
p1=p2;
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -