#include
#include
#include
#include "dislin.h"
#define pi 3.1415926
#define N 4 //在 此 处 改 N 的 值 (N=0,1 时 尚 可, 从 2 开 始 就 不 正 常 了)
void koch(float ax,float ay,float bx,float by,int n)
{
int np,nq,nl,nm;
float x[2],y[2];
float cx,cy,dx,dy,ex,ey,l,alpha;
x[0]=ax; // 当 n 等 于 0 时, 画 直 线
y[0]=ay; //
x[1]=bx; //
y[1]=by; //
if (n<=0) //
{ //
curve(x,y,2); //
} //
else
{
n=n-1; //迭 代 算 法
np=n;nq=n;nl=n;nm=n;
cx=ax+(bx-ax)/3;
cy=ay+(by-ay)/3;
ex=bx-(bx-ax)/3;
ey=by-(by-ay)/3;
l=sqrt((ex-cx)*(ex-cx)+(ey-cy)*(ey-cy));
alpha=atan((ey-cy)/(ex-cx));
if((ex-cx)<0){
alpha=alpha+pi;
}
dy=cy+sin(alpha+pi/3)*l;
dx=cx+cos(alpha+pi/3)*l;
koch(ax,ay,cx,cy,np);
koch(cx,cy,dx,dy,nl);
koch(dx,dy,ex,ey,nm);
koch(ex,ey,bx,by,nq);
}
}
int main()
{
metafl("CONS"); //作 图 声 明
scrmod("REVERSE");
disini ();
//color("red");
graf(0.,4.,0.,2.,-1.0,2.5,0.,1.);
titlin("test1",1);
title();
name("X","x");
name("Y","y");
incmrk(0);
marker(21);
hsymbl(1);
koch(0.0,0.0,4.0,0.0,N); //调 用 迭 代 函 数 ,分 别 控 制 起 点 x,y 坐 标 及 终 点 x,y 坐 标 及 N 的 值。
disfin ();
}
求帮忙写出康托尔点集程序,谢谢谢谢