Changeset 1045 for cpp/frams/model/geometry/geometryutils.cpp
- Timestamp:
- 12/11/20 20:23:42 (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
cpp/frams/model/geometry/geometryutils.cpp
r1032 r1045 4 4 5 5 #include "geometryutils.h" 6 7 6 #include <math.h> 8 7 … … 409 408 return true; 410 409 } 410 411 void GeometryUtils::addAnchorToModel(Model &model) 412 { 413 Part *part = model.addNewPart(Part::SHAPE_ELLIPSOID); 414 415 part->p = Pt3D(0); 416 part->scale = Pt3D(0.1); 417 part->vcolor = Pt3D(1.0, 0.0, 1.0); 418 419 addAxesToModel(Pt3D(0.5), Orient(Orient_1), Pt3D(0.0), model); 420 } 421 422 void GeometryUtils::addPointToModel(const Pt3D &markerLocation, Model &model) 423 { 424 Part *anchor = model.getPart(0); 425 Part *part = model.addNewPart(Part::SHAPE_ELLIPSOID); 426 427 part->p = Pt3D(markerLocation); 428 part->scale = Pt3D(0.05); 429 part->vcolor = Pt3D(1.0, 1.0, 0.0); 430 431 model.addNewJoint(anchor, part, Joint::SHAPE_FIXED); 432 } 433 434 void GeometryUtils::addAxesToModel(const Pt3D &sizes, const Orient &axes, const Pt3D ¢er, 435 Model &model) 436 { 437 Part *anchor = model.getPart(0); 438 Part *part; 439 440 part = model.addNewPart(Part::SHAPE_CUBOID); 441 part->scale = Pt3D(sizes.x, 0.05, 0.05); 442 part->setOrient(axes); 443 part->p = center; 444 part->vcolor = Pt3D(1.0, 0.0, 0.0); 445 model.addNewJoint(anchor, part, Joint::SHAPE_FIXED); 446 447 part = model.addNewPart(Part::SHAPE_CUBOID); 448 part->scale = Pt3D(0.05, sizes.y, 0.05); 449 part->setOrient(axes); 450 part->p = center; 451 part->vcolor = Pt3D(0.0, 1.0, 0.0); 452 model.addNewJoint(anchor, part, Joint::SHAPE_FIXED); 453 454 part = model.addNewPart(Part::SHAPE_CUBOID); 455 part->scale = Pt3D(0.05, 0.05, sizes.z); 456 part->setOrient(axes); 457 part->p = center; 458 part->vcolor = Pt3D(0.0, 0.0, 1.0); 459 model.addNewJoint(anchor, part, Joint::SHAPE_FIXED); 460 } 461 462 void GeometryUtils::mergeModels(Model &target, Model &source) 463 { 464 Part *targetAnchor = target.getPart(0); 465 Part *sourceAnchor = source.getPart(0); 466 467 target.moveElementsFrom(source); 468 469 target.addNewJoint(targetAnchor, sourceAnchor, Joint::SHAPE_FIXED); 470 } 471 472 double frand(double from, double width) 473 { 474 return from + width * ((rand() % 10000) / 10000.0); 475 } 476 477 void GeometryUtils::randomizePositionScaleAndOrient(Part *part) 478 { 479 part->p = Pt3D(frand(1.5, 1.0), frand(1.5, 1.0), frand(1.5, 1.0)); 480 part->scale = Pt3D(frand(0.1, 0.9), frand(0.1, 0.9), frand(0.1, 0.9)); 481 part->setRot(Pt3D(frand(0.0, M_PI), frand(0.0, M_PI), frand(0.0, M_PI))); 482 }
Note: See TracChangeset
for help on using the changeset viewer.