File: [local] / OpenXM / src / asir-contrib / packages / src / ccurve.rr (download)
Revision 1.1, Thu Mar 11 12:25:20 2004 UTC (20 years, 3 months ago) by takayama
Branch: MAIN
CVS Tags: R_1_3_1-2, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, RELEASE_1_2_3, RELEASE_1_2_2_KNOPPIX_b, KNOPPIX_2006, HEAD, DEB_REL_1_2_3-9
New function (experimental).
glib_ps_form( quote-obj )
Example. load("ccurve.rr");
glib_ps_form( quote( ccurve(8)) );
( Try this on texmacs. )
|
/* $OpenXM: OpenXM/src/asir-contrib/packages/src/ccurve.rr,v 1.1 2004/03/11 12:25:20 takayama Exp $ */
/* From asir-book/Prog/ccurve */
load("glib")$
def cCurve(P) {
if (length(P) < 2) return(0);
A = P[0][0];
B = P[0][1];
C = P[1][0];
D = P[1][1];
Tmp = [[A,B],[(A+D+C-B)/2,(B+A+D-C)/2],
[(A+D+C-B)/2,(B+A+D-C)/2],[C,D]];
return(append2(Tmp,cCurve(cdr(cdr(P)))));
}
def append2(A,B) {
if (type(B) == 0) return A;
else return append(A,B);
}
def ccurve(N) {
Tmp = [[0,0],[1,0]];
for (I=0; I<N; I++) {
Tmp = cCurve(Tmp);
print(Tmp);
}
glib_window(-1,-1,2,0.5);
for (I=0; I<length(Tmp)-1; I++) {
glib_line(Tmp[I][0],Tmp[I][1],Tmp[I+1][0],Tmp[I+1][1]);
}
}
"Type in, for example, ccurve(8);";
end$