一条直线通过端点绕一个半径为200的圆的圆心进行360度的旋转,在旋转的期间直线的端点一直在圆环上
#define _CRT_SECURE_NO_WARNINGS #include "graphics.h" #define _USE_MATH_DEFINES #include
struct Point { double x; double y;
Point( void ) : x(), y()
{
}
Point( double x, double y ) : x(x), y(y)
{
}
Point translation( const Point& offset ) const // 平移
{
return Point( x+offset.x, y+offset.y );
}
Point rotation( const Point& anchor, double angle ) const // 旋转
{
double radian = fmod(angle,360) * M_PI/180;
return Point( cos(radian)*(x-anchor.x) - sin(radian)*(y-anchor.y) + anchor.x
, cos(radian)*(y-anchor.y) + sin(radian)*(x-anchor.x) + anchor.y );
}
Point scale( const Point& anchor, double ratio ) const // 缩放
{
return Point( (x-anchor.x)*ratio+anchor.x, (y-anchor.y)*ratio+anchor.y );
}
};
struct Line { Point a; Point b;
Line( void )
{
}
Line( const Point& a, const Point& b ) : a(a), b(b)
{
}
Line translation( const Point& offset ) const // 平移
{
return Line( a.translation(offset), b.translation(offset) );
}
Line rotation( const Point& anchor, double angle ) const // 旋转
{
return Line( a.rotation(anchor,angle), b.rotation(anchor,angle) );
}
Line scale( const Point& anchor, double ratio ) const // 缩放
{
return Line( a.scale(anchor,ratio), b.scale(anchor,ratio) );
}
void Draw( COLORREF color=WHITE, int style=PS_DOT, int thickness=1 ) const
{
setlinecolor( color );
setlinestyle( style, thickness );
line( a.x, a.y, b.x, b.y );
}
};
struct Circle { Point center; double radius;
Circle( void ) : radius()
{
}
Circle( const Point& center, double radius ) : center(center), radius(radius)
{
}
void Draw( COLORREF color=WHITE, int style=PS_DOT, int thickness=1 ) const
{
setlinecolor( color );
setlinestyle( style, thickness );
circle( center.x, center.y, radius );
}
};
#include
int main( void ) { initgraph( 640, 480 );
Circle( Point(320,240), 200 ).Draw( WHITE, PS_DOT, 2 );
Line segment = Line( Point(320,40), Point(320,35) ).scale( Point(320,40), 10 );
for( double angle=0; angle<360; angle+=1 )
{
segment.rotation( Point(320,240), angle ).Draw( WHITE, PS_SOLID, 1 );
}
_getch();
closegraph();
} 好买网www.goodmai.com IT技术交易平台