Ejemplo n.º 1
0
//----------------------------------------------------
void guiQuad::loadSettings(){
	
	string str;
	
	
	for(int i = 0; i < 4; i++){
		
		//These two lines give us:
		// "QUAD_SRC_0"
		// "QUAD_SRC_1" etc...
								
		str = quadName;
		str += ofToString(i);									
																						
		srcZeroToOne[i].x = xml.getValue(str+"_X", srcZeroToOne[i].x);
		srcZeroToOne[i].y = xml.getValue(str+"_Y", srcZeroToOne[i].y);		
		
		if(srcZeroToOne[i].x > 1) srcZeroToOne[i].x = 1;
		if(srcZeroToOne[i].y > 1) srcZeroToOne[i].y = 1;
									
	}
	
	anchorPoint.x = (least(srcZeroToOne[1].x, srcZeroToOne[2].x) + greatest(srcZeroToOne[0].x, srcZeroToOne[3].x))/2;
	anchorPoint.y = (least(srcZeroToOne[2].y, srcZeroToOne[3].y) + greatest(srcZeroToOne[0].y, srcZeroToOne[1].y))/2;
				
}
Ejemplo n.º 2
0
//----------------------------------------------------
bool guiQuad::updatePoint(float x, float y, float offsetX, float offsetY, float width, float height){
	
	//nothing to update
	if(selected == -1) return false;
	
	if(width == 0 || height == 0){
		//dangerous so we ignore :)
		return false;
	}  
	
	if( x < offsetX ) 			x = offsetX;
	if( x > offsetX + width ) 	x = offsetX + width;
	if( y < offsetY ) 			y = offsetY;
	if( y > offsetY + height) 	y = offsetY + height;
	
	//lets get it in range x(0 - width) y(0 - height)
	float px = x - offsetX;
	float py = y - offsetY;
				
	//now get in 0-1 range
	px /= width;
	py /= height;
	
	srcZeroToOne[selected].x 	= px;
	srcZeroToOne[selected].y 	= py;	
	
	srcScaled[selected].x		= px;
	srcScaled[selected].y		= py;
	
	anchorPoint.x = (least(srcZeroToOne[1].x, srcZeroToOne[2].x) + greatest(srcZeroToOne[0].x, srcZeroToOne[3].x))/2;
	anchorPoint.y = (least(srcZeroToOne[2].y, srcZeroToOne[3].y) + greatest(srcZeroToOne[0].y, srcZeroToOne[1].y))/2;
	
	return true;
}
Ejemplo n.º 3
0
int main()
{
  float F_N=0, U_b=0;
  int cur_time=0,T_1=0,n,i,e;
  printf("\nEnter number of servers\n");
  scanf("%d",&n);
  enterdetails(servers,n);
  printf("\n\n The largest stop time is %d\n",greatest(servers,n));
  while(cur_time<=greatest(servers,n))
    {  
      for(i=0;i<n;i++)
	{
	  if(cur_time==servers[i].start_time && cur_time==smallest(servers,n))
	    {
	      T_1=cur_time;
	      U_b+=servers[i].u;
	      servers[i].fn=servers[i].exec_time/servers[i].u;
	    }
	  if(cur_time!=smallest(servers,n)&&cur_time==servers[i].start_time)
	    {
	      F_N+=(cur_time-T_1)/U_b;
	      T_1=cur_time;
	      U_b+=servers[i].u;
	      servers[i].fn=F_N+servers[i].exec_time/servers[i].u;
	    }
	}
      //disp(servers,n);
      fnsorting(servers,n);
      printf("\nTime\t\tServer\t\tfn\t\tF_N\t\tU_b\n");
      for(i=0;i<n;i++)
	{
	  if(servers[i].fn!=0&&servers[i].stop_time>cur_time)
	    {
	      e=servers[i].exec_time;
	      printf("%d\t\t%s\t\t%0.2f\t\t%0.2f\t\t%0.2f\n",cur_time,servers[i].s_name,servers[i].fn,F_N,U_b);
	      if(cur_time<servers[i].stop_time)
		{
		  servers[i].fn+=servers[i].exec_time/servers[i].u;
		}
	      else
		{
		  F_N+=(cur_time-T_1)/U_b;
		  T_1=cur_time;
		  U_b+=servers[i].u;
		}
	      break;
	    }
	}
  //disp(servers,n);
      cur_time+=e;
    }
}
Ejemplo n.º 4
0
//----------------------------------------------------
//these should be in the range x(0-maxX) y(0-maxH) 
//with 	width  = maxW
//		height = maxH 
void guiQuad::setQuadPoints( ofxPoint2f * inPts ){
		
	for(int i = 0; i < 4; i++){
		srcZeroToOne[i].x	= inPts[i].x;
		srcZeroToOne[i].y	= inPts[i].y;
		
		if(srcZeroToOne[i].x > 1) srcZeroToOne[i].x = 1;
		if(srcZeroToOne[i].y > 1) srcZeroToOne[i].y = 1;
	}
	
	anchorPoint.x = (least(srcZeroToOne[1].x, srcZeroToOne[2].x) + greatest(srcZeroToOne[0].x, srcZeroToOne[3].x))/2;
	anchorPoint.y = (least(srcZeroToOne[2].y, srcZeroToOne[3].y) + greatest(srcZeroToOne[0].y, srcZeroToOne[1].y))/2;
}
Ejemplo n.º 5
0
int main()
{
    int i=100, o=25;
    int *ip = &o;
    
    std::cout << greatest(i, ip) << std::endl;
}
void move(int power)  //
{
  reset();
  for (int cnt=0; cnt<4; cnt++)
  {
    motors[cnt].absdifference=abs(motors[cnt].target-nMotorEncoder[lookUpComparison(cnt)]);
    motors[cnt].P=0;
    motors[cnt].prevP=0;
    motors[cnt].I=0;
    motors[cnt].D=0;
    motors[cnt].PIDadjustedPower=0;
    motors[cnt].startPoint=nMotorEncoder[lookUpComparison(cnt)];
  }
  //int greatestTarget=greatest(abs(motors[mfrontLeft].target),abs(motors[mfrontRight].target), abs(motors[mbackLeft].target), abs(motors[mbackRight].target));
  while (!allArrived(motors[mfrontLeft].absdifference,motors[mfrontRight].absdifference,motors[mbackLeft].absdifference,motors[mbackRight].absdifference))
  {
    int greatestValue=greatest(abs(motors[mfrontLeft].absdifference),abs(motors[mfrontRight].absdifference), abs(motors[mbackLeft].absdifference), abs(motors[mbackRight].absdifference));
    nxtDisplayCenteredTextLine(6, "%d,%d,%d", greatestValue, motors[greatestValue].absdifference, motors[greatestValue].target);
    for (int cnt=0; cnt<4; cnt++)
    {
      nxtDisplayCenteredTextLine(cnt, "%d,%d,%d", nMotorEncoder[lookUpComparison(cnt)], motors[cnt].absdifference, motors[cnt].power);
      writeDebugStreamLine("%d:%d,%d,%d", cnt,nMotorEncoder[lookUpComparison(cnt)], motors[cnt].absdifference, motors[cnt].power);
      //nxtDisplayCenteredTextLine(cnt+4, "%d,%d,%d", motors[cnt].absdifference, motors[cnt].P, motors[cnt].PIDadjustedPower);
      motors[cnt].absdifference=abs(motors[cnt].target-nMotorEncoder[lookUpComparison(cnt)]);
      motors[cnt].direction=( motors[cnt].target<nMotorEncoder[lookUpComparison(cnt)])?-1:1;
      motors[cnt].power=calcPower(abs(motors[cnt].absdifference), abs(motors[greatestValue].absdifference),abs(power), motors[cnt].direction);
      // motors[cnt].expectedPos=(((float)motors[cnt].target-motors[cnt].startPoint) * abs((float)expectedTravelDistance / (float)motors[greatestTarget].target)) +motors[cnt].startPoint;
      // motors[cnt].P=nMotorEncoder[lookUpComparison(cnt)]-motors[cnt].expectedPos;
      // motors[cnt].I+=motors[cnt].P;
      // motors[cnt].D=motors[cnt].P-motors[cnt].prevP;
      // motors[cnt].prevP=motors[cnt].P;
      //motors[cnt].PIDadjustedPower=((motors[cnt].P*kP)+(motors[cnt].I*kI)+(motors[cnt].D*kD))+motors[cnt].power;
      //motors[cnt].PIDadjustedPower=motors[cnt].power;//+(kP*motors[cnt].P);
    }
    for (int cnt=0; cnt<4; cnt++)
    {
      motor[lookUpComparison(cnt)]=motors[cnt].power;
    }
  }
  stopMotors();
  return;
}
Ejemplo n.º 7
0
bool guiQuad::updatePoint(float x, float y, float offsetX, float offsetY, float width, float height, bool noDistorsion){
	
	if(!noDistorsion) {
		updatePoint(x, y, offsetX, offsetY, width, height);
	} else {
		
		getScaledQuadPoints(width, height);
		
		//nothing to update
		if(selected == -1) return false;
		
		if(width == 0 || height == 0){
			//dangerous so we ignore :)
			return false;
		}  
		
		if( x < offsetX ) 			x = offsetX;
		if( x > offsetX + width ) 	x = offsetX + width;
		if( y < offsetY ) 			y = offsetY;
		if( y > offsetY + height) 	y = offsetY + height;
		
		//lets get it in range x(0 - width) y(0 - height)
		float px = x - offsetX;
		float py = y - offsetY;
		
		if (!diag_v){
			py = diag_a*px + diag_b;
			if (py < 0) { py = 0; px = ((py - diag_b)/diag_a); }
			else if (py > height) { py = height; px = ((py - diag_b)/diag_a); }
		} else {
			px = selX;
			if (px < 0) { px = 0; py = diag_b; }
			else if (px > width) { px = width; py = diag_a * width + diag_b; }
		}
		
		cout << "px = " << px << endl;
		cout << "py = " << py << endl;
		
		if (selected == 0) {
			if (sideA_v == -1) {
				sideA_b = py - (sideA_m * px);
				cout << "sideA_b = " << sideA_b << endl;
				if (sideB_v == -1) {
					float temp_x;
					if (sideB_m < 0 || sideB_m > 1) {
						temp_x= (((sideA_m * temp_x) + sideA_b - sideB_b) / sideB_m) / width;
					} else {
						temp_x= (((sideB_m * temp_x) + sideB_b - sideA_b) / sideA_m) / width;
					}
					srcZeroToOne[1].x = temp_x;
					srcZeroToOne[1].y = ((sideA_m * (srcZeroToOne[1].x * width)) + sideA_b)/height;
				} else {
					srcZeroToOne[1].y = ((sideA_m * (srcZeroToOne[1].x * width)) + sideA_b) / height;
				}
			} else {
				srcZeroToOne[1].x = px/width;
				srcZeroToOne[1].y = ((sideB_m * px) + sideB_b) / height;
			}
			
			if (sideD_v == -1) {
				sideD_b = py - (sideD_m * px);
				cout << "sideD_b = " << sideD_b << endl;
				if (sideC_v == -1) {
					float temp_x;
					if (sideC_m < 0 || sideC_m > 1) {
						temp_x = (((sideD_m * temp_x) + sideD_b - sideC_b) / sideC_m) / width;
					} else {
						temp_x = (((sideC_m * temp_x) + sideC_b - sideD_b) / sideD_m) / width;
					}
					srcZeroToOne[3].x = temp_x;
					cout << "3x = " << temp_x * width << endl;
					srcZeroToOne[3].y = ((sideD_m * (srcZeroToOne[3].x * width)) + sideD_b)/height;
					cout << "3y = " << srcZeroToOne[3].y * height << endl;
				} else {
					srcZeroToOne[3].y = ((sideD_m * (srcZeroToOne[3].x * width)) + sideD_b) / height;
				}
			} else {
				srcZeroToOne[3].x = px/width;
				srcZeroToOne[3].y = ((sideC_m * px) + sideC_b) / height;
				
			}
			
			if (srcZeroToOne[1].x < 0) { srcZeroToOne[1].x = 0; }
			else if (srcZeroToOne[1].x > 1) { srcZeroToOne[1].x = 1; }
			if (srcZeroToOne[1].y < 0) { srcZeroToOne[1].y = 0; }
			else if (srcZeroToOne[1].y > 1) { srcZeroToOne[1].y = 1; }
			
			if (srcZeroToOne[3].x < 0) { srcZeroToOne[3].x = 0; }
			else if (srcZeroToOne[3].x > 1) { srcZeroToOne[3].x = 1; }
			if (srcZeroToOne[3].y < 0) { srcZeroToOne[3].y = 0; }
			else if (srcZeroToOne[3].y > 1) { srcZeroToOne[3].y = 1; }
			
		}
			
		
		//now get in 0-1 range
		px /= width;;
		py /= height;
		
		srcZeroToOne[selected].x 	= px;
		srcZeroToOne[selected].y 	= py;
		
		anchorPoint.x = (least(srcZeroToOne[1].x, srcZeroToOne[2].x) + greatest(srcZeroToOne[0].x, srcZeroToOne[3].x))/2;
		anchorPoint.y = (least(srcZeroToOne[2].y, srcZeroToOne[3].y) + greatest(srcZeroToOne[0].y, srcZeroToOne[1].y))/2;		
	
	}
	
	return true;
}
Ejemplo n.º 8
0
      using type = typename substitute< _Handle_ >::type;
    };

  public: /*data*/
    mutable int uv_error = 0;
    ref_count refs;
    type_storage< on_destroy_t > destroy_cb_storage;
    aligned_storage< MAX_PROPERTY_SIZE, MAX_PROPERTY_ALIGN > property_storage;
#ifndef HACK_UV_INTERFACE_PTR
    handle::uv_interface *uv_interface_ptr = nullptr;
#else
    typename _Handle_::uv_interface *uv_interface_ptr = nullptr;
#endif
    //* all the fields placed before should have immutable layout size across the handle class hierarchy *//
    alignas(static_cast< const int >(
        greatest(alignof(::uv_any_handle), alignof(::uv_fs_t))
    )) typename uv_t::type uv_handle_struct = { 0,};

  private: /*constructors*/
    instance()
    {
      property_storage.reset< typename _Handle_::properties >();
      uv_interface_ptr = &_Handle_::uv_interface::instance();
    }
    template< typename... _Args_ > instance(_Args_&&... _args)
    {
      property_storage.reset< typename _Handle_::properties >(std::forward< _Args_ >(_args)...);
      uv_interface_ptr = &_Handle_::uv_interface::instance();
    }

  public: /* constructors*/