当前位置: 首页>>代码示例>>C++>>正文


C++ Body::addMeshGeometry方法代码示例

本文整理汇总了C++中opensim::Body::addMeshGeometry方法的典型用法代码示例。如果您正苦于以下问题:C++ Body::addMeshGeometry方法的具体用法?C++ Body::addMeshGeometry怎么用?C++ Body::addMeshGeometry使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在opensim::Body的用法示例。


在下文中一共展示了Body::addMeshGeometry方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: simulateMuscle

/*==============================================================================
Main test driver to be used on any muscle model (derived from Muscle) so new
cases should be easy to add currently, the test only verifies that the work
done by the muscle corresponds to the change in system energy.

TODO: Test will fail wih prescribe motion until the work done by this
constraint is accounted for.
================================================================================
*/
void simulateMuscle(
    const Muscle &aMuscModel,
    double startX,
    double act0,
        const Function *motion,  // prescribe motion of free end of muscle
        const Function *control, // prescribed excitation signal to the muscle
        double integrationAccuracy,
        int testType,
        double testTolerance,
        bool printResults)
{
    string prescribed = (motion == NULL) ? "." : " with Prescribed Motion.";

    cout << "\n******************************************************" << endl;
    cout << "Test " << aMuscModel.getConcreteClassName()
         << " Model" << prescribed << endl;
    cout << "******************************************************" << endl;
    using SimTK::Vec3;

    //==========================================================================
    // 0. SIMULATION SETUP: Create the block and ground
    //==========================================================================

    // Define the initial and final simulation times
    double initialTime = 0.0;
    double finalTime = 4.0;

    //Physical properties of the model
    double ballMass = 10;
    double ballRadius = 0.05;
    double anchorWidth = 0.1;

    // Create an OpenSim model
    Model model;

    double optimalFiberLength = aMuscModel.getOptimalFiberLength();
    double pennationAngle     = aMuscModel.getPennationAngleAtOptimalFiberLength();
    double tendonSlackLength  = aMuscModel.getTendonSlackLength();

    // Use a copy of the muscle model passed in to add path points later
    PathActuator *aMuscle = aMuscModel.clone();

    // Get a reference to the model's ground body
    Ground& ground = model.updGround();
    ground.addMeshGeometry("box.vtp");

    OpenSim::Body * ball = new OpenSim::Body("ball",
        ballMass,
        Vec3(0),
                        ballMass*SimTK::Inertia::sphere(ballRadius));

    ball->addMeshGeometry("sphere.vtp");
    // ball connected  to ground via a slider along X
    double xSinG = optimalFiberLength*cos(pennationAngle) + tendonSlackLength;

    SliderJoint* slider = new SliderJoint("slider",
        ground,
        Vec3(anchorWidth / 2 + xSinG, 0, 0),
        Vec3(0),
        *ball,
        Vec3(0),
                        Vec3(0));

    CoordinateSet& jointCoordinateSet = slider->upd_CoordinateSet();
        jointCoordinateSet[0].setName("tx");
        jointCoordinateSet[0].setDefaultValue(1.0);
    jointCoordinateSet[0].setRangeMin(0);
        jointCoordinateSet[0].setRangeMax(1.0);

    if (motion != NULL){
        jointCoordinateSet[0].setPrescribedFunction(*motion);
        jointCoordinateSet[0].setDefaultIsPrescribed(true);
    }
    // add ball to model
    model.addBody(ball);
    model.addJoint(slider);


    //==========================================================================
    // 1. SIMULATION SETUP: Add the muscle
    //==========================================================================

    //Attach the muscle
    const string &actuatorType = aMuscle->getConcreteClassName();
    aMuscle->setName("muscle");
    aMuscle->addNewPathPoint("muscle-box", ground, Vec3(anchorWidth / 2, 0, 0));
    aMuscle->addNewPathPoint("muscle-ball", *ball, Vec3(-ballRadius, 0, 0));

    ActivationFiberLengthMuscle_Deprecated *aflMuscle
        = dynamic_cast<ActivationFiberLengthMuscle_Deprecated *>(aMuscle);
    if (aflMuscle){
//.........这里部分代码省略.........
开发者ID:fcanderson,项目名称:opensim-core,代码行数:101,代码来源:testProbes.cpp


注:本文中的opensim::Body::addMeshGeometry方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。