Exemple #1
0
void scigraphics::painter::clearBordersArea()
{
  if ( ! ableToDraw() )
    return;

  const int Shift = 10;

  wpoint Point1( -Shift, -Shift );
  wpoint Point2( Indents.left(), Drawer->height() + Shift );
  Drawer->eraseRectangle( wrectangle(Point1,Point2) );

  wpoint Point3( Drawer->width() + Shift, Drawer->height() - Indents.down() );
  Drawer->eraseRectangle( wrectangle(Point2,Point3) );
  
  wpoint Point4( Drawer->width() - Indents.right(), -Shift );
  Drawer->eraseRectangle( wrectangle(Point3,Point4) );

  wpoint Point5( -Shift, Indents.up() );
  Drawer->eraseRectangle( wrectangle(Point4,Point5) );
}
Exemple #2
0
 void CPolygon::pushPoint(const Vector2& point)
 {
     mCGALPolygon.push_back(Point1(point.x, point.y));
 }
Exemple #3
0
 bool CPolygon::ptInPolygon(const Vector2& point) const
 {
     return (mCGALPolygon.bounded_side(Point1(point.x, point.y)) == CGAL::ON_BOUNDED_SIDE);
 }
Exemple #4
0
void Drawer::DrawText(std::string& aTexte)
{
    Point Point1      (100,100);

    FacesMap::iterator IterFont;

    cairo_text_extents_t te;
    cairo_font_face_t* Cairo_font_face = NULL;

    for (IterFont = mFacesMap.begin(); IterFont != mFacesMap.end(); ++IterFont)
    {
        cairo_user_data_key_t Key;
        FT_Face FaceFind = IterFont->second;

        if (FaceFind)
        {
            Cairo_font_face = cairo_ft_font_face_create_for_ft_face (FaceFind,0);
            cairo_font_face_set_user_data (Cairo_font_face, &Key, FaceFind, NULL);

            cairo_set_font_size (mCairoDC, 75);
            cairo_set_source_rgb (mCairoDC, 0.0, 0.0, 0.0);

            MoveTo(Point1);

            std::string StrTmp = IterFont->first;
            StrTmp += "||";

            cairo_ft_font_face_set_synthesize   (Cairo_font_face, CAIRO_FT_SYNTHESIZE_BOLD);
            cairo_ft_font_face_set_synthesize (Cairo_font_face, CAIRO_FT_SYNTHESIZE_OBLIQUE);

            cairo_set_font_face(mCairoDC, Cairo_font_face);
            cairo_text_path (mCairoDC, StrTmp.c_str());
            cairo_fill(mCairoDC);

            cairo_text_extents(mCairoDC,StrTmp.c_str(),&te);
            Point1.X += (te.width + 10);
            MoveTo(Point1);

            cairo_text_path (mCairoDC, IterFont->first.c_str());
            cairo_fill(mCairoDC);

            Point1.X -= (te.width + 10);
            Point1.Y += 100;

            cairo_font_face_set_user_data (Cairo_font_face, &Key, NULL, NULL);
            cairo_font_face_destroy(Cairo_font_face);
        }
    }

    cairo_user_data_key_t KeyFontSystem;
    if (mFontSystem)
    {
        Cairo_font_face = cairo_ft_font_face_create_for_ft_face (mFontSystem,0);
        cairo_font_face_set_user_data (Cairo_font_face, &KeyFontSystem, mFontSystem, NULL);

        cairo_set_font_size (mCairoDC, 75);
        cairo_set_source_rgb (mCairoDC, 0.0, 0.0, 0.0);

        MoveTo(Point1);

        cairo_set_font_face(mCairoDC, Cairo_font_face);
        cairo_text_path (mCairoDC, "FontSystem");
        cairo_fill(mCairoDC);

        cairo_font_face_set_user_data (Cairo_font_face, &KeyFontSystem, NULL, NULL);
        cairo_font_face_destroy(Cairo_font_face);
    }

    Point1.X -= (100);
    Point1.Y += 100;

    cairo_user_data_key_t KeyFontTest;
    if (mFontTest)
    {
        Cairo_font_face = cairo_ft_font_face_create_for_ft_face (mFontTest,0);
        cairo_font_face_set_user_data (Cairo_font_face, &KeyFontTest, mFontTest, NULL);

        cairo_set_font_size (mCairoDC, 75);
        cairo_set_source_rgb (mCairoDC, 0.0, 0.0, 0.0);

        MoveTo(Point1);

        cairo_set_font_face(mCairoDC, Cairo_font_face);
        cairo_text_path (mCairoDC, "FontTest");
        cairo_fill(mCairoDC);

        cairo_font_face_set_user_data (Cairo_font_face, &KeyFontTest, NULL, NULL);
        cairo_font_face_destroy(Cairo_font_face);
    }
}
Exemple #5
0
Point1 __gun__()
{
  return Point1();
}
int main(int argc, char **argv)
{
  ros::init(argc, argv, "ParseVito");
  ros::NodeHandle node("~");

  // VitoSkelethon vito_skelethon;
   LineCollisions LineCollisionsLocal;
    double spin_rate = 1000;
  ros::param::get("~spin_rate",spin_rate);
  ROS_DEBUG( "Spin Rate %lf", spin_rate);
  ros::Rate rate(spin_rate); 

  std::string  base("world");
  double threshold = .15;
  std::vector<std::string> list_brach_names;
  list_brach_names.push_back("left_arm/");
  list_brach_names.push_back("right_arm/");

  node.param<std::string>("base", base, "world");
  node.param<double>("threshold", threshold, .15);

  ROS_INFO_STREAM("Using Base: " <<  base.c_str());
  ROS_INFO_STREAM("Threshold: " <<  threshold);

  tf::TransformListener tf_listener;

  std::vector<std::vector<std::string>> links_all_branch;

  ros::Publisher list_pub = node.advertise<visualization_msgs::Marker>("skelethon_lines", 10);
  ros::Publisher point_pub = node.advertise<visualization_msgs::Marker>("skelethon_point", 10);
  ros::Publisher collisions_lines_pub = node.advertise<visualization_msgs::Marker>("skelethon_collision_lines", 10);
  ros::Publisher collisions_points_pub = node.advertise<visualization_msgs::Marker>("skelethon_collision_point", 10);

  for (unsigned int i = 0; i< list_brach_names.size(); i++)
  {

    std::vector<std::string> links_in_brach = getSkelethonPoints(node, list_brach_names[i]);
    links_all_branch.push_back(links_in_brach);

  } 
 
  while (node.ok())
  {
    tf::StampedTransform trans, trans2;
    std::vector<std::vector<LineSkelethon>> List_lines_in_all_chains, lines_and_collisions_multiple;
    std::vector<LineSkelethon> lines_and_collisions;

    for (unsigned int i = 0; i < links_all_branch.size(); ++i)
    {
      std::vector<LineSkelethon> list_lines_one_chain;
      for (unsigned int j = 0; j < links_all_branch[i].size() -1 ; ++j)
      {
        try
        {
          tf_listener.waitForTransform(base, links_all_branch[i][j], ros::Time(0), ros::Duration(2.0));
          tf_listener.lookupTransform( base , links_all_branch[i][j], ros::Time(0), trans);
          tf_listener.waitForTransform(base, links_all_branch[i][j+1], ros::Time(0), ros::Duration(2.0));
          tf_listener.lookupTransform( base , links_all_branch[i][j+1], ros::Time(0), trans2);
          tf::Vector3 trasnX = trans.getOrigin();
          tf::Vector3 trasnX2 = trans2.getOrigin();
          PointSkelethon Point1( LineCollisions::Point(trasnX.getX(), trasnX.getY(), trasnX.getZ()), links_all_branch[i][j] );
          PointSkelethon Point2( LineCollisions::Point(trasnX2.getX(), trasnX2.getY(), trasnX2.getZ()), links_all_branch[i][j] );
          list_lines_one_chain.push_back( LineSkelethon( Point1, Point2) );        
        }
        catch(tf::TransformException& ex)
        {
          ROS_ERROR("%s", ex.what()); 
        }        
      } 
      List_lines_in_all_chains.push_back(list_lines_one_chain);      
    }

    for (unsigned int i = 0; i < List_lines_in_all_chains.size() - 1; ++i)
    {
      for (unsigned int j = i+1; j < List_lines_in_all_chains.size() ; ++j)
      {
        for (unsigned int k = 0; k < List_lines_in_all_chains[i].size() ; ++k)
        {
          for (unsigned int l = 0; l < List_lines_in_all_chains[j].size(); ++l)
          {
            LineCollisions::Line L1(List_lines_in_all_chains[i][k].P1.P, List_lines_in_all_chains[i][k].P2.P);
            LineCollisions::Line L2(List_lines_in_all_chains[j][l].P1.P, List_lines_in_all_chains[j][l].P2.P);
            LineCollisions::Line collision_line = LineCollisionsLocal.getClosestPoints( L1, L2 );
            if (collision_line.norm <= .15)
            {
              lines_and_collisions.push_back( LineSkelethon( PointSkelethon( collision_line.P1, List_lines_in_all_chains[i][k].P1.link_name ),
                                                             PointSkelethon( collision_line.P2, List_lines_in_all_chains[j][l].P1.link_name ) )) ;
              ROS_INFO_STREAM("Collision in Point:" << lines_and_collisions.back().P1.P.transpose() << " of link " << lines_and_collisions.back().P1.link_name);
              ROS_INFO_STREAM("Collision in Point:" << lines_and_collisions.back().P2.P.transpose() << " of link " << lines_and_collisions.back().P2.link_name);
            }
          }
        }
      }
    }

    // list_pub.publish(plot_lines(List_lines_in_all_chains, base, 1.0, 0.0, 0.0, 0, visualization_msgs::Marker::LINE_LIST)); 
    point_pub.publish(plot_lines(List_lines_in_all_chains, base, 0.0, 1.0, 0.0, 1, visualization_msgs::Marker::POINTS)); 
    
    std::vector<std::vector<LineSkelethon>> lis;
    lis.push_back(lines_and_collisions);
    collisions_lines_pub.publish(plot_lines(lis, base, 0.0, 0.0, 1.0, 2, visualization_msgs::Marker::LINE_LIST));
    collisions_points_pub.publish(plot_lines(lis, base, 1.0, 0.0, 1.0, 3, visualization_msgs::Marker::POINTS));

    ros::spinOnce(); 
    rate.sleep();

  }
  return 0;
}