Example #1
0
/*
** main
*/
int
main (int argc, char **argv)
{
  STRING Name;
  double start;
  double stop;

  init_lumineur (argc, argv);

  strcpy (Name, NameScn);
  strcat (Name, ".scn");

  start = getTime();
  read_scn (Name);
  stop = getTime();
  printf ("Temps de lecture  : %e seconde(s)\n", stop - start);

  start = getTime();
  bnd ();
  stop = getTime();
  printf ("Temps du binder   : %e seconde(s)\n", stop - start);

  start = getTime();
  scn ();
  stop = getTime();
  printf ("Temps de la scene : %e seconde(s)\n", stop - start);

  start = getTime();
  img (NameScn);
  stop = getTime();
  printf ("Temps de l'image  : %e seconde(s)\n", stop - start);

  exit (0);
}
void HttpReqImpl::openPostChunk() const {
	ScanTextA scn(*inout);
	scn.setNL("\r\n");
	scn("\n%");
	if (scn(" %(+)[0-9A-Za-z]1 \n%")) {
		remainPostData = scn[1].hex();
		if (remainPostData == 0) {
			chunkedPost = false;
			if (scn("\n%") == false)
				throw HttpStatusException(THISLOCATION,path,400,"Bad request");
		} if (postBodyLimit < remainPostData) {
			throw HttpStatusException(THISLOCATION, path, 413, "Request is too large");
		} else {
			postBodyLimit-= remainPostData;
		}
	} else {
		throw HttpStatusException(THISLOCATION,path,400,"Bad request");
	}
}
Example #3
0
/*
** main
*/
int
main (int argc, char **argv)
{
  STRING Name;
  struct timeval start;
  struct timeval stop;
  int my_rank;

  MPI_Init(&argc,&argv);

  MPI_Comm_rank(MPI_COMM_WORLD,&my_rank);

  init_lumineur (argc, argv);

  strcpy (Name, NameScn);
  strcat (Name, ".scn");

  
    portable_gettimeofday(&start);
    read_scn (Name);
    portable_gettimeofday(&stop);
    if(my_rank==0){
      printf ("Temps de lecture  : %ld seconde(s)\n", stop.tv_sec - start.tv_sec);
    }
    portable_gettimeofday(&start);
    bnd ();
    portable_gettimeofday(&stop);
    if(my_rank==0){
      printf ("Temps du binder   : %ld seconde(s)\n", stop.tv_sec - start.tv_sec);
    }
    portable_gettimeofday(&start);
    scn ();
    portable_gettimeofday(&stop);
    if(my_rank==0){
      printf ("Temps de la scene : %ld seconde(s)\n", stop.tv_sec - start.tv_sec);
    }
    portable_gettimeofday(&start);
  
  
  img (NameScn);
  portable_gettimeofday(&stop);
  printf ("Temps de l'image  : %ld seconde(s)\n", stop.tv_sec - start.tv_sec);
  
  MPI_Finalize();

  exit (0);
}
Example #4
0
Bras::Bras(int cote_,
        int pin_pap_step,
        int pin_pap_dir,
        int pin_bump_asc,
        int pin_ir,
        int seuil_ir,
        long* pulse_color,
        int pin_pression_): 
    period_run(50),
    cote(cote_),
    time_out_on(false), state(INT_RANGE), coul_to_be_on(false), next_coul_on(false),
    asc(pin_pap_step, pin_pap_dir, pin_bump_asc, cote_),
    ir(pin_ir, seuil_ir), mon_ir_actif(false), trigger_to_be(T_RANGE),
    col(pulse_color), trigger_autre_on(false), couleur(ROUGE), trigger_attente_on(false),
    pression_on(false), pin_pression(pin_pression_)
{
    if (cote == GAUCHE)
    {
        servo_rot.attach(PIN_SERVO_ROT_G);
        servo_retourne.attach(PIN_SERVO_RETOURNE_G);
        pin_pompe = PIN_POMPE_G;
        pinMode(pin_pompe, OUTPUT);
    }
    else
    {
        servo_rot.attach(PIN_SERVO_ROT_D);
        servo_retourne.attach(PIN_SERVO_RETOURNE_D);
        pin_pompe = PIN_POMPE_D;
        pinMode(pin_pompe, OUTPUT);
    }

    ir.reverse();
    scn();
    spb();
    pf();
    asc.monte();

    //while(!asc.run()){
    //    delay(1);
    //}
 }
Example #5
0
void Pince::in_state_func()
{
    switch (state)
    {
        case RANGE_DEPART :
            a1();
            scv();
            slr();
            break;
        case TAPE_VERTICAL :
            a1();
            scv();
            slt();
            break;
        case INTERMEDIAIRE_SORTIE :
            set_time_out(400, trigger_to_be);
            a1();
            slo();
            scv();
            break;
        case HORIZ_VERT :
            a1();
            slo();
            scn();
            break;
        case NOMINAL_VIDE : 
            set_time_out(500, trigger_to_be);
            a0();
            slo();
            scn();
            break;
        case ACTIF_TORCHE :
            a0();
            slo();
            scn();
            break;
        case PRISE_TORCHE : 
            Serial.println('# PRISE');
            a0();
            slf();
            scn();
            break;
        case ACTIF_FEU :
            a0();
            slo();
            scn();
            break;
        case PRISE_FEU :
            Serial.println('# PRISE');
            set_time_out(500, TIME_OUT);
            a0();
            slf();
            scn();
            break;
        case WAIT_COOL_OK :
            break;
        case MONTE_COOL :
            set_time_out(800, TIME_OUT);
            a1();
            slf();
            scn();
            break;
        case MONTE_COOL2 :
            a1();
            slf();
            scn();
            break;
        case RETOURNE_COOL_N :
            set_time_out(500, TIME_OUT);
            a1();
            slf();
            scr();
            break;
        case DESCEND_COOL_N :
            a0();
            slf();
            scr();
            break;
        case POSE_COOL_N :
            set_time_out(500, TIME_OUT);
            a0();
            slo();
            scr();
            break;
        case INT1_COOL_N : 
            set_time_out(500, TIME_OUT);
            a1();
            slo();
            scr();
            break;
        case INT2_COOL_N : 
            set_time_out(500, TIME_OUT);
            a1();
            slf();
            scr();
            break;
        case INT3_COOL_N :
            set_time_out(500, TIME_OUT);
            a1();
            slf();
            scn();
            break;
        case INT_RANGE :
            a1();
            slo();
            break;
        case INT2_RANGE :
            set_time_out(10, trigger_to_be);
            a1();
            slo();
            break;
    }
}
void parser_dump(mrb_state *mrb, mrb_ast_node *tree, int offset)
{
#ifdef ENABLE_STDIO
    if (!tree) return;
again:
    dump_prefix(offset);
    node_type n = tree->getType();
    mrb_ast_node *orig = tree;
    if(dynamic_cast<UpdatedNode *>(tree)==0)
        tree = tree->right();

    switch (n) {
        case NODE_BEGIN: parser_dump(mrb,(BeginNode *)orig,offset); break;

        case NODE_RESCUE: parser_dump(mrb,(RescueNode *)orig,offset); break;

        case NODE_ENSURE: parser_dump(mrb,(EnsureNode *)orig,offset); break;

        case NODE_LAMBDA:
            printf("NODE_LAMBDA:\n");
            goto block;

        case NODE_BLOCK:
            printf("NODE_BLOCK:\n");
block:
            parser_dump(mrb,(LambdaCommonNode *)orig,offset);
            break;

        case NODE_IF:
        {
            IfNode *in = (IfNode *)orig;
            printf("NODE_IF:\n");
            dump_prefix(offset+1);
            printf("cond:\n");
            parser_dump(mrb, in->cond(), offset+2); //tree->left()
            dump_prefix(offset+1);
            printf("then:\n");
            parser_dump(mrb, in->true_body(), offset+2); //tree->right()->left()
            if (in->false_body()) {
                dump_prefix(offset+1);
                printf("else:\n");
                parser_dump(mrb, in->false_body() , offset+2); //tree->right()->right()->left()
            }
        }
            break;

        case NODE_AND:
        {
            AndNode *an = (AndNode *)orig;
            printf("NODE_AND:\n");
            parser_dump(mrb, an->lhs(), offset+1);
            parser_dump(mrb, an->rhs(), offset+1);
        }
            break;

        case NODE_OR:
        {
            OrNode *an = (OrNode *)orig;
            printf("NODE_OR:\n");
            parser_dump(mrb, an->lhs(), offset+1);
            parser_dump(mrb, an->rhs(), offset+1);
        }
            break;

        case NODE_CASE:  {
            CaseNode *cn = (CaseNode *)orig;
            printf("NODE_CASE:\n");
            if (cn->switched_on()) {
                parser_dump(mrb, cn->switched_on(), offset+1);
            }
            tree = cn->cases();
            while (tree) {
                dump_prefix(offset+1);
                printf("case:\n");
                dump_recur(mrb, tree->left()->left(), offset+2);
                dump_prefix(offset+1);
                printf("body:\n");
                parser_dump(mrb, tree->left()->right(), offset+2);
                tree = tree->right();
            }
        }
            break;

        case NODE_WHILE:
        {
            WhileNode *n = (WhileNode *)orig;
            printf("NODE_WHILE:\n");
            dump_prefix(offset+1);
            printf("cond:\n");
            parser_dump(mrb, n->lhs(), offset+2);
            dump_prefix(offset+1);
            printf("body:\n");
            parser_dump(mrb, n->rhs(), offset+2);
        }
            break;

        case NODE_UNTIL:
        {
            UntilNode *n = (UntilNode *)orig;
            printf("NODE_UNTIL:\n");
            dump_prefix(offset+1);
            printf("cond:\n");
            parser_dump(mrb, n->lhs(), offset+2);
            dump_prefix(offset+1);
            printf("body:\n");
            parser_dump(mrb, n->rhs(), offset+2);
        }
            break;

        case NODE_FOR:
            printf("NODE_FOR:\n");
            dump_prefix(offset+1);
            parser_dump(mrb,(ForNode *)orig,offset);
            break;

        case NODE_SCOPE:
            printf("NODE_SCOPE:\n");
        {
            ScopeNode *ns = (ScopeNode *)orig;
            const tLocals &n2(ns->locals());

            if ( !n2.empty() ) {
                dump_prefix(offset+1);
                printf("local variables:\n");
                dump_prefix(offset+2);
                for(auto iter=n2.begin(); iter!=n2.end(); ++iter) {
                    if ( (iter+1) != n2.end() )
                        printf(", ");
                    printf("%s", mrb_sym2name(mrb, *iter));
                }
                printf("\n");
            }
            tree = ns->body();
        }
            offset++;
            goto again;

        case NODE_FCALL:
        case NODE_CALL:
        {
            CallCommonNode *cn = (CallCommonNode *)orig;
            printf("NODE_CALL:\n");
            parser_dump(mrb, cn->m_receiver, offset+1);
            dump_prefix(offset+1);
            printf("method='%s' (%d)\n",
                   mrb_sym2name(mrb, cn->m_method),
                   cn->m_method);
            CommandArgs *ca = cn->m_cmd_args;
            if (ca) {
                dump_prefix(offset+1);
                printf("args:\n");
                dump_recur(mrb, ca->m_args, offset+2);
                if (ca->m_blk) {
                    dump_prefix(offset+1);
                    printf("block:\n");
                    parser_dump(mrb, ca->m_blk, offset+2);
                }
            }
        }
            break;

        case NODE_DOT2:
        {
            printf("NODE_DOT2:\n");
            Dot2Node *nd = (Dot2Node *)orig;
            parser_dump(mrb, nd->lhs(), offset+1);
            parser_dump(mrb, nd->rhs(), offset+1);
        }
            break;

        case NODE_DOT3:
        {
            printf("NODE_DOT3:\n");
            Dot3Node *nd = (Dot3Node *)orig;
            parser_dump(mrb, nd->lhs(), offset+1);
            parser_dump(mrb, nd->rhs(), offset+1);
        }
            break;

        case NODE_COLON2:
        {
            Colon2Node *cn = (Colon2Node *)orig;
            printf("NODE_COLON2:\n");
            parser_dump(mrb, cn->m_val, offset+1);
            dump_prefix(offset+1);
            printf("::%s\n", mrb_sym2name(mrb, cn->m_sym));
        }
            break;

        case NODE_COLON3:{
            printf("NODE_COLON3:\n");
            dump_prefix(offset+1);
            Colon3Node *n = (Colon3Node *)orig;
            printf("::%s\n", mrb_sym2name(mrb, n->sym()));
        }
            break;

        case NODE_ARRAY:
            printf("NODE_ARRAY:\n");
            dump_recur(mrb, ((ArrayNode *)orig)->child(), offset+1);
            break;

        case NODE_HASH:
        {
            HashNode *nd = (HashNode *)orig;
            printf("NODE_HASH:\n");
            tree = nd->child();
            while (tree) {
                dump_prefix(offset+1);
                printf("key:\n");
                parser_dump(mrb, tree->left()->left(), offset+2);
                dump_prefix(offset+1);
                printf("value:\n");
                parser_dump(mrb, tree->left()->right(), offset+2);
                tree = tree->right();
            }
        }
            break;

        case NODE_SPLAT:
            printf("NODE_SPLAT:\n");
            parser_dump(mrb, ((SplatNode *)orig)->child(), offset+1);
            break;

        case NODE_ASGN:
        {
            AsgnNode *an = (AsgnNode *)orig;
            printf("NODE_ASGN:\n");
            dump_prefix(offset+1);
            printf("lhs:\n");
            parser_dump(mrb, an->lhs(), offset+2);
            dump_prefix(offset+1);
            printf("rhs:\n");
            parser_dump(mrb, an->rhs(), offset+2);
        }
            break;

        case NODE_MASGN:
        {
            printf("NODE_MASGN:\n");
            dump_prefix(offset+1);
            printf("mlhs:\n");
            MAsgnNode *mn = (MAsgnNode *)orig;
            mrb_ast_node *n2 = mn->lhs();

            if (n2->left()) {
                dump_prefix(offset+2);
                printf("pre:\n");
                dump_recur(mrb, n2->left(), offset+3);
            }
            n2 = n2->right();
            if (n2) {
                if (n2->left()) {
                    dump_prefix(offset+2);
                    printf("rest:\n");
                    if (n2->left() == (mrb_ast_node*)-1) {
                        dump_prefix(offset+2);
                        printf("(empty)\n");
                    }
                    else {
                        parser_dump(mrb, n2->left(), offset+3);
                    }
                }
                n2 = n2->right();
                if (n2) {
                    if (n2->left()) {
                        dump_prefix(offset+2);
                        printf("post:\n");
                        dump_recur(mrb, n2->left(), offset+3);
                    }
                }
            }
            dump_prefix(offset+1);
            printf("rhs:\n");
            parser_dump(mrb, mn->rhs(), offset+2);
        }
            break;

        case NODE_OP_ASGN: {
            OpAsgnNode *opasgn = static_cast<OpAsgnNode *>(tree);
            printf("NODE_OP_ASGN:\n");
            dump_prefix(offset+1);
            printf("lhs:\n");
            parser_dump(mrb, opasgn->lhs(), offset+2);
            dump_prefix(offset+1);
            printf("op='%s' (%d)\n", mrb_sym2name(mrb, opasgn->op_sym), opasgn->op_sym);
            parser_dump(mrb, opasgn->rhs(), offset+1);
            break;
        }
        case NODE_SUPER:
        {
            printf("NODE_SUPER:\n");
            SuperNode *x=(SuperNode *)orig;
            if (x->hasParams()) {
                dump_prefix(offset+1);
                printf("args:\n");
                dump_recur(mrb, x->args(), offset+2);
                if (x->block()) {
                    dump_prefix(offset+1);
                    printf("block:\n");
                    parser_dump(mrb, x->block(), offset+2);
                }
            }
        }
            break;

        case NODE_ZSUPER:
            printf("NODE_ZSUPER\n");
            break;

        case NODE_RETURN:
            printf("NODE_RETURN:\n");
            parser_dump(mrb, ((ReturnNode *)orig)->child(), offset+1);
            break;

        case NODE_YIELD:
            printf("NODE_YIELD:\n");
            dump_recur(mrb, ((YieldNode *)orig)->child(), offset+1);
            break;

        case NODE_BREAK:
            printf("NODE_BREAK:\n");
            parser_dump(mrb, ((BreakNode *)orig)->child(), offset+1);
            //parser_dump(mrb, tree, offset+1);
            break;

        case NODE_NEXT:
            printf("NODE_NEXT:\n");
            parser_dump(mrb, ((NextNode *)orig)->child(), offset+1);
            break;

        case NODE_REDO:
            printf("NODE_REDO\n");
            break;

        case NODE_RETRY:
            printf("NODE_RETRY\n");
            break;

        case NODE_LVAR:
        {
            LVarNode * lvar = (LVarNode *)orig;
            printf("NODE_LVAR %s\n", mrb_sym2name(mrb, lvar->sym()));
        }
            break;

        case NODE_GVAR:
        {
            GVarNode * gvar = (GVarNode *)orig;
            printf("NODE_GVAR %s\n", mrb_sym2name(mrb, gvar->sym()));
        }
            break;

        case NODE_IVAR:
        {
            IVarNode * ivar = (IVarNode *)orig;
            printf("NODE_IVAR %s\n", mrb_sym2name(mrb, ivar->sym()));
        }
            break;

        case NODE_CVAR:
        {
            CVarNode * cvar = (CVarNode *)orig;
            printf("NODE_CVAR %s\n", mrb_sym2name(mrb, cvar->sym()));
        }
            break;

        case NODE_CONST:
        {
            ConstNode * cvar = (ConstNode *)orig;
            printf("NODE_CONST %s\n", mrb_sym2name(mrb, cvar->sym()));
        }

            break;

        case NODE_MATCH:
            printf("NODE_MATCH:\n");
            dump_prefix(offset + 1);
            printf("lhs:\n");
            parser_dump(mrb, tree->left(), offset + 2);
            dump_prefix(offset + 1);
            printf("rhs:\n");
            parser_dump(mrb, tree->right(), offset + 2);
            break;

        case NODE_BACK_REF:
            printf("NODE_BACK_REF: $%c\n", ((BackRefNode *)orig)->m_ref);
            break;

        case NODE_NTH_REF:
            printf("NODE_NTH_REF: $%d\n", ((NthRefNode *)orig)->m_ref);
            break;

        case NODE_ARG:
        {
            ArgNode * var = (ArgNode *)orig;
            printf("NODE_ARG %s\n", mrb_sym2name(mrb, var->sym()));
        }
            break;

        case NODE_BLOCK_ARG:
        {

            printf("NODE_BLOCK_ARG:\n");
            parser_dump(mrb, ((BlockArgNode *)orig)->child(), offset+1);
        }
            break;

        case NODE_INT:
        {
            IntLiteralNode *int_lit = (IntLiteralNode *)orig;
            printf("NODE_INT %s base %d\n", int_lit->m_val, int_lit->m_base);
        }
            break;

        case NODE_FLOAT:
            printf("NODE_FLOAT %s\n", ((FloatLiteralNode *)orig)->m_val);
            break;

        case NODE_NEGATE:
            printf("NODE_NEGATE\n");
            parser_dump(mrb, ((NegateNode *)tree)->child(), offset+1);
            break;

        case NODE_STR:
        {
            StrNode *sn=(StrNode *)orig;
            printf("NODE_STR \"%s\" len %zu\n", sn->m_str, sn->m_length);
        }
            break;

        case NODE_DSTR:
        {
            DstrNode *dn = (DstrNode *)orig;
            printf("NODE_DSTR\n");
            dump_recur(mrb, dn->child(), offset+1);
        }
            break;

        case NODE_XSTR:
            printf("NODE_XSTR \"%s\" len %d\n", (char*)tree->left(), (int)(intptr_t)tree->right());
            break;

        case NODE_DXSTR: {
            DxstrNode *dn = (DxstrNode *)orig;
            printf("NODE_DXSTR\n");
            dump_recur(mrb, dn->child(), offset+1);
        }
            break;

        case NODE_REGX:
            printf("NODE_REGX /%s/%s\n", (char*)tree->left(), (char*)tree->right());
            break;

        case NODE_DREGX:
            printf("NODE_DREGX\n");
            dump_recur(mrb, tree->left(), offset+1);
            dump_prefix(offset);
            printf("tail: %s\n", (char*)tree->right()->right()->left());
            dump_prefix(offset);
            printf("opt: %s\n", (char*)tree->right()->right()->right());
            break;

        case NODE_SYM:
        {
            SymNode * cvar = (SymNode *)orig;
            printf("NODE_SYM :%s\n", mrb_sym2name(mrb, cvar->sym()));
        }
            break;

        case NODE_SELF:
            printf("NODE_SELF\n");
            break;

        case NODE_NIL:
            printf("NODE_NIL\n");
            break;

        case NODE_TRUE:
            printf("NODE_TRUE\n");
            break;

        case NODE_FALSE:
            printf("NODE_FALSE\n");
            break;

        case NODE_ALIAS:
        {
            AliasNode *an = (AliasNode *)orig;
            printf("NODE_ALIAS %s %s:\n",
                   mrb_sym2name(mrb, an->m_from),
                   mrb_sym2name(mrb, an->m_to));
        }
            break;

        case NODE_UNDEF:
            printf("NODE_UNDEF");
        {
            UndefNode *und((UndefNode *)tree);
            for(mrb_sym v : und->m_syms) {
                printf(" %s", mrb_sym2name(mrb, v));
            }
        }
            printf(":\n");
            break;

        case NODE_CLASS: {
            ClassNode *cn = static_cast<ClassNode *>(tree);
            printf("NODE_CLASS:\n");
            if (cn->receiver()->left() == (mrb_ast_node*)0) {
                dump_prefix(offset+1);
                printf(":%s\n", mrb_sym2name(mrb, sym(cn->receiver()->right())));
            }
            else if (cn->receiver()->left() == (mrb_ast_node*)1) {
                dump_prefix(offset+1);
                printf("::%s\n", mrb_sym2name(mrb, sym(cn->receiver()->right())));
            }
            else {
                parser_dump(mrb, cn->receiver()->left(), offset+1);
                dump_prefix(offset+1);
                printf("::%s\n", mrb_sym2name(mrb, sym(cn->receiver()->right())));
            }
            if (cn->super()) {
                dump_prefix(offset+1);
                printf("super:\n");
                parser_dump(mrb, cn->super(), offset+2);
            }
            dump_prefix(offset+1);
            printf("body:\n");
            parser_dump(mrb, cn->scope()->body(), offset+2);
            break;
        }

        case NODE_MODULE: {
            ModuleNode *cn = static_cast<ModuleNode *>(tree);
            printf("NODE_MODULE:\n");

            if (cn->receiver()->left() == (mrb_ast_node*)0) {
                dump_prefix(offset+1);
                printf(":%s\n", mrb_sym2name(mrb, sym(cn->receiver()->right())));
            }
            else if (cn->receiver()->left() == (mrb_ast_node*)1) {
                dump_prefix(offset+1);
                printf("::%s\n", mrb_sym2name(mrb, sym(cn->receiver()->right())));
            }
            else {
                parser_dump(mrb, cn->receiver(), offset+1);
                dump_prefix(offset+1);
                printf("::%s\n", mrb_sym2name(mrb, sym(cn->receiver()->right())));
            }
            dump_prefix(offset+1);
            printf("body:\n");
            parser_dump(mrb, cn->scope()->body(), offset+2);
            break;
        }
        case NODE_SCLASS: {
            printf("NODE_SCLASS:\n");
            SclassNode *scn((SclassNode *)tree);

            parser_dump(mrb, scn->scope(), offset+1);
//            dump_prefix(offset+1);
//            printf("body:\n");
//            parser_dump(mrb, scntree->right()->left()->right(), offset+2);
        }
            break;

        case NODE_DEF:
        {
            DefNode *dn = (DefNode *)orig;
            printf("NODE_DEF:\n");
            dump_prefix(offset+1);
            parser_dump(mrb,dn,offset);
        }
            break;

        case NODE_SDEF:
        {
            SdefNode *sn = (SdefNode *)orig;
            printf("NODE_SDEF:\n");
            parser_dump(mrb, sn->receiver(), offset+1);
            dump_prefix(offset+1);
            printf(":"); // prepend name with ':'
            parser_dump(mrb,sn,offset);
        }
            break;

        case NODE_POSTEXE:
            printf("NODE_POSTEXE:\n");
            parser_dump(mrb, ((PostExeNode *)orig)->child(), offset+1);
            break;

        case NODE_HEREDOC:{
            printf("NODE_HEREDOC:\n");
            HeredocNode *hdn((HeredocNode *)tree);

            parser_dump(mrb, hdn->contents()->doc->left(), offset+1);
        }
            break;

        default:
            printf("node type: %d (0x%x)\n", (int)n, (int)n);
            break;
    }
#endif
}
Example #7
0
int main(int argc, char *argv[]) {

  if (argc<2) {
    std::cerr << "Syntax is:\n\t" << argv[0] << " filename\n";
    std::exit(1);
  }
  
  Image img(360,360);

  Scene scn(Camera(Point(15,15,15),
		   Point(0.0,0.0,0.0),
		   1.0,
		   Vector(0.0,1.0,0.0)),
	    Color(0.0,0.0,0.0),
	    -16.0,16.0,
	    -16.0,16.0,
	    -16.0,16.0,
	    30,30,30);

  Texture *textArray[] = {
    new Texture (Color(0.75,0.75,0.75),
		 Color(0.0,0.0,0.0),
		 Color(0.0,0.0,0.0),
		 20,
		 Color(0.0,0.0,0.0)),
    
    new Texture (Color(0.0,0.0,1.0),
		 Color(0.0,0.1,0.0),
		 Color(1.0,1.0,1.0),
		 90,
		 Color(0,0,0)),
    
    new Texture (Color(0.25,0.25,0.0),
		 Color(0.0,0.0,0.0),
		 Color(1.0,1.0,1.0),
		 100,
		 Color(0.25,0.25,0.25),
		 Color(0.5,0.5,0.5),
		 0.85),
    
    new Texture (Color(0.0,1.0,0.0),
		 Color(0.0,0.0,0.0),
		 Color(1.0,1.0,1.0),
		 200,
		 Color(0.0,0.0,0.0))};

  const real PI = 3.141592654;
  real umin = -15;
  real umax = 15;
  real vmin = -15;
  real vmax = 15;
  /*
  int usteps = 1;
  int vsteps = 1;
  real umult = (umax-umin)/(usteps-1);
  real vmult = (vmax-vmin)/(vsteps-1);
  real uval, vval;
  for (int i=0;i<usteps;++i) {
    uval = i*umult + umin;
    for (int j=0;j<vsteps; ++j) {
      vval = j*vmult + vmin;
      scn.addObject(new Triangle(Point(
				       x(uval,vval),
				       y(uval,vval),
				       z(uval,vval)),
				 Point(
				       x(uval+umult,vval),
				       y(uval+umult,vval),
				       z(uval+umult,vval)),
				 Point(
				       x(uval,vval+vmult),
				       y(uval,vval+vmult),
				       z(uval,vval+vmult)),
				 textArray[3]));
      scn.addObject(new Triangle(Point(
				       x(uval+umult,vval+vmult),
				       y(uval+umult,vval+vmult),
				       z(uval+umult,vval+vmult)),
				 Point(
				       x(uval+umult,vval),
				       y(uval+umult,vval),
				       z(uval+umult,vval)),
				 Point(
				       x(uval,vval+vmult),
				       y(uval,vval+vmult),
				       z(uval,vval+vmult)),
				 textArray[3],
				 true));
    }
  }
  */

  /*
  const real PI = 3.141592654;
  real umin = -15;
  real umax = 15;
  real vmin = -15;
  real vmax = 15;

  int usteps = 64;
  int vsteps = 64;
  real umult = (umax-umin)/(usteps-1);
  real vmult = (vmax-vmin)/(vsteps-1);
  real uval, vval;
  for (int i=0;i<usteps;++i) {
    uval = i*umult + umin;
    for (int j=0;j<vsteps; ++j) {
      vval = j*vmult + vmin;
      scn.addObject(new Sphere(Point(
				     x(uval,vval),
				     y(uval,vval),
				     z(uval,vval)),
			       umult,
			       textArray[3]));

    }
  }
  */


  scn.addObject(new Sphere(Point(7.5,7.5,7.5), 2.5, textArray[2]));

  for (int i=1;i<= 14; ++i) {
    for (int j = 1; j<= 14; ++j) {
      scn.addObject(new Sphere(Point(i, j, 0),
			       0.5,
			       textArray[3]));
      scn.addObject(new Sphere(Point(0, i, j),
			       0.5,
			       textArray[3]));
      scn.addObject(new Sphere(Point(j, 0, i),
			       0.5,
			       textArray[3]));
    }
  }


  /*
  scn.addObject(new Sphere(Point(0,1.5,2.5),  2.5, textArray[2]));
  scn.addObject(new Sphere(Point(0,0,-2.5), 2.5, textArray[3]));
  scn.addObject(new Sphere(Point(-3.75,2.5,1.25), 1.25, textArray[1]));
  */
  /*
  scn.addObject(new Triangle(Point(8, 8, 0),
			     Point(8, -8, 0),
			     Point(-8, 8, 0),
			     textArray[0],
			     true));
  scn.addObject(new Triangle(Point(-8, -8, 0),
			     Point(8, -8, 0),
			     Point(-8, 8, 0),
			     textArray[0],
			     false));

  scn.addObject(new Triangle(Point(0, 8, 8),
			     Point(0, -8, 8),
			     Point(0, 8, -8),
			     textArray[0],
			     false));
  scn.addObject(new Triangle(Point(0, -8, -8),
			     Point(0, -8, 8),
			     Point(0, 8, -8),
			     textArray[0],
			     true));
  */
  //  scn.addLight(new Light(Point(10,10,10), Color(1.0,1.0,1.0)));
  //  scn.addLight(new Light(Point(10,10,-10), Color(1.0,1.0,1.0)));
  scn.addLight(new Light(Point(15,15,15), Color(1.0,1.0,1.0)));


  real mean, var, stdDev;
  int min, max;
  real meanCells, varCells, stdDevCells;
  int minCells;
  int maxCells;
  scn.getGridStats(mean, stdDev, var, min, max,
		   meanCells, stdDevCells,
		   varCells, minCells, maxCells);
  std::cout << "Scene stats:\n"
	    << "Number of objects     : " << scn.getNumObjects() << "\n"
	    << "Number of lights      : " << scn.getNumLights() << "\n"
	    << "Number of cells       : " << scn.getNumCells() << "\n"
	    << "Grid stats:\n"
	    << "Mean objects per cell : " << mean << "\n"
	    << "Std. deviation        : " << stdDev << "\n"
	    << "Variance              : " << var << "\n"
	    << "Minimum               : " << min << "\n"
	    << "Maximum               : " << max << "\n"
	    << "Object stats:\n"
	    << "Mean cells per object : " << meanCells << "\n"
	    << "Std. Deviation        : " << stdDevCells << "\n"
	    << "Variance              : " << varCells <<"\n"
	    << "Min cells per object  : " << minCells << "\n"
	    << "Max cells per object  : " << maxCells << "\n";
   
  scn.trace(img, -1.0, -1.0, 1.0, 1.0, 9);

  std::ofstream outf(argv[1]);
  img.toPPM(outf);
  outf.close();

  std::cout << "Rays cast: " << scn.getNumRaysCast() << "\n"
	    << "Intersection tests: "
	    << scn.getNumIntersectionTests() << "\n"
	    << "Intersections: "
	    << scn.getNumIntersections() << "\n"
	    << "Shadow rays cast: "
	    << scn.getNumShadowRaysCast() << "\n"
	    << "Reflective rays cast: "
	    << scn.getNumReflectiveRaysCast() << "\n"
	    << "Refractive rays cast: "
	    << scn.getNumRefractiveRaysCast() << "\n";

  return 0;
}
Example #8
0
void Bras::in_state_func()
{
    switch (state)
    {
        case RANGE_DEPART :
            scr(); 
            a0();
            spb();
            pf();
            break;
        case INT_RANGE :
            //va bumper
            scn(); 
            a0();
            spb();
            pf();
            break;
        case INT2_RANGE :
            set_time_out(400, trigger_to_be);
            scn(); 
            a0();
            spb();
            pf();
            break;
         case GO_ATTENTE :
            scn(); 
            a1();
            spb();
            pf();
            break;

        case ATTENTE_ACTIF :
            scn(); 
            a1();
            spb();
            pf();
            break;

        case DESCENTE_LAT :
            scn(); 
            a4();
            spb();
            pf();
            break;
        case DESCENTE_POMPE_LAT :
            scn(); 
            a4();
            spb();
            po();
            break;
        case PRISE_LAT :
            scn(); 
            a4();
            spb();
            po();
            break;
        case MONTE_VERT :
            set_time_out(500, TIME_OUT);
            scn(); 
            a0();
            spv();
            po();
            break;
        case MONTE :
            scn(); 
            a0();
            spb();
            po();
            break;
        case RANGE_PRISE :
            set_time_out(2000, TIME_OUT);
            scl(); 
            a0();
            spb();
            po();
            break;
        case LACHE :
            set_time_out(300, TIME_OUT);
            scl(); 
            a0();
            spb();
            pf();
            break;
        case MONTE_ECH :
            scn(); 
            a3();
            spb();
            po();
            break;

        case MONTE_ECH_VERT :
            sce(); 
            a3();
            spr();
            po();
            break;
       
        case RETOURNE_ECH :
            call_for_help();
            sce(); 
            a3();
            spr();
            po();
            break;
        case REPLACE_APRES_ECH :
            set_time_out(300, TIME_OUT);
            scn(); 
            a3();
            spb();
            pf();
            break;

        case SEND_MINE :
            scv(); 
            a4();
            spv();
            pf();
            break;
        case SENDMASTER_PRET :
            scv(); 
            a4();
            spv();
            po();
            break;
        case PRISE_VERT :
            scv(); 
            a4();
            spv();
            po();
            break;

        case PRISE_COPAIN :
            a2(); 
            sce();
            spb();
            po();
            break;
    }
}
Example #9
0
void Bras::sct()
{
    scn();
}