📄 acontourcollection.cpp
字号:
t_step = interval / t_step;
}
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement * X_Mul );
FirstPt.y = static_cast<int>( atan( displacement ) * Y_Mul );
cvSeqPush( Seq, &FirstPt );
for( t = displacement - PI() ; t < interval + displacement ; t += t_step )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t * X_Mul );
FirstPt.y = static_cast<int>( atan( t ) * Y_Mul );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* arctan()
/****************************************************************/
/**************** hyperbolic cosine *************************/
/****************************************************************/
CvSeq* ch( CvMemStorage* Storage )
{
/////
int Max_Interval = 5;
/////
double displacement = 0.1;
double interval = 0.1;
double t;
/////
CvPoint FirstPt, SecondPt;
/////
CvSeq* Seq = NULL;
///////////// create contour //////////
if( !CreateContour( &Seq,CV_SEQ_POLYGON,&Storage) )
{
return NULL;
}
/////////////// initialising /////////
interval = GetVald( 2 * Max_Interval );
displacement = GetVald( 2 * Max_Interval - interval );
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement );
FirstPt.y = static_cast<int>( cosh( displacement ) );
cvSeqPush( Seq, &FirstPt );
for( t = displacement - Max_Interval; t < interval + displacement ; t++ )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t );
FirstPt.y = static_cast<int>( cosh( t ) );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* ch()
/****************************************************************/
/**************** exp *************************/
/****************************************************************/
CvSeq* Exp( CvMemStorage* Storage )
{
/////
int X_Mul_Max = 5;
int Y_Mul_Max = 5;
int Max_Interval = 1;
/////
int Y_Mul = 1;
int X_Mul = 1;
double displacement = 0.1;
double interval = 0.1;
double t, t_step;
/////
CvPoint FirstPt, SecondPt;
/////
CvSeq* Seq = NULL;
///////////// create contour //////////
if( !CreateContour( &Seq,CV_SEQ_POLYGON,&Storage) )
{
return NULL;
}
/////////////// initialising /////////
t_step = 0;
while( t_step == 0. )
{
Y_Mul = GetVali( Y_Mul_Max ,1);
X_Mul = GetVali( X_Mul_Max ,1);
interval = GetVald( 2 * Max_Interval );
displacement = GetVald( 2 * Max_Interval - interval );
t_step = (int)( interval * X_Mul );
t_step = interval / t_step;
}
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement * X_Mul );
FirstPt.y = static_cast<int>( exp( displacement ) * Y_Mul );
cvSeqPush( Seq, &FirstPt );
for( t = displacement - Max_Interval ; t < interval + displacement ; t += t_step )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t * X_Mul );
FirstPt.y = static_cast<int>( exp( t ) * Y_Mul );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* Exp()
/****************************************************************/
/**************** floor *************************/
/****************************************************************/
CvSeq* Floor( CvMemStorage* Storage )
{
/////
int X_Mul_Max = 5;
int Y_Mul_Max = 5;
int Max_Interval = 10;
/////
int Y_Mul = 1;
int X_Mul = 1;
double displacement = 0.1;
double interval = 0.1;
double t, t_step;
/////
CvPoint FirstPt, SecondPt;
/////
CvSeq* Seq = NULL;
///////////// create contour //////////
if( !CreateContour( &Seq,CV_SEQ_POLYGON,&Storage) )
{
return NULL;
}
/////////////// initialising /////////
t_step = 0;
while( t_step == 0. )
{
Y_Mul = GetVali( Y_Mul_Max ,1);
X_Mul = GetVali( X_Mul_Max ,1);
interval = GetVald( 2 * Max_Interval );
displacement = GetVald( 2 * Max_Interval - interval );
t_step = (int)( interval * X_Mul );
t_step = interval / t_step;
}
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement * X_Mul );
FirstPt.y = static_cast<int>( floor( displacement ) * Y_Mul );
cvSeqPush( Seq, &FirstPt );
for( t = displacement - Max_Interval ; t < interval + displacement ; t += t_step )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t * X_Mul );
FirstPt.y = static_cast<int>( floor( t ) * Y_Mul );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* Floor()
/****************************************************************/
/**************** log *************************/
/****************************************************************/
CvSeq* Log( CvMemStorage* Storage )
{
/////
int X_Mul_Max = 10;
int Y_Mul_Max = 10;
int Max_Interval = 6;
/////
int Y_Mul = 3;
int X_Mul = 3;
double displacement = 2;
double interval = 1;
double t, t_step;
/////
CvPoint FirstPt, SecondPt;
/////
CvSeq* Seq = NULL;
///////////// create contour //////////
if( !CreateContour( &Seq,CV_SEQ_POLYGON, &Storage) )
{
return NULL;
}
/////////////// initialising /////////
t_step = 0;
while( ( t_step == 0.) || ( displacement == 0. ) )
{
Y_Mul = GetVali( Y_Mul_Max ,1);
X_Mul = GetVali( X_Mul_Max ,1);
interval = GetVald( Max_Interval );
displacement = GetVald( Max_Interval - interval );
t_step = (int)( interval * X_Mul );
t_step = interval / t_step;
}
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement * X_Mul );
FirstPt.y = static_cast<int>( floor( displacement ) * Y_Mul );
cvSeqPush( Seq, &FirstPt );
for( t = displacement ; t < interval + displacement ; t += t_step )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t * X_Mul );
FirstPt.y = static_cast<int>( log( t ) * Y_Mul );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* Log()
/****************************************************************/
/**************** Pow *************************/
/****************************************************************/
CvSeq* Pow( CvMemStorage* Storage )
{
/////
int X_Mul_Max = 5;
int Y_Mul_Max = 5;
int Max_Interval = 10;
int Max_Coeff = 3;
/////
int Y_Mul = 1;
int X_Mul = 1;
double Coeff = 1;
double displacement = 1;
double interval = 5;
double t, t_step;
/////
CvPoint FirstPt, SecondPt;
/////
CvSeq* Seq = NULL;
///////////// create contour //////////
if( !CreateContour( &Seq,CV_SEQ_POLYGON,&Storage) )
{
return NULL;
}
/////////////// initialising /////////
t_step = 0;
while( t_step == 0. )
{
Y_Mul = GetVali( Y_Mul_Max ,1);
X_Mul = GetVali( X_Mul_Max ,1);
Coeff = GetVald( Max_Coeff );
interval = GetVald( Max_Interval );
displacement = GetVald( Max_Interval - interval );
t_step = (int)( interval * X_Mul );
t_step = interval / t_step;
}
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement * X_Mul );
FirstPt.y = static_cast<int>( pow( displacement , Coeff ) * Y_Mul );
cvSeqPush( Seq, &FirstPt );
for( t = displacement ; t < interval + displacement ; t += t_step )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t * X_Mul );
FirstPt.y = static_cast<int>( pow( t , Coeff ) * Y_Mul );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* Pow()
/****************************************************************/
/**************** Sin *************************/
/****************************************************************/
CvSeq* Sin( CvMemStorage* Storage )
{
/////
int X_Mul_Max = 5;
int Y_Mul_Max = 5;
int Max_Interval = 10;
/////
int Y_Mul = 1;
int X_Mul = 1;
double displacement = 0.5;
double interval = 3;
double t, t_step;
/////
CvPoint FirstPt, SecondPt;
/////
CvSeq* Seq = NULL;
///////////// create contour //////////
if( !CreateContour( &Seq,CV_SEQ_POLYGON,&Storage) )
{
return NULL;
}
/////////////// initialising /////////
t_step = 0;
while( t_step == 0. )
{
Y_Mul = GetVali( Y_Mul_Max ,1);
X_Mul = GetVali( X_Mul_Max ,1);
interval = GetVald( Max_Interval );
displacement = GetVald( Max_Interval - interval );
t_step = (int)( interval * X_Mul );
t_step = interval / t_step;
}
//////////// create contour //////////////////////////
FirstPt.x = static_cast<int>( displacement * X_Mul );
FirstPt.y = static_cast<int>( sin( displacement ) * Y_Mul );
cvSeqPush( Seq, &FirstPt );
for( t = displacement ; t < interval + displacement ; t += t_step )
{
SecondPt.x = FirstPt.x;
SecondPt.y = FirstPt.y;
FirstPt.x = static_cast<int>( t * X_Mul );
FirstPt.y = static_cast<int>( sin( t ) * Y_Mul );
Line( SecondPt,FirstPt,Seq,_CV_LINE_PUTENDPT);
}
return Seq;
} // CvSeq* Sin()
/****************************************************************/
/**************** Polinom *************************/
/****************************************************************/
double Pol( double x, double* Coeff, int Max_Power )
{
double val;
if( Coeff == NULL )
{
assert( false );
return 0;
}
val = 0;
for( int i = Max_Power -1 ; i >= 0 ; i-- )
{
val *= x;
val += Coeff[i];
}
return val;
} // double Pol( double x, double* Coeff, int Amount )
CvSeq* Polimon( CvMemStorage* Storage )
{
/////
int X_Mul_Max = 5;
int Y_Mul_Max = 5;
int Max_Interval = 5;
int Max_Power = 4;
int Max_Coeff = 6;
//////
int Power = 0;
double* Coeff = NULL;
/////
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -