旋轉演算法
一條直線透過端點繞一個半徑為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();
}
好買網( ) IT技術交易平臺
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70008680/viewspace-2838750/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 每日一道演算法:旋轉陣列演算法陣列
- 字串相關演算法1-字串旋轉字串演算法
- 旋轉變換(一)旋轉矩陣矩陣
- 旋轉字串字串
- 旋轉相簿
- 將圖片旋轉(這裡不是旋轉imageView)View
- 三維座標系旋轉——旋轉矩陣到旋轉角之間的換算矩陣
- 旋轉矩陣矩陣
- 矩陣旋轉矩陣
- Activity的旋轉
- 三維旋轉:旋轉矩陣,尤拉角,四元數矩陣
- CSS3動畫(360度旋轉、旋轉放大、放大、移動)CSSS3動畫
- 利用三維旋轉矩陣在空間中旋轉平面矩陣
- 演算法學習-查詢旋轉陣列的最小值演算法陣列
- | / - 的旋轉效果實現(轉)
- SVG矩形旋轉動畫SVG動畫
- 卡片旋轉動畫效果動畫
- ubuntu螢幕旋轉Ubuntu
- 旋轉連結串列
- 剛體在三維空間的旋轉(關於旋轉矩陣、DCM、旋轉向量、四元數、尤拉角)矩陣
- Python3實現旋轉陣列的3種演算法Python陣列演算法
- 如何實現圖片的3D旋轉,而且是不停旋轉?3D
- canvas 圍繞中心旋轉Canvas
- orientationchange 螢幕旋轉事件事件
- SVG 旋轉文字字元SVG字元
- LeetCode:旋轉影像LeetCode
- html中圖片旋轉HTML
- 旋轉矩陣推導矩陣
- 箭頭旋轉程式碼
- cad旋轉的快捷鍵命令 cad旋轉方向怎麼調整
- 簡單的css3頭像旋轉與3D旋轉效果CSSS33D
- 記一道有意思的演算法題Rotate Image(旋轉影象)演算法
- 三維空間 旋轉矩陣 四元數 尤拉角 相互轉換 組合旋轉矩陣
- 快影app怎麼旋轉影片?快影影片瞬間旋轉的方法教程APP
- 怎麼旋轉圖片?BenVista PhotoZoom Pro旋轉圖片的方法OOM
- 三維重建學習(1):基礎知識:旋轉矩陣與旋轉向量矩陣
- CAD如何使用旋轉命令
- Android 禁止螢幕旋轉Android