コード例 #1
0
ファイル: backend_svg.c プロジェクト: jiangpeng79/antrace
/* produce a jaggy path - for debugging. If abs is set, move to first
   coordinate absolutely. If abs is not set, move to first coordinate
   relatively, and traverse path in the opposite direction. */
static int svg_jaggy_path(FILE *fout, point_t *pt, int n, int abs) {
  int i;
  point_t cur, prev;
  
  if (abs) {
    cur = prev = pt[n-1];
    svg_moveto(fout, dpoint(cur));
    for (i=0; i<n; i++) {
      if (pt[i].x != cur.x && pt[i].y != cur.y) {
	cur = prev;
	svg_lineto(fout, dpoint(cur));
      }
      prev = pt[i];
    }
    svg_lineto(fout, dpoint(pt[n-1]));
  } else {
    cur = prev = pt[0];
    svg_rmoveto(fout, dpoint(cur));
    for (i=n-1; i>=0; i--) {
      if (pt[i].x != cur.x && pt[i].y != cur.y) {
	cur = prev;
	svg_lineto(fout, dpoint(cur));
      }
      prev = pt[i];
    }
    svg_lineto(fout, dpoint(pt[0]));
  }
  newline = 1;
  shiptoken(fout, "z");
  return 0;
}
コード例 #2
0
    inline PPositionOurGoalKick(const BeliefState& state) 
      : Play(state)
    {
      name = "PositionOurGoalKick";

      assert(HomeTeam::SIZE == 5);
      setTimeout(100, 1);
      PositionPlay = PLAYTYPE_YES;
      AttackPlay   = PLAYTYPE_NO;
      
      Tactic::Param param;
      
	  Vector2D<int> finalPoint ;
	  /* for goalie */
	  roleList[0].push_back(std::make_pair(Tactic::GoalieOur, param));
      /*Vector2D<int> dpointg(ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*1.2),state.ballPos.y);
	  param.PositionP.x  = ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*1.2) ;
	  param.PositionP.y  = state.ballPos.y;
	  param.PositionP.finalSlope = 0;
	  param.PositionP.align = false ;
	  roleList[0].push_back(std::make_pair(Tactic::Position,param));
      *//* Role 1 - Defender 1*/
	  Vector2D<int> dpoint0(ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*9),-1*(OUR_GOAL_MAXY + 2*BOT_RADIUS));
	  finalPoint = position_our_bot(&state,dpoint0,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
	  param.PositionP.finalSlope = 0 ;
	  roleList[1].push_back(std::make_pair(Tactic::Position,param));
      
	  // Role 2
	  Vector2D<int> dpoint(ForwardX(-HALF_FIELD_MAXX/2),HALF_FIELD_MAXY/2);
	  finalPoint = position_our_bot(&state,dpoint,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
      param.PositionP.finalSlope  = 0;
      roleList[2].push_back(std::make_pair(Tactic::Position, param));
      
	  //Role 3
	  Vector2D<int> dpoint1(ForwardX(-CENTER_CIRCLE_DIAMETER/2),HALF_FIELD_MAXY/4);
	  finalPoint = position_our_bot(&state,dpoint1,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
      param.PositionP.finalSlope  = 0;
      roleList[3].push_back(std::make_pair(Tactic::Position, param));
      
	  //Role 4
	  Vector2D<int> dpoint2(ForwardX(HALF_FIELD_MAXX/6),-HALF_FIELD_MAXY/2);
	  finalPoint = position_our_bot(&state,dpoint2,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
      param.PositionP.finalSlope  = 0;
      roleList[4].push_back(std::make_pair(Tactic::Position, param));
      
      computeMaxTacticTransits();
    }
コード例 #3
0
ファイル: nuitsBlanches.c プロジェクト: alkaj/fractale
//dessin d'une ligne
void trace(Point p1,Point p2,Uint32 couleur){
    double x = p1.x, y = p1.y;
    double inc_x = p2.x - p1.x, inc_y = p2.y - p1.y;
    int m = Max(abs(inc_x), abs(inc_y));
    inc_x /= m;
    inc_y /= m;

    for(; m >= 0; m--)
    {
        dpoint(point((unsigned int)x, (unsigned int)y), couleur);
        x += inc_x;
        y += inc_y;
    }
}
コード例 #4
0
    inline PPositionOurPenalty(const BeliefState& state) : Play(state)
    {
		
		printf("Posiition our penalty is being executed");
      name = "PositionOurPenalty";
      PositionPlay = PLAYTYPE_YES;
      AttackPlay   = PLAYTYPE_NO;
      assert(HomeTeam::SIZE ==5);
      Tactic::Param param;
      param.PositionP.align = -PI;
	  
	  Vector2D<int> finalpoint ;
      /* Role 0 - Goalie*/
      
	 roleList[0].push_back(std::make_pair(Tactic::GoalieOur,param));
	  
  /* Role 1 - Position 1*/    //shooter
	 param.PositionP.x = state.ballPos.x - ForwardX(3*BOT_RADIUS);// state.ballPos.x - 2*BOT_RADIUS ;
	 param.PositionP.y = state.ballPos.y;
	 param.PositionP.finalSlope = 0;
      roleList[1].push_back(std::make_pair(Tactic::Position,param));
 /* Role 1 - Position 2*/
      Vector2D<int> dpoint1(-ForwardX(2*BOT_RADIUS),0);     
	  finalpoint = position_our_bot(&state,dpoint1,0);
	  param.PositionP.x = finalpoint.x;
	  param.PositionP.y = finalpoint.y;
	  param.PositionP.finalSlope  = 0;
      roleList[2].push_back(std::make_pair(Tactic::Position,param));
      
 /* Role 1 - Position 3*/   //shooter
Vector2D<int> dpoint(-ForwardX(2*BOT_RADIUS),HALF_FIELD_MAXY/2);     
	  finalpoint = position_our_bot(&state,dpoint,0);
	  param.PositionP.x = finalpoint.x;
	  param.PositionP.y = finalpoint.y;
	  param.PositionP.finalSlope  = 0;
      roleList[3].push_back(std::make_pair(Tactic::Position,param));
	  
 /* Role 1 - Position 4*/
      Vector2D<int> dpoint3(-ForwardX(2*BOT_RADIUS),-HALF_FIELD_MAXY/2);     
	  finalpoint = position_our_bot(&state,dpoint3,0);
	  param.PositionP.x = finalpoint.x;
	  param.PositionP.y = finalpoint.y;
	  param.PositionP.finalSlope  = 0;
      roleList[4].push_back(std::make_pair(Tactic::Position,param));
      
      computeMaxTacticTransits();
    }
コード例 #5
0
	virtual void reevaluateRoleParams()
    {
		{   
			Vector2D<int> finalpoint;
            Tactic::Param &param = roleList[1][0].second;
            param.PositionP.x = state.ballPos.x - ForwardX(3*BOT_RADIUS);// state.ballPos.x - 2*BOT_RADIUS ;
	        param.PositionP.y = state.ballPos.y;
			param.PositionP.align = true;
	        param.PositionP.finalSlope = 0;
			
        }
        {
			Vector2D<int> finalpoint;
            Tactic::Param &param = roleList[2][0].second;
             Vector2D<int> dpoint1(-ForwardX(2*BOT_RADIUS),0);     
	         finalpoint = position_our_bot(&state,dpoint1,0);
	        param.PositionP.x = finalpoint.x;
	        param.PositionP.y = finalpoint.y;
	        param.PositionP.finalSlope  = 0;
      
        }
        {   
		{  
			printf("pop");
			Vector2D<int> finalpoint;
            Tactic::Param &param = roleList[3][0].second;
            Vector2D<int> dpoint(-ForwardX(2*BOT_RADIUS),HALF_FIELD_MAXY/2);     
	        finalpoint = position_our_bot(&state,dpoint,0);
	        param.PositionP.x = finalpoint.x;
	        param.PositionP.y = finalpoint.y; 
	        param.PositionP.finalSlope  = 0;
        }
			
        }
		{
		Vector2D<int> finalpoint;
	Tactic::Param &param = roleList[4][0].second;
		Vector2D<int> dpoint3(-ForwardX(2*BOT_RADIUS),-HALF_FIELD_MAXY/2);     
	  finalpoint = position_our_bot(&state,dpoint3,0);
	  param.PositionP.x = finalpoint.x;
	  param.PositionP.y = finalpoint.y;
	  param.PositionP.finalSlope  = 0;
		
		}
        printf("reevaling params in OurFreeKick. ballPos = %d, %d\n", state.ballPos.x, state.ballPos.y);
    }
コード例 #6
0
	virtual void reevaluateRoleParams()
    {
       /* {
		 	Tactic::Param &param = roleList[0][0].second;
			param.PositionP.x  = ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*1.2) ;
	        param.PositionP.y  = state.ballPos.y;
			param.PositionP.finalSlope = 0;
			param.PositionP.align = false ;
		}*/
		{
			Vector2D<int> finalPoint;
            Tactic::Param &param = roleList[1][0].second;
             Vector2D<int> dpoint0(ForwardX(-HALF_FIELD_MAXX + GOAL_DEPTH + BOT_RADIUS*9),-1*(OUR_GOAL_MAXY + 2*BOT_RADIUS));
	  finalPoint = position_our_bot(&state,dpoint0,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
	  param.PositionP.finalSlope = 0 ;
        }

        {
			Vector2D<int> finalPoint;
            Tactic::Param &param = roleList[2][0].second;
             Vector2D<int> dpoint(ForwardX(-HALF_FIELD_MAXX/2),HALF_FIELD_MAXY/2);
	  finalPoint = position_our_bot(&state,dpoint,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
      param.PositionP.finalSlope  = 0;
        }
        {   
			Vector2D<int> finalPoint;
            Tactic::Param &param = roleList[3][0].second;
           Vector2D<int> dpoint1(ForwardX(-CENTER_CIRCLE_DIAMETER),HALF_FIELD_MAXY/4);
	  finalPoint = position_our_bot(&state,dpoint1,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
      param.PositionP.finalSlope  = 0;
			
        }
		{
			Vector2D<int> finalPoint;
		Tactic::Param &param = roleList[4][0].second;
		 Vector2D<int> dpoint2(ForwardX(HALF_FIELD_MAXX/6),-HALF_FIELD_MAXY/2);
	  finalPoint = position_our_bot(&state,dpoint2,0);
	  param.PositionP.x = finalPoint.x ; param.PositionP.y = finalPoint.y ;
      param.PositionP.finalSlope  = 0;
	 
		}
        printf("reevaling params in OurFreeKick. ballPos = %d, %d\n", state.ballPos.x, state.ballPos.y);
    }
コード例 #7
0
ファイル: dpoint.cpp プロジェクト: specpose/stopeight-clibs
dpoint::dpoint(const float x, const float y) {//:QPointF(x,y){
    dpoint();
    this->setX(qreal(x));
    this->setY(qreal(y));
	//rot = QPointF();
}
コード例 #8
0
ファイル: dpoint.cpp プロジェクト: specpose/stopeight-clibs
dpoint::dpoint(const QPointF& point) {//: QPointF(point){
    dpoint();
    this->setX(point.x());
    this->setY(point.y());
	//rot = QPointF();
}
コード例 #9
0
BOOL CPolylineCreatorTracker::CreatePolyline(CWnd* pWnd, CDPoint point, CSnapper* pSnapper)
{
	// don't handle if capture already set
	if (::GetCapture() != NULL)
		return FALSE;

	AfxLockTempMaps();  // protect maps while looping

	m_bErase = FALSE;
	m_bFinalErase =  FALSE;

   	// set capture to the window which received this message
	pWnd->SetCapture();
	ASSERT(pWnd == CWnd::GetCapture());
	pWnd->UpdateWindow();

   m_Points.AddTail(new CDPOINT(point));
   CPoint LastPoint(point);

	// get DC for drawing
	CDC* pDrawDC;
		// otherwise, just use normal DC
	pDrawDC = pWnd->GetDC();
	ASSERT_VALID(pDrawDC);

	BOOL bMoved = FALSE;

	// get messages until capture lost or cancelled/accepted
	for (;;)
	{
		MSG msg;
		VERIFY(::GetMessage(&msg, NULL, 0, 0));

		if (CWnd::GetCapture() != pWnd)
			break;

      if(msg.message == WM_MOUSEMOVE)
			DispatchMessage(&msg);

		switch (msg.message)
		{
		// handle movement/accept messages
		case WM_MOUSEMOVE:
         {
			   // handle resize cases (and part of move)
            CPoint point;
            ::GetCursorPos(&point);
            pWnd->ScreenToClient(&point);

            if((::GetKeyState(VK_SHIFT) & 0x8000)!=0)
            {
               CDPoint *pLastPoint = (CDPoint*)m_Points.GetTail();
               if(pLastPoint!=NULL)
               {
                  CDPOINT ppp = CDPoint(point)-(*pLastPoint);
                  if(ABS(ppp.x)>ABS(ppp.y))
                     ppp.y=0;
                  else
                     ppp.x=0;
                  point = *pLastPoint+ppp;
               }
            }

            if(pSnapper!=NULL)
               pSnapper->FixSnapTo(&point);

			   if (LastPoint != point)
			   {
				   m_bErase = FALSE;
               DrawTracker(point, pDrawDC, pWnd);
               bMoved = TRUE;
			   }

            LastPoint = point;
         }
			break;

      case WM_LBUTTONDOWN:
         {
			   // handle resize cases (and part of move)
            CPoint point;
            ::GetCursorPos(&point);
            pWnd->ScreenToClient(&point);

            CDPoint dpoint(point);
            if((::GetKeyState(VK_SHIFT) & 0x8000)!=0)
            {
               CDPoint *pLastPoint = (CDPoint*)m_Points.GetTail();
               if(pLastPoint!=NULL)
               {
                  CDPOINT ppp = dpoint-(*pLastPoint);
                  if(ABS(ppp.x)>ABS(ppp.y))
                     ppp.y=0;
                  else
                     ppp.x=0;
                  dpoint = *pLastPoint+ppp;
               }
            }

            if(pSnapper!=NULL)
               pSnapper->FixSnapTo(&dpoint);
            point = dpoint;

			   if (LastPoint != dpoint)
			   {
				   m_bErase = FALSE;
               DrawTracker(point, pDrawDC, pWnd);
			   }

            m_Points.AddTail(new CDPoint(dpoint));

            //the tracker will not erease the last line
            if(m_PointsLast!=NULL)
               delete []m_PointsLast;
            bMoved = FALSE;

            m_PointsLast = NULL;

            LastPoint = point;
         }
         break;
		// handle cancel messages
		case WM_KEYDOWN:
			if (msg.wParam != VK_ESCAPE)
				break;
      case WM_LBUTTONDBLCLK:
      case WM_RBUTTONDOWN:
         {
			   if (bMoved)
			   {
				   m_bErase = m_bFinalErase = TRUE;
               DrawTracker(point, pDrawDC, pWnd);
			   }
            UINT uiCount = GetPointsCount();
            if(uiCount>1)//erace all the line
            {
               LPPOINT lpPoints = new POINT[uiCount];
               LPCDPOINT lpDPoints = new CDPOINT[uiCount];
               GetPoints(lpDPoints);
               for(UINT ui=0; ui<uiCount; ui++)
                  lpPoints[ui] = lpDPoints[ui];
               CLineTracker::DrawDragPolyLine(pDrawDC, lpPoints, 1, NULL, 1, uiCount);
               delete []lpPoints;
               delete []lpDPoints;
            }
         }
			goto ExitLoop;

		// just dispatch rest of the messages
		default:
			DispatchMessage(&msg);
			break;
		}
	}

ExitLoop:
	pWnd->ReleaseDC(pDrawDC);
	ReleaseCapture();

	AfxUnlockTempMaps(FALSE);

	// restore rect in case bMoved is still FALSE
	m_bFinalErase = FALSE;
	m_bErase = FALSE;

   // return TRUE only if rect has changed
	return GetPointsCount()>1;
}