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


C++ PointSet::interpolate方法代码示例

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


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

示例1: CalcTrack

Point3D CalcTrack(
        const Point2D&  towerPosition,
        double          timeStep,
        const PointSet& altitudeTrack,
        double          fixRange,
        double          fixBearing,
        double          elapsedTime,
        double          heading,
        double          initialBankRate,
        double          bankRateAccel,
        double          windHeading,
        const PointSet& windSpeeds,
        const PointSet& planeSpeeds,

        Track3D*        track
        )
{
    if(track != NULL)
    {
        track->clear();
    }

    // Set up the initial conditions.
    double x        = towerPosition.x_ + fixRange * sin(fixBearing);
    double y        = towerPosition.y_ + fixRange * cos(fixBearing);
    double z        = 0.0;
    double time     = 0.0;
    double bankRate = initialBankRate;
    windHeading     = (M_PI / -2) - windHeading; // reversed as wind direction is where the wind is FROM
    double sinWind  = sin(windHeading);
    double cosWind  = cos(windHeading);

    while(time < elapsedTime)
    {
        // Get the time for this point.
        double thisStep = timeStep;
        double newTime  = time + timeStep;
        if(newTime > elapsedTime)
        {
            // Last step is incomplete.
            thisStep = elapsedTime - time;
            newTime  = elapsedTime;
        }
        time = newTime;

        // Interpolate the plane characteristics at this time.
        double altitude   = altitudeTrack.interpolate(time);
        double windSpeed  = windSpeeds.interpolate(altitude);
        double planeSpeed = planeSpeeds.interpolate(time);

        // Update the simulated plane location.
        heading    += bankRate * thisStep;
        bankRate   += bankRateAccel * thisStep;
        double hdg = (M_PI / 2) - heading;
        z          = altitude;
        x          += thisStep * (planeSpeed * cos(hdg) + windSpeed * cosWind);
        y          += thisStep * (planeSpeed * sin(hdg) + windSpeed * sinWind);

        if(track != NULL)
        {
            track->addPoint(x, y, z);
        }
    }

    return Point3D(x, y, z);
}
开发者ID:p-horrocks,项目名称:plane-sailing,代码行数:66,代码来源:util.cpp


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