ساخت دوایر متحد المرکز - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

ساخت دوایر متحد المرکز

0 امتیاز
سلام دوستان. قصد دارم همچین چیزی طراحی کنم . n تا دایره متحد المرکز که هر کدام از آنها دارای سرعت چرخش متفاوتی با دیگر دایره ها داره.
 
ممنون میشم اگر راهنماییم کنید با OpenCV راهنماییم کنید.
 
ممنون
 
سوال شده آذر 26, 1392  بوسیله ی lavashak (امتیاز 65)   4 8 14
دوباره تگ گذاری شد بهمن 22, 1392 بوسیله ی BlueBlade

1 پاسخ

+2 امتیاز
 
بهترین پاسخ

از ellipse برای کشیدنش استفاده کنید.

 

#include <cv.h>
#include <highgui.h>
using namespace cv;
class BhCir{
public:
	BhCir(int thickness, Point center, int size, int len,Scalar color,int step,int start_pos):
	  thickness_(thickness), center_(center), size_(size), len_(len),color_(color),step_(step),cur_pos_(start_pos),step_counter_(0){}
	int thickness_;
	int size_;
	int len_;
	Scalar color_;
	int step_;
	int step_counter_;
	int cur_pos_;
	Point center_;
	void draw(Mat &img){
	  cv::ellipse(img,center_,Size(size_,size_),0,cur_pos_,cur_pos_+len_,color_,thickness_);
	}
	void nextStep(){
        step_counter_ ++;
		if (step_counter_ == step_)
		{
			cur_pos_ +=5;
			if (cur_pos_ > 360)
				cur_pos_ = cur_pos_ % 360;
			step_counter_ = 0;

		}
	}
};
int main(int argc, char** argv)
{
	Size size(500,500);
	Mat img(size,CV_8UC3,Scalar::all(255));
	Point center(size.width/2,size.height/2);

    vector<BhCir> cirs;
	for (int cir_size = 200;cir_size >0 ;cir_size -=50)
	{
        cirs.push_back(BhCir(20,center,cir_size,270,Scalar(0,255,0),(rand())%10 + 5,rand()%360));
	}
	
	int key;
	do{
		img.setTo(Scalar::all(255));
        for (int i=0; i < cirs.size();i++)
		{
			cirs[i].nextStep();
			cirs[i].draw(img);
			
		}
		imshow("view",img);
		key = waitKey(1);
	}while(key !=27);

	imshow("view",img);
	waitKey(0);
	return 0;
}

 

پاسخ داده شده آذر 26, 1392 بوسیله ی مصطفی ساتکی (امتیاز 21,998)   24 34 75
انتخاب شد آذر 27, 1392 بوسیله ی lavashak
...