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


C++ Vector4::PerspectiveProject方法代码示例

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


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

示例1: From

SBezier SBezier::From(Vector4 p0, Vector4 p1) {
    SBezier ret;
//**walter steffe--begin
    Vector pp0=p0.PerspectiveProject();
    Vector pp1=p1.PerspectiveProject();
    TColgp_Array1OfPnt AP(0,1);
    TColStd_Array1OfReal AW(0,1);
    AW.SetValue(0,p0.w);
    AW.SetValue(1,p1.w);
    AP.SetValue(0,gp_Pnt(pp0.x,pp0.y,pp0.z));
    AP.SetValue(1,gp_Pnt(pp1.x,pp1.y,pp1.z));
    gp_Pnt P0=AP.Value(0);
    gp_Pnt P1=AP.Value(1);
    double W0=AW.Value(0);
    double W1=AW.Value(1);
    Vector dpp=pp0.Minus(pp1);
    if(dpp.Magnitude() > 1.e-10)
      ret.hCurve=new Geom_BezierCurve(AP, AW);
//      ret.hCurve=new Geom_BezierCurve(AP);
//**walter steffe--end
    ZERO(&ret);
    ret.deg = 1;
    ret.weight[0] = p0.w;
    ret.ctrl  [0] = p0.PerspectiveProject();
    ret.weight[1] = p1.w;
    ret.ctrl  [1] = p1.PerspectiveProject();
    return ret;
}
开发者ID:wsteffe,项目名称:solvespace_occ,代码行数:28,代码来源:curve.cpp

示例2: From

SBezier SBezier::From(Vector4 p0, Vector4 p1) {
    SBezier ret;
    ZERO(&ret);
    ret.deg = 1;
    ret.weight[0] = p0.w;
    ret.ctrl  [0] = p0.PerspectiveProject();
    ret.weight[1] = p1.w;
    ret.ctrl  [1] = p1.PerspectiveProject();
    return ret;
}
开发者ID:BBBSnowball,项目名称:python-solvespace,代码行数:10,代码来源:curve.cpp

示例3: InPerspective

//-----------------------------------------------------------------------------
// Apply a perspective transformation to a rational Bezier curve, calculating
// the new weights as required.
//-----------------------------------------------------------------------------
SBezier SBezier::InPerspective(Vector u, Vector v, Vector n,
                               Vector origin, double cameraTan)
{
    Quaternion q = Quaternion::From(u, v);
    q = q.Inverse();
    // we want Q*(p - o) = Q*p - Q*o
    SBezier ret = this->TransformedBy(q.Rotate(origin).ScaledBy(-1), q, 1.0);
    int i;
    for(i = 0; i <= deg; i++) {
        Vector4 ct = Vector4::From(ret.weight[i], ret.ctrl[i]);
        // so the desired curve, before perspective, is
        //    (x/w, y/w, z/w)
        // and after perspective is
        //    ((x/w)/(1 - (z/w)*cameraTan, ...
        //  = (x/(w - z*cameraTan), ...
        // so we want to let w' = w - z*cameraTan
        ct.w = ct.w - ct.z*cameraTan;

        ret.ctrl[i] = ct.PerspectiveProject();
        ret.weight[i] = ct.w;
    }
    return ret;
}
开发者ID:BBBSnowball,项目名称:python-solvespace,代码行数:27,代码来源:curve.cpp


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