00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _RANDOMPOINTSGENERATOR_H_
00022 #define _RANDOMPOINTSGENERATOR_H_
00023
00024 #include "../pointsgenerator.h"
00025
00026 #include <QtCore/QThread>
00027
00031 class RandomPointsGenerator : public PointsGenerator
00032 {
00033 protected:
00034 quint64 m_points_generated;
00035 qreal m_inv_rand_max;
00036
00037 public:
00038 RandomPointsGenerator( const FractalParameters * _fractal_parameters )
00039 : PointsGenerator( _fractal_parameters )
00040 {
00041 m_points_generated = 0;
00042 }
00043
00044 qreal progress() const
00045 {
00046 return m_points_generated / (qreal)m_fractal_parameters->pointsNumber();
00047 }
00048
00049 void init()
00050 {
00051 qsrand( (unsigned int)QThread::currentThreadId() );
00052
00053 m_inv_rand_max = 1.0 / (qreal)((quint64)RAND_MAX+2);
00054 m_points_generated = 0;
00055 }
00056
00057 Point next()
00058 {
00059 m_points_generated++;
00060 return Point( (qrand()+1) * m_inv_rand_max * m_fractal_parameters->zone().width() + m_fractal_parameters->zone().x()
00061 , (qrand()+1) * m_inv_rand_max * m_fractal_parameters->zone().height() + m_fractal_parameters->zone().y() );
00062 }
00063
00064 bool end()
00065 {
00066 return m_points_generated == m_fractal_parameters->pointsNumber();
00067 }
00068 };
00069
00070 #endif //_RANDOMPOINTSGENERATOR_H_