示例#1
0
void PaintWidget::move(QVariantList list, QVariantList idlist) {
	if ( m_fixed )
		return;
		
	if (list.size() == 0) {
		return;
	}

	QMap<int, QPointF> touch_last_pos = touch_current_pos;
	
	for (unsigned i = 0; i < list.size(); i++) {
		touch_current_pos[idlist[i].toInt()] = list[i].value<QPointF>();
	}
	
	QPointF average = calcAverage(touch_current_pos);
	QPointF last_average = calcAverage(touch_last_pos);
	QPointF start_average = calcAverage(touch_start_pos);
	
	int minDiff = 7;
	if ( abs( average.x() - start_average.x() ) + abs( average.y() - start_average.y() ) > minDiff )
		m_drag = true;

	IRenderer* renderer = MapData::instance()->renderer();
	if ( renderer == NULL )
		return;
	
	m_request.center = renderer->Move( average.x() - last_average.x(), average.y() - last_average.y(), m_request );
	
	setKeepPositionVisible( false );
	
	if (touch_current_pos.size() > 1) {
		QPointF first = *touch_current_pos.begin();
		QPointF second = *(touch_current_pos.begin()+1);
		qreal distance = sqrt(pow(first.x() - second.x(), 2) + pow(first.y() - second.y(), 2));
		
		QPointF first_start = *touch_start_pos.begin();
		QPointF second_start = *(touch_start_pos.begin()+1);
		distance /= sqrt(pow(first_start.x() - second_start.x(), 2) + pow(first_start.y() - second_start.y(), 2));
		
		m_request.center = renderer->Move( width() / 2 - average.x(), height() / 2 - average.y(), m_request );
		m_request.zoom = m_startZoom + log2(distance);
		if ( m_request.zoom > m_maxZoom ) {
			m_request.zoom = m_maxZoom;
		}
		if ( m_request.zoom < 0 ) {
			m_request.zoom = 0;
		}
		m_request.virtualZoom = m_request.zoom - (int) m_request.zoom + 1;
		m_request.center = renderer->Move( average.x() - width() / 2, average.y() - height() / 2, m_request );
		emit zoomChanged( m_request.zoom );
	}
	
	update();
}
示例#2
0
QVis RegionService::calcAverages(const MatSet& matSet, QLPs regions) {
    QVis averages;
    for(QLP region : regions) {
        averages.push_back(calcAverage(matSet, region));
    }
    return averages;
}
void main(void)
{
	int test1, test2, test3, test4, test5;

	getValues(test1, test2, test3, test4, test5);
	calcAverage(test1, test2, test3, test4, test5);
}
void RunningSample::addSample( float newValue )
{
  float oldValue;

  oldValue = addValue( newValue );
  calcAverage( oldValue, newValue );


}
int main() {

  int staedte[ANZAHL_STAEDTE][ANZAHL_MESSUNGEN];

  // Eingabe Temperatur Werte
  for(int i = 0; i < ANZAHL_STAEDTE; i++)
  {
    for(int j = 0; j < ANZAHL_MESSUNGEN; j++)
    {
      printf("Stadt %i: Wert %i/%i\n> ", i+1, j+1, ANZAHL_MESSUNGEN);
      scanf("%d: ", &staedte[i][j]);
    }
  }

  for(int i = 0; i < ANZAHL_STAEDTE; i++)
  {
    printf("Stadt %i: Durchschnittstemperatur = %.2f °C\n",
      i,
      calcAverage(staedte[i]));
  }


  return 0;
}
示例#6
0
QVi RegionService::calcAverage(Mat srcBGRImg, QLP region) {
    MatSet matSet(srcBGRImg);
	return calcAverage(matSet, region);
}
示例#7
0
文件: lab.cpp 项目: tmramalho/rods
void lab::simMeas() {

	int numSamples = 200;
	//alloc arrays
	int *eArray = new int[numSamples];
	double *mrArray = new double[numSamples];
	double *lArray = new double[numSamples];
	double *ldArray = new double[numSamples];
	double *lmArray = new double[numSamples];
	len *xLen, *yLen, *totLen;
	std::fstream filestr;

	for(double T = Ti; T <= Tf; T += dT) {
		curSim = new rods(size, (double)1/T, dens);
		xLen = new len(size);
		yLen = new len(size);
		totLen = new len(size);
		int n = 0;
		std::cout << "Looking up correlation time for " << T << "..." << std::endl;
		int ctime = (int) floor(findCorrTime(T));

		if(ctime == 0) {
			std::cout << "Failed! Using ";
			ctime = 100;
		} else {
			std::cout << "Got it! Using ";
		}

		int runtime = numSamples * 2 * ctime;

		std::cout << ctime << " " << runtime << std::endl;
		std::cout << "Waiting for equilibrium..." << std::endl;
		std::cout << "I had to wait: " << waitForEquilibrium() << std::endl;
		std::cout << "Simulating..." << std::endl;

		for(int i = 0; i < runtime; i++) {
			curSim->run();
			if(i % (2*ctime) == 0) {
				eArray[n] = curSim->getEnergy();
				mrArray[n] = curSim->getMRatio();
				lArray[n] = curSim->getAvLen();
				if(curSim->getPredDirection() == 1) {
					ldArray[n] = curSim->getAvxLen();
					lmArray[n] = curSim->getAvyLen();
				} else if(curSim->getPredDirection() == 2) {
					ldArray[n] = curSim->getAvxLen();
					lmArray[n] = curSim->getAvyLen();
				}
				int *xdist = curSim->getXDist();
				int *ydist = curSim->getYDist();
				totLen->addNewMeasurement(sumDists(xdist, ydist));
				xLen->addNewMeasurement(curSim->getXDist());
				yLen->addNewMeasurement(curSim->getYDist());
				std::cout << "Measured! At " << i << std::endl;
				std::cout << eArray[n] << "; " << mrArray[n] << "; " << lArray[n] << std::endl;
				//if(mrArray[n] == 1) saveState(T+i);
				n++;
			}
		}

		double avE = calcAverage(eArray, numSamples);
		double avsqE = calcSqAverage(eArray, numSamples);
		double numParticles = (double) size * size * dens;
		double c = (avsqE - avE*avE) / ( numParticles * T * T);
		double avM = calcAverage(mrArray, numSamples);
		double avsqM = calcSqAverage(mrArray, numSamples);
		double avl = calcAverage(lArray, numSamples);
		double avsql = calcSqAverage(lArray, numSamples);
		double avld = calcAverage(ldArray, numSamples);
		double avlm = calcAverage(lmArray, numSamples);

		std::cout << "<Energy> = " << avE << std::endl;
		std::cout << "<Energy^2> = " << avsqE << std::endl;
		std::cout << "Specific heat = " << c << std::endl;
		std::cout << "<Mratio> = " << avM << std::endl;
		std::cout << "<l> = " << avl << std::endl;

		/**********************************
		* Write averages of all parameters
		**********************************/

		filestr.open("master.dat", std::fstream::out | std::fstream::app);

		if(stat("master.dat", &fileinfo) == 0) {
			//quick check to see if master.dat is empty -> write header
			//filestr << "T;rho;<E>;<E^2>;c;<M>;<M^2>;<l>;<l^2>;";
			//filestr << "<l_dominant>;<l_minority>" << std::endl;
		}

		filestr << T << ";" << dens << ";" << avE << ";" << avsqE << ";";
		filestr << c << ";" << avM << ";" << avsqM << ";" << avl << ";";
		filestr << avsql << ";" << avld << ";" << avlm << std::endl;
		filestr.close();

		/**********************************
		* Write average length distribution
		**********************************/
		filestr.open("dists.dat", std::fstream::out | std::fstream::app);

		if(stat("dists.dat", &fileinfo) == 0) {
			//quick check to see if master.dat is empty -> write header
			filestr << "T;<{l_x}_i>;<{l_y}_i>" << std::endl;
		}

		filestr << T << std::endl;
		for(int i = 0; i < size; i++)
			filestr << totLen->getAvLen(i) << ";";
		filestr << std::endl;
		for(int i = 0; i < size; i++)
			filestr << xLen->getAvLen(i) << ";";
		filestr << std::endl;
		for(int i = 0; i < size; i++)
			filestr << yLen->getAvLen(i) << ";";
		filestr << std::endl;

		filestr.close();

		#ifdef VERBOSE
		saveState(T);
		#endif

		delete curSim;
		delete xLen;
		delete yLen;
	}

	delete[] eArray;
	delete[] mrArray;
	delete[] lArray;
	delete[] ldArray;
	delete[] lmArray;
}