[BACK]Return to ccurve.rr CVS log [TXT][DIR] Up to [local] / OpenXM / src / cfep / tests

File: [local] / OpenXM / src / cfep / tests / ccurve.rr (download)

Revision 1.2, Tue Mar 7 11:15:23 2006 UTC (18 years, 2 months ago) by takayama
Branch: MAIN
CVS Tags: R_1_3_1-2, RELEASE_1_3_1_13b, RELEASE_1_2_3_12, HEAD, DEB_REL_1_2_3-9
Changes since 1.1: +2 -3 lines

1. Added the following new OpenGL commands.
  cfep.glib_init_send("0; [glClearColor,0.0,0.5,0.5,0.1]");
/* GL_COLOR_BUFFER_BIT 0x4000,  = 16384
   GL_DEPTH_BUFFER_BIT  0x100
*/
  cfep.glib_init_send("0; [glClear,(int)16384]");
  cfep.glib_send("0; [glColor4f,1.0,0,0,0]");
  cfep.glib_send("0; [glRectf,-0.5,-0.1,0.5,0.1]");
  cfep.glib_send("0; [glFlush]");
  cfep.glib_send("0;meta_showListOfOglComm");
  meta_removeLast, meta_removeAll, meta_removeLastInit, meta_removeAllInit
2.  small improvement of the interface of "goto next line".

/* From 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 */
import("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]); glib_flush();
   }
}
ccurve(6); glib_flush();
"Type in, for example,  ccurve(8);";