本文整理汇总了C++中ON_Interval::Set方法的典型用法代码示例。如果您正苦于以下问题:C++ ON_Interval::Set方法的具体用法?C++ ON_Interval::Set怎么用?C++ ON_Interval::Set使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ON_Interval
的用法示例。
在下文中一共展示了ON_Interval::Set方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: RunCommand
CRhinoCommand::result CCommandSampleSubCrvLength::RunCommand( const CRhinoCommandContext& context )
{
CRhinoGetObject go;
go.SetCommandPrompt( L"Select curve to measure" );
go.SetGeometryFilter( CRhinoGetObject::curve_object );
go.GetObjects( 1, 1 );
if( go.CommandResult() != CRhinoCommand::success )
return go.CommandResult();
const CRhinoObjRef& ref = go.Object(0);
const ON_Curve* crv = ref.Curve();
if( !crv )
return CRhinoCommand::failure;
CRhinoGetPoint gp;
gp.SetCommandPrompt( L"First point on curve" );
gp.Constrain( *crv );
gp.GetPoint();
if( gp.CommandResult() != CRhinoCommand::success )
return gp.CommandResult();
double t0;
if( !crv->GetClosestPoint(gp.Point(), &t0) )
return CRhinoCommand::nothing;
gp.SetCommandPrompt( L"Second point on curve" );
gp.GetPoint();
if( gp.CommandResult() != CRhinoCommand::success )
return gp.CommandResult();
double t1;
if( !crv->GetClosestPoint(gp.Point(), &t1) )
return CRhinoCommand::nothing;
ON_Interval dom;
if( t0 < t1 )
dom.Set( t0, t1 );
else
dom.Set( t1, t0 );
double len;
if( crv->GetLength(&len, 0.0, &dom) )
RhinoApp().Print( L"Subcurve length = %f.\n", len );
else
RhinoApp().Print( L"Unable to calculate length of subcurve.\n" );
return CRhinoCommand::success;
}
示例2: Domain
ON_BOOL32
ON_Surface::IsClosed(int dir) const
{
ON_Interval d = Domain(dir);
if ( d.IsIncreasing() && Dimension() <= 3 ) {
const int span_count = SpanCount(dir?0:1);
const int span_degree = Degree(dir?0:1);
if ( span_count > 0 && span_degree > 0 )
{
ON_SimpleArray<double> s(span_count+1);
s.SetCount(span_count+1);
int n = 2*span_degree+1;
double delta = 1.0/n;
ON_3dPoint P, Q;
P.Zero();
Q.Zero();
int hintP[2] = {0,0};
int hintQ[2] = {0,0};
double *u0, *u1, *v0, *v1;
double t;
ON_Interval sp;
if ( dir ) {
v0 = &d.m_t[0];
v1 = &d.m_t[1];
u0 = &t;
u1 = &t;
}
else {
u0 = &d.m_t[0];
u1 = &d.m_t[1];
v0 = &t;
v1 = &t;
}
if ( GetSpanVector( dir?0:1, s.Array() ) )
{
int span_index, i;
for ( span_index = 0; span_index < span_count; span_index++ ) {
sp.Set(s[span_index],s[span_index+1]);
for ( i = 0; i < n; i++ ) {
t = sp.ParameterAt(i*delta);
if ( !Evaluate( *u0, *v0, 1, 3, P, 0, hintP ) )
return false;
if ( !Evaluate( *u1, *v1, 2, 3, Q, 0, hintQ ) )
return false;
if ( false == ON_PointsAreCoincident( 3, 0, &P.x, &Q.x ) )
return false;
}
}
return true;
}
}
}
return false;
}
示例3: SetProxyCurve
void ON_CurveProxy::SetProxyCurve( const ON_Curve* real_curve,
ON_Interval real_curve_subdomain)
{
if ( real_curve != this )
{
// setting m_real_curve=0 prevents crashes if user has deleted
// the "real" curve before calling SetProxyCurve().
m_real_curve = 0;
DestroyCurveTree();
m_real_curve_domain.Destroy();
m_this_domain.Destroy();
m_bReversed = false;
}
else
{
// If you are debugging and end up here, there is a 99% chance
// that you passed the wrong pointer to SetProxyCurve().
// However, I will assume you really meant to use a fancy self
// reference to adjust domains.
if ( IsValid() && m_this_domain.Includes(real_curve_subdomain) )
{
real_curve = m_real_curve;
// because input real_curve_subdomain was with respect to "this".
double r0 = RealCurveParameter(real_curve_subdomain[0]);
double r1 = RealCurveParameter(real_curve_subdomain[1]);
real_curve_subdomain.Set(r0,r1);
}
else
{
real_curve = 0;
}
// setting m_real_curve=0 prevents crashes if user has deleted
// the "real" curve before calling SetProxyCurve().
m_real_curve = 0;
DestroyCurveTree();
}
m_real_curve = real_curve;
if ( m_real_curve )
{
SetProxyCurveDomain( real_curve_subdomain );
}
else
{
m_real_curve_domain = real_curve_subdomain;
}
m_this_domain = m_real_curve_domain;
}