Changeset 139 for cpp/frams/_demos
- Timestamp:
- 02/20/14 17:49:28 (11 years ago)
- Location:
- cpp/frams/_demos
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/_demos/genooper_test.cpp
r138 r139 26 26 gm.p_report(NULL, NULL); 27 27 28 const char* src = (argc > 1) ? argv[1] : "/*9*/ RRR";28 const char* src = (argc > 1) ? argv[1] : "/*9*/UUU"; 29 29 Geno gsrc(src, -1, "First"); 30 30 printGenAndTitle(gsrc, "source genotype (gsrc)"); … … 42 42 printGenAndTitle(ginvalid, "invalid"); 43 43 44 Geno fixed = gm.Validate(ginvalid);45 printGenAndTitle( fixed, "validated");44 Geno gvalidated = gm.Validate(ginvalid); 45 printGenAndTitle(gvalidated, "validated"); 46 46 47 printf("\nHTMLized: %s\n", (const char*)gm.HTMLize((const char*) fixed.getGene()));47 printf("\nHTMLized: %s\n", (const char*)gm.HTMLize((const char*)gvalidated.getGene())); 48 48 49 49 return 0; -
cpp/frams/_demos/part_shapes.cpp
r121 r139 9 9 int main() 10 10 { 11 Model *m=new Model;12 Part *p1,*p2;13 Joint *j;11 Model m; 12 Part *p1, *p2; 13 Joint *j; 14 14 15 m->open();15 m.open(); 16 16 17 // chain of ellipsoids - subsequent parts are placed relative to the previous part's orientation and location18 p1=m->addNewPart(Part::SHAPE_ELLIPSOID); //initial part19 p1->scale=Pt3D(1.0,0.7,0.4);17 // chain of ellipsoids - subsequent parts are placed relative to the previous part's orientation and location 18 p1 = m.addNewPart(Part::SHAPE_ELLIPSOID); //initial part 19 p1->scale = Pt3D(1.0, 0.7, 0.4); 20 20 21 Orient rotation=Orient_1; //must be initialized explicitly because the default Orient constructor does not initialize anything22 rotation.rotate(Pt3D(0.1,0.2,0.3));21 Orient rotation = Orient_1; //must be initialized explicitly because the default Orient constructor does not initialize anything 22 rotation.rotate(Pt3D(0.1, 0.2, 0.3)); 23 23 24 for(int N=10;N>0;N--,p1=p2)24 for (int N = 10; N > 0; N--, p1 = p2) 25 25 { 26 p2=m->addNewPart(Part::SHAPE_ELLIPSOID); 27 p2->scale=p1->scale*0.9; //each part is smaller than its predecessor 28 29 Pt3D advance(p1->scale.x,0,0); //advance by previous part's ellipsoid x radius 30 p2->p = p1->p + p1->o.transform(advance); //advance vector transformed by p1 orientation == in p1 local coordinates 31 p2->setOrient(p1->o.transform(rotation)); //rotation transformed by p1 orientation 26 p2 = m.addNewPart(Part::SHAPE_ELLIPSOID); 27 p2->scale = p1->scale*0.9; //each part is smaller than its predecessor 32 28 33 m->addNewJoint(p1,p2,Joint::SHAPE_SOLID); //all parts must be connected 29 Pt3D advance(p1->scale.x, 0, 0); //advance by previous part's ellipsoid x radius 30 p2->p = p1->p + p1->o.transform(advance); //advance vector transformed by p1's orientation (i.e., in p1's local coordinates) 31 p2->setOrient(p1->o.transform(rotation)); //rotation transformed by p1's orientation 32 33 m.addNewJoint(p1, p2, Joint::SHAPE_SOLID); //all parts must be connected 34 34 } 35 35 36 // chain of cyllinders - line segments between points calculated from the parametric formula P(a)=(2-2*cos(a),2*sin(a)) (circle with r=2)37 Pt3D prev,next;38 p1=m->getPart(0);39 for(float a=0;a<M_PI;a+=M_PI/10)36 // chain of cyllinders - line segments between points calculated from the parametric formula P(a)=(2-2*cos(a),2*sin(a)) (circle with r=2) 37 Pt3D prev, next; 38 p1 = m.getPart(0); 39 for (float a = 0; a<M_PI; a += M_PI / 10) 40 40 { 41 Pt3D next(2-2*cos(a),0,2*sin(a));42 if (a>0)41 Pt3D next(2 - 2 * cos(a), 0, 2 * sin(a)); 42 if (a>0) 43 43 { 44 p2=m->addNewPart(Part::SHAPE_CYLINDER);45 p2->setPositionAndRotationFromAxis(prev,next);46 p2->scale=Pt3D(prev.distanceTo(next)*0.5,0.05,0.05);// distance*0.5 because scale is "radius", not cylinder length44 p2 = m.addNewPart(Part::SHAPE_CYLINDER); 45 p2->setPositionAndRotationFromAxis(prev, next); 46 p2->scale = Pt3D(prev.distanceTo(next)*0.5, 0.05, 0.05);// distance*0.5 because scale is "radius", not cylinder length 47 47 48 m->addNewJoint(p1,p2,Joint::SHAPE_SOLID); //all parts must be connected48 m.addNewJoint(p1, p2, Joint::SHAPE_SOLID); //all parts must be connected 49 49 } 50 p1=p2;51 prev=next;50 p1 = p2; 51 prev = next; 52 52 } 53 53 54 m->close();55 puts((const char*)m->getF0Geno().toString());56 // the genotype can be fed directly to the genotype viewer, like this:57 // part_shapes | theater -g -vpart_shapes -54 m.close(); 55 puts((const char*)m.getF0Geno().toString()); 56 // the genotype can be fed directly to the genotype viewer, like this: 57 // part_shapes | theater -g -vpart_shapes - 58 58 }
Note: See TracChangeset
for help on using the changeset viewer.